From eeea5349d9e4ddb92b5fe3b636857da62c05f78e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8B=BE=E9=80=9A?= Date: Mon, 13 Oct 2025 19:40:03 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90FIX=E3=80=91=E9=81=B4=E9=80=89?= =?UTF-8?q?=E9=83=A8=E5=88=86=E5=8A=9F=E8=83=BD=E4=BF=AE=E5=A4=8D=E5=8F=8A?= =?UTF-8?q?=E7=AD=BE=E5=AD=97=E9=A1=B5=E9=9D=A2=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/ebiz/common/CalculatePremium.vue | 9 +- src/views/ebiz/common/EvaluateResult.vue | 48 ++--- src/views/ebiz/sale/List.vue | 2 + src/views/ebiz/sale/SignatureConfirmation.vue | 8 +- src/views/ebiz/sale/questionEvaluate.vue | 191 +++++++++++------- 5 files changed, 155 insertions(+), 103 deletions(-) diff --git a/src/views/ebiz/common/CalculatePremium.vue b/src/views/ebiz/common/CalculatePremium.vue index ea27df01f..9509cdb2d 100644 --- a/src/views/ebiz/common/CalculatePremium.vue +++ b/src/views/ebiz/common/CalculatePremium.vue @@ -3432,6 +3432,8 @@ export default { this.verifyResultList = resultData.content.data.verifyResultList this.riskAmntList = resultData.content.data.riskAmntList } + }else{ + this.$toast(resultData.resultMessage) } }, //建议书试算记录保存更新--编辑功能 @@ -3504,7 +3506,7 @@ export default { //关闭测评结果弹窗遮罩层 clickOverlay(extra){ - if(exrta==='overlay')return + if(extra==='overlay')return this.goBack() }, @@ -3539,7 +3541,10 @@ export default { //重新测评 reStart(){ - this.showResultPopup = false + if(this.assessFlag === '2'){ + return this.$toast('已超过评估次数限制,无法重新评估') + } + localStorage.setItem('evalateFrom', 'toEvaluate') this.$jump({ flag: 'h5', extra: { diff --git a/src/views/ebiz/common/EvaluateResult.vue b/src/views/ebiz/common/EvaluateResult.vue index 932c7ae34..bc0f4d9a6 100644 --- a/src/views/ebiz/common/EvaluateResult.vue +++ b/src/views/ebiz/common/EvaluateResult.vue @@ -52,17 +52,7 @@ export default { title: '评估结果' }, }) - if (localStorage.isFrom == 'sale') { - setTimeout(() => { - EWebBridge.webCallAppInJs('webview_left_button', { - img: this.$assetsUrl + 'images/del-close-btn@3x.png', - intercept: '1' //是否拦截原生返回事件 1是 其他否 - }) - }, 100) - } - window.appCallBack = this.appCallBack document.body.style.backgroundColor = '#fff' - this.$route.query.assessResult && (this.assessResult = this.$route.query.assessResult) getOrderDetail({ orderNo: this.$route.query.orderNo,userAssessLogic:true }).then(res => { if (res.result == 0) { this.assessResultDescList = res.orderDTO.orderInfoDTO.assessResultDescMap @@ -131,19 +121,31 @@ export default { //继续投保 onConfirm(){ let index = localStorage.getItem('evalateFrom') == 'toEvaluate' ? '-4' : '-3' - console.log('onConfirm') - this.$jump({ - flag: 'goBack', - extra: { - refresh: '1', - index, - }, - routerInfo: { - type: 2, - index, - path: '/common/selectedProduct'+'/?orderNo=' + this.$route.query.orderNo - } - }) + if(!!this.$route.query.edit&&(this.$route.query.edit=='1')){ + this.$jump({ + flag: 'h5', + extra: { + url: location.origin + '/#' + '/common/selectedProduct?orderNo=' + this.$route.query.orderNo + }, + routerInfo: { + path:'/common/selectedProduct?orderNo=' + this.$route.query.orderNo + } + }) + }else{ + this.$jump({ + flag: 'goBack', + extra: { + refresh: '1', + index, + }, + routerInfo: { + type: 2, + index, + path: '/common/selectedProduct'+'?orderNo=' + this.$route.query.orderNo + } + }) + } + } } } diff --git a/src/views/ebiz/sale/List.vue b/src/views/ebiz/sale/List.vue index 12c8c3ec5..8f7f39267 100644 --- a/src/views/ebiz/sale/List.vue +++ b/src/views/ebiz/sale/List.vue @@ -539,6 +539,8 @@ export default { } } let orderStatus = order.orderInfoDTO.orderStatus + let assessQuestionnaireDtoList = order.orderInfoDTO.assessQuestionnaireDtoList + console.log(order,'order') let orderNo = order.orderInfoDTO.orderNo let url = '' //保存对应的订单号 diff --git a/src/views/ebiz/sale/SignatureConfirmation.vue b/src/views/ebiz/sale/SignatureConfirmation.vue index c19d3d7ff..68ced0421 100644 --- a/src/views/ebiz/sale/SignatureConfirmation.vue +++ b/src/views/ebiz/sale/SignatureConfirmation.vue @@ -58,7 +58,7 @@ item.documentCode == '9' || item.documentCode == '12' || item.documentCode == '13' || - item.documentCode == '14' + item.documentCode == '14' ? '需阅读' : '需阅读并签署' }} @@ -292,7 +292,7 @@ item.documentCode == '9' || item.documentCode == '12' || item.documentCode == '13' || - item.documentCode == '14' + item.documentCode == '14' ? '需阅读' : '需阅读并签署' }} @@ -1845,6 +1845,10 @@ export default { item.documentShortName = '风险告知' item.key = 7.1 item.routePath = 'readDocuments' + }else if(item.documentCode == '30'){ + item.documentShortName = '适当性评估' + item.key = 13 + item.routePath = 'readDocuments' } }, getSignInvalid() { diff --git a/src/views/ebiz/sale/questionEvaluate.vue b/src/views/ebiz/sale/questionEvaluate.vue index d49b9cceb..ba56748e9 100644 --- a/src/views/ebiz/sale/questionEvaluate.vue +++ b/src/views/ebiz/sale/questionEvaluate.vue @@ -5,12 +5,13 @@
- +
+
{{questionInfo.questionHeadDesc}}
{{questionInfo.question1Desc}}
@@ -123,14 +124,16 @@ export default { assessQuestionnaireDtoList:[], CheckBoxExtraRadio:'', CheckBoxExtraDesc:'', - disabled:true + disabled:true, + assessFlag:null, + fromEdit:"" } }, watch: { answerList: { handler(newVal) { if(newVal) { - console.log('answerList', newVal) + console.log('检测到了长度', newVal.length) if(newVal.length == this.questionList.length){ // 检查每一项是否有空值 // 使用every方法检查是否所有项都已填写 @@ -160,9 +163,7 @@ export default { deep: true } }, - created(){ - this.init() - }, + mounted(){ this.$jump({ flag: 'navigation', @@ -182,10 +183,23 @@ export default { window.appCallBack = this.appCallBack document.body.style.backgroundColor = '#fff' const orderNo = this.$route.query.orderNo + getOrderDetail({ orderNo: this.$route.query.orderNo,userAssessLogic:true }).then(res => { if (res.result == 0) { + //是否做过测评及是否超出限制 + this.assessFlag = res.orderDTO.orderInfoDTO.assessFlag this.questionInfo = res.orderDTO.orderInfoDTO.assessQuestionnaireDto this.questionList = res.orderDTO.orderInfoDTO.assessQuestionnaireDto.questionList + this.ageList = res.orderDTO.orderInfoDTO.assessQuestionnaireDto.questionList[0].options.map(item=>item.item) + if (this.$CacheUtils.getLocItem('saleInsuredInfo')) { + this.saleInsuredInfo = JSON.parse(this.$CacheUtils.getLocItem('saleInsuredInfo')) + + }else{ + this.saleInsuredInfo = res.orderDTO.appntDTO + } + console.log('投保人信息',this.saleInsuredInfo) + this.handlerFirstQuestion() + console.log('this.ageList',this.ageList,this.questionList) } else { this.$toast(res.resultMessage) } @@ -193,63 +207,36 @@ export default { }, methods: { appCallBack(data) { - if (data.trigger == 'left_button_click' && localStorage.isFrom == 'sale') { + if (data.trigger == 'left_button_click' && localStorage.isFrom == 'sale') { return this.$dialog - .confirm({ - className: 'dialog-delete', - title: '提示', - message: '退出流程可能会丢失部分数据,是否确认退出?', - cancelButtonColor: '#E9332E', - confirmButtonColor: '#FFFFFF' - }) - .then(() => { - this.$jump({ - flag: 'h5', - extra: { - title: '电子投保单列表', - forbidSwipeBack: 1, //当前页面禁止右滑返回 - url: location.origin + `/#/sale/list` - }, - routerInfo: { - path: `/sale/list`, - type: '1' - } - }) - }) - .catch(() => { - return - }) - }else if (data.trigger == 'right_button_click' && localStorage.isFrom == 'proposal') { - return this.$dialog - .confirm({ - className: 'dialog-delete', - title: '提示', - message: '退出流程可能会丢失部分数据,是否确认退出?', - cancelButtonColor: '#E9332E', - confirmButtonColor: '#FFFFFF' - }) - .then(() => { - this.$jump({ - flag: 'h5', - extra: { - title: '建议书列表', - forbidSwipeBack: 1, //当前页面禁止右滑返回 - url: location.origin + `/#/proposal/list` - }, - routerInfo: { - path: `/proposal/list`, - type: '1' - } - }) - }) - .catch(() => { - return - }) + .confirm({ + className: 'dialog-delete', + title: '提示', + message: '退出流程可能会丢失部分数据,是否确认退出?', + cancelButtonColor: '#E9332E', + confirmButtonColor: '#FFFFFF' + }) + .then(() => { + this.$jump({ + flag: 'h5', + extra: { + title: '电子投保单列表', + forbidSwipeBack: 1, //当前页面禁止右滑返回 + url: location.origin + `/#/sale/list` + }, + routerInfo: { + path: `/sale/list`, + type: '1' + } + }) + }) + .catch(() => { + return + }) } }, //单选框处理数据 handlerRadio(e,item, idx) { - console.log('单选框选择',e,item,idx) this.$set(this.assessQuestionnaireDtoList,idx,{ orderNo:this.$route.query.orderNo, questionNo:item.questionNo, @@ -278,6 +265,7 @@ export default { //单选框筛选出分数和每项 filterRadioElement(el,e,item){ + console.log('点击单选框',el,e,item) if(el=='content'){ return item.options.find(item=>item.option==e).item.substring(2) }else if(el=='score'){ @@ -382,12 +370,40 @@ export default { return score } }, - init(){ - console.log('1231') - if (this.$CacheUtils.getLocItem('saleInsuredInfo')) { - this.saleInsuredInfo = JSON.parse(this.$CacheUtils.getLocItem('saleInsuredInfo')) - console.log('this.saleInsuredInfo',this.saleInsuredInfo) - } + + //处理第一个单选框并自动回显:根据投保人年龄区间,回显对应的选项,并组装数据; + handlerFirstQuestion(){ + let age = this.saleInsuredInfo.age + console.log('投保人年龄',age) + let answer; + if(age<=18) { + answer = 'F' + }else if(age>=18&&age<=25) { + answer = "A" + }else if(age>=26&&age<=50) { + answer = "B" + }else if(age>=51&&age<=60) { + answer = "C" + }else if(age<=65) { + answer = "D" + }else{ + answer = "E" + } + this.answerList[0] = answer //单选框自动回显 + let firstChoice = this.questionList[0].options.filter(item=>item.option==answer) + console.log('res',firstChoice,this.questionList[0],this.questionList[0].options) + this.$set(this.assessQuestionnaireDtoList,0,{ + orderNo:this.$route.query.orderNo, + questionNo:this.questionList[0].questionNo, + questionContent:this.questionList[0].title, + choose:answer, + chooseContent:this.filterRadioElement('content',answer,this.questionList[0]), + subOption:null, + subOptionContent:null, + score:this.filterRadioElement('score',answer,this.questionList[0]), + chooseDesc:null, + }) + }, validatePositiveInteger(value) { const regex = /^(?:[1-9]\d{0,3}|[1-9]\d{0,3}(?:,\d{3})*)$/; @@ -407,10 +423,13 @@ export default { }else{ if(Array.from(this.answerList[3]).length!=2||(Array.from(this.answerList[3]).some(item=>!item))){ return this.$toast('请填写完整信息') - }else if(Array.from(this.answerList[1]).includes('B')&&(!this.CheckBoxExtraRadio||this.CheckBoxExtraRadio=="Y"&&!this.CheckBoxExtraDesc)) + }else if(Array.from(this.answerList[1]).includes('B')&&this.CheckBoxExtraRadio=="Y"&&!this.CheckBoxExtraDesc) { + return this.$toast('请您补充险种和保额信息。') + } else if(Array.from(this.answerList[1]).includes('B')&&!this.CheckBoxExtraRadio){ return this.$toast('请填写完整信息') } + } } let regex = /^([1-9]\d{0,3}|10000)$/; @@ -418,6 +437,9 @@ export default { || !regex.test(this.answerList[4][0])){ return this.$toast('请填写1-10000之间的整数') } + if(this.assessFlag === '2'){ + return this.$toast('已超过评估次数限制,无法重新评估') + } this.getEvaluateResult() }, @@ -448,22 +470,39 @@ export default { }, //未测评过,测评成功后重新测评 reTest(){ - console.log('重新测评') - window.location.reload() + localStorage.setItem('evalateFrom', 'toEvaluate') + if(this.assessFlag === '2'){ + return this.$toast('已超过评估次数限制,无法重新评估') + }else{ + window.location.reload() + } }, //继续投保,跳转至评估结果页 toInsure(){ this.showResultPopup = false - this.$jump({ - flag: 'h5', - extra: { - url: location.origin +`/#/common/evaluateResult?orderNo=${this.$route.query.orderNo}` - }, - routerInfo: { - path: `/common/evaluateResult?orderNo=${this.$route.query.orderNo}` - } - }) + if(!!this.$route.query.edit&&(this.$route.query.edit=='1')){ + this.$jump({ + flag: 'h5', + extra: { + url: location.origin +`/#/common/evaluateResult?orderNo=${this.$route.query.orderNo}&&edit=1` + }, + routerInfo: { + path: `/common/evaluateResult?orderNo=${this.$route.query.orderNo}&&edit=1` + } + }) + }else{ + this.$jump({ + flag: 'h5', + extra: { + url: location.origin +`/#/common/evaluateResult?orderNo=${this.$route.query.orderNo}` + }, + routerInfo: { + path: `/common/evaluateResult?orderNo=${this.$route.query.orderNo}` + } + }) + } + } } }