GFRS-454【0326】 建议书优化2.0 初版代码备份提交_3 --提交人:阳华祥

This commit is contained in:
阳华祥
2020-03-12 21:10:22 +08:00
parent d44ef41f1c
commit ea9edb5b33
3 changed files with 439 additions and 57 deletions

View File

@@ -2017,5 +2017,320 @@ export default {
{ code: '01', value: '寿险' },
{ code: '02', value: '重疾' },
{ code: '03', value: '年金' }
],
// 利益演示单位
productRateUnit: [
{
code: 'years',
label: ''
},
{
code: 'currentAge',
label: '岁'
},
{
code: 'currentPremium',
label: '元'
},
{
code: 'totalPremium',
label: '元'
},
{
code: 'majorDiseaseInsurance',
label: '元'
},
{
code: 'majorDiseaseInsurance2',
label: '元'
},
{
code: 'mildillnessInsurance',
label: '元'
},
{
code: 'deathInsurance',
label: '元'
},
{
code: 'deathInsurance_L',
label: '元'
},
{
code: 'deathInsurance_M',
label: '元'
},
{
code: 'deathInsurance_H',
label: '元'
},
{
code: 'highDisabilityExemptionPremium',
label: '元'
},
{
code: 'deathExemptionPremium',
label: '元'
},
{
code: 'accidentalDeathInsurance',
label: '元'
},
{
code: 'accidentalDisabilityInsurance',
label: '元'
},
{
code: 'medicalInsuranceForAccidentalInjury',
label: '元'
},
{
code: 'incidentalInjuryHospitalizationAllowanceInsurance',
label: '元'
},
{
code: 'insurancePremiumForBedsInHospital',
label: '元'
},
{
code: 'inpatientSurgeryInsurance',
label: '元'
},
{
code: 'inpatientCancerRadiotherapyAndChemotherapyExpensesInsurance',
label: '元'
},
{
code: 'insuranceForOtherHospitalizationExpenses',
label: '元'
},
{
code: 'insuranceForSpecificCardiovascularAndCerebrovascularDiseases',
label: '元'
},
{
code: 'insuranceForCertainCardiovascularAndCerebrovascularMajorDiseases',
label: '元'
},
{
code: 'cashValue',
label: '元'
},
{
code: 'survival',
label: '元'
},
{
code: 'survival_T',
label: '元'
},
{
code: 'totalSurvival',
label: '元'
},
{
code: 'expireSurvival',
label: '元'
},
{
code: 'birthdayGold',
label: '元'
},
{
code: 'middleDiseaseInsurance',
label: '元'
},
{
code: 'appntADDCExemptionPremium',
label: '元'
},
{
code: 'majorMiddleMildDiseaseInsuranceExemptionPremium',
label: '元'
},
{
code: 'majorTMiddleMildDiseaseInsuranceExemptionPremium',
label: '元'
},
{
code: 'survival_L',
label: '元'
},
{
code: 'survival_M',
label: '元'
},
{
code: 'survival_H',
label: '元'
},
{
code: 'seneralMedicalInsurance',
label: '元'
},
{
code: 'malignantTumorMedicalInsurance',
label: '元'
},
{
code: 'malignantTumorInsurance',
label: '元'
},
{
code: 'specificMalignantTumorCareFor',
label: '元'
},
{
code: 'strokeSequelaInsurance',
label: '元'
},
{
code: 'highSchoolEducationFund',
label: '元'
},
{
code: 'universityEducationFund',
label: '元'
},
{
code: 'entrepreneurshipGold',
label: '元'
},
{
code: 'marriageGold',
label: '元'
},
{
code: 'theInitialCost',
label: '元'
},
{
code: 'continueToReward',
label: '元'
},
{
code: 'policyAccountValue_L',
label: '元'
},
{
code: 'policyAccountValue_M',
label: '元'
},
{
code: 'policyAccountValue_H',
label: '元'
},
{
code: 'enterPolicyAccountValue',
label: '元'
},
{
code: 'endowmentAnnuity_years',
label: '元'
},
{
code: 'endowmentAnnuity_month',
label: '元'
},
{
code: 'endowmentAnnuity_L',
label: '元'
},
{
code: 'endowmentAnnuity_M',
label: '元'
},
{
code: 'endowmentAnnuity_H',
label: '元'
},
{
code: 'pensionPaymentDate',
label: ''
},
{
code: 'theCumulativeEndowmentAnnuity_L',
label: '元'
},
{
code: 'theCumulativeEndowmentAnnuity_M',
label: '元'
},
{
code: 'theCumulativeEndowmentAnnuity_H',
label: '元'
},
{
code: 'cashValueFormula_L',
label: '元'
},
{
code: 'cashValueFormula_M',
label: '元'
},
{
code: 'cashValueFormula_H',
label: '元'
},
{
code: 'thePremium',
label: '元'
},
{
code: 'terminalIllnessBenefits',
label: '元'
},
{
code: 'years',
label: ''
},
{
code: 'transport_A',
label: '元'
},
{
code: 'transport_B',
label: '元'
},
{
code: 'transport_C',
label: '元'
},
{
code: 'transport_D',
label: '元'
},
{
code: 'transport_F',
label: '元'
},
{
code: 'totalSuvInterest_L',
label: '元'
},
{
code: 'totalSuvInterest_M',
label: '元'
},
{
code: 'totalSuvInterest_H',
label: '元'
},
{
code: 'remitPremRate',
label: ''
},
{
code: 'inpatientCare',
label: '元'
},
{
code: 'hospitalizationBenefit',
label: '元'
},
{
code: 'malignantTumor',
label: '元'
}
]
}

View File

@@ -5,31 +5,18 @@
<div class="white fw500 fs18" style="margin-top: 37px;margin-left: 17px;">家庭保障计划</div>
<van-sticky @scroll="testSticky">
<div class="pl15 pt15 flex justify-content-fs align-items-c sticky_div" :class="pageShowType.isFixed ? 'divbg_1' : 'divbg_2'">
<div class="mr9" style="height: 124px;">
<div class="mr9 title_item" v-for="(item, index) in pageShowInfo.insuredDTOs" :key="index">
<div class="relative">
<div class="bg-white insured_item">
<div class="insured_item_1">
<img src="@/assets/images/proposal/person_br.png" />
<img :src="headPicture[item.relationToAppnt]" />
</div>
<div class="text-center fs12">
本人<br />
张先生
</div>
</div>
<div class="triangle"></div>
</div>
</div>
<div class="mr9" style="height: 124px;">
<div class="relative">
<div class="bg-white insured_item">
<div class="insured_item_1">
<img src="@/assets/images/proposal/person_br.png" />
</div>
<div class="text-center fs12">
本人<br />
张先生
<div class="text-center fs12" :class="item.relationToAppnt == '1' ? 'color_3A81F6' : ''">
{{ relationToAppntType[item.relationToAppnt] }}<br />
{{ item.name }}
</div>
</div>
<div class="triangle" v-if="item.relationToAppnt == '1'"></div>
</div>
</div>
</div>
@@ -41,17 +28,19 @@
<div class="fs14 flex justify-content-a align-items-c">
<div class="text-center">
<label class="fs14 color_3A81F6 fw600 lh24">被保人</label><br />
<label class="fs13 color_666666 lh20">&nbsp;28周岁</label>
<label class="fs13 color_666666 lh20"
>{{ pageShowInfo.showInsuredDTO.sex == '1' ? '男' : '女' }}&nbsp;{{ pageShowInfo.showInsuredDTO.age }}周岁</label
>
</div>
<div class="line_gray"></div>
<div class="text-center">
<label class="fs14 color_3A81F6 fw600 lh24">投保人</label><br />
<label class="fs13 color_666666 lh20">&nbsp;28周岁</label>
<label class="fs13 color_666666 lh20">{{ pageShowInfo.appntDTO.sex == '1' ? '男' : '女' }}&nbsp;{{ pageShowInfo.appntDTO.age }}周岁</label>
</div>
<div class="line_gray"></div>
<div class="text-center">
<label class="fs14 color_3A81F6 fw600 lh24">首年保费</label><br />
<label class="fs13 color_FFA42F lh20">5898.99</label>
<label class="fs13 color_FFA42F lh20">{{ pageShowInfo.showInsuredDTO.totalPrem }}</label>
</div>
</div>
<div class="fs15 line_title">产品计划</div>
@@ -64,20 +53,24 @@
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">交费期间</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">首年保费()</div>
</div>
<div class="risk_body flex text-center bg-green-base c-gray-darker table">
<div
class="risk_body flex text-center bg-green-base c-gray-darker table"
v-for="(riskItem, index) in pageShowInfo.showInsuredDTO.riskDTOLst"
:key="index"
>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7">{{ riskItem.riskName }}</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">{{ riskItem.amt }}</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">{{ riskItem.insureName }}</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">{{ riskItem.payName }}</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">{{ riskItem.showPrem }}</div>
</div>
<!--<div class="risk_body flex text-center bg-green-base c-gray-darker table risk_body_last">
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7">终身重大疾病保险</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">100,00</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">终身</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">5</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">500.00</div>
</div>
<div class="risk_body flex text-center bg-green-base c-gray-darker table risk_body_last">
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7">终身重大疾病保险</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">100,00</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">终身</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">5</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">500.00</div>
</div>
</div>-->
</div>
<div class="h20">&ensp;</div>
<div class="up_down_div">
@@ -89,8 +82,8 @@
<div class="fs16 color_3A81F6 lh24 fw600">保险责任</div>
<div class="line_C8DBFB"></div>
<div class="flex align-items-c justify-content-c">
<div class="fs14 checked_risk_type" @click="checkType('00')">按责任显示</div>
<div class="fs14 no_check_risk_type" @click="checkType('01')">按险种显示</div>
<div class="fs14 checked_risk_type" @click="checkShowDutyType('00')">按责任显示</div>
<div class="fs14 no_check_risk_type" @click="checkShowDutyType('01')">按险种显示</div>
</div>
<div :class="pageShowType.riskCheckStatus ? '' : 'hideInfo'">
12<br />
@@ -111,41 +104,61 @@
<img src="@/assets/images/proposal/proposal_down.png" @click="testRiskCheck" />
</div>
</div>
<!--产品条款-->
<div class="pt15 pb17 bg-white text-center relative model_title">
<div class="fs16 color_3A81F6 lh24 fw600">产品条款</div>
<div class="line_C8DBFB"></div>
<div class="fs14 pl12 pr12 lh20 color_3A81F6 flex align-items-c justify-content-s">
<div class="text-center pl5 pr5 calue_name">条框名称绝地逢生地方就是开发及地方就是恐惧看</div>
<div class="calue_button">查看</div>
</div>
<div class="fs14 pl12 pr12 lh20 color_3A81F6 flex align-items-c justify-content-s">
<div class="text-center pl5 pr5 calue_name">条框名称绝地逢生地</div>
<div class="calue_button">查看</div>
<div
class="fs14 pl12 pr12 lh20 color_3A81F6 flex align-items-c justify-content-s"
v-for="(riskItem, index) in pageShowInfo.showInsuredDTO.riskDTOLst"
:key="index"
>
<div class="text-center pl5 pr5 calue_name">{{ riskItem.riskName }}条款</div>
<div class="calue_button" @click="clickCalueUrl(riskItem)">查看</div>
</div>
<div style="padding-top: 30px;width: 100%;height: 1px;"></div>
</div>
<!--产品中利益演示-->
<div class="pt15 pb17 bg-white text-center relative model_title">
<div class="fs16 color_3A81F6 lh24 fw600">产品总利益演示</div>
<div class="line_C8DBFB"></div>
<div class="flex justify-content-s align-items-c mt30 mb20 ml15 mr15">
<img class="w20" src="@/assets/images/lessen.png" />
<div class="mt15 ml15 mr15">
<div class="flex justify-content-s align-items-c fs14 lh_30" v-for="(moneyItem, index) in pageShowInfo.showInsuredDTO.demoLabel" :key="index">
<span>{{ moneyItem.contentLabel }}</span>
<div>
<span class="color_3A81F6">{{ moneyItem.value }}</span
>{{ moneyItem.content | productRateUnit }}
</div>
</div>
</div>
<div class="flex justify-content-s align-items-c mt15 mb20 ml15 mr15">
<img class="w20" src="@/assets/images/lessen.png" @click="reduce(pageShowInfo.showInsuredDTO)" />
<van-slider
class="w220"
active-color="#9EC2FC"
inactive-color="#9EC2FC"
bar-height="4px"
:min="1"
:max="pageShowInfo.insuredSlider.policyYear"
v-model="pageShowInfo.insuredSlider.sliderValue"
@input="input(pageShowInfo.insuredSlider.sliderValue, pageShowInfo.insuredSlider.demoValue, pageShowInfo.insuredSlider.demoLabel)"
:max="pageShowInfo.showInsuredDTO.policyYear"
v-model="pageShowInfo.showInsuredDTO.sliderValue"
@input="input(pageShowInfo.showInsuredDTO.sliderValue, pageShowInfo.showInsuredDTO.demoValue, pageShowInfo.showInsuredDTO.demoLabel)"
>
<div slot="button" class="customer_button"></div>
</van-slider>
<img class="w20" src="@/assets/images/add.png" />
<img class="w20" src="@/assets/images/add.png" @click="exhibitionAdd(pageShowInfo.showInsuredDTO)" />
</div>
<select-radio
class="mb10"
v-if="pageShowInfo.showInsuredDTO.tap"
@radioChange="radioChange(pageShowInfo.showInsuredDTO)"
:required="false"
:radios="pageShowInfo.showInsuredDTO.radios"
:value.sync="pageShowInfo.showInsuredDTO.tap"
></select-radio>
<div class="fs12 text-center pb15" style="color: #999999;">拖动按钮查看不同年龄的保单利益</div>
<div style="padding-top: 10px;width: 100%;height: 1px;"></div>
</div>
<!-- 温馨提示-->
<div class="pt15 pb17 bg-white relative model_title">
<div class="fs16 color_3A81F6 lh24 fw600 text-center">温馨提示</div>
<div class="line_C8DBFB"></div>
@@ -194,6 +207,7 @@ export default {
let isWeixin = this.$utils.device().isWeixin //判断环境
return {
isWeixin,
chooseProductCodes: [],
// 页面显示配置
pageShowType: {
isFixed: false, // 粘性布局状态
@@ -206,6 +220,33 @@ export default {
appntDTO: {}, //投保人信息
insuredDTOs: [{}], //被保人信息
showInsuredDTO: {} //页面显示配保人数据
},
headPicture: {
'1': require('@/assets/images/proposal/person_br.png'),
'2': require('@/assets/images/proposal/person_ez.png'),
'3': require('@/assets/images/proposal/person_fq.png'),
'4': require('@/assets/images/proposal/person_mq.png'),
'5': require('@/assets/images/proposal/person_nr.png'),
'6': require('@/assets/images/proposal/person_po.png'),
'7': require('@/assets/images/proposal/person_qt.png')
},
relationToAppntType: {
'1': '本人',
'2': '儿子',
'3': '父亲',
'4': '母亲',
'5': '女儿',
'6': '配偶',
'7': '其他'
}
}
},
filters: {
productRateUnit(code) {
for (let i = 0; i < dataDictionary.productRateUnit.length; i++) {
if (dataDictionary.productRateUnit[i].code == code) {
return dataDictionary.productRateUnit[i].label
}
}
}
},
@@ -240,6 +281,13 @@ export default {
testRiskCheck() {
this.pageShowType.riskCheckStatus = !this.pageShowType.riskCheckStatus
},
clickCalueUrl(riskItem) {
location.href = riskItem.url
},
checkShowDutyType(type) {
console.log(type)
//产品责任显示类型
},
//页面初始化
async init() {
let params = {
@@ -247,7 +295,6 @@ export default {
proposalNo: ''
}
}
if (this.isWeixin) {
//在微信端
params.proposalInfoDTO.proposalNo = this.$route.query.proposalNo
@@ -282,7 +329,6 @@ export default {
} else {
//在app端
params.proposalInfoDTO.proposalNo = localStorage.orderNo
console.log(params)
getDemo(params).then(res => {
this.formatLocal(res)
})
@@ -310,6 +356,7 @@ export default {
})
}
},
//档位更换时
radioChange(risk) {
let that = this
@@ -329,9 +376,14 @@ export default {
//将后端返回的数据格式化为本地
formatLocal(res) {
if (res.result == '0') {
console.log('res', res)
let orderDTO = res.content.orderDTO
this.pageShowInfo.appntDTO = res.content.orderDTO.appntDTO
this.pageShowInfo.insuredDTOs = res.content.orderDTO.insuredDTOs
this.pageShowInfo.showInsuredDTO = this.pageShowInfo.insuredDTOs[1]
//投保人年龄
this.pageShowInfo.appntDTO.age = getAge.getAge(this.pageShowInfo.appntDTO.birthdayLabel, new Date())
let { insuredLabelResult, insuredResult, insuredInfoResult } = res.content.calculusResDTO
orderDTO.insuredDTOs.forEach(v => {
//根据数据字典 获取当前值
v.age = getAge.getAge(v.birthdayLabel, new Date())
@@ -364,7 +416,7 @@ export default {
this.insuredDTOs = insuredDTOs[0].insuredDTOs
this.insuredDTOs = relevanceByInsure(this.insuredDTOs, insuredLabelResult, insuredResult, insuredInfoResult) //进行数据关联
this.getWXTitle(this.insuredDTOs) //获取微信标题
console.log("this.insuredDTOs",this.insuredDTOs)
console.log('this.insuredDTOs', this.insuredDTOs)
// 建议书名称
this.insuredDTOs.forEach(item => {
if (item.riskDTOLst && item.riskDTOLst.length > 0) {
@@ -417,15 +469,17 @@ export default {
}
})
},
// 滑动块发生变化时
input(value, demoValue, demoLabel) {
this.$forceUpdate() //强制组件更新 解决值更改之后 滑块不滑动的问题
/*let index = String(value)
demoLabel.forEach(label => {
label.value = demoValue[index][label.content]
})*/
let index = String(value)
if (demoLabel) {
demoLabel.forEach(label => {
label.value = demoValue[index][label.content]
})
}
},
// 点击增加
exhibitionAdd(risk) {
if (risk.sliderValue == risk.policyYear) {
@@ -774,5 +828,12 @@ export default {
.table_border {
border-left: 1px solid #acc5e6;
}
.title_item {
height: 124px;
}
.lh_30 {
height: 30px;
line-height: 30px;
}
}
</style>

View File

@@ -117,8 +117,14 @@ export function relevance(insured, insuredLabelResult, insuredResult, insuredInf
export function relevanceByInsure(insured, insuredLabelResult, insuredResult, insuredInfoResult) {
insured.forEach(insure => {
insure.radios = []
insure.demoLabel = insuredLabelResult[insure.insuredId]['GFRS_M0003']
insure.demoValue = insuredResult[insure.insuredId]['GFRS_M0003']
insure.demoLabel = insuredLabelResult[insure.insuredId]['GFRS_M0017']
if (!insure.demoLabel) {
insure.demoLabel = insuredLabelResult[insure.insuredId]['GFRS_M0016']
}
insure.demoValue = insuredResult[insure.insuredId]['GFRS_M0017']
if (!insure.demoValue) {
insure.demoValue = insuredResult[insure.insuredId]['GFRS_M0016']
}
insure.demoLabel.forEach(v => {
v.value = insure.demoValue['1'][v.content] //设置初始值
})