mirror of
http://112.124.100.131/GFRS/ebiz-h5.git
synced 2025-12-09 16:56:43 +08:00
347 lines
11 KiB
Vue
347 lines
11 KiB
Vue
<template>
|
|
<div class="insured-info-container pb50">
|
|
<!-- 基本信息 -->
|
|
<van-cell-group class="mt10">
|
|
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">推荐人信息</p>
|
|
<van-field v-model="recommender.name" label="推荐人姓名" name="推荐人姓名" readonly />
|
|
<van-field :value="getAgentGrade(recommender.agentGrade)" label="推荐人职级" name="推荐人职级" readonly />
|
|
<!-- <van-field v-model="recommender.applyNo" label="推荐人工号" name="推荐人工号" readonly /> -->
|
|
<van-field v-model="recommender.unitName" label="销售机构" name="销售机构" readonly />
|
|
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">个人信息</p>
|
|
<van-field v-model="userInfo.name" label="姓名" name="姓名" placeholder="请输入" v-validate="'required|name'" clearable />
|
|
<van-field
|
|
:value="userInfo.idType | idToText('idType')"
|
|
v-validate="'required'"
|
|
readonly
|
|
label="证件类型"
|
|
name="证件类型"
|
|
right-icon="arrow"
|
|
placeholder="请选择证件类型"
|
|
@click="toSelect('1')"
|
|
/>
|
|
<van-field
|
|
v-model="userInfo.idNo"
|
|
placeholder="请输入证件号码"
|
|
label="证件号码"
|
|
name="证件号码"
|
|
v-validate="'required'"
|
|
maxlength="18"
|
|
clearable
|
|
@blur="getRelatedData(userInfo.idNo)"
|
|
/>
|
|
<select-radio :radios="sexRadio" label="性别" name="性别" v-validate="'required'" :required="false" :value.sync="userInfo.sex"></select-radio>
|
|
<van-field v-model="userInfo.mobile" label="手机号" name="手机号" placeholder="请输入手机号" v-validate="'required|mobile'" maxlength="11" clearable />
|
|
<van-field v-model="userInfo.authCode" center clearable label name="短信验证码" placeholder="请输入短信验证码" v-validate="'required'" maxlength="6">
|
|
<van-button slot="button" size="small" type="danger" @click="getCode" :disabled="codeDisabled" v-no-more-click="1000">
|
|
{{ codeDisabled ? `${countDown}s后重新获取` : '获取验证码' }}
|
|
</van-button>
|
|
</van-field>
|
|
</van-cell-group>
|
|
<van-button type="danger" class="bottom-btn" @click="nextStep" v-no-more-click="1000">提交信息</van-button>
|
|
|
|
<!-- 字段选择 -->
|
|
<van-popup v-model="popupShow" position="bottom">
|
|
<van-picker show-toolbar :columns="columns" @confirm="onConfirm" @cancel="popupShow = false" />
|
|
</van-popup>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
import { Field, CellGroup, Checkbox, Popup, Picker, Area, RadioGroup, Radio, Dialog } from 'vant'
|
|
import SelectRadio from '@/components/ebiz/SelectRadio'
|
|
import FieldDatePicter from '@/components/ebiz/FieldDatePicter'
|
|
import OccupationPicker from '@/components/ebiz/occipation/OccupationPicker'
|
|
import CustomerPicker from '@/components/ebiz/customer/CustomerPicker'
|
|
import DataDictionary from '@/assets/js/utils/data-dictionary'
|
|
import areaList from '@/assets/js/utils/area'
|
|
import { getTokenForAgent, agentInfowxSubmit, getTokenForUserModel } from '@/api/ebiz/agentEenter/agentEenter'
|
|
import utilsAge from '@/assets/js/utils/age'
|
|
import getAreaName from '@/assets/js/utils/get-area-name'
|
|
import IdentityCardScan from '@/components/ebiz/sale/IdentityCardScan'
|
|
import idNoCheck from '@/assets/js/utils/idNoCheck'
|
|
import beforeDate from '@/assets/js/utils/getBeforeDate.js'
|
|
import { idToData } from '@/assets/js/utils/verification'
|
|
import { weixinShare } from '@/assets/js/utils/wxShare.js'
|
|
import axios from 'axios'
|
|
import index from '@/config/index'
|
|
import { getAuthCode } from '@/api/ebiz/sale/sale'
|
|
|
|
|
|
export default {
|
|
name: 'insuredInfo',
|
|
components: {
|
|
[SelectRadio.name]: SelectRadio,
|
|
[FieldDatePicter.name]: FieldDatePicter,
|
|
[OccupationPicker.name]: OccupationPicker,
|
|
[CustomerPicker.name]: CustomerPicker,
|
|
[Field.name]: Field,
|
|
[CellGroup.name]: CellGroup,
|
|
[Checkbox.name]: Checkbox,
|
|
[Popup.name]: Popup,
|
|
[Picker.name]: Picker,
|
|
[Area.name]: Area,
|
|
[RadioGroup.name]: RadioGroup,
|
|
[Radio.name]: Radio,
|
|
[IdentityCardScan.name]: IdentityCardScan
|
|
},
|
|
data() {
|
|
return {
|
|
sexRadio: [
|
|
{
|
|
label: '男',
|
|
value: '0'
|
|
},
|
|
{
|
|
label: '女',
|
|
value: '1'
|
|
}
|
|
],
|
|
maxDate: beforeDate.getBeforeYear(18),
|
|
popupShow: false,
|
|
censusShow: false, //户籍联动
|
|
pickerType: undefined,
|
|
columns: [],
|
|
valueKey: 'text',
|
|
census: '', //户籍
|
|
recommender: {
|
|
name: '--',
|
|
agentGrade: '--',
|
|
unitName: '--',
|
|
applyNo: '--'
|
|
},
|
|
agentGrade: '',
|
|
userInfo: {
|
|
name: '', //投保人姓名
|
|
sex: '0', //投保人性别
|
|
idType: '1', //证件类型
|
|
idNo: '', //证件号码
|
|
mobile: '' //手机号
|
|
},
|
|
areaList: areaList,
|
|
token: '',
|
|
wxShareDesc: '',
|
|
codeDisabled: false, //获取验证码按钮是否禁用
|
|
countDown: 60, //获取短信验证码倒计时
|
|
sessionId: '' //后台返回的 id
|
|
}
|
|
},
|
|
mounted() {
|
|
if (this.$route.query.content) {
|
|
window.localStorage.setItem('wxShareDesc', this.$route.query.content)
|
|
}
|
|
weixinShare({
|
|
title: '国富人寿欢迎你!',
|
|
imgUrl: this.$assetsUrl + 'images/logo.png',
|
|
desc: localStorage.wxShareDesc,
|
|
link: location.origin + '/#/agentEenter/ShareInfo?token=' + localStorage.token
|
|
})
|
|
},
|
|
created() {
|
|
if (this.$route.query.token) {
|
|
// this.token = this.$route.query.token
|
|
window.localStorage.setItem('token', this.$route.query.token)
|
|
} else {
|
|
this.$toast.fail('链接已失效,请联系代理人重新分享!')
|
|
}
|
|
this.getData()
|
|
},
|
|
methods: {
|
|
getData: function() {
|
|
let self = this
|
|
self.$toast.loading({
|
|
duration: 0, // 持续展示 toast
|
|
forbidClick: true, // 禁用背景点击
|
|
loadingType: 'spinner',
|
|
message: '加载中……'
|
|
})
|
|
getTokenForUserModel({
|
|
token: this.$CacheUtils.getLocItem('token')
|
|
}).then(function(response) {
|
|
self.$toast.clear()
|
|
console.log('response', response)
|
|
if (response.result == '0') {
|
|
self.recommender = response
|
|
} else {
|
|
this.$toast.fail(response.resultMessage)
|
|
}
|
|
})
|
|
.catch(function(error) {
|
|
// this.$toast.fail(error)
|
|
})
|
|
// var self = this
|
|
// //获取推荐人信息
|
|
// let data = {
|
|
// }
|
|
// // console.log('getData', data)
|
|
// getTokenForAgent(data)
|
|
// .then(res => {
|
|
// // console.log(res)
|
|
// if (res.result == 0) {
|
|
// self.recommender = res
|
|
// } else {
|
|
// this.$toast.fail(res.resultMessage)
|
|
// }
|
|
// })
|
|
// .then(function(err) {
|
|
// console.log(err)
|
|
// })
|
|
},
|
|
getAgentGrade(agentGrade) {
|
|
let result = ''
|
|
DataDictionary.agentGrade.map((item, index) => {
|
|
for (var key in item) {
|
|
if (key == agentGrade) {
|
|
result = item[agentGrade]
|
|
}
|
|
}
|
|
})
|
|
return result
|
|
},
|
|
// 下一步
|
|
nextStep() {
|
|
var self = this
|
|
self.$toast.loading({
|
|
duration: 0, // 持续展示 toast
|
|
forbidClick: true, // 禁用背景点击
|
|
loadingType: 'spinner',
|
|
message: '加载中……'
|
|
})
|
|
this.$validator.validate().then(valid => {
|
|
if (true === valid) {
|
|
self.$toast.clear()
|
|
if (this.userInfo.idType == '1') {
|
|
//身份证
|
|
// 证件号码规则校验
|
|
if (!idNoCheck.isIdno(this.userInfo.idNo)) {
|
|
return this.$toast('请录入正确的身份证')
|
|
}
|
|
if (this.userInfo.idNo.length == '18') {
|
|
//18位身份证第17位是性别位, 奇男偶女
|
|
let sexSign = this.userInfo.idNo.substr(16, 1)
|
|
if ((parseInt(sexSign) % 2 == 0 && this.userInfo.sex != 1) || (parseInt(sexSign) % 2 != 0 && this.userInfo.sex != 0)) {
|
|
return this.$toast('性别录入与身份证不符')
|
|
}
|
|
}
|
|
self.save()
|
|
} else {
|
|
self.save()
|
|
}
|
|
} else {
|
|
this.$toast(this.$validator.errors.all()[0])
|
|
}
|
|
})
|
|
},
|
|
save() {
|
|
Dialog.confirm({
|
|
title: '提示',
|
|
message: '是否确认提交?手机号与证件信息会作为您入司的重要信息,一旦提交无法再次修改!'
|
|
}).then(() => {
|
|
let data = {
|
|
// userModel: { //线上去掉
|
|
// mobile: '18978145583'
|
|
// },
|
|
entryType: 'SHARE_ADD',
|
|
ebizEnterCustomerDto: this.userInfo,
|
|
smsCodeDTO: { smsId: this.sessionId, code: this.userInfo.authCode }
|
|
// ebizReferrerDto: this.recommender
|
|
}
|
|
console.log(data)
|
|
let that = this
|
|
that.$toast.loading({
|
|
duration: 0, // 持续展示 toast
|
|
forbidClick: true, // 禁用背景点击
|
|
loadingType: 'spinner',
|
|
message: '加载中……'
|
|
})
|
|
agentInfowxSubmit(data)
|
|
.then(res => {
|
|
// console.log(res)
|
|
if (res.result == '0') {
|
|
this.$store.commit('updateAgentEnterApplyMsg', this.userInfo)
|
|
that.$toast.clear()
|
|
this.$jump({
|
|
flag: 'h5',
|
|
extra: {
|
|
url: location.origin + `/#/agentEenter/ShareInfoSuccess`,
|
|
forbidSwipeBack: '1',
|
|
backToFirst: '1'
|
|
},
|
|
routerInfo: {
|
|
path: `/agentEenter/ShareInfoSuccess`
|
|
}
|
|
})
|
|
} else {
|
|
this.$toast(res.resultMessage)
|
|
}
|
|
})
|
|
.then(function(err) {
|
|
console.log(err)
|
|
})
|
|
})
|
|
},
|
|
//弹框选择
|
|
toSelect(pickerType, valueKey) {
|
|
;[this.popupShow, this.pickerType] = [true, pickerType]
|
|
if (valueKey) this.valueKey = valueKey
|
|
if (pickerType == '1') {
|
|
this.columns = DataDictionary.idType
|
|
}
|
|
},
|
|
// //确认选择字段
|
|
onConfirm(value) {
|
|
this.popupShow = false
|
|
if (this.pickerType == '1') {
|
|
this.userInfo.idType = value.id
|
|
}
|
|
},
|
|
getRelatedData(val) {
|
|
if (this.userInfo.idType != '1') {
|
|
return
|
|
}
|
|
this.userInfo.sex = idToData(val).sex
|
|
},
|
|
|
|
//获取验证码
|
|
getCode() {
|
|
if (this.userInfo.mobile == '') {
|
|
return this.$toast('请填写手机号')
|
|
}
|
|
this.codeDisabled = true
|
|
//倒计时
|
|
this.timeId = setInterval(() => {
|
|
this.countDown--
|
|
if (this.countDown <= 0) {
|
|
window.clearInterval(this.timeId)
|
|
this.codeDisabled = false
|
|
this.countDown = 60
|
|
}
|
|
}, 1000)
|
|
let data = {
|
|
operateType: 'appntInfoEntry',
|
|
type: 'H5',
|
|
operateCode: this.userInfo.mobile,
|
|
system: 'agentApp',
|
|
operateCodeType: '0'
|
|
}
|
|
//获取验证码
|
|
getAuthCode(data).then(res => {
|
|
console.log(res)
|
|
if (res.result == 0) {
|
|
this.sessionId = res.sessionId
|
|
} else {
|
|
this.$toast(res.resultMessage)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
.insured-info-container {
|
|
.referrerW {
|
|
/deep/.van-cell__title {
|
|
width: 110px;
|
|
}
|
|
}
|
|
}
|
|
</style>
|