Compare commits

...

11 Commits

Author SHA1 Message Date
勾通
5859857ddc 【FIX】修改输入框校验规则,取消提交置灰更换为提示
(cherry picked from commit 370be6db5d)
2025-12-10 15:39:36 +08:00
hz
ea2b8984d2 Merge branch 'feature/FCRS-1048投保流程优化需求' into dev-new 2025-12-05 16:22:07 +08:00
hz
8f1f3c13fc feat(sale): 新增新产品流程判断逻辑
- 添加新产品流程标识判断
- 根据标识跳转至新投保告知页面或原有页面
- 更新附件管理页面跳转逻辑
- 优化订单状态为37时的页面跳转条件判断
2025-12-05 16:21:50 +08:00
xuxinxiang
ed565ffb80 Merge branch 'feature/FCRS-1048投保流程优化需求' into dev-new 2025-12-05 13:59:40 +08:00
xuxinxiang
b8ea811ad6 修改签名后页面样式问题 2025-12-05 13:58:14 +08:00
xuxinxiang
dfb9546422 Merge branch 'feature/FCRS-1048投保流程优化需求' into dev-new 2025-12-05 11:16:44 +08:00
xuxinxiang
0edabc67cf 抄录提交和签字确定回跳页面 2025-12-05 11:15:31 +08:00
xuxinxiang
5ca5d913d4 Merge branch 'feature/FCRS-1048投保流程优化需求' into dev-new 2025-12-05 09:43:23 +08:00
xuxinxiang
46ae4f590d 修改文件为已阅读状态后,二次阅读页面的展示问题。修改投被不同人被保人无法阅读文件的问题 2025-12-05 09:42:05 +08:00
xuxinxiang
beba5a9e69 Merge branch 'feature/FCRS-1048投保流程优化需求' into dev-new 2025-12-04 21:17:24 +08:00
xuxinxiang
27311ca621 修复部分问题 2025-12-04 21:16:34 +08:00
5 changed files with 99 additions and 25 deletions

View File

@@ -583,7 +583,8 @@ export default {
localStorage.orderNo = orderNo localStorage.orderNo = orderNo
localStorage.isFrom = 'sale' localStorage.isFrom = 'sale'
localStorage.removeItem('changeCard') localStorage.removeItem('changeCard')
// 是否进入新流程的标识
const recordedNewProd = order.orderInfoDTO.newSaleFlag === '0'
if (orderStatus == '01') { if (orderStatus == '01') {
//已签名待客户确认, 跳到签名确认页面 //已签名待客户确认, 跳到签名确认页面
url = '/sale/SignatureConfirmation?edit=1&orderNo=' + orderNo url = '/sale/SignatureConfirmation?edit=1&orderNo=' + orderNo
@@ -597,11 +598,11 @@ export default {
//被保险人保存成功, 跳到已选产品列表 //被保险人保存成功, 跳到已选产品列表
url = processURL('/common/selectedProduct?edit=1&orderNo=' + orderNo) url = processURL('/common/selectedProduct?edit=1&orderNo=' + orderNo)
} else if (orderStatus == '37') { } else if (orderStatus == '37') {
//受益人保存成功, 跳到告知信息-- // 新流程的新产品检测, 如果是新产品,则跳转到新投保告知页面
url = '/sale/NotifyingMessage?edit=1&orderNo=' + orderNo url = (recordedNewProd ? '/flow-improve/sale/insureNotifyReplenishImag?orderNo=' : '/sale/newProduct?edit=1&orderNo=') + orderNo
} else if (orderStatus == '38') { } else if (orderStatus == '38') {
//账户信息保存成功, 跳到附件管理-- //账户信息保存成功, 跳到附件管理--
if (order.orderInfoDTO.activeType == 'KMH') { if (order.orderInfoDTO.activeType === 'KMH') {
let params = { let params = {
orderNo: order.orderInfoDTO.orderNo orderNo: order.orderInfoDTO.orderNo
} }
@@ -628,7 +629,7 @@ export default {
} }
}) })
} else { } else {
url = '/sale/AttachmentManagement?edit=1&orderNo=' + orderNo url = processURL('/sale/AttachmentManagement?edit=1&orderNo=' + orderNo)
} }
} else if (orderStatus == '39') { } else if (orderStatus == '39') {
//险种信息保存成功, 跳到已选产品列表 //险种信息保存成功, 跳到已选产品列表

View File

@@ -92,14 +92,14 @@
class="budget-input" class="budget-input"
> >
</template> </template>
<div class="fs12 c-gray-base">请填写0-10000之间的整数</div> <div class="fs12 c-gray-base">请填写大于等于0的整数或保留两位小数点的非整数</div>
</p> </p>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="question-btn bottom-btn bg-white"> <div class="question-btn bottom-btn bg-white">
<van-button type="danger" size="large" :disabled="disabled" class="bottom-btn" @click="submitAnswer" v-no-more-click="1000">提交</van-button> <van-button type="danger" size="large" class="bottom-btn" @click="submitAnswer" v-no-more-click="1000">提交</van-button>
</div> </div>
<PopupQuesResult <PopupQuesResult
@reTestHandler="reTest" @reTestHandler="reTest"
@@ -641,6 +641,9 @@ export default {
this.getDetailInfo() this.getDetailInfo()
}, },
submitAnswer(){ submitAnswer(){
if( this.disabled ){
return this.$toast('请填写完整信息')
}
if(this.answerList.length !=this.questionList.length){ if(this.answerList.length !=this.questionList.length){
return this.$toast('请填写完整信息') return this.$toast('请填写完整信息')
@@ -661,10 +664,10 @@ export default {
} }
} }
let regex = /^(0|[1-9]\d{0,3}|10000)$/; let regex =/^(?!0\d)(?!.*\.$)(0|[1-9]\d{0,14})(?:\.\d{1,2})?$/;
if(Array.from(this.answerList[3]).some(item=>{return !regex.test(item)}) if(Array.from(this.answerList[3]).some(item=>{return !regex.test(item)})
|| !regex.test(this.answerList[4][0])){ || !regex.test(this.answerList[4][0])){
return this.$toast('请填写0-10000之间的整数') return this.$toast('请填写大于等于0的整数或保留两位小数点的非整数')
} }
this.checkDataChanged() this.checkDataChanged()
this.getEvaluateResult() this.getEvaluateResult()

View File

@@ -1219,6 +1219,8 @@ export default {
}).then(() => { }).then(() => {
this.isNoWXInsureReadClick(val) this.isNoWXInsureReadClick(val)
}) })
} else {
this.isNoWXInsureReadClick(val)
} }
// 若被保险人为未成年人时,非微信环境点击【立即阅读签名】按钮进行弹窗提示 结束 // 若被保险人为未成年人时,非微信环境点击【立即阅读签名】按钮进行弹窗提示 结束
} }
@@ -2123,7 +2125,7 @@ export default {
window.localStorage.setItem('insuredSignFile', JSON.stringify(this.insuredSign)) window.localStorage.setItem('insuredSignFile', JSON.stringify(this.insuredSign))
window.localStorage.setItem('sign-val', val) window.localStorage.setItem('sign-val', val)
this.$router.push({ this.$router.push({
path: 'flow-improve/sale/readDocuments', path: '/flow-improve/sale/readDocuments',
query: { query: {
orderNo: this.$route.query.orderNo, orderNo: this.$route.query.orderNo,
currentIndex: currentIndex + 1 currentIndex: currentIndex + 1

View File

@@ -1,7 +1,7 @@
<template> <template>
<div class='insuranceInformation-container redRadioCheckbox' :class="[isGuanhuaiBiaozhun === 0 ? '' : 'active1']"> <div class='insuranceInformation-container redRadioCheckbox' :class="[isGuanhuaiBiaozhun === 0 ? '' : 'active1']">
<!--文件导航 开始--> <!--文件导航 开始-->
<div class="xxx-fileList" v-if="!isPreview"> <div class="xxx-fileList" v-if="!isPreview" ref="xxx1">
<p :key="index" v-for="(item, index) in fileList" :class="{ active: index+1 == current }" <p :key="index" v-for="(item, index) in fileList" :class="{ active: index+1 == current }"
@click="fileListClick(item,index)" @click="fileListClick(item,index)"
style="white-space: nowrap;display: flex;align-items: center;"> style="white-space: nowrap;display: flex;align-items: center;">
@@ -12,7 +12,7 @@
<!--文件导航 结束--> <!--文件导航 结束-->
<!-- 顶部提示 开始 --> <!-- 顶部提示 开始 -->
<p v-if='branchType != "14"' class="xxx-notice-bar">文件滑动至底部完成阅读</p> <p v-if='branchType != "14" && !isPreview' class="xxx-notice-bar" ref="xxx2">文件滑动至底部完成阅读</p>
<!-- 顶部提示 结束 --> <!-- 顶部提示 结束 -->
<!-- 一键置底 开始 --> <!-- 一键置底 开始 -->
@@ -22,32 +22,32 @@
<!-- 一键置底 结束 --> <!-- 一键置底 结束 -->
<!--文件内容 开始--> <!--文件内容 开始-->
<div id="pdf" ref="scrollableContent" @scroll="updateScrollProgress"> <div id="pdf" :class="[isPreview ? 'active' : '']" ref="scrollableContent" @scroll="updateScrollProgress">
<div id="pdfH5ID"></div> <div ref="xxx8" id="pdfH5ID"></div>
<div ref="activeButtonEle"></div> <div ref="activeButtonEle"></div>
</div> </div>
<!--文件内容 结束--> <!--文件内容 结束-->
<!--底部提示和按钮 开始--> <!--底部提示和按钮 开始-->
<div class="xxx-bottom"> <div class="xxx-bottom" v-if="!isPreview">
<p class="xxx-isread"> <p class="xxx-isread" ref="xxx3">
本人已阅读确认理解并同意<span>{{documentName}}</span>各项内容 本人已阅读确认理解并同意<span>{{documentName}}</span>各项内容
</p> </p>
<div class='bg-white bottom-btn' v-if="current != '1'"> <div class='bg-white bottom-btn' v-if="current != '1'" ref="xxx4">
<van-button style="width: 30%;font-size: 16px;" plain type='danger' size='large' v-no-more-click='1000' @click="prevStep">上一步 <van-button style="width: 30%;font-size: 16px;" plain type='danger' size='large' v-no-more-click='1000' @click="prevStep">上一步
</van-button> </van-button>
<van-button style="width: 70%;font-size: 16px;" type='danger' size='large' :disabled='scrollProgress < 70' @click='goNext' v-no-more-click='1000'> <van-button style="width: 70%;font-size: 16px;" type='danger' size='large' :disabled='isyiye ? false : scrollProgress < 70' @click='goNext' v-no-more-click='1000'>
我已阅读确认并理解继续 我已阅读确认并理解继续
</van-button> </van-button>
</div> </div>
<div class='bg-white bottom-btn' v-if="current == '1'"> <div class='bg-white bottom-btn' v-if="current == '1'" ref="xxx5">
<van-button class="fs20" type='danger' size='large' :disabled='scrollProgress < 70' @click='goNext' v-no-more-click='1000'>我已阅读确认并理解继续 <van-button class="fs20" type='danger' size='large' :disabled='isyiye ? false : scrollProgress < 70' @click='goNext' v-no-more-click='1000'>我已阅读确认并理解继续
</van-button> </van-button>
</div> </div>
</div> </div>
<!--底部提示和按钮 结束--> <!--底部提示和按钮 结束-->
<!--关怀标准切换 开始--> <!--关怀标准切换 开始-->
<oldVersionSwitch @onFloatBtnClicked="onFloatBtnClicked" /> <oldVersionSwitch v-if="!isPreview" @onFloatBtnClicked="onFloatBtnClicked" />
<!--关怀标准切换 结束--> <!--关怀标准切换 结束-->
</div> </div>
</template> </template>
@@ -80,7 +80,8 @@
scrollTimer: null, scrollTimer: null,
pdfStatus: void 0, pdfStatus: void 0,
scrollProgress: 0, scrollProgress: 0,
isGuanhuaiBiaozhun: Number(sessionStorage.getItem('oldVersionSwitch')) isGuanhuaiBiaozhun: Number(sessionStorage.getItem('oldVersionSwitch')),
isyiye: false
} }
}, },
components: { components: {
@@ -116,6 +117,7 @@
}) })
}, 100) }, 100)
window.appCallBack = this.appCallBack window.appCallBack = this.appCallBack
console.log(this.isPreview)
}, },
mounted() { mounted() {
document.body.style.backgroundColor = '#fff' document.body.style.backgroundColor = '#fff'
@@ -287,6 +289,35 @@
] ]
} }
} }
/**
* @Author: LiuXiaoFeng
* @Description: documentCode为2 代表的是人身保险电子投保单
* 人身保险电子投保单文件需要抄录 保存时修改入参数据 copyValue是抄录的base64字符串 signOrRead需要变更为sign
* @Date: 2023/11/20
**/
if(this.fileList[this.current - 1].documentCode == '2' && this.signVal == '2' && (this.productType == '1' || this.productType == '2')){
window.localStorage.setItem('chaoluSubmitObj',JSON.stringify({
orderType: 'SIGN_COPY',
orderDTO: {
orderInfoDTO: {
orderNo: this.$route.query.orderNo
},
ebizSignDTOS: [
{
copyValue: '',
caType: 'copy',
signOrRead: 'sign',
signId: this.fileList[this.current - 1].signId,
orderNo: this.$route.query.orderNo,
documentCode: this.fileList[this.current - 1].documentCode,
documentStatus: '1',
documentType: this.fileList[this.current - 1].documentType,
signType: window.localStorage.getItem('sign-val')
}
]
}
}))
}
saveInformation(params).then(res=>{ saveInformation(params).then(res=>{
if(res.result == 0) { if(res.result == 0) {
window.sessionStorage.removeItem('currentFile') window.sessionStorage.removeItem('currentFile')
@@ -371,6 +402,12 @@
}).on("complete", (status, msg, time)=> { //监听完成事件 }).on("complete", (status, msg, time)=> { //监听完成事件
this.pdfStatus = status this.pdfStatus = status
console.log("状态:" + status + ",信息:" + msg + ",耗时:" + time + "毫秒,总页数:" + this.totalNum) console.log("状态:" + status + ",信息:" + msg + ",耗时:" + time + "毫秒,总页数:" + this.totalNum)
if (this.current!= '1') {
this.isyiye = (window.innerHeight - (this.$refs.xxx1.clientHeight + this.$refs.xxx2.clientHeight + this.$refs.xxx3.clientHeight + this.$refs.xxx4.clientHeight)) > this.$refs.xxx8.clientHeight
} else {
this.isyiye = (window.innerHeight - (this.$refs.xxx1.clientHeight + this.$refs.xxx2.clientHeight + this.$refs.xxx3.clientHeight + this.$refs.xxx5.clientHeight)) > this.$refs.xxx8.clientHeight
}
console.log(this.isyiye)
}) })
}, },
fileListClick(item,index) { fileListClick(item,index) {
@@ -667,6 +704,10 @@
height: calc(100vh - 170px) !important; height: calc(100vh - 170px) !important;
position: relative; position: relative;
top: 66px; top: 66px;
&.active{
height: 100vh !important;
top: 0;
}
// //
} }
.xxx-bottom{ .xxx-bottom{
@@ -704,6 +745,10 @@
#pdf{ #pdf{
height: calc(100vh - 240px) !important; height: calc(100vh - 240px) !important;
top: 84px; top: 84px;
&.active{
height: 100vh;
top: 0;
}
} }
.xxx-isread{ .xxx-isread{
font-size: 18px; font-size: 18px;

View File

@@ -1,5 +1,6 @@
<template> <template>
<div class='insuranceInformation-container' :class="[isGuanhuaiBiaozhun === 0 ? '' : 'active']"> <div class='insuranceInformation-container' :class="[isGuanhuaiBiaozhun === 0 ? '' : 'active']">
<div class="big-box">
<div style="display: flex;align-items: center;font-weight: bold;" class="fs20 div1"> <div style="display: flex;align-items: center;font-weight: bold;" class="fs20 div1">
<span class="span1" style="width: 3px;background: red;height: 25px;"></span> <span class="span1" style="width: 3px;background: red;height: 25px;"></span>
<span v-if="signVal == '0' || signVal == '2'" style="margin-left: 5px;"> <span v-if="signVal == '0' || signVal == '2'" style="margin-left: 5px;">
@@ -56,6 +57,7 @@
<div> <div>
<img v-if="signstatus" :src="signImgUrl" style="height: 34px;margin-left: 20px;width: auto;"/> <img v-if="signstatus" :src="signImgUrl" style="height: 34px;margin-left: 20px;width: auto;"/>
</div> </div>
</div>
<div class='bg-white bottom-btn'> <div class='bg-white bottom-btn'>
<van-button :disabled="nextDisabled" type='danger' size='normal' style="font-size: 16px;" block v-no-more-click='1000' @click="gonext"> <van-button :disabled="nextDisabled" type='danger' size='normal' style="font-size: 16px;" block v-no-more-click='1000' @click="gonext">
完成阅读并签署 完成阅读并签署
@@ -160,6 +162,9 @@
if(JSON.parse(window.sessionStorage.getItem('signH5Img')).type == '签名' && JSON.parse(window.sessionStorage.getItem('signH5Img')).val) if(JSON.parse(window.sessionStorage.getItem('signH5Img')).type == '签名' && JSON.parse(window.sessionStorage.getItem('signH5Img')).val)
this.signstatus = true this.signstatus = true
this.signImgUrl = this.signImgUrl + JSON.parse(window.sessionStorage.getItem('signH5Img')).val this.signImgUrl = this.signImgUrl + JSON.parse(window.sessionStorage.getItem('signH5Img')).val
this.chaoLuObj.btnText = '抄录完成'
this.chaoLuObj.btnText1 = '已抄录'
} }
if(window.sessionStorage.getItem('signH5Val')){ if(window.sessionStorage.getItem('signH5Val')){
this.nextDisabled = false this.nextDisabled = false
@@ -231,12 +236,27 @@
signInfo.text = this.guardianName signInfo.text = this.guardianName
} }
window.sessionStorage.setItem('signInfo',JSON.stringify(signInfo)) window.sessionStorage.setItem('signInfo',JSON.stringify(signInfo))
window.location.href = this.$mainUrl + '/signH5/1.html' window.location.href = this.$mainUrl + '/signH5/2.html'
// window.location.href = 'http://'+window.location.host + '/signH5/1.html' // window.location.href = 'http://'+window.location.host + '/signH5/1.html'
} }
}, },
gonext(){ gonext(){
// 抄录提交 开始
if ((this.signVal == '0' || this.signVal == '2') && (this.productType == '1' || this.productType == '2')) {
saveInformation(JSON.parse(window.localStorage.getItem('chaoluSubmitObj'))).then(res => {
if(res.result == '0') {
this.publicSubmit()
} else {
this.$toast(res.resultMessage)
}
})
} else {
this.publicSubmit()
}
// 抄录提交 结束
},
publicSubmit() {
let params = { let params = {
orderType: 'SIGN_MERGED_ORDER', orderType: 'SIGN_MERGED_ORDER',
orderDTO: { orderDTO: {
@@ -434,6 +454,9 @@
box-sizing: border-box; box-sizing: border-box;
width: 100%; width: 100%;
overflow: auto; overflow: auto;
.big-box{
margin-bottom: 140px;
}
} }
.insuranceInformation-container.active{ .insuranceInformation-container.active{
.div1{ .div1{
@@ -459,7 +482,7 @@
} }
} }
.div4{ .div4{
margin-bottom: 160px; // margin-bottom: 160px;
span{ span{
font-size: 20px !important; font-size: 20px !important;
} }