Merge branch 'feature/GFRS-413_【0116】豁免险' into dev

This commit is contained in:
yuweiqi
2020-01-10 14:28:46 +08:00
5 changed files with 174 additions and 147 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 B

View File

@@ -100,6 +100,12 @@ export default {
return
}
if (resultData.productInsuredDTO.validateAppntFlag == '0') {
if (riskRules.lifeGradeLimitForBaby(resultData, this)) {
return
}
}
/********end 附加险选择限制 end******/
let calFactorLst = this.getFactorList(resultData)

View File

@@ -123,7 +123,7 @@ export default {
if (riskRules.lifeGradeLimit(resultData, this)) {
return
}
if (resultData.productCode == 'GFRS_M0006') {
if (resultData.productInsuredDTO.validateAppntFlag == '0') {
if (riskRules.lifeGradeLimitForBaby(resultData, this)) {
return
}

View File

@@ -26,12 +26,7 @@
<div class="c-gray-darker fs14" slot="default">{{ appntDTO.name }}</div>
</van-cell>
<van-collapse v-model="activeNames">
<van-collapse-item
class="mt10"
:name="insuredIndex + 1"
v-for="(insured, insuredIndex) in insuredDTOs"
:key="insuredIndex"
>
<van-collapse-item class="mt10" :name="insuredIndex + 1" v-for="(insured, insuredIndex) in insuredDTOs" :key="insuredIndex">
<div class="flex justify-content-s c-gray-dark" slot="title">
被保险人
<span class="c-gray-darker fs14">{{ insured.name }}</span>
@@ -46,10 +41,7 @@
<van-col style=" border-top-right-radius: 6px" class="bg-green-dark white" span="8">年龄</van-col>
<van-col class="bg-green-base mt2 c-gray-darker" span="8">{{ insured.name }}</van-col>
<van-col
class="bg-green-base mt2 c-gray-darker"
span="8"
>{{ insured.sex == '0' ? '男' : '女' }}</van-col>
<van-col class="bg-green-base mt2 c-gray-darker" span="8">{{ insured.sex == '0' ? '男' : '女' }}</van-col>
<van-col class="bg-green-base mt2 c-gray-darker" span="8">{{ insured.age }}</van-col>
</van-row>
<div class="text-center">
@@ -57,10 +49,7 @@
<van-divider class="fs15" :style="{ color: '#E9332E', borderColor: '#E9332E' }">投保险种信息</van-divider>
</div>
<div
style=" border-top-right-radius: 6px;border-top-left-radius: 6px"
class="flex text-center line-height table bg-green-dark white"
>
<div style=" border-top-right-radius: 6px;border-top-left-radius: 6px" class="flex text-center line-height table bg-green-dark white">
<div class="flex justify-content-c align-items-c">投保险种</div>
<div class="flex justify-content-c align-items-c">保额(</div>
<div class="flex justify-content-c align-items-c">保险期间</div>
@@ -70,29 +59,17 @@
<div v-for="(main, mainIndex) in insured.mainRisk" :key="mainIndex">
<div class="flex text-center bg-green-base mt2 c-gray-darker table">
<div class="flex justify-content-c align-items-c">{{ main.riskName }}</div>
<div
class="flex justify-content-c align-items-c"
>{{ main.amt ? amtFormat(main.amt) :'' }}</div>
<div class="flex justify-content-c align-items-c">{{ main.amt ? amtFormat(main.amt) : '' }}</div>
<div class="flex justify-content-c align-items-c">{{ main.insureName }}</div>
<div class="flex justify-content-c align-items-c">{{ main.payName }}</div>
<div
class="flex justify-content-c align-items-c"
>{{ main.prem.toFixed(2) | moneyFormat }}</div>
<div class="flex justify-content-c align-items-c">{{ main.prem.toFixed(2) | moneyFormat }}</div>
</div>
<div
class="flex text-center bg-green-base mt2 c-gray-darker table"
v-for="(addtion, addtionIndex) in main.addtion"
:key="addtionIndex"
>
<div class="flex text-center bg-green-base mt2 c-gray-darker table" v-for="(addtion, addtionIndex) in main.addtion" :key="addtionIndex">
<div class="flex justify-content-c align-items-c">{{ addtion.riskName }}</div>
<div
class="flex justify-content-c align-items-c"
>{{ addtion.amt ? amtFormat(addtion.amt) : addtion.planCode ? addtion.planCodeLabel : '' }}</div>
<div class="flex justify-content-c align-items-c">{{ addtion.amt ? amtFormat(addtion.amt) : addtion.planCode ? addtion.planCodeLabel : '' }}</div>
<div class="flex justify-content-c align-items-c">{{ addtion.insureName }}</div>
<div class="flex justify-content-c align-items-c">{{ addtion.payName }}</div>
<div
class="flex justify-content-c align-items-c"
>{{ addtion.prem.toFixed(2) | moneyFormat }}</div>
<div class="flex justify-content-c align-items-c">{{ addtion.prem.toFixed(2) | moneyFormat }}</div>
</div>
</div>
<div class="text-center">
@@ -106,15 +83,8 @@
</div>
<div class="mt15" v-for="risk in insured.riskDTOLst" :key="risk.insuanceId">
<p
style=" border-top-right-radius: 6px;border-top-left-radius: 6px"
class="text-center line-height white bg-green-dark"
>{{ risk.riskName }}</p>
<table
cellspacing="0"
style="width: 100%;border-collapse:separate; border-spacing:0px 2px;"
class="text-center c-gray-darker"
>
<p style=" border-top-right-radius: 6px;border-top-left-radius: 6px" class="text-center line-height white bg-green-dark">{{ risk.riskName }}</p>
<table cellspacing="0" style="width: 100%;border-collapse:separate; border-spacing:0px 2px;" class="text-center c-gray-darker">
<tbody>
<tr class="bg-green-base mt2 h35">
<td>首期保费</td>
@@ -130,59 +100,46 @@
</tr>
</tbody>
</table>
<div class="bg-green-base pt20 pl15 pr15" v-if='mainRiskCodes[0] == "GFRS_M0008"'>
<div class="text-center fw500 c-gray-darker fs14">产品总利益</div>
<!-- {{risk.demoLabel}} -->
<div
class="flex justify-content-s mt15"
v-for="(demoLabel, demoIndex) in risk.demoLabel"
:key="demoLabel.content"
v-if="demoIndex < 3"
>
<span class="c-gray-darker fs14">{{ demoLabel.contentLabel }}</span>
<span class="green fs14">{{ demoLabel.value }}</span>
</div>
<div
class="flex justify-content-s mt15"
v-for="(duty, dutyIndex) in dutyLst"
:key="dutyIndex"
>
<span class="c-gray-darker fs14">{{ duty.dutyName }}</span>
<span class="green fs14">{{ duty.amt }}</span>
</div>
<div class="flex justify-content-s align-items-c mt30 mb20">
<img class="w20" @click="reduce(risk)" src="@/assets/images/lessen.png" />
<van-slider
class="w220"
active-color="#E9332E"
inactive-color="#fff"
:min="1"
:max="risk.policyYear"
v-model="risk.sliderValue"
@input="input(risk.sliderValue, risk.demoValue, risk.demoLabel)"
></van-slider>
<div class="bg-green-base pt20 pl15 pr15" v-if="mainRiskCodes[0] == 'GFRS_M0008'">
<div class="text-center fw500 c-gray-darker fs14">产品总利益</div>
<!-- {{risk.demoLabel}} -->
<div class="flex justify-content-s mt15" v-for="(demoLabel, demoIndex) in risk.demoLabel" :key="demoLabel.content" v-if="demoIndex < 3">
<span class="c-gray-darker fs14">{{ demoLabel.contentLabel }}</span>
<span class="green fs14">{{ demoLabel.value }}</span>
</div>
<div class="flex justify-content-s mt15" v-for="(duty, dutyIndex) in dutyLst" :key="dutyIndex">
<span class="c-gray-darker fs14">{{ duty.dutyName }}</span>
<span class="green fs14">{{ duty.amt }}</span>
</div>
<div class="flex justify-content-s align-items-c mt30 mb20">
<img class="w20" @click="reduce(risk)" src="@/assets/images/lessen.png" />
<van-slider
class="w220"
active-color="#E9332E"
inactive-color="#fff"
:min="1"
:max="risk.policyYear"
v-model="risk.sliderValue"
@input="input(risk.sliderValue, risk.demoValue, risk.demoLabel)"
></van-slider>
<img class="w20" @click="exhibitionAdd(risk)" src="@/assets/images/add.png" />
</div>
<select-radio
class="mb10"
v-if="risk.tap"
@radioChange="radioChange(risk)"
:required="false"
:radios="risk.radios"
:value.sync="risk.tap"
></select-radio>
<img class="w20" @click="exhibitionAdd(risk)" src="@/assets/images/add.png" />
</div>
<select-radio
class="mb10"
v-if="risk.tap"
@radioChange="radioChange(risk)"
:required="false"
:radios="risk.radios"
:value.sync="risk.tap"
></select-radio>
<div class="green fs12 text-center pb15">拖动按钮查看不同年龄的保单利益</div>
<div class="green fs12 text-center pb15">拖动按钮查看不同年龄的保单利益</div>
</div>
<div class="bg-green-base pt20 pl15 pr15" v-else>
<div class="text-center fw500 c-gray-darker fs14">产品总利益</div>
<div
class="flex justify-content-s mt15"
v-for="demoLabel in risk.demoLabel"
:key="demoLabel.content"
>
<div class="flex justify-content-s mt15" v-for="demoLabel in risk.demoLabel" :key="demoLabel.content">
<span class="c-gray-darker fs14">{{ demoLabel.contentLabel }}</span>
<span class="green fs14">{{ demoLabel.value }}</span>
</div>
@@ -215,24 +172,12 @@
</van-collapse-item>
</van-collapse>
<div class="flex pt15 justify-content-s bg-white">
<van-button
class="ml20 mr10 fs17 h40 lh40"
size="large"
plain
type="danger"
@click="goToCompanyProfile"
>公司介绍</van-button>
<van-button
class="ml10 mr20 fs17 h40 lh40"
size="large"
plain
type="danger"
@click="goPDF"
>生成PDF</van-button>
<van-button class="ml20 mr10 fs17 h40 lh40" size="large" plain type="danger" @click="goToCompanyProfile">公司介绍</van-button>
<van-button class="ml10 mr20 fs17 h40 lh40" size="large" plain type="danger" @click="goPDF">生成PDF</van-button>
</div>
<div class="pt40 text-justify bg-white pr15 pl15 c-gray-base fs13 pb60">
温馨提示本资料仅供客户理解产品条款所用有关产品的说明解释承若或保证如与产品条款不一致均以产品条款为准
</div>
<div
class="pt40 text-justify bg-white pr15 pl15 c-gray-base fs13 pb60"
>温馨提示本资料仅供客户理解产品条款所用有关产品的说明解释承若或保证如与产品条款不一致均以产品条款为准</div>
<div v-if="!isWeixin" class="bottom-btn fs16">
<van-button type="danger" @click="insure" size="large">转投保</van-button>
</div>
@@ -530,36 +475,49 @@ export default {
},
//跳转到pdf 进入建议书后 根据建议书编码来查找相应的pdf
async goPDF() {
let params = {
proposalInfoDTO: {
proposalNo: localStorage.orderNo
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/proposal/pdf'
},
routerInfo: {
path: '/proposal/pdf'
}
}
//在微信端 直接跳转
if (this.isWeixin) {
return this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/proposal/pdf'
},
routerInfo: {
path: '/proposal/pdf'
}
})
}
let make = await makePdf(params)
if (make.result == '0') {
let pdfUrl = encodeURIComponent(config.imgDomain + '/returnDirectStream?imgPath=' + make.content)
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/pdfjs/web/viewer.html?file=' + pdfUrl,
title: 'PDF预览'
}
})
} else {
Toast.fail(make.resultMessage)
}
})
// let params = {
// proposalInfoDTO: {
// proposalNo: localStorage.orderNo
// }
// }
// //在微信端 直接跳转
// if (this.isWeixin) {
// return this.$jump({
// flag: 'h5',
// extra: {
// url: location.origin + '/#/proposal/pdf'
// },
// routerInfo: {
// path: '/proposal/pdf'
// }
// })
// }
// let make = await makePdf(params)
// if (make.result == '0') {
// let pdfUrl = encodeURIComponent(config.imgDomain + '/returnDirectStream?imgPath=' + make.content)
// this.$jump({
// flag: 'h5',
// extra: {
// url: location.origin + '/pdfjs/web/viewer.html?file=' + pdfUrl,
// title: 'PDF预览'
// },
// routerInfo: {
// path: '/proposal/pdf'
// }
// })
// } else {
// Toast.fail(make.resultMessage)
// }
}
},
components: {

View File

@@ -7,33 +7,96 @@
import { makePdf } from '@/api/ebiz/proposal/proposal.js'
import { Toast } from 'vant'
import config from '@/config'
import dataDictionary from '@/assets/js/utils/data-dictionary' //使用数据字典中的险种类型
import { weixinShare } from '@/assets/js/utils/wxShare.js'
export default {
data() {
let isWeixin = this.$utils.device().isWeixin //判断环境
return {
pdfUrl: ''
pdfUrl: '',
isWeixin,
title: ''
}
},
components: {
[Toast.name]: Toast
},
created() {
if (this.$route.query.checkRule == '1') {
document.title = '体检规则'
console.log(this.$assetsUrl + `images/underWritingRule.pdf`)
this.pdfUrl = location.origin + '/pdfjs/web/viewer.html?file=' + this.$assetsUrl + `images/underWritingRule.pdf`
} else {
this.init()
}
},
mounted() {
this.init()
let riskCode = localStorage.pdfShareCode
dataDictionary.riskType.some(item => {
if (item.code == riskCode) {
this.title = item.shortName + '计划书pdf'
return true
}
})
// weixinShare({
// title: this.title,
// imgUrl: this.$assetsUrl + 'images/logo.png',
// desc: '国富为您量身定制的保险产品,请查收'
// })
},
methods: {
async init() {
let params = {
proposalInfoDTO: {
proposalNo: localStorage.orderNo
}
}
let pdfUrl = ''
let make = await makePdf(params)
if (make.result == '0') {
pdfUrl = encodeURIComponent(config.imgDomain + '/returnDirectStream?imgPath=' + make.content)
if (this.$route.query.url) {
document.title = this.$route.query.name
let pdfUrl = this.$route.query.url
this.pdfUrl = location.origin + '/pdfjs/web/viewer.html?file=' + pdfUrl
} else {
Toast.fail(make.resultMessage)
this.$route.query.orderNo && (localStorage.orderNo = this.$route.query.orderNo)
this.$route.query.token && (localStorage.token = this.$route.query.token)
let params = {
proposalInfoDTO: {
// proposalNo: localStorage.orderNo
proposalNo: localStorage.orderNo || '19122416281210179267'
}
}
let pdfUrl = ''
let make = await makePdf(params)
if (make.result == '0') {
pdfUrl = encodeURIComponent(config.imgDomain + '/returnDirectStream?imgPath=' + make.content)
this.pdfUrl = location.origin + '/pdfjs/web/viewer.html?file=' + pdfUrl
if (!this.isWeixin) {
setTimeout(() => {
this.filterBtn() // 初始化分享按钮
window.appCallBack = this.appCallBack //app回调
}, 1000)
}
} else {
Toast.fail(make.resultMessage)
}
}
},
// 分享按钮
filterBtn() {
window.EWebBridge.webCallAppInJs('webview_right_button', {
btns: [
{
img: this.$assetsUrl + 'images/share@3x.png'
}
]
})
},
appCallBack(data) {
if (data.trigger == 'right_button_click') {
// eslint-disable-next-line no-undef
EWebBridge.webCallAppInJs('bridge', {
flag: 'share',
extra: {
title: this.title,
content: '国富为您量身定制的保险产品,请查收',
url: location.origin + '/#/proposal/pdf?orderNo=' + localStorage.orderNo + '&token=' + localStorage.token,
img: this.$assetsUrl + 'images/logo.png'
}
})
}
}
}