hi-ucs/front/src/views/detailsAll/components/Algorithm/AlgorithmUsageMode.vue

556 lines
18 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<!-- 使用方式 -->
<div class="usage-mode" v-if="true">
<div class="tltle">
<DetalsTitle
:title="dataFrom.title"
:type="dataFrom.englishTitle"
></DetalsTitle>
</div>
<!-- 青岛市局 -->
<div style="width: 100%; display: flex; justify-content: center"
>
<div class="content" v-for="item in dataFrom.content" :key="item.title">
<div class="content-left" v-if="item.titleType === '调用接口'">
<div class="left">
<div class="content-left-title">
<span>{{ item.title }}{{ item.titleType }}</span>
</div>
<div class="content-left-content">
<p>
<span>{{ item.link.name }}</span>
<a-tooltip>
<template #title>
{{
approveStatus === '通过'
? item.link.value
: '请申请后查看'
}}
</template>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ item.link.value }}
</span>
</a-tooltip>
</p>
<p>
<span>{{ item.postMethod.name }}</span>
<span>{{ item.postMethod.value }}</span>
</p>
</div>
</div>
<div class="right">
<div @click="technical()">技术文档</div>
<!-- <div @click="technicalNew()">新手指引</div> -->
<!-- <div @click="SDKClick()">SDK安装包</div> -->
</div>
</div>
<div class="content-left" v-else-if="item.titleType === '平台对接'">
<div class="left">
<div class="content-left-title">
<span>{{ item.title }}{{ item.titleType }}</span>
</div>
<div class="content-left-content">
<p>
<span>{{ item.linkPlatform.name }}</span>
<a-tooltip v-if="approveStatus == '通过'">
<template #title>{{ item.linkPlatform.value }}</template>
<span>{{ item.linkPlatform.value }}</span>
</a-tooltip>
<a-tooltip v-else>
<template #title>请申请后查看平台地址</template>
<span>****************</span>
</a-tooltip>
</p>
</div>
</div>
<div class="right">
<div @click="technical()">技术文档</div>
<!-- <div @click="technicalNew()">新手指引</div> -->
<!-- <div @click="SDKClick()">SDK安装包</div> -->
</div>
</div>
<div class="content-left" v-else-if="item.titleType === 'SDK'">
<div class="left">
<div class="content-left-title">
<span>{{ item.title }}{{ item.titleType }}</span>
</div>
</div>
<div class="right">
<div @click="technical()">技术文档</div>
<!-- <div @click="technicalNew()">新手指引</div> -->
<div @click="SDKClick()">SDK安装包</div>
</div>
</div>
<div class="content-right">
<div class="content-right-left">
<div class="content-right-title">{{ item.contact }}</div>
<div class="content-right-content">
<p>
<span>{{ item.facilitator.name }}</span>
<a-tooltip>
<template #title>{{ item.facilitator.value }}</template>
<span>{{ item.facilitator.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.people.name }}</span>
<a-tooltip>
<template #title>
{{
approveStatus === '通过'
? item.people.value
: '请申请后查看'
}}
</template>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ item.people.value }}
</span>
</a-tooltip>
</p>
<p>
<span>{{ item.phone.name }}</span>
<a-tooltip>
<template #title>
{{
approveStatus === '通过'
? item.phone.value
: '请申请后查看'
}}
</template>
<span :class="{ 'blur-word': approveStatus !== '通过' }">
{{ item.phone.value }}
</span>
</a-tooltip>
</p>
</div>
</div>
<div class="content-right-right">
<div class="content-right-title">{{ item.contact2 }}</div>
<div class="content-right-content">
<p>
<span>{{ item.facilitator2.name }}</span>
<a-tooltip>
<template #title>{{ item.facilitator2.value }}</template>
<span>{{ item.facilitator2.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.people2.name }}</span>
<a-tooltip>
<template #title>{{ item.people2.value }}</template>
<span>{{ item.people2.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.phone2.name }}</span>
<a-tooltip>
<template #title>{{ item.phone2.value }}</template>
<span>{{ item.phone2.value }}</span>
</a-tooltip>
</p>
</div>
</div>
</div>
</div>
<!-- <div v-show="approveStatus !== '通过'" class="contentOther">
<img src="~@/assets/detailsAll/uesBefore.png" />
<div class="contentOtherRight">
<p>请在申请能力后返回查看使用方式</p>
<div @click="toView()">进入能力申请</div>
</div>
</div> -->
</div>
</div>
</template>
<script setup>
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
import { pinyin } from 'pinyin-pro'
import { ref, defineProps, watch } from 'vue'
import { message } from 'ant-design-vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const approveStatus = ref('通过')
const whoShow1 = ref(whoShow)
let dataFrom = ref({
title: '使用方式',
englishTitle: 'USAGE',
SDK: '',
content: [
{
title: '使用方式',
titleType: '',
link: {
name: '服务接口:',
value: '',
},
linkPlatform: {
name: '平台地址:',
value: '',
},
postMethod: {
name: '请求方式:',
value: '',
},
linkValue: '',
contact: '归属部门',
facilitator: { name: '归属部门:', value: '' },
people: { name: '部门联系人:', value: '' },
phone: {
name: '联系人电话:',
value: '',
},
contact2: '服务商',
facilitator2: { name: '服务商:', value: '' },
people2: { name: '服务商联系人:', value: '' },
phone2: {
name: '联系人电话:',
value: '',
},
},
],
})
//数据初始化
const props = defineProps({
dataList: { type: Object, default: null },
})
const flag = ref(true)
//立即申请
function toView() {
// window.open(newpage.href, '_blank')
console.log('一键申请===================>', props.dataList)
localStorage.setItem(
'applyList',
JSON.stringify([
{
arr: [
{
delFlag: props.dataList.delFlag,
description: props.dataList.description,
resourceId: props.dataList.id,
resourceName: props.dataList.name,
time: props.dataList.createDate,
type: props.dataList.type,
componentType: '智能算法',
},
],
deptId: props.dataList.deptId,
deptName: props.dataList.deptName,
},
])
)
router.push({
path: '/apply',
})
}
if (props.dataList.infoList) {
let obj = true
if (!obj) {
flag.value = false
} else {
// eslint-disable-next-line vue/no-setup-props-destructure
dataFrom.value.content[0].link.value = props.dataList.apiUrl
dataFrom.value.content[0].facilitator.value = props.dataList.deptName
dataFrom.value.content[0].people.value = props.dataList.deptContacts
dataFrom.value.content[0].phone.value = props.dataList.deptPhone
dataFrom.value.content[0].postMethod.value = props.dataList.apiMethodType
// approveStatus.value = props.dataList.approveStatus
console.log('dataList', props.dataList)
props.dataList.infoList.map((item) => {
if (item.attrType === '组件地址') {
dataFrom.value.content[0].linkValue = item.attrValue || '--'
} else if (item.attrType === '服务商') {
dataFrom.value.content[0].facilitator2.value = item.attrValue || '--'
} else if (item.attrType === '服务商联系人') {
dataFrom.value.content[0].people2.value = item.attrValue || '--'
} else if (item.attrType === '服务商联系电话') {
dataFrom.value.content[0].phone2.value = item.attrValue || '--'
} else if (item.attrType === '服务接口') {
dataFrom.value.content[0].link.value = item.attrValue || '--'
} else if (item.attrType === '平台地址') {
dataFrom.value.content[0].linkPlatform.value = item.attrValue || '--'
} else if (item.attrType === 'SDK安装包') {
dataFrom.value.SDK = item.attrValue || '--'
} else if (item.attrType === '使用方式') {
dataFrom.value.content[0].titleType = item.attrValue || '--'
}
})
}
}
watch(
() => props.dataList,
(val) => {
if (val) {
let obj = true
if (!obj) {
flag.value = false
} else {
dataFrom.value.content[0].link.value = val.apiUrl
dataFrom.value.content[0].facilitator.value = val.deptName
dataFrom.value.content[0].people.value = val.deptContacts
dataFrom.value.content[0].phone.value = val.deptPhone
dataFrom.value.content[0].postMethod.value = val.apiMethodType
approveStatus.value = val.approveStatus
console.log('dataList', val)
val.infoList.map((item) => {
if (item.attrType === '组件地址') {
dataFrom.value.content[0].linkValue = item.attrValue || '--'
} else if (item.attrType === '服务商') {
dataFrom.value.content[0].facilitator2.value =
item.attrValue || '--'
} else if (item.attrType === '服务商联系人') {
dataFrom.value.content[0].people2.value = item.attrValue || '--'
} else if (item.attrType === '服务商联系电话') {
dataFrom.value.content[0].phone2.value = item.attrValue || '--'
} else if (item.attrType === '服务接口') {
dataFrom.value.content[0].link.value = item.attrValue || '--'
} else if (item.attrType === '平台地址') {
dataFrom.value.content[0].linkPlatform.value =
item.attrValue || '--'
} else if (item.attrType === 'SDK安装包') {
dataFrom.value.SDK = item.attrValue || '--'
} else if (item.attrType === '使用方式') {
dataFrom.value.content[0].titleType = item.attrValue || '--'
}
})
}
}
}
)
function technical() {
// 拼接路径
// const type = pinyin(props.dataList.type, {
// pattern: 'initial',
// }).replace(/\s*/g, '')
// // 打开文档
// const id = props.dataList.id
// window.open(window.SITE_CONFIG.frontUrl + type + '/' + id + '.md', '_blank')
// console.log('dataFrom.value.link', dataFrom.value.link)
let obj = props.dataList.infoList.filter(
(item) => item.attrType === '技术文档'
)[0]
if (obj) {
window.open(window.SITE_CONFIG.frontUrl + obj.attrValue)
} else {
message.config({
top: '100px', // 距离顶部的位置
})
message.error('暂未开放技术文档')
}
}
function technicalNew() {
// 拼接路径
// const type = pinyin(props.dataList.type, {
// pattern: 'initial',
// }).replace(/\s*/g, '')
// // 打开文档
// const id = props.dataList.id
// window.open(window.SITE_CONFIG.frontUrl + type + '/' + id + '.md', '_blank')
let obj = props.dataList.infoList.filter(
(item) => item.attrType === '使用手册'
)[0]
console.log('dataFrom.value.link', obj.attrValue)
if (obj) {
window.open(
window.SITE_CONFIG.previewUrl +
'hisense_office/onlinePreview?url=' +
btoa(encodeURI(obj.attrValue))
)
} else {
message.config({
top: '100px', // 距离顶部的位置
})
message.error('暂未开放使用手册')
}
}
function SDKClick() {
let obj = props.dataList.infoList.filter(
(item) => item.attrType === 'SDK安装包'
)[0]
if (obj) {
window.open(dataFrom.value.SDK)
} else {
message.config({
top: '100px', // 距离顶部的位置
})
message.error('暂未上传SDK安装包')
}
}
</script>
<style lang="less" scoped>
.usage-mode {
display: flex;
flex-direction: column;
align-items: center;
padding: 0.8rem 0;
.blur-word {
filter: blur(4px);
}
.content {
margin-top: 0.3rem;
display: flex;
.content-left {
height: 1.5rem;
width: 6.2rem;
background: url('~@/assets/detailsAll/business/business_usage_mode_bg.png')
no-repeat;
background-position: center;
background-size: 100% 100%;
border-radius: 0.1rem;
margin-right: 0.6rem;
box-shadow: 0rem 0.05rem 0.15rem rgba(82, 106, 255, 0.4);
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 0.35rem;
.left {
.content-left-title {
font-size: 0.26rem;
line-height: 0.26rem;
color: #212956;
margin-bottom: 0.2rem;
span:first-child {
margin-right: 0.1rem;
}
}
.content-left-content {
width: 4.2rem;
font-size: 0.2rem;
color: rgba(33, 41, 86, 0.8);
line-height: 0.2rem;
p {
display: -webkit-box;
margin-bottom: 0.1rem;
span:last-of-type {
width: 298px;
display: -webkit-box;
overflow: hidden;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
}
}
}
.right {
div {
height: 0.4rem;
width: 1.3rem;
background: #ffffff;
border-radius: 0.2rem;
color: #526aff;
font-size: 0.2rem;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
}
div:first-child {
margin-bottom: 0.2rem;
}
}
}
.content-right {
height: 1.5rem;
width: 6.2rem;
background: url('~@/assets/detailsAll/business/business_usage_mode_bg.png')
no-repeat;
background-position: center;
background-size: 100% 100%;
border-radius: 0.1rem;
box-shadow: 0rem 0.05rem 0.15rem rgba(82, 106, 255, 0.4);
display: flex;
justify-content: space-around;
align-items: center;
padding: 0 0.3rem;
.content-right-left {
border-right: 0.01rem solid #707fe0;
padding-right: 0.1rem;
margin-right: 0.2rem;
}
.content-right-title {
font-size: 0.26rem;
line-height: 0.26rem;
color: #212956;
margin-bottom: 0.15rem;
}
.content-right-content {
display: flex;
font-size: 0.16rem;
color: rgba(33, 41, 86, 0.8);
line-height: 0.2rem;
overflow: hidden;
-webkit-line-clamp: 1;
word-break: break-all;
-webkit-box-orient: vertical;
flex-direction: column;
p {
width: 2.3rem;
height: 0.2rem;
display: -webkit-box;
overflow: hidden;
margin-bottom: 0.08rem;
// white-space: nowrap;
-webkit-line-clamp: 1;
word-break: break-all;
-webkit-box-orient: vertical;
margin-right: 0.15rem;
span {
cursor: pointer;
}
}
}
}
}
.contentOther {
width: 80%;
height: 4rem;
border: 1px dashed #7b98fd;
margin-top: 0.3rem;
display: flex;
justify-content: center;
align-items: center;
img {
margin-right: 2rem;
}
.contentOtherRight {
p {
font-weight: bold;
font-size: 0.2rem;
}
div {
width: 1.3rem;
height: 0.4rem;
line-height: 0.4rem;
background: #0885ff;
color: #ffffff;
border-radius: 0.05rem;
font-size: 0.18rem;
text-align: center;
cursor: pointer;
transition: all 0.3s;
}
div:hover {
background: #359bff;
}
}
}
}
</style>