feature/GFRS-2301【需求】健康险渠道国富无忧卡金掌桂开发的需求--修改分享链接时效性,修改投保信息投保人与被保人身份证扫描组件修改,修改地址栏组件,修改保障方案金额展示,修改职业类型组件--提交人庞兴月

This commit is contained in:
pangxingyue
2021-04-01 22:08:02 +08:00
parent 977d73616c
commit dbce280ab3
6 changed files with 565 additions and 151 deletions

View File

@@ -188,19 +188,32 @@ service.interceptors.response.use(
res = JSON.parse(AESTools.AESDecrypt(res.response, configApp.REQ_PWD)) res = JSON.parse(AESTools.AESDecrypt(res.response, configApp.REQ_PWD))
} }
} }
Toast.clear() Toast.clear()
if (res.code != 0) { if (res.code != 0) {
if (res.code == 10001 || res.code == 10002) { if (res.code == 10001 || res.code == 10002) {
Dialog.confirm({ var ua = window.navigator.userAgent.toLowerCase();
confirmButtonText: '重新登录', //通过正则表达式匹配ua中是否含有MicroMessenger字符串
message: '你已被登出,可以取消继续留在该页面,或者重新登录' if(ua.match(/MicroMessenger/i) == 'micromessenger'){
}).then(() => { Dialog.alert({
//eslint-disable-next-line title: '提示',
EWebBridge.webCallAppInJs('bridge', { confirmButtonText: '退出',
flag: 'login' message: '当前链接已失效,请您联系业务员获取(重新分享)。',
}).then(() => {
window.close();
WeixinJSBridge.call('closeWindow');
});
} else {
Dialog.confirm({
confirmButtonText: '重新登录',
message: '你已被登出,可以取消继续留在该页面,或者重新登录'
}).then(() => {
//eslint-disable-next-line
EWebBridge.webCallAppInJs('bridge', {
flag: 'login'
})
}) })
}) }
} else { } else {
//Toast.fail(res.msg) //Toast.fail(res.msg)
} }

View File

@@ -0,0 +1,295 @@
<template>
<div class="occupation pb70">
<van-search v-model="searchParams" @input="onSearch" placeholder="请输入搜索关键词" show-action shape="round" @clear="clearSearch" @search="onSearch">
<div slot="action" @click="onSearch">搜索</div>
</van-search>
<div class="choose-result fs12 pl25" v-if="third.code">
<p>职业代码{{ third.code }}</p>
<p>职业{{ chooseName }}</p>
</div>
<div>
<div :class="[isSearch ? 'hidden' : '']">
<p class="fs14 pl20 fwb pv5">常用职业</p>
<div class="common-occupation flex flex-wrap fs12 ph25">
<div v-for="(item, index) in commonList" @click="commonChoose(item, index)" :key="index" :class="[item.isActive ? 'active' : '', 'fwb']">
{{ item.name }}
</div>
</div>
</div>
<div :class="[isSearch ? 'hidden' : '']">
<p class="fs14 pl20 fwb pv5">全部职业</p>
<div class="main-area fs12 ph10 pb20">
<div class="item ph10">
<p class="p5" v-for="(item, index) in occupationList" :key="index" @click="handleFirst(item)" :class="{ active: first.code == item.code }">
{{ item.name }}
</p>
</div>
<div class="item ph10">
<p class="p5" v-for="(item, index) in sec" :key="index" @click="handleSec(item)" :class="{ active: second.code == item.code }">
{{ item.name }}
</p>
</div>
<div class="item ph10">
<p class="p5" v-for="(item, index) in thi" :key="index" @click="handleThi(item)" :class="{ active: third.code == item.code }">
{{ item.name }}
</p>
</div>
</div>
</div>
<div :class="[isSearch ? '' : 'hidden']">
<p class="fs14 pl20 fwb pv5">搜索结果</p>
<div class="item p10 search-result fs14 flex flex-direction-colunm">
<p class="p5 mv5" :class="[item.isActive ? 'active' : '']" v-for="(item, index) in searchList" @click="searchChoose(item, index)" :key="index">
<span v-html="item.showName.replace(new RegExp(searchParams, 'g'), `<span class=&quot;red&quot;>${searchParams}</span>`)"></span>
</p>
</div>
</div>
</div>
<div class="close-btn fixed">
<van-button type="danger" @click="ensureChoose">确认选择</van-button>
<!-- <van-button type="primary" @click="$emit('chooseOccupation', '')">取消</van-button> -->
</div>
</div>
</template>
<script>
import occupationData from './data/occupation'
import { getBankList } from '@/api/ebiz/sale/sale'
import { Search, Sticky } from 'vant'
export default {
name: 'Occupation',
props: {
name: {
type: String,
default: ''
},
code: {
type: String,
default: ''
},
life: {
type: String,
default: ''
},
health: {
type: String,
default: ''
}
},
data() {
return {
occupationList: [],
sec: [], //二级数据
thi: [], //三级数据
choose: [],
searchParams: '',
first: {},
second: {},
third: {},
chooseName: '',
lifeGrade: '',
healthGrade: '',
commonList: [],
isSearch: false, // 是否搜索中
searchList: []
}
},
components: {
[Search.name]: Search,
[Sticky.name]: Sticky
},
watch: {
code(newValue) {
this.occupationList.forEach(occupation => {
occupation.subs.forEach(sub => {
sub.subs.forEach(occupaitonItem => {
if (occupaitonItem.code == newValue) {
this.first = occupation
this.sec = occupation.subs
this.second = sub
this.thi = sub.subs
this.third = occupaitonItem
this.chooseName = this.third.name
}
})
})
})
}
},
created() {
// let occupationData = JSON.parse(window.localStorage.getItem('OccupationList'))
this.init(occupationData)
},
mounted() {},
methods: {
init(data) {
this.occupationList = data
this.chooseName = this.name
this.third.code = this.code
this.lifeGrade = this.life
this.healthGrade = this.health
this.third = {}
getBankList({
operateType: 'hot_occupation'
}).then(res => {
if (res.result == '0') {
this.commonList = res.content
} else {
this.$toast(res.resultMessage)
}
})
},
handleFirst(item) {
this.sec = item.subs
this.first = item
this.second = {}
this.thi = []
this.third = {}
this.commonInit()
},
handleSec(item) {
this.thi = item.subs
this.second = item
this.third = {}
this.commonInit()
},
handleThi(item) {
this.third = item
this.chooseName = this.third.name
this.commonInit()
},
ensureChoose() {
if (this.third.code) {
this.$emit('chooseOccupation', this.third)
} else {
this.$toast('请选择职业')
}
},
onSearch() {
this.sec = []
this.thi = []
this.first = {}
this.second = {}
this.third = {}
this.commonInit()
if (this.searchParams) {
this.searchList = []
this.isSearch = true
this.occupationList.forEach(first => {
first.subs.forEach(second => {
second.subs.forEach(third => {
if (third.name.indexOf(this.searchParams) != -1) {
// this.searchList.push(Object.assign(third, { isActive: false }, { showName: first[index1].name + second[index2].name + third.name }))
this.searchList.push(Object.assign(third, { isActive: false }, { showName: first.name + ' - ' + second.name + ' - ' + third.name }))
console.log('first = ', first)
}
})
})
})
console.log('this.searchList ==', this.searchList)
} else {
this.isSearch = false
}
},
clearSearch() {
this.init(occupationData)
},
commonChoose(item, index) {
this.commonInit()
this.commonList[index].isActive = true
this.occupationList.forEach(occupation => {
occupation.subs.forEach(sub => {
sub.subs.forEach(occupaitonItem => {
if (occupaitonItem.code == item.code) {
this.first = occupation
this.sec = occupation.subs
this.second = sub
this.thi = sub.subs
this.third = occupaitonItem
this.chooseName = this.third.name
}
})
})
})
},
searchChoose(item, index) {
this.searchList.forEach(item => {
item.isActive = false
})
this.searchList[index].isActive = true
this.third = item
this.chooseName = this.third.name
},
commonInit() {
this.commonList.forEach(item => {
item.isActive = false
})
}
}
}
</script>
<style lang="scss" scoped>
.close-btn {
bottom: 0;
width: 100%;
.van-button {
width: 100% !important;
}
}
.occupation {
.main-area {
display: flex;
justify-content: space-between;
.item {
width: 0;
flex-grow: 1;
display: flex;
flex-direction: column;
height: 360px;
overflow-y: auto;
}
}
.choose-result {
width: 100%;
background: #ffffff;
line-height: 20px;
color: #e9332e;
box-sizing: border-box;
height: 40px;
}
.hidden {
visibility: hidden;
}
.common-occupation {
width: 100%;
box-sizing: border-box;
display: flex;
// flex-wrap: wrap;
align-items: center;
div {
// width: 30%;
// height: 20px;
padding: 4px;
line-height: 20px;
text-align: center;
border: 1px solid #f2f2f2;
margin: 5px;
border-radius: 10px;
box-sizing: border-box;
}
}
.active {
color: #e9332e;
background-color: #f2f2f2;
}
.search-result {
height: 420px;
overflow-y: auto;
p {
// margin: 0 auto;
text-align: left;
min-width: 120px;
}
}
}
</style>

View File

@@ -750,31 +750,35 @@ export default {
}) })
} }
}, },
async share() { async share() {
let valid = await this.$validator.validate() let valid = await this.$validator.validate()
console.log(valid) console.log(valid)
if (true !== valid) { if (true !== valid) {
console.log(this.$validator) console.log(this.$validator)
return this.$toast(this.$validator.errors.all()[0]) return this.$toast(this.$validator.errors.all()[0])
} }
let shareName = this.underWriteData.appntName let shareName = this.underWriteData.name
localStorage.appntName = this.underWriteData.appntName localStorage.name = this.underWriteData.name
localStorage.bankName = this.underWriteData.bankName localStorage.bankName = this.underWriteData.bankName
localStorage.bankCode = this.underWriteData.bankCode localStorage.bankCode = this.underWriteData.bankCode
localStorage.bankListName = this.bankListName localStorage.bankListName = this.bankListName
console.log(this.underWriteData.bankName, this.underWriteData.bankCode, this.bankListName, this.underWriteData.name) console.log(this.underWriteData.bankName, this.underWriteData.bankCode, this.bankListName, this.underWriteData.name)
let url = location.origin + '/#/cardList/phoneCode?orderNo=' + localStorage.orderNo + '&token=' + localStorage.token let res = await getShareParam({ shareType: 'card_pay' })
console.log(url) let url = location.origin + '/#/cardList/pay?orderNo=' + localStorage.orderNo + '&token=' + res.content
EWebBridge.webCallAppInJs('bridge', { if (res.result == '0') {
flag: 'share', EWebBridge.webCallAppInJs('bridge', {
extra: { flag: 'share',
title: `国富人寿卡单投保(${shareName})付款`, extra: {
content: '付款进行', title: `国富人寿卡单投保(${shareName})付款`,
url: url, content: '付款进行',
img: this.$assetsUrl + 'images/logo.png', url: url,
}, img: this.$assetsUrl + 'images/logo.png'
}) }
}, })
} else {
return this.$toast(res.resultMessage)
}
}
}, },
} }
</script> </script>

View File

@@ -37,7 +37,7 @@
clearable clearable
@blur="getRelatedData(userInfo.idNo, '1')" @blur="getRelatedData(userInfo.idNo, '1')"
> >
<van-button v-if="userInfo.idType == 1" slot="button" size="small" type="danger" round @click="selectClick('3')">证件扫描</van-button> <van-button v-if="userInfo.idType == 1" slot="button" size="small" type="danger" round @click="selectClick('3','','1')">证件扫描</van-button>
</van-field> </van-field>
<select-radio required :radios="sexRadio" label="性别" name="性别" v-validate="'required'" :value.sync="userInfo.sex"></select-radio> <select-radio required :radios="sexRadio" label="性别" name="性别" v-validate="'required'" :value.sync="userInfo.sex"></select-radio>
<FieldDatePicter <FieldDatePicter
@@ -65,22 +65,7 @@
/> />
<van-field v-model="userInfo.email" required label="邮箱" name="邮箱" placeholder="请输入" v-validate="'required|email'" clearable /> <van-field v-model="userInfo.email" required label="邮箱" name="邮箱" placeholder="请输入" v-validate="'required|email'" clearable />
<!-- <van-field v-model="userInfo.workcompany" required label="工作单位" name="工作单位" placeholder="请输入" v-validate="'required'" maxlength="50" clearable /> --> <!-- <van-field v-model="userInfo.workcompany" required label="工作单位" name="工作单位" placeholder="请输入" v-validate="'required'" maxlength="50" clearable /> -->
<!-- <template v-if="false"> --> <van-field @click="openOccupation('1')" label="职业类别" placeholder="请输入" name="职业类别" :value="userInfo.occupationName" right-icon="arrow" />
<occupation-picker
:value.sync="userInfo.occupationCode"
:chooseName.sync="userInfo.occupationName"
:lifeGrade.sync="userInfo.lifeGrade"
:healthGrade.sync="userInfo.healthGrade"
clearable
label="职业类别"
name="职业类别"
required
v-validate="'required'"
placeholder="请选择"
:parentShowPicker.sync="occupationShowPicker"
@on-click="selectClick('2')"
@on-choose="chooseOccupation"
/>
<van-field <van-field
:value="userInfo.nativeplace | idToText('nativeplace')" :value="userInfo.nativeplace | idToText('nativeplace')"
readonly readonly
@@ -112,7 +97,7 @@
right-icon="arrow" right-icon="arrow"
placeholder="请选择" placeholder="请选择"
v-validate="'required'" v-validate="'required'"
@click="homeShow = true" @click="areaSelect('1')"
/> />
<van-field v-model="userInfo.homeAddress" label name="详细地址" placeholder="请输入详细地址" v-validate="'required'" clearable maxlength="30" /> <van-field v-model="userInfo.homeAddress" label name="详细地址" placeholder="请输入详细地址" v-validate="'required'" clearable maxlength="30" />
<!-- </template> --> <!-- </template> -->
@@ -165,7 +150,7 @@
clearable clearable
@blur="getRelatedData(insuredInfo.idNo, '2')" @blur="getRelatedData(insuredInfo.idNo, '2')"
> >
<van-button v-if="insuredInfo.idType == 1" slot="button" size="small" type="danger" round @click="selectClick('3')">证件扫描</van-button> <van-button v-if="insuredInfo.idType == 1" slot="button" size="small" type="danger" round @click="selectClick('3','','2')">证件扫描</van-button>
</van-field> </van-field>
<select-radio required :radios="sexRadio" label="性别" name="性别" v-validate="'required'" :value.sync="userInfo.insuredSex"></select-radio> <select-radio required :radios="sexRadio" label="性别" name="性别" v-validate="'required'" :value.sync="userInfo.insuredSex"></select-radio>
<FieldDatePicter <FieldDatePicter
@@ -190,22 +175,8 @@
v-validate="'required|mobile'" v-validate="'required|mobile'"
maxlength="11" maxlength="11"
/> />
<van-field v-model="insuredInfo.email" required label="邮箱" name="邮箱" placeholder="请输入" v-validate="'required|email'" clearable /> <van-field v-model="insuredInfo.email" required label="邮箱" name="邮箱" placeholder="请输入" v-validate="'required|email'" clearable />
<occupation-picker <van-field @click="openOccupation('2')" label="职业类别" placeholder="请输入" name="职业类别" :value="insuredInfo.occupationName" right-icon="arrow" />
:value.sync="insuredInfo.occupationCode"
:chooseName.sync="insuredInfo.occupationName"
:lifeGrade.sync="insuredInfo.lifeGrade"
:healthGrade.sync="insuredInfo.healthGrade"
clearable
label="职业类别"
name="职业类别"
required
v-validate="'required'"
placeholder="请选择"
:parentShowPicker.sync="occupationShowPicker"
@on-click="selectClick('2')"
@on-choose="chooseOccupation"
/>
<van-field <van-field
:value="insuredInfo.nativeplace | idToText('nativeplace')" :value="insuredInfo.nativeplace | idToText('nativeplace')"
readonly readonly
@@ -215,7 +186,7 @@
v-validate="'required'" v-validate="'required'"
right-icon="arrow" right-icon="arrow"
placeholder="请选择" placeholder="请选择"
@click="toSelect('1')" @click="toSelect('11')"
/> />
<van-field <van-field
:value="insuredInfo.marriage | idToText('marriage')" :value="insuredInfo.marriage | idToText('marriage')"
@@ -226,7 +197,7 @@
v-validate="'required'" v-validate="'required'"
right-icon="arrow" right-icon="arrow"
placeholder="请选择" placeholder="请选择"
@click="toSelect('10')" @click="toSelect('66')"
/> />
<van-field <van-field
v-model="insuredInfo.homeName" v-model="insuredInfo.homeName"
@@ -237,7 +208,7 @@
right-icon="arrow" right-icon="arrow"
placeholder="请选择" placeholder="请选择"
v-validate="'required'" v-validate="'required'"
@click="homeShow = true" @click="areaSelect('2')"
/> />
<van-field v-model="insuredInfo.homeAddress" label name="详细地址" placeholder="请输入详细地址" v-validate="'required'" clearable maxlength="30" /> <van-field v-model="insuredInfo.homeAddress" label name="详细地址" placeholder="请输入详细地址" v-validate="'required'" clearable maxlength="30" />
</van-cell-group> </van-cell-group>
@@ -296,21 +267,7 @@
maxlength="11" maxlength="11"
/> />
<van-field v-model="userInfo.email" required label="邮箱" name="邮箱" placeholder="请输入" v-validate="'required|email'" clearable /> <van-field v-model="userInfo.email" required label="邮箱" name="邮箱" placeholder="请输入" v-validate="'required|email'" clearable />
<occupation-picker <van-field readonly label="职业类别" name="职业类别" :value="userInfo.occupationName" right-icon="arrow" />
:value.sync="userInfo.occupationCode"
:chooseName.sync="userInfo.occupationName"
:lifeGrade.sync="userInfo.lifeGrade"
:healthGrade.sync="userInfo.healthGrade"
clearable
label="职业类别"
name="职业类别"
required
v-validate="'required'"
placeholder="请选择"
:parentShowPicker.sync="occupationShowPicker"
@on-click="selectClick('2')"
@on-choose="chooseOccupation"
/>
<van-field <van-field
:value="userInfo.nativeplace | idToText('nativeplace')" :value="userInfo.nativeplace | idToText('nativeplace')"
readonly readonly
@@ -319,8 +276,7 @@
name="国籍" name="国籍"
v-validate="'required'" v-validate="'required'"
right-icon="arrow" right-icon="arrow"
placeholder="请选择" placeholder="请选择"
@click="toSelect('1')"
/> />
<van-field <van-field
:value="userInfo.marriage | idToText('marriage')" :value="userInfo.marriage | idToText('marriage')"
@@ -330,8 +286,7 @@
name="婚姻状况" name="婚姻状况"
v-validate="'required'" v-validate="'required'"
right-icon="arrow" right-icon="arrow"
placeholder="请选择" placeholder="请选择"
@click="toSelect('6')"
/> />
<van-field <van-field
v-model="userInfo.homeName" v-model="userInfo.homeName"
@@ -341,10 +296,9 @@
required required
right-icon="arrow" right-icon="arrow"
placeholder="请选择" placeholder="请选择"
v-validate="'required'" v-validate="'required'"
@click="homeShow = true"
/> />
<van-field v-model="userInfo.homeAddress" label name="详细地址" placeholder="请输入详细地址" v-validate="'required'" clearable maxlength="30" /> <van-field readonly v-model="userInfo.homeAddress" label name="详细地址" placeholder="请输入详细地址" v-validate="'required'" clearable maxlength="30" />
</van-cell-group> </van-cell-group>
<!-- 受益人信息 --> <!-- 受益人信息 -->
<van-cell-group class="mt10"> <van-cell-group class="mt10">
@@ -361,7 +315,7 @@
v-validate="'required'" v-validate="'required'"
right-icon="arrow" right-icon="arrow"
placeholder="请选择" placeholder="请选择"
@click="toSelect('12')" @click="toSelect('10')"
/> />
<FieldDatePicter <FieldDatePicter
v-validate="'required'" v-validate="'required'"
@@ -401,17 +355,21 @@
<van-goods-action-button type="danger" text="立即投保" @click="nextStep" v-no-more-click="1000" style="border-radius: 0em; width: 50%; height: 40px" /> <van-goods-action-button type="danger" text="立即投保" @click="nextStep" v-no-more-click="1000" style="border-radius: 0em; width: 50%; height: 40px" />
</van-goods-action> </van-goods-action>
<!-- 职业类别弹窗 -->
<van-popup v-model="occupationShowPicker" position="bottom">
<occupation-for-loop @chooseOccupation="chooseOccupation" :name="occupationName" :code="occupationCode"></occupation-for-loop>
</van-popup>
<!-- 字段选择 --> <!-- 字段选择 -->
<van-popup v-model="popupShow" position="bottom"> <van-popup v-model="popupShow" position="bottom">
<van-picker show-toolbar :columns="columns" @confirm="onConfirm" @cancel="popupShow = false" /> <van-picker show-toolbar :columns="columns" @confirm="onConfirm" :default-index="pickerIndex" @cancel="popupShow = false" />
</van-popup> </van-popup>
<!-- 地区选择 --> <!-- 地区选择 -->
<van-popup v-model="areaShow" position="bottom"> <!-- <van-popup v-model="areaShow" position="bottom">
<van-area :area-list="areaList" value="110101" @confirm="sureArea($event, '1')" @cancel="areaShow = false" /> <van-area :area-list="areaList" value="110101" @confirm="sureArea($event, '1')" @cancel="areaShow = false" />
</van-popup> </van-popup> -->
<!-- 家庭地址选择 --> <!-- 家庭地址选择 -->
<van-popup v-model="homeShow" position="bottom"> <van-popup v-model="homeShow" position="bottom">
<van-area :area-list="areaList" value="110101" @confirm="sureArea($event, '2')" @cancel="homeShow = false" /> <van-area :area-list="areaList" :value="areaCode" @confirm="sureArea($event, '2')" @cancel="homeShow = false" />
</van-popup> </van-popup>
<!-- 户籍选择 --> <!-- 户籍选择 -->
<van-popup v-model="censusShow" position="bottom"> <van-popup v-model="censusShow" position="bottom">
@@ -439,7 +397,9 @@ import IdentityCardScan from '@/components/ebiz/sale/IdentityCardScan'
import idNoCheck from '@/assets/js/utils/idNoCheck' import idNoCheck from '@/assets/js/utils/idNoCheck'
import beforeDate from '@/assets/js/utils/getBeforeDate.js' import beforeDate from '@/assets/js/utils/getBeforeDate.js'
import afterDate from '@/assets/js/utils/getAfterDate.js' import afterDate from '@/assets/js/utils/getAfterDate.js'
import CacheUtils from '@/assets/js/utils/cacheUtils'
import { idToData } from './js/verification' import { idToData } from './js/verification'
import OccupationForLoop from '@/components/ebiz/occipation/OccupationForLoop'
import { selectComp, getIdentityInfo } from './js/methods' import { selectComp, getIdentityInfo } from './js/methods'
import Vue from 'vue' import Vue from 'vue'
import { GoodsAction, GoodsActionIcon, GoodsActionButton } from 'vant' import { GoodsAction, GoodsActionIcon, GoodsActionButton } from 'vant'
@@ -462,6 +422,7 @@ export default {
[RadioGroup.name]: RadioGroup, [RadioGroup.name]: RadioGroup,
[Radio.name]: Radio, [Radio.name]: Radio,
[IdentityCardScan.name]: IdentityCardScan, [IdentityCardScan.name]: IdentityCardScan,
OccupationForLoop,
}, },
data() { data() {
return { return {
@@ -562,8 +523,11 @@ export default {
occupationShowPicker: false, occupationShowPicker: false,
timeId: null, timeId: null,
chooseProducts: JSON.parse(localStorage.chooseProducts), chooseProducts: JSON.parse(localStorage.chooseProducts),
trialList: JSON.parse(localStorage.trialList), trialList: JSON.parse(CacheUtils.getLocItem('trialList')),
pdf: ['', '', ''], pdf: ['', '', ''],
insureType: '',
pickerIndex: 0,
areaCode: '110101',
} }
}, },
created() { created() {
@@ -595,6 +559,53 @@ export default {
this.allPrice = this.trialList[0].prem this.allPrice = this.trialList[0].prem
}, },
methods: { methods: {
/**
* @description:
* @param {*} data
* @return {*}
*/
chooseOccupation(data) {
let { code, name, healthGrade, lifeGrade } = data
this.$jump({
flag: 'navigation',
extra: {
title: '职业类别',
hiddenRight: '1'
}
})
this.occupationShowPicker = false
if (this.insureType === '1') {
this.userInfo.occupationName = name
this.userInfo.occupationCode = code
} else if (this.insureType === '2') {
this.insuredInfo.occupationName = name
this.insuredInfo.occupationCode = code
}
},
/**
* @description:
* @param {*}
* @return {*}
*/
openOccupation(insureType) {
this.occupationShowPicker = !this.occupationShowPicker
this.insureType = insureType
if (this.insureType === '1') {
this.occupationName = this.userInfo.occupationName
this.occupationCode = this.userInfo.occupationCode
} else if (this.insureType === '2') {
this.occupationName = this.insuredInfo.occupationName
this.occupationCode = this.insuredInfo.occupationCode
}
},
areaSelect(insureType) {
;[this.homeShow, this.insureType] = [true, insureType]
if (insureType === '1') {
this.areaCode = this.userInfo.homeArea
} else if (insureType === '2') {
this.areaCode = this.insuredInfo.homeArea
}
},
underWrite(orderNo) { underWrite(orderNo) {
let data = { let data = {
platform: 'app', platform: 'app',
@@ -659,13 +670,22 @@ export default {
// console.log('name',name) // console.log('name',name)
this.insuredInfo.name = name this.insuredInfo.name = name
}, },
selectClick(index, value) { /**
* @description:
* @param {*} index
* @param {*} value
* @param {*} insureType '1'为投保人 '2'为被投保人
* @return {*}
*/
selectClick(index, value, insureType) {
if (value !== undefined) { if (value !== undefined) {
this.selectUser = value this.selectUser = value
} }
this.insureType = insureType
selectComp(this, index, insureType)
// console.log(index, value) // console.log(index, value)
// localStorage.setItem('value', value) // localStorage.setItem('value', value)
selectComp(this, index, '1')
}, },
// closeBtn() { // closeBtn() {
// // 筛选按钮的显示 // // 筛选按钮的显示
@@ -702,24 +722,14 @@ export default {
this.isScan = false this.isScan = false
} }
}, },
chooseOccupation() {
this.$jump({
flag: 'navigation',
extra: {
title: '投被保人信息',
hiddenRight: '1',
},
})
this.occupationShowPicker = false
},
//弹框选择 //弹框选择
toSelect(pickerType, valueKey) { toSelect(pickerType, valueKey) {
console.log(valueKey)
//pickerType 1、国家地区 2、证件类型 3、文化程度 4、有无社保(弃用) 5、税收居民身份 6、婚姻状况 7、在职情况 8、收入来源, 9 关系 //pickerType 1、国家地区 2、证件类型 3、文化程度 4、有无社保(弃用) 5、税收居民身份 6、婚姻状况 7、在职情况 8、收入来源, 9 关系
;[this.popupShow, this.pickerType] = [true, pickerType] ;[this.popupShow, this.pickerType] = [true, pickerType]
if (valueKey) this.valueKey = valueKey if (valueKey) this.valueKey = valueKey
if (pickerType == '1') { if (pickerType == '1') {
this.columns = DataDictionary.nativeplace this.columns = DataDictionary.nativeplace
this.pickerIndex = (this.userInfo.nativeplace-1) > 0 ? (this.userInfo.nativeplace-1) : 0
} else if (pickerType == '2') { } else if (pickerType == '2') {
this.columns = DataDictionary.insuredIdType this.columns = DataDictionary.insuredIdType
} else if (pickerType == '3') { } else if (pickerType == '3') {
@@ -733,20 +743,84 @@ export default {
this.columns = DataDictionary.taxIdentity this.columns = DataDictionary.taxIdentity
} else if (pickerType == '6') { } else if (pickerType == '6') {
this.columns = DataDictionary.marriage this.columns = DataDictionary.marriage
this.pickerIndex = (this.userInfo.marriage-1) > 0 ? (this.userInfo.marriage-1) : 0
} else if (pickerType == '7') { } else if (pickerType == '7') {
this.columns = DataDictionary.workCondition this.columns = DataDictionary.workCondition
} else if (pickerType == '8') { } else if (pickerType == '8') {
this.columns = DataDictionary.salarySource this.columns = DataDictionary.salarySource
} else if (pickerType == '9') { } else if (pickerType == '9') {
this.columns = DataDictionary.relationToAppnt this.columns = DataDictionary.relationToAppnt
} else if (pickerType == '10') { } else if (pickerType == '66') {
this.columns = DataDictionary.marriage this.columns = DataDictionary.marriage
this.pickerIndex = (this.insuredInfo.marriage-1) > 0 ? (this.insuredInfo.marriage-1) : 0
} else if (pickerType == '11') { } else if (pickerType == '11') {
this.columns = DataDictionary.insuredIdType this.columns = DataDictionary.nativeplace
} else if (pickerType == '12') { this.pickerIndex = (this.insuredInfo.nativeplace-1) > 0 ? (this.insuredInfo.nativeplace-1) : 0
} else if (pickerType == '10') {
this.trialList = `{
"code": 0,
"message": "成功",
"content": {
"result": "0",
"resultMessage": "",
"content": null,
"trialList": [
{
"productCode": "GFRS_M0041",
"amt": null,
"standPrem": null,
"prem": 100,
"isMainRisk": null,
"isRemit": null,
"remitType": null,
"duty": null,
"showPrem": 100,
"trialType": null,
"schemeName": "国富无忧卡A",
"schemeCode": "M0041A",
"timeliness": 3
},
{
"productCode": "GFRS_M0041",
"amt": null,
"standPrem": null,
"prem": 200,
"isMainRisk": null,
"isRemit": null,
"remitType": null,
"duty": null,
"showPrem": 200,
"trialType": null,
"schemeName": "国富无忧卡B",
"schemeCode": "M0041B",
"timeliness": 3
},
{
"productCode": "GFRS_M0041",
"amt": null,
"standPrem": null,
"prem": 300,
"isMainRisk": null,
"isRemit": null,
"remitType": null,
"duty": null,
"showPrem": 300,
"trialType": null,
"schemeName": "国富无忧卡C",
"schemeCode": "M0041C",
"timeliness": 3
}
],
"flag": "0"
}
}`
this.columns = []
this.trialList = JSON.parse(this.trialList).content.trialList;
console.log(this.trialList, '================this.trialList================')
this.trialList.forEach((item)=>{ this.trialList.forEach((item)=>{
this.columns.push({ this.columns.push({
id:schemeCode, id:item.schemeCode,
text:item.schemeName text:item.schemeName
}) })
}) })
@@ -780,15 +854,21 @@ export default {
} else if (this.pickerType == '8') { } else if (this.pickerType == '8') {
this.userInfo.salarySource = value.id this.userInfo.salarySource = value.id
} else if (this.pickerType == '9') { } else if (this.pickerType == '9') {
this.userInfo.relationToInsured = value.id this.userInfo.relationToInsured = value.id
} else if (this.pickerType == '10') { } else if (this.pickerType == '66') {
this.insuredInfo.marriage = value.text this.insuredInfo.marriage = value.id
this.insuredInfo.marriageStatus = value.text this.insuredInfo.marriageStatus = value.text
} else if (this.pickerType == '11') { } else if (this.pickerType == '11') {
this.insuredInfo.idType = value.id this.insuredInfo.nativeplace = value.id
} else if (this.pickerType == '12') { } else if (this.pickerType == '10') {
this.schemeName = value.text this.schemeName = value.text
this.schemeCode = value.id this.schemeCode = value.id
for (let item of this.trialList) {
if (item.schemeCode === this.schemeCode) {
this.allPrice = item.prem
break;
}
}
} }
}, },
//证件起始截止日期 //证件起始截止日期
@@ -889,20 +969,20 @@ export default {
{ {
//指定生效日期 //指定生效日期
//如果录入日期晚于当前日期 //如果录入日期晚于当前日期
// if (Date.parse(val) < Date.parse(new Date())) { if (Date.parse(val) < Date.parse(new Date())) {
// this.userInfo.birthday = '' return this.$toast('当前日期早于当日')
// this.$refs.birthday.date = '' }
// return this.$toast('当前日期早于当日') let currentDataArr = val.split('-')
// } let currentData = currentDataArr[0] + '年' + currentDataArr[1] + '月' + currentDataArr[2] + '日'
// console.log(val) let insuYear = JSON.parse(localStorage.insuYear)
// console.log(Date.parse(val)) switch (insuYear.insuYearFlag){
// console.log(new Date()) case 'D':
// let str = '',flag='',date='',valArr=val.split('-'); var hoDate = Date.parse(val)/1000 + insuYear['insuYear']*24*3600
// switch (flag){ break;
// case 'd': }
// str = valArr[2]+date var productDate = new Date(parseInt(hoDate) * 1000);
// break; var productDateTime = productDate.getFullYear() + '年' + (productDate.getMonth() + 1) + '月' + productDate.getDate() + '日';
// } this.productDate = currentData + '至' + productDateTime + '时止'
} }
break break
} }
@@ -967,6 +1047,22 @@ export default {
this.insuredInfo.idType = data.customerIdType //证件类型 this.insuredInfo.idType = data.customerIdType //证件类型
this.insuredInfo.idNo = data.customerIdNumber //证件类别 this.insuredInfo.idNo = data.customerIdNumber //证件类别
} }
this.insuredInfo.email = data.email //邮箱
this.insuredInfo.mobile = data.customerPhone //移动电话
this.insuredInfo.homeProvince = data.homeProvince //家庭省
this.insuredInfo.homeCity = data.homeCity //家庭市
this.insuredInfo.homeArea = data.homeArea //家庭区
if (data.homeProvince && data.homeCity && data.homeArea) {
this.insuredInfo.homeName = getAreaName([{ code: data.homeProvince }, { code: data.homeCity }, { code: data.homeArea }]) //家庭地址
}
this.insuredInfo.homeAddress = data.homeAddress //家庭详细地址
this.insuredInfo.occupationCode = data.occupationCode
this.insuredInfo.occupationName = data.occupationName
this.insuredInfo.lifeGrade = data.lifeGrade
this.insuredInfo.healthGrade = data.healthGrade
this.insuredInfo.nativeplace = data.country
this.insuredInfo.marriage = data.marryStatus
// 计算年龄 // 计算年龄
// let age = utilsAge.getAge(this.userInfo.birthday, new Date()) // let age = utilsAge.getAge(this.userInfo.birthday, new Date())
@@ -1202,19 +1298,14 @@ export default {
let params = { let params = {
orderDTO: { orderDTO: {
orderInfoDTO: { orderInfoDTO: {
bnfFlag: '0', bnfFlag: '0',
// cvaliDate: this.cvaliDate supportBank: '0'
}, },
appntDTO: {}, appntDTO: this.userInfo,
insuredDTOs: [ insuredDTOs: [this.insuredInfo]
{
riskDTOLst: this.riskDTOLst,
},
],
}, },
} }
params.orderDTO.appntDTO = this.userInfo
params.orderDTO.insuredDTOs = [this.insuredInfo]
//组装险种提交数据 //组装险种提交数据
let [mainRiskCode, riskDTOLst] = ['', []] let [mainRiskCode, riskDTOLst] = ['', []]
let rollInResult = '' //校验预计转入保费结果 let rollInResult = '' //校验预计转入保费结果
@@ -1261,7 +1352,10 @@ export default {
// this.trialInfos[index].amt = this.trialList[0].prem // this.trialInfos[index].amt = this.trialList[0].prem
// } // }
// console.log() // console.log()
// riskItem = Object.assign(riskItem, this.trialInfos[index]) // riskItem = Object.assign(riskItem, this.trialInfos[index])
//todo
riskItem['proScheme'] = this.schemeName
riskItem['proSchemeCode'] = this.schemeCode
riskDTOLst.push(riskItem) riskDTOLst.push(riskItem)
}) })
if (!rollInResult) { if (!rollInResult) {
@@ -1301,10 +1395,16 @@ export default {
;[this.userInfo.companyProvince, this.userInfo.companyCity, this.userInfo.companyArea] = [area[0].code, area[1].code, area[2].code] ;[this.userInfo.companyProvince, this.userInfo.companyCity, this.userInfo.companyArea] = [area[0].code, area[1].code, area[2].code]
this.areaShow = false this.areaShow = false
break break
case '2': //家庭地址 case '2': //家庭地址
this.userInfo.homeName = getAreaName(area) if (this.insureType === '1') {
;[this.userInfo.homeProvince, this.userInfo.homeCity, this.userInfo.homeArea] = [area[0].code, area[1].code, area[2].code] this.userInfo.homeName = getAreaName(area)
this.homeShow = false ;[this.userInfo.homeProvince, this.userInfo.homeCity, this.userInfo.homeArea] = [area[0].code, area[1].code, area[2].code]
this.homeShow = false
} else if (this.insureType === '2') {
this.insuredInfo.homeName = getAreaName(area)
;[this.insuredInfo.homeProvince, this.insuredInfo.homeCity, this.insuredInfo.homeArea] = [area[0].code, area[1].code, area[2].code]
this.homeShow = false
}
break break
case '3': //户籍 case '3': //户籍
this.census = getAreaName(area) this.census = getAreaName(area)
@@ -1315,7 +1415,7 @@ export default {
}, },
//获取身份证扫描信息 //获取身份证扫描信息
getIdentityInfo(data) { getIdentityInfo(data) {
getIdentityInfo(this, data, '1') getIdentityInfo(this, data, this.insureType)
}, },
// getIdentityInfo(data) { // getIdentityInfo(data) {
// console.log(data) // console.log(data)

View File

@@ -88,7 +88,7 @@ export function getIdentityInfo(that, data, type) {
// 正面 // 正面
if (data.name && data.name != '待识别') { if (data.name && data.name != '待识别') {
that.userInfo.insuredName = data.name that.userInfo.insuredName = data.name
that.userInfo.insuredidNo = data.idNo that.insuredInfo.idNo = that.userInfo.insuredidNo = data.idNo
that.userInfo.insuredBirthday = `${data.birthYear}-${data.birthMonth}-${data.birthDay}` that.userInfo.insuredBirthday = `${data.birthYear}-${data.birthMonth}-${data.birthDay}`
that.userInfo.insuredSex = data.gender == '男' ? '0' : '1' that.userInfo.insuredSex = data.gender == '男' ? '0' : '1'
} }

View File

@@ -24,6 +24,7 @@
import { Cell, Toast, Dialog } from 'vant' import { Cell, Toast, Dialog } from 'vant'
import { getProductDetails, getProductInfo, insureTrial } from '@/api/ebiz/cardList/cardList.js' import { getProductDetails, getProductInfo, insureTrial } from '@/api/ebiz/cardList/cardList.js'
import { getAgentInfo } from '@/api/ebiz/my/my.js' import { getAgentInfo } from '@/api/ebiz/my/my.js'
import CacheUtils from '@/assets/js/utils/cacheUtils'
export default { export default {
name: 'Chanpingxiangqing.vue', name: 'Chanpingxiangqing.vue',
components: { components: {
@@ -174,6 +175,7 @@ export default {
} }
}) })
} }
localStorage.insuYear = JSON.stringify(this.trialInfos.insuYear[0])
//保存附加险 //保存附加险
localStorage.addtionRiskLst = JSON.stringify(resultData.productTrialInfoDTO.addtionRiskLst) localStorage.addtionRiskLst = JSON.stringify(resultData.productTrialInfoDTO.addtionRiskLst)
// console.log('resultData', resultData) // console.log('resultData', resultData)
@@ -227,8 +229,8 @@ export default {
insureTrial(data) insureTrial(data)
.then((res) => { .then((res) => {
console.log('resrrrrrr', res) console.log('resrrrrrr', res)
if (res.result == 0) { if (res.result == 0) {
localStorage.trialList = JSON.stringify(res.trialList) CacheUtils.setLocItem('trialList', JSON.stringify(res.trialList))
} else { } else {
Toast.fail(res.resultMessage) Toast.fail(res.resultMessage)
} }