mirror of
http://112.124.100.131/GFRS/ebiz-h5.git
synced 2025-12-07 07:46:43 +08:00
feat-主险选择新增职业校验逻辑
This commit is contained in:
@@ -117,4 +117,15 @@ export function funcPermCheck(data) {
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/** add by zhangweiwei FCRS-764 国富无忧两全保险(B款)新增主险职业校验逻辑 start at 20240807 */
|
||||
// 校验职业是否符合产品要求
|
||||
export function occupationCodeCheck(data) {
|
||||
return request({
|
||||
url: getUrl('/sale/product/occupationCodeCheck', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/** add by zhangweiwei FCRS-764 国富无忧两全保险(B款)新增主险职业校验逻辑 end at 20240807 */
|
||||
@@ -62,7 +62,8 @@ let sale = [
|
||||
'/sale/insure/selfToHuman',
|
||||
'/sale/insure/orderPayStatusQuery',
|
||||
'/sale/order/revokeOrder',
|
||||
'/sale/product/getcompany'
|
||||
'/sale/product/getcompany',
|
||||
'/sale/product/occupationCodeCheck'
|
||||
] //在线投保
|
||||
let agentEnter = [
|
||||
'/agent/enter/share',
|
||||
|
||||
@@ -50,8 +50,8 @@
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { Cell, CellGroup, Tag, Radio, RadioGroup,Tab,Tabs} from 'vant'
|
||||
import { mainRiskList,mainRiskListProposal,calculatePremium,getActProductList } from '@/api/ebiz/common/common'
|
||||
import { Cell, CellGroup, Tag, Radio, RadioGroup, Tab, Tabs } from 'vant'
|
||||
import { mainRiskList, mainRiskListProposal, calculatePremium, getActProductList, occupationCodeCheck } from '@/api/ebiz/common/common'
|
||||
import { getOrderDetail, riskLevelCheck } from '@/api/ebiz/sale/sale'
|
||||
import { getDetail } from '@/api/ebiz/proposal/proposal.js'
|
||||
import riskRules from './risk-rules'
|
||||
@@ -63,13 +63,13 @@ export default {
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Tag.name]: Tag,
|
||||
[Cell.name]: Cell,
|
||||
[Tab.name]:Tab,
|
||||
[Tabs.name]:Tabs,
|
||||
[Tab.name]: Tab,
|
||||
[Tabs.name]: Tabs
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
recommendType: '', // 渠道控制
|
||||
isCrossChannel: 0, // 是否选择交叉渠道列表 0-否 1-是
|
||||
recommendType: '', // 渠道控制
|
||||
isCrossChannel: 0, // 是否选择交叉渠道列表 0-否 1-是
|
||||
active: 'normal',
|
||||
specilFlag: '0',
|
||||
flag: true,
|
||||
@@ -79,7 +79,7 @@ export default {
|
||||
radioVal: '',
|
||||
isFrom: localStorage.isFrom,
|
||||
activeFlag: '',
|
||||
isActivityCode:'' //activityCode 有值的话代表是活动,无值代表是普通产品
|
||||
isActivityCode: '' //activityCode 有值的话代表是活动,无值代表是普通产品
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
@@ -87,16 +87,16 @@ export default {
|
||||
flag: 'navigation',
|
||||
extra: {
|
||||
title: '主险选择列表'
|
||||
},
|
||||
}
|
||||
})
|
||||
if (localStorage.isFrom == 'sale') {
|
||||
return new Promise((resolve, reject) => {
|
||||
getOrderDetail({ orderNo: this.$route.query.orderNo }).then(
|
||||
res => {
|
||||
(res) => {
|
||||
if (res.result == 0) {
|
||||
//------------------------专为桂/惠企写死--begin---------------//
|
||||
if (res.orderDTO.insuredDTOs[0] && res.orderDTO.insuredDTOs[0].riskDTOLst) {
|
||||
this.flag = this.specilFlag = res.orderDTO.insuredDTOs[0].riskDTOLst.some(v => {
|
||||
this.flag = this.specilFlag = res.orderDTO.insuredDTOs[0].riskDTOLst.some((v) => {
|
||||
return v.riskCode == 'GFRS_M0024' || v.riskCode == 'GFRS_M0040'
|
||||
})
|
||||
if (this.flag) {
|
||||
@@ -108,16 +108,16 @@ export default {
|
||||
//isActivityCode 有值代表是活动,无值代表是普通产品
|
||||
this.isActivityCode = res.orderDTO.orderInfoDTO.activityCode
|
||||
// recommendType 03 银保渠道
|
||||
this.recommendType = res.orderDTO.recmdDTO.recommendType;
|
||||
this.recommendType = res.orderDTO.recmdDTO.recommendType
|
||||
if (this.recommendType == '02' || this.recommendType == '11' || (this.recommendType == '03' && this.isActivityCode)) {
|
||||
// 电投 团险渠道产品 均为交叉渠道销售
|
||||
this.isCrossChannel = '1';
|
||||
this.isCrossChannel = '1'
|
||||
}
|
||||
// ------------------------专为桂/惠企写死--end---------------//
|
||||
}
|
||||
resolve(this.isActivityCodeFunc())
|
||||
},
|
||||
error => {
|
||||
(error) => {
|
||||
reject(this.isActivityCodeFunc())
|
||||
}
|
||||
)
|
||||
@@ -126,49 +126,51 @@ export default {
|
||||
return new Promise((resolve, reject) => {
|
||||
getDetail({
|
||||
orderNo: this.$route.query.proposalOrderNo
|
||||
}).then(res => {
|
||||
if (res.result == '0') {
|
||||
this.recommendType = res.content[0].recmdDTO?res.content[0].recmdDTO.recommendType:'';
|
||||
if (this.recommendType == '02' || this.recommendType == '11') {
|
||||
// 电投 团险渠道产品 均为交叉渠道销售
|
||||
this.isCrossChannel = '1';
|
||||
}).then(
|
||||
(res) => {
|
||||
if (res.result == '0') {
|
||||
this.recommendType = res.content[0].recmdDTO ? res.content[0].recmdDTO.recommendType : ''
|
||||
if (this.recommendType == '02' || this.recommendType == '11') {
|
||||
// 电投 团险渠道产品 均为交叉渠道销售
|
||||
this.isCrossChannel = '1'
|
||||
}
|
||||
}
|
||||
resolve(this.isActivityCodeFunc())
|
||||
},
|
||||
(error) => {
|
||||
reject(this.isActivityCodeFunc())
|
||||
}
|
||||
resolve(this.isActivityCodeFunc())
|
||||
},
|
||||
error => {
|
||||
reject(this.isActivityCodeFunc())
|
||||
})
|
||||
)
|
||||
})
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onChangeMainList(name){
|
||||
onChangeMainList(name) {
|
||||
if (name == 'cross') {
|
||||
this.isCrossChannel = '1';
|
||||
}else{
|
||||
this.isCrossChannel = '0';
|
||||
this.isCrossChannel = '1'
|
||||
} else {
|
||||
this.isCrossChannel = '0'
|
||||
}
|
||||
this.isActivityCodeFunc();
|
||||
this.isActivityCodeFunc()
|
||||
},
|
||||
isActivityCodeFunc(){
|
||||
//isActivityCode 有值代表是活动,无值代表是普通产品
|
||||
isActivityCodeFunc() {
|
||||
//isActivityCode 有值代表是活动,无值代表是普通产品
|
||||
// if(this.isActivityCode && this.isCrossChannel == '0'){
|
||||
if(this.isActivityCode){
|
||||
this.getActProductListFunc()
|
||||
}else{
|
||||
this.getMainRiskList()
|
||||
}
|
||||
if (this.isActivityCode) {
|
||||
this.getActProductListFunc()
|
||||
} else {
|
||||
this.getMainRiskList()
|
||||
}
|
||||
},
|
||||
//获取主险列表--活动下的产品
|
||||
async getActProductListFunc() {
|
||||
let mainRiskCodes = localStorage.mainRiskCodes && JSON.parse(localStorage.mainRiskCodes)
|
||||
let resultData = await getActProductList({
|
||||
activityCode:this.isActivityCode,
|
||||
type:'app'
|
||||
activityCode: this.isActivityCode,
|
||||
type: 'app'
|
||||
})
|
||||
if (resultData.result == 0) {
|
||||
resultData.content.mainRiskDTOS.forEach(item => {
|
||||
resultData.content.mainRiskDTOS.forEach((item) => {
|
||||
//已选主险不能再选、险种互斥
|
||||
if (mainRiskCodes && mainRiskCodes.includes(item.riskProductCode)) {
|
||||
this.delList.push(item.riskProductCode)
|
||||
@@ -195,12 +197,12 @@ export default {
|
||||
// ------------------------专为惠企写死--end---------------//
|
||||
//如果是选择产品, 进入电子投保, 在主险列表能默认选中我在产品列表选择的产品
|
||||
if (this.list.length > 0) {
|
||||
console.log(localStorage.productCodeChooseFromList)
|
||||
this.result = this.list.find(v => {
|
||||
console.log(localStorage.productCodeChooseFromList)
|
||||
this.result = this.list.find((v) => {
|
||||
return v.riskProductCode == localStorage.productCodeChooseFromList
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
if (this.list.length == 0) {
|
||||
this.$route('暂无可选产品')
|
||||
// this.$dialog({ message: '暂无可选产品!' }).then(() => {
|
||||
@@ -237,16 +239,16 @@ export default {
|
||||
break
|
||||
}
|
||||
if (this.isCrossChannel == '1') {
|
||||
mainListDate.platform = 'cross'
|
||||
mainListDate.platform = 'cross'
|
||||
}
|
||||
let resultData
|
||||
if(this.isFrom == 'proposal'){
|
||||
if (this.isFrom == 'proposal') {
|
||||
resultData = await mainRiskListProposal(mainListDate)
|
||||
}else{
|
||||
} else {
|
||||
resultData = await mainRiskList(mainListDate)
|
||||
}
|
||||
if (resultData.result == 0) {
|
||||
resultData.mainRiskDTOS.forEach(item => {
|
||||
resultData.mainRiskDTOS.forEach((item) => {
|
||||
//已选主险不能再选、险种互斥
|
||||
if (mainRiskCodes && mainRiskCodes.includes(item.riskProductCode)) {
|
||||
this.delList.push(item.riskProductCode)
|
||||
@@ -273,7 +275,7 @@ export default {
|
||||
// 如果是选择产品, 进入电子投保, 在主险列表能默认选中我在产品列表选择的产品
|
||||
if (this.list.length > 0) {
|
||||
console.log(localStorage.productCodeChooseFromList)
|
||||
this.result = this.list.find(v => {
|
||||
this.result = this.list.find((v) => {
|
||||
return v.riskProductCode == localStorage.productCodeChooseFromList
|
||||
})
|
||||
}
|
||||
@@ -308,17 +310,36 @@ export default {
|
||||
this.$toast('请选择产品')
|
||||
return
|
||||
}
|
||||
if(localStorage.getItem('isFrom') == 'sale') {
|
||||
/** add by zhangweiwei FCRS-764 国富无忧两全保险(B款)新增主险职业校验逻辑 start at 20240807 */
|
||||
let insuredPersonInfo = JSON.parse(this.$CacheUtils.getLocItem('saleInsuredPersonInfo'))
|
||||
occupationCodeCheck({
|
||||
occupationCode: insuredPersonInfo.occupationCode,
|
||||
productCode: this.result.riskProductCode
|
||||
}).then((res) => {
|
||||
if (res.result == 0) {
|
||||
this.handleMainRisk()
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
/** add by zhangweiwei FCRS-764 国富无忧两全保险(B款)新增主险职业校验逻辑 end at 20240807 */
|
||||
},
|
||||
|
||||
/**
|
||||
* 处理主险
|
||||
*/
|
||||
handleMainRisk() {
|
||||
if (localStorage.getItem('isFrom') == 'sale') {
|
||||
let params = {
|
||||
productCode: this.result.riskProductCode,
|
||||
orderNo: this.$route.query.orderNo,
|
||||
orderNo: this.$route.query.orderNo
|
||||
}
|
||||
if(this.recommendType == '03' && !this.isActivityCode) {
|
||||
if (this.recommendType == '03' && !this.isActivityCode) {
|
||||
params.productChannl = this.isCrossChannel
|
||||
}
|
||||
riskLevelCheck(params).then(res => {
|
||||
if(res.result == 0) {
|
||||
if(res.saLevelMatch == "Y"){
|
||||
riskLevelCheck(params).then((res) => {
|
||||
if (res.result == 0) {
|
||||
if (res.saLevelMatch == 'Y') {
|
||||
//置空产品
|
||||
localStorage.chooseProducts = ''
|
||||
//添加主险
|
||||
@@ -337,6 +358,7 @@ export default {
|
||||
this.addMainRisk()
|
||||
}
|
||||
},
|
||||
|
||||
//储存主险
|
||||
async addMainRisk() {
|
||||
localStorage.setItem('isTrial', '1')
|
||||
@@ -347,7 +369,7 @@ export default {
|
||||
localStorage.isTrial = resultData.productTrialInfoDTO.productTrialYearDTOS != null ? '0' : '1'
|
||||
localStorage.hint = resultData.hint
|
||||
if (resultData.productTrialInfoDTO.dutyGroup != null) {
|
||||
resultData.productTrialInfoDTO.dutyGroup.map(item => {
|
||||
resultData.productTrialInfoDTO.dutyGroup.map((item) => {
|
||||
if (item.dutyName == '意外身故/伤残保险金') {
|
||||
item.defaultDutyAmt = item.minDutyAmt
|
||||
}
|
||||
@@ -375,7 +397,7 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
if (riskRules.ageLimit(resultData, this, null,riskProductCode)) {
|
||||
if (riskRules.ageLimit(resultData, this, null, riskProductCode)) {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -402,12 +424,17 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
let flagPermission = await riskRules.getProductSellPermissionList(resultData.productCode, this,this.isCrossChannel)
|
||||
let flagPermission = await riskRules.getProductSellPermissionList(resultData.productCode, this, this.isCrossChannel)
|
||||
if (flagPermission.flag && localStorage.isFrom != 'proposal') {
|
||||
//校验该代理人是否有该产品的售卖权限
|
||||
return this.$toast(flagPermission.resultMessage)
|
||||
}
|
||||
let flagCompany = await riskRules.checkCompany(resultData.productCode, JSON.parse(this.$CacheUtils.getLocItem('saleInsuredInfo')).workcompany, JSON.parse(this.$CacheUtils.getLocItem('saleInsuredInfo')).isAsync,this)
|
||||
let flagCompany = await riskRules.checkCompany(
|
||||
resultData.productCode,
|
||||
JSON.parse(this.$CacheUtils.getLocItem('saleInsuredInfo')).workcompany,
|
||||
JSON.parse(this.$CacheUtils.getLocItem('saleInsuredInfo')).isAsync,
|
||||
this
|
||||
)
|
||||
if (flagCompany && localStorage.isFrom != 'proposal') {
|
||||
//校验该投保人的工作单位是否能够投保该产品
|
||||
return this.$toast('该投保人工作单位不能投保该产品')
|
||||
@@ -423,11 +450,11 @@ export default {
|
||||
|
||||
let calFactorLst = this.getFactorList(resultData)
|
||||
let productTrialYearDTOS = resultData.productTrialInfoDTO.productTrialYearDTOS != null ? resultData.productTrialInfoDTO.productTrialYearDTOS : null
|
||||
let hasAddtionRisk = (resultData.productTrialInfoDTO.addtionRiskLst != null && resultData.productTrialInfoDTO.addtionRiskLst.length) ? true : false
|
||||
let hasAddtionRisk = resultData.productTrialInfoDTO.addtionRiskLst != null && resultData.productTrialInfoDTO.addtionRiskLst.length ? true : false
|
||||
let currentProductInfo =
|
||||
localStorage.isTrial == '1'
|
||||
? {
|
||||
isCrossChannel:this.isCrossChannel,
|
||||
isCrossChannel: this.isCrossChannel,
|
||||
calFactorLst,
|
||||
hasAddtionRisk,
|
||||
isMainRisk: 0,
|
||||
@@ -443,7 +470,7 @@ export default {
|
||||
predictTransferPrem: null //建议书使用 预计转入保费字段
|
||||
}
|
||||
: {
|
||||
isCrossChannel:this.isCrossChannel,
|
||||
isCrossChannel: this.isCrossChannel,
|
||||
productTrialYearDTOS,
|
||||
calFactorLst,
|
||||
hasAddtionRisk,
|
||||
@@ -481,27 +508,27 @@ export default {
|
||||
let calFactorLst = resultData.productTrialInfoDTO.calFactorLst
|
||||
console.log('calFactorLst', calFactorLst)
|
||||
|
||||
calFactorLst.forEach(item => {
|
||||
calFactorLst.forEach((item) => {
|
||||
item['isMainRisk'] = 0
|
||||
item.columns = []
|
||||
if (item.type == 0) {
|
||||
//1、type=0 select 2、type=1 input+stepper
|
||||
productTrialInfoDTO[item.code].forEach(factor => {
|
||||
productTrialInfoDTO[item.code].forEach((factor) => {
|
||||
if (factor.defaultValue == 0) {
|
||||
item.showContent = factor.showContent
|
||||
if (factor[item.code + 'Flag'] != undefined) {
|
||||
item[item.code] = factor[item.code]
|
||||
item[item.code + 'Flag'] = factor[item.code + 'Flag']
|
||||
item.hasFlag = '1'
|
||||
}else if(item.code == 'pensionAge'){
|
||||
} else if (item.code == 'pensionAge') {
|
||||
//养老保险金领取年龄
|
||||
item[item.code] = factor[item.code]
|
||||
item['sex'] = factor.sex
|
||||
}else {
|
||||
} else {
|
||||
item[item.code] = factor[item.code]
|
||||
}
|
||||
}
|
||||
let itemColumns = { text: factor.showContent, value: factor[item.code], flag: factor[item.code + 'Flag'],sex:factor.sex}
|
||||
let itemColumns = { text: factor.showContent, value: factor[item.code], flag: factor[item.code + 'Flag'], sex: factor.sex }
|
||||
if (factor.medical !== undefined) {
|
||||
itemColumns.medical = factor.medical
|
||||
}
|
||||
@@ -510,10 +537,13 @@ export default {
|
||||
} else if (item.type == 1) {
|
||||
//按年龄选择
|
||||
if (productTrialInfoDTO[item.code] != null) {
|
||||
productTrialInfoDTO[item.code].forEach(factor => {
|
||||
productTrialInfoDTO[item.code].forEach((factor) => {
|
||||
// item = Object.assign(item, factor)
|
||||
if(JSON.parse(this.$CacheUtils.getLocItem('saleInsuredPersonInfo')).insuredAge >= Number(factor.minAge) && JSON.parse(this.$CacheUtils.getLocItem('saleInsuredPersonInfo')).insuredAge <= Number(factor.maxAge)){
|
||||
// if(JSON.parse(this.$CacheUtils.getLocItem('saleInsuredPersonInfo')).age >= Number(factor.minAge) && JSON.parse(this.$CacheUtils.getLocItem('saleInsuredPersonInfo')).age <= Number(factor.maxAge)){
|
||||
if (
|
||||
JSON.parse(this.$CacheUtils.getLocItem('saleInsuredPersonInfo')).insuredAge >= Number(factor.minAge) &&
|
||||
JSON.parse(this.$CacheUtils.getLocItem('saleInsuredPersonInfo')).insuredAge <= Number(factor.maxAge)
|
||||
) {
|
||||
// if(JSON.parse(this.$CacheUtils.getLocItem('saleInsuredPersonInfo')).age >= Number(factor.minAge) && JSON.parse(this.$CacheUtils.getLocItem('saleInsuredPersonInfo')).age <= Number(factor.maxAge)){
|
||||
item = Object.assign(item, factor)
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user