Compare commits
60 Commits
afbf59cc50
...
c852f77bee
Author | SHA1 | Date |
---|---|---|
|
c852f77bee | |
![]() |
13c10ce1ae | |
![]() |
1cd13ca346 | |
![]() |
466c70e5d6 | |
![]() |
b7896bcfe3 | |
![]() |
71f6ff0790 | |
|
94f5ab6acd | |
![]() |
f02ed50650 | |
![]() |
4087d54c40 | |
![]() |
2218e034bd | |
![]() |
96ef90a216 | |
![]() |
35770f4956 | |
![]() |
86458f70fd | |
![]() |
4ca50ddd7c | |
![]() |
fb6107d461 | |
![]() |
7fc167b7df | |
![]() |
99cdec5f8e | |
![]() |
65f08c1ba5 | |
![]() |
011a68190d | |
![]() |
ec2dfaa755 | |
![]() |
4a0516fe11 | |
![]() |
cdf9298f58 | |
![]() |
34c38d80db | |
![]() |
e84e336d3a | |
![]() |
5f69279437 | |
![]() |
dace70ec6b | |
![]() |
904332259f | |
![]() |
f0fdad3db0 | |
|
272c38a78f | |
![]() |
2402c128a7 | |
![]() |
ce79e3c7de | |
|
c69e323a77 | |
![]() |
9706fd18b3 | |
![]() |
ea9f61ede8 | |
![]() |
3d6df3e3f4 | |
|
4399b2ddc8 | |
![]() |
8b092e05e5 | |
![]() |
a3d77f3557 | |
![]() |
ddd1d13333 | |
![]() |
0bc59716ad | |
![]() |
3bd8e574bb | |
![]() |
904aecc6da | |
![]() |
161eaddef3 | |
|
d61593f666 | |
|
8058b17c08 | |
|
85d714d7eb | |
![]() |
efad411cf9 | |
![]() |
27e9aa34b5 | |
![]() |
e74c6ded3e | |
![]() |
8b48a62f9c | |
![]() |
3b3459206d | |
![]() |
0f1a9d56e0 | |
|
b5e820c639 | |
![]() |
f64f44172e | |
![]() |
1deb802d87 | |
![]() |
680d8d63ba | |
![]() |
c5bd98c8fc | |
![]() |
cfded4f558 | |
![]() |
1275b4b992 | |
![]() |
ea9fffad7f |
|
@ -0,0 +1 @@
|
|||
back/dist-西海岸-后台管理.zip
|
|
@ -29,6 +29,7 @@
|
|||
"image-webpack-loader": "^8.1.0",
|
||||
"imagemin-gifsicle": "^7.0.0",
|
||||
"imagemin-mozjpeg": "^10.0.0",
|
||||
"jquery": "^3.6.0",
|
||||
"js-cookie": "^3.0.0-rc.3",
|
||||
"md-editor-v3": "^1.11.10",
|
||||
"mitt": "^3.0.0",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: hisense.wuhongjian
|
||||
* @Date: 2022-03-29 16:45:25
|
||||
* @LastEditors: hisense.wuhongjian
|
||||
* @LastEditTime: 2022-06-09 10:30:15
|
||||
* @LastEditTime: 2022-06-16 12:46:36
|
||||
* @Description: 告诉大家这是什么
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
|
@ -28,21 +28,21 @@
|
|||
<!-- 站点配置 -->
|
||||
<script>
|
||||
window.SITE_CONFIG = {};
|
||||
window.SITE_CONFIG['backUrl'] = 'http://15.72.183.90:8001';
|
||||
window.SITE_CONFIG['previewUrl'] = 'http://15.72.183.90:7008/';
|
||||
window.SITE_CONFIG['frontUrl'] = 'http://15.72.183.90:7008/document/#/devModelFile/';
|
||||
window.SITE_CONFIG['apiURL'] = 'http://15.72.183.90:8000/renren-admin';
|
||||
|
||||
// window.SITE_CONFIG['backUrl'] = 'http://15.72.183.90:8001';
|
||||
// window.SITE_CONFIG['previewUrl'] = 'http://15.72.183.90:7008/';
|
||||
// window.SITE_CONFIG['frontUrl'] = 'http://15.72.183.90:7008/document/#/devModelFile/';
|
||||
// window.SITE_CONFIG['apiURL'] = 'http://15.72.183.90:8000/renren-admin';
|
||||
|
||||
// window.SITE_CONFIG['backUrl'] = 'http://localhost:8001';
|
||||
// window.SITE_CONFIG['previewUrl'] = 'http://15.72.183.90:7008/';
|
||||
// window.SITE_CONFIG['frontUrl'] = 'http://15.72.183.90:7008/document/#/devModelFile/';
|
||||
// window.SITE_CONFIG['apiURL'] = 'http://15.72.183.90:8000/renren-admin';
|
||||
|
||||
|
||||
window.SITE_CONFIG['backUrl'] = 'http://15.2.21.238:9797';
|
||||
window.SITE_CONFIG['previewUrl'] = 'http://localhost:8080/';
|
||||
window.SITE_CONFIG['frontUrl'] = 'http://15.2.21.238:9796/document/#/devModelFile/';
|
||||
window.SITE_CONFIG['apiURL'] = 'http://15.2.21.238:8888/renren-admin';
|
||||
// window.SITE_CONFIG['backUrl'] = 'http://15.2.21.238:9797';
|
||||
// window.SITE_CONFIG['previewUrl'] = 'http://localhost:8080/';
|
||||
// window.SITE_CONFIG['frontUrl'] = 'http://15.2.21.238:9796/document/#/devModelFile/';
|
||||
// window.SITE_CONFIG['apiURL'] = 'http://15.2.21.238:8888/renren-admin';
|
||||
// 穿透版本
|
||||
// window.SITE_CONFIG['backUrl'] = 'http://124.222.94.39:9797';
|
||||
// window.SITE_CONFIG['previewUrl'] = 'http://124.222.94.39:9796/';
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"type": "FeatureCollection",
|
||||
"features": [{
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"adcode": 110000,
|
||||
"name": "中国",
|
||||
"center": [116.405285, 39.904989],
|
||||
"centroid": [116.41995, 40.18994],
|
||||
"childrenNum": 16,
|
||||
"level": "province",
|
||||
"parent": {
|
||||
"adcode": 100000
|
||||
},
|
||||
"subFeatureIndex": 0,
|
||||
"acroutes": [100000]
|
||||
},
|
||||
"geometry": {
|
||||
"type": "MultiPolygon",
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
[135.08,53.56],
|
||||
[135.08,3.86],
|
||||
[73.51,3.86],
|
||||
[73.51,53.56]
|
||||
]
|
||||
]
|
||||
]
|
||||
}
|
||||
}]
|
||||
}
|
After Width: | Height: | Size: 1.6 MiB |
After Width: | Height: | Size: 648 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 323 KiB |
After Width: | Height: | Size: 825 KiB |
After Width: | Height: | Size: 305 KiB |
After Width: | Height: | Size: 8.1 KiB |
After Width: | Height: | Size: 273 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 323 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 99 KiB |
After Width: | Height: | Size: 112 KiB |
After Width: | Height: | Size: 110 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 111 KiB |
After Width: | Height: | Size: 111 KiB |
After Width: | Height: | Size: 112 KiB |
After Width: | Height: | Size: 112 KiB |
After Width: | Height: | Size: 111 KiB |
After Width: | Height: | Size: 110 KiB |
After Width: | Height: | Size: 112 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 112 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 261 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.5 KiB |
|
@ -2,7 +2,7 @@
|
|||
* @Author: hisense.wuhongjian
|
||||
* @Date: 2022-03-29 17:48:03
|
||||
* @LastEditors: hisense.wuhongjian
|
||||
* @LastEditTime: 2022-06-06 12:57:06
|
||||
* @LastEditTime: 2022-06-15 19:40:28
|
||||
* @Description: 告诉大家这是什么
|
||||
*/
|
||||
/**
|
||||
|
@ -23,10 +23,7 @@ const setting = {
|
|||
// baseURL: 'mock-server',
|
||||
// 请求接口
|
||||
// 丁港
|
||||
baseURL:
|
||||
process.env.NODE_ENV === 'development'
|
||||
? 'http://15.2.21.238:8888/renren-admin'
|
||||
: '',
|
||||
baseURL: 'http://15.72.183.90:8000/renren-admin',
|
||||
// : 'http://15.2.21.238:8888/renren-admin/',
|
||||
// 'http://15.72.183.90:8000/renren-admin',
|
||||
// 黄工
|
||||
|
|
|
@ -64,6 +64,15 @@ export const constantRoutes = [
|
|||
icon: 'error-warning-line',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: '/mapTest',
|
||||
name: 'mapTest',
|
||||
component: () => import('@/views/home/mapTest'),
|
||||
meta: {
|
||||
title: '地图测试',
|
||||
icon: 'error-warning-line',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: '/',
|
||||
component: Layout,
|
||||
|
@ -214,7 +223,9 @@ export const constantRoutes = [
|
|||
path: '/PictureCharacterRecognition',
|
||||
name: 'PictureCharacterRecognition',
|
||||
component: () =>
|
||||
import('@/views/detailsAll/components/PictureCharacterRecognition'),
|
||||
import(
|
||||
'@/views/detailsAll/components/Algorithm/PictureCharacterRecognition'
|
||||
),
|
||||
meta: {
|
||||
title: '图片文字识别',
|
||||
icon: 'error-warning-line',
|
||||
|
@ -223,7 +234,8 @@ export const constantRoutes = [
|
|||
{
|
||||
path: '/TestOfWords',
|
||||
name: 'TestOfWords',
|
||||
component: () => import('@/views/detailsAll/components/TestOfWords'),
|
||||
component: () =>
|
||||
import('@/views/detailsAll/components/Algorithm/TestOfWords'),
|
||||
meta: {
|
||||
title: '文字检验',
|
||||
icon: 'error-warning-line',
|
||||
|
@ -354,6 +366,27 @@ export const constantRoutes = [
|
|||
icon: 'error-warning-line',
|
||||
},
|
||||
},
|
||||
// 赋能案例
|
||||
{
|
||||
path: '/assignCase',
|
||||
name: 'assignCase',
|
||||
component: () => import('@/views/assignCase/index'),
|
||||
meta: {
|
||||
title: '赋能案例',
|
||||
icon: 'error-warning-line',
|
||||
},
|
||||
},
|
||||
// 赋能案例详情
|
||||
{
|
||||
path: '/AssignCaseDetailPage',
|
||||
name: 'AssignCaseDetailPage',
|
||||
component: () =>
|
||||
import('@/views/assignCase/components/AssignCaseDetailPage'),
|
||||
meta: {
|
||||
title: '赋能案例详情',
|
||||
icon: 'error-warning-line',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: '/nenglishangjia',
|
||||
name: 'TheNewRelease',
|
||||
|
|
|
@ -0,0 +1,480 @@
|
|||
<!--
|
||||
* @Author: hisense.zhangfeihu
|
||||
* @Date: 2022-06-13 10:22:27
|
||||
* @LastEditors: hisense.zhangfeihu
|
||||
* @LastEditTime: 2022-06-13 14:31:19
|
||||
* @Description: 赋能案例-详情页
|
||||
-->
|
||||
<template>
|
||||
<home-header></home-header>
|
||||
<div class="assign-case-detail-page">
|
||||
<!--详情页头部-->
|
||||
<div class="assign-case-detail-page-header">
|
||||
<div class="assign-case-detail-page-header-son">
|
||||
<div
|
||||
class="assign-case-detail-page-header-son-left"
|
||||
:style="`background:url(${pictureFormat(dataFrom.name)})`"
|
||||
></div>
|
||||
<div class="assign-case-detail-page-header-son-right">
|
||||
<div class="assign-case-detail-page-header-son-right-title">
|
||||
{{ dataFrom.name }}
|
||||
</div>
|
||||
<div
|
||||
class="assign-case-detail-page-header-son-right-click"
|
||||
@click="clickToView(dataFrom.name)"
|
||||
>
|
||||
<span>点击查看</span>
|
||||
<span></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="assign-case-detail-page-content">
|
||||
<div class="assign-case-detail-page-content-son">
|
||||
<div class="assign-case-detail-page-content-left">
|
||||
<div
|
||||
class="assign-case-detail-page-content-left-border"
|
||||
id="assign-case-detail-page-content-left-border-id"
|
||||
>
|
||||
<div
|
||||
v-for="(item, index) in dataFrom.content"
|
||||
:key="index"
|
||||
@click="tabSwitch(item, index)"
|
||||
:class="
|
||||
tabName == item.title
|
||||
? 'assign-case-detail-page-content-left-border-click'
|
||||
: ''
|
||||
"
|
||||
>
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="assign-case-detail-page-content-center">
|
||||
<div
|
||||
class="assign-case-detail-page-content-center-card"
|
||||
v-for="(item, index) in dataFrom.content"
|
||||
:key="index"
|
||||
:id="'assign-case-detail-page-content-center-card' + index"
|
||||
>
|
||||
<div class="assign-case-detail-page-content-center-card-title">
|
||||
{{ item.title }}
|
||||
</div>
|
||||
<div
|
||||
class="assign-case-detail-page-content-center-card-description"
|
||||
>
|
||||
{{ item.description }}
|
||||
<div v-if="item.descriptions">
|
||||
<p
|
||||
v-for="(
|
||||
itemDescriptions, indexDescriptions
|
||||
) in item.descriptions"
|
||||
:key="indexDescriptions"
|
||||
>
|
||||
{{ itemDescriptions }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="assign-case-detail-page-content-right">
|
||||
<div class="assign-case-detail-page-content-right-card">
|
||||
<div class="assign-case-detail-page-content-right-card-title">
|
||||
<span></span>
|
||||
<span>其他案例</span>
|
||||
</div>
|
||||
<div class="assign-case-detail-page-content-right-card-content">
|
||||
<div
|
||||
class="assign-case-detail-page-content-right-card-content-card"
|
||||
@click="routerClick(dataFrom.else.name)"
|
||||
>
|
||||
<p>{{ dataFrom.else.name }}</p>
|
||||
<p>{{ dataFrom.else.time }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="no-data">暂无更多</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<home-footer></home-footer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, watch, onMounted } from 'vue'
|
||||
import HomeHeader from '@/views/home/components/header'
|
||||
import HomeFooter from '@/views/newHome/components/Footer'
|
||||
import { useRouter } from 'vue-router'
|
||||
const router = useRouter()
|
||||
let val = router.currentRoute.value.query.val
|
||||
const scrollTop = ref(0)
|
||||
let dataFrom = ref({})
|
||||
const domArr = ref([])
|
||||
const selectNow = ref('')
|
||||
let tabName = ref('案例背景')
|
||||
console.log('val', val)
|
||||
//图片样式切换
|
||||
function pictureFormat(name) {
|
||||
if (name == '道路保洁监管场景') {
|
||||
return require('@/assets/assignCase/road.png')
|
||||
} else {
|
||||
return require('@/assets/assignCase/city.png')
|
||||
}
|
||||
}
|
||||
//路由跳转事件
|
||||
const routerClick = (name) => {
|
||||
val = name
|
||||
router.push({ path: 'AssignCaseDetailPage', query: { val } })
|
||||
}
|
||||
const init = () => {
|
||||
val = router.currentRoute.value.query.val
|
||||
tabName.value = '案例背景'
|
||||
if (val == '道路保洁监管场景') {
|
||||
dataFrom.value = {
|
||||
name: '道路保洁监管场景',
|
||||
content: [
|
||||
{
|
||||
title: '案例背景',
|
||||
description:
|
||||
'融合市生态环境局出租车走航大气检测数据、城管局渣土车及环卫作业数据、住建局建筑工地数据、城市云脑视频监控等数据,结合时空大数据分析、预测预警分析等手段,对全市道路污染重点路段进行线索分析、作业辅导',
|
||||
},
|
||||
{
|
||||
title: '业务挑战',
|
||||
description:
|
||||
'目前城市道路污染情况缺少主动发现手段,对渣土车及污染投诉事件,缺乏可参考线索等辅助执法手段',
|
||||
},
|
||||
{
|
||||
title: '解决方案',
|
||||
description:
|
||||
'当道路发生污染(PM10数值>200)时,触发道路污染事件,并通过时空算法模型智能分析污染线索,如建筑工地扬尘外溢、渣土车遗撒、环卫作业问题等。',
|
||||
descriptions: [
|
||||
'系统实现预警事件与地图图层数据关联展示,当用户点击预警事件后,中间地图也会展示预警事件发生时段内的污染路段名称、污染状态,以及路段周边的工地、渣土车、环卫车轨迹及监控摄像头位置。同时屏幕右侧显示对应的工地、渣土车、摄像头列表信息。',
|
||||
],
|
||||
},
|
||||
{
|
||||
title: '案例成效',
|
||||
description:
|
||||
'实现城市运行智能监测,自动告警预警问题路段。为城管局渣土车执法提供线索,也可以快速定位疑似问题工地和渣土车。',
|
||||
descriptions: [
|
||||
'根据道路污染情况,对环卫作业进行调度部署、辅助决策,实现环卫作业调度智能化。',
|
||||
],
|
||||
},
|
||||
],
|
||||
else: {
|
||||
name: '文明创城案例',
|
||||
time: '2022-01-01 12:00',
|
||||
},
|
||||
}
|
||||
} else {
|
||||
dataFrom.value = {
|
||||
name: '文明创城场景',
|
||||
content: [
|
||||
{
|
||||
title: '案例背景',
|
||||
description:
|
||||
'通过融合视频共享平台、标准地址库、运营商手机信令等数据,结合道路不洁、占道经营、沿街晾晒、违章停放、违规广告等视频AI算法,打造文明创城专题场景。',
|
||||
},
|
||||
{
|
||||
title: '业务挑战',
|
||||
description:
|
||||
'1)城管工作人员日常通过视频监控巡检创城工作时,需要一个一个查找视频,无法快速调取重点区域视频监控,工作效率较低。',
|
||||
descriptions: [
|
||||
'2)事件发生时,想要查看事件附近的视频监控进行核查时,要通过放大和拖拉拽地图查找事发地,无法快速定位。',
|
||||
'3)由于破坏市容市貌事件类型多样,且需监测点位较多,工作人员有限,人工巡检不能做到及时发现。',
|
||||
'4)城管重点关注人流密集的区域,但目前缺乏高效的监控手段。',
|
||||
],
|
||||
},
|
||||
{
|
||||
title: '解决方案',
|
||||
description:
|
||||
'1)通过对接自规局标准地址库,实现按地址搜索的功能,通过快速定位,可以让用户很快找到定位位置周边的视频监控。',
|
||||
descriptions: [
|
||||
'2)实现视频标签功能,给视频监控打标签后,用户通过在页面选择兴趣标签,地图显示相关视频。',
|
||||
'3)结合运营商手机信令数据,实现人流热力图,辅助用户监控人流量密集的区域。',
|
||||
'4)依托视频监控平台,结合视频AI算法,智能发现环境卫生、沿街晾晒、违章停放、占道经营、违规广告等破坏市容市貌的事件,推送到城管案件系统中,辅助城管局创城工作开展。',
|
||||
],
|
||||
},
|
||||
{
|
||||
title: '案例成效',
|
||||
description:
|
||||
'1)智能发现不文明事件,并快速定位附近的视频监控,辅助城管、环保等各单位开展创城工作;',
|
||||
descriptions: [
|
||||
'2)显示实时人流热力图,城市管理部门可快速定位人群密集区域,并通过查看周边摄像头进行实时监控;',
|
||||
'3)通过视频定时截图功能,可截取便民摊点营业时间外的视频画面并智能分析,辅助城管执法单位及时发现问题进行处置,同时该功能也可以在工地及景区监管中发挥作用。',
|
||||
],
|
||||
},
|
||||
],
|
||||
else: {
|
||||
name: '道路保洁监管场景',
|
||||
time: '2022-01-01 12:00',
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
init()
|
||||
//监听路由发生变化
|
||||
watch(
|
||||
() => router.currentRoute.value.query.val,
|
||||
() => {
|
||||
init()
|
||||
},
|
||||
{ immediate: true }
|
||||
)
|
||||
//tab点击事件
|
||||
const tabSwitch = (item, index) => {
|
||||
tabName.value = item.title
|
||||
if (index != 0 && index != 3) {
|
||||
let top =
|
||||
document.querySelector(
|
||||
'#assign-case-detail-page-content-center-card' + index
|
||||
).offsetTop -
|
||||
document.querySelector(
|
||||
'#assign-case-detail-page-content-center-card' + (index - 1)
|
||||
).offsetHeight
|
||||
let view = document.getElementById(
|
||||
'assign-case-detail-page-content-left-border-id'
|
||||
)
|
||||
view.style.top =
|
||||
document.querySelector(
|
||||
'#assign-case-detail-page-content-center-card' + (index - 1)
|
||||
).offsetHeight + 'px'
|
||||
console.log('view.style.top', view.style.top)
|
||||
document.documentElement.scrollTop = top
|
||||
document.body.scrollTop = top
|
||||
} else if (index == 0) {
|
||||
let top = 0
|
||||
let view = document.getElementById(
|
||||
'assign-case-detail-page-content-left-border-id'
|
||||
)
|
||||
document.documentElement.scrollTop = top
|
||||
document.body.scrollTop = top
|
||||
view.style.top = '490px'
|
||||
} else if (index == 3) {
|
||||
let top = document.querySelector(
|
||||
'#assign-case-detail-page-content-center-card' + index
|
||||
).offsetTop
|
||||
let view = document.getElementById(
|
||||
'assign-case-detail-page-content-left-border-id'
|
||||
)
|
||||
document.documentElement.scrollTop = top
|
||||
document.body.scrollTop = top
|
||||
view.style.top = '220px'
|
||||
}
|
||||
}
|
||||
onMounted(() => {
|
||||
// console.clear()
|
||||
window.addEventListener('scroll', () => {
|
||||
domArr.value = document.querySelectorAll(
|
||||
'.assign-case-detail-page-content-center-card'
|
||||
)
|
||||
scrollTop.value =
|
||||
document.documentElement.scrollTop || document.body.scrollTop
|
||||
for (let i = 0; i < domArr.value.length; i++) {
|
||||
if (i === 0) {
|
||||
if (scrollTop.value <= domArr.value[i + 1].offsetTop - 50) {
|
||||
selectNow.value = domArr.value[i].id
|
||||
}
|
||||
} else if (i == domArr.value.length - 1) {
|
||||
if (scrollTop.value >= domArr.value[i].offsetTop - 50) {
|
||||
selectNow.value = domArr.value[i].id
|
||||
}
|
||||
} else {
|
||||
if (
|
||||
scrollTop.value > domArr.value[i].offsetTop - 50 &&
|
||||
scrollTop.value < domArr.value[i + 1].offsetTop - 50
|
||||
) {
|
||||
selectNow.value = domArr.value[i].id
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
//点击查看事件
|
||||
const clickToView = (name) => {
|
||||
if (name == '道路保洁监管场景') {
|
||||
window.open('http://15.72.183.90:7001/#/road')
|
||||
} else {
|
||||
window.open('http://15.72.183.90:7001/#/city')
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.assign-case-detail-page {
|
||||
position: relative;
|
||||
top: 0.64rem;
|
||||
.assign-case-detail-page-header {
|
||||
height: 3.7rem;
|
||||
background: url('~@/assets/assignCase/assignCase_bg2.png') no-repeat;
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
padding-top: 1.2rem;
|
||||
.assign-case-detail-page-header-son {
|
||||
width: 9rem;
|
||||
height: 2.5rem;
|
||||
border-radius: 0.01rem;
|
||||
background: #fff;
|
||||
margin: auto;
|
||||
box-shadow: 5px 5px 20px #f2f3fb;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0.2rem;
|
||||
.assign-case-detail-page-header-son-left {
|
||||
height: 2rem;
|
||||
width: 2.9rem;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
margin-right: 0.3rem;
|
||||
}
|
||||
.assign-case-detail-page-header-son-right {
|
||||
.assign-case-detail-page-header-son-right-title {
|
||||
color: #000000;
|
||||
font-size: 0.36rem;
|
||||
line-height: 0.36rem;
|
||||
margin-bottom: 0.4rem;
|
||||
}
|
||||
.assign-case-detail-page-header-son-right-click {
|
||||
color: #526aff;
|
||||
font-size: 0.2rem;
|
||||
line-height: 0.2rem;
|
||||
cursor: pointer;
|
||||
span {
|
||||
display: inline-block;
|
||||
}
|
||||
span:first-child {
|
||||
margin-right: 10px;
|
||||
}
|
||||
span:last-child {
|
||||
width: 0.2rem;
|
||||
height: 10px;
|
||||
background: url('~@/assets/assignCase/assignCase_click.png')
|
||||
no-repeat;
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.assign-case-detail-page-content {
|
||||
padding-top: 0.6rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
.assign-case-detail-page-content-son {
|
||||
width: 13rem;
|
||||
display: flex;
|
||||
}
|
||||
.assign-case-detail-page-content-left {
|
||||
width: 1.67rem;
|
||||
.assign-case-detail-page-content-left-border {
|
||||
border-right: 1px #e5e5e5 solid;
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
position: fixed;
|
||||
top: 4.9rem;
|
||||
div {
|
||||
height: 0.3rem;
|
||||
padding-right: 0.7rem;
|
||||
margin-bottom: 0.3rem;
|
||||
font-size: 24px;
|
||||
color: #666666;
|
||||
line-height: 0.3rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
div:last-child {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
.assign-case-detail-page-content-left-border-click {
|
||||
padding-right: 0.66rem;
|
||||
border-right: 4px #526aff solid;
|
||||
color: #526aff;
|
||||
}
|
||||
}
|
||||
}
|
||||
.assign-case-detail-page-content-center {
|
||||
width: 8.45rem;
|
||||
padding: 0 0.4rem 1rem 0.35rem;
|
||||
.assign-case-detail-page-content-center-card {
|
||||
margin-bottom: 0.6rem;
|
||||
.assign-case-detail-page-content-center-card-title {
|
||||
font-size: 0.28rem;
|
||||
color: #000000;
|
||||
font-weight: bold;
|
||||
line-height: 0.28rem;
|
||||
margin-bottom: 0.35rem;
|
||||
}
|
||||
.assign-case-detail-page-content-center-card-description {
|
||||
color: #333333;
|
||||
font-size: 0.2rem;
|
||||
line-height: 0.34rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
.assign-case-detail-page-content-right {
|
||||
width: 2.7rem;
|
||||
height: 2.6rem;
|
||||
display: inline-block;
|
||||
.assign-case-detail-page-content-right-card {
|
||||
width: 2.7rem;
|
||||
height: 2.6rem;
|
||||
border: 1px #e5e5e5 solid;
|
||||
position: relative;
|
||||
.assign-case-detail-page-content-right-card-title {
|
||||
padding-left: 15px;
|
||||
background: linear-gradient(
|
||||
to right,
|
||||
rgba(113, 132, 252, 0.8),
|
||||
rgba(148, 163, 252, 0.8)
|
||||
);
|
||||
height: 0.64rem;
|
||||
color: #fff;
|
||||
font-size: 24px;
|
||||
line-height: 0.64rem;
|
||||
margin-bottom: 30px;
|
||||
border-radius: 10px 10px 0 0;
|
||||
span:first-child {
|
||||
display: inline-block;
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
background: url('~@/assets/assignCase/assignCase_else.png')
|
||||
no-repeat;
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
margin-right: 15px;
|
||||
}
|
||||
}
|
||||
.assign-case-detail-page-content-right-card-content {
|
||||
padding: 0 20px;
|
||||
border-radius: 0px 0px 10px 10px;
|
||||
.assign-case-detail-page-content-right-card-content-card {
|
||||
cursor: pointer;
|
||||
border-bottom: 1px solid #ebebeb;
|
||||
p:first-child {
|
||||
font-size: 20px;
|
||||
line-height: 20px;
|
||||
margin-bottom: 20px;
|
||||
color: #333;
|
||||
}
|
||||
p:last-child {
|
||||
font-size: 18px;
|
||||
line-height: 18px;
|
||||
margin-bottom: 30px;
|
||||
color: #999;
|
||||
}
|
||||
}
|
||||
}
|
||||
.no-data {
|
||||
position: absolute;
|
||||
bottom: 0.2rem;
|
||||
font-size: 0.18rem;
|
||||
color: #cccccc;
|
||||
width: 2.3rem;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,424 @@
|
|||
<template>
|
||||
<div class="box">
|
||||
<div id="container">
|
||||
<div class="banner"></div>
|
||||
<div class="mainBox">
|
||||
<div class="top">
|
||||
<h1>赋能案例</h1>
|
||||
<div></div>
|
||||
<!-- <h3>Enabling Cases</h3> -->
|
||||
</div>
|
||||
<div class="navigation">
|
||||
<div class="navigationMain">
|
||||
<div class="top-title">
|
||||
<div
|
||||
v-for="(item, index) in titleName"
|
||||
:key="index"
|
||||
class="tabAll"
|
||||
@click="changeCards(index)"
|
||||
:class="{ tabAllActive: index == number }"
|
||||
>
|
||||
<span>{{ item.name }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tabClickRight" v-if="tabClickShow">
|
||||
<div
|
||||
class="tabClick"
|
||||
:ref="txttype"
|
||||
:class="hidetext == true ? 'hidetext' : ''"
|
||||
>
|
||||
<span v-for="(item, index) in tabClickData" :key="index">
|
||||
{{ item.name }}
|
||||
</span>
|
||||
</div>
|
||||
<a class="more" @click="lookmore(hidetext)">
|
||||
{{ moretext }}
|
||||
</a>
|
||||
<i
|
||||
class="moreLogo"
|
||||
:class="hidetext == true ? 'moreLogoActive' : ''"
|
||||
></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<main>
|
||||
<div class="content">
|
||||
<div
|
||||
class="contenBox"
|
||||
v-for="(item, index) in contenBox"
|
||||
:key="index"
|
||||
>
|
||||
<img :src="item.photo || ''" alt="" />
|
||||
<h3>{{ item.name }}</h3>
|
||||
<p>
|
||||
发布时间
|
||||
<span>{{ item.time }}</span>
|
||||
</p>
|
||||
<div class="look" @click="lookContent(item.name)">查看详情</div>
|
||||
</div>
|
||||
<div class="contenBox contenBoxImg" v-if="contenBox.length < 3">
|
||||
<img :src="hopeing" alt="" class="hopeingImg" />
|
||||
<p>正在研发中...</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pagination">
|
||||
<!-- 分页 -->
|
||||
<span>共{{ resourceTotal }}条</span>
|
||||
<a-pagination
|
||||
v-model:current="currentPage"
|
||||
v-model:pageSize="currentPageSize"
|
||||
show-quick-jumper
|
||||
:total="resourceTotal"
|
||||
@change="pageChange"
|
||||
/>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
// import { useStore } from 'vuex'
|
||||
import { useRouter } from 'vue-router'
|
||||
// import { pinyin } from 'pinyin-pro'
|
||||
// import { Empty } from 'ant-design-vue'
|
||||
|
||||
const router = useRouter()
|
||||
|
||||
const contenBox = ref([
|
||||
{
|
||||
photo: require('@/assets/assignCase/road.png'),
|
||||
name: '道路保洁监管场景',
|
||||
time: '2022-01-01 12:00',
|
||||
},
|
||||
{
|
||||
photo: require('@/assets/assignCase/city.png'),
|
||||
name: '文明创城场景',
|
||||
time: '2022-01-01 12:00',
|
||||
},
|
||||
{
|
||||
photo: require('@/assets/assignCase/important.png'),
|
||||
name: '重点区域监控平台',
|
||||
time: '2022-01-01 12:00',
|
||||
},
|
||||
])
|
||||
const hopeing = require('@/assets/assignCase/hopeing.png')
|
||||
// 分页
|
||||
const resourceTotal = contenBox.value.length
|
||||
// const resourceTotal = ref(15)
|
||||
const currentPage = ref(1)
|
||||
const currentPageSize = ref(3)
|
||||
const pageChange = (val) => {
|
||||
console.log(val)
|
||||
currentPage.value = val
|
||||
}
|
||||
// 选项卡
|
||||
const titleName = ref([
|
||||
{
|
||||
name: '全部',
|
||||
},
|
||||
{
|
||||
name: '按应用领域',
|
||||
},
|
||||
])
|
||||
const tabClickData = ref([
|
||||
{
|
||||
name: '社会治安',
|
||||
},
|
||||
{
|
||||
name: '城市管理',
|
||||
},
|
||||
{
|
||||
name: '疫情防控',
|
||||
},
|
||||
{
|
||||
name: '危化品管理',
|
||||
},
|
||||
{
|
||||
name: '交通运输',
|
||||
},
|
||||
{
|
||||
name: '森林防火',
|
||||
},
|
||||
{
|
||||
name: '防汛抗旱',
|
||||
},
|
||||
{
|
||||
name: '文化旅游',
|
||||
},
|
||||
{
|
||||
name: '非煤矿山',
|
||||
},
|
||||
{
|
||||
name: '医疗卫生',
|
||||
},
|
||||
{
|
||||
name: '安全生产',
|
||||
},
|
||||
{
|
||||
name: '生态环境',
|
||||
},
|
||||
{
|
||||
name: '农村农业',
|
||||
},
|
||||
{
|
||||
name: '市场监管',
|
||||
},
|
||||
{
|
||||
name: '政务服务',
|
||||
},
|
||||
{
|
||||
name: '其他',
|
||||
},
|
||||
])
|
||||
const tabClickShow = ref(false)
|
||||
const number = ref(0)
|
||||
const changeCards = (val) => {
|
||||
console.log(val)
|
||||
number.value = val
|
||||
if (val == 1) {
|
||||
tabClickShow.value = true
|
||||
} else {
|
||||
tabClickShow.value = false
|
||||
}
|
||||
}
|
||||
const moretext = ref('展开')
|
||||
const hidetext = ref(false)
|
||||
const lookmore = (val) => {
|
||||
console.log(val)
|
||||
if (val) {
|
||||
hidetext.value = false
|
||||
moretext.value = '展开'
|
||||
} else {
|
||||
hidetext.value = true
|
||||
moretext.value = '收起'
|
||||
}
|
||||
}
|
||||
onMounted(() => {})
|
||||
|
||||
// 跳转
|
||||
const lookContent = (val) => {
|
||||
router.push({ path: 'AssignCaseDetailPage', query: { val } })
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="less">
|
||||
.box {
|
||||
// overflow: hidden;
|
||||
height: 100%;
|
||||
}
|
||||
#container {
|
||||
position: relative;
|
||||
.banner {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 400px;
|
||||
background: url(../../../assets/assignCase/bg.png) no-repeat center;
|
||||
}
|
||||
.mainBox {
|
||||
width: 100%;
|
||||
// margin: 0 auto;
|
||||
background: #f7f8fa;
|
||||
}
|
||||
.top {
|
||||
width: 1350px;
|
||||
margin: 0 auto;
|
||||
height: 400px;
|
||||
padding-top: 80px;
|
||||
position: relative;
|
||||
margin-top: 64px;
|
||||
h1 {
|
||||
font-size: 40px;
|
||||
font-weight: 300;
|
||||
line-height: 50px;
|
||||
color: #ffffff;
|
||||
}
|
||||
div {
|
||||
width: 76px;
|
||||
height: 4px;
|
||||
background: #ff8b55;
|
||||
margin: 20px 0;
|
||||
}
|
||||
h3 {
|
||||
font-weight: 300;
|
||||
font-size: 26px;
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
.navigation {
|
||||
width: 100%;
|
||||
// height: 80px;
|
||||
line-height: 80px;
|
||||
background: #ffffff;
|
||||
|
||||
.navigationMain {
|
||||
width: 1350px;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
.top-title {
|
||||
display: flex;
|
||||
.tabAll {
|
||||
font-size: 22px;
|
||||
color: #526aff;
|
||||
margin-right: 35px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.tabAll:nth-child(2) {
|
||||
margin-left: 35px;
|
||||
margin-right: 60px;
|
||||
}
|
||||
.tabAllActive {
|
||||
color: #999999;
|
||||
}
|
||||
}
|
||||
.tabClickRight {
|
||||
display: flex;
|
||||
.more {
|
||||
font-size: 22px;
|
||||
color: #526aff;
|
||||
}
|
||||
.moreLogo {
|
||||
display: inline-block;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background: url(../../../assets/assignCase/left.png) no-repeat
|
||||
center;
|
||||
|
||||
margin-top: 30px;
|
||||
transform: rotate(-90deg);
|
||||
}
|
||||
.moreLogoActive {
|
||||
background: url(../../../assets/assignCase/left.png) no-repeat
|
||||
center;
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
}
|
||||
.tabClick {
|
||||
height: 80px;
|
||||
line-height: 80px;
|
||||
width: 1000px;
|
||||
overflow: hidden;
|
||||
span {
|
||||
font-size: 22px;
|
||||
color: #333333;
|
||||
margin-right: 30px;
|
||||
cursor: pointer;
|
||||
}
|
||||
span:nth-of-type(8n) {
|
||||
margin-right: 50px;
|
||||
}
|
||||
}
|
||||
.hidetext {
|
||||
height: unset;
|
||||
overflow: unset;
|
||||
line-height: 80px;
|
||||
}
|
||||
}
|
||||
}
|
||||
main {
|
||||
position: relative;
|
||||
z-index: 5;
|
||||
// width: 1350px;
|
||||
height: 100%;
|
||||
margin: 0 auto;
|
||||
.content {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
padding-top: 40px;
|
||||
overflow: hidden;
|
||||
.contenBox {
|
||||
// width: 430px;
|
||||
padding: 30px;
|
||||
border: 1px solid #e4e6f5;
|
||||
margin-right: 30px;
|
||||
background: #ffffff;
|
||||
border-radius: 6px;
|
||||
box-shadow: 5px 5px 20px 0 #f2f3fb;
|
||||
img {
|
||||
// width: 370px;
|
||||
height: 200px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
h3 {
|
||||
margin: 30px 0 20px;
|
||||
font-size: 28px;
|
||||
color: #000000;
|
||||
}
|
||||
p {
|
||||
font-size: 18px;
|
||||
color: #999999;
|
||||
}
|
||||
.look {
|
||||
width: 100px;
|
||||
height: 36px;
|
||||
line-height: 36px;
|
||||
border: 1px solid #526aff;
|
||||
color: #526aff;
|
||||
border-radius: 6px;
|
||||
font-size: 18px;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
.contenBox:last-of-type {
|
||||
margin-right: 0px;
|
||||
}
|
||||
.contenBoxImg {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
.hopeingImg {
|
||||
width: 178px;
|
||||
height: 130px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
h3 {
|
||||
font-size: 22px;
|
||||
color: #999999;
|
||||
}
|
||||
}
|
||||
}
|
||||
.pagination {
|
||||
padding: 60px 0 40px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
span {
|
||||
font-size: 18px;
|
||||
color: #999999;
|
||||
margin-right: 20px;
|
||||
}
|
||||
.ant-pagination {
|
||||
margin-top: 0;
|
||||
}
|
||||
:deep(.ant-pagination-item) {
|
||||
border-radius: 4px;
|
||||
border: 1px solid #b2b2b2;
|
||||
a {
|
||||
color: #b2b2b2;
|
||||
}
|
||||
}
|
||||
:deep(.ant-pagination-item:hover) {
|
||||
background: #526aff;
|
||||
border-color: #526aff;
|
||||
a {
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
:deep(.ant-pagination-item-active) {
|
||||
background: #526aff;
|
||||
border: 1px solid #526aff;
|
||||
border-radius: 4px;
|
||||
a {
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
:deep(.ant-pagination-options-quick-jumper input) {
|
||||
width: 32px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,25 @@
|
|||
<template>
|
||||
<div>
|
||||
<home-header></home-header>
|
||||
<query-page></query-page>
|
||||
<home-footer></home-footer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import HomeHeader from '@/views/home/components/header'
|
||||
import HomeFooter from '@/views/newHome/components/Footer'
|
||||
import QueryPage from '@/views/assignCase/components/queryPage'
|
||||
export default {
|
||||
setup() {
|
||||
return {}
|
||||
},
|
||||
components: {
|
||||
HomeHeader,
|
||||
HomeFooter,
|
||||
QueryPage,
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: hisense.liangjunhua
|
||||
* @Date: 2022-06-13 10:22:27
|
||||
* @LastEditors: hisense.liangjunhua
|
||||
* @LastEditTime: 2022-06-13 17:44:04
|
||||
* @LastEditTime: 2022-06-14 11:06:06
|
||||
* @Description: 算法上架
|
||||
-->
|
||||
<template>
|
||||
|
@ -78,7 +78,15 @@
|
|||
const data = ref({})
|
||||
const refData = ref({})
|
||||
const submitFlag = ref(true)
|
||||
const dataFrom = ref({ infoList: [], delFlag: 0, type: '组件服务' })
|
||||
const dataFrom = ref({
|
||||
infoList: [],
|
||||
delFlag: 0,
|
||||
type: '组件服务',
|
||||
deptId: '',
|
||||
})
|
||||
getUser().then((res) => {
|
||||
dataFrom.value.deptId = res.data.data.deptId
|
||||
})
|
||||
const back = () => {
|
||||
navList.value.forEach((val, index) => {
|
||||
if (val.key === showView.value && index > 0) {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: hisense.liangjunhua
|
||||
* @Date: 2022-06-13 10:22:27
|
||||
* @LastEditors: hisense.liangjunhua
|
||||
* @LastEditTime: 2022-06-13 17:44:41
|
||||
* @LastEditTime: 2022-06-15 17:55:02
|
||||
* @Description: 应用上架
|
||||
-->
|
||||
<template>
|
||||
|
@ -34,6 +34,11 @@
|
|||
:refData="refData"
|
||||
:dataFrom="dataFrom"
|
||||
></application-function-introduction>
|
||||
<application-associated-components
|
||||
v-else-if="showView === '关联组件'"
|
||||
:refData="refData"
|
||||
:dataFrom="dataFrom"
|
||||
></application-associated-components>
|
||||
<application-deployment-use
|
||||
v-else-if="showView === '部署与应用'"
|
||||
:refData="refData"
|
||||
|
@ -55,6 +60,7 @@
|
|||
<script setup>
|
||||
import ApplicationEssentialInformation from '@/views/capacityOnTheShelf/components/ApplicationEssentialInformation.vue'
|
||||
import ApplicationFunctionIntroduction from '@/views/capacityOnTheShelf/components/ApplicationFunctionIntroduction.vue'
|
||||
import ApplicationAssociatedComponents from '@/views/capacityOnTheShelf/components/ApplicationAssociatedComponents.vue'
|
||||
import ApplicationDeploymentUse from '@/views/capacityOnTheShelf/components/ApplicationDeploymentUse.vue'
|
||||
import { ref, onBeforeUnmount } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
|
@ -73,7 +79,15 @@
|
|||
const data = ref({})
|
||||
const refData = ref({})
|
||||
const submitFlag = ref(true)
|
||||
const dataFrom = ref({ infoList: [], delFlag: 0, type: '应用资源' })
|
||||
const dataFrom = ref({
|
||||
infoList: [],
|
||||
delFlag: 0,
|
||||
type: '应用资源',
|
||||
deptId: '',
|
||||
})
|
||||
getUser().then((res) => {
|
||||
dataFrom.value.deptId = res.data.data.deptId
|
||||
})
|
||||
const back = () => {
|
||||
navList.value.forEach((val, index) => {
|
||||
if (val.key === showView.value && index > 0) {
|
||||
|
@ -280,7 +294,7 @@
|
|||
}
|
||||
.line {
|
||||
margin-left: 10px;
|
||||
width: 280px;
|
||||
width: 140px;
|
||||
height: 1px;
|
||||
background: #999;
|
||||
}
|
||||
|
|
|
@ -18,9 +18,7 @@
|
|||
<a-radio-group
|
||||
v-else-if="item.type == 'radio'"
|
||||
v-model:value="item.note1"
|
||||
:options="
|
||||
item.name === '接口请求方式' ? plainOptions2 : plainOptions3
|
||||
"
|
||||
:options="item.options"
|
||||
/>
|
||||
<a-textarea
|
||||
v-else-if="item.type == 'textArea'"
|
||||
|
@ -48,86 +46,6 @@
|
|||
tip="支持文件类型,大小不超过100M"
|
||||
></upload>
|
||||
</div>
|
||||
<!-- <div class="form">
|
||||
<span>接口请求方式</span>
|
||||
<a-radio-group
|
||||
v-model:value="data.interfaceRequestMode"
|
||||
:options="plainOptions2"
|
||||
/>
|
||||
</div>
|
||||
<div class="form">
|
||||
<span>是否支持试用</span>
|
||||
<a-radio-group
|
||||
v-model:value="data.supportTrial"
|
||||
:options="plainOptions3"
|
||||
/>
|
||||
</div>
|
||||
<div class="form">
|
||||
<span>试用地址</span>
|
||||
<a-input
|
||||
v-model:value="data.trialAddress"
|
||||
placeholder="请输入试用地址"
|
||||
/>
|
||||
</div>
|
||||
<div class="form">
|
||||
<span>试用描述</span>
|
||||
<a-textarea
|
||||
v-model:value="data.trialDescription"
|
||||
:showCount="true"
|
||||
:maxlength="200"
|
||||
placeholder="请输入试用描述"
|
||||
/>
|
||||
</div> -->
|
||||
<!-- <div class="form">
|
||||
<span>技术文档</span>
|
||||
<a-upload
|
||||
v-model:file-list="fileList"
|
||||
:action="`${baseURL}/upload`"
|
||||
list-type="picture"
|
||||
class="upload-list-inline"
|
||||
:before-upload="beforeUpload"
|
||||
>
|
||||
<a-button>
|
||||
<upload-outlined></upload-outlined>
|
||||
上传文档
|
||||
</a-button>
|
||||
<span
|
||||
style="
|
||||
display: inline-block;
|
||||
margin-left: 10px;
|
||||
color: #999999;
|
||||
font-size: 14px;
|
||||
"
|
||||
>
|
||||
支持MP3 类型文件,大小不超过100M
|
||||
</span>
|
||||
</a-upload>
|
||||
</div>
|
||||
<div class="form">
|
||||
<span>试用效果图</span>
|
||||
<a-upload
|
||||
v-model:file-list="fileList2"
|
||||
:action="`${baseURL}/upload`"
|
||||
list-type="picture"
|
||||
class="upload-list-inline"
|
||||
:before-upload="beforeUpload"
|
||||
>
|
||||
<a-button>
|
||||
<upload-outlined></upload-outlined>
|
||||
图片上传
|
||||
</a-button>
|
||||
<span
|
||||
style="
|
||||
display: inline-block;
|
||||
margin-left: 10px;
|
||||
color: #999999;
|
||||
font-size: 14px;
|
||||
"
|
||||
>
|
||||
支持MP3 类型文件,大小不超过100M
|
||||
</span>
|
||||
</a-upload>
|
||||
</div> -->
|
||||
</div>
|
||||
</template>
|
||||
<template v-else-if="title.name == '计费标准信息'">
|
||||
|
@ -167,12 +85,14 @@
|
|||
</div>
|
||||
<div class="form">
|
||||
<span>计费标准</span>
|
||||
<!-- :formatter="limitNumber"
|
||||
:parser="limitNumber" -->
|
||||
<a-input-number
|
||||
v-model:value="price"
|
||||
:min="0"
|
||||
:max="9999"
|
||||
:formatter="limitNumber"
|
||||
:parser="limitNumber"
|
||||
:step="0.01"
|
||||
string-mode
|
||||
placeholder="请填写计费标准,单位为元"
|
||||
/>
|
||||
</div>
|
||||
|
@ -248,6 +168,7 @@
|
|||
import mybus from '@/myplugins/mybus'
|
||||
import upload from '@/views/components/upload'
|
||||
import { message } from 'ant-design-vue'
|
||||
import { getCategoryTreePage } from '@/api/personalCenter'
|
||||
// import { baseURL } from '@/config'
|
||||
const props = defineProps({
|
||||
refData: { type: Object, default: null },
|
||||
|
@ -256,11 +177,32 @@
|
|||
imgList: { type: Array, default: null },
|
||||
})
|
||||
const data = ref({
|
||||
list: props.refData.children.filter((item) => item.name === '使用方式')[0]
|
||||
.children,
|
||||
list: [],
|
||||
freightBasis: [],
|
||||
commonProblem: [],
|
||||
})
|
||||
let arr = props.refData.children.filter((item) => item.name !== '常见问题')
|
||||
data.value.list = []
|
||||
arr.forEach((val) => {
|
||||
val.children.forEach((item) => {
|
||||
if (item.isLinkToDic === 'true' && item.linkValue) {
|
||||
getCategoryTreePage({
|
||||
page: 1,
|
||||
limit: 20,
|
||||
dictTypeId: item.linkValue,
|
||||
deFlage: 0,
|
||||
}).then((res) => {
|
||||
// console.log(res.data.data)
|
||||
if (item.type === 'radio') {
|
||||
item.options = res.data.data.list.map((radio) => radio.dictLabel)
|
||||
}
|
||||
data.value.list.push(item)
|
||||
})
|
||||
} else {
|
||||
data.value.list.push(item)
|
||||
}
|
||||
})
|
||||
})
|
||||
if (props.dataFrom) {
|
||||
console.log(props.dataFrom, data.value.list)
|
||||
props.dataFrom.infoList.forEach((item) => {
|
||||
|
@ -277,17 +219,15 @@
|
|||
const question = ref('')
|
||||
const answer = ref('')
|
||||
const plainOptions = ['一次性买断', '按调用次数', '按并发路数', '按年计费']
|
||||
const plainOptions2 = ['GET', 'POST']
|
||||
const plainOptions3 = ['是', '否']
|
||||
const limitNumber = (value) => {
|
||||
if (typeof value === 'string') {
|
||||
return !isNaN(Number(value)) ? value.replace(/\./g, '') : 0
|
||||
} else if (typeof value === 'number') {
|
||||
return !isNaN(value) ? String(value).replace(/\./g, '') : 0
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
}
|
||||
// const limitNumber = (value) => {
|
||||
// if (typeof value === 'string') {
|
||||
// return !isNaN(Number(value)) ? value.replace(/\./g, '') : 0
|
||||
// } else if (typeof value === 'number') {
|
||||
// return !isNaN(value) ? String(value).replace(/\./g, '') : 0
|
||||
// } else {
|
||||
// return 0
|
||||
// }
|
||||
// }
|
||||
const add = () => {
|
||||
if (type.value.length > 0 && price.value > 0 && desc.value.length > 0) {
|
||||
data.value.freightBasis.push({
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<div
|
||||
v-for="(item, index) in dataList"
|
||||
:key="item.attrType"
|
||||
:style="styleFunction(item.type)"
|
||||
:style="styleFunction(item.type, item.attrType)"
|
||||
>
|
||||
<a-form-item :label="item.attrType" v-if="item.type == 'input'">
|
||||
<a-input
|
||||
|
@ -140,9 +140,17 @@
|
|||
let applicationDataList = ref([])
|
||||
let indexSwitch = ref()
|
||||
//样式修改
|
||||
function styleFunction(type) {
|
||||
function styleFunction(type, attrType) {
|
||||
if (type == 'select' || type == 'radio') {
|
||||
return 'display: inline-block;width: 50%;'
|
||||
if (attrType == '服务商' || attrType == '服务商联系人') {
|
||||
if (attrType == '服务商联系人') {
|
||||
return 'display: inline-block;width: 45%;margin-left: 30px;'
|
||||
} else {
|
||||
return 'display: inline-block;width: 45%;'
|
||||
}
|
||||
} else {
|
||||
return 'display: inline-block;width: 50%;'
|
||||
}
|
||||
}
|
||||
}
|
||||
const props = defineProps({
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="add">添加更多算法优势</div>
|
||||
<div class="add">添加更多应用场景</div>
|
||||
<div class="name">
|
||||
<span>应用场景名称</span>
|
||||
<a-input
|
||||
|
@ -47,7 +47,7 @@
|
|||
v-model:value="value2"
|
||||
:showCount="true"
|
||||
:maxlength="200"
|
||||
placeholder="请填写应用场景名称+应用场景场景+应用场景两点+应用场景作用"
|
||||
placeholder="请填写应用场景名称+应用场景场景+应用场景亮点+应用场景作用"
|
||||
/>
|
||||
</div>
|
||||
<div class="dec upload" :key="showKey">
|
||||
|
|
|
@ -0,0 +1,247 @@
|
|||
<template>
|
||||
<div class="application-associated-components">
|
||||
<div class="title">
|
||||
<div></div>
|
||||
<div>{{ props.refData.name }}</div>
|
||||
<div></div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="items" v-show="data.length > 0">
|
||||
<div class="item" v-for="(val, index) in data" :key="index">
|
||||
<p>
|
||||
<span>关联组件-{{ index + 1 }}</span>
|
||||
<span></span>
|
||||
</p>
|
||||
<p>
|
||||
<span>关联组件名称</span>
|
||||
<span>{{ val.name }}</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>关联组件描述</span>
|
||||
<span>{{ val.desc }}</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>关联组件地址</span>
|
||||
<span>{{ val.url }}</span>
|
||||
</p>
|
||||
<div class="del">
|
||||
<i class="delImg" @click="del(index)"></i>
|
||||
<div @click="del(index)">删除</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="add">添加更多关联组件</div>
|
||||
<div class="name">
|
||||
<span>关联组件名称</span>
|
||||
<a-input
|
||||
v-model:value="value"
|
||||
:maxlength="24"
|
||||
placeholder="请填写关联组件名称_关联组件描述热词,不超过24个字符"
|
||||
/>
|
||||
</div>
|
||||
<div class="dec">
|
||||
<span>关联组件描述</span>
|
||||
<a-textarea
|
||||
v-model:value="value2"
|
||||
:showCount="true"
|
||||
:maxlength="200"
|
||||
placeholder="请填写关联组件名称+关联组件场景+关联组件亮点+关联组件作用"
|
||||
/>
|
||||
</div>
|
||||
<div class="dec upload" :key="showKey">
|
||||
<span>关联组件地址</span>
|
||||
<a-input
|
||||
v-model:value="value3"
|
||||
:maxlength="50"
|
||||
placeholder="请填写关联组件地址,不超过50个字符"
|
||||
/>
|
||||
</div>
|
||||
<div class="submit">
|
||||
<a-button type="primary" @click="add()">提交</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, defineProps } from 'vue'
|
||||
import mybus from '@/myplugins/mybus'
|
||||
import { message } from 'ant-design-vue'
|
||||
const props = defineProps({
|
||||
refData: { type: Object, default: null },
|
||||
dataFrom: { type: Array, default: null },
|
||||
})
|
||||
const value = ref('')
|
||||
const value2 = ref('')
|
||||
const value3 = ref('')
|
||||
const data = ref([])
|
||||
const showKey = ref(0)
|
||||
// const fileList = ref([])
|
||||
if (props.dataFrom) {
|
||||
console.log(props.dataFrom)
|
||||
props.dataFrom.infoList.forEach((item) => {
|
||||
if (item.attrType === props.refData.name) {
|
||||
data.value = JSON.parse(item.attrValue)
|
||||
}
|
||||
})
|
||||
}
|
||||
const add = () => {
|
||||
if (
|
||||
value.value.length > 0 &&
|
||||
value2.value.length > 0 &&
|
||||
value3.value.length > 0
|
||||
) {
|
||||
data.value.push({
|
||||
name: value.value,
|
||||
desc: value2.value,
|
||||
url: value3.value,
|
||||
})
|
||||
mybus.emit('chageDataFrom', {
|
||||
attrType: props.refData.name,
|
||||
attrValue: JSON.stringify(data.value),
|
||||
delFlag: 0,
|
||||
})
|
||||
value.value = ''
|
||||
value2.value = ''
|
||||
value3.value = ''
|
||||
showKey.value++
|
||||
} else {
|
||||
message.warning('请填写完整')
|
||||
}
|
||||
}
|
||||
const del = (index) => {
|
||||
data.value.splice(index, 1)
|
||||
mybus.emit('chageDataFrom', {
|
||||
attrType: props.refData.name,
|
||||
attrValue: JSON.stringify(data.value),
|
||||
delFlag: 0,
|
||||
})
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.application-associated-components {
|
||||
height: 680px;
|
||||
overflow: scroll;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding: 50px 100px 25px;
|
||||
& > div {
|
||||
width: 100%;
|
||||
}
|
||||
.title {
|
||||
color: #333333;
|
||||
font-size: 22px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 25px;
|
||||
div:first-child,
|
||||
div:last-child {
|
||||
width: 265px;
|
||||
height: 1px;
|
||||
background: #f0f0f0;
|
||||
}
|
||||
div:nth-child(2) {
|
||||
margin: 0 30px;
|
||||
}
|
||||
}
|
||||
.main {
|
||||
margin-top: 25px;
|
||||
.items {
|
||||
background: #fafafa;
|
||||
padding: 10px;
|
||||
p {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
span:nth-of-type(1) {
|
||||
width: 200px;
|
||||
}
|
||||
span:nth-of-type(2) {
|
||||
width: 100%;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
p:nth-of-type(1) > span:nth-of-type(1) {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
}
|
||||
.del {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
.delImg {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
width: 16px;
|
||||
height: 18px;
|
||||
background: url(~@/assets/home/sf_del.png) no-repeat;
|
||||
margin-right: 5px;
|
||||
}
|
||||
div {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
.add {
|
||||
margin-top: 10px;
|
||||
font-size: 16px;
|
||||
color: #007efb;
|
||||
}
|
||||
.name,
|
||||
.dec {
|
||||
margin-top: 20px;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
span {
|
||||
width: 120px;
|
||||
}
|
||||
:deep(.ant-input) {
|
||||
resize: none;
|
||||
width: 570px;
|
||||
}
|
||||
:deep(.ant-input-textarea) {
|
||||
width: 570px;
|
||||
}
|
||||
:deep(.ant-radio-group) {
|
||||
width: 570px;
|
||||
}
|
||||
:deep(.ant-input-number) {
|
||||
width: 200px;
|
||||
}
|
||||
.ant-btn {
|
||||
width: 100px;
|
||||
height: 30px;
|
||||
text-align: center;
|
||||
background: #d9ebff;
|
||||
color: #0087ff;
|
||||
border: 1px solid #0087ff;
|
||||
border-radius: 6px;
|
||||
}
|
||||
}
|
||||
.upload span:nth-of-type(2) {
|
||||
width: unset;
|
||||
}
|
||||
.submit {
|
||||
margin-top: 40px;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
.ant-btn {
|
||||
width: 80px;
|
||||
height: 28px;
|
||||
text-align: center;
|
||||
background: #d9ebff;
|
||||
color: #0087ff;
|
||||
border: 1px solid #0087ff;
|
||||
border-radius: 6px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
:deep(.ant-image-img) {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: contain;
|
||||
}
|
||||
// .application-associated-components::-webkit-scrollbar {
|
||||
// display: none;
|
||||
// }
|
||||
</style>
|
|
@ -151,8 +151,16 @@
|
|||
let plainOptions = ref([])
|
||||
//样式修改
|
||||
function styleFunction(type, attrType) {
|
||||
if (type == 'select' || type == 'radio' || attrType == '部门联系人电话') {
|
||||
return 'display: inline-block;width: 45%;'
|
||||
if (type == 'select' || type == 'radio') {
|
||||
if (attrType == '部门联系人' || attrType == '归属部门') {
|
||||
if (attrType == '部门联系人') {
|
||||
return 'display: inline-block;width: 45%;margin-left: 30px;'
|
||||
} else {
|
||||
return 'display: inline-block;width: 45%;'
|
||||
}
|
||||
} else {
|
||||
return 'display: inline-block;width: 50%;'
|
||||
}
|
||||
}
|
||||
}
|
||||
const props = defineProps({
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
v-model:value="value2"
|
||||
:showCount="true"
|
||||
:maxlength="200"
|
||||
placeholder="请填写功能名称+功能场景+功能两点+功能作用"
|
||||
placeholder="请填写功能名称+功能场景+功能亮点+功能作用"
|
||||
/>
|
||||
</div>
|
||||
<div class="dec upload" :key="showKey">
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: hisense.liangjunhua
|
||||
* @Date: 2022-06-08 11:32:22
|
||||
* @LastEditors: hisense.liangjunhua
|
||||
* @LastEditTime: 2022-06-13 12:01:31
|
||||
* @LastEditTime: 2022-06-14 10:39:37
|
||||
* @Description: 算法详情页
|
||||
-->
|
||||
<template>
|
||||
|
@ -69,16 +69,16 @@
|
|||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import AlgorithmTopDetails from '@/views/detailsAll/components/AlgorithmTopDetails.vue'
|
||||
import AlgorithmNavigation from '@/views/detailsAll/components/AlgorithmNavigation.vue'
|
||||
import AlgorithmDisplay from '@/views/detailsAll/components/AlgorithmDisplay.vue'
|
||||
import AlgorithmAdvantage from '@/views/detailsAll/components/AlgorithmAdvantage.vue'
|
||||
import AlgorithmOnTrial from '@/views/detailsAll/components/AlgorithmOnTrial.vue'
|
||||
import AlgorithmApplicationScenarios from '@/views/detailsAll/components/AlgorithmApplicationScenarios'
|
||||
import AlgorithmApplicationCase from '@/views/detailsAll/components/AlgorithmApplicationCase'
|
||||
import AlgorithmUsageMode from '@/views/detailsAll/components/AlgorithmUsageMode' //使用方式
|
||||
import AlgorithmChargingStandard from '@/views/detailsAll/components/AlgorithmChargingStandard' //计费标准
|
||||
import AlgorithmCommonProblem from '@/views/detailsAll/components/AlgorithmCommonProblem' //常见问题
|
||||
import AlgorithmTopDetails from '@/views/detailsAll/components/Algorithm/AlgorithmTopDetails.vue'
|
||||
import AlgorithmNavigation from '@/views/detailsAll/components/Algorithm/AlgorithmNavigation.vue'
|
||||
import AlgorithmDisplay from '@/views/detailsAll/components/Algorithm/AlgorithmDisplay.vue'
|
||||
import AlgorithmAdvantage from '@/views/detailsAll/components/Algorithm/AlgorithmAdvantage.vue'
|
||||
import AlgorithmOnTrial from '@/views/detailsAll/components/Algorithm/AlgorithmOnTrial.vue'
|
||||
import AlgorithmApplicationScenarios from '@/views/detailsAll/components/Algorithm/AlgorithmApplicationScenarios'
|
||||
import AlgorithmApplicationCase from '@/views/detailsAll/components/Algorithm/AlgorithmApplicationCase'
|
||||
import AlgorithmUsageMode from '@/views/detailsAll/components/Algorithm/AlgorithmUsageMode' //使用方式
|
||||
import AlgorithmChargingStandard from '@/views/detailsAll/components/Algorithm/AlgorithmChargingStandard' //计费标准
|
||||
import AlgorithmCommonProblem from '@/views/detailsAll/components/Algorithm/AlgorithmCommonProblem' //常见问题
|
||||
import { ref, onMounted, onBeforeUnmount, reactive } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { updateVisits, selectOne } from '@/api/home'
|
||||
|
@ -166,6 +166,6 @@
|
|||
left: 0;
|
||||
}
|
||||
.fixed2 > div:nth-of-type(3) {
|
||||
margin-top: 84px;
|
||||
margin-top: 0.84rem;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -0,0 +1,163 @@
|
|||
<!--
|
||||
* @Author: hisense.liangjunhua
|
||||
* @Date: 2022-06-08 11:32:22
|
||||
* @LastEditors: hisense.liangjunhua
|
||||
* @LastEditTime: 2022-06-15 18:10:36
|
||||
* @Description: 应用详情页
|
||||
-->
|
||||
<template>
|
||||
<div class="application-details" :class="{ fixed2: scrollTop >= 600 }">
|
||||
<!-- 头部基本信息 -->
|
||||
<application-top-details
|
||||
:dataList="dataList.data"
|
||||
></application-top-details>
|
||||
<!-- 导航 -->
|
||||
<application-navigation
|
||||
:dataList="dataList.data"
|
||||
:class="{ fixed: scrollTop >= 600 }"
|
||||
:selectNow="selectNow"
|
||||
></application-navigation>
|
||||
<!-- 应用展示 视频 -->
|
||||
<application-presentation
|
||||
:dataList="dataList.data"
|
||||
id="application-presentation"
|
||||
class="scrollBox"
|
||||
></application-presentation>
|
||||
<!-- 关联组件 -->
|
||||
<application-associated-components
|
||||
:dataList="dataList.data"
|
||||
id="application-associated-components"
|
||||
class="scrollBox"
|
||||
></application-associated-components>
|
||||
<!-- 功能介绍-->
|
||||
<application-function-intorduction
|
||||
:dataList="dataList.data"
|
||||
id="function-introduction"
|
||||
class="scrollBox"
|
||||
></application-function-intorduction>
|
||||
<!-- 使用能力 -->
|
||||
<application-ability-toise
|
||||
:dataList="dataList.data"
|
||||
id="ability-to-use"
|
||||
class="scrollBox"
|
||||
></application-ability-toise>
|
||||
<!-- 部署与安全-->
|
||||
<application-deployment-and-security
|
||||
:dataList="dataList.data"
|
||||
id="deployment-and-security"
|
||||
class="scrollBox"
|
||||
></application-deployment-and-security>
|
||||
<!-- 归属部门与服务商-->
|
||||
<application-owning-department-and-service-provider
|
||||
:dataList="dataList.data"
|
||||
id="department-and-service-provider"
|
||||
class="scrollBox"
|
||||
></application-owning-department-and-service-provider>
|
||||
<!-- 常见问题-->
|
||||
<application-common-problem
|
||||
:dataList="dataList.data"
|
||||
id="common-problem"
|
||||
class="scrollBox"
|
||||
></application-common-problem>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import ApplicationAbilityToise from '@/views/detailsAll/components/Application/ApplicationAbilityToise.vue'
|
||||
import ApplicationAssociatedComponents from '@/views/detailsAll/components/Application/ApplicationAssociatedComponents.vue'
|
||||
import ApplicationOwningDepartmentAndServiceProvider from '@/views/detailsAll/components/Application/ApplicationOwningDepartmentAndServiceProvider.vue'
|
||||
import ApplicationFunctionIntorduction from '@/views/detailsAll/components/Application/ApplicationFunctionIntorduction.vue'
|
||||
import ApplicationDeploymentAndSecurity from '@/views/detailsAll/components/Application/ApplicationDeploymentAndSecurity.vue'
|
||||
import ApplicationTopDetails from '@/views/detailsAll/components/Application/ApplicationTopDetails.vue'
|
||||
import ApplicationNavigation from '@/views/detailsAll/components/Application/ApplicationNavigation.vue'
|
||||
import ApplicationPresentation from '@/views/detailsAll/components/Application/ApplicationPresentation.vue'
|
||||
import ApplicationCommonProblem from '@/views/detailsAll/components/Application/ApplicationCommonProblem' //常见问题
|
||||
import { ref, onMounted, onBeforeUnmount, reactive } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { updateVisits, selectOne } from '@/api/home'
|
||||
import mybus from '@/myplugins/mybus'
|
||||
const router = useRouter()
|
||||
const scrollTop = ref(0)
|
||||
const domArr = ref([])
|
||||
const selectNow = ref('')
|
||||
const dataList = reactive({ data: {} })
|
||||
const id = router.currentRoute.value.query.id
|
||||
const obj = JSON.parse(window.sessionStorage.getItem('preview'))
|
||||
document.documentElement.style.transition = 'all 0.3s ease'
|
||||
document.documentElement.scrollTop = 0
|
||||
document.body.style.transition = 'all 0.3s ease'
|
||||
document.body.scrollTop = 0
|
||||
mybus.on('flyToView', (id) => {
|
||||
let top = document.querySelector('#' + id).offsetTop - 50
|
||||
// console.log(top, document.querySelector('#' + id).offsetTop)
|
||||
document.documentElement.scrollTop = top
|
||||
document.body.scrollTop = top
|
||||
})
|
||||
onMounted(() => {
|
||||
// console.clear()
|
||||
window.addEventListener('scroll', () => {
|
||||
domArr.value = document.querySelectorAll('.scrollBox')
|
||||
scrollTop.value =
|
||||
document.documentElement.scrollTop || document.body.scrollTop
|
||||
for (let i = 0; i < domArr.value.length; i++) {
|
||||
if (i === 0) {
|
||||
if (scrollTop.value <= domArr.value[i + 1].offsetTop - 50) {
|
||||
selectNow.value = domArr.value[i].id
|
||||
}
|
||||
} else if (i == domArr.value.length - 1) {
|
||||
if (scrollTop.value >= domArr.value[i].offsetTop - 50) {
|
||||
selectNow.value = domArr.value[i].id
|
||||
}
|
||||
} else {
|
||||
if (
|
||||
scrollTop.value > domArr.value[i].offsetTop - 50 &&
|
||||
scrollTop.value < domArr.value[i + 1].offsetTop - 50
|
||||
) {
|
||||
selectNow.value = domArr.value[i].id
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
const init = (id) => {
|
||||
if (id) {
|
||||
selectOne(id).then((res) => {
|
||||
// console.clear()
|
||||
dataList.data = res.data.data
|
||||
console.log('初始化详情页=========================>', dataList.data)
|
||||
const arrList = ref([])
|
||||
arrList.value = JSON.parse(window.sessionStorage.getItem('visits'))
|
||||
if (arrList.value && arrList.value.indexOf(id) === -1) {
|
||||
arrList.value.push(id)
|
||||
updateVisits({
|
||||
id: res.data.data.id,
|
||||
visits: res.data.data.visits || '0',
|
||||
}).then(() => {
|
||||
window.sessionStorage.setItem(
|
||||
'visits',
|
||||
JSON.stringify(arrList.value)
|
||||
)
|
||||
})
|
||||
}
|
||||
})
|
||||
} else if (obj) {
|
||||
dataList.data = obj
|
||||
console.log('预览==============', obj)
|
||||
}
|
||||
}
|
||||
init(id)
|
||||
onBeforeUnmount(() => {
|
||||
mybus.off('flyToView')
|
||||
})
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.fixed {
|
||||
position: fixed;
|
||||
z-index: 2000;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
.fixed2 > div:nth-of-type(3) {
|
||||
margin-top: 0.84rem;
|
||||
}
|
||||
</style>
|
|
@ -60,12 +60,45 @@
|
|||
obj.attrValue = JSON.parse(obj.attrValue)
|
||||
// dataFrom.value = obj
|
||||
obj.attrValue.map((item) => {
|
||||
let params = {
|
||||
title: item.type,
|
||||
content: item.desc,
|
||||
value: item.price,
|
||||
time: '/年起',
|
||||
unit: '¥',
|
||||
let params = {}
|
||||
switch (item.type) {
|
||||
case '一次性买断':
|
||||
params = {
|
||||
title: item.type,
|
||||
content: item.desc,
|
||||
value: item.price,
|
||||
time: '/元',
|
||||
unit: '¥',
|
||||
}
|
||||
break
|
||||
case '按调用次数':
|
||||
params = {
|
||||
title: item.type,
|
||||
content: item.desc,
|
||||
value: item.price,
|
||||
time: '/次',
|
||||
unit: '¥',
|
||||
}
|
||||
break
|
||||
|
||||
case '按并发路数':
|
||||
params = {
|
||||
title: item.type,
|
||||
content: item.desc,
|
||||
value: item.price,
|
||||
time: '/路',
|
||||
unit: '¥',
|
||||
}
|
||||
break
|
||||
case '按年计费':
|
||||
params = {
|
||||
title: item.type,
|
||||
content: item.desc,
|
||||
value: item.price,
|
||||
time: '/年',
|
||||
unit: '¥',
|
||||
}
|
||||
break
|
||||
}
|
||||
dataFrom.value.push(params)
|
||||
})
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: hisense.liangjunhua
|
||||
* @Date: 2022-06-08 14:54:01
|
||||
* @LastEditors: hisense.liangjunhua
|
||||
* @LastEditTime: 2022-06-13 15:26:56
|
||||
* @LastEditTime: 2022-06-15 18:32:23
|
||||
* @Description: 算法详情页导航
|
||||
-->
|
||||
<template>
|
||||
|
@ -93,6 +93,10 @@
|
|||
item.show = true
|
||||
}
|
||||
})
|
||||
console.log(
|
||||
'props.dataList.infoList==============>',
|
||||
navList.value.filter((item) => item.name === list.value[0])
|
||||
)
|
||||
select.value = navList.value.filter(
|
||||
(item) => item.name === list.value[0]
|
||||
)[0].key
|
||||
|
@ -133,9 +137,11 @@
|
|||
item.show = true
|
||||
}
|
||||
})
|
||||
select.value = navList.value.filter(
|
||||
(item) => item.name === list.value[0]
|
||||
)[0].key
|
||||
if (list.value.length > 0) {
|
||||
select.value = navList.value.filter(
|
||||
(item) => item.name === list.value[0]
|
||||
)[0].key
|
||||
}
|
||||
console.log('11111111111111111111111111', list.value, navList.value)
|
||||
}
|
||||
}
|
|
@ -10,9 +10,13 @@
|
|||
<div class="left">
|
||||
<div class="top">
|
||||
<span class="name">{{ props.dataList.name }}</span>
|
||||
<span class="label">{{ props.dataList.type }}</span>
|
||||
<span class="label">{{ props.dataList.shareType }}</span>
|
||||
<span class="label">{{ props.dataList.shareCondition }}</span>
|
||||
<div class="label-content">
|
||||
<p class="lable-father">
|
||||
<span class="label">{{ props.dataList.type }}</span>
|
||||
<span class="label">{{ props.dataList.shareType }}</span>
|
||||
<span class="label">{{ props.dataList.shareCondition }}</span>
|
||||
</p>
|
||||
</div>
|
||||
<!-- <span class="label">免费</span> -->
|
||||
</div>
|
||||
<div class="main">
|
||||
|
@ -49,7 +53,7 @@
|
|||
})
|
||||
const router = useRouter()
|
||||
const applicationArea = ref('')
|
||||
// 加入申购车
|
||||
//加入申购车
|
||||
const addShoppingCart = () => {
|
||||
console.log('加入申购车==================>', props.dataList)
|
||||
sgcInsert({
|
||||
|
@ -62,7 +66,7 @@
|
|||
mybus.emit('getSgcNum')
|
||||
})
|
||||
}
|
||||
// 立即申请
|
||||
//立即申请
|
||||
function toView() {
|
||||
// window.open(newpage.href, '_blank')
|
||||
router.push({
|
||||
|
@ -106,8 +110,9 @@
|
|||
display: flex;
|
||||
justify-content: center;
|
||||
.left {
|
||||
width: 700px;
|
||||
width: 7.2rem;
|
||||
color: #fff;
|
||||
margin-right: 0.8rem;
|
||||
.top {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
@ -115,13 +120,22 @@
|
|||
font-size: 14px;
|
||||
}
|
||||
.name {
|
||||
max-width: 330px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
// max-width: 330px;
|
||||
// overflow: hidden;
|
||||
// text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
font-size: 40px;
|
||||
margin-right: 20px;
|
||||
}
|
||||
.label-content {
|
||||
position: relative;
|
||||
}
|
||||
.lable-father {
|
||||
position: absolute;
|
||||
min-width: 2.5rem;
|
||||
right: -2.5rem;
|
||||
top: 0;
|
||||
}
|
||||
.label {
|
||||
padding: 1px 10px;
|
||||
margin-right: 10px;
|
|
@ -62,6 +62,7 @@
|
|||
|
||||
<script setup>
|
||||
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
|
||||
import { pinyin } from 'pinyin-pro'
|
||||
import { ref, defineProps, watch } from 'vue'
|
||||
let dataFrom = ref({
|
||||
title: '使用方式',
|
||||
|
@ -151,12 +152,20 @@
|
|||
}
|
||||
)
|
||||
function technical() {
|
||||
console.log('dataFrom.value.link', dataFrom.value.link)
|
||||
window.open(
|
||||
window.SITE_CONFIG.previewUrl +
|
||||
'hisense_office/onlinePreview?url=' +
|
||||
btoa(encodeURI(dataFrom.value.link))
|
||||
)
|
||||
|
||||
// 拼接路径
|
||||
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)
|
||||
// window.open(
|
||||
// window.SITE_CONFIG.previewUrl +
|
||||
// 'hisense_office/onlinePreview?url=' +
|
||||
// btoa(encodeURI(dataFrom.value.link))
|
||||
// )
|
||||
}
|
||||
</script>
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
<a-image
|
||||
:width="510"
|
||||
:height="340"
|
||||
src="https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png"
|
||||
:src="responseUrl"
|
||||
/>
|
||||
<a-upload
|
||||
v-model:file-list="fileList"
|
||||
|
@ -76,43 +76,63 @@
|
|||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref } from 'vue'
|
||||
// import { paddleocr } from '@/api/file'
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { paddleocr } from '@/api/file'
|
||||
import { message } from 'ant-design-vue'
|
||||
const uploadUrl = window.SITE_CONFIG.apiURL + '/upload'
|
||||
let fileList = ref([])
|
||||
// const responseUrl = ref('')
|
||||
const imageResult = ref('')
|
||||
const imageResult0 = ref('')
|
||||
const imageResult1 = ref('')
|
||||
const menuOpenKeys2 = ref(['全文还原'])
|
||||
// const checkImage = () => {
|
||||
// getUrlBase64(responseUrl.value, 'png', (base64) => {
|
||||
// console.log('1111111', base64)
|
||||
// const param = {
|
||||
// img: base64.split('base64,')[1],
|
||||
// }
|
||||
// paddleocr(param).then((res) => {
|
||||
// // wordValue.value = res.data
|
||||
// console.log('1111', res.data)
|
||||
// // imageResult.value = res.data.output
|
||||
// // imageResult0.value = res.data.output
|
||||
// // imageResult1.value = res.data.output
|
||||
// })
|
||||
// })
|
||||
// }
|
||||
// const getUrlBase64 = (url, ext, callback) => {
|
||||
// var canvas = document.createElement('canvas') //创建canvas DOM元素
|
||||
// var ctx = canvas.getContext('2d')
|
||||
// var img = new Image()
|
||||
// img.crossOrigin = 'Anonymous'
|
||||
// img.src = url
|
||||
// img.onload = function () {
|
||||
// canvas.height = img.height //指定画板的高度,自定义
|
||||
// canvas.width = img.width //指定画板的宽度,自定义
|
||||
// ctx.drawImage(img, 0, 0, img.width, img.height) //参数可自定义
|
||||
// var dataURL = canvas.toDataURL('image/' + ext)
|
||||
// callback.call(this, dataURL) //回掉函数获取Base64编码
|
||||
// canvas = null
|
||||
// }
|
||||
// }
|
||||
let responseUrl = ref('static/image/test.jpg')
|
||||
const handleChange = (info) => {
|
||||
debugger;
|
||||
if (info.file.status !== 'uploading') {
|
||||
console.log(info.file, info.fileList)
|
||||
}
|
||||
if (info.file.status === 'done') {
|
||||
message.success(`${info.file.name} file uploaded successfully`)
|
||||
responseUrl.value = info.file.response.data
|
||||
checkImage()
|
||||
} else if (info.file.status === 'error') {
|
||||
message.error(`${info.file.name} file upload failed.`)
|
||||
}
|
||||
}
|
||||
const checkImage = () => {
|
||||
getUrlBase64(responseUrl.value, 'jpg', (base64) => {
|
||||
console.log('1111111', base64)
|
||||
const param = {
|
||||
img: base64.split('base64,')[1],
|
||||
}
|
||||
paddleocr(param).then((res) => {
|
||||
// wordValue.value = res.data
|
||||
console.log('1111', res.data)
|
||||
imageResult.value = res.data.output
|
||||
imageResult0.value = res.data.output
|
||||
imageResult1.value = res.data.output
|
||||
})
|
||||
})
|
||||
}
|
||||
const getUrlBase64 = (url, ext, callback) => {
|
||||
var canvas = document.createElement('canvas') //创建canvas DOM元素
|
||||
var ctx = canvas.getContext('2d')
|
||||
var img = new Image()
|
||||
img.crossOrigin = 'Anonymous'
|
||||
img.src = url
|
||||
img.onload = function () {
|
||||
canvas.height = img.height //指定画板的高度,自定义
|
||||
canvas.width = img.width //指定画板的宽度,自定义
|
||||
ctx.drawImage(img, 0, 0, img.width, img.height) //参数可自定义
|
||||
var dataURL = canvas.toDataURL('image/' + ext)
|
||||
callback.call(this, dataURL) //回掉函数获取Base64编码
|
||||
canvas = null
|
||||
}
|
||||
}
|
||||
onMounted(() => {
|
||||
checkImage()
|
||||
})
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.evaluate3 {
|
|
@ -0,0 +1,136 @@
|
|||
<!--使用能力-->
|
||||
<template>
|
||||
<div class="application-ability-toise" v-if="flase">
|
||||
<div class="title">
|
||||
<DetalsTitle
|
||||
:title="dataFrom.title"
|
||||
:type="dataFrom.englishTitle"
|
||||
></DetalsTitle>
|
||||
</div>
|
||||
<div class="content">
|
||||
<div v-for="(item, index) in dataFrom.content" :key="index" class="card">
|
||||
<div class="card-title">{{ item.title }}</div>
|
||||
<div class="card-content">
|
||||
<div
|
||||
v-for="(cardContentItem, cardContentIndex) in item.children"
|
||||
:key="cardContentIndex"
|
||||
class="card-content-bottom"
|
||||
>
|
||||
<span></span>
|
||||
{{ cardContentItem }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from 'vue'
|
||||
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
|
||||
let dataFrom = ref({
|
||||
title: '使用能力',
|
||||
englishTitle: 'ABILITY',
|
||||
content: [
|
||||
{
|
||||
title: '组件服务',
|
||||
children: [
|
||||
'能力名称一',
|
||||
'能力名称二',
|
||||
'能力名称三',
|
||||
'能力名称四',
|
||||
'能力名称一',
|
||||
'能力名称一',
|
||||
'能力名称一',
|
||||
'能力名称八',
|
||||
],
|
||||
},
|
||||
{
|
||||
title: '数据资源',
|
||||
children: [
|
||||
'能力名称一',
|
||||
'能力名称二',
|
||||
'能力名称三',
|
||||
'能力名称四',
|
||||
'能力名称一',
|
||||
'能力名称一',
|
||||
'能力名称一',
|
||||
'能力名称八',
|
||||
],
|
||||
},
|
||||
{
|
||||
title: '基础设施',
|
||||
children: [
|
||||
'能力名称一',
|
||||
'能力名称二',
|
||||
'能力名称三',
|
||||
'能力名称四',
|
||||
'能力名称一',
|
||||
'能力名称一',
|
||||
'能力名称一',
|
||||
'能力名称八',
|
||||
],
|
||||
},
|
||||
],
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.application-ability-toise {
|
||||
padding: 1.4rem 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
background: #f7f8fa;
|
||||
.title {
|
||||
margin-bottom: 0.4rem;
|
||||
}
|
||||
.content {
|
||||
display: flex;
|
||||
width: 13rem;
|
||||
.card {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 4.2rem;
|
||||
align-items: space-between;
|
||||
padding: 0.3rem 0.35rem 0.3rem 0.35rem;
|
||||
background: #ffffff;
|
||||
margin-right: 0.2rem;
|
||||
border: 0.01rem #e4e6f5 solid;
|
||||
border-radius: 0.1rem;
|
||||
.card-title {
|
||||
margin: auto;
|
||||
width: 1.3rem;
|
||||
height: 0.45rem;
|
||||
font-size: 0.22rem;
|
||||
color: #917567;
|
||||
background: url('~@/assets/detailsAll/yy_bg1.png') no-repeat;
|
||||
background-size: 100%;
|
||||
text-align: center;
|
||||
line-height: 0.45rem;
|
||||
}
|
||||
.card-content {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
.card-content-bottom {
|
||||
text-align: center;
|
||||
margin-top: 0.3rem;
|
||||
color: #666;
|
||||
font-size: 0.18rem;
|
||||
span {
|
||||
display: inline-block;
|
||||
width: 0.12rem;
|
||||
height: 0.12rem;
|
||||
margin-right: 0.1rem;
|
||||
background: url('~@/assets/detailsAll/yy_dian.png') no-repeat;
|
||||
background-size: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.card:nth-child(3n + 3) {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,150 @@
|
|||
<!--
|
||||
* @Author: hisense.liangjunhua
|
||||
* @Date: 2022-06-08 16:06:10
|
||||
* @LastEditors: hisense.liangjunhua
|
||||
* @LastEditTime: 2022-06-15 20:44:47
|
||||
* @Description: 关联组件
|
||||
-->
|
||||
<template>
|
||||
<div class="application-associated-components" v-if="flag">
|
||||
<detals-title title="关联组件" type="RELEVANCE"></detals-title>
|
||||
<div class="main">
|
||||
<div class="top">
|
||||
<div v-for="val in data" :key="val.id" class="item">
|
||||
<div class="icon" :class="val.icon"></div>
|
||||
<div class="title" @click="goToView(val.url)">{{ val.title }}</div>
|
||||
<a-tooltip>
|
||||
<template #title>{{ val.text }}</template>
|
||||
<div class="text">{{ val.text }}</div>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom"></div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, defineProps, watch } from 'vue'
|
||||
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle.vue'
|
||||
const data = ref([])
|
||||
const props = defineProps({
|
||||
dataList: { type: Object, default: null },
|
||||
})
|
||||
const flag = ref(true)
|
||||
const goToView = (url) => {
|
||||
if (url) {
|
||||
console.log(url)
|
||||
window.open(url, '_blank')
|
||||
}
|
||||
}
|
||||
if (props.dataList.infoList) {
|
||||
let obj = props.dataList.infoList.filter(
|
||||
(item) => item.attrType === '关联组件'
|
||||
)[0]
|
||||
if (!obj) {
|
||||
flag.value = false
|
||||
} else {
|
||||
data.value = []
|
||||
let arr = JSON.parse(obj.attrValue)
|
||||
if (arr.length > 3) {
|
||||
// 截取数组前三位
|
||||
arr = arr.splice(0, 3)
|
||||
}
|
||||
arr.forEach((item, index) => {
|
||||
data.value.push({
|
||||
title: item.name,
|
||||
text: item.desc,
|
||||
url: item.url,
|
||||
icon: 'icon1',
|
||||
id: index,
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
watch(
|
||||
() => props.dataList,
|
||||
(val) => {
|
||||
if (val) {
|
||||
let obj = val.infoList.filter((item) => item.attrType === '关联组件')[0]
|
||||
if (!obj) {
|
||||
flag.value = false
|
||||
} else {
|
||||
data.value = []
|
||||
let arr = JSON.parse(obj.attrValue)
|
||||
if (arr.length > 3) {
|
||||
// 截取数组前三位
|
||||
arr = arr.splice(0, 3)
|
||||
}
|
||||
arr.forEach((item, index) => {
|
||||
data.value.push({
|
||||
title: item.name,
|
||||
text: item.desc,
|
||||
url: item.url,
|
||||
icon: 'icon1',
|
||||
id: index,
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.application-associated-components {
|
||||
padding: 100px 300px 60px;
|
||||
.main {
|
||||
margin-top: 40px;
|
||||
.top {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
.item {
|
||||
width: 424px;
|
||||
padding: 35px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
border: 1px solid #e4e6f5;
|
||||
border-radius: 10px;
|
||||
margin-left: 20px;
|
||||
.icon {
|
||||
width: 82px;
|
||||
height: 82px;
|
||||
}
|
||||
.icon1 {
|
||||
background: url('~@/assets/detailsAll/sf_icon1.png') no-repeat;
|
||||
background-size: 100%;
|
||||
}
|
||||
.icon2 {
|
||||
background: url('~@/assets/detailsAll/sf_icon2.png') no-repeat;
|
||||
background-size: 100%;
|
||||
}
|
||||
.icon3 {
|
||||
background: url('~@/assets/detailsAll/sf_icon3.png') no-repeat;
|
||||
background-size: 100%;
|
||||
}
|
||||
.title {
|
||||
font-size: 22px;
|
||||
margin-top: 25px;
|
||||
text-align: center;
|
||||
}
|
||||
.text {
|
||||
height: 78px;
|
||||
font-size: 18px;
|
||||
line-height: 26px;
|
||||
margin-top: 15px;
|
||||
color: #999;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 3;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
}
|
||||
.item:nth-of-type(1) {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,123 @@
|
|||
<template>
|
||||
<!-- 常见问题 -->
|
||||
<div class="cpmmon-problem" v-if="flag">
|
||||
<div class="title">
|
||||
<DetalsTitle title="常见问题" type="Q&A"></DetalsTitle>
|
||||
</div>
|
||||
<div class="content">
|
||||
<div v-for="(item, index) in dataFrom" :key="index" class="content-son">
|
||||
<div class="content-top">
|
||||
<div class="top-img"></div>
|
||||
<div>{{ item.title }}</div>
|
||||
</div>
|
||||
<div class="content-bottom">
|
||||
<div class="bottom-img"></div>
|
||||
<div>{{ item.answer }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
|
||||
import { ref, defineProps, watch } from 'vue'
|
||||
const flag = ref(true)
|
||||
let dataFrom = ref([])
|
||||
const props = defineProps({
|
||||
dataList: { type: Object, default: null },
|
||||
})
|
||||
if (props.dataList.infoList) {
|
||||
let obj = props.dataList.infoList.filter(
|
||||
(item) => item.attrType === '常见问题'
|
||||
)[0]
|
||||
if (!obj) {
|
||||
flag.value = false
|
||||
} else {
|
||||
obj.attrValue = JSON.parse(obj.attrValue)
|
||||
obj.attrValue.map((item) => {
|
||||
let params = {
|
||||
title: item.question,
|
||||
answer: item.answer,
|
||||
}
|
||||
dataFrom.value.push(params)
|
||||
})
|
||||
}
|
||||
}
|
||||
watch(
|
||||
() => props.dataList,
|
||||
(val) => {
|
||||
if (val) {
|
||||
let obj = val.infoList.filter((item) => item.attrType === '常见问题')[0]
|
||||
if (!obj) {
|
||||
flag.value = false
|
||||
} else {
|
||||
obj.attrValue = JSON.parse(obj.attrValue)
|
||||
obj.attrValue.map((item) => {
|
||||
let params = {
|
||||
title: item.question,
|
||||
answer: item.answer,
|
||||
}
|
||||
dataFrom.value.push(params)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.cpmmon-problem {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding-top: 80px;
|
||||
background: #f7f8fa;
|
||||
.content {
|
||||
width: 1300px;
|
||||
margin: 20px 0px;
|
||||
background: #ffffff;
|
||||
padding: 40px;
|
||||
.content-son {
|
||||
font-size: 20px;
|
||||
margin-bottom: 60px;
|
||||
.content-top {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 20px;
|
||||
line-height: 20px;
|
||||
}
|
||||
.content-bottom {
|
||||
display: flex;
|
||||
line-height: 34px;
|
||||
color: #666666;
|
||||
}
|
||||
.content-top,
|
||||
.content-bottom {
|
||||
div:last-child {
|
||||
width: calc(100% - 54px);
|
||||
}
|
||||
}
|
||||
.top-img {
|
||||
width: 34px;
|
||||
height: 30px;
|
||||
background: url('~@/assets/detailsAll/sf_top_img.png') no-repeat;
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
margin-right: 20px;
|
||||
}
|
||||
.bottom-img {
|
||||
width: 34px;
|
||||
height: 30px;
|
||||
background: url('~@/assets/detailsAll/sf_bottom_img.png') no-repeat;
|
||||
ackground-size: cover;
|
||||
background-position: center;
|
||||
margin-right: 20px;
|
||||
}
|
||||
}
|
||||
.content-son:last-child {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,190 @@
|
|||
<!--部署与安全-->
|
||||
<template>
|
||||
<div class="application-deployment-and-security">
|
||||
<div class="title">
|
||||
<DetalsTitle
|
||||
:title="dataFrom.title"
|
||||
:type="dataFrom.englishTitle"
|
||||
></DetalsTitle>
|
||||
</div>
|
||||
<div class="content">
|
||||
<div
|
||||
v-for="(item, index) in dataFrom.content"
|
||||
:key="index"
|
||||
class="content-card"
|
||||
>
|
||||
<div class="card-title">{{ item.childrenTitle }}</div>
|
||||
<div class="card-content">
|
||||
<div v-for="carditem in item.childrenContent" :key="carditem">
|
||||
<span>{{ carditem.attrType }}:</span>
|
||||
<a-tooltip>
|
||||
<template #title>{{ carditem.attrValue }}</template>
|
||||
<span>{{ carditem.attrValue }}</span>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
|
||||
import { ref, defineProps, watch } from 'vue'
|
||||
|
||||
let dataFrom = ref({
|
||||
title: '部署与安全',
|
||||
englishTitle: 'DEPLOY&SAFE',
|
||||
content: [
|
||||
{
|
||||
childrenTitle: '部署',
|
||||
childrenContent: [],
|
||||
},
|
||||
{
|
||||
childrenTitle: '安全',
|
||||
childrenContent: [],
|
||||
},
|
||||
],
|
||||
})
|
||||
//数据初始化
|
||||
const props = defineProps({
|
||||
dataList: { type: Object, default: null },
|
||||
})
|
||||
if (props.dataList.infoList) {
|
||||
props.dataList.infoList.map((item) => {
|
||||
if (
|
||||
item.attrType === '部署区域' ||
|
||||
item.attrType === '是否统一登录' ||
|
||||
item.attrType === '部署位置'
|
||||
) {
|
||||
dataFrom.value.content[0].childrenContent.push(item)
|
||||
} else if (
|
||||
item.attrType === '是否等保备案' ||
|
||||
item.attrType === '等保定级'
|
||||
) {
|
||||
dataFrom.value.content[1].childrenContent.push(item)
|
||||
}
|
||||
})
|
||||
if (dataFrom.value.content[1].childrenContent.length <= 0) {
|
||||
let data = [
|
||||
{
|
||||
attrType: '是否等保备案',
|
||||
attrValue: '------',
|
||||
},
|
||||
{
|
||||
attrType: '等保定级',
|
||||
attrValue: '------',
|
||||
},
|
||||
]
|
||||
data.map((itemContent) => {
|
||||
dataFrom.value.content[1].childrenContent.push(itemContent)
|
||||
})
|
||||
}
|
||||
|
||||
let obj = {
|
||||
attrType: '访问地址',
|
||||
attrValue: props.dataList.link || '------',
|
||||
}
|
||||
dataFrom.value.content[0].childrenContent.push(obj)
|
||||
}
|
||||
watch(
|
||||
() => props.dataList,
|
||||
(val) => {
|
||||
if (val) {
|
||||
dataFrom.value.content[0].childrenContent = []
|
||||
dataFrom.value.content[1].childrenContent = []
|
||||
props.dataList.infoList.map((item) => {
|
||||
if (
|
||||
item.attrType === '部署区域' ||
|
||||
item.attrType === '是否统一登录' ||
|
||||
item.attrType === '部署位置'
|
||||
) {
|
||||
dataFrom.value.content[0].childrenContent.push(item)
|
||||
} else if (
|
||||
item.attrType === '是否等保备案' ||
|
||||
item.attrType === '等保定级'
|
||||
) {
|
||||
dataFrom.value.content[1].childrenContent.push(item)
|
||||
}
|
||||
})
|
||||
if (dataFrom.value.content[1].childrenContent.length <= 0) {
|
||||
let data = [
|
||||
{
|
||||
attrType: '是否等保备案',
|
||||
attrValue: '------',
|
||||
},
|
||||
{
|
||||
attrType: '等保定级',
|
||||
attrValue: '------',
|
||||
},
|
||||
]
|
||||
data.map((itemContent) => {
|
||||
dataFrom.value.content[1].childrenContent.push(itemContent)
|
||||
})
|
||||
}
|
||||
let obj = {
|
||||
attrType: '访问地址',
|
||||
attrValue: props.dataList.link || '------',
|
||||
}
|
||||
dataFrom.value.content[0].childrenContent.push(obj)
|
||||
}
|
||||
}
|
||||
)
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.application-deployment-and-security {
|
||||
padding: 0.8rem 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
.title {
|
||||
margin-bottom: 0.3rem;
|
||||
}
|
||||
.content {
|
||||
display: flex;
|
||||
width: 13rem;
|
||||
justify-content: space-between;
|
||||
.content-card {
|
||||
height: 1.5rem;
|
||||
width: 6.2rem;
|
||||
border-radius: 0.2rem;
|
||||
background: linear-gradient(
|
||||
to right,
|
||||
rgba(113, 132, 252, 0.4),
|
||||
rgba(148, 163, 252, 0.4)
|
||||
);
|
||||
padding: 0 0.3rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
.card-title {
|
||||
font-size: 0.26rem;
|
||||
line-height: 0.26rem;
|
||||
color: #212956;
|
||||
margin-bottom: 0.2rem;
|
||||
}
|
||||
.card-content {
|
||||
div {
|
||||
display: inline-block;
|
||||
margin-right: 0.7rem;
|
||||
color: rgba(33, 41, 86, 0.8);
|
||||
font-size: 0.2rem;
|
||||
line-height: 0.2rem;
|
||||
max-width: 5.84rem;
|
||||
overflow: hidden; /*超出的隐藏*/
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis; /*超出的设置为省略号*/
|
||||
span {
|
||||
display: inline-block;
|
||||
max-width: 4rem;
|
||||
overflow: hidden; /*超出的隐藏*/
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis; /*超出的设置为省略号*/
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,253 @@
|
|||
<!--功能介绍-->
|
||||
<template>
|
||||
<div class="function-intorduction" v-if="flag">
|
||||
<div class="application-scenarios-and-case-son">
|
||||
<!-- {{ dataFrom.attrType }} -->
|
||||
<div class="title">
|
||||
<DetalsTitle :title="dataFrom.attrType" type="INTRODUCE"></DetalsTitle>
|
||||
</div>
|
||||
<div class="tab">
|
||||
<div
|
||||
v-for="(itemSonTitle, indexSonTitle) in dataFrom.attrValue"
|
||||
:key="itemSonTitle.name"
|
||||
@click="tabSwitch(itemSonTitle.name)"
|
||||
class="tab-son"
|
||||
:class="
|
||||
tabIndexClass(indexSonTitle, dataFrom.name, dataFrom.attrValue)
|
||||
"
|
||||
>
|
||||
<a-tooltip>
|
||||
<template #title>{{ itemSonTitle.name }}</template>
|
||||
<div
|
||||
class="tab-top"
|
||||
:class="
|
||||
tabInitialize() == itemSonTitle.name ? 'tab-top-down' : ''
|
||||
"
|
||||
>
|
||||
{{ itemSonTitle.name }}
|
||||
</div>
|
||||
</a-tooltip>
|
||||
<div
|
||||
class="tab-bottom"
|
||||
v-if="tabInitialize() == itemSonTitle.name"
|
||||
></div>
|
||||
</div>
|
||||
</div>
|
||||
<template v-for="itemSonTitle in dataFrom.attrValue" :key="itemSonTitle">
|
||||
<div class="content" v-if="tabindex == itemSonTitle.name">
|
||||
<div class="content-left">
|
||||
<div class="content-left-scene" v-if="!itemSonTitle.img"></div>
|
||||
<a-image
|
||||
:width="635"
|
||||
:height="340"
|
||||
:src="itemSonTitle.img"
|
||||
v-if="itemSonTitle.img"
|
||||
></a-image>
|
||||
</div>
|
||||
<div class="content-right">
|
||||
<div class="content-right-scene">
|
||||
<div class="content-top">{{ itemSonTitle.name }}</div>
|
||||
<a-tooltip>
|
||||
<template #title>{{ itemSonTitle.desc }}</template>
|
||||
<div class="content-bottom">{{ itemSonTitle.desc }}</div>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
|
||||
import { ref, defineProps, watch } from 'vue'
|
||||
const flag = ref(true)
|
||||
let dataFrom = ref([])
|
||||
// tab切换方法
|
||||
let tabindex = ref('场景说明一')
|
||||
//数据初始化
|
||||
const props = defineProps({
|
||||
dataList: { type: Object, default: null },
|
||||
})
|
||||
if (props.dataList.infoList) {
|
||||
let obj = props.dataList.infoList.filter(
|
||||
(item) => item.attrType === '功能介绍'
|
||||
)[0]
|
||||
if (!obj) {
|
||||
flag.value = false
|
||||
} else {
|
||||
obj.attrValue = JSON.parse(obj.attrValue)
|
||||
dataFrom.value = obj
|
||||
tabindex.value = dataFrom.value.attrValue[0].name
|
||||
}
|
||||
}
|
||||
watch(
|
||||
() => props.dataList,
|
||||
(val) => {
|
||||
if (val) {
|
||||
let obj = val.infoList.filter((item) => item.attrType === '功能介绍')[0]
|
||||
if (!obj) {
|
||||
flag.value = false
|
||||
} else {
|
||||
obj.attrValue = JSON.parse(obj.attrValue)
|
||||
dataFrom.value = obj
|
||||
tabindex.value = dataFrom.value.attrValue[0].name
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
//滚动条样式
|
||||
function tabIndexClass(index, title, content) {
|
||||
if (title == '功能介绍' && index == 0 && content.length > 6) {
|
||||
return 'tab-son-class'
|
||||
}
|
||||
}
|
||||
//初始化tab切换(判断标题不同,点击事件的判断变量不同)
|
||||
function tabInitialize() {
|
||||
return tabindex.value
|
||||
}
|
||||
//tab切换点击事件
|
||||
function tabSwitch(name) {
|
||||
tabindex.value = name
|
||||
return tabindex.value
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.function-intorduction {
|
||||
width: 100%;
|
||||
background: #f7f8fa;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
overflow-x: unset;
|
||||
.application-scenarios-and-case-son {
|
||||
padding-top: 0.8rem;
|
||||
padding-bottom: 0.8rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
overflow: unset;
|
||||
.tab {
|
||||
max-width: 13rem;
|
||||
overflow-x: auto;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
color: #808080;
|
||||
border-bottom: 0.01rem #e4e6f5 solid;
|
||||
margin-top: 0.45rem;
|
||||
margin-bottom: 0.4rem;
|
||||
cursor: pointer;
|
||||
padding-left: 0.4rem;
|
||||
padding-right: 0.4rem;
|
||||
.tab-son {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-right: 1rem;
|
||||
.tab-top {
|
||||
min-width: 1.2rem;
|
||||
font-size: 0.24rem;
|
||||
line-height: 0.24rem;
|
||||
margin-bottom: 0.2rem;
|
||||
max-width: 2rem;
|
||||
height: 0.24rem;
|
||||
display: -webkit-box;
|
||||
overflow: hidden;
|
||||
-webkit-line-clamp: 1;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
.tab-top-down {
|
||||
min-width: 1.2rem;
|
||||
color: #526aff;
|
||||
margin-bottom: 0.16rem;
|
||||
}
|
||||
.tab-bottom {
|
||||
height: 0.04rem;
|
||||
width: 0.6rem;
|
||||
background: #526aff;
|
||||
}
|
||||
}
|
||||
.tab-son-class {
|
||||
margin-left: 4.3rem;
|
||||
margin-bottom: 0.02rem;
|
||||
}
|
||||
.tab-son-class-two {
|
||||
margin-left: 2.3rem;
|
||||
margin-bottom: 0.02rem;
|
||||
}
|
||||
.tab-son:last-child {
|
||||
margin-right: 0rem;
|
||||
}
|
||||
}
|
||||
.tab::-webkit-scrollbar-thumb {
|
||||
background: rgba(82, 106, 255, 0.4);
|
||||
}
|
||||
.content {
|
||||
display: flex;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
min-width: 13rem;
|
||||
height: 3.4rem;
|
||||
.content-left {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
min-width: 6.2rem;
|
||||
:deep(.ant-image-img) {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: contain;
|
||||
}
|
||||
// text-align: center;
|
||||
.content-top {
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
.content-right {
|
||||
width: 6.2rem;
|
||||
height: 3.4rem;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
.content-right-scene,
|
||||
.content-right-case {
|
||||
width: 6.2rem;
|
||||
height: 3.4rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
.content-left-scene,
|
||||
.content-left-case {
|
||||
height: 3.4rem;
|
||||
width: 6.35rem;
|
||||
border-radius: 0.1rem;
|
||||
background: url('~@/assets/detailsAll/sf_tupianceshi.png') no-repeat;
|
||||
background-position: center;
|
||||
background-size: 6.35rem 3.4rem;
|
||||
}
|
||||
.content-top {
|
||||
font-size: 0.22rem;
|
||||
line-height: 0.22rem;
|
||||
color: #000000;
|
||||
margin-bottom: 0.35rem;
|
||||
}
|
||||
.content-bottom {
|
||||
font-size: 0.18rem;
|
||||
color: #999999;
|
||||
line-height: 0.26rem;
|
||||
display: -webkit-box;
|
||||
overflow: hidden;
|
||||
-webkit-line-clamp: 6;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
}
|
||||
}
|
||||
.application-scenarios-and-case-son:first-child {
|
||||
padding-top: 1rem;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,163 @@
|
|||
<!--
|
||||
* @Author: hisense.liangjunhua
|
||||
* @Date: 2022-06-08 14:54:01
|
||||
* @LastEditors: hisense.liangjunhua
|
||||
* @LastEditTime: 2022-06-15 18:24:39
|
||||
* @Description: 应用详情页导航
|
||||
-->
|
||||
<template>
|
||||
<div class="application-navigation" v-if="navList.length > 0">
|
||||
<template v-for="nav in navList" :key="nav.key">
|
||||
<div
|
||||
class="nav"
|
||||
:class="{ select: nav.key == select }"
|
||||
v-if="nav.show"
|
||||
@click="selectNav(nav.key)"
|
||||
>
|
||||
{{ nav.name }}
|
||||
<span class="line"></span>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, defineProps, watch } from 'vue'
|
||||
import mybus from '@/myplugins/mybus'
|
||||
const navList = ref([
|
||||
{
|
||||
name: '应用展示',
|
||||
key: 'application-presentation',
|
||||
},
|
||||
{
|
||||
name: '功能介绍',
|
||||
key: 'function-introduction',
|
||||
},
|
||||
{
|
||||
name: '关联组件',
|
||||
key: 'application-associated-components',
|
||||
},
|
||||
{
|
||||
name: '使用能力',
|
||||
key: 'ability-to-use',
|
||||
},
|
||||
{
|
||||
name: '部署与安全',
|
||||
key: 'deployment-and-security',
|
||||
},
|
||||
{
|
||||
name: '归属部门与服务商',
|
||||
key: 'department-and-service-provider',
|
||||
},
|
||||
{
|
||||
name: '常见问题',
|
||||
key: 'common-problem',
|
||||
},
|
||||
])
|
||||
const props = defineProps({
|
||||
selectNow: { type: String, default: '' },
|
||||
dataList: { type: Object, default: null },
|
||||
})
|
||||
const select = ref('algorithm-display')
|
||||
const list = ref([])
|
||||
const selectNav = (key) => {
|
||||
select.value = key
|
||||
mybus.emit('flyToView', select.value)
|
||||
}
|
||||
if (props.dataList.infoList) {
|
||||
list.value = []
|
||||
props.dataList.infoList.map((item) => {
|
||||
if (
|
||||
item.attrType === '算法优势' ||
|
||||
item.attrType === '常见问题' ||
|
||||
item.attrType === '使用能力' ||
|
||||
item.attrType === '关联组件'
|
||||
) {
|
||||
list.value.push(item.attrType)
|
||||
} else if (item.attrType === '应用展示视频') {
|
||||
list.value.push('应用展示')
|
||||
}
|
||||
})
|
||||
navList.value.forEach((item) => {
|
||||
console.log(item)
|
||||
if (list.value.indexOf(item.name) > -1) {
|
||||
item.show = true
|
||||
}
|
||||
})
|
||||
select.value = navList.value.filter(
|
||||
(item) => item.name === list.value[0]
|
||||
)[0].key
|
||||
console.log('11111111111111111111111111', list.value, navList.value)
|
||||
}
|
||||
watch(
|
||||
() => props.selectNow,
|
||||
(newValue) => {
|
||||
select.value = newValue
|
||||
}
|
||||
)
|
||||
watch(
|
||||
() => props.dataList,
|
||||
(val) => {
|
||||
if (val) {
|
||||
list.value = []
|
||||
val.infoList.map((item) => {
|
||||
if (
|
||||
item.attrType === '功能介绍' ||
|
||||
item.attrType === '常见问题' ||
|
||||
item.attrType === '使用能力' ||
|
||||
item.attrType === '关联组件'
|
||||
) {
|
||||
list.value.push(item.attrType)
|
||||
} else if (item.attrType === '应用展示视频') {
|
||||
list.value.push('应用展示')
|
||||
}
|
||||
})
|
||||
list.value.push('部署与安全')
|
||||
list.value.push('归属部门与服务商')
|
||||
navList.value.forEach((item) => {
|
||||
console.log(item)
|
||||
if (list.value.indexOf(item.name) > -1) {
|
||||
item.show = true
|
||||
}
|
||||
})
|
||||
if (list.value.length > 0) {
|
||||
select.value = navList.value.filter(
|
||||
(item) => item.name === list.value[0]
|
||||
)[0].key
|
||||
}
|
||||
console.log('11111111111111111111111111', list.value, navList.value)
|
||||
}
|
||||
}
|
||||
)
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.application-navigation {
|
||||
width: 19.12rem;
|
||||
height: 0.84rem;
|
||||
line-height: 0.8rem;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
font-size: 0.24rem;
|
||||
color: #666;
|
||||
background: #fff;
|
||||
padding: 0 3rem;
|
||||
box-shadow: 0rem 0.05rem 0.1rem #f2f3fb;
|
||||
position: relative;
|
||||
.nav {
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
.line {
|
||||
width: 0.4rem;
|
||||
height: 0.04rem;
|
||||
}
|
||||
}
|
||||
.select {
|
||||
color: #526aff;
|
||||
.line {
|
||||
background: #526aff;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,215 @@
|
|||
<!--归属部门与服务商-->
|
||||
<template>
|
||||
<div class="application-deployment-and-security">
|
||||
<div class="title">
|
||||
<DetalsTitle
|
||||
:title="dataFrom.title"
|
||||
:type="dataFrom.englishTitle"
|
||||
></DetalsTitle>
|
||||
</div>
|
||||
<div class="content">
|
||||
<div
|
||||
v-for="(item, index) in dataFrom.content"
|
||||
:key="index"
|
||||
class="content-card"
|
||||
>
|
||||
<div class="card-title">{{ item.childrenTitle }}</div>
|
||||
<div class="card-content">
|
||||
<div v-for="carditem in item.childrenContent" :key="carditem">
|
||||
<div>
|
||||
<span>{{ carditem.attrType }}:</span>
|
||||
<a-tooltip>
|
||||
<template #title>{{ carditem.attrValue }}</template>
|
||||
<span>{{ carditem.attrValue }}</span>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
|
||||
import { ref, defineProps, watch } from 'vue'
|
||||
let dataFrom = ref({
|
||||
title: '归属部门与服务商',
|
||||
englishTitle: 'DEPARTMENT&ERVICE',
|
||||
content: [
|
||||
{
|
||||
childrenTitle: '归属部门信息',
|
||||
childrenContent: [],
|
||||
},
|
||||
{
|
||||
childrenTitle: '服务商信息',
|
||||
childrenContent: [],
|
||||
},
|
||||
],
|
||||
})
|
||||
console.log(dataFrom.value)
|
||||
//数据初始化
|
||||
const props = defineProps({
|
||||
dataList: { type: Object, default: null },
|
||||
})
|
||||
if (props.dataList.infoList) {
|
||||
let obj = {
|
||||
attrType: '部门名称',
|
||||
attrValue: props.dataList.deptName || '------',
|
||||
}
|
||||
dataFrom.value.content[0].childrenContent[0] = obj
|
||||
let deptContacts = {
|
||||
attrType: '部门联系人',
|
||||
attrValue: props.dataList.deptContacts || '------',
|
||||
}
|
||||
dataFrom.value.content[0].childrenContent[1] = deptContacts
|
||||
let deptPhone = {
|
||||
attrType: '部门联系人',
|
||||
attrValue: props.dataList.deptPhone || '------',
|
||||
}
|
||||
dataFrom.value.content[0].childrenContent[2] = deptPhone
|
||||
props.dataList.infoList.map((item) => {
|
||||
if (
|
||||
item.attrType === '服务商' ||
|
||||
item.attrType === '服务商联系人' ||
|
||||
item.attrType === '服务商联系电话' ||
|
||||
item.attrType === '服务商名'
|
||||
) {
|
||||
if (item.attrType === '服务商' || item.attrType === '服务商名') {
|
||||
dataFrom.value.content[1].childrenContent[0] = item
|
||||
if (dataFrom.value.content[1].childrenContent[0].attrValue == '') {
|
||||
dataFrom.value.content[1].childrenContent[0].attrValue = '------'
|
||||
}
|
||||
} else if (item.attrType === '服务商联系人') {
|
||||
dataFrom.value.content[1].childrenContent[1] = item
|
||||
if (dataFrom.value.content[1].childrenContent[1].attrValue == '') {
|
||||
dataFrom.value.content[1].childrenContent[1].attrValue = '------'
|
||||
}
|
||||
} else if (item.attrType === '服务商联系电话') {
|
||||
dataFrom.value.content[1].childrenContent[2] = item
|
||||
if (dataFrom.value.content[1].childrenContent[2].attrValue == '') {
|
||||
dataFrom.value.content[1].childrenContent[2].attrValue = '------'
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
console.log('obj', dataFrom.value)
|
||||
}
|
||||
watch(
|
||||
() => props.dataList,
|
||||
(val) => {
|
||||
if (val) {
|
||||
// dataFrom.value.content[0].childrenContent = []
|
||||
// dataFrom.value.content[1].childrenContent = []
|
||||
let obj = {
|
||||
attrType: '部门名称',
|
||||
attrValue: props.dataList.deptName || '------',
|
||||
}
|
||||
dataFrom.value.content[0].childrenContent[0] = obj
|
||||
let deptContacts = {
|
||||
attrType: '部门联系人',
|
||||
attrValue: props.dataList.deptContacts || '------',
|
||||
}
|
||||
dataFrom.value.content[0].childrenContent[1] = deptContacts
|
||||
let deptPhone = {
|
||||
attrType: '部门联系人',
|
||||
attrValue: props.dataList.deptPhone || '------',
|
||||
}
|
||||
dataFrom.value.content[0].childrenContent[2] = deptPhone
|
||||
props.dataList.infoList.map((item) => {
|
||||
if (
|
||||
item.attrType === '服务商' ||
|
||||
item.attrType === '服务商联系人' ||
|
||||
item.attrType === '服务商联系电话' ||
|
||||
item.attrType === '服务商名'
|
||||
) {
|
||||
if (item.attrType === '服务商' || item.attrType === '服务商名') {
|
||||
dataFrom.value.content[1].childrenContent.push(item)
|
||||
if (
|
||||
dataFrom.value.content[1].childrenContent[0].attrValue == ''
|
||||
) {
|
||||
dataFrom.value.content[1].childrenContent[0].attrValue =
|
||||
'------'
|
||||
}
|
||||
} else if (item.attrType === '服务商联系人') {
|
||||
dataFrom.value.content[1].childrenContent[1] = item
|
||||
if (
|
||||
dataFrom.value.content[1].childrenContent[1].attrValue == ''
|
||||
) {
|
||||
dataFrom.value.content[1].childrenContent[1].attrValue =
|
||||
'------'
|
||||
}
|
||||
} else if (item.attrType === '服务商联系电话') {
|
||||
dataFrom.value.content[1].childrenContent[2] = item
|
||||
if (
|
||||
dataFrom.value.content[1].childrenContent[2].attrValue == ''
|
||||
) {
|
||||
dataFrom.value.content[1].childrenContent[2].attrValue =
|
||||
'------'
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
console.log('obj', dataFrom.value)
|
||||
}
|
||||
}
|
||||
)
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.application-deployment-and-security {
|
||||
padding: 0.8rem 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
.title {
|
||||
margin-bottom: 0.3rem;
|
||||
}
|
||||
.content {
|
||||
display: flex;
|
||||
width: 13rem;
|
||||
justify-content: space-between;
|
||||
.content-card {
|
||||
height: 1.5rem;
|
||||
width: 6.2rem;
|
||||
border-radius: 0.2rem;
|
||||
background: linear-gradient(
|
||||
to right,
|
||||
rgba(113, 132, 252, 0.4),
|
||||
rgba(148, 163, 252, 0.4)
|
||||
);
|
||||
padding: 0 0.3rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
.card-title {
|
||||
font-size: 0.26rem;
|
||||
color: #212956;
|
||||
margin-bottom: 0.2rem;
|
||||
line-height: 0.26rem;
|
||||
}
|
||||
.card-content {
|
||||
white-space: nowrap;
|
||||
div {
|
||||
display: inline-block;
|
||||
margin-right: 0.2rem;
|
||||
color: rgba(33, 41, 86, 0.8);
|
||||
font-size: 0.2rem;
|
||||
max-width: 2.8rem;
|
||||
div {
|
||||
max-width: 2.8rem;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 1;
|
||||
}
|
||||
}
|
||||
div:first-child {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,116 @@
|
|||
<!--
|
||||
* @Author: hisense.liangjunhua
|
||||
* @Date: 2022-06-08 15:25:33
|
||||
* @LastEditors: hisense.liangjunhua
|
||||
* @LastEditTime: 2022-06-14 11:30:52
|
||||
* @Description: 应用展示 视频播放
|
||||
-->
|
||||
<template>
|
||||
<div class="application-presentation" v-if="flag">
|
||||
<detals-title title="应用展示" type="IMAGE&VIDEO"></detals-title>
|
||||
<div class="main">
|
||||
<div class="play" @click="showModal"></div>
|
||||
</div>
|
||||
<a-modal
|
||||
v-model:visible="visible"
|
||||
title="视频预览"
|
||||
:width="750"
|
||||
destroyOnClose
|
||||
>
|
||||
<template #footer></template>
|
||||
<div style="width: 100%; display: flex; justify-content: center">
|
||||
<div style="width: 100%; height: 100%">
|
||||
<vue3VideoPlay v-bind="options" />
|
||||
</div>
|
||||
</div>
|
||||
</a-modal>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, reactive, defineProps, watch } from 'vue'
|
||||
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle.vue'
|
||||
const visible = ref(false)
|
||||
const options = reactive({
|
||||
width: '7.00rem', //播放器宽度
|
||||
height: '4.00rem', //播放器高度
|
||||
color: '#409eff', //主题色
|
||||
title: '', //视频名称
|
||||
src: '', //视频源
|
||||
muted: false, //静音
|
||||
webFullScreen: false,
|
||||
speedRate: ['0.75', '1.0', '1.25', '1.5', '2.0'], //播放倍速
|
||||
autoPlay: true, //自动播放
|
||||
loop: false, //循环播放
|
||||
mirror: false, //镜像画面
|
||||
ligthOff: false, //关灯模式
|
||||
volume: 0.3, //默认音量大小
|
||||
control: true, //是否显示控制
|
||||
controlBtns: [
|
||||
'audioTrack',
|
||||
'quality',
|
||||
'speedRate',
|
||||
'volume',
|
||||
'setting',
|
||||
'pip',
|
||||
'pageFullScreen',
|
||||
'fullScreen',
|
||||
], //显示所有按钮,
|
||||
})
|
||||
const showModal = () => {
|
||||
visible.value = true
|
||||
}
|
||||
const props = defineProps({
|
||||
dataList: { type: Object, default: null },
|
||||
})
|
||||
const flag = ref(true)
|
||||
console.log('111111111111111111111,', props.dataList)
|
||||
if (props.dataList.infoList) {
|
||||
let obj = props.dataList.infoList.filter(
|
||||
(item) => item.attrType === '应用展示视频'
|
||||
)[0]
|
||||
console.log('视频==============>', obj)
|
||||
if (!obj) {
|
||||
flag.value = false
|
||||
} else {
|
||||
options.src = obj.attrValue
|
||||
}
|
||||
}
|
||||
watch(
|
||||
() => props.dataList,
|
||||
(val) => {
|
||||
if (val) {
|
||||
let obj = val.infoList.filter(
|
||||
(item) => item.attrType === '应用展示视频'
|
||||
)[0]
|
||||
console.log('视频==============>', obj)
|
||||
if (!obj) {
|
||||
flag.value = false
|
||||
} else {
|
||||
options.src = obj.attrValue
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.application-presentation {
|
||||
padding: 0.8rem 3rem 0;
|
||||
.main {
|
||||
height: 3.4rem;
|
||||
border-radius: 0.1rem;
|
||||
background: url('~@/assets/detailsAll/sf_video_bg.png') no-repeat;
|
||||
background-size: 100%;
|
||||
margin-top: 0.4rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
.play {
|
||||
width: 0.96rem;
|
||||
height: 0.96rem;
|
||||
background: url('~@/assets/detailsAll/sf_video_play.png') no-repeat;
|
||||
background-size: 100%;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,199 @@
|
|||
<!--
|
||||
* @Author: hisense.liangjunhua
|
||||
* @Date: 2022-06-08 11:56:28
|
||||
* @LastEditors: hisense.liangjunhua
|
||||
* @LastEditTime: 2022-06-14 11:31:12
|
||||
* @Description: 算法详情页头部
|
||||
-->
|
||||
<template>
|
||||
<div class="algorithm-top-details">
|
||||
<div class="left">
|
||||
<div class="top">
|
||||
<span class="name">{{ props.dataList.name }}</span>
|
||||
<div class="label-content">
|
||||
<p class="lable-father">
|
||||
<span class="label">{{ props.dataList.type }}</span>
|
||||
<span class="label">{{ props.dataList.shareType }}</span>
|
||||
<span class="label">{{ props.dataList.shareCondition }}</span>
|
||||
</p>
|
||||
</div>
|
||||
<!-- <span class="label">免费</span> -->
|
||||
</div>
|
||||
<div class="main">
|
||||
<div>应用领域:{{ applicationArea }}</div>
|
||||
<div>
|
||||
{{ props.dataList.description }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom" v-if="props.dataList.id">
|
||||
<!-- <a-button type="primary" @click="toView()">
|
||||
<template #icon><form-outlined /></template>
|
||||
申请使用
|
||||
</a-button>
|
||||
<a-button type="primary" @click="addShoppingCart()">
|
||||
<template #icon><shopping-cart-outlined /></template>
|
||||
加入购物车
|
||||
</a-button> -->
|
||||
<a-button type="primary" @click="goTOCollection()">收藏</a-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right"></div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
// import { ShoppingCartOutlined } from '@ant-design/icons-vue'
|
||||
import { defineProps, ref, watch } from 'vue'
|
||||
import { scInsert } from '@/api/personalCenter'
|
||||
// import { sgcInsert } from '@/api/home'
|
||||
// import { useRouter } from 'vue-router'
|
||||
// import mybus from '@/myplugins/mybus'
|
||||
import { message } from 'ant-design-vue'
|
||||
const props = defineProps({
|
||||
dataList: { type: Object, default: null },
|
||||
})
|
||||
// const router = useRouter()
|
||||
const applicationArea = ref('')
|
||||
// // 加入申购车
|
||||
// const addShoppingCart = () => {
|
||||
// console.log('加入申购车==================>', props.dataList)
|
||||
// sgcInsert({
|
||||
// delFlag: '0',
|
||||
// resourceId: props.dataList.id,
|
||||
// // userId: userId.value,
|
||||
// }).then((res) => {
|
||||
// console.log(res)
|
||||
// message.success('添加申购车成功!')
|
||||
// mybus.emit('getSgcNum')
|
||||
// })
|
||||
// }
|
||||
// // 立即申请
|
||||
// function toView() {
|
||||
// // window.open(newpage.href, '_blank')
|
||||
// router.push({
|
||||
// path: '/apply',
|
||||
// query: {
|
||||
// name: props.dataList.name,
|
||||
// resourceId: [props.dataList.id],
|
||||
// },
|
||||
// })
|
||||
// }
|
||||
// 收藏
|
||||
const goTOCollection = () => {
|
||||
console.log('收藏===================》', props.dataList)
|
||||
scInsert([{ resourceId: props.dataList.id }]).then((res) => {
|
||||
console.log(res)
|
||||
message.success('收藏成功')
|
||||
})
|
||||
}
|
||||
if (props.dataList.infoList) {
|
||||
applicationArea.value = props.dataList.infoList.filter(
|
||||
(val) => val.attrType === '应用领域'
|
||||
)[0].attrValue
|
||||
}
|
||||
watch(
|
||||
() => props.dataList,
|
||||
(val) => {
|
||||
if (val) {
|
||||
applicationArea.value = props.dataList.infoList.filter(
|
||||
(val) => val.attrType === '应用领域'
|
||||
)[0].attrValue
|
||||
}
|
||||
}
|
||||
)
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.algorithm-top-details {
|
||||
height: 6rem;
|
||||
padding: 1.8rem 0 0;
|
||||
background: url('~@/assets/detailsAll/sf_top_bg.png') no-repeat;
|
||||
background-size: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
.left {
|
||||
max-width: 7.2rem;
|
||||
color: #fff;
|
||||
margin-right: 0.8rem;
|
||||
|
||||
.top {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
span {
|
||||
font-size: 0.14rem;
|
||||
}
|
||||
.name {
|
||||
// max-width: 3.3rem;
|
||||
// overflow: hidden;
|
||||
// text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
font-size: 0.4rem;
|
||||
margin-right: 0.2rem;
|
||||
}
|
||||
.label-content {
|
||||
position: relative;
|
||||
}
|
||||
.lable-father {
|
||||
position: absolute;
|
||||
min-width: 2.5rem;
|
||||
right: -2.5rem;
|
||||
top: 0;
|
||||
}
|
||||
.label {
|
||||
padding: 0.01rem 0.1rem;
|
||||
margin-right: 0.1rem;
|
||||
border-radius: 0.13rem;
|
||||
background: rgba(255, 255, 255, 0.4);
|
||||
}
|
||||
}
|
||||
.main {
|
||||
margin-top: 0.2rem;
|
||||
font-size: 0.18rem;
|
||||
line-height: 0.34rem;
|
||||
& > div:nth-of-type(1) {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
& > div:nth-of-type(2) {
|
||||
max-height: 1rem;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 3;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
}
|
||||
.bottom {
|
||||
margin-top: 0.4rem;
|
||||
display: flex;
|
||||
.ant-btn {
|
||||
height: 0.5rem;
|
||||
margin-right: 0.2rem;
|
||||
background: #ff8b55;
|
||||
border-radius: 0.06rem;
|
||||
font-size: 0.2rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
.ant-btn:nth-of-type(1) {
|
||||
width: 1.8rem;
|
||||
}
|
||||
.ant-btn:nth-of-type(2) {
|
||||
width: 2.2rem;
|
||||
}
|
||||
.ant-btn:nth-of-type(3) {
|
||||
width: 1.45rem;
|
||||
background: #fff;
|
||||
color: #526aff;
|
||||
}
|
||||
}
|
||||
}
|
||||
.right {
|
||||
width: 5.8rem;
|
||||
height: 4rem;
|
||||
background: url('~@/assets/detailsAll/sf_right_bg.png') no-repeat;
|
||||
background-size: 100%;
|
||||
margin-top: -0.4rem;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -16,6 +16,7 @@
|
|||
class="photo"
|
||||
:style="{
|
||||
backgroundImage: `url(${item.photo}) `,
|
||||
backgroundSize: 'cover',
|
||||
}"
|
||||
></span>
|
||||
<span>{{ item.name }}</span>
|
||||
|
@ -180,7 +181,7 @@
|
|||
<div class="top-content-father">
|
||||
<div class="top-content-son">
|
||||
<div class="top-content">
|
||||
<span class="top-content-title" :style="{ marginRight: '8px' }">
|
||||
<span class="top-content-title" :style="{ marginRight: '.08rem' }">
|
||||
标签
|
||||
</span>
|
||||
<div
|
||||
|
@ -191,7 +192,7 @@
|
|||
<a-checkable-tag
|
||||
:checked="selBqTags.indexOf(tag) > -1"
|
||||
@change="(checked) => handleChangeBqTags(tag, checked)"
|
||||
style="width: 100px"
|
||||
style="width: 1rem"
|
||||
>
|
||||
{{ tag }}
|
||||
</a-checkable-tag>
|
||||
|
@ -199,7 +200,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="top-content">
|
||||
<span class="top-content-title" :style="{ marginRight: '8px' }">
|
||||
<span class="top-content-title" :style="{ marginRight: '.08rem' }">
|
||||
在线状态
|
||||
</span>
|
||||
<div class="leixingsumfather leixingsumfather2">
|
||||
|
@ -207,7 +208,7 @@
|
|||
<a-checkable-tag
|
||||
:checked="selStateTags.indexOf(tag) > -1"
|
||||
@change="(checked) => handleChangeStateTag(tag, checked)"
|
||||
style="width: 100px"
|
||||
style="width: 1rem"
|
||||
>
|
||||
{{ tag }}
|
||||
</a-checkable-tag>
|
||||
|
@ -226,7 +227,7 @@
|
|||
class="resultListSearchInput"
|
||||
/>
|
||||
<button class="button-reset" @click="chongzhi()">重置</button>
|
||||
<div class="itemList" style="margin-top: 20px">
|
||||
<div class="itemList" style="margin-top: .2rem">
|
||||
<a-card :loading="loading">
|
||||
<a-card-grid
|
||||
style="width: 20%; text-align: center"
|
||||
|
@ -279,7 +280,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="resourceList.data?.length <= 0" style="margin-top: 200px">
|
||||
<div v-if="resourceList.data?.length <= 0" style="margin-top: 2rem">
|
||||
<a-empty
|
||||
v-if="!(Cardsname == '基础设施') && !(Cardsname == '数据资源')"
|
||||
/>
|
||||
|
@ -297,6 +298,7 @@
|
|||
class="photo"
|
||||
:style="{
|
||||
backgroundImage: `url(${item.photo}) `,
|
||||
backgroundSize: 'cover',
|
||||
}"
|
||||
></span>
|
||||
<span>{{ item.name }}</span>
|
||||
|
@ -962,38 +964,38 @@
|
|||
<style lang="less" scoped>
|
||||
.resultListSearchInput-father {
|
||||
background: #f3f5f9;
|
||||
padding-left: 20px;
|
||||
padding-top: 20px;
|
||||
padding-left: 0.2rem;
|
||||
padding-top: 0.2rem;
|
||||
.resultListSearchInput-son {
|
||||
background: #fff;
|
||||
padding: 20px 20px 0px 30px;
|
||||
margin-right: 20px;
|
||||
padding: 0.2rem 0.2rem 0rem 0.3rem;
|
||||
margin-right: 0.2rem;
|
||||
.hengxian {
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
height: 0.01rem;
|
||||
background: rgba(150, 144, 144, 0.3);
|
||||
margin-top: 20px;
|
||||
margin-top: 0.2rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
.resultListSearchInput {
|
||||
margin-left: 10px;
|
||||
margin-left: 0.1rem;
|
||||
:deep(.ant-input) {
|
||||
width: 400px;
|
||||
height: 36px;
|
||||
width: 4rem;
|
||||
height: 0.36rem;
|
||||
background: #fff;
|
||||
border-radius: 4px;
|
||||
border-radius: 0.04rem;
|
||||
}
|
||||
:deep(.ant-input-search-button) {
|
||||
width: 80px;
|
||||
height: 36px;
|
||||
width: 0.8rem;
|
||||
height: 0.36rem;
|
||||
background: #0087ff;
|
||||
border-radius: 4px !important;
|
||||
font-size: 14px;
|
||||
border-radius: 0.04rem !important;
|
||||
font-size: 0.14rem;
|
||||
font-weight: 400;
|
||||
color: #fff;
|
||||
line-height: 34px;
|
||||
margin-left: 10px;
|
||||
line-height: 0.34rem;
|
||||
margin-left: 0.1rem;
|
||||
}
|
||||
:deep(.ant-input-group-addon) {
|
||||
left: 0 !important;
|
||||
|
@ -1002,15 +1004,15 @@
|
|||
.button-reset {
|
||||
border: 0;
|
||||
outline: none;
|
||||
width: 80px;
|
||||
height: 36px;
|
||||
width: 0.8rem;
|
||||
height: 0.36rem;
|
||||
background: #e1edfa;
|
||||
border-radius: 4px;
|
||||
font-size: 14px;
|
||||
border-radius: 0.04rem;
|
||||
font-size: 0.14rem;
|
||||
font-weight: 400;
|
||||
color: #0087ff;
|
||||
line-height: 34px;
|
||||
margin-left: 250px;
|
||||
line-height: 0.34rem;
|
||||
margin-left: 2.5rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
.details-pageconetent {
|
||||
|
@ -1020,59 +1022,59 @@
|
|||
// flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-top: 67px;
|
||||
margin-top: 0.67rem;
|
||||
position: relative;
|
||||
background: rgba(245, 243, 243, 0.3);
|
||||
.details-pageconetent-left {
|
||||
max-height: 790px;
|
||||
max-height: 6.9rem;
|
||||
position: absolute;
|
||||
width: 250px;
|
||||
top: 17px;
|
||||
left: 250px;
|
||||
margin-right: 17px;
|
||||
width: 2.5rem;
|
||||
top: 0.17rem;
|
||||
left: 2.5rem;
|
||||
margin-right: 0.17rem;
|
||||
overflow: auto;
|
||||
}
|
||||
.top {
|
||||
min-height: 720px;
|
||||
min-height: 7.2rem;
|
||||
position: relative;
|
||||
width: 1087px;
|
||||
width: 10.87rem;
|
||||
display: flex;
|
||||
padding-top: 20px;
|
||||
padding-top: 0.2rem;
|
||||
flex-direction: column;
|
||||
// align-items: center;
|
||||
font-size: 16px;
|
||||
font-size: 0.16rem;
|
||||
justify-content: left;
|
||||
margin-left: 250px;
|
||||
margin-left: 2.5rem;
|
||||
.pagination {
|
||||
background: #f3f5f9;
|
||||
padding-bottom: 60px;
|
||||
padding-bottom: 0.6rem;
|
||||
}
|
||||
.jichusheshi {
|
||||
// display: flex;
|
||||
// flex-direction: column;
|
||||
// justify-content: center;
|
||||
// padding-top: 40px;
|
||||
height: 445px;
|
||||
// padding-top: .4rem;
|
||||
height: 4.45rem;
|
||||
// overflow: hidden;
|
||||
.yunziyuan {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
.shuoming {
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
top: 15px;
|
||||
font-size: 12px;
|
||||
right: 0.2rem;
|
||||
top: 0.15rem;
|
||||
font-size: 0.12rem;
|
||||
}
|
||||
.yunziyuan-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.tupian {
|
||||
// width: 89px;
|
||||
// height: 74px;
|
||||
// width: .89rem;
|
||||
// height: .74rem;
|
||||
// background: url('~@/assets/home/yunziyuan.png');
|
||||
}
|
||||
.title {
|
||||
margin-left: 10px;
|
||||
margin-left: 0.1rem;
|
||||
font-weight: 600;
|
||||
text-decoration: underline;
|
||||
cursor: pointer;
|
||||
|
@ -1080,15 +1082,15 @@
|
|||
}
|
||||
.fenlei {
|
||||
display: flex;
|
||||
margin-left: 20px;
|
||||
margin-right: 30px;
|
||||
margin-left: 0.2rem;
|
||||
margin-right: 0.3rem;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.keyongziyuan {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-left: 30px;
|
||||
margin-right: 30px;
|
||||
margin-left: 0.3rem;
|
||||
margin-right: 0.3rem;
|
||||
div {
|
||||
display: flex;
|
||||
div:last-child {
|
||||
|
@ -1098,7 +1100,7 @@
|
|||
}
|
||||
}
|
||||
.yunziyuan > div {
|
||||
margin-bottom: 10px;
|
||||
margin-bottom: 0.1rem;
|
||||
}
|
||||
.shipin {
|
||||
width: 100%;
|
||||
|
@ -1106,12 +1108,12 @@
|
|||
display: flex;
|
||||
align-items: center;
|
||||
.tupian {
|
||||
// width: 56px;
|
||||
// height: 50px;
|
||||
// width: .56rem;
|
||||
// height: .5rem;
|
||||
// background: url('~@/assets/home/shipin.png');
|
||||
}
|
||||
.title {
|
||||
margin-left: 10px;
|
||||
margin-left: 0.1rem;
|
||||
font-weight: 600;
|
||||
text-decoration: underline;
|
||||
cursor: pointer;
|
||||
|
@ -1119,9 +1121,9 @@
|
|||
}
|
||||
.fenlei {
|
||||
display: flex;
|
||||
margin-left: 20px;
|
||||
margin-left: 0.2rem;
|
||||
div {
|
||||
margin-right: 60px;
|
||||
margin-right: 0.6rem;
|
||||
}
|
||||
.shuzi {
|
||||
font-weight: 600;
|
||||
|
@ -1129,41 +1131,41 @@
|
|||
}
|
||||
}
|
||||
.shipin > div {
|
||||
margin-bottom: 10px;
|
||||
margin-bottom: 0.1rem;
|
||||
}
|
||||
}
|
||||
.jichusheshi > div {
|
||||
// background: #eaf4ff;
|
||||
padding-top: 10px;
|
||||
border-radius: 4px;
|
||||
margin-bottom: 20px;
|
||||
padding-bottom: 40px;
|
||||
padding-top: 0.1rem;
|
||||
border-radius: 0.04rem;
|
||||
margin-bottom: 0.2rem;
|
||||
padding-bottom: 0.4rem;
|
||||
}
|
||||
.shujuziyuan {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
padding-top: 40px;
|
||||
padding-top: 0.4rem;
|
||||
.yunziyuan {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
.shuoming {
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
top: 15px;
|
||||
font-size: 12px;
|
||||
right: 0.2rem;
|
||||
top: 0.15rem;
|
||||
font-size: 0.12rem;
|
||||
}
|
||||
.yunziyuan-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-left: 20px;
|
||||
margin-left: 0.2rem;
|
||||
.tupian {
|
||||
// width: 51px;
|
||||
// height: 50px;
|
||||
// width: .51rem;
|
||||
// height: .5rem;
|
||||
// background: url('~@/assets/home/shujuziyuan.png');
|
||||
}
|
||||
.title {
|
||||
margin-left: 10px;
|
||||
margin-left: 0.1rem;
|
||||
font-weight: 600;
|
||||
text-decoration: underline;
|
||||
cursor: pointer;
|
||||
|
@ -1171,15 +1173,15 @@
|
|||
}
|
||||
.fenlei {
|
||||
display: flex;
|
||||
margin-left: 20px;
|
||||
margin-right: 30px;
|
||||
margin-left: 0.2rem;
|
||||
margin-right: 0.3rem;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.keyongziyuan {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-left: 30px;
|
||||
margin-right: 30px;
|
||||
margin-left: 0.3rem;
|
||||
margin-right: 0.3rem;
|
||||
div {
|
||||
display: flex;
|
||||
div:last-child {
|
||||
|
@ -1189,33 +1191,33 @@
|
|||
}
|
||||
}
|
||||
.yunziyuan > div {
|
||||
margin-bottom: 10px;
|
||||
margin-bottom: 0.1rem;
|
||||
}
|
||||
}
|
||||
.shujuziyuan > div {
|
||||
background: #eaf4ff;
|
||||
padding-top: 10px;
|
||||
border-radius: 4px;
|
||||
margin-bottom: 20px;
|
||||
padding-bottom: 40px;
|
||||
padding-top: 0.1rem;
|
||||
border-radius: 0.04rem;
|
||||
margin-bottom: 0.2rem;
|
||||
padding-bottom: 0.4rem;
|
||||
}
|
||||
.top-title {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
font-size: 20px;
|
||||
font-size: 0.2rem;
|
||||
font-family: 'Alibaba PuHuiTi';
|
||||
color: #000000;
|
||||
line-height: 34px;
|
||||
line-height: 0.34rem;
|
||||
.photo {
|
||||
display: inline-block;
|
||||
height: 44px;
|
||||
width: 44px;
|
||||
margin-right: 10px;
|
||||
height: 0.44rem;
|
||||
width: 0.44rem;
|
||||
margin-right: 0.1rem;
|
||||
}
|
||||
div {
|
||||
margin: 0 20px;
|
||||
padding: 0 10px;
|
||||
margin: 0 0.2rem;
|
||||
padding: 0 0.1rem;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
@ -1226,82 +1228,82 @@
|
|||
.sel {
|
||||
font-weight: 600;
|
||||
color: #0087ff;
|
||||
border-bottom: 2px solid #0087ff;
|
||||
border-bottom: 0.02rem solid #0087ff;
|
||||
}
|
||||
}
|
||||
.top-content-father {
|
||||
width: 1087px;
|
||||
padding-left: 20px;
|
||||
// margin-bottom: 20px;
|
||||
width: 10.87rem;
|
||||
padding-left: 0.2rem;
|
||||
// margin-bottom: .2rem;
|
||||
background: #f3f5f9;
|
||||
.top-content-son {
|
||||
background: #fff;
|
||||
margin: 0px 20px 20px 0px;
|
||||
padding-top: 20px;
|
||||
padding-bottom: 20px;
|
||||
margin: 0rem 0.2rem 0.2rem 0rem;
|
||||
padding-top: 0.2rem;
|
||||
padding-bottom: 0.2rem;
|
||||
}
|
||||
.top-content {
|
||||
display: flex;
|
||||
margin-top: 0px;
|
||||
margin-top: 0rem;
|
||||
span:nth-child(1) {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
// width: 70px;
|
||||
line-height: 36.14px;
|
||||
// width: .7rem;
|
||||
line-height: 0.3614rem;
|
||||
white-space: normal;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
// .top-content-title {
|
||||
// top: -20px;
|
||||
// top: -0.2rem;
|
||||
// }
|
||||
.leixingsumfather {
|
||||
width: 810px;
|
||||
width: 8.1rem;
|
||||
display: inline-block;
|
||||
height: 30.14px;
|
||||
height: 0.3014rem;
|
||||
overflow: hidden;
|
||||
// width: 718px;
|
||||
// width: 7.18rem;
|
||||
}
|
||||
.leixingsumfather2 {
|
||||
width: 920px;
|
||||
width: 9.2rem;
|
||||
}
|
||||
.leixingsum {
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
margin-top: 5px;
|
||||
// margin-bottom: 10px;
|
||||
margin-top: 0.05rem;
|
||||
// margin-bottom: .1rem;
|
||||
.ant-tag-checkable {
|
||||
width: 83px;
|
||||
height: 25px;
|
||||
width: 0.83rem;
|
||||
height: 0.25rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
padding-left: 0.05rem;
|
||||
padding-right: 0.05rem;
|
||||
float: left;
|
||||
margin: 0 15px;
|
||||
margin: 0 0.15rem;
|
||||
font-family: 'AlibabaPuHuiTiR';
|
||||
font-size: 14px;
|
||||
font-size: 0.14rem;
|
||||
color: #333333;
|
||||
font-weight: 500;
|
||||
text-align: center;
|
||||
line-height: 14px;
|
||||
line-height: 0.14rem;
|
||||
}
|
||||
:deep(.ant-tag-checkable-checked) {
|
||||
// width: 67px;
|
||||
margin-left: 15px;
|
||||
margin-right: 15px;
|
||||
// width: .67rem;
|
||||
margin-left: 0.15rem;
|
||||
margin-right: 0.15rem;
|
||||
text-align: center;
|
||||
}
|
||||
.ant-tag-checkable:active,
|
||||
.ant-tag-checkable-checked {
|
||||
width: 85px;
|
||||
width: 0.85rem;
|
||||
font-family: 'Alibaba PuHuiTi';
|
||||
font-weight: 500;
|
||||
background-color: #0087ff;
|
||||
color: #ffffff;
|
||||
border-radius: 16px;
|
||||
border-radius: 0.16rem;
|
||||
}
|
||||
}
|
||||
.active {
|
||||
|
@ -1312,17 +1314,17 @@
|
|||
}
|
||||
}
|
||||
.top-content:nth-child(1) {
|
||||
margin-top: 0px !important;
|
||||
margin-top: 0rem !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.shrinkTag {
|
||||
width: 50px;
|
||||
width: 0.5rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: flex-end;
|
||||
margin-bottom: 5px;
|
||||
margin-bottom: 0.05rem;
|
||||
span {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
@ -1333,84 +1335,84 @@
|
|||
}
|
||||
.talk-monitor {
|
||||
position: fixed;
|
||||
bottom: 50px;
|
||||
right: 10px;
|
||||
bottom: 0.5rem;
|
||||
right: 0.1rem;
|
||||
z-index: 9999;
|
||||
cursor: pointer;
|
||||
i {
|
||||
width: 64px;
|
||||
height: 64px;
|
||||
width: 0.64rem;
|
||||
height: 0.64rem;
|
||||
display: inline-block;
|
||||
background: url('~@/assets/home/icon-talk.png');
|
||||
background-size: cover;
|
||||
}
|
||||
}
|
||||
.top-content-father {
|
||||
width: 1087px;
|
||||
padding-left: 20px;
|
||||
// margin-bottom: 20px;
|
||||
width: 10.87rem;
|
||||
padding-left: 0.2rem;
|
||||
// margin-bottom: .2rem;
|
||||
.top-content {
|
||||
display: flex;
|
||||
margin-top: 23px;
|
||||
margin-top: 0.23rem;
|
||||
span:nth-child(1) {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
width: 68px;
|
||||
width: 0.68rem;
|
||||
font-weight: 600;
|
||||
white-space: normal;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
font-size: 16px;
|
||||
margin-left: 30px;
|
||||
font-size: 0.16rem;
|
||||
margin-left: 0.3rem;
|
||||
}
|
||||
// .top-content-title {
|
||||
// top: -20px;
|
||||
// top: -0.2rem;
|
||||
// }
|
||||
.leixingsumfather {
|
||||
width: 770px;
|
||||
width: 7.7rem;
|
||||
display: inline-block;
|
||||
height: 30.14px;
|
||||
height: 0.3014rem;
|
||||
overflow: hidden;
|
||||
// width: 718px;
|
||||
// width: 7.18rem;
|
||||
}
|
||||
.leixingsum {
|
||||
width: 93px;
|
||||
width: 0.93rem;
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
margin-top: 5px;
|
||||
// margin-bottom: 10px;
|
||||
margin-top: 0.05rem;
|
||||
// margin-bottom: .1rem;
|
||||
.ant-tag-checkable {
|
||||
width: 85px;
|
||||
height: 25px;
|
||||
width: 0.85rem;
|
||||
height: 0.25rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
padding-left: 0.05rem;
|
||||
padding-right: 0.05rem;
|
||||
float: left;
|
||||
margin: 0 15px;
|
||||
margin: 0 0.15rem;
|
||||
font-family: 'AlibabaPuHuiTiR';
|
||||
font-size: 14px;
|
||||
font-size: 0.14rem;
|
||||
color: #333333;
|
||||
font-weight: 500;
|
||||
text-align: center;
|
||||
line-height: 14px;
|
||||
line-height: 0.14rem;
|
||||
}
|
||||
:deep(.ant-tag-checkable-checked) {
|
||||
// width: 67px;
|
||||
margin-left: 15px;
|
||||
margin-right: 15px;
|
||||
// width: .67rem;
|
||||
margin-left: 0.15rem;
|
||||
margin-right: 0.15rem;
|
||||
text-align: center;
|
||||
}
|
||||
.ant-tag-checkable:active,
|
||||
.ant-tag-checkable-checked {
|
||||
width: 85px;
|
||||
width: 0.85rem;
|
||||
font-family: 'Alibaba PuHuiTi';
|
||||
font-weight: 500;
|
||||
background-color: #0087ff;
|
||||
color: #ffffff;
|
||||
border-radius: 16px;
|
||||
border-radius: 0.16rem;
|
||||
}
|
||||
}
|
||||
.active {
|
||||
|
@ -1421,7 +1423,7 @@
|
|||
}
|
||||
}
|
||||
.top-content:nth-child(1) {
|
||||
margin-top: 41px !important;
|
||||
margin-top: 0.41rem !important;
|
||||
}
|
||||
}
|
||||
:deep(.ant-card-grid) {
|
||||
|
|
|
@ -24,8 +24,8 @@
|
|||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
p-id="2069"
|
||||
width="40"
|
||||
height="40"
|
||||
width="0.4rem"
|
||||
height="0.4rem"
|
||||
@click="goToSgc"
|
||||
>
|
||||
<path
|
||||
|
@ -36,7 +36,7 @@
|
|||
</svg>
|
||||
<!-- <a-avatar shape="square" size="large" /> -->
|
||||
</a-badge>
|
||||
<a-badge :count="mynoticeNum" style="margin-left: 20px">
|
||||
<a-badge :count="mynoticeNum" style="margin-left: 0.2rem">
|
||||
<svg
|
||||
t="1654051054113"
|
||||
class="icon2"
|
||||
|
@ -44,8 +44,8 @@
|
|||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
p-id="2187"
|
||||
width="35"
|
||||
height="35"
|
||||
width="0.35rem"
|
||||
height="0.35rem"
|
||||
>
|
||||
<path
|
||||
d="M544 161.536a330.666667 330.666667 0 0 1 298.666667 329.130667h-0.341334c0.213333 1.493333 0.341333 2.986667 0.341334 4.565333v219.434667h39.68a32 32 0 0 1 0 64h-212.053334a160 160 0 0 1-316.586666 0H141.909333a32 32 0 1 1 0-64h39.424v-219.434667c0-1.578667 0.128-3.072 0.341334-4.565333H181.333333a330.666667 330.666667 0 0 1 298.666667-329.130667V128a32 32 0 1 1 64 0v33.536z m-298.666667 553.130667h533.333334v-219.434667c0-1.578667 0.128-3.072 0.341333-4.565333h-0.341333a266.666667 266.666667 0 1 0-533.333334 0h-0.341333c0.213333 1.493333 0.341333 2.986667 0.341333 4.565333v219.434667z m359.765334 64H418.901333a96 96 0 0 0 186.197334 0z"
|
||||
|
@ -80,9 +80,32 @@
|
|||
<template #title>
|
||||
<span>{{ user.username }}</span>
|
||||
</template>
|
||||
<span class="name">{{ user.username }}</span>
|
||||
<span
|
||||
class="name"
|
||||
@click="jumpPage({ name: '个人中心', key: 'personalCenter' })"
|
||||
>
|
||||
{{ user.username }}
|
||||
</span>
|
||||
</a-tooltip>
|
||||
<span @click="logout" class="out">退出</span>
|
||||
<svg
|
||||
t="1655286092324"
|
||||
class="icon"
|
||||
viewBox="0 0 1024 1024"
|
||||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
p-id="2160"
|
||||
width="20"
|
||||
height="20"
|
||||
style="margin-top: 0.05rem"
|
||||
@click="jumpPage({ name: '后台管理', key: 'houtaiguanli' })"
|
||||
>
|
||||
<path
|
||||
d="M1016.832 606.208q2.048 12.288-1.024 29.696t-10.24 35.328-17.408 32.256-22.528 20.48-21.504 6.144-20.48-4.096q-10.24-3.072-25.6-5.632t-31.232-1.024-31.744 6.656-27.136 17.408q-24.576 25.6-28.672 58.368t9.216 62.464q10.24 20.48-3.072 40.96-6.144 8.192-19.456 16.896t-29.184 15.872-33.28 11.264-30.72 4.096q-9.216 0-17.408-7.168t-11.264-15.36l-1.024 0q-11.264-31.744-38.4-54.784t-62.976-23.04q-34.816 0-62.976 23.04t-39.424 53.76q-5.12 12.288-15.36 17.92t-22.528 5.632q-14.336 0-32.256-5.12t-35.84-12.8-32.256-17.92-21.504-20.48q-5.12-7.168-5.632-16.896t7.68-27.136q11.264-23.552 8.704-53.76t-26.112-55.808q-14.336-15.36-34.816-19.968t-38.912-3.584q-21.504 1.024-44.032 8.192-14.336 4.096-28.672-2.048-11.264-4.096-20.992-18.944t-17.408-32.768-11.776-36.864-2.048-31.232q3.072-22.528 20.48-28.672 30.72-12.288 55.296-40.448t24.576-62.976q0-35.84-24.576-62.464t-55.296-38.912q-9.216-3.072-15.36-14.848t-6.144-24.064q0-13.312 4.096-29.696t10.752-31.744 15.36-28.16 18.944-18.944q8.192-5.12 15.872-4.096t16.896 4.096q30.72 12.288 64 7.68t58.88-29.184q12.288-12.288 17.92-30.208t7.168-35.328 0-31.744-2.56-20.48q-2.048-6.144-3.584-14.336t1.536-14.336q6.144-14.336 22.016-25.088t34.304-17.92 35.84-10.752 27.648-3.584q13.312 0 20.992 8.704t10.752 17.92q11.264 27.648 36.864 48.64t60.416 20.992q35.84 0 63.488-19.968t38.912-50.688q4.096-8.192 12.8-16.896t17.92-8.704q14.336 0 31.232 4.096t33.28 11.264 30.208 18.432 22.016 24.576q5.12 8.192 3.072 17.92t-4.096 13.824q-13.312 29.696-8.192 62.464t29.696 57.344 60.416 27.136 66.56-11.776q8.192-5.12 19.968-4.096t19.968 9.216q15.36 14.336 27.136 43.52t15.872 58.88q2.048 17.408-5.632 27.136t-15.872 12.8q-31.744 11.264-54.272 39.424t-22.528 64q0 34.816 18.944 60.928t49.664 37.376q7.168 4.096 12.288 8.192 11.264 9.216 15.36 23.552zM540.672 698.368q46.08 0 87.04-17.408t71.168-48.128 47.616-71.168 17.408-86.528-17.408-86.528-47.616-70.656-71.168-47.616-87.04-17.408-86.528 17.408-70.656 47.616-47.616 70.656-17.408 86.528 17.408 86.528 47.616 71.168 70.656 48.128 86.528 17.408z"
|
||||
p-id="2161"
|
||||
fill="#bfbfbf"
|
||||
></path>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -103,8 +126,10 @@
|
|||
{ name: '能力统计', key: 'abilityStatistics' },
|
||||
{ name: '开发指南', key: 'developmentGuide' },
|
||||
{ name: '需求中心', key: 'demandCenter' },
|
||||
{ name: '个人中心', key: 'personalCenter' },
|
||||
{ name: '后台管理', key: 'houtaiguanli' },
|
||||
// { name: '个人中心', key: 'personalCenter' },
|
||||
{ name: '区市站点', key: 'mapTest' },
|
||||
// { name: '后台管理', key: 'houtaiguanli' },
|
||||
{ name: '赋能案例', key: 'assignCase' },
|
||||
])
|
||||
const user = ref({})
|
||||
const select = ref(router.currentRoute.value.name)
|
||||
|
@ -163,10 +188,20 @@
|
|||
path: '/demandCenter',
|
||||
})
|
||||
break
|
||||
case '区市站点':
|
||||
router.push({
|
||||
path: '/mapTest',
|
||||
})
|
||||
break
|
||||
case '后台管理':
|
||||
window.open(window.SITE_CONFIG.backUrl + '/#/bscatalogue-bscatalogue')
|
||||
window.reload('http://15.2.21.238:9797')
|
||||
break
|
||||
case '赋能案例':
|
||||
router.push({
|
||||
path: '/assignCase',
|
||||
})
|
||||
break
|
||||
default:
|
||||
router.push('/home')
|
||||
break
|
||||
|
@ -253,29 +288,29 @@
|
|||
src: url('~@/assets/newHome/font/header-typeface.ttf');
|
||||
}
|
||||
.home-header {
|
||||
height: 64px;
|
||||
height: 0.64rem;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 0 190px;
|
||||
padding: 0 1rem;
|
||||
background-color: rgba(0, 0, 25, 0.7);
|
||||
position: fixed;
|
||||
z-index: 1000;
|
||||
top: 0;
|
||||
div {
|
||||
color: #fff;
|
||||
font-size: 16px;
|
||||
font-size: 0.16rem;
|
||||
}
|
||||
.name {
|
||||
font-size: 22px;
|
||||
font-size: 0.22rem;
|
||||
font-family: header-typeface;
|
||||
margin-right: 20px;
|
||||
margin-right: 0.2rem;
|
||||
}
|
||||
.nav {
|
||||
width: 120px;
|
||||
height: 64px;
|
||||
line-height: 64px;
|
||||
width: 1.2rem;
|
||||
height: 0.64rem;
|
||||
line-height: 0.64rem;
|
||||
text-align: center;
|
||||
}
|
||||
.nav:hover {
|
||||
|
@ -288,32 +323,33 @@
|
|||
color: #fff !important;
|
||||
}
|
||||
.info {
|
||||
width: 200px;
|
||||
margin-left: 20px;
|
||||
width: 2rem;
|
||||
margin-left: 0.2rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
.img {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border-radius: 10px;
|
||||
width: 0.3rem;
|
||||
height: 0.3rem;
|
||||
border-radius: 0.1rem;
|
||||
background: url('~@/assets/newHome/user.png') no-repeat;
|
||||
background-size: 100%;
|
||||
}
|
||||
span {
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
margin-left: 8px;
|
||||
margin-right: 6px;
|
||||
font-size: 16px;
|
||||
height: 0.3rem;
|
||||
line-height: 0.3rem;
|
||||
margin-left: 0.08rem;
|
||||
margin-right: 0.06rem;
|
||||
font-size: 0.16rem;
|
||||
}
|
||||
.name {
|
||||
max-width: 75px;
|
||||
max-width: 0.75rem;
|
||||
overflow: hidden;
|
||||
}
|
||||
.out {
|
||||
cursor: pointer;
|
||||
padding: 0 16px;
|
||||
border-left: 1px solid #666;
|
||||
// padding: 0 0.16rem;
|
||||
padding: 0 0.04rem 0 0.1rem;
|
||||
border-left: 0.01rem solid #666;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -355,41 +391,41 @@
|
|||
}
|
||||
}
|
||||
.mynotice {
|
||||
width: 250px;
|
||||
height: 300px;
|
||||
width: 2.5rem;
|
||||
height: 3rem;
|
||||
background: #eee;
|
||||
border-radius: 5px;
|
||||
border-radius: 0.05rem;
|
||||
position: absolute;
|
||||
top: 45px;
|
||||
right: 310px;
|
||||
top: 0.45rem;
|
||||
right: 3.1rem;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
.mynotice::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
:deep(.ant-list-item) {
|
||||
border-bottom: 1px solid #ccc;
|
||||
border-bottom: 0.01rem solid #ccc;
|
||||
}
|
||||
:deep(.ant-list-item-meta-title) {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
padding: 0 5px;
|
||||
padding: 0 0.05rem;
|
||||
a {
|
||||
width: 150px;
|
||||
width: 1.5rem;
|
||||
// 超出显示...
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
button {
|
||||
width: 70px;
|
||||
height: 25px;
|
||||
width: 0.7rem;
|
||||
height: 0.25rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
span {
|
||||
font-size: 10px;
|
||||
font-size: 0.1rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -306,6 +306,7 @@
|
|||
}
|
||||
|
||||
function toView(type, item) {
|
||||
debugger
|
||||
if (type === 'apply') {
|
||||
// window.open(newpage.href, '_blank')
|
||||
router.push({
|
||||
|
|
|
@ -267,6 +267,7 @@
|
|||
}
|
||||
|
||||
function toView(type, id, name, dataResourceId) {
|
||||
debugger
|
||||
if (type === 'apply') {
|
||||
// window.open(newpage.href, '_blank')
|
||||
router.push({
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
<!--
|
||||
* @Author: hisense.liangjunhua
|
||||
* @Date: 2022-06-14 09:43:49
|
||||
* @LastEditors: hisense.liangjunhua
|
||||
* @LastEditTime: 2022-06-15 18:19:22
|
||||
* @Description: 告诉大家这是什么
|
||||
-->
|
||||
<template>
|
||||
<div>
|
||||
<div id="apply-container">
|
||||
|
@ -6,6 +13,9 @@
|
|||
<algorithm-details
|
||||
v-else-if="showView === 'algorithm-details'"
|
||||
></algorithm-details>
|
||||
<application-details
|
||||
v-else-if="showView === 'application-details'"
|
||||
></application-details>
|
||||
<ability-to-recommend-bottom></ability-to-recommend-bottom>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -17,7 +27,9 @@
|
|||
import DetailsView from './components/DetailsView.vue'
|
||||
import AbilityToRecommendBottom from '@/views/home/components/AbilityToRecommendBottom'
|
||||
import AlgorithmDetails from '@/views/detailsAll/AlgorithmDetails'
|
||||
|
||||
import ApplicationDetails from '@/views/detailsAll/ApplicationDetails'
|
||||
import { selectOne } from '@/api/home'
|
||||
import { useRouter } from 'vue-router'
|
||||
export default defineComponent({
|
||||
name: '',
|
||||
props: {},
|
||||
|
@ -26,6 +38,7 @@
|
|||
DetailsView,
|
||||
AbilityToRecommendBottom,
|
||||
AlgorithmDetails,
|
||||
ApplicationDetails,
|
||||
},
|
||||
setup() {
|
||||
const formState = reactive({
|
||||
|
@ -62,11 +75,36 @@
|
|||
label: '交通运输局',
|
||||
},
|
||||
])
|
||||
const showView = ref('algorithm-details')
|
||||
const router = useRouter()
|
||||
const id = router.currentRoute.value.query.id
|
||||
const obj = JSON.parse(window.sessionStorage.getItem('preview'))
|
||||
let showView = ref('algorithm-details')
|
||||
const init = () => {
|
||||
if (id) {
|
||||
selectOne(id).then((res) => {
|
||||
if (res.data.data.type == '组件服务') {
|
||||
showView.value = 'algorithm-details'
|
||||
} else {
|
||||
showView.value = 'application-details'
|
||||
}
|
||||
})
|
||||
} else if (obj) {
|
||||
console.log('obj============>', obj)
|
||||
if (obj.type == '组件服务') {
|
||||
showView.value = 'algorithm-details'
|
||||
} else {
|
||||
showView.value = 'application-details'
|
||||
}
|
||||
}
|
||||
}
|
||||
init()
|
||||
return {
|
||||
formState,
|
||||
options,
|
||||
showView,
|
||||
init,
|
||||
router,
|
||||
id,
|
||||
}
|
||||
},
|
||||
})
|
||||
|
|
|
@ -29,8 +29,8 @@
|
|||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
p-id="2156"
|
||||
width="25"
|
||||
height="25"
|
||||
width="0.25rem"
|
||||
height="0.25rem"
|
||||
v-show="selectId == val.key"
|
||||
>
|
||||
<path
|
||||
|
@ -65,8 +65,8 @@
|
|||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
p-id="2156"
|
||||
width="25"
|
||||
height="25"
|
||||
width="0.25rem"
|
||||
height="0.25rem"
|
||||
v-show="selectId == child.key"
|
||||
>
|
||||
<path
|
||||
|
@ -343,48 +343,48 @@
|
|||
// .wrapper {
|
||||
// height: 100%;
|
||||
// width: 100%;
|
||||
// padding: 20px;
|
||||
// padding: .2rem;
|
||||
// .wrapper-title {
|
||||
// height: 28px;
|
||||
// height: .28rem;
|
||||
// width: 100%;
|
||||
// margin-bottom: 25px;
|
||||
// margin-bottom: .25rem;
|
||||
// .wrapper-title-name {
|
||||
// width: 100%;
|
||||
// height: 17px;
|
||||
// font-size: 18px;
|
||||
// height: .17rem;
|
||||
// font-size: .18rem;
|
||||
// font-family: 'AlibabaPuHuiTiR';
|
||||
// font-weight: 400;
|
||||
// color: #0058e1;
|
||||
// line-height: 34px;
|
||||
// line-height: .34rem;
|
||||
// }
|
||||
// .wrapper-title-yangshi {
|
||||
// width: 40px;
|
||||
// height: 3px;
|
||||
// width: .4rem;
|
||||
// height: .03rem;
|
||||
// background: #0058e1;
|
||||
// border-radius: 2px;
|
||||
// margin-top: 20px;
|
||||
// margin-left: 15px;
|
||||
// border-radius: .02rem;
|
||||
// margin-top: .2rem;
|
||||
// margin-left: .15rem;
|
||||
// }
|
||||
// }
|
||||
// .wrapper-title-left-tree {
|
||||
// overflow-y: auto;
|
||||
// height: 80%;
|
||||
// width: 210px;
|
||||
// width: 2.1rem;
|
||||
// }
|
||||
// .wrapper-title-left-tree::-webkit-scrollbar {
|
||||
// width: 5px;
|
||||
// height: 5px;
|
||||
// width: .05rem;
|
||||
// height: .05rem;
|
||||
// }
|
||||
// .wrapper-title-left-tree::-webkit-scrollbar-thumb {
|
||||
// border-radius: 5px;
|
||||
// border-radius: .05rem;
|
||||
// background-color: #0058e1;
|
||||
// }
|
||||
// .wrapper-title-left-tree::-webkit-scrollbar-track {
|
||||
// background-color: transparent;
|
||||
// }
|
||||
// :deep(.ant-tree-treenode) {
|
||||
// margin-top: 10px;
|
||||
// height: 23px;
|
||||
// margin-top: .1rem;
|
||||
// height: .23rem;
|
||||
// overflow: hidden;
|
||||
// text-overflow: ellipsis;
|
||||
// display: -webkit-box;
|
||||
|
@ -395,13 +395,13 @@
|
|||
.primaryNode {
|
||||
.top {
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
height: .4rem;
|
||||
background: rgba(0, 135, 225, 0.1);
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 0 10px;
|
||||
margin-top: 8px;
|
||||
padding: 0 .1rem;
|
||||
margin-top: .08rem;
|
||||
}
|
||||
.top:hover {
|
||||
cursor: pointer;
|
||||
|
@ -422,16 +422,16 @@
|
|||
.bottom {
|
||||
width: 100%;
|
||||
background: rgba(244, 245, 248, 0.8);
|
||||
padding: 0 10px;
|
||||
// margin-bottom: 8px;
|
||||
padding: 0 .1rem;
|
||||
// margin-bottom: .08rem;
|
||||
.up {
|
||||
cursor: pointer;
|
||||
height: 40px;
|
||||
height: .4rem;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
border-top: 1px solid #ccc;
|
||||
padding: 0 10px;
|
||||
border-top: .01rem solid #ccc;
|
||||
padding: 0 .1rem;
|
||||
& > div {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
|
@ -455,9 +455,9 @@
|
|||
}
|
||||
}
|
||||
.select {
|
||||
padding: 0 10px 0 0;
|
||||
padding: 0 .1rem 0 0;
|
||||
.name {
|
||||
width: 170px;
|
||||
width: 1.7rem;
|
||||
color: #0058e1;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
@ -473,11 +473,11 @@
|
|||
width: 100%;
|
||||
.child {
|
||||
cursor: pointer;
|
||||
height: 40px;
|
||||
height: .4rem;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 0 10px;
|
||||
padding: 0 .1rem;
|
||||
& > div {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
|
@ -502,7 +502,7 @@
|
|||
}
|
||||
.select2 {
|
||||
.name {
|
||||
width: 170px;
|
||||
width: 1.7rem;
|
||||
color: #0058e1;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
@ -510,7 +510,7 @@
|
|||
color: #0058e1;
|
||||
font-weight: 600;
|
||||
}
|
||||
padding: 0 10px 0 0;
|
||||
padding: 0 .1rem 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,730 @@
|
|||
<template>
|
||||
<home-header></home-header>
|
||||
<div class="survey-left" @click="hidePop()">
|
||||
<div ref="cityMap" class="city-map-content-echarts"></div>
|
||||
<div class="box xha" v-show="xhaFlag">
|
||||
<div class="top">
|
||||
<span>西海岸</span>
|
||||
<span>
|
||||
跳转至该站点
|
||||
<i></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="item">
|
||||
<span>基础设施</span>
|
||||
<i></i>
|
||||
<span>35282</span>
|
||||
</div>
|
||||
<div class="item">
|
||||
<span>数据资源</span>
|
||||
<i></i>
|
||||
<span>11</span>
|
||||
</div>
|
||||
<div class="item">
|
||||
<span>应用资源</span>
|
||||
<i></i>
|
||||
<span>23</span>
|
||||
</div>
|
||||
<div class="item">
|
||||
<span>组件服务</span>
|
||||
<i></i>
|
||||
<span>8</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="zx"></div>
|
||||
</div>
|
||||
<div class="box lsq" v-show="lsqFlag">
|
||||
<div class="top">
|
||||
<span>崂山区</span>
|
||||
<span>
|
||||
跳转至该站点
|
||||
<i></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="item">
|
||||
<span>基础设施</span>
|
||||
<i></i>
|
||||
<span>20135</span>
|
||||
</div>
|
||||
<div class="item">
|
||||
<span>数据资源</span>
|
||||
<i></i>
|
||||
<span>857</span>
|
||||
</div>
|
||||
<div class="item">
|
||||
<span>应用资源</span>
|
||||
<i></i>
|
||||
<span>28</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="zx"></div>
|
||||
</div>
|
||||
</div>
|
||||
<ability-to-recommend-bottom></ability-to-recommend-bottom>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
import HomeHeader from '@/views/home/components/header'
|
||||
import AbilityToRecommendBottom from '@/views/home/components/AbilityToRecommendBottom'
|
||||
import geoJson from '/public/static/echartsMapJson/qingdao.json'
|
||||
// const loadedDataUrl = '/public/static/echartsMapJson/qingdao.json'
|
||||
const echarts = require('echarts')
|
||||
const xhaFlag = ref(false)
|
||||
const lsqFlag = ref(false)
|
||||
const areaMenuList = ref([
|
||||
// 全市概况
|
||||
// {
|
||||
// name: '市南区',
|
||||
// code: 'shinan',
|
||||
// className: 'classsn',
|
||||
// value: 0,
|
||||
// },
|
||||
{
|
||||
name: '市北区',
|
||||
code: 'shibei',
|
||||
className: 'classsb',
|
||||
value: 0,
|
||||
},
|
||||
{
|
||||
name: '西海岸',
|
||||
code: 'xihaian',
|
||||
className: 'classxha',
|
||||
value: 0.2,
|
||||
},
|
||||
{
|
||||
name: '崂山区',
|
||||
code: 'laoshan',
|
||||
className: 'classls',
|
||||
value: 0.2,
|
||||
},
|
||||
{
|
||||
name: '李沧区',
|
||||
code: 'licang',
|
||||
className: 'classlc',
|
||||
value: 0,
|
||||
},
|
||||
{
|
||||
name: '城阳区',
|
||||
code: 'chengyang',
|
||||
className: 'classcy',
|
||||
value: 0,
|
||||
},
|
||||
{
|
||||
name: '即墨区',
|
||||
code: 'jimo',
|
||||
className: 'classjm',
|
||||
value: 0,
|
||||
},
|
||||
{
|
||||
name: '胶州市',
|
||||
code: 'jiaozhou',
|
||||
className: 'classjz',
|
||||
value: 0,
|
||||
},
|
||||
|
||||
{
|
||||
name: '平度市',
|
||||
code: 'pingdu',
|
||||
className: 'classpd',
|
||||
value: 0,
|
||||
},
|
||||
|
||||
{
|
||||
name: '莱西市',
|
||||
code: 'laixi',
|
||||
className: 'classlx',
|
||||
value: 0,
|
||||
},
|
||||
])
|
||||
|
||||
let option = {}
|
||||
let myChart = {}
|
||||
// 初始化地图
|
||||
const initMap = () => {
|
||||
const center = geoJson.features.map((item) => {
|
||||
const geoAreaName = item.properties.name // geo文件中的地理名称
|
||||
return {
|
||||
name: geoAreaName,
|
||||
coord: item.properties.centroid,
|
||||
}
|
||||
})
|
||||
// 坐标map
|
||||
var geoCoordMap = {}
|
||||
center.forEach((val) => {
|
||||
geoCoordMap[val.name] = [val.coord[0], val.coord[1]]
|
||||
if (val.name === '西海岸') {
|
||||
geoCoordMap[val.name] = [
|
||||
val.coord[0] - 0.057495,
|
||||
val.coord[1] - 0.119879,
|
||||
]
|
||||
} else if (val.name === '市北区') {
|
||||
geoCoordMap[val.name] = [val.coord[0], val.coord[1]]
|
||||
} else if (val.name === '市南区') {
|
||||
geoCoordMap[val.name] = [120.364482, 36.065671]
|
||||
}
|
||||
})
|
||||
console.log('所有坐标===============>', geoCoordMap)
|
||||
// 数据信息
|
||||
var customerBatteryCityData = []
|
||||
areaMenuList.value.forEach((val) => {
|
||||
customerBatteryCityData.push({ name: val.name, value: val.num })
|
||||
})
|
||||
myChart = echarts.init(
|
||||
document.querySelectorAll('.city-map-content-echarts')[0]
|
||||
)
|
||||
echarts.registerMap('qingdao', geoJson)
|
||||
const img = new Image()
|
||||
img.src = '/src/assets/home/map-piece.png'
|
||||
const imgActive = new Image()
|
||||
imgActive.src = '/src/assets/home/map-piece-active.png'
|
||||
option = {
|
||||
visualMap: {
|
||||
//图例值控制
|
||||
min: 0,
|
||||
max: 1,
|
||||
calculable: true,
|
||||
show: false,
|
||||
color: ['#f44336', '#fc9700', '#ffde00', '#fff'],
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
},
|
||||
},
|
||||
geo: [
|
||||
{
|
||||
map: 'qingdao',
|
||||
roam: false, // 是否允许缩放
|
||||
aspectScale: 0.8,
|
||||
zoom: 1.1, // 默认显示级别
|
||||
top: 50,
|
||||
itemStyle: {
|
||||
borderColor: '#72ccff',
|
||||
borderWidth: 2,
|
||||
areaColor: {
|
||||
image: img,
|
||||
repeat: 'repeat',
|
||||
},
|
||||
},
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
areaColor: {
|
||||
image: imgActive,
|
||||
repeat: 'repeat',
|
||||
},
|
||||
borderWidth: 2,
|
||||
},
|
||||
label: {
|
||||
color: '#fff',
|
||||
},
|
||||
},
|
||||
regions: [
|
||||
{
|
||||
name: '市南区',
|
||||
itemStyle: {
|
||||
areaColor: {
|
||||
image: imgActive,
|
||||
repeat: 'repeat',
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
z: 2,
|
||||
silent: true,
|
||||
},
|
||||
],
|
||||
series: [
|
||||
{
|
||||
type: 'scatter',
|
||||
coordinateSystem: 'geo',
|
||||
z: 5,
|
||||
symbolSize: [0.1, 0.1],
|
||||
data: [
|
||||
// {
|
||||
// city: '市南区',
|
||||
// value: [120.364482, 36.065671],
|
||||
// },
|
||||
],
|
||||
},
|
||||
// 地图
|
||||
{
|
||||
type: 'map',
|
||||
mapType: 'qingdao',
|
||||
geoIndex: -1,
|
||||
aspectScale: 0.8,
|
||||
zoom: 1.1, // 默认显示级别
|
||||
top: 55,
|
||||
z: 1,
|
||||
itemStyle: {
|
||||
areaColor: '#1e7dc0',
|
||||
borderColor: '#72ccff',
|
||||
borderWidth: 2,
|
||||
},
|
||||
silent: true,
|
||||
tooltip: {
|
||||
show: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
geoIndex: 0,
|
||||
// coordinateSystem: 'geo',
|
||||
showLegendSymbol: true,
|
||||
type: 'map',
|
||||
roam: true,
|
||||
label: {
|
||||
normal: {
|
||||
show: false,
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
},
|
||||
},
|
||||
emphasis: {
|
||||
show: false,
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
itemStyle: {
|
||||
normal: {
|
||||
borderColor: '#2ab8ff',
|
||||
borderWidth: 1.5,
|
||||
areaColor: '#12235c',
|
||||
},
|
||||
emphasis: {
|
||||
areaColor: '#2AB8FF',
|
||||
borderWidth: 0,
|
||||
color: 'red',
|
||||
},
|
||||
},
|
||||
map: 'qingdao', // 使用
|
||||
data: customerBatteryCityData,
|
||||
// data: this.difficultData //热力图数据 不同区域 不同的底色
|
||||
},
|
||||
],
|
||||
}
|
||||
const convertData = function (data) {
|
||||
let res = []
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
let dataItem = data[i]
|
||||
if (dataItem.name === '西海岸' || dataItem.name === '崂山区') {
|
||||
let fromCoord = geoCoordMap[dataItem.name]
|
||||
let toCoord = [120.364482, 36.065671]
|
||||
if (fromCoord && toCoord) {
|
||||
res.push([
|
||||
{
|
||||
coord: fromCoord,
|
||||
value: dataItem.value,
|
||||
},
|
||||
{
|
||||
coord: toCoord,
|
||||
},
|
||||
])
|
||||
}
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
const convertData2 = function (data) {
|
||||
let res = []
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
let dataItem = data[i]
|
||||
if (dataItem.name === '西海岸' || dataItem.name === '崂山区') {
|
||||
let fromCoord = [120.364482, 36.065671]
|
||||
let toCoord = geoCoordMap[dataItem.name]
|
||||
if (fromCoord && toCoord) {
|
||||
res.push([
|
||||
{
|
||||
coord: fromCoord,
|
||||
value: dataItem.value,
|
||||
},
|
||||
{
|
||||
coord: toCoord,
|
||||
},
|
||||
])
|
||||
}
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
const notShowData = function (data) {
|
||||
let res = []
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
let dataItem = data[i]
|
||||
if (dataItem.name !== '西海岸' && dataItem.name !== '崂山区') {
|
||||
let fromCoord = [120.364482, 36.065671]
|
||||
let toCoord = geoCoordMap[dataItem.name]
|
||||
if (fromCoord && toCoord) {
|
||||
res.push([
|
||||
{
|
||||
coord: fromCoord,
|
||||
value: dataItem.value,
|
||||
},
|
||||
{
|
||||
coord: toCoord,
|
||||
},
|
||||
])
|
||||
}
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
;[['市南区', areaMenuList.value]].forEach(function (item) {
|
||||
option.series.push(
|
||||
// 显示箭头
|
||||
{
|
||||
type: 'lines',
|
||||
zlevel: 2,
|
||||
effect: {
|
||||
show: true,
|
||||
period: 4, //箭头指向速度,值越小速度越快
|
||||
trailLength: 0.02, //特效尾迹长度[0,1]值越大,尾迹越长重
|
||||
symbol: 'arrow', //箭头图标
|
||||
symbolSize: 5, //图标大小
|
||||
},
|
||||
lineStyle: {
|
||||
normal: {
|
||||
width: 1, //尾迹线条宽度
|
||||
opacity: 1, //尾迹线条透明度
|
||||
curveness: 0.3, //尾迹线条曲直度
|
||||
},
|
||||
},
|
||||
data: convertData(item[1]),
|
||||
},
|
||||
{
|
||||
type: 'lines',
|
||||
zlevel: 2,
|
||||
effect: {
|
||||
show: true,
|
||||
period: 4, //箭头指向速度,值越小速度越快
|
||||
trailLength: 0.02, //特效尾迹长度[0,1]值越大,尾迹越长重
|
||||
symbol: 'arrow', //箭头图标
|
||||
symbolSize: 5, //图标大小
|
||||
},
|
||||
lineStyle: {
|
||||
normal: {
|
||||
width: 1, //尾迹线条宽度
|
||||
opacity: 1, //尾迹线条透明度
|
||||
curveness: -0.3, //尾迹线条曲直度
|
||||
},
|
||||
},
|
||||
data: convertData2(item[1]),
|
||||
},
|
||||
// 不显示箭头
|
||||
{
|
||||
type: 'lines',
|
||||
zlevel: 2,
|
||||
effect: {
|
||||
show: false,
|
||||
period: 4, //箭头指向速度,值越小速度越快
|
||||
trailLength: 0.02, //特效尾迹长度[0,1]值越大,尾迹越长重
|
||||
symbol: 'arrow', //箭头图标
|
||||
symbolSize: 5, //图标大小
|
||||
},
|
||||
lineStyle: {
|
||||
normal: {
|
||||
width: 1, //尾迹线条宽度
|
||||
opacity: 1, //尾迹线条透明度
|
||||
curveness: -0.3, //尾迹线条曲直度
|
||||
},
|
||||
},
|
||||
data: notShowData(item[1]),
|
||||
},
|
||||
{
|
||||
type: 'effectScatter',
|
||||
coordinateSystem: 'geo',
|
||||
zlevel: 2,
|
||||
rippleEffect: {
|
||||
//涟漪特效
|
||||
period: 3, //动画时间,值越小速度越快
|
||||
brushType: 'stroke', //波纹绘制方式 stroke, fill
|
||||
scale: 8, //波纹圆环最大限制,值越大波纹越大
|
||||
},
|
||||
label: {
|
||||
normal: {
|
||||
show: false,
|
||||
position: 'right', //显示位置
|
||||
offset: [5, 0], //偏移设置
|
||||
formatter: function (params) {
|
||||
//圆环显示文字
|
||||
return params.data.name
|
||||
},
|
||||
fontSize: 13,
|
||||
},
|
||||
emphasis: {
|
||||
show: true,
|
||||
},
|
||||
},
|
||||
symbol: 'circle',
|
||||
symbolSize: function (val) {
|
||||
return 5 + val[2] * 5 //圆环大小
|
||||
},
|
||||
itemStyle: {
|
||||
normal: {
|
||||
show: false,
|
||||
color: '#f00',
|
||||
},
|
||||
},
|
||||
data: item[1].map(function (dataItem) {
|
||||
return {
|
||||
name: dataItem.name,
|
||||
value: geoCoordMap[dataItem.name].concat([dataItem.value]),
|
||||
}
|
||||
}),
|
||||
},
|
||||
//被攻击点
|
||||
{
|
||||
type: 'scatter',
|
||||
coordinateSystem: 'geo',
|
||||
zlevel: 2,
|
||||
rippleEffect: {
|
||||
period: 4,
|
||||
brushType: 'stroke',
|
||||
scale: 4,
|
||||
},
|
||||
label: {
|
||||
normal: {
|
||||
show: true,
|
||||
position: 'bottom',
|
||||
//offset:[5, 0],
|
||||
color: '#6b5858',
|
||||
formatter: '{b}',
|
||||
textStyle: {
|
||||
color: '#6b5858',
|
||||
fontSize: 18,
|
||||
fontWeight: 600,
|
||||
},
|
||||
},
|
||||
emphasis: {
|
||||
show: true,
|
||||
color: '#f60',
|
||||
},
|
||||
},
|
||||
symbol: 'image://' + require('@/assets/home/rb.png'),
|
||||
symbolSize: 40,
|
||||
symbolOffset: [0, -25],
|
||||
data: [
|
||||
{
|
||||
name: '',
|
||||
value: geoCoordMap[item[0]].concat([10]),
|
||||
},
|
||||
],
|
||||
},
|
||||
// 黄岛崂山
|
||||
{
|
||||
type: 'scatter',
|
||||
coordinateSystem: 'geo',
|
||||
zlevel: 2,
|
||||
rippleEffect: {
|
||||
period: 4,
|
||||
brushType: 'stroke',
|
||||
scale: 4,
|
||||
},
|
||||
label: {
|
||||
normal: {
|
||||
show: true,
|
||||
position: 'bottom',
|
||||
//offset:[5, 0],
|
||||
color: '#fbd500',
|
||||
formatter: '{b}',
|
||||
textStyle: {
|
||||
color: '#fbd500',
|
||||
fontSize: 18,
|
||||
fontWeight: 600,
|
||||
},
|
||||
},
|
||||
emphasis: {
|
||||
show: true,
|
||||
color: '#f60',
|
||||
},
|
||||
},
|
||||
symbol: 'image://' + require('@/assets/home/yb.png'),
|
||||
symbolSize: 40,
|
||||
symbolOffset: [0, -20],
|
||||
data: [
|
||||
{
|
||||
name: '西海岸',
|
||||
value: geoCoordMap['西海岸'].concat([10]),
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 'scatter',
|
||||
coordinateSystem: 'geo',
|
||||
zlevel: 2,
|
||||
rippleEffect: {
|
||||
period: 4,
|
||||
brushType: 'stroke',
|
||||
scale: 4,
|
||||
},
|
||||
label: {
|
||||
normal: {
|
||||
show: true,
|
||||
position: 'bottom',
|
||||
//offset:[5, 0],
|
||||
color: '#fbd500',
|
||||
formatter: '{b}',
|
||||
textStyle: {
|
||||
color: '#fbd500',
|
||||
fontSize: 18,
|
||||
fontWeight: 600,
|
||||
},
|
||||
},
|
||||
emphasis: {
|
||||
show: true,
|
||||
color: '#f60',
|
||||
},
|
||||
},
|
||||
symbol: 'image://' + require('@/assets/home/yb.png'),
|
||||
symbolSize: 40,
|
||||
symbolOffset: [0, -20],
|
||||
data: [
|
||||
{
|
||||
name: '崂山区',
|
||||
value: geoCoordMap['崂山区'].concat([10]),
|
||||
},
|
||||
],
|
||||
}
|
||||
)
|
||||
})
|
||||
console.log('echarts配置==================>', option)
|
||||
myChart.setOption(option)
|
||||
}
|
||||
const hidePop = () => {
|
||||
console.log('取消弹窗')
|
||||
xhaFlag.value = false
|
||||
lsqFlag.value = false
|
||||
}
|
||||
onMounted(() => {
|
||||
initMap()
|
||||
myChart.on('mouseover', function () {
|
||||
myChart.dispatchAction({
|
||||
type: 'downplay',
|
||||
})
|
||||
})
|
||||
myChart.on('click', function (params) {
|
||||
console.log(params)
|
||||
params.event.event.stopPropagation()
|
||||
switch (params.name) {
|
||||
case '西海岸':
|
||||
xhaFlag.value = !xhaFlag.value
|
||||
lsqFlag.value = false
|
||||
break
|
||||
case '崂山区':
|
||||
lsqFlag.value = !lsqFlag.value
|
||||
xhaFlag.value = false
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
})
|
||||
})
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.survey-left {
|
||||
margin-top: 0.64rem;
|
||||
width: 19.2rem;
|
||||
height: 7.5rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
position: relative;
|
||||
background: url('~@/assets/home/echarts_bg.png') no-repeat;
|
||||
background-size: 100%;
|
||||
.city-map-content-echarts {
|
||||
width: 11rem;
|
||||
height: 7rem;
|
||||
margin: 0rem auto;
|
||||
}
|
||||
|
||||
.box {
|
||||
position: absolute;
|
||||
width: 5.18rem;
|
||||
height: 2.26rem;
|
||||
padding: 0.1rem 0.35rem 0;
|
||||
background: url('~@/assets/home/box_bg.png') no-repeat;
|
||||
background-size: 100%;
|
||||
.top {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
border-bottom: 1px solid rgba(161, 160, 161, 0.637);
|
||||
font-size: 0.22rem;
|
||||
font-weight: 800;
|
||||
span:nth-of-type(1) {
|
||||
font-size: 0.22rem;
|
||||
font-weight: 800;
|
||||
}
|
||||
span:nth-of-type(2) {
|
||||
cursor: pointer;
|
||||
i {
|
||||
display: inline-block;
|
||||
width: 0.14rem;
|
||||
height: 0.14rem;
|
||||
background: url('~@/assets/home/tz.png') no-repeat;
|
||||
background-size: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
.bottom {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
margin-top: 0.1rem;
|
||||
font-size: 0.22rem;
|
||||
font-weight: 800;
|
||||
.item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
i {
|
||||
display: inline-block;
|
||||
width: 0.28rem;
|
||||
height: 0.28rem;
|
||||
margin: 0.05rem 0;
|
||||
}
|
||||
}
|
||||
.item:nth-of-type(1) > i {
|
||||
background: url('~@/assets/home/map_jcss.png') no-repeat center;
|
||||
background-size: contain;
|
||||
}
|
||||
.item:nth-of-type(2) > i {
|
||||
background: url('~@/assets/home/map_sjzy.png') no-repeat center;
|
||||
background-size: contain;
|
||||
}
|
||||
.item:nth-of-type(3) > i {
|
||||
background: url('~@/assets/home/map_yyzy.png') no-repeat center;
|
||||
background-size: contain;
|
||||
}
|
||||
.item:nth-of-type(4) > i {
|
||||
background: url('~@/assets/home/map_zjfw.png') no-repeat center;
|
||||
background-size: contain;
|
||||
}
|
||||
}
|
||||
.zx {
|
||||
width: 1.5rem;
|
||||
height: 0.66rem;
|
||||
background: url('~@/assets/home/zx.png') no-repeat;
|
||||
background-size: 100%;
|
||||
position: relative;
|
||||
top: -0.9rem;
|
||||
left: -1.84rem;
|
||||
}
|
||||
}
|
||||
.xha {
|
||||
top: 5.05rem;
|
||||
left: 2.5rem;
|
||||
background: url('~@/assets/home/box_bg2.png') no-repeat;
|
||||
background-size: 100%;
|
||||
.zx {
|
||||
background: url('~@/assets/home/zx2.png') no-repeat;
|
||||
top: -0.9rem;
|
||||
left: 2.82rem;
|
||||
}
|
||||
}
|
||||
.lsq {
|
||||
top: 3.7rem;
|
||||
left: 11.95rem;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -116,28 +116,28 @@
|
|||
src: url('~@/assets/newHome/font/header-typeface.ttf');
|
||||
}
|
||||
.home-header {
|
||||
height: 64px;
|
||||
height: 0.64rem;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 0 210px;
|
||||
padding: 0 2.1rem;
|
||||
background-color: rgba(0, 0, 25, 0.7);
|
||||
position: fixed;
|
||||
z-index: 1000;
|
||||
div {
|
||||
color: #fff;
|
||||
font-size: 16px;
|
||||
font-size: 0.16rem;
|
||||
}
|
||||
.name {
|
||||
font-size: 22px;
|
||||
font-size: 0.22rem;
|
||||
font-family: header-typeface;
|
||||
margin-right: 20px;
|
||||
margin-right: 0.2rem;
|
||||
}
|
||||
.nav {
|
||||
width: 144px;
|
||||
height: 64px;
|
||||
line-height: 64px;
|
||||
width: 1.44rem;
|
||||
height: 0.64rem;
|
||||
line-height: 0.64rem;
|
||||
text-align: center;
|
||||
}
|
||||
.nav:hover {
|
||||
|
@ -150,32 +150,32 @@
|
|||
color: #fff !important;
|
||||
}
|
||||
.info {
|
||||
width: 200px;
|
||||
margin-left: 20px;
|
||||
width: 2rem;
|
||||
margin-left: 0.2rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
.img {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border-radius: 10px;
|
||||
width: 0.3rem;
|
||||
height: 0.3rem;
|
||||
border-radius: 0.1rem;
|
||||
background: url('~@/assets/newHome/user.png') no-repeat;
|
||||
background-size: 100%;
|
||||
}
|
||||
span {
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
margin-left: 8px;
|
||||
margin-right: 6px;
|
||||
font-size: 16px;
|
||||
height: 0.3rem;
|
||||
line-height: 0.3rem;
|
||||
margin-left: 0.08rem;
|
||||
margin-right: 0.06rem;
|
||||
font-size: 0.16rem;
|
||||
}
|
||||
.name {
|
||||
max-width: 75px;
|
||||
max-width: 0.75rem;
|
||||
overflow: hidden;
|
||||
}
|
||||
.out {
|
||||
cursor: pointer;
|
||||
padding: 0 16px;
|
||||
border-left: 1px solid #666;
|
||||
padding: 0 0.16rem;
|
||||
border-left: 0.01rem solid #666;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -114,7 +114,7 @@
|
|||
display: flex;
|
||||
justify-content: center;
|
||||
background: url('~@/assets/newHome/recommendation-ability-bg.png') no-repeat;
|
||||
background-size: contain;
|
||||
background-size: cover;
|
||||
.recommendation-ability-son {
|
||||
width: 13rem;
|
||||
left: 50%;
|
||||
|
|
|
@ -73,7 +73,7 @@
|
|||
</div>
|
||||
<div class="ability-to-type">
|
||||
<div class="title">能力类型选择</div>
|
||||
<div class="content">
|
||||
<div class="ability-to-type-content">
|
||||
<div
|
||||
v-for="item in abilityToType"
|
||||
:key="item"
|
||||
|
@ -93,7 +93,7 @@
|
|||
v-if="abilityToTypeFunctionData == '组件服务'"
|
||||
>
|
||||
<div class="title">组件类型选择</div>
|
||||
<div class="content">
|
||||
<div class="component-type-content">
|
||||
<!-- <a-checkbox-group
|
||||
v-model:value="value1"
|
||||
name="checkboxgroup"
|
||||
|
@ -118,6 +118,7 @@
|
|||
</template>
|
||||
<script setup>
|
||||
import { gongZuoZhuangTai } from '@/api/home.js'
|
||||
import { message } from 'ant-design-vue'
|
||||
import { ref, watch } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useStore } from 'vuex'
|
||||
|
@ -155,7 +156,6 @@
|
|||
}
|
||||
let componentTypeValueOld = ref('')
|
||||
function componentTypeValueFunction(item) {
|
||||
debugger
|
||||
if (componentTypeValueOld.value != item) {
|
||||
componentTypeValue.value = item
|
||||
componentTypeValueOld.value = item
|
||||
|
@ -167,9 +167,17 @@
|
|||
const handleOk = (e) => {
|
||||
let snum = ref({})
|
||||
if (abilityToTypeFunctionData.value == '组件服务') {
|
||||
snum.value = {
|
||||
abilityToType: abilityToTypeFunctionData.value,
|
||||
componentTypeValue: componentTypeValue.value,
|
||||
if (!componentTypeValue.value || componentTypeValue.value == '') {
|
||||
message.error('请选择组件类型!')
|
||||
return
|
||||
} else if (componentTypeValue.value !== '智能算法') {
|
||||
message.error('功能开发中!')
|
||||
return
|
||||
} else {
|
||||
snum.value = {
|
||||
abilityToType: abilityToTypeFunctionData.value,
|
||||
componentTypeValue: componentTypeValue.value,
|
||||
}
|
||||
}
|
||||
} else {
|
||||
snum.value = {
|
||||
|
@ -245,13 +253,14 @@
|
|||
position: fixed;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
margin-left: -260px;
|
||||
margin-top: -144px;
|
||||
font-size: 14px;
|
||||
margin-left: -2.6rem;
|
||||
margin-top: -1.44rem;
|
||||
font-size: 0.14rem;
|
||||
font-weight: 500;
|
||||
|
||||
.ant-radio-inner {
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
height: 0.16rem;
|
||||
width: 0.16rem;
|
||||
}
|
||||
.ant-radio-inner::after {
|
||||
background-color: unset;
|
||||
|
@ -260,46 +269,54 @@
|
|||
background-position: center;
|
||||
}
|
||||
.ant-modal-content {
|
||||
border-radius: 10px;
|
||||
border-radius: 0.1rem;
|
||||
.ability-to-type,
|
||||
.component-type {
|
||||
display: flex;
|
||||
margin-top: 20px;
|
||||
margin-top: 0.2rem;
|
||||
.title {
|
||||
white-space: nowrap;
|
||||
margin-right: 20px;
|
||||
margin-right: 0.2rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 26px;
|
||||
height: 0.26rem;
|
||||
}
|
||||
.content {
|
||||
.component-type-content {
|
||||
width: 100%;
|
||||
height: unset;
|
||||
border: unset;
|
||||
background: unset;
|
||||
.ant-radio-group {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr 1fr;
|
||||
grid-gap: 15px;
|
||||
grid-gap: 0.15rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ability-to-type {
|
||||
.content {
|
||||
.ability-to-type-content {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr 1fr;
|
||||
height: unset;
|
||||
border: unset;
|
||||
background: unset;
|
||||
div {
|
||||
margin-right: 15px;
|
||||
margin-right: 0.15rem;
|
||||
cursor: pointer;
|
||||
font-size: 14px;
|
||||
width: 90px;
|
||||
height: 26px;
|
||||
border-radius: 13px;
|
||||
font-size: 0.14rem;
|
||||
width: 0.9rem;
|
||||
height: 0.26rem;
|
||||
border-radius: 0.13rem;
|
||||
color: #333333;
|
||||
background: #f5f5f5;
|
||||
border: 1px #cccccc solid;
|
||||
border: 0.01rem #cccccc solid;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.ability-to-type-down {
|
||||
background: #0087ff;
|
||||
color: #fff;
|
||||
|
@ -307,26 +324,29 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ant-modal-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.ant-modal-footer {
|
||||
border: 0;
|
||||
text-align: center;
|
||||
padding-bottom: 20px;
|
||||
padding-bottom: 0.2rem;
|
||||
button {
|
||||
margin-right: 20px;
|
||||
border-radius: 8px;
|
||||
margin-right: 0.2rem;
|
||||
border-radius: 0.08rem;
|
||||
}
|
||||
}
|
||||
|
||||
.showBg {
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
height: 0.24rem;
|
||||
width: 0.24rem;
|
||||
background: url('~@/assets/home/shenqing.png') no-repeat;
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
margin-right: 10px;
|
||||
margin-right: 0.1rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -335,200 +355,213 @@
|
|||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding-bottom: 80px;
|
||||
padding-top: 78px;
|
||||
padding-bottom: 0.8rem;
|
||||
padding-top: 0.78rem;
|
||||
.title {
|
||||
font-size: 30px;
|
||||
font-size: 0.3rem;
|
||||
font-family: 'convergence-typeface';
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-bottom: 32px;
|
||||
.title-son {
|
||||
width: 34px;
|
||||
height: 3px;
|
||||
background: #0058e1;
|
||||
border-radius: 1px;
|
||||
margin-top: 18px;
|
||||
}
|
||||
}
|
||||
.content {
|
||||
width: 1300px;
|
||||
height: 480px;
|
||||
display: flex;
|
||||
padding-left: 20px;
|
||||
.content-empty {
|
||||
height: 220px;
|
||||
padding-top: 49px;
|
||||
}
|
||||
}
|
||||
.content > div {
|
||||
background: #f3f5f9;
|
||||
border: #eaedf2 1px solid;
|
||||
}
|
||||
.content > div:hover {
|
||||
border-radius: 2px;
|
||||
border: 1px solid #0058e1;
|
||||
box-shadow: 0px 8px 20px rgba(0, 88, 225, 0.3);
|
||||
}
|
||||
.content-miaoshui {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding-top: 20px;
|
||||
align-items: center;
|
||||
padding-bottom: 10px;
|
||||
.content-miaoshui-title {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
height: 30px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 1;
|
||||
-webkit-box-orient: vertical;
|
||||
margin-bottom: 12px;
|
||||
word-break: break-all;
|
||||
}
|
||||
.content-miaoshui-content {
|
||||
height: 120px;
|
||||
width: 298px;
|
||||
margin: 12px 10px 10px 10px;
|
||||
font-family: text-typeface;
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 6;
|
||||
-webkit-box-orient: vertical;
|
||||
margin-bottom: 12px;
|
||||
word-break: break-all;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
.shijain {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: bottom;
|
||||
margin-right: 16px;
|
||||
margin-left: 16px;
|
||||
div:first-child {
|
||||
margin-left: 16px;
|
||||
}
|
||||
}
|
||||
.shijain-content-bootom {
|
||||
margin-right: 16px;
|
||||
width: 80px;
|
||||
height: 24px;
|
||||
text-align: center;
|
||||
border: 1px solid #0058e1;
|
||||
cursor: pointer;
|
||||
color: #0058e1;
|
||||
}
|
||||
.shijain-content-bootom:hover {
|
||||
background: rgba(0, 88, 225, 0.3);
|
||||
}
|
||||
.content > div > div {
|
||||
height: 240px;
|
||||
width: 100%;
|
||||
}
|
||||
.one {
|
||||
height: 240px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-size: 100%;
|
||||
padding-top: 15px;
|
||||
.shijain {
|
||||
margin-top: 20px;
|
||||
}
|
||||
:deep(.ant-imag) {
|
||||
text-align: center;
|
||||
}
|
||||
:deep(.ant-image-img) {
|
||||
height: 210px;
|
||||
text-align: center;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
max-width: 298px;
|
||||
}
|
||||
}
|
||||
.bottom {
|
||||
height: 24px;
|
||||
font-size: 16px;
|
||||
width: 100px;
|
||||
margin-top: 40px;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
color: #000000;
|
||||
.gengduo {
|
||||
display: inline-block;
|
||||
margin-left: 4px;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
background: url('~@/assets/newHome/gd2.png') no-repeat;
|
||||
background-position: center;
|
||||
}
|
||||
}
|
||||
.bottom:hover {
|
||||
border-radius: 2px;
|
||||
background-color: rgba(1, 102, 255, 0.1);
|
||||
}
|
||||
.content > div {
|
||||
height: 480px;
|
||||
width: 310px;
|
||||
margin-right: 20px;
|
||||
}
|
||||
.fixedmount {
|
||||
height: 150px;
|
||||
display: flex;
|
||||
position: fixed;
|
||||
bottom: 256px;
|
||||
right: 190px;
|
||||
z-index: 10;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
.fixedmount div {
|
||||
width: 70px;
|
||||
height: 70px;
|
||||
border-radius: 4px;
|
||||
border: 1px #94aac9 solid;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
// justify-content: center;
|
||||
align-items: center;
|
||||
padding-top: 13px;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
background: #e3edfc;
|
||||
}
|
||||
.fixedmount div p:nth-child(2) {
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
height: 14px;
|
||||
font-size: 14px;
|
||||
line-height: 14px;
|
||||
color: #000000;
|
||||
// margin-top: 8px;
|
||||
}
|
||||
.fixedmount div:nth-child(1) p:nth-child(1) {
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
background: url('~@/assets/home/shenqing.png') no-repeat;
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
}
|
||||
.fixedmount div:nth-child(2) p:nth-child(1) {
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
background: url('~@/assets/home/shangjia.png') no-repeat;
|
||||
margin-bottom: 0.32rem;
|
||||
// width: 0.34rem;
|
||||
border-radius: 0.01rem;
|
||||
margin-top: 0.18rem;
|
||||
}
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 13rem;
|
||||
height: 4.8rem;
|
||||
display: flex;
|
||||
// padding-left: 0.2rem;
|
||||
.content-empty {
|
||||
height: 2.2rem;
|
||||
padding-top: 0.49rem;
|
||||
}
|
||||
background: #f3f5f9;
|
||||
border: #eaedf2 0.01rem solid;
|
||||
}
|
||||
|
||||
.content > div:hover {
|
||||
border-radius: 0.02rem;
|
||||
border: 0.01rem solid #0058e1;
|
||||
box-shadow: 0rem 0.08rem 0.2rem rgba(0, 88, 225, 0.3);
|
||||
}
|
||||
|
||||
.content-miaoshui {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding-top: 0.2rem;
|
||||
align-items: center;
|
||||
padding-bottom: 0.1rem;
|
||||
.content-miaoshui-title {
|
||||
padding-left: 0.05rem;
|
||||
padding-right: 0.05rem;
|
||||
font-size: 0.18rem;
|
||||
font-weight: bold;
|
||||
height: 0.3rem;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 1;
|
||||
-webkit-box-orient: vertical;
|
||||
margin-bottom: 0.12rem;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.content-miaoshui-content {
|
||||
height: 1.2rem;
|
||||
width: 2.98rem;
|
||||
margin: 0.12rem 0.1rem 0.1rem 0.1rem;
|
||||
font-family: text-typeface;
|
||||
font-size: 0.14rem;
|
||||
line-height: 0.2rem;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 6;
|
||||
-webkit-box-orient: vertical;
|
||||
margin-bottom: 0.12rem;
|
||||
word-break: break-all;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.shijain {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: bottom;
|
||||
margin-right: 0.16rem;
|
||||
margin-left: 0.16rem;
|
||||
div:first-child {
|
||||
margin-left: 0.16rem;
|
||||
}
|
||||
}
|
||||
|
||||
.shijain-content-bootom {
|
||||
margin-right: 0.16rem;
|
||||
width: 0.8rem;
|
||||
height: 0.24rem;
|
||||
text-align: center;
|
||||
border: 0.01rem solid #0058e1;
|
||||
cursor: pointer;
|
||||
color: #0058e1;
|
||||
}
|
||||
|
||||
.shijain-content-bootom:hover {
|
||||
background: rgba(0, 88, 225, 0.3);
|
||||
}
|
||||
|
||||
.content > div > div {
|
||||
height: 2.4rem;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.one {
|
||||
height: 2.4rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-size: 100%;
|
||||
padding-top: 0.15rem;
|
||||
.shijain {
|
||||
margin-top: 0.2rem;
|
||||
}
|
||||
|
||||
:deep(.ant-imag) {
|
||||
text-align: center;
|
||||
}
|
||||
:deep(.ant-image-img) {
|
||||
height: 2.1rem;
|
||||
text-align: center;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
max-width: 2.98rem;
|
||||
}
|
||||
}
|
||||
|
||||
.bottom {
|
||||
height: 0.24rem;
|
||||
font-size: 0.16rem;
|
||||
width: 1rem;
|
||||
margin-top: 0.4rem;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
color: #000000;
|
||||
|
||||
.gengduo {
|
||||
display: inline-block;
|
||||
margin-left: 0.04rem;
|
||||
width: 0.1rem;
|
||||
height: 0.1rem;
|
||||
background: url('~@/assets/newHome/gd2.png') no-repeat;
|
||||
background-position: center;
|
||||
}
|
||||
}
|
||||
|
||||
.bottom:hover {
|
||||
border-radius: 0.02rem;
|
||||
background-color: rgba(1, 102, 255, 0.1);
|
||||
}
|
||||
|
||||
.content > div {
|
||||
height: 4.8rem;
|
||||
width: 3.1rem;
|
||||
margin-right: 0.2rem;
|
||||
}
|
||||
|
||||
.fixedmount {
|
||||
height: 1.5rem;
|
||||
display: flex;
|
||||
position: fixed;
|
||||
bottom: 2.56rem;
|
||||
right: 1.9rem;
|
||||
z-index: 10;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.fixedmount div {
|
||||
width: 0.7rem;
|
||||
height: 0.7rem;
|
||||
border-radius: 0.04rem;
|
||||
border: 0.01rem #94aac9 solid;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
// justify-content: center;
|
||||
align-items: center;
|
||||
padding-top: 0.13rem;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
background: #e3edfc;
|
||||
}
|
||||
|
||||
.fixedmount div p:nth-child(2) {
|
||||
position: absolute;
|
||||
bottom: 0rem;
|
||||
height: 0.14rem;
|
||||
font-size: 0.14rem;
|
||||
line-height: 0.14rem;
|
||||
color: #000000;
|
||||
// margin-top: .08rem;
|
||||
}
|
||||
|
||||
.fixedmount div:nth-child(1) p:nth-child(1) {
|
||||
height: 0.24rem;
|
||||
width: 0.24rem;
|
||||
background: url('~@/assets/home/shenqing.png') no-repeat;
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
.fixedmount div:nth-child(2) p:nth-child(1) {
|
||||
height: 0.24rem;
|
||||
width: 0.24rem;
|
||||
background: url('~@/assets/home/shangjia.png') no-repeat;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -170,7 +170,10 @@
|
|||
getTopCategory().then((res) => {
|
||||
console.log('编目一级=============>', res.data)
|
||||
res.data.data.forEach((val) => {
|
||||
tabList.value.push(val.name)
|
||||
// tabList.value.push(val.name)
|
||||
if (val.name == '应用资源' || val.name == '组件服务') {
|
||||
tabList.value.push(val.name)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
|
|
@ -12,14 +12,14 @@
|
|||
/>
|
||||
<a-button
|
||||
type="primary"
|
||||
style="width: 90px; height: 36px; margin-left: 10px"
|
||||
@click="nenglishangjia"
|
||||
style="width: 0.9rem; height: 0.36rem; margin-left: 0.1rem"
|
||||
@click="showModal2"
|
||||
>
|
||||
能力上架
|
||||
</a-button>
|
||||
<a-button
|
||||
type="primary"
|
||||
style="width: 90px; height: 36px; margin-left: 10px"
|
||||
style="width: 0.9rem; height: 0.36rem; margin-left: 0.1rem"
|
||||
@click="replacement"
|
||||
>
|
||||
重置
|
||||
|
@ -36,7 +36,7 @@
|
|||
{{ item }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab" style="margin-top: 10px">
|
||||
<div class="tab" style="margin-top: 0.1rem">
|
||||
<span>能力状态</span>
|
||||
<div
|
||||
:class="tabIndex2 == index ? 'tabclass' : ' '"
|
||||
|
@ -96,7 +96,7 @@
|
|||
width="80"
|
||||
height="80"
|
||||
v-if="item.delFlag == 4 || item.delFlag == 5"
|
||||
style="position: absolute; top: 20px; left: 10px"
|
||||
style="position: absolute; top: 0.2rem; left: 0.1rem"
|
||||
>
|
||||
<path
|
||||
d="M955.22053 256C813.82053 11.2 500.72053-72.6 255.92053 68.8S-72.67947 523.2 68.72053 768 523.22053 1096.6 768.02053 955.2c244.7-141.2 328.6-454.1 187.4-698.8 0-0.1-0.1-0.3-0.2-0.4zM762.02053 944.7c-239 138.1-544.8 56.2-682.9-182.8S22.92053 217.1 261.92053 79.1s544.8-56.2 682.9 182.8c137.9 239 56.1 544.6-182.8 682.8z"
|
||||
|
@ -146,7 +146,7 @@
|
|||
<a-modal
|
||||
v-model:visible="detailsVisible"
|
||||
:title="tabname"
|
||||
style="width: 900px"
|
||||
style="width: 9rem"
|
||||
:footer="null"
|
||||
destroyOnClose="true"
|
||||
:maskClosable="false"
|
||||
|
@ -159,7 +159,7 @@
|
|||
<a-modal
|
||||
v-model:visible="increasedVisible"
|
||||
:title="tabname"
|
||||
style="width: 900px"
|
||||
style="width: 9rem"
|
||||
:footer="null"
|
||||
destroyOnClose="true"
|
||||
:maskClosable="false"
|
||||
|
@ -174,12 +174,62 @@
|
|||
>
|
||||
<a-input v-model:value="reason" placeholder="请输入下架原因" />
|
||||
</a-modal>
|
||||
<a-modal
|
||||
v-model:visible="visible2"
|
||||
@ok="handleOk"
|
||||
class="shangjia-class"
|
||||
@cancel="handlecancel"
|
||||
>
|
||||
<div class="ant-modal-title" id="vcDialogTitle1">
|
||||
<div class="showBg"></div>
|
||||
能力上架申请
|
||||
</div>
|
||||
<div class="ability-to-type">
|
||||
<div class="title">能力类型选择</div>
|
||||
<div class="content">
|
||||
<div
|
||||
v-for="item in abilityToType"
|
||||
:key="item"
|
||||
@click="abilityToTypeFunction(item)"
|
||||
:class="
|
||||
abilityToTypeFunctionData == item ? 'ability-to-type-down' : ''
|
||||
"
|
||||
>
|
||||
{{ item }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="component-type"
|
||||
v-if="abilityToTypeFunctionData == '组件服务'"
|
||||
>
|
||||
<div class="title">组件类型选择</div>
|
||||
<div class="content">
|
||||
<!-- <a-checkbox-group
|
||||
v-model:value="value1"
|
||||
name="checkboxgroup"
|
||||
:options="componentType"
|
||||
/> -->
|
||||
<a-radio-group v-model:value="componentTypeValue">
|
||||
<a-radio
|
||||
@click="componentTypeValueFunction(item)"
|
||||
v-for="item in componentType"
|
||||
:key="item"
|
||||
:value="item"
|
||||
>
|
||||
{{ item }}
|
||||
</a-radio>
|
||||
</a-radio-group>
|
||||
</div>
|
||||
</div>
|
||||
</a-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { onMounted, reactive, ref } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { message } from 'ant-design-vue'
|
||||
// , reactive
|
||||
import { wodepage, undercarriage } from '@/api/personalCenter'
|
||||
import { getUserInfo } from '@/api/user'
|
||||
|
@ -215,6 +265,58 @@
|
|||
let name = ref('')
|
||||
let tabIndex = ref(0)
|
||||
let tabIndex2 = ref(-1)
|
||||
const visible2 = ref(false)
|
||||
const showModal2 = () => {
|
||||
visible2.value = true
|
||||
}
|
||||
let componentTypeValue = ref('')
|
||||
let abilityToTypeFunctionData = ref('组件服务')
|
||||
function handlecancel() {
|
||||
abilityToTypeFunctionData.value = '组件服务'
|
||||
componentTypeValue.value = ''
|
||||
}
|
||||
function abilityToTypeFunction(item) {
|
||||
abilityToTypeFunctionData.value = item
|
||||
}
|
||||
const handleOk = (e) => {
|
||||
let snum = ref({})
|
||||
if (abilityToTypeFunctionData.value == '组件服务') {
|
||||
if (!componentTypeValue.value || componentTypeValue.value == '') {
|
||||
message.error('请选择组件类型!')
|
||||
return
|
||||
} else if (componentTypeValue.value !== '智能算法') {
|
||||
message.error('功能开发中!')
|
||||
return
|
||||
} else {
|
||||
snum.value = {
|
||||
abilityToType: abilityToTypeFunctionData.value,
|
||||
componentTypeValue: componentTypeValue.value,
|
||||
}
|
||||
}
|
||||
} else {
|
||||
snum.value = {
|
||||
abilityToType: abilityToTypeFunctionData.value,
|
||||
}
|
||||
}
|
||||
const applypage = router.resolve({
|
||||
path: '/nenglishangjia', // 跳转的页面路由
|
||||
query: snum.value,
|
||||
})
|
||||
window.open(applypage.href, '_blank')
|
||||
visible.value = false
|
||||
abilityToTypeFunctionData.value = '组件服务'
|
||||
componentTypeValue.value = ''
|
||||
console.log(e)
|
||||
}
|
||||
let abilityToType = ref(['组件服务', '应用资源'])
|
||||
let componentType = ref([
|
||||
'智能算法',
|
||||
'GIS图层',
|
||||
'开发组件',
|
||||
'办公组件',
|
||||
'业务组件',
|
||||
'其他',
|
||||
])
|
||||
let tabname = ref('组件服务')
|
||||
function tabqiehuan(item, index) {
|
||||
// debugger
|
||||
|
@ -333,11 +435,11 @@
|
|||
const newpage = router.resolve({
|
||||
path: '/nenglishangjia', // 跳转的页面路由
|
||||
})
|
||||
const nenglishangjia = () => {
|
||||
// debugger
|
||||
window.open(newpage.href, '_blank')
|
||||
// router.resolve('/nenglishangjia')
|
||||
}
|
||||
// const nenglishangjia = () => {
|
||||
// // debugger
|
||||
// window.open(newpage.href, '_blank')
|
||||
// // router.resolve('/nenglishangjia')
|
||||
// }
|
||||
const handlePageSizeChange = (current, size) => {
|
||||
page.value = current
|
||||
limt.value = size
|
||||
|
@ -377,88 +479,88 @@
|
|||
<style scoped lang="less">
|
||||
.on-the-right-side-of-the-list {
|
||||
background: #ffffff;
|
||||
padding: 20px 0px 30px 20px;
|
||||
padding: 0.2rem 0rem 0.3rem 0.2rem;
|
||||
position: absolute;
|
||||
width: 1087px;
|
||||
height: 810px;
|
||||
top: 0px;
|
||||
width: 10.87rem;
|
||||
height: 8.1rem;
|
||||
top: 0rem;
|
||||
display: flex;
|
||||
margin-top: 20px;
|
||||
margin-top: 0.2rem;
|
||||
flex-direction: column;
|
||||
font-size: 16px;
|
||||
font-size: 0.16rem;
|
||||
justify-content: left;
|
||||
.title {
|
||||
font-size: 20px;
|
||||
font-size: 0.2rem;
|
||||
color: #000000;
|
||||
font-family: 'Alibaba PuHuiTi';
|
||||
font-weight: 500;
|
||||
}
|
||||
.sousuokuang {
|
||||
margin: 20px 0px 21px 0px;
|
||||
margin: 0.2rem 0rem 0.21rem 0rem;
|
||||
.ant-input-search {
|
||||
max-width: 490px;
|
||||
max-width: 4.9rem;
|
||||
}
|
||||
:deep(.ant-input) {
|
||||
width: 400px;
|
||||
height: 36px;
|
||||
font-size: 14px;
|
||||
width: 4rem;
|
||||
height: 0.36rem;
|
||||
font-size: 0.14rem;
|
||||
color: #b2b2b2;
|
||||
background: #f5f5f5;
|
||||
}
|
||||
:deep(.ant-input-group-addon) {
|
||||
display: inline-block;
|
||||
margin-left: 10px;
|
||||
margin-left: 0.1rem;
|
||||
.ant-input-search-button {
|
||||
width: 80px;
|
||||
height: 36px;
|
||||
border-radius: 4px;
|
||||
font-size: 14px;
|
||||
width: 0.8rem;
|
||||
height: 0.36rem;
|
||||
border-radius: 0.04rem;
|
||||
font-size: 0.14rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
.tab {
|
||||
display: flex;
|
||||
font-size: 14px;
|
||||
font-size: 0.14rem;
|
||||
color: #999999;
|
||||
div {
|
||||
width: 70px;
|
||||
height: 24px;
|
||||
border: 1px solid #cccccc;
|
||||
border-radius: 12px;
|
||||
margin-left: 10px;
|
||||
width: 0.7rem;
|
||||
height: 0.24rem;
|
||||
border: 0.01rem solid #cccccc;
|
||||
border-radius: 0.12rem;
|
||||
margin-left: 0.1rem;
|
||||
text-align: center;
|
||||
color: #666666;
|
||||
cursor: pointer;
|
||||
}
|
||||
.tabclass {
|
||||
border: 1px solid #0087ff;
|
||||
border: 0.01rem solid #0087ff;
|
||||
color: #0087ff;
|
||||
}
|
||||
}
|
||||
.content {
|
||||
padding-right: 10px;
|
||||
height: 510px;
|
||||
padding-right: 0.1rem;
|
||||
height: 5.1rem;
|
||||
overflow: auto;
|
||||
.content-body {
|
||||
padding-bottom: 20px;
|
||||
padding-top: 20px;
|
||||
margin-right: 10px;
|
||||
// height: 120px;
|
||||
border-bottom: #cccccc 1px solid;
|
||||
padding-bottom: 0.2rem;
|
||||
padding-top: 0.2rem;
|
||||
margin-right: 0.1rem;
|
||||
// height: 1.20rem;
|
||||
border-bottom: #cccccc 0.01rem solid;
|
||||
position: relative;
|
||||
.content-body-title {
|
||||
font-size: 14px;
|
||||
font-size: 0.14rem;
|
||||
color: #333333;
|
||||
font-family: 'Alibaba PuHuiTi';
|
||||
font-weight: 500;
|
||||
}
|
||||
.content-body-content {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
width: 720px;
|
||||
margin-top: 0.1rem;
|
||||
margin-bottom: 0.1rem;
|
||||
width: 7.2rem;
|
||||
.content-body-content-son {
|
||||
line-height: 16px;
|
||||
font-size: 12px;
|
||||
line-height: 0.16rem;
|
||||
font-size: 0.12rem;
|
||||
width: 100%;
|
||||
text-overflow: -o-ellipsis-lastline;
|
||||
overflow: hidden;
|
||||
|
@ -472,35 +574,35 @@
|
|||
.content-body-bottom {
|
||||
display: flex;
|
||||
color: #cccccc;
|
||||
font-size: 12px;
|
||||
font-size: 0.12rem;
|
||||
div:first-child {
|
||||
margin-right: 30px;
|
||||
margin-right: 0.3rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.bottom {
|
||||
position: absolute;
|
||||
bottom: 30px;
|
||||
right: 20px;
|
||||
bottom: 0.3rem;
|
||||
right: 0.2rem;
|
||||
}
|
||||
|
||||
.button {
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
top: 0px;
|
||||
width: 96px;
|
||||
right: 0.2rem;
|
||||
top: 0rem;
|
||||
width: 0.96rem;
|
||||
// background: #0087ff;
|
||||
cursor: pointer;
|
||||
div {
|
||||
margin-top: 20px;
|
||||
height: 30px;
|
||||
margin-top: 0.2rem;
|
||||
height: 0.3rem;
|
||||
background: #0087ff;
|
||||
font-size: 14px;
|
||||
font-size: 0.14rem;
|
||||
color: #fff;
|
||||
border-radius: 4px;
|
||||
border-radius: 0.04rem;
|
||||
text-align: center;
|
||||
line-height: 30px;
|
||||
line-height: 0.3rem;
|
||||
}
|
||||
.del {
|
||||
background: #ccc;
|
||||
|
@ -510,10 +612,101 @@
|
|||
}
|
||||
}
|
||||
.button-state {
|
||||
top: 60px;
|
||||
top: 0.6rem;
|
||||
}
|
||||
.buttonAgree {
|
||||
background-color: #49c988;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<style lang="less">
|
||||
.shangjia-class {
|
||||
position: fixed;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
margin-left: -2.6rem;
|
||||
margin-top: -1.44rem;
|
||||
font-size: 0.14rem;
|
||||
font-weight: 500;
|
||||
.ant-radio-inner {
|
||||
height: 0.16rem;
|
||||
width: 0.16rem;
|
||||
}
|
||||
.ant-radio-inner::after {
|
||||
background-color: unset;
|
||||
background: url('~@/assets/personalCenter/xuanzhong.png') no-repeat;
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
}
|
||||
.ant-modal-content {
|
||||
border-radius: 0.1rem;
|
||||
.ability-to-type,
|
||||
.component-type {
|
||||
display: flex;
|
||||
margin-top: 0.2rem;
|
||||
.title {
|
||||
white-space: nowrap;
|
||||
margin-right: 0.2rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 0.26rem;
|
||||
}
|
||||
.content {
|
||||
width: 100%;
|
||||
.ant-radio-group {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr 1fr;
|
||||
grid-gap: 0.15rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
.ability-to-type {
|
||||
.content {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr 1fr;
|
||||
div {
|
||||
margin-right: 0.15rem;
|
||||
cursor: pointer;
|
||||
font-size: 0.14rem;
|
||||
width: 0.9rem;
|
||||
height: 0.26rem;
|
||||
border-radius: 0.13rem;
|
||||
color: #333333;
|
||||
background: #f5f5f5;
|
||||
border: 0.01rem #cccccc solid;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-weight: 500;
|
||||
}
|
||||
.ability-to-type-down {
|
||||
background: #0087ff;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.ant-modal-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.ant-modal-footer {
|
||||
border: 0;
|
||||
text-align: center;
|
||||
padding-bottom: 0.2rem;
|
||||
button {
|
||||
margin-right: 0.2rem;
|
||||
border-radius: 0.08rem;
|
||||
}
|
||||
}
|
||||
.showBg {
|
||||
height: 0.24rem;
|
||||
width: 0.24rem;
|
||||
background: url('~@/assets/home/shenqing.png') no-repeat;
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
margin-right: 0.1rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
/>
|
||||
<a-button
|
||||
type="primary"
|
||||
style="width: 80px; height: 36px; margin-left: 10px"
|
||||
style="width: 0.8rem; height: 0.36rem; margin-left: 0.1rem"
|
||||
@click="clean"
|
||||
>
|
||||
重置
|
||||
|
@ -62,7 +62,7 @@
|
|||
width="50"
|
||||
height="50"
|
||||
v-if="item.delFlag == 4 || item.delFlag == 5"
|
||||
style="position: absolute; top: 0; left: 100px"
|
||||
style="position: absolute; top: 0; left: 1rem"
|
||||
>
|
||||
<path
|
||||
d="M955.22053 256C813.82053 11.2 500.72053-72.6 255.92053 68.8S-72.67947 523.2 68.72053 768 523.22053 1096.6 768.02053 955.2c244.7-141.2 328.6-454.1 187.4-698.8 0-0.1-0.1-0.3-0.2-0.4zM762.02053 944.7c-239 138.1-544.8 56.2-682.9-182.8S22.92053 217.1 261.92053 79.1s544.8-56.2 682.9 182.8c137.9 239 56.1 544.6-182.8 682.8z"
|
||||
|
@ -130,14 +130,14 @@
|
|||
>
|
||||
<a-button
|
||||
type="primary"
|
||||
style="width: 70px; height: 32px; margin-left: 10px"
|
||||
style="width: 0.7rem; height: 0.32rem; margin-left: 0.1rem"
|
||||
>
|
||||
删除
|
||||
</a-button>
|
||||
</a-popconfirm>
|
||||
<a-button
|
||||
type="primary"
|
||||
style="width: 70px; height: 32px; margin-left: 10px"
|
||||
style="width: 0.7rem; height: 0.32rem; margin-left: 0.1rem"
|
||||
@click="collection"
|
||||
>
|
||||
收藏
|
||||
|
@ -151,7 +151,7 @@
|
|||
</p>
|
||||
<a-button
|
||||
type="primary"
|
||||
style="width: 100px; height: 32px; margin-left: 30px"
|
||||
style="width: 1rem; height: 0.32rem; margin-left: 0.3rem"
|
||||
@click="apply"
|
||||
>
|
||||
一键申请
|
||||
|
@ -227,7 +227,9 @@
|
|||
getTopCategory().then((res) => {
|
||||
console.log('编目一级=============>', res.data)
|
||||
res.data.data.forEach((val) => {
|
||||
tabList.value.push(val.name)
|
||||
if (val.name == '应用资源' || val.name == '组件服务') {
|
||||
tabList.value.push(val.name)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
@ -431,23 +433,23 @@
|
|||
</script>
|
||||
<style lang="less" scoped>
|
||||
.ant-list {
|
||||
height: 540px;
|
||||
height: 5.4rem;
|
||||
overflow-y: scroll;
|
||||
.ant-list-item-meta {
|
||||
align-items: center;
|
||||
:deep(.ant-list-item-meta-avatar) {
|
||||
padding-left: 20px;
|
||||
margin-right: 30px;
|
||||
padding-left: 0.2rem;
|
||||
margin-right: 0.3rem;
|
||||
}
|
||||
.time {
|
||||
margin-left: 30px;
|
||||
font-size: 12px;
|
||||
margin-left: 0.3rem;
|
||||
font-size: 0.12rem;
|
||||
color: #ccc;
|
||||
}
|
||||
:deep(.ant-list-item-meta-description) {
|
||||
max-height: 44px;
|
||||
max-height: 0.44rem;
|
||||
overflow: hidden;
|
||||
margin-right: 10px;
|
||||
margin-right: 0.1rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -455,12 +457,12 @@
|
|||
width: 0 !important;
|
||||
}
|
||||
.bottom {
|
||||
margin: 10px;
|
||||
margin: 0.1rem;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
.left span {
|
||||
margin-left: 10px;
|
||||
margin-left: 0.1rem;
|
||||
}
|
||||
.right {
|
||||
display: flex;
|
||||
|
@ -469,63 +471,63 @@
|
|||
color: #0087ff;
|
||||
}
|
||||
.num {
|
||||
font-size: 20px;
|
||||
font-size: 0.2rem;
|
||||
}
|
||||
button {
|
||||
margin-bottom: 10px;
|
||||
margin-bottom: 0.1rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
.title {
|
||||
font-size: 20px;
|
||||
font-size: 0.2rem;
|
||||
color: #000000;
|
||||
font-family: 'Alibaba PuHuiTi';
|
||||
font-weight: 500;
|
||||
margin-top: 20px;
|
||||
margin-left: 20px;
|
||||
margin-top: 0.2rem;
|
||||
margin-left: 0.2rem;
|
||||
}
|
||||
.sousuokuang {
|
||||
margin: 10px 0px 21px 20px;
|
||||
margin: 0.1rem 0rem 0.21rem 0.2rem;
|
||||
.ant-input-search {
|
||||
max-width: 490px;
|
||||
max-width: 4.9rem;
|
||||
}
|
||||
:deep(.ant-input) {
|
||||
width: 400px;
|
||||
height: 36px;
|
||||
font-size: 14px;
|
||||
width: 4rem;
|
||||
height: 0.36rem;
|
||||
font-size: 0.14rem;
|
||||
color: #b2b2b2;
|
||||
background: #f5f5f5;
|
||||
}
|
||||
:deep(.ant-input-group-addon) {
|
||||
display: inline-block;
|
||||
margin-left: 10px;
|
||||
margin-left: 0.1rem;
|
||||
.ant-input-search-button {
|
||||
width: 80px;
|
||||
height: 36px;
|
||||
border-radius: 4px;
|
||||
font-size: 14px;
|
||||
width: 0.8rem;
|
||||
height: 0.36rem;
|
||||
border-radius: 0.04rem;
|
||||
font-size: 0.14rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
.tab {
|
||||
margin-top: 10px;
|
||||
margin-left: 20px;
|
||||
margin-bottom: 10px;
|
||||
margin-top: 0.1rem;
|
||||
margin-left: 0.2rem;
|
||||
margin-bottom: 0.1rem;
|
||||
display: flex;
|
||||
font-size: 14px;
|
||||
font-size: 0.14rem;
|
||||
color: #999999;
|
||||
div {
|
||||
width: 70px;
|
||||
height: 24px;
|
||||
border: 1px solid #cccccc;
|
||||
border-radius: 12px;
|
||||
margin-left: 10px;
|
||||
width: 0.7rem;
|
||||
height: 0.24rem;
|
||||
border: 0.01rem solid #cccccc;
|
||||
border-radius: 0.12rem;
|
||||
margin-left: 0.1rem;
|
||||
text-align: center;
|
||||
color: #666666;
|
||||
cursor: pointer;
|
||||
}
|
||||
.tabclass {
|
||||
border: 1px solid #0087ff;
|
||||
border: 0.01rem solid #0087ff;
|
||||
color: #0087ff;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: hisense.liangjunhua
|
||||
* @Date: 2022-06-01 17:49:38
|
||||
* @LastEditors: hisense.liangjunhua
|
||||
* @LastEditTime: 2022-06-13 14:55:22
|
||||
* @LastEditTime: 2022-06-14 11:30:30
|
||||
* @Description: 能力上架
|
||||
-->
|
||||
<template>
|
||||
|
@ -16,13 +16,25 @@
|
|||
import HomeHeader from '@/views/home/components/header'
|
||||
import Algorithm from '@/views/capacityOnTheShelf/Algorithm'
|
||||
import Application from '@/views/capacityOnTheShelf/Application'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { ref } from 'vue'
|
||||
const type = ref('algorithm')
|
||||
const router = useRouter()
|
||||
const type = ref('')
|
||||
const abilityToType = router.currentRoute.value.query.abilityToType
|
||||
if (abilityToType === '应用资源') {
|
||||
type.value = 'application'
|
||||
} else {
|
||||
const componentTypeValue =
|
||||
router.currentRoute.value.query.componentTypeValue
|
||||
if (componentTypeValue === '智能算法') {
|
||||
type.value = 'algorithm'
|
||||
}
|
||||
}
|
||||
window.sessionStorage.setItem('preview', JSON.stringify({}))
|
||||
</script>
|
||||
<style scoped lang="less">
|
||||
.the-new-release {
|
||||
background: #f5f7fa;
|
||||
height: 1080px;
|
||||
height: 10.8rem;
|
||||
}
|
||||
</style>
|
||||
|
|