Compare commits

...

238 Commits

Author SHA1 Message Date
wuhongjian 502068705b Merge branch 'hi-ucs-dev' into release 2022-10-14 11:24:10 +08:00
unknown ae046a6f82 地图聚合字体样式 2022-10-14 10:34:17 +08:00
gongjiale 3d69aa5922 会客厅 2022-10-13 23:17:58 +08:00
gongjiale 259f82362a Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-13 21:51:48 +08:00
gongjiale 9df921cbe3 修改 2022-10-13 21:50:58 +08:00
wuhongjian 7210d77314 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-13 21:41:01 +08:00
wuhongjian 79cdaa1146 bug修复 2022-10-13 21:40:56 +08:00
gongjiale d06bf23062 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-13 21:37:53 +08:00
gongjiale aecfba1391 修改能力统计 2022-10-13 21:37:36 +08:00
unknown 9243c94e8d 穿梭框搜索修改 2022-10-13 21:35:46 +08:00
a0049873 1a530271c5 修改位置 2022-10-13 21:34:06 +08:00
a0049873 32d7f38e80 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-13 21:28:38 +08:00
a0049873 c583569868 修改图例 2022-10-13 21:28:20 +08:00
gongjiale b51e66f54e 云资源隐藏 2022-10-13 21:26:05 +08:00
a0049873 23eff2d365 修改位置 2022-10-13 20:45:13 +08:00
a0049873 aeed2b27e3 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-13 20:41:06 +08:00
a0049873 678b60374e 修改展示样式 2022-10-13 20:40:29 +08:00
unknown 5ec0d81181 组件服务修改 2022-10-13 20:11:01 +08:00
gongjiale eb563cd3dd Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-13 19:15:38 +08:00
gongjiale 23210070cd 添加数据资源 2022-10-13 19:15:20 +08:00
wuhongjian b79797b09a bug修复 2022-10-13 19:11:45 +08:00
unknown 8ec209162c Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-13 18:55:19 +08:00
unknown d278b2194c 添加后端接口所需字段 2022-10-13 18:54:27 +08:00
wuhongjian 2c4752c97b bug修复 2022-10-13 18:13:19 +08:00
wuhongjian 0c83991e6c bug修复 2022-10-13 18:08:14 +08:00
gongjiale a900c4c332 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-13 18:02:02 +08:00
gongjiale a6ab3b9194 修改 2022-10-13 18:01:41 +08:00
a0049873 2a05650b26 修改部门数顺序 2022-10-13 17:24:20 +08:00
a0049873 cfe88605cc Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/src/views/home/infrastructurePage.vue
2022-10-13 17:09:20 +08:00
a0049873 78aabf704b 修改基础设施BUG 以及 能力统计金字塔图 2022-10-13 17:07:51 +08:00
wuhongjian 5568f82e52 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-13 16:31:46 +08:00
wuhongjian 7abf71a6fb bug修复 2022-10-13 16:31:42 +08:00
unknown f4f5292540 西海岸bug修改 2022-10-13 16:19:03 +08:00
gongjiale 6d45680b9a 1 2022-10-13 15:54:50 +08:00
unknown 07a924cce4 修改 2022-10-13 15:51:59 +08:00
unknown 10fe94fbfa 后台返回数据字段修改 2022-10-13 15:47:25 +08:00
wuhongjian 4d003421fe Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-13 15:46:01 +08:00
wuhongjian 7877cd2474 bug修复 2022-10-13 15:45:21 +08:00
unknown 09cc87a095 修改文字描述 2022-10-13 15:39:16 +08:00
gongjiale e58b788f09 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-13 15:34:51 +08:00
gongjiale 48393700ed 信息 2022-10-13 15:34:34 +08:00
unknown feed3a454c 使用能力数据条数 2022-10-13 15:32:44 +08:00
wuhongjian 54aa64de64 客户需求更新 2022-10-13 14:47:53 +08:00
a0049873 75299e8648 能力统计 能力使用统计 新增 会议室 2022-10-13 11:55:06 +08:00
gongjiale c2c5c30122 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-13 11:36:58 +08:00
gongjiale 17d08d399f 西海岸市局区分 2022-10-13 11:36:45 +08:00
wuhongjian e5fdaa744a 客户意见修改 2022-10-13 11:31:39 +08:00
gongjiale dbfdfd6285 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-13 11:28:57 +08:00
gongjiale 1fa11e3358 添加字段 2022-10-13 11:28:44 +08:00
unknown bff7f51467 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-13 10:47:48 +08:00
unknown a0e38bd312 资源图谱隐藏 2022-10-13 10:43:55 +08:00
wuhongjian ce50c9221e bug修复 2022-10-13 10:29:20 +08:00
gongjiale b57d9c5b11 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-13 09:35:49 +08:00
gongjiale 7f662ee870 我得待办添加标签 2022-10-13 09:35:33 +08:00
wuhongjian 720b26a902 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-12 17:56:45 +08:00
wuhongjian 8f1658f2eb 客户需求 2022-10-12 17:56:41 +08:00
guoyue 56696c6266 西海岸:基础设施添加到申购车,api更改 2022-10-12 17:41:21 +08:00
guoyue 85fa71f4b9 西海岸:申购车批量删除参数更改 2022-10-12 17:10:19 +08:00
guoyue f2a6e2ffc9 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-12 16:11:31 +08:00
guoyue adcb0cdbf0 西海岸: 获取摄像头列表的api更改为配置文件形式 2022-10-12 16:11:12 +08:00
gongjiale fe17edeb39 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-12 16:01:47 +08:00
gongjiale e0ca9166e4 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-12 16:01:10 +08:00
guoyue 5f8659f7f4 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-12 16:00:45 +08:00
gongjiale 6d3d16bbdf 修改 2022-10-12 16:00:41 +08:00
guoyue f198ad5f5a 西海岸: 获取摄像头列表的api更改为配置文件形式 2022-10-12 16:00:41 +08:00
wuhongjian 672981d051 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-12 13:40:18 +08:00
guoyue ae252efcc0 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-12 11:53:43 +08:00
guoyue 6f1550734d 市局配置文件:增加测试环境后台 2022-10-12 11:53:28 +08:00
guoyue 61592ceaea 删除冗余代码 2022-10-12 11:52:50 +08:00
guoyue edf1cb5af9 西海岸:修复首页--能力汇聚显示错乱bug 2022-10-12 11:52:32 +08:00
guoyue 140ff7f92c 西海岸--基础设施-摄像头获取:增加loading 2022-10-12 11:51:22 +08:00
a0049873 66df6d8c76 没有后台权限账号 屏蔽跳转功能 2022-10-12 10:04:11 +08:00
wuhongjian 70bb06cba6 更改token问题 2022-10-12 09:50:17 +08:00
guoyue 240784a3b2 消息跳转:区分市局和西海岸 2022-10-11 17:03:15 +08:00
guoyue 177cc4e9c7 修复消息跳转tab显示不对问题 2022-10-11 16:40:22 +08:00
guoyue 1382f22cb5 西海岸-修复能力汇聚显示错误bug 2022-10-11 16:27:26 +08:00
guoyue e4ad24ba8c 西海岸:修复视频预览提示错误问题 2022-10-11 15:07:55 +08:00
guoyue ba597c1da4 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-10 17:10:57 +08:00
guoyue b5ad10130f 更改基础设施--左侧树选中状态以及取消选中(没区分西海岸和市局) 2022-10-10 17:10:43 +08:00
a0049873 8f6ef3d8f9 token改成12小时失效 2022-10-10 16:57:36 +08:00
a0049873 be971b7112 修改token失效问题 2022-10-10 16:52:38 +08:00
guoyue 05c93f9dd9 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-10 15:45:50 +08:00
guoyue 37347b3de2 市局:增加消息通知会议室跳转 2022-10-10 15:45:33 +08:00
a0049873 9c3a8495c0 申请按钮 只能点一次 2022-10-10 15:29:38 +08:00
a0049873 6203566058 提示优化 2022-10-10 14:53:30 +08:00
guoyue 8940dc4e24 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-10 13:54:31 +08:00
guoyue 9f111d3336 技术文档仅支持文件上传(不支持zip) 2022-10-10 13:54:03 +08:00
guoyue c5ae492e70 融合服务:赋能场景图片大小更改 2022-10-10 13:53:35 +08:00
a0049873 c95d9ac76e 修改token失效 导致白屏问题, 目前设置的有效时长为2小时 2022-10-10 10:35:29 +08:00
unknown 0ba3526904 修改bug 2022-10-10 10:15:39 +08:00
unknown 4c4fe02f74 融合服务我的申请修改 2022-10-10 10:11:16 +08:00
gongjiale a5a76110f0 使用手册下载 2022-10-10 09:53:44 +08:00
guoyue 5db6afcb6c 西海岸:特殊用户增加可查看所有权限 2022-10-09 16:42:57 +08:00
guoyue a04241c9a5 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-09 15:46:43 +08:00
guoyue 4a104177bf 西海岸:个人中心只留申购车和我的申请功能 2022-10-09 15:46:38 +08:00
gongjiale fe1ac7cfbc 分页去掉 2022-10-09 15:44:17 +08:00
gongjiale c9da08b40d 应用状态改为必填 2022-10-09 15:37:16 +08:00
gongjiale c09299175a Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-09 15:31:53 +08:00
gongjiale 4094c3afc4 查看详情修改 2022-10-09 15:29:37 +08:00
guoyue af1c03d3ed 西海岸相关功能 合并代码 2022-10-09 14:29:51 +08:00
guoyue c4ae6d603a 西海岸购物车等功能 2022-10-09 13:52:28 +08:00
gongjiale 06d16202a2 修改查看详情问题 2022-10-09 10:13:35 +08:00
guoyue e83ddfe47e 浏览器增加提示:文件抽取引入js,css 2022-10-09 10:07:24 +08:00
guoyue d6c971ab23 西海岸顶部导航提示正在建设中 2022-10-08 19:20:18 +08:00
unknown 4a78bfa72e 添加浏览器版本提示 2022-10-08 19:09:33 +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 7b4b410538 重定向解注 2022-10-08 14:20:51 +08:00
guoyue 667d53484e 浏览器强制用谷歌,提供exe下载包 2022-10-08 13:38:46 +08:00
guoyue d13dbbb09a 谷歌浏览器64位和32位exe文件 2022-10-08 13:38:14 +08:00
guoyue 14aa35bd11 注释掉重定向 2022-10-08 11:52:47 +08:00
guoyue 0103444cb8 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-04 16:00:23 +08:00
guoyue aec249624a 市局: 能力统计金字塔根据值排序 2022-10-04 16:00:11 +08:00
guoyue 608b6d10ff fix:控制台报错 2022-10-04 15:59:35 +08:00
guoyue 1ae5dda1a7 市局: 消息处理 跳转到前台以及门户的各自审批页面 2022-10-04 15:59:22 +08:00
gongjiale ca9244ed80 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-04 13:19:02 +08:00
gongjiale 82cbe0aecb 添加明细页面 2022-10-04 13:18:52 +08:00
gongjiale e01788b7b0 部分问题修改 2022-10-04 13:14:15 +08:00
guoyue 251c3d33d6 市局:城市云脑会客厅--去掉电话必填 2022-10-03 17:23:12 +08:00
guoyue 58e045e862 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-03 16:26:28 +08:00
guoyue c1c4eaf4d6 市局:能力统计--覆盖部门量改为资源汇聚部门量, 2022-10-03 16:26:16 +08:00
guoyue cdb0ed10ea 工作台待办,已办跳转,分别跳转到待办、已办-能力申请 2022-10-03 16:25:20 +08:00
guoyue ad34e10710 市局:能力申请--技术文档由富文本编辑改为上传 2022-10-03 16:23:30 +08:00
guoyue 1d5d4845c2 市局:能力统计,部门数漏斗图更改,覆盖部门量更改为资源汇聚部门量,与部门总数保持一直 2022-10-03 15:46:11 +08:00
guoyue 12d3cc221c 市局:申请页面---应用系统选项下方加提示:如选项没有系统请新增 2022-10-03 15:44:54 +08:00
guoyue c23d0aeee7 市局:消息状态,未读点击提示已读,已读点击不提示,加粗未读消息字体 2022-10-03 15:43:43 +08:00
gongjiale aa6022f599 修改部分usc问题 2022-10-02 16:42:34 +08:00
guoyue ded5cfed22 更改已办任务,能力申请processDefinitionKey: abilityprocess_v2参数,市局v2 ,其他v3 2022-10-02 14:59:23 +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
99 changed files with 12540 additions and 9218 deletions

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian
* @Date: 2022-08-25 14:37:49
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-29 09:57:52
* @LastEditTime: 2022-10-14 11:23:13
* @Description: 告诉大家这是什么
*/
var _global = {}
@ -11,8 +11,8 @@ var CONFIGITEM = {
// version: 'xihaian', // 西海岸
version: 'test', // 测试
// version: 'frp', // 内网穿透
// version: 'dev', // 开发
vNum: 'v0.8.7.2',
// version: 'xihaian', // 开发
vNum: 'v0.8.13.5',
configData: {
// 青岛市大数据局
qingdao: {
@ -23,7 +23,10 @@ var CONFIGITEM = {
// 西海岸大数据局
xihaian: {
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', // 李志成-研发
apiURL: 'http://192.168.124.236:8888/renren-admin',
// apiURL: 'http://192.168.124.254:8888/renren-admin', // 李志成-远雄
websocketURL: 'ws://10.134.135.9:8888/renren-admin/websocket'
},
// 测试
@ -40,7 +43,7 @@ var CONFIGITEM = {
},
dev: {
previewUrl: 'http://localhost:8080/',
apiURL: 'http://192.168.124.236:8888/renren-admin',
apiURL: 'http://192.168.124.233:8888/renren-admin',
websocketURL: 'ws://192.168.124.236:8888/renren-admin/websocket'
}
}

View File

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

View File

@ -1,12 +1,12 @@
/*
* @Author: hisense.liangjunhua
* @Author: hisense.guoyue
* @Date: 2022-08-23 10:30:11
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-09-01 16:06:05
* @Description: 告诉大家这是什么
* @LastEditors: hisense.guoyue
* @LastEditTime: 2022-10-02 14:47:05
* @Description: 判断当前环境是西海岸还是青岛市局
*/
const returnLocationStr = () => {
return 'qingdao'
return CONFIGITEM.version
}
export default returnLocationStr

View File

@ -9,6 +9,7 @@
<use :xlink:href="`#${menu.icon}`"></use>
</svg>
<span class="first-level-text">{{ menu.name }}</span>
<span class="tabNum" v-if="menu.total && menu.total !==0">{{menu.total}}</span>
</template>
<sub-menu
v-for="item in menu.children"
@ -32,6 +33,7 @@
<use :xlink:href="`#${menu.icon}`"></use>
</svg>
<span>{{ menu.name }}</span>
<span class="tabNum" v-if="menu.total && menu.total !==0 ">{{menu.total}}</span>
</a>
</el-menu-item>
</template>
@ -110,6 +112,13 @@ export default {
</script>
<style lang="scss">
.tabNum{
color: #ffffff;
margin-left: 5px;
background: red;
padding:1px 4px;
border-radius:5px;
}
.aui-sidebar__menu {
.first-level-text {
font-size: 16px;

View File

@ -18,29 +18,80 @@
:collapseTransition="false"
class="aui-sidebar__menu"
>
<div >
<sub-menu
v-for="menu in $store.state.sidebarMenuList"
v-for="menu in $store.state.sidebarMenuList"
:key="menu.id"
:menu="menu"
/>
>
<span>sdddd</span>
</sub-menu>
</div>
</el-menu>
</div>
</aside>
</template>
<script>
import http from '@/utils/request'
import SubMenu from "./main-sidebar-sub-menu";
import returnLocationStr from '@/utils/location';
export default {
data() {
return {};
return {
numObject:{}
};
},
components: {
SubMenu,
},
created() {
this.$store.state.sidebarMenuList = window.SITE_CONFIG["menuList"];
this.getNum()
//this.$store.state.sidebarMenuList = window.SITE_CONFIG["menuList"];
},
};
methods: {
getNum(){
http.get('/act/task/myToDoTaskNum').then(({ data: res }) => {
this.numObject=res.data
let menuList= window.SITE_CONFIG["menuList"];
for(var i=0;i<menuList.length;i++){
let menu=menuList[i];
if(menu.id=='1541261628388888578'){//
let daibanNum=0
for(let j=0;j<menu.children.length;j++){
let children=menu.children[j]
if(children.id=="1541261780432408577"){// v2
//西 v2 v3
children.total= returnLocationStr() == 'qingdao' ? Number(this.numObject.abilityprocess_v3) : Number(this.numObject.abilityprocess_v2)
daibanNum=Number(daibanNum)+Number(children.total)
} if(children.id=="1559376285703081986"){//
children.total=Number(this.numObject.meetingroom_book)
daibanNum=Number(daibanNum)+Number(children.total)
}if(children.id=="1545292602084827138"){//
children.total=Number(this.numObject.resourcemountapply)
daibanNum=Number(daibanNum)+Number(children.total)
}if(children.id=="1545312045695377410"){//
children.total=Number(this.numObject.abilitydemandapply)
daibanNum=Number(daibanNum)+Number(children.total)
}if(children.id=="1545313018614521857"){//
children.total=Number(this.numObject.resourcundercarriageapply)
daibanNum=Number(daibanNum)+Number(children.total)
}if(children.id=="1545313754106699777"){//
children.total=Number(this.numObject.comment_review)
daibanNum=Number(daibanNum)+Number(children.total)
}if(children.id=="1554294862931562498"){//
children.total=0
daibanNum=Number(daibanNum)+Number(children.total)
}
}
menu.total=daibanNum
}
}
this.$store.state.sidebarMenuList=menuList
})
}
}};
</script>
<style scoped lang="scss">
.aui-sidebar {

View File

@ -55,10 +55,19 @@
</div>
<InfrastructureModal v-model="dataForm" :dataForm="dataForm" @update="updateDataForm" type="基础设施"
:modalType="modalType" ref="jcssDom"></InfrastructureModal>
<el-form-item label="基础设施总数" >
<el-input v-model="dataForm.infrastructureCount" onkeyup="value=value.replace(/[^\d]/g,0)" placeholder="请输入基础设施总数"></el-input>
</el-form-item>
<combine-ability v-model="dataForm" :dataForm="dataForm" @update="updateDataForm" type="数据资源" ref="sjzyDom"
:getDataParams="getListParams['数据资源']"></combine-ability>
<el-form-item label="数据资源总数" >
<el-input v-model="dataForm.dataSourceCount" onkeyup="value=value.replace(/[^\d]/g,0)" placeholder="请输入数据资源总数"></el-input>
</el-form-item>
<combine-ability v-model="dataForm" :dataForm="dataForm" @update="updateDataForm" type="组件服务" ref="zjfwDom"
:getDataParams="getListParams['组件服务']"></combine-ability>
<el-form-item label="组件服务总数" >
<el-input v-model="dataForm.componentCount" placeholder="请输入组件服务总数"></el-input>
</el-form-item>
</div>
</el-form>
</div>
@ -96,6 +105,9 @@ export default {
return {
fileUploadUrl: window.SITE_CONFIG.apiURL + '/upload',
dataForm: {
"infrastructureCount":null,
"dataSourceCount":null,
"componentCount":null,
"name": "",
"applicationArea": "",
"description": "",

View File

@ -27,10 +27,14 @@
<el-form-item label="名称" prop="name">
<el-input v-model="dataForm.name" placeholder="请输入名称" style="width:90%"></el-input>
</el-form-item>
<el-form-item label="描述" prop="description">
<el-input type="textarea" :rows="3" v-model="dataForm.description" placeholder="请输入描述" style="width:90%">
</el-input>
</el-form-item>
<el-form-item label="场景入口">
<el-input v-model="dataForm.sceneUrl" placeholder="请输入场景入口" style="width:90%"></el-input>
</el-form-item>
<el-form-item label="图片">
<el-upload ref="editUpload" class="upload-demo" :action="fileUploadUrl"
@ -63,10 +67,19 @@
</div>
<InfrastructureModal v-model="dataForm" :dataForm="dataForm" @update="updateDataForm" type="基础设施"
:modalType="modalType" ref="jcssDom"></InfrastructureModal>
<el-form-item label="基础设施总数" >
<el-input v-model="dataForm.infrastructureCount" onkeyup="value=value.replace(/[^\d]/g,0)" placeholder="请输入基础设施总数"></el-input>
</el-form-item>
<combine-ability v-model="dataForm" :dataForm="dataForm" @update="updateDataForm" type="数据资源" ref="sjzyDom"
:getDataParams="getListParams['数据资源']"></combine-ability>
<el-form-item label="数据资源总数" >
<el-input v-model="dataForm.dataSourceCount" onkeyup="value=value.replace(/[^\d]/g,0)" placeholder="请输入基础设施总数"></el-input>
</el-form-item>
<combine-ability v-model="dataForm" :dataForm="dataForm" @update="updateDataForm" type="组件服务" ref="zjfwDom"
:getDataParams="getListParams['组件服务']"></combine-ability>
<el-form-item label="组件服务总数" >
<el-input v-model="dataForm.componentCount" onkeyup="value=value.replace(/[^\d]/g,0)" placeholder="请输入基础设施总数"></el-input>
</el-form-item>
</div>
<!-- 更多能力 -->
@ -150,12 +163,25 @@ export const modalTypeText = {
}
export const getFuseResourceList = (abilityListObj) => {
console.log('abilityListObjabilityListObj',abilityListObj);
const arr = []
let length = 0
for (const key in abilityListObj) {
if (Object.hasOwnProperty.call(abilityListObj, key)) {
const itemArray = abilityListObj[key]
itemArray.map((v, i) => {
if(key=='数据资源'){
itemArray.map((v, i) => {
const index = (i + 1) + length
arr.push({
resourceId: v.id,
type: key,
sequence: index,
resourceName:v.resourceName,
deptName:v.deptName,
})
})
}else{
itemArray.map((v, i) => {
const index = (i + 1) + length
arr.push({
resourceId: v,
@ -163,6 +189,8 @@ export const getFuseResourceList = (abilityListObj) => {
sequence: index
})
})
}
length = itemArray.length
}
}
@ -191,9 +219,13 @@ export default {
painKeyTextObj: getDescJson('痛点'),
solutionKeyTextObj: getDescJson('方案'),
dataForm: {
infrastructureCount:null,
dataSourceCount:null,
componentCount:null,
name: '',
applicationArea: '',
description: '',
sceneUrl: '',
fuseAttrList: [
{
attrType: '使用步骤',
@ -299,6 +331,7 @@ export default {
},
//
updateDataForm (data) {
console.log('datadatadata',data);
if (Object.keys(this.getListParams).includes(data.title)) {
this.abilityListObj[data.title] = data.list
} else {
@ -340,10 +373,10 @@ export default {
update: 'put'
}
this.dataForm.fuseResourceList = this.getFuseResourceList()
if (this.imageUrl == '') {
this.$message.error('请上传图片!')
return
}
// if (this.imageUrl == '') {
// this.$message.error('')
// return
// }
this.dataForm.fuseAttrList.find(v => v.attrType == '服务图片').attrValue = this.imageUrl || ''
const _obj = Object.assign({}, this.dataForm, {
type: '赋能场景'
@ -387,11 +420,15 @@ export default {
// --
Object.keys(this.getListParams).map(k => {
const arr = data.fuseResourceList.filter(v => v.type == k)
const arr2 = []
let arr = data.fuseResourceList.filter(v => v.type == k)
let arr2 = [];
if(k === "数据资源"){
arr2 = JSON.parse(JSON.stringify(arr));
}else{
arr.map(v => {
arr2.push(v.resourceId)
})
}
this.abilityListObj[k] = arr2
})
})

View File

@ -23,6 +23,7 @@
style="width: 100%" :height="qp ? '810px' : '650px'">
<el-table-column prop="name" label="名称" header-align="center" align="center"></el-table-column>
<el-table-column prop="description" label="描述" header-align="center" align="center"></el-table-column>
<el-table-column prop="sceneUrl" label="场景入口" header-align="center" align="center"></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="240" right="0">
<template slot-scope="scope">
<el-button v-if="$hasPermission('ability:bsabilityai:update')" type="text" size="small"

View File

@ -16,17 +16,17 @@
</el-transfer>
</div>
<div v-else-if="type==='数据资源'" class="dataTransfer">
<el-transfer v-model="selectedArray" filter-placeholder="请输入名称"
<el-transfer v-model="selectedArray" filterable :filter-method="filterMethod" filter-placeholder="请输入名称"
:titles="nameArray" :props="{
key: 'id',
label: 'name',
}" :data="transferData">
</el-transfer>
<el-input
<!-- <el-input
v-model="searchValue"
placeholder="请输入名称"
></el-input>
<el-button @click="rest" class="restClick">重置</el-button>
<el-button @click="rest" class="restClick">重置</el-button> -->
</div>
<el-pagination
v-if="type==='数据资源'"
@ -225,20 +225,29 @@ export default {
async getDataInfo (dataForm) {
await this.getData()
const arr = []
const attrValue = dataForm.fuseResourceList.filter(v => v.type == this.type)
const attrValue = dataForm.fuseResourceList.filter(v => v.type == this.type);
console.log('attrValue22',attrValue);
if (attrValue.length > 0) {
attrValue.map(val => {
const _obj = {
if(val.type==="数据资源"){
const _obj = {
type: val.type,
id: val.resourceId,
name: val.resource && val.resource.name
name: val.resource && val.resource.resourceName,
}
arr.push(_obj)
}else{
const _obj = {
type: val.type,
id: val.resourceId,
name: val.resource && val.resource.name,
}
arr.push(_obj)
}
})
}
//
this.displayList = JSON.parse(JSON.stringify(arr))
this.displayList = JSON.parse(JSON.stringify(arr));
//
this.selectedArray = arr.map(v => v.id)
this.$nextTick(() => {
@ -288,7 +297,9 @@ export default {
this.transferData.push({
type: this.type,
id: v.guid,
name: v.zyname || '--'
name: v.zyname || '--',
deptName:v.TGBM,
              resourceName:v.zyname
})
})
this.allData = JSON.parse(JSON.stringify(this.transferData))
@ -302,6 +313,26 @@ export default {
return item.name && item.name.indexOf(query) > -1
},
confirmSubmitHandle () {
console.log('tttttt',this.selectedArray)
if(this.type === "数据资源"){
//
let selectedObjectList = [];
this.selectedArray.forEach((item)=>{
let filterData = [];
filterData = this.allData.filter(v => v.id == item);
//console.log('filterDatafilterData',filterData);
selectedObjectList.push(filterData[0]);
});
this.$emit('update', {
title: this.type,
list: selectedObjectList
})
}else{
this.$emit('update', {
title: this.type,
list: this.selectedArray
})
}
if (this.selectedArray.length > this.maxNum) {
return this.$message.error('最多选择十条数据!')
}
@ -312,12 +343,11 @@ export default {
this.displayList.push(v)
}
})
this.$emit('update', {
title: this.type,
list: this.selectedArray
})
console.log(this.selectedArray, this.displayList, 'this.displayList')
},
handleChange(){
//console.log('222222',this.selectedArray);
},
getDisplay (displayList) {
this.displayList = []
this.displayList = displayList
@ -463,7 +493,7 @@ export default {
position: absolute;
font-size: 14px;
display: inline-block;
width: 30%;
width: 80%;
top: 52px;
left: 12px;
}

View File

@ -0,0 +1,426 @@
<template>
<el-dialog
:destroy-on-close="true"
:close-on-click-modal="false"
@close="closeModal"
title="申请详情"
:visible.sync="detailsVisibleCopy"
>
<!--非后台-->
<div class="topss" v-if="detailType == '能力使用'">
<div class="title">基本信息</div>
<div class="main">
<div>
<p class="item">
<span>申请标题{{ detailParams.title }}</span>
<span>申请单号{{ detailParams.applyNumber || "--" }}</span>
<span v-if="detailParams.applicationSystem">
应用系统{{ detailParams.applicationSystem }}
</span>
<span v-else></span>
</p>
<p class="item">
<span>申请人信息{{ detailParams.user }}</span>
<span>电话{{ detailParams.phone }}</span>
<span>单位{{ detailParams.unit }}</span>
</p>
<p v-if="detailParams.applicationScene.length > 0">
<span
>应用场景{{ detailParams.applicationScene.join("") }}</span
>
</p>
<p>
<span>应用背景{{ detailParams.applicationBackground }}</span>
</p>
<p>
<span>期望效果{{ detailParams.effectWish }}</span>
</p>
</div>
</div>
</div>
<!-- 申请能力-->
<div class="bottoms" v-if="detailType == '能力使用'">
<div class="title">申请能力</div>
<div class="main">
<div
class="item"
v-for="(item, index) in this.showArr"
:key="item + index"
>
<div class="deptName">
<span class="img"></span>
<span>{{ item.name }}</span>
</div>
<div
style="
display: flex;
justify-content: space-between;
align-items: center;
"
></div>
<div class="ability" v-for="val in item.list" :key="val.id">
<div class="box" v-if="item.list.length > 0">
<div class="right">
<div class="ability-top">
<div class="name">
<div class="name">
<span class="channelName">{{ val.name }}</span>
</div>
</div>
<div></div>
</div>
<div class="ability-bottom">
<div class="dec">资源描述{{ val.description }}</div>
<div class="result">
申请结果{{
item.ended ? item.approveStatus || "审核完成" : "审核中"
}}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!--审批详情-->
<div>
<div class="title">审批详情</div>
<div v-for="item in this.dataSource.data" :key="item">
<a-table :dataSource="item[1]" :columns="columns">
<template #bodyCell="{ column, text }">
<template v-if="column.dataIndex === 'name'">
<a>{{ text }}</a>
</template>
</template>
</a-table>
</div>
</div>
<!-- <div else>
gai
</div> -->
</el-dialog>
</template>
<script>
export default {
props: {
detailType: {
type: String,
default: "",
},
detailsVisible: {
type: Boolean,
default: false,
},
detailParamss: {
type: Object,
default: {},
},
},
watch: {
detailsVisible: {
handler(newVal) {
this.detailsVisibleCopy = newVal;
},
immediate: true,
},
detailParamss: {
handler(newVal) {
this.detailParams = newVal;
this.getDetail(newVal);
},
immediate: true,
},
},
data() {
return {
detailsVisibleCopy: false,
columns: [
{
title: "任务名称",
dataIndex: "activityName",
key: "activityName",
},
{
title: "处理人",
dataIndex: "assigneeName",
key: "assigneeName",
},
{
title: "任务开始时间",
dataIndex: "startTime",
key: "startTime",
},
{
title: "任务结束时间",
dataIndex: "endTime",
key: "endTime",
},
{
title: "审核意见",
dataIndex: "comment",
key: "comment",
},
{
title: "任务时长/秒",
dataIndex: "durationInSeconds",
key: "durationInSeconds",
},
],
dataSource: [{ data: [] }],
showArr: [],
};
},
computed: {},
components: {},
methods: {
getDetail(newVal) {
if (newVal.resourceApplication) {
this.dataSource.data = [];
if (this.detailType == "能力上架") {
let arr = [];
newVal.resourceApplication.forEach((item) => {
arr.push(item);
});
this.dataSource.data.push([
newVal.resourceApplication.processInstanceId,
arr,
]);
} else {
for (const key in newVal.resourceApplication) {
if (newVal.resourceApplication[key].length > 0) {
newVal.resourceApplication[key].map((item) => {
this.dataSource.data.push([
item.instanceId,
item.taskHandleDetailInfo,
]);
});
}
}
}
this.showArr.value = [];
for (const key in newVal.resourceApplication) {
if (newVal.resourceApplication[key].length > 0) {
let obj = { name: "", instanceId: "", list: [], list2: [] };
obj.name = key;
newVal.resourceApplication[key].map((item) => {
obj.instanceId = item.instanceId;
obj.backToFirst = item.backToFirst;
obj.ended = item.ended;
obj.approveStatus = item.approveStatus;
if (item.resources.length > 0) {
item.resources.map((val) => {
obj.list.push(val);
});
} else {
item.camera.map((val) => {
obj.list2.push(val);
});
}
});
this.showArr.push(obj);
}
}
}
},
// init () {
// this.visible = true
// this.$nextTick(() => {
// this.$refs['dataForm'].resetFields()
// })
// },
closeModal() {
this.$emit("closeModal");
},
},
};
</script>
<style scoped>
.title {
font-size: 22px;
color: #000;
font-weight: bold;
margin-bottom: 20px;
padding-left: 10px;
border-left: 6px #0058e1 solid;
}
.topss {
margin-bottom: 28px;
.main {
background: #eee;
padding: 28px 28px 28px;
p {
display: flex;
justify-content: space-between;
& > span {
width: 100%;
}
.enclosure {
width: 95%;
padding: 28px 28px 28px;
background: #ddd;
display: flex;
justify-content: space-between;
margin-top: 28px;
}
.btn:hover {
color: #0058e1;
cursor: pointer;
}
}
.item {
font-size: 16px;
span {
width: 50px;
}
}
}
}
.bottoms {
.main {
.item {
border-top: 1px #eee solid;
.deptName {
color: #0058e1;
font-size: 16px;
margin-top: 10px;
display: flex;
align-items: center;
.img {
width: 5px;
height: 5px;
border-radius: 5px;
background: #0058e1;
margin-right: 10px;
}
}
.oddNumbers {
margin: 10px 0 0 15px;
}
.box {
margin-left: 10px;
.ability {
height: 13px;
display: flex;
border-bottom: 1px #eee solid;
padding: 0.1rem 0;
.btn {
cursor: pointer;
color: #0087ff;
align-self: flex-end;
padding: 5px 10px;
border: 1px #0087ff solid;
border-radius: 2px;
}
.right {
flex: 1;
margin-left: 15px;
.ability-top {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
.name {
width: 6rem;
height: 0.2rem;
display: flex;
.channelName {
max-width: 5rem;
height: 20px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
.type {
background: #0087ff;
color: #fff;
line-height: 14px;
padding: 2px 10px;
border-radius: 10px;
margin-left: 10px;
}
}
}
.ability-bottom {
margin-top: 15pxrem;
.dec {
width: 70px;
height: 44px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
word-break: break-all;
}
.dec2 {
width: 70px;
height: 22px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
.result {
position: relative;
}
}
}
.DownloadAttachment {
position: absolute;
right: 10px;
top: -150px;
}
.DownloadAttachment2 {
position: absolute;
right: 10px;
top: -110px;
}
}
.clickCursor {
cursor: pointer;
}
}
}
}
}
</style>

File diff suppressed because it is too large Load Diff

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

@ -33,9 +33,13 @@
<el-form-item prop="sort" :label="$t('menu.sort')">
<el-input-number v-model="dataForm.sort" controls-position="right" :min="0" :label="$t('menu.sort')"></el-input-number>
</el-form-item>
<!-- 授权标识 -->
<el-form-item prop="permissions" :label="$t('menu.permissions')">
<el-input v-model="dataForm.permissions" :placeholder="$t('menu.permissionsTips')"></el-input>
</el-form-item>
<el-form-item prop="site" label="站点标识">
<el-input v-model="dataForm.site" placeholder="请输入站点标识(1为共享门户,0为后台管理)"></el-input>
</el-form-item>
<el-form-item v-if="dataForm.type === 0" prop="icon" :label="$t('menu.icon')" class="icon-list">
<el-popover v-model="iconListVisible" ref="iconListPopover" placement="bottom-start" trigger="click" popper-class="mod-sys__menu-icon-popover">
<div class="mod-sys__menu-icon-inner">
@ -77,6 +81,7 @@ export default {
name: '',
pid: '0',
parentName: '',
site: 0,
url: '',
permissions: '',
sort: 0,
@ -98,14 +103,14 @@ export default {
},
watch: {
'dataForm.type' (val) {
this.$refs['dataForm'].clearValidate()
this.$refs.dataForm.clearValidate()
}
},
methods: {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
this.$refs.dataForm.resetFields()
this.iconList = getIconList()
console.log('iconList', this.iconList)
this.dataForm.parentName = this.$t('menu.parentNameDefault')
@ -159,7 +164,7 @@ export default {
},
//
dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
this.$refs.dataForm.validate((valid) => {
if (!valid) {
return false
}
@ -178,7 +183,7 @@ export default {
})
}).catch(() => {})
})
}, 1000, { 'leading': true, 'trailing': false })
}, 1000, { leading: true, trailing: false })
}
}
</script>

View File

@ -9,22 +9,31 @@
<el-input v-model="dataForm.postName" :placeholder="$t('post.postName')" clearable></el-input>
</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-button @click="getDataList()">{{ $t('query') }}</el-button>
</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-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>
<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 prop="postCode" :label="$t('post.postCode')" header-align="center" align="center"></el-table-column>
<el-table-column prop="postName" :label="$t('post.postName')" 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>
<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="status" :label="$t('post.status')" header-align="center" align="center">
<template slot-scope="scope">
@ -33,18 +42,15 @@
</el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<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:delete')" type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>
<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:delete')" type="text" size="small"
@click="deleteHandle(scope.row.id)">{{ $t('delete') }}</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"
<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>
<!-- 弹窗, 新增 / 修改 -->
@ -58,7 +64,7 @@ import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './post-add-or-update'
export default {
mixins: [mixinViewModule],
data () {
data() {
return {
mixinViewModuleOptions: {
getDataListURL: '/sys/post/page',
@ -77,6 +83,14 @@ export default {
},
components: {
AddOrUpdate
},
methods: {
resetHandle() {
Object.keys(this.dataForm).map(v => this.dataForm[v] = '')
this.$nextTick(() => {
this.getDataList()
})
},
}
}
</script>

View File

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

View File

@ -55,7 +55,8 @@ export default {
num: 0,
list: [],
type: 'todo',
url: 'activiti-my-todo-task'
// url: 'activiti-my-todo-task',
url: 'myAgent-CompetencyApplication',
},
//
hasToDodoData: {
@ -67,7 +68,8 @@ export default {
textColor: '#21b107',
num: 0,
list: [],
url: 'activiti-my-join-task'
// url: 'activiti-my-join-task',
url: 'hasToDoTasks-CompetencyApplication',
},
//
resourceData: [],

View File

@ -9,98 +9,97 @@
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<link rel="icon" href="<%= BASE_URL %>favicon.ico" />
<title>
<%= htmlWebpackPlugin.options.title %>
</title>
<meta
content="vab,vab官网,后台管理框架,vue后台管理框架,vue-admin-beautiful,vue-admin-beautiful-pro,vue-admin-beautiful官网,vue-admin-beautiful文档,vue-element-admin,vue-element-admin官网,vue-element-admin文档,vue-admin,vue-admin官网,vue-admin文档"
name="keywords" />
<meta
content="<%= VUE_APP_TITLE %>官网与文档基于vue-admin-beautiful-pro构建简称vab是一款超棒的vue+element中后台前端快速开发框架QQ群972435319作者<%= VUE_APP_AUTHOR %>"
name="description" />
<meta content="<%= VUE_APP_AUTHOR %>" name="author" />
<link href="<%= BASE_URL %>static/css/loading.css" rel="stylesheet" />
<script>
</script>
<link href="./leaflet/libs/leaflet/1.3.1/leaflet.css" rel="stylesheet">
<link href="./leaflet/dist/leaflet/iclient-leaflet.css" rel="stylesheet">
<link href="./leaflet/libs/leaflet/plugins/leaflet.draw/leaflet.draw.css" rel="stylesheet">
<link href="./leaflet/libs/leaflet.markercluster/dist/MarkerCluster.css" rel="stylesheet">
<link href="./leaflet/libs/leaflet.markercluster/dist/MarkerCluster.Default.css" rel="stylesheet">
<link href="./supermap/css/supermap.css" rel="stylesheet">
<link href="./static/css/widgets.css" rel="stylesheet">
<!-- 平台配置文件 -->
<script type="text/javascript" src="./static/config/basicConfig.js"></script>
<script type="text/javascript" src="./static/config/mapConfig.js"></script>
<script type="text/javascript" src="./static/config/location.js"></script>
<!-- ==========地图相关配置========== -->
<script type="text/javascript" src="./leaflet/libs/leaflet/1.3.1/leaflet.js"></script>
<script type="text/javascript" src="./static/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="./leaflet/dist/leaflet/iclient-leaflet.min.js"></script>
<script type="text/javascript" src="./leaflet/libs/leaflet/plugins/leaflet.draw/leaflet.draw.js"></script>
<!-- <script type="text/javascript" src="./leaflet/libs/leaflet.markercluster/dist/leaflet.markercluster.js"></script> -->
<script type="text/javascript" src="./leaflet/dist/leaflet/leaflet-ant-path.js"></script>
<script type="text/javascript" src="./leaflet/dist/leaflet/leaflet.textpath.js"></script>
<script type="text/javascript" src="./leaflet/dist/leaflet/leaflet.polylineoffset.js"></script>
<script type="text/javascript" src="./leaflet/dist/leaflet/leaflet.polylineDecorator.js"></script>
<script type="text/javascript" src="./leaflet/ersi-leaflet.js"></script>
<script type="text/javascript" src="./leaflet/libs/proj4/proj4.js"></script>
<script type="text/javascript" src="./static/js/proj4leaflet.js"></script>
<script type="text/javascript" src="./supermap/atmosphere.js"></script>
<script type="text/javascript" src="./leaflet/MovingMarker.js"></script>
<script type="text/javascript" src="./leaflet/leaflet.motion.min.js"></script>
<script type="text/javascript" src="./leaflet/leaflet.polylineDecorator.js"></script>
<script type="text/javascript" src="./leaflet/leaflet-tooltip-layout.dist.js"></script>
<script type="text/javascript" src="./leaflet/leaflet.canvas-markers.js"></script>
<script type="text/javascript" src="./leaflet/leaflet.markercluster.js"></script>
<script type="text/javascript" src="./leaflet/TextIconOverlay_min.js"></script>
<script type="text/javascript" src="./leaflet/MarkerClusterer_min.js"></script>
<!-- 热力图 -->
<script type="text/javascript" src="./leaflet/leaflet-heat.js"></script>
<!-- 加载WMTS服务 -->
<script type="text/javascript" src="./leaflet/leaflet-tilelayer-wmts.js"></script>
<!-- 大华平台相关包 -->
<script type="text/javascript" src="./static/js/encrypt.js"></script>
<script type="text/javascript" src="./static/js/DHWs.js"></script>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<link rel="icon" href="<%= BASE_URL %>favicon.ico" />
<title>
<%= htmlWebpackPlugin.options.title %>
</title>
<meta content="vab,vab官网,后台管理框架,vue后台管理框架,vue-admin-beautiful,vue-admin-beautiful-pro,vue-admin-beautiful官网,vue-admin-beautiful文档,vue-element-admin,vue-element-admin官网,vue-element-admin文档,vue-admin,vue-admin官网,vue-admin文档" name="keywords" />
<meta content="<%= VUE_APP_TITLE %>官网与文档基于vue-admin-beautiful-pro构建简称vab是一款超棒的vue+element中后台前端快速开发框架QQ群972435319作者<%= VUE_APP_AUTHOR %>" name="description" />
<meta content="<%= VUE_APP_AUTHOR %>" name="author" />
<!-- 浏览器弹框相关 -->
<link href="<%= BASE_URL %>static/css/modal.css" rel="stylesheet" />
<script type="text/javascript" src="./static/js/modal.js"></script>
<link href="<%= BASE_URL %>static/css/loading.css" rel="stylesheet" />
<link href="./leaflet/libs/leaflet/1.3.1/leaflet.css" rel="stylesheet" />
<link href="./leaflet/dist/leaflet/iclient-leaflet.css" rel="stylesheet" />
<link href="./leaflet/libs/leaflet/plugins/leaflet.draw/leaflet.draw.css" rel="stylesheet" />
<link href="./leaflet/libs/leaflet.markercluster/dist/MarkerCluster.css" rel="stylesheet" />
<link href="./leaflet/libs/leaflet.markercluster/dist/MarkerCluster.Default.css" rel="stylesheet" />
<link href="./supermap/css/supermap.css" rel="stylesheet" />
<link href="./static/css/widgets.css" rel="stylesheet" />
<!-- 平台配置文件 -->
<script type="text/javascript" src="./static/config/basicConfig.js"></script>
<script type="text/javascript" src="./static/config/mapConfig.js"></script>
<script type="text/javascript" src="./static/config/location.js"></script>
<!-- ==========地图相关配置========== -->
<script type="text/javascript" src="./leaflet/libs/leaflet/1.3.1/leaflet.js"></script>
<script type="text/javascript" src="./static/js/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="./leaflet/dist/leaflet/iclient-leaflet.min.js"></script>
<script type="text/javascript" src="./leaflet/libs/leaflet/plugins/leaflet.draw/leaflet.draw.js"></script>
<!-- <script type="text/javascript" src="./leaflet/libs/leaflet.markercluster/dist/leaflet.markercluster.js"></script> -->
<script type="text/javascript" src="./leaflet/dist/leaflet/leaflet-ant-path.js"></script>
<script type="text/javascript" src="./leaflet/dist/leaflet/leaflet.textpath.js"></script>
<script type="text/javascript" src="./leaflet/dist/leaflet/leaflet.polylineoffset.js"></script>
<script type="text/javascript" src="./leaflet/dist/leaflet/leaflet.polylineDecorator.js"></script>
<script type="text/javascript" src="./leaflet/ersi-leaflet.js"></script>
<script type="text/javascript" src="./leaflet/libs/proj4/proj4.js"></script>
<script type="text/javascript" src="./static/js/proj4leaflet.js"></script>
<script type="text/javascript" src="./supermap/atmosphere.js"></script>
<script type="text/javascript" src="./leaflet/MovingMarker.js"></script>
<script type="text/javascript" src="./leaflet/leaflet.motion.min.js"></script>
<script type="text/javascript" src="./leaflet/leaflet.polylineDecorator.js"></script>
<script type="text/javascript" src="./leaflet/leaflet-tooltip-layout.dist.js"></script>
<script type="text/javascript" src="./leaflet/leaflet.canvas-markers.js"></script>
<script type="text/javascript" src="./leaflet/leaflet.markercluster.js"></script>
<script type="text/javascript" src="./leaflet/TextIconOverlay_min.js"></script>
<script type="text/javascript" src="./leaflet/MarkerClusterer_min.js"></script>
<!-- 热力图 -->
<script type="text/javascript" src="./leaflet/leaflet-heat.js"></script>
<!-- 加载WMTS服务 -->
<script type="text/javascript" src="./leaflet/leaflet-tilelayer-wmts.js"></script>
<!-- 大华平台相关包 -->
<script type="text/javascript" src="./static/js/encrypt.js"></script>
<script type="text/javascript" src="./static/js/DHWs.js"></script>
<!-- 站点配置 -->
<script>
window.SITE_CONFIG = {};
window.SITE_CONFIG['backUrl'] = _global.config.backUrl;
window.SITE_CONFIG['previewUrl'] = _global.config.previewUrl;
window.SITE_CONFIG['frontUrl'] = _global.config.previewUrl + 'document/#/devModelFile/';
window.SITE_CONFIG['apiURL'] = 'http://'+ _global.config.websocketURL;
window.SITE_CONFIG['websocketURL'] = _global.config.websocketURL;
window.SITE_CONFIG['POI_URL'] = _global.config.POI_URL;
window.SITE_CONFIG = {}
window.SITE_CONFIG['backUrl'] = _global.config.backUrl
window.SITE_CONFIG['previewUrl'] = _global.config.previewUrl
window.SITE_CONFIG['frontUrl'] =
_global.config.previewUrl + 'document/#/devModelFile/'
window.SITE_CONFIG['apiURL'] = 'http://' + _global.config.websocketURL
window.SITE_CONFIG['websocketURL'] = _global.config.websocketURL
window.SITE_CONFIG['POI_URL'] = _global.config.POI_URL
</script>
</head>
<body>
<noscript>
<strong>
We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work
<noscript>
<strong>
We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work
properly without JavaScript enabled. Please enable it to continue.
</strong>
</noscript>
<div id="app">
<div class="first-loading-wrp">
<div class="loading-wrp">
<span class="dot dot-spin">
<i></i>
<i></i>
<i></i>
<i></i>
</span>
</div>
<h1>
<%= VUE_APP_TITLE %>
</h1>
</strong>
</noscript>
<div id="app">
<div class="first-loading-wrp">
<div class="loading-wrp">
<span class="dot dot-spin">
<i></i>
<i></i>
<i></i>
<i></i>
</span>
</div>
<h1>
<%= VUE_APP_TITLE %>
</h1>
</div>
</div>
</div>
<!-- built files will be auto injected -->
<!-- built files will be auto injected -->
</body>
</html>
</html>

View File

@ -1,8 +1,8 @@
/*
* @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-09-19 11:08:04
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-10-14 11:23:47
* @Description: 系统静态参数配置
*/
var _global = {}
@ -12,7 +12,7 @@ var CONFIGITEM = {
//version: 'dev', //
version: 'test', //
//version: 'frp', // 穿
vNum: 'v0.8.7.2',
vNum: 'v0.8.13.5',
configData: {
//
qingdao: {
@ -31,6 +31,25 @@ var CONFIGITEM = {
POI_URL:
'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: {
loginInfo: {
@ -40,9 +59,16 @@ var CONFIGITEM = {
userName: '',
userPwd: '',
},
//
camreaInfo: {
// cameraUrl: '10.134.135.92:9537', //
cameraUrl: '10.134.135.9:9537', //
},
backUrl: 'http://10.134.135.9:9797',
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:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',
@ -58,7 +84,7 @@ var CONFIGITEM = {
},
backUrl: 'http://localhost:8001',
previewUrl: 'http://192.168.124.236:9796/',
websocketURL: '192.168.124.236:8888/renren-admin',
websocketURL: '192.168.124.233:8888/renren-admin',
// websocketURL: '10.18.1.99:8889/renren-admin',
POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-29 09:55:56
* @LastEditTime: 2022-10-14 11:23:58
* @Description: 数据资源参数配置
*/
// eslint-disable-next-line no-undef
@ -23,6 +23,8 @@ const infrastructure = {}
const mapTestNum = {}
//
const footerDataList = {}
// 西--
const xhaHasPermissionUser = {}
// qingdao
if (newLocation !== 'baotou' && newLocation !== 'xihaian') {
whoShow.itShowQingDao = true
@ -31,13 +33,13 @@ if (newLocation !== 'baotou' && newLocation !== 'xihaian') {
navListManagement.navList = [
{ name: '共享门户', key: 'home' },
{ name: '能力集市', key: 'DetailsPageconetent' },
{ name: '能力云图', key: 'capabilityCloud' },
// { name: '', key: 'capabilityCloud' },
{ name: '能力统计', key: 'abilityStatistics' },
// { name: '', key: 'developmentGuide' },
{ name: '技术文档', key: 'instructionManual' },
{ name: '新手指南', key: 'instructionManual' },
{ name: '需求中心', key: 'demandCenter' },
// { name: '', key: 'personalCenter' },
{ name: '区市站点', key: 'mapTest' },
// { name: '', key: 'mapTest' },
// { name: '', key: 'houtaiguanli' },
// { name: '', key: 'assignCase' },
{ name: '融合服务', key: 'integrationServices' },
@ -45,21 +47,21 @@ if (newLocation !== 'baotou' && newLocation !== 'xihaian') {
]
footerDataList.footerList = {
company: {
left: '青岛市大数据发展管理局建设',
right: '海信网络科技股份有限公司',
left: '青岛市大数据发展管理局',
right: '政府标识码3702000106',
},
address: [
{
name: '鲁IC备00000000号',
value: '政府标识码3702000106',
name: '邮编: 266071',
value: 'Email: QDDSJJ@qingdao.shandong.cn',
},
{
name: '版权所有:青岛市大数据发展管理局',
value: '地址山东省青岛市香港中路17号市级机关办公楼',
value: '地址山东省青岛市香港中路17号市级机关三号办公楼',
},
{
name: '电话0532-8561234',
value: '传真0532-2145122',
name: '电话0532-85912587',
value: '传真0532-85912181',
},
],
}
@ -122,15 +124,12 @@ else if (newLocation === 'baotou') {
{ name: '能力集市', key: 'DetailsPageconetent' },
{ name: '能力云图', key: 'capabilityCloud' },
{ name: '能力统计', key: 'abilityStatistics' },
{ name: '技术文档', key: 'instructionManual' },
// { name: '', key: 'developmentGuide' },
{ name: '需求中心', key: 'demandCenter' },
// { name: '', key: 'personalCenter' },
// { name: '', key: 'mapTest' },
// { name: '', key: 'houtaiguanli' },
{ name: '赋能案例', key: 'assignCase' },
{ name: '融合服务', key: 'integrationServices' },
{ name: 'CIM专区', key: 'cimSpecialArea' },
]
footerDataList.footerList = {
company: {
@ -496,15 +495,12 @@ else if (newLocation === 'xihaian') {
{ name: '能力集市', key: 'DetailsPageconetent' },
{ name: '能力云图', key: 'capabilityCloud' },
{ name: '能力统计', key: 'abilityStatistics' },
{ name: '技术文档', key: 'instructionManual' },
// { name: '', key: 'developmentGuide' },
{ name: '需求中心', key: 'demandCenter' },
// { name: '', key: 'personalCenter' },
// { name: '', key: 'mapTest' },
// { name: '', key: 'houtaiguanli' },
{ name: '赋能案例', key: 'assignCase' },
{ name: '融合服务', key: 'integrationServices' },
{ name: 'CIM专区', key: 'cimSpecialArea' },
]
footerDataList.footerList = {
company: {
@ -527,4 +523,11 @@ else if (newLocation === 'xihaian') {
},
],
}
xhaHasPermissionUser.list = [
'xihaian01',
'xihaian02',
'xihaian03',
'xihaian04',
'admin',
]
}

View File

@ -0,0 +1,75 @@
* {
font-weight: normal;
font-style: normal;
}
.mask-layer {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
background: rgba(0, 0, 0, 0.6);
}
.model-container {
width: 360px;
height: 150px;
background: #fff;
border-radius: 10px;
/* box-shadow: 0px 0px 12px 4px #ff3; */
text-align: center;
font-size: 18px;
color: #333;
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
z-index: 99999999999;
}
.model-container .model-title {
font-size: 16px;
}
.model-container .controls {
position: absolute;
bottom: 10px;
width: 100%;
padding: 12px;
padding-top: 40px;
}
.model-container a {
display: inline-block;
width: 49%;
text-align: center;
cursor: pointer;
}
.model-container .confirm {
width: 60px;
height: 30px;
background: #0087ff;
border-radius: 0.04rem !important;
font-size: 14px;
font-weight: 400;
color: #fff;
line-height: 30px;
}
.model-container .cancel {
width: 60px;
height: 30px;
background: #0087ff;
border-radius: 0.04rem !important;
font-size: 14px;
font-weight: 400;
color: #fff;
line-height: 30px;
margin-left: 100px;
}

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,138 @@
function 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'
}
}
function downloadFile(name, url) {
const alink = document.createElement('a')
alink.download = name // ,,IE10
alink.href = url // url
alink.click() //
}
function getPCNum() {
const agent = navigator.userAgent.toLowerCase()
if (agent.indexOf('win32') >= 0 || agent.indexOf('wow32') >= 0) {
return 32
}
if (agent.indexOf('win64') >= 0 || agent.indexOf('wow64') >= 0) {
return 64
}
}
console.log('------判断浏览器------>', judgeAgent())
var ModelBox = (function() {
var ModelBox = function(option) {
this.option = option || {}
console.log(999, 'init')
this.init()
}
ModelBox.prototype = {
isShow: false,
init: function() {
var _this = this
_this.isShow = this.option.isShow
var html =
'<div class="model-container">' +
'<h1 class="model-title">title</h1>' +
'<div class="model-content"></div>' +
'<div class="controls">' +
'<a class="confirm">下载</a>' +
'<a class="cancel">取消</a>' +
'</div>' +
'</div>'
var ModelBoxCon = document.createElement('div')
ModelBoxCon.setAttribute('class', 'mask-layer')
ModelBoxCon.innerHTML = html
ModelBoxCon.querySelector('.model-title').innerHTML =
_this.option.title
ModelBoxCon.querySelector('.model-content').innerHTML =
_this.option.content
document.getElementsByTagName('html')[0].appendChild(ModelBoxCon)
if (!_this.isShow) {
ModelBoxCon.style.display = 'none'
}
ModelBoxCon.querySelector('.cancel').onclick =
ModelBoxCon.querySelector('.confirm').onclick =
_this.eventsFn.bind('', this, ModelBoxCon)
},
show: function() {
document.querySelector('.mask-layer').style.display = 'block'
this.isShow = true
},
hide: function() {
document.querySelector('.mask-layer').style.display = 'none'
this.isShow = false
},
eventsFn: function(e, doc, target) {
var _thisEvent = target.target
if (_thisEvent.classList.contains('confirm')) {
e.option.confirmCallBack()
}
doc.style.display = 'none'
e.isShow = false
return false
},
} || {}
return ModelBox
})()
var opt = new ModelBox({
title: '当前系统不支持IE内核建议使用Chrome浏览器或360浏览器极速模式',
content: '',
isShow: false,
confirmCallBack: function() {
//
const agent = getPCNum()
console.log('agent------------>', agent)
if (agent == 64) {
// 64
downloadFile(
'ChromeStandaloneSetup64.exe',
'/static/download/ChromeStandaloneSetup64.exe'
)
} else {
// 32
downloadFile(
'ChromeStandalonesetup32.exe',
'/static/download/standalonesetup32.exe'
)
}
},
})
//
if (judgeAgent() !== 'Chrome') {
//alert('')
opt.show()
}

View File

@ -97,19 +97,16 @@ export function getHls(params) {
config2
)
}
// 西-- (10.134.135.92:9537)
let _cameraUrl = _global && _global.config && _global.config.camreaInfo && _global.config.camreaInfo.cameraUrl || '10.134.135.92:9537';
//-
export function getCameraInfoByAreaId(params) {
return axios.get(
'http://10.134.135.92:9537/data_service/getCamera/getCameraInfoByAreaId?areaId=' +
params.areaId,
return axios.get(`http://${_cameraUrl}/data_service/getCamera/getCameraInfoByAreaId?areaId=${params.areaId}`,
config2
)
}
//-
export function getCameraByCondition(params) {
return axios.get(
'http://10.134.135.92:9537/data_service/getCamera/getCameraByCondition?' +
params,
config2
)
return axios.post(`http://${_cameraUrl}/data_service/getCamera/getCameraByCondition`, params, config2)
}

View File

@ -80,6 +80,15 @@ export function sgcInsert(data) {
})
}
// 西--
export function xhaAddCart(data) {
return request({
url: '/resourcecar/batchInsert', // 西-
method: 'post',
data,
})
}
//
export function getUser(params) {
return request({
@ -352,6 +361,23 @@ export function selectInfrastructureList(params) {
params,
})
}
//
export function selectCollectComponentList(params) {
return request({
url: 'resource/selectCollectComponentList',
method: 'get',
params,
})
}
//
export function selectCollectResourceList(params) {
return request({
url: 'resource/selectCollectResourceList',
method: 'get',
params,
})
}
// instanceId
export function getApplyCameraList(id) {
return request({
@ -444,3 +470,26 @@ export function selectAppList(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

@ -236,6 +236,14 @@ export function selectResourceListByDept(params) {
params,
})
}
// 西--
export function selectResourceListByDeptName(params) {
return request({
url: '/resourcecar/selectResourceListByDeptName',
method: 'get',
params,
})
}
//
export function queryApplicationRelByResourceId(params) {
return request({
@ -284,3 +292,20 @@ export function endProcess(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: 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

@ -507,4 +507,5 @@ export const RECOURCE_G_ICON = {
}
// -tab
export const DETAIL_PAGE_CONTENT_DEFAULT_TAB = '应用资源'
// 西-
export const DETAIL_PAGE_CONTENT_DEFAULT_TAB = whoShow.itShowXiHaiAn ? '基础设施' : '应用资源'

View File

@ -10,7 +10,7 @@
<a-dropdown>
<span class="ant-dropdown-link">
<a-avatar :src="avatar" />
{{ username }}
{{ realName }}
<DownOutlined />
</span>
<template v-slot:overlay>
@ -23,47 +23,49 @@
</template>
<script>
import { recordRoute } from '@/config'
import { DownOutlined } from '@ant-design/icons-vue'
import user from '@/assets/home/user.png'
import { useStore } from 'vuex'
import { computed } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { recordRoute } from '@/config'
import { DownOutlined } from '@ant-design/icons-vue'
import user from '@/assets/home/user.png'
import { useStore } from 'vuex'
import { computed, onMounted } from 'vue'
import { useRoute, useRouter } from 'vue-router'
export default {
name: 'VabAvatar',
components: { DownOutlined },
setup() {
const store = useStore()
const router = useRouter()
const route = useRoute()
const logout = async () => {
await store.dispatch('user/logout')
window.sessionStorage.setItem('visits', JSON.stringify([]))
if (recordRoute) {
const fullPath = route.fullPath
router.push(`/login?redirect=${fullPath}`)
} else {
router.push('/login')
}
export default {
name: 'VabAvatar',
components: { DownOutlined },
setup() {
const store = useStore()
const router = useRouter()
const route = useRoute()
const logout = async () => {
await store.dispatch('user/logout')
window.sessionStorage.setItem('visits', JSON.stringify([]))
if (recordRoute) {
const fullPath = route.fullPath
router.push(`/login?redirect=${fullPath}`)
} else {
router.push('/login')
}
return {
avatar: user,
username: computed(() => store.getters['user/username']),
logout,
}
},
}
}
return {
avatar: user,
// username: computed(() => store.getters['user/username']),
realName: computed(() => store.getters['user/realName']),
logout,
}
},
}
</script>
<style lang="less">
.vab-avatar {
display: flex;
align-items: center;
justify-content: center;
.ant-dropdown-link {
display: block;
// min-height: 64px;
cursor: pointer;
}
.vab-avatar {
display: flex;
align-items: center;
justify-content: center;
.ant-dropdown-link {
display: block;
// min-height: 64px;
cursor: pointer;
}
}
</style>

View File

@ -6,7 +6,7 @@
* @Description: 告诉大家这是什么
*/
import {
createApp
createApp
} from 'vue'
import Antd from 'ant-design-vue'
import mitt from 'mitt'
@ -24,33 +24,112 @@ import 'vue3-video-play-emiyagm/dist/style.css' // 引入css
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
/**
* @author chuzhixin 1204505056@qq.com
* @description 正式环境默认使用mock正式项目记得注释后再打包
*/
// if (process.env.NODE_ENV === 'production') {
// const { mockXHR } = require('@/utils/static')
// mockXHR()
// }
import { ElMessage, ElMessageBox } from 'element-plus'
console.log(111, 'main')
/**
* @author chuzhixin 1204505056@qq.com
* @description 正式环境默认使用mock正式项目记得注释后再打包
*/
// if (process.env.NODE_ENV === 'production') {
// const { mockXHR } = require('@/utils/static')
// mockXHR()
// }
const emitter = mitt()
const app = createApp(App)
app.config.globalProperties.$emitter = emitter
app
.use(store)
.use(ElementPlus)
.use(router)
.use(echarts)
.use(vue3videoPlay)
.use(moment)
.use(Antd)
.use(ElementPlus)
.mount('#app')
.use(store)
.use(ElementPlus)
.use(router)
.use(echarts)
.use(vue3videoPlay)
.use(moment)
.use(Antd)
.use(ElementPlus)
.mount('#app')
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
app.component(key, component)
app.component(key, component)
}
router.beforeEach((to, from, next) => {
// console.log('=========>', to, from, next)
document.documentElement.scrollTop = 0
document.body.scrollTop = 0
next()
// console.log('=========>', to, from, next)
document.documentElement.scrollTop = 0
document.body.scrollTop = 0
next()
})
//
// function 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'
// }
// }
// function downloadFile(name, url) {
// const alink = document.createElement('a');
// alink.download = name; // ,,IE10
// alink.href = url; // url
// alink.click(); //
// }
// function getPCNum() {
// const agent = navigator.userAgent.toLowerCase();
// if (agent.indexOf('win32') >= 0 || agent.indexOf('wow32') >= 0) {
// return 32;
// }
// if (agent.indexOf('win64') >= 0 || agent.indexOf('wow64') >= 0) {
// return 64;
// }
// }
// console.log('------------>', judgeAgent());
// //
// if (judgeAgent() !== 'Chrome') {
// ElMessageBox.confirm('Chrome', '', {
// confirmButtonText: '',
// cancelButtonText: '',
// type: 'warning'
// }).then(() => {
// //
// const agent = getPCNum();
// console.log('agent------------>', agent);
// if (agent == 64) {
// // 64
// // downloadFile(_global.config.loginInfo.name_32, _global.config.loginInfo.url_32);
// downloadFile('ChromeStandaloneSetup64.exe', '/static/download/ChromeStandaloneSetup64.exe');
// } else {
// // 32
// downloadFile('ChromeStandalonesetup32.exe', '/static/download/standalonesetup32.exe');
// }
// }).catch(() => {});
// }

View File

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

View File

@ -14,6 +14,7 @@ import { message, notification } from 'ant-design-vue'
const state = () => ({
accessToken: getAccessToken(),
username: '',
realName: '',
userId: '',
avatar: '',
role: 0, //
@ -21,6 +22,7 @@ const state = () => ({
const getters = {
accessToken: (state) => state.accessToken,
username: (state) => state.username,
realName: (state) => state.realName,
avatar: (state) => state.avatar,
role: (state) => state.role,
userId: (state) => state.userId,
@ -45,6 +47,15 @@ const mutations = {
setUsername(state, username) {
state.username = username
},
/**
* @author chuzhixin 1204505056@qq.com
* @description 设置真实用户名
* @param {*} state
* @param {*} username
*/
setRealname(state, realName) {
state.realName = realName
},
//
setRole(state, role) {
state.role = role
@ -75,6 +86,7 @@ const actions = {
})
commit('setAvatar', 'https://i.gtimg.cn/club/item/face/img/2/15922_100.gif')
commit('setUsername', 'admin(未开启登录拦截)')
commit('setRealname', 'admin(未开启登录拦截)')
},
/**
* @author chuzhixin 1204505056@qq.com
@ -114,15 +126,16 @@ const actions = {
* @returns
*/
async getUserInfo({ commit }) {
const { data } = await getUserInfo()
if (!data) {
const res = await getUserInfo()
if (!res || !res.data) {
message.error(`验证失败,请重新登录...`)
return false
}
// debugger
commit('setUsername', data.data.realName)
commit('setRole', data.data.roleIdList.length)
commit('setUserId', data.data.id)
commit('setUsername', res.data.data.username)
commit('setRealname', res.data.data.realName)
commit('setRole', res.data.data.roleIdList.length)
commit('setUserId', res.data.data.id)
// TODO
// let { username, avatar, roles, ability } = data
// if (username && roles && Array.isArray(roles)) {
@ -155,6 +168,7 @@ const actions = {
* @param {*} { commit, dispatch }
*/
async resetAll({ dispatch }) {
debugger
await dispatch('setAccessToken', '')
await dispatch('acl/setFull', false, {
root: true,

View File

@ -1657,14 +1657,16 @@ export function MapFun(mapObj) {
features,
url,
layerName,
createPopupFun
createPopupFun,
url2
) {
console.log(
'_addResourceOnMapWithoutSuperMapCluster===============>',
features,
url,
layerName,
createPopupFun
createPopupFun,
url2
)
// 0
// if (features.length < 1) {
@ -1685,14 +1687,19 @@ export function MapFun(mapObj) {
let layers = null
//
layers = createMarkerClusterLayer()
const icon = createDefaultFeatureStyle({
const icon1 = createDefaultFeatureStyle({
img: url,
iconSize: [36, 36],
iconSize: [33, 33],
})
const icon2 = createDefaultFeatureStyle({
img: url2,
iconSize: [33, 33],
})
features.map((feature) => {
var bounds = map.getBounds()
// console.log("",feature.latLng);
if ( feature.hasOwnProperty('latLng')) {
let icon = feature.active?icon2:icon1
const marker = L.marker(feature.latLng, { icon })
if (createPopupFun !== null) {
marker.uuid = feature.uuid || ''
@ -1728,6 +1735,8 @@ export function MapFun(mapObj) {
}
marker.on('click', e=>{
console.log('点位数据', e)
mybus.emit('pointMarkerClick', feature)
})
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,8 +123,7 @@ export function HieimpMap() {
// debugger;
//
L.supermap && L.supermap
.layerInfoService && L.supermap
L.supermap && L.supermap.layerInfoService && L.supermap
.layerInfoService(_mapConfig.config.QUERY_URL)
.getLayersInfo(function (result) {
// doSomething

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
/*
* @Author: hisense.wuhongjian
* @Date: 2022-03-29 17:48:03
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-04-25 17:47:09
* @LastEditors: Light
* @LastEditTime: 2022-10-10 16:56:17
* @Description: 告诉大家这是什么
*/
import { storage, tokenTableName } from '@/config'
@ -42,7 +42,8 @@ export function setAccessToken(accessToken) {
} else if ('sessionStorage' === storage) {
return sessionStorage.setItem(tokenTableName, accessToken)
} else if ('cookie' === storage) {
return cookie.set(tokenTableName, accessToken)
let expires = new Date(new Date() * 1 + 12 * 60 * 60 * 1000)
return cookie.set(tokenTableName, accessToken, { expires: expires })
// return cookie.set(tokenTableName, '213124123412341234')
} else {
return localStorage.setItem(tokenTableName, accessToken)

View File

@ -11,13 +11,8 @@ import store from '@/store'
import qs from 'qs'
import router from '@/router'
// import { isArray } from '@/utils/validate'
import {
message
} from 'ant-design-vue'
import {
getAccessToken,
setAccessToken
} from '@/utils/accessToken'
import { message } from 'ant-design-vue'
import { getAccessToken, setAccessToken } from '@/utils/accessToken'
let loadingInstance
@ -31,12 +26,15 @@ const handleCode = (code, msg, res) => {
// debugger
switch (code) {
case 401:
debugger
store.dispatch('user/resetAll').catch(() => {})
break
case 403:
router.push({
path: '/401'
}).catch(() => {})
router
.push({
path: '/401',
})
.catch(() => {})
break
case 500:
message.error(msg || '接口异常')
@ -74,7 +72,7 @@ instance.interceptors.request.use(
if (
config.data &&
config.headers['Content-Type'] ===
'application/x-www-form-urlencoded;charset=UTF-8'
'application/x-www-form-urlencoded;charset=UTF-8'
)
config.data = qs.stringify(config.data)
if (debounce.some((item) => config.url.includes(item))) {
@ -101,25 +99,25 @@ instance.interceptors.response.use(
console.log('接口返回headers', response.headers)
console.log('接口返回REDIRECT', response.headers.redirect)
response['Access-Control-Expose-Headers'] = 'redirect'
const {
code,
message
} = response.data
const { code, message } = response.data
if (response.headers.token) {
setAccessToken(response.headers.token)
}
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)
// setTimeout(() => {
location.reload()
// }, 1000)
// url
if (_old_href === _new_href) {
location.reload()
}
return response
}
if (response.headers.redirect === '/#/login') {
var keys = document.cookie.match(/[^ =;]+(?=\=)/g)
if (keys) {
for (var i = keys.length; i--;) {
for (var i = keys.length; i--; ) {
document.cookie =
keys[i] + '=0;path=/;expires=' + new Date(0).toUTCString() //,m.kevis.com
document.cookie =
@ -139,7 +137,7 @@ instance.interceptors.response.use(
location.reload()
}, 1000)
}
handleCode(code, message, response.headers)
handleCode(code, message || response.data.msg, response.headers)
if (loadingInstance) loadingInstance.close()
// const { data, config } = response
// const { code, msg } = data
@ -163,14 +161,14 @@ instance.interceptors.response.use(
console.log('接口error', error)
if (loadingInstance) loadingInstance.close()
const {
response,
message
} = error
const { response, message } = error
if (error.response) {
console.log('接口返回', response)
console.log('接口返回headers', response.headers)
console.log('接口返回REDIRECT', response.headers.redirect)
const { status, data } = response
handleCode(status, data.msg || message, response.headers.redirect)
if (response.headers.token) {
setAccessToken(response.headers.token)
}
@ -178,17 +176,10 @@ instance.interceptors.response.use(
window.location.replace(response.headers.redirect)
return Promise.resolve()
}
const {
status,
data
} = response
handleCode(status, data.msg || message, response.headers.redirect)
return Promise.reject(error)
} else {
let {
message
} = error
let { message } = error
if (message === 'Network Error') {
message = '后端接口连接异常'
}

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian
* @Date: 2022-04-01 17:23:11
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-07-18 18:45:20
* @LastEditTime: 2022-10-11 13:59:18
* @Description: 告诉大家这是什么
*/
/**
@ -26,7 +26,7 @@ router.beforeEach(async (to, from, next) => {
// if (SSOTOKEN) {
// setAccessToken(SSOTOKEN)
// }
console.log('验证白名单', routesWhiteList)
const token = getAccessToken()
console.log('token', token)
let hasToken = token
@ -45,6 +45,7 @@ router.beforeEach(async (to, from, next) => {
router.addRoute(item)
})
if (routesWhiteList.indexOf(to.path) !== -1) {
debugger
next()
} else {
//

View File

@ -15,11 +15,38 @@
></div>
<div class="name">{{ item.type }}</div>
<div class="organization-value">
<span class="num">{{ item.amount }}</span>
<a-tooltip
placement="top"
v-if="
useName === 'admin' &&
(item.type === '已上架部门数' ||
item.type === '用户量' ||
item.type === '资源申请量')
"
>
<template #title>点击查看详情</template>
<!-- 临时临时临时 -->
<span
v-show="item.type === '用户量'"
class="hover-click num"
@click="showDetail(item.type)"
>
482
</span>
<span
v-show="item.type !== '用户量'"
class="hover-click num"
@click="showDetail(item.type)"
>
{{ item.amount }}
</span>
</a-tooltip>
<span v-else class="num">
{{ item.amount }}
</span>
<span class="organization">{{ item.organization }}</span>
</div>
</div>
<div class="shuxian"></div>
</div>
</div>
@ -27,19 +54,25 @@
</template>
<script setup>
import { ref } from 'vue'
import { useStore } from 'vuex'
import { totalResourceAggregation } from '@/api/abilityStatistics.js'
let photo = ref([
require('../../../assets/abilityStatistics/Volume-of-covered-sectors.png'),
require('../../../assets/abilityStatistics/pingtaifangwenliang.png'),
require('../../../assets/abilityStatistics/yonghuliang.png'),
require('../../../assets/abilityStatistics/Volume-of-covered-sectors.png'),
require('../../../assets/abilityStatistics/ziyuanhuijusnum.png'),
require('../../../assets/abilityStatistics/ziyuanshenqingliang.png'),
])
let dataList = ref([])
const store = useStore()
//
const useName = ref(store.getters['user/username'])
///whole_amount
function snum() {
totalResourceAggregation().then((res) => {
dataList.value = res.data.data
console.log('res.data.data------------>', res.data.data)
res.data.data.map((item, index) => {
console.log('dataList', dataList.value)
switch (item.type) {
@ -55,7 +88,8 @@
case '用户量':
dataList.value[index].organization = '人'
break
case '覆盖部门量':
// case '':
case '资源汇聚部门量':
dataList.value[index].organization = '个'
break
}
@ -65,6 +99,22 @@
})
}
snum()
const showDetail = function (type) {
switch (type) {
case '已上架部门数':
window.open(window.SITE_CONFIG.backUrl + '/#/sys-dept', '_blank')
break
case '用户量':
window.open(window.SITE_CONFIG.backUrl + '/#/sys-user', '_blank')
break
case '资源申请量':
window.open(
window.SITE_CONFIG.backUrl + '/#/abilityStatistics-index',
'_blank'
)
break
}
}
</script>
<style lang="less" scoped>
@font-face {
@ -81,6 +131,9 @@
font-size: 32px;
font-weight: 600;
}
.hover-click {
cursor: pointer;
}
.ability-total {
background: #f1f4fb;
font-size: 18px;

View File

@ -1,3 +1,10 @@
<!--
* @Author: hisense.wuhongjian
* @Date: 2022-07-05 12:53:04
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-10-13 15:29:14
* @Description: 告诉大家这是什么
-->
<template>
<div class="footer">
<div class="fotter-son">
@ -18,10 +25,10 @@
<script setup>
import { reactive } from 'vue'
let dataList = reactive([
{
name: '鲁IC备00000000号',
value: '政府标识码3702000106',
},
// {
// name: 'IC00000000',
// value: '3702000106',
// },
{
name: '版权所有:青岛市大数据发展管理局',
value: '地址山东省青岛市香港中路17号市级机关办公楼',

View File

@ -47,7 +47,7 @@
<div class="center"></div>
<div class="right" id="right"></div>
<!-- <div class="right-son1">汇聚量</div> -->
<div class="right-son2">部门数</div>
<div class="right-son2">上架资源部门分布</div>
</div>
</div>
<!-- 来源部门 -->
@ -63,6 +63,7 @@
} from '@/api/abilityStatistics.js'
// import { zywMessage } from '@/api/home'
import * as echarts from 'echarts'
import { message } from 'ant-design-vue'
//
let dataList = ref({
title: '各类资源汇聚量',
@ -92,63 +93,84 @@
// // if (dataList.value.dataList[index].type === '') {
// // dataList.value.dataList[index].amount = dataSourceNum.value || 0
// // }
// dataList.value.dataList[index].organization = ''
// dataList.value.dataList[index].organization = ''
// dataList.value.dataList[index].photo = photo.value[index]
// })
// })
// }
selectTotal().then((res) => {
console.log('selectTotal===============>', res.data.data)
// res.data.data.map((item, index) => {
// dataList.value.dataList[index].organization = ''
// dataList.value.dataList[index].photo = photo.value[index]
// })
console.log('selectTotal===============>', res)
if (res.data.code !== 0) {
return message.error(res.data.msg)
}
let imgObj = {
组件服务: require('../../../assets/abilityStatistics/banner-zj.png'),
应用资源: require('../../../assets/abilityStatistics/banner-yy.png'),
基础设施: require('../../../assets/abilityStatistics/banner-jc.png'),
数据资源: require('../../../assets/abilityStatistics/banner-sj.png'),
知识库: require('../../../assets/abilityStatistics/banner-zs.png'),
}
res.data.data.total.forEach((val) => {
switch (val.type) {
case '组件服务':
dataList.value.dataList.push({
organization: '个',
type: '组件服务',
photo: require('../../../assets/abilityStatistics/banner-zj.png'),
amount: val.count,
})
break
case '应用资源':
dataList.value.dataList.push({
organization: '个',
type: '应用资源',
photo: require('../../../assets/abilityStatistics/banner-yy.png'),
amount: val.count,
})
break
case '基础设施':
if (uavAndIndividualSoldier.num) {
val.count = val.count - 0 + uavAndIndividualSoldier.num
}
dataList.value.dataList.push({
organization: '个',
type: '基础设施',
photo: require('../../../assets/abilityStatistics/banner-jc.png'),
amount: val.count,
})
break
case '数据资源':
dataList.value.dataList.push({
organization: '个',
type: '数据资源',
photo: require('../../../assets/abilityStatistics/banner-sj.png'),
amount: val.count,
})
break
case '知识库':
dataList.value.dataList.push({
organization: '个',
type: '知识库',
photo: require('../../../assets/abilityStatistics/banner-zs.png'),
amount: val.count,
})
break
let _obj = {
organization: '项',
type: val.type,
photo: val.type && imgObj[val.type],
amount: val.count,
}
if (val.type == '基础设施') {
if (uavAndIndividualSoldier.num) {
_obj.amount = val.count - 0 + uavAndIndividualSoldier.num
}
}
if (val.type == '知识库') {
_obj.organization = '条'
}
dataList.value.dataList.push(_obj)
// switch (val.type) {
// case '':
// dataList.value.dataList.push({
// organization: '',
// type: '',
// photo: require('../../../assets/abilityStatistics/banner-zj.png'),
// amount: val.count,
// })
// break
// case '':
// dataList.value.dataList.push({
// organization: '',
// type: '',
// photo: require('../../../assets/abilityStatistics/banner-yy.png'),
// amount: val.count,
// })
// break
// case '':
// if (uavAndIndividualSoldier.num) {
// val.count = val.count - 0 + uavAndIndividualSoldier.num
// }
// dataList.value.dataList.push({
// organization: '',
// type: '',
// photo: require('../../../assets/abilityStatistics/banner-jc.png'),
// amount: val.count,
// })
// break
// case '':
// dataList.value.dataList.push({
// organization: '',
// type: '',
// photo: require('../../../assets/abilityStatistics/banner-sj.png'),
// amount: val.count,
// })
// break
// case '':
// dataList.value.dataList.push({
// organization: '',
// type: '',
// photo: require('../../../assets/abilityStatistics/banner-zs.png'),
// amount: val.count,
// })
// break
// }
})
let arr = ['组件服务', '应用资源', '基础设施', '数据资源', '知识库']
dataList.value.dataList.sort((a, b) => {
@ -189,6 +211,7 @@
})
}
console.log('laiyuanDataList.value', laiyuanDataList.value)
funnelPlot(laiyuanDataList.value)
})
}
//
@ -294,91 +317,252 @@
}
//
const funnelPlot = (dataList) => {
// let arr = ['0-5', '5-10', '10-15', '15-20', '20']
// dataList.sort((a, b) => {
// console.log(arr.indexOf(a.fanwei), arr.indexOf(b.fanwei))
// return arr.indexOf(b.fanwei) - arr.indexOf(a.fanwei)
// })
//
let arrCopy = ['0-5', '5-10', '10-15', '15-20', '20以上']
//
dataList.sort((a, b) => {
return Number(a.value) - Number(b.value)
})
let _arr = dataList.map((v) => v.fanwei) || arrCopy
//
let chartData = _arr.map((v, i) => {
return {
name: v,
value: 10 + 10 * i,
}
})
let newArr = []
dataList.map((v) => {
if (v.value && Number(v.value > 0)) {
newArr.push({
name: v.fanwei,
value: v.value,
})
}
})
console.log('============》', dataList)
dataList = dataList.reverse()
echarts.init(document.getElementById('right')).dispose()
let chartDom = document.getElementById('right')
let myChart = echarts.init(chartDom)
let option
// let option = {
// tooltip: {
// trigger: 'item',
// formatter: function (info) {
// let _obj = dataList.find((v) => v.fanwei == info.data.name) || {}
// let dom = ref()
// dom.value =
// '<br/>' +
// (_obj.fanwei || '--') +
// ' : ' +
// (_obj.value || _obj.value === 0 ? _obj.value : '--') +
// ''
// console.log('name', info.data)
// return dom.value
// },
// },
// grid: {
// height: '65%',
// width: '45%',
// left: '20%',
// bottom: 30,
// },
// xAxis: {
// show: false,
// type: 'category',
// data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
// },
// yAxis: {
// show: false,
// type: 'value',
// min: 0,
// max: 20,
// },
// series: [
// {
// name: '',
// type: 'funnel',
// left: '28%',
// right: '35%',
// top: '15%',
// bottom: '10%',
// minSize: '0%',
// maxSize: '100%',
// sort: 'ascending',
// label: {
// show: true,
// formatter: function (info) {
// let _obj = dataList.find((v) => v.fanwei == info.data.name) || {}
// let dom = ref()
// dom.value =
// (_obj.fanwei || '--') +
// ' : ' +
// (_obj.value || _obj.value === 0 ? _obj.value : '--') +
// ''
// console.log('name', info.data)
// return dom.value
// },
// rich: {
// b: {
// fontSize: 14,
// },
// },
// },
// labelLine: {
// length: 40,
// lineStyle: {
// width: 1,
// type: 'solid',
// },
// },
// itemStyle: {
// borderColor: '#fff',
// borderWidth: 1,
// },
// emphasis: {
// label: {
// fontSize: 20,
// },
// },
// data: chartData,
// },
// ],
// }
option = {
// title: {
// text: '',
// },
let option = {
// title: {
// text: 'ECharts '
// },
tooltip: {
trigger: 'item',
formatter: function (name) {
formatter: function (info) {
let _obj = dataList.find((v) => v.fanwei == info.name) || {}
let dom = ref()
dom.value =
'部门数<br/>' + name.data.fanwei + ' : ' + name.data.value + '个'
console.log('name', name.data)
'部门数<br/>' +
(_obj.fanwei || '--') +
' : ' +
(_obj.value || _obj.value === 0 ? _obj.value : '--') +
'个'
console.log('name', info)
return dom.value
},
},
grid: {
height: '65%',
width: '45%',
left: '20%',
bottom: 30,
legend: {
data: [],
},
xAxis: {
show: false,
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
name: '上架数量区间',
data: [],
},
yAxis: {
show: false,
type: 'value',
min: 0,
max: 20,
name: '部门数量(个)',
},
grid: {
height: '65%',
width: '63%',
left: '12%',
bottom: 30,
},
series: [
{
name: '部门数',
type: 'funnel',
left: '20%',
top: '10%',
width: '60%',
height: '80%',
min: 0,
max: 100,
minSize: '0%',
maxSize: '100%',
sort: 'ascending',
gap: 2,
label: {
show: true,
position: 'inside',
},
labelLine: {
length: 10,
lineStyle: {
width: 1,
type: 'solid',
},
},
name: '',
type: 'bar',
barWidth: 35,
barGap: '-100%',
itemStyle: {
borderColor: '#fff',
borderWidth: 1,
},
emphasis: {
label: {
fontSize: 20,
normal: {
color: '#C1232B',
},
},
data: dataList,
// data: [5, 20, 36, 10, 10, 20]
data: [],
},
{
data: [],
name: '',
type: 'bar',
barWidth: 35,
barGap: '-100%',
itemStyle: {
normal: {
color: '#B5C334',
},
},
// data: [5, 20, 36, 10, 10, 20]
data: [],
},
{
name: '',
type: 'bar',
barWidth: 35,
barGap: '-100%',
itemStyle: {
normal: {
color: '#FCCE10',
},
},
// data: [5, 20, 36, 10, 10, 20]
data: [],
},
{
name: '',
type: 'bar',
barWidth: 35,
barGap: '-100%',
itemStyle: {
normal: {
color: '#E87C25',
},
},
// data: [5, 20, 36, 10, 10, 20]
data: [],
},
{
name: '',
type: 'bar',
barWidth: 35,
barGap: '-100%',
itemStyle: {
normal: {
color: '#27727B',
},
},
// data: [5, 20, 36, 10, 10, 20]
data: [],
},
{
name: '',
type: 'bar',
barWidth: 35,
barGap: '-100%',
itemStyle: {
normal: {
color: '#FE8463',
},
},
// data: [5, 20, 36, 10, 10, 20]
data: [],
},
],
}
option.legend.data = []
option.xAxis.data = []
dataList.map((val, index) => {
// option.legend.data.push(val.fanwei)
option.xAxis.data.push(val.fanwei)
option.series[index].name = val.fanwei
let arr = []
for (let i = 0; i < 5; i++) {
if (i == index) {
arr.push(val.value)
} else {
arr.push(0)
}
}
option.series[index].data = arr
})
option && myChart.setOption(option)
}
onMounted(() => {
@ -393,30 +577,33 @@
},
{ deep: true }
)
watch(
laiyuanDataList,
(value) => {
funnelPlot(value)
console.log(value, ' laiyuanDataList')
},
{ deep: true }
)
// watch(
// laiyuanDataList,
// (value) => {
// funnelPlot(value)
// console.log(value, ' laiyuanDataList')
// },
// { deep: true }
// )
</script>
<style lang="less" scoped>
@font-face {
font-family: 'num-typeface';
src: url('~@/assets/newHome/font/num-typeface.otf');
}
@font-face {
font-family: 'text-typeface';
src: url('~@/assets/newHome/font/text-typeface.otf');
}
.num {
font-family: num-typeface;
font-size: 32px;
font-weight: 600;
margin-right: 5px;
}
.hengxian {
height: 3px;
width: 30px;
@ -424,6 +611,7 @@
margin-top: 6px;
background: #0058e1;
}
.resource-aggregation {
font-size: 18px;
font-family: text-typeface;
@ -432,6 +620,7 @@
justify-content: center;
background: #f3f5f9;
padding-bottom: 60px;
.resource-aggregation-left {
background: #fff;
border: 1px solid #e6e9ed;
@ -442,12 +631,14 @@
padding: 20px;
padding-top: 64px;
position: relative;
.title {
position: absolute;
top: 20px;
font-size: 18px;
color: #212121;
}
.content {
.content-son {
.content-left {
@ -459,10 +650,12 @@
justify-content: space-between;
align-items: center;
border-radius: 1px;
.name {
display: flex;
justify-content: center;
align-items: center;
.name-photo {
margin-left: 10px;
display: inline-block;
@ -471,11 +664,14 @@
margin-right: 11px;
}
}
.organization-value {
margin-right: 16px;
.num {
font-size: 26px;
}
span:nth-child(2) {
font-size: 16px;
}
@ -484,6 +680,7 @@
}
}
}
.resource-aggregation-right {
background: #fff;
border: 1px solid #e6e9ed;
@ -497,6 +694,7 @@
position: relative;
display: flex;
padding-left: 120px;
.title {
position: absolute;
top: 20px;
@ -504,6 +702,7 @@
font-size: 18px;
color: #212121;
}
.bumensnum {
width: 100px;
position: absolute;
@ -516,6 +715,7 @@
background: rgba(0, 88, 225, 0.1);
border-right: 1px solid rgba(0, 88, 225, 0.5);
border-radius: 2px;
.bumensnum-photo {
height: 50px;
width: 50px;
@ -523,46 +723,55 @@
no-repeat;
margin-bottom: 30px;
}
p {
margin-top: 18px;
color: #0058e1;
.num {
font-size: 30px;
}
span:last-child {
font-size: 16px;
}
}
}
.content {
width: 779px;
height: 313px;
display: flex;
position: relative;
background: #f1f4fb;
.left {
width: 373px;
height: 313px;
}
.center {
height: 240px;
width: 1px;
margin-top: 31px;
background: #d0d4de;
}
.right {
width: 406px;
height: 313px;
}
.right-son1 {
position: absolute;
top: 10px;
left: 52.5%;
}
.right-son2 {
position: absolute;
top: 10px;
left: 70.5%;
left: 65.5%;
}
}
}

View File

@ -187,6 +187,7 @@
require('../../../assets/abilityStatistics/zujianfuwu-bg.png'),
require('../../../assets/abilityStatistics/shujuziyuan-bg.png'),
require('../../../assets/abilityStatistics/jichujianshe-bg.png'),
require('../../../assets/abilityStatistics/yingyongziyuan-bg.png'),
])
let photo = ref([
require('../../../assets/abilityStatistics/yingyongziyuan.png'),
@ -194,33 +195,38 @@
require('../../../assets/abilityStatistics/zujianfuwu.png'),
require('../../../assets/abilityStatistics/shujuziyuan.png'),
require('../../../assets/abilityStatistics/jichujianshe.png'),
require('../../../assets/abilityStatistics/yingyongziyuan.png'),
])
//
let dataLists = ref([])
const myApplyAmount = () => {
applyAmount().then((res) => {
// dataLists.value = res.data.data
dataLists.value = []
res.data.data.map((item) => {
switch (item.type) {
case '应用资源':
dataLists.value[1] = item
break
case '业务组件':
dataLists.value[0] = item
break
case '图层服务':
dataLists.value[2] = item
break
case '开发组件':
dataLists.value[3] = item
break
case '智能算法':
dataLists.value[4] = item
break
default:
dataLists.value.push(item)
break
}
dataLists.value.push(item)
// switch (item.type) {
// case '':
// dataLists.value[0] = item
// break
// case '':
// dataLists.value[1] = item
// break
// case '':
// dataLists.value[1] = item
// break
// case '':
// dataLists.value[2] = item
// break
// case '':
// dataLists.value[4] = item
// break
// case '':
// dataLists.value[5] = item
// break
// default:
// dataLists.value.push(item)
// break
// }
})
photo.value.map((item, index) => {
dataLists.value[index].photo = item

View File

@ -10,7 +10,7 @@
<new-home-header></new-home-header>
<ability-total></ability-total>
<resource-aggregation></resource-aggregation>
<atlas-resources></atlas-resources>
<!-- <atlas-resources></atlas-resources> -->
<sharing-situation></sharing-situation>
<ability-ranking></ability-ranking>
<capability-requirements></capability-requirements>

View File

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

View File

@ -300,6 +300,7 @@
'应用名称',
'应用描述',
'应用类型',
'应用状态',
])
const notFilled = ref([])
getUser().then((res) => {
@ -346,15 +347,15 @@
) {
notFilled.value.push('应用领域')
}
// if (
// !dataFrom.value.infoList.filter(
// (val) => val.attrType === ''
// )[0] ||
// !dataFrom.value.infoList.filter((val) => val.attrType === '')[0]
// .attrValue
// ) {
// notFilled.value.push('')
// }
if (
!dataFrom.value.infoList.filter(
(val) => val.attrType === '应用状态'
)[0] ||
!dataFrom.value.infoList.filter((val) => val.attrType === '应用状态')[0]
.attrValue
) {
notFilled.value.push('应用状态')
}
if (
!dataFrom.value.infoList.filter(
(val) => val.attrType === '应用类型'
@ -373,6 +374,7 @@
// ) {
// notFilled.value.push('')
// }
if (notFilled.value.length > 0) {
message.warning('请填写必填字段')
console.log(notFilled.value)

View File

@ -203,6 +203,7 @@
</div>
</div>
</template>
<template v-else>
<div class="bottom">
<div
@ -301,6 +302,16 @@
:list="props.fileList2"
tip="支持文件类型大小不超过100M"
></upload>
<upload
v-else-if="item.type == 'richText' && item.name == '技术文档'"
type="文件"
btnName="上传技术文档"
:maxCount="1"
:data="item"
:busType="2"
:list="props.fileList2"
tip="支持.doc,.docx,.ppt,.pdf类型大小不超过100M"
></upload>
<upload
v-else-if="item.type == 'package' && item.name == '上传附件'"
type="附件"

View File

@ -159,7 +159,7 @@
width: unset;
button {
height: 30px;
width: 100px;
width: 120px;
border: 1px solid #bbd3ef;
border-radius: 6px;
background: #edf4fc;

View File

@ -8,9 +8,7 @@
></DetalsTitle>
</div>
<!-- 青岛市局 -->
<div
v-if="whoShow1 && whoShow1.itShowQingDao"
style="width: 100%; display: flex; justify-content: center"
<div style="width: 100%; display: flex; justify-content: center"
>
<div class="content" v-for="item in dataFrom.content" :key="item.title">
<div class="content-left" v-if="item.titleType === '调用接口'">
@ -162,127 +160,6 @@
</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>
</template>

View File

@ -11,51 +11,38 @@
<div class="main">
<div class="main-left">
<p>{{ dataFrom.linkName }}</p>
<a-tooltip v-if="flag">
<template #title>{{ dataFrom.link }}</template>
<p style="cursor: pointer" @click="clickLink(dataFrom.link)">
{{ dataFrom.link || '暂无' }}
</p>
</a-tooltip>
<a-tooltip v-else>
<a-tooltip>
<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 }}
</p>
</a-tooltip>
</div>
<div class="main-center">
<p>{{ dataFrom.numberName }}</p>
<a-tooltip v-if="flag">
<template #title>{{ dataFrom.number }}</template>
<p>{{ dataFrom.number || '暂无' }}</p>
</a-tooltip>
<a-tooltip v-else>
<a-tooltip>
<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>
<div
@click="copyFunction(dataFrom.number, '复制账号')"
v-if="dataFrom.number != '' && flag"
>
<div @click="copyFunction(dataFrom.number, '复制账号')" v-if="dataFrom.number != '' && flag">
复制账号
</div>
<!-- <div v-else id="zanwu">暂无</div> -->
</div>
<div class="main-right">
<p>{{ dataFrom.passwordName }}</p>
<a-tooltip v-if="flag">
<template #title>{{ dataFrom.password }}</template>
<p>{{ dataFrom.password || '暂无' }}</p>
</a-tooltip>
<a-tooltip v-else>
<a-tooltip>
<template #title>请申请后查看</template>
<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>
<div
@click="copyFunction(dataFrom.password2, '复制密码')"
v-if="dataFrom.password2 != '' && flag"
>
<div @click="copyFunction(dataFrom.password2, '复制密码')" v-if="dataFrom.password2 != '' && flag">
复制密码
</div>
<!-- <div v-else id="zanwu">暂无</div> -->
@ -64,166 +51,185 @@
</div>
</template>
<script setup>
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle.vue'
import { ref, defineProps, watch } from 'vue'
import { message } from 'ant-design-vue'
let flag = ref(true)
const whoShow1 = ref(whoShow)
console.log('whoShow1', whoShow1.value.itShowQingDao)
const props = defineProps({
dataList: { type: Object, default: null },
})
const dataFrom = ref({
linkName: '访问地址',
link: '',
numberName: '试用账号',
number: '',
passwordName: '试用密码',
password: '**************************',
password2: '',
})
if (props.dataList.infoList) {
let obj = props.dataList.approveStatus
if (obj !== '通过' && whoShow1.value.itShowQingDao) {
flag.value = false
}
dataFrom.value.link = props.dataList.link
props.dataList.infoList.map((item) => {
if (item.attrType == '试用用户名' || item.attrType == '试用账号') {
dataFrom.value.number = item.attrValue
} else if (item.attrType == '试用密码') {
dataFrom.value.password2 = item.attrValue
}
})
if (dataFrom.value.password2 === '') {
dataFrom.value.password = ''
}
// }
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle.vue'
import { ref, defineProps, watch } from 'vue'
import { message } from 'ant-design-vue'
let flag = ref(true)
const whoShow1 = ref(whoShow)
console.log('whoShow1', whoShow1.value.itShowQingDao)
const props = defineProps({
dataList: { type: Object, default: null },
})
const dataFrom = ref({
linkName: '访问地址',
link: '',
numberName: '试用账号',
number: '',
passwordName: '试用密码',
password: '**************************',
password2: '',
})
console.log('props.dataList------------>', props.dataList);
const approveStatus = ref('')
if (props.dataList.infoList) {
let obj = props.dataList.approveStatus;
approveStatus.value = props.dataList.approveStatus
if (obj !== '通过' && whoShow1.value.itShowQingDao) {
flag.value = false
}
const clickLink = (link) => {
window.open(link)
}
//
const copyFunction = (data, name) => {
if (data !== '') {
let url = data
let oInput = document.createElement('input')
oInput.value = url
document.body.appendChild(oInput)
oInput.select() // ;
console.log(oInput.value)
document.execCommand('Copy') //
oInput.remove() //
message.success(name + '成功')
} else {
message.error('复制为空')
dataFrom.value.link = props.dataList.link
props.dataList.infoList.map((item) => {
if (item.attrType == '试用用户名' || item.attrType == '试用账号') {
dataFrom.value.number = item.attrValue
} else if (item.attrType == '试用密码') {
dataFrom.value.password2 = item.attrValue
}
}
message.config({
top: '100px', //
})
// const success = () => {
// message.success({
// // content: 'This is a prompt message with custom className and style',
// className: 'custom-class',
// style: {},
// })
if (dataFrom.value.password2 === '') {
dataFrom.value.password = ''
}
// }
watch(
() => props.dataList,
(val) => {
if (val) {
let obj = props.dataList.approveStatus
if (obj !== '通过' && whoShow1.value.itShowQingDao) {
flag.value = false
}
dataFrom.value.link = props.dataList.link
props.dataList.infoList.map((item) => {
if (item.attrType == '试用用户名' || item.attrType == '试用账号') {
dataFrom.value.number = item.attrValue
} else if (item.attrType == '试用密码') {
dataFrom.value.password2 = item.attrValue
}
})
if (dataFrom.value.password2 === '') {
dataFrom.value.password = ''
}
const clickLink = (link) => {
window.open(link)
}
//
const copyFunction = (data, name) => {
if (data !== '') {
let url = data
let oInput = document.createElement('input')
oInput.value = url
document.body.appendChild(oInput)
oInput.select() // ;
console.log(oInput.value)
document.execCommand('Copy') //
oInput.remove() //
message.success(name + '成功')
} else {
message.error('复制为空')
}
}
message.config({
top: '100px', //
})
// const success = () => {
// message.success({
// // content: 'This is a prompt message with custom className and style',
// className: 'custom-class',
// style: {},
// })
// }
watch(
() => props.dataList,
(val) => {
if (val) {
let obj = props.dataList.approveStatus
approveStatus.value = props.dataList.approveStatus
if (obj !== '通过' && whoShow1.value.itShowQingDao) {
flag.value = false
}
dataFrom.value.link = props.dataList.link
props.dataList.infoList.map((item) => {
if (item.attrType == '试用用户名' || item.attrType == '试用账号') {
dataFrom.value.number = item.attrValue
} else if (item.attrType == '试用密码') {
dataFrom.value.password2 = item.attrValue
}
})
if (dataFrom.value.password2 === '') {
dataFrom.value.password = ''
}
}
)
}
)
</script>
<style lang="less" scoped>
.algorithm-on-trial {
padding: 0.8rem 0px 0.8rem;
display: flex;
flex-direction: column;
.algorithm-on-trial {
padding: 0.8rem 0px 0.8rem;
display: flex;
flex-direction: column;
align-items: center;
.main {
margin-top: 0.3rem;
width: 13rem;
height: 2.5rem;
background: url('~@/assets/detailsAll/kfzj_sybg.png') no-repeat;
display: grid;
grid-template-columns: 33.33% 33.33% 33.33%;
align-items: center;
.main {
margin-top: 0.3rem;
width: 13rem;
height: 2.5rem;
background: url('~@/assets/detailsAll/kfzj_sybg.png') no-repeat;
display: grid;
grid-template-columns: 33.33% 33.33% 33.33%;
align-items: center;
.main-left {
border-right: 0.01rem #ffffff solid;
padding-left: 0.7rem;
padding-right: 1rem;
& > p {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
word-break: break-all;
-webkit-box-orient: vertical;
}
}
.main-center {
padding-left: 1rem;
padding-right: 1rem;
}
.main-right {
padding-right: 0.7rem;
}
& > div > p:first-child {
font-size: 0.26rem;
color: #ffffff;
font-weight: bold;
}
& > div > p:nth-child(2) {
font-size: 0.22rem;
color: #ffffff;
line-height: 0.34rem;
}
& > div:first-child > p:last-child {
text-decoration: underline;
word-wrap: break-word;
word-break: normal;
}
& > div > div:last-child {
height: 0.34rem;
width: 1.1rem;
border: 0.01rem solid #ffffff;
border-radius: 0.06rem;
font-size: 0.18rem;
color: #ffffff;
cursor: pointer;
text-align: center;
line-height: 0.34rem;
.main-left {
border-right: 0.01rem #ffffff solid;
padding-left: 0.7rem;
padding-right: 1rem;
&>p {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
word-break: break-all;
-webkit-box-orient: vertical;
}
}
#zanwu {
.main-center {
padding-left: 1rem;
padding-right: 1rem;
}
.main-right {
padding-right: 0.7rem;
}
&>div>p:first-child {
font-size: 0.26rem;
color: #ffffff;
font-weight: bold;
}
&>div>p:nth-child(2) {
font-size: 0.22rem;
color: #ffffff;
line-height: 0.34rem;
}
&>div:first-child>p:last-child {
text-decoration: underline;
word-wrap: break-word;
word-break: normal;
}
&>div>div:last-child {
height: 0.34rem;
width: 1.1rem;
font-size: 0.24rem;
border: 0.01rem solid #ffffff;
border-radius: 0.06rem;
font-size: 0.18rem;
color: #ffffff;
border: 0;
cursor: pointer;
text-align: center;
line-height: 0.34rem;
}
}
#zanwu {
height: 0.34rem;
width: 1.1rem;
font-size: 0.24rem;
color: #ffffff;
border: 0;
}
}
.blur-word {
filter: blur(4px);
}
</style>
<style>
.custom-class {
/* top: 100px; */
}
.custom-class {
/* top: 100px; */
}
</style>

View File

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

View File

@ -8,9 +8,7 @@
></DetalsTitle>
</div>
<!-- 青岛市局 -->
<div
v-if="whoShow1 && whoShow1.itShowQingDao"
style="width: 100%; display: flex; justify-content: center"
<div style="width: 100%; display: flex; justify-content: center"
>
<div class="content">
<div
@ -50,29 +48,6 @@
</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>
</template>

View File

@ -7,9 +7,7 @@
:type="dataFrom.englishTitle"
></DetalsTitle>
</div>
<div
v-if="whoShow1 && whoShow1.itShowQingDao"
style="width: 100%; display: flex; justify-content: center"
<div style="width: 100%; display: flex; justify-content: center"
>
<div class="content" v-for="item in dataFrom.content" :key="item.title">
<div class="content-left">
@ -117,84 +115,6 @@
</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>
</template>

View File

@ -7,9 +7,7 @@
:type="dataFrom.englishTitle"
></DetalsTitle>
</div>
<div
v-if="whoShow1 && whoShow1.itShowQingDao"
style="width: 100%; display: flex; justify-content: center"
<div style="width: 100%; display: flex; justify-content: center"
>
<div class="content">
<div class="content-card">
@ -73,41 +71,6 @@
</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>
</template>

View File

@ -7,9 +7,7 @@
:type="dataFrom.englishTitle"
></DetalsTitle>
</div>
<div
v-if="whoShow1 && whoShow1.itShowQingDao"
style="width: 100%; display: flex; justify-content: center"
<div style="width: 100%; display: flex; justify-content: center"
>
<div class="content" v-for="item in dataFrom.content" :key="item.title">
<div class="content-left">
@ -128,86 +126,6 @@
</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>
</template>

View File

@ -89,11 +89,15 @@
</span>
<span>{{ val.type }}</span>
</div>
<!-- (item.note1 && JSON.parse(item.note1) &&
JSON.parse(item.note1)[0] &&
JSON.parse(item.note1)[0].channelName -->
<div class="description">
{{
val.description ||
((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 +
'个摄像头') ||
@ -101,7 +105,7 @@
}}
</div>
</div>
<div class="remove" @click="removeFunction(val)"></div>
<div class="remove" v-if="item.arr.length>1" @click="removeFunction(val)"></div>
</div>
</template>
</div>
@ -148,7 +152,7 @@
])
// eslint-disable-next-line vue/no-setup-props-destructure
dataForm.value = props.dataList
console.log('=========================>', dataForm.value)
console.log('============dataList=============>', dataForm.value)
// const router = useRouter()
// const arr =
// router.currentRoute.value.query.name instanceof Array
@ -177,7 +181,7 @@
let arr = JSON.parse(note1)
xVideoList.value = []
arr.map((val) => {
xVideoList.value.push({ name: val.channelName, key: val.channelId })
xVideoList.value.push({ name: val.channelName || '', key: val.channelId })
})
videoVisible.value = true
} else {

View File

@ -422,7 +422,15 @@
<script>
import HomeFooter from '@/views/newHome/components/Footer'
import mybus from '@/myplugins/mybus'
import { defineComponent, reactive, ref, toRefs, onMounted, watch, nextTick } from 'vue'
import {
defineComponent,
reactive,
ref,
toRefs,
onMounted,
watch,
nextTick,
} from 'vue'
import { UpOutlined, DownOutlined } from '@ant-design/icons-vue'
import {
selectDicStoreAll,
@ -441,7 +449,8 @@ import DetailsPageResource from '@/views/home/components/DetailsPageResource.vue
//
import infrastructurePage from '@/views/home/infrastructurePage.vue'
import detailsPageInfrastructureTree from '@/views/home/detailsPageInfrastructureTree.vue'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
import { useStore } from 'vuex'
import { message } from 'ant-design-vue'
import {
titleNameArray,
@ -450,17 +459,6 @@ import {
} from './constantData/showData.js'
export default defineComponent({
beforeRouteEnter(to, from, next) {
console.log('to---DetailsPageconetent--beforeRouteEnter------->', to)
console.log('from---DetailsPageconetent--beforeRouteEnter------->', from)
console.log('next---DetailsPageconetent--beforeRouteEnter------->', next)
// from.nameundefined
// if (from.name || from.name !== 'details') {
// console.log('------------>')
// localStorage.removeItem('DetailsPageconetent')
// }
next()
},
beforeRouteLeave(to, from, next) {
console.log('to---DetailsPageconetent--beforeRouteLeave------->', to)
console.log('from---DetailsPageconetent--beforeRouteLeave------->', from)
@ -473,7 +471,7 @@ export default defineComponent({
setup() {
//6
const flag = ref('')
let componentTypeArray = ['组件类型', '应用领域']
const handleAdd = (value) => {
flag.value = value
}
@ -494,7 +492,7 @@ export default defineComponent({
let currentPageSize = ref(5)
const pageSizeOptions = ref(['5', '10', '20', '50'])
const router = useRouter()
let select = router.currentRoute.value.query.select || '应用资源'
let select = router.currentRoute.value.query.select || DETAIL_PAGE_CONTENT_DEFAULT_TAB
const select2 = router.currentRoute.value.query.select
const str = router.currentRoute.value.query.str
const searchValue = ref(str)
@ -523,31 +521,49 @@ export default defineComponent({
orderType: 'DESC', // ASC DESC
}
const store = useStore()
//
const user = ref({
username: store.getters['user/username'],
realName: store.getters['user/realName'],
})
const searchResultListDom = ref(null)
//
const storageSearchInfo = localStorage.getItem('DetailsPageconetent') && JSON.parse(
localStorage.getItem('DetailsPageconetent')
)
let storageSearchInfo = null
const handleSetSearchData = () => {
if (localStorage.getItem('DetailsPageconetent')) {
storageSearchInfo = JSON.parse(
localStorage.getItem('DetailsPageconetent')
)
}
console.log('storageSearchInfo------------>', storageSearchInfo)
//
if (storageSearchInfo) {
paramsGetResources = Object.assign({}, paramsGetResources, storageSearchInfo)
paramsGetResources = Object.assign(
{},
paramsGetResources,
storageSearchInfo
)
//
searchValue.value = storageSearchInfo.name;
currentPage.value = storageSearchInfo.pageNum;
currentPageSize.value = storageSearchInfo.pageSize;
paramsGetResources.pageNum = storageSearchInfo.pageNum;
paramsGetResources.pageSize = storageSearchInfo.pageSize;
paramsGetResources.deptIds = storageSearchInfo.deptIds;
paramsGetResources.districtId = storageSearchInfo.districtId;
searchValue.value = storageSearchInfo.name
currentPage.value = storageSearchInfo.pageNum
currentPageSize.value = storageSearchInfo.pageSize
paramsGetResources.pageNum = storageSearchInfo.pageNum
paramsGetResources.pageSize = storageSearchInfo.pageSize
paramsGetResources.deptIds = storageSearchInfo.deptIds
paramsGetResources.districtId = storageSearchInfo.districtId
// 使
nextTick(() => {
searchResultListDom.value.changeCondition({
value: storageSearchInfo.orderField,
orderType: storageSearchInfo.orderType,
}, true)
searchResultListDom.value.changeCondition(
{
value: storageSearchInfo.orderField,
orderType: storageSearchInfo.orderType,
},
true
)
})
}
}
@ -581,7 +597,10 @@ export default defineComponent({
}
listKey.value++
getAppResources()
console.log('paramsGetResources-----chagneTag------->', paramsGetResources);
console.log(
'paramsGetResources-----chagneTag------->',
paramsGetResources
)
}
//
@ -618,7 +637,10 @@ export default defineComponent({
paramsGetResources.orderField = ''
paramsGetResources.orderType = 'DESC'
mybus.emit('chongzhi')
console.log('paramsGetResources---chongzhi-重置-------->', paramsGetResources);
console.log(
'paramsGetResources---chongzhi-重置-------->',
paramsGetResources
)
getAppResources()
}
@ -642,24 +664,68 @@ export default defineComponent({
paramsGetResources.pageNum = 1
currentPage.value = 1
console.log('点击筛选条件=================>', tag, checked, name)
// 西-
if (whoShow1.value.itShowXiHaiAn) {
if (tag.dict_label == '智能算法' && checked) {
if (ListContentCopy.value[2]) {
ListContent.records.splice(2, 1, ListContentCopy.value[2])
}
} else {
if (name == '组件类型') {
ListContent.records.splice(2, 1)
paramsGetResources.infoList = paramsGetResources.infoList.filter(
(item) => componentTypeArray.includes(item.attrType)
)
}
}
}
ListContent.records.forEach((val) => {
if (!val) {
return
}
if (val.name === name) {
paramsGetResources.infoList = paramsGetResources.infoList.filter(
(item) => item.attrType !== name
)
if (val.selectedTags.indexOf(tag.dict_label) == -1) {
if (
val.selectedTags &&
val.selectedTags.indexOf(tag.dict_label) == -1
) {
val.selectedTags = [tag.dict_label]
paramsGetResources.infoList.push({
attrType: name,
attrValue: tag.dict_label,
})
} else {
val.selectedTags.splice(val.selectedTags.indexOf(tag.dict_label), 1)
val.selectedTags &&
val.selectedTags.splice(
val.selectedTags.indexOf(tag.dict_label),
1
)
}
// 西-
if (whoShow1.value.itShowXiHaiAn) {
if (
(val.selectedTags.length == 0 &&
tag.dict_label == '智能算法' &&
!checked) ||
(tag.dict_label !== '智能算法' && name == '组件类型')
) {
if (ListContentCopy.value[2]) {
ListContentCopy.value[2].selectedTags = []
}
}
}
}
})
listKey.value++
console.log('paramsGetResources---handleChange--------->', paramsGetResources);
console.log(
'paramsGetResources---handleChange--------->',
paramsGetResources
)
getAppResources()
}
const getNewList = () => {
@ -671,12 +737,11 @@ export default defineComponent({
selectDicStoreAll(params).then((res) => {
console.log('selectDicStoreAll============>', res)
const { data } = res.data
ListContent.records = []
ListContent.records = data
let dataCopy = data
tecHnosphere = router.currentRoute.value.query.tecHnosphere
appLiCation = router.currentRoute.value.query.appLiCation
mybus.emit('getDeptList')
ListContent.records.forEach((val) => {
dataCopy.forEach((val) => {
val.selectedTags = []
if (val.name == '应用领域' && appLiCation) {
val.selectedTags[0] = []
@ -720,16 +785,29 @@ export default defineComponent({
val.shrinkFlag = true
}
// todo--
if (storageSearchInfo) {
// name
let obj =
(storageSearchInfo.infoList || []).find(
(x) => x.attrType === val.name
) || {}
val.selectedTags = obj.attrValue || []
let obj = (storageSearchInfo.infoList || []).find(
(x) => x.attrType === val.name
)
if (obj) {
val.selectedTags = [obj.attrValue] || []
}
}
})
ListContentCopy.value = []
ListContentCopy.value = JSON.parse(JSON.stringify(dataCopy))
ListContent.records = []
ListContent.records = JSON.parse(JSON.stringify(dataCopy))
// -
if (whoShow1.value.itShowXiHaiAn) {
if (!storageSearchInfo) {
let _tag_list = dataCopy.filter((v) =>
componentTypeArray.includes(v.name)
)
ListContent.records = _tag_list
}
}
listKey.value++
listKey2.value++
})
@ -739,6 +817,7 @@ export default defineComponent({
let ListContent = reactive({
records: [],
})
let ListContentCopy = ref([])
const resourceList = reactive({ data: [] })
const videoList = reactive({ data: [] })
const resourceTotal = ref('')
@ -768,8 +847,10 @@ export default defineComponent({
} else {
getAppResources()
}
console.log('paramsGetResources--globalSearch---------->', paramsGetResources);
console.log(
'paramsGetResources--globalSearch---------->',
paramsGetResources
)
})
} else {
message.warning('全局搜索必须输入关键词!')
@ -870,32 +951,18 @@ export default defineComponent({
pageSize: paramsGetResources.pageSize, //
}
getDataResource(dataResourceParams).then((res) => {
loading.value = false
console.log('res.data.data----874-------->', res.data.data)
if (whoShow1.value.itShowQingDao) {
res.data.data.data.forEach((val) => {
val.id = val.guid // id
val.name = val.zyname //
val.sjlCount = val.sjcczl //
val.applyCount = val.syqk //
val.deptName = val.TGBM //
val.createDate = val.fbrq //
val.description = val.xgxt //
})
resourceList.data = res.data.data.data || []
resourceTotal.value = res.data.data.rows || ''
loading.value = false
if (whoShow1.value.itShowZhanTingDev) {
// itShowZhanTingDev: 西
console.log('999----->', res.data.data.list)
getXiHaiAn(res)
} else {
getQingDao(res)
}
} else if (whoShow1.value.itShowXiHaiAn) {
res.data.data.list.forEach((val) => {
val.id = val.serviceId // id
val.name = val.serviceName //
val.sjlCount = val.requestQuantity //
val.applyCount = val.requestCount //
val.deptName = val.departmentName //
val.createTime = val.createTime.split('.')[0]
val.createDate = val.createTime //
})
resourceList.data = res.data.data.list || []
resourceTotal.value = res.data.data.total || ''
loading.value = false
getXiHaiAn(res)
}
})
} else if (
@ -907,7 +974,14 @@ export default defineComponent({
paramsGetResources.pageNum = 1
}
pageWithAttrs(paramsGetResources).then((res) => {
console.log('查询列表====22========>', resourceList, res.data.data)
if (res.data.code != 0) {
return message.error(res.data.msg)
}
console.log(
'查询列表====22========>',
resourceList,
res.data.data
)
resourceList.data = []
videoList.data = []
if (Cardsname.value === '基础设施') {
@ -958,31 +1032,16 @@ export default defineComponent({
pageSize: paramsGetResources.pageSize, //
}
getDataResource(dataResourceParams).then((res) => {
loading.value = false
console.log('res.data.data----982-------->', res.data.data)
if (whoShow1.value.itShowQingDao) {
(res.data && res.data.data && res.data.data.data || []).forEach((val) => {
val.id = val.guid // id
val.name = val.zyname //
val.sjlCount = val.sjcczl //
val.applyCount = val.syqk //
val.deptName = val.TGBM //
val.createDate = val.fbrq //
val.description = val.xgxt //
})
resourceList.data = res.data.data.data || []
resourceTotal.value = res.data.data.rows || ''
loading.value = false
if (whoShow1.value.itShowZhanTingDev) {
getXiHaiAn(res)
} else {
getQingDao(res)
}
} else if (whoShow1.value.itShowXiHaiAn) {
(res.data && res.data.data && res.data.data.list || []).forEach((val) => {
val.id = val.serviceId // id
val.name = val.serviceName //
val.sjlCount = val.requestQuantity //
val.applyCount = val.requestCount //
val.deptName = val.departmentName //
val.createTime = val.createTime.split('.')[0]
val.createDate = val.createTime //
})
resourceList.data = res.data.data.list || []
resourceTotal.value = res.data.data.total || ''
getXiHaiAn(res)
loading.value = false
}
})
@ -995,7 +1054,11 @@ export default defineComponent({
paramsGetResources.pageNum = 1
}
pageWithAttrs(paramsGetResources).then((res) => {
console.log('查询列表===11=========>', resourceList, res.data.data)
console.log(
'查询列表===11=========>',
resourceList,
res.data.data
)
resourceList.data = []
videoList.data = []
if (Cardsname.value === '基础设施') {
@ -1020,6 +1083,39 @@ export default defineComponent({
}
}
// -
const getQingDao = (res) => {
((res.data && res.data.data && res.data.data.data) || []).forEach(
(val) => {
val.id = val.guid // id
val.name = val.zyname //
val.sjlCount = val.sjcczl //
val.applyCount = val.syqk //
val.deptName = val.TGBM //
val.createDate = val.fbrq //
val.description = val.xgxt //
}
)
resourceList.data = res.data.data.data || []
resourceTotal.value = res.data.data.rows || ''
}
// -西
const getXiHaiAn = (res) => {
((res.data && res.data.data && res.data.data.list) || []).forEach(
(val) => {
val.id = val.serviceId // id
val.name = val.serviceName //
val.sjlCount = val.requestQuantity //
val.applyCount = val.requestCount //
val.deptName = val.departmentName //
val.createTime = val.createTime.split('.')[0]
val.createDate = val.createTime //
}
)
resourceList.data = res.data.data.list || []
resourceTotal.value = res.data.data.total || ''
}
let shoppingCartList = ref([])
//
const getShoppingCartList = (list) => {
@ -1048,19 +1144,28 @@ export default defineComponent({
delete paramsGetResources.deptIds
}
getAppResources()
console.log('paramsGetResources-----paramsGetResources------->', paramsGetResources);
console.log(
'paramsGetResources-----paramsGetResources------->',
paramsGetResources
)
})
mybus.on('changePage', (page) => {
paramsGetResources.pageNum = page
getAppResources('分页查询')
console.log('paramsGetResources----changePage-------->', paramsGetResources);
console.log(
'paramsGetResources----changePage-------->',
paramsGetResources
)
})
mybus.on('changeSelcted', () => {
//
paramsGetResources.pageNum = 1
currentPage.value = 1
getAppResources()
console.log('paramsGetResources----changeSelcted-------->', paramsGetResources);
console.log(
'paramsGetResources----changeSelcted-------->',
paramsGetResources
)
})
mybus.on('changeInfo', (info) => {
paramsGetResources.pageNum = 1
@ -1072,14 +1177,19 @@ export default defineComponent({
paramsGetResources.infoList.push(info)
}
getAppResources()
console.log('paramsGetResources-----changeInfo------->', paramsGetResources);
console.log(
'paramsGetResources-----changeInfo------->',
paramsGetResources
)
})
mybus.on('refresh', () => {
paramsGetResources.pageNum = 1
currentPage.value = 1
getAppResources()
console.log('paramsGetResources-----refresh------->', paramsGetResources);
console.log(
'paramsGetResources-----refresh------->',
paramsGetResources
)
})
mybus.on('changeCondition', (condition) => {
@ -1097,16 +1207,22 @@ export default defineComponent({
} else {
getAppResources()
}
console.log('paramsGetResources---changeCondition--------->', paramsGetResources);
console.log(
'paramsGetResources---changeCondition--------->',
paramsGetResources
)
})
const pageChange = (val) => {
console.log('pageChange------------>', val);
console.log('pageChange------------>', val)
loading.value = true
currentPage.value = val
paramsGetResources.pageNum = val
getAppResources('分页查询') //
console.log('paramsGetResources-----pageChange------->', paramsGetResources);
console.log(
'paramsGetResources-----pageChange------->',
paramsGetResources
)
}
onMounted(() => {
@ -1140,8 +1256,10 @@ export default defineComponent({
paramsGetResources.pageNum = current
paramsGetResources.pageSize = pageSize
getAppResources()
console.log('paramsGetResources----onShowSizeChange-------->', paramsGetResources);
console.log(
'paramsGetResources----onShowSizeChange-------->',
paramsGetResources
)
}
watch(currentPageSize, () => {
console.log('pageSize', currentPageSize.value)
@ -1156,6 +1274,12 @@ export default defineComponent({
})
}
const changeCards = (name) => {
// 西-
if(whoShow1.value.itShowXiHaiAn) {
if(name !== '基础设施' && !xhaHasPermissionUser.list.includes(user.value.username)) {
return message.warn('暂无权限')
}
}
resourceList.data = []
videoList.data = []
resourceTotal.value = ''
@ -1163,7 +1287,9 @@ export default defineComponent({
router.currentRoute.value.query.appLiCation = ''
tecHnosphere = router.currentRoute.value.query.tecHnosphere
appLiCation = router.currentRoute.value.query.appLiCation
let newQuery = JSON.parse(JSON.stringify(router.currentRoute.value.query))
let newQuery = JSON.parse(
JSON.stringify(router.currentRoute.value.query)
)
Cardsname.value = name
newQuery.select = Cardsname.value
router
@ -1274,7 +1400,6 @@ export default defineComponent({
saveSearchCodition,
searchResultListDom,
handleSetSearchData, // todo
// refreshList,
}
},
components: {
@ -1645,7 +1770,7 @@ export default defineComponent({
margin-top: 0.05rem;
.ant-tag-checkable {
width: 0.83rem;
width: 1rem;
height: 0.25rem;
display: flex;
justify-content: center;
@ -1670,7 +1795,8 @@ export default defineComponent({
.ant-tag-checkable:active,
.ant-tag-checkable-checked {
width: 0.85rem;
// width: 0.85rem;
width: 1rem;
font-family: 'Alibaba PuHuiTi';
font-weight: 500;
background-color: #0087ff;
@ -1855,14 +1981,14 @@ export default defineComponent({
}
.leixingsum {
width: 0.93rem;
// width: 1rem;
display: inline-block;
cursor: pointer;
text-align: center;
margin-top: 0.05rem;
.ant-tag-checkable {
width: 0.85rem;
width: 1rem;
height: 0.25rem;
display: flex;
justify-content: center;

View File

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

View File

@ -17,7 +17,7 @@
labelAlign="left"
autocomplete="off"
>
<div class="base-info">
<div class="base-info flex-row-start">
<a-form-item
label="申请标题"
name="title"
@ -28,6 +28,21 @@
v-model:value="formName.title"
/>
</a-form-item>
<!-- 西海岸-摄像头-增加过期时间 -->
<a-form-item
v-if="isCamera && isXiHaiAn"
label="过期时间"
name="expireDate"
:rules="[{ required: true, message: '请选择过期时间' }]"
style="margin-left: 22px"
>
<a-select
v-model:value="formName.expireDate"
placeholder="请选择过期时间"
style="width: 200px"
:options="expireDateOptions"
></a-select>
</a-form-item>
</div>
<div class="base-info">
<a-form-item
@ -86,23 +101,31 @@
</a-form-item>
</div>
<div class="base-info" v-if="flag">
<a-form-item
label="应用系统"
name="applicationSystem"
:rules="[{ required: true, message: '请选择应用系统' }]"
>
<a-select
v-model:value="formName.applicationSystem"
show-search
placeholder="请输入关键字"
style="width: 200px"
:options="systemOptions"
@focus="handleFocus"
@blur="handleBlur"
@change="systemHandleChange"
@search="systemHandleSearch"
></a-select>
</a-form-item>
<div style="margin-bottom: 24px">
<a-form-item
style="margin-bottom: 0"
label="应用系统"
name="applicationSystem"
:rules="[{ required: true, message: '请选择应用系统' }]"
>
<a-select
v-model:value="formName.applicationSystem"
show-search
placeholder="请选择应用系统"
style="width: 230px"
:options="systemOptions"
@focus="handleFocus"
@blur="handleBlur"
@change="systemHandleChange"
@search="systemHandleSearch"
></a-select>
</a-form-item>
<span
style="font-size: 12px; color: #666; padding-left: 106px"
>
如选项没有系统请新增
</span>
</div>
<a-form-item
class="applicationScene"
label="应用领域"
@ -122,6 +145,7 @@
></a-select>
</a-form-item>
</div>
<div>
<a-form-item
label="需求依据"
@ -216,6 +240,8 @@
import { sgcDel, getApplyForm } from '@/api/personalCenter'
import { pageWithAttrs, updateIntegrationServices } from '@/api/home'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
import { getIntegrationDetail, soldierApply } from '@/api/home'
import * as moment from 'moment'
export default {
name: '',
@ -229,27 +255,38 @@
const disabled = ref(false)
const flag = ref(false)
const list = ref(JSON.parse(localStorage.getItem('applyList')))
const integrationServicesItemInfo = ref(
JSON.parse(localStorage.getItem('integrationServicesItemInfo') || '{}')
)
const deptNameAll = ref([]) //
const deptFlage = ref(true) //
console.log(
'integrationServicesItemInfo------------>',
integrationServicesItemInfo
)
const applyAll = router.currentRoute.value.query.applyAll
// id
const integrationServicesId =
router.currentRoute.value.query.integrationServicesId
//
const integrationServicesItemInfo = ref(null)
const num = ref(0)
//
const expireDateOptions = [
{
value: moment().add(30, 'days').format('YYYY-MM-DD HH:mm:ss'),
label: '30天',
},
{
value: moment().add(60, 'days').format('YYYY-MM-DD HH:mm:ss'),
label: '60天',
},
{
value: moment().add(90, 'days').format('YYYY-MM-DD HH:mm:ss'),
label: '90天',
},
]
if (!applyAll) {
list.value.map((item) => {
item.arr.map((val) => {
console.log(item, '组件===========================')
let obj = item.children
? item.children.filter((type) => type.id == val.id)[0]
: val.type !== '应用资源'
if (obj) {
console.log('11111111111111111111111111111', obj, flag.value)
if (obj.type !== '应用资源') {
flag.value = true
}
@ -265,11 +302,28 @@
const baseURL = window.SITE_CONFIG.apiURL
let record = ref('1')
const text = ref('')
// 西-
let wrjAndDbText = ['单兵设备', '无人机']
const isXiHaiAn = ref(whoShow.itShowXiHaiAn)
// 西--
const isCamera = ref(false)
if (
list.value[0] &&
list.value[0].arr &&
list.value[0].arr[0] &&
list.value[0].arr[0].type == '基础设施'
) {
isCamera.value = true
}
const formName = reactive({
title: applyAll
? '全部应用资源申请'
: list.value[0].arr && list.value[0].arr[0].type == '单兵设备'
? '单兵设备申请'
: wrjAndDbText.includes(
list.value[0].arr &&
list.value[0].arr[0] &&
list.value[0].arr[0].type
)
? list.value[0].arr[0].type + '申请'
: list.value[0].children
? '申请' +
list.value[0].children
@ -278,7 +332,7 @@
num.value > 1 ? '等' + num.value + '项能力' : ''
)
: '申请' + list.value[0].arr[0].resourceName, //
applicationSystem: '', //
// applicationSystem: '', //
applicationScene: [], //
applicationBackground: '', //
effectWish: '', //
@ -353,9 +407,7 @@
label: val.dictLabel,
})
})
// console.log('========>', applicationSceneOpthion.value)
})
// console.log(formName.system)
const formRef = ref()
const applySuccess = ref(true)
const dataForm = {
@ -376,276 +428,241 @@
//
const jumpToDetailsPageconetent = () => {
router.push({
path: '/DetailsPageconetent',
query: {
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB,
},
})
setTimeout(() => {
router.push({
path: '/DetailsPageconetent',
query: {
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB,
},
})
}, 1000)
}
//
let submitFlag = true
const processStartHandle = () => {
formRef.value.validate().then(() => {
if (!formUrl) {
return message.error('请设置保存表单的URL')
}
if (!formName) {
return message.error('请设置表单名称')
}
if (id) {
endProcess({ instanceId: taskId }).then((end) => {
if (end.data.code == 0) {
let ids = []
let falgNum = 0
let sxt = true
formName.system = []
console.log('list==================', list.value)
list.value.map((val) => {
val.arr.map((item) => {
if (item.type !== '基础设施') {
falgNum++
}
})
})
list.value.map((val) => {
val.arr.map((item) => {
if (item.type !== '基础设施') {
formName.system.push({
resourceId: item.resourceId,
resourceName: item.resourceName,
})
falgNum++
console.log(item.id)
if (item.id) {
ids.push(item.id)
if (submitFlag) {
submitFlag = false
if (!formUrl) {
return message.error('请设置保存表单的URL')
}
if (!formName) {
return message.error('请设置表单名称')
}
if (id) {
endProcess({ instanceId: taskId }).then((end) => {
if (end.data.code == 0) {
let ids = []
let falgNum = 0
let sxt = true
formName.system = []
console.log('list==================', list.value)
list.value.map((val) => {
val.arr.map((item) => {
if (item.type !== '基础设施') {
falgNum++
}
} else {
let obj = {}
Object.assign(obj, formName)
console.log('摄像头===============>', obj, item)
obj.system = []
item.note1 = JSON.parse(item.note1)
item.note1.map((sxt) => {
obj.system.push({
resourceId: sxt.idtCameraChannel + '',
resourceName: sxt.channelName,
cameraId: sxt.channelId, //
channelCode: sxt.channelCode,
channelId: sxt.channelId,
channelName: sxt.channelName,
checkStatus: sxt.checkStatus + '',
gpsX: sxt.gpsX,
gpsY: sxt.gpsY,
idtCameraChannel: sxt.idtCameraChannel + '',
nodeName: sxt.nodeName,
parentId: sxt.parentId,
status: sxt.status + '',
})
})
list.value.map((val) => {
val.arr.map((item) => {
if (item.type !== '基础设施') {
formName.system.push({
resourceId: item.resourceId,
resourceName: item.resourceName,
})
})
submitApply(obj).then((res) => {
// applySuccess.value = false
console.log('摄像头申请================>', res)
falgNum++
console.log(item.id)
if (item.id) {
sgcDel({ ids: [item.id] }).then((res1) => {
if (res1.data.msg === 'success') {
if (falgNum == 0 && sxt) {
message.success(
'申请提交成功,请到消息中心查看!'
)
sxt = false
}
ids.push(item.id)
}
} else {
infrastructureConfirm(item, falgNum, sxt)
}
})
})
if (formName.system.length !== 0) {
if (formName.applicationSystem.length == 0) {
formName.applicationSystem = ''
}
submitApply(formName).then((res) => {
message.success('申请提交成功,请到消息中心查看!')
console.log('能力申请================>', res)
if (res.data.code == 0) {
if (ids && ids.length > 0) {
sgcDel({ ids: ids }).then((res) => {
if (res.data.msg === 'success') {
mybus.emit('getSgcNum')
jumpToDetailsPageconetent()
}
})
} else {
if (
res.data.msg === 'success' &&
falgNum == 0 &&
sxt
) {
message.success('申请提交成功,请到消息中心查看!')
sxt = false
//
if (integrationServicesId) {
getIntegrationServicesDeatil(
integrationServicesId
).then((res) => {
updateIntegrationServiceAction()
})
}
jumpToDetailsPageconetent()
}
})
}
})
})
console.log(
'提交数据============submitApply==============>',
formName,
ids
)
if (formName.system.length !== 0) {
if (formName.applicationSystem.length == 0) {
formName.applicationSystem = ''
}
submitApply(formName).then((res) => {
// applySuccess.value = false
message.success('申请提交成功,请到消息中心查看!')
console.log('能力申请================>', res)
if (res.data.code == 0) {
if (ids && ids.length > 0) {
sgcDel({ ids: ids }).then((res) => {
if (res.data.msg === 'success') {
mybus.emit('getSgcNum')
jumpToDetailsPageconetent()
}
})
} else {
// todo
if (
Object.keys(integrationServicesItemInfo).length > 0
) {
updateIntegrationServiceAction()
}
jumpToDetailsPageconetent()
message.error('申请失败!')
}
} else {
message.error('申请失败!')
}
})
}
}
})
} else {
if (!applyAll) {
console.log(list.value[0].arr[0])
//
if (list.value[0].arr[0].type == '单兵设备') {
message.success('单兵设备申请提交成功!')
jumpToDetailsPageconetent()
} else {
let ids = []
let falgNum = 0
let sxt = true
formName.system = []
console.log('list==================', list.value)
list.value.map((val) => {
val.arr.map((item) => {
if (item.type !== '基础设施') {
falgNum++
}
})
})
list.value.map((val) => {
val.arr.map((item) => {
if (item.type !== '基础设施') {
formName.system.push({
resourceId: item.resourceId,
resourceName: item.resourceName,
})
falgNum++
console.log(item.id)
if (item.id) {
ids.push(item.id)
}
} else {
let obj = {}
Object.assign(obj, formName)
console.log('摄像头===============>', obj, item)
obj.system = []
item.note1 = JSON.parse(item.note1)
item.note1.map((sxt) => {
obj.system.push({
resourceId: sxt.idtCameraChannel + '',
resourceName: sxt.channelName,
cameraId: sxt.channelId, //
channelCode: sxt.channelCode,
channelId: sxt.channelId,
channelName: sxt.channelName,
checkStatus: sxt.checkStatus + '',
gpsX: sxt.gpsX,
gpsY: sxt.gpsY,
idtCameraChannel: sxt.idtCameraChannel + '',
nodeName: sxt.nodeName,
parentId: sxt.parentId,
status: sxt.status + '',
})
})
submitApply(obj).then((res) => {
// applySuccess.value = false
console.log('摄像头申请================>', res)
if (item.id) {
sgcDel({ ids: [item.id] }).then((res1) => {
if (res1.data.msg === 'success') {
if (falgNum == 0 && sxt) {
message.success(
'申请提交成功,请到消息中心查看!'
)
sxt = false
}
mybus.emit('getSgcNum')
jumpToDetailsPageconetent()
}
})
} else {
if (
res.data.msg === 'success' &&
falgNum == 0 &&
sxt
) {
message.success('申请提交成功,请到消息中心查看!')
sxt = false
}
jumpToDetailsPageconetent()
}
})
}
})
})
console.log(
'提交数据==========================>',
formName,
ids
)
if (formName.system.length !== 0) {
if (formName.applicationSystem.length == 0) {
formName.applicationSystem = ''
})
}
submitApply(formName).then((res) => {
// applySuccess.value = false
message.success('申请提交成功,请到消息中心查看!')
console.log('能力申请================>', res)
if (res.data.code == 0) {
if (ids && ids.length > 0) {
sgcDel({ ids: ids }).then((res) => {
if (res.data.msg === 'success') {
mybus.emit('getSgcNum')
jumpToDetailsPageconetent()
}
})
} else {
// todo
if (
Object.keys(integrationServicesItemInfo).length > 0
) {
updateIntegrationServiceAction()
}
jumpToDetailsPageconetent()
}
} else {
message.error('申请失败!')
}
})
}
}
} else {
formName.applicationSystem = ''
applyAllApplication(formName).then((res) => {
if (res.data.code == 0) {
message.success('申请提交成功,请到消息中心查看!')
jumpToDetailsPageconetent()
} else {
message.error('申请失败!')
}
})
} else {
if (!applyAll) {
let ids = []
let falgNum = 0
let sxt = true
formName.system = []
console.log('list==================', list.value)
list.value.map((val) => {
val.arr.map((item) => {
if (item.type !== '基础设施') {
falgNum++
}
})
})
list.value.map((val) => {
val.arr.map((item) => {
if (item.type !== '基础设施') {
formName.system.push({
resourceId: item.resourceId,
resourceName: item.resourceName,
})
falgNum++
console.log(item.id)
if (item.id) {
ids.push(item.id)
}
} else {
infrastructureConfirm(item, falgNum, sxt)
}
})
})
console.log('formName--ids-提交数据--------->', formName, ids)
if (formName.system.length !== 0) {
if (
formName.applicationSystem &&
formName.applicationSystem.length == 0
) {
formName.applicationSystem = ''
}
// 西
if (wrjAndDbText.includes(list.value[0].arr[0].type)) {
handleWrjApply(formName)
return
}
submitApply(formName).then((res) => {
message.success('申请提交成功,请到消息中心查看!')
console.log('能力申请================>', res)
if (res.data.code == 0) {
if (ids && ids.length > 0) {
sgcDel({ ids: ids }).then((res) => {
if (res.data.msg === 'success') {
mybus.emit('getSgcNum')
jumpToDetailsPageconetent()
}
})
} else {
//
if (integrationServicesId) {
getIntegrationServicesDeatil(
integrationServicesId
).then((res) => {
updateIntegrationServiceAction()
})
}
jumpToDetailsPageconetent()
}
} else {
message.error('申请失败!')
}
})
}
} else {
formName.applicationSystem = ''
applyAllApplication(formName).then((res) => {
if (res.data.code == 0) {
message.success('申请提交成功,请到消息中心查看!')
jumpToDetailsPageconetent()
} else {
message.error('申请失败!')
}
})
}
}
}
})
}
// --
const infrastructureConfirm = (item, falgNum, sxt) => {
let obj = {}
Object.assign(obj, formName)
console.log('摄像头===============>', obj, item)
obj.system = []
if (item.note1 && typeof item.note1 == 'string') {
item.note1 = JSON.parse(item.note1)
}
item.note1 &&
item.note1.map((jcss) => {
if (!jcss) {
return
}
let _itemData = {
resourceId: (jcss.idtCameraChannel || '') + '',
resourceName: jcss.channelName,
cameraId: jcss.channelId, //
channelCode: jcss.channelCode,
channelId: jcss.channelId,
channelName: jcss.channelName,
checkStatus: jcss.checkStatus + '',
gpsX: jcss.gpsX,
gpsY: jcss.gpsY,
idtCameraChannel: (jcss.idtCameraChannel || '') + '',
nodeName: jcss.nodeName,
parentId: jcss.parentId,
status: jcss.status + '',
}
// 西
if (isXiHaiAn.value) {
_itemData.managementUnitName = jcss.managementUnitName
_itemData.cameraPointTypeName = jcss.cameraPointTypeName
}
obj.system.push(_itemData)
})
submitApply(obj).then((res) => {
// applySuccess.value = false
console.log('摄像头申请================>', res)
if (item.id) {
sgcDel({ ids: [item.id] }).then((res1) => {
if (res1.data.msg === 'success') {
if (falgNum == 0 && sxt) {
message.success('申请提交成功,请到消息中心查看!')
sxt = false
}
mybus.emit('getSgcNum')
jumpToDetailsPageconetent()
}
})
} else {
if (res.data.msg === 'success' && falgNum == 0 && sxt) {
message.success('申请提交成功,请到消息中心查看!')
sxt = false
}
jumpToDetailsPageconetent()
}
})
}
//
const startProcess = (processDefinitionKey, businessKey, formData) => {
var data = {
@ -795,7 +812,7 @@
mybus.off('reomveOldData')
})
// - todo
// -
const updateIntegrationServiceAction = () => {
let _applyCount =
Number(integrationServicesItemInfo.value.applyCount || 0) + 1
@ -810,6 +827,59 @@
console.log('err----更新-------->', err)
})
}
// --
const getIntegrationServicesDeatil = (id) => {
return new Promise((resolve, reject) => {
getIntegrationDetail(id).then(
(res) => {
resolve(res)
if (res.data.code !== 0) {
return message.error(res.data.msg)
}
integrationServicesItemInfo.value = res.data.data || {}
},
(err) => {
reject(err)
message.error(err)
}
)
})
}
// 西
const handleWrjApply = (formName) => {
let _data = {
deviceId:
formName.system &&
formName.system[0] &&
formName.system[0].resourceId,
deviceName:
formName.system &&
formName.system[0] &&
formName.system[0].resourceName,
title: formName.title,
name: formName.user,
phone: formName.phone,
dept: formName.unit, //
applicationSystem: formName.applicationSystem, //
applicationArea: JSON.stringify(formName.applicationScene), //
demand: formName.applicationBackground, //
}
soldierApply(_data)
.then((res) => {
if (res.data.code == 0) {
message.success(res.data.msg)
jumpToDetailsPageconetent()
} else {
message.error('申请失败!')
}
})
.catch((err) => {
message.error(err)
})
}
return {
deptIdChangeFunction,
formRef,
@ -841,6 +911,10 @@
applicationSceneOpthion,
flag,
applyAll,
getIntegrationServicesDeatil,
isCamera,
isXiHaiAn,
expireDateOptions,
}
},
}
@ -853,6 +927,7 @@
margin: 0.8rem auto 0;
display: flex;
justify-content: space-between;
aside {
width: 282px;
height: 96%;
@ -860,6 +935,7 @@
background-color: #fff;
margin: 1% 0 3%;
}
article {
width: 1090px;
height: 99%;
@ -867,8 +943,10 @@
background-color: #fff;
margin: 1% auto;
}
.form-container {
padding: 20px 20px 30px 20px;
.title {
font-size: 20px;
color: #000;
@ -876,52 +954,68 @@
margin-bottom: 20px;
}
}
.base-info {
display: flex;
justify-content: space-between;
}
.flex-row-start {
justify-content: flex-start;
align-items: center;
}
:deep(.ant-form-item-label) {
label {
color: #666;
font-size: 16px;
&::after {
content: '';
}
}
}
:deep(.ant-form-item-required) {
&::before {
font-size: 8px;
margin-right: 10px;
}
}
:deep(.ant-input) {
border: 1px solid #e0e0e0;
border-radius: 6px;
}
.success {
div {
width: 100px;
margin: 80px auto 40px;
}
text-align: center;
font-size: 20px;
font-weight: bold;
color: #000;
}
}
.applicationScene {
:deep(.ant-select-selector) {
overflow-x: scroll;
}
:deep(.ant-select-selection-overflow) {
flex-wrap: nowrap;
}
}
textarea {
resize: none;
font-size: 14px;
}
.bottom-btn {
display: flex;
justify-content: center;

View File

@ -27,9 +27,12 @@
<span class="label" v-if="props.dataList.shareCondition">
{{ props.dataList.shareCondition }}
</span>
</p>
</div>
<!-- <span class="label">免费</span> -->
</div>
<div class="main">
<!-- <a-tooltip placement="top">
@ -42,6 +45,11 @@
{{ props.dataList.description }}
</div>
</a-tooltip>
<div style="padding-top:20px">
<span >场景入口:</span>
<span style="margin-left:10px;cursor: pointer; text-decoration: underline;"
@click="openScene(props.dataList.sceneUrl)">{{(props.dataList.sceneUrl)}}</span>
</div>
</div>
<div class="bottom" v-if="props.dataList.id">
<!-- 融合服务 存在fuseResourceList -->
@ -72,7 +80,9 @@
</a-button> -->
</div>
</div>
<div class="right"></div>
<div class="right">
</div>
</div>
</template>
<script setup>
@ -113,6 +123,10 @@
)
})
}
}
//
const openScene = (val) => {
window.open(val, "_blank");
}
// //
function toView() {

View File

@ -2,7 +2,7 @@
<div class="box">
<div class="CanCase">
<div class="caseBox" v-for="(item, index) in caseList" :key="index" @click="toView(item)">
<a-image :preview="false" :src="
<a-image :preview="false" style="width:300px;height:200px" :src="
item.fuseAttrList.filter((val) => val.attrType == '服务图片')[0]
.attrValue
" />

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

@ -7,7 +7,7 @@
]"
>
<div class="name" @click="goToHome">
<div class="name-bg" v-if="!whoShow1.itShowXiHaiAn"></div>
<div class="name-bg" v-if="!itShowXiHaiAn"></div>
<div class="name-bg-xihaian" v-else></div>
<div class="name-content">
<p>城市云脑通用能力服务平台</p>
@ -23,8 +23,8 @@
>
{{ item.name }}
</div>
<!-- 购物车 -->
<a-badge :count="sgcNum">
<!-- 购物车 -->
<svg
t="1650455446850"
class="icon"
@ -42,7 +42,6 @@
p-id="2070"
></path>
</svg>
<!-- <a-avatar shape="square" size="large" /> -->
</a-badge>
<a-badge :count="mynoticeNum" style="margin-left: 0.2rem">
<!-- 消息提醒 -->
@ -87,13 +86,13 @@
<i class="img"></i>
<a-tooltip placement="bottom">
<template #title>
<span>{{ user.username }}</span>
<span>{{ user.realName }}</span>
</template>
<span
class="name"
@click="jumpPage({ name: '个人中心', key: 'personalCenter' })"
>
{{ user.username }}
{{ user.realName }}
</span>
</a-tooltip>
<span @click="logout" class="out">退出</span>
@ -118,12 +117,14 @@
<i
@click="jumpPage({ name: '后台管理', key: 'houtaiguanli' })"
class="iconTo"
v-show="backFlag"
></i>
</div>
</div>
</template>
<script setup>
import { ref, onMounted, onBeforeUnmount, defineProps } from 'vue'
import { getUserInfo } from '@/api/user'
import { recordRoute } from '@/config'
import { useRoute, useRouter } from 'vue-router'
import { mynotice } from '@/api/home'
@ -132,36 +133,43 @@
import Cookies from 'js-cookie'
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 router = useRouter()
const route = useRoute()
const itShowXiHaiAn = ref(whoShow.itShowXiHaiAn)
const whoShow1 = whoShow
//
const user = ref({
username: store.getters['user/username'],
realName: store.getters['user/realName'],
})
const select = ref(router.currentRoute.value.name)
const mynoticeFlag = ref(false)
const mynoticeData = ref([])
console.log('navListManagement------------>', navListManagement)
const navList = ref(navListManagement.navList)
const backFlag = ref(true)
getUserInfo().then((res) => {
if (
res.data.data.roleIdList.length == 0 &&
res.data.data.superAdmin === 0
) {
backFlag.value = false
}
})
console.log('navList------------>', navList)
const props = defineProps({
showView: { type: String, default: '' },
})
// 退
const logout = async () => {
await store.dispatch('user/logout')
//
localStorage.removeItem('integrationServices')
localStorage.removeItem('DetailsPageconetent')
window.sessionStorage.setItem('visits', JSON.stringify([]))
// 西
if (!whoShow1.itShowXiHaiAn) {
if (!itShowXiHaiAn.value) {
if (recordRoute) {
const fullPath = route.fullPath
router.push(`/login?redirect=${fullPath}`)
@ -178,7 +186,16 @@
}
//
const jumpPage = (item) => {
// console.log(item)
// 西
if (itShowXiHaiAn.value) {
let _arr = ['共享门户', '能力云图', '能力统计', '需求中心', '赋能案例']
if (
_arr.includes(item.name) &&
!xhaHasPermissionUser.list.includes(user.value.username)
) {
return message.warn('暂无权限')
}
}
select.value = item.key
switch (item.name) {
case '个人中心':
@ -196,8 +213,7 @@
router.push({
path: '/DetailsPageconetent',
query: {
// select: '',
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB,
},
})
break
@ -206,7 +222,12 @@
path: '/capabilityCloud',
})
break
case '技术文档':
// case '':
// router.push({
// path: '/developmentGuide',
// })
// break
case '新手指南':
router.push({
path: '/instructionManual',
})
@ -338,6 +359,7 @@
font-family: 'header-typeface';
src: url('~@/assets/newHome/font/header-typeface.ttf');
}
.home-header {
height: 0.64rem;
width: 100%;
@ -350,10 +372,12 @@
position: fixed;
z-index: 1000;
top: 0;
div {
color: #fff;
font-size: 0.16rem;
}
.name {
cursor: pointer;
font-size: 0.22rem;
@ -361,6 +385,7 @@
margin-right: 0.2rem;
display: flex;
align-items: center;
.name-bg {
height: 0.6rem;
width: 0.6rem;
@ -368,6 +393,7 @@
background-size: 100%;
margin-right: 0.15rem;
}
.name-bg-xihaian {
height: 0.6rem;
width: 0.6rem;
@ -376,37 +402,45 @@
background-size: 100%;
margin-right: 0.15rem;
}
.name-content {
padding-top: 0.14rem;
p {
font-size: 0.2rem;
margin-bottom: 0;
&:nth-of-type(2) {
font-size: 0.12rem;
}
}
}
}
.nav {
width: 1.2rem;
height: 0.64rem;
line-height: 0.64rem;
text-align: center;
}
.nav:hover {
background: #0058e1;
color: #fff;
cursor: pointer;
}
.select {
background: #0058e1;
color: #fff !important;
}
.info {
// width: 2rem;
margin-left: 0.2rem;
display: flex;
justify-content: center;
.img {
width: 0.3rem;
height: 0.3rem;
@ -414,6 +448,7 @@
background: url('~@/assets/newHome/user.png') no-repeat;
background-size: 100%;
}
span {
height: 0.3rem;
line-height: 0.3rem;
@ -421,6 +456,7 @@
margin-right: 0.06rem;
font-size: 0.16rem;
}
.name {
max-width: 2.3rem;
text-overflow: ellipsis;
@ -430,22 +466,27 @@
overflow: hidden;
word-break: break-all;
}
.out {
cursor: pointer;
// padding: 0 0.16rem;
padding: 0 0.04rem 0 0.1rem;
border-left: 0.01rem solid #666;
}
.icon {
cursor: pointer;
}
}
}
.white {
background-color: #fff;
box-shadow: 0 0.02rem 0.1rem rgba(0, 0, 0, 0.1);
.name {
color: #0058e1;
.name-bg {
height: 0.6rem;
width: 0.6rem;
@ -453,22 +494,27 @@
background-size: 100%;
margin-right: 0.15rem;
}
p {
color: #0058e1;
}
}
.icon {
cursor: pointer;
}
.nav {
color: #000;
}
.info {
span {
color: #000;
}
}
}
.blue {
position: absolute;
background: linear-gradient(
@ -476,22 +522,27 @@
rgba(15, 90, 253, 0.8),
rgba(36, 25, 248, 0.8)
);
.name {
color: #fff;
}
.nav {
color: #fff;
}
.nav:hover {
background: #fff;
color: #0058e1;
}
.info {
span {
color: #fff;
}
}
}
.mynotice {
width: 4rem;
height: 3rem;
@ -501,6 +552,7 @@
top: 0.45rem;
right: 2.4rem;
overflow-y: scroll;
.bottom {
cursor: pointer;
width: 100%;
@ -509,13 +561,16 @@
font-size: 0.16rem;
}
}
.mynotice::-webkit-scrollbar {
display: none;
}
:deep(.ant-list-item) {
border-bottom: 0.01rem solid #ccc;
padding: 0.1rem;
}
:deep(.ant-list-item-meta-title) {
// display: flex;
// justify-content: space-around;
@ -530,17 +585,20 @@
word-break: break-all;
-webkit-box-orient: vertical;
}
button {
width: 0.7rem;
height: 0.25rem;
display: flex;
justify-content: center;
align-items: center;
span {
font-size: 0.1rem;
}
}
}
.iconTo {
display: block;
width: 0.35rem;

View File

@ -33,11 +33,11 @@ const orderList = [
name: '发布时间',
orderType: 'DESC',
},
{
value: 'update_date',
name: '更新时间',
orderType: 'DESC',
},
// {
// value: 'update_date',
// name: '',
// orderType: 'DESC',
// },
]
const integrationOrderList = ref(JSON.parse(JSON.stringify(orderList)))
const integrationOrder = reactive({

File diff suppressed because it is too large Load Diff

View File

@ -2,14 +2,7 @@
<div class="wrapper">
<div class="wrapper-title-left-tree" :key="showKey">
<div v-for="item in treeData" :key="item.id" class="primaryNode">
<!-- <div v-if="!item.children || item.children.length == 0">
{{ item.title }}
</div> -->
<div
class="top"
@click="showBottom(item)"
:class="item.show ? 'topSelect' : ''"
>
<div class="top" @click="showBottom(item)" :class="item.show ? 'topSelect' : ''">
{{ item.name }}
({{ item.channelCount }})
<DownOutlined v-show="!item.show" />
@ -17,28 +10,13 @@
</div>
<div class="bottom" v-show="item.show">
<div v-for="val in item.children" :key="val.id" class="item">
<div
class="up"
:class="selectId == val.id ? 'select' : ''"
@click="showDown(item, val), onSelect(item, val)"
>
<div class="up" :class="selectId == val.id ? 'select' : ''"
@click="showDown(item, val), onSelect(item, val)">
<div>
<svg
t="1654068878091"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="2156"
width="0.25rem"
height="0.25rem"
v-show="selectId == val.id"
>
<path
d="M512 624a112 112 0 1 0 0-224 112 112 0 0 0 0 224z"
p-id="2157"
fill="#0058e1"
></path>
<svg t="1654068878091" class="icon" viewBox="0 0 1024 1024" version="1.1"
xmlns="http://www.w3.org/2000/svg" p-id="2156" width="0.25rem" height="0.25rem"
v-show="selectId == val.id">
<path d="M512 624a112 112 0 1 0 0-224 112 112 0 0 0 0 224z" p-id="2157" fill="#0058e1"></path>
</svg>
<span class="name">{{ val.name }}({{ val.channelCount }})</span>
</div>
@ -49,30 +27,13 @@
</span>
</div>
<div class="down" v-show="val.show">
<div
v-for="child in val.children"
:key="child.id"
class="child"
:class="selectId == child.id ? 'select2' : ''"
@click="onSelect(item, child, child)"
>
<div v-for="child in val.children" :key="child.id" class="child"
:class="selectId == child.id ? 'select2' : ''" @click="onSelect(item, child, child)">
<div>
<svg
t="1654068878091"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="2156"
width="0.25rem"
height="0.25rem"
v-show="selectId == child.id"
>
<path
d="M512 624a112 112 0 1 0 0-224 112 112 0 0 0 0 224z"
p-id="2157"
fill="#0058e1"
></path>
<svg t="1654068878091" class="icon" viewBox="0 0 1024 1024" version="1.1"
xmlns="http://www.w3.org/2000/svg" p-id="2156" width="0.25rem" height="0.25rem"
v-show="selectId == child.id">
<path d="M512 624a112 112 0 1 0 0-224 112 112 0 0 0 0 224z" p-id="2157" fill="#0058e1"></path>
</svg>
<span class="name">
{{ child.name }}
@ -84,405 +45,251 @@
</div>
</div>
</div>
<!-- <a-directory-tree
class="draggable-tree"
block-node
:tree-data="treeData"
@select="onSelect"
></a-directory-tree> -->
</div>
</div>
</template>
<script>
import { defineComponent, ref, watch } from 'vue'
import { getCameraAllOrgan } from '@/api/videoSurveillance'
import { getCameraInfoByAreaId } from '@/api/file'
import mybus from '@/myplugins/mybus'
import { useRouter } from 'vue-router'
import { UpOutlined, DownOutlined } from '@ant-design/icons-vue'
export default defineComponent({
setup() {
const selectedKeys = ref([])
const checkedKeys = ref([])
const router = useRouter()
const fieldNames = {
children: 'children',
title: 'name',
import { defineComponent, ref, watch } from 'vue'
import { getCameraAllOrgan } from '@/api/videoSurveillance'
import { getCameraInfoByAreaId } from '@/api/file'
import mybus from '@/myplugins/mybus'
import { useRouter } from 'vue-router'
import { UpOutlined, DownOutlined } from '@ant-design/icons-vue'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
export default defineComponent({
setup() {
const router = useRouter()
const whoShow1 = ref(whoShow)
const showKey = ref(0)
const treeData = ref([])
const selectId = ref('')
//
const init = async () => {
treeData.value = []
console.log(
'router.currentRoute.value.query.select',
router.currentRoute.value.query.select
)
let select = router.currentRoute.value.query.select || DETAIL_PAGE_CONTENT_DEFAULT_TAB
if (select === '123') {
select = ''
}
const whoShow1 = ref(whoShow)
const showKey = ref(0)
const treeData = ref([])
const init = () => {
treeData.value = []
console.log(
'router.currentRoute.value.query.select',
router.currentRoute.value.query.select
)
let select = router.currentRoute.value.query.select
if (select === '123') {
select = ''
}
console.log(
'获取url中的select=====================>',
router.currentRoute.value.query.select
)
if (select == '基础设施') {
if (whoShow1.value && !whoShow1.value.itShowXiHaiAn) {
getCameraAllOrgan({ parentId: 'S4NbecfYB1DBH8HNULGS34' }).then(
(res) => {
treeData.value = res.data.data
}
)
} else {
getCameraInfoByAreaId({
areaId: '70be8c5b664f4bcf869d82f2e8335051',
}).then((res) => {
treeData.value = res.data.data
})
}
// selectDeptList({ type: select }).then((res) => {
// // console.log('=========================>', res.data.data)
// res.data.data.forEach((val) => {
// if (val.type !== '') {
// let obj = {
// title: val.type,
// total: val.total,
// show: val.type === '' ? true : false,
// select: false,
// key: val.type,
// children: [],
// }
// switch (val.type) {
// case '':
// case '':
// generateChildren(val, obj)
// break
// case '':
// generateChildren2(val, obj)
// break
// }
// treeData.value.push(obj)
// }
// })
// //
// const sortArr = ['', '', '', '', '']
// treeData.value.sort((a, b) => {
// return sortArr.indexOf(a.key) - sortArr.indexOf(b.key)
// })
// console.log('======================>', treeData.value)
// showKey.value++
// })
}
}
mybus.on('getDeptList', () => {
init()
})
// children
const generateChildren = (val, obj) => {
if (val.dataList.length > 0) {
val.dataList.forEach((child) => {
let children = {
title: child.deptName,
show: false,
select: false,
total: child.deptCount,
key: child.deptId,
}
obj.children.push(children)
})
}
}
//
const generateChildren2 = (val, obj) => {
if (val.dataList.length > 0) {
val.dataList.forEach((dis) => {
let children = {
title: dis.type,
total: dis.total,
show: false,
select: false,
key: dis.dataList[0].districtId,
children: [],
}
if (dis.dataList.length > 0) {
dis.dataList.forEach((child) => {
let children2 = {
title: child.deptName,
total: child.deptCount,
show: false,
select: false,
key: child.deptId,
}
children.children.push(children2)
})
}
obj.children.push(children)
})
}
}
// const onSelect = (event, node, dragNode, dragNodesKeys) => {
// console.log(event[0], node.node.children, dragNode, dragNodesKeys)
// if (!node.node.children) {
// mybus.emit('paramsGetResources', [event[0]])
// } else {
// let arr = []
// switch (event[0]) {
// case '':
// mybus.emit('paramsGetResources', [])
// break
// case '':
// node.node.children.forEach((dis) => {
// dis.children.forEach((val) => {
// arr.push(val.key)
// })
// })
// mybus.emit('paramsGetResources', arr)
// break
// default:
// node.node.children.forEach((val) => {
// arr.push(val.key)
// })
// mybus.emit('paramsGetResources', arr)
// break
// }
// }
// }
const selectId = ref('')
const onSelect = (item, val, child) => {
console.log('item, val, child', child)
mybus.emit('getCameraByParentId', val.id)
mybus.emit('getListByParentId', val.id)
console.log(
'获取url中的select=====================>',
router.currentRoute.value.query.select
)
if (select == '基础设施') {
let res = {};
if (whoShow1.value && !whoShow1.value.itShowXiHaiAn) {
getCameraAllOrgan({ parentId: val.id }).then((res) => {
treeData.value.map((treeDataItem, index) => {
if (item.id == treeDataItem.id) {
treeData.value[index].children.map((childItem, childIndex) => {
if (childItem.id == val.id) {
treeData.value[index].children[childIndex].children =
res.data.data
}
})
console.log('treeData.value.[index]', treeData.value[index])
}
})
})
res = await getCameraAllOrgan({ parentId: 'S4NbecfYB1DBH8HNULGS34' })
} else {
getCameraInfoByAreaId({
areaId: val.id,
}).then((res) => {
treeData.value.map((treeDataItem, index) => {
if (item.id == treeDataItem.id) {
treeData.value[index].children.map((childItem, childIndex) => {
if (childItem.id == val.id) {
treeData.value[index].children[childIndex].children =
res.data.data
}
})
console.log('treeData.value.[index]', treeData.value[index])
}
})
// 西
res = await getCameraInfoByAreaId({
areaId: '70be8c5b664f4bcf869d82f2e8335051',
})
}
if (child) {
selectId.value = child.id
}
treeData.value = res.data && res.data.data || []
}
watch(selectedKeys, () => {
console.log('selectedKeys', selectedKeys)
}
mybus.on('getDeptList', () => {
init()
})
const onSelect = async (item, val, child) => {
console.log('item--------onSelect---->', item);
console.log('val------onSelect------>', val);
console.log('child-----onSelect------->', child);
mybus.emit('getCameraByParentId', val.id)
mybus.emit('getListByParentId', val.id)
let res = {}
if (whoShow1.value && !whoShow1.value.itShowXiHaiAn) {
res = await getCameraAllOrgan({ parentId: val.id })
} else {
// 西
res = await getCameraInfoByAreaId({ areaId: val.id })
}
treeData.value.map((treeDataItem, index) => {
if (item.id == treeDataItem.id) {
treeData.value[index].children.map((childItem, childIndex) => {
if (childItem.id == val.id) {
treeData.value[index].children[childIndex].children =
res.data.data
}
})
}
})
watch(checkedKeys, (val) => {
if (val.checked.length > 1) {
val.checked.halfChecked = val.checked.shift()
if (child) {
selectId.value = child.id
}
}
watch(selectId, (newVal) => {
if (newVal == '') {
mybus.emit('getCameraByParentId', '')
mybus.emit('getListByParentId', '')
}
})
const showBottom = async (item) => {
item.show = !item.show;
let res = {};
if (whoShow1.value && !whoShow1.value.itShowXiHaiAn) {
res = await getCameraAllOrgan({ parentId: item.id })
} else {
// 西
res = await getCameraInfoByAreaId({ areaId: item.id })
}
treeData.value.map((treeDataItem, index) => {
if (item.id == treeDataItem.id) {
treeData.value[index].children = res.data && res.data.data || []
console.log('treeData.value.[index]', treeData.value[index])
}
console.log('onCheck', val)
})
const value = ref('')
const onSearch = (searchValue) => {
console.log('use value', searchValue)
console.log('or use this.value', value.value.child)
}
// checkedKeys, checkedNodes, node, event
function xuanzeshijian(checkedKeys) {
checkedKeys.value.checked = []
checkedKeys.value.checked[0] =
checkedKeys.checked[checkedKeys.checked.length - 1]
// console.log('checkedKeys1', checkedNodes)
console.log('checkedKeys', checkedKeys)
}
let quxiaoshijian = ''
function dianjisousuo(selectedKeys, selectedNodes, node, event) {
if (quxiaoshijian == selectedNodes.node.id) {
quxiaoshijian = ''
mybus.emit('paramsGetResources', quxiaoshijian)
} else {
quxiaoshijian = selectedNodes.node.id
mybus.emit('paramsGetResources', selectedNodes.node.id.trim())
}
console.log(
'dianjisousuo',
selectedKeys,
'dianjisousuo',
selectedNodes,
'dianjisousuo',
node,
'dianjisousuo',
event
)
}
const showBottom = (item) => {
item.show = !item.show
if (whoShow1.value && !whoShow1.value.itShowXiHaiAn) {
getCameraAllOrgan({ parentId: item.id }).then((res) => {
treeData.value.map((treeDataItem, index) => {
if (item.id == treeDataItem.id) {
treeData.value[index].children = res.data.data
console.log('treeData.value.[index]', treeData.value[index])
}
})
})
} else {
getCameraInfoByAreaId({
areaId: item.id,
}).then((res) => {
treeData.value.map((treeDataItem, index) => {
if (item.id == treeDataItem.id) {
treeData.value[index].children = res.data.data
console.log('treeData.value.[index]', treeData.value[index])
}
})
})
}
const showDown = (item, val) => {
selectId.value = val.id
console.log('item---showDown--------->', item);
console.log('val----showDown-------->', val);
if (item.children) {
val.show = !val.show;
//
if (!val.show) {
selectId.value = ''
}
}
const showDown = (item, val) => {
console.log('showDown', val)
if (item.children) {
val.show = !val.show
}
}
return {
value,
onSearch,
selectedKeys,
checkedKeys,
fieldNames,
treeData,
dianjisousuo,
quxiaoshijian,
xuanzeshijian,
showKey,
onSelect,
showBottom,
showDown,
selectId,
}
},
beforeUnmount() {
mybus.off('getDeptList')
console.log('getDeptList销毁~~~~~~~~~~~~~~~~~~~')
},
components: {
UpOutlined,
DownOutlined,
},
})
}
return {
treeData,
showKey,
onSelect,
showBottom,
showDown,
selectId,
}
},
beforeUnmount() {
mybus.off('getDeptList')
console.log('getDeptList销毁~~~~~~~~~~~~~~~~~~~')
},
components: {
UpOutlined,
DownOutlined,
},
})
</script>
<style lang="less" scoped>
// .wrapper {
// height: 100%;
// width: 100%;
// padding: .2rem;
// .wrapper-title {
// height: .28rem;
// width: 100%;
// margin-bottom: .25rem;
// .wrapper-title-name {
// width: 100%;
// height: .17rem;
// font-size: .18rem;
// font-family: 'AlibabaPuHuiTiR';
// font-weight: 400;
// color: #0058e1;
// line-height: .34rem;
// }
// .wrapper-title-yangshi {
// width: .4rem;
// height: .03rem;
// background: #0058e1;
// border-radius: .02rem;
// margin-top: .2rem;
// margin-left: .15rem;
// }
// }
// .wrapper-title-left-tree {
// overflow-y: auto;
// height: 80%;
// width: 2.1rem;
// }
// .wrapper-title-left-tree::-webkit-scrollbar {
// width: .05rem;
// height: .05rem;
// }
// .wrapper-title-left-tree::-webkit-scrollbar-thumb {
// border-radius: .05rem;
// background-color: #0058e1;
// }
// .wrapper-title-left-tree::-webkit-scrollbar-track {
// background-color: transparent;
// }
// :deep(.ant-tree-treenode) {
// margin-top: .1rem;
// height: .23rem;
// overflow: hidden;
// text-overflow: ellipsis;
// display: -webkit-box;
// -webkit-line-clamp: 1;
// -webkit-box-orient: vertical;
// }
// }
.primaryNode {
.top {
width: 100%;
.primaryNode {
.top {
width: 100%;
height: 0.4rem;
background: rgba(0, 135, 225, 0.1);
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 0.1rem;
margin-top: 0.08rem;
}
.top:hover {
cursor: pointer;
// 0058e1 0.5
background: rgba(0, 88, 225, 0.8);
color: white;
:deep(.anticon) {
color: white;
}
}
.topSelect {
background: #0058e1;
color: white;
:deep(.anticon) {
color: white;
}
}
.bottom {
width: 100%;
background: rgba(244, 245, 248, 0.8);
padding: 0 0.1rem;
// margin-bottom: .08rem;
.up {
cursor: pointer;
height: 0.4rem;
background: rgba(0, 135, 225, 0.1);
display: flex;
justify-content: space-between;
align-items: center;
border-top: 0.01rem solid #ccc;
padding: 0 0.1rem;
margin-top: 0.08rem;
}
.top:hover {
cursor: pointer;
// 0058e1 0.5
background: rgba(0, 88, 225, 0.8);
color: white;
:deep(.anticon) {
color: white;
&>div {
display: flex;
justify-content: flex-start;
}
.name {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
}
.topSelect {
background: #0058e1;
color: white;
:deep(.anticon) {
color: white;
.up:hover {
.name {
color: #0058e1;
font-weight: 600;
}
span {
color: #0058e1;
font-weight: 600;
}
}
.bottom {
.select {
padding: 0 0.1rem 0 0;
.name {
width: 1.7rem;
color: #0058e1 !important;
font-weight: 600;
}
span {
color: #0058e1;
font-weight: 600;
}
}
.item:nth-of-type(1) .up {
border-top: none;
}
.down {
width: 100%;
background: rgba(244, 245, 248, 0.8);
padding: 0 0.1rem;
// margin-bottom: .08rem;
.up {
.child {
cursor: pointer;
height: 0.4rem;
display: flex;
justify-content: space-between;
align-items: center;
border-top: 0.01rem solid #ccc;
padding: 0 0.1rem;
& > div {
&>div {
display: flex;
justify-content: flex-start;
}
.name {
overflow: hidden;
text-overflow: ellipsis;
@ -492,76 +299,34 @@
word-break: break-all;
}
}
.up:hover {
.child:hover {
.name {
color: #0058e1;
font-weight: 600;
}
span {
color: #0058e1;
font-weight: 600;
}
}
.select {
padding: 0 0.1rem 0 0;
.select2 {
.name {
width: 1.7rem;
color: #0058e1;
font-weight: 600;
}
span {
color: #0058e1;
font-weight: 600;
}
}
.item:nth-of-type(1) .up {
border-top: none;
}
.down {
width: 100%;
.child {
cursor: pointer;
height: 0.4rem;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 0.1rem;
& > div {
display: flex;
justify-content: flex-start;
}
.name {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
}
.child:hover {
.name {
color: #0058e1;
font-weight: 600;
}
span {
color: #0058e1;
font-weight: 600;
}
}
.select2 {
.name {
width: 1.7rem;
color: #0058e1;
font-weight: 600;
}
span {
color: #0058e1;
font-weight: 600;
}
padding: 0 0.1rem 0 0;
}
padding: 0 0.1rem 0 0;
}
}
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -5,8 +5,13 @@
<div class="top">
<div class="top-title">
全部
<div v-for="(item, index) in titleName" :key="index" class="tabAll" @click="changeCards(index)"
:class="{ sel: index == number }">
<div
v-for="item in titleName"
:key="item.index"
class="tabAll"
@click="changeCards(item.index)"
:class="{ sel: item.index === number }"
>
<span>
{{ item.name === '赋能场景' ? '典型赋能场景' : '打包模式' }}
</span>
@ -15,26 +20,55 @@
<div class="resultListSearchInput-father" v-if="number === 0">
<div class="resultListSearchInput-son">
模糊搜索
<a-input-search v-model:value="searchValue" placeholder="请输入关键词" enter-button="搜索" size="large"
@search="getIntegrationList" @change="onSearch" class="resultListSearchInput" />
<a-input-search
v-model:value="searchValue"
placeholder="请输入关键词"
enter-button="搜索"
size="large"
@search="getIntegrationList"
@change="onSearch"
class="resultListSearchInput"
/>
<button class="button-reset" @click="resetAction()">重置</button>
<div class="hengxian"></div>
</div>
</div>
<div v-loading="loadingData">
<searchResultList v-if="number === 0" v-show="resourceList.data && resourceList.data.length > 0"
:resourceList="resourceList" :resourceTotal="resourceTotal" @saveSearchCodition="saveSearchCodition"
ref="searchResultListDom" :selectCardsname="number == 0 ? '融合服务' : '赋能场景'" />
<CanAssignCase v-else v-show="resourceList.data && resourceList.data.length > 0" :resourceList="resourceList"
@saveSearchCodition="saveSearchCodition" :resourceTotal="resourceTotal"
:selectCardsname="number == 0 ? '融合服务' : '赋能场景'" />
<searchResultList
v-if="number === 1"
v-show="resourceList.data && resourceList.data.length > 0"
:resourceList="resourceList"
:resourceTotal="resourceTotal"
@saveSearchCodition="saveSearchCodition"
ref="searchResultListDom"
:selectCardsname="number == 0 ? '融合服务' : '赋能场景'"
/>
<CanAssignCase
v-else
v-show="resourceList.data && resourceList.data.length > 0"
:resourceList="resourceList"
@saveSearchCodition="saveSearchCodition"
:resourceTotal="resourceTotal"
:selectCardsname="number == 0 ? '融合服务' : '赋能场景'"
/>
<div class="pagination">
<a-pagination v-if="resourceList.data && resourceList.data.length > 0" v-model:current="currentPage"
v-model:pageSize="currentPageSize" show-size-changer show-less-items show-quick-jumper
:total="resourceTotal" :page-size-options="pageSizeOptions" @change="pageChange"
@showSizeChange="onShowSizeChange" />
<a-pagination
v-if="resourceList.data && resourceList.data.length > 0"
v-model:current="currentPage"
v-model:pageSize="currentPageSize"
show-size-changer
show-less-items
show-quick-jumper
:total="resourceTotal"
:page-size-options="pageSizeOptions"
@change="pageChange"
@showSizeChange="onShowSizeChange"
/>
</div>
<div v-if="resourceList.data && resourceList.data.length <= 0" style="margin-top: 2rem">
<div
v-if="resourceList.data && resourceList.data.length <= 0"
style="margin-top: 2rem"
>
<a-empty />
</div>
</div>
@ -43,357 +77,382 @@
<home-footer></home-footer>
</template>
<script>
import HomeFooter from '@/views/newHome/components/Footer'
import mybus from '@/myplugins/mybus'
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 HomeFooter from '@/views/newHome/components/Footer'
import mybus from '@/myplugins/mybus'
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'
export default defineComponent({
beforeRouteLeave(to, from, next) {
console.log('to---integrationServices--beforeRouteLeave------->', to)
console.log('from---integrationServices--beforeRouteLeave------->', from)
console.log('next---integrationServices--beforeRouteLeave------->', next)
if (to.name !== 'packagingDetails' && to.name !== 'integrationServicesDetails') {
localStorage.removeItem('integrationServices')
}
next()
},
setup() {
//
const loading = ref(true)
const currentPage = ref(1)
const currentPageSize = ref(5)
const pageSizeOptions = ref(['2', '5', '10', '20', '50'])
const router = useRouter()
const select = router.currentRoute.value.query.select
const searchValue = ref('')
const Cardsname = ref(select)
const resourceList = reactive({ data: [] })
const resourceTotal = ref(0)
const loadingData = ref(false)
//
const titleName = ref([
{
name: '打包模式',
},
{
name: '赋能场景',
},
])
const number = ref(0)
//
const paramsGetResources = {
page: currentPage.value,
limit: currentPageSize.value,
type: titleName.value[number.value].name,
name: searchValue.value,
orderField: 'create_date',
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)
export default defineComponent({
beforeRouteLeave(to, from, next) {
console.log('to---integrationServices--beforeRouteLeave------->', to)
console.log('from---integrationServices--beforeRouteLeave------->', from)
console.log('next---integrationServices--beforeRouteLeave------->', next)
if (
to.name !== 'packagingDetails' &&
to.name !== 'integrationServicesDetails'
) {
localStorage.removeItem('integrationServices')
}
next()
},
setup() {
//
const loading = ref(true)
const currentPage = ref(1)
const currentPageSize = ref(10)
const pageSizeOptions = ref(['2', '5', '10', '20', '50'])
const router = useRouter()
const select = router.currentRoute.value.query.select
const searchValue = ref('')
const Cardsname = ref(select)
const resourceList = reactive({ data: [] })
const resourceTotal = ref(0)
const loadingData = ref(false)
//
const titleName = ref([
{
name: '赋能场景',
index: 0,
},
{
name: '打包模式',
index: 1,
},
])
let number = ref(0)
//
const paramsGetResources = {
page: currentPage.value,
limit: currentPageSize.value,
type: titleName.value[number.value].name,
name: searchValue.value,
orderField: 'create_date',
orderType: 'DESC', // ASC DESC
}
const searchResultListDom = ref(null)
const storageSearchInfo = JSON.parse(
localStorage.getItem('integrationServices')
)
//
const handleSetSearchData = () => {
if (storageSearchInfo) {
number.value = storageSearchInfo.type == '打包模式' ? 1 : 0
//
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) => {
//
number.value = val
paramsGetResources.type = titleName.value[number.value].name
resetAction()
}
//
const onSearch = () => {
currentPage.value = 1
getIntegrationList()
}
//
const resetAction = () => {
//
searchValue.value = ''
//
currentPage.value = 1
currentPageSize.value = 10
//
paramsGetResources.page = 1
paramsGetResources.limit = 10
paramsGetResources.orderField = 'create_date'
paramsGetResources.orderType = 'DESC'
mybus.emit('resetAction', {
type: titleName.value[number.value].name,
})
getIntegrationList()
}
}
const changeCards = (val) => {
//
number.value = val;
paramsGetResources.type = titleName.value[number.value].name;
resetAction()
}
//
const onSearch = () => {
currentPage.value = 1
getIntegrationList()
}
//
const resetAction = () => {
//
searchValue.value = ''
//
currentPage.value = 1
currentPageSize.value = 5
//
paramsGetResources.page = 1
paramsGetResources.limit = 5
paramsGetResources.orderField = 'create_date'
paramsGetResources.orderType = 'DESC'
mybus.emit('resetAction', {
type: titleName.value[number.value].name,
})
getIntegrationList()
}
//
const getIntegrationList = () => {
loadingData.value = true
paramsGetResources.name = searchValue.value;
console.log('paramsGetResources------参数下发------>', paramsGetResources);
getIntegrationServicesList(paramsGetResources).then(
(res) => {
loadingData.value = false
if (res.data.code !== 0) {
return message.error(res.data.msg)
//
const getIntegrationList = () => {
loadingData.value = true
paramsGetResources.name = searchValue.value
console.log(
'paramsGetResources------参数下发------>',
paramsGetResources
)
getIntegrationServicesList(paramsGetResources).then(
(res) => {
loadingData.value = false
if (res.data.code !== 0) {
return message.error(res.data.msg)
}
resourceList.data = res.data.data.list || []
resourceTotal.value = res.data.data.total || 0
},
(err) => {
loadingData.value = false
message.error(err)
}
resourceList.data = res.data.data.list || []
resourceTotal.value = res.data.data.total || 0
},
(err) => {
loadingData.value = false
message.error(err)
}
)
}
mybus.on('paramsGetResources', (ids) => {
if (ids && ids.length > 0) {
paramsGetResources.deptIds = ids
} else {
delete paramsGetResources.deptIds
)
}
getIntegrationList()
})
mybus.on('changePage', (page) => {
paramsGetResources.page = page
getIntegrationList()
})
mybus.on('paramsGetResources', (ids) => {
if (ids && ids.length > 0) {
paramsGetResources.deptIds = ids
} else {
delete paramsGetResources.deptIds
}
getIntegrationList()
})
mybus.on('changeSelcted', () => {
getIntegrationList()
})
mybus.on('changePage', (page) => {
paramsGetResources.page = page
getIntegrationList()
})
mybus.on('refresh', () => {
paramsGetResources.page = 1
currentPage.value = 1
getIntegrationList()
})
mybus.on('changeCondition', (condition) => {
paramsGetResources.orderField = condition.orderField
paramsGetResources.orderType = condition.orderType
getIntegrationList()
})
mybus.on('changeSelcted', () => {
getIntegrationList()
})
const pageChange = (val) => {
currentPage.value = val
paramsGetResources.page = val
getIntegrationList() //
}
mybus.on('refresh', () => {
paramsGetResources.page = 1
currentPage.value = 1
getIntegrationList()
})
mybus.on('changeCondition', (condition) => {
paramsGetResources.orderField = condition.orderField
paramsGetResources.orderType = condition.orderType
getIntegrationList()
})
//
const onShowSizeChange = (current, pageSize) => {
currentPage.value = current
currentPageSize.value = pageSize
paramsGetResources.page = current
paramsGetResources.limit = pageSize
getIntegrationList()
}
const pageChange = (val) => {
currentPage.value = val
paramsGetResources.page = val
getIntegrationList() //
}
//
const saveSearchCodition = (n) => {
console.log('融合服务-----存储查询条件到本地------->', paramsGetResources);
localStorage.setItem(
'integrationServices',
JSON.stringify(paramsGetResources)
)
}
onMounted(() => {
if (storageSearchInfo) {
handleSetSearchData()
} else {
//
const onShowSizeChange = (current, pageSize) => {
currentPage.value = current
currentPageSize.value = pageSize
paramsGetResources.page = current
paramsGetResources.limit = pageSize
getIntegrationList()
}
})
return {
searchValue,
currentPage,
resourceList,
resourceTotal,
pageChange,
Cardsname,
getIntegrationList,
resetAction,
onSearch,
currentPageSize,
pageSizeOptions,
loading,
titleName,
changeCards,
number,
loadingData,
onShowSizeChange,
saveSearchCodition,
searchResultListDom,
}
},
components: {
HomeHeader,
HomeFooter,
searchResultList,
CanAssignCase,
},
beforeUnmount() {
mybus.off('paramsGetResources')
mybus.off('changeCondition')
mybus.off('refresh')
mybus.off('changePage')
},
})
//
const saveSearchCodition = (n) => {
console.log(
'融合服务-----存储查询条件到本地------->',
paramsGetResources
)
localStorage.setItem(
'integrationServices',
JSON.stringify(paramsGetResources)
)
}
onMounted(() => {
if (storageSearchInfo) {
handleSetSearchData()
} else {
getIntegrationList()
}
})
return {
searchValue,
currentPage,
resourceList,
resourceTotal,
pageChange,
Cardsname,
getIntegrationList,
resetAction,
onSearch,
currentPageSize,
pageSizeOptions,
loading,
titleName,
changeCards,
number,
loadingData,
onShowSizeChange,
saveSearchCodition,
searchResultListDom,
}
},
components: {
HomeHeader,
HomeFooter,
searchResultList,
CanAssignCase,
},
beforeUnmount() {
mybus.off('paramsGetResources')
mybus.off('changeCondition')
mybus.off('refresh')
mybus.off('changePage')
},
})
</script>
<style lang="less" scoped>
.resultListSearchInput-father {
background: #f3f5f9;
padding: 0.2rem;
.resultListSearchInput-father {
background: #f3f5f9;
padding: 0.2rem;
.resultListSearchInput-son {
background: #fff;
padding: 0.2rem 0.2rem 0rem 0.3rem;
.resultListSearchInput-son {
background: #fff;
padding: 0.2rem 0.2rem 0rem 0.3rem;
.hengxian {
width: 100%;
height: 0.01rem;
background: rgba(150, 144, 144, 0.3);
margin-top: 0.2rem;
.hengxian {
width: 100%;
height: 0.01rem;
background: rgba(150, 144, 144, 0.3);
margin-top: 0.2rem;
}
}
}
}
.resultListSearchInput {
margin-left: 0.1rem;
.resultListSearchInput {
margin-left: 0.1rem;
:deep(.ant-input) {
width: 4rem;
height: 0.36rem;
background: #fff;
border-radius: 0.04rem;
:deep(.ant-input) {
width: 4rem;
height: 0.36rem;
background: #fff;
border-radius: 0.04rem;
}
:deep(.ant-input-search-button) {
width: 0.8rem;
height: 0.36rem;
background: #0087ff;
border-radius: 0.04rem !important;
font-size: 0.14rem;
font-weight: 400;
color: #fff;
line-height: 0.34rem;
margin-left: 0.1rem;
}
:deep(.ant-input-group-addon) {
left: 0 !important;
}
}
:deep(.ant-input-search-button) {
.button-reset {
border: 0;
outline: none;
width: 0.8rem;
height: 0.36rem;
background: #0087ff;
border-radius: 0.04rem !important;
background: #e1edfa;
border-radius: 0.04rem;
font-size: 0.14rem;
font-weight: 400;
color: #fff;
color: #0087ff;
line-height: 0.34rem;
margin-left: 0.1rem;
margin-left: 2.5rem;
cursor: pointer;
}
:deep(.ant-input-group-addon) {
left: 0 !important;
}
}
.button-reset {
border: 0;
outline: none;
width: 0.8rem;
height: 0.36rem;
background: #e1edfa;
border-radius: 0.04rem;
font-size: 0.14rem;
font-weight: 400;
color: #0087ff;
line-height: 0.34rem;
margin-left: 2.5rem;
cursor: pointer;
}
.details-pageconetent {
height: 100%;
width: 100%;
display: flex;
justify-content: center;
align-items: center;
margin-top: 0.67rem;
position: relative;
background: rgba(245, 243, 243, 0.3);
.details-pageconetent-left {
max-height: 6.9rem;
position: absolute;
width: 2.5rem;
top: 0.17rem;
left: 2.5rem;
margin-right: 0.17rem;
overflow: auto;
}
.top {
min-height: 7.2rem;
position: relative;
width: 11.5rem;
.details-pageconetent {
height: 100%;
width: 100%;
display: flex;
padding-top: 0.2rem;
flex-direction: column;
font-size: 0.16rem;
justify-content: left;
background: #f3f5f9;
justify-content: center;
align-items: center;
margin-top: 0.67rem;
position: relative;
background: rgba(245, 243, 243, 0.3);
.pagination {
background: #f3f5f9;
padding-bottom: 0.6rem;
.details-pageconetent-left {
max-height: 6.9rem;
position: absolute;
width: 2.5rem;
top: 0.17rem;
left: 2.5rem;
margin-right: 0.17rem;
overflow: auto;
}
.top-title {
padding: 0.2rem;
.top {
min-height: 7.2rem;
position: relative;
width: 11.5rem;
display: flex;
font-size: 18px;
padding-top: 0.2rem;
flex-direction: column;
font-size: 0.16rem;
justify-content: left;
background: #f3f5f9;
.tabAll {
.pagination {
background: #f3f5f9;
padding-bottom: 0.6rem;
}
.top-title {
padding: 0.2rem;
display: flex;
font-size: 18px;
color: #000000;
margin-right: 35px;
cursor: pointer;
}
.tabAll:nth-child(1) {
margin-left: 20px;
}
.tabAll {
font-size: 18px;
color: #000000;
margin-right: 35px;
cursor: pointer;
}
.sel {
font-weight: 600;
color: #0087ff;
border-bottom: 0.02rem solid #0087ff;
.tabAll:nth-child(1) {
margin-left: 20px;
}
.sel {
font-weight: 600;
color: #0087ff;
border-bottom: 0.02rem solid #0087ff;
}
}
}
}
}
:deep(.ant-card-grid) {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
-webkit-line-clamp: 1;
word-break: break-all;
}
:deep(.ant-card-grid) {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
-webkit-line-clamp: 1;
word-break: break-all;
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@
<a-layout-header>
<div class="title">最热能力</div>
<div class="des">
能力资源汇聚能力共享开放赋能千行百业孵化生态产业
能力资源能力共享开放赋能千行百业孵化生态产业
</div>
</a-layout-header>
<a-layout class="content">

View File

@ -65,6 +65,8 @@
data-spm-anchor-id="a313x.7781069.0.i0"
></path>
</svg>
<img class="icon-poylon" @click="areaMode()" src="~@/supermap/image/icon-poylon.png">
</div>
<video-play
v-if="openVideo"
@ -92,6 +94,7 @@
} from '@/api/videoSurveillance'
import { getCameraByCondition } from '@/api/file'
import mybus from '@/myplugins/mybus'
import * as turf from '@turf/turf';
export default {
data() {
@ -112,6 +115,7 @@
openVideo: false,
channelCode: [],
circleModeFlag: false,
areaModeFlag: false,
addressMatchUrl: '',
address: '',
whoShow1: whoShow,
@ -124,7 +128,10 @@
gpsX: '',
gpsY: '',
radius: '',
borderPolygonList: [],
type: 0, //012
},
pointAllData:[],
}
},
components: {
@ -158,6 +165,20 @@
this.mapSearchParam.parentId = parentId
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: {
selectedAddress(item, index) {
@ -169,6 +190,46 @@
}
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() {
L.drawLocal.draw.handlers.circle.tooltip.start = '请圈选区域'
@ -196,18 +257,20 @@
this.mapSearchParam.gpsX = e.layer._latlng.lng
this.mapSearchParam.gpsY = e.layer._latlng.lat
this.mapSearchParam.radius = radius
this.mapSearchParam.type = 1
const params = {
gpsX: this.mapSearchParam.gpsX,
gpsY: this.mapSearchParam.gpsY,
radius: radius,
type: this.mapSearchParam.type,
}
mybus.emit('getListByMap', params)
this.getCameraByParentId()
// mybus.emit('getListByMap', params)
this.getCameraByParentId('map')
}
}
})
},
getCameraByParentId() {
getCameraByParentId(type) {
if (!this.whoShow1.itShowXiHaiAn) {
debugger
getCameraByParentId(this.mapSearchParam).then((res) => {
@ -221,12 +284,13 @@
this.mapSearchParam.parentId ||
'70be8c5b664f4bcf869d82f2e8335051',
pageNum: this.mapSearchParam.pageNum,
pageSize: this.mapSearchParam.pageSize,
pageSize: this.mapSearchParam.type!=0?this.mapSearchParam.pageSize:10,
name: this.mapSearchParam.cameraName || '',
longitude: this.mapSearchParam.gpsX || '',
latitude: this.mapSearchParam.gpsY || '',
radius: this.mapSearchParam.radius || '',
status: 1,
type: this.mapSearchParam.type,
borderPolygonList: this.mapSearchParam.borderPolygonList || [],
}
let paramsFather = ''
let i = 1
@ -243,41 +307,89 @@
}
}
}
getCameraByCondition(paramsFather).then((res) => {
getCameraByCondition(params).then((res) => {
console.log('根据parent查询摄像头', res.data.data)
this.addResourceTomap('videoMap', 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)
else
this.addResourceTomap('videoMap', []) //
})
}
},
//
initAddressMatchService() {
this.L = window.L || {}
this.addressMatchService = L.supermap && L.supermap.addressMatchService && L.supermap.addressMatchService(
this.addressMatchService = L.supermap.addressMatchService(
this.addressMatchUrl
)
},
areaMode(){
//
if(this.circleModeFlag){
this.resetCircle();
this.circleModeFlag = false;
}
this.areaModeFlag = !this.areaModeFlag;
if (this.areaModeFlag) {
//
this.areaSelectResource()
} else {
this.resetArea();
}
},
circleMode() {
if(this.areaModeFlag){
this.resetArea();
this.areaModeFlag = false;
}
//
this.circleModeFlag = !this.circleModeFlag
if (this.circleModeFlag) {
//
this.circleSelectResource()
} else {
//
this.hiMapFun.removeLayerByLayerName('circlePloygonLayer')
//
this.mapSearchParam.gpsX = ''
this.mapSearchParam.gpsY = ''
this.mapSearchParam.radius = ''
this.getCameraByParentId()
const params = {
gpsX: this.mapSearchParam.gpsX,
gpsY: this.mapSearchParam.gpsY,
radius: this.mapSearchParam.radius,
}
mybus.emit('getListByMap', params)
this.resetCircle();
}
},
resetCircle(){
//
this.hiMapFun.removeLayerByLayerName('circlePloygonLayer')
//
this.mapSearchParam.gpsX = ''
this.mapSearchParam.gpsY = ''
this.mapSearchParam.radius = ''
this.mapSearchParam.type = 0;
const params = {
gpsX: this.mapSearchParam.gpsX,
gpsY: this.mapSearchParam.gpsY,
radius: this.mapSearchParam.radius,
type: this.mapSearchParam.type
}
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) {
this.disasterPointIndex = indexX
@ -352,18 +464,21 @@
addResourceTomap(type, data) {
const dataEvent = []
data.forEach((item) => {
const arr = [0, 0.0, '', '0', '0.0']
if (arr.indexOf(item.gpsX) == -1) {
dataEvent.push({
latLng: { lat: Number(item.gpsY), lng: Number(item.gpsX) },
data: item,
type: 'videoSurveillance',
})
}
})
if(data&&data.length>0){
data.forEach((item) => {
const arr = [0, 0.0, '', '0', '0.0']
if (arr.indexOf(item.gpsX) == -1) {
dataEvent.push({
latLng: { lat: Number(item.gpsY), lng: Number(item.gpsX) },
data: item,
active: item.active,
type: 'videoSurveillance',
})
}
})
}
console.log('上图数据', dataEvent)
this.getMapPoint(dataEvent, 'videoSurveillance.png', type)
this.getMapPoint(dataEvent, 'icon_camare.png', type)
},
getMapPoint(data, img, type) {
// this.hiMapFun.clearAllLayers();
@ -373,7 +488,8 @@
features,
img,
type,
createCameraDetailsPop
createCameraDetailsPop,
'icon_camare_active.png'
)
},
@ -543,13 +659,17 @@
.leaflet-control-attribution {
display: none;
}
svg {
svg,.icon-poylon {
position: absolute;
bottom: 0.1rem;
right: 0.1rem;
z-index: 1001;
z-index: 988;
cursor: pointer;
}
.icon-poylon {
width: 0.46rem;
bottom: 0.6rem;
}
.address-auto-complete-input {
width: 2.4rem;
}

View File

@ -2,42 +2,26 @@
<home-header></home-header>
<div class="menu-container">
<div id="container" class="content-menu">
<div class="left">
<div
class="first-title-text doc"
:style="{ color: '技术文档' === titleData.name ? '#0058e1' : '' }"
@click="changeName({ name: '技术文档' })"
>
<!-- <div class="left">
<div class="first-title-text doc" :style="{ color: '技术文档' === titleData.name ? '#0058e1' : '' }"
@click="changeName({ name: '技术文档' })">
技术文档
</div>
<abilityDocTree
style="max-height: 320px; overflow-y: auto"
:dataList="treeArray"
@treeClick="treeClick"
:clickData="clickData"
></abilityDocTree>
</div>
<abilityDocTree style="max-height:320px;overflow-y:auto" :dataList="treeArray" @treeClick="treeClick"
:clickData="clickData"></abilityDocTree>
</div> -->
<div
class="first-title-text new-guide-box"
:style="{ color: '使用手册' === titleData.name ? '#0058e1' : '' }"
@click="changeName({ name: '使用手册' })"
>
<div class="first-title-text new-guide-box" :style="{ color: '使用手册' === titleData.name ? '#0058e1' : '' }"
@click="downloadDoc('/static/doc/userbook.docx', '通用能力服务平台USC用户手册')">
<div class="guide-text">使用手册</div>
<el-icon :size="20" color="#0058e1" @click="downloadEvt()"><Download /></el-icon>
<img src="@/assets/developmentGuide/download.png" @click="downloadDoc('/static/doc/userbook.docx', '通用能力服务平台USC用户手册')" alt="" />
</div>
<!-- 技术文档 -->
<div class="right" v-if="titleData.name !== '使用手册'">
<div style="height: 100%">
<iframe
name="iframeName"
width="1300"
height="100%"
id="iframeId"
:frameborder="0"
:src="doc_base_url + clickData.doc"
></iframe>
<iframe name="iframeName" width="1300" height="100%" id="iframeId" :frameborder="0"
:src="doc_base_url + clickData.doc"></iframe>
</div>
</div>
</div>
@ -112,7 +96,7 @@ const changeName = (item) => {
title: val.title,
show:
(i === 0 && val.children && val.children.length > 0) ||
typeList.includes(val.title)
typeList.includes(val.title)
? true
: false,
children: [],
@ -131,7 +115,7 @@ const formData = (children = [], dataItem) => {
title: item.title,
show:
(index === 0 && item.children && item.children.length > 0) ||
typeList.includes(item.title)
typeList.includes(item.title)
? true
: false,
children: [],
@ -150,14 +134,15 @@ const getFirstData = (firstObj = {}) => {
clickData.value = firstObj
}
}
const downloadDoc = (path, name) => {
const a = document.createElement('a')
a.href = path
a.download =name
a.click()
}
onMounted(() => {
getTreeData()
})
const downloadEvt = (url = '') => {
window.open('/static/download/通用能力服务平台UCS用户手册-v3.5.docx', '_self')
}
</script>
<style scoped lang="less">
@ -213,7 +198,7 @@ const downloadEvt = (url = '') => {
top: 300px;
right: 205px;
width: 74px;
height: 170px;
height: 150px;
background: url('~@/assets/menu/new-bg.png') no-repeat;
background-size: 100% 100%;
display: flex;
@ -229,8 +214,6 @@ const downloadEvt = (url = '') => {
word-wrap: break-word;
font-size: 20px;
color: #0058e1;
height: 136px;
margin-bottom: 4px;
}
.right {

View File

@ -15,7 +15,11 @@
</a-input>
</a-form-item>
<a-form-item>
<a-input v-model:value="form.password" type="password" placeholder="Password">
<a-input
v-model:value="form.password"
type="password"
placeholder="Password"
>
<template v-slot:prefix>
<LockOutlined style="color: rgba(0, 0, 0, 0.25)" />
</template>
@ -23,8 +27,15 @@
</a-form-item>
<a-form-item>
<!-- IE Chrome || judgeAgent() !== 'Chrome'-->
<a-button type="primary" html-type="submit"
:disabled="form.username === '' || form.password === '' || !canOpen.includes(judgeAgent())">
<a-button
type="primary"
html-type="submit"
:disabled="
form.username === '' ||
form.password === '' ||
!canOpen.includes(judgeAgent())
"
>
登录
</a-button>
</a-form-item>
@ -36,176 +47,196 @@
</div>
</template>
<script>
import { dependencies, devDependencies } from '*/package.json'
import { mapActions, mapGetters } from 'vuex'
import { Encrypt } from '@/utils/crypto'
import { UserOutlined, LockOutlined } from '@ant-design/icons-vue'
import { message, Modal } from 'ant-design-vue'
import { dependencies, devDependencies } from '*/package.json'
import { mapActions, mapGetters } from 'vuex'
import Cookies from 'js-cookie'
import { Encrypt } from '@/utils/crypto'
import { UserOutlined, LockOutlined } from '@ant-design/icons-vue'
import { message, Modal } from 'ant-design-vue'
export default {
name: 'Login',
components: {
UserOutlined,
LockOutlined,
},
data() {
return {
form: {
username: '',
password: '',
},
redirect: undefined,
dependencies: dependencies,
devDependencies: devDependencies,
is360: false,
isIE: false,
canOpen: ['FF', 'Chrome']
}
},
computed: {
...mapGetters({
logo: 'settings/logo',
title: 'settings/title',
}),
},
watch: {
$route: {
handler(route) {
this.redirect = (route.query && route.query.redirect) || '/'
},
immediate: true,
},
},
mounted() {
this.form.username = ''
this.form.password = ''
// 西
const isXiHaiAn = whoShow.itShowXiHaiAn
if (!this.canOpen.includes(this.judgeAgent())) {
Modal.warning({
title: '提示',
content: '请使用谷歌或火狐浏览器!',
});
}
},
methods: {
...mapActions({
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'
export default {
name: 'Login',
components: {
UserOutlined,
LockOutlined,
},
data() {
return {
form: {
username: '',
password: '',
},
redirect: undefined,
dependencies: dependencies,
devDependencies: devDependencies,
is360: false,
isIE: false,
canOpen: ['FF', 'Chrome'],
}
},
handleRoute() {
return this.redirect === '/404' || this.redirect === '/403'
? '/home'
: this.redirect
computed: {
...mapGetters({
logo: 'settings/logo',
title: 'settings/title',
}),
},
async handleSubmit() {
// debugger
try {
// console.log('', Decrypt(Encrypt(this.form.password)))
if (this.form.password !== this.form.password.trim()) {
message.error('登陆失败,用户名或密码错误!')
return
}
await this.login({
password: Encrypt(this.form.password),
username: this.form.username,
watch: {
$route: {
handler(route) {
this.redirect = (route.query && route.query.redirect) || '/'
},
immediate: true,
},
},
mounted() {
this.form.username = ''
this.form.password = ''
if (!this.canOpen.includes(this.judgeAgent())) {
Modal.warning({
title: '提示',
content: '请使用谷歌或火狐浏览器!',
})
window.sessionStorage.setItem('visits', JSON.stringify([]))
console.log('添加visits========================================>')
// console.log(this.handleRoute())
await this.$router.push('/home')
} catch (error) {
message.error('登陆失败,用户名或密码错误!')
}
},
},
}
methods: {
...mapActions({
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() {
return this.redirect === '/404' || this.redirect === '/403'
? '/home'
: this.redirect
},
async handleSubmit() {
// debugger
try {
// console.log('', Decrypt(Encrypt(this.form.password)))
if (this.form.password !== this.form.password.trim()) {
message.error('登陆失败,用户名或密码错误!')
return
}
await this.login({
password: Encrypt(this.form.password),
username: this.form.username,
})
window.localStorage.setItem('tokenStartTime', new Date().getTime())
window.sessionStorage.setItem('visits', JSON.stringify([]))
console.log(
'添加visits========================================>',
Cookies.get('ucsToken')
)
// console.log(this.handleRoute())
// 西
if (isXiHaiAn) {
await this.$router.push({
path: '/DetailsPageconetent',
query: {
select: '基础设施',
tecHnosphere: '',
appLiCation: '',
},
})
} else {
await this.$router.push('/home')
}
} catch (error) {
message.error('登陆失败,用户名或密码错误!')
}
},
},
}
</script>
<style lang="less">
.login-container {
width: 100%;
height: 100vh;
background: url('~@/assets/login_images/login_background.png');
background-size: cover;
&-form {
width: calc(100% - 40px);
height: 380px;
padding: 4vh;
margin-top: calc((100vh - 380px) / 2);
margin-right: 20px;
margin-left: 20px;
background: url('~@/assets/login_images/login_form.png');
background-size: 100% 100%;
border-radius: 10px;
box-shadow: 0 2px 8px 0 rgba(7, 17, 27, 0.06);
}
&-hello {
font-size: 32px;
color: #fff;
}
&-title {
margin-bottom: 30px;
font-size: 20px;
color: #fff;
}
&-tips {
position: fixed;
bottom: @vab-margin;
.login-container {
width: 100%;
height: 40px;
color: rgba(255, 255, 255, 0.856);
text-align: center;
}
height: 100vh;
background: url('~@/assets/login_images/login_background.png');
background-size: cover;
.ant-col {
width: 100%;
padding: 0 10px 0 10px;
}
&-form {
width: calc(100% - 40px);
height: 380px;
padding: 4vh;
margin-top: calc((100vh - 380px) / 2);
margin-right: 20px;
margin-left: 20px;
background: url('~@/assets/login_images/login_form.png');
background-size: 100% 100%;
border-radius: 10px;
box-shadow: 0 2px 8px 0 rgba(7, 17, 27, 0.06);
}
.ant-input {
height: 35px;
}
&-hello {
font-size: 32px;
color: #fff;
}
.ant-btn {
width: 100%;
height: 45px;
border-radius: 99px;
&-title {
margin-bottom: 30px;
font-size: 20px;
color: #fff;
}
&-tips {
position: fixed;
bottom: @vab-margin;
width: 100%;
height: 40px;
color: rgba(255, 255, 255, 0.856);
text-align: center;
}
.ant-col {
width: 100%;
padding: 0 10px 0 10px;
}
.ant-input {
height: 35px;
}
.ant-btn {
width: 100%;
height: 45px;
border-radius: 99px;
}
}
}
</style>

View File

@ -15,40 +15,15 @@
</a-breadcrumb>
<div class="top">
<div class="left">
<div
class="item"
:class="{ select: selectNav == nav.key }"
v-for="nav in navList"
:key="nav.key"
>
<div class="item" :class="{ select: selectNav == nav.key }" v-for="nav in navList" :key="nav.key">
<i :class="nav.key" @click="changeNav(nav)"></i>
<div>{{ nav.title + '(' + nav.num + ')' }}</div>
</div>
</div>
<!-- <div class="right">
<div style="margin-right: 0.1rem">搜索</div>
<a-input
v-model:value="userName"
placeholder="请输入关键字"
style="margin-right: 0.1rem"
>
<template #suffix>
<search-outlined style="color: rgba(0, 0, 0, 0.45)" />
</template>
</a-input>
<a-button type="primary" style="margin-right: 0.1rem">搜索</a-button>
<div class="reset">重置</div>
</div> -->
</div>
<div class="btn">
<div class="left">
<a-select
ref="select"
v-model:value="value"
style="width: 120px"
@focus="focus"
@change="handleChange"
>
<a-select ref="select" v-model:value="value" style="width: 120px" @focus="focus" @change="handleChange">
<a-select-option value="全部消息">全部消息</a-select-option>
<a-select-option value="已读消息">已读消息</a-select-option>
<a-select-option value="未读消息">未读消息</a-select-option>
@ -62,60 +37,41 @@
</div>
</div>
<div class="right">
<a-checkbox
:checked="
selectData.length !== 0 && selectData.length === data.length
"
stlye="margin-right:0.3rem;"
@change="changeCheckAll()"
></a-checkbox>
<a-checkbox :checked="
selectData.length !== 0 && selectData.length === data.length
" stlye="margin-right:0.3rem;" @change="changeCheckAll()"></a-checkbox>
<div>全选当前页</div>
<span @click="read()">标记为已读</span>
</div>
</div>
<div class="main">
<a-list item-layout="horizontal" :data-source="data">
<template #renderItem="{ item }">
<template #renderItem="{ item }" @click="goNoticePage(item)">
<a-list-item>
<a-list-item-meta description="">
<template #title>
<div
class="left"
@click="read(item)"
:class="item.readStatus === 1 ? '' : 'pointer'"
>
<div class="left" @click="read(item)" :class="item.readStatus === 0 ? 'bold-text' : ''">
{{ item.content }}
</div>
<div class="right">{{ '发布时间:' + item.senderDate }}</div>
</template>
<template #avatar>
<a-checkbox
:checked="item.checked"
@change="changeCheckBox(item)"
></a-checkbox>
<a-checkbox :checked="item.checked" @change="changeCheckBox(item)"></a-checkbox>
<a-badge dot :offset="[-30, 5]" v-show="item.readStatus == 0">
<a-avatar :src="item.src" />
</a-badge>
<a-avatar :src="item.src" v-show="item.readStatus == 1" />
<!-- <a-avatar :src="item.src" /> -->
</template>
</a-list-item-meta>
</a-list-item>
</template>
</a-list>
</div>
<a-pagination
v-model:current="pageNum"
v-model:pageSize="pageSize"
:total="total"
show-less-items
:show-size-changer="false"
@change="changePageNum"
/>
<a-pagination v-model:current="pageNum" v-model:pageSize="pageSize" :total="total" show-less-items
:show-size-changer="false" @change="changePageNum" />
</div>
</template>
<script setup>
// import { SearchOutlined } from '@ant-design/icons-vue'
import { ref, reactive, onBeforeUnmount } from 'vue'
import mybus from '@/myplugins/mybus'
import { message } from 'ant-design-vue'
@ -214,27 +170,132 @@ const goBack = (url) => {
path: url,
})
}
//
let applyStateObj = {
0: '待办',
1: '已办',
}
let typeObj = {
0: '申请前台',
1: '申请后台',
2: '上架前台',
3: '上架后台',
4: '下架前台',
5: '下架后台',
6: '需求前台',
7: '需求后台',
8: '评论前台',
9: '评论后台',
10: '会议室前台',
11: '会议室后台',
12: '其他'
}
//
let pageObj = {
'申请后台': {
0: 'myAgent-CompetencyApplication',
1: 'hasToDoTasks-CompetencyApplication',
},
'上架后台': {
0: 'myAgent-AbilityResourceShelf',
1: 'hasToDoTasks-AbilityResourceShelf',
},
'下架后台': {
0: 'myAgent-AbilityResourcesRemoved',
1: 'hasToDoTasks-AbilityResourcesRemoved',
},
'需求后台': {
0: 'myAgent-ApplicationforCompetencyRequirements',
1: 'hasToDoTasks-ApplicationForCompetencyRequirements',
},
'评论后台': {
0: 'myAgent-CommentModeration',
1: 'hasToDoTasks-CommentModeration',
},
'会议室后台': {
0: 'activiti-RoomExamineAdmin',
1: 'activiti-RoomExamineAdmin',
},
}
// tab
const tabTypeObj = {
'申请前台': '能力申请',
'上架前台': '能力上架',
'下架前台': '能力下架',
'需求前台': '需求评论',
'评论前台': '需求评论',
'会议室前台': '会议室前台'
}
//
const goPage = (item) => {
let typeText = typeObj[item.type];
if (typeText) {
console.log('typeText类型------------>', typeText);
//
if (typeText.indexOf('后台') !== -1) {
let _applyState = item.applyState
let _page = pageObj[typeText][_applyState]
window.open(window.SITE_CONFIG.backUrl + `/#/${_page}`)
} else if (typeText.indexOf('前台') !== -1) {
if (typeText == '会议室前台') {
router.push({
path: '/DetailsPageconetent',
query: {
select: '基础设施',
formPage: 'noticePage'
},
})
} else {
window.sessionStorage.setItem('type', JSON.stringify('apply'))
router.push({
path: '/personalCenter',
query: {
tabTypeName: tabTypeObj[typeText] || '能力申请',
}
})
}
}
}
}
let isQingDao = whoShow.itShowQingDao;
//
const read = (item) => {
// console.log(item)
if (selectData.value.length === 0 && !item) {
message.error('未选择消息!')
return
}
console.log(selectData.value)
if (item) {
//
if (item.readStatus === 1) {
if(isQingDao) {
goPage(item)
}
//
return
}
mynoticeRead(item.id).then((res) => {
if (res.data.code == 0) {
message.success('操作成功!')
message.success('通知已读')
mybus.emit('getMynotice')
init()
if (isQingDao) {
//
setTimeout(() => {
goPage(item)
}, 1000)
}
} else {
message.error('操作失败!')
}
}).catch(err => {
message.error(err)
})
} else {
console.log('提交')
@ -297,9 +358,11 @@ onBeforeUnmount(() => {
.notice-list {
padding: 0.64rem 0 0;
background: #f4f5f8;
.ant-breadcrumb {
padding: 0.1rem 3.1rem;
}
.top {
background: #fff;
padding: 0.18rem 3.1rem 0;
@ -307,8 +370,11 @@ onBeforeUnmount(() => {
justify-content: space-between;
align-items: center;
.left {
display: flex;
.item {
display: flex;
flex-direction: column;
@ -317,6 +383,7 @@ onBeforeUnmount(() => {
margin-left: 1.28rem;
margin-bottom: 0.16rem;
border-bottom: 3px solid #fff;
i {
display: inline-block;
width: 0.48rem;
@ -324,44 +391,54 @@ onBeforeUnmount(() => {
margin-bottom: 0.15rem;
cursor: pointer;
}
.all {
background: url('~@/assets/mynoticeView/all.png') no-repeat;
background-size: 100%;
}
.notice {
background: url('~@/assets/mynoticeView/notice.png') no-repeat;
background-size: 100%;
}
.comment {
background: url('~@/assets/mynoticeView/comment.png') no-repeat;
background-size: 100%;
}
.other {
background: url('~@/assets/mynoticeView/other.png') no-repeat;
background-size: 100%;
}
}
.item:nth-of-type(1) {
margin-left: 0;
}
.select {
border-bottom: 3px solid #0058e1;
color: #0058e1;
}
}
.right {
display: flex;
align-items: center;
height: 0.32rem;
div {
width: 0.5rem;
}
.reset {
color: #0058e1;
cursor: pointer;
}
}
}
.btn {
background: #fff;
margin-top: 0.16rem;
@ -372,31 +449,40 @@ onBeforeUnmount(() => {
.left {
display: flex;
align-items: center;
.ant-select {
margin-right: 0.24rem;
}
.check {
display: flex;
align-items: center;
div {
margin-left: 0.24rem;
span {
font-size: 18px;
color: #0058e1;
}
}
div:nth-of-type(1) {
margin-left: 0.12rem;
}
}
}
.right {
display: flex;
justify-content: space-around;
align-items: center;
div {
margin: 0 0.1rem;
}
span {
cursor: pointer;
color: #0058e1;
@ -410,22 +496,31 @@ onBeforeUnmount(() => {
}
}
}
.main {
background: #fff;
padding: 0 3.1rem;
height: 4.75rem;
overflow-y: scroll;
:deep(.ant-list-item-meta) {
display: flex;
align-items: center;
.ant-checkbox-wrapper {
margin-right: 0.3rem;
}
.ant-list-item-meta-title {
display: flex;
justify-content: space-between;
align-items: center;
.bold-text {
font-weight: bold;
cursor: pointer;
}
.left {
width: 9.2rem;
max-height: 0.43rem;
@ -436,15 +531,19 @@ onBeforeUnmount(() => {
-webkit-box-orient: vertical;
word-break: break-all;
}
.pointer {
cursor: pointer;
.ant-badge-dot {
width: 8px;
height: 8px;
}
.left:hover {
color: #0058e1;
}
}
}
}
.ant-pagination {
background: #fff;
margin-top: 0;

View File

@ -2,71 +2,46 @@
<div class="capability-convergence">
<div class="main">
<div class="top">
能力汇聚
能力分类
<span class="line"></span>
</div>
<div class="bottom">
<div class="item">
<div class="zj">组件服务</div>
<div
class="name"
v-for="(item, index) in zjList"
:key="item.id"
:class="index == 4 ? 'name-last' : ''"
@click="selectOne(item.id)"
>
{{ index + 1 }}-{{ item.name }}
<div class="name" v-for="(item, index) in zjList.slice(0, 5)" :key="item.name"
:class="index == 4 ? 'name-last' : ''" @click="selectOne1(item.name)">
{{ item.name + '-' + item.num + '项' }}
</div>
<div class="btn" @click="jumpPage('组件服务')">查看更多</div>
</div>
<div class="item">
<div class="yy">应用资源</div>
<div
class="name"
v-for="(item, index) in yyList"
:key="item.id"
:class="index == 4 ? 'name-last' : ''"
@click="selectOne(item.id)"
>
{{ index + 1 }}-{{ item.name }}
<div class="name" v-for="(item, index) in yyList.slice(0, 5)" :key="item.name"
:class="index == 4 ? 'name-last' : ''" @click="selectOne11(item.name)">
{{ item.name + '-' + item.num + '项' }}
</div>
<div class="btn" @click="jumpPage('应用资源')">查看更多</div>
</div>
<div class="item">
<div class="jc">基础设施</div>
<div
class="name"
v-for="(item, index) in jcList"
:key="item.name"
:class="index == 2 ? 'name-last' : ''"
@click="selectOne2(item.name)"
>
<div class="name" v-for="(item, index) in jcList.slice(0, 5)" :key="item.name"
:class="index == 2 ? 'name-last' : ''" @click="selectOne2(item.name)">
{{ item.name + '-' + item.num + '项' }}
</div>
<div class="btn" @click="jumpPage('基础设施')">查看更多</div>
</div>
<div class="item">
<div class="sj">数据资源</div>
<div
class="name"
v-for="(item, index) in sjList"
:key="item.id"
:class="index == 4 ? 'name-last' : ''"
@click="selectOne3(item.name)"
>
<div class="name" v-for="(item, index) in sjList" :key="item.id" :class="index == 4 ? 'name-last' : ''"
@click="selectOne3(item.name)">
{{ index + 1 }}-{{ item.name }}
</div>
<div class="btn" @click="jumpPage('数据资源')">查看更多</div>
</div>
<div class="item">
<div class="zs">知识库</div>
<div
class="name"
v-for="(item, index) in zsList"
:key="item.id"
:class="index == 4 ? 'name-last' : ''"
@click="openHref(item)"
>
<div class="name" v-for="(item, index) in zsList" :key="item.id" :class="index == 4 ? 'name-last' : ''"
@click="openHref(item)">
{{ index + 1 }}-{{ item.name }}
</div>
<div class="btn" @click="jumpPage('知识库')">查看更多</div>
@ -76,220 +51,302 @@
</div>
</template>
<script setup>
import {
pageWithAttrs,
getDataResource,
selectInfrastructureList,
} from '@/api/home.js'
import { ref, reactive } from 'vue'
import { useRouter } from 'vue-router'
import { useStore } from 'vuex'
import { updateVisits, browsingInsert } from '@/api/home'
import mybus from '@/myplugins/mybus'
const store = useStore()
const router = useRouter()
const zjList = ref([])
const jcList = ref([])
const sjList = ref([])
const yyList = ref([])
//
const zsList = ref([])
// const jcList = ref([])
const paramsGetResources = {
districtId: '',
pageNum: 1,
pageSize: 5,
type: '',
name: '',
infoList: [],
orderField: 'total', // total visits 访 applyCount score collectCount
orderType: 'DESC', // ASC DESC
}
console.log('dataShowdev==========================>', whoShow)
// eslint-disable-next-line no-undef
const whoShow1 = ref(whoShow)
const interfaceSuccess = ref(0)
const object = reactive({
yyNum: '',
zjNum: '',
jcNum: '',
sjNum: '',
zsNum: '',
})
const getAppResources = (type, obj) => {
paramsGetResources.type = type
if (type === '数据资源' && !whoShow1.value.itShowBaoTou) {
getDataResource({
serviceName: paramsGetResources.name || '', //
orderField: whoShow1.value.itShowQingDao ? 'fbrq' : 'createTime', //
orderType: paramsGetResources.orderType.toLowerCase(), //descasc
pageNum: paramsGetResources.pageNum, //
pageSize: paramsGetResources.pageSize, //
}).then((res) => {
console.log('数据资源==================>', res.data.data)
if (whoShow1.value.itShowQingDao) {
res.data.data.data.forEach((val) => {
val.id = val.guid // id
val.name = val.zyname //
val.sjlCount = val.sjcczl //
val.applyCount = val.syqk //
val.deptName = val.TGBM //
val.createDate = val.fbrq //
val.description = val.xgxt //
})
obj.value = res.data.data.data || []
object.sjNum = res.data.data.rows
// interfaceSuccess.value++
// if (interfaceSuccess.value == 5) {
// mybus.emit('chagneNum', object)
// }
} else if (whoShow1.value.itShowXiHaiAn) {
res.data.data.list.forEach((val) => {
val.id = val.serviceId // id
val.name = val.serviceName //
val.sjlCount = val.requestQuantity //
val.applyCount = val.requestCount //
val.deptName = val.departmentName //
val.createTime = val.createTime.split('.')[0]
val.createDate = val.createTime //
})
obj.value = res.data.data.list || []
object.sjNum = res.data.data.total
// interfaceSuccess.value++
// if (interfaceSuccess.value == 5) {
// mybus.emit('chagneNum', object)
// }
}
})
} else {
let type = paramsGetResources.type
if (type == '基础设施') {
selectInfrastructureList().then((res) => {
console.log('基础设施==========>', res.data.data)
for (const key in res.data.data) {
import {
pageWithAttrs,
getDataResource,
selectInfrastructureList,
selectCollectComponentList,
selectCollectResourceList
} from '@/api/home.js'
import { ref, reactive } from 'vue'
import { useRouter } from 'vue-router'
import { useStore } from 'vuex'
import { updateVisits, browsingInsert, getSoldierList } from '@/api/home'
import { message, Upload } from 'ant-design-vue'
import mybus from '@/myplugins/mybus'
const store = useStore()
const router = useRouter()
const zjList = ref([])
const jcList = ref([])
const sjList = ref([])
const yyList = ref([])
//
const zsList = ref([])
// const jcList = ref([])
const paramsGetResources = {
districtId: '',
pageNum: 1,
pageSize: 5,
type: '',
name: '',
infoList: [],
orderField: 'total', // total visits 访 applyCount score collectCount
orderType: 'DESC', // ASC DESC
}
console.log('dataShowdev==========================>', whoShow)
// eslint-disable-next-line no-undef
const whoShow1 = ref(whoShow)
const interfaceSuccess = ref(0)
const object = reactive({
yyNum: '',
zjNum: '',
jcNum: '',
sjNum: '',
zsNum: '',
})
const getAppResources = (type, obj) => {
paramsGetResources.type = type
if (type === '数据资源' && !whoShow1.value.itShowBaoTou) {
getDataResource({
serviceName: paramsGetResources.name || '', //
orderField: whoShow1.value.itShowQingDao ? 'fbrq' : 'createTime', //
orderType: paramsGetResources.orderType.toLowerCase(), //descasc
pageNum: paramsGetResources.pageNum, //
pageSize: paramsGetResources.pageSize, //
}).then((res) => {
console.log('数据资源==================>', res.data.data)
if (whoShow1.value.itShowQingDao) {
res.data.data.data.forEach((val) => {
val.id = val.guid // id
val.name = val.zyname //
val.sjlCount = val.sjcczl //
val.applyCount = val.syqk //
val.deptName = val.TGBM //
val.createDate = val.fbrq //
val.description = val.xgxt //
})
obj.value = res.data.data.data || []
object.sjNum = res.data.data.rows
} else if (whoShow1.value.itShowXiHaiAn) {
res.data.data.list.forEach((val) => {
val.id = val.serviceId // id
val.name = val.serviceName //
val.sjlCount = val.requestQuantity //
val.applyCount = val.requestCount //
val.deptName = val.departmentName //
val.createTime = val.createTime.split('.')[0]
val.createDate = val.createTime //
})
obj.value = res.data.data.list || []
object.sjNum = res.data.data.total
}
})
} else {
let type = paramsGetResources.type
if (type == '基础设施') {
jcList.value = []
selectInfrastructureList().then((res) => {
console.log('基础设施------res------>', res);
for (const key in res.data.data) {
if (whoShow1.value.itShowXiHaiAn) {
if (key === '视频资源') {
jcList.value.push({
name: key,
num: res.data.data[key],
})
}
} else if(key !== '云资源') { //--
jcList.value.push({
name: key,
num: res.data.data[key],
})
}
if (uavAndIndividualSoldier.num) {
jcList.value.push({
name: '无人机',
num: uavAndIndividualSoldier.uavList.length,
}
jcList.value.push({
name: '会客厅',
num: 4,
})
jcList.value.push({
name: '单兵设备',
num: uavAndIndividualSoldier.individualSoldier.length,
// 西-
if (whoShow1.value.itShowXiHaiAn) {
getSoldierData('无人机')
.then((res) => {
let { total = 0 } = res.data.data
jcList.value.push({
name: '无人机',
num: total,
})
})
}
})
} else {
pageWithAttrs(paramsGetResources).then((res) => {
console.log('object个数======>', type)
obj.value = res.data.data.records
switch (type) {
case '组件服务':
assignmentMethod('zjNum', res)
break
case '应用资源':
assignmentMethod('yyNum', res)
break
case '基础设施':
assignmentMethod('jcNum', res)
break
case '知识库':
assignmentMethod('zsNum', res)
break
}
})
}
}
}
const openHref = (item) => {
console.log(item.id, 'wowowo')
console.log(item.visits, 'wowowo')
browsingInsert({ resourceId: item.id }).then((res) => {
// console.log(res)
})
const arrList = ref([])
arrList.value = JSON.parse(window.sessionStorage.getItem('visits'))
if (arrList.value.indexOf(item.id) === -1) {
arrList.value.push(item.id)
updateVisits({
id: item.id,
visits: item.visits || '0',
}).then(() => {
window.sessionStorage.setItem('visits', JSON.stringify(arrList.value))
.catch((err) => {
console.log('err--无人机---------->', err)
})
getSoldierData('单兵设备')
.then((res) => {
let { total = 0 } = res.data.data
jcList.value.push({
name: '单兵设备',
num: total,
})
})
.catch((err) => {
console.log('err--单兵设备---------->', err)
})
}
})
}
else if (type == '组件服务') {
zjList.value = []
selectCollectComponentList().then((res) => {
console.log('组件服务----res-------->', res);
for (const key in res.data.data) {
console.log('key------------>', key);
zjList.value.push({
name: key,
num: res.data.data[key],
})
}
console.log('zjList------------>', zjList);
})
}
else if (type == '应用资源') {
yyList.value = []
selectCollectResourceList().then((res) => {
console.log('应用资源---res--------->', res);
for (const key in res.data.data) {
yyList.value.push({
name: key,
num: res.data.data[key],
})
}
})
}
else {
pageWithAttrs(paramsGetResources).then((res) => {
console.log('object个数======>', type)
obj.value = res.data.data.records
switch (type) {
case '组件服务':
assignmentMethod('zjNum', res)
break
case '应用资源':
assignmentMethod('yyNum', res)
break
case '基础设施':
assignmentMethod('jcNum', res)
break
case '知识库':
assignmentMethod('zsNum', res)
break
}
})
}
window.open(item.link)
// window.open(
// window.SITE_CONFIG.previewUrl +
// 'hisense_office/onlinePreview?url=' +
// btoa(encodeURI(item.fileHref))
// )
}
const assignmentMethod = (type, res) => {
object[type] = res.data.data.total
// interfaceSuccess.value++
// console.log('object======>', object, interfaceSuccess.value, type)
// if (interfaceSuccess.value >= 4) {
// mybus.emit('chagneNum', object)
// }
}
getAppResources('组件服务', zjList)
getAppResources('应用资源', yyList)
getAppResources('基础设施', jcList)
getAppResources('数据资源', sjList)
getAppResources('知识库', zsList)
}
function jumpPage(type) {
// store
store.commit('home/selectCardsData', {
selectCardsnum: type,
})
console.log(
'选中===================>',
store.getters['home/selectCardsnum']
)
// router.push({ path: '/DetailsPageconetent' })
router.push({
path: '/DetailsPageconetent',
query: {
select: type,
},
})
}
const selectOne = (id) => {
console.log('点击===============》', id)
router.push({
path: '/details',
query: {
id: id,
},
})
}
const selectOne2 = (name) => {
console.log('点击===============》', name)
router.push({
path: '/DetailsPageconetent',
query: {
type: name,
select: '基础设施',
},
})
}
const selectOne3 = (name) => {
console.log('点击===============》', name)
router.push({
path: '/DetailsPageconetent',
query: {
str: name,
select: '数据资源',
},
// 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) => {
console.log(item.id, 'wowowo')
console.log(item.visits, 'wowowo')
browsingInsert({ resourceId: item.id }).then((res) => {
// console.log(res)
})
const arrList = ref([])
arrList.value = JSON.parse(window.sessionStorage.getItem('visits'))
if (arrList.value.indexOf(item.id) === -1) {
arrList.value.push(item.id)
updateVisits({
id: item.id,
visits: item.visits || '0',
}).then(() => {
window.sessionStorage.setItem('visits', JSON.stringify(arrList.value))
})
}
window.open(item.link)
}
const assignmentMethod = (type, res) => {
object[type] = res.data.data.total
}
getAppResources('组件服务', zjList)
getAppResources('应用资源', yyList)
getAppResources('基础设施', jcList)
getAppResources('数据资源', sjList)
getAppResources('知识库', zsList)
function jumpPage(type) {
// store
store.commit('home/selectCardsData', {
selectCardsnum: type,
})
console.log(
'选中===================>',
store.getters['home/selectCardsnum']
)
// router.push({ path: '/DetailsPageconetent' })
router.push({
path: '/DetailsPageconetent',
query: {
select: type,
},
})
}
const selectOne = (id) => {
console.log('点击===============》', id)
router.push({
path: '/details',
query: {
id: id,
},
})
}
const selectOne1 = (name) => {
router.push({
path: '/DetailsPageconetent',
query: {
type: name,
select: '组件服务',
},
})
}
const selectOne11 = (name) => {
router.push({
path: '/DetailsPageconetent',
query: {
type: name,
select: '应用资源',
},
})
}
const selectOne2 = (name) => {
console.log('点击===============》', name)
router.push({
path: '/DetailsPageconetent',
query: {
type: name,
select: '基础设施',
},
})
}
const selectOne3 = (name) => {
console.log('点击===============》', name)
router.push({
path: '/DetailsPageconetent',
query: {
str: name,
select: '数据资源',
},
})
}
</script>
<style lang="less" scoped>
.capability-convergence {
@ -298,12 +355,14 @@
background-size: 100%;
display: flex;
justify-content: center;
.main {
width: 13rem;
margin-top: 1.8rem;
display: flex;
flex-direction: column;
flex-wrap: wrap;
.top {
font-size: 0.3rem;
color: #212121;
@ -313,6 +372,7 @@
flex-wrap: wrap;
justify-content: center;
align-items: center;
.line {
width: 0.34rem;
height: 0.03rem;
@ -320,10 +380,12 @@
margin-top: 0.08rem;
}
}
.bottom {
display: flex;
justify-content: space-between;
margin-top: 0.4rem;
.item {
width: 2.44rem;
height: 3.91rem;
@ -332,6 +394,7 @@
border-radius: 0.02rem;
box-shadow: 0 0.05rem 0.2rem #ccc;
position: relative;
div:nth-of-type(1) {
height: 1.02rem;
line-height: 1.02rem;
@ -340,21 +403,27 @@
padding-left: 0.15rem;
background-size: 100%;
}
.jc {
background: url('~@/assets/newHome/Convergence-jc.png') no-repeat;
}
.sj {
background: url('~@/assets/newHome/Convergence-sj.png') no-repeat;
}
.zj {
background: url('~@/assets/newHome/Convergence-zj.png') no-repeat;
}
.yy {
background: url('~@/assets/newHome/Convergence-yy.png') no-repeat;
}
.zs {
background: url('~@/assets/newHome/Convergence-zs.png') no-repeat;
}
.name {
height: 0.47rem;
line-height: 0.47rem;
@ -367,13 +436,16 @@
-webkit-box-orient: vertical;
word-break: break-all;
}
.name:hover {
color: #0058e1;
cursor: pointer;
}
.name-last {
border-bottom: none;
}
.btn {
cursor: pointer;
width: 0.8rem;
@ -388,11 +460,13 @@
position: absolute;
bottom: 0.2rem;
}
.btn:hover {
background: rgba(0, 88, 225, 0.3);
color: #000;
}
}
.item:hover {
border-radius: 0.02rem;
border: 0.01rem solid #0058e1;

View File

@ -283,7 +283,7 @@
}
const mohuchaxun = ref('组件服务')
function onSearch() {
if (text.value) {
// if (text.value) {
snum.value.str = text.value
console.log('===================>', text.value)
store.commit('home/selectCardsData', snum.value)
@ -291,9 +291,9 @@
path: '/DetailsPageconetent',
query: snum.value,
})
} else {
message.warning('请输入查询内容!')
}
// } else {
// message.warning('')
// }
// router.push({ path: '/DetailsPageconetent' })
}
</script>

View File

@ -1,45 +1,60 @@
<template>
<div class="navigation2">
<div class="item" @click="jumpPage('组件服务')">
<div class="img zj"></div>
<div class="name">组件服务</div>
<div class="sl">
<span class="num">{{ zjNum || 0 }}</span>
<a-tooltip>
<template #title>点击进入组件服务</template>
<div class="item" @click="jumpPage('组件服务')">
<div class="img zj"></div>
<div class="name">组件服务</div>
<div class="sl">
<span class="num">{{ zjNum || 0 }}</span>
</div>
</div>
</div>
<div class="item" @click="jumpPage('应用资源')">
<div class="img yy"></div>
<div class="name">应用资源</div>
<div class="sl">
<span class="num">{{ yyNum || 0 }}</span>
</a-tooltip>
<a-tooltip>
<template #title>点击进入应用资源</template>
<div class="item" @click="jumpPage('应用资源')">
<div class="img yy"></div>
<div class="name">应用资源</div>
<div class="sl">
<span class="num">{{ yyNum || 0 }}</span>
</div>
</div>
</div>
<div class="item" @click="jumpPage('基础设施')">
<div class="img jc"></div>
<div class="name">基础设施</div>
<div class="sl">
<span class="num">{{ jcNum || 0 }}</span>
</a-tooltip>
<a-tooltip>
<template #title>点击进入基础设施</template>
<div class="item" @click="jumpPage('基础设施')">
<div class="img jc"></div>
<div class="name">基础设施</div>
<div class="sl">
<span class="num">{{ jcNum || 0 }}</span>
</div>
</div>
</div>
<div class="item" @click="jumpPage('数据资源')">
<div class="img sj"></div>
<div class="name">数据资源</div>
<div class="sl">
<span class="num">{{ sjNum || 0 }}</span>
</a-tooltip>
<a-tooltip>
<template #title>点击进入数据资源</template>
<div class="item" @click="jumpPage('数据资源')">
<div class="img sj"></div>
<div class="name">数据资源</div>
<div class="sl">
<span class="num">{{ sjNum || 0 }}</span>
</div>
</div>
</div>
<div class="item" @click="jumpPage('知识库')">
<div class="img zs"></div>
<div class="name">知识库</div>
<div class="sl">
<span class="num">{{ zsNum || 0 }}</span>
</a-tooltip>
<a-tooltip>
<template #title>点击进入知识库</template>
<div class="item" @click="jumpPage('知识库')">
<div class="img zs"></div>
<div class="name">知识库</div>
<div class="sl">
<span class="num">{{ zsNum || 0 }}</span>
</div>
</div>
</div>
</a-tooltip>
</div>
</template>
<script setup>

View File

@ -32,9 +32,9 @@
<div class="img" :class="item.imgType"></div>
</div>
<div class="item-right">
<div class="fw" v-if="select == '浏览量'">
<!-- <div class="fw" v-if="select == '浏览量'">
{{ select }}:{{ item.visits }}
</div>
</div> -->
<div class="fw" v-if="select == '申请量'">
{{ select }}:{{ item.applyCount }}
</div>
@ -139,7 +139,7 @@
path: '/DetailsPageconetent',
query: {
// select: '',
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB,
},
})
}

View File

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

View File

@ -1,8 +1,8 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-23 16:41:49
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-07-04 17:53:27
* @LastEditors: Light
* @LastEditTime: 2022-10-13 16:40:15
* @Description: 告诉大家这是什么
-->
<template>
@ -32,21 +32,21 @@
import HomeFooter from '@/views/newHome/components/Footer'
</script>
<style lang="less" scoped>
@font-face {
font-family: 'text-typeface';
src: url('~@/assets/newHome/font/text-typeface.otf');
}
@font-face {
font-family: 'num-typeface';
src: url('~@/assets/newHome/font/num-typeface.otf');
}
.newHome {
font-family: text-typeface;
.num {
font-family: num-typeface;
}
}
.resource-aggregation {
background: #fff;
@font-face {
font-family: 'text-typeface';
src: url('~@/assets/newHome/font/text-typeface.otf');
}
@font-face {
font-family: 'num-typeface';
src: url('~@/assets/newHome/font/num-typeface.otf');
}
.newHome {
font-family: text-typeface;
.num {
font-family: num-typeface;
}
}
.resource-aggregation {
background: #fff;
}
</style>

View File

@ -1,24 +1,12 @@
<template>
<div class="form-container">
<AbilityApplication
:refObj="refObj"
v-if="showType === '能力申请'"
></AbilityApplication>
<PutOnTheShelf
:refObj="refObj"
v-else-if="showType === '能力上架'"
></PutOnTheShelf>
<OffTheShelf
:refObj="refObj"
v-else-if="showType === '能力下架'"
></OffTheShelf>
<DeviceApplyDetail v-if="showType === '设备申请'" :refObj="refObj"></DeviceApplyDetail>
<div class="form-container" v-else>
<AbilityApplication :refObj="refObj" v-if="showType === '能力申请'"></AbilityApplication>
<PutOnTheShelf :refObj="refObj" v-else-if="showType === '能力上架'"></PutOnTheShelf>
<OffTheShelf :refObj="refObj" v-else-if="showType === '能力下架'"></OffTheShelf>
<Demand :refObj="refObj" v-else-if="showType === '能力需求'"></Demand>
<Comment :refObj="refObj" v-else-if="showType === '需求评论'"></Comment>
<OtherApplications :refObj="refObj" v-else></OtherApplications>
<!-- <div class="title">流程图</div>
<div>
<img :src="getResourceURL()" alt="" />
</div> -->
<div>
<div class="title">审批详情</div>
<template v-for="item in dataSource.data" :key="item">
@ -35,219 +23,222 @@
</div>
</template>
<script setup>
import AbilityApplication from './AbilityApplication.vue'
import PutOnTheShelf from './PutOnTheShelf .vue'
import OffTheShelf from './OffTheShelf.vue'
import Demand from './Demand.vue'
import Comment from './Comment.vue'
import OtherApplications from '@/views/personalCenter/components/OtherApplications '
import { onMounted, reactive, defineProps, ref } from 'vue'
import Cookies from 'js-cookie'
// import { baseURL } from '@/config'
import qs from 'qs'
import {
getApplyForm,
getTaskHandleDetailInfo,
getDemandForm,
nengliziyuanshangjiaapply,
getTaskVariables,
} from '@/api/personalCenter'
import { selectOneDel } from '@/api/home'
const props = defineProps({
processDefinitionName: { type: String, default: null },
businessKey: { type: String, default: null },
processInstanceId: { type: String, default: null },
resourceId: { type: String, default: null },
refObj: { type: Object, default: null },
showType: { type: String, default: null },
})
const refObj = ref({})
const showType = ref('')
// eslint-disable-next-line vue/no-setup-props-destructure
refObj.value = props.refObj
// eslint-disable-next-line vue/no-setup-props-destructure
showType.value = props.showType
//
const dataSource = reactive({ data: [] })
// console.log(props.refObj, '---------------------------------------')
import AbilityApplication from './AbilityApplication.vue'
import PutOnTheShelf from './PutOnTheShelf .vue'
import OffTheShelf from './OffTheShelf.vue'
import Demand from './Demand.vue'
import Comment from './Comment.vue'
import DeviceApplyDetail from './DeviceApplyDetail.vue'
import OtherApplications from '@/views/personalCenter/components/OtherApplications '
import { onMounted, reactive, defineProps, ref } from 'vue'
import Cookies from 'js-cookie'
// import { baseURL } from '@/config'
import qs from 'qs'
import {
getApplyForm,
getTaskHandleDetailInfo,
getDemandForm,
nengliziyuanshangjiaapply,
getTaskVariables,
} from '@/api/personalCenter'
import { selectOneDel } from '@/api/home'
const props = defineProps({
processDefinitionName: { type: String, default: null },
businessKey: { type: String, default: null },
processInstanceId: { type: String, default: null },
resourceId: { type: String, default: null },
refObj: { type: Object, default: null },
showType: { type: String, default: null },
})
const refObj = ref({})
const showType = ref('')
// eslint-disable-next-line vue/no-setup-props-destructure
refObj.value = props.refObj
// eslint-disable-next-line vue/no-setup-props-destructure
showType.value = props.showType
//
const dataSource = reactive({ data: [] })
console.log('refObj------------>', refObj);
const downloadFile = (path, name) => {
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)
// console.log(props.refObj, '---------------------------------------')
const downloadFile = (path, name) => {
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 formName = reactive({
user: '',
phone: '',
unit: '',
area: '',
system: '',
scene: '',
basis: '',
id: '',
})
let shifoushizujian = ref('')
let nameNotShow = ref('')
let algorithmShow = ref('')
const dataForm = reactive({ data: {} })
const columns = [
{
title: '任务名称',
dataIndex: 'activityName',
key: 'activityName',
},
{
title: '处理人',
dataIndex: 'assigneeName',
key: 'assigneeName',
},
{
title: '任务开始时间',
dataIndex: 'startTime',
key: 'startTime',
},
{
title: '任务结束时间',
dataIndex: 'endTime',
key: 'endTime',
},
{
title: '审核意见',
dataIndex: 'comment',
key: 'comment',
},
{
title: '任务时长/秒',
dataIndex: 'durationInSeconds',
key: 'durationInSeconds',
},
]
const getInfo = () => {
console.log(props.processInstanceId, '============================')
if (props.processDefinitionName == '能力申请') {
// getTaskVariables({ taskId: props.processInstanceId }).then((res) => {
// console.log('====================>', res.data.data)
// })
}
if (props.processDefinitionName == '能力申请流程') {
getApplyForm(props.businessKey).then((res) => {
const { data } = res.data
console.log(data)
formName.user = data.user
formName.phone = data.phone
formName.unit = data.unit
formName.area = data.area
formName.system = data.system
formName.scene = data.scene
formName.enclosure = data.enclosure
formName.basis = data.basis
})
}
if (props.processDefinitionName == '能力需求申请') {
getDemandForm(props.businessKey).then((res) => {
const { data } = res.data
console.log(data)
formName.applyUserName = data.applyUserName
formName.applyUserPhone = data.applyUserPhone
formName.applyUserDeptName = data.applyUserDeptName
formName.detailsField = data.detailsField
formName.demandDetails = data.demandDetails
formName.detailsType = data.detailsType
formName.demandSubject = data.demandSubject
formName.enclosure = data.enclosure
})
}
if (props.processDefinitionName == '能力资源上架') {
// debugger
nengliziyuanshangjiaapply(props.businessKey).then((res) => {
// const { data } = res.data
dataForm.data = res.data.data.resourceDTO
if (res.data.data.resourceDTO.type == '应用资源') {
shifoushizujian.value = true
} else {
shifoushizujian.value = false
console.log(res.data.data.resourceDTO)
res.data.data.resourceDTO.infoList.forEach((val) => {
console.log(val, '111111111111111111111111')
if (val.attrValue === '智能算法') {
nameNotShow.value = true
algorithmShow.value = false
console.log(nameNotShow.value, algorithmShow.value, 'wowowo')
}
})
}
console.log('222222222222', dataForm.data)
})
}
if (props.processDefinitionName == '能力资源下架') {
// debugger
selectOneDel(props.resourceId).then((res) => {
// const { data } = res.data
dataForm.data = res.data.data
})
}
}
const getLiuZhuanInfo = () => {
const params = qs.stringify({
processInstanceId: props.processInstanceId,
})
getTaskHandleDetailInfo(params).then((res) => {
let arr = []
res.data.data.forEach((item) => {
arr.push(item)
})
dataSource.data.push([props.processInstanceId, arr])
})
}
onMounted(() => {
// getInfo()
if (props.refObj.resourceApplication) {
dataSource.data = []
for (const key in props.refObj.resourceApplication) {
if (props.refObj.resourceApplication[key].length > 0) {
props.refObj.resourceApplication[key].map((item) => {
dataSource.data.push([item.instanceId, item.taskHandleDetailInfo])
})
}
}
} else {
getLiuZhuanInfo()
}
//
const formName = reactive({
user: '',
phone: '',
unit: '',
area: '',
system: '',
scene: '',
basis: '',
id: '',
})
const getResourceURL = () => {
console.log('111111111111111111111111111111', Cookies.get('token'))
const params = qs.stringify({
token: Cookies.get('token'),
// processInstanceId: this.dataForm.processInstanceId
processInstanceId: props.processInstanceId,
})
let shifoushizujian = ref('')
let nameNotShow = ref('')
let algorithmShow = ref('')
const dataForm = reactive({ data: {} })
const columns = [
{
title: '任务名称',
dataIndex: 'activityName',
key: 'activityName',
},
{
title: '处理人',
dataIndex: 'assigneeName',
key: 'assigneeName',
},
{
title: '任务开始时间',
dataIndex: 'startTime',
key: 'startTime',
},
{
title: '任务结束时间',
dataIndex: 'endTime',
key: 'endTime',
},
{
title: '审核意见',
dataIndex: 'comment',
key: 'comment',
},
{
title: '任务时长/秒',
dataIndex: 'durationInSeconds',
key: 'durationInSeconds',
},
]
const getInfo = () => {
console.log(props.processInstanceId, '============================')
if (props.processDefinitionName == '能力申请') {
// getTaskVariables({ taskId: props.processInstanceId }).then((res) => {
// console.log('====================>', res.data.data)
// })
}
if (props.processDefinitionName == '能力申请流程') {
getApplyForm(props.businessKey).then((res) => {
const { data } = res.data
console.log(data)
formName.user = data.user
formName.phone = data.phone
formName.unit = data.unit
formName.area = data.area
formName.system = data.system
formName.scene = data.scene
formName.enclosure = data.enclosure
formName.basis = data.basis
})
}
if (props.processDefinitionName == '能力需求申请') {
getDemandForm(props.businessKey).then((res) => {
const { data } = res.data
console.log(data)
formName.applyUserName = data.applyUserName
formName.applyUserPhone = data.applyUserPhone
formName.applyUserDeptName = data.applyUserDeptName
formName.detailsField = data.detailsField
formName.demandDetails = data.demandDetails
formName.detailsType = data.detailsType
formName.demandSubject = data.demandSubject
formName.enclosure = data.enclosure
})
}
if (props.processDefinitionName == '能力资源上架') {
// debugger
nengliziyuanshangjiaapply(props.businessKey).then((res) => {
// const { data } = res.data
dataForm.data = res.data.data.resourceDTO
if (res.data.data.resourceDTO.type == '应用资源') {
shifoushizujian.value = true
} else {
shifoushizujian.value = false
console.log(res.data.data.resourceDTO)
res.data.data.resourceDTO.infoList.forEach((val) => {
console.log(val, '111111111111111111111111')
if (val.attrValue === '智能算法') {
nameNotShow.value = true
algorithmShow.value = false
console.log(nameNotShow.value, algorithmShow.value, 'wowowo')
}
})
}
console.log('222222222222', dataForm.data)
})
}
if (props.processDefinitionName == '能力资源下架') {
// debugger
selectOneDel(props.resourceId).then((res) => {
// const { data } = res.data
dataForm.data = res.data.data
})
}
}
const getLiuZhuanInfo = () => {
const params = qs.stringify({
processInstanceId: props.processInstanceId,
})
getTaskHandleDetailInfo(params).then((res) => {
let arr = []
res.data.data.forEach((item) => {
arr.push(item)
})
dataSource.data.push([props.processInstanceId, arr])
})
}
onMounted(() => {
// getInfo()
if (props.refObj.resourceApplication) {
dataSource.data = []
for (const key in props.refObj.resourceApplication) {
if (props.refObj.resourceApplication[key].length > 0) {
props.refObj.resourceApplication[key].map((item) => {
dataSource.data.push([item.instanceId, item.taskHandleDetailInfo])
})
}
}
} else {
getLiuZhuanInfo()
}
})
const getResourceURL = () => {
console.log('111111111111111111111111111111', Cookies.get('token'))
const params = qs.stringify({
token: Cookies.get('token'),
// processInstanceId: this.dataForm.processInstanceId
processInstanceId: props.processInstanceId,
})
return `${window.SITE_CONFIG.apiURL}/act/his/getInstImage?${params}`
}
return `${window.SITE_CONFIG.apiURL}/act/his/getInstImage?${params}`
}
</script>
<style scoped lang="less">
@ -255,6 +246,7 @@
height: 6rem;
overflow-y: scroll;
padding: 20px 20px 30px 20px;
.title {
font-size: 18px;
color: #000;
@ -265,20 +257,23 @@
border-left: 6px #0058e1 solid;
}
}
:deep(.ant-table-thead) > tr > .ant-table-cell {
:deep(.ant-table-thead)>tr>.ant-table-cell {
background: #0087ff;
color: #fff;
border: none;
text-align: center;
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;
// display: inline-block;
// white-space: nowrap;
// overflow: hidden;
// text-overflow: ellipsis;
}
.oddNumbers {
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>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -19,7 +19,7 @@
@confirm="endThis"
@cancel="cancel"
>
<a-button type="primary" danger>流程终止</a-button>
<a-button type="primary" danger>撤回申请</a-button>
</a-popconfirm>
<div v-else></div>
</div>
@ -54,10 +54,10 @@
const endThis = () => {
endProcess({ instanceId: props.refObj.processInstanceId }).then((res) => {
if (res.data.code == 0) {
message.success('流程终止成功!')
message.success('撤回申请成功!')
mybus.emit('closeModal', { type: '能力上架', index: 2 })
} else {
message.warning('流程终止失败!')
message.warning('撤回申请失败!')
}
})
}

View File

@ -1,136 +1,157 @@
<template>
<div id="aside-menu-container">
<a-menu
id="aside-menu"
v-model:openKeys="openKeys"
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:
selectedKeys == item.key
? 'url(' + item.imgActive + ')'
: 'url(' + item.img + ')',
}"
></i>
<a-menu id="aside-menu" v-model:openKeys="openKeys" 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:
selectedKeys == item.key
? 'url(' + item.imgActive + ')'
: 'url(' + item.img + ')',
}"></i>
<span>{{ item.title }}</span>
</a-menu-item>
</a-menu>
</div>
</template>
<script>
import { defineComponent, ref } from 'vue'
import mybus from '@/myplugins/mybus'
export default defineComponent({
components: {},
import { defineComponent, ref, onMounted } from 'vue'
import mybus from '@/myplugins/mybus'
setup() {
const menuList = [
{
title: '申购车',
img: require('@/assets/personalCenter/demand.png'),
imgActive: require('@/assets/personalCenter/demandactive.png'),
key: 'PurchaseVehicle',
},
{
title: '我的发布',
img: require('@/assets/personalCenter/push.png'),
imgActive: require('@/assets/personalCenter/pushactive.png'),
key: 'push',
},
{
title: '我的申请',
img: require('@/assets/personalCenter/apply.png'),
imgActive: require('@/assets/personalCenter/applyactive.png'),
key: 'apply',
},
{
title: '我的收藏',
img: require('@/assets/personalCenter/collect.png'),
imgActive: require('@/assets/personalCenter/collectactive.png'),
key: 'collect',
},
{
title: '我的浏览',
img: require('@/assets/personalCenter/recent.png'),
imgActive: require('@/assets/personalCenter/recentactive.png'),
key: 'recent',
},
{
title: '我的需求',
img: require('@/assets/personalCenter/demand.png'),
imgActive: require('@/assets/personalCenter/demandactive.png'),
key: 'demand',
},
{
title: '我的评论',
img: require('@/assets/personalCenter/remark.png'),
imgActive: require('@/assets/personalCenter/remarkactive.png'),
key: 'remark',
},
]
const selectedKeys = ref(['PurchaseVehicle'])
const type = JSON.parse(window.sessionStorage.getItem('type'))
if (type) {
selectedKeys.value = [type]
}
const handleClick = (item) => {
console.log('click', item)
mybus.emit('tabsChange', item)
}
export default defineComponent({
components: {},
setup() {
const itShowXiHaiAn = whoShow.itShowXiHaiAn;
const car = {
title: '申购车',
img: require('@/assets/personalCenter/demand.png'),
imgActive: require('@/assets/personalCenter/demandactive.png'),
key: 'PurchaseVehicle',
}
const apply = {
title: '我的申请',
img: require('@/assets/personalCenter/apply.png'),
imgActive: require('@/assets/personalCenter/applyactive.png'),
key: 'apply',
}
let menuList = [
car,
{
title: '我的发布',
img: require('@/assets/personalCenter/push.png'),
imgActive: require('@/assets/personalCenter/pushactive.png'),
key: 'push',
},
apply,
{
title: '我的收藏',
img: require('@/assets/personalCenter/collect.png'),
imgActive: require('@/assets/personalCenter/collectactive.png'),
key: 'collect',
},
{
title: '我的浏览',
img: require('@/assets/personalCenter/recent.png'),
imgActive: require('@/assets/personalCenter/recentactive.png'),
key: 'recent',
},
{
title: '我的需求',
img: require('@/assets/personalCenter/demand.png'),
imgActive: require('@/assets/personalCenter/demandactive.png'),
key: 'demand',
},
{
title: '我的评论',
img: require('@/assets/personalCenter/remark.png'),
imgActive: require('@/assets/personalCenter/remarkactive.png'),
key: 'remark',
},
]
// 西
if (itShowXiHaiAn) {
menuList = [car, apply]
}
const selectedKeys = ref(['apply'])
return {
menuList,
selectedKeys,
handleClick,
const type = JSON.parse(window.sessionStorage.getItem('type'))
if (type) {
selectedKeys.value = [type]
console.log('selectedKeys------------>', selectedKeys);
}
const handleClick = (item) => {
console.log('click', item)
mybus.emit('tabsChange', item)
}
onMounted(() => {
if (itShowXiHaiAn) {
handleClick(menuList[0])
} else {
if (type) {
console.log('type---------->', type)
let _obj = menuList.find(v => v.key == type)
handleClick(_obj)
} else {
if (menuList[1]) {
handleClick(menuList[1])
}else {
handleClick(menuList[0])
}
}
}
},
})
})
return {
menuList,
selectedKeys,
handleClick,
}
},
})
</script>
<style lang="less" scoped>
#aside-menu-container {
margin-top: 20px;
height: 790px;
overflow-y: scroll;
overflow-x: hidden;
#aside-menu-container {
margin-top: 20px;
height: 790px;
overflow-y: scroll;
overflow-x: hidden;
:deep(.ant-menu-item) {
height: 60px;
font-size: 16px;
color: #333;
&:hover {
color: #0087ff;
background-color: #edf4fc;
}
}
:deep(.ant-menu-title-content) {
display: flex;
align-items: center;
.icon {
display: block;
width: 24px;
height: 24px;
background: no-repeat center;
margin-right: 30px;
}
}
:deep(.ant-menu-item-selected) {
background-color: #edf4fc;
:deep(.ant-menu-item) {
height: 60px;
font-size: 16px;
color: #333;
&:hover {
color: #0087ff;
&::after {
display: none;
}
background-color: #edf4fc;
}
}
#aside-menu-container::-webkit-scrollbar {
width: 0 !important;
:deep(.ant-menu-title-content) {
display: flex;
align-items: center;
.icon {
display: block;
width: 24px;
height: 24px;
background: no-repeat center;
margin-right: 30px;
}
}
:deep(.ant-menu-item-selected) {
background-color: #edf4fc;
color: #0087ff;
&::after {
display: none;
}
}
}
#aside-menu-container::-webkit-scrollbar {
width: 0 !important;
}
</style>

View File

@ -10,7 +10,7 @@
<!-- <on-the-right-side-of-the-list
v-if="showFlag === 'collect'"
></on-the-right-side-of-the-list> -->
<my-apply v-if="showFlag === 'apply'"></my-apply>
<my-apply v-if="showFlag === 'apply'" :tabTypeName="tabTypeName"></my-apply>
<my-publish v-if="showFlag === 'push'"></my-publish>
<purchase-vehicle
v-if="showFlag === 'PurchaseVehicle'"
@ -38,7 +38,9 @@
import Collection from '@/views/personalCenter/components/Collection'
import mybus from '@/myplugins/mybus'
import { onBeforeUnmount, ref } from 'vue'
import { useRouter } from 'vue-router'
const router = useRouter()
let tabTypeName = ref(router.currentRoute.value.query.tabTypeName || '')
const type = JSON.parse(window.sessionStorage.getItem('type'))
const showFlag = ref('PurchaseVehicle')
if (type) {
@ -48,7 +50,7 @@
const delFlag = ref(true)
mybus.on('tabsChange', (e) => {
console.log('进入详情', e)
if (e.flag) {
if (e && e.flag) {
delFlag.value = false
} else {
console.log('tabsChange', e.key)