Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
P
pica-insurance
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
Close sidebar
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
com.pica.cloud.frontend
pica-insurance
提交
82c61d89
提交
82c61d89
编写于
6月 16, 2023
作者:
张磊
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
sz-insurance
上级
ae13599b
变更
8
展开全部
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
813 行增加
和
99 行删除
+813
-99
appoint.js
src/api/appoint.js
+8
-0
entitlement.js
src/api/entitlement.js
+11
-0
slide.js
src/plugins/slide.js
+1
-0
index.js
src/router/index.js
+10
-0
index.js
src/utils/encrypt/index.js
+7
-0
index.vue
src/views/appointDetails/index.vue
+50
-99
list.vue
src/views/entitlement/list.vue
+408
-0
index.vue
src/views/sz-public/index.vue
+318
-0
未找到文件。
src/api/appoint.js
浏览文件 @
82c61d89
...
...
@@ -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
,
});
};
src/api/entitlement.js
0 → 100644
浏览文件 @
82c61d89
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
,
});
};
src/plugins/slide.js
浏览文件 @
82c61d89
/**
* 图片验证码
*/
/* eslint-disable */
(
function
(
$
)
{
$
.
fn
.
imgcode
=
function
(
options
)
{
// 初始化参数
...
...
src/router/index.js
浏览文件 @
82c61d89
...
...
@@ -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'
,
...
...
src/utils/encrypt/index.js
浏览文件 @
82c61d89
...
...
@@ -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
);
...
...
src/views/appointDetails/index.vue
浏览文件 @
82c61d89
...
...
@@ -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-525
2"
>
400-021-8282
</a>
style=
"font-weight:600"
href=
"tel:400-021-828
2"
>
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
;
...
...
src/views/entitlement/list.vue
0 → 100644
浏览文件 @
82c61d89
此差异已折叠。
点击以展开。
src/views/sz-public/index.vue
0 → 100644
浏览文件 @
82c61d89
<
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
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录