【建议书优化需求】新增年龄字段,年龄必填, 出生日期调整为不必填,当出生日期填写时,年龄带出

This commit is contained in:
lyt
2023-04-20 11:35:14 +08:00
parent 2229f5ecca
commit fec51ccd28
6 changed files with 56 additions and 32 deletions

View File

@@ -610,7 +610,7 @@ export default {
if (this.isFrom == 'proposal' && !this.saleInsuredPersonInfo.name) {
// 建议书投保人/被保人姓名不必填, 填写姓名时展示姓名(落库),不填写姓名时展示性别+年龄,如:男30岁(不落库)
let sex = this.saleInsuredPersonInfo.sex == '0'?'男':'女'
this.saleInsuredPersonInfo.name = sex + this.saleInsuredPersonInfo.insuredAge
this.saleInsuredPersonInfo.name = sex + this.saleInsuredPersonInfo.insuredAge+'岁'
}
}

View File

@@ -15,8 +15,6 @@
<select-radio class="border-bottom" :radios="sexRadio" label="性别" :value.sync="appntDTO.sex"></select-radio>
<FieldDatePicter
@confirm="dateConfirm"
v-validate="'required'"
required
label="出生日期"
name="出生日期"
:value.sync="appntDTO.birthday"
@@ -24,6 +22,10 @@
type="date"
:flag="true"
></FieldDatePicter>
<div class="border-bottom">
<van-field :border="false" required v-model="appntDTO.age" clearable label="年龄" @blur="ageBlur" v-validate="'required'" placeholder="投保人年龄" />
<!-- <van-field :border="false" v-model="appntDTO.age" clearable label="年龄" v-validate="'appntAge'" placeholder="投保人年龄" :readonly="ageFlag" /> -->
</div>
<occupation-picker
class="border-bottom"
:value.sync="appntDTO.occupationCode"
@@ -40,9 +42,6 @@
v-validate="'required'"
placeholder="投保人职业"
/>
<div class="border-bottom">
<van-field :border="false" v-model="appntDTO.age" clearable label="年龄" v-validate="'appntAge'" placeholder="投保人年龄" :readonly="ageFlag" />
</div>
<van-field :border="false" maxlength="11" v-model="appntDTO.mobile" clearable label="手机号码" name="手机号码" placeholder="投保人手机号码" v-validate="'mobileLength11|mobileStartWith1|mobile'" />
<van-button type="danger" @click="nextStep" class="bottom-btn fs16">下一步</van-button>
</van-cell-group>
@@ -59,7 +58,7 @@ import getAge from '@/assets/js/utils/age.js'
import beforeDate from '@/assets/js/utils/getBeforeDate.js'
import BreadcrumbNavigator from '@/components/ebiz/proposal/BreadcrumbNavigator'
import { getDetail } from '@/api/ebiz/proposal/proposal.js'
import utils from '@/assets/js/utils/date-utils'
export default {
data() {
return {
@@ -88,7 +87,7 @@ export default {
customerShowPicker: false,
occupationShowPicker: false,
currentPopupIndex: '',
ageFlag: false //年龄输入框是否只读 false-可输入 true-只读
// ageFlag: false //年龄输入框是否只读 false-可输入 true-只读
}
},
computed: {
@@ -123,7 +122,7 @@ export default {
// 建议书投保人/被保人姓名不必填, 填写姓名时展示姓名(落库),不填写姓名时展示性别+年龄,如:男30岁(不落库)
if(!this.appntDTO.name){
let sex = this.appntDTO.sex == '0'?'男':'女'
this.appntDTO.name = sex+this.appntDTO.age
this.appntDTO.name = sex+this.appntDTO.age+'岁'
}
}
},
@@ -217,9 +216,20 @@ export default {
this.appntDTO.name = data
},
dateConfirm(data) {
console.log(data,'data')
let age = getAge.getAge(data, new Date())
this.appntDTO.age = age
this.ageFlag = true
// this.ageFlag = true
},
//年龄变化时,清空出生日期
//并校验年龄规则按照出生日期的校验规则来定
ageBlur(){
this.appntDTO.birthday = ''
let minAge = getAge.getAge(utils.formatDate(new Date(this.maxDate),'yyyy-MM-dd'), new Date())
let maxAge = getAge.getAge('1900-01-01', new Date())
if(this.appntDTO.age < minAge || this.appntDTO.age > maxAge){
this.$toast('您的年龄不符合投保人的年龄范围')
}
},
//从客户列表选择客户
chooseCustomer(data) {
@@ -244,13 +254,13 @@ export default {
healthGrade,
socialSecurity
}
this.ageFlag = true
// this.ageFlag = true
},
nextStep() {
// 建议书投保人/被保人姓名不必填, 填写姓名时展示姓名(落库),不填写姓名时展示性别+年龄,如:男30岁(不落库)
let sex = this.appntDTO.sex == '0'?'男':'女'
let name = sex + this.appntDTO.age
let name = sex + this.appntDTO.age+'岁'
if(this.appntDTO.name == name){
this.appntDTO.name = ''
}

View File

@@ -156,7 +156,7 @@ export default {
// 建议书投保人/被保人姓名不必填, 填写姓名时展示姓名(落库),不填写姓名时展示性别+年龄,如:男30岁(不落库)
if(!v.name){
let sex = v.sex == '0'?'男':'女'
v.name = sex + v.insuredAge
v.name = sex + v.insuredAge+'岁'
}
//addtion数组中筛选出附加险
v.riskDTOLst.forEach(s => {

View File

@@ -21,8 +21,6 @@
<FieldDatePicter
:disabled="disabled"
v-validate="'required'"
required
label="出生日期"
name="出生日期"
:flag="true"
@@ -31,6 +29,10 @@
:maxDate="currentTime"
@confirm="dateConfirm"
></FieldDatePicter>
<div class="border-bottom">
<van-field type="digit" :readonly="disabled" v-model="insured.insuredAge" required v-validate="'required'" :value="ageShow" @blur="ageBlur" clearable label="年龄" placeholder="被保险人年龄" />
<!-- <van-field :readonly="disabled" :value="ageShow" @input="changeAgeInput($event)" clearable label="年龄" placeholder="被保险人年龄" /> -->
</div>
<occupation-picker
:disabled="disabled"
class="border-bottom"
@@ -49,9 +51,6 @@
placeholder="被保险人职业"
/>
<select-radio class="border-bottom" :radios="medicalRadio" label="有无社保" :value.sync="insured.medical"></select-radio>
<div class="border-bottom">
<van-field :readonly="disabled" :value="ageShow" @input="changeAgeInput($event)" clearable label="年龄" placeholder="被保险人年龄" />
</div>
<van-field
maxlength="11"
v-model="insured.mobile"
@@ -77,6 +76,7 @@ import { CellGroup, Field, Dialog, Toast } from 'vant'
import getAge from '@/assets/js/utils/age.js'
import beforeDate from '@/assets/js/utils/getBeforeDate.js'
import { checkSex, checkRelation } from './rule'
import utils from '@/assets/js/utils/date-utils'
export default {
data() {
@@ -156,7 +156,7 @@ export default {
// 建议书投保人/被保人姓名不必填, 填写姓名时展示姓名(落库),不填写姓名时展示性别+年龄,如:男30岁(不落库)
if(!this.insured.name){
let sex = this.insured.sex == '0'?'男':'女'
this.insured.name = sex + this.insured.insuredAge
this.insured.name = sex + this.insured.insuredAge+'岁'
}
}
this.ageShow = this.insured.insuredAge == '-1' ? '0' : this.insured.insuredAge
@@ -171,10 +171,23 @@ export default {
reset:"1" //1重制 其他值不变
})
},
//设置被保险人年龄显示 如果this.insured.age为 -1时显示为空不为1时显示为正常输入值
changeAgeInput(val) {
// this.ageShow = val == '-1' ? '0' : val
this.insured.insuredAge = val
// //设置被保险人年龄显示 如果this.insured.age为 -1时显示为空不为1时显示为正常输入值
// changeAgeInput(val) {
// // this.ageShow = val == '-1' ? '0' : val
// this.insured.insuredAge = val
// this.$toast('您的年龄不符合投保人的年龄范围')
// console.log(11111111)
// },
//年龄变化时,清空出生日期
//并校验年龄规则按照出生日期的校验规则来定
ageBlur(){
this.insured.birthday = ''
let minAge = getAge.getAge(utils.formatDate(new Date(this.maxDate),'yyyy-MM-dd'), new Date())
let maxAge = getAge.getAge('1900-01-01', new Date())
if(this.insured.insuredAge < minAge || this.insured.insuredAge > maxAge){
this.$toast('您的年龄不符合被保人的年龄范围')
}
},
selectClick(index) {
this.currentPopupIndex = index
@@ -326,7 +339,7 @@ export default {
mainPath() {
// 建议书投保人/被保人姓名不必填, 填写姓名时展示姓名(落库),不填写姓名时展示性别+年龄,如:男30岁(不落库)
let sex = this.insured.sex == '0'?'男':'女'
let name = sex + this.insured.insuredAge
let name = sex + this.insured.insuredAge+'岁'
if(this.insured.name == name){
this.insured.name = ''
}

View File

@@ -63,7 +63,7 @@
</div>
<div class="text-right pv5">
<van-button v-if="active == 2" round size="small" @click="toInsurance(item)" class="mr5" type="danger">转投保</van-button>
<van-button v-if="active == 2" round @click="copy(item)" size="small" class="mr5" type="danger">编辑</van-button>
<van-button v-if="active == 2" round @click="copy(item)" size="small" class="mr5" type="danger">复制计划书</van-button>
<van-button v-if="active == 1" round @click="edit(item)" size="small" class="mr5" type="danger">编辑</van-button>
<van-button v-if="active == 2" plain round @click="preview(item)" size="small" class="mr5" type="danger">预览</van-button>
<van-button size="small" round :plain="active == 3 ? false : true" @click="deleteProposal(item, active, index)" type="danger">删除</van-button>

View File

@@ -280,7 +280,8 @@
<div class="div_02">
<div class="text-center div_021">
<div class="text-center div_022">家庭保障计划</div>
<div class="text-center div_023">尊敬的{{ pageShowInfo.appntDTO.name.substr(0, 1) }}{{ pageShowInfo.appntDTO.sex == '0' ? '先生' : '女士' }}</div>
<!-- 如果没有姓名的话根据性别展示男士或女士 -->
<div class="text-center div_023">尊敬的<span v-if="pageShowInfo.appntDTO.name">{{ pageShowInfo.appntDTO.name.substr(0, 1) }}</span>{{ pageShowInfo.appntDTO.sex == '0' ? '先生' : '女士' }}</div>
</div>
<img class="img_13" src="@/assets/images/proposal/proposal_share_bg.png" />
</div>
@@ -485,7 +486,7 @@ export default {
// 建议书投保人/被保人姓名不必填, 填写姓名时展示姓名(落库),不填写姓名时展示性别+年龄,如:男30岁(不落库)
if(!item.name){
let sex = item.sex == '0'?'男':'女'
item.name = sex + item.insuredAge
item.name = sex + item.insuredAge+'岁'
}
this.pageShowInfo.showInsuredDTO = item
that.$forceUpdate()
@@ -613,13 +614,13 @@ export default {
}
let shareContent;
let resData = await queryPersonal(reqData)
if (resData.content.length&&resData.content[0].slevel>0&&resData.content[0].sgrade) {
if (resData.content.length&&resData.content[0].slevel>0&&resData.content[0].sgrade&&resData.content[0].sgrade!='00') {
if(resData.content[0].slevel<3){
resData.content[0].sgrade='00'
}
let sgrade =this.memberConversion(resData.content[0].sgrade);
shareContent='国富双冠精英'+resData.content[0].slevel+''+sgrade+resData.content[0].name+'为您量身定制的保险产品请查收';
}else if (resData.content.length&&resData.content[0].glevel>0&&resData.content[0].ggrade&&!resData.content[0].sgrade) {
}else if (resData.content.length&&resData.content[0].glevel>0&&resData.content[0].ggrade&&!resData.content[0].sgrade&&resData.content[0].sgrade!='00') {
if(resData.content[0].glevel<3){
resData.content[0].ggrade='00'
}
@@ -631,7 +632,7 @@ export default {
let title
let riskList = [] //所有险种
let riskCodeList = [] //所有险种code
this.pageShowInfo.insuredDTOs.map(item => {
this.pageShowInfo.insuredDTOs.map(item => {
item.mainRisk.map(item01 => {
if (item01.isMainRisk == '0') { //主险
riskList.push(item01)
@@ -705,7 +706,7 @@ export default {
// 建议书投保人/被保人姓名不必填, 填写姓名时展示姓名(落库),不填写姓名时展示性别+年龄,如:男30岁(不落库)
if(!v.name){
let sex = v.sex == '0'?'男':'女'
v.name = sex + v.insuredAge
v.name = sex + v.insuredAge+'岁'
}
v.riskDTOLstNew = []
v.riskDTOLst.forEach(risk => {
@@ -930,7 +931,7 @@ export default {
let text=''
switch (status) {
case '00':
text = '准会员'
text = '' //准会员不显示
break
case '01':
text = '正式会员'