Merge branch 'master' into feature/GFRS-1020【0521】国富人寿附加豁免保险费重大疾病保险关连3款主险产品

This commit is contained in:
tian.guangyuan
2020-04-26 13:36:43 +08:00
6 changed files with 551 additions and 313 deletions

View File

@@ -194,3 +194,4 @@ export function getPayState(data) {
data data
}) })
} }

View File

@@ -931,6 +931,11 @@ export default {
shortName: '寿险', shortName: '寿险',
name: '国富人寿国富栋梁定期寿险', name: '国富人寿国富栋梁定期寿险',
code: 'GFRS_M0020' code: 'GFRS_M0020'
},
{
shortName: '重疾险',
name: '国富人寿爱易保重大疾病保险',
code: 'GFRS_M0021'
} }
], ],
// 职级 // 职级

View File

@@ -1,35 +1,59 @@
<template> <template>
<div class="occupation pb70"> <div class="occupation pb70">
<van-search v-model="searchParams" placeholder="请输入搜索关键词" show-action shape="round" @clear="clearSearch" @search="onSearch"> <van-search v-model="searchParams" @input="onSearch" placeholder="请输入搜索关键词" show-action shape="round" @clear="clearSearch" @search="onSearch">
<div slot="action" @click="onSearch">搜索</div> <div slot="action" @click="onSearch">搜索</div>
</van-search> </van-search>
<div class="main-area fs12"> <div class="choose-result fs12 pl25" v-if="third.code">
<div class="item p10"> <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 }"> <p class="p5" v-for="(item, index) in occupationList" :key="index" @click="handleFirst(item)" :class="{ active: first.code == item.code }">
{{ item.name }} {{ item.name }}
</p> </p>
</div> </div>
<div class="item p10"> <div class="item ph10">
<p class="p5" v-for="(item, index) in sec" :key="index" @click="handleSec(item)" :class="{ active: second.code == item.code }"> <p class="p5" v-for="(item, index) in sec" :key="index" @click="handleSec(item)" :class="{ active: second.code == item.code }">
{{ item.name }} {{ item.name }}
</p> </p>
</div> </div>
<div class="item p10"> <div class="item ph10">
<p class="p5" v-for="(item, index) in thi" :key="index" @click="handleThi(item)" :class="{ active: third.code == item.code }"> <p class="p5" v-for="(item, index) in thi" :key="index" @click="handleThi(item)" :class="{ active: third.code == item.code }">
{{ item.name }} {{ item.name }}
</p> </p>
</div> </div>
<div v-if="third.code" class="choose-result">
<p>职业代码{{ third.code }}</p>
<p>职业{{ chooseName }}</p>
</div> </div>
</div> </div>
<div :class="[isSearch ? '' : 'hidden']">
<van-button type="danger" class="bottom-btn" @click="ensureChoose">确认选择</van-button> <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> </div>
</template> </template>
<script> <script>
import occupationData from './data/occupation' import occupationData from './data/occupation'
import { getBankList } from '@/api/ebiz/sale/sale'
import { Search, Sticky } from 'vant' import { Search, Sticky } from 'vant'
export default { export default {
name: 'Occupation', name: 'Occupation',
@@ -63,7 +87,10 @@ export default {
third: {}, third: {},
chooseName: '', chooseName: '',
lifeGrade: '', lifeGrade: '',
healthGrade: '' healthGrade: '',
commonList: [],
isSearch: false, // 是否搜索中
searchList: []
} }
}, },
components: { components: {
@@ -71,6 +98,7 @@ export default {
[Sticky.name]: Sticky [Sticky.name]: Sticky
}, },
created() { created() {
// let occupationData = JSON.parse(window.localStorage.getItem('OccupationList'))
this.init(occupationData) this.init(occupationData)
}, },
mounted() {}, mounted() {},
@@ -82,6 +110,16 @@ export default {
this.lifeGrade = this.life this.lifeGrade = this.life
this.healthGrade = this.health this.healthGrade = this.health
this.third = {} this.third = {}
getBankList({
operateType: 'hot_occupation'
}).then(res => {
if (res.result == '0') {
this.commonList = res.content
} else {
this.$toast(res.resultMessage)
}
})
}, },
handleFirst(item) { handleFirst(item) {
this.sec = item.subs this.sec = item.subs
@@ -89,43 +127,127 @@ export default {
this.second = {} this.second = {}
this.thi = [] this.thi = []
this.third = {} this.third = {}
this.commonInit()
}, },
handleSec(item) { handleSec(item) {
this.thi = item.subs this.thi = item.subs
this.second = item this.second = item
this.third = {} this.third = {}
this.commonInit()
}, },
handleThi(item) { handleThi(item) {
this.third = item this.third = item
this.chooseName = this.third.name this.chooseName = this.third.name
this.commonInit()
}, },
ensureChoose() { ensureChoose() {
if (this.third.code) { if (this.third.code) {
this.$emit('chooseOccupation', this.third) this.$emit('chooseOccupation', this.third)
console.log(this.third)
} else { } else {
this.$toast('请选择职业') this.$toast('请选择职业')
} }
}, },
onSearch() { onSearch() {
let data = [] this.sec = []
for (let item of occupationData) { this.thi = []
if (JSON.stringify(item).indexOf(this.searchParams) != -1) { this.first = {}
data.push(item) 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
} }
this.init(data) // this.isSearch = true
// let data = JSON.parse(JSON.stringify(occupationData))
// data.forEach(first => {
// first.firstSubs = []
// first.subs.forEach(second => {
// second.secondSubs = []
// second.subs.forEach(third => {
// if (third.name.indexOf(this.searchParams) != -1) {
// second.secondSubs.push(third)
// }
// })
// second.subs = second.secondSubs
// if (second.secondSubs.length != 0) {
// first.firstSubs.push(second)
// }
// delete second.secondSubs
// })
// first.subs = first.firstSubs
// delete first.firstSubs
// })
// for (let i = 0; i < data.length; i++) {
// if (data[i].subs.length == 0) {
// data.splice(i, 1)
// i--
// }
// }
// this.init(data)
}, },
clearSearch() { clearSearch() {
this.init(occupationData) 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> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.close-btn {
bottom: 0;
width: 100%;
.van-button {
width: 100% !important;
}
}
.occupation { .occupation {
.main-area { .main-area {
padding: 10px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
.item { .item {
@@ -133,20 +255,50 @@ export default {
flex-grow: 1; flex-grow: 1;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
height: 360px;
overflow-y: auto;
} }
.active {
color: red;
background-color: #f2f2f2;
} }
.choose-result { .choose-result {
position: fixed;
width: 100%; width: 100%;
left: 20px;
bottom: 44px;
z-index: 100;
background: #ffffff; background: #ffffff;
line-height: 20px; line-height: 20px;
color: red; 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;
} }
} }
} }

View File

@@ -11,12 +11,6 @@
right-icon="arrow" right-icon="arrow"
/> />
<van-popup v-model="parentShowPicker" position="bottom"> <van-popup v-model="parentShowPicker" position="bottom">
<!-- <div class="close" v-if="showPicker">
<div class="close-wrap">
<p>职业选择</p>
<van-icon name="cross" @click="cancel" />
</div>
</div> -->
<occupation @chooseOccupation="chooseOccupation" :code="code" :name="name"></occupation> <occupation @chooseOccupation="chooseOccupation" :code="code" :name="name"></occupation>
</van-popup> </van-popup>
</div> </div>

View File

@@ -275,7 +275,8 @@ export default {
let formdata = new FormData() let formdata = new FormData()
formdata.append('imgPath', that.dataURLtoFile(that.file, that.imgName)) formdata.append('imgPath', that.dataURLtoFile(that.file, that.imgName))
uploadImg(formdata).then(res => { uploadImg(formdata).then(
res => {
if (res.result == '0') { if (res.result == '0') {
this.$toast.clear() this.$toast.clear()
let imageInfoType = '' let imageInfoType = ''
@@ -317,8 +318,47 @@ export default {
rgssUrl: encodeURI(res.path).replace(/\+/g, '%2B') rgssUrl: encodeURI(res.path).replace(/\+/g, '%2B')
} }
that.list.push(obj) that.list.push(obj)
} else {
switch (that.type) {
case 'fileListBank01':
this.fileListBank01.pop()
break
case 'fileListBank03': //学历
this.fileListBank03 = []
break
case 'fileListBank04': //免冠
this.fileListBank04 = []
break
case 'fileListBank05':
this.fileListBank05.pop()
break
case 'fileListBank06':
this.fileListBank06.pop()
break
} }
}) }
},
error => {
that.$toast('网络环境不佳,图片上传失败,请切换移动网络或稍后重试')
switch (that.type) {
case 'fileListBank01':
this.fileListBank01.pop()
break
case 'fileListBank03': //学历
this.fileListBank03 = []
break
case 'fileListBank04': //免冠
this.fileListBank04 = []
break
case 'fileListBank05':
this.fileListBank05.pop()
break
case 'fileListBank06':
this.fileListBank06.pop()
break
}
}
)
}, },
// 删除图片 // 删除图片
deleteImg(file, nameList) { deleteImg(file, nameList) {

View File

@@ -285,7 +285,16 @@
</van-radio-group> </van-radio-group>
</div> </div>
<div class="bg-white bottom-btn"> <div class="bg-white bottom-btn">
<van-button type="danger" class="attachmentManagement-next" size="large" :disabled="isDisabled" @click="next" @touchstart="beforeNext(isDisabled)" v-no-more-click="1000">下一步</van-button> <van-button
type="danger"
class="attachmentManagement-next"
size="large"
:disabled="isDisabled"
@click="next"
@touchstart="beforeNext(isDisabled)"
v-no-more-click="1000"
>下一步</van-button
>
</div> </div>
</div> </div>
</template> </template>
@@ -722,7 +731,8 @@ export default {
}) })
let formdata = new FormData() let formdata = new FormData()
formdata.append('imgPath', that.dataURLtoFile(that.file, that.imgName)) formdata.append('imgPath', that.dataURLtoFile(that.file, that.imgName))
uploadImg(formdata).then(res => { uploadImg(formdata).then(
res => {
// console.log(res) // console.log(res)
if (res.result == '0') { if (res.result == '0') {
this.$toast.clear() this.$toast.clear()
@@ -957,9 +967,6 @@ export default {
case 'fileListBank': case 'fileListBank':
that.fileListBank = [] that.fileListBank = []
break break
// case 'fileListBankBack':
// that.fileListBankBack = []
// break
case 'fileListOther': case 'fileListOther':
that.fileListOther = [] that.fileListOther = []
break break
@@ -985,10 +992,49 @@ export default {
this.$toast.clear() this.$toast.clear()
this.$toast(res.resultMessage) this.$toast(res.resultMessage)
} }
})
}, },
beforeNext(isDis){ error => {
if(isDis && this.fileListBank.length > 0 && this.fileListIdBack.length > 0 && this.fileListIdFront.length > 0){ switch (that.type) {
case 'fileListIdFront':
that.fileListIdFront = []
break
case 'fileListIdBack':
that.fileListIdBack = []
break
case 'fileLIstImg':
that.fileLIstImg = []
break
case 'fileListBank':
that.fileListBank = []
break
case 'fileListOther':
that.fileListOther = []
break
case 'fileListIdFrontInsured':
that.fileListIdFrontInsured = []
break
case 'fileListIdBackInsured':
that.fileListIdBackInsured = []
break
case 'fileListBankInsured':
that.fileListBankInsured = []
break
case 'fileLIstImgInsured':
that.fileLIstImgInsured = []
break
case 'saleInsuredInfoOther':
that.saleInsuredInfoOther = []
break
case 'saleInsuredPersonInfoOther':
that.saleInsuredPersonInfoOther = []
break
}
this.$toast('网络环境不佳,图片上传失败,请切换移动网络或稍后重试')
}
)
},
beforeNext(isDis) {
if (isDis && this.fileListBank.length > 0 && this.fileListIdBack.length > 0 && this.fileListIdFront.length > 0) {
this.$toast('请勾选确认销售人员已见证各证件原件并拍照上传') this.$toast('请勾选确认销售人员已见证各证件原件并拍照上传')
} }
}, },