feat-主险选择新增职业校验逻辑

This commit is contained in:
zhang.weiwei
2024-08-07 18:34:48 +08:00
parent 1dd7a9368c
commit a6f57ffa35
3 changed files with 112 additions and 70 deletions

View File

@@ -118,3 +118,14 @@ export function funcPermCheck(data) {
data 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 */

View File

@@ -62,7 +62,8 @@ let sale = [
'/sale/insure/selfToHuman', '/sale/insure/selfToHuman',
'/sale/insure/orderPayStatusQuery', '/sale/insure/orderPayStatusQuery',
'/sale/order/revokeOrder', '/sale/order/revokeOrder',
'/sale/product/getcompany' '/sale/product/getcompany',
'/sale/product/occupationCodeCheck'
] //在线投保 ] //在线投保
let agentEnter = [ let agentEnter = [
'/agent/enter/share', '/agent/enter/share',

View File

@@ -51,7 +51,7 @@
</template> </template>
<script> <script>
import { Cell, CellGroup, Tag, Radio, RadioGroup, Tab, Tabs } from 'vant' import { Cell, CellGroup, Tag, Radio, RadioGroup, Tab, Tabs } from 'vant'
import { mainRiskList,mainRiskListProposal,calculatePremium,getActProductList } from '@/api/ebiz/common/common' import { mainRiskList, mainRiskListProposal, calculatePremium, getActProductList, occupationCodeCheck } from '@/api/ebiz/common/common'
import { getOrderDetail, riskLevelCheck } from '@/api/ebiz/sale/sale' import { getOrderDetail, riskLevelCheck } from '@/api/ebiz/sale/sale'
import { getDetail } from '@/api/ebiz/proposal/proposal.js' import { getDetail } from '@/api/ebiz/proposal/proposal.js'
import riskRules from './risk-rules' import riskRules from './risk-rules'
@@ -64,7 +64,7 @@ export default {
[Tag.name]: Tag, [Tag.name]: Tag,
[Cell.name]: Cell, [Cell.name]: Cell,
[Tab.name]: Tab, [Tab.name]: Tab,
[Tabs.name]:Tabs, [Tabs.name]: Tabs
}, },
data() { data() {
return { return {
@@ -87,16 +87,16 @@ export default {
flag: 'navigation', flag: 'navigation',
extra: { extra: {
title: '主险选择列表' title: '主险选择列表'
}, }
}) })
if (localStorage.isFrom == 'sale') { if (localStorage.isFrom == 'sale') {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
getOrderDetail({ orderNo: this.$route.query.orderNo }).then( getOrderDetail({ orderNo: this.$route.query.orderNo }).then(
res => { (res) => {
if (res.result == 0) { if (res.result == 0) {
//------------------------专为桂/惠企写死--begin---------------// //------------------------专为桂/惠企写死--begin---------------//
if (res.orderDTO.insuredDTOs[0] && res.orderDTO.insuredDTOs[0].riskDTOLst) { 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' return v.riskCode == 'GFRS_M0024' || v.riskCode == 'GFRS_M0040'
}) })
if (this.flag) { if (this.flag) {
@@ -108,16 +108,16 @@ export default {
//isActivityCode 有值代表是活动,无值代表是普通产品 //isActivityCode 有值代表是活动,无值代表是普通产品
this.isActivityCode = res.orderDTO.orderInfoDTO.activityCode this.isActivityCode = res.orderDTO.orderInfoDTO.activityCode
// recommendType 03 银保渠道 // 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)) { if (this.recommendType == '02' || this.recommendType == '11' || (this.recommendType == '03' && this.isActivityCode)) {
// 电投 团险渠道产品 均为交叉渠道销售 // 电投 团险渠道产品 均为交叉渠道销售
this.isCrossChannel = '1'; this.isCrossChannel = '1'
} }
// ------------------------专为桂/惠企写死--end---------------// // ------------------------专为桂/惠企写死--end---------------//
} }
resolve(this.isActivityCodeFunc()) resolve(this.isActivityCodeFunc())
}, },
error => { (error) => {
reject(this.isActivityCodeFunc()) reject(this.isActivityCodeFunc())
} }
) )
@@ -126,30 +126,32 @@ export default {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
getDetail({ getDetail({
orderNo: this.$route.query.proposalOrderNo orderNo: this.$route.query.proposalOrderNo
}).then(res => { }).then(
(res) => {
if (res.result == '0') { if (res.result == '0') {
this.recommendType = res.content[0].recmdDTO?res.content[0].recmdDTO.recommendType:''; this.recommendType = res.content[0].recmdDTO ? res.content[0].recmdDTO.recommendType : ''
if (this.recommendType == '02' || this.recommendType == '11') { if (this.recommendType == '02' || this.recommendType == '11') {
// 电投 团险渠道产品 均为交叉渠道销售 // 电投 团险渠道产品 均为交叉渠道销售
this.isCrossChannel = '1'; this.isCrossChannel = '1'
} }
} }
resolve(this.isActivityCodeFunc()) resolve(this.isActivityCodeFunc())
}, },
error => { (error) => {
reject(this.isActivityCodeFunc()) reject(this.isActivityCodeFunc())
}) }
)
}) })
} }
}, },
methods: { methods: {
onChangeMainList(name) { onChangeMainList(name) {
if (name == 'cross') { if (name == 'cross') {
this.isCrossChannel = '1'; this.isCrossChannel = '1'
} else { } else {
this.isCrossChannel = '0'; this.isCrossChannel = '0'
} }
this.isActivityCodeFunc(); this.isActivityCodeFunc()
}, },
isActivityCodeFunc() { isActivityCodeFunc() {
//isActivityCode 有值代表是活动,无值代表是普通产品 //isActivityCode 有值代表是活动,无值代表是普通产品
@@ -168,7 +170,7 @@ export default {
type: 'app' type: 'app'
}) })
if (resultData.result == 0) { if (resultData.result == 0) {
resultData.content.mainRiskDTOS.forEach(item => { resultData.content.mainRiskDTOS.forEach((item) => {
//已选主险不能再选、险种互斥 //已选主险不能再选、险种互斥
if (mainRiskCodes && mainRiskCodes.includes(item.riskProductCode)) { if (mainRiskCodes && mainRiskCodes.includes(item.riskProductCode)) {
this.delList.push(item.riskProductCode) this.delList.push(item.riskProductCode)
@@ -196,7 +198,7 @@ export default {
//如果是选择产品, 进入电子投保, 在主险列表能默认选中我在产品列表选择的产品 //如果是选择产品, 进入电子投保, 在主险列表能默认选中我在产品列表选择的产品
if (this.list.length > 0) { if (this.list.length > 0) {
console.log(localStorage.productCodeChooseFromList) console.log(localStorage.productCodeChooseFromList)
this.result = this.list.find(v => { this.result = this.list.find((v) => {
return v.riskProductCode == localStorage.productCodeChooseFromList return v.riskProductCode == localStorage.productCodeChooseFromList
}) })
} }
@@ -246,7 +248,7 @@ export default {
resultData = await mainRiskList(mainListDate) resultData = await mainRiskList(mainListDate)
} }
if (resultData.result == 0) { if (resultData.result == 0) {
resultData.mainRiskDTOS.forEach(item => { resultData.mainRiskDTOS.forEach((item) => {
//已选主险不能再选、险种互斥 //已选主险不能再选、险种互斥
if (mainRiskCodes && mainRiskCodes.includes(item.riskProductCode)) { if (mainRiskCodes && mainRiskCodes.includes(item.riskProductCode)) {
this.delList.push(item.riskProductCode) this.delList.push(item.riskProductCode)
@@ -273,7 +275,7 @@ export default {
// 如果是选择产品, 进入电子投保, 在主险列表能默认选中我在产品列表选择的产品 // 如果是选择产品, 进入电子投保, 在主险列表能默认选中我在产品列表选择的产品
if (this.list.length > 0) { if (this.list.length > 0) {
console.log(localStorage.productCodeChooseFromList) console.log(localStorage.productCodeChooseFromList)
this.result = this.list.find(v => { this.result = this.list.find((v) => {
return v.riskProductCode == localStorage.productCodeChooseFromList return v.riskProductCode == localStorage.productCodeChooseFromList
}) })
} }
@@ -308,17 +310,36 @@ export default {
this.$toast('请选择产品') this.$toast('请选择产品')
return return
} }
/** 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') { if (localStorage.getItem('isFrom') == 'sale') {
let params = { let params = {
productCode: this.result.riskProductCode, 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 params.productChannl = this.isCrossChannel
} }
riskLevelCheck(params).then(res => { riskLevelCheck(params).then((res) => {
if (res.result == 0) { if (res.result == 0) {
if(res.saLevelMatch == "Y"){ if (res.saLevelMatch == 'Y') {
//置空产品 //置空产品
localStorage.chooseProducts = '' localStorage.chooseProducts = ''
//添加主险 //添加主险
@@ -337,6 +358,7 @@ export default {
this.addMainRisk() this.addMainRisk()
} }
}, },
//储存主险 //储存主险
async addMainRisk() { async addMainRisk() {
localStorage.setItem('isTrial', '1') localStorage.setItem('isTrial', '1')
@@ -347,7 +369,7 @@ export default {
localStorage.isTrial = resultData.productTrialInfoDTO.productTrialYearDTOS != null ? '0' : '1' localStorage.isTrial = resultData.productTrialInfoDTO.productTrialYearDTOS != null ? '0' : '1'
localStorage.hint = resultData.hint localStorage.hint = resultData.hint
if (resultData.productTrialInfoDTO.dutyGroup != null) { if (resultData.productTrialInfoDTO.dutyGroup != null) {
resultData.productTrialInfoDTO.dutyGroup.map(item => { resultData.productTrialInfoDTO.dutyGroup.map((item) => {
if (item.dutyName == '意外身故/伤残保险金') { if (item.dutyName == '意外身故/伤残保险金') {
item.defaultDutyAmt = item.minDutyAmt item.defaultDutyAmt = item.minDutyAmt
} }
@@ -407,7 +429,12 @@ export default {
//校验该代理人是否有该产品的售卖权限 //校验该代理人是否有该产品的售卖权限
return this.$toast(flagPermission.resultMessage) 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') { if (flagCompany && localStorage.isFrom != 'proposal') {
//校验该投保人的工作单位是否能够投保该产品 //校验该投保人的工作单位是否能够投保该产品
return this.$toast('该投保人工作单位不能投保该产品') return this.$toast('该投保人工作单位不能投保该产品')
@@ -423,7 +450,7 @@ export default {
let calFactorLst = this.getFactorList(resultData) let calFactorLst = this.getFactorList(resultData)
let productTrialYearDTOS = resultData.productTrialInfoDTO.productTrialYearDTOS != null ? resultData.productTrialInfoDTO.productTrialYearDTOS : null 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 = let currentProductInfo =
localStorage.isTrial == '1' localStorage.isTrial == '1'
? { ? {
@@ -481,12 +508,12 @@ export default {
let calFactorLst = resultData.productTrialInfoDTO.calFactorLst let calFactorLst = resultData.productTrialInfoDTO.calFactorLst
console.log('calFactorLst', calFactorLst) console.log('calFactorLst', calFactorLst)
calFactorLst.forEach(item => { calFactorLst.forEach((item) => {
item['isMainRisk'] = 0 item['isMainRisk'] = 0
item.columns = [] item.columns = []
if (item.type == 0) { if (item.type == 0) {
//1、type=0 select 2、type=1 input+stepper //1、type=0 select 2、type=1 input+stepper
productTrialInfoDTO[item.code].forEach(factor => { productTrialInfoDTO[item.code].forEach((factor) => {
if (factor.defaultValue == 0) { if (factor.defaultValue == 0) {
item.showContent = factor.showContent item.showContent = factor.showContent
if (factor[item.code + 'Flag'] != undefined) { if (factor[item.code + 'Flag'] != undefined) {
@@ -510,9 +537,12 @@ export default {
} else if (item.type == 1) { } else if (item.type == 1) {
//按年龄选择 //按年龄选择
if (productTrialInfoDTO[item.code] != null) { if (productTrialInfoDTO[item.code] != null) {
productTrialInfoDTO[item.code].forEach(factor => { productTrialInfoDTO[item.code].forEach((factor) => {
// item = Object.assign(item, 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')).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')).age >= Number(factor.minAge) && JSON.parse(this.$CacheUtils.getLocItem('saleInsuredPersonInfo')).age <= Number(factor.maxAge)){
item = Object.assign(item, factor) item = Object.assign(item, factor)
} }