Compare commits

..

517 Commits

Author SHA1 Message Date
wuhongjian ce685dfb36 演示版本修改 2022-11-08 17:09:46 +08:00
gongjiale 2b972db97f Merge branch 'hi-ucs-pre' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-pre 2022-11-04 18:29:22 +08:00
gongjiale 399355bd63 提交代码 2022-11-04 18:29:09 +08:00
wuhongjian fa809a37e0 Merge branch 'hi-ucs-pre' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-pre 2022-11-04 17:46:04 +08:00
wuhongjian 4c1c3ff628 需求新增 2022-11-04 17:46:03 +08:00
unknown 37aa68ba7a 错别字修改 2022-11-04 17:34:23 +08:00
a0049873 ac7f284645 默认选中视频资源 2022-11-04 16:12:53 +08:00
a0049873 f7becc09f5 能力超市左侧 2022-11-04 16:00:41 +08:00
a0049873 42bba89d54 应用系统上架 2022-11-04 10:02:57 +08:00
a0049873 f25e57e9b1 详情页添加标签 2022-11-03 17:15:53 +08:00
a0049873 0941a3c92b Merge branch 'hi-ucs-pre' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-pre 2022-11-03 14:50:58 +08:00
a0049873 df915acc06 演示版本 门户 2022-11-03 14:50:49 +08:00
guoyue c19e1ac231 Merge branch 'hi-ucs-pre' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-pre 2022-11-03 14:50:18 +08:00
guoyue 02de5ba910 能力标签化调整 2022-11-03 14:50:13 +08:00
a0049873 b10158ce02 Merge branch 'hi-ucs-pre' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-pre 2022-11-03 14:46:30 +08:00
a0049873 63267ed67e 演示版本 2022-11-03 14:46:20 +08:00
gongjiale e915396532 11.03修改 2022-11-03 14:42:39 +08:00
unknown 9ae72f0b9d 能力盘点弹窗修改 2022-11-03 14:20:51 +08:00
guoyue d21697d3aa 标签化:标签体系构建调整 2022-11-03 09:47:59 +08:00
a0049873 c463250fae 能力分类 2022-11-02 18:11:20 +08:00
a0049873 96b3f3197e 演示版本 2022-11-02 18:06:57 +08:00
guoyue 492360166c 能力标签化:样式调整 2022-11-02 16:07:01 +08:00
guoyue a6a7d467e6 Merge branch 'hi-ucs-pre' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-pre 2022-11-02 15:58:35 +08:00
guoyue a157cc24e7 完成能力标签化--标签目录管理 2022-11-02 15:58:31 +08:00
a0049873 759cc667f6 BUG修改 2022-11-02 15:13:07 +08:00
unknown 9d4aa897ee Merge branch 'hi-ucs-pre' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-pre 2022-11-02 15:02:32 +08:00
unknown 9a5b1732c5 能力盘点系统修改 2022-11-02 15:02:10 +08:00
a0049873 cab45f5558 Merge branch 'hi-ucs-pre' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-pre 2022-11-02 14:34:18 +08:00
a0049873 97e17115c4 能力溯源统计分析 2022-11-02 14:34:01 +08:00
gongjiale 562c57e783 Merge branch 'hi-ucs-pre' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-pre
# Conflicts:
#	front/src/views/newHome/components/Navigation.vue
2022-11-02 14:13:59 +08:00
gongjiale 2689f95272 1.完成能力溯源统计分析添加CIS图层弹出框的开发工作 2022-11-02 14:11:59 +08:00
gongjiale 5ecd94df32 三个页面开发 2022-11-02 14:09:42 +08:00
a0049873 962740bde6 Merge branch 'hi-ucs-pre' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-pre 2022-11-02 14:03:53 +08:00
a0049873 ca603957cb 门户需求修改 2022-11-02 14:03:38 +08:00
gongjiale ef095da37f Merge branch 'hi-ucs-pre' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-pre 2022-11-02 10:54:31 +08:00
gongjiale 952db84e29 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-pre 2022-11-02 09:06:27 +08:00
guoyue 14cac6c190 Merge branch 'hi-ucs-pre' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-pre 2022-11-01 18:06:10 +08:00
guoyue 14813c1f4d 能力标签相关更改 2022-11-01 18:06:00 +08:00
unknown e4cdac8bb9 服务详情收藏错误 2022-11-01 18:05:32 +08:00
unknown af4ba480cb 系统名称修改 2022-11-01 16:54:38 +08:00
unknown d4d2b06e1d 能力融合系统修改 2022-11-01 16:52:48 +08:00
gongjiale 6eae78fd3b 修改 2022-11-01 16:13:46 +08:00
gongjiale fc74f6a769 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-11-01 15:55:16 +08:00
gongjiale 27cb8bd7d3 修改 2022-11-01 15:54:53 +08:00
wuhongjian 47ba0c8b14 Merge branch 'hi-ucs-pre' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-pre 2022-11-01 15:37:24 +08:00
wuhongjian c6c2fa57cc 省厅修改 2022-11-01 15:36:50 +08:00
a0049873 72229ea4fb 修改城市云脑顺序 2022-11-01 15:35:30 +08:00
guoyue 5c6ad1a4eb Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-11-01 15:22:12 +08:00
guoyue 0dc6bb2012 我的待办-能力资源上架,按钮样式调整为统一样式 2022-11-01 15:21:58 +08:00
a0049873 c8813f9688 能力申请添加默认审批意见 2022-11-01 15:00:51 +08:00
a0049873 b755a35565 能力申请加部门名称 2022-11-01 14:59:31 +08:00
a0049873 3950122864 全局搜索功能优化 2022-11-01 14:41:17 +08:00
a0049873 33e9cfe960 修改表格宽度 2022-11-01 14:32:01 +08:00
a0049873 2a2eb0fbc3 调换首页应用资源位置 2022-11-01 13:56:55 +08:00
a0049873 4281bc5156 后台-能力挂接-组件服务:查不到数据的时候就正常展示暂无数据就可以,没必要这样提示 2022-11-01 10:43:16 +08:00
a0049873 abd89f6eeb Merge branch 'hi-ucs-pre' into release
# Conflicts:
#	back/public/config/basicConfig.js
2022-11-01 09:20:18 +08:00
a0049873 9eba41250e Merge branch 'hi-ucs-dev' into hi-ucs-pre
# Conflicts:
#	back/public/config/basicConfig.js
#	back/src/i18n/zh-CN.js
2022-11-01 09:15:57 +08:00
a0049873 ad6a1c14de BUg修改 2022-10-31 20:23:26 +08:00
a0049873 493151d9f0 BUG修改 2022-10-31 19:45:21 +08:00
wuhongjian abc8bf3dd5 省厅版本 2022-10-31 19:00:55 +08:00
gongjiale 61bb1291c2 后台-权限管理-用户管理:去掉多余的操作按钮 2022-10-31 18:10:48 +08:00
gongjiale d130bcf1aa Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-31 17:47:56 +08:00
gongjiale 2156e70433 左侧树修改 2022-10-31 17:47:38 +08:00
unknown 1ad52d954c bug修改,我的申请 2022-10-31 16:29:19 +08:00
a0049873 15426bccdc 能力申请 应用系统对接 2022-10-31 16:03:12 +08:00
guoyue 76a7be9f48 部门管理增加分页功能 2022-10-31 14:56:33 +08:00
gongjiale 511f4690c1 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-31 14:50:38 +08:00
a0049873 3c134e0949 添加查看全部 2022-10-31 14:39:30 +08:00
unknown a680dbaa74 能力挂接菜单修改 2022-10-31 14:15:11 +08:00
guoyue 50c2d6264d renren-admin改为ucs-admin 2022-10-31 14:08:04 +08:00
guoyue 5f155dc69a 更改图片字段 2022-10-31 14:07:39 +08:00
a0049873 97eaa4e9d2 数字资源能力一本账 2022-10-31 11:41:22 +08:00
guoyue b67fa140cf 能力标签管理 2022-10-31 09:35:52 +08:00
guoyue b6f26564c4 后台:能力标签管理 2022-10-31 09:18:49 +08:00
guoyue e0f0365dab Merge branch 'hi-ucs-pre' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-pre 2022-10-29 16:43:22 +08:00
guoyue 4341f143f4 增加能力标签管理 2022-10-29 16:43:17 +08:00
gongjiale 3180324cd2 发布时间 2022-10-29 16:33:42 +08:00
gongjiale 7e53463eaf 三个页面 2022-10-29 16:26:39 +08:00
guoyue 2774650d96 新手指南--资源下架跳转到我的发布 2022-10-28 17:04:37 +08:00
gongjiale 90237e4f6d Merge branch 'hi-ucs-pre' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-28 16:40:35 +08:00
gongjiale 23a885e051 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-28 16:39:20 +08:00
gongjiale 6967b3f1da 1.完成能力集市:基础设施-会客厅,字数太多时,展示不美观的问题;
2.完成融合服务:打包模式,点击发布时间,只能按照正序排,不能按照倒序排列的问题;
3完成.融合服务:打包模式,点击收藏量,只能按照正序排,不能按照倒序排列的问题
2022-10-28 16:37:48 +08:00
unknown dd38eba69b Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-28 15:27:07 +08:00
unknown 7e6fb8417a 系统标题修改 2022-10-28 15:25:03 +08:00
guoyue 04a2f613e8 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-28 14:57:28 +08:00
guoyue 43bc0dd992 我的统计:修改为日期选择器 2022-10-28 14:57:23 +08:00
wuhongjian ed6a7e85b2 bug修复 2022-10-28 13:59:44 +08:00
wuhongjian 04fcdfde08 bug修复 2022-10-28 13:58:53 +08:00
guoyue 2f34e4acbc 合并 2022-10-27 19:39:34 +08:00
guoyue cc00873328 我的申请:查看详情按钮位置调整 2022-10-27 19:33:42 +08:00
a0049873 fbcd40f2a6 BUG修改 2022-10-27 18:05:28 +08:00
a0049873 f837060104 BUG修改 2022-10-27 17:39:40 +08:00
wuhongjian 9a2c2c07d1 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-27 15:48:26 +08:00
wuhongjian 09d56091fa 测试问题修复 2022-10-27 15:48:24 +08:00
guoyue 7e0cebdda3 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-27 15:05:29 +08:00
guoyue c1da555ceb 西海岸:摄像头提示文字预览视频更改为观看视频 2022-10-27 15:04:49 +08:00
a0049873 140f927763 工作台逻辑修改 2022-10-27 15:03:21 +08:00
guoyue 3e310fb7ea 合并 2022-10-27 14:40:35 +08:00
guoyue a864842957 能力统计:查询按钮样式更改 2022-10-27 14:33:59 +08:00
guoyue e29e0f0526 算法广场和能力广场容错处理pic为空 2022-10-27 13:50:29 +08:00
guoyue 3e1b6b8a22 修复 需求中心:需求申请时,应用领域无法进行选择 2022-10-27 13:47:19 +08:00
a0049873 f36e2bbffc BUG修改 2022-10-27 11:44:25 +08:00
a0049873 4930027d67 能力上架 新增转办功能 2022-10-27 10:50:09 +08:00
guoyue 46ad5e747d 算法广场和gis广场 传参参数更改 2022-10-26 20:28:58 +08:00
guoyue 5132d3ec60 算法广场兼容 2022-10-26 20:10:06 +08:00
guoyue b61722857d Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-26 19:40:10 +08:00
guoyue 6b509a61d2 后台-能力统计-非明细页面:建议隐藏掉右下角的分页 2022-10-26 19:39:42 +08:00
gongjiale c5e48f69f5 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-26 19:11:03 +08:00
gongjiale 474292f532 能力上架 2022-10-26 19:10:52 +08:00
guoyue 355ee77e79 fix:算法广场和GIS广场图片bug 2022-10-26 17:10:15 +08:00
guoyue fef67d9cc4 门户:新手指引:能力下架,跳转页面不对,应该跳转到我的申请-上架能力页面 2022-10-26 16:25:44 +08:00
gongjiale 98bdfd71f3 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-26 15:06:09 +08:00
a0049873 1e3b315d35 BUg修改 2022-10-26 15:04:55 +08:00
gongjiale 4ed1d18cb3 能力统计修改 2022-10-26 15:04:12 +08:00
guoyue 82718e3d02 合并 2022-10-26 15:03:29 +08:00
guoyue d28628f35a fix:消息跳转获取列表bug 2022-10-26 15:01:54 +08:00
a0049873 ccebe3d09c Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-26 14:49:14 +08:00
a0049873 3ef7da2d6c 金宏网-能力统计:资源申请量,点击跳转时,应该跳转到后台管理的能力统计-能力使用sheet页 2022-10-26 14:49:00 +08:00
a0049873 94a940a1ab 金宏网-能力统计:资源申请量,点击跳转时,应该跳转到后台管理的能力统计-能力使用sheet页 2022-10-26 14:48:37 +08:00
gongjiale c6313796bb 修改能力统计分页查询问题 2022-10-26 14:47:08 +08:00
a0049873 42b7ec1129 BUG修改 2022-10-26 14:35:32 +08:00
guoyue f93550990f 用户管理-区域搜索:输入框设置为只读 2022-10-26 14:05:05 +08:00
guoyue 76e1fb7e1b 后台管理--隐藏切换语言按钮 2022-10-26 11:07:08 +08:00
guoyue 4c77943db2 后台管理:隐藏切换主题颜色按钮 2022-10-26 11:03:51 +08:00
guoyue c65dac78ea 后台站内--通知管理:消息列表增加消息内容 2022-10-26 10:59:47 +08:00
a0049873 330f8de5e4 全局搜索 搜索逻辑修改 2022-10-26 10:39:32 +08:00
guoyue 02925c3282 后台管理—能力统计,导出 按钮样式更改 2022-10-26 10:26:36 +08:00
a0049873 d8a08c6470 基础设施 去表格 2022-10-26 09:56:05 +08:00
wuhongjian 00e4e9671b Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-26 09:38:13 +08:00
wuhongjian c634d85688 去掉视频资源列表 2022-10-26 09:38:11 +08:00
a0049873 1f727a6cbd 修改会议室默认图片 2022-10-26 09:37:47 +08:00
a0049873 b600caa357 添加admin权限 2022-10-26 09:19:01 +08:00
guoyue 5fea910701 合并 2022-10-25 18:00:40 +08:00
guoyue 05899ab616 能力分类进入能力集市,应用领域有选中时,展开 2022-10-25 17:53:17 +08:00
guoyue b561eff3ea 查看详情按钮样式更改 2022-10-25 17:52:39 +08:00
guoyue 24dc1d09cd 更改气泡提示框按钮样式居中显示(全局更改) 2022-10-25 17:52:04 +08:00
guoyue 7ff2d13afe 算法广场,GIS广场接口里联调 2022-10-25 17:51:39 +08:00
a0049873 983b2c0534 更改头部样式 2022-10-25 15:11:47 +08:00
wuhongjian 8f33c9f375 bug修复 2022-10-25 11:30:05 +08:00
a0049873 5cbeba19b8 会议室列表 2022-10-25 10:58:25 +08:00
a0049873 b30a72555f 判断用户后台权限 2022-10-25 09:48:40 +08:00
wuhongjian 11b42afde3 一键组会内容添加 2022-10-25 09:21:38 +08:00
guoyue 79ee811854 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-24 17:44:26 +08:00
guoyue 1a40a09286 算法广场和GIS广场增加区域筛选,api待联调 2022-10-24 17:44:10 +08:00
guoyue e4437ac420 fix: 能力运行监控:API异常分析 清楚初始化数据 2022-10-24 16:18:43 +08:00
a0049873 0726f4a927 添加角色控制 2022-10-24 15:20:58 +08:00
a0049873 8a31a4e285 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-24 14:54:14 +08:00
a0049873 314b68b3a3 静态数据 2022-10-24 14:54:03 +08:00
guoyue 99f57e3335 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-24 14:30:12 +08:00
guoyue f6eca9013c fix:后台-权限管理-用户管理--外面的搜索框点重置后,搜索框内内容还存在 2022-10-24 14:29:56 +08:00
wuhongjian 84f1b03c42 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-24 14:26:25 +08:00
wuhongjian aaa16a1105 bug修复 2022-10-24 14:26:22 +08:00
a0049873 e1a805d4bd 客户端下载 2022-10-24 14:12:35 +08:00
a0049873 98a420f0c3 接口文件 2022-10-24 13:50:23 +08:00
a0049873 52be0acd83 一键组会 2022-10-24 11:28:37 +08:00
wuhongjian a8aba6b4f1 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-24 09:51:40 +08:00
wuhongjian e0481ba5a5 配置更新 2022-10-24 09:51:37 +08:00
gongjiale 70a015cb01 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-22 15:29:52 +08:00
gongjiale 1427424073 pageWithAttrs 2022-10-22 15:29:21 +08:00
guoyue 6b1fc28b4b Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-22 14:29:55 +08:00
guoyue 49b41ce8e6 修复后台-权限管理-用户管理:搜索bug 2022-10-22 14:29:43 +08:00
guoyue b226e777f7 西海岸:增加我的发布侧边栏 2022-10-22 14:29:18 +08:00
a0049873 30328e575d 视频会议 2022-10-22 11:08:52 +08:00
a0049873 a296f5a0d6 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-21 17:32:59 +08:00
a0049873 7e9108e7d6 BUG修改 2022-10-21 17:32:45 +08:00
guoyue 0461d44c85 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-21 17:00:22 +08:00
guoyue f4a53c91b1 修复首页点击能力集市,搜索,基础设施进入能力集市,页面不显示bug 2022-10-21 17:00:09 +08:00
wuhongjian 67574732c7 bug修复 2022-10-21 16:45:53 +08:00
unknown 44da94a71e 所属部门自动搜索 2022-10-21 16:35:26 +08:00
a0049873 bd036feee2 转办功能开发 2022-10-21 16:13:01 +08:00
guoyue b5f9531943 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-21 11:47:38 +08:00
guoyue 549dda54b3 消息通知:跳转逻辑更改 2022-10-21 11:47:28 +08:00
a0049873 672e6164ba 平均分改评分 2022-10-21 10:09:59 +08:00
gongjiale ec1f832617 能力上架 2022-10-21 10:08:50 +08:00
gongjiale a9aef58f6c Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-21 09:39:15 +08:00
gongjiale 002cbdd6f0 修改能力上架 2022-10-21 09:39:00 +08:00
a0049873 1e855be058 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	back/src/views/modules/myAgent/demo/competency-application.vue
2022-10-21 09:31:33 +08:00
a0049873 82f007aa40 流转功能 2022-10-21 09:31:00 +08:00
gongjiale 30a8641929 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-20 19:56:56 +08:00
gongjiale 5d0a02a364 修改能力上架统计 2022-10-20 19:56:43 +08:00
wuhongjian 1a96e4e6a2 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-20 16:16:44 +08:00
wuhongjian 1f3116f402 开启gzip 2022-10-20 16:15:59 +08:00
guoyue ba5526d7d8 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-20 16:08:12 +08:00
guoyue 33ba30d97f 西海岸:云图视频资源数量 ,前端去掉+4 2022-10-20 16:07:56 +08:00
a0049873 188d9bb85a 流程管理员 2022-10-20 15:03:44 +08:00
a0049873 6a6d1fc473 代码格式 2022-10-20 14:52:43 +08:00
a0049873 04ad7eb6ed BUG修改 2022-10-20 14:51:16 +08:00
a0049873 fe1f6dc08d 新增委托功能 2022-10-20 14:51:02 +08:00
gongjiale 56c4393f2e Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-20 11:24:31 +08:00
gongjiale f541f61409 添加一网通览 2022-10-20 11:24:17 +08:00
a0049873 6b1c3f30a4 排行榜功能开发 2022-10-20 10:09:41 +08:00
a0049873 c6429869a4 BUG修改 2022-10-20 09:38:28 +08:00
unknown a12d0aa6ff 西海岸视频选中bug修改 2022-10-19 17:32:01 +08:00
unknown 02d70b4b8d 西海岸视频地图图标点击切换方式修改 2022-10-19 17:10:48 +08:00
guoyue 4e271b6aa7 合并冲突 2022-10-19 13:55:49 +08:00
guoyue 4d59133942 后台管理-能力统计-明细-添加分页功能 2022-10-19 13:41:02 +08:00
unknown 1a23d64064 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-19 11:50:11 +08:00
unknown 04471a122e ie浏览器提示信息 2022-10-19 11:48:31 +08:00
gongjiale 906a2aad94 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-19 11:46:47 +08:00
gongjiale b24e925c5a 西海岸问题修改 2022-10-19 11:46:29 +08:00
a0049873 e6a102ce3f 添加隐藏空数据功能 2022-10-19 11:32:09 +08:00
gongjiale 7a0d2ba101 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-19 10:45:54 +08:00
gongjiale 55398620f0 首页跳转问题修改 2022-10-19 10:45:15 +08:00
guoyue 2af92a6f8f 西海岸-基础设施:在线视频预览,弹出视频窗口,改成鼠标放上后给出tips“请申请后再预览”,弹框标题增加提示信息 2022-10-19 10:20:09 +08:00
a0049873 d3466d4521 调整列表高度 2022-10-18 19:42:57 +08:00
wuhongjian 2258b05184 bug修复 2022-10-18 17:44:46 +08:00
guoyue 3f22be0d8d Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-18 15:52:16 +08:00
guoyue cdb47c705b 西海岸:基础设施--获取摄像头增加远雄url 2022-10-18 15:52:07 +08:00
guoyue 2ee2d988cc 西海岸:基础设施左侧树,只有一个父级菜单的时候,默认展开第一级 2022-10-18 15:51:23 +08:00
wuhongjian 107e6205a2 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-18 15:48:40 +08:00
wuhongjian 8e6fac427b 菜单栏bug修复 2022-10-18 15:48:34 +08:00
a0049873 c41028ffaa 能力统计导出功能 2022-10-18 15:42:53 +08:00
wuhongjian a139bd809b bug修复 2022-10-18 15:35:14 +08:00
wuhongjian b13577d4b4 bug修复 2022-10-18 15:34:46 +08:00
wuhongjian e96c0c11b1 bug修复 2022-10-18 15:23:33 +08:00
wuhongjian 3f6e432d0b Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-18 15:15:41 +08:00
wuhongjian 811e80a27c bug修复 2022-10-18 15:14:50 +08:00
unknown 71041b60f2 申请审批完成后待办任务数不刷新问题 2022-10-18 15:10:01 +08:00
guoyue a7ac2e8a1e Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-18 14:12:26 +08:00
guoyue 42af2e980b 西海岸:基础设施-视频离线-预览按钮禁用 2022-10-18 14:11:52 +08:00
guoyue dd100d3867 西海岸-基础设施:点击消息通知列表中的数据,跳转到流程详情页面 2022-10-18 14:11:20 +08:00
unknown 05964a73e8 西海岸摄像头已申请列表添加新字段 2022-10-18 13:52:44 +08:00
a0049873 c5fc29a498 能力统计-部门数:金字塔设计修改 2022-10-18 11:12:01 +08:00
guoyue 5f3aad2539 西海岸:点击图标进入首页增加权限判断 2022-10-18 10:45:40 +08:00
guoyue 2ebec87514 西海岸:开发公安局申请 附件上传为必填 2022-10-17 17:21:18 +08:00
guoyue 0974118d3b Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-17 16:01:20 +08:00
guoyue adf964a400 能力申请:有附件的时候提供附件下载功能 2022-10-17 16:01:03 +08:00
guoyue 8db5b8bee5 西海岸:设备审批 增加审核时间和创建时间 2022-10-17 16:00:37 +08:00
a0049873 21431958f0 宽度 2022-10-17 14:49:21 +08:00
guoyue b66a781b81 我的待办:设备审批增加 设备名称显示字段 2022-10-17 14:39:29 +08:00
guoyue 587c728a74 我的申请--申请详情 样式调整 2022-10-17 14:16:32 +08:00
guoyue ea2afd08c9 合并冲突 2022-10-17 14:16:00 +08:00
guoyue e0bde554b9 西海岸:流程已终止更改判断条件 2022-10-17 14:01:05 +08:00
guoyue 98d1b070ab 西海岸:我的申请-设备申请单兵无人机详情增加名称显示 2022-10-17 14:00:44 +08:00
guoyue 5ac06ce8d6 西海岸:申购车删除批量删除id参数更改 2022-10-17 14:00:16 +08:00
unknown f20aac7430 数组对象监控属性修改 2022-10-17 13:48:23 +08:00
unknown e26937bc37 穿梭框重写 2022-10-17 13:38:46 +08:00
a0049873 4d65cc11e9 能力申请 1条消息时隐藏 展开按钮,审批详情 添加处理部门 2022-10-17 10:19:27 +08:00
a0049873 2c1070d4e2 访客模式 2022-10-17 09:43:35 +08:00
guoyue 29ace46c69 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-14 17:36:59 +08:00
guoyue fe85cd370f 西海岸-基础设施:无人机、单兵申请成功后,页面应该返回无人机页面 2022-10-14 17:36:46 +08:00
guoyue 0d402302f7 西海岸-基础设施:无人机、单兵申请成功后,页面应该返回无人机页面 2022-10-14 17:34:35 +08:00
guoyue 34ac0b016b 西海岸:我的申请-能力申请列表增加过期时间的显示 2022-10-14 17:08:54 +08:00
guoyue 4354abdf25 西海岸-视频资源申请-列表中包含西海岸开发分局添加申请附件个模板下载 2022-10-14 15:40:14 +08:00
gongjiale 033e123edc Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-10-14 15:39:35 +08:00
gongjiale 2484cda43d 1.完成能力统计-能力上架统计:查看详情,任务开始时间、任务结束时间不转行;
2.完成能力统计-能力上架统计:搜索条件中的状态和列表中的状态请保持一致
2022-10-14 15:39:18 +08:00
guoyue 9c8785b8ce 西海岸-我的申请:查看详情界面,流程终止后,提示该流程终止 2022-10-14 14:20:45 +08:00
guoyue e34f47680b 西海岸:单兵和无人机设备申请,申请成功,前端提示文字 2022-10-14 14:20:23 +08:00
guoyue a71fc5326e 西海岸:我的申请--详情更改任务时长取值显示 2022-10-14 11:40:22 +08:00
guoyue 9bba3077ca 西海岸:我的申请--详情去掉期望效果字段 2022-10-14 11:39:41 +08:00
guoyue 4580df0182 西海岸:修复我的申请-能力上架名称不显示问题 2022-10-14 11:39:06 +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
a0049873 6ef87c3c79 广场新增删选条件 2022-09-19 10:19:31 +08:00
guoyue de605dd446 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-09-16 16:45:53 +08:00
guoyue 1b26210e01 去掉能力集市-浏览量排序 2022-09-16 16:44:26 +08:00
851673013@qq.com f2e68d0105 能力申请单位 2022-09-16 15:15:03 +08:00
guoyue dfba732000 展厅dev环境 2022-09-13 18:04:46 +08:00
guoyue 0661a53d79 强制使用谷歌或者火狐浏览器 2022-09-13 18:04:33 +08:00
guoyue fb0a5e1f38 退出登录,移除本地查询条件 2022-09-13 18:04:12 +08:00
guoyue 31a809f9d9 赋能场景存储查询条件 2022-09-13 18:03:55 +08:00
guoyue 90a3aa8e37 能力云图增加返回按钮 2022-09-13 14:59:44 +08:00
guoyue 1cba78f8e1 融合服务,能力集市详情返回 2022-09-13 09:38:26 +08:00
guoyue 7996d8a701 强制使用谷歌浏览器 2022-09-13 09:38:00 +08:00
guoyue 1e06abbf11 融合服务更新api 2022-09-08 15:46:21 +08:00
guoyue 59abe1614c 融合服务 CIM 技术文档 包头市局西海岸都支持 2022-09-08 15:46:08 +08:00
guoyue 59cc6d93fc 部门联系人和电话改为手动填写 2022-09-08 14:37:15 +08:00
guoyue 9df17910ee fix基础设施控制台报错 2022-09-08 14:22:07 +08:00
guoyue 715792aa7d 应用资源和组件服务调换位置 2022-09-08 14:21:42 +08:00
guoyue 510e72f35e 能力集市列表 隐藏浏览量 2022-09-08 13:15:51 +08:00
guoyue 43aec16d92 融合服务支持收藏量 2022-09-08 13:12:40 +08:00
guoyue 5eefd4d306 消息列表:已读消息更改 2022-09-08 09:44:12 +08:00
guoyue 7f3c5c0921 研发开发环境 2022-09-07 14:30:00 +08:00
guoyue 84e3f220dd 开发环境 2022-09-07 14:29:06 +08:00
guoyue 2e17b5cf80 技术文档:使用手册下载 2022-09-07 14:28:52 +08:00
zhangzhuliang 205cb756be 会议室审核加下载附件按钮和输入框报错 2022-09-02 11:06:11 +08:00
gaoyuanwei c3bc043228 提示语 2022-09-01 17:56:20 +08:00
a0049873 3b09661496 v3 流程 2022-09-01 16:12:44 +08:00
gaoyuanwei 619fc10627 后台审批----附件下载 2022-09-01 14:28:09 +08:00
gaoyuanwei 2ff89ea6e4 前后台-- -- 上传附件 2022-09-01 13:50:42 +08:00
zhangzhuliang 7ff222761c 会议室增加自定义状态码 2022-09-01 09:05:28 +08:00
zhangzhuliang c1643e3cb0 会议室bug提交 2022-08-31 18:26:06 +08:00
220 changed files with 23019 additions and 12060 deletions

5
.gitignore vendored
View File

@ -1,4 +1,4 @@
back/*.zip
back/dist-西海岸-后台管理.zip
back/public/index.html
back/dist-西海岸-后台管理-带配置文件.zip
back/dist-市局-后台管理-带配置文件.zip
@ -9,4 +9,5 @@ front/public/index.html
back/dist-西海岸-后台管理-v0.8.2.1.zip
back/dist-市局-后台管理-v0.8.2.3.zip
back/dist-西海岸-后台管理-v0.8.2.4.d.zip
*.zip
*.zip
front/public/static/config/basicConfig.js

View File

@ -1,47 +1,50 @@
/*
* @Author: hisense.wuhongjian
* @Date: 2022-08-25 14:37:49
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-29 09:57:52
* @LastEditors: Light
* @LastEditTime: 2022-11-03 14:33:57
* @Description: 告诉大家这是什么
*/
var _global = {}
var CONFIGITEM = {
// version: 'qingdao', // 青岛
// version: 'xihaian', // 西海岸
version: 'test', // 测试
version: 'dev', // 测试
// version: 'frp', // 内网穿透
// version: 'dev', // 开发
// version: 'xihaian', // 开发
vNum: 'v0.8.7.2',
configData: {
// 青岛市大数据局
qingdao: {
previewUrl: 'http://15.72.183.90:7008/',
apiURL: 'http://15.72.183.90:8000/renren-admin',
websocketURL: 'ws://15.72.183.90:8000/renren-admin/websocket'
apiURL: 'http://15.72.183.90:8000/ucs-admin',
websocketURL: 'ws://15.72.183.90:8000/ucs-admin/websocket'
},
// 西海岸大数据局
xihaian: {
previewUrl: 'http://10.134.135.9:9796/',
apiURL: 'http://10.134.135.9:8888/renren-admin',
websocketURL: 'ws://10.134.135.9:8888/renren-admin/websocket'
// apiURL: 'http://10.134.135.9:8888/ucs-admin',
// apiURL: 'http://10.16.5.35:8888/ucs-admin', // 李志成-研发
apiURL: 'http://192.168.124.236:8888/ucs-admin',
// apiURL: 'http://192.168.124.254:8888/ucs-admin', // 李志成-远雄
websocketURL: 'ws://10.134.135.9:8888/ucs-admin/websocket'
},
// 测试
test: {
previewUrl: 'http://192.168.124.243:9796/',
apiURL: 'http://192.168.124.243:8888/renren-admin',
websocketURL: 'ws://192.168.124.243:8888/renren-admin/websocket'
apiURL: 'http://192.168.124.243:8888/ucs-admin',
websocketURL: 'ws://192.168.124.243:8888/ucs-admin/websocket'
},
// 内网穿透
frp: {
previewUrl: 'http://124.222.94.39:9796/',
apiURL: 'http://124.222.94.39:8888/renren-admin',
websocketURL: 'ws://124.222.94.39:8888/renren-admin/websocket'
apiURL: 'http://124.222.94.39:8888/ucs-admin',
websocketURL: 'ws://124.222.94.39:8888/ucs-admin/websocket'
},
dev: {
previewUrl: 'http://localhost:8080/',
apiURL: 'http://192.168.124.236:8888/renren-admin',
websocketURL: 'ws://192.168.124.236:8888/renren-admin/websocket'
apiURL: 'http://192.168.124.233:8888/ucs-admin',
websocketURL: 'ws://192.168.124.236:8888/ucs-admin/websocket'
}
}
}

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian
* @Date: 2022-04-11 10:11:40
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-29 09:54:59
* @LastEditTime: 2022-08-25 14:51:36
* @Description: 告诉大家这是什么
-->
<!DOCTYPE html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

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,42 +1,37 @@
<template>
<div>
<el-input v-model="showDeptName" :placeholder="placeholder" @focus="deptDialog">
<el-button slot="append" icon="el-icon-search" @click="deptDialog"></el-button>
</el-input>
<el-input :value="value" style="display: none"></el-input>
<el-dialog :visible.sync="visibleDept" width="30%" :modal="false" :title="placeholder" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form size="mini" :inline="true">
<el-form-item :label="$t('keyword')">
<el-input v-model="filterText"></el-input>
</el-form-item>
<el-form-item>
<!-- <el-button type="default">{{ $t('query') }}</el-button> -->
<el-button type="default">{{ $t('query') }}</el-button>
</el-form-item>
</el-form>
<el-tree
class="filter-tree"
:data="deptList"
:default-expanded-keys="expandedKeys"
:props="{ label: 'name', children: 'children' }"
:expand-on-click-node="false"
:filter-node-method="filterNode"
:highlight-current="true"
node-key="id"
ref="tree">
</el-tree>
<template slot="footer">
<el-button type="default" @click="cancelHandle()" size="mini">{{ $t('cancel') }}</el-button>
<el-button v-if="query" type="info" @click="clearHandle()" size="mini">{{ $t('clear') }}</el-button>
<el-button type="primary" @click="commitHandle()" size="mini">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
<el-input v-model="showDeptName" :placeholder="placeholder" @focus="deptDialog" readonly
@paste.native.capture.prevent="handlePaste">
<el-button slot="append" icon="el-icon-search" @click="deptDialog"></el-button>
</el-input>
<el-input :value="value" style="display: none"></el-input>
<el-dialog :visible.sync="visibleDept" width="30%" :modal="false" :title="placeholder" :close-on-click-modal="false"
:close-on-press-escape="false">
<el-form size="mini" :inline="true">
<el-form-item :label="$t('keyword')">
<el-input v-model="filterText"></el-input>
</el-form-item>
<el-form-item>
<!-- <el-button type="default">{{ $t('query') }}</el-button> -->
<el-button type="default">{{ $t('query') }}</el-button>
</el-form-item>
</el-form>
<el-tree class="filter-tree" :data="deptList" :default-expanded-keys="expandedKeys"
:props="{ label: 'name', children: 'children' }" :expand-on-click-node="false" :filter-node-method="filterNode"
:highlight-current="true" node-key="id" ref="tree">
</el-tree>
<template slot="footer">
<el-button type="default" @click="cancelHandle()" size="mini">{{ $t('cancel') }}</el-button>
<el-button v-if="query" type="info" @click="clearHandle()" size="mini">{{ $t('clear') }}</el-button>
<el-button type="primary" @click="commitHandle()" size="mini">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</div>
</template>
<script>
export default {
name: 'RenDeptTree',
data () {
data() {
return {
filterText: '',
visibleDept: false,
@ -56,15 +51,23 @@ export default {
placeholder: String
},
watch: {
filterText (val) {
filterText(val) {
this.$refs.tree.filter(val)
},
deptName (val) {
deptName(val) {
this.showDeptName = val
},
visibleDept(val) {
if (!val) {
this.filterText = ''
}
}
},
methods: {
deptDialog () {
handlePaste() {
return false
},
deptDialog() {
this.expandedKeys = null
if (this.$refs.tree) {
this.$refs.tree.setCurrentKey(null)
@ -72,11 +75,11 @@ export default {
this.visibleDept = true
this.getDeptList(this.value)
},
filterNode (value, data) {
filterNode(value, data) {
if (!value) return true
return data.name.indexOf(value) !== -1
},
getDeptList (id) {
getDeptList(id) {
return this.$http.get('/sys/dept/list').then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
@ -86,14 +89,14 @@ export default {
this.$refs.tree.setCurrentKey(id)
this.expandedKeys = [id]
})
}).catch(() => {})
}).catch(() => { })
},
cancelHandle () {
cancelHandle() {
this.visibleDept = false
this.deptList = []
this.filterText = ''
},
clearHandle () {
clearHandle() {
this.$emit('input', '')
this.$emit('update:deptName', '')
this.showDeptName = ''
@ -101,7 +104,7 @@ export default {
this.deptList = []
this.filterText = ''
},
commitHandle () {
commitHandle() {
const node = this.$refs.tree.getCurrentNode()
if (!node) {
this.$message.error(this.$t('dept.chooseerror'))

View File

@ -1,8 +1,8 @@
<!--
* @Author: hisense.wuhongjian
* @Date: 2022-04-11 16:30:04
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-07-16 15:07:44
* @LastEditors: Light
* @LastEditTime: 2022-10-26 11:05:07
* @Description: 告诉大家这是什么
-->
<template>
@ -31,7 +31,7 @@
<!-- 审核意见 -->
<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-column prop="duration" :label="$t('task.durationInSeconds')" header-align="center" align="center" width="180"></el-table-column>
</el-table>
<el-pagination
v-if="dataForm.pid === '0'"

View File

@ -9,13 +9,14 @@
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="entrustTask()">{{ $t('confirm') }}</el-button>
<el-button type="primary" @click="entrustTask($store.state.contentTabsActiveName)">{{ $t('confirm') }}</el-button>
</template>
<select-user v-if="selectUserVisible" ref="selectUser" ></select-user>
</el-dialog>
</template>
<script>
import bus from '@/views/bus.js'
import SelectUser from './select-user'
import qs from 'qs'
export default {
@ -52,11 +53,11 @@ export default {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
this.$refs.dataForm.resetFields()
})
},
//
entrustTask () {
entrustTask (data) {
if (!this.dataForm.entrustUserId) {
this.$message.error(this.$t('process.entrustError'))
return
@ -65,9 +66,11 @@ export default {
taskId: this.dataForm.taskId,
assignee: this.dataForm.entrustUserId
})
this.$http['post']('/act/task/entrust', task).then(({ data: res }) => {
this.$http.post('/act/task/entrust', task).then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error(res.msg)
this.tabRemoveHandle(data)
bus.$emit('updateTaskNum')
if (this.callbacks.taskHandleErrorCallback) {
this.callbacks.taskHandleErrorCallback(res)
}
@ -79,6 +82,8 @@ export default {
duration: 500,
onClose: () => {
this.visible = false
this.tabRemoveHandle(data)
bus.$emit('updateTaskNum')
if (this.callbacks.taskHandleSuccessCallback) {
this.callbacks.taskHandleSuccessCallback(res)
}
@ -93,6 +98,33 @@ export default {
this.$refs.selectUser.init(this.setUserInfo)
})
},
tabRemoveHandle (tabName) {
console.log(tabName, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
if (tabName === 'home') {
return false
}
this.$store.state.contentTabs = this.$store.state.contentTabs.filter(
(item) => item.name !== tabName
)
if (this.$store.state.contentTabs.length <= 0) {
this.$store.state.sidebarMenuActiveName =
this.$store.state.contentTabsActiveName = 'home'
return false
}
// tab
if (tabName === this.$store.state.contentTabsActiveName) {
const tab =
this.$store.state.contentTabs[
this.$store.state.contentTabs.length - 1
]
this.$router.push({
name: /^iframe_.+/.test(tab.name) ? 'iframe' : tab.name,
params: { ...tab.params },
query: { ...tab.query }
})
}
},
setUserInfo (userInfo) {
this.dataForm.entrustUserId = userInfo.id
this.dataForm.entrustUserName = userInfo.realName

View File

@ -3,8 +3,8 @@ const t = {}
t.loading = '加载中...'
t.brand = {}
t.brand.lg = '能力管理中心'
t.brand.mini = '一体化综合指挥'
t.brand.lg = '生态运营平台'
t.brand.mini = '政务信息系统'
t.add = '新增'
t.delete = '删除'
@ -576,4 +576,4 @@ t.infrastructure.street = '所在街道'
t.infrastructure.department = '所属部门'
t.infrastructure.associatedApplication = '关联应用'
export default t
export default t

View File

@ -3,8 +3,8 @@ const t = {}
t.loading = '加載中...'
t.brand = {}
t.brand.lg = '能力管理中心'
t.brand.mini = '一体化综合指挥'
t.brand.lg = '生态运营平台'
t.brand.mini = '政务信息系统'
t.add = '新增'
t.delete = '刪除'
@ -25,7 +25,7 @@ t.choose = '請選擇'
t.fileName = '文件名'
t.design = '在線設計'
t.preview = '預覽'
t.reset='重置'
t.reset = '重置'
t.prompt = {}
t.prompt.title = '提示'
@ -544,4 +544,4 @@ t.notice.new = '有新通知'
t.notice.disconnect = '連接斷開'
t.notice.disconnectMessage = 'WebSocket連接已斷開請檢查網絡'
export default t
export default t

View File

@ -4,39 +4,36 @@ import { deepClone } from '@/utils/form-generator/index'
export default {
data () {
/* eslint-disable */
return {
// 设置属性
mixinViewModuleOptions: {
createdIsNeed: true, // 此页面是否在创建时,调用查询数据列表接口?
activatedIsNeed: false, // 此页面是否在激活(进入)时,调用查询数据列表接口?
getDataListURL: '', // 数据列表接口API地址
getDataListIsPage: false, // 数据列表接口,是否需要分页?
deleteURL: '', // 删除接口API地址
deleteIsBatch: false, // 删除接口,是否需要批量?
deleteIsBatchKey: 'id', // 删除接口批量状态下由那个key进行标记操作比如piduid...
exportURL: '', // 导出接口API地址
requestCallback: null // 获取列表以后执行的回调
},
flag: false,
time: null,
// 默认属性
dataForm: {
}, // 查询条件
dataList: [
{
infoList: []
return {
// 设置属性
mixinViewModuleOptions: {
createdIsNeed: true, // 此页面是否在创建时,调用查询数据列表接口?
activatedIsNeed: false, // 此页面是否在激活(进入)时,调用查询数据列表接口?
getDataListURL: '', // 数据列表接口API地址
getDataListIsPage: false, // 数据列表接口,是否需要分页?
deleteURL: '', // 删除接口API地址
deleteIsBatch: false, // 删除接口,是否需要批量?
deleteIsBatchKey: 'id', // 删除接口批量状态下由那个key进行标记操作比如piduid...
exportURL: '', // 导出接口API地址
requestCallback: null // 获取列表以后执行的回调
},
flag: false,
time: null,
// 默认属性
dataForm: {}, // 查询条件
dataList: [{
infoList: []
}], // 数据列表
order: '', // 排序ascdesc
orderField: '', // 排序,字段
page: 1, // 当前页码
limit: 10, // 每页数
total: 0, // 总条数
dataListLoading: false, // 数据列表loading状态
dataListSelections: [], // 数据列表,多选项
addOrUpdateVisible: false // 新增更新弹窗visible状态
}
], // 数据列表
order: '', // 排序ascdesc
orderField: '', // 排序,字段
page: 1, // 当前页码
limit: 10, // 每页数
total: 0, // 总条数
dataListLoading: false, // 数据列表loading状态
dataListSelections: [], // 数据列表,多选项
addOrUpdateVisible: false // 新增更新弹窗visible状态
}
/* eslint-enable */
/* eslint-enable */
},
created () {
if (this.mixinViewModuleOptions.createdIsNeed) {
@ -73,41 +70,41 @@ export default {
this.dataList.map((item, index) => {
if (this.dataList[index].type != null) {
switch (item.type) {
case 1: this.dataList[index].type = '省'; break
case 2: this.dataList[index].type = '市'; break
case 3: this.dataList[index].type = '区'; break
case 4: this.dataList[index].type = '企业'; break
case 1:
this.dataList[index].type = '省'
break
case 2:
this.dataList[index].type = '市'
break
case 3:
this.dataList[index].type = '区'
break
case 4:
this.dataList[index].type = '企业'
break
}
}
if (item.children != null) {
item.children.map((item2, index2) => {
switch (item2.type) {
case 1: this.dataList[index].children[index2].type = '省'; break
case 2: this.dataList[index].children[index2].type = '市'; break
case 3: this.dataList[index].children[index2].type = '区'; break
case 4: this.dataList[index].children[index2].type = '企业'; break
case 1:
this.dataList[index].children[index2].type = '省'
break
case 2:
this.dataList[index].children[index2].type = '市'
break
case 3:
this.dataList[index].children[index2].type = '区'
break
case 4:
this.dataList[index].children[index2].type = '企业'
break
}
})
}
})
// 我的代办特殊处理
if (this.mixinViewModuleOptions.getDataListURL === '/act/task/myToDoTaskPage') {
this.$http.get('/sys/user/info').then(userRes => {
console.log('当前用户信息===========>', userRes.data.data.id)
const userId = userRes.data.data.id
this.dataList = this.dataList.filter(item => {
// userId creator
console.log(item.params.creator)
if (!(item.params.creator === userId) && !(item.params.userId === userId)) {
return item
}
})
this.total = this.mixinViewModuleOptions.getDataListIsPage ? res.data.total : 0
})
} else {
this.total = this.mixinViewModuleOptions.getDataListIsPage ? res.data.total : 0
}
this.total = this.mixinViewModuleOptions.getDataListIsPage ? res.data.total : 0
console.log('数据列表', this.dataList, this.mixinViewModuleOptions.getDataListURL)
if (this.dataList[0].type === '组件服务') {
this.dataList.map(val => {
@ -117,6 +114,14 @@ export default {
this.dataList.map(val => {
val.infoList2 = val.infoList.filter(item => item.attrType === '应用领域')
})
} else if (this.dataList[0].type === '应用系统') {
this.dataList.forEach((item) => {
item.belongProject = '城市信息模型'
item.belongSystem = '信息模型技术平台'
})
this.dataList.map(val => {
val.infoList2 = val.infoList.filter(item => item.attrType === '应用领域')
})
}
if (this.mixinViewModuleOptions.requestCallback) {
this.mixinViewModuleOptions.requestCallback(res.data)
@ -183,7 +188,7 @@ export default {
options.push(val.dictLabel)
})
item2.options = options
}).catch(() => { })
}).catch(() => {})
}
item2.note1 = ''
// if (item.name !== '必填信息' && item.name !== '服务接口信息') {
@ -199,7 +204,7 @@ export default {
})
console.log(res, showList)
this.flag = true
}).catch(() => { })
}).catch(() => {})
// 定时器
this.time = setInterval(() => {
@ -241,7 +246,7 @@ export default {
options.push(val.dictLabel)
})
item2.options = options
}).catch(() => { })
}).catch(() => {})
}
item2.note1 = ''
// if (item.name !== '必填信息' && item.name !== '服务接口信息') {
@ -257,7 +262,7 @@ export default {
})
console.log(res, showList)
this.flag = true
}).catch(() => { })
}).catch(() => {})
// 定时器
this.time = setInterval(() => {
@ -335,10 +340,10 @@ export default {
type: 'warning'
}).then(() => {
this.$http.delete(
`${this.mixinViewModuleOptions.deleteURL}${this.mixinViewModuleOptions.deleteIsBatch ? '' : '/' + id}`,
this.mixinViewModuleOptions.deleteIsBatch ? {
data: id ? [id] : this.dataListSelections.map(item => item[this.mixinViewModuleOptions.deleteIsBatchKey])
} : {}
`${this.mixinViewModuleOptions.deleteURL}${this.mixinViewModuleOptions.deleteIsBatch ? '' : '/' + id}`,
this.mixinViewModuleOptions.deleteIsBatch ? {
data: id ? [id] : this.dataListSelections.map(item => item[this.mixinViewModuleOptions.deleteIsBatchKey])
} : {}
).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
@ -351,8 +356,8 @@ export default {
this.query()
}
})
}).catch(() => { })
}).catch(() => { })
}).catch(() => {})
}).catch(() => {})
},
deleteHandle2 (id) {

View File

@ -104,7 +104,7 @@ router.beforeEach((to, from, next) => {
Vue.prototype.$message.error(res.msg)
return next({ name: 'login' })
}
window.SITE_CONFIG.menuList = res.data
window.SITE_CONFIG.menuList = res.data.filter(item => item.site === 0)
fnAddDynamicMenuRoutes(window.SITE_CONFIG.menuList)
next({ ...to, replace: true })
}).catch(() => {
@ -187,6 +187,7 @@ function fnAddDynamicMenuRoutes (menuList = [], routes = []) {
},
{ path: '*', redirect: { name: '404' } }
])
console.log('查询路由', routes)
window.SITE_CONFIG.dynamicMenuRoutes = routes
window.SITE_CONFIG.dynamicMenuRoutesHasAdded = true
}

View File

@ -1,12 +1,12 @@
/*
* @Author: hisense.liangjunhua
* @Author: hisense.guoyue
* @Date: 2022-08-23 10:30:11
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-25 21:05:18
* @Description: 告诉大家这是什么
* @LastEditTime: 2022-10-18 17:44:33
* @Description: 判断当前环境是西海岸还是青岛市局
*/
const returnLocationStr = () => {
return 'qingdao1'
return CONFIGITEM.version === 'xihaian' ? 'xihaian' : 'qingdao'
}
export default returnLocationStr

View File

@ -14,7 +14,7 @@ import isPlainObject from 'lodash/isPlainObject'
const http = axios.create({
baseURL: window.SITE_CONFIG.apiURL,
// baseURL: 'http://15.2.21.238:8888/renren-admin/',
// baseURL: 'http://15.2.21.238:8888/ucs-admin/',
timeout: 1000 * 180,
withCredentials: true
})

View File

@ -12,7 +12,7 @@
$t("brand.lg")
}}</a>
<span></span>
<span class="back-title-text">后台管理系统</span>
<span class="back-title-text">能力知识库</span>
</h1>
</div>
<div class="aui-navbar__body">
@ -41,7 +41,8 @@
</el-menu-item> -->
</el-menu>
<el-menu class="aui-navbar__menu" mode="horizontal">
<el-menu-item index="1">
<!-- 暂时隐藏切换语言--勿删 -->
<!-- <el-menu-item index="1">
<el-dropdown placement="bottom" :show-timeout="0">
<el-button size="mini">{{ $t("_lang") }}</el-button>
<el-dropdown-menu slot="dropdown">
@ -53,14 +54,14 @@
>
</el-dropdown-menu>
</el-dropdown>
</el-menu-item>
<el-menu-item index="2">
</el-menu-item> -->
<!-- <el-menu-item index="2">
<a href="//115.28.200.119:9091" target="_blank">
<svg class="icon-svg aui-navbar__icon-menu" aria-hidden="true">
<use xlink:href="#icon-earth"></use>
</svg>
</a>
</el-menu-item>
</el-menu-item> -->
<el-menu-item index="3" v-if="$hasPermission('sys:notice:all')">
<el-badge :is-dot="messageTip">
<a href="#" @click="myNoticeRouter()"
@ -221,7 +222,7 @@ export default {
.aui-navbar__header {
width: 25%;
.aui-navbar__brand {
margin-left: 20px;
margin-left: -30px;
a {
font-size: 22px;
color: #ffffff;

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,84 +33,88 @@
<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>
<script>
import SubMenu from "./main-sidebar-sub-menu";
import SubMenu from './main-sidebar-sub-menu'
export default {
name: "sub-menu",
data() {
name: 'sub-menu',
data () {
return {
browserTabOpenList: ["1156748733921165314"],
};
browserTabOpenList: ['1156748733921165314']
}
},
props: {
menu: {
type: Object,
required: true,
},
required: true
}
},
components: {
SubMenu,
SubMenu
},
created() {
created () {
this.$nextTick(() => {
if (this.$refs.li) {
let $li = this.$refs.li.$el;
let $a = $li.firstElementChild;
const $li = this.$refs.li.$el
const $a = $li.firstElementChild
if ($a) {
let pl = "0",
pr = "0";
let pl = '0'
let pr = '0'
if ($li.currentStyle) {
pl = $li.currentStyle["paddingLeft"];
pr = $li.currentStyle["paddingRight"];
pl = $li.currentStyle.paddingLeft
pr = $li.currentStyle.paddingRight
} else {
pl = window.document.defaultView.getComputedStyle($li, null)[
"paddingLeft"
];
pr = window.document.defaultView.getComputedStyle($li, null)[
"paddingRight"
];
pl = window.document.defaultView.getComputedStyle($li, null).paddingLeft
pr = window.document.defaultView.getComputedStyle($li, null).paddingRight
}
$li.setAttribute("style", `padding-left: 0; padding-right: 0;`);
$li.setAttribute('style', 'padding-left: 0; padding-right: 0;')
$a.setAttribute(
"style",
'style',
`padding-left: ${pl}; padding-right: ${pr};`
);
)
}
}
});
})
},
methods: {
// Tab
isBrowserTabOpen(menuId) {
isBrowserTabOpen (menuId) {
return (
this.browserTabOpenList.filter((item) => item === menuId).length >= 1
);
)
},
// TabURL
getBrowserTabOpenURL(menuId) {
var route = window.SITE_CONFIG["dynamicMenuRoutes"].filter(
getBrowserTabOpenURL (menuId) {
var route = window.SITE_CONFIG.dynamicMenuRoutes.filter(
(item) => item.meta.menuId === menuId
)[0];
return route ? route.meta.iframeURL : "";
)[0]
return route ? route.meta.iframeURL : ''
},
// menuId()
gotoRouteHandle(menuId) {
var route = window.SITE_CONFIG["dynamicMenuRoutes"].filter(
gotoRouteHandle (menuId) {
var route = window.SITE_CONFIG.dynamicMenuRoutes.filter(
(item) => item.meta.menuId === menuId
)[0];
)[0]
if (route) {
this.$router.push({ name: route.name });
this.$router.push({ name: route.name })
}
},
},
};
}
}
}
</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

@ -1,8 +1,8 @@
<!--
* @Author: kongjun qdkongjun@gmail.com
* @Date: 2022-06-20 09:29:59
* @LastEditors: kongjun qdkongjun@gmail.com
* @LastEditTime: 2022-06-22 10:04:56
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-11-04 15:21:13
* @FilePath: \back\src\views\main-sidebar.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
@ -18,29 +18,92 @@
: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 SubMenu from "./main-sidebar-sub-menu";
import http from '@/utils/request'
import SubMenu from './main-sidebar-sub-menu'
import returnLocationStr from '@/utils/location'
import bus from '@/views/bus.js'
export default {
data() {
return {};
data () {
return {
numObject: {}
}
},
components: {
SubMenu,
SubMenu
},
created() {
this.$store.state.sidebarMenuList = window.SITE_CONFIG["menuList"];
created () {
this.getNum()
// this.$store.state.sidebarMenuList = window.SITE_CONFIG.menuList
//
bus.$off('updateTaskNum')
bus.$on('updateTaskNum', () => {
this.getNum()
})
},
};
methods: {
getNum () {
http.get('/act/task/myToDoTaskNum').then(({ data: res }) => {
this.numObject = res.data
const menuList = window.SITE_CONFIG.menuList
console.log('menuList====>', menuList)
console.log('this.numObject====>', this.numObject)
for (var i = 0; i < menuList.length; i++) {
const menu = menuList[i]
if (menu.id == '1541261628388888578') { //
let daibanNum = 0
for (let j = 0; j < menu.children.length; j++) {
const 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
}
if (menu.id == '1588427411604197378') {
menu.total = Number(this.numObject.resourcemountapply)
}
}
this.$store.state.sidebarMenuList = menuList
})
}
}
}
</script>
<style scoped lang="scss">
.aui-sidebar {
@ -64,5 +127,12 @@ export default {
width: 266px;
}
}
.tabNum{
color: #ffffff;
margin-left: 5px;
background: red;
padding:1px 4px;
border-radius:5px;
}
}
</style>

View File

@ -8,11 +8,11 @@
-->
<template>
<div class="aui-theme-tools" :class="{ 'aui-theme-tools--open': isOpen }">
<div class="aui-theme-tools__toggle" @click="isOpen = !isOpen">
<!-- <div class="aui-theme-tools__toggle" @click="isOpen = !isOpen">
<svg class="icon-svg" aria-hidden="true">
<use xlink:href="#icon-setting"></use>
</svg>
</div>
</div> -->
<div class="aui-theme-tools__content">
<div class="aui-theme-tools__item">
<h3>Navbar</h3>

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>
<!-- 更多能力 -->
@ -103,7 +116,6 @@ import CommonQuestion from '../components/common-question.vue'
import InfrastructureModal from './components/infrastructure-modal.vue'
import Cookies from 'js-cookie'
import upload from '@/views/modules/components/upload'
const btnArray = ['基本信息', '场景痛点', '解决方案', '组合能力', '更多能力', '使用步骤']
// \
export const getJson = (type) => {
@ -155,7 +167,19 @@ export const getFuseResourceList = (abilityListObj) => {
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|| v.name ,
deptName:v.deptName,
})
})
}else{
itemArray.map((v, i) => {
const index = (i + 1) + length
arr.push({
resourceId: v,
@ -163,6 +187,8 @@ export const getFuseResourceList = (abilityListObj) => {
sequence: index
})
})
}
length = itemArray.length
}
}
@ -191,9 +217,13 @@ export default {
painKeyTextObj: getDescJson('痛点'),
solutionKeyTextObj: getDescJson('方案'),
dataForm: {
infrastructureCount:null,
dataSourceCount:null,
componentCount:null,
name: '',
applicationArea: '',
description: '',
sceneUrl: '',
fuseAttrList: [
{
attrType: '使用步骤',
@ -299,8 +329,10 @@ export default {
},
//
updateDataForm (data) {
//console.log('datadatadata',data);
if (Object.keys(this.getListParams).includes(data.title)) {
this.abilityListObj[data.title] = data.list
console.log(' this.abilityListObj[data.title]3333', this.abilityListObj[data.title]);
} else {
// 使
this.operateFuseAttrList(data.title, data)
@ -330,6 +362,7 @@ export default {
//
dataFormSubmitHandle: debounce(
function () {
console.log('this.dataForm------表单提交------>111111', this.dataForm)
this.$refs.dataForm.validate((valid) => {
if (!valid) {
this.$message.error('请检查表单是否填写完整')
@ -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

@ -2,7 +2,7 @@
<div>
<el-dialog
:visible.sync="visible"
title="关联应用"
title="关联标签"
@close="close"
:close-on-click-modal="false"
:close-on-press-escape="false"
@ -13,7 +13,7 @@
v-model="transferValue"
filterable
:filter-method="filterMethod"
filter-placeholder="请输入应用名称"
filter-placeholder="请输入标签名称"
:titles="nameArray"
:props="{
key: 'id',
@ -24,7 +24,7 @@
</div>
<template slot="footer">
<el-button @click="visible = false">{{ $t("cancel") }}</el-button>
<el-button type="primary" @click="confirmSubmitHandle()">{{
<el-button type="primary" @click="visible = false">{{
$t("confirm")
}}</el-button>
</template>
@ -42,6 +42,140 @@ export default {
visible: true,
transferData: [], //穿
transferValue: [], //id
linkedData:[
{
id: "1534805370156834818",
dictTypeId: "1534805229031088130",
name: "视频类",
dictValue: "1",
remark: "",
sort: 0,
createDate: "2022-06-09 15:51:30",
updateDate: "2022-07-01 14:20:04",
status: 1
},
{
id: "1536670196898336769",
dictTypeId: "1534805229031088130",
name: "图片类",
dictValue: "2",
remark: "",
sort: 1,
createDate: "2022-06-14 19:21:40",
updateDate: "2022-07-01 14:20:27",
status: 1
},
{
id: "1534805309289095170",
dictTypeId: "1534805229031088130",
name: "文本类",
dictValue: "3",
remark: "",
sort: 2,
createDate: "2022-06-09 15:51:16",
updateDate: "2022-07-01 14:19:52",
status: 1
},
{
id: "1542753737822306305",
dictTypeId: "1534805229031088130",
name: "语音类",
dictValue: "4",
remark: "",
sort: 3,
createDate: "2022-07-01 14:15:29",
updateDate: "2022-07-01 14:15:29",
status: 1
},
{
id: "1536670305505644545",
dictTypeId: "1534805229031088130",
name: "其他",
dictValue: "5",
remark: "",
sort: 4,
createDate: "2022-06-14 19:22:05",
updateDate: "2022-07-01 14:15:11",
status: 1
}
],//
labelData:[{
id: "1513714443263451137",
dictTypeId: "1513714403530809346",
name: "接口",
dictValue: "1",
remark: "",
sort: 1,
createDate: "2022-04-12 11:03:41",
updateDate: "2022-04-12 11:03:41",
status: 1
},
{
id: "1513714474334855170",
dictTypeId: "1513714403530809346",
name: "SDK",
dictValue: "2",
remark: "",
sort: 2,
createDate: "2022-04-12 11:03:49",
updateDate: "2022-04-12 11:03:49",
status: 1
},
{
id: "1513714504261214210",
dictTypeId: "1513714403530809346",
name: "Web页面",
dictValue: "3",
remark: "",
sort: 3,
createDate: "2022-04-12 11:03:56",
updateDate: "2022-04-12 11:03:56",
status: 1
},
{
id: "1513714541603102722",
dictTypeId: "1513714403530809346",
name: "其他",
dictValue: "99",
remark: "",
sort: 99,
createDate: "2022-04-12 11:04:05",
updateDate: "2022-04-12 11:04:05",
status: 1
}, {
id: "1539453444552638466",
dictTypeId: "1539453183746621441",
name: "视频资源",
dictValue: "1",
remark: "",
sort: 0,
createDate: "2022-06-22 11:41:18",
updateDate: "2022-06-22 11:41:18",
status: 1
},
{
id: "1539453481407987714",
dictTypeId: "1539453183746621441",
name: "感知资源",
dictValue: "2",
remark: "",
sort: 0,
createDate: "2022-06-22 11:41:26",
updateDate: "2022-06-22 11:41:26",
status: 1
},
{
id: "1539453516610781185",
dictTypeId: "1539453183746621441",
name: "云资源",
dictValue: "3",
remark: "",
sort: 0,
createDate: "2022-06-22 11:41:35",
updateDate: "2022-06-22 11:41:35",
status: 1
}
]
};
},
props: {
@ -51,7 +185,7 @@ export default {
},
nameArray: {
type: Array,
default: ["未关联应用名称", "已关联应用名称"],
default: ["未关联标签名称", "已关联标签名称"],
},
},
computed: {},
@ -86,16 +220,15 @@ export default {
},
},
mounted() {
if (this.relateInfo && this.relateInfo.responseData) {
const alreadLinkedArr = this.relateInfo.responseData.alreadLinked || [];
this.transferData = alreadLinkedArr.concat(
this.relateInfo.responseData.notLinked || []
);
alreadLinkedArr.length &&
alreadLinkedArr.forEach((item) => {
this.transferValue.push(item.id);
});
}
if (this.relateInfo) {
const alreadLinkedArr = this.linkedData;
this.transferData = alreadLinkedArr.concat(
this.labelData
);
alreadLinkedArr.length &&
alreadLinkedArr.forEach((item) => {
this.transferValue.push(item.id);
}); }
},
};
</script>

View File

@ -5,7 +5,7 @@
<el-form-item>
<el-input
v-model="dataForm.name"
placeholder="名称"
placeholder="图层名称"
clearable
></el-input>
</el-form-item>
@ -14,12 +14,12 @@
$t('query')
}}</el-button>
</el-form-item>
<el-form-item>
<!--<el-form-item>
<el-button type="info" @click="exportHandle()">{{
$t('export')
}}</el-button>
</el-form-item>
<!-- <el-form-item>
<el-form-item>
<el-button
v-if="$hasPermission('ability:bsabilityai:save')"
type="primary"
@ -29,7 +29,7 @@
</el-form-item> -->
<el-form-item>
<el-button type="primary" @click="showPutOnTheShelf()"
>上架</el-button
>盘点入库</el-button
>
</el-form-item>
<el-form-item>
@ -48,9 +48,8 @@
v-loading="dataListLoading"
:data="dataList"
border
@selection-change="dataListSelectionChangeHandle"
style="width: 100%"
height="650px"
@selection-change="handleSelectionChange"
>
<el-table-column
type="selection"
@ -58,123 +57,95 @@
align="center"
width="50"
></el-table-column>
<af-table-column
<el-table-column
:show-overflow-tooltip="true"
width="280"
prop="name"
label="组件名称"
label="图层名称"
header-align="center"
align="center"
></af-table-column>
<af-table-column
></el-table-column>
<el-table-column
:show-overflow-tooltip="true"
width="280"
prop="description"
label="组件描述"
label="能力描述"
header-align="center"
align="center"
></af-table-column>
<af-table-column
></el-table-column>
<el-table-column
:show-overflow-tooltip="true"
prop="belongProject"
label="归属项目"
header-align="center"
align="center"
></el-table-column>
<el-table-column
:show-overflow-tooltip="true"
prop="belongSystem"
label="归属系统"
header-align="center"
align="center"
></el-table-column>
<el-table-column
:show-overflow-tooltip="true"
width="280"
prop="deptName"
label="归属部门"
header-align="center"
align="center"
></af-table-column>
<af-table-column
></el-table-column>
<el-table-column
:show-overflow-tooltip="true"
width="280"
prop="deptContacts"
label="部门联系人"
label="注册者"
header-align="center"
align="center"
></af-table-column>
<af-table-column
></el-table-column>
<!-- <el-table-column
:show-overflow-tooltip="true"
width="280"
prop="deptPhone"
label="部门联系人电话"
label="联系人电话"
header-align="center"
align="center"
></af-table-column>
<af-table-column
:show-overflow-tooltip="true"
width="280"
prop="shareCondition"
label="共享条件"
header-align="center"
align="center"
></af-table-column>
<template v-if="dataList[0] && dataList[0].infoList2">
<af-table-column
:show-overflow-tooltip="true"
width="280"
v-for="(item, index) in dataList[0].infoList2"
:key="index"
:label="item.attrType"
header-align="center"
align="center"
>
<template slot-scope="scope">
{{ findValue(scope.row.infoList2, item.attrType) }}
</template>
</af-table-column>
</template>
></el-table-column>
<el-table-column
:label="$t('handle')"
:show-overflow-tooltip="true"
width="280"
prop="updateDate"
label="上架时间"
header-align="center"
align="center"
></el-table-column> -->
<el-table-column
label="操作"
fixed="right"
header-align="center"
align="center"
width="150"
>
<template slot-scope="scope">
<el-button
v-if="scope.row.infoList.filter(val=>val.attrType=='组件类型')[0].attrValue == '智能算法'"
type="text"
size="small"
@click="toppingCapacity(scope.row)"
>置顶</el-button
>
<el-button
v-if="$hasPermission('ability:bsabilityai:update')"
type="text"
size="small"
@click="UpdateData(scope.row)"
>{{ $t('update') }}</el-button
>
<el-button
v-if="$hasPermission('ability:bsabilityai:delete')"
<!-- <el-button
type="text"
size="small"
@click="deleteHandle2(scope.row.id)"
>{{ $t('delete') }}</el-button
>
> -->
<el-button type="text" size="small" @click="showDetail(scope.row)"
>详情</el-button
>
<el-button type="text" size="small" @click="showDocument(scope.row)"
>技术文档</el-button
>
<el-button
type="text"
size="small"
@click="showRelateApplication(scope.row)"
>关联应用</el-button
<el-button type="text" size="small"
>标签化</el-button
>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="Number(total)"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle"
>
</el-pagination>
<el-pagination @current-change="handleCurrentChange" layout="total, prev, pager, next, jumper"
:total="total" :page-size="pageSize" :current-page="currentPage">
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update
:disabled="disabled"
@ -199,9 +170,9 @@
width="30%"
>
<el-radio v-model="radio" label="智能算法">智能算法</el-radio>
<el-radio v-model="radio" label="图层服务">图层服务</el-radio>
<el-radio v-model="radio" label="开发组件">开发组件</el-radio>
<el-radio v-model="radio" label="业务组件">业务组件</el-radio>
<el-radio v-model="radio" label="图层服务">GIS图层</el-radio>
<el-radio v-model="radio" label="开发组件">通用能力组件</el-radio>
<el-radio v-model="radio" label="业务组件">业务能力组件</el-radio>
<span slot="footer" class="dialog-footer">
<el-button @click="clear"> </el-button>
<el-button type="primary" @click="showPutOnTheShelfVue"
@ -210,7 +181,7 @@
</span>
</el-dialog>
<el-dialog
:title="submitFrom.id ? '修改' + radio : '上架' + radio"
title="盘点入库"
:visible.sync="showPutOnTheShelfFlag2"
:close-on-click-modal="false"
:close-on-press-escape="false"
@ -237,7 +208,7 @@
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
//import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './bsabilityai-add-or-update'
import dictionaries from '@/utils/dictionaries'
import qs from 'qs'
@ -245,7 +216,7 @@ import { pinyin } from 'pinyin-pro'
import RelateApplication from './bsabilityai-relate-application.vue'
import putOnTheShelf from '@/views/modules/putOnTheShelf'
export default {
mixins: [mixinViewModule],
// mixins: [mixinViewModule], @selection-change="dataListSelectionChangeHandle"
data () {
return {
required: ['归属部门', '部门联系人', '部门联系人电话', '应用领域', '共享条件', '算法名称', '算法描述', '图层名称', '图层描述', '组件名称', '组件描述', '组件地址', '服务地址', '服务接口', '接口请求方式', '算法类别'],
@ -262,8 +233,8 @@ export default {
infoList: [
{
attrType: '组件类型',
attrValue: '',
delFlag: 0
attrValue: '图层服务',
delFlag: 0,
}
]
},
@ -296,7 +267,14 @@ export default {
typeInput: '组件服务',
uuidOne: '',
uuidTwo: '',
uuidSnum: ''
uuidSnum: '',
addOrUpdateVisible:false,
dataList:[],
dataListLoading:false,
currentPage: 1,
pageSize: 10,
total: null,
dataListSelections:[]
}
},
watch: {},
@ -310,10 +288,61 @@ export default {
this.dataForm.type = '组件服务'
},
mounted () {
// window.addEventListener('resize', this.a)
// this.fullScreen()
this.getDataList();
},
methods: {
//
getDataList(){
//console.log('');
let params = {
deptIds: [],
districtId: '',
infoList: [{ attrType: '组件类型', attrValue: '图层服务' }],
name: '',
orderField: 'total',
orderType: 'DESC',
pageNum: this.currentPage,
pageSize: 10,
type: 'GIS图层',
};
this.$http.post(`/resource/pageWithAttrs`, params).then((res) => {
this.dataList = res.data.data.records;
if(this.dataList.length>0){
this.dataList.forEach((item)=>{
item.belongProject = "城市信息模型";
item.belongSystem = "信息模型技术平台";
});
}
this.total = parseInt(res.data.data.total);
})
},
handleCurrentChange (val) {
console.log('val------------>', val)
this.currentPage = val;
this.getDataList();
},
//
deleteHandle2 (id) {
console.log('删除========================》', id, this.dataListSelections)
const ids = []
if (id) {
ids.push(id)
} else {
if (this.dataListSelections.length > 0) {
this.dataListSelections.forEach(item => {
ids.push(item.id)
})
}
}
this.$http.post('/resource/delete', { ids: ids }).then(res => {
console.log('删除成功', res)
this.getDataList()
})
},
//
handleSelectionChange(val){
this.dataListSelections = val;
},
//
toppingCapacity (item) {
this.$http.put('/resource/pin_top/' + item.id).then(res => {
@ -332,57 +361,7 @@ export default {
})
},
reset () {
this.$http
.get(
this.mixinViewModuleOptions.getDataListURL +
'?' +
qs.stringify({
// order: this.order,
// orderField: this.orderField,
// type: '',
page: 1,
limit: 10,
creator: '',
selectType: 0,
delFlag: 0,
type: '组件服务',
name: ''
})
)
.then(({ data: res }) => {
this.dataForm.name = ''
if (res.code !== 0) {
this.dataList = []
this.total = 0
return this.$message.error(res.msg)
}
this.dataList = this.mixinViewModuleOptions.getDataListIsPage
? res.data.list
: res.data
this.dataList.map((item, index) => {
const dataListSinforList = []
item.infoList.map((itemson, indexson) => {
if (
itemson.attrType === '应用领域' ||
itemson.attrType === '组件类型'
) {
dataListSinforList.push(itemson)
}
})
this.dataList[index].infoList2 = dataListSinforList
})
console.log('this.dataList', this.dataList)
this.total = this.mixinViewModuleOptions.getDataListIsPage
? res.data.total
: 0
if (this.mixinViewModuleOptions.requestCallback) {
this.mixinViewModuleOptions.requestCallback(res.data)
}
this.dataListLoading = false
})
.catch(() => {
this.dataListLoading = false
})
this.getDataList();
},
findValue (list, type) {
const found = list.find((item) => item.attrType === type)
@ -505,7 +484,7 @@ export default {
creator: '',
selectType: 0,
delFlag: 0,
name: names
name: names,
})
)
.then(({ data: res }) => {
@ -514,7 +493,7 @@ export default {
this.total = 0
return this.$message.error(res.msg)
}
if (res.data.list.length !== 0) {
if (res.data.list.length >= 0) {
this.dataList = res.data.list
this.total = this.mixinViewModuleOptions.getDataListIsPage
? res.data.total
@ -596,7 +575,7 @@ export default {
infoList: [
{
attrType: '组件类型',
attrValue: '',
attrValue: '图层服务',
delFlag: 0
}
]
@ -604,6 +583,7 @@ export default {
this.reset()
},
showPutOnTheShelf () {
// :title="submitFrom.id ? '' + radio : '' + radio"
this.showPutOnTheShelfFlag = true
this.$http.get('/category/getCategoryTree').then((res) => {
this.insertList = res.data.data.filter(

View File

@ -31,7 +31,7 @@
<el-button
type="primary"
@click="showPutOnTheShelf()"
>上架</el-button
>盘点入库</el-button
>
</el-form-item>
<el-form-item>
@ -51,7 +51,6 @@
:data="dataList"
border
@selection-change="dataListSelectionChangeHandle"
style="width: 100%"
height="650px"
>
<el-table-column
@ -62,56 +61,58 @@
></el-table-column>
<el-table-column
:show-overflow-tooltip="true"
width="280"
prop="name"
label="应用名称"
label="系统名称"
header-align="center"
align="center"
></el-table-column>
<af-table-column
<el-table-column
:show-overflow-tooltip="true"
width="280"
prop="description"
label="应用描述"
label="能力描述"
header-align="center"
align="center"
></af-table-column>
<af-table-column
></el-table-column>
<el-table-column
:show-overflow-tooltip="true"
prop="belongProject"
label="归属项目"
header-align="center"
align="center"
></el-table-column>
<el-table-column
:show-overflow-tooltip="true"
prop="belongSystem"
label="归属系统"
header-align="center"
align="center"
></el-table-column>
<el-table-column
:show-overflow-tooltip="true"
width="280"
prop="deptName"
label="归属部门"
header-align="center"
align="center"
></af-table-column>
<af-table-column
></el-table-column>
<el-table-column
:show-overflow-tooltip="true"
width="280"
prop="deptContacts"
label="部门联系人"
label="注册者"
header-align="center"
align="center"
></af-table-column>
<af-table-column
:show-overflow-tooltip="true"
width="280"
prop="deptPhone"
label="部门联系人电话"
header-align="center"
align="center"
></af-table-column>
<af-table-column
></el-table-column>
<!-- <el-table-column
:show-overflow-tooltip="true"
width="280"
prop="shareCondition"
label="共享条件"
header-align="center"
align="center"
></af-table-column>
></el-table-column>
<template v-if="dataList[0] && dataList[0].infoList2">
<el-table-column
v-for="(item, index) in dataList[0].infoList2"
:key="index"
:key="Math.random()"
:label="item.attrType"
header-align="center"
align="center"
@ -122,58 +123,28 @@
{{ findValue(scope.row.infoList2, item.attrType) }}
</template>
</el-table-column>
</template>
</template>-->
<el-table-column
:label="$t('handle')"
label="操作"
fixed="right"
header-align="center"
align="center"
width="300"
>
<template slot-scope="scope">
<el-button
v-if="$hasPermission('ability:bsabilityai:update')"
type="text"
size="small"
@click="UpdateData(scope.row)"
>{{ $t("update") }}</el-button
>
<el-button
v-if="$hasPermission('ability:bsabilityai:delete')"
type="text"
size="small"
@click="deleteHandle2(scope.row.id)"
>{{ $t("delete") }}</el-button
>
<el-button type="text" size="small" @click="showDetail(scope.row)"
>详情</el-button
>
<el-button type="text" size="small" @click="showDocument(scope.row)"
>技术文档</el-button
>
<el-button
type="text"
size="small"
@click="applyAndAssembly(scope.row)"
>应用与组件</el-button
>
<el-button
type="text"
size="small"
@click="applyAndDataResource(scope.row)"
>应用与数据资源</el-button
>
<el-button
type="text"
size="small"
@click="applyAndProject(scope.row)"
>应用与项目</el-button
>
<el-button
type="text"
size="small"
@click="applyAndInfrastructure(scope.row)"
>应用与基础设施</el-button
>标签化</el-button
>
</template>
</el-table-column>
@ -204,7 +175,7 @@
></relate-application>
</div>
<el-dialog
:title="submitFrom.id?'修改'+radio:'上架'+radio"
title="盘点入库"
:visible.sync="showPutOnTheShelfFlag2"
:close-on-click-modal='false'
:close-on-press-escape='false'
@ -251,18 +222,18 @@ export default {
creator: '',
selectType: 0,
delFlag: 0,
type: '应用资源'
type: '应用系统'
},
qp: false,
relateApplicationResourceVisible: false,
relationData: {}, // 穿
topNameArray: [], //
radio: '应用资源',
radio: '应用系统',
insertList: [],
putOnTheShelfList: [],
showPutOnTheShelfFlag2: false,
submitFrom: {
type: '应用资源',
type: '应用系统',
deptId: '',
delFlag: 0,
infoList: [
@ -273,7 +244,7 @@ export default {
// }
]
},
typeInput: '应用资源'
typeInput: '应用系统'
}
},
watch: {},
@ -284,7 +255,7 @@ export default {
},
created () {
this.dataForm.name = ''
this.dataForm.type = '应用资源'
this.dataForm.type = '应用系统'
},
mounted () {
// window.addEventListener('resize', this.a)
@ -305,7 +276,7 @@ export default {
limit: 10,
delFlag: 0,
creator: '',
type: '应用资源',
type: '应用系统',
name: ''
})
)
@ -322,6 +293,12 @@ export default {
this.total = this.mixinViewModuleOptions.getDataListIsPage
? res.data.total
: 0
if (this.dataList.length > 0) {
this.dataList.forEach((item) => {
item.belongProject = '城市信息模型'
item.belongSystem = '信息模型技术平台'
})
}
if (this.mixinViewModuleOptions.requestCallback) {
this.mixinViewModuleOptions.requestCallback(res.data)
}
@ -380,7 +357,7 @@ export default {
// type: '',
pageNum: 1,
pageSize: this.limit,
type: '应用资源',
type: '应用系统',
creator: '',
selectType: 0,
delFlag: 0,
@ -393,7 +370,7 @@ export default {
this.total = 0
return this.$message.error(res.msg)
}
if (res.data.list.length !== 0) {
if (res.data.list.length >= 0) {
this.dataList = res.data.list
this.total = this.mixinViewModuleOptions.getDataListIsPage
? res.data.total
@ -482,7 +459,7 @@ export default {
linkType: '1',
responseData: res.data
}
this.topNameArray = ['未关联组件名称', '已关联组件名称']
this.topNameArray = ['未关联标签名称', '已关联标签名称']
console.log(' this.relationData', this.relationData)
//
})
@ -555,9 +532,9 @@ export default {
this.showPutOnTheShelfFlag2 = false
this.insertList = []
this.putOnTheShelfList = []
this.radio = '应用资源'
this.radio = '应用系统'
this.submitFrom = {
type: '应用资源',
type: '应用系统',
deptId: '',
delFlag: 0,
infoList: [
@ -572,6 +549,7 @@ export default {
},
//
showPutOnTheShelf () {
// :title="submitFrom.id?''+radio:''+radio"
this.showPutOnTheShelfFlag2 = true
this.$http.get('/category/getCategoryTree').then(res => {
this.insertList = res.data.data.filter(item => item.name === '应用资源一')[0]
@ -729,15 +707,38 @@ export default {
.catch(() => {})
} else {
this.$http
.post('/resource/insert?source= b', this.submitFrom)
.post('/resource/insert?source= f', this.submitFrom)
.then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error('上架失败!')
this.showPutOnTheShelfFlag2 = false
} else {
this.$message.success('上架成功!')
this.showPutOnTheShelfFlag2 = false
this.clear()
const instanceId = res.data
this.submitFrom.id = res.data
this.$http.get('/sys/user/info').then(info => {
this.$http.get('sys/user/' + info.data.data.id).then(user => {
const insertDeptId = this.submitFrom.deptId
const userId = user.data.data.id
const userName = user.data.data.realName
const params = {
instanceId: instanceId,
deptId: insertDeptId,
userId: userId,
userName: userName,
resourceDTO: [this.submitFrom]
}
this.$http.post('/resource/center/apply', params).then(res3 => {
if (res3.data.code == 0) {
this.$message.success('上架成功!')
this.showPutOnTheShelfFlag2 = false
this.clear()
} else {
this.$message.error('上架失败!')
this.showPutOnTheShelfFlag2 = false
}
})
})
})
}
})
.catch(() => {})
@ -748,8 +749,8 @@ export default {
UpdateData (item) {
this.$http.get('/category/getCategoryTree').then(res => {
this.insertList = res.data.data.filter(item => item.name === '应用资源一')[0]
this.radio = '应用资源'
// this.radio = item.infoList.filter(val => val.attrType === '')[0].attrValue
this.radio = '应用系统'
// this.radio = item.infoList.filter(val => val.attrType === '')[0].attrValue
this.putOnTheShelfList = this.insertList.children
// this.putOnTheShelfList = this.insertList.children.filter(item => item.name === this.radio)[0].children
this.putOnTheShelfList.map(parent => {

View File

@ -0,0 +1,940 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-ability__bsabilityai">
<el-form :inline="true" :model="dataForm">
<el-form-item>
<el-input
v-model="dataForm.name"
placeholder="图层名称"
clearable
></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getDataList2(dataForm.name)">{{
$t('query')
}}</el-button>
</el-form-item>
<!--<el-form-item>
<el-button type="info" @click="exportHandle()">{{
$t('export')
}}</el-button>
</el-form-item>
<el-form-item>
<el-button
v-if="$hasPermission('ability:bsabilityai:save')"
type="primary"
@click="addOrUpdateHandleAI()"
>挂接</el-button
>
</el-form-item> -->
<el-form-item>
<el-button type="primary" @click="showPutOnTheShelf()"
>盘点入库</el-button
>
</el-form-item>
<el-form-item>
<el-button
v-if="$hasPermission('ability:bsabilityai:delete')"
type="danger"
@click="deleteHandle2()"
>{{ $t('deleteBatch') }}</el-button
>
</el-form-item>
<el-form-item>
<el-button @click="reset">重置</el-button>
</el-form-item>
</el-form>
<el-table
v-loading="dataListLoading"
:data="dataList"
border
height="650px"
@selection-change="handleSelectionChange"
>
<el-table-column
type="selection"
header-align="center"
align="center"
width="50"
></el-table-column>
<el-table-column
:show-overflow-tooltip="true"
prop="name"
label="组件名称"
header-align="center"
align="center"
></el-table-column>
<el-table-column
:show-overflow-tooltip="true"
prop="description"
label="能力描述"
header-align="center"
align="center"
></el-table-column>
<el-table-column
:show-overflow-tooltip="true"
prop="deptName"
label="归属部门"
header-align="center"
align="center"
></el-table-column>
<el-table-column
:show-overflow-tooltip="true"
prop="deptContacts"
label="注册者"
header-align="center"
align="center"
></el-table-column>
<!-- <el-table-column
:show-overflow-tooltip="true"
width="280"
prop="deptPhone"
label="联系人电话"
header-align="center"
align="center"
></el-table-column>
<el-table-column
:show-overflow-tooltip="true"
width="280"
prop="updateDate"
label="上架时间"
header-align="center"
align="center"
></el-table-column> -->
<el-table-column
label="操作"
fixed="right"
header-align="center"
align="center"
>
<template slot-scope="scope">
<el-button
type="text"
size="small"
@click="UpdateData(scope.row)"
>{{ $t('update') }}</el-button
>
<!-- <el-button
type="text"
size="small"
@click="deleteHandle2(scope.row.id)"
>{{ $t('delete') }}</el-button
> -->
<el-button type="text" size="small" @click="showDetail(scope.row)"
>详情</el-button
>
<el-button type="text" size="small"
>标签化</el-button
>
</template>
</el-table-column>
</el-table>
<el-pagination @current-change="handleCurrentChange" layout="total, prev, pager, next, jumper"
:total="total" :page-size="pageSize" :current-page="currentPage">
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update
:disabled="disabled"
v-if="addOrUpdateVisible"
ref="addOrUpdate"
@refreshDataList="getDataList"
></add-or-update>
<relate-application
v-if="relateApplicationVisible"
ref="relateApplication"
:nameArray="['未关联应用名称', '已关联应用名称']"
:relateInfo="relateInfo"
@isShowRelatePopup="handleIsShowRelatePopup"
></relate-application>
</div>
<el-dialog
title="选择组件类型"
:visible.sync="showPutOnTheShelfFlag"
:close-on-click-modal="false"
:close-on-press-escape="false"
:before-close="clear"
width="30%"
>
<el-radio v-model="radio" label="智能算法">智能算法</el-radio>
<el-radio v-model="radio" label="图层服务">GIS图层</el-radio>
<el-radio v-model="radio" label="开发组件">通用能力组件</el-radio>
<el-radio v-model="radio" label="业务组件">业务能力组件</el-radio>
<span slot="footer" class="dialog-footer">
<el-button @click="clear"> </el-button>
<el-button type="primary" @click="showPutOnTheShelfVue"
> </el-button
>
</span>
</el-dialog>
<el-dialog
title="盘点入库"
:visible.sync="showPutOnTheShelfFlag2"
:close-on-click-modal="false"
:close-on-press-escape="false"
:destroy-on-close="true"
:before-close="clear"
width="50%"
>
<putOnTheShelf
ref="putOnTheShelf"
:putOnTheShelfList="putOnTheShelfList"
@changeInfoList="changeInfoList"
:type="radio"
:typeInput="typeInput"
:required="required"
:notFilled="notFilled"
@submitData="submitData"
></putOnTheShelf>
<span slot="footer" class="dialog-footer">
<el-button @click="clear"> </el-button>
<el-button type="primary" @click="submitData"> </el-button>
</span>
</el-dialog>
</el-card>
</template>
<script>
//import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './bsabilityai-add-or-update'
import dictionaries from '@/utils/dictionaries'
import qs from 'qs'
import { pinyin } from 'pinyin-pro'
import RelateApplication from './bsabilityai-relate-application.vue'
import putOnTheShelf from '@/views/modules/putOnTheShelf'
export default {
// mixins: [mixinViewModule], @selection-change="dataListSelectionChangeHandle"
data () {
return {
required: ['归属部门', '部门联系人', '部门联系人电话', '应用领域', '共享条件', '算法名称', '算法描述', '图层名称', '图层描述', '组件名称', '组件描述', '组件地址', '服务地址', '服务接口', '接口请求方式', '算法类别'],
notFilled: [],
insertList: [],
putOnTheShelfList: [],
radio: '',
showPutOnTheShelfFlag: false,
showPutOnTheShelfFlag2: false,
submitFrom: {
type: '组件服务',
deptId: '',
delFlag: 0,
infoList: [
{
attrType: '组件类型',
attrValue: '图层服务',
delFlag: 0,
}
]
},
mixinViewModuleOptions: {
getDataListURL: '/resource/page',
getDataListIsPage: true,
exportURL: '/ability/bsabilityai/export',
deleteURL: '/resource/delete',
deleteIsBatch: true
},
disabled: false,
sceneArr: dictionaries.sceneArr,
fieldArr: dictionaries.fieldArr,
shareFormArr: dictionaries.shareFormArr,
dataForm: {
name: '',
creator: '',
delFlag: 0,
selectType: 0,
type: '组件服务'
},
// qp: false,
//
relateApplicationVisible: false,
relateInfo: {
id: '',
responseData: {},
linkType: ''
},
typeInput: '组件服务',
uuidOne: '',
uuidTwo: '',
uuidSnum: '',
addOrUpdateVisible:false,
dataList:[],
dataListLoading:false,
currentPage: 1,
pageSize: 10,
total: null,
dataListSelections:[]
}
},
watch: {},
components: {
AddOrUpdate,
RelateApplication,
putOnTheShelf
},
created () {
this.dataForm.name = ''
this.dataForm.type = '组件服务'
},
mounted () {
this.getDataList();
},
methods: {
//
getDataList(){
//console.log('');
let params = {
deptIds: [],
districtId: '',
infoList: [{ attrType: '组件类型', attrValue: '业务组件' }],
name: '',
orderField: 'total',
orderType: 'DESC',
pageNum: this.currentPage,
pageSize: 10,
type: 'GIS图层',
};
this.$http.post(`/resource/pageWithAttrs`, params).then((res) => {
this.dataList = res.data.data.records;
this.total = parseInt(res.data.data.total);
})
},
handleCurrentChange (val) {
console.log('val------------>', val)
this.currentPage = val;
this.getDataList();
},
//
deleteHandle2 (id) {
console.log('删除========================》', id, this.dataListSelections)
const ids = []
if (id) {
ids.push(id)
} else {
if (this.dataListSelections.length > 0) {
this.dataListSelections.forEach(item => {
ids.push(item.id)
})
}
}
this.$http.post('/resource/delete', { ids: ids }).then(res => {
console.log('删除成功', res)
this.getDataList()
})
},
//
handleSelectionChange(val){
this.dataListSelections = val;
},
//
toppingCapacity (item) {
this.$http.put('/resource/pin_top/' + item.id).then(res => {
console.log('置顶', res.data.code)
if (res.data.code == 0) {
this.$message({
message: '置顶成功',
type: 'success'
})
} else {
this.$message({
message: '置顶失败',
type: 'warning'
})
}
})
},
reset () {
this.getDataList();
},
findValue (list, type) {
const found = list.find((item) => item.attrType === type)
if (found) {
return found.attrValue
} else {
return '暂无数据'
}
},
showDetail (val) {
console.log(val)
window.open(window.SITE_CONFIG.previewUrl + '#/details?id=' + val.id)
// this.addOrUpdateHandle(id)
// this.addOrUpdateVisible = true
// this.disabled = false
// this.$nextTick(() => {
// this.$refs.addOrUpdate.UpdateState = false
// this.$refs.addOrUpdate.dataFormShowDetails = val
// this.$refs.addOrUpdate.init()
// })
// this.disabled = true
},
// uuid
uuid (len, radix) {
var chars =
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
var uuid = []
var i
radix = radix || chars.length
if (len) {
// Compact form
for (i = 0; i < len; i++) uuid[i] = chars[0 | (Math.random() * radix)]
} else {
// rfc4122, version 4 form
var r
// rfc4122 requires these characters
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'
uuid[14] = '4'
// Fill in random data. At i==19 set the high bits of clock sequence as
// per rfc4122, sec. 4.1.5
for (i = 0; i < 36; i++) {
if (!uuid[i]) {
r = 0 | (Math.random() * 16)
uuid[i] = chars[i == 19 ? (r & 0x3) | 0x8 : r]
}
}
}
return uuid.join('')
},
uuidSplice () {
this.uuidOne = this.uuid(13, 16)
this.uuidTwo = this.uuid(13, 16)
this.uuidSnum = this.uuidOne + this.uuidTwo
this.uuidSnum = this.uuidSnum.replace(/\s+/g, '')
console.log('this.uuidOne', this.uuidSnum)
},
showDocument (val) {
//
//
this.uuidSplice()
const uuidParam = val.infoList.filter((item) => {
if (item.attrType === '技术文档') {
return item
}
})
if (uuidParam.length > 0) {
this.uuidSnum = uuidParam[0].attrValue.split('/')[1].split('.')[0]
} else {
const type = pinyin(val.type, {
pattern: 'initial'
}).replace(/\s*/g, '')
const obj = {
attrType: '技术文档',
attrValue: type + '/' + this.uuidSnum + '.md',
delFlag: 0
}
val.infoList.push(obj)
}
//
this.$http
.put('/resource/update', val)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
//
window.open(
window.SITE_CONFIG.frontUrl + '?id=' + this.uuidSnum + '&&type=' + val.type,
'_blank'
)
}
})
})
.catch(() => {})
// update
},
getDataList2 (names) {
if (names != null) {
this.$http
.get(
this.mixinViewModuleOptions.getDataListURL +
'?' +
qs.stringify({
// order: this.order,
// orderField: this.orderField,
// type: '',
pageNum: 1,
pageSize: this.limit,
type: '组件服务',
creator: '',
selectType: 0,
delFlag: 0,
name: names,
})
)
.then(({ data: res }) => {
if (res.code !== 0) {
this.dataList = []
this.total = 0
return this.$message.error(res.msg)
}
if (res.data.list.length !== 0) {
this.dataList = res.data.list
this.total = this.mixinViewModuleOptions.getDataListIsPage
? res.data.total
: 0
if (this.mixinViewModuleOptions.requestCallback) {
this.mixinViewModuleOptions.requestCallback(res.data)
}
this.dataListLoading = false
this.dataList.map((item, index) => {
const dataListSinforList = []
item.infoList.map((itemson, indexson) => {
if (
itemson.attrType === '应用领域' ||
itemson.attrType === '组件类型'
) {
dataListSinforList.push(itemson)
}
})
this.dataList[index].infoList2 = dataListSinforList
})
} else {
this.$message.error('未查询到相关信息')
this.reset()
}
})
.catch(() => {
this.dataListLoading = false
})
} else {
this.$message.error('查询信息不能为空')
}
},
// fullScreen () {
// if (window.outerHeight === screen.availHeight) {
// if (window.outerWidth === screen.availWidth) {
// this.qp = false
// } else {
// this.qp = true
// }
// } else {
// this.qp = true
// }
// },
//
showRelateApplication (row) {
this.$http
.get(
`dataResourceRel/queryApplicationRelByResourceId?referenceId=${row.id}`
)
.then(({ data: res }) => {
if (res && res.data) {
this.relateApplicationVisible = true
this.relateInfo = {
id: row.id,
responseData: res.data,
linkType: '2'
}
}
})
.catch(() => {})
},
//
handleIsShowRelatePopup (type) {
this.relateApplicationVisible = type
},
//
clear () {
console.log('清空----------------------------------------')
this.notFilled = []
this.showPutOnTheShelfFlag = false
this.showPutOnTheShelfFlag2 = false
this.insertList = []
this.putOnTheShelfList = []
this.radio = ''
this.submitFrom = {
type: '组件服务',
deptId: '',
delFlag: 0,
infoList: [
{
attrType: '组件类型',
attrValue: '图层服务',
delFlag: 0
}
]
}
this.reset()
},
showPutOnTheShelf () {
this.showPutOnTheShelfFlag = true
this.$http.get('/category/getCategoryTree').then((res) => {
this.insertList = res.data.data.filter(
(item) => item.name === '组件服务一'
)[0]
})
},
showPutOnTheShelfVue () {
this.showPutOnTheShelfFlag = false
this.showPutOnTheShelfFlag2 = true
this.submitFrom.infoList[0].attrValue = this.radio
this.putOnTheShelfList = this.insertList.children.filter(
(item) => item.name === this.radio
)[0].children
},
changeInfoList (obj) {
console.log(obj, this.submitFrom)
this.submitFrom.infoList = this.submitFrom.infoList.filter(
(item) => item.attrType !== obj.attrType
)
this.submitFrom.infoList.push(obj)
},
changeAdd () {
const arr = []
switch (this.radio) {
case '智能算法':
arr.push('算法优势')
arr.push('计费标准信息')
break
case '开发组件':
case '业务组件':
arr.push('功能介绍')
break
}
arr.push('应用场景')
arr.push('常见问题')
this.$refs.putOnTheShelf.submit(arr)
},
submitData () {
console.log('提交11111111111===============>', this.putOnTheShelfList, this.submitFrom)
const arr = []
this.putOnTheShelfList.map((item) => {
item.children.map((child) => {
if (child.children) {
if (
child.name === '算法优势' ||
child.name === '应用场景' ||
child.name === '功能介绍'
) {
arr.push(child.name)
if (
this.submitFrom.infoList.filter(
(value) => value.attrType === child.name
).length === 0
) {
this.submitFrom.infoList.push({
attrType: child.name,
attrValue: child.note1,
delFlag: 0
})
}
}
child.children.map((val) => {
arr.push(val.name)
if (
val.type === 'input' ||
val.type === 'textArea' ||
val.type === 'select' ||
val.type === 'checkBox' ||
val.type === 'radio'
) {
this.submitFrom.infoList = this.submitFrom.infoList.filter(
(item) => item.attrType !== val.name
)
}
if (val.note1 == '' || val.note1) {
switch (val.name) {
case '算法名称':
case '应用名称':
case '组件名称':
case '图层名称':
this.submitFrom.name = val.note1
break
case '算法描述':
case '应用描述':
case '组件描述':
case '图层描述':
this.submitFrom.description = val.note1
break
case '共享条件':
this.submitFrom.shareCondition = val.note1
break
case '共享类型':
this.submitFrom.shareType = val.note1
break
case '服务接口':
this.submitFrom.apiUrl = val.note1
break
case '接口请求方式':
this.submitFrom.apiMethodType = val.note1
break
case '访问地址':
this.submitFrom.link = val.note1
break
case '部门联系人':
this.submitFrom.deptContacts = val.note1
break
case '部门联系人电话':
this.submitFrom.deptPhone = val.note1
break
case '归属部门':
this.submitFrom.deptId = val.note1
break
case '能力类型':
this.submitFrom.type = val.note1
break
default:
if (
val.type !== 'image' &&
val.type !== 'file' &&
val.type !== 'video'
) {
this.submitFrom.infoList.push({
attrType: val.name,
attrValue: val.note1,
delFlag: 0
})
} else {
if (
this.submitFrom.infoList.filter(
(value) => value.attrType === val.name
).length === 0
) {
this.submitFrom.infoList.push({
attrType: val.name,
attrValue: val.note1,
delFlag: 0,
note2: val.note2 || null
})
}
}
break
}
}
})
}
})
})
this.submitFrom.infoList = this.submitFrom.infoList.sort(
(a, b) => arr.indexOf(a.attrType) - arr.indexOf(b.attrType)
)
this.notFilled = []
if (!this.submitFrom.name) {
this.notFilled.push('算法名称')
this.notFilled.push('图层名称')
this.notFilled.push('组件名称')
}
if (!this.submitFrom.description) {
this.notFilled.push('算法描述')
this.notFilled.push('图层描述')
this.notFilled.push('组件描述')
}
if (!this.submitFrom.shareCondition) {
this.notFilled.push('共享条件')
}
if (!this.submitFrom.deptContacts) {
this.notFilled.push('部门联系人')
}
if (!this.submitFrom.deptId) {
this.notFilled.push('归属部门')
}
if (!this.submitFrom.deptPhone) {
this.notFilled.push('部门联系人电话')
}
if (this.radio === '智能算法' && !this.submitFrom.apiUrl) {
if ((this.submitFrom.infoList.filter(val => val.attrType === '使用方式')[0].attrValue === '调用接口')) {
this.notFilled.push('服务接口')
}
}
if (this.radio === '智能算法' && !this.submitFrom.apiMethodType) {
if ((this.submitFrom.infoList.filter(val => val.attrType === '使用方式')[0].attrValue === '调用接口')) {
this.notFilled.push('接口请求方式')
}
}
if (this.radio === '智能算法' && (!this.submitFrom.infoList.filter(val => val.attrType === '算法类别')[0] || !this.submitFrom.infoList.filter(val => val.attrType === '算法类别')[0].attrValue)) {
this.notFilled.push('算法类别')
}
if (!this.submitFrom.infoList.filter(val => val.attrType === '应用领域')[0] || !this.submitFrom.infoList.filter(val => val.attrType === '应用领域')[0].attrValue) {
this.notFilled.push('应用领域')
}
if (this.radio === '图层服务' && (!this.submitFrom.infoList.filter(val => val.attrType === '服务地址')[0] || !this.submitFrom.infoList.filter(val => val.attrType === '服务地址')[0].attrValue)) {
this.notFilled.push('服务地址')
}
if ((this.radio === '业务组件' || this.radio === '开发组件') && (!this.submitFrom.infoList.filter(val => val.attrType === '组件地址')[0] || !this.submitFrom.infoList.filter(val => val.attrType === '组件地址')[0].attrValue)) {
this.notFilled.push('组件地址')
}
console.log(this.submitFrom, this.notFilled, '表单验证')
if (this.notFilled.length > 0) {
this.$message({
message: '请填写必填字段!',
type: 'warning'
})
} else {
if (this.submitFrom.id) {
//
this.submitFrom.infoList.map((val) => {
if (val.attrType === '组件类型') {
val.attrValue = this.radio
}
})
console.log('编辑===============>', this.submitFrom)
console.log(this.submitFrom.infoList, '===============abc')
//
const newArr = this.submitFrom.infoList.filter(
(element, index, self) => {
return (
self.findIndex((x) => x.attrType === element.attrType) === index
)
}
)
this.submitFrom.infoList = newArr
//
this.submitFrom.infoList = this.submitFrom.infoList.filter(item => item.attrValue)
this.$http
.put('/resource/update', this.submitFrom)
.then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error('修改失败!')
} else {
this.$message.success('修改成功!')
this.clear()
}
})
.catch(() => {})
} else {
console.log('提交11111111111===============>', this.putOnTheShelfList, this.submitFrom)
this.$http
.post('/resource/insert?source= b', this.submitFrom)
.then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error('上架失败!')
} else {
this.$message.success('上架成功!')
this.clear()
}
})
.catch(() => {})
}
}
},
//
UpdateData (item) {
this.$http.get('/category/getCategoryTree').then((res) => {
this.insertList = res.data.data.filter(
(item) => item.name === '组件服务一'
)[0]
this.radio = item.infoList.filter(
(val) => val.attrType === '组件类型'
)[0].attrValue
this.putOnTheShelfList = this.insertList.children.filter(
(item) => item.name === this.radio
)[0].children
this.putOnTheShelfList.map((parent) => {
parent.children.map((child) => {
if (
child.name === '算法优势' ||
child.name === '应用场景' ||
child.name === '功能介绍'
) {
const obj = item.infoList.filter(
(val) => val.attrType === child.name
)[0]
if (obj) {
child.note1 = obj.attrValue
}
} else {
if (child.children) {
child.children.map((data) => {
if (
data.name === '计费标准信息' ||
data.name === '常见问题'
) {
const obj = item.infoList.filter(
(val) => val.attrType === child.name
)[0]
if (obj) {
data.note1 = obj.attrValue
}
} else {
switch (data.name) {
case '算法名称':
case '应用名称':
case '组件名称':
case '图层名称':
data.note1 = item.name
break
case '算法描述':
case '应用描述':
case '组件描述':
case '图层描述':
data.note1 = item.description
break
case '共享条件':
data.note1 = item.shareCondition
break
case '共享类型':
data.note1 = item.shareType
break
case '服务接口':
data.note1 = item.apiUrl
break
case '接口请求方式':
data.note1 = item.apiMethodType
break
case '访问地址':
data.note1 = item.link
break
case '部门联系人':
data.note1 = item.deptContacts
break
case '部门联系人电话':
data.note1 = item.deptPhone
break
case '归属部门':
data.note1 = item.deptId
break
case '能力类型':
data.note1 = item.type
break
default:
// eslint-disable-next-line no-case-declarations
const obj1 = item.infoList.filter(
(val) => val.attrType === data.name
)[0]
if (obj1) {
data.note1 = obj1.attrValue
}
break
}
if (
data.type === 'image' ||
data.type === 'file' ||
data.type === 'video'
) {
const obj1 = item.infoList.filter(
(val) => val.attrType === data.name
)[0]
if (obj1) {
data.note2 = obj1.note2
}
}
}
})
}
}
})
})
this.submitFrom.id = item.id
this.showPutOnTheShelfFlag2 = true
})
}
}
}
</script>
<style lang="scss" scoped>
.el-tooltip__popper {
max-width: 50%;
}
// ::v-deep .el-table .cell {
// width: 200px;
// }
::v-deep .el-upload-list__item-name {
width: 400px;
}
</style>

View File

@ -0,0 +1,944 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-ability__bsabilityai">
<el-form :inline="true" :model="dataForm">
<el-form-item>
<el-input
v-model="dataForm.name"
placeholder="名称"
clearable
></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getDataList2(dataForm.name)">{{
$t('query')
}}</el-button>
</el-form-item>
<!--<el-form-item>
<el-button type="info" @click="exportHandle()">{{
$t('export')
}}</el-button>
</el-form-item>
<el-form-item>
<el-button
v-if="$hasPermission('ability:bsabilityai:save')"
type="primary"
@click="addOrUpdateHandleAI()"
>挂接</el-button
>
</el-form-item> -->
<el-form-item>
<el-button type="primary" @click="showPutOnTheShelf()"
>盘点入库</el-button
>
</el-form-item>
<el-form-item>
<el-button
v-if="$hasPermission('ability:bsabilityai:delete')"
type="danger"
@click="deleteHandle2()"
>{{ $t('deleteBatch') }}</el-button
>
</el-form-item>
<el-form-item>
<el-button @click="reset">重置</el-button>
</el-form-item>
</el-form>
<el-table
v-loading="dataListLoading"
:data="dataList"
border
height="650px"
@selection-change="handleSelectionChange"
>
<el-table-column
type="selection"
header-align="center"
align="center"
width="50"
></el-table-column>
<el-table-column
:show-overflow-tooltip="true"
prop="name"
label="组件名称"
header-align="center"
align="center"
></el-table-column>
<el-table-column
:show-overflow-tooltip="true"
prop="description"
label="能力描述"
header-align="center"
align="center"
></el-table-column>
<el-table-column
:show-overflow-tooltip="true"
prop="deptName"
label="归属部门"
header-align="center"
align="center"
></el-table-column>
<el-table-column
:show-overflow-tooltip="true"
prop="deptContacts"
label="注册者"
header-align="center"
align="center"
></el-table-column>
<!-- <el-table-column
:show-overflow-tooltip="true"
width="280"
prop="deptPhone"
label="联系人电话"
header-align="center"
align="center"
></el-table-column>
<el-table-column
:show-overflow-tooltip="true"
width="280"
prop="updateDate"
label="上架时间"
header-align="center"
align="center"
></el-table-column> -->
<el-table-column
label="操作"
fixed="right"
header-align="center"
align="center"
>
<template slot-scope="scope">
<el-button
type="text"
size="small"
@click="UpdateData(scope.row)"
>{{ $t('update') }}</el-button
>
<!-- <el-button
type="text"
size="small"
@click="deleteHandle2(scope.row.id)"
>{{ $t('delete') }}</el-button
> -->
<el-button type="text" size="small" @click="showDetail(scope.row)"
>详情</el-button
>
<el-button type="text" size="small"
>标签化</el-button
>
</template>
</el-table-column>
</el-table>
<el-pagination @current-change="handleCurrentChange" layout="total, prev, pager, next, jumper"
:total="total" :page-size="pageSize" :current-page="currentPage">
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update
:disabled="disabled"
v-if="addOrUpdateVisible"
ref="addOrUpdate"
@refreshDataList="getDataList"
></add-or-update>
<relate-application
v-if="relateApplicationVisible"
ref="relateApplication"
:nameArray="['未关联应用名称', '已关联应用名称']"
:relateInfo="relateInfo"
@isShowRelatePopup="handleIsShowRelatePopup"
></relate-application>
</div>
<el-dialog
title="选择组件类型"
:visible.sync="showPutOnTheShelfFlag"
:close-on-click-modal="false"
:close-on-press-escape="false"
:before-close="clear"
width="30%"
>
<el-radio v-model="radio" label="智能算法">智能算法</el-radio>
<el-radio v-model="radio" label="图层服务">GIS图层</el-radio>
<el-radio v-model="radio" label="开发组件">通用能力组件</el-radio>
<el-radio v-model="radio" label="业务组件">业务能力组件</el-radio>
<span slot="footer" class="dialog-footer">
<el-button @click="clear"> </el-button>
<el-button type="primary" @click="showPutOnTheShelfVue"
> </el-button
>
</span>
</el-dialog>
<el-dialog
title="盘点入库"
:visible.sync="showPutOnTheShelfFlag2"
:close-on-click-modal="false"
:close-on-press-escape="false"
:destroy-on-close="true"
:before-close="clear"
width="50%"
>
<putOnTheShelf
ref="putOnTheShelf"
:putOnTheShelfList="putOnTheShelfList"
@changeInfoList="changeInfoList"
:type="radio"
:typeInput="typeInput"
:required="required"
:notFilled="notFilled"
@submitData="submitData"
></putOnTheShelf>
<span slot="footer" class="dialog-footer">
<el-button @click="clear"> </el-button>
<el-button type="primary" @click="submitData"> </el-button>
</span>
</el-dialog>
</el-card>
</template>
<script>
//import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './bsabilityai-add-or-update'
import dictionaries from '@/utils/dictionaries'
import qs from 'qs'
import { pinyin } from 'pinyin-pro'
import RelateApplication from './bsabilityai-relate-application.vue'
import putOnTheShelf from '@/views/modules/putOnTheShelf'
export default {
// mixins: [mixinViewModule], @selection-change="dataListSelectionChangeHandle"
data () {
return {
required: ['归属部门', '部门联系人', '部门联系人电话', '应用领域', '共享条件', '算法名称', '算法描述', '图层名称', '图层描述', '组件名称', '组件描述', '组件地址', '服务地址', '服务接口', '接口请求方式', '算法类别'],
notFilled: [],
insertList: [],
putOnTheShelfList: [],
radio: '',
showPutOnTheShelfFlag: false,
showPutOnTheShelfFlag2: false,
submitFrom: {
type: '组件服务',
deptId: '',
delFlag: 0,
infoList: [
{
attrType: '组件类型',
attrValue: '图层服务',
delFlag: 0,
}
]
},
mixinViewModuleOptions: {
getDataListURL: '/resource/page',
getDataListIsPage: true,
exportURL: '/ability/bsabilityai/export',
deleteURL: '/resource/delete',
deleteIsBatch: true
},
disabled: false,
sceneArr: dictionaries.sceneArr,
fieldArr: dictionaries.fieldArr,
shareFormArr: dictionaries.shareFormArr,
dataForm: {
name: '',
creator: '',
delFlag: 0,
selectType: 0,
type: '组件服务'
},
// qp: false,
//
relateApplicationVisible: false,
relateInfo: {
id: '',
responseData: {},
linkType: ''
},
typeInput: '组件服务',
uuidOne: '',
uuidTwo: '',
uuidSnum: '',
addOrUpdateVisible:false,
dataList:[],
dataListLoading:false,
currentPage: 1,
pageSize: 10,
total: null,
dataListSelections:[]
}
},
watch: {},
components: {
AddOrUpdate,
RelateApplication,
putOnTheShelf
},
created () {
this.dataForm.name = ''
this.dataForm.type = '组件服务'
},
mounted () {
this.getDataList();
},
methods: {
//
getDataList(){
//console.log('');
let params = {
deptIds: [],
districtId: '',
infoList: [{ attrType: '组件类型', attrValue: '开发组件' }],
name: '',
orderField: 'total',
orderType: 'DESC',
pageNum: this.currentPage,
pageSize: 10,
type: 'GIS图层',
};
this.$http.post(`/resource/pageWithAttrs`, params).then((res) => {
this.dataList = res.data.data.records;
this.total = parseInt(res.data.data.total);
})
},
handleCurrentChange (val) {
console.log('val------------>', val)
this.currentPage = val;
this.getDataList();
},
//
deleteHandle2 (id) {
console.log('删除========================》', id, this.dataListSelections)
const ids = []
if (id) {
ids.push(id)
} else {
if (this.dataListSelections.length > 0) {
this.dataListSelections.forEach(item => {
ids.push(item.id)
})
}
}
this.$http.post('/resource/delete', { ids: ids }).then(res => {
console.log('删除成功', res)
this.getDataList()
})
},
//
handleSelectionChange(val){
this.dataListSelections = val;
},
//
toppingCapacity (item) {
this.$http.put('/resource/pin_top/' + item.id).then(res => {
console.log('置顶', res.data.code)
if (res.data.code == 0) {
this.$message({
message: '置顶成功',
type: 'success'
})
} else {
this.$message({
message: '置顶失败',
type: 'warning'
})
}
})
},
reset () {
this.getDataList();
},
findValue (list, type) {
const found = list.find((item) => item.attrType === type)
if (found) {
return found.attrValue
} else {
return '暂无数据'
}
},
showDetail (val) {
console.log(val)
window.open(window.SITE_CONFIG.previewUrl + '#/details?id=' + val.id)
// this.addOrUpdateHandle(id)
// this.addOrUpdateVisible = true
// this.disabled = false
// this.$nextTick(() => {
// this.$refs.addOrUpdate.UpdateState = false
// this.$refs.addOrUpdate.dataFormShowDetails = val
// this.$refs.addOrUpdate.init()
// })
// this.disabled = true
},
// uuid
uuid (len, radix) {
var chars =
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
var uuid = []
var i
radix = radix || chars.length
if (len) {
// Compact form
for (i = 0; i < len; i++) uuid[i] = chars[0 | (Math.random() * radix)]
} else {
// rfc4122, version 4 form
var r
// rfc4122 requires these characters
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'
uuid[14] = '4'
// Fill in random data. At i==19 set the high bits of clock sequence as
// per rfc4122, sec. 4.1.5
for (i = 0; i < 36; i++) {
if (!uuid[i]) {
r = 0 | (Math.random() * 16)
uuid[i] = chars[i == 19 ? (r & 0x3) | 0x8 : r]
}
}
}
return uuid.join('')
},
uuidSplice () {
this.uuidOne = this.uuid(13, 16)
this.uuidTwo = this.uuid(13, 16)
this.uuidSnum = this.uuidOne + this.uuidTwo
this.uuidSnum = this.uuidSnum.replace(/\s+/g, '')
console.log('this.uuidOne', this.uuidSnum)
},
showDocument (val) {
//
//
this.uuidSplice()
const uuidParam = val.infoList.filter((item) => {
if (item.attrType === '技术文档') {
return item
}
})
if (uuidParam.length > 0) {
this.uuidSnum = uuidParam[0].attrValue.split('/')[1].split('.')[0]
} else {
const type = pinyin(val.type, {
pattern: 'initial'
}).replace(/\s*/g, '')
const obj = {
attrType: '技术文档',
attrValue: type + '/' + this.uuidSnum + '.md',
delFlag: 0
}
val.infoList.push(obj)
}
//
this.$http
.put('/resource/update', val)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
//
window.open(
window.SITE_CONFIG.frontUrl + '?id=' + this.uuidSnum + '&&type=' + val.type,
'_blank'
)
}
})
})
.catch(() => {})
// update
},
getDataList2 (names) {
if (names != null) {
this.$http
.get(
this.mixinViewModuleOptions.getDataListURL +
'?' +
qs.stringify({
// order: this.order,
// orderField: this.orderField,
// type: '',
pageNum: 1,
pageSize: this.limit,
type: '组件服务',
creator: '',
selectType: 0,
delFlag: 0,
name: names,
})
)
.then(({ data: res }) => {
if (res.code !== 0) {
this.dataList = []
this.total = 0
return this.$message.error(res.msg)
}
if (res.data.list.length !== 0) {
this.dataList = res.data.list
this.total = this.mixinViewModuleOptions.getDataListIsPage
? res.data.total
: 0
if (this.mixinViewModuleOptions.requestCallback) {
this.mixinViewModuleOptions.requestCallback(res.data)
}
this.dataListLoading = false
this.dataList.map((item, index) => {
const dataListSinforList = []
item.infoList.map((itemson, indexson) => {
if (
itemson.attrType === '应用领域' ||
itemson.attrType === '组件类型'
) {
dataListSinforList.push(itemson)
}
})
this.dataList[index].infoList2 = dataListSinforList
})
} else {
this.$message.error('未查询到相关信息')
this.reset()
}
})
.catch(() => {
this.dataListLoading = false
})
} else {
this.$message.error('查询信息不能为空')
}
},
// fullScreen () {
// if (window.outerHeight === screen.availHeight) {
// if (window.outerWidth === screen.availWidth) {
// this.qp = false
// } else {
// this.qp = true
// }
// } else {
// this.qp = true
// }
// },
//
showRelateApplication (row) {
this.$http
.get(
`dataResourceRel/queryApplicationRelByResourceId?referenceId=${row.id}`
)
.then(({ data: res }) => {
if (res && res.data) {
this.relateApplicationVisible = true
this.relateInfo = {
id: row.id,
responseData: res.data,
linkType: '2'
}
}
})
.catch(() => {})
},
//
handleIsShowRelatePopup (type) {
this.relateApplicationVisible = type
},
//
clear () {
console.log('清空----------------------------------------')
this.notFilled = []
this.showPutOnTheShelfFlag = false
this.showPutOnTheShelfFlag2 = false
this.insertList = []
this.putOnTheShelfList = []
this.radio = ''
this.submitFrom = {
type: '组件服务',
deptId: '',
delFlag: 0,
infoList: [
{
attrType: '组件类型',
attrValue: '图层服务',
delFlag: 0
}
]
}
this.reset()
},
showPutOnTheShelf () {
this.showPutOnTheShelfFlag = true
this.$http.get('/category/getCategoryTree').then((res) => {
this.insertList = res.data.data.filter(
(item) => item.name === '组件服务一'
)[0]
})
},
showPutOnTheShelfVue () {
this.showPutOnTheShelfFlag = false
this.showPutOnTheShelfFlag2 = true
this.submitFrom.infoList[0].attrValue = this.radio
this.putOnTheShelfList = this.insertList.children.filter(
(item) => item.name === this.radio
)[0].children
},
changeInfoList (obj) {
console.log(obj, this.submitFrom)
this.submitFrom.infoList = this.submitFrom.infoList.filter(
(item) => item.attrType !== obj.attrType
)
this.submitFrom.infoList.push(obj)
},
changeAdd () {
const arr = []
switch (this.radio) {
case '智能算法':
arr.push('算法优势')
arr.push('计费标准信息')
break
case '开发组件':
case '业务组件':
arr.push('功能介绍')
break
}
arr.push('应用场景')
arr.push('常见问题')
this.$refs.putOnTheShelf.submit(arr)
},
submitData () {
console.log('提交11111111111===============>', this.putOnTheShelfList, this.submitFrom)
const arr = []
this.putOnTheShelfList.map((item) => {
item.children.map((child) => {
if (child.children) {
if (
child.name === '算法优势' ||
child.name === '应用场景' ||
child.name === '功能介绍'
) {
arr.push(child.name)
if (
this.submitFrom.infoList.filter(
(value) => value.attrType === child.name
).length === 0
) {
this.submitFrom.infoList.push({
attrType: child.name,
attrValue: child.note1,
delFlag: 0
})
}
}
child.children.map((val) => {
arr.push(val.name)
if (
val.type === 'input' ||
val.type === 'textArea' ||
val.type === 'select' ||
val.type === 'checkBox' ||
val.type === 'radio'
) {
this.submitFrom.infoList = this.submitFrom.infoList.filter(
(item) => item.attrType !== val.name
)
}
if (val.note1 == '' || val.note1) {
switch (val.name) {
case '算法名称':
case '应用名称':
case '组件名称':
case '图层名称':
this.submitFrom.name = val.note1
break
case '算法描述':
case '应用描述':
case '组件描述':
case '图层描述':
this.submitFrom.description = val.note1
break
case '共享条件':
this.submitFrom.shareCondition = val.note1
break
case '共享类型':
this.submitFrom.shareType = val.note1
break
case '服务接口':
this.submitFrom.apiUrl = val.note1
break
case '接口请求方式':
this.submitFrom.apiMethodType = val.note1
break
case '访问地址':
this.submitFrom.link = val.note1
break
case '部门联系人':
this.submitFrom.deptContacts = val.note1
break
case '部门联系人电话':
this.submitFrom.deptPhone = val.note1
break
case '归属部门':
this.submitFrom.deptId = val.note1
break
case '能力类型':
this.submitFrom.type = val.note1
break
default:
if (
val.type !== 'image' &&
val.type !== 'file' &&
val.type !== 'video'
) {
this.submitFrom.infoList.push({
attrType: val.name,
attrValue: val.note1,
delFlag: 0
})
} else {
if (
this.submitFrom.infoList.filter(
(value) => value.attrType === val.name
).length === 0
) {
this.submitFrom.infoList.push({
attrType: val.name,
attrValue: val.note1,
delFlag: 0,
note2: val.note2 || null
})
}
}
break
}
}
})
}
})
})
this.submitFrom.infoList = this.submitFrom.infoList.sort(
(a, b) => arr.indexOf(a.attrType) - arr.indexOf(b.attrType)
)
this.notFilled = []
if (!this.submitFrom.name) {
this.notFilled.push('算法名称')
this.notFilled.push('图层名称')
this.notFilled.push('组件名称')
}
if (!this.submitFrom.description) {
this.notFilled.push('算法描述')
this.notFilled.push('图层描述')
this.notFilled.push('组件描述')
}
if (!this.submitFrom.shareCondition) {
this.notFilled.push('共享条件')
}
if (!this.submitFrom.deptContacts) {
this.notFilled.push('部门联系人')
}
if (!this.submitFrom.deptId) {
this.notFilled.push('归属部门')
}
if (!this.submitFrom.deptPhone) {
this.notFilled.push('部门联系人电话')
}
if (this.radio === '智能算法' && !this.submitFrom.apiUrl) {
if ((this.submitFrom.infoList.filter(val => val.attrType === '使用方式')[0].attrValue === '调用接口')) {
this.notFilled.push('服务接口')
}
}
if (this.radio === '智能算法' && !this.submitFrom.apiMethodType) {
if ((this.submitFrom.infoList.filter(val => val.attrType === '使用方式')[0].attrValue === '调用接口')) {
this.notFilled.push('接口请求方式')
}
}
if (this.radio === '智能算法' && (!this.submitFrom.infoList.filter(val => val.attrType === '算法类别')[0] || !this.submitFrom.infoList.filter(val => val.attrType === '算法类别')[0].attrValue)) {
this.notFilled.push('算法类别')
}
if (!this.submitFrom.infoList.filter(val => val.attrType === '应用领域')[0] || !this.submitFrom.infoList.filter(val => val.attrType === '应用领域')[0].attrValue) {
this.notFilled.push('应用领域')
}
if (this.radio === '图层服务' && (!this.submitFrom.infoList.filter(val => val.attrType === '服务地址')[0] || !this.submitFrom.infoList.filter(val => val.attrType === '服务地址')[0].attrValue)) {
this.notFilled.push('服务地址')
}
if ((this.radio === '业务组件' || this.radio === '开发组件') && (!this.submitFrom.infoList.filter(val => val.attrType === '组件地址')[0] || !this.submitFrom.infoList.filter(val => val.attrType === '组件地址')[0].attrValue)) {
this.notFilled.push('组件地址')
}
console.log(this.submitFrom, this.notFilled, '表单验证')
if (this.notFilled.length > 0) {
this.$message({
message: '请填写必填字段!',
type: 'warning'
})
} else {
if (this.submitFrom.id) {
//
this.submitFrom.infoList.map((val) => {
if (val.attrType === '组件类型') {
val.attrValue = this.radio
}
})
console.log('编辑===============>', this.submitFrom)
console.log(this.submitFrom.infoList, '===============abc')
//
const newArr = this.submitFrom.infoList.filter(
(element, index, self) => {
return (
self.findIndex((x) => x.attrType === element.attrType) === index
)
}
)
this.submitFrom.infoList = newArr
//
this.submitFrom.infoList = this.submitFrom.infoList.filter(item => item.attrValue)
this.$http
.put('/resource/update', this.submitFrom)
.then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error('修改失败!')
} else {
this.$message.success('修改成功!')
this.clear()
}
})
.catch(() => {})
} else {
console.log('提交11111111111===============>', this.putOnTheShelfList, this.submitFrom)
this.$http
.post('/resource/insert?source= b', this.submitFrom)
.then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error('上架失败!')
} else {
this.$message.success('上架成功!')
this.clear()
}
})
.catch(() => {})
}
}
},
//
UpdateData (item) {
this.$http.get('/category/getCategoryTree').then((res) => {
this.insertList = res.data.data.filter(
(item) => item.name === '组件服务一'
)[0]
this.radio = item.infoList.filter(
(val) => val.attrType === '组件类型'
)[0].attrValue
this.putOnTheShelfList = this.insertList.children.filter(
(item) => item.name === this.radio
)[0].children
this.putOnTheShelfList.map((parent) => {
parent.children.map((child) => {
if (
child.name === '算法优势' ||
child.name === '应用场景' ||
child.name === '功能介绍'
) {
const obj = item.infoList.filter(
(val) => val.attrType === child.name
)[0]
if (obj) {
child.note1 = obj.attrValue
}
} else {
if (child.children) {
child.children.map((data) => {
if (
data.name === '计费标准信息' ||
data.name === '常见问题'
) {
const obj = item.infoList.filter(
(val) => val.attrType === child.name
)[0]
if (obj) {
data.note1 = obj.attrValue
}
} else {
switch (data.name) {
case '算法名称':
case '应用名称':
case '组件名称':
case '图层名称':
data.note1 = item.name
break
case '算法描述':
case '应用描述':
case '组件描述':
case '图层描述':
data.note1 = item.description
break
case '共享条件':
data.note1 = item.shareCondition
break
case '共享类型':
data.note1 = item.shareType
break
case '服务接口':
data.note1 = item.apiUrl
break
case '接口请求方式':
data.note1 = item.apiMethodType
break
case '访问地址':
data.note1 = item.link
break
case '部门联系人':
data.note1 = item.deptContacts
break
case '部门联系人电话':
data.note1 = item.deptPhone
break
case '归属部门':
data.note1 = item.deptId
break
case '能力类型':
data.note1 = item.type
break
default:
// eslint-disable-next-line no-case-declarations
const obj1 = item.infoList.filter(
(val) => val.attrType === data.name
)[0]
if (obj1) {
data.note1 = obj1.attrValue
}
break
}
if (
data.type === 'image' ||
data.type === 'file' ||
data.type === 'video'
) {
const obj1 = item.infoList.filter(
(val) => val.attrType === data.name
)[0]
if (obj1) {
data.note2 = obj1.note2
}
}
}
})
}
}
})
})
this.submitFrom.id = item.id
this.showPutOnTheShelfFlag2 = true
})
}
}
}
</script>
<style lang="scss" scoped>
.el-tooltip__popper {
max-width: 50%;
}
// ::v-deep .el-table .cell {
// width: 200px;
// }
::v-deep .el-upload-list__item-name {
width: 400px;
}
</style>

View File

@ -16,7 +16,7 @@
</el-transfer>
</div>
<div v-else-if="type==='数据资源'" class="dataTransfer">
<el-transfer v-model="selectedArray" filter-placeholder="请输入名称"
<!-- <el-transfer v-model="selectedArray" filter-placeholder="请输入名称"
:titles="nameArray" :props="{
key: 'id',
label: 'name',
@ -26,9 +26,10 @@
v-model="searchValue"
placeholder="请输入名称"
></el-input>
<el-button @click="rest" class="restClick">重置</el-button>
<el-button @click="rest" class="restClick">重置</el-button> -->
<data-resource-tranfer @updateData="updateResourceDataForm" :selected-data="selectedData" :type="type"></data-resource-tranfer>
</div>
<el-pagination
<!-- <el-pagination
v-if="type==='数据资源'"
:current-page="currentPage"
:page-size="15"
@ -36,7 +37,7 @@
:total="total"
@current-change="pageCurrentChangeHandle"
>
</el-pagination>
</el-pagination> -->
<template slot="footer">
<el-button @click="showModal = false">{{ $t("cancel") }}</el-button>
<el-button type="primary" @click="confirmSubmitHandle()">{{
@ -52,7 +53,7 @@
<script>
import InfrastructureModal from '../assignedScene/components/infrastructure-modal.vue'
import DisplayList from '../assignedScene/components/display-list.vue'
import dataResourceTranfer from './data-resource-tranfer.vue'
const sjzyArray = [
{
zyname: '城阳区图书馆总分馆、社区图书室明细信息',
@ -199,7 +200,9 @@ export default {
total: 0,
currentPage: 1,
newNum: 1,
searchValue: ''
searchValue: '',
selectedData:[],
newResourceData:[]
}
},
watch: {
@ -223,22 +226,34 @@ export default {
},
methods: {
async getDataInfo (dataForm) {
console.log('dataForm-----====',dataForm);
console.log('this.type',this.type);
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);
this.selectedData = 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.displayList = Array.from(new Set(this.displayList))
//
this.selectedArray = arr.map(v => v.id)
this.$nextTick(() => {
@ -277,7 +292,7 @@ export default {
this.$http[this.getDataParams.methods](this.getDataParams.url,
this.getDataParams.postData
).then(res => {
console.log('res.data----获取列表-------->', res.data)
console.log('res.data----数据资源获取列表-------->', res.data)
this.total = Number(res.data.data.rows)
if (res.data.code !== 0) {
return this.$message.error(res.msg)
@ -288,20 +303,61 @@ 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))
this.allData = JSON.parse(JSON.stringify(this.transferData));
//console.log('this.transferData======43434',this.transferData);
//console.log('res.data----retretryry-------->', this.transferData)
}).catch(err => {
this.$message.error(err)
this.$message.error('未搜索到相关数据资源')
})
}
},
//
updateResourceDataForm(data){
let obj = {};
data = data.list.reduce(function(item, next) {
obj[next.id] ? '' : obj[next.id] = true && item.push(next);
return item;
}, []);
console.log('变化后的数据222',data);
this.newResourceData = data;
},
filterMethod (query, item) {
console.log('1111111111111111111111111')
return item.name && item.name.indexOf(query) > -1
},
confirmSubmitHandle () {
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
// })
if (this.newResourceData.length > this.maxNum) {
return this.$message.error('最多选择十条数据!')
}
this.$emit('update', {
title: this.type,
list: this.newResourceData
});
this.displayList = this.newResourceData;
this.showModal = false
}else{
this.$emit('update', {
title: this.type,
list: this.selectedArray
})
if (this.selectedArray.length > this.maxNum) {
return this.$message.error('最多选择十条数据!')
}
@ -312,10 +368,12 @@ export default {
this.displayList.push(v)
}
})
this.$emit('update', {
title: this.type,
list: this.selectedArray
})
this.displayList = Array.from(new Set(this.displayList))
console.log(this.selectedArray, this.displayList, 'this.displayList')
}
},
handleChange(){
//console.log('222222',this.selectedArray);
},
getDisplay (displayList) {
this.displayList = []
@ -345,9 +403,10 @@ export default {
this.getData()
}
},
components: { InfrastructureModal, DisplayList },
components: { InfrastructureModal, DisplayList,dataResourceTranfer },
mounted () {
console.log(this.type, 'this.type')
}
}
</script>

View File

@ -0,0 +1,415 @@
<template>
<div class="transfer">
<div class="leftTransfer">
<div class="leftTransfer_title">
<el-checkbox
:indeterminate="left.isIndeterminate"
v-model="left.checkAll"
@change="leftHandleCheckAllChange"
>{{ titles[0] }}</el-checkbox
>
<span
>{{ left.transferDataChecked.length }}/{{
left.transferData.length
}}</span
>
</div>
<el-input
@input="transferInputLeft"
class="transfer_input"
placeholder="请输入内容"
prefix-icon="el-icon-search"
v-model="left.inputValue"
>
</el-input>
<el-checkbox-group
class="transfer_group"
v-model="left.transferDataChecked"
@change="leftHandleCheckedCitiesChange"
>
<el-checkbox
v-for="item in left.transferData"
:label="item"
:key="item[defaultProps.id]"
>{{ item[defaultProps.label] }}</el-checkbox
>
</el-checkbox-group>
<el-pagination
:current-page="currentPage"
:page-size="15"
layout="total, prev, pager, next"
:total="total"
@current-change="handleCurrentChange"
>
</el-pagination>
</div>
<div class="transferButton">
<el-button type="primary" @click="push">></el-button>
<el-button type="primary" @click="del">{{ "<" }}</el-button>
</div>
<div class="rightTransfer">
<div class="rightTransfer_title">
<el-checkbox
:indeterminate="right.isIndeterminate"
v-model="right.checkAll"
@change="rightHandleCheckAllChange"
>{{ titles[1] }}</el-checkbox
>
<span
>{{ right.transferDataChecked.length }}/{{
right.transferData.length
}}</span
>
</div>
<el-input
@input="transferInputRight"
class="transfer_input"
placeholder="请输入内容"
prefix-icon="el-icon-search"
v-model="right.inputValue"
>
</el-input>
<div style="margin: 5px 0"></div>
<el-checkbox-group
class="transfer_group"
v-model="right.transferDataChecked"
@change="rightHandleCheckedCitiesChange"
>
<el-checkbox
v-for="item in right.transferData"
:label="item"
:key="item[defaultProps.id]"
>{{ item[defaultProps.label] }}</el-checkbox
>
</el-checkbox-group>
</div>
</div>
</template>
<script>
//import { listUser } from "@/api/system/user";
export default {
name: "transferPage",
props: {
titles: {
type: Array,
default: () => ["待选列表", "已选列表"],
},
selectedData: {
type: Array,
default: () => []
},
type: {
type: String,
default: ''
},
},
data() {
return {
left: {
inputValue: "",
isIndeterminate: false, //
checkAll: false, //
transferData: [], //穿
transferDataAll: [], //穿
transferDataChecked: [], //穿
},
right: {
inputValue: "",
isIndeterminate: false, //
checkAll: false, //
transferData: [], //穿
transferDataAll: [], //穿
transferDataChecked: [], //穿
},
total: 0,
currentPage: 1,
queryParams: {
current: 1,
size: 10,
},
getDataParams:{
methods: "post",
url: "/resource/getDataResource",
postData: {
serviceName: "",
orderField: "fbrq",
orderType: "desc",
pageNum: 1,
pageSize: 15
}
},
defaultProps: {
label: "name",
id: "id",
},
};
},
created() {
this.initTransferData();
},
watch: {
// selectedData:{
// handler (newName, oldName) {
// console.log('',newName);
// this.right.transferData = newName
// }
// },
right: {
handler (newName, oldName) {
//console.log('nnnnnn',newName);
this.$emit('updateData', {
title: "选中的数据资源",
list: newName.transferData
})
},
immediate: false,
deep: true
}
},
methods: {
//
initTransferData() {
this.$http[this.getDataParams.methods](this.getDataParams.url,
this.getDataParams.postData
).then(response => {
console.log('数据资源response---->',response.data.data.data);
let responseDataList = [];
(response.data.data.data || []).map(v => {
responseDataList.push({
type: this.type,
id: v.guid,
name: v.zyname || '--',
deptName:v.TGBM,
resourceName:v.zyname
})
});
this.left.transferData = responseDataList;
this.left.transferData.map((item, index) => {
item.current = this.currentPage;
});
this.total = Number(response.data.data.rows);
this.left.transferDataAll = this.left.transferData;
// id
let checkedIdArr = this.right.transferData.map((item) => {
return item[this.defaultProps.id];
});
//
this.left.transferData = this.left.transferData.filter((item) => {
if (!checkedIdArr.includes(item[this.defaultProps.id])) {
return item;
}
});
});
let selectedDataRight = [];
this.selectedData = JSON.parse(JSON.stringify(this.selectedData));
(this.selectedData || []).map(v => {
selectedDataRight.push({
type: v.resource.type,
id: v.resource.resourceId,
name: v.resource.resourceName,
deptName:v.resource.deptName,
})
});
selectedDataRight.map(v => {
this.right.transferData.push(v);
});
let obj = {};
this.right.transferData = this.right.transferData.reduce(function(item, next) {
obj[next.id] ? '' : obj[next.id] = true && item.push(next);
return item;
}, []);
this.right.transferDataAll = this.right.transferData;
//console.log('this.selectedData',this.selectedData);
//console.log('left',this.left);
//console.log('rigth',this.right);
},
//
leftHandleCheckAllChange(val) {
this.left.transferDataChecked = val ? this.left.transferData : [];
this.left.isIndeterminate = false;
},
//
leftHandleCheckedCitiesChange(value) {
let checkedCount = value.length;
this.left.checkAll = checkedCount === this.left.transferData.length;
this.left.isIndeterminate =
checkedCount > 0 && checkedCount < this.left.transferData.length;
},
//
rightHandleCheckAllChange(val) {
this.right.transferDataChecked = val ? this.right.transferData : [];
this.right.isIndeterminate = false;
},
//
rightHandleCheckedCitiesChange(value) {
let checkedCount = value.length;
this.right.checkAll = checkedCount === this.right.transferData.length;
this.right.isIndeterminate =
checkedCount > 0 && checkedCount < this.right.transferData.length;
},
// 穿
push() {
//
this.right.transferData = [
...this.right.transferData,
...this.left.transferDataChecked,
].sort((a, b) => {
return a[this.defaultProps.id] - b[this.defaultProps.id];
});
this.right.transferDataAll = this.right.transferData;
// id
let checkedIdArr = this.right.transferData.map((item) => {
return item[this.defaultProps.id];
});
//
this.left.transferData = this.left.transferData.filter((item) => {
if (!checkedIdArr.includes(item[this.defaultProps.id])) {
return item;
}
});
this.left.transferDataAll = this.left.transferData;
//
this.left.transferDataChecked = [];
this.left.isIndeterminate = false;
this.left.checkAll = false;
},
// 穿 current
del() {
//
let arr = this.right.transferDataChecked.filter((item) => {
if (this.queryParams.current == item.current) {
return item;
}
});
//
this.left.transferData = [...this.left.transferData, ...arr].sort(
(a, b) => {
return a[this.defaultProps.id] - b[this.defaultProps.id];
}
);
this.left.transferDataAll = this.left.transferData;
// id
let checkedIdArr = this.right.transferDataChecked.map((item) => {
return item[this.defaultProps.id];
});
//
this.right.transferData = this.right.transferData.filter((item) => {
if (!checkedIdArr.includes(item[this.defaultProps.id])) {
return item;
}
});
this.right.transferDataAll = this.right.transferData;
//
this.right.transferDataChecked = [];
this.right.isIndeterminate = false;
this.right.checkAll = false;
},
handleCurrentChange(val) {
//console.log('valval',val);
this.getDataParams.postData.pageNum = val;
this.initTransferData();
},
transferInputLeft() {
if (this.left.inputValue) {
this.left.transferData = this.left.transferData.filter(
(p) => p[this.defaultProps.label].indexOf(this.left.inputValue) !== -1
);
} else {
this.left.transferData = this.left.transferDataAll;
}
},
transferInputRight() {
if (this.right.inputValue) {
this.right.transferData = this.right.transferData.filter(
(p) =>
p[this.defaultProps.label].indexOf(this.right.inputValue) !== -1
);
} else {
this.right.transferData = this.right.transferDataAll;
}
},
},
};
</script>
<style lang="scss" scoped>
.transfer {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
margin: 0 auto;
.transferButton {
.el-button {
display: block;
margin: 10px 0;
}
}
.el-checkbox {
line-height: 30px;
}
.transfer_input {
margin: 10px 15px 0 15px;
width: 85%;
.el-input--medium .el-input__inner {
height: 36px;
line-height: 36px;
border-radius: 16px;
}
}
.leftTransfer,
.rightTransfer {
height: 510px;
border: 1px solid #e6ebf5;
border-radius: 4px;
overflow: hidden;
background: #ffffff;
display: inline-block;
vertical-align: middle;
width: 360px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
position: relative;
margin: 0 10px;
.el-checkbox {
display: block;
}
.el-input {
position: absolute;
font-size: 14px;
display: inline-block;
width: 70%;
top: 40px;
}
.pagination {
position: absolute;
bottom: -8px;
right: 0;
}
.leftTransfer_title,
.rightTransfer_title {
display: flex;
justify-content: space-between;
height: 40px;
line-height: 40px;
background: #f5f7fa;
margin: 0;
padding-left: 15px;
border-bottom: 1px solid #e6ebf5;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: #000000;
padding-right: 15px;
align-items: center;
}
}
}
.transfer_group {
padding-left: 15px;
margin-top: 50px;
height: 390px;
overflow-y: auto;
}
</style>

View File

@ -0,0 +1,172 @@
<template>
<div class="tag-directory-box">
<div class="left-tree-box">
<el-form :inline="true" :model="dataForm" style="margin-left:10px">
<el-form-item>
<el-input v-model="dataForm.dictLabel" placeholder="标签名称" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="query">标签检索</el-button>
</el-form-item>
<div class="tree-box">
<el-tree ref="treeDom" class="filter-tree" :data="dataListCopy" :props="defaultProps" node-key="id"
:highlight-current="true" :default-expanded-keys="[defaultNode]" @node-click="handleNodeClick"
:filter-node-method="filterNode">
</el-tree>
</div>
</el-form>
</div>
<div class="right-detail">
<div class="title">标签详情查看</div>
<el-form :model="rowData" label-width="120px">
<el-form-item prop="dictName" label="标签名称">
<el-input v-model="rowData.dictName" :placeholder="$t('dict.dictName')"></el-input>
</el-form-item>
<el-form-item prop="dictType" label="标签编号">
<el-input v-model="rowData.dictType" placeholder="标签编号"></el-input>
</el-form-item>
<el-form-item prop="dictType" label="标签分类" style="width:100%">
<el-input v-model="rowData.dictType" placeholder="标签分类"></el-input>
</el-form-item>
<el-form-item prop="remark" :label="$t('dict.remark')" style="width:100%">
<el-input type="textarea" :rows="4" v-model="rowData.remark" :placeholder="$t('dict.remark')">
</el-input>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
export default {
mixins: [mixinViewModule],
data() {
return {
mixinViewModuleOptions: {
getDataListURL: '/sys/dict/type/page',
getDataListIsPage: true,
deleteURL: '/sys/dict/type',
deleteIsBatch: true
},
dataForm: {
id: '0',
dictName: '',
dictType: '',
dictLabel: '',
limit: 99999999,
},
filterText: '',
dataList: [],
dataListCopy: [],
defaultProps: {
children: 'sysDictDataDTOList',
label: 'dictName'
},
defaultNode: '',
rowData: {},
}
},
watch: {
filterText(val) {
this.$refs.treeDom.filter(val);
},
dataList: {
handler(newVal) {
this.dataListCopy = [];
this.defaultNode = null;
this.rowData = {};
newVal.map((v, i) => {
v.id = `${v.id}`;
if (i == 0) {
this.defaultNode = v.id;
this.rowData = v;
this.$nextTick(() => {
this.$refs.treeDom.setCurrentKey(this.defaultNode); //
});
}
if (v.sysDictDataDTOList && v.sysDictDataDTOList.length && v.sysDictDataDTOList.length > 0) {
v.sysDictDataDTOList.map(x => {
x.id = `${x.id}`;
x.dictName = x.dictLabel;
return x
})
}
this.dataListCopy.push(v)
})
},
deep: true,
}
},
methods: {
filterNode(value, data) {
if (!value) return true;
return data.label.indexOf(value) !== -1;
},
handleNodeClick(data) {
this.rowData = data
},
},
}
</script>
<style scoped lang="scss">
.tag-directory-box {
display: flex;
align-items: flex-start;
width: 100%;
}
::v-deep .el-tree {
min-height: calc(calc(100vh - 50px - 38px - 30px) - 164px);
background: #fff;
}
::v-deep .el-tree-node__content {
height: 32px;
}
::v-deep .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
background: #0058e1;
color: #fff;
}
.left-tree-box {
// width: 350px;
padding: 20px 0;
// min-height: calc(calc(100vh - 50px - 38px - 30px) - 62px);
background: #fff;
}
.right-detail {
flex: 1;
margin-left: 20px;
padding: 20px;
min-height: calc(calc(100vh - 50px - 38px - 30px) - 62px);
background: #fff;
}
.right-detail {
.el-form {
display: flex;
width: 100%;
align-items: center;
flex-wrap: wrap;
}
.el-form-item {
width: 50%;
}
}
.title {
line-height: 24px;
font-size: 20px;
color: #303133;
padding-bottom: 25px;
}
</style>

View File

@ -0,0 +1,62 @@
<template>
<el-dialog :visible.sync="visible" title="生命周期管理" :close-on-click-modal="false" :close-on-press-escape="false">
<div class="title">{{ rowData.dictName }}</div>
<el-table :data="dataList" border style="width: 100%;">
<el-table-column prop="status" label="状态" header-align="center" align="center"></el-table-column>
<el-table-column prop="time" label="时间" header-align="center" align="center"></el-table-column>
<el-table-column prop="remark" label="备注" header-align="center" align="center"></el-table-column>
<el-table-column prop="operator" label="操作者" header-align="center" align="center"></el-table-column>
</el-table>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
</template>
</el-dialog>
</template>
<script>
export default {
data() {
return {
visible: false,
dataList: [
{
status: '创建',
time: '2022-10-11',
remark: '创建',
operator: '管理员'
},
{
status: '修改',
time: '2022-09-24',
remark: '修改标签描述',
operator: '管理员'
},
{
status: '修改',
time: '2022-09-19',
remark: '补充城市管理标签页',
operator: '城管账号'
},
{
status: '删除',
time: '2022-08-11',
remark: '停止使用',
operator: '管理员'
},
],
rowData: {}
}
},
methods: {
}
}
</script>
<style scoped>
.title {
line-height: 24px;
font-size: 20px;
color: #303133;
padding-bottom: 25px;
}
</style>

View File

@ -0,0 +1,102 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-sys__dict">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input v-model="dataForm.dictName" placeholder="分类名称" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="addOrUpdateHandle()">新增标签分类</el-button>
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border
@selection-change="dataListSelectionChangeHandle" @sort-change="dataListSortChangeHandle"
style="width: 100%;">
<el-table-column prop="dictName" label="分类名称" header-align="center" align="center"></el-table-column>
<el-table-column prop="remark" label="描述" header-align="center" align="center"></el-table-column>
<el-table-column prop="dictType" label="编号" header-align="center" align="center"></el-table-column>
<el-table-column label="状态" header-align="center" align="center">
<template slot-scope="scope">
<span>{{ scope.row.status == 1 ? '启用' : '禁用' }}</span>
</template>
</el-table-column>
<el-table-column prop="createDate" label="创建时间" header-align="center" align="center"></el-table-column>
<el-table-column label="操作" fixed="right" header-align="center" align="center" width="280">
<template slot-scope="scope">
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
<el-button type="text" size="small" @click="handleClick()">{{ scope.row.status
== 1 ? '禁用' : '启用'
}}</el-button>
<el-button type="text" @click="childHandle(scope.row)">新建标签</el-button>
<el-button type="text" size="small" @click="showLife(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>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
<!-- 生命周期管理 -->
<TagSysBuildLife ref="lifeModal" @refreshDataList="getDataList"></TagSysBuildLife>
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from '../tag-type-add-or-update'
import TagSysBuildLife from './tag-sys-build-life'
import { addDynamicRoute } from '@/router'
export default {
mixins: [mixinViewModule],
data() {
return {
mixinViewModuleOptions: {
getDataListURL: '/sys/dict/type/page',
getDataListIsPage: true,
// deleteURL: '/sys/dict/type',
deleteIsBatch: false
},
dataForm: {
id: '0',
dictName: '',
dictType: '',
dictLabel: '',
},
rowClickData: {},
}
},
components: {
AddOrUpdate, TagSysBuildLife
},
methods: {
//
childHandle(row) {
//
const routeParams = {
routeName: `${this.$route.name}__${row.id}`,
title: `${this.$route.meta.title} - ${row.dictType}`,
path: 'ability/tag-data',
params: {
dictTypeId: row.id
}
}
//
addDynamicRoute(routeParams, this.$router)
},
//
showLife(row) {
this.$refs.lifeModal.visible = true;
this.$refs.lifeModal.rowData = row;
},
handleClick() {
}
}
}
</script>

View File

@ -0,0 +1,357 @@
<template>
<div>
<div class="mod-ability__bsabilityai">
<el-form :inline="true" :model="dataForm">
<el-form-item label="资源名称">
<el-input
v-model="dataForm.name"
placeholder="请输入资源名称"
clearable
></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="query(dataForm.name)">{{
$t("query")
}}</el-button>
</el-form-item>
<el-form-item>
<el-button @click="reset">重置</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="yunadd('add',null)"
>上架</el-button
>
</el-form-item>
<el-form-item>
<el-button
v-if="$hasPermission('ability:bsabilityai:delete')"
type="danger"
@click="reset"
>{{ $t('deleteBatch') }}</el-button
>
</el-form-item>
</el-form>
<el-table
:data="dataList1"
border
@selection-change="dataListSelectionChangeHandle"
style="width: 100%"
height="650px"
>
<el-table-column
prop="a"
label="摄像头名称"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="b"
label="摄像头编号"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="c"
label="位置"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="d"
label="提供部门"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="e"
label="提供地市"
header-align="center"
align="center"
></el-table-column>
<el-table-column
label="操作"
fixed="right"
header-align="center"
align="center"
width="150"
>
<template slot-scope="scope">
<el-button
type="text"
size="small"
@click="yunadd('update',scope.row)"
>修改</el-button
>
<el-button
type="text"
size="small"
@click="yunadd('detail',scope.row)"
>详情</el-button
>
<!-- <el-button
type="text"
size="small"
@click="reset"
>删除</el-button
> -->
<el-button
type="text"
size="small"
@click="reset"
>标签化</el-button
>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="Number(10)"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle"
>
</el-pagination>
</div>
<!--新增-->
<el-dialog title="视频资源" :visible.sync="yunshow" width="720px" class="status_change">
<el-form :inline="true" label-width="120px">
<div class="form-minwidth-style">
<el-row>
<el-col :span="12">
<el-form-item label="摄像头名称:">
<el-input v-model="yunaddForm.a"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="摄像头编号:">
<el-input v-model="yunaddForm.b"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="位置:">
<el-input v-model="yunaddForm.a"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="提供部门:">
<el-input v-model="yunaddForm.b"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="提供地市:">
<el-input v-model="yunaddForm.d"></el-input>
</el-form-item>
</el-col>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button @click="yunshow = false"> </el-button>
<el-button type="primary" @click="yunshow = false"> </el-button>
</div>
</div>
</el-form>
</el-dialog>
</div>
</template>
<script>
import mixinViewModule from "@/mixins/view-module";
export default {
mixins: [mixinViewModule],
data() {
return {
yunaddForm: {
a: "",
b: "",
c: "",
d: "",
e: "",
f: "",
g:"",
h:"",
i:"",
j:"",
},
total: 10,
choose: 1,
yunshow: false,
wangshow:false,
dataList1: [
{
"a": "市北区顺昌路改造项目大门",
"b": "101_37020201581314000511",
"c": "市北区顺昌路",
"d": "市住房城乡建设局",
"e": "市南区"
},
{
"a": "青城建设蚌埠路以北宁乡路以西门",
"b": "101_37020201581314000514",
"c": "青城建设蚌埠路以北宁乡路",
"d": "市住房城乡建设局",
"e": "市南区"
},
{
"a": "青房建安幸福家园三期现场",
"b": "101_37020201581314000518",
"c": "青房建安幸福家园",
"d": "市住房城乡建设局",
"e": "市南区"
},
{
"a": "一建公共卫生中心大门",
"b": "101_37020201581314000519",
"c": "一建公共卫生中心",
"d": "市住房城乡建设局",
"e": "市南区"
},
{
"a": "中建筑港中国钢研院一钢一研塔吊",
"b": "101_37020201581314000529",
"c": "市北区顺昌路",
"d": "市住房城乡建设局",
"e": "市南区"
},
{
"a": "现场",
"b": "101_37020201581314001008",
"c": "市北区顺昌路",
"d": "市住房城乡建设局",
"e": "市南区"
},
{
"a": "高位1",
"b": "101_37020201581314001037",
"c": "市北区顺昌路",
"d": "市住房城乡建设局",
"e": "市南区"
},
{
"a": "门口洗车",
"b": "101_37020201581314001038",
"c": "市北区顺昌路",
"d": "市住房城乡建设局",
"e": "市南区"
},
{
"a": "大门口",
"b": "101_37020201581314001039",
"c": "市北区顺昌路",
"d": "市住房城乡建设局",
"e": "市南区"
},
{
"a": "中青建安隆德花园现场",
"b": "101_37020201581314001359",
"c": "市北区顺昌路",
"d": "市住房城乡建设局",
"e": "市南区"
}
],
dataForm: {
name: "",
},
};
},
watch: {},
components: {},
created() {},
mounted() {},
methods: {
handleChose(index) {
this.choose = index;
},
reset() {},
query() {},
//
yunadd(type,row) {
if(type=='add'){
this.yunaddForm.a=""
this.yunaddForm.b=""
this.yunaddForm.c=""
this.yunaddForm.d=""
this.yunaddForm.e=""
this.yunaddForm.f=""
this.yunaddForm.g=""
}else{
this.yunaddForm.a=row.a
this.yunaddForm.b=row.b
this.yunaddForm.c=row.c
this.yunaddForm.d=row.d
this.yunaddForm.e=row.e
this.yunaddForm.f=row.f
this.yunaddForm.g=row.g
}
this.yunshow = true;
},
},
};
</script>
<style lang="scss" scoped>
.status_change {
::v-deep .el-dialog__header{
background-color:#0058e1;
padding: 10px 10px 10px;
.el-dialog__title,.el-dialog__headerbtn i{
color: white;
}
}
.dialog-footer{
text-align: center;
}
}
.form-minwidth-style {
width: 660px;
}
.second-title {
border-radius: 2px;
margin-top: 10px;
margin-bottom: 22px;
font-size: 18px;
cursor: pointer;
text-align: center;
background: #ebe5e5;
width: 200px;
height: 30px;
line-height: 30px;
display: table;
}
.departmentStyle {
display: table-cell;
width: 50%;
color: #fff;
background-color: #0058e1;
font-weight: bolder;
}
.departmentStyle1 {
display: table-cell;
width: 50%;
}
.el-tooltip__popper {
max-width: 50%;
}
// ::v-deep .el-table .cell {
// width: 200px;
// }
::v-deep .el-upload-list__item-name {
width: 400px;
}
</style>

View File

@ -0,0 +1,386 @@
<template>
<div>
<div class="mod-ability__bsabilityai">
<el-form :inline="true" :model="dataForm">
<el-form-item label="资源名称">
<el-input
v-model="dataForm.name"
placeholder="请输入资源名称"
clearable
></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="query(dataForm.name)">{{
$t("query")
}}</el-button>
</el-form-item>
<el-form-item>
<el-button @click="reset">重置</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="yunadd('add',null)"
>盘点入库</el-button
>
</el-form-item>
<el-form-item>
<el-button
v-if="$hasPermission('ability:bsabilityai:delete')"
type="danger"
@click="reset"
>{{ $t('deleteBatch') }}</el-button
>
</el-form-item>
</el-form>
<el-table
:data="dataList1"
border
@selection-change="dataListSelectionChangeHandle"
style="width: 100%"
height="650px"
>
<el-table-column
prop="a"
label="数据名称"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="b"
label="数据代码"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="c"
label="能力描述"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="d"
label="归属部门"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="e"
label="注册者"
header-align="center"
align="center"
></el-table-column>
<el-table-column
label="操作"
fixed="right"
header-align="center"
align="center"
width="150"
>
<template slot-scope="scope">
<el-button
type="text"
size="small"
@click="yunadd('update',scope.row)"
>修改</el-button
>
<el-button
type="text"
size="small"
@click="yunadd('detail',scope.row)"
>详情</el-button
>
<!-- <el-button
type="text"
size="small"
@click="reset"
>删除</el-button
> -->
<el-button
type="text"
size="small"
@click="reset"
>标签化</el-button
>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="Number(10)"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle"
>
</el-pagination>
</div>
<!--新增-->
<el-dialog title="数据资源" :visible.sync="yunshow" width="720px" class="status_change">
<el-form :inline="true" label-width="120px">
<div class="form-minwidth-style">
<el-row>
<el-col :span="12">
<el-form-item label="数据名称:">
<el-input v-model="yunaddForm.a"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="数据代码:">
<el-input v-model="yunaddForm.b"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="数据描述:">
<el-input v-model="yunaddForm.a"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="数据存储方式:">
<el-input v-model="yunaddForm.b"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="数据量:">
<el-input v-model="yunaddForm.d"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="提供方式:">
<el-input v-model="yunaddForm.e"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="服务地址:">
<el-input v-model="yunaddForm.f"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="提供部门:">
<el-input v-model="yunaddForm.g"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="联系人:">
<el-input v-model="yunaddForm.f"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系方式:">
<el-input v-model="yunaddForm.g"></el-input>
</el-form-item>
</el-col>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button @click="yunshow = false"> </el-button>
<el-button type="primary" @click="yunshow = false"> </el-button>
</div>
</div>
</el-form>
</el-dialog>
</div>
</template>
<script>
import mixinViewModule from "@/mixins/view-module";
export default {
mixins: [mixinViewModule],
data() {
return {
yunaddForm: {
a: "",
b: "",
c: "",
d: "",
e: "",
f: "",
g:"",
h:"",
i:"",
j:"",
},
total: 10,
choose: 1,
yunshow: false,
wangshow:false,
dataList1: [
{
"a": "供水营业网点信息",
"b": "307013109015000204",
"c": "供水营业网点信息",
"d": "西海岸新区城市管理局(区水务局)",
"e": "张虎"
},
{
"a": "新建体育公园、笼式场地",
"b": "307013100673000036",
"c": "新建体育公园、笼式场地",
"d": "体育局",
"e": "张虎"
},
{
"a": "西海岸新区供水领域自然人欠费信息",
"b": "307013109015000211",
"c": "西海岸新区供水领域自然人欠费信息",
"d": "西海岸新区城市管理局(区水务局)",
"e": "李阳"
},
{
"a": "西海岸新区交通运输局",
"b": "307013109071000108",
"c": "公交站点查询",
"d": "西海岸新区交通运输局",
"e": "李阳"
},
{
"a": "全市主要经济指标",
"b": "307013107004000062",
"c": "胶州市国民经济分行业数据",
"d": "胶州市统计局",
"e": "李阳"
},
{
"a": "乡村之星信息",
"b": "307013100000000187",
"c": "乡村之星信息",
"d": "农业农村局",
"e": "李阳"
},
{
"a": "建设项目环境影响评价审批信息",
"b": "307013107777000033",
"c": "建设单位、建设项目、审批文号",
"d": "生态环境局胶州分局",
"e": "王二生"
},
{
"a": "新时代文明实践阵地信息表",
"b": "307013108760000022",
"c": "镇街、阵地名称、专管员、联系电话",
"d": "莱西市夏格庄镇人民政府",
"e": "王二生"
},
{
"a": "泊里镇非物质文化遗产信息",
"b": "307013109000000067",
"c": "泊里镇非物质文化遗产的名称、简介等信息",
"d": "黄岛区泊里镇人民政府",
"e": "王二生"
},
{
"a": "人才住房建设情况",
"b": "307013100482000025",
"c": "人才住房项目数量、人才住房房屋套数、人才住房面积、人才住房目标任务房屋套数、人才住房房屋总面积",
"d": "住房和城乡建设局",
"e": "王二生"
}
],
dataForm: {
name: "",
},
};
},
watch: {},
components: {},
created() {},
mounted() {},
methods: {
handleChose(index) {
this.choose = index;
},
reset() {},
query() {},
//
yunadd(type,row) {
if(type=='add'){
this.yunaddForm.a=""
this.yunaddForm.b=""
this.yunaddForm.c=""
this.yunaddForm.d=""
this.yunaddForm.e=""
this.yunaddForm.f=""
this.yunaddForm.g=""
}else{
this.yunaddForm.a=row.a
this.yunaddForm.b=row.b
this.yunaddForm.c=row.c
this.yunaddForm.d=row.d
this.yunaddForm.e=row.e
this.yunaddForm.f=row.f
this.yunaddForm.g=row.g
}
this.yunshow = true;
},
},
};
</script>
<style lang="scss" scoped>
.status_change {
::v-deep .el-dialog__header{
background-color:#0058e1;
padding: 10px 10px 10px;
.el-dialog__title,.el-dialog__headerbtn i{
color: white;
}
}
.dialog-footer{
text-align: center;
}
}
.form-minwidth-style {
width: 660px;
}
.second-title {
border-radius: 2px;
margin-top: 10px;
margin-bottom: 22px;
font-size: 18px;
cursor: pointer;
text-align: center;
background: #ebe5e5;
width: 200px;
height: 30px;
line-height: 30px;
display: table;
}
.departmentStyle {
display: table-cell;
width: 50%;
color: #fff;
background-color: #0058e1;
font-weight: bolder;
}
.departmentStyle1 {
display: table-cell;
width: 50%;
}
.el-tooltip__popper {
max-width: 50%;
}
// ::v-deep .el-table .cell {
// width: 200px;
// }
::v-deep .el-upload-list__item-name {
width: 400px;
}
</style>

View File

@ -0,0 +1,100 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-sys__dict">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input v-model="dataForm.dictValue" :placeholder="$t('dict.dictValue')" clearable></el-input>
</el-form-item>
<el-form-item>
<el-input v-model="dataForm.dictLabel" :placeholder="$t('dict.dictLabel')" clearable></el-input>
</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:dict:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button v-if="$hasPermission('sys:dict:delete')" type="danger" @click="deleteHandle()">{{ $t('deleteBatch')
}}</el-button>
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle"
@sort-change="dataListSortChangeHandle" style="width: 100%;">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="dictValue" :label="$t('dict.dictValue')" header-align="center" align="center">
</el-table-column>
<el-table-column prop="dictLabel" :label="$t('dict.dictLabel')" header-align="center" align="center">
</el-table-column>
<el-table-column prop="sort" :label="$t('dict.sort')" sortable="custom" header-align="center" align="center">
</el-table-column>
<el-table-column prop="status" label="禁用/启用" header-align="center" align="center">
<template slot-scope="scope">
<span>{{ scope.row.status == 1 ? '启用' : '禁用' }}</span>
</template>
</el-table-column>
<el-table-column prop="remark" :label="$t('dict.remark')" header-align="center" align="center">
</el-table-column>
<el-table-column prop="createDate" :label="$t('dict.createDate')" sortable="custom" header-align="center"
align="center" width="180"></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:dict:update')" type="text" size="small"
@click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button v-if="$hasPermission('sys:dict: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"
@current-change="pageCurrentChangeHandle">
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './tag-type-add-or-update'
export default {
mixins: [mixinViewModule],
data() {
return {
mixinViewModuleOptions: {
createdIsNeed: false,
getDataListURL: '/sys/dict/data/page',
getDataListIsPage: true,
deleteURL: '/sys/dict/data',
deleteIsBatch: true
},
dataForm: {
dictTypeId: '0',
dictLabel: '',
dictValue: ''
}
}
},
components: {
AddOrUpdate
},
created() {
this.dataForm.dictTypeId = this.$route.params.dictTypeId || '0'
this.getDataList()
},
methods: {
// /
addOrUpdateHandle(id) {
this.addOrUpdateVisible = true
this.$nextTick(() => {
this.$refs.addOrUpdate.dataForm.id = id
this.$refs.addOrUpdate.dataForm.dictTypeId = this.dataForm.dictTypeId
this.$refs.addOrUpdate.init()
})
}
}
}
</script>

View File

@ -0,0 +1,84 @@
<template>
<el-dialog :visible.sync="visible" title="标签体系分类" :close-on-click-modal="false"
:close-on-press-escape="false">
<el-form :model="dataForm" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()"
label-width="120px">
<el-form-item prop="dictName" label="标签分类名称">
<el-input v-model="dataForm.dictName" placeholder="标签分类名称"></el-input>
</el-form-item>
<el-form-item prop="dictType" label="编号">
<el-input v-model="dataForm.dictType" placeholder="编号"></el-input>
</el-form-item>
<el-form-item prop="remark" label="描述">
<el-input type="textarea" :rows="4" v-model="dataForm.remark" placeholder="描述"></el-input>
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</template>
<script>
import debounce from 'lodash/debounce'
export default {
data() {
return {
visible: false,
dataForm: {
id: '',
dictName: '',
dictType: '',
sort: 0,
remark: ''
}
}
},
methods: {
init() {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
this.getInfo()
}
})
},
//
getInfo() {
this.$http.get(`/sys/dict/type/${this.dataForm.id}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
}).catch(() => { })
},
//
dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
this.$http[!this.dataForm.id ? 'post' : 'put']('/sys/dict/type', this.dataForm).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
this.$emit('refreshDataList')
}
})
}).catch(() => { })
})
}, 1000, { 'leading': true, 'trailing': false })
}
}
</script>

View File

@ -0,0 +1,83 @@
<template>
<el-card shadow="never" class="aui-card--fill" style="background:transparent">
<div class="tab-box">
<div class="tab-item" v-for="(tab, i) in tabList" :key="i" @click="selectTab = tab.key"
:class="[selectTab == tab.key ? 'tab-active' : '', i == 0 ? 'no-border-right' : '']">
{{ tab.name }}
</div>
</div>
<!-- 标签体系分类 -->
<TagSysBuild v-if="selectTab == 'build'"></TagSysBuild>
<!-- 标签目录管理 -->
<TagDirectory v-if="selectTab == 'directory'"></TagDirectory>
</el-card>
</template>
<script>
import TagSysBuild from './components/tag-sys-build'
import TagDirectory from './components/tag-directory'
import { addDynamicRoute } from '@/router'
export default {
data() {
return {
tabList: [
{
name: '标签体系分类',
key: 'build'
}, {
name: '标签目录管理',
key: 'directory'
},
],
selectTab: 'build'
}
},
components: {
TagSysBuild,
TagDirectory
},
methods: {
//
childHandle(row) {
//
const routeParams = {
routeName: `${this.$route.name}__${row.id}`,
title: `${this.$route.meta.title} - ${row.dictType}`,
// path: 'ability/tag-data',
path: 'ability/tag',
params: {
dictTypeId: row.id
}
}
//
addDynamicRoute(routeParams, this.$router)
}
}
}
</script>
<style lang="scss" scoped>
.tab-box {
display: flex;
align-items: center;
margin-bottom: 20px;
}
.tab-item {
display: inline-block;
padding: 10px 20px;
cursor: pointer;
border: 1px solid #e0e0e0;
box-sizing: border-box;
}
.no-border-right {
border-right: 0;
}
.tab-active {
background: #0058e1;
color: #fff;
}
</style>

View File

@ -0,0 +1,662 @@
<template>
<div>
<div class="second-title">
<div
style="margin-right: 30px"
:class="[choose === 1 ? 'departmentStyle' : 'departmentStyle1']"
@click="handleChose(1)"
>
云资源
</div>
<div
:class="[choose === 2 ? 'departmentStyle' : 'departmentStyle1']"
@click="handleChose(2)"
>
网络资源
</div>
</div>
<div v-if="choose === 1" class="mod-ability__bsabilityai">
<el-form :inline="true" :model="dataForm">
<el-form-item>
<el-input
v-model="dataForm.name"
placeholder="请输入资源名称"
clearable
></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="query(dataForm.name)">{{
$t("query")
}}</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="yunadd('add',null)">新增</el-button>
</el-form-item>
</el-form>
<el-table
:data="dataList1"
border
@selection-change="dataListSelectionChangeHandle"
style="width: 100%"
height="650px"
>
<el-table-column
prop="a"
label="项目名称"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="b"
label="主机名称"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="c"
label="用途"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="d"
label="网络区域"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="e"
label="配置"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="f"
label="系统盘"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="g"
label="数据盘"
header-align="center"
align="center"
></el-table-column>
<el-table-column
label="操作"
fixed="right"
header-align="center"
align="center"
width="150"
>
<template slot-scope="scope">
<el-button
type="text"
size="small"
@click="yunadd('detail',scope.row)"
>详情</el-button
>
<el-button
type="text"
size="small"
@click="yunadd('update',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="Number(10)"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle"
>
</el-pagination>
</div>
<div v-if="choose === 2" class="mod-ability__bsabilityai">
<el-form :inline="true" :model="dataForm">
<el-form-item>
<el-input
v-model="dataForm.name"
placeholder="请输入资源名称"
clearable
></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="query(dataForm.name)">{{
$t("query")
}}</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="wangadd('add',null)"
>新增</el-button
>
</el-form-item>
</el-form>
<el-table
:data="dataList2"
border
@selection-change="dataListSelectionChangeHandle"
style="width: 100%"
height="650px"
>
<el-table-column
prop="a"
label="项目名称"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="b"
label="网络名称"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="c"
label="用途"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="d"
label="网络区域"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="e"
label="网络类型"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="f"
label="宽带峰值"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="g"
label="IP"
header-align="center"
align="center"
></el-table-column>
<el-table-column
label="操作"
fixed="right"
header-align="center"
align="center"
width="150"
>
<template slot-scope="scope">
<el-button
type="text"
size="small"
@click="wangadd('detail',scope.row)"
>详情</el-button
>
<el-button
type="text"
size="small"
@click="wangadd('update',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="Number(total)"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle"
>
</el-pagination>
</div>
<!--云资源新增-->
<el-dialog title="云资源" :visible.sync="yunshow" width="640px" class="status_change">
<el-form :inline="true" label-width="100px">
<div class="form-minwidth-style">
<el-row>
<el-col :span="12">
<el-form-item label="项目名称:">
<el-input v-model="yunaddForm.a"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="主机名称:">
<el-input v-model="yunaddForm.b"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="用途:">
<el-input v-model="yunaddForm.c" style="width:490px;"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="网络区域:">
<el-input v-model="yunaddForm.d"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="配置:">
<el-input v-model="yunaddForm.e"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="网络盘:">
<el-input v-model="yunaddForm.f"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="数据盘:">
<el-input v-model="yunaddForm.g"></el-input>
</el-form-item>
</el-col>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button @click="yunshow = false"> </el-button>
<el-button type="primary" @click="yunshow = false"> </el-button>
</div>
</div>
</el-form>
</el-dialog>
<!--网资源新增-->
<el-dialog title="网络资源" :visible.sync="wangshow" width="640px" class="status_change">
<el-form :inline="true" label-width="100px">
<div class="form-minwidth-style">
<el-row>
<el-col :span="12">
<el-form-item label="项目名称:">
<el-input v-model="wangaddForm.a"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="网络名称:">
<el-input v-model="wangaddForm.b"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="用途:">
<el-input v-model="wangaddForm.c" style="width:490px;"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="网络区域:">
<el-input v-model="wangaddForm.d"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="网络类型:">
<el-input v-model="wangaddForm.e"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="宽带峰值:">
<el-input v-model="wangaddForm.f"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="IP">
<el-input v-model="wangaddForm.g"></el-input>
</el-form-item>
</el-col>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button @click="yunshow = false"> </el-button>
<el-button type="primary" @click="yunshow = false"> </el-button>
</div>
</div>
</el-form>
</el-dialog>
</div>
</template>
<script>
import mixinViewModule from "@/mixins/view-module";
export default {
mixins: [mixinViewModule],
data() {
return {
yunaddForm: {
a: "",
b: "",
c: "",
d: "",
e: "",
f: "",
g:"",
},
wangaddForm:{
a: "",
b: "",
c: "",
d: "",
e: "",
f: "",
g: "",
},
total: 10,
choose: 1,
yunshow: false,
wangshow:false,
dataList1: [
{
"a": "数字底座",
"b": "数字底座数据库服务器",
"c": "数据库服务器",
"d": "政务外网公共服务域",
"e": "CPU:8核内存:15G",
"f": "50G",
"g": "150G"
},
{
"a": "数字底座",
"b": "数字底座应用服务器",
"c": "应用服务器",
"d": "政务外网公共服务域",
"e": "CPU:8核内存:16G",
"f": "30G",
"g": "100G"
},
{
"a": "数字底座",
"b": "算法仓01服务器",
"c": "应用服务器",
"d": "政务外网公共服务域",
"e": "CPU:8核内存:15G",
"f": "40G",
"g": "170G"
},
{
"a": "数字底座",
"b": "算法仓02服务器",
"c": "应用服务器",
"d": "政务外网公共服务域",
"e": "CPU:16核内存:32G",
"f": "80G",
"g": "600G"
},
{
"a": "数字底座",
"b": "算法仓03服务器",
"c": "应用服务器",
"d": "政务外网公共服务域",
"e": "CPU:32核内存:64G",
"f": "120G",
"g": "1024G"
},
{
"a": "应急一体化综合指挥平台",
"b": "一体化api服务器2",
"c": "应用服务器",
"d": "金宏网",
"e": "CPU:2核内存:4G",
"f": "150G",
"g": "400G"
},
{
"a": "应急一体化综合指挥平台",
"b": "一体化api服务器1",
"c": "应用服务器",
"d": "金宏网",
"e": "CPU:1核内存:2G",
"f": "130G",
"g": "200G"
},
{
"a": "应急一体化综合指挥平台",
"b": "一体化管理节点服务器1",
"c": "应用服务器",
"d": "政务外网公共服务域",
"e": "CPU:8核内存:16G",
"f": "200G",
"g": "600G"
},
{
"a": "应急一体化综合指挥平台",
"b": "一体化管理节点服务器2",
"c": "应用服务器",
"d": "政务外网公共服务域",
"e": "CPU:4核内存:8G",
"f": "50G",
"g": "500G"
},
{
"a": "应急一体化综合指挥平台",
"b": "一体化管理节点服务器3",
"c": "应用服务器",
"d": "政务外网公共服务域",
"e": "CPU:16核内存:32G",
"f": "160G",
"g": "500G"
}
],
dataList2: [
{
"a": "数字底座",
"b": "金宏网",
"c": "",
"d": "内网",
"e": "专线",
"f": "1600MB/s",
"g": "15.72.183.90"
},
{
"a": "数字底座",
"b": "金宏网",
"c": "",
"d": "内网",
"e": "专线",
"f": "2100MB/s",
"g": "15.72.183.91"
},
{
"a": "填报系统",
"b": "金宏网",
"c": "",
"d": "内网",
"e": "专线",
"f": "800MB/s",
"g": "15.72.184.9"
},
{
"a": "领导驾驶舱",
"b": "金宏网",
"c": "",
"d": "内网",
"e": "专线",
"f": "1600MB/s",
"g": "15.72.184.10"
},
{
"a": "区市指挥室",
"b": "金宏网",
"c": "",
"d": "内网",
"e": "专线",
"f": "1200MB/s",
"g": "15.72.184.11"
},
{
"a": "应急一体化综合指挥平台",
"b": "金宏网",
"c": "",
"d": "内网",
"e": "专线",
"f": "1200MB/s",
"g": "15.72.184.12"
},
{
"a": "消防一览",
"b": "金宏网",
"c": "",
"d": "内网",
"e": "专线",
"f": "1064MB/s",
"g": "15.72.182.107"
},
{
"a": "政务云系统",
"b": "金宏网",
"c": "",
"d": "内网",
"e": "专线",
"f": "1200MB/s",
"g": "15.72.182.108"
},
{
"a": "数字监控平台",
"b": "金宏网",
"c": "",
"d": "内网",
"e": "专线",
"f": "1064MB/s",
"g": "15.72.182.109"
},
{
"a": "应急一体化综合指挥平台",
"b": "金宏网",
"c": "",
"d": "内网",
"e": "专线",
"f": "800MB/s",
"g": "15.72.182.110"
}
],
dataForm: {
name: "",
},
};
},
watch: {},
components: {},
created() {},
mounted() {},
methods: {
handleChose(index) {
this.choose = index;
},
reset() {},
query() {},
//
yunadd(type,row) {
if(type=='add'){
this.yunaddForm.a=""
this.yunaddForm.b=""
this.yunaddForm.c=""
this.yunaddForm.d=""
this.yunaddForm.e=""
this.yunaddForm.f=""
this.yunaddForm.g=""
}else{
this.yunaddForm.a=row.a
this.yunaddForm.b=row.b
this.yunaddForm.c=row.c
this.yunaddForm.d=row.d
this.yunaddForm.e=row.e
this.yunaddForm.f=row.f
this.yunaddForm.g=row.g
}
this.yunshow = true;
},
//
wangadd(type,row) {
if(type=='add'){
this.wangaddForm.a=""
this.wangaddForm.b=""
this.wangaddForm.c=""
this.wangaddForm.d=""
this.wangaddForm.e=""
this.wangaddForm.f=""
this.wangaddForm.g=""
}else{
this.wangaddForm.a=row.a
this.wangaddForm.b=row.b
this.wangaddForm.c=row.c
this.wangaddForm.d=row.d
this.wangaddForm.e=row.e
this.wangaddForm.f=row.f
this.wangaddForm.g=row.g
}
this.wangshow = true;
},
},
};
</script>
<style lang="scss" scoped>
.status_change {
::v-deep .el-dialog__header{
background-color:#0058e1;
padding: 10px 10px 10px;
.el-dialog__title,.el-dialog__headerbtn i{
color: white;
}
}
.dialog-footer{
text-align: center;
}
}
.form-minwidth-style {
width: 600px;
}
.second-title {
border-radius: 2px;
margin-top: 10px;
margin-bottom: 22px;
font-size: 18px;
cursor: pointer;
text-align: center;
background: #ebe5e5;
width: 200px;
height: 30px;
line-height: 30px;
display: table;
}
.departmentStyle {
display: table-cell;
width: 50%;
color: #fff;
background-color: #0058e1;
font-weight: bolder;
}
.departmentStyle1 {
display: table-cell;
width: 50%;
}
.el-tooltip__popper {
max-width: 50%;
}
// ::v-deep .el-table .cell {
// width: 200px;
// }
::v-deep .el-upload-list__item-name {
width: 400px;
}
</style>

View File

@ -0,0 +1,464 @@
<template>
<el-dialog
width="70%"
: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> -->
<el-table
:data="dataSource.data[0][1]"
style="width: 100%">
<el-table-column
prop="activityName"
label="任务名称"
width="180">
</el-table-column>
<el-table-column
prop="assigneeDeptName"
label="处理人部门"
width="200">
</el-table-column>
<el-table-column
prop="assigneeName"
label="处理人"
width="120">
</el-table-column>
<el-table-column
prop="startTime"
label="任务开始时间"
width="180">
</el-table-column>
<el-table-column
prop="endTime"
label="任务结束时间"
width="180">
</el-table-column>
<el-table-column
prop="comment"
label="审核意见" show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="duration"
label="任务时长"
width="100">
</el-table-column>
</el-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 == '能力上架') {
const 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) {
const 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)
}
}
}
console.log('this.dataSource.data[0]========', this.dataSource.data[0][1])
},
// 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

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

View File

@ -249,7 +249,7 @@ export default {
this.total = 0
return this.$message.error(res.msg)
}
if (res.data.list.length !== 0) {
if (res.data.list.length >= 0) {
this.dataList = res.data.list
this.total = this.mixinViewModuleOptions.getDataListIsPage
? res.data.total

View File

@ -131,54 +131,54 @@
</template>
<script>
import mixinViewModule from "@/mixins/view-module";
import AddOrUpdate from "./canassigncase-add-or-update";
import dictionaries from "@/utils/dictionaries";
import qs from "qs";
import { type } from "os";
import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './canassigncase-add-or-update'
import dictionaries from '@/utils/dictionaries'
import qs from 'qs'
import { type } from 'os'
export default {
mixins: [mixinViewModule],
data() {
data () {
return {
mixinViewModuleOptions: {
getDataListURL: "/resource/page",
getDataListURL: '/resource/page',
getDataListIsPage: true,
exportURL: "/ability/bsabilityai/export",
deleteURL: "/resource/delete",
deleteIsBatch: true,
exportURL: '/ability/bsabilityai/export',
deleteURL: '/resource/delete',
deleteIsBatch: true
},
disabled: false,
sceneArr: dictionaries.sceneArr,
fieldArr: dictionaries.fieldArr,
shareFormArr: dictionaries.shareFormArr,
dataForm: {
name: "",
creator: "",
name: '',
creator: '',
selectType: 0,
delFlag: 0,
type: "赋能案例",
type: '赋能案例'
},
qp: false,
};
qp: false
}
},
watch: {},
components: {
AddOrUpdate,
AddOrUpdate
},
created() {
this.dataForm.name = "";
this.dataForm.type = "赋能案例";
created () {
this.dataForm.name = ''
this.dataForm.type = '赋能案例'
},
mounted() {
window.addEventListener("resize", this.a);
this.fullScreen();
mounted () {
window.addEventListener('resize', this.a)
this.fullScreen()
},
methods: {
reset() {
reset () {
this.$http
.get(
this.mixinViewModuleOptions.getDataListURL +
"?" +
'?' +
qs.stringify({
// order: this.order,
// orderField: this.orderField,
@ -187,138 +187,138 @@ export default {
selectType: 0,
limit: 10,
delFlag: 0,
creator: "",
type: "赋能案例",
name: "",
creator: '',
type: '赋能案例',
name: ''
})
)
.then(({ data: res }) => {
this.dataForm.name = "";
this.dataForm.name = ''
if (res.code !== 0) {
this.dataList = [];
this.total = 0;
return this.$message.error(res.msg);
this.dataList = []
this.total = 0
return this.$message.error(res.msg)
}
this.dataList = this.mixinViewModuleOptions.getDataListIsPage
? res.data.list
: res.data;
: res.data
this.total = this.mixinViewModuleOptions.getDataListIsPage
? res.data.total
: 0;
: 0
if (this.mixinViewModuleOptions.requestCallback) {
this.mixinViewModuleOptions.requestCallback(res.data);
this.mixinViewModuleOptions.requestCallback(res.data)
}
this.dataListLoading = false;
this.dataListLoading = false
})
.catch(() => {
this.dataListLoading = false;
});
this.dataListLoading = false
})
},
showDetail(val) {
this.addOrUpdateVisible = true;
this.disabled = false;
showDetail (val) {
this.addOrUpdateVisible = true
this.disabled = false
this.$nextTick(() => {
this.$refs.addOrUpdate.UpdateState = false;
this.$refs.addOrUpdate.dataFormShowDetails = val;
this.$refs.addOrUpdate.init();
});
this.disabled = true;
this.$refs.addOrUpdate.UpdateState = false
this.$refs.addOrUpdate.dataFormShowDetails = val
this.$refs.addOrUpdate.init()
})
this.disabled = true
},
showDocument(val) {
console.log(val);
showDocument (val) {
console.log(val)
window.open(
window.SITE_CONFIG.frontUrl + "?id=" + val.id + "&&type=" + val.type,
"_blank"
);
window.SITE_CONFIG.frontUrl + '?id=' + val.id + '&&type=' + val.type,
'_blank'
)
},
findValue(list, type) {
const found = list.find((item) => item.attrType === type);
findValue (list, type) {
const found = list.find((item) => item.attrType === type)
if (found) {
return found.attrValue;
return found.attrValue
} else {
return "暂无数据";
return '暂无数据'
}
},
getDataList2(names) {
getDataList2 (names) {
if (names != null) {
this.$http
.get(
this.mixinViewModuleOptions.getDataListURL +
"?" +
'?' +
qs.stringify({
// order: this.order,
// orderField: this.orderField,
// type: '',
pageNum: 1,
pageSize: this.limit,
type: "赋能案例",
creator: "",
type: '赋能案例',
creator: '',
selectType: 0,
delFlag: 0,
name: names,
name: names
})
)
.then(({ data: res }) => {
if (res.code !== 0) {
this.dataList = [];
this.total = 0;
return this.$message.error(res.msg);
this.dataList = []
this.total = 0
return this.$message.error(res.msg)
}
if (res.data.list.length !== 0) {
this.dataList = res.data.list;
if (res.data.list.length >= 0) {
this.dataList = res.data.list
this.total = this.mixinViewModuleOptions.getDataListIsPage
? res.data.total
: 0;
: 0
if (this.mixinViewModuleOptions.requestCallback) {
this.mixinViewModuleOptions.requestCallback(res.data);
this.mixinViewModuleOptions.requestCallback(res.data)
}
this.dataListLoading = false;
this.dataListLoading = false
} else {
this.$message.error("未查询到相关信息");
this.reset();
this.$message.error('未查询到相关信息')
this.reset()
}
})
.catch(() => {
this.dataListLoading = false;
});
this.dataListLoading = false
})
} else {
this.$message.error("查询不能输入为空");
this.$message.error('查询不能输入为空')
}
},
fullScreen() {
fullScreen () {
if (window.outerHeight === screen.availHeight) {
if (window.outerWidth === screen.availWidth) {
console.log(
"全屏1",
'全屏1',
window.outerHeight,
screen.availHeight,
window.outerWidth,
screen.availWidth
);
this.qp = false;
)
this.qp = false
} else {
console.log(
"不是全屏2",
'不是全屏2',
window.outerHeight,
screen.availHeight,
window.outerWidth,
screen.availWidth
);
this.qp = true;
)
this.qp = true
}
} else {
console.log(
"不是全屏3",
'不是全屏3',
window.outerHeight,
screen.availHeight,
window.outerWidth,
screen.availWidth
);
this.qp = true;
)
this.qp = true
}
},
},
};
}
}
}
</script>
<style lang="scss" scoped>
.el-tooltip__popper {

File diff suppressed because it is too large Load Diff

View File

@ -81,7 +81,7 @@ export default {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
this.$refs.dataForm.resetFields()
this.iconList = getIconList()
this.dataForm.parentName = this.$t('menu.parentNameDefault')
this.getMenuList()
@ -89,11 +89,12 @@ export default {
},
//
getMenuList () {
console.log('获取菜单位置1')
return this.$http.get('/sys/menu/list?type=0').then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.menuList = res.data
this.menuList = res.data.filter(item => item.site === 0)
}).catch(() => {})
},
// ,
@ -114,11 +115,11 @@ export default {
},
//
dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
this.$refs.dataForm.validate((valid) => {
if (!valid) {
return false
}
this.$http['post']('/devtools/menu', this.dataForm).then(({ data: res }) => {
this.$http.post('/devtools/menu', this.dataForm).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
@ -133,7 +134,7 @@ export default {
})
}).catch(() => {})
})
}, 1000, { 'leading': true, 'trailing': false })
}, 1000, { leading: true, trailing: false })
}
}
</script>
@ -174,4 +175,4 @@ export default {
}
}
}
</style>
</style>

View File

@ -0,0 +1,174 @@
<!--
* @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 prop="createDate" label="创建时间" header-align="center" align="center"></el-table-column>
<el-table-column prop="auditTime" 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="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,318 @@
<!--
* @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')
}
const _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

@ -154,7 +154,6 @@ export default {
methods: {
//
taskHandle (row) {
console.log('row======================>', row, this.forwardHandleUrl)
if (!row.businessKey) {
return this.$message.error(this.$t('task.businessKeyError'))
}
@ -171,7 +170,9 @@ export default {
bus.$off('abilityResourceShelfInit')
bus.$on('abilityResourceShelfInit', () => {
this.getDataList()
bus.$emit('updateTaskNum')
})
}
}
</script>

View File

@ -171,6 +171,7 @@ export default {
bus.$off('AbilityResourcesRemovedInit')
bus.$on('AbilityResourcesRemovedInit', () => {
this.getDataList()
bus.$emit('updateTaskNum')
})
}
}

View File

@ -1,8 +1,8 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-27 11:27:22
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-23 10:37:29
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-10-19 11:10:50
* @Description: 能力申请
-->
<template>
@ -47,6 +47,13 @@
}}</span>
</template>
</el-table-column>
<el-table-column label="申请人所属部门" header-align="center" align="center">
<template slot-scope="scope">
<span>{{
(scope.row.params && scope.row.params.tAbilityApplicationDTOList[0].unit)
}}</span>
</template>
</el-table-column>
<el-table-column
:label="$t('process.system')"
header-align="center"
@ -162,6 +169,7 @@ export default {
bus.$off('competencyApplicationInit')
bus.$on('competencyApplicationInit', () => {
this.getDataList()
bus.$emit('updateTaskNum')
})
}
}

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)
// //
@ -228,10 +228,10 @@ export default {
ruleForm: {
name: '',
num: '',
area: '',
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,157 @@
<!--
* @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 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 prop="createDate" label="创建时间" header-align="center" align="center"></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

@ -7,75 +7,62 @@
<div class="dataTitleSon">
{{ itemson.name }}
</div>
<div
class="dataContent"
v-if="
itemson.name !== '算法优势' &&
itemson.name !== '应用场景' &&
itemson.name !== '功能介绍'
"
>
<el-form-item
v-for="itemsonson in itemson.children"
:key="itemsonson.name"
:label="
itemsonson.type != ' multipleAdditions' ? itemsonson.name : ''
"
v-show="
!(
itemsonson.name === '平台地址' ||
itemsonson.name === 'SDK安装包' ||
itemsonson.name === '接口请求方式' ||
itemsonson.name === '服务接口'
)
"
>
<div
class="videoAndImgCss"
v-if="
itemsonson.type === 'video' || itemsonson.type === 'image'
"
@click="videoAndImg(itemsonson.note1)"
>
<div class="dataContent" v-if="
itemson.name !== '算法优势' &&
itemson.name !== '应用场景' &&
itemson.name !== '功能介绍'
">
<el-form-item v-for="itemsonson in itemson.children" :key="itemsonson.name" :label="
itemsonson.type != ' multipleAdditions' ? itemsonson.name : ''
" v-show="
!(
itemsonson.name === '平台地址' ||
itemsonson.name === 'SDK安装包' ||
itemsonson.name === '接口请求方式' ||
itemsonson.name === '服务接口'
)
">
<div class="videoAndImgCss" v-if="
itemsonson.type === 'video' || itemsonson.type === 'image'
" @click="videoAndImg(itemsonson.note1)">
浏览
</div>
<div
v-else-if="itemsonson.type === ' multipleAdditions'"
class="multipleAdditionsClass"
>
<div
v-for="multipleAdditionsItem in itemsonson.note1"
:key="multipleAdditionsItem"
>
<div class="videoAndImgCss" v-if="
itemsonson.name === '上传附件'
" @click="videoAndImg(itemsonson.note1)">
下载
</div>
<div v-else-if="itemsonson.type === ' multipleAdditions'" class="multipleAdditionsClass">
<div v-for="multipleAdditionsItem in itemsonson.note1" :key="multipleAdditionsItem">
<el-tooltip placement="top">
<div slot="content">
{{
multipleAdditionsItem.question ||
multipleAdditionsItem.type ||
multipleAdditionsItem.name
multipleAdditionsItem.question ||
multipleAdditionsItem.type ||
multipleAdditionsItem.name
}}
</div>
<div>
{{
multipleAdditionsItem.question ||
multipleAdditionsItem.type ||
multipleAdditionsItem.name
multipleAdditionsItem.question ||
multipleAdditionsItem.type ||
multipleAdditionsItem.name
}}
</div>
</el-tooltip>
<el-tooltip placement="top">
<div slot="content">
{{
multipleAdditionsItem.answer ||
multipleAdditionsItem.price ||
multipleAdditionsItem.img
multipleAdditionsItem.answer ||
multipleAdditionsItem.price ||
multipleAdditionsItem.img
}}
</div>
<div>
{{
multipleAdditionsItem.answer ||
multipleAdditionsItem.price ||
multipleAdditionsItem.img
multipleAdditionsItem.answer ||
multipleAdditionsItem.price ||
multipleAdditionsItem.img
}}
</div>
</el-tooltip>
@ -86,54 +73,31 @@
<!-- <div>{{ multipleAdditionsItem }}</div> -->
</div>
</div>
<el-tooltip v-else placement="top" :disabled="itemsonson.note1 !== null?false:true" :content="itemsonson.note1">
<el-tooltip v-else placement="top" :disabled="itemsonson.note1 !== null ? false : true"
:content="itemsonson.note1">
<!-- <div slot="content" v-show="itemsonson.note1">{{ itemsonson.note1 }}</div> -->
<el-input
v-model="itemsonson.note1"
disabled="disabled"
></el-input>
<el-input v-model="itemsonson.note1" disabled="disabled"></el-input>
</el-tooltip>
</el-form-item>
<el-form-item
v-for="itemsonson in itemson.children"
:key="itemsonson.name"
:label="
itemsonson.type != ' multipleAdditions' ? itemsonson.name : ''
"
v-show="
(itemsonson.name === '平台地址' && showDocking) ||
(itemsonson.name === 'SDK安装包' && showSDK) ||
(itemsonson.name === '接口请求方式' && showInterface) ||
(itemsonson.name === '服务接口' && showInterface)
"
>
<el-tooltip placement="top" :disabled="itemsonson.note1 !== null?false:true" :content="itemsonson.note1">
<el-input
v-model="itemsonson.note1"
disabled="disabled"
></el-input>
</el-tooltip>
<el-form-item v-for="itemsonson in itemson.children" :key="itemsonson.name" :label="
itemsonson.type != ' multipleAdditions' ? itemsonson.name : ''
" v-show="
(itemsonson.name === '平台地址' && showDocking) ||
(itemsonson.name === 'SDK安装包' && showSDK) ||
(itemsonson.name === '接口请求方式' && showInterface) ||
(itemsonson.name === '服务接口' && showInterface)
">
<el-tooltip placement="top" :disabled="itemsonson.note1 !== null ? false : true" :content="itemsonson.note1">
<el-input v-model="itemsonson.note1" disabled="disabled"></el-input>
</el-tooltip>
</el-form-item>
</div>
<div
v-else-if="itemson.name === '算法优势'"
style="margin-bottom: 20px"
>
<div
v-for="itemDataForm in dataForm.infoList"
:key="itemDataForm.attrType"
>
<div
v-if="itemDataForm.attrType === '算法优势'"
class="textAndImg"
>
<div
v-for="itemDataFormValue in itemDataForm.attrValue"
:key="itemDataFormValue.name + 'value'"
class="textAndImgSon"
style="border: 1px solid #3c9bcd;margin"
>
<div v-else-if="itemson.name === '算法优势'" style="margin-bottom: 20px">
<div v-for="itemDataForm in dataForm.infoList" :key="itemDataForm.attrType">
<div v-if="itemDataForm.attrType === '算法优势'" class="textAndImg">
<div v-for="itemDataFormValue in itemDataForm.attrValue" :key="itemDataFormValue.name + 'value'"
class="textAndImgSon" style="border: 1px solid #3c9bcd;margin">
<div>{{ itemDataFormValue.name }}</div>
<el-tooltip placement="top">
<div slot="content">{{ itemDataFormValue.desc }}</div>
@ -143,24 +107,11 @@
</div>
</div>
</div>
<div
v-else-if="itemson.name === '应用场景'"
style="margin-bottom: 20px"
>
<div
v-for="itemDataForm in dataForm.infoList"
:key="itemDataForm.attrType"
>
<div
v-if="itemDataForm.attrType === '应用场景'"
class="textAndImg"
>
<div
v-for="itemDataFormValue in itemDataForm.attrValue"
:key="itemDataFormValue.name + 'value'"
class="textAndImgSon"
style="border: 1px solid #3c9bcd;margin"
>
<div v-else-if="itemson.name === '应用场景'" style="margin-bottom: 20px">
<div v-for="itemDataForm in dataForm.infoList" :key="itemDataForm.attrType">
<div v-if="itemDataForm.attrType === '应用场景'" class="textAndImg">
<div v-for="itemDataFormValue in itemDataForm.attrValue" :key="itemDataFormValue.name + 'value'"
class="textAndImgSon" style="border: 1px solid #3c9bcd;margin">
<div>{{ itemDataFormValue.name }}</div>
<el-tooltip placement="top">
<div slot="content">{{ itemDataFormValue.desc }}</div>
@ -171,24 +122,11 @@
</div>
</div>
</div>
<div
v-else-if="itemson.name === '功能介绍'"
style="margin-bottom: 20px"
>
<div
v-for="itemDataForm in dataForm.infoList"
:key="itemDataForm.attrType"
>
<div
v-if="itemDataForm.attrType === '功能介绍'"
class="textAndImg"
>
<div
v-for="itemDataFormValue in itemDataForm.attrValue"
:key="itemDataFormValue.name + 'value'"
class="textAndImgSon"
style="border: 1px solid #3c9bcd;margin"
>
<div v-else-if="itemson.name === '功能介绍'" style="margin-bottom: 20px">
<div v-for="itemDataForm in dataForm.infoList" :key="itemDataForm.attrType">
<div v-if="itemDataForm.attrType === '功能介绍'" class="textAndImg">
<div v-for="itemDataFormValue in itemDataForm.attrValue" :key="itemDataFormValue.name + 'value'"
class="textAndImgSon" style="border: 1px solid #3c9bcd;margin">
<div>{{ itemDataFormValue.name }}</div>
<el-tooltip placement="top">
<div slot="content">{{ itemDataFormValue.desc }}</div>
@ -240,9 +178,9 @@ export default {
},
insertList (val) {
if (val) {
if (this.dataForm.type === '应用资源') {
if (this.dataForm.type === '应用系统') {
this.dataView = val.filter(
(item) => item.name === this.dataForm.type + '一'
(item) => item.name === '应用资源一'
)[0]
this.dataForm.infoList.map((item, index) => {
this.dataView.children.map((itemView, indexView) => {
@ -452,8 +390,8 @@ export default {
this.$http
.get(
'/dataResourceRel/queryApp4PartByKeyId' +
'?keyId=' +
this.dataForm.id
'?keyId=' +
this.dataForm.id
)
.then(({ data: res }) => {
this.dataView.children[index].children[indexSon].children[
@ -469,9 +407,9 @@ export default {
this.$http
.get(
'/dataResourceRel/queryPart4AppByKeyId?keyId=' +
this.dataForm.id +
'&type=' +
'组件服务'
this.dataForm.id +
'&type=' +
'组件服务'
)
.then(({ data: res }) => {
this.dataView.children[index].children[indexSon].children[
@ -486,7 +424,7 @@ export default {
}
}
},
created () {},
created () { },
mounted () {
this.deptName()
}
@ -505,17 +443,20 @@ export default {
font-size: 22px;
margin-bottom: 25px;
}
.dataTitleSon {
padding-left: 30px;
color: #333333;
font-size: 22px;
margin-bottom: 20px;
background: url('~@/assets/img/sj-jx.png') no-repeat;
background: url("~@/assets/img/sj-jx.png") no-repeat;
background-position-x: 15px;
}
.multipleAdditionsClass {
display: flex;
& > div {
&>div {
margin-right: 30px;
border: 1px solid #3c9bcd;
width: 212px;
@ -525,7 +466,8 @@ export default {
align-items: center;
padding: 10px;
overflow: hidden;
& > div:first-child {
&>div:first-child {
margin-bottom: 10px;
font-weight: bold;
line-height: 14px;
@ -535,7 +477,8 @@ export default {
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
& > div:nth-child(2) {
&>div:nth-child(2) {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
@ -543,7 +486,8 @@ export default {
-webkit-line-clamp: 6;
line-height: initial;
}
& > div:nth-child(3) {
&>div:nth-child(3) {
width: 90%;
overflow: hidden;
text-overflow: ellipsis;
@ -554,6 +498,7 @@ export default {
}
}
}
.videoAndImgCss {
cursor: pointer;
font-size: 12px;
@ -562,10 +507,13 @@ export default {
padding: 5px;
margin-top: 10px;
background: rgba(60, 155, 205, 0.1);
display: inline-block;
}
.textAndImg {
display: flex;
padding-left: 30px;
.textAndImgSon {
width: 212px;
height: 182px;
@ -575,7 +523,8 @@ export default {
align-items: center;
padding: 10px;
position: relative;
& > div {
&>div {
-webkit-line-clamp: 5;
overflow: hidden;
text-overflow: ellipsis;
@ -583,11 +532,13 @@ export default {
-webkit-box-orient: vertical;
word-break: break-all;
}
& > div:first-child {
&>div:first-child {
margin-bottom: 10px;
font-weight: bold;
}
& > div:nth-child(3) {
&>div:nth-child(3) {
margin-top: 10px;
position: absolute;
bottom: 8px;
@ -601,13 +552,27 @@ export default {
}
}
}
.dataContent {
display: grid;
grid-template-columns: repeat(3, 33%);
padding-left: 30px;
display: flex;
align-items: center;
flex-wrap: wrap;
}
::v-deep .el-form-item {
flex: 1;
display: flex;
justify-content: flex-start;
}
::v-deep .el-form-item__label {
width: 112px;
}
::v-deep .el-form-item__content {
display: inline-block;
input {
width: 400px;
}

View File

@ -36,6 +36,7 @@
<div class="agreeOr" v-if="taskId">
<h3>审批</h3>
<div>
<el-button type="info" @click="entrustTask()" v-if='taskEntrustFlag && taskEntrustFlag2'>转办</el-button>
<el-button type="primary" @click="showDialog('同意')">同意</el-button>
<el-button type="danger" plain @click="showDialog('驳回')"
>驳回</el-button
@ -61,6 +62,7 @@
> -->
</div>
</div>
<ren-task-entrust v-if="renTaskEntrustVisible" ref="renTaskEntrust"></ren-task-entrust>
<!-- 流程详情 -->
<ren-process-detail></ren-process-detail>
<el-dialog
@ -84,6 +86,7 @@
</template>
<script>
import RenTaskEntrust from '@/components/ren-process-running/src/ren-task-entrust'
import bus from '@/views/bus.js'
import ResourcesAndServices from './ResourcesAndServices.vue'
import debounce from 'lodash/debounce'
@ -93,7 +96,8 @@ export default {
//
// mixins: [processModule],
components: {
ResourcesAndServices
ResourcesAndServices,
RenTaskEntrust
},
props: {
// fromList: {
@ -105,6 +109,9 @@ export default {
},
data () {
return {
taskEntrustFlag: false,
taskEntrustFlag2: false,
renTaskEntrustVisible: false,
dialogVisible: false,
dialogType: '',
input: '',
@ -132,6 +139,35 @@ export default {
console.log('params=================>', this.$route, this.$route.params)
this.taskId = this.$route.params.taskId
this.dataForm.taskId = this.$route.params.taskId
this.$http.get('/sys/user/info').then(({ data: res }) => {
res.data.roleIdList.map(val => {
this.$http.get('/sys/role/' + val).then(role => {
if (role.data.data.name === '流程管理员') {
this.taskEntrustFlag = true
this.$http
.get(
'/act/task/getTaskVariables?taskId=' + this.$route.params.taskId + '&variableName=allowEntrust'
).then(entrust => {
console.log('11111111111111', entrust, this.dataForm)
if (entrust.data.data.allowEntrust === true) {
this.taskEntrustFlag2 = true
if (this.taskEntrustFlag && this.taskEntrustFlag2) {
this.$alert('当前审核部门为' + this.dataForm.deptName + ',该部门未配置审核人,请联系运维工程师配置完成后进行流程转办!', '流程提醒', {
confirmButtonText: '确定',
callback: action => {
// this.$message({
// type: 'info',
// message: `action: ${action}`
// })
}
})
}
}
})
}
})
})
})
this.init()
console.log('fromList', this.$router.currentRoute.params.businessKey)
// this.dataForm = this.$router.currentRoute.params.params.params.resourceDTO
@ -154,6 +190,15 @@ export default {
},
computed: {},
methods: {
entrustTask () {
this.renTaskEntrustVisible = true
this.$nextTick(() => {
this.$refs.renTaskEntrust.dataForm.taskId = this.dataForm.taskId
this.$refs.renTaskEntrust.callbacks = this.callbacks
this.$refs.renTaskEntrust.init()
})
},
getInfo (id) {
this.$http.get('/resourceMountApply/' + id).then(({ data: res }) => {
this.dataForm = res.data.resourceDTO

View File

@ -1,8 +1,8 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-29 15:59:51
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-04 14:34:45
* @LastEditors: Light
* @LastEditTime: 2022-11-01 15:00:19
* @Description: 告诉大家这是什么
-->
<!-- 流程业务表单 -->
@ -13,40 +13,32 @@
<h3>申请人信息</h3>
<div class="big-BOX">
<p>
<span class="text"
>申请人<span> {{ dataForm.content.user || '--' }}</span></span
>
<span class="text"
>电话<span>{{ dataForm.content.phone || '--' }}</span></span
>
<span class="text"
>单位<span>{{ dataForm.content.unit || '--' }}</span></span
>
<span class="text">申请人<span> {{ dataForm.content.user || '--' }}</span></span>
<span class="text">电话<span>{{ dataForm.content.phone || '--' }}</span></span>
<span class="text">单位<span>{{ dataForm.content.unit || '--' }}</span></span>
</p>
<p>
<span class="text">
能力申请标题<span>
{{ dataForm.content.title || '--' }}</span
></span
>
<span class="text" v-if="dataForm.content.applicationSystem"
>应用系统<span>{{
dataForm.content.applicationSystem || '--'
}}</span></span
>
<span class="text" ></span>
{{ dataForm.content.title || '--' }}</span></span>
<span class="text" v-if="dataForm.content.applicationSystem">应用系统<span>{{
dataForm.content.applicationSystem || '--'
}}</span></span>
<span class="text"></span>
</p>
<p>
<span v-if="dataForm.content.applicationSceneStr"
>应用场景<span>
{{ dataForm.content.applicationSceneStr || '--' }}</span
></span>
<span v-if="dataForm.content.applicationSceneStr">应用场景<span>
{{ dataForm.content.applicationSceneStr || '--' }}</span></span>
</p>
<p>
<span>
需求依据<span>
{{ dataForm.content.applicationBackground || '--' }}</span
></span>
{{ dataForm.content.applicationBackground || '--' }}</span></span>
</p>
<p>
<div>
<el-button type="primary" v-if="dataForm.content.attachment" size="small" @click="download(dataForm.content)">附件下载</el-button>
</div>
</p>
<!-- <p>
<span>
@ -71,6 +63,7 @@
<!-- 申请能力 -->
<div class="AbilityApply">
<h3>申请能力</h3>
<div style="font-size:18px;font-weight:600;margin-top:20px;">{{deptName}}</div>
<ul v-for="item in dataList" :key="item.id">
<!-- <li class="title">{{item.address}}</li> -->
<li class="clearfix">
@ -85,7 +78,7 @@
</ul>
</div>
<!-- 流程综合组件 -->
<!-- <ren-process-multiple
<!-- <ren-process-multiple
v-if="processVisible"
updateInstanceIdUrl="/processForm/tabilityapplication/updateInstanceId"
saveFormUrl="/processForm/tabilityapplication"
@ -101,33 +94,25 @@
<el-radio-button label="同意" class="blueAll" @click="showDialog('同意')">同意</el-radio-button>
<el-radio-button label="退回" class="redAll" @click="showDialog('退回')">退回</el-radio-button>
</el-radio-group> -->
<!-- 委托 -->
<el-button type="info" @click="entrustTask()" v-if='taskEntrustFlag && taskEntrustFlag2'>转办</el-button>
<el-button type="primary" @click="showDialog('同意')">同意</el-button>
<el-button type="danger" plain @click="showDialog('驳回')"
>驳回</el-button
>
<el-button type="danger" plain @click="showDialog('驳回')">驳回</el-button>
<!-- <el-input v-if="agreeOrList ==='同意' " v-model="inputAgree" placeholder="请输入同意意见"></el-input>
<el-input v-if="agreeOrList ==='退回'" v-model="inputNo" placeholder="请输入退回意见"></el-input>
<el-button class="inputBule" @click="agreeOrNot">提交</el-button> -->
</div>
</div>
<ren-task-entrust v-if="renTaskEntrustVisible" ref="renTaskEntrust"></ren-task-entrust>
<!-- 流程详情 -->
<ren-process-detail></ren-process-detail>
<el-dialog
title="审批意见"
:close-on-click-modal="false"
:visible.sync="dialogVisible"
width="30%"
:before-close="handleClose"
>
<ren-process-detail ref="renProcessMultiple"></ren-process-detail>
<el-dialog title="审批意见" :close-on-click-modal="false" :visible.sync="dialogVisible" width="30%"
:before-close="handleClose">
<el-input v-model="input" placeholder="请输入审批意见"></el-input>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose2"> </el-button>
<el-button
type="primary"
@click.native="agreeOrNot($store.state.contentTabsActiveName)"
> </el-button
>
<el-button type="primary" @click.native="agreeOrNot($store.state.contentTabsActiveName)"> </el-button>
</span>
</el-dialog>
</el-card>
@ -135,6 +120,7 @@
<script>
//
import RenTaskEntrust from '@/components/ren-process-running/src/ren-task-entrust'
import processModule from '@/mixins/process-module'
// import mixinViewModule from '@/mixins/view-module'
import debounce from 'lodash/debounce'
@ -146,7 +132,11 @@ export default {
mixins: [processModule],
data () {
return {
callbacks: null,
taskEntrustFlag: false,
taskEntrustFlag2: false,
dialogVisible: false,
renTaskEntrustVisible: false,
dialogType: '',
input: '',
visible: true,
@ -168,12 +158,23 @@ export default {
content: {}
},
dataList: [],
deptName: '',
inputAgree: '',
inputNo: '',
agreeOrList: '同意'
}
},
created () {
//
this.$http.get('/sys/user/info').then(({ data: res }) => {
res.data.roleIdList.map(val => {
this.$http.get('/sys/role/' + val).then(role => {
if (role.data.data.name === '流程管理员') {
this.taskEntrustFlag = true
}
})
})
})
// KEY
console.log('params=================>', this.$route, this.$route.params)
this.dataForm.taskId = this.$route.params.taskId
@ -204,7 +205,8 @@ export default {
// }
},
components: {
RenProcessDetail
RenProcessDetail,
RenTaskEntrust
},
methods: {
init () {
@ -219,7 +221,16 @@ export default {
}
})
},
entrustTask () {
this.renTaskEntrustVisible = true
this.$nextTick(() => {
this.$refs.renTaskEntrust.dataForm.taskId = this.dataForm.taskId
this.$refs.renTaskEntrust.callbacks = this.callbacks
this.$refs.renTaskEntrust.init()
})
},
showDialog (title) {
this.input = title
this.dialogVisible = true
this.dialogType = title
},
@ -229,7 +240,7 @@ export default {
this.input = ''
done()
})
.catch((_) => {})
.catch((_) => { })
},
handleClose2 () {
this.dialogVisible = false
@ -239,8 +250,8 @@ export default {
console.log(window.SITE_CONFIG.previewUrl)
window.open(
window.SITE_CONFIG.previewUrl +
'hisense_office/onlinePreview?url=' +
btoa(encodeURI(url))
'hisense_office/onlinePreview?url=' +
btoa(encodeURI(url))
)
},
//
@ -262,6 +273,26 @@ export default {
this.dataForm,
'elas============================'
)
this.deptName = res.data.tAbilityApplicationDTOList[0].resourceOwnerDept.name
this.$http
.get(
`/act/task/getTaskVariables?${params}&variableName=allowEntrust`
).then(entrust => {
if (entrust.data.data.allowEntrust === true) {
this.taskEntrustFlag2 = true
if (this.taskEntrustFlag && this.taskEntrustFlag2) {
this.$alert('当前审核部门为' + res.data.tAbilityApplicationDTOList[0].resourceOwnerDept.name + ',该部门未配置审核人,请联系运维工程师配置完成后进行流程转办!', '流程提醒', {
confirmButtonText: '确定',
callback: action => {
// this.$message({
// type: 'info',
// message: `action: ${action}`
// })
}
})
}
}
})
if (res.data.tAbilityApplicationDTOList[0].applicationScene) {
res.data.tAbilityApplicationDTOList[0].applicationSceneStr = ''
res.data.tAbilityApplicationDTOList[0].applicationScene.map(
@ -272,7 +303,7 @@ export default {
index <
res.data.tAbilityApplicationDTOList[0].applicationScene
.length -
1
1
) {
res.data.tAbilityApplicationDTOList[0].applicationSceneStr +=
'、'
@ -307,7 +338,7 @@ export default {
this.dataList.push(obj)
}
})
.catch(() => {})
.catch(() => { })
} else {
params = `instanceId=${this.dataForm.instanceId}`
this.$http
@ -359,7 +390,7 @@ export default {
this.dataList.push(obj)
}
})
.catch(() => {})
.catch(() => { })
}
},
//
@ -375,7 +406,7 @@ export default {
// this.dataForm.content = res.data
// console.log(this.dataForm, 'ela')
})
.catch(() => {})
.catch(() => { })
},
// 退
agreeOrNot: debounce(
@ -412,7 +443,7 @@ export default {
}
})
})
.catch(() => {})
.catch(() => { })
this.tabRemoveHandle(data)
} else {
this.$message.error('请输入审批意见!')
@ -486,7 +517,13 @@ export default {
console.log(data)
},
//
taskHandleErrorCallback (data) {}
taskHandleErrorCallback (data) { },
download (data) {
const alink = document.createElement('a')
alink.download = '附件' // ,,IE10
alink.href = data.attachment // url
alink.click() //
}
},
mounted () {
// this.applyData()
@ -497,38 +534,47 @@ export default {
::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;
@ -539,6 +585,7 @@ export default {
}
}
}
::v-deep .AbilityApply {
margin-top: 32px;
@ -548,27 +595,33 @@ export default {
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;
@ -581,22 +634,26 @@ export default {
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;
@ -610,17 +667,21 @@ export default {
}
}
}
::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;
@ -632,12 +693,14 @@ export default {
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;
@ -648,8 +711,10 @@ export default {
color: #ffffff;
border: 1px solid #0558e1;
}
.redAll {
margin-left: 10px;
::v-deep .el-radio-button__inner {
width: 80px;
height: 32px;
@ -661,12 +726,14 @@ export default {
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;
}

View File

@ -15,37 +15,47 @@
<el-button type="danger" @click="deleteHandle()">{{ $t('deleteBatch') }}</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="title" :label="$t('notice.title')" header-align="center" align="center"></el-table-column>
<el-table-column prop="type" :label="$t('notice.type')" header-align="center" align="center" width="150">
<el-table-column prop="title" :label="$t('notice.title')" header-align="center" align="center" width="180">
</el-table-column>
<!-- 内容 prop="content"-->
<el-table-column :label="$t('news.content')" header-align="center" align="center">
<template slot-scope="scope">
{{ $getDictLabel("notice_type", scope.row.type) }}
<el-tooltip effect="dark" :content="scope.row.content" placement="top">
<span class="text-ellipsis">{{ scope.row.content }}</span>
</el-tooltip>
</template>
</el-table-column>
<el-table-column prop="senderName" :label="$t('notice.senderName')" header-align="center" align="center" width="150"></el-table-column>
<el-table-column prop="senderDate" :label="$t('notice.senderDate')" header-align="center" align="center" width="170"></el-table-column>
<el-table-column prop="type" :label="$t('notice.type')" header-align="center" align="center" width="150">
<template slot-scope="scope">
{{ $getDictLabel("notice_type", scope.row.type) }}
</template>
</el-table-column>
<el-table-column prop="senderName" :label="$t('notice.senderName')" header-align="center" align="center"
width="150"></el-table-column>
<el-table-column prop="senderDate" :label="$t('notice.senderDate')" header-align="center" align="center"
width="170"></el-table-column>
<el-table-column prop="status" :label="$t('notice.status')" header-align="center" align="center" width="130">
<template slot-scope="scope">
<el-tag v-if="scope.row.status === 0" size="small" type="danger">{{ $t('notice.status0') }}</el-tag>
<el-tag v-else size="small" type="success">{{ $t('notice.status1') }}</el-tag>
<el-tag v-if="scope.row.status === 0" size="small" type="danger">{{ $t('notice.status0') }}</el-tag>
<el-tag v-else size="small" type="success">{{ $t('notice.status1') }}</el-tag>
</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 v-if="scope.row.status === 0" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button v-if="scope.row.status === 1" type="text" size="small" @click="viewHandle(scope.row)">{{ $t('notice.view') }}</el-button>
<el-button v-if="scope.row.status === 0" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">
{{ $t('update') }}</el-button>
<el-button v-if="scope.row.status === 1" type="text" size="small" @click="viewHandle(scope.row)">{{
$t('notice.view')
}}</el-button>
<el-button 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>
<!-- 弹窗, 新增 / 修改 -->
@ -60,7 +70,7 @@ import AddOrUpdate from './notice-add-or-update'
import { addDynamicRoute } from '@/router'
export default {
mixins: [mixinViewModule],
data () {
data() {
return {
mixinViewModuleOptions: {
getDataListURL: '/sys/notice/page',
@ -77,7 +87,7 @@ export default {
AddOrUpdate
},
methods: {
viewHandle (row) {
viewHandle(row) {
//
const routeParams = {
routeName: `${this.$route.name}__${row.id}`,
@ -93,3 +103,13 @@ export default {
}
}
</script>
<style scoped>
.text-ellipsis {
/*1. 先强制一行内显示文本*/
white-space: nowrap;
/*2. 超出的部分隐藏*/
overflow: hidden;
/*3. 文字用省略号替代超出的部分*/
text-overflow: ellipsis;
}
</style>

View File

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

View File

@ -142,48 +142,7 @@ export default {
//
RankingData: [],
//
AnomalyStatisticsTable: [
{
name: '接口名称',
address: 'http://hhhhhhhhhhhhhhhhhhhh',
method: '调用方法',
type: '组件类型',
provider: '提供商名称',
state: '监控状态'
},
{
name: '接口名称',
address: 'http://hhhhhhhhhhhhhhhhhhhh',
method: '调用方法',
type: '组件类型',
provider: '提供商名称',
state: '监控状态'
},
{
name: '接口名称',
address: 'http://hhhhhhhhhhhhhhhhhhhh',
method: '调用方法',
type: '组件类型',
provider: '提供商名称',
state: '监控状态'
},
{
name: '接口名称',
address: 'http://hhhhhhhhhhhhhhhhhhhh',
method: '调用方法',
type: '组件类型',
provider: '提供商名称',
state: '监控状态'
},
{
name: '接口名称',
address: 'http://hhhhhhhhhhhhhhhhhhhh',
method: '调用方法',
type: '组件类型',
provider: '提供商名称',
state: '监控状态'
}
],
AnomalyStatisticsTable: [],
//
currentPage4: 1,
total: 0

View File

@ -3,22 +3,36 @@
<div class="mod-sys__dept">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-button v-if="$hasPermission('sys:dept:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button>
<el-button v-if="$hasPermission('sys:dept:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}
</el-button>
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" row-key="id" border style="width: 100%;">
<el-table-column prop="name" :label="$t('dept.name')" header-align="center" min-width="150"></el-table-column>
<el-table-column prop="parentName" :label="$t('dept.parentName')" header-align="center" align="center"></el-table-column>
<el-table-column prop="sort" :label="$t('dept.sort')" header-align="center" align="center" width="80"></el-table-column>
<el-table-column prop="parentName" :label="$t('dept.parentName')" header-align="center" align="center">
</el-table-column>
<el-table-column prop="sort" :label="$t('dept.sort')" header-align="center" align="center" width="80">
</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:dept:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button v-if="$hasPermission('sys:dept:delete')" type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>
<el-button v-if="$hasPermission('sys:dept:update')" type="text" size="small"
@click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button v-if="$hasPermission('sys:dept:delete')" type="text" size="small"
@click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>
</template>
</el-table-column>
<el-table-column prop="type" label="类型" header-align="center" align="center" width="80"></el-table-column>
<el-table-column prop="district" label="区划" header-align="center" align="center" width="80"></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>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
</div>
@ -31,12 +45,16 @@ import AddOrUpdate from './dept-add-or-update'
import qs from 'qs'
export default {
mixins: [mixinViewModule],
data () {
data() {
return {
mixinViewModuleOptions: {
getDataListURL: '/sys/dept/list',
deleteURL: '/sys/dept'
}
},
total: 0,
limit: 10,
page: 1,
dataList: []
}
},
components: {
@ -45,16 +63,35 @@ export default {
watch: {
dataList: {
handler: function () {
this.init()
this.getData()
}
}
},
methods: {
init () {
debugger
this.$http.get('/sys/dept/list').then((res) => {
res.data.data.map((item, index) => {
if (item.district != null || item.children.length > 0) {
// ,
pageSizeChangeHandle (val) {
this.page = 1
this.limit = val
this.getData()
},
// ,
pageCurrentChangeHandle (val) {
this.page = val
this.getData()
},
getData() {
// debugger
let _data = {
limt: this.limit,
page: this.page,
}
this.$http.get('sys/dept/page', {
params: _data
}).then((res) => {
this.total = res.data.data.total;
res.data.data.list.map((item, index) => {
console.log('item, index------------>', item, index);
if (item.district != null || item.children.length >= 0) {
this.$http.get('/sys/region/' + item.district).then((data) => {
this.dataList[index].district = data.data.data.name
console.log('datafrom', this.dataList)
@ -72,10 +109,10 @@ export default {
}
})
})
}
},
},
created () {
this.init()
created() {
this.getData()
}
}
</script>

View File

@ -52,15 +52,15 @@
>
<el-option
label="增加"
value="/renren-admin/resource%/insert"
value="/ucs-admin/resource%/insert"
></el-option>
<el-option
label="更新"
value="/renren-admin/resource%/update"
value="/ucs-admin/resource%/update"
></el-option>
<el-option
label="删除"
value="/renren-admin/resource%/delete"
value="/ucs-admin/resource%/delete"
></el-option>
</el-select>
</el-form-item>

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')
@ -118,11 +123,12 @@ export default {
},
//
getMenuList () {
console.log('获取菜单位置2')
return this.$http.get('/sys/menu/list?type=0').then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.menuList = res.data
this.menuList = res.data.filter(item => item.site === 0)
}).catch(() => {})
},
//
@ -159,7 +165,7 @@ export default {
},
//
dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
this.$refs.dataForm.validate((valid) => {
if (!valid) {
return false
}
@ -178,7 +184,7 @@ export default {
})
}).catch(() => {})
})
}, 1000, { 'leading': true, 'trailing': false })
}, 1000, { leading: true, trailing: false })
}
}
</script>

View File

@ -1,3 +1,10 @@
<!--
* @Author: hisense.wuhongjian
* @Date: 2022-06-14 09:30:23
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-10-17 14:54:26
* @Description: 告诉大家这是什么
-->
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-sys__menu">

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

@ -1,209 +1,92 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-sys__user">
<el-form
:inline="true"
:model="dataForm"
@keyup.enter.native="getDataList()"
>
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input
v-model="dataForm.username"
placeholder="用户名"
clearable
></el-input>
<el-input v-model="dataForm.username" placeholder="用户名" clearable></el-input>
</el-form-item>
<el-form-item>
<el-input
v-model="dataForm.real_name"
placeholder="真实姓名"
clearable
></el-input>
<el-input v-model="dataForm.real_name" placeholder="真实姓名" clearable></el-input>
</el-form-item>
<el-form-item>
<ren-select
v-model="dataForm.gender"
dict-type="gender"
:placeholder="$t('user.gender')"
></ren-select>
<ren-select v-model="dataForm.gender" dict-type="gender" :placeholder="$t('user.gender')"></ren-select>
</el-form-item>
<el-form-item>
<el-select
v-model="dataForm.postId"
:placeholder="$t('user.postIdList')"
clearable
>
<el-option
:label="data.postName"
v-for="data in postList"
:key="data.id"
:value="data.id"
>{{ data.postName }}</el-option
>
<el-select v-model="dataForm.postId" :placeholder="$t('user.postIdList')" clearable>
<el-option :label="data.postName" v-for="data in postList" :key="data.id" :value="data.id">{{ data.postName
}}</el-option>
</el-select>
</el-form-item>
<el-form-item>
<ren-dept-tree
v-model="dataForm.deptId"
:placeholder="$t('dept.title')"
:query="true"
></ren-dept-tree>
<ren-dept-tree v-model="dataForm.deptId" :placeholder="$t('dept.title')" :query="true" ref="renDeptTree">
</ren-dept-tree>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getDataList()">{{
$t('query')
$t('query')
}}</el-button>
</el-form-item>
<el-form-item>
<el-button
v-if="$hasPermission('sys:user:save')"
type="primary"
@click="addOrUpdateHandle()"
>{{ $t('add') }}</el-button
>
<el-button v-if="$hasPermission('sys:user:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button
v-if="$hasPermission('sys:user:delete')"
type="danger"
@click="deleteHandle()"
>{{ $t('deleteBatch') }}</el-button
>
<el-button v-if="$hasPermission('sys:user:delete')" type="danger" @click="deleteHandle()">{{ $t('deleteBatch')
}}</el-button>
</el-form-item>
<el-form-item>
<el-button
v-if="$hasPermission('sys:user:export')"
type="info"
@click="exportHandle()"
>{{ $t('export') }}</el-button
>
<el-button v-if="$hasPermission('sys:user:export')" type="info" @click="exportHandle()">{{ $t('export') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button @click="reset()">重置</el-button>
</el-form-item>
</el-form>
<el-table
v-loading="dataListLoading"
:data="dataList"
border
@selection-change="dataListSelectionChangeHandle"
@sort-change="dataListSortChangeHandle"
style="width: 100%"
>
<el-table-column
type="selection"
header-align="center"
align="center"
width="50"
></el-table-column>
<el-table-column
prop="username"
:label="$t('user.username')"
sortable="custom"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="realName"
label="真实姓名"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="deptName"
:label="$t('user.deptName')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="email"
:label="$t('user.email')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="mobile"
:label="$t('user.mobile')"
sortable="custom"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="gender"
:label="$t('user.gender')"
sortable="custom"
header-align="center"
align="center"
>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle"
@sort-change="dataListSortChangeHandle" style="width: 100%">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="username" :label="$t('user.username')" header-align="center"
align="center"></el-table-column>
<el-table-column prop="realName" label="真实姓名" header-align="center" align="center"></el-table-column>
<el-table-column prop="deptName" :label="$t('user.deptName')" header-align="center" align="center">
</el-table-column>
<el-table-column prop="email" :label="$t('user.email')" header-align="center" align="center"></el-table-column>
<el-table-column prop="mobile" :label="$t('user.mobile')" header-align="center"
align="center"></el-table-column>
<el-table-column prop="gender" :label="$t('user.gender')" header-align="center"
align="center">
<template slot-scope="scope">
{{ $getDictLabel('gender', scope.row.gender) }}
</template>
</el-table-column>
<el-table-column
prop="status"
:label="$t('user.status')"
sortable="custom"
header-align="center"
align="center"
>
<el-table-column prop="status" :label="$t('user.status')" header-align="center"
align="center">
<template slot-scope="scope">
<el-tag v-if="scope.row.status === 0" size="small" type="danger">{{
$t('user.status0')
$t('user.status0')
}}</el-tag>
<el-tag v-else size="small" type="success">{{
$t('user.status1')
$t('user.status1')
}}</el-tag>
</template>
</el-table-column>
<el-table-column
prop="createDate"
:label="$t('user.createDate')"
sortable="custom"
header-align="center"
align="center"
width="180"
></el-table-column>
<el-table-column
:label="$t('handle')"
fixed="right"
header-align="center"
align="center"
width="150"
>
<el-table-column prop="createDate" :label="$t('user.createDate')" header-align="center"
align="center" width="180"></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:user:update')"
type="text"
size="small"
@click="addOrUpdateHandle(scope.row.id)"
>{{ $t('update') }}</el-button
>
<el-button
v-if="$hasPermission('sys:user:delete')"
type="text"
size="small"
@click="deleteHandle(scope.row.id)"
>{{ $t('delete') }}</el-button
>
<el-button v-if="$hasPermission('sys:user:update')" type="text" size="small"
@click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button v-if="$hasPermission('sys:user: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"
@current-change="pageCurrentChangeHandle"
>
<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>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update
v-if="addOrUpdateVisible"
ref="addOrUpdate"
@refreshDataList="getDataList"
></add-or-update>
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
</div>
</el-card>
</template>
@ -214,7 +97,7 @@ import AddOrUpdate from './user-add-or-update'
import qs from 'qs'
export default {
mixins: [mixinViewModule],
data () {
data() {
return {
mixinViewModuleOptions: {
getDataListURL: '/sys/user/page',
@ -235,30 +118,33 @@ export default {
components: {
AddOrUpdate
},
created () {
created() {
this.getPostList()
},
methods: {
reset () {
reset() {
this.dataForm.username = ''
this.dataForm.real_name = ''
this.dataForm.deptId = ''
this.dataForm.postId = ''
this.dataForm.gender = ''
if (this.$refs.renDeptTree) {
this.$refs.renDeptTree.showDeptName = '';
}
this.$http
.get(
this.mixinViewModuleOptions.getDataListURL +
'?' +
qs.stringify({
page: 1,
limit: 10,
username: '',
deptId: '',
postId: '',
gender: ''
})
'?' +
qs.stringify({
page: 1,
limit: 10,
username: '',
deptId: '',
postId: '',
gender: ''
})
)
.then(({ data: res }) => {
this.dataForm.username = ''
this.dataForm.real_name = ''
this.dataForm.deptId = ''
this.dataForm.postId = ''
this.dataForm.gender = ''
if (res.code !== 0) {
this.dataList = []
this.total = 0
@ -279,7 +165,7 @@ export default {
this.dataListLoading = false
})
},
getPostList () {
getPostList() {
this.$http
.get('/sys/post/list')
.then(({ data: res }) => {
@ -288,7 +174,7 @@ export default {
}
this.postList = res.data
})
.catch(() => {})
.catch(() => { })
}
}
}

View File

@ -9,7 +9,7 @@
>
<div class="content">
<img class="img" :src="dataInfo.imgSrc" />
<div class="title">{{ title }}</div>
<div class="title">{{ '我的'+title }}</div>
<div class="flex-row-bottom">
<span class="num" :style="{ color: dataInfo.textColor }">{{
formatNum(dataInfo.num)
@ -90,7 +90,7 @@
</div>
<div class="more" @click="goPage(dataInfo.url)">查看更多 ></div>
</div>
<div class="list-box flex-row-center no-data" v-else>暂无数据</div>
<div class="list-box flex-row-center no-data" v-else>暂无{{title}}任务</div>
</div>
</template>
<script>

View File

@ -4,19 +4,19 @@
<div v-if="!noData" v-loading="loading">
<div class="no-box">
<div class="no no2">
<el-tooltip effect="dark" :content="no2Obj.name" placement="top">
<el-tooltip effect="dark" :content="no2Obj.name" placement="top" v-if="no2Obj.name">
<div class="name ellipsis" :style="{ color: colorObj[2] }">{{ no2Obj.name || '--' }}</div>
</el-tooltip>
<div class="count">{{ formatCount(no2Obj.count) }}</div>
</div>
<div class="no no1">
<el-tooltip effect="dark" :content="no1Obj.name" placement="top">
<el-tooltip effect="dark" :content="no1Obj.name" placement="top" v-if="no1Obj.name">
<div class="name ellipsis" :style="{ color: colorObj[1] }">{{ no1Obj.name || '--' }}</div>
</el-tooltip>
<div class="count">{{ formatCount(no1Obj.count) }}</div>
</div>
<div class="no no3">
<el-tooltip effect="dark" :content="no3Obj.name" placement="top">
<el-tooltip effect="dark" :content="no3Obj.name" placement="top" v-if="no3Obj.name">
<div class="name ellipsis" :style="{ color: colorObj[3] }">{{ no3Obj.name || '--' }}</div>
</el-tooltip>
@ -26,7 +26,7 @@
<div class="flex-row-between row-name" v-for="(data, i) in listInfo" :key="i">
<div class="left">
<div class="row-index">{{ i + 4 }}</div>
<el-tooltip effect="dark" :content="data.name" placement="top">
<el-tooltip effect="dark" :content="data.name" placement="top" v-if="data.name">
<div class="name-text ellipsis">{{ data.name || '--' }}</div>
</el-tooltip>
</div>

View File

@ -3,8 +3,8 @@
<!-- -->
<div class="flex-row-start top">
<div class="flex-row-start dept-left">
<dept-todo-view title="部门待办" v-loading="loadingToDo" :dataInfo="toToData"></dept-todo-view>
<dept-todo-view title="部门已办" v-loading="loadingHasToDo" :dataInfo="hasToDodoData"
<dept-todo-view title="待办" v-loading="loadingToDo" :dataInfo="toToData"></dept-todo-view>
<dept-todo-view title="已办" v-loading="loadingHasToDo" :dataInfo="hasToDodoData"
style="margin-left: 0"></dept-todo-view>
</div>
<div class="flex-row-start dept-chart-box">
@ -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: [],
@ -101,43 +103,53 @@ export default {
//
getToDo () {
this.loadingToDo = true
const data = {
limit: 5,
page: 1
}
Apis.getToDoTask(data, res => {
// const data = {
// limit: 5,
// page: 1
// }
this.$http.get('/act/task/myToDoTaskPage?page=1&limit=5').then(res => {
this.loadingToDo = false
if (res.data.code !== 0) {
return this.$message.error(res.data.msg)
}
console.log('res----待办-------->', res.data)
this.toToData.list = res.data.data.records || []
this.toToData.list = res.data.data.list || []
this.toToData.num = res.data.data.total || 0
}, err => {
this.$message.error(err)
this.loadingToDo = false
})
// Apis.getToDoTask(data, res => {
// this.loadingToDo = false
// if (res.data.code !== 0) {
// return this.$message.error(res.data.msg)
// }
// console.log('res------------>', res.data)
// this.toToData.list = res.data.data.records || []
// this.toToData.num = res.data.data.total || 0
// }, err => {
// this.$message.error(err)
// this.loadingToDo = false
// })
},
//
getHasToDo () {
const data = {
limit: 5,
page: 1
}
// const data = {
// limit: 5,
// page: 1
// }
this.loadingHasToDo = true
Apis.getHasToDoTask(data, res => {
this.$http.get('/act/his/getMyHandledInstancePage?page=1&limit=5').then(res => {
this.loadingHasToDo = false
if (res.data.code !== 0) {
return this.$message.error(res.data.msg)
}
console.log('res----已办-------->', res.data)
this.hasToDodoData.list = res.data.data.records || []
this.hasToDodoData.list = res.data.data.list || []
this.hasToDodoData.num = res.data.data.total || 0
}, err => {
this.$message.error(err)
this.loadingHasToDo = false
console.log('err-----已办------->', err)
})
// Apis.getHasToDoTask(data, res => {
// this.loadingHasToDo = false
// if (res.data.code !== 0) {
// return this.$message.error(res.data.msg)
// }
// console.log('res------------>', res.data)
// this.hasToDodoData.list = res.data.data.records || []
// this.hasToDodoData.num = res.data.data.total || 0
// }, err => {
// this.$message.error(err)
// this.loadingHasToDo = false
// console.log('err------------>', err)
// })
},
//
getShelvesTotal () {

View File

@ -60,6 +60,7 @@
"body-parser": "^1.20.0",
"chalk": "^4.1.1",
"chokidar": "^3.5.2",
"compression-webpack-plugin": "^6.1.1",
"crypto-js": "^4.1.1",
"eslint": "^7.32.0",
"eslint-plugin-prettier": "^4.2.1",

View File

@ -2,105 +2,104 @@
* @Author: hisense.wuhongjian
* @Date: 2022-03-29 16:45:25
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-11-21 20:17:38
* @LastEditTime: 2022-10-19 17:44:14
* @Description: 告诉大家这是什么
-->
<!DOCTYPE html>
<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" style="background: #010519">
<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>

View File

@ -2,17 +2,18 @@
* @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-11-21 19:37:54
* @LastEditTime: 2022-11-05 21:38:13
* @Description: 系统静态参数配置
*/
var _global = {}
var CONFIGITEM = {
//version: 'qingdao', //
//version: 'xihaian', // 西
//version: 'dev', //
version: 'test', //
//version: 'frp', // 穿
vNum: 'v0.8.7.2',
// version: 'qingdao', //
// version: 'xihaian', // 西
// version: 'dev', //
// version: 'zhanTingDev', // dev (2022-09-13:)
// version: 'qingdao', //
version: 'frp', // 穿
vNum: 'v0.8.15.2',
configData: {
//
qingdao: {
@ -26,8 +27,28 @@ var CONFIGITEM = {
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: '15.72.183.90:8000/renren-admin',
apiURL: 'http://15.72.183.90:8000/ucs-admin',
websocketURL: '15.72.183.90:8000/ucs-admin',
// websocketURL: '192.168.124.233:8888/ucs-admin',
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/ucs-admin',
// websocketURL: '10.16.5.146:8888/ucs-admin', //
websocketURL: '10.18.1.99:8889/ucs-admin',
// websocketURL: '10.16.5.35:8888/ucs-admin',
POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',
},
@ -40,9 +61,18 @@ var CONFIGITEM = {
userName: '',
userPwd: '',
},
//
camreaInfo: {
// cameraUrl: '10.134.135.92:9537', // 西-
// cameraUrl: '10.134.135.9:9537', // 西-
cameraUrl: '192.168.124.236:9537', // vpn
},
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/ucs-admin', //
// websocketURL: '10.134.135.92:8888/ucs-admin', //
websocketURL: '192.168.124.254:8888/ucs-admin', // -
// websocketURL: '10.18.1.99:8889/ucs-admin', //
POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',
},
@ -57,7 +87,8 @@ 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/ucs-admin',
// websocketURL: '10.18.1.99:8889/ucs-admin',
POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',
},
@ -72,7 +103,7 @@ var CONFIGITEM = {
},
backUrl: 'http://192.168.124.243:9797',
previewUrl: 'http://192.168.124.243:9796/',
websocketURL: '221.0.232.149:7082/renren-admin',
websocketURL: '192.168.124.243:8888/ucs-admin',
POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',
},
@ -87,7 +118,7 @@ var CONFIGITEM = {
},
backUrl: 'http://124.222.94.39:9797',
previewUrl: 'http://124.222.94.39:9796/',
websocketURL: '124.222.94.39:8888/renren-admin',
websocketURL: '124.222.94.39:8888/ucs-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-11-05 22:24:53
* @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
@ -30,14 +32,14 @@ if (newLocation !== 'baotou' && newLocation !== 'xihaian') {
infrastructure.deptId = '1067246875800000066'
navListManagement.navList = [
{ name: '共享门户', key: 'home' },
{ name: '能力市', key: 'DetailsPageconetent' },
{ name: '能力云图', key: 'capabilityCloud' },
{ name: '能力市', key: 'DetailsPageconetent' },
// { name: '', key: 'capabilityCloud' },
{ name: '能力统计', key: 'abilityStatistics' },
// { name: '', key: 'developmentGuide' },
{ 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,23 +47,23 @@ if (newLocation !== 'baotou' && newLocation !== 'xihaian') {
]
footerDataList.footerList = {
company: {
left: '青岛市大数据发展管理局建设',
right: '海信网络科技股份有限公司',
left: '山东省大数据局',
right: '政府标识码3700000097',
},
address: [
{
name: '鲁IC备00000000号',
value: '政府标识码3702000106',
},
{
name: '版权所有:青岛市大数据发展管理局',
value: '地址山东省青岛市香港中路17号市级机关办公楼',
},
{
name: '电话0532-8561234',
value: '传真0532-2145122',
},
],
// address: [
// {
// name: ': 266071',
// value: 'Email: QDDSJJ@qingdao.shandong.cn',
// },
// {
// name: '',
// value: '17',
// },
// {
// name: '0532-85912587',
// value: '0532-85912181',
// },
// ],
}
mapTestNum.lsNum = [
{
@ -119,7 +121,7 @@ else if (newLocation === 'baotou') {
]
navListManagement.navList = [
{ name: '共享门户', key: 'home' },
{ name: '能力市', key: 'DetailsPageconetent' },
{ name: '能力市', key: 'DetailsPageconetent' },
{ name: '能力云图', key: 'capabilityCloud' },
{ name: '能力统计', key: 'abilityStatistics' },
// { name: '', key: 'developmentGuide' },
@ -490,7 +492,7 @@ else if (newLocation === 'xihaian') {
]
navListManagement.navList = [
{ name: '共享门户', key: 'home' },
{ name: '能力市', key: 'DetailsPageconetent' },
{ name: '能力市', key: 'DetailsPageconetent' },
{ name: '能力云图', key: 'capabilityCloud' },
{ name: '能力统计', key: 'abilityStatistics' },
// { name: '', key: 'developmentGuide' },
@ -521,4 +523,11 @@ else if (newLocation === 'xihaian') {
},
],
}
xhaHasPermissionUser.list = [
'xihaian01',
'xihaian02',
'xihaian03',
'xihaian04',
'admin',
]
}

View File

@ -0,0 +1,111 @@
* {
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: 446px;
height: 194px;
background: #fff;
text-align: center;
font-size: 18px;
color: #707070;
font-family: 'Alibaba PuHuiTi';
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 {
height: 40px;
padding-left: 24px;
padding-right: 24px;
padding-top: 10px;
background: #007fff;
text-align: left;
}
.model-container .title-span {
font-family: 'Alibaba PuHuiTi';
font-size: 18px !important;
color: #ffffff;
}
.model-container .model-close {
position: absolute;
right: 20px;
top: 10px;
width: 18px;
height: 18px;
cursor: pointer;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAABHNCSVQICAgIfAhkiAAAALZJREFUOE9jZACC////ZwIpcyBOZGRk/A8SIwSAehqAatiB6itBahmBAhVAuh2qcRGQTiBkGNSQeqie6UA6G2QQyGSYIEgOr2E41UO9RpRh+CxlhIUFIZcRkocbhM9lUK/j9T6KQTgMuwgU10eKRaxhiGEQDsNg5uCMCKwGQQ07AKTtkVxyF8hWxZU0aOciLLFDehjhimKSYo1QOiEkDw4jQoqISbTUy2tUy/1Qr1FeHiElOIqYAKkPngur14nOAAAAAElFTkSuQmCC);
}
.model-container .model-content {
margin-top: 24px;
}
.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 .confirmChrome {
width: 140px;
height: 36px;
background: #0087ff;
border-radius: 0.04rem !important;
font-size: 16px;
font-family: 'Alibaba PuHuiTi';
color: #fff;
line-height: 36px;
border-radius: 6px;
}
.model-container .confirm360 {
width: 140px;
height: 36px;
background: #0087ff;
border-radius: 0.04rem !important;
font-size: 16px;
font-family: 'Alibaba PuHuiTi';
color: #fff;
line-height: 36px;
margin-left: 50px;
border-radius: 6px;
}
@font-face {
font-family: 'Alibaba PuHuiTi';
src: url('~@/assets/home/font/Alibaba-PuHuiTi-Light.otf');
}
/* 气泡提示框按钮居中 */
.ant-popover-inner-content .ant-popover-buttons {
text-align: center;
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,167 @@
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">' +
'<div class="model-title">' +
'<span class="title-span">title</span>' +
'<div class="model-close"></div>' +
'</div>' +
'<div class="model-content">content</div>' +
'<div class="controls">' +
'<a class="confirmChrome">下载谷歌浏览器</a>' +
'<a class="confirm360">下载360浏览器</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('.title-span').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('.model-close').onclick =
ModelBoxCon.querySelector('.confirmChrome').onclick =
ModelBoxCon.querySelector('.confirm360').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) {
debugger
var _thisEvent = target.target
if (_thisEvent.classList.contains('confirmChrome')) {
e.option.confirmCallBack('Chrome')
} else if (_thisEvent.classList.contains('confirm360')) {
e.option.confirmCallBack('360')
}
doc.style.display = 'none'
e.isShow = false
return false
},
} || {}
return ModelBox
})()
var opt = new ModelBox({
title: '提示信息',
content: '平台暂不支持IE内核浏览器访问建议使用谷歌(Chrome)或360浏览器极速模式登录',
isShow: false,
confirmCallBack: function(data) {
debugger
//
const agent = getPCNum()
//console.log('agent------------>', agent)
//console.log('datadatadatadata----------->', data)
if (data === 'Chrome') {
if (agent == 64) {
// 64
downloadFile(
'ChromeStandaloneSetup64.exe',
'/static/download/ChromeStandaloneSetup64.exe'
)
} else {
// 32
downloadFile(
'ChromeStandalonesetup32.exe',
'/static/download/standalonesetup32.exe'
)
}
} else {
if (agent == 64) {
// 64
downloadFile(
'360se13.1.6260.0.exe',
'/static/download/360se13.1.6260.0.exe'
)
} else {
// 32
downloadFile(
'360se13.1.6110.0.exe',
'/static/download/360se13.1.6110.0.exe'
)
}
}
},
})
//
if (judgeAgent() !== 'Chrome') {
//alert('')
opt.show()
}

Some files were not shown because too many files have changed in this diff Show More