【FIX】根据新需求调整页面间交互

This commit is contained in:
勾通
2025-10-17 17:01:53 +08:00
parent 2e7c4197dd
commit 05db7dcc96
5 changed files with 164 additions and 203 deletions

View File

@@ -418,18 +418,6 @@
</div>
</div>
</van-dialog>
<PopupQuesResult
@goBackHandler="goBack"
@goNextHandler="goNext"
@reStartHandler="reStart"
@clickOverlayHandler="clickOverlay"
:showResultPopup="showResultPopup"
:showHasTested = "showHasTested"
:resultRiskType = 'resultRiskType'
:appntInfo="saleInsuredInfo"
/>
</div>
</template>
<script>
@@ -441,7 +429,6 @@ import { getAgentInfo } from '@/api/ebiz/my/my.js'
import occupationList from '@/components/ebiz/occipation/data/occupation'
import utilsAge from '@/assets/js/utils/age'
import riskRules from './risk-rules'
import PopupQuesResult from '@/components/common/PopupQuesResult'
//险种GFRS_M0016的责任的验证规则
//默认 最低基本保险金额min 10000 整数倍要求mutiple 1000
@@ -585,7 +572,6 @@ export default {
[Dialog.name]: Dialog,
[Radio.name]: Radio,
[RadioGroup.name]: RadioGroup,
[PopupQuesResult.name]: PopupQuesResult
},
data() {
return {
@@ -635,10 +621,7 @@ export default {
riskAmntList: [], //累计寿险风险保额(元)、累计重大疾病风险保额(元)、累计意外伤害风险保额(元)、意外住院津贴日额(元)、一般住院津贴日额(元)、特定疾病住院津贴日额(元)
verifyResultList: [], //核保试算返回数据结构
showResultPopup:false, //测评弹窗弹窗
showHasTested:false, //已经测评过
assessFlag:"", //是否需要填写适应性问卷
resultRiskType:'', //评估结果
/**
* 是否需要填写适应性问卷
* 0需要填写
@@ -3384,29 +3367,6 @@ export default {
} else if (this.$route.query.proposalOrderNo) {
thismyurl = '?proposalOrderNo=' + this.$route.query.proposalOrderNo
}
getOrderDetail({orderNo: this.$route.query.orderNo,userAssessLogic:true}).then((res) => {
if(res.result == '0'){
this.assessFlag = res.orderDTO.orderInfoDTO.assessFlag
this.resultRiskType = res.orderDTO.orderInfoDTO.resultRiskType
console.log('this.assessFlag',this.assessFlag)
if(this.assessFlag === '0'){ //需要填写问卷
localStorage.setItem('evalateFrom', 'toEvaluate') //通过该字段确定跳回几层
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#' + `/sale/questionEvaluate?orderNo=${this.$route.query.orderNo}`
},
routerInfo: {
path:`/sale/questionEvaluate?orderNo=${this.$route.query.orderNo}`
}
})
}else if( this.assessFlag === '2'){ //2.不需要填写,超过次数限制弹提示,继续后续投保流程
return this.$toast('已超过评估次数限制,无法重新评估')
}else if( this.assessFlag === '3'){ //3.不需要填写,已有有效期的问卷,需展示结论
localStorage.setItem('evalateFrom', 'toResult')
this.showResultPopup = true
this.showHasTested = true
}else{
this.$jump({
flag: 'goBack',
extra: {
@@ -3419,14 +3379,6 @@ export default {
path: '/common/selectedProduct' + thismyurl
}
})
}
}else{
this.$toast(res.resMessage)
}
})
} else if (localStorage.isFrom == 'proposal') {
let proposalOrderNo = this.$CacheUtils.getLocItem('proposalNo') || ''
if (resultData.content.id) {
@@ -3512,58 +3464,6 @@ export default {
return false
}
},
//关闭测评结果弹窗遮罩层
clickOverlay(extra){
if(extra==='overlay')return
this.goBack()
},
//上一步
goBack(){
this.$jump({
flag: 'goBack',
extra: {
refresh: '1',
index: '-2'
},
routerInfo: {
type: 2,
index: -2,
path: '/common/selectedProduct/?orderNo=' + this.$route.query.orderNo
}
})
},
//我已知晓,继续投保
goNext(){
this.$jump({
flag: 'h5',
extra: {
url: location.origin + `/#/common/evaluateResult?orderNo=${this.$route.query.orderNo}`
},
routerInfo: {
path: `/common/evaluateResult?orderNo=${this.$route.query.orderNo}`
}
})
},
//重新测评
reStart(){
if(this.assessFlag === '2'){
return this.$toast('已超过评估次数限制,无法重新评估')
}
localStorage.setItem('evalateFrom', 'toEvaluate')
this.$jump({
flag: 'h5',
extra: {
url: location.origin + `/#/sale/questionEvaluate?orderNo=${this.$route.query.orderNo}`
},
routerInfo: {
path: `/sale/questionEvaluate?orderNo=${this.$route.query.orderNo}`
}
})
}
},
watch: {
// chooseProducts: {

View File

@@ -3,8 +3,8 @@
<div v-if="assessResult == '1'" class="fit-container">
<img src="@/assets/images/ebiz/evalImg.png" alt="">
<div class="pt20 pb20 pr10 pl20">
<span>{{ evalDesc }}</span>
<span class="red fw400">根据以上与适当性问卷匹配结果我司建议您终止投保关注该产品的特征及风险审慎作出投保决策 如您坚持投保请您确认和签署投保风险警示确认书</span>
<span class="fs18">{{ evalDesc }}</span>
<span class="green fw400 fs18">根据以上与适当性问卷匹配结果我司建议您终止投保关注该产品的特征及风险审慎作出投保决策 如您坚持投保请您确认和签署投保风险警示确认书</span>
</div>
<div class="footer-btn bottom-btn bg-white flex">
<van-button type="danger" size="large" plain square class="btn" @click="exitProcess" v-no-more-click="1000">终止投保</van-button>
@@ -13,7 +13,7 @@
</div>
<div v-if="assessResult === '0'" class="fit-container">
<img src="@/assets/images/ebiz/evalImg.png" alt="">
<div class="pt20 pb20 pr10 pl20">{{evalDesc}}</div>
<div class="pt20 pb20 pr10 pl20 fs18">{{evalDesc}}</div>
<div class="bottom-btn bg-white flex">
<van-button type="danger" size="large" square class="btn" v-no-more-click="1000" @click="onConfirm">确认</van-button>
</div>
@@ -101,6 +101,18 @@ export default {
confirmButtonColor: '#FFFFFF'
})
.then(() => {
this.jumpList()
})
.catch(() => {
return
})
},
jumpList(){
saveEvalateAnswer({
operateType:'0',
orderNo:this.$route.query.orderNo
}).then(res=>{
if(res.result=='0'){
this.$jump({
flag: 'h5',
extra: {
@@ -113,39 +125,24 @@ export default {
type: '1'
}
})
})
.catch(() => {
return
}else{
this.$toast(res.resultMessage)
}
})
},
//继续投保
onConfirm(){
let index = localStorage.getItem('evalateFrom') == 'toEvaluate' ? '-4' : '-3'
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
forbidSwipeBack: '1',
url: location.origin + '/#' + '/sale/beneficiary?orderNo=' + this.$route.query.orderNo,
needRefresh: '1'
},
routerInfo: {
path:'/common/selectedProduct?orderNo=' + this.$route.query.orderNo
path: '/sale/beneficiary?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
}
})
}
}
}
}
@@ -163,6 +160,8 @@ export default {
justify-content: center;
align-items: center;
img{
width:179px;
height:126px;
margin-bottom:20px;
}
}

View File

@@ -140,6 +140,16 @@
</div>
</van-submit-bar>
</div>
<PopupQuesResult
@goBackHandler="goBack"
@goNextHandler="goNext"
@reStartHandler="reStart"
@clickOverlayHandler="clickOverlay"
:showResultPopup="showResultPopup"
:showHasTested = "showHasTested"
:resultRiskType = 'resultRiskType'
:appntInfo="saleInsuredInfo"
/>
</div>
</template>
<script>
@@ -148,10 +158,11 @@
import { orderDetail, deleteOrderInfo, mainRiskList, mainRiskListProposal, calculatePremium } from '@/api/ebiz/common/common'
import { formatAllRisk } from '@/assets/js/utils/formatRiskList'
import { getDetail, deleteProposal } from '@/api/ebiz/proposal/proposal.js'
import { saveOrderActiveType,getActivityList, getDoubleRecordProductLst, saveOrderType } from '@/api/ebiz/sale/sale.js'
import { saveOrderActiveType,getActivityList, getDoubleRecordProductLst, saveOrderType,getOrderDetail } from '@/api/ebiz/sale/sale.js'
import utilsAge from '@/assets/js/utils/age'
import IndexBar from '@/components/ebiz/sale/IndexBar'
import riskRules from './risk-rules'
import PopupQuesResult from '@/components/common/PopupQuesResult'
export default {
name: 'selectedProduct',
@@ -178,6 +189,13 @@
manageComCode:'',//代理人管理机构 52贵州 45广西
isCrossChannel: 0, // 是否选择交叉渠道列表 0-否 1-是
isElecCont: '', // 保单形式
saleInsuredInfo: {}, //投保人信息
showResultPopup:false, //测评弹窗弹窗
showHasTested:false, //已经测评过
assessFlag:"", //是否需要填写适应性问卷
resultRiskType:'', //评估结果
}
},
components: {
@@ -188,7 +206,8 @@
[IndexBar.name]: IndexBar,
[RadioGroup.name]: RadioGroup,
[Radio.name]: Radio,
[Image.name]: Image
[Image.name]: Image,
[PopupQuesResult.name]: PopupQuesResult
},
async mounted() {
this.$jump({
@@ -197,6 +216,9 @@
title: '已选产品列表'
},
})
if (this.$CacheUtils.getLocItem('saleInsuredInfo')) {
this.saleInsuredInfo = JSON.parse(this.$CacheUtils.getLocItem('saleInsuredInfo'))
}
if (localStorage.isFrom == 'sale') {
// 清除活动标志
// localStorage.removeItem('active_type')
@@ -1011,15 +1033,45 @@
}
saveOrderType(params).then(res => {
if(res.result == 0) {
getOrderDetail({orderNo: this.$route.query.orderNo,userAssessLogic:true}).then((res) => {
if(res.result == '0'){
this.assessFlag = res.orderDTO.orderInfoDTO.assessFlag
this.resultRiskType = res.orderDTO.orderInfoDTO.resultRiskType
console.log('this.assessFlag',this.assessFlag)
//return
if(this.assessFlag === '0'){ //需要填写问卷
localStorage.setItem('evalateFrom', 'toEvaluate') //通过该字段确定跳回几层
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#' + `/sale/questionEvaluate?orderNo=${this.$route.query.orderNo}`
},
routerInfo: {
path:`/sale/questionEvaluate?orderNo=${this.$route.query.orderNo}`
}
})
}else if( this.assessFlag === '3'){ //3.不需要填写,已有有效期的问卷,需展示结论
localStorage.setItem('evalateFrom', 'toResult')
this.showResultPopup = true
this.showHasTested = true
}else{
if(this.assessFlag === '2'){
this.$toast('已超过评估次数限制,无法重新评估')
}
this.$jump({
flag: 'h5',
extra: {
forbidSwipeBack: '1',
url: location.origin + '/#' + thismyurl,
url: location.origin + '/#' + '/sale/beneficiary?orderNo=' + this.$route.query.orderNo,
needRefresh: '1'
},
routerInfo: {
path: thismyurl
path: '/sale/beneficiary?orderNo=' + this.$route.query.orderNo,
}
})
}
}else{
this.$toast(res.resultMessage)
}
})
} else {
@@ -1039,9 +1091,41 @@
}
})
}
},
//做过测评,点击上一步
goBack(){
this.showResultPopup = false
},
goNext(){
this.$jump({
flag: 'h5',
extra: {
forbidSwipeBack: '1',
url: location.origin + '/#' + '/sale/beneficiary?orderNo=' + this.$route.query.orderNo,
needRefresh: '1'
},
routerInfo: {
path: '/sale/beneficiary?orderNo=' + this.$route.query.orderNo,
}
})
},
reStart(){
this.$jump({
flag: 'h5',
extra: {
url: location.origin + `/#/sale/questionEvaluate?orderNo=${this.$route.query.orderNo}`
},
routerInfo: {
path: `/sale/questionEvaluate?orderNo=${this.$route.query.orderNo}`
}
})
},
clickOverlay(){
this.showResultPopup = false
}
}
}
</script>
<style lang="scss" scoped>
@import '@/assets/sass/variables.scss';

View File

@@ -465,7 +465,6 @@ export default {
}
}
let orderStatus = order.orderInfoDTO.orderStatus
let assessJump = order.orderInfoDTO.assessJump
console.log(order,'order')
let orderNo = order.orderInfoDTO.orderNo
let url = ''
@@ -514,11 +513,7 @@ export default {
url = '/sale/AttachmentManagement?edit=1&orderNo='+orderNo
}
}else if(orderStatus == '39'){ //险种信息保存成功, 跳到已选产品列表
if(!!assessJump){
url = '/sale/questionEvaluate?edit=1&orderNo='+orderNo
}else{
url = '/common/selectedProduct?edit=1&orderNo='+orderNo+ '&branchType=' + this.branchType
}
}else if(orderStatus == '40'){//告知信息保存成功, 跳到风险测评--
if( order.riskEvaluationDTO.isShowEvaluationPoint != '1'){
if(order.universalRiskNotifyDTO && order.universalRiskNotifyDTO.isUniversalRiskNotifyShowPoint == '1'){

View File

@@ -1,8 +1,8 @@
<template>
<div class="question-container">
<div class="question-header bg-white pt20 pb20 pr10 pl10" >
<h5 class="fs14">投保人信息</h5>
<div class="fs14 fieldContent">
<h5 class="fs18 appntTitle">投保人信息</h5>
<div class="fieldContent">
<van-cell-group :border="false">
<van-field v-model="saleInsuredInfo.name" label="姓名" readonly required/>
<van-field :value="saleInsuredInfo.idType | idToText('insuredIdType')" label="证件类型" readonly required/>
@@ -13,11 +13,11 @@
</div>
<!-- <button class="btn" @click="clickBtn">返回</button> -->
<div class="evalDesc" >
<h5> {{questionInfo.questionHeadDesc}}</h5>
<h5>{{questionInfo.question1Desc}}</h5>
<h5>{{questionInfo.question2Desc}}</h5>
<h5>{{questionInfo.question3Desc}}</h5>
<h5>{{questionInfo.questionTailDesc}}</h5>
<h5 class="fs18"> {{questionInfo.questionHeadDesc}}</h5>
<h5 class="fs18">{{questionInfo.question1Desc}}</h5>
<h5 class="fs18">{{questionInfo.question2Desc}}</h5>
<h5 class="fs18">{{questionInfo.question3Desc}}</h5>
<h5 class="fs18">{{questionInfo.questionTailDesc}}</h5>
</div>
<div class="question-detail">
<div v-for="(item,idx) in questionList">
@@ -130,7 +130,6 @@ export default {
CheckBoxExtraDesc:'',
disabled:true,
assessFlag:null,
fromEdit:""
}
},
watch: {
@@ -500,28 +499,11 @@ export default {
},
//未测评过,测评成功后重新测评
reTest(){
localStorage.setItem('evalateFrom', 'toEvaluate')
if(this.assessFlag === '2'){
return this.$toast('已超过评估次数限制,无法重新评估')
}else{
window.location.reload()
}
},
//继续投保,跳转至评估结果页
toInsure(){
this.showResultPopup = false
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: {
@@ -532,8 +514,6 @@ export default {
}
})
}
}
}
}
</script>
@@ -555,15 +535,18 @@ export default {
//padding-bottom:20px;
overflow-y: auto;
/deep/ .fieldContent{
margin:5px 0;
.van-cell__title,input{
color:#999;
font-size:12px;
font-size:14px;
}
}
.appntTitle{
color:#333;
}
.evalDesc{
h5{
font-size:15px;
color:#333;
}