Compare commits

...

123 Commits

Author SHA1 Message Date
liu.xiaofeng@ebiz-digits.com
ba94179c7f 问题件去掉银行卡照片 2024-01-12 21:07:53 +08:00
liu.xiaofeng@ebiz-digits.com
c164e663a6 预览文件去掉延时 2024-01-12 16:19:15 +08:00
liu.xiaofeng@ebiz-digits.com
9218460588 代理人签名去掉disabled 2024-01-12 15:49:09 +08:00
liu.xiaofeng@ebiz-digits.com
edac860b33 增加代理人阅读签字文件逻辑判断 2024-01-12 15:46:05 +08:00
liu.xiaofeng@ebiz-digits.com
2dbe944d4a 增加代理人阅读签字文件逻辑判断 2024-01-12 15:40:08 +08:00
liu.xiaofeng@ebiz-digits.com
8f2403e8b1 增加代理人阅读签字文件逻辑判断 2024-01-12 14:40:59 +08:00
liu.xiaofeng@ebiz-digits.com
4fa3488090 微信分享地址修改 2024-01-12 13:33:00 +08:00
liu.xiaofeng@ebiz-digits.com
8445ba071c 微信分享修改 2024-01-12 13:02:25 +08:00
liu.xiaofeng@ebiz-digits.com
bbc6242a7a 阅读文件地址拼接动态的域名地址 2024-01-11 23:10:00 +08:00
liu.xiaofeng@ebiz-digits.com
2e7e2d4146 接口对接方式加密 2024-01-11 22:06:11 +08:00
liu.xiaofeng@ebiz-digits.com
5d4dc021d9 跳转地址修改以及文件阅读市场改为10秒 2024-01-11 22:00:22 +08:00
liu.xiaofeng@ebiz-digits.com
cb067f5f1a 去掉本地签名文件夹 2024-01-11 21:57:23 +08:00
liu.xiaofeng@ebiz-digits.com
e65c297ca9 本地存储微信分享链接参数 2024-01-11 14:11:32 +08:00
liu.xiaofeng@ebiz-digits.com
6f01cc72e7 微信环境修改重签逻辑 2024-01-11 14:09:45 +08:00
liu.xiaofeng@ebiz-digits.com
1d75027332 阅读文件增加http文件地址的判断 2024-01-11 14:07:37 +08:00
liu.xiaofeng@ebiz-digits.com
5dc278aba3 微信环境投被保人签名默认隐藏 2024-01-11 14:07:08 +08:00
liu.xiaofeng@ebiz-digits.com
d37d91e587 投保人签字与被保人签字信息默认设置为空 2024-01-11 14:05:20 +08:00
liu.xiaofeng@ebiz-digits.com
7ffa52b175 签字确认页面按钮大小调整 2024-01-11 14:04:01 +08:00
liu.xiaofeng@ebiz-digits.com
e20dace024 合并签字页面,“文件阅读”pdf页面,点击【关闭】按钮,标题显示“投保单列表” 2024-01-11 14:03:57 +08:00
liu.xiaofeng@ebiz-digits.com
2717db913d 合并签字,签名页面,未签名【完成阅读并签署】按钮,应置灰显示不可点击 2024-01-11 14:03:54 +08:00
liu.xiaofeng@ebiz-digits.com
d9171c7e7c 合并签字页面,“文件阅读”pdf页面,点击【关闭】按钮,标题显示“投保单列表” 2024-01-11 14:03:49 +08:00
liu.xiaofeng@ebiz-digits.com
5f834ed26e 阅读文件页面样式调整 2024-01-11 14:03:44 +08:00
liu.xiaofeng@ebiz-digits.com
36a97af0ef 阅读文件页面和第三方签字页面字体大小调整 2024-01-11 14:03:10 +08:00
liu.xiaofeng@ebiz-digits.com
d5302ebe9b 签字页面字体大小调整 2024-01-11 14:03:05 +08:00
liu.xiaofeng@ebiz-digits.com
9959ffb99a 阅读文件页面以及签字页面字体大小调整 2024-01-11 14:02:59 +08:00
liu.xiaofeng@ebiz-digits.com
ae9389989e 签字确认页面字体大小调整 2024-01-11 14:02:54 +08:00
liu.xiaofeng@ebiz-digits.com
d689e9ca52 签字确认页面字体大小调整 2024-01-11 14:02:50 +08:00
liu.xiaofeng@ebiz-digits.com
1b52c69865 签字确认页面字体大小调整 2024-01-11 14:02:45 +08:00
liu.xiaofeng@ebiz-digits.com
3c8e8c13b6 跳转签名之前本地存储订单号数据 2024-01-11 14:02:42 +08:00
liu.xiaofeng@ebiz-digits.com
c68d0e31a3 合并签字页面-投保人签字页面输入监护人姓名 2024-01-11 14:02:37 +08:00
liu.xiaofeng@ebiz-digits.com
e28447f510 被保人小于18岁的时候点击签名增加逻辑让监护人填写监护人姓名在签名的时候展示的监护人填写的名字 2024-01-11 14:02:16 +08:00
liu.xiaofeng@ebiz-digits.com
091fae62bc 签字完成之后页面跳转地址动态判断 2024-01-11 14:01:31 +08:00
liu.xiaofeng@ebiz-digits.com
6bd20a7312 修改分享链接地址 2024-01-11 14:01:27 +08:00
liu.xiaofeng@ebiz-digits.com
a00a732589 增加环境判断是否保存分享链接地址 2024-01-11 14:01:23 +08:00
liu.xiaofeng@ebiz-digits.com
da400985cb 签字确认页面增加分享地址的存储数据 2024-01-11 14:01:08 +08:00
liu.xiaofeng@ebiz-digits.com
507fe98e27 文件全部阅读但是没有签字的时候点击阅读文件增加逻辑判断使其跳转签字页面 2024-01-11 14:01:04 +08:00
liu.xiaofeng@ebiz-digits.com
43395923f6 更新一下最新签字文件代码 2024-01-11 14:01:00 +08:00
liu.xiaofeng@ebiz-digits.com
7ff3024390 ca签字获取被保人地址修改 2024-01-11 14:00:54 +08:00
liu.xiaofeng@ebiz-digits.com
a6dda21589 被保险人年龄判断是否自己签名 2024-01-11 14:00:49 +08:00
liu.xiaofeng@ebiz-digits.com
e253b38fd7 被保险人年龄判断是否自己签名 2024-01-11 14:00:44 +08:00
liu.xiaofeng@ebiz-digits.com
cb98c30ff0 根据orderDetail接口返回的数据来判断产品是否需要抄录 2024-01-11 14:00:38 +08:00
liu.xiaofeng@ebiz-digits.com
80beac7078 增加抄录的代码逻辑判断被保人不需要抄录2 2024-01-11 13:56:15 +08:00
liu.xiaofeng@ebiz-digits.com
ee6ba8b5a5 增加抄录的代码逻辑判断被保人不需要抄录1 2024-01-11 13:56:11 +08:00
liu.xiaofeng@ebiz-digits.com
d7042a8b96 增加抄录的代码逻辑判断被保人不需要抄录 2024-01-11 13:56:07 +08:00
liu.xiaofeng@ebiz-digits.com
8a5901fdc9 修改签名页面话术 2024-01-11 13:56:01 +08:00
liu.xiaofeng@ebiz-digits.com
ec82a0efda 【分享签名】、【立即阅读签名】 提示语修改1 2024-01-11 13:55:57 +08:00
liu.xiaofeng@ebiz-digits.com
b7a6df0a24 【分享签名】、【立即阅读签名】 提示语修改 2024-01-11 13:55:53 +08:00
liu.xiaofeng@ebiz-digits.com
3fd5a44080 签字页面区分投保人和被保人 2024-01-11 13:55:49 +08:00
liu.xiaofeng@ebiz-digits.com
494136d4a6 签字页面话术修改 2024-01-11 13:55:43 +08:00
liu.xiaofeng@ebiz-digits.com
874ba80d6b 合并签字页面基础逻辑问题修改 2024-01-11 13:55:37 +08:00
liu.xiaofeng@ebiz-digits.com
4a311d5b07 阅读文件页面和签字文件页面增加页面顶部左侧按钮操作逻辑 2024-01-11 13:55:33 +08:00
liu.xiaofeng@ebiz-digits.com
09956c6b4d 合并签字功能调整 2024-01-11 13:55:29 +08:00
liu.xiaofeng@ebiz-digits.com
755730d514 阅读文件点击上一步以及点击顶部导航条逻辑处理 2024-01-11 13:55:24 +08:00
liu.xiaofeng@ebiz-digits.com
fa91abdca7 如果已经存在pdfh5 结构在点击下一步的时候先销毁节点 再加载4 2024-01-11 13:55:19 +08:00
liu.xiaofeng@ebiz-digits.com
ad653e50b5 阅读文件抄录的时候变更接口入参字段orderType为SIGN_COPY 2024-01-11 13:55:14 +08:00
liu.xiaofeng@ebiz-digits.com
32a84be33e 抄录和签字文件跳转地址修改为本地 2024-01-11 13:55:09 +08:00
liu.xiaofeng@ebiz-digits.com
9c582b75d1 签名地址跳转修改 2024-01-11 13:55:04 +08:00
liu.xiaofeng@ebiz-digits.com
a4e86aa113 合并签名存储信息方式有vuex改为localstorage 2024-01-11 13:54:59 +08:00
liu.xiaofeng@ebiz-digits.com
3ec0ba7ae4 修改签字确认页面文件展示的字体样式
修改签字页面的文件展示的字体颜色
抄录页面增加关闭重置大小的方法
2024-01-11 13:54:54 +08:00
liu.xiaofeng@ebiz-digits.com
755d258450 重签逻辑修改 以及重签页面样式调整 2024-01-11 13:54:50 +08:00
liu.xiaofeng@ebiz-digits.com
e57198774f 编译ca压缩的js文件 2024-01-11 13:54:07 +08:00
liu.xiaofeng@ebiz-digits.com
344b61199f 抄录ca配置修改参数 2024-01-11 13:53:59 +08:00
liu.xiaofeng@ebiz-digits.com
2c08e65d60 抄录ca配置修改参数 2024-01-11 13:53:54 +08:00
liu.xiaofeng@ebiz-digits.com
69dcee67e3 签字提交的时候提交签名图片的base64字符串 2024-01-11 13:51:30 +08:00
liu.xiaofeng@ebiz-digits.com
9b1e3a8d05 抄录文件判断 不一定最后一个文件需要抄录 2024-01-11 13:51:25 +08:00
liu.xiaofeng@ebiz-digits.com
90ee2ec5f5 将被保人文件数组排序 2024-01-11 13:51:20 +08:00
liu.xiaofeng@ebiz-digits.com
a258ce446e 签字位置偏移量设置为0 调整银保代理人电子化合同签署的关键字信息 2024-01-11 13:51:12 +08:00
liu.xiaofeng@ebiz-digits.com
70e9bbf03b 完善阅读文件代码逻辑 2024-01-11 13:51:08 +08:00
liu.xiaofeng@ebiz-digits.com
d6235d5655 完善投保签名确认页面以及投保签字的关键字区分与投保人被保人和受益人 2024-01-11 13:51:02 +08:00
liu.xiaofeng@ebiz-digits.com
cd2a880d91 分享的页面初始化的时候进行人脸识别 2024-01-11 13:50:57 +08:00
liu.xiaofeng@ebiz-digits.com
131bf1ed45 用户点击指定的文件名称,页面跳转至对应的“文件阅读”pdf页面 2024-01-11 13:39:29 +08:00
liu.xiaofeng@ebiz-digits.com
81febb9712 签字确认页面展示信息调整 展示样式调整
合并签字接口入参调整
2024-01-11 13:39:23 +08:00
liu.xiaofeng@ebiz-digits.com
03505a3f5e 抄录按钮显示状态增加判断 如果抄录点击取消则设置为未抄录 2024-01-11 13:39:18 +08:00
liu.xiaofeng@ebiz-digits.com
6db394d79e 处理阅读文件点击下一步时候时逻辑判断
以及新增签字页面并编辑基础代码逻辑
2024-01-11 13:39:13 +08:00
liu.xiaofeng@ebiz-digits.com
20f6ee1612 合并签名新增签字页面 2024-01-11 13:39:07 +08:00
liu.xiaofeng@ebiz-digits.com
f4394e2fec 抄录功能编写代码并做与签字功能区分 2024-01-11 13:39:02 +08:00
liu.xiaofeng@ebiz-digits.com
c55476e6d1 不同文件对应不同的简写名称 2024-01-11 13:38:57 +08:00
liu.xiaofeng@ebiz-digits.com
d77aeaa3d6 签字确认页面调整按钮样式以及显示文字修改以及阅读文件的状态标识更换 2024-01-11 13:38:52 +08:00
liu.xiaofeng@ebiz-digits.com
5c880bf648 增加阅读文件点击顶部导航得代码操作逻辑 2024-01-11 13:38:47 +08:00
liu.xiaofeng@ebiz-digits.com
4e57b1342b 完善阅读文件代码 2024-01-11 13:38:44 +08:00
liu.xiaofeng@ebiz-digits.com
b3ba5222b9 页面底部按钮区分是否是第一个文件并增加下一步按钮的基础代码功能 2024-01-11 13:38:40 +08:00
liu.xiaofeng@ebiz-digits.com
17c74c328a 合并签字阅读文件页面顶部导航功能编写 2024-01-11 13:38:35 +08:00
liu.xiaofeng@ebiz-digits.com
c3d6cf6752 年年丰和祥利B款产品增加抄录1
(cherry picked from commit 1b81c044ca)
2024-01-11 13:38:25 +08:00
liu.xiaofeng@ebiz-digits.com
c2e1e6b3c7 调整阅读文件页面基础代码逻辑 2024-01-11 13:34:24 +08:00
liu.xiaofeng@ebiz-digits.com
c6948a98ca 新增阅读文件页面 2024-01-11 13:34:19 +08:00
liu.xiaofeng@ebiz-digits.com
30060e81aa 两款短期险调整保单形式 2024-01-11 13:27:28 +08:00
liu.xiaofeng@ebiz-digits.com
de7ade0173 暂时去掉调用保存接口 2024-01-11 13:26:48 +08:00
liu.xiaofeng@ebiz-digits.com
99ad90fcf7 暂时去掉调用保存接口 2024-01-11 13:26:40 +08:00
liu.xiaofeng@ebiz-digits.com
5682d1a01f 暂时去掉调用保存接口 2024-01-11 13:26:36 +08:00
liu.xiaofeng@ebiz-digits.com
2cdafbd761 在金掌柜附件管理页面,取消所有渠道“银行卡影像上传”功能,且银行卡影像不再传核心。 2024-01-11 13:26:32 +08:00
liu.xiaofeng@ebiz-digits.com
ee1373ff84 在“投保人信息录入”页面,删除现有的【保单形式】字段及选项
点击【下一步】按钮将不在进行【保单形式】是否选择的判断
在现有“选择产品(已选择)”页面,增加【保单形式】字段及选项
2024-01-11 13:26:27 +08:00
liu.xiaofeng@ebiz-digits.com
13543d159b GBC富安一生产品利益展示字段加单位 2024-01-11 13:26:06 +08:00
liu.xiaofeng@ebiz-digits.com
b28890850e 首页去掉下拉刷新 2024-01-11 13:25:46 +08:00
liu.xiaofeng@ebiz-digits.com
bdf06b777a 首页怎么判断只有登录的时候 调取项目列表接口 2024-01-11 13:25:41 +08:00
liu.xiaofeng@ebiz-digits.com
a5431a8ca9 项目详情和客户编辑接口对接 2024-01-11 13:25:37 +08:00
liu.xiaofeng@ebiz-digits.com
2328efe212 首页小组编码字段修改 电投投保人页面保存接口入参增加teamCode 2024-01-11 13:25:31 +08:00
liu.xiaofeng@ebiz-digits.com
0a0bac86b0 编辑客户信息页面基本功能编写 2024-01-11 13:25:26 +08:00
liu.xiaofeng@ebiz-digits.com
6ddf7cf4aa 首页选择项目绑定的项目改为绑定小组 2024-01-11 13:25:21 +08:00
liu.xiaofeng@ebiz-digits.com
cec63933d7 数据看板页面以及产品列表页面和编辑客户信息页面基础代码编写 2024-01-11 13:25:16 +08:00
liu.xiaofeng@ebiz-digits.com
7a9a0767f1 投保人页面的项目信息如果有问题的话请求接口获取详细信息 2024-01-11 13:25:10 +08:00
liu.xiaofeng@ebiz-digits.com
b5337a4c30 订单详情的部门/科室字段增加判断动态控制展示隐藏 2024-01-11 13:25:05 +08:00
liu.xiaofeng@ebiz-digits.com
c5f3e0be9f 订单详情的部门/科室字段对接 2024-01-11 13:25:01 +08:00
liu.xiaofeng@ebiz-digits.com
98104e9706 订单详情的录单人工号和出单人工号字段对接 2024-01-11 13:24:57 +08:00
liu.xiaofeng@ebiz-digits.com
385c2ec58e 投保单详情增加项目信息字段展示内容 2024-01-11 13:24:52 +08:00
liu.xiaofeng@ebiz-digits.com
ea4e27a62c 建议书列表点击新增和编辑功能存储branchType字段用于显示GBC的项目信息 2024-01-11 13:24:48 +08:00
liu.xiaofeng@ebiz-digits.com
732ff8ab71 订单列表点击编辑功能存储branchType字段用于显示GBC的项目信息 2024-01-11 13:24:42 +08:00
liu.xiaofeng@ebiz-digits.com
d588db380f 订单详情添加项目信息模块 2024-01-11 13:24:36 +08:00
liu.xiaofeng@ebiz-digits.com
881c580c94 项目详情数据看板上半部分基础代码编辑 2024-01-11 13:24:31 +08:00
liu.xiaofeng@ebiz-digits.com
76334ae38d 首页展示的项目列表数据后面增加显示小组名称 2024-01-11 13:24:24 +08:00
liu.xiaofeng@ebiz-digits.com
22214ab765 GBC项目列表页面基础功能开发 组件编写 客户列表页面基础功能开发 组件编写 2024-01-11 13:24:19 +08:00
liu.xiaofeng@ebiz-digits.com
2b93581562 订单列表页面点击新增保留本地存储的branchType字段 2024-01-11 13:24:15 +08:00
liu.xiaofeng@ebiz-digits.com
c4dfd890a1 数据存储由isFrom修改为branchType 2024-01-11 13:24:07 +08:00
liu.xiaofeng@ebiz-digits.com
d0edf75aa9 首页增加方法判断当前是否是GBC渠道 2024-01-11 13:24:02 +08:00
liu.xiaofeng@ebiz-digits.com
eeebd1cf39 修改订单列表点击新增订单方法逻辑 2024-01-11 13:23:57 +08:00
liu.xiaofeng@ebiz-digits.com
f493629a1c isFrom 由sessionstorage 改为localStorage 2024-01-11 13:23:51 +08:00
liu.xiaofeng@ebiz-digits.com
c9fd0c0c69 GBC页面样式调整功能联调 2024-01-11 13:23:45 +08:00
liu.xiaofeng@ebiz-digits.com
4c18da414a 投保人页面获取代理人渠道信息 2024-01-11 13:23:40 +08:00
liu.xiaofeng@ebiz-digits.com
6c25eaa286 GBC功能开发 2024-01-11 13:23:32 +08:00
liu.xiaofeng@ebiz-digits.com
07e799e20b 首页样式修改 2024-01-11 13:23:28 +08:00
liu.xiaofeng@ebiz-digits.com
ace9714ae3 首页调用获取代理人项目列表接口 2024-01-11 13:23:22 +08:00
liu.xiaofeng@ebiz-digits.com
142116711c 新增查询登录人所属项目列表接口并调整首页代码逻辑 2024-01-11 13:23:18 +08:00
liu.xiaofeng@ebiz-digits.com
069aa9e193 GBC首页页面基础代码编写 2024-01-11 13:23:08 +08:00
liu.xiaofeng@ebiz-digits.com
f34658b3e3 GBC新增首页路由和文件 2024-01-11 13:18:40 +08:00
40 changed files with 3184 additions and 1086 deletions

91
src/api/GBC/GBC.js Normal file
View File

@@ -0,0 +1,91 @@
import request from '@/assets/js/utils/request'
import getUrl from '@/assets/js/utils/get-url'
// 查询登录人所属项目列表
export function gbcProjectList(data) {
return request({
url: getUrl('/agent/gbc/project/list', 1),
method: 'post',
data
})
}
// 查询项目详情
export function gbcProjectDetail(data) {
return request({
url: getUrl('/agent/gbc/project/detail', 1),
method: 'post',
data
})
}
// 此接口是后端用于将GBC项目信息同步至登录用户信息即UserModel中的接口前端在选中项目后需要调用此接口。
export function gbcProjectConfirm(data) {
return request({
url: getUrl('/agent/gbc/project/confirm', 1),
method: 'post',
data
})
}
// GBC获取首页轮播图和上头条内容
export function homeConfigGBC(data) {
return request({
url: getUrl('/customer/agent/homeConfigGBC', 1,3),
method: 'get',
data
})
}
// 根据项目编码获取科室信息
export function getDepartmentByProjectNo(data) {
return request({
url: getUrl('/agent/gbc/project/getDepartmentByProjectNo', 1),
method: 'post',
data
})
}
// 按年份查询登录人所属项目列表
export function getGBCprojectlistByYear(data) {
return request({
url: getUrl('/agent/gbc/project/listByYear', 1),
method: 'post',
data
})
}
// 查询项目下的客户列表
export function getGBCappntlist(data) {
return request({
url: getUrl('/sale/gbc/appnt/list', 1),
method: 'post',
data
})
}
// 查询项目下的客户列表
export function getGBCappntDetail(data) {
return request({
url: getUrl('/sale/gbc/appnt/detail', 1),
method: 'post',
data
})
}
// 保存客户类型
export function getGBCappntTypeSave(data) {
return request({
url: getUrl('/sale/gbc/appnt/type/save', 1),
method: 'post',
data
})
}
// 保存客户沟通记录
export function getGBCappntConnectSave(data) {
return request({
url: getUrl('/sale/gbc/appnt/connect/save', 1),
method: 'post',
data
})
}

View File

@@ -381,3 +381,12 @@ export function appntIsAgent(data) {
data
})
}
export function saveOrderType(data) {
return request({
url: getUrl('/sale/order/saveOrderType', 1),
method: 'post',
data
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1002 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -3887,6 +3887,10 @@ export default {
{
code: "riskCost_M",
label: "元"
},
{
code: "GFRS_M0087__cashValue",
label: "元"
}
],
// 卡单与短期险重新投保选择职业类别时,两个模块职业类型数据的排序不同,创建这个数据字典,用于在选择职业类别时,作为一个参数传入组件,

View File

@@ -0,0 +1,78 @@
<template>
<div class="index">
<div class="navigator-item" v-for="(item, index) in navigatorItems" :key="index">
<span class="title" :class="{ active: index === current }" @click="jump(index)">{{ index + 1 }}.{{ item }}</span>
<div v-if="showArrow(index)" class="arrow">
<div class="arrow-line" :style="{ backgroundColor: index === current ? 'red' : '' }" />
<van-icon name="arrow" :class="{ active: index === current }" />
</div>
</div>
</div>
</template>
<script>
export default {
name: 'BreadcrumbNavigator',
props: {
current: {
type: Number,
default: 0
},
moveOn: {
type: Boolean,
default: false
}
},
data() {
return {
navigatorItems: ['投保人信息', '选择被保人', '生成建议书'],
routerInfos: ['proposal/appnt', 'proposal/chooseInsuredPerson']
}
},
methods: {
jump(index) {
if (index === this.current || index == 2) return
if (this.moveOn) {
let thisMyUrl = this.routerInfos[index]
if (this.$route.query.proposalOrderNo) {
thisMyUrl = this.routerInfos[index] + '?proposalOrderNo=' + this.$route.query.proposalOrderNo
}
this.$router.push({ path: '/' + thisMyUrl })
}
},
showArrow(index) {
return index + 1 != this.navigatorItems.length
}
}
}
</script>
<style lang="scss" scoped>
.index {
display: flex;
align-items: center;
justify-content: center;
.navigator-item {
display: flex;
align-items: center;
margin: 5px 2px;
.title {
font-size: 14px;
}
.active {
color: red;
}
.arrow {
display: flex;
align-items: center;
}
.arrow-line {
width: 10px;
height: 1px;
background-color: #2c3e50;
border-radius: 1px;
margin-left: 2px;
}
}
}
</style>

View File

@@ -1,29 +1,34 @@
<template>
<div class="own_content">
<ul class="index-bar">
<li @click="changePage(item.pageNo)" v-for="(item, index) in pageTitle" :key="index" :class="item.tabClass" :id="item.tabClass" v-if="item.show">
<!-- 选中 -->
<div v-if="item.tabClass" class="flex justify-content-fs align-items-c">
<div class="flex flex-direction-colunm align-items-c">
<van-image :src="item.imgCheckedUrl" class="image_head" />
<span class="fs12 mt12">{{ item.pageItem }}</span>
<div>
<div class="own_content">
<ul class="index-bar">
<li @click="changePage(item.pageNo)" v-for="(item, index) in pageTitle" :key="index" :class="item.tabClass" :id="item.tabClass" v-if="item.show">
<!-- 选中 -->
<div v-if="item.tabClass" class="flex justify-content-fs align-items-c">
<div class="flex flex-direction-colunm align-items-c">
<van-image :src="item.imgCheckedUrl" class="image_head" />
<span class="fs12 mt12">{{ item.pageItem }}</span>
</div>
<van-image :src="doneUrl" v-if="index !== 10" class="image_done" />
</div>
<van-image :src="doneUrl" v-if="index !== 10" class="image_done" />
</div>
<div v-if="!item.tabClass" class="flex justify-content-fs align-items-c">
<div class="flex flex-direction-colunm align-items-c">
<van-image :src="item.imgNoCheckedUrl" class="image_head" />
<span class="fs12 mt12" style="color: #999999">{{ item.pageItem }}</span>
<div v-if="!item.tabClass" class="flex justify-content-fs align-items-c">
<div class="flex flex-direction-colunm align-items-c">
<van-image :src="item.imgNoCheckedUrl" class="image_head" />
<span class="fs12 mt12" style="color: #999999">{{ item.pageItem }}</span>
</div>
<van-image :src="doneNurl" v-if="index !== 10" class="image_done" />
</div>
<van-image :src="doneNurl" v-if="index !== 10" class="image_done" />
</div>
</li>
</ul>
</li>
</ul>
</div>
<p v-if="branchType == '13'" style="margin-top: 10px;color: red;background-color: #ffdddc;padding: 5px 10px;">提示您目前正在投保的项目为{{projectName}}</p>
</div>
</template>
<script>
import { Icon, Image } from 'vant'
import { getOrderDetail1 } from '@/api/ebiz/sale/sale'
import { gbcProjectDetail } from '@/api/GBC/GBC'
export default {
name: 'IndexBar',
props: {
@@ -51,6 +56,8 @@ export default {
},
data() {
return {
branchType:'',
projectName:'',
thisShow: false,
doneUrl: this.$assetsUrl + 'images/kmh/done.png',
doneNurl: this.$assetsUrl + 'images/kmh/done_n.png',
@@ -159,7 +166,7 @@ export default {
salePageFlag: Number(localStorage.salePageFlag)
}
},
mounted() {
async mounted() {
let that = this
let data = {
orderNo: that.$route.query.orderNo
@@ -187,11 +194,32 @@ export default {
})
}
}
if(this.$route.query.orderNo) {
this.projectName = res.orderDTO.ebizOrderGbcRelDTO.projectName
}
}
})
this.selectTab()
if(window.localStorage.getItem('branchType') == '13') {
this.branchType = '13'
if(!this.$route.query.orderNo) {
that.gbcProjectDetail()
}
}
},
methods: {
gbcProjectDetail(){
let params = {
}
gbcProjectDetail(params).then(res=>{
if(res.result == '0') {
this.projectName = res.content.projectName
} else {
this.$toast(res.resultMessage)
}
})
},
changePage(pageIndex) {
let url = ''
//由 localStorage.salePageFlag 来控制是否可跳到指定页面

44
src/router/GBC/index.js Normal file
View File

@@ -0,0 +1,44 @@
//数据报表 定义相关组件
const GBC_home = () => import('@/views/GBC/home')
const GBC_projectList = () => import('@/views/GBC/projectList')
const GBC_projectDetail = () => import('@/views/GBC/projectDetail')
const GBC_customerDetail = () => import('@/views/GBC/customerDetail')
export default [
{
path: '/GBC/home',
name: 'GBC_home',
component: GBC_home,
meta: {
title: '首页',
index: 1
}
},
{
path: '/GBC/projectList',
name: 'GBC_projectList',
component: GBC_projectList,
meta: {
title: '项目列表',
index: 1
}
},
{
path: '/GBC/projectDetail',
name: 'GBC_projectDetail',
component: GBC_projectDetail,
meta: {
title: '项目详情',
index: 1
}
},
{
path: '/GBC/customerDetail',
name: 'GBC_customerDetail',
component: GBC_customerDetail,
meta: {
title: '编辑客户信息',
index: 1
}
},
]

View File

@@ -49,6 +49,8 @@ import allowance from './allowance'
import cooperativeUnit from './cooperativeUnit'
// YB_APP
import YB_APP from '../YB_APP/index'
// GBC
import GBC from '../GBC/index'
//健康险续保
import healthInsuranceRenewal from './healthInsuranceRenewal'
export default [
@@ -89,5 +91,6 @@ export default [
...allowance,
...cooperativeUnit,
...YB_APP,
...GBC,
...healthInsuranceRenewal
] //根据需要进行删减

View File

@@ -37,6 +37,9 @@ const PayResultFail = () => import('@/views/ebiz/sale/PayResultFail')
const apointValidDoc = () => import('@/views/ebiz/sale/apointValidDoc')
const shortPeriodProduct = () => import('@/views/ebiz/sale/shortPeriodProduct')
const commitmentSelfProtect = () => import('@/views/ebiz/sale/commitmentSelfProtect')
const readDocuments = () => import('@/views/ebiz/sale/readDocuments')
const signDocuments = () => import('@/views/ebiz/sale/signDocuments')
let riskName = localStorage.riskName
console.log('sale/riskName==', riskName)
export default [
@@ -328,5 +331,21 @@ export default [
meta: {
title: '国富人寿投保风险承受能力测评表'
}
},
{
path: '/sale/readDocuments',
name: 'readDocuments',
component: readDocuments,
meta: {
title: '阅读文件'
}
},
{
path: '/sale/signDocuments',
name: 'signDocuments',
component: signDocuments,
meta: {
title: '签名页面'
}
}
]

View File

@@ -31,6 +31,8 @@ export default new Vuex.Store({
YBidNo: '', //银保代理人电子化合同签署证件号码
YBname: '', //银保代理人电子化合同签署姓名
YBuuid: '', //银保代理人电子化合同签署代理人uuid
appntSign: '', //投保人阅读签署文件
insuredSign: '', //被保人阅读签署文件
},
mutations: {
setOrderDetail (state, data) {
@@ -93,6 +95,14 @@ export default new Vuex.Store({
updateYBuuid (state, val) {
state.YBuuid = val
},
//更新 投保人阅读签署文件
updateappntSign (state, val) {
state.appntSign = val
},
//更新 被保人阅读签署文件
updateinsuredSign (state, val) {
state.insuredSign = val
},
},
getters: {
getPageFlag (state) {
@@ -128,6 +138,12 @@ export default new Vuex.Store({
getYBuuid (state) {
return state.YBuuid
},
getappntSign (state) {
return state.appntSign
},
getinsuredSign (state) {
return state.insuredSign
},
}
})

View File

@@ -0,0 +1,400 @@
<template>
<div>
<div style="background: #fff;margin: 10px;padding: 10px;border-radius: 5px;">
<div style="display: flex;font-size: 14px;font-weight: bold;">
<span style="width: 25%;display: flex;align-items: center;align-items: center;line-height: 30px;justify-content: center;">保单数量</span>
<span style="width: 25%;display: flex;align-items: center;align-items: center;line-height: 30px;justify-content: center">家庭成员</span>
<span style="width: 25%;display: flex;align-items: center;align-items: center;line-height: 30px;justify-content: center;">总保额</span>
<span style="width: 25%;display: flex;align-items: center;align-items: center;line-height: 30px;justify-content: center;">总保费</span>
</div>
<div style="display: flex;font-size: 13px;color: #999;margin-top: 10px;">
<span style="width: 25%;display: flex;align-items: flex-end;align-items: baseline;justify-content: center;">
<span style="color: #EC5449;font-size: 22px;margin-right: 7px;font-weight: bold;">{{infoContent.contSize}}</span>
</span>
<span style="width: 25%;display: flex;align-items: flex-end;align-items: baseline;justify-content: center;">
<span style="color: #EC5449;font-size: 22px;margin-right: 7px;font-weight: bold;">{{infoContent.members.length}}</span>
</span>
<span style="width: 25%;display: flex;align-items: flex-end;align-items: baseline;justify-content: center;">
<span style="color: #EC5449;font-size: 22px;margin-right: 7px;font-weight: bold;">{{infoContent.totalAmt}}</span>
</span>
<span style="width: 25%;display: flex;align-items: flex-end;align-items: baseline;justify-content: center;">
<span style="color: #EC5449;font-size: 22px;margin-right: 7px;font-weight: bold;">{{infoContent.totalPrem}}</span>
</span>
</div>
</div>
<div style="margin: 10px;overflow: auto;white-space: nowrap;">
<div v-for="(item,index) in infoContent.members" @click="activeMembers(item,index)" class="membersClass" :key="index" :style="{border:activeMembersIndex==index?'1px solid #e98c8c':'none'}">
<div v-if="item.gender=='1'" class="triangle1"></div>
<div v-if="item.gender=='0'" class="triangle2"></div>
<div v-if="item.relateToAppnt == 1" style="position: absolute;right: 2px;top: 2px;font-size: 12px;color: #fff;">本人</div>
<div v-if="item.relateToAppnt == 2" style="position: absolute;right: 2px;top: 2px;font-size: 12px;color: #fff;">配偶</div>
<div v-if="item.relateToAppnt == 3" style="position: absolute;right: 2px;top: 2px;font-size: 12px;color: #fff;">父母</div>
<div v-if="item.relateToAppnt == 4" style="position: absolute;right: 2px;top: 2px;font-size: 12px;color: #fff;">子女</div>
<div v-if="item.relateToAppnt == 5" style="position: absolute;right: 2px;top: 2px;font-size: 12px;color: #fff;">其他</div>
<div style="position: absolute;top: 20px;left: 20px;">
<img v-if="item.gender =='0' && item.relateToAppnt == 1" src="@/assets/images/GBC/relation6.png" style="width: 40px;" />
<img v-if="item.gender =='1' && item.relateToAppnt == 1" src="@/assets/images/GBC/relation1.png" style="width: 40px;" />
<img v-if="item.gender =='0' && item.relateToAppnt == 2" src="@/assets/images/GBC/relation6.png" style="width: 40px;" />
<img v-if="item.gender =='1' && item.relateToAppnt == 2" src="@/assets/images/GBC/relation1.png" style="width: 40px;" />
<img v-if="item.gender =='0' && item.relateToAppnt == 3" src="@/assets/images/GBC/relation4.png" style="width: 40px;" />
<img v-if="item.gender =='1' && item.relateToAppnt == 3" src="@/assets/images/GBC/relation5.png" style="width: 40px;" />
<img v-if="item.gender =='0' && item.relateToAppnt == 4" src="@/assets/images/GBC/relation3.png" style="width: 40px;" />
<img v-if="item.gender =='1' && item.relateToAppnt == 4" src="@/assets/images/GBC/relation2.png" style="width: 40px;" />
<img v-if="item.gender =='0' && item.relateToAppnt == 5" src="@/assets/images/GBC/relation6.png" style="width: 40px;" />
<img v-if="item.gender =='1' && item.relateToAppnt == 5" src="@/assets/images/GBC/relation1.png" style="width: 40px;" />
</div>
<div style="position: absolute;bottom: 3px;width: 100%;text-align: center;font-size: 12px;">{{item.appntName}}</div>
</div>
</div>
<div style="margin: 10px;border-radius: 5px;overflow: hidden;">
<van-collapse v-model="activeNames">
<van-collapse-item title="基本信息" name="1">
<div style="display: flex;padding-bottom: 10px;border-bottom: 1px dashed #666;">
<div style="width: 30%;line-height: 30px;color: #666;">
<p>客户姓名</p>
<p>年龄</p>
<p>性别</p>
<p>手机号码</p>
<p v-if="activeMembersIndex == 0">部门/科室</p>
</div>
<div style="width: 70%;line-height: 30px;color: #000;">
<p>{{infoContent.appntName}}</p>
<p>{{infoContent.age}}周岁</p>
<p>{{infoContent.gender=='1'?'女':'男'}}</p>
<p>{{infoContent.mobile}}</p>
<p v-if="activeMembersIndex == 0">{{infoContent.departmentName}}</p>
</div>
</div>
<van-field @click="toSelect('toChooseAppntType')" v-model="infoContent.appntTypeName" class="customerType" label="客户类型" name="客户类型" readonly right-icon="arrow" placeholder="请选择"/>
</van-collapse-item>
</van-collapse>
</div>
<div style="margin: 10px;border-radius: 5px;overflow: hidden;">
<van-collapse v-model="activeNames">
<van-collapse-item title="沟通记录" name="2">
<div style="display: flex;justify-content: space-between;align-items: center;">
<span>内容描述</span>
<van-button @click="activeConnectRecords = true" plain round type="danger" size="small"> </van-button>
</div>
<div v-if="activeConnectRecords">
<div class="message">
<div class="wrapper">
<div class="parents">
<textarea placeholder="请输入内容描述......" maxlength="500" autofocus="true" v-model="connectContent"></textarea>
<span class="tips">
{{connectContent.length}}/500
</span>
</div>
</div>
</div>
<div class="saveMeaasge" style="margin-top: 10px;display: flex;justify-content: center;">
<van-button @click="getGBCappntConnectSave" type="danger" size="small"> </van-button>
</div>
</div>
<div class="connectRecordsClass" style="border-top: 1px solid #dedede;margin-top: 10px;">
<div v-for="(item,index) in infoContent.connectRecords" :key="index" style="margin-top: 10px;">
<div style="display: flex;line-height: 30px;align-items: center;">
<span style="display: inline-block;width: 30%;color: #666;">记录时间</span>
<span style="display: inline-block;width: 70%;color: #000;">{{item.connectTime}}</span>
</div>
<div style="display: flex;line-height: 30px;align-items: center;">
<span style="display: inline-block;width: 30%;color: #666;">提交人</span>
<span style="display: inline-block;width: 70%;color: #000;">{{item.createUser}}</span>
</div>
<div style="display: flex;line-height: 30px;align-items: center;">
<span style="display: inline-block;width: 30%;color: #666;">内容描述</span>
<span style="display: inline-block;width: 70%;color: #000;"></span>
</div>
<div class="itemMessage">
<van-field v-model="item.connectContent" readonly rows="5" label="" type="textarea" maxlength="500" placeholder=""/>
</div>
</div>
</div>
</van-collapse-item>
</van-collapse>
</div>
<div style="margin: 10px;border-radius: 5px;overflow: hidden;">
<van-collapse v-model="activeNames">
<van-collapse-item title="保单信息" name="3">
<div v-for="(item,index) in infoContent.contList" :key="index" style="border-bottom: 1px dashed #dedede;margin-bottom: 20px;">
<div style="display: flex;justify-content: space-between;align-items: center;border-bottom: 1px solid #dedede;padding-bottom: 5px;">
<div>
<p style="font-size: 14px;font-weight: bold;line-height: 25px;color: #000;">{{item.productName}} </p>
<p style="font-size: 12px;line-height: 25px;color: #999;">保单号{{item.contNo}} </p>
</div>
<div v-if="item.orderStatus == '08'" style="padding: 10px 20px;border-radius: 8px;border: 1px solid #e9332e;background: #ffdfde;color: #e9332e;">
<span>已承保</span>
</div>
<div v-if="item.orderStatus == '09'" style="padding: 10px 20px;border-radius: 8px;border: 1px solid #48A1F3;background: #DBEDFE;color: #48A1F3;">
<span>已退保</span>
</div>
</div>
<div style="padding: 10px 0px;">
<div style="display: flex;line-height: 30px;align-items: center;">
<p style="width: 30%;color: #666;">投保人</p>
<p style="width: 25%;color: #000;">{{item.appntName}}</p>
<p style="width: 25%;color: #666;">被保险人</p>
<p style="width: 20%;color: #000;">{{item.insuredName}}</p>
</div>
<div style="display: flex;line-height: 30px;align-items: center;">
<p style="width: 30%;color: #666;">保额()</p>
<p style="width: 25%;color: #000;">{{item.amt}}</p>
<p style="width: 25%;color: #666;">保费()</p>
<p style="width: 20%;color: #000;">{{item.prem}}</p>
</div>
<div style="display: flex;line-height: 30px;align-items: center;">
<p style="width: 30%;color: #666;">交费期间</p>
<p style="width: 25%;color: #000;">{{item.paymentPeriod}}</p>
<p style="width: 25%;color: #666;">保险期间</p>
<p style="width: 20%;color: #000;">{{item.insuredPeriod}}</p>
</div>
<div style="display: flex;line-height: 30px;align-items: center;">
<p style="width: 30%;color: #666;">保险生效日期</p>
<p style="width: 50%;color: #000;">{{item.effectiveDate}}</p>
</div>
</div>
</div>
</van-collapse-item>
</van-collapse>
</div>
<van-popup v-model="popupShow" position="bottom">
<van-picker show-toolbar :columns="columns" @confirm="onConfirm" @cancel="popupShow = false" />
</van-popup>
</div>
</template>
<script>
import { Collapse, CollapseItem } from 'vant'
import { getGBCappntDetail, getGBCappntTypeSave, getGBCappntConnectSave } from '@/api/GBC/GBC.js'
export default {
components: {
[Collapse.name]: Collapse,
[CollapseItem.name]: CollapseItem,
},
data() {
return {
activeMembersIndex:0,
activeConnectRecords:false,
infoContent:{
members:[
{appntName:'刘亚丽',relateToAppnt:1,src:require('@/assets/images/GBC/relation1.png'),gender:'1'},
{appntName:'刘桂芬',relateToAppnt:2,src:require('@/assets/images/GBC/relation2.png'),gender:'1'},
{appntName:'谢居安',relateToAppnt:3,src:require('@/assets/images/GBC/relation3.png'),gender:'0'},
{appntName:'谢危',relateToAppnt:4,src:require('@/assets/images/GBC/relation4.png'),gender:'0'},
{appntName:'刘亚丽',relateToAppnt:5,src:require('@/assets/images/GBC/relation5.png'),gender:'1'},
{appntName:'刘桂芬',relateToAppnt:6,src:require('@/assets/images/GBC/relation6.png'),gender:'1'},
{appntName:'谢居安',relateToAppnt:7,src:require('@/assets/images/GBC/relation1.png'),gender:'0'},
{appntName:'谢危',relateToAppnt:8,src:require('@/assets/images/GBC/relation2.png'),gender:'0'},
{appntName:'谢危',relateToAppnt:9,src:require('@/assets/images/GBC/relation2.png'),gender:'0'},
],
connectRecords:[
{
connectTime:'2023-11-21 16:00:00',
createUser:'赵威武',
connectContent:'客户为财务部总经理45岁2个小孩大儿子读初中小女儿读小学爱人在银行工作全家人都已配置过重疾险保额均为30万。自己可以做购买决策但目前有2套房贷在供经济压力较大但对我司方案很认可回去商量后再决定是否加保'
},
{
connectTime:'2023-11-21 16:00:00',
createUser:'赵威武',
connectContent:'客户为财务部总经理45岁2个小孩大儿子读初中小女儿读小学爱人在银行工作全家人都已配置过重疾险保额均为30万。自己可以做购买决策但目前有2套房贷在供经济压力较大但对我司方案很认可回去商量后再决定是否加保'
},
{
connectTime:'2023-11-21 16:00:00',
createUser:'赵威武',
connectContent:'客户为财务部总经理45岁2个小孩大儿子读初中小女儿读小学爱人在银行工作全家人都已配置过重疾险保额均为30万。自己可以做购买决策但目前有2套房贷在供经济压力较大但对我司方案很认可回去商量后再决定是否加保'
}
],
contList:[
{appntName:'赵燕燕',insuredName:'赵燕燕',amt:'3,200.00',prem:'150.00',paymentPeriod:'3年交',insuredPeriod:'终身',effectiveDate:'2023-11-28',orderStatus: '1'},
{appntName:'赵燕燕',insuredName:'赵燕燕',amt:'3,200.00',prem:'150.00',paymentPeriod:'3年交',insuredPeriod:'终身',effectiveDate:'2023-11-28',orderStatus: '1'},
{appntName:'赵燕燕',insuredName:'赵燕燕',amt:'3,200.00',prem:'150.00',paymentPeriod:'3年交',insuredPeriod:'终身',effectiveDate:'2023-11-28',orderStatus: '2'},
]
},
activeNames:[],
popupShow:false,
columns:[],
customerType:'',
pickerType: '',
columns_toChooseAppntType:[
{text:'A类',id:'A'},
{text:'B类',id:'B'},
{text:'C类',id:'C'},
{text:'D类',id:'D'},
],
connectContent: "",
maxLength: 500,
}
},
created() {
},
mounted(){
this.getGBCappntDetail()
},
methods: {
activeMembers(thisData,thisIndex) {
this.activeMembersIndex = thisIndex
this.infoContent.appntName = thisData.name
this.infoContent.age = thisData.age
this.infoContent.gender = thisData.gender
this.infoContent.mobile = thisData.mobile
this.infoContent.departmentName = thisData.departmentName
},
getGBCappntDetail() {
let params = {
"projectCode": this.$route.query.projectCode,
"appntId": this.$route.query.appntId
}
getGBCappntDetail(params).then(res => {
if(res.result == 0) {
this.infoContent = res.content
} else {
this.$toast(res.resultMessage)
}
})
},
getGBCappntConnectSave(){
let params = {
"projectCode": this.$route.query.projectCode,
"appntId": this.$route.query.projectCode,
"connectContent": this.connectContent
}
getGBCappntConnectSave(params).then(res=>{
if(res.result == 0) {
this.$toast('保存成功')
this.getGBCappntDetail()
} else {
this.$toast(res.resultMessage)
}
})
},
onConfirm(value){
if(this.pickerType == 'toChooseAppntType'){
this.infoContent.appntTypeName = value.text
this.infoContent.appntType = value.id
let params = {
"projectCode": this.$route.query.projectCode,
"appntId": this.$route.query.appntId,
"appntType": this.infoContent.appntType
}
getGBCappntTypeSave(params).then(res=>{
if(res.result == 0){
this.$toast('保存成功')
} else {
this.$toast(res.resultMessage)
}
})
}
this.popupShow = false
},
toSelect(pickerType){
this.pickerType = pickerType
this.popupShow = true
switch (pickerType) {
case 'toChooseAppntType':
this.columns = this.columns_toChooseAppntType
break
}
},
},
computed: {
},
beforeRouteLeave(to, from, next) {
document.body.style.backgroundColor = ''
next()
}
}
</script>
<style lang="scss" scoped>
.triangle1 {
width: 0;
height: 0;
border-width:30px; /* 设置边长 */
border-style: solid;
transform: translateX(50px) translateY(-30px) rotate(45deg);
border-color: transparent transparent #FC7D5B transparent; /* 透明色为背景色,#000000为需要显示的颜色 */
}
.triangle2 {
width: 0;
height: 0;
border-width:30px; /* 设置边长 */
border-style: solid;
transform: translateX(50px) translateY(-30px) rotate(45deg);
border-color: transparent transparent #3D72D0 transparent; /* 透明色为背景色,#000000为需要显示的颜色 */
}
/deep/ .van-cell:not(:last-child)::after {
border-bottom: 1px dashed #666 !important;
}
/deep/ .van-cell:not(:last-child)::after{
left:0px !important;
}
.customerType{
padding-left: 0px;
padding-right: 0px;
color: #666;
}
/deep/ .message{
border-radius: 10px;
border: 1px solid #dedede;
margin-top: 20px;
padding: 10px;
}
.parents {
width: 100%;
height: 120px;
position: relative;
}
textarea {
border: none;
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
.tips {
position: absolute;
bottom: 0;
right: 0;
}
/deep/ .saveMeaasge{
.van-button--small{
padding: 0px 40px;
border-radius: 5px;
}
}
/deep/ .itemMessage{
border: 1px solid #dedede;
border-radius: 10px;
padding: 10px;
.van-field__label{
width: 0;
}
.van-cell{
padding: 0px;
}
.van-field__control{
color: #333;
height: auto;
}
}
/deep/ .van-collapse-item{
.van-cell__title{
font-size: 14px;
font-weight: bold;
}
}
.membersClass{
display: inline-block;
width: 80px;
height: 80px;
border-radius: 5px;
background: #fff;
margin-right: 10px;
overflow: hidden;
position: relative;
}
</style>

368
src/views/GBC/home.vue Normal file
View File

@@ -0,0 +1,368 @@
<template>
<div class="public_container" :style="{paddingTop:marginTop+'px'}">
<!-- <van-pull-refresh v-model="isLoading" @refresh="onRefresh">-->
<div class="head">
<van-swipe :autoplay="3000" style="width: 100%;">
<van-swipe-item v-for="(item, index) in activity" :key="index" @touchstart="touchstart" @touchmove="touchmove" @touchend="touchend(item)">
<!-- <img :src="config.assetsUrl + item.img + '?v=' + thisGetTime" /> -->
<img :src="item.img">
</van-swipe-item>
</van-swipe>
</div>
<div class="iconPart1">
<van-notice-bar :left-icon="png8" :text='getCodeValue'/>
</div>
<div class="top">
<div class="menu" v-for="(item, ind) in homePageIcon" :key="ind" @click="goDetail(item)">
<div class="menuImg">
<img :src="item.img">
</div>
<span class="menuName">{{ item.title }}</span>
</div>
</div>
<div class="cooperativeUnits">
<div>
<div style="width: 50%;display: inline-block;" v-for="(item,index) in list1" :key="index">
<p style="display: flex;justify-content: flex-start;height: 50px;align-items: center;margin: 5px 10px;border:1px solid #eee;border-radius: 5px;background: #fff;color: #333333;padding-left: 10px;">
<img src="@/assets/images/GBC/home-cooperativeUnits-icon.png" style="width: 20px;height: 20px;margin-right: 10px;"/>
{{item.name}}
</p>
</div>
</div>
</div>
<div class="companyProfile">
<img :src="image1" style="width: 100%;"/>
</div>
<!-- </van-pull-refresh>-->
<van-dialog v-model="chooseProjectDialogShow" :showConfirmButton="false">
<div slot="title">
<p style="color: #E9332E;">请选择项目</p>
</div>
<div class="chooseProjectDialog" style="padding: 20px 30px 30px;font-size: 14px;">
<van-radio-group v-model="chooseTeamCode">
<van-radio v-for="(item,index) in projectList" :key="index" :name="item.teamCode" style="margin: 10px;">
<span style="margin-left: 20px;">
{{item.projectName}}
<span v-if="item.teamName" style="margin-left: 10px;color: #a7a7a7;">
({{item.teamName}})
</span>
</span>
</van-radio>
</van-radio-group>
</div>
<div style="text-align: center;margin-bottom: 30px;">
<van-button round type="danger" size="small" style="padding:0px 35px;font-size: 14px;" @click="chooseProjectList">
确定
</van-button>
</div>
</van-dialog>
<!-- 选择过期项目弹窗提示 -->
<van-dialog v-model="enableProjectDialogShow" :showConfirmButton="false">
<div slot="title">
<p style="color: #E9332E;">提示</p>
</div>
<div style="padding: 20px 30px 30px;font-size: 14px;">
{{chooseProjectName}}项目服务时间已结束
</div>
<div style="text-align: center;margin-bottom: 30px;">
<van-button round type="danger" size="small" style="padding:0px 35px;font-size: 14px;" @click="enableProjectDialogShow = false">
返回
</van-button>
</div>
</van-dialog>
</div>
</template>
<script>
import { gbcProjectList, gbcProjectConfirm, homeConfigGBC } from '@/api/GBC/GBC'
import { getAgentInfo } from '@/api/ebiz/my/my.js'
import { Swipe, SwipeItem, NoticeBar, Icon, Popup, PullRefresh ,Toast, RadioGroup, Radio } from 'vant'
import config from '@/config'
import png8 from '@/assets/YB_APP/images/8.png';
export default {
name: 'Home',
components: {
[Swipe.name]: Swipe,
[SwipeItem.name]: SwipeItem,
[NoticeBar.name]: NoticeBar,
[Icon.name]: Icon,
[Popup.name]: Popup,
[PullRefresh.name]:PullRefresh,
[RadioGroup.name]:RadioGroup,
[Radio.name]:Radio,
[Toast.name]:Toast ,
},
data() {
return {
config,
marginTop:'80',
getCodeValue:'',
png8,
activity: [],
homePageIcon:[
{title:'建议书',route:'/proposal/list',img:require('@/assets/images/GBC/home-menu-1.png')},
{title:'电子投保',route:'/sale/list',img:require('@/assets/images/GBC/home-menu-2.png')},
{title:'海报设计',route:'/poster/posterList',img:require('@/assets/images/GBC/home-menu-3.png')},
{title:'GBC专区',route:'/GBC/projectList',img:require('@/assets/images/GBC/home-menu-4.png')}
],
isLoading: false,
image1: require('@/assets/images/GBC/home-companyProfile.png'),
list1:[
{name:'广西金融投资集团'},{name:'广投集团'},{name:'广西北部湾银行'},{name:'国海证券'},
],
projectList:[],
chooseProjectDialogShow: false,
chooseTeamCode:'',
chooseProjectCode:'',
chooseProjectName: '',
enableProjectDialogShow: false,
}
},
mounted(){
this.homeConfigGBC()
this.setMarginTop()
if(this.$route.query.isFrom == 'login') {
this.gbcProjectList()
}
this.getAgentInfo()
},
methods:{
getAgentInfo(){
let params = {
}
getAgentInfo(params).then(res => {
if(res.result == '0') {
if(res.branchType == '13') {
window.localStorage.setItem('branchType','13')
}
} else {
this.$toast(res.resultMessage)
}
})
},
gbcProjectList(){
let params = {
}
gbcProjectList(params).then(res=>{
if(res.result == '0') {
this.projectList = res.content
if(this.projectList.length == 1) {
this.chooseProjectDialogShow = false
this.chooseTeamCode = this.projectList[0].teamCode
this.chooseProjectCode = this.projectList[0].projectCode
this.chooseProjectName = this.projectList[0].projectName
this.chooseProjectList()
}
if(this.projectList.length > 1) {
this.chooseProjectDialogShow = true
}
} else {
this.$toast(res.resultMessage)
}
})
},
chooseProjectList(){
if(!this.chooseTeamCode) {
this.$toast('请选择项目')
return false
}
if(this.projectList && this.projectList.length != 0) {
this.projectList.forEach(item=>{
if(item.teamCode == this.chooseTeamCode){
this.chooseProjectName = item.projectName
}
})
}
let params = {
teamCode:this.chooseTeamCode
}
gbcProjectConfirm(params).then(res=>{
if(res.result == '0') {
if(res.content.enable == 1){
this.chooseProjectDialogShow = false
} else {
this.enableProjectDialogShow = true
}
} else {
this.$toast(res.resultMessage)
}
})
},
goDetail(data){
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#'+ data.route,
},
routerInfo: {
path: data.route,
},
})
},
setMarginTop(){
EWebBridge.webCallAppInJs("top_bar_height").then(data => {
console.log(data,'top_bar_height')
if(data){
// 获取高度成功
let height = data.height
// 设置高度
this.marginTop = height + 10
}
})
},
homeConfigGBC(){
let params = {
}
homeConfigGBC(params).then(res=>{
if(res.result == 0){
this.activity = res.content.activity
if(res.content.getCodeValue.length!=0){
res.content.getCodeValue.forEach(item=>{
this.getCodeValue += item + ' '
})
}
this.homePageIcon = res.content.icon.homePageIcon
}else{
this.$toast(res.resultMessage)
}
})
},
touchstart(){
this.clickFlag = true
},
touchmove(){
this.clickFlag = false
},
touchend(data){
if(this.clickFlag){
let dataURL = JSON.parse(data.route).extra.url
if(dataURL){
let thisRoute = dataURL.substring(dataURL.lastIndexOf("/#")+2)
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#' + thisRoute,
},
routerInfo: {
path: thisRoute,
},
})
}
}
},
// 下拉刷新
onRefresh() {
setTimeout(() => {
Toast('刷新成功');
this.isLoading = false;
location. reload()
}, 1000);
},
},
// beforeRouteEnter(to, from, next) {
// next(vm => {
// if(from && from.path){
// console.log(from)
// // eslint-disable-next-line no-undef
// if(form.path == '/login') {
// window.sessionStorage.setItem('GBCFrom','GBCLogin')
// }
// }
// });
// },
}
</script>
<style lang="scss" scoped>
.public_container{
font-size: 12px;
height: 100vh;
width: 100vw;
/*background-image: url("../../assets/YB_APP/images/2-1.png");*/
/*background-repeat: no-repeat;*/
/*background-size: contain;*/
background: #F0F8FF;
}
.head {
position: relative;
margin: 10px;border-radius: 5px;
/*box-shadow: 0px 5px 8px 0px #7a6fc1;*/
img {
width: 100%;
height: 100%;
border-radius: 5px;
}
/deep/ .van-swipe-item{
height: auto;
}
}
/deep/ .van-notice-bar{
border-radius: 5px;
}
.menuImg{
width:100%;display: flex;justify-content: center;margin-bottom: 5px;
/deep/ img{
width: 30px;
height: 30px;
}
}
/deep/ .van-notice-bar{
background: #fff;
color: #333;
letter-spacing: 1px;
}
/deep/ .van-icon__image{
width: 100%;
}
/deep/ .van-notice-bar__left-icon{
width: 50px;
}
/deep/ .van-notice-bar__wrap{
margin-left: 10px;
}
/deep/ .van-swipe-item{
img{
height:145px;
}
}
.iconPart1{
margin: 10px;border-radius: 5px;
}
.top{
display:flex;
justify-content: space-between;
margin: 10px;
border-radius: 5px;
align-items: center;
padding: 15px;
}
.title-img {
height: 40px;
}
/deep/ .chooseProjectDialog{
.van-radio__icon {
.van-icon{
border: 1px solid red;
}
}
}
.cooperativeUnits{
background: url("../../assets/images/GBC/home-cooperativeUnits.png");
background-repeat: no-repeat;
background-size: cover;
height: 130px;
padding-top: 60px;
margin: 10px;
border-radius: 10px;
}
</style>

View File

@@ -0,0 +1,379 @@
<template>
<div>
<van-tabs v-model="tabActive">
<van-tab title="客户列表" name="customerList"></van-tab>
<van-tab title="数据看板" name="dataBoard"></van-tab>
<van-tab title="产品列表" name="productList"></van-tab>
</van-tabs>
<div v-if="tabActive == 'customerList'">
<div style="display: flex;align-items: center;padding-left: 10px;background: #fff;">
<div style="width: 30%;">
<van-dropdown-menu :overlay="dropdownmenuoverlay">
<van-dropdown-item v-model="filterType" :options="filterTypeOption" @change="dropdownMenuChange"/>
</van-dropdown-menu>
</div>
<van-search v-if="filterType == 1 || filterType == 2 || filterType == 3" v-model="searchvalue" shape="round" @search="getGBCappntlist" placeholder="搜索客户姓名/部门/科室/服务人员" style="width: 70%;"/>
<div v-if="filterType == 4" style="display: flex;align-items: center;height: 54px;">
<div @click="toChooseDate('startDate')" style="background: #f5f5f5;height: 34px;border-radius: 17px;width: 90px;display: flex;align-items: center;padding:0px 10px;">
<van-icon name="notes-o" />
<span v-if="!startDate" style="font-size: 12px;margin-left: 5px;color: #666;">请选择日期</span>
<span v-if="startDate" style="font-size: 12px;margin-left: 5px;color: #333;">{{startDate}}</span>
</div>
<span style="margin: 0px 5px;font-size: 14px;"></span>
<div @click="toChooseDate('endDate')" style="background: #f5f5f5;height: 34px;border-radius: 17px;width: 90px;display: flex;align-items: center;padding: 0px 10px;">
<van-icon name="notes-o" />
<span v-if="!endDate" style="font-size: 12px;margin-left: 5px;color: #666;">请选择日期</span>
<span v-if="endDate" style="font-size: 12px;margin-left: 5px;color: #333;">{{endDate}}</span>
</div>
</div>
</div>
<div style="padding: 0px 10px 10px;">
<div v-for="(item,index) in customerList" :key="index">
<div style="padding: 20px 20px 10px;border-radius: 5px;background: #fff;margin-top: 20px;">
<div style="display: flex;font-size: 14px;line-height: 30px;border-bottom: 1px solid #eee;padding-bottom: 10px;">
<div style="width: 55%;overflow: hidden;white-space: nowrap;">
<p>客户姓名{{item.appntName}}</p>
<p>手机号码{{item.mobile}}</p>
<p>服务组长{{item.teamLeader}}</p>
</div>
<div style="width: 45%;overflow: hidden;white-space: nowrap;">
<p>部门/科室{{item.departmentName}}</p>
<p>承包保单{{item.contSize}}</p>
<p>服务组员{{item.teamMember}}</p>
</div>
</div>
<div style="display: flex;justify-content: flex-end;margin-top: 10px;">
<van-button @click="goCustomerDetail(item)" type="danger" size="small" style="border-radius:5px;">查看编辑</van-button>
</div>
</div>
</div>
</div>
</div>
<div v-if="tabActive == 'dataBoard'">
<div style="margin: 10px;padding: 10px;background: #fff;border-radius: 5px;">
<p style="font-size: 18px;line-height: 35px;font-weight: bold;">项目名称国富人寿北京协和医院AA项目</p>
<p style="color: #a7a7a7;font-size: 14px;">数据截止日期2024-03-30</p>
<div style="display: flex;justify-content: center;margin-top: 20px;">
<van-circle v-model="currentRate" color="#E9332E" :stroke-width="60" size="80px" :rate="85" :speed="100" :text="text" />
</div>
<p style="display: flex;justify-content: center;font-weight: bold;font-size: 14px;margin: 10px;">面谈转化率</p>
<div style="padding: 10px;background: rgba(251, 235, 230, 0.5);border-radius: 5px;display: flex;justify-content: flex-start;flex-wrap:wrap;">
<div v-for="(item,index) in dataList1" style="width: 33%;display: flex;justify-content: space-around;align-items: center;">
<div>
<div style="font-size: 12px;line-height: 22px;margin: 7px 0px;">
<p style="display: flex;justify-content: center;font-size: 14px;">{{item.value}}</p>
<p style="display: flex;justify-content: center;align-items: center;">
<span class="colorBlock" :style="{background:colorList[index]}"></span>
{{item.name}}
</p>
</div>
</div>
<!-- <div v-if="(index + 1) % 3 != 0 || index < 2" style="width: 1px;background: #FFC9AF;height: 60%;"></div>-->
</div>
</div>
</div>
<div style="margin: 10px;padding: 10px;background: #fff;border-radius: 5px;">
<div style="border-bottom: 1px dashed #666;padding-bottom: 15px;">
<p style="font-size: 18px;line-height: 35px;font-weight: bold;">项目成员分配</p>
<p style="color: #a7a7a7;font-size: 14px;">数据截止日期2024-03-30</p>
</div>
<div style="margin-top: 10px;margin-bottom: 3px;background: rgba(255, 87, 83, 0.7);line-height: 30px;display: flex;align-items: center;color: #fff;font-size: 14px;">
<span style="width: 18%;display: flex;justify-content: center;">成员</span>
<span style="width: 22%;display: flex;justify-content: center;">角色</span>
<span style="width: 30%;display: flex;justify-content: center;">累计标保()</span>
<span style="width: 30%;display: flex;justify-content: center;">受理标保()</span>
</div>
<div>
<div v-for="item in dataList2" style="background: rgba(251, 235, 230, 0.44);margin-bottom: 1px;line-height: 30px;display: flex;align-items: center;color: #333;font-size: 13px;">
<span style="width: 18%;display: flex;justify-content: center;">{{item.name}}</span>
<span style="width: 22%;display: flex;justify-content: center;">{{item.role}}</span>
<span style="width: 30%;display: flex;justify-content: center;">{{item.value1}}</span>
<span style="width: 30%;display: flex;justify-content: center;">{{item.value2}}</span>
</div>
</div>
</div>
<div style="margin: 10px;padding: 10px;background: #fff;border-radius: 5px;">
<div style="border-bottom: 1px dashed #666;padding-bottom: 15px;">
<p style="font-size: 18px;line-height: 35px;font-weight: bold;">项目数据统计</p>
<p style="color: #a7a7a7;font-size: 14px;">数据截止日期2024-03-30</p>
</div>
<div style="margin-top: 10px;margin-bottom: 3px;background: rgba(255, 87, 83, 0.7);line-height: 30px;display: flex;align-items: center;color: #fff;font-size: 14px;">
<span style="width: 25%;display: flex;justify-content: center;">小组</span>
<span style="width: 25%;display: flex;justify-content: center;">组长</span>
<span style="width: 25%;display: flex;justify-content: center;">获客人数</span>
<span style="width: 25%;display: flex;justify-content: center;">获客率</span>
</div>
<div>
<div style="background: rgba(251, 235, 230, 0.44);margin-bottom: 1px;line-height: 30px;display: flex;align-items: center;color: #333;font-size: 13px;">
<span style="width: 50%;display: flex;justify-content: center;">项目合并</span>
<span style="width: 25%;display: flex;justify-content: center;">890</span>
<span style="width: 25%;display: flex;justify-content: center;">89%</span>
</div>
</div>
<div>
<div v-for="(item,index) in dataList3" :key="index" style="background: rgba(251, 235, 230, 0.44);margin-bottom: 1px;line-height: 30px;display: flex;align-items: center;color: #333;font-size: 13px;">
<span style="width: 25%;display: flex;justify-content: center;">{{item.name}}</span>
<span style="width: 25%;display: flex;justify-content: center;">{{item.role}}</span>
<span style="width: 25%;display: flex;justify-content: center;">{{item.value1}}</span>
<span style="width: 25%;display: flex;justify-content: center;">{{item.value2}}</span>
</div>
</div>
</div>
</div>
<div v-if="tabActive == 'productList'">
<div v-for="(item,index) in dataList4" @click="goProductDetail(item.productCode)" :key="index" style="background: #fff;border-radius: 5px;margin: 5px;display: flex;padding: 5px;">
<img :src="item.productImageUrl" style="display: inline-block;width: 35%;border-radius: 5px;"/>
<div style="display: inline-block;width: 65%;padding-left: 10px;">
<p style="font-size: 16px;">{{item.productName}}</p>
<p style="font-size: 14px;color: #bdbdbd;margin-top: 20px;">{{item.productDesc}}</p>
</div>
</div>
</div>
<van-popup v-model="showDataPicker" position="bottom">
<van-datetime-picker type="date" v-model="currentDate" @confirm="onConfirmDate" @cancel="cancelDate" :max-date="maxDate" :min-date="minDate" />
</van-popup>
</div>
</template>
<script>
import { Tab, Tabs, Search, DropdownMenu, DropdownItem, Circle } from 'vant'
import { getList } from '@/api/ebiz/product/product.js'
import { getGBCappntlist } from '@/api/GBC/GBC.js'
export default {
components: {
[Tab.name]: Tab,
[Tabs.name]: Tabs,
[Search.name]: Search,
[DropdownMenu.name]: DropdownMenu,
[DropdownItem.name]: DropdownItem,
[Circle.name]: Circle,
},
data() {
return {
tabActive:1,
searchvalue:'',
filterType: 1,
startDate:'',
endDate:'',
showDataPicker:false,
minDate: new Date(2000, 0, 1),
maxDate: new Date(2050, 11, 31),
currentDate:new Date(),
datePickerType:'',
filterTypeOption: [
{ text: '按客户', value: 1 },
{ text: '按科室', value: 2 },
{ text: '按小组', value: 3 },
{ text: '按日期', value: 4 },
],
dropdownmenuoverlay:false,
customerList:[],
currentRate: 0,
colorList:['#E9332E','#CB9BFF','#54C6FA','#FF9B39','#60D64D','#4045F3','#FF59D9','#E8C0A2','#FCD338','#7584A2'],
dataList1:[
{name:'累计受理保费(元)',value:'150,000.00'},
{name:'累计标保(元)',value:'250,000.00'},
{name:'件均保费(元)',value:'130,000.00'},
{name:'件均保费(元)',value:'10856'},
{name:'累计受理件数(件)',value:'356'},
{name:'累计承保人数(人)',value:'9569'},
{name:'累计承保件数(件)',value:'262'},
],
dataList2:[
{name:'张大大',role:'项目经理',value1:'15,000.00',value2:'15,000.00'},
{name:'张大大',role:'项目经理',value1:'15,000.00',value2:'15,000.00'},
{name:'张大大',role:'项目经理',value1:'15,000.00',value2:'15,000.00'},
{name:'张大大',role:'项目经理',value1:'15,000.00',value2:'15,000.00'},
{name:'张大大',role:'项目经理',value1:'15,000.00',value2:'15,000.00'},
{name:'张大大',role:'项目经理',value1:'15,000.00',value2:'15,000.00'},
{name:'张大大',role:'项目经理',value1:'15,000.00',value2:'15,000.00'},
],
dataList3:[
{name:'A组',role:'李艾',value1:'600',value2:'60'},
{name:'A组',role:'李艾',value1:'600',value2:'60'},
{name:'A组',role:'李艾',value1:'600',value2:'60'},
{name:'A组',role:'李艾',value1:'600',value2:'60'},
{name:'A组',role:'李艾',value1:'600',value2:'60'},
{name:'A组',role:'李艾',value1:'600',value2:'60'},
{name:'A组',role:'李艾',value1:'600',value2:'60'},
],
dataList4:[],
}
},
created() {
},
mounted(){
this.getGBCappntlist()
this.getProductList()
},
methods: {
dropdownMenuChange(value){
this.filterType = value
this.searchvalue = ''
this.startDate = ''
this.endDate = ''
if(value == 1 || value == 2 || value == 3) {
this.getGBCappntlist()
}
},
getGBCappntlist(){
let params = {
"projectCode": this.$route.query.projectCode,
"filterType": this.filterType,
"appntName": "",
"departmentName": "",
"teamMemberName": "",
"startDate": "",
"endDate": ""
}
if(this.filterType == 1){
params.appntName = this.searchvalue
}
if(this.filterType == 2){
params.departmentName = this.searchvalue
}
if(this.filterType == 3){
params.teamMemberName = this.searchvalue
}
if(this.filterType == 4) {
params.startDate = this.startDate
params.endDate = this.endDate
}
getGBCappntlist(params).then(res=>{
if(res.result == '0') {
this.customerList = []
if(res.content && res.content.length != 0) {
this.customerList = res.content
}
} else {
this.$toast(res.resultMessage)
}
})
},
toChooseDate(type){
this.datePickerType = type
if(type == 'startDate') {
this.showDataPicker = true
}
if(type == 'endDate') {
this.showDataPicker = true
}
},
onConfirmDate(date){
if(this.datePickerType == 'startDate') {
let year = date.getFullYear()
let month = String(date.getMonth() + 1).padStart(2, '0');
let day = String(date.getDate()).padStart(2, '0');
this.startDate = year + '-' + month + '-' + day;
if(this.endDate) {
this.getGBCappntlist()
}
}
if(this.datePickerType == 'endDate') {
let year = date.getFullYear()
let month = String(date.getMonth() + 1).padStart(2, '0');
let day = String(date.getDate()).padStart(2, '0');
this.endDate = year + '-' + month + '-' + day;
if(this.startDate) {
this.getGBCappntlist()
}
}
this.showDataPicker = false
},
cancelDate(){
this.showDataPicker = false
},
goCustomerDetail(data){
this.$router.push({
path:'/GBC/customerDetail',
query:{
projectCode:this.$route.query.projectCode,
appntId:data.appntId
},
})
},
getProductList(){
let params = {
type: 'app'
}
getList(params).then(res=>{
if(res.result == '0') {
this.dataList4 = this.dataList4.concat(res.productList)
this.dataList4 = this.dataList4.concat(res.productList)
this.dataList4 = this.dataList4.concat(res.productList)
this.dataList4 = this.dataList4.concat(res.productList)
} else {
this.$toast(res.resultMessage)
}
})
},
goProductDetail(productCode) {
localStorage.productDetailCode = productCode
this.$jump({
flag: 'h5',
extra: {
url: location.origin + `/#/product/ProductDetail/${productCode}`
},
routerInfo: {
path: `/product/ProductDetail/${productCode}`
}
})
},
},
// watch: {
// isShowOthenSalarySource(nVal) {
// if (!nVal) {
// this.userInfo.otherSalarySource = ''
// }
// },
// },
computed: {
text() {
return this.currentRate.toFixed(0) + '%';
},
},
beforeRouteLeave(to, from, next) {
document.body.style.backgroundColor = ''
next()
}
}
</script>
<style lang="scss" scoped>
/deep/ .van-search__content{
background: #fff;
}
/deep/ .van-dropdown-menu{
height: 34px;
}
/deep/ .van-dropdown-item__content{
width: 40%;
left: 10px;
}
/deep/ .van-dropdown-menu{
background: #f5f5f5;
}
.colorBlock{
width: 8px;
height: 8px;
display: inline-block;
/*background: #000;*/
border-radius: 3px;
margin-right: 3px;
}
/deep/ .van-hairline--top-bottom::after{
border: none;
}
/deep/ .van-dropdown-menu{
background: #fff;
}
/deep/ .van-search__content{
background: #f5f5f5;
}
/deep/ [data-v-3f765cce] .van-dropdown-item__content{
box-shadow: 0px 0px 5px 5px #f5f5f5;
}
</style>

View File

@@ -0,0 +1,87 @@
<template>
<div>
<van-search v-model="searchvalue" shape="round" background="#fff" placeholder="搜索项目名称"/>
<div style="padding: 10px;">
<van-collapse v-for="item in yearList" :key="item.year" v-model="activeNames" style="margin-top: 10px;border-radius: 5px;">
<van-collapse-item :title="item.year" :name="item.year">
<div v-for="(ii,iis) in item.projects" @click="goprojectDetail(ii)" :key="iis" style="display: flex;justify-content: space-between;align-items: center;padding: 10px;border-bottom: 1px solid #eee;">
<div>
<p style="color:#323233;margin-bottom: 10px;">{{ii.projectName}}</p>
<p v-if="ii.enable == '1'">服务起止日期<span style="margin-left: 10px;">{{ii.startDate}}{{ii.endDate}}</span></p>
<p v-if="ii.enable == '0'">服务起止日期<span style="margin-left: 10px;color: red;">{{ii.startDate}}{{ii.endDate}}</span></p>
</div>
<van-icon name="arrow" />
</div>
</van-collapse-item>
</van-collapse>
</div>
</div>
</template>
<script>
import { Search, Collapse, CollapseItem, Icon } from 'vant'
import { getGBCprojectlistByYear } from '@/api/GBC/GBC'
export default {
components: {
[Search.name]: Search,
[Collapse.name]: Collapse,
[CollapseItem.name]: CollapseItem,
[Icon.name]: Icon,
},
data() {
return {
searchvalue:'',
activeNames: [],
yearList:[],
}
},
created() {
},
mounted(){
this.getGBCprojectlistByYear()
},
methods: {
getGBCprojectlistByYear(){
let params = {
}
getGBCprojectlistByYear(params).then(res=>{
if(res.result == '0') {
this.yearList = []
if(res.content && res.content.length != 0) {
this.yearList = res.content
}
} else {
this.$toast(res.resultMessage)
}
})
},
goprojectDetail(data){
this.$router.push({
path:'/GBC/projectDetail',
query:{
projectCode:data.projectCode
},
})
},
},
beforeRouteLeave(to, from, next) {
document.body.style.backgroundColor = ''
next()
}
}
</script>
<style lang="scss" scoped>
/deep/ .van-search__content{
background: #f7f8fa;
}
/deep/ .van-cell__title{
font-weight: bold;
}
/deep/ .van-collapse-item__title{
border-radius: 5px;
}
</style>

View File

@@ -19,7 +19,8 @@
<img v-if="signH5Img" :src="signImgUrl" style="height: 34px;margin-left: 20px;width: auto;"/>
</div>
<div class='bg-white bottom-btn'>
<van-button type='danger' size='large' :disabled='isDisabledComplite' @click='goNext' v-no-more-click='1000'>提交
<van-button type='danger' size='large' :disabled='isDisabledComplite' @click='goNext' v-no-more-click='1000'>
提交
</van-button>
</div>
<van-popup v-model="signSuccessShow" :close-on-click-overlay="false" round>
@@ -87,8 +88,6 @@
generateAgreementYB(dataParams).then(res=>{
this.$toast.clear()
if(res.result == 0){
window.sessionStorage.setItem('signName',this.$store.getters.getYBname)
// this.pdfUrl = config.assetsUpUrl + res.content.rgssUrl
//实例化
this.pdfh5 = new Pdfh5("#pdfH5ID", {
pdfurl: config.YB_agenturl + res.content.rgssUrl,
@@ -98,7 +97,7 @@
}).on("complete", function (status, msg, time) { //监听完成事件
console.log("状态:" + status + ",信息:" + msg + ",耗时:" + time + "毫秒,总页数:" + this.totalNum)
})
this.signH5Img = sessionStorage.getItem('signH5Img')
this.signH5Img = JSON.parse(window.sessionStorage.getItem('signH5Img')).val
if(this.signH5Img){
this.$set(this.signInfo, 'status', '2')
this.radio = '1'
@@ -144,17 +143,22 @@
}, 1000)
},
sign() {
let signInfo = {
type:'签名-银保代理人电子化合同签署',
text:this.$store.getters.getYBname,
keyWord: '乙方锟斤拷:'
}
window.sessionStorage.setItem('signInfo',JSON.stringify(signInfo))
window.location.href = 'http://'+window.location.host + '/signH5/1.html'
},
goNext(){
// this.signSuccessShow = true
// window.localStorage.removeItem('signInfo')
let params = {
uuid:this.$store.getters.getYBuuid,
signInfo: window.sessionStorage.getItem('signH5Val')
}
putContractInfo(params).then(res=>{
if(res.result == 0){
window.sessionStorage.clear()
this.signSuccessShow = true
window.localStorage.removeItem('signInfo')
}else{

View File

@@ -4,7 +4,7 @@
<index-bar :key="renovate"></index-bar>
</div>
<div class="mt8"></div>
<div v-for="(item, index) in chooseProducts" :key="index" class="mb20 bg-white mh15 pv15 pr15 pl10 radius5">
<div v-for="(item, index) in chooseProducts" :key="index" class="mb20 bg-white pv15 pr15 pl10 radius5">
<div class="flex mv10 align-items-c">
<div class="fs14 w45">
<van-tag plain type="danger">主险</van-tag>
@@ -27,12 +27,27 @@
<van-button size="small" round @click="deteleInsure(index)" plain type="danger">删除</van-button>
</div>
</div>
<div v-if="isFrom == 'sale' && isShow == false">
<div class="p15 pl8 fs14" style="margin-bottom: 20px;background: #fff;">
<van-radio-group v-model="isElecCont" class="flex" style="display: flex;align-items: center;">
<label>
<i class="red pr5">*</i>
保单形式
</label>
<van-radio name="1" class="ml10" style="display: flex;align-items: center;color: red;">
电子(不打印保单)
</van-radio>
<van-radio name="2" v-if="chooseProducts[0].mainRiskCode != 'GFRS_M0076' && chooseProducts[0].mainRiskCode != 'GFRS_M0077'" class="ml10" style="display: flex;align-items: center;color: red;">
电子+纸质
</van-radio>
</van-radio-group>
</div>
</div>
<div class="pt30 bg-white pb50">
<div class="text-center m20 pv15 border-dotted c-gray-base bg-white" @click="addProduct" v-if="isShow == true">
<span class="v-middle mr10" style="font-size:32px">+</span>添加产品
</div>
</div>
<van-dialog v-model="active_show" :show-confirm-button="false" class="dialog_class" style="position: relative; overflow: visible;">
<img class="icon_image" src="@/assets/images/kmh/close_bg.png" @click="active_show = false" />
<div class="pl20 pr20 mt30">
@@ -133,7 +148,7 @@
import { orderDetail, deleteOrderInfo, mainRiskList, mainRiskListProposal, calculatePremium } from '@/api/ebiz/common/common'
import { formatAllRisk } from '@/assets/js/utils/formatRiskList'
import { getDetail, deleteProposal } from '@/api/ebiz/proposal/proposal.js'
import { saveOrderActiveType,getActivityList, getDoubleRecordProductLst } from '@/api/ebiz/sale/sale.js'
import { saveOrderActiveType,getActivityList, getDoubleRecordProductLst, saveOrderType } from '@/api/ebiz/sale/sale.js'
import utilsAge from '@/assets/js/utils/age'
import IndexBar from '@/components/ebiz/sale/IndexBar'
import riskRules from './risk-rules'
@@ -162,6 +177,7 @@
renovate:'',//刷新子组件
manageComCode:'',//代理人管理机构 52贵州 45广西
isCrossChannel: 0, // 是否选择交叉渠道列表 0-否 1-是
isElecCont: '', // 保单形式
}
},
components: {
@@ -384,6 +400,9 @@
}
if (!isProposal) {
if (this.chooseProducts.length > 0) {
if(this.chooseProducts[0].mainRiskCode == 'GFRS_M0076' || this.chooseProducts[0].mainRiskCode == 'GFRS_M0077') {
this.isElecCont = '1'
}
if (this.chooseProducts[0].mainRiskCode == 'GFRS_M0026' && this.chooseProducts.length == 1) {
this.isShow = true
} else {
@@ -981,17 +1000,58 @@
localStorage.beneficiaryInfo = ''
localStorage.fromAddBeneficiaryInfo = ''
localStorage.removeItem('applicant')
this.$jump({
flag: 'h5',
extra: {
forbidSwipeBack: '1',
url: location.origin + '/#' + thismyurl,
needRefresh: '1'
},
routerInfo: {
path: thismyurl
if(this.isFrom == 'sale') {
if(!this.isElecCont) {
this.$toast('请选择保单形式')
return false
}
})
else {
let params = {
orderNO: this.$route.query.orderNo,
isElecCont: this.isElecCont
}
saveOrderType(params).then(res => {
if(res.result == 0) {
this.$jump({
flag: 'h5',
extra: {
forbidSwipeBack: '1',
url: location.origin + '/#' + thismyurl,
needRefresh: '1'
},
routerInfo: {
path: thismyurl
}
})
} else {
this.$toast(res.resultMessage)
}
})
// this.$jump({
// flag: 'h5',
// extra: {
// forbidSwipeBack: '1',
// url: location.origin + '/#' + thismyurl,
// needRefresh: '1'
// },
// routerInfo: {
// path: thismyurl
// }
// })
}
} else {
this.$jump({
flag: 'h5',
extra: {
forbidSwipeBack: '1',
url: location.origin + '/#' + thismyurl,
needRefresh: '1'
},
routerInfo: {
path: thismyurl
}
})
}
}
}
}
@@ -1072,5 +1132,15 @@
padding-right: 0px;
padding-bottom: 10px;
}
/deep/ .van-radio__icon--round{
display: flex;
align-items: center;
}
/deep/ .van-icon{
line-height: 100%;
}
/deep/ .van-radio__label{
color: red;
}
}
</style>

View File

@@ -196,6 +196,7 @@ export default {
if (res.result == 0) {
flag.manageComCode = res.manageComCode ? res.manageComCode.substring(2, 4) : ''
flag.jobNo = res.jobNo
flag.branchType = res.branchType
// branchType N1、1代表个险渠道 和 N5、5 代表中介渠道N代表内勤
if (res.branchType == 'N1' || res.branchType == '1') {
flag.branchTypeVal = 'G'

View File

@@ -275,8 +275,15 @@
//点我新增
addProposal() {
let thisToken = this.$CacheUtils.getLocItem('token')
let thisbranchType = ''
if(this.$CacheUtils.getLocItem('branchType') == '13') {
thisbranchType = this.$CacheUtils.getLocItem('branchType')
}
window.localStorage.clear()
this.$CacheUtils.setLocItem('token', thisToken)
if(thisbranchType) {
this.$CacheUtils.setLocItem('branchType', thisbranchType)
}
this.$jump({
flag: 'h5',
extra: {
@@ -290,8 +297,15 @@
//编辑
edit(item) {
let thisToken = this.$CacheUtils.getLocItem('token')
let thisbranchType = ''
if(this.$CacheUtils.getLocItem('branchType') == '13') {
thisbranchType = this.$CacheUtils.getLocItem('branchType')
}
window.localStorage.clear()
this.$CacheUtils.setLocItem('token', thisToken)
if(thisbranchType) {
this.$CacheUtils.setLocItem('branchType', thisbranchType)
}
//建议书列表 编辑=》制作中的建议书跳转到选择被保险人页面;
this.$CacheUtils.setLocItem('proposalNo', item.orderInfoDTO.orderNo)
this.$CacheUtils.setLocItem('canMoveOn', 1)

View File

@@ -56,12 +56,12 @@
</template>
</van-field>
</div>
<div class="item">
<van-field label-class="labels" readonly label="银行卡照片"></van-field>
<div class="cardList">
<van-uploader :max-count="1" :after-read="cardUpload" @delete="transferBankCardDelete" name="bankcardA" v-model="transfer.cardPhoto" />
</div>
</div>
<!-- <div class="item">-->
<!-- <van-field label-class="labels" readonly label="银行卡照片"></van-field>-->
<!-- <div class="cardList">-->
<!-- <van-uploader :max-count="1" :after-read="cardUpload" @delete="transferBankCardDelete" name="bankcardA" v-model="transfer.cardPhoto" />-->
<!-- </div>-->
<!-- </div>-->
</div>
<div class="checkedBox" v-if="issueType === '818901'">
<van-checkbox v-model="checked" class="checked" icon-size="16px" shape="square"
@@ -288,9 +288,9 @@ export default {
if (!regx.test(this.transfer.card)) {
return this.$toast('银行卡号不符合规则')
}
if (this.transfer.cardPhoto.length === 0) {
return this.$toast('请上传银行卡照片')
}
// if (this.transfer.cardPhoto.length === 0) {
// return this.$toast('请上传银行卡照片')
// }
}
if (this.transfer.bank) {
@@ -447,9 +447,9 @@ export default {
if (!regx.test(this.transfer.card)) {
return this.$toast('银行卡号不符合规则')
}
if (this.transfer.cardPhoto.length === 0) {
return this.$toast('请上传银行卡照片')
}
// if (this.transfer.cardPhoto.length === 0) {
// return this.$toast('请上传银行卡照片')
// }
}
}
if (!this.checked) {
@@ -498,7 +498,7 @@ export default {
}
// 补充资料类问题件
else if (this.issueType === '828601') {
problemData.list.push(...this.imageResultList)
// problemData.list.push(...this.imageResultList)
if (this.suplementDesc.trim()) {
problemData.content = this.suplementDesc.trim()
} else {
@@ -512,9 +512,9 @@ export default {
problemData.bankName = this.transfer.bank
problemData.bankNo = this.transfer.card
// 选择非终止转账时上传银行卡照片
if (this.transfer.mode === 3) {
problemData.list.push(this.transfer.cardUploadResult)
}
// if (this.transfer.mode === 3) {
// problemData.list.push(this.transfer.cardUploadResult)
// }
}
// 更新问题件数据
try {

View File

@@ -1,28 +1,7 @@
<template>
<div class="redRadioCheckbox">
<index-bar></index-bar>
<!-- 来源于支付失败后更换银行卡信息 -->
<div v-if="changeCard">
<div class="flex p10 align-items-c bg-white mt10">
<span>投保人附件</span>
</div>
<van-cell-group>
<van-field required label="银行卡账户" disabled />
</van-cell-group>
<div @click="test('fileListBank', '3', '0', saleInsuredInfo.appntId, saleInsuredInfo.idType)">
<van-uploader
name="fileListBank"
v-model="fileListBank"
:after-read="afterRead"
@delete="deleteImg"
:before-delete="beforeDelete"
class="mt10 ml20"
:max-count="1"
/>
</div>
</div>
<div v-else>
<div>
<!-- 投保人证件 -->
<div>
<div class="flex p10 align-items-c bg-white mt10">
@@ -80,20 +59,6 @@
</div>
</div>
</div>
<van-cell-group>
<van-field required label="银行卡正面" disabled />
</van-cell-group>
<div @click="test('fileListBank', '3', '0', saleInsuredInfo.appntId, saleInsuredInfo.idType)">
<van-uploader
name="fileListBank"
v-model="fileListBank"
:after-read="afterRead"
@delete="deleteImg"
:before-delete="beforeDelete"
class="mt10 ml20"
:max-count="1"
/>
</div>
<van-cell-group v-if="isNotify">
<van-field label="健康告知异常类资料" disabled />
</van-cell-group>
@@ -290,78 +255,42 @@ export default {
thisdialogcontent: '',
isNotify: false, //是否有异常的健康告知
isNotifyInsured: false,
// 订单号
orderNo: '',
// 保人异常告知
fileListNotifyInsured: [],
// 投保人异常告知
fileListNotify: [],
// 投保人身份证正面
fileListIdFront: [
// { url: 'https://img.yzcdn.cn/vant/cat.jpeg' }
// Uploader 根据文件后缀来判断是否为图片文件
],
// 投保人身份证
fileListIdBack: [],
// 投保人其他类型页面
fileLIstImg: [],
// 投保人选择的必选其他
saleInsuredInfoOther: [],
// 被保险人选择的必选其他
saleInsuredPersonInfoOther: [],
// 银行卡正面
fileListBank: [],
// 被保险人身份证正面
fileListIdFrontInsured: [],
// 被保险人身份证反面
fileListIdBackInsured: [],
// 被保险人银行账户
fileListBankInsured: [],
// 被保险人其他类型页面
fileLIstImgInsured: [],
// 受益人身份证正面
fileListIdFrontBeneficiary: [],
// 受益人身份证反面
fileListIdBackBeneficiary: [],
// 受益人其他类型页面
fileLIstImgBeneficiary: [],
// 受益人
bnfInfo:[],
orderNo: '', // 订单号
fileListNotifyInsured: [], // 被保人异常告知
fileListNotify: [], // 保人异常告知
fileListIdFront: [], // 投保人身份证正面
fileListIdBack: [], // 投保人身份证反面
fileLIstImg: [], // 投保人其他类型页面
saleInsuredInfoOther: [], // 投保人选择的必选其他
saleInsuredPersonInfoOther: [], // 被保险人选择的必选其他
fileListIdFrontInsured: [], // 被保险人身份证正面
fileListIdBackInsured: [], // 被保险人身份证反面
fileLIstImgInsured: [], // 被保险人其他类型页面
fileListIdFrontBeneficiary: [], // 受益人身份证
fileListIdBackBeneficiary: [], // 受益人身份证反面
fileLIstImgBeneficiary: [], // 受益人其他类型页面
bnfInfo:[], // 受益人
isDisabledBnf:true,
// 单选框
radio: '',
// 是否可以点击下一步
isDisabled: true,
// 数据字典证件类型
idType: [],
// 被保险人信息
saleInsuredPersonInfo: {},
// 投保人信息
saleInsuredInfo: {},
// 受益人信息
saleBtnfPersonInfo: {},
// 图片流
file: '',
// 图片名称
imgName: '',
// 图片返回数组
imgList: [],
radio: '', // 单选框
isDisabled: true, // 是否可以点击下一步
idType: [], // 数据字典证件类型
saleInsuredPersonInfo: {}, // 被保险人信息
saleInsuredInfo: {}, // 投保人信息
saleBtnfPersonInfo: {}, // 受益人信息
file: '', // 图片流
imgName: '', // 图片名称
imgList: [], // 图片返回数组
type: '',
// 是投保人还是被保险人
isAppant: '',
// 传给后端的list
list: [],
// 是哪个证件类型
id: '',
//受益人id
bnfId:'',
// 投保人被保险人是否是一个人 1为同一个人
isAppant: '', // 是投保人还是被保险人
list: [], // 传给后端的list
id: '', // 是哪个证件类型
bnfId:'', //受益人id
relationToAppnt: '',
changeCard: localStorage.changeCard,
salePageFlag: '9',
imageType: '',
subBusinessNo: '',
subBusinessType: '',
changeCard: localStorage.changeCard,
}
},
async created() {
@@ -491,9 +420,6 @@ export default {
//如果是从导航栏点击进入
this.salePageFlag = localStorage.salePageFlag
}
if (this.changeCard) {
document.body.style.backgroundColor = '#fff'
}
let that = this
// 投被保险人是否同人
// if (this.$CacheUtils.getLocItem('saleInsuredPersonInfo')) {
@@ -591,44 +517,6 @@ export default {
} else {
that.fileListIdBackInsured = []
}
// 银行卡
if (window.localStorage.getItem('bankCardUrlPath') != null) {
let bankCardUrl = {
url: config.imgDomain + `/returnImageStream?a=b.jpg&imgPath=${window.localStorage.getItem('bankCardUrlPath')}`,
}
that.fileListBank.push(bankCardUrl)
let obj = {
businessNo: that.orderNo,
businessType: '',
imageInfoType: '3',
rgssUrl: window.localStorage.getItem('bankCardUrlPath'),
subBusinessType: '0',
subBusinessNo: that.saleInsuredInfo.insuredId,
}
that.list.push(obj)
} else {
that.fileListBank = []
}
// 被保险人银行卡
// if (window.localStorage.getItem('bankCardUrlInsuredPath') != null) {
// let bankCardUrlInsured = {
// url: config.imgDomain + `/returnImageStream?a=b.jpg&imgPath=${window.localStorage.getItem('bankCardUrlInsuredPath')}`
// }
// that.fileListBankInsured.push(bankCardUrlInsured)
// let obj = {
// businessNo: that.orderNo,
// businessType: '',
// imageInfoType: '3',
// rgssUrl: window.localStorage.getItem('bankCardUrlInsuredPath'),
// subBusinessType: '1',
// subBusinessNo: that.saleInsuredPersonInfo.insuredId
// }
// that.list.push(obj)
// } else {
// that.fileListBankInsured = []
// }
// 保费超过20万的提示
// Dialog.alert({ title: '提示', message: '趸交保费≥20万元或期交保费*总期数≥20万元时须上传指定受益人证件正反面' })
},
beforeRouteLeave(to, from, next) {
document.body.style.backgroundColor = ''
@@ -681,20 +569,12 @@ export default {
} else if (detail.name == 'fileLIstImg') {
this.fileLIstImg = []
this.deleteImg(file, 'fileLIstImg')
} else if (detail.name == 'fileListBank') {
this.fileListBank = []
this.deleteImg(file, 'fileListBank')
// } else if (detail.name == 'fileListBankBack') {
// this.fileListBankBack = []
} else if (detail.name == 'fileListIdFrontInsured') {
}else if (detail.name == 'fileListIdFrontInsured') {
this.fileListIdFrontInsured = []
this.deleteImg(file, 'fileListIdFrontInsured')
} else if (detail.name == 'fileListIdBackInsured') {
this.fileListIdBackInsured = []
this.deleteImg(file, 'fileListIdBackInsured')
} else if (detail.name == 'fileListBankInsured') {
this.fileListBankInsured = []
this.deleteImg(file, 'fileListBankInsured')
} else if (detail.name == 'fileLIstImgInsured') {
this.fileLIstImgInsured = []
this.deleteImg(file, 'fileLIstImgInsured')
@@ -901,7 +781,7 @@ export default {
})
},
beforeNext(isDis) {
if (isDis && this.fileListBank.length > 0 && this.fileListIdBack.length > 0 && this.fileListIdFront.length > 0) {
if (isDis && this.fileListIdBack.length > 0 && this.fileListIdFront.length > 0) {
this.$toast('请勾选确认销售人员已见证各证件原件并拍照上传')
}
},
@@ -1053,22 +933,16 @@ export default {
saveInformation(data).then((res) => {
if (res.result == '0') {
this.$toast.clear()
if (!this.changeCard) {
window.localStorage.setItem('accountInfomation-bank', that.bank)
window.localStorage.setItem('accountInformationRadio', that.radio)
window.localStorage.setItem('accountInformation-isPaymentSelf', JSON.stringify(that.checked))
window.localStorage.setItem('jumpFromSign', '')
}
window.localStorage.setItem('accountInformationRadio', that.radio)
window.localStorage.setItem('accountInformation-isPaymentSelf', JSON.stringify(that.checked))
window.localStorage.setItem('jumpFromSign', '')
window.localStorage.removeItem('imgfront')
window.localStorage.removeItem('imgBackPath')
window.localStorage.removeItem('imgfrontPath')
window.localStorage.removeItem('imgfrontInsured')
window.localStorage.removeItem('imgfrontInsuredPath')
window.localStorage.removeItem('imgBackInsuredPath')
window.localStorage.removeItem('bankCardUrl')
window.localStorage.removeItem('bankCardUrlPath')
window.localStorage.removeItem('bankCardUrlInsured')
window.localStorage.removeItem('bankCardUrlInsuredPath')
that.$jump({
flag: 'h5',
extra: {
@@ -1105,13 +979,10 @@ export default {
const {
fileListIdFront,
fileListIdBack,
fileListBank,
// fileListBankBack,
radio,
fileLIstImg,
fileListIdFrontInsured,
fileListIdBackInsured,
fileListBankInsured,
fileLIstImgInsured,
saleInsuredPersonInfoOther,
saleInsuredInfoOther
@@ -1120,12 +991,9 @@ export default {
return {
fileListIdFront,
fileListIdBack,
fileListBank,
// fileListBankBack,
radio,
fileListIdFrontInsured,
fileListIdBackInsured,
fileListBankInsured,
fileLIstImgInsured,
fileLIstImg,
saleInsuredPersonInfoOther,
@@ -1136,125 +1004,33 @@ export default {
watch: {
listenChange(val) {
let that = this
if (this.changeCard) {
//从转账不成功跳过来的
if (val.fileListBank.length != '0' && val.radio !== '') {
that.isDisabled = false
} else {
that.isDisabled = true
}
if (
(val.fileListIdFront.length != '0' && val.fileListIdBack.length != '0' && val.fileListIdFrontInsured.length != '0' && val.fileListIdBackInsured.length != '0' && val.radio !== '') ||
(val.fileLIstImg.length != '0' && val.fileListIdFrontInsured.length != '0' && val.fileListIdBackInsured.length != '0' && val.radio !== '') ||
(val.fileListIdFront.length != '0' && val.fileListIdBack.length != '0' && val.fileListIdFrontInsured.length != '0' && val.fileListIdBackInsured.length != '0' && val.radio !== '') ||
(val.fileLIstImg.length != '0' && val.fileListIdFrontInsured.length != '0' && val.fileListIdBackInsured.length != '0' && val.radio !== '') ||
(val.fileListIdFront.length != '0' && val.fileListIdBack.length != '0' && val.fileLIstImgInsured.length != '0' && val.radio !== '') ||
(val.fileListIdFront.length != '0' && val.fileListIdBack.length != '0' && val.fileLIstImgInsured.length != '0' && val.radio !== '') ||
(val.fileLIstImg.length != '0' && val.fileLIstImgInsured.length != '0' && val.radio !== '') ||
(val.fileLIstImg.length != '0' && val.fileLIstImgInsured.length != '0' && val.radio !== '') ||
(val.fileListIdFront.length != '0' && val.fileListIdBack.length != '0' && val.radio !== '' && this.relationToAppnt == '1') ||
(val.fileLIstImg.length != '0' && val.radio !== '' && this.relationToAppnt == '1') ||
(val.saleInsuredInfoOther.length != '0' && val.fileListIdFrontInsured.length != '0' && val.fileListIdBackInsured.length != '0' && val.radio !== '') ||
(val.saleInsuredInfoOther.length != '0' && val.fileLIstImgInsured.length != '0' && val.radio !== '') ||
(val.saleInsuredPersonInfoOther.length != '0' && val.fileListIdFront.length != '0' && val.fileListIdBack.length != '0' && val.radio !== '') ||
(val.saleInsuredInfoOther.length != '0' && val.fileLIstImg.length != '0' && val.radio !== '') ||
(val.saleInsuredInfoOther.length != '0' && val.fileListIdFrontInsured.length != '0' && val.fileListIdBackInsured.length != '0' && val.radio !== '') ||
(val.saleInsuredInfoOther.length != '0' && val.fileLIstImg.length != '0' && val.radio !== '') ||
(val.fileListIdFront.length != '0' && val.fileListIdBack.length != '0' && val.saleInsuredPersonInfoOther.length != '0' && val.radio !== '') ||
(val.fileLIstImg.length != '0' && val.saleInsuredPersonInfoOther.length != '0' && val.radio !== '') ||
(val.saleInsuredInfoOther.length != '0' && val.saleInsuredPersonInfoOther.length != '0' && val.radio !== '') ||
(val.saleInsuredInfoOther.length != '0' && val.saleInsuredPersonInfoOther.length != '0' && val.radio !== '') ||
(val.saleInsuredInfoOther.length != '0' && val.radio !== '' && this.relationToAppnt == '1')
) {
//去掉收益人添加的,有收益人删掉该行显示下面影藏判断
that.isDisabled = false
} else {
if (
(val.fileListIdFront.length != '0' &&
val.fileListIdBack.length != '0' &&
val.fileListBank.length != '0' &&
// val.fileListBankBack.length != '0' &&
val.fileListIdFrontInsured.length != '0' &&
val.fileListIdBackInsured.length != '0' &&
val.radio !== '') ||
(val.fileLIstImg.length != '0' &&
val.fileListBank.length != '0' &&
// val.fileListBankBack.length != '0' &&
val.fileListIdFrontInsured.length != '0' &&
val.fileListIdBackInsured.length != '0' &&
val.radio !== '') ||
(val.fileListIdFront.length != '0' &&
val.fileListIdBack.length != '0' &&
val.fileListIdFrontInsured.length != '0' &&
val.fileListIdBackInsured.length != '0' &&
val.fileListBankInsured.length != '0' &&
val.radio !== '') ||
(val.fileLIstImg.length != '0' &&
val.fileListIdFrontInsured.length != '0' &&
val.fileListIdBackInsured.length != '0' &&
val.fileListBankInsured.length != '0' &&
val.radio !== '') ||
(val.fileListIdFront.length != '0' &&
val.fileListIdBack.length != '0' &&
val.fileListBankInsured.length != '0' &&
val.fileLIstImgInsured.length != '0' &&
val.radio !== '') ||
(val.fileListIdFront.length != '0' &&
val.fileListIdBack.length != '0' &&
val.fileListBank.length != '0' &&
// val.fileListBankBack.length != '0' &&
val.fileLIstImgInsured.length != '0' &&
val.radio !== '') ||
(val.fileListBank.length != '0' &&
// val.fileListBankBack.length != '0' &&
val.fileLIstImg.length != '0' &&
val.fileLIstImgInsured.length != '0' &&
val.radio !== '') ||
(val.fileLIstImg.length != '0' && val.fileLIstImgInsured.length != '0' && val.fileListBankInsured.length != '0' && val.radio !== '') ||
(val.fileListIdFront.length != '0' &&
val.fileListIdBack.length != '0' &&
val.fileListBank.length != '0' &&
// val.fileListBankBack.length != '0' &&
val.radio !== '' &&
this.relationToAppnt == '1') ||
(val.fileLIstImg.length != '0' &&
val.fileListBank.length != '0' &&
// val.fileListBankBack.length != '0' &&
val.radio !== '' &&
this.relationToAppnt == '1') ||
(val.saleInsuredInfoOther.length != '0' &&
val.fileListBank.length != '0' &&
// val.fileListBankBack.length != '0' &&
val.fileListIdFrontInsured.length != '0' &&
val.fileListIdBackInsured.length != '0' &&
val.radio !== '') ||
(val.saleInsuredInfoOther.length != '0' &&
val.fileListBank.length != '0' &&
// val.fileListBankBack.length != '0' &&
val.fileLIstImgInsured.length != '0' &&
val.radio !== '') ||
(val.saleInsuredPersonInfoOther.length != '0' &&
val.fileListBankInsured.length != '0' &&
val.fileListIdFront.length != '0' &&
val.fileListIdBack.length != '0' &&
val.radio !== '') ||
(val.saleInsuredInfoOther.length != '0' &&
val.fileListBank.length != '0' &&
// val.fileListBankBack.length != '0' &&
val.fileLIstImg.length != '0' &&
val.radio !== '') ||
(val.saleInsuredInfoOther.length != '0' &&
val.fileListBankInsured.length != '0' &&
val.fileListIdFrontInsured.length != '0' &&
val.fileListIdBackInsured.length != '0' &&
val.radio !== '') ||
(val.saleInsuredInfoOther.length != '0' && val.fileListBankInsured.length != '0' && val.fileLIstImg.length != '0' && val.radio !== '') ||
(val.fileListBank.length != '0' &&
// val.fileListBankBack.length != '0' &&
val.fileListIdFront.length != '0' &&
val.fileListIdBack.length != '0' &&
val.saleInsuredPersonInfoOther.length != '0' &&
val.radio !== '') ||
(val.fileListBank.length != '0' &&
// val.fileListBankBack.length != '0' &&
val.fileLIstImg.length != '0' &&
val.saleInsuredPersonInfoOther.length != '0' &&
val.radio !== '') ||
(val.saleInsuredInfoOther.length != '0' &&
val.fileListBank.length != '0' &&
// val.fileListBankBack.length != '0' &&
val.saleInsuredPersonInfoOther.length != '0' &&
val.radio !== '') ||
(val.saleInsuredInfoOther.length != '0' &&
val.saleInsuredPersonInfoOther.length != '0' &&
val.fileListBankInsured.length != '0' &&
val.radio !== '') ||
(val.saleInsuredInfoOther.length != '0' &&
val.fileListBank.length != '0' &&
// val.fileListBankBack.length != '0' &&
val.radio !== '' &&
this.relationToAppnt == '1')
) {
//去掉收益人添加的,有收益人删掉该行显示下面影藏判断
that.isDisabled = false
} else {
that.isDisabled = true
}
that.isDisabled = true
}
},
//监听受益人影像list的变化控制下一步按钮是否可点击
@@ -1263,21 +1039,16 @@ export default {
console.log(val,'val监听到but')
console.log(oldval,'oldval监听到but')
let that = this
if (this.changeCard) {
document.body.style.backgroundColor = '#fff'
this.isDisabledBnf = false
}else{
if(val.length > 0){
for (let index = 0; index < val.length; index++) {
let item = val[index]
that.isDisabledBnf = !this.checkBtnInfo(item)
if(this.checkBtnInfo(item) == false){
return false
}
if(val.length > 0){
for (let index = 0; index < val.length; index++) {
let item = val[index]
that.isDisabledBnf = !this.checkBtnInfo(item)
if(this.checkBtnInfo(item) == false){
return false
}
}else if (val.length == 0){
that.isDisabledBnf = false
}
}else if (val.length == 0){
that.isDisabledBnf = false
}
},
deep: true

View File

@@ -2,7 +2,7 @@
<div class="detail-container">
<van-collapse v-model="activeNames">
<!-- 保单信息 -->
<van-collapse-item title="投保单信息" name="1" class="pb10 pt10">
<van-collapse-item v-if="branchType == '13'" title="投保单信息" name="1" class="pb10 pt10">
<van-cell-group>
<van-cell title="投保单号" :value="OrderInfoDTO.orderNo" />
<van-cell title="投保日期" :value="OrderInfoDTO.appntDateLabel" />
@@ -14,9 +14,22 @@
</van-cell-group>
</van-collapse-item>
<!-- 项目信息 -->
<van-collapse-item title="项目信息" name="3" v-if="branchType == '13'" class="detail-title pb10">
<van-cell-group>
<van-cell title="平台名称" :value="ebizOrderGbcRelDTO.unitName" />
<van-cell title="项目名称" :value="ebizOrderGbcRelDTO.projectName" />
<van-cell title="团队组代码" :value="ebizOrderGbcRelDTO.teamCode" />
<van-cell title="服务截止日期" :value="ebizOrderGbcRelDTO.projectEndDate" />
<van-cell title="录单人工号" :value="ebizOrderGbcRelDTO.personCode" />
<van-cell title="出单人工号" :value="ebizOrderGbcRelDTO.teamLeaderCode" />
</van-cell-group>
</van-collapse-item>
<!-- 投保人信息 -->
<van-collapse-item title="投保人信息" name="2" class="detail-title pb10">
<van-cell-group>
<van-cell title="部门/科室" v-if="branchType == '13'" :value="ebizOrderGbcRelDTO.departmentName" />
<van-cell title="投保人" :value="appntDTO.name" />
<van-cell title="性别" :value="appntDTO.sex" />
<van-cell title="证件类型" :value="appntDTO.idType" />
@@ -104,10 +117,13 @@ import { getQuestionList } from '@/api/ebiz/questions'
export default {
data() {
return {
branchType:'',
// 折叠面板
activeNames: ['1'],
// 保单基本信息
OrderInfoDTO: {},
// 项目信息
ebizOrderGbcRelDTO:{},
// 投保人信息
appntDTO: {},
// 被保险人信息
@@ -123,6 +139,11 @@ export default {
// 获取保单详情
this.getPolicyDetail()
},
mounted() {
if(window.localStorage.getItem('branchType') == '13') {
this.branchType = '13'
}
},
components: {
[Collapse.name]: Collapse,
[CollapseItem.name]: CollapseItem,
@@ -158,6 +179,7 @@ export default {
res.orderDTO.orderInfoDTO.bnfFlag = '法定受益人'
}
this.OrderInfoDTO = res.orderDTO.orderInfoDTO
this.ebizOrderGbcRelDTO = res.orderDTO.ebizOrderGbcRelDTO
this.appntDTO = res.orderDTO.appntDTO
this.reason = res.orderDTO.reason

View File

@@ -2,8 +2,20 @@
<div class="insured-info-container pb60 redRadioCheckbox">
<!-- 基本信息 -->
<index-bar :key="renovate"></index-bar>
<!-- 项目信息 -->
<van-cell-group :border="false" v-if="branchType == '13'">
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 mt10 pv12">项目信息</p>
<van-field v-model="projectDTO.platformName" label="平台名称" name="平台名称" readonly placeholder="请输入"/>
<van-field v-model="projectDTO.projectName" label="项目名称" name="项目名称" readonly placeholder="请输入"/>
<van-field v-model="projectDTO.teamCode" label="团队组代码" name="团队组代码" readonly placeholder="请输入"/>
<van-field v-model="projectDTO.endDate" label="服务截至日期" name="服务截至日期" readonly placeholder="请输入"/>
<van-field v-model="projectDTO.personCode" label="录单人工号" name="录单人工号" readonly placeholder="请输入"/>
<van-field v-model="projectDTO.leaderCode" label="出单人工号" name="出单人工号" readonly placeholder="请输入"/>
<!-- <van-field :value="projectDTO.departmentName" @click="toSelect('GBCKS')" readonly required label="部门/科室" name="部门/科室" right-icon="arrow" placeholder="请选择"/>-->
</van-cell-group>
<van-cell-group class="mt10">
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">基本信息</p>
<van-field v-show="branchType == '13'" v-model="projectDTO.departmentName" @click="toSelect('GBCKS')" readonly required label="部门/科室" name="部门/科室" right-icon="arrow" placeholder="请选择"/>
<customer-picker
@on-choose="chooseCustomer"
v-validate="'required|salename'"
@@ -123,7 +135,14 @@
v-validate="'required|mobileLength11|mobileStartWith1|mobile'"
maxlength="11"
/>
<van-field v-model="userInfo.email" required label="电子邮箱" name="电子邮箱" placeholder="请输入" v-validate="'required|email'" clearable />
<van-field
v-model="userInfo.email"
required
label="电子邮箱"
name="电子邮箱"
placeholder="请输入"
v-validate="'required|email'"
clearable />
<van-field
v-model="userInfo.stature"
label="身高(cm)"
@@ -168,16 +187,16 @@
v-validate="'required'"
@click="toSelect('11')"
/>
<div class="p15 pl8 fs14">
<van-radio-group v-model="isElecCont" class="flex">
<label>
<i class="red pr5">*</i>
保单形式
</label>
<van-radio name="0" class="ml30">电子(不打印保单)</van-radio>
<van-radio name="2" class="ml20">电子+纸质</van-radio>
</van-radio-group>
</div>
<!-- <div class="p15 pl8 fs14">-->
<!-- <van-radio-group v-model="isElecCont" class="flex">-->
<!-- <label>-->
<!-- <i class="red pr5">*</i>-->
<!-- 保单形式-->
<!-- </label>-->
<!-- <van-radio name="0" class="ml30">电子(不打印保单)</van-radio>-->
<!-- <van-radio name="2" class="ml20">电子+纸质</van-radio>-->
<!-- </van-radio-group>-->
<!-- </div>-->
</van-cell-group>
<!-- <van-radio-group :border="false" v-model="userInfo.addressStatus" v-validate="'required'" label="设置为联系地址" name="设置为联系地址"> -->
<!-- 工作信息 -->
@@ -445,6 +464,7 @@
import { selectComp, getIdentityInfo } from './js/methods'
import SearchField from '@/components/common/SearchField'
import riskRules from '@/views/ebiz/common/risk-rules'
import { gbcProjectDetail, getDepartmentByProjectNo } from '@/api/GBC/GBC'
export default {
name: 'insuredInfo',
@@ -468,6 +488,21 @@
},
data() {
return {
branchType: '',
projectDTO:{
platformName:'',
projectName:'',
teamCode:'',
endDate:'',
personCode:'',
leaderCode:'',
departmentName:'',
departmentCode:'',
},
departmentList:[
{id: 1, text: '科室1'},
{id: 2, text: '科室2'}
],
thisdoubledialogshow: false,
thismyorderNo: '',
thismystr: '',
@@ -649,6 +684,17 @@
} else if (res.orderDTO.orderInfoDTO.productCode == 'GFRS_M0040') {
this.specilFlag = '1'
}
if(this.$route.query.orderNo) {
this.projectDTO.platformName = res.orderDTO.ebizOrderGbcRelDTO.unitName
this.projectDTO.projectName = res.orderDTO.ebizOrderGbcRelDTO.projectName
this.projectDTO.teamCode = res.orderDTO.ebizOrderGbcRelDTO.teamCode
this.projectDTO.endDate = res.orderDTO.ebizOrderGbcRelDTO.projectEndDate
this.projectDTO.personCode = res.orderDTO.ebizOrderGbcRelDTO.personCode
this.projectDTO.leaderCode = res.orderDTO.ebizOrderGbcRelDTO.teamLeaderCode
this.projectDTO.departmentName = res.orderDTO.ebizOrderGbcRelDTO.departmentName
this.projectDTO.departmentCode = res.orderDTO.ebizOrderGbcRelDTO.departmentCode
}
// ------------------------专为桂企写死--end---------------//
}
})
@@ -682,8 +728,47 @@
this.areaValue = '520000'
}
this.areaLists = areaLists
if(window.localStorage.getItem('branchType') == '13') {
this.branchType = '13'
if(!this.$route.query.orderNo) {
this.gbcProjectDetail()
}
this.getDepartmentByProjectNo()
}
},
methods: {
getDepartmentByProjectNo(){
let params = {
}
getDepartmentByProjectNo(params).then(res=>{
if(res.result == '0'){
this.departmentList = []
if(res.content && res.content.length != 0) {
res.content.forEach(item=>{
this.departmentList.push({
id: item.departmentCode,
text: item.departmentName
})
})
}
} else {
this.$toast(res.resultMessage)
}
})
},
gbcProjectDetail(){
let params = {
}
gbcProjectDetail(params).then(res=>{
if(res.result == '0') {
this.projectDTO = res.content
} else {
this.$toast(res.resultMessage)
}
})
},
isNewPeopleFlagTip(){
this.isNewPeopleFlagTipshow = true
},
@@ -815,6 +900,9 @@
case '11':
this.columns = DataDictionary.npType
break
case 'GBCKS':
this.columns = this.departmentList
break
}
// if (pickerType == '1') {
@@ -898,6 +986,9 @@
this.userInfo.marriageStatus = value.text
} else if (this.pickerType === '11') {
this.userInfo.npType = value.id
} else if (this.pickerType === 'GBCKS') {
this.projectDTO.departmentCode = value.id
this.projectDTO.departmentName = value.text
}
},
//证件起始截止日期
@@ -1056,10 +1147,10 @@
return false
}
}
if(this.isElecCont == '' || this.isElecCont == null || this.isElecCont == undefined){
this.$toast('请选择保单形式')
return false
}
// if(this.isElecCont == '' || this.isElecCont == null || this.isElecCont == undefined){
// this.$toast('请选择保单形式')
// return false
// }
// .then(valid => {
if (true === valid) {
localStorage.chooseProductCodesNew = localStorage.chooseProductCodes
@@ -1362,6 +1453,13 @@
}
this.thismystr = ''
params.orderDTO.appntDTO = this.userInfo
if(this.branchType == '13'){
params.orderDTO.ebizOrderGbcRelDTO = {
projectCode: this.projectDTO.projectCode,
departmentCode: this.projectDTO.departmentCode,
teamCode:this.projectDTO.teamCode,
}
}
console.log('params :>> ', params)
//------------------------专为桂企写死--begin---------------//
if (this.specilFlag == '1') {

View File

@@ -449,8 +449,15 @@ export default {
//投保单详情
async goDetail(order) {
let thisToken = this.$CacheUtils.getLocItem('token')
let thisbranchType = ''
if(this.$CacheUtils.getLocItem('branchType') == '13') {
thisbranchType = this.$CacheUtils.getLocItem('branchType')
}
window.localStorage.clear()
this.$CacheUtils.setLocItem('token', thisToken)
if(thisbranchType) {
this.$CacheUtils.setLocItem('branchType', thisbranchType)
}
window.localStorage.setItem('detailJump', '')
if (order.insuredDTOs[0]) {
if (order.insuredDTOs[0].riskDTOLst[0]) {
@@ -580,8 +587,16 @@ export default {
//新增
add() {
let thisToken = this.$CacheUtils.getLocItem('token')
let thisbranchType = ''
if(this.$CacheUtils.getLocItem('branchType') == '13') {
thisbranchType = this.$CacheUtils.getLocItem('branchType')
}
window.localStorage.clear()
this.$CacheUtils.setLocItem('token', thisToken)
if(thisbranchType) {
this.$CacheUtils.setLocItem('branchType', thisbranchType)
}
localStorage.orderNo = ''
localStorage.chooseProductCodes = '' //置空所选险种
this.$jump({

View File

@@ -882,17 +882,17 @@ export default {
border: none;
}
.allFalse {
position: fixed;
/*position: fixed;*/
overflow: hidden;
z-index: 10;
width: 100%;
}
.content-all-info {
padding-top: 153px;
}
.content-all-info2 {
padding-top: 90px;
}
/*.content-all-info {*/
/* padding-top: 153px;*/
/*}*/
/*.content-all-info2 {*/
/* padding-top: 90px;*/
/*}*/
.pb5{
padding-bottom: 5px;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1087,7 +1087,7 @@
that.signVal = window.localStorage.getItem('sign-val')
// 判断是不是万能险
let comment = window.localStorage.getItem('productCode')
if (comment == 'GFRS_M0003' || comment == 'GFRS_M0015' || comment == 'GFRS_M0017' || comment == 'GFRS_M0075' || comment == 'GFRS_M0080' || comment == 'GFRS_M0082' || comment == 'GFRS_M0083' || comment == 'GFRS_M0085') {
if (comment == 'GFRS_M0003' || comment == 'GFRS_M0015' || comment == 'GFRS_M0017' || comment == 'GFRS_M0075' || comment == 'GFRS_M0080') {
this.isComment = true
}
// 获取投保人信息

View File

@@ -0,0 +1,415 @@
<template>
<div class='insuranceInformation-container redRadioCheckbox'>
<div style="padding: 10px;overflow-x: auto;overflow-y: hidden;display: flex" v-if="!isPreview">
<p :key="index" v-for="(item, index) in fileList" :class="{ active: index+1 == current }"
@click="fileListClick(item,index)"
style="white-space: nowrap;display: flex;align-items: center;">
{{item.documentShortName}}({{index+1}}/{{fileList.length}})
<van-icon v-if="index != fileList.length - 1" name="arrow" style="margin: 0px 5px;"/>
</p>
</div>
<van-notice-bar :scrollable='false' v-if='!Time' class='notice'>
{{ `提示:阅读时长需在${this.Time ? this.time : this.number}秒以上` }}
</van-notice-bar>
<div id="pdf" style="overflow: scroll;background: #eee;" :style="[{height:isPreview ? '100vh' : '75vh'}]">
<div id="pdfH5ID"></div>
</div>
<div style="height: 20vh;" v-if="!isPreview">
<van-radio-group v-model='radio' class='pb10 pt10 pl10 fs20'>
<van-radio name='1' @click='click'>
本人确认已阅读<span>{{documentName}}</span>
</van-radio>
</van-radio-group>
<div v-if="fileList.length != 0 && fileList[this.current - 1].documentCode == '2' && signVal == '2' && (productType == '1' || productType == '2')" style="display: flex;align-items: center;margin-left: 40px;margin-top: 10px;font-size: 14px;">
<span class="fs20">投保人抄录</span>
<van-button type='danger' class="fs20" style="height: 30px;" size='mini' :disabled="chaoluButtonDisabled" round @click="gochaolu">
{{chaoluStatus ? '已抄录' : '抄录' }}
</van-button>
</div>
<div class='bg-white bottom-btn' v-if="current != '1'">
<van-button style="width: 30%;font-size: 20px;" plain type='danger' size='large' v-no-more-click='1000' @click="prevStep">上一步
</van-button>
<van-button style="width: 70%;font-size: 20px;" type='danger' size='large' :disabled='isDisabledComplite' @click='goNext' v-no-more-click='1000'>我已阅读确认并理解继续
</van-button>
</div>
<div class='bg-white bottom-btn' v-if="current == '1'">
<van-button class="fs20" type='danger' size='large' :disabled='isDisabledComplite' @click='goNext' v-no-more-click='1000'>我已阅读确认并理解继续
</van-button>
</div>
</div>
</div>
</template>
<script>
import { RadioGroup, Radio, Dialog, NoticeBar } from 'vant'
import Pdfh5 from "pdfh5";
import { saveInformation } from '@/api/ebiz/sale/sale'
export default {
data() {
return {
isPreview: false,
time:'10',
radio: '',
number: '',
src: location.origin + '/pdfjs/web/viewer.html?file=',
pdfUrl: '',
isDisabledComplite:true,
isOver: false,
current: 1,
pdfh5: null,
documentName: '',
fileList:[],
mainRiskCodes: '',
chaoluButtonDisabled: true,
chaoluStatus: false,
productType: '',
}
},
components: {
[RadioGroup.name]: RadioGroup,
[Radio.name]: Radio,
[Dialog.name]: Dialog,
[NoticeBar.name]: NoticeBar
},
created(){
if(this.$route.query.currentIndex){
this.Time = true
this.isPreview = true
} else if(window.sessionStorage.getItem('signH5Img')){
this.Time = true
} else {
this.timeOut()
}
setTimeout(() => {
// eslint-disable-next-line no-undef
EWebBridge.webCallAppInJs('webview_left_button', {
img: this.$assetsUrl + 'images/del-close-btn@3x.png',
intercept: '1' //是否拦截原生返回事件 1是 其他否
})
}, 100)
window.appCallBack = this.appCallBack
},
mounted() {
document.body.style.backgroundColor = '#fff'
this.productType = window.localStorage.getItem('productType')
this.mainRiskCodes = JSON.parse(window.localStorage.getItem('mainRiskCodes'))[0]
let agentSignFile = JSON.parse(window.localStorage.getItem('agentSignFile'))
let appntSignFile = JSON.parse(window.localStorage.getItem('appntSignFile'))
let insuredSignFile = JSON.parse(window.localStorage.getItem('insuredSignFile'))
// this.$nextTick(()=>{
if(window.localStorage.getItem('sign-val') == '3'){
this.signVal = '3'
this.fileList = agentSignFile
} else if(window.localStorage.getItem('sign-val') == '0' || window.localStorage.getItem('sign-val') == '2'){
this.signVal = '2'
this.fileList = appntSignFile
} else if(window.localStorage.getItem('sign-val') == '1') {
this.signVal = '1'
this.fileList = insuredSignFile
}
this.getOrderDetail()
// })
},
methods: {
getOrderDetail(){
if(this.$route.query.currentIndex) {
this.current = Number(this.$route.query.currentIndex)
} else {
for(let i = 0; i < this.fileList.length; i++) {
if (this.fileList[i].documentStatus == '0' || this.fileList[i].documentStatus == '2') {
this.current = i + 1
break
}
}
}
if(this.fileList[this.current - 1].documentCode == '2') {
if(window.sessionStorage.getItem('signH5Img')){
if(JSON.parse(window.sessionStorage.getItem('signH5Img')).type == '抄录' && JSON.parse(window.sessionStorage.getItem('signH5Img')).val){
this.chaoluStatus = true
}
}
}
if(this.$route.query.currentIndex){
this.changeFile(1)
} else {
if(window.sessionStorage.getItem('currentFile')) {
this.changeFile(1)
} else {
this.changeFile()
}
}
},
// 点击阅读时
click() {
let that = this
if (that.isOver == false) {
Dialog.confirm({
title: '提示',
message: '该内容涉及您的重大权益,请您仔细阅读',
showCancelButton: false
}).then(() => {
that.radio = ''
})
} else {
if(this.fileList[this.current - 1].documentCode == '2'){
that.chaoluButtonDisabled = false
}
}
},
timeOut() {
let that = this
let time = that.time
that.Time = false
that.number = `${time}`
let timer = setInterval(() => {
time--
if (time <= 0) {
time = 0
clearInterval(timer)
that.Time = true
that.isOver = true
}
that.number = `${time}`
}, 1000)
},
goNext(){
if(this.fileList[this.current - 1].documentCode == '2' && this.signVal == '2' && (this.productType == '1' || this.productType == '2')){
if(!this.chaoluStatus){
this.$toast('请先完成抄录')
return false
}
}
let params = {
orderType: 'SIGN_ORDER',
orderDTO: {
orderInfoDTO: {
orderNo: this.$route.query.orderNo
},
ebizSignDTOS: [
{
signOrRead: 'read',
signId: this.fileList[this.current - 1].signId,
orderNo: this.$route.query.orderNo,
documentCode: this.fileList[this.current - 1].documentCode,
documentStatus: '1',
documentType: this.fileList[this.current - 1].documentType,
signType: window.localStorage.getItem('sign-val')
}
]
}
}
/**
* @Author: LiuXiaoFeng
* @Description: documentCode为2 代表的是人身保险电子投保单
* 人身保险电子投保单文件需要抄录 保存时修改入参数据 copyValue是抄录的base64字符串 signOrRead需要变更为sign
* @Date: 2023/11/20
**/
if(this.fileList[this.current - 1].documentCode == '2' && this.signVal == '2' && (this.productType == '1' || this.productType == '2')){
params.orderDTO.ebizSignDTOS[0].caType = 'copy'
params.orderDTO.ebizSignDTOS[0].copyValue = JSON.parse(window.sessionStorage.getItem('signH5Img')).val
params.orderDTO.ebizSignDTOS[0].signOrRead = 'sign'
params.orderType = 'SIGN_COPY'
}
saveInformation(params).then(res=>{
if(res.result == 0) {
window.sessionStorage.removeItem('currentFile')
this.fileList[this.current - 1].documentStatus = '1'
if(window.localStorage.getItem('sign-val') == '0' || window.localStorage.getItem('sign-val') == '2'){
window.localStorage.setItem('appntSignFile',JSON.stringify(this.fileList))
} else {
window.localStorage.setItem('insuredSignFile',JSON.stringify(this.fileList))
}
if(this.current == this.fileList.length) {
this.$router.push({
path: '/sale/signDocuments',
query: {
orderNo: this.$route.query.orderNo
}
})
} else {
window.location.reload()
}
} else {
this.$toast(res.resultMessage)
}
})
},
gochaolu(){
let signInfo = {
type:'抄录',
// text:'本人已阅'
text:'本人已阅读保险条款、产品说明书和投保提示书,了解本产品的特点和保单利益的不确定性'
}
window.sessionStorage.setItem('signInfo',JSON.stringify(signInfo))
window.location.href = this.$mainUrl + '/signH5/1.html'
// window.location.href = 'http://'+window.location.host + '/signH5/1.html'
},
changeFile(readStatus){
this.documentName = this.fileList[this.current - 1].documentName
if(readStatus){
this.radio = '1'
this.isOver = true
this.Time = true
} else if(window.sessionStorage.getItem('signH5Img')) {
this.radio = '1'
this.isOver = true
this.chaoluButtonDisabled = false
} else {
this.radio = ''
this.isOver = false
this.timeOut()
}
let thispdfurl = ''
if(this.fileList[this.current - 1].originalUrl && (this.fileList[this.current - 1].originalUrl.indexOf('https://') != -1 || this.fileList[this.current - 1].originalUrl.indexOf('http://') != -1)) {
thispdfurl = this.fileList[this.current - 1].originalUrl
} else {
thispdfurl = this.$assetsUpUrl + this.fileList[this.current - 1].originalUrl
}
this.pdfh5 = new Pdfh5("#pdfH5ID", {
pdfurl: thispdfurl,
lazy:false,
scale:1
}).on("complete", function (status, msg, time) { //监听完成事件
console.log("状态:" + status + ",信息:" + msg + ",耗时:" + time + "毫秒,总页数:" + this.totalNum)
})
},
fileListClick(item,index) {
if(index != this.current - 1) {
if(index > this.current - 1) {
this.$toast('请逐一阅读文件')
}else{
this.fileList.forEach((item1,index1)=>{
if(index1 >= index) {
item1.documentStatus = '0'
}
})
if(window.localStorage.getItem('sign-val') == '3'){
window.localStorage.setItem('agentSignFile',JSON.stringify(this.fileList))
} else if(window.localStorage.getItem('sign-val') == '0' || window.localStorage.getItem('sign-val') == '2'){
window.localStorage.setItem('appntSignFile',JSON.stringify(this.fileList))
} else {
window.localStorage.setItem('insuredSignFile',JSON.stringify(this.fileList))
}
window.sessionStorage.setItem('currentFile',this.current)
window.location.reload()
}
}
},
prevStep(){
window.sessionStorage.removeItem('signH5Img')
this.fileList[this.current - 2].documentStatus = '0'
this.chaoluStatus = false
if(window.localStorage.getItem('sign-val') == '3'){
window.localStorage.setItem('agentSignFile',JSON.stringify(this.fileList))
} else if(window.localStorage.getItem('sign-val') == '0' || window.localStorage.getItem('sign-val') == '2'){
window.localStorage.setItem('appntSignFile',JSON.stringify(this.fileList))
} else {
window.localStorage.setItem('insuredSignFile',JSON.stringify(this.fileList))
}
window.sessionStorage.setItem('currentFile',this.current)
window.location.reload()
},
appCallBack(data) {
if (data.trigger == 'left_button_click') {
if (this.videoShow) {
this.$jump({
flag: 'navigation',
extra: {
title: '签名确认',
hiddenRight: '1'
}
})
return (this.videoShow = false)
}
return this.$dialog.confirm({
className: 'dialog-delete',
title: '提示',
message: '是否确认退出?',
cancelButtonColor: '#E9332E',
confirmButtonColor: '#FFFFFF'
})
.then(() => {
this.$jump({
flag: 'h5',
extra: {
title: '签名确认',
forbidSwipeBack: 1, //当前页面禁止右滑返回
url: location.origin + `/#/sale/SignatureConfirmation?orderNo=` + this.$route.query.orderNo
},
routerInfo: {
path: `/sale/SignatureConfirmation?orderNo=` + this.$route.query.orderNo,
type: '1'
}
})
})
.catch(() => {
return
})
}
},
},
computed: {
listenChange() {
const { isOver, radio } = this
return { isOver, radio }
}
},
beforeRouteLeave(to, from, next) {
document.body.style.backgroundColor = ''
if(this.fileList[this.current - 1].documentCode == '2'){
window.sessionStorage.removeItem('signH5Img')
window.sessionStorage.removeItem('signH5Val')
window.sessionStorage.removeItem('signInfo')
}
next()
},
watch: {
listenChange(val) {
let that = this
if (val.isOver == true && val.radio != '') {
that.isDisabledComplite = false
} else {
that.isDisabledComplite = true
}
}
}
}
</script>
<style lang='scss' scoped>
.notice {
width: 100%;
position: fixed;
top: 0;
z-index: 20;
}
#pdfH5ID{
width: 100vw;
}
/deep/.viewerContainer{
width: 100vw;
overflow: inherit;
}
/deep/ .pageNum{
display: none!important;
}
/deep/ .pageContainer{
margin: 2vw;
background: #fff;
img{
width: 96vw;
}
}
/deep/ .pinch-zoom-container{
height: 100%!important;
}
.active {
color: red;
}
/deep/ .fs20{
font-size: 20px;
.van-button__text{
padding: 10px 20px;
}
}
</style>

View File

@@ -0,0 +1,281 @@
<template>
<div class='insuranceInformation-container' style="padding: 15px;">
<div style="display: flex;align-items: center;font-weight: bold;" class="fs20">
<span style="width: 3px;background: red;height: 25px;"></span>
<span v-if="signVal == '0' || signVal == '2'" style="margin-left: 5px;">
投保人{{signName}}
</span>
<span v-if="signVal == '1'" style="margin-left: 5px;">
被保险人{{signName}}
</span>
<span v-if="signVal == '3'" style="margin-left: 5px;">
代理人{{signName}}
</span>
</div>
<div style="margin-top: 15px;font-weight: bold;line-height: 32px;font-size: 20px;" class="fs20">
<span v-if="signVal == '3'">
1.接下来您作为代理人将进行投保文件的签字请在签字前确保您已仔细阅读投保文件并了解投保文件的内容和含义确定投保单各项信息准确无误签字完成并成功提交说明您正式向我司提交投保申请
</span>
<span v-if="signVal == '0' || signVal == '2'">
1.接下来您作为投保人将进行投保文件的签字请在签字前确保您已仔细阅读投保文件并了解投保文件的内容和含义确定投保单各项信息准确无误签字完成并成功提交说明您正式向我司提交投保申请
</span>
<span v-if="signVal == '1'">
1.接下来您作为被保险人将进行投保文件的签字请在签字前确保您已仔细阅读投保文件并了解投保文件的内容和含义确定投保单各项信息准确无误签字完成并成功提交说明您正式向我司提交投保申请
</span>
</div>
<div style="border-bottom: 1px dashed #eee;padding-bottom: 15px;margin-top: 15px;">
<p style="font-size: 20px;font-weight: bold;">2.您将为以下文件进行统一签名</p>
<div v-for="item in fileList" style="margin-top: 15px;display: flex;justify-content: space-between;">
<span style="font-size: 20px;color: red;opacity: 0.7;width: 60%;display: inline-block;">{{item.name}}</span>
<span v-if="signstatus == '1'" style="display: flex;align-items: center;display: inline-block;width: 40%;">
<img :src="src" style="margin-left: 15px;width: 16px;"/>
<span style="font-size: 20px;color: #03ceaf;margin-left: 10px;">签署完成</span>
</span>
</div>
</div>
<div style="margin-top: 15px;display: flex;align-items: center;" class="fs20">
<span v-if="signVal == '0'" style="font-size: 20px;font-weight: bold;">代理人签名</span>
<span v-if="signVal == '0' || signVal == '2'" style="font-size: 20px;font-weight: bold;">投保人签名</span>
<span v-if="signVal == '1' && insuredAge >= 18" style="font-size: 20px;font-weight: bold;">被保险人签名</span>
<span v-if="signVal == '1' && insuredAge < 18" style="font-size: 20px;font-weight: bold;">被保险人监护人签名</span>
<van-button type="danger" size="small" round style="margin-left: 20px;height: 40px;font-size: 16px;" @click="gosign" class="fs20">
{{signstatus ? '重新签名' : '签名'}}
</van-button>
</div>
<div>
<img v-if="signstatus" :src="signImgUrl" style="height: 34px;margin-left: 20px;width: auto;"/>
</div>
<div class='bg-white bottom-btn'>
<van-button :disabled="nextDisabled" type='danger' size='normal' style="font-size: 20px;" block v-no-more-click='1000' @click="gonext">
完成阅读并签署
</van-button>
</div>
<van-dialog v-model="guardianshow" :showConfirmButton="false">
<div slot="title">
<p style="color: #E9332E;">监护人姓名</p>
</div>
<div class="guardianContent" style="padding: 20px 30px 30px;font-size: 14px;">
<van-field v-model="guardianName" label="" name="体重" placeholder="请输入"/>
</div>
<div style="text-align: center;margin-bottom: 30px;">
<van-button round type="danger" size="small" style="padding:0px 35px;font-size: 14px;" @click="gosign">确定</van-button>
</div>
</van-dialog>
</div>
</template>
<script>
import { saveInformation } from '@/api/ebiz/sale/sale'
import isChoose from '@/assets/images/u20257.png'
export default {
data() {
return {
src: isChoose,
fileList:[],
signImgUrl:'data:image/gif;base64,',
signstatus: false,
signVal: '',
signName: '',
insuredAge: '',
guardianshow: false,
guardianName: '',
nextDisabled:true,
}
},
components: {},
created(){
setTimeout(() => {
// eslint-disable-next-line no-undef
EWebBridge.webCallAppInJs('webview_left_button', {
img: this.$assetsUrl + 'images/del-close-btn@3x.png',
intercept: '1' //是否拦截原生返回事件 1是 其他否
})
}, 100)
window.appCallBack = this.appCallBack
},
mounted() {
this.signVal = window.localStorage.getItem('sign-val')
this.insuredAge = window.localStorage.getItem('insuredAge')
document.body.style.backgroundColor = '#fff'
let thisfilelist = ''
if(this.signVal == '3') {
thisfilelist = JSON.parse(window.localStorage.getItem('agentSignFile'))
this.signName = window.localStorage.getItem('recmdName')
} else if(this.signVal == '0' || this.signVal == '2') {
thisfilelist = JSON.parse(window.localStorage.getItem('appntSignFile'))
this.signName = window.localStorage.getItem('appntName')
} else if(this.signVal == '1') {
thisfilelist = JSON.parse(window.localStorage.getItem('insuredSignFile'))
this.signName = window.localStorage.getItem('insuredName')
}
console.log(thisfilelist)
thisfilelist.forEach(item => {
if(item.documentType == '1') {
this.fileList.push({
name:item.documentName,
status: '1'
})
}
})
this.signH5Img = sessionStorage.getItem('signH5Img')
if(JSON.parse(window.sessionStorage.getItem('signH5Img'))) {
if(JSON.parse(window.sessionStorage.getItem('signH5Img')).type == '签名' && JSON.parse(window.sessionStorage.getItem('signH5Img')).val)
this.signstatus = true
this.signImgUrl = this.signImgUrl + JSON.parse(window.sessionStorage.getItem('signH5Img')).val
}
if(window.sessionStorage.getItem('signH5Val')){
this.nextDisabled = false
}
},
methods: {
gosign(){
window.localStorage.setItem('orderNo',this.$route.query.orderNo)
let signInfo = {
type:'签名',
text:'',
keyWord: ''
}
if(this.signVal == '0' || this.signVal == '2') {
signInfo.text = window.localStorage.getItem('appntName')
signInfo.keyWord = '投保锟斤拷:'
}
if(this.signVal == '1'){
signInfo.text = window.localStorage.getItem('insuredName')
signInfo.keyWord = '被保锟斤拷:'
}
if(this.signVal == '3') {
signInfo.text = window.localStorage.getItem('recmdName')
signInfo.keyWord = '代理锟斤拷:'
}
if(this.insuredAge < 18 && !this.guardianName && this.signVal == '1') {
this.guardianshow = true
} else {
if(this.insuredAge < 18 && this.signVal == '1') {
signInfo.text = this.guardianName
}
window.sessionStorage.setItem('signInfo',JSON.stringify(signInfo))
window.location.href = this.$mainUrl + '/signH5/1.html'
// window.location.href = 'http://'+window.location.host + '/signH5/1.html'
}
},
gonext(){
let params = {
orderType: 'SIGN_MERGED_ORDER',
orderDTO: {
orderInfoDTO: {
orderNo: this.$route.query.orderNo
},
baseEncryp: window.sessionStorage.getItem('signH5Val'),
signValue: JSON.parse(window.sessionStorage.getItem('signH5Img')).val,
signType: window.localStorage.getItem('sign-val'),
ebizSignDTOS: []
}
}
let thisfilelist = ''
if(this.signVal == '3') {
thisfilelist = JSON.parse(window.localStorage.getItem('agentSignFile'))
} else if(this.signVal == '0' || this.signVal == '2') {
thisfilelist = JSON.parse(window.localStorage.getItem('appntSignFile'))
} else if(this.signVal == '1') {
thisfilelist = JSON.parse(window.localStorage.getItem('insuredSignFile'))
}
thisfilelist.forEach(item => {
if(item.documentType == '1') {
params.orderDTO.ebizSignDTOS.push({
signOrRead: 'sign',
signId:item.signId,
orderNo: this.$route.query.orderNo,
documentCode: item.documentCode,
documentStatus: '3',
documentType: '1',
signType: item.signType
})
}
})
saveInformation(params).then(res=>{
if(res.result == '0') {
if(window.sessionStorage.getItem('shareUrl')){
this.$router.push({
path: '/sale/SignatureConfirmation'+window.sessionStorage.getItem('shareUrl')
})
} else {
this.$router.push({
path: '/sale/SignatureConfirmation',
query: {
orderNo: this.$route.query.orderNo
}
})
}
} else {
this.$toast(res.resultMessage)
}
})
},
appCallBack(data) {
if (data.trigger == 'left_button_click') {
if (this.videoShow) {
this.$jump({
flag: 'navigation',
extra: {
title: '签名确认',
hiddenRight: '1'
}
})
return (this.videoShow = false)
}
return this.$dialog.confirm({
className: 'dialog-delete',
title: '提示',
message: '是否确认退出?',
cancelButtonColor: '#E9332E',
confirmButtonColor: '#FFFFFF'
})
.then(() => {
this.$jump({
flag: 'h5',
extra: {
title: '签名确认',
forbidSwipeBack: 1, //当前页面禁止右滑返回
url: location.origin + `/#/sale/SignatureConfirmation?orderNo=` + this.$route.query.orderNo
},
routerInfo: {
path: `/sale/SignatureConfirmation?orderNo=` + this.$route.query.orderNo,
type: '1'
}
})
})
.catch(() => {
return
})
}
},
},
computed: {
},
beforeRouteLeave(to, from, next) {
document.body.style.backgroundColor = ''
window.sessionStorage.removeItem('signH5Img')
window.sessionStorage.removeItem('signH5Val')
window.sessionStorage.removeItem('signInfo')
next()
},
watch: {
}
}
</script>
<style lang='scss' scoped>
.guardianContent{
/deep/ .van-cell{
border: 1px solid #eee;
}
}
.fs20{
font-size: 20px;
.van-button__text{
padding: 10px 20px;
}
}
</style>