This commit is contained in:
lihaoda
2020-02-19 20:32:25 +08:00
parent 371b1e4534
commit 1bc7cd3277
3 changed files with 588 additions and 45 deletions

View File

@@ -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: [
{
@@ -813,6 +901,16 @@ export default {
shortName: '万能险',
name: '国富人寿富娃娃两全保险(万能型)',
code: 'GFRS_M0015'
},
{
shortName: '意外险',
name: '国富人寿综合意外伤害保险2020版',
code: 'GFRS_M0016'
},
{
shortName: '寿险',
name: '国富人寿鑫管家终身寿险(万能型)',
code: 'GFRS_M0017'
}
],
// 职级
@@ -1629,5 +1727,295 @@ export default {
{ id: '06', text: '医护' },
{ id: '07', text: '保险外勤' },
{ id: '08', text: '其它' }
],
// 申请人身份
applicantStatus: [
{ id: '01', text: '本人' },
{ id: '02', text: '监护人' }
],
// 理赔申请人身份
lpApplicantStatus: [
{ id: '1', text: '本人' },
{ id: '2', text: '配偶' },
{ id: '3', text: '父母' },
{ id: '4', text: '子女' },
{ id: '5', 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: '1',
text: '身份证'
},
{
id: '2',
text: '户口本'
},
{
id: '3',
text: '出生证'
},
{
id: '10',
text: '外国人永久居留身份证'
},
{
id: '4',
text: '外国人护照'
},
{
id: '5',
text: '港澳居民来往内地通行证'
},
{
id: '6',
text: '台湾居民来往大陆通行证'
},
{
id: '9',
text: '港澳台居民居住证'
},
{
id: '8',
text: '台湾身份证'
},
{
id: '7',
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: '否'
}
],
//对象
targetDictionary: [
{ value: '本人', code: '00' },
{ value: '配偶', code: '01' }
],
nbsRelation: [
{ name: '配偶', value: '00' },
{ name: '子女', value: '01' },
{ name: '本人父亲', value: '02' },
{ name: '本人母亲', value: '03' },
{ name: '配偶父亲', value: '04' },
{ name: '配偶母亲', value: '05' }
],
//顺位需求
necessaryDictionary: [
{ code: '01', value: '生活费用' },
{ code: '02', value: '父母孝养金' },
{ code: '03', value: '房贷房租费用' },
{ code: '04', value: '最后费用' },
{ code: '05', value: '教育费用' },
{ code: '06', value: '医疗费用' },
{ code: '07', value: '资产传承' },
{ code: '08', value: '其他费用' }
],
//险种类型字典
insuranceDictionary: [
{ code: '01', value: '寿险' },
{ code: '02', value: '重疾' }
// { code: '03', value: '年金' }
]
}

View File

@@ -68,7 +68,7 @@
<div class="duty">
<div class="flex justify-content-s border-bd pv10 align-items-c" v-for="(dutyItem, dutyItemIndex) in riskFactor.rules" :key="dutyItemIndex">
<span class="fs14 w100">{{ dutyItem.dutyName }}({{ dutyItem.suffix }})</span>
<div class="flex">
<div class="flex relative">
<van-stepper
v-model="dutyItem.defaultDutyAmt"
:min="dutyItem.minDutyAmt"
@@ -77,7 +77,7 @@
:show-minus="false"
class="ml10 mr10"
@focus="focusStep"
@blur="blurStep"
@blur="blurStep(dutyItem)"
@change="
dutyStepperChange(
item.calFactorLst[riskFactorIndex].rules[dutyItemIndex].defaultDutyAmt,
@@ -96,7 +96,7 @@
v-model="dutyItem.necess"
:disabled="dutyItem.defaultValue == '0'"
shape="square"
@change="changeChecked(index, riskFactorIndex, dutyItemIndex)"
@change="changeChecked(index, riskFactorIndex, dutyItemIndex, dutyItem)"
></van-checkbox>
</div>
</div>
@@ -154,7 +154,7 @@
<div class="duty">
<div class="flex justify-content-s border-bd pv10 align-items-c" v-for="(dutyItem, dutyItemIndex) in riskFactor.rules" :key="dutyItemIndex">
<span class="fs14 w100">{{ dutyItem.dutyName }}({{ dutyItem.suffix }})</span>
<div class="flex">
<div class="flex relative">
<van-stepper
v-model="dutyItem.defaultDutyAmt"
:min="dutyItem.minDutyAmt"
@@ -163,7 +163,7 @@
:show-minus="false"
class="ml10 mr10"
@focus="focusStep"
@blur="blurStep"
@blur="blurStep(dutyItem)"
@change="
dutyStepperChange(
item.calFactorLst[riskFactorIndex].rules[dutyItemIndex].defaultDutyAmt,
@@ -182,7 +182,7 @@
v-model="dutyItem.necess"
:disabled="dutyItem.defaultValue == '0'"
shape="square"
@change="changeChecked(index, riskFactorIndex, dutyItemIndex)"
@change="changeChecked(index, riskFactorIndex, dutyItemIndex, dutyItem)"
></van-checkbox>
</div>
</div>
@@ -231,8 +231,44 @@
<script>
import { Tag, Icon, Dialog, ActionSheet, Popup, Picker, Stepper, Field, Checkbox } from 'vant'
import { trial } from '@/api/ebiz/common/common'
import { saveOrUpdateOrderInfo } from '@/api/ebiz/sale/sale'
import { saveProposal } from '@/api/ebiz/proposal/proposal.js'
import { saveOrUpdateOrderInfo, getOrderDetail } from '@/api/ebiz/sale/sale'
import { saveProposal, getDemo } from '@/api/ebiz/proposal/proposal.js'
//险种GFRS_M0016的责任的验证规则
//默认 最低基本保险金额min 10000 整数倍要求mutiple 1000
const dutyRules = {
410800: {
min: 50000,
msg: '意外基本保险金额最低为50000元超过最低基本保险金额为1000元整数倍'
},
410805: {
msg: '轨道列车意外基本保险金额最低为10000元超过最低基本保险金额为1000元整数倍并且小于等于意外基本保险金额的5倍'
},
410801: {
msg: '客运汽车意外基本保险金额最低为10000元超过最低基本保险金额为1000元整数倍并且小于等于意外基本保险金额的5倍'
},
410802: {
msg: '客运轮船意外基本保险金额最低为10000元超过最低基本保险金额为1000元整数倍并且小于等于意外基本保险金额的5倍'
},
410803: {
msg: '客运民航班机意外基本保险金额最低为10000元超过最低基本保险金额为1000元整数倍并且小于等于意外基本保险金额的10倍'
},
410804: {
msg: '自驾车意外基本保险金额最低为10000元超过最低基本保险金额为1000元整数倍并且小于等于意外基本保险金额的5倍'
},
410806: {
min: 2000,
msg: '意外伤害医疗基本保险金额最低为2000元超过最低基本保险金额为1000元整数倍并且小于等于意外基本保险金额的1/5倍'
},
410807: {
min: 10,
mutiple: 10,
msg: '意外住院津贴日额最低基本保险金额为10元/天超过最低基本保险金额为10元/天整数倍最高不得超过200元/天'
}
}
const DUTY_DEFAULT_MUTIPLE = 1000
const DUTY_DEFAULT_MIN = 10000
export default {
name: 'calculatePremium',
components: {
@@ -305,8 +341,7 @@ export default {
this.saleInsuredPersonInfo = JSON.parse(localStorage.saleInsuredPersonInfo)
}
//构建提交数据、渲染险种
this.chooseProducts = JSON.parse(localStorage.chooseProducts)
let chooseProducts = (this.chooseProducts = JSON.parse(localStorage.chooseProducts))
this.chooseProducts.map(item => {
if (item.mainRiskCode == 'GFRS_M0006') {
item.isHidden = true
@@ -317,7 +352,67 @@ export default {
this.mult = Math.ceil(Number(i.displayAmount) / Number(i.defaultValue))
})
}
//保存险种编号
this.mainRiskCode = item.mainRiskCode
})
//GFRS_M0016需要展示免赔额和赔付比例并需要根据是否有社保调整数值
// let mainRiskCode = chooseProducts[0].mainRiskCode
this.chooseProducts.map(item => {
if (item.mainRiskCode === 'GFRS_M0016') {
const orderNo = localStorage.getItem('orderNo')
let detailPromise = this.isFrom === 'proposal' ? new Promise(r => r(localStorage.getItem('proposalMedical'))) : getOrderDetail({ orderNo })
detailPromise.then(res => {
let isMedical = null
if (this.isFrom === 'proposal') {
isMedical = res === '1'
} else {
isMedical = res.orderDTO.insuredDTOs[0].medical === '0'
}
//根据社保写死两个字段 赔付比例和免赔额
item.calFactorLst.map(i => {
//免赔额
if (i.code === 'getLimit') {
const text = isMedical ? '0元意外医疗' : '100元意外医疗'
const value = isMedical ? '0' : '100'
//保存数据
this.medicalInfo = this.medicalInfo || {}
this.medicalInfo.getLimit = text
i.showContent = text
i.getLimit = value
i.columns = [{ text, value }]
}
//赔付比例
if (i.code === 'getRate') {
const text = isMedical ? '80%(意外医疗)' : '70%(意外医疗)'
const value = isMedical ? '0.8' : '0.7'
//保存数据
this.medicalInfo = this.medicalInfo || {}
this.medicalInfo.getRate = text
i.showContent = text
i.getRate = value
i.columns = [{ text, value }]
}
})
this.$forceUpdate()
})
} else {
//其他产品删掉两个字段
let calFactorLst = item.calFactorLst
for (let i = calFactorLst.length - 1; i >= 0; i--) {
let item = calFactorLst[i]
if (item.code === 'getLimit' || item.code === 'getRate') {
calFactorLst.splice(i, 1)
}
}
}
})
// this.influenceAddRiskCodes
if (this.chooseProducts[0].influences && this.chooseProducts[0].influences.length > 0) {
this.influences = this.chooseProducts[0].influences
@@ -332,6 +427,9 @@ export default {
},
// 责任保额份数变化
dutyStepperChange(value, productIndex, calFactorIndex, dutyItemIndex, isChecked, min, max) {
//这个险种使用其他验证方式
if (this.mainRiskCode === 'GFRS_M0016') return
let currentEle = this.chooseProducts[productIndex].calFactorLst[calFactorIndex].rules[dutyItemIndex]
if (value < min || value > max) {
this.$toast(localStorage.hint)
@@ -428,7 +526,7 @@ export default {
this.popupShow = false
},
// 交通责任险复选框变化
changeChecked(productIndex, calFactorIndex, dutyItemIndex) {
changeChecked(productIndex, calFactorIndex, dutyItemIndex, dutyItem) {
let isChecked = this.chooseProducts[productIndex].calFactorLst[calFactorIndex].rules.some(item => {
return item.necess == true
})
@@ -438,15 +536,46 @@ export default {
].rules[dutyItemIndex]['necess']
return false
}
this.valiAndSend(dutyItem)
},
valiAndSend(dutyItem) {
//验证责任
let inputValue = dutyItem.defaultDutyAmt,
duty = dutyItem.duty
if (this.mainRiskCode === 'GFRS_M0016' && !this.valiDuty(inputValue, duty)) {
//验证不通过
return
} else {
this.mainRiskInfluenceAddRisk()
this.getTrial()
}
},
// 计步器聚焦
focusStep() {
this.nextStepFlag = true
},
blurStep() {
blurStep(dutyItem) {
this.nextStepFlag = false
//失去焦点时做验证
this.valiAndSend(dutyItem)
},
//险种GFRS_M0016的责任的验证规则
valiDuty(value, duty) {
if (this.mainRiskCode === 'GFRS_M0016') {
value *= 10000
const rule = dutyRules[duty]
const mutiple = rule.mutiple || DUTY_DEFAULT_MUTIPLE
const min = rule.min || DUTY_DEFAULT_MIN
if (!value || value < min || value % mutiple !== 0) {
this.$toast(rule.msg)
this.nextStepFlag = true
return false
} else {
this.nextStepFlag = false
return true
}
}
},
/********start 通用规则、特殊规则处理 start******/
//通用规则1交费方式为一次交情无交费期限
@@ -954,6 +1083,22 @@ export default {
},
//下一步
async nextStep() {
//GFRS_M0016需要验证责任
if (this.mainRiskCode === 'GFRS_M0016') {
let calFactorLst = this.chooseProducts[0].calFactorLst
for (let i = 0; i < calFactorLst.length; i++) {
if (calFactorLst[i].code === 'dutyGroup') {
let duties = calFactorLst[i].rules
for (let j = 0; j < duties.length; j++) {
let item = duties[j]
if (!this.valiDuty(item.defaultDutyAmt, item.duty)) {
return
}
}
}
}
}
//组装险种提交数据
let [mainRiskCode, riskDTOLst] = ['', []]
let rollInResult = '' //校验预计转入保费结果
@@ -1078,13 +1223,13 @@ export default {
}
},
watch: {
chooseProducts: {
deep: true,
handler: function(newVal) {
// console.log('xin', newVal)
this.chooseProducts = newVal
}
}
// chooseProducts: {
// deep: true,
// handler: function(newVal) {
// // console.log('xin', newVal)
// this.chooseProducts = newVal
// }
// }
}
}
</script>
@@ -1102,5 +1247,12 @@ export default {
/deep/.van-action-sheet__name {
font-size: 12px;
}
.checkbox-click {
position: absolute;
right: 0;
top: 0;
width: 7.46667vw;
height: 7.46667vw;
}
}
</style>

View File

@@ -224,6 +224,9 @@ export default {
},
//点击下一步
nextStep() {
//保存有没有社保,在保费计算用到
localStorage.setItem('proposalMedical', this.insured.medical === '0' ? '1' : '0')
this.insured.age = String(this.insured.age)
let cacheSex = JSON.parse(localStorage.proposalAppnt).sex
let localSex = this.insured.sex