mirror of
http://112.124.100.131/GFRS/ebiz-h5.git
synced 2025-12-25 06:02:52 +08:00
迁移理赔部分代码、前后端联调理赔报案,理赔申请至影像上传接口
This commit is contained in:
92
src/api/ebiz/claims/claims.js
Normal file
92
src/api/ebiz/claims/claims.js
Normal file
@@ -0,0 +1,92 @@
|
||||
import request from '@/assets/js/utils/request'
|
||||
import getUrl from '@/assets/js/utils/get-url'
|
||||
|
||||
//进度查询列表
|
||||
export function progress(data) {
|
||||
return request({
|
||||
url: getUrl(`/claim/claimApply/progress`, 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//进度查询详情
|
||||
export function progressDetail(data) {
|
||||
return request({
|
||||
url: getUrl(`/claim/claimApply/progressDetail`, 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//历史报案列表
|
||||
export function history(data) {
|
||||
return request({
|
||||
url: getUrl(`/claim/claimReport/history`, 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//理赔申请
|
||||
export function apply(data) {
|
||||
return request({
|
||||
url: getUrl(`/claim/claimApply/apply`, 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//客户列表查询
|
||||
export function customerList(data) {
|
||||
return request({
|
||||
url: getUrl(`/edor/customer/customerList`, 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//客户详情查询
|
||||
export function customerInfo(data) {
|
||||
return request({
|
||||
url: getUrl(`/edor/customer/customerInfo`, 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//理赔申请查询
|
||||
export function query(data) {
|
||||
return request({
|
||||
url: getUrl(`/claim/claimApply/query`, 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//理赔申请删除接口
|
||||
export function Delete(data) {
|
||||
return request({
|
||||
url: getUrl(`/claim/claimApply/delete`, 1),
|
||||
method: 'get',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//理赔报案提交
|
||||
export function report(data) {
|
||||
return request({
|
||||
url: getUrl(`/claim/claimReport/report`, 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 获取验证码
|
||||
export function getAuthCode(data) {
|
||||
return request({
|
||||
url: getUrl('/customer/authcode/loginedSend', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
BIN
src/assets/images/u20257.png
Normal file
BIN
src/assets/images/u20257.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
BIN
src/assets/images/u25897.png
Normal file
BIN
src/assets/images/u25897.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.1 KiB |
@@ -165,19 +165,19 @@ export default {
|
||||
id: 6,
|
||||
text: '台湾居民来往大陆通行证'
|
||||
},
|
||||
// {
|
||||
// id: 7,
|
||||
// text: '其他',
|
||||
// disabled: true
|
||||
// }
|
||||
{
|
||||
id: 8,
|
||||
text: '外国人永久居留身份证'
|
||||
},
|
||||
{
|
||||
id: 9,
|
||||
text: '港澳台居民居住证'
|
||||
id: 7,
|
||||
text: '其他',
|
||||
disabled: true
|
||||
}
|
||||
// {
|
||||
// id: 8,
|
||||
// text: '外国人永久居留身份证'
|
||||
// },
|
||||
// {
|
||||
// id: 9,
|
||||
// text: '港澳台居民居住证'
|
||||
// }
|
||||
],
|
||||
//投保人证件类型
|
||||
insuredIdType: [
|
||||
@@ -187,15 +187,17 @@ export default {
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
text: '户口本'
|
||||
text: '户口本',
|
||||
disabled: true
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
text: '出生证'
|
||||
text: '出生证',
|
||||
disabled: true
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
text: '外国人护照'
|
||||
text: '护照'
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
@@ -205,21 +207,52 @@ export default {
|
||||
id: 6,
|
||||
text: '台湾居民来往大陆通行证'
|
||||
},
|
||||
// {
|
||||
// id: 7,
|
||||
// text: '其他',
|
||||
// disabled: true
|
||||
// }
|
||||
{
|
||||
id: 8,
|
||||
text: '外国人永久居留身份证'
|
||||
id: 7,
|
||||
text: '其他',
|
||||
disabled: true
|
||||
}
|
||||
// {
|
||||
// id: 8,
|
||||
// text: '外国人永久居留身份证'
|
||||
// },
|
||||
// {
|
||||
// id: 9,
|
||||
// text: '港澳台居民居住证'
|
||||
// }
|
||||
],
|
||||
//出生证明
|
||||
birthType: [
|
||||
{
|
||||
id: 1,
|
||||
text: '身份证'
|
||||
},
|
||||
{
|
||||
id: 9,
|
||||
text: '港澳台居民居住证'
|
||||
id: 2,
|
||||
text: '户口本'
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
text: '出生证明',
|
||||
disabled: true
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
text: '护照'
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
text: '港澳居民通行证'
|
||||
},
|
||||
{
|
||||
id: 6,
|
||||
text: '台湾居民通行证'
|
||||
},
|
||||
{
|
||||
id: 7,
|
||||
text: '其他'
|
||||
}
|
||||
],
|
||||
|
||||
//投保人/被保人关系
|
||||
relationToAppnt: [
|
||||
{
|
||||
@@ -243,6 +276,61 @@ export default {
|
||||
text: '其他'
|
||||
}
|
||||
],
|
||||
//理赔报案投保人/被保人关系
|
||||
relationToAppnts: [
|
||||
{
|
||||
id: '00',
|
||||
text: '本人'
|
||||
},
|
||||
{
|
||||
id: '01',
|
||||
text: '配偶'
|
||||
},
|
||||
{
|
||||
id: '02',
|
||||
text: '父母'
|
||||
},
|
||||
{
|
||||
id: '03',
|
||||
text: '子女'
|
||||
},
|
||||
{
|
||||
id: '04',
|
||||
text: '其他'
|
||||
},
|
||||
{
|
||||
id: '05',
|
||||
text: '祖父母'
|
||||
},
|
||||
{
|
||||
id: '06',
|
||||
text: '孙子女'
|
||||
},
|
||||
{
|
||||
id: '07',
|
||||
text: '外祖父母'
|
||||
},
|
||||
{
|
||||
id: '08',
|
||||
text: '外孙子女'
|
||||
},
|
||||
{
|
||||
id: '09',
|
||||
text: '亲戚'
|
||||
},
|
||||
{
|
||||
id: '10',
|
||||
text: '发放房地产抵押贷款的金融机构'
|
||||
},
|
||||
{
|
||||
id: '11',
|
||||
text: '业务员'
|
||||
},
|
||||
{
|
||||
id: '12',
|
||||
text: '监护人'
|
||||
}
|
||||
],
|
||||
//婚姻状况
|
||||
marriage: [
|
||||
{
|
||||
@@ -307,14 +395,14 @@ export default {
|
||||
id: 1,
|
||||
text: '仅为中国税收居民'
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
text: '仅为非中国税收居民'
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
text: '既是中国税收居民又是其他国家(地区)税收居民'
|
||||
}
|
||||
// {
|
||||
// id: 2,
|
||||
// text: '仅为非中国税收居民'
|
||||
// },
|
||||
// {
|
||||
// id: 3,
|
||||
// text: '既是中国税收居民又是其他国家(地区)税收居民'
|
||||
// }
|
||||
],
|
||||
//交费期限
|
||||
payEndYear: [
|
||||
@@ -847,5 +935,254 @@ export default {
|
||||
}
|
||||
],
|
||||
// 健康状况
|
||||
healthCondition: []
|
||||
healthCondition: [],
|
||||
// 申请人身份
|
||||
applicantStatus: [{ id: '01', text: '本人' }, { id: '02', text: '监护人' }],
|
||||
// 出险申请类型
|
||||
applyType: [
|
||||
{
|
||||
id: '01',
|
||||
text: '疾病残疾',
|
||||
docus: [
|
||||
{ id: 1, text: '理赔申请书' },
|
||||
{ id: 2, text: '保险合同' },
|
||||
{ id: 3, text: '被保险人身份证明' },
|
||||
{ id: 4, text: '申请人身份证明,银行账户复印件' },
|
||||
{ id: 5, text: '理赔授权委托书,受托人身份证明 (仅适用于代办)' },
|
||||
{ id: 6, text: '诊断证明,门急诊病历,住院病历' },
|
||||
{ id: 8, text: '病理及各项检查检验报告' },
|
||||
{ id: 9, text: '伤残鉴定书' }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: '02',
|
||||
text: '意外残疾',
|
||||
docus: [
|
||||
{ id: 1, text: '理赔申请书' },
|
||||
{ id: 2, text: '保险合同' },
|
||||
{ id: 3, text: '被保险人身份证明' },
|
||||
{ id: 4, text: '申请人身份证明,银行账户复印件' },
|
||||
{ id: 5, text: '理赔授权委托书,受托人身份证明 (仅适用于代办)' },
|
||||
{ id: 6, text: '诊断证明,门急诊病历,住院病历' },
|
||||
{ id: 8, text: '病理及各项检查检验报告' },
|
||||
{ id: 9, text: '伤残鉴定书' },
|
||||
{ id: 10, text: '意外事故证明' }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: '03',
|
||||
text: '重大疾病',
|
||||
docus: [
|
||||
{ id: 1, text: '理赔申请书' },
|
||||
{ id: 2, text: '保险合同' },
|
||||
{ id: 3, text: '被保险人身份证明' },
|
||||
{ id: 4, text: '申请人身份证明,银行账户复印件' },
|
||||
{ id: 5, text: '理赔授权委托书,受托人身份证明 (仅适用于代办)' },
|
||||
{ id: 6, text: '诊断证明,门急诊病历,住院病历' },
|
||||
{ id: 8, text: '病理及各项检查检验报告' },
|
||||
{ id: 10, text: '意外事故证明' }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: '04',
|
||||
text: '特定疾病',
|
||||
docus: [
|
||||
{ id: 1, text: '理赔申请书' },
|
||||
{ id: 2, text: '保险合同' },
|
||||
{ id: 3, text: '被保险人身份证明' },
|
||||
{ id: 4, text: '申请人身份证明,银行账户复印件' },
|
||||
{ id: 5, text: '理赔授权委托书,受托人身份证明 (仅适用于代办)' },
|
||||
{ id: 6, text: '诊断证明,门急诊病历,住院病历' },
|
||||
{ id: 8, text: '病理及各项检查检验报告' },
|
||||
{ id: 10, text: '意外事故证明' }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: '05',
|
||||
text: '疾病医疗',
|
||||
docus: [
|
||||
{ id: 1, text: '理赔申请书' },
|
||||
{ id: 2, text: '保险合同' },
|
||||
{ id: 3, text: '被保险人身份证明' },
|
||||
{ id: 4, text: '申请人身份证明,银行账户复印件' },
|
||||
{ id: 5, text: '理赔授权委托书,受托人身份证明 (仅适用于代办)' },
|
||||
{ id: 6, text: '诊断证明,门急诊病历,住院病历' },
|
||||
{ id: 7, text: '门急诊及住院费用原始收据,费用明细清单,第三方报销证明' },
|
||||
{ id: 8, text: '病理及各项检查检验报告' }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: '06',
|
||||
text: '意外医疗',
|
||||
docus: [
|
||||
{ id: 1, text: '理赔申请书' },
|
||||
{ id: 2, text: '保险合同' },
|
||||
{ id: 3, text: '被保险人身份证明' },
|
||||
{ id: 4, text: '申请人身份证明,银行账户复印件' },
|
||||
{ id: 5, text: '理赔授权委托书,受托人身份证明 (仅适用于代办)' },
|
||||
{ id: 6, text: '诊断证明,门急诊病历,住院病历' },
|
||||
{ id: 7, text: '门急诊及住院费用原始收据,费用明细清单,第三方报销证明' },
|
||||
{ id: 8, text: '病理及各项检查检验报告' },
|
||||
{ id: 10, text: '意外事故证明' }
|
||||
]
|
||||
},
|
||||
{
|
||||
id: '07',
|
||||
text: '保费豁免',
|
||||
docus: [
|
||||
{ id: 1, text: '理赔申请书' },
|
||||
{ id: 2, text: '保险合同' },
|
||||
{ id: 3, text: '被保险人身份证明' },
|
||||
{ id: 4, text: '申请人身份证明,银行账户复印件' },
|
||||
{ id: 5, text: '理赔授权委托书,受托人身份证明 (仅适用于代办)' },
|
||||
{ id: 6, text: '诊断证明,门急诊病历,住院病历' },
|
||||
{ id: 8, text: '病理及各项检查检验报告' },
|
||||
{ id: 9, text: '伤残鉴定书' },
|
||||
{ id: 10, text: '意外事故证明' },
|
||||
{ id: 11, text: '死亡证明书,户籍注销证明,遗体处理证明' }
|
||||
]
|
||||
}
|
||||
],
|
||||
// 理赔证件类型
|
||||
lpIdType: [
|
||||
{
|
||||
id: '0',
|
||||
text: '身份证'
|
||||
},
|
||||
{
|
||||
id: '1',
|
||||
text: '户口本'
|
||||
},
|
||||
{
|
||||
id: '2',
|
||||
text: '出生证'
|
||||
},
|
||||
{
|
||||
id: '3',
|
||||
text: '外国人永久居留身份证'
|
||||
},
|
||||
{
|
||||
id: '4',
|
||||
text: '外国人护照'
|
||||
},
|
||||
{
|
||||
id: '5',
|
||||
text: '港澳居民来往内地通行证'
|
||||
},
|
||||
{
|
||||
id: '6',
|
||||
text: '台湾居民来往大陆通行证'
|
||||
},
|
||||
{
|
||||
id: '7',
|
||||
text: '港澳台居民居住证'
|
||||
},
|
||||
{
|
||||
id: '8',
|
||||
text: '台湾身份证'
|
||||
},
|
||||
{
|
||||
id: '9',
|
||||
text: '其他'
|
||||
}
|
||||
],
|
||||
needTodo: [
|
||||
{
|
||||
id: '01',
|
||||
text: '办理理赔申请'
|
||||
}
|
||||
],
|
||||
chargeList: [
|
||||
{
|
||||
id: 0,
|
||||
text: '西药费'
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
text: '中成药费'
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
text: '中草药费'
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
text: '挂号费'
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
text: '诊查费'
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
text: '检查费'
|
||||
},
|
||||
{
|
||||
id: 6,
|
||||
text: '化验费'
|
||||
},
|
||||
{
|
||||
id: 6,
|
||||
text: '化验费'
|
||||
},
|
||||
{
|
||||
id: 7,
|
||||
text: '放射检查费'
|
||||
},
|
||||
{
|
||||
id: 8,
|
||||
text: '治疗费'
|
||||
},
|
||||
{
|
||||
id: 9,
|
||||
text: '特检费'
|
||||
},
|
||||
{
|
||||
id: 10,
|
||||
text: '麻醉费'
|
||||
},
|
||||
{
|
||||
id: 11,
|
||||
text: '手术费'
|
||||
},
|
||||
{
|
||||
id: 12,
|
||||
text: '输血费'
|
||||
},
|
||||
{
|
||||
id: 13,
|
||||
text: '材料费'
|
||||
},
|
||||
{
|
||||
id: 14,
|
||||
text: '护理费'
|
||||
},
|
||||
{
|
||||
id: 15,
|
||||
text: '床位费'
|
||||
},
|
||||
{
|
||||
id: 16,
|
||||
text: '生育费'
|
||||
},
|
||||
{
|
||||
id: 17,
|
||||
text: '诊疗费'
|
||||
},
|
||||
{
|
||||
id: 18,
|
||||
text: '其他'
|
||||
}
|
||||
],
|
||||
//是否购买其他公司保险"
|
||||
cureList:[
|
||||
{
|
||||
id: 1,
|
||||
text: '是'
|
||||
},
|
||||
{
|
||||
id: 0,
|
||||
text: '否'
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
4121
src/assets/js/utils/hospital.js
Normal file
4121
src/assets/js/utils/hospital.js
Normal file
File diff suppressed because it is too large
Load Diff
89
src/components/ebiz/agentEenter/RsTop.vue
Normal file
89
src/components/ebiz/agentEenter/RsTop.vue
Normal file
@@ -0,0 +1,89 @@
|
||||
<template>
|
||||
<div>
|
||||
<div>
|
||||
<van-notice-bar color="#1989fa" background="#ecf9ff" wrapable :scrollable="false">
|
||||
<van-icon name="info-o" class="v-middle" />
|
||||
<span v-if="tabType">个险营销员需如实填写下列各项内容及真实提供简历、学历证明、身份证等材料。如有不实,后果自负。</span>
|
||||
<span v-else>
|
||||
上述健康告知各项,若答复“有”、“是”时,请注明号数并详细说明,如有诊治,请告知原因、日期、医院名称及诊治结果。
|
||||
</span>
|
||||
</van-notice-bar>
|
||||
</div>
|
||||
|
||||
<div class="steps_w w325 mh20 mv8 h20 relative ">
|
||||
<div class="step flex justify-content-s align-items-c h20 absolute top0 left0">
|
||||
<div class="circle radius50 w12 h12 bg-gray "></div>
|
||||
<div class="wire w50 h2 bg-gray"></div>
|
||||
<div class="circle radius50 w12 h12 bg-gray"></div>
|
||||
<div class="wire w50 h2 bg-gray"></div>
|
||||
<div class="circle radius50 w12 h12 bg-gray"></div>
|
||||
<div class="wire w50 h2 bg-gray"></div>
|
||||
<div class="circle radius50 w12 h12 bg-gray"></div>
|
||||
<div class="wire w50 h2 bg-gray"></div>
|
||||
<div class="circle radius50 w12 h12 bg-gray "></div>
|
||||
<div class="wire w50 h2 bg-gray"></div>
|
||||
<div class="circle radius50 w12 h12 bg-gray"></div>
|
||||
</div>
|
||||
<div class="step flex justify-content-s h20 align-items-c absolute top0 left0">
|
||||
<div class="flex justify-content-s align-items-c" v-for="(item, i) in active" :key="i">
|
||||
<div class="wire w41 h2 bg-green-dark" v-if="item != '1'"></div>
|
||||
<div class="lh20 fs12 white radius50 w20 h20 bg-green-dark">{{ item }}</div>
|
||||
</div>
|
||||
|
||||
<!-- <div class="wire w41 h2 bg-green-dark"></div>
|
||||
<div class="lh20 fs12 white radius50 w20 h20 bg-green-dark">3</div>
|
||||
<div class="wire w41 h2 bg-green-dark"></div>
|
||||
<div class="lh20 fs12 white radius50 w20 h20 bg-green-dark">4</div>
|
||||
<div class="wire w41 h2 bg-green-dark"></div>
|
||||
<div class="lh20 fs12 white radius50 w20 h20 bg-green-dark">5</div>
|
||||
<div class="wire w41 h2 bg-green-dark"></div>
|
||||
<div class="lh20 fs12 white radius50 w20 h20 bg-green-dark">6</div> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { NoticeBar, Icon, Steps, progress, Step } from 'vant'
|
||||
export default {
|
||||
name: 'RsTop',
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
props: {
|
||||
active: {
|
||||
type: Array,
|
||||
default: function() {
|
||||
return []
|
||||
}
|
||||
},
|
||||
tabType: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
}
|
||||
},
|
||||
components: {
|
||||
[NoticeBar.name]: NoticeBar,
|
||||
[Icon.name]: Icon,
|
||||
[Steps.name]: Steps,
|
||||
[Step.name]: Step,
|
||||
[progress.name]: progress
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.step {
|
||||
.circle {
|
||||
overflow: hidden;
|
||||
}
|
||||
.lh20 {
|
||||
text-align: center;
|
||||
// line-height: 20px;
|
||||
}
|
||||
.wire {
|
||||
// width: 54px;
|
||||
// height: 2px;
|
||||
// background: red;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
183
src/components/ebiz/claims/Customer.vue
Normal file
183
src/components/ebiz/claims/Customer.vue
Normal file
@@ -0,0 +1,183 @@
|
||||
<template>
|
||||
<div class="customer">
|
||||
<div class="search-container bg-white">
|
||||
<div class="search-content flex relative">
|
||||
<van-dropdown-menu class="pr5 ml10 mt5" active-color="#e9332e" v-if="isSearch">
|
||||
<van-dropdown-item v-model="selected" :options="options" />
|
||||
</van-dropdown-menu>
|
||||
|
||||
<van-search
|
||||
class="search-box flex1"
|
||||
v-model="searchVal"
|
||||
show-action
|
||||
@search="onSearch"
|
||||
@cancel="onCancel"
|
||||
>
|
||||
<div slot="action" v-if="isSearch" @search="onSearch" @click="onSearch">搜索</div>
|
||||
<div slot="action" v-else @click="onCancel">取消</div>
|
||||
</van-search>
|
||||
</div>
|
||||
|
||||
<ul class="search-list-container" v-if="list.length">
|
||||
<li
|
||||
class="search-list-item flex pt10 pb10 pl15 pr15 relative"
|
||||
v-for="(item, index) in list"
|
||||
@click="choose(item,index)"
|
||||
:key="index"
|
||||
>
|
||||
<img
|
||||
src="@/assets/images/bnf_avatar.png"
|
||||
width="60"
|
||||
height="60"
|
||||
class="radius50 v-middle item-avatar mr20 ml10"
|
||||
/>
|
||||
<div class="item-info fl fs12">
|
||||
<p class="username mb5">{{ item.name }}</p>
|
||||
<p class="mobile gray mb5">手机号: {{ item.mobile }}</p>
|
||||
<p class="idno gray">证件号码: {{ item.idno }}</p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div v-if="isShow" class="list flex flex-direction-colunm justify-content-c align-items-c">
|
||||
<img class="w250" src="@/assets/images/pic_page-non.png" />
|
||||
<div class="fs17 c-gray-dark mt60">暂无客户信息!</div>
|
||||
<!-- <van-button round @click="goToDetail" size="large" type="danger" class="mt20" style="width:50%;" plain v-no-more-click="1000">理赔申请</van-button> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Search, DropdownMenu, DropdownItem } from 'vant'
|
||||
import { customerList, getAgentCustomerInfo } from '@/api/ebiz/claims/claims'
|
||||
export default {
|
||||
name: 'Customer',
|
||||
data() {
|
||||
return {
|
||||
searchVal: '', // 搜索关键词
|
||||
list: [
|
||||
// {
|
||||
// name: '哈哈哈哈1',
|
||||
// mobile: '13821329641',
|
||||
// idno: '120224198902183324'
|
||||
// },
|
||||
// {
|
||||
// name: '哈哈哈哈2',
|
||||
// mobile: '13000000000',
|
||||
// idno: '00000000000000000'
|
||||
// }
|
||||
],
|
||||
isSuccess: false,//??
|
||||
selected: 0,
|
||||
isSearch: true, // 是否显示搜索按钮
|
||||
isShow: false, //无客户数据时显示
|
||||
options: [{ text: '客户姓名', value: 0 }, { text: '证件号码', value: 1 }, { text: '手机号', value: 2 }],
|
||||
from: this.$route.query.from
|
||||
}
|
||||
},
|
||||
components: {
|
||||
[Search.name]: Search,
|
||||
[DropdownMenu.name]: DropdownMenu,
|
||||
[DropdownItem.name]: DropdownItem
|
||||
},
|
||||
mounted() {
|
||||
document.body.style.backgroundColor = '#fff'
|
||||
},
|
||||
beforeRouteLeave(to, from, next) {
|
||||
document.body.style.backgroundColor = ''
|
||||
next()
|
||||
},
|
||||
methods: {
|
||||
// 搜索
|
||||
onSearch() {
|
||||
let data = {
|
||||
queryParam: this.searchVal,
|
||||
queryType: '111111',
|
||||
agentCode: this.selected //0客户姓名,1证件号码,2手机号
|
||||
}
|
||||
customerList(data).then(res => {
|
||||
if (res.result == 0) {
|
||||
console.log(res)
|
||||
this.list = res.content
|
||||
if (this.list.length) {
|
||||
this.isShow = false
|
||||
} else {
|
||||
this.isShow = true
|
||||
}
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
this.isSearch = false
|
||||
},
|
||||
// 取消
|
||||
onCancel() {
|
||||
this.list = []
|
||||
this.selected = 0
|
||||
this.searchVal = ''
|
||||
this.isSearch = true
|
||||
},
|
||||
choose(data,index) {
|
||||
// console.log(data)
|
||||
// let params = {
|
||||
// customerNumber: data.customerNumber
|
||||
// }
|
||||
let Data = []
|
||||
Data.push(data)
|
||||
Data.push(index)
|
||||
this.$emit('on-choose', Data)
|
||||
this.list = []
|
||||
this.selected = 0
|
||||
this.searchVal = ''
|
||||
this.isSearch = true
|
||||
this.$jump({
|
||||
flag: 'navigation',
|
||||
extra: {
|
||||
title: '报案申请',
|
||||
hiddenRight: '1'
|
||||
}
|
||||
})
|
||||
// getAgentCustomerInfo(params).then(res => {
|
||||
// console.log(res, '详情')
|
||||
// if (res.result == '0') {
|
||||
// this.isSuccess = true
|
||||
// let content = res.content
|
||||
// this.$emit('on-choose', content)
|
||||
// }
|
||||
// })
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.search-container {
|
||||
.search-content:not(:last-child)::after {
|
||||
position: absolute;
|
||||
box-sizing: border-box;
|
||||
content: ' ';
|
||||
pointer-events: none;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 4.26667vw;
|
||||
border-bottom: 1px solid #dadada;
|
||||
-webkit-transform: scaleY(0.5);
|
||||
transform: scaleY(0.5);
|
||||
}
|
||||
.search-list-item:not(:last-child)::after {
|
||||
position: absolute;
|
||||
box-sizing: border-box;
|
||||
content: ' ';
|
||||
pointer-events: none;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 4.26667vw;
|
||||
border-bottom: 1px solid #dadada;
|
||||
-webkit-transform: scaleY(0.5);
|
||||
transform: scaleY(0.5);
|
||||
}
|
||||
// /deep/[class*='van-hairline']::after {
|
||||
// border: none;
|
||||
// }
|
||||
}
|
||||
</style>
|
||||
167
src/components/ebiz/claims/CustomerPicker.vue
Normal file
167
src/components/ebiz/claims/CustomerPicker.vue
Normal file
@@ -0,0 +1,167 @@
|
||||
<template>
|
||||
<div id="customer-picker">
|
||||
<van-field
|
||||
:label="label"
|
||||
:value="name"
|
||||
@input="onChange"
|
||||
:placeholder="placeholder"
|
||||
:required="required"
|
||||
:right-icon="$assetsUrl + 'images/avatar.png'"
|
||||
@click-right-icon="chooseCustomer"
|
||||
:readonly="readonly"
|
||||
/>
|
||||
<van-popup v-model="parentShowPicker" position="bottom">
|
||||
<customer @on-choose="choose" :code="code" :name="name" :life="life" :health="health"></customer>
|
||||
</van-popup>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { Field, Popup, Icon, Sticky } from 'vant'
|
||||
import Customer from './Customer'
|
||||
export default {
|
||||
name: 'CustomerPicker',
|
||||
props: {
|
||||
label: {
|
||||
type: String,
|
||||
default: '11'
|
||||
},
|
||||
value: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
chooseName: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
placeholder: {
|
||||
type: String,
|
||||
default: '请选择'
|
||||
},
|
||||
|
||||
required: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
data: {
|
||||
type: Array,
|
||||
default: () => {}
|
||||
},
|
||||
//选项对象中,文字对应的 key
|
||||
valueKey: {
|
||||
type: String,
|
||||
default: 'text'
|
||||
},
|
||||
keyId: {},
|
||||
lifeGrade: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
healthGrade: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
parentShowPicker: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
readonly: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
name: '',
|
||||
code: '',
|
||||
life: '',
|
||||
health: '',
|
||||
showPicker: false
|
||||
}
|
||||
},
|
||||
components: {
|
||||
[Field.name]: Field,
|
||||
[Popup.name]: Popup,
|
||||
[Customer.name]: Customer,
|
||||
[Icon.name]: Icon,
|
||||
[Sticky.name]: Sticky
|
||||
},
|
||||
created() {
|
||||
this.init()
|
||||
},
|
||||
mounted() {
|
||||
this.showPicker = this.parentShowPicker
|
||||
},
|
||||
watch: {
|
||||
value() {
|
||||
this.name = this.value
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 初始化
|
||||
*/
|
||||
|
||||
init() {
|
||||
this.name = this.value
|
||||
},
|
||||
onChange(value) {
|
||||
this.$emit('nameChange', value)
|
||||
},
|
||||
choose(data) {
|
||||
this.name = data.customerName
|
||||
this.$emit('on-choose', data)
|
||||
},
|
||||
chooseCustomer() {
|
||||
if (this.disabled) {
|
||||
return
|
||||
}
|
||||
this.showPicker = true
|
||||
this.$emit('on-click')
|
||||
},
|
||||
cancel() {
|
||||
this.showPicker = false
|
||||
this.$emit('cancel', '')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
#customer-picker {
|
||||
.van-popup--bottom {
|
||||
height: 100%;
|
||||
}
|
||||
.van-popup {
|
||||
background: #f5f5f5;
|
||||
}
|
||||
/deep/.van-cell:not(:last-child)::after {
|
||||
position: absolute;
|
||||
box-sizing: border-box;
|
||||
content: ' ';
|
||||
pointer-events: none;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 4.26667vw;
|
||||
border-bottom: 1px solid transparent;
|
||||
-webkit-transform: scaleY(0.5);
|
||||
transform: scaleY(0.5);
|
||||
}
|
||||
}
|
||||
#customer-picker:not(:last-child)::after {
|
||||
position: absolute;
|
||||
z-index: 99;
|
||||
box-sizing: border-box;
|
||||
content: ' ';
|
||||
pointer-events: none;
|
||||
right: 0;
|
||||
// bottom: 0;
|
||||
// top: 0;
|
||||
left: 4.26667vw;
|
||||
border-bottom: 1px solid #dadada;
|
||||
-webkit-transform: scaleY(0.5);
|
||||
transform: scaleY(0.5);
|
||||
}
|
||||
</style>
|
||||
@@ -1,6 +1,6 @@
|
||||
import Common from '@/assets/js/common'
|
||||
import DataDictionary from '@/assets/js/utils/data-dictionary'
|
||||
|
||||
import Hospital from '@/assets/js/utils/hospital'
|
||||
/*
|
||||
* 把其他filter放到index.js里面一起引入
|
||||
*/
|
||||
@@ -110,6 +110,17 @@ export default {
|
||||
})
|
||||
return text
|
||||
},
|
||||
|
||||
// 数据字典 id 转 text
|
||||
HospitalIdToText(id, type) {
|
||||
let text = ''
|
||||
Hospital[type].some(item => {
|
||||
if (item.id == id) {
|
||||
text = item.text
|
||||
}
|
||||
})
|
||||
return text
|
||||
},
|
||||
/**
|
||||
* 处理千分位并保留两位小数
|
||||
* @param {[type]} moneyStr 钱
|
||||
|
||||
186
src/router/ebiz/claims.js
Normal file
186
src/router/ebiz/claims.js
Normal file
@@ -0,0 +1,186 @@
|
||||
//理赔 定义相关组件
|
||||
const ProblemList = () => import('@/views/ebiz/claims/ProblemList')
|
||||
const FillImage = () => import('@/views/ebiz/claims/FillImage')
|
||||
const success = () => import('@/views/ebiz/claims/Success')
|
||||
const fail = () => import('@/views/ebiz/claims/Fail')
|
||||
const claimsList = () => import('@/views/ebiz/claims/ClaimsList')
|
||||
const searchCustomer = () => import('@/views/ebiz/claims/SearchCustomer')
|
||||
const searchHospital = () => import('@/views/ebiz/claims/SearchHospital')
|
||||
const insuredInfo = () => import('@/views/ebiz/claims/InsuredInfo')
|
||||
const reportInfo = () => import('@/views/ebiz/claims/ReportInfo')
|
||||
const imageData = () => import('@/views/ebiz/claims/ImageData')
|
||||
const signatureConfirmation = () => import('@/views/ebiz/claims/SignatureConfirmation')
|
||||
const claimsSignature = () => import('@/views/ebiz/claims/ClaimsSignature')
|
||||
const claimsDetail = () => import('@/views/ebiz/claims/ClaimsDetail')
|
||||
const accident = () => import('@/views/ebiz/claims/Accident')
|
||||
const applyInfo = () => import('@/views/ebiz/claims/ApplyInfo')
|
||||
const reportApply = () => import('@/views/ebiz/claims/ReportApply')
|
||||
const reportSuccess = () => import('@/views/ebiz/claims/ReportSuccess')
|
||||
const reportFail = () => import('@/views/ebiz/claims/ReportFail')
|
||||
|
||||
|
||||
|
||||
export default [
|
||||
{
|
||||
path: '/claims/ProblemList',
|
||||
name: 'ProblemList',
|
||||
component: ProblemList,
|
||||
meta: {
|
||||
title: '问题件列表',
|
||||
index: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/claims/FillImage',
|
||||
name: 'FillImage',
|
||||
component: FillImage,
|
||||
meta: {
|
||||
title: '补充影像资料',
|
||||
index: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/claims/success',
|
||||
name: 'success',
|
||||
component: success,
|
||||
meta: {
|
||||
title: '提交成功',
|
||||
index: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/claims/fail',
|
||||
name: 'fail',
|
||||
component: fail,
|
||||
meta: {
|
||||
title: '提交失败',
|
||||
index: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/claims/claimsList',
|
||||
name: 'claimsList',
|
||||
component: claimsList,
|
||||
meta: {
|
||||
title: '理赔进度查询',
|
||||
index: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/claims/searchCustomer',
|
||||
name: 'searchCustomer',
|
||||
component: searchCustomer,
|
||||
meta: {
|
||||
title: '搜索客户',
|
||||
index: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/claims/searchHospital',
|
||||
name: 'searchHospital',
|
||||
component: searchHospital,
|
||||
meta: {
|
||||
title: '搜索医院',
|
||||
index: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/claims/insuredInfo',
|
||||
name: 'insuredInfo',
|
||||
component: insuredInfo,
|
||||
meta: {
|
||||
title: '被保人信息',
|
||||
index: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/claims/reportInfo',
|
||||
name: 'reportInfo',
|
||||
component: reportInfo,
|
||||
meta: {
|
||||
title: '报案信息',
|
||||
index: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/claims/imageData',
|
||||
name: 'imageData',
|
||||
component: imageData,
|
||||
meta: {
|
||||
title: '上传理赔影像资料',
|
||||
index: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/claims/signatureConfirmation',
|
||||
name: 'signatureConfirmation',
|
||||
component: signatureConfirmation,
|
||||
meta: {
|
||||
title: '签字确认',
|
||||
index: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/claims/claimsSignature',
|
||||
name: 'claimsSignature',
|
||||
component: claimsSignature,
|
||||
meta: {
|
||||
title: '签字确认',
|
||||
index: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/claims/claimsDetail',
|
||||
name: 'claimsDetail',
|
||||
component: claimsDetail,
|
||||
meta: {
|
||||
title: '理赔详情',
|
||||
index: 2
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/claims/accident',
|
||||
name: 'accident',
|
||||
component: accident,
|
||||
meta: {
|
||||
title: '出险信息',
|
||||
index: 3
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/claims/applyInfo',
|
||||
name: 'applyInfo',
|
||||
component: applyInfo,
|
||||
meta: {
|
||||
title: '申请信息',
|
||||
index: 4
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/claims/reportApply',
|
||||
name: 'reportApply',
|
||||
component: reportApply,
|
||||
meta: {
|
||||
title: '报案申请',
|
||||
index: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/claims/reportSuccess',
|
||||
name: 'reportSuccess',
|
||||
component: reportSuccess,
|
||||
meta: {
|
||||
title: '报案成功',
|
||||
index: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/claims/reportFail',
|
||||
name: 'reportFail',
|
||||
component: reportFail,
|
||||
meta: {
|
||||
title: '报案失败',
|
||||
index: 1
|
||||
}
|
||||
},
|
||||
]
|
||||
@@ -6,4 +6,5 @@ import my from './my'
|
||||
import serve from './serve'
|
||||
import common from './common'
|
||||
import product from './product'
|
||||
export default [...proposal, ...sale, ...customer, ...my, ...serve, ...common, ...product] //根据需要进行删减
|
||||
import claims from './claims'
|
||||
export default [...proposal, ...sale, ...customer, ...my, ...serve, ...common, ...product, ...claims] //根据需要进行删减
|
||||
|
||||
439
src/views/ebiz/claims/Accident.vue
Normal file
439
src/views/ebiz/claims/Accident.vue
Normal file
@@ -0,0 +1,439 @@
|
||||
<template>
|
||||
<div class="accident-container">
|
||||
<!-- 出险概况 -->
|
||||
<p class="h10 bg-gray-base"></p>
|
||||
<van-cell-group>
|
||||
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">出险概况</p>
|
||||
<select-radio
|
||||
:radios="sexRadio"
|
||||
label="出险原因"
|
||||
name="出险原因"
|
||||
v-validate="'required'"
|
||||
required
|
||||
:value.sync="cause"
|
||||
></select-radio>
|
||||
<van-row type="flex" class="van-cell van-field pv7 ph8">
|
||||
<van-col class="red posit">*</van-col>
|
||||
<van-col span="11 ml">申请类型</van-col>
|
||||
<van-row>
|
||||
<van-col
|
||||
class="van-radio__label pb10"
|
||||
v-for="(item, index) in typeRadio"
|
||||
:key="index"
|
||||
span="11"
|
||||
>
|
||||
<van-button
|
||||
round
|
||||
plain
|
||||
size="small"
|
||||
type="info"
|
||||
class="ph15 van-button--danger"
|
||||
@click="toActive(item.value, $event)"
|
||||
>{{ item.label }}</van-button>
|
||||
</van-col>
|
||||
</van-row>
|
||||
</van-row>
|
||||
<FieldDatePicter
|
||||
required
|
||||
v-validate="'required'"
|
||||
label="出险时间"
|
||||
name="出险时间"
|
||||
:value.sync="userInfo.accidentDate"
|
||||
type="date"
|
||||
:flag="true"
|
||||
ref="accidentDate"
|
||||
@confirm="onDateConfirm($event)"
|
||||
></FieldDatePicter>
|
||||
<van-field
|
||||
v-model="areaName"
|
||||
label="联系地址"
|
||||
name="联系地址"
|
||||
right-icon="arrow"
|
||||
required
|
||||
readonly
|
||||
v-validate="'required'"
|
||||
placeholder="请选择地址"
|
||||
@click="areaShow = true"
|
||||
/>
|
||||
<van-field
|
||||
v-model="userInfo.accidentAddress"
|
||||
required
|
||||
center
|
||||
label="详细地址"
|
||||
clearable
|
||||
placeholder="请输入详细地址"
|
||||
/>
|
||||
<van-field
|
||||
v-model="userInfo.caseDesc"
|
||||
rows="1"
|
||||
autosize
|
||||
label="事故经过"
|
||||
name="事故经过"
|
||||
type="textarea"
|
||||
required
|
||||
v-validate="'required'"
|
||||
placeholder="请输入事故经过"
|
||||
clearable
|
||||
maxlength="200"
|
||||
/>
|
||||
|
||||
<van-field
|
||||
:value="userInfo.insuredHospital | HospitalIdToText('hospitalList')"
|
||||
label="治疗医院"
|
||||
name="治疗医院"
|
||||
right-icon="arrow"
|
||||
required
|
||||
readonly
|
||||
v-validate="'required'"
|
||||
placeholder="请选择地址"
|
||||
@click="toSelect('1')"
|
||||
/>
|
||||
|
||||
<van-field
|
||||
:value="userInfo.isInsureOther | idToText('cureList')"
|
||||
label="是否购买其他公司保险"
|
||||
name="是否购买其他公司保险"
|
||||
right-icon="arrow"
|
||||
required
|
||||
readonly
|
||||
v-validate="'required'"
|
||||
placeholder="请选择"
|
||||
@click="toSelect('2')"
|
||||
/>
|
||||
|
||||
<van-field
|
||||
v-model="userInfo.otherCompany"
|
||||
center
|
||||
label="保险公司名称"
|
||||
clearable
|
||||
placeholder="请输入保险公司名称"
|
||||
/>
|
||||
</van-cell-group>
|
||||
|
||||
<!-- 委托信息 -->
|
||||
<van-cell-group class="pb60">
|
||||
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">委托信息</p>
|
||||
<van-field :value="userInfo.mandatorName" readonly label="受托人姓名" />
|
||||
<van-field :value="idType" readonly label="证件类型" />
|
||||
<van-field :value="userInfo.mandatorCertiCode" readonly label="证件号码" />
|
||||
<van-field :value="userInfo.agentItem | idToText('needTodo')" readonly label="代办事项" />
|
||||
<van-field :value="userInfo.days" readonly label="委托日期(自申请日期起算)" center clearable placeholder="请输入详细地址"/>
|
||||
</van-cell-group>
|
||||
|
||||
<!-- 地区选择 -->
|
||||
<van-popup v-model="areaShow" position="bottom">
|
||||
<van-area
|
||||
:area-list="areaList"
|
||||
value="110101"
|
||||
@confirm="sureArea($event, '1')"
|
||||
@cancel="areaShow = false"
|
||||
/>
|
||||
</van-popup>
|
||||
|
||||
<!-- 字段选择 -->
|
||||
<van-popup v-model="popupShow" position="bottom">
|
||||
<van-picker show-toolbar :columns="columns" @confirm="onConfirm" @cancel="popupShow = false" />
|
||||
</van-popup>
|
||||
|
||||
<div class="bottom-btn bg-white">
|
||||
<van-button type="danger" size="large" @click="nextStep" v-no-more-click="1000">下一步</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Field, CellGroup, Checkbox, Popup, Picker, Area, RadioGroup, Radio, Row, Col } from 'vant'
|
||||
import SelectRadio from '@/components/ebiz/SelectRadio'
|
||||
import FieldDatePicter from '@/components/ebiz/FieldDatePicter'
|
||||
import beforeDate from '@/assets/js/utils/getBeforeDate.js'
|
||||
import areaList from '@/assets/js/utils/area'
|
||||
import Hospital from '@/assets/js/utils/hospital'
|
||||
import getAreaName from '@/assets/js/utils/get-area-name'
|
||||
import DataDictionary from '@/assets/js/utils/data-dictionary.js'
|
||||
import { apply, query } from '@/api/ebiz/claims/claims'
|
||||
export default {
|
||||
name: 'accident',
|
||||
components: {
|
||||
[SelectRadio.name]: SelectRadio,
|
||||
[FieldDatePicter.name]: FieldDatePicter,
|
||||
[Field.name]: Field,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Checkbox.name]: Checkbox,
|
||||
[Popup.name]: Popup,
|
||||
[Picker.name]: Picker,
|
||||
[Area.name]: Area,
|
||||
[RadioGroup.name]: RadioGroup,
|
||||
[Radio.name]: Radio,
|
||||
[Row.name]: Row,
|
||||
[Col.name]: Col
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
sexRadio: [
|
||||
{
|
||||
label: '意外',
|
||||
value: '0'
|
||||
},
|
||||
{
|
||||
label: '疾病',
|
||||
value: '1'
|
||||
}
|
||||
],
|
||||
typeRadio: [
|
||||
{
|
||||
label: '医疗费用补偿',
|
||||
value: '01'
|
||||
},
|
||||
{
|
||||
label: '住院日额津贴',
|
||||
value: '02'
|
||||
},
|
||||
{
|
||||
label: '重大疾病',
|
||||
value: '03'
|
||||
},
|
||||
{
|
||||
label: '身故',
|
||||
value: '04'
|
||||
},
|
||||
{
|
||||
label: '残疾',
|
||||
value: '05'
|
||||
},
|
||||
{
|
||||
label: '全残',
|
||||
value: '06'
|
||||
},
|
||||
{
|
||||
label: '中症',
|
||||
value: '07'
|
||||
},
|
||||
{
|
||||
label: '轻症',
|
||||
value: '08'
|
||||
},
|
||||
{
|
||||
label: '特定疾病',
|
||||
value: '09'
|
||||
}
|
||||
],
|
||||
arr: [], //后台获取反显的申请类型编码
|
||||
maxDate: beforeDate.getBeforeYear(16),
|
||||
popupShow: false,
|
||||
pickerType: '',
|
||||
valueKey: '',
|
||||
columns: [],
|
||||
applyType: [],
|
||||
cause: '0', //通过该值判断出险原因
|
||||
from: this.$route.query.from, //页面跳转来源
|
||||
slaveStatus: 'claimApplyRisk', //进行到的状态
|
||||
insuranceId: '', //出险信息主键id
|
||||
idType: '身份证',
|
||||
applyName: [],
|
||||
areaName: '', //联系地址
|
||||
areaShow: false, //显示隐藏地址选择
|
||||
areaList: areaList, //省市区数据
|
||||
userInfo: {
|
||||
accidentCause: '', //出险原因
|
||||
applyType: '', //申请类型
|
||||
accidentDate: '', //出险时间
|
||||
accCounty: '', //新增出险区/县
|
||||
accCity: '', //新增出险市
|
||||
accProvince: '', //新增出险省
|
||||
insuredHospital: '', //新增治疗医院
|
||||
isInsureOther: null, //新增是否购买过其他公司保险
|
||||
otherCompany: '', //新增其他公司保险名称(非必填)
|
||||
accidentAddress: '', //出险地点
|
||||
caseDesc: '', //事故经过
|
||||
mandatorName: '王某', //受托人姓名
|
||||
mandatorCertiType: '0', //证件类型
|
||||
mandatorCertiCode: '410305199508111533', //证件号码
|
||||
agentItem: '01', //代办事项
|
||||
days:'23',//新增委托天数
|
||||
businessNo: '', //业务号码
|
||||
id: localStorage.insuranceId || '' //用于区分新增还是二次提交
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
//this.ReturnShow()
|
||||
document.body.style.backgroundColor = '#fff'
|
||||
this.userInfo.businessNo = window.localStorage.getItem('businessNo')
|
||||
let userModel = JSON.parse(window.localStorage.getItem('userModel'))
|
||||
this.userInfo.mandatorName = userModel.name
|
||||
this.idType = userModel.idType
|
||||
this.userInfo.mandatorCertiCode = userModel.idno
|
||||
//受托人证件类型
|
||||
switch (this.idType) {
|
||||
case '身份证':
|
||||
this.userInfo.mandatorCertiType = '0'
|
||||
break
|
||||
case '护照':
|
||||
this.userInfo.mandatorCertiType = '4'
|
||||
break
|
||||
case '台胞证':
|
||||
this.userInfo.mandatorCertiType = '8'
|
||||
break
|
||||
case '回乡证':
|
||||
this.userInfo.mandatorCertiType = '5'
|
||||
break
|
||||
case '其他':
|
||||
this.userInfo.mandatorCertiType = '9'
|
||||
break
|
||||
}
|
||||
},
|
||||
beforeRouteLeave(to, from, next) {
|
||||
document.body.style.backgroundColor = ''
|
||||
next()
|
||||
},
|
||||
methods: {
|
||||
// //点击下一步再次返回页面数据反显
|
||||
// ReturnShow() {
|
||||
// console.log(888888)
|
||||
// if (localStorage.insuranceId !== undefined && localStorage.insuranceId !== null && localStorage.insuranceId !== '') {
|
||||
// this.insuranceId = localStorage.insuranceId
|
||||
// let data = {
|
||||
// slaveStatus: this.slaveStatus,
|
||||
// id: this.insuranceId
|
||||
// }
|
||||
// query(data).then(res => {
|
||||
// // console.log(res.content.claimApplyRiskReqDTO.applyType)
|
||||
// // console.log(this.userInfo.accidentCause)
|
||||
// if (res.result == 0) {
|
||||
// this.userInfo = res.content.claimApplyRiskReqDTO
|
||||
// //保存后台返回的申请类型字符串
|
||||
// let ClassStr = res.content.claimApplyRiskReqDTO.applyType
|
||||
// //将字符串转换成数组
|
||||
// this.arr = ClassStr.split(',')
|
||||
// switch (this.userInfo.accidentCause) {
|
||||
// case '1':
|
||||
// this.cause = '0'
|
||||
// break
|
||||
// case '2':
|
||||
// this.cause = '1'
|
||||
// break
|
||||
// }
|
||||
// } else {
|
||||
// this.$toast(res.resultMessage)
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
// },
|
||||
//出险日期
|
||||
onDateConfirm(val) {
|
||||
//如果录入日期晚于当前日期
|
||||
if (Date.parse(val) > Date.parse(new Date())) {
|
||||
this.userInfo.accidentDate = ''
|
||||
this.$refs.accidentDate.date = ''
|
||||
return this.$toast('出险日期不能晚于当前日期')
|
||||
}
|
||||
},
|
||||
// 弹框选择
|
||||
toSelect(pickerType, valueKey) {
|
||||
;[this.popupShow, this.pickerType] = [true, pickerType]
|
||||
if (valueKey) this.valueKey = valueKey
|
||||
if (pickerType == '1') {
|
||||
this.columns = Hospital.hospitalList
|
||||
} else if (pickerType == '2') {
|
||||
this.columns = DataDictionary.cureList
|
||||
}
|
||||
},
|
||||
// 确认选择字段
|
||||
onConfirm(value) {
|
||||
this.popupShow = false
|
||||
if (this.pickerType == '1') {
|
||||
this.userInfo.insuredHospital = value.id
|
||||
} else if (this.pickerType == '2') {
|
||||
this.userInfo.isInsureOther = value.id
|
||||
}
|
||||
},
|
||||
|
||||
//点击申请类型(多选)
|
||||
toActive(value, e) {
|
||||
if (e.target.classList.contains('active')) {
|
||||
e.target.classList.remove('active')
|
||||
this.applyType.pop(value)
|
||||
} else {
|
||||
e.target.classList.add('active')
|
||||
this.applyType.push(value)
|
||||
}
|
||||
this.userInfo.applyType = this.applyType.join(',')
|
||||
},
|
||||
//区域选择
|
||||
sureArea(area, type) {
|
||||
this.areaName = getAreaName(area)
|
||||
;[this.userInfo.accProvince, this.userInfo.accCity, this.userInfo.accCounty] = [area[0].code, area[1].code, area[2].code]
|
||||
this.areaShow = false
|
||||
},
|
||||
|
||||
nextStep() {
|
||||
console.log(this.userInfo)
|
||||
this.$validator.validate().then(valid => {
|
||||
if (true === valid) {
|
||||
switch (this.cause) {
|
||||
case '0':
|
||||
this.userInfo.accidentCause = '1'
|
||||
break
|
||||
case '1':
|
||||
this.userInfo.accidentCause = '2'
|
||||
break
|
||||
}
|
||||
this.$toast.loading({
|
||||
duration: 0, // 持续展示 toast
|
||||
forbidClick: true, // 禁用背景点击
|
||||
loadingType: 'spinner',
|
||||
message: '加载中……'
|
||||
})
|
||||
let data = {
|
||||
userModel: {
|
||||
id: '123456',
|
||||
name: '王某',
|
||||
mobile: '13592585978'
|
||||
},
|
||||
slaveStatus: this.slaveStatus,
|
||||
claimApplyRiskReqDTO: this.userInfo
|
||||
}
|
||||
apply(data).then(res => {
|
||||
if (res.result == 0) {
|
||||
console.log(res)
|
||||
this.$toast.clear()
|
||||
localStorage.setItem('accidentCause', this.cause)
|
||||
localStorage.setItem('applyType', this.userInfo.applyType)
|
||||
localStorage.setItem('insuranceId', res.content.insuranceId)
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/ApplyInfo?from=Accident',
|
||||
forbidSwipeBack: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/claims/ApplyInfo?from=Accident'
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$toast(this.$validator.errors.all()[0])
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.posit {
|
||||
position: absolute;
|
||||
left: 8px;
|
||||
}
|
||||
.active {
|
||||
background: #e9332e !important;
|
||||
border: 1px solid #e9332e !important;
|
||||
color: #ffffff !important;
|
||||
}
|
||||
.ml {
|
||||
margin-left: 9px;
|
||||
}
|
||||
</style>
|
||||
1066
src/views/ebiz/claims/ApplyInfo.vue
Normal file
1066
src/views/ebiz/claims/ApplyInfo.vue
Normal file
File diff suppressed because it is too large
Load Diff
68
src/views/ebiz/claims/ClaimsDetail.vue
Normal file
68
src/views/ebiz/claims/ClaimsDetail.vue
Normal file
@@ -0,0 +1,68 @@
|
||||
<template>
|
||||
<div class="claims-detail-container">
|
||||
<van-cell-group>
|
||||
<van-cell title="赔案号" :value="list.claimNo" />
|
||||
<van-cell title="申请人" :value="list.applyerName" />
|
||||
<van-cell title="被保险人" :value="list.insuredName" />
|
||||
<van-cell title="出险时间" :value="list.accidentTime" />
|
||||
<van-cell title="支付金额(元)" :value="list.payMoney | moneyFormat" />
|
||||
<van-cell title="开户银行">
|
||||
<div class="flex align-items-c justify-content-fe">
|
||||
<img :src="srcImg" class="imgItem mr10" />
|
||||
<span>{{ list.applyerBankName }}</span>
|
||||
</div>
|
||||
</van-cell>
|
||||
<van-cell title="领款账户" :value="list.applyerBankAccountNo" />
|
||||
</van-cell-group>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Cell, CellGroup, Icon } from 'vant'
|
||||
import { progressDetail } from '@/api/ebiz/claims/claims'
|
||||
|
||||
export default {
|
||||
name: 'claimsDetail',
|
||||
components: {
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Icon.name]: Icon
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
srcImg: '', // 银行logo
|
||||
list: {}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// 获取理赔进度详情
|
||||
this.getClaimsetail()
|
||||
},
|
||||
filters: {
|
||||
toReplace(value) {
|
||||
//value.replace(*, 'W3School')
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getClaimsetail() {
|
||||
let that = this
|
||||
let data = {
|
||||
caseStatus: 'claimProgress',
|
||||
claimNo: localStorage.getItem('claimNo')
|
||||
}
|
||||
progressDetail(data).then(res => {
|
||||
if (res.result == 0) {
|
||||
that.list = res.content
|
||||
that.srcImg = that.$assetsUrl + `images/bank/bank_${that.list.applyerBankCode}.png`
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.green {
|
||||
color: #07c160 !important;
|
||||
}
|
||||
</style>
|
||||
324
src/views/ebiz/claims/ClaimsList.vue
Normal file
324
src/views/ebiz/claims/ClaimsList.vue
Normal file
@@ -0,0 +1,324 @@
|
||||
<template>
|
||||
<div class="sale-list-container pb50">
|
||||
<van-sticky>
|
||||
<van-tabs :line-width="45" v-model="active" @change="tabChange" sticky>
|
||||
<van-tab name="progressReport" title="已报案"></van-tab>
|
||||
<van-tab name="applying" title="待申请"></van-tab>
|
||||
<van-tab name="claimProgress" title="查进度"></van-tab>
|
||||
</van-tabs>
|
||||
</van-sticky>
|
||||
|
||||
<!-- <van-list
|
||||
v-model="loading"
|
||||
:immediate-check="false"
|
||||
:finished="finished"
|
||||
:finished-text="finishedText"
|
||||
error-text="请求失败,点击重新加载"
|
||||
:error.sync="error"
|
||||
@load="loadMore"
|
||||
class="pb45"
|
||||
> -->
|
||||
<div v-if="isSuccess">
|
||||
<div v-if="claimsList.length > 0">
|
||||
<div v-for="(item, index) in claimsList" :key="index">
|
||||
<div class="fs12 mt20 mb5 text-center" v-if="active == 'progressReport'">报案号:{{ item.claimNo }}</div>
|
||||
<div class="fs12 mt20 mb5 text-center" v-if="active == 'applying'">申请号:{{ item.businessNo }}</div>
|
||||
<div class="fs12 mt20 mb5 text-center" v-if="active == 'claimProgress'">赔案号:{{ item.claimNo }}</div>
|
||||
|
||||
<div class="bg-white pv15 pr15 pl10 m15">
|
||||
<div class="flex justify-content-s align-items-c">
|
||||
<div class="mb10">
|
||||
<div class="w60 inline-b">
|
||||
<van-tag plain color="#DD9C56">被保</van-tag>
|
||||
</div>
|
||||
<span class="fs14 c-gray-dark ml20">{{ item.insuredName }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pt15" style="border-top:1px solid #dadada">
|
||||
<div class="mb10">
|
||||
<div class="w60 inline-b">
|
||||
<van-tag plain color="#4fc6b3">出险时间</van-tag>
|
||||
</div>
|
||||
<span class="fs14 c-gray-dark ml20">{{ item.accidentDate }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<div class="w60 inline-b">
|
||||
<van-tag plain color="#5ca7de">案件状态</van-tag>
|
||||
</div>
|
||||
<span class="fs14 c-gray-dark ml20" v-if="active == 'progressReport'">
|
||||
<label v-if="item.caseStatus">报案成功</label>
|
||||
<label v-else>报案失败</label>
|
||||
</span>
|
||||
<span class="fs14 c-gray-dark ml20" v-if="active == 'applying'">{{ item.caseStatus | statusFormat }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<van-steps :active="actives[index]" active-color="#4FC6B3" v-if="active == 'claimProgress'">
|
||||
<van-step>已申请</van-step>
|
||||
<van-step>已立案</van-step>
|
||||
<van-step>已结案</van-step>
|
||||
<van-step>已支付</van-step>
|
||||
</van-steps>
|
||||
<div class="mt10 flex justify-content-fe">
|
||||
<van-button v-if="active == 'progressReport'" round plain size="small" class="mr5" type="danger" @click="goApply">理赔申请</van-button>
|
||||
<van-button v-if="active == 'applying'" round size="small" class="mr5" type="danger" @click="goEdit(item.nextSlaveStatus, item.businessNo)"
|
||||
>编辑</van-button
|
||||
>
|
||||
<van-button v-if="active == 'applying'" round plain size="small" class="mr5" type="danger" @click.stop="del(item.businessNo)">删除</van-button>
|
||||
<van-button
|
||||
v-if="active == 'claimProgress' && (item.caseStatus == '2' || item.caseStatus == '3')"
|
||||
round
|
||||
plain
|
||||
size="small"
|
||||
class="mr5"
|
||||
type="danger"
|
||||
@click="goDetail(item.claimNo)"
|
||||
>理赔详情</van-button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-else class="text-center">
|
||||
<img class="mt40" src="@/assets/images/pic_page-non.png" />
|
||||
<div class="fs17 mt40" v-if="active == 'progressReport'">暂无案件信息!</div>
|
||||
<div class="fs17 mt40" v-if="active == 'applying'">暂无申请信息!</div>
|
||||
<div class="fs17 mt40" v-if="active == 'claimProgress'">暂无赔案信息!</div>
|
||||
</div>
|
||||
<!-- </van-list> -->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { List, Tab, Tabs, Tag, Row, Col, Step, Steps, Dialog, Sticky } from 'vant'
|
||||
import { progress } from '@/api/ebiz/claims/claims'
|
||||
import axios from 'axios'
|
||||
import index from '@/config/index'
|
||||
|
||||
export default {
|
||||
name: 'claimsList',
|
||||
components: {
|
||||
[List.name]: List,
|
||||
[Tab.name]: Tab,
|
||||
[Tabs.name]: Tabs,
|
||||
[Tag.name]: Tag,
|
||||
[Row.name]: Row,
|
||||
[Col.name]: Col,
|
||||
[Step.name]: Step,
|
||||
[Steps.name]: Steps,
|
||||
[Sticky.name]: Sticky
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
active: 'progressReport', //applying 待申请 claimProgress查进度
|
||||
claimsList: [],
|
||||
actives: [], //查进度状态
|
||||
loading: false,
|
||||
finished: false,
|
||||
total: '', //总页数
|
||||
currentPage: 1, //当前页数
|
||||
error: false,
|
||||
finishedText: '没有更多了',
|
||||
pageSize: 5, //每页数据条数
|
||||
isSuccess: false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getOrderList()
|
||||
},
|
||||
methods: {
|
||||
//分页用
|
||||
// loadMore() {
|
||||
// let pageInfo = {
|
||||
// pageNum: this.currentPage,
|
||||
// pageSize: this.pageSize,
|
||||
// progressStatus: this.active
|
||||
// }
|
||||
// this.getOrderList(pageInfo)
|
||||
// },
|
||||
//初始化列表
|
||||
getOrderList() {
|
||||
let data = {
|
||||
progressStatus: this.active
|
||||
}
|
||||
this.$toast.loading({
|
||||
duration: 0, // 持续展示 toast
|
||||
forbidClick: true, // 禁用背景点击
|
||||
loadingType: 'spinner',
|
||||
message: '加载中……'
|
||||
})
|
||||
|
||||
progress(data).then(res => {
|
||||
this.$toast.clear()
|
||||
if (res.result == '0') {
|
||||
this.isSuccess = true
|
||||
if (res.content) {
|
||||
this.claimsList = res.content.claimProgressInfos
|
||||
if (this.active == 'claimProgress') {
|
||||
this.claimsList.map(item => {
|
||||
switch (item.caseStatus) {
|
||||
case '40':
|
||||
item.caseStatus = 0
|
||||
break
|
||||
case '50':
|
||||
item.caseStatus = 1
|
||||
break
|
||||
case '60':
|
||||
item.caseStatus = 2
|
||||
break
|
||||
case 'Y':
|
||||
item.caseStatus = 3
|
||||
break
|
||||
}
|
||||
this.actives.push(item.caseStatus)
|
||||
})
|
||||
}
|
||||
}
|
||||
if (this.claimsList.length == 0) {
|
||||
this.isSuccess = false
|
||||
}
|
||||
} else {
|
||||
// this.finished = true
|
||||
// this.loading = false
|
||||
// this.finishedText = res.resultMessage
|
||||
}
|
||||
})
|
||||
},
|
||||
tabChange(name) {
|
||||
this.currentPage = 1
|
||||
this.active = name
|
||||
this.claimsList = []
|
||||
this.getOrderList()
|
||||
//;[this.loading, this.finished] = [true, false]
|
||||
// this.finishedText = '正在加载...'
|
||||
//this.loadMore()
|
||||
},
|
||||
del(businessNo) {
|
||||
Dialog.confirm({
|
||||
className: 'dialog-delete',
|
||||
title: '提示',
|
||||
message: '是否确认删除',
|
||||
cancelButtonColor: '#4FC6B3',
|
||||
confirmButtonColor: '#FFFFFF'
|
||||
}).then(() => {
|
||||
axios
|
||||
.get(index.apiDomain + `/claim/claimApply/delete`, {
|
||||
params: {
|
||||
businessNo: businessNo
|
||||
},
|
||||
headers: {
|
||||
token: localStorage.token
|
||||
}
|
||||
})
|
||||
.then(res => {
|
||||
let data = {
|
||||
progressStatus: 'applying'
|
||||
}
|
||||
progress(data).then(res => {
|
||||
if (res.result == 0) {
|
||||
this.getOrderList()
|
||||
} else {
|
||||
// this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
goApply() {
|
||||
localStorage.removeItem('claimId')
|
||||
localStorage.removeItem('insuranceId')
|
||||
localStorage.removeItem('applyId')
|
||||
let that = this
|
||||
that.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/InsuredInfo?edit=1',
|
||||
forbidSwipeBack: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/claims/InsuredInfo?edit=1'
|
||||
}
|
||||
})
|
||||
},
|
||||
goEdit(status, businessNo) {
|
||||
let that = this
|
||||
localStorage.removeItem('claimId')
|
||||
localStorage.removeItem('insuranceId')
|
||||
localStorage.removeItem('applyId')
|
||||
localStorage.setItem('businessNo', businessNo)
|
||||
let url = ''
|
||||
switch (status) {
|
||||
case '20': //填写被保人页
|
||||
url = '/claims/InsuredInfo?edit=1'
|
||||
break
|
||||
case '21': //填写出险信息页
|
||||
url = '/claims/Accident?edit=1'
|
||||
break
|
||||
case '22': //填写理赔申请信息
|
||||
url = '/claims/ApplyInfo?edit=1'
|
||||
break
|
||||
case '23': //上传影像页
|
||||
url = '/claims/ImageData?edit=1'
|
||||
break
|
||||
case '24': //签名页
|
||||
url = '/claims/SignatureConfirmation?edit=1'
|
||||
break
|
||||
case '25':
|
||||
url = '/claims/SignatureConfirmation?edit=1'
|
||||
break
|
||||
}
|
||||
that.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + `/#${url}`,
|
||||
forbidSwipeBack: '1'
|
||||
},
|
||||
routerInfo: { path: url }
|
||||
})
|
||||
},
|
||||
goDetail(claimNo) {
|
||||
localStorage.setItem('claimNo', claimNo)
|
||||
let that = this
|
||||
that.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/claimsDetail',
|
||||
forbidSwipeBack: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/claims/claimsDetail'
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
filters: {
|
||||
statusFormat: function(status) {
|
||||
let text
|
||||
switch (status) {
|
||||
case '2':
|
||||
text = '理赔申请未提交'
|
||||
break
|
||||
case '3':
|
||||
text = '理赔申请已提交'
|
||||
break
|
||||
case '40':
|
||||
text = '已申请'
|
||||
break
|
||||
case '50':
|
||||
text = '已立案'
|
||||
break
|
||||
case '60':
|
||||
text = '已结案'
|
||||
break
|
||||
case 'Y':
|
||||
text = '已支付'
|
||||
break
|
||||
}
|
||||
return text
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped></style>
|
||||
336
src/views/ebiz/claims/ClaimsSignature.vue
Normal file
336
src/views/ebiz/claims/ClaimsSignature.vue
Normal file
@@ -0,0 +1,336 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="pb60">
|
||||
<van-notice-bar :scrollable="false" v-if="!Time" class="notice">{{ `提示:阅读时长需在${time}秒以上` }}</van-notice-bar>
|
||||
<iframe :src="src + pdfUrl" class="iframe"></iframe>
|
||||
<van-radio-group v-model="radio" class="pb10 pt20 pl30">
|
||||
<van-radio name="1" @click="click" class="fs14">
|
||||
本人确认已阅读
|
||||
<span>《鼎诚人寿理赔申请书》</span>
|
||||
</van-radio>
|
||||
</van-radio-group>
|
||||
<div class="pt10 pl30 flex align-items-c">
|
||||
<span class="mr10">受托人签名 :</span>
|
||||
<div v-if="signVal == '4'">
|
||||
<van-button type="danger" size="small" @click="sign(0)" :disabled="isDisable" v-no-more-click="1000">
|
||||
{{ list.mandatorSignState == '0' ? '签名' : '已签名' }}</van-button
|
||||
>
|
||||
<img class="img pl15" :src="base64" alt />
|
||||
</div>
|
||||
</div>
|
||||
<div class="pt10 pl30 flex align-items-c">
|
||||
<span class="mr10">申请人签名 :</span>
|
||||
<div v-if="signVal == '3'">
|
||||
<van-button type="danger" size="small" @click="sign(1)" v-no-more-click="1000" :disabled="isDisableInsured">{{
|
||||
list.applyerSignState == '0' ? '签名' : '已签名'
|
||||
}}</van-button>
|
||||
<img class="img pl15" :src="base64" alt />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bottom-btn bg-white">
|
||||
<van-button type="danger" size="large" @click="next" :disabled="isDisabledComplite" v-no-more-click="1000">完成</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { RadioGroup, Radio, Dialog, NoticeBar } from 'vant'
|
||||
import config from '@/config'
|
||||
import { progressDetail, apply } from '@/api/ebiz/claims/claims'
|
||||
export default {
|
||||
data() {
|
||||
let isWeixin = this.$utils.device().isWeixin //判断环境
|
||||
return {
|
||||
pdfUrl: '',
|
||||
src: location.origin + '/pdfjs/web/viewer.html?file=',
|
||||
radio: '',
|
||||
// 是否在微信
|
||||
isWeixin,
|
||||
signVal: '',
|
||||
// 定时器时间
|
||||
time: '10',
|
||||
// 定时器名称
|
||||
timer: null,
|
||||
isOver: false,
|
||||
// 判断验证码是否开始倒计时
|
||||
Time: false,
|
||||
// 受托人按钮是否可以点击
|
||||
isDisable: true,
|
||||
// 申请人按钮是否可以点击
|
||||
isDisableInsured: true,
|
||||
// 是否可以点击
|
||||
isDisabledComplite: true,
|
||||
// 签名信息
|
||||
list: {},
|
||||
//加密包
|
||||
baseEncryp: '',
|
||||
//信息回显
|
||||
base64: ''
|
||||
}
|
||||
},
|
||||
components: {
|
||||
[RadioGroup.name]: RadioGroup,
|
||||
[Radio.name]: Radio,
|
||||
[Dialog.name]: Dialog,
|
||||
[NoticeBar.name]: NoticeBar
|
||||
},
|
||||
mounted() {
|
||||
this.init()
|
||||
document.body.style.backgroundColor = '#fff'
|
||||
this.signVal = localStorage.getItem('sign-val')
|
||||
},
|
||||
beforeRouteLeave(to, from, next) {
|
||||
document.body.style.backgroundColor = ''
|
||||
next()
|
||||
},
|
||||
methods: {
|
||||
// 单选框
|
||||
click() {
|
||||
let that = this
|
||||
if (that.isOver == false) {
|
||||
Dialog.confirm({
|
||||
title: '提示',
|
||||
message: '该内容涉及您的重大权益,请您仔细阅读',
|
||||
showCancelButton: false
|
||||
}).then(() => {
|
||||
that.radio = ''
|
||||
})
|
||||
}
|
||||
},
|
||||
// 初始化
|
||||
timeOut() {
|
||||
let timer = setInterval(() => {
|
||||
this.time--
|
||||
if (this.time <= 0) {
|
||||
this.time = 0
|
||||
clearInterval(timer)
|
||||
this.Time = true
|
||||
this.isOver = true
|
||||
}
|
||||
}, 1000)
|
||||
},
|
||||
// 初始化
|
||||
init() {
|
||||
// 在微信
|
||||
if (this.isWeixin) {
|
||||
let imgBase64Data = sessionStorage.getItem('imgBase64Data')
|
||||
let wxSigned = sessionStorage.getItem('wxSigned')
|
||||
let signInfo = JSON.parse(localStorage.getItem('signInfo'))
|
||||
console.log('imgBase64Data:imgBase64Data ' + imgBase64Data)
|
||||
console.log('wxSigned: ' + wxSigned)
|
||||
if (wxSigned) {
|
||||
console.log('第二次进入理赔申请!')
|
||||
this.progressDetail().then(() => {
|
||||
this.Time = true
|
||||
this.isOver = true
|
||||
this.radio = '1'
|
||||
this.baseEncryp = imgBase64Data //加密包
|
||||
this.base64 = sessionStorage.getItem('base64') //国片回显
|
||||
this.isDisabledComplite = false
|
||||
console.log('signInfo.status:' + signInfo.status)
|
||||
if (signInfo.status == '3') {
|
||||
console.log('``````````````````')
|
||||
// this.$set(this.list, 'applyerSignState', '1')
|
||||
// console.log('list.applyerSignState: ' + this.list.applyerSignState)
|
||||
this.isDisabledComplite = false
|
||||
}
|
||||
})
|
||||
} else {
|
||||
console.log('第一次进入理赔申请')
|
||||
this.timeOut()
|
||||
this.progressDetail()
|
||||
}
|
||||
} else {
|
||||
this.progressDetail()
|
||||
this.timeOut()
|
||||
}
|
||||
},
|
||||
progressDetail() {
|
||||
// 获取签名详情
|
||||
let data = {
|
||||
caseStatus: 'applying',
|
||||
businessNo: localStorage.businessNo
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
progressDetail(data).then(res => {
|
||||
if (res.result == 0) {
|
||||
let that = this
|
||||
that.list = res.content
|
||||
that.pdfUrl = encodeURIComponent(config.imgDomain + `/returnDirectStream?imgPath=${that.list.rgssUrl}`)
|
||||
resolve('success')
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
sign(val) {
|
||||
//0 受托人 1申请人
|
||||
let that = this
|
||||
that.$toast.loading({
|
||||
duration: 0, // 持续展示 toast
|
||||
forbidClick: true, // 禁用背景点击
|
||||
loadingType: 'spinner',
|
||||
message: '加载中……'
|
||||
})
|
||||
if (val == 0) {
|
||||
EWebBridge.webCallAppInJs('ca_sign', {
|
||||
//身份证号码
|
||||
number: that.list.mandatorCertiCode,
|
||||
//姓名
|
||||
name: that.list.mandatorName,
|
||||
keyword: '受托人签名',
|
||||
pageNo: '1',
|
||||
index: '1',
|
||||
offset: '20',
|
||||
pos: '3'
|
||||
}).then(data => {
|
||||
this.$toast.clear()
|
||||
if (JSON.parse(data).state == '1') {
|
||||
that.list.mandatorSignState = '1'
|
||||
that.isDisabledComplite = false
|
||||
that.baseEncryp = decodeURI(JSON.parse(data).sign)
|
||||
that.base64 = that.base64 = 'data:image/png;base64,' + JSON.parse(data).base64
|
||||
}
|
||||
})
|
||||
} else {
|
||||
if (this.isWeixin) {
|
||||
this.toAirSign('3', '申请人签名', '20', '4')
|
||||
} else {
|
||||
EWebBridge.webCallAppInJs('ca_sign', {
|
||||
//身份证号码
|
||||
number: that.list.applyerCertiCode,
|
||||
//姓名
|
||||
name: that.list.applyerName,
|
||||
keyword: '申请人签名',
|
||||
pageNo: '1',
|
||||
index: '1',
|
||||
offset: '20',
|
||||
pos: '3'
|
||||
}).then(data => {
|
||||
this.$toast.clear()
|
||||
if (JSON.parse(data).state == '1') {
|
||||
that.list.applyerSignState = '1'
|
||||
that.isDisabledComplite = false
|
||||
that.baseEncryp = decodeURI(JSON.parse(data).sign)
|
||||
that.base64 = that.base64 = 'data:image/png;base64,' + JSON.parse(data).base64
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
// 跳往空签
|
||||
toAirSign(status, keyword, offset, originStatus) {
|
||||
localStorage.setItem(
|
||||
'signInfo',
|
||||
JSON.stringify({
|
||||
originStatus: originStatus,
|
||||
idNo: this.list.applyerCertiCode,
|
||||
name: this.list.applyerName,
|
||||
type: this.list.applyerCertiType,
|
||||
keyword: keyword,
|
||||
status: status,
|
||||
offset: offset,
|
||||
originUrl: location.href
|
||||
})
|
||||
)
|
||||
window.location.href = this.$mainUrl + '/sign/index.html'
|
||||
},
|
||||
next() {
|
||||
let that = this
|
||||
this.$toast.loading({
|
||||
duration: 0, // 持续展示 toast
|
||||
forbidClick: true, // 禁用背景点击
|
||||
loadingType: 'spinner',
|
||||
message: '加载中……'
|
||||
})
|
||||
let data = {
|
||||
slaveStatus: 'claimApplySign',
|
||||
claimApplySignReqDTO: {
|
||||
businessNo: localStorage.businessNo,
|
||||
name: that.list.name,
|
||||
peopleType: that.signVal,
|
||||
rgssUrl: that.list.rgssUrl,
|
||||
imgState: '',
|
||||
signState: '1',
|
||||
baseEncryp: that.baseEncryp
|
||||
}
|
||||
}
|
||||
apply(data).then(res => {
|
||||
if (res.result == '0') {
|
||||
this.$toast.clear()
|
||||
if (this.isWeixin) {
|
||||
localStorage.removeItem('signInfo')
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/signatureConfirmation',
|
||||
forbidSwipeBack: '1',
|
||||
pullRefresh: '1',
|
||||
backToFirst: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path:
|
||||
'/claims/signatureConfirmation?token=' +
|
||||
localStorage.token +
|
||||
'&businessNo=' +
|
||||
localStorage.getItem('businessNo') +
|
||||
'&signInvalid=' +
|
||||
sessionStorage.getItem('signInvalid') +
|
||||
'&airSign=1'
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/signatureConfirmation',
|
||||
pullRefresh: '1',
|
||||
backToFirst: '1',
|
||||
refresh: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/claims/signatureConfirmation'
|
||||
}
|
||||
})
|
||||
}
|
||||
} else {
|
||||
that.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
listenChange() {
|
||||
const { isOver, radio } = this
|
||||
return { isOver, radio }
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
listenChange(val) {
|
||||
if (this.signVal == '4') {
|
||||
if (val.isOver == true && val.radio != '') {
|
||||
this.isDisable = false
|
||||
} else {
|
||||
this.isDisable = true
|
||||
}
|
||||
} else {
|
||||
if (val.isOver == true && val.radio != '') {
|
||||
this.isDisableInsured = false
|
||||
} else {
|
||||
this.isDisableInsured = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.img {
|
||||
height: 40px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.iframe {
|
||||
width: 100vw;
|
||||
height: 70vh;
|
||||
}
|
||||
</style>
|
||||
38
src/views/ebiz/claims/Fail.vue
Normal file
38
src/views/ebiz/claims/Fail.vue
Normal file
@@ -0,0 +1,38 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="pt80 flex align-items-c flex-direction-colunm">
|
||||
<img src="@/assets/images/u25897.png" class="img" />
|
||||
<h2 class="mt15 gray">提交失败</h2>
|
||||
<p class="fs15 mt10">您的理赔申请提交失败,您可返回至服务页面</p>
|
||||
<p class="fs15 mt10">重新提交或致电统一客服电话</p>
|
||||
<p class="green mt10">4008-008-008</p>
|
||||
</div>
|
||||
<div class="bottom-btn bg-white">
|
||||
<van-button type="danger" size="large" @click="back" v-no-more-click="1000">返回</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
methods: {
|
||||
back() {
|
||||
console.log('返回')
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.body.style.backgroundColor = '#fff'
|
||||
},
|
||||
beforeRouteLeave(to, from, next) {
|
||||
document.body.style.backgroundColor = ''
|
||||
next()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.img {
|
||||
width: 50px;
|
||||
}
|
||||
</style>
|
||||
132
src/views/ebiz/claims/FillImage.vue
Normal file
132
src/views/ebiz/claims/FillImage.vue
Normal file
@@ -0,0 +1,132 @@
|
||||
<template>
|
||||
<div>
|
||||
<div calss="bg-white">
|
||||
<div class="p10">
|
||||
<van-uploader
|
||||
name="fileList"
|
||||
v-model="fileList"
|
||||
:after-read="afterRead"
|
||||
@delete="deleteImg"
|
||||
:before-delete="beforeDelete"
|
||||
class="mt10 ml20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<van-cell-group>
|
||||
<van-field
|
||||
v-model="message"
|
||||
rows="1"
|
||||
autosize
|
||||
label="详细说明"
|
||||
type="textarea"
|
||||
placeholder="请输入详细说明"
|
||||
/>
|
||||
</van-cell-group>
|
||||
</div>
|
||||
<div class="flex justify-content-s bottom-btn bg-white">
|
||||
<van-button
|
||||
class="bottom0 left0"
|
||||
square
|
||||
type="danger"
|
||||
size="large"
|
||||
@click="submit"
|
||||
v-no-more-click="1000"
|
||||
>提交</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { Uploader, Dialog, Field, CellGroup } from 'vant'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
fileList: [], //图片数组
|
||||
message: '', //说明
|
||||
}
|
||||
},
|
||||
components: {
|
||||
[Uploader.name]: Uploader,
|
||||
[Dialog.name]: Dialog,
|
||||
[Field.name]: Field,
|
||||
[CellGroup.name]: CellGroup
|
||||
},
|
||||
methods: {
|
||||
//为图片名加随机数与时间戳
|
||||
afterRead(file) {
|
||||
this.file = file.content
|
||||
this.imgName = Math.floor(Math.random() * 100).toString() + new Date().getTime() + file.file.name
|
||||
//调用上传图片
|
||||
this.uploadImg()
|
||||
},
|
||||
|
||||
//转换
|
||||
dataURLtoFile(dataurl, filename) {
|
||||
//将base64转换为文件
|
||||
var arr = dataurl.split(','),
|
||||
mime = arr[0].match(/:(.*?);/)[1],
|
||||
bstr = atob(arr[1]),
|
||||
n = bstr.length,
|
||||
u8arr = new Uint8Array(n)
|
||||
while (n--) {
|
||||
u8arr[n] = bstr.charCodeAt(n)
|
||||
}
|
||||
return new File([u8arr], filename, { type: mime })
|
||||
},
|
||||
|
||||
//删除之前
|
||||
beforeDelete(file, detail) {
|
||||
Dialog.confirm({
|
||||
title: '提示',
|
||||
message: '您确定要删除吗'
|
||||
}).then(() => {
|
||||
|
||||
})
|
||||
},
|
||||
|
||||
//删除图片
|
||||
deleteImg(arr, file) {
|
||||
arr.map((item, index, array) => {
|
||||
if (item.content == file.content) {
|
||||
array.splice(index, 1)
|
||||
} else {
|
||||
return
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
//提交
|
||||
submit() {
|
||||
Dialog.confirm({
|
||||
title: '提示',
|
||||
message: '您所提交的信息将作为理赔审核的重要依据,提交后无法修改',
|
||||
confirmButtonText:'提交',
|
||||
cancelButtonText:'再看看'
|
||||
}).then(() => {
|
||||
//提交信息
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/fail'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/claims/fail'
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.body.style.backgroundColor = '#fff'
|
||||
},
|
||||
beforeRouteLeave(to, from, next) {
|
||||
document.body.style.backgroundColor = ''
|
||||
next()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.img {
|
||||
width: 50px;
|
||||
}
|
||||
</style>
|
||||
536
src/views/ebiz/claims/ImageData.vue
Normal file
536
src/views/ebiz/claims/ImageData.vue
Normal file
@@ -0,0 +1,536 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="pb80">
|
||||
<div>
|
||||
<!-- <div class="p10 fs14 top">
|
||||
<van-icon name="info-o" class="v-middle" />
|
||||
<span>以下资料为基本资料,由于保险事故具体情况不同,我公司可能还需您提供与本次理赔相关的其他资料,如有需要,我公司工作人员会及时与您取得联系</span>
|
||||
</div>-->
|
||||
<div class="bg-white">
|
||||
<div class="p10">
|
||||
<!-- <van-cell-group>
|
||||
<van-field required label="理赔申请书" disabled />
|
||||
</van-cell-group>
|
||||
<div @click="test('fileList01')">
|
||||
<van-uploader
|
||||
name="fileList01"
|
||||
v-model="fileList01"
|
||||
:after-read="afterRead"
|
||||
@delete="deleteImg"
|
||||
:before-delete="beforeDelete"
|
||||
class="mt10 ml20"
|
||||
/>
|
||||
</div>-->
|
||||
<div v-if="applyType.indexOf('04') == -1">
|
||||
<van-cell-group>
|
||||
<van-field required label="申请人有效身份证件" disabled />
|
||||
</van-cell-group>
|
||||
<div @click="test('fileList02')">
|
||||
<van-uploader
|
||||
name="fileList02"
|
||||
v-model="fileList02"
|
||||
:after-read="afterRead"
|
||||
@delete="deleteImg"
|
||||
:before-delete="beforeDelete"
|
||||
class="mt10 ml20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="applyType.indexOf('04') == -1">
|
||||
<van-cell-group>
|
||||
<van-field required label="被保险人有效身份证件及与申请人的关系证明" disabled />
|
||||
</van-cell-group>
|
||||
<div @click="test('fileList03')">
|
||||
<van-uploader
|
||||
name="fileList03"
|
||||
v-model="fileList03"
|
||||
:after-read="afterRead"
|
||||
@delete="deleteImg"
|
||||
:before-delete="beforeDelete"
|
||||
class="mt10 ml20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="applyType.indexOf('04') >= 0">
|
||||
<van-cell-group>
|
||||
<van-field required label="身故受益人有效身份证件及与被保险人的关系证明" disabled />
|
||||
</van-cell-group>
|
||||
<div @click="test('fileList04')">
|
||||
<van-uploader
|
||||
name="fileList04"
|
||||
v-model="fileList04"
|
||||
:after-read="afterRead"
|
||||
@delete="deleteImg"
|
||||
:before-delete="beforeDelete"
|
||||
class="mt10 ml20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<van-cell-group>
|
||||
<van-field required label="申请人银行储蓄卡" disabled />
|
||||
</van-cell-group>
|
||||
<div @click="test('fileList05')">
|
||||
<van-uploader
|
||||
name="fileList05"
|
||||
v-model="fileList05"
|
||||
:after-read="afterRead"
|
||||
@delete="deleteImg"
|
||||
:before-delete="beforeDelete"
|
||||
class="mt10 ml20"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div v-if="applyType.indexOf('04') == -1">
|
||||
<van-cell-group>
|
||||
<van-field required label="诊断证明和出院小结" disabled />
|
||||
</van-cell-group>
|
||||
<div @click="test('fileList06')">
|
||||
<van-uploader
|
||||
name="fileList06"
|
||||
v-model="fileList06"
|
||||
:after-read="afterRead"
|
||||
@delete="deleteImg"
|
||||
:before-delete="beforeDelete"
|
||||
class="mt10 ml20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="applyType.indexOf('01') >= 0 || applyType.indexOf('02') >= 0 ">
|
||||
<van-cell-group>
|
||||
<van-field required label="发票及费用清单" disabled />
|
||||
</van-cell-group>
|
||||
<div @click="test('fileList07')">
|
||||
<van-uploader
|
||||
name="fileList07"
|
||||
v-model="fileList07"
|
||||
:after-read="afterRead"
|
||||
@delete="deleteImg"
|
||||
:before-delete="beforeDelete"
|
||||
class="mt10 ml20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="applyType.indexOf('04') >= 0 ">
|
||||
<van-cell-group>
|
||||
<van-field required label="死亡证明资料" disabled />
|
||||
</van-cell-group>
|
||||
<div @click="test('fileList08')">
|
||||
<van-uploader
|
||||
name="fileList08"
|
||||
v-model="fileList08"
|
||||
:after-read="afterRead"
|
||||
@delete="deleteImg"
|
||||
:before-delete="beforeDelete"
|
||||
class="mt10 ml20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
v-if="applyType.indexOf('03') >= 0 || applyType.indexOf('07') >= 0 || applyType.indexOf('08') >= 0 || applyType.indexOf('09') >= 0"
|
||||
>
|
||||
<van-cell-group>
|
||||
<van-field required label="确诊病情相关检查资料" disabled />
|
||||
</van-cell-group>
|
||||
<div @click="test('fileList09')">
|
||||
<van-uploader
|
||||
name="fileList09"
|
||||
v-model="fileList09"
|
||||
:after-read="afterRead"
|
||||
@delete="deleteImg"
|
||||
:before-delete="beforeDelete"
|
||||
class="mt10 ml20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="applyType.indexOf('05') >= 0 || applyType.indexOf('06') >= 0">
|
||||
<van-cell-group>
|
||||
<van-field required label="伤残鉴定书" disabled />
|
||||
</van-cell-group>
|
||||
<div @click="test('fileList10')">
|
||||
<van-uploader
|
||||
name="fileList10"
|
||||
v-model="fileList10"
|
||||
:after-read="afterRead"
|
||||
@delete="deleteImg"
|
||||
:before-delete="beforeDelete"
|
||||
class="mt10 ml20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="applyType.indexOf('04') >= 0 ">
|
||||
<van-cell-group>
|
||||
<van-field required label="个人税收居民身份声明" disabled />
|
||||
</van-cell-group>
|
||||
<div @click="test('fileList11')">
|
||||
<van-uploader
|
||||
name="fileList11"
|
||||
v-model="fileList11"
|
||||
:after-read="afterRead"
|
||||
@delete="deleteImg"
|
||||
:before-delete="beforeDelete"
|
||||
class="mt10 ml20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<van-cell-group>
|
||||
<van-field label="其他" disabled />
|
||||
</van-cell-group>
|
||||
<div @click="test('fileList12')">
|
||||
<van-uploader
|
||||
name="fileList12"
|
||||
v-model="fileList12"
|
||||
:after-read="afterRead"
|
||||
@delete="deleteImg"
|
||||
:before-delete="beforeDelete"
|
||||
class="mt10 ml20"
|
||||
/>
|
||||
</div>
|
||||
<!-- end -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-content-s bottom-btn bg-white">
|
||||
<van-button
|
||||
class="bottom0 left0"
|
||||
square
|
||||
type="danger"
|
||||
size="large"
|
||||
@click="nextStep"
|
||||
:disabled="isDisabled"
|
||||
v-no-more-click="1000"
|
||||
>下一步</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { Cell, CellGroup, Field, Uploader, RadioGroup, Radio, Dialog, Picker, Popup } from 'vant'
|
||||
import { uploadImg } from '@/api/ebiz/sale/sale'
|
||||
import RsTop from '@/components/ebiz/agentEenter/RsTop'
|
||||
import config from '@/config'
|
||||
import { progressDetail, apply } from '@/api/ebiz/claims/claims'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
isDisabled: true,
|
||||
// 理赔申请书
|
||||
// fileList01: [],
|
||||
// 申请人有效身份证件
|
||||
fileList02: [],
|
||||
// 被保险人有效身份证件及与申请人的关系证明
|
||||
fileList03: [],
|
||||
// 身故受益人有效身份证件及与被保险人的关系证明
|
||||
fileList04: [],
|
||||
// 申请人银行储蓄卡
|
||||
fileList05: [],
|
||||
// 诊断证明和出院小结
|
||||
fileList06: [],
|
||||
// 发票及费用清单
|
||||
fileList07: [],
|
||||
// 死亡证明资料
|
||||
fileList08: [],
|
||||
// 确诊病情相关检查资料
|
||||
fileList09: [],
|
||||
// 残疾鉴定文件
|
||||
fileList10: [],
|
||||
// 个人税收居民身份声明
|
||||
fileList11: [],
|
||||
// 其他
|
||||
fileList12: [],
|
||||
// 图片流
|
||||
file: '',
|
||||
// 图片名称
|
||||
imgName: '',
|
||||
// 是哪个证件类型
|
||||
id: '',
|
||||
type: '', //
|
||||
accidentCause: '', //出险原因
|
||||
applyType: '', //申请类型
|
||||
list: [], //给后台传的list
|
||||
imageType: ''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.body.style.backgroundColor = '#fff'
|
||||
if (this.$route.query.edit) {
|
||||
this.progressDetail()
|
||||
} else {
|
||||
this.accidentCause = localStorage.accidentCause //出险原因
|
||||
this.applyType = localStorage.applyType //申请类型
|
||||
}
|
||||
console.log(this.applyType.indexOf('04'))
|
||||
},
|
||||
beforeRouteLeave(to, from, next) {
|
||||
document.body.style.backgroundColor = ''
|
||||
next()
|
||||
},
|
||||
methods: {
|
||||
progressDetail() {
|
||||
// 获取详情
|
||||
let data = {
|
||||
caseStatus: 'applying',
|
||||
businessNo: localStorage.businessNo
|
||||
}
|
||||
progressDetail(data).then(res => {
|
||||
console.log(res)
|
||||
if (res.result == 0) {
|
||||
this.accidentCause = res.content.accidentCause
|
||||
this.applyType = res.content.applyType
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
dataURLtoFile(dataurl, filename) {
|
||||
//将base64转换为文件
|
||||
var arr = dataurl.split(','),
|
||||
mime = arr[0].match(/:(.*?);/)[1],
|
||||
bstr = atob(arr[1]),
|
||||
n = bstr.length,
|
||||
u8arr = new Uint8Array(n)
|
||||
while (n--) {
|
||||
u8arr[n] = bstr.charCodeAt(n)
|
||||
}
|
||||
return new File([u8arr], filename, { type: mime })
|
||||
},
|
||||
afterRead(file) {
|
||||
let that = this
|
||||
that.file = file.content
|
||||
that.imgName = Math.floor(Math.random() * 100).toString() + new Date().getTime() + file.file.name //为图片名加随机数 与时间戳
|
||||
|
||||
that.uploadImg()
|
||||
},
|
||||
uploadImg() {
|
||||
let that = this
|
||||
this.$toast.loading({
|
||||
duration: 0, // 持续展示 toast
|
||||
forbidClick: true, // 禁用背景点击
|
||||
loadingType: 'spinner',
|
||||
message: '加载中……'
|
||||
})
|
||||
let formdata = new FormData()
|
||||
|
||||
formdata.append('imgPath', that.dataURLtoFile(that.file, that.imgName))
|
||||
console.log('file-----------------', that.file)
|
||||
console.log('name-----------------', that.imgName)
|
||||
uploadImg(formdata).then(res => {
|
||||
if (res.result == '0') {
|
||||
console.log(res)
|
||||
this.$toast.clear()
|
||||
if (that.type == 'fileList01') {
|
||||
this.imageType = '1'
|
||||
} else if (that.type == 'fileList02') {
|
||||
this.imageType = '2'
|
||||
} else if (that.type == 'fileList03') {
|
||||
this.imageType = '3'
|
||||
} else if (that.type == 'fileList04') {
|
||||
this.imageType = '4'
|
||||
} else if (that.type == 'fileList05') {
|
||||
this.imageType = '5'
|
||||
} else if (that.type == 'fileList06') {
|
||||
this.imageType = '6'
|
||||
} else if (that.type == 'fileList07') {
|
||||
this.imageType = '7'
|
||||
} else if (that.type == 'fileList08') {
|
||||
this.imageType = '8'
|
||||
} else if (that.type == 'fileList09') {
|
||||
this.imageType = '9'
|
||||
} else if (that.type == 'fileList10') {
|
||||
this.imageType = '10'
|
||||
} else if (that.type == 'fileList11') {
|
||||
this.imageType = '11'
|
||||
} else if (that.type == 'fileList12') {
|
||||
this.imageType = '12'
|
||||
}
|
||||
let obj = {
|
||||
imageType: this.imageType,
|
||||
fileName: that.imgName,
|
||||
rgssUrl: encodeURI(res.path).replace(/\+/g, '%2B')
|
||||
}
|
||||
that.list.push(obj)
|
||||
}
|
||||
})
|
||||
},
|
||||
//删除之前提示
|
||||
beforeDelete(file, detail) {
|
||||
Dialog.confirm({
|
||||
title: '提示',
|
||||
message: '您确定要删除吗'
|
||||
}).then(() => {
|
||||
if (detail.name == 'fileList01') {
|
||||
this.deleteImg(this.fileList01, file)
|
||||
} else if (detail.name == 'fileList02') {
|
||||
this.deleteImg(this.fileList02, file)
|
||||
} else if (detail.name == 'fileList03') {
|
||||
this.deleteImg(this.fileList03, file)
|
||||
} else if (detail.name == 'fileList04') {
|
||||
this.deleteImg(this.fileList04, file)
|
||||
} else if (detail.name == 'fileList05') {
|
||||
this.deleteImg(this.fileList05, file)
|
||||
} else if (detail.name == 'fileList06') {
|
||||
this.deleteImg(this.fileList06, file)
|
||||
} else if (detail.name == 'fileList07') {
|
||||
this.deleteImg(this.fileList07, file)
|
||||
}
|
||||
// this.deleteImg(file)
|
||||
})
|
||||
},
|
||||
//删除图片
|
||||
deleteImg(arr, file) {
|
||||
arr.map((item, index, array) => {
|
||||
if (item.content == file.content) {
|
||||
array.splice(index, 1)
|
||||
} else {
|
||||
return
|
||||
}
|
||||
})
|
||||
},
|
||||
test(type) {
|
||||
let that = this
|
||||
that.type = type
|
||||
},
|
||||
// 下一步
|
||||
nextStep() {
|
||||
console.log(this.list)
|
||||
this.$toast.loading({
|
||||
duration: 0, // 持续展示 toast
|
||||
forbidClick: true, // 禁用背景点击
|
||||
loadingType: 'spinner',
|
||||
message: '加载中……'
|
||||
})
|
||||
let data = {
|
||||
userModel: {
|
||||
id: '123456',
|
||||
name: '王某',
|
||||
mobile: '13592585978'
|
||||
},
|
||||
claimImageReqDTO: {
|
||||
businessNo: localStorage.businessNo, //业务号
|
||||
claimImageInfoDTOS: this.list
|
||||
},
|
||||
slaveStatus: 'claimApplyImage'
|
||||
}
|
||||
apply(data).then(res => {
|
||||
if (res.result == '0') {
|
||||
this.$toast.clear()
|
||||
localStorage.removeItem('claimId', 'applyId', 'insuranceId')
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/SignatureConfirmation',
|
||||
forbidSwipeBack: '1',
|
||||
pullRefresh: '1',
|
||||
backToFirst: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/claims/SignatureConfirmation'
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.list = []
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
listenChange() {
|
||||
const {
|
||||
fileList01,
|
||||
fileList02,
|
||||
fileList03,
|
||||
fileList04,
|
||||
fileList05,
|
||||
fileList06,
|
||||
fileList07,
|
||||
fileList08,
|
||||
fileList09,
|
||||
fileList10,
|
||||
fileList11,
|
||||
fileList12
|
||||
} = this
|
||||
return {
|
||||
fileList01,
|
||||
fileList02,
|
||||
fileList03,
|
||||
fileList04,
|
||||
fileList05,
|
||||
fileList06,
|
||||
fileList07,
|
||||
fileList08,
|
||||
fileList09,
|
||||
fileList10,
|
||||
fileList11,
|
||||
fileList12
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
listenChange(val) {
|
||||
let that = this
|
||||
if (that.applyType.indexOf('04') >= 0) {
|
||||
//申请类型有身故时
|
||||
if (val.fileList04.length != '0' && val.fileList05.length != '0' && val.fileList08.length != '0' && val.fileList11.length != '0') {
|
||||
that.isDisabled = false
|
||||
} else {
|
||||
that.isDisabled = true
|
||||
}
|
||||
} else {
|
||||
//申请类型没有身故时
|
||||
if (val.fileList01.length != '0' && val.fileList02.length != '0' && val.fileList03.length != '0') {
|
||||
that.isDisabled = false
|
||||
} else {
|
||||
that.isDisabled = true
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Field.name]: Field,
|
||||
[Uploader.name]: Uploader,
|
||||
[RadioGroup.name]: RadioGroup,
|
||||
[Radio.name]: Radio,
|
||||
[Dialog.name]: Dialog,
|
||||
[Picker.name]: Picker,
|
||||
[Popup.name]: Popup,
|
||||
[RsTop.name]: RsTop
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '@/assets/sass/variables.scss';
|
||||
|
||||
.top {
|
||||
color: #739fce;
|
||||
background: #ebfaff;
|
||||
line-height: 20px;
|
||||
}
|
||||
.attachmentManagement-block {
|
||||
width: 4px;
|
||||
height: 15px;
|
||||
background: #d6211a;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.attachmentManagement-next {
|
||||
width: 100%;
|
||||
}
|
||||
/deep/ .van-hairline-unset--top-bottom::after {
|
||||
border: none;
|
||||
}
|
||||
/deep/.van-cell__title {
|
||||
width: auto !important;
|
||||
}
|
||||
</style>
|
||||
549
src/views/ebiz/claims/InsuredInfo.vue
Normal file
549
src/views/ebiz/claims/InsuredInfo.vue
Normal file
@@ -0,0 +1,549 @@
|
||||
<template>
|
||||
<div class="insured-info-container">
|
||||
<van-cell-group>
|
||||
<p class="h10 bg-gray-base"></p>
|
||||
<div style="border-bottom: 1px solid #ebedf0" class="flex justify-content-s">
|
||||
<p class="fwb fs15 pl10 pv12">基本信息</p>
|
||||
<u class="pv12 fs14 pr10 green" @click="toSearch">已有历史报案信息</u>
|
||||
</div>
|
||||
<van-field
|
||||
label="姓名"
|
||||
name="姓名"
|
||||
required
|
||||
v-model="userInfo.insuredName"
|
||||
placeholder="请输入"
|
||||
v-validate="'required|name'"
|
||||
clearable
|
||||
/>
|
||||
<select-radio
|
||||
:radios="sexRadio"
|
||||
label="性别"
|
||||
name="性别"
|
||||
v-validate="'required'"
|
||||
required
|
||||
:value.sync="userInfo.insuredSex"
|
||||
></select-radio>
|
||||
<FieldDatePicter
|
||||
required
|
||||
v-validate="'required'"
|
||||
label="出生日期"
|
||||
name="出生日期"
|
||||
:value.sync="userInfo.insuredBirthday"
|
||||
ref="insuredBirthday"
|
||||
type="date"
|
||||
:flag="true"
|
||||
@confirm="onDateConfirm($event, '2')"
|
||||
></FieldDatePicter>
|
||||
<van-field
|
||||
:value="userInfo.certiType | idToText('lpIdType')"
|
||||
required
|
||||
v-validate="'required'"
|
||||
readonly
|
||||
label="证件类型"
|
||||
name="证件类型"
|
||||
right-icon="arrow"
|
||||
placeholder="请选择"
|
||||
@click="toSelect('2')"
|
||||
/>
|
||||
<van-field
|
||||
v-model="userInfo.certiCode"
|
||||
maxlength="18"
|
||||
label="证件号码"
|
||||
name="证件号码"
|
||||
placeholder="请输入"
|
||||
required
|
||||
v-validate="'required'"
|
||||
clearable
|
||||
>
|
||||
<van-button
|
||||
v-if="userInfo.certiType == 0"
|
||||
slot="button"
|
||||
size="small"
|
||||
type="danger"
|
||||
round
|
||||
@click="selectClick('3')"
|
||||
>证件扫描</van-button>
|
||||
</van-field>
|
||||
|
||||
<FieldDatePicter
|
||||
:v-validate="{ required: certiexpiredateRequired }"
|
||||
required
|
||||
label="证件截止日期"
|
||||
name="证件截止日期"
|
||||
:defaultDate="new Date()"
|
||||
:value.sync="userInfo.certiTypeEndDate"
|
||||
type="date"
|
||||
@confirm="onEndDateConfirm($event, '1')"
|
||||
ref="certiTypeEndDate"
|
||||
:flag="true"
|
||||
></FieldDatePicter>
|
||||
<div class="border-bt relative fs14 p10 flex align-center">
|
||||
<van-checkbox
|
||||
v-model="effectiveDateType"
|
||||
:disabled="effectiveDateTypeAble"
|
||||
@change="effectiveDataTypeChange"
|
||||
>长期</van-checkbox>
|
||||
</div>
|
||||
<occupation-picker
|
||||
:value.sync="userInfo.insuredOccuCode"
|
||||
:chooseName.sync="userInfo.insuredOccuName"
|
||||
:lifeGrade.sync="userInfo.lifeGrade"
|
||||
:healthGrade.sync="userInfo.healthGrade"
|
||||
clearable
|
||||
label="职业"
|
||||
name="职业"
|
||||
required
|
||||
v-validate="'required'"
|
||||
placeholder="请选择"
|
||||
:parentShowPicker.sync="occupationShowPicker"
|
||||
@on-click="selectClick('2')"
|
||||
@on-choose="ChooseOccupation"
|
||||
/>
|
||||
<van-field
|
||||
label="联系电话"
|
||||
name="联系电话"
|
||||
v-model="userInfo.insuredMobile"
|
||||
placeholder="请输入"
|
||||
required
|
||||
v-validate="'required|mobile'"
|
||||
maxlength="11"
|
||||
clearable
|
||||
/>
|
||||
<van-field
|
||||
:value="userInfo.insuredNationatlity | idToText('nativeplace')"
|
||||
readonly
|
||||
required
|
||||
label="国籍"
|
||||
name="国籍"
|
||||
v-validate="'required'"
|
||||
right-icon="arrow"
|
||||
placeholder="请选择"
|
||||
@click="toSelect('4')"
|
||||
/>
|
||||
<van-field
|
||||
v-model="areaName"
|
||||
label="联系地址"
|
||||
name="联系地址"
|
||||
right-icon="arrow"
|
||||
required
|
||||
readonly
|
||||
v-validate="'required'"
|
||||
placeholder="请选择地址"
|
||||
@click="areaShow = true"
|
||||
/>
|
||||
</van-cell-group>
|
||||
<!-- 字段选择 -->
|
||||
<van-popup v-model="popupShow" position="bottom">
|
||||
<van-picker show-toolbar :columns="columns" @confirm="onConfirm" @cancel="popupShow = false" />
|
||||
</van-popup>
|
||||
<!--身份证扫描 -->
|
||||
<van-popup v-model="isScan" position="bottom">
|
||||
<IdentityCardScan @getScanInfo="getIdentityInfo"></IdentityCardScan>
|
||||
</van-popup>
|
||||
<!-- 地区选择 -->
|
||||
<van-popup v-model="areaShow" position="bottom">
|
||||
<van-area
|
||||
:area-list="areaList"
|
||||
value="110101"
|
||||
@confirm="sureArea($event, '1')"
|
||||
@cancel="areaShow = false"
|
||||
/>
|
||||
</van-popup>
|
||||
<van-field
|
||||
v-model="userInfo.insuredAddr"
|
||||
required
|
||||
center
|
||||
label="详细地址"
|
||||
clearable
|
||||
placeholder="请输入详细地址"
|
||||
/>
|
||||
<div class="bottom-btn bg-white">
|
||||
<van-button type="danger" size="large" @click="nextStep" v-no-more-click="1000">下一步</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { Field, CellGroup, Popup, Picker, Checkbox, Area } from 'vant'
|
||||
import SelectRadio from '@/components/ebiz/SelectRadio'
|
||||
import FieldDatePicter from '@/components/ebiz/FieldDatePicter'
|
||||
import OccupationPicker from '@/components/ebiz/occipation/OccupationPicker'
|
||||
import { selectComp, chooseOccupation } from '@/views/ebiz/sale/js/methods'
|
||||
import IdentityCardScan from '@/components/ebiz/sale/IdentityCardScan'
|
||||
import DataDictionary from '@/assets/js/utils/data-dictionary.js'
|
||||
import areaList from '@/assets/js/utils/area'
|
||||
import getAreaName from '@/assets/js/utils/get-area-name'
|
||||
import idNoCheck from '@/assets/js/utils/idNoCheck'
|
||||
import { apply, query } from '@/api/ebiz/claims/claims'
|
||||
import { idToData } from '@/views/ebiz/customer/js/verification'
|
||||
import utilsAge from '@/assets/js/utils/age'
|
||||
export default {
|
||||
name: 'insuredInfo',
|
||||
components: {
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Field.name]: Field,
|
||||
[SelectRadio.name]: SelectRadio,
|
||||
[FieldDatePicter.name]: FieldDatePicter,
|
||||
[OccupationPicker.name]: OccupationPicker,
|
||||
[Popup.name]: Popup,
|
||||
[Picker.name]: Picker,
|
||||
[IdentityCardScan.name]: IdentityCardScan,
|
||||
[Checkbox.name]: Checkbox,
|
||||
[Area.name]: Area
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
isScan: false, //是否显示证件扫描组件
|
||||
// 性别
|
||||
sexRadio: [
|
||||
{
|
||||
label: '男',
|
||||
value: '0'
|
||||
},
|
||||
{
|
||||
label: '女',
|
||||
value: '1'
|
||||
}
|
||||
],
|
||||
slaveStatus: 'claimApplyInsured', //进行到的状态
|
||||
claimId: '', //用于数据反显的id
|
||||
from: this.$route.query.from, //跳转来源
|
||||
columns: [],
|
||||
popupShow: false,
|
||||
occupationShowPicker: false,
|
||||
certiexpiredateRequired: true, //证件截止日期是否需要校验
|
||||
effectiveDateType: '',
|
||||
effectiveDateTypeAble: '', // 长期是否禁用
|
||||
currentPopupIndex: '',
|
||||
areaList: areaList, //省市区数据
|
||||
areaName: '', //联系地址
|
||||
areaShow: false, //地址选择显示隐藏
|
||||
|
||||
userInfo: {
|
||||
insuredName: '', //姓名
|
||||
insuredSex: '0', //性别
|
||||
insuredBirthday: '', //出生日期
|
||||
certiType: '', //证件类型
|
||||
certiCode: '', // 证件号码
|
||||
insuredNo: '', //被保人编号
|
||||
insuredOccuCode: '', //职业类型编码
|
||||
insuredOccuName: '', //职业类别名称
|
||||
lifeGrade: '', //寿险等级
|
||||
healthGrade: '', //健康等级
|
||||
insuredMobile: '', //联系电话
|
||||
certiTypeEndDate: '', //新增截止日期
|
||||
insuredNationatlity: '1', // 新增国籍
|
||||
insuredProvince: '', //新增被保人所在省
|
||||
insuredCity: '', //新增被保人所在市
|
||||
insuredCounty: '', //新增被保人所在区/县
|
||||
insuredAddr: '', //被保人详细地址
|
||||
id: localStorage.claimId || '' //用于区分新增还是二次提交
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.judge()
|
||||
//this.ReturnShow()
|
||||
},
|
||||
mounted() {
|
||||
document.body.style.backgroundColor = '#fff'
|
||||
// 筛选按钮的点击事件
|
||||
window.appCallBack = this.appCallBack
|
||||
},
|
||||
beforeRouteLeave(to, from, next) {
|
||||
document.body.style.backgroundColor = ''
|
||||
next()
|
||||
},
|
||||
methods: {
|
||||
appCallBack(data) {
|
||||
if (data.trigger == 'left_button_click') {
|
||||
localStorage.removeItem('claimId', 'applyId', 'insuranceId')
|
||||
}
|
||||
},
|
||||
//判断是否由客户报案历史进入,客户信息反显
|
||||
judge() {
|
||||
if (this.from == 'ReportInfo') {
|
||||
if (JSON.parse(localStorage.getItem('customerData'))) {
|
||||
this.userInfo = JSON.parse(localStorage.getItem('customerData'))
|
||||
//this.userInfo.rptNo = '12345678' //测试使用
|
||||
}
|
||||
}
|
||||
// console.log(this.userInfo)
|
||||
},
|
||||
//校验出生日期
|
||||
onDateConfirm(val) {
|
||||
if (Date.parse(val) > Date.parse(new Date())) {
|
||||
this.userInfo.insuredBirthday = ''
|
||||
this.$refs.insuredBirthday.date = ''
|
||||
return this.$toast('出生日期不晚于当日')
|
||||
}
|
||||
},
|
||||
//校验证件截止日期
|
||||
onEndDateConfirm(val, type) {
|
||||
if (Date.parse(val) < Date.parse(new Date())) {
|
||||
this.userInfo.certiTypeEndDate = ''
|
||||
this.$refs.certiTypeEndDate.date = ''
|
||||
return this.$toast('您的证件已过期')
|
||||
}
|
||||
},
|
||||
//弹框选择
|
||||
toSelect(pickerType, valueKey) {
|
||||
//pickerType 1.申请人身份 2、证件类型 3、税收居民身份 4、国家/地区 5、开户银行 6、疾病代码 7、事故代码 8.手术代码9.治疗医院
|
||||
;[this.popupShow, this.pickerType] = [true, pickerType]
|
||||
if (valueKey) this.valueKey = valueKey
|
||||
if (pickerType == '2') {
|
||||
this.columns = DataDictionary.lpIdType
|
||||
} else if (pickerType == '4') {
|
||||
this.columns = DataDictionary.nativeplace
|
||||
this.$set(this.columns[11], 'disabled', true)
|
||||
this.$set(this.columns[13], 'disabled', true)
|
||||
}
|
||||
},
|
||||
//区域选择
|
||||
sureArea(area, type) {
|
||||
this.areaName = getAreaName(area)
|
||||
;[this.userInfo.insuredProvince, this.userInfo.insuredCity, this.userInfo.insuredCounty] = [area[0].code, area[1].code, area[2].code]
|
||||
this.areaShow = false
|
||||
},
|
||||
//获取身份证扫描信息
|
||||
getIdentityInfo(data) {
|
||||
let that = this
|
||||
console.log(data)
|
||||
// 正面
|
||||
if (data.name && data.name != '待识别') {
|
||||
that.userInfo.insuredName = data.name
|
||||
that.userInfo.certiCode = data.idNo
|
||||
that.userInfo.insuredSex = data.gender == '男' ? '0' : '1'
|
||||
that.userInfo.insuredBirthday = idToData(that.userInfo.certiCode).birthday
|
||||
}
|
||||
this.$jump({
|
||||
flag: 'navigation',
|
||||
extra: {
|
||||
title: '申请信息',
|
||||
hiddenRight: '1'
|
||||
}
|
||||
})
|
||||
that.isScan = false
|
||||
},
|
||||
// 点击去搜索页
|
||||
toSearch() {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/searchCustomer?from=InsuredInfo',
|
||||
backToFirst: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/claims/searchCustomer?from=InsuredInfo'
|
||||
}
|
||||
})
|
||||
},
|
||||
//确认选择字段
|
||||
onConfirm(value) {
|
||||
this.popupShow = false
|
||||
if (this.pickerType == '2') {
|
||||
//身份证以外的证件类型可以使用长期
|
||||
// if (value.id != '0') {
|
||||
// this.effectiveDateTypeAble = true
|
||||
// } else {
|
||||
// //let age = utilsAge.getAge(this.userInfo.idNo, new Date())
|
||||
// //this.effectiveDateTypeAble = age <= 45
|
||||
// }
|
||||
this.userInfo.certiType = value.id
|
||||
} else if (this.pickerType == '4') {
|
||||
this.userInfo.insuredNationatlity = value.id
|
||||
}
|
||||
},
|
||||
selectClick(index) {
|
||||
this.currentPopupIndex = index
|
||||
selectComp(this, index, '2')
|
||||
let title = ''
|
||||
if (index == 2) {
|
||||
;[this.occupationShowPicker, title] = [true, '职业类别']
|
||||
} else if (index == 3) {
|
||||
localStorage.scanFromInsured = 'true'
|
||||
;[this.isScan, title] = [true, '身份证扫描']
|
||||
}
|
||||
setTimeout(() => {
|
||||
this.$jump({
|
||||
flag: 'navigation',
|
||||
extra: {
|
||||
title,
|
||||
hiddenLeft: '1'
|
||||
}
|
||||
})
|
||||
this.closeBtn()
|
||||
}, 400)
|
||||
},
|
||||
ChooseOccupation() {
|
||||
// chooseOccupation(this, '2')
|
||||
this.occupationShowPicker = false
|
||||
},
|
||||
closeBtn() {
|
||||
// 筛选按钮的显示
|
||||
this.$jump({
|
||||
flag: 'webview_right_button',
|
||||
extra: {
|
||||
btns: [
|
||||
{
|
||||
img: this.$assetsUrl + 'images/del-close.png',
|
||||
route: { flag: '', extra: {} }
|
||||
}
|
||||
]
|
||||
}
|
||||
})
|
||||
},
|
||||
appCallBack() {
|
||||
// 筛选按钮的点击事件
|
||||
this.$jump({
|
||||
flag: 'navigation',
|
||||
extra: {
|
||||
title: '申请信息',
|
||||
hiddenRight: '1'
|
||||
}
|
||||
})
|
||||
if (this.currentPopupIndex == 2) {
|
||||
this.occupationShowPicker = false
|
||||
} else if (this.currentPopupIndex == 3) {
|
||||
this.isScan = false
|
||||
}
|
||||
},
|
||||
nextStep() {
|
||||
//表单校验, 成功跳转
|
||||
this.$validator.validate().then(valid => {
|
||||
if (true === valid) {
|
||||
if (this.userInfo.certiType == '0') {
|
||||
//身份证
|
||||
if (this.userInfo.certiCode.length == '18') {
|
||||
//18位身份证第17位是性别位, 奇男偶女
|
||||
let sexSign = this.userInfo.certiCode.substr(16, 1)
|
||||
if ((parseInt(sexSign) % 2 == 0 && this.userInfo.insuredSex != 1) || (parseInt(sexSign) % 2 != 0 && this.userInfo.insuredSex != 0)) {
|
||||
return this.$toast('性别录入与身份证不符')
|
||||
}
|
||||
//18位身份证第7-14位是生日位, 年月日
|
||||
let birthSign = this.userInfo.certiCode.substr(6, 8)
|
||||
if (
|
||||
this.userInfo.insuredBirthday.substr(0, 4) != birthSign.substr(0, 4) ||
|
||||
this.userInfo.insuredBirthday.substr(5, 2) != birthSign.substr(4, 2) ||
|
||||
this.userInfo.insuredBirthday.substr(8, 2) != birthSign.substr(6, 2)
|
||||
) {
|
||||
return this.$toast('生日录入与身份证不符')
|
||||
}
|
||||
}
|
||||
// 证件号码规则校验
|
||||
if (!idNoCheck.isIdno(this.userInfo.certiCode)) {
|
||||
this.$toast('您填写的证件号码有误')
|
||||
} else {
|
||||
this.save()
|
||||
}
|
||||
// } else if (this.userInfo.certiType == '1') {
|
||||
// //户口本
|
||||
// if (this.userInfo.certiCode.length != 18) {
|
||||
// this.$toast('户口本的证件号码长度应等于18位')
|
||||
// } else {
|
||||
// this.save()
|
||||
// }
|
||||
// } else if (this.userInfo.certiType == '2') {
|
||||
// //出生证
|
||||
// if (this.userInfo.certiCode.length < 3) {
|
||||
// this.$toast('出生证须大于等于3个字符')
|
||||
// } else {
|
||||
// this.save()
|
||||
// }
|
||||
// } else if (this.userInfo.certiType == '5') {
|
||||
// //证件是港澳居民通行证
|
||||
// if (this.userInfo.certiCode.length != 9) {
|
||||
// this.$toast('证件类型为港澳居民通行证的,证件号码须为9位')
|
||||
// } else if (!/^(H|M)[0-9]{8}$/.test(this.userInfo.certiCode)) {
|
||||
// this.$toast('证件类型为港澳居民通行证的,证件号码首位字母为"H"/"M",证件号码第2位至第9位为阿拉伯数字')
|
||||
// } else {
|
||||
// this.save()
|
||||
// }
|
||||
// } else if (this.userInfo.certiType == '6') {
|
||||
// //证件是台湾居民通行证
|
||||
// if (this.userInfo.certiCode.length != 8) {
|
||||
// this.$toast('证件类型为台湾居民通行证的,证件号码须为8位数字')
|
||||
// } else {
|
||||
// this.save()
|
||||
// }
|
||||
} else {
|
||||
this.save()
|
||||
}
|
||||
} else {
|
||||
this.$toast(this.$validator.errors.all()[0])
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
//长期状态改变时
|
||||
effectiveDataTypeChange(val) {
|
||||
if (val) {
|
||||
this.userInfo.certiTypeEndDate = '9999-09-09'
|
||||
this.certiexpiredateRequired = false
|
||||
} else {
|
||||
this.userInfo.certiTypeEndDate = ''
|
||||
this.certiexpiredateRequired = true
|
||||
}
|
||||
effectiveDataTypeChange(this, val)
|
||||
},
|
||||
|
||||
save() {
|
||||
console.log(this.userInfo)
|
||||
this.$toast.loading({
|
||||
duration: 0, // 持续展示 toast
|
||||
forbidClick: true, // 禁用背景点击
|
||||
loadingType: 'spinner',
|
||||
message: '加载中……'
|
||||
})
|
||||
let data = {
|
||||
userModel: {
|
||||
id: '123456',
|
||||
name: '王某',
|
||||
mobile: '13592585978'
|
||||
},
|
||||
slaveStatus: this.slaveStatus,
|
||||
claimApplyInsuredReqDTO: this.userInfo
|
||||
}
|
||||
apply(data).then(res => {
|
||||
console.log(res)
|
||||
if (res.result == 0) {
|
||||
this.$toast.clear()
|
||||
localStorage.setItem('businessNo', res.content.businessNo)
|
||||
let Data = JSON.stringify(res.content.userModel)
|
||||
localStorage.setItem('userModel', Data)
|
||||
localStorage.setItem('claimId', res.content.claimId)
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/Accident?from=InsuredInfo',
|
||||
forbidSwipeBack: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/claims/Accident?from=InsuredInfo'
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.insured-info-container {
|
||||
/deep/.van-checkbox {
|
||||
margin-left: auto;
|
||||
}
|
||||
/deep/.van-radio {
|
||||
margin-left: auto;
|
||||
}
|
||||
/deep/ .bankCard {
|
||||
width: 120px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
128
src/views/ebiz/claims/ProblemList.vue
Normal file
128
src/views/ebiz/claims/ProblemList.vue
Normal file
@@ -0,0 +1,128 @@
|
||||
<template>
|
||||
<div class="problem-list-container">
|
||||
<div class="problem-list-content">
|
||||
<!-- tab 栏切换 -->
|
||||
<van-tabs v-model="activeName">
|
||||
<van-tab title="契约" name="contract">
|
||||
<div v-if="ProblemData.length > 0">
|
||||
<div class="fs12" v-for="(item, index) in ProblemData" :key="index">
|
||||
<div class="flex align-items-c justify-content-c h40">
|
||||
<div>报案号:</div>
|
||||
<div>{{ item.No }}</div>
|
||||
</div>
|
||||
<div class="bg-white p15">
|
||||
<div class="mv15">
|
||||
<div class="w60 inline-b">
|
||||
<van-tag plain color="#5CA7DE">投保人</van-tag>
|
||||
</div>
|
||||
<span class="fs15 c-gray-dark">{{ item.insured }}</span>
|
||||
</div>
|
||||
<div class="mv15">
|
||||
<div class="w60 inline-b">
|
||||
<van-tag plain color="#DD9C56">被保人</van-tag>
|
||||
</div>
|
||||
<span class="fs15 c-gray-dark">{{ item.applicant }}</span>
|
||||
</div>
|
||||
<div class="mv15">
|
||||
<div class="w60 inline-b">
|
||||
<van-tag plain color="#95DDD1">主险</van-tag>
|
||||
</div>
|
||||
<span class="fs15 c-gray-dark">{{ item.mainRisk }}</span>
|
||||
</div>
|
||||
<van-cell-group class="pv0">
|
||||
<van-cell title="首期保费(元):" value="20176.00" :border="false" class="ph0" />
|
||||
</van-cell-group>
|
||||
<div class="pt15">
|
||||
<div class="mb10">
|
||||
<div class="w90 inline-b">
|
||||
<van-tag plain color="#999999">投保提交日期</van-tag>
|
||||
</div>
|
||||
<span class="fs14 c-gray-dark ml10">{{ item.insuredDate }}</span>
|
||||
</div>
|
||||
<div class="mb10">
|
||||
<div class="w90 inline-b">
|
||||
<van-tag plain color="#999999">照会下达日期</van-tag>
|
||||
</div>
|
||||
<span class="fs14 c-gray-dark ml10">{{ item.issuedDate }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<div class="w90 inline-b">
|
||||
<van-tag plain color="#999999">状态</van-tag>
|
||||
</div>
|
||||
<span class="fs14 c-gray-dark ml10">{{ item.stauts }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt10 flex justify-content-fe">
|
||||
<van-button
|
||||
@click="gofillImage"
|
||||
round
|
||||
size="small"
|
||||
class="mr5"
|
||||
type="danger"
|
||||
plain
|
||||
v-no-more-click="1000"
|
||||
>问题件处理</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="text-center">
|
||||
<img class="mt40 w250" src="@/assets/images/pic_page-non.png" />
|
||||
<div class="fs17 c-gray-dark mt40">暂无案件信息!</div>
|
||||
</div>
|
||||
</van-tab>
|
||||
|
||||
|
||||
<van-tab title="保全" name="preservation">内容 2</van-tab>
|
||||
<van-tab title="理赔" name="claims">内容 3</van-tab>
|
||||
</van-tabs>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Tab, Tabs, Tag, Cell, CellGroup } from 'vant'
|
||||
|
||||
export default {
|
||||
name: 'ProblemList',
|
||||
components: {
|
||||
[Tab.name]: Tab,
|
||||
[Tabs.name]: Tabs,
|
||||
[Tag.name]: Tag,
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: 'contract', //tab标签页通过标签指定的name进行匹配,contract为契约、preservation为保全、claims为理赔
|
||||
ProblemData: [
|
||||
{
|
||||
No: 32187368721638721638,
|
||||
insured: '李雷',
|
||||
applicant: '张珊珊',
|
||||
mainRisk: '鼎诚鼎康保终身重大疾病保险',
|
||||
insuredDate: '2019-10-11',
|
||||
issuedDate: '2019-11-01',
|
||||
stauts: '未处理'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
gofillImage() {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/FillImage'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/claims/FillImage'
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>>
|
||||
626
src/views/ebiz/claims/ReportApply.vue
Normal file
626
src/views/ebiz/claims/ReportApply.vue
Normal file
@@ -0,0 +1,626 @@
|
||||
<template>
|
||||
<div class="apply-info-container pb50">
|
||||
<!-- 基本信息 -->
|
||||
<p class="h10 bg-gray-base"></p>
|
||||
<van-cell-group>
|
||||
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">基本信息</p>
|
||||
<customer-picker
|
||||
@nameChange="nameChange"
|
||||
@on-choose="chooseCustomer(arguments)"
|
||||
name="申请人姓名"
|
||||
label="申请人姓名"
|
||||
:parentShowPicker.sync="customerShowPicker"
|
||||
:value.sync="insuredName"
|
||||
v-validate="'required|name'"
|
||||
required
|
||||
@on-click="selectClick('1')"
|
||||
></customer-picker>
|
||||
<select-radio
|
||||
:radios="sexRadio"
|
||||
label="性别"
|
||||
name="性别"
|
||||
v-validate="'required'"
|
||||
required
|
||||
:value.sync="insuredSex"
|
||||
></select-radio>
|
||||
<FieldDatePicter
|
||||
required
|
||||
v-validate="'required'"
|
||||
label="出生日期"
|
||||
name="出生日期"
|
||||
:value.sync="insuredBirthday"
|
||||
type="date"
|
||||
:flag="true"
|
||||
></FieldDatePicter>
|
||||
<van-field
|
||||
:value="certiType | idToText('lpIdType')"
|
||||
v-validate="'required'"
|
||||
readonly
|
||||
required
|
||||
label="证件类型"
|
||||
name="证件类型"
|
||||
right-icon="arrow"
|
||||
placeholder="请选择"
|
||||
@click="toSelect('1')"
|
||||
/>
|
||||
<van-field
|
||||
v-model="certiCode"
|
||||
maxlength="18"
|
||||
label="证件号码"
|
||||
name="证件号码"
|
||||
clearable
|
||||
required
|
||||
v-validate="'required'"
|
||||
placeholder="请输入"
|
||||
@blur="getRelatedData(certiCode)"
|
||||
></van-field>
|
||||
</van-cell-group>
|
||||
|
||||
<!-- 报案人信息 -->
|
||||
<van-cell-group>
|
||||
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">报案人信息</p>
|
||||
<van-field
|
||||
:value="reportAndInsuredRelation | idToText('relationToAppnts')"
|
||||
v-validate="'required'"
|
||||
readonly
|
||||
required
|
||||
label="与被保人关系"
|
||||
name="与被保人关系"
|
||||
right-icon="arrow"
|
||||
placeholder="请选择"
|
||||
@click="toSelect('2')"
|
||||
/>
|
||||
<van-field
|
||||
v-model="reportName"
|
||||
clearable
|
||||
required
|
||||
label="姓名"
|
||||
name="姓名"
|
||||
placeholder="请输入"
|
||||
v-validate="'required|name'"
|
||||
/>
|
||||
|
||||
<van-cell-group>
|
||||
<van-field
|
||||
v-model="reportMobile"
|
||||
clearable
|
||||
required
|
||||
label="联系电话"
|
||||
name="联系电话"
|
||||
placeholder="请输入"
|
||||
v-validate="'required|mobile'"
|
||||
/>
|
||||
<van-field v-model="code" required center label="验证码" clearable placeholder="请输入短信验证码">
|
||||
<van-button
|
||||
type="danger"
|
||||
slot="button"
|
||||
size="small"
|
||||
@click="getCode"
|
||||
:disabled="codeDisabled"
|
||||
v-no-more-click="1000"
|
||||
>
|
||||
{{
|
||||
codeDisabled ? `${countDown}s后重新获取` : '获取验证码'
|
||||
}}
|
||||
</van-button>
|
||||
</van-field>
|
||||
</van-cell-group>
|
||||
</van-cell-group>
|
||||
<!-- 报案信息 -->
|
||||
<van-cell-group>
|
||||
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">报案信息</p>
|
||||
<select-radio
|
||||
:radios="happenCause"
|
||||
label="出险原因"
|
||||
name="出险原因"
|
||||
v-validate="'required'"
|
||||
required
|
||||
:value.sync="accidentCause"
|
||||
></select-radio>
|
||||
<van-row type="flex" class="van-cell van-field pv7 ph8">
|
||||
<van-col class="red posit">*</van-col>
|
||||
<van-col span="14 ml">申请类型</van-col>
|
||||
<van-row>
|
||||
<van-col
|
||||
class="van-radio__label pb10"
|
||||
v-for="(item, index) in typeRadio"
|
||||
:key="index"
|
||||
span="11"
|
||||
>
|
||||
<van-button
|
||||
round
|
||||
plain
|
||||
size="small"
|
||||
type="info"
|
||||
class="ph15 van-button--danger"
|
||||
@click="toActive(item.value, $event)"
|
||||
>{{ item.label }}</van-button>
|
||||
</van-col>
|
||||
</van-row>
|
||||
</van-row>
|
||||
|
||||
<FieldDatePicter
|
||||
required
|
||||
v-validate="'required'"
|
||||
label="出险时间"
|
||||
name="出险时间"
|
||||
:value.sync="accidentDateTime"
|
||||
type="date"
|
||||
:flag="true"
|
||||
ref="accidentDate"
|
||||
:max-date="currentDate"
|
||||
></FieldDatePicter>
|
||||
<van-field
|
||||
v-model="areaName"
|
||||
label="出险地点"
|
||||
name="出险地点"
|
||||
right-icon="arrow"
|
||||
required
|
||||
readonly
|
||||
v-validate="'required'"
|
||||
placeholder="请选择地址"
|
||||
@click="areaShow = true"
|
||||
/>
|
||||
<van-field v-model="accAdress" required center label="详细地址" clearable placeholder="请输入详细地址" />
|
||||
|
||||
<van-field
|
||||
v-model="caseDesc"
|
||||
rows="1"
|
||||
autosize
|
||||
label="事故描述"
|
||||
name="事故描述"
|
||||
type="textarea"
|
||||
required
|
||||
v-validate="'required'"
|
||||
placeholder="请输入事故描述"
|
||||
clearable
|
||||
maxlength="200"
|
||||
/>
|
||||
</van-cell-group>
|
||||
<van-popup v-model="popupShow" position="bottom">
|
||||
<van-picker show-toolbar :columns="columns" @confirm="onConfirm" @cancel="popupShow = false" />
|
||||
</van-popup>
|
||||
<!-- 地区选择 -->
|
||||
<van-popup v-model="areaShow" position="bottom">
|
||||
<van-area
|
||||
:area-list="areaList"
|
||||
value="110101"
|
||||
@confirm="sureArea($event, '1')"
|
||||
@cancel="areaShow = false"
|
||||
/>
|
||||
</van-popup>
|
||||
<div class="bottom-btn bg-white">
|
||||
<van-button type="danger" size="large" @click="nextStep" v-no-more-click="1000">提交</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Field, CellGroup, Checkbox, Popup, Picker, RadioGroup, Radio, Tag, Collapse, CollapseItem, Row, Col, Area } from 'vant'
|
||||
import SelectRadio from '@/components/ebiz/SelectRadio'
|
||||
import FieldDatePicter from '@/components/ebiz/FieldDatePicter'
|
||||
import OccupationPicker from '@/components/ebiz/occipation/OccupationPicker'
|
||||
import CustomerPicker from '@/components/ebiz/claims/CustomerPicker'
|
||||
import IdentityCardScan from '@/components/ebiz/sale/IdentityCardScan'
|
||||
import DataDictionary from '@/assets/js/utils/data-dictionary.js'
|
||||
import beforeDate from '@/assets/js/utils/getBeforeDate.js'
|
||||
import utilsAge from '@/assets/js/utils/age'
|
||||
import areaList from '@/assets/js/utils/area'
|
||||
import getAreaName from '@/assets/js/utils/get-area-name'
|
||||
import idNoCheck from '@/assets/js/utils/idNoCheck'
|
||||
import { apply, history, customerInfo, query, report } from '@/api/ebiz/claims/claims'
|
||||
import { idToData } from '@/views/ebiz/customer/js/verification'
|
||||
import BankCardScan from '@/components/ebiz/sale/BankCardScan'
|
||||
import { getAuthCode } from '@/api/ebiz/sale/sale'
|
||||
import { getIdentityInfo, onDateConfirm, effectiveDataTypeChange } from '../sale/js/methods'
|
||||
|
||||
export default {
|
||||
name: 'reportApply',
|
||||
components: {
|
||||
[SelectRadio.name]: SelectRadio,
|
||||
[FieldDatePicter.name]: FieldDatePicter,
|
||||
[OccupationPicker.name]: OccupationPicker,
|
||||
[CustomerPicker.name]: CustomerPicker,
|
||||
[Field.name]: Field,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Checkbox.name]: Checkbox,
|
||||
[Popup.name]: Popup,
|
||||
[Picker.name]: Picker,
|
||||
[Area.name]: Area,
|
||||
[RadioGroup.name]: RadioGroup,
|
||||
[Radio.name]: Radio,
|
||||
BankCardScan,
|
||||
[Tag.name]: Tag,
|
||||
[IdentityCardScan.name]: IdentityCardScan,
|
||||
[Collapse.name]: Collapse,
|
||||
[CollapseItem.name]: CollapseItem,
|
||||
[Row.name]: Row,
|
||||
[Col.name]: Col
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
customerShowPicker: false, //(客户搜索组件显示隐藏)
|
||||
areaShow: false, //(地区选择显示隐藏)
|
||||
currentPopupIndex: '',
|
||||
currentDate: new Date(), //当前时间
|
||||
codeDisabled: false, // 获取验证码按钮是否禁用
|
||||
timeId: null, // 计时器ID
|
||||
countDown: 60, // 倒计时
|
||||
applyTypeArr: [], //申请类型数组
|
||||
areaList: areaList, //省市区数据
|
||||
areaName: '', //省市区显示绑定
|
||||
rptNo: '', //报案号(报案成功返回)
|
||||
customerNo: '', //客户编号(搜索客户点击所得)
|
||||
DataIndex: '', //所选客户的index
|
||||
|
||||
accAdress: '', //出险地点
|
||||
accCity: '', //出险-市
|
||||
accCounty: '', //出险-县
|
||||
accProvince: '', //出险-省
|
||||
accidentCause: '1', //出险原因
|
||||
accidentDateTime: '', //出险时间
|
||||
applyType: '', //申请类型
|
||||
caseDesc: '', //事故描述
|
||||
certiCode: '', //证件号码
|
||||
certiType: '', //证件类型
|
||||
code: '', //验证码
|
||||
smsId: '123456', //获取验证码时返回的
|
||||
insuredBirthday: '', //被保人出生日期
|
||||
insuredName: '', //被保人姓名
|
||||
// insuredNo: '', //被保人编号(当选择被保人本人时传输此数据)
|
||||
insuredSex: '0', //被保人性别
|
||||
reportAndInsuredRelation: '11', //与被保人关系
|
||||
reportMobile: '', //报案人联系电话
|
||||
reportName: '', //报案人姓名
|
||||
sexRadio: [
|
||||
{
|
||||
label: '男',
|
||||
value: '0'
|
||||
},
|
||||
{
|
||||
label: '女',
|
||||
value: '1'
|
||||
}
|
||||
],
|
||||
happenCause: [
|
||||
{
|
||||
label: '意外',
|
||||
value: '1'
|
||||
},
|
||||
{
|
||||
label: '疾病',
|
||||
value: '2'
|
||||
}
|
||||
],
|
||||
typeRadio: [
|
||||
{
|
||||
label: '医疗费用补偿',
|
||||
value: '01'
|
||||
},
|
||||
{
|
||||
label: '住院日额津贴',
|
||||
value: '02'
|
||||
},
|
||||
{
|
||||
label: '重大疾病',
|
||||
value: '03'
|
||||
},
|
||||
{
|
||||
label: '身故',
|
||||
value: '04'
|
||||
},
|
||||
{
|
||||
label: '残疾',
|
||||
value: '05'
|
||||
},
|
||||
{
|
||||
label: '全残',
|
||||
value: '06'
|
||||
},
|
||||
{
|
||||
label: '中症',
|
||||
value: '07'
|
||||
},
|
||||
{
|
||||
label: '轻症',
|
||||
value: '08'
|
||||
},
|
||||
{
|
||||
label: '特定疾病',
|
||||
value: '09'
|
||||
}
|
||||
],
|
||||
|
||||
popupShow: false,
|
||||
valueKey: '',
|
||||
pickerType: '',
|
||||
columns: []
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
document.body.style.backgroundColor = '#fff'
|
||||
// 筛选按钮的点击事件
|
||||
// window.appCallBack = this.appCallBack
|
||||
},
|
||||
beforeRouteLeave(to, from, next) {
|
||||
document.body.style.backgroundColor = ''
|
||||
next()
|
||||
},
|
||||
methods: {
|
||||
selectClick(index) {
|
||||
this.currentPopupIndex = index
|
||||
let title = ''
|
||||
if (index == 1) {
|
||||
;[this.customerShowPicker, title] = [true, '搜索客户']
|
||||
}
|
||||
setTimeout(() => {
|
||||
this.$jump({
|
||||
flag: 'navigation',
|
||||
extra: {
|
||||
title,
|
||||
hiddenLeft: '1'
|
||||
}
|
||||
})
|
||||
this.closeBtn()
|
||||
}, 400)
|
||||
},
|
||||
closeBtn() {
|
||||
// 筛选按钮的显示
|
||||
this.$jump({
|
||||
flag: 'webview_right_button',
|
||||
extra: {
|
||||
btns: [
|
||||
{
|
||||
img: this.$assetsUrl + 'images/del-close.png',
|
||||
route: { flag: '', extra: {} }
|
||||
}
|
||||
]
|
||||
}
|
||||
})
|
||||
},
|
||||
//弹框选择
|
||||
toSelect(pickerType, valueKey) {
|
||||
//pickerType 1.申请人身份 2、证件类型 3、税收居民身份 4、国家/地区 5、开户银行 6、疾病代码 7、事故代码 8.手术代码9.治疗医院
|
||||
;[this.popupShow, this.pickerType] = [true, pickerType]
|
||||
if (valueKey) this.valueKey = valueKey
|
||||
if (pickerType == '1') {
|
||||
this.columns = DataDictionary.lpIdType
|
||||
} else if (pickerType == '2') {
|
||||
this.columns = DataDictionary.relationToAppnts
|
||||
}
|
||||
},
|
||||
//确认选择字段
|
||||
onConfirm(value) {
|
||||
this.popupShow = false
|
||||
if (this.pickerType == '1') {
|
||||
this.certiType = value.id
|
||||
} else if (this.pickerType == '2') {
|
||||
this.reportAndInsuredRelation = value.id
|
||||
}
|
||||
},
|
||||
//监听名字变化
|
||||
nameChange(name) {
|
||||
this.insuredName = name
|
||||
},
|
||||
//失焦验证身份证
|
||||
getRelatedData(val) {
|
||||
if (this.certiType != '0') {
|
||||
return
|
||||
}
|
||||
//如果证件校验不通过,恢复默认值
|
||||
if (idToData(val).text) {
|
||||
;[this.certiCode, this.insuredSex] = ['', '0']
|
||||
return this.$toast(idToData(val).text)
|
||||
}
|
||||
this.insuredSex = idToData(val).sex
|
||||
},
|
||||
//点击申请类型(多选)
|
||||
toActive(value, e) {
|
||||
if (e.target.classList.contains('active')) {
|
||||
e.target.classList.remove('active')
|
||||
this.applyTypeArr.pop(value)
|
||||
} else {
|
||||
e.target.classList.add('active')
|
||||
this.applyTypeArr.push(value)
|
||||
}
|
||||
this.applyType = this.applyTypeArr.join(',')
|
||||
},
|
||||
//获取验证码
|
||||
getCode() {
|
||||
if (this.reportMobile == '') {
|
||||
return this.$toast('请填写联系电话')
|
||||
}
|
||||
this.codeDisabled = true
|
||||
|
||||
let data = {
|
||||
operateType: 'appntInfoEntry',
|
||||
type: 'H5',
|
||||
operateCode: this.reportMobile,
|
||||
system: 'agentApp',
|
||||
operateCodeType: '0'
|
||||
}
|
||||
//获取验证码
|
||||
getAuthCode(data).then(res => {
|
||||
console.log(res)
|
||||
//倒计时
|
||||
this.timeId = setInterval(() => {
|
||||
this.countDown--
|
||||
if (this.countDown <= 0) {
|
||||
window.clearInterval(this.timeId)
|
||||
this.codeDisabled = false
|
||||
this.countDown = 60
|
||||
}
|
||||
}, 1000)
|
||||
if (res.result == 0) {
|
||||
this.smsId = res.sessionId
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
},
|
||||
//区域选择
|
||||
sureArea(area, type) {
|
||||
this.areaName = getAreaName(area)
|
||||
;[this.accProvince, this.accCity, this.accCounty] = [area[0].code, area[1].code, area[2].code]
|
||||
this.areaShow = false
|
||||
},
|
||||
//选择客户
|
||||
chooseCustomer(Detail) {
|
||||
console.log(Detail)
|
||||
this.customerNo = Detail[0][0].customerNo
|
||||
this.DataIndex = Detail[0][1]
|
||||
this.customerShowPicker = false
|
||||
let data = {
|
||||
customerNo: this.customerNo,
|
||||
surrenderType: '0'
|
||||
}
|
||||
customerInfo(data).then(res => {
|
||||
console.log(res)
|
||||
if (res.result == 0) {
|
||||
let CustomerDetails = res.content
|
||||
//let Customerdetail = this.CustomerDetails[this.DataIndex]
|
||||
this.insuredName = CustomerDetails.customerName
|
||||
this.insuredSex = CustomerDetails.customerSex
|
||||
this.certiType = CustomerDetails.idType
|
||||
this.certiCode = CustomerDetails.idNo
|
||||
this.insuredBirthday = CustomerDetails.customerBirthday
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
// 字段取值
|
||||
},
|
||||
//点击提交
|
||||
nextStep() {
|
||||
this.$validator.validate().then(valid => {
|
||||
if (true === valid) {
|
||||
if (this.certiType == '0') {
|
||||
//身份证
|
||||
if (this.certiCode.length == '18') {
|
||||
//18位身份证第17位是性别位, 奇男偶女
|
||||
let sexSign = this.certiCode.substr(16, 1)
|
||||
if ((parseInt(sexSign) % 2 == 0 && this.insuredSex != 1) || (parseInt(sexSign) % 2 != 0 && this.insuredSex != 0)) {
|
||||
return this.$toast('性别录入与身份证不符')
|
||||
}
|
||||
//18位身份证第7-14位是生日位, 年月日
|
||||
let birthSign = this.certiCode.substr(6, 8)
|
||||
if (
|
||||
this.insuredBirthday.substr(0, 4) != birthSign.substr(0, 4) ||
|
||||
this.insuredBirthday.substr(5, 2) != birthSign.substr(4, 2) ||
|
||||
this.insuredBirthday.substr(8, 2) != birthSign.substr(6, 2)
|
||||
) {
|
||||
return this.$toast('生日录入与身份证不符')
|
||||
}
|
||||
}
|
||||
// 证件号码规则校验
|
||||
if (!idNoCheck.isIdno(this.certiCode)) {
|
||||
this.$toast('您填写的证件号码有误')
|
||||
} else {
|
||||
this.save()
|
||||
}
|
||||
} else {
|
||||
this.save()
|
||||
}
|
||||
} else {
|
||||
this.$toast(this.$validator.errors.all()[0])
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
save() {
|
||||
this.$toast.loading({
|
||||
duration: 0, // 持续展示 toast
|
||||
forbidClick: true, // 禁用背景点击
|
||||
loadingType: 'spinner',
|
||||
message: '加载中……'
|
||||
})
|
||||
let data = {
|
||||
userModel: {
|
||||
id: '123456',
|
||||
name: '王某'
|
||||
},
|
||||
accAdress: this.accAdress,
|
||||
accCity: this.accCity,
|
||||
accCounty: this.accCounty,
|
||||
accProvince: this.accProvince,
|
||||
accidentCause: this.accidentCause,
|
||||
accidentDateTime: this.accidentDateTime,
|
||||
applyType: this.applyType,
|
||||
caseDesc: this.caseDesc,
|
||||
certiCode: this.certiCode,
|
||||
certiType: this.certiType,
|
||||
code: this.code,
|
||||
smsId: this.smsId,
|
||||
insuredBirthday: this.insuredBirthday,
|
||||
insuredName: this.insuredName,
|
||||
insuredNo: this.insuredNo,
|
||||
insuredSex: this.insuredSex,
|
||||
reportAndInsuredRelation: this.reportAndInsuredRelation,
|
||||
reportMobile: this.reportMobile,
|
||||
reportName: this.reportName
|
||||
}
|
||||
report(data).then(res => {
|
||||
console.log(res)
|
||||
if (res.result == 0) {
|
||||
this.$toast.clear()
|
||||
this.rptNo = res.content.rptNo //报案号
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/reportSuccess',
|
||||
forbidSwipeBack: '1'
|
||||
// backToFirst: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/claims/reportSuccess'
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.apply-info-container {
|
||||
/deep/.van-checkbox {
|
||||
margin-left: auto;
|
||||
}
|
||||
/deep/.van-radio {
|
||||
margin-left: auto;
|
||||
}
|
||||
/deep/ .bankCard {
|
||||
width: 120px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.Other-fees-list {
|
||||
display: flex;
|
||||
flex-flow: row wrap;
|
||||
justify-content: space-around;
|
||||
}
|
||||
.collapse {
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
.border {
|
||||
border: 1px dashed #cccccc;
|
||||
}
|
||||
|
||||
.active {
|
||||
background: #e9332e !important;
|
||||
border: 1px solid #e9332e !important;
|
||||
color: #ffffff !important;
|
||||
}
|
||||
|
||||
.ml {
|
||||
margin-left: 3px;
|
||||
}
|
||||
</style>
|
||||
47
src/views/ebiz/claims/ReportFail.vue
Normal file
47
src/views/ebiz/claims/ReportFail.vue
Normal file
@@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="pt80 flex align-items-c flex-direction-colunm">
|
||||
<img src="@/assets/images/u25897.png" class="img" />
|
||||
<h2 class="mt15 gray">报案失败</h2>
|
||||
<p class="fs15 mt10">失败原因</p>
|
||||
<p class="fs15 mt10">重新报案或致电统一客服电话</p>
|
||||
<p class="green mt10">4008-008-008</p>
|
||||
</div>
|
||||
<div class="bottom-btn bg-white">
|
||||
<van-button type="danger" size="large" @click="back" v-no-more-click="1000">返回</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
methods: {
|
||||
back() {
|
||||
// this.$jump({
|
||||
// flag: 'h5',
|
||||
// extra: {
|
||||
// url: location.origin + '/#/claims/ProblemList'
|
||||
// // backToFirst: '1'
|
||||
// },
|
||||
// routerInfo: {
|
||||
// path: '/claims/ProblemList'
|
||||
// }
|
||||
// })
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.body.style.backgroundColor = '#fff'
|
||||
},
|
||||
beforeRouteLeave(to, from, next) {
|
||||
document.body.style.backgroundColor = ''
|
||||
next()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.img {
|
||||
width: 50px;
|
||||
}
|
||||
</style>
|
||||
149
src/views/ebiz/claims/ReportInfo.vue
Normal file
149
src/views/ebiz/claims/ReportInfo.vue
Normal file
@@ -0,0 +1,149 @@
|
||||
<template>
|
||||
<div class="list-container">
|
||||
<div class="list-content" v-if="list.length > 0 && !isShow">
|
||||
<div class="fs12" v-for="(item, index) in list" :key="index">
|
||||
<div class="flex align-items-c justify-content-c h40">
|
||||
<div>报案号:</div>
|
||||
<div>{{ item.rptNo }}</div>
|
||||
</div>
|
||||
|
||||
<div class="bg-white pv15 pr15 pl10 ml15 mr15">
|
||||
<div class="mv15">
|
||||
<div class="w45 inline-b">
|
||||
<van-tag plain color="#DD9C56">被保</van-tag>
|
||||
</div>
|
||||
<span class="fs15 c-gray-dark">{{ item.insuredName }}</span>
|
||||
</div>
|
||||
|
||||
<div class="pt15" style="border-top:1px solid #dadada">
|
||||
<div>
|
||||
<div class="w80 inline-b">
|
||||
<van-tag plain color="#999999">出险时间</van-tag>
|
||||
</div>
|
||||
<span class="fs14 c-gray-dark">{{ item.accidentDateTime }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pt15">
|
||||
<div>
|
||||
<div class="w80 inline-b">
|
||||
<van-tag plain color="#999999">案件状态</van-tag>
|
||||
</div>
|
||||
<span class="fs14 c-gray-dark" v-if="item.caseStatus">报案成功</span>
|
||||
<span class="fs14 c-gray-dark" v-else>报案失败</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt10 flex justify-content-fe">
|
||||
<van-button round @click="goToDetail(item)" size="small" class="mr5" type="danger" plain v-no-more-click="1000">点击选择</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="list flex flex-direction-colunm justify-content-c align-items-c">
|
||||
<img class="w250" src="@/assets/images/pic_page-non.png" />
|
||||
<div class="fs17 c-gray-dark mt40">暂无报案信息!</div>
|
||||
<van-button round @click="goToDetail" size="large" type="danger" class="mt20" style="width:50%;" plain v-no-more-click="1000">理赔申请</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Search, List, Tag, Row, Col } from 'vant'
|
||||
import { history } from '@/api/ebiz/claims/claims'
|
||||
// import { getPolicyList } from '@/api/ebiz/serve/serve'
|
||||
export default {
|
||||
components: {
|
||||
[Search.name]: Search,
|
||||
[List.name]: List,
|
||||
[Tag.name]: Tag,
|
||||
[Row.name]: Row,
|
||||
[Col.name]: Col
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 列表信息
|
||||
list: [
|
||||
// {
|
||||
// riskName: '鼎诚鼎康保定期重大疾病保险(A款)',
|
||||
// policyNo: '804122000018622',
|
||||
// insuredName: '张三1',
|
||||
// amount: '50000',
|
||||
// effectDate: '2019-11-01',
|
||||
// orderStatus: '000',
|
||||
// policyType: '0'
|
||||
// }
|
||||
],
|
||||
//客户编号
|
||||
insuredNo: '',
|
||||
// 无数据时候显示
|
||||
isShow: false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getHistory()
|
||||
},
|
||||
mounted() {
|
||||
if (this.isShow == true) {
|
||||
document.body.style.backgroundColor = '#fff'
|
||||
}
|
||||
},
|
||||
beforeRouteLeave(to, from, next) {
|
||||
document.body.style.backgroundColor = ''
|
||||
next()
|
||||
},
|
||||
computed: {},
|
||||
methods: {
|
||||
getHistory() {
|
||||
this.insuredNo = window.localStorage.getItem('customerNo')
|
||||
let data = {
|
||||
insuredNo: this.insuredNo
|
||||
}
|
||||
history(data).then(res => {
|
||||
console.log(res)
|
||||
if (res.result == 0) {
|
||||
this.list = res.content.claimReportInfos
|
||||
} else {
|
||||
// this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 点击选择去被保人信息
|
||||
goToDetail(data) {
|
||||
let Data = JSON.stringify(data)
|
||||
localStorage.setItem('customerData', Data)
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/insuredInfo?from=ReportInfo',
|
||||
forbidSwipeBack: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/claims/insuredInfo?from=ReportInfo'
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '@/assets/sass/variables.scss';
|
||||
.list-container {
|
||||
height: 100%;
|
||||
.list {
|
||||
height: 100%;
|
||||
}
|
||||
.list-content {
|
||||
height: 100%;
|
||||
.list-header {
|
||||
background: $white;
|
||||
}
|
||||
}
|
||||
img {
|
||||
width: 253px;
|
||||
height: 201px;
|
||||
}
|
||||
.policy-status {
|
||||
line-height: 30px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
70
src/views/ebiz/claims/ReportSuccess.vue
Normal file
70
src/views/ebiz/claims/ReportSuccess.vue
Normal file
@@ -0,0 +1,70 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="pt80 flex align-items-c flex-direction-colunm">
|
||||
<img src="@/assets/images/u20257.png" class="img" alt />
|
||||
<h2 class="green mt15">报案成功</h2>
|
||||
<p class="mt20 fs15">报案号:6538742194921874</p>
|
||||
<p class="fs15 mt10">您的报案已受理,我们会尽快核实,请您耐心等待!</p>
|
||||
<p class="mt10">您可致电统一客服电话</p>
|
||||
<p class="green mt10">4008-008-008</p>
|
||||
</div>
|
||||
<div class="flex justify-content-s bottom-btn bg-white">
|
||||
<van-button class="bottom0 left0" square plain type="danger" @click="goBack" v-no-more-click="1000" size="large">返回</van-button>
|
||||
<van-button
|
||||
class="bottom0 left0"
|
||||
square
|
||||
type="danger"
|
||||
size="large"
|
||||
v-no-more-click="1000"
|
||||
@click="nextStep"
|
||||
>去申请</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
mounted() {
|
||||
document.body.style.backgroundColor = '#fff'
|
||||
},
|
||||
beforeRouteLeave(to, from, next) {
|
||||
document.body.style.backgroundColor = ''
|
||||
next()
|
||||
},
|
||||
methods: {
|
||||
//返回服务页面
|
||||
back() {
|
||||
// this.$jump({
|
||||
// flag: 'h5',
|
||||
// extra: {
|
||||
// url: location.origin + '/#/claims/ProblemList'
|
||||
// // backToFirst: '1'
|
||||
// },
|
||||
// routerInfo: {
|
||||
// path: '/claims/ProblemList'
|
||||
// }
|
||||
// })
|
||||
},
|
||||
//前往报案申请页面
|
||||
nextStep() {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/insuredInfo'
|
||||
// backToFirst: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/claims/insuredInfo'
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.img {
|
||||
width: 50px;
|
||||
}
|
||||
</style>
|
||||
143
src/views/ebiz/claims/SearchCustomer.vue
Normal file
143
src/views/ebiz/claims/SearchCustomer.vue
Normal file
@@ -0,0 +1,143 @@
|
||||
<template>
|
||||
<div class="search-container bg-white">
|
||||
<div class="search-content flex relative">
|
||||
<van-dropdown-menu class="pr5 ml10 mt5" active-color="#47DBBD" v-if="isSearch">
|
||||
<van-dropdown-item v-model="selected" :options="options" />
|
||||
</van-dropdown-menu>
|
||||
|
||||
<van-search class="search-box flex1" v-model="searchVal" show-action @search="onSearch" @cancel="onCancel">
|
||||
<div slot="action" v-if="isSearch" @search="onSearch" @click="onSearch" v-no-more-click="1000">搜索</div>
|
||||
<div slot="action" v-else @click="onCancel">取消</div>
|
||||
</van-search>
|
||||
</div>
|
||||
|
||||
<ul class="search-list-container" v-if="list.length">
|
||||
<li class="search-list-item flex pt10 pb10 pl15 pr15 relative" @click="handleClick(item.customerNo)" v-for="(item, index) in list" :key="index">
|
||||
<img src="@/assets/images/bnf_avatar.png" width="60" height="60" class="radius50 v-middle item-avatar mr20 ml10" />
|
||||
<div class="item-info fl fs12">
|
||||
<p class="username mb5">{{ item.name }}</p>
|
||||
<p class="mobile gray mb5">手机号: {{ item.mobile }}</p>
|
||||
<p class="idno gray">证件号码: {{ item.idno }}</p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div v-if="isShow" class="list flex flex-direction-colunm justify-content-c align-items-c">
|
||||
<img class="w250" src="@/assets/images/pic_page-non.png" />
|
||||
<div class="fs17 c-gray-dark mt60">暂无客户信息!</div>
|
||||
<!-- <van-button round @click="goToDetail" size="large" type="danger" class="mt20" style="width:50%;" plain v-no-more-click="1000">理赔申请</van-button> -->
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Search, DropdownMenu, DropdownItem } from 'vant'
|
||||
import { customerList } from '@/api/ebiz/claims/claims'
|
||||
export default {
|
||||
name: 'search',
|
||||
data() {
|
||||
return {
|
||||
searchVal: '', // 搜索关键词
|
||||
list: [],
|
||||
selected: 0,
|
||||
isSearch: true, // 是否显示搜索按钮
|
||||
isShow: false, //无客户数据时显示
|
||||
options: [
|
||||
{ text: '客户姓名', value: 0 },
|
||||
{ text: '证件号码', value: 1 },
|
||||
{ text: '手机号', value: 2 }
|
||||
],
|
||||
insuredNo: '' //客户编号
|
||||
}
|
||||
},
|
||||
components: {
|
||||
[Search.name]: Search,
|
||||
[DropdownMenu.name]: DropdownMenu,
|
||||
[DropdownItem.name]: DropdownItem
|
||||
},
|
||||
mounted() {
|
||||
document.body.style.backgroundColor = '#fff'
|
||||
},
|
||||
beforeRouteLeave(to, from, next) {
|
||||
document.body.style.backgroundColor = ''
|
||||
next()
|
||||
},
|
||||
methods: {
|
||||
// 搜索
|
||||
onSearch() {
|
||||
let data = {
|
||||
queryParam: this.searchVal,
|
||||
agentCode: '111111',
|
||||
queryType: this.selected //0客户姓名,1证件号码,2手机号
|
||||
}
|
||||
customerList(data).then(res => {
|
||||
if (res.result == 0) {
|
||||
console.log(res)
|
||||
this.list = res.content
|
||||
if (this.list.length) {
|
||||
this.isShow = false
|
||||
} else {
|
||||
this.isShow = true
|
||||
}
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
this.isSearch = false
|
||||
},
|
||||
// 取消
|
||||
onCancel() {
|
||||
this.list = []
|
||||
this.selected = 0
|
||||
this.searchVal = ''
|
||||
this.isSearch = true
|
||||
},
|
||||
// 点击客户
|
||||
handleClick(value) {
|
||||
localStorage.setItem('customerNo', value)
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/reportInfo',
|
||||
forbidSwipeBack: '1',
|
||||
backToFirst: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/claims/reportInfo'
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.search-container {
|
||||
.search-content:not(:last-child)::after {
|
||||
position: absolute;
|
||||
box-sizing: border-box;
|
||||
content: ' ';
|
||||
pointer-events: none;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 4.26667vw;
|
||||
border-bottom: 1px solid #dadada;
|
||||
-webkit-transform: scaleY(0.5);
|
||||
transform: scaleY(0.5);
|
||||
}
|
||||
.search-list-item:not(:last-child)::after {
|
||||
position: absolute;
|
||||
box-sizing: border-box;
|
||||
content: ' ';
|
||||
pointer-events: none;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 4.26667vw;
|
||||
border-bottom: 1px solid #dadada;
|
||||
-webkit-transform: scaleY(0.5);
|
||||
transform: scaleY(0.5);
|
||||
}
|
||||
// /deep/[class*='van-hairline']::after {
|
||||
// border: none;
|
||||
// }
|
||||
}
|
||||
</style>
|
||||
66
src/views/ebiz/claims/SearchHospital.vue
Normal file
66
src/views/ebiz/claims/SearchHospital.vue
Normal file
@@ -0,0 +1,66 @@
|
||||
<template>
|
||||
<div class="search-container bg-white">
|
||||
<van-search class="search-box relative" v-model="searchVal" placeholder="请输入关键字" show-action @search="onSearch" @cancel="onCancel">
|
||||
<div slot="action" @click="onSearch" v-no-more-click="1000">搜索</div>
|
||||
</van-search>
|
||||
<ul class="search-list-container">
|
||||
<li class="search-list-item pt10 pb10 pl15 relative fs15">天津人民医院</li>
|
||||
<li class="search-list-item pt10 pb10 pl15 relative fs15">天津市第二医院</li>
|
||||
</ul>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Search } from 'vant'
|
||||
export default {
|
||||
name: 'search',
|
||||
data() {
|
||||
return {
|
||||
searchVal: '', // 搜索关键词
|
||||
list: [] // 医院列表
|
||||
}
|
||||
},
|
||||
components: {
|
||||
[Search.name]: Search
|
||||
},
|
||||
methods: {
|
||||
// 搜索
|
||||
onSearch() {
|
||||
console.log(111)
|
||||
},
|
||||
// 取消
|
||||
onCancel() {
|
||||
console.log(222)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.search-container {
|
||||
.van-search:not(:last-child)::after {
|
||||
position: absolute;
|
||||
box-sizing: border-box;
|
||||
content: ' ';
|
||||
pointer-events: none;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 4.26667vw;
|
||||
border-bottom: 1px solid #dadada;
|
||||
-webkit-transform: scaleY(0.5);
|
||||
transform: scaleY(0.5);
|
||||
}
|
||||
.search-list-item:not(:last-child)::after {
|
||||
position: absolute;
|
||||
box-sizing: border-box;
|
||||
content: ' ';
|
||||
pointer-events: none;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 4.26667vw;
|
||||
border-bottom: 1px solid #dadada;
|
||||
-webkit-transform: scaleY(0.5);
|
||||
transform: scaleY(0.5);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
351
src/views/ebiz/claims/SignatureConfirmation.vue
Normal file
351
src/views/ebiz/claims/SignatureConfirmation.vue
Normal file
@@ -0,0 +1,351 @@
|
||||
<template>
|
||||
<div class="mb50">
|
||||
<van-cell-group class="mt10">
|
||||
<van-cell title="被保人姓名" :value="list.insuredName"></van-cell>
|
||||
<van-cell title="出险时间" :value="list.accidentTime"></van-cell>
|
||||
<van-cell title="申请类型" :value="list.applyTypeName"></van-cell>
|
||||
</van-cell-group>
|
||||
<div>
|
||||
<van-collapse v-model="activeNames" class="mt10" v-if="!isWeixin">
|
||||
<van-collapse-item name="1">
|
||||
<div slot="title">
|
||||
受托人
|
||||
<span class="ml20">{{ list.mandatorName }}</span>
|
||||
</div>
|
||||
<p class="mb20">以下内容需要您按照顺序阅读并签字确认:</p>
|
||||
<p>需签署:</p>
|
||||
<p class="mb20">
|
||||
<span class="text" :class="{ red: list.mandatorSignState == 1 }">{{ list.name }}</span>
|
||||
<img :src="src" v-if="list.mandatorSignState == '1'" />
|
||||
</p>
|
||||
<p class="start">点击【开始】按钮,进行相关操作</p>
|
||||
<div class="flex justify-content-a mt20">
|
||||
<van-button
|
||||
type="danger"
|
||||
size="normal"
|
||||
style="width: 157px;"
|
||||
plain
|
||||
v-no-more-click="1000"
|
||||
@click="start_ocr(4)"
|
||||
:disabled="list.mandatorSignState == 1"
|
||||
>开始</van-button
|
||||
>
|
||||
</div>
|
||||
</van-collapse-item>
|
||||
</van-collapse>
|
||||
<van-collapse v-model="activeNames" class="mt10 pb50">
|
||||
<van-collapse-item name="2">
|
||||
<div slot="title">
|
||||
申请人
|
||||
<span class="ml20">{{ list.applyerName }}</span>
|
||||
</div>
|
||||
<p class="mb20">以下内容需要您按照顺序阅读并签字确认:</p>
|
||||
<p>需签署:</p>
|
||||
<p class="mb20">
|
||||
<span class="text" :class="{ red: list.applyerSignState == 1 }">{{ list.name }}</span>
|
||||
<img :src="src" v-if="list.applyerSignState == '1'" />
|
||||
</p>
|
||||
<p class="start">点击【开始】按钮,进行相关操作</p>
|
||||
<div class="flex justify-content-a mt20" v-if="!isInvalid">
|
||||
<van-button
|
||||
type="danger"
|
||||
size="normal"
|
||||
style="width: 157px;"
|
||||
plain
|
||||
v-no-more-click="1000"
|
||||
@click="share(3)"
|
||||
v-if="!isWeixin"
|
||||
:disabled="list.applyerSignState == 1"
|
||||
>分享</van-button
|
||||
>
|
||||
<van-button
|
||||
type="danger"
|
||||
size="normal"
|
||||
style="width: 157px;"
|
||||
plain
|
||||
v-no-more-click="1000"
|
||||
@click="start_ocr(3)"
|
||||
:disabled="list.applyerSignState == 1"
|
||||
>开始</van-button
|
||||
>
|
||||
</div>
|
||||
<div class="text" v-else>操作时间已失效,请联系销售人员!</div>
|
||||
</van-collapse-item>
|
||||
</van-collapse>
|
||||
</div>
|
||||
<div class="bottom-btn bg-white" v-if="!isWeixin && list.mandatorSignState == 1 && list.applyerSignState == 1">
|
||||
<van-button type="danger" size="large" @click="next" v-no-more-click="1000">提交</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { Cell, CellGroup, Collapse, CollapseItem, Dialog } from 'vant'
|
||||
import { getToken, getSignInvalid, checkSignInvalid } from '@/api/ebiz/sale/sale'
|
||||
import { progressDetail } from '@/api/ebiz/claims/claims'
|
||||
import { weixinShare } from '@/assets/js/utils/wxShare.js'
|
||||
export default {
|
||||
data() {
|
||||
let isWeixin = this.$utils.device().isWeixin //判断环境
|
||||
return {
|
||||
// 折叠面板
|
||||
activeNames: ['1', '2'],
|
||||
// 是否在微信
|
||||
isWeixin,
|
||||
signVal: '', //用于区分委托人还是申请人
|
||||
list: {},
|
||||
// 是否显示分享按钮 在微信中不显示
|
||||
// 图片路径
|
||||
src: this.$assetsUrl + 'images/u6490.png',
|
||||
// 微信分享校验值
|
||||
signInvalid: '',
|
||||
// 是谁分享的微信链接 3为申请人
|
||||
shareCode: '',
|
||||
// 是否从空签成功跳转过来 1为是 其他为不是
|
||||
airSign: '',
|
||||
// 微信分享链接是否失效 false 为未失效 true为已失效
|
||||
isInvalid: false,
|
||||
wxShare: {}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Collapse.name]: Collapse,
|
||||
[CollapseItem.name]: CollapseItem,
|
||||
[Dialog.name]: Dialog
|
||||
},
|
||||
created() {
|
||||
this.init()
|
||||
},
|
||||
methods: {
|
||||
// 初始化
|
||||
async init() {
|
||||
if (this.isWeixin) {
|
||||
if (this.$route.query.airSign) {
|
||||
//从签名页调过来的标识
|
||||
sessionStorage.setItem('airSign', this.$route.query.airSign)
|
||||
}
|
||||
localStorage.setItem('token', this.$route.query.token)
|
||||
if (this.$route.query.signInvalid) {
|
||||
sessionStorage.setItem('signInvalid', this.$route.query.signInvalid)
|
||||
}
|
||||
if (this.$route.query.businessNo) {
|
||||
localStorage.setItem('businessNo', this.$route.query.businessNo)
|
||||
}
|
||||
let signInvalid = sessionStorage.getItem('signInvalid')
|
||||
let rs = await this.checkSignInvalid(signInvalid)
|
||||
console.log('```````````````')
|
||||
console.log(rs)
|
||||
if (rs == '1') {
|
||||
this.isInvalid = false
|
||||
} else {
|
||||
this.isInvalid = true
|
||||
}
|
||||
this.airSign = sessionStorage.getItem('airSign')
|
||||
this.shareCode = sessionStorage.getItem('shareCode')
|
||||
await this.progressDetail()
|
||||
} else {
|
||||
this.progressDetail()
|
||||
this.getSignInvalid() // 获取微信中token是否失效标识码
|
||||
}
|
||||
},
|
||||
progressDetail() {
|
||||
// 获取签名详情
|
||||
let data = {
|
||||
caseStatus: 'applying',
|
||||
businessNo: localStorage.businessNo
|
||||
}
|
||||
progressDetail(data).then(res => {
|
||||
console.log(res)
|
||||
if (res.result == 0) {
|
||||
this.list = res.content
|
||||
}
|
||||
})
|
||||
},
|
||||
// 获取微信中token是否失效标识码
|
||||
getSignInvalid() {
|
||||
this.$toast.loading({
|
||||
duration: 0, // 持续展示 toast
|
||||
forbidClick: true, // 禁用背景点击
|
||||
loadingType: 'spinner',
|
||||
message: '加载中……'
|
||||
})
|
||||
let data = {}
|
||||
getSignInvalid(data).then(res => {
|
||||
if (res.result == '0') {
|
||||
this.$toast.clear()
|
||||
this.signInvalid = res.content.sign
|
||||
}
|
||||
})
|
||||
},
|
||||
// 在微信中校验token是否失效
|
||||
async checkSignInvalid(signInvalid) {
|
||||
let that = this
|
||||
this.$toast.loading({
|
||||
duration: 0, // 持续展示 toast
|
||||
forbidClick: true, // 禁用背景点击
|
||||
loadingType: 'spinner',
|
||||
message: '加载中……'
|
||||
})
|
||||
let data = {
|
||||
sign: signInvalid
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
checkSignInvalid(data).then(res => {
|
||||
if (res.result == '0') {
|
||||
that.$toast.clear()
|
||||
let status = res.content.status
|
||||
resolve(status)
|
||||
} else {
|
||||
reject()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// 微信分享
|
||||
share(code) {
|
||||
EWebBridge.webCallAppInJs('bridge', {
|
||||
flag: 'share',
|
||||
extra: {
|
||||
title: `鼎诚人寿理赔申请书签字`,
|
||||
content: '签字进行',
|
||||
url:
|
||||
location.origin +
|
||||
'/#/claims/signatureConfirmation?token=' +
|
||||
localStorage.token +
|
||||
'&shareCode=' +
|
||||
code +
|
||||
'&signInvalid=' +
|
||||
this.signInvalid +
|
||||
'&businessNo=' +
|
||||
localStorage.businessNo,
|
||||
|
||||
img: this.$assetsUrl + 'images/logo.png'
|
||||
}
|
||||
})
|
||||
},
|
||||
// 人脸识别
|
||||
start_ocr(val) {
|
||||
//3申请人需要空签 4受托人
|
||||
console.log(val)
|
||||
let that = this
|
||||
if (this.isWeixin) {
|
||||
localStorage.setItem('sign-val', val)
|
||||
if (val == 3) {
|
||||
if (that.list.applyerCertiType != '0') {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/ClaimsSignature'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/claims/ClaimsSignature'
|
||||
}
|
||||
})
|
||||
} else {
|
||||
let data = {
|
||||
idcardName: that.list.applyerName,
|
||||
idcardNumber: that.list.applyerCertiCode
|
||||
}
|
||||
getToken(data).then(res => {
|
||||
if (res.result == '0') {
|
||||
localStorage.setItem('face-origin', '4')
|
||||
window.location.href = `https://api.megvii.com/faceid/lite/do?token=${res.content.token}`
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//不在微信
|
||||
localStorage.setItem('sign-val', val)
|
||||
if (val == 4) {
|
||||
if (that.list.mandatorCertiType != '0') {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/ClaimsSignature'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/claims/ClaimsSignature'
|
||||
}
|
||||
})
|
||||
} else {
|
||||
EWebBridge.webCallAppInJs('face_auth', {
|
||||
//身份证号码
|
||||
number: that.list.mandatorCertiCode,
|
||||
//姓名
|
||||
name: that.list.mandatorName
|
||||
}).then(data => {
|
||||
if (JSON.parse(data).state == '1') {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/ClaimsSignature'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/claims/ClaimsSignature'
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
} else {
|
||||
if (that.list.applyerCertiType != '0') {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/ClaimsSignature'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/claims/ClaimsSignature'
|
||||
}
|
||||
})
|
||||
} else {
|
||||
EWebBridge.webCallAppInJs('face_auth', {
|
||||
//身份证号码
|
||||
number: that.list.applyerCertiCode,
|
||||
//姓名
|
||||
name: that.list.applyerName
|
||||
}).then(data => {
|
||||
if (JSON.parse(data).state == '1') {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/ClaimsSignature'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/claims/ClaimsSignature'
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
// 提交
|
||||
next() {
|
||||
let that = this
|
||||
that.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/Success',
|
||||
forbidSwipeBack: '1',
|
||||
backToFirst: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/claims/Success'
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.text {
|
||||
color: #4fc6b3;
|
||||
margin-right: 5px;
|
||||
}
|
||||
</style>
|
||||
48
src/views/ebiz/claims/Success.vue
Normal file
48
src/views/ebiz/claims/Success.vue
Normal file
@@ -0,0 +1,48 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="pt80 flex align-items-c flex-direction-colunm">
|
||||
<img src="@/assets/images/u20257.png" class="img" alt />
|
||||
<h2 class="green mt15">提交成功</h2>
|
||||
<!-- <p class="mt20 fs15">赔案号:6538742194921874</p> -->
|
||||
<p class="fs15 mt10">理赔申请提交成功,我们会尽快核实,请您耐心等待!</p>
|
||||
<p class="mt10">您可致电统一客服电话</p>
|
||||
<p class="green mt10">4008-008-008</p>
|
||||
</div>
|
||||
<div class="bottom-btn bg-white">
|
||||
<van-button type="danger" size="large" @click="back" v-no-more-click="1000">返回</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
methods: {
|
||||
back() {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/claims/claimsList'
|
||||
// backToFirst: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/claims/claimsList'
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.body.style.backgroundColor = '#fff'
|
||||
},
|
||||
beforeRouteLeave(to, from, next) {
|
||||
document.body.style.backgroundColor = ''
|
||||
next()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.img {
|
||||
width: 50px;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user