220 Commits
Author SHA1 Message Date
gaogaoyujieandGitea be87d34f5d Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-05-31 16:58:31 +08:00
gyj 07d7396959 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-05-31 08:59:45 +08:00
gyj ef32184541 修改版本号 2024-05-31 08:58:39 +08:00
gaogaoyujieandGitea 5f7e0ad19e Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-05-30 16:20:47 +08:00
gyj 971461aaa8 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-05-30 16:20:04 +08:00
gyj a3de506391 调解修改短信bug 2024-05-30 16:19:43 +08:00
gaogaoyujieandGitea d901c1efdd Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-05-28 11:32:01 +08:00
gyj 48b0eacc36 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-05-28 11:30:57 +08:00
gyj aa4da2ae82 邮件接口联调 2024-05-28 11:30:39 +08:00
gaogaoyujieandGitea 0885cd8538 Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-05-28 09:32:01 +08:00
gyj 1f1da394d5 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-05-28 09:30:42 +08:00
gyj 04e10ea37f 邮箱附件 2024-05-28 09:30:24 +08:00
hanchaoboandGitea 83624ae5a2 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-05-20 17:01:11 +08:00
hanchaobo 0d62eda5a8 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-05-20 17:00:17 +08:00
hanchaobo 0ce29b99ac 新增机构切换清楚地址逻辑 2024-05-20 17:00:06 +08:00
gaogaoyujieandGitea 30d335340a Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-05-20 15:50:59 +08:00
gyj 0f5f320312 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-05-20 15:47:47 +08:00
gyj 6156b82b6c 修改调解bug 2024-05-20 15:47:19 +08:00
gaogaoyujieandGitea c6aafbf252 Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-05-17 17:15:45 +08:00
gyj 604d76e1fd Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-05-17 17:14:45 +08:00
gyj 3b809685e3 发布版本 2024-05-17 17:14:28 +08:00
hanchaoboandGitea 96086cf6f9 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-05-17 14:13:12 +08:00
hanchaobo 1cf64e3b41 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-05-17 14:12:09 +08:00
hanchaobo f67c276eab 调解按钮权限,以及操作人下拉选禁用 2024-05-17 14:11:57 +08:00
hanchaoboandGitea 5038469490 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-05-16 16:19:47 +08:00
hanchaobo 11ecebb5f9 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-05-16 16:19:08 +08:00
hanchaobo fcab34b6eb bug修改 2024-05-16 16:18:59 +08:00
gaogaoyujieandGitea eaa129cfd4 Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-05-16 16:10:05 +08:00
gyj b0e379e8bb Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-05-16 16:07:58 +08:00
gyj 9d7247a4ed 测试bug 2024-05-16 10:27:26 +08:00
hanchaoboandGitea e6645c7685 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-05-13 13:51:01 +08:00
hanchaobo 3249841059 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-05-13 13:50:18 +08:00
hanchaobo 0ebb84bab1 是否有调解编辑only office权限 2024-05-13 13:50:06 +08:00
hanchaoboandGitea 68258f3451 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-05-11 16:09:41 +08:00
hanchaobo afb49528c1 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-05-11 16:08:59 +08:00
hanchaobo 5918d71352 onlyofficebug 2024-05-11 16:08:46 +08:00
gaogaoyujieandGitea 006260ffed Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-05-06 16:29:00 +08:00
gyj 0cfefe4893 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-05-06 16:27:51 +08:00
gyj 24cbd66d75 修改显示是否操作人 2024-05-06 16:27:26 +08:00
gaogaoyujieandGitea cd6a6064fa Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-05-06 16:01:24 +08:00
gyj 5df5678c95 解决冲突更改 2024-05-06 15:58:30 +08:00
gyj c5f5d8c98c 修改测试bug 2024-05-06 15:55:18 +08:00
hanchaoboandGitea b7705af7e0 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-05-06 10:00:10 +08:00
hanchaobo 61f6cd4742 视频会议问题 2024-05-06 09:59:16 +08:00
gaogaoyujieandGitea 18e07846a5 Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-30 15:32:48 +08:00
gyj fb97f76070 新增修改 2024-04-30 15:30:04 +08:00
gyj 4fc6019ffa Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-04-30 15:14:09 +08:00
gyj cde9f59262 新增修改 2024-04-30 15:13:48 +08:00
hanchaoboandGitea e6f456b0c9 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-30 15:07:01 +08:00
hanchaobo ce5938c4c3 修改bug 2024-04-30 15:06:08 +08:00
hanchaoboandGitea 5c3bbd469d Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-30 13:47:50 +08:00
hanchaobo 2a4759330b Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-04-30 13:46:40 +08:00
hanchaobo f00a25449f 调解书上传 2024-04-30 13:46:33 +08:00
gaogaoyujieandGitea 9b3145944d Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-30 13:45:14 +08:00
gyj 4b32e754c0 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-04-30 13:44:12 +08:00
gyj 921888a0c3 修改测试bug 2024-04-30 13:43:54 +08:00
hanchaoboandGitea 278a041a8a Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-30 10:50:14 +08:00
hanchaobo c144befe51 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-04-30 10:48:40 +08:00
hanchaobo c291d70a9f video/upload接口参数更改 2024-04-30 10:48:31 +08:00
gaogaoyujieandGitea fb864ad0b2 Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-30 10:40:17 +08:00
gyj 3e53480616 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-04-30 10:37:06 +08:00
gyj 3bf0460ddf 修改线下调解 2024-04-30 10:36:42 +08:00
gaogaoyujieandGitea 6aedf3c23d Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-29 14:18:14 +08:00
gyj ab0fc9d6f0 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-04-29 14:16:04 +08:00
gyj dbb2855547 修改测试bug 2024-04-29 14:15:35 +08:00
hanchaoboandGitea cd93c92b62 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-29 09:42:50 +08:00
hanchaobo 3c033f7cd9 '归档详情页面优化' 2024-04-29 09:41:53 +08:00
gaogaoyujieandGitea 3a6a780964 Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-25 18:02:27 +08:00
gyj fa0b195ec1 修改测试bug及人脸核实 2024-04-25 17:58:36 +08:00
gaogaoyujieandGitea 0d22fa41e1 Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-24 14:39:17 +08:00
gyj 96087a7247 核实调解员修改接口 2024-04-24 14:37:28 +08:00
gyj b7cd12db46 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-04-24 14:29:00 +08:00
gyj b88c628c4d 修改测试bug 2024-04-24 14:28:25 +08:00
gaogaoyujieandGitea 26b5753150 Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-23 18:07:02 +08:00
gyj 0d47f2c2fb 人脸核验开发 2024-04-23 18:05:16 +08:00
hanchaoboandGitea c8340874f6 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-23 09:24:58 +08:00
hanchaobo 394a65fcaa Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-04-23 09:22:44 +08:00
hanchaobo fc5fd5914f 修改注册 2024-04-23 09:21:54 +08:00
hanchaoboandGitea 0fa56bbf45 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-22 18:15:21 +08:00
hanchaobo a3003f6af8 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-04-22 18:14:05 +08:00
hanchaobo aef3c0f53f 注册开发 2024-04-22 18:13:09 +08:00
hanchaoboandGitea f76cafe928 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-22 17:34:42 +08:00
hanchaobo d07ba431c5 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-04-22 17:33:02 +08:00
hanchaobo b1c8e45570 调解书上传下载 2024-04-22 17:32:07 +08:00
gaogaoyujieandGitea b4bb4f5dbf Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-22 13:41:26 +08:00
gyj db0d35c424 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-04-22 13:39:11 +08:00
gyj c9c91fe405 onlyOffice跳转设置token 2024-04-22 13:38:54 +08:00
hanchaoboandGitea ca17f03831 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-19 15:57:42 +08:00
hanchaobo 4e86daeb5a 修改测试bug 2024-04-19 15:54:21 +08:00
hanchaoboandGitea e00f712efb Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-18 09:48:27 +08:00
gyjandhanchaobo c7c4ed8f6e 查看缴费单,缴费确认,案件受理 2024-04-18 09:31:48 +08:00
hanchaoboandGitea 1f1a8dcd46 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-16 18:15:24 +08:00
hanchaobo 7f704424b2 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-04-16 18:14:18 +08:00
hanchaobo 9806e7c9ef 短信发送 2024-04-16 18:14:05 +08:00
Your Name 5ecea9844c 缴费,案件详情问题处理 2024-04-16 18:00:41 +08:00
gyjandhanchaobo cc1629f632 案件列表内容的开发 2024-04-16 18:00:20 +08:00
hanchaoboandGitea c658dc1929 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-12 09:58:40 +08:00
hanchaobo 0f9cfcd432 短信复制编辑 2024-04-12 09:57:34 +08:00
gaogaoyujieandGitea 570ffbfee8 Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-09 14:07:10 +08:00
gyj 0e303073df '是否用印申请' 2024-04-09 14:05:41 +08:00
hanchaoboandGitea 822318aec1 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-08 10:25:44 +08:00
hanchaobo 1718fdd6d8 修改调解页面 2024-04-08 10:24:29 +08:00
gaogaoyujieandGitea 8eca5b0fab Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-02 17:32:38 +08:00
gyj a013dc90b5 修改是或否操作默认值 2024-04-02 17:31:06 +08:00
hanchaoboandGitea c454099061 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-04-02 15:17:13 +08:00
hanchaobo c071610f80 0329测试问题修改 2024-04-02 15:11:35 +08:00
hanchaoboandGitea 930c654c68 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-28 18:07:11 +08:00
hanchaobo 0a50839f9d Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-03-28 18:05:03 +08:00
hanchaobo dfa4c3d4da 单点登录,动态新增 2024-03-28 18:04:52 +08:00
hanchaoboandGitea ca9043d7bf Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-21 09:37:13 +08:00
hanchaobo 14f6838c50 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-03-21 09:36:16 +08:00
hanchaobo 9e3c6928f0 调解回显问题 2024-03-21 09:36:05 +08:00
gaogaoyujieandGitea 4751846f64 Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-20 10:27:07 +08:00
gyj 0c08314b4d 修改调解结果的格式和显示隐藏调解结果,调解申请书,证据 2024-03-20 10:25:28 +08:00
hanchaobo cb7387c631 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-03-19 20:33:10 +08:00
gaogaoyujieandGitea 263a82b915 Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-19 20:32:34 +08:00
gyj d23258c3ce Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-03-19 20:31:50 +08:00
gyj 5f549a11e2 调解确认书默认值 2024-03-19 20:31:22 +08:00
hanchaobo 705a180fc0 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-03-19 20:16:21 +08:00
gaogaoyujieandGitea 2c9aaf2e49 Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-19 20:15:53 +08:00
gyj c92b45b275 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-03-19 20:15:03 +08:00
gyj fb7a73ed46 修改确认调解书提交值 2024-03-19 20:14:44 +08:00
hanchaobo 497eaf0700 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-03-19 19:55:51 +08:00
gaogaoyujieandGitea 7bdb0e9536 Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-19 19:55:40 +08:00
gyj c2ba8108f8 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-03-19 19:54:36 +08:00
gyj 4affe89cd0 确认调解书修改回显 2024-03-19 19:54:15 +08:00
hanchaobo 95d4e52a84 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-03-19 19:35:02 +08:00
gaogaoyujieandGitea d08d1cc7ef Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-19 19:34:14 +08:00
gyj 33c92b49c2 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-03-19 19:32:58 +08:00
gyj 20c19a6c10 修改确认调解书 2024-03-19 19:32:32 +08:00
hanchaobo 3b1153c5e3 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-03-19 16:22:03 +08:00
hanchaobo 1504603ca6 onlyoffice加载问题 2024-03-19 16:20:47 +08:00
gaogaoyujieandGitea ce23ba56bd Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-19 15:52:50 +08:00
gyj 05a7103794 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-03-19 15:51:09 +08:00
gyj 6fe397c1ee 修改测试bug,优化页面 2024-03-19 15:50:34 +08:00
hanchaoboandGitea 24c61698cb Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-19 09:54:59 +08:00
hanchaobo 400b3e4644 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-03-19 09:53:37 +08:00
hanchaobo 5f0c651bac onlyoffice加载过慢 2024-03-19 09:53:21 +08:00
hanchaoboandGitea a7ae328123 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-18 17:56:33 +08:00
hanchaobo 972c409213 onlyoffice在线编辑 2024-03-18 17:54:57 +08:00
hanchaobo 9948c9ed04 onlyoffice在线编辑 2024-03-18 17:53:14 +08:00
gaogaoyujieandGitea 752950ea35 Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-18 14:42:49 +08:00
gyj 8955626849 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-03-18 14:40:34 +08:00
gyj 6281a29aae 修改了被申请人缴费证据优化显示 2024-03-18 14:40:04 +08:00
hhlxayunmeiandGitea 830f41bbec Merge branch 'hhl' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-18 14:37:36 +08:00
hhl123456789 51c91a1c1a '上传多个缴费凭证后,删除一个提交接口报错修复' 2024-03-18 14:36:23 +08:00
hhlxayunmeiandGitea 4c0c084126 Merge branch 'hhl' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-18 11:43:05 +08:00
hhl123456789 6a0a382963 '证据修改显隐问题调整' 2024-03-18 11:41:50 +08:00
hanchaoboandGitea 81ac5528a1 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-12 11:19:59 +08:00
hanchaobo b1810b835a Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-03-12 11:18:29 +08:00
hanchaobo 72e79651b6 送达加载,新增bug 2024-03-12 11:18:18 +08:00
hanchaoboandGitea 4f8165045a Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-11 10:09:25 +08:00
hanchaobo 9bebf1a8a7 合并 2024-03-11 10:08:49 +08:00
hanchaobo 03f1700c37 外籍人口功能 2024-03-11 10:07:18 +08:00
gaogaoyujieandGitea ab70858f39 Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-07 17:36:05 +08:00
gyj ed1165a6ac Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-03-07 17:34:06 +08:00
gyj 8c45d922a5 新增页面的优化 2024-03-07 17:33:56 +08:00
hanchaoboandGitea a1fec88e88 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-06 18:18:50 +08:00
hanchaobo 6a1d18309a Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-03-06 18:17:46 +08:00
hanchaobo 5f41c61d1e 0306测试问题 2024-03-06 18:17:22 +08:00
hanchaoboandGitea c2f5d6d8bd Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-06 15:18:25 +08:00
hanchaobo 3762c9a6cb Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-03-06 15:10:11 +08:00
hanchaobo fc37239f9d 0306部署2 2024-03-06 15:09:52 +08:00
hanchaoboandGitea b923625515 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-06 09:39:53 +08:00
hanchaobo 62dbde7d0a Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-03-06 09:38:44 +08:00
hanchaobo 720d90193f 0306部署 2024-03-06 09:38:32 +08:00
hhlxayunmeiandGitea 13937509c8 Merge branch 'hhl' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-05 17:41:33 +08:00
hhl123456789 72ced8108b '图标编辑问题修复' 2024-03-05 17:40:42 +08:00
hhlxayunmeiandGitea 9f2556e387 Merge branch 'hhl' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-05 16:30:52 +08:00
hhl123456789 7d56e738ff Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hhl 2024-03-05 16:30:09 +08:00
hhl123456789 fc0272dca0 '3.5问题修复' 2024-03-05 16:29:54 +08:00
gaogaoyujieandGitea d6ccde627a Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-05 15:43:53 +08:00
gyj 8cd7dfcfcd Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-03-05 15:42:56 +08:00
gyj 8178a9d180 新增优化 2024-03-05 15:42:21 +08:00
gaogaoyujieandGitea 857e5588ad Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-05 15:04:55 +08:00
gyj 8b71e26f57 新增页面优化 2024-03-05 14:58:10 +08:00
hanchaobo 57f11996c6 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-03-05 12:01:39 +08:00
hanchaobo 718e182766 压缩包上传 2024-03-05 12:01:28 +08:00
hanchaoboandGitea 9fbd20a098 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-05 09:17:03 +08:00
hanchaobo 9f34dafc9a Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-03-05 09:16:08 +08:00
hanchaobo a61a1388f7 压缩包上传回显 2024-03-05 09:15:47 +08:00
hhlxayunmeiandGitea 8d4a69a959 Merge branch 'hhl' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-04 17:42:56 +08:00
hhl123456789 08ba042ac2 '优化' 2024-03-04 17:41:52 +08:00
hhlxayunmeiandGitea e370c8f248 Merge branch 'hhl' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-04 11:16:11 +08:00
hhl123456789 ecd8979c8b Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hhl 2024-03-04 11:15:21 +08:00
hhl123456789 39125fdcdf '节点图标编辑回显问题修复' 2024-03-04 11:15:08 +08:00
hanchaoboandGitea fe0833dd32 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-04 09:54:27 +08:00
hanchaobo bcd9f7cbb2 合并0304 2024-03-04 09:52:50 +08:00
hanchaobo 0733c67999 合并0304 2024-03-04 09:51:02 +08:00
hhlxayunmeiandGitea 0620ab8a43 Merge branch 'hhl' of SH-Arbitrate/Mediation-Frontend into dev 2024-03-01 18:16:08 +08:00
hhl123456789 53f3e04905 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hhl 2024-03-01 18:14:32 +08:00
hhl123456789 7cfdcd1fc5 '首页动态图标添加' 2024-03-01 18:14:15 +08:00
gaogaoyujieandGitea 9f15145a7c Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-02-29 17:41:16 +08:00
gyj a45b73ab82 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-02-29 17:39:28 +08:00
gyj c348a4c529 修改测试bug 2024-02-29 17:36:57 +08:00
hanchaoboandGitea 3b3191c353 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-02-29 14:50:54 +08:00
hanchaobo 811f169ddd 线上加载过慢问题 2024-02-29 14:49:56 +08:00
hanchaoboandGitea cca3bb656b Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-02-29 14:20:28 +08:00
hanchaobo e0bb8cde42 删除仓库 2024-02-29 14:17:42 +08:00
hanchaobo 20c062fcef 删除仓库 2024-02-29 14:16:54 +08:00
hhlxayunmeiandGitea 1b243dc441 Merge branch 'hhl' of SH-Arbitrate/Mediation-Frontend into dev 2024-02-29 11:53:51 +08:00
hhl123456789 e305b7b668 '解决案件列表页面报错问题' 2024-02-29 11:52:15 +08:00
hanchaoboandGitea 987fa7dd54 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-02-29 09:40:31 +08:00
hanchaobo 53ca46a5f5 合并 2024-02-29 09:39:26 +08:00
hanchaobo b577f650f5 0229提交 2024-02-29 09:32:44 +08:00
hhlxayunmeiandGitea b89f7272b8 Merge branch 'hhl' of SH-Arbitrate/Mediation-Frontend into dev 2024-02-28 18:15:25 +08:00
hhl123456789 9efd609de8 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hhl 2024-02-28 18:13:45 +08:00
hhl123456789 504e8ef1d5 '调解首页开发' 2024-02-28 18:13:28 +08:00
gaogaoyujieandGitea f3b90edb88 Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-02-28 18:10:22 +08:00
gyj 797bdc837d Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-02-28 18:06:42 +08:00
gyj 3566f3bd09 修改了logo图 2024-02-28 18:02:53 +08:00
hanchaoboandGitea 7b17d986f3 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-02-27 18:15:17 +08:00
hanchaobo 718e96daa3 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-02-27 18:04:36 +08:00
hanchaobo 42806a93bf 提交loading 2024-02-27 18:04:27 +08:00
hanchaoboandGitea e79cf46f62 Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev 2024-02-27 15:37:58 +08:00
hanchaobo 836f26c1f0 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into hcb 2024-02-27 15:35:31 +08:00
hanchaobo 69bdd05df4 0227bug 2024-02-27 15:35:17 +08:00
gaogaoyujieandGitea b0f6fee8ab Merge branch 'gyj' of SH-Arbitrate/Mediation-Frontend into dev 2024-02-27 15:33:38 +08:00
gyj 7f3138d499 Merge branch 'dev' of http://git.xayunmei.com/SH-Arbitrate/Mediation-Frontend into gyj 2024-02-27 15:30:52 +08:00
gyj d3256e15fb 修改案件归档添加案件详情 2024-02-27 15:30:18 +08:00
56 changed files with 4818 additions and 1602 deletions
+29 -2
View File
@@ -1,3 +1,30 @@
# Mediation-Frontend ## 开发
调解系统PC端服务 ```bash
# 克隆项目
git clone https://gitee.com/y_project/RuoYi-Vue
# 进入项目目录
cd ruoyi-ui
# 安装依赖
npm install
# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
npm install --registry=https://registry.npmmirror.com
# 启动服务
npm run dev
```
浏览器访问 http://localhost:80
## 发布
```bash
# 构建测试环境
npm run build:stage
# 构建生产环境
npm run build:prod
```
+2 -3
View File
@@ -1,7 +1,7 @@
{ {
"name": "ruoyi", "name": "ruoyi",
"version": "3.8.6", "version": "3.8.6",
"description": "智慧仲裁管理系统", "description": "调解系统",
"author": "智慧仲裁", "author": "智慧仲裁",
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
@@ -48,8 +48,7 @@
"js-beautify": "1.13.0", "js-beautify": "1.13.0",
"js-cookie": "3.0.1", "js-cookie": "3.0.1",
"jsencrypt": "3.0.0-rc.1", "jsencrypt": "3.0.0-rc.1",
"lodash": "^4.17.21", "moment": "^2.29.4",
"moment": "^2.30.1",
"nprogress": "0.2.0", "nprogress": "0.2.0",
"qrcodejs2": "0.0.2", "qrcodejs2": "0.0.2",
"quill": "1.3.7", "quill": "1.3.7",
Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

+1
View File
@@ -7,6 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> <link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= webpackConfig.name %></title> <title><%= webpackConfig.name %></title>
<script src="http://121.40.189.20:8899/web-apps/apps/api/documents/api.js"></script>
<!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]--> <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
<style> <style>
html, html,
+79
View File
@@ -2,6 +2,9 @@
<div id="app"> <div id="app">
<router-view /> <router-view />
<theme-picker /> <theme-picker />
<div class="onlyoffice">
<div id="placeholder"></div>
</div>
</div> </div>
</template> </template>
@@ -11,6 +14,77 @@ import ThemePicker from "@/components/ThemePicker";
export default { export default {
name: "App", name: "App",
components: { ThemePicker }, components: { ThemePicker },
data() {
return {
config: {},
flag: false
}
},
mounted() {
console.log("app.vue");
this.config = {
"editorConfig": {
"mode": "edit",
"customization": {
"feedback": {
"visible": false
},
"help": false,
"goback": {
"blank": false
},
"macros": false,
"autosave": false,
"comments": false,
"review": {},
"hideRightMenu": true,
"anonymous": {
"request": false
},
"forcesave": true,
"logo": {},
"hideNotes": true
},
"plugins": {
"pluginsData": [],
"autostart": []
},
"callbackUrl": "http://121.40.189.20:9090/onlyOffice/save",
"lang": "zh-CN",
"user": {
"name": "OnlyOfficeUserName1",
"id": "1"
}
},
"docServiceApiUrl": "http://121.40.189.20:8899/web-apps/apps/api/documents/api.js",
"documentType": "word",
"document": {
"permissions": {
"edit": false,
"chat": false,
"review": false
},
"title": "调解申请书模板.docx",
"fileType": "docx",
"key": "6ae50056ac5e4e3ba09be430d444699c",
"url": "http://121.40.189.20:9090/download/6ae50056ac5e4e3ba09be430d444699c",
"info": {
"sharingSettings": [
{
"isLink": true,
"permissions": [
"Full Access"
],
"user": "OnlyOfficeUserName1"
}
],
"created": "2024-03-13 09:46:41"
}
},
"type": "desktop"
}
var docEditor = new DocsAPI.DocEditor("placeholder", this.config);
},
metaInfo() { metaInfo() {
return { return {
title: this.$store.state.settings.dynamicTitle && this.$store.state.settings.title, title: this.$store.state.settings.dynamicTitle && this.$store.state.settings.title,
@@ -25,4 +99,9 @@ export default {
#app .theme-picker { #app .theme-picker {
display: none; display: none;
} }
.onlyoffice {
width: 0;
height: 0;
}
</style> </style>
+15
View File
@@ -239,3 +239,18 @@ export function secretaryRoleByUserId(query) {
params: query params: query
}) })
} }
// 获取证件类型
export function getIdType() {
return request({
url: '/system/dict/data/type/id_type',
method: 'get',
})
}
// 会议附件上传接口
export function meetingUpload(data) {
return request({
url: '/video/upload',
method: 'post',
data: data
})
}
+40
View File
@@ -18,3 +18,43 @@ export function smsList(data,params) {
params:params params:params
}) })
} }
//更新短信内容
export function updateSendContent(data) {
return request({
url: 'shortMessage/updateSendContent',
method: 'post',
data: data,
})
}
// 分页查询短信
export function recordList(data) {
return request({
url: '/shortMessage/recordList',
method: 'get',
params: data
})
}
// 重新发送短信
export function reSendShortMessage(data) {
return request({
url: 'shortMessage/reSendShortMessage',
method: 'post',
data: data,
})
}
// 重新发送邮件
export function reSendMailRecord(data) {
return request({
url: 'sendMailRecord/reSendMailRecord',
method: 'post',
data: data,
})
}
// 更新邮件发送记录
export function update(data) {
return request({
url: 'sendMailRecord/update',
method: 'post',
data: data,
})
}
+38
View File
@@ -65,6 +65,14 @@ export function sendCode(data) {
params:data params:data
}) })
} }
// 获取邮箱验证码
export function sendEmailCode(data) {
return request({
url: '/weChatUser/sendEmailCode',
method: 'get',
params:data
})
}
// 注册方法 // 注册方法
export function wxregister(data) { export function wxregister(data) {
return request({ return request({
@@ -76,3 +84,33 @@ export function wxregister(data) {
data: data data: data
}) })
} }
// 检测用户名是否已经存在
export function verifyUserName(data) {
return request({
url: '/weChatUser/verifyUserName',
method: 'get',
params:data
})
}
// 获取证件类型
export function getIdType() {
return request({
url: '/system/dict/data/type/skipToken/id_type',
method: 'get',
})
}
// 获取pc端的EIDtoken
export function selectIdentityAuthenticaEIDtoken() {
return request({
url: '/identityAuthentication/selectIdentityAuthenticaEIDtoken',
method: 'post'
})
}
// H5轮询获取E证通Token状态
export function selectPCEIDtokenStatus(data) {
return request({
url: '/identityAuthentication/selectPCEIDtokenStatus',
method: 'get',
params:data
})
}
+20
View File
@@ -0,0 +1,20 @@
import request from '@/utils/request'
// 获取onlyoffice配置文件
export function getOnlyoffice(params) {
return request({
url: '/onlyOffice',
// headers: {
// isToken: false
// },
method: 'get',
params: params
})
}
// 保存onlyoffice文档
export function saveOnlyOfficeFile(data) {
return request({
url: '/caseApplication/saveOnlyOfficeFile',
method: 'post',
data: data
})
}
+10
View File
@@ -0,0 +1,10 @@
import request from '@/utils/request'
// 查询首页待办
export function todoCount(data) {
return request({
url: '/caseApplication/todoCount',
method: 'get',
params: data
})
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 394 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 185 KiB

+2 -2
View File
@@ -51,12 +51,12 @@ export default {
// 图片数量限制 // 图片数量限制
limit: { limit: {
type: Number, type: Number,
default: 5, default: 1,
}, },
// 大小限制(MB) // 大小限制(MB)
fileSize: { fileSize: {
type: Number, type: Number,
default: 5, // default: 5,
}, },
// 文件类型, 例如['png', 'jpg', 'jpeg'] // 文件类型, 例如['png', 'jpg', 'jpeg']
fileType: { fileType: {
+2 -1
View File
@@ -9,7 +9,8 @@ export default {
name: 'RuoYiDoc', name: 'RuoYiDoc',
data() { data() {
return { return {
url: 'http://doc.ruoyi.vip/ruoyi-vue' // url: 'http://doc.ruoyi.vip/ruoyi-vue'
url: '#'
} }
}, },
methods: { methods: {
+4 -8
View File
@@ -7,15 +7,10 @@
<div class="right-menu"> <div class="right-menu">
<template v-if="device!=='mobile'"> <template v-if="device!=='mobile'">
<!-- <search id="header-search" class="right-menu-item" /> <!-- <search id="header-search" class="right-menu-item" /> -->
<el-tooltip content="源码地址" effect="dark" placement="bottom">
<ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />
</el-tooltip>
<el-tooltip content="文档地址" effect="dark" placement="bottom"> <el-tooltip content="文档地址" effect="dark" placement="bottom">
<ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" /> <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />
</el-tooltip> --> </el-tooltip>
<screenfull id="screenfull" class="right-menu-item hover-effect" /> <screenfull id="screenfull" class="right-menu-item hover-effect" />
@@ -102,7 +97,8 @@ export default {
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.$store.dispatch('LogOut').then(() => { this.$store.dispatch('LogOut').then(() => {
location.href = '/index'; // location.href = '/index';
this.$router.push({ path: '/Login' })
}) })
}).catch(() => {}); }).catch(() => {});
} }
+65 -4
View File
@@ -13,9 +13,15 @@ import router from './router'
import directive from './directive' // directive import directive from './directive' // directive
import plugins from './plugins' // plugins import plugins from './plugins' // plugins
import { download } from '@/utils/request' import { download } from '@/utils/request'
import { Message } from 'element-ui'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import { getToken } from '@/utils/auth'
import { isRelogin } from '@/utils/request'
import './assets/icons' // icon
// 引入Iconfont 矢量图标库
import './assets/icon/iconfont.css' import './assets/icon/iconfont.css'
import './permission' // permission control // import './permission' // permission control
import { getDicts } from "@/api/system/dict/data"; import { getDicts } from "@/api/system/dict/data";
import { getConfigKey } from "@/api/system/config"; import { getConfigKey } from "@/api/system/config";
import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi"; import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi";
@@ -37,8 +43,9 @@ import DictTag from '@/components/DictTag'
import VueMeta from 'vue-meta' import VueMeta from 'vue-meta'
// 字典数据组件 // 字典数据组件
import DictData from '@/components/DictData' import DictData from '@/components/DictData'
//画布组件
import vueEsign from 'vue-esign'
import {checkPermi} from '@/utils/permission' import {checkPermi} from '@/utils/permission'
import { statusRole } from '@/utils/permission'
// 全局方法挂载 // 全局方法挂载
Vue.prototype.getDicts = getDicts Vue.prototype.getDicts = getDicts
@@ -51,7 +58,6 @@ Vue.prototype.selectDictLabels = selectDictLabels
Vue.prototype.download = download Vue.prototype.download = download
Vue.prototype.handleTree = handleTree Vue.prototype.handleTree = handleTree
Vue.prototype.checkPermi = checkPermi Vue.prototype.checkPermi = checkPermi
Vue.prototype.statusRole = statusRole
// 全局组件挂载 // 全局组件挂载
Vue.component('DictTag', DictTag) Vue.component('DictTag', DictTag)
@@ -65,6 +71,7 @@ Vue.component('ImagePreview', ImagePreview)
Vue.use(directive) Vue.use(directive)
Vue.use(plugins) Vue.use(plugins)
Vue.use(VueMeta) Vue.use(VueMeta)
Vue.use(vueEsign)
DictData.install() DictData.install()
/** /**
@@ -75,7 +82,61 @@ DictData.install()
* Currently MockJs will be used in the production environment, * Currently MockJs will be used in the production environment,
* please remove it before going online! ! ! * please remove it before going online! ! !
*/ */
NProgress.configure({ showSpinner: false })
const whiteList = ['/login', '/register']
router.beforeEach((to, from, next) => {
let path = to.fullPath
if(path.indexOf('token') != -1){
path = path.split('token=');
path = path[1];
Cookies.set("Admin-Token", path)
}
NProgress.start()
if (getToken()) {
to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
/* has token*/
if (to.path === '/login') {
next({ path: '/' })
NProgress.done()
} else {
if (store.getters.roles.length === 0) {
isRelogin.show = true
// 判断当前用户是否已拉取完user_info信息
store.dispatch('GetInfo').then(() => {
isRelogin.show = false
store.dispatch('GenerateRoutes').then(accessRoutes => {
// 根据roles权限生成可访问的路由表
router.addRoutes(accessRoutes) // 动态添加可访问路由表
next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
})
}).catch(err => {
store.dispatch('LogOut').then(() => {
Message.error(err)
next({ path: '/' })
})
})
} else {
next()
}
}
} else {
// 没有token
if (whiteList.indexOf(to.path) !== -1) {
// 在免登录白名单,直接进入
next()
} else {
// next(`/login?redirect=${encodeURIComponent(to.fullPath)}`) // 否则全部重定向到登录页
next(`/login`)
NProgress.done()
}
}
})
router.afterEach(() => {
NProgress.done()
})
Vue.use(Element, { Vue.use(Element, {
size: Cookies.get('size') || 'medium' // set element-ui default size size: Cookies.get('size') || 'medium' // set element-ui default size
}) })
+3 -1
View File
@@ -11,6 +11,7 @@ NProgress.configure({ showSpinner: false })
const whiteList = ['/login', '/register'] const whiteList = ['/login', '/register']
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
console.log("**************************************");
NProgress.start() NProgress.start()
if (getToken()) { if (getToken()) {
to.meta.title && store.dispatch('settings/setTitle', to.meta.title) to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
@@ -45,7 +46,8 @@ router.beforeEach((to, from, next) => {
// 在免登录白名单,直接进入 // 在免登录白名单,直接进入
next() next()
} else { } else {
next(`/login?redirect=${encodeURIComponent(to.fullPath)}`) // 否则全部重定向到登录页 // next(`/login?redirect=${encodeURIComponent(to.fullPath)}`) // 否则全部重定向到登录页
next(`/login`)
NProgress.done() NProgress.done()
} }
} }
+14 -2
View File
@@ -61,6 +61,16 @@ export const constantRoutes = [
component: () => import('@/views/error/401'), component: () => import('@/views/error/401'),
hidden: true hidden: true
}, },
{
path: '/onlyoffice',
component: () => import('@/views/onlyoffice/onlyoffice'),
hidden: true
},
{
path: '/test',
component: () => import('@/views/test'),
hidden: true
},
{ {
path: '', path: '',
component: Layout, component: Layout,
@@ -100,7 +110,8 @@ export const dynamicRoutes = [
children: [ children: [
{ {
path: 'role/:userId(\\d+)', path: 'role/:userId(\\d+)',
component: () => import('@/views/system/user/authRole'), // component: () => import('@/views/system/user/authRole'),
component: (resolve) => require(['@/views/system/user/authRole'],resolve),
name: 'AuthRole', name: 'AuthRole',
meta: { title: '分配角色', activeMenu: '/system/user' } meta: { title: '分配角色', activeMenu: '/system/user' }
} }
@@ -114,7 +125,8 @@ export const dynamicRoutes = [
children: [ children: [
{ {
path: 'user/:roleId(\\d+)', path: 'user/:roleId(\\d+)',
component: () => import('@/views/system/role/authUser'), // component: () => import('@/views/system/role/authUser'),
component: (resolve) => require(['@/views/system/role/authUser'],resolve),
name: 'AuthUser', name: 'AuthUser',
meta: { title: '分配用户', activeMenu: '/system/role' } meta: { title: '分配用户', activeMenu: '/system/role' }
} }
+1
View File
@@ -15,5 +15,6 @@ const getters = {
topbarRouters:state => state.permission.topbarRouters, topbarRouters:state => state.permission.topbarRouters,
defaultRoutes:state => state.permission.defaultRoutes, defaultRoutes:state => state.permission.defaultRoutes,
sidebarRouters:state => state.permission.sidebarRouters, sidebarRouters:state => state.permission.sidebarRouters,
userId:state => state.user.userId,
} }
export default getters export default getters
+1
View File
@@ -126,6 +126,7 @@ export const loadView = (view) => {
return (resolve) => require([`@/views/${view}`], resolve) return (resolve) => require([`@/views/${view}`], resolve)
} else { } else {
// 使用 import 实现生产环境的路由懒加载 // 使用 import 实现生产环境的路由懒加载
// return () => import(`@/views/${view}`)
return (resolve) => require([`@/views/${view}`], resolve) return (resolve) => require([`@/views/${view}`], resolve)
} }
} }
+7 -2
View File
@@ -6,11 +6,15 @@ const user = {
token: getToken(), token: getToken(),
name: '', name: '',
avatar: '', avatar: '',
userId:null,
roles: [], roles: [],
permissions: [] permissions: []
}, },
mutations: { mutations: {
SET_USERID:(state,userId) => {
state.userId = userId
},
SET_TOKEN: (state, token) => { SET_TOKEN: (state, token) => {
state.token = token state.token = token
}, },
@@ -50,7 +54,6 @@ const user = {
GetInfo({ commit, state }) { GetInfo({ commit, state }) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
getInfo().then(res => { getInfo().then(res => {
sessionStorage.setItem('caseStatus', JSON.stringify(res.caseStatus))
const user = res.user const user = res.user
const avatar = (user.avatar == "" || user.avatar == null) ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar; const avatar = (user.avatar == "" || user.avatar == null) ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar;
if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组 if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
@@ -61,6 +64,7 @@ const user = {
} }
commit('SET_NAME', user.userName) commit('SET_NAME', user.userName)
commit('SET_AVATAR', avatar) commit('SET_AVATAR', avatar)
commit('SET_USERID',user.userId)
resolve(res) resolve(res)
}).catch(error => { }).catch(error => {
reject(error) reject(error)
@@ -69,13 +73,14 @@ const user = {
}, },
// 退出系统 // 退出系统
LogOut({ commit, state }) { LogOut({ commit, state, dispatch }) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
logout(state.token).then(() => { logout(state.token).then(() => {
commit('SET_TOKEN', '') commit('SET_TOKEN', '')
commit('SET_ROLES', []) commit('SET_ROLES', [])
commit('SET_PERMISSIONS', []) commit('SET_PERMISSIONS', [])
removeToken() removeToken()
dispatch('tagsView/delAllViews', null, { root: true })
resolve() resolve()
}).catch(error => { }).catch(error => {
reject(error) reject(error)
+1 -22
View File
@@ -24,7 +24,6 @@ export function checkPermi(value) {
return false return false
} }
} }
/** /**
* 角色权限校验 * 角色权限校验
* @param {Array} value 校验值 * @param {Array} value 校验值
@@ -62,27 +61,7 @@ export function statusRole(value) {
if (caseStatus.length == 0) { if (caseStatus.length == 0) {
return false return false
} }
// if (caseStatus.includes(value)) { if (caseStatus.includes(value)) {
// // caseStatus.forEach(item => {
// // if (item == value) {
// // return true
// // }
// // });
// for(let i = 0;i < caseStatus.length;i++){
// if(caseStatus[i] == value){
// return true
// }
// }
// } else {
// return false
// }
let flag = null;
for (let i = 0; i < caseStatus.length; i++) {
if (caseStatus[i] == value) {
flag = caseStatus[i]
}
}
if (flag == value) {
return true return true
} else { } else {
return false return false
+2 -5
View File
@@ -17,7 +17,8 @@ const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分 // axios中请求配置有baseURL选项,表示请求URL公共部分
baseURL: process.env.VUE_APP_BASE_API, baseURL: process.env.VUE_APP_BASE_API,
// 超时 // 超时
timeout: 10000 // timeout: 10000
timeout: 15000
}) })
// request拦截器 // request拦截器
@@ -36,10 +37,6 @@ service.interceptors.request.use(config => {
config.params = {}; config.params = {};
config.url = url; config.url = url;
} }
if (config.url === '/caseApplication/mediation') {
// 调解时对于特定的请求设置超时时间为20秒
config.timeout = 20000; // 20秒
}
if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) { if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) {
const requestObj = { const requestObj = {
url: config.url, url: config.url,
+290 -180
View File
@@ -3,8 +3,8 @@
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
<el-form-item label="案件状态" prop="caseFlowId"> <el-form-item label="案件状态" prop="caseFlowId">
<el-select v-model="queryParams.caseFlowId" placeholder="请选择" clearable> <el-select v-model="queryParams.caseFlowId" placeholder="请选择" clearable>
<el-option v-for="dict in caseStausArr" :key="dict.id" :label="dict.caseStatusName" <el-option v-for="dict in caseStausArr" :key="dict.id" :label="dict.caseStatusName" :value="dict.id"
:value="dict.id" @keyup.enter.native="handleQuery"></el-option> @keyup.enter.native="handleQuery"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item label="申请机构" prop="applicationOrganId"> <!-- <el-form-item label="申请机构" prop="applicationOrganId">
@@ -18,12 +18,13 @@
@keyup.enter.native="handleQuery" /> @keyup.enter.native="handleQuery" />
</el-form-item> --> </el-form-item> -->
<el-form-item label="案件编号" prop="caseNum"> <el-form-item label="案件编号" prop="caseNum">
<el-input v-model="queryParams.caseNum" placeholder="请输入案件编号" clearable style="width: 240px" <el-input v-model="queryParams.caseNum" placeholder="请输入案件编号" :disabled='queryDisable' clearable
@keyup.enter.native="handleQuery" /> style="width: 240px" @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="创建时间" prop="caseTime"> <el-form-item label="创建时间" prop="caseTime">
<el-date-picker v-model="caseTime" type="daterange" align="right" unlink-panels range-separator="至" <el-date-picker v-model="caseTime" type="datetimerange" align="right" unlink-panels range-separator="至"
start-placeholder="开始日期" end-placeholder="结束日期" clearable style="width: 240px" @change="caseTimeChange"> start-placeholder="开始日期" end-placeholder="结束日期" clearable style="width: 240px" :default-time="['00:00:00', '23:59:59']"
@change="caseTimeChange">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@@ -33,7 +34,8 @@
</el-form> </el-form>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" v-hasPermi="['caseManagement:list:add']" size="mini" @click="addCase()">新增案件</el-button> <el-button type="primary" plain icon="el-icon-plus" v-hasPermi="['caseManagement:list:add']" size="mini"
@click="addCase()">新增案件</el-button>
</el-col> </el-col>
<!-- TODO 后期可能加上--> <!-- TODO 后期可能加上-->
<!-- <el-col :span="1.5"> <!-- <el-col :span="1.5">
@@ -61,40 +63,41 @@
<el-table-column label="创建时间" align="center" prop="createTime" :show-overflow-tooltip="true" /> <el-table-column label="创建时间" align="center" prop="createTime" :show-overflow-tooltip="true" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<!-- <el-button size="mini" type="text" icon="el-icon-check" @click="onsubmitRow(scope.row)" v-if="statusRole(scope.row.caseFlowId)">提交</el-button> --> <el-button size="mini" @click="eidtNodeprocess(scope.row)" type="text" icon="el-icon-edit"
<el-button size="mini" @click="eidtNodeprocess(scope.row)" type="text" v-hasPermi="['caseManagement:list:edit']" v-if="scope.row.caseFlowId <= 1">修改</el-button>
icon="el-icon-edit" v-hasPermi="['caseManagement:list:edit']" v-if="scope.row.caseFlowId <= 1">修改</el-button> <el-button size="mini" @click="checkDetail(scope.row)" type="text"
<el-button size="mini" @click="checkDetail(scope.row)" type="text" icon="el-icon-view">查看详情</el-button> icon="el-icon-view">查看详情</el-button>
<!-- <el-button size="mini" @click="consultantApplica(scope.row)" type="text" icon="el-icon-tickets">法律顾问用印申请</el-button> --> <el-button size="mini" @click="caseFlow(scope.row)" type="text"
<!-- <el-button size="mini" @click="departmentApplica(scope.row)" type="text" icon="el-icon-edit-outline">部门长用印</el-button> --> icon="el-icon-zoom-in">查看流程</el-button>
<el-button size="mini" @click="caseFlow(scope.row)" type="text" icon="el-icon-zoom-in">查看流程</el-button>
<el-button size="mini" @click="caseLog(scope.row)" type="text" <el-button size="mini" @click="caseLog(scope.row)" type="text"
icon="el-icon-edit-outline">案件日志</el-button> icon="el-icon-edit-outline">案件日志</el-button>
<!-- <el-button size="mini" @click="paymentconfirmationRow(scope.row)" type="text" icon="el-icon-zoom-in">缴费确认</el-button> --> <el-button size="mini" @click="viewpaymentformRow(scope.row)" type="text" icon="el-icon-edit"
<!-- <el-button size="mini" @click="caseAccep(scope.row)" type="text" icon="el-icon-zoom-in">案件受理</el-button> --> v-if="scope.row.caseFlowId > 2">查看缴费单</el-button>
<el-button size="mini" @click="viewpaymentformRow(scope.row)" type="text" <el-button size="mini" type="text" icon="el-icon-edit" @click="evidenceUpload(scope.row)"
icon="el-icon-edit">查看缴费单</el-button> v-hasPermi="['caseManagement:list:evidenceEdit']"
<!-- <el-button size="mini" @click="caseFiling(scope.row)" type="text" icon="el-icon-tickets">案件归档</el-button> --> v-if="scope.row.caseFlowId <= 9">上传证据</el-button>
<!-- <el-button size="mini" @click="signMediation(scope.row)" type="text" icon="el-icon-edit-outline">申请人签收</el-button> --> <el-button size="mini" v-if="scope.row.mediationFileFlag == 1"
<!-- <el-button size="mini" @click="receivedMediation(scope.row)" type="text" icon="el-icon-edit-outline">被申请人签收</el-button> --> @click="mediationApplication(scope.row)" type="text" icon="el-icon-edit-outline">调解书</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" <el-button size="mini" type="text" icon="el-icon-edit" v-if="scope.row.caseFlowId == 15 ||
@click="evidenceUpload(scope.row)" v-hasPermi="['caseManagement:list:evidenceEdit']" v-if="scope.row.caseFlowId <= 9">上传证据</el-button> scope.row.caseFlowId == 16 ||
<el-button size="mini" type="text" icon="el-icon-edit" v-if="scope.row.caseFlowId == 15 || scope.row.caseFlowId == 16 || scope.row.caseFlowId == 17" @click="caseFilingDetails(scope.row)">归档详情</el-button> scope.row.caseFlowId == 17
<!-- <el-button size="mini" type="text" icon="el-icon-tickets" @click="payStatus(scope.row)">缴费</el-button> --> " @click="caseFilingDetails(scope.row)">归档详情</el-button>
<!-- <el-button size="mini" type="text" icon="el-icon-tickets" @click="selectMediator(scope.row)">预约时间</el-button> --> <div class="btnList" v-for="item in buttonList" :key="item.id">
<!-- <el-button size="mini" type="text" icon="el-icon-tickets" @click="secretaryConfirm(scope.row)">秘书审核</el-button> --> <el-button size="mini" type="text" icon="el-icon-tickets" @click="caseClick(scope.row, item.id)"
<!-- <el-button size="mini" type="text" icon="el-icon-tickets" @click="department(scope.row)">部门长审核</el-button> --> v-if="(item.id == scope.row.caseFlowId &&
<!-- <el-button size="mini" type="text" icon="el-icon-tickets" @click="timeConfirm(scope.row)">确认调解时间</el-button> --> checkPermi([item.buttonAuthFlag]) &&
<el-button size="mini" type="text" icon="el-icon-tickets" v-for="(item) in buttonList" :key="item.id" scope.row.signButtonFlag != 1) && (scope.row.appOperatorFlag == 1 || scope.row.resOperatorFlag == 1 || scope.row.otherFlag == 1 || scope.row.agentFlag == 1 || scope.row.mediatorFlag == 1)
@click="caseClick(scope.row,item.id)" v-if="item.id == scope.row.caseFlowId && checkPermi([item.buttonAuthFlag])">{{ item.nodeName }}</el-button> ">{{ item.nodeName }}</el-button>
</div>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
@pagination="getList(queryParams)" /> :limit.sync="queryParams.pageSize" @pagination="getList(queryParams)" />
<!-- 新增编辑详情 --> <!-- 新增编辑详情 -->
<addCase :addVisable="addVisable" :queryParams="queryParams" @cancelCaseAdd="cancelCaseAdd" @getList="getList" <addCase :addVisable="addVisable" :queryParams="queryParams" @cancelCaseAdd="cancelCaseAdd" @getList="getList"
:caseData="caseData" :caseDisabled="caseDisabled" :tabFlag="tabFlag" :addModifyData="addModifyData"></addCase> :caseData="caseData" :caseDisabled="caseDisabled" :tabFlag="tabFlag" :addModifyData="addModifyData">
</addCase>
<!-- 压缩包导入 --> <!-- 压缩包导入 -->
<caseCompressionPackage :openCompressedPackages="openCompressedPackages" :queryParams="queryParams" <caseCompressionPackage :openCompressedPackages="openCompressedPackages" :queryParams="queryParams"
@cancelCompreess="cancelCompreess" :getList="getList"> @cancelCompreess="cancelCompreess" :getList="getList">
@@ -104,23 +107,28 @@
:caseFlowNumber="caseFlowNumber"> :caseFlowNumber="caseFlowNumber">
</mediationCaseDetails> </mediationCaseDetails>
<!-- 案件日志 --> <!-- 案件日志 -->
<mediationCaseLog :showcaseLog="showcaseLog" @cancelcaseLog="cancelcaseLog" :caselogDataArr="caselogDataArr" :flagLoading="flagLoading"></mediationCaseLog> <mediationCaseLog :showcaseLog="showcaseLog" @cancelcaseLog="cancelcaseLog" :caselogDataArr="caselogDataArr"
:flagLoading="flagLoading"></mediationCaseLog>
<!-- 证据修改 --> <!-- 证据修改 -->
<evidenceDialog :evidenceVisable="evidenceVisable" @cancelEvidence="cancelEvidence" :evidenceData="evidenceData"> <evidenceDialog :evidenceVisable="evidenceVisable" @cancelEvidence="cancelEvidence"
:evidenceData="evidenceData">
</evidenceDialog> </evidenceDialog>
<!-- 缴费 --> <!-- 缴费 -->
<payDialog :openPay="openPay" :payTitle="payTitle" :formPayDetail="formPayDetail" :payId="payId" :payForm="payForm" <payDialog :openPay="openPay" :payTitle="payTitle" :formPayDetail="formPayDetail" :payId="payId"
:queryParams="queryParams" @getList="getList" @paycancelRow="paycancelRow" :formPayDetailAffiliate="formPayDetailAffiliate"></payDialog> :payForm="payForm" :queryParams="queryParams" @getList="getList" @paycancelRow="paycancelRow"
:formPayDetailAffiliate="formPayDetailAffiliate"></payDialog>
<!-- 缴费确认查看详情 --> <!-- 缴费确认查看详情 -->
<paymentdetailsDialog :openDialog="openDialog" @cancelpaymentdetails="cancelpaymentdetails" :title="payTitle" <paymentdetailsDialog :openDialog="openDialog" @cancelpaymentdetails="cancelpaymentdetails" :title="payTitle"
:detailform="detailform" :queryParams="queryParams" :flag="flag" :paymentConfirma="paymentConfirma" :isapplicant="isapplicant" @getList="getList"> :detailform="detailform" :queryParams="queryParams" :flag="flag" :paymentConfirma="paymentConfirma"
:isapplicant="isapplicant" @getList="getList">
</paymentdetailsDialog> </paymentdetailsDialog>
<!-- 案件受理 --> <!-- 案件受理 -->
<caseAcceptance :showAcceptance="showAcceptance" @cancelAcceptance="cancelAcceptance" <caseAcceptance :showAcceptance="showAcceptance" @cancelAcceptance="cancelAcceptance"
:caseAcceptanceData="caseAcceptanceData" @getList="getList"></caseAcceptance> :caseAcceptanceData="caseAcceptanceData" @getList="getList" :queryParams="queryParams"></caseAcceptance>
<!-- 被申请人缴费 --> <!-- 被申请人缴费 -->
<respondentPay :openResPay="openResPay" :resPayTitle="resPayTitle" :formResPayDetail="formResPayDetail" :resPayId="resPayId" :resPayForm="resPayForm" <respondentPay :openResPay="openResPay" :resPayTitle="resPayTitle" :formResPayDetail="formResPayDetail"
:queryParams="queryParams" @getList="getList" @paycancelRes="paycancelRes" :formResPay="formResPay"></respondentPay> :resPayId="resPayId" :resPayForm="resPayForm" :queryParams="queryParams" @getList="getList"
@paycancelRes="paycancelRes" :formResPay="formResPay"></respondentPay>
<!-- 调解员弹窗 --> <!-- 调解员弹窗 -->
<selectMediator @cancelMediator="cancelMediator" :mediatorVisable="mediatorVisable" :mediatorData="mediatorData" <selectMediator @cancelMediator="cancelMediator" :mediatorVisable="mediatorVisable" :mediatorData="mediatorData"
@getList="getList" :queryParams="queryParams"></selectMediator> @getList="getList" :queryParams="queryParams"></selectMediator>
@@ -135,35 +143,54 @@
:timeConfirmData="timeConfirmData" @getList="getList" :queryParams="queryParams"></timeConfirm> :timeConfirmData="timeConfirmData" @getList="getList" :queryParams="queryParams"></timeConfirm>
<!-- 待调解 --> <!-- 待调解 -->
<mediation @cancelMediation="cancelMediation" :mediationVisable="mediationVisable" <mediation @cancelMediation="cancelMediation" :mediationVisable="mediationVisable"
:mediationData="mediationData" @getList="getList" :queryParams="queryParams"></mediation> :mediationData="mediationData" @getList="getList" :queryParams="queryParams" :applicant="applicant">
</mediation>
<confirmMediation @cancelConfirmTion="cancelConfirmTion" :confirmTionVisable="confirmTionVisable" <confirmMediation @cancelConfirmTion="cancelConfirmTion" :confirmTionVisable="confirmTionVisable"
:confirmTionData="confirmTionData" @getList="getList" :queryParams="queryParams"></confirmMediation> :confirmTionData="confirmTionData" @getList="getList" :queryParams="queryParams"></confirmMediation>
<!-- 归档详情 --> <!-- 归档详情 -->
<caseFilingDetailsPage :showarchiveDetails="showarchiveDetails" :caseFilingData="caseFilingData" @cancelDetail="cancelDetail" :detailsAwardNum="detailsAwardNum" :flagLoadingS="flagLoadingS"></caseFilingDetailsPage> <caseFilingDetailsPage :showarchiveDetails="showarchiveDetails" :caseFilingData="caseFilingData"
@cancelDetail="cancelDetail" :detailsAwardNum="detailsAwardNum" :flagLoadingS="flagLoadingS">
</caseFilingDetailsPage>
<!-- 调解申请书 -->
<mediationApplications :mediationAppVisable="mediationAppVisable" @cancelmediationApp="cancelmediationApp"
:mediationLise="mediationLise"></mediationApplications>
</div> </div>
</template> </template>
<script> <script>
import { caseApplicationList, caseApplicationSelectById,submitCaseApply,selectPaymentDetail,sealApply,selectSealUrl,listCaseLogRecord,msCaseFile,msCaseSign,listDeptApplied,msCaseSignUrlApplyPC} from '@/api/caseManagement/caseManagement.js' import {
import { listDept } from '@/api/system/dept.js' caseApplicationList,
import { queryCaseFlowInfo } from '@/api/caseprocessManagement/caseprocessManagement.js' caseApplicationSelectById,
submitCaseApply,
selectPaymentDetail,
sealApply,
selectSealUrl,
listCaseLogRecord,
msCaseFile,
msCaseSign,
listDeptApplied,
msCaseSignUrlApplyPC,
} from "@/api/caseManagement/caseManagement.js";
import { listDept } from "@/api/system/dept.js";
import { queryCaseFlowInfo } from "@/api/caseprocessManagement/caseprocessManagement.js";
import moment from "moment"; import moment from "moment";
import addCase from './components/addCase.vue' import addCase from "./components/addCase.vue";
import evidenceDialog from './components/evidenceDialog.vue'; import evidenceDialog from "./components/evidenceDialog.vue";
import caseCompressionPackage from './components/caseCompressionPackage.vue'; import caseCompressionPackage from "./components/caseCompressionPackage.vue";
import mediationCaseDetails from './components/mediationCaseDetails.vue' import mediationCaseDetails from "./components/mediationCaseDetails.vue";
import mediationCaseLog from './components/mediationCaseLog.vue' import mediationCaseLog from "./components/mediationCaseLog.vue";
import payDialog from "./components/payDialog.vue"; import payDialog from "./components/payDialog.vue";
import respondentPay from "./components/respondentPay.vue" import respondentPay from "./components/respondentPay.vue";
import paymentdetailsDialog from './components/paymentdetailsDialog.vue' import paymentdetailsDialog from "./components/paymentdetailsDialog.vue";
import caseAcceptance from './components/caseAcceptance.vue' import caseAcceptance from "./components/caseAcceptance.vue";
import selectMediator from './components/selectMediator.vue' import selectMediator from "./components/selectMediator.vue";
import confirmMediator from './components/confirmMediator.vue' import confirmMediator from "./components/confirmMediator.vue";
import departmentMediator from './components/departmentMediator.vue' import departmentMediator from "./components/departmentMediator.vue";
import timeConfirm from './components/timeConfirm.vue' import timeConfirm from "./components/timeConfirm.vue";
import mediation from './components/mediation.vue' import mediation from "./components/mediation.vue";
import confirmMediation from './components/confirmMediation.vue' import confirmMediation from "./components/confirmMediation.vue";
import caseFilingDetailsPage from './components/caseFilingDetailsPage.vue' import caseFilingDetailsPage from "./components/caseFilingDetailsPage.vue";
import mediationApplications from "./components/mediationApplications.vue"
export default { export default {
name: "caseList", name: "caseList",
dicts: ["case_flow_node"], dicts: ["case_flow_node"],
@@ -183,7 +210,8 @@ export default {
mediation, mediation,
confirmMediation, confirmMediation,
caseFilingDetailsPage, caseFilingDetailsPage,
respondentPay respondentPay,
mediationApplications
}, },
data() { data() {
return { return {
@@ -191,6 +219,7 @@ export default {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
}, },
queryDisable: false,
// 遮罩层 // 遮罩层
loading: false, loading: false,
// 总条数 // 总条数
@@ -216,9 +245,11 @@ export default {
detailform: {}, //缴费详情数据 detailform: {}, //缴费详情数据
evidenceVisable: false, //证据修改弹窗 evidenceVisable: false, //证据修改弹窗
mediationVisable: false, //待调解弹窗 mediationVisable: false, //待调解弹窗
mediationAppVisable: false,//调解申请书
mediationLise: {},
mediationData: {}, mediationData: {},
payTitle: "", //缴费标题 payTitle: "", //缴费标题
resPayTitle:'',//被申请人缴费标题 resPayTitle: "", //被申请人缴费标题
paymentConfirma: {}, //缴费确认 paymentConfirma: {}, //缴费确认
showAcceptance: false, //案件受理弹框 showAcceptance: false, //案件受理弹框
caseAcceptanceData: {}, //案件受理数据 caseAcceptanceData: {}, //案件受理数据
@@ -240,9 +271,9 @@ export default {
caseData: {}, caseData: {},
evidenceData: {}, evidenceData: {},
caseDisabled: false, caseDisabled: false,
caseTime: '', caseTime: "",
deptList: [], deptList: [],
payTitle: '', payTitle: "",
tabFlag: false, tabFlag: false,
confirmData: {}, confirmData: {},
departmentVisable: false, departmentVisable: false,
@@ -253,13 +284,47 @@ export default {
buttonList: [], buttonList: [],
caseStausArr: [], //案件状态 caseStausArr: [], //案件状态
isapplicant: true, //判断角色申请人或非申请人 isapplicant: true, //判断角色申请人或非申请人
caseFilingData:{} caseFilingData: {},
applicant: ""
}; };
}, },
created() { created() {
// this.queryParams.caseNum = this.$route.query.caseNum;
this.$set(this.queryParams, "caseNum", this.$route.query.caseNum);
console.log(this.$route.query)
if (this.$route.query.token) {
this.queryDisable = true;
} else {
this.queryDisable = false;
}
// this.getList(this.queryParams);
this.listDeptFn();
// this.getButtonList()
queryCaseFlowInfo({
pageNum: 1,
pageSize: 100000,
}).then((res) => {
res.rows.forEach((item) => {
if (item.id != 17) {
this.buttonList.push(item);
}
this.caseStausArr.push(item);
});
// if (this.$route.query.caseFlowId) {
// let querydata = Number(this.$route.query.caseFlowId);
// if (querydata > 0) {
// this.$set(this.queryParams, 'caseFlowId', querydata)
// }
// }
// this.getList(this.queryParams);
});
if (this.$route.query.caseFlowId) {
let querydata = Number(this.$route.query.caseFlowId);
if (querydata > 0) {
this.$set(this.queryParams, 'caseFlowId', querydata)
}
}
this.getList(this.queryParams); this.getList(this.queryParams);
this.listDeptFn()
this.getButtonList()
}, },
methods: { methods: {
/**所有按钮事件 */ /**所有按钮事件 */
@@ -290,50 +355,37 @@ export default {
this.timeConfirm(val); this.timeConfirm(val);
} else if (type == 9) { } else if (type == 9) {
// 调解 // 调解
this.mediationClick(val) this.mediationClick(val);
} else if (type == 10) { } else if (type == 10) {
// 确认调解书 // 确认调解书
this.confirmMediation(val) this.confirmMediation(val);
} else if (type == 11) { } else if (type == 11) {
// 签名 // 签名
this.msCaseSignUrlApplyPCFn(val) this.msCaseSignUrlApplyPCFn(val);
} else if (type == 12) { } else if (type == 12) {
// 用印申请 // 用印申请
this.consultantApplica(val) this.consultantApplica(val);
} else if (type == 13) { } else if (type == 13) {
// 用印 // 用印
this.departmentApplica(val) this.departmentApplica(val);
} else if (type == 14) { } else if (type == 14) {
// 归档 // 归档
this.caseFiling(val); this.caseFiling(val);
} else if (type == 15) { } else if (type == 15) {
// 申请人签收 // 申请人签收
this.signMediation(val) this.signMediation(val);
} else if (type == 16) { } else if (type == 16) {
// 被申请人签收 // 被申请人签收
this.receivedMediation(val) this.receivedMediation(val);
} else if (type == 17) { } else if (type == 17) {
//结束 //结束
} else if (type == 44) { } else if (type == 44) {
// 被申请人缴费 // 被申请人缴费
this.resPayStatus(val) this.resPayStatus(val);
} }
}, },
/**查询按钮列表 */ /**查询按钮列表 */
getButtonList() { getButtonList() { },
queryCaseFlowInfo({
pageNum: 1,
pageSize: 100000
}).then(res => {
console.log(res)
res.rows.forEach(item => {
if(item.id !=17){
this.buttonList.push(item)
}
this.caseStausArr.push(item)
});
})
},
/** 新增案件 */ /** 新增案件 */
addCase() { addCase() {
this.addModifyData = 1; this.addModifyData = 1;
@@ -352,10 +404,10 @@ export default {
}, },
/** 修改案件 */ /** 修改案件 */
eidtNodeprocess(row) { eidtNodeprocess(row) {
this.addModifyData = 3 this.addModifyData = 3;
this.addVisable = true; this.addVisable = true;
this.caseData = row; this.caseData = row;
this.$set(this.caseData,'flag',2) this.$set(this.caseData, "flag", 2);
this.caseDisabled = false; this.caseDisabled = false;
this.tabFlag = false; this.tabFlag = false;
}, },
@@ -402,10 +454,9 @@ export default {
// this.$modal.msgSuccess("立案申请成功"); // this.$modal.msgSuccess("立案申请成功");
// }) // })
// .catch(() => { }); // .catch(() => { });
msCaseSignUrlApplyPC({ caseId: row.id }).then(res=>{ msCaseSignUrlApplyPC({ caseId: row.id }).then((res) => {
console.log(res,"PPPPPPPPPPPPPPPPPPPP");
window.open(res.data.sealUrl); window.open(res.data.sealUrl);
}) });
}, },
/** 选择调解员 */ /** 选择调解员 */
selectMediator(val) { selectMediator(val) {
@@ -420,6 +471,7 @@ export default {
mediationClick(val) { mediationClick(val) {
this.mediationVisable = true; this.mediationVisable = true;
this.mediationData = val; this.mediationData = val;
this.applicant = val.applicationName;
}, },
/** 确认调解书 */ /** 确认调解书 */
confirmMediation(val) { confirmMediation(val) {
@@ -430,6 +482,12 @@ export default {
caseApplicationSelectById(parms).then((res) => { caseApplicationSelectById(parms).then((res) => {
this.formPayDetail = res.data; this.formPayDetail = res.data;
this.formPayDetailAffiliate = res.data.affiliate; this.formPayDetailAffiliate = res.data.affiliate;
let applicantStr = '';
let resStr = '';
applicantStr = this.formPayDetailAffiliate.applicant.map(item => item.applicant.name).join(',');
resStr = this.formPayDetailAffiliate.res.map(item => item.res.name).join(',');
this.formPayDetailAffiliate.applicationName = applicantStr;
this.formPayDetailAffiliate.respondentName = resStr;
this.payForm.feePayable = res.data.feePayable; this.payForm.feePayable = res.data.feePayable;
this.payForm.caseId = res.data.id; this.payForm.caseId = res.data.id;
}); });
@@ -438,6 +496,12 @@ export default {
caseApplicationSelectById(parms).then((res) => { caseApplicationSelectById(parms).then((res) => {
this.formResPayDetail = res.data; this.formResPayDetail = res.data;
this.formResPay = res.data.affiliate; this.formResPay = res.data.affiliate;
let applicantStr = '';
let resStr = '';
applicantStr = this.formResPay.applicant.map(item => item.applicant.name).join(',');
resStr = this.formResPay.res.map(item => item.res.name).join(',');
this.formResPay.applicationName = applicantStr;
this.formResPay.respondentName = resStr;
this.resPayForm.feePayable = res.data.feePayable; this.resPayForm.feePayable = res.data.feePayable;
this.resPayForm.caseId = res.data.id; this.resPayForm.caseId = res.data.id;
}); });
@@ -460,23 +524,22 @@ export default {
/** 时间改变处理 */ /** 时间改变处理 */
caseTimeChange() { caseTimeChange() {
if (this.caseTime) { if (this.caseTime) {
this.queryParams.startTime = moment( this.queryParams.startTime = moment(this.caseTime[0]).format(
this.caseTime[0] "YYYY-MM-DD HH:mm:ss"
).format("YYYY-MM-DD HH:mm:ss"); );
this.queryParams.endTime = moment( this.queryParams.endTime = moment(this.caseTime[1]).format(
this.caseTime[1] "YYYY-MM-DD HH:mm:ss"
).format("YYYY-MM-DD HH:mm:ss"); );
} else { } else {
this.queryParams.startTime = ''; this.queryParams.startTime = "";
this.queryParams.endTime = ''; this.queryParams.endTime = "";
} }
}, },
/** 获取所有部门 */ /** 获取所有部门 */
listDeptFn() { listDeptFn() {
listDeptApplied().then(res => { listDeptApplied().then((res) => {
this.deptList = res.data; this.deptList = res.data;
}) });
}, },
/** 修改证据 */ /** 修改证据 */
evidenceUpload(row) { evidenceUpload(row) {
@@ -548,162 +611,209 @@ export default {
this.dataList = response.rows; this.dataList = response.rows;
this.total = response.total; this.total = response.total;
this.loading = false; this.loading = false;
}) });
}, },
// 法律顾问用印申请 // 法律顾问用印申请
consultantApplica(row) { consultantApplica(row) {
let paramsValue = { let paramsValue = {
caseId: row.id, caseId: row.id,
batchNumber: "", batchNumber: "",
caseFlowId: row.caseFlowId caseFlowId: row.caseFlowId,
} };
this.$modal.confirm("你确定要用印申请吗?").then((res) => { this.$modal
sealApply(paramsValue).then(res => { .confirm("你确定要用印申请吗?")
.then((res) => {
sealApply(paramsValue).then((res) => {
this.getList(this.queryParams); this.getList(this.queryParams);
this.$modal.msgSuccess("用印申请成功"); this.$modal.msgSuccess("用印申请成功");
});
}) })
}).catch(() => { .catch(() => { });
})
}, },
// 部门长用印申请 // 部门长用印申请
departmentApplica(row) { departmentApplica(row) {
this.$modal.confirm("你确定要用印确认吗?").then((res) => { this.$modal
.confirm("你确定要用印确认吗?")
.then((res) => {
let paramsValue = { let paramsValue = {
caseId: row.id caseId: row.id,
} };
selectSealUrl(paramsValue).then(res => { selectSealUrl(paramsValue).then((res) => {
window.open(res.data.sealUrl) window.open(res.data.sealUrl);
this.$modal.confirm("你确认用印了吗?").then((res) => { this.$modal
.confirm("你确认用印了吗?")
.then((res) => {
this.getList(this.queryParams); this.getList(this.queryParams);
}).catch(() => {
}) })
.catch(() => { });
});
}) })
}).catch(() => { .catch(() => { });
})
}, },
// 案件受理 // 案件受理
caseAccep(row) { caseAccep(row) {
this.caseAcceptanceData = row this.caseAcceptanceData = row;
this.showAcceptance = true this.showAcceptance = true;
}, },
cancelAcceptance() { cancelAcceptance() {
this.showAcceptance = false this.showAcceptance = false;
}, },
// 缴费确认 // 缴费确认
paymentconfirmationRow(row, type) { paymentconfirmationRow(row, type) {
this.paymentConfirma = row this.paymentConfirma = row;
console.log(this.paymentConfirma) console.log(this.paymentConfirma);
this.paymentDetails({ this.paymentDetails({
id: row.id id: row.id,
}) });
this.openDialog = true this.openDialog = true;
this.payTitle = "缴费确认" this.payTitle = "缴费确认";
this.flag = 0; this.flag = 0;
this.detailform = {} this.detailform = {};
if (type == 3) { if (type == 3) {
// 申请人 // 申请人
this.isapplicant = true this.isapplicant = true;
} else { } else {
this.isapplicant = false this.isapplicant = false;
} }
}, },
cancelpaymentdetails() { cancelpaymentdetails() {
this.openDialog = false this.openDialog = false;
}, },
// 查看缴费确认 // 查看缴费确认
viewpaymentformRow(row) { viewpaymentformRow(row) {
this.paymentDetails({ this.paymentDetails({
id: row.id id: row.id,
}) });
this.payTitle = "缴费单详情" this.payTitle = "缴费单详情";
this.flag = 1; this.flag = 1;
this.detailform = {} this.detailform = {};
this.openDialog = true this.openDialog = true;
}, },
// 缴费详情 // 缴费详情
paymentDetails(val) { paymentDetails(val) {
selectPaymentDetail(val).then(res => { selectPaymentDetail(val).then((res) => {
this.detailform = res.data; this.detailform = res.data;
}) });
}, },
//案件流程 //案件流程
caseFlow(row) { caseFlow(row) {
this.caseFlowNumber = row this.caseFlowNumber = row;
this.processVisable = true this.processVisable = true;
}, },
cancelViewProcess() { cancelViewProcess() {
this.processVisable = false this.processVisable = false;
}, },
//案件日志 //案件日志
caseLog(row) { caseLog(row) {
this.caseLogNumber = row this.caseLogNumber = row;
this.showcaseLog = true this.showcaseLog = true;
this.flagLoading = true; this.flagLoading = true;
listCaseLogRecord({caseId:row.id}).then(res=>{ listCaseLogRecord({ caseId: row.id }).then((res) => {
this.caselogDataArr = res.data this.caselogDataArr = res.data;
this.flagLoading = false; this.flagLoading = false;
}) });
}, },
cancelcaseLog() { cancelcaseLog() {
this.showcaseLog = false this.showcaseLog = false;
}, },
// 案件送达 // 案件送达
caseFiling(row) { caseFiling(row) {
console.log(row.id) console.log(row.id);
let paramValues = { let paramValues = {
ids:[row.id] ids: [row.id],
};
this.$confirm("你确定要案件送达吗?", "提示", {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: () => { },
beforeClose: (action, ctx, close) => {
if (action !== 'confirm') {
close();
return;
} }
this.$modal.confirm("你确定要案件送达吗?").then((res) => { ctx.confirmButtonLoading = true;
msCaseFile(paramValues).then(res=>{ msCaseFile(paramValues).then((res) => {
this.$modal.msgSuccess("案件送达成功"); this.$modal.msgSuccess("案件送达成功");
close();
this.getList(this.queryParams); this.getList(this.queryParams);
}).finally(() => {
ctx.confirmButtonLoading = false;
}) })
}).catch(() => { }
}).finally(() => { })
}) // .then((res) => {
// msCaseFile(paramValues).then((res) => {
// this.$modal.msgSuccess("案件送达成功");
// this.getList(this.queryParams);
// });
// })
// .catch(() => { });
}, },
//申请人签收调解书 //申请人签收调解书
signMediation(row) { signMediation(row) {
this.$modal.confirm("你确定要签收调解书吗?").then((res) => { this.$modal
this.signingMediationAgreement({caseId:row.id,isSignApply:1}) .confirm("你确定要签收调解书吗?")
}).catch(() => { .then((res) => {
this.signingMediationAgreement({ caseId: row.id, isSignApply: 1 });
}) })
.catch(() => { });
}, },
//被申请人签收调解书 //被申请人签收调解书
receivedMediation(row) { receivedMediation(row) {
this.$modal.confirm("你确定要签收调解书吗?").then((res) => { this.$modal
this.signingMediationAgreement({caseId:row.id,isSignRespon:1}) .confirm("你确定要签收调解书吗?")
}).catch(() => { .then((res) => {
this.signingMediationAgreement({ caseId: row.id, isSignRespon: 1 });
}) })
.catch(() => { });
}, },
// 申请人和被申请人签收调解书接口 // 申请人和被申请人签收调解书接口
signingMediationAgreement(val) { signingMediationAgreement(val) {
console.log(val) console.log(val);
msCaseSign(val).then(res=>{ msCaseSign(val).then((res) => {
this.$modal.msgSuccess("签收成功"); this.$modal.msgSuccess("签收成功");
this.getList(this.queryParams); this.getList(this.queryParams);
}) });
}, },
//归档详情 //归档详情
caseFilingDetails(val) { caseFilingDetails(val) {
this.showarchiveDetails = true; this.showarchiveDetails = true;
this.caseFilingData = val; this.caseFilingData = val;
let vals = {id:val.id} let vals = { id: val.id };
caseApplicationSelectById(vals).then(res=>{ caseApplicationSelectById(vals).then((res) => {
this.detailsAwardNum = res.data res.data.affiliate.applicant.forEach(item => {
console.log(this.detailsAwardNum) if (!item.applicant) {
this.flagLoadingS = false item.applicant = {}
}
if (!item.applicantAgent) {
item.applicantAgent = {}
}
}) })
res.data.affiliate.res.forEach(item => {
if (!item.res) {
item.res = {}
}
if (!item.resAgent) {
item.resAgent = {}
}
})
this.detailsAwardNum = res.data;
console.log(this.detailsAwardNum);
this.flagLoadingS = false;
});
}, },
cancelDetail() { cancelDetail() {
this.showarchiveDetails = false this.showarchiveDetails = false;
},
// 调解书
mediationApplication(row) {
this.mediationLise = row
this.mediationAppVisable = true
},
cancelmediationApp() {
this.mediationAppVisable = false
} }
}, },
}; };
</script> </script>
File diff suppressed because it is too large Load Diff
@@ -63,7 +63,13 @@ export default {
watch: { watch: {
showAcceptance(val) { showAcceptance(val) {
if (val) { if (val) {
console.log(this.caseAcceptanceData) console.log(this.caseAcceptanceData);
this.courtReviewform = {
mediationMethod: 2,
paperFlag: 0,
arbitrateConfirm: 0,
agreeFlag: 1
}
} }
}, },
}, },
@@ -6,6 +6,7 @@
</div> </div>
<div v-else> <div v-else>
<el-tabs v-model="activeName" @tab-click="handleClick"> <el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="案件信息" name="five"></el-tab-pane>
<el-tab-pane label="申请人案件证据资料" name="first"></el-tab-pane> <el-tab-pane label="申请人案件证据资料" name="first"></el-tab-pane>
<!-- <el-tab-pane label="被申请人案件证据资料" name="second"></el-tab-pane> --> <!-- <el-tab-pane label="被申请人案件证据资料" name="second"></el-tab-pane> -->
<el-tab-pane label="调解书" name="third"></el-tab-pane> <el-tab-pane label="调解书" name="third"></el-tab-pane>
@@ -14,7 +15,8 @@
</el-tabs> </el-tabs>
<div v-show="activeName == 'first'"> <div v-show="activeName == 'first'">
<div v-for="(item,index) in detailsAwardNum.caseAttachList" :key="index" v-if="item.annexType==2" style="margin-top:10px;"> <div v-for="(item, index) in detailsAwardNum.caseAttachList" :key="index" v-if="item.annexType == 2"
style="margin-top:10px;">
<el-link target="_blank" type="primary" :href="fileURL + item.annexPath">{{ item.annexName }}</el-link> <el-link target="_blank" type="primary" :href="fileURL + item.annexPath">{{ item.annexName }}</el-link>
</div> </div>
<el-empty v-if="isNoData(detailsAwardNum.caseAttachList, 2) == 0" description="暂无数据"></el-empty> <el-empty v-if="isNoData(detailsAwardNum.caseAttachList, 2) == 0" description="暂无数据"></el-empty>
@@ -27,13 +29,25 @@
</div> --> </div> -->
<div v-show="activeName == 'third'"> <div v-show="activeName == 'third'">
<div v-for="item in detailsAwardNum.caseAttachList" v-if="item.annexType == 7" style="margin-top:10px;"> <div v-for="item in detailsAwardNum.caseAttachList" v-if="item.annexType == 7" style="margin-top:10px;">
<el-link target="_blank" type="primary" :href="fileURL+item.annexPath">{{item.annexName}}</el-link> <!-- <el-link target="_blank" type="primary" :href="fileURL + item.annexPath">{{ item.annexName }}</el-link> -->
<span>签署前调解书:</span>
<div style="color: blue; cursor: pointer" @click="fileDetil(item.onlyOfficeFileId, 2)">
{{ item.annexName }}
</div>
</div>
<div v-for="item in detailsAwardNum.caseAttachList" v-if="item.annexType == 13" style="margin-top:10px;">
<span>签署后调解书:</span>
<div style="color: blue; cursor: pointer" @click="fileDetil(item.annexPath, 1)">
{{ item.annexName }}
</div>
</div> </div>
<el-empty v-if="isNoData(detailsAwardNum.caseAttachList, 7) == 0" description="暂无数据"></el-empty> <el-empty v-if="isNoData(detailsAwardNum.caseAttachList, 7) == 0" description="暂无数据"></el-empty>
</div> </div>
<div v-show="activeName == 'fourth'"> <div v-show="activeName == 'fourth'">
<div style="margin-top:10px;" v-for="(item,index) in detailsAwardNum.caseAttachList" v-if="item.annexType==5"> <div style="margin-top:10px;" v-for="(item, index) in detailsAwardNum.caseAttachList"
<video style="background-color: #181717;width: 350px;height: 200px;margin: 10px;" :key="index" :src="fileURL+item.annexPath" controls="controls"></video> v-if="item.annexType == 5">
<video style="background-color: #181717;width: 350px;height: 200px;margin: 10px;" :key="index"
:src="fileURL + item.annexPath" controls="controls"></video>
</div> </div>
<el-empty v-if="isNoData(detailsAwardNum.caseAttachList, 5) == 0" description="暂无数据"></el-empty> <el-empty v-if="isNoData(detailsAwardNum.caseAttachList, 5) == 0" description="暂无数据"></el-empty>
</div> </div>
@@ -43,6 +57,645 @@
</div> </div>
<el-empty v-if="isNoData(detailsAwardNum.caseAttachList, 6) == 0" description="暂无数据"></el-empty> <el-empty v-if="isNoData(detailsAwardNum.caseAttachList, 6) == 0" description="暂无数据"></el-empty>
</div> </div>
<div v-show="activeName == 'five'">
<el-form :disabled="true" :model="detailsAwardNum" label-width="130px" class="demo-ruleForm">
<el-row>
<div style="display: inline-flex">
<div class="infoIcon"></div>
<div class="caseInfo">案件信息:</div>
</div>
<el-divider></el-divider>
<el-col :span="24">
<el-form-item label="申请人调解请求" prop="arbitratClaims" :rules="[
{
required: true,
message: '申请人调解请求不能为空',
trigger: 'blur',
},
]">
<el-input v-model="detailsAwardNum.arbitratClaims" placeholder="请输入申请人调解诉求" type="textarea"
:autosize="{ minRows: 4, maxRows: 8 }" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="事实和理由" prop="facts" :rules="[
{
required: true,
message: '事实和理由不能为空',
trigger: 'blur',
},
]">
<el-input v-model="detailsAwardNum.facts" placeholder="请输入事实和理由" type="textarea"
:autosize="{ minRows: 4, maxRows: 8 }" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="调解申请书:">
<div v-for="(item, index) in detailsAwardNum.caseAttachList" :key="index" v-if="item.annexType == 3">
<div style="color: blue; cursor: pointer" @click="fileDetil(item.annexPath, 1)">
{{ item.annexName }}
</div>
</div>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="签署前调解书:">
<div v-for="(item, index) in detailsAwardNum.caseAttachList" :key="index" v-if="item.annexType == 7">
<div style="color: blue; cursor: pointer" @click="fileDetil(item.onlyOfficeFileId, 2)">
{{ item.annexName }}
</div>
</div>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="签署后调解书:">
<div v-for="(item, index) in detailsAwardNum.caseAttachList" :key="index" v-if="item.annexType == 13">
<div style="color: blue; cursor: pointer" @click="fileDetil(item.annexPath, 1)">
{{ item.annexName }}
</div>
</div>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="调解结果:">
<el-link v-if="detailsAwardNum.mediaResult == 1">达成调解</el-link>
<el-link v-if="detailsAwardNum.mediaResult == 2">未达成调解</el-link>
<el-link v-if="detailsAwardNum.mediaResult == 3">未达成调解但不在争议</el-link>
<el-link v-if="detailsAwardNum.mediaResult == 4">未达成调解但同意引入仲裁</el-link>
<el-link v-if="detailsAwardNum.mediaResult == 5">达成和解</el-link>
</el-form-item>
</el-col>
<el-col :span="24">
<div style="display: inline-flex">
<div class="infoIcon"></div>
<div class="caseInfo">双方信息:</div>
</div>
<el-divider></el-divider>
</el-col>
<div class="applicant" v-for="(item, index) in detailsAwardNum.affiliate.applicant" :key="item.key">
<el-col :span="24">
<div style="display: inline-flex">
<div class="infoIcon"></div>
<div class="caseInfo">申请人</div>
</div>
<el-divider></el-divider>
</el-col>
<el-col :span="24">
<el-form-item label="选择机构或自然人">
<el-radio-group v-model="item.applicant.organizeFlag">
<el-radio :label="0">自然人</el-radio>
<el-radio :label="1">机构</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.applicant.organizeFlag == 1">
<el-form-item label="机构名称" :prop="'affiliate.applicant.' + index + '.applicant.name'" :rules="[
{
required: true,
message: '申请机构名称不能为空',
trigger: 'blur',
},
]">
<el-input v-model="item.applicant.name" placeholder="请输入申请机构名称" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.applicant.organizeFlag == 0">
<el-form-item label="申请人" :prop="'affiliate.applicant.' + index + '.applicant.name'" :rules="[
{
required: true,
message: '申请人名称不能为空',
trigger: 'blur',
},
]">
<el-input v-model="item.applicant.name" placeholder="请输入申请人姓名" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.applicant.organizeFlag == 0">
<el-form-item label="是否为操作人" :prop="'affiliate.applicant.' + index + '.applicant.operatorFlag'"
:rules="[
{
required: true,
message: '请选择是否为操作人',
trigger: 'blur',
},
]">
<el-select v-model="item.applicant.operatorFlag" placeholder="请选择" auto-complete="off"
style="width: 100%;">
<el-option v-for="item in roleTypeList" :key="item.id" :label="item.value" :value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.applicant.organizeFlag == 1">
<el-form-item label-width="140px" label="统一社会信用代码"
:prop="'affiliate.applicant.' + index + '.applicant.code'" :rules="[
{
required: true,
message: '统一社会信用代码不能为空',
trigger: 'blur',
},
]">
<el-input v-model="item.applicant.code" placeholder="请输入统一社会信用代码" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :prop="'affiliate.applicant.' + index + '.applicant.nationality'" label="国籍" :rules="[
{
required: true,
message: '国籍不能为空',
trigger: 'blur',
},
]">
<el-select v-model="item.applicant.nationality" placeholder="请选择国籍" auto-complete="off"
style="width: 100%;">
<el-option v-for="item in nationalityList" :key="item.id" :label="item.value" :value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.applicant.organizeFlag == 0">
<el-form-item :prop="'affiliate.applicant.' + index + '.applicant.idType'" label="证件类型" :rules="[
{
required: true,
message: '证件类型不能为空',
trigger: 'blur',
},
]">
<el-select v-model="item.applicant.idType" placeholder="证件类型" auto-complete="off"
style="width: 100%;">
<el-option v-for="item in idTypeList" :key="Number(item.dictValue)" :label="item.dictLabel"
:value="Number(item.dictValue)">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.applicant.organizeFlag == 0">
<el-form-item label="证件号码" :prop="'affiliate.applicant.' + index + '.applicant.idCard'" :rules="[
{
required: true,
message: '证件号码不能为空',
trigger: 'blur',
},
]">
<el-input v-model="item.applicant.idCard" placeholder="请输入申请人的证件号码" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.applicant.organizeFlag == 0">
<el-form-item label-width="140px" label="出生年月:"
:prop="'affiliate.applicant.' + index + '.applicant.birth'">
<el-date-picker disabled v-model="item.applicant.birth" type="date" placeholder="申请人出生年月日">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.applicant.organizeFlag == 0">
<el-form-item label="性别:" :prop="'affiliate.applicant.' + index + '.applicant.sex'" :rules="[
{
required: true,
message: '请选择性别',
},
]">
<el-radio-group v-model="item.applicant.sex" disabled>
<el-radio :label="'0'">男</el-radio>
<el-radio :label="'1'">女</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.applicant.organizeFlag == 0">
<el-form-item label="邮箱" :prop="'affiliate.applicant.' + index + '.applicant.email'" :rules="[
{
required: true,
message: '申请人邮箱不能为空',
trigger: 'blur',
},
{
pattern:
/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/,
message: '请输入正确的邮箱地址',
trigger: 'blur',
},
]">
<el-input v-model="item.applicant.email" placeholder="请输入申请人邮箱" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.applicant.organizeFlag == 0">
<el-form-item label="申请人电话" :prop="'affiliate.applicant.' + index + '.applicant.phone'" :rules="detailsAwardNum.affiliate.nationality == 0 ? [
{
required: true,
message: '申请人联系电话不能为空',
trigger: 'blur',
},
{
pattern: /^[1][3,4,5,6,7,8,9][0-9]{9}$/,
message: '请输入正确的手机号码',
trigger: 'blur',
},
] : []">
<el-input v-model="item.applicant.phone" placeholder="请输入申请人联系电话" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.applicant.organizeFlag == 1">
<el-form-item label="法定代表人" :prop="'affiliate.applicant.' + index + '.applicant.compLegalPerson'"
:rules="[
{
required: true,
message: '法定代表人不能为空',
trigger: 'blur',
},
]">
<el-input v-model="item.applicant.compLegalPerson" placeholder="请输入法定代表人" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="申请人住所" :prop="'affiliate.applicant.' + index + '.applicant.home'" :rules="[
{
required: true,
message: '申请人住所不能为空',
trigger: 'blur',
},
]">
<el-input v-model="item.applicant.home" placeholder="请输入申请人住所" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="申请人联系地址" :prop="'affiliate.applicant.' + index + '.applicant.address'" :rules="[
{
required: true,
message: '申请人联系地址不能为空',
trigger: 'blur',
},
]">
<el-input v-model="item.applicant.address" placeholder="请输入申请人联系地址" />
</el-form-item>
</el-col>
<el-col :span="24">
<div style="display: inline-flex">
<div class="infoIcon"></div>
<div class="caseInfo">申请人代理人</div>
</div>
<el-divider></el-divider>
</el-col>
<el-col :span="12" v-if="item.applicant.organizeFlag == 1">
<el-form-item label="联系电话" :prop="'affiliate.applicant.' + index + '.applicantAgent.phone'" :rules="[
{
required: true,
message: '代理人联系电话不能为空',
trigger: 'blur',
},
{
pattern: /^[1][3,4,5,6,7,8,9][0-9]{9}$/,
message: '请输入正确的手机号码',
trigger: 'blur',
},
]">
<el-input v-model="item.applicantAgent.phone" placeholder="请输入代理人联系电话" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.applicant.organizeFlag == 0">
<el-form-item label="联系电话" :prop="'affiliate.applicant.' + index + '.applicantAgent.phone'">
<el-input v-model="item.applicantAgent.phone" placeholder="请输入代理人联系电话" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.applicant.organizeFlag == 1">
<el-form-item label="姓名" :prop="'affiliate.applicant.' + index + '.applicantAgent.name'" :rules="[
{
required: true,
message: '代理人姓名不能为空',
trigger: 'blur',
},
]">
<el-input v-model="item.applicantAgent.name" placeholder="请输入代理人姓名" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.applicant.organizeFlag == 0">
<el-form-item label="姓名" :prop="'affiliate.applicant.' + index + '.applicantAgent.name'">
<el-input v-model="item.applicantAgent.name" placeholder="请输入代理人姓名" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.applicant.organizeFlag == 0">
<el-form-item label="是否为操作人" :prop="'affiliate.applicant.' + index + '.applicant.operatorFlag'">
<el-select v-model="item.applicantAgent.operatorFlag" placeholder="请选择" auto-complete="off"
style="width: 100%;">
<el-option v-for="item in roleTypeList" :key="item.id" :label="item.value" :value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.applicant.organizeFlag == 1">
<el-form-item label="邮箱" :prop="'affiliate.applicant.' + index + '.applicantAgent.email'" :rules="[
{
required: true,
message: '代理人邮箱不能为空',
trigger: 'blur',
},
{
pattern:
/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/,
message: '请输入正确的邮箱地址',
trigger: 'blur',
},
]">
<el-input v-model="item.applicantAgent.email" placeholder="请输入代理人邮箱" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.applicant.organizeFlag == 0">
<el-form-item label="邮箱" :prop="'affiliate.applicant.' + index + '.applicantAgent.email'" :rules="[
{
pattern:
/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/,
message: '请输入正确的邮箱地址',
trigger: 'blur',
},
]">
<el-input v-model="item.applicantAgent.email" placeholder="请输入代理人邮箱" />
</el-form-item>
</el-col>
</div>
<div class="res" v-for="(item, index) in detailsAwardNum.affiliate.res" :key="index">
<el-col :span="24">
<div style="display: inline-flex">
<div class="infoIcon"></div>
<div class="caseInfo" style="margin-right: 40px;">被申请人</div>
</div>
<el-divider></el-divider>
</el-col>
<el-col :span="24">
<el-form-item label="选择机构或自然人">
<el-radio-group v-model="item.res.organizeFlag">
<el-radio :label="0">自然人</el-radio>
<el-radio :label="1">机构</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.res.organizeFlag == 0">
<el-form-item label="被申请人" :prop="'affiliate.res.' + index + '.res.name'" :rules="[
{
required: true,
message: '被申请人姓名不能为空',
trigger: 'blur',
},
]">
<el-input v-model="item.res.name" placeholder="请输入被申请人姓名" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.res.organizeFlag == 1">
<el-form-item label="机构名称" :prop="'affiliate.res.' + index + '.res.name'" :rules="[
{
required: true,
message: '机构名称不能为空',
trigger: 'blur',
},
]">
<el-input v-model="item.res.name" placeholder="请输入机构名称" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.res.organizeFlag == 0">
<el-form-item label="是否为操作人" :prop="'affiliate.res.' + index + '.res.operatorFlag'">
<el-select v-model="item.res.operatorFlag" placeholder="请选择" auto-complete="off"
style="width: 100%;">
<el-option v-for="item in roleTypeList" :key="item.id" :label="item.value" :value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :prop="'affiliate.res.' + index + '.res.nationality'" label="国籍" :rules="[
{
required: true,
message: '国籍不能为空',
trigger: 'blur',
},
]">
<el-select v-model="item.res.nationality" placeholder="请选择国籍" auto-complete="off"
style="width: 100%;">
<el-option v-for="item in nationalityList" :key="item.id" :label="item.value" :value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.res.organizeFlag == 0">
<el-form-item :prop="'affiliate.res.' + index + '.res.idType'" label="证件类型" :rules="[
{
required: true,
message: '证件类型不能为空',
trigger: 'blur',
},
]">
<el-select v-model="item.res.idType" placeholder="证件类型" auto-complete="off" style="width: 100%;">
<el-option v-for="item in idTypeList" :key="Number(item.dictValue)" :label="item.dictLabel"
:value="Number(item.dictValue)">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label-width="140px" label="联系电话" :prop="'affiliate.res.' + index + '.res.phone'" :rules="[
{
required: true,
message: '被申请人联系电话不能为空',
trigger: 'blur',
},
{
pattern: /^[1][3,4,5,6,7,8,9][0-9]{9}$/,
message: '请输入正确的手机号码',
trigger: 'blur',
},
]">
<el-input v-model="item.res.phone" placeholder="请输入被申请人联系电话" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label-width="150px" label="住所" :prop="'affiliate.res.' + index + '.res.home'" :rules="[
{
required: true,
message: '被申请人申请人住所不能为空',
trigger: 'blur',
},
]">
<el-input v-model="item.res.home" placeholder="请输入被申请人申请人住所" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系地址" :prop="'affiliate.res.' + index + '.res.address'" :rules="[
{
required: true,
message: '联系地址不能为空',
trigger: 'blur',
},
]">
<el-input v-model="item.res.address" placeholder="请输入联系地址" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="邮箱" :prop="'affiliate.res.' + index + '.res.email'" :rules="[
{
required: true,
message: '被申请人邮箱不能为空',
trigger: 'blur',
},
{
pattern:
/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/,
message: '请输入正确的邮箱地址',
trigger: 'blur',
},
]">
<el-input v-model="item.res.email" placeholder="请输入被申请人邮箱" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label-width="140px" label="身份证号" :prop="'affiliate.res.' + index + '.res.idCard'"
:rules="[
{
required: true,
message: '被申请人身份证号不能为空',
trigger: 'blur',
},
{
pattern:
/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
message: '请输入正确的身份证号码',
trigger: 'blur',
},
]">
<el-input v-model="item.res.idCard" @blur="handleBlur(index)" placeholder="请输入被申请人身份证号" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.res.organizeFlag == 1">
<el-form-item label-width="140px" label="统一社会信用代码" :prop="'affiliate.res.' + index + '.res.code'"
:rules="[
{
required: true,
message: '统一社会信用代码不能为空',
trigger: 'blur',
},
]">
<el-input v-model="item.res.code" placeholder="请输入统一社会信用代码" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.res.organizeFlag == 1">
<el-form-item label="法定代表人" :prop="'affiliate.res.' + index + '.res.compLegalPerson'" :rules="[
{
required: true,
message: '法定代表人不能为空',
trigger: 'blur',
},
]">
<el-input v-model="item.res.compLegalPerson" placeholder="请输入法定代表人" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label-width="140px" label="出生年月:" :prop="'affiliate.res.' + index + '.res.birth'">
<el-date-picker disabled v-model="item.res.birth" type="date" placeholder="被申请人出生年月日">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="被申请人性别:" :prop="'affiliate.res.' + index + '.res.sex'" :rules="[
{
required: true,
message: '请选择性别',
},
]">
<el-radio-group v-model="item.res.sex" disabled>
<el-radio :label="'0'">男</el-radio>
<el-radio :label="'1'">女</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="24">
<div style="display: inline-flex">
<div class="infoIcon"></div>
<div class="caseInfo">被申请人代理人</div>
</div>
<el-divider></el-divider>
</el-col>
<el-col :span="12" v-if="item.res.organizeFlag == 1">
<el-form-item label="联系电话" :prop="'affiliate.res.' + index + '.resAgent.phone'" :rules="[
{
required: true,
message: '代理人联系电话不能为空',
trigger: 'blur',
},
{
pattern: /^[1][3,4,5,6,7,8,9][0-9]{9}$/,
message: '请输入正确的手机号码',
trigger: 'blur',
},
]">
<el-input v-model="item.resAgent.phone" placeholder="请输入代理人联系电话" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.res.organizeFlag == 0">
<el-form-item label="联系电话" :prop="'affiliate.res.' + index + '.resAgent.phone'">
<el-input v-model="item.resAgent.phone" placeholder="请输入代理人联系电话" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.res.organizeFlag == 1">
<el-form-item label="姓名" :prop="'affiliate.res.' + index + '.resAgent.name'" :rules="[
{
required: true,
message: '代理人姓名不能为空',
trigger: 'blur',
},
]">
<el-input v-model="item.resAgent.name" placeholder="请输入代理人姓名" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.res.organizeFlag == 0">
<el-form-item label="是否为操作人" :prop="'affiliate.res.' + index + '.resAgent.operatorFlag'">
<el-select v-model="item.resAgent.operatorFlag" placeholder="请选择" auto-complete="off"
style="width: 100%;">
<el-option v-for="item in roleTypeList" :key="item.id" :label="item.value" :value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.res.organizeFlag == 0">
<el-form-item label="姓名" :prop="'affiliate.res.' + index + '.resAgent.name'">
<el-input v-model="item.resAgent.name" placeholder="请输入代理人姓名" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.res.organizeFlag == 1">
<el-form-item label="邮箱" :prop="'affiliate.res.' + index + '.resAgent.email'" :rules="[
{
required: true,
message: '代理人邮箱不能为空',
trigger: 'blur',
},
{
pattern:
/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/,
message: '请输入正确的邮箱地址',
trigger: 'blur',
},
]">
<el-input v-model="item.resAgent.email" placeholder="请输入代理人邮箱" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="item.res.organizeFlag == 0">
<el-form-item label="邮箱" :prop="'affiliate.res.' + index + '.resAgent.email'" :rules="[
{
pattern:
/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/,
message: '请输入正确的邮箱地址',
trigger: 'blur',
},
]">
<el-input v-model="item.resAgent.email" placeholder="请输入代理人邮箱" />
</el-form-item>
</el-col>
</div>
</el-row>
</el-form>
</div>
</div> </div>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="cancel">取 消</el-button> <el-button @click="cancel">取 消</el-button>
@@ -51,6 +704,11 @@
</div> </div>
</template> </template>
<script> <script>
import { getToken } from "@/utils/auth";
import {
caseApplicationSelectById,
getIdType
} from "@/api/caseManagement/caseManagement.js";
export default { export default {
props: ["showarchiveDetails", "detailsAwardNum", "videoList", "flagLoadingS", "trialTranscripts", "caseFilingData"], props: ["showarchiveDetails", "detailsAwardNum", "videoList", "flagLoadingS", "trialTranscripts", "caseFilingData"],
components: { components: {
@@ -58,23 +716,62 @@ export default {
}, },
data() { data() {
return { return {
activeName: 'first', activeName: 'five',
fileURL: window.location.origin + "/API", fileURL: window.location.origin + "/API",
noData: false, noData: false,
filedata: {
annexType: 2,
},
fileList: [],
headers: {
Authorization: "Bearer " + getToken(),
},
showEvidence: false,
showmediate: false,
showConciliation: false,
roleTypeList: [
{
value: '否',
id: 0
},
{
value: '是',
id: 1
}
],
nationalityList: [
{
value: '境内',
id: 0
},
{
value: '境外',
id: 1
}
],
idTypeList: [
]
}; };
}, },
watch: { watch: {
showarchiveDetails: { showarchiveDetails: {
handler(val) { handler(val) {
if (val) { if (val) {
this.activeName = 'first' this.getIdTypeFn();
this.activeName = 'five'
this.caseApplicationSelectByIdFn(this.caseFilingData.id)
this.showEvidence = false,
this.showmediate = false,
this.showConciliation = false
// this.detailsAwardNum.affiliate.respondentSex = Number(this.detailsAwardNum.affiliate.respondentSex)
} }
}, },
}, },
}, },
created() { created() {
}, },
methods: { methods: {
isNoData(data, type) { isNoData(data, type) {
@@ -87,6 +784,67 @@ watch: {
} }
return resNumber return resNumber
}, },
/** 获取证件类型 */
getIdTypeFn() {
getIdType().then(res => {
this.idTypeList = res.data;
})
},
/** 根据案件id获取对应信息 */
caseApplicationSelectByIdFn(data) {
caseApplicationSelectById({ id: data }).then((res) => {
res.data.caseAttachList.forEach(item => {
if (item.annexType == 2) {
this.showmediate = true
} else if (item.annexType == 3) {
this.showEvidence = true
} else if (item.annexType == 7) {
this.showConciliation = true
}
});
});
},
/** 查看证据 */
fileDetil(val, flag) {
if (flag == 1) {
window.open(this.fileURL + val);
} else if (flag == 2) {
this.$router.push({ path: '/onlyoffice', query: { id: val, flag: 0 } })
}
},
/** 文件上传地址 */
UploadUrl() {
return window.location.origin + "/API/common/upload";
},
/**文件上传成功*/
handlSuccess(res, file) {
this.detailsAwardNum.caseAttachList.push({
annexId: res.annexId,
});
},
/**文件超出个数限制时的钩子*/
handleExceed(files, fileList) {
this.$message.warning(
`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length
} 个文件`
);
},
// 删除文件之前的钩子,参数为上传的文件和文件列表,若返回 false 或者返回 Promise 且被 reject,则停止删除。
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.name}?`);
},
handleRemove(file, fileList) {
this.caseAttachListArr = this.caseAttachListArr.filter(
(item) => item.annexId != file.annexId
);
},
handlePreview(file) {
window.open(
window.location.origin + "/API" + file.certificatePath,
"_blank"
);
},
handleClick(tab, event) { handleClick(tab, event) {
}, },
@@ -102,11 +860,13 @@ watch: {
height: 500px !important; height: 500px !important;
overflow: auto !important; overflow: auto !important;
} }
::v-deep .el-dialog { ::v-deep .el-dialog {
width: 850px; width: 925px;
background: #ffffff; background: #ffffff;
border-radius: 20px; border-radius: 20px;
} }
.loading { .loading {
width: 100%; width: 100%;
height: 100%; height: 100%;
@@ -92,7 +92,7 @@ export default {
if (val) { if (val) {
this.mediatorArr = []; this.mediatorArr = [];
this.selectReservationFn({ id: this.confirmData.id }) this.selectReservationFn({ id: this.confirmData.id })
listMediator().then(res => { listMediator({caseAppliId:this.confirmData.id}).then(res => {
this.tableData = res.data; this.tableData = res.data;
}) })
} }
@@ -3,10 +3,12 @@
<el-dialog title="部门长确认调解员" :visible="departmentVisable" v-if="departmentVisable" @close="cancel" center <el-dialog title="部门长确认调解员" :visible="departmentVisable" v-if="departmentVisable" @close="cancel" center
:distroy-on-close="true"> :distroy-on-close="true">
<div> <div>
<div v-if="tableDataFlag"> <!-- v-if="tableDataFlag" -->
<div>
<div style="margin-bottom: 20px;">选择调解员</div> <div style="margin-bottom: 20px;">选择调解员</div>
</div> </div>
<el-table v-if="tableDataFlag" ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%" <!-- v-if="tableDataFlag" -->
<el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%"
@selection-change="handleSelectionChange"> @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55"> <el-table-column type="selection" width="55">
</el-table-column> </el-table-column>
@@ -92,7 +94,7 @@ export default {
if (val) { if (val) {
this.mediatorArr = []; this.mediatorArr = [];
this.selectReservationFn({ id: this.departmentData.id }) this.selectReservationFn({ id: this.departmentData.id })
listMediator().then(res => { listMediator({caseAppliId:this.departmentData.id}).then(res => {
this.tableData = res.data; this.tableData = res.data;
}) })
} }
@@ -124,6 +126,7 @@ export default {
}, },
/**提交选择结果*/ /**提交选择结果*/
async submitMediator() { async submitMediator() {
console.log(this.multipleSelection,this.tableDataNow)
if (this.multipleSelection.length == 0 && this.tableDataNow.length > 0) { if (this.multipleSelection.length == 0 && this.tableDataNow.length > 0) {
this.verifyMediatorFn({ this.verifyMediatorFn({
id: this.departmentData.id, id: this.departmentData.id,
@@ -138,7 +141,15 @@ export default {
mediatorId: this.multipleSelection[0].mediatorId, mediatorId: this.multipleSelection[0].mediatorId,
mediatorName: this.multipleSelection[0].mediatorName, mediatorName: this.multipleSelection[0].mediatorName,
}) })
} else if (this.multipleSelection.length > 1 && this.tableDataNow.length == 0) { }else if(this.multipleSelection.length == 1){
this.verifyMediatorFn({
id: this.departmentData.id,
caseFlowId: this.departmentData.caseFlowId,
mediatorId: this.multipleSelection[0].mediatorId,
mediatorName: this.multipleSelection[0].mediatorName,
})
// && this.tableDataNow.length == 0
}else if (this.multipleSelection.length > 1) {
Message.error('最多选择一名调解员'); Message.error('最多选择一名调解员');
return return
} }
@@ -1,6 +1,7 @@
<template> <template>
<div> <div>
<el-dialog :title="title" :visible="mediationVisable" @close="cancel" center :distroy-on-close="true" width="1000px"> <el-dialog :title="title" :visible="mediationVisable" @close="cancel" center :distroy-on-close="true"
width="1000px">
<el-form ref="form" :model="formData" label-width="180px"> <el-form ref="form" :model="formData" label-width="180px">
<div class="caseInfo">案件信息:</div> <div class="caseInfo">案件信息:</div>
<el-divider></el-divider> <el-divider></el-divider>
@@ -11,8 +12,8 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="申请人:" prop="affiliate.applicationName"> <el-form-item label="申请人:">
<el-input v-model="formData.affiliate.applicationName" :disabled="true" /> <el-input v-model="applicant" :disabled="true" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@@ -21,15 +22,15 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="案件标的:" prop="caseSubjectAmount"> <!-- <el-form-item label="案件标的:" prop="caseSubjectAmount">
<el-input v-model="formData.caseSubjectAmount" placeholder="请输入案件标的" :disabled="true" /> <el-input v-model="formData.caseSubjectAmount" placeholder="请输入案件标的" :disabled="true" />
</el-form-item> </el-form-item> -->
</el-col> </el-col>
<el-col :span="12"> <!-- <el-col :span="12">
<el-form-item label="调解费用:" prop="feePayable"> <el-form-item label="调解费用:" prop="feePayable">
<el-input v-model="formData.feePayable" placeholder="请输入仲裁费用" :disabled="true" /> <el-input v-model="formData.feePayable" placeholder="请输入仲裁费用" :disabled="true" />
</el-form-item> </el-form-item>
</el-col> </el-col> -->
<el-col :span="12"> <el-col :span="12">
<el-form-item label="调解员:" prop="mediatorName"> <el-form-item label="调解员:" prop="mediatorName">
<el-input v-model="formData.mediatorName" placeholder="请输入" :disabled="true" /> <el-input v-model="formData.mediatorName" placeholder="请输入" :disabled="true" />
@@ -40,13 +41,13 @@
<el-form-item label="申请人案件证据:"> <el-form-item label="申请人案件证据:">
<div v-if="applicateArr.length == 0">申请人暂未提供证据!</div> <div v-if="applicateArr.length == 0">申请人暂未提供证据!</div>
<div v-for="(item, index) in applicateArr" :key="index" v-if="item.annexType == 2"> <div v-for="(item, index) in applicateArr" :key="index" v-if="item.annexType == 2">
<a href="#" @click="toFile(item, index)" style="color: blue">{{ item.annexName }}</a> <a href="#" @click="toFile2(item.annexPath)" style="color: blue">{{ item.annexName }}</a>
</div> </div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24" v-if="mediationType"> <el-col :span="24">
<el-form-item label="调解结果:"> <el-form-item label="调解结果:">
<el-radio-group v-model="mediaResult" :disabled="!isSecretaryRole" @change="resultsMediation"> <el-radio-group v-model="formData.mediaResult" :disabled="!selectRoido" @change="resultsMediation">
<el-radio :label="1">达成调解</el-radio> <el-radio :label="1">达成调解</el-radio>
<el-radio :label="2">未达成调解</el-radio> <el-radio :label="2">未达成调解</el-radio>
<el-radio :label="3">未达成调解但不在争议</el-radio> <el-radio :label="3">未达成调解但不在争议</el-radio>
@@ -55,14 +56,14 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- <el-col :span="24"> <el-col :span="24">
<el-form-item label="是否和解" v-if="mediaResult==1"> <el-form-item label="是否用印申请" v-if="formData.mediaResult == 1 && mediationData.mediationMethod == '1'">
<el-radio-group v-model="isReconci"> <el-radio-group v-model="formData.sealFlag" :disabled="!selectRoido">
<el-radio :label="1">是</el-radio> <el-radio :label="1">是</el-radio>
<el-radio :label="0">否</el-radio> <el-radio :label="0">否</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> --> </el-col>
<!-- <el-col :span="24"> <!-- <el-col :span="24">
<el-form-item label="被申请人案件证据:"> <el-form-item label="被申请人案件证据:">
<div v-if="quiltArr.length == 0">被申请人暂未提供证据!</div> <div v-if="quiltArr.length == 0">被申请人暂未提供证据!</div>
@@ -81,7 +82,7 @@
<el-col :span="24"> <el-col :span="24">
<el-form-item label="调解书:" v-if="recordArrMediate.length > 0"> <el-form-item label="调解书:" v-if="recordArrMediate.length > 0">
<div v-for="(item, index) in recordArrMediate" :key="index" style="color: blue"> <div v-for="(item, index) in recordArrMediate" :key="index" style="color: blue">
<a href="#" @click="toFileMediate(item.annexPath)">{{ item.annexName }}</a> <a href="#" @click="toFileMediate(item.onlyOfficeFileId)">{{ item.annexName }}</a>
</div> </div>
</el-form-item> </el-form-item>
</el-col> </el-col>
@@ -98,12 +99,12 @@
<!-- v-if="!mediationType" --> <!-- v-if="!mediationType" -->
<el-col :span="24"> <el-col :span="24">
<el-form-item label="上传调解书"> <el-form-item label="上传调解书">
<el-upload class="upload-demo" accept=".png,.jpg,.doc,.docx,.txt,.pdf" ref="upload" :action="UploadUrl()" <el-upload class="upload-demo" accept=".doc,.docx,.pdf" ref="upload" :action="UploadUrl()"
:headers="headers" :data="filedata" :on-preview="handlePreview" :on-remove="handleRemove" :limit="1" :headers="headers" :data="filedata" :on-preview="handlePreview" :on-remove="handleRemove" :limit="2"
:on-change="beforeUpload" :on-success="handlSuccess" :file-list="fileList"> :on-change="beforeUpload" :on-success="handlSuccess" :file-list="fileList">
<el-button slot="trigger" size="small" :disabled="!isSecretaryRole" type="primary">选取文件</el-button> <el-button slot="trigger" size="small" :disabled="!isSecretaryRole" type="primary">选取文件</el-button>
<!-- <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button> --> <!-- <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button> -->
<div slot="tip" class="el-upload__tip">只能上传.jpg,png,.doc,docx,.txt,.pdf文件</div> <div slot="tip" class="el-upload__tip">只能上传.doc,docx,pdf文件</div>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
</el-col> </el-col>
@@ -111,16 +112,16 @@
</el-form> </el-form>
<el-button @click="openmeeting" type="primary" v-if="mediationType">{{ isSecretaryRole ? '发起会议' : <el-button @click="openmeeting" type="primary" v-if="mediationType">{{ isSecretaryRole ? '发起会议' :
'进入会议' }}</el-button> '进入会议' }}</el-button>
<!-- v-if="this.recordArr.length <= 0 && mediationData.mediationMethod == '1'" -->
<el-button @click="openArbitrationresults" type="primary" <el-button @click="openArbitrationresults" type="primary"
v-if="this.recordArrMediate.length <= 0 && mediationData.mediationMethod == '1' && isSecretaryRole">确认会议结果</el-button> v-if="this.recordArrMediate.length <= 0 && mediationData.mediationMethod == '1' && isSecretaryRole">确认会议结果</el-button>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="cancel" class="endbutton1" round> <el-button @click="cancel" class="endbutton1" round>
<span>取 消</span> <span>取 消</span>
</el-button> </el-button>
<el-button v-if="isSecretaryRole" @click="submitMediation" :disabled="this.recordArrMediate.length <= 0 && mediationData.mediationMethod == '1'" <el-button v-if="isSecretaryRole" :loading="loadingSubmit" @click="submitMediation"
:disabled="this.recordArrMediate.length <= 0 && mediationData.mediationMethod == '1' && isSecretaryRole"
class="endbutton1" type="primary" round> class="endbutton1" type="primary" round>
<span>提 交</span> 提 交
</el-button> </el-button>
</div> </div>
</el-dialog> </el-dialog>
@@ -139,9 +140,10 @@ import { getUserProfile } from "@/api/system/user";
import { reserveConferenceList } from "@/api/metting/metting.js"; import { reserveConferenceList } from "@/api/metting/metting.js";
import { getToken } from "@/utils/auth"; import { getToken } from "@/utils/auth";
export default { export default {
props: ["mediationVisable", "mediationData", "queryParams"], props: ["mediationVisable", "mediationData", "queryParams", "applicant"],
data() { data() {
return { return {
sealFlag: 1,
loanStartDate: "", loanStartDate: "",
codes: null, codes: null,
title: "线上调解", title: "线上调解",
@@ -154,7 +156,9 @@ export default {
mediaResult: 1, mediaResult: 1,
// isReconci:0, // isReconci:0,
formData: { formData: {
affiliate: {} affiliate: {},
mediaResult: 1,
sealFlag: 1,
}, },
user: "", user: "",
userId: null, userId: null,
@@ -165,14 +169,21 @@ export default {
}, },
filedata: { filedata: {
annexType: 7, annexType: 7,
isMediaBook: 1,
caseId:null
}, },
fileList: [], fileList: [],
attachList: [], attachList: [],
isSecretaryRole: true, isSecretaryRole: true,
loadingSubmit: false,
selectRoido: true
}; };
}, },
watch: { watch: {
mediationVisable(val) { mediationVisable(val) {
this.attachList = [];
this.formData.mediaResult = 1;
this.formData.sealFlag = 1;
this.recordArr = []; this.recordArr = [];
this.recordArrMediate = []; this.recordArrMediate = [];
if (this.mediationData.mediationMethod == "1") { if (this.mediationData.mediationMethod == "1") {
@@ -181,6 +192,7 @@ export default {
} else if (this.mediationData.mediationMethod == "2") { } else if (this.mediationData.mediationMethod == "2") {
this.title = "线下调解"; this.title = "线下调解";
this.mediationType = false; this.mediationType = false;
this.selectRoido = true
} }
if (val) { if (val) {
this.caseApplicationSelectByIdFn({ this.caseApplicationSelectByIdFn({
@@ -188,6 +200,11 @@ export default {
}); });
this.getUser(); this.getUser();
} }
},
recordArrMediate(val) {
if (val.length >= 1) {
this.selectRoido = false;
}
} }
}, },
created() { }, created() { },
@@ -195,32 +212,49 @@ export default {
// 根据用户id查询是否为调解员 // 根据用户id查询是否为调解员
secretaryRoleByUserIdFn() { secretaryRoleByUserIdFn() {
secretaryRoleByUserId({ secretaryRoleByUserId({
userId: this.userId userId: this.userId,
caseId: this.mediationData.id
}).then(res => { }).then(res => {
this.isSecretaryRole = res.data.isSecretaryRole; this.isSecretaryRole = res.data.isSecretaryRole;
}) })
}, },
/**上传地址*/ /**上传地址*/
UploadUrl() { UploadUrl() {
return window.location.origin + "/API/common/upload"; return window.location.origin + "/API/video/upload";
}, },
handlePreview(file) { handlePreview(file) {
}, },
handleRemove(file, fileList) { handleRemove(file, fileList) {
let updatedArray = this.attachList.filter(item => item.annexId != file.response.annexId);
this.attachList = updatedArray;
}, },
beforeUpload(flie, fileList) { beforeUpload(flie, fileList) {
this.filedata.caseId = this.mediationData.id
this.fileList = fileList; this.fileList = fileList;
}, },
handlSuccess(res, file) { handlSuccess(res, file) {
const fileSuccess = [{ annexId: res.annexId, annexType: res.annexType,annexName:res.newFileName,annexPath:res.fileName,onlyOfficeFileId:res.onlyOfficeFileId}]
this.codes = res.code this.codes = res.code
this.attachList = [{ annexId: res.annexId }]; this.attachList.push({ annexId: res.annexId, annexType: res.annexType });
this.recordArrMediate = fileSuccess;
// this.$set(this.mediationData, "attachList", {annexId:res.annexId}); // this.$set(this.mediationData, "attachList", {annexId:res.annexId});
}, },
/** 获取案件详情信息 */ /** 获取案件详情信息 */
caseApplicationSelectByIdFn(data) { caseApplicationSelectByIdFn(data) {
caseApplicationSelectById(data).then(res => { caseApplicationSelectById(data).then(res => {
if (res.data.mediaResult) {
this.formData = res.data; this.formData = res.data;
} else {
this.formData = res.data;
this.formData.mediaResult = 1;
}
if (res.data.sealFlag == 1 || res.data.sealFlag == 0) {
this.formData = res.data;
} else {
this.formData = res.data;
this.formData.sealFlag = 1;
}
this.applicateArr = res.data.caseAttachList; this.applicateArr = res.data.caseAttachList;
res.data.caseAttachList.forEach(item => { res.data.caseAttachList.forEach(item => {
if (item.annexType == 6) { if (item.annexType == 6) {
@@ -229,6 +263,7 @@ export default {
this.recordArrMediate.push(item); this.recordArrMediate.push(item);
} }
}); });
}); });
}, },
/** 获取用户信息 */ /** 获取用户信息 */
@@ -241,9 +276,10 @@ export default {
}, },
/** 发起会议 */ /** 发起会议 */
openmeeting() { openmeeting() {
this.mediationVisable = false
window.open( window.open(
// `http://localhost:8080/#/home?name=${this.user}&id=${this.formData.id}&userId=${this.userId}&roomId=${this.formData.roomId}&type=tiaojie` // `http://localhost:8080/#/home?name=${this.user}&id=${this.formData.id}&userId=${this.userId}&roomId=${this.formData.roomId}&type=tiaojie&token=${getToken()}`
`https://txroom.xayunmei.com/#/home?name=${this.user}&id=${this.formData.id}&userId=${this.userId}&roomId=${this.formData.roomId}&type=tiaojie` `https://txroom.xayunmei.com/#/home?name=${this.user}&id=${this.formData.id}&userId=${this.userId}&roomId=${this.formData.roomId}&type=tiaojie&token=${getToken()}`
); );
}, },
/**提交仲裁结果 */ /**提交仲裁结果 */
@@ -252,7 +288,6 @@ export default {
caseApplicationSelectById({ caseApplicationSelectById({
id: this.mediationData.id id: this.mediationData.id
}).then(res => { }).then(res => {
console.log(res)
res.data.caseAttachList.forEach(item => { res.data.caseAttachList.forEach(item => {
if (item.annexType == 6) { if (item.annexType == 6) {
this.recordArr.push(item); this.recordArr.push(item);
@@ -263,7 +298,8 @@ export default {
id: this.mediationData.id, id: this.mediationData.id,
caseFlowId: this.mediationData.caseFlowId, caseFlowId: this.mediationData.caseFlowId,
batchNumber: "", batchNumber: "",
mediaResult: this.mediaResult, mediaResult: this.formData.mediaResult,
sealFlag: this.formData.sealFlag
}).then(res => { }).then(res => {
caseApplicationSelectById({ caseApplicationSelectById({
id: this.mediationData.id id: this.mediationData.id
@@ -275,14 +311,19 @@ export default {
}); });
}); });
}) })
this.isSecretaryRole = false // this.selectRoido = true;
}, },
/** 庭审笔录附件 */ /** 庭审笔录附件 */
toFile2(annexPath) { toFile2(annexPath) {
window.open(window.location.origin + "/API" + annexPath, "_black"); window.open(window.location.origin + "/API" + annexPath, "_black");
}, },
toFileMediate(annexPath) { toFileMediate(val) {
window.open(window.location.origin + "/API" + annexPath, "_black"); if (this.checkPermi(['caseManagement:list:editOffice'])) {
this.$router.push({ path: '/onlyoffice', query: { id: val, flag: 1 } })
} else {
this.$router.push({ path: '/onlyoffice', query: { id: val, flag: 0 } })
}
// window.open(window.location.origin + "/API" + annexPath, "_black");
}, },
/** 生成调解书 */ /** 生成调解书 */
mediationFn(data) { mediationFn(data) {
@@ -290,35 +331,49 @@ export default {
this.$modal.msgSuccess("成功"); this.$modal.msgSuccess("成功");
this.$emit("cancelMediation"); this.$emit("cancelMediation");
this.$emit("getList", this.queryParams); this.$emit("getList", this.queryParams);
this.loadingSubmit = false;
}).catch(err => {
this.loadingSubmit = false;
}); });
}, },
cancel() { cancel() {
this.$emit("cancelMediation"); this.$emit("cancelMediation");
}, },
submitMediation: _.debounce(function() { submitMediation() {
if (this.fileList.length < 1 && !this.mediationType && this.mediationData.mediationMethod == "2") { if (this.fileList.length < 1 && !this.mediationType && this.mediationData.mediationMethod == "2") {
this.$modal.msgError("请上传调解书"); this.$modal.msgError("请上传调解书");
return return
} else {
this.loadingSubmit = true;
} }
let mediationVal = {} let mediationVal = {}
if (this.codes == 200) { if (this.codes == 200) {
if (this.formData.mediaResult != 1) {
this.sealFlag = 0
}
mediationVal = { mediationVal = {
id: this.mediationData.id, id: this.mediationData.id,
caseFlowId: this.mediationData.caseFlowId, caseFlowId: this.mediationData.caseFlowId,
attachList: this.attachList, attachList: this.attachList,
// isReconci:this.isReconci, mediaResult: this.formData.mediaResult,
mediaResult: this.mediaResult,
} }
} else { } else {
if (this.formData.mediaResult != 1) {
this.sealFlag = 0
}
mediationVal = { mediationVal = {
id: this.mediationData.id, id: this.mediationData.id,
caseFlowId: this.mediationData.caseFlowId, caseFlowId: this.mediationData.caseFlowId,
mediaResult: this.mediaResult, sealFlag: this.sealFlag,
attachList: this.attachList,
mediaResult: this.formData.mediaResult,
} }
} }
console.log(mediationVal)
this.mediationFn(mediationVal); this.mediationFn(mediationVal);
},5000), },
resultsMediation() { resultsMediation() {
} }
@@ -331,4 +386,9 @@ export default {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
} }
::v-deep .el-input--medium .el-input__inner {
height: 40px;
line-height: 40px;
}
</style> </style>
@@ -0,0 +1,131 @@
<template>
<div>
<el-dialog title="调解书" :visible="mediationAppVisable" width="500px" @close="cancel" center
:distroy-on-close="true">
<div>
<div>
<span style="font-weight: bold;">下载调解书</span>
</div>
<div style="margin-top: 10px;">
<div style="color: blue; cursor: pointer" v-for="(item, index) in getFileListV"
v-if="item.annexType == 7 || item.annexType == 13" @click="downloadApplic(item.annexPath)">{{
item.annexName }}</div>
</div>
</div>
<div style="margin-top: 30px;">
<div>
<span style="font-weight: bold;">上传调解书</span>
</div>
<div style="margin-top: 10px;">
<el-upload class="upload-demo" accept=".doc,.docx,.pdf" ref="upload" :action="UploadUrl()"
:headers="headers" :data="filedata" :on-preview="handlePreview" :on-remove="handleRemove"
:auto-upload="false" :limit="1" :on-change="beforeUpload" :on-success="handlSuccess"
:file-list="fileList">
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
<div slot="tip" class="el-upload__tip">只能上传.doc,docx,pdf文件</div>
</el-upload>
</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel" class="endbutton1" round><span>取 消</span></el-button>
<el-button @click="submitMediator" class="endbutton1" type="primary" round><span>确 认</span></el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { getFileList, meetingUpload } from "@/api/caseManagement/caseManagement.js"
import { createRoomId } from '@/api/metting/metting.js'
import { getToken } from "@/utils/auth";
import moment from "moment";
export default {
props: ["mediationAppVisable", "mediationLise", "queryParams"],
data() {
return {
getFileListV: [],
fileURL: window.location.origin + "/API",
fileList: [],
headers: {
Authorization: "Bearer " + getToken(),
},
filedata: {
isMediaBook:1,
annexType: null,
caseId: null
},
};
},
watch: {
mediationAppVisable(val) {
this.fileList = []
if (val) {
let dataValue = {
caseAppliId: this.mediationLise.id,
}
console.log(dataValue)
this.getFileListFn(dataValue)
}
},
},
methods: {
/**上传地址*/
UploadUrl() {
return window.location.origin + "/API/video/upload";
},
handlePreview(file) {
},
handleRemove(file, fileList) {
},
beforeUpload(flie, fileList) {
function getFileExtension(filename) {
const parts = filename.split('.');
return parts.length > 1 ? parts.pop() : '';
}
const extension = getFileExtension(flie.name);
if (extension == 'docx' || extension == 'doc') {
this.filedata.annexType = 7
} else if (extension == 'pdf') {
this.filedata.annexType = 7
}
this.filedata.caseId = this.mediationLise.id
this.fileList = fileList;
const isLt2M = flie.size / 1024 / 1024 < 50; // 小于50MB
if (!isLt2M) {
this.$message.error('上传的文件大小不能超过 50MB!');
}
return isLt2M;
},
handlSuccess(res, file) {
if (res.code == 200) {
this.$modal.msgSuccess("上传成功");
this.$emit("cancelmediationApp");
}
},
cancel() {
this.$emit("cancelmediationApp");
},
// 获取申请书附件
async getFileListFn(vals) {
await getFileList(vals).then(res => {
this.getFileListV = res.data
})
},
// 下载申请书
downloadApplic(val) {
window.open(this.fileURL + val);
},
/**提交选择结果*/
async submitMediator() {
this.$refs.upload.submit()
},
},
};
</script>
<style lang="scss" scoped></style>
@@ -23,11 +23,11 @@
{{ formPayDetail.caseStatusName }} {{ formPayDetail.caseStatusName }}
</el-tag> </el-tag>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="驳回原因" v-if="formPayDetail.reason"> <!-- <el-descriptions-item label="驳回原因" v-if="formPayDetail.reason">
<el-tag size="mini" type='danger' effect="dark"> <el-tag size="mini" type='danger' effect="dark">
{{ formPayDetail.reason }} {{ formPayDetail.reason }}
</el-tag> </el-tag>
</el-descriptions-item> </el-descriptions-item> -->
</el-descriptions> </el-descriptions>
<div class="paySelectType"> <div class="paySelectType">
<el-radio-group v-model="paySelect" @input="changPayType"> <el-radio-group v-model="paySelect" @input="changPayType">
@@ -56,9 +56,13 @@
<div id="qrcodeImg"></div> <div id="qrcodeImg"></div>
</div> </div>
<div class="payTitle">{{ payMain }}</div> <div class="payTitle">{{ payMain }}</div>
<div v-if="formPayDetail.reason">
<span>驳回原因:</span>
<div style="width:95%;">{{ formPayDetail.reason }}</div>
</div>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="payCancel" class="endbutton" round><span>取 消</span></el-button> <el-button @click="payCancel" round><span>取 消</span></el-button>
<el-button @click="submitUpload" class="endbutton" type="primary" round><span>确认缴费</span></el-button> <el-button @click="submitUpload" type="primary" :disabled="payFlagSubmit" round><span>确认缴费</span></el-button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
@@ -88,7 +92,8 @@ export default {
payType:1, payType:1,
payOrderList:[], payOrderList:[],
caseId:null caseId:null
} },
payFlagSubmit:true
}; };
}, },
methods: { methods: {
@@ -112,6 +117,7 @@ export default {
annexId: res.annexId, annexId: res.annexId,
annexName:res.annexName annexName:res.annexName
}); });
this.payFlagSubmit = false;
}, },
submitUpload() { submitUpload() {
if (this.fileList.length < 1) { if (this.fileList.length < 1) {
@@ -128,7 +134,7 @@ export default {
handleRemove(file, fileList) { handleRemove(file, fileList) {
(this.submitForm.payOrderList = []), (this.submitForm.payOrderList = []),
fileList.forEach((item) => { fileList.forEach((item) => {
this.submitForm.payOrderList.push({ annexId:item.response.data.annexId,annexName:item.response.data.annexName }); this.submitForm.payOrderList.push({ annexId:item.response.annexId,annexName:item.response.annexName });
}); });
}, },
handlePreview(file) { handlePreview(file) {
@@ -187,7 +193,7 @@ export default {
this.submitForm.caseId = this.payId; this.submitForm.caseId = this.payId;
} }
} }
} },
}; };
</script> </script>
@@ -14,13 +14,13 @@
<el-form-item label="缴费金额:" prop="feePayable"> <el-form-item label="缴费金额:" prop="feePayable">
<el-input v-model="form.feePayable" :disabled="true"/> <el-input v-model="form.feePayable" :disabled="true"/>
</el-form-item> </el-form-item>
<el-form-item label="申请人缴费凭证:" v-if="form.caseAttachList.length > 0"> <el-form-item label="申请人缴费凭证:" v-if="form.caseAttachList&&form.caseAttachList.length>0 ">
<div style="color: #104fad;cursor:pointer" v-for="(item, index) in form.caseAttachList" :key="index" <div style="color: #104fad;cursor:pointer" v-for="(item, index) in form.caseAttachList" :key="index"
@click="preview(item.annexPath)"> @click="preview(item.annexPath)">
{{ item.annexName }} {{ item.annexName }}
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="被申请人缴费凭证:" v-if="form.resCaseAttachList.length > 0"> <el-form-item label="被申请人缴费凭证:" v-if="form.resCaseAttachList&&form.resCaseAttachList.length>0">
<div style="color: #104fad;cursor:pointer" v-for="(item, index) in form.resCaseAttachList" :key="index" <div style="color: #104fad;cursor:pointer" v-for="(item, index) in form.resCaseAttachList" :key="index"
@click="preview(item.annexPath)"> @click="preview(item.annexPath)">
{{ item.annexName }} {{ item.annexName }}
@@ -57,8 +57,8 @@
</div> </div>
<div class="resPayTitle">{{ payMain }}</div> <div class="resPayTitle">{{ payMain }}</div>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="payCancel" class="endbutton" round><span>取 消</span></el-button> <el-button @click="payCancel" round><span>取 消</span></el-button>
<el-button @click="submitUpload" class="endbutton" type="primary" round><span>确认缴费</span></el-button> <el-button @click="submitUpload" type="primary" :disabled="payFlagSubmit" round><span>确认缴费</span></el-button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
@@ -88,7 +88,8 @@
payType:1, payType:1,
payOrderList:[], payOrderList:[],
caseId:null caseId:null
} },
payFlagSubmit:true
}; };
}, },
methods: { methods: {
@@ -112,6 +113,7 @@
annexId: res.annexId, annexId: res.annexId,
annexName:res.annexName annexName:res.annexName
}); });
this.payFlagSubmit = false;
}, },
submitUpload() { submitUpload() {
if (this.fileList.length < 1) { if (this.fileList.length < 1) {
@@ -128,7 +130,7 @@
handleRemove(file, fileList) { handleRemove(file, fileList) {
(this.submitForm.payOrderList = []), (this.submitForm.payOrderList = []),
fileList.forEach((item) => { fileList.forEach((item) => {
this.submitForm.payOrderList.push({ annexId:item.response.data.annexId,annexName:item.response.data.annexName }); this.submitForm.payOrderList.push({ annexId:item.response.annexId,annexName:item.response.annexName });
}); });
}, },
handlePreview(file) { handlePreview(file) {
@@ -47,8 +47,15 @@ export default {
watch: { watch: {
mediatorVisable(val) { mediatorVisable(val) {
if (val) { if (val) {
listMediator().then(res=>{ listMediator({caseAppliId: this.mediatorData.id}).then(res=>{
this.tableData = res.data; this.tableData = res.data;
this.tableData.forEach((item)=> {
if (item.echoFlag) {
this.$nextTick(()=>{
this.$refs.multipleTable.toggleRowSelection(item, true);
})
}
})
}) })
} }
} }
@@ -88,7 +95,6 @@ export default {
}, },
handleSelectionChange(val) { handleSelectionChange(val) {
this.multipleSelection = val; this.multipleSelection = val;
// console.log(this.multipleSelection,"LLLLLLLLLLLLLLLLL");
} }
}, },
}; };
@@ -87,10 +87,11 @@ export default {
this.createRoomIdFn({ this.createRoomIdFn({
caseId: this.timeConfirmData.id caseId: this.timeConfirmData.id
}) })
if (this.formLabelAlign.name == '') { if (!this.formLabelAlign.name) {
Message.error('请选择时间'); Message.error('请选择时间');
return return
} }
console.log(this.formLabelAlign.name)
this.formLabelAlign.name = moment( this.formLabelAlign.name = moment(
this.formLabelAlign.name this.formLabelAlign.name
).format("YYYY-MM-DD HH:mm:ss"); ).format("YYYY-MM-DD HH:mm:ss");
@@ -33,6 +33,12 @@
<el-table-column label="案件状态" align="center" prop="caseStatusName" :show-overflow-tooltip="true" /> <el-table-column label="案件状态" align="center" prop="caseStatusName" :show-overflow-tooltip="true" />
<el-table-column label="驳回节点" align="center" prop="backFlowName" :show-overflow-tooltip="true" /> <el-table-column label="驳回节点" align="center" prop="backFlowName" :show-overflow-tooltip="true" />
<el-table-column label="关联角色" align="center" prop="roleNames" :show-overflow-tooltip="true" /> <el-table-column label="关联角色" align="center" prop="roleNames" :show-overflow-tooltip="true" />
<el-table-column label="节点图标" align="center" prop="nodeIcon" :show-overflow-tooltip="true">
<template slot-scope="scope">
<img v-if="scope.row.fileName" class="nodeIcon" :src="iconHead+scope.row.fileName"/>
<span v-else>暂无图标</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" @click="moveDown(scope.row)" type="text" icon="el-icon-arrow-down"></el-button> <el-button size="mini" @click="moveDown(scope.row)" type="text" icon="el-icon-arrow-down"></el-button>
@@ -80,10 +86,14 @@ export default {
dataList: [], dataList: [],
addvisiable: false,//新增弹窗 addvisiable: false,//新增弹窗
editData: {}, editData: {},
iconHead: process.env.VUE_APP_BASE_API
}; };
}, },
created() { created() {
this.getList(this.queryParams) this.getList(this.queryParams);
},
computed: {
}, },
methods: { methods: {
// 删除 // 删除
@@ -160,4 +170,9 @@ export default {
}; };
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped>
.nodeIcon {
width: 20%;
height: 20%;
}
</style>
@@ -4,7 +4,7 @@
<el-form :model="ruleForm" label-position="left" :rules="rules" ref="ruleForm" label-width="90px" <el-form :model="ruleForm" label-position="left" :rules="rules" ref="ruleForm" label-width="90px"
class="demo-ruleForm"> class="demo-ruleForm">
<el-form-item label="节点名称" prop="nodeName"> <el-form-item label="节点名称" prop="nodeName">
<el-select v-model="ruleForm.nodeName" placeholder="请选择" @change="changenodeName"> <el-select v-model="ruleForm.nodeName" placeholder="请选择">
<el-option v-for="dict in dict.type.case_flow_node" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.case_flow_node" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option> :value="dict.value"></el-option>
</el-select> </el-select>
@@ -28,6 +28,20 @@
<el-form-item label="权限字符" prop="buttonAuthFlag"> <el-form-item label="权限字符" prop="buttonAuthFlag">
<el-input v-model="ruleForm.buttonAuthFlag" placeholder="请输入"></el-input> <el-input v-model="ruleForm.buttonAuthFlag" placeholder="请输入"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="节点图标" prop="nodeIcon">
<el-upload
class="avatar-uploader"
:action="uploadImgUrl"
:show-file-list="false"
:headers="headers"
:data="filedata"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload">
<img v-if="imageUrl" :src="imgSvgUrl" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
<div slot="tip" class="el-upload__tip">只能上传SVG图片</div>
</el-upload>
</el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="cancel" class="endbutton"><span>取 消</span></el-button> <el-button @click="cancel" class="endbutton"><span>取 消</span></el-button>
@@ -39,6 +53,7 @@
<script> <script>
import { queryCaseFlowInfo, saveCaseFlow } from "@/api/caseprocessManagement/caseprocessManagement.js"; import { queryCaseFlowInfo, saveCaseFlow } from "@/api/caseprocessManagement/caseprocessManagement.js";
import { listRole } from "@/api/system/role"; import { listRole } from "@/api/system/role";
import { getToken } from "@/utils/auth";
export default { export default {
props: ["addvisiable", "editData", "queryParams"], props: ["addvisiable", "editData", "queryParams"],
dicts: ["case_flow_node"], dicts: ["case_flow_node"],
@@ -49,7 +64,9 @@ export default {
backflowArr: [],//驳回节点 backflowArr: [],//驳回节点
roleArr: [],//关联角色 roleArr: [],//关联角色
isImg: false, isImg: false,
filedata: {}, filedata: {
annexType: 11,
},
flagBtn: false, flagBtn: false,
ruleForm: {}, ruleForm: {},
rules: { rules: {
@@ -67,24 +84,46 @@ export default {
] ]
}, },
dealvalue: [], dealvalue: [],
imageUrl: '',
uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传的图片服务器地址
headers: {
Authorization: "Bearer " + getToken(),
},
fileName: '',
imgSvgUrl: ''
}; };
}, },
watch: { watch: {
addvisiable(val) { addvisiable(val) {
if (val) { if (val) {
this.ruleForm = this.editData; this.ruleForm = this.editData;
this.fileName = '',
this.getRoles(); this.getRoles();
this.getbackflowArr() this.getbackflowArr();
if (this.ruleForm && this.ruleForm.fileName) {
this.imgSvgUrl = process.env.VUE_APP_BASE_API + this.ruleForm.fileName;
this.imageUrl = process.env.VUE_APP_BASE_API + this.ruleForm.fileName;
this.fileName = this.ruleForm.fileName
} else {
this.imgSvgUrl = ''
this.imageUrl = ''
} }
} }
}, },
fileName: {
handler(val) {
if (val) {
this.imgSvgUrl = this.imageUrl
}
},
deep: true
}
},
created() { created() {
}, },
methods: { methods: {
changenodeName(val) {
console.log(val, 'changeval');
},
// 获取驳回节点数据 // 获取驳回节点数据
getbackflowArr() { getbackflowArr() {
let queryParams2 = { let queryParams2 = {
@@ -119,6 +158,19 @@ export default {
cancel() { cancel() {
this.$emit("cancelAdd"); this.$emit("cancelAdd");
}, },
// 图标上传
handleAvatarSuccess(res, file) {
this.fileName = ''
this.imageUrl = URL.createObjectURL(file.raw);
this.fileName = file.response.fileName
},
beforeAvatarUpload(file) {
const isSvg = file.type === 'image/svg+xml';
if (!isSvg) {
this.$message.error('上传图片只能是 SVG 格式!');
}
return isSvg;
},
// 提交 // 提交
submitForm() { submitForm() {
this.$refs['ruleForm'].validate((valid) => { this.$refs['ruleForm'].validate((valid) => {
@@ -141,7 +193,8 @@ export default {
backFlowId: this.ruleForm.backFlowId, backFlowId: this.ruleForm.backFlowId,
roleIds: this.ruleForm.roleIds, roleIds: this.ruleForm.roleIds,
sort: this.ruleForm.sort, sort: this.ruleForm.sort,
buttonAuthFlag: this.ruleForm.buttonAuthFlag buttonAuthFlag: this.ruleForm.buttonAuthFlag,
fileName: this.fileName
} }
} else { } else {
let nodevalue = this.dict.type.case_flow_node; let nodevalue = this.dict.type.case_flow_node;
@@ -158,7 +211,8 @@ export default {
caseStatusName: this.ruleForm.caseStatusName, caseStatusName: this.ruleForm.caseStatusName,
backFlowId: this.ruleForm.backFlowId, backFlowId: this.ruleForm.backFlowId,
roleIds: this.ruleForm.roleIds, roleIds: this.ruleForm.roleIds,
buttonAuthFlag: this.ruleForm.buttonAuthFlag buttonAuthFlag: this.ruleForm.buttonAuthFlag,
fileName: this.fileName
} }
} }
if (params.backFlowId == undefined) { if (params.backFlowId == undefined) {
@@ -181,4 +235,31 @@ export default {
::v-deep .el-select { ::v-deep .el-select {
width: 100%; width: 100%;
} }
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
// .avatar-uploader .el-upload:hover {
// border-color: #409EFF;
// }
.avatar-uploader-icon {
border: 1px dashed #d9d9d9;
font-size: 28px;
color: #8c939d;
width: 100px;
height: 100px;
line-height: 100px;
text-align: center;
}
.avatar-uploader-icon:hover {
border-color: #409EFF;
}
.avatar {
width: 100px;
height: 100px;
display: block;
}
</style> </style>
@@ -0,0 +1,179 @@
<template>
<div>
<el-dialog
title="邮件内容"
:visible="emailVidable"
@close="cancel"
center
:distroy-on-close="true"
>
<div>
<el-form>
<el-col :span="24">
<el-form-item label="邮件主题:" label-width="100px">
<div>{{ emailRow.mailSubject }}</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="收件人:" label-width="100px">
<div>{{ emailRow.mailAddress }}</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="发件人:" label-width="100px">
<div>{{ emailRow.mailFromAddress }}</div>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="邮件附件:" label-width="100px">
<div
style="color: blue; cursor: pointer"
v-for="(item, index) in emailRow.caseAttachList"
:key="index"
@click="viewAttachments(item.annexPath)"
>
{{ item.annexName }}
</div>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="邮件上传:" label-width="100px">
<el-upload
class="upload-demo"
accept=".doc,.docx,.pdf"
ref="upload"
:action="UploadUrl()"
:headers="headers"
:data="filedata"
:on-preview="handlePreview"
:on-remove="handleRemove"
:limit="1"
:on-change="beforeUpload"
:on-success="handlSuccess"
:file-list="fileList"
>
<el-button
slot="trigger"
size="small"
type="primary"
>选取文件</el-button
>
<div slot="tip" class="el-upload__tip">
只能上传.doc,docx,pdf文件
</div>
</el-upload>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="邮件正文:" label-width="100px">
<el-input
type="textarea"
:rows="4"
placeholder="请输入内容"
v-model="sendData"
></el-input>
</el-form-item>
</el-col>
</el-form>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel" class="endbutton1" round
><span>取 消</span></el-button
>
<el-button @click="submitSend" class="endbutton1" type="primary" round
><span>确 认</span></el-button
>
</div>
</el-dialog>
</div>
</template>
<script>
import {
updateSendContent,
update,
} from "@/api/deliveryRecord/deliveryRecord.js";
import { getToken } from "@/utils/auth";
export default {
props: ["emailVidable", "emailRow", "queryParams"],
data() {
return {
sendData: "",
fileURL: window.location.origin + "/API",
headers: {
Authorization: "Bearer " + getToken(),
},
filedata: {
annexType: 13,
},
fileList: [],
files:[],
};
},
watch: {
emailVidable(val) {
if (val) {
console.log(this.emailRow);
this.sendData = this.emailRow.mailContent;
}
},
},
methods: {
cancel() {
this.$emit("cancelEmail");
},
submitSend() {
console.log(this.emailRow.mailContent);
if(this.files.annexId){
this.updateSendContentFn({
id: this.emailRow.id,
mailContent: this.sendData,
caseAttachList:[{annexId:this.files.annexId}],
});
}else{
this.updateSendContentFn({
id: this.emailRow.id,
mailContent: this.sendData,
caseAttachList:[],
});
}
},
updateSendContentFn(data) {
console.log(data)
update(data).then((res) => {
this.$message.success("更新成功");
this.$emit("cancelEmail");
this.$emit("getList", this.queryParams);
this.$refs.upload.clearFiles(); // 清除文件列表
});
},
// 查看附件下载附件
viewAttachments(val) {
window.open(this.fileURL + val);
},
/**上传地址*/
UploadUrl() {
return window.location.origin + "/API/common/upload";
},
handlePreview(file) {},
handleRemove(file, fileList) {},
beforeUpload(flie, fileList) {
},
handlSuccess(res, file) {
const fileSuccess = [{ annexId: res.annexId, annexType: res.annexType,annexName:res.newFileName,annexPath:res.fileName,onlyOfficeFileId:res.onlyOfficeFileId}]
this.emailRow.caseAttachList = fileSuccess
this.files = res
console.log(res)
},
},
};
</script>
<style lang="scss" scoped></style>
@@ -0,0 +1,69 @@
<template>
<div>
<el-dialog title="修改内容" :visible="resendVidable" v-if="resendVidable" @close="cancel" center
:distroy-on-close="true">
<div style="margin-bottom: 30px;"><span style="font-weight: bold;">发送内容:</span>{{ sendData }}</div>
<el-form label-width="100px">
<el-form-item v-for="(item,index) in rowData.templateParams" :label="item.paramName" :key="item.id">
<el-input v-model="rowData.templateParams[index].paramValue" @input="changeContent"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel" class="endbutton1" round><span>取 消</span></el-button>
<el-button @click="submitSend" class="endbutton1" type="primary" round><span>确 认</span></el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
updateSendContent,
} from "@/api/deliveryRecord/deliveryRecord.js";
export default {
props: ["resendVidable", "rowData","queryParams"],
data() {
return {
sendData:'',
param:"",
paramValue:""
};
},
watch: {
resendVidable(val){
if(val){
this.sendData = this.rowData.sendContent;
}
}
},
methods: {
cancel() {
this.$emit("cancelSend");
},
submitSend() {
console.log(this.rowData)
this.updateSendContentFn({
id:this.rowData.id,
templateParams:this.rowData.templateParams
})
},
updateSendContentFn(data){
updateSendContent(data).then(res=>{
this.$message.success('更新成功');
this.$emit("cancelSend");
this.$emit('getList',this.queryParams);
})
},
changeContent(){
let templateContent = this.rowData.templateContent
this.rowData.templateParams.forEach(item => {
templateContent = templateContent.replace(item.param,item.paramValue)
});
this.sendData = templateContent
}
},
};
</script>
<style lang="scss" scoped></style>
+38 -5
View File
@@ -27,7 +27,14 @@
<!-- 缴费人 --> <!-- 缴费人 -->
<!-- <el-table-column label="案件状态" align="center" prop="caseStatusName" /> --> <!-- <el-table-column label="案件状态" align="center" prop="caseStatusName" /> -->
<el-table-column label="内容" align="center" prop="mailContent"></el-table-column> <el-table-column label="内容" align="center" prop="mailContent"></el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="emailEditing(scope.row)" icon="el-icon-s-promotion">邮箱编辑</el-button>
<el-button v-if="scope.row.sendStatus == '未发送'" size="mini" type="text" @click="resendCounts(scope.row)" icon="el-icon-s-promotion">重新发送</el-button>
</template>
</el-table-column>
</el-table> </el-table>
<emailEdits :emailVidable="emailVidable" @cancelEmail="cancelEmail" @getList="getList" :queryParams="queryParams" :emailRow="emailRow"></emailEdits>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList(queryParams)" /> @pagination="getList(queryParams)" />
@@ -36,14 +43,14 @@
<script> <script>
import { import {
emailList, emailList,reSendMailRecord
} from "@/api/deliveryRecord/deliveryRecord.js"; } from "@/api/deliveryRecord/deliveryRecord.js";
import emailEdits from "./components/emailEdits.vue";
import { getDicts } from '@/api/system/dict/data.js' import { getDicts } from '@/api/system/dict/data.js'
export default { export default {
name: "paymentList", name: "paymentList",
dicts: ["case_status"], dicts: ["case_status"],
components: {}, components: {emailEdits},
data() { data() {
return { return {
queryParams: { queryParams: {
@@ -60,6 +67,9 @@ export default {
// 校验表单 // 校验表单
rules: {}, rules: {},
dataList: [], dataList: [],
emailVidable:false,
emailRow:{},
sendStatusMessage:false,
}; };
}, },
created() { created() {
@@ -89,14 +99,37 @@ export default {
item.sendStatus = "未发送" item.sendStatus = "未发送"
} else if (item.sendStatus == 1) { } else if (item.sendStatus == 1) {
item.sendStatus = "已发送" item.sendStatus = "已发送"
} else {
item.sendStatus = "未发送"
} }
}) })
this.total = response.total; this.total = response.total;
this.loading = false; this.loading = false;
}); });
}, },
// 邮箱编辑内容
emailEditing(data){
this.emailVidable = true
this.emailRow = data;
console.log(data)
},
// 关闭弹窗
cancelEmail(){
this.emailVidable = false
},
// 重新发送
resendCounts(row){
if(row.sendStatus=='未发送'){
row.sendStatus = 0
}else if(row.sendStatus=='已发送'){
row.sendStatus = 1
}
reSendMailRecord(row).then(res=>{
console.log(res)
this.$message.success('发送成功');
this.getList(this.queryParams);
})
}
}, },
}; };
</script> </script>
+67 -16
View File
@@ -2,7 +2,8 @@
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="案件编号" prop="caseNum"> <el-form-item label="案件编号" prop="caseNum">
<el-input v-model="queryParams.caseNum" placeholder="请输入案件编号" clearable @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.caseNum" placeholder="请输入案件编号" clearable
@keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -22,23 +23,34 @@
<el-table-column label="发送时间" align="center" prop="sendTime" /> <el-table-column label="发送时间" align="center" prop="sendTime" />
<el-table-column label="发送状态" align="center" prop="sendStatus" /> <el-table-column label="发送状态" align="center" prop="sendStatus" />
<el-table-column label="发送内容" align="center" prop="sendContent" :show-overflow-tooltip="true"/> <el-table-column label="发送内容" align="center" prop="sendContent" :show-overflow-tooltip="true"/>
<el-table-column label="备注" align="center" prop="reason" :show-overflow-tooltip="true"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" @click="copyContent(scope.row.sendContent)" type="text"
icon="el-icon-document-copy">复制内容</el-button>
<el-button size="mini" @click="resend(scope.row)" type="text" icon="el-icon-s-promotion">编辑内容</el-button>
<el-button v-if="scope.row.sendStatus == '发送失败'|| scope.row.sendStatus == '发送中'" size="mini" type="text" @click="resendMessage(scope.row)" icon="el-icon-s-promotion">重新发送</el-button>
</template>
</el-table-column>
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" <resend :resendVidable="resendVidable" :rowData="rowData" @getList="getList" @cancelSend="cancelSend" :queryParams="queryParams"></resend>
@pagination="getList({caseNum:queryParams.caseNum},{pageNum:queryParams.pageNum,pageSize:queryParams.pageSize})" /> <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList({ caseNum: queryParams.caseNum,pageNum: queryParams.pageNum, pageSize: queryParams.pageSize})" />
</div> </div>
</template> </template>
<script> <script>
import { import {
smsList, recordList,reSendShortMessage
} from "@/api/deliveryRecord/deliveryRecord.js"; } from "@/api/deliveryRecord/deliveryRecord.js";
import resend from "./components/resend.vue";
import { getDicts } from '@/api/system/dict/data.js' import { getDicts } from '@/api/system/dict/data.js'
export default { export default {
name: "paymentList", name: "paymentList",
dicts: ["case_status"], dicts: ["case_status"],
components: { }, components: {resend},
data() { data() {
return { return {
queryParams: { queryParams: {
@@ -55,18 +67,40 @@ export default {
// 校验表单 // 校验表单
rules: {}, rules: {},
dataList: [], dataList: [],
rowData:{},
resendVidable:false,
sendStatusMessage:false
}; };
}, },
created() { created() {
getDicts("case_status").then(res => { getDicts("case_status").then(res => {
this.getList({caseNum:this.queryParams.caseNum},{pageNum:this.queryParams.pageNum,pageSize:this.queryParams.pageSize}); this.getList({ caseNum: this.queryParams.caseNum,pageNum: this.queryParams.pageNum, pageSize: this.queryParams.pageSize});
}) })
}, },
methods: { methods: {
/** 复制内容 */
copyContent(row) {
const el = document.createElement('textarea');
el.value = row;
document.body.appendChild(el);
el.select();
document.execCommand('copy');
document.body.removeChild(el);
this.$message.success('复制成功');
},
/**重新发送 */
resend(row){
this.resendVidable = true;
this.rowData = row;
},
/**关闭弹窗 */
cancelSend(){
this.resendVidable = false;
},
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
this.queryParams.pageNum = 1; this.queryParams.pageNum = 1;
this.getList({caseNum:this.queryParams.caseNum},{pageNum:this.queryParams.pageNum,pageSize:this.queryParams.pageSize}); this.getList({ caseNum: this.queryParams.caseNum,pageNum: this.queryParams.pageNum, pageSize: this.queryParams.pageSize });
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery() {
@@ -74,18 +108,16 @@ export default {
this.handleQuery(); this.handleQuery();
}, },
// 查询列表数据 // 查询列表数据
getList(data,params) { getList(data) {
this.loading = true; this.loading = true;
smsList(data,params).then((response) => { recordList(data).then((response) => {
this.dataList = response.rows; this.dataList = response.rows;
this.dataList.forEach(item => { this.dataList.forEach(item => {
if(item.sendStatus == 0){ if (item.sendStatus == 1) {
item.sendStatus = "发送失败" item.sendStatus = "发送成功"
}else if(item.sendStatus == 1){
item.sendStatus = "已送达"
} else if (item.sendStatus == 2) { } else if (item.sendStatus == 2) {
item.sendStatus = "已读取" item.sendStatus = "发送中"
}else{ } else if(item.sendStatus == 3){
item.sendStatus = "发送失败" item.sendStatus = "发送失败"
} }
}) })
@@ -93,6 +125,25 @@ export default {
this.loading = false; this.loading = false;
}); });
}, },
// 重新发送
resendMessage(row){
console.log(row.sendStatus)
let valuesRow ={
id:row.id,
templateId:row.templateId,
phone:row.phone,
templateParams:row.templateParams
}
this.reSendShortMessageFn(valuesRow)
console.log(valuesRow)
},
reSendShortMessageFn(valuesRow){
reSendShortMessage(valuesRow).then(res=>{
this.$message.success('发送成功');
this.getList({ caseNum: this.queryParams.caseNum,pageNum: this.queryParams.pageNum, pageSize: this.queryParams.pageSize });
})
}
}, },
}; };
</script> </script>
+126 -4
View File
@@ -1,27 +1,149 @@
<template> <template>
<div class="app-container home"> <div class="app-container home">
调解系统 <div class="header">
<div class="iconTitle"></div>
<div class="headerMain">我的待办</div>
</div>
<div class="homeMain">
<div
class="cardList"
v-for="(item, index) in pendingTasks"
:key="index"
@click="pushPage(item.caseFlowId)"
>
<div class="badge">{{ item.caseCount }}</div>
<div class="cardMain">
<img class="iconImg" :src="iconHead + item.fileName" alt="" />
</div>
<div class="cardMain1">
<div class="imgTitle">{{ item.caseStatusName }}</div>
</div>
</div>
</div>
</div> </div>
</template> </template>
<script> <script>
import { todoCount } from "@/api/system/homepage.js";
export default { export default {
name: "Index", name: "Index",
data() { data() {
return { return {
// 版本号 // 版本号
version: "3.8.6" version: "3.8.6",
pendingTasks: [], //案件代办状态
iconHead: process.env.VUE_APP_BASE_API
}; };
}, },
watch: {
$route(val) {
if (val) {
this.gettodoCount();
}
}
},
created() {
this.gettodoCount();
},
methods: { methods: {
goTarget(href) { goTarget(href) {
window.open(href, "_blank"); window.open(href, "_blank");
} },
} // 查询代办状态
gettodoCount() {
todoCount({}).then((res) => {
this.pendingTasks = res.data.toDoCountList;
console.log(res.data.toDoCountList, "this.pendingTasks");
});
},
// 点击待办按钮跳转
pushPage(status) {
this.$router.push({
path: "/caseManagement/caseManagement/caseList",
query: { caseFlowId: status + "" },
});
},
},
}; };
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.home {
font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 13px;
color: #676a6c;
overflow-x: hidden;
background-color: #f1f1f1;
height: 100vh;
.header {
width: 100%;
height: 80px;
display: flex;
align-items: center;
.iconTitle {
width: 5px;
height: 25px;
background-color: #0f5c9b;
margin-right: 25px;
}
.headerMain {
font-size: 20px;
}
}
.homeMain {
width: 100%;
display: flex;
flex-wrap: wrap;
.cardList {
width: 13%;
height: 200px;
border-radius: 30px;
background-color: #ffffff;
position: relative;
margin-right: 38px;
margin-bottom: 30px;
cursor: pointer;
.badge {
width: 50px;
height: 30px;
text-align: center;
line-height: 30px;
font-size: 18px;
font-weight: 500;
color: red;
border-radius: 10px 30px 10px 30px;
background-color: #1296DB;
position: absolute;
right: 0;
}
.cardMain {
width: 100%;
display: flex;
justify-content: center;
margin-top: 40px;
.iconImg {
width: 100px;
height: 110px;
}
}
.cardMain1 {
width: 100%;
display: flex;
justify-content: center;
.imgTitle {
font-size: 15px;
font-weight: 900;
}
}
}
}
}
</style> </style>
+202 -38
View File
@@ -10,7 +10,12 @@
</div> </div>
<!-- 右侧 --> <!-- 右侧 -->
<div class="rightBox"> <div class="rightBox">
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form"> <el-form
ref="loginForm"
:model="loginForm"
:rules="loginRules"
class="login-form"
>
<h2 class="title">用户登录</h2> <h2 class="title">用户登录</h2>
<el-form-item prop="username"> <el-form-item prop="username">
<el-input <el-input
@@ -19,7 +24,11 @@
auto-complete="off" auto-complete="off"
placeholder="账号" placeholder="账号"
> >
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" /> <svg-icon
slot="prefix"
icon-class="user"
class="el-input__icon input-icon"
/>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="password"> <el-form-item prop="password">
@@ -30,7 +39,11 @@
placeholder="密码" placeholder="密码"
@keyup.enter.native="handleLogin" @keyup.enter.native="handleLogin"
> >
<svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" /> <svg-icon
slot="prefix"
icon-class="password"
class="el-input__icon input-icon"
/>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="code" v-if="captchaEnabled"> <el-form-item prop="code" v-if="captchaEnabled">
@@ -41,69 +54,124 @@
style="width: 63%" style="width: 63%"
@keyup.enter.native="handleLogin" @keyup.enter.native="handleLogin"
> >
<svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" /> <svg-icon
slot="prefix"
icon-class="validCode"
class="el-input__icon input-icon"
/>
</el-input> </el-input>
<div class="login-code"> <div class="login-code">
<img :src="codeUrl" @click="getCode" class="login-code-img" /> <img :src="codeUrl" @click="getCode" class="login-code-img" />
</div> </div>
</el-form-item> </el-form-item>
<el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox> <el-checkbox
<el-form-item style="width:100%;"> v-model="loginForm.rememberMe"
style="margin: 0px 0px 25px 0px"
>记住密码</el-checkbox
>
<el-form-item style="width: 100%">
<el-button <el-button
:loading="loading" :loading="loading"
size="medium" size="medium"
type="primary" type="primary"
style="width:100%;" style="width: 100%"
@click.native.prevent="handleLogin" @click.native.prevent="handleLogin"
> >
<span v-if="!loading">登 录</span> <span v-if="!loading">登 录</span>
<span v-else>登 录 中...</span> <span v-else>登 录 中...</span>
</el-button> </el-button>
<div style="float: right;" v-if="register"> <div style="float: right" v-if="register">
<router-link class="link-type" :to="'/register'">立即注册</router-link> <!-- <router-link class="link-type" :to="'/register'">立即注册</router-link> -->
<el-button
type="text"
v-if="buttonReg"
@click="registrationLink('/register')"
>立即注册</el-button
>
</div>
<div class="registerImg" v-show="closeImgs">
<div class="closeImg" @click="closeImg">
<img
style="width: 25px; height: 25px"
src="../assets/images/closed.png"
alt=""
/>
<span style="padding-left: 100px">扫码人脸核验</span>
</div>
<div id="qrcodeImg" style="padding-left: 76px"></div>
</div> </div>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<!-- 注册时选择是否 -->
<div>
<el-dialog
title="是否需要人脸核实"
:visible.sync="centerDialogVisible"
width="30%"
center
>
<span slot="footer" class="dialog-footer">
<el-button @click="facialVerification('/register')" type="primary"
>是</el-button
>
<el-button @click="noFacialVerification('/register')" type="primary"
>否</el-button
>
</span>
</el-dialog>
</div>
<!-- 底部 --> <!-- 底部 -->
<div class="el-login-footer"> <div class="el-login-footer">
<span>Copyright © 2023 乙巢(上海)企业管理服务有限公司.</span> <div>Copyright © 2023 乙巢(上海)企业管理服务有限公司.</div>
<div>Version:1.1.4</div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { getCodeImg } from "@/api/login"; import {
getCodeImg,
selectIdentityAuthenticaEIDtoken,
selectPCEIDtokenStatus,
} from "@/api/login";
import Cookies from "js-cookie"; import Cookies from "js-cookie";
import { encrypt, decrypt } from '@/utils/jsencrypt' import QRCode from "qrcodejs2";
import { encrypt, decrypt } from "@/utils/jsencrypt";
export default { export default {
name: "Login", name: "Login",
data() { data() {
return { return {
codeUrl: "", codeUrl: "",
closeImgs: false,
centerDialogVisible: false,
buttonReg: true,
eidTokens: {},
timer: null,
pathVal: "",
loginForm: { loginForm: {
username: "admin", username: "admin",
password: "admin123", password: "admin123",
rememberMe: false, rememberMe: false,
code: "", code: "",
uuid: "" uuid: "",
}, },
loginRules: { loginRules: {
username: [ username: [
{ required: true, trigger: "blur", message: "请输入您的账号" } { required: true, trigger: "blur", message: "请输入您的账号" },
], ],
password: [ password: [
{ required: true, trigger: "blur", message: "请输入您的密码" } { required: true, trigger: "blur", message: "请输入您的密码" },
], ],
code: [{ required: true, trigger: "change", message: "请输入验证码" }] code: [{ required: true, trigger: "change", message: "请输入验证码" }],
}, },
loading: false, loading: false,
// 验证码开关 // 验证码开关
captchaEnabled: true, captchaEnabled: true,
// 注册开关 // 注册开关
register: true, register: true,
redirect: undefined redirect: undefined,
}; };
}, },
watch: { watch: {
@@ -111,8 +179,8 @@ export default {
handler: function (route) { handler: function (route) {
this.redirect = route.query && route.query.redirect; this.redirect = route.query && route.query.redirect;
}, },
immediate: true immediate: true,
} },
}, },
created() { created() {
this.getCode(); this.getCode();
@@ -120,8 +188,9 @@ export default {
}, },
methods: { methods: {
getCode() { getCode() {
getCodeImg().then(res => { getCodeImg().then((res) => {
this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled; this.captchaEnabled =
res.captchaEnabled === undefined ? true : res.captchaEnabled;
if (this.captchaEnabled) { if (this.captchaEnabled) {
this.codeUrl = "data:image/gif;base64," + res.img; this.codeUrl = "data:image/gif;base64," + res.img;
this.loginForm.uuid = res.uuid; this.loginForm.uuid = res.uuid;
@@ -131,29 +200,37 @@ export default {
getCookie() { getCookie() {
const username = Cookies.get("username"); const username = Cookies.get("username");
const password = Cookies.get("password"); const password = Cookies.get("password");
const rememberMe = Cookies.get('rememberMe') const rememberMe = Cookies.get("rememberMe");
this.loginForm = { this.loginForm = {
username: username === undefined ? this.loginForm.username : username, username: username === undefined ? this.loginForm.username : username,
password: password === undefined ? this.loginForm.password : decrypt(password), password:
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe) password === undefined ? this.loginForm.password : decrypt(password),
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
}; };
}, },
handleLogin() { handleLogin() {
this.$refs.loginForm.validate(valid => { this.$refs.loginForm.validate((valid) => {
if (valid) { if (valid) {
this.loading = true; this.loading = true;
if (this.loginForm.rememberMe) { if (this.loginForm.rememberMe) {
Cookies.set("username", this.loginForm.username, { expires: 30 }); Cookies.set("username", this.loginForm.username, { expires: 30 });
Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 }); Cookies.set("password", encrypt(this.loginForm.password), {
Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 }); expires: 30,
});
Cookies.set("rememberMe", this.loginForm.rememberMe, {
expires: 30,
});
} else { } else {
Cookies.remove("username"); Cookies.remove("username");
Cookies.remove("password"); Cookies.remove("password");
Cookies.remove('rememberMe'); Cookies.remove("rememberMe");
} }
this.$store.dispatch("Login", this.loginForm).then(() => { this.$store
.dispatch("Login", this.loginForm)
.then(() => {
this.$router.push({ path: this.redirect || "/" }).catch(() => {}); this.$router.push({ path: this.redirect || "/" }).catch(() => {});
}).catch(() => { })
.catch(() => {
this.loading = false; this.loading = false;
if (this.captchaEnabled) { if (this.captchaEnabled) {
this.getCode(); this.getCode();
@@ -161,8 +238,72 @@ export default {
}); });
} }
}); });
},
// 生成二维码
qrcode(url) {
// 前端根据 URL 生成微信支付二维码
document.getElementById("qrcodeImg").innerHTML = "";
return new QRCode("qrcodeImg", {
width: 200,
height: 200,
text: url,
colorDark: "#000",
colorLight: "#fff",
});
},
registrationLink(path) {
this.centerDialogVisible = true;
},
// 是人脸核实
facialVerification(path) {
this.centerDialogVisible = false;
this.pathVal = path;
// clearInterval(this.timer);
selectIdentityAuthenticaEIDtoken().then((res) => {
this.closeImgs = true;
this.buttonReg = false;
let url = res.data.Url;
this.eidTokens = {
eidToken: res.data.EidToken,
};
this.timer = setInterval(() => {
this.getSelectPCEIDtokenStatus(this.eidTokens);
}, 10000);
this.qrcode(url);
});
},
// 不用人脸核实
noFacialVerification(path) {
this.$router.push(path);
},
// H5轮询获取E证通Token状态
getSelectPCEIDtokenStatus(data) {
selectPCEIDtokenStatus(data).then((res) => {
if (res.data.certificationStatus == 0) {
// this.$router.push(this.pathVal);
this.$router.push({
path:this.pathVal,
query:{
identityNo:res.data.identityNo,
name:res.data.name
} }
})
} }
});
},
// 关闭弹框
closeImg() {
clearInterval(this.timer);
this.closeImgs = false;
this.buttonReg = true;
},
},
beforeDestroy() {
// 清除计时器
if (this.timer) {
clearInterval(this.timer);
}
},
}; };
</script> </script>
@@ -172,23 +313,28 @@ export default {
justify-content: center; justify-content: center;
align-items: center; align-items: center;
height: 100%; height: 100%;
.leftBox { .leftBox {
width: 50%; width: 50%;
height: 90%; height: 90%;
.leftIcon { .leftIcon {
height: 10%; height: 20%;
width: 100%; width: 100%;
margin: 5% 10% 1% 15%; margin: 0% 10% 1% 15%;
.Icon { .Icon {
width: 45px; width: 100px;
height: 45px; height: 105px;
background-image: url("../assets/images/mediate.svg"); background-image: url("../assets/images/logos.png");
background-size: cover; background-size: cover;
} }
div { div {
font-size: 17px; font-size: 18px;
} }
} }
.leftImage { .leftImage {
width: 100%; width: 100%;
height: 90%; height: 90%;
@@ -207,6 +353,7 @@ export default {
align-items: center; align-items: center;
} }
} }
.title { .title {
margin: 0px auto 30px auto; margin: 0px auto 30px auto;
text-align: center; text-align: center;
@@ -219,36 +366,43 @@ export default {
background: #ffffff; background: #ffffff;
width: 400px; width: 400px;
padding: 25px 25px 5px 25px; padding: 25px 25px 5px 25px;
.el-input { .el-input {
height: 38px; height: 38px;
input { input {
height: 38px; height: 38px;
} }
} }
.input-icon { .input-icon {
height: 39px; height: 39px;
width: 14px; width: 14px;
margin-left: 2px; margin-left: 2px;
} }
} }
.login-tip { .login-tip {
font-size: 13px; font-size: 13px;
text-align: center; text-align: center;
color: #bfbfbf; color: #bfbfbf;
} }
.login-code { .login-code {
width: 33%; width: 33%;
height: 38px; height: 38px;
float: right; float: right;
img { img {
cursor: pointer; cursor: pointer;
vertical-align: middle; vertical-align: middle;
} }
} }
.el-login-footer { .el-login-footer {
background-color: rgb(126, 131, 135); background-color: rgb(126, 131, 135);
height: 40px; height: 55px;
line-height: 40px; line-height: 55px;
position: fixed; position: fixed;
bottom: 0; bottom: 0;
width: 100%; width: 100%;
@@ -257,6 +411,16 @@ export default {
font-family: Arial; font-family: Arial;
font-size: 12px; font-size: 12px;
letter-spacing: 1px; letter-spacing: 1px;
div {
height: 30%;
}
}
.registerImg {
border: 1px solid #c0c0c0;
width: 350px;
height: 250px;
} }
.login-code-img { .login-code-img {
height: 38px; height: 38px;
+110
View File
@@ -0,0 +1,110 @@
<template>
<div style="width: 100%; height: 100%">
<div id="placeholder"></div>
</div>
</template>
<script>
import { getOnlyoffice, saveOnlyOfficeFile } from "@/api/onlyoffice/onlyoffice";
import { setToken } from "@/utils/auth";
import store from "@/store";
import axios from "axios";
export default {
props: [],
data() {
return {
config: {},
flag: 0,
userId: store.getters.userId,
websock: null,
};
},
destroyed() {
//页面销毁时关闭ws连接
if (this.websock) {
this.websock.close(); // 关闭websocket
}
},
methods: {
getConfig(id) {
let edit = "edit";
if (this.flag == 0) {
edit = "view";
} else {
edit = "edit";
}
axios
.get(
`http://121.40.189.20:9090/onlyOfficeConfig/${edit}/${id}/${this.userId}/desktop/true/tiaojieprod`
)
.then((res) => {
this.config = res.data;
this.config.editorConfig.callbackUrl = this.config.editorConfig.callbackUrl + "/" + id;
console.log(this.config,"OOOOOOOOOOOOOOOOOOOOOOOOOOO");
// this.config.callbackUrl = this.config.callbackUrl + `/${this.userId}`;
var docEditor = new DocsAPI.DocEditor("placeholder", this.config);
});
},
//初始化weosocket
initWebSocket() {
if (typeof WebSocket === "undefined") {
alert("您的浏览器不支持WebSocket");
return false;
}
const wsuri = `ws://121.40.189.20:9090/api/websocket/${this.userId}`; // websocket地址
this.websock = new WebSocket(wsuri);
this.websock.onopen = this.websocketonopen;
this.websock.onmessage = this.websocketonmessage;
this.websock.onerror = this.websocketonerror;
this.websock.onclose = this.websocketclose;
},
//连接成功
websocketonopen() {
console.log("WebSocket连接成功");
},
//接收后端返回的数据
websocketonmessage(e) {
let dataJson = e.data;
if (dataJson != "conn_success") {
dataJson = JSON.parse(dataJson);
}
if (dataJson.caseId) {
saveOnlyOfficeFile({
caseAppliId: Number(dataJson.caseId),
annexName: dataJson.fileName,
annexPath: dataJson.filePath,
onlyOfficeFileId: dataJson.fileId,
}).then((res) => {
this.websock.send();
});
}
// 在这里使用后端返回的数据,对数据进行处理渲染
},
//连接建立失败重连
websocketonerror(e) {
console.log(`连接失败的信息:`, e);
this.initWebSocket(); // 连接失败后尝试重新连接
},
//关闭连接
websocketclose(e) {
console.log("断开连接", e);
},
/**是否从视频会议跳转,是处理token */
async getToken() {
setToken(this.$route.query.token);
},
},
async mounted() {
if (this.$route.query.token) {
await this.getToken();
}
let id = this.$route.query.id;
this.flag = this.$route.query.flag;
this.getConfig(id);
this.initWebSocket();
},
watch: {},
};
</script>
<style lang="scss" scoped></style>
+145 -26
View File
@@ -1,9 +1,13 @@
<template> <template>
<div class="register"> <div class="register">
<div class="leftIcon">
<div class="Icon"></div>
<div>智慧调解系统</div>
</div>
<el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form"> <el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form">
<h3 class="title">若依后台管理系统</h3> <h3 class="title">智慧调解系统注册</h3>
<el-form-item prop="userName"> <el-form-item prop="userName">
<el-input v-model="registerForm.userName" type="text" auto-complete="off" placeholder="账号"> <el-input v-model="registerForm.userName" type="text" auto-complete="off" @blur="changeInput" placeholder="账号">
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" /> <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
</el-input> </el-input>
</el-form-item> </el-form-item>
@@ -19,15 +23,45 @@
<svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" /> <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="nationality">
<el-select v-model="registerForm.nationality" placeholder="请选择国籍" auto-complete="off" style="width: 100%;">
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
<el-option v-for="item in nationalityList" :key="item.id" :label="item.value" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="idType">
<el-select v-model="registerForm.idType" placeholder="证件类型" auto-complete="off" style="width: 100%;">
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
<el-option v-for="item in idTypeList" :key="Number(item.dictValue)" :label="item.dictLabel" :value="Number(item.dictValue)">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="identityNo"> <el-form-item prop="identityNo">
<el-input v-model="registerForm.identityNo" type="text" auto-complete="off" placeholder="身份证号码"> <el-input v-model="registerForm.identityNo" type="text" auto-complete="off" placeholder="证件号码">
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
</el-input>
</el-form-item>
<el-form-item prop="identityNo" v-if="registerForm.idType === 1">
<el-input v-model="registerForm.identityNo" type="text" auto-complete="off" placeholder="护照号码">
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" /> <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="email"> <el-form-item prop="email">
<el-input v-model="registerForm.email" type="text" auto-complete="off" placeholder="邮箱"> <el-input v-model="registerForm.email" type="text" auto-complete="off" placeholder="邮箱" style="width:63%;">
<svg-icon slot="prefix" icon-class="email" class="el-input__icon input-icon" /> <svg-icon slot="prefix" icon-class="email" class="el-input__icon input-icon" />
</el-input> </el-input>
<div class="register-code">
<el-button type="primary" :disabled="emailDisabled" @click="getEmailNumber(registerForm.email)">{{ emailText
}}</el-button>
</div>
</el-form-item>
<el-form-item prop="emailVerifyCode">
<el-input v-model="registerForm.emailVerifyCode" type="text" auto-complete="off" placeholder="邮箱验证码">
<svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
</el-input>
</el-form-item> </el-form-item>
<el-form-item prop="name"> <el-form-item prop="name">
<el-input v-model="registerForm.name" type="text" auto-complete="off" placeholder="用户名"> <el-input v-model="registerForm.name" type="text" auto-complete="off" placeholder="用户名">
@@ -77,14 +111,14 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<!-- 底部 --> <!-- 底部 -->
<div class="el-register-footer"> <!-- <div class="el-register-footer">
<span>Copyright © 2018-2023 ruoyi.vip All Rights Reserved.</span> <span>Copyright © 2018-2023 ruoyi.vip All Rights Reserved.</span>
</div> </div> -->
</div> </div>
</template> </template>
<script> <script>
import { getCodeImg, register, sendCode, wxregister } from "@/api/login"; import { getCodeImg, register, sendCode, wxregister,verifyUserName,getIdType,sendEmailCode } from "@/api/login";
import { listRoleNotoken } from "@/api/system/role.js" import { listRoleNotoken } from "@/api/system/role.js"
export default { export default {
name: "Register", name: "Register",
@@ -98,7 +132,9 @@ export default {
}; };
return { return {
codeText: "发送验证码", codeText: "发送验证码",
emailText:"发送验证码",
codeDisabled: false, codeDisabled: false,
emailDisabled:false,
codeUrl: "", codeUrl: "",
registerForm: { registerForm: {
userName: "", userName: "",
@@ -107,11 +143,21 @@ export default {
confirmPassword: "", confirmPassword: "",
code: "", code: "",
uuid: "", uuid: "",
nationality:0,
idType:0,
identityNo:"",
name:""
}, },
registerRules: { registerRules: {
username: [ userName: [
{ required: true, trigger: "blur", message: "请输入您的账号" }, { required: true, trigger: "blur", message: "请输入您的账号" },
{ min: 2, max: 20, message: '用户账号长度必须介于 2 和 20 之间', trigger: 'blur' } { min: 2, max: 20, message: '用户账号长度必须介于 2 和 20 之间', trigger: 'blur' },
{
pattern:
/^[0-9a-zA-Z]*$/g,
message: '只能输入英文或者数字',
trigger: 'blur',
},
], ],
password: [ password: [
{ required: true, trigger: "blur", message: "请输入您的密码" }, { required: true, trigger: "blur", message: "请输入您的密码" },
@@ -125,18 +171,18 @@ export default {
identityNo: [ identityNo: [
{ {
required: true, required: true,
message: '被申请人身份证号不能为空', message: '证件号码不能为空',
trigger: 'blur',
},
{
pattern:
/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
message: '请输入正确的身份证号码',
trigger: 'blur', trigger: 'blur',
}, },
// {
// pattern:
// /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
// message: '请输入正确的身份证号码',
// trigger: 'blur',
// },
], ],
email: [ email: [
{ required: true, trigger: "blur", message: "请再次输入您的密码" }, { required: true, trigger: "blur", message: "请输入您的邮箱" },
{ {
pattern: pattern:
/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/, /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/,
@@ -163,24 +209,59 @@ export default {
}, },
], ],
verifyCode: [ verifyCode: [
{ required: true, trigger: "blur", message: "请输入验证码" }, { required: true, trigger: "blur", message: "请输入短信验证码" },
],
emailVerifyCode:[
{ required: true, trigger: "blur", message: "请输入邮箱验证码" },
],
idType: [
{ required: true, trigger: "blur", message: "请选择证件类型" },
],
nationality: [
{ required: true, trigger: "blur", message: "请选择国籍" },
], ],
}, },
loading: false, loading: false,
captchaEnabled: true, captchaEnabled: true,
roleList: [] roleList: [],
nationalityList:[
{
value:'境内',
id:0
},
{
value:'境外',
id:1
}
],
idTypeList:[
]
}; };
}, },
created() { created() {
this.getCode(); this.getCode();
this.getListRole(); this.getListRole();
this.getIdTypeFn();
this.registerForm.identityNo = this.$route.query.identityNo;
this.registerForm.name = this.$route.query.name;
console.log(this.$route.query.identityNo)
}, },
methods: { methods: {
changeInput(){
verifyUserName({userName:this.registerForm.userName})
},
/** 获取证件类型 */
getIdTypeFn(){
getIdType().then(res=>{
this.idTypeList = res.data;
})
},
/**获取角色 */ /**获取角色 */
getListRole() { getListRole() {
listRoleNotoken().then(res => { listRoleNotoken().then(res => {
console.log(res, "PPPPPPPPPPPPPPPPPPPPPPPPPPPP"); const roleList = res.data.filter((item) => item.roleName == '申请人' || item.roleName == '被申请人');
this.roleList = res.data; this.roleList = roleList;
}) })
}, },
getCode() { getCode() {
@@ -197,8 +278,8 @@ export default {
if (valid) { if (valid) {
this.loading = true; this.loading = true;
wxregister(this.registerForm).then(res => { wxregister(this.registerForm).then(res => {
const username = this.registerForm.username; const userName = this.registerForm.userName;
this.$alert("<font color='red'>恭喜你,您的账号 " + username + " 注册成功!</font>", '系统提示', { this.$alert("<font color='red'>恭喜你,您的账号 " + userName + " 注册成功!</font>", '系统提示', {
dangerouslyUseHTMLString: true, dangerouslyUseHTMLString: true,
type: 'success' type: 'success'
}).then(() => { }).then(() => {
@@ -237,6 +318,28 @@ export default {
}) })
}, },
// 获取邮箱验证码
getEmailNumber(emailValue){
sendEmailCode({email:emailValue}).then(res=>{
if(res.code != 200){
this.$modal.msgError(res.msg);
return
}else{
this.$modal.msgSuccess('发送成功');
let time = 60;
let timer = setInterval(() => {
time--;
this.emailDisabled = true;
this.emailText = time + 's重试'
if (time == 0) {
clearInterval(timer)
this.emailText = '发送验证码'
this.emailDisabled = false;
}
}, 1000)
}
})
}
} }
}; };
</script> </script>
@@ -246,9 +349,25 @@ export default {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
height: 100%; // height: 100%;
background-image: url("../assets/images/login-background.jpg"); // background-image: url("../assets/images/login-background.jpg");
background-image: url("../assets/images/login.svg");
background-size: cover; background-size: cover;
.leftIcon {
position: relative;
width: 200px;
height: 155px;
top:-300px;
left: -300px;
.Icon {
width: 100px;
height: 105px;
background-image: url("../assets/images/logos.png");
background-size: cover;
}
}
} }
.title { .title {
@@ -261,7 +380,7 @@ export default {
border-radius: 6px; border-radius: 6px;
background: #ffffff; background: #ffffff;
width: 400px; width: 400px;
height: 90%; height: 80%;
padding: 25px 25px 5px 25px; padding: 25px 25px 5px 25px;
// .el-input { // .el-input {
+7
View File
@@ -189,6 +189,13 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row>
<el-col :span="12">
<el-form-item label="证件号码" prop="idCard">
<el-input v-model="form.idCard" placeholder="请输入证件号码" maxlength="18" />
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="备注"> <el-form-item label="备注">
+79
View File
@@ -0,0 +1,79 @@
<template>
<div>
<el-form :model="dynamicValidateForm" ref="dynamicValidateForm" label-width="100px" class="demo-dynamic">
<el-form-item prop="email" label="邮箱" :rules="[
{ required: true, message: '请输入邮箱地址', trigger: 'blur' },
{ type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }
]">
<el-input v-model="dynamicValidateForm.email"></el-input>
</el-form-item>
<div v-for="(item, index) in dynamicValidateForm.domains" :key="item.key">
<el-form-item :label="'域名' + index" :prop="'domains.' + index + '.value.name'" :rules="{
required: true, message: '域名不能为空', trigger: 'blur'
}">
<el-input v-model="item.value.name"></el-input>
</el-form-item>
<el-form-item :label="'链接' + index" :prop="'domains.' + index + '.value.url'" :rules="{
required: true, message: '链接不能为空', trigger: 'blur'
}">
<el-input v-model="item.value.url"></el-input>
</el-form-item>
<el-button @click.prevent="removeDomain(item)">删除</el-button>
</div>
<el-form-item>
<el-button type="primary" @click="submitForm('dynamicValidateForm')">提交</el-button>
<el-button @click="addDomain">新增域名</el-button>
<el-button @click="resetForm('dynamicValidateForm')">重置</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
export default {
data() {
return {
dynamicValidateForm: {
domains: [{
value: {
name: "",
url: ""
}
}],
email: ''
},
data: { "applicant": { "id": 123, "caseAppliId": 5453163805296176, "userId": null, "applicantDeptId": null, "code": null, "compLegalPerson": null, "roleType": 1, "groupOrder": 2, "operatorFlag": 0, "phone": "17691225077", "email": "1129801211@qq.com", "name": "白贵勇", "home": "西安", "address": "西安", "idCard": "612429198708193335", "idType": null, "nationality": null, "birth": null, "sex": null, "resName": null }, "applicantAgent": null, "res": { "id": 124, "caseAppliId": 5453163805296176, "userId": null, "applicantDeptId": null, "code": null, "compLegalPerson": null, "roleType": 3, "groupOrder": 2, "operatorFlag": 0, "phone": "18792927508", "email": "1322446236@qq.com", "name": "王琼", "home": "西安", "address": "西安", "idCard": "14050219970814622X", "idType": null, "nationality": null, "birth": null, "sex": null, "resName": null }, "resAgent": null }
};
},
methods: {
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
alert('submit!');
console.log(this.dynamicValidateForm);
} else {
console.log('error submit!!');
return false;
}
});
},
resetForm(formName) {
this.$refs[formName].resetFields();
},
removeDomain(item) {
var index = this.dynamicValidateForm.domains.indexOf(item)
if (index !== -1) {
this.dynamicValidateForm.domains.splice(index, 1)
}
},
addDomain() {
this.dynamicValidateForm.domains.push({
value: {
name: "",
key: Date.now()
},
});
}
}
}
</script>
+4 -3
View File
@@ -11,11 +11,11 @@ const name = process.env.VUE_APP_TITLE || '调解系统' // 网页标题
const port = process.env.port || process.env.npm_config_port || 80 // 端口 const port = process.env.port || process.env.npm_config_port || 80 // 端口
// const API = 'http://121.40.189.20:9001' //生产 // const API = 'http://121.40.189.20:7001' //生产
const API = 'http://121.40.189.20:6001' //测试 const API = 'http://121.40.189.20:6001' //测试
// const API = 'http://192.168.3.18:6001' //B // const API = 'http://192.168.3.18:6001' //B
// const API = 'http://172.16.0.237:6001' //Q // const API = 'http://172.16.0.237:6001' //Q
// const API = 'http://172.16.1.43:6001' //w // const API = 'http://172.16.1.26:6001' //w
// vue.config.js 配置说明 // vue.config.js 配置说明
//官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions //官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions
@@ -41,6 +41,8 @@ module.exports = {
proxy: { proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy // detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: { [process.env.VUE_APP_BASE_API]: {
// target: `http://192.168.3.77:8080`,
// target: `http://121.40.189.20:9001`,
target: API, target: API,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
@@ -59,7 +61,6 @@ module.exports = {
}, },
configureWebpack: { configureWebpack: {
name: name, name: name,
devtool: '#eval-source-map',
resolve: { resolve: {
alias: { alias: {
'@': resolve('src') '@': resolve('src')