Compare commits

..

1060 Commits

Author SHA1 Message Date
wuhongjian 4a6416de51 二级路由登录 2022-11-22 10:45:32 +08:00
wuhongjian 8e53d92898 展厅问题修改 2022-11-21 20:38:14 +08:00
gongjiale 82a188251a 新增说明文档和下载图标 2022-09-27 09:20:48 +08:00
gongjiale 1f44d96460 部分问题修改 2022-09-27 09:20:09 +08:00
unknown 43b36362c0 按钮显示修改 2022-09-26 09:26:47 +08:00
unknown 7438e98f19 能力统计明细 2022-09-24 13:20:18 +08:00
unknown 479b96ee06 添加政务云资源申请 2022-09-24 12:24:10 +08:00
wuhongjian ff971b798b 合并版本v0.8.7.2 2022-08-29 18:02:43 +08:00
wuhongjian 754b6ebdec gitignore 2022-08-29 18:01:27 +08:00
wuhongjian 0c78639afa 配置文件更新 2022-08-29 09:58:43 +08:00
wuhongjian 48097bdd54 合并版本v0.8.7.2 2022-08-29 09:58:12 +08:00
wuhongjian 77d94c2d09 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-29 09:45:58 +08:00
wuhongjian 0f7fd813f2 CIM+算法改为CIM+组件 2022-08-29 09:45:48 +08:00
guoyue 27423a3c14 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-27 16:08:11 +08:00
guoyue 0400fdbbb1 基础设施记住已选择 2022-08-27 15:03:32 +08:00
wuhongjian 13226c8976 版本号更新 2022-08-27 14:26:03 +08:00
wuhongjian 66db5faf1b 详情页模糊化处理 2022-08-27 14:25:03 +08:00
wuhongjian 8a0ac98824 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-26 19:24:20 +08:00
wuhongjian 0e224958ce 配置修改 2022-08-26 19:24:17 +08:00
gaoyuanwei bfc88508d8 Merge branch 'hi-ucs-dev' of http://192.168.124.50:80/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-26 18:55:56 +08:00
gaoyuanwei 244123dd74 赋能案例--数据资源 2022-08-26 18:55:19 +08:00
guoyue 4a0f2eff68 基础设施:去掉tooltip,更改点击弹框不选择数据丢失bug 2022-08-26 17:51:23 +08:00
wuhongjian ca51b29fbc Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-26 11:54:09 +08:00
wuhongjian 84850788d8 解决进入工作台报错的问题 2022-08-26 11:54:07 +08:00
gaoyuanwei cd067cfcc1 赋能场景-典型赋能场景;图片 2022-08-26 10:49:29 +08:00
wuhongjian 64ef4c95a1 bug修复 2022-08-26 09:27:34 +08:00
gaoyuanwei d7d2c56ec7 赋能场景 2022-08-25 20:47:41 +08:00
a0049873 748b3b72ea 隐藏按钮 2022-08-25 20:24:17 +08:00
a0049873 faa639200e 赋能场景 2022-08-25 20:22:33 +08:00
a0049873 9b448c0fcc 赋能场景修改 2022-08-25 19:56:48 +08:00
wuhongjian 7212fd3e7c Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-25 19:06:55 +08:00
wuhongjian 916ea5ecd2 bug修复 2022-08-25 19:06:53 +08:00
gaoyuanwei caef0e672a bug 2022-08-25 17:56:33 +08:00
gaoyuanwei e0ea4a6a2d bug修改 2022-08-25 17:45:34 +08:00
wuhongjian 9b77589c6e 配置文件更新 2022-08-25 15:20:06 +08:00
wuhongjian b923e7ac2d 配置文件更新 2022-08-25 15:07:19 +08:00
gaoyuanwei bae47ea208 使用方式--归属部门与服务商 2022-08-24 18:30:12 +08:00
gaoyuanwei 89d782fa9b 只留已申请标签 2022-08-24 17:42:31 +08:00
wuhongjian 0a55ac7b68 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-24 13:53:48 +08:00
wuhongjian 894db08c4e 市局基础设施只要图片预览 2022-08-24 13:53:45 +08:00
gaoyuanwei f28d12ac88 使用方式-- --申请后查看 2022-08-24 12:54:40 +08:00
wuhongjian cd832f3f90 合并版本v0.8.7.2 2022-08-24 09:20:04 +08:00
wuhongjian d1a50bc25a 修复变形问题 2022-08-24 09:19:32 +08:00
gaoyuanwei 1c0be1ca6e 赋能案例标题忘改了 2022-08-23 19:29:45 +08:00
gaoyuanwei 17bc4877f2 bug修改 2022-08-23 18:02:00 +08:00
gaoyuanwei 0c4015cb5c 亿点点修改 2022-08-23 17:47:24 +08:00
a0049873 07198b8ebc 样式修改 2022-08-23 17:11:50 +08:00
a0049873 d1e6b9acd7 修改首页 选择数据类型样式 , 修改 全局搜索逻辑 2022-08-23 16:51:41 +08:00
wuhongjian 931e3a0e0a 合并版本v0.8.7.1 2022-08-23 16:38:48 +08:00
wuhongjian d9186e3ac8 删除报错接口 2022-08-23 16:37:29 +08:00
a0049873 ded027bb64 新 申请流程 2022-08-23 13:59:43 +08:00
a0049873 273a7c98c8 BUG 修改 2022-08-22 17:34:15 +08:00
a0049873 21e1bb5898 算法 平台地址 添加申请前后 的显示和隐藏 2022-08-22 16:52:42 +08:00
a0049873 c824e53a50 消息中心位置 2022-08-22 11:50:51 +08:00
gaoyuanwei 906ffdec57 NAME---name 2022-08-19 17:14:38 +08:00
a0049873 ac2d520db9 BUG修改 2022-08-19 17:08:12 +08:00
a0049873 17dd883672 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-19 16:53:57 +08:00
a0049873 73591c0ed2 CIM专区 图层 算法开发 2022-08-19 16:53:42 +08:00
gaoyuanwei d2b9f38f06 背景 2022-08-19 16:09:10 +08:00
gaoyuanwei 2938de6392 样式 2022-08-19 15:42:18 +08:00
gaoyuanwei 9d075bda9c cim前两个 2022-08-19 14:50:41 +08:00
gaoyuanwei b2effa3c14 前两个 2022-08-19 14:24:34 +08:00
gaoyuanwei a4b7510e1a cim的js文件 2022-08-19 12:51:03 +08:00
gaoyuanwei d6e49c16f1 cim图片 2022-08-19 10:15:48 +08:00
a0049873 88e063fa04 CIM专区 初始化 2022-08-19 10:03:43 +08:00
gaoyuanwei 7014db07b3 前台进入后台图标修改 2022-08-18 11:01:27 +08:00
zhangzhuliang 9eaa4ca9bb bug提交 2022-08-17 17:33:57 +08:00
a0049873 080682f6b7 能力下架功能开发 2022-08-17 16:42:46 +08:00
a0049873 3f235f3d81 修改能力申请文案 2022-08-17 11:16:25 +08:00
wuhongjian 31e81a258c 配置文件更新 2022-08-16 16:28:26 +08:00
gaoyuanwei 05a706cd8a 后台-上架审批-提示修改 2022-08-16 15:08:22 +08:00
wuhongjian 307bd6c020 合并版本v0.8.6.1 2022-08-16 09:57:36 +08:00
wuhongjian 1f3774255a 配置更新 2022-08-16 09:55:42 +08:00
a0049873 82249450c4 首页添加版本判断 2022-08-16 09:16:36 +08:00
gaoyuanwei 36b161da4c Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-15 18:09:18 +08:00
gaoyuanwei de04c8ce33 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-15 18:08:33 +08:00
a0049873 331924e14e 能力广场排序 2022-08-15 18:08:12 +08:00
gaoyuanwei f45974d654 申请--- --- 应用系统 2022-08-15 18:06:34 +08:00
a0049873 e50dc1ad1f 新排序 2022-08-15 16:47:33 +08:00
a0049873 0b972d7bb9 更改首页逻辑 2022-08-15 15:08:50 +08:00
a0049873 55693b880f Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-15 14:50:24 +08:00
a0049873 5f3c8d3556 全局搜索 2022-08-15 14:48:53 +08:00
a0049873 91d3622d77 智能算法添加置顶按钮 2022-08-15 14:36:54 +08:00
gaoyuanwei 3befb49a12 首页文字---特效 2022-08-15 14:07:06 +08:00
gaoyuanwei c4597f6cbd 最少50字 2022-08-12 18:06:56 +08:00
wuhongjian a2267a59bb Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-12 17:17:06 +08:00
wuhongjian ce3f7ec183 配置更新 2022-08-12 17:17:03 +08:00
a0049873 1e7aca42fd 点图标返回首页 2022-08-12 16:34:13 +08:00
a0049873 f78f2f1292 能力集市 新增点击任意地方跳转详情 2022-08-12 14:19:53 +08:00
851673013@qq.com bc55f39d38 bug734 2022-08-11 19:50:15 +08:00
zhangzhuliang b1aae6175b 会议室代码提交 2022-08-11 14:22:54 +08:00
guoyue 810e183611 ifx: 门户详情 --资源key更改 2022-08-11 09:33:21 +08:00
guoyue 0b718307d8 fix 融合服务bug 2022-08-10 17:52:49 +08:00
guoyue 3f3fc65ff5 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-10 15:48:08 +08:00
a0049873 dc1b55de29 BUG修改 2022-08-10 15:47:29 +08:00
guoyue 607e119c61 fix : 组件服务获取列表传参 2022-08-10 15:47:24 +08:00
a0049873 b99ec35e90 能力广场 2022-08-10 14:55:56 +08:00
851673013@qq.com 6e2d146ca8 算法广场 2022-08-10 14:54:45 +08:00
wuhongjian 2fe6aed0df Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-10 11:54:14 +08:00
wuhongjian 94cc9163cf gis广场bug修复 2022-08-10 11:53:19 +08:00
851673013@qq.com f6bd2ba3ad 广场 2022-08-10 10:34:04 +08:00
851673013@qq.com 12bee09773 广场 2022-08-10 10:32:50 +08:00
851673013@qq.com 469c6afd61 智能算法广场 2022-08-10 09:34:50 +08:00
gaoyuanwei e1d18f8b27 入口在能力集市 2022-08-09 20:01:21 +08:00
851673013@qq.com 8bfae0915d 能力广场 2022-08-09 18:33:31 +08:00
a0049873 1775286039 BUG修改 2022-08-09 18:25:18 +08:00
851673013@qq.com f21d694200 能力广场 2022-08-09 18:19:18 +08:00
a0049873 3160a0710f BUG修改 2022-08-09 18:19:03 +08:00
851673013@qq.com c4155bb364 能力广场 2022-08-09 18:15:16 +08:00
a0049873 cdc3b9c215 应用广场 滚动 2022-08-09 18:08:33 +08:00
wuhongjian e026c97a73 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-09 17:10:48 +08:00
wuhongjian 5a32f96150 bug修复 2022-08-09 17:09:58 +08:00
851673013@qq.com 31fd3b2511 同层广场和算法广场 2022-08-09 17:09:20 +08:00
a0049873 b91625bae2 应用广场点击跳转 2022-08-09 16:54:02 +08:00
a0049873 33243a5e00 能力广场 2022-08-09 16:50:18 +08:00
gaoyuanwei 60d8b97335 标题改变、返回集市 2022-08-09 16:41:07 +08:00
a0049873 4c4de0abea 应用广场开发 2022-08-09 16:36:47 +08:00
851673013@qq.com b4268c9961 广场 2022-08-09 16:27:04 +08:00
a0049873 cbbcc43549 图片 2022-08-09 15:57:49 +08:00
a0049873 56b781cdfc Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/src/views/capacitySquare/index.vue
2022-08-09 15:27:22 +08:00
a0049873 27573355d2 广场 2022-08-09 15:25:45 +08:00
851673013@qq.com 064b71c6fc 应用广场 2022-08-09 15:23:38 +08:00
guoyue b3769f2415 fix:融合服务-详情 2022-08-09 13:13:01 +08:00
guoyue 2e79549ae1 fix: 融合服务-详情 2022-08-09 13:02:16 +08:00
851673013@qq.com c449977b34 阿里巴巴普惠体 2022-08-09 11:49:53 +08:00
851673013@qq.com 5cfffccfe8 阿里巴巴普惠体 2022-08-09 11:47:06 +08:00
851673013@qq.com 7e61899d24 应用广场-只能算法 2022-08-09 11:37:23 +08:00
gaoyuanwei d2d18fc0a6 能力广场弹窗 2022-08-09 11:31:14 +08:00
guoyue b7afa338a6 工作台--样式调整 2022-08-09 11:13:44 +08:00
guoyue a9e3582db2 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-09 10:35:01 +08:00
guoyue 141378eaee fix: 赋能场景--基础设施--详情 2022-08-09 10:34:48 +08:00
a0049873 ca4c907d8a 能力广场 2022-08-09 09:40:12 +08:00
851673013@qq.com b1c6383f31 能力需求bug 2022-08-08 17:54:58 +08:00
851673013@qq.com cfa2f69b80 工作台bug修改 2022-08-08 17:42:28 +08:00
851673013@qq.com 11a555200c 工作台-部门待办和部门已办 2022-08-08 16:39:21 +08:00
851673013@qq.com 2ee3a34b94 bug794增加审核中标签 2022-08-08 14:43:07 +08:00
guoyue 635f25cb8d Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-08 13:33:34 +08:00
guoyue 0864e8a1ca 融合服务:组合能力详情更改 2022-08-08 13:33:17 +08:00
851673013@qq.com 01f36b7586 能力集市树区市样式修改 2022-08-08 11:38:50 +08:00
guoyue b90e3377a2 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-08 10:47:44 +08:00
guoyue dae78b5513 赋能场景 详情 2022-08-08 10:47:33 +08:00
851673013@qq.com 06e9ade25d bug826-应用详情-功能介绍 2022-08-08 09:44:26 +08:00
wuhongjian 8a58e70fc6 合并版本v0.8.4.3 2022-08-08 09:19:39 +08:00
wuhongjian cf53e51913 西海岸需求更新 2022-08-06 16:36:20 +08:00
gaoyuanwei b3695b04cd 技术文档左侧超出文本框 2022-08-06 11:01:32 +08:00
a0049873 f54169dfa3 后台挂载BUG修改 前台视频资源上限改为1000 2022-08-05 17:02:55 +08:00
a0049873 a25df90421 BUG修改 2022-08-05 14:51:43 +08:00
a0049873 d4f2efd515 BUG修改 2022-08-05 14:50:38 +08:00
a0049873 a24b273809 赋能案例 改为100条 2022-08-05 12:01:23 +08:00
851673013@qq.com 027a3a072d 能力集市左侧树,区级加上数 2022-08-05 11:13:16 +08:00
851673013@qq.com 9040f4fa5b bug819: 图层上架:上架时,先提示接口异常,再提示上架成功,在我的申请界面,申请单号为空 2022-08-05 10:47:21 +08:00
wuhongjian 012d562013 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-05 10:01:52 +08:00
wuhongjian dca5dc511e bug修复,配置更新 2022-08-05 10:01:49 +08:00
851673013@qq.com fbd25a0c5d bug824:上架业务组件:共享条件选择后,提示信息不消失 2022-08-05 09:51:59 +08:00
851673013@qq.com 8c5dc5f7e4 bug822:能力集市:组件服务-图层详情,使用方式的地址建议可以点击打开链接 2022-08-05 09:32:03 +08:00
gaoyuanwei a4e51ff48c 817bug 2022-08-04 18:58:24 +08:00
851673013@qq.com eafd6aea19 能力云图-总调用次数 2022-08-04 16:52:08 +08:00
a0049873 f2b714a915 改成100个 2022-08-04 15:14:55 +08:00
a0049873 6d79448ebe 能力申请驳回开发 视频调整成100个 2022-08-04 15:07:58 +08:00
851673013@qq.com 9f9edd23eb 能力统计bug 2022-08-04 13:58:14 +08:00
851673013@qq.com c7b15fbe5b bug804 2022-08-03 16:42:40 +08:00
851673013@qq.com 79c315bf17 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-03 15:26:19 +08:00
851673013@qq.com cb25668fb4 bug792 2022-08-03 15:26:06 +08:00
gaoyuanwei 8bce63cb0e 新手指引提示bug修改 2022-08-03 15:20:27 +08:00
851673013@qq.com 3817737f04 bug796 2022-08-03 14:47:02 +08:00
gaoyuanwei 8c15de2b45 797bug 2022-08-03 14:31:17 +08:00
851673013@qq.com a07d621206 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-03 14:28:16 +08:00
851673013@qq.com fb2e57e756 bug746组件服务智能算法-算法优势 2022-08-03 14:27:57 +08:00
guoyue 403018f234 赋能场景详情标签字体演示更改 2022-08-03 14:23:23 +08:00
guoyue 8ada557003 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-03 14:18:08 +08:00
guoyue ce0ce3f2f1 技术文档更改 2022-08-03 14:17:51 +08:00
guoyue c33729bbb8 合并 2022-08-03 14:09:11 +08:00
gaoyuanwei e271d2fe94 789、790bug 2022-08-03 14:05:42 +08:00
gaoyuanwei e8be9f904e Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	back/src/views/modules/activiti/demo/comments.vue
2022-08-03 13:39:21 +08:00
guoyue bba86294df 技术文档更改 2022-08-03 13:36:43 +08:00
guoyue dee93f83b9 技术文档 优化 2022-08-03 12:58:51 +08:00
gaoyuanwei 9c991756eb 784bug 2022-08-03 12:10:56 +08:00
851673013@qq.com a9e500490d 能力上架 2022-08-03 11:07:16 +08:00
851673013@qq.com 5673d88047 bug783 2022-08-03 10:32:08 +08:00
851673013@qq.com ce6163621d bug786能力需求申请 2022-08-03 09:46:46 +08:00
gaoyuanwei 341119dcd2 782Bug 2022-08-03 09:20:25 +08:00
a0049873 3bb705ec3f 区市站点 添加 鼠标移动效果 2022-08-02 18:37:51 +08:00
a0049873 b1c04e5f31 趋势站点 新增 崂山区 李沧区 2022-08-02 17:59:47 +08:00
851673013@qq.com 2bbb2e19cd bug729 2022-08-02 17:39:06 +08:00
851673013@qq.com 5a14127977 bug算法pk 2022-08-02 17:30:39 +08:00
gaoyuanwei 8630b7af86 技术文档-定位、联系我们 2022-08-02 17:28:58 +08:00
a0049873 c889fe069f 申请方 新增终止功能 审批方能力申请 改为驳回 2022-08-02 17:23:07 +08:00
wuhongjian 9601541628 合并版本v0.8.4.1 2022-08-02 16:06:08 +08:00
wuhongjian 4a4a4b3d35 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-02 15:40:41 +08:00
wuhongjian a34e079708 修复市局空白页 2022-08-02 15:40:37 +08:00
gaoyuanwei bfa739691a 技术文档-能力申请图片数字bug修改 2022-08-02 14:07:46 +08:00
gaoyuanwei 4d94b59a55 技术文档-四个跳转 2022-08-02 13:46:12 +08:00
gaoyuanwei 466e9b510d Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/src/views/instructionManual/components/menuBook.vue
2022-08-02 12:13:01 +08:00
gaoyuanwei 77c5cba599 技术文档-联系我们、使用手册、提供服务 2022-08-02 12:00:40 +08:00
a0049873 e081c560a7 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/public/index.html
2022-08-02 11:59:59 +08:00
a0049873 ee9ec45450 前台上架 驳回功能 2022-08-02 11:59:01 +08:00
851673013@qq.com 651c58404f 前台-技术文档-总体流程 2022-08-02 11:58:02 +08:00
wuhongjian 0a16dd5e84 合并版本v0.8.4.1 2022-08-02 10:19:04 +08:00
wuhongjian ff44fd4691 测试环境配置更新 2022-08-02 10:18:01 +08:00
wuhongjian 11362c536d 开发环境配置更新 2022-08-02 10:15:32 +08:00
guoyue 1959ac68f9 样式调整 新手指引 2022-08-01 19:04:35 +08:00
guoyue de2930eda4 指导手册 样式调整 2022-08-01 18:48:08 +08:00
guoyue d6f8ad6f31 样式调整 新手指导 2022-08-01 18:46:32 +08:00
guoyue 3f0f51ad13 新手指引 样式调整 2022-08-01 18:40:13 +08:00
guoyue 2649c45a66 新手指引: 宽度调整 2022-08-01 18:36:02 +08:00
guoyue f59460da3a Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-01 18:24:55 +08:00
guoyue 9a8be5272e 开发文档 2022-08-01 18:24:42 +08:00
a0049873 b5a94cd6a7 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-01 17:53:05 +08:00
a0049873 9bb633e1e6 BUG修改 2022-08-01 17:52:38 +08:00
lizhicheng2 ae2e323769 融合服务列表bug修复 2022-08-01 17:05:40 +08:00
lizhicheng2 035a600a3c 赋能场景详情完善 2022-08-01 16:43:44 +08:00
guoyue c5d7351809 合并 2022-08-01 16:22:24 +08:00
guoyue 1ccd81cd66 融合服务,一键申请--基础设施更改 2022-08-01 16:16:16 +08:00
gaoyuanwei 636318536b 765bug,上架关联组件时搜索功能 2022-08-01 15:57:09 +08:00
gaoyuanwei 52c1850cfb 归属部门,必填字段 2022-08-01 14:53:03 +08:00
wuhongjian 8ecafcc1ae Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-08-01 14:42:26 +08:00
wuhongjian 2bf1249913 算法仓更新 2022-08-01 14:42:08 +08:00
a0049873 dafc2ac1be 后台挂载 部门校验 2022-08-01 14:34:44 +08:00
851673013@qq.com 1cd5db6444 判断当前用户是否拥有归属部门 2022-08-01 14:34:02 +08:00
851673013@qq.com a202bb27c9 bug767 2022-08-01 11:47:39 +08:00
a0049873 80e9ddf3fc BUG修改 2022-08-01 11:07:58 +08:00
a0049873 ce5d587c35 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	back/public/index.html
2022-08-01 09:23:58 +08:00
a0049873 328ab1102e 西海岸演示版本 2022-08-01 09:21:57 +08:00
851673013@qq.com 53f0b38c5a bug774搜索框遮挡问题 2022-07-30 17:55:40 +08:00
851673013@qq.com b79f0674bf bug764闲情也行距和bug759头部图标小手和自测bug 2022-07-30 17:13:56 +08:00
guoyue 1d5a81d091 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-29 18:10:00 +08:00
guoyue 44d1aad7dd 打包模式详情 2022-07-29 18:09:06 +08:00
gaoyuanwei 5f0e5bb7ce 769\753 Bug修改 2022-07-29 18:05:04 +08:00
gaoyuanwei 879797d0c5 基本信息1111 2022-07-29 16:02:35 +08:00
guoyue 7b04a81d62 赋能场景详情增加头部 2022-07-29 15:58:27 +08:00
guoyue 6b07f48dd1 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-29 15:36:32 +08:00
guoyue 32ad0904c2 打包模式-详情 2022-07-29 15:36:21 +08:00
gaoyuanwei c8a8a58705 747\739\748 Bug 2022-07-29 15:27:24 +08:00
851673013@qq.com 35d8487a5f 来源部门共享门户颜色修改 2022-07-29 14:54:31 +08:00
851673013@qq.com 3609c2ba20 bug751 2022-07-29 14:49:44 +08:00
lizhicheng2 4d31d111ac 赋能场景详情补充 2022-07-29 14:20:40 +08:00
851673013@qq.com d8cbe92fb6 工作台部门能力风险和能力云图 2022-07-29 14:14:30 +08:00
gaoyuanwei 16a624b136 应用场景、功能介绍tab展示不全 2022-07-29 11:43:24 +08:00
gaoyuanwei cfa9de0b32 747、749 2022-07-29 11:02:16 +08:00
guoyue 42bad9af8e 赋能场景 基础设施标签查询传参 2022-07-29 09:27:04 +08:00
wuhongjian dbb6d55bce 合并版本v0.8.3.2 2022-07-29 09:12:15 +08:00
wuhongjian 428af8b74f 时间 2022-07-29 09:08:06 +08:00
851673013@qq.com 8376fb23d5 后台能力运行监控 2022-07-28 20:40:48 +08:00
a0049873 bab0c94093 BUG修改 2022-07-28 20:37:08 +08:00
a0049873 fb78805786 BUG修改 2022-07-28 20:20:34 +08:00
a0049873 1c7bdef115 修改BUG 2022-07-28 20:12:50 +08:00
a0049873 fabd0da877 更改 西海岸字段 2022-07-28 19:35:42 +08:00
guoyue 488dbfbe5f Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-28 17:54:49 +08:00
guoyue 816d07495c 打包模式详情页添加 2022-07-28 17:52:31 +08:00
lizhicheng2 d9139ae621 赋能场景详情-初步完成 2022-07-28 17:36:23 +08:00
a0049873 ea3f4b3da1 弹窗禁用点击遮罩层 2022-07-28 17:23:57 +08:00
a0049873 fc524a6b43 BUG修改 2022-07-28 17:12:30 +08:00
wuhongjian c9a5bf9f69 合并版本v0.8.3.2 2022-07-28 16:58:01 +08:00
wuhongjian e47d7cf470 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-28 14:43:04 +08:00
wuhongjian b766bcf8fa bug修复 2022-07-28 14:42:44 +08:00
a0049873 bd839fd335 隐藏高级搜索 2022-07-28 14:21:20 +08:00
a0049873 5d3388465f BUG修改 视频展示多个/ 2022-07-28 14:13:49 +08:00
guoyue 78f836dd92 赋能场景:数据资源接口联调 2022-07-28 10:31:42 +08:00
guoyue 20de75e0dd 合并 2022-07-28 10:19:01 +08:00
guoyue 480d887b6d 融合服务 赋能场景 后台管理增删改查 2022-07-28 10:15:49 +08:00
a0049873 fd3a7ef353 基础设施输入框 去除X 2022-07-28 09:40:05 +08:00
a0049873 a11d9eb221 能力申请 摄像头修改 2022-07-27 16:58:31 +08:00
gaoyuanwei 531aa7aafb 前台上架-预览bug修复 2022-07-27 16:19:34 +08:00
851673013@qq.com ef980d77c3 基础设施视频接口调换 2022-07-27 14:19:51 +08:00
lizhicheng2 291b65d03f 前台融合服务页面修改 2022-07-27 13:53:59 +08:00
851673013@qq.com bb9856e5c1 前台富文本样式修改 2022-07-27 11:07:34 +08:00
851673013@qq.com 42020cd1be 富文本前台样式修改 2022-07-27 11:02:32 +08:00
wuhongjian 806a45ccf7 后台开发文档 2022-07-27 10:54:34 +08:00
wuhongjian bab0689c4c 合并版本v0.8.3.1 2022-07-26 18:56:46 +08:00
wuhongjian be75d352b2 JSESSIONID删除 2022-07-26 18:55:33 +08:00
wuhongjian 13622255f8 合并版本v0.8.3.1 2022-07-26 18:08:52 +08:00
wuhongjian a0361b2eba Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-26 18:08:28 +08:00
wuhongjian c2b323b14c bug修复 2022-07-26 18:08:24 +08:00
a0049873 7c2cc4a7f1 修改 后台挂载列表样式 2022-07-26 16:50:02 +08:00
wuhongjian e8dc08504c 合并版本v0.8.3.1 2022-07-26 16:34:23 +08:00
wuhongjian efa51429f9 bug修复 2022-07-26 16:33:10 +08:00
a0049873 5dbaa26848 引入富文本编辑 2022-07-26 16:32:07 +08:00
gaoyuanwei 072bf90913 716\715 bug 2022-07-26 15:47:48 +08:00
wuhongjian 09f65b44ed Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-26 15:16:53 +08:00
wuhongjian b4e6f56c47 添加西海岸地图 2022-07-26 15:16:28 +08:00
a0049873 7ed6be40d7 改名 技术文档 2022-07-26 14:48:02 +08:00
a0049873 c09aa9c1b9 BUG修改 2022-07-26 14:42:17 +08:00
a0049873 5f8d005935 添加预览 时默认保存 常见问题功能 2022-07-26 14:38:09 +08:00
a0049873 486c3e8d46 websocket 钩子 2022-07-26 14:05:58 +08:00
gaoyuanwei 20e75d78cc 填写时红字提示消失 2022-07-26 11:36:15 +08:00
a0049873 fe5b5e1102 BUG修改 标题过长导致右边样式不统一 2022-07-26 10:54:19 +08:00
a0049873 15a3236516 BUG修改 下架的能力 不允许申请 2022-07-26 10:43:28 +08:00
gaoyuanwei 8be597f9cf Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-26 10:18:49 +08:00
gaoyuanwei 14d684bdfd 前台必填字段 2022-07-26 10:18:34 +08:00
a0049873 73ef6f5bdc BUG 修改 我的发布无法跳转 申购车 过滤已经下架的能力 2022-07-26 10:17:47 +08:00
gaoyuanwei 837641ba79 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-26 10:09:16 +08:00
gaoyuanwei 73ed69f315 前台必填项设置 2022-07-26 10:07:39 +08:00
a0049873 b8e4c36223 BUG修改 首页知识库跳转 、 能力统计 添加tooltip 2022-07-26 09:51:47 +08:00
851673013@qq.com 32997c5f73 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/src/views/home/DetailsPageconetent.vue
2022-07-25 19:33:44 +08:00
851673013@qq.com 44e2d6a9b9 基础设施 2022-07-25 19:21:41 +08:00
guoyue a5e5c35da8 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-25 19:15:08 +08:00
guoyue f161ca967a add:赋能场景基础设施弹框 2022-07-25 19:07:07 +08:00
a0049873 975a51e4b4 放开 免批 2022-07-25 17:32:24 +08:00
a0049873 c966d75387 列表样式 2022-07-25 17:20:51 +08:00
a0049873 b7fd109210 后台挂载 新增必填字段校验,列表按必填进行展示 2022-07-25 17:07:47 +08:00
a0049873 3675a618bf 视频审核成功 拼接地址 2022-07-25 15:07:44 +08:00
851673013@qq.com 03bfdd1d14 富文本引用 2022-07-25 11:34:30 +08:00
gaoyuanwei 979458071d 开发组件轮播 2022-07-25 11:24:41 +08:00
851673013@qq.com ef9a2dd15c bug703 2022-07-25 11:09:59 +08:00
gaoyuanwei aa1af8b4cd 应用场景-样式修改 2022-07-25 10:49:20 +08:00
a0049873 dc4b16d04d Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-25 10:17:20 +08:00
a0049873 011cd3708a 基础设施申请添加提示 2022-07-25 10:17:08 +08:00
851673013@qq.com 859005e1c0 bug708 2022-07-25 10:13:01 +08:00
a0049873 afc9b1c1f7 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-25 10:09:21 +08:00
a0049873 3f6a5ab267 BUG修改 2022-07-25 10:09:05 +08:00
gaoyuanwei 4ee80c7529 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-25 09:52:41 +08:00
gaoyuanwei df43efef31 701bug 通知小铃铛的位置 2022-07-25 09:52:23 +08:00
a0049873 fe349c3ff3 BUG修改 2022-07-25 09:51:55 +08:00
a0049873 ba195e1758 配置修改 2022-07-22 18:45:32 +08:00
a0049873 b3b9b48ed4 BUG修改 2022-07-22 18:44:07 +08:00
a0049873 12288fe713 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-22 18:20:31 +08:00
851673013@qq.com 7f7f5d4602 bug 2022-07-22 18:07:25 +08:00
a0049873 90b6866c65 Merge branch 'hi-ucs-dev' into release 2022-07-22 17:29:21 +08:00
851673013@qq.com f10110e1bf bug 2022-07-22 17:26:48 +08:00
a0049873 f372ae6b73 BUG 修改 2022-07-22 17:24:17 +08:00
851673013@qq.com b8afda6f0a 我的浏览bug修改 2022-07-22 16:58:19 +08:00
gaoyuanwei 133553b6a1 上传文件限一个 2022-07-22 16:51:00 +08:00
851673013@qq.com d92cf6925f bug448 2022-07-22 16:46:03 +08:00
guoyue 2bcc93b0d6 合并 2022-07-22 16:09:16 +08:00
guoyue f52cbac587 赋能场景,融合服务挂接更改 2022-07-22 16:06:40 +08:00
a0049873 4a1d7340b9 Merge branch 'release' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-uce-release
# Conflicts:
#	front/public/index.html
#	front/src/main.js
2022-07-22 16:04:05 +08:00
851673013@qq.com 5876a3488e 常见问题bug 2022-07-22 16:02:49 +08:00
a0049873 83ffb69730 BUG修改 2022-07-22 15:49:26 +08:00
a0049873 cf0c32979f Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-22 15:46:26 +08:00
a0049873 795d3e0b56 BUG修改 2022-07-22 15:46:13 +08:00
gaoyuanwei 78a9f22ffb bug--需求提交/搜索校验/样式 2022-07-22 15:39:31 +08:00
851673013@qq.com f0505d2d87 bug691 2022-07-22 14:33:03 +08:00
a0049873 2ac76dc174 添加websocket配置 2022-07-22 10:55:44 +08:00
851673013@qq.com 4e0d54efb1 归属部门bug 2022-07-22 10:50:39 +08:00
wuhongjian 4da090585a 登出问题解决 2022-07-21 18:39:19 +08:00
wuhongjian f952931b92 【单点登录】解决登出问题 2022-07-21 18:38:20 +08:00
wuhongjian b1543e323a 合并版本v0.8.2.6 2022-07-21 18:17:37 +08:00
gaoyuanwei 0aa074e36f Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-21 18:02:43 +08:00
gaoyuanwei 6d318b57b2 需求申请报错修改 2022-07-21 18:00:49 +08:00
a0049873 1bdd5c6a1c BUG修改 2022-07-21 17:58:13 +08:00
gaoyuanwei 0562c702fe 627bug 2022-07-21 17:20:43 +08:00
gaoyuanwei 12f0bdc814 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-21 17:13:55 +08:00
gaoyuanwei 3a34e97ec8 bug 2022-07-21 17:13:39 +08:00
a0049873 2cc2cc4e00 BUG修改 以及消息中心自动刷新 2022-07-21 17:10:13 +08:00
851673013@qq.com 3f24f6feed 后台能力下架审批 2022-07-21 16:45:00 +08:00
a0049873 d3174f8cb0 驳回改成 终止 2022-07-21 16:41:46 +08:00
a0049873 f3499c31b0 BUG修改 2022-07-21 16:20:09 +08:00
gaoyuanwei 2c95fa65af tota 2022-07-21 16:06:45 +08:00
gaoyuanwei 3968d6a7de bug 2022-07-21 15:57:08 +08:00
a0049873 681dceaa47 BUG修改 2022-07-21 15:36:01 +08:00
a0049873 10f3323676 消息中心添加 websocket 2022-07-21 14:34:09 +08:00
851673013@qq.com 66e479ed5f 关闭弹窗bug 2022-07-21 13:52:30 +08:00
851673013@qq.com c0831d1eea 应用资源归属部门 2022-07-21 11:39:09 +08:00
851673013@qq.com 722f0b970a 能力下架申请 2022-07-21 11:29:15 +08:00
gaoyuanwei dbe688f3aa Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-21 11:26:59 +08:00
gaoyuanwei 2be53d5e28 applicationSystem[]变'' 2022-07-21 11:26:47 +08:00
a0049873 f62af22a5e 样式修改 2022-07-21 10:56:54 +08:00
a0049873 d5bb315312 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-21 10:37:33 +08:00
a0049873 599250db0d BUG修改 2022-07-21 10:37:26 +08:00
gaoyuanwei c687738e2c 同意跳转 2022-07-21 10:09:46 +08:00
gaoyuanwei a044ead9b0 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-21 10:00:38 +08:00
gaoyuanwei eadcfdceaf 购物车返回第一页bug 2022-07-21 09:59:17 +08:00
a0049873 578c941f1c 按钮修改 2022-07-21 09:57:47 +08:00
851673013@qq.com 30afa74344 前台上架下一页 2022-07-21 09:15:05 +08:00
wuhongjian 38c77a3e96 西海岸直接回单点 2022-07-20 17:22:23 +08:00
gaoyuanwei 66a5d33609 眼花了,没有png 2022-07-20 16:21:28 +08:00
gaoyuanwei b2d51e12eb 技术文档提示---高级搜索条件编辑---基础设施dec不要 2022-07-20 16:18:18 +08:00
gaoyuanwei 2330dd5680 组件服务-挂载 2022-07-20 15:06:57 +08:00
gaoyuanwei 29a5016590 组件服务-挂接 2022-07-20 15:04:52 +08:00
wuhongjian 6fcc79b738 合并版本v0.8.2.5 2022-07-20 15:02:17 +08:00
wuhongjian 9cdbc6ef61 大屏变黑适配 2022-07-20 15:01:14 +08:00
gaoyuanwei f3e32e9698 前台-申购车-搜索功能 2022-07-20 10:53:02 +08:00
851673013@qq.com 70fb082506 应用详情-应用详情tab-bug修改 2022-07-20 09:18:34 +08:00
a0049873 a833330be1 上架完善 资源图谱转rem 2022-07-19 20:06:01 +08:00
851673013@qq.com 227eb72670 能力云图bug 2022-07-19 19:44:48 +08:00
gaoyuanwei 2905416d07 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-19 19:34:50 +08:00
gaoyuanwei 2548beb7c1 650、657bug 2022-07-19 19:34:43 +08:00
a0049873 0a2ebce897 完善 挂载 2022-07-19 19:30:42 +08:00
a0049873 f820d49f58 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/src/views/capacityOnTheShelf/components/PutOnTheShelf.vue
2022-07-19 18:52:02 +08:00
a0049873 7bcb6b2062 修改多条添加逻辑 2022-07-19 18:51:21 +08:00
gaoyuanwei b6ce94a078 修改来源应用为下拉框 2022-07-19 17:44:39 +08:00
gaoyuanwei 166f6f91be Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-19 17:17:30 +08:00
gaoyuanwei a5ef8d2046 bug==select 2022-07-19 17:17:19 +08:00
gaoyuanwei e4d79e03b8 bug==select 2022-07-19 17:14:42 +08:00
851673013@qq.com 0ca63565e3 样式修改 2022-07-19 16:43:49 +08:00
851673013@qq.com 5afe117bc6 bug619 2022-07-19 16:20:45 +08:00
851673013@qq.com 6953baa878 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-19 16:20:03 +08:00
wuhongjian 9d72fe666d 配置更新 2022-07-19 16:02:54 +08:00
851673013@qq.com 0976ca98ac Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-19 15:54:26 +08:00
851673013@qq.com 768645a94a 归属部门bug619 2022-07-19 15:54:23 +08:00
a0049873 8ec4b585b6 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-19 15:06:32 +08:00
a0049873 d1692a1f51 上架功能修改 2022-07-19 15:06:26 +08:00
a0049873 e770028fba 详情页收藏功能BUG修改 2022-07-19 15:05:37 +08:00
gaoyuanwei bf56ce5eaa bug修改 2022-07-19 14:45:35 +08:00
wuhongjian da68d9117c 合并版本v0.8.2.4 2022-07-19 14:11:58 +08:00
gaoyuanwei 00af09c4f0 bug! 2022-07-19 14:05:47 +08:00
gaoyuanwei b75e6a4fb0 还原 2022-07-19 13:59:26 +08:00
wuhongjian 578b63fdd0 bug修复 2022-07-19 13:40:11 +08:00
gaoyuanwei 9a681317f0 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-19 11:26:29 +08:00
gaoyuanwei 4d01131e74 来源应用穿梭框左侧实现单选 2022-07-19 11:26:18 +08:00
851673013@qq.com 4b33b089f1 我的浏览模糊查询 2022-07-19 11:14:46 +08:00
a0049873 a52966d68a BUG修改 2022-07-19 11:13:15 +08:00
a0049873 dbe0edfcd7 BUG修改 2022-07-19 11:08:32 +08:00
wuhongjian d757b3c8cd 冲突修复 2022-07-19 10:47:45 +08:00
wuhongjian 418ba1300e 合并版本v0.8.2.4 2022-07-19 10:40:08 +08:00
851673013@qq.com 7c63022fc5 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-19 10:25:16 +08:00
851673013@qq.com b15efd9206 bug629 2022-07-19 10:25:10 +08:00
a0049873 ed5ed8c828 能力申请 应用资源特殊处理 2022-07-19 10:22:16 +08:00
851673013@qq.com 0e5ca11c2a Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-19 09:57:41 +08:00
851673013@qq.com b407c3e610 bug626 2022-07-19 09:57:38 +08:00
gaoyuanwei cc633449ed 后台加overflow: hidden; 2022-07-19 09:55:05 +08:00
gaoyuanwei 52ece255f3 冲突 2022-07-19 09:45:36 +08:00
gaoyuanwei a99f4fcbf3 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-19 09:43:58 +08:00
gaoyuanwei f1de4b860e 前台加word-break: break-all; 2022-07-19 09:42:41 +08:00
851673013@qq.com caf80caeff bug630 2022-07-19 09:42:37 +08:00
wuhongjian a89511eee3 合并版本v0.8.2.4 2022-07-19 09:19:29 +08:00
a0049873 74168d8a2c Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-19 09:16:37 +08:00
a0049873 4827fc5784 BUG修改 2022-07-19 09:16:29 +08:00
851673013@qq.com f0d7ca4f39 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-18 18:53:09 +08:00
851673013@qq.com 23a577a544 组件服务挂接 2022-07-18 18:53:04 +08:00
wuhongjian 0e351e915b 合并版本v0.8.2.3 2022-07-18 18:49:43 +08:00
wuhongjian b0a0225dc6 ignore 2022-07-18 18:44:24 +08:00
wuhongjian 209183ec29 ignore 2022-07-18 18:43:53 +08:00
gaoyuanwei 2c241828b9 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-18 18:38:27 +08:00
gaoyuanwei cb5eb60b65 后台挂接-归属部门给我显示出来! 2022-07-18 18:29:17 +08:00
a0049873 83f44d040d Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-18 18:24:35 +08:00
a0049873 0ee999ed86 后台展示 改为详情 2022-07-18 18:24:28 +08:00
gaoyuanwei b19361005f 把部门联系人和电话给我带出来!!! 2022-07-18 18:24:17 +08:00
851673013@qq.com fd32fd6769 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-18 18:17:53 +08:00
851673013@qq.com 46aef1c4df bug577 2022-07-18 18:17:48 +08:00
gaoyuanwei 0a8cc6257d 633bug 2022-07-18 18:04:38 +08:00
a0049873 11dbf272f7 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-18 18:02:04 +08:00
a0049873 cf7fcb4e4a BUG修改 2022-07-18 18:01:56 +08:00
851673013@qq.com 6080e7933a bug498 2022-07-18 18:00:07 +08:00
851673013@qq.com e10cb78ab9 bug625 2022-07-18 17:56:36 +08:00
a0049873 259ee9379a 能力申请修改 2022-07-18 17:55:18 +08:00
851673013@qq.com fe86d84699 应用详情-状态判断bug 2022-07-18 17:40:35 +08:00
wuhongjian 665484d30c Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-18 17:29:30 +08:00
wuhongjian 027409b123 西海岸bug修复 2022-07-18 17:29:28 +08:00
a0049873 a740904660 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-18 17:26:26 +08:00
a0049873 5af7b5f7e8 全部应用资源申请 2022-07-18 17:26:18 +08:00
gaoyuanwei a35a885b2f 业务组件视频、图片分离 2022-07-18 16:39:11 +08:00
851673013@qq.com f535e26c84 归属部门bug 2022-07-18 16:29:49 +08:00
gaoyuanwei 3d3e2729ed 623bug 2022-07-18 16:03:06 +08:00
gaoyuanwei 0c9d41c4ce 621bug 2022-07-18 15:45:40 +08:00
851673013@qq.com 0d66553d28 应用详情暂无样式修改 2022-07-18 15:40:45 +08:00
wuhongjian e1005536bb Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-18 15:39:25 +08:00
wuhongjian 2c526aeb52 数据中台跳转id添加 2022-07-18 15:39:16 +08:00
gaoyuanwei fd2fa09fd9 bug修复及后台挂接计费标准只能选一次 2022-07-18 15:22:12 +08:00
851673013@qq.com 07d387b5a2 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-18 15:20:02 +08:00
851673013@qq.com 6b9de7f3b7 应用资源详情页-应用详情判断是否是青岛 2022-07-18 15:19:15 +08:00
a0049873 57758bbfa4 应用资源能力申请BUG修改 2022-07-18 15:18:26 +08:00
a0049873 8f8a1ed3ad Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/src/views/capacityOnTheShelf/components/PutOnTheShelf.vue
2022-07-18 14:43:58 +08:00
a0049873 4819e5ad17 应用资源 能力申请 BUG修改 2022-07-18 14:43:24 +08:00
gaoyuanwei e4e7ed161b Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-18 14:33:48 +08:00
gaoyuanwei 5f4a67ca55 恢复bug 2022-07-18 14:28:50 +08:00
851673013@qq.com 24f5eeee55 bug597 2022-07-18 14:27:11 +08:00
gaoyuanwei 15b16757a4 能力集市详情bug 2022-07-18 14:20:20 +08:00
guoyue dff001a8c4 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-18 14:18:04 +08:00
guoyue 9d0e7bb4aa 工作台:echarts修复 2022-07-18 14:17:45 +08:00
guoyue d2460b321c 工作台:工作动态跳转 2022-07-18 14:17:28 +08:00
gaoyuanwei 31d20f4f15 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-18 14:02:48 +08:00
gaoyuanwei 569d2340ee Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-18 14:02:33 +08:00
851673013@qq.com 5507c8ed9c 应用详情-详情页tab显示问题bug 2022-07-18 14:00:49 +08:00
gaoyuanwei a168e10105 bug+bug+bug 2022-07-18 13:56:27 +08:00
wuhongjian 8f0fbc0551 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-18 13:56:06 +08:00
wuhongjian 61e61fbb87 修复tab页会左偏 2022-07-18 13:56:02 +08:00
guoyue ddd3d89a14 赋能场景挂接增加能力输入 2022-07-18 13:53:01 +08:00
851673013@qq.com 1dce78dc92 应用资源详情页-应用详情 2022-07-18 13:53:01 +08:00
wuhongjian 71a8a3ef59 添加西海岸图标切图 2022-07-18 13:35:11 +08:00
wuhongjian 5a9f4ee620 来源应用只能选择一个 2022-07-18 11:24:57 +08:00
851673013@qq.com 351518f849 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	back/src/views/modules/myAgent/demo/ability-resource-shelf.vue
2022-07-18 11:00:07 +08:00
851673013@qq.com 4a52c2cf78 审批和前台应用详情 2022-07-18 10:47:49 +08:00
gaoyuanwei aa84a66a0b bug 2022-07-18 10:44:34 +08:00
wuhongjian e2e0dd8f6c 合并版本v0.8.2.2.release 2022-07-18 10:21:49 +08:00
851673013@qq.com 3ad0e3e77c 基础设施 2022-07-18 09:13:39 +08:00
wuhongjian ddf4ff421b 合并版本 2022-07-16 17:03:32 +08:00
a0049873 9001b5a5e1 BUG修改 2022-07-16 16:58:33 +08:00
wuhongjian c817f9eefc 合并版本v0.8.2.3 2022-07-16 16:44:00 +08:00
yuhan_jiang c156b52d84 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev
* 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs:
  端口修改
  BUG修改  应用资源新增 能力集市图标  和详情页切换
  bug修改
  bug修复
  BUG修改
  BUG修改

# Conflicts:
#	front/src/utils/request.js
#	front/src/vab/plugins/permissions.js
2022-07-16 16:22:28 +08:00
yuhan_jiang 15eb5dbd13 【单点登录】修复云图需要点击两次才能单点成功问题 2022-07-16 16:16:38 +08:00
a0049873 c7f2e1f70a 端口修改 2022-07-16 16:01:57 +08:00
a0049873 d38c0ae217 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-16 16:01:34 +08:00
a0049873 6062af489e BUG修改 应用资源新增 能力集市图标 和详情页切换 2022-07-16 16:01:28 +08:00
gaoyuanwei 123b64bc70 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-16 15:27:49 +08:00
gaoyuanwei c9cda03deb bug修改 2022-07-16 15:25:49 +08:00
wuhongjian 835e9d0cc4 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-16 15:05:34 +08:00
wuhongjian 6b0bb85212 bug修复 2022-07-16 15:04:25 +08:00
a0049873 bb6d58f568 BUG修改 2022-07-16 14:40:49 +08:00
a0049873 2354d8da3b BUG修改 2022-07-16 14:27:58 +08:00
a0049873 1740d6c06a Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/src/views/personalCenter/components/MyBrowse.vue
2022-07-16 10:03:25 +08:00
a0049873 86ece3cb09 BUG修改 2022-07-16 10:00:27 +08:00
wuhongjian 6c10a4bb29 eslint问题修复 2022-07-15 21:35:22 +08:00
gaoyuanwei 4568d28b6a 关联bug 2022-07-15 19:23:37 +08:00
851673013@qq.com 61baa7441b bug498 2022-07-15 18:56:00 +08:00
851673013@qq.com 97e078e596 bug507 2022-07-15 18:40:54 +08:00
gaoyuanwei c59a3d48bd 后台-上架联动字段修改 2022-07-15 18:30:59 +08:00
a0049873 ed5576a604 BUG修改 2022-07-15 17:52:31 +08:00
a0049873 c0d59fdd24 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-15 17:40:38 +08:00
a0049873 bb99765381 上架添加取消按钮 2022-07-15 17:40:32 +08:00
guoyue 2d12bf76d4 样式调整 2022-07-15 17:39:24 +08:00
guoyue 497e3f5dbc Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-15 17:33:47 +08:00
guoyue 78e3a4d7f0 样式调整 2022-07-15 17:33:27 +08:00
a0049873 3b10007619 详情页收藏按钮 2022-07-15 17:32:47 +08:00
gaoyuanwei 60e26e151c Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-15 17:26:38 +08:00
gaoyuanwei 5978bc1859 前台-上架联动 2022-07-15 17:22:48 +08:00
851673013@qq.com 46285025f8 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-15 17:01:45 +08:00
851673013@qq.com bc1d36dae9 等保备案bug 2022-07-15 17:01:41 +08:00
a0049873 8213a9761d 前端上架 新增 归属部门 下拉 2022-07-15 16:57:51 +08:00
851673013@qq.com d36a5fc3a0 bug564 2022-07-15 16:55:13 +08:00
guoyue 4e0a985a3b 更改列宽 2022-07-15 16:51:46 +08:00
851673013@qq.com afd0598886 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-15 16:47:11 +08:00
851673013@qq.com 425b8de7c6 是否等保备案bug修改 2022-07-15 16:47:06 +08:00
guoyue 16db951043 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-15 16:44:17 +08:00
guoyue 0c3948e544 赋能场景相关 2022-07-15 16:43:55 +08:00
guoyue 4132ea0589 fix: 融合服务 2022-07-15 16:43:29 +08:00
851673013@qq.com dcbc08d000 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-15 16:31:19 +08:00
851673013@qq.com 6dc52aff1d bug535 2022-07-15 16:31:05 +08:00
a0049873 02f1de8486 BUG修改 2022-07-15 16:30:13 +08:00
851673013@qq.com 90d9e7ae30 bug535 2022-07-15 16:25:33 +08:00
a0049873 906533e574 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-15 16:16:56 +08:00
a0049873 e8b741077e BUG修改 2022-07-15 16:16:50 +08:00
851673013@qq.com e7bfc7db36 bug566 2022-07-15 16:06:36 +08:00
851673013@qq.com d6e7324b80 前台-详情页-算法优势bug 2022-07-15 15:30:15 +08:00
851673013@qq.com 8fda94f942 基础设施bug 2022-07-15 14:56:17 +08:00
851673013@qq.com acd4bdae9f bug523 2022-07-15 14:36:13 +08:00
851673013@qq.com 0bf0722e53 bug577 2022-07-15 14:12:04 +08:00
wuhongjian 09518566c7 合并版本 2022-07-15 14:10:46 +08:00
wuhongjian 16e4146471 依赖更新 2022-07-15 14:10:10 +08:00
gaoyuanwei 3acee93e23 后台上架-计费单位 2022-07-15 14:04:46 +08:00
a0049873 2e2287f1cf BUg修改 2022-07-15 11:51:40 +08:00
a0049873 e2209f7694 BUG修改 2022-07-15 11:49:14 +08:00
gaoyuanwei c933eeb642 后台字段修改 2022-07-15 11:41:10 +08:00
a0049873 09cf87a7a0 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-15 11:34:41 +08:00
a0049873 e1e676e70a BUG修改 2022-07-15 11:34:23 +08:00
851673013@qq.com f06af37a5f bug584 2022-07-15 11:27:26 +08:00
a0049873 a0526237f1 BUG修改 2022-07-15 11:14:48 +08:00
a0049873 622f2f645b BUG修改 2022-07-15 11:07:08 +08:00
851673013@qq.com cf296916e1 bug251 2022-07-15 11:03:21 +08:00
a0049873 f2aa5c5e3c BUg修改 2022-07-15 10:35:05 +08:00
851673013@qq.com ca7df48001 bug557 2022-07-15 10:15:03 +08:00
wuhongjian 63711c54bd 合并版本 2022-07-15 09:17:43 +08:00
851673013@qq.com 293d6794c8 前台上架滚动条问题 2022-07-14 18:43:32 +08:00
851673013@qq.com b9dc8c15b4 摄像头接口更改 2022-07-14 18:31:19 +08:00
guoyue c951b7f858 文档url拼接 2022-07-14 17:45:20 +08:00
guoyue e5d772ab21 合并 2022-07-14 17:41:09 +08:00
guoyue efe4c42995 技术文档url拼接 2022-07-14 17:34:13 +08:00
a0049873 85dbc018b0 添加徽章 2022-07-14 17:33:01 +08:00
a0049873 bf6676dd06 我的申请页面 筛选功能 2022-07-14 17:20:40 +08:00
gaoyuanwei 38ebe981fa 全部评论提示bug修改 2022-07-14 17:04:17 +08:00
wuhongjian 65cd3bf086 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-14 17:02:45 +08:00
wuhongjian 29b20ce55b 添加地图分区摄像头数量 2022-07-14 17:02:42 +08:00
a0049873 9cb2e9e81f 我的申请模块开发 2022-07-14 16:50:51 +08:00
gaoyuanwei 1f7a02927e 555bug 2022-07-14 15:52:57 +08:00
guoyue d9ed994429 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-14 15:49:52 +08:00
guoyue a8b91e2788 add: 赋能场景 2022-07-14 15:49:34 +08:00
851673013@qq.com d8d7b4215a Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-14 15:38:01 +08:00
851673013@qq.com bd77db0ce4 bug582 2022-07-14 15:37:55 +08:00
gaoyuanwei 0929b51faf 562bug 2022-07-14 15:37:27 +08:00
851673013@qq.com 9f5186f12b Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-14 15:13:46 +08:00
gaoyuanwei 1ed9909e47 570bug 2022-07-14 15:12:47 +08:00
851673013@qq.com ea665df41e bug568 2022-07-14 15:12:40 +08:00
851673013@qq.com deb886a254 技术文档 2022-07-14 14:55:49 +08:00
wuhongjian 169d66e608 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-14 14:17:38 +08:00
wuhongjian 2ed32e97db 用户名显示真实姓名 2022-07-14 14:17:20 +08:00
guoyue 337ee0a931 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-14 14:17:09 +08:00
guoyue 310a5f837d 指导手册:左侧树更改 2022-07-14 14:16:49 +08:00
gaoyuanwei 6877c7e2c3 后台-上架-修改573bug 2022-07-14 14:01:06 +08:00
gaoyuanwei de1868eb5c 573bug 2022-07-14 11:43:42 +08:00
gaoyuanwei 0194a9b146 后台-上架-复选框问题 2022-07-14 11:02:12 +08:00
guoyue ecf536e13c Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-14 10:56:55 +08:00
guoyue eefa5354ec 指导手册增加图标 2022-07-14 10:56:37 +08:00
guoyue e4280e3874 fix: 融合服务详情-申请使用, 常见问题 2022-07-14 10:56:04 +08:00
851673013@qq.com 5299e797e6 后台能力资源上架审批 2022-07-14 10:33:30 +08:00
a0049873 2532a6cc79 BUG修改 2022-07-14 09:45:52 +08:00
851673013@qq.com c61611e01e Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	back/src/views/modules/myAgent/demo/ResourcesAndServices.vue
2022-07-13 19:07:12 +08:00
851673013@qq.com dc9d5323e6 后台审批 2022-07-13 19:03:21 +08:00
gaoyuanwei 69668a0ae8 审批 2022-07-13 18:58:35 +08:00
wuhongjian 21a5d058ef Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-13 18:16:12 +08:00
wuhongjian 39a93eefc6 bug修复 2022-07-13 18:16:10 +08:00
a0049873 7f2f5e541b Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/public/index.html
2022-07-13 18:15:37 +08:00
a0049873 876676819b BUG修改 2022-07-13 18:15:13 +08:00
wuhongjian a1eb29974c Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-13 18:01:41 +08:00
wuhongjian 2019c1583f 11个算法试用配置内容 2022-07-13 18:00:26 +08:00
guoyue 3d223aaaf3 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-13 17:47:44 +08:00
guoyue ad7f05fcba fix: 融合服务列表报错 2022-07-13 17:47:14 +08:00
guoyue 7bd990fe25 add: 指导手册 2022-07-13 17:46:57 +08:00
a0049873 d551b833d3 我的申请 能力申请 开发 2022-07-13 16:30:37 +08:00
851673013@qq.com e832b3e1d5 能力上架后台审批 2022-07-13 15:53:30 +08:00
guoyue 84ecc46c69 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-13 15:04:20 +08:00
guoyue dfbdbb5a46 fix:指导手册 2022-07-13 15:04:12 +08:00
851673013@qq.com 22f1091532 我的待办,上架 2022-07-13 14:30:32 +08:00
wuhongjian da20700414 更换默认图片 2022-07-13 11:44:10 +08:00
wuhongjian cbe9efa5ea 更换ico 2022-07-13 11:43:28 +08:00
wuhongjian 86a3be9b82 合并版本 2022-07-13 11:29:19 +08:00
gaoyuanwei 70b5e91a78 后台上架字段问题 2022-07-13 11:23:26 +08:00
wuhongjian 38bc627486 merge change修改 2022-07-13 11:18:02 +08:00
851673013@qq.com 962ab8841d 后台能力资源上架 2022-07-13 10:11:01 +08:00
guoyue 8acde6c897 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-13 09:20:23 +08:00
guoyue 68efdf228b add: 指导手册(暂存) 2022-07-13 09:19:03 +08:00
a0049873 8bccb9bd94 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-13 09:09:41 +08:00
a0049873 19e8f11f1d 个人中心接口 2022-07-13 09:09:35 +08:00
wuhongjian 0814ccea07 合并版本 2022-07-12 17:43:06 +08:00
851673013@qq.com 570a582818 技术文档样式修改 2022-07-12 17:13:03 +08:00
851673013@qq.com 57df5fe220 技术文档bug 2022-07-12 17:08:58 +08:00
851673013@qq.com f593a97854 技术文档 2022-07-12 16:54:35 +08:00
851673013@qq.com 616d806c2d 上架技术文档 2022-07-12 15:58:57 +08:00
wuhongjian 432f8fef23 测试环境配置 2022-07-12 15:11:38 +08:00
wuhongjian becacd1599 合并版本,测试环境配置 2022-07-12 15:11:23 +08:00
wuhongjian b7b0a14b86 文本类算法试用+单点登录bug修复 2022-07-11 19:12:53 +08:00
851673013@qq.com ae22bbd063 重置功能隐掉 2022-07-11 18:59:21 +08:00
851673013@qq.com 71b6b2edd7 日志bug修改 2022-07-11 18:53:42 +08:00
851673013@qq.com a44cce5492 日志bug修改 2022-07-11 18:33:58 +08:00
851673013@qq.com dcf90b081e 详情页bug以及后台日志 2022-07-11 17:50:01 +08:00
gaoyuanwei b8ddfe5938 后天-上架关联组件字段修改 2022-07-11 17:12:12 +08:00
gaoyuanwei d44af11e8a 后台-应用资源上架bug 2022-07-11 16:52:42 +08:00
a0049873 39d139d06d Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-11 16:43:30 +08:00
a0049873 29087301b4 特殊类型回填处理 2022-07-11 16:43:23 +08:00
gaoyuanwei c58fd36487 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-11 16:13:12 +08:00
gaoyuanwei a6c9ca295a 后台-应用资源上架 2022-07-11 16:12:59 +08:00
a0049873 b37b3cafb9 清空BUG修改 2022-07-11 16:10:59 +08:00
a0049873 2eca6ab758 后台 上架功能开发 2022-07-11 15:41:18 +08:00
wuhongjian 46558e465e 西海岸bug修复 2022-07-11 11:38:54 +08:00
guoyue c4a99bf8de 合并冲突 2022-07-11 10:29:34 +08:00
a0049873 23324f50ad BUG修改 后台上架开发 2022-07-09 15:22:20 +08:00
wuhongjian ab21f7de11 合并版本v0.8.1.6 2022-07-09 10:37:17 +08:00
gaoyuanwei 883581f67e Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-08 19:53:42 +08:00
gaoyuanwei c00872b8d7 新增内容 2022-07-08 19:52:59 +08:00
wuhongjian a839c90a1e 单点登录bug修复 2022-07-08 19:02:20 +08:00
851673013@qq.com 678367a6bf 编目bug 2022-07-08 18:33:17 +08:00
a0049873 2447b7abfa 样式修改 2022-07-08 17:51:41 +08:00
a0049873 f2e0f87605 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-08 17:28:25 +08:00
a0049873 42eb1257b1 样式调整 2022-07-08 17:27:27 +08:00
851673013@qq.com 71f9e137cf Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-08 17:26:09 +08:00
851673013@qq.com c018a11271 bug492 2022-07-08 17:25:37 +08:00
a0049873 cb46ccbcf9 样式调整 2022-07-08 17:25:35 +08:00
a0049873 0c7715e1c1 后台挂载 2022-07-08 17:05:55 +08:00
guoyue 324aa70b51 融合服务列表增加收藏量 2022-07-08 16:58:46 +08:00
851673013@qq.com dd6e249190 bug487 2022-07-08 16:39:09 +08:00
guoyue 2540d303fc fix: 融合服务 2022-07-08 16:16:23 +08:00
guoyue d7778972f5 融合服务后台管理相关功能 2022-07-08 16:10:08 +08:00
851673013@qq.com 4344056f55 后台我的待办和已办任务分出来 2022-07-08 15:53:53 +08:00
a0049873 900b3ea26d 后台挂载 2022-07-08 15:51:55 +08:00
851673013@qq.com 08bb99011b 后台编目bug 2022-07-08 10:42:00 +08:00
a0049873 de9e38e5bf no message 2022-07-08 09:55:01 +08:00
a0049873 db087b9869 后台新挂载 2022-07-08 09:49:33 +08:00
a0049873 e8485a86f9 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/public/static/config/location.js
2022-07-08 08:53:52 +08:00
a0049873 2aa05ee719 解决冲突 2022-07-08 08:53:19 +08:00
wuhongjian 32e5253c9f Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-07 20:38:01 +08:00
wuhongjian d95a2eeb9f bug修复 2022-07-07 20:37:34 +08:00
851673013@qq.com 4958384c9a 应用资源详情页跳转 2022-07-07 20:35:13 +08:00
gaoyuanwei 3b7f8b745a Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-07 20:03:24 +08:00
gaoyuanwei e40efaf30e 基础设施bug 2022-07-07 20:00:03 +08:00
851673013@qq.com 251231ebb8 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/src/views/home/infrastructurePage.vue
2022-07-07 19:56:25 +08:00
a0049873 2ffb67b235 no message 2022-07-07 19:15:27 +08:00
851673013@qq.com 74187e4623 基础设施 2022-07-07 19:07:56 +08:00
wuhongjian 6f7d059eca Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-07 18:23:20 +08:00
wuhongjian dfa6c6a67b 单点登录bug修复 2022-07-07 18:22:54 +08:00
gaoyuanwei 420a31531f 按钮 2022-07-07 18:17:31 +08:00
a0049873 c271f3d988 BUG修改 2022-07-07 17:54:41 +08:00
a0049873 44479b25e9 BUG修改 2022-07-07 17:38:13 +08:00
gaoyuanwei 73b9108c08 469,顺序排序 2022-07-07 16:46:48 +08:00
guoyue 5d2c39fb44 融合服务:一键申请的存储数组更改 2022-07-07 14:31:52 +08:00
guoyue 4aef24c734 门户:融合服务列表+详情+我的收藏 2022-07-07 13:34:29 +08:00
851673013@qq.com 617373eb8e 详情页技术文档添加暂无上传提示 2022-07-07 11:37:05 +08:00
a0049873 4774431110 BUG修改 2022-07-07 11:25:56 +08:00
a0049873 0ad5646167 BUG修改 2022-07-07 10:49:37 +08:00
851673013@qq.com b48c2972ce 能力云图bug 2022-07-07 10:42:14 +08:00
a0049873 4a1126cf94 BUG修改 2022-07-07 10:27:46 +08:00
a0049873 e6528b4b3b 滚动条BUG修改 2022-07-07 09:23:12 +08:00
wuhongjian 6cb8142534 favio替换,与后台同步更新版本 2022-07-06 22:17:22 +08:00
wuhongjian 888711b94d Merge branch 'hi-ucs-dev' into release 2022-07-06 18:52:04 +08:00
wuhongjian 25b6d1196b Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-06 18:51:43 +08:00
wuhongjian 695aa6867d Merge branch 'hi-ucs-dev' into release 2022-07-06 18:45:20 +08:00
wuhongjian 9cc8accbde 不显示问题修复 2022-07-06 18:42:23 +08:00
gaoyuanwei 71eae6deeb 318摄像头列表弹窗bug修改 2022-07-06 18:15:58 +08:00
851673013@qq.com 544ba02828 调用趋势 2022-07-06 17:01:44 +08:00
gaoyuanwei eb08f86f21 462无法滚动问题 2022-07-06 16:34:17 +08:00
gaoyuanwei 7b6dfa8b93 387浏览记录bug 2022-07-06 16:02:30 +08:00
gaoyuanwei 89a73222e6 bug修复 2022-07-06 13:35:02 +08:00
gaoyuanwei 2bbfac3363 bug 2022-07-06 13:16:13 +08:00
gaoyuanwei 5035cc074a 应用资源 2022-07-06 13:07:12 +08:00
851673013@qq.com 8a686cfca6 应用资源关联组件 2022-07-06 12:48:00 +08:00
gaoyuanwei d93cfa543c 业务组件bug 2022-07-06 12:05:05 +08:00
851673013@qq.com 86580758f4 详情页bug自测 2022-07-06 11:58:13 +08:00
wuhongjian d96a0c440b bug修复 2022-07-06 10:36:41 +08:00
gaoyuanwei c2bb7f5eb8 bug修改 2022-07-06 10:09:53 +08:00
851673013@qq.com 0cab45f228 详情页tab 2022-07-06 09:52:38 +08:00
a0049873 adfc44cc7f Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/src/views/assignCase/components/queryPage.vue
2022-07-05 20:52:02 +08:00
a0049873 35653daae4 BUg 2022-07-05 20:51:11 +08:00
wuhongjian 48aa9dffa1 bug修复 2022-07-05 20:46:50 +08:00
wuhongjian d72d47970c 冲突合并 2022-07-05 20:07:44 +08:00
wuhongjian cedb88a2b6 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-05 20:07:29 +08:00
a0049873 e65a8765fb 数字能力超市 2022-07-05 20:05:53 +08:00
a0049873 d5d85a194c 云图跳转首页 2022-07-05 19:47:38 +08:00
a0049873 48971f001a 图片判断 默认智能算法 2022-07-05 18:37:28 +08:00
wuhongjian b6942754cd Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-05 17:36:56 +08:00
wuhongjian d71dc876f5 西海岸bug修复 2022-07-05 17:35:48 +08:00
851673013@qq.com 6539637031 详情页 2022-07-05 17:33:32 +08:00
a0049873 a8780ed884 BUG修改 2022-07-05 17:12:53 +08:00
a0049873 3cc6bce2f8 BUG修改 2022-07-05 17:02:25 +08:00
gaoyuanwei a438bd6ed5 应用资源上架样式修改 2022-07-05 16:45:44 +08:00
a0049873 2b211dae96 BUG修改 添加全局路由 2022-07-05 16:20:11 +08:00
gaoyuanwei e1b7fb4dd8 后台-组件服务bug 2022-07-05 15:00:38 +08:00
a0049873 c30b02c3e5 BUG修改 2022-07-05 14:57:59 +08:00
a0049873 3ec46bdd0a BUG修改 2022-07-05 14:37:22 +08:00
gaoyuanwei 20b968beba demandSubject 2022-07-05 13:51:21 +08:00
wuhongjian dc0a44dab7 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-05 12:52:35 +08:00
wuhongjian 8a5b0a6370 bug修复 2022-07-05 12:52:32 +08:00
a0049873 5e91ab13a9 BUG修改 2022-07-05 11:51:31 +08:00
a0049873 ae188ef656 赋能案例 滚动条联动 2022-07-05 11:28:30 +08:00
a0049873 a6488d0c92 修改数据资源判断 2022-07-05 10:39:59 +08:00
gaoyuanwei 4c85700094 关联组件 2022-07-05 10:11:50 +08:00
a0049873 92ae5c3088 能力统计 移到首页 2022-07-04 17:53:54 +08:00
851673013@qq.com 79fecefa96 no message 2022-07-04 17:41:11 +08:00
851673013@qq.com 559b2bc407 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-04 17:37:27 +08:00
851673013@qq.com f69da5becb 门户标题一级背景 2022-07-04 17:37:14 +08:00
wuhongjian 2d5be4eb52 bug修复 2022-07-04 17:34:14 +08:00
851673013@qq.com 5f17f8d0d1 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-04 17:31:20 +08:00
gaoyuanwei 0db6fb95fe 来源应用2.0 2022-07-04 17:21:43 +08:00
gaoyuanwei 60bd1daf9b Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-04 17:18:23 +08:00
gaoyuanwei 0ce6113ffa 来源应用 2022-07-04 17:15:45 +08:00
851673013@qq.com 68ddce3130 详情页关联组件样式修改 2022-07-04 17:15:06 +08:00
gaoxiaolong 854eaef183 能力统计调试 2022-07-04 17:07:11 +08:00
a0049873 c35d5789fc BUG修改 2022-07-04 17:02:00 +08:00
wuhongjian f8588795c4 合并版本 2022-07-04 11:57:44 +08:00
a0049873 a2a4a5d92c Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-04 11:56:52 +08:00
a0049873 5ffeb562da BUG修改 2022-07-04 11:56:45 +08:00
wuhongjian a53121649a 合并版本 2022-07-04 11:50:01 +08:00
wuhongjian 7303904f68 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-04 11:27:24 +08:00
wuhongjian d87bf2ded9 bug修复 2022-07-04 11:27:21 +08:00
851673013@qq.com d4ecfc74a4 关联组件问题 2022-07-04 11:24:29 +08:00
851673013@qq.com e849f37f1e 应用资源详情bug 2022-07-04 10:38:50 +08:00
gaoxiaolong 5f0aec483b 使用组件统计 2022-07-04 09:37:21 +08:00
a0049873 1846356272 判断修改 2022-07-04 09:27:52 +08:00
a0049873 82b72fd5f6 BUG修改 2022-07-01 20:22:51 +08:00
gaoyuanwei d13fe453ce Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-01 20:14:38 +08:00
gaoyuanwei f2431d18e5 bug 2022-07-01 20:14:28 +08:00
a0049873 b7939e4636 BUG修改 2022-07-01 20:13:39 +08:00
gaoyuanwei 0cf0c4b4b8 算法详情页 2022-07-01 19:48:49 +08:00
gaoyuanwei c4a2acd8a7 bug修改 2022-07-01 19:32:48 +08:00
a0049873 3f77db2ff8 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-01 19:02:56 +08:00
a0049873 d50b0a0dca BUG修改 2022-07-01 19:02:49 +08:00
851673013@qq.com 40804a7b9d 西海岸版本不调用能力云图中的组件服务的调用趋势和总调用次数接口 2022-07-01 18:59:46 +08:00
a0049873 6550188e13 BUG修改 2022-07-01 18:54:03 +08:00
gaoyuanwei 076ea19f88 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-01 18:33:26 +08:00
gaoyuanwei d75d7e1eab BUG修改 2022-07-01 18:33:11 +08:00
a0049873 ae80f57dcc Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/src/views/home/infrastructurePage.vue
2022-07-01 18:24:43 +08:00
a0049873 2fdfa22266 BUG修改 2022-07-01 18:23:43 +08:00
851673013@qq.com 0d110a5af6 基础设施-bug414 2022-07-01 18:20:43 +08:00
gaoyuanwei 46e5c6dbb6 能力上架详情页修改 2022-07-01 17:58:25 +08:00
851673013@qq.com 17fc21cf1e 智能算法bug-修改 2022-07-01 17:57:08 +08:00
851673013@qq.com 935c80ee87 智能算法回退版本 2022-07-01 17:36:41 +08:00
851673013@qq.com 8789176e4a 详情页关联组件 2022-07-01 17:27:01 +08:00
guoyue 5e01fbe880 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-01 17:25:58 +08:00
guoyue 260302e1df 增加融合服务页面 2022-07-01 17:25:21 +08:00
851673013@qq.com fe1c1931f0 图层服务-开发组件-业务组件bug406更改 2022-07-01 17:22:37 +08:00
851673013@qq.com d0bbe8d909 能力云图 2022-07-01 17:05:15 +08:00
wuhongjian 418b5f1de7 bug修复 2022-07-01 17:03:15 +08:00
gaoyuanwei 5d8416a0a4 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-01 15:59:12 +08:00
gaoyuanwei e5ea56b29f bug 元--单位 2022-07-01 15:58:59 +08:00
851673013@qq.com d347e274c5 开发组件bug 2022-07-01 15:53:16 +08:00
guoyue cacb9ec52e 工作台:待办已办路由跳转 2022-07-01 15:43:13 +08:00
guoyue 5c5a3b497f 样式微调 2022-07-01 14:54:57 +08:00
guoyue 8809317979 样式微调 2022-07-01 14:53:40 +08:00
guoyue 76b9b27a8d Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-01 14:50:46 +08:00
guoyue bcaddcd4fa 工作台优化 2022-07-01 14:50:29 +08:00
851673013@qq.com 75a56eec3a 能力云图bug 2022-07-01 14:40:38 +08:00
a0049873 9e609538f1 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/src/views/personalCenter/components/MyApply.vue
2022-07-01 14:32:40 +08:00
a0049873 4f11e078b8 新增能力集市 和详情页申请功能 摄像头申请功能完善 2022-07-01 14:31:46 +08:00
851673013@qq.com b9ed594f1c 能力汇聚查看更多 2022-07-01 14:24:41 +08:00
guoyue 2b01c0efa4 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-01 14:03:42 +08:00
guoyue e7bc4e8f0c 更改色度值,去掉调用数量 2022-07-01 14:03:31 +08:00
851673013@qq.com 2e3db9a60d Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-01 13:47:54 +08:00
851673013@qq.com 96502e05c6 能力云图 2022-07-01 13:47:32 +08:00
gaoyuanwei f30d67b7d4 bug 接口请求方式 2022-07-01 13:46:49 +08:00
guoyue 02639e6696 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-01 13:30:24 +08:00
guoyue 930eae441d 工作台:待办 已办 数量更改 2022-07-01 13:29:38 +08:00
gaoyuanwei 11a2eb5602 bug 2022-07-01 11:24:19 +08:00
a0049873 91c7e6c904 添加删除校验 2022-07-01 11:10:58 +08:00
wuhongjian e9031d0a45 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-07-01 11:10:25 +08:00
wuhongjian c8e1881fae bug修复 2022-07-01 11:10:23 +08:00
a0049873 97a24aa4c1 BUG修改 2022-07-01 10:50:29 +08:00
851673013@qq.com cf0bb02b43 赋能案例 2022-07-01 10:33:34 +08:00
a0049873 aff2ebda88 BUG修改 2022-07-01 10:33:11 +08:00
gaoxiaolong 146d80cd78 组件使用UI 2022-07-01 10:29:01 +08:00
gaoxiaolong f47d964105 使用组件 2022-07-01 09:16:41 +08:00
851673013@qq.com e093ab7aab 运行监控 2022-06-30 21:24:49 +08:00
gaoyuanwei ecdc04930d 免批申请、免费试用按钮取消 && 详情页标签折行问题 && 基础设施感知为空 &&新建工作流程提示错误 2022-06-30 21:19:57 +08:00
gaoyuanwei d898bbec7e 详情页、审批bug修改 2022-06-30 19:44:50 +08:00
wuhongjian 2663665321 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-30 19:06:55 +08:00
wuhongjian 8fcdff051b bug修复 2022-06-30 19:04:35 +08:00
gaoyuanwei 0f67147f8c .ant-message 2022-06-30 18:52:54 +08:00
a0049873 9bf47e3223 BUG修改 2022-06-30 18:48:59 +08:00
a0049873 cb19d42c9e BUG修改 2022-06-30 18:26:39 +08:00
a0049873 ecd5c76998 BUG修改 2022-06-30 18:18:10 +08:00
gaoxiaolong 814ed5ff92 能力统计 2022-06-30 17:53:47 +08:00
hucongqian 702c685372 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-30 16:50:06 +08:00
hucongqian 5ead4f085b 趋势接口修改 2022-06-30 16:50:01 +08:00
gaoyuanwei e6001c4db1 图层服务 2022-06-30 16:19:57 +08:00
a0049873 ea4736c0b7 BUG修改 2022-06-30 15:53:45 +08:00
a0049873 9f9ab46f28 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-30 15:40:09 +08:00
a0049873 120f753db2 摄像头最多选10个 2022-06-30 15:40:03 +08:00
gaoyuanwei c6c820c827 331-开发组件 2022-06-30 15:35:49 +08:00
a0049873 0f6b37e52e 摄像头申请流程 2022-06-30 15:27:16 +08:00
hucongqian c4b6faaa6d 尺寸调整 2022-06-30 14:37:45 +08:00
hucongqian 5d1c2d51ee Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-30 14:25:39 +08:00
hucongqian 2339b13ec8 部门发布能力被调用趋势 2022-06-30 14:25:27 +08:00
guoyue 10c21d5eac Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-30 13:52:06 +08:00
guoyue fdce918f4a 样式微调 2022-06-30 13:51:53 +08:00
hucongqian ea6d5376da title组件修复 2022-06-30 13:47:21 +08:00
hucongqian 05736161fb Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-30 13:46:28 +08:00
hucongqian 71372ec21e 部门推荐返参字段调整 2022-06-30 13:38:13 +08:00
guoyue 54dcf5073e fix 2022-06-30 13:29:05 +08:00
guoyue e9cd3ce4ff 工作台:echart调整 2022-06-30 13:26:47 +08:00
guoyue b4d28c2418 工作台:添加loading 2022-06-30 13:15:27 +08:00
guoyue 6c88eb6da3 更改标题 2022-06-30 13:03:17 +08:00
guoyue 2fa8bdc869 工作台:top5 2022-06-30 13:01:54 +08:00
guoyue f0bd3218a9 合并 2022-06-30 12:04:31 +08:00
guoyue 0295f0b967 工作台:频率 2022-06-30 12:03:21 +08:00
hucongqian 7b3a32fb77 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-30 12:01:38 +08:00
guoyue eb2ec69927 工作台:echart调整 2022-06-30 11:45:07 +08:00
gaoyuanwei 1aa48bd4e6 318-详情页标题tip(5个) 2022-06-30 11:42:01 +08:00
hucongqian fb1b9327ce 部门发布动态,推荐能力 2022-06-30 11:04:32 +08:00
guoyue dd6d8018d8 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-30 10:51:34 +08:00
guoyue 729681a785 工作台:中间 2022-06-30 10:51:16 +08:00
a0049873 3468a95a7c Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-30 10:42:20 +08:00
a0049873 bf0b25eace BUG修改 2022-06-30 10:42:09 +08:00
guoyue 6125962265 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-30 10:39:16 +08:00
guoyue 42fcb9e7cc fix:数据初始渲染不出来的问题 2022-06-30 10:39:02 +08:00
guoyue 9e045b0503 联调饼图api 2022-06-30 10:33:23 +08:00
gaoyuanwei 802a940dc0 303-知识库浏览量 2022-06-30 10:30:53 +08:00
a0049873 a4c46b8edf BUG修改 2022-06-30 10:28:02 +08:00
a0049873 f2921a0227 算法PK隐藏全选 2022-06-30 10:12:28 +08:00
851673013@qq.com 08b971c411 bug修改 2022-06-30 10:09:05 +08:00
wuhongjian 976e588372 购物车 2022-06-30 09:34:16 +08:00
851673013@qq.com ff1aea83f7 组件服务详情 2022-06-29 19:12:12 +08:00
851673013@qq.com 80f61d0698 组件详情 2022-06-29 18:53:53 +08:00
wuhongjian ab7e377dea Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-29 18:37:29 +08:00
wuhongjian ffaabe340a 视频资源 2022-06-29 18:36:50 +08:00
a0049873 50d0576a70 能力申请 2022-06-29 18:23:08 +08:00
a0049873 ca69c86577 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/src/views/home/apply.vue
2022-06-29 17:30:59 +08:00
a0049873 ccbcab8dfa 新能力申请 2022-06-29 17:28:49 +08:00
guoyue a7bedfaf59 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-29 17:23:40 +08:00
guoyue 819806a367 工作台:联调 待办 已办api 2022-06-29 17:23:32 +08:00
851673013@qq.com 2a6ba26594 关联能力 2022-06-29 16:56:51 +08:00
gaoyuanwei 8287422d9a 333-输入框上面的黑框提示取消 2022-06-29 15:54:22 +08:00
guoyue b4dc1b3d83 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-29 15:50:41 +08:00
guoyue 24e8607277 add: 工作台 2022-06-29 15:50:26 +08:00
gaoyuanwei 53e03ef413 339-摘要提示错误 2022-06-29 15:09:02 +08:00
gaoyuanwei 592c506c23 341个人办公-工作动态-预览格式问题 2022-06-29 14:34:42 +08:00
gaoyuanwei 738ebda646 349能力挂载-基础设施-搜索框清空问题 2022-06-29 11:40:45 +08:00
851673013@qq.com cf1f75fd83 能力集市分页bug 2022-06-29 11:37:47 +08:00
gaoyuanwei 3fb7474426 图层服务bug 2022-06-29 11:31:25 +08:00
851673013@qq.com d4a8ebf34f 能力集市添加pagenum 2022-06-29 10:47:03 +08:00
gaoyuanwei eb02d71771 317能力集市日期折行 2022-06-29 10:24:12 +08:00
gaoyuanwei dc57556a6c 319图层服务详情页 2022-06-29 10:18:26 +08:00
851673013@qq.com 111aa16692 bug269 2022-06-29 10:06:00 +08:00
a0049873 7cfebcfef8 能力申请页面 console注释 2022-06-29 09:56:01 +08:00
851673013@qq.com 4540430fa6 bug268 2022-06-29 09:50:28 +08:00
851673013@qq.com cc36886687 bug271 2022-06-29 09:46:02 +08:00
851673013@qq.com 17749b6df6 bug334 2022-06-29 09:32:51 +08:00
wuhongjian 4c77a55ae7 基础设施联调 2022-06-28 22:24:05 +08:00
a0049873 c53e96d0c3 新申购车 2022-06-28 21:49:50 +08:00
851673013@qq.com 107be0c3f4 bug329 2022-06-28 20:04:46 +08:00
gaoyuanwei 194f6fcb3c 能力运行监控 2022-06-28 19:25:05 +08:00
851673013@qq.com 961a8076fd API异常分析 2022-06-28 17:28:47 +08:00
gaoyuanwei 58d9b209b7 能力运行监控饼图 2022-06-28 17:18:50 +08:00
gaoyuanwei d4e47eafe6 能力运行监控上半部分 2022-06-28 16:55:41 +08:00
851673013@qq.com 3ab89fcfec API请求分析静态页面 2022-06-28 16:35:25 +08:00
851673013@qq.com be36fc8631 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-28 10:40:56 +08:00
gaoxiaolong 1e4db8a594 树接口 2022-06-28 10:40:43 +08:00
851673013@qq.com 3b4de725cd 能力运行监控img 2022-06-28 10:40:38 +08:00
guoyue 3672d8fbf8 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-28 10:32:58 +08:00
guoyue dff7bc51e7 fix: 算法对比-锚点 2022-06-28 10:32:28 +08:00
wuhongjian 5cf50fe7f7 bug修复 2022-06-28 10:31:46 +08:00
851673013@qq.com aba4021537 能力运行监控 2022-06-28 10:04:58 +08:00
wuhongjian 019da30ff5 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-27 18:54:20 +08:00
wuhongjian 9d9a3a2278 地图添加 2022-06-27 18:53:51 +08:00
gaoyuanwei c160e5e08e 基础建设--选项卡修改 2022-06-27 18:13:13 +08:00
851673013@qq.com aea65eb40c 选中样式修改 2022-06-27 17:08:49 +08:00
851673013@qq.com 5ebcd9630b 基础设施左侧列表 2022-06-27 17:03:19 +08:00
gaoyuanwei 93071ea26c 热门能力bug修改 2022-06-27 16:49:14 +08:00
851673013@qq.com 8d28f41b20 bug 294 2022-06-27 15:03:59 +08:00
guoyue d2423b751d Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-27 14:47:49 +08:00
guoyue 5005bf2f06 算法对比:左册导航跟右侧滚动联动 2022-06-27 14:47:23 +08:00
a0049873 3738985ade 后台能力申请页面开发 前台申购车 重构 新增市局数据资源跳转 2022-06-27 14:27:50 +08:00
851673013@qq.com 8737b2e89b bug288 2022-06-27 14:16:21 +08:00
851673013@qq.com 0adb286827 详情页bug279 2022-06-27 14:09:55 +08:00
guoyue 1410884d61 算法对比,暂存 2022-06-27 13:52:16 +08:00
851673013@qq.com e0ed9d7f60 详情页bug 2022-06-27 11:49:47 +08:00
wuhongjian d99b983961 测试分支 2022-06-27 11:20:58 +08:00
a0049873 01f05b1963 eslint 2022-06-27 09:43:37 +08:00
gaoyuanwei 03c4325919 基础设施-选中数量绑定 2022-06-25 15:26:42 +08:00
851673013@qq.com e309dbbb90 基础设施 2022-06-25 15:08:19 +08:00
gaoxiaolong a357f1a1b0 npm install 2022-06-25 15:05:37 +08:00
guoyue ff14614874 去掉footer 2022-06-25 14:46:04 +08:00
guoyue c6c9d06b85 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-25 14:01:30 +08:00
guoyue b379c87cd4 优化对比算法 2022-06-25 14:00:45 +08:00
gaoyuanwei 598f60ca17 基础设施外部引用 2022-06-25 13:45:26 +08:00
gaoyuanwei d4d9f068c3 基础设施-初始页面 2022-06-25 13:34:24 +08:00
gaoxiaolong 9accfa4f29 样式修改 2022-06-25 11:36:39 +08:00
guoyue 8f8387c80d add: 算法对比--路由跳转 2022-06-25 11:12:54 +08:00
guoyue 7339d16220 Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/src/views/home/components/searchResultList.vue
2022-06-25 10:40:03 +08:00
a0049873 4d11d0a84a BUG修改 2022-06-24 20:20:17 +08:00
a0049873 df7c0019f8 BUG修改 2022-06-24 20:08:54 +08:00
a0049873 5cab30d2cc Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/src/views/home/DetailsPageconetent.vue
2022-06-24 19:50:41 +08:00
a0049873 2bb502921f BUG修改 2022-06-24 19:47:00 +08:00
wuhongjian 2caa5a859c Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-24 19:38:30 +08:00
wuhongjian 068c5dfb1e bug修复 2022-06-24 19:38:27 +08:00
HISENSE\liuyuxin6 dc27487afb 修改关联应用弹窗报错问题 2022-06-24 19:05:27 +08:00
kongjun 31eee8d607 应用资源关联组件、项目等弹窗名称修改 2022-06-24 18:12:36 +08:00
a0049873 6e0b7d3e88 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-24 17:59:14 +08:00
a0049873 a21a0490e1 BUG修改 以及新增 密码加密 2022-06-24 17:58:43 +08:00
wangwei 2b38c08846 问题修改。 2022-06-24 17:51:04 +08:00
gaoyuanwei 4fba819602 基础设施-左侧 2022-06-24 17:15:55 +08:00
gaoyuanwei f2671b729d 基础设施 2022-06-24 17:04:47 +08:00
gaoxiaolong 2ad5476edb 能力统计 2022-06-24 16:31:47 +08:00
gaoyuanwei 154c2d2403 能力申请流程-审批按钮样式修改 2022-06-24 14:40:09 +08:00
gaoyuanwei 649929c1c0 能力申请流程-处理功能页面-完善 2022-06-24 13:49:12 +08:00
a0049873 4f36fdbc0c 更改云图接口 2022-06-24 10:50:59 +08:00
kongjun 5ac149fc62 项目使用能力列表修改 2022-06-24 10:30:09 +08:00
HISENSE\liuyuxin6 7f04ce7976 修改项目贡献能力列表 2022-06-24 10:18:58 +08:00
a0049873 608094dc5a 修改BUG 2022-06-24 10:04:30 +08:00
wangwei 01112ccd23 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-24 10:02:33 +08:00
wangwei 495b01fba3 文件修改。 2022-06-24 10:00:52 +08:00
kongjun 37fd83aee7 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-24 09:33:26 +08:00
wuhongjian cdaef52145 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-23 21:16:15 +08:00
wuhongjian f21946644d 评论功能开发 2022-06-23 21:16:11 +08:00
guoyue b335bee61c 算法对比(暂存) 2022-06-23 19:58:44 +08:00
gaoyuanwei 7a8e1a76c8 审批页面-初始化 2022-06-23 19:22:31 +08:00
851673013@qq.com 360efeb2f4 能力申请 2022-06-23 19:19:48 +08:00
851673013@qq.com 980cdb9e33 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-23 19:19:32 +08:00
a0049873 c9b12426ca 238 api设置 2022-06-23 18:35:27 +08:00
a0049873 4815a3fe3d 更改后台配置 2022-06-23 18:19:29 +08:00
kongjun a7e58d18c8 应用使用能力列表 2022-06-23 18:06:33 +08:00
wuhongjian 90b374c684 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-23 18:01:10 +08:00
wuhongjian c97201645b 修改死数据配置,token失效问题 2022-06-23 17:56:40 +08:00
gaoxiaolong 538b6f14a4 能力统计 2022-06-23 16:36:02 +08:00
wuhongjian 5430330eaf BUG 修改 2022-06-23 15:02:11 +08:00
wuhongjian f7e1556ed7 修改token失效问题 2022-06-23 14:52:50 +08:00
a0049873 cd42aa29af Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/public/static/config/location.js
2022-06-23 14:19:26 +08:00
a0049873 fe0d925329 BUG修改 2022-06-23 14:17:04 +08:00
guoyue 3ceb5b59de 算法对比 2022-06-23 13:19:52 +08:00
guoyue 96f2b8b1f3 add: 算法对比 2022-06-23 12:43:02 +08:00
851673013@qq.com c66bf1de0d Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-23 11:12:02 +08:00
gaoyuanwei f3100ec6ab 图层服务详情页完善 2022-06-23 09:44:16 +08:00
wuhongjian 8371fb4eab bug修复 2022-06-22 20:01:26 +08:00
wuhongjian 58ff37ac48 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-22 19:11:36 +08:00
wuhongjian c6cb53c3b9 bug修复 2022-06-22 19:11:34 +08:00
kongjun a33445afe5 应用资源组件 2022-06-22 18:47:28 +08:00
851673013@qq.com 9c7d3db786 赋能案例 2022-06-22 18:10:37 +08:00
a0049873 109b82b95d Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-22 17:30:32 +08:00
a0049873 1cf533434b 图层服务上架开发 2022-06-22 17:30:23 +08:00
HISENSE\liuyuxin6 af600c7437 '兼容关联弹窗空数据问题' 2022-06-22 17:21:36 +08:00
851673013@qq.com 0b0b9af1f1 赋能案例 2022-06-22 17:08:44 +08:00
wuhongjian faade9c621 市局版本合并bug修复 2022-06-22 17:04:48 +08:00
HISENSE\liuyuxin6 51d8da99ef '增加关联应用弹窗' 2022-06-22 16:40:01 +08:00
gaoyuanwei f082474aba 首页-知识库-数据展示 2022-06-22 16:36:04 +08:00
a0049873 2b79dd385d BUG修改 2022-06-22 16:30:07 +08:00
a0049873 3b6d6a38c7 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/public/static/config/location.js
2022-06-22 16:19:19 +08:00
a0049873 d9350d938c 合并代码 2022-06-22 16:18:12 +08:00
gaoyuanwei d2a9efabce 业务组件详情页-bug修改 2022-06-22 15:57:32 +08:00
gaoyuanwei e1bfbf55ec 图层服务-初始详情页 2022-06-22 15:56:33 +08:00
gaoyuanwei ddb93e3cd7 location配置-底部数据及问答小人 2022-06-22 15:53:06 +08:00
a0049873 96993e040f no message 2022-06-22 14:17:29 +08:00
a0049873 b23bd15791 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-22 14:16:14 +08:00
wangwei 69211ab665 数据资源等修改。 2022-06-22 14:15:37 +08:00
a0049873 b0c667eb00 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-22 14:15:33 +08:00
a0049873 f323016e40 消息中心 2022-06-22 14:15:28 +08:00
851673013@qq.com 11b2536c5c 赋能案例-后台管理系统 2022-06-22 14:09:52 +08:00
wangwei 46c1cc68ed 修改目录结构。 2022-06-22 10:11:05 +08:00
kongjun 36b3eef12f 左侧菜单滚动条 2022-06-22 10:07:59 +08:00
gaoyuanwei f1b5f9ee57 三方配置 2022-06-21 18:26:40 +08:00
kongjun 0243ef1e08 新更改 2022-06-21 18:04:15 +08:00
wuhongjian 449ed38a29 配置更新 2022-06-21 17:21:40 +08:00
wuhongjian 2604506734 配置更新 2022-06-21 17:20:46 +08:00
wuhongjian f4f955b99e 能力云图西海岸对接 2022-06-21 17:14:59 +08:00
wangwei e157811034 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-21 17:12:07 +08:00
wangwei 93c156eb9f 应用资源管理 2022-06-21 17:11:44 +08:00
851673013@qq.com 5a021de654 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-21 17:08:06 +08:00
851673013@qq.com 967f6389c1 拉取 2022-06-21 17:08:02 +08:00
wuhongjian 511d3dc3d9 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-21 17:06:08 +08:00
wuhongjian 7b8cdbd0e7 3840*1080切换适配 2022-06-21 17:06:05 +08:00
a0049873 c9855a55c3 滚动条bug修改 2022-06-21 17:04:20 +08:00
a0049873 25eed3e27b 青岛配置 2022-06-21 17:01:19 +08:00
a0049873 15b0d7c5ae 头部加阴影 2022-06-21 17:01:04 +08:00
851673013@qq.com bec8226d8a bug 2022-06-21 16:59:31 +08:00
a0049873 d5c79225da Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-21 16:56:03 +08:00
a0049873 db187766cc 我的消息模块开发 2022-06-21 16:55:59 +08:00
gaoyuanwei fc84f8ed92 数据资源部分更改、导航栏修改、云图数据修改 2022-06-21 16:49:45 +08:00
wangwei 5514577c3f Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-21 16:05:38 +08:00
kongjun f8e8c0da2d 后台样式修改 2022-06-21 15:48:41 +08:00
HISENSE\liuyuxin6 5a9761b741 '修改工作动态列表页样式问题' 2022-06-21 15:27:21 +08:00
gaoyuanwei 9d36a8b5d6 dev-location 2022-06-21 15:10:21 +08:00
wangwei 7e5a658977 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-21 15:04:37 +08:00
wangwei 4c105474fc 项目管理页面 2022-06-21 15:03:31 +08:00
gaoyuanwei 8bc5bff98d 业务组件功能完善 2022-06-21 11:42:06 +08:00
851673013@qq.com 7bc3912bb7 详情页bug修改 2022-06-21 11:33:12 +08:00
HISENSE\liuyuxin6 01dc4a8c43 '修改工作动态列表及详情页样式问题' 2022-06-21 10:48:39 +08:00
a0049873 94fae9752f BUG修改 2022-06-21 10:38:33 +08:00
a0049873 cad2aa570c 增加 服务接口 和请求方式字段 2022-06-21 10:36:45 +08:00
HISENSE\liuyuxin6 57f84461db Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-21 09:54:02 +08:00
HISENSE\liuyuxin6 5977d85597 '工作动态列表及详情页' 2022-06-21 09:48:23 +08:00
kongjun 52ddacef56 后台工作动态摘要添加 2022-06-20 19:34:41 +08:00
a0049873 6edf4d50f9 BUG修改 2022-06-20 18:59:43 +08:00
gaoyuanwei 09f421580b Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-20 18:39:10 +08:00
gaoyuanwei d7a5fa90a6 业务组件 2022-06-20 18:38:56 +08:00
a0049873 aab6b091e0 预览BUG修改 2022-06-20 18:38:51 +08:00
851673013@qq.com 369ed41fd9 开发组件-详情页 2022-06-20 18:34:31 +08:00
wuhongjian 0f06cce9a6 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-20 18:04:25 +08:00
wuhongjian e3bbd281c5 配置文件 2022-06-20 18:04:17 +08:00
a0049873 9c10dce23c 修改编目BUG 2022-06-20 17:42:01 +08:00
a0049873 2b5676d31c BUG修改 2022-06-20 16:58:24 +08:00
a0049873 b9d159d99a infolist修改 2022-06-20 16:51:23 +08:00
a0049873 f41eee2997 业务组件和开发组件 上架开发 2022-06-20 16:46:33 +08:00
wuhongjian 9ca37f388c 配置项更新 2022-06-20 16:37:10 +08:00
a0049873 17721d0c42 能力上架整合 2022-06-20 11:43:46 +08:00
a0049873 98a17a8dd3 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-20 11:35:16 +08:00
a0049873 78f0ee1b92 新增资源导入 2022-06-20 11:35:00 +08:00
gaoyuanwei 0425b0e9f3 知识库bug修改 2022-06-20 09:56:28 +08:00
gaoyuanwei 40aae994a4 知识库bug修改 2022-06-20 09:54:47 +08:00
wuhongjian 319c25ed4f getVideoList 2022-06-19 18:59:14 +08:00
851673013@qq.com cbff48e994 bug 2022-06-19 18:42:32 +08:00
wuhongjian 66bec11398 更改 2022-06-19 18:37:46 +08:00
851673013@qq.com 3eeb2702d3 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-19 18:34:58 +08:00
851673013@qq.com 33134d3151 合并冲突之后的文件 2022-06-19 18:33:53 +08:00
wuhongjian 5a36b3eabd 初始数据更改 2022-06-19 18:32:05 +08:00
851673013@qq.com e38c8234a4 组件服务和基础设施 2022-06-19 18:30:37 +08:00
gaoyuanwei 91e9d2649e 百分比 2022-06-19 18:28:59 +08:00
wuhongjian 15ce5fe9fc Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-19 18:18:33 +08:00
wuhongjian b7772d9a77 样式 2022-06-19 18:18:29 +08:00
a0049873 15f77487ae 样式修改 2022-06-19 18:11:19 +08:00
gaoyuanwei 462f39826c 数据赋值更改 2022-06-19 18:07:27 +08:00
gaoyuanwei c6649d5fee 数据资源样式及接口ip修改 2022-06-19 17:56:21 +08:00
a0049873 f958db6940 eslint 2022-06-19 17:33:12 +08:00
a0049873 cf9d8c9ee3 细节调整 2022-06-19 17:26:53 +08:00
851673013@qq.com 134d54d5ef bug 2022-06-19 17:14:38 +08:00
851673013@qq.com 754eef207d 组件服务 2022-06-19 17:12:30 +08:00
gaoyuanwei 4093653331 数据资源、知识库 2022-06-19 17:08:06 +08:00
a0049873 5fe38ceaa4 云图 2022-06-19 17:05:28 +08:00
gaoyuanwei 94fd21ab27 能力云图api接口 2022-06-19 14:40:14 +08:00
851673013@qq.com 95677b7031 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-19 12:26:07 +08:00
a0049873 39ba614c1f no message 2022-06-19 11:42:14 +08:00
851673013@qq.com 9ab323b2b7 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-19 11:41:37 +08:00
a0049873 ec1ed6e78e 居中 2022-06-19 11:40:44 +08:00
851673013@qq.com 42a427a791 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-19 11:20:40 +08:00
a0049873 47f8dfe0a0 阴影 2022-06-19 11:20:25 +08:00
851673013@qq.com 4e08d4ea19 Merge branch 'hi-ucs-dev' of http://15.2.21.221:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-06-19 11:03:59 +08:00
a0049873 a0c1367cd6 BUG 2022-06-19 11:03:02 +08:00
a0049873 462ed15ead 布局 2022-06-19 10:46:31 +08:00
a0049873 06659b9342 bug 2022-06-19 10:29:28 +08:00
a0049873 891e7df1cd 字体 2022-06-19 10:28:38 +08:00
a0049873 6bd14950a4 能力云图 2022-06-19 10:22:39 +08:00
851673013@qq.com b61e7cf803 页面底部更换配置 2022-06-17 18:04:49 +08:00
a0049873 9900583333 文件上传组件BUG修改 2022-06-17 11:16:10 +08:00
a0049873 eed0b62c5a 能力集气泡图 BUG修改 2022-06-17 10:40:09 +08:00
wuhongjian 676a738518 上传配置文件修改 2022-06-16 17:04:52 +08:00
wuhongjian 36b8fec5a0 上传配置文件修改 2022-06-16 17:04:20 +08:00
wuhongjian ff134c7b0a 上传配置地址修改 2022-06-16 16:58:49 +08:00
708 changed files with 94241 additions and 10403 deletions

13
.gitignore vendored
View File

@ -1,5 +1,12 @@
back/dist-西海岸-后台管理.zip back/*.zip
back/dist-市局-后台管理-带配置文件.zip back/public/index.html
back/dist-西海岸-后台管理-带配置文件.zip back/dist-西海岸-后台管理-带配置文件.zip
back/dist.zip back/dist-市局-后台管理-带配置文件.zip
back/dist-包头-后台管理.zip
back/dist-市局-后台管理.zip
back/dist-市局-后台管理-v0.8.2.1.zip
front/public/index.html 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

20801
back/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -22,6 +22,7 @@
"carddragger": "^0.3.6", "carddragger": "^0.3.6",
"clipboard": "^2.0.6", "clipboard": "^2.0.6",
"core-js": "^3.6.5", "core-js": "^3.6.5",
"crypto-js": "^4.1.1",
"echarts": "^4.7.0", "echarts": "^4.7.0",
"element-ui": "^2.13.2", "element-ui": "^2.13.2",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
@ -33,6 +34,7 @@
"lodash": "^4.17.19", "lodash": "^4.17.19",
"monaco-editor": "^0.20.0", "monaco-editor": "^0.20.0",
"monaco-editor-webpack-plugin": "^1.9.0", "monaco-editor-webpack-plugin": "^1.9.0",
"pinyin-pro": "^3.11.0",
"qs": "^6.9.4", "qs": "^6.9.4",
"quill": "^1.3.7", "quill": "^1.3.7",
"sass": "^1.51.0", "sass": "^1.51.0",
@ -56,6 +58,7 @@
"@vue/cli-service": "^4.4.6", "@vue/cli-service": "^4.4.6",
"@vue/eslint-config-standard": "^5.1.2", "@vue/eslint-config-standard": "^5.1.2",
"babel-eslint": "^10.1.0", "babel-eslint": "^10.1.0",
"crypto-js": "^4.1.1",
"element-theme-chalk": "^2.13.2", "element-theme-chalk": "^2.13.2",
"eslint": "^7.5.0", "eslint": "^7.5.0",
"eslint-plugin-import": "^2.22.0", "eslint-plugin-import": "^2.22.0",

View File

@ -0,0 +1,48 @@
/*
* @Author: hisense.wuhongjian
* @Date: 2022-08-25 14:37:49
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-29 09:57:52
* @Description: 告诉大家这是什么
*/
var _global = {}
var CONFIGITEM = {
// version: 'qingdao', // 青岛
// version: 'xihaian', // 西海岸
version: 'test', // 测试
// version: 'frp', // 内网穿透
// version: 'dev', // 开发
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'
},
// 西海岸大数据局
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'
},
// 测试
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'
},
// 内网穿透
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'
},
dev: {
previewUrl: 'http://localhost:8080/',
apiURL: 'http://192.168.124.236:8888/renren-admin',
websocketURL: 'ws://192.168.124.236:8888/renren-admin/websocket'
}
}
}
_global.config = CONFIGITEM.configData[CONFIGITEM.version]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-04-11 10:11:40 * @Date: 2022-04-11 10:11:40
* @LastEditors: hisense.wuhongjian * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-06-16 15:52:33 * @LastEditTime: 2022-08-29 09:54:59
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
--> -->
<!DOCTYPE html> <!DOCTYPE html>
@ -11,10 +11,11 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="ie=edge"> <meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="shortcut icon" href="<%= BASE_URL %>favicon.ico"> <link rel="shortcut icon" href="<%= BASE_URL %>favicon.ico">
<script type="text/javascript" src="./config/basicConfig.js"></script>
<!-- 站点配置 --> <!-- 站点配置 -->
<script> <script>
window.SITE_CONFIG = {}; window.SITE_CONFIG = {};
window.SITE_CONFIG['version'] = 'v2.9.0'; window.SITE_CONFIG['version'] = CONFIGITEM.vNum;
window.SITE_CONFIG['nodeEnv'] = '<%= process.env.VUE_APP_NODE_ENV %>'; window.SITE_CONFIG['nodeEnv'] = '<%= process.env.VUE_APP_NODE_ENV %>';
window.SITE_CONFIG['apiURL'] = ''; // api请求地址 window.SITE_CONFIG['apiURL'] = ''; // api请求地址
window.SITE_CONFIG['storeState'] = {}; // vuex本地储存初始化状态用于不刷新页面的情况下也能重置初始化项目中所有状态 window.SITE_CONFIG['storeState'] = {}; // vuex本地储存初始化状态用于不刷新页面的情况下也能重置初始化项目中所有状态
@ -27,54 +28,19 @@
'isTab': true, // 是否通过tab展示内容? 'isTab': true, // 是否通过tab展示内容?
'iframeURL': '' // 是否通过iframe嵌套展示内容? (以http[s]://开头, 自动匹配) 'iframeURL': '' // 是否通过iframe嵌套展示内容? (以http[s]://开头, 自动匹配)
}; };
// window.SITE_CONFIG['frontUrl'] = 'http://15.2.21.238:9796/#/vueTemplateDemo';
window.SITE_CONFIG['frontUrl'] = 'http://124.222.94.39:9796/#/vueTemplateDemo';
// window.SITE_CONFIG['frontUrl'] = 'http://15.72.183.90:7008/#/vueTemplateDemo';
window.SITE_CONFIG['menuList'] = []; // 左侧菜单列表(后台返回,未做处理) window.SITE_CONFIG['menuList'] = []; // 左侧菜单列表(后台返回,未做处理)
window.SITE_CONFIG['permissions'] = []; // 页面按钮操作权限(后台返回,未做处理) window.SITE_CONFIG['permissions'] = []; // 页面按钮操作权限(后台返回,未做处理)
window.SITE_CONFIG['dynamicRoutes'] = []; // 动态路由列表 window.SITE_CONFIG['dynamicRoutes'] = []; // 动态路由列表
window.SITE_CONFIG['dynamicMenuRoutes'] = []; // 动态(菜单)路由列表 window.SITE_CONFIG['dynamicMenuRoutes'] = []; // 动态(菜单)路由列表
window.SITE_CONFIG['dynamicMenuRoutesHasAdded'] = false; // 动态(菜单)路由是否已经添加的状态标示(用于判断是否需要重新拉取数据并进行动态添加操作) window.SITE_CONFIG['dynamicMenuRoutesHasAdded'] = false; // 动态(菜单)路由是否已经添加的状态标示(用于判断是否需要重新拉取数据并进行动态添加操作)
</script> </script>
<!-- 开发环境 -->
<% if (process.env.VUE_APP_NODE_ENV === 'dev') { %>
<script> <script>
// window.SITE_CONFIG['apiURL'] = 'http://15.2.21.166:8888/renren-admin'; window.SITE_CONFIG['frontUrl'] = _global.config.previewUrl + '#/vueTemplateDemo';
window.SITE_CONFIG['apiURL'] = 'http://15.2.21.238:8888/renren-admin'; window.SITE_CONFIG['previewUrl'] = _global.config.previewUrl;
// window.SITE_CONFIG['apiURL'] = 'http://15.2.23.141:8000/renren-admin'; window.SITE_CONFIG['apiURL'] = _global.config.apiURL;
// WebSocket地址
window.SITE_CONFIG['socketURL'] ='ws://localhost:8080/renren-admin/websocket';
</script>
<% } %>
<!-- 集成测试环境 -->
<% if (process.env.VUE_APP_NODE_ENV === 'prod:sit') { %>
<script>
window.SITE_CONFIG['apiURL'] = 'http://localhost:8080/renren-admin';
// WebSocket地址 // WebSocket地址
window.SITE_CONFIG['socketURL'] ='ws://localhost:8080/renren-admin/websocket'; window.SITE_CONFIG['socketURL'] =_global.config.socketURL;
</script> </script>
<% } %>
<!-- 验收测试环境 -->
<% if (process.env.VUE_APP_NODE_ENV === 'prod:uat') { %>
<script>
window.SITE_CONFIG['apiURL'] = 'http://localhost:8080/renren-admin';
// WebSocket地址
window.SITE_CONFIG['socketURL'] ='ws://localhost:8080/renren-admin/websocket';
</script>
<% } %>
<!-- 生产环境 -->
<% if (process.env.VUE_APP_NODE_ENV === 'prod') { %>
<script>
window.SITE_CONFIG['apiURL'] = 'http://124.222.94.39:8888/renren-admin';
// window.SITE_CONFIG['apiURL'] = 'http://15.2.21.238:8888/renren-admin';
// window.SITE_CONFIG['apiURL'] = 'http://15.72.183.90:8000/renren-admin';
// WebSocket地址
window.SITE_CONFIG['socketURL'] ='ws://localhost:8080/renren-admin/websocket';
</script>
<% } %>
</head> </head>
<body> <body>
<div id="app"></div> <div id="app"></div>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1013 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1015 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1016 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1020 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,97 @@
<!--
* @Author: hisense.wuhongjian
* @Date: 2022-04-11 16:30:04
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-06-06 13:14:02
* @Description: 告诉大家这是什么
-->
<template>
<div shadow="never" class="aui-card--fill">
<!-- 流转详情 -->
<h3 class="titleH3">{{ $t('process.circulation') }}</h3>
<div class="mod-sys__dict">
<el-table
v-loading="dataListLoading"
:data="dataList"
border
@selection-change="dataListSelectionChangeHandle"
@sort-change="dataListSortChangeHandle"
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-pagination
v-if="dataForm.pid === '0'"
: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>
</div>
</template>
<style scoped>
.image {
width: 60%;
display: block;
margin: 0 auto 30px auto;
}
.titleH3{
font-size: 16px;
color: #212121;
padding:20px 0;
margin-bottom:0;
}
</style>
<script>
import Cookies from 'js-cookie'
import qs from 'qs'
import mixinViewModule from '@/mixins/view-module'
export default {
mixins: [mixinViewModule],
name: 'RenProcessDetail',
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/act/his/getTaskHandleDetailInfo',
getDataListIsPage: false,
createdIsNeed: false,
deleteIsBatch: true,
deleteIsBatchKey: 'deploymentId'
},
dataForm: {
processInstanceId: ''
}
}
},
created () {
this.dataForm.processInstanceId = this.$route.params.processInstanceId
this.getResourceURL()
this.getDataList()
},
methods: {
// (xml/image)url
getResourceURL () {
const params = qs.stringify({
token: Cookies.get('ucsToken'),
processInstanceId: this.dataForm.processInstanceId
})
return `${window.SITE_CONFIG.apiURL}/act/his/getInstImage?${params}`
}
}
}
</script>

View File

@ -1,15 +1,15 @@
<!-- <!--
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-04-11 16:30:04 * @Date: 2022-04-11 16:30:04
* @LastEditors: hisense.wuhongjian * @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-06-06 13:14:02 * @LastEditTime: 2022-07-16 15:07:44
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
--> -->
<template> <template>
<el-card shadow="never" class="aui-card--fill"> <el-card shadow="never" class="aui-card--fill">
<!-- 流程图 --> <!-- 流程图 -->
<h4>{{ $t('process.flowImage') }}</h4> <!-- <h4>{{ $t('process.flowImage') }}</h4>
<img :src="getResourceURL()" class="image"> <img :src="getResourceURL()" class="image"> -->
<!-- 流转详情 --> <!-- 流转详情 -->
<h4>{{ $t('process.circulation') }}</h4> <h4>{{ $t('process.circulation') }}</h4>
<div class="mod-sys__dict"> <div class="mod-sys__dict">

View File

@ -486,7 +486,7 @@ $--cascader-tag-background: #f0f2f5;
/* Group /* Group
-------------------------- */ -------------------------- */
$--group-option-flex: 0 0 (1/5) * 100% !default; $--group-option-flex: 0 0 20% !default;
$--group-option-offset-bottom: 12px !default; $--group-option-offset-bottom: 12px !default;
$--group-option-fill-hover: rgba($--color-black, 0.06) !default; $--group-option-fill-hover: rgba($--color-black, 0.06) !default;
$--group-title-color: $--color-black !default; $--group-title-color: $--color-black !default;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -25,6 +25,7 @@ t.choose = 'Please Choose'
t.fileName = 'File Name' t.fileName = 'File Name'
t.design = 'Online Design' t.design = 'Online Design'
t.preview = 'Preview' t.preview = 'Preview'
t.reset='Reset'
t.prompt = {} t.prompt = {}
t.prompt.title = 'Prompt' t.prompt.title = 'Prompt'

View File

@ -25,6 +25,7 @@ t.choose = '请选择'
t.fileName = '文件名' t.fileName = '文件名'
t.design = '在线设计' t.design = '在线设计'
t.preview = '预览' t.preview = '预览'
t.reset = '重置'
t.prompt = {} t.prompt = {}
t.prompt.title = '提示' t.prompt.title = '提示'
@ -35,6 +36,7 @@ t.prompt.deleteBatch = '请选择删除项'
t.validate = {} t.validate = {}
t.validate.required = '必填项不能为空' t.validate.required = '必填项不能为空'
t.validate.pwdStrength = '密码需包含字母、数字、标点符号,并超过8位'
t.validate.format = '{attr}格式错误' t.validate.format = '{attr}格式错误'
t.upload = {} t.upload = {}
@ -545,4 +547,33 @@ t.notice.new = '有新通知'
t.notice.disconnect = '连接断开' t.notice.disconnect = '连接断开'
t.notice.disconnectMessage = 'WebSocket连接已断开请检查网络' t.notice.disconnectMessage = 'WebSocket连接已断开请检查网络'
t.projectList = {}
t.projectList.projectName = '项目名称'
t.projectList.projectUnit = '申请单位'
t.projectList.department = '责任处室'
t.projectList.applydate = '申请日期'
t.projectList.district = '所属区市'
t.projectList.contacts = '业务联系人'
t.projectList.contactstel = '业务联系人电话'
t.projectList.technology = '技术联系人电话'
t.projectList.technologytel = '技术联系人电话'
t.dataresources = {}
t.dataresources.componentType = '组件类型'
t.dataresources.componentName = '组件名称'
t.dataresources.putOnDate = '上架时间'
t.dataresources.resourcesName = '数据资源名称'
t.dataresources.resourcesCode = '数据资源代码'
t.dataresources.resourcesProvide = '数据资源提供方'
t.dataresources.resourcesAbstract = '数据资源摘要'
t.dataresources.associatedApplication = '关联应用'
t.infrastructure = {}
t.infrastructure.resourceCategory = '资源类别'
t.infrastructure.resourceName = '摄像头名称'
t.infrastructure.district = '所在区市'
t.infrastructure.street = '所在街道'
t.infrastructure.department = '所属部门'
t.infrastructure.associatedApplication = '关联应用'
export default t export default t

View File

@ -25,6 +25,7 @@ t.choose = '請選擇'
t.fileName = '文件名' t.fileName = '文件名'
t.design = '在線設計' t.design = '在線設計'
t.preview = '預覽' t.preview = '預覽'
t.reset='重置'
t.prompt = {} t.prompt = {}
t.prompt.title = '提示' t.prompt.title = '提示'

View File

@ -17,8 +17,8 @@ export default {
exportURL: '', // 导出接口API地址 exportURL: '', // 导出接口API地址
requestCallback: null // 获取列表以后执行的回调 requestCallback: null // 获取列表以后执行的回调
}, },
flag:false, flag: false,
time:null, time: null,
// 默认属性 // 默认属性
dataForm: { dataForm: {
}, // 查询条件 }, // 查询条件
@ -102,13 +102,22 @@ export default {
return item return item
} }
}) })
this.total = this.mixinViewModuleOptions.getDataListIsPage ? this.dataList.length : 0 this.total = this.mixinViewModuleOptions.getDataListIsPage ? res.data.total : 0
}) })
} else { } 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) console.log('数据列表', this.dataList, this.mixinViewModuleOptions.getDataListURL)
if (this.dataList[0].type === '组件服务') {
this.dataList.map(val => {
val.infoList2 = val.infoList.filter(item => item.attrType === '应用领域' || item.attrType === '组件类型')
})
} else if (this.dataList[0].type === '应用资源') {
this.dataList.map(val => {
val.infoList2 = val.infoList.filter(item => item.attrType === '应用领域')
})
}
if (this.mixinViewModuleOptions.requestCallback) { if (this.mixinViewModuleOptions.requestCallback) {
this.mixinViewModuleOptions.requestCallback(res.data) this.mixinViewModuleOptions.requestCallback(res.data)
} }

View File

@ -5,6 +5,12 @@ import { isURL } from '@/utils/validate'
import store from '@/store' import store from '@/store'
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
// 解决ElementUI导航栏中的vue-router在3.0版本以上重复点菜单报错问题
const originalPush = Router.prototype.push
Router.prototype.push = function push (location) {
return originalPush.call(this, location).catch(err => err)
}
Vue.use(Router) Vue.use(Router)
// 页面路由(独立页面) // 页面路由(独立页面)
@ -35,7 +41,8 @@ export const moduleRoutes = {
meta: { title: '主入口布局' }, meta: { title: '主入口布局' },
children: [ children: [
// todos 临时调整,后期去掉 // todos 临时调整,后期去掉
{ path: '/home', redirect: '/bscatalogue-bscatalogue', component: () => import('@/views/modules/home'), name: 'home', meta: { title: '首页', isTab: true } }, // { path: '/home', redirect: '/bscatalogue-bscatalogue', component: () => import('@/views/modules/home'), name: 'home', meta: { title: '首页', isTab: true } },
{ path: '/home', redirect: '/workBench-workBench', component: () => import('@/views/modules/home'), name: 'home', meta: { title: '首页', isTab: true } },
{ path: '/iframe', component: null, name: 'iframe', meta: { title: 'iframe', isTab: true } } { path: '/iframe', component: null, name: 'iframe', meta: { title: 'iframe', isTab: true } }
] ]
} }
@ -155,7 +162,7 @@ function fnAddDynamicMenuRoutes (menuList = [], routes = []) {
route.meta.iframeURL = URL route.meta.iframeURL = URL
} else { } else {
const urlArr = URL.split('?') const urlArr = URL.split('?')
debugger // debugger
URL = urlArr[0].replace(/^\//, '').replace(/_/g, '-') URL = urlArr[0].replace(/^\//, '').replace(/_/g, '-')
route.path = route.name = URL.replace(/\//g, '-') route.path = route.name = URL.replace(/\//g, '-')
route.component = () => import(`@/views/modules/${URL}`) route.component = () => import(`@/views/modules/${URL}`)

View File

@ -1,3 +1,10 @@
/*
* @Author: hisense.wuhongjian
* @Date: 2022-07-05 12:53:03
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-23 16:37:05
* @Description: 告诉大家这是什么
*/
import Vue from 'vue' import Vue from 'vue'
import Vuex from 'vuex' import Vuex from 'vuex'
import cloneDeep from 'lodash/cloneDeep' import cloneDeep from 'lodash/cloneDeep'
@ -12,7 +19,7 @@ export default new Vuex.Store({
// 导航条, 布局风格, default(白色) / colorful(鲜艳) // 导航条, 布局风格, default(白色) / colorful(鲜艳)
navbarLayoutType: 'colorful', navbarLayoutType: 'colorful',
// 侧边栏, 布局皮肤, default(白色) / dark(黑色) // 侧边栏, 布局皮肤, default(白色) / dark(黑色)
sidebarLayoutSkin: 'dark', sidebarLayoutSkin: 'default',
// 侧边栏, 折叠状态 // 侧边栏, 折叠状态
sidebarFold: false, sidebarFold: false,
// 侧边栏, 菜单 // 侧边栏, 菜单
@ -62,12 +69,12 @@ export default new Vuex.Store({
// dispatch('getDepartmentSelects') // dispatch('getDepartmentSelects')
}, },
getCatalogueTree ({ commit }) { getCatalogueTree ({ commit }) {
http.get('bscatalogue/bscatalogue/page').then(res => { // http.get('bscatalogue/bscatalogue/page').then(res => {
if (res.data.code === 0) { // if (res.data.code === 0) {
console.log(22222, res.data) // console.log(22222, res.data)
commit('setCatalogueTree', res.data.data) // commit('setCatalogueTree', res.data.data)
} // }
}) // })
}, },
getDepartmentSelects ({ commit }) { getDepartmentSelects ({ commit }) {
http.get('applyRecord/bsAbilityApplyRecord/page').then(({ data: res }) => { http.get('applyRecord/bsAbilityApplyRecord/page').then(({ data: res }) => {

58
back/src/utils/crypto.js Normal file
View File

@ -0,0 +1,58 @@
/*
* @Author: hisense.liangjunhua
* @Date: 2022-06-24 16:00:58
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-06-24 16:44:28
* @Description: 告诉大家这是什么
*/
import CryptoJS from 'crypto-js/crypto-js'
// 默认的 KEY 与 iv 与后端保持一致 ,不采用后端传值密钥 上上下下左右左右BABA 一往无前虎山行拨开云雾见光明梦里花开牡丹亭幻想成真歌舞升平
const KEY = CryptoJS.enc.Utf8.parse('YwwqhsxBkywjgm01') // 密钥
const IV = CryptoJS.enc.Utf8.parse('SSXXZYZYBABA30TM') // 偏移量
/**
* AES加密 字符串 key iv 返回base64
*/
export function Encrypt(word, keyStr, ivStr) {
let key = KEY
let iv = IV
if (keyStr) {
key = CryptoJS.enc.Utf8.parse(keyStr)
iv = CryptoJS.enc.Utf8.parse(ivStr)
}
const srcs = CryptoJS.enc.Utf8.parse(word)
var encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.ZeroPadding,
})
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext)
}
/**
* AES 解密 字符串 key iv 返回base64
*
*/
export function Decrypt(word, keyStr, ivStr) {
let key = KEY
let iv = IV
if (keyStr) {
key = CryptoJS.enc.Utf8.parse(keyStr)
iv = CryptoJS.enc.Utf8.parse(ivStr)
}
const base64 = CryptoJS.enc.Base64.parse(word)
const src = CryptoJS.enc.Base64.stringify(base64)
var decrypt = CryptoJS.AES.decrypt(src, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.ZeroPadding,
})
var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8)
return decryptedStr.toString()
}

View File

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

View File

@ -5,25 +5,52 @@
<el-dropdown class="aui-content--tabs-tools"> <el-dropdown class="aui-content--tabs-tools">
<i class="el-icon-arrow-down"></i> <i class="el-icon-arrow-down"></i>
<el-dropdown-menu slot="dropdown" :show-timeout="0"> <el-dropdown-menu slot="dropdown" :show-timeout="0">
<el-dropdown-item @click.native="tabRemoveHandle($store.state.contentTabsActiveName)">{{ $t('contentTabs.closeCurrent') }}</el-dropdown-item> <el-dropdown-item
<el-dropdown-item @click.native="tabsCloseOtherHandle()">{{ $t('contentTabs.closeOther') }}</el-dropdown-item> @click.native="tabRemoveHandle($store.state.contentTabsActiveName)"
<el-dropdown-item @click.native="tabsCloseAllHandle()">{{ $t('contentTabs.closeAll') }}</el-dropdown-item> >{{ $t("contentTabs.closeCurrent") }}</el-dropdown-item
>
<el-dropdown-item @click.native="tabsCloseOtherHandle()">{{
$t("contentTabs.closeOther")
}}</el-dropdown-item>
<el-dropdown-item @click.native="tabsCloseAllHandle()">{{
$t("contentTabs.closeAll")
}}</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
<el-tabs v-model="$store.state.contentTabsActiveName" @tab-click="tabSelectedHandle" @tab-remove="tabRemoveHandle"> <el-tabs
v-model="$store.state.contentTabsActiveName"
@tab-click="tabSelectedHandle"
@tab-remove="tabRemoveHandle"
>
<el-tab-pane <el-tab-pane
v-for="item in $store.state.contentTabs" v-for="item in $store.state.contentTabs"
:key="item.name" :key="item.name"
:name="item.name" :name="item.name"
:label="item.title" :label="item.title"
:closable="item.name !== 'home'" :closable="item.name !== 'home'"
:class="{ 'is-iframe': tabIsIframe(item.iframeURL) }"> :class="{ 'is-iframe': tabIsIframe(item.iframeURL) }"
>
<template v-if="item.name === 'home'"> <template v-if="item.name === 'home'">
<svg slot="label" class="icon-svg aui-content--tabs-icon-nav" aria-hidden="true"><use xlink:href="#icon-home"></use></svg> <svg
slot="label"
class="icon-svg aui-content--tabs-icon-nav"
aria-hidden="true"
>
<use xlink:href="#icon-home"></use>
</svg>
</template> </template>
<iframe v-if="tabIsIframe(item.iframeURL)" :src="item.iframeURL" width="100%" height="100%" frameborder="0" scrolling="yes"></iframe> <iframe
v-if="tabIsIframe(item.iframeURL)"
:src="item.iframeURL"
width="100%"
height="100%"
frameborder="0"
scrolling="yes"
></iframe>
<keep-alive v-else> <keep-alive v-else>
<router-view v-if="item.name === $store.state.contentTabsActiveName" /> <router-view
v-if="item.name === $store.state.contentTabsActiveName"
/>
</keep-alive> </keep-alive>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
@ -38,59 +65,91 @@
</template> </template>
<script> <script>
import { isURL } from '@/utils/validate' import { isURL } from "@/utils/validate";
export default { export default {
data () { data() {
return { return {};
}
}, },
methods: { methods: {
// tabs, iframe // tabs, iframe
tabIsIframe (url) { tabIsIframe(url) {
return isURL(url) return isURL(url);
}, },
// tabs, tab // tabs, tab
tabSelectedHandle (tab) { tabSelectedHandle(tab) {
tab = this.$store.state.contentTabs.filter(item => item.name === tab.name)[0] tab = this.$store.state.contentTabs.filter(
(item) => item.name === tab.name
)[0];
if (tab) { if (tab) {
this.$router.push({ this.$router.push({
'name': /^iframe_.+/.test(tab.name) ? 'iframe' : tab.name, name: /^iframe_.+/.test(tab.name) ? "iframe" : tab.name,
'params': { ...tab.params }, params: { ...tab.params },
'query': { ...tab.query } query: { ...tab.query },
}) });
} }
}, },
// tabs, tab // tabs, tab
tabRemoveHandle (tabName) { tabRemoveHandle(tabName) {
if (tabName === 'home') { if (tabName === "home") {
return false return false;
} }
this.$store.state.contentTabs = this.$store.state.contentTabs.filter(item => item.name !== tabName) this.$store.state.contentTabs = this.$store.state.contentTabs.filter(
(item) => item.name !== tabName
);
if (this.$store.state.contentTabs.length <= 0) { if (this.$store.state.contentTabs.length <= 0) {
this.$store.state.sidebarMenuActiveName = this.$store.state.contentTabsActiveName = 'home' this.$store.state.sidebarMenuActiveName =
return false this.$store.state.contentTabsActiveName = "home";
return false;
} }
// tab // tab
if (tabName === this.$store.state.contentTabsActiveName) { if (tabName === this.$store.state.contentTabsActiveName) {
let tab = this.$store.state.contentTabs[this.$store.state.contentTabs.length - 1] let tab =
this.$store.state.contentTabs[
this.$store.state.contentTabs.length - 1
];
this.$router.push({ this.$router.push({
name: /^iframe_.+/.test(tab.name) ? 'iframe' : tab.name, name: /^iframe_.+/.test(tab.name) ? "iframe" : tab.name,
params: { ...tab.params }, params: { ...tab.params },
query: { ...tab.query } query: { ...tab.query },
}) });
} }
}, },
// tabs, // tabs,
tabsCloseOtherHandle () { tabsCloseOtherHandle() {
this.$store.state.contentTabs = this.$store.state.contentTabs.filter(item => { this.$store.state.contentTabs = this.$store.state.contentTabs.filter(
return item.name === 'home' || item.name === this.$store.state.contentTabsActiveName (item) => {
}) return (
item.name === "home" ||
item.name === this.$store.state.contentTabsActiveName
);
}
);
}, },
// tabs, // tabs,
tabsCloseAllHandle () { tabsCloseAllHandle() {
this.$store.state.contentTabs = this.$store.state.contentTabs.filter(item => item.name === 'home') this.$store.state.contentTabs = this.$store.state.contentTabs.filter(
this.$router.push({ name: 'home' }) (item) => item.name === "home"
);
this.$router.push({ name: "home" });
},
},
};
</script>
<style scoped lang="scss">
.aui-content {
.el-tabs {
::v-deep .el-tabs__header {
left: 266px;
.el-tabs__nav-wrap {
.el-tabs__nav-scroll {
.el-tabs__nav {
.el-tabs__item ::after {
background-color: #0058e1;
}
}
}
}
} }
} }
} }
</script> </style>

View File

@ -1,3 +1,10 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-23 16:41:46
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-06-24 17:51:42
* @Description: 告诉大家这是什么
-->
<template> <template>
<el-dialog <el-dialog
:visible.sync="visible" :visible.sync="visible"
@ -13,7 +20,7 @@
<el-input v-model="dataForm.password" type="password" :placeholder="$t('updatePassword.password')"></el-input> <el-input v-model="dataForm.password" type="password" :placeholder="$t('updatePassword.password')"></el-input>
</el-form-item> </el-form-item>
<el-form-item prop="newPassword" :label="$t('updatePassword.newPassword')"> <el-form-item prop="newPassword" :label="$t('updatePassword.newPassword')">
<el-input v-model="dataForm.newPassword" type="password" :placeholder="$t('updatePassword.newPassword')"></el-input> <el-input v-model="dataForm.newPassword" type="password" :placeholder="$t('updatePassword.newPassword')" @input="changeInput"></el-input>
</el-form-item> </el-form-item>
<el-form-item prop="confirmPassword" :label="$t('updatePassword.confirmPassword')"> <el-form-item prop="confirmPassword" :label="$t('updatePassword.confirmPassword')">
<el-input v-model="dataForm.confirmPassword" type="password" :placeholder="$t('updatePassword.confirmPassword')"></el-input> <el-input v-model="dataForm.confirmPassword" type="password" :placeholder="$t('updatePassword.confirmPassword')"></el-input>
@ -28,6 +35,7 @@
<script> <script>
import debounce from 'lodash/debounce' import debounce from 'lodash/debounce'
import { Encrypt } from '@/utils/crypto'
import { clearLoginInfo } from '@/utils' import { clearLoginInfo } from '@/utils'
export default { export default {
data () { data () {
@ -42,6 +50,28 @@ export default {
}, },
computed: { computed: {
dataRule () { dataRule () {
var validatePassword = (rule, value, callback) => {
if (!value) {
this.showLevel = false
return callback(new Error(this.$t('validate.pwdStrength')))
}
if (value.length < 8) {
this.showLevel = false
return callback(new Error(this.$t('validate.pwdStrength')))
}
const num = /^.*[0-9]+.*/
const low = /^.*[a-z]+.*/
const up = /^.*[A-Z]+.*/
const spe = /^.*[^a-zA-Z0-9]+.*/
console.log('包含数字', num.test(value), '包含字母', low.test(value), up.test(value), '包含特殊符号', spe.test(value))
if (!(num.test(value) && (low.test(value) || up.test(value)) && spe.test(value))) {
return callback(new Error(this.$t('validate.pwdStrength')))
}
// if (!this.dataForm.id && !/\S/.test(value)) {
// return callback(new Error(this.$t('validate.required')))
// }
callback()
}
var validateConfirmPassword = (rule, value, callback) => { var validateConfirmPassword = (rule, value, callback) => {
if (this.dataForm.newPassword !== value) { if (this.dataForm.newPassword !== value) {
return callback(new Error(this.$t('updatePassword.validate.confirmPassword'))) return callback(new Error(this.$t('updatePassword.validate.confirmPassword')))
@ -53,7 +83,8 @@ export default {
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } { required: true, message: this.$t('validate.required'), trigger: 'blur' }
], ],
newPassword: [ newPassword: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } { required: true, message: this.$t('validate.required'), trigger: 'blur' },
{ validator: validatePassword, trigger: 'blur' }
], ],
confirmPassword: [ confirmPassword: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }, { required: true, message: this.$t('validate.required'), trigger: 'blur' },
@ -63,19 +94,33 @@ export default {
} }
}, },
methods: { methods: {
changeInput (value) {
if (value !== value.replace(/ /g, '')) {
this.$message({
message: '密码中不允许存在空格!',
type: 'warning'
})
this.dataForm.newPassword = value.replace(/ /g, '')
// console.log('=============>', value)
}
},
init () { init () {
this.visible = true this.visible = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs['dataForm'].resetFields() this.$refs.dataForm.resetFields()
}) })
}, },
// //
dataFormSubmitHandle: debounce(function () { dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid) => { this.$refs.dataForm.validate((valid) => {
if (!valid) { if (!valid) {
return false return false
} }
this.$http.put('/sys/user/password', this.dataForm).then(({ data: res }) => { this.$http.put('/sys/user/password', {
confirmPassword: Encrypt(this.dataForm.confirmPassword),
newPassword: Encrypt(this.dataForm.newPassword),
password: Encrypt(this.dataForm.password)
}).then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error(res.msg) return this.$message.error(res.msg)
} }
@ -91,7 +136,7 @@ export default {
}) })
}).catch(() => {}) }).catch(() => {})
}) })
}, 1000, { 'leading': true, 'trailing': false }) }, 1000, { leading: true, trailing: false })
} }
} }
</script> </script>

View File

@ -1,59 +1,102 @@
<template> <template>
<nav class="aui-navbar" :class="`aui-navbar--${$store.state.navbarLayoutType}`"> <nav
class="aui-navbar"
:class="`aui-navbar--${$store.state.navbarLayoutType}`"
>
<div class="aui-navbar__header"> <div class="aui-navbar__header">
<h1 class="aui-navbar__brand" @click="$router.push({ name: 'home' })"> <h1 class="aui-navbar__brand" @click="$router.push({ name: 'home' })">
<a class="aui-navbar__brand-lg" href="javascript:;">{{ $t('brand.lg') }}</a> <a class="aui-navbar__brand-mini" href="javascript:;">{{
<a class="aui-navbar__brand-mini" href="javascript:;">{{ $t('brand.mini') }}</a> $t("brand.mini")
}}</a>
<a class="aui-navbar__brand-lg" href="javascript:;">{{
$t("brand.lg")
}}</a>
<span></span>
<span class="back-title-text">后台管理系统</span>
</h1> </h1>
</div> </div>
<div class="aui-navbar__body"> <div class="aui-navbar__body">
<el-menu class="aui-navbar__menu mr-auto" mode="horizontal"> <el-menu class="aui-navbar__menu mr-auto" mode="horizontal">
<el-menu-item index="1" @click="$store.state.sidebarFold = !$store.state.sidebarFold"> <!-- <el-menu-item
<svg class="icon-svg aui-navbar__icon-menu aui-navbar__icon-menu--switch" aria-hidden="true"><use xlink:href="#icon-outdent"></use></svg> index="1"
@click="$store.state.sidebarFold = !$store.state.sidebarFold"
>
<svg
class="icon-svg aui-navbar__icon-menu aui-navbar__icon-menu--switch"
aria-hidden="true"
>
<use xlink:href="#icon-outdent"></use>
</svg>
</el-menu-item> </el-menu-item>
<el-menu-item index="2" @click="refresh()"> <el-menu-item index="2" @click="refresh()">
<svg class="icon-svg aui-navbar__icon-menu aui-navbar__icon-menu--refresh" aria-hidden="true"><use xlink:href="#icon-sync"></use></svg> <svg
</el-menu-item> class="
icon-svg
aui-navbar__icon-menu aui-navbar__icon-menu--refresh
"
aria-hidden="true"
>
<use xlink:href="#icon-sync"></use>
</svg>
</el-menu-item> -->
</el-menu> </el-menu>
<el-menu class="aui-navbar__menu" mode="horizontal"> <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-dropdown placement="bottom" :show-timeout="0">
<el-button size="mini">{{ $t('_lang') }}</el-button> <el-button size="mini">{{ $t("_lang") }}</el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="(val, key) in i18nMessages" :key="key" @click.native="$i18n.locale = key">{{ val._lang }}</el-dropdown-item> <el-dropdown-item
v-for="(val, key) in i18nMessages"
:key="key"
@click.native="$i18n.locale = key"
>{{ val._lang }}</el-dropdown-item
>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</el-menu-item> </el-menu-item>
<el-menu-item index="2"> <el-menu-item index="2">
<a href="//115.28.200.119:9091" target="_blank"> <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> <svg class="icon-svg aui-navbar__icon-menu" aria-hidden="true">
<use xlink:href="#icon-earth"></use>
</svg>
</a> </a>
</el-menu-item> </el-menu-item>
<el-menu-item index="3" v-if="$hasPermission('sys:notice:all')"> <el-menu-item index="3" v-if="$hasPermission('sys:notice:all')">
<el-badge :is-dot="messageTip"> <el-badge :is-dot="messageTip">
<a href="#" @click="myNoticeRouter()"><i class="el-icon-bell"></i></a> <a href="#" @click="myNoticeRouter()"
><i class="el-icon-bell"></i
></a>
</el-badge> </el-badge>
</el-menu-item> </el-menu-item>
<el-menu-item index="4" @click="fullscreenHandle()"> <el-menu-item index="4" @click="fullscreenHandle()">
<svg class="icon-svg aui-navbar__icon-menu" aria-hidden="true"><use xlink:href="#icon-fullscreen"></use></svg> <svg class="icon-svg aui-navbar__icon-menu" aria-hidden="true">
<use xlink:href="#icon-fullscreen"></use>
</svg>
</el-menu-item> </el-menu-item>
<el-menu-item index="5" class="aui-navbar__avatar"> <el-menu-item index="5" class="aui-navbar__avatar">
<el-dropdown placement="bottom" :show-timeout="0"> <el-dropdown placement="bottom" :show-timeout="0">
<span class="el-dropdown-link"> <span class="el-dropdown-link">
<img src="~@/assets/img/avatar.png"> <img src="~@/assets/img/avatar.png" />
<span>{{ $store.state.user.name }}</span> <span>{{ $store.state.user.name }}</span>
<i class="el-icon-arrow-down"></i> <i class="el-icon-arrow-down"></i>
</span> </span>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="updatePasswordHandle()">{{ $t('updatePassword.title') }}</el-dropdown-item> <el-dropdown-item @click.native="updatePasswordHandle()">{{
<el-dropdown-item @click.native="logoutHandle()">{{ $t('logout') }}</el-dropdown-item> $t("updatePassword.title")
}}</el-dropdown-item>
<el-dropdown-item @click.native="logoutHandle()">{{
$t("logout")
}}</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</el-menu-item> </el-menu-item>
</el-menu> </el-menu>
</div> </div>
<!-- 弹窗, 修改密码 --> <!-- 弹窗, 修改密码 -->
<update-password v-if="updatePasswordVisible" ref="updatePassword"></update-password> <update-password
v-if="updatePasswordVisible"
ref="updatePassword"
></update-password>
</nav> </nav>
</template> </template>
<script> <script>
@ -108,14 +151,17 @@ export default {
this.$router.replace('notice-notice-user') this.$router.replace('notice-notice-user')
}, },
getUnReadCount () { getUnReadCount () {
this.$http.get('/sys/notice/mynotice/unread').then(({ data: res }) => { this.$http
if (res.code !== 0) { .get('/sys/notice/mynotice/unread')
return this.$message.error(res.msg) .then(({ data: res }) => {
} if (res.code !== 0) {
if (res.data > 0) { return this.$message.error(res.msg)
this.messageTip = true }
} if (res.data > 0) {
}).catch(() => {}) this.messageTip = true
}
})
.catch(() => {})
}, },
// //
fullscreenHandle () { fullscreenHandle () {
@ -137,20 +183,57 @@ export default {
}, },
// 退 // 退
logoutHandle () { logoutHandle () {
this.$confirm(this.$t('prompt.info', { handle: this.$t('logout') }), this.$t('prompt.title'), { this.$confirm(
confirmButtonText: this.$t('confirm'), this.$t('prompt.info', { handle: this.$t('logout') }),
cancelButtonText: this.$t('cancel'), this.$t('prompt.title'),
type: 'warning' {
}).then(() => { confirmButtonText: this.$t('confirm'),
this.$http.post('/logout').then(({ data: res }) => { cancelButtonText: this.$t('cancel'),
if (res.code !== 0) { type: 'warning'
return this.$message.error(res.msg) }
} )
clearLoginInfo() .then(() => {
this.$router.push({ name: 'login' }) this.$http
}).catch(() => {}) .post('/logout')
}).catch(() => {}) .then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
clearLoginInfo()
this.$router.push({ name: 'login' })
})
.catch(() => {})
})
.catch(() => {})
} }
} }
} }
</script> </script>
<style scoped lang="scss">
@font-face {
font-family: "header-typeface";
src: url("~@/assets/font/header-typeface.ttf");
}
.aui-navbar {
width: 100%;
height: 50px;
background-image: url("~@/assets/img/activitiMyWorkDynamics/header-bak.png");
.aui-navbar__header {
width: 25%;
.aui-navbar__brand {
margin-left: 20px;
a {
font-size: 22px;
color: #ffffff;
}
.aui-navbar__brand-mini {
display: block;
}
.back-title-text {
margin-top: 5px;
font-family: header-typeface;
}
}
}
}
</style>

View File

@ -1,89 +1,135 @@
<template> <template>
<el-submenu v-if="menu.children && menu.children.length >= 1" :index="menu.id" :popper-append-to-body="false"> <el-submenu
v-if="menu.children && menu.children.length >= 1"
:index="menu.id"
:popper-append-to-body="false"
>
<template slot="title"> <template slot="title">
<svg class="icon-svg aui-sidebar__menu-icon" aria-hidden="true"><use :xlink:href="`#${menu.icon}`"></use></svg> <svg class="icon-svg aui-sidebar__menu-icon" aria-hidden="true">
<span>{{ menu.name }}</span> <use :xlink:href="`#${menu.icon}`"></use>
</svg>
<span class="first-level-text">{{ menu.name }}</span>
</template> </template>
<sub-menu v-for="item in menu.children" :key="item.id" :menu="item"></sub-menu> <sub-menu
v-for="item in menu.children"
:key="item.id"
:menu="item"
></sub-menu>
</el-submenu> </el-submenu>
<el-menu-item v-else :index="menu.id" ref="li"> <el-menu-item v-else :index="menu.id" ref="li">
<a <a
:href="isBrowserTabOpen(menu.id) ? getBrowserTabOpenURL(menu.id) : 'javascript:;'" :href="
isBrowserTabOpen(menu.id)
? getBrowserTabOpenURL(menu.id)
: 'javascript:;'
"
:target="isBrowserTabOpen(menu.id) ? '_blank' : '_self'" :target="isBrowserTabOpen(menu.id) ? '_blank' : '_self'"
@click="isBrowserTabOpen(menu.id) ? 'return false;' : gotoRouteHandle(menu.id)"> @click="
<svg class="icon-svg aui-sidebar__menu-icon" aria-hidden="true"><use :xlink:href="`#${menu.icon}`"></use></svg> isBrowserTabOpen(menu.id) ? 'return false;' : gotoRouteHandle(menu.id)
"
>
<svg class="icon-svg aui-sidebar__menu-icon" aria-hidden="true">
<use :xlink:href="`#${menu.icon}`"></use>
</svg>
<span>{{ menu.name }}</span> <span>{{ menu.name }}</span>
</a> </a>
</el-menu-item> </el-menu-item>
</template> </template>
<script> <script>
import SubMenu from './main-sidebar-sub-menu' import SubMenu from "./main-sidebar-sub-menu";
export default { export default {
name: 'sub-menu', name: "sub-menu",
data () { data() {
return { return {
browserTabOpenList: [ browserTabOpenList: ["1156748733921165314"],
'1156748733921165314', };
]
}
}, },
props: { props: {
menu: { menu: {
type: Object, type: Object,
required: true required: true,
} },
}, },
components: { components: {
SubMenu SubMenu,
}, },
created () { created() {
this.$nextTick(() => { this.$nextTick(() => {
if (this.$refs.li) { if (this.$refs.li) {
let $li = this.$refs.li.$el let $li = this.$refs.li.$el;
let $a = $li.firstElementChild let $a = $li.firstElementChild;
if ($a) { if ($a) {
let pl = '0', pr = '0' let pl = "0",
pr = "0";
if ($li.currentStyle) { if ($li.currentStyle) {
pl = $li.currentStyle['paddingLeft'] pl = $li.currentStyle["paddingLeft"];
pr = $li.currentStyle['paddingRight'] pr = $li.currentStyle["paddingRight"];
} else { } else {
pl = window.document.defaultView.getComputedStyle($li, null)['paddingLeft'] pl = window.document.defaultView.getComputedStyle($li, null)[
pr = window.document.defaultView.getComputedStyle($li, null)['paddingRight'] "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', `padding-left: ${pl}; padding-right: ${pr};`) $a.setAttribute(
"style",
`padding-left: ${pl}; padding-right: ${pr};`
);
} }
} }
}) });
}, },
methods: { methods: {
// Tab // Tab
isBrowserTabOpen (menuId) { isBrowserTabOpen(menuId) {
return this.browserTabOpenList.filter(item => item === menuId).length >= 1; return (
this.browserTabOpenList.filter((item) => item === menuId).length >= 1
);
}, },
// TabURL // TabURL
getBrowserTabOpenURL (menuId) { getBrowserTabOpenURL(menuId) {
var route = window.SITE_CONFIG['dynamicMenuRoutes'].filter(item => item.meta.menuId === menuId)[0] var route = window.SITE_CONFIG["dynamicMenuRoutes"].filter(
return route ? route.meta.iframeURL : ''; (item) => item.meta.menuId === menuId
)[0];
return route ? route.meta.iframeURL : "";
}, },
// menuId() // menuId()
gotoRouteHandle (menuId) { gotoRouteHandle(menuId) {
var route = window.SITE_CONFIG['dynamicMenuRoutes'].filter(item => item.meta.menuId === menuId)[0] var route = window.SITE_CONFIG["dynamicMenuRoutes"].filter(
(item) => item.meta.menuId === menuId
)[0];
if (route) { if (route) {
this.$router.push({ name: route.name }) this.$router.push({ name: route.name });
} }
} },
} },
} };
</script> </script>
<style lang="scss"> <style lang="scss">
.aui-sidebar__menu { .aui-sidebar__menu {
.el-menu-item > a { .first-level-text {
display: block; font-size: 16px;
color: inherit; color: #212121;
text-decoration: none; font-weight: bold;
}
.el-menu-item {
&.is-active {
color: #ffffff;
background-color: #0058e1;
border: none;
}
a {
display: block;
color: inherit;
text-decoration: none;
}
span {
font-size: 16px;
}
} }
} }
</style> </style>

View File

@ -1,30 +1,68 @@
<!--
* @Author: kongjun qdkongjun@gmail.com
* @Date: 2022-06-20 09:29:59
* @LastEditors: kongjun qdkongjun@gmail.com
* @LastEditTime: 2022-06-22 10:04:56
* @FilePath: \back\src\views\main-sidebar.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template> <template>
<aside :class="['aui-sidebar', `aui-sidebar--${$store.state.sidebarLayoutSkin}`]"> <aside
:class="['aui-sidebar', `aui-sidebar--${$store.state.sidebarLayoutSkin}`]"
>
<div class="aui-sidebar__inner"> <div class="aui-sidebar__inner">
<el-menu <el-menu
:default-active="$store.state.sidebarMenuActiveName" :default-active="$store.state.sidebarMenuActiveName"
:collapse="$store.state.sidebarFold" :collapse="$store.state.sidebarFold"
:unique-opened="true" :unique-opened="true"
:collapseTransition="false" :collapseTransition="false"
class="aui-sidebar__menu"> class="aui-sidebar__menu"
<sub-menu v-for="menu in $store.state.sidebarMenuList" :key="menu.id" :menu="menu" /> >
<sub-menu
v-for="menu in $store.state.sidebarMenuList"
:key="menu.id"
:menu="menu"
/>
</el-menu> </el-menu>
</div> </div>
</aside> </aside>
</template> </template>
<script> <script>
import SubMenu from './main-sidebar-sub-menu' import SubMenu from "./main-sidebar-sub-menu";
export default { export default {
data () { data() {
return { return {};
}
}, },
components: { components: {
SubMenu SubMenu,
}, },
created () { created() {
this.$store.state.sidebarMenuList = window.SITE_CONFIG['menuList'] this.$store.state.sidebarMenuList = window.SITE_CONFIG["menuList"];
},
};
</script>
<style scoped lang="scss">
.aui-sidebar {
width: 266px;
.aui-sidebar__inner {
width: 260px;
//overflow-y: hidden;
/*滚动条样式*/
&::-webkit-scrollbar {
width: 0px;
}
&::-webkit-scrollbar-thumb {
border-radius: 5;
background: rgba(0, 0, 0, 0.25);
}
&::-webkit-scrollbar-track {
border-radius: 0;
background: #f2f2f2;
}
.aui-sidebar__menu {
width: 266px;
}
} }
} }
</script> </style>

View File

@ -1,21 +1,42 @@
<!--
* @Author: kongjun qdkongjun@gmail.com
* @Date: 2022-06-20 09:29:59
* @LastEditors: kongjun qdkongjun@gmail.com
* @LastEditTime: 2022-06-21 11:36:51
* @FilePath: \back\src\views\main-theme-tools.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template> <template>
<div class="aui-theme-tools" :class="{ 'aui-theme-tools--open': isOpen }"> <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> <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__content">
<div class="aui-theme-tools__item"> <div class="aui-theme-tools__item">
<h3>Navbar</h3> <h3>Navbar</h3>
<el-checkbox v-model="$store.state.navbarLayoutType" true-label="colorful">colorful 鲜艳</el-checkbox> <el-checkbox
v-model="$store.state.navbarLayoutType"
true-label="colorful"
>colorful 鲜艳</el-checkbox
>
</div> </div>
<div class="aui-theme-tools__item"> <div class="aui-theme-tools__item">
<h3>Sidebar</h3> <h3>Sidebar</h3>
<el-checkbox v-model="$store.state.sidebarLayoutSkin" true-label="dark">dark 黑色</el-checkbox> <el-checkbox v-model="$store.state.sidebarLayoutSkin" true-label="dark"
>dark 黑色</el-checkbox
>
</div> </div>
<div class="aui-theme-tools__item"> <div class="aui-theme-tools__item">
<h3>Theme</h3> <h3>Theme</h3>
<el-radio-group v-model="themeColor" @change="themeColorChangeHandle"> <el-radio-group v-model="themeColor" @change="themeColorChangeHandle">
<el-radio v-for="item in themeList" :key="item.name" :label="item.name">{{ `${item.name} ${item.desc}` }}</el-radio> <el-radio
v-for="item in themeList"
:key="item.name"
:label="item.name"
>{{ `${item.name} ${item.desc}` }}</el-radio
>
</el-radio-group> </el-radio-group>
</div> </div>
</div> </div>
@ -24,38 +45,50 @@
<script> <script>
export default { export default {
data () { data() {
return { return {
isOpen: false, isOpen: false,
themeList: require('@/element-ui/config.js'), themeList: require("@/element-ui/config.js"),
themeColor: 'turquoise' themeColor: "blue",
} };
},
mounted() {
this.themeColorChangeHandle("blue");
}, },
methods: { methods: {
themeColorChangeHandle (val) { themeColorChangeHandle(val) {
var styleList = [ var styleList = [
{ {
id: 'J_elementTheme', id: "J_elementTheme",
url: `${process.env.BASE_URL}element-theme/${val}/index.css?t=${new Date().getTime()}` url: `${
process.env.BASE_URL
}element-theme/${val}/index.css?t=${new Date().getTime()}`,
}, },
{ {
id: 'J_auiTheme', id: "J_auiTheme",
url: `${process.env.BASE_URL}element-theme/${val}/aui.css?t=${new Date().getTime()}` url: `${
} process.env.BASE_URL
] }element-theme/${val}/aui.css?t=${new Date().getTime()}`,
},
];
for (var i = 0; i < styleList.length; i++) { for (var i = 0; i < styleList.length; i++) {
var el = document.querySelector(`#${styleList[i].id}`) var el = document.querySelector(`#${styleList[i].id}`);
if (el) { if (el) {
el.href = styleList[i].url el.href = styleList[i].url;
continue continue;
} }
el = document.createElement('link') el = document.createElement("link");
el.id = styleList[i].id el.id = styleList[i].id;
el.href = styleList[i].url el.href = styleList[i].url;
el.rel = 'stylesheet' el.rel = "stylesheet";
document.querySelector('head').appendChild(el) document.querySelector("head").appendChild(el);
} }
} },
} },
} };
</script> </script>
<style scoped lang="scss">
.aui-theme-tools__toggle {
background-color: #0058e1;
}
</style>

View File

@ -1,5 +1,9 @@
<template> <template>
<div v-loading.fullscreen.lock="loading" :element-loading-text="$t('loading')" :class="['aui-wrapper', { 'aui-sidebar--fold': $store.state.sidebarFold }]"> <div
v-loading.fullscreen.lock="loading"
:element-loading-text="$t('loading')"
:class="['aui-wrapper', { 'aui-sidebar--fold': $store.state.sidebarFold }]"
>
<template v-if="!loading"> <template v-if="!loading">
<main-navbar /> <main-navbar />
<main-sidebar /> <main-sidebar />
@ -47,20 +51,22 @@ export default {
created () { created () {
this.windowResizeHandle() this.windowResizeHandle()
this.routeHandle(this.$route) this.routeHandle(this.$route)
Promise.all([ Promise.all([this.getUserInfo(), this.getPermissions()]).then(() => {
this.getUserInfo(),
this.getPermissions()
]).then(() => {
this.loading = false this.loading = false
}) })
}, },
methods: { methods: {
// //
windowResizeHandle () { windowResizeHandle () {
this.$store.state.sidebarFold = document.documentElement['clientWidth'] <= 992 || false this.$store.state.sidebarFold =
window.addEventListener('resize', debounce(() => { document.documentElement.clientWidth <= 992 || false
this.$store.state.sidebarFold = document.documentElement['clientWidth'] <= 992 || false window.addEventListener(
}, 150)) 'resize',
debounce(() => {
this.$store.state.sidebarFold =
document.documentElement.clientWidth <= 992 || false
}, 150)
)
}, },
// , // ,
routeHandle (route) { routeHandle (route) {
@ -69,52 +75,66 @@ export default {
} }
let tab = {} let tab = {}
let routeName = route.name let routeName = route.name
let routeMeta = route.meta const routeMeta = route.meta
if (route.name === 'iframe') { if (route.name === 'iframe') {
let url = route.query.url || '' const url = route.query.url || ''
if (!isURL(url)) { if (!isURL(url)) {
return false return false
} }
let key = route.query.key || new Date().getTime() const key = route.query.key || new Date().getTime()
routeName = `${routeName}_${key}` routeName = `${routeName}_${key}`
routeMeta.title = key.toString() routeMeta.title = key.toString()
routeMeta.menuId = route.query.menuId || '' routeMeta.menuId = route.query.menuId || ''
routeMeta.iframeURL = url routeMeta.iframeURL = url
} }
tab = this.$store.state.contentTabs.filter(item => item.name === routeName)[0] tab = this.$store.state.contentTabs.filter(
(item) => item.name === routeName
)[0]
if (!tab) { if (!tab) {
tab = { tab = {
...window.SITE_CONFIG['contentTabDefault'], ...window.SITE_CONFIG.contentTabDefault,
...routeMeta, ...routeMeta,
'name': routeName, name: routeName,
'params': { ...route.params }, params: { ...route.params },
'query': { ...route.query } query: { ...route.query }
} }
this.$store.state.contentTabs = this.$store.state.contentTabs.concat(tab) this.$store.state.contentTabs =
this.$store.state.contentTabs.concat(tab)
} }
this.$store.state.sidebarMenuActiveName = tab.menuId this.$store.state.sidebarMenuActiveName = tab.menuId
this.$store.state.contentTabsActiveName = tab.name this.$store.state.contentTabsActiveName = tab.name
}, },
// //
getUserInfo () { getUserInfo () {
return this.$http.get('/sys/user/info').then(({ data: res }) => { return this.$http
if (res.code !== 0) { .get('/sys/user/info')
return this.$message.error(res.msg) .then(({ data: res }) => {
} if (res.code !== 0) {
this.$store.state.user.id = res.data.id return this.$message.error(res.msg)
this.$store.state.user.name = res.data.username }
this.$store.state.user.superAdmin = res.data.superAdmin this.$store.state.user.id = res.data.id
}).catch(() => {}) this.$store.state.user.name = res.data.realName
this.$store.state.user.superAdmin = res.data.superAdmin
})
.catch(() => {})
}, },
// //
getPermissions () { getPermissions () {
return this.$http.get('/sys/menu/permissions').then(({ data: res }) => { return this.$http
if (res.code !== 0) { .get('/sys/menu/permissions')
return this.$message.error(res.msg) .then(({ data: res }) => {
} if (res.code !== 0) {
window.SITE_CONFIG['permissions'] = res.data return this.$message.error(res.msg)
}).catch(() => {}) }
window.SITE_CONFIG.permissions = res.data
})
.catch(() => {})
} }
} }
} }
</script> </script>
<style scoped lang="scss">
.aui-content__wrapper {
margin-left: 266px;
}
</style>

View File

@ -0,0 +1,463 @@
<template>
<div>
<el-dialog :visible.sync="addOrUpdateVisibleCopy" :title="modalTypeText[modalType]" @close="closeModal"
:close-on-click-modal="false" :close-on-press-escape="false">
<div class="first-title">
填写字段
</div>
<el-checkbox-group v-model="checkList" @change="changeBtn" style="margin-bottom: 20px">
<el-checkbox-button v-for="(item) in btnList" :label="item" :key="item">{{ item }}
</el-checkbox-button>
</el-checkbox-group>
<!-- 挂载和修改-->
<div key="1">
<el-form :model="dataForm" :rules="rules" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()"
:label-width="$i18n.locale === 'en-US' ? '120px' : 'auto'">
<!-- 基本信息 -->
<div style="margin-bottom:20px" v-show="checkList.includes('基本信息')">
<div style="
text-align: center;
font-weight: 600;
font-size: 18px;
margin-bottom: 10px;
">
基本信息
</div>
<el-form-item label="融合服务名称" prop="name">
<el-input class="input-box" v-model="dataForm.name" placeholder="请输入融合服务名称"></el-input>
</el-form-item>
<el-form-item label="融合服务描述" prop="description">
<el-input type="textarea" :rows="3" class="input-box" v-model="dataForm.description"
placeholder="请输入融合服务描述"></el-input>
</el-form-item>
<el-form-item label="应用领域" prop="applicationArea">
<el-select v-model="dataForm.applicationArea" placeholder="请选择应用领域" filterable>
<el-option v-for="item in areaList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="图片">
<el-upload ref="editUpload" class="upload-demo" :action="fileUploadUrl"
:on-success="eidtHandleAvatarSuccess" :before-upload="editBeforeAvatarUpload" :limit="1" :file-list="[]"
:on-remove="editUploadRemoveFile" :on-exceed="handleExceed" list-type="picture">
<el-button size="small" type="primary" class="button-new">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传图片文件</div>
<img v-if="imageUrl" :src="imageUrl" class="avatar" />
</el-upload>
</el-form-item>
</div>
<!-- 组合能力 -->
<div class="" style="marigin-bottom:40px" v-show="checkList.includes('组合能力')">
<div class="title">
组合能力
</div>
<InfrastructureModal v-model="dataForm" :dataForm="dataForm" @update="updateDataForm" type="基础设施"
:modalType="modalType" ref="jcssDom"></InfrastructureModal>
<combine-ability v-model="dataForm" :dataForm="dataForm" @update="updateDataForm" type="数据资源" ref="sjzyDom"
:getDataParams="getListParams['数据资源']"></combine-ability>
<combine-ability v-model="dataForm" :dataForm="dataForm" @update="updateDataForm" type="组件服务" ref="zjfwDom"
:getDataParams="getListParams['组件服务']"></combine-ability>
</div>
</el-form>
</div>
<template slot="footer">
<el-button @click="closeModal">{{ $t("cancel") }}</el-button>
<el-button type="primary" @click="dataFormSubmitHandle()">{{
$t("confirm")
}}</el-button>
</template>
</el-dialog>
</div>
</template>
<script>
import debounce from "lodash/debounce";
import qs from "qs";
import CommonQuestion from './components/common-question.vue';
import IntegratedCombineAbility from './components/integrated-combine-ability.vue';
import CombineAbility from './components/combine-ability.vue';
import Cookies from 'js-cookie'
import { tableColumns } from './IntegratedServices.vue';
import { getFuseResourceList, getListParams, modalTypeText } from "./assignedScene/add-update-scene.vue";
import InfrastructureModal from './assignedScene/components/infrastructure-modal.vue'
export default {
components: {
CommonQuestion,
IntegratedCombineAbility,
CombineAbility,
InfrastructureModal,
},
data() {
return {
fileUploadUrl: window.SITE_CONFIG.apiURL + '/upload',
dataForm: {
"name": "",
"applicationArea": "",
"description": "",
"fuseAttrList": [
{
"attrType": "服务图片",
"attrValue": "",
},
],
//
"fuseResourceList": [
{
"resourceId": 0,
"sequence": ""
}
],
type: '打包模式'
},
rules: {
name: [
{
required: true,
message: "请输入融合服务名称",
trigger: "change",
},
],
description: [
{
required: true,
message: "请输入融合服务描述",
trigger: "change",
},
],
},
btnList: ['基本信息', '组合能力'],
checkList: ['基本信息', '组合能力'],
areaList: [],
addOrUpdateVisibleCopy: this.addOrUpdateVisible,
displayInfo: tableColumns,
getListParams: getListParams,
refsParseArray: {
'zjfwDom': '组件服务',
'sjzyDom': '数据资源',
'jcssDom': '基础设施',
},
modalTypeText: modalTypeText,
abilityListObj: {},
//
handleExceed() {
this.$message({ type: 'error', message: '最多支持一张图片上传' })
},
imageUrl: ''
};
},
props: {
modalType: {
type: String,
default: 'add'
},
addOrUpdateVisible: {
type: Boolean,
default: false
}
},
watch: {
dataForm: {
handler(newVal) {
this.dataForm = newVal
},
deep: true,
immediate: true,
},
addOrUpdateVisible: {
handler(newVal) {
this.addOrUpdateVisibleCopy = newVal;
if (this.modalType == 'add' && newVal) {
this.getDetail(this.dataForm)
}
},
immediate: true,
},
},
mounted() {
//
this.getAreaInfo()
},
methods: {
clearForm() {
this.$refs.dataForm && this.$refs.dataForm.resetFields();
},
closeModal() {
this.$emit('closeModal')
},
//
getAreaInfo() {
const params = {
page: 1,
limit: 99,
dictTypeId: "1513712507692818433",
};
this.$http
.get("/sys/dict/data/page" + "?" + qs.stringify(params))
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
}
res.data.list.map((item) => {
this.areaList.push({
label: item.dictLabel,
value: item.dictLabel
});
});
}).catch(err => {
this.$message.error(err);
})
},
//
updateDataForm(data) {
if (Object.keys(this.getListParams).includes(data.title)) {
this.abilityListObj[data.title] = data.list;
}
},
getFuseResourceList() {
return getFuseResourceList(this.abilityListObj)
},
//
changeBtn(data) {
this.checkList = data;
},
//
dataFormSubmitHandle: debounce(
function () {
this.$refs.dataForm.validate((valid) => {
if (!valid) {
this.$message.error("请检查表单是否填写完整");
return false;
}
let methodsObj = {
'add': 'post',
'update': 'put'
}
this.dataForm.fuseResourceList = this.getFuseResourceList()
if (this.imageUrl == '') {
this.$message.error("请上传图片!");
return;
}
this.dataForm.fuseAttrList.find(v => v.attrType == '服务图片').attrValue = this.imageUrl || '';
this.$http
[methodsObj[this.modalType]]("/fuse", 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.$refs.dataForm && this.$refs.dataForm.resetFields();
this.$emit("refreshDataList");
this.$emit("closeModal");
},
});
})
.catch((err) => {
this.$message.error(err)
});
});
},
1000,
{ leading: true, trailing: false }
),
//
getDetail(data) {
this.dataForm = data;
this.$nextTick(() => {
for (const key in this.refsParseArray) {
this.$refs[key] && this.$refs[key].getDataInfo && this.$refs[key].getDataInfo(data)
}
let _imgObj = data.fuseAttrList.find(v => v.attrType == '服务图片') || {};
this.imageUrl = _imgObj.attrValue;
//
Object.keys(this.getListParams).map(k => {
let arr = data.fuseResourceList.filter(v => v.type == k);
let arr2 = [];
arr.map(v => {
arr2.push(v.resourceId)
})
this.abilityListObj[k] = arr2
})
console.log('this.dataForm----详情-------->', this.dataForm);
})
},
beforeAvatarUpload(file) {
const isImage =
file.type === 'image/jpeg' ||
file.type === 'image/jpg' ||
file.type === 'image/png'
if (!isImage) {
this.$message.error('上传头像图片只能是 jpg/png 格式!')
}
return isImage
},
addUploadRemoveFile(file, fileList) {
this.$refs.addUpload.clearFiles()
this.imageUrl = ''
},
editBeforeAvatarUpload(file) {
const isImage =
file.type === 'image/jpeg' ||
file.type === 'image/jpg' ||
file.type === 'image/png'
if (!isImage) {
this.$message.error('上传头像图片只能是 jpg/png 格式!')
}
return isImage
},
editUploadRemoveFile(file, fileList) {
this.$refs.editUpload.clearFiles()
this.imageUrl = ''
},
eidtHandleAvatarSuccess(res, file) {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.imageUrl = res.data
},
},
beforeDestroy() {
this.clearForm()
},
};
</script>
<style lang="scss" scoped>
::v-deep .el-dialog__body {
height: 580px;
overflow: auto;
}
.icon-input ::v-deep .el-input__inner {
cursor: pointer;
}
.detial-form ::v-deep {
.el-form-item {
margin-bottom: 0px;
line-height: 32px;
}
.el-form-item__label {
line-height: 32px;
}
.el-form-item__content {
line-height: 32px;
}
}
::v-deep .el-checkbox-button__inner {
width: 130px;
margin: 0 10px 5px;
border-left: unset !important;
border-radius: unset !important;
border: 1px solid #dcdfe6 !important;
}
</style>
<style lang="scss">
.mod-sys__menu {
.menu-list,
.icon-list {
.el-input__inner,
.el-input__suffix {
cursor: pointer;
}
}
&-icon-popover {
width: 458px;
overflow: hidden;
}
&-icon-inner {
width: 478px;
max-height: 258px;
overflow-x: hidden;
overflow-y: auto;
}
&-icon-list {
width: 458px;
padding: 0;
margin: -8px 0 0 -8px;
>.el-button {
padding: 8px;
margin: 8px 0 0 8px;
>span {
display: inline-block;
vertical-align: middle;
width: 18px;
height: 18px;
font-size: 18px;
}
}
}
}
.previewImg {
position: fixed;
z-index: 9999;
}
.name {
text-align: right;
vertical-align: middle;
font-size: 14px;
color: #606266;
line-height: 40px;
padding: 0 12px 0 0;
-webkit-box-sizing: border-box;
box-sizing: border-box;
line-height: 32px;
width: 120px;
}
.text {
margin-left: 132px;
font-size: 14px;
color: #606266;
line-height: 32px;
}
.input-box {
width: 90%;
}
.first-title {
text-align: center;
font-weight: 600;
font-size: 18px;
margin-bottom: 10px;
}
.title {
text-align: center;
font-weight: 600;
font-size: 18px;
margin-bottom: 10px;
}
.avatar {
height: 100px;
width: 100px;
display: block;
}
</style>

View File

@ -0,0 +1,179 @@
<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 @click="searchData">{{
$t("query")
}}</el-button>
</el-form-item>
<el-form-item>
<el-button v-if="$hasPermission('ability:bsabilityai:save')" type="primary" @click="addServe()">挂接</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"
style="width: 100%" :height="qp ? '810px' : '650px'">
<el-table-column v-for="(item) in Object.keys(tableColumns)" :key="item" :prop="item"
:label="tableColumns[item]" 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"
@click="handleUpdate(scope.row)">{{ $t("update") }}</el-button>
<el-button v-if="$hasPermission('ability:bsabilityai:delete')" type="text" size="small"
@click="deleteRow(scope.row.id)">{{ $t("delete") }}</el-button>
<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="Number(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="query" @closeModal="closeModal"
:addOrUpdateVisible="addOrUpdateVisible" :modalType="modalType">
</add-or-update>
</div>
</el-card>
</template>
<script>
import mixinViewModule from "@/mixins/view-module";
import AddOrUpdate from "./IntegratedServices-add";
import qs from "qs";
import { type } from "os";
export const tableColumns = {
'name': '名称',
'description': '描述',
'applicationArea': '应用领域',
}
export default {
mixins: [mixinViewModule],
data() {
return {
// --
tableColumns: tableColumns,
tableData: [],
mixinViewModuleOptions: {
getDataListURL: "/fuse/page",
exportURL: "/ability/bsabilityai/export",
deleteURL: "/fuse",
getDataListIsPage: true,
deleteIsBatch: false,
},
dataForm: {
name: "",
order: 'desc',
orderField: 'create_date',
type: '打包模式'
},
qp: false,
modalType: 'add',
};
},
components: {
AddOrUpdate,
},
mounted() {
window.addEventListener("resize", this.a);
this.fullScreen();
},
methods: {
deleteRow(id) {
this.$http.delete('/fuse/delete', {
data: [id]
}).then(res => {
console.log('删除成功', res)
if (res.data.code !== 0) {
return this.$message.error(res.msg);
}
this.$message({
message: '删除成功',
type: "success",
duration: 500,
onClose: () => {
this.query()
},
});
}).catch(err => {
this.$message.error(err);
})
},
//
searchData() {
this.query()
},
//
reset() {
this.dataForm.name = "";
this.query()
},
//
handleUpdate(val) {
this.addOrUpdateVisible = true;
this.modalType = 'update';
const cloneVal = JSON.parse(JSON.stringify(val))
this.$nextTick(() => {
this.$refs.addOrUpdate.getDetail(cloneVal)
})
},
//
addServe() {
this.addOrUpdateVisible = true
this.modalType = 'add';
},
closeModal() {
this.addOrUpdateVisible = false;
},
//
showDetail(val) {
window.open(window.SITE_CONFIG.previewUrl + '#/packagingDetails?id=' + val.id)
},
// showDocument(val) {
// console.log(val);
// window.open(
// window.SITE_CONFIG.frontUrl + "?id=" + val.id + "&&type=" + val.type,
// "_blank"
// );
// },
fullScreen() {
if (window.outerHeight === screen.availHeight) {
if (window.outerWidth === screen.availWidth) {
console.log(
"全屏1",
);
this.qp = false;
} else {
console.log(
"不是全屏2",
);
this.qp = true;
}
} else {
console.log(
"不是全屏3",
);
this.qp = true;
}
},
},
};
</script>
<style lang="scss" scoped>
.el-tooltip__popper {
max-width: 50%;
}
</style>

View File

@ -0,0 +1,567 @@
<template>
<div>
<el-dialog :visible.sync="addOrUpdateVisibleCopy" :title="modalTypeText[modalType]" @close="closeModal"
:close-on-click-modal="false" :close-on-press-escape="false">
<div class="first-title">
填写字段
</div>
<el-checkbox-group v-model="checkList" @change="changeBtn" style="margin-bottom: 20px">
<el-checkbox-button v-for="(item) in btnList" :label="item" :key="item">{{ item }}
</el-checkbox-button>
</el-checkbox-group>
<!-- 挂载和修改 -->
<div key="1">
<el-form :model="dataForm" :rules="rules" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()"
:label-width="$i18n.locale === 'en-US' ? '120px' : '100px'">
<!-- 基本信息 -->
<div style="margin-bottom:40px" v-show="checkList.includes('基本信息')">
<div style="
text-align: center;
font-weight: 600;
font-size: 18px;
margin-bottom: 10px;
">
基本信息
</div>
<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-upload ref="editUpload" class="upload-demo" :action="fileUploadUrl"
:on-success="eidtHandleAvatarSuccess" :before-upload="editBeforeAvatarUpload" :limit="1" :file-list="[]"
:on-remove="editUploadRemoveFile" :on-exceed="handleExceed" list-type="picture">
<el-button size="small" type="primary" class="button-new">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传图片文件</div>
<img v-if="imageUrl" :src="imageUrl" class="avatar" />
</el-upload>
</el-form-item>
</div>
<!-- 场景痛点 -->
<div class="" style="padding-bottom:40px" v-show="checkList.includes('场景痛点')">
<scene-one-input :dataForm="dataForm" @update="updateDataForm" ref="scenePainDom" title="场景痛点"
:keyTextObj="painKeyTextObj"></scene-one-input>
</div>
<!-- 解决方案 -->
<div class="" style="padding-bottom:40px" v-show="checkList.includes('解决方案')">
<scene-one-input :dataForm="dataForm" @update="updateDataForm" ref="solutionDom" title="解决方案"
:keyTextObj="solutionKeyTextObj"></scene-one-input>
</div>
<!-- 组合能力 -->
<div class="" style="padding-bottom:40px" v-show="checkList.includes('组合能力')">
<div class="title">
组合能力
</div>
<InfrastructureModal v-model="dataForm" :dataForm="dataForm" @update="updateDataForm" type="基础设施"
:modalType="modalType" ref="jcssDom"></InfrastructureModal>
<combine-ability v-model="dataForm" :dataForm="dataForm" @update="updateDataForm" type="数据资源" ref="sjzyDom"
:getDataParams="getListParams['数据资源']"></combine-ability>
<combine-ability v-model="dataForm" :dataForm="dataForm" @update="updateDataForm" type="组件服务" ref="zjfwDom"
:getDataParams="getListParams['组件服务']"></combine-ability>
</div>
<!-- 更多能力 -->
<div class="" style="marigin-bottom:40px" v-show="checkList.includes('更多能力')">
<common-question :dataForm="dataForm" @update="updateDataForm" ref="moreAbilityDom" title="更多能力"
:keyTextObj="moreKeyTextObj">
</common-question>
</div>
<!-- 使用步骤 -->
<div style="marigin-bottom:20px" v-show="checkList.includes('使用步骤')">
<scene-use-step :dataForm="dataForm" @update="updateDataForm" ref="sceneUseUpDom">
</scene-use-step>
</div>
</el-form>
</div>
<template slot="footer">
<el-button @click="closeModal">{{ $t("cancel") }}</el-button>
<el-button type="primary" @click="dataFormSubmitHandle()">{{
$t("confirm")
}}</el-button>
</template>
</el-dialog>
</div>
</template>
<script>
import debounce from 'lodash/debounce'
import qs from 'qs'
import SceneUseStep from './components/scene-use-step.vue'
import SceneOneInput from './components/scene-one-input.vue'
import CombineAbility from '../components/combine-ability.vue'
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) => {
if (type === '组件服务') {
return {
methods: 'get',
url: '/census/center/selectResourceListByType',
postData: {
type
}
}
} else {
return {
methods: 'post',
url: '/resource/getDataResource',
postData: {
serviceName: '', //
orderField: 'fbrq', //
orderType: 'desc',
pageNum: 1, //
pageSize: 15 //
}
}
}
}
export const getDescJson = (text) => {
return {
descObj: {
text: `${text}描述`,
key: 'description'
}
}
}
//
export const getListParams = {
数据资源: getJson('数据资源'),
组件服务: getJson('组件服务'),
基础设施: ''
}
//
export const modalTypeText = {
add: '挂接',
update: '修改'
}
export const getFuseResourceList = (abilityListObj) => {
const arr = []
let length = 0
for (const key in abilityListObj) {
if (Object.hasOwnProperty.call(abilityListObj, key)) {
const itemArray = abilityListObj[key]
itemArray.map((v, i) => {
const index = (i + 1) + length
arr.push({
resourceId: v,
type: key,
sequence: index
})
})
length = itemArray.length
}
}
return arr
}
export default {
components: {
SceneUseStep,
CombineAbility,
SceneOneInput,
upload,
CommonQuestion,
InfrastructureModal
},
data () {
return {
fileUploadUrl: window.SITE_CONFIG.apiURL + '/upload',
moreKeyTextObj: {
nameObj: {
text: '能力名称',
key: 'name'
},
...getDescJson('能力')
},
painKeyTextObj: getDescJson('痛点'),
solutionKeyTextObj: getDescJson('方案'),
dataForm: {
name: '',
applicationArea: '',
description: '',
fuseAttrList: [
{
attrType: '使用步骤',
attrValue: [{ question: '', answer: '' }]
},
{
attrType: '更多能力',
attrValue: [{ name: '', description: '' }]
},
{
attrType: '场景痛点',
attrValue: [{ description: '' }]
},
{
attrType: '解决方案',
attrValue: [{ description: '' }]
},
{
attrType: '服务图片',
attrValue: ''
}
],
fuseResourceList: []
},
rules: {
name: [
{
required: true,
message: '请输入名称',
trigger: 'change'
}
],
description: [
{
required: true,
message: '请输入描述',
trigger: 'change'
}
]
},
checkList: JSON.parse(JSON.stringify(btnArray)),
btnList: JSON.parse(JSON.stringify(btnArray)),
addOrUpdateVisibleCopy: this.addOrUpdateVisible,
displayInfo: {
name: '名称',
description: '描述'
},
modalTypeText: modalTypeText,
refsParseArray: {
sceneUseUpDom: '使用步骤',
moreAbilityDom: '更多能力',
scenePainDom: '场景痛点',
solutionDom: '解决方案',
zjfwDom: '组件服务',
sjzyDom: '数据资源',
jcssDom: '基础设施'
},
getListParams: getListParams,
abilityListObj: {},
imgData: [],
//
handleExceed () {
this.$message({ type: 'error', message: '最多支持一张图片上传' })
},
imageUrl: ''
}
},
props: {
modalType: {
type: String,
default: 'add'
},
addOrUpdateVisible: {
type: Boolean,
default: false
}
},
watch: {
dataForm: {
handler (newVal) {
this.dataForm = newVal
},
deep: true,
immediate: true
},
addOrUpdateVisible: {
handler (newVal) {
this.addOrUpdateVisibleCopy = newVal
if (this.modalType == 'add' && newVal) {
localStorage.setItem('InfrastructureSearchData', JSON.stringify({}))
this.getDetail(this.dataForm)
}
},
immediate: true
}
},
methods: {
clearForm () {
this.$refs.dataForm && this.$refs.dataForm.resetFields()
},
closeModal () {
this.$emit('closeModal')
},
//
updateDataForm (data) {
if (Object.keys(this.getListParams).includes(data.title)) {
this.abilityListObj[data.title] = data.list
} else {
// 使
this.operateFuseAttrList(data.title, data)
}
},
getFuseResourceList () {
return getFuseResourceList(this.abilityListObj)
},
operateFuseAttrList (title, data) {
if (this.dataForm.fuseAttrList.every(v => v.attrType !== title)) {
this.dataForm.fuseAttrList.push({
attrType: title,
attrValue: JSON.stringify(data.list)
})
} else {
this.dataForm.fuseAttrList.map(v => {
if (v.attrType === title) {
v.attrValue = JSON.stringify(data.list)
}
})
}
},
//
changeBtn (data) {
this.checkList = data
},
//
dataFormSubmitHandle: debounce(
function () {
this.$refs.dataForm.validate((valid) => {
if (!valid) {
this.$message.error('请检查表单是否填写完整')
return false
}
const methodsObj = {
add: 'post',
update: 'put'
}
this.dataForm.fuseResourceList = this.getFuseResourceList()
if (this.imageUrl == '') {
this.$message.error('请上传图片!')
return
}
this.dataForm.fuseAttrList.find(v => v.attrType == '服务图片').attrValue = this.imageUrl || ''
const _obj = Object.assign({}, this.dataForm, {
type: '赋能场景'
})
console.log('this.dataForm------表单提交------>', this.dataForm)
this.$http
[methodsObj[this.modalType]]('/fuse', _obj)
.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.$refs.dataForm && this.$refs.dataForm.resetFields()
this.$emit('refreshDataList')
this.$emit('closeModal')
}
})
})
.catch((err) => {
this.$message.error(err)
})
})
},
1000,
{ leading: true, trailing: false }
),
//
getDetail (data) {
console.log('data---详情--------->', data)
this.dataForm = data
this.$nextTick(() => {
for (const key in this.refsParseArray) {
this.$refs[key] && this.$refs[key].getDataInfo && this.$refs[key].getDataInfo(data)
}
const _imgObj = data.fuseAttrList.find(v => v.attrType == '服务图片') || {}
this.imageUrl = _imgObj.attrValue
// --
Object.keys(this.getListParams).map(k => {
const arr = data.fuseResourceList.filter(v => v.type == k)
const arr2 = []
arr.map(v => {
arr2.push(v.resourceId)
})
this.abilityListObj[k] = arr2
})
})
},
handleAvatarSuccess (res, file) {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.imageUrl = res.data
},
beforeAvatarUpload (file) {
const isImage =
file.type === 'image/jpeg' ||
file.type === 'image/jpg' ||
file.type === 'image/png'
if (!isImage) {
this.$message.error('上传头像图片只能是 jpg/png 格式!')
}
return isImage
},
addUploadRemoveFile (file, fileList) {
this.$refs.addUpload.clearFiles()
this.imageUrl = ''
},
editBeforeAvatarUpload (file) {
const isImage =
file.type === 'image/jpeg' ||
file.type === 'image/jpg' ||
file.type === 'image/png'
if (!isImage) {
this.$message.error('上传头像图片只能是 jpg/png 格式!')
}
return isImage
},
editUploadRemoveFile (file, fileList) {
this.$refs.editUpload.clearFiles()
this.imageUrl = ''
},
eidtHandleAvatarSuccess (res, file) {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.imageUrl = res.data
}
},
beforeDestroy () {
this.clearForm()
}
}
</script>
<style lang="scss" scoped>
::v-deep .el-dialog__body {
height: 580px;
overflow: auto;
}
.icon-input ::v-deep .el-input__inner {
cursor: pointer;
}
.detial-form ::v-deep {
.el-form-item {
margin-bottom: 0px;
line-height: 32px;
}
.el-form-item__label {
line-height: 32px;
}
.el-form-item__content {
line-height: 32px;
}
}
::v-deep .el-checkbox-button__inner {
width: 130px;
margin: 0 10px 5px;
border-left: unset !important;
border-radius: unset !important;
border: 1px solid #dcdfe6 !important;
}
</style>
<style lang="scss" scoped>
.mod-sys__menu {
.menu-list,
.icon-list {
.el-input__inner,
.el-input__suffix {
cursor: pointer;
}
}
&-icon-popover {
width: 458px;
overflow: hidden;
}
&-icon-inner {
width: 478px;
max-height: 258px;
overflow-x: hidden;
overflow-y: auto;
}
&-icon-list {
width: 458px;
padding: 0;
margin: -8px 0 0 -8px;
> .el-button {
padding: 8px;
margin: 8px 0 0 8px;
> span {
display: inline-block;
vertical-align: middle;
width: 18px;
height: 18px;
font-size: 18px;
}
}
}
}
.previewImg {
position: fixed;
z-index: 9999;
}
.name {
text-align: right;
vertical-align: middle;
font-size: 14px;
color: #606266;
line-height: 40px;
padding: 0 12px 0 0;
-webkit-box-sizing: border-box;
box-sizing: border-box;
line-height: 32px;
width: 120px;
}
.text {
margin-left: 132px;
font-size: 14px;
color: #606266;
line-height: 32px;
}
.title {
text-align: center;
font-weight: 600;
font-size: 18px;
margin-bottom: 10px;
}
.first-title {
text-align: center;
font-weight: 600;
font-size: 18px;
margin-bottom: 10px;
}
.avatar {
height: 100px;
width: 100px;
display: block;
}
</style>

View File

@ -0,0 +1,79 @@
<template>
<div class="show-box" v-if="displayList.length > 0">
<div class="list-box">
<div v-for="(item, i) in displayList" :key="i">
<div class="list-item">
{{ item[showKey] || '--' }}
</div>
</div>
</div>
</div>
</template>
<script>
export default {
props: {
displayList: {
type: Array,
default: () => []
},
showKey: {
type: String,
default: 'name'
},
},
watch: {
displayList: {
handler(newVal) {
this.displayList = newVal;
},
deep: true,
immediate: true,
}
}
}
</script>
<style lang="scss" scoped>
.show-box {
display: flex;
justify-content: flex-start;
align-items: flex-start;
}
.top {
display: flex;
align-items: center;
justify-content: flex-start;
}
.type {
padding-right: 12px;
font-size: 14px;
color: #606266;
width: 100px;
box-sizing: border-box;
text-align: right;
line-height: 40px;
height: 40px;
}
.list-box {
display: flex;
align-items: center;
justify-content: flex-start;
flex-wrap: wrap;
margin-left: 100px;
}
.list-item {
font-size: 14px;
color: #606266;
width: 380px;
text-align: left;
margin-right: 10px;
line-height: 40px;
height: 40px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
</style>

View File

@ -0,0 +1,535 @@
<template>
<div>
<div class="top flex-row-start">
<div class="type">{{ type }}</div>
<el-button type="primary" size="small" @click="showModal = true">{{ modalType == 'add' ? '添加' : '编辑' }}
</el-button>
</div>
<el-dialog class="modal-box" :visible.sync="showModal" title="请选择" @close="close" :close-on-click-modal="false"
:close-on-press-escape="false" :key="showKey" append-to-body>
<div class="infrastructure-box">
<div class="search-box">
<div class="flex-row-start" style="margin-bottom:10px">
<div class="left-text">设施类型</div>
<div class="flex-row-start btn-list">
<div class="btn-text" v-for="(item) in btnList" :key="item"
:class="{ 'active-btn': item === activeBtn }" @click="changeBtn(item)">
{{ item }}
</div>
</div>
</div>
<div class="flex-row-start" style="margin-bottom:10px;align-items: flex-start;">
<div class="left-text" style="margin-top: 8px;">{{ showText[activeBtn] }}</div>
<div style="flex:1;">
<el-button v-if="activeBtn == '视频资源'" type="primary"
style="margin-left:10px;margin-bottom:10px" size="small" @click="clearVideo">清空
</el-button>
<div class="flex-row-start btn-list video-btn-list">
<div class="btn-text" v-for="(item) in currentList" :key="item.labelCode"
:class="{ 'active-btn': checkList.includes(item.labelCode) }"
@click="changeVideoBtn(item)">
{{ item.labelName }}
</div>
</div>
</div>
</div>
<div class="flex-row-start" style="margin-bottom:10px;align-items: flex-start;">
<div class="left-text" style="margin-top: 10px;">关键词</div>
<el-input style="margin-left:10px;width: 200px;" v-model="searchData.cameraName"
placeholder="名称" clearable>
</el-input>
<el-button type="primary" style="margin-left:10px;margin-top:4px" size="small" @click="getData">
搜索
</el-button>
<el-button type="primary" style="margin-left:10px;margin-top:4px" size="small" @click="clear">
重置
</el-button>
<el-button type="primary" style="margin-left:10px;margin-top:4px" size="small"
@click="clearSelectArray">
清空已选择
</el-button>
</div>
</div>
<div class="tree-table-box">
<InfrastructureTree @changeParentId="changeParentId"></InfrastructureTree>
<div class="table-box">
<el-table v-loading="dataListLoading" :data="dataList" border ref="dataTable"
@selection-change="dataListSelectionChangeHandle"
style="width: 95%;margin: 0 auto 10px auto" size="mini">
<el-table-column type="selection" header-align="center" align="center" width="50">
</el-table-column>
<el-table-column prop="channelName" label="名称" header-align="center" align="center">
</el-table-column>
<el-table-column prop="nodeName" label="归属" header-align="center" align="center">
</el-table-column>
</el-table>
<el-pagination style="justify-content: center;display: flex;" :current-page="searchData.pageNum"
:page-sizes="[10, 20, 50, 100]" :page-size="searchData.pageSize" :total="pageData.total"
layout="total, sizes, prev, pager, next, jumper" @size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
</div>
</div>
</div>
<template slot="footer">
<el-button @click="showModal = false">{{ $t("cancel") }}</el-button>
<el-button type="primary" @click="confirmSubmitHandle()">{{
$t("confirm")
}}</el-button>
</template>
</el-dialog>
<DisplayList :displayList="displayList" showKey="channelName"></DisplayList>
</div>
</template>
<script>
import InfrastructureTree from './infrastructure-tree.vue'
import DisplayList from './display-list.vue';
export default {
components: {
InfrastructureTree,
DisplayList
},
props: {
//
maxNum: {
type: Number,
default: 10
},
type: {
type: String,
default: "基础设施"
},
modalType: {
type: String,
default: 'add'
}
},
data() {
const getYunList = () => {
let yunList = ['云主机', '算力主机', '对象存储', '堡垒机', '防火墙', '网闸', '负载均衡', '公网IP'];
let arr = []
yunList.map(v => arr.push({ labelCode: v, labelName: v }))
return arr
}
return {
showKey: 0,
showModal: false,
selectedArray: [], // id
selectedArrayCopy: [],
displayList: [], // list
btnList: ['视频资源', '云资源', '感知资源'],
showText: {
'视频资源': '视频标签',
'云资源': '云资源分类',
'感知资源': '感知资源分类',
},
tabData: [
{
tabName: '视频资源',
list: []
},
{
tabName: '云资源',
list: getYunList()
},
{
tabName: '感知资源',
list: []
},
],
currentList: [],
dataListLoading: false,
dataList: [],
pageData: {
total: 0,
},
cameraName: '',
postData: {},
activeBtn: '视频资源',
checkList: [],
searchData: {
cameraName: '',
pageSize: 10,
pageNum: 1,
parentId: ''
},
dataFormCopy: {}
}
},
watch: {
async showModal(newVal) {
if (newVal) {
//
this.$nextTick(() => {
this.selectCheckbox()
})
if (this.modalType == 'add') {
this.clear()
}
}
}
},
mounted() {
//
this.getVideoBtn()
},
methods: {
selectCheckbox() {
if (this.selectedArray.length > 0) {
let list = []
this.dataList.forEach((item) => {
this.selectedArray.forEach(val => {
if (val === item.idtCameraChannel) {
list.push(item)
}
})
})
if (list.length) {
list.forEach((row) => {
this.$refs.dataTable && this.$refs.dataTable.toggleRowSelection(row, true)
})
}
}
},
showAction() {
this.showModal = true;
},
//
async getDataInfo(dataForm) {
this.modalType == 'edit'
this.dataFormCopy = dataForm;
await this.getVideoBtn();
let arr = [];
let attrValue = dataForm.fuseResourceList.filter(v => v.type == this.type);
if (attrValue.length > 0) {
attrValue.map(val => {
let _obj = Object.assign({}, val, val.resource)
arr.push(_obj);
});
}
//
this.displayList = JSON.parse(JSON.stringify(arr));
//
this.selectedArray = arr.map(v => v.idtCameraChannel);
this.selectedArrayCopy = JSON.parse(JSON.stringify(arr));
this.dataList = JSON.parse(JSON.stringify(arr));
this.pageData.total = arr.length;
//
this.$nextTick(() => {
this.selectCheckbox()
})
},
//
dataListSelectionChangeHandle(data) {
this.selectedArray = data;
},
pageCurrentChangeHandle(pageNum) {
this.searchData.pageNum = pageNum;
this.getData()
},
pageSizeChangeHandle(pageSize) {
this.searchData.pageSize = pageSize;
this.getData()
},
changeBtn(btn) {
this.activeBtn = btn;
this.currentList = this.tabData.find(v => v.tabName == btn).list || [];
this.checkList = [];
this.searchData.cameraName = '';
this.getData()
},
//
getVideoBtn() {
return new Promise((resolve, reject) => {
this.$http.get('/api/project/selectAllLabel', {}).then(res => {
resolve(res)
if (res.data.code !== 1) {
return this.$message.error(res.msg);
}
this.tabData[0].list = res.data.data || [];
this.$nextTick(() => {
this.currentList = this.tabData.find(v => v.tabName == this.activeBtn).list || [];
if (this.modalType == 'add') {
this.clear()
}
})
}).catch(err => {
reject(err)
this.$message.error(err);
})
})
},
// -
clearVideo() {
this.checkList = []
this.getData()
},
//
changeVideoBtn(item) {
let _index = this.checkList.findIndex(v => item.labelCode == v)
if (_index > -1) {
this.checkList.splice(_index, 1)
} else {
this.checkList.push(item.labelCode)
}
this.$nextTick(() => {
this.getData()
})
},
//
getData() {
let postData = Object.assign({}, {
checkStatus: 1,
gpsX: '',
gpsY: '',
radius: '',
labelCodes: this.checkList.join(),
}, this.searchData);
return new Promise((resolve, reject) => {
this.$http.get('/api/project/selectByParentIdNew', { params: postData }).then(res => {
resolve(res)
if (res.data.code !== 1) {
return this.$message.error(res.msg);
}
this.dataList = res.data.data || []
this.pageData.total = res.data.count || 0;
}).catch(err => {
reject(err)
this.$message.error(err);
})
})
},
changeParentId(parentId) {
this.searchData.parentId = parentId;
this.getData(parentId)
},
clearSelectArray() {
this.selectedArrayCopy = []
this.selectedArray = []
this.getData()
},
confirmSubmitHandle() {
//
let idtCameraChannelArray = this.selectedArray.map(v => v.idtCameraChannel)
//
let newIdArray = this.selectedArrayCopy.map(v => v.idtCameraChannel)
let idArray = [...new Set(newIdArray.concat(idtCameraChannelArray))]
if (idArray.length > this.maxNum) {
return this.$message.error('最多选择十条数据!');
}
let listArray = [].concat(this.selectedArrayCopy, this.dataList);
this.displayList = [];
idArray.map(v => {
let obj = listArray.find(k => k.idtCameraChannel === v)
if (obj) {
this.displayList.push({
channelName: obj.channelName
})
}
})
this.$emit('update', {
title: this.type,
list: idArray,
})
this.showModal = false;
},
close() {
this.showModal = false;
this.searchData.cameraName = ''
// this.selectedArray = [];
this.$emit('closeModal');
},
clear() {
this.changeBtn('视频资源')
},
}
}
</script>
<style lang="scss" scoped>
.ability-box {
margin-bottom: 10px;
.show-box {
display: flex;
justify-content: flex-start;
align-items: flex-start;
}
.top {
display: flex;
align-items: center;
justify-content: flex-start;
}
.type {
padding-right: 12px;
font-size: 14px;
color: #606266;
width: 100px;
box-sizing: border-box;
text-align: right;
line-height: 40px;
height: 40px;
}
.list-box {
display: flex;
align-items: center;
justify-content: flex-start;
flex-wrap: wrap;
margin-left: 100px;
}
.list-item {
font-size: 14px;
color: #606266;
width: 380px;
text-align: left;
margin-right: 10px;
line-height: 40px;
height: 40px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.flex-row-start {
display: flex;
align-items: center;
justify-content: flex-start;
}
::v-deep .el-dialog {
width: 70%;
}
.modal-box {
.btn-list {
margin-left: 10px;
flex: 1;
}
.left-text {
width: 90px;
text-align: right;
}
.btn-text {
height: 30px;
line-height: 30px;
// width: 80px;
padding: 0 10px;
text-align: center;
border-radius: 15px;
border: 1px solid #ccc;
margin-right: 15px;
cursor: pointer;
box-sizing: border-box;
margin-bottom: 10px;
font-size: 12px;
&:hover {
color: #0058e1;
}
}
.active-btn {
background: #0058e1;
color: #fff;
border: none;
border: 1px solid #0058e1;
&:hover {
color: #FFF;
}
}
.video-btn-list {
flex-wrap: wrap;
}
}
.top {
margin-bottom: 10px;
.type {
padding-right: 12px;
font-size: 14px;
color: #606266;
width: 100px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
text-align: right;
line-height: 40px;
height: 40px;
}
}
.tree-table-box {
display: flex;
align-items: flex-start;
justify-content: center;
}
.table-box {
width: calc(100% - 400px);
}
</style>
<style lang="scss" scoped>
::v-deep .el-input {
width: 200px;
}
.icon-input ::v-deep .el-input__inner {
cursor: pointer;
}
::v-deep .el-dialog__body {
height: 580px;
overflow: auto;
}
::v-deep .el-checkbox-button__inner {
width: 130px;
margin: 0 10px 5px;
border-left: unset !important;
border-radius: unset !important;
border: 1px solid #dcdfe6 !important;
}
.relate-application-content {
height: 100%;
::v-deep .el-transfer {
height: 100%;
}
::v-deep .el-transfer-panel {
width: 39.5%;
height: 100%;
}
::v-deep .el-transfer-panel__body {
height: 100%;
}
::v-deep .el-transfer-panel__list.is-filterable {
height: calc(100% - 102px);
}
}
</style>

View File

@ -0,0 +1,314 @@
<template>
<div class="wrapper">
<div class="wrapper-title-left-tree" :key="showKey">
<div v-for="item in treeData" :key="item.id" class="primaryNode">
<div class="top" @click="showBottom(item)" :class="item.show ? 'topSelect' : ''">
{{ item.name }}
({{ item.channelCount }})
<i class="el-icon-arrow-down" v-show="!item.show"></i>
<i class="el-icon-arrow-top" v-show="item.show"></i>
</div>
<div class="bottom" v-show="item.show">
<div v-for="val in item.children" :key="val.id" class="item">
<div class="up" :class="selectId == val.id ? 'select' : ''"
@click="showDown(item, val), onSelect(item, val)">
<div>
<svg t="1654068878091" class="icon" viewBox="0 0 1024 1024" version="1.1"
xmlns="http://www.w3.org/2000/svg" p-id="2156" width="25px" height="25px"
v-show="selectId == val.id">
<path d="M512 624a112 112 0 1 0 0-224 112 112 0 0 0 0 224z" p-id="2157"
fill="#0058e1"></path>
</svg>
<span class="name">{{ val.name }}({{ val.channelCount }})</span>
</div>
<span v-if="item.children.length < 0">{{ val.total }}</span>
<span v-else>
<i class="el-icon-arrow-down" v-show="!val.show"></i>
<i class="el-icon-arrow-top" v-show="val.show"></i>
</span>
</div>
<div class="down" v-show="val.show">
<div v-for="child in val.children" :key="child.id" class="child"
:class="selectId == child.id ? 'select2' : ''" @click="onSelect(item, child, child)">
<div>
<svg t="1654068878091" class="icon" viewBox="0 0 1024 1024" version="1.1"
xmlns="http://www.w3.org/2000/svg" p-id="2156" width="25px" height="25px"
v-show="selectId == child.id">
<path d="M512 624a112 112 0 1 0 0-224 112 112 0 0 0 0 224z" p-id="2157"
fill="#0058e1"></path>
</svg>
<span class="name">
{{ child.name }}
</span>
</div>
<span>{{ child.channelCount }}</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
selectedKeys: [],
checkedKeys: [],
showKey: 0,
treeData: [],
selectId: '',
value: '',
}
},
watch: {
checkedKeys(val) {
if (val.checked.length > 1) {
val.checked.halfChecked = val.checked.shift()
}
},
},
mounted() {
this.init()
},
methods: {
getCameraAllOrgan(params) {
return new Promise((resolve, reject) => {
this.$http.get('/api/project/selectSubOrganNew', { params }).then(res => {
resolve(res)
}).catch(err => {
reject(err)
})
})
},
init() {
this.treeData = []
this.getCameraAllOrgan({ parentId: 'S4NbecfYB1DBH8HNULGS34' }).then(
(res) => {
if (res.data.code !== 1) {
return this.$message.error(res.msg);
}
this.treeData = res.data.data
}).catch(err => {
this.$message.error(err);
})
},
onSelect(item, val, child) {
this.$emit('changeParentId', val.id)
this.getCameraAllOrgan({ parentId: val.id }).then((res) => {
if (res.data.code !== 1) {
return this.$message.error(res.msg);
}
this.treeData.map((treeDataItem, index) => {
if (item.id == treeDataItem.id) {
this.treeData[index].children.map((childItem, childIndex) => {
if (childItem.id == val.id) {
this.treeData[index].children[childIndex].children =
res.data.data;
this.$nextTick(() => {
this.treeData = this.treeData.splice(0)
})
}
})
}
})
}).catch(err => {
this.$message.error(err);
})
if (child) {
this.selectId = child.id
}
},
showBottom(item) {
item.show = !item.show;
this.getCameraAllOrgan({ parentId: item.id }).then((res) => {
if (res.data.code !== 1) {
return this.$message.error(res.msg);
}
this.treeData.map((treeDataItem, index) => {
if (item.id == treeDataItem.id) {
this.treeData[index].children = res.data.data || []
this.$nextTick(() => {
this.treeData = this.treeData.splice(0)
console.log('this.treeData.[index]', this.treeData[index])
})
}
})
}).catch(err => {
this.$message.error(err);
})
},
showDown(item, val) {
console.log('showDown', val)
if (item.children) {
val.show = !val.show
}
}
},
}
</script>
<style lang="scss" scoped>
.wrapper {
height: 500px;
overflow-y: scroll;
margin-right: 20px;
width: 300px;
.primaryNode {
.top {
width: 100%;
height: 40px;
background: rgba(0, 135, 225, 0.1);
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 10px;
margin-top: 8px;
}
.top:hover {
cursor: pointer;
// 0058e1 0.5
background: rgba(0, 88, 225, 0.8);
color: white;
:deep(.anticon) {
color: white;
}
}
.topSelect {
background: #0058e1;
color: white;
:deep(.anticon) {
color: white;
}
}
.bottom {
width: 100%;
background: rgba(244, 245, 248, 0.8);
padding: 0 10px;
.up {
width: 100%;
cursor: pointer;
height: 40px;
display: flex;
justify-content: space-between;
align-items: center;
border-top: 1px solid #ccc;
padding: 0 10px;
&>div {
display: flex;
justify-content: flex-start;
}
.name {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
}
.up:hover {
.name {
color: #0058e1;
font-weight: 600;
}
span {
color: #0058e1;
font-weight: 600;
}
}
.select {
padding: 0 0.1rem 0 0;
.name {
width: 190px;
color: #0058e1;
font-weight: 600;
text-align: left;
}
span {
color: #0058e1;
font-weight: 600;
}
}
.item:nth-of-type(1) .up {
border-top: none;
}
.down {
width: 100%;
.child {
cursor: pointer;
height: 40px;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 10px;
&>div {
display: flex;
justify-content: flex-start;
align-items: center;
}
.name {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
}
.child:hover {
.name {
color: #0058e1;
font-weight: 600;
}
span {
color: #0058e1;
font-weight: 600;
}
}
.select2 {
.name {
width: 190px;
color: #0058e1;
font-weight: 600;
text-align: left;
}
span {
color: #0058e1;
font-weight: 600;
}
padding: 0 10px 0 0;
}
}
}
}
}
</style>

View File

@ -0,0 +1,120 @@
<template>
<div class="question-box">
<div class="title">
{{ title }}
</div>
<div v-for="(item, index) in dataInfo" :key="index">
<el-form-item :label="keyTextObj.descObj.text">
<el-input type="textarea" :rows="2" v-model="item[keyTextObj.descObj.key]"
:placeholder="`请输入${keyTextObj.descObj.text}`" style="width:90%">
</el-input>
<el-button style="margin-left:10px" @click="deleteItem(index)" type="danger" size="small"
v-if="dataInfo.length > 1">删除
</el-button>
</el-form-item>
<el-button class="add-btn" size="small" v-if="index == dataInfo.length - 1" @click="addItem"
type="primary">添加
</el-button>
</div>
</div>
</template>
<script>
export default {
props: {
dataForm: {
type: Object,
default: () => { }
},
title: {
type: String,
default: ''
},
keyTextObj: {
type: Object,
default: () => {
return {
descObj: {
text: '描述',
key: 'description'
},
}
}
}
},
data() {
return {
dataInfo: []
}
},
watch: {
dataInfo: {
handler(newVal) {
this.dataInfo = newVal;
this.$emit('update', {
title: this.title,
list: newVal
})
},
deep: true,
immediate: true,
},
},
methods: {
getDataInfo(dataForm) {
let arr = []
if (dataForm && (dataForm.id || dataForm.id === 0)) {
let fuseAttrList = dataForm.fuseAttrList || [];
let obj = fuseAttrList.find(v => v.attrType === this.title) || {}
let attrValue = JSON.parse(obj.attrValue || "[]")
if (attrValue.length > 0) {
attrValue.map(v => {
arr.push({
[this.keyTextObj.descObj.key]: v[this.keyTextObj.descObj.key],
})
})
} else {
arr = []
arr.push({
[this.keyTextObj.descObj.key]: '',
})
}
} else {
arr = []
arr.push({
[this.keyTextObj.descObj.key]: '',
})
}
this.dataInfo = arr;
},
//
addItem() {
let index = this.dataInfo.length - 1;
if (this.dataInfo[index][this.keyTextObj.descObj.key] === '') {
return this.$message.warning('请填写完整信息!')
}
this.dataInfo.push({
[this.keyTextObj.descObj.key]: '',
})
},
//
deleteItem(list, index) {
this.dataInfo.splice(index, 1)
}
}
}
</script>
<style lang="scss" scoped>
.question-box {
.title {
text-align: center;
font-weight: 600;
font-size: 18px;
margin-bottom: 10px;
}
}
.add-btn {
margin-top: -12px;
margin-left: 100px;
}
</style>

View File

@ -0,0 +1,130 @@
<template>
<div class="question-box">
<div class="title">
能力使用步骤
</div>
<div v-for="(item, index) in dataInfo" :key="index">
<el-form-item label="标题" prop="question">
<el-input v-model="item.question" placeholder="请输入标题" style="width:90%" :disabled="disabledType">
</el-input>
</el-form-item>
<el-form-item label="解释说明" prop="question">
<el-input type="textarea" :rows="3" v-model="item.answer" placeholder="请输入解释说明" style="width:90%"
:disabled="disabledType">
</el-input>
<el-button style="margin-left:10px" @click="deleteItem(index)" type="danger" size="small"
v-if="!disabledType && dataInfo.length > 1">删除
</el-button>
</el-form-item>
<el-button class="add-btn" size="small"
v-if="!disabledType && index == dataInfo.length - 1" @click="addItem" type="primary">添加
</el-button>
</div>
<div class="step-box">
<el-steps :active="2">
<el-step status="finish" :title="item.question || `标题${index + 1}`" v-for="(item, index) in dataInfo"
:key="index">
</el-step>
</el-steps>
</div>
</div>
</template>
<script>
export default {
props: {
dataForm: {
type: Object,
default: () => { }
},
//
disabledType: {
type: Boolean,
default: false
},
},
data() {
return {
dataInfo: []
}
},
watch: {
dataInfo: {
handler(newVal) {
this.dataInfo = newVal;
this.$emit('update', {
title: '使用步骤',
list: newVal
})
},
deep: true,
immediate: true,
},
},
methods: {
getDataInfo(dataForm) {
let arr = []
let fuseAttrList = dataForm.fuseAttrList || [];
let obj = fuseAttrList.find(v => v.attrType === '使用步骤') || {}
let attrValue = JSON.parse(obj.attrValue || "[]")
if (attrValue.length > 0) {
attrValue.map(v => {
arr.push({
question: v.question,
answer: v.answer,
})
})
} else {
arr = []
arr.push({
question: "",
answer: "",
})
}
this.dataInfo = arr;
},
//
addItem() {
let index = this.dataInfo.length - 1;
if (this.dataInfo[index].question === '' || this.dataInfo[index].answer === '') {
return this.$message.warning('请填写完整信息!')
}
if (this.dataInfo.length >= 6) {
return this.$message.warning('最多添加6个使用步骤')
}
this.dataInfo.push({
question: "",
answer: "",
})
},
//
deleteItem(list, index) {
this.dataInfo.splice(index, 1)
}
}
}
</script>
<style lang="scss" scoped>
.question-box {
margin-bottom: 20px;
margin-top: 40px;
.title {
text-align: center;
font-weight: 600;
font-size: 18px;
margin-bottom: 10px;
}
}
.step-box {
padding: 20px 10px 10px 10px;
}
.add-btn {
margin-top: -12px;
margin-left: 100px;
}
</style>

View File

@ -0,0 +1,162 @@
<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 @click="searchData">{{
$t("query")
}}</el-button>
</el-form-item>
<el-form-item>
<el-button v-if="$hasPermission('ability:bsabilityai:save')" type="primary" @click="addServe()">挂接</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"
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 :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"
@click="handleUpdate(scope.row)">{{ $t("update") }}</el-button>
<el-button v-if="$hasPermission('ability:bsabilityai:delete')" type="text" size="small"
@click="deleteRow(scope.row.id)">{{ $t("delete") }}</el-button>
<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="Number(total)"
layout="total, sizes, prev, pager, next, jumper" @size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<add-update-scene v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="query" @closeModal="closeModal"
:addOrUpdateVisible="addOrUpdateVisible" :modalType="modalType">
</add-update-scene>
</div>
</el-card>
</template>
<script>
import mixinViewModule from "@/mixins/view-module";
import AddUpdateScene from "./add-update-scene";
export default {
mixins: [mixinViewModule],
data() {
return {
tableData: [],
childName: '',
mixinViewModuleOptions: {
getDataListURL: "/fuse/page",
exportURL: "/ability/bsabilityai/export",
deleteURL: "/fuse",
getDataListIsPage: true,
deleteIsBatch: false,
},
disabled: false,
dataForm: {
name: "",
order: 'desc',
orderField: 'create_date',
type: '赋能场景'
},
qp: false,
modalType: 'add',
};
},
components: {
AddUpdateScene,
},
mounted() {
window.addEventListener("resize", this.a);
this.fullScreen();
},
methods: {
deleteRow(id) {
this.$http.delete('/fuse/delete', {
data: [id]
}).then(res => {
console.log('删除成功', res)
if (res.data.code !== 0) {
return this.$message.error(res.msg);
}
this.$message({
message: '删除成功',
type: "success",
duration: 500,
onClose: () => {
this.query()
},
});
}).catch(err => {
this.$message.error(err);
})
},
//
searchData() {
this.query()
},
//
reset() {
this.dataForm.name = "";
this.query()
},
//
handleUpdate(val) {
this.addOrUpdateVisible = true;
this.modalType = 'update';
const cloneVal = JSON.parse(JSON.stringify(val))
this.$nextTick(() => {
this.$refs.addOrUpdate.getDetail(cloneVal)
})
},
//
addServe() {
this.addOrUpdateVisible = true
this.modalType = 'add';
},
closeModal() {
this.addOrUpdateVisible = false;
},
//
showDetail(val) {
window.open(window.SITE_CONFIG.previewUrl + '#/integrationServicesDetails?id=' + val.id)
},
fullScreen() {
if (window.outerHeight === screen.availHeight) {
if (window.outerWidth === screen.availWidth) {
console.log(
"全屏1",
);
this.qp = false;
} else {
console.log(
"不是全屏2",
);
this.qp = true;
}
} else {
console.log(
"不是全屏3",
);
this.qp = true;
}
},
},
};
</script>
<style lang="scss" scoped>
.el-tooltip__popper {
max-width: 50%;
}
</style>

View File

@ -0,0 +1,134 @@
<template>
<div>
<el-dialog
:visible.sync="visible"
title="关联应用"
@close="close"
:close-on-click-modal="false"
:close-on-press-escape="false"
:key="showKey"
>
<div class="relate-application-content">
<el-transfer
v-model="transferValue"
filterable
:filter-method="filterMethod"
filter-placeholder="请输入应用名称"
:titles="nameArray"
:props="{
key: 'id',
label: 'name',
}"
:data="transferData"
></el-transfer>
</div>
<template slot="footer">
<el-button @click="visible = false">{{ $t("cancel") }}</el-button>
<el-button type="primary" @click="confirmSubmitHandle()">{{
$t("confirm")
}}</el-button>
</template>
</el-dialog>
</div>
</template>
<script>
import debounce from "lodash/debounce";
export default {
components: {},
data() {
return {
showKey: 0,
visible: true,
transferData: [], //穿
transferValue: [], //id
};
},
props: {
relateInfo: {
type: Object,
default: {},
},
nameArray: {
type: Array,
default: ["未关联应用名称", "已关联应用名称"],
},
},
computed: {},
methods: {
close() {
this.$emit("isShowRelatePopup", false);
},
//
confirmSubmitHandle: debounce(
function () {
this.$http
.post("/dataResourceRel/saveDataResourceRel", {
linkType: this.relateInfo.linkType || 2,
id: this.relateInfo.id,
referenceIds: this.transferValue,
})
.then(({ data: res }) => {
if (res.code == 0) {
this.$message.success("关联成功!");
} else {
this.$message.error("关联失败,请联系管理员!");
}
this.$emit("isShowRelatePopup", false);
})
.catch(() => {});
},
1000,
{ leading: true, trailing: false }
),
filterMethod(query, item) {
return item.name && item.name.indexOf(query) > -1;
},
},
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);
});
}
},
};
</script>
<style lang="scss" scoped>
.icon-input ::v-deep .el-input__inner {
cursor: pointer;
}
::v-deep .el-dialog__body {
height: 580px;
overflow: auto;
}
::v-deep .el-checkbox-button__inner {
width: 130px;
margin: 0 10px 5px;
border-left: unset !important;
border-radius: unset !important;
border: 1px solid #dcdfe6 !important;
}
.relate-application-content {
height: 100%;
::v-deep .el-transfer {
height: 100%;
}
::v-deep .el-transfer-panel {
width: 39.5%;
height: 100%;
}
::v-deep .el-transfer-panel__body {
height: 100%;
}
::v-deep .el-transfer-panel__list.is-filterable {
height: calc(100% - 102px);
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,128 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-20 10:38:17
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-06-20 11:33:13
* @Description: 告诉大家这是什么
-->
<template>
<div class="bsabilityimport">
<div class="item" @click="downloadTemplate()">
<svg t="1655692930310" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1593" width="200" height="200"><path d="M599.13 0.476L33.55 109.306a20.778 20.778 0 0 0-16.492 20.42v764.308a20.778 20.778 0 0 0 16.372 20.48l565.58 108.83a20.837 20.837 0 0 0 3.81 0.654 19.29 19.29 0 0 0 12.622-4.465 21.313 21.313 0 0 0 7.56-16.015V20.361a21.313 21.313 0 0 0-7.56-16.074 19.23 19.23 0 0 0-16.313-3.81z m-206.11 696.08l-46.14-83.348c-10.597-18.575-20.241-37.864-32.148-59.951h-2.203c-10.538 21.67-20.004 40.305-29.767 58.344l-43.937 76.323-87.278-5 115.557-175.985L158.454 342.8l91.147-5.953 41.317 70.608c9.466 16.55 18.337 33.697 30.541 55.784h2.798c9.824-22.683 18.159-40.543 27.03-58.404l38.935-77.395 86.683-5.953-108.592 188.249L483.93 701.915zM966.519 122.76H663.487v143.36h40.364v40.96h-40.364v102.4h40.364v40.96h-40.364V552.9h40.364v40.96h-40.364v122.939h40.364v40.96h-40.364v143.419h302.972a40.781 40.781 0 0 0 40.424-40.96V163.72a40.781 40.781 0 0 0-40.364-40.96zM905.912 757.7H744.275v-40.96h161.637z m0-163.9H744.275v-40.9h161.637z m0-143.418H744.275v-40.9h161.637z m0-143.42H744.275v-40.84h161.637z" fill="#1296db" p-id="1594"></path></svg>
<span>下载模板</span>
</div>
<el-upload
ref="addUpload"
class="item"
:action="fileUploadUrl"
:on-success="onSuccess"
:on-remove="onRemove"
:show-file-list='false'
:on-error="onErrorFile"
:on-exceed='onExceed'
:limit='1'
:on-preview="onPreview"
list-type="text"
>
<svg t="1655692986683" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2083" width="200" height="200"><path d="M192 256v29h9.9c-6.5-9.3-9.9-19-9.9-29z m384 128c-41.9 0-82.3-2.2-120-6.4L590.2 512 467.5 634.8c34.4 3.4 70.8 5.2 108.5 5.2 212.1 0 384-57.3 384-128V256c0 70.7-171.9 128-384 128z m-263.9-99h51.3l17.2 17.2c57.2 11.3 124 17.8 195.4 17.8 212.1 0 384-57.3 384-128S788.1 64 576 64s-384 57.3-384 128c0 36.6 46.2 69.7 120.1 93zM576 704c-59.1 0-115.2-4.5-165.2-12.4L363.4 739H192v93c0 70.7 171.9 128 384 128s384-57.3 384-128V576c0 70.7-171.9 128-384 128z" fill="#E6C27C" p-id="2084"></path><path d="M336.9 349H198.6l98.9 98.9H64v128.2h233.5L198.6 675h138.3l162.9-163z" fill="#497CAD" p-id="2085"></path></svg>
<div>导入数据</div>
</el-upload>
</div>
</template>
<script>
import Cookies from 'js-cookie'
export default {
name: '',
components: {
},
props: {
},
data () {
return {
fileUploadUrl: window.SITE_CONFIG.apiURL + '/resource//importResource?token=' + Cookies.get('ucsToken')
}
},
methods: {
downloadTemplate () {
window.open(window.SITE_CONFIG.apiURL + '/%E8%83%BD%E5%8A%9B%E8%B5%84%E6%BA%90%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D%BF.xlsx?token=' + Cookies.get('ucsToken'))
},
onSuccess (res, file) {
this.$message({
message: '导入成功',
type: 'success'
})
this.$refs.addUpload.clearFiles()
},
onErrorFile () {
this.$message('导入失败!')
this.$refs.addUpload.clearFiles() //
},
onRemove (file, fileList) {
console.log(file, fileList)
},
onPreview (file) {
console.log('点击预览===============>', file)
window.open(file.response.data)
},
onExceed (files, fileList) {
this.$message.warning('当前附件数量已达上限,请先删除部分附件!')
}
}
}
</script>
<style lang='scss' scoped>
.bsabilityimport {
display: flex;
justify-content: space-around;
align-items: center;
flex-wrap: wrap;
padding: 250px 300px;
.item {
padding: 20px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
border: 1px solid rgba(0, 0, 0, 0);
span {
font-size: 20px;
font-weight: 600;
margin-top: 20px;
}
div {
font-size: 20px;
font-weight: 600;
margin-top: 20px;
}
}
.item:hover {
cursor: pointer;
border: 1px solid #1296db;
border-radius: 10px;
svg {
animation: turn 2s linear infinite;
animation-iteration-count: 1;
}
}
}
@keyframes turn {
0% {
-webkit-transform: rotateY(0deg);
}
25% {
-webkit-transform: rotateY(90deg);
}
50% {
-webkit-transform: rotateY(180deg);
}
75% {
-webkit-transform: rotateY(270deg);
}
100% {
-webkit-transform: rotateY(360deg);
}
}
</style>

View File

@ -10,9 +10,27 @@
<!-- 挂载和修改--> <!-- 挂载和修改-->
<div key="1" v-if="!disabled"> <div key="1" v-if="!disabled">
<!-- 挂载--> <!-- 挂载-->
<div style="text-align:center;font-weight: 600;font-size: 18px;margin-bottom: 10px;">填写字段</div> <div
<el-checkbox-group v-model="checkList" @change="showListChagne" style="margin-bottom:20px;"> style="
<el-checkbox-button v-for="item in dataForm.showListAll" :label="item.name" :key="item.id">{{item.name}}</el-checkbox-button> text-align: center;
font-weight: 600;
font-size: 18px;
margin-bottom: 10px;
"
>
填写字段
</div>
<el-checkbox-group
v-model="checkList"
@change="showListChagne"
style="margin-bottom: 20px"
>
<el-checkbox-button
v-for="item in dataForm.showListAll"
:label="item.name"
:key="item.id"
>{{ item.name }}</el-checkbox-button
>
</el-checkbox-group> </el-checkbox-group>
<el-form <el-form
v-if="!UpdateState" v-if="!UpdateState"
@ -22,19 +40,40 @@
@keyup.enter.native="dataFormSubmitHandle()" @keyup.enter.native="dataFormSubmitHandle()"
:label-width="$i18n.locale === 'en-US' ? '120px' : 'auto'" :label-width="$i18n.locale === 'en-US' ? '120px' : 'auto'"
> >
<div v-show="checkList.indexOf('必填信息')>-1"> <div v-show="checkList.indexOf('必填信息') > -1">
<div style="text-align:center;font-weight: 600;font-size: 18px;margin-bottom: 10px;">必填信息</div> <div
style="
text-align: center;
font-weight: 600;
font-size: 18px;
margin-bottom: 10px;
"
>
必填信息
</div>
<el-form-item label="应用名称" prop="name"> <el-form-item label="应用名称" prop="name">
<el-input v-model="dataForm.name" placeholder="请输入组件名称" ></el-input> <el-input
v-model="dataForm.name"
placeholder="请输入组件名称"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="应用描述" prop="description"> <el-form-item label="应用描述" prop="description">
<el-input v-model="dataForm.description" placeholder="请输入组件描述" ></el-input> <el-input
v-model="dataForm.description"
placeholder="请输入组件描述"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="部门联系人" prop="deptContacts"> <el-form-item label="部门联系人" prop="deptContacts">
<el-input v-model="dataForm.deptContacts" placeholder="请输入部门联系人" ></el-input> <el-input
v-model="dataForm.deptContacts"
placeholder="请输入部门联系人"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="部门联系人电话" prop="deptPhone"> <el-form-item label="部门联系人电话" prop="deptPhone">
<el-input v-model="dataForm.deptPhone" placeholder="请输入部门联系人电话" ></el-input> <el-input
v-model="dataForm.deptPhone"
placeholder="请输入部门联系人电话"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="共享条件" prop="shareCondition"> <el-form-item label="共享条件" prop="shareCondition">
<el-select <el-select
@ -50,7 +89,8 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="共享类型" prop="shareType"><el-select <el-form-item label="共享类型" prop="shareType"
><el-select
v-model="dataForm.shareType" v-model="dataForm.shareType"
placeholder="请选择共享类型" placeholder="请选择共享类型"
> >
@ -64,16 +104,47 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="共享方式" prop="shareMode"> <el-form-item label="共享方式" prop="shareMode">
<el-input v-model="dataForm.shareMode" placeholder="请输入共享方式" ></el-input> <el-input
v-model="dataForm.shareMode"
placeholder="请输入共享方式"
></el-input>
</el-form-item> </el-form-item>
</div> </div>
<div v-for="item in dataForm.showList" :key="item.id" v-show="item.name !== '必填信息'"> <div
<div style="text-align:center;font-weight: 600;font-size: 18px;margin-bottom: 10px;">{{item.name}}</div> v-for="item in dataForm.showList"
<el-form-item :label="child.name" v-for="child in item.children" :key="child.id" v-show="item.children"> :key="item.id"
<el-input v-model="child.note1" :placeholder="'请输入'+child.name" v-if="child.type=='input'"></el-input> v-show="item.name !== '必填信息'"
<el-input v-model="child.note1" :placeholder="'请输入'+child.name" type="textarea" :rows="2" v-if="child.type=='textArea'"></el-input> >
<div
style="
text-align: center;
font-weight: 600;
font-size: 18px;
margin-bottom: 10px;
"
>
{{ item.name }}
</div>
<el-form-item
:label="child.name"
v-for="child in item.children"
:key="child.id"
v-show="item.children"
>
<el-input
v-model="child.note1"
:placeholder="'请输入' + child.name"
v-if="child.type == 'input'"
></el-input>
<el-input
v-model="child.note1"
:placeholder="'请输入' + child.name"
type="textarea"
:rows="2"
v-if="child.type == 'textArea'"
></el-input>
<el-select <el-select
v-else-if="child.type=='select'" v-else-if="child.type == 'select'"
v-model="child.note1" v-model="child.note1"
:placeholder="'请选择' + child.name" :placeholder="'请选择' + child.name"
> >
@ -85,9 +156,24 @@
> >
</el-option> </el-option>
</el-select> </el-select>
<upload v-else-if="child.type=='images'" :child='child' limit='5' accept='.jpg,.png'></upload> <upload
<upload v-else-if="child.type=='image'" :child='child' limit='1' accept='.jpg,.png'></upload> v-else-if="child.type == 'images'"
<upload v-else-if="child.type=='video'" :child='child' limit='1' accept='.mp4'></upload> :child="child"
limit="5"
accept=".jpg,.png"
></upload>
<upload
v-else-if="child.type == 'image'"
:child="child"
limit="1"
accept=".jpg,.png"
></upload>
<upload
v-else-if="child.type == 'video'"
:child="child"
limit="1"
accept=".mp4"
></upload>
</el-form-item> </el-form-item>
</div> </div>
</el-form> </el-form>
@ -184,9 +270,8 @@
:placeholder="item.attrType" :placeholder="item.attrType"
v-if=" v-if="
item.attrType != '应用领域' && item.attrType != '应用领域' &&
item.attrType != '应用类型' && item.attrType != '应用类型' &&
item.attrType != '发布端' && item.attrType != '发布端'
item.attrType != '应用状态'
" "
></el-input> ></el-input>
<el-select <el-select
@ -828,10 +913,10 @@ export default {
console.log('表单数据=======================》', this.dataForm) console.log('表单数据=======================》', this.dataForm)
if (!this.UpdateState) { if (!this.UpdateState) {
this.dataForm.infoList = [] this.dataForm.infoList = []
this.dataForm.showListAll.forEach(val => { this.dataForm.showListAll.forEach((val) => {
if (val.name !== '必填信息') { if (val.name !== '必填信息') {
if (val.name === '服务接口信息') { if (val.name === '服务接口信息') {
val.children.forEach(item => { val.children.forEach((item) => {
if (item.name === '服务接口') { if (item.name === '服务接口') {
this.dataForm.apiUrl = item.note1 this.dataForm.apiUrl = item.note1
} }
@ -843,7 +928,7 @@ export default {
} }
}) })
} else { } else {
val.children.forEach(item => { val.children.forEach((item) => {
this.dataForm.infoList.push({ this.dataForm.infoList.push({
attrType: item.name, attrType: item.name,
attrValue: item.note1, attrValue: item.note1,
@ -895,8 +980,15 @@ export default {
{ leading: true, trailing: false } { leading: true, trailing: false }
), ),
showListChagne () { showListChagne () {
this.dataForm.showList = this.dataForm.showListAll.filter(item => this.checkList.indexOf(item.name) > -1) this.dataForm.showList = this.dataForm.showListAll.filter(
console.log('属性变更===================>', this.checkList, this.dataForm.showList, this.dataForm.showListAll) (item) => this.checkList.indexOf(item.name) > -1
)
console.log(
'属性变更===================>',
this.checkList,
this.dataForm.showList,
this.dataForm.showListAll
)
} }
}, },
mounted () { mounted () {

View File

@ -1,10 +1,7 @@
<template> <template>
<el-card shadow="never" class="aui-card--fill"> <el-card shadow="never" class="aui-card--fill">
<div class="mod-ability__bsabilityai"> <div class="mod-ability__bsabilityai">
<el-form <el-form :inline="true" :model="dataForm">
:inline="true"
:model="dataForm"
>
<el-form-item> <el-form-item>
<el-input <el-input
v-model="dataForm.name" v-model="dataForm.name"
@ -13,20 +10,29 @@
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="getDataList2(dataForm.name)">{{ $t("query") }}</el-button> <el-button @click="getDataList2(dataForm.name)">{{
$t("query")
}}</el-button>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="info" @click="exportHandle()">{{ <el-button type="info" @click="exportHandle()">{{
$t("export") $t("export")
}}</el-button> }}</el-button>
</el-form-item> </el-form-item>
<el-form-item> <!-- <el-form-item>
<el-button <el-button
v-if="$hasPermission('ability:bsabilityai:save')" v-if="$hasPermission('ability:bsabilityai:save')"
type="primary" type="primary"
@click="addOrUpdateHandleServe()" @click="addOrUpdateHandleServe()"
>挂接</el-button >挂接</el-button
> >
</el-form-item> -->
<el-form-item>
<el-button
type="primary"
@click="showPutOnTheShelf()"
>上架</el-button
>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button <el-button
@ -36,7 +42,7 @@
>{{ $t("deleteBatch") }}</el-button >{{ $t("deleteBatch") }}</el-button
> >
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="reset">重置</el-button> <el-button @click="reset">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -45,8 +51,8 @@
:data="dataList" :data="dataList"
border border
@selection-change="dataListSelectionChangeHandle" @selection-change="dataListSelectionChangeHandle"
style="width: 100%;" style="width: 100%"
:height="qp ? '810px' : '650px'" height="650px"
> >
<el-table-column <el-table-column
type="selection" type="selection"
@ -55,40 +61,81 @@
width="50" width="50"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
:show-overflow-tooltip="true"
width="280"
prop="name" prop="name"
label="应用名称" label="应用名称"
header-align="center" header-align="center"
align="center" align="center"
></el-table-column> ></el-table-column>
<af-table-column
<el-table-column :show-overflow-tooltip="true"
v-for="(item, index) in dataList[0].infoList" width="280"
:key="index" prop="description"
:label="item.attrType" label="应用描述"
header-align="center" header-align="center"
align="center" align="center"
show-overflow-tooltip="true" ></af-table-column>
> <af-table-column
<template slot-scope="scope"> :show-overflow-tooltip="true"
{{ width="280"
findValue(scope.row.infoList, item.attrType) prop="deptName"
}} label="归属部门"
</template> header-align="center"
</el-table-column> align="center"
></af-table-column>
<af-table-column
:show-overflow-tooltip="true"
width="280"
prop="deptContacts"
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
: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">
<el-table-column
v-for="(item, index) in dataList[0].infoList2"
:key="index"
:label="item.attrType"
header-align="center"
align="center"
:show-overflow-tooltip="true"
width="280"
>
<template slot-scope="scope">
{{ findValue(scope.row.infoList2, item.attrType) }}
</template>
</el-table-column>
</template>
<el-table-column <el-table-column
:label="$t('handle')" :label="$t('handle')"
fixed="right" fixed="right"
header-align="center" header-align="center"
align="center" align="center"
width="94" width="300"
right="0"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
v-if="$hasPermission('ability:bsabilityai:update')" v-if="$hasPermission('ability:bsabilityai:update')"
type="text" type="text"
size="small" size="small"
@click="UpdateHandle(scope.row)" @click="UpdateData(scope.row)"
>{{ $t("update") }}</el-button >{{ $t("update") }}</el-button
> >
<el-button <el-button
@ -99,9 +146,35 @@
>{{ $t("delete") }}</el-button >{{ $t("delete") }}</el-button
> >
<el-button type="text" size="small" @click="showDetail(scope.row)" <el-button type="text" size="small" @click="showDetail(scope.row)"
>展示</el-button >详情</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 type="text" size="small" @click="showDocument(scope.row)">开发文档</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -122,7 +195,28 @@
ref="addOrUpdate" ref="addOrUpdate"
@refreshDataList="getDataList" @refreshDataList="getDataList"
></add-or-update> ></add-or-update>
<relate-application
v-if="relateApplicationResourceVisible"
ref="relateApplication"
:relateInfo="relationData"
:nameArray="topNameArray"
@isShowRelatePopup="handleIsShowRelatePopupApply"
></relate-application>
</div> </div>
<el-dialog
:title="submitFrom.id?'修改'+radio:'上架'+radio"
:visible.sync="showPutOnTheShelfFlag2"
:close-on-click-modal='false'
:close-on-press-escape='false'
:destroy-on-close='true'
:before-close='clear'
width="50%">
<putOnTheShelf :required="required" :notFilled="notFilled":putOnTheShelfList='putOnTheShelfList' @changeInfoList='changeInfoList' :type='radio' :typeInput='typeInput'></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> </el-card>
</template> </template>
@ -130,12 +224,17 @@
import mixinViewModule from '@/mixins/view-module' import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './bsabilityservice-add-or-update' import AddOrUpdate from './bsabilityservice-add-or-update'
import dictionaries from '@/utils/dictionaries' import dictionaries from '@/utils/dictionaries'
import RelateApplication from './bsabilityai-relate-application.vue'
import qs from 'qs' import qs from 'qs'
import { type } from 'os' import { type } from 'os'
import putOnTheShelf from '@/views/modules/putOnTheShelf'
export default { export default {
mixins: [mixinViewModule], mixins: [mixinViewModule],
data () { data () {
return { return {
required: ['归属部门', '部门联系人', '部门联系人电话', '应用领域', '共享条件', '应用名称', '应用描述', '应用类型'],
notFilled: [],
mixinViewModuleOptions: { mixinViewModuleOptions: {
getDataListURL: '/resource/page', getDataListURL: '/resource/page',
getDataListIsPage: true, getDataListIsPage: true,
@ -154,70 +253,115 @@ export default {
delFlag: 0, delFlag: 0,
type: '应用资源' type: '应用资源'
}, },
qp: false qp: false,
relateApplicationResourceVisible: false,
relationData: {}, // 穿
topNameArray: [], //
radio: '应用资源',
insertList: [],
putOnTheShelfList: [],
showPutOnTheShelfFlag2: false,
submitFrom: {
type: '应用资源',
deptId: '',
delFlag: 0,
infoList: [
// {
// attrType: '',
// attrValue: '',
// delFlag: 0
// }
]
},
typeInput: '应用资源'
} }
}, },
watch: {}, watch: {},
components: { components: {
AddOrUpdate AddOrUpdate,
RelateApplication,
putOnTheShelf
}, },
created () { created () {
this.dataForm.name = '' this.dataForm.name = ''
this.dataForm.type = '应用资源' this.dataForm.type = '应用资源'
}, },
mounted () { mounted () {
window.addEventListener('resize', this.a) // window.addEventListener('resize', this.a)
this.fullScreen() // this.fullScreen()
}, },
methods: { methods: {
reset () { reset () {
this.$http.get( this.$http
this.mixinViewModuleOptions.getDataListURL + '?' + qs.stringify({ .get(
// order: this.order, this.mixinViewModuleOptions.getDataListURL +
// orderField: this.orderField, '?' +
// type: '', qs.stringify({
page: 1, // order: this.order,
selectType: 0, // orderField: this.orderField,
limit: 10, // type: '',
delFlag: 0, page: 1,
creator: '', selectType: 0,
type: '应用资源', limit: 10,
name: '' delFlag: 0,
creator: '',
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.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 === '应用领域'
) {
dataListSinforList.push(itemson)
}
})
this.dataList[index].infoList2 = dataListSinforList
})
})
.catch(() => {
this.dataListLoading = false
}) })
).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.total = this.mixinViewModuleOptions.getDataListIsPage ? res.data.total : 0
if (this.mixinViewModuleOptions.requestCallback) {
this.mixinViewModuleOptions.requestCallback(res.data)
}
this.dataListLoading = false
}).catch(() => {
this.dataListLoading = false
})
}, },
showDetail (val) { showDetail (val) {
this.addOrUpdateVisible = true window.open(window.SITE_CONFIG.previewUrl + '#/details?id=' + val.id)
this.disabled = false // this.addOrUpdateVisible = true
this.$nextTick(() => { // this.disabled = false
this.$refs.addOrUpdate.UpdateState = false // this.$nextTick(() => {
this.$refs.addOrUpdate.dataFormShowDetails = val // this.$refs.addOrUpdate.UpdateState = false
this.$refs.addOrUpdate.init() // this.$refs.addOrUpdate.dataFormShowDetails = val
}) // this.$refs.addOrUpdate.init()
this.disabled = true // })
// this.disabled = true
}, },
showDocument (val) { showDocument (val) {
console.log(val) console.log(val)
window.open(window.SITE_CONFIG.frontUrl + '?id=' + val.id + '&&type=' + val.type, '_blank') window.open(
window.SITE_CONFIG.frontUrl + '?id=' + val.id + '&&type=' + val.type,
'_blank'
)
}, },
findValue (list, type) { findValue (list, type) {
const found = list.find(item => item.attrType === type) const found = list.find((item) => item.attrType === type)
if (found) { if (found) {
return found.attrValue return found.attrValue
} else { } else {
@ -226,20 +370,23 @@ export default {
}, },
getDataList2 (names) { getDataList2 (names) {
if (names != null) { if (names != null) {
this.$http.get( this.$http
this.mixinViewModuleOptions.getDataListURL + '?' + qs.stringify({ .get(
// order: this.order, this.mixinViewModuleOptions.getDataListURL +
// orderField: this.orderField, '?' +
// type: '', qs.stringify({
pageNum: 1, // order: this.order,
pageSize: this.limit, // orderField: this.orderField,
type: '应用资源', // type: '',
creator: '', pageNum: 1,
selectType: 0, pageSize: this.limit,
delFlag: 0, type: '应用资源',
name: names creator: '',
}) selectType: 0,
) delFlag: 0,
name: names
})
)
.then(({ data: res }) => { .then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
this.dataList = [] this.dataList = []
@ -248,53 +395,442 @@ export default {
} }
if (res.data.list.length !== 0) { if (res.data.list.length !== 0) {
this.dataList = res.data.list this.dataList = res.data.list
this.total = this.mixinViewModuleOptions.getDataListIsPage ? res.data.total : 0 this.total = this.mixinViewModuleOptions.getDataListIsPage
? res.data.total
: 0
if (this.mixinViewModuleOptions.requestCallback) { if (this.mixinViewModuleOptions.requestCallback) {
this.mixinViewModuleOptions.requestCallback(res.data) this.mixinViewModuleOptions.requestCallback(res.data)
} }
this.dataListLoading = false this.dataListLoading = false
this.dataList.map((item, index) => {
const dataListSinforList = []
item.infoList.map((itemson, indexson) => {
if (
itemson.attrType === '应用领域'
) {
dataListSinforList.push(itemson)
}
})
this.dataList[index].infoList2 = dataListSinforList
})
} else { } else {
this.$message.error('未查询到相关信息') this.$message.error('未查询到相关信息')
this.reset() this.reset()
} }
}).catch(() => { })
.catch(() => {
this.dataListLoading = false this.dataListLoading = false
}) })
} else { } else {
this.$message.error('查询不能输入为空') this.$message.error('查询不能输入为空')
} }
}, },
fullScreen () { // fullScreen () {
if (window.outerHeight === screen.availHeight) { // if (window.outerHeight === screen.availHeight) {
if (window.outerWidth === screen.availWidth) { // if (window.outerWidth === screen.availWidth) {
console.log( // console.log(
'全屏1', // '1',
window.outerHeight, // window.outerHeight,
screen.availHeight, // screen.availHeight,
window.outerWidth, // window.outerWidth,
screen.availWidth // screen.availWidth
) // )
this.qp = false // this.qp = false
} else { // } else {
console.log( // console.log(
'不是全屏2', // '2',
window.outerHeight, // window.outerHeight,
screen.availHeight, // screen.availHeight,
window.outerWidth, // window.outerWidth,
screen.availWidth // screen.availWidth
) // )
this.qp = true // this.qp = true
} // }
} else { // } else {
console.log( // console.log(
'不是全屏3', // '3',
window.outerHeight, // window.outerHeight,
screen.availHeight, // screen.availHeight,
window.outerWidth, // window.outerWidth,
screen.availWidth // screen.availWidth
) // )
this.qp = true // this.qp = true
// }
// },
//
applyAndAssembly (val) {
console.log('vvvv', val)
// idid,type
const type = '组件服务'
const id = val.id
this.$http
.get('/dataResourceRel/queryResourceRelByKeyId', {
params: {
keyId: id,
type: type,
referenceName: ''
}
})
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
console.log('rrrrressssz', res.data)
this.relateApplicationResourceVisible = true
this.relationData = {
id: id,
linkType: '1',
responseData: res.data
}
this.topNameArray = ['未关联组件名称', '已关联组件名称']
console.log(' this.relationData', this.relationData)
//
})
},
//
applyAndDataResource (val) {
console.log('数据资源')
},
//
applyAndProject (val) {
const type = '项目'
const id = val.id
this.$http
.get('/dataResourceRel/queryResourceRelByKeyId', {
params: {
keyId: id,
type: type,
referenceName: ''
}
})
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
console.log('rrrrressssx', res.data)
this.relateApplicationResourceVisible = true
this.relationData = {
id: id,
linkType: '1',
responseData: res.data
}
this.topNameArray = ['未关联项目名称', '已关联项目名称']
//
})
},
//
applyAndInfrastructure (val) {
const type = '基础设施'
const id = val.id
this.$http
.get('/dataResourceRel/queryResourceRelByKeyId', {
params: {
keyId: id,
type: type,
referenceName: ''
}
})
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
console.log('rrrrressssj', res.data)
this.relateApplicationResourceVisible = true
this.relationData = {
id: id,
linkType: '1',
responseData: res.data
}
this.topNameArray = ['未关联基础设施名称', '已关联基础设施名称']
//
})
},
//
handleIsShowRelatePopupApply (type) {
this.relateApplicationResourceVisible = type
},
//
clear () {
this.notFilled = []
this.showPutOnTheShelfFlag2 = false
this.insertList = []
this.putOnTheShelfList = []
this.radio = '应用资源'
this.submitFrom = {
type: '应用资源',
deptId: '',
delFlag: 0,
infoList: [
// {
// attrType: '',
// attrValue: '',
// delFlag: 0
// }
]
} }
this.reset()
},
//
showPutOnTheShelf () {
this.showPutOnTheShelfFlag2 = true
this.$http.get('/category/getCategoryTree').then(res => {
this.insertList = res.data.data.filter(item => item.name === '应用资源一')[0]
console.log(this.insertList, this, this.radio, 'hhhhhhhhhhh')
this.putOnTheShelfList = this.insertList.children
})
},
changeInfoList (obj) {
this.submitFrom.infoList = this.submitFrom.infoList.filter((item) => item.attrType !== obj.attrType)
this.submitFrom.infoList.push(obj)
},
submitData () {
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 = []
console.log(this.submitFrom, '表单验证')
if (!this.submitFrom.name) {
this.notFilled.push('应用名称')
}
if (!this.submitFrom.description) {
this.notFilled.push('应用描述')
}
if (!this.submitFrom.shareCondition) {
this.notFilled.push('共享条件')
}
if (!this.submitFrom.deptId) {
this.notFilled.push('归属部门')
}
if (!this.submitFrom.deptContacts) {
this.notFilled.push('部门联系人')
}
if (!this.submitFrom.deptPhone) {
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.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.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)
//
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('修改失败!')
this.showPutOnTheShelfFlag2 = false
} else {
this.$message.success('修改成功!')
this.showPutOnTheShelfFlag2 = false
this.clear()
}
})
.catch(() => {})
} else {
this.$http
.post('/resource/insert?source= b', this.submitFrom)
.then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error('上架失败!')
this.showPutOnTheShelfFlag2 = false
} else {
this.$message.success('上架成功!')
this.showPutOnTheShelfFlag2 = false
this.clear()
}
})
.catch(() => {})
}
}
},
//
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.putOnTheShelfList = this.insertList.children
// 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
})
} }
} }
} }
@ -303,4 +839,7 @@ export default {
.el-tooltip__popper { .el-tooltip__popper {
max-width: 50%; max-width: 50%;
} }
::v-deep .el-upload-list__item-name {
width: 400px;
}
</style> </style>

View File

@ -1,6 +1,5 @@
<template> <template>
<el-card shadow="never" class="aui-card--fill"> <el-card shadow="never" class="aui-card--fill">
{{ this.$route.meta.type }}
<div class="mod-ability__bsabilityvideo"> <div class="mod-ability__bsabilityvideo">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> <el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item> <el-form-item>

View File

@ -0,0 +1,114 @@
<!-- 数据资源目录编制 /bscatalogue/dataResources -->
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-pay__order">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<ren-select v-model="dataForm.status" dict-type="category" :placeholder="$t('dataresources.componentType')"></ren-select>
</el-form-item>
<el-form-item>
<el-input v-model="dataForm.orderId" :placeholder="$t('dataresources.componentName')" clearable></el-input>
</el-form-item>
<el-form-item>
<el-date-picker v-model="dataForm.applydate" value-format="yyyy-MM-dd" type="date" :placeholder="$t('dataresources.putOnDate')" clearable></el-date-picker>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="resetDataList()">{{ $t('reset') }}</el-button>
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;">
<el-table-column prop="productName" :label="$t('dataresources.resourcesName')" header-align="center" align="center"></el-table-column>
<el-table-column prop="orderId" :label="$t('dataresources.resourcesCode')" header-align="center" align="center"></el-table-column>
<el-table-column prop="payAmount" :label="$t('dataresources.resourcesProvide')" header-align="center" align="center"></el-table-column>
<el-table-column prop="status" :label="$t('dataresources.resourcesAbstract')" header-align="center" align="center"></el-table-column>
<el-table-column prop="payAt" :label="$t('dataresources.putOnDate')" header-align="center" align="center"></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="primary" @click="showRelateApplication(scope.row)">{{ $t('dataresources.associatedApplication') }}</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> -->
<relate-application v-if="relateApplicationVisible" ref="relateApplication" :relateInfo="relateInfo" @isShowRelatePopup="handleIsShowRelatePopup"></relate-application>
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
// import AddOrUpdate from './order-add-or-update'
import { addDynamicRoute } from '@/router'
import RelateApplication from './bsabilityai-relate-application.vue'
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/pay/order/page',
getDataListIsPage: true,
deleteURL: '/pay/order',
deleteIsBatch: true
},
dataForm: {
orderId: '',
status: '',
userId: ''
},
//
relateApplicationVisible: false,
relateInfo: {
id: '',
responseData: {},
linkType: ''
}
}
},
components: {
// AddOrUpdate,
RelateApplication
},
methods: {
//
resetDataList () {
this.dataForm = {
orderId: '',
status: '',
userId: ''
},
this.page = 1 //
this.query()
},
//
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
}
}
}
</script>

View File

@ -0,0 +1,107 @@
<!-- 基础设施目录编制 /bscatalogue/infrastructure -->
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-pay__order">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<ren-select v-model="dataForm.status" dict-type="resourceType" :placeholder="$t('infrastructure.resourceCategory')"></ren-select>
</el-form-item>
<el-form-item>
<el-input v-model="dataForm.orderId" :placeholder="$t('infrastructure.resourceName')" 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 type="primary" @click="resetDataList()">{{ $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-column prop="orderId" :label="$t('infrastructure.resourceName')" header-align="center" align="center"></el-table-column>
<el-table-column prop="productName" :label="$t('infrastructure.district')" header-align="center" align="center"></el-table-column>
<el-table-column prop="payAmount" :label="$t('infrastructure.street')" header-align="center" align="center"></el-table-column>
<el-table-column prop="status" :label="$t('infrastructure.department')" header-align="center" align="center"></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="primary" @click="showRelateApplication(scope.row)">{{ $t('infrastructure.associatedApplication') }}</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> -->
<relate-application v-if="relateApplicationVisible" ref="relateApplication" :relateInfo="relateInfo" @isShowRelatePopup="handleIsShowRelatePopup"></relate-application>
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
// import AddOrUpdate from './order-add-or-update'
import { addDynamicRoute } from '@/router'
import RelateApplication from './bsabilityai-relate-application.vue'
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/resource/page',
getDataListIsPage: true,
deleteURL: '',
deleteIsBatch: true
},
dataForm: {
orderId: '',
status: '',
userId: '',
type: '基础设施'
},
//
relateApplicationVisible: false,
relateInfo: {
id: '',
responseData: {},
linkType: ''
}
}
},
components: {
// AddOrUpdate,
RelateApplication
},
methods: {
//
resetDataList () {
this.dataForm.orderId = ''
this.page = 1 //
this.query()
},
//
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
}
}
}
</script>

View File

@ -0,0 +1,475 @@
<template>
<div class="ability-box">
<div class="top">
<div class="type">{{ type }}</div>
<el-button type="primary" size="small" @click="clickOpen">添加</el-button>
</div>
<el-dialog :visible.sync="showModal" title="请选择" @close="close" :close-on-click-modal="false"
:close-on-press-escape="false" :key="showKey" append-to-body>
<div class="relate-application-content" v-if="type==='组件服务'">
<el-transfer v-model="selectedArray" filterable :filter-method="filterMethod" filter-placeholder="请输入名称"
:titles="nameArray" :props="{
key: 'id',
label: 'name',
}" :data="transferData">
</el-transfer>
</div>
<div v-else-if="type==='数据资源'" class="dataTransfer">
<el-transfer v-model="selectedArray" filter-placeholder="请输入名称"
:titles="nameArray" :props="{
key: 'id',
label: 'name',
}" :data="transferData">
</el-transfer>
<el-input
v-model="searchValue"
placeholder="请输入名称"
></el-input>
<el-button @click="rest" class="restClick">重置</el-button>
</div>
<el-pagination
v-if="type==='数据资源'"
:current-page="currentPage"
:page-size="15"
layout="total, prev, pager, next"
:total="total"
@current-change="pageCurrentChangeHandle"
>
</el-pagination>
<template slot="footer">
<el-button @click="showModal = false">{{ $t("cancel") }}</el-button>
<el-button type="primary" @click="confirmSubmitHandle()">{{
$t("confirm")
}}</el-button>
</template>
</el-dialog>
<DisplayList :displayList="displayList" showKey="name"></DisplayList>
</div>
</template>
<script>
import InfrastructureModal from '../assignedScene/components/infrastructure-modal.vue'
import DisplayList from '../assignedScene/components/display-list.vue'
const sjzyArray = [
{
zyname: '城阳区图书馆总分馆、社区图书室明细信息',
sjcczl: 0.02,
zycode: '307013110716000007',
ygxjghjls: 0,
jghxxjlzs: 0,
neibukeshi: '',
xgxt: '城阳区图书馆及总分馆、社区图书室明细信息',
ygxdsjccl: 0,
zygszl: 'et',
ykfjghjls: 0,
syqk: 0,
zyformat: '电子表格',
guid: '277c51e0-066b-441d-9262-6e53ce6fc99a',
TGBM: '城阳区文化和旅游局',
ykfdsjccl: 0
},
{
zyname: '2021年度西海岸新区科技型中小企业名单信息',
sjcczl: 0,
zycode: '307013109000000010',
ygxjghjls: 0,
jghxxjlzs: 0,
neibukeshi: '高新技术科',
xgxt: '2021年度西海岸新区科技型中小企业名单信息企业名称入库编号。',
ygxdsjccl: 0,
zygszl: 'access',
ykfjghjls: 0,
syqk: 0,
zyformat: '数据库',
guid: '6ed1a478-443a-48ee-8af0-4c7ac2681a94',
TGBM: '青岛西海岸新区工业和信息化局(区科技局、区大数据局)',
ykfdsjccl: 0
},
{
zyname: '西海岸新区高新技术企业名单信息',
sjcczl: 0,
zycode: '307013109000000012',
ygxjghjls: 0,
jghxxjlzs: 0,
neibukeshi: '高新技术科',
xgxt: '西海岸新区高新技术企业名单信息',
ygxdsjccl: 0,
zygszl: 'access',
ykfjghjls: 0,
syqk: 0,
zyformat: '数据库',
guid: '770a9127-e7fd-4a6b-ba17-c80cf06ab670',
TGBM: '青岛西海岸新区工业和信息化局(区科技局、区大数据局)',
ykfdsjccl: 0
},
{
zyname: '西海岸新区高新技术企业认定补助名单信息',
sjcczl: 0,
zycode: '307013109000000011',
ygxjghjls: 0,
jghxxjlzs: 0,
neibukeshi: '高新技术科',
xgxt: '西海岸新区高新技术企业认定补助名单信息,企业名称、扶持项目。',
ygxdsjccl: 0,
zygszl: 'access',
ykfjghjls: 0,
syqk: 0,
zyformat: '数据库',
guid: 'ae52c5f8-ef6e-4ae9-a657-79dcb6f65643',
TGBM: '青岛西海岸新区工业和信息化局(区科技局、区大数据局)',
ykfdsjccl: 0
},
{
zyname: '青岛西海岸新区第六批区级非物质文化遗产代表性项目名录',
sjcczl: 0,
zycode: '307013109026000037',
ygxjghjls: 0,
jghxxjlzs: 0,
neibukeshi: '艺术科',
xgxt: '青岛西海岸新区第六批区级非物质文化遗产代表性项目名录,如项目类别、序号、项目名称、申报单位',
ygxdsjccl: 0,
zygszl: 'et',
ykfjghjls: 0,
syqk: 0,
zyformat: '电子表格',
guid: '6d80a3b1-744e-4292-a904-0168d640b1fc',
TGBM: '青岛西海岸新区文化和旅游局(区新闻出版广电局、区文物局)',
ykfdsjccl: 0
}
]
const res = {
code: 0,
msg: 'success',
data: {
PageCount: '2115',
data: sjzyArray,
rows: '10573'
}
}
const keyObj = {
"数据资源": {
idKey: 'id',
nameKey: 'name'
},
"组件服务": {
idKey: 'id',
nameKey: 'name'
}
}
export default {
props: {
type: {
type: String,
default: ''
},
nameArray: {
type: Array,
default: () => ['未选择名称', '已选择名称']
},
//
maxNum: {
type: Number,
default: 10
},
getDataParams: {
type: Object,
default: () => {
return {
methods: 'get',
url: '',
postData: {}
}
}
}
},
data () {
return {
showKey: 0,
showModal: false,
transferData: [],
selectedArray: [],
allData: [],
displayList: [], // list
total: 0,
currentPage: 1,
newNum: 1,
searchValue: ''
}
},
watch: {
showModal (newVal) {
if (newVal) {
this.getData()
}
},
newNum (newVal) {
if (newVal) {
this.getDataParams.postData.pageNum = newVal
this.getData()
}
},
searchValue (newVal) {
if (newVal) {
this.getDataParams.postData.serviceName = newVal
this.getData()
}
}
},
methods: {
async getDataInfo (dataForm) {
await this.getData()
const arr = []
const attrValue = dataForm.fuseResourceList.filter(v => v.type == this.type)
if (attrValue.length > 0) {
attrValue.map(val => {
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.selectedArray = arr.map(v => v.id)
this.$nextTick(() => {
console.log(999, this.displayList)
})
},
//
getData () {
if (this.getDataParams.url === '') {
return
}
if (this.type === '组件服务') {
this.$http[this.getDataParams.methods](this.getDataParams.url, {
params: this.getDataParams.postData
}).then(res => {
console.log('res.data----获取列表-------->', res.data)
if (res.data.code !== 0) {
return this.$message.error(res.msg)
}
this.transferData = []
this.allData = [];
(res.data.data || []).map(v => {
this.transferData.push({
type: this.type,
id: v[keyObj[this.type].idKey],
name: v[keyObj[this.type].nameKey] || '--'
})
})
this.allData = JSON.parse(JSON.stringify(this.transferData))
console.log(this.allData, 'this.transferData')
}).catch(err => {
this.$message.error(err)
})
} else if (this.type === '数据资源') {
this.getDataParams.postData.pageNum = this.newNum
this.$http[this.getDataParams.methods](this.getDataParams.url,
this.getDataParams.postData
).then(res => {
console.log('res.data----获取列表-------->', res.data)
this.total = Number(res.data.data.rows)
if (res.data.code !== 0) {
return this.$message.error(res.msg)
}
this.transferData = []
this.allData = [];
(res.data.data.data || []).map(v => {
this.transferData.push({
type: this.type,
id: v.guid,
name: v.zyname || '--'
})
})
this.allData = JSON.parse(JSON.stringify(this.transferData))
}).catch(err => {
this.$message.error(err)
})
}
},
filterMethod (query, item) {
console.log('1111111111111111111111111')
return item.name && item.name.indexOf(query) > -1
},
confirmSubmitHandle () {
if (this.selectedArray.length > this.maxNum) {
return this.$message.error('最多选择十条数据!')
}
this.showModal = false
this.displayList = []
this.allData.map(v => {
if (this.selectedArray.includes(v.id)) {
this.displayList.push(v)
}
})
this.$emit('update', {
title: this.type,
list: this.selectedArray
})
},
getDisplay (displayList) {
this.displayList = []
this.displayList = displayList
},
close () {
this.showModal = false
// this.selectedArray = []
this.allData = []
this.transferData = []
},
pageCurrentChangeHandle (val) {
console.log(this.newNum, val, 'wowowo')
this.newNum = val
},
clickOpen () {
this.searchValue = ''
this.getDataParams.postData.serviceName = ''
this.currentPage = 1
this.showModal = true
this.getData()
},
rest () {
this.currentPage = 1
this.searchValue = ''
this.getDataParams.postData.serviceName = ''
this.getData()
}
},
components: { InfrastructureModal, DisplayList },
mounted () {
console.log(this.type, 'this.type')
}
}
</script>
<style lang="scss" scoped>
.ability-box {
margin-bottom: 10px;
.show-box {
display: flex;
justify-content: flex-start;
align-items: flex-start;
}
.top {
display: flex;
align-items: center;
justify-content: flex-start;
}
.type {
padding-right: 12px;
font-size: 14px;
color: #606266;
width: 100px;
box-sizing: border-box;
text-align: right;
line-height: 40px;
height: 40px;
}
.list-box {
display: flex;
align-items: center;
justify-content: flex-start;
flex-wrap: wrap;
margin-left: 100px;
}
.list-item {
font-size: 14px;
color: #606266;
width: 380px;
text-align: left;
margin-right: 10px;
line-height: 40px;
height: 40px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
</style>
<style lang="scss" scoped>
.icon-input ::v-deep .el-input__inner {
cursor: pointer;
}
::v-deep .el-dialog__body {
height: 580px;
overflow: auto;
}
::v-deep .el-checkbox-button__inner {
width: 130px;
margin: 0 10px 5px;
border-left: unset !important;
border-radius: unset !important;
border: 1px solid #dcdfe6 !important;
}
.relate-application-content {
height: 100%;
::v-deep .el-transfer {
height: 100%;
}
::v-deep .el-transfer-panel {
width: 39.5%;
height: 100%;
}
::v-deep .el-transfer-panel__body {
height: 100%;
}
::v-deep .el-transfer-panel__list.is-filterable {
height: calc(100% - 102px);
}
}
.dataTransfer {
position: relative;
height: 100%;
::v-deep .el-transfer {
height: 100%;
}
::v-deep .el-transfer-panel {
width: 39.5%;
height: 100%;
}
::v-deep .el-transfer-panel__body {
height: 100%;
}
::v-deep .el-transfer-panel__list {
height: calc(100% - 102px);
margin-top: 4rem;
}
::v-deep .el-input {
position: absolute;
font-size: 14px;
display: inline-block;
width: 30%;
top: 52px;
left: 12px;
}
.restClick {
position: absolute;
top: 52px;
left: 284px;
}
}
</style>

View File

@ -0,0 +1,133 @@
<template>
<div class="question-box">
<div class="title">
{{ title }}
</div>
<div v-for="(item, index) in dataInfo" :key="index">
<el-form-item :label="keyTextObj.nameObj.text">
<el-input v-model="item[keyTextObj.nameObj.key]" :placeholder="`请输入${keyTextObj.nameObj.text}`"
style="width:90%">
</el-input>
</el-form-item>
<el-form-item :label="keyTextObj.descObj.text">
<el-input type="textarea" :rows="2" v-model="item[keyTextObj.descObj.key]"
:placeholder="`请输入${keyTextObj.descObj.text}`" style="width:90%">
</el-input>
<el-button style="margin-left:10px" @click="deleteItem(index)" type="danger" size="small"
v-if="dataInfo.length > 1">删除
</el-button>
</el-form-item>
<el-button class="add-btn" size="small" v-if="index == dataInfo.length - 1" @click="addItem" type="primary">
添加
</el-button>
</div>
</div>
</template>
<script>
export default {
props: {
dataForm: {
type: Object,
default: () => { }
},
title: {
type: String,
default: '常见问题'
},
keyTextObj: {
type: Object,
default: () => {
return {
nameObj: {
text: '问题名称',
key: 'question'
},
descObj: {
text: '问题描述',
key: 'answer'
},
}
}
}
},
data() {
return {
dataInfo: []
}
},
watch: {
dataInfo: {
handler(newVal) {
this.dataInfo = newVal;
this.$emit('update', {
title: this.title,
list: newVal
})
},
deep: true,
immediate: true,
},
},
methods: {
getDataInfo(dataForm) {
let arr = []
if (dataForm && (dataForm.id || dataForm.id === 0)) {
let fuseAttrList = dataForm.fuseAttrList || [];
let obj = fuseAttrList.find(v => v.attrType === this.title) || {}
let attrValue = JSON.parse(obj.attrValue || "[]")
if (attrValue.length > 0) {
attrValue.map(v => {
arr.push({
[this.keyTextObj.nameObj.key]: v[this.keyTextObj.nameObj.key],
[this.keyTextObj.descObj.key]: v[this.keyTextObj.descObj.key],
})
})
} else {
arr = []
arr.push({
[this.keyTextObj.nameObj.key]: '',
[this.keyTextObj.descObj.key]: '',
})
}
} else {
arr = []
arr.push({
[this.keyTextObj.nameObj.key]: '',
[this.keyTextObj.descObj.key]: '',
})
}
this.dataInfo = arr;
},
//
addItem() {
let index = this.dataInfo.length - 1;
if (this.dataInfo[index][this.keyTextObj.nameObj.key] === '' || this.dataInfo[index][this.keyTextObj.descObj.key] === '') {
return this.$message.warning('请填写完整信息!')
}
this.dataInfo.push({
[this.keyTextObj.nameObj.key]: '',
[this.keyTextObj.descObj.key]: '',
})
},
//
deleteItem(list, index) {
this.dataInfo.splice(index, 1)
}
}
}
</script>
<style lang="scss" scoped>
.question-box {
.title {
text-align: center;
font-weight: 600;
font-size: 18px;
margin-bottom: 10px;
}
}
.add-btn {
margin-top: -12px;
margin-left: 100px;
}
</style>

View File

@ -0,0 +1,178 @@
<!-- 融合服务--组合能力 -->
<template>
<div class="content-box">
<div class="title">
{{ title }}
</div>
<div class="no-data loading-box" v-loading="loading" v-if="loading">
</div>
<div v-if="!loading">
<div v-for="(item, index) in dataInfo" :key="index">
<el-form-item label="能力类别" prop="">
<el-select v-model="item.type" placeholder="请选择能力类别" @change="(data) => filterSelect(data, item)"
:disabled="disabledType">
<el-option v-for="val in typeOptions" :key="val.value" :label="val.value" :value="val.value">
</el-option>
</el-select>
<el-select class="ability-input" style="margin-left: 20px;max-width:530px" v-model="item.resourceId"
placeholder="请选择能力" filterable :disabled="disabledType">
<el-option style="max-width:530px" v-for="val in item.abilityOptions" :key="val.id"
:label="val.name || '--'" :value="val.id">
</el-option>
</el-select>
<el-button style="margin-left:10px" @click="deleteItem(dataInfo, index)" type="danger" size="small"
v-if="!disabledType && dataInfo.length > 1">删除
</el-button>
</el-form-item>
<el-button style="margin-left:100px" size="small" v-if="!disabledType && index == dataInfo.length - 1"
@click="addItem(dataInfo, 0)" type="primary">添加
</el-button>
</div>
</div>
</div>
</template>
<script>
export default {
props: {
dataForm: {
type: Object,
default: () => { }
},
title: {
type: String,
default: '组合能力'
},
//
disabledType: {
type: Boolean,
default: false
},
},
data() {
return {
typeOptions: [
{
value: '数据资源',
},
{
value: '组件服务',
},
{
value: '基础设施',
},
],
dataInfo: [],
abilityArrayCopy: [],
loading: false,
}
},
watch: {
dataInfo: {
handler(newVal) {
this.dataInfo = newVal;
let arr = newVal.map((v, index) => {
return {
sequence: index,
resourceId: v.resourceId,
}
})
this.$emit('update', {
title: this.title,
list: arr
})
},
deep: true,
immediate: true,
},
},
mounted() {
},
methods: {
async getDataInfo(dataForm) {
await this.getAbility()
let arr = []
let attrValue = dataForm.fuseResourceList || []
if (attrValue.length > 0) {
attrValue.map(v => {
let _obj = {
type: v.resource && v.resource.type,
resourceId: v.resourceId,
}
this.filterSelect(v.resource && v.resource.type, _obj)
arr.push(_obj)
})
} else {
arr = []
arr.push({
type: "",
resourceId: "",
abilityOptions: []
})
}
this.dataInfo = arr;
this.$nextTick(() => {
console.log(999, this.dataInfo)
})
},
//
addItem(list) {
list.push({
type: "",
resourceId: "",
abilityOptions: []
})
},
//
deleteItem(list, index) {
list.splice(index, 1)
},
//
getAbility() {
return new Promise((resolve, reject) => {
this.abilityArrayCopy = []
this.loading = true;
this.$http.get(`/resource/list`, {}).then(({ data: res }) => {
this.loading = false;
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.abilityArrayCopy = res.data || []
resolve(res)
}).catch((err) => {
this.loading = false;
this.$message.error(err)
reject(err)
})
})
},
filterSelect(type, item) {
let arr = this.abilityArrayCopy.filter(v => v.type == type)
let selectArray = this.dataInfo.map(v => v.resourceId) || [];
//
item.abilityOptions = arr.filter(v => !selectArray.includes(v.id))
console.log('abilityOptions------------>', item.abilityOptions);
},
}
}
</script>
<style lang="scss" scoped>
.content-box {
margin-bottom: 20px;
.title {
text-align: center;
font-weight: 600;
font-size: 18px;
margin-bottom: 10px;
}
}
.loading-box {
width: 100%;
height: 100px;
}
.ability-input {
width: calc(100% - 300px);
}
</style>

View File

@ -0,0 +1,154 @@
<template>
<el-dialog :visible.sync="isShow" :title="childName" :close-on-click-modal="false" :close-on-press-escape="false">
<el-table
border
:data="tableData"
>
<el-table-column
prop="id"
label="主键id"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="fuseId"
label="融合服务id"
header-align="center"
align="center"
></el-table-column>
<el-table-column
v-if="childName==='融合资源属性'"
prop="attrType"
label="属性类型"
header-align="center"
align="center"
></el-table-column>
<el-table-column
v-if="childName==='融合资源属性'"
prop="attrValue"
label="属性值"
header-align="center"
align="center"
></el-table-column>
<el-table-column
v-if="childName==='资源融合关系'"
prop="resourceId"
label="资源id"
header-align="center"
align="center"
></el-table-column>
<el-table-column
v-if="childName==='资源融合关系'"
prop="sequence"
label="资源挂载顺序"
header-align="center"
align="center"
></el-table-column>
</el-table>
</el-dialog>
</template>
<script>
import 'quill/dist/quill.snow.css'
export default {
props: {
childName: {
type: String,
default: ''
},
// columns: {
// type: Array,
// default: function () {
// return []
// }
// },
tableData: {
type: Array,
default: function () {
return []
}
},
isShow: {
type: Boolean,
default: false
}
},
data () {
return {
visible: false,
}
},
computed: {
},
methods: {
show () {
this.visible = true
},
}
}
</script>
<style lang="scss" scoped>
.icon-input ::v-deep .el-input__inner {
cursor: pointer;
}
.detial-form ::v-deep {
.el-form-item {
margin-bottom: 0px;
line-height: 32px;
}
.el-form-item__label {
line-height: 32px;
}
.el-form-item__content {
line-height: 32px;
}
}
</style>
<style lang="scss">
.mod-sys__menu {
.menu-list,
.icon-list {
.el-input__inner,
.el-input__suffix {
cursor: pointer;
}
}
&-icon-popover {
width: 458px;
overflow: hidden;
}
&-icon-inner {
width: 478px;
max-height: 258px;
overflow-x: hidden;
overflow-y: auto;
}
&-icon-list {
width: 458px;
padding: 0;
margin: -8px 0 0 -8px;
> .el-button {
padding: 8px;
margin: 8px 0 0 8px;
> span {
display: inline-block;
vertical-align: middle;
width: 18px;
height: 18px;
font-size: 18px;
}
}
}
}
</style>

View File

@ -48,8 +48,6 @@ export default {
}, },
methods: { methods: {
onSuccess (res, file) { onSuccess (res, file) {
console.log('limit', this.limit)
console.log(res, file, this.child)
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error('上传图片失败') return this.$message.error('上传图片失败')
} }
@ -88,10 +86,8 @@ export default {
} else { } else {
this.child.note1 = arr.join(';') this.child.note1 = arr.join(';')
} }
console.log(this.child.note1)
}, },
onPreview (file) { onPreview (file) {
console.log('点击预览===============>', file)
window.open(file.response.data) window.open(file.response.data)
}, },
onExceed (files, fileList) { onExceed (files, fileList) {

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,557 @@
<template>
<div class='container'>
<div>
<span class='title-style'>组件服务</span>
<span class='page-introduction'>发布情况统计</span>
<button class='back-btn' @click="backBtn">返回</button>
</div>
<div class='container-body'>
<div class='container-body1'>
<span style='font-size:18px;color;#000000;'>评分发布情况</span>
<div id="main1" style="width: 400px;height:200px;"></div>
</div>
<div class='container-body2'>
<span style='font-size:18px;color;#000000;'>发布量情况分布</span>
<div id="main2" style="width: 400px;height:200px;"></div>
</div>
<div class='container-body3'>
<span style='font-size:18px;color;#000000;'>应用领域分布情况</span>
<div id="main3" style="width: 400px;height:200px;"></div>
</div>
<div class='container-body4'>
<div style='margin-bottom:30px'>
<span style='font-size:18px;color;#000000;'>被调用组件及数量</span>
<img src="@/assets/img/TOP5.png" style='margin-left:10px'>
</div>
<div v-for="(item,index) in usedList" :key='index' >
<div style='display:flex'>
<div class='ranking-img' :style="{background:colorList[index%5],width: widthList[index%5]}">
<span style='font-weight:bold' :style="{color:numColorList[index%5]}">{{index+1}}</span>
</div>
<span class='num-style'>{{item.name}}</span>
<span class='count-style' :style="{color:numColorList[index%5]}">{{item.resourceCarNum}}</span>
</div>
</div>
</div>
<div class='container-body5'>
<div style='margin-bottom:30px'>
<span style='font-size:18px;color;#000000;'>被申请组件及数量</span>
<img src="@/assets/img/TOP5.png" style='margin-left:10px'>
</div>
<div v-for="(item,index) in applicationList" :key='index' >
<div style='display:flex'>
<div class='ranking-img' :style="{background:colorList[index%5],width: widthList[index%5]}">
<span style='font-weight:bold' :style="{color:numColorList[index%5]}">{{index+1}}</span>
</div>
<span class='num-style'>{{item.name}}</span>
<span class='count-style' :style="{color:numColorList[index%5]}">{{item.resourceCarNum}}</span>
</div>
</div>
</div>
</div>
<div class='footer'>
<div class='footer-left' ></div>
<span style='color:#b7c2d1;font-size:16px'>到底啦</span>
<div class='footer-right'></div>
</div>
</div>
</template>
<script>
import * as echarts from 'echarts';
export default {
props:{
tableId:{
type:String,
default:''
},
fatherId:{
type:Number,
default:null,
}
},
data(){
return{
data1:[],
data2: [
// { value: 1048,name: '' },
// { value: 735, name: '' },
// { nums: 580, attr_value: '' },
// { nums: 484, attr_value: '' },
],
data3: [
// { value: 1048,name: '' },
],
colorList:['linear-gradient(to right, rgba(251, 59, 5,0.6),transparent)', 'linear-gradient(to right,rgba(251, 123, 5),transparent)','linear-gradient(to right,rgba(250, 179, 2,.6),transparent)','linear-gradient(to right,rgba(82, 106, 255,.6),transparent','linear-gradient(to right,rgba(82, 106, 255,.6),transparent)',],
widthList:['90px','80px','70px','60px','50px'],
numColorList:['#fc5656','#ff8a00','#f9af0a','#808fff','#808fff'],
usedList:[{name:'组件名称一',resourceCarNum:111},{name:'组件名称一',resourceCarNum:111},{name:'组件名称一',resourceCarNum:111},{name:'组件名称四',resourceCarNum:111},{name:'组件名称五',resourceCarNum:111},],
applicationList:[{name:'组件名称一',resourceCarNum:111},{name:'组件名称一',resourceCarNum:111},{name:'组件名称一',resourceCarNum:111},{name:'组件名称四',resourceCarNum:111},{name:'组件名称五',resourceCarNum:111},]
}
},
created(){
if(this.fatherId===1){
this.getBeCalled()
this.getBeApplied()
this.getAlgorithm()
this.getDistributed()
this.getScoreList()
}else{
}
},
mounted(){
},
methods:{
//
getScoreList () {
this.$http.get('/census/center/v3/assemblerScoreInfo' ,{
params : {
id:this.tableId,
resourceType:"应用资源"
// pageNo: pageNo || 1,
// pageSize: 20
}
}).then(res => {
let arry=[]
arry=res.data.data
arry.forEach((item)=>{
const single={
value:item.scoreNum,
name:item.score
}
// const newList=[]
this.data1.push(single)
// this.data2=newList
this.myEcharts1()
})
})
},
//
getAlgorithm () {
this.$http.get('/census/center/v3/assemblerUsedInfo' ,{
params : {
id:this.tableId,
resourceType:"组件服务"
// pageNo: pageNo || 1,
// pageSize: 20
}
}).then(res => {
let arry=[]
arry=res.data.data
arry.forEach((item)=>{
const single={
value:item.nums,
name:item.attr_value
}
// const newList=[]
this.data2.push(single)
// this.data2=newList
this.myEcharts2()
})
})
},
//
getDistributed () {
this.$http.get('/census/center/v3/applicationAreaCapabilityList' ,{
params : {
id:this.tableId,
resourceType:"应用资源"
}
}).then(res => {
let arry=[]
arry=res.data.data
arry.forEach((item)=>{
const single={
value:item.total,
name:item.type
}
const newList=[]
this.data3.push(single)
// this.data2=newList
this.myEcharts3()
})
})
},
//
getBeCalled () {
this.$http.get('/census/center/v3/assemblerCaredTopInfo' ,{
params : {
id:this.tableId,
resourceType:"应用资源"
// pageNo: pageNo || 1,
// pageSize: 20
}
}).then(res => {
this.applicationList =res.data.data
})
},
//
getBeApplied () {
this.$http.get('/census/center/v3/assemblerCaredTopInfo' ,{
params : {
id:this.tableId,
resourceType:"组件服务"
// pageNo: pageNo || 1,
// pageSize: 20
}
}).then(res => {
this.applicationList =res.data.data
})
},
myEcharts1(){
var chartDom = document.getElementById('main1');
var myChart = echarts.init(chartDom);
var option;
option = {
tooltip: {
trigger: 'item'
},
legend: {
orient: '',
top: '14%',
left: '55%',
width:"auto",
height:"auto",
orient: "vertical",
itemGap: 15,
itemWidth: 14,
// 使
formatter: function(name) {
var data = option.series[0].data;
var total = 0;
var tarValue;
for (var i = 0; i < data.length; i++) {
total += Number(data[i].value);
if (data[i].name == name) {
tarValue = data[i].value;
}
}
var v = tarValue;
var p = Math.round(((v / total) * 100));
return `${name} ${p}%`;
},
itemStyle:{},
textStyle: {
color: "#666666",
padding:[0,8,0,18]
},
},
color: ['#0087ff', '#51cb8d', '#fcc549', '#ef6567', '#ff8a00', '#fc5656'],
series: [
{
type: 'pie',
radius: ['40%', '60%'],
center:['22%', '50%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
labelLine: {
show: false
},
data: this.data1
}
]
};
option && myChart.setOption(option);
},
myEcharts2(){
var chartDom = document.getElementById('main2');
var myChart = echarts.init(chartDom);
var option;
option = {
tooltip: {
trigger: 'item'
},
legend: {
orient: '',
top: '22%',
left: '50%',
width:"auto",
height:"auto",
orient: "vertical",
itemGap: 15,
itemWidth: 14,
// 使
formatter: function(name) {
var data = option.series[0].data;
var total = 0;
var tarValue;
for (var i = 0; i < data.length; i++) {
total += Number(data[i].value);
if (data[i].name == name) {
tarValue = data[i].value;
}
}
var v = tarValue;
var p = Math.round(((tarValue / total) * 100));
return `${name} ${p}%`;
},
itemStyle:{},
textStyle: {
color: "#666666",
padding:[0,8,0,18]
},
},
color: ['#0087ff', '#51cb8d', '#fcc549', '#ef6567', '#ff8a00', '#fc5656'],
series: [
{
// name: 'Access From',
type: 'pie',
radius: ['40%', '60%'],
center:['22%', '50%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
labelLine: {
show: false
},
data: this.data2
}
]
};
option && myChart.setOption(option);
},
myEcharts3(){
var chartDom = document.getElementById('main3');
var myChart = echarts.init(chartDom);
var option;
option = {
tooltip: {
trigger: 'item'
},
legend: {
orient: "vertical", type: 'scroll',
top: '22%',
left: '50%',
width:"auto",
height:"auto",
orient: "vertical",
itemGap: 15,
itemWidth: 14,
// 使
formatter: function(name) {
var data = option.series[0].data;
var total = 0;
var tarValue;
for (var i = 0; i < data.length; i++) {
total += Number(data[i].value);
if (data[i].name == name) {
tarValue = data[i].value;
}
}
var v = tarValue;
var p = Math.round(((tarValue / total) * 100));
return `{a|${name}} {b|${p}%}`;
},
itemStyle:{},
textStyle: {
rich: {
// richoneonetwotwothreethree""
a: {
//
width: 100,
color: "#666666",
fontSize: 12,
// fontWeight: "bolder",
},
b: {
// 102030
width: 35,
color: "#333",
fontSize: 12,
},
},
color: "#666666",
backgroundColor: "transparent",
padding:[0,8,0,18]
},
},
color: ['#0087ff', '#51cb8d', '#fcc549', '#ef6567', '#ff8a00', '#fc5656'],
series: [
{
// name: 'Access From',
type: 'pie',
radius: ['40%', '60%'],
center:['22%', '50%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
// emphasis: {
// label: {
// show: true,
// fontSize: '40',
// fontWeight: 'bold'
// }
// },
labelLine: {
show: false
},
data:this.data3
}
]
};
option && myChart.setOption(option);
},
backBtn(){
this.$emit('closeChild')
}
}
}
</script>
<style scoped>
.container{
padding-top: 15px;
display: flex;
flex-direction: column;
}
.title-style{
font-size: 24px;
color:#000000;
font-weight: bold;
}
.page-introduction{
font-size: 18px;
color:#666666;
margin-left: 20px;
}
.back-btn{
background: #3e8ef7;
border-color: rgba(101, 165, 249,0);
color: #FFF;
margin-left:1030px;
padding-bottom: 3px;
}
.container-body{
width:1300px;
margin-top:30px;
display: flex;
flex-wrap:wrap
}
.container-body1{
width:420px;
height:250px;
background-color: #ffffff;
margin-right:20px;
padding-top:20px;
padding-left: 20px;
}
.container-body2{
width:420px;
height:250px;
background-color: #ffffff;
margin-right:20px;
padding-top:20px;
padding-left: 20px;
}
.container-body3{
width:420px;
height:250px;
background-color: #ffffff;
padding-top:20px;
padding-left: 20px;
}
.container-body4{
width:640px;
height:300px;
background-color: #ffffff;
padding-top:20px;
padding-left: 20px;
margin-top: 20px;
margin-right: 20px;
background-image:url("../../../assets/img/排行榜背景图.png");
background-repeat:no-repeat;
background-size: 100% 100%;
}
.container-body5{
width:640px;
height:300px;
background-color: #ffffff;
padding-top:20px;
padding-left: 20px;
margin-top: 20px;
background-image:url("../../../assets/img/排行榜背景图.png");
background-repeat:no-repeat;
background-size: 100% 100%;
}
.footer{
display: flex;
margin-top:50px;
margin-left:365px;
}
.footer-left{
width:250px;
height:1px;
background-color:#e0eaf8;
margin-right:10px;
margin-top:8px
}
.footer-right{
width:250px;
height:1px;
background-color:#e0eaf8;
margin-left:10px;
margin-top:8px
}
.ranking-img{
width:60px;
height:26px;
display: flex;
line-height: 26px;
margin-bottom:15px;
margin-right:10px;
padding-left: 15px;
}
.num-style{
position:absolute;
display: flex;
margin-left:90px;
margin-top:5px;
color:#333333;
font-size: 16px;
}
.count-style{
position:absolute;
display: flex;
margin-left:400px;
margin-top:5px;
color:#333333;
font-size: 18px;
font-weight: bold;
}
</style>

View File

@ -0,0 +1,554 @@
<template>
<div class='container'>
<div>
<span class='title-style'>组件服务</span>
<span class='page-introduction'>使用情况统计</span>
<button class='back-btn' @click="backBtn">返回</button>
</div>
<div class='container-body'>
<!-- <div class='container-body1'>
<span style='font-size:18px;color;#000000;'>评分发布情况</span>
<div id="main1" style="width: 400px;height:200px;"></div>
</div> -->
<div class='container-body2'>
<span style='font-size:18px;color;#000000;'>使用组件数量分布</span>
<div id="main2" style="width: 400px;height:200px;"></div>
</div>
<div class='container-body3'>
<span style='font-size:18px;color;#000000;'>使用组件应用领域分布情况</span>
<div id="main3" style="width: 400px;height:200px;"></div>
</div>
<div class='container-body4'>
<div style='margin-bottom:30px'>
<span style='font-size:18px;color;#000000;'>Top5使用组件</span>
<img src="@/assets/img/TOP5.png" style='margin-left:10px'>
</div>
<div v-for="(item,index) in usedList" :key='index' >
<div style='display:flex'>
<div class='ranking-img' :style="{background:colorList[index%5],width: widthList[index%5]}">
<span style='font-weight:bold' :style="{color:numColorList[index%5]}">{{index+1}}</span>
</div>
<span class='num-style'>{{item.name}}</span>
<span class='count-style' :style="{color:numColorList[index%5]}">{{item.useNum}}</span>
</div>
</div>
</div>
<div class='container-body5'>
<div style='margin-bottom:30px'>
<span style='font-size:18px;color;#000000;'>使用组件评分</span>
<img src="@/assets/img/TOP5.png" style='margin-left:10px'>
</div>
<div v-for="(item,index) in applicationList" :key='index' >
<div style='display:flex'>
<div class='ranking-img' :style="{background:colorList[index%5],width: widthList[index%5]}">
<span style='font-weight:bold' :style="{color:numColorList[index%5]}">{{index+1}}</span>
</div>
<span class='num-style'>{{item.name}}</span>
<span class='count-style' :style="{color:numColorList[index%5]}">{{item.score}}</span>
</div>
</div>
</div>
</div>
<div class='footer'>
<div class='footer-left' ></div>
<span style='color:#b7c2d1;font-size:16px'>到底啦</span>
<div class='footer-right'></div>
</div>
</div>
</template>
<script>
import * as echarts from 'echarts'
export default {
props: {
tableId: {
type: String,
default: ''
},
fatherId: {
type: Number,
default: null
}
},
data () {
return {
data1: [],
data2: [
// { value: 1048,name: '' },
// { value: 735, name: '' },
// { nums: 580, attr_value: '' },
// { nums: 484, attr_value: '' },
],
data3: [
// { value: 1048,name: '' },
],
colorList: ['linear-gradient(to right, rgba(251, 59, 5,0.6),transparent)', 'linear-gradient(to right,rgba(251, 123, 5),transparent)', 'linear-gradient(to right,rgba(250, 179, 2,.6),transparent)', 'linear-gradient(to right,rgba(82, 106, 255,.6),transparent', 'linear-gradient(to right,rgba(82, 106, 255,.6),transparent)'],
widthList: ['90px', '80px', '70px', '60px', '50px'],
numColorList: ['#fc5656', '#ff8a00', '#f9af0a', '#808fff', '#808fff'],
usedList: [{ name: '组件名称一', useNum: 111 }, { name: '组件名称一', useNum: 111 }, { name: '组件名称一', useNum: 111 }, { name: '组件名称四', useNum: 111 }, { name: '组件名称五', useNum: 111 }],
applicationList: [{ name: '组件名称一', score: 111 }, { name: '组件名称一', score: 111 }, { name: '组件名称一', score: 111 }, { name: '组件名称四', score: 111 }, { name: '组件名称五', score: 111 }]
}
},
created () {
if (this.fatherId === 1) {
this.getBeCalled()
this.getBeApplied()
this.getAlgorithm()
this.getDistributed()
this.getScoreList()
} else {
}
},
mounted () {
},
methods: {
//
getScoreList () {
this.$http.get('/census/center/v3/assemblerScoreInfo', {
params: {
id: this.tableId,
resourceType: '应用资源'
// pageNo: pageNo || 1,
// pageSize: 20
}
}).then(res => {
let arry = []
arry = res.data.data
arry.forEach((item) => {
const single = {
value: item.scoreNum,
name: item.score
}
// const newList=[]
this.data1.push(single)
// this.data2=newList
this.myEcharts1()
})
})
},
//
getAlgorithm () {
this.$http.get('/census/center/v3/assemblerUsedInfo', {
params: {
id: this.tableId,
resourceType: '组件服务'
// pageNo: pageNo || 1,
// pageSize: 20
}
}).then(res => {
let arry = []
arry = res.data.data
arry.forEach((item) => {
const single = {
value: item.nums,
name: item.attr_value
}
// const newList=[]
this.data2.push(single)
// this.data2=newList
this.myEcharts2()
})
})
},
//
getDistributed () {
this.$http.get('/census/center/v3/applicationUsedAreaCapabilityList', {
params: {
id: this.tableId,
resourceType: '组件服务'
}
}).then(res => {
let arry = []
arry = res.data.data
arry.forEach((item) => {
const single = {
value: item.total,
name: item.type
}
this.data3.push(single)
this.myEcharts3()
})
})
},
// top5使
getBeCalled () {
this.$http.get('/census/center/v3/assemblerUseTopInfo', {
params: {
id: this.tableId,
resourceType: '组件服务'
// pageNo: pageNo || 1,
// pageSize: 20
}
}).then(res => {
this.usedList = res.data.data
})
},
// 使5
getBeApplied () {
this.$http.get('/census/center/v3/assemblerUseScoreTopInfo', {
params: {
id: this.tableId,
resourceType: '应用资源'
// pageNo: pageNo || 1,
// pageSize: 20
}
}).then(res => {
this.applicationList = res.data.data
})
},
myEcharts1 () {
var chartDom = document.getElementById('main1')
var myChart = echarts.init(chartDom)
var option
option = {
tooltip: {
trigger: 'item'
},
legend: {
orient: '',
top: '14%',
left: '55%',
width: 'auto',
height: 'auto',
orient: 'vertical',
itemGap: 15,
itemWidth: 14,
// 使
formatter: function (name) {
var data = option.series[0].data
var total = 0
var tarValue
for (var i = 0; i < data.length; i++) {
total += Number(data[i].value)
if (data[i].name == name) {
tarValue = data[i].value
}
}
var v = tarValue
var p = Math.round(((v / total) * 100))
return `${name} ${p}%`
},
itemStyle: {},
textStyle: {
color: '#666666',
padding: [0, 8, 0, 18]
}
},
color: ['#0087ff', '#51cb8d', '#fcc549', '#ef6567', '#ff8a00', '#fc5656'],
series: [
{
type: 'pie',
radius: ['40%', '60%'],
center: ['22%', '50%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
labelLine: {
show: false
},
data: this.data1
}
]
}
option && myChart.setOption(option)
},
myEcharts2 () {
var chartDom = document.getElementById('main2')
var myChart = echarts.init(chartDom)
var option
option = {
tooltip: {
trigger: 'item'
},
legend: {
orient: '',
top: '22%',
left: '50%',
width: 'auto',
height: 'auto',
orient: 'vertical',
itemGap: 15,
itemWidth: 14,
// 使
formatter: function (name) {
var data = option.series[0].data
var total = 0
var tarValue
for (var i = 0; i < data.length; i++) {
total += Number(data[i].value)
if (data[i].name == name) {
tarValue = data[i].value
}
}
var v = tarValue
var p = Math.round(((tarValue / total) * 100))
return `${name} ${p}%`
},
itemStyle: {},
textStyle: {
color: '#666666',
padding: [0, 8, 0, 18]
}
},
color: ['#0087ff', '#51cb8d', '#fcc549', '#ef6567', '#ff8a00', '#fc5656'],
series: [
{
// name: 'Access From',
type: 'pie',
radius: ['40%', '60%'],
center: ['22%', '50%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
labelLine: {
show: false
},
data: this.data2
}
]
}
option && myChart.setOption(option)
},
myEcharts3 () {
var chartDom = document.getElementById('main3')
var myChart = echarts.init(chartDom)
var option
option = {
tooltip: {
trigger: 'item'
},
legend: {
orient: 'vertical',
type: 'scroll',
top: '22%',
left: '50%',
width: 'auto',
height: 'auto',
orient: 'vertical',
itemGap: 15,
itemWidth: 14,
// 使
formatter: function (name) {
var data = option.series[0].data
var total = 0
var tarValue
for (var i = 0; i < data.length; i++) {
total += Number(data[i].value)
if (data[i].name == name) {
tarValue = data[i].value
}
}
// var v = tarValue;
var p = Math.round(((tarValue / total) * 100))
console.log('@@@@', tarValue, total)
return `{a|${name}} {b|${p}%}`
},
itemStyle: {},
textStyle: {
rich: {
// richoneonetwotwothreethree""
a: {
//
width: 100,
color: '#000000',
fontSize: 12,
fontWeight: 'bolder'
},
b: {
// 102030
width: 35,
color: '#333',
fontSize: 12
}
},
color: '#666666',
backgroundColor: 'transparent',
padding: [0, 8, 0, 18]
}
},
color: ['#0087ff', '#51cb8d', '#fcc549', '#ef6567', '#ff8a00', '#fc5656'],
series: [
{
// name: 'Access From',
type: 'pie',
radius: ['40%', '60%'],
center: ['22%', '50%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
// emphasis: {
// label: {
// show: true,
// fontSize: '40',
// fontWeight: 'bold'
// }
// },
labelLine: {
show: false
},
data: this.data3
}
]
}
option && myChart.setOption(option)
},
backBtn () {
this.$emit('closeChild2')
}
}
}
</script>
<style scoped>
.container {
padding-top: 15px;
display: flex;
flex-direction: column;
}
.title-style {
font-size: 24px;
color: #000000;
font-weight: bold;
}
.page-introduction {
font-size: 18px;
color: #666666;
margin-left: 20px;
}
.back-btn {
background: #3e8ef7;
border-color: rgba(101, 165, 249, 0);
color: #fff;
margin-left: 1030px;
padding-bottom: 3px;
}
.container-body {
width: 1300px;
margin-top: 30px;
display: flex;
flex-wrap: wrap;
}
.container-body1 {
width: 420px;
height: 250px;
background-color: #ffffff;
margin-right: 20px;
padding-top: 20px;
padding-left: 20px;
}
.container-body2 {
width: 640px;
height: 250px;
background-color: #ffffff;
margin-right: 20px;
padding-top: 20px;
padding-left: 20px;
}
.container-body3 {
width: 640px;
height: 250px;
background-color: #ffffff;
padding-top: 20px;
padding-left: 20px;
}
.container-body4 {
width: 640px;
height: 300px;
background-color: #ffffff;
padding-top: 20px;
padding-left: 20px;
margin-top: 20px;
margin-right: 20px;
background-image: url("../../../assets/img/排行榜背景图.png");
background-repeat: no-repeat;
background-size: 100% 100%;
}
.container-body5 {
width: 640px;
height: 300px;
background-color: #ffffff;
padding-top: 20px;
padding-left: 20px;
margin-top: 20px;
background-image: url("../../../assets/img/排行榜背景图.png");
background-repeat: no-repeat;
background-size: 100% 100%;
}
.footer {
display: flex;
margin-top: 50px;
margin-left: 365px;
}
.footer-left {
width: 250px;
height: 1px;
background-color: #e0eaf8;
margin-right: 10px;
margin-top: 8px;
}
.footer-right {
width: 250px;
height: 1px;
background-color: #e0eaf8;
margin-left: 10px;
margin-top: 8px;
}
.ranking-img {
width: 60px;
height: 26px;
display: flex;
line-height: 26px;
margin-bottom: 15px;
margin-right: 10px;
padding-left: 15px;
}
.num-style {
position: absolute;
display: flex;
margin-left: 90px;
width: 200px;
margin-top: 5px;
color: #333333;
font-size: 16px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
word-break: break-all;
}
.count-style {
position: absolute;
display: flex;
margin-left: 400px;
margin-top: 5px;
color: #333333;
font-size: 18px;
font-weight: bold;
}
</style>

View File

@ -0,0 +1,748 @@
<template>
<div >
<div class='container'>
<!-- <div class='container-left' v-if='homeIsShow'>
<div class='left-search'>
<div>
<input type="text" class='input-style' placeholder="请输入部门关键词" v-model="inputTxt">
<div class='input-search' @click='searchBtn'>
<img src="@/assets/img/搜索.png" style='margin-top:7px;margin-left:16px' >
</div>
</div>
</div>
<el-tree
class='tree-style'
:data="treeData"
:props="defaultProps"
accordion
@node-click="handleNodeClick">
<span slot-scope="{ node }" class='tree-text-style'>
<img src="@/assets/img/一级图标.png" style="width: 16px; height: 16px" />
{{ node.label }}
</span>
</el-tree>
</div> -->
<el-form :inline="true">
<!--起始日期 @keyup.enter.native="getDataList()"-->
<el-form-item>
<el-date-picker
v-model="value1"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
format='yyyy-MM-dd HH:mm:ss'
value-format='yyyy-MM-dd HH:mm:ss'
>
</el-date-picker>
</el-form-item>
<!--审核状态-->
<el-form-item>
<el-select
v-model="examineStatus"
placeholder="请选审核状态"
clearable
>
<el-option
label="审核完成"
value="1"
></el-option>
<el-option
label="审核中"
value="0"
></el-option>
</el-select>
</el-form-item>
<!--部门-->
<el-form-item>
<el-select
v-model="abilityDepartment"
placeholder="请选择部门"
clearable
>
<el-option label="全部" value=""></el-option>
<el-option v-for="item in departmentSelects" :key="item.label" v-bind="item"></el-option>
</el-select>
</el-form-item>
<!--类型-->
<el-form-item>
<el-select
v-model="abilityType"
placeholder="请选择类型"
clearable
>
<el-option label="全部" value=""></el-option>
<el-option v-for="item in typeOptions" :key="item.value" :label="item.name" v-bind="item"></el-option>
</el-select>
</el-form-item>
<!--操作按钮查询-->
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
<!--操作按钮重置-->
<el-form-item>
<el-button type="primary" @click="resetDataList()">{{ $t('reset') }}</el-button>
</el-form-item>
</el-form>
<el-card shadow="never" class="aui-card--fill" v-if='homeIsShow'>
<div class="mod-demand__bsdemand">
<!-- <div class='top-box'>
<span class='title'>能力统计</span>
<div class='title-list-style'>
<div v-for="(item,index) in titleList" :key='index' class='title-single' :class="{'choseStyle':choseId=== index}" @click="choseBtn(index)">
<span class='box-style'>{{item.name}}</span>
</div>
</div>
</div> -->
<div class='second-title'>
<span style='margin-right:30px' :class="[departmentId===1?'departmentStyle':'']" @click="handleChose(1)">
能力上架统计
</span>
<span :class="[departmentId===2?'departmentStyle':'']" @click="handleChose(2)">
能力使用统计
</span>
<!-- <span v-if='this.choseId===0' :class="[departmentId===3?'departmentStyle':'']" @click="handleChose(3)">
能力上架明细
</span>
<span v-if='this.choseId===0' :class="[departmentId===4?'departmentStyle':'']" @click="handleChose(4)">
能力使用明细
</span> -->
<span v-if="detailFlag" class="detail-button" @click="goToDetail()">
明细
</span>
<span v-else class="detail-button" @click="goToBack()">
返回
</span>
</div>
<div class='line-style'></div>
<!--统计表-->
<el-table
:data="tableData"
:header-cell-style="{textAlign:'center'}"
:cell-style="{textAlign:'center'}"
border
style="width: 100%" v-if='this.departmentId===1 ||this.departmentId===2'>
<el-table-column
prop="name"
label="部门名称"
min-width="100%">
</el-table-column>
<el-table-column label="组件">
<el-table-column
prop="znsf"
label="智能算法"
min-width="100%">
</el-table-column>
<el-table-column
prop="tcfw"
label="图层服务"
min-width="100%">
</el-table-column>
<el-table-column
prop="kfzj"
label="通用开发组件"
min-width="100%">
</el-table-column>
<el-table-column
prop="ywzj"
label="业务能力组件"
min-width="100%">
</el-table-column>
</el-table-column>
<el-table-column
prop="yyzy"
label="应用资源"
min-width="100%">
</el-table-column>
<el-table-column
prop="zj"
label="总计"
min-width="100%">
</el-table-column>
</el-table>
<!--明细表-->
<el-table
:data="tableData"
:header-cell-style="{textAlign:'center'}"
:cell-style="{textAlign:'center'}"
border
style="width: 100%" v-if='this.departmentId===3 ||this.departmentId===4'>
<el-table-column
prop="deptName"
label="部门"
min-width="100%">
</el-table-column>
<el-table-column
prop="resourceName"
label="资源名称"
min-width="100%">
</el-table-column>
<el-table-column
prop="type"
label="类型"
min-width="100%">
</el-table-column>
<el-table-column
prop="createDate"
label="日期"
min-width="100%">
</el-table-column>
<el-table-column
prop="approveStatus"
label="状态"
min-width="100%">
</el-table-column>
</el-table>
<div class="block">
<el-pagination
@current-change="handleCurrentChange"
layout="total, prev, pager, next, jumper"
:total="total"
:page-size="5"
:current-page="currentPage"
>
</el-pagination>
</div>
</div>
</el-card>
</div>
<component-used v-if='UsedIsShow' :tableId='tableId' :fatherId='fatherId' @closeChild2='closeChild2'></component-used>
<component-services v-if='servicesIsShow' :tableId='tableId' :fatherId='fatherId' @closeChild='closeChild'></component-services>
<application-resources v-if='resourcesIsShow' :tableId='tableId' :fatherId='fatherId' @closeApplication='closeApplication'></application-resources>
</div>
</template>
<script>
import componentServices from './componentServices.vue'
import applicationResources from './applicationResources.vue'
import ComponentUsed from './componentUsed.vue'
import { mapState } from 'vuex'
export default {
components: { componentServices, applicationResources, ComponentUsed },
data () {
return {
inputTxt: '',
tableId: '',
fatherId: '',
treeData: [{
label: '一级 1',
children: [{
label: '二级 1-1',
children: [{
label: '三级 1-1-1'
}]
}]
}, {
label: '一级 2',
children: [{
label: '二级 2-1',
children: [{
label: '三级 2-1-1'
}]
}, {
label: '二级 2-2',
children: [{
label: '三级 2-2-1'
}]
}]
}, {
label: '一级 3',
children: [{
label: '二级 3-1',
children: [{
label: '三级 3-1-1'
}]
}, {
label: '二级 3-2',
children: [{
label: '三级 3-2-1'
}]
}]
}],
total: null,
defaultProps: {
children: 'children',
label: 'name'
},
choseId: 0,
departmentId: 1,
currentPage: 1,
homeIsShow: true,
servicesIsShow: false,
resourcesIsShow: false,
UsedIsShow: false,
titleList: [
{ name: '组件服务', key: 1 }, { name: '应用资源', key: 2 }, { name: '基础设施', key: 3 }, { name: '数据资源', key: 3 }, { name: '知识库', key: 3 }
],
tableData: [{ deptName: '部门', resourceNum: 222 }],
examineStatus: '0',//
value1:[],//
abilityDepartment:"",//
abilityType:"",//
beginTime: '',//
endTime: '',//
typeOptions:[
{ name: '智能算法', value: 1 },
{ name: '图层服务', value: 2 },
{ name: '通用开发组件', value: 3 },
{ name: '页面开发组件', value: 4 },
{ name: '应用资源', value: 5 }],//
detailFlag:true,//
}
},
created () {
//
let d = new Date
let year1,month1,day1;
[year1,month1,day1] = [d.getFullYear(),d.getMonth(),d.getDate()]
let date1 = new Date(year1, month1, day1,7)
this.value1.push(date1)
//
let year2,month2,day2
d.setTime(d.getTime()-24*60*60*1000);
[year2,month2,day2] = [d.getFullYear(),d.getMonth(),d.getDate()]
let date2 = new Date(year2,month2,day2,7)
this.value1.unshift(date2)
},
mounted () {
this.getFirstTree()
},
computed: {
...mapState(['departmentSelects'])
},
methods: {
//
// searchBtn(){
// this.getALLTree()
// },
// //
// handleNodeClick(data) {
// console.log(data.name);
// this.getTreeName(data)
// },
//
handleCurrentChange (val) {
if (this.choseId === 0) {
this.getFirstTree(val)
} else if (this.choseId === 1) {
this.getReleaseTree(val)
}
},
getTreeName (data) {
this.$http.get('/census/center/v3/treeList/', {
params: {
keywords: data.name,
deptId: '1067246875800000066'
// pageNo: pageNo || 1,
// pageSize: 20
}
}).then(res => {
this.tableData = res.data.data
})
},
// //
// getALLTree () {
// this.$http.get('/census/center/v3/treeList/' ,{
// params : {
// keywords:this.inputTxt,
// deptId:'1067246875800000066',
// // pageNo: pageNo || 1,
// // pageSize: 20
// }
// }).then(res => {
// this.treeData =res.data.data
// // this.tableData =res.data.data
// })
// },
// --
getFirstTree (page) {
this.$http.get('/census/center/selectDeptDetailTypeCountList/', {
params: {
page: page || 1,
limit: 5,
approveStatus: '',
deptId: '',
params: '',
startDate: ''
}
}).then(res => {
let result= res.data.data
for(let i=0;i<result.length;i++){
if(!result[i].hasOwnProperty('yyzy') ){
result[i].yyzy= 0
}
if(!result[i].hasOwnProperty('kfzj') ){
result[i].kfzj= 0
}
if(!result[i].hasOwnProperty('znsf') ){
result[i].znsf= 0
}
if(!result[i].hasOwnProperty('tcfw') ){
result[i].tcfw= 0
}
if(!result[i].hasOwnProperty('ywzj') ){
result[i].ywzj= 0
}
result[i].zj=parseInt(result[i].yyzy)+ parseInt(result[i].kfzj)+parseInt(result[i].znsf)+parseInt(result[i].ywzj)+parseInt(result[i].tcfw)
}
this.tableData = res.data.data
this.total = res.data.data.total
})
},
// 使-使
getSecondTree () {
this.$http.get('/census/center/selectApplyDeptDetailTypeCountList/', {
params: {
// page: page || 1,
limit: 5,
approveStatus: '',
deptId: '',
params: '',
startDate: ''
}
}).then(res => {
let result= res.data.data
for(let i=0;i<result.length;i++){
if(!result[i].hasOwnProperty('yyzy') ){
result[i].yyzy= 0
}
if(!result[i].hasOwnProperty('kfzj') ){
result[i].kfzj= 0
}
if(!result[i].hasOwnProperty('znsf') ){
result[i].znsf= 0
}
if(!result[i].hasOwnProperty('tcfw') ){
result[i].tcfw= 0
}
if(!result[i].hasOwnProperty('ywzj') ){
result[i].ywzj= 0
}
result[i].zj=parseInt(result[i].yyzy)+ parseInt(result[i].kfzj)+parseInt(result[i].znsf)+parseInt(result[i].ywzj)+parseInt(result[i].tcfw)
}
this.tableData = res.data.data
this.total = res.data.data.total
})
},
//
getOneDetail (page) {
this.$http.get('/census/center/selectCensusResourceTable/', {
params: {
limit: 5,
// page: page || 1,
approveStatus: '',
deptId: '',
params: '',
startDate: ''
}
}).then(res => {
this.tableData = res.data.data
this.total = res.data.data.total
})
},
// 使
getTwoDetail (page) {
this.$http.get('/census/center/selectCensusApplyTable/', {
params: {
limit: 5,
// page: page || 1,
approveStatus: '',
deptId: '',
params: '',
startDate: ''
}
}).then(res => {
this.tableData = res.data.data
this.total = res.data.data.total
})
},
getReleaseTree (page) {
this.$http.get('/census/center/selectApplyDeptDetailTypeCountList/', {
params: {
limit: 5,
// page: page || 1,
approveStatus: '',
deptId: '',
params: '',
startDate: ''
}
}).then(res => {
let result= res.data.data
for(let i=0;i<result.length;i++){
if(!result[i].hasOwnProperty('yyzy') ){
result[i].yyzy= 0
}
if(!result[i].hasOwnProperty('kfzj') ){
result[i].kfzj= 0
}
if(!result[i].hasOwnProperty('znsf') ){
result[i].znsf= 0
}
if(!result[i].hasOwnProperty('tcfw') ){
result[i].tcfw= 0
}
if(!result[i].hasOwnProperty('ywzj') ){
result[i].ywzj= 0
}
result[i].zj=parseInt(result[i].yyzy)+ parseInt(result[i].kfzj)+parseInt(result[i].znsf)+parseInt(result[i].ywzj)+parseInt(result[i].tcfw)
}
this.tableData = res.data.data
this.total = res.data.data.total
})
},
// 使
getUsedTree () {
this.$http.get('/census/center/v3/resourceReleaseDetails/', {
params: {
limit: 5,
page: 1,
// id:'1067246875800000066',
resourceType: '应用资源'
}
}).then(res => {
this.tableData = res.data.data.list
})
},
handleClick (row) {
if (this.choseId === 0) {
if (this.departmentId === 1) {
this.homeIsShow = false
this.servicesIsShow = true
this.tableId = row.deptId
this.fatherId = 1
} else if (this.departmentId === 2) {
this.homeIsShow = false
this.UsedIsShow = true
this.tableId = row.deptId
this.fatherId = 1
}
} else if (this.choseId === 1) {
this.homeIsShow = false
this.resourcesIsShow = true
this.tableId = row.deptId
this.fatherId = 2
}
},
//
choseBtn (index) {
this.choseId = index
this.handleChose(1)
},
// choseBtn(index){
// this.choseId=index
// if (index===0){
// this.homeIsShow=false
// this.servicesIsShow=true
// } else if(index===1){
// this.homeIsShow=false
// this.servicesIsShow=false
// this.resourcesIsShow=true
// }
// },
// or使
handleChose (index) {
this.departmentId = index
if (index === 1) {
if (this.choseId === 0) {
this.getFirstTree()
} else if (this.choseId === 1) {
//this.getReleaseTree()
}
} else if (index === 2) {
if (this.choseId === 0) {
this.getSecondTree()
} else {
//this.getUsedTree()
}
}
else if (index === 3) {
if (this.choseId === 0) {
this.getOneDetail()
} else {
//this.getUsedTree()
}
} else if (index === 4) {
if (this.choseId === 0) {
this.getTwoDetail()
} else {
// this.getUsedTree()
}
}
},
//
handleSizeChange (val) {
console.log(`每页 ${val}`)
},
closeChild () {
this.homeIsShow = true
this.servicesIsShow = false
this.handleCurrentChange(1)
},
closeChild2 () {
this.homeIsShow = true
this.UsedIsShow = false
this.handleCurrentChange(1)
},
closeApplication () {
this.homeIsShow = true
this.resourcesIsShow = false
this.handleCurrentChange(1)
},
////////////
goToDetail(){
this.detailFlag = !this.detailFlag;
if(this.departmentId===1){
this.handleChose(3);
//this.departmentId = 1;
}else if(this.departmentId===2){
this.handleChose(4);
//this.departmentId = 2;
}else{
}
},
//
goToBack(){
//departmentId 13 24
this.detailFlag = !this.detailFlag;
}
}
}
</script>
<style lang="scss" scoped>
.container {
display: flex;
flex-direction: column;
}
.container-left {
width: 250px;
height: 1000px;
display: inline-block;
// background-color: #ffffff;
margin-right: 10px;
}
.left-search {
width: 250px;
height: 76px;
background-color: #ffffff;
}
.input-style {
width: 210px;
height: 36px;
margin: 20px 20px;
padding-left: 20px;
border-radius: 18px;
border: 1px solid transparent;
background-color: #f2f4fa;
}
input::placeholder {
font-weight: 400;
font-size: 14px;
color: #b0b3ca;
}
.input-search {
width: 44px;
height: 30px;
background-color: #ffffff;
position: absolute;
border-radius: 15px;
top: 38px;
left: 196px;
}
::v-deep.tree-style {
.el-tree-node__label {
font-size: 16px;
}
.el-tree-node__content {
width: 240px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
word-break: break-all;
}
}
.top-box {
height: 80px;
width: 100%;
background-color: #fafafc;
display: inline-block;
}
.title {
display: flex;
font-size: 20px;
color: #000000;
font-weight: bold;
padding-left: 15px;
padding-top: 10px;
}
.title-list-style {
display: flex;
margin-top: 10px;
}
.title-single {
font-size: 14px;
width: 90px;
color: #666666;
height: 24px;
margin-left: 10px;
border: 1px solid #cccccc;
border-radius: 12px;
cursor: pointer;
}
.box-style {
width: 90px;
height: 24px;
display: flex;
justify-content: center;
align-items: center;
padding-bottom: 2px;
}
.second-title {
margin-top: 20px;
font-size: 14px;
color: #979eb9;
cursor: pointer;
.detail-button{
width: 60px;
height: 30px;
right: 60px;
background-color: #0058e1;
position: absolute;
text-align: center;
line-height: 30px;
margin-top: -20px;
border-radius: 2px;
color: #fff;
}
}
.line-style {
width: 100%;
height: 1px;
background-color: #f5f6fa;
margin-top: 15px;
margin-bottom: 15px;
}
.aui-card--fill {
width: 100% !important;
padding: 0px !important;
}
.choseStyle {
color: #526aff;
border: 1px solid #526aff;
}
.departmentStyle {
color: #526aff;
}
::v-deep .tree-text-styleJ {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
word-break: break-all;
}
</style>

View File

@ -0,0 +1,330 @@
<template>
<el-card shadow="never" class="roomBox">
<div class="roomExamineSearch">
<el-input
v-model="roomName"
style="width: 160px"
placeholder="请输入会议室名称"
></el-input>
<el-select
v-model="value"
style="width: 160px"
clearable
placeholder="请选择审核状态"
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
<el-button type="primary" @click="searchData">查询</el-button>
</div>
<div>
<el-table border style="width: 100%" :data="tableData">
<el-table-column
label="申请人"
prop="name"
header-align="center"
align="center"
>
</el-table-column>
<el-table-column
label="申请部门"
prop="dept"
header-align="center"
align="center"
>
</el-table-column>
<el-table-column
label="申请会议室"
prop="roomName"
header-align="center"
align="center"
></el-table-column>
<el-table-column
label="申请时段"
prop="bookDate"
header-align="center"
align="center"
></el-table-column>
<el-table-column
label="申请状态"
prop="state"
header-align="center"
align="center"
:formatter="formatter"
></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="taskDetails(scope.row, scope.row.state)"
>{{ scope.row.state == '1' ? '处理' : '详情' }}</el-button
>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:page-sizes="[10, 20, 50]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
>
</el-pagination>
</div>
<el-dialog
:title="lookData.roomName"
:visible.sync="dialogVisible"
width="50%"
>
<div class="modalResult" style="margin-bottom: 20px">处理结果</div>
<div
style="
width: 100%;
height: 0.01rem;
border-top: 1px solid #ccc;
transform: scaleY(0.5);
"
></div>
<div
class="modalExamine"
style="display: flex; flex-direction: column; margin-top: 20px"
>
<span style="margin-bottom: 20px">
审核结果{{ lookData.state === '2' ? '通过' : '不通过' }}
</span>
<span style="width: 90%; margin-bottom: 20px">
审核意见{{ lookData.auditViem }}
</span>
</div>
<div class="modalYuyue" style="margin-bottom: 20px">预约信息</div>
<div
style="
width: 100%;
height: 0.01rem;
border-top: 1px solid #ccc;
transform: scaleY(0.5);
"
></div>
<div class="modalTime" style="margin-bottom: 20px">
<div style="margin: 20px 0 20px 0">
预约日期{{ lookData.bookDate }}
</div>
<div>预约时段{{ lookData.startTime }}-{{ lookData.endTime }}</div>
<div
class="modalContent"
style="
width: 85%;
display: flex;
justify-content: space-between;
margin: 15px 0 15px 0;
"
>
<span>预约人{{ lookData.name }}</span>
<span>联系方式{{ lookData.phone }}</span>
<span>预约部门{{ lookData.dept }}</span>
</div>
<div style="width: 800px; margin-bottom: 30px">
使用事项{{ lookData.matter }}
</div>
</div>
<div>
<div style="display: flex; align-items: center">
<span>附件</span>
<el-button
v-show="file != ''"
size="mini"
@click="downloadTemplate(file)"
>下载</el-button
>
</div>
</div>
</el-dialog>
<el-dialog
:title="lookData.roomName"
:visible.sync="dialogVisibleChuli"
width="50%"
>
<div class="modalResult" style="margin-bottom: 10px">预约信息</div>
<div
style="
width: 100%;
height: 0.01rem;
border-top: 1px solid #ccc;
transform: scaleY(0.5);
"
></div>
<el-row style="display: flex; margin-top: 20px">
<el-col :span="8">预约日期{{ lookData.bookDate }}</el-col>
<el-col :span="8"
>预约时段{{ lookData.startTime }}-{{ lookData.endTime }}</el-col
>
</el-row>
<div class="modalTime">
<el-row class="modalContent" style="margin: 15px 0 15px 0">
<el-col :span="8">申请人{{ lookData.name }}</el-col>
<el-col :span="8">联系方式{{ lookData.phone }}</el-col>
<el-col :span="8">申请部门{{ lookData.dept }}</el-col>
</el-row>
<el-row style="margin-bottom: 30px">
<el-col :span="24"> 使用事项{{ lookData.matter }} </el-col>
</el-row>
<el-row>
<el-col :span="2">审核结果</el-col>
<el-col :span="8" style="display: flex">
<el-radio v-model="radio" label="2">通过</el-radio>
<el-radio v-model="radio" label="3">不通过</el-radio>
</el-col>
</el-row>
<el-row style="display: flex; margin-top: 20px">
<el-col :span="2">审核意见</el-col>
<el-col :span="16">
<el-input type="textarea" v-model="desc"></el-input>
</el-col>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button @click="No"> </el-button>
<el-button type="primary" @click="ok"> </el-button>
</div>
</div>
</el-dialog>
</el-card>
</template>
<script>
import Cookies from 'js-cookie'
export default {
data() {
return {
options: [
{
value: '1',
label: '待审核',
},
{
value: '0',
label: '审核完成',
},
],
value: '',
limit: 10,
page: 1,
total: 0,
roomName: '',
tableData: [],
dialogVisible: false,
dialogVisibleChuli: false,
lookData: {},
radio: '2',
desc: '',
id: '',
num: '',
file: '',
}
},
mounted() {
this.getSerach()
},
methods: {
getSerach() {
this.$http
.get(
`/bookMeeting/auditPage?page=${this.page}&limit=${this.limit}&roomName=${this.roomName}&state=${this.value}`
)
.then(({ data: res }) => {
console.log(res, 7777777)
this.tableData = res.data.list
this.total = res.data.total
})
},
downloadTemplate(file) {
// window.SITE_CONFIG.apiURL +
window.open(`${file}?token=` + Cookies.get('ucsToken'))
},
handleSizeChange(val) {
this.limit = val
this.getSerach()
},
handleCurrentChange(val) {
this.page = val
this.getSerach()
},
searchData() {
this.getSerach()
},
taskDetails(item, num) {
if (num == '1') {
this.dialogVisibleChuli = true
this.id = item.id
} else {
this.dialogVisible = true
this.$http.get(`bookMeeting/${item.id}`).then(({ data: res }) => {
console.log(55555555)
this.file = res.data.file
})
}
this.lookData = item
},
ok() {
let query = {
auditViem: this.desc,
state: this.radio,
id: this.id,
}
this.$http.put('/bookMeeting', query).then(({ data: res }) => {
this.dialogVisibleChuli = false
this.radio = '2'
this.desc = ''
this.getSerach()
})
},
No() {
this.radio = '2'
this.desc = ''
this.dialogVisibleChuli = false
},
formatter(row, column) {
return row.state == '1' ? '待审核' : '审核完成'
},
},
}
</script>
<style scoped lang="scss">
.roomBox {
min-height: calc(calc(100vh - 50px - 38px - 30px));
.roomHeadSpan {
font-weight: 600;
}
.roomExamineSearch {
display: flex;
width: 410px;
margin-bottom: 20px;
justify-content: space-between;
}
}
.dialog-footer {
text-align: center;
margin-top: 40px;
}
// ::v-deep .el-input {
// margin-right: 15px;
// display: inline-block;
// }
// ::v-deep .el-select {
// margin-right: 20px;
// display: inline-block;
// }
</style>

View File

@ -0,0 +1,417 @@
<!-- 流程业务表单 -->
<template>
<el-card shadow="never" class="aui-card--fill">
<!-- 申请人详情 -->
<div>
<h3>申请人信息</h3>
<div class="big-BOX">
<p>
<span>申请人<span> {{dataForm.content.applyUserName || '--'}}</span></span>
<span>电话<span>{{dataForm.content.applyUserPhone || '--'}}</span></span>
<span>单位<span>{{dataForm.content.applyUserDeptName || '--'}}</span></span>
</p>
<p>
<span>应用领域<span>{{dataForm.content.detailsField || '--'}}</span></span>
<span> 需求类型<span> {{dataForm.content.detailsType || '--'}}</span></span>
<span> 需求标题 <span> {{dataForm.content.demandSubject || '--'}}</span></span>
</p>
<p>
<span> 需求描述<span> {{dataForm.content.demandDetails|| '--'}}</span></span>
</p>
<p>
<span> 申请附件<span> {{dataForm.content.enclosure|| '--'}}<button @click="downloadFile(dataForm.content.enclosure)">下载</button></span></span>
</p>
</div>
</div>
<!-- 申请能力 -->
<div class="AbilityApply">
<h3>申请能力</h3>
<ul v-for="item in dataList" :key="item.id">
<li class="title">{{item.address}}</li>
<li class="clearfix">
<img
src="~@/assets/img/imgLeft.png"
/>
<div>
<h2>{{item.name}}<span>{{item.type}}</span></h2>
<p>{{item.describe}}</p>
</div>
</li>
</ul>
</div>
<!-- 流程综合组件 -->
<!-- <ren-process-multiple
v-if="processVisible"
updateInstanceIdUrl="/processForm/tabilityapplication/updateInstanceId"
saveFormUrl="/processForm/tabilityapplication"
dataFormName="dataForm"
ref="renProcessMultiple"
></ren-process-multiple> -->
<!-- 审批 -->
<div class="agreeOr">
<h3>审批</h3>
<div>
<el-radio-group v-model="agreeOrList" style="width:230px;">
<el-radio-button label="同意" class="blueAll">同意</el-radio-button>
<el-radio-button label="退回" class="redAll">退回</el-radio-button>
</el-radio-group>
<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-process-detail-import></ren-process-detail-import>
</el-card>
</template>
<script>
//
import processModule from '@/mixins/process-module'
import qs from 'qs'
import RenProcessDetailImport from '@/components/ren-process-detail/src/ren-process-detail-import'
export default {
//
mixins: [processModule],
data () {
return {
visible: true,
//
// fieldDisabled: false,
// dataForm: {
// id: '',
// user: '',
// phone: '',
// unit: '',
// area: '',
// system: '',
// scene: '',
// basis: ''
// }
dataForm: {
id: '',
content: []
},
dataList: [
{
// img: '~@/assets/img/imgLeft.png',
address: '青岛市应急管理局',
name: '组件名称',
type: '组件服务',
describe: '资源描述资源描述资源描述资源描述资源描述资源描述'
},
{
// img: '~@/assets/img/imgLeft.png',
address: '青岛市应急管理局',
name: '组件名称',
type: '组件服务',
describe: '资源描述资源描述资源描述资源描述资源描述资源描述'
},
{
// img: '~@/assets/img/imgLeft.png',
address: '青岛市应急管理局',
name: '组件名称',
type: '组件服务',
describe: '资源描述资源描述资源描述资源描述资源描述资源描述'
}
],
inputAgree: '',
inputNo: '',
agreeOrList: '同意'
}
},
created () {
// KEY
this.dataForm.id = this.$route.params.businessKey
console.log(this.dataForm, 'ela')
this.init()
//
var callbacks = {
startProcessSuccessCallback: this.closeCurrentTab,
startProcessErrorCallback: this.startProcessErrorCallback,
taskHandleSuccessCallback: this.closeCurrentTab,
taskHandleErrorCallback: this.taskHandleErrorCallback,
formSaveSuccessCallback: null,
formSaveErrorCallback: null
}
//
this.initProcessMultiple(callbacks)
},
computed: {
// dataRule () {
// return {
// inputAgree: [
// { required: true, message: this.$t('validate.required'), trigger: 'blur' }
// ],
// inputNo: [
// { required: true, message: this.$t('validate.required'), trigger: 'blur' }
// ]
// }
// }
},
components: {
RenProcessDetailImport
},
methods: {
init () {
// this.visible = true
this.$nextTick(() => {
// this.$refs.dataForm.resetFields()
if (this.dataForm.id) {
// KEY
// this.fieldDisabled = true
this.getInfo()
console.log(this.dataForm, 'init')
}
})
},
//
getInfo () {
this.$http
.get(`/demanData/${this.dataForm.id}`)
.then(({ data: res }) => {
if (res.code !== 0) {
console.log(res.data)
return this.$message.error(res.msg)
}
console.log(res.data, 'elas')
this.dataForm.content = res.data
console.log(this.dataForm, 'ela')
})
.catch(() => {})
},
//
applyData () {
this.$http
.get(`/resource/select/${this.dataForm.id}`)
.then(({ data: res }) => {
if (res.code !== 0) {
console.log(res.data, 'wh')
// return this.$message.error(res.msg)
}
// console.log(res.data, 'elas')
// this.dataForm.content = res.data
// console.log(this.dataForm, 'ela')
})
.catch(() => {})
},
// 退
agreeOrNot () {
if (this.agreeOrList === '同意') {
console.log('this.dataForm', this.dataForm)
const params = qs.stringify({
taskId: this.dataForm.content.instanceId,
comment: this.inputAgree
})
console.log(params)
this.$http.post('/act/task/complete?' + params).then(({ data: res }) => {
if (res.code !== 0) {
console.log(res)
this.$message.error(res.msg)
}
}).catch(() => {})
} else if (this.agreeOrList === '退回') {
const params = qs.stringify({
taskId: this.dataForm.content.instanceId,
comment: this.inputNo
})
this.$http.post('/act/task/backToFirst?', params).then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error(res.msg)
}
})
}
},
//
startProcessErrorCallback (data) {
console.log(data)
},
//
taskHandleErrorCallback (data) {}
},
mounted () {
this.applyData()
}
}
</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:78%;
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;
}
}
}
p:last-of-type{
margin-top:16px;
width:100%;
span{
display:flex;
span{
padding-left: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:#0558e1;
color:#ffffff;
border:1px solid #0558e1;
}
}
.inputBule{
width:55px;
height:32px;
line-height:32px;
padding:0;
border-radius:2px;
background:#0558e1;
color:#ffffff;
border:1px solid #0558e1;
}
::v-deep .is-active{
background:#ffffff;
color:#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__inner{
box-shadow: unset;
}
}
.blueInput{
width:55px;
}
</style>

View File

@ -64,25 +64,55 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<!-- 流程综合组件 --> <!-- 流程综合组件 -->
<ren-process-multiple <!-- <ren-process-multiple
v-if="processVisible" v-if="processVisible"
updateInstanceIdUrl="/processForm/tabilityapplication/updateInstanceId" updateInstanceIdUrl="/processForm/tabilityapplication/updateInstanceId"
saveFormUrl="/processForm/tabilityapplication" saveFormUrl="/processForm/tabilityapplication"
dataFormName="dataForm" dataFormName="dataForm"
ref="renProcessMultiple" ref="renProcessMultiple"
></ren-process-multiple> ></ren-process-multiple> -->
<!-- 审批 -->
<div class="agreeOr" v-if="taskId">
<div>
<el-button type="primary" @click="showDialog('同意')">同意</el-button>
<el-button type="danger" plain @click="showDialog('拒绝')"
>驳回</el-button
>
</div>
</div>
<!-- 审批弹窗 -->
<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
>
</span>
</el-dialog>
</el-card> </el-card>
</template> </template>
<script> <script>
// //
import processModule from '@/mixins/process-module' import processModule from '@/mixins/process-module'
import qs from 'qs'
import debounce from 'lodash/debounce'
import bus from '@/views/bus.js'
export default { export default {
// //
mixins: [processModule], mixins: [processModule],
data () { data () {
return { return {
visible: false, // visible: false,
// //
fieldDisabled: false, fieldDisabled: false,
dataForm: { dataForm: {
@ -94,7 +124,13 @@ export default {
system: '', system: '',
scene: '', scene: '',
basis: '' basis: ''
} },
//
dialogVisible: false,
dialogType: '',
input: '',
visible: true,
taskId: ''
} }
}, },
created () { created () {
@ -113,6 +149,8 @@ export default {
} }
// //
this.initProcessMultiple(callbacks) this.initProcessMultiple(callbacks)
this.taskId = this.$route.params.taskId
this.dataForm.taskId = this.$route.params.taskId
}, },
computed: { computed: {
dataRule () { dataRule () {
@ -164,6 +202,128 @@ export default {
}) })
.catch(() => {}) .catch(() => {})
}, },
//
showDialog (title) {
this.dialogVisible = true
this.dialogType = title
},
handleClose (done) {
this.$confirm('确认关闭?')
.then((_) => {
this.input = ''
done()
})
.catch((_) => {})
},
handleClose2 () {
this.dialogVisible = false
this.input = ''
},
// 退
agreeOrNot: debounce(
function (data) {
this.dataForm.taskId = this.$route.params.taskId
if (this.dialogType === '同意') {
if (this.input !== '') {
console.log('this.dataForm', this.dataForm)
const params = qs.stringify({
taskId: this.dataForm.taskId,
comment: this.input
})
console.log(params)
this.$http
.post('/act/task/complete?' + params)
.then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error(res.msg)
if (this.callbacks.taskHandleErrorCallback) {
this.callbacks.taskHandleErrorCallback(res)
}
return
}
bus.$emit('AbilityResourcesRemovedInit')
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
this.dialogVisible = false
if (this.callbacks.taskHandleSuccessCallback) {
this.callbacks.taskHandleSuccessCallback(res)
}
}
})
})
.catch(() => {})
this.tabRemoveHandle(data)
} else {
this.$message.error('请输入审批意见!')
}
} else if (this.dialogType === '拒绝') {
if (this.input !== '') {
const params = qs.stringify({
taskId: this.dataForm.taskId,
comment: this.input
})
this.$http
.post('/act/task/backToFirst?', params)
.then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error(res.msg)
if (this.callbacks.taskHandleErrorCallback) {
this.callbacks.taskHandleErrorCallback(res)
}
return
}
bus.$emit('AbilityResourcesRemovedInit')
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
if (this.callbacks.taskHandleSuccessCallback) {
this.callbacks.taskHandleSuccessCallback(res)
}
}
})
})
this.tabRemoveHandle(data)
} else {
this.$message.error('请输入审批意见!')
}
}
},
1000,
{ leading: true, trailing: false }
),
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 }
})
}
},
// //
startProcessErrorCallback (data) { startProcessErrorCallback (data) {
console.log(data) console.log(data)
@ -173,3 +333,12 @@ export default {
} }
} }
</script> </script>
<style lang="scss">
.agreeOr {
& > div {
// text-align: right;
padding-right: 40px;
margin: 20px 0;
}
}
</style>

View File

@ -0,0 +1,294 @@
<template>
<div class="wrapper">
<div>
<el-form
:model="dataForm"
ref="dataForm"
@keyup.enter.native="dataFormSubmitHandle()"
:label-width="$i18n.locale === 'en-US' ? '120px' : 'auto'"
>
<el-tooltip placement="bottom" :content="dataForm.comment">
<template #title>
<span>{{ dataForm.comment }}</span>
</template>
<el-form-item label="评论内容">
<el-input
type="textarea"
v-model="dataForm.comment"
:disabled="fieldDisabled"
placeholder="评论内容"
></el-input>
</el-form-item>
</el-tooltip>
</el-form>
</div>
<!-- 流程综合组件 -->
<!-- <ren-process-multiple
v-if="processVisible"
updateInstanceIdUrl="/processForm/tabilityapplication/updateInstanceId"
saveFormUrl="/processForm/tabilityapplication"
dataFormName="dataForm"
ref="renProcessMultiple"
></ren-process-multiple> -->
<!-- 审批 -->
<div class="agreeOr" v-if="taskId">
<div>
<el-button type="primary" @click="showDialog('同意')">同意</el-button>
<el-button type="danger" plain @click="showDialog('拒绝')"
>驳回</el-button
>
</div>
</div>
<!-- 审批弹窗 -->
<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
>
</span>
</el-dialog>
</div>
</template>
<script>
import processModule from '@/mixins/process-module'
import qs from 'qs'
import debounce from 'lodash/debounce'
import bus from '@/views/bus.js'
export default {
//
mixins: [processModule],
components: {},
props: {
// fromList: {
// // type: Array,
// // default: () => {
// // return []
// // }
// }
},
data () {
return {
// processVisible: true,
// visible: false,
//
fieldDisabled: false,
dataForm: [],
id: '',
shifoushizujian: true,
//
dialogVisible: false,
dialogType: '',
input: '',
visible: true,
taskId: ''
}
},
watch: {},
computed: {},
methods: {
init () {
this.visible = true
// this.getInfo(this.$router.currentRoute.params.params.params.resourceDTO.id)
// this.dataForm = this.$router.currentRoute.params.params.params.resourceDTO
// this.id=this.$router.currentRoute
this.$nextTick(() => {
this.$refs.dataForm.resetFields()
// if (this.dataForm.id) {
// KEY
this.fieldDisabled = true
// this.id = this.$router.currentRoute.businessKey
this.getInfo(this.$router.currentRoute.params.businessKey)
console.log('id', this.$router.currentRoute.params.businessKey)
// }
})
},
getInfo (id) {
this.$http.get('/demandComment/' + id).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = res.data
// this.dataForm = res.data.resourceDTO
// if (this.dataForm.type != '') {
// this.shifoushizujian = false
// } else {
// this.shifoushizujian = true
// }
console.log('this.dataForm', this.dataForm)
})
},
//
showDialog (title) {
this.dialogVisible = true
this.dialogType = title
},
handleClose (done) {
this.$confirm('确认关闭?')
.then((_) => {
this.input = ''
done()
})
.catch((_) => {})
},
handleClose2 () {
this.dialogVisible = false
this.input = ''
},
// 退
agreeOrNot: debounce(
function (data) {
this.dataForm.taskId = this.$route.params.taskId
if (this.dialogType === '同意') {
if (this.input !== '') {
console.log('this.dataForm', this.dataForm)
const params = qs.stringify({
taskId: this.dataForm.taskId,
comment: this.input
})
console.log(params)
this.$http
.post('/act/task/complete?' + params)
.then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error(res.msg)
if (this.callbacks.taskHandleErrorCallback) {
this.callbacks.taskHandleErrorCallback(res)
}
return
}
bus.$emit('AbilityResourcesRemovedInit')
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
this.dialogVisible = false
if (this.callbacks.taskHandleSuccessCallback) {
this.callbacks.taskHandleSuccessCallback(res)
}
}
})
})
.catch(() => {})
this.tabRemoveHandle(data)
} else {
this.$message.error('请输入审批意见!')
}
} else if (this.dialogType === '拒绝') {
if (this.input !== '') {
const params = qs.stringify({
taskId: this.dataForm.taskId,
comment: this.input
})
this.$http
.post('/act/task/backToFirst?', params)
.then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error(res.msg)
if (this.callbacks.taskHandleErrorCallback) {
this.callbacks.taskHandleErrorCallback(res)
}
return
}
bus.$emit('AbilityResourcesRemovedInit')
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
if (this.callbacks.taskHandleSuccessCallback) {
this.callbacks.taskHandleSuccessCallback(res)
}
}
})
})
this.tabRemoveHandle(data)
} else {
this.$message.error('请输入审批意见!')
}
}
},
1000,
{ leading: true, trailing: false }
),
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 }
})
}
}
},
created () {
// this.dataForm = this.$router.currentRoute.params.id
this.init()
console.log('fromList', this.$router.currentRoute.params.businessKey)
// this.dataForm = this.$router.currentRoute.params.params.params.resourceDTO
var callbacks = {
startProcessSuccessCallback: this.closeCurrentTab,
startProcessErrorCallback: this.startProcessErrorCallback,
taskHandleSuccessCallback: this.closeCurrentTab,
taskHandleErrorCallback: this.taskHandleErrorCallback,
formSaveSuccessCallback: null,
formSaveErrorCallback: null
}
//
this.initProcessMultiple(callbacks)
this.taskId = this.$route.params.taskId
this.dataForm.taskId = this.$route.params.taskId
},
mounted () {}
}
</script>
<style lang="scss" >
.kuandukuandukuandu {
max-width: 1500px;
}
.agreeOr {
& > div {
// text-align: right;
padding-right: 40px;
margin: 20px 0;
}
}
</style>
<style lang="scss" scoped>
::v-deep .el-textarea__inner {
height: 100px;
resize: none;
}
</style>

View File

@ -0,0 +1,136 @@
<!-- 流程业务表单 -->
<template>
<el-card shadow="never" class="aui-card--fill">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'">
<el-form-item label="申请人" prop="user">
<el-input v-model="dataForm.user" :disabled="fieldDisabled" placeholder="请输入申请人"></el-input>
</el-form-item>
<el-form-item label="申请电话" prop="phone">
<el-input v-model="dataForm.phone" :disabled="fieldDisabled" placeholder="请输入申请人电话"></el-input>
</el-form-item>
<el-form-item label="申请单位" prop="unit">
<el-input v-model="dataForm.unit" :disabled="fieldDisabled" placeholder="请输入申请单位"></el-input>
</el-form-item>
<!-- <el-form-item label="所在地区" prop="area">
<el-input v-model="dataForm.area" :disabled="fieldDisabled" placeholder="请输入所在地区"></el-input>
</el-form-item> -->
<el-form-item label="申请应用" prop="system">
<el-input v-model="dataForm.system" :disabled="fieldDisabled" placeholder="请输入申请应用"></el-input>
</el-form-item>
<el-form-item label="应用场景" prop="scene">
<el-input v-model="dataForm.scene" :disabled="fieldDisabled" placeholder="请输入应用场景"></el-input>
</el-form-item>
<el-form-item label="申请依据" prop="basis">
<el-input v-model="dataForm.basis" :disabled="fieldDisabled" placeholder="请输入申请依据"></el-input>
</el-form-item>
<el-form-item v-if="dataForm.enclosure" label="申请附件" prop="enclosure">
<el-button @click="downloadFile(dataForm.enclosure, '申请附件')">附件下载</el-button>
</el-form-item>
</el-form>
<!-- 流程综合组件 -->
<ren-process-multiple v-if="processVisible" updateInstanceIdUrl="/processForm/tabilityapplication/updateInstanceId" saveFormUrl="/processForm/tabilityapplication" dataFormName="dataForm" ref="renProcessMultiple" ></ren-process-multiple>
</el-card>
</template>
<script>
//
import processModule from '@/mixins/process-module'
export default {
//
mixins: [processModule],
data () {
return {
visible: false,
//
fieldDisabled: false,
dataForm: {
id: '',
user: '',
phone: '',
unit: '',
area: '',
system: '',
scene: '',
basis: '',
enclosure: ''
}
}
},
created () {
// KEY
this.dataForm.id = this.$route.params.businessKey
this.init()
//
var callbacks = {
startProcessSuccessCallback: this.closeCurrentTab,
startProcessErrorCallback: this.startProcessErrorCallback,
taskHandleSuccessCallback: this.closeCurrentTab,
taskHandleErrorCallback: this.taskHandleErrorCallback,
formSaveSuccessCallback: null,
formSaveErrorCallback: null
}
//
this.initProcessMultiple(callbacks)
},
computed: {
dataRule () {
return {
user: [
{ required: true, message: '请输入申请人', trigger: 'blur' }
],
phone: [
{ required: true, message: '请输入申请人电话', trigger: 'blur' },
{ type: 'string', pattern: /^1[3456789]\d{9}$/, message: '请输入正确的电话号码', trigger: 'blur' }
],
unit: [
{ required: true, message: '请输入申请单位', trigger: 'blur' }
],
// area: [
// { required: true, message: '', trigger: 'blur' }
// ],
system: [
{ required: true, message: '请输入申请应用', trigger: 'blur' }
],
scene: [
{ required: true, message: '请输入应用场景', trigger: 'blur' }
],
basis: [
{ required: true, message: '请输入申请依据', trigger: 'blur' }
]
}
}
},
methods: {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs.dataForm.resetFields()
if (this.dataForm.id) {
// KEY
this.fieldDisabled = true
this.getInfo()
}
})
},
//
getInfo () {
this.$http.get(`/processForm/tabilityapplication/${this.dataForm.id}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
}).catch(() => {})
},
//
startProcessErrorCallback (data) {
console.log(data)
},
//
taskHandleErrorCallback (data) {
}
}
}
</script>

View File

@ -1,64 +1,134 @@
<!-- 流程业务表单 --> <!-- 流程业务表单 -->
<template> <template>
<el-card shadow="never" class="aui-card--fill"> <el-card shadow="never" class="aui-card--fill">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'">
<el-form-item label="申请人" prop="user"> <!-- 申请人详情 -->
<el-input v-model="dataForm.user" :disabled="fieldDisabled" placeholder="请输入申请人"></el-input> <div>
</el-form-item> <h3>申请人信息</h3>
<el-form-item label="申请电话" prop="phone"> <div class="big-BOX">
<el-input v-model="dataForm.phone" :disabled="fieldDisabled" placeholder="请输入申请人电话"></el-input> <p>
</el-form-item> <span>申请人<span> {{dataForm.content.user || '--'}}</span></span>
<el-form-item label="申请单位" prop="unit"> <span>电话<span>{{dataForm.content.phone || '--'}}</span></span>
<el-input v-model="dataForm.unit" :disabled="fieldDisabled" placeholder="请输入申请单位"></el-input> <span>单位<span>{{dataForm.content.unit || '--'}}</span></span>
</el-form-item> </p>
<!-- <el-form-item label="所在地区" prop="area"> <p>
<el-input v-model="dataForm.area" :disabled="fieldDisabled" placeholder="请输入所在地区"></el-input> <span>申请应用<span>{{dataForm.content.system || '--'}}</span></span>
</el-form-item> --> <span> 应用场景<span> {{dataForm.content.scene || '--'}}</span></span>
<el-form-item label="申请应用" prop="system"> <span> 申请依据 <span> {{dataForm.content.basis || '--'}}</span></span>
<el-input v-model="dataForm.system" :disabled="fieldDisabled" placeholder="请输入申请应用"></el-input> </p>
</el-form-item> <p>
<el-form-item label="应用场景" prop="scene"> <span> 能力应用期望效果<span> {{dataForm.content.demandDetails|| '--'}}</span></span>
<el-input v-model="dataForm.scene" :disabled="fieldDisabled" placeholder="请输入应用场景"></el-input> </p>
</el-form-item> <p v-if="dataForm.content.enclosure">
<el-form-item label="申请依据" prop="basis"> <span> 申请附件<span> {{dataForm.content.enclosure|| '--'}}<button @click="downloadFile(dataForm.content.enclosure)">下载</button></span></span>
<el-input v-model="dataForm.basis" :disabled="fieldDisabled" placeholder="请输入申请依据"></el-input>
</el-form-item> </p>
<el-form-item v-if="dataForm.enclosure" label="申请附件" prop="enclosure"> </div>
<el-button @click="downloadFile(dataForm.enclosure, '申请附件')">附件下载</el-button> </div>
</el-form-item>
</el-form> <!-- 申请能力 -->
<!-- 流程综合组件 --> <div class="AbilityApply">
<ren-process-multiple v-if="processVisible" updateInstanceIdUrl="/processForm/tabilityapplication/updateInstanceId" saveFormUrl="/processForm/tabilityapplication" dataFormName="dataForm" ref="renProcessMultiple" ></ren-process-multiple> <h3>申请能力</h3>
<ul v-for="item in dataList" :key="item.id">
<li class="title">{{item.address}}</li>
<li class="clearfix">
<img
src="~@/assets/img/imgLeft.png"
/>
<div>
<h2>{{item.name}}<span>{{item.type}}</span></h2>
<p>{{item.describe}}</p>
</div>
</li>
</ul>
</div>
<!-- 流程综合组件 -->
<!-- <ren-process-multiple
v-if="processVisible"
updateInstanceIdUrl="/processForm/tabilityapplication/updateInstanceId"
saveFormUrl="/processForm/tabilityapplication"
dataFormName="dataForm"
ref="renProcessMultiple"
></ren-process-multiple> -->
<!-- 审批 -->
<div class="agreeOr">
<h3>审批</h3>
<div>
<el-radio-group v-model="agreeOrList" style="width:230px;">
<el-radio-button label="同意" class="blueAll">同意</el-radio-button>
<el-radio-button label="退回" class="redAll">退回</el-radio-button>
</el-radio-group>
<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-process-detail-import></ren-process-detail-import>
</el-card> </el-card>
</template> </template>
<script> <script>
// //
import processModule from '@/mixins/process-module' import processModule from '@/mixins/process-module'
import qs from 'qs'
import RenProcessDetailImport from '@/components/ren-process-detail/src/ren-process-detail-import'
export default { export default {
// //
mixins: [processModule], mixins: [processModule],
data () { data () {
return { return {
visible: false, visible: true,
// //
fieldDisabled: false, // fieldDisabled: false,
// dataForm: {
// id: '',
// user: '',
// phone: '',
// unit: '',
// area: '',
// system: '',
// scene: '',
// basis: ''
// }
dataForm: { dataForm: {
id: '', id: '',
user: '', content: []
phone: '', },
unit: '', dataList: [
area: '', {
system: '', // img: '~@/assets/img/imgLeft.png',
scene: '', address: '青岛市应急管理局',
basis: '', name: '组件名称',
enclosure: '' type: '组件服务',
} describe: '资源描述资源描述资源描述资源描述资源描述资源描述'
},
{
// img: '~@/assets/img/imgLeft.png',
address: '青岛市应急管理局',
name: '组件名称',
type: '组件服务',
describe: '资源描述资源描述资源描述资源描述资源描述资源描述'
},
{
// img: '~@/assets/img/imgLeft.png',
address: '青岛市应急管理局',
name: '组件名称',
type: '组件服务',
describe: '资源描述资源描述资源描述资源描述资源描述资源描述'
}
],
inputAgree: '',
inputNo: '',
agreeOrList: '同意'
} }
}, },
created () { created () {
// KEY // KEY
this.dataForm.id = this.$route.params.businessKey this.dataForm.id = this.$route.params.businessKey
console.log(this.dataForm, 'ela')
this.init() this.init()
// //
var callbacks = { var callbacks = {
@ -73,64 +143,275 @@ export default {
this.initProcessMultiple(callbacks) this.initProcessMultiple(callbacks)
}, },
computed: { computed: {
dataRule () { // dataRule () {
return { // return {
user: [ // inputAgree: [
{ required: true, message: '请输入申请人', trigger: 'blur' } // { required: true, message: this.$t('validate.required'), trigger: 'blur' }
], // ],
phone: [ // inputNo: [
{ required: true, message: '请输入申请人电话', trigger: 'blur' }, // { required: true, message: this.$t('validate.required'), trigger: 'blur' }
{ type: 'string', pattern: /^1[3456789]\d{9}$/, message: '请输入正确的电话号码', trigger: 'blur' } // ]
], // }
unit: [ // }
{ required: true, message: '请输入申请单位', trigger: 'blur' } },
], components: {
// area: [ RenProcessDetailImport
// { required: true, message: '', trigger: 'blur' }
// ],
system: [
{ required: true, message: '请输入申请应用', trigger: 'blur' }
],
scene: [
{ required: true, message: '请输入应用场景', trigger: 'blur' }
],
basis: [
{ required: true, message: '请输入申请依据', trigger: 'blur' }
]
}
}
}, },
methods: { methods: {
init () { init () {
this.visible = true // this.visible = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.dataForm.resetFields() // this.$refs.dataForm.resetFields()
if (this.dataForm.id) { if (this.dataForm.id) {
// KEY // KEY
this.fieldDisabled = true // this.fieldDisabled = true
this.getInfo() this.getInfo()
console.log(this.dataForm, 'init')
} }
}) })
}, },
// //
getInfo () { getInfo () {
this.$http.get(`/processForm/tabilityapplication/${this.dataForm.id}`).then(({ data: res }) => { this.$http
if (res.code !== 0) { .get(`/processForm/tabilityapplication/${this.dataForm.id}`)
return this.$message.error(res.msg) .then(({ data: res }) => {
} if (res.code !== 0) {
this.dataForm = { console.log(res.data)
...this.dataForm, return this.$message.error(res.msg)
...res.data }
} console.log(res.data, 'elas')
}).catch(() => {}) this.dataForm.content = res.data
console.log(this.dataForm, 'ela')
})
.catch(() => {})
},
//
applyData () {
this.$http
.get(`/resource/select/${this.dataForm.instanceId}`)
.then(({ data: res }) => {
if (res.code !== 0) {
console.log(res.data, 'hhhhh')
// return this.$message.error(res.msg)
}
// console.log(res.data, 'elas')
// this.dataForm.content = res.data
// console.log(this.dataForm, 'ela')
})
.catch(() => {})
},
// 退
agreeOrNot () {
if (this.agreeOrList === '同意') {
console.log('this.dataForm', this.dataForm)
const params = qs.stringify({
taskId: this.dataForm.content.instanceId,
comment: this.inputAgree
})
console.log(params)
this.$http.post('/act/task/complete?' + params).then(({ data: res }) => {
if (res.code !== 0) {
console.log(res)
this.$message.error(res.msg)
}
}).catch(() => {})
} else if (this.agreeOrList === '退回') {
const params = qs.stringify({
taskId: this.dataForm.content.instanceId,
comment: this.inputNo
})
this.$http.post('/act/task/backToFirst?', params).then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error(res.msg)
}
})
}
}, },
// //
startProcessErrorCallback (data) { startProcessErrorCallback (data) {
console.log(data) console.log(data)
}, },
// //
taskHandleErrorCallback (data) { taskHandleErrorCallback (data) {}
} },
mounted () {
this.applyData()
} }
} }
</script> </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: 78%;
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;
}
}
}
p:last-of-type {
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;
}
</style>

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