Compare commits

...

143 Commits

Author SHA1 Message Date
guoyue c4ae6d603a 西海岸购物车等功能 2022-10-09 13:52:28 +08:00
guoyue d6c971ab23 西海岸顶部导航提示正在建设中 2022-10-08 19:20:18 +08:00
guoyue b2c2958fdb 删除无用代码 2022-10-08 18:01:53 +08:00
guoyue 7d513edafc 配置环境 2022-10-08 16:00:37 +08:00
guoyue c71784567c 西海岸-购物车收藏功能 2022-10-08 16:00:26 +08:00
guoyue f727efbdcd 顶部导航除基础设施外,禁止切换且提示正在建设中 2022-10-08 14:58:01 +08:00
guoyue d549a7f73d 能力云图:适配西海岸和市局 2022-10-02 11:08:42 +08:00
guoyue c183ee883d 代码找回 (详情按钮,西海岸智能算法支持,融合服务详情,西海岸登录默认基础设施) 【2022-09-30:修改文件 】 2022-09-30 16:07:15 +08:00
851673013@qq.com 1bff4a6f85 代码修改 2022-09-30 11:07:15 +08:00
851673013@qq.com cce81f9ece bug申请能力应用系统选项下方加提示:如选项没有系统请新增 2022-09-30 10:51:03 +08:00
851673013@qq.com a906b433f2 区市站点隐藏掉 2022-09-30 10:40:05 +08:00
851673013@qq.com cba2a5c089 bug修改 2022-09-30 10:31:14 +08:00
851673013@qq.com a3c6162592 修改文件 2022-09-30 10:27:57 +08:00
guoyue 166e5e119e 西海岸:能力集市点击非基础设施提示正在建设中 2022-09-29 18:35:14 +08:00
于秀圆 3dcb9b8778 接口传参方式修改 2022-09-29 18:27:32 +08:00
于秀圆 bcbafaf9f0 不规则框选 2022-09-29 18:19:24 +08:00
guoyue 057b926183 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-09-29 17:28:06 +08:00
guoyue 39547f16e4 西海岸:登录重定向到能力集市页面 2022-09-29 17:27:45 +08:00
guoyue f0df682cc6 响应拦截器,错误信息增加msg取值 2022-09-29 17:26:58 +08:00
guoyue 98f0c360d4 西海岸:基础设施--一键申请增加数量限制 2022-09-29 17:26:08 +08:00
guoyue bafe53bc67 西海岸:能力集市--默认选中基础设施 2022-09-29 17:21:54 +08:00
guoyue 48bfe71c6f 西海岸:基础设施--一键申请增加最大数量限制 2022-09-29 17:21:02 +08:00
851673013@qq.com e477b3f90e 我的申请——能力评价位置往最后面放 2022-09-29 14:24:07 +08:00
851673013@qq.com 9e5bd33650 首页“能力汇聚”改为“能力分类”;“工作动态”隐掉; 2022-09-29 11:48:59 +08:00
851673013@qq.com 7918e07b6c 页面设计优化:首页5个统计展示模块要让用户能明显的清楚可“点击进入”(比如字下面加下划线或者鼠标移入时“小手“图标要明显等) 2022-09-29 11:37:08 +08:00
guoyue 3f4e27177c fix:重定向白屏需强刷bug 2022-09-29 11:02:23 +08:00
guoyue a7d7431c75 fix:基础设施-申请报错 2022-09-29 09:24:02 +08:00
guoyue a7da8b013e Merge branches 'hi-ucs-dev' and 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-09-28 17:33:59 +08:00
guoyue f86d40feda 西海岸:基础设施-视频预览,增加在线离线状态显示,点击预览,提示离线 2022-09-28 17:31:57 +08:00
于秀圆 a4259cf2d9 视频资源表格和地图选中联动 2022-09-28 16:42:35 +08:00
guoyue f79b43d261 西海岸:基础设施--默认选中视频资源 2022-09-28 14:05:12 +08:00
guoyue 9c93864e38 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-09-27 18:49:40 +08:00
guoyue 9023a44715 西海岸:已办--增加单兵无人机设备历史记录 2022-09-27 18:49:26 +08:00
guoyue 787ceeef3f 西海岸:基础设施--批量申请--增加参数 2022-09-27 18:04:07 +08:00
a0049873 55da389003 隐藏趋势站点,能力云图 2022-09-27 16:49:10 +08:00
a0049873 1066a00154 按钮名字修改 2022-09-27 16:04:13 +08:00
a0049873 7952f20beb Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-09-27 14:17:55 +08:00
a0049873 a02926006a 删除 数字校验 2022-09-27 14:17:31 +08:00
guoyue fc8f43b94c Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-09-27 14:07:25 +08:00
guoyue 2df958d69e 西海岸:能力申请--过期给出提示 2022-09-27 14:06:57 +08:00
guoyue cf7d85060c 西海岸:基础设施-申请增加过期时间 2022-09-27 11:53:10 +08:00
a0049873 18f911bd16 基础设施修改 2022-09-27 10:37:08 +08:00
guoyue f071abfcf7 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-09-27 09:49:35 +08:00
guoyue 0b401f5741 我的申请增加水印 2022-09-27 09:49:30 +08:00
a0049873 ccbb53093f Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-09-27 09:43:44 +08:00
a0049873 8782498104 管理端bug修改 门户修改右侧图标 2022-09-27 09:42:13 +08:00
guoyue 2f752de364 西海岸:基础设施--视频预览增加水印 2022-09-27 09:28:03 +08:00
guoyue ae5978f408 add: 西海岸 测试环境 2022-09-26 17:26:06 +08:00
guoyue 479c2791f3 合并 2022-09-26 17:25:30 +08:00
guoyue 653559e727 格式化代码 2022-09-26 16:55:51 +08:00
guoyue cecba03c6e 西海岸:视频播放 离线(status不是1)提示当前视频离线 2022-09-26 16:41:09 +08:00
guoyue 5c6d90d912 西海岸:我的申请中-视频预览 增加离线提示 2022-09-26 16:40:54 +08:00
guoyue 076d84bd0a 西海岸:视频播放 离线(status不是1)提示当前视频离线 2022-09-26 16:29:32 +08:00
guoyue eab0eb374a 西海岸:去掉拼接的status=1 2022-09-26 16:28:50 +08:00
guoyue 4e3fa20984 西海岸:登录默认 跳转到能力集市-基础设施 2022-09-26 15:55:31 +08:00
a0049873 432ba890f6 基础设施初始化BUG修改 2022-09-26 11:32:14 +08:00
unknown 186184c14f new button 2022-09-26 09:41:43 +08:00
a0049873 67e009d110 BUG修改 2022-09-26 09:26:17 +08:00
guoyue 2688b764e5 后台管理:公共scss文件 更改弹框最大高度,以及树形组件最大高度 2022-09-23 17:35:08 +08:00
guoyue 5e31517f1d fix:控制台--地图报错 2022-09-23 13:33:41 +08:00
guoyue 5e2b32f62a 西海岸:应用资源-部署与安全,去掉服务地址 2022-09-23 11:36:02 +08:00
guoyue 4dc1525520 fix:基础设施-地图搜索 改回最初 2022-09-23 11:15:14 +08:00
guoyue f26afc84c7 西海岸:顶部导航去掉技术文档 2022-09-23 10:37:21 +08:00
guoyue 1d61355bc6 西海岸:能力云图-基础设施-单兵设备,无人机前端写死 2022-09-23 10:36:52 +08:00
guoyue 4a28789464 西海岸:我的申请,增加设备申请 2022-09-22 19:07:54 +08:00
guoyue 10fdc587a2 西海岸:单兵无人机 申请按钮,更改为未申请状态才可申请 2022-09-22 16:04:24 +08:00
guoyue fe3eb0aa68 西海岸--基础设施:去掉视频标签 2022-09-22 15:08:02 +08:00
guoyue 05d2ad1a45 西海岸:我的申请增加设备申请 2022-09-22 14:28:29 +08:00
guoyue 7594c9cb51 西海岸:能力集市基础设施-左侧列表拼接status=1 2022-09-22 14:14:13 +08:00
guoyue 85b515acf8 fix: 我的角色-报错页面空白 2022-09-22 13:37:18 +08:00
guoyue b1f17ca5bb 优化我的申请js,删除多余注释代码 2022-09-22 13:31:36 +08:00
guoyue 4296677fcd 西海岸:批量预览视频增加提示,去申请才能查看 2022-09-22 13:30:53 +08:00
guoyue 2d32d735a5 西海岸:获取摄像头,拼接status=1 2022-09-22 13:29:47 +08:00
guoyue 6f6ec109e4 fix-首页:获取单兵设备无人机报错 2022-09-22 09:24:17 +08:00
guoyue c55eedc5b4 单兵和无人机:列表增加详情 2022-09-21 23:31:56 +08:00
guoyue e906d9adc5 fix:修复能力下架不选文件报错bug 2022-09-21 22:46:48 +08:00
guoyue e077a04c08 西海岸:应用详情:增加 审批通过可以查看马赛克内容 逻辑 2022-09-21 22:33:35 +08:00
guoyue a5df439fd0 pk 算法对比,修复弹框没有确定按钮bug 2022-09-21 22:31:56 +08:00
guoyue cce7cb3be9 去掉城市云脑会客厅 2022-09-21 22:27:49 +08:00
guoyue 495ed477f8 门户首页-能力汇聚:基础设施,保留视频资源,单兵,无人机 2022-09-21 22:26:56 +08:00
guoyue 8f56c1680d 无人机单兵设备,表单重置 2022-09-21 21:13:32 +08:00
guoyue 14978ef490 算法对比,弹框增加确定取消按钮 2022-09-21 21:12:29 +08:00
guoyue 44525afeb8 无人机申请,去掉用户id 2022-09-21 21:12:00 +08:00
guoyue f1de06b5ad 无人机申请增加用户id 2022-09-21 19:59:02 +08:00
guoyue cc330f2b60 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-09-21 18:48:57 +08:00
guoyue f6b6c4713d 西海岸-去掉融合服务和CIM 2022-09-21 18:48:35 +08:00
guoyue b8eda12e43 无人机单兵设备增加设备审批 2022-09-21 18:48:19 +08:00
lizhicheng2 83eb319d28 西海岸-能力详情模糊 2022-09-21 17:56:11 +08:00
guoyue bcef134cf9 无人机申请,增加参数 2022-09-21 17:23:51 +08:00
guoyue 7ea1bc972b 无人机、单兵申请更改参数名 2022-09-21 16:18:02 +08:00
guoyue b17f4a3056 无人机单兵设备申请,参数更改 2022-09-21 15:55:43 +08:00
guoyue 560e6af900 西海岸:服务地址改成申请才能看(跟市局一样) 2022-09-21 15:54:15 +08:00
guoyue e7a5a21430 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-09-21 15:44:08 +08:00
guoyue 11f4c3fe25 西海岸--单兵设备和无人机:列表/申请接口联调 2022-09-21 15:43:55 +08:00
yuhan_jiang 6827b2ebe5 fix:解决单点无法登出 2022-09-21 11:09:25 +08:00
guoyue b3b35d21b3 删除多余console 2022-09-20 19:28:24 +08:00
guoyue 21adcb62c8 fix:一键申请--融合服务特殊处理 2022-09-20 19:28:13 +08:00
guoyue 5387d6a7a3 西海岸:获取摄像头拼接status为1 2022-09-20 19:08:21 +08:00
guoyue 8b9e11b0a0 我的申请-已申请:新增基础设施-视频预览 2022-09-20 19:07:59 +08:00
guoyue 8cb2f83fb5 西海岸-响应拦截器-去掉reload 2022-09-20 17:39:28 +08:00
guoyue 3e6f875728 西海岸-视频预览--禁止点击播放,给出提示 2022-09-20 16:37:59 +08:00
guoyue 856cf3e41f 西海岸-智能算法:容错处理 2022-09-20 15:15:17 +08:00
guoyue 7f884528e9 西海岸-支持组件服务-算法分类 2022-09-20 13:31:56 +08:00
guoyue 07fff52e43 去掉基础设施--云资源 2022-09-20 10:32:03 +08:00
guoyue c35398209b 视频播放-关闭自动播放功能 2022-09-20 10:24:12 +08:00
guoyue bff2aa9f97 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-09-19 19:24:02 +08:00
guoyue 1455e2e0d7 一键申请:融合服务特殊处理 2022-09-19 19:23:41 +08:00
guoyue 47871e8a02 后台-角色管理,新增重置功能 2022-09-19 19:22:06 +08:00
guoyue c6d456055e 后台-岗位管理,新增重置功能 2022-09-19 19:21:46 +08:00
guoyue 18578c1a58 我的待办:西海岸改成v2 2022-09-19 19:20:22 +08:00
guoyue b2abd5f16e 新增研发展厅环境 2022-09-19 19:19:13 +08:00
guoyue 253b9f511a 能力集市-组件服务:智能算法支持类型选择 2022-09-19 19:18:49 +08:00
lizhicheng2 576790ad9d bug fix:视频流url拼写错误 2022-09-19 18:28:44 +08:00
lizhicheng2 f3973fe28d bug fix:单点登录登出问题 2022-09-19 13:04:27 +08:00
a0049873 6ef87c3c79 广场新增删选条件 2022-09-19 10:19:31 +08:00
guoyue de605dd446 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-09-16 16:45:53 +08:00
guoyue 1b26210e01 去掉能力集市-浏览量排序 2022-09-16 16:44:26 +08:00
851673013@qq.com f2e68d0105 能力申请单位 2022-09-16 15:15:03 +08:00
guoyue dfba732000 展厅dev环境 2022-09-13 18:04:46 +08:00
guoyue 0661a53d79 强制使用谷歌或者火狐浏览器 2022-09-13 18:04:33 +08:00
guoyue fb0a5e1f38 退出登录,移除本地查询条件 2022-09-13 18:04:12 +08:00
guoyue 31a809f9d9 赋能场景存储查询条件 2022-09-13 18:03:55 +08:00
guoyue 90a3aa8e37 能力云图增加返回按钮 2022-09-13 14:59:44 +08:00
guoyue 1cba78f8e1 融合服务,能力集市详情返回 2022-09-13 09:38:26 +08:00
guoyue 7996d8a701 强制使用谷歌浏览器 2022-09-13 09:38:00 +08:00
guoyue 1e06abbf11 融合服务更新api 2022-09-08 15:46:21 +08:00
guoyue 59abe1614c 融合服务 CIM 技术文档 包头市局西海岸都支持 2022-09-08 15:46:08 +08:00
guoyue 59cc6d93fc 部门联系人和电话改为手动填写 2022-09-08 14:37:15 +08:00
guoyue 9df17910ee fix基础设施控制台报错 2022-09-08 14:22:07 +08:00
guoyue 715792aa7d 应用资源和组件服务调换位置 2022-09-08 14:21:42 +08:00
guoyue 510e72f35e 能力集市列表 隐藏浏览量 2022-09-08 13:15:51 +08:00
guoyue 43aec16d92 融合服务支持收藏量 2022-09-08 13:12:40 +08:00
guoyue 5eefd4d306 消息列表:已读消息更改 2022-09-08 09:44:12 +08:00
guoyue 7f3c5c0921 研发开发环境 2022-09-07 14:30:00 +08:00
guoyue 84e3f220dd 开发环境 2022-09-07 14:29:06 +08:00
guoyue 2e17b5cf80 技术文档:使用手册下载 2022-09-07 14:28:52 +08:00
zhangzhuliang 205cb756be 会议室审核加下载附件按钮和输入框报错 2022-09-02 11:06:11 +08:00
gaoyuanwei c3bc043228 提示语 2022-09-01 17:56:20 +08:00
a0049873 3b09661496 v3 流程 2022-09-01 16:12:44 +08:00
gaoyuanwei 619fc10627 后台审批----附件下载 2022-09-01 14:28:09 +08:00
gaoyuanwei 2ff89ea6e4 前后台-- -- 上传附件 2022-09-01 13:50:42 +08:00
zhangzhuliang 7ff222761c 会议室增加自定义状态码 2022-09-01 09:05:28 +08:00
zhangzhuliang c1643e3cb0 会议室bug提交 2022-08-31 18:26:06 +08:00
95 changed files with 10665 additions and 8871 deletions

View File

@ -7,8 +7,8 @@
*/ */
var _global = {} var _global = {}
var CONFIGITEM = { var CONFIGITEM = {
version: 'qingdao', // 青岛 // version: 'qingdao', // 青岛
// version: 'xihaian', // 西海岸 version: 'xihaian', // 西海岸
// version: 'test', // 测试 // version: 'test', // 测试
// version: 'frp', // 内网穿透 // version: 'frp', // 内网穿透
// version: 'dev', // 开发 // version: 'dev', // 开发
@ -23,7 +23,8 @@ var CONFIGITEM = {
// 西海岸大数据局 // 西海岸大数据局
xihaian: { xihaian: {
previewUrl: 'http://10.134.135.9:9796/', previewUrl: 'http://10.134.135.9:9796/',
apiURL: 'http://10.134.135.9:8888/renren-admin', // apiURL: 'http://10.134.135.9:8888/renren-admin',
apiURL: 'http://10.16.5.35:8888/renren-admin', // 李志成
websocketURL: 'ws://10.134.135.9:8888/renren-admin/websocket' websocketURL: 'ws://10.134.135.9:8888/renren-admin/websocket'
}, },
// 测试 // 测试

View File

@ -715,3 +715,14 @@ img {
.aui-navbar__header { .aui-navbar__header {
width: 268px; width: 268px;
} }
// 统一更改弹框高度树形控件高度
.el-dialog__body {
max-height: 600px;
overflow-y: auto;
}
.el-tree {
max-height: 450px;
overflow-y: auto;
}

View File

@ -1,12 +1,13 @@
/* /*
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-08-23 10:30:11 * @Date: 2022-08-23 10:30:11
* @LastEditors: hisense.wuhongjian * @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-25 21:05:18 * @LastEditTime: 2022-09-01 16:06:05
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
*/ */
const returnLocationStr = () => { const returnLocationStr = () => {
return 'qingdao1' // return 'qingdao'
return 'xihaian'
} }
export default returnLocationStr export default returnLocationStr

View File

@ -293,7 +293,7 @@ export default {
}) })
this.allData = JSON.parse(JSON.stringify(this.transferData)) this.allData = JSON.parse(JSON.stringify(this.transferData))
}).catch(err => { }).catch(err => {
this.$message.error(err) this.$message.error('未搜索到相关数据资源')
}) })
} }
}, },
@ -316,6 +316,7 @@ export default {
title: this.type, title: this.type,
list: this.selectedArray list: this.selectedArray
}) })
console.log(this.selectedArray, this.displayList, 'this.displayList')
}, },
getDisplay (displayList) { getDisplay (displayList) {
this.displayList = [] this.displayList = []

View File

@ -1,6 +1,6 @@
<template> <template>
<div > <div>
<div class='container'> <div class="container">
<!-- <div class='container-left' v-if='homeIsShow'> <!-- <div class='container-left' v-if='homeIsShow'>
<div class='left-search'> <div class='left-search'>
<div> <div>
@ -22,90 +22,166 @@
</span> </span>
</el-tree> </el-tree>
</div> --> </div> -->
<el-card shadow="never" class="aui-card--fill" v-if='homeIsShow'> <el-form :inline="true">
<!--起始日期 @keyup.enter.native="getDataList()"-->
<el-form-item>
<el-date-picker
v-model="value1"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
>
</el-date-picker>
</el-form-item>
<!--审核状态-->
<el-form-item>
<el-select
v-model="examineStatus"
placeholder="请选审核状态"
clearable
>
<el-option label="审核完成" value="1"></el-option>
<el-option label="审核中" value="0"></el-option>
</el-select>
</el-form-item>
<!--部门-->
<el-form-item>
<el-select
v-model="abilityDepartment"
placeholder="请选择部门"
clearable
>
<el-option label="全部" value=""></el-option>
<el-option
v-for="item in departmentSelects"
:key="item.label"
v-bind="item"
></el-option>
</el-select>
</el-form-item>
<!--类型-->
<el-form-item>
<el-select v-model="abilityType" placeholder="请选择类型" clearable>
<el-option label="全部" value=""></el-option>
<el-option
v-for="item in typeOptions"
:key="item.name"
:label="item.name"
:value="item.name"
v-bind="item"
></el-option>
</el-select>
</el-form-item>
<!--操作按钮查询-->
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
<!--操作按钮重置-->
<el-form-item>
<el-button type="primary" @click="resetDataList()">{{
$t('reset')
}}</el-button>
</el-form-item>
</el-form>
<el-card shadow="never" class="aui-card--fill" v-if="homeIsShow">
<div class="mod-demand__bsdemand"> <div class="mod-demand__bsdemand">
<div class='top-box'> <!-- <div class='top-box'>
<span class='title'>能力统计</span> <span class='title'>能力统计</span>
<div class='title-list-style'> <div class='title-list-style'>
<div v-for="(item,index) in titleList" :key='index' class='title-single' :class="{'choseStyle':choseId=== index}" @click="choseBtn(index)"> <div v-for="(item,index) in titleList" :key='index' class='title-single' :class="{'choseStyle':choseId=== index}" @click="choseBtn(index)">
<span class='box-style'>{{item.name}}</span> <span class='box-style'>{{item.name}}</span>
</div> </div>
</div> </div>
</div> </div> -->
<div class='second-title'>
<span style='margin-right:30px' :class="[departmentId===1?'departmentStyle':'']" @click="handleChose(1)"> <div class="second-title">
部门发布情况 <span
style="margin-right: 30px"
:class="[
departmentId === 1 || departmentId === 3
? 'departmentStyle'
: ''
]"
@click="handleChose(1)"
>
能力上架统计
</span> </span>
<span v-if='this.choseId===0' :class="[departmentId===2?'departmentStyle':'']" @click="handleChose(2)"> <span
部门使用情况 :class="[
departmentId === 2 || departmentId === 4
? 'departmentStyle'
: ''
]"
@click="handleChose(2)"
>
能力使用统计
</span> </span>
<!-- <span v-if='this.choseId===0' :class="[departmentId===3?'departmentStyle':'']" @click="handleChose(3)">
能力上架明细
</span>
<span v-if='this.choseId===0' :class="[departmentId===4?'departmentStyle':'']" @click="handleChose(4)">
能力使用明细
</span> -->
<span v-if="detailFlag" class="detail-button" @click="goToDetail()">
明细
</span>
<span v-else class="detail-button" @click="goToBack()"> 返回 </span>
</div> </div>
<div class='line-style'></div> <div class="line-style"></div>
<!--统计表-->
<el-table <el-table
:data="tableData" :data="tableData"
:header-cell-style="{ textAlign: 'center' }"
:cell-style="{ textAlign: 'center' }"
border border
style="width: 100%"> style="width: 100%"
<el-table-column v-show="this.departmentId === 1 || this.departmentId === 2"
prop="deptName" >
label="部门名称" <el-table-column prop="name" label="部门名称" min-width="100%">
min-width="100%">
</el-table-column> </el-table-column>
<el-table-column v-if='this.departmentId===1' <el-table-column label="组件">
prop="resourceNum" <el-table-column prop="znsf" label="智能算法" min-width="100%">
label="发布总数"
min-width="100%">
</el-table-column> </el-table-column>
<el-table-column v-if="this.choseId===0 && this.departmentId===1 " <el-table-column prop="tcfw" label="图层服务" min-width="100%">
prop="resourceCarNum"
label="被申请总数"
min-width="100%">
</el-table-column>
<el-table-column v-if="this.departmentId===1"
prop="resourceBrowseNum"
label="浏览总量"
min-width="100%">
</el-table-column>
<el-table-column v-if="this.departmentId===1"
prop="resourceCollectionNum"
label="收藏量"
min-width="100%">
</el-table-column>
<el-table-column v-if="this.choseId===0 && this.departmentId===1 "
prop="resourceVisits"
label="被调用总数"
min-width="100%">
</el-table-column>
<el-table-column v-if="this.choseId===0 && this.departmentId===1 "
prop="resourceRelNum"
label="被应用总数"
min-width="100%">
</el-table-column>
<el-table-column v-if="this.choseId===0 && this.departmentId===1 "
prop="resourceShareNum"
label="需申请数量"
min-width="100%">
</el-table-column>
<el-table-column v-if="this.choseId===0 && this.departmentId===1 "
prop="resourceShareNonNum"
label="免批数量"
min-width="100%">
</el-table-column>
<el-table-column v-if="this.departmentId===2"
prop="resourceUseNum"
label="使用总数"
min-width="100%">
</el-table-column>
<el-table-column v-if="this.departmentId===2"
prop="resourceCallNum"
label="申请总数"
min-width="100%">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="操作" prop="kfzj"
min-width="92%"> label="通用开发组件"
<template slot-scope="scope"> min-width="100%"
<el-button @click="handleClick(scope.row)" type="text" size="small">查看详情</el-button> >
</template> </el-table-column>
<el-table-column
prop="ywzj"
label="业务能力组件"
min-width="100%"
>
</el-table-column>
</el-table-column>
<el-table-column prop="yyzy" label="应用资源" min-width="100%">
</el-table-column>
<el-table-column prop="zj" label="总计" min-width="100%">
</el-table-column>
</el-table>
<!--明细表-->
<el-table
:data="tableData"
style="width: 100%"
v-show="this.departmentId === 3 || this.departmentId === 4"
>
<el-table-column prop="deptName" label="部门" width="180">
</el-table-column>
<el-table-column prop="resourceName" label="资源名称" width="180">
</el-table-column>
<el-table-column prop="type" label="类型"> </el-table-column>
<el-table-column prop="createDate" label="日期"> </el-table-column>
<el-table-column prop="approveStatus" label="状态">
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="block"> <div class="block">
@ -121,15 +197,31 @@
</div> </div>
</el-card> </el-card>
</div> </div>
<component-used v-if='UsedIsShow' :tableId='tableId' :fatherId='fatherId' @closeChild2='closeChild2'></component-used> <component-used
<component-services v-if='servicesIsShow' :tableId='tableId' :fatherId='fatherId' @closeChild='closeChild'></component-services> v-if="UsedIsShow"
<application-resources v-if='resourcesIsShow' :tableId='tableId' :fatherId='fatherId' @closeApplication='closeApplication'></application-resources> :tableId="tableId"
</div> :fatherId="fatherId"
@closeChild2="closeChild2"
></component-used>
<component-services
v-if="servicesIsShow"
:tableId="tableId"
:fatherId="fatherId"
@closeChild="closeChild"
></component-services>
<application-resources
v-if="resourcesIsShow"
:tableId="tableId"
:fatherId="fatherId"
@closeApplication="closeApplication"
></application-resources>
</div>
</template> </template>
<script> <script>
import componentServices from './componentServices.vue' import componentServices from './componentServices.vue'
import applicationResources from './applicationResources.vue' import applicationResources from './applicationResources.vue'
import ComponentUsed from './componentUsed.vue' import ComponentUsed from './componentUsed.vue'
import { mapState } from 'vuex'
export default { export default {
components: { componentServices, applicationResources, ComponentUsed }, components: { componentServices, applicationResources, ComponentUsed },
data () { data () {
@ -137,41 +229,63 @@ export default {
inputTxt: '', inputTxt: '',
tableId: '', tableId: '',
fatherId: '', fatherId: '',
treeData: [{ treeData: [
{
label: '一级 1', label: '一级 1',
children: [{ children: [
{
label: '二级 1-1', label: '二级 1-1',
children: [{ children: [
{
label: '三级 1-1-1' label: '三级 1-1-1'
}] }
}] ]
}, { }
]
},
{
label: '一级 2', label: '一级 2',
children: [{ children: [
{
label: '二级 2-1', label: '二级 2-1',
children: [{ children: [
{
label: '三级 2-1-1' label: '三级 2-1-1'
}] }
}, { ]
},
{
label: '二级 2-2', label: '二级 2-2',
children: [{ children: [
{
label: '三级 2-2-1' label: '三级 2-2-1'
}] }
}] ]
}, { }
]
},
{
label: '一级 3', label: '一级 3',
children: [{ children: [
{
label: '二级 3-1', label: '二级 3-1',
children: [{ children: [
{
label: '三级 3-1-1' label: '三级 3-1-1'
}] }
}, { ]
},
{
label: '二级 3-2', label: '二级 3-2',
children: [{ children: [
{
label: '三级 3-2-1' label: '三级 3-2-1'
}] }
}] ]
}], }
]
}
],
total: null, total: null,
defaultProps: { defaultProps: {
children: 'children', children: 'children',
@ -185,17 +299,60 @@ export default {
resourcesIsShow: false, resourcesIsShow: false,
UsedIsShow: false, UsedIsShow: false,
titleList: [ titleList: [
{ name: '组件服务', key: 1 }, { name: '应用资源', key: 2 }, { name: '基础设施', key: 3 }, { name: '数据资源', key: 3 }, { name: '知识库', key: 3 } { name: '组件服务', key: 1 },
{ name: '应用资源', key: 2 },
{ name: '基础设施', key: 3 },
{ name: '数据资源', key: 3 },
{ name: '知识库', key: 3 }
], ],
tableData: [{ deptName: '部门', resourceNum: 222 }] tableData: [{ deptName: '部门', resourceNum: 222 }],
tableData2: [
{
approveStatus: '',
createDate: '',
deptName: '',
resourceName: '',
type: ''
}
],
examineStatus: '0', //
value1: [], //
abilityDepartment: '', //
abilityType: '', //
beginTime: '', //
endTime: '', //
typeOptions: [
{ name: '智能算法', value: 1 },
{ name: '图层服务', value: 2 },
{ name: '通用开发组件', value: 3 },
{ name: '页面开发组件', value: 4 },
{ name: '应用资源', value: 5 }
], //
detailFlag: true, //
startDate: '', //
endDate: '' //
} }
}, },
created () { created () {
//
const d = new Date()
let year1, month1, day1
;[year1, month1, day1] = [d.getFullYear(), d.getMonth(), d.getDate()]
const date1 = new Date(year1, month1, day1, 7)
this.value1.push(date1)
//
let year2, month2, day2
d.setTime(d.getTime() - 24 * 60 * 60 * 1000)
;[year2, month2, day2] = [d.getFullYear(), d.getMonth(), d.getDate()]
const date2 = new Date(year2, month2, day2, 7)
this.value1.unshift(date2)
}, },
mounted () { mounted () {
this.getFirstTree() this.getFirstTree()
}, },
computed: {
...mapState(['departmentSelects'])
},
methods: { methods: {
// //
// searchBtn(){ // searchBtn(){
@ -215,14 +372,16 @@ export default {
} }
}, },
getTreeName (data) { getTreeName (data) {
this.$http.get('/census/center/v3/treeList/', { this.$http
.get('/census/center/v3/treeList/', {
params: { params: {
keywords: data.name, keywords: data.name,
deptId: '1067246875800000066' deptId: '1067246875800000066'
// pageNo: pageNo || 1, // pageNo: pageNo || 1,
// pageSize: 20 // pageSize: 20
} }
}).then(res => { })
.then((res) => {
this.tableData = res.data.data this.tableData = res.data.data
}) })
}, },
@ -241,57 +400,196 @@ export default {
// }) // })
// }, // },
// // --
getFirstTree (page) { getFirstTree (page) {
this.$http.get('/census/center/v3/resourceReleaseDetails/', { this.$http
.get('/census/center/selectDeptDetailTypeCountList/', {
params: { params: {
page: page || 1, page: page || 1,
limit: 5, limit: 5,
// id:'1067246875800000066', approveStatus: this.examineStatus,
resourceType: '组件服务' deptId: this.abilityDepartment,
params: '',
startDate: this.startDate,
endDate: this.endDate
} }
}).then(res => { })
this.tableData = res.data.data.list .then((res) => {
const result = res.data.data
for (let i = 0; i < result.length; i++) {
if (!result[i].hasOwnProperty('yyzy')) {
result[i].yyzy = 0
}
if (!result[i].hasOwnProperty('kfzj')) {
result[i].kfzj = 0
}
if (!result[i].hasOwnProperty('znsf')) {
result[i].znsf = 0
}
if (!result[i].hasOwnProperty('tcfw')) {
result[i].tcfw = 0
}
if (!result[i].hasOwnProperty('ywzj')) {
result[i].ywzj = 0
}
result[i].zj =
parseInt(result[i].yyzy) +
parseInt(result[i].kfzj) +
parseInt(result[i].znsf) +
parseInt(result[i].ywzj) +
parseInt(result[i].tcfw)
}
this.tableData = res.data.data
this.total = res.data.data.total this.total = res.data.data.total
}) })
}, },
// 使 // 使-使
getSecondTree () { getSecondTree () {
this.$http.get('/census/center/v3/resourceUsedDetails/', { this.$http
.get('/census/center/selectApplyDeptDetailTypeCountList', {
params: { params: {
limit: 5, // page: page || 1,
page: 1, // limit: 5,
// id:'1067246875800000064', approveStatus: this.examineStatus,
resourceType: '组件服务' deptId: this.abilityDepartment,
params: '',
startDate: this.startDate,
endDate: this.endDate
} }
}).then(res => { })
this.tableData = res.data.data.list .then((res) => {
const result = res.data.data
for (let i = 0; i < result.length; i++) {
if (!result[i].hasOwnProperty('yyzy')) {
result[i].yyzy = 0
}
if (!result[i].hasOwnProperty('kfzj')) {
result[i].kfzj = 0
}
if (!result[i].hasOwnProperty('znsf')) {
result[i].znsf = 0
}
if (!result[i].hasOwnProperty('tcfw')) {
result[i].tcfw = 0
}
if (!result[i].hasOwnProperty('ywzj')) {
result[i].ywzj = 0
}
result[i].zj =
parseInt(result[i].yyzy) +
parseInt(result[i].kfzj) +
parseInt(result[i].znsf) +
parseInt(result[i].ywzj) +
parseInt(result[i].tcfw)
}
this.tableData = res.data.data
this.total = res.data.data.total
})
},
//
getOneDetail (page) {
var passAndReview = '' // ""
if (this.examineStatus === '审核完成') {
passAndReview = '通过'
} else {
passAndReview = this.examineStatus
}
this.$http
.get('/census/center/selectCensusResourceTable', {
params: {
// limit: 5,
// page: page || 1,
approveStatus: passAndReview,
deptId: this.abilityDepartment,
type: '',
startDate: this.startDate,
endDate: this.endDate
}
})
.then((res) => {
console.log('111111', this.tableData, res.data.data)
this.tableData = res.data.data
this.total = res.data.data.total
})
},
// 使
getTwoDetail (page) {
var passAndReview = '' // ""
if (this.examineStatus === '审核完成') {
passAndReview = '通过'
} else {
passAndReview = this.examineStatus
}
this.$http
.get('/census/center/selectCensusApplyTable', {
params: {
// limit: 5,
// page: page || 1,
approveStatus: this.examineStatus,
deptId: this.abilityDepartment,
type: '',
startDate: this.startDate,
endDate: this.endDate
}
})
.then((res) => {
this.tableData = res.data.data
this.total = res.data.data.total
}) })
}, },
//
getReleaseTree (page) { getReleaseTree (page) {
this.$http.get('/census/center/v3/resourceReleaseDetails/', { this.$http
.get('/census/center/selectApplyDeptDetailTypeCountList/', {
params: { params: {
limit: 5, limit: 5,
page: page || 1, // page: page || 1,
// id:'1067246875800000066', approveStatus: '',
resourceType: '应用资源' deptId: '',
params: '',
startDate: ''
} }
}).then(res => { })
this.tableData = res.data.data.list .then((res) => {
const result = res.data.data
for (let i = 0; i < result.length; i++) {
if (!result[i].hasOwnProperty('yyzy')) {
result[i].yyzy = 0
}
if (!result[i].hasOwnProperty('kfzj')) {
result[i].kfzj = 0
}
if (!result[i].hasOwnProperty('znsf')) {
result[i].znsf = 0
}
if (!result[i].hasOwnProperty('tcfw')) {
result[i].tcfw = 0
}
if (!result[i].hasOwnProperty('ywzj')) {
result[i].ywzj = 0
}
result[i].zj =
parseInt(result[i].yyzy) +
parseInt(result[i].kfzj) +
parseInt(result[i].znsf) +
parseInt(result[i].ywzj) +
parseInt(result[i].tcfw)
}
this.tableData = res.data.data
this.total = res.data.data.total this.total = res.data.data.total
}) })
}, },
// 使 // 使
getUsedTree () { getUsedTree () {
this.$http.get('/census/center/v3/resourceReleaseDetails/', { this.$http
.get('/census/center/v3/resourceReleaseDetails/', {
params: { params: {
limit: 5, limit: 5,
page: 1, page: 1,
// id:'1067246875800000066', // id:'1067246875800000066',
resourceType: '应用资源' resourceType: '应用资源'
} }
}).then(res => { })
.then((res) => {
this.tableData = res.data.data.list this.tableData = res.data.data.list
}) })
}, },
@ -336,15 +634,33 @@ export default {
this.departmentId = index this.departmentId = index
if (index === 1) { if (index === 1) {
if (this.choseId === 0) { if (this.choseId === 0) {
if (!this.detailFlag) {
this.detailFlag = !this.detailFlag
}
this.getFirstTree() this.getFirstTree()
} else if (this.choseId === 1) { } else if (this.choseId === 1) {
this.getReleaseTree() // this.getReleaseTree()
} }
} else if (index === 2) { } else if (index === 2) {
if (this.choseId === 0) { if (this.choseId === 0) {
if (!this.detailFlag) {
this.detailFlag = !this.detailFlag
}
this.getSecondTree() this.getSecondTree()
} else { } else {
this.getUsedTree() // this.getUsedTree()
}
} else if (index === 3) {
if (this.choseId === 0) {
this.getOneDetail()
} else {
// this.getUsedTree()
}
} else if (index === 4) {
if (this.choseId === 0) {
this.getTwoDetail()
} else {
// this.getUsedTree()
} }
} }
}, },
@ -366,14 +682,152 @@ export default {
this.homeIsShow = true this.homeIsShow = true
this.resourcesIsShow = false this.resourcesIsShow = false
this.handleCurrentChange(1) this.handleCurrentChange(1)
},
// //////////
goToDetail () {
this.detailFlag = !this.detailFlag
if (this.departmentId === 1) {
this.handleChose(3)
// this.departmentId = 1;
} else if (this.departmentId === 2) {
this.handleChose(4)
// this.departmentId = 2;
} else {
} }
},
//
goToBack () {
// departmentId 13 24
this.detailFlag = !this.detailFlag
if (this.departmentId === 3) {
this.handleChose(1)
// this.departmentId = 1;
} else if (this.departmentId === 4) {
this.handleChose(2)
// this.departmentId = 2;
} else {
}
},
//
getDataList () {
if (this.value1.length > 0) {
this.startDate = this.handleTime(this.value1[0], 'yyyy-MM-dd HH:mm:ss')
this.endDate = this.handleTime(this.value1[1], 'yyyy-MM-dd HH:mm:ss')
}
if (this.examineStatus == 0) {
this.examineStatus = '审核中'
} else {
this.examineStatus = '审核完成'
} }
if (this.abilityDepartment) {
this.abilityDepartment = this.abilityDepartment
} else {
this.abilityDepartment = ''
}
if (this.abilityType) {
this.abilityType = this.abilityType
} else {
this.abilityType = ''
}
console.log('查询参数开始时间1', this.startDate)
console.log('查询参数结束时间2', this.endDate)
console.log('查询参数审核状态', this.examineStatus)
console.log('查询参数部门', this.abilityDepartment)
console.log('查询参数类型', this.abilityType)
if (this.departmentId === 1) {
if (this.detailFlag) {
this.handleChose(3)
this.detailFlag = !this.detailFlag
} else {
this.handleChose(1)
this.detailFlag = !this.detailFlag
}
// this.departmentId = 1;
} else if (this.departmentId === 2) {
if (this.detailFlag) {
this.handleChose(4)
this.detailFlag = !this.detailFlag
} else {
this.handleChose(2)
this.detailFlag = !this.detailFlag
}
} else if (this.departmentId === 3) {
this.handleChose(3)
} else {
this.handleChose(4)
}
},
//
resetDataList () {
this.startDate = ''
this.endDate = ''
this.examineStatus = '审核中'
this.abilityDepartment = ''
this.abilityType = ''
if (this.departmentId === 1) {
if (this.detailFlag) {
this.handleChose(3)
this.detailFlag = !this.detailFlag
} else {
this.handleChose(1)
this.detailFlag = !this.detailFlag
}
// this.departmentId = 1;
} else if (this.departmentId === 2) {
if (this.detailFlag) {
this.handleChose(4)
this.detailFlag = !this.detailFlag
} else {
this.handleChose(2)
this.detailFlag = !this.detailFlag
}
} else if (this.departmentId === 3) {
this.handleChose(3)
} else {
this.handleChose(4)
}
},
//
handleTime (time, format) {
if (time == null || time == undefined || time == '') {
return ''
}
var t = new Date(time)
var tf = function (i) {
return (i < 10 ? '0' : '') + i
}
return format.replace(/yyyy|MM|dd|HH|mm|ss/g, function (a) {
switch (a) {
case 'yyyy':
return tf(t.getFullYear())
break
case 'MM':
return tf(t.getMonth() + 1)
break
case 'mm':
return tf(t.getMinutes())
break
case 'dd':
return tf(t.getDate())
break
case 'HH':
return tf(t.getHours())
break
case 'ss':
return tf(t.getSeconds())
break
}
})
}
}
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.container { .container {
display: flex; display: flex;
flex-direction: column;
} }
.container-left { .container-left {
width: 250px; width: 250px;
@ -464,6 +918,18 @@ input::placeholder {
font-size: 14px; font-size: 14px;
color: #979eb9; color: #979eb9;
cursor: pointer; cursor: pointer;
.detail-button {
width: 60px;
height: 30px;
right: 60px;
background-color: #0058e1;
position: absolute;
text-align: center;
line-height: 30px;
margin-top: -20px;
border-radius: 2px;
color: #fff;
}
} }
.line-style { .line-style {
width: 100%; width: 100%;

View File

@ -2,7 +2,7 @@
<el-card shadow="never" class="roomBox"> <el-card shadow="never" class="roomBox">
<div class="roomExamineSearch"> <div class="roomExamineSearch">
<el-input <el-input
v-model="roomName" v-model="roomNameA"
style="width: 160px" style="width: 160px"
placeholder="请输入会议室名称" placeholder="请输入会议室名称"
></el-input> ></el-input>
@ -195,6 +195,17 @@
<el-input type="textarea" v-model="desc"></el-input> <el-input type="textarea" v-model="desc"></el-input>
</el-col> </el-col>
</el-row> </el-row>
<el-row style="display: flex; margin-top: 20px">
<el-col :span="2">附件</el-col>
<el-col :span="16">
<el-button
v-if="file != ''"
size="mini"
@click="downloadTemplate(file)"
>下载</el-button
>
</el-col>
</el-row>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="No"> </el-button> <el-button @click="No"> </el-button>
<el-button type="primary" @click="ok"> </el-button> <el-button type="primary" @click="ok"> </el-button>
@ -232,6 +243,9 @@ export default {
id: '', id: '',
num: '', num: '',
file: '', file: '',
name: '',
creator: '',
roomNameA: '',
} }
}, },
mounted() { mounted() {
@ -241,10 +255,9 @@ export default {
getSerach() { getSerach() {
this.$http this.$http
.get( .get(
`/bookMeeting/auditPage?page=${this.page}&limit=${this.limit}&roomName=${this.roomName}&state=${this.value}` `/bookMeeting/auditPage?page=${this.page}&limit=${this.limit}&roomName=${this.roomNameA}&state=${this.value}`
) )
.then(({ data: res }) => { .then(({ data: res }) => {
console.log(res, 7777777)
this.tableData = res.data.list this.tableData = res.data.list
this.total = res.data.total this.total = res.data.total
}) })
@ -268,13 +281,15 @@ export default {
if (num == '1') { if (num == '1') {
this.dialogVisibleChuli = true this.dialogVisibleChuli = true
this.id = item.id this.id = item.id
this.name = item.name
this.roomName = item.roomName
this.creator = item.creator
} else { } else {
this.dialogVisible = true this.dialogVisible = true
}
this.$http.get(`bookMeeting/${item.id}`).then(({ data: res }) => { this.$http.get(`bookMeeting/${item.id}`).then(({ data: res }) => {
console.log(55555555)
this.file = res.data.file this.file = res.data.file
}) })
}
this.lookData = item this.lookData = item
}, },
@ -283,6 +298,9 @@ export default {
auditViem: this.desc, auditViem: this.desc,
state: this.radio, state: this.radio,
id: this.id, id: this.id,
name: this.name,
roomName: this.roomName,
creator: this.creator,
} }
this.$http.put('/bookMeeting', query).then(({ data: res }) => { this.$http.put('/bookMeeting', query).then(({ data: res }) => {
this.dialogVisibleChuli = false this.dialogVisibleChuli = false

View File

@ -0,0 +1,171 @@
<!--
* @Author: hisense.guoyue
* @LastEditors: hisense.guoyue
* @LastEditTime: 2022-09-27 14:23:29
* @Description: 设备审批
-->
<template>
<el-card shadow="never" class="aui-card--fill" style="position:relative">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input v-model="dataForm.deviceName" :placeholder="$t('process.name')" clearable></el-input>
</el-form-item>
<el-select v-model="dataForm.state" placeholder="请选择" style="margin-right: 10px">
<el-option v-for="item in stateOptions" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<el-form-item>
<el-button type="primary" @click="getDataList()">{{
$t('query')
}}</el-button>
</el-form-item>
</el-form>
<div class="mod-activiti__process">
<el-table v-loading="dataListLoading" :data="dataList" border style="width: 100%">
<el-table-column prop="title" label="申请标题" header-align="center" align="center"></el-table-column>
<el-table-column prop="name" label="申请人信息" header-align="center" align="center"></el-table-column>
<el-table-column label="设备名称" header-align="center" align="center">
<template slot-scope="scope">
<span class="demand-text">{{
(scope.row && scope.row.tbDeviceDTO && scope.row.tbDeviceDTO.name)
}}</span>
</template>
</el-table-column>
<el-table-column prop="state" label="审批状态" header-align="center" align="center">
<template slot-scope="scope">
<span>{{wrjStateObj[scope.row.state]}}</span>
</template>
</el-table-column>
<el-table-column label="应用领域" header-align="center" align="center">
<template slot-scope="scope" v-if="scope.row.applicationArea">
<span class="area-text" v-for="(x,i) in JSON.parse(scope.row.applicationArea)"
:key="i">{{x}}</span>
</template>
</el-table-column>
<el-table-column label="需求依据" header-align="center" align="center" width="200">
<template slot-scope="scope">
<el-tooltip placement="top-start">
<div class="tooltip-box" slot="content">{{(scope.row && scope.row.demand)}}</div>
<span class="demand-text">{{
(scope.row && scope.row.demand)
}}</span>
</el-tooltip>
</template>
</el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button type="text" size="small" @click="showDetail(scope.row)">详情</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination :current-page="page" :page-sizes="[10, 20, 50, 100]" :page-size="limit" :total="total"
layout="total, sizes, prev, pager, next, jumper" @size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
</div>
<el-dialog title="审批" :visible.sync="centerDialogVisible" width="30%" center>
<el-form ref="form" :model="form" label-width="80px">
<el-form-item label="审批意见">
<el-input type="textarea" v-model="form.auditViem" placeholder="请输入审批意见"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="through(3)">不通过</el-button>
<el-button type="primary" @click="through(2)">通过</el-button>
</span>
</el-dialog>
</el-card>
</template>
<script>
import bus from '@/views/bus.js'
import mixinViewModule from '@/mixins/view-module'
import processModule from '@/mixins/process-module'
import { addDynamicRoute } from '@/router'
export default {
mixins: [mixinViewModule, processModule],
data() {
return {
mixinViewModuleOptions: {
getDataListURL: '/deviceApply/myDonePage',
getDataListIsPage: true,
activatedIsNeed: true,
deleteIsBatch: true,
deleteIsBatchKey: 'deploymentId'
},
centerDialogVisible: false,
form: {
auditViem: ''
},
dataForm: {
state: '',
deviceName: null
},
wrjStateObj: {
0: '待审批',
1: '未申请',
2: '通过',
3: '未通过'
},
//
detailInfo: {},
//
deviceDetailInfo: {}
}
},
computed: {
stateOptions() {
let arr = []
Object.keys(this.wrjStateObj).map(v => {
arr.push({
label: this.wrjStateObj[v],
value: v,
})
})
return arr
},
},
methods: {
showDetail(row) {
this.forwardDetail(row)
},
//
forwardDetail(data) {
console.log('data------------>', data);
console.log('this.$route------------>', this.$route);
var routeParams = {
routeName: `${this.$route.name}__detail_${data.id}`,
menuId: `${this.$route.meta.menuId}`,
title: `${this.$route.meta.title} - 详情`,
path: 'hasToDoTasks/deviceApprovalDetail',
params: {
params: data,
id: data.id,
}
}
console.log('routeParams------------>', routeParams);
addDynamicRoute(routeParams, this.$router)
},
},
}
</script>
<style scoped>
.demand-text {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.area-text {
padding: 0 4px;
}
.tooltip-box {
width: 400px;
}
</style>

View File

@ -0,0 +1,319 @@
<!--
* @Author: hisense.guoyue
* @Date: 2022-06-29 15:59:51
* @LastEditors: hisense.guoyue
* @LastEditTime: 2022-09-27 18:08:00
* @Description: 设备审批详情
-->
<!-- 设备审批详情 -->
<template>
<el-card shadow="never" class="aui-card--fill">
<!-- 申请人详情 -->
<div>
<h3>申请人信息</h3>
<div class="big-BOX">
<p>
<span class="text">申请人<span> {{ detailInfo.name || '--' }}</span></span>
<span class="text">电话<span>{{ detailInfo.phone || '--' }}</span></span>
<span class="text">部门<span>{{ detailInfo.dept || '--' }}</span></span>
</p>
<p>
<span class="text">
能力申请标题<span>
{{ detailInfo.title || '--' }}</span></span>
<span class="text" v-if="detailInfo.applicationSystem">应用系统<span>{{
detailInfo.applicationSystem || '--'
}}</span></span>
<span class="text"></span>
</p>
<p>
<span v-if="detailInfo.applicationArea">
应用领域
<span class="area-item" v-for="(area, i) in JSON.parse(detailInfo.applicationArea)" :key="i">{{ area || '--'
}}</span>
</span>
</p>
<p>
<span>
需求依据<span>
{{ detailInfo.demand || '--' }}</span></span>
</p>
</div>
</div>
<!-- 申请能力 -->
<div class="AbilityApply">
<h3>申请能力</h3>
</div>
<el-card shadow="never" class="aui-card--fill">
<h4>{{ $t('process.circulation') }}</h4>
<el-table :data="dataList" border style="width: 100%;">
<!-- 任务名称 -->
<el-table-column prop="activityName" :label="$t('process.taskName')" header-align="center" align="center">
</el-table-column>
<!-- 处理人 -->
<el-table-column prop="assigneeName" :label="$t('process.assignee')" header-align="center" align="center">
</el-table-column>
<!-- 流程开始时间 -->
<el-table-column prop="startTime" :label="$t('task.startTime')" header-align="center" align="center">
</el-table-column>
<!-- 流程结束时间 -->
<el-table-column prop="endTime" :label="$t('task.endTime')" header-align="center" align="center">
</el-table-column>
<!-- 审核意见 -->
<el-table-column prop="comment" :label="$t('process.comment')" header-align="center" align="center">
</el-table-column>
<!-- 任务时长 -->
<el-table-column prop="durationInSeconds" :label="$t('task.durationInSeconds')" header-align="center"
align="center" width="180"></el-table-column>
</el-table>
</el-card>
</el-card>
</template>
<script>
import * as moment from 'moment';
export default {
data() {
return {
//
detailInfo: {},
dataList: [],
}
},
created() {
this.detailInfo = this.$route.params.params || {};
console.log('this.detailInfo------------>', this.detailInfo);
//
let durationInSeconds = ''
if (this.detailInfo.auditTime && this.detailInfo.auditTime) {
durationInSeconds = moment(this.detailInfo.auditTime).diff(moment(this.detailInfo.createDate), 'seconds')
}
let _obj = {
activityName: this.detailInfo.title || '',
assigneeName: this.detailInfo.auditorName || '',
startTime: this.detailInfo.createDate || '',
endTime: this.detailInfo.auditTime,
comment: this.detailInfo.auditViem,
durationInSeconds: durationInSeconds,
}
this.dataList.push(_obj)
}
}
</script>
<style scoped lang="scss">
::v-deep .big-BOX {
background: rgba(244, 245, 248, 0.8);
padding: 24px;
h3 {
font-size: 16px;
color: #212121;
}
p {
width: 100%;
display: flex;
justify-content: space-between;
color: #212121;
font-size: 14px;
span {
display: inline-block;
margin-left: 8px;
line-height: 32px;
span {
font-weight: bold;
}
}
.text {
width: 500px;
}
}
.lastP {
margin-top: 16px;
width: 100%;
span {
display: flex;
span {
padding: 0 12px;
height: 32px;
background: rgba(232, 234, 239, 1);
border-radius: 2px;
button {
background: unset;
border: 0;
color: #0558e1;
font-size: 14px;
}
}
}
}
}
::v-deep .AbilityApply {
margin-top: 32px;
h3 {
font-size: 16px;
color: #212121;
border-bottom: 1px solid #dddee1;
padding-bottom: 10px;
}
ul {
padding-left: 0px;
li {
list-style: none;
padding: 30px 0;
border-bottom: 1px solid #dddee1;
display: flex;
img {
width: 100px;
height: 100px;
}
div {
margin-left: 16px;
display: flex;
flex-direction: column;
justify-content: center;
h2 {
margin-bottom: 20px;
font-size: 20px;
color: #000;
display: flex;
span {
display: block;
font-size: 14px;
color: #ffffff;
margin-left: 8px;
background: rgba(0, 184, 230, 0.8);
display: flex;
align-items: center;
padding: 0 5px;
border-radius: 4px;
}
}
p {
margin-bottom: 0;
}
}
}
.clearfix:after {
display: block;
content: "";
clear: both;
}
.title {
color: #0558e1;
font-size: 18px;
padding-bottom: 0;
border-bottom: 0;
}
.title:before {
content: "";
width: 6px;
height: 6px;
display: inline-block;
border-radius: 50%;
background: #0558e1;
vertical-align: middle;
margin-right: 10px;
margin-top: 6px;
}
}
}
::v-deep .agreeOr>div {
display: flex;
align-items: center;
.el-input {
margin-right: 10px;
margin-left: 32px;
}
}
::v-deep .agreeOr>div:last-of-type {
margin-top: 15px;
}
.blueAll {
::v-deep .el-radio-button__inner {
width: 80px;
height: 32px;
line-height: 32px;
padding: 0;
border-radius: 2px;
background: #ffffff;
color: #0558e1;
border: 1px solid #0558e1;
}
::v-deep .el-radio-button__orig-radio:checked+.el-radio-button__inner {
box-shadow: unset !important;
background: #0558e1;
color: #ffffff;
}
}
.inputBule {
width: 55px;
height: 32px;
line-height: 32px;
padding: 0;
border-radius: 2px;
background: #0558e1;
color: #ffffff;
border: 1px solid #0558e1;
}
.redAll {
margin-left: 10px;
::v-deep .el-radio-button__inner {
width: 80px;
height: 32px;
line-height: 32px;
padding: 0;
border-radius: 2px;
border: 1px solid #e83a48;
background: #ffffff;
color: #e83a48;
margin-left: 10px;
}
::v-deep .el-radio-button__orig-radio:checked+.el-radio-button__inner {
box-shadow: unset !important;
color: #ffffff;
background: #e83a48;
}
}
.blueInput {
width: 55px;
}
.area-item {
padding-right: 10px;
}
</style>

View File

@ -208,7 +208,7 @@
<script> <script>
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
export default { export default {
data() { data () {
// let validatorImg = (rule, value, callback) => { // let validatorImg = (rule, value, callback) => {
// console.log(value, 11111111) // console.log(value, 11111111)
// // // //
@ -228,10 +228,10 @@ export default {
ruleForm: { ruleForm: {
name: '', name: '',
num: '', num: '',
area: '', area: 0,
capacity: '', capacity: '',
pic: '', pic: '',
id: '', id: ''
}, },
limit: 10, limit: 10,
page: 1, page: 1,
@ -242,11 +242,11 @@ export default {
rules: { rules: {
name: [ name: [
{ required: true, message: '请输入会议室名称', trigger: 'blur' }, { required: true, message: '请输入会议室名称', trigger: 'blur' },
{ min: 1, trigger: 'blur' }, { min: 1, trigger: 'blur' }
], ],
area: [ area: [
{ required: true, message: '请输入会议室面积', trigger: 'blur' }, { required: true, message: '请输入会议室面积', trigger: 'blur' }
{ min: 1, type: 'number', trigger: 'blur' }, // { min: 1, message: '', type: 'number', trigger: 'blur' }
], ],
description: [ description: [
{ required: true, message: '请填写描述内容', trigger: 'blur' }, { required: true, message: '请填写描述内容', trigger: 'blur' },
@ -254,22 +254,22 @@ export default {
min: 1, min: 1,
max: 500, max: 500,
message: '长度在 1 到 500 个字符', message: '长度在 1 到 500 个字符',
trigger: 'blur', trigger: 'blur'
}, }
], ]
}, },
formLabelWidth: '120px', formLabelWidth: '120px',
checkImgSuccess: true, checkImgSuccess: true,
dialogVisible: false, dialogVisible: false,
flge: '', flge: ''
} }
}, },
mounted() { mounted () {
this.queryData() this.queryData()
}, },
methods: { methods: {
// //
queryData() { queryData () {
this.$http this.$http
.get(`/meeting/page?limit=${this.limit}&page=${this.page}`) .get(`/meeting/page?limit=${this.limit}&page=${this.page}`)
.then(({ data: res }) => { .then(({ data: res }) => {
@ -278,31 +278,31 @@ export default {
}) })
}, },
// //
handleSizeChange(val) { handleSizeChange (val) {
this.limit = val this.limit = val
this.queryData() this.queryData()
}, },
handleCurrentChange(val) { handleCurrentChange (val) {
this.page = val this.page = val
this.queryData() this.queryData()
}, },
// //
addRooom() { addRooom () {
this.dialogFormVisible = true this.dialogFormVisible = true
this.flge = 'add' this.flge = 'add'
this.ruleForm = {} this.ruleForm = {}
this.fileList = [] this.fileList = []
}, },
handlePictureCardPreview(file) { handlePictureCardPreview (file) {
this.dialogImageUrl = file.url this.dialogImageUrl = file.url
this.dialogVisible = true this.dialogVisible = true
}, },
// //
beforeUpload(file, fileList) { beforeUpload (file, fileList) {
this.$message.error('最多只能上传一张图片!') this.$message.error('最多只能上传一张图片!')
}, },
// //
onSuccess(response, file, fileList) { onSuccess (response, file, fileList) {
const isLt2M = file.size / 1024 / 1024 < 100 const isLt2M = file.size / 1024 / 1024 < 100
if (!isLt2M) { if (!isLt2M) {
this.$message.error('上传图片大小不能超过100MB') this.$message.error('上传图片大小不能超过100MB')
@ -313,17 +313,17 @@ export default {
this.checkImgSuccess = true this.checkImgSuccess = true
} }
}, },
// //
onRemove(file, fileList) { onRemove (file, fileList) {
this.$nextTick(() => { this.$nextTick(() => {
if (fileList.length == 0) { if (fileList.length == 0) {
this.checkImgSuccess = false // this.checkImgSuccess = false //
// this.$refs.ruleForm.validate() //, // this.$refs.ruleForm.validate() //,
} }
}) })
}, },
// //
submitForm(formName, i) { submitForm (formName, i) {
this.$refs[formName].validate((valid) => { this.$refs[formName].validate((valid) => {
if (valid) { if (valid) {
if (i === 'add') { if (i === 'add') {
@ -337,9 +337,9 @@ export default {
}) })
} else if (i === 'edit') { } else if (i === 'edit') {
this.dialogFormVisible = false this.dialogFormVisible = false
this.$http.put(`/meeting`, this.ruleForm).then(({ data: res }) => { this.$http.put('/meeting', this.ruleForm).then(({ data: res }) => {
this.ruleForm = res.data this.ruleForm = res.data
let imgUrl = { name: res.data.name, url: res.data.pic } const imgUrl = { name: res.data.name, url: res.data.pic }
this.fileList.push(imgUrl) this.fileList.push(imgUrl)
}) })
} }
@ -350,7 +350,7 @@ export default {
}) })
}, },
// //
taskDetails(row) { taskDetails (row) {
this.ruleForm = {} this.ruleForm = {}
this.fileList = [] this.fileList = []
this.flge = 'look' this.flge = 'look'
@ -366,45 +366,45 @@ export default {
} }
}) })
}, },
// //
taskUpdate(row) { taskUpdate (row) {
this.dialogFormVisible = true this.dialogFormVisible = true
this.fileList = [] this.fileList = []
this.flge = 'edit' this.flge = 'edit'
this.ruleForm = row this.ruleForm = row
if (row.pic != null) { if (row.pic != null) {
let imgUrl = { name: row.name, url: row.pic } const imgUrl = { name: row.name, url: row.pic }
this.fileList.push(imgUrl) this.fileList.push(imgUrl)
} else { } else {
this.fileList = [] this.fileList = []
} }
}, },
// //
taskDelete(row) { taskDelete (row) {
this.$confirm('此操作将永久删除该会议室, 是否继续?', '提示', { this.$confirm('此操作将永久删除该会议室, 是否继续?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning', type: 'warning'
}) })
.then(() => { .then(() => {
this.$http.put(`/meeting`, { delFlag: 1, id: row.id }).then(() => { this.$http.put('/meeting', { delFlag: 1, id: row.id }).then(() => {
this.queryData() this.queryData()
this.$message({ this.$message({
type: 'success', type: 'success',
message: '删除成功!', message: '删除成功!'
}) })
}) })
}) })
.catch(() => { .catch(() => {
this.$message({ this.$message({
type: 'info', type: 'info',
message: '已取消删除', message: '已取消删除'
}) })
}) })
}, },
// //
outDialog() {}, outDialog () {}
}, }
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">

View File

@ -0,0 +1,149 @@
<!--
* @Author: hisense.guoyue
* @LastEditors: hisense.guoyue
* @LastEditTime: 2022-09-21 10:37:29
* @Description: 设备审批
-->
<template>
<!-- @selection-change="dataListSelectionChangeHandle" -->
<!-- @sort-change="dataListSortChangeHandle" -->
<el-card shadow="never" class="aui-card--fill" style="position:relative">
<div class="mod-activiti__process">
<el-table v-loading="dataListLoading" :data="dataList" border style="width: 100%">
<el-table-column prop="title" label="申请标题" header-align="center" align="center"></el-table-column>
<el-table-column prop="name" label="申请人信息" header-align="center" align="center"></el-table-column>
<el-table-column prop="state" label="审批状态" header-align="center" align="center">
<template slot-scope="scope">
<span>{{wrjStateObj[scope.row.state]}}</span>
</template>
</el-table-column>
<el-table-column prop="phone" label="电话" header-align="center" align="center"></el-table-column>
<el-table-column prop="dept" label="单位" header-align="center" align="center"></el-table-column>
<el-table-column prop="applicationSystem" label="应用系统" header-align="center" align="center">
</el-table-column>
<el-table-column label="应用领域" header-align="center" align="center">
<template slot-scope="scope" v-if="scope.row.applicationArea">
<span class="area-text" v-for="(x,i) in JSON.parse(scope.row.applicationArea)"
:key="i">{{x}}</span>
</template>
</el-table-column>
<el-table-column label="需求依据" header-align="center" align="center" width="200">
<template slot-scope="scope">
<el-tooltip placement="top-start">
<div class="tooltip-box" slot="content">{{(scope.row && scope.row.demand)}}</div>
<span class="demand-text">{{
(scope.row && scope.row.demand)
}}</span>
</el-tooltip>
</template>
</el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button type="text" size="small" @click="taskHandle(scope.row)">审批</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination :current-page="page" :page-sizes="[10, 20, 50, 100]" :page-size="limit" :total="total"
layout="total, sizes, prev, pager, next, jumper" @size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
</div>
<el-dialog title="审批" :visible.sync="centerDialogVisible" width="30%" center>
<el-form ref="form" :model="form" label-width="80px">
<el-form-item label="审批意见">
<el-input type="textarea" v-model="form.auditViem" placeholder="请输入审批意见"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="through(3)">不通过</el-button>
<el-button type="primary" @click="through(2)">通过</el-button>
</span>
</el-dialog>
</el-card>
</template>
<script>
import bus from '@/views/bus.js'
import mixinViewModule from '@/mixins/view-module'
import processModule from '@/mixins/process-module'
export default {
mixins: [mixinViewModule, processModule],
data() {
return {
mixinViewModuleOptions: {
getDataListURL: '/deviceApply/auditPage',
getDataListIsPage: true,
activatedIsNeed: true,
deleteIsBatch: true,
deleteIsBatchKey: 'deploymentId'
},
centerDialogVisible: false,
form: {
auditViem: ''
},
dataForm: {
state: 0
},
rowData: {},
wrjStateObj: {
0: '待审批',
1: '未申请',
2: '通过',
3: '未通过'
}
}
},
methods: {
taskHandle(row) {
this.form.auditViem = '';
this.rowData = row;
this.centerDialogVisible = true
},
through(state) {
// 2- 3-
this.handlePut(state)
},
handlePut(state) {
this.$http.put(`/deviceApply`, {
...this.rowData,
state: state,
...this.form
}).then(({ data: res }) => {
console.log('res------------>', res);
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.centerDialogVisible = false
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.query()
}
})
}).catch((err) => {
console.log('err------------>', err);
})
}
},
}
</script>
<style scoped>
.demand-text {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.area-text {
padding: 0 4px;
}
.tooltip-box {
width: 400px;
}
</style>

View File

@ -38,6 +38,15 @@
@click="videoAndImg(itemsonson.note1)" @click="videoAndImg(itemsonson.note1)"
> >
浏览 浏览
</div>
<div
class="videoAndImgCss"
v-if="
itemsonson.name === '上传附件'
"
@click="videoAndImg(itemsonson.note1)"
>
下载
</div> </div>
<div <div
v-else-if="itemsonson.type === ' multipleAdditions'" v-else-if="itemsonson.type === ' multipleAdditions'"
@ -510,7 +519,7 @@ export default {
color: #333333; color: #333333;
font-size: 22px; font-size: 22px;
margin-bottom: 20px; margin-bottom: 20px;
background: url('~@/assets/img/sj-jx.png') no-repeat; background: url("~@/assets/img/sj-jx.png") no-repeat;
background-position-x: 15px; background-position-x: 15px;
} }
.multipleAdditionsClass { .multipleAdditionsClass {

View File

@ -36,8 +36,10 @@
tip="支持文件类型大小不超过100M"></upload> tip="支持文件类型大小不超过100M"></upload>
<upload @changeInfoList='changeInfoList' :title='item.name' accept='.mp4' :list="item" v-else-if="item.type == 'video'" type="视频" btnName="上传视频" :maxCount="1" :dataList="item" <upload @changeInfoList='changeInfoList' :title='item.name' accept='.mp4' :list="item" v-else-if="item.type == 'video'" type="视频" btnName="上传视频" :maxCount="1" :dataList="item"
tip="支持视频类型大小不超过100M"></upload> tip="支持视频类型大小不超过100M"></upload>
<upload @changeInfoList='changeInfoList' :title='item.name' accept='.zip' :list="item" v-else-if="item.type == 'package'" type="安装包" btnName="上传安装包" :maxCount="1" :dataList="item" <upload @changeInfoList='changeInfoList' :title='item.name' accept='.zip' :list="item" v-else-if="item.type == 'package' &&item.name != '上传附件'" type="安装包" btnName="上传安装包" :maxCount="1" :dataList="item"
tip="支持.zip类型大小不超过100M"></upload> tip="支持.zip类型大小不超过100M"></upload>
<upload @changeInfoList='changeInfoList' :title='item.name' accept='.pdf,.ppt,.xlsx,.doc,.docx,.zip' :list="item" v-else-if="item.name == '上传附件'" type="附件" btnName="上传附件" :maxCount="1" :dataList="item"
tip="支持.doc,.docx,.zip,.ppt,.pdf类型大小不超过100M"></upload>
<input-select-checkbox :changeField='changeField' :list="[]" v-else-if="item.type == 'AbilityType'" type="disabled" :data="item" :name="item.name" :value="typeInput"></input-select-checkbox> <input-select-checkbox :changeField='changeField' :list="[]" v-else-if="item.type == 'AbilityType'" type="disabled" :data="item" :name="item.name" :value="typeInput"></input-select-checkbox>
<input-select-checkbox :changeField='changeField' :list="[]" v-else-if="item.type == 'ComponentType'" type="disabled" :data="item" :name="item.name" :value="type"></input-select-checkbox> <input-select-checkbox :changeField='changeField' :list="[]" v-else-if="item.type == 'ComponentType'" type="disabled" :data="item" :name="item.name" :value="type"></input-select-checkbox>
<input-select-checkbox :changeField='changeField' :list="[]" v-else-if="item.type == 'input'" type="input" :data="item" :name="item.name"></input-select-checkbox> <input-select-checkbox :changeField='changeField' :list="[]" v-else-if="item.type == 'input'" type="input" :data="item" :name="item.name"></input-select-checkbox>
@ -267,7 +269,7 @@ export default {
} }
.item { .item {
position: relative; position: relative;
.box{ .box {
display: flex; display: flex;
align-items: center; align-items: center;
margin: 25px 0; margin: 25px 0;
@ -276,17 +278,17 @@ export default {
display: flex; display: flex;
align-items: center; align-items: center;
} }
.required{ .required {
color: #f56c6c; color: #f56c6c;
margin-right: 3px; margin-right: 3px;
} }
} }
.requiredTips{ .requiredTips {
font-size: 14px; font-size: 14px;
color: #f56c6c; color: #f56c6c;
position: absolute; position: absolute;
bottom:-20px; bottom: -20px;
left:110px; left: 110px;
} }
} }
</style> </style>

View File

@ -9,22 +9,31 @@
<el-input v-model="dataForm.postName" :placeholder="$t('post.postName')" clearable></el-input> <el-input v-model="dataForm.postName" :placeholder="$t('post.postName')" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<ren-select v-model="dataForm.status" dict-type="post_status" :placeholder="$t('post.status')" ></ren-select> <ren-select v-model="dataForm.status" dict-type="post_status" :placeholder="$t('post.status')"></ren-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button> <el-button @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button v-if="$hasPermission('sys:post:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button> <el-button v-if="$hasPermission('sys:post:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}
</el-button>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button v-if="$hasPermission('sys:post:delete')" type="danger" @click="deleteHandle()">{{ $t('deleteBatch') }}</el-button> <el-button v-if="$hasPermission('sys:post:delete')" type="danger" @click="deleteHandle()">{{ $t('deleteBatch')
}}</el-button>
</el-form-item>
<el-form-item>
<el-button v-if="$hasPermission('sys:post:reset')" type="primary" @click="resetHandle()">{{ $t('reset') }}
</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;"> <el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle"
style="width: 100%;">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column> <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="postCode" :label="$t('post.postCode')" header-align="center" align="center"></el-table-column> <el-table-column prop="postCode" :label="$t('post.postCode')" header-align="center" align="center">
<el-table-column prop="postName" :label="$t('post.postName')" header-align="center" align="center"></el-table-column> </el-table-column>
<el-table-column prop="postName" :label="$t('post.postName')" header-align="center" align="center">
</el-table-column>
<el-table-column prop="sort" :label="$t('post.sort')" header-align="center" align="center"></el-table-column> <el-table-column prop="sort" :label="$t('post.sort')" header-align="center" align="center"></el-table-column>
<el-table-column prop="status" :label="$t('post.status')" header-align="center" align="center"> <el-table-column prop="status" :label="$t('post.status')" header-align="center" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
@ -33,18 +42,15 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150"> <el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button v-if="$hasPermission('sys:post:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button> <el-button v-if="$hasPermission('sys:post:update')" type="text" size="small"
<el-button v-if="$hasPermission('sys:post:delete')" type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button> @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button v-if="$hasPermission('sys:post:delete')" type="text" size="small"
@click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-pagination <el-pagination :current-page="page" :page-sizes="[10, 20, 50, 100]" :page-size="limit" :total="total"
:current-page="page" layout="total, sizes, prev, pager, next, jumper" @size-change="pageSizeChangeHandle"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle"> @current-change="pageCurrentChangeHandle">
</el-pagination> </el-pagination>
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
@ -58,7 +64,7 @@ import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './post-add-or-update' import AddOrUpdate from './post-add-or-update'
export default { export default {
mixins: [mixinViewModule], mixins: [mixinViewModule],
data () { data() {
return { return {
mixinViewModuleOptions: { mixinViewModuleOptions: {
getDataListURL: '/sys/post/page', getDataListURL: '/sys/post/page',
@ -77,6 +83,14 @@ export default {
}, },
components: { components: {
AddOrUpdate AddOrUpdate
},
methods: {
resetHandle() {
Object.keys(this.dataForm).map(v => this.dataForm[v] = '')
this.$nextTick(() => {
this.getDataList()
})
},
} }
} }
</script> </script>

View File

@ -14,6 +14,9 @@
<el-form-item> <el-form-item>
<el-button v-if="$hasPermission('sys:role:delete')" type="danger" @click="deleteHandle()">{{ $t('deleteBatch') }}</el-button> <el-button v-if="$hasPermission('sys:role:delete')" type="danger" @click="deleteHandle()">{{ $t('deleteBatch') }}</el-button>
</el-form-item> </el-form-item>
<el-form-item>
<el-button v-if="$hasPermission('sys:role:reset')" type="primary" @click="resetHandle()">{{ $t('reset') }}</el-button>
</el-form-item>
</el-form> </el-form>
<el-table <el-table
v-loading="dataListLoading" v-loading="dataListLoading"
@ -68,6 +71,14 @@ export default {
}, },
components: { components: {
AddOrUpdate AddOrUpdate
},
methods: {
resetHandle() {
this.dataForm.name = '';
this.$nextTick(() => {
this.getDataList()
})
},
} }
} }
</script> </script>

View File

@ -1,15 +1,16 @@
/* /*
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23 * @Date: 2020-07-07 16:03:23
* @LastEditors: hisense.wuhongjian * @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-27 14:25:54 * @LastEditTime: 2022-09-19 09:36:49
* @Description: 系统静态参数配置 * @Description: 系统静态参数配置
*/ */
var _global = {} var _global = {}
var CONFIGITEM = { var CONFIGITEM = {
version: 'qingdao', // // version: 'qingdao', //
//version: 'xihaian', // 西 version: 'xihaian', // 西
//version: 'dev', // // version: 'dev', //
// version: 'zhanTingDev', // dev (2022-09-13:)
//version: 'test', // //version: 'test', //
//version: 'frp', // 穿 //version: 'frp', // 穿
vNum: 'v0.8.7.2', vNum: 'v0.8.7.2',
@ -31,6 +32,25 @@ var CONFIGITEM = {
POI_URL: POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address', 'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',
}, },
//
zhanTingDev: {
loginInfo: {
//
loginIp: '10.132.191.3',
loginPort: '8320',
userName: 'ynszdz',
userPwd: 'Admin@123',
},
backUrl: 'http://15.72.183.90:8001',
previewUrl: 'http://15.72.183.90:7008/',
//frontUrl: 'http://15.72.183.90:7008/document/#/devModelFile/',
//apiURL: 'http://15.72.183.90:8000/renren-admin',
// websocketURL: '10.16.5.146:8888/renren-admin', //
websocketURL: '10.18.1.99:8889/renren-admin',
// websocketURL: '10.16.5.35:8888/renren-admin',
POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',
},
// 西 // 西
xihaian: { xihaian: {
loginInfo: { loginInfo: {
@ -42,7 +62,10 @@ var CONFIGITEM = {
}, },
backUrl: 'http://10.134.135.9:9797', backUrl: 'http://10.134.135.9:9797',
previewUrl: 'http://10.134.135.9:9796/', previewUrl: 'http://10.134.135.9:9796/',
websocketURL: '10.134.135.9:8888/renren-admin', // websocketURL: '10.134.135.9:8888/renren-admin', //
// websocketURL: '10.134.135.92:8888/renren-admin', //
websocketURL: '192.168.124.254:8888/renren-admin', // -
// websocketURL: '10.18.1.99:8889/renren-admin', //
POI_URL: POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address', 'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',
}, },
@ -58,6 +81,7 @@ var CONFIGITEM = {
backUrl: 'http://localhost:8001', backUrl: 'http://localhost:8001',
previewUrl: 'http://192.168.124.236:9796/', previewUrl: 'http://192.168.124.236:9796/',
websocketURL: '192.168.124.236:8888/renren-admin', websocketURL: '192.168.124.236:8888/renren-admin',
// websocketURL: '10.18.1.99:8889/renren-admin',
POI_URL: POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address', 'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',
}, },

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23 * @Date: 2020-07-07 16:03:23
* @LastEditors: hisense.wuhongjian * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-25 18:47:08 * @LastEditTime: 2022-08-29 09:55:56
* @Description: 数据资源参数配置 * @Description: 数据资源参数配置
*/ */
// eslint-disable-next-line no-undef // eslint-disable-next-line no-undef
@ -34,10 +34,10 @@ if (newLocation !== 'baotou' && newLocation !== 'xihaian') {
{ name: '能力云图', key: 'capabilityCloud' }, { name: '能力云图', key: 'capabilityCloud' },
{ name: '能力统计', key: 'abilityStatistics' }, { name: '能力统计', key: 'abilityStatistics' },
// { name: '', key: 'developmentGuide' }, // { name: '', key: 'developmentGuide' },
{ name: '技术文档', key: 'instructionManual' }, { name: '新手指南', key: 'instructionManual' },
{ name: '需求中心', key: 'demandCenter' }, { name: '需求中心', key: 'demandCenter' },
// { name: '', key: 'personalCenter' }, // { name: '', key: 'personalCenter' },
{ name: '区市站点', key: 'mapTest' }, // { name: '', key: 'mapTest' },
// { name: '', key: 'houtaiguanli' }, // { name: '', key: 'houtaiguanli' },
// { name: '', key: 'assignCase' }, // { name: '', key: 'assignCase' },
{ name: '融合服务', key: 'integrationServices' }, { name: '融合服务', key: 'integrationServices' },

Binary file not shown.

View File

@ -13,62 +13,56 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import zhCN from 'ant-design-vue/es/locale/zh_CN' import zhCN from 'ant-design-vue/es/locale/zh_CN'
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
import { onBeforeUnmount } from 'vue' import { onBeforeUnmount } from 'vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
const router = useRouter() const router = useRouter()
// export default { const locale = zhCN
// name: 'App', const token = Cookies.get('ucsToken')
// data() { console.log('token=================>', token)
// return { let ws = new WebSocket(
// ,
// }
// },
// }
const locale = zhCN
const token = Cookies.get('ucsToken')
console.log('token=================>', token)
let ws = new WebSocket(
`ws://${window.SITE_CONFIG['websocketURL']}/websocket?token=${token}` `ws://${window.SITE_CONFIG['websocketURL']}/websocket?token=${token}`
) )
// ws.send() // ws.send()
// onmessage // onmessage
ws.onmessage = function (e) { ws.onmessage = function (e) {
console.log('WebSocket服务器返回的信息: ' + e.data) console.log('WebSocket服务器返回的信息: ' + e.data)
mybus.emit('getMynotice') mybus.emit('getMynotice')
// //
if (router.currentRoute.value.name === 'mynoticeView') { if (router.currentRoute.value.name === 'mynoticeView') {
mybus.emit('noticeListInit') mybus.emit('noticeListInit')
} }
} }
ws.onerror = function (e) { ws.onerror = function (e) {
console.log('WebSocket连接异常============================>', e) console.log('WebSocket连接异常============================>', e)
ws = new WebSocket( ws = new WebSocket(
`ws://${window.SITE_CONFIG['websocketURL']}/websocket?token=${token}` `ws://${window.SITE_CONFIG['websocketURL']}/websocket?token=${token}`
) )
} }
ws.onclose = function (e) { ws.onclose = function (e) {
console.log('WebSocket连接断开============================>', e) console.log('WebSocket连接断开============================>', e)
} }
onBeforeUnmount(() => { onBeforeUnmount(() => {
// 4., // 4.,
ws.close() ws.close()
}) })
</script> </script>
<style lang="less"> <style lang="less">
@import '~@/vab/styles/vab.less'; @import '~@/vab/styles/vab.less';
#vue-admin-beautiful {
#vue-admin-beautiful {
max-width: 1920px; max-width: 1920px;
// max-height: 1080px; // max-height: 1080px;
margin: auto; margin: auto;
height: 100%; height: 100%;
position: relative; position: relative;
background-color: #fff; background-color: #fff;
} }
body {
body {
font-size: 0.14rem; font-size: 0.14rem;
} }
</style> </style>

View File

@ -99,17 +99,11 @@ export function getHls(params) {
} }
//- //-
export function getCameraInfoByAreaId(params) { export function getCameraInfoByAreaId(params) {
return axios.get( return axios.get(`http://10.134.135.92:9537/data_service/getCamera/getCameraInfoByAreaId?areaId=${params.areaId}`,
'http://10.134.135.92:9537/data_service/getCamera/getCameraInfoByAreaId?areaId=' +
params.areaId,
config2 config2
) )
} }
//- //-
export function getCameraByCondition(params) { export function getCameraByCondition(params) {
return axios.get( return axios.post('http://10.134.135.92:9537/data_service/getCamera/getCameraByCondition', params, config2)
'http://10.134.135.92:9537/data_service/getCamera/getCameraByCondition?' +
params,
config2
)
} }

View File

@ -74,7 +74,8 @@ export function getHls(params) {
// //
export function sgcInsert(data) { export function sgcInsert(data) {
return request({ return request({
url: '/resourcecar/insert', // url: '/resourcecar/insert',
url: '/resourcecar/batchInsert', // 西-
method: 'post', method: 'post',
data, data,
}) })
@ -368,6 +369,16 @@ export function getIntegrationServicesList(params) {
params, params,
}) })
} }
// --
export function updateIntegrationServices(data) {
return request({
url: '/fuse',
method: 'put',
data,
})
}
// //
export function getCountByFuzzyQuery(params) { export function getCountByFuzzyQuery(params) {
return request({ return request({
@ -434,3 +445,26 @@ export function selectAppList(params) {
params, params,
}) })
} }
// 西-
export function getSoldierList(params) {
return request({
url: '/device/page',
method: 'get',
params,
})
}
// 西-
export function soldierApply(data) {
return request({
url: '/deviceApply',
method: 'post',
data,
})
}
// 西--
export function getMaxApplyNum(number) {
return request({
url: '/processForm/tabilityapplication/canApply/' + number,
method: 'get',
})
}

View File

@ -284,3 +284,20 @@ export function endProcess(params) {
params, params,
}) })
} }
// 西--
export function deviceApplylist(params) {
return request({
url: '/deviceApply/page',
method: 'get',
params,
})
}
// 西----
export function getDeviceDetail(deviceId) {
return request({
url: `/device/${deviceId}`,
method: 'get',
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 859 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 987 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 931 B

View File

@ -505,3 +505,7 @@ export const RECOURCE_G_ICON = {
resourceProtection: resourceProtection:
'/src/assets/resourceManageMap/pic/point-resettlement-circle.png', '/src/assets/resourceManageMap/pic/point-resettlement-circle.png',
} }
// -tab
// 西-
export const DETAIL_PAGE_CONTENT_DEFAULT_TAB = whoShow.itShowXiHaiAn ? '基础设施' : '应用资源'

View File

@ -85,7 +85,7 @@ export const constantRoutes = [
{ {
path: '/', path: '/',
component: Layout, component: Layout,
redirect: '/home', redirect: whoShow.itShowXiHaiAn ? '/DetailsPageconetent' : '/home',
meta: { meta: {
title: '能力管理平台编目', title: '能力管理平台编目',
icon: 'apps-line', icon: 'apps-line',
@ -495,7 +495,7 @@ export const constantRoutes = [
name: 'instructionManual', name: 'instructionManual',
component: () => import('@/views/instructionManual/index'), component: () => import('@/views/instructionManual/index'),
meta: { meta: {
title: '技术文档', title: '新手指南',
icon: 'error-warning-line', icon: 'error-warning-line',
}, },
}, },

View File

@ -60,7 +60,7 @@ export function MapFun(mapObj) {
/** /**
* 定义地物编辑服务 * 定义地物编辑服务
*/ */
const featureService = L.supermap.featureService( const featureService = L.supermap && L.supermap.featureService && L.supermap.featureService(
_mapConfig.config.EDITORDATA_URL _mapConfig.config.EDITORDATA_URL
) )
@ -1657,14 +1657,16 @@ export function MapFun(mapObj) {
features, features,
url, url,
layerName, layerName,
createPopupFun createPopupFun,
url2
) { ) {
console.log( console.log(
'_addResourceOnMapWithoutSuperMapCluster===============>', '_addResourceOnMapWithoutSuperMapCluster===============>',
features, features,
url, url,
layerName, layerName,
createPopupFun createPopupFun,
url2
) )
// 0 // 0
// if (features.length < 1) { // if (features.length < 1) {
@ -1685,14 +1687,19 @@ export function MapFun(mapObj) {
let layers = null let layers = null
// //
layers = createMarkerClusterLayer() layers = createMarkerClusterLayer()
const icon = createDefaultFeatureStyle({ const icon1 = createDefaultFeatureStyle({
img: url, img: url,
iconSize: [36, 36], iconSize: [33, 33],
})
const icon2 = createDefaultFeatureStyle({
img: url2,
iconSize: [33, 33],
}) })
features.map((feature) => { features.map((feature) => {
var bounds = map.getBounds() var bounds = map.getBounds()
// console.log("",feature.latLng); // console.log("",feature.latLng);
if ( feature.hasOwnProperty('latLng')) { if ( feature.hasOwnProperty('latLng')) {
let icon = feature.active?icon2:icon1
const marker = L.marker(feature.latLng, { icon }) const marker = L.marker(feature.latLng, { icon })
if (createPopupFun !== null) { if (createPopupFun !== null) {
marker.uuid = feature.uuid || '' marker.uuid = feature.uuid || ''
@ -1728,6 +1735,8 @@ export function MapFun(mapObj) {
} }
marker.on('click', e=>{ marker.on('click', e=>{
console.log('点位数据', e) console.log('点位数据', e)
mybus.emit('pointMarkerClick', feature)
}) })
layers.addLayer(marker) layers.addLayer(marker)
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -123,7 +123,7 @@ export function HieimpMap() {
// debugger; // debugger;
// //
L.supermap L.supermap && L.supermap.layerInfoService && L.supermap
.layerInfoService(_mapConfig.config.QUERY_URL) .layerInfoService(_mapConfig.config.QUERY_URL)
.getLayersInfo(function (result) { .getLayersInfo(function (result) {
// doSomething // doSomething

View File

@ -1,14 +1,14 @@
/* /*
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-08-22 18:22:16 * @Date: 2022-08-22 18:22:16
* @LastEditors: hisense.wuhongjian * @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-25 21:05:32 * @LastEditTime: 2022-09-01 16:05:31
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
*/ */
const returnLocationStr = () => { const returnLocationStr = () => {
// eslint-disable-next-line no-undef // eslint-disable-next-line no-undef
return CONFIGITEM.version === 'xihaian' ? 'xihaian' : 'qingdao1' return CONFIGITEM.version === 'xihaian' ? 'xihaian' : 'qingdao'
} }
export default returnLocationStr export default returnLocationStr

View File

@ -11,8 +11,14 @@ import store from '@/store'
import qs from 'qs' import qs from 'qs'
import router from '@/router' import router from '@/router'
// import { isArray } from '@/utils/validate' // import { isArray } from '@/utils/validate'
import { message } from 'ant-design-vue' import {
import { getAccessToken, setAccessToken } from '@/utils/accessToken' message
} from 'ant-design-vue'
import {
getAccessToken,
setAccessToken
} from '@/utils/accessToken'
let loadingInstance let loadingInstance
@ -26,14 +32,20 @@ const handleCode = (code, msg, res) => {
// debugger // debugger
switch (code) { switch (code) {
case 401: case 401:
store.dispatch('user/resetAll').catch(() => {}) debugger
store.dispatch('user/resetAll').catch(() => { })
break break
case 403: case 403:
router.push({ path: '/401' }).catch(() => {}) router.push({
path: '/401'
}).catch(() => { })
break break
case 500: case 500:
message.error(msg || '接口异常') message.error(msg || '接口异常')
break break
case 505:
message.error(msg || '该时段已被预约')
break
case 302: case 302:
// window.location.href = redirect // window.location.href = redirect
break break
@ -91,22 +103,28 @@ instance.interceptors.response.use(
console.log('接口返回headers', response.headers) console.log('接口返回headers', response.headers)
console.log('接口返回REDIRECT', response.headers.redirect) console.log('接口返回REDIRECT', response.headers.redirect)
response['Access-Control-Expose-Headers'] = 'redirect' response['Access-Control-Expose-Headers'] = 'redirect'
const { code, message } = response.data const {
code,
message
} = response.data
if (response.headers.token) { if (response.headers.token) {
setAccessToken(response.headers.token) setAccessToken(response.headers.token)
} }
if (response.headers.redirect) { if (response.headers.redirect) {
const _old_href = window.location.href.split('#')[0];
const _new_href = response.headers.redirect.split('#')[0];
window.location.replace(response.headers.redirect) window.location.replace(response.headers.redirect)
// setTimeout(() => { // url
if (_old_href === _new_href) {
location.reload() location.reload()
// }, 1000) }
return response return response
} }
if (response.headers.redirect === '/#/login') { if (response.headers.redirect === '/#/login') {
var keys = document.cookie.match(/[^ =;]+(?=\=)/g) var keys = document.cookie.match(/[^ =;]+(?=\=)/g)
if (keys) { if (keys) {
for (var i = keys.length; i--; ) { for (var i = keys.length; i--;) {
document.cookie = document.cookie =
keys[i] + '=0;path=/;expires=' + new Date(0).toUTCString() //,m.kevis.com keys[i] + '=0;path=/;expires=' + new Date(0).toUTCString() //,m.kevis.com
document.cookie = document.cookie =
@ -126,7 +144,7 @@ instance.interceptors.response.use(
location.reload() location.reload()
}, 1000) }, 1000)
} }
handleCode(code, message, response.headers) handleCode(code, message || response.data.msg, response.headers)
if (loadingInstance) loadingInstance.close() if (loadingInstance) loadingInstance.close()
// const { data, config } = response // const { data, config } = response
// const { code, msg } = data // const { code, msg } = data
@ -150,7 +168,10 @@ instance.interceptors.response.use(
console.log('接口error', error) console.log('接口error', error)
if (loadingInstance) loadingInstance.close() if (loadingInstance) loadingInstance.close()
const { response, message } = error const {
response,
message
} = error
if (error.response) { if (error.response) {
console.log('接口返回', response) console.log('接口返回', response)
console.log('接口返回headers', response.headers) console.log('接口返回headers', response.headers)
@ -162,12 +183,17 @@ instance.interceptors.response.use(
window.location.replace(response.headers.redirect) window.location.replace(response.headers.redirect)
return Promise.resolve() return Promise.resolve()
} }
const { status, data } = response const {
status,
data
} = response
handleCode(status, data.msg || message, response.headers.redirect) handleCode(status, data.msg || message, response.headers.redirect)
return Promise.reject(error) return Promise.reject(error)
} else { } else {
let { message } = error let {
message
} = error
if (message === 'Network Error') { if (message === 'Network Error') {
message = '后端接口连接异常' message = '后端接口连接异常'
} }

View File

@ -11,28 +11,18 @@
<span class="title">基础设施</span> <span class="title">基础设施</span>
</div> </div>
<div class="infrastructure-content"> <div class="infrastructure-content">
<div <div class="infrastructure-content-son" v-for="(item, index) in myDataList" :key="index">
class="infrastructure-content-son" <div class="num-class"
v-for="(item, index) in myDataList" :style="`background:url(${item.img}) no-repeat;background-position:top left;background-size:40%`">
:key="index"
>
<div
class="num-class"
:style="`background:url(${item.img}) no-repeat;background-position:top left;background-size:40%`"
>
<div>{{ item.title }}</div> <div>{{ item.title }}</div>
<div>{{ item.snum }}</div> <div>{{ item.snum }}</div>
</div> </div>
<div class="health-degree"> <div class="health-degree">
<div class="health-degree-title">健康度</div> <div class="health-degree-title">健康度</div>
<a-progress <a-progress :stroke-color="{
:stroke-color="{
'0%': '#108ee9', '0%': '#108ee9',
'100%': '#87d068', '100%': '#87d068',
}" }" :percent="item.percentage" :show-info="false" />
:percent="item.percentage"
:show-info="false"
/>
</div> </div>
<div class="percentage" :style="fontFormat(item.title)"> <div class="percentage" :style="fontFormat(item.title)">
{{ item.percentage }}% {{ item.percentage }}%
@ -42,9 +32,11 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref } from 'vue' import { ref } from 'vue'
import { infrastructureInfo } from '@/api/capabilityCloud' import { infrastructureInfo } from '@/api/capabilityCloud'
let myDataList = ref([ const itShowXiHaiAn = whoShow.itShowXiHaiAn
let myDataList = ref([
{ {
title: '视频资源数量', title: '视频资源数量',
snum: '0', snum: '0',
@ -52,37 +44,37 @@
img: require('../../../assets/capabilityCloud/infrastructure_sz.png'), img: require('../../../assets/capabilityCloud/infrastructure_sz.png'),
}, },
{ {
title: '云资源', title: itShowXiHaiAn ? '单兵设备' : '云资源',
snum: '0', snum: itShowXiHaiAn ? '2' : 0,
percentage: '0', percentage: itShowXiHaiAn ? '100' : '0',
img: require('../../../assets/capabilityCloud/infrastructure_yz.png'), img: require('../../../assets/capabilityCloud/infrastructure_yz.png'),
}, },
{ {
title: '感知资源', title: itShowXiHaiAn ? '无人机' : '感知资源',
snum: '0', snum: itShowXiHaiAn ? '2' : 0,
percentage: '0', percentage: itShowXiHaiAn ? '100' : '0',
img: require('../../../assets/capabilityCloud/infrastructure_gz.png'), img: require('../../../assets/capabilityCloud/infrastructure_gz.png'),
}, },
]) ])
function fontFormat(name) { function fontFormat(name) {
switch (name) { switch (name) {
case '视频资源数量': case '视频资源数量':
return 'color: #32ff91;' return 'color: #32ff91;'
break break
case '云资源': case itShowXiHaiAn ? '单兵设备' : '云资源':
return 'color: #f4fd25;' return 'color: #f4fd25;'
break break
case '感知资源': case itShowXiHaiAn ? '无人机' : '感知资源':
return 'color: #ff1d18;' return 'color: #ff1d18;'
break break
} }
} }
const params = { const params = {
name: '', name: '',
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
} }
infrastructureInfo().then((res) => { infrastructureInfo().then((res) => {
console.log('基础设施==================>', res.data.data) console.log('基础设施==================>', res.data.data)
myDataList.value.forEach((val) => { myDataList.value.forEach((val) => {
const obj = res.data.data.filter((item) => item.type === val.title)[0] const obj = res.data.data.filter((item) => item.type === val.title)[0]
@ -95,10 +87,12 @@
val.snum = obj.amount val.snum = obj.amount
} }
}) })
}) }).catch(err => {
console.log('err------------>', err);
})
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.infrastructure { .infrastructure {
width: 4.4rem; width: 4.4rem;
height: 4.63rem; height: 4.63rem;
position: relative; position: relative;
@ -112,24 +106,27 @@
-webkit-transition: all 100ms ease-out; -webkit-transition: all 100ms ease-out;
-moz-transition: all 100ms ease-out; -moz-transition: all 100ms ease-out;
transition: all 100ms ease-out; transition: all 100ms ease-out;
.infrastructure-top { .infrastructure-top {
width: 4.4rem; width: 4.4rem;
height: 0.44rem; height: 0.44rem;
position: absolute; position: absolute;
top: 0; top: 0;
background: url('~@/assets/capabilityCloud/infrastructure_title.png') background: url('~@/assets/capabilityCloud/infrastructure_title.png') no-repeat;
no-repeat;
background-size: cover; background-size: cover;
background-position: center; background-position: center;
line-height: 0.44rem; line-height: 0.44rem;
text-align: center; text-align: center;
.title { .title {
font-size: 0.24rem; font-size: 0.24rem;
} }
} }
.infrastructure-content { .infrastructure-content {
width: 4rem; width: 4rem;
margin-top: 0.62rem; margin-top: 0.62rem;
.infrastructure-content-son { .infrastructure-content-son {
display: flex; display: flex;
width: 4rem; width: 4rem;
@ -139,44 +136,53 @@
margin-bottom: 0.14rem; margin-bottom: 0.14rem;
padding-left: 0.1rem; padding-left: 0.1rem;
} }
.num-class { .num-class {
width: 1.5rem; width: 1.5rem;
height: 1rem; height: 1rem;
text-align: center; text-align: center;
margin-right: 0.2rem; margin-right: 0.2rem;
& > div:first-child {
&>div:first-child {
font-size: 0.18rem; font-size: 0.18rem;
color: #ffffff; color: #ffffff;
margin-bottom: 0.1rem; margin-bottom: 0.1rem;
line-height: 0.18rem; line-height: 0.18rem;
margin-top: 0.3rem; margin-top: 0.3rem;
} }
& > div:last-child {
&>div:last-child {
font-size: 0.36rem; font-size: 0.36rem;
line-height: 0.36rem; line-height: 0.36rem;
color: #1ce2e5; color: #1ce2e5;
} }
} }
.health-degree { .health-degree {
width: 1.35rem; width: 1.35rem;
.health-degree-title { .health-degree-title {
font-size: 0.14rem; font-size: 0.14rem;
color: rgba(255, 255, 255, 0.6); color: rgba(255, 255, 255, 0.6);
margin-bottom: 0.08rem; margin-bottom: 0.08rem;
} }
:deep(.ant-progress-outer) { :deep(.ant-progress-outer) {
height: 0.27rem; height: 0.27rem;
} }
:deep(.ant-progress-inner) { :deep(.ant-progress-inner) {
height: 0.27rem; height: 0.27rem;
border-radius: 0.14rem; border-radius: 0.14rem;
border: 0.01rem solid rgba(8, 153, 231, 0.6); border: 0.01rem solid rgba(8, 153, 231, 0.6);
background: rgba(21, 65, 123, 0.6); background: rgba(21, 65, 123, 0.6);
div { div {
height: 0.27rem !important; height: 0.27rem !important;
} }
} }
} }
// .health-degree: // .health-degree:
.percentage { .percentage {
height: 0.57rem; height: 0.57rem;
@ -188,26 +194,32 @@
align-items: flex-end; align-items: flex-end;
} }
} }
} }
.infrastructure:hover {
.infrastructure:hover {
border: 2px solid; border: 2px solid;
animation: turn 5s linear infinite; animation: turn 5s linear infinite;
} }
@keyframes turn {
@keyframes turn {
0% { 0% {
border-image: linear-gradient(to right, #003194, #00ffea) 1; border-image: linear-gradient(to right, #003194, #00ffea) 1;
} }
25% { 25% {
border-image: linear-gradient(to bottom, #003194, #00ffea) 1; border-image: linear-gradient(to bottom, #003194, #00ffea) 1;
} }
50% { 50% {
border-image: linear-gradient(to left, #003194, #00ffea) 1; border-image: linear-gradient(to left, #003194, #00ffea) 1;
} }
75% { 75% {
border-image: linear-gradient(to top, #003194, #00ffea) 1; border-image: linear-gradient(to top, #003194, #00ffea) 1;
} }
100% { 100% {
border-image: linear-gradient(to right, #003194, #00ffea) 1; border-image: linear-gradient(to right, #003194, #00ffea) 1;
} }
} }
</style> </style>

View File

@ -0,0 +1,34 @@
<template>
<div class="detail-back" @click="previousPage" :style="{ color: textColor }">
返回
</div>
</template>
<script setup>
import { reactive, ref, watch, defineProps } from 'vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const props = defineProps({
textColor: { type: String, default: '' },
})
const previousPage = () => {
window.history.go(-1)
}
</script>
<style scoped lang="less">
.detail-back {
position: absolute;
opacity: 0.7;
top: 0.5rem;
left: 100px;
font-size: 0.20rem;
cursor: pointer;
background: -webkit-linear-gradient(90deg, #99a8d0, #fff);
font-weight: 600;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
</style>

View File

@ -7,6 +7,7 @@
--> -->
<template> <template>
<div class="capability-cloud"> <div class="capability-cloud">
<capability-cloud-back></capability-cloud-back>
<div class="header"> <div class="header">
<span class="title" @click="goHome">数字能力超市</span> <span class="title" @click="goHome">数字能力超市</span>
</div> </div>
@ -29,6 +30,7 @@
import Infrastructure from '@/views/capabilityCloud/components/Infrastructure.vue' import Infrastructure from '@/views/capabilityCloud/components/Infrastructure.vue'
import DataResources from '@/views/capabilityCloud/components/DataResources.vue' import DataResources from '@/views/capabilityCloud/components/DataResources.vue'
import KnowledgeBase from '@/views/capabilityCloud/components/KnowledgeBase.vue' import KnowledgeBase from '@/views/capabilityCloud/components/KnowledgeBase.vue'
import capabilityCloudBack from '@/views/capabilityCloud/components/capabilityCloudBack.vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
const router = useRouter() const router = useRouter()
const goHome = () => { const goHome = () => {

View File

@ -69,6 +69,7 @@
:dataFrom="dataFrom" :dataFrom="dataFrom"
:fileList="fileList" :fileList="fileList"
:packageList="packageList" :packageList="packageList"
:accessoryList="accessoryList"
:imgList="imgList" :imgList="imgList"
:externalField="['接口服务', '接口请求方式']" :externalField="['接口服务', '接口请求方式']"
:configure="bs" :configure="bs"
@ -370,6 +371,7 @@
const navList2 = ref([]) const navList2 = ref([])
const fileList = ref({}) const fileList = ref({})
const packageList = ref({}) const packageList = ref({})
const accessoryList = ref({})
const imgList = ref({}) const imgList = ref({})
const videoList = ref({}) const videoList = ref({})
const data = ref({}) const data = ref({})
@ -787,6 +789,9 @@
mybus.on('chagePackageList', (obj) => { mybus.on('chagePackageList', (obj) => {
packageList.value = obj packageList.value = obj
}) })
mybus.on('chageAccessory', (obj) => {
accessoryList.value = obj
})
mybus.on('chageImgList', (obj) => { mybus.on('chageImgList', (obj) => {
imgList.value = obj imgList.value = obj
}) })
@ -836,6 +841,7 @@
mybus.off('chageDataFromDwon') mybus.off('chageDataFromDwon')
mybus.off('chageVideoList') mybus.off('chageVideoList')
mybus.off('chagePackageList') mybus.off('chagePackageList')
mybus.off('chageAccessory')
}) })
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>

View File

@ -69,6 +69,7 @@
:dataFrom="dataFrom" :dataFrom="dataFrom"
:fileList="fileList" :fileList="fileList"
:fileList2="fileList2" :fileList2="fileList2"
:accessoryList="accessoryList"
:imgList="imgList" :imgList="imgList"
:configure="bs" :configure="bs"
@submit="submit()" @submit="submit()"
@ -339,6 +340,7 @@
const navList2 = ref([]) const navList2 = ref([])
const fileList = ref({}) const fileList = ref({})
const fileList2 = ref({}) const fileList2 = ref({})
const accessoryList = ref({})
const imgList = ref({}) const imgList = ref({})
const videoList = ref({}) const videoList = ref({})
const data = ref({}) const data = ref({})
@ -751,6 +753,9 @@
mybus.on('chageVideoList', (obj) => { mybus.on('chageVideoList', (obj) => {
videoList.value = obj videoList.value = obj
}) })
mybus.on('chageAccessory', (obj) => {
accessoryList.value = obj
})
//datafrom //datafrom
mybus.on('chageDataFromDwon', (obj) => { mybus.on('chageDataFromDwon', (obj) => {
switch (obj.attrType) { switch (obj.attrType) {
@ -793,6 +798,7 @@
mybus.off('chageFileList2') mybus.off('chageFileList2')
mybus.off('chageImgList') mybus.off('chageImgList')
mybus.off('chageDataFromDwon') mybus.off('chageDataFromDwon')
mybus.off('chageAccessory')
}) })
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>

View File

@ -69,6 +69,7 @@
:dataFrom="dataFrom" :dataFrom="dataFrom"
:fileList="fileList" :fileList="fileList"
:fileList2="fileList2" :fileList2="fileList2"
:accessoryList="accessoryList"
:configure="bs" :configure="bs"
@submit="submit()" @submit="submit()"
@back="back()" @back="back()"
@ -338,6 +339,7 @@
const navList2 = ref([]) const navList2 = ref([])
const fileList = ref({}) const fileList = ref({})
const fileList2 = ref({}) const fileList2 = ref({})
const accessoryList = ref({})
const imgList = ref({}) const imgList = ref({})
const videoList = ref({}) const videoList = ref({})
const data = ref({}) const data = ref({})
@ -748,6 +750,9 @@
mybus.on('chageVideoList', (obj) => { mybus.on('chageVideoList', (obj) => {
videoList.value = obj videoList.value = obj
}) })
mybus.on('chageAccessory', (obj) => {
accessoryList.value = obj
})
//datafrom //datafrom
mybus.on('chageDataFromDwon', (obj) => { mybus.on('chageDataFromDwon', (obj) => {
switch (obj.attrType) { switch (obj.attrType) {
@ -790,6 +795,7 @@
mybus.off('chageFileList2') mybus.off('chageFileList2')
mybus.off('chageImgList') mybus.off('chageImgList')
mybus.off('chageDataFromDwon') mybus.off('chageDataFromDwon')
mybus.off('chageAccessory')
}) })
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>

View File

@ -66,6 +66,7 @@
:dataFrom="dataFrom" :dataFrom="dataFrom"
:fileList="fileList" :fileList="fileList"
:fileList2="fileList2" :fileList2="fileList2"
:accessoryList="accessoryList"
:configure="bs" :configure="bs"
@submit="submit()" @submit="submit()"
@back="back()" @back="back()"
@ -237,6 +238,7 @@
const navList2 = ref([]) const navList2 = ref([])
const fileList = ref({}) const fileList = ref({})
const fileList2 = ref({}) const fileList2 = ref({})
const accessoryList = ref({})
const imgList = ref({}) const imgList = ref({})
const videoList = ref({}) const videoList = ref({})
const data = ref({}) const data = ref({})
@ -618,6 +620,9 @@
mybus.on('chageVideoList', (obj) => { mybus.on('chageVideoList', (obj) => {
videoList.value = obj videoList.value = obj
}) })
mybus.on('chageAccessory', (obj) => {
accessoryList.value = obj
})
//datafrom //datafrom
mybus.on('chageDataFromDwon', (obj) => { mybus.on('chageDataFromDwon', (obj) => {
switch (obj.attrType) { switch (obj.attrType) {
@ -660,6 +665,7 @@
mybus.off('chageFileList2') mybus.off('chageFileList2')
mybus.off('chageImgList') mybus.off('chageImgList')
mybus.off('chageDataFromDwon') mybus.off('chageDataFromDwon')
mybus.off('chageAccessory')
}) })
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>

View File

@ -301,6 +301,16 @@
:list="props.fileList2" :list="props.fileList2"
tip="支持文件类型大小不超过100M" tip="支持文件类型大小不超过100M"
></upload> ></upload>
<upload
v-else-if="item.type == 'package' && item.name == '上传附件'"
type="附件"
btnName="上传附件"
:maxCount="1"
:data="item"
:busType="2"
:list="props.fileList2"
tip="支持.doc,.docx,.zip,.ppt,.pdf类型大小不超过100M"
></upload>
<upload <upload
v-else-if="item.type == 'package'" v-else-if="item.type == 'package'"
type="压缩包" type="压缩包"
@ -682,27 +692,29 @@
data.value.list.push(item) data.value.list.push(item)
} }
}) })
} else if (item.name === '部门联系人') {
if (!item.note1) {
getUserInfo().then(({ data: res1 }) => {
console.log(res1.data)
item.note1 = res1.data.realName || ''
})
data.value.list.push(item)
} else {
data.value.list.push(item)
} }
} else if (item.name === '部门联系人电话') { // else if (item.name === '') {
if (!item.note1) { // if (!item.note1) {
getUserInfo().then(({ data: res1 }) => { // getUserInfo().then(({ data: res1 }) => {
console.log(res1.data) // console.log(res1.data)
item.note1 = res1.data.mobile || '' // item.note1 = res1.data.realName || ''
}) // })
data.value.list.push(item) // data.value.list.push(item)
} else { // } else {
data.value.list.push(item) // data.value.list.push(item)
} // }
} else if (item.name === '来源应用') { // } else if (item.name === '') {
// if (!item.note1) {
// getUserInfo().then(({ data: res1 }) => {
// console.log(res1.data)
// item.note1 = res1.data.mobile || ''
// })
// data.value.list.push(item)
// } else {
// data.value.list.push(item)
// }
// }
else if (item.name === '来源应用') {
queryApplicationRelByResourceId({ queryApplicationRelByResourceId({
referenceId: 0, referenceId: 0,
}).then((res) => { }).then((res) => {
@ -1109,7 +1121,7 @@
</script> </script>
<style></style> <style></style>
<style lang="less" scoped> <style lang="less" scoped>
.put-on-the-shelf { .put-on-the-shelf {
height: 6.8rem; height: 6.8rem;
overflow: scroll; overflow: scroll;
display: flex; display: flex;
@ -1249,9 +1261,9 @@
& > div:nth-of-type(1) { & > div:nth-of-type(1) {
margin-top: 0; margin-top: 0;
} }
} }
.application-Area { .application-Area {
width: 5.2rem; width: 5.2rem;
display: grid; display: grid;
margin-top: -0.05rem; margin-top: -0.05rem;
@ -1277,78 +1289,78 @@
background: #0087ff; background: #0087ff;
color: #fff; color: #fff;
} }
} }
:deep(.ant-image-img) { :deep(.ant-image-img) {
width: 100%; width: 100%;
height: 100%; height: 100%;
object-fit: contain; object-fit: contain;
} }
:deep(.ant-modal) { :deep(.ant-modal) {
width: 9.6rem; width: 9.6rem;
} }
:deep(.ant-transfer-list) { :deep(.ant-transfer-list) {
width: 39.5%; width: 39.5%;
height: 5.2rem; height: 5.2rem;
} }
:deep(.ant-transfer-operation) { :deep(.ant-transfer-operation) {
flex-direction: row-reverse; flex-direction: row-reverse;
margin: 0 0.3rem; margin: 0 0.3rem;
} }
:deep(.ant-btn) { :deep(.ant-btn) {
width: 0.56rem; width: 0.56rem;
height: 0.4rem; height: 0.4rem;
border-radius: 0.04rem; border-radius: 0.04rem;
} }
:deep(.ant-btn:first-child) { :deep(.ant-btn:first-child) {
margin-left: 0.04rem; margin-left: 0.04rem;
} }
:deep(.ant-modal-footer) { :deep(.ant-modal-footer) {
border: 0; border: 0;
} }
:deep(.ant-modal-header) { :deep(.ant-modal-header) {
border: 0; border: 0;
} }
:deep(.ant-modal-title) { :deep(.ant-modal-title) {
line-height: 0.24rem; line-height: 0.24rem;
font-size: 0.18rem; font-size: 0.18rem;
color: #303133; color: #303133;
} }
:deep(.ant-transfer-list-header) { :deep(.ant-transfer-list-header) {
background: #f5f7fa; background: #f5f7fa;
} }
:deep(.ant-transfer-list-header-selected) { :deep(.ant-transfer-list-header-selected) {
display: flex; display: flex;
width: 90%; width: 90%;
flex-direction: row-reverse; flex-direction: row-reverse;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
:deep(.ant-transfer-list-header-title) { :deep(.ant-transfer-list-header-title) {
font-size: 0.16rem; font-size: 0.16rem;
color: #303133; color: #303133;
font-weight: 400; font-weight: 400;
text-align: left; text-align: left;
} }
:deep(.ant-transfer-list-header .ant-checkbox-wrapper) { :deep(.ant-transfer-list-header .ant-checkbox-wrapper) {
display: none !important; display: none !important;
} }
:deep(.ant-upload-list-item-name) { :deep(.ant-upload-list-item-name) {
width: 1rem; width: 1rem;
} }
.del { .del {
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
@ -1367,8 +1379,8 @@
div { div {
cursor: pointer; cursor: pointer;
} }
} }
.item { .item {
position: relative; position: relative;
span:first-child { span:first-child {
width: unset; width: unset;
@ -1394,5 +1406,5 @@
bottom: -20px; bottom: -20px;
left: 110px; left: 110px;
} }
} }
</style> </style>

View File

@ -1,6 +1,18 @@
<!-- 智能算法 --> <!-- 智能算法 -->
<template> <template>
<div class="algorithm"> <div class="algorithm">
<div class="select">
<div class="top" @click="selectFlag2 = true">
{{ typeName2 }}
<div class="light"></div>
</div>
<div class="bottom" v-show="selectFlag2">
<span class="light"></span>
<div v-for="val in dictList" :key="val" @click="getList2(val)">
{{ val }}
</div>
</div>
</div>
<div class="algorithm-class"> <div class="algorithm-class">
<div <div
v-for="(item, index) in dataList" v-for="(item, index) in dataList"
@ -27,9 +39,25 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import { getCategoryTreePage } from '@/api/personalCenter'
import { pageWithAttrs } from '@/api/abilityStatistics' import { pageWithAttrs } from '@/api/abilityStatistics'
import { ref, onMounted, onBeforeUnmount } from 'vue' import { ref, onMounted, onBeforeUnmount } from 'vue'
const typeName2 = ref('全部')
const dictList = ref([])
const dataList = ref([]) const dataList = ref([])
const selectFlag2 = ref(false)
getCategoryTreePage({
page: 1,
limit: 99,
dictTypeId: '1513712507692818433',
}).then((res) => {
dictList.value = ['全部']
res.data.data.list.map((val) => {
if (val.dictLabel !== '其他') {
dictList.value.push(val.dictLabel)
}
})
})
const params = { const params = {
deptIds: [], deptIds: [],
districtId: '', districtId: '',
@ -40,6 +68,19 @@
pageSize: 9, pageSize: 9,
type: '组件服务', type: '组件服务',
} }
const getList2 = (val) => {
typeName2.value = val
if (val == '全部') {
params.infoList = [{ attrType: '组件类型', attrValue: '智能算法' }]
} else {
params.infoList = [
{ attrType: '组件类型', attrValue: '智能算法' },
{ attrType: '应用领域', attrValue: val },
]
}
selectFlag2.value = false
pageWithAttrsFunction()
}
let algorithmclass = null let algorithmclass = null
const imgSrc = ref(require('@/assets/capacitySquare/algorithm-photo.jpg')) const imgSrc = ref(require('@/assets/capacitySquare/algorithm-photo.jpg'))
const dataLength = ref(true) const dataLength = ref(true)
@ -109,9 +150,67 @@
<style lang="less" scoped> <style lang="less" scoped>
.algorithm { .algorithm {
.select {
margin: 0.1rem 0 0.1rem 0.2rem;
color: #fff;
font-size: 0.2rem;
font-family: webfont;
position: relative;
.top {
cursor: pointer;
width: 3.61rem;
height: 0.85rem;
font-weight: 600;
text-align: center;
padding-top: 0.1rem;
background: url('~@/assets/capacitySquare/select-bg.png') no-repeat;
background-size: 100%;
position: relative;
.light {
width: 0.56rem;
height: 3px;
position: absolute;
top: 0.4rem;
left: 1.52rem;
background: url('~@/assets/capacitySquare/select-light1.png')
no-repeat;
background-size: 100%;
}
}
.bottom {
cursor: pointer;
position: absolute;
top: 0.5rem;
left: 0.9rem;
z-index: 1000;
background: rgba(57, 134, 239, 0.68);
border: 1px solid #aed5ff;
.light {
display: inline-block;
width: 2.39rem;
height: 5px;
position: absolute;
top: -0.08rem;
left: -0.3rem;
background: url('~@/assets/capacitySquare/select-light2.png')
no-repeat;
background-size: 100%;
}
& > div {
width: 1.8rem;
height: 0.4rem;
line-height: 0.4rem;
text-align: center;
border-top: 1px solid #aed5ff;
}
& > div:nth-of-type(1) {
border: none;
}
}
}
.algorithm-class { .algorithm-class {
margin-top: 0.6rem; // margin-top: 0.6rem;
margin-bottom: 0.59rem; margin-bottom: 0.18rem;
display: grid; display: grid;
grid-template-columns: repeat(3, 33%); grid-template-columns: repeat(3, 33%);
height: 8.8rem; height: 8.8rem;

View File

@ -2,11 +2,12 @@
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-08-09 09:31:25 * @Date: 2022-08-09 09:31:25
* @LastEditors: hisense.liangjunhua * @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-10 14:29:05 * @LastEditTime: 2022-09-19 10:19:02
* @Description: 应用资源 * @Description: 应用资源
--> -->
<template> <template>
<div class="application"> <div class="application">
<div style="display: flex">
<div class="select"> <div class="select">
<div class="top" @click="selectFlag = true"> <div class="top" @click="selectFlag = true">
{{ typeName }} {{ typeName }}
@ -20,6 +21,19 @@
<div @click="getList('企业')">企业</div> <div @click="getList('企业')">企业</div>
</div> </div>
</div> </div>
<div class="select">
<div class="top" @click="selectFlag2 = true">
{{ typeName2 }}
<div class="light"></div>
</div>
<div class="bottom" v-show="selectFlag2">
<span class="light"></span>
<div v-for="val in dictList" :key="val" @click="getList2(val)">
{{ val }}
</div>
</div>
</div>
</div>
<div class="item-box"> <div class="item-box">
<div class="item" v-for="item in data.list" :key="item.id"> <div class="item" v-for="item in data.list" :key="item.id">
<a-image <a-image
@ -38,6 +52,7 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import { getCategoryTreePage } from '@/api/personalCenter'
import { onMounted, reactive, onBeforeUnmount, ref, nextTick } from 'vue' import { onMounted, reactive, onBeforeUnmount, ref, nextTick } from 'vue'
import { selectAppList } from '@/api/home' import { selectAppList } from '@/api/home'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
@ -45,9 +60,25 @@
const pageNum = ref(1) const pageNum = ref(1)
const flag = ref(true) const flag = ref(true)
const type = ref(null) const type = ref(null)
const area = ref(null)
const typeName = ref('全市') const typeName = ref('全市')
const typeName2 = ref('全部')
const dictList = ref([])
const data = reactive({ list: [] }) const data = reactive({ list: [] })
const selectFlag = ref(false) const selectFlag = ref(false)
const selectFlag2 = ref(false)
getCategoryTreePage({
page: 1,
limit: 99,
dictTypeId: '1513712507692818433',
}).then((res) => {
dictList.value = ['全部']
res.data.data.list.map((val) => {
if (val.dictLabel !== '其他') {
dictList.value.push(val.dictLabel)
}
})
})
let dom = null let dom = null
const goToView = (id) => { const goToView = (id) => {
const newpage = router.resolve({ const newpage = router.resolve({
@ -82,7 +113,14 @@
pageNum.value = 1 pageNum.value = 1
data.list = [] data.list = []
} }
selectAppList({ pageNum: pageNum.value, type: type.value }).then((res) => { getData(str)
}
const getData = (str) => {
selectAppList({
pageNum: pageNum.value,
type: type.value,
area: area.value,
}).then((res) => {
if (res.data.data.length < 9) { if (res.data.data.length < 9) {
dom.removeEventListener('scroll', viewMonitor, true) dom.removeEventListener('scroll', viewMonitor, true)
} }
@ -122,6 +160,20 @@
} }
} }
} }
const getList2 = (val) => {
dom.scrollTop = 0
typeName2.value = val
pageNum.value = 1
data.list = []
if (val == '全部') {
area.value = null
getData()
} else {
area.value = val
getData()
}
selectFlag2.value = false
}
onMounted(() => { onMounted(() => {
dom = document.querySelector('.item-box') dom = document.querySelector('.item-box')
console.log('box============', dom) console.log('box============', dom)

View File

@ -1,6 +1,18 @@
<!-- 图层服务 --> <!-- 图层服务 -->
<template> <template>
<div class="algorithm"> <div class="algorithm">
<div class="select">
<div class="top" @click="selectFlag2 = true">
{{ typeName2 }}
<div class="light"></div>
</div>
<div class="bottom" v-show="selectFlag2">
<span class="light"></span>
<div v-for="val in dictList" :key="val" @click="getList2(val)">
{{ val }}
</div>
</div>
</div>
<div class="algorithm-class"> <div class="algorithm-class">
<div <div
v-for="(item, index) in dataList" v-for="(item, index) in dataList"
@ -27,10 +39,25 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import { getCategoryTreePage } from '@/api/personalCenter'
import { pageWithAttrs } from '@/api/abilityStatistics' import { pageWithAttrs } from '@/api/abilityStatistics'
import { ref, onMounted, onBeforeUnmount } from 'vue' import { ref, onMounted, onBeforeUnmount } from 'vue'
const typeName2 = ref('全部')
const dictList = ref([])
const dataList = ref([]) const dataList = ref([])
let algorithmclass = null const selectFlag2 = ref(false)
getCategoryTreePage({
page: 1,
limit: 99,
dictTypeId: '1513712507692818433',
}).then((res) => {
dictList.value = ['全部']
res.data.data.list.map((val) => {
if (val.dictLabel !== '其他') {
dictList.value.push(val.dictLabel)
}
})
})
const params = { const params = {
deptIds: [], deptIds: [],
districtId: '', districtId: '',
@ -41,6 +68,20 @@
pageSize: 9, pageSize: 9,
type: '组件服务', type: '组件服务',
} }
const getList2 = (val) => {
typeName2.value = val
if (val == '全部') {
params.infoList = [{ attrType: '组件类型', attrValue: '图层服务' }]
} else {
params.infoList = [
{ attrType: '组件类型', attrValue: '图层服务' },
{ attrType: '应用领域', attrValue: val },
]
}
selectFlag2.value = false
pageWithAttrsFunction()
}
let algorithmclass = null
const imgSrc = ref(require('@/assets/capacitySquare/algorithm-photo2.jpg')) const imgSrc = ref(require('@/assets/capacitySquare/algorithm-photo2.jpg'))
const dataLength = ref(true) const dataLength = ref(true)
const isNoMore = ref(false) const isNoMore = ref(false)
@ -103,9 +144,67 @@
<style lang="less" scoped> <style lang="less" scoped>
.algorithm { .algorithm {
.select {
margin: 0.1rem 0 0.1rem 0.2rem;
color: #fff;
font-size: 0.2rem;
font-family: webfont;
position: relative;
.top {
cursor: pointer;
width: 3.61rem;
height: 0.85rem;
font-weight: 600;
text-align: center;
padding-top: 0.1rem;
background: url('~@/assets/capacitySquare/select-bg.png') no-repeat;
background-size: 100%;
position: relative;
.light {
width: 0.56rem;
height: 3px;
position: absolute;
top: 0.4rem;
left: 1.52rem;
background: url('~@/assets/capacitySquare/select-light1.png')
no-repeat;
background-size: 100%;
}
}
.bottom {
cursor: pointer;
position: absolute;
top: 0.5rem;
left: 0.9rem;
z-index: 1000;
background: rgba(57, 134, 239, 0.68);
border: 1px solid #aed5ff;
.light {
display: inline-block;
width: 2.39rem;
height: 5px;
position: absolute;
top: -0.08rem;
left: -0.3rem;
background: url('~@/assets/capacitySquare/select-light2.png')
no-repeat;
background-size: 100%;
}
& > div {
width: 1.8rem;
height: 0.4rem;
line-height: 0.4rem;
text-align: center;
border-top: 1px solid #aed5ff;
}
& > div:nth-of-type(1) {
border: none;
}
}
}
.algorithm-class { .algorithm-class {
margin-top: 0.6rem; // margin-top: 0.6rem;
margin-bottom: 0.59rem; margin-bottom: 0.18rem;
display: grid; display: grid;
grid-template-columns: repeat(3, 33%); grid-template-columns: repeat(3, 33%);
height: 8.8rem; height: 8.8rem;

View File

@ -26,6 +26,8 @@
import layer from './components/layer.vue' import layer from './components/layer.vue'
import application from './components/application.vue' import application from './components/application.vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
const router = useRouter() const router = useRouter()
const abilityToType = router.currentRoute.value.query.abilityToType const abilityToType = router.currentRoute.value.query.abilityToType
const show = ref('algorithm') const show = ref('algorithm')
@ -47,7 +49,8 @@
const newpage = router.resolve({ const newpage = router.resolve({
path: '/DetailsPageconetent', path: '/DetailsPageconetent',
query: { query: {
select: '组件服务', // select: '',
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB
}, },
}) })
window.location.href = newpage.href window.location.href = newpage.href

View File

@ -78,6 +78,13 @@
'application/vnd.openxmlformats-officedocument.wordprocessingml.document' 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
} else if (props.type === '压缩包') { } else if (props.type === '压缩包') {
flag = file.type === 'application/x-zip-compressed' flag = file.type === 'application/x-zip-compressed'
} else if (props.type === '附件') {
flag =
file.type === 'application/pdf' ||
file.type === 'application/msword' ||
file.type ===
'application/vnd.openxmlformats-officedocument.wordprocessingml.document' ||
file.type === 'application/x-zip-compressed'
} }
console.log(flag) console.log(flag)
if (!flag) { if (!flag) {
@ -131,6 +138,8 @@
} }
} else if (props.type === '压缩包') { } else if (props.type === '压缩包') {
mybus.emit('chagePackageList', fileList.value) mybus.emit('chagePackageList', fileList.value)
} else if (props.type === '附件') {
mybus.emit('chageAccessory', fileList.value)
} else if (props.type === '视频') { } else if (props.type === '视频') {
console.log(fileList.value) console.log(fileList.value)
mybus.emit('chageVideoList', fileList.value) mybus.emit('chageVideoList', fileList.value)

View File

@ -8,9 +8,7 @@
></DetalsTitle> ></DetalsTitle>
</div> </div>
<!-- 青岛市局 --> <!-- 青岛市局 -->
<div <div style="width: 100%; display: flex; justify-content: center"
v-if="whoShow1 && whoShow1.itShowQingDao"
style="width: 100%; display: flex; justify-content: center"
> >
<div class="content" v-for="item in dataFrom.content" :key="item.title"> <div class="content" v-for="item in dataFrom.content" :key="item.title">
<div class="content-left" v-if="item.titleType === '调用接口'"> <div class="content-left" v-if="item.titleType === '调用接口'">
@ -162,127 +160,6 @@
</div> </div>
</div> --> </div> -->
</div> </div>
<!-- 其他 -->
<div v-else>
<div class="content" v-for="item in dataFrom.content" :key="item.title">
<div class="content-left" v-if="item.titleType === '调用接口'">
<div class="left">
<div class="content-left-title">
<span>{{ item.title }}{{ item.titleType }}</span>
</div>
<div class="content-left-content">
<p>
<span>{{ item.link.name }}</span>
<a-tooltip>
<template #title>{{ item.link.value }}</template>
<span>{{ item.link.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.postMethod.name }}</span>
<span>{{ item.postMethod.value }}</span>
</p>
</div>
</div>
<div class="right">
<div @click="technical()">技术文档</div>
<!-- <div @click="technicalNew()">新手指引</div> -->
<!-- <div @click="SDKClick()">SDK安装包</div> -->
</div>
</div>
<div class="content-left" v-else-if="item.titleType === '平台对接'">
<div class="left">
<div class="content-left-title">
<span>{{ item.title }}{{ item.titleType }}</span>
</div>
<div class="content-left-content">
<p>
<span>{{ item.linkPlatform.name }}</span>
<a-tooltip v-if="approveStatus == '通过'">
<template #title>{{ item.linkPlatform.value }}</template>
<span>{{ item.linkPlatform.value }}</span>
</a-tooltip>
<a-tooltip v-else>
<template #title>请申请后查看平台地址</template>
<span>****************</span>
</a-tooltip>
</p>
</div>
</div>
<div class="right">
<div @click="technical()">技术文档</div>
<!-- <div @click="technicalNew()">新手指引</div> -->
<!-- <div @click="SDKClick()">SDK安装包</div> -->
</div>
</div>
<div class="content-left" v-else-if="item.titleType === 'SDK'">
<div class="left">
<div class="content-left-title">
<span>{{ item.title }}{{ item.titleType }}</span>
</div>
</div>
<div class="right">
<div @click="technical()">技术文档</div>
<!-- <div @click="technicalNew()">新手指引</div> -->
<div @click="SDKClick()">SDK安装包</div>
</div>
</div>
<div class="content-right">
<div class="content-right-left">
<div class="content-right-title">{{ item.contact }}</div>
<div class="content-right-content">
<p>
<span>{{ item.facilitator.name }}</span>
<a-tooltip>
<template #title>{{ item.facilitator.value }}</template>
<span>{{ item.facilitator.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.people.name }}</span>
<a-tooltip>
<template #title>{{ item.people.value }}</template>
<span>{{ item.people.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.phone.name }}</span>
<a-tooltip>
<template #title>{{ item.phone.value }}</template>
<span>{{ item.phone.value }}</span>
</a-tooltip>
</p>
</div>
</div>
<div class="content-right-right">
<div class="content-right-title">{{ item.contact2 }}</div>
<div class="content-right-content">
<p>
<span>{{ item.facilitator2.name }}</span>
<a-tooltip>
<template #title>{{ item.facilitator2.value }}</template>
<span>{{ item.facilitator2.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.people2.name }}</span>
<a-tooltip>
<template #title>{{ item.people2.value }}</template>
<span>{{ item.people2.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.phone2.name }}</span>
<a-tooltip>
<template #title>{{ item.phone2.value }}</template>
<span>{{ item.phone2.value }}</span>
</a-tooltip>
</p>
</div>
</div>
</div>
</div>
</div>
</div> </div>
</template> </template>

View File

@ -11,51 +11,38 @@
<div class="main"> <div class="main">
<div class="main-left"> <div class="main-left">
<p>{{ dataFrom.linkName }}</p> <p>{{ dataFrom.linkName }}</p>
<a-tooltip v-if="flag"> <a-tooltip>
<template #title>{{ dataFrom.link }}</template>
<p style="cursor: pointer" @click="clickLink(dataFrom.link)">
{{ dataFrom.link || '暂无' }}
</p>
</a-tooltip>
<a-tooltip v-else>
<template #title>请申请后查看</template> <template #title>请申请后查看</template>
<p style="cursor: pointer; filter: blur(4px)"> <!-- <p style="cursor: pointer; filter: blur(4px)">
{{ dataFrom.link }}
</p> -->
<p style="cursor: pointer;"
:class="{ 'blur-word': approveStatus == '通过' && whoShow1.itShowXiHaiAn ? false : true}">
{{ dataFrom.link }} {{ dataFrom.link }}
</p> </p>
</a-tooltip> </a-tooltip>
</div> </div>
<div class="main-center"> <div class="main-center">
<p>{{ dataFrom.numberName }}</p> <p>{{ dataFrom.numberName }}</p>
<a-tooltip v-if="flag"> <a-tooltip>
<template #title>{{ dataFrom.number }}</template>
<p>{{ dataFrom.number || '暂无' }}</p>
</a-tooltip>
<a-tooltip v-else>
<template #title>请申请后查看</template> <template #title>请申请后查看</template>
<p style="filter: blur(4px)">{{ dataFrom.number }}</p> <!-- <p style="filter: blur(4px)">{{ dataFrom.number }}</p> -->
<p :class="{ 'blur-word': approveStatus == '通过' && whoShow1.itShowXiHaiAn ? false : true}">{{ dataFrom.number
}}</p>
</a-tooltip> </a-tooltip>
<div <div @click="copyFunction(dataFrom.number, '复制账号')" v-if="dataFrom.number != '' && flag">
@click="copyFunction(dataFrom.number, '复制账号')"
v-if="dataFrom.number != '' && flag"
>
复制账号 复制账号
</div> </div>
<!-- <div v-else id="zanwu">暂无</div> --> <!-- <div v-else id="zanwu">暂无</div> -->
</div> </div>
<div class="main-right"> <div class="main-right">
<p>{{ dataFrom.passwordName }}</p> <p>{{ dataFrom.passwordName }}</p>
<a-tooltip v-if="flag"> <a-tooltip>
<template #title>{{ dataFrom.password }}</template>
<p>{{ dataFrom.password || '暂无' }}</p>
</a-tooltip>
<a-tooltip v-else>
<template #title>请申请后查看</template> <template #title>请申请后查看</template>
<p style="filter: blur(4px)">{{ dataFrom.password }}</p> <p style="filter: blur(4px)">{{ dataFrom.password }}</p>
<p style="filter: blur(4px)" :class="{ 'blur-word': approveStatus == '通过' && whoShow1.itShowXiHaiAn ? false : true}">{{ dataFrom.password }}</p>
</a-tooltip> </a-tooltip>
<div <div @click="copyFunction(dataFrom.password2, '复制密码')" v-if="dataFrom.password2 != '' && flag">
@click="copyFunction(dataFrom.password2, '复制密码')"
v-if="dataFrom.password2 != '' && flag"
>
复制密码 复制密码
</div> </div>
<!-- <div v-else id="zanwu">暂无</div> --> <!-- <div v-else id="zanwu">暂无</div> -->
@ -64,16 +51,16 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle.vue' import DetalsTitle from '@/views/detailsAll/components/DetalsTitle.vue'
import { ref, defineProps, watch } from 'vue' import { ref, defineProps, watch } from 'vue'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
let flag = ref(true) let flag = ref(true)
const whoShow1 = ref(whoShow) const whoShow1 = ref(whoShow)
console.log('whoShow1', whoShow1.value.itShowQingDao) console.log('whoShow1', whoShow1.value.itShowQingDao)
const props = defineProps({ const props = defineProps({
dataList: { type: Object, default: null }, dataList: { type: Object, default: null },
}) })
const dataFrom = ref({ const dataFrom = ref({
linkName: '访问地址', linkName: '访问地址',
link: '', link: '',
numberName: '试用账号', numberName: '试用账号',
@ -81,9 +68,13 @@
passwordName: '试用密码', passwordName: '试用密码',
password: '**************************', password: '**************************',
password2: '', password2: '',
}) })
if (props.dataList.infoList) { console.log('props.dataList------------>', props.dataList);
let obj = props.dataList.approveStatus const approveStatus = ref('')
if (props.dataList.infoList) {
let obj = props.dataList.approveStatus;
approveStatus.value = props.dataList.approveStatus
if (obj !== '通过' && whoShow1.value.itShowQingDao) { if (obj !== '通过' && whoShow1.value.itShowQingDao) {
flag.value = false flag.value = false
} }
@ -99,12 +90,12 @@
dataFrom.value.password = '' dataFrom.value.password = ''
} }
// } // }
} }
const clickLink = (link) => { const clickLink = (link) => {
window.open(link) window.open(link)
} }
// //
const copyFunction = (data, name) => { const copyFunction = (data, name) => {
if (data !== '') { if (data !== '') {
let url = data let url = data
let oInput = document.createElement('input') let oInput = document.createElement('input')
@ -118,22 +109,23 @@
} else { } else {
message.error('复制为空') message.error('复制为空')
} }
} }
message.config({ message.config({
top: '100px', // top: '100px', //
}) })
// const success = () => { // const success = () => {
// message.success({ // message.success({
// // content: 'This is a prompt message with custom className and style', // // content: 'This is a prompt message with custom className and style',
// className: 'custom-class', // className: 'custom-class',
// style: {}, // style: {},
// }) // })
// } // }
watch( watch(
() => props.dataList, () => props.dataList,
(val) => { (val) => {
if (val) { if (val) {
let obj = props.dataList.approveStatus let obj = props.dataList.approveStatus
approveStatus.value = props.dataList.approveStatus
if (obj !== '通过' && whoShow1.value.itShowQingDao) { if (obj !== '通过' && whoShow1.value.itShowQingDao) {
flag.value = false flag.value = false
} }
@ -150,14 +142,15 @@
} }
} }
} }
) )
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.algorithm-on-trial { .algorithm-on-trial {
padding: 0.8rem 0px 0.8rem; padding: 0.8rem 0px 0.8rem;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
.main { .main {
margin-top: 0.3rem; margin-top: 0.3rem;
width: 13rem; width: 13rem;
@ -166,11 +159,13 @@
display: grid; display: grid;
grid-template-columns: 33.33% 33.33% 33.33%; grid-template-columns: 33.33% 33.33% 33.33%;
align-items: center; align-items: center;
.main-left { .main-left {
border-right: 0.01rem #ffffff solid; border-right: 0.01rem #ffffff solid;
padding-left: 0.7rem; padding-left: 0.7rem;
padding-right: 1rem; padding-right: 1rem;
& > p {
&>p {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
display: -webkit-box; display: -webkit-box;
@ -179,29 +174,35 @@
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
} }
} }
.main-center { .main-center {
padding-left: 1rem; padding-left: 1rem;
padding-right: 1rem; padding-right: 1rem;
} }
.main-right { .main-right {
padding-right: 0.7rem; padding-right: 0.7rem;
} }
& > div > p:first-child {
&>div>p:first-child {
font-size: 0.26rem; font-size: 0.26rem;
color: #ffffff; color: #ffffff;
font-weight: bold; font-weight: bold;
} }
& > div > p:nth-child(2) {
&>div>p:nth-child(2) {
font-size: 0.22rem; font-size: 0.22rem;
color: #ffffff; color: #ffffff;
line-height: 0.34rem; line-height: 0.34rem;
} }
& > div:first-child > p:last-child {
&>div:first-child>p:last-child {
text-decoration: underline; text-decoration: underline;
word-wrap: break-word; word-wrap: break-word;
word-break: normal; word-break: normal;
} }
& > div > div:last-child {
&>div>div:last-child {
height: 0.34rem; height: 0.34rem;
width: 1.1rem; width: 1.1rem;
border: 0.01rem solid #ffffff; border: 0.01rem solid #ffffff;
@ -213,6 +214,7 @@
line-height: 0.34rem; line-height: 0.34rem;
} }
} }
#zanwu { #zanwu {
height: 0.34rem; height: 0.34rem;
width: 1.1rem; width: 1.1rem;
@ -220,10 +222,14 @@
color: #ffffff; color: #ffffff;
border: 0; border: 0;
} }
} }
.blur-word {
filter: blur(4px);
}
</style> </style>
<style> <style>
.custom-class { .custom-class {
/* top: 100px; */ /* top: 100px; */
} }
</style> </style>

View File

@ -41,6 +41,8 @@
<script setup> <script setup>
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle' import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
import { ref, defineProps, watch } from 'vue' import { ref, defineProps, watch } from 'vue'
const itShowXiHaiAn = whoShow.itShowXiHaiAn
console.log('2222', itShowXiHaiAn)
let dataFrom = ref({ let dataFrom = ref({
title: '部署与安全', title: '部署与安全',
@ -62,7 +64,7 @@
dataList: { type: Object, default: null }, dataList: { type: Object, default: null },
}) })
if (props.dataList.infoList) { if (props.dataList.infoList) {
if (!whoShow1.value.itShowQingDao) { if (!whoShow1.value.itShowQingDao && !whoShow1.value.itShowXiHaiAn) {
let obj = { let obj = {
attrType: '访问地址', attrType: '访问地址',
attrValue: props.dataList.link || '------', attrValue: props.dataList.link || '------',
@ -119,7 +121,7 @@
if (val) { if (val) {
dataFrom.value.content[0].childrenContent = [] dataFrom.value.content[0].childrenContent = []
dataFrom.value.content[1].childrenContent = [] dataFrom.value.content[1].childrenContent = []
if (!whoShow1.value.itShowQingDao) { if (!whoShow1.value.itShowQingDao && !itShowXiHaiAn) {
let obj = { let obj = {
attrType: '访问地址', attrType: '访问地址',
attrValue: props.dataList.link || '------', attrValue: props.dataList.link || '------',

View File

@ -8,9 +8,7 @@
></DetalsTitle> ></DetalsTitle>
</div> </div>
<!-- 青岛市局 --> <!-- 青岛市局 -->
<div <div style="width: 100%; display: flex; justify-content: center"
v-if="whoShow1 && whoShow1.itShowQingDao"
style="width: 100%; display: flex; justify-content: center"
> >
<div class="content"> <div class="content">
<div <div
@ -50,29 +48,6 @@
</div> </div>
</div> --> </div> -->
</div> </div>
<!-- 其他 -->
<div v-else>
<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 style="display: flex">
<span>{{ carditem.attrType }}</span>
<a-tooltip>
<template #title>{{ carditem.attrValue }}</template>
<span>{{ carditem.attrValue }}</span>
</a-tooltip>
</div>
</div>
</div>
</div>
</div>
</div>
</div> </div>
</template> </template>

View File

@ -7,9 +7,7 @@
:type="dataFrom.englishTitle" :type="dataFrom.englishTitle"
></DetalsTitle> ></DetalsTitle>
</div> </div>
<div <div style="width: 100%; display: flex; justify-content: center"
v-if="whoShow1 && whoShow1.itShowQingDao"
style="width: 100%; display: flex; justify-content: center"
> >
<div class="content" v-for="item in dataFrom.content" :key="item.title"> <div class="content" v-for="item in dataFrom.content" :key="item.title">
<div class="content-left"> <div class="content-left">
@ -117,84 +115,6 @@
</div> </div>
</div> --> </div> -->
</div> </div>
<div v-else>
<div class="content" v-for="item in dataFrom.content" :key="item.title">
<div class="content-left">
<div class="left">
<div class="content-left-title">
<span>{{ item.title }}</span>
</div>
<div class="content-left-content">
<p>
<span>{{ item.link.name }}</span>
<a-tooltip>
<template #title>{{ item.linkValue }}</template>
<span>{{ item.linkValue }}</span>
</a-tooltip>
</p>
</div>
</div>
<div class="right">
<div @click="technical()">技术文档</div>
<div @click="technicalNew()">新手指引</div>
</div>
</div>
<div class="content-right">
<div class="content-right-left">
<div class="content-right-title">{{ item.contact }}</div>
<div class="content-right-content">
<p>
<span>{{ item.facilitator.name }}</span>
<a-tooltip>
<template #title>{{ item.facilitator.value }}</template>
<span>{{ item.facilitator.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.people.name }}</span>
<a-tooltip>
<template #title>{{ item.people.value }}</template>
<span>{{ item.people.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.phone.name }}</span>
<a-tooltip>
<template #title>{{ item.phone.value }}</template>
<span>{{ item.phone.value }}</span>
</a-tooltip>
</p>
</div>
</div>
<div class="content-right-right">
<div class="content-right-title">{{ item.contact2 }}</div>
<div class="content-right-content">
<p>
<span>{{ item.facilitator2.name }}</span>
<a-tooltip>
<template #title>{{ item.facilitator2.value }}</template>
<span>{{ item.facilitator2.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.people2.name }}</span>
<a-tooltip>
<template #title>{{ item.people2.value }}</template>
<span>{{ item.people2.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.phone2.name }}</span>
<a-tooltip>
<template #title>{{ item.phone2.value }}</template>
<span>{{ item.phone2.value }}</span>
</a-tooltip>
</p>
</div>
</div>
</div>
</div>
</div>
</div> </div>
</template> </template>

View File

@ -7,9 +7,7 @@
:type="dataFrom.englishTitle" :type="dataFrom.englishTitle"
></DetalsTitle> ></DetalsTitle>
</div> </div>
<div <div style="width: 100%; display: flex; justify-content: center"
v-if="whoShow1 && whoShow1.itShowQingDao"
style="width: 100%; display: flex; justify-content: center"
> >
<div class="content"> <div class="content">
<div class="content-card"> <div class="content-card">
@ -73,41 +71,6 @@
</div> </div>
</div> --> </div> -->
</div> </div>
<div v-else>
<div class="content">
<div class="content-card">
<div class="left">
<p>{{ dataFrom.linkName }}</p>
<a-tooltip>
<template #title>{{ dataFrom.link }}</template>
<p>{{ dataFrom.link }}</p>
</a-tooltip>
</div>
<div class="right">
<div @click="technical()">技术文档</div>
<div @click="technicaltow()">新手指引</div>
</div>
</div>
<div class="content-card">
<div v-for="(item, index) in dataFrom.content" :key="index">
<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>
</div>
</div> </div>
</template> </template>

View File

@ -44,10 +44,10 @@
</template> </template>
<script setup> <script setup>
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle' import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
import { ref, defineProps, watch } from 'vue' import { ref, defineProps, watch } from 'vue'
const iconImg = require('@/assets/detailsAll/layer-service/layer-icon.png') const iconImg = require('@/assets/detailsAll/layer-service/layer-icon.png')
const dataFromLeft = ref({ const dataFromLeft = ref({
content: [ content: [
{ {
type: '服务类型', type: '服务类型',
@ -62,8 +62,8 @@
values: '', values: '',
}, },
], ],
}) })
const dataFromCenter = ref({ const dataFromCenter = ref({
content: [ content: [
{ {
type: '坐标系', type: '坐标系',
@ -78,8 +78,8 @@
values: '', values: '',
}, },
], ],
}) })
const dataFromRight = ref({ const dataFromRight = ref({
content: [ content: [
{ {
type: '图层名称', type: '图层名称',
@ -90,13 +90,13 @@
values: '', values: '',
}, },
], ],
}) })
// //
const props = defineProps({ const props = defineProps({
dataList: { type: Object, default: null }, dataList: { type: Object, default: null },
}) })
const flag = ref(true) const flag = ref(true)
if (props.dataList.infoList) { if (props.dataList.infoList) {
let obj = props.dataList.infoList.filter( let obj = props.dataList.infoList.filter(
(item) => (item) =>
item.attrType === '服务类型' || item.attrType === '服务类型' ||
@ -116,6 +116,11 @@
// dataFrom.value.content[0].facilitator.value = props.dataList.deptContacts // dataFrom.value.content[0].facilitator.value = props.dataList.deptContacts
console.log('dataList', props.dataList) console.log('dataList', props.dataList)
props.dataList.infoList.map((item) => { props.dataList.infoList.map((item) => {
handleInfoList(item)
})
}
}
const handleInfoList = (item) => {
if (item.attrType === '服务类型') { if (item.attrType === '服务类型') {
dataFromLeft.value.content[0].values = item.attrValue || '123' dataFromLeft.value.content[0].values = item.attrValue || '123'
} else if (item.attrType === '覆盖区域') { } else if (item.attrType === '覆盖区域') {
@ -133,12 +138,12 @@
} else if (item.attrType === '图层类型') { } else if (item.attrType === '图层类型') {
dataFromRight.value.content[1].values = item.attrValue || '--' dataFromRight.value.content[1].values = item.attrValue || '--'
} else if (item.attrType === '最大级别') { } else if (item.attrType === '最大级别') {
if (dataFromRight.value.content && dataFromRight.value.content[2]) {
dataFromRight.value.content[2].values = item.attrValue || '--' dataFromRight.value.content[2].values = item.attrValue || '--'
} }
})
} }
} }
watch( watch(
() => props.dataList, () => props.dataList,
(val) => { (val) => {
if (val) { if (val) {
@ -157,45 +162,48 @@
if (!obj) { if (!obj) {
flag.value = false flag.value = false
} else { } else {
// dataFrom.value.content[0].link.value = val.apiUrl
// dataFrom.value.content[0].facilitator.value = val.deptContacts
console.log('dataList', val) console.log('dataList', val)
val.infoList.map((item) => { val.infoList.map((item) => {
if (item.attrType === '服务类型') { handleInfoList(item)
dataFromLeft.value.content[0].values = item.attrValue || '123' // if (item.attrType === '') {
} else if (item.attrType === '覆盖区域') { // dataFromLeft.value.content[0].values = item.attrValue || '123'
dataFromLeft.value.content[1].values = item.attrValue || '--' // } else if (item.attrType === '') {
} else if (item.attrType === '切片策略') { // dataFromLeft.value.content[1].values = item.attrValue || '--'
dataFromLeft.value.content[2].values = item.attrValue || '--' // } else if (item.attrType === '') {
} else if (item.attrType === '坐标系') { // dataFromLeft.value.content[2].values = item.attrValue || '--'
dataFromCenter.value.content[0].values = item.attrValue || '--' // } else if (item.attrType === '') {
} else if (item.attrType === '切片尺寸') { // dataFromCenter.value.content[0].values = item.attrValue || '--'
dataFromCenter.value.content[1].values = item.attrValue || '--' // } else if (item.attrType === '') {
} else if (item.attrType === '最小级别') { // dataFromCenter.value.content[1].values = item.attrValue || '--'
dataFromCenter.value.content[2].values = item.attrValue || '--' // } else if (item.attrType === '') {
} else if (item.attrType === '数据范围') { // dataFromCenter.value.content[2].values = item.attrValue || '--'
dataFromRight.value.content[0].values = item.attrValue || '--' // } else if (item.attrType === '') {
} else if (item.attrType === '图层类型') { // dataFromRight.value.content[0].values = item.attrValue || '--'
dataFromRight.value.content[1].values = item.attrValue || '--' // } else if (item.attrType === '') {
} else if (item.attrType === '最大级别') { // dataFromRight.value.content[1].values = item.attrValue || '--'
dataFromRight.value.content[2].values = item.attrValue || '--' // } else if (item.attrType === '') {
} // if (dataFromRight.value.content && dataFromRight.value.content[2]) {
// dataFromRight.value.content[2].values = item.attrValue || '--'
// }
// }
}) })
} }
} }
} }
) )
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.usage-mode { .usage-mode {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
padding: 0.8rem 0; padding: 0.8rem 0;
.content { .content {
margin-top: 0.3rem; margin-top: 0.3rem;
display: flex; display: flex;
.content-left { .content-left {
height: 2.8rem; height: 2.8rem;
width: 13rem; width: 13rem;
@ -216,10 +224,12 @@
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
ul { ul {
padding: 0; padding: 0;
margin: 0; margin: 0;
} }
ul li { ul li {
list-style: none; list-style: none;
display: flex; display: flex;
@ -227,11 +237,13 @@
margin-bottom: 0.3rem; margin-bottom: 0.3rem;
line-height: 0.25rem; line-height: 0.25rem;
} }
img { img {
margin: 0 0.2rem 0 0; margin: 0 0.2rem 0 0;
width: 0.15rem; width: 0.15rem;
height: 0.15rem; height: 0.15rem;
} }
span { span {
font-size: 0.2rem; font-size: 0.2rem;
color: #666666; color: #666666;
@ -239,6 +251,7 @@
margin-right: 0.5rem; margin-right: 0.5rem;
width: 120px; width: 120px;
} }
p { p {
width: 2rem; width: 2rem;
margin-bottom: 0; margin-bottom: 0;
@ -253,5 +266,5 @@
} }
} }
} }
} }
</style> </style>

View File

@ -7,9 +7,7 @@
:type="dataFrom.englishTitle" :type="dataFrom.englishTitle"
></DetalsTitle> ></DetalsTitle>
</div> </div>
<div <div style="width: 100%; display: flex; justify-content: center"
v-if="whoShow1 && whoShow1.itShowQingDao"
style="width: 100%; display: flex; justify-content: center"
> >
<div class="content" v-for="item in dataFrom.content" :key="item.title"> <div class="content" v-for="item in dataFrom.content" :key="item.title">
<div class="content-left"> <div class="content-left">
@ -128,86 +126,6 @@
</div> </div>
</div> --> </div> -->
</div> </div>
<div v-else>
<div class="content" v-for="item in dataFrom.content" :key="item.title">
<div class="content-left">
<div class="left">
<a-tooltip>
<template #title>{{ item.linkValue }}</template>
<p @click="ServiceAddressFunction(item.linkValue)">
服务地址
{{ item.linkValue }}
</p>
</a-tooltip>
<a-tooltip>
<template #title>{{ item.csslinkValue }}</template>
<p @click="ServiceAddressFunction(item.csslinkValue)">
样式服务地址
{{ item.csslinkValue }}
</p>
</a-tooltip>
</div>
<div class="right">
<div @click="technical()">技术文档</div>
<div @click="technicalNew()">新手指引</div>
</div>
</div>
<div class="content-right">
<div class="content-right-left">
<div class="content-right-title">{{ item.contact }}</div>
<div class="content-right-content">
<p>
<span>{{ item.facilitator.name }}</span>
<a-tooltip>
<template #title>{{ item.facilitator.value }}</template>
<span>{{ item.facilitator.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.people.name }}</span>
<a-tooltip>
<template #title>{{ item.people.value }}</template>
<span>{{ item.people.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.phone.name }}</span>
<a-tooltip>
<template #title>{{ item.phone.value }}</template>
<span>{{ item.phone.value }}</span>
</a-tooltip>
</p>
</div>
</div>
<div class="content-right-right">
<div class="content-right-title">{{ item.contact2 }}</div>
<div class="content-right-content">
<p>
<span>{{ item.facilitator2.name }}</span>
<a-tooltip>
<template #title>{{ item.facilitator2.value }}</template>
<span>{{ item.facilitator2.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.people2.name }}</span>
<a-tooltip>
<template #title>{{ item.people2.value }}</template>
<span>{{ item.people2.value }}</span>
</a-tooltip>
</p>
<p>
<span>{{ item.phone2.name }}</span>
<a-tooltip>
<template #title>{{ item.phone2.value }}</template>
<span>{{ item.phone2.value }}</span>
</a-tooltip>
</p>
</div>
</div>
</div>
</div>
</div>
</div> </div>
</template> </template>

View File

@ -89,11 +89,15 @@
</span> </span>
<span>{{ val.type }}</span> <span>{{ val.type }}</span>
</div> </div>
<!-- (item.note1 && JSON.parse(item.note1) &&
JSON.parse(item.note1)[0] &&
JSON.parse(item.note1)[0].channelName -->
<div class="description"> <div class="description">
{{ {{
val.description || val.description ||
((val.note1 || '') && ((val.note1 || '') &&
(JSON.parse(val.note1)[0].channelName || '--') + (JSON.parse(val.note1) && JSON.parse(val.note1)[0] && JSON.parse(val.note1)[0].channelName || '--') +
'等' + '等' +
JSON.parse(val.note1).length + JSON.parse(val.note1).length +
'个摄像头') || '个摄像头') ||

File diff suppressed because it is too large Load Diff

View File

@ -156,8 +156,11 @@
class="modal-box" class="modal-box"
title="请选择" title="请选择"
:visible="showAddModal" :visible="showAddModal"
:onOk="handleOk" ok-text="确认"
:onCancel="handleCancel" cancel-text="取消"
@ok="handleOk"
@cancel="handleCancel"
> >
<a-table <a-table
:columns="columns" :columns="columns"
@ -652,7 +655,14 @@
} }
</script> </script>
<style>
.ant-modal-footer {
display: block;
}
</style>
<style lang="less" scoped> <style lang="less" scoped>
.bg { .bg {
background: #fff; background: #fff;
height: 100vh; height: 100vh;

File diff suppressed because it is too large Load Diff

View File

@ -1,19 +1,11 @@
<template> <template>
<div class="box"> <div class="box">
<div class="CanCase"> <div class="CanCase">
<div <div class="caseBox" v-for="(item, index) in caseList" :key="index" @click="toView(item)">
class="caseBox" <a-image :preview="false" :src="
v-for="(item, index) in caseList"
:key="index"
@click="toView(item)"
>
<a-image
:preview="false"
:src="
item.fuseAttrList.filter((val) => val.attrType == '服务图片')[0] item.fuseAttrList.filter((val) => val.attrType == '服务图片')[0]
.attrValue .attrValue
" " />
/>
<h3>{{ item.name }}</h3> <h3>{{ item.name }}</h3>
<p>发布时间 {{ item.updateDate }}</p> <p>发布时间 {{ item.updateDate }}</p>
</div> </div>
@ -21,45 +13,57 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref, onMounted, onBeforeUnmount } from 'vue' import { ref, onMounted, onBeforeUnmount, watch, defineProps, defineEmits } from 'vue'
import { defineProps } from 'vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
const router = useRouter() const router = useRouter()
const props = defineProps({ const props = defineProps({
resourceList: { resourceList: {
type: Object, type: Object,
default: () => {}, default: () => { },
}, },
selectCardsname: { selectCardsname: {
type: String, type: String,
default: '组件服务', default: '组件服务',
}, },
}) })
const caseList = ref([]) const emits = defineEmits(['saveSearchCodition'])
onMounted(() => { const caseList = ref([])
onMounted(() => {
caseList.value = props.resourceList.data caseList.value = props.resourceList.data
console.log(caseList.value, 'caseList.value') console.log('caseList.value------------>', caseList.value);
}) })
onBeforeUnmount(() => {}) onBeforeUnmount(() => { })
function toView(item) { function toView(item) {
emits('saveSearchCodition', 1)
router.push({ router.push({
path: '/integrationServicesDetails', path: '/integrationServicesDetails',
query: { query: {
id: item.id, id: item.id,
}, },
}) })
}
watch(
() => props.resourceList.data,
(val) => {
if (val) {
caseList.value = val
} }
}
)
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.box { .box {
.CanCase { .CanCase {
margin-top: 0.2rem; margin-top: 0.2rem;
display: grid; display: grid;
grid-template-columns: 33.33% 33.33% 33.33%; grid-template-columns: 33.33% 33.33% 33.33%;
align-items: center; align-items: center;
justify-items: center; justify-items: center;
.caseBox { .caseBox {
width: 3.5rem; width: 3.5rem;
height: 3rem; height: 3rem;
@ -69,20 +73,23 @@
padding: 0.2rem; padding: 0.2rem;
margin-bottom: 0.2rem; margin-bottom: 0.2rem;
cursor: pointer; cursor: pointer;
img { img {
width: 3rem; width: 3rem;
height: 1.8rem; height: 1.8rem;
} }
h3 { h3 {
font-size: 0.18rem; font-size: 0.18rem;
font-weight: bold; font-weight: bold;
margin-top: 0.1rem; margin-top: 0.1rem;
} }
p { p {
font-size: 0.16rem; font-size: 0.16rem;
color: #797979; color: #797979;
} }
} }
} }
} }
</style> </style>

View File

@ -0,0 +1,46 @@
<template>
<div class="tag-box">
<div class="tag-item" v-for="(item, index) in tagList" :key="index">
{{item}}
</div>
</div>
</template>
<script setup>
import { ref, onMounted, onBeforeUnmount, watch, defineProps, defineEmits } from 'vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const props = defineProps({
componentServiceTagList: {
type: Object,
default: () => { },
},
})
const tagList = ref([])
onMounted(() => {
tagList.value = props.componentServiceTagList
})
watch(
() => props.componentServiceTagList,
(val) => {
if (val) {
tagList.value = val
}
}
)
</script>
<style lang="less" scoped>
.tag-item {
font-family: 'Alibaba PuHuiTi';
font-weight: 400;
border-radius: 0.12rem;
margin: 0 10px;
padding: 2px 8px;
font-size: 12px;
color: #0087ff;
background: rgba(0, 88, 225, 0.1);
}
</style>

View File

@ -23,8 +23,8 @@
> >
{{ item.name }} {{ item.name }}
</div> </div>
<a-badge :count="sgcNum">
<!-- 购物车 --> <!-- 购物车 -->
<!-- <a-badge :count="sgcNum">
<svg <svg
t="1650455446850" t="1650455446850"
class="icon" class="icon"
@ -42,8 +42,7 @@
p-id="2070" p-id="2070"
></path> ></path>
</svg> </svg>
<!-- <a-avatar shape="square" size="large" /> --> </a-badge> -->
</a-badge>
<a-badge :count="mynoticeNum" style="margin-left: 0.2rem"> <a-badge :count="mynoticeNum" style="margin-left: 0.2rem">
<!-- 消息提醒 --> <!-- 消息提醒 -->
<svg <svg
@ -131,21 +130,13 @@
import { getSgcTotal } from '@/api/home' import { getSgcTotal } from '@/api/home'
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
import { message } from 'ant-design-vue'
const store = useStore() const store = useStore()
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()
// const navListManagement = ref([
// { name: '', key: 'home' },
// { name: '', key: 'DetailsPageconetent' },
// { name: '', key: 'capabilityCloud' },
// { name: '', key: 'abilityStatistics' },
// { name: '', key: 'developmentGuide' },
// { name: '', key: 'demandCenter' },
// // { name: '', key: 'personalCenter' },
// { name: '', key: 'mapTest' },
// // { name: '', key: 'houtaiguanli' },
// { name: '', key: 'assignCase' },
// ])
const whoShow1 = whoShow const whoShow1 = whoShow
const user = ref({ const user = ref({
username: store.getters['user/username'], username: store.getters['user/username'],
@ -190,6 +181,10 @@
} }
// //
const jumpPage = (item) => { const jumpPage = (item) => {
let _arr = ['共享门户', '能力云图', '能力统计', '需求中心', '赋能案例']
if(_arr.includes(item.name)) {
return message.warn('正在建设中!')
}
// console.log(item) // console.log(item)
select.value = item.key select.value = item.key
switch (item.name) { switch (item.name) {
@ -208,7 +203,7 @@
router.push({ router.push({
path: '/DetailsPageconetent', path: '/DetailsPageconetent',
query: { query: {
select: '组件服务', select: DETAIL_PAGE_CONTENT_DEFAULT_TAB
}, },
}) })
break break
@ -222,7 +217,7 @@
// path: '/developmentGuide', // path: '/developmentGuide',
// }) // })
// break // break
case '技术文档': case '新手指南':
router.push({ router.push({
path: '/instructionManual', path: '/instructionManual',
}) })
@ -255,10 +250,6 @@
case '融合服务': case '融合服务':
router.push({ router.push({
path: '/integrationServices', path: '/integrationServices',
// path: '/DetailsPageconetent',
query: {
select: '融合服务',
},
}) })
break break
case 'CIM专区': case 'CIM专区':

View File

@ -0,0 +1,100 @@
<template>
<ul class="integrationServiceOrder">
<li v-for="(item, i) in integrationOrderList" :key="i" @click="
changeOrder(i, item.value, item.orderType == 'DESC' ? 'ASC' : 'DESC')
">
{{ item.name }}
<span class="arrow" :class="
integrationOrder.orderType == 'ASC' &&
integrationOrder.orderField == item.value
? 'down'
: ''
"></span>
</li>
</ul>
</template>
<script setup>
import { ref, reactive, nextTick, defineExpose } from 'vue'
import mybus from '@/myplugins/mybus'
const orderList = [
{
value: 'apply_count',
name: '申请量',
orderType: 'DESC',
},
{
value: 'collectCount',
name: '收藏量',
orderType: 'DESC',
},
{
value: 'create_date',
name: '发布时间',
orderType: 'DESC',
},
{
value: 'update_date',
name: '更新时间',
orderType: 'DESC',
},
]
const integrationOrderList = ref(JSON.parse(JSON.stringify(orderList)))
const integrationOrder = reactive({
orderField: '',
orderType: '',
})
// --
const changeOrder = (i, val, type) => {
console.log('i, val, type------------>', i, val, type);
integrationOrder.orderField = val
integrationOrder.orderType = type;
// 0 apply_count ASC
let _index = integrationOrderList.value.findIndex(x => x.value = val)
if (_index > -1) {
integrationOrderList.value[_index].orderType = type
}
mybus.emit('changeCondition', {
orderField: val,
orderType: type,
})
}
const reset = () => {
integrationOrderList.value = JSON.parse(JSON.stringify(orderList))
integrationOrder.orderField = ''
integrationOrder.orderType = ''
}
defineExpose({
reset,
})
</script>
<style lang="less" scoped>
.integrationServiceOrder {
display: flex;
li {
width: 90px;
height: 12px;
text-align: center;
cursor: pointer;
display: flex;
justify-content: center;
align-items: center;
.arrow {
display: inline-block;
width: 12px;
height: 12px;
background: url('~@/assets/newHome/arrow.png');
margin-left: 10px;
}
.down {
background: url('~@/assets/newHome/down.png');
margin-top: 6px;
}
}
}
</style>

View File

@ -10,89 +10,51 @@
}} }}
</div> </div>
<div class="condition" :key="showKey"> <div class="condition" :key="showKey">
<ul <IntegrationServiceOrder ref="integrationServiceOrderDom" v-if="
v-if="
selectCardsname === '融合服务' || selectCardsname === '赋能场景' selectCardsname === '融合服务' || selectCardsname === '赋能场景'
" "></IntegrationServiceOrder>
>
<li
v-for="(item, i) in orderList"
:key="item.value"
@click="changeOrder(i, item.value, item.orderType)"
>
{{ item.name }}
<span
class="arrow"
:class="item.orderType == 'ASC' ? 'down' : ''"
></span>
</li>
</ul>
<ul v-else> <ul v-else>
<li <li v-for="(item, i) in selList" :key="i" @click="changeCondition(item)" v-show="
v-for="item in selList"
:key="item.value"
@click="changeCondition(item.value)"
v-show="
item.show && item.show &&
item.name !== '评分' && item.name !== '评分' &&
selectCardsname !== '数据资源' selectCardsname !== '数据资源'
" ">
>
{{ item.name }} {{ item.name }}
<span <span class="arrow" :class="
class="arrow" orderObj.orderType == 'ASC' &&
:class="item.value == selData ? 'down' : ''" orderObj.orderField == item.value
></span> ? 'down'
: ''
"></span>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div <div class="result-list" v-for="(item, index) in resourceList.data" :key="item.index">
class="result-list"
v-for="(item, index) in resourceList.data"
:key="item.index"
>
<div class="item" :key="showKey"> <div class="item" :key="showKey">
<div <div class="left" style="display: flex; align-items: center" v-if="
class="left"
style="display: flex; align-items: center"
v-if="
item.type === '应用资源' && item.type === '应用资源' &&
item.infoList && item.infoList &&
item.infoList.filter((val) => val.attrType == '应用图片')[0] item.infoList.filter((val) => val.attrType == '应用图片')[0]
" ">
> <a-image :width="106" :preview="false" :src="
<a-image
:width="106"
:preview="false"
:src="
item.infoList.filter((val) => val.attrType == '应用图片')[0] item.infoList.filter((val) => val.attrType == '应用图片')[0]
.attrValue .attrValue
" " />
/>
</div> </div>
<div <div class="left" style="display: flex; align-items: center" v-else-if="
class="left"
style="display: flex; align-items: center"
v-else-if="
(selectCardsname === '融合服务' || (selectCardsname === '融合服务' ||
selectCardsname === '赋能场景') && selectCardsname === '赋能场景') &&
item.fuseAttrList && item.fuseAttrList &&
item.fuseAttrList.filter((val) => val.attrType == '服务图片')[0] item.fuseAttrList.filter((val) => val.attrType == '服务图片')[0]
" ">
> <a-image :width="106" :preview="false" :src="
<a-image
:width="106"
:preview="false"
:src="
item.fuseAttrList.filter((val) => val.attrType == '服务图片')[0] item.fuseAttrList.filter((val) => val.attrType == '服务图片')[0]
.attrValue .attrValue
" " />
/>
</div> </div>
<div <div class="left" :class="
class="left"
:class="
item.type == '应用资源' item.type == '应用资源'
? 'yyzy' ? 'yyzy'
: !item.type : !item.type
@ -117,55 +79,33 @@
.attrValue == '业务组件' .attrValue == '业务组件'
? 'ywzj' ? 'ywzj'
: '' : ''
" " @click="toView('details', item)" v-else-if="
@click="toView('details', item)"
v-else-if="
selectCardsname !== '基础设施' && selectCardsname !== '基础设施' &&
selectCardsname !== '融合服务' && selectCardsname !== '融合服务' &&
selectCardsname !== '赋能场景' selectCardsname !== '赋能场景'
" "></div>
></div>
<div class="left jcss" v-else-if="selectCardsname === '基础设施'"></div> <div class="left jcss" v-else-if="selectCardsname === '基础设施'"></div>
<div <div class="left rhfw" v-else-if="
class="left rhfw"
v-else-if="
selectCardsname === '融合服务' || selectCardsname === '赋能场景' selectCardsname === '融合服务' || selectCardsname === '赋能场景'
" "></div>
></div>
<div class="right" @click="toView('details', item)"> <div class="right" @click="toView('details', item)">
<div class="header"> <div class="header">
<span style="display: flex; align-items: center; width: 680px"> <span style="display: flex; align-items: center; width: 680px">
{{ item.name }} {{ item.name }}
<!-- 已申请--通过 --> <!-- 已申请--通过 -->
<svg <svg t="1652322568870" class="icon" viewBox="0 0 3072 1024" version="1.1"
t="1652322568870" xmlns="http://www.w3.org/2000/svg" p-id="3062" width="40" height="40" v-if="
class="icon"
viewBox="0 0 3072 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="3062"
width="40"
height="40"
v-if="
item.applyState == '已申请' && item.approveStatus == '通过' item.applyState == '已申请' && item.approveStatus == '通过'
" " style="margin-left: 10px; min-width: 40px">
style="margin-left: 10px; min-width: 40px"
>
<path <path
d="M2958.222222 0a113.777778 113.777778 0 0 1 113.777778 113.777778v796.444444a113.777778 113.777778 0 0 1-113.777778 113.777778H500.053333a113.777778 113.777778 0 0 1-85.617777-38.798222L32.824889 549.432889a56.888889 56.888889 0 0 1 0-74.922667L414.435556 38.798222A113.777778 113.777778 0 0 1 499.996444 0H2958.222222z m0 56.888889H500.053333a56.888889 56.888889 0 0 0-42.837333 19.399111L75.605333 512l381.610667 435.712a56.888889 56.888889 0 0 0 42.780444 19.399111H2958.222222a56.888889 56.888889 0 0 0 56.888889-56.888889V113.777778a56.888889 56.888889 0 0 0-56.888889-56.888889z" d="M2958.222222 0a113.777778 113.777778 0 0 1 113.777778 113.777778v796.444444a113.777778 113.777778 0 0 1-113.777778 113.777778H500.053333a113.777778 113.777778 0 0 1-85.617777-38.798222L32.824889 549.432889a56.888889 56.888889 0 0 1 0-74.922667L414.435556 38.798222A113.777778 113.777778 0 0 1 499.996444 0H2958.222222z m0 56.888889H500.053333a56.888889 56.888889 0 0 0-42.837333 19.399111L75.605333 512l381.610667 435.712a56.888889 56.888889 0 0 0 42.780444 19.399111H2958.222222a56.888889 56.888889 0 0 0 56.888889-56.888889V113.777778a56.888889 56.888889 0 0 0-56.888889-56.888889z"
fill="#d81e06" fill="#d81e06" p-id="3063"></path>
p-id="3063"
></path>
<path <path
d="M398.222222 398.222222a113.777778 113.777778 0 1 1 0 227.555556 113.777778 113.777778 0 0 1 0-227.555556z m0 56.888889a56.888889 56.888889 0 1 0 0 113.777778 56.888889 56.888889 0 0 0 0-113.777778z" d="M398.222222 398.222222a113.777778 113.777778 0 1 1 0 227.555556 113.777778 113.777778 0 0 1 0-227.555556z m0 56.888889a56.888889 56.888889 0 1 0 0 113.777778 56.888889 56.888889 0 0 0 0-113.777778z"
fill="#d81e06" fill="#d81e06" p-id="3064"></path>
p-id="3064"
></path>
<path <path
d="M1309.582222 491.064889v-273.066667h-505.173333v47.786667h455.338667v178.176h-378.88V342.926222h-49.152v358.4c0 55.978667 27.306667 84.650667 82.602666 84.650667h370.005334c28.672-1.365333 51.2-8.874667 66.218666-23.210667 16.384-17.749333 27.989333-68.266667 34.816-152.917333l-47.786666-15.018667-1.706667 26.737778c-4.664889 58.766222-12.970667 93.582222-24.917333 104.334222-10.24 8.192-23.893333 12.288-40.277334 12.288h-342.698666c-31.402667 0-47.104-15.701333-47.104-45.738666v-201.386667h428.714666z m430.08-307.2v102.4h-219.136v386.389333h48.469334v-46.421333h170.666666v178.858667h50.517334v-178.858667h167.936v41.642667h48.469333V286.264889h-216.405333v-102.4h-50.517334z m-170.666666 395.946667v-102.4h170.666666v102.4h-170.666666z m221.184 0v-102.4h167.936v102.4h-167.936z m-221.184-146.773334V332.003556h170.666666v101.034666h-170.666666z m221.184 0V332.003556h167.936v101.034666h-167.936z m733.866666-251.221333v44.373333h-165.205333v40.277334h165.205333v45.738666h-137.898666v39.594667h137.898666V398.222222h-184.32v40.96h417.792V398.222222h-186.368v-46.421333h144.725334v-39.594667h-144.725334v-45.738666h169.301334v-40.277334h-169.301334v-44.373333h-47.104z m-85.333333 429.397333h220.501333v49.834667h-220.501333v-49.834667z m220.501333-38.229333h-220.501333v-50.517333h220.501333v50.517333z m-220.501333 126.293333h220.501333v38.912c0 15.701333-8.874667 23.893333-25.258666 23.893334l-54.613334-2.048 11.605334 43.690666h57.344c38.229333 0 58.026667-18.432 58.026666-55.296v-266.24H2391.608889V807.822222h47.104v-108.544z m-222.549333-509.952l-34.816 33.450667c49.152 36.864 88.064 71.68 116.736 104.448l33.450666-34.133333a795.079111 795.079111 0 0 0-115.370666-103.765334z m-82.602667 201.386667h144.725333v299.690667c20.48-19.114667 41.642667-40.277333 64.853334-64.170667l12.970666 51.882667a923.932444 923.932444 0 0 1-121.514666 105.813333l-19.114667-43.690667c10.24-9.557333 15.701333-19.797333 15.701333-31.402666V437.816889h-97.621333v-47.104z" d="M1309.582222 491.064889v-273.066667h-505.173333v47.786667h455.338667v178.176h-378.88V342.926222h-49.152v358.4c0 55.978667 27.306667 84.650667 82.602666 84.650667h370.005334c28.672-1.365333 51.2-8.874667 66.218666-23.210667 16.384-17.749333 27.989333-68.266667 34.816-152.917333l-47.786666-15.018667-1.706667 26.737778c-4.664889 58.766222-12.970667 93.582222-24.917333 104.334222-10.24 8.192-23.893333 12.288-40.277334 12.288h-342.698666c-31.402667 0-47.104-15.701333-47.104-45.738666v-201.386667h428.714666z m430.08-307.2v102.4h-219.136v386.389333h48.469334v-46.421333h170.666666v178.858667h50.517334v-178.858667h167.936v41.642667h48.469333V286.264889h-216.405333v-102.4h-50.517334z m-170.666666 395.946667v-102.4h170.666666v102.4h-170.666666z m221.184 0v-102.4h167.936v102.4h-167.936z m-221.184-146.773334V332.003556h170.666666v101.034666h-170.666666z m221.184 0V332.003556h167.936v101.034666h-167.936z m733.866666-251.221333v44.373333h-165.205333v40.277334h165.205333v45.738666h-137.898666v39.594667h137.898666V398.222222h-184.32v40.96h417.792V398.222222h-186.368v-46.421333h144.725334v-39.594667h-144.725334v-45.738666h169.301334v-40.277334h-169.301334v-44.373333h-47.104z m-85.333333 429.397333h220.501333v49.834667h-220.501333v-49.834667z m220.501333-38.229333h-220.501333v-50.517333h220.501333v50.517333z m-220.501333 126.293333h220.501333v38.912c0 15.701333-8.874667 23.893333-25.258666 23.893334l-54.613334-2.048 11.605334 43.690666h57.344c38.229333 0 58.026667-18.432 58.026666-55.296v-266.24H2391.608889V807.822222h47.104v-108.544z m-222.549333-509.952l-34.816 33.450667c49.152 36.864 88.064 71.68 116.736 104.448l33.450666-34.133333a795.079111 795.079111 0 0 0-115.370666-103.765334z m-82.602667 201.386667h144.725333v299.690667c20.48-19.114667 41.642667-40.277333 64.853334-64.170667l12.970666 51.882667a923.932444 923.932444 0 0 1-121.514666 105.813333l-19.114667-43.690667c10.24-9.557333 15.701333-19.797333 15.701333-31.402666V437.816889h-97.621333v-47.104z"
fill="#d81e06" fill="#d81e06" p-id="3065"></path>
p-id="3065"
></path>
</svg> </svg>
<!-- 审核中 --> <!-- 审核中 -->
<!-- <svg <!-- <svg
@ -211,28 +151,19 @@
</span> --> </span> -->
</span> </span>
<div class="header-right"> <div class="header-right">
<div <div v-if="
v-if="
selectCardsname === '融合服务' || selectCardsname === '融合服务' ||
selectCardsname === '赋能场景' selectCardsname === '赋能场景'
" " class="label-content">
class="label-content" <template v-if="
>
<template
v-if="
item.fuseAttrList && item.fuseAttrList &&
item.fuseAttrList.filter( item.fuseAttrList.filter(
(val) => val.attrType == '应用领域' (val) => val.attrType == '应用领域'
)[0] )[0]
" ">
> <span class="label" v-for="(data, index) in item.fuseAttrList
<span
class="label"
v-for="(data, index) in item.fuseAttrList
.filter((val) => val.attrType == '应用领域')[0] .filter((val) => val.attrType == '应用领域')[0]
.attrValue.split(';')" .attrValue.split(';')" :key="index">
:key="index"
>
{{ data }} {{ data }}
</span> </span>
</template> </template>
@ -250,21 +181,15 @@
</div> </div>
</div> </div>
<div class="dec"> <div class="dec">
<div <div v-if="
v-if="
selectCardsname !== '融合服务' && selectCardsname !== '融合服务' &&
selectCardsname !== '赋能场景' && selectCardsname !== '赋能场景' &&
selectCardsname !== '基础设施' selectCardsname !== '基础设施'
" ">
>
<span>{{ item.deptName || '--' }}</span> <span>{{ item.deptName || '--' }}</span>
</div> </div>
</div> </div>
<div <div v-if="selectCardsname !== '基础设施'" style="margin-top: 0.1rem" class="description">
v-if="selectCardsname !== '基础设施'"
style="margin-top: 0.1rem"
class="description"
>
<a-tooltip> <a-tooltip>
<template #title>{{ item.description }}</template> <template #title>{{ item.description }}</template>
{{ item.description || '--' }} {{ item.description || '--' }}
@ -273,32 +198,26 @@
<div class="btn"> <div class="btn">
<div class="bottom" v-if="selectCardsname !== '基础设施'"> <div class="bottom" v-if="selectCardsname !== '基础设施'">
<div> <div>
<div <div v-if="
v-if="
selectCardsname !== '数据资源' && selectCardsname !== '数据资源' &&
selectCardsname !== '融合服务' && selectCardsname !== '融合服务' &&
selectCardsname !== '赋能场景' selectCardsname !== '赋能场景'
" ">
>
浏览量{{ item.visits || 0 }} 浏览量{{ item.visits || 0 }}
</div> </div>
<div <div v-if="
v-if="
selectCardsname !== '数据资源' && selectCardsname !== '数据资源' &&
selectCardsname !== '融合服务' && selectCardsname !== '融合服务' &&
selectCardsname !== '赋能场景' && selectCardsname !== '赋能场景' &&
(selectCardsname !== '应用资源' || whoShow1.itShowQingDao) (selectCardsname !== '应用资源' || whoShow1.itShowQingDao)
" ">
>
申请量{{ item.applyCount || 0 }} 申请量{{ item.applyCount || 0 }}
</div> </div>
<div <div v-if="
v-if="
selectCardsname === '数据资源' && selectCardsname === '数据资源' &&
selectCardsname !== '融合服务' && selectCardsname !== '融合服务' &&
selectCardsname !== '赋能场景' selectCardsname !== '赋能场景'
" ">
>
数据量{{ item.sjlCount || 0 }} 数据量{{ item.sjlCount || 0 }}
</div> </div>
<div v-if="selectCardsname !== '数据资源'"> <div v-if="selectCardsname !== '数据资源'">
@ -308,75 +227,39 @@
</div> </div>
<div class="right" v-if="selectCardsname !== '基础设施'"> <div class="right" v-if="selectCardsname !== '基础设施'">
<div class="shopping" :key="shoppingKey"> <div class="shopping" :key="shoppingKey">
<template <template v-if="
v-if="
(selectCardsname == '组件服务' && (selectCardsname == '组件服务' &&
item.infoList.filter( item.infoList.filter(
(val) => val.attrType == '外部服务地址' (val) => val.attrType == '外部服务地址'
).length === 0) || ).length === 0) ||
(selectCardsname == '应用资源' && whoShow1.itShowQingDao) (selectCardsname == '应用资源' && whoShow1.itShowQingDao)
" ">
> <span class="shopping-down" v-if="item.isInShoppingCart"></span>
<span <span class="shopping-on" v-else @click.stop="addShoppingCart(item, index)"></span>
class="shopping-down"
v-if="item.isInShoppingCart"
></span>
<span
class="shopping-on"
v-else
@click.stop="addShoppingCart(item, index)"
></span>
</template> </template>
</div> </div>
<div class="sc"> <div class="sc">
<span <span class="sc-down" v-if="item.isCollect == 'false'" @click.stop="addCollect(item)"></span>
class="sc-down" <span class="sc-on" v-if="item.isCollect == 'true'" @click.stop="addCollect(item)"></span>
v-if="item.isCollect == 'false'"
@click.stop="addCollect(item)"
></span>
<span
class="sc-on"
v-if="item.isCollect == 'true'"
@click.stop="addCollect(item)"
></span>
</div> </div>
<div <div class="shopping pk" :key="pk" v-show="
class="shopping pk"
:key="pk"
v-show="
cardType == '组件服务' && findComponentName(item, '智能算法') cardType == '组件服务' && findComponentName(item, '智能算法')
" ">
> <span class="pk-on" @click.stop="goComparePk(item, index)"></span>
<span
class="pk-on"
@click.stop="goComparePk(item, index)"
></span>
</div> </div>
<a-button <a-button type="primary" @click.stop="toView('details', item)" v-if="!whoShow1.itShowBaoTou">
type="primary"
@click.stop="toView('details', item)"
v-if="!whoShow1.itShowBaoTou"
>
查看详情 查看详情
</a-button> </a-button>
<a-button <a-button style="margin-left: 10px" v-show="
style="margin-left: 10px"
v-show="
selectCardsname === '融合服务' || selectCardsname === '融合服务' ||
selectCardsname === '赋能场景' selectCardsname === '赋能场景'
" " @click.stop="handleAKeyApplication(item)">
@click.stop="handleAKeyApplication(item)"
>
一键申请 一键申请
</a-button> </a-button>
<a-button <a-button type="primary" @click.stop="toView('apply', item)" v-show="
type="primary"
@click.stop="toView('apply', item)"
v-show="
cardType == '组件服务' || cardType == '组件服务' ||
(cardType == '应用资源' && whoShow1.itShowQingDao) (cardType == '应用资源' && whoShow1.itShowQingDao)
" ">
>
{{ {{
item.shareCondition == '免批申请' ? '免批申请' : '立即申请' item.shareCondition == '免批申请' ? '免批申请' : '立即申请'
}} }}
@ -391,12 +274,7 @@
</div> </div>
</div> </div>
</div> </div>
<a-modal <a-modal v-model:visible="visible" title="视频预览" :width="750" destroyOnClose>
v-model:visible="visible"
title="视频预览"
:width="750"
destroyOnClose
>
<template #footer></template> <template #footer></template>
<div style="width: 100%; display: flex; justify-content: center"> <div style="width: 100%; display: flex; justify-content: center">
<div style="width: 100%; height: 100%"> <div style="width: 100%; height: 100%">
@ -407,20 +285,21 @@
</div> </div>
</template> </template>
<script> <script>
import { ref, reactive } from 'vue' import { ref, reactive } from 'vue'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { getUser, sgcInsert } from '@/api/home' import { getUser, sgcInsert } from '@/api/home'
import { scInsert, scDel } from '@/api/personalCenter' import { scInsert, scDel } from '@/api/personalCenter'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
import { getHls } from '@/api/home.js' import { getHls } from '@/api/home.js'
export default { import IntegrationServiceOrder from './integrationServiceOrder.vue';
import ComponentServiceTag from './ComponentServiceTag.vue';
export default {
name: '', name: '',
// props: ['resourceList', 'resourceTotal', 'selectCardsname'],
props: { props: {
resourceList: { resourceList: {
type: Object, type: Object,
default: () => {}, default: () => { },
}, },
resourceTotal: { resourceTotal: {
type: String, type: String,
@ -428,116 +307,22 @@
}, },
selectCardsname: { selectCardsname: {
type: String, type: String,
default: '组件服务', default: '应用资源',
}, },
}, },
computed: { components: {
dataList() { IntegrationServiceOrder,
const newArr = [] ComponentServiceTag,
for (let i = 0; i < this.resourceList.data.length; i++) {
let arr = [
{
name: '应用名称',
value: '',
}, },
{ setup(props, context) {
name: '应用ID',
value: '',
dataResourceId: '',
},
{
name: '应用领域',
value: '',
},
{
name: '组件类型',
value: '',
},
{
name: '技术领域',
value: '',
},
{
name: '共享类型',
value: '',
},
{
name: '共享条件',
value: '',
},
]
arr.map((item) => {
if (item.name === '应用名称') {
item.value = this.resourceList.data[i].name
}
if (item.name === '应用ID') {
item.value = this.resourceList.data[i].id
item.dataResourceId =
this.resourceList.data[i].infoList[0].dataResourceId
}
if (item.name === '应用领域') {
this.resourceList.data[i].infoList.map((aa) => {
aa.attrType === '应用领域' ? (item.value = aa.attrValue) : ''
})
}
if (item.name === '组件类型') {
this.resourceList.data[i].infoList.map((aa) => {
aa.attrType === '组件类型' ? (item.value = aa.attrValue) : ''
})
}
if (item.name === '技术领域') {
this.resourceList.data[i].infoList.map((aa) => {
aa.attrType === '技术领域' ? (item.value = aa.attrValue) : ''
})
}
if (item.name === '共享类型') {
this.resourceList.data[i].infoList.map((aa) => {
aa.attrType === '共享类型' ? (item.value = aa.attrValue) : ''
})
}
if (item.name === '共享条件') {
this.resourceList.data[i].infoList.map((aa) => {
aa.attrType === '共享条件' ? (item.value = aa.attrValue) : ''
})
}
})
newArr.push(arr)
}
console.log(
'dataList======================>',
newArr,
this.resourceList
)
return newArr
},
isShoppingCartOrNot() {
return ''
},
},
components: {},
setup(props) {
// eslint-disable-next-line no-undef
const whoShow1 = whoShow const whoShow1 = whoShow
const showKey = ref(0) const showKey = ref(0)
let shoppingKey = ref(1) let shoppingKey = ref(1)
// let orderObj = reactive({
const orderList = ref([ orderField: '',
{ orderType: '',
value: 'collectCount', })
name: '收藏量', const integrationServiceOrderDom = ref(null)
orderType: 'DESC',
},
{
value: 'create_date',
name: '发布时间',
orderType: 'DESC',
},
{
value: 'update_date',
name: '更新时间',
orderType: 'DESC',
},
])
// id // id
const selList = ref([ const selList = ref([
{ name: '发布时间', value: 'tdr.create_date', show: true }, { name: '发布时间', value: 'tdr.create_date', show: true },
@ -546,6 +331,10 @@
{ name: '收藏量', value: 'collectCount', show: true }, { name: '收藏量', value: 'collectCount', show: true },
{ name: '评分', value: 'score', show: true }, { name: '评分', value: 'score', show: true },
]) ])
// 西-
if (whoShow1.itShowXiHaiAn) {
selList.value = selList.value.filter(v => v.name !== '浏览量')
}
if (props.selectCardsname === '基础设施') { if (props.selectCardsname === '基础设施') {
selList.value.map((val) => (val.show = false)) selList.value.map((val) => (val.show = false))
} else if (props.selectCardsname === '数据资源') { } else if (props.selectCardsname === '数据资源') {
@ -562,6 +351,14 @@
}) })
} }
} }
// 西----
const showTagArray = ['已落地', '需要计算支持']
const getTagList = (item) => {
let _arr = item.infoList.filter((x) => showTagArray.includes(x.attrValue)) || []
let tagArray = _arr.map(v => v.attrValue)
return tagArray
}
console.log('this.resourceList', props.resourceList.data) console.log('this.resourceList', props.resourceList.data)
props.resourceList.data.map((val) => { props.resourceList.data.map((val) => {
if (val.infoList) { if (val.infoList) {
@ -604,7 +401,6 @@
console.log('or use this.value', searchValue.value) console.log('or use this.value', searchValue.value)
} }
function toView(type, item) { function toView(type, item) {
debugger
if (props.selectCardsname == '数据资源') { if (props.selectCardsname == '数据资源') {
if (whoShow1.itShowQingDao) { if (whoShow1.itShowQingDao) {
window.open( window.open(
@ -617,6 +413,7 @@
) )
} }
} else if (props.selectCardsname === '融合服务') { } else if (props.selectCardsname === '融合服务') {
context.emit('saveSearchCodition')
// //
router.push({ router.push({
path: '/packagingDetails', path: '/packagingDetails',
@ -683,11 +480,7 @@
}) })
} }
} else { } else {
console.log( context.emit('saveSearchCodition')
'111111111111111111===========>',
router,
props.selectCardsname
)
router.push({ router.push({
path: '/details', path: '/details',
query: { query: {
@ -749,29 +542,28 @@
} }
} }
} }
//
const changeCondition = (val) => {
selData.value = selData.value == val ? 'total' : val
const orderType = selData.value == val ? 'ASC' : 'DESC'
mybus.emit('changeCondition', {
orderField: val,
orderType: orderType,
})
console.log('选择===========》', val, selData.value)
}
// -- /**
const changeOrder = (i, val, type) => { * val: 排序字段值
let newType = type === 'DESC' ? 'ASC' : 'DESC' * isFromFather: 是否来自父组件传值
orderList.value[i].orderType = newType */
mybus.emit('changeCondition', { const changeCondition = (item, isFromFather = false) => {
orderField: val, console.log('item, isFromFather------------>', item, isFromFather);
orderType: newType, let newType = item.orderType == 'DESC' ? 'ASC' : 'DESC';
}) if (isFromFather) {
newType = item.orderType;
}
orderObj.orderField = item.value;
orderObj.orderType = newType;
let _index = selList.value.findIndex(x => x.value == item.value)
if (_index > -1) {
selList.value[_index].orderType = newType
}
selList.value = selList.value.splice(0);
mybus.emit('changeCondition', orderObj)
} }
// -- // --
//
const handleAKeyApplication = (item) => { const handleAKeyApplication = (item) => {
let _applyList = [] let _applyList = []
let fuseResourceList = item.fuseResourceList || [] let fuseResourceList = item.fuseResourceList || []
@ -802,7 +594,6 @@
} }
otherArray.map((v) => { otherArray.map((v) => {
let resource = v.resource || {} let resource = v.resource || {}
console.log('resource------------>', resource)
let obj = { let obj = {
arr: [ arr: [
{ {
@ -823,64 +614,25 @@
localStorage.setItem('applyList', JSON.stringify(_applyList)) localStorage.setItem('applyList', JSON.stringify(_applyList))
router.push({ router.push({
path: '/apply', path: '/apply',
query: {
integrationServicesId: item.id,
},
}) })
} }
// const handleAKeyApplication = (item) => {
// let _applyList = []
// ; (item.fuseResourceList || []).map((v) => {
// let resource = v.resource || {}
// let obj = {
// arr: [
// {
// delFlag: resource.delFlag,
// description: resource.description,
// resourceId: resource.id,
// resourceName: resource.name,
// time: resource.createDate,
// type: resource.type,
// },
// ],
// deptId: resource.deptId,
// deptName: resource.deptName,
// }
// _applyList.push(obj)
// })
// localStorage.setItem('applyList', JSON.stringify(_applyList))
// router.push({
// path: '/apply',
// })
// }
mybus.on('chongzhi', (typeObj) => { mybus.on('chongzhi', (typeObj) => {
console.log('typeObj------------>', typeObj)
if (!typeObj) { if (!typeObj) {
selData.value = 'total' selData.value = 'total'
} }
if ( if (
typeObj && typeObj &&
(typeObj.type === '融合服务' || typeObj.type === '赋能场景') (typeObj.type === '融合服务' || typeObj.type === '打包模式')
) { ) {
orderList.value = [ integrationServiceOrderDom.value.reset &&
{ integrationServiceOrderDom.value.reset()
value: 'collectCount',
name: '收藏量',
orderType: 'DESC',
},
{
value: 'create_date',
name: '发布时间',
orderType: 'DESC',
},
{
value: 'update_date',
name: '更新时间',
orderType: 'DESC',
},
]
} }
}) })
let videoUrl = ref('') let videoUrl = ref('')
const options = reactive({ const options = reactive({
width: '700px', // width: '700px', //
@ -951,19 +703,20 @@
goComparePk, goComparePk,
whoShow1, whoShow1,
showKey, showKey,
orderList,
handleAKeyApplication, handleAKeyApplication,
changeOrder, integrationServiceOrderDom,
orderObj,
getTagList,
} }
}, },
beforeUnmount() { beforeUnmount() {
mybus.off('chongzhi') mybus.off('chongzhi')
// mybus.emit('changeSelcted') // mybus.emit('changeSelcted')
}, },
} }
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
#search-result-list-container { #search-result-list-container {
width: 1088px; width: 1088px;
padding: 0 20px; padding: 0 20px;
background: #f3f5f9; background: #f3f5f9;
@ -1296,11 +1049,11 @@
margin-top: 10px; margin-top: 10px;
align-items: center; align-items: center;
& > div { &>div {
display: flex; display: flex;
align-items: center; align-items: center;
& > div { &>div {
margin: 0 10px; margin: 0 10px;
} }
} }
@ -1327,9 +1080,9 @@
margin-top: 0; margin-top: 0;
} }
} }
} }
.description { .description {
max-width: 990px; max-width: 990px;
height: 52px; height: 52px;
font-size: 14px; font-size: 14px;
@ -1343,5 +1096,5 @@
/*超出显示为省略号*/ /*超出显示为省略号*/
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
word-break: break-all; word-break: break-all;
} }
</style> </style>

View File

@ -1,12 +1,12 @@
export const titleNameArray = [ export const titleNameArray = [
{
photo: require('@/assets/newHome/banner-zj.png'),
name: '组件服务',
},
{ {
photo: require('@/assets/newHome/banner-yy.png'), photo: require('@/assets/newHome/banner-yy.png'),
name: '应用资源', name: '应用资源',
}, },
{
photo: require('@/assets/newHome/banner-zj.png'),
name: '组件服务',
},
{ {
photo: require('@/assets/newHome/banner-jc.png'), photo: require('@/assets/newHome/banner-jc.png'),
name: '基础设施', name: '基础设施',

View File

@ -0,0 +1,34 @@
<template>
<div class="detail-back" @click="previousPage" :style="{ color: textColor }">
</div>
</template>
<script setup>
import { reactive, ref, watch, defineProps } from 'vue'
import { useRouter } from 'vue-router'
const router = useRouter()
console.log('router------------>', router)
const props = defineProps({
textColor: { type: String, default: '' },
})
const previousPage = () => {
window.history.go(-1)
}
</script>
<style scoped lang="less">
.detail-back {
position: absolute;
top: 0.85rem;
left: 100px;
font-size: 0.18rem;
color: #fff;
cursor: pointer;
width: 50px;
height: 50px;
background-image: url('~@/assets/detailsAll/back.png');
background-size: 100% 100%;
}
</style>

View File

@ -9,6 +9,7 @@
<div> <div>
<div id="apply-container"> <div id="apply-container">
<home-header :showView="showView"></home-header> <home-header :showView="showView"></home-header>
<detail-back></detail-back>
<details-view v-if="showView === 'details-view'"></details-view> <details-view v-if="showView === 'details-view'"></details-view>
<algorithm-details <algorithm-details
v-else-if="showView === 'algorithm-details'" v-else-if="showView === 'algorithm-details'"
@ -38,6 +39,7 @@
import DeveloperComponents from '@/views/detailsAll/DeveloperComponents' import DeveloperComponents from '@/views/detailsAll/DeveloperComponents'
import BusinessDetails from '@/views/detailsAll/BusinessDetails' import BusinessDetails from '@/views/detailsAll/BusinessDetails'
import LayerService from '@/views/detailsAll/LayerService' import LayerService from '@/views/detailsAll/LayerService'
import detailBack from '@/views/home/detailBack.vue'
import { selectOne } from '@/api/home' import { selectOne } from '@/api/home'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
export default defineComponent({ export default defineComponent({
@ -52,6 +54,7 @@
DeveloperComponents, DeveloperComponents,
BusinessDetails, BusinessDetails,
LayerService, LayerService,
detailBack
}, },
setup() { setup() {
const formState = reactive({ const formState = reactive({
@ -163,6 +166,7 @@
} }
} }
init() init()
return { return {
formState, formState,
options, options,

View File

@ -100,6 +100,8 @@
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { UpOutlined, DownOutlined } from '@ant-design/icons-vue' import { UpOutlined, DownOutlined } from '@ant-design/icons-vue'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
export default defineComponent({ export default defineComponent({
setup() { setup() {
const selectedKeys = ref([]) const selectedKeys = ref([])
@ -118,7 +120,7 @@
'router.currentRoute.value.query.select', 'router.currentRoute.value.query.select',
router.currentRoute.value.query.select router.currentRoute.value.query.select
) )
let select = router.currentRoute.value.query.select let select = router.currentRoute.value.query.select || DETAIL_PAGE_CONTENT_DEFAULT_TAB
if (select === '123') { if (select === '123') {
select = '' select = ''
} }

File diff suppressed because it is too large Load Diff

View File

@ -5,13 +5,8 @@
<div class="top"> <div class="top">
<div class="top-title"> <div class="top-title">
全部 全部
<div <div v-for="(item, index) in titleName" :key="index" class="tabAll" @click="changeCards(index)"
v-for="(item, index) in titleName" :class="{ sel: index == number }">
:key="index"
class="tabAll"
@click="changeCards(index)"
:class="{ sel: index == number }"
>
<span> <span>
{{ item.name === '赋能场景' ? '典型赋能场景' : '打包模式' }} {{ item.name === '赋能场景' ? '典型赋能场景' : '打包模式' }}
</span> </span>
@ -20,54 +15,26 @@
<div class="resultListSearchInput-father" v-if="number === 0"> <div class="resultListSearchInput-father" v-if="number === 0">
<div class="resultListSearchInput-son"> <div class="resultListSearchInput-son">
模糊搜索 模糊搜索
<a-input-search <a-input-search v-model:value="searchValue" placeholder="请输入关键词" enter-button="搜索" size="large"
v-model:value="searchValue" @search="getIntegrationList" @change="onSearch" class="resultListSearchInput" />
placeholder="请输入关键词" <button class="button-reset" @click="resetAction()">重置</button>
enter-button="搜索"
size="large"
@search="getAppResources"
@change="onSearch"
class="resultListSearchInput"
/>
<button class="button-reset" @click="chongzhi()">重置</button>
<div class="hengxian"></div> <div class="hengxian"></div>
</div> </div>
</div> </div>
<div v-loading="loadingData"> <div v-loading="loadingData">
<searchResultList <searchResultList v-if="number === 0" v-show="resourceList.data && resourceList.data.length > 0"
v-if="number === 0" :resourceList="resourceList" :resourceTotal="resourceTotal" @saveSearchCodition="saveSearchCodition"
v-show="resourceList.data && resourceList.data.length > 0" ref="searchResultListDom" :selectCardsname="number == 0 ? '融合服务' : '赋能场景'" />
:key="listKey2" <CanAssignCase v-else v-show="resourceList.data && resourceList.data.length > 0" :resourceList="resourceList"
:resourceList="resourceList" @saveSearchCodition="saveSearchCodition" :resourceTotal="resourceTotal"
:resourceTotal="resourceTotal" :selectCardsname="number == 0 ? '融合服务' : '赋能场景'" />
:selectCardsname="number == 0 ? '融合服务' : '赋能场景'"
/>
<CanAssignCase
v-else
v-show="resourceList.data && resourceList.data.length > 0"
:key="listKey2"
:resourceList="resourceList"
:resourceTotal="resourceTotal"
:selectCardsname="number == 0 ? '融合服务' : '赋能场景'"
/>
<div class="pagination"> <div class="pagination">
<a-pagination <a-pagination v-if="resourceList.data && resourceList.data.length > 0" v-model:current="currentPage"
v-if="resourceList.data && resourceList.data.length > 0" v-model:pageSize="currentPageSize" show-size-changer show-less-items show-quick-jumper
v-model:current="currentPage" :total="resourceTotal" :page-size-options="pageSizeOptions" @change="pageChange"
v-model:pageSize="currentPageSize" @showSizeChange="onShowSizeChange" />
show-size-changer
show-less-items
show-quick-jumper
:total="resourceTotal"
:page-size-options="pageSizeOptions"
@change="pageChange"
@showSizeChange="onShowSizeChange"
/>
</div> </div>
<div <div v-if="resourceList.data && resourceList.data.length <= 0" style="margin-top: 2rem">
v-if="resourceList.data && resourceList.data.length <= 0"
style="margin-top: 2rem"
>
<a-empty /> <a-empty />
</div> </div>
</div> </div>
@ -76,31 +43,38 @@
<home-footer></home-footer> <home-footer></home-footer>
</template> </template>
<script> <script>
import HomeFooter from '@/views/newHome/components/Footer' import HomeFooter from '@/views/newHome/components/Footer'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
import { defineComponent, reactive, ref, toRefs, onMounted, watch } from 'vue' import { defineComponent, reactive, ref, toRefs, onMounted, nextTick } from 'vue'
import { getIntegrationServicesList } from '@/api/home.js'
import { useRouter } from 'vue-router'
import HomeHeader from '@/views/home/components/header'
import searchResultList from '@/views/home/components/searchResultList.vue'
import CanAssignCase from '@/views/home/components/CanAssignCase.vue'
import { message } from 'ant-design-vue'
import { getIntegrationServicesList } from '@/api/home.js' export default defineComponent({
import { useRouter } from 'vue-router' beforeRouteLeave(to, from, next) {
import HomeHeader from '@/views/home/components/header' console.log('to---integrationServices--beforeRouteLeave------->', to)
import searchResultList from '@/views/home/components/searchResultList.vue' console.log('from---integrationServices--beforeRouteLeave------->', from)
import CanAssignCase from '@/views/home/components/CanAssignCase.vue' console.log('next---integrationServices--beforeRouteLeave------->', next)
import { message } from 'ant-design-vue' if (to.name !== 'packagingDetails' && to.name !== 'integrationServicesDetails') {
localStorage.removeItem('integrationServices')
export default defineComponent({ }
next()
},
setup() { setup() {
// //
const loading = ref(true) const loading = ref(true)
const currentPage = ref(1) const currentPage = ref(1)
const currentPageSize = ref(5) const currentPageSize = ref(5)
const pageSizeOptions = ref(['5', '10', '20', '50']) const pageSizeOptions = ref(['2', '5', '10', '20', '50'])
const router = useRouter() const router = useRouter()
const select = router.currentRoute.value.query.select const select = router.currentRoute.value.query.select
const searchValue = ref('') const searchValue = ref('')
const Cardsname = ref(select) const Cardsname = ref(select)
const resourceList = reactive({ data: [] }) const resourceList = reactive({ data: [] })
const resourceTotal = ref(0) const resourceTotal = ref(0)
const current = ref(1)
const loadingData = ref(false) const loadingData = ref(false)
// //
const titleName = ref([ const titleName = ref([
@ -111,80 +85,84 @@
name: '赋能场景', name: '赋能场景',
}, },
]) ])
const number = ref(0) const number = ref(0)
//
let listKey = ref(0)
//
const listKey2 = ref(0)
// //
const paramsGetResources = { const paramsGetResources = {
pageNum: 1, page: currentPage.value,
pageSize: currentPageSize.value, limit: currentPageSize.value,
type: titleName.value[number.value].name, type: titleName.value[number.value].name,
name: '', name: searchValue.value,
orderField: 'create_date', // total visits 访 applyCount score collectCount orderField: 'create_date',
orderType: 'DESC', // ASC DESC orderType: 'DESC', // ASC DESC
} }
const searchResultListDom = ref(null)
const storageSearchInfo = JSON.parse(localStorage.getItem('integrationServices'))
//
const handleSetSearchData = () => {
if (storageSearchInfo) {
number.value = storageSearchInfo.type == '打包模式' ? 0 : 1;
//
searchValue.value = storageSearchInfo.name;
currentPage.value = storageSearchInfo.page;
currentPageSize.value = storageSearchInfo.limit;
paramsGetResources.limit = storageSearchInfo.limit;
paramsGetResources.page = storageSearchInfo.page;
paramsGetResources.type = storageSearchInfo.type;
// 使
nextTick(() => {
searchResultListDom.value && searchResultListDom.value.changeCondition && searchResultListDom.value.changeCondition({
value: storageSearchInfo.orderField,
orderType: storageSearchInfo.orderType,
}, true)
})
getIntegrationList()
}
}
const changeCards = (val) => { const changeCards = (val) => {
console.log(val) //
number.value = val number.value = val;
chongzhi() paramsGetResources.type = titleName.value[number.value].name;
resetAction()
} }
// //
const onSearch = () => { const onSearch = () => {
loading.value = true
currentPage.value = 1 currentPage.value = 1
getIntegrationList()
} }
// //
const chongzhi = () => { const resetAction = () => {
loading.value = true
// //
searchValue.value = '' searchValue.value = ''
// //
currentPage.value = 1 currentPage.value = 1
currentPageSize.value = 5 currentPageSize.value = 5
// //
paramsGetResources.pageNum = 1 paramsGetResources.page = 1
paramsGetResources.pageSize = 5 paramsGetResources.limit = 5
paramsGetResources.orderField = 'create_date' paramsGetResources.orderField = 'create_date'
paramsGetResources.orderType = 'DESC' paramsGetResources.orderType = 'DESC'
mybus.emit('chongzhi', {
mybus.emit('resetAction', {
type: titleName.value[number.value].name, type: titleName.value[number.value].name,
}) })
getAppResources()
}
const getAppResources = () => {
getIntegrationList() getIntegrationList()
} }
// //
const getIntegrationList = () => { const getIntegrationList = () => {
loadingData.value = true loadingData.value = true
console.log('获取融合服务列表------------>') paramsGetResources.name = searchValue.value;
let postData = { console.log('paramsGetResources------参数下发------>', paramsGetResources);
limit: currentPageSize.value, getIntegrationServicesList(paramsGetResources).then(
page: currentPage.value,
orderField: paramsGetResources.orderField,
orderType: paramsGetResources.orderType,
name: searchValue.value,
type: titleName.value[number.value].name,
}
getIntegrationServicesList(postData).then(
(res) => { (res) => {
loadingData.value = false loadingData.value = false
if (res.data.code !== 0) { if (res.data.code !== 0) {
return message.error(res.data.msg) return message.error(res.data.msg)
} }
console.log('res.data------------>', res.data)
resourceList.data = res.data.data.list || [] resourceList.data = res.data.data.list || []
resourceTotal.value = res.data.data.total || 0 resourceTotal.value = res.data.data.total || 0
listKey2.value++
}, },
(err) => { (err) => {
loadingData.value = false loadingData.value = false
@ -199,75 +177,81 @@
} else { } else {
delete paramsGetResources.deptIds delete paramsGetResources.deptIds
} }
getAppResources() getIntegrationList()
console.log('paramsGetResources', paramsGetResources)
}) })
mybus.on('changePage', (page) => { mybus.on('changePage', (page) => {
paramsGetResources.pageNum = page paramsGetResources.page = page
getAppResources('分页查询') getIntegrationList()
}) })
mybus.on('changeSelcted', () => { mybus.on('changeSelcted', () => {
getAppResources() getIntegrationList()
}) })
mybus.on('refresh', () => { mybus.on('refresh', () => {
paramsGetResources.pageNum = 1 paramsGetResources.page = 1
currentPage.value = 1 currentPage.value = 1
getAppResources() getIntegrationList()
}) })
mybus.on('changeCondition', (condition) => { mybus.on('changeCondition', (condition) => {
paramsGetResources.orderField = condition.orderField paramsGetResources.orderField = condition.orderField
paramsGetResources.orderType = condition.orderType paramsGetResources.orderType = condition.orderType
getAppResources() getIntegrationList()
}) })
const pageChange = (val) => { const pageChange = (val) => {
console.log(val)
loading.value = true
currentPage.value = val currentPage.value = val
paramsGetResources.pageNum = val paramsGetResources.page = val
let params = '分页查询' // getIntegrationList() //
getAppResources(params)
} }
onMounted(() => {
console.log('222----onMounted-------->', 222)
listKey2.value++
getAppResources()
})
// //
const onShowSizeChange = (current, pageSize) => { const onShowSizeChange = (current, pageSize) => {
currentPage.value = current currentPage.value = current
currentPageSize.value = pageSize currentPageSize.value = pageSize
paramsGetResources.pageNum = current paramsGetResources.page = current
paramsGetResources.pageSize = pageSize paramsGetResources.limit = pageSize
getAppResources() getIntegrationList()
}
//
const saveSearchCodition = (n) => {
console.log('融合服务-----存储查询条件到本地------->', paramsGetResources);
localStorage.setItem(
'integrationServices',
JSON.stringify(paramsGetResources)
)
}
onMounted(() => {
if (storageSearchInfo) {
handleSetSearchData()
} else {
getIntegrationList()
} }
watch(currentPageSize, () => {
console.log('pageSize', currentPageSize.value)
}) })
return { return {
listKey,
searchValue, searchValue,
currentPage, currentPage,
resourceList, resourceList,
resourceTotal, resourceTotal,
pageChange, pageChange,
listKey2,
Cardsname, Cardsname,
getAppResources, getIntegrationList,
chongzhi, resetAction,
onSearch, onSearch,
currentPageSize, currentPageSize,
pageSizeOptions, pageSizeOptions,
current,
loading, loading,
titleName, titleName,
changeCards, changeCards,
number, number,
loadingData, loadingData,
onShowSizeChange,
saveSearchCodition,
searchResultListDom,
} }
}, },
components: { components: {
@ -282,15 +266,13 @@
mybus.off('refresh') mybus.off('refresh')
mybus.off('changePage') mybus.off('changePage')
}, },
}) })
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.resultListSearchInput-father { .resultListSearchInput-father {
background: #f3f5f9; background: #f3f5f9;
padding: 0.2rem; padding: 0.2rem;
// padding-left: 0.2rem;
// padding-top: 0.2rem;
.resultListSearchInput-son { .resultListSearchInput-son {
background: #fff; background: #fff;
padding: 0.2rem 0.2rem 0rem 0.3rem; padding: 0.2rem 0.2rem 0rem 0.3rem;
@ -302,9 +284,9 @@
margin-top: 0.2rem; margin-top: 0.2rem;
} }
} }
} }
.resultListSearchInput { .resultListSearchInput {
margin-left: 0.1rem; margin-left: 0.1rem;
:deep(.ant-input) { :deep(.ant-input) {
@ -329,9 +311,9 @@
:deep(.ant-input-group-addon) { :deep(.ant-input-group-addon) {
left: 0 !important; left: 0 !important;
} }
} }
.button-reset { .button-reset {
border: 0; border: 0;
outline: none; outline: none;
width: 0.8rem; width: 0.8rem;
@ -344,9 +326,9 @@
line-height: 0.34rem; line-height: 0.34rem;
margin-left: 2.5rem; margin-left: 2.5rem;
cursor: pointer; cursor: pointer;
} }
.details-pageconetent { .details-pageconetent {
height: 100%; height: 100%;
width: 100%; width: 100%;
display: flex; display: flex;
@ -405,13 +387,13 @@
} }
} }
} }
} }
:deep(.ant-card-grid) { :deep(.ant-card-grid) {
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
-webkit-line-clamp: 1; -webkit-line-clamp: 1;
word-break: break-all; word-break: break-all;
} }
</style> </style>

View File

@ -2,21 +2,15 @@
<template> <template>
<div class="IntegrationServicesDetails" :class="{ fixed2: scrollTop >= 600 }"> <div class="IntegrationServicesDetails" :class="{ fixed2: scrollTop >= 600 }">
<home-header></home-header> <home-header></home-header>
<detail-back></detail-back>
<!-- 头部基本信息 --> <!-- 头部基本信息 -->
<application-top-details <application-top-details :dataList="detailInfoObj" :navList="navList"></application-top-details>
:dataList="detailInfoObj"
:navList="navList"
></application-top-details>
<!-- 导航 --> <!-- 导航 -->
<div :class="{ fixed: scrollTop >= 600 }"> <div :class="{ fixed: scrollTop >= 600 }">
<div class="application-navigation"> <div class="application-navigation">
<template v-for="nav in navList" :key="nav.key"> <template v-for="nav in navList" :key="nav.key">
<div <div class="nav" :class="{ selectNow: nav.key == selectNow }" @click="selectNav(nav.key)">
class="nav"
:class="{ selectNow: nav.key == selectNow }"
@click="selectNav(nav.key)"
>
{{ nav.name }} {{ nav.name }}
<span class="line"></span> <span class="line"></span>
</div> </div>
@ -30,19 +24,16 @@
<DetalsTitle title="场景痛点" type="PAIN POINT"></DetalsTitle> <DetalsTitle title="场景痛点" type="PAIN POINT"></DetalsTitle>
</div> </div>
<div class="flex-row-center"> <div class="flex-row-center">
<div class="bg cjtd"><a-image :preview="false" :src="bgImg" /></div> <div class="bg cjtd">
<a-image :preview="false" :src="bgImg" />
</div>
<div class="content" style="margin-left: 0.5rem"> <div class="content" style="margin-left: 0.5rem">
<div <div class="content-item" v-for="(item, i) in painPoint" :key="i" style="
class="content-item"
v-for="(item, i) in painPoint"
:key="i"
style="
margin-bottom: 0.2rem; margin-bottom: 0.2rem;
font-size: 0.18rem; font-size: 0.18rem;
line-height: 0.3rem; line-height: 0.3rem;
" ">
>
{{ i + 1 + '、' + item.description }} {{ i + 1 + '、' + item.description }}
</div> </div>
</div> </div>
@ -50,26 +41,17 @@
</div> </div>
<!-- 解决方案 --> <!-- 解决方案 -->
<div <div id="integration-solution" class="solution scrollBox" style="background: #eee">
id="integration-solution"
class="solution scrollBox"
style="background: #eee"
>
<div class="title-1"> <div class="title-1">
<DetalsTitle title="解决方案" type="SOLUTION"></DetalsTitle> <DetalsTitle title="解决方案" type="SOLUTION"></DetalsTitle>
</div> </div>
<div class="flex-row-center"> <div class="flex-row-center">
<div class="content" style="background: #fff; margin-top: 0.2rem"> <div class="content" style="background: #fff; margin-top: 0.2rem">
<div <div class="content-item" v-for="(item, i) in solution" :key="i" style="
class="content-item"
v-for="(item, i) in solution"
:key="i"
style="
margin-bottom: 0.2rem; margin-bottom: 0.2rem;
font-size: 0.18rem; font-size: 0.18rem;
line-height: 0.3rem; line-height: 0.3rem;
" ">
>
{{ i + 1 + '、' + item.description }} {{ i + 1 + '、' + item.description }}
</div> </div>
</div> </div>
@ -81,48 +63,20 @@
<div class="title-1"> <div class="title-1">
<DetalsTitle title="使用能力" type="ABILITY"></DetalsTitle> <DetalsTitle title="使用能力" type="ABILITY"></DetalsTitle>
</div> </div>
<div <div class="flex-row-center combine-content" v-for="(item, i) in combineList" :key="i" style="display: block">
class="flex-row-center combine-content" <div class="top" style="font-size: 0.24rem; text-align: center; margin-bottom: 0.3rem">
v-for="(item, i) in combineList"
:key="i"
style="display: block"
>
<div
class="top"
style="font-size: 0.24rem; text-align: center; margin-bottom: 0.3rem"
>
{{ i == 0 ? '基础设施' : i == 1 ? '组件服务' : '数据资源' }} {{ i == 0 ? '基础设施' : i == 1 ? '组件服务' : '数据资源' }}
</div> </div>
<div class="bottom" style="display: flex; align-items: flex-start"> <div class="bottom" style="display: flex; align-items: flex-start">
<div class="title" :class="'title' + i"></div> <div class="title" :class="'title' + i"></div>
<div> <div class="table-box">
<el-table <el-table class="table" :data="item.list" stripe :header-cell-style="{ 'text-align': 'center' }">
class="table" <el-table-column prop="name" label="数据" align="center" width="200" show-overflow-tooltip="true">
:data="item.list" </el-table-column>
stripe <el-table-column prop="dept" label="能力来源" align="center" width="300" show-overflow-tooltip="true">
:header-cell-style="{ 'text-align': 'center' }" </el-table-column>
> <el-table-column prop="platform" label="申请平台" align="center" width="100" show-overflow-tooltip="true">
<el-table-column </el-table-column>
prop="name"
label="数据"
align="center"
width="200"
show-overflow-tooltip="true"
></el-table-column>
<el-table-column
prop="dept"
label="能力来源"
align="center"
width="300"
show-overflow-tooltip="true"
></el-table-column>
<el-table-column
prop="platform"
label="申请平台"
align="center"
width="100"
show-overflow-tooltip="true"
></el-table-column>
</el-table> </el-table>
</div> </div>
</div> </div>
@ -136,12 +90,7 @@
</div> </div>
<div class="flex-row-center step-content"> <div class="flex-row-center step-content">
<el-steps direction="vertical" :space="150" :active="step.length"> <el-steps direction="vertical" :space="150" :active="step.length">
<el-step <el-step v-for="(item, i) in step" :key="i" :title="item.question" :description="item.answer"></el-step>
v-for="(item, i) in step"
:key="i"
:title="item.question"
:description="item.answer"
></el-step>
</el-steps> </el-steps>
</div> </div>
</div> </div>
@ -150,37 +99,38 @@
</template> </template>
<script setup> <script setup>
import ApplicationTopDetails from './components/ApplicationTopDetails.vue' import ApplicationTopDetails from './components/ApplicationTopDetails.vue'
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle' import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
import ApplicationCommonProblem from '@/views/detailsAll/components/Application/ApplicationCommonProblem' // import ApplicationCommonProblem from '@/views/detailsAll/components/Application/ApplicationCommonProblem' //
import HomeFooter from '@/views/newHome/components/Footer' import HomeFooter from '@/views/newHome/components/Footer'
import HomeHeader from '@/views/home/components/header' import HomeHeader from '@/views/home/components/header'
import { ref, onMounted, onBeforeUnmount } from 'vue' import detailBack from '@/views/home/detailBack.vue'
import { useRouter } from 'vue-router' import { ref, onMounted, onBeforeUnmount } from 'vue'
import { getIntegrationDetail } from '@/api/home' import { useRouter } from 'vue-router'
import mybus from '@/myplugins/mybus' import { getIntegrationDetail } from '@/api/home'
import { message } from 'ant-design-vue' import mybus from '@/myplugins/mybus'
const router = useRouter() import { message } from 'ant-design-vue'
const scrollTop = ref(0) const router = useRouter()
const domArr = ref([]) const scrollTop = ref(0)
const painPoint = ref([]) const domArr = ref([])
const solution = ref([]) const painPoint = ref([])
const step = ref([]) const solution = ref([])
const bgImg = ref('') const step = ref([])
const id = router.currentRoute.value.query.id const bgImg = ref('')
document.documentElement.style.transition = 'all 0.3s ease' const id = router.currentRoute.value.query.id
document.documentElement.scrollTop = 0 document.documentElement.style.transition = 'all 0.3s ease'
document.body.style.transition = 'all 0.3s ease' document.documentElement.scrollTop = 0
document.body.scrollTop = 0 document.body.style.transition = 'all 0.3s ease'
mybus.on('flyToView', (id) => { document.body.scrollTop = 0
mybus.on('flyToView', (id) => {
let top = let top =
document.querySelector('#' + id) && document.querySelector('#' + id) &&
document.querySelector('#' + id).offsetTop - 50 document.querySelector('#' + id).offsetTop - 50
document.documentElement.scrollTop = top document.documentElement.scrollTop = top
document.body.scrollTop = top document.body.scrollTop = top
}) })
const navList = ref([ const navList = ref([
{ {
name: '场景痛点', name: '场景痛点',
key: 'integration-pain-point', key: 'integration-pain-point',
@ -197,11 +147,11 @@
name: '构建步骤', name: '构建步骤',
key: 'integration-step', key: 'integration-step',
}, },
]) ])
const selectNow = ref('integration-pain-point') const selectNow = ref('integration-pain-point')
const useWayShowList = ref([ const useWayShowList = ref([
{ {
title: '归属部门', title: '归属部门',
info: { info: {
@ -216,9 +166,9 @@
providerMobile: '联系人电话', providerMobile: '联系人电话',
}, },
}, },
]) ])
const combineList = ref([ const combineList = ref([
{ {
title: '基础设施', title: '基础设施',
list: [], list: [],
@ -231,10 +181,10 @@
title: '数据资源', title: '数据资源',
list: [], list: [],
}, },
]) ])
const detailInfoObj = ref({}) const detailInfoObj = ref({})
onMounted(() => { onMounted(() => {
window.addEventListener('scroll', () => { window.addEventListener('scroll', () => {
domArr.value = document.querySelectorAll('.scrollBox') domArr.value = document.querySelectorAll('.scrollBox')
scrollTop.value = scrollTop.value =
@ -258,15 +208,23 @@
} }
} }
}) })
}) })
const selectNav = (key) => { const selectNav = (key) => {
selectNow.value = key selectNow.value = key
mybus.emit('flyToView', selectNow.value) mybus.emit('flyToView', selectNow.value)
} }
// -- const getAttrValue = (fuseAttrList, data, text) => {
const getIntegrationServicesDeatil = (id) => { let _obj = fuseAttrList.find((v) => v.attrType === text) || {};
data =
JSON.parse(
_obj.attrValue || '[]'
) || []
}
// --
const getIntegrationServicesDeatil = (id) => {
getIntegrationDetail(id).then( getIntegrationDetail(id).then(
(res) => { (res) => {
if (res.data.code !== 0) { if (res.data.code !== 0) {
@ -283,18 +241,9 @@
attrType: '常见问题', attrType: '常见问题',
attrValue: questionValue.attrValue || '[]', attrValue: questionValue.attrValue || '[]',
} }
painPoint.value = getAttrValue(fuseAttrList, painPoint.value, '场景痛点');
JSON.parse( getAttrValue(fuseAttrList, solution.value, '解决方案');
fuseAttrList.find((v) => v.attrType === '场景痛点').attrValue getAttrValue(fuseAttrList, step.value, '使用步骤');
) || []
solution.value =
JSON.parse(
fuseAttrList.find((v) => v.attrType === '解决方案').attrValue
) || []
step.value =
JSON.parse(
fuseAttrList.find((v) => v.attrType === '使用步骤').attrValue
) || []
bgImg.value = bgImg.value =
fuseAttrList.find((v) => v.attrType === '服务图片').attrValue || '' fuseAttrList.find((v) => v.attrType === '服务图片').attrValue || ''
let areaObj = { let areaObj = {
@ -361,10 +310,10 @@
message.error(err) message.error(err)
} }
) )
} }
getIntegrationServicesDeatil(id) getIntegrationServicesDeatil(id)
function handleOpenUrl(type) { function handleOpenUrl(type) {
let obj = let obj =
(detailInfoObj.value.fuseAttrList || []).find( (detailInfoObj.value.fuseAttrList || []).find(
(v) => v.attrType == type (v) => v.attrType == type
@ -378,36 +327,36 @@
'hisense_office/onlinePreview?url=' + 'hisense_office/onlinePreview?url=' +
btoa(encodeURI(url)) btoa(encodeURI(url))
) )
} }
onBeforeUnmount(() => { onBeforeUnmount(() => {
mybus.off('flyToView') mybus.off('flyToView')
}) })
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.flex-row-between { .flex-row-between {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
} }
.flex-row-start { .flex-row-start {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
justify-content: flex-start; justify-content: flex-start;
} }
.flex-row-center { .flex-row-center {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
.IntegrationServicesDetails { .IntegrationServicesDetails {
.fixed { .fixed {
position: fixed !important; position: fixed !important;
z-index: 2000; z-index: 2000;
@ -415,7 +364,7 @@
left: 0; left: 0;
} }
.fixed2 > div:nth-of-type(3) { .fixed2>div:nth-of-type(3) {
margin-top: 0.84rem; margin-top: 0.84rem;
} }
@ -453,9 +402,9 @@
} }
} }
} }
} }
.use-way { .use-way {
padding: 0.8rem 0; padding: 0.8rem 0;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -498,11 +447,9 @@
height: 1.5rem; height: 1.5rem;
width: 6.2rem; width: 6.2rem;
border-radius: 0.2rem; border-radius: 0.2rem;
background: linear-gradient( background: linear-gradient(to right,
to right,
rgba(113, 132, 252, 0.4), rgba(113, 132, 252, 0.4),
rgba(148, 163, 252, 0.4) rgba(148, 163, 252, 0.4));
);
padding: 0 0.3rem; padding: 0 0.3rem;
display: flex; display: flex;
justify-content: center; justify-content: center;
@ -533,11 +480,12 @@
} }
} }
} }
} }
.pain-point { .pain-point {
padding: 0.8rem 0; padding: 0.8rem 0;
background: rgb(247, 248, 250); background: rgb(247, 248, 250);
.bg { .bg {
height: 3rem; height: 3rem;
width: 3rem; width: 3rem;
@ -545,58 +493,67 @@
// background-size: 100%; // background-size: 100%;
margin-top: 0.3rem; margin-top: 0.3rem;
} }
.cjtd { .cjtd {
width: 5.75rem; width: 5.75rem;
height: 3.4rem; height: 3.4rem;
background: url('~@/assets/home/fn/cjtd.png') no-repeat; background: url('~@/assets/home/fn/cjtd.png') no-repeat;
background-size: 100%; background-size: 100%;
} }
.content { .content {
overflow: auto; overflow: auto;
height: 3rem; height: 3rem;
width: 7rem; width: 7rem;
margin-top: 0.3rem; margin-top: 0.3rem;
.content-item { .content-item {
font-size: 16px; font-size: 16px;
margin: 0rem 0rem 0.1rem 0.1rem; margin: 0rem 0rem 0.1rem 0.1rem;
} }
} }
} }
.solution { .solution {
padding: 0.8rem 0; padding: 0.8rem 0;
background: rgb(247, 248, 250); background: rgb(247, 248, 250);
.content { .content {
width: 11rem; width: 11rem;
.content-item { .content-item {
font-size: 16px; font-size: 16px;
margin: 0.3rem; margin: 0.3rem;
} }
} }
} }
.step { .step {
padding: 0.8rem 0; padding: 0.8rem 0;
background: rgb(247, 248, 250); background: rgb(247, 248, 250);
.step-content { .step-content {
margin: 0.3rem 4.5rem; margin: 0.3rem 4.5rem;
padding: 0.3rem; padding: 0.3rem;
background: #fff; background: #fff;
:deep(.el-step__description.is-finish) { :deep(.el-step__description.is-finish) {
color: #333; color: #333;
line-height: 0.24rem; line-height: 0.24rem;
margin-top: 0.05rem; margin-top: 0.05rem;
} }
/deep/ .el-step__title { /deep/ .el-step__title {
font-size: 18px; font-size: 18px;
} }
/deep/ .el-step__description { /deep/ .el-step__description {
font-size: 14px; font-size: 14px;
} }
} }
} }
.ability { .ability {
padding: 0.8rem 0; padding: 0.8rem 0;
background: rgb(247, 248, 250); background: rgb(247, 248, 250);
@ -608,38 +565,49 @@
margin-top: 0.3rem; margin-top: 0.3rem;
align-items: flex-start; align-items: flex-start;
border-bottom: 1px solid #ccc; border-bottom: 1px solid #ccc;
margin: 0.2rem 4rem 0; margin: 0.2rem 3.5rem 0;
padding: 0.2rem 0; padding: 0.2rem 0;
.title { .title {
height: 3rem; height: 3rem;
width: 3rem; width: 3rem;
margin-right: 0.5rem; margin-right: 0.4rem;
background: url('~@/assets/home/rhfw_square.png') no-repeat; background: url('~@/assets/home/rhfw_square.png') no-repeat;
background-size: 100%; background-size: 100% 100%;
} }
.title0 { .title0 {
width: 5.6rem; width: 5.6rem;
height: 3.45rem; height: 3.45rem;
background: url('~@/assets/home/fn/jcss.png') no-repeat; background: url('~@/assets/home/fn/jcss.png') no-repeat;
background-size: 100%; background-size: 100% 100%;
} }
.title1 { .title1 {
width: 5.6rem; width: 5.6rem;
height: 3.45rem; height: 3.45rem;
background: url('~@/assets/home/fn/zjfw.png') no-repeat; background: url('~@/assets/home/fn/zjfw.png') no-repeat;
background-size: 100%; background-size: 100% 100%;
} }
.title2 { .title2 {
width: 5.6rem; width: 5.6rem;
height: 3.45rem; height: 3.45rem;
background: url('~@/assets/home/fn/sjzy.png') no-repeat; background: url('~@/assets/home/fn/sjzy.png') no-repeat;
background-size: 100%; background-size: 100% 100%;
} }
.table-box {
height: 3.45rem;
flex: 1;
overflow-y: auto;
}
.table { .table {
width: 100%; // width: 100%;
font-size: 16px; font-size: 16px;
} }
} }
.name-box { .name-box {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
@ -668,5 +636,5 @@
width: 50%; width: 50%;
box-sizing: border-box; box-sizing: border-box;
} }
} }
</style> </style>

View File

@ -35,6 +35,8 @@
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { ref } from 'vue' import { ref } from 'vue'
import { selectNewest } from '@/api/home' import { selectNewest } from '@/api/home'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
export default { export default {
name: 'latestAbility', name: 'latestAbility',
components: {}, components: {},
@ -45,7 +47,8 @@
router.push({ router.push({
path: '/DetailsPageconetent', path: '/DetailsPageconetent',
query: { query: {
select: '组件服务', // select: '',
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB
}, },
}) })
} }

View File

@ -2,6 +2,7 @@
<!-- 青岛 --> <!-- 青岛 -->
<div class="details-pageconetent"> <div class="details-pageconetent">
<home-header></home-header> <home-header></home-header>
<detail-back></detail-back>
<div class="content-box" v-loading="loadingPage"> <div class="content-box" v-loading="loadingPage">
<div class="package-title">打包模式</div> <div class="package-title">打包模式</div>
<div class="basic-info"> <div class="basic-info">
@ -70,6 +71,7 @@ import { message } from 'ant-design-vue'
import { getIntegrationDetail } from '@/api/home' import { getIntegrationDetail } from '@/api/home'
import HomeHeader from '@/views/home/components/header' import HomeHeader from '@/views/home/components/header'
import { scInsert, scDel } from '@/api/personalCenter' import { scInsert, scDel } from '@/api/personalCenter'
import detailBack from '@/views/home/detailBack.vue'
const router = useRouter() const router = useRouter()
const id = router.currentRoute.value.query.id const id = router.currentRoute.value.query.id
@ -110,7 +112,6 @@ const getIntegrationServicesDeatil = (id) => {
} }
detailInfoObj.value = res.data.data || {} detailInfoObj.value = res.data.data || {}
console.log('detailInfoObj------------>', detailInfoObj); console.log('detailInfoObj------------>', detailInfoObj);
let fuseResourceList = detailInfoObj.value.fuseResourceList || [] let fuseResourceList = detailInfoObj.value.fuseResourceList || []
abilityList.value.map(v => { abilityList.value.map(v => {
let list = fuseResourceList.filter(x => x.type == v.name) || []; let list = fuseResourceList.filter(x => x.type == v.name) || [];
@ -197,7 +198,6 @@ const addCollect = () => {
} }
}) })
.catch(err => { .catch(err => {
console.log('err------------>', err);
message.success(err) message.success(err)
}) })
} else { } else {
@ -216,16 +216,13 @@ const addCollect = () => {
} }
}) })
.catch(err => { .catch(err => {
console.log('err------------>', err);
message.success(err) message.success(err)
}) })
} }
} }
} }
getIntegrationServicesDeatil(id) getIntegrationServicesDeatil(id)
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.flex-row-start { .flex-row-start {

View File

@ -65,6 +65,8 @@
data-spm-anchor-id="a313x.7781069.0.i0" data-spm-anchor-id="a313x.7781069.0.i0"
></path> ></path>
</svg> </svg>
<img class="icon-poylon" @click="areaMode()" src="~@/supermap/image/icon-poylon.png">
</div> </div>
<video-play <video-play
v-if="openVideo" v-if="openVideo"
@ -92,6 +94,7 @@
} from '@/api/videoSurveillance' } from '@/api/videoSurveillance'
import { getCameraByCondition } from '@/api/file' import { getCameraByCondition } from '@/api/file'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
import * as turf from '@turf/turf';
export default { export default {
data() { data() {
@ -112,6 +115,7 @@
openVideo: false, openVideo: false,
channelCode: [], channelCode: [],
circleModeFlag: false, circleModeFlag: false,
areaModeFlag: false,
addressMatchUrl: '', addressMatchUrl: '',
address: '', address: '',
whoShow1: whoShow, whoShow1: whoShow,
@ -124,7 +128,10 @@
gpsX: '', gpsX: '',
gpsY: '', gpsY: '',
radius: '', radius: '',
borderPolygonList: [],
type: 0, //012
}, },
pointAllData:[],
} }
}, },
components: { components: {
@ -158,6 +165,20 @@
this.mapSearchParam.parentId = parentId this.mapSearchParam.parentId = parentId
this.getCameraByParentId() this.getCameraByParentId()
}) })
//
mybus.off('selectTablePoint')
mybus.on('selectTablePoint', (pointlist) => {
console.log("mounted -> pointlist", pointlist);
for(let i=0;i<this.pointAllData.length;i++){
this.pointAllData[i].active = false
for(let j=0;j<pointlist.length;j++){
if(this.pointAllData[i].channelCode == pointlist[j].channelCode){
this.pointAllData[i].active = true
}
}
}
this.addResourceTomap('videoMap', this.pointAllData);
})
}, },
methods: { methods: {
selectedAddress(item, index) { selectedAddress(item, index) {
@ -169,6 +190,46 @@
} }
this.hiMapFun.mapFlyTo(latLng) this.hiMapFun.mapFlyTo(latLng)
}, },
//
areaSelectResource(){
//
L.drawLocal.draw.handlers.polygon.tooltip.start = '单击开始绘制形状'
L.drawLocal.draw.handlers.polygon.tooltip.cont = '单击继续绘制形状'
L.drawLocal.draw.handlers.polygon.tooltip.end =
'单击继续绘制形状,双击结束绘制'
this.hiMap.mapObj.map.off('draw:created')
this.hiMap.mapObj.drawPolygon.enable()
this.hiMap.mapObj.map.once('draw:created', (e) => {
const type = e.layerType
const circleLayer = e.layer
console.log('查询图层draw:created', e)
if (type === 'polygon') {
const polygonLayer = e.layer;
this.hiMap.mapObj.featureGroup.addLayer(polygonLayer);
this.hiMap.mapObj.layerGroup.set('rectangleSelectLayer', polygonLayer);
const arr = [];
const latlngs = []; //
polygonLayer._latlngs[0].map(item => {
// const bdLonLat = wgs84LL2bdLL();
arr.push(turf.point([item.lng, item.lat]));
latlngs.push([item.lat,item.lng])
});
const points = turf.featureCollection(arr);
const rect = turf.convex(points);
this.mapSearchParam.borderPolygonList = latlngs
this.mapSearchParam.type = 2
const params = {
borderPolygonList: latlngs,
type: this.mapSearchParam.type,
}
// mybus.emit('getListByMap', params);
this.getCameraByParentId('map');
console.log("areaSelectResource -> latlngs", latlngs)
}
})
},
// //
circleSelectResource() { circleSelectResource() {
L.drawLocal.draw.handlers.circle.tooltip.start = '请圈选区域' L.drawLocal.draw.handlers.circle.tooltip.start = '请圈选区域'
@ -196,18 +257,20 @@
this.mapSearchParam.gpsX = e.layer._latlng.lng this.mapSearchParam.gpsX = e.layer._latlng.lng
this.mapSearchParam.gpsY = e.layer._latlng.lat this.mapSearchParam.gpsY = e.layer._latlng.lat
this.mapSearchParam.radius = radius this.mapSearchParam.radius = radius
this.mapSearchParam.type = 1
const params = { const params = {
gpsX: this.mapSearchParam.gpsX, gpsX: this.mapSearchParam.gpsX,
gpsY: this.mapSearchParam.gpsY, gpsY: this.mapSearchParam.gpsY,
radius: radius, radius: radius,
type: this.mapSearchParam.type,
} }
mybus.emit('getListByMap', params) // mybus.emit('getListByMap', params)
this.getCameraByParentId() this.getCameraByParentId('map')
} }
} }
}) })
}, },
getCameraByParentId() { getCameraByParentId(type) {
if (!this.whoShow1.itShowXiHaiAn) { if (!this.whoShow1.itShowXiHaiAn) {
debugger debugger
getCameraByParentId(this.mapSearchParam).then((res) => { getCameraByParentId(this.mapSearchParam).then((res) => {
@ -221,12 +284,13 @@
this.mapSearchParam.parentId || this.mapSearchParam.parentId ||
'70be8c5b664f4bcf869d82f2e8335051', '70be8c5b664f4bcf869d82f2e8335051',
pageNum: this.mapSearchParam.pageNum, pageNum: this.mapSearchParam.pageNum,
pageSize: this.mapSearchParam.pageSize, pageSize: this.mapSearchParam.type!=0?this.mapSearchParam.pageSize:10,
name: this.mapSearchParam.cameraName || '', name: this.mapSearchParam.cameraName || '',
longitude: this.mapSearchParam.gpsX || '', longitude: this.mapSearchParam.gpsX || '',
latitude: this.mapSearchParam.gpsY || '', latitude: this.mapSearchParam.gpsY || '',
radius: this.mapSearchParam.radius || '', radius: this.mapSearchParam.radius || '',
status: 1, type: this.mapSearchParam.type,
borderPolygonList: this.mapSearchParam.borderPolygonList || [],
} }
let paramsFather = '' let paramsFather = ''
let i = 1 let i = 1
@ -243,9 +307,19 @@
} }
} }
} }
getCameraByCondition(paramsFather).then((res) => { getCameraByCondition(params).then((res) => {
console.log('根据parent查询摄像头', res.data.data) console.log('根据parent查询摄像头', res.data.data)
if(type=='map'){
let params = this.mapSearchParam;
params.dataSource = res.data.data||0;
params.total = res.data.count||0;
mybus.emit('getListByMap', params);
}
this.pointAllData = res.data.data;
if(this.mapSearchParam.type!=0)
this.addResourceTomap('videoMap', res.data.data) this.addResourceTomap('videoMap', res.data.data)
else
this.addResourceTomap('videoMap', []) //
}) })
} }
}, },
@ -256,27 +330,65 @@
this.addressMatchUrl this.addressMatchUrl
) )
}, },
areaMode(){
//
if(this.circleModeFlag){
this.resetCircle();
this.circleModeFlag = false;
}
this.areaModeFlag = !this.areaModeFlag;
if (this.areaModeFlag) {
//
this.areaSelectResource()
} else {
this.resetArea();
}
},
circleMode() { circleMode() {
if(this.areaModeFlag){
this.resetArea();
this.areaModeFlag = false;
}
// //
this.circleModeFlag = !this.circleModeFlag this.circleModeFlag = !this.circleModeFlag
if (this.circleModeFlag) { if (this.circleModeFlag) {
// //
this.circleSelectResource() this.circleSelectResource()
} else { } else {
this.resetCircle();
}
},
resetCircle(){
// //
this.hiMapFun.removeLayerByLayerName('circlePloygonLayer') this.hiMapFun.removeLayerByLayerName('circlePloygonLayer')
// //
this.mapSearchParam.gpsX = '' this.mapSearchParam.gpsX = ''
this.mapSearchParam.gpsY = '' this.mapSearchParam.gpsY = ''
this.mapSearchParam.radius = '' this.mapSearchParam.radius = ''
this.getCameraByParentId() this.mapSearchParam.type = 0;
const params = { const params = {
gpsX: this.mapSearchParam.gpsX, gpsX: this.mapSearchParam.gpsX,
gpsY: this.mapSearchParam.gpsY, gpsY: this.mapSearchParam.gpsY,
radius: this.mapSearchParam.radius, radius: this.mapSearchParam.radius,
type: this.mapSearchParam.type
} }
mybus.emit('getListByMap', params) this.getCameraByParentId('map')
// mybus.emit('getListByMap', params);
},
resetArea(){
//
this.hiMapFun.removeLayerByLayerName('rectangleSelectLayer');
//
this.mapSearchParam.borderPolygonList = [];
this.mapSearchParam.type = 0;
const params = {
borderPolygonList: this.mapSearchParam.borderPolygonList,
type: this.mapSearchParam.type
} }
this.getCameraByParentId('map')
// mybus.emit('getListByMap', params);
}, },
// //
async searchAddressByKeyWord(queryString, cb, indexX) { async searchAddressByKeyWord(queryString, cb, indexX) {
@ -352,18 +464,21 @@
addResourceTomap(type, data) { addResourceTomap(type, data) {
const dataEvent = [] const dataEvent = []
if(data&&data.length>0){
data.forEach((item) => { data.forEach((item) => {
const arr = [0, 0.0, '', '0', '0.0'] const arr = [0, 0.0, '', '0', '0.0']
if (arr.indexOf(item.gpsX) == -1) { if (arr.indexOf(item.gpsX) == -1) {
dataEvent.push({ dataEvent.push({
latLng: { lat: Number(item.gpsY), lng: Number(item.gpsX) }, latLng: { lat: Number(item.gpsY), lng: Number(item.gpsX) },
data: item, data: item,
active: item.active,
type: 'videoSurveillance', type: 'videoSurveillance',
}) })
} }
}) })
}
console.log('上图数据', dataEvent) console.log('上图数据', dataEvent)
this.getMapPoint(dataEvent, 'videoSurveillance.png', type) this.getMapPoint(dataEvent, 'icon_camare.png', type)
}, },
getMapPoint(data, img, type) { getMapPoint(data, img, type) {
// this.hiMapFun.clearAllLayers(); // this.hiMapFun.clearAllLayers();
@ -373,7 +488,8 @@
features, features,
img, img,
type, type,
createCameraDetailsPop createCameraDetailsPop,
'icon_camare_active.png'
) )
}, },
@ -543,13 +659,17 @@
.leaflet-control-attribution { .leaflet-control-attribution {
display: none; display: none;
} }
svg { svg,.icon-poylon {
position: absolute; position: absolute;
bottom: 0.1rem; bottom: 0.1rem;
right: 0.1rem; right: 0.1rem;
z-index: 1001; z-index: 988;
cursor: pointer; cursor: pointer;
} }
.icon-poylon {
width: 0.46rem;
bottom: 0.6rem;
}
.address-auto-complete-input { .address-auto-complete-input {
width: 2.4rem; width: 2.4rem;
} }

View File

@ -26,7 +26,7 @@ import {
ref, ref,
watch, watch,
defineProps, defineProps,
nextTick, defineEmits,
} from 'vue' } from 'vue'
import { getDevelopDocTree } from '@/api/home' import { getDevelopDocTree } from '@/api/home'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'

View File

@ -118,6 +118,7 @@
import TheOverallProcess from './TheOverallProcess.vue' import TheOverallProcess from './TheOverallProcess.vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
const router = useRouter() const router = useRouter()
const seviceList = ref([ const seviceList = ref([
{ {
@ -255,7 +256,8 @@
const newpage = router.resolve({ const newpage = router.resolve({
path: '/DetailsPageconetent', path: '/DetailsPageconetent',
query: { query: {
select: '组件服务', // select: '',
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB
}, },
}) })
window.location.href = newpage.href window.location.href = newpage.href

View File

@ -2,18 +2,19 @@
<home-header></home-header> <home-header></home-header>
<div class="menu-container"> <div class="menu-container">
<div id="container" class="content-menu"> <div id="container" class="content-menu">
<div class="left"> <!-- <div class="left">
<div class="first-title-text doc" :style="{ color: '技术文档' === titleData.name ? '#0058e1' : '' }" <div class="first-title-text doc" :style="{ color: '技术文档' === titleData.name ? '#0058e1' : '' }"
@click="changeName({ name: '技术文档' })"> @click="changeName({ name: '技术文档' })">
技术文档 技术文档
</div> </div>
<abilityDocTree style="max-height:320px;overflow-y:auto" :dataList="treeArray" @treeClick="treeClick" <abilityDocTree style="max-height:320px;overflow-y:auto" :dataList="treeArray" @treeClick="treeClick"
:clickData="clickData"></abilityDocTree> :clickData="clickData"></abilityDocTree>
</div> </div> -->
<div class="first-title-text new-guide-box" :style="{ color: '使用手册' === titleData.name ? '#0058e1' : '' }" <div class="first-title-text new-guide-box" :style="{ color: '使用手册' === titleData.name ? '#0058e1' : '' }"
@click="changeName({ name: '使用手册' })"> @click="changeName({ name: '使用手册' })">
<div class="guide-text">使用手册</div> <div class="guide-text">使用手册</div>
<img src="@/assets/developmentGuide/download.png" @click="downloadDoc('/static/doc/userbook.docx', '通用能力服务平台USC用户手册')" alt="" />
</div> </div>
<!-- 技术文档 --> <!-- 技术文档 -->
@ -133,7 +134,12 @@ const getFirstData = (firstObj = {}) => {
clickData.value = firstObj clickData.value = firstObj
} }
} }
const downloadDoc = (path, name) => {
const a = document.createElement('a')
a.href = path
a.download =name
a.click()
}
onMounted(() => { onMounted(() => {
getTreeData() getTreeData()
}) })
@ -192,7 +198,7 @@ onMounted(() => {
top: 300px; top: 300px;
right: 205px; right: 205px;
width: 74px; width: 74px;
height: 136px; height: 150px;
background: url('~@/assets/menu/new-bg.png') no-repeat; background: url('~@/assets/menu/new-bg.png') no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
display: flex; display: flex;

View File

@ -15,22 +15,16 @@
</a-input> </a-input>
</a-form-item> </a-form-item>
<a-form-item> <a-form-item>
<a-input <a-input v-model:value="form.password" type="password" placeholder="Password">
v-model:value="form.password"
type="password"
placeholder="Password"
>
<template v-slot:prefix> <template v-slot:prefix>
<LockOutlined style="color: rgba(0, 0, 0, 0.25)" /> <LockOutlined style="color: rgba(0, 0, 0, 0.25)" />
</template> </template>
</a-input> </a-input>
</a-form-item> </a-form-item>
<a-form-item> <a-form-item>
<a-button <!-- IE Chrome || judgeAgent() !== 'Chrome'-->
type="primary" <a-button type="primary" html-type="submit"
html-type="submit" :disabled="form.username === '' || form.password === '' || !canOpen.includes(judgeAgent())">
:disabled="form.username === '' || form.password === ''"
>
登录 登录
</a-button> </a-button>
</a-form-item> </a-form-item>
@ -42,13 +36,16 @@
</div> </div>
</template> </template>
<script> <script>
import { dependencies, devDependencies } from '*/package.json' import { dependencies, devDependencies } from '*/package.json'
import { mapActions, mapGetters } from 'vuex' import { mapActions, mapGetters } from 'vuex'
import { Encrypt } from '@/utils/crypto' import { Encrypt } from '@/utils/crypto'
import { UserOutlined, LockOutlined } from '@ant-design/icons-vue' import { UserOutlined, LockOutlined } from '@ant-design/icons-vue'
import { message } from 'ant-design-vue' import { message, Modal } from 'ant-design-vue'
export default { // 西
const isXiHaiAn = whoShow.itShowXiHaiAn
export default {
name: 'Login', name: 'Login',
components: { components: {
UserOutlined, UserOutlined,
@ -63,6 +60,9 @@
redirect: undefined, redirect: undefined,
dependencies: dependencies, dependencies: dependencies,
devDependencies: devDependencies, devDependencies: devDependencies,
is360: false,
isIE: false,
canOpen: ['FF', 'Chrome']
} }
}, },
computed: { computed: {
@ -82,14 +82,52 @@
mounted() { mounted() {
this.form.username = '' this.form.username = ''
this.form.password = '' this.form.password = ''
/* setTimeout(() => {
this.handleSubmit() if (!this.canOpen.includes(this.judgeAgent())) {
}, 3000) */ Modal.warning({
title: '提示',
content: '请使用谷歌或火狐浏览器!',
});
}
}, },
methods: { methods: {
...mapActions({ ...mapActions({
login: 'user/login', login: 'user/login',
}), }),
//
judgeAgent() {
let userAgent = navigator.userAgent // userAgent
console.log('userAgent------------>', userAgent);
let isOpera = userAgent.indexOf('Opera') > -1
//Opera
if (isOpera) {
return 'Opera'
}
//Firefox
if (userAgent.indexOf('Firefox') > -1) {
return 'FF'
}
//chorme
if (userAgent.indexOf('Chrome') > -1) {
return 'Chrome'
}
//Safari
if (userAgent.indexOf('Safari') > -1) {
return 'Safari'
}
//IE
if (
userAgent.indexOf('compatible') > -1 &&
userAgent.indexOf('MSIE') > -1 &&
!isOpera
) {
return 'IE'
}
//Edge
if (userAgent.indexOf('Trident') > -1) {
return 'Edge'
}
},
handleRoute() { handleRoute() {
return this.redirect === '/404' || this.redirect === '/403' return this.redirect === '/404' || this.redirect === '/403'
? '/home' ? '/home'
@ -110,20 +148,33 @@
window.sessionStorage.setItem('visits', JSON.stringify([])) window.sessionStorage.setItem('visits', JSON.stringify([]))
console.log('添加visits========================================>') console.log('添加visits========================================>')
// console.log(this.handleRoute()) // console.log(this.handleRoute())
// 西
if (isXiHaiAn) {
await this.$router.push({
path: '/DetailsPageconetent',
query: {
select: '基础设施',
tecHnosphere: '',
appLiCation: ''
}
})
} else {
await this.$router.push('/home') await this.$router.push('/home')
}
} catch (error) { } catch (error) {
message.error('登陆失败,用户名或密码错误!') message.error('登陆失败,用户名或密码错误!')
} }
}, },
}, },
} }
</script> </script>
<style lang="less"> <style lang="less">
.login-container { .login-container {
width: 100%; width: 100%;
height: 100vh; height: 100vh;
background: url('~@/assets/login_images/login_background.png'); background: url('~@/assets/login_images/login_background.png');
background-size: cover; background-size: cover;
&-form { &-form {
width: calc(100% - 40px); width: calc(100% - 40px);
height: 380px; height: 380px;
@ -136,15 +187,18 @@
border-radius: 10px; border-radius: 10px;
box-shadow: 0 2px 8px 0 rgba(7, 17, 27, 0.06); box-shadow: 0 2px 8px 0 rgba(7, 17, 27, 0.06);
} }
&-hello { &-hello {
font-size: 32px; font-size: 32px;
color: #fff; color: #fff;
} }
&-title { &-title {
margin-bottom: 30px; margin-bottom: 30px;
font-size: 20px; font-size: 20px;
color: #fff; color: #fff;
} }
&-tips { &-tips {
position: fixed; position: fixed;
bottom: @vab-margin; bottom: @vab-margin;
@ -153,17 +207,20 @@
color: rgba(255, 255, 255, 0.856); color: rgba(255, 255, 255, 0.856);
text-align: center; text-align: center;
} }
.ant-col { .ant-col {
width: 100%; width: 100%;
padding: 0 10px 0 10px; padding: 0 10px 0 10px;
} }
.ant-input { .ant-input {
height: 35px; height: 35px;
} }
.ant-btn { .ant-btn {
width: 100%; width: 100%;
height: 45px; height: 45px;
border-radius: 99px; border-radius: 99px;
} }
} }
</style> </style>

View File

@ -226,8 +226,13 @@
// }) // })
if (item) { if (item) {
mynoticeRead(item.id).then((res) => { mynoticeRead(item.id).then((res) => {
if (res.data.code == 0) { if (res.data.code == 0 ) {
message.success('操作成功!') message.success('通知已读!')
// if(item.readStatus == 1){
// message.success('')
// } if(item.readStatus == 0){
// message.success('')
// }
mybus.emit('getMynotice') mybus.emit('getMynotice')
init() init()
} else { } else {

View File

@ -2,7 +2,7 @@
<div class="capability-convergence"> <div class="capability-convergence">
<div class="main"> <div class="main">
<div class="top"> <div class="top">
能力汇聚 能力分类
<span class="line"></span> <span class="line"></span>
</div> </div>
<div class="bottom"> <div class="bottom">
@ -84,7 +84,8 @@
import { ref, reactive } from 'vue' import { ref, reactive } from 'vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { useStore } from 'vuex' import { useStore } from 'vuex'
import { updateVisits, browsingInsert } from '@/api/home' import { updateVisits, browsingInsert, getSoldierList } from '@/api/home'
import { message, Upload } from 'ant-design-vue'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
const store = useStore() const store = useStore()
const router = useRouter() const router = useRouter()
@ -164,22 +165,47 @@
} else { } else {
let type = paramsGetResources.type let type = paramsGetResources.type
if (type == '基础设施') { if (type == '基础设施') {
jcList.value = []
selectInfrastructureList().then((res) => { selectInfrastructureList().then((res) => {
console.log('基础设施==========>', res.data.data) console.log('基础设施==========>', res.data.data)
for (const key in res.data.data) { for (const key in res.data.data) {
if (whoShow1.value.itShowXiHaiAn) {
if (key === '视频资源') {
jcList.value.push({ jcList.value.push({
name: key, name: key,
num: res.data.data[key], num: res.data.data[key],
}) })
} }
if (uavAndIndividualSoldier.num) { } else {
jcList.value.push({
name: key,
num: res.data.data[key],
})
}
}
// 西-
if (whoShow1.value.itShowXiHaiAn) {
getSoldierData('无人机')
.then((res) => {
let { total = 0 } = res.data.data
jcList.value.push({ jcList.value.push({
name: '无人机', name: '无人机',
num: uavAndIndividualSoldier.uavList.length, num: total,
}) })
})
.catch((err) => {
console.log('err--无人机---------->', err)
})
getSoldierData('单兵设备')
.then((res) => {
let { total = 0 } = res.data.data
jcList.value.push({ jcList.value.push({
name: '单兵设备', name: '单兵设备',
num: uavAndIndividualSoldier.individualSoldier.length, num: total,
})
})
.catch((err) => {
console.log('err--单兵设备---------->', err)
}) })
} }
}) })
@ -206,6 +232,28 @@
} }
} }
// todo
const getSoldierData = (name) => {
let _params = {
type: name,
page: 1,
limit: 10,
}
return new Promise((resolve, reject) => {
getSoldierList(_params)
.then((res) => {
resolve(res)
console.log('res---获取无人机、单兵设备--------->', res)
if (res.data.code !== 0) {
return message.error(res.data.msg)
}
})
.catch((err) => {
reject(err)
})
})
}
const openHref = (item) => { const openHref = (item) => {
console.log(item.id, 'wowowo') console.log(item.id, 'wowowo')
console.log(item.visits, 'wowowo') console.log(item.visits, 'wowowo')
@ -292,18 +340,20 @@
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.capability-convergence { .capability-convergence {
height: 7.2rem; height: 7.2rem;
background: url('~@/assets/newHome/Convergence-bg.png') no-repeat; background: url('~@/assets/newHome/Convergence-bg.png') no-repeat;
background-size: 100%; background-size: 100%;
display: flex; display: flex;
justify-content: center; justify-content: center;
.main { .main {
width: 13rem; width: 13rem;
margin-top: 1.8rem; margin-top: 1.8rem;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
flex-wrap: wrap; flex-wrap: wrap;
.top { .top {
font-size: 0.3rem; font-size: 0.3rem;
color: #212121; color: #212121;
@ -313,6 +363,7 @@
flex-wrap: wrap; flex-wrap: wrap;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
.line { .line {
width: 0.34rem; width: 0.34rem;
height: 0.03rem; height: 0.03rem;
@ -320,10 +371,12 @@
margin-top: 0.08rem; margin-top: 0.08rem;
} }
} }
.bottom { .bottom {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
margin-top: 0.4rem; margin-top: 0.4rem;
.item { .item {
width: 2.44rem; width: 2.44rem;
height: 3.91rem; height: 3.91rem;
@ -332,6 +385,7 @@
border-radius: 0.02rem; border-radius: 0.02rem;
box-shadow: 0 0.05rem 0.2rem #ccc; box-shadow: 0 0.05rem 0.2rem #ccc;
position: relative; position: relative;
div:nth-of-type(1) { div:nth-of-type(1) {
height: 1.02rem; height: 1.02rem;
line-height: 1.02rem; line-height: 1.02rem;
@ -340,21 +394,27 @@
padding-left: 0.15rem; padding-left: 0.15rem;
background-size: 100%; background-size: 100%;
} }
.jc { .jc {
background: url('~@/assets/newHome/Convergence-jc.png') no-repeat; background: url('~@/assets/newHome/Convergence-jc.png') no-repeat;
} }
.sj { .sj {
background: url('~@/assets/newHome/Convergence-sj.png') no-repeat; background: url('~@/assets/newHome/Convergence-sj.png') no-repeat;
} }
.zj { .zj {
background: url('~@/assets/newHome/Convergence-zj.png') no-repeat; background: url('~@/assets/newHome/Convergence-zj.png') no-repeat;
} }
.yy { .yy {
background: url('~@/assets/newHome/Convergence-yy.png') no-repeat; background: url('~@/assets/newHome/Convergence-yy.png') no-repeat;
} }
.zs { .zs {
background: url('~@/assets/newHome/Convergence-zs.png') no-repeat; background: url('~@/assets/newHome/Convergence-zs.png') no-repeat;
} }
.name { .name {
height: 0.47rem; height: 0.47rem;
line-height: 0.47rem; line-height: 0.47rem;
@ -367,13 +427,16 @@
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
word-break: break-all; word-break: break-all;
} }
.name:hover { .name:hover {
color: #0058e1; color: #0058e1;
cursor: pointer; cursor: pointer;
} }
.name-last { .name-last {
border-bottom: none; border-bottom: none;
} }
.btn { .btn {
cursor: pointer; cursor: pointer;
width: 0.8rem; width: 0.8rem;
@ -388,11 +451,13 @@
position: absolute; position: absolute;
bottom: 0.2rem; bottom: 0.2rem;
} }
.btn:hover { .btn:hover {
background: rgba(0, 88, 225, 0.3); background: rgba(0, 88, 225, 0.3);
color: #000; color: #000;
} }
} }
.item:hover { .item:hover {
border-radius: 0.02rem; border-radius: 0.02rem;
border: 0.01rem solid #0058e1; border: 0.01rem solid #0058e1;
@ -400,5 +465,5 @@
} }
} }
} }
} }
</style> </style>

View File

@ -32,6 +32,7 @@
import { ref } from 'vue' import { ref } from 'vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { useStore } from 'vuex' import { useStore } from 'vuex'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
const store = useStore() const store = useStore()
const router = useRouter() const router = useRouter()
const productServiceData = ref([]) const productServiceData = ref([])
@ -76,7 +77,8 @@
router.push({ router.push({
path: '/DetailsPageconetent', path: '/DetailsPageconetent',
query: { query: {
select: '组件服务', // select: '',
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB
}, },
}) })
} }

View File

@ -1,5 +1,7 @@
<template> <template>
<div class="navigation2"> <div class="navigation2">
<a-tooltip>
<template #title>点击进入组件服务</template>
<div class="item" @click="jumpPage('组件服务')"> <div class="item" @click="jumpPage('组件服务')">
<div class="img zj"></div> <div class="img zj"></div>
<div class="name">组件服务</div> <div class="name">组件服务</div>
@ -8,6 +10,9 @@
</div> </div>
</div> </div>
</a-tooltip>
<a-tooltip>
<template #title>点击进入应用资源</template>
<div class="item" @click="jumpPage('应用资源')"> <div class="item" @click="jumpPage('应用资源')">
<div class="img yy"></div> <div class="img yy"></div>
<div class="name">应用资源</div> <div class="name">应用资源</div>
@ -16,6 +21,9 @@
</div> </div>
</div> </div>
</a-tooltip>
<a-tooltip>
<template #title>点击进入基础设施</template>
<div class="item" @click="jumpPage('基础设施')"> <div class="item" @click="jumpPage('基础设施')">
<div class="img jc"></div> <div class="img jc"></div>
<div class="name">基础设施</div> <div class="name">基础设施</div>
@ -24,6 +32,9 @@
</div> </div>
</div> </div>
</a-tooltip>
<a-tooltip>
<template #title>点击进入数据资源</template>
<div class="item" @click="jumpPage('数据资源')"> <div class="item" @click="jumpPage('数据资源')">
<div class="img sj"></div> <div class="img sj"></div>
<div class="name">数据资源</div> <div class="name">数据资源</div>
@ -32,6 +43,9 @@
</div> </div>
</div> </div>
</a-tooltip>
<a-tooltip>
<template #title>点击进入知识库</template>
<div class="item" @click="jumpPage('知识库')"> <div class="item" @click="jumpPage('知识库')">
<div class="img zs"></div> <div class="img zs"></div>
<div class="name">知识库</div> <div class="name">知识库</div>
@ -40,6 +54,7 @@
</div> </div>
</div> </div>
</a-tooltip>
</div> </div>
</template> </template>
<script setup> <script setup>

View File

@ -61,6 +61,7 @@
import { pageWithAttrs } from '@/api/home.js' import { pageWithAttrs } from '@/api/home.js'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { useStore } from 'vuex' import { useStore } from 'vuex'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
const store = useStore() const store = useStore()
const router = useRouter() const router = useRouter()
const select = ref('浏览量') const select = ref('浏览量')
@ -134,11 +135,11 @@
'选中===================>', '选中===================>',
store.getters['home/selectCardsnum'] store.getters['home/selectCardsnum']
) )
// router.push({ path: '/DetailsPageconetent' })
router.push({ router.push({
path: '/DetailsPageconetent', path: '/DetailsPageconetent',
query: { query: {
select: '组件服务', // select: '',
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB
}, },
}) })
} }

View File

@ -47,6 +47,7 @@
import { selectRecommend } from '@/api/home.js' import { selectRecommend } from '@/api/home.js'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { useStore } from 'vuex' import { useStore } from 'vuex'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
const store = useStore() const store = useStore()
const router = useRouter() const router = useRouter()
let dataList = ref([]) let dataList = ref([])
@ -94,7 +95,7 @@
router.push({ router.push({
path: '/DetailsPageconetent', path: '/DetailsPageconetent',
query: { query: {
select: '组件服务', select: DETAIL_PAGE_CONTENT_DEFAULT_TAB
}, },
}) })
} }

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="work-dynamics"> <div class="work-dynamics">
<div class="title"> <!-- <div class="title">
<div>工作动态</div> <div>工作动态</div>
<div class="title-son"></div> <div class="title-son"></div>
</div> </div>
@ -51,11 +51,15 @@
<div class="bottom" @click="jumpPage()"> <div class="bottom" @click="jumpPage()">
查看更多 查看更多
<span class="gengduo"></span> <span class="gengduo"></span>
</div> </div> -->
<div class="fixedmount"> <div class="fixedmount">
<div @click="applyResource()">
<p></p>
<p>资源申请</p>
</div>
<div @click="toView()"> <div @click="toView()">
<p></p> <p></p>
<p>需求申请</p> <p>需求</p>
</div> </div>
<div @click="showModal"> <div @click="showModal">
<p></p> <p></p>
@ -311,6 +315,15 @@
function handlecancelAbilitySquare() { function handlecancelAbilitySquare() {
abilitySquareFunctionData.value = '智能算法' abilitySquareFunctionData.value = '智能算法'
} }
const applyResource = () => {
console.log('点击===============》')
router.push({
path: '/DetailsPageconetent',
query: {
select: '基础设施',
},
})
}
</script> </script>
<style lang="less"> <style lang="less">
.shangjia-class { .shangjia-class {
@ -419,8 +432,8 @@
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
padding-bottom: 0.8rem; // padding-bottom: 0.8rem;
padding-top: 0.78rem; // padding-top: 0.78rem;
.title { .title {
font-size: 0.3rem; font-size: 0.3rem;
font-family: 'convergence-typeface'; font-family: 'convergence-typeface';
@ -579,11 +592,11 @@
} }
.fixedmount { .fixedmount {
height: 1.5rem; height: 3rem;
display: flex; display: flex;
position: fixed; position: fixed;
bottom: 2.56rem; bottom: 1.56rem;
right: 1.9rem; right: 0rem;
z-index: 10; z-index: 10;
flex-direction: column; flex-direction: column;
justify-content: space-between; justify-content: space-between;
@ -591,49 +604,52 @@
} }
.fixedmount div { .fixedmount div {
width: 0.7rem; width: 0.96rem;
height: 0.7rem; height: 0.96rem;
border-radius: 0.04rem; // border-radius: 0.04rem;
border: 0.01rem #94aac9 solid; // border: 0.01rem #94aac9 solid;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
// justify-content: center; // justify-content: center;
align-items: center; align-items: center;
padding-top: 0.13rem; padding-top: 0.16rem;
margin-bottom: 2px;
position: relative; position: relative;
cursor: pointer; cursor: pointer;
background: #e3edfc; // background: #e3edfc;
background: url('~@/assets/home/bg-right.png');
} }
.fixedmount div p:nth-child(2) { .fixedmount div p:nth-child(2) {
position: absolute; position: absolute;
bottom: 0rem; bottom: 0rem;
height: 0.14rem; height: 0.2rem;
font-size: 0.14rem; font-size: 0.2rem;
line-height: 0.14rem; line-height: 0.2rem;
color: #000000; color: #fff;
// margin-top: .08rem; // margin-top: .08rem;
} }
.fixedmount div:nth-child(1) p:nth-child(1) { .fixedmount div:nth-child(1) p:nth-child(1) {
height: 0.24rem; height: 0.32rem;
width: 0.24rem; width: 0.32rem;
background: url('~@/assets/home/shenqing.png') no-repeat; //background: url('~@/assets/home/shenqing.png') no-repeat;
background: url('~@/assets/home/sq.png') no-repeat;
background-size: contain; background-size: contain;
background-position: center; background-position: center;
} }
.fixedmount div:nth-child(2) p:nth-child(1) { .fixedmount div:nth-child(2) p:nth-child(1) {
height: 0.24rem; height: 0.32rem;
width: 0.24rem; width: 0.32rem;
background: url('~@/assets/home/shangjia.png') no-repeat; background: url('~@/assets/home/xq.png') no-repeat;
background-size: contain; background-size: contain;
background-position: center; background-position: center;
} }
.fixedmount div:nth-child(3) p:nth-child(1) { .fixedmount div:nth-child(3) p:nth-child(1) {
height: 0.24rem; height: 0.32rem;
width: 0.24rem; width: 0.32rem;
background: url('~@/assets/home/abilitysquare.png') no-repeat; background: url('~@/assets/home/sj.png') no-repeat;
background-size: 140% 126%; background-size: 140% 126%;
background-position: center; background-position: center;
} }

View File

@ -52,30 +52,18 @@
<span class="img"></span> <span class="img"></span>
<span>{{ item.name }}</span> <span>{{ item.name }}</span>
</div> </div>
<div <div style="
style="
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
" ">
>
<div class="oddNumbers">子单号{{ item.instanceId }}</div> <div class="oddNumbers">子单号{{ item.instanceId }}</div>
<div style="display: flex; align-items: center"> <div style="display: flex; align-items: center">
<a-button <a-button type="primary" @click="modify(props.refObj.id, item)" v-if="item.backToFirst">
type="primary"
@click="modify(props.refObj.id, item)"
v-if="item.backToFirst"
>
修改 修改
</a-button> </a-button>
<a-popconfirm <a-popconfirm v-if="!item.ended" title="是否终止此流程?" ok-text="" cancel-text=""
v-if="!item.ended" @confirm="endThis(item.instanceId)" @cancel="cancel">
title="是否终止此流程?"
ok-text="是"
cancel-text="否"
@confirm="endThis(item.instanceId)"
@cancel="cancel"
>
<a-button type="primary" danger style="margin-left: 10px"> <a-button type="primary" danger style="margin-left: 10px">
流程终止 流程终止
</a-button> </a-button>
@ -84,10 +72,9 @@
</div> </div>
<div class="box" v-if="item.list.length > 0"> <div class="box" v-if="item.list.length > 0">
<div class="ability" v-for="val in item.list" :key="val.id"> <div class="ability" v-for="val in item.list" :key="val.id"
<div :class="item.approveStatus === '通过' ? 'clickCursor' : ''">
class="left" <div class="left" :class="
:class="
val.type == '应用资源' val.type == '应用资源'
? 'yyzy' ? 'yyzy'
: val.infoList.filter( : val.infoList.filter(
@ -107,8 +94,7 @@
)[0].attrValue == '业务组件' )[0].attrValue == '业务组件'
? 'ywzj' ? 'ywzj'
: 'yyzy' : 'yyzy'
" "></div>
></div>
<div class="right"> <div class="right">
<div class="ability-top"> <div class="ability-top">
<div class="name"> <div class="name">
@ -148,6 +134,17 @@
申请结果{{ 申请结果{{
item.ended ? item.approveStatus || '审核完成' : '审核中' item.ended ? item.approveStatus || '审核完成' : '审核中'
}} }}
<a-button v-if="
item.approveStatus === '通过' &&
val.infoList.filter(
(item) => item.attrType == '上传附件'
)[0]
" @click.stop="downloadFile(item, '附件下载')" class="DownloadAttachment">
附件下载
</a-button>
<a-button v-if="item.approveStatus === '通过'" @click.stop="switchFunction(item)">
查看详情
</a-button>
</div> </div>
</div> </div>
</div> </div>
@ -162,6 +159,11 @@
<span class="channelName">{{ val.channelName }}</span> <span class="channelName">{{ val.channelName }}</span>
<span class="type">基础设施</span> <span class="type">基础设施</span>
</div> </div>
<a-button type="primary" v-if="item.approveStatus == '通过' && whoShow1.itShowXiHaiAn"
@click.stop="openVideo(val)">
视频预览
</a-button>
</div> </div>
<div class="ability-bottom"> <div class="ability-bottom">
<div class="dec2">位置{{ val.nodeName }}</div> <div class="dec2">位置{{ val.nodeName }}</div>
@ -174,7 +176,7 @@
';' + ';' +
'视频流地址:' + '视频流地址:' +
backUrl + backUrl +
'resource/hls/getHls/?channelId=' + 'resource/hls/getHls/?key=' +
val.channelId val.channelId
}} }}
</div> </div>
@ -184,37 +186,89 @@
</div> </div>
</div> </div>
</div> </div>
<!-- 单个预览弹窗 -->
<a-modal wrapClassName="single-preview-modal" v-model:visible="visible" title="视频预览" :width="960" destroyOnClose>
<template #footer></template>
<div style="width: 100%; display: flex; justify-content: center">
<div style="width: 100%; height: 100%;position: relative">
<!-- 预览视频--遮罩 -->
<div class="waterMark waterMark-left-top">{{userInfo.usernameShow}}</div>
<div class="waterMark waterMark-right-top">{{userInfo.realNameShow}}</div>
<div class="waterMark waterMark-left-bottom">{{userInfo.usernameShow}}</div>
<div class="waterMark waterMark-right-bottom">{{userInfo.realNameShow}}</div>
<vue3VideoPlay v-bind="options" />
</div>
</div>
</a-modal>
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref, defineProps, reactive } from 'vue' import { ref, defineProps, reactive, onMounted } from 'vue'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import { endProcess, getApplyForm } from '@/api/personalCenter.js' import { endProcess, getApplyForm } from '@/api/personalCenter.js'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
const router = useRouter() import {
const backUrl = ref(window.SITE_CONFIG.apiURL + '/') getStreamByChannelCode,
const props = defineProps({ } from '@/api/videoSurveillance'
import {
getUser,
} from '@/api/home'
const router = useRouter()
const backUrl = ref(window.SITE_CONFIG.apiURL + '/')
const props = defineProps({
refObj: { type: Object, default: null }, refObj: { type: Object, default: null },
}) })
const dept = reactive({}) const whoShow1 = ref(whoShow)
// eslint-disable-next-line no-undef let visible = ref(false)
if (infrastructure) { const options = reactive({
width: '912px', //
height: '513px', //
color: '#409eff', //
title: '', //
src: '', //
type: 'm3u8', //
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 dept = reactive({})
// eslint-disable-next-line no-undef
if (infrastructure) {
// eslint-disable-next-line no-undef // eslint-disable-next-line no-undef
dept.deptId = infrastructure.deptId dept.deptId = infrastructure.deptId
// eslint-disable-next-line no-undef // eslint-disable-next-line no-undef
dept.deptName = infrastructure.deptName dept.deptName = infrastructure.deptName
} }
const showThis = () => { const showThis = () => {
window.open( window.open(
window.SITE_CONFIG.previewUrl + window.SITE_CONFIG.previewUrl +
'hisense_office/onlinePreview?url=' + 'hisense_office/onlinePreview?url=' +
btoa(encodeURI(props.refObj.enclosure)) btoa(encodeURI(props.refObj.enclosure))
) )
} }
const showArr = ref([]) const showArr = ref([])
console.log(props.refObj, '=====================================') console.log(props.refObj, '=====================================')
const endThis = (instanceId) => { const endThis = (instanceId) => {
endProcess({ instanceId: instanceId }).then((res) => { endProcess({ instanceId: instanceId }).then((res) => {
if (res.data.code == 0) { if (res.data.code == 0) {
message.success('流程终止成功!') message.success('流程终止成功!')
@ -223,8 +277,8 @@
message.warning('流程终止失败!') message.warning('流程终止失败!')
} }
}) })
} }
const modify = (id, item) => { const modify = (id, item) => {
getApplyForm(id).then((res) => { getApplyForm(id).then((res) => {
console.log('修改==============>', res.data.data, item) console.log('修改==============>', res.data.data, item)
if (item.list.length > 0) { if (item.list.length > 0) {
@ -287,8 +341,8 @@
}) })
} }
}) })
} }
if (props.refObj.resourceApplication) { if (props.refObj.resourceApplication) {
showArr.value = [] showArr.value = []
for (const key in props.refObj.resourceApplication) { for (const key in props.refObj.resourceApplication) {
if (props.refObj.resourceApplication[key].length > 0) { if (props.refObj.resourceApplication[key].length > 0) {
@ -312,28 +366,118 @@
showArr.value.push(obj) showArr.value.push(obj)
} }
} }
}
const switchFunction = (data) => {
if (data.approveStatus === '通过') {
let id = data.list[0].id
const applypage = router.resolve({
path: '/details', //
query: {
id: id,
},
})
window.open(applypage.href, '_blank')
} }
}
const downloadFile = (data, name) => {
let path = data.list[0].infoList.filter(
(item) => item.attrType === '上传附件'
)[0].attrValue
console.log(path, 'obj')
const xhr = new XMLHttpRequest()
xhr.open('get', path)
xhr.responseType = 'blob'
xhr.send()
xhr.onload = function () {
if (this.status === 200 || this.status === 304) {
// IE10downloadmsSaveOrOpenBlobIE10msSaveOrOpenBlob
if ('msSaveOrOpenBlob' in navigator) {
navigator.msSaveOrOpenBlob(this.response, name)
return
}
// const blob = new Blob([this.response], { type: xhr.getResponseHeader('Content-Type') });
// const url = URL.createObjectURL(blob);
const url = URL.createObjectURL(this.response)
const a = document.createElement('a')
a.style.display = 'none'
a.href = url
a.download = name
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
URL.revokeObjectURL(url)
}
}
}
//
const openVideo = (item) => {
console.log('打开视频', item)
if (item && item.status != 1) {
return message.error('当前视频离线不可预览!')
}
const param = {
key: item.cameraId,
}
getStreamByChannelCode(param).then((res) => {
console.log('视频预览------------>', res);
console.log(res)
visible.value = true
options.src = res.data.data || ''
}).catch(err => {
message.error(err)
})
// --
// visible.value = true
// options.src = 'http://playertest.longtailvideo.com/adaptive/bipbop/gear4/prog_index.m3u8'
}
onMounted(() => {
handleUser()
})
//
const userInfo = ref(null)
const handleUser = () => {
getUser().then(res => {
console.log('res-----获取用户信息------->', res);
if (res.data.code != 0) {
return message.warning(res.data.msg)
}
userInfo.value = res.data.data || {}
userInfo.value.usernameShow = '西海岸能力超市' + (userInfo.value.deptName || '') + (userInfo.value.username || '');
userInfo.value.realNameShow = '西海岸能力超市' + (userInfo.value.deptName || '') + (userInfo.value.realName || '');
}).catch(err => {
message.warning(err)
})
}
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.title { .title {
font-size: 0.18rem; font-size: 0.18rem;
color: #000; color: #000;
font-weight: bold; font-weight: bold;
margin-bottom: 0.2rem; margin-bottom: 0.2rem;
padding-left: 0.1rem; padding-left: 0.1rem;
border-left: 0.06rem #0058e1 solid; border-left: 0.06rem #0058e1 solid;
} }
.top {
.top {
margin-bottom: 0.1rem; margin-bottom: 0.1rem;
.main { .main {
background: #eee; background: #eee;
padding: 0.2rem 0.2rem 0.1rem; padding: 0.2rem 0.2rem 0.1rem;
p { p {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
& > span {
&>span {
width: 100%; width: 100%;
} }
.enclosure { .enclosure {
width: 95%; width: 95%;
padding: 0.05rem 0.1rem; padding: 0.05rem 0.1rem;
@ -342,28 +486,33 @@
justify-content: space-between; justify-content: space-between;
margin-top: 0.05rem; margin-top: 0.05rem;
} }
.btn:hover { .btn:hover {
color: #0058e1; color: #0058e1;
cursor: pointer; cursor: pointer;
} }
} }
.item { .item {
span { span {
width: 2.5rem; width: 2.5rem;
} }
} }
} }
} }
.bottom {
.bottom {
.main { .main {
.item { .item {
border-top: 1px #eee solid; border-top: 1px #eee solid;
.deptName { .deptName {
color: #0058e1; color: #0058e1;
font-size: 0.16rem; font-size: 0.16rem;
margin-top: 0.1rem; margin-top: 0.1rem;
display: flex; display: flex;
align-items: center; align-items: center;
.img { .img {
width: 0.05rem; width: 0.05rem;
height: 0.05rem; height: 0.05rem;
@ -372,16 +521,20 @@
margin-right: 0.1rem; margin-right: 0.1rem;
} }
} }
.oddNumbers { .oddNumbers {
margin: 0.1rem 0 0 0.15rem; margin: 0.1rem 0 0 0.15rem;
} }
.box { .box {
margin-left: 0.1rem; margin-left: 0.1rem;
.ability { .ability {
height: 1.3rem; height: 1.3rem;
display: flex; display: flex;
border-bottom: 1px #eee solid; border-bottom: 1px #eee solid;
padding: 0.1rem 0; padding: 0.1rem 0;
.left { .left {
display: inline-block; display: inline-block;
width: 1.1rem; width: 1.1rem;
@ -395,6 +548,7 @@
background: url('~@/assets/home/sxt_square.png') no-repeat; background: url('~@/assets/home/sxt_square.png') no-repeat;
background-size: 100%; background-size: 100%;
} }
.yyzy { .yyzy {
background: url('~@/assets/home/yyzy_square.png') no-repeat; background: url('~@/assets/home/yyzy_square.png') no-repeat;
background-size: 100%; background-size: 100%;
@ -419,6 +573,7 @@
background: url('~@/assets/home/ywzj_square.png') no-repeat; background: url('~@/assets/home/ywzj_square.png') no-repeat;
background-size: 100%; background-size: 100%;
} }
.btn { .btn {
cursor: pointer; cursor: pointer;
color: #0087ff; color: #0087ff;
@ -427,18 +582,22 @@
border: 1px #0087ff solid; border: 1px #0087ff solid;
border-radius: 0.2rem; border-radius: 0.2rem;
} }
.right { .right {
flex: 1; flex: 1;
margin-left: 0.15rem; margin-left: 0.15rem;
.ability-top { .ability-top {
width: 100%; width: 100%;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
.name { .name {
width: 6rem; width: 6rem;
height: 0.2rem; height: 0.2rem;
display: flex; display: flex;
.channelName { .channelName {
max-width: 5rem; max-width: 5rem;
height: 0.2rem; height: 0.2rem;
@ -449,6 +608,7 @@
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
word-break: break-all; word-break: break-all;
} }
.type { .type {
background: #0087ff; background: #0087ff;
color: #fff; color: #fff;
@ -459,8 +619,10 @@
} }
} }
} }
.ability-bottom { .ability-bottom {
margin-top: 0.15rem; margin-top: 0.15rem;
// display: flex; // display: flex;
// justify-content: space-between; // justify-content: space-between;
.dec { .dec {
@ -473,6 +635,7 @@
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
word-break: break-all; word-break: break-all;
} }
.dec2 { .dec2 {
width: 7rem; width: 7rem;
height: 0.22rem; height: 0.22rem;
@ -483,15 +646,92 @@
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
word-break: break-all; word-break: break-all;
} }
// .result:hover { // .result:hover {
// color: #0058e1; // color: #0058e1;
// cursor: pointer; // cursor: pointer;
// } // }
.result {
position: relative;
}
}
}
.DownloadAttachment {
position: absolute;
right: 10px;
top: -150px;
}
.DownloadAttachment2 {
position: absolute;
right: 10px;
top: -110px;
}
}
.clickCursor {
cursor: pointer;
} }
} }
} }
} }
}
.single-preview-modal {
.ant-modal-header {
background: url(~@/assets/home/video-background.png) no-repeat;
background-size: cover;
} }
.ant-modal-title {
font-size: 0.16rem;
font-weight: 500;
color: #ffffff;
} }
.anticon {
color: #ffffff;
} }
}
//
.waterMark-left-top {
left: 50px;
top: 100px;
text-align: left;
}
//
.waterMark-right-top {
right: 50px;
top: 100px;
text-align: right;
}
//
.waterMark-left-bottom {
left: 50px;
bottom: 100px;
text-align: left;
}
//
.waterMark-right-bottom {
right: 50px;
bottom: 100px;
text-align: right;
}
.waterMark {
position: absolute;
z-index: 99999999;
color: #0058e1;
font-size: 22px;
font-weight: bold;
opacity: 0.4;
transform: rotate(-25deg);
width: 470px
}
</style> </style>

View File

@ -1,24 +1,12 @@
<template> <template>
<div class="form-container"> <DeviceApplyDetail v-if="showType === '设备申请'" :refObj="refObj"></DeviceApplyDetail>
<AbilityApplication <div class="form-container" v-else>
:refObj="refObj" <AbilityApplication :refObj="refObj" v-if="showType === '能力申请'"></AbilityApplication>
v-if="showType === '能力申请'" <PutOnTheShelf :refObj="refObj" v-else-if="showType === '能力上架'"></PutOnTheShelf>
></AbilityApplication> <OffTheShelf :refObj="refObj" v-else-if="showType === '能力下架'"></OffTheShelf>
<PutOnTheShelf
:refObj="refObj"
v-else-if="showType === '能力上架'"
></PutOnTheShelf>
<OffTheShelf
:refObj="refObj"
v-else-if="showType === '能力下架'"
></OffTheShelf>
<Demand :refObj="refObj" v-else-if="showType === '能力需求'"></Demand> <Demand :refObj="refObj" v-else-if="showType === '能力需求'"></Demand>
<Comment :refObj="refObj" v-else-if="showType === '需求评论'"></Comment> <Comment :refObj="refObj" v-else-if="showType === '需求评论'"></Comment>
<OtherApplications :refObj="refObj" v-else></OtherApplications> <OtherApplications :refObj="refObj" v-else></OtherApplications>
<!-- <div class="title">流程图</div>
<div>
<img :src="getResourceURL()" alt="" />
</div> -->
<div> <div>
<div class="title">审批详情</div> <div class="title">审批详情</div>
<template v-for="item in dataSource.data" :key="item"> <template v-for="item in dataSource.data" :key="item">
@ -35,43 +23,46 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import AbilityApplication from './AbilityApplication.vue' import AbilityApplication from './AbilityApplication.vue'
import PutOnTheShelf from './PutOnTheShelf .vue' import PutOnTheShelf from './PutOnTheShelf .vue'
import OffTheShelf from './OffTheShelf.vue' import OffTheShelf from './OffTheShelf.vue'
import Demand from './Demand.vue' import Demand from './Demand.vue'
import Comment from './Comment.vue' import Comment from './Comment.vue'
import OtherApplications from '@/views/personalCenter/components/OtherApplications ' import DeviceApplyDetail from './DeviceApplyDetail.vue'
import { onMounted, reactive, defineProps, ref } from 'vue' import OtherApplications from '@/views/personalCenter/components/OtherApplications '
import Cookies from 'js-cookie' import { onMounted, reactive, defineProps, ref } from 'vue'
// import { baseURL } from '@/config' import Cookies from 'js-cookie'
import qs from 'qs' // import { baseURL } from '@/config'
import { import qs from 'qs'
import {
getApplyForm, getApplyForm,
getTaskHandleDetailInfo, getTaskHandleDetailInfo,
getDemandForm, getDemandForm,
nengliziyuanshangjiaapply, nengliziyuanshangjiaapply,
getTaskVariables, getTaskVariables,
} from '@/api/personalCenter' } from '@/api/personalCenter'
import { selectOneDel } from '@/api/home' import { selectOneDel } from '@/api/home'
const props = defineProps({ const props = defineProps({
processDefinitionName: { type: String, default: null }, processDefinitionName: { type: String, default: null },
businessKey: { type: String, default: null }, businessKey: { type: String, default: null },
processInstanceId: { type: String, default: null }, processInstanceId: { type: String, default: null },
resourceId: { type: String, default: null }, resourceId: { type: String, default: null },
refObj: { type: Object, default: null }, refObj: { type: Object, default: null },
showType: { type: String, default: null }, showType: { type: String, default: null },
}) })
const refObj = ref({}) const refObj = ref({})
const showType = ref('') const showType = ref('')
// eslint-disable-next-line vue/no-setup-props-destructure // eslint-disable-next-line vue/no-setup-props-destructure
refObj.value = props.refObj refObj.value = props.refObj
// eslint-disable-next-line vue/no-setup-props-destructure // eslint-disable-next-line vue/no-setup-props-destructure
showType.value = props.showType showType.value = props.showType
// //
const dataSource = reactive({ data: [] }) const dataSource = reactive({ data: [] })
// console.log(props.refObj, '---------------------------------------') console.log('refObj------------>', refObj);
const downloadFile = (path, name) => { // console.log(props.refObj, '---------------------------------------')
const downloadFile = (path, name) => {
const xhr = new XMLHttpRequest() const xhr = new XMLHttpRequest()
xhr.open('get', path) xhr.open('get', path)
xhr.responseType = 'blob' xhr.responseType = 'blob'
@ -96,9 +87,9 @@
URL.revokeObjectURL(url) URL.revokeObjectURL(url)
} }
} }
} }
// //
const formName = reactive({ const formName = reactive({
user: '', user: '',
phone: '', phone: '',
unit: '', unit: '',
@ -107,12 +98,12 @@
scene: '', scene: '',
basis: '', basis: '',
id: '', id: '',
}) })
let shifoushizujian = ref('') let shifoushizujian = ref('')
let nameNotShow = ref('') let nameNotShow = ref('')
let algorithmShow = ref('') let algorithmShow = ref('')
const dataForm = reactive({ data: {} }) const dataForm = reactive({ data: {} })
const columns = [ const columns = [
{ {
title: '任务名称', title: '任务名称',
dataIndex: 'activityName', dataIndex: 'activityName',
@ -143,8 +134,8 @@
dataIndex: 'durationInSeconds', dataIndex: 'durationInSeconds',
key: 'durationInSeconds', key: 'durationInSeconds',
}, },
] ]
const getInfo = () => { const getInfo = () => {
console.log(props.processInstanceId, '============================') console.log(props.processInstanceId, '============================')
if (props.processDefinitionName == '能力申请') { if (props.processDefinitionName == '能力申请') {
// getTaskVariables({ taskId: props.processInstanceId }).then((res) => { // getTaskVariables({ taskId: props.processInstanceId }).then((res) => {
@ -208,9 +199,9 @@
dataForm.data = res.data.data dataForm.data = res.data.data
}) })
} }
} }
const getLiuZhuanInfo = () => { const getLiuZhuanInfo = () => {
const params = qs.stringify({ const params = qs.stringify({
processInstanceId: props.processInstanceId, processInstanceId: props.processInstanceId,
}) })
@ -221,9 +212,9 @@
}) })
dataSource.data.push([props.processInstanceId, arr]) dataSource.data.push([props.processInstanceId, arr])
}) })
} }
onMounted(() => { onMounted(() => {
// getInfo() // getInfo()
if (props.refObj.resourceApplication) { if (props.refObj.resourceApplication) {
dataSource.data = [] dataSource.data = []
@ -237,9 +228,9 @@
} else { } else {
getLiuZhuanInfo() getLiuZhuanInfo()
} }
}) })
const getResourceURL = () => { const getResourceURL = () => {
console.log('111111111111111111111111111111', Cookies.get('token')) console.log('111111111111111111111111111111', Cookies.get('token'))
const params = qs.stringify({ const params = qs.stringify({
token: Cookies.get('token'), token: Cookies.get('token'),
@ -247,7 +238,7 @@
processInstanceId: props.processInstanceId, processInstanceId: props.processInstanceId,
}) })
return `${window.SITE_CONFIG.apiURL}/act/his/getInstImage?${params}` return `${window.SITE_CONFIG.apiURL}/act/his/getInstImage?${params}`
} }
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
@ -255,6 +246,7 @@
height: 6rem; height: 6rem;
overflow-y: scroll; overflow-y: scroll;
padding: 20px 20px 30px 20px; padding: 20px 20px 30px 20px;
.title { .title {
font-size: 18px; font-size: 18px;
color: #000; color: #000;
@ -265,20 +257,23 @@
border-left: 6px #0058e1 solid; border-left: 6px #0058e1 solid;
} }
} }
:deep(.ant-table-thead) > tr > .ant-table-cell {
:deep(.ant-table-thead)>tr>.ant-table-cell {
background: #0087ff; background: #0087ff;
color: #fff; color: #fff;
border: none; border: none;
text-align: center; text-align: center;
font-size: 16px; font-size: 16px;
} }
:deep(.ant-table-tbody) > tr > .ant-table-cell:nth-child(5) {
:deep(.ant-table-tbody)>tr>.ant-table-cell:nth-child(5) {
// width: 110px; // width: 110px;
// display: inline-block; // display: inline-block;
// white-space: nowrap; // white-space: nowrap;
// overflow: hidden; // overflow: hidden;
// text-overflow: ellipsis; // text-overflow: ellipsis;
} }
.oddNumbers { .oddNumbers {
margin-bottom: 0.05rem; margin-bottom: 0.05rem;
} }

View File

@ -0,0 +1,43 @@
<!--
* @Description: 我的申请 设备申请 查看详情
-->
<template>
<div class="device-detail-box">
<div v-for="(db, key) in wrjData" :key="key">
<template v-if="typeof db == 'object'">
<div style="
font-size: 20px;
font-weight: 600;
margin: 10px 0;
text-align: center;
">
{{ db.attrType || '--' }}
</div>
<template v-if="db.attrValue">
<div style="padding: 0 30px" v-for="(value, key2) in JSON.parse(db.attrValue)" :key="value">
{{ key2 + '' + value }}
</div>
</template>
</template>
</div>
</div>
</template>
<script setup>
import { ref, defineProps, watch } from 'vue'
const props = defineProps({
refObj: { type: Object, default: null },
})
const wrjData = ref([])
wrjData.value = props.refObj.deviceAttrDTOList || []
watch(() => props.refObj, (val) => {
wrjData.value = val.deviceAttrDTOList || []
}, { immediate: true, deep: true })
</script>
<style lang="less" scoped>
.device-detail-box {
height: 6rem;
overflow-y: auto;
}
</style>

View File

@ -1,23 +1,6 @@
<template> <template>
<div class="on-the-right-side-of-the-list"> <div class="on-the-right-side-of-the-list">
<div class="title" style="margin-bottom: 0.2rem">我的申请</div> <div class="title" style="margin-bottom: 0.2rem">我的申请</div>
<!-- <div class="sousuokuang">
<a-input-search
v-model:value="name"
placeholder="请输入关键词"
enter-button="搜索"
size="large"
@change="onSearch"
@search="getApplyList(name)"
/>
<a-button
type="primary"
style="width: 90px; height: 36px; margin-left: 10px"
@click="replacement"
>
重置
</a-button>
</div> -->
<div class="tab" style="margin-bottom: 0.1rem"> <div class="tab" style="margin-bottom: 0.1rem">
<span>类型</span> <span>类型</span>
<div <div
@ -33,7 +16,7 @@
<span>申请状态</span> <span>申请状态</span>
<div <div
:class="tabIndex == index ? 'tabclass' : ' '" :class="tabIndex == index ? 'tabclass' : ' '"
@click="tabqiehuan(item, index)" @click="changeApplyState(item, index)"
v-for="(item, index) in tabList" v-for="(item, index) in tabList"
:key="index" :key="index"
> >
@ -64,140 +47,36 @@
{{ item.cameraList ? item.system : item.title }} {{ item.cameraList ? item.system : item.title }}
</template> </template>
<div class="content-body-title"> <div class="content-body-title">
<!-- <span
v-if="item.cameraList && item.ended"
@click="showVideoList(item)"
>
名称{{ item.cameraList ? item.system : item.title }}
</span> -->
<span> <span>
名称{{ item.cameraList ? item.system : item.title }} 名称{{ item.cameraList ? item.system : item.title }}
</span> </span>
<div></div> <div></div>
</div> </div>
</a-tooltip> </a-tooltip>
<!-- <div class="content-body-content">
<p class="content-body-content-son">
流程类型{{ item.processDefinitionName }}
</p>
</div> -->
<div class="content-body-content"> <div class="content-body-content">
<p class="content-body-content-son"> <p class="content-body-content-son" v-if="typeName !== '设备申请'">
审核结果{{ item.ended ? '审核完成' : '审核中' }} 审核结果{{ item.ended ? '审核完成' : '审核中' }}
</p> </p>
<p class="content-body-content-son" v-else>
审核结果{{ item.state === 0 ? '审核中' : '审核完成' }}
</p>
</div> </div>
<!-- <div class="content-body-content" v-if="item.currentTaskList">
<p class="content-body-content-son" v-if="!item.backToFirst">
当前节点{{ item.currentTaskList[0].taskName }}
</p>
</div> -->
<!-- <div>
<p
class="content-body-content-son"
v-if="item.name === '申请摄像头列表'"
>
<span>
申请结果{{
'列表地址:' +
backUrl +
'resource/getApplyCameraList/' +
item.processInstanceId +
';' +
'视频流地址:' +
backUrl +
'/resource/hls/getHls/?channelId='
}}
</span>
<a-button
type="primary"
size="small"
@click="
copyComment(
'列表地址:' +
backUrl +
'resource/getApplyCameraList/' +
item.processInstanceId +
';' +
'视频流地址:' +
backUrl +
'/resource/hls/getHls/?channelId='
)
"
>
复制
</a-button>
</p>
<template v-else>
<p
class="content-body-content-son"
v-if="item.approveStatus == '通过'"
>
<span>申请结果{{ item.comment || '暂无' }}</span>
<a-button
v-if="item.comment"
type="primary"
size="small"
@click="copyComment(item.comment)"
>
复制
</a-button>
</p>
</template>
</div> -->
<!-- <div class="content-body-title"></div>
<div class="content-body-content">
<p class="content-body-content-son"></p>
<div></div>
</div> -->
<!-- <div class="content-body-bottom" v-if="item.currentTaskList">
<div>申请日期{{ item.currentTaskList[0].createTime }}</div>
<div>审批人{{ item.currentTaskList[0].assigneeName }}</div>
</div> -->
<div class="content-body-bottom"> <div class="content-body-bottom">
<div>申请日期{{ item.createDate || item.startTime }}</div> <div>申请日期{{ item.createDate || item.startTime }}</div>
<div></div> <div></div>
</div> </div>
<div class="button-box"> <div class="button-box">
<div
class="button"
v-if="typeName == '设备申请' && phoneSate.includes(item.state)"
@click="showPhoneModal(item)"
>
联系方式
</div>
<div class="button" @click="showDetail(item)">查看详情</div> <div class="button" @click="showDetail(item)">查看详情</div>
<div class="button" @click="showAdd(item)" v-if="item.backToFirst"> <div class="button" @click="showAdd(item)" v-if="item.backToFirst">
修改 修改
</div> </div>
<!-- <div
v-if="
!(
(item.processDefinitionName == '能力需求申请' ||
item.processDefinitionName == '能力资源上架') &&
item.ended == false
)
"
v-show="
item.resourceStatusTip == '正常' &&
item.ended &&
item.processDefinitionName !== '能力申请'
"
class="button button-details"
@click="
viewDetail(
item.processDefinitionName,
item.resourceId,
item.ended,
item.businessKey
)
"
>
查看详情
</div> -->
<!-- <div
class="button button-state"
:class="{
buttonAgree: item.ended,
backToFirst: item.backToFirst,
}"
>
{{
item.ended ? '审核完成' : item.backToFirst ? '被驳回' : '审核中'
}}
</div> -->
<svg <svg
t="1652233950228" t="1652233950228"
class="icon" class="icon"
@ -300,20 +179,29 @@
</a-table> </a-table>
</a-modal> </a-modal>
</div> </div>
<!-- 联系方式弹框 -->
<a-modal
v-model:visible="phoneVisible"
title="提示"
@ok="phoneVisible = false"
>
<!-- 工业信息化局那个号电话配这个号199 6399 0996 -->
<p>请联系工业信息化局电话199 6399 0996</p>
</a-modal>
</template> </template>
<script setup> <script setup>
// import qs from 'qs' import { onMounted, reactive, ref, onBeforeUnmount, h } from 'vue'
import { onMounted, reactive, ref, onBeforeUnmount } from 'vue'
import { import {
getMyProcessInstancePage, getMyProcessInstancePage,
// getTaskHandleDetailInfo,
getTabilityapplication, getTabilityapplication,
getByApplyFlag, getByApplyFlag,
nengliziyuanshangjiaapply, nengliziyuanshangjiaapply,
getDemandForm, getDemandForm,
demandComment, demandComment,
// getProcDefBizRoute, deviceApplylist,
getDeviceDetail,
} from '@/api/personalCenter' } from '@/api/personalCenter'
import { import {
updateRes, updateRes,
@ -326,21 +214,36 @@
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import ApplyDetails from '@/views/personalCenter/components/ApplyDetails' import ApplyDetails from '@/views/personalCenter/components/ApplyDetails'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
import * as moment from 'moment'
const router = useRouter() const router = useRouter()
let typeList = ref([ let typeList = ref([
'能力申请', '能力申请',
'能力评价',
'能力上架', '能力上架',
'能力下架', '能力下架',
'能力需求', '能力需求',
'需求评论', '需求评论',
'能力评价',
]) ])
// 西-
let isXiHaiAn = whoShow.itShowXiHaiAn
const phoneSate = ref([2, 3])
if (isXiHaiAn) {
typeList.value.push('设备申请')
}
const typeStrObj = {
能力上架: 'resourcemountapply',
能力下架: 'resourcundercarriageapply',
能力需求: 'abilitydemandapply',
需求评论: 'comment_review',
}
let tabList = ref(['全部', '审核中', '审核完成']) let tabList = ref(['全部', '审核中', '审核完成'])
const contentList = reactive({ data: [] }) const contentList = reactive({ data: [] })
// const contentListClone = reactive({ data: [] })
// let contentListLength = contentList.length
let tabIndex = ref(0) let tabIndex = ref(0)
let typeIndex = ref(0) let typeIndex = ref(0)
let typeName = ref(typeList.value[0])
const videoVisible = ref(false) const videoVisible = ref(false)
const numFlag = ref(true) const numFlag = ref(true)
const columns = ref([ const columns = ref([
@ -350,8 +253,9 @@
}, },
]) ])
const xVideoList = ref([]) const xVideoList = ref([])
function tabqiehuan(item, index) {
// debugger //
function changeApplyState(item, index) {
tabIndex.value = index tabIndex.value = index
switch (item) { switch (item) {
case '审核中': case '审核中':
@ -373,14 +277,15 @@
} }
// //
const changeType = (item, index) => { const changeType = (item, index) => {
console.log('item, index-----选择类型------->', item, index)
numFlag.value = true numFlag.value = true
num.value = [] num.value = []
showType.value = '' showType.value = ''
console.log(item, index)
tabIndex.value = 0 tabIndex.value = 0
ended.value = '' ended.value = ''
page.value = 1 page.value = 1
typeIndex.value = index typeIndex.value = index
typeName.value = item
getApplyList() getApplyList()
} }
let name = ref('') let name = ref('')
@ -396,13 +301,22 @@
const taskId = ref('') const taskId = ref('')
const backUrl = ref(window.SITE_CONFIG.apiURL + '/') const backUrl = ref(window.SITE_CONFIG.apiURL + '/')
const refObj = ref({}) const refObj = ref({})
const showDetail = (item) => { const showDetail = (item) => {
console.log('showDetail', item) // 西-
// getProcDefBizRoute(item.processDefinitionId) if (isXiHaiAn) {
if (typeIndex.value == 0 && item.applyFlag) { if (item.expireDate) {
let diff = moment().diff(moment(item.expireDate), 'seconds')
if (diff > 0) {
return message.error('当前申请已过期!')
}
}
}
if (typeName.value == '能力申请' && item.applyFlag) {
getByApplyFlag(item.applyFlag).then((res) => { getByApplyFlag(item.applyFlag).then((res) => {
if (res.data.code == 0) { if (res.data.code == 0) {
refObj.value = res.data.data refObj.value = res.data.data
detailsVisible.value = true detailsVisible.value = true
processDefinitionName.value = item.processDefinitionName processDefinitionName.value = item.processDefinitionName
businessKey.value = item.businessKey businessKey.value = item.businessKey
@ -412,7 +326,23 @@
message.error('数据请求失败!') message.error('数据请求失败!')
} }
}) })
} else if (typeIndex.value !== 1) { } else if (typeName.value == '设备申请') {
getDeviceDetailInfo(item.deviceId)
.then((res) => {
if (res.data.code == 0) {
refObj.value = res.data.data
detailsVisible.value = true
processDefinitionName.value = item.processDefinitionName
// businessKey.value = item.businessKey
// processInstanceId.value = item.processInstanceId
// resourceId.value = item.resourceId
}
})
.catch((err) => {})
} else if (
Object.keys(typeStrObj).includes(typeName.value) ||
typeName.value == '能力评价'
) {
refObj.value = item refObj.value = item
detailsVisible.value = true detailsVisible.value = true
processDefinitionName.value = item.processDefinitionName processDefinitionName.value = item.processDefinitionName
@ -446,10 +376,6 @@
oInput.remove() oInput.remove()
} }
const showAdd = (item) => { const showAdd = (item) => {
// resourcemountapply
// resourcundercarriageapply
// abilitydemandapply
// abilityprocess
if (item.processDefinitionKey == 'resourcemountapply') { if (item.processDefinitionKey == 'resourcemountapply') {
const data = { const data = {
id: item.resourceId, id: item.resourceId,
@ -582,7 +508,7 @@
if (ended.value === '') { if (ended.value === '') {
delete params.ended delete params.ended
} }
if (typeIndex.value == 0) { if (typeName.value == '能力申请') {
getTabilityapplication(params).then((res) => { getTabilityapplication(params).then((res) => {
contentList.data = [] contentList.data = []
console.log('获取我的申请===============>', res.data.data) console.log('获取我的申请===============>', res.data.data)
@ -591,25 +517,32 @@
showType.value = '能力申请' showType.value = '能力申请'
initNum2() initNum2()
}) })
} else if (typeIndex.value !== 1) { } else if (typeName.value == '能力评价') {
switch (typeIndex.value) { contentList.data = []
case 2: num.value = []
params.processDefinitionKey = 'resourcemountapply' showType.value = ''
processDefinitionKey.value = 'resourcemountapply' } else if (typeName.value == '设备申请') {
break let _state =
case 3: ended.value === ''
params.processDefinitionKey = 'resourcundercarriageapply' ? '全部'
processDefinitionKey.value = 'resourcundercarriageapply' : ended.value === true
break ? '审核完成'
case 4: : '审核中'
params.processDefinitionKey = 'abilitydemandapply' getDeviceApply(_state)
processDefinitionKey.value = 'abilitydemandapply' .then((res) => {
break if (res.data.code == 0) {
case 5: contentList.data = []
params.processDefinitionKey = 'comment_review' contentList.data = res.data.data.list || []
processDefinitionKey.value = 'comment_review' total.value = res.data.data.total
break showType.value = '设备申请'
//
getDeviceNum()
} }
})
.catch((err) => {})
} else if (Object.keys(typeStrObj).includes(typeName.value)) {
processDefinitionKey.value = typeStrObj[typeName.value]
params.processDefinitionKey = processDefinitionKey.value
getMyProcessInstancePage(params).then((res) => { getMyProcessInstancePage(params).then((res) => {
contentList.data = [] contentList.data = []
// initNum(name.value) // initNum(name.value)
@ -637,7 +570,6 @@
showType.value = '能力下架' showType.value = '能力下架'
}) })
}) })
// params.processDefinitionKey = 'resourcundercarriageapply'
break break
case 4: case 4:
contentList.data.map((val) => { contentList.data.map((val) => {
@ -649,7 +581,6 @@
showType.value = '能力需求' showType.value = '能力需求'
}) })
}) })
// params.processDefinitionKey = 'abilitydemandapply'
break break
case 5: case 5:
contentList.data.map((val) => { contentList.data.map((val) => {
@ -661,31 +592,8 @@
showType.value = '需求评论' showType.value = '需求评论'
}) })
}) })
// params.processDefinitionKey = 'comment_review'
break break
} }
// if (contentList.data && contentList.data.length > 0) {
// contentList.data.map((item) => {
// const param = {
// page: 1,
// limit: 4,
// processInstanceId: item.processInstanceId,
// }
// getTaskHandleDetailInfo(qs.stringify(param)).then((res) => {
// console.log('', res.data.data, res.data.data[0].comment)
// const result = res.data.data
// if (result && result.length > 2) {
// item.comment =
// result[0].comment.length > result[1].comment.length
// ? result[0].comment
// : result[1].comment
// } else {
// item.comment = result[0].comment
// }
// })
// return item
// })
// }
}) })
} else { } else {
contentList.data = [] contentList.data = []
@ -756,6 +664,67 @@
} }
}) })
} }
// 西 todo
const getDeviceApply = (state) => {
return new Promise((resolve, reject) => {
let _data = {
page: page.value,
limit: 4,
state,
}
deviceApplylist(_data)
.then((res) => {
resolve(res)
console.log('res----设备申请-------->', res)
})
.catch((err) => {
reject(err)
console.log('err------------>', err)
})
})
}
// 西--
const getDeviceDetailInfo = (deviceId) => {
return new Promise((resolve, reject) => {
getDeviceDetail(deviceId)
.then((res) => {
resolve(res)
console.log('res----查询详情-------->', res)
})
.catch((err) => {
reject(err)
console.log('err------------>', err)
})
})
}
// 西-,
const getDeviceNum = () => {
if (!numFlag.value) {
return
}
num.value = []
Promise.all([getDeviceApply('审核中'), getDeviceApply('审核完成')])
.then((res) => {
console.log('res-----数量------->', res)
let unfinished = res[0] && res[0].data && res[0].data.data
let finished = res[1] && res[1].data && res[1].data.data
num.value.unfinished = unfinished.total || ''
num.value.finished = finished.total || ''
numFlag.value = false
})
.catch((err) => {
console.log('err------------>', err)
})
}
const phoneVisible = ref(false)
const showPhoneModal = () => {
phoneVisible.value = true
}
mybus.on('closeModal', (obj) => { mybus.on('closeModal', (obj) => {
detailsVisible.value = false detailsVisible.value = false
changeType(obj.type, obj.index) changeType(obj.type, obj.index)
@ -781,17 +750,21 @@
flex-direction: column; flex-direction: column;
font-size: 16px; font-size: 16px;
justify-content: left; justify-content: left;
.title { .title {
font-size: 20px; font-size: 20px;
color: #000000; color: #000000;
font-family: 'Alibaba PuHuiTi'; font-family: 'Alibaba PuHuiTi';
font-weight: 500; font-weight: 500;
} }
.sousuokuang { .sousuokuang {
margin: 20px 0px 21px 0px; margin: 20px 0px 21px 0px;
.ant-input-search { .ant-input-search {
max-width: 490px; max-width: 490px;
} }
:deep(.ant-input) { :deep(.ant-input) {
width: 400px; width: 400px;
height: 36px; height: 36px;
@ -799,9 +772,11 @@
color: #b2b2b2; color: #b2b2b2;
background: #f5f5f5; background: #f5f5f5;
} }
:deep(.ant-input-group-addon) { :deep(.ant-input-group-addon) {
display: inline-block; display: inline-block;
margin-left: 10px; margin-left: 10px;
.ant-input-search-button { .ant-input-search-button {
width: 80px; width: 80px;
height: 36px; height: 36px;
@ -810,10 +785,12 @@
} }
} }
} }
.tab { .tab {
display: flex; display: flex;
font-size: 14px; font-size: 14px;
color: #999999; color: #999999;
div { div {
// width: 70px; // width: 70px;
padding: 5px 10px; padding: 5px 10px;
@ -826,14 +803,17 @@
color: #666666; color: #666666;
cursor: pointer; cursor: pointer;
} }
.tabclass { .tabclass {
border: 1px solid #0087ff; border: 1px solid #0087ff;
color: #0087ff; color: #0087ff;
} }
} }
.content { .content {
padding-right: 10px; padding-right: 10px;
height: 510px; height: 510px;
.content-body { .content-body {
padding-bottom: 20px; padding-bottom: 20px;
padding-top: 20px; padding-top: 20px;
@ -841,6 +821,7 @@
height: 150px; height: 150px;
border-bottom: #cccccc 1px solid; border-bottom: #cccccc 1px solid;
position: relative; position: relative;
.content-body-title { .content-body-title {
min-width: 100px; min-width: 100px;
max-width: 900px; max-width: 900px;
@ -853,6 +834,7 @@
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
} }
.content-body-content { .content-body-content {
margin-top: 10px; margin-top: 10px;
margin-bottom: 10px; margin-bottom: 10px;
@ -860,6 +842,7 @@
/* width: 720px; */ /* width: 720px; */
display: inline-block; display: inline-block;
} }
.content-body-content-son { .content-body-content-son {
line-height: 16px; line-height: 16px;
font-size: 12px; font-size: 12px;
@ -872,6 +855,7 @@
// -webkit-box-orient: vertical; // -webkit-box-orient: vertical;
display: flex; display: flex;
color: #999999; color: #999999;
span { span {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
@ -883,16 +867,19 @@
word-break: break-all; word-break: break-all;
} }
} }
.content-body-bottom { .content-body-bottom {
display: flex; display: flex;
color: #cccccc; color: #cccccc;
font-size: 12px; font-size: 12px;
div:first-child { div:first-child {
margin-right: 30px; margin-right: 30px;
} }
} }
} }
} }
.bottom { .bottom {
position: absolute; position: absolute;
bottom: 30px; bottom: 30px;
@ -919,13 +906,16 @@
line-height: 30px; line-height: 30px;
cursor: pointer; cursor: pointer;
} }
.buttonAgree { .buttonAgree {
background-color: #49c988; background-color: #49c988;
} }
.backToFirst { .backToFirst {
background-color: rgb(214, 91, 91); background-color: rgb(214, 91, 91);
} }
} }
:deep(.ant-badge-count) { :deep(.ant-badge-count) {
top: -5px; top: -5px;
right: -10px; right: -10px;

View File

@ -2,58 +2,32 @@
<div class="on-the-right-side-of-the-list"> <div class="on-the-right-side-of-the-list">
<div class="title">我的发布</div> <div class="title">我的发布</div>
<div class="sousuokuang"> <div class="sousuokuang">
<a-input-search <a-input-search v-model:value="name" placeholder="请输入关键词" enter-button="搜索" size="large" @change="onSearch"
v-model:value="name" @search="getApplyList(tabname)" />
placeholder="请输入关键词" <a-button type="primary" style="width: 0.9rem; height: 0.36rem; margin-left: 0.1rem" @click="showModal2">
enter-button="搜索"
size="large"
@change="onSearch"
@search="getApplyList(tabname)"
/>
<a-button
type="primary"
style="width: 0.9rem; height: 0.36rem; margin-left: 0.1rem"
@click="showModal2"
>
能力上架 能力上架
</a-button> </a-button>
<a-button <a-button type="primary" style="width: 0.9rem; height: 0.36rem; margin-left: 0.1rem" @click="replacement">
type="primary"
style="width: 0.9rem; height: 0.36rem; margin-left: 0.1rem"
@click="replacement"
>
重置 重置
</a-button> </a-button>
</div> </div>
<div class="tab"> <div class="tab">
<span>能力类型</span> <span>能力类型</span>
<div <div :class="tabIndex == index ? 'tabclass' : ' '" @click="tabqiehuan(item, index)"
:class="tabIndex == index ? 'tabclass' : ' '" v-for="(item, index) in tabList" :key="index">
@click="tabqiehuan(item, index)"
v-for="(item, index) in tabList"
:key="index"
>
{{ item }} {{ item }}
</div> </div>
</div> </div>
<div class="tab" style="margin-top: 0.1rem"> <div class="tab" style="margin-top: 0.1rem">
<span>能力状态</span> <span>能力状态</span>
<div <div :class="tabIndex2 == index ? 'tabclass' : ' '" @click="tabqiehuan2(item, index)"
:class="tabIndex2 == index ? 'tabclass' : ' '" v-for="(item, index) in tabList2" :key="index">
@click="tabqiehuan2(item, index)"
v-for="(item, index) in tabList2"
:key="index"
>
{{ item }} {{ item }}
</div> </div>
</div> </div>
<div v-if="dataList.data.length > 0"> <div v-if="dataList.data.length > 0">
<div class="content"> <div class="content">
<div <div class="content-body" v-for="item in dataList.data" :key="item.index">
class="content-body"
v-for="item in dataList.data"
:key="item.index"
>
<div class="content-body-title" v-if="item.currentTaskList"> <div class="content-body-title" v-if="item.currentTaskList">
<!-- {{ item.currentTaskList[0].taskName }} --> <!-- {{ item.currentTaskList[0].taskName }} -->
</div> </div>
@ -71,57 +45,27 @@
<!-- <div></div> --> <!-- <div></div> -->
</div> </div>
<div class="button"> <div class="button">
<div <div @click="showModal(item)" v-if="item.delFlag != 2" :class="item.delFlag != 0 ? 'del' : ''">
@click="showModal(item)"
v-if="item.delFlag != 2"
:class="item.delFlag != 0 ? 'del' : ''"
>
能力下架 能力下架
</div> </div>
<div <div @click="showDetail(item)" v-if="item.delFlag != 2" :class="item.delFlag != 0 ? 'del' : ''">
@click="showDetail(item)"
v-if="item.delFlag != 2"
:class="item.delFlag != 0 ? 'del' : ''"
>
查看详情 查看详情
</div> </div>
<svg <svg t="1652233950228" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
t="1652233950228" p-id="5970" data-spm-anchor-id="a313x.7781069.0.i8" width="80" height="80"
class="icon" v-if="item.delFlag == 4 || item.delFlag == 5" style="position: absolute; top: 0.2rem; left: 0.1rem">
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="5970"
data-spm-anchor-id="a313x.7781069.0.i8"
width="80"
height="80"
v-if="item.delFlag == 4 || item.delFlag == 5"
style="position: absolute; top: 0.2rem; left: 0.1rem"
>
<path <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" 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"
fill="#515151" fill="#515151" opacity=".5" p-id="5971"></path>
opacity=".5"
p-id="5971"
></path>
<path <path
d="M898.12053 289.2C775.02053 76 502.42053 2.9 289.22053 126 76.02053 249.1 3.02053 521.6 126.02053 734.8 249.12053 948 521.62053 1021.1 734.82053 898 947.92053 774.9 1021.02053 502.4 898.12053 289.2zM731.62053 892.8C521.32053 1014.3 252.42053 942.2 131.02053 731.9 9.52053 521.6 81.62053 252.7 291.92053 131.3 502.12053 9.9 771.02053 81.8 892.42053 292c121.5 210.3 49.5 479.3-160.8 600.8z" d="M898.12053 289.2C775.02053 76 502.42053 2.9 289.22053 126 76.02053 249.1 3.02053 521.6 126.02053 734.8 249.12053 948 521.62053 1021.1 734.82053 898 947.92053 774.9 1021.02053 502.4 898.12053 289.2zM731.62053 892.8C521.32053 1014.3 252.42053 942.2 131.02053 731.9 9.52053 521.6 81.62053 252.7 291.92053 131.3 502.12053 9.9 771.02053 81.8 892.42053 292c121.5 210.3 49.5 479.3-160.8 600.8z"
fill="#515151" fill="#515151" opacity=".5" p-id="5972"></path>
opacity=".5"
p-id="5972"
></path>
<path <path
d="M323.62053 176.8c3.6-2 6 0.8 8.8 2.8 6 4.4 12.4 8.8 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 13.6-5.6 20.8 4.8 6 10 11.6 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.4 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.4-1.9-3.9-4.7-4.4-7.7l-7.2-20.5-25.2-6.4c-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 4-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.7-0.8-0.3-1.6 0.6-2zM200.72053 289.2c3.6-2 6 0.8 8.8 2.8 6.4 4.4 12.4 8.4 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 13.6-5.6 20.8 4.8 6 10 11.6 14.8 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.4-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.8 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.2-2-3.8-4.7-4.4-7.7l-7.2-20.5c-8.4-2-16.8-4.4-25.2-6.4-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 3.6-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.4-1.2 0-1.6 0.8-2.4l0.2 0.4z m276.6-159.6c3.6-2 6 0.8 8.8 2.8 6.4 4.4 12.4 8.4 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 14-5.6 20.8 4.8 6 10 12 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.8 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.2-2-3.8-4.7-4.4-7.7l-7.2-20.5-25.2-6.4c-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 4-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.8-1.2-0.4-1.6 0.4-2.4l0.2 0.4z m141.9 29.6c3.6-2 6 0.8 8.8 2.8l18.8 12.8c7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 14-5.6 20.8 4.8 6 10 12 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4-7.7 0.4-15.2 0.8-22.4 0.8-4.4 6.8-8.4 13.2-12.8 20-1.6 2.4-4 5.1-7.2 4-2.4-1.9-3.9-4.7-4.4-7.7l-7.2-20.5c-8.4-2-16.8-4.4-25.2-6.4-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 4-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.5-1.2 0.2-1.6 0.6-2zM150.02053 430c3.6-2 6 0.8 8.8 2.8 6.4 4.4 12.4 8.4 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-4 14-5.6 20.8 4.8 6 10 11.6 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.8 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.2-2-3.8-4.7-4.4-7.7l-7.2-20.5-25.2-6.4c-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 3.6-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.7-0.8-0.3-1.5 0.6-2z m558.9 414.4c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-2-14-3.6-20.8-5.6-2.8-7.2-5.1-14.4-7.7-21.6-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.1 4.4-0.7 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.5-1.1 0.8-1.1 1.6-1.1h0.1z m-158.8 50c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.1-3.7-5.6-3.6-7.7-4-6.8-1.6-14-3.6-20.8-5.6l-7.7-22c-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.3 4.3-0.9 6.4-1.6l14.4-4.8c2-1 4.2-1.7 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.4-0.8 0.8-0.8 1.7-0.7z m276.5-159.6c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-2-14-3.6-20.8-5.6-2.8-7.2-5.1-14.4-7.7-21.6-1.2-3.6-2.8-6.4-5.6-6.8s-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.2 4.4-0.7 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0-0.8 0.8-1.2 1.6-1.2l0.1 0.1z m45.6-137.6c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-1.6-14-3.6-20.8-5.6l-7.7-22c-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.3 4.3-0.9 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.2-0.7 0.6-0.7 1.4-0.7h0.3zM402.72053 868c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-2-14-3.6-20.8-5.6-2.8-7.2-5.1-14.4-7.7-21.6-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.3 4.3-0.9 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.5-0.8 1-1.1 1.7-1.1z" d="M323.62053 176.8c3.6-2 6 0.8 8.8 2.8 6 4.4 12.4 8.8 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 13.6-5.6 20.8 4.8 6 10 11.6 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.4 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.4-1.9-3.9-4.7-4.4-7.7l-7.2-20.5-25.2-6.4c-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 4-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.7-0.8-0.3-1.6 0.6-2zM200.72053 289.2c3.6-2 6 0.8 8.8 2.8 6.4 4.4 12.4 8.4 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 13.6-5.6 20.8 4.8 6 10 11.6 14.8 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.4-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.8 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.2-2-3.8-4.7-4.4-7.7l-7.2-20.5c-8.4-2-16.8-4.4-25.2-6.4-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 3.6-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.4-1.2 0-1.6 0.8-2.4l0.2 0.4z m276.6-159.6c3.6-2 6 0.8 8.8 2.8 6.4 4.4 12.4 8.4 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 14-5.6 20.8 4.8 6 10 12 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.8 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.2-2-3.8-4.7-4.4-7.7l-7.2-20.5-25.2-6.4c-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 4-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.8-1.2-0.4-1.6 0.4-2.4l0.2 0.4z m141.9 29.6c3.6-2 6 0.8 8.8 2.8l18.8 12.8c7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 14-5.6 20.8 4.8 6 10 12 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4-7.7 0.4-15.2 0.8-22.4 0.8-4.4 6.8-8.4 13.2-12.8 20-1.6 2.4-4 5.1-7.2 4-2.4-1.9-3.9-4.7-4.4-7.7l-7.2-20.5c-8.4-2-16.8-4.4-25.2-6.4-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 4-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.5-1.2 0.2-1.6 0.6-2zM150.02053 430c3.6-2 6 0.8 8.8 2.8 6.4 4.4 12.4 8.4 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-4 14-5.6 20.8 4.8 6 10 11.6 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.8 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.2-2-3.8-4.7-4.4-7.7l-7.2-20.5-25.2-6.4c-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 3.6-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.7-0.8-0.3-1.5 0.6-2z m558.9 414.4c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-2-14-3.6-20.8-5.6-2.8-7.2-5.1-14.4-7.7-21.6-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.1 4.4-0.7 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.5-1.1 0.8-1.1 1.6-1.1h0.1z m-158.8 50c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.1-3.7-5.6-3.6-7.7-4-6.8-1.6-14-3.6-20.8-5.6l-7.7-22c-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.3 4.3-0.9 6.4-1.6l14.4-4.8c2-1 4.2-1.7 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.4-0.8 0.8-0.8 1.7-0.7z m276.5-159.6c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-2-14-3.6-20.8-5.6-2.8-7.2-5.1-14.4-7.7-21.6-1.2-3.6-2.8-6.4-5.6-6.8s-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.2 4.4-0.7 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0-0.8 0.8-1.2 1.6-1.2l0.1 0.1z m45.6-137.6c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-1.6-14-3.6-20.8-5.6l-7.7-22c-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.3 4.3-0.9 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.2-0.7 0.6-0.7 1.4-0.7h0.3zM402.72053 868c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-2-14-3.6-20.8-5.6-2.8-7.2-5.1-14.4-7.7-21.6-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.3 4.3-0.9 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.5-0.8 1-1.1 1.7-1.1z"
fill="#515151" fill="#515151" opacity=".5" p-id="5973"></path>
opacity=".5"
p-id="5973"
></path>
<path <path
d="M386.42053 590.4l-43.8-75.9L207.02053 592.7l10.2 17.7L334.02053 543l23.4 40.4-90.5 52.2-13.5-23.4-18.7 10.8 53.1 92c9.1 15.8 21.2 19.5 36.4 10.7l98.8-57c6.2-3.6 11-9.3 13.4-16.1-1.4-15.9-6.2-31.2-14.2-45l-21.4 4.8c6.7 10.3 11 21.9 12.8 34-1 3.3-3.2 6-6.1 7.8l-88.3 51c-6.2 3.6-11.1 2.1-14.8-4.3l-27.3-47.4 109.3-63.1z m2.9-103.2l10.4 18.1 65.6-37.9 79.9 138.4 18.6-10.8-55.9-96.9c18.8-0.9 43.2-0.6 73 0.7l1.5-23.1c-29.8-0.3-58.4 0.4-86 2.6l-12.5-21.6 74.9-43.2-10.4-18.1-159.1 91.8zM669.52053 329l38.2 66.2 61.4-35.4-38.1-66.1-61.5 35.3z m72.4 24.2l-26.3 15.2-19-33 26.3-15.2 19 33zM599.02053 356.7l7.9 13.7-23.3 13.5 9.8 17 21.8-12.6c7.5 18.7 6.6 39.6-2.5 57.6l20.7 4.4c10.3-23.1 10.3-49.4 0-72.5l18.8-10.9c6 9.2 10.7 19.2 14.2 29.7 0.3 5-2.6 9.7-7.2 11.7-2.9 1.2-6.4 2.8-10.9 4.9l14.1 14.1c3.7-1.3 7.3-2.9 10.7-4.8 8.6-3.9 14.4-12.2 15.2-21.6-5.4-22.1-14.6-43-27.4-61.8l-36.1 20.8-7.9-13.7-17.9 10.5z m29.9 108.1l10 17.4 53.2-30.7c-7.8 23.7-20.6 45.4-37.5 63.6l20.6 11.1c18.6-24.2 30-53.1 33-83.4l29.8 51.5 18.4-10.7-29.8-51.5c27.4 11.5 57.2 16.3 86.9 14.1l3.5-23.5c-24.7 5.1-50.1 5-74.8-0.1l53.5-30.9-10-17.3-69.3 40-7.3-12.6-18.4 10.7L698.02053 425l-69.1 39.8z" d="M386.42053 590.4l-43.8-75.9L207.02053 592.7l10.2 17.7L334.02053 543l23.4 40.4-90.5 52.2-13.5-23.4-18.7 10.8 53.1 92c9.1 15.8 21.2 19.5 36.4 10.7l98.8-57c6.2-3.6 11-9.3 13.4-16.1-1.4-15.9-6.2-31.2-14.2-45l-21.4 4.8c6.7 10.3 11 21.9 12.8 34-1 3.3-3.2 6-6.1 7.8l-88.3 51c-6.2 3.6-11.1 2.1-14.8-4.3l-27.3-47.4 109.3-63.1z m2.9-103.2l10.4 18.1 65.6-37.9 79.9 138.4 18.6-10.8-55.9-96.9c18.8-0.9 43.2-0.6 73 0.7l1.5-23.1c-29.8-0.3-58.4 0.4-86 2.6l-12.5-21.6 74.9-43.2-10.4-18.1-159.1 91.8zM669.52053 329l38.2 66.2 61.4-35.4-38.1-66.1-61.5 35.3z m72.4 24.2l-26.3 15.2-19-33 26.3-15.2 19 33zM599.02053 356.7l7.9 13.7-23.3 13.5 9.8 17 21.8-12.6c7.5 18.7 6.6 39.6-2.5 57.6l20.7 4.4c10.3-23.1 10.3-49.4 0-72.5l18.8-10.9c6 9.2 10.7 19.2 14.2 29.7 0.3 5-2.6 9.7-7.2 11.7-2.9 1.2-6.4 2.8-10.9 4.9l14.1 14.1c3.7-1.3 7.3-2.9 10.7-4.8 8.6-3.9 14.4-12.2 15.2-21.6-5.4-22.1-14.6-43-27.4-61.8l-36.1 20.8-7.9-13.7-17.9 10.5z m29.9 108.1l10 17.4 53.2-30.7c-7.8 23.7-20.6 45.4-37.5 63.6l20.6 11.1c18.6-24.2 30-53.1 33-83.4l29.8 51.5 18.4-10.7-29.8-51.5c27.4 11.5 57.2 16.3 86.9 14.1l3.5-23.5c-24.7 5.1-50.1 5-74.8-0.1l53.5-30.9-10-17.3-69.3 40-7.3-12.6-18.4 10.7L698.02053 425l-69.1 39.8z"
fill="#515151" fill="#515151" opacity=".5" p-id="5974"></path>
opacity=".5"
p-id="5974"
></path>
</svg> </svg>
<!-- <div v-if="item.delFlag == 0" class="button-son">审核通过</div> <!-- <div v-if="item.delFlag == 0" class="button-son">审核通过</div>
<div v-if="item.delFlag != 0">未审核</div> --> <div v-if="item.delFlag != 0">未审核</div> -->
@ -132,56 +76,24 @@
</div> </div>
</div> </div>
<div class="bottom"> <div class="bottom">
<a-pagination <a-pagination size="small" :total="total" show-size-changer show-quick-jumper @change="handleCurrentChange"
size="small" @showSizeChange="handlePageSizeChange" />
:total="total"
show-size-changer
show-quick-jumper
@change="handleCurrentChange"
@showSizeChange="handlePageSizeChange"
/>
</div> </div>
</div> </div>
<a-empty v-else /> <a-empty v-else />
<a-modal <a-modal v-model:visible="detailsVisible" :title="tabname" style="width: 9rem" :footer="null" destroyOnClose="true"
v-model:visible="detailsVisible" :maskClosable="false">
:title="tabname" <publish-details :businessKey="businessKey" :processInstanceId="processInstanceId"></publish-details>
style="width: 9rem"
:footer="null"
destroyOnClose="true"
:maskClosable="false"
>
<publish-details
:businessKey="businessKey"
:processInstanceId="processInstanceId"
></publish-details>
</a-modal> </a-modal>
<a-modal <a-modal v-model:visible="increasedVisible" :title="tabname" style="width: 9rem" :footer="null"
v-model:visible="increasedVisible" destroyOnClose="true" :maskClosable="false">
:title="tabname"
style="width: 9rem"
:footer="null"
destroyOnClose="true"
:maskClosable="false"
>
<the-new-release></the-new-release> <the-new-release></the-new-release>
</a-modal> </a-modal>
<a-modal <a-modal v-model:visible="visible" width="12.1rem" @ok="del()" @cancel="reason = ''" footer="">
v-model:visible="visible"
width="12.1rem"
@ok="del()"
@cancel="reason = ''"
footer=""
>
<TheShelvesAbility v-if="visible" :delObj="delObj"></TheShelvesAbility> <TheShelvesAbility v-if="visible" :delObj="delObj"></TheShelvesAbility>
<!-- <a-input v-model:value="reason" placeholder="请输入下架原因" /> --> <!-- <a-input v-model:value="reason" placeholder="请输入下架原因" /> -->
</a-modal> </a-modal>
<a-modal <a-modal v-model:visible="visible2" @ok="handleOk" class="shangjia-class" @cancel="handlecancel">
v-model:visible="visible2"
@ok="handleOk"
class="shangjia-class"
@cancel="handlecancel"
>
<div class="ant-modal-title" id="vcDialogTitle1"> <div class="ant-modal-title" id="vcDialogTitle1">
<div class="showBg"></div> <div class="showBg"></div>
能力上架申请 能力上架申请
@ -189,22 +101,14 @@
<div class="ability-to-type"> <div class="ability-to-type">
<div class="title">能力类型选择</div> <div class="title">能力类型选择</div>
<div class="content"> <div class="content">
<div <div v-for="item in abilityToType" :key="item" @click="abilityToTypeFunction(item)" :class="
v-for="item in abilityToType"
:key="item"
@click="abilityToTypeFunction(item)"
:class="
abilityToTypeFunctionData == item ? 'ability-to-type-down' : '' abilityToTypeFunctionData == item ? 'ability-to-type-down' : ''
" ">
>
{{ item }} {{ item }}
</div> </div>
</div> </div>
</div> </div>
<div <div class="component-type" v-if="abilityToTypeFunctionData == '组件服务'">
class="component-type"
v-if="abilityToTypeFunctionData == '组件服务'"
>
<div class="title">组件类型选择</div> <div class="title">组件类型选择</div>
<div class="content"> <div class="content">
<!-- <a-checkbox-group <!-- <a-checkbox-group
@ -213,12 +117,7 @@
:options="componentType" :options="componentType"
/> --> /> -->
<a-radio-group v-model:value="componentTypeValue"> <a-radio-group v-model:value="componentTypeValue">
<a-radio <a-radio @click="componentTypeValueFunction(item)" v-for="item in componentType" :key="item" :value="item">
@click="componentTypeValueFunction(item)"
v-for="item in componentType"
:key="item"
:value="item"
>
{{ item }} {{ item }}
</a-radio> </a-radio>
</a-radio-group> </a-radio-group>
@ -229,60 +128,60 @@
</template> </template>
<script setup> <script setup>
import { onMounted, reactive, ref, onBeforeUnmount } from 'vue' import { onMounted, reactive, ref, onBeforeUnmount } from 'vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
// , reactive // , reactive
import { wodepage, undercarriage } from '@/api/personalCenter' import { wodepage, undercarriage } from '@/api/personalCenter'
import { getUserInfo } from '@/api/user' import { getUserInfo } from '@/api/user'
// TheNewRelease // TheNewRelease
import TheNewRelease from '@/views/personalCenter/components/TheNewRelease' import TheNewRelease from '@/views/personalCenter/components/TheNewRelease'
import PublishDetails from '@/views/personalCenter/components/PublishDetails' import PublishDetails from '@/views/personalCenter/components/PublishDetails'
import TheShelvesAbility from '@/views/personalCenter/components/TheShelvesAbility' // import TheShelvesAbility from '@/views/personalCenter/components/TheShelvesAbility' //
const router = useRouter() const router = useRouter()
let tabList = ref([ let tabList = ref([
// '', // '',
// ' ', // ' ',
// ' ', // ' ',
'组件服务', '组件服务',
'应用资源', '应用资源',
// '', // '',
]) ])
let tabList2 = ref(['已上架', '已下架']) let tabList2 = ref(['已上架', '已下架'])
// const contentList = reactive({ // const contentList = reactive({
// data: [ // data: [
// { // {
// currentTaskList: [ // currentTaskList: [
// { // {
// taskName: '111', // taskName: '111',
// createTime: '222222222222', // createTime: '222222222222',
// assigneeName: '333333333', // assigneeName: '333333333',
// }, // },
// ], // ],
// name: '111111', // name: '111111',
// }, // },
// ], // ],
// }) // })
// const contentListClone = reactive({ data: [] }) // const contentListClone = reactive({ data: [] })
// let contentListLength = contentList.length // let contentListLength = contentList.length
let name = ref('') let name = ref('')
let tabIndex = ref(0) let tabIndex = ref(0)
let tabIndex2 = ref(-1) let tabIndex2 = ref(-1)
const visible2 = ref(false) const visible2 = ref(false)
const showModal2 = () => { const showModal2 = () => {
visible2.value = true visible2.value = true
} }
let componentTypeValue = ref('') let componentTypeValue = ref('')
let abilityToTypeFunctionData = ref('组件服务') let abilityToTypeFunctionData = ref('组件服务')
function handlecancel() { function handlecancel() {
abilityToTypeFunctionData.value = '组件服务' abilityToTypeFunctionData.value = '组件服务'
componentTypeValue.value = '' componentTypeValue.value = ''
} }
function abilityToTypeFunction(item) { function abilityToTypeFunction(item) {
abilityToTypeFunctionData.value = item abilityToTypeFunctionData.value = item
} }
const handleOk = (e) => { const handleOk = (e) => {
let snum = ref({}) let snum = ref({})
if (abilityToTypeFunctionData.value == '组件服务') { if (abilityToTypeFunctionData.value == '组件服务') {
if (!componentTypeValue.value || componentTypeValue.value == '') { if (!componentTypeValue.value || componentTypeValue.value == '') {
@ -316,18 +215,18 @@
abilityToTypeFunctionData.value = '组件服务' abilityToTypeFunctionData.value = '组件服务'
componentTypeValue.value = '' componentTypeValue.value = ''
console.log(e) console.log(e)
} }
let abilityToType = ref(['组件服务', '应用资源']) let abilityToType = ref(['组件服务', '应用资源'])
let componentType = ref([ let componentType = ref([
'智能算法', '智能算法',
'图层服务', '图层服务',
'开发组件', '开发组件',
// '', // '',
'业务组件', '业务组件',
// '', // '',
]) ])
let tabname = ref('组件服务') let tabname = ref('组件服务')
function tabqiehuan(item, index) { function tabqiehuan(item, index) {
tabIndex.value = index tabIndex.value = index
switch (item) { switch (item) {
case '组件服务': case '组件服务':
@ -348,8 +247,8 @@
// getApplyList() // getApplyList()
// break // break
} }
} }
function tabqiehuan2(item, index) { function tabqiehuan2(item, index) {
if (index == tabIndex2.value) { if (index == tabIndex2.value) {
tabIndex2.value = -1 tabIndex2.value = -1
delFlag = '' delFlag = ''
@ -366,27 +265,27 @@
} }
page.value = 1 page.value = 1
getApplyList(tabname.value) getApplyList(tabname.value)
} }
// //
function onSearch(value) { function onSearch(value) {
console.log('搜索框', value) console.log('搜索框', value)
// getApplyList(tabname.value, value) // getApplyList(tabname.value, value)
} }
// //
function replacement() { function replacement() {
name.value = '' name.value = ''
tabIndex.value = 0 tabIndex.value = 0
tabname.value = '组件服务' tabname.value = '组件服务'
getApplyList(tabname.value) getApplyList(tabname.value)
} }
const detailsVisible = ref(false) const detailsVisible = ref(false)
const increasedVisible = ref(false) const increasedVisible = ref(false)
const businessKey = ref('') const businessKey = ref('')
const processInstanceId = ref('') const processInstanceId = ref('')
// const showIncreased = () => { // const showIncreased = () => {
// increasedVisible.value = true // increasedVisible.value = true
// } // }
const showDetail = (item) => { const showDetail = (item) => {
console.log('showDetail', item, item.id) console.log('showDetail', item, item.id)
if (item.delFlag == 0) { if (item.delFlag == 0) {
router.push({ router.push({
@ -401,16 +300,16 @@
// detailsVisible.value = true // detailsVisible.value = true
// businessKey.value = item.businessKey // businessKey.value = item.businessKey
// processInstanceId.value = item.processInstanceId // processInstanceId.value = item.processInstanceId
} }
const total = ref('') const total = ref('')
const page = ref('1') const page = ref('1')
const ended = ref('') const ended = ref('')
let delFlag = '' let delFlag = ''
let dataList = reactive({ data: [] }) let dataList = reactive({ data: [] })
const limt = ref('10') const limt = ref('10')
// //
const getApplyList = (item) => { const getApplyList = (item) => {
console.log(delFlag) console.log(delFlag)
getUserInfo().then((res) => { getUserInfo().then((res) => {
let ids = ref('') let ids = ref('')
@ -433,35 +332,36 @@
}) })
console.log('用户信息', ids.value) console.log('用户信息', ids.value)
}) })
} }
const handleCurrentChange = (val, size) => { const handleCurrentChange = (val, size) => {
page.value = val page.value = val
limt.value = size limt.value = size
getApplyList(tabname.value) getApplyList(tabname.value)
} }
const newpage = router.resolve({ const newpage = router.resolve({
path: '/nenglishangjia', // path: '/nenglishangjia', //
}) })
// const nenglishangjia = () => { // const nenglishangjia = () => {
// window.open(newpage.href, '_blank') // window.open(newpage.href, '_blank')
// // router.resolve('/nenglishangjia') // // router.resolve('/nenglishangjia')
// } // }
const handlePageSizeChange = (current, size) => { const handlePageSizeChange = (current, size) => {
page.value = current page.value = current
limt.value = size limt.value = size
console.log('val', current, size) console.log('val', current, size)
getApplyList(tabname.value) getApplyList(tabname.value)
} }
// //
const del = () => { const del = () => {
console.log('下架================》', delObj.value) console.log('下架================》', delObj.value)
let fileObj = delObj2.value.fileList && delObj2.value.fileList[0] || {}
undercarriage({ undercarriage({
reason: delObj2.value.reason, reason: delObj2.value.reason,
title: delObj2.value.title, title: delObj2.value.title,
phone: delObj2.value.phone, phone: delObj2.value.phone,
enclosure: delObj2.value.fileList[0].response.data, enclosure: fileObj.response && fileObj.response.data,
enclosureName: delObj2.value.fileList[0].name, enclosureName: fileObj.name,
resource: [ resource: [
{ resourceId: delObj.value.id, resourceName: delObj.value.name }, { resourceId: delObj.value.id, resourceName: delObj.value.name },
], ],
@ -476,38 +376,38 @@
visible.value = false visible.value = false
getApplyList(tabname.value) getApplyList(tabname.value)
}) })
} }
//退 //退
mybus.on('Cancellation', (val) => { mybus.on('Cancellation', (val) => {
visible.value = val visible.value = val
}) })
// //
mybus.on('Determine', (val) => { mybus.on('Determine', (val) => {
console.log('下架==============》', val) console.log('下架==============》', val)
delObj2.value = val delObj2.value = val
del() del()
}) })
onBeforeUnmount(() => { onBeforeUnmount(() => {
mybus.off('Cancellation') mybus.off('Cancellation')
mybus.off('Determine') mybus.off('Determine')
}) })
const reason = ref('') const reason = ref('')
const visible = ref(false) const visible = ref(false)
const delObj = ref({}) const delObj = ref({})
const delObj2 = ref({}) const delObj2 = ref({})
const showModal = (item) => { const showModal = (item) => {
if (item.delFlag == 0) { if (item.delFlag == 0) {
delObj.value = item delObj.value = item
visible.value = true visible.value = true
} }
} }
onMounted(() => { onMounted(() => {
getApplyList(tabname.value) getApplyList(tabname.value)
}) })
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
.on-the-right-side-of-the-list { .on-the-right-side-of-the-list {
background: #ffffff; background: #ffffff;
padding: 0.2rem 0rem 0.3rem 0.2rem; padding: 0.2rem 0rem 0.3rem 0.2rem;
position: absolute; position: absolute;
@ -519,17 +419,21 @@
flex-direction: column; flex-direction: column;
font-size: 0.16rem; font-size: 0.16rem;
justify-content: left; justify-content: left;
.title { .title {
font-size: 0.2rem; font-size: 0.2rem;
color: #000000; color: #000000;
font-family: 'Alibaba PuHuiTi'; font-family: 'Alibaba PuHuiTi';
font-weight: 500; font-weight: 500;
} }
.sousuokuang { .sousuokuang {
margin: 0.2rem 0rem 0.21rem 0rem; margin: 0.2rem 0rem 0.21rem 0rem;
.ant-input-search { .ant-input-search {
max-width: 4.9rem; max-width: 4.9rem;
} }
:deep(.ant-input) { :deep(.ant-input) {
width: 4rem; width: 4rem;
height: 0.36rem; height: 0.36rem;
@ -537,9 +441,11 @@
color: #b2b2b2; color: #b2b2b2;
background: #f5f5f5; background: #f5f5f5;
} }
:deep(.ant-input-group-addon) { :deep(.ant-input-group-addon) {
display: inline-block; display: inline-block;
margin-left: 0.1rem; margin-left: 0.1rem;
.ant-input-search-button { .ant-input-search-button {
width: 0.8rem; width: 0.8rem;
height: 0.36rem; height: 0.36rem;
@ -548,10 +454,12 @@
} }
} }
} }
.tab { .tab {
display: flex; display: flex;
font-size: 0.14rem; font-size: 0.14rem;
color: #999999; color: #999999;
div { div {
width: 0.7rem; width: 0.7rem;
height: 0.24rem; height: 0.24rem;
@ -562,15 +470,18 @@
color: #666666; color: #666666;
cursor: pointer; cursor: pointer;
} }
.tabclass { .tabclass {
border: 0.01rem solid #0087ff; border: 0.01rem solid #0087ff;
color: #0087ff; color: #0087ff;
} }
} }
.content { .content {
padding-right: 0.1rem; padding-right: 0.1rem;
height: 5.1rem; height: 5.1rem;
overflow: auto; overflow: auto;
.content-body { .content-body {
padding-bottom: 0.2rem; padding-bottom: 0.2rem;
padding-top: 0.2rem; padding-top: 0.2rem;
@ -578,16 +489,19 @@
// height: 1.20rem; // height: 1.20rem;
border-bottom: #cccccc 0.01rem solid; border-bottom: #cccccc 0.01rem solid;
position: relative; position: relative;
.content-body-title { .content-body-title {
font-size: 0.14rem; font-size: 0.14rem;
color: #333333; color: #333333;
font-family: 'Alibaba PuHuiTi'; font-family: 'Alibaba PuHuiTi';
font-weight: 500; font-weight: 500;
} }
.content-body-content { .content-body-content {
margin-top: 0.1rem; margin-top: 0.1rem;
margin-bottom: 0.1rem; margin-bottom: 0.1rem;
width: 7.2rem; width: 7.2rem;
.content-body-content-son { .content-body-content-son {
line-height: 0.16rem; line-height: 0.16rem;
font-size: 0.12rem; font-size: 0.12rem;
@ -602,16 +516,19 @@
color: #999999; color: #999999;
} }
} }
.content-body-bottom { .content-body-bottom {
display: flex; display: flex;
color: #cccccc; color: #cccccc;
font-size: 0.12rem; font-size: 0.12rem;
div:first-child { div:first-child {
margin-right: 0.3rem; margin-right: 0.3rem;
} }
} }
} }
} }
.bottom { .bottom {
position: absolute; position: absolute;
bottom: 0.3rem; bottom: 0.3rem;
@ -625,6 +542,7 @@
width: 0.96rem; width: 0.96rem;
// background: #0087ff; // background: #0087ff;
cursor: pointer; cursor: pointer;
div { div {
margin-top: 0.2rem; margin-top: 0.2rem;
height: 0.3rem; height: 0.3rem;
@ -635,24 +553,28 @@
text-align: center; text-align: center;
line-height: 0.3rem; line-height: 0.3rem;
} }
.del { .del {
background: #ccc; background: #ccc;
} }
.button-son { .button-son {
background: #49c988; background: #49c988;
} }
} }
.button-state { .button-state {
top: 0.6rem; top: 0.6rem;
} }
.buttonAgree { .buttonAgree {
background-color: #49c988; background-color: #49c988;
} }
} }
</style> </style>
<style lang="less"> <style lang="less">
.shangjia-class { .shangjia-class {
position: fixed; position: fixed;
left: 50%; left: 50%;
top: 50%; top: 50%;
@ -660,22 +582,27 @@
margin-top: -1.44rem; margin-top: -1.44rem;
font-size: 0.14rem; font-size: 0.14rem;
font-weight: 500; font-weight: 500;
.ant-radio-inner { .ant-radio-inner {
height: 0.16rem; height: 0.16rem;
width: 0.16rem; width: 0.16rem;
} }
.ant-radio-inner::after { .ant-radio-inner::after {
background-color: unset; background-color: unset;
background: url('~@/assets/personalCenter/xuanzhong.png') no-repeat; background: url('~@/assets/personalCenter/xuanzhong.png') no-repeat;
background-size: cover; background-size: cover;
background-position: center; background-position: center;
} }
.ant-modal-content { .ant-modal-content {
border-radius: 0.1rem; border-radius: 0.1rem;
.ability-to-type, .ability-to-type,
.component-type { .component-type {
display: flex; display: flex;
margin-top: 0.2rem; margin-top: 0.2rem;
.title { .title {
white-space: nowrap; white-space: nowrap;
margin-right: 0.2rem; margin-right: 0.2rem;
@ -683,8 +610,10 @@
align-items: center; align-items: center;
height: 0.26rem; height: 0.26rem;
} }
.content { .content {
width: 100%; width: 100%;
.ant-radio-group { .ant-radio-group {
display: grid; display: grid;
grid-template-columns: 1fr 1fr 1fr; grid-template-columns: 1fr 1fr 1fr;
@ -692,10 +621,12 @@
} }
} }
} }
.ability-to-type { .ability-to-type {
.content { .content {
display: grid; display: grid;
grid-template-columns: 1fr 1fr 1fr; grid-template-columns: 1fr 1fr 1fr;
div { div {
margin-right: 0.15rem; margin-right: 0.15rem;
cursor: pointer; cursor: pointer;
@ -711,6 +642,7 @@
align-items: center; align-items: center;
font-weight: 500; font-weight: 500;
} }
.ability-to-type-down { .ability-to-type-down {
background: #0087ff; background: #0087ff;
color: #fff; color: #fff;
@ -718,19 +650,23 @@
} }
} }
} }
.ant-modal-title { .ant-modal-title {
display: flex; display: flex;
align-items: center; align-items: center;
} }
.ant-modal-footer { .ant-modal-footer {
border: 0; border: 0;
text-align: center; text-align: center;
padding-bottom: 0.2rem; padding-bottom: 0.2rem;
button { button {
margin-right: 0.2rem; margin-right: 0.2rem;
border-radius: 0.08rem; border-radius: 0.08rem;
} }
} }
.showBg { .showBg {
height: 0.24rem; height: 0.24rem;
width: 0.24rem; width: 0.24rem;
@ -739,5 +675,5 @@
background-position: center; background-position: center;
margin-right: 0.1rem; margin-right: 0.1rem;
} }
} }
</style> </style>

View File

@ -93,7 +93,10 @@
:checked="val.checked" :checked="val.checked"
@click.stop="checkedDept(val)" @click.stop="checkedDept(val)"
></a-checkbox> ></a-checkbox>
<span style="margin-left: 0.2rem"> <span style="margin-left: 0.2rem" v-if="itShowXiHaiAn">
{{ val.deptName}}
</span>
<span style="margin-left: 0.2rem" v-else>
{{ val.deptName + '(' + val.count + ')' }} {{ val.deptName + '(' + val.count + ')' }}
</span> </span>
</div> </div>
@ -113,13 +116,13 @@
<a-list-item-meta <a-list-item-meta
:description=" :description="
item.description || item.description ||
(JSON.parse(item.note1) && (item.note1 && JSON.parse(item.note1) &&
JSON.parse(item.note1)[0] && JSON.parse(item.note1)[0] &&
JSON.parse(item.note1)[0].channelName + JSON.parse(item.note1)[0].channelName +
'等' + '等' +
JSON.parse(item.note1).length + JSON.parse(item.note1).length +
'个摄像头') || '个摄像头') ||
'--' ''
" "
style="position: relative" style="position: relative"
> >
@ -144,8 +147,9 @@
</a-tooltip> </a-tooltip>
<span class="type">{{ item.type }}</span> <span class="type">{{ item.type }}</span>
</div> </div>
<!-- // todo -->
<span class="time"> <span class="time">
加购时间:{{ item.time }} <span v-if="!itShowXiHaiAn">加购时间:{{ item.time }}</span>
<a-popconfirm <a-popconfirm
title="是否删除该记录?" title="是否删除该记录?"
ok-text="是" ok-text="是"
@ -318,6 +322,7 @@
const name = ref('') const name = ref('')
const type = ref('') const type = ref('')
const list = ref([]) const list = ref([])
const itShowXiHaiAn = whoShow.itShowXiHaiAn;
// //
onMounted(() => { onMounted(() => {
getList('init') getList('init')
@ -498,6 +503,8 @@
pageSize: pageSize.value, pageSize: pageSize.value,
name: name.value, name: name.value,
}).then((res) => { }).then((res) => {
console.log('res---获取信息--------->', res);
let statistics = 0 let statistics = 0
res.data.data.list.map((val) => { res.data.data.list.map((val) => {
val.initLoading = true val.initLoading = true
@ -524,30 +531,13 @@
} }
// console.log('===============>', load.value) // console.log('===============>', load.value)
// //
debugger
list.value = res.data.data.list list.value = res.data.data.list
if (index || index === 0) { if (index || index === 0) {
debugger
list.value[index].show = true list.value[index].show = true
// console.log('1111', list.value[index])
showNew(list.value[index]) showNew(list.value[index])
// showBottom()
} }
// list.value = res.data.data.list
console.log(
'重新请求值',
index,
// res.data.data.list[index].show,
list.value
)
total.value = res.data.data.deptCount total.value = res.data.data.deptCount
console.log(
'重新请求值2',
index,
// res.data.data.list[index].show,
list.value
)
showKey.value++ showKey.value++
if (type == 'init' || type == 'changePage') { if (type == 'init' || type == 'changePage') {
getListByDeptId(list.value[0]) getListByDeptId(list.value[0])
@ -558,12 +548,18 @@
const getListByDeptId = (item) => { const getListByDeptId = (item) => {
console.log(item, 'item') console.log(item, 'item')
if (item.children.length == 0) { if (item.children.length == 0) {
selectResourceListByDept({ let _obj = {
pageNum: item.pageNum, pageNum: item.pageNum,
pageSize: item.pageSize, pageSize: item.pageSize,
deptId: item.deptId, deptId: item.deptId || '',
name: name.value, name: name.value,
}).then((res) => { }
// 西 todo
if(whoShow.itShowXiHaiAn) {
_obj.key = item.deptName
}
selectResourceListByDept(_obj).then((res) => {
console.log('res----根据部门查询-------->', res);
// console.log( // console.log(
// '=============>', // '=============>',
// item, // item,
@ -641,16 +637,17 @@
} }
// //
const checkedDept = (item) => { const checkedDept = (item) => {
// console.log( console.log(
// '==================>', '点击部门多选框==================>',
// item, item,
// checkedList.value, checkedList.value,
// checkAll.value checkAll.value
// ) )
item.checked = !item.checked item.checked = !item.checked
if (item.checked) { if (item.checked) {
if (item.children.length > 0) { if (item.children.length > 0) {
item.children.map((val) => { item.children.map((val) => {
console.log('val.id------------>', val.id);
if (checkedListAbility.value.indexOf(val.id) == -1) { if (checkedListAbility.value.indexOf(val.id) == -1) {
checkedListAbility.value.push(val.id) checkedListAbility.value.push(val.id)
item.checkedList.push(val.id) item.checkedList.push(val.id)
@ -838,8 +835,15 @@
} else { } else {
let arr = [] let arr = []
let delArr = [] let delArr = []
console.log('list.value------------>', list.value);
list.value.map((val) => { list.value.map((val) => {
val.arr = val.children.filter((item) => { val.arr = val.children.filter((item) => {
if(whoShow.itShowXiHaiAn) {
item.type = '基础设施';
item.resourceName = '摄像头列表';
item.resourceId = '1522550195055828996';
}
console.log('选择的数据=============>', item) console.log('选择的数据=============>', item)
if (checkedListAbility.value.indexOf(item.id) > -1) { if (checkedListAbility.value.indexOf(item.id) > -1) {
if (item.delFlag == 0) { if (item.delFlag == 0) {
@ -857,6 +861,7 @@
if (arr.length > 0) { if (arr.length > 0) {
console.log('一键申请===================>', arr) console.log('一键申请===================>', arr)
localStorage.setItem('applyList', JSON.stringify(arr)) localStorage.setItem('applyList', JSON.stringify(arr))
return;
router.push({ router.push({
path: '/apply', path: '/apply',
}) })

View File

@ -1,45 +1,31 @@
<template> <template>
<div id="aside-menu-container"> <div id="aside-menu-container">
<a-menu <a-menu id="aside-menu" v-model:openKeys="openKeys" v-model:selectedKeys="selectedKeys" mode="inline">
id="aside-menu" <a-menu-item class="aside-menu-item" v-for="item in menuList" :key="item.key" @click="handleClick(item)">
v-model:openKeys="openKeys" <i class="icon" :style="{
v-model:selectedKeys="selectedKeys"
mode="inline"
>
<a-menu-item
class="aside-menu-item"
v-for="item in menuList"
:key="item.key"
@click="handleClick(item)"
>
<i
class="icon"
:style="{
backgroundImage: backgroundImage:
selectedKeys == item.key selectedKeys == item.key
? 'url(' + item.imgActive + ')' ? 'url(' + item.imgActive + ')'
: 'url(' + item.img + ')', : 'url(' + item.img + ')',
}" }"></i>
></i>
<span>{{ item.title }}</span> <span>{{ item.title }}</span>
</a-menu-item> </a-menu-item>
</a-menu> </a-menu>
</div> </div>
</template> </template>
<script> <script>
import { defineComponent, ref } from 'vue' import { defineComponent, ref, onMounted } from 'vue'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
export default defineComponent({ export default defineComponent({
components: {}, components: {},
setup() { setup() {
const menuList = [ const menuList = [
{ // {
title: '申购车', // title: '',
img: require('@/assets/personalCenter/demand.png'), // img: require('@/assets/personalCenter/demand.png'),
imgActive: require('@/assets/personalCenter/demandactive.png'), // imgActive: require('@/assets/personalCenter/demandactive.png'),
key: 'PurchaseVehicle', // key: 'PurchaseVehicle',
}, // },
{ {
title: '我的发布', title: '我的发布',
img: require('@/assets/personalCenter/push.png'), img: require('@/assets/personalCenter/push.png'),
@ -52,12 +38,12 @@
imgActive: require('@/assets/personalCenter/applyactive.png'), imgActive: require('@/assets/personalCenter/applyactive.png'),
key: 'apply', key: 'apply',
}, },
{ // {
title: '我的收藏', // title: '',
img: require('@/assets/personalCenter/collect.png'), // img: require('@/assets/personalCenter/collect.png'),
imgActive: require('@/assets/personalCenter/collectactive.png'), // imgActive: require('@/assets/personalCenter/collectactive.png'),
key: 'collect', // key: 'collect',
}, // },
{ {
title: '我的浏览', title: '我的浏览',
img: require('@/assets/personalCenter/recent.png'), img: require('@/assets/personalCenter/recent.png'),
@ -77,7 +63,12 @@
key: 'remark', key: 'remark',
}, },
] ]
const selectedKeys = ref(['PurchaseVehicle']) // 西
// if() {
// }
const selectedKeys = ref(['apply'])
const type = JSON.parse(window.sessionStorage.getItem('type')) const type = JSON.parse(window.sessionStorage.getItem('type'))
if (type) { if (type) {
selectedKeys.value = [type] selectedKeys.value = [type]
@ -87,16 +78,20 @@
mybus.emit('tabsChange', item) mybus.emit('tabsChange', item)
} }
onMounted(() => {
handleClick(menuList[1])
})
return { return {
menuList, menuList,
selectedKeys, selectedKeys,
handleClick, handleClick,
} }
}, },
}) })
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
#aside-menu-container { #aside-menu-container {
margin-top: 20px; margin-top: 20px;
height: 790px; height: 790px;
overflow-y: scroll; overflow-y: scroll;
@ -106,14 +101,17 @@
height: 60px; height: 60px;
font-size: 16px; font-size: 16px;
color: #333; color: #333;
&:hover { &:hover {
color: #0087ff; color: #0087ff;
background-color: #edf4fc; background-color: #edf4fc;
} }
} }
:deep(.ant-menu-title-content) { :deep(.ant-menu-title-content) {
display: flex; display: flex;
align-items: center; align-items: center;
.icon { .icon {
display: block; display: block;
width: 24px; width: 24px;
@ -122,15 +120,18 @@
margin-right: 30px; margin-right: 30px;
} }
} }
:deep(.ant-menu-item-selected) { :deep(.ant-menu-item-selected) {
background-color: #edf4fc; background-color: #edf4fc;
color: #0087ff; color: #0087ff;
&::after { &::after {
display: none; display: none;
} }
} }
} }
#aside-menu-container::-webkit-scrollbar {
#aside-menu-container::-webkit-scrollbar {
width: 0 !important; width: 0 !important;
} }
</style> </style>