提交 82c61d89 编写于 作者: 张磊's avatar 张磊

sz-insurance

上级 ae13599b
......@@ -76,3 +76,11 @@ export const saveOrder = async(data) => {
withCredentials: true,
});
};
export const getDetailtxt = async (data) => {
return request({
method: 'get',
url: `tis/insurance/explain/${data.yunOrderNo}/${data.pageType}`,
withCredentials: true,
});
};
import request from 'mn-template/plugins/http';
// 获取权益列表
export const getEntitlementList = async (externalOrderNo, projectEquityNo) => {
return request({
method: 'get',
url: `/tis/insurance/projectEquityNo/externalOrderNo?externalOrderNo=${externalOrderNo}&projectEquityNo=${projectEquityNo}`,
withCredentials: true,
hasLoading:true,
});
};
/**
* 图片验证码
*/
/* eslint-disable */
(function ($) {
$.fn.imgcode = function (options) {
// 初始化参数
......
......@@ -121,6 +121,16 @@ const routerConfig = [
name: 'sz-home',
component: () => import('@/views/sz-home/index.vue'),
},
{
path: '/sz-public',
name: 'sz-public',
component: () => import('@/views/sz-public/index.vue'),
},
{
path: '/entitlement',
name: 'entitlement',
component: () => import('@/views/entitlement/list.vue'),
},
{
path: '/login',
name: 'login',
......
......@@ -78,17 +78,24 @@ function formatContent(content, pubKey) {
// AES encrypt
function AesEncrypt(content, aesKey) {
// eslint-disable-next-line
const sKey = CryptoJS.enc.Utf8.parse(aesKey);
// eslint-disable-next-line
const sContent = CryptoJS.enc.Utf8.parse(content);
// eslint-disable-next-line
const encrypted = CryptoJS.AES.encrypt(sContent, sKey, {
// eslint-disable-next-line
mode: CryptoJS.mode.ECB,
// eslint-disable-next-line
padding: CryptoJS.pad.Pkcs7,
});
return encrypted.toString();
}
// RSA encrypt
function RsaEncrypt(aesKey, pubKey) {
// eslint-disable-next-line
const _encrypt = new JSEncrypt();
const boss_public_key = pubKey;
_encrypt.setPublicKey(boss_public_key);
......
......@@ -77,49 +77,32 @@
class="detail-bottom"
>
<div
v-if="insuranceText.descTitle"
class="tips"
>
<div class="tip-org">
<div class="tip-org-left" />
云鹊医温馨提示
{{ insuranceText.descTitle }}
<div class="tip-org-right" />
</div>
<div
v-if="isUnderLine"
class="tip-grey"
>
<div class="tip-grey-dot" />
请在预约日前往现场领取产品;
</div>
<div
v-else
v-for="(i, ind) in insuranceText.descList"
:key="ind"
class="tip-grey"
>
<div class="tip-grey-dot" />
{{ insuranceInfo && insuranceInfo.detectionKind == 0 ? '请在预约日期前往预约医院完成采样。无需空腹,采样前三天可适当清淡饮食;' : '请在预约日前往现场领取产品;' }}
</div>
<div class="tip-grey">
<div class="tip-grey-dot" />
{{ insuranceInfo && insuranceInfo.detectionKind == 0 ? '注意携带好您投保时注册的手机前往,凭手机号扫码确认采样;' : '注意携带好投保时注册的手机前往,凭手机号扫码确认领取成功;' }}
</div>
<div
v-if="insuranceInfo && insuranceInfo.detectionKind == 0"
class="tip-grey"
>
<div class="tip-grey-dot" />
预计7-10个工作日电子报告将返回至您的手机,届时将提供进一步的报告解读服务,请注意查收。
<div v-html="txtRe(i)" />
</div>
</div>
</div>
<div class="detail-bottom">
<div class="detail-bottom-title">
订单信息
预约信息
</div>
<div class="detail-bottom-item">
<div class="title">
受检人:
参保人:
</div>
<div class="value">
{{ detailInfo.patientName || "--" }}
......@@ -133,14 +116,6 @@
{{ detailInfo.detectName || "--" }}
</div>
</div>
<div class="detail-bottom-item">
<div class="title">
下单时间:
</div>
<div class="value">
{{ formatDate(detailInfo.orderTime) || "--" }}
</div>
</div>
<div class="detail-bottom-item">
<div class="title">
检测编号:
......@@ -166,11 +141,11 @@
</div>
<div class="appoint-detail-tel">
客服电话:<a
style="font-weight:600"
href="tel:400-006-5252"
>400-021-8282</a>
style="font-weight:600"
href="tel:400-021-8282"
>400-021-8282</a>
<div class="serve-time">
周一至周五8:00-18:00 <span /> 双休日9:00-18:00
在线时间: 周一至周日9:00~21:00
</div>
</div>
<div
......@@ -221,8 +196,7 @@
</template>
<script>
import {getDetailByYunOrderNo, getDetectionName} from '@/api/appoint';
import { formatDate } from '@/utils/common';
import {getDetailByYunOrderNo, getDetectionName, getDetailtxt} from '@/api/appoint';
import storejs from 'storejs';
import AMapLoader from '@amap/amap-jsapi-loader';
import { mapGetters } from 'vuex';
......@@ -245,19 +219,21 @@ export default {
expireFlag:false,
query: {},
isUnderLine:false,
insuranceText:{}
};
},
computed: {
...mapGetters('home', ['insuranceInfo']),
},
mounted() {
this.$loading.show();
// this.$loading.show();
const { yunOrderNo, projectEquityNo} = this.$route.query;
this.yunOrderNo = yunOrderNo;
this.projectEquityNo = projectEquityNo;
console.log('yunOrderNo', yunOrderNo);
this.getDetailByYunOrderNo(yunOrderNo);
this.getDetectionName(yunOrderNo);
this.getDetailtxt();
this.$sendBuriedData({
action: 'ACTION_WEB_AFTER',
component_tag: '7802855#0#0#预约详情',
......@@ -265,15 +241,8 @@ export default {
});
},
methods: {
formatDate(orderTime) {
if (!orderTime) {
return '--';
}
return formatDate(orderTime);
},
getDetailByYunOrderNo(yunOrderNo) {
getDetailByYunOrderNo(yunOrderNo).then(res => {
console.log(res);
const {expireFlag} = res.data;
this.detailInfo = res.data;
this.expireFlag = expireFlag || '';
......@@ -315,18 +284,28 @@ export default {
},
reAppoint() {
const that = this;
this.$sendBuriedData({
action: 'ACTION_WEB_CLICK',
component_tag: '7802855#0#0#重新预约',
web_data:{yunOrderNo: this.yunOrderNo},
});
this.$router.push({
path: '/appoint',
query: {
projectEquityNo:this.projectEquityNo,
yunOrderNo:this.yunOrderNo
}
});
const {detectionKind} = this.insuranceInfo;
console.log('detectionKind--', detectionKind);
if (window._miniprogram) {
this.$rocNative.WXInstance.miniProgram.navigateTo({
url:`/pagesInsurance/sz-insurance/screeningAppoint?yunOrderNo=${that.yunOrderNo}&projectEquityNo=${this.projectEquityNo}`
});
}else{
this.$router.push({
path: '/appoint',
query: {
projectEquityNo:this.projectEquityNo,
yunOrderNo:this.yunOrderNo
}
});
}
},
selectItem(item) {
console.log('--$rocNative', this.$rocNative);
......@@ -473,6 +452,23 @@ export default {
};
return this.insuranceInfo.detectionKind == 1 ? obj2[type] : obj[type];
},
txtRe(str) {
if (str) {
str = str.replace(/[\n\r]/g, '<br/>');
} else {
str = '';
}
return str;
},
getDetailtxt() {
const o = {
yunOrderNo: this.yunOrderNo,
pageType: 1
};
getDetailtxt(o).then(res => {
this.insuranceText = res.data;
});
}
},
};
</script>
......@@ -486,14 +482,6 @@ export default {
background: linear-gradient(180deg, #00BDA5 0%, #20C5B0 125px, #F5F6F8 257px);
padding: 20px 12px 160px;
overflow: auto;
// .top-bg{
// position: absolute;
// width: 100%;
// height: 257px;
// top: 0;
// background: linear-gradient(180deg, #00BDA5 0%, #20C5B0 52%, #F5F6F8 100%);
// }
.detail-status{
display: flex;
justify-content: center;
......@@ -676,24 +664,8 @@ export default {
background: url('https://files.yunqueyi.com/image/png/common/20230301094652399.png') no-repeat center center;
background-size: 213px 4px;
}
// .tip-org-left{
// width: 62px;
// height: 1px;
// opacity: 0.31;
// border: 7px solid;
// border-image: linear-gradient(270deg, rgba(255, 255, 255, 1), rgba(6, 191, 167, 1)) 7 7;
// }
// .tip-org-right{
// width: 62px;
// height: 1px;
// opacity: 0.31;
// border: 7px solid;
// border-image: linear-gradient(270deg, rgba(255, 255, 255, 1), rgba(6, 191, 167, 1)) 7 7;
// }
.tip-grey {
position: relative;
color: #999999;
font-weight: 200;
padding-left: 12px;
font-size: 13px;
font-family: PingFangSC-Regular, PingFang SC;
......@@ -746,28 +718,6 @@ export default {
border-radius: 11px;
padding: 20px 15px;
margin-top: 22px;
// .detection-item{
// margin-bottom: 9px;
// display: flex;
// .label{
// width: 60px;
// height: 20px;
// font-size: 14px;
// font-family: PingFangSC-Regular, PingFang SC;
// font-weight: 400;
// color: #666666;
// line-height: 20px;
// margin-right: 4px;
// }
// .value{
// height: 20px;
// font-size: 14px;
// font-family: PingFangSC-Medium, PingFang SC;
// font-weight: 500;
// color: #212121;
// line-height: 20px
// }
// }
.detection-title{
height: 18px;
font-size: 13px;
......@@ -826,6 +776,7 @@ export default {
bottom: 0;
padding:5px 12px 5px 12px ;
display: flex;
padding-bottom: calc(5px + env(safe-area-inset-bottom) / 2);
.detail-btn-bottom-tips{
position: absolute;
padding: 6px 0;
......
此差异已折叠。
<template>
<div class="insurance-sz">
<div class="text">
<img
src="https://files.yunqueyi.com/image/png/common/20230612173250172.png"
alt=""
>
</div>
<div class="bottom">
<div class="submit-button submit-button-empty">
<wx-open-launch-weapp
id="launchBtn"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%"
:username="openWebAppConfigPositive.username"
:path="openWebAppConfigPositive.path"
:env-version="envVersion"
@error="handleErrorFn"
@launch="handleLaunchFn"
>
<script type="text/wxtag-template">
<style>.btn {position:absolute; top: -3px; color: #ffffff;text-align: center;line-height: 50px; font-size: 16px; font-weight: 500; left: 0; width:100%; height: 100%;}</style> <div class="btn">领取权益</div>
</script>
</wx-open-launch-weapp>
</div>
</div>
<van-popup
v-model="show"
closeable
round
position="bottom"
:style="{ height: '500px' ,overflow:'hidden'}"
>
<div class="popup-title">
选择被保险人
</div>
<div class="popup-list">
<van-radio-group v-model="person">
<van-cell-group>
<van-cell
v-for="(item) in userinfo"
:key="item.id"
clickable
@click="person = item.name"
>
<div class="popup-list-item">
<div class="name">
{{ item.name }}
</div>
<div class="info">
<div class="phoneNum">
<span>手机号码:</span>
<span>{{ item.mobile }}</span>
</div>
<div class="idCard">
<span>身份证号:</span>
<span>{{ item.id_number }}</span>
</div>
</div>
</div>
<template #right-icon>
<van-radio :name="item.name" />
</template>
</van-cell>
</van-cell-group>
</van-radio-group>
</div>
<div class="popup-btn-box">
<van-button
class="popup-btn"
:disabled="!person"
@click="show=false
"
>
确定
</van-button>
</div>
</van-popup>
</div>
</template>
<script>
const { VUE_APP_ENV } = process.env;
import {getEntitlementList} from '@/api/entitlement';
let that;
export default {
data() {
return {
show: false,
person: null,
userinfo: [
],
envVersion: VUE_APP_ENV == 'production' ? 'release' : 'trial',
// envVersion:'trial',
openWebAppConfigPositive:{
username:'gh_e92f58174364', // 小程序唯一username 1.gh_80d54796f2d5 云鹊助手 2. gh_e92f58174364 云鹊健康
path:'pagesInsurance/all-entrance/index', // 打开页面
extraData: JSON.stringify({})
},
routerInfo:{},
};
},
mounted() {
const {externalOrderNo, projectEquityNo} = this.$route.query;
this.routerInfo = this.$route.query;
that = this;
this.openWebAppConfigPositive.path = `pagesInsurance/all-entrance/index?channelSource=insurance_channel&projectEquityNo=${projectEquityNo}&externalOrderNo=${externalOrderNo}&detectionKind=1`;
console.log('-this.openWebAppConfigPositiv', this.openWebAppConfigPositive);
this.vis();
},
methods: {
vis() {
document.addEventListener('visibilitychange', function() {
console.log('--22', document.visibilityState);
if(document.visibilityState == 'visible') {
console.log('进入前台');
that.getEntitlementList();
}
if(document.visibilityState == 'hidden') {
console.log('切换到后台');
}
});
},
handleErrorFn(e) {
console.log('handleErrorFn', e);
},
handleLaunchFn(e) {
console.log('handleLaunchFn', e);
},
getEntitlementList() {
that.$loading.show();
const {externalOrderNo, projectEquityNo} = that.routerInfo;
getEntitlementList(externalOrderNo, projectEquityNo).then(res => {
if (res.code === '000000') {
if(res?.data.length > 0) {
this.$router.push(
{
path: '/entitlement',
query: {
projectEquityNo: projectEquityNo,
externalOrderNo: externalOrderNo
},
}
);
}
this.$loading.hide();
}
});
},
}
};
</script>
<style lang="scss" scoped>
.insurance-sz{
// height: 1772px;
// display: flex;
// justify-content: center;
// align-items: center;
// padding-bottom: 70px;
height: 100vh;
background: #fff;
// .text{
// }
.bottom{
position: fixed;
bottom: 0;
width: 100vw;
background: #fff;
padding-bottom: 27px;
.bottom-text{
padding: 10px 21px 10px 15px;
display: flex;
justify-content: space-between;
.bottom-text-left{
height: 18px;
font-size: 13px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 600;
color: #000000;
line-height: 18px;
span{
margin-right: 6px;
}
}
.bottom-text-right{
height: 18px;
font-size: 13px;
font-weight: 600;
line-height: 18px;
font-family: PingFangSC-Regular, PingFang SC;
color: #999999;
}
}
.bottom-btn{
background: #FFFFFF;
box-shadow: inset 0px 1px 0px 0px #E9E9E9;
overflow: hidden;
text-align: center;
.btn{
width: 351px;
height: 40px;
background: linear-gradient(270deg, #FF4A2D 0%, #FA7D26 100%);
border-radius: 20px;
margin: 4px auto;
font-size: 16px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #FFFFFF;
line-height: 40px;
text-align: center;
}
}
}
}
.van-popup--bottom{
width: 100%;
}
.popup-title{
width: 100%;
position: absolute;
top: 0;
height: 25px;
font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 600;
color: #02120F;
line-height: 25px;
text-align: center;
padding: 17px 0;
}
/deep/ .van-cell{
padding-top:0 ;
padding-bottom: 0;
}
.popup-list{
position: absolute;
width: 100%;
top: 50px;
height: calc(100% - 135px);
overflow: auto;
padding-bottom: 130px;
}
.popup-list-item{
display: flex;
align-items: center;
padding: 23px 0;
.name{
width: 45px;
font-size: 15px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #212121;
text-align: center;
margin-right: 12px;
}
.info{
.phoneNum{
height: 14px;
font-size:14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #666666;
line-height: 14px;
margin-bottom: 6px;
}
.idCard{
height: 14px;
font-size:14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #666666;
line-height: 14px;
}
}
}
.popup-btn-box{
position: fixed;
z-index: 2;
width: 100%;
bottom: 0;
padding: 20px 0;
background: #FFFFFF;
border: 1px solid #ebedf0;
}
.popup-btn{
margin: 0 auto;
width: 351px;
height: 40px;
background: #00BDA5;
border-radius: 20px;
font-size: 16px;
text-align: center;
font-weight: 600;
color: #FFFFFF;
line-height: 40px;
display: block;
}
/deep/ .van-radio__icon--checked .van-icon{
background: #00bda5;
border-color: #00bda5;
}
.submit-button {
position: relative;
height: 40px;
border-radius: 20px;
color: #ffffff;
font-size: 16px;
display: flex;
align-items: center;
background: #00BDA5;
justify-content: center;
width: 300px;
margin: 0 auto;
}
</style>
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册