mirror of
http://112.124.100.131/GFRS/ebiz-h5.git
synced 2025-12-07 04:16:44 +08:00
3127 lines
144 KiB
Vue
3127 lines
144 KiB
Vue
<template>
|
||
<div class="calculate-premium-container pb50 pt10 redRadioCheckbox">
|
||
<div class="bg-white ph10 pt10">
|
||
<div class="flex justify-content-s align-items-c border-bottom pb10">
|
||
<span class="mr10">{{ saleInsuredPersonInfo.name }}</span>
|
||
<span class="mr10">{{ saleInsuredPersonInfo.sex == 0 ? '男' : '女' }}</span>
|
||
<span class="mr10">{{ saleInsuredPersonInfo.insuredAge }}岁</span>
|
||
<span class="mr10 flex1 van-ellipsis">{{ saleInsuredPersonInfo.occupationName }}</span>
|
||
</div>
|
||
</div>
|
||
<div v-for="(item, index) in chooseProducts" :key="index" class="ph10 bg-white">
|
||
<div class="flex justify-content-s align-items-c border-bottom pv10">
|
||
<van-tag type="primary" v-if="item.isMainRisk == 0" class="mr5 green" plain>主险</van-tag>
|
||
<van-tag type="primary" v-else class="mr5 green" plain>附加险</van-tag>
|
||
<span class="ml5 center fs13 flex1">{{ item.riskName }}</span>
|
||
<van-tag type="primary" v-if="item.isMainRisk == 0 && item.hasAddtionRisk && isEnterAddtionRisk" plain @click="selectAddtionRisk" class="green mr8">
|
||
附
|
||
</van-tag>
|
||
<van-icon name="search" size="20" v-if="item.documentDTOS && item.documentDTOS.length > 0" @click="seeDocument(index)" class="green mr5" />
|
||
<van-icon name="delete" size="22" @click="deleteRisk(index,item)" class="green" />
|
||
</div>
|
||
<!-- 险种条件-->
|
||
<div v-if="(item.isRemit == 1 && isTrial == '1') || (item.isRemit == 1 && isTrial != '1' && item.isMainRisk == 1)">
|
||
<!-- <div v-if="item.isRemit == 1 && isTrial == '1'"> -->
|
||
<div v-for="(riskFactor, riskFactorIndex) in item.calFactorLst" :key="riskFactorIndex">
|
||
<!--riskFactor.type 1输入框和步进器 0 下拉选 -->
|
||
<div class="flex justify-content-s pv10 border-bottom" v-if="riskFactor.type == 1 && item.productCode != 'GFRS_A0011'">
|
||
<div class="flex align-items-c">
|
||
<span v-if="riskFactor.suffix" class="fs14">{{ riskFactor.name + '(' + riskFactor.suffix + ')' }}</span>
|
||
<span v-else class="fs14">{{ riskFactor.name }} </span>
|
||
<!-- {{ riskFactorIndex }} -->
|
||
<!-- {{defalutAmt}} -->
|
||
<van-stepper
|
||
v-model.number="item.calFactorLst[riskFactorIndex].displayAmount"
|
||
:min="riskFactor.minAmt || riskFactor.minPrem"
|
||
:max="riskFactor.maxAmt || riskFactor.maxPrem"
|
||
:show-plus="false"
|
||
:show-minus="false"
|
||
class="ml30"
|
||
@change="
|
||
stepperChange(
|
||
item.calFactorLst[riskFactorIndex].displayAmount,
|
||
index,
|
||
riskFactorIndex,
|
||
riskFactor.minAmt || riskFactor.minPrem,
|
||
riskFactor.maxAmt || riskFactor.maxPrem,
|
||
riskFactor
|
||
)
|
||
"
|
||
input-width="100"
|
||
:integer="false"
|
||
/>
|
||
</div>
|
||
</div>
|
||
<!-- GFRS_A0011-附加两全 属于非豁免险 但附加两全保额=主险年交保费+其他不带豁免责任的长期期交附加险年交保费 此处保额单独展示 -->
|
||
<div v-else-if="item.productCode == 'GFRS_A0011' && riskFactor.type == 1 && riskFactor.code == 'amt'" class="flex justify-content-s pv10 border-bottom">
|
||
<van-field v-model="riskFactor.defaultValue" readonly :label="riskFactor.name + '(' + riskFactor.suffix + ')'" />
|
||
</div>
|
||
<!-- //主险的交费期间联动国富人寿附加两全(GFRS_A0011)保险的交费期间 -->
|
||
<div
|
||
class="flex justify-content-s pv10 border-bottom"
|
||
v-if="riskFactor.type == 0 && item.productCode != 'GFRS_A0011'"
|
||
:class="{ hidden: riskFactor.code == 'payEndYear' && item.isHidden }"
|
||
>
|
||
<van-field
|
||
v-model="riskFactor.showContent"
|
||
readonly
|
||
:label="riskFactor.name"
|
||
right-icon="arrow"
|
||
placeholder="请选择"
|
||
@click="toSelect(index, riskFactorIndex, riskFactor.columns)"
|
||
/>
|
||
</div>
|
||
<div
|
||
class="flex justify-content-s pv10 border-bottom"
|
||
v-else-if="riskFactor.type == 0 && item.productCode == 'GFRS_A0011'"
|
||
:class="{ hidden: riskFactor.code == 'payEndYear' && item.isHidden }"
|
||
>
|
||
<van-field
|
||
v-if="riskFactor.code != 'payEndYear'"
|
||
v-model="riskFactor.showContent"
|
||
readonly
|
||
:label="riskFactor.name"
|
||
right-icon="arrow"
|
||
placeholder="请选择"
|
||
@click="toSelect(index, riskFactorIndex, riskFactor.columns)"
|
||
/>
|
||
<van-field v-if="riskFactor.code == 'payEndYear'" v-model="riskFactor.showContent" readonly :label="riskFactor.name" />
|
||
</div>
|
||
<div class="border-bottom renewalWrappser fs14" v-if="riskFactor.type == 4 && !renewalShow(mainRiskCode)">
|
||
<span>{{ riskFactor.name }}</span>
|
||
<van-radio-group class="renewal" v-model="renewal" direction="horizontal">
|
||
<van-radio class="radio" name="-1">是</van-radio>
|
||
<van-radio class="radio" name="-2">否</van-radio>
|
||
</van-radio-group>
|
||
</div>
|
||
<!-- 桂企产品——GFRS_M0024/GFRS_M0040——不显示责任保费及(万元),只显示责任名称及勾选框 -->
|
||
<div class="border-bottom" v-if="riskFactor.type == 3">
|
||
<div class="pv12 border-bd">{{ riskFactor.name }}</div>
|
||
<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
|
||
v-if="
|
||
!(
|
||
item.productCode == 'GFRS_M0024' ||
|
||
item.productCode == 'GFRS_M0040' ||
|
||
item.productCode == 'GFRS_M0044' ||
|
||
item.productCode == 'GFRS_M0046' ||
|
||
item.productCode == 'GFRS_M0051' ||
|
||
item.productCode == 'GFRS_M0054' ||
|
||
item.productCode == 'GFRS_M0073' ||
|
||
item.productCode == 'GFRS_M0057'
|
||
)
|
||
"
|
||
class="fs14 w100"
|
||
>{{ dutyItem.dutyName }}({{ dutyItem.suffix }})</span
|
||
>
|
||
<span v-else class="fs14 w100">{{ dutyItem.dutyName }}</span>
|
||
<div class="flex relative">
|
||
<van-stepper
|
||
v-if="
|
||
!(
|
||
item.productCode == 'GFRS_M0024' ||
|
||
item.productCode == 'GFRS_M0040' ||
|
||
item.productCode == 'GFRS_M0044' ||
|
||
item.productCode == 'GFRS_M0046' ||
|
||
item.productCode == 'GFRS_M0051' ||
|
||
item.productCode == 'GFRS_M0054' ||
|
||
item.productCode == 'GFRS_M0073' ||
|
||
item.productCode == 'GFRS_M0057'
|
||
)
|
||
"
|
||
v-model="dutyItem.defaultDutyAmt"
|
||
:min="dutyItem.minDutyAmt"
|
||
:max="dutyItem.maxDutyAmt"
|
||
:show-plus="false"
|
||
:show-minus="false"
|
||
:disabled="item.productCode == 'GFRS_A0012' || (item.productCode == 'GFRS_M0077' && !dutyItem.necess) || (item.productCode == 'GFRS_M0077' && dutyItem.duty == '311507')"
|
||
class="ml10 mr10"
|
||
@focus="focusStep"
|
||
@blur="blurStep(dutyItem, index,item.productCode)"
|
||
@change="
|
||
dutyStepperChange(
|
||
item.calFactorLst[riskFactorIndex].rules[dutyItemIndex].defaultDutyAmt,
|
||
index,
|
||
riskFactorIndex,
|
||
dutyItemIndex,
|
||
dutyItem.necess,
|
||
dutyItem.minDutyAmt,
|
||
dutyItem.maxDutyAmt
|
||
)
|
||
"
|
||
input-width="200"
|
||
:integer="false"
|
||
/>
|
||
<van-checkbox
|
||
v-model="dutyItem.necess"
|
||
:disabled="dutyItem.defaultValue == '0'"
|
||
shape="square"
|
||
@change="changeChecked(index, riskFactorIndex, dutyItemIndex, dutyItem)"
|
||
></van-checkbox>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- 为富娃娃两全保险(万能型)专写 外加鑫享年年-->
|
||
<div v-if="item.isRemit == 1 && isTrial != '1' && item.isMainRisk == 0">
|
||
<div v-for="(riskFactor, riskFactorIndex) in item.calFactorLst" :key="riskFactorIndex">
|
||
<div class="flex justify-content-s pv10 border-bottom" v-if="riskFactor.type == 1">
|
||
<div class="flex align-items-c">
|
||
<span v-if="item.productTrialYearDTOS[payEndYearColumnsIndex].suffix" class="fs14">
|
||
{{ riskFactor.name + '(' + item.productTrialYearDTOS[payEndYearColumnsIndex]['suffix'] + ')' }}
|
||
</span>
|
||
<span v-else class="fs14">{{ riskFactor.name }} </span>
|
||
<van-stepper
|
||
v-model.number="item.productTrialYearDTOS[payEndYearColumnsIndex].displayAmount"
|
||
:min="item.productTrialYearDTOS[payEndYearColumnsIndex].minAmt || item.productTrialYearDTOS[payEndYearColumnsIndex].minPrem"
|
||
:max="item.productTrialYearDTOS[payEndYearColumnsIndex].maxAmt || item.productTrialYearDTOS[payEndYearColumnsIndex].maxPrem"
|
||
:show-plus="false"
|
||
:show-minus="false"
|
||
class="ml30"
|
||
@change="
|
||
stepperChange(
|
||
item.productTrialYearDTOS[payEndYearColumnsIndex].displayAmount,
|
||
index,
|
||
riskFactorIndex,
|
||
item.productTrialYearDTOS[payEndYearColumnsIndex].minAmt || item.productTrialYearDTOS[payEndYearColumnsIndex].minPrem,
|
||
item.productTrialYearDTOS[payEndYearColumnsIndex].maxAmt || item.productTrialYearDTOS[payEndYearColumnsIndex].maxPrem,
|
||
item.productTrialYearDTOS[payEndYearColumnsIndex]
|
||
)
|
||
"
|
||
input-width="100"
|
||
:integer="false"
|
||
/>
|
||
</div>
|
||
</div>
|
||
<div
|
||
class="flex justify-content-s pv10 border-bottom"
|
||
v-if="riskFactor.type == 0"
|
||
:class="{ hidden: riskFactor.code == 'payEndYear' && item.isHidden }"
|
||
>
|
||
<van-field
|
||
v-model="riskFactor.showContent"
|
||
readonly
|
||
:label="riskFactor.name"
|
||
right-icon="arrow"
|
||
placeholder="请选择"
|
||
@click="toSelect(index, riskFactorIndex, riskFactor.columns)"
|
||
/>
|
||
</div>
|
||
<div class="border-bottom" v-if="riskFactor.type == 3">
|
||
<div class="pv12 border-bd">{{ riskFactor.name }}</div>
|
||
<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 relative">
|
||
<van-stepper
|
||
v-model="dutyItem.defaultDutyAmt"
|
||
:min="dutyItem.minDutyAmt"
|
||
:max="dutyItem.maxDutyAmt"
|
||
:show-plus="false"
|
||
:show-minus="false"
|
||
class="ml10 mr10"
|
||
@focus="focusStep"
|
||
@blur="blurStep(dutyItem, index)"
|
||
@change="
|
||
dutyStepperChange(
|
||
item.calFactorLst[riskFactorIndex].rules[dutyItemIndex].defaultDutyAmt,
|
||
index,
|
||
riskFactorIndex,
|
||
dutyItemIndex,
|
||
dutyItem.necess,
|
||
dutyItem.minDutyAmt,
|
||
dutyItem.maxDutyAmt
|
||
)
|
||
"
|
||
input-width="200"
|
||
:integer="false"
|
||
/>
|
||
<van-checkbox
|
||
v-model="dutyItem.necess"
|
||
:disabled="dutyItem.defaultValue == '0'"
|
||
shape="square"
|
||
@change="changeChecked(index, riskFactorIndex, dutyItemIndex, dutyItem)"
|
||
></van-checkbox>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 豁免险条件GFRS_A0013,GFRS_A0014 -->
|
||
<div v-if="item.isRemit == 0">
|
||
<div v-for="(riskFactor, riskFactorIndex) in item.calFactorLst" :key="riskFactorIndex" class="border-bottom">
|
||
<div class="flex justify-content-s pv10">
|
||
<div class="flex">
|
||
<van-field v-if="riskFactor.type == 0" v-model="riskFactor.showContent" readonly :label="riskFactor.name" />
|
||
<van-field v-if="riskFactor.type == 1" v-model="riskFactor.defaultValue" readonly :label="riskFactor.name + '(' + riskFactor.suffix + ')'" />
|
||
</div>
|
||
</div>
|
||
|
||
<div v-if="riskFactor.type == 3">
|
||
<div class="pv12 border-bd">{{ riskFactor.name }}</div>
|
||
<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 relative">
|
||
<van-stepper
|
||
v-model="dutyItem.defaultDutyAmt"
|
||
:min="dutyItem.minDutyAmt"
|
||
:max="dutyItem.maxDutyAmt"
|
||
:show-plus="false"
|
||
:show-minus="false"
|
||
class="ml10 mr10"
|
||
:disabled="dutyItem.changeWithMainRisk === true ? 'disabled' : ''"
|
||
@focus="focusStep"
|
||
@blur="blurStep(dutyItem, index)"
|
||
@change="
|
||
dutyStepperChange(
|
||
item.calFactorLst[riskFactorIndex].rules[dutyItemIndex].defaultDutyAmt,
|
||
index,
|
||
riskFactorIndex,
|
||
dutyItemIndex,
|
||
dutyItem.necess,
|
||
dutyItem.minDutyAmt,
|
||
dutyItem.maxDutyAmt
|
||
)
|
||
"
|
||
input-width="200"
|
||
:integer="false"
|
||
/>
|
||
<van-checkbox
|
||
v-model="dutyItem.necess"
|
||
:disabled="dutyItem.isDisabled || dutyItem.defaultValue == '0'"
|
||
shape="square"
|
||
@change="changeChecked(index, riskFactorIndex, dutyItemIndex, dutyItem)"
|
||
></van-checkbox>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- 只有万能险且只有建议书才展示 -->
|
||
<van-field class="pv10" v-if="item.hasPredictTransferPrem === '0'" v-model="item.predictTransferPrem" label="预计转入保费" placeholder="请输入" />
|
||
<div class="flex justify-content-s pv10 border-bottom" v-if="item.isMainRisk == 0 && isRelated && isFrom != 'proposal'">
|
||
<van-field
|
||
v-model="policyNo"
|
||
clearable
|
||
label="关联保单"
|
||
name="关联保单号"
|
||
maxlength="380"
|
||
type="textarea"
|
||
autosize
|
||
@blur="getTrial"
|
||
placeholder="请录入保单号或者投保单号,如果关联多个保单,请用\隔开"
|
||
/>
|
||
</div>
|
||
<div class="flex justify-content-s pv10 border-bottom prem" v-if="item.productCode != 'GFRS_M0080'">
|
||
<!-- trialType 0-保额算保费,1-保费算保额 -->
|
||
<!-- isTrial是否需存在特殊配置(规则) 0-是 1-否-->
|
||
<span
|
||
style="font-weight: bold"
|
||
v-if="(trialList.length > 0 && trialList[index].trialType == 0) || (trialList.length > 0 && trialList[index].trialType == 2)"
|
||
>
|
||
首期保费(元):
|
||
</span>
|
||
<span style="font-weight: bold" v-else>保额(元):</span>
|
||
<span class="fee red" v-if="trialList && trialList.length > 0">{{ trialList[index].showPrem | moneyFormat }}</span>
|
||
</div>
|
||
</div>
|
||
<div class="flex justify-content-fs pv10 ph15 bg-white border-bottom prem align-items-c" v-if="cvalidateFlag && cvalidateStr != '2021-12-31'">
|
||
<span>指定保单生效日</span>
|
||
<van-radio-group v-model="activeRadio" class="pl20">
|
||
<van-radio name="1" icon-size="1rem"></van-radio>
|
||
</van-radio-group>
|
||
<span class="pl5">{{ cvalidateStr }}</span>
|
||
</div>
|
||
<div class="bottom-btn bg-white flex" v-if="isFrom == 'proposal'">
|
||
<van-button type="danger" size="large" @click="nextStep" :disabled="nextStepFlag" v-no-more-click="1000">完成</van-button>
|
||
</div>
|
||
<div class="bottom-btn bg-white flex" v-else>
|
||
<van-button plain type="danger" size="large" @click="nextStep('orderTrial')" v-no-more-click="1000">核保试算</van-button>
|
||
<van-button type="danger" size="large" @click="nextStep" :disabled="nextStepFlag" v-no-more-click="1000">下一步</van-button>
|
||
</div>
|
||
<van-action-sheet v-model="show" cancel-text="取消" :actions="policyInfo" @select="openDocument" />
|
||
|
||
<!-- 字段选择 -->
|
||
<van-popup v-model="popupShow" position="bottom"><van-picker show-toolbar :columns="columns" @confirm="onConfirm" @cancel="onCancel" /></van-popup>
|
||
<van-dialog v-model="trialResultsShow" title="核保试算结果" :show-cancel-button="false">
|
||
<div class="pl40 pr40 mt10">
|
||
<div class="flex justify-content-s fs12" v-for="(item, index) in verifyResultList" :key="index">
|
||
<div>
|
||
<img class="w20 h20 p10 v-middle" :src="require('@/assets/images/sale/ruleType0'+ item.ruleType +'.png')" alt="">
|
||
<span class="v-middle">{{item.ruleType | ruleTypeFilter}}</span>
|
||
</div>
|
||
<div>
|
||
<!-- <span class="v-middle">{{item.status | approvedFilter}}</span>-->
|
||
<img class="w20 h20 p10 v-middle" :src="require('@/assets/images/sale/approved'+ item.status +'.png')" alt="">
|
||
</div>
|
||
</div>
|
||
<div style="padding:25px 0px 10px 10px;font-size: 10px;color: #999;">
|
||
<p style="line-height: 20px;"><span style="width: 40px;display: inline-block;">说明:</span>绿色✔表示 未触发规则、红色×表示 触发规则</p>
|
||
</div>
|
||
</div>
|
||
</van-dialog>
|
||
</div>
|
||
</template>
|
||
<script>
|
||
import { Tag, Icon, Dialog, ActionSheet, Popup, Picker, Stepper, Field, Checkbox, RadioGroup, Radio } from 'vant'
|
||
import { trial } from '@/api/ebiz/common/common'
|
||
import { saveOrUpdateOrderInfo, getOrderDetail,orderTrial } from '@/api/ebiz/sale/sale'
|
||
import { saveProposal, getTrialRecordInfo, saveOrUpdateTrialRecordInfo } from '@/api/ebiz/proposal/proposal.js'
|
||
import { getAgentInfo } from '@/api/ebiz/my/my.js'
|
||
import occupationList from '@/components/ebiz/occipation/data/occupation'
|
||
import utilsAge from '@/assets/js/utils/age'
|
||
import riskRules from "./risk-rules";
|
||
|
||
//险种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元/天'
|
||
}
|
||
}
|
||
|
||
//险种GFRS_M0070的责任的验证规则
|
||
//默认 最低基本保险金额min 10000 整数倍要求mutiple 1000
|
||
const dutdutyGFRS_M0070RulesyRules = {
|
||
411200: {
|
||
min: 100000,
|
||
msg: '意外基本保险金额最低为100000元,超过最低基本保险金额为10000元整数倍'
|
||
},
|
||
411201: {
|
||
min: 100000,
|
||
msg: '轨道列车意外基本保险金额最低为100000元,超过最低基本保险金额为10000元整数倍,并且小于等于意外基本保险金额的5倍'
|
||
},
|
||
411202: {
|
||
min: 100000,
|
||
msg: '客运汽车意外基本保险金额最低为100000元,超过最低基本保险金额为10000元整数倍,并且小于等于意外基本保险金额的5倍'
|
||
},
|
||
411203: {
|
||
min: 100000,
|
||
msg: '客运轮船意外基本保险金额最低为100000元,超过最低基本保险金额为10000元整数倍,并且小于等于意外基本保险金额的5倍'
|
||
},
|
||
411204: {
|
||
min: 100000,
|
||
msg: '客运民航班机意外基本保险金额最低为100000元,超过最低基本保险金额为10000元整数倍,并且小于等于意外基本保险金额的10倍'
|
||
},
|
||
411205: {
|
||
min: 100000,
|
||
msg: '自驾车意外基本保险金额最低为100000元,超过最低基本保险金额为10000元整数倍,并且小于等于意外基本保险金额的5倍'
|
||
},
|
||
411206: {
|
||
min: 2000,
|
||
mutiple: 1000,
|
||
msg: '意外伤害医疗基本保险金额最低为2000元,超过最低基本保险金额为1000元整数倍,并且小于等于意外基本保险金额的1/5倍'
|
||
},
|
||
411207: {
|
||
min: 10,
|
||
mutiple: 10,
|
||
msg: '意外住院津贴日额最低基本保险金额为10元/天,超过最低基本保险金额为10元/天整数倍,最高不得超过200元/天'
|
||
}
|
||
}
|
||
|
||
const dutyGFRS_A0004Rules = {
|
||
320205: {
|
||
mainRisk: 'GFRS_M0005',
|
||
msg: '住院医疗提示:金额只能是0.5、1、1.5、2',
|
||
msg_1: '附加到国富人寿国富民惠医疗保险(2020版)最高基本保额不超过1万元。',
|
||
msg_2: '住院医疗提示:金额只能是0.5、1'
|
||
},
|
||
320206: {
|
||
msg: '住院津贴提示:投保可选责任时,可选责任最低投保 50 元,且应为 10 元的整数倍'
|
||
},
|
||
320207: {
|
||
msg: '恶性肿瘤提示:投保可选责任时,可选责任最低投保 50 元,且应为 10 元的整数倍'
|
||
}
|
||
}
|
||
const dutyGFRS_A0008Rules = {
|
||
320404: {
|
||
mainRisk: 'GFRS_M0005',
|
||
otmainRisk: 'GFRS_M0031',
|
||
mainRisk2: 'GFRS_M0042',
|
||
otmainRisk2: 'GFRS_M0043',
|
||
msg: '住院医疗提示:金额只能是0.5、1、1.5、2',
|
||
msg_1: '附加到国富人寿国富民惠医疗保险(2020版)最高基本保额不超过1万元。',
|
||
msg_2: '住院医疗提示:金额只能是0.5、1'
|
||
},
|
||
320405: {
|
||
msg: '住院津贴提示:投保可选责任时,可选责任最低投保 50 元,且应为 10 元的整数倍'
|
||
},
|
||
320406: {
|
||
msg: '恶性肿瘤提示:投保可选责任时,可选责任最低投保 50 元,且应为 10 元的整数倍'
|
||
}
|
||
}
|
||
const DUTY_DEFAULT_MUTIPLE = 1000
|
||
const DUTY_DEFAULT_MIN = 10000
|
||
|
||
export default {
|
||
name: 'calculatePremium',
|
||
filters: {
|
||
ruleTypeFilter(val) {
|
||
switch (val) {
|
||
case '1':
|
||
return '体检:'
|
||
case '2':
|
||
return '财务问卷:'
|
||
case '3':
|
||
return '契调:'
|
||
case '4':
|
||
return '财务资料:'
|
||
}
|
||
},
|
||
approvedFilter(val) {
|
||
switch (val) {
|
||
case '0':
|
||
return '达标:'
|
||
case '1':
|
||
return '未达标'
|
||
}
|
||
}
|
||
},
|
||
components: {
|
||
[Tag.name]: Tag,
|
||
[Icon.name]: Icon,
|
||
[ActionSheet.name]: ActionSheet,
|
||
[Popup.name]: Popup,
|
||
[Picker.name]: Picker,
|
||
[Stepper.name]: Stepper,
|
||
[Field.name]: Field,
|
||
[Checkbox.name]: Checkbox,
|
||
[Dialog.name]: Dialog,
|
||
[Radio.name]: Radio,
|
||
[RadioGroup.name]: RadioGroup
|
||
},
|
||
data() {
|
||
return {
|
||
branchTypeVal: '', //个险渠道G 中介渠道Z
|
||
isEnterAddtionRisk: true, //附加险list
|
||
activeRadio: '1',
|
||
// activeType: localStorage.getItem('active_type'), 现在从订单详情接口取值了
|
||
activeType: '',
|
||
cvalidateFlag: false,
|
||
cvalidateStr: '', //活动生效日
|
||
chooseProducts: [],
|
||
productIndex: '',
|
||
calFactorIndex: '',
|
||
premiumData: [], //试算
|
||
saleInsuredInfo: {},
|
||
saleInsuredPersonInfo: {}, //投保人信息
|
||
trialList: [],
|
||
popupShow: false,
|
||
columns: [],
|
||
pickerType: '',
|
||
show: false,
|
||
policyInfo: [],
|
||
currentIndex: '', //当前操作产品
|
||
trialInfos: [],
|
||
influenceAddRiskCodes: [],
|
||
influences: [],
|
||
nextStepFlag: false,
|
||
isRelated: localStorage.isRelated === '0', //关联保单号
|
||
policyNo: '',
|
||
// 份数
|
||
mult: '',
|
||
isFrom: '',
|
||
// 默认钱数
|
||
defalutAmt: '',
|
||
//是否需存在特殊配置 0-是 1-否
|
||
isTrial: localStorage.isTrial,
|
||
//缴费期间对应index索引
|
||
payEndYearColumnsIndex: 0,
|
||
// 后台配置的校验规则
|
||
ruleExpression: {},
|
||
mainRiskCode: '',
|
||
renewal: '-1',
|
||
richChildrenFlag: false,
|
||
isCrossChannel: '0', //是否交叉渠道 1-是 0-否
|
||
trialResultsShow:false, //核保试算结果
|
||
verifyResultList:[] //核保试算返回数据结构
|
||
}
|
||
},
|
||
mounted() {
|
||
this.isFrom = window.localStorage.isFrom
|
||
this.$jump({
|
||
flag: 'navigation',
|
||
extra: {
|
||
title: '保费计算'
|
||
},
|
||
})
|
||
if(this.isFrom === 'proposal'){
|
||
// eslint-disable-next-line no-undef
|
||
setTimeout(() => {
|
||
EWebBridge.webCallAppInJs('webview_right_button', {
|
||
btns: [
|
||
{
|
||
img: this.$assetsUrl + 'images/del-close.png',
|
||
route: { flag: '', extra: {} }
|
||
}
|
||
]
|
||
})
|
||
}, 500)
|
||
}
|
||
window.appCallBack = this.appCallBack
|
||
getAgentInfo({}).then(res => {
|
||
// branchType N1、1代表个险渠道 和 N5、5 代表中介渠道,N代表内勤
|
||
if (res.branchType == 'N1' || res.branchType == '1') {
|
||
this.branchTypeVal = 'G'
|
||
} else if (res.branchType == 'N5' || res.branchType == '5') {
|
||
this.branchTypeVal = 'Z'
|
||
} else if (res.branchType == '2') {
|
||
// 2 团险业务员
|
||
this.branchTypeVal = 'T'
|
||
} else if (res.branchType == '3') {
|
||
// 3 银保业务员
|
||
this.branchTypeVal = 'Y'
|
||
}
|
||
})
|
||
this.init()
|
||
Array.prototype.min = function () {
|
||
var min = this[0]
|
||
var len = this.length
|
||
for (var i = 1; i < len; i++) {
|
||
if (this[i] < min) {
|
||
min = this[i]
|
||
}
|
||
}
|
||
return min
|
||
}
|
||
},
|
||
methods: {
|
||
appCallBack(data) {
|
||
if (data.trigger == 'right_button_click' && localStorage.isFrom == 'proposal') {
|
||
return this.$dialog
|
||
.confirm({
|
||
className: 'dialog-delete',
|
||
title: '提示',
|
||
message: '退出流程可能会丢失部分数据,是否确认退出?',
|
||
cancelButtonColor: '#E9332E',
|
||
confirmButtonColor: '#FFFFFF'
|
||
})
|
||
.then(() => {
|
||
this.$jump({
|
||
flag: 'h5',
|
||
extra: {
|
||
title: '建议书列表',
|
||
forbidSwipeBack: 1, //当前页面禁止右滑返回
|
||
url: location.origin + `/#/proposal/list`
|
||
},
|
||
routerInfo: {
|
||
path: `/proposal/list`,
|
||
type: '1'
|
||
}
|
||
})
|
||
})
|
||
.catch(() => {
|
||
return
|
||
})
|
||
}
|
||
},
|
||
renewalShow(productCode) {
|
||
let codes = ['GFRS_M0016', 'GFRS_M0005', 'GFRS_M0018','GFRS_M0070']
|
||
return codes.find((item) => {
|
||
return productCode === item
|
||
})
|
||
},
|
||
//初始化数据
|
||
async init() {
|
||
// 获取是否从建议书过来的
|
||
let that = this
|
||
//获取投保人信息
|
||
if (this.$CacheUtils.getLocItem('saleInsuredInfo')) {
|
||
this.saleInsuredInfo = JSON.parse(this.$CacheUtils.getLocItem('saleInsuredInfo'))
|
||
}
|
||
//获取被保险人信息
|
||
if (this.$CacheUtils.getLocItem('saleInsuredPersonInfo')) {
|
||
this.saleInsuredPersonInfo = JSON.parse(this.$CacheUtils.getLocItem('saleInsuredPersonInfo'))
|
||
this.saleInsuredPersonInfo.insuredAge = this.saleInsuredPersonInfo.insuredAge ? this.saleInsuredPersonInfo.insuredAge : this.saleInsuredPersonInfo.age
|
||
if(this.saleInsuredPersonInfo.birthday){
|
||
this.saleInsuredPersonInfo.insuredAge = utilsAge.getAge(this.saleInsuredPersonInfo.birthday, new Date())
|
||
}
|
||
if (this.isFrom == 'proposal' && !this.saleInsuredPersonInfo.name) {
|
||
// 建议书投保人/被保人姓名不必填, 填写姓名时展示姓名(落库),不填写姓名时展示性别+年龄,如:男30岁(不落库)
|
||
let sex = this.saleInsuredPersonInfo.sex == '0'?'男':'女'
|
||
this.saleInsuredPersonInfo.name = sex + this.saleInsuredPersonInfo.insuredAge+'岁'
|
||
}
|
||
}
|
||
|
||
// this.cvalidateFlag = (this.activeType == 'KMH'||this.activeType == 'SQY') && this.isFrom != 'proposal'
|
||
// this.cvalidateStr = this.cvalidateFlag?this.activeType == 'KMH'?'2021-01-01':this.activeType == 'SQY'?'2021-06-01':'':''
|
||
//GFRS-2552【需求】关于金掌桂投保流程增设指定生效日按钮的申请
|
||
const orderNo = this.$route.query.orderNo
|
||
let detailPromise = this.isFrom === 'proposal' ? localStorage.proposalMedical : await getOrderDetail({ orderNo })
|
||
let collect = (data,code) => {
|
||
data.forEach(item => {
|
||
if (item.code == code) {
|
||
this.saleInsuredPersonInfo.healthGrade = item.healthGrade
|
||
this.saleInsuredPersonInfo.lifeGrade = item.lifeGrade
|
||
} else {
|
||
if (item.subs && item.subs.length != 0) {
|
||
collect(item.subs,code)
|
||
}
|
||
}
|
||
})
|
||
}
|
||
if (this.isFrom != 'proposal') {
|
||
collect(occupationList,detailPromise.orderDTO.insuredDTOs[0].occupationCode)
|
||
//活动生效日期
|
||
this.cvalidateStr = detailPromise.orderDTO.orderInfoDTO.cvaliDate
|
||
this.activeType = detailPromise.orderDTO.orderInfoDTO.activeType
|
||
}
|
||
this.cvalidateFlag = this.activeType && this.isFrom != 'proposal'
|
||
//构建提交数据、渲染险种
|
||
if(this.$route.query.insuanceIdInfo && this.isFrom == 'proposal' && !localStorage.editproposaladdrisk){
|
||
// 获取试算记录详情
|
||
let serialNo = ''
|
||
if (this.$route.query.orderNo) {
|
||
serialNo = this.$route.query.orderNo
|
||
}
|
||
if (this.$route.query.proposalOrderNo) {
|
||
serialNo = this.$route.query.proposalOrderNo
|
||
}
|
||
let thismyinsuanceIdInfo = JSON.parse(this.$route.query.insuanceIdInfo)
|
||
let insuanceId = ''
|
||
let riskProductCode = ''
|
||
thismyinsuanceIdInfo.forEach(item=>{
|
||
if(item.isMainRisk == 0){
|
||
insuanceId = item.insuanceId
|
||
riskProductCode = item.riskCode
|
||
}
|
||
})
|
||
await getTrialRecordInfo({
|
||
serialNo:serialNo,
|
||
mainRiskId:insuanceId
|
||
}).then(res => {
|
||
if (res.result == '0') {
|
||
this.chooseProducts = JSON.parse(res.content.trialJsonStr)
|
||
this.trialRecordInfoId = res.content.id
|
||
} else {
|
||
this.$toast(res.resultMessage)
|
||
}
|
||
})
|
||
}else{
|
||
this.chooseProducts = JSON.parse(localStorage.chooseProducts)
|
||
}
|
||
this.chooseProducts.forEach((item, index) => {
|
||
if (item.isCrossChannel == '1') {
|
||
this.isCrossChannel = item.isCrossChannel
|
||
}
|
||
if (item.mainRiskCode == 'GFRS_M0006') {
|
||
item.isHidden = true
|
||
}
|
||
if (item.mainRiskCode != 'GFRS_M0008') {
|
||
item.calFactorLst.map((i) => {
|
||
// this.defalutAmt = i.displayAmount || 1
|
||
if (i.code == 'inputPrem') {
|
||
this.mult = Math.ceil(Number(i.displayAmount) / Number(i.defaultValue))
|
||
}
|
||
})
|
||
}
|
||
if (item.mainRiskCode == 'GFRS_M0077') {
|
||
item.calFactorLst.map((i) => {
|
||
if (i.code == 'dutyGroup') {
|
||
if(i.rules && i.rules.length != 0) {
|
||
i.rules.forEach(ii=>{
|
||
if(this.saleInsuredPersonInfo.insuredAge < 18) {
|
||
if(ii.duty == '311504'){
|
||
ii.necess = true
|
||
ii.defaultValue = '0'
|
||
} else {
|
||
ii.defaultValue = '0'
|
||
}
|
||
}else{
|
||
if(this.saleInsuredPersonInfo.sex == '0'){
|
||
if(ii.duty == '311505'){
|
||
ii.necess = true
|
||
ii.defaultValue = '0'
|
||
}
|
||
if(ii.duty == '311504' || ii.duty == '311506'){
|
||
ii.defaultValue = '0'
|
||
}
|
||
} else {
|
||
if(ii.duty == '311506'){
|
||
ii.defaultValue = '0'
|
||
ii.necess = true
|
||
}
|
||
if(ii.duty == '311504' || ii.duty == '311505'){
|
||
ii.defaultValue = '0'
|
||
}
|
||
}
|
||
}
|
||
})
|
||
}
|
||
}
|
||
})
|
||
}
|
||
if (item.mainRiskCode == 'GFRS_M0046') {
|
||
if (this.saleInsuredPersonInfo.relationToAppnt == 1) {
|
||
this.isEnterAddtionRiskListFunc()
|
||
}
|
||
}
|
||
let payEndYearVal
|
||
//初始化时交费期间为一次性交清时,在就是中介渠道, 附加险GFRS_A0007,GFRS_A0009,GFRS_A0010去掉后,附加险list就为空--隐藏’附‘icon
|
||
item.calFactorLst.map((i) => {
|
||
if (i.code == 'payEndYear') {
|
||
if (i.payEndYear == '1000' && i.payEndYearFlag == 'Y') {
|
||
this.isEnterAddtionRiskListFunc()
|
||
}
|
||
//初始化时取交费期间的值
|
||
payEndYearVal = i.showContent
|
||
}
|
||
})
|
||
if (index == 0) {
|
||
if (item.productTrialYearDTOS) {
|
||
//初始化时取交费期间的值,值再去对应productTrialYearDTOS中的第几条规则
|
||
item.productTrialYearDTOS.forEach((item, index) => {
|
||
if (payEndYearVal == item.yearWay + '年交') {
|
||
that.payEndYearColumnsIndex = index
|
||
}
|
||
})
|
||
}
|
||
}
|
||
|
||
//保存主险险种编号
|
||
if (item.isMainRisk == 0) {
|
||
this.mainRiskCode = item.mainRiskCode
|
||
}
|
||
})
|
||
if (this.mainRiskCode == 'GFRS_M0005') {
|
||
this.chooseProducts.map((item) => {
|
||
if (item.productCode == 'GFRS_A0004') {
|
||
item.calFactorLst.map((item2) => {
|
||
if (item2.code == 'dutyGroup') {
|
||
item2.rules.map((item3) => {
|
||
if (item3.duty == '320205') {
|
||
item3.maxDutyAmt = '1'
|
||
}
|
||
})
|
||
}
|
||
})
|
||
}
|
||
})
|
||
}
|
||
if (this.mainRiskCode == 'GFRS_M0031' || this.mainRiskCode == 'GFRS_M0005' || this.mainRiskCode == 'GFRS_M0042' || this.mainRiskCode == 'GFRS_M0043') {
|
||
this.chooseProducts.map((item) => {
|
||
if (item.productCode == 'GFRS_A0008') {
|
||
item.calFactorLst.map((item2) => {
|
||
if (item2.code == 'dutyGroup') {
|
||
item2.rules.map((item3) => {
|
||
if (item3.duty == '320404') {
|
||
item3.maxDutyAmt = '1'
|
||
}
|
||
})
|
||
}
|
||
})
|
||
}
|
||
})
|
||
}
|
||
|
||
//GFRS_M0016需要展示免赔额和赔付比例,并需要根据是否有社保调整数值
|
||
// let mainRiskCode = chooseProducts[0].mainRiskCode
|
||
// eslint-disable-next-line no-unused-vars
|
||
this.dogetLimitAndGetRate().then((res) => {
|
||
if (this.chooseProducts[0].influences && this.chooseProducts[0].influences.length > 0) {
|
||
this.influences = this.chooseProducts[0].influences
|
||
this.chooseProducts[0].influences.forEach((item) => {
|
||
this.influenceAddRiskCodes.push(item.productCode)
|
||
})
|
||
}
|
||
this.mainRiskInfluenceAddRisk()
|
||
//初始化数据试算
|
||
this.getTrial()
|
||
})
|
||
console.log(this.trialList, '')
|
||
// 判断是否 含有 后台配置js验证函数
|
||
if (localStorage.ruleExpression) {
|
||
let ruleExpression = JSON.parse(localStorage.ruleExpression)
|
||
this.ruleExpression = ruleExpression
|
||
let productCodes = Object.keys(ruleExpression)
|
||
productCodes.forEach((itemKey) => {
|
||
let rules = ruleExpression[itemKey]
|
||
rules.eventList = []
|
||
rules.forEach((item) => {
|
||
let config = ''
|
||
config = JSON.parse(item.ruleExpression)
|
||
this.$on(config.eventName, new Function(...config.funPar, config.funBody.join('')))
|
||
if (config.eventType == 'init') {
|
||
let initFn = new Function('that', config.initBody.join(''))
|
||
initFn(this)
|
||
}
|
||
if (config.otherRisk) {
|
||
for (let item of config.otherRisk) {
|
||
if (!ruleExpression[item] || !ruleExpression[item].eventList) {
|
||
ruleExpression[item] = {
|
||
eventList: [config.eventName]
|
||
}
|
||
} else {
|
||
ruleExpression[item].eventList.push(config.eventName)
|
||
}
|
||
}
|
||
}
|
||
rules.eventList.push(config.eventName)
|
||
})
|
||
})
|
||
}
|
||
//键盘小数点无法输入,试了一下iOS16以下没这个问题,iOS16以上有这个问题, type="number"改成type="digit"就可以输入了,
|
||
this.$nextTick (()=>{
|
||
var div1 = document.getElementsByClassName('van-stepper__input')
|
||
//拿到的是一个数组集合,遍历修改每一个input
|
||
for(var x in div1){
|
||
div1[x].setAttribute('type','digit')
|
||
}
|
||
})
|
||
},
|
||
//特殊处理 GFRS_M0016 GFRS_A0004 GFRS_A0005 赔付比例处理
|
||
async dogetLimitAndGetRate() {
|
||
const orderNo = this.$route.query.orderNo
|
||
let detailPromise = this.isFrom === 'proposal' ? localStorage.proposalMedical : await getOrderDetail({ orderNo })
|
||
this.chooseProducts.map((item) => {
|
||
if (
|
||
!(item.mainRiskCode === 'GFRS_M0016' ||item.mainRiskCode === 'GFRS_M0070' || item.productCode === 'GFRS_A0004' || item.productCode === 'GFRS_A0008' || item.productCode === 'GFRS_A0005')
|
||
) {
|
||
//其他产品删掉两个字段
|
||
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)
|
||
}
|
||
}
|
||
return
|
||
}
|
||
if (item.mainRiskCode === 'GFRS_M0016' || item.mainRiskCode === 'GFRS_M0070' ||item.productCode === 'GFRS_A0004' || item.productCode === 'GFRS_A0008' || item.productCode === 'GFRS_A0005') {
|
||
let isMedical = null
|
||
if (this.isFrom === 'proposal') {
|
||
isMedical = detailPromise == '1'
|
||
} else {
|
||
isMedical = detailPromise.orderDTO.insuredDTOs[0].medical == '0'
|
||
}
|
||
// 赔付比例和免赔额
|
||
item.calFactorLst.map((i) => {
|
||
if (i.code === 'getLimit') {
|
||
let tempColumns = i.columns.filter((itemC) => {
|
||
return itemC.medical == Math.abs(isMedical - 1).toString()
|
||
})
|
||
if (tempColumns.length !== 0) {
|
||
i.columns = tempColumns
|
||
}
|
||
// i.getLimit = i.columns[0].value
|
||
// i.showContent = i.columns[0].text
|
||
}
|
||
//赔付比例
|
||
if (i.code === 'getRate') {
|
||
let tempColumns = i.columns.filter((itemC) => {
|
||
return itemC.medical == Math.abs(isMedical - 1).toString()
|
||
})
|
||
if (tempColumns.length !== 0) {
|
||
i.columns = tempColumns
|
||
}
|
||
// i.getRate = i.columns[0].value
|
||
// i.showContent = i.columns[0].text
|
||
}
|
||
})
|
||
this.$forceUpdate()
|
||
} else if (item.productCode === 'GFRS_A0005') {
|
||
// GFRS_A0005 未处理
|
||
}
|
||
})
|
||
},
|
||
// 责任保额份数变化
|
||
dutyStepperChange(value, productIndex, calFactorIndex, dutyItemIndex, isChecked, min, max) {
|
||
//这个险种使用其他验证方式
|
||
if (this.chooseProducts[productIndex].productCode === 'GFRS_M0016') return
|
||
if (this.chooseProducts[productIndex].productCode === 'GFRS_M0070') return
|
||
// 004险种其他验证方式
|
||
if (this.chooseProducts[productIndex].productCode === 'GFRS_A0004') return
|
||
// 008险种其他验证方式
|
||
if (this.chooseProducts[productIndex].productCode === 'GFRS_A0008') return
|
||
if (
|
||
this.chooseProducts[productIndex].productCode === 'GFRS_A0003' ||
|
||
this.chooseProducts[productIndex].productCode === 'GFRS_A0009' ||
|
||
this.chooseProducts[productIndex].productCode === 'GFRS_A0014' ||
|
||
this.chooseProducts[productIndex].productCode === 'GFRS_A0013' ||
|
||
this.chooseProducts[productIndex].productCode === 'GFRS_A0010'
|
||
) {
|
||
setTimeout(() => {
|
||
this.getTrial()
|
||
}, 500);
|
||
return
|
||
}
|
||
let currentEle = this.chooseProducts[productIndex].calFactorLst[calFactorIndex].rules[dutyItemIndex]
|
||
let showHint = this.chooseProducts[productIndex].hint
|
||
if (value < min || value > max) {
|
||
this.$toast(showHint)
|
||
} else {
|
||
if ((Number(value) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
|
||
Dialog.alert({
|
||
message: showHint
|
||
}).then(() => {
|
||
currentEle.defaultDutyAmt = currentEle.minDutyAmt
|
||
})
|
||
|
||
// this.$toast(showHint)
|
||
} else {
|
||
// this.mainRiskInfluenceAddRisk()
|
||
// currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
|
||
// this.getTrial()
|
||
if (isChecked) {
|
||
;[this.productIndex, this.calFactorIndex] = [productIndex, calFactorIndex]
|
||
let currentEle = this.chooseProducts[productIndex].calFactorLst[calFactorIndex].rules
|
||
currentEle.forEach((item) => {
|
||
item.amt = Number(item.minDutyAmt) * Number(item.moneyUnit)
|
||
})
|
||
this.mainRiskInfluenceAddRisk()
|
||
this.getTrial()
|
||
} else {
|
||
;[this.productIndex, this.calFactorIndex] = [productIndex, calFactorIndex]
|
||
let currentEle = this.chooseProducts[productIndex].calFactorLst[calFactorIndex].rules
|
||
currentEle.forEach((item) => {
|
||
item.amt = Number(item.minDutyAmt) * Number(item.moneyUnit)
|
||
})
|
||
}
|
||
}
|
||
}
|
||
},
|
||
//弹框选择
|
||
toSelect(index, index1, columns) {
|
||
this.columns = []
|
||
;[this.popupShow, this.productIndex, this.calFactorIndex] = [true, index, index1]
|
||
let currentFactor = this.chooseProducts[this.productIndex].calFactorLst
|
||
let currentEle = currentFactor[this.calFactorIndex]
|
||
let sex = this.saleInsuredPersonInfo.sex //0男 1女
|
||
//性别男女,养老保险金领取年龄不一致
|
||
if (currentEle.code == 'pensionAge') {
|
||
columns.forEach((item) => {
|
||
if(item.sex == sex){
|
||
this.columns.push(item)
|
||
}
|
||
})
|
||
}else{
|
||
this.columns = columns
|
||
}
|
||
},
|
||
//取消picker
|
||
onCancel() {
|
||
this.columns = []
|
||
this.popupShow = false
|
||
},
|
||
//确认选择字段
|
||
async onConfirm(value) {
|
||
this.columns = []
|
||
this.popupShow = false
|
||
// let productCode = this.chooseProducts[this.productIndex].productCode
|
||
let currentFactor = this.chooseProducts[this.productIndex].calFactorLst
|
||
let currentEle = currentFactor[this.calFactorIndex]
|
||
// let sex = this.saleInsuredPersonInfo.sex //0男 1女
|
||
|
||
// //特殊设置:如果需要填写的保费/保额校验规则跟缴费期间挂钩,当改变缴费期间时,将输入框的值恢复默认值1
|
||
// if (currentEle.code == 'payEndYear' && this.isTrial == '0') {
|
||
// currentEle['columns'].forEach((item, index) => {
|
||
// if (item.value == value.value) {
|
||
// this.payEndYearColumnsIndex = index
|
||
// }
|
||
// })
|
||
// this.defalutAmt = 1
|
||
// }
|
||
//中介渠道,交费期间为一次性交清时,附加险GFRS_A0007,GFRS_A0009,GFRS_A0010去掉后,附加险list就为空--隐藏’附‘icon
|
||
if (currentEle.code == 'payEndYear' && value.value == '1000') {
|
||
this.isEnterAddtionRiskListFunc()
|
||
//交费期间为一次性交清时,清空豁免险GFRS_A0007,GFRS_A0009,GFRS_A0010,并更新localStorage
|
||
this.isClearAddtionRiskListFunc()
|
||
} else if (this.chooseProducts[this.productIndex].mainRiskCode == 'GFRS_M0046') {
|
||
if (this.saleInsuredPersonInfo.relationToAppnt == 1) {
|
||
this.isEnterAddtionRiskListFunc()
|
||
}
|
||
} else {
|
||
this.isEnterAddtionRisk = true
|
||
}
|
||
|
||
if (currentEle.showContent != value.text) {
|
||
//通用规则校验
|
||
if (await this.payExceedInsured(currentEle, currentFactor, value.value)) {
|
||
this.popupShow = false
|
||
return false
|
||
}
|
||
if (currentEle.code == 'payEndYear' && await this.ageInfluencePayEndYear(value.value, currentEle)) {
|
||
this.popupShow = false
|
||
return false
|
||
}
|
||
if (currentEle.code == 'insuYear' && await this.ageInfluenceInsuYear(value.value, currentEle)) {
|
||
this.popupShow = false
|
||
return false
|
||
}
|
||
|
||
//特殊设置:如果需要填写的保费/保额校验规则跟缴费期间挂钩,当改变缴费期间时,将输入框的值恢复默认值1
|
||
//国富人寿富贵年年终身寿险和国富人寿鑫享年年终身寿险(B款),一次性交清, 选择5,10,15,20 年交时, 保费试算有问题,所有调一下执行顺序
|
||
if (currentEle.code == 'payEndYear' && this.isTrial == '0') {
|
||
currentEle['columns'].forEach((item, index) => {
|
||
if (item.value == value.value) {
|
||
this.payEndYearColumnsIndex = index
|
||
}
|
||
})
|
||
this.defalutAmt = 1
|
||
}
|
||
// if(this.ruleExpression[productCode]){
|
||
// this.errorMsg = []
|
||
// this.ruleExpression[productCode].eventList.forEach(item => {
|
||
// this.$emit(item,currentFactor,currentEle.code,value);
|
||
// })
|
||
// if(this.errorMsg.length > 0){
|
||
// this.$toast(this.errorMsg[0]);
|
||
// this.popupShow = false
|
||
// return false
|
||
// }
|
||
// }
|
||
let productCode = this.chooseProducts[this.productIndex].productCode
|
||
if (this.ruleExpression[productCode]) {
|
||
this.errorMsg = []
|
||
let currentFactor = this.chooseProducts[this.productIndex].calFactorLst
|
||
let currentEle = currentFactor[this.calFactorIndex]
|
||
this.ruleExpression[productCode].eventList.forEach((item) => {
|
||
this.$emit(item, currentFactor, currentEle.code, value)
|
||
})
|
||
if (this.errorMsg.length > 0) {
|
||
this.$toast(this.errorMsg[0])
|
||
this.errorMsg = []
|
||
this.popupShow = false
|
||
return false
|
||
}
|
||
}
|
||
|
||
// 后台配置 的 js函数 验证
|
||
// if(hasR){
|
||
// if(currentEle.code == 'payEndYear' || currentEle.code == 'insuYear'){
|
||
// this.payEndYear(currentEle.code,value.value,this.tmpInsuYear.insuYear + this.tmpInsuYear.insuYearFlag)
|
||
// }
|
||
// }
|
||
|
||
currentEle.showContent = value.text
|
||
let name = currentEle.code
|
||
currentEle[name] = value.value
|
||
if (currentEle.hasFlag) {
|
||
currentEle[name + 'Flag'] = value.flag
|
||
}
|
||
// this.hiddenPayEndYear(currentEle)
|
||
//特殊规则:设置豁免险
|
||
this.getTrial()
|
||
}
|
||
},
|
||
//交费期间为一次性交清时,清空豁免险GFRS_A0007,GFRS_A0009,GFRS_A0010,GFRS_A0012并更新localStorage
|
||
isClearAddtionRiskListFunc() {
|
||
let chooseProductsNew = []
|
||
this.chooseProducts.forEach((item01) => {
|
||
if (item01.productCode != 'GFRS_A0007' && item01.productCode != 'GFRS_A0009'&& item01.productCode != 'GFRS_A0010'&& item01.productCode != 'GFRS_A0012'&& item01.productCode != 'GFRS_A0013'&& item01.productCode != 'GFRS_A0014') {
|
||
chooseProductsNew.push(item01)
|
||
}
|
||
})
|
||
if (chooseProductsNew.length != this.chooseProducts.length) {
|
||
this.chooseProducts = chooseProductsNew
|
||
}
|
||
localStorage.chooseProducts = JSON.stringify(chooseProductsNew)
|
||
},
|
||
// 交通责任险复选框变化
|
||
changeChecked(productIndex, calFactorIndex, dutyItemIndex, dutyItem) {
|
||
//检测责任中是否有勾选责任
|
||
let isChecked = this.chooseProducts[productIndex].calFactorLst[calFactorIndex].rules.some((item) => {
|
||
return item.necess == true
|
||
})
|
||
if (!isChecked) {
|
||
this.chooseProducts[productIndex].calFactorLst[calFactorIndex].rules[dutyItemIndex]['necess'] =
|
||
!this.chooseProducts[productIndex].calFactorLst[calFactorIndex].rules[dutyItemIndex]['necess']
|
||
return false
|
||
}
|
||
//嘉和保多责任组合,选中、取消任意一款其他5款也跟着选中、取消
|
||
let validateRiskCode = this.chooseProducts[productIndex].productCode
|
||
if (validateRiskCode === 'GFRS_M0054'){
|
||
if(dutyItem.duty == '100022' || dutyItem.duty == '100023' || dutyItem.duty == '100024' || dutyItem.duty == '100025' || dutyItem.duty == '100026' || dutyItem.duty == '100027'){
|
||
this.chooseProducts[productIndex].calFactorLst[calFactorIndex].rules.map((i) => {
|
||
if(i.duty == '100022' || i.duty == '100023' || i.duty == '100024' || i.duty == '100025' || i.duty == '100026' || i.duty == '100027'){
|
||
i.necess = dutyItem.necess
|
||
}
|
||
})
|
||
}
|
||
}
|
||
if (validateRiskCode === 'GFRS_M0073'){
|
||
if(dutyItem.duty == '100035' || dutyItem.duty == '100036'){
|
||
this.chooseProducts[productIndex].calFactorLst[calFactorIndex].rules.map((i) => {
|
||
if(i.duty == '100035' || i.duty == '100036'){
|
||
i.necess = dutyItem.necess
|
||
}
|
||
})
|
||
}
|
||
if(dutyItem.duty == '100037' || dutyItem.duty == '100038' || dutyItem.duty == '100039' || dutyItem.duty == '100040' || dutyItem.duty == '100041'){
|
||
this.chooseProducts[productIndex].calFactorLst[calFactorIndex].rules.map((i) => {
|
||
if(i.duty == '100037' || i.duty == '100038' || i.duty == '100039' || i.duty == '100040' || i.duty == '100041'){
|
||
i.necess = dutyItem.necess
|
||
}
|
||
})
|
||
}
|
||
}
|
||
if (validateRiskCode === 'GFRS_M0077'){
|
||
if(dutyItem.duty == '311507' && dutyItem.necess){
|
||
this.chooseProducts.forEach(item => {
|
||
item.calFactorLst.map((i) => {
|
||
if (i.code == 'dutyGroup') {
|
||
if(i.rules && i.rules.length != 0) {
|
||
i.rules.forEach(ii=>{
|
||
if(ii.duty != '311507' && ii.necess){
|
||
dutyItem.defaultDutyAmt = ii.defaultDutyAmt
|
||
}
|
||
})
|
||
}
|
||
}
|
||
})
|
||
})
|
||
}
|
||
}
|
||
this.valiAndSend(dutyItem, productIndex)
|
||
},
|
||
valiAndSend(dutyItem, productIndex) {
|
||
//验证责任
|
||
let validateRiskCode = this.chooseProducts[productIndex].productCode
|
||
let showHint = this.chooseProducts[productIndex].hint
|
||
let inputValue = dutyItem.defaultDutyAmt,
|
||
duty = dutyItem.duty
|
||
if (validateRiskCode === 'GFRS_M0016' && !this.valiDuty(inputValue, duty)) {
|
||
//验证不通过
|
||
return
|
||
}else if (validateRiskCode === 'GFRS_M0070' && !this.valiDuty(inputValue, duty)) {
|
||
//验证不通过
|
||
return
|
||
} else if (validateRiskCode === 'GFRS_A0004' && !this.valiA0004Duty(inputValue, showHint, dutyItem)) {
|
||
//验证不通过 险种为GFRS_A0004 责任编码为320205
|
||
return
|
||
} else if (validateRiskCode === 'GFRS_A0008' && !this.valiA0008Duty(inputValue, showHint, dutyItem)) {
|
||
//验证不通过 险种为GFRS_A0008 责任编码为320404
|
||
return
|
||
} else {
|
||
this.mainRiskInfluenceAddRisk()
|
||
this.getTrial()
|
||
}
|
||
},
|
||
// 计步器聚焦
|
||
focusStep() {
|
||
this.nextStepFlag = true
|
||
},
|
||
blurStep(dutyItem, productIndex, productCode) {
|
||
this.nextStepFlag = false
|
||
//失去焦点时做验证
|
||
if (dutyItem.necess) {
|
||
//勾选时才做验证
|
||
this.valiAndSend(dutyItem, productIndex)
|
||
}
|
||
if(productCode == 'GFRS_M0077'){
|
||
this.chooseProducts.forEach(item => {
|
||
if (item.mainRiskCode == 'GFRS_M0077') {
|
||
item.calFactorLst.map((i) => {
|
||
if (i.code == 'dutyGroup') {
|
||
if(i.rules && i.rules.length != 0) {
|
||
i.rules.forEach(ii=>{
|
||
if(ii.duty == '311507' && ii.necess){
|
||
ii.defaultDutyAmt = dutyItem.defaultDutyAmt
|
||
}
|
||
})
|
||
}
|
||
}
|
||
})
|
||
}
|
||
})
|
||
}
|
||
},
|
||
//险种GFRS_M0016\GFRS_M0070的责任的验证规则
|
||
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
|
||
}
|
||
}else if(this.mainRiskCode === 'GFRS_M0070'){
|
||
value *= 10000
|
||
const rule = dutdutyGFRS_M0070RulesyRules[duty]
|
||
const mutiple = rule.mutiple || DUTY_DEFAULT_MIN
|
||
const min = rule.min || DUTY_DEFAULT_MIN
|
||
console.log(rule.min,'rule.min')
|
||
if (!value || value < min || value % mutiple !== 0) {
|
||
this.$toast(rule.msg)
|
||
this.nextStepFlag = true
|
||
return false
|
||
} else {
|
||
this.nextStepFlag = false
|
||
return true
|
||
}
|
||
}
|
||
},
|
||
//险种 GFRS_A0004 险种验证规则
|
||
valiA0004Duty(value, showHint, currentEle) {
|
||
/* if (!(currentEle.necess == true)) {
|
||
this.nextStepFlag = false
|
||
return true
|
||
}*/
|
||
// 验证其他 最小50 其他为50 10 倍数
|
||
if (currentEle.duty == '320206' || currentEle.duty == '320207') {
|
||
let numberValue = Number(value) * 10000
|
||
if (numberValue % 10 != 0 || numberValue < 50) {
|
||
this.$toast(dutyGFRS_A0004Rules[currentEle.duty].msg)
|
||
this.nextStepFlag = true
|
||
return false
|
||
}
|
||
}
|
||
|
||
// 保额只能为5000 10000 15000 200000
|
||
if (currentEle.duty == '320205') {
|
||
if (this.mainRiskCode === dutyGFRS_A0004Rules[currentEle.duty]['mainRisk']) {
|
||
if (!(value == '0.5' || value == '1')) {
|
||
this.$toast(dutyGFRS_A0004Rules[currentEle.duty].msg_2)
|
||
this.nextStepFlag = true
|
||
return false
|
||
} else if (value - 0 > 1) {
|
||
this.$toast(dutyGFRS_A0004Rules[currentEle.duty].msg_1)
|
||
this.nextStepFlag = true
|
||
return false
|
||
}
|
||
} else {
|
||
if (!(value == '0.5' || value == '1' || value == '1.5' || value == '2')) {
|
||
this.$toast(dutyGFRS_A0004Rules[currentEle.duty].msg)
|
||
this.nextStepFlag = true
|
||
return false
|
||
}
|
||
}
|
||
|
||
this.nextStepFlag = false
|
||
return true
|
||
}
|
||
this.nextStepFlag = false
|
||
return true
|
||
},
|
||
//险种 GFRS_A0008 险种验证规则
|
||
valiA0008Duty(value, showHint, currentEle) {
|
||
/* if (!(currentEle.necess == true)) {
|
||
this.nextStepFlag = false
|
||
return true
|
||
}*/
|
||
// 验证其他 最小50 其他为50 10 倍数
|
||
if (currentEle.duty == '320405' || currentEle.duty == '320406') {
|
||
let numberValue = Number(value) * 10000
|
||
if (numberValue % 10 != 0 || numberValue < 50) {
|
||
this.$toast(dutyGFRS_A0008Rules[currentEle.duty].msg)
|
||
this.nextStepFlag = true
|
||
return false
|
||
}
|
||
}
|
||
|
||
// 保额只能为5000 10000 15000 200000
|
||
if (currentEle.duty == '320404') {
|
||
if (
|
||
this.mainRiskCode === dutyGFRS_A0008Rules[currentEle.duty]['mainRisk'] ||
|
||
this.mainRiskCode === dutyGFRS_A0008Rules[currentEle.duty]['otmainRisk'] ||
|
||
this.mainRiskCode === dutyGFRS_A0008Rules[currentEle.duty]['mainRisk2'] ||
|
||
this.mainRiskCode === dutyGFRS_A0008Rules[currentEle.duty]['otmainRisk2']
|
||
) {
|
||
if (!(value == '0.5' || value == '1')) {
|
||
this.$toast(dutyGFRS_A0008Rules[currentEle.duty].msg_2)
|
||
this.nextStepFlag = true
|
||
return false
|
||
} else if (value - 0 > 1) {
|
||
this.$toast(dutyGFRS_A0008Rules[currentEle.duty].msg_1)
|
||
this.nextStepFlag = true
|
||
return false
|
||
}
|
||
} else {
|
||
if (!(value == '0.5' || value == '1' || value == '1.5' || value == '2')) {
|
||
this.$toast(dutyGFRS_A0008Rules[currentEle.duty].msg)
|
||
this.nextStepFlag = true
|
||
return false
|
||
}
|
||
}
|
||
|
||
this.nextStepFlag = false
|
||
return true
|
||
}
|
||
this.nextStepFlag = false
|
||
return true
|
||
},
|
||
/********start 通用规则、特殊规则处理 start******/
|
||
//通用规则1:交费方式为一次交情,无交费期限
|
||
// hiddenPayEndYear(currentEle) {
|
||
// if (currentEle.code == 'payIntv') {
|
||
// if (this.chooseProducts[0].productCode === 'GFRS_M0015' && this.chooseProducts[this.productIndex].productCode === 'GFRS_A0006') {
|
||
// return
|
||
// }
|
||
// this.chooseProducts[this.productIndex]['isHidden'] = currentEle.payIntv == '0' ? true : false
|
||
// }
|
||
// },
|
||
//通用规则2:交费期限不能超过保险期间
|
||
payExceedInsured(currentEle, currentFactor, currentVale) {
|
||
let payEndYearVal, insuYearVal
|
||
if (currentEle.code == 'payEndYear') {
|
||
payEndYearVal = Number(currentVale)
|
||
insuYearVal = this.getPayEndYearOrInsuYear('insuYear', currentFactor)
|
||
}
|
||
if (currentEle.code == 'insuYear') {
|
||
insuYearVal = Number(currentVale)
|
||
payEndYearVal = this.getPayEndYearOrInsuYear('payEndYear', currentFactor)
|
||
}
|
||
//交费期限为一次性交清时,val为1000,直接跳过此规则
|
||
if (payEndYearVal != 1000) {
|
||
if (payEndYearVal > insuYearVal) {
|
||
this.$toast('交费期间不能超过保险期间')
|
||
return true
|
||
} else {
|
||
return false
|
||
}
|
||
} else {
|
||
return false
|
||
}
|
||
},
|
||
//中介渠道,交费期间为一次性交清时,附加险GFRS_A0007,GFRS_A0009,GFRS_A0010,GFRS_A0012去掉后,附加险list就为空--隐藏’附‘icon
|
||
isEnterAddtionRiskListFunc() {
|
||
let addtionRiskLst = JSON.parse(localStorage.addtionRiskLst)
|
||
if (addtionRiskLst) {
|
||
let list = []
|
||
addtionRiskLst.forEach((item, index) => {
|
||
if (item.productCode != 'GFRS_A0007' && item.productCode != 'GFRS_A0009' && item.productCode != 'GFRS_A0010'&& item.productCode != 'GFRS_A0012'&& item.productCode != 'GFRS_A0013'&& item.productCode != 'GFRS_A0014') {
|
||
list.push(item)
|
||
}
|
||
})
|
||
if (list.length) {
|
||
this.isEnterAddtionRisk = true
|
||
} else {
|
||
this.isEnterAddtionRisk = false
|
||
}
|
||
}
|
||
},
|
||
getPayEndYearOrInsuYear(flag, currentFactor) {
|
||
let returnVal
|
||
currentFactor.forEach((item) => {
|
||
if (item.code == flag) {
|
||
returnVal = item[flag]
|
||
}
|
||
})
|
||
return Number(returnVal)
|
||
},
|
||
//特殊规则1、交费期间跟年龄的关系
|
||
ageInfluencePayEndYear(value, currentEle) {
|
||
let age = Number(this.saleInsuredPersonInfo.insuredAge)
|
||
for (let i = 0; i < currentEle.rules.length; i++) {
|
||
if (currentEle.rules[i].payEndYear == value && age > currentEle.rules[i].maxAge) {
|
||
this.$toast('被保险人年龄不适合该交费期间!')
|
||
return true
|
||
}
|
||
if (
|
||
currentEle.rules[i].payEndYear == value &&
|
||
currentEle.rules[i].payEndYearFlag == 'A' &&
|
||
(age < currentEle.rules[i].minAge || age > currentEle.rules[i].maxAge)
|
||
) {
|
||
this.$toast('被保险人年龄不适合该交费期间!')
|
||
return true
|
||
}
|
||
}
|
||
return false
|
||
},
|
||
//年龄对保险期间的影响
|
||
ageInfluenceInsuYear(value, currentEle) {
|
||
let age = Number(this.saleInsuredPersonInfo.insuredAge)
|
||
for (let i = 0; i < currentEle.rules.length; i++) {
|
||
if (currentEle.rules[i].insuYear == value && age > currentEle.rules[i].maxAge) {
|
||
this.$toast('被保险人年龄不适合该保险期间!')
|
||
return true
|
||
}
|
||
}
|
||
return false
|
||
},
|
||
//特殊规则2、主险对附加险的影响,主要是保额之间的影响 mainAddRelation:0-小于,1-大于,2-等于,3-小于等于,4-大于等于
|
||
mainRiskInfluenceAddRisk() {
|
||
if (this.productIndex == 0) {
|
||
this.chooseProducts.forEach((item, index) => {
|
||
if (this.influenceAddRiskCodes.includes(item.productCode)) {
|
||
let influences = this.getInfluencesItem(item.productCode)
|
||
let mainAddRelation = influences.amtInfluence[0].mainAddRelation
|
||
let amtTimes = influences.amtInfluence[0].amtTimes
|
||
let mainRiskAmt = this.getMainRiskAmt()
|
||
if (mainAddRelation == 3 && (amtTimes == 1 || amtTimes == 5)) {
|
||
this.setInputAddtionRiskMaxAmt(mainRiskAmt * amtTimes, index)
|
||
} else if (mainAddRelation == 3 && amtTimes == 0.2) {
|
||
this.setAddtionRiskMaxAmt(mainRiskAmt * amtTimes, index)
|
||
}
|
||
}
|
||
})
|
||
}
|
||
},
|
||
setAddtionRiskMaxAmt(mainRiskAmt, index) {
|
||
this.chooseProducts[index].calFactorLst.forEach((item) => {
|
||
if (item.code == 'amt' || item.code == 'planCode') {
|
||
let columnsValArr = []
|
||
item.columns.forEach((option) => {
|
||
columnsValArr.push(Number(option.amt))
|
||
if (Number(option.amt) > mainRiskAmt * 10000) {
|
||
option.disabled = true
|
||
} else {
|
||
option.disabled = false
|
||
}
|
||
})
|
||
//主险减,附加险变化,取最小
|
||
|
||
let currentAmt = this.getAmtByPlanCode(item.columns, item.planCode)
|
||
if (mainRiskAmt * 10000 < currentAmt) {
|
||
let minVal = columnsValArr.min()
|
||
item.columns.forEach((option) => {
|
||
if (option.amt == minVal) {
|
||
item.showContent = option.text
|
||
item.planCode = option.value
|
||
item.amt = option.amt
|
||
}
|
||
})
|
||
}
|
||
}
|
||
})
|
||
},
|
||
getAmtByPlanCode(columns, planCode) {
|
||
let amt = ''
|
||
columns.forEach((item) => {
|
||
if (item.value == planCode) {
|
||
amt = item.amt
|
||
}
|
||
})
|
||
return amt
|
||
},
|
||
setInputAddtionRiskMaxAmt(mainRiskAmt, index) {
|
||
this.chooseProducts[index].calFactorLst.forEach((item) => {
|
||
if (item.type == 1) {
|
||
item.maxAmt = Math.min(mainRiskAmt, item.oldMaxAmt)
|
||
//减保额份数
|
||
if (item.maxAmt < item.defaultValue) {
|
||
item.defaultValue = item.maxAmt
|
||
}
|
||
}
|
||
})
|
||
},
|
||
getMainRiskAmt() {
|
||
let mainRiskAmt
|
||
this.chooseProducts[0].calFactorLst.forEach((item) => {
|
||
if (item.type == 1) {
|
||
mainRiskAmt = item.defaultValue
|
||
}
|
||
})
|
||
return mainRiskAmt
|
||
},
|
||
getInfluencesItem(productCode) {
|
||
let currentInfluences
|
||
this.chooseProducts[0].influences.forEach((item) => {
|
||
if (item.productCode == productCode) {
|
||
currentInfluences = item
|
||
}
|
||
})
|
||
|
||
return currentInfluences
|
||
},
|
||
trialBeforeRule() {
|
||
let that = this
|
||
console.log('走试算前规则')
|
||
// 针对于国富人寿附加两全保险附加险(GFRS_A0011),缴费期间期间要等于主险的缴费期间
|
||
let mainRiskInfo = this.getMainRiskInfo()
|
||
this.chooseProducts.forEach((item) => {
|
||
if (item.productCode == 'GFRS_A0011') {
|
||
item.calFactorLst.map((item2) => {
|
||
if (item2.code == 'payEndYear') {
|
||
item2.hasFlag = '1'
|
||
item2.payEndYearFlag = 'Y'
|
||
item2.payEndYear = Number(mainRiskInfo.payEndYear.payEndYear)
|
||
item2.showContent = item2.payEndYear + '年交'
|
||
}else if (item2.code == 'amt') {
|
||
// GFRS_A0011-附加两全 属于非豁免险 但附加两全保额=主险年交保费+其他不带豁免责任的长期期交附加险年交保费
|
||
let trialList = JSON.parse(localStorage.trialList)
|
||
item2.amt = trialList[0].prem
|
||
item2.defaultValue = trialList[0].prem
|
||
item2.moneyUnit = 1
|
||
item2.suffix = '元'
|
||
}
|
||
})
|
||
}
|
||
})
|
||
localStorage.chooseProducts = JSON.stringify(this.chooseProducts)
|
||
// window.localStorage.setItem('chooseProducts',JSON.stringify( this.chooseProducts))
|
||
if(this.chooseProducts[0].productCode == 'GFRS_M0035' || this.chooseProducts[0].productCode == 'GFRS_M0044' || this.chooseProducts[0].productCode == 'GFRS_M0060' || this.chooseProducts[0].productCode == 'GFRS_M0040'|| this.chooseProducts[0].productCode == 'GFRS_M0046'){
|
||
if (this.trialList.length) {
|
||
let showPrem //计算后的保费
|
||
//(被保险人)国富人寿附加豁免保险费重大疾病保险(B款)GFRS_A0010
|
||
//(投保人)国富人寿附加豁免保险费重大疾病保险(B款) GFRS_A0009
|
||
//国富人寿附加两全保险条款 GFRS_A0011
|
||
//只有在搭配附加两全时,才能搭配被保险人附加豁免重疾B;
|
||
//获取两全险的保费
|
||
let showPrem001
|
||
this.trialList.forEach((item, index) => {
|
||
if (item.productCode == 'GFRS_A0011') {
|
||
showPrem001 = item.showPrem //获取两全险的保费
|
||
}
|
||
})
|
||
this.chooseProducts.forEach((item, index) => {
|
||
if (item.productCode == 'GFRS_A0010' || item.productCode == 'GFRS_A0009' || item.productCode == 'GFRS_A0013'|| item.productCode == 'GFRS_A0014') {
|
||
//(投保人)国富人寿附加豁免保险费重大疾病保险(B款)
|
||
// 投被不同人:投保人豁免险单独搭配主险时,投保人豁免险,豁免主险保费,当投保人豁免险加两全(有长险附加险时),豁免主险保费加两全保费
|
||
if (item.productCode == 'GFRS_A0009' || item.productCode == 'GFRS_A0013') {
|
||
if (this.saleInsuredPersonInfo.relationToAppnt != 1) {
|
||
//不同人
|
||
if (showPrem001) {
|
||
//加两全时
|
||
showPrem = Number(showPrem001) + Number(that.trialList[0].showPrem)
|
||
} else {
|
||
showPrem = Number(that.trialList[0].showPrem)
|
||
}
|
||
}
|
||
item.calFactorLst.map((item2) => {
|
||
if (item2.code == 'dutyGroup') {
|
||
item2.rules.map((item3) => {
|
||
item3.defaultDutyAmt = (showPrem / 10000).toFixed(6)
|
||
})
|
||
}
|
||
})
|
||
} else if (item.productCode == 'GFRS_A0010' || item.productCode == 'GFRS_A0014') {
|
||
//(被保险人)国富人寿附加豁免保险费重大疾病保险(B款)GFRS_A0010
|
||
//投被同人,不同人:被保人豁免险搭配两全(有长险附加险时)时,可选责任为必选,豁免两全保费
|
||
if (showPrem001) {
|
||
showPrem = Number(showPrem001)
|
||
}else{
|
||
showPrem = Number(that.trialList[0].showPrem)
|
||
}
|
||
item.calFactorLst.map((item2) => {
|
||
if (item2.code == 'dutyGroup') {
|
||
item2.rules.map((item3) => {
|
||
item3.defaultDutyAmt = (showPrem / 10000).toFixed(6)
|
||
item3.defaultValue = '0'
|
||
item3.necess = true
|
||
})
|
||
}
|
||
})
|
||
}
|
||
}
|
||
})
|
||
}
|
||
}
|
||
},
|
||
//特殊规则3、设置豁免险
|
||
setRemitRisk() {
|
||
// 世纪无忧重疾(GFRS_M0046)交费至60/70周岁时,不可附加两全险(GFRS_A0011)
|
||
let mainRiskInfo = this.getMainRiskInfo()
|
||
let mainRiskPayIntv = mainRiskInfo.payIntv.payIntv
|
||
let mainRiskPayEndYearFlag = mainRiskInfo.payEndYear.payEndYearFlag
|
||
if (mainRiskPayEndYearFlag == 'A' && this.chooseProducts[0].mainRiskCode == 'GFRS_M0046') {
|
||
//删除附加两全险
|
||
for (let i = 0; i < this.chooseProducts.length; i++) {
|
||
if (this.chooseProducts[i].productCode == 'GFRS_A0011') {
|
||
this.chooseProducts.splice(i, 1)
|
||
i--
|
||
}
|
||
}
|
||
}
|
||
|
||
//1、一次性交清和交费期间单位为A时,删除豁免险
|
||
// let mainRiskInfo = this.getMainRiskInfo()
|
||
// let mainRiskPayIntv = mainRiskInfo.payIntv.payIntv
|
||
// let mainRiskPayEndYearFlag = mainRiskInfo.payEndYear.payEndYearFlag
|
||
if (mainRiskPayIntv == 0 || mainRiskPayEndYearFlag == 'A') {
|
||
//删除已选或互斥险种
|
||
for (let i = 0; i < this.chooseProducts.length; i++) {
|
||
if (this.chooseProducts[i].isRemit == 0) {
|
||
this.chooseProducts.splice(i, 1)
|
||
i--
|
||
}
|
||
}
|
||
}
|
||
|
||
//2、豁免险跟主险联动,豁免险缴费期间和保险期间同主险的缴费期间
|
||
let remitIndex = this.getRemitIndex()
|
||
//if (!remitIndex) return
|
||
for (let itemRemitIndex of remitIndex) {
|
||
this.chooseProducts[itemRemitIndex].calFactorLst.forEach((item) => {
|
||
if (item.code == 'payIntv') {
|
||
for (let key in mainRiskInfo.payIntv) {
|
||
item[key] = mainRiskInfo.payIntv[key]
|
||
}
|
||
}
|
||
if (item.code == 'payEndYear') {
|
||
item.hasFlag = '1'
|
||
item.payEndYearFlag = 'Y'
|
||
item.payEndYear = Number(mainRiskInfo.payEndYear.payEndYear)
|
||
item.showContent = item.payEndYear + '年交'
|
||
}
|
||
if (item.code == 'insuYear') {
|
||
item.hasFlag = '1'
|
||
item.insuYearFlag = 'Y'
|
||
item.insuYear = Number(mainRiskInfo.payEndYear.payEndYear)
|
||
item.showContent = item.insuYear + '年'
|
||
}
|
||
if (item.code == 'amt') {
|
||
let trialList = JSON.parse(localStorage.trialList)
|
||
item.amt = trialList[0].prem
|
||
item.defaultValue = trialList[0].prem
|
||
item.moneyUnit = 1
|
||
item.suffix = '元'
|
||
}
|
||
if (this.chooseProducts[itemRemitIndex].productCode == 'GFRS_A0003' || this.chooseProducts[itemRemitIndex].productCode == 'GFRS_A0009'|| this.chooseProducts[itemRemitIndex].productCode == 'GFRS_A0010'|| this.chooseProducts[itemRemitIndex].productCode == 'GFRS_A0013'|| this.chooseProducts[itemRemitIndex].productCode == 'GFRS_A0014') {
|
||
//此附加险的缴费期间=主险缴费期间;保险期间=主险保险期间
|
||
if (item.code == 'insuYear') {
|
||
item.hasFlag = '1'
|
||
item.insuYearFlag = mainRiskInfo.insuYear.insuYearFlag
|
||
item.insuYear = Number(mainRiskInfo.insuYear.insuYear)
|
||
item.showContent = mainRiskInfo.insuYear.showContent
|
||
}
|
||
if (item.code == 'dutyGroup') {
|
||
item.rules.forEach((v) => {
|
||
try {
|
||
if (mainRiskInfo.inputPrem.displayAmount && mainRiskInfo.inputPrem.moneyUnit) {
|
||
v.amt = mainRiskInfo.inputPrem.displayAmount * mainRiskInfo.inputPrem.moneyUnit
|
||
} else {
|
||
// 解决这个问题--建议书添加 附加豁免保险费重大疾病保险 不展示险种保费
|
||
// inputPrem 这个里面的规则删除导致的
|
||
let payEndYearVal
|
||
this.chooseProducts.map((item) => {
|
||
item.calFactorLst.map((i) => {
|
||
if (i.code == 'payEndYear') {
|
||
payEndYearVal = i.showContent
|
||
}
|
||
})
|
||
})
|
||
this.chooseProducts[0].productTrialYearDTOS.forEach((item, index) => {
|
||
//因交费方式为一次性交清时,不会有豁免险,所以这里不判断一次性交清的情况
|
||
if (payEndYearVal == item.yearWay + '年交') {
|
||
v.amt = item.displayAmount * item.moneyUnit
|
||
}
|
||
})
|
||
}
|
||
} catch (e) {
|
||
let trialList = JSON.parse(localStorage.trialList)
|
||
v.amt = trialList[0].prem
|
||
// v.amt = mainRiskInfo.inputAmt.displayAmount * mainRiskInfo.inputAmt.moneyUnit
|
||
}
|
||
v.defaultDutyAmt = (Number(v.amt) / v.moneyUnit).toFixed(6)
|
||
// v.moneyUnit = 10000
|
||
// v.suffix = '万元'
|
||
})
|
||
}
|
||
}
|
||
//之所以catch是因为有些参数值不存在,导致报错,豁免险除(国富人寿附加投保人豁免保险费定期寿险(B款)保险条款 GFRS_A0007)试算拼参数时,amt保额都重置为null
|
||
if (this.chooseProducts[itemRemitIndex].productCode == 'GFRS_A0001' || this.chooseProducts[itemRemitIndex].productCode == 'GFRS_A0007') {
|
||
try {
|
||
if (mainRiskInfo.inputPrem.displayAmount && mainRiskInfo.inputPrem.moneyUnit) {
|
||
item.amt = mainRiskInfo.inputPrem.displayAmount * mainRiskInfo.inputPrem.moneyUnit
|
||
item.defaultValue = mainRiskInfo.inputPrem.displayAmount * mainRiskInfo.inputPrem.moneyUnit
|
||
} else {
|
||
// 解决这个问题--建议书添加 附加豁免保险费重大疾病保险 不展示险种保费
|
||
// inputPrem 这个里面的规则删除导致的
|
||
let payEndYearVal01
|
||
this.chooseProducts.map((item01) => {
|
||
item01.calFactorLst.map((i) => {
|
||
if (i.code == 'payEndYear') {
|
||
payEndYearVal01 = i.showContent
|
||
}
|
||
})
|
||
})
|
||
this.chooseProducts[0].productTrialYearDTOS.forEach((v, index) => {
|
||
//因交费方式为一次性交清时,不会有豁免险,所以这里不判断一次性交清的情况
|
||
if (payEndYearVal01 == v.yearWay + '年交') {
|
||
item.amt = v.displayAmount * v.moneyUnit
|
||
item.defaultValue = v.displayAmount * v.moneyUnit
|
||
}
|
||
})
|
||
}
|
||
} catch (e) {
|
||
let trialList = JSON.parse(localStorage.trialList)
|
||
item.defaultValue = trialList[0].prem
|
||
item.amt = trialList[0].prem
|
||
}
|
||
item.defaultDutyAmt = (Number(item.amt) / item.moneyUnit).toFixed(6)
|
||
|
||
// 国富人寿附加投保人豁免保险费定期寿险(B款)保险条款 GFRS_A0007
|
||
// 保额----豁免主险+附加两全的保费
|
||
// 国富人寿附加两全保险条款 GFRS_A0011
|
||
//重新再调一次试算,因保额为文本框没有change事件,所以保额变化后少一次调用试算,所以特此手动重新调用一次
|
||
let trialList = JSON.parse(localStorage.trialList)
|
||
let showPrem
|
||
trialList.forEach((item, index) => {
|
||
if (item.productCode == 'GFRS_A0011') {
|
||
showPrem = item.showPrem //获取两全险的保费
|
||
}
|
||
})
|
||
if (this.chooseProducts[itemRemitIndex].productCode == 'GFRS_A0007' && showPrem) {
|
||
item.amt = trialList[0].prem + showPrem
|
||
item.defaultValue = trialList[0].prem + showPrem
|
||
}
|
||
}
|
||
})
|
||
}
|
||
|
||
let product = this.chooseProducts.find((item) => {
|
||
return item.productCode === 'GFRS_A0006'
|
||
})
|
||
if (product && this.richChildrenFlag) {
|
||
product.calFactorLst[0].showContent = '月交'
|
||
product.calFactorLst[2].showContent = '月交'
|
||
product.calFactorLst[0].columns[0].text = '月交'
|
||
product.calFactorLst[2].columns[0].text = '月交'
|
||
let remitProduct = this.trialList.find((item) => {
|
||
return item.productCode === 'GFRS_A0006'
|
||
})
|
||
if (remitProduct) {
|
||
remitProduct.showPrem = '从万能账户中扣除'
|
||
remitProduct.prem = 0
|
||
remitProduct.payIntv = 1
|
||
}
|
||
}
|
||
// if(this.chooseProducts[0].productCode == 'GFRS_M0053' || this.chooseProducts[0].productCode == 'GFRS_M0061'){
|
||
// if (this.trialList.length) {
|
||
// this.chooseProducts.forEach((item, index) => {
|
||
// // 国富人寿富桂金生养老年金保险(53)中介渠道鑫享金生养老年金保险(61),投保,被保险第二个责任默认不勾选,不可选
|
||
// if (item.productCode == 'GFRS_A0010' || item.productCode == 'GFRS_A0009'|| item.productCode == 'GFRS_A0013' || item.productCode == 'GFRS_A0014') {
|
||
// item.calFactorLst.map((item2) => {
|
||
// if (item2.code == 'dutyGroup') {
|
||
// item2.rules.map((item3) => {
|
||
// item3.defaultValue = '0'
|
||
// })
|
||
// }
|
||
// })
|
||
// }
|
||
// })
|
||
// }
|
||
// }
|
||
this.trialBeforeRule()
|
||
},
|
||
//获取当前产品编码下的索引值
|
||
getProductCodeIndex(productCode) {
|
||
let remitIndex = ''
|
||
this.chooseProducts.forEach((item, index) => {
|
||
if (item.productCode == productCode) {
|
||
remitIndex = index
|
||
}
|
||
})
|
||
return remitIndex
|
||
},
|
||
//获取当前产品编码下的整条数据
|
||
getProductCodeItem(productCode) {
|
||
let remitItem = {}
|
||
this.chooseProducts.forEach((item, index) => {
|
||
if (item.productCode == productCode) {
|
||
remitItem = item
|
||
}
|
||
})
|
||
return remitItem
|
||
},
|
||
getRemitIndex() {
|
||
let remitIndex = []
|
||
this.chooseProducts.forEach((item, index) => {
|
||
if (item.isRemit == 0) {
|
||
remitIndex.push(index)
|
||
}
|
||
})
|
||
return remitIndex
|
||
},
|
||
getMainRiskInfo() {
|
||
let mainRiskInfo = {}
|
||
this.chooseProducts[0].calFactorLst.forEach((item) => {
|
||
mainRiskInfo[item.code] = item
|
||
})
|
||
return mainRiskInfo
|
||
},
|
||
|
||
/********end 通用规则、特殊规则处理 end******/
|
||
|
||
//查看文档列表
|
||
seeDocument(index) {
|
||
this.show = true
|
||
this.policyInfo = this.chooseProducts[index].documentDTOS
|
||
},
|
||
//打开文档
|
||
openDocument(item) {
|
||
let pdfUrl = encodeURIComponent(item.url)
|
||
this.$jump({
|
||
flag: 'h5',
|
||
extra: {
|
||
title: item.name,
|
||
// url: 'http://47.96.143.111/pdfjs/web/viewer.html?file=' + item.url //测试代码
|
||
url: location.origin + '/pdfjs/web/viewer.html?file=' + pdfUrl
|
||
}
|
||
})
|
||
// localStorage.documentInfo = JSON.stringify({ documentUrl: item.url, documentType: item.type })
|
||
// this.$jump({
|
||
// flag: 'h5',
|
||
// extra: {
|
||
// url: location.origin + '/#/product/productDocument'
|
||
// },
|
||
// routerInfo: {
|
||
// path: `/product/productDocument`
|
||
// }
|
||
// })
|
||
},
|
||
//删除所选产品
|
||
deleteRisk(index,data) {
|
||
if (this.chooseProducts[index].isMainRisk == 0 && this.$route.query.insuanceIdInfo) {
|
||
this.$toast('编辑状态不可删除主险')
|
||
} else {
|
||
Dialog.confirm({
|
||
title: '提示',
|
||
message: '确认删除该险种?',
|
||
cancelButtonColor: '#E9332E',
|
||
confirmButtonColor: '#FFFFFF',
|
||
className: 'dialog-delete'
|
||
})
|
||
.then(() => {
|
||
let currentGFRS_A0011
|
||
if (this.chooseProducts[index].isMainRisk == 0) {
|
||
this.chooseProducts = []
|
||
localStorage.chooseProducts = JSON.stringify(this.chooseProducts)
|
||
let thismyurl = ''
|
||
if (this.$route.query.orderNo) {
|
||
thismyurl = '/?orderNo=' + this.$route.query.orderNo
|
||
} else if (this.$route.query.proposalOrderNo) {
|
||
thismyurl = '?proposalOrderNo=' + this.$route.query.proposalOrderNo
|
||
}
|
||
this.$jump({
|
||
flag: 'goBack',
|
||
extra: {
|
||
refresh: '1',
|
||
index: '-2'
|
||
},
|
||
routerInfo: {
|
||
type: 2,
|
||
index: -2,
|
||
path: '/common/selectedProduct' + thismyurl
|
||
}
|
||
})
|
||
localStorage.trialList = ''
|
||
} else {
|
||
currentGFRS_A0011 = this.chooseProducts[index].productCode == 'GFRS_A0011' ? true : false //当前删除的是否是两全
|
||
this.chooseProducts.splice(index, 1)
|
||
}
|
||
if (
|
||
this.chooseProducts[0].mainRiskCode == 'GFRS_M0051' ||
|
||
this.chooseProducts[0].mainRiskCode == 'GFRS_M0044' ||
|
||
this.chooseProducts[0].mainRiskCode == 'GFRS_M0060' ||
|
||
this.chooseProducts[0].mainRiskCode == 'GFRS_M0035' ||
|
||
this.chooseProducts[0].mainRiskCode == 'GFRS_M0038' ||
|
||
this.chooseProducts[0].mainRiskCode == 'GFRS_M0040'
|
||
) {
|
||
if (currentGFRS_A0011 && (JSON.stringify(this.chooseProducts).includes('GFRS_A0010') || JSON.stringify(this.chooseProducts).includes('GFRS_A0014'))) {
|
||
this.chooseProducts.forEach((item, index01) => {
|
||
if (item.productCode == 'GFRS_A0010' || item.productCode == 'GFRS_A0014') {
|
||
this.chooseProducts.splice(index01, 1)
|
||
}
|
||
})
|
||
// Dialog.alert({
|
||
// title: '提示',
|
||
// message: '当前未投保其他长险附加险,将删除该险种重新选择附加险!'
|
||
// }).then(() => {
|
||
// })
|
||
}
|
||
|
||
|
||
// let risks = this.chooseProducts
|
||
// let longRisks = []
|
||
// //拿到长险附加险数组
|
||
// for (let i = 1; i < risks.length; i++) {
|
||
// for (let j = 0; j < risks[i].calFactorLst.length; j++) {
|
||
// if (risks[i].calFactorLst[j].code === 'insuYear') {
|
||
// if (
|
||
// ((risks[i].calFactorLst[j].insuYearFlag == 'Y' && risks[i].calFactorLst[j].insuYear > 1) || risks[i].calFactorLst[j].insuYearFlag == 'A') &&
|
||
// risks[i].productCode != 'GFRS_A0010'
|
||
// ) {
|
||
// longRisks.push(risks[i].productCode)
|
||
// }
|
||
// }
|
||
// }
|
||
// }
|
||
// if (
|
||
// (this.chooseProducts.length == 2 && this.chooseProducts[1].productCode == 'GFRS_A0010') ||
|
||
// (this.chooseProducts.length == 3 &&
|
||
// JSON.stringify(this.chooseProducts).includes('GFRS_A0010') &&
|
||
// JSON.stringify(this.chooseProducts).includes('GFRS_A0009')) ||
|
||
// (longRisks.length <= 0 && this.chooseProducts.length > 1)
|
||
// ) {
|
||
// Dialog.alert({
|
||
// title: '提示',
|
||
// message: '当前未投保其他长险附加险,将删除该险种重新选择附加险!'
|
||
// }).then(() => {
|
||
// this.chooseProducts.splice(1, 1)
|
||
// localStorage.chooseProducts = JSON.stringify(this.chooseProducts)
|
||
// this.getTrial()
|
||
// })
|
||
// // this.$toast('当前未投保其他长险附加险,请删除该险种重新选择附加险!')
|
||
// // this.nextStepFlag = true
|
||
// }
|
||
}
|
||
if (localStorage.oldAddRiskCodes && JSON.parse(localStorage.oldAddRiskCodes)) {
|
||
let thismyoldAddRiskCodes = JSON.parse(localStorage.oldAddRiskCodes)
|
||
thismyoldAddRiskCodes.forEach((item, index0) => {
|
||
if (item == data.productCode) {
|
||
thismyoldAddRiskCodes.splice(index0, 1)
|
||
}
|
||
})
|
||
localStorage.oldAddRiskCodes = JSON.stringify(thismyoldAddRiskCodes)
|
||
}
|
||
localStorage.chooseProducts = JSON.stringify(this.chooseProducts)
|
||
this.getTrial()
|
||
})
|
||
.catch(() => {
|
||
})
|
||
}
|
||
},
|
||
//试算
|
||
async getTrial() {
|
||
let that = this
|
||
this.nextStepFlag = true
|
||
this.$toast.clear()
|
||
this.$toast.loading({
|
||
message: '正在试算...',
|
||
forbidClick: true
|
||
})
|
||
await this.setRemitRisk()
|
||
let params = await this.getParams()
|
||
// 开门红产品试算增加标识,活动产品试算增加标识
|
||
if (this.activeType && this.isFrom != 'proposal') {
|
||
for (let product of params.trialInfos) {
|
||
product.isKmh = '1'
|
||
//GFRS-2552【需求】关于金掌桂投保流程增设指定生效日按钮的申请
|
||
product.cvaliDate = that.cvalidateStr
|
||
}
|
||
}
|
||
|
||
//国富人寿富桂金生养老年金保险
|
||
let age = this.saleInsuredPersonInfo.insuredAge
|
||
let sex = this.saleInsuredPersonInfo.sex //0男 1女
|
||
let trialFlag = true
|
||
params.trialInfos.forEach((item) => {
|
||
if (item.productCode == 'GFRS_A0011') {
|
||
if (item.insuYear == '60' && item.payEndYear == '30' && age > 30) {
|
||
this.nextStepFlag = true
|
||
this.$toast('被保险人年龄不适合该交费期间或保险期间!')
|
||
trialFlag = false
|
||
} else if (item.insuYear == '70' && item.payEndYear == '30' && age > 40) {
|
||
this.nextStepFlag = true
|
||
this.$toast('被保险人年龄不适合该交费期间或保险期间!')
|
||
trialFlag = false
|
||
} else if (
|
||
(item.insuYear == '80' && item.payEndYear == '15' && age > 55) ||
|
||
(item.insuYear == '80' && item.payEndYear == '19' && age > 50) ||
|
||
(item.insuYear == '80' && item.payEndYear == '20' && age > 50) ||
|
||
(item.insuYear == '80' && item.payEndYear == '30' && age > 40)
|
||
) {
|
||
this.nextStepFlag = true
|
||
this.$toast('被保险人年龄不适合该交费期间或保险期间!')
|
||
trialFlag = false
|
||
}
|
||
}
|
||
else if (item.productCode == 'GFRS_M0053') {
|
||
//国富人寿富桂金生养老年金保险
|
||
if(sex == '0'){
|
||
if(
|
||
(item.pensionAge == '60' && item.payEndYear == '30' && age > 30) ||
|
||
(item.pensionAge == '60' && item.payEndYear == '20' && age > 40) ||
|
||
(item.pensionAge == '60' && item.payEndYear == '15' && age > 45) ||
|
||
(item.pensionAge == '60' && item.payEndYear == '10' && age > 50)
|
||
) {
|
||
this.nextStepFlag = true
|
||
this.$toast('被保险人年龄不适合该交费期间!')
|
||
trialFlag = false
|
||
}else if(
|
||
(item.pensionAge == '65' && item.payEndYear == '30' && age > 35) ||
|
||
(item.pensionAge == '65' && item.payEndYear == '20' && age > 45) ||
|
||
(item.pensionAge == '65' && item.payEndYear == '15' && age > 50) ||
|
||
(item.pensionAge == '65' && item.payEndYear == '10' && age > 55)
|
||
){
|
||
this.nextStepFlag = true
|
||
this.$toast('被保险人年龄不适合该交费期间!')
|
||
trialFlag = false
|
||
}else if(
|
||
(item.pensionAge == '70' && item.payEndYear == '30' && age > 40) ||
|
||
(item.pensionAge == '70' && item.payEndYear == '20' && age > 50) ||
|
||
(item.pensionAge == '70' && item.payEndYear == '15' && age > 55)
|
||
){
|
||
this.nextStepFlag = true
|
||
this.$toast('被保险人年龄不适合该交费期间!')
|
||
trialFlag = false
|
||
}
|
||
}else{ //女
|
||
if(
|
||
(item.pensionAge == '55' && item.payEndYear == '30' && age > 25) ||
|
||
(item.pensionAge == '55' && item.payEndYear == '20' && age > 35) ||
|
||
(item.pensionAge == '55' && item.payEndYear == '15' && age > 40) ||
|
||
(item.pensionAge == '55' && item.payEndYear == '10' && age > 45)
|
||
) {
|
||
this.nextStepFlag = true
|
||
this.$toast('被保险人年龄不适合该交费期间!')
|
||
trialFlag = false
|
||
}else if(
|
||
(item.pensionAge == '60' && item.payEndYear == '30' && age > 30) ||
|
||
(item.pensionAge == '60' && item.payEndYear == '20' && age > 40) ||
|
||
(item.pensionAge == '60' && item.payEndYear == '15' && age > 45) ||
|
||
(item.pensionAge == '60' && item.payEndYear == '10' && age > 50)
|
||
){
|
||
this.nextStepFlag = true
|
||
this.$toast('被保险人年龄不适合该交费期间!')
|
||
trialFlag = false
|
||
}else if(
|
||
(item.pensionAge == '65' && item.payEndYear == '30' && age > 35) ||
|
||
(item.pensionAge == '65' && item.payEndYear == '20' && age > 45) ||
|
||
(item.pensionAge == '65' && item.payEndYear == '15' && age > 50) ||
|
||
(item.pensionAge == '65' && item.payEndYear == '10' && age > 55)
|
||
){
|
||
this.nextStepFlag = true
|
||
this.$toast('被保险人年龄不适合该交费期间!')
|
||
trialFlag = false
|
||
}
|
||
}
|
||
}
|
||
else if (item.productCode == 'GFRS_M0061') {
|
||
//中介渠道鑫享金生养老年金保险
|
||
if(sex == '0'){ //男
|
||
if(
|
||
(item.pensionAge == '60' && item.payEndYear == '20' && age > 40) ||
|
||
(item.pensionAge == '60' && item.payEndYear == '10' && age > 50) ||
|
||
(item.pensionAge == '60' && item.payEndYear == '5' && age > 55) ||
|
||
(item.pensionAge == '60' && item.payEndYear == '3' && age > 55)
|
||
) {
|
||
this.nextStepFlag = true
|
||
this.$toast('被保险人年龄不适合该交费期间!')
|
||
trialFlag = false
|
||
}else if(
|
||
(item.pensionAge == '65' && item.payEndYear == '20' && age > 45) ||
|
||
(item.pensionAge == '65' && item.payEndYear == '10' && age > 55) ||
|
||
(item.pensionAge == '65' && item.payEndYear == '5' && age > 60) ||
|
||
(item.pensionAge == '65' && item.payEndYear == '3' && age > 60)
|
||
){
|
||
this.nextStepFlag = true
|
||
this.$toast('被保险人年龄不适合该交费期间!')
|
||
trialFlag = false
|
||
}else if(
|
||
(item.pensionAge == '70' && item.payEndYear == '20' && age > 50) ||
|
||
(item.pensionAge == '70' && item.payEndYear == '10' && age > 60) ||
|
||
(item.pensionAge == '70' && item.payEndYear == '5' && age > 65) ||
|
||
(item.pensionAge == '70' && item.payEndYear == '3' && age > 65)
|
||
){
|
||
this.nextStepFlag = true
|
||
this.$toast('被保险人年龄不适合该交费期间!')
|
||
trialFlag = false
|
||
}
|
||
}else{ //女
|
||
if(
|
||
(item.pensionAge == '55' && item.payEndYear == '20' && age > 35) ||
|
||
(item.pensionAge == '55' && item.payEndYear == '10' && age > 45) ||
|
||
(item.pensionAge == '55' && item.payEndYear == '5' && age > 50) ||
|
||
(item.pensionAge == '55' && item.payEndYear == '3' && age > 50)
|
||
) {
|
||
this.nextStepFlag = true
|
||
this.$toast('被保险人年龄不适合该交费期间!')
|
||
trialFlag = false
|
||
}else if(
|
||
(item.pensionAge == '60' && item.payEndYear == '20' && age > 40) ||
|
||
(item.pensionAge == '60' && item.payEndYear == '10' && age > 50) ||
|
||
(item.pensionAge == '60' && item.payEndYear == '5' && age > 55) ||
|
||
(item.pensionAge == '60' && item.payEndYear == '3' && age > 55)
|
||
){
|
||
this.nextStepFlag = true
|
||
this.$toast('被保险人年龄不适合该交费期间!')
|
||
trialFlag = false
|
||
}else if(
|
||
(item.pensionAge == '65' && item.payEndYear == '20' && age > 45) ||
|
||
(item.pensionAge == '65' && item.payEndYear == '10' && age > 55) ||
|
||
(item.pensionAge == '65' && item.payEndYear == '5' && age > 60) ||
|
||
(item.pensionAge == '65' && item.payEndYear == '3' && age > 60)
|
||
){
|
||
this.nextStepFlag = true
|
||
this.$toast('被保险人年龄不适合该交费期间!')
|
||
trialFlag = false
|
||
}else if(
|
||
(item.pensionAge == '70' && item.payEndYear == '20' && age > 50) ||
|
||
(item.pensionAge == '70' && item.payEndYear == '10' && age > 60) ||
|
||
(item.pensionAge == '70' && item.payEndYear == '5' && age > 65) ||
|
||
(item.pensionAge == '70' && item.payEndYear == '3' && age > 65)
|
||
){
|
||
this.nextStepFlag = true
|
||
this.$toast('被保险人年龄不适合该交费期间!')
|
||
trialFlag = false
|
||
}
|
||
}
|
||
}
|
||
})
|
||
if (!trialFlag) {
|
||
return
|
||
}
|
||
|
||
let resultData = await trial(params)
|
||
|
||
//试算成功,信息返显
|
||
if (resultData.result == 0) {
|
||
if (resultData.flag === '1') {
|
||
this.richChildrenFlag = true
|
||
}
|
||
this.trialList = resultData.trialList
|
||
localStorage.trialList = JSON.stringify(resultData.trialList)
|
||
//设置豁免险保额
|
||
this.setRemitRisk()
|
||
this.nextStepFlag = false
|
||
} else {
|
||
this.nextStepFlag = true
|
||
this.$toast(resultData.resultMessage)
|
||
}
|
||
localStorage.chooseProducts = JSON.stringify(this.chooseProducts)
|
||
},
|
||
//获取试算参数
|
||
getParams() {
|
||
let params = {
|
||
trialInfos: []
|
||
}
|
||
this.chooseProducts.forEach((item) => {
|
||
let trialInfo = {}
|
||
// 【需求】鑫管家、金管家追加限额调整,thirdInsuraceNoStr关联保单号的值,在试算接口添加
|
||
if(this.policyNo){
|
||
trialInfo['thirdInsuraceNoStr'] = this.policyNo
|
||
}
|
||
item.calFactorLst.forEach((factor) => {
|
||
if (factor.type == 0) {
|
||
if (factor.hasFlag == '1') {
|
||
trialInfo[factor.code] = factor[factor.code]
|
||
trialInfo[factor.code + 'Flag'] = factor[factor.code + 'Flag']
|
||
// trialInfo[factor.payEndYear] = factor[factor.payEndYear]
|
||
} else {
|
||
trialInfo[factor.code] = factor[factor.code]
|
||
}
|
||
} else if (factor.type == 1) {
|
||
if (factor.code == 'inputPrem') {
|
||
trialInfo['prem'] =
|
||
this.isTrial == '0'
|
||
? Number(item.productTrialYearDTOS[this.payEndYearColumnsIndex].displayAmount) *
|
||
Number(item.productTrialYearDTOS[this.payEndYearColumnsIndex].moneyUnit)
|
||
: Number(factor.displayAmount) * Number(factor.moneyUnit)
|
||
} else {
|
||
if (item.isRemit == 0) {
|
||
if (item.productCode == 'GFRS_A0007') {
|
||
if (factor.code == 'amt') {
|
||
trialInfo['amt'] = factor.amt
|
||
}
|
||
} else {
|
||
trialInfo['amt'] = null
|
||
}
|
||
} else {
|
||
if(item.productCode == 'GFRS_A0011'){
|
||
// 设置附加两全保额为空 后台试算
|
||
// GFRS_A0011-附加两全 属于非豁免险 但附加两全保额=主险年交保费+其他不带豁免责任的长期期交附加险年交保费
|
||
trialInfo['amt'] = null
|
||
}else {
|
||
trialInfo['amt'] = Number(factor.displayAmount) * Number(factor.moneyUnit)
|
||
}
|
||
}
|
||
}
|
||
} else if (factor.type == 2) {
|
||
trialInfo.jobLevel = this.saleInsuredPersonInfo[factor.code]
|
||
} else if (factor.type == 3) {
|
||
let result = []
|
||
factor.rules.forEach((dutyItem) => {
|
||
if (dutyItem.necess) {
|
||
// trialInfo['amt'] = this.trialList[index].amt
|
||
result.push({
|
||
amt: (Number(dutyItem.defaultDutyAmt) * Number(dutyItem.moneyUnit)).toFixed(2),
|
||
dutyCode: dutyItem.duty,
|
||
dutyName: dutyItem.dutyName
|
||
})
|
||
}
|
||
})
|
||
trialInfo.duty = result
|
||
}
|
||
})
|
||
//针对八桂D产品 计算被保人重疾B附加险保额 ==其他长险附加险的保额
|
||
/*if ( this.chooseProducts[0].mainRiskCode == 'GFRS_M0051'||this.chooseProducts[0].mainRiskCode == 'GFRS_M0044'){
|
||
if(item.productCode == 'GFRS_A0010'){
|
||
let risks = JSON.parse(localStorage.chooseProducts);
|
||
let longRisks=[];
|
||
//拿到长险附加险数组
|
||
for (let i = 1; i < risks.length; i++) {
|
||
for(let j = 0; j < risks[i].calFactorLst.length; j++){
|
||
if (risks[i].calFactorLst[j].code === 'insuYear') {
|
||
if ((risks[i].calFactorLst[j].insuYearFlag == 'Y' && risks[i].calFactorLst[j].insuYear > 1) || risks[i].calFactorLst[j].insuYearFlag == 'A') {
|
||
longRisks.push(risks[i].productCode);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
let toTrial = 0
|
||
let trials = JSON.parse(localStorage.trialList)
|
||
trials.forEach(tr=>{
|
||
if(tr.isMainRisk=='1'&&tr.productCode!='GFRS_A0010'&&longRisks.includes(tr.productCode)){
|
||
toTrial+=Number(tr.prem);
|
||
}
|
||
})
|
||
trialInfo.duty.forEach(d=>{
|
||
d.amt=toTrial;
|
||
})
|
||
}
|
||
}*/
|
||
//通用规则1:交费方式为一次交情,无交费期限
|
||
if (trialInfo['payIntv'] == '0') {
|
||
trialInfo['payEndYear'] = '1000'
|
||
trialInfo['payEndYearFlag'] = 'Y'
|
||
// 福宝宝和万能险传A
|
||
if (
|
||
item.mainRiskCode != 'GFRS_M0006' &&
|
||
item.mainRiskCode != 'GFRS_M0017' &&
|
||
item.mainRiskCode != 'GFRS_M0003' &&
|
||
item.mainRiskCode != 'GFRS_M0013'
|
||
) {
|
||
trialInfo['insuYearFlag'] = 'Y'
|
||
}
|
||
//
|
||
if (item.mainRiskCode == 'GFRS_M0036') {
|
||
trialInfo['insuYearFlag'] = 'A'
|
||
}
|
||
}
|
||
//责任险参数构建
|
||
// if (trialInfo.duty) {
|
||
// trialInfo.duty = [{ dutyCode: trialInfo.duty }]
|
||
// }
|
||
//获取投被保生日、性别
|
||
let birthday, sex, occupationCode, occupationName, age
|
||
if (item.isRemit == '0' && item.remitType == '0') {
|
||
;[birthday, sex, occupationCode, occupationName, age] = [
|
||
this.saleInsuredInfo.birthday,
|
||
this.saleInsuredInfo.sex,
|
||
this.saleInsuredInfo.occupationCode,
|
||
this.saleInsuredInfo.occupationName,
|
||
this.saleInsuredPersonInfo.insuredAge
|
||
]
|
||
} else {
|
||
;[birthday, sex, occupationCode, occupationName, age] = [
|
||
this.saleInsuredPersonInfo.birthday,
|
||
this.saleInsuredPersonInfo.sex,
|
||
this.saleInsuredPersonInfo.occupationCode,
|
||
this.saleInsuredPersonInfo.occupationName,
|
||
this.saleInsuredPersonInfo.insuredAge
|
||
]
|
||
}
|
||
trialInfo = Object.assign(trialInfo, {
|
||
birthday,
|
||
sex,
|
||
occupationCode,
|
||
occupationName,
|
||
age,
|
||
platformType: 'app',
|
||
productCode: item.productCode,
|
||
medical: JSON.parse(this.$CacheUtils.getLocItem('saleInsuredPersonInfo')).medical,
|
||
isCrossChannel: this.isCrossChannel,
|
||
orderNo: this.$route.query.orderNo
|
||
})
|
||
params.trialInfos.push(trialInfo)
|
||
})
|
||
this.trialInfos = params.trialInfos
|
||
return params
|
||
},
|
||
|
||
//选择附加险
|
||
selectAddtionRisk() {
|
||
//存储附加险列表
|
||
let addRiskCodes = []
|
||
this.chooseProducts.forEach((item) => {
|
||
if (item.isMainRisk == 1) {
|
||
addRiskCodes.push(item.productCode)
|
||
}
|
||
})
|
||
if (localStorage.oldAddRiskCodes && JSON.parse(localStorage.oldAddRiskCodes)) {
|
||
addRiskCodes = addRiskCodes.concat(JSON.parse(localStorage.oldAddRiskCodes))
|
||
}
|
||
//930折中方案,豁免险挂订单
|
||
addRiskCodes = addRiskCodes.filter((riskCode) => {
|
||
return riskCode != 'DCRS_A0001'
|
||
})
|
||
|
||
localStorage.addRiskCodes = JSON.stringify(addRiskCodes)
|
||
let thismyurl = ''
|
||
if (this.$route.query.orderNo) {
|
||
thismyurl = '/?orderNo=' + this.$route.query.orderNo
|
||
} else if (this.$route.query.proposalOrderNo) {
|
||
thismyurl = '?proposalOrderNo=' + this.$route.query.proposalOrderNo
|
||
}
|
||
localStorage.editproposaladdrisk = true
|
||
this.$jump({
|
||
flag: 'h5',
|
||
extra: {
|
||
url: location.origin + '/#/common/addRiskList' + thismyurl
|
||
},
|
||
routerInfo: {
|
||
path: '/common/addRiskList' + thismyurl
|
||
}
|
||
})
|
||
},
|
||
//保额份数变化
|
||
stepperChange(defalutValue, productIndex, calFactorIndex, min, max, riskFactor) {
|
||
let currentEle = ''
|
||
let params = this.getParams()
|
||
if(localStorage.isTrial !== '1' && this.chooseProducts[productIndex].isMainRisk == '0'){
|
||
// params[productIndex].payEndYear == '1000' 交费期间为一次性交清
|
||
this.chooseProducts[productIndex].productTrialYearDTOS.forEach(item=>{
|
||
if(params.trialInfos[productIndex].payEndYear == '1000') {
|
||
if(item.yearWay == '一次性交清'){
|
||
currentEle = item
|
||
}
|
||
} else {
|
||
if(item.yearWay == params.trialInfos[productIndex].payEndYear){
|
||
currentEle = item
|
||
}
|
||
}
|
||
})
|
||
} else {
|
||
currentEle = this.chooseProducts[productIndex].calFactorLst[calFactorIndex]
|
||
}
|
||
//改动原因:孝心保产品有对年龄的特殊要求
|
||
//添加判断,是否是孝心保产品
|
||
let showHint = this.chooseProducts[productIndex].hint
|
||
let productCode = localStorage.trialList == '' ? '' : JSON.parse(localStorage.trialList)[0].productCode
|
||
if (productCode == 'GFRS_M0014') {
|
||
//被保险人年龄如果在50-65区间
|
||
if (this.saleInsuredPersonInfo.insuredAge >= 50 && this.saleInsuredPersonInfo.insuredAge <= 65) {
|
||
//使用rules规则里的第二条控制保额份数
|
||
if (Number(defalutValue) < Number(riskFactor.rules[1].minPrem) || Number(defalutValue) > Number(riskFactor.rules[1].maxPrem)) {
|
||
this.$toast(showHint)
|
||
this.nextStepFlag = true
|
||
} else {
|
||
if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
|
||
// this.defalutAmt = currentEle.rules[productIndex].displayAmount
|
||
this.$toast(showHint)
|
||
this.nextStepFlag = true
|
||
} else {
|
||
this.mainRiskInfluenceAddRisk()
|
||
currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
|
||
this.getTrial()
|
||
}
|
||
}
|
||
//被保险人年龄如果在66-75之间
|
||
} else if (this.saleInsuredPersonInfo.insuredAge >= 66 && this.saleInsuredPersonInfo.insuredAge <= 75) {
|
||
//使用rules规则里的第一条控制保额份数
|
||
if (Number(defalutValue) < Number(riskFactor.rules[0].minPrem) || Number(defalutValue) > Number(riskFactor.rules[0].maxPrem)) {
|
||
this.$toast(showHint)
|
||
this.nextStepFlag = true
|
||
} else {
|
||
if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
|
||
// this.defalutAmt = currentEle.rules[productIndex].displayAmount
|
||
this.$toast(showHint)
|
||
this.nextStepFlag = true
|
||
} else {
|
||
this.mainRiskInfluenceAddRisk()
|
||
currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
|
||
this.getTrial()
|
||
}
|
||
}
|
||
}
|
||
//isTrial为0 ---暂时为富娃娃两全保险(万能型)专配 输入保费校验
|
||
}
|
||
else if (productCode == 'GFRS_M0035' || productCode == 'GFRS_M0044'
|
||
|| productCode == 'GFRS_M0056' || productCode == 'GFRS_M0057' || productCode == 'GFRS_M0060') {
|
||
console.log('defalutValue==', defalutValue)
|
||
console.log("currentEle['amt']==", currentEle['amt'])
|
||
console.log('riskFactor.rules', riskFactor.rules)
|
||
console.log('this.saleInsuredPersonInfo.insuredAge ', this.saleInsuredPersonInfo.insuredAge)
|
||
//被保险人年龄如果在50-65区间
|
||
if (this.saleInsuredPersonInfo.insuredAge >= 56 && this.saleInsuredPersonInfo.insuredAge <= 60) {
|
||
//使用rules规则里的第二条控制保额份数
|
||
// 年龄在56周岁及以上被保险人,投保本险种时,最低基本保险金额为10000元。超过最低基本保险金额为10000元整数倍。
|
||
if (Number(defalutValue) < Number(riskFactor.rules[1].minPrem) || Number(defalutValue) > Number(riskFactor.rules[1].maxPrem)) {
|
||
this.$toast('56周岁-60周岁最低基本保险金额为'+ (Number(riskFactor.rules[1].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[1].limit) * 10000) +'元整数倍。')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
|
||
// this.defalutAmt = currentEle.rules[productIndex].displayAmount
|
||
this.$toast('56周岁-60周岁最低基本保险金额为'+ (Number(riskFactor.rules[1].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[1].limit) * 10000) +'元整数倍。')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
this.mainRiskInfluenceAddRisk()
|
||
currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
|
||
this.getTrial()
|
||
}
|
||
}
|
||
//年龄在0-55周岁被保险人,投保本险种时,最低基本保险金额为50000元,超过最低基本保险金额为10000元整数倍。
|
||
} else if (this.saleInsuredPersonInfo.insuredAge >= 0 && this.saleInsuredPersonInfo.insuredAge <= 55) {
|
||
//使用rules规则里的第一条控制保额份数
|
||
if (Number(defalutValue) < Number(riskFactor.rules[0].minPrem) || Number(defalutValue) > Number(riskFactor.rules[0].maxPrem)) {
|
||
this.$toast('0周岁-55周岁最低基本保险金额为'+ (Number(riskFactor.rules[0].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[0].limit) * 10000) +'元整数倍。')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
|
||
// this.defalutAmt = currentEle.rules[productIndex].displayAmount
|
||
this.$toast('0周岁-55周岁最低基本保险金额为'+ (Number(riskFactor.rules[0].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[0].limit) * 10000) +'元整数倍。')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
this.mainRiskInfluenceAddRisk()
|
||
currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
|
||
this.getTrial()
|
||
}
|
||
}
|
||
}
|
||
//isTrial为0 ---暂时为富娃娃两全保险(万能型)专配 输入保费校验
|
||
}
|
||
else if (productCode == 'GFRS_M0040') {
|
||
// 惠企保保额限制
|
||
//被保险人年龄如果在41-60区间
|
||
if (this.saleInsuredPersonInfo.insuredAge >= 41) {
|
||
//使用rules规则里的第二条控制保额份数
|
||
if (Number(defalutValue) < Number(riskFactor.rules[1].minPrem) || Number(defalutValue) > Number(riskFactor.rules[1].maxPrem)) {
|
||
this.$toast('年龄在41周岁至60周岁被保险人,投保本险种时,最低基本保险金额为50000元。超过最低基本保险金额为10000元整数倍。')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
|
||
// this.defalutAmt = currentEle.rules[productIndex].displayAmount
|
||
this.$toast('年龄在41周岁至60周岁被保险人,投保本险种时,最低基本保险金额为50000元。超过最低基本保险金额为10000元整数倍。')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
this.mainRiskInfluenceAddRisk()
|
||
currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
|
||
this.getTrial()
|
||
}
|
||
}
|
||
} else if (this.saleInsuredPersonInfo.insuredAge >= 0 && this.saleInsuredPersonInfo.insuredAge <= 40) {
|
||
//使用rules规则里的第一条控制保额份数
|
||
if (Number(defalutValue) < Number(riskFactor.rules[0].minPrem) || Number(defalutValue) > Number(riskFactor.rules[0].maxPrem)) {
|
||
this.$toast('年龄在0-40周岁被保险人,投保本险种时,最低基本保险金额为100000元,超过最低基本保险金额为10000元整数倍。')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
|
||
// this.defalutAmt = currentEle.rules[productIndex].displayAmount
|
||
this.$toast('年龄在0-40周岁被保险人,投保本险种时,最低基本保险金额为100000元,超过最低基本保险金额为10000元整数倍。')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
this.mainRiskInfluenceAddRisk()
|
||
currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
|
||
this.getTrial()
|
||
}
|
||
}
|
||
}
|
||
//isTrial为0 ---暂时为富娃娃两全保险(万能型)专配 输入保费校验
|
||
}
|
||
else if (productCode == 'GFRS_M0046') {
|
||
//被保险人年龄如果在50-65区间
|
||
if(this.branchTypeVal == 'Z'){ //中介渠道规则
|
||
if (this.saleInsuredPersonInfo.insuredAge >= 51 && this.saleInsuredPersonInfo.insuredAge <= 60) {
|
||
//使用rules规则里的第二条控制保额份数
|
||
// 年龄在51周岁及以上被保险人,投保本险种时,最低基本保险金额为10000元。超过最低基本保险金额为10000元整数倍。
|
||
if (Number(defalutValue) < Number(riskFactor.rules[1].minPrem) || Number(defalutValue) > Number(riskFactor.rules[1].maxPrem)) {
|
||
this.$toast('51周岁-60周岁最低基本保险金额为'+ (Number(riskFactor.rules[1].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[1].limit) * 10000) +'元整数倍。')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
|
||
// this.defalutAmt = currentEle.rules[productIndex].displayAmount
|
||
this.$toast('51周岁-60周岁最低基本保险金额为'+ (Number(riskFactor.rules[1].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[1].limit) * 10000) +'元整数倍。')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
this.mainRiskInfluenceAddRisk()
|
||
currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
|
||
this.getTrial()
|
||
}
|
||
}
|
||
//年龄在0-50周岁被保险人,投保本险种时,最低基本保险金额为50000元,超过最低基本保险金额为10000元整数倍。
|
||
} else if (this.saleInsuredPersonInfo.insuredAge >= 0 && this.saleInsuredPersonInfo.insuredAge <= 50) {
|
||
//使用rules规则里的第一条控制保额份数
|
||
if (Number(defalutValue) < Number(riskFactor.rules[0].minPrem) || Number(defalutValue) > Number(riskFactor.rules[0].maxPrem)) {
|
||
this.$toast('0周岁-50周岁最低基本保险金额为'+ (Number(riskFactor.rules[0].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[0].limit) * 10000) +'元整数倍。')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
|
||
this.$toast('0周岁-50周岁最低基本保险金额为'+ (Number(riskFactor.rules[0].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[0].limit) * 10000) +'元整数倍。')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
this.mainRiskInfluenceAddRisk()
|
||
currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
|
||
this.getTrial()
|
||
}
|
||
}
|
||
}
|
||
}else if(this.branchTypeVal == 'G' || this.branchTypeVal == 'T'|| this.branchTypeVal == 'Y' ){ //世纪无忧中介渠道规则(银销个,健销个投保规则同个险规则)
|
||
//被保险人年龄如果在50-65区间
|
||
if (this.saleInsuredPersonInfo.insuredAge >= 56 && this.saleInsuredPersonInfo.insuredAge <= 60) {
|
||
//使用rules规则里的第二条控制保额份数
|
||
// 年龄在51周岁及以上被保险人,投保本险种时,最低基本保险金额为10000元。超过最低基本保险金额为10000元整数倍。
|
||
if (Number(defalutValue) < Number(riskFactor.rules[1].minPrem) || Number(defalutValue) > Number(riskFactor.rules[1].maxPrem)) {
|
||
this.$toast('56周岁-60周岁最低基本保险金额为'+ (Number(riskFactor.rules[1].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[1].limit) * 10000) +'元整数倍。')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
|
||
// this.defalutAmt = currentEle.rules[productIndex].displayAmount
|
||
this.$toast('56周岁-60周岁最低基本保险金额为'+ (Number(riskFactor.rules[1].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[1].limit) * 10000) +'元整数倍。')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
this.mainRiskInfluenceAddRisk()
|
||
currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
|
||
this.getTrial()
|
||
}
|
||
}
|
||
//年龄在0-50周岁被保险人,投保本险种时,最低基本保险金额为50000元,超过最低基本保险金额为10000元整数倍。
|
||
} else if (this.saleInsuredPersonInfo.insuredAge >= 0 && this.saleInsuredPersonInfo.insuredAge <= 55) {
|
||
//使用rules规则里的第一条控制保额份数
|
||
if (Number(defalutValue) < Number(riskFactor.rules[0].minPrem) || Number(defalutValue) > Number(riskFactor.rules[0].maxPrem)) {
|
||
this.$toast('0周岁-55周岁最低基本保险金额为'+ (Number(riskFactor.rules[0].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[0].limit) * 10000) +'元整数倍。')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
|
||
this.$toast('0周岁-55周岁最低基本保险金额为'+ (Number(riskFactor.rules[0].minPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[0].limit) * 10000) +'元整数倍。')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
this.mainRiskInfluenceAddRisk()
|
||
currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
|
||
this.getTrial()
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// 国富人寿富桂金生养老年金保险(GFRS_M0053)中介渠道鑫享金生养老年金保险(GFRS_M0061)
|
||
}
|
||
else if (productCode == 'GFRS_M0053' || productCode == 'GFRS_M0061') {
|
||
if (Number(defalutValue) < Number(min)) {
|
||
if (riskFactor.yearWay == "一次性交清") {
|
||
this.$toast(`交费期间为${riskFactor.yearWay}时,最低保费为${Number(min) * Number(riskFactor.moneyUnit)}元`)
|
||
} else {
|
||
this.$toast(`交费期间为${riskFactor.yearWay}年交时,最低保费为${Number(min) * Number(riskFactor.moneyUnit)}元`)
|
||
}
|
||
this.nextStepFlag = true
|
||
}else{
|
||
this.nextStepFlag = false
|
||
this.mainRiskInfluenceAddRisk()
|
||
currentEle['amt'] = Number(defalutValue) * Number(riskFactor.moneyUnit)
|
||
this.getTrial()
|
||
}
|
||
}
|
||
else if (productCode == 'GFRS_M0076') {
|
||
if (this.saleInsuredPersonInfo.insuredAge >= 51 && this.saleInsuredPersonInfo.insuredAge <= 60) {
|
||
//使用rules规则里的第二条控制保额份数
|
||
// 年龄在51周岁及以上被保险人,投保本险种时,最低基本保险金额为10000元。超过最低基本保险金额为10000元整数倍。
|
||
if (Number(defalutValue) < Number(riskFactor.rules[1].minPrem) || Number(defalutValue) > Number(riskFactor.rules[1].maxPrem)) {
|
||
this.$toast('51周岁-60周岁最低基本保险金额为'+ (Number(riskFactor.rules[1].minPrem) * 10000) +'元,最高投保金额为'+ (Number(riskFactor.rules[1].maxPrem) * 10000) +'元。')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
|
||
// this.defalutAmt = currentEle.rules[productIndex].displayAmount
|
||
this.$toast('51周岁-60周岁最低基本保险金额为'+ (Number(riskFactor.rules[1].minPrem) * 10000) +'元,最高投保金额为'+ (Number(riskFactor.rules[1].maxPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[1].limit) * 10000) +'元整数倍。')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
this.mainRiskInfluenceAddRisk()
|
||
currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
|
||
this.getTrial()
|
||
}
|
||
}
|
||
//年龄在0-50周岁被保险人,投保本险种时,最低基本保险金额为50000元,超过最低基本保险金额为10000元整数倍。
|
||
} else if (this.saleInsuredPersonInfo.insuredAge >= 0 && this.saleInsuredPersonInfo.insuredAge <= 50) {
|
||
//使用rules规则里的第一条控制保额份数
|
||
if (Number(defalutValue) < Number(riskFactor.rules[0].minPrem) || Number(defalutValue) > Number(riskFactor.rules[0].maxPrem)) {
|
||
this.$toast('出生满 28 天至 50周岁最低基本保险金额为'+ (Number(riskFactor.rules[0].minPrem) * 10000) +'元,最高投保金额为'+ (Number(riskFactor.rules[0].maxPrem) * 10000) +'元。')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
|
||
this.$toast('出生满 28 天至 50周岁最低基本保险金额为'+ (Number(riskFactor.rules[0].minPrem) * 10000) +'元,最高投保金额为'+ (Number(riskFactor.rules[0].maxPrem) * 10000) +'元。超过最低基本保险金额为'+ (Number(riskFactor.rules[0].limit) * 10000) +'元整数倍。')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
this.mainRiskInfluenceAddRisk()
|
||
currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
|
||
this.getTrial()
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else if (this.isTrial === '0' && this.chooseProducts[productIndex].isMainRisk == '0') {
|
||
if (Number(defalutValue) < Number(min)) {
|
||
if (riskFactor.yearWay == "一次性交清") {
|
||
this.$toast(`交费期间为${riskFactor.yearWay}时,最低保费为${Number(min) * Number(riskFactor.moneyUnit)}元`)
|
||
} else {
|
||
this.$toast(`交费期间为${riskFactor.yearWay}年交时,最低保费为${Number(min) * Number(riskFactor.moneyUnit)}元`)
|
||
}
|
||
this.nextStepFlag = true
|
||
} else {
|
||
if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
|
||
// this.defalutAmt = currentEle.rules[productIndex].displayAmount
|
||
this.$toast(`超过最低保费部分金额需为1000元整数倍`)
|
||
this.nextStepFlag = true
|
||
} else {
|
||
this.nextStepFlag = false
|
||
this.mainRiskInfluenceAddRisk()
|
||
currentEle['amt'] = Number(defalutValue) * Number(riskFactor.moneyUnit)
|
||
this.getTrial()
|
||
}
|
||
}
|
||
//其他产品按照原先的逻辑判断
|
||
}
|
||
else if (this.isTrial === '0' && this.chooseProducts[productIndex].isMainRisk == '1') {
|
||
if (Number(defalutValue) < Number(min) || Number(defalutValue) > Number(max)) {
|
||
this.$toast('投保本险种最低基本保险金额为10000元,超过最低基本保险金额为1000元整数倍')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
|
||
// defalutValue = currentEle.rules[productIndex].displayAmount
|
||
this.$toast('投保本险种最低基本保险金额为10000元,超过最低基本保险金额为1000元整数倍')
|
||
this.nextStepFlag = true
|
||
} else {
|
||
this.mainRiskInfluenceAddRisk()
|
||
currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
|
||
this.getTrial()
|
||
}
|
||
}
|
||
}
|
||
else {
|
||
if (Number(defalutValue) < Number(min) || Number(defalutValue) > Number(max)) {
|
||
this.$toast(showHint)
|
||
this.nextStepFlag = true
|
||
} else {
|
||
if ((Number(defalutValue) * 10000) % (Number(currentEle.limit) * 10000) != 0) {
|
||
// defalutValue = currentEle.rules[productIndex].displayAmount
|
||
this.$toast(showHint)
|
||
this.nextStepFlag = true
|
||
} else {
|
||
this.mainRiskInfluenceAddRisk()
|
||
currentEle['amt'] = Number(defalutValue) * Number(currentEle.moneyUnit)
|
||
this.getTrial()
|
||
}
|
||
}
|
||
}
|
||
// let currentEle = this.chooseProducts[this.productIndex].calFactorLst[this.calFactorIndex]
|
||
// defalutValue = value
|
||
console.log('进来几次')
|
||
this.mult = Math.ceil(Number(defalutValue) / Number(riskFactor.defaultValue))
|
||
},
|
||
//下一步
|
||
async nextStep(isFrom) {
|
||
//GFRS_M0016需要验证责任
|
||
if (this.mainRiskCode === 'GFRS_M0016' || this.mainRiskCode === 'GFRS_M0070') {
|
||
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
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
//GFRS_A0004需要验证责任
|
||
for (let m = 0; m < this.chooseProducts.length; m++) {
|
||
if (this.chooseProducts[m].productCode == 'GFRS_A0004' || this.chooseProducts[m].productCode == 'GFRS_A0008') {
|
||
let showHint = this.chooseProducts[m].hint
|
||
let calFactorLst = this.chooseProducts[m].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.valiA0004Duty(item.defaultDutyAmt, showHint, item)) {
|
||
return
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// 验证格式
|
||
if (this.isRelated && this.isFrom != 'proposal' && this.policyNo) {
|
||
let vl = /^[0-9\\]+$/.test(this.policyNo)
|
||
if (!vl) {
|
||
return this.$toast('关联保单的格式不正确')
|
||
}
|
||
}
|
||
|
||
//组装险种提交数据
|
||
let [mainRiskCode, riskDTOLst] = ['', []]
|
||
let rollInResult = '' //校验预计转入保费结果
|
||
this.chooseProducts.forEach((item, index) => {
|
||
if (localStorage.trialList != '') {
|
||
if (item.isMainRisk == 0) {
|
||
mainRiskCode = item.productCode
|
||
}
|
||
|
||
let insuanceId = ''
|
||
|
||
if(this.$route.query.insuanceIdInfo){
|
||
let thismyinsuanceIdInfo = JSON.parse(this.$route.query.insuanceIdInfo)
|
||
thismyinsuanceIdInfo.forEach(item01=>{
|
||
if(item01.riskCode == item.productCode){
|
||
insuanceId = item01.insuanceId
|
||
}
|
||
})
|
||
}
|
||
|
||
let riskItem = {
|
||
isMainRisk: item.isMainRisk,
|
||
riskName: item.riskName,
|
||
riskType: item.riskType,
|
||
riskCode: item.productCode,
|
||
mainRiskCode: mainRiskCode,
|
||
prem: this.trialList[index] && this.trialList[index].prem,
|
||
standPrem: this.trialList[index] && this.trialList[index].standPrem,
|
||
predictTransferPrem: item.predictTransferPrem,
|
||
thirdInsuraceNo: this.policyNo
|
||
// mult: this.mult
|
||
}
|
||
if(this.$route.query.insuanceIdInfo){
|
||
riskItem.insuanceId = insuanceId
|
||
}
|
||
if (item.hasPredictTransferPrem && item.hasPredictTransferPrem === '0') {
|
||
//增加万能险 预计转入保费校验
|
||
rollInResult = this.rollInCheck(item.predictTransferPrem)
|
||
} else {
|
||
rollInResult = true
|
||
}
|
||
//责任险保存参数构建
|
||
if (this.trialList[index].duty) {
|
||
riskItem['dutyLst'] = this.trialList[index].duty
|
||
//930折中方案,责任险分档
|
||
riskItem['amt'] = this.trialList[index].amt
|
||
} else {
|
||
//国富人寿桂企保重大疾病保险产品专写,有可选责任的产品需要配置一下
|
||
if (
|
||
this.trialList[index].productCode == 'GFRS_M0024' ||
|
||
this.trialList[index].productCode == 'GFRS_M0040' ||
|
||
this.trialList[index].productCode == 'GFRS_M0044' ||
|
||
this.trialList[index].productCode == 'GFRS_M0046' ||
|
||
this.trialList[index].productCode == 'GFRS_M0051' ||
|
||
this.trialList[index].productCode == 'GFRS_M0054' ||
|
||
this.trialList[index].productCode == 'GFRS_M0073' ||
|
||
this.trialList[index].productCode == 'GFRS_M0077' ||
|
||
this.trialList[index].productCode == 'GFRS_M0057'
|
||
) {
|
||
riskItem['dutyLst'] = this.trialInfos[index].duty
|
||
}
|
||
}
|
||
//保费算保额
|
||
if (this.trialList[index].trialType == '1' || this.trialList[index].trialType == '2') {
|
||
riskItem['amt'] = this.trialList[index].amt
|
||
}
|
||
//万能型产品保费赋值给保额
|
||
//增加判断是否是从建议书跳转过来了的
|
||
if (localStorage.isFrom != 'proposal') {
|
||
if (
|
||
this.trialList[index].productCode == 'GFRS_M0003' ||
|
||
this.trialList[index].productCode == 'GFRS_M0015' ||
|
||
this.trialList[index].productCode == 'GFRS_M0017'
|
||
) {
|
||
riskItem['amt'] = this.trialList[index].prem
|
||
}
|
||
}
|
||
|
||
//豁免险保额处理
|
||
if (item.isRemit == '0') {
|
||
this.trialInfos[index].amt = this.trialList[0].prem
|
||
}
|
||
|
||
if (item.productCode == 'GFRS_A0001') {
|
||
this.trialInfos[index].amt = this.trialList[0].standPrem
|
||
}
|
||
|
||
if (item.productCode == 'GFRS_A0003' || item.productCode == 'GFRS_A0007') {
|
||
// bug--鑫享年年+附加豁免投保人定寿B+附加豁免投保人重疾B,投保单号8186270000016187
|
||
// ①豁免重疾B的保额应该等于主险的保费,该单的豁免重疾B的保额等于主险的保额不正确。
|
||
this.trialInfos[index].amt = this.trialList[index].amt
|
||
}
|
||
// GFRS_A0009,GFRS_A0010 这两款时,责任保额不相加
|
||
if(item.productCode == 'GFRS_A0009' || item.productCode == 'GFRS_A0010' || item.productCode == 'GFRS_A0013'|| item.productCode == 'GFRS_A0014' || item.productCode == 'GFRS_M0077'){
|
||
this.trialInfos[index].amt = this.trialList[index].duty[0].amt
|
||
}
|
||
// GFRS_A0011-附加两全 属于非豁免险 但附加两全保额=主险年交保费+其他不带豁免责任的长期期交附加险年交保费
|
||
if (item.productCode == 'GFRS_A0011') {
|
||
this.trialInfos[index].amt = this.trialList[0].prem
|
||
}
|
||
if (!this.renewalShow(this.mainRiskCode)) {
|
||
for (let prop of item.calFactorLst) {
|
||
if (prop.type === '4') {
|
||
this.trialInfos[index].isRenewal = this.renewal
|
||
}
|
||
}
|
||
}
|
||
|
||
// console.log(riskItem)
|
||
riskItem = Object.assign(riskItem, this.trialInfos[index])
|
||
riskDTOLst.push(riskItem)
|
||
}
|
||
})
|
||
if (!rollInResult) {
|
||
return
|
||
}
|
||
//国富人寿桂企保重大疾病保险产品专写
|
||
this.trialInfos.map((v, i) => {
|
||
if (v.productCode == 'GFRS_M0024' || v.productCode == 'GFRS_M0040' || v.productCode == 'GFRS_M0044'
|
||
|| v.productCode == 'GFRS_M0046'|| v.productCode == 'GFRS_M0051'|| v.productCode == 'GFRS_M0057' || v.productCode == 'GFRS_M0073'|| v.productCode == 'GFRS_M0077') {
|
||
delete riskDTOLst[i].duty
|
||
}
|
||
})
|
||
|
||
//建议书需要添加全部投保人信息,电投只需要投保人ID
|
||
let insuredDTOItem = Object.assign(this.saleInsuredPersonInfo, { riskDTOLst: riskDTOLst })
|
||
if (!insuredDTOItem.insuredAge) {
|
||
insuredDTOItem.insuredAge = insuredDTOItem.birthday ? utilsAge.getAge(insuredDTOItem.birthday, new Date()) : insuredDTOItem.age
|
||
}
|
||
let orderNo = localStorage.isFrom == 'proposal'?this.$route.query.proposalOrderNo:this.$route.query.orderNo
|
||
let params = {
|
||
orderType: 'RISK_ORDER',
|
||
orderDTO: {
|
||
orderInfoDTO: {
|
||
orderNo: orderNo,
|
||
productChannel:this.isCrossChannel
|
||
},
|
||
// appntDTO: {},
|
||
insuredDTOs: [insuredDTOItem]
|
||
}
|
||
}
|
||
|
||
// 富娃娃&一年定寿交费方式,交费区间固定为月交
|
||
if (this.richChildrenFlag) {
|
||
let product = params.orderDTO.insuredDTOs[0].riskDTOLst.find(item => {
|
||
return item.productCode === 'GFRS_M0015'
|
||
})
|
||
if (product) {
|
||
let trialProduct = params.orderDTO.insuredDTOs[0].riskDTOLst.find(item => {
|
||
return item.productCode === 'GFRS_A0006'
|
||
})
|
||
if (trialProduct) {
|
||
trialProduct.prem = 0
|
||
trialProduct.payIntv = 1
|
||
trialProduct.insuYearFlag = 'M'
|
||
trialProduct.payEndYear = 1
|
||
}
|
||
}
|
||
}
|
||
|
||
let resultData
|
||
if (localStorage.isFrom == 'proposal') {
|
||
// 从建议书进入, 豁免险保费空值特殊处理
|
||
let prdCodes = ['GFRS_A0001', 'GFRS_A0007']
|
||
params.orderDTO.insuredDTOs[0].riskDTOLst.forEach(item => {
|
||
if (prdCodes.includes(item.productCode)) {
|
||
this.trialList.forEach(element => {
|
||
if (item.productCode == element.productCode) {
|
||
item.amt = element.amt
|
||
}
|
||
})
|
||
}
|
||
})
|
||
resultData = await saveProposal(params)
|
||
}
|
||
else if (isFrom != 'orderTrial' && localStorage.isFrom == 'sale') {
|
||
resultData = await saveOrUpdateOrderInfo(params)
|
||
}
|
||
else if (isFrom == 'orderTrial' && localStorage.isFrom == 'sale') {
|
||
this.$toast.loading({
|
||
duration: 0, // 持续展示 toast
|
||
forbidClick: true, // 禁用背景点击
|
||
loadingType: 'spinner',
|
||
message: '核保试算中'
|
||
})
|
||
resultData = await orderTrial(params)
|
||
}
|
||
if (resultData.result == 0) {
|
||
window.localStorage.removeItem("editproposaladdrisk")
|
||
//电投
|
||
if (isFrom != 'orderTrial' && localStorage.isFrom == 'sale') {
|
||
if (resultData.deleteFlag == '0') {
|
||
localStorage.salePageFlag = '3';
|
||
}
|
||
let thismyurl = ''
|
||
if (this.$route.query.orderNo) {
|
||
thismyurl = '/?orderNo=' + this.$route.query.orderNo
|
||
} else if (this.$route.query.proposalOrderNo) {
|
||
thismyurl = '?proposalOrderNo=' + this.$route.query.proposalOrderNo
|
||
}
|
||
this.$jump({
|
||
flag: 'goBack',
|
||
extra: {
|
||
refresh: '1',
|
||
index: '-2'
|
||
},
|
||
routerInfo: {
|
||
type: 2,
|
||
index: -2,
|
||
path: '/common/selectedProduct' + thismyurl
|
||
}
|
||
})
|
||
}
|
||
else if (localStorage.isFrom == 'proposal'){
|
||
let proposalOrderNo = this.$CacheUtils.getLocItem('proposalNo') || ''
|
||
if (resultData.content.id) {
|
||
this.saleInsuredPersonInfo.insuredId = resultData.content.id;
|
||
this.$CacheUtils.setLocItem('saleInsuredPersonInfo', JSON.stringify(this.saleInsuredPersonInfo))
|
||
}
|
||
//试算记录保存更新--编辑
|
||
this.saveOrUpdateTrialRecordInfoFunc(resultData.content.riskDTO)
|
||
}
|
||
else if (isFrom == 'orderTrial' && localStorage.isFrom == 'sale') {
|
||
this.$toast.clear()
|
||
this.trialResultsShow = true
|
||
this.verifyResultList = resultData.content.data.verifyResultList
|
||
}
|
||
}
|
||
},
|
||
//建议书试算记录保存更新--编辑功能
|
||
saveOrUpdateTrialRecordInfoFunc(riskDTO){
|
||
let insuanceId
|
||
riskDTO.forEach(item => {
|
||
if (item.isMainRisk == '0') {
|
||
insuanceId = item.insuanceId
|
||
}
|
||
})
|
||
let data = {
|
||
serialNo:this.$route.query.proposalOrderNo,
|
||
mainRiskId:insuanceId+'',
|
||
trialJsonStr:localStorage.chooseProducts
|
||
}
|
||
if(this.trialRecordInfoId){
|
||
data.id = this.trialRecordInfoId
|
||
}
|
||
saveOrUpdateTrialRecordInfo(data).then(res => {
|
||
if (res.result == '0') {
|
||
//被保人产品列表界面 点击编辑按钮进入产品试算界面 点击完成 页面跳转不正确
|
||
let proposalOrderNo = ''
|
||
if(this.$route.query.proposalOrderNo){
|
||
proposalOrderNo = this.$route.query.proposalOrderNo
|
||
}else{
|
||
proposalOrderNo = this.$route.query.orderNo
|
||
}
|
||
let url = `/common/selectedProduct?proposalOrderNo=${proposalOrderNo}`
|
||
if ( localStorage.isFrom == 'orderTrial' && localStorage.isFrom == 'sale') {
|
||
this.$toast.clear()
|
||
this.trialResultsShow = true
|
||
this.verifyResultList = res.content.data.verifyResultList
|
||
}
|
||
this.$jump({
|
||
flag: 'h5',
|
||
extra: {
|
||
url: location.origin + '/#' + url
|
||
},
|
||
routerInfo: {
|
||
path: url
|
||
}
|
||
})
|
||
// this.$jump({
|
||
// flag: 'goBack',
|
||
// extra: {
|
||
// refresh: '1',
|
||
// index: '-2'
|
||
// },
|
||
// routerInfo: {
|
||
// type: 2,
|
||
// index: -2,
|
||
// path: url
|
||
// }
|
||
// })
|
||
} else {
|
||
this.$toast(res.resMessage)
|
||
}
|
||
})
|
||
},
|
||
rollInCheck(value) {
|
||
let regExp = /^[1-9]+[0-9]*$/
|
||
let result = regExp.test(value)
|
||
if (result) {
|
||
return true
|
||
} else {
|
||
this.$toast.fail('请输入正确的预计转入保费')
|
||
return false
|
||
}
|
||
}
|
||
},
|
||
watch: {
|
||
// chooseProducts: {
|
||
// deep: true,
|
||
// handler: function(newVal) {
|
||
// this.chooseProducts = newVal
|
||
// }
|
||
// }
|
||
}
|
||
}
|
||
</script>
|
||
<style lang="scss" scoped>
|
||
/deep/ .van-dialog .van-dialog__header{
|
||
font-size: 16px;
|
||
font-weight: 700;
|
||
}
|
||
/deep/ .van-button--danger{
|
||
border-radius: 0;
|
||
}
|
||
|
||
/deep/ .van-button--plain {
|
||
border: none !important;
|
||
border-top: 1px solid #E9332E !important;
|
||
}
|
||
.renewalWrappser {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
}
|
||
|
||
/deep/ .van-radio {
|
||
margin: 0 0.5em;
|
||
}
|
||
|
||
.renewal {
|
||
display: flex;
|
||
justify-content: flex-end;
|
||
padding: 1em;
|
||
}
|
||
|
||
/deep/ .van-radio__label {
|
||
line-height: normal;
|
||
}
|
||
|
||
.calculate-premium-container {
|
||
.border-bottom {
|
||
border-bottom: 1px solid #dadada;
|
||
}
|
||
.van-cell {
|
||
padding: 0px;
|
||
}
|
||
.prem:last-child {
|
||
border: none;
|
||
}
|
||
/deep/.van-action-sheet__name {
|
||
font-size: 12px;
|
||
}
|
||
.checkbox-click {
|
||
position: absolute;
|
||
right: 0;
|
||
top: 0;
|
||
width: 7.46667vw;
|
||
height: 7.46667vw;
|
||
}
|
||
.van-dialog__content{
|
||
border: 1px solid red;
|
||
}
|
||
}
|
||
</style>
|