Files
ebiz-h5/src/components/ebiz/sale/IndexBar.vue
2024-01-12 13:14:36 +08:00

359 lines
11 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div>
<div class="own_content">
<ul class="index-bar">
<li @click="changePage(item.pageNo)" v-for="(item, index) in pageTitle" :key="index" :class="item.tabClass" :id="item.tabClass" v-if="item.show">
<!-- 选中 -->
<div v-if="item.tabClass" class="flex justify-content-fs align-items-c">
<div class="flex flex-direction-colunm align-items-c">
<van-image :src="item.imgCheckedUrl" class="image_head" />
<span class="fs12 mt12">{{ item.pageItem }}</span>
</div>
<van-image :src="doneUrl" v-if="index !== 10" class="image_done" />
</div>
<div v-if="!item.tabClass" class="flex justify-content-fs align-items-c">
<div class="flex flex-direction-colunm align-items-c">
<van-image :src="item.imgNoCheckedUrl" class="image_head" />
<span class="fs12 mt12" style="color: #999999">{{ item.pageItem }}</span>
</div>
<van-image :src="doneNurl" v-if="index !== 10" class="image_done" />
</div>
</li>
</ul>
</div>
<p v-if="isFrom == 'GBCsale'" style="margin-top: 10px;color: red;background-color: #ffdddc;padding: 5px 10px;">提示您目前正在投保的项目为{{projectName}}</p>
</div>
</template>
<script>
import { Icon, Image } from 'vant'
import { getOrderDetail1 } from '@/api/ebiz/sale/sale'
import { gbcProjectDetail } from '@/api/GBC/GBC'
export default {
name: 'IndexBar',
props: {
value: {
type: String,
default: ''
},
required: {
type: Boolean,
default: false
},
data: {
type: Array,
default: () => {}
},
//选项对象中,文字对应的 key
valueKey: {
type: String,
default: 'text'
}
},
components: {
[Icon.name]: Icon,
[Image.name]: Image
},
data() {
return {
isFrom:'',
projectName:'',
thisShow: false,
doneUrl: this.$assetsUrl + 'images/kmh/done.png',
doneNurl: this.$assetsUrl + 'images/kmh/done_n.png',
pageTitle: [
{
pageNo: 1,
pageItem: '投保人信息',
urlStr: '/sale/insuredInfo',
tabClass: '',
show:true,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/tbrxx.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/tbrxx_n.png'
},
{
pageNo: 2,
pageItem: '被保险人信息',
urlStr: '/sale/insuredPerson',
tabClass: '',
show:true,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/bbrxx.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/bbrxx_n.png'
},
{
pageNo: 3,
pageItem: '选择产品',
urlStr: '/common/selectedProduct',
tabClass: '',
show:true,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/xzcp.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/xzcp_n.png'
},
{
pageNo: 4,
pageItem: '受益人信息',
urlStr: '/sale/beneficiary',
tabClass: '',
show:true,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/syrxx.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/syrxx_n.png'
},
{
pageNo: 5,
pageItem: '告知信息',
urlStr: '/sale/notifyingMessage',
tabClass: '',
show:true,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/gzxx.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/gzxx_n.png'
},
{
pageNo: 6,
pageItem: '风险测评',
urlStr: '/sale/answerPage',
tabClass: '',
show:false,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/fx1.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/fx2.png'
},
{
pageNo: 7,
pageItem: '风险测评结果',
urlStr: '/sale/answerSuccess',
tabClass: '',
show:false,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/fxjg1.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/fxjg2.png'
},
{
pageNo: 7.1,
pageItem: '风险告知',
urlStr: '/sale/universalRiskNotifyingMessage',
tabClass: '',
show:false,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/zhxx.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/zhxx_n.png'
},
{
pageNo: 8,
pageItem: '账户信息',
urlStr: '/sale/accountInformation',
tabClass: '',
show:true,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/zhxx.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/zhxx_n.png'
},
{
pageNo: 9,
pageItem: '附件上传',
urlStr: '/sale/attachmentManagement',
tabClass: '',
show:true,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/fjsc.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/fjsc_n.png'
},
{
pageNo: 10,
pageItem: '签名确认',
urlStr: '/sale/signatureConfirmation',
tabClass: '',
show:true,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/qmqr.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/qmqr_n.png'
}
],
//localStorage.salePageFlag:控制导航是否可以直接跳转页面 1-投保人信息 2-被保人信息 3-选择产品 4-受益人信息 5-告知信息 6-账户信息 7-附件上传 8-签名确认
salePageFlag: Number(localStorage.salePageFlag)
}
},
async mounted() {
let that = this
let data = {
orderNo: that.$route.query.orderNo
}
getOrderDetail1(data).then(res => {
if (res.result == '0') {
if(res.orderDTO.universalRiskNotifyDTO){
if(res.orderDTO.universalRiskNotifyDTO.isUniversalRiskNotifyShowPoint == 1){
this.pageTitle.forEach(item=>{
if(item.pageNo == 7.1){
item.show = true
}
})
}
}
if(res.orderDTO.riskEvaluationDTO){
if(res.orderDTO.riskEvaluationDTO.isShowEvaluationPoint == 1){
this.pageTitle.forEach(item=>{
if(item.pageNo == 6){
item.show = true
}
if(item.pageNo == 7){
item.show = true
}
})
}
}
}
})
this.selectTab()
if(window.localStorage.getItem('isFrom') == 'GBCsale') {
this.isFrom = 'GBCsale'
that.gbcProjectDetail()
}
},
methods: {
gbcProjectDetail(){
let params = {
}
gbcProjectDetail(params).then(res=>{
if(res.result == '0') {
this.projectName = res.content.projectName
} else {
this.$toast(res.resultMessage)
}
})
},
changePage(pageIndex) {
let url = ''
//由 localStorage.salePageFlag 来控制是否可跳到指定页面
if (localStorage.salePageFlag == '-10' && pageIndex != 10) {
this.$toast('已到达签名确认流程,不可以回到前面的流程')
}
if (Number(localStorage.salePageFlag) < Number(pageIndex)) return
switch (pageIndex) {
case 1: //跳到投保人页面
url = `/sale/insuredInfo?edit=1&salePageFlag=${pageIndex}&orderNo=` + this.$route.query.orderNo
break
case 2: //跳到被保人页面
url = `/sale/insuredPerson?edit=1&salePageFlag=${pageIndex}&orderNo=` + this.$route.query.orderNo
break
case 3: //跳到已选产品列表页面
url = `/common/selectedProduct?edit=1&salePageFlag=${pageIndex}&orderNo=` + this.$route.query.orderNo
break
case 4: //跳到受益人信息页面
url = `/sale/beneficiary?edit=1&salePageFlag=${pageIndex}&orderNo=` + this.$route.query.orderNo
break
case 5: //跳到告知信息页面
url = `/sale/NotifyingMessage?edit=1&salePageFlag=${pageIndex}&orderNo=` + this.$route.query.orderNo
break
case 6: //跳到风险评估
url = `/sale/answerPage?edit=1&salePageFlag=${pageIndex}&orderNo=` + this.$route.query.orderNo
break
case 7: //跳到风险评估结果页
url = `/sale/answerSuccess?edit=1&salePageFlag=${pageIndex}&orderNo=` + this.$route.query.orderNo
break
case 7.1: //跳到万能险风险告知页面
url = `/sale/universalRiskNotifyingMessage?edit=1&salePageFlag=${pageIndex}&orderNo=` + this.$route.query.orderNo
break
case 8: //跳到账户信息页面
url = `/sale/AccountInformation?edit=1&salePageFlag=${pageIndex}&orderNo=` + this.$route.query.orderNo
break
case 9: //跳到附件上传页面
url = `/sale/AttachmentManagement?edit=1&salePageFlag=${pageIndex}&orderNo=` + this.$route.query.orderNo
break
case 10: //跳到签名确认页面
url = `/sale/SignatureConfirmation?edit=1&salePageFlag=${pageIndex}&orderNo=` + this.$route.query.orderNo
break
default:
break
}
let str = location.hash
let i = str.search(/AttachmentManagement/i)
if (i !== -1 && pageIndex != 9 && pageIndex != 10) {
this.$dialog
.confirm({
className: 'dialog-delete',
title: '提示',
message: '离开此页可能会丢失部分数据,是否确认离开?',
cancelButtonColor: '#E9332E',
confirmButtonColor: '#FFFFFF'
})
.then(() => {
this.$jump({
flag: 'h5',
extra: {
forbidSwipeBack: '1',
url: location.origin + `/#${url}`
},
routerInfo: { path: url }
})
})
.catch(() => {
return
})
} else {
this.$jump({
flag: 'h5',
extra: {
forbidSwipeBack: '1',
url: location.origin + `/#${url}`
},
routerInfo: { path: url }
})
}
},
selectTab() {
let endIndex = location.hash.indexOf('?', 1)
let str = endIndex == -1 ? location.hash.slice(1) : location.hash.slice(1, endIndex)
this.pageTitle.forEach(v => {
if (v.urlStr.toLowerCase() == str.toLowerCase()) {
v.tabClass = 'active'
}
})
this.$nextTick(() => {
this.$el.querySelector('#active').scrollIntoView(true)
})
}
},
}
</script>
<style lang="scss" scoped>
.index-bar {
display: flex;
overflow-x: auto;
overflow-y: hidden;
white-space: nowrap;
font-size: 12px;
}
.index-bar li {
display: flex;
align-items: center;
}
.index-bar::-webkit-scrollbar {
display: none;
}
li {
display: flex;
}
.index-bar span,
.index-bar van-icon {
align-items: center;
}
.active {
color: #e9332e;
}
.activeline {
background: #e9332e;
}
.image_head {
width: 16px;
height: 16px;
}
.image_done {
width: 8px;
height: 14px;
padding-left: 20px;
padding-right: 20px;
}
.own_content {
padding-top: 19px;
padding-bottom: 15px;
margin-left: 10px;
margin-right: 10px;
}
</style>