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
提交
38f4c24c
提交
38f4c24c
编写于
1月 16, 2024
作者:
zhongyao.qiao
浏览文件
操作
浏览文件
下载
差异文件
feat 合并
上级
e2437cc7
16d28fac
变更
4
显示空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
1025 行增加
和
794 行删除
+1025
-794
.eslintrc.js
.eslintrc.js
+93
-70
index.js
src/router/index.js
+15
-4
index.vue
src/views/sz-public-new/index.vue
+117
-720
index2.vue
src/views/sz-public-new/index2.vue
+800
-0
未找到文件。
.eslintrc.js
浏览文件 @
38f4c24c
...
@@ -2,7 +2,7 @@ module.exports = {
...
@@ -2,7 +2,7 @@ module.exports = {
root
:
true
,
root
:
true
,
parserOptions
:
{
parserOptions
:
{
parser
:
'babel-eslint'
,
parser
:
'babel-eslint'
,
sourceType
:
'module'
sourceType
:
'module'
,
},
},
env
:
{
env
:
{
browser
:
true
,
browser
:
true
,
...
@@ -12,44 +12,63 @@ module.exports = {
...
@@ -12,44 +12,63 @@ module.exports = {
extends
:
[
'plugin:vue/recommended'
,
'eslint:recommended'
],
extends
:
[
'plugin:vue/recommended'
,
'eslint:recommended'
],
// 全局变量
// 全局变量
globals
:
{
globals
:
{
'gdp'
:
true
,
gdp
:
true
,
'uni'
:
true
,
uni
:
true
,
'wx'
:
true
,
wx
:
true
,
'qq'
:
true
,
qq
:
true
,
'$'
:
true
$
:
true
,
},
},
// add your custom rules here
// add your custom rules here
//it is base on https://github.com/vuejs/eslint-config-vue
//it is base on https://github.com/vuejs/eslint-config-vue
rules
:
{
rules
:
{
'vue/html-self-closing'
:
'off'
,
'no-console'
:
0
,
'no-console'
:
0
,
'no-debugger'
:
0
,
'no-debugger'
:
0
,
'comma-spacing'
:
[
2
,
{
// 控制逗号前面没有空格,后面必须有空格
'comma-spacing'
:
[
'before'
:
false
,
2
,
'after'
:
true
{
}],
// 控制逗号前面没有空格,后面必须有空格
'arrow-spacing'
:
[
2
,
{
// 要求箭头函数前后有空格
before
:
false
,
'before'
:
true
,
after
:
true
,
'after'
:
true
},
}],
],
'no-multi-spaces'
:
2
,
// 禁止使用多个空格,
'arrow-spacing'
:
[
'no-spaced-func'
:
2
,
// 禁止 function 标识符和括号之间出现空格,this.getList () 报错
2
,
'semi-spacing'
:
[
2
,
{
// 强制分号之前不允许有空格
{
'before'
:
false
,
// 要求箭头函数前后有空格
'after'
:
true
before
:
true
,
}],
after
:
true
,
'space-infix-ops'
:
2
,
// 要求操作符前后必须有空格: 2 + 3 2 === 2 3 > 2
},
],
'no-multi-spaces'
:
2
,
// 禁止使用多个空格,
'no-spaced-func'
:
2
,
// 禁止 function 标识符和括号之间出现空格,this.getList () 报错
'semi-spacing'
:
[
2
,
{
// 强制分号之前不允许有空格
before
:
false
,
after
:
true
,
},
],
'space-infix-ops'
:
2
,
// 要求操作符前后必须有空格: 2 + 3 2 === 2 3 > 2
'spaced-comment'
:
[
2
,
'always'
],
// 强制在注释中 // 或 /* 使用一致的空格
'spaced-comment'
:
[
2
,
'always'
],
// 强制在注释中 // 或 /* 使用一致的空格
'array-bracket-spacing'
:
[
2
,
'never'
],
// 指定数组的元素之间要以空格隔开(, 后面), never参数:[ 之后和 ] 之前不能带空格,always参数:[ 之后和 ] 之前必须带空格
'array-bracket-spacing'
:
[
2
,
'never'
],
// 指定数组的元素之间要以空格隔开(, 后面), never参数:[ 之后和 ] 之前不能带空格,always参数:[ 之后和 ] 之前必须带空格
"space-before-blocks"
:
2
,
// if/function等的大括号之前需要有空格
'space-before-blocks'
:
2
,
// if/function等的大括号之前需要有空格
'no-undef-init'
:
2
,
// 禁止将变量初始化为 undefined,保存时会将let a = undefined变成let a
'no-undef-init'
:
2
,
// 禁止将变量初始化为 undefined,保存时会将let a = undefined变成let a
'semi'
:
[
2
,
'always'
],
//强制结尾必须有分号;
semi
:
[
2
,
'always'
],
//强制结尾必须有分号;
'prefer-const'
:
2
,
// 要求使用 const 声明那些声明后不再被修改的变量
'prefer-const'
:
2
,
// 要求使用 const 声明那些声明后不再被修改的变量
'quotes'
:
[
2
,
'single'
],
//js中强制使用单引号
quotes
:
[
2
,
'single'
],
//js中强制使用单引号
'no-multiple-empty-lines'
:
[
2
,
{
// 不允许多个空行,最多一行
'no-multiple-empty-lines'
:
[
'max'
:
1
2
,
}],
{
'vue/order-in-components'
:
[
'error'
,
{
// 不允许多个空行,最多一行
'order'
:
[
max
:
1
,
},
],
'vue/order-in-components'
:
[
'error'
,
{
order
:
[
'el'
,
'el'
,
'name'
,
'name'
,
'parent'
,
'parent'
,
...
@@ -67,11 +86,14 @@ module.exports = {
...
@@ -67,11 +86,14 @@ module.exports = {
'LIFECYCLE_HOOKS'
,
'LIFECYCLE_HOOKS'
,
'methods'
,
'methods'
,
[
'template'
,
'render'
],
[
'template'
,
'render'
],
'renderError'
'renderError'
,
]
],
}],
},
'vue/attributes-order'
:
[
'error'
,
{
],
'order'
:
[
'vue/attributes-order'
:
[
'error'
,
{
order
:
[
'DEFINITION'
,
'DEFINITION'
,
'LIST_RENDERING'
,
'LIST_RENDERING'
,
'CONDITIONALS'
,
'CONDITIONALS'
,
...
@@ -82,8 +104,9 @@ module.exports = {
...
@@ -82,8 +104,9 @@ module.exports = {
'OTHER_DIRECTIVES'
,
'OTHER_DIRECTIVES'
,
'OTHER_ATTR'
,
'OTHER_ATTR'
,
'EVENTS'
,
'EVENTS'
,
'CONTENT'
'CONTENT'
,
]
],
}],
},
}
],
}
},
};
src/router/index.js
浏览文件 @
38f4c24c
import
insuranceBindCode
from
'@/views/insurance-bind-code/insurance-bind-code'
;
import
insuranceBindCode
from
'@/views/insurance-bind-code/insurance-bind-code'
;
import
insuranceBindCodeSuccess
from
'@/views/insurance-bindCode-success/insurance-bindCode-success'
;
import
insuranceBindCodeSuccess
from
'@/views/insurance-bindCode-success/insurance-bindCode-success'
;
import
insuranceDetectionDetail
from
'@/views/insurance-detection-detail/insurance-detection-detail'
;
import
insuranceDetectionDetail
from
'@/views/insurance-detection-detail/insurance-detection-detail'
;
import
{
router
,
}
from
'@pica-cli/vue-cli-plugin-pica-cli-plugin/auto'
;
import
{
router
}
from
'@pica-cli/vue-cli-plugin-pica-cli-plugin/auto'
;
import
{
headerConfigByMeta
}
from
'mn-template/util/routerUtil'
;
import
{
headerConfigByMeta
}
from
'mn-template/util/routerUtil'
;
import
handleAllRouter
from
'../public_uat'
;
import
handleAllRouter
from
'../public_uat'
;
const
routerConfig
=
[
const
routerConfig
=
[
...
@@ -48,7 +48,8 @@ const routerConfig = [
...
@@ -48,7 +48,8 @@ const routerConfig = [
{
{
path
:
'/insuranceQuestionResult'
,
path
:
'/insuranceQuestionResult'
,
name
:
'insuranceQuestionResult'
,
name
:
'insuranceQuestionResult'
,
component
:
()
=>
import
(
'@/views/insurance-question-result/insuranceQuestionResult.vue'
),
component
:
()
=>
import
(
'@/views/insurance-question-result/insuranceQuestionResult.vue'
),
meta
:
{
meta
:
{
title
:
'问卷结果页面'
,
title
:
'问卷结果页面'
,
},
},
...
@@ -56,7 +57,10 @@ const routerConfig = [
...
@@ -56,7 +57,10 @@ const routerConfig = [
{
{
path
:
'/insuranceQuestionResultPay'
,
path
:
'/insuranceQuestionResultPay'
,
name
:
'insuranceQuestionResultPay'
,
name
:
'insuranceQuestionResultPay'
,
component
:
()
=>
import
(
'@/views/insurance-question-result-pay/insuranceQuestionResult.vue'
),
component
:
()
=>
import
(
'@/views/insurance-question-result-pay/insuranceQuestionResult.vue'
),
meta
:
{
meta
:
{
title
:
'问卷结果页面'
,
title
:
'问卷结果页面'
,
},
},
...
@@ -139,6 +143,14 @@ const routerConfig = [
...
@@ -139,6 +143,14 @@ const routerConfig = [
title
:
'惠民保癌筛权益领取'
,
title
:
'惠民保癌筛权益领取'
,
},
},
},
},
{
path
:
'/sz-public-new2'
,
name
:
'sz-public-new2'
,
component
:
()
=>
import
(
'@/views/sz-public-new/index2.vue'
),
meta
:
{
title
:
'惠民保癌筛权益领取'
,
},
},
{
{
path
:
'/tb-public'
,
path
:
'/tb-public'
,
name
:
'tb-public'
,
name
:
'tb-public'
,
...
@@ -174,7 +186,6 @@ const routerConfig = [
...
@@ -174,7 +186,6 @@ const routerConfig = [
router
.
beforeEach
(
async
(
to
,
from
,
next
)
=>
{
router
.
beforeEach
(
async
(
to
,
from
,
next
)
=>
{
headerConfigByMeta
(
to
);
headerConfigByMeta
(
to
);
next
();
next
();
});
});
router
.
addRoutes
(
routerConfig
);
router
.
addRoutes
(
routerConfig
);
...
...
src/views/sz-public-new/index.vue
浏览文件 @
38f4c24c
<!-- eslint-disable -->
<
template
>
<
template
>
<div
class=
"sz-appoint"
>
<div
class=
"page-wrapper"
>
<page-model
v-if=
"picaWechat != 'wechat'"
ref=
"PageModel"
:header-info=
"headerInfo"
/>
<div
class=
"insurance-register-bg"
>
<div
class=
"bg-img back-img"
>
<img
:src=
"bgPath"
/>
</div>
<div
class=
"wrap-reg"
>
<div
class=
"choose-section"
>
<div
class=
"sz-appoint-form-tips"
>
<img
<img
src=
"https://files.yunqueyi.com/image/png/common/20230628155802981.png"
class=
"pic"
/>
:src=
"bgPath"
</div>
<van-form
ref=
"dectionForm"
validate-first
>
<van-field
v-model=
"dectionForm.name"
label=
"参保人姓名"
clearable
required
class=
"appoint-form-items"
:class=
"
{ 'field-readonly': isReadonly('name') }"
:readonly="isReadonly('name')"
placeholder="点击此处输入"
:rules="[
{ required: true, message: '请输入参保人姓名' },
{
pattern: /^.{2,40}$/,
message: '参保人姓名请填写2-40位',
},
]"
/>
<van-field
label=
"证件类型"
required
disabled
class=
"appoint-form-items"
:class=
"
{ 'field-readonly': isReadonly('cardTypeName') }"
:right-icon="isReadonly('cardTypeName') ? '' : 'arrow'"
:readonly="isReadonly('cardTypeName')"
@click="
!isReadonly('cardTypeName')
&&
(showCardTypeVisible = true)
"
>
<template
#
input
>
<van-field
class=
"van-inner-field"
:value=
"cardTypeName"
readonly
/>
</
template
>
</van-field>
<van-field
v-model=
"dectionForm.idCard"
class=
"appoint-form-items"
:class=
"{ 'field-readonly': isReadonly('idCard') }"
clearable
required
label=
"参保人证件号"
placeholder=
"点击此处输入"
:rules=
"rules"
:readonly=
"isReadonly('idCard')"
/>
<van-field
v-if=
"dectionForm.idType != 1"
class=
"appoint-form-items"
:class=
"{ 'field-readonly': isReadonly('sex') }"
required
label=
"参保人性别"
>
<
template
#
input
>
<van-radio-group
v-model=
"dectionForm.sex"
direction=
"horizontal"
:disabled=
"isReadonly('sex')"
>
<van-radio
:name=
"1"
>
男
</van-radio>
<van-radio
:name=
"2"
>
女
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<van-field
v-if=
"dectionForm.idType != 1"
class=
"appoint-form-items"
:class=
"{ 'field-readonly': isReadonly('birthTime') }"
required
label=
"参保人出生日期"
:right-icon=
"isReadonly('birthTime') ? '' : 'arrow'"
:readonly=
"isReadonly('birthTime')"
>
<
template
#
input
>
<DatePicker
v-model=
"dectionForm.birthTime"
:readonly=
"isReadonly('birthTime')"
/>
/>
</
template
>
</van-field>
<van-field
v-model=
"dectionForm.mobilePhone"
class=
"appoint-form-items"
:class=
"{ 'field-readonly': isReadonly('mobilePhone') }"
label=
"参保人手机号"
label-width=
"100%"
clearable
required
placeholder=
"点击此处输入"
:rules=
"[
{ required: true, message: '请输入手机号' },
{
pattern: /^([1][3,4,5,6,7,8,9])\d{9}$/,
message: '手机号格式填写有误',
},
]"
:readonly=
"isReadonly('mobilePhone')"
>
<
template
#
label
>
<div
class=
"phone-wrap"
>
参保人手机号
<span
class=
"sm-grey"
>
该手机号将用于接收预约信息
</span>
</div>
</
template
>
</van-field>
</van-form>
<wx-open-launch-weapp
v-if=
"!(rightsNo || projectEquityNo === 'SZ202306011000938751')"
id=
"checkBtn"
style=
"display: block"
:username=
"openWebAppConfigPositive.username"
:path=
"openWebAppConfig_without_yunorder"
:env-version=
"envVersion"
@
launch=
"handleLaunchFn"
>
<
script
type=
"text/wxtag-template"
>
<
style
>
.
bottom
-
text
{
display
:
flex
;
align
-
items
:
center
;
justify
-
content
:
center
;
margin
-
top
:
15
px
;
margin
-
bottom
:
10
px
;
height
:
18
px
;
font
-
size
:
13
px
;
line
-
height
:
18
px
;
text
-
align
:
center
;
font
-
weight
:
400
;
font
-
family
:
PingFangSC
-
Regular
,
PingFang
SC
;
color
:
#
212121
ff
;
}
<
/style> <div class="bottom-text">查看领取记录 ></
div
>
</
script
>
</wx-open-launch-weapp>
</div>
<div
<div
v-for=
"(i, ind) in staticINFO.logoUrlList"
v-for=
"(url, index) in staticINFO.logoUrlList"
:key=
"ind"
:key=
"index"
class=
"bg-img mt20"
>
>
<img
:src=
"i"
/>
<img
class=
"pic"
:src=
"url"
/>
</div>
</div>
<div
<div
v-for=
"(i, ind
) in staticINFO2.descList"
v-for=
"(url, index
) in staticINFO2.descList"
:key=
"ind
"
:key=
"index
"
class=
"bg-img mt20
"
@
click=
"handleBanner(index)
"
>
>
<img
<img
:src=
"i
"
class=
"pic
"
@
click=
"handleBanner(ind)
"
:src=
"url
"
/>
/>
</div>
</div>
</div>
</div>
<div
class=
"bottom-btn"
>
<van-button
class=
"btn"
:class=
"canSubmit ? 'appoint-form-submit-active' : ''"
@
click=
"appointment"
>
领取权益
</van-button>
</div>
<!-- 选择证件类型弹框 -->
<div
class=
"footer-box"
>
<van-popup
<div
class=
"fixed-btn"
>
v-model=
"showCardTypeVisible"
<div
position=
"bottom"
class=
"wx-btn"
:style=
"{ height: '280px' }"
v-if=
"picaWechat != 'wechat'"
>
<van-cell
v-for=
"(item, index) in cardTypes"
:key=
"index"
:title=
"item.value"
style=
"display: flex; align-items: center"
@
click=
"handleChooseCardType(item)"
>
>
<
template
#
right-icon
>
<span>
领取权益
</span>
<van-icon
</div>
v-if=
"dectionForm.idType == item.no"
name=
"success"
/>
</
template
>
</van-cell>
</van-popup>
<!-- 校验通过弹框 -->
<van-overlay
:show=
"showProtocol"
>
<div
class=
"check-popup-wrapper"
>
<van-icon
name=
"close"
class=
"delete-icon"
size=
"25"
@
click=
"showProtocol = false"
/>
<p
class=
"title"
>
身份校验通过
</p>
<span
class=
"content"
>
请点击“下一步”进入权益领取流程
</span>
<div
class=
"submit-button submit-button-empty"
>
<wx-open-launch-weapp
<wx-open-launch-weapp
id=
"launchBtn"
v-else
style=
"
style=
"display: block; width: 100%"
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
"
:username=
"openWebAppConfigPositive.username"
:username=
"openWebAppConfigPositive.username"
:path=
"openWebAppConfigPositive.path"
:path=
"openWebAppConfigPositive.path"
:env-version=
"envVersion"
:env-version=
"envVersion"
...
@@ -220,34 +45,39 @@
...
@@ -220,34 +45,39 @@
@
launch=
"handleLaunchFn"
@
launch=
"handleLaunchFn"
>
>
<script
type=
"text/wxtag-template"
>
<script
type=
"text/wxtag-template"
>
<
style
>
.
btn
{
position
:
absolute
;
top
:
-
3
px
;
color
:
#
ffffff
;
text
-
align
:
center
;
line
-
height
:
50
px
;
font
-
size
:
16
px
;
font
-
weight
:
500
;
left
:
0
;
width
:
100
%
;
height
:
100
%
;}
<
/style> <div class="btn">下一步</
div
>
<div
class=
"wx-btn"
>
<span>
领取权益
</span>
</div>
<style>
.wx-btn
{
display: block;
width: 93.33333%;
height: 40px;
margin: 5px auto;
border-radius: 40px;
font-size: 16px;
font-weight: 600;
color: #ffffff;
line-height: 40px;
text-align: center;
background: linear-gradient(270deg, #ff7400 0%, #fe4000 100%);
}
</style>
</script>
</script>
</wx-open-launch-weapp>
</wx-open-launch-weapp>
</div>
</div>
</div>
</div>
</van-overlay>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
getBanner
,
getCardTypes
,
projectMaterial
}
from
'@/api/entitlement'
;
import
{
getBanner
}
from
'@/api/entitlement'
;
import
{
import
{
uploadPointData
}
from
'@/api/question'
;
createOrderSzV2
,
queryUserInfo
,
uploadPointData
,
}
from
'@/api/question'
;
import
{
isWeixin
}
from
'@/utils/index'
;
import
{
isWeixin
}
from
'@/utils/index'
;
import
DatePicker
from
'./date-picker.vue'
;
let
that
;
export
default
{
export
default
{
components
:
{
DatePicker
},
data
()
{
data
()
{
return
{
return
{
projectEquityNo
:
''
,
externalOrderNo
:
''
,
rightsNo
:
''
,
userInfo
:
''
,
picaWechat
:
window
.
_picaWechat
,
picaWechat
:
window
.
_picaWechat
,
headerInfo
:
{
headerInfo
:
{
title
:
'健康服务权益领取'
,
title
:
'健康服务权益领取'
,
...
@@ -256,22 +86,10 @@ export default {
...
@@ -256,22 +86,10 @@ export default {
style
:
'backgroundColor:#ffffff;zIndex:100;'
,
style
:
'backgroundColor:#ffffff;zIndex:100;'
,
background
:
''
,
background
:
''
,
},
},
dectionForm
:
{
mobilePhone
:
''
,
idCard
:
''
,
idType
:
1
/** 默认为1:身份证 */
,
name
:
''
,
sex
:
''
,
birthTime
:
''
,
},
showProtocol
:
false
,
showCardTypeVisible
:
false
,
cardTypes
:
[],
// envVersion: process.env.MINI_PROGRAM_ENV,
envVersion
:
process
.
env
.
VUE_APP_MINI_PROGRAM_ENV
,
envVersion
:
process
.
env
.
VUE_APP_MINI_PROGRAM_ENV
,
openWebAppConfigPositive
:
{
openWebAppConfigPositive
:
{
username
:
'gh_e92f58174364'
,
// 小程序唯一username 1.gh_80d54796f2d5 云鹊助手 2. gh_e92f58174364 云鹊健康
username
:
'gh_e92f58174364'
,
// 小程序唯一username 1.gh_80d54796f2d5 云鹊助手 2. gh_e92f58174364 云鹊健康
path
:
'pagesInsurance/
all-entrance
/index'
,
// 打开页面
path
:
'pagesInsurance/
health-card
/index'
,
// 打开页面
extraData
:
JSON
.
stringify
({}),
extraData
:
JSON
.
stringify
({}),
},
},
bgPath
:
''
,
bgPath
:
''
,
...
@@ -282,48 +100,8 @@ export default {
...
@@ -282,48 +100,8 @@ export default {
descList
:
[],
descList
:
[],
descBottomList
:
[],
descBottomList
:
[],
},
},
// 太保项目用户信息
inherentUserInfo
:
null
,
openWebAppConfig_without_yunorder
:
'pagesInsurance/all-entrance/index?insurance_without_yunorder=insurance_without_yunorder'
,
nextConfig
:
null
,
};
};
},
},
computed
:
{
canSubmit
()
{
const
normalValidate
=
this
.
dectionForm
.
idCard
&&
this
.
dectionForm
.
name
&&
this
.
dectionForm
.
mobilePhone
;
if
(
this
.
dectionForm
.
idType
!=
1
)
{
return
(
normalValidate
&&
this
.
dectionForm
.
birthTime
&&
this
.
dectionForm
.
sex
);
}
return
normalValidate
;
},
cardTypeName
()
{
const
item
=
this
.
cardTypes
.
find
(
(
item
)
=>
item
.
no
==
this
.
dectionForm
.
idType
);
return
item
?
item
.
value
:
''
;
},
rules
()
{
const
rules
=
[{
required
:
true
,
message
:
'请输入真实证件号'
}];
if
(
this
.
dectionForm
.
idType
===
1
)
{
return
[
...
rules
,
{
pattern
:
/
(
^
\d{15}
$
)
|
(
^
\d{18}
$
)
|
(
^
\d{17}(\d
|X|x
)
$
)
/
,
message
:
'身份证号格式填写有误'
,
},
];
}
return
rules
;
},
},
created
()
{
created
()
{
if
(
!
isWeixin
())
{
if
(
!
isWeixin
())
{
this
.
$dialog
this
.
$dialog
...
@@ -340,29 +118,29 @@ export default {
...
@@ -340,29 +118,29 @@ export default {
},
},
mounted
()
{
mounted
()
{
document
.
title
=
this
.
headerInfo
.
title
;
document
.
title
=
this
.
headerInfo
.
title
;
that
=
this
;
const
{
const
{
externalOrderNo
,
externalOrderNo
=
''
,
projectEquityNo
,
projectEquityNo
=
''
,
rightsNo
,
rightsNo
=
''
,
channelCode
,
channelCode
=
''
,
userInfo
,
userInfo
=
''
,
}
=
this
.
$route
.
query
;
}
=
this
.
$route
.
query
;
if
(
channelCode
)
{
this
.
uploadPointData
(
channelCode
);
// 兰州项目
if
(
projectEquityNo
===
'YX202306161001636491'
||
projectEquityNo
===
'YX202302271000328363'
)
{
const
url
=
`
${
window
.
location
.
origin
}
/pica-insurance/sz-public-new2?projectEquityNo=
${
projectEquityNo
}
&externalOrderNo=
${
externalOrderNo
}
`
;
window
.
location
.
href
=
url
;
return
;
}
}
this
.
projectEquityNo
=
projectEquityNo
;
this
.
externalOrderNo
=
externalOrderNo
||
''
;
this
.
rightsNo
=
rightsNo
||
''
;
this
.
userInfo
=
userInfo
||
''
;
// this.$loading.show();
this
.
getBanner
(
7
,
rightsNo
||
projectEquityNo
);
this
.
getBanner
(
7
,
rightsNo
||
projectEquityNo
);
this
.
getBanner2
(
36
,
rightsNo
||
projectEquityNo
);
this
.
getBanner2
(
36
,
rightsNo
||
projectEquityNo
);
this
.
getProjectMaterial
();
this
.
loadCardTypes
();
this
.
getUserInfo
();
this
.
initInsurancePath
();
this
.
openWebAppConfigPositive
.
path
=
`pagesInsurance/health-card/index?channelCode=
${
channelCode
}
&projectEquityNo=
${
projectEquityNo
}
&externalOrderNo=
${
externalOrderNo
}
&rightsNo=
${
rightsNo
}
&userInfo=
${
userInfo
}
`
;
if
(
channelCode
)
uploadPointData
({
channelCode
});
this
.
$sendBuriedData
(
this
.
$sendBuriedData
(
{
{
action
:
'ACTION_WEB_ENTER'
,
action
:
'ACTION_WEB_ENTER'
,
...
@@ -372,189 +150,30 @@ export default {
...
@@ -372,189 +150,30 @@ export default {
externalOrderNo
:
externalOrderNo
,
externalOrderNo
:
externalOrderNo
,
rightsNo
:
rightsNo
,
rightsNo
:
rightsNo
,
userInfo
:
userInfo
,
userInfo
:
userInfo
,
channelCode
:
channelCode
||
''
,
channelCode
:
channelCode
,
},
},
},
},
'enter'
'enter'
);
);
},
},
methods
:
{
methods
:
{
getUserInfo
()
{
const
params
=
{
projectEquityNo
:
this
.
projectEquityNo
,
externalOrderNo
:
this
.
externalOrderNo
,
rightsNo
:
this
.
rightsNo
,
encryptedUserInfo
:
this
.
userInfo
,
};
queryUserInfo
(
params
)
.
then
((
res
)
=>
{
console
.
log
(
'userinfo =>'
,
res
);
if
(
!
res
?.
data
)
return
;
const
{
data
}
=
res
;
this
.
inherentUserInfo
=
data
;
data
.
mobilePhone
&&
(
this
.
dectionForm
.
mobilePhone
=
data
.
mobilePhone
);
data
.
idCard
&&
(
this
.
dectionForm
.
idCard
=
data
.
idCard
);
data
.
idType
&&
(
this
.
dectionForm
.
idType
=
data
.
idType
);
data
.
name
&&
(
this
.
dectionForm
.
name
=
data
.
name
);
data
.
sex
&&
(
this
.
dectionForm
.
sex
=
data
.
sex
);
data
.
birthTime
&&
(
this
.
dectionForm
.
birthTime
=
data
.
birthTime
);
})
.
catch
((
err
)
=>
{
console
.
log
(
err
);
});
},
getProjectMaterial
()
{
projectMaterial
().
then
((
res
)
=>
{
const
list
=
res
.
data
||
[];
const
target
=
this
.
rightsNo
||
this
.
projectEquityNo
;
const
item
=
list
.
find
(
(
i
)
=>
i
.
no_char
===
target
||
i
.
noChar
===
target
);
if
(
item
)
{
this
.
nextConfig
=
{
projectEquityNo
:
this
.
projectEquityNo
,
rightsNo
:
this
.
rightsNo
,
image
:
encodeURIComponent
(
item
.
value
),
};
}
});
},
isReadonly
(
fieldName
)
{
if
(
!
this
.
inherentUserInfo
)
return
false
;
return
(
this
.
inherentUserInfo
[
fieldName
]
!==
null
&&
this
.
inherentUserInfo
[
fieldName
]
!==
''
);
},
uploadPointData
(
channelCode
)
{
uploadPointData
({
channelCode
});
},
async
loadCardTypes
()
{
const
{
data
}
=
await
getCardTypes
();
this
.
cardTypes
=
data
||
[];
},
handleChooseCardType
(
item
)
{
this
.
dectionForm
.
idType
=
item
.
no
;
this
.
showCardTypeVisible
=
false
;
},
getBanner
(
pageType
,
yunOrderNo
)
{
getBanner
(
pageType
,
yunOrderNo
)
{
const
self
=
this
;
this
.
$loading
.
show
();
self
.
$loading
.
show
();
getBanner
(
pageType
,
yunOrderNo
).
then
((
res
)
=>
{
getBanner
(
pageType
,
yunOrderNo
).
then
((
res
)
=>
{
if
(
res
.
code
===
'000000'
)
{
if
(
res
.
code
===
'000000'
)
{
self
.
bgPath
=
res
.
data
.
logoUrl
;
this
.
bgPath
=
res
.
data
.
logoUrl
;
self
.
staticINFO
=
res
.
data
;
this
.
staticINFO
=
res
.
data
;
self
.
$loading
.
hide
();
this
.
$loading
.
hide
();
}
}
});
});
},
},
getBanner2
(
pageType
,
yunOrderNo
)
{
getBanner2
(
pageType
,
yunOrderNo
)
{
const
self
=
this
;
this
.
$loading
.
show
();
self
.
$loading
.
show
();
getBanner
(
pageType
,
yunOrderNo
).
then
((
res
)
=>
{
getBanner
(
pageType
,
yunOrderNo
).
then
((
res
)
=>
{
if
(
res
.
code
===
'000000'
)
{
if
(
res
.
code
===
'000000'
)
{
self
.
staticINFO2
=
res
.
data
;
this
.
staticINFO2
=
res
.
data
;
self
.
$loading
.
hide
();
}
});
},
// 创建深圳订单
createOrderSz
()
{
const
{
externalOrderNo
,
projectEquityNo
,
rightsNo
}
=
this
;
const
data
=
{
...
this
.
dectionForm
,
projectEquityNo
,
};
if
(
externalOrderNo
)
{
data
[
'externalOrderNo'
]
=
externalOrderNo
;
}
if
(
rightsNo
)
{
data
[
'rightsNo'
]
=
rightsNo
;
}
this
.
$loading
.
show
();
createOrderSzV2
(
data
)
.
then
((
res
)
=>
{
this
.
$loading
.
hide
();
this
.
$loading
.
hide
();
console
.
log
(
res
);
if
(
res
.
code
==
'000000'
)
{
const
{
yunOrderNo
,
statusCode
,
externalOrderNo
,
versionNumber
,
projectEquityNo
,
lanZhouOldflag
,
projectEquityNoNext
,
yunOrderNoNext
,
rightsNo
,
encryptPatientId
,
}
=
res
.
data
;
if
(
this
.
nextConfig
)
{
this
.
$router
.
replace
({
path
:
'/notice'
,
query
:
this
.
nextConfig
,
});
}
else
if
(
rightsNo
)
{
this
.
showProtocol
=
true
;
const
yo
=
yunOrderNoNext
||
yunOrderNo
;
const
po
=
projectEquityNoNext
||
projectEquityNo
;
this
.
openWebAppConfigPositive
.
path
=
`pagesInsurance/my-right/index?encryptPatientId=
${
encryptPatientId
}
&projectEquityNo=
${
po
}
&yunOrderNo=
${
yo
}
&externalOrderNo=
${
externalOrderNo
}
&rightsNo=
${
rightsNo
}
`
;
console
.
log
(
'-this.openWebAppConfigPositive.path'
,
versionNumber
,
this
.
openWebAppConfigPositive
.
path
);
}
else
if
(
lanZhouOldflag
)
{
const
url
=
'/home'
;
const
l
=
window
.
location
.
origin
;
const
hr
=
l
+
`/pica-insurance
${
url
}
?projectEquityNo=
${
projectEquityNo
}
&externalOrderNo=
${
externalOrderNo
}
`
;
window
.
location
.
href
=
hr
;
}
else
if
(
statusCode
==
'0103'
||
[
4
,
5
,
6
].
includes
(
versionNumber
)
)
{
this
.
showProtocol
=
true
;
const
yo
=
yunOrderNo
;
const
po
=
projectEquityNo
;
this
.
openWebAppConfigPositive
.
path
=
`pagesInsurance/all-entrance/index?channelSource=insurance_channel&projectEquityNo=
${
po
}
&yunOrderNo=
${
yo
}
&externalOrderNo=
${
externalOrderNo
}
`
;
console
.
log
(
'-this.openWebAppConfigPositive.path'
,
versionNumber
,
this
.
openWebAppConfigPositive
.
path
);
}
else
{
this
.
$router
.
replace
({
path
:
'/entitlement'
,
query
:
{
projectEquityNo
:
projectEquityNo
,
externalOrderNo
:
externalOrderNo
,
},
});
}
}
else
{
this
.
$toast
(
res
.
message
);
}
}
})
.
catch
((
err
)
=>
{
console
.
log
(
err
);
this
.
$loading
.
hide
();
});
},
appointment
()
{
this
.
$refs
.
dectionForm
.
validate
()
.
then
((
result
)
=>
{
console
.
log
(
'this.dectionForm'
,
result
);
this
.
createOrderSz
();
})
.
catch
((
err
)
=>
{
console
.
log
(
err
);
});
});
},
},
handleErrorFn
(
e
)
{
handleErrorFn
(
e
)
{
...
@@ -562,14 +181,9 @@ export default {
...
@@ -562,14 +181,9 @@ export default {
},
},
handleLaunchFn
(
e
)
{
handleLaunchFn
(
e
)
{
console
.
log
(
'handleLaunchFn'
,
e
);
console
.
log
(
'handleLaunchFn'
,
e
);
that
.
showProtocol
=
false
;
},
initInsurancePath
()
{
this
.
openWebAppConfig_without_yunorder
=
`pagesInsurance/all-entrance/index?insurance_without_yunorder=insurance_without_yunorder&projectEquityNo=
${
this
.
projectEquityNo
}
`
;
},
},
handleBanner
(
index
)
{
handleBanner
(
index
)
{
console
.
log
(
'index'
,
index
);
console
.
log
(
'index'
,
index
);
// window.open(this.staticINFO2.descBottomList[index]);
window
.
location
.
href
=
this
.
staticINFO2
.
descBottomList
[
index
];
window
.
location
.
href
=
this
.
staticINFO2
.
descBottomList
[
index
];
},
},
},
},
...
@@ -577,257 +191,40 @@ export default {
...
@@ -577,257 +191,40 @@ export default {
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.sz-appoint
{
.page-wrapper
{
width
:
100%
;
min-height
:
100vh
;
overflow
:
auto
;
box-sizing
:
border-box
;
padding-bottom
:
70px
;
background-color
:
#bee2fd
;
background-color
:
#bee2fd
;
.insurance-register-bg
{
}
width
:
100%
;
.footer-box
{
.bg-img
{
height
:
50px
;
width
:
100%
;
padding-bottom
:
calc
(
constant
(
safe-area-inset-bottom
)
/
2
);
padding-bottom
:
calc
(
env
(
safe-area-inset-bottom
)
/
2
);
img
{
box-sizing
:
content-box
;
width
:
100%
;
}
height
:
100%
;
.fixed-btn
{
}
}
.wrap-reg
{
width
:
350px
;
border-radius
:
20px
;
margin
:
0
auto
;
margin-top
:
280px
;
position
:
relative
;
}
}
.back-img
{
position
:
absolute
;
top
:
0
;
}
.choose-section
{
padding
:
10px
12px
;
background
:
#ffffff
;
border-radius
:
11px
;
font-weight
:
600
;
padding-top
:
0px
;
margin
:
0
auto
;
/
deep
/
.van-field__label
{
color
:
#212121
;
}
/
deep
/
.van-field__control
:disabled
{
color
:
#323233
;
-webkit-text-fill-color
:
inherit
;
}
.item
{
color
:
#212121
;
font-size
:
14px
;
display
:
flex
;
height
:
60px
;
align-items
:
center
;
position
:
relative
;
.input-key
{
font-weight
:
300
;
margin-left
:
10px
;
}
.input-value
{
margin-left
:
18px
;
font-weight
:
500
;
overflow
:
visible
;
}
.right
{
position
:
absolute
;
right
:
10px
;
top
:
25px
;
}
}
.height60
{
height
:
30px
;
}
.required
{
position
:
relative
;
}
.
required
:
:
after
{
position
:
absolute
;
content
:
'*'
;
display
:
block
;
left
:
-10px
;
top
:
0
;
text-align
:
center
;
color
:
rgba
(
255
,
56
,
56
,
1
);
}
}
.appoint-form-items
{
.van-inner-field
{
padding
:
0
;
}
/
deep
/
.van-field__label
{
color
:
#212121
;
width
:
auto
;
}
&
.field-readonly
{
/
deep
/
.van-field__label
{
color
:
#999999
;
width
:
auto
;
}
&
:
:
before
{
color
:
#999999
;
}
/
deep
/
.van-field__control
{
&
:disabled
,
&
:read-only
{
color
:
#999999
;
-webkit-text-fill-color
:
inherit
;
.van-radio__label
{
color
:
inherit
;
}
}
}
}
}
.appoint-form-placeholder
{
color
:
#999999
;
}
.
appoint-form-title
:
:
after
{
display
:
none
;
}
.appoint-form-submit
{
margin-top
:
30px
;
height
:
40px
;
background
:
#d9d9d9
;
border-radius
:
20px
;
border
:
none
;
position
:
absolute
;
font-size
:
16px
;
font-weight
:
600
;
}
.sz-appoint-form-tips
{
width
:
175px
;
height
:
32px
;
margin
:
0
auto
;
margin-bottom
:
10px
;
}
/
deep
/
.van-cell
{
display
:
block
;
font-weight
:
300
;
font-size
:
14px
;
}
.phone-wrap
{
.sm-grey
{
font-weight
:
100
;
color
:
#999999
;
font-size
:
12px
;
}
}
.protocol-content
{
padding
:
20px
;
border-radius
:
20px
;
}
.block70
{
font-size
:
14px
;
color
:
#212121
!
important
;
text-align
:
center
;
margin-top
:
15px
;
}
.f20
{
font-size
:
20px
;
}
.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
:
242px
;
margin
:
0px
auto
;
}
/
deep
/
.van-popup--center
{
border-radius
:
20px
;
}
.bottom-btn
{
width
:
100%
;
background
:
#ffffff
;
box-shadow
:
inset
0px
1px
0px
0px
#e9e9e9
;
overflow
:
hidden
;
text-align
:
center
;
padding-bottom
:
calc
(
5px
+
env
(
safe-area-inset-bottom
)
/
2
);
position
:
fixed
;
position
:
fixed
;
bottom
:
0
;
left
:
0
;
left
:
0
;
.btn
{
right
:
0
;
bottom
:
0
;
height
:
50px
;
padding-bottom
:
calc
(
constant
(
safe-area-inset-bottom
)
/
2
);
padding-bottom
:
calc
(
env
(
safe-area-inset-bottom
)
/
2
);
box-shadow
:
inset
0px
1px
0px
0px
#e9e9e9
;
background-color
:
#fff
;
box-sizing
:
content-box
;
z-index
:
9999
;
.wx-btn
{
display
:
block
;
display
:
block
;
width
:
351px
;
width
:
93
.33333%
;
height
:
40px
;
height
:
40px
;
border-radius
:
20px
;
margin
:
5px
auto
;
margin
:
4px
auto
;
border-radius
:
40px
;
font-size
:
16px
;
font-size
:
16px
;
background
:
#cccccc
;
font-weight
:
600
;
font-weight
:
600
;
color
:
#ffffff
;
color
:
#ffffff
;
line-height
:
40px
;
line-height
:
40px
;
text-align
:
center
;
text-align
:
center
;
}
.appoint-form-submit-active
{
background
:
linear-gradient
(
270deg
,
#ff7400
0%
,
#fe4000
100%
);
background
:
linear-gradient
(
270deg
,
#ff7400
0%
,
#fe4000
100%
);
}
}
}
.mt20
{
margin-top
:
10px
;
background-color
:
#bee2fd
;
}
.check-popup-wrapper
{
width
:
295px
;
height
:
227px
;
position
:
fixed
;
background
:
url('https://files.yunqueyi.com/image/png/common/20230830115339979.png')
no-repeat
center
;
background-size
:
100%
100%
;
top
:
50%
;
left
:
50%
;
transform
:
translate
(
-50%
,
-50%
);
.delete-icon
{
// width: 25px;
// height: 25px;
position
:
absolute
;
color
:
#fff
;
right
:
0
;
top
:
-36px
;
}
.title
{
font-size
:
18px
;
font-weight
:
800
;
color
:
#3c877d
;
margin-top
:
36px
;
padding
:
0
24px
;
}
.content
{
display
:
inline-block
;
font-size
:
16px
;
color
:
#212121
;
margin
:
25px
0
48px
0
;
padding
:
0
24px
;
}
.next-btn
{
width
:
247px
;
height
:
39px
;
margin
:
0
auto
;
background
:
#00bda5
;
border-radius
:
23px
;
color
:
#fff
;
font-size
:
18px
;
font-weight
:
800
;
line-height
:
39px
;
text-align
:
center
;
}
}
}
}
</
style
>
</
style
>
src/views/sz-public-new/index2.vue
0 → 100644
浏览文件 @
38f4c24c
<
template
>
<div
class=
"sz-appoint"
>
<page-model
v-if=
"picaWechat != 'wechat'"
ref=
"PageModel"
:header-info=
"headerInfo"
/>
<div
class=
"insurance-register-bg"
>
<div
class=
"bg-img back-img"
>
<img
:src=
"bgPath"
/>
</div>
<div
class=
"wrap-reg"
>
<div
class=
"choose-section"
>
<div
class=
"sz-appoint-form-tips"
>
<img
src=
"https://files.yunqueyi.com/image/png/common/20230628155802981.png"
/>
</div>
<van-form
ref=
"dectionForm"
validate-first
>
<van-field
v-model=
"dectionForm.name"
label=
"参保人姓名"
clearable
required
class=
"appoint-form-items"
:class=
"
{ 'field-readonly': isReadonly('name') }"
:readonly="isReadonly('name')"
placeholder="点击此处输入"
:rules="[
{ required: true, message: '请输入参保人姓名' },
{
pattern: /^.{2,40}$/,
message: '参保人姓名请填写2-40位',
},
]"
/>
<van-field
label=
"证件类型"
required
disabled
class=
"appoint-form-items"
:class=
"
{ 'field-readonly': isReadonly('cardTypeName') }"
:right-icon="isReadonly('cardTypeName') ? '' : 'arrow'"
:readonly="isReadonly('cardTypeName')"
@click="
!isReadonly('cardTypeName')
&&
(showCardTypeVisible = true)
"
>
<template
#
input
>
<van-field
class=
"van-inner-field"
:value=
"cardTypeName"
readonly
/>
</
template
>
</van-field>
<van-field
v-model=
"dectionForm.idCard"
class=
"appoint-form-items"
:class=
"{ 'field-readonly': isReadonly('idCard') }"
clearable
required
label=
"参保人证件号"
placeholder=
"点击此处输入"
:rules=
"rules"
:readonly=
"isReadonly('idCard')"
/>
<van-field
v-if=
"dectionForm.idType != 1"
class=
"appoint-form-items"
:class=
"{ 'field-readonly': isReadonly('sex') }"
required
label=
"参保人性别"
>
<
template
#
input
>
<van-radio-group
v-model=
"dectionForm.sex"
direction=
"horizontal"
:disabled=
"isReadonly('sex')"
>
<van-radio
:name=
"1"
>
男
</van-radio>
<van-radio
:name=
"2"
>
女
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<van-field
v-if=
"dectionForm.idType != 1"
class=
"appoint-form-items"
:class=
"{ 'field-readonly': isReadonly('birthTime') }"
required
label=
"参保人出生日期"
:right-icon=
"isReadonly('birthTime') ? '' : 'arrow'"
:readonly=
"isReadonly('birthTime')"
>
<
template
#
input
>
<DatePicker
v-model=
"dectionForm.birthTime"
:readonly=
"isReadonly('birthTime')"
/>
</
template
>
</van-field>
<van-field
v-model=
"dectionForm.mobilePhone"
class=
"appoint-form-items"
:class=
"{ 'field-readonly': isReadonly('mobilePhone') }"
label=
"参保人手机号"
label-width=
"100%"
clearable
required
placeholder=
"点击此处输入"
:rules=
"[
{ required: true, message: '请输入手机号' },
{
pattern: /^([1][3,4,5,6,7,8,9])\d{9}$/,
message: '手机号格式填写有误',
},
]"
:readonly=
"isReadonly('mobilePhone')"
>
<
template
#
label
>
<div
class=
"phone-wrap"
>
参保人手机号
<span
class=
"sm-grey"
>
该手机号将用于接收预约信息
</span>
</div>
</
template
>
</van-field>
</van-form>
<wx-open-launch-weapp
v-if=
"!(rightsNo || projectEquityNo === 'SZ202306011000938751')"
id=
"checkBtn"
style=
"display: block"
:username=
"openWebAppConfigPositive.username"
:path=
"openWebAppConfig_without_yunorder"
:env-version=
"envVersion"
@
launch=
"handleLaunchFn"
>
<
script
type=
"text/wxtag-template"
>
<
style
>
.
bottom
-
text
{
display
:
flex
;
align
-
items
:
center
;
justify
-
content
:
center
;
margin
-
top
:
15
px
;
margin
-
bottom
:
10
px
;
height
:
18
px
;
font
-
size
:
13
px
;
line
-
height
:
18
px
;
text
-
align
:
center
;
font
-
weight
:
400
;
font
-
family
:
PingFangSC
-
Regular
,
PingFang
SC
;
color
:
#
212121
ff
;
}
<
/style> <div class="bottom-text">查看领取记录 ></
div
>
</
script
>
</wx-open-launch-weapp>
</div>
<div
v-for=
"(i, ind) in staticINFO.logoUrlList"
:key=
"ind"
class=
"bg-img mt20"
>
<img
:src=
"i"
/>
</div>
</div>
</div>
<div
class=
"bottom-btn"
>
<van-button
class=
"btn"
:class=
"canSubmit ? 'appoint-form-submit-active' : ''"
@
click=
"appointment"
>
领取权益
</van-button>
</div>
<!-- 选择证件类型弹框 -->
<van-popup
v-model=
"showCardTypeVisible"
position=
"bottom"
:style=
"{ height: '280px' }"
>
<van-cell
v-for=
"(item, index) in cardTypes"
:key=
"index"
:title=
"item.value"
style=
"display: flex; align-items: center"
@
click=
"handleChooseCardType(item)"
>
<
template
#
right-icon
>
<van-icon
v-if=
"dectionForm.idType == item.no"
name=
"success"
/>
</
template
>
</van-cell>
</van-popup>
<!-- 校验通过弹框 -->
<van-overlay
:show=
"showProtocol"
>
<div
class=
"check-popup-wrapper"
>
<van-icon
name=
"close"
class=
"delete-icon"
size=
"25"
@
click=
"showProtocol = false"
/>
<p
class=
"title"
>
身份校验通过
</p>
<span
class=
"content"
>
请点击“下一步”进入权益领取流程
</span>
<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
:
-
3
px
;
color
:
#
ffffff
;
text
-
align
:
center
;
line
-
height
:
50
px
;
font
-
size
:
16
px
;
font
-
weight
:
500
;
left
:
0
;
width
:
100
%
;
height
:
100
%
;}
<
/style> <div class="btn">下一步</
div
>
</
script
>
</wx-open-launch-weapp>
</div>
</div>
</van-overlay>
</div>
</template>
<
script
>
import
{
getBanner
,
getCardTypes
,
projectMaterial
}
from
'@/api/entitlement'
;
import
{
createOrderSzV2
,
queryUserInfo
,
uploadPointData
,
}
from
'@/api/question'
;
import
{
isWeixin
}
from
'@/utils/index'
;
import
DatePicker
from
'./date-picker.vue'
;
let
that
;
export
default
{
components
:
{
DatePicker
},
data
()
{
return
{
projectEquityNo
:
''
,
externalOrderNo
:
''
,
rightsNo
:
''
,
userInfo
:
''
,
picaWechat
:
window
.
_picaWechat
,
headerInfo
:
{
title
:
'健康服务权益领取'
,
isBlack
:
true
,
backMethod
:
'web'
,
style
:
'backgroundColor:#ffffff;zIndex:100;'
,
background
:
''
,
},
dectionForm
:
{
mobilePhone
:
''
,
idCard
:
''
,
idType
:
1
/** 默认为1:身份证 */
,
name
:
''
,
sex
:
''
,
birthTime
:
''
,
},
showProtocol
:
false
,
showCardTypeVisible
:
false
,
cardTypes
:
[],
// envVersion: process.env.MINI_PROGRAM_ENV,
envVersion
:
process
.
env
.
VUE_APP_MINI_PROGRAM_ENV
,
openWebAppConfigPositive
:
{
username
:
'gh_e92f58174364'
,
// 小程序唯一username 1.gh_80d54796f2d5 云鹊助手 2. gh_e92f58174364 云鹊健康
path
:
'pagesInsurance/all-entrance/index'
,
// 打开页面
extraData
:
JSON
.
stringify
({}),
},
bgPath
:
''
,
staticINFO
:
{
logoUrlList
:
[],
},
// 太保项目用户信息
inherentUserInfo
:
null
,
openWebAppConfig_without_yunorder
:
'pagesInsurance/all-entrance/index?insurance_without_yunorder=insurance_without_yunorder'
,
nextConfig
:
null
,
};
},
computed
:
{
canSubmit
()
{
const
normalValidate
=
this
.
dectionForm
.
idCard
&&
this
.
dectionForm
.
name
&&
this
.
dectionForm
.
mobilePhone
;
if
(
this
.
dectionForm
.
idType
!=
1
)
{
return
(
normalValidate
&&
this
.
dectionForm
.
birthTime
&&
this
.
dectionForm
.
sex
);
}
return
normalValidate
;
},
cardTypeName
()
{
const
item
=
this
.
cardTypes
.
find
(
(
item
)
=>
item
.
no
==
this
.
dectionForm
.
idType
);
return
item
?
item
.
value
:
''
;
},
rules
()
{
const
rules
=
[{
required
:
true
,
message
:
'请输入真实证件号'
}];
if
(
this
.
dectionForm
.
idType
===
1
)
{
return
[
...
rules
,
{
pattern
:
/
(
^
\d{15}
$
)
|
(
^
\d{18}
$
)
|
(
^
\d{17}(\d
|X|x
)
$
)
/
,
message
:
'身份证号格式填写有误'
,
},
];
}
return
rules
;
},
},
created
()
{
if
(
!
isWeixin
())
{
this
.
$dialog
.
alert
({
type
:
'warning'
,
title
:
'提示'
,
message
:
'请在微信中扫码打开!'
,
confirmButtonText
:
'我知道了'
,
})
.
then
(()
=>
{
// on close
});
}
},
mounted
()
{
document
.
title
=
this
.
headerInfo
.
title
;
that
=
this
;
const
{
externalOrderNo
,
projectEquityNo
,
rightsNo
,
channelCode
,
userInfo
,
}
=
this
.
$route
.
query
;
if
(
channelCode
)
{
this
.
uploadPointData
(
channelCode
);
}
this
.
projectEquityNo
=
projectEquityNo
;
this
.
externalOrderNo
=
externalOrderNo
||
''
;
this
.
rightsNo
=
rightsNo
||
''
;
this
.
userInfo
=
userInfo
||
''
;
// this.$loading.show();
this
.
getBanner
(
7
,
rightsNo
||
projectEquityNo
);
this
.
getProjectMaterial
();
this
.
loadCardTypes
();
this
.
getUserInfo
();
this
.
initInsurancePath
();
this
.
$sendBuriedData
(
{
action
:
'ACTION_WEB_ENTER'
,
component_tag
:
'7802964#0#0#保险入口页面'
,
web_data
:
{
projectEquityNo
:
projectEquityNo
,
externalOrderNo
:
externalOrderNo
,
rightsNo
:
rightsNo
,
userInfo
:
userInfo
,
channelCode
:
channelCode
||
''
,
},
},
'enter'
);
},
methods
:
{
getUserInfo
()
{
const
params
=
{
projectEquityNo
:
this
.
projectEquityNo
,
externalOrderNo
:
this
.
externalOrderNo
,
rightsNo
:
this
.
rightsNo
,
encryptedUserInfo
:
this
.
userInfo
,
};
queryUserInfo
(
params
)
.
then
((
res
)
=>
{
console
.
log
(
'userinfo =>'
,
res
);
if
(
!
res
?.
data
)
return
;
const
{
data
}
=
res
;
this
.
inherentUserInfo
=
data
;
data
.
mobilePhone
&&
(
this
.
dectionForm
.
mobilePhone
=
data
.
mobilePhone
);
data
.
idCard
&&
(
this
.
dectionForm
.
idCard
=
data
.
idCard
);
data
.
idType
&&
(
this
.
dectionForm
.
idType
=
data
.
idType
);
data
.
name
&&
(
this
.
dectionForm
.
name
=
data
.
name
);
data
.
sex
&&
(
this
.
dectionForm
.
sex
=
data
.
sex
);
data
.
birthTime
&&
(
this
.
dectionForm
.
birthTime
=
data
.
birthTime
);
})
.
catch
((
err
)
=>
{
console
.
log
(
err
);
});
},
getProjectMaterial
()
{
projectMaterial
().
then
((
res
)
=>
{
const
list
=
res
.
data
||
[];
const
target
=
this
.
rightsNo
||
this
.
projectEquityNo
;
const
item
=
list
.
find
((
i
)
=>
i
.
no_char
===
target
);
if
(
item
)
{
this
.
nextConfig
=
{
projectEquityNo
:
this
.
projectEquityNo
,
rightsNo
:
this
.
rightsNo
,
image
:
encodeURIComponent
(
item
.
value
),
};
}
});
},
isReadonly
(
fieldName
)
{
if
(
!
this
.
inherentUserInfo
)
return
false
;
return
(
this
.
inherentUserInfo
[
fieldName
]
!==
null
&&
this
.
inherentUserInfo
[
fieldName
]
!==
''
);
},
uploadPointData
(
channelCode
)
{
uploadPointData
({
channelCode
});
},
async
loadCardTypes
()
{
const
{
data
}
=
await
getCardTypes
();
this
.
cardTypes
=
data
||
[];
},
handleChooseCardType
(
item
)
{
this
.
dectionForm
.
idType
=
item
.
no
;
this
.
showCardTypeVisible
=
false
;
},
getBanner
(
pageType
,
yunOrderNo
)
{
const
self
=
this
;
self
.
$loading
.
show
();
getBanner
(
pageType
,
yunOrderNo
).
then
((
res
)
=>
{
if
(
res
.
code
===
'000000'
)
{
self
.
bgPath
=
res
.
data
.
logoUrl
;
self
.
staticINFO
=
res
.
data
;
self
.
$loading
.
hide
();
}
});
},
// 创建深圳订单
createOrderSz
()
{
const
{
externalOrderNo
,
projectEquityNo
,
rightsNo
}
=
this
;
const
data
=
{
...
this
.
dectionForm
,
projectEquityNo
,
};
if
(
externalOrderNo
)
{
data
[
'externalOrderNo'
]
=
externalOrderNo
;
}
if
(
rightsNo
)
{
data
[
'rightsNo'
]
=
rightsNo
;
}
this
.
$loading
.
show
();
createOrderSzV2
(
data
)
.
then
((
res
)
=>
{
this
.
$loading
.
hide
();
console
.
log
(
res
);
if
(
res
.
code
==
'000000'
)
{
const
{
yunOrderNo
,
statusCode
,
externalOrderNo
,
versionNumber
,
projectEquityNo
,
lanZhouOldflag
,
projectEquityNoNext
,
yunOrderNoNext
,
rightsNo
,
encryptPatientId
,
}
=
res
.
data
;
if
(
this
.
nextConfig
)
{
this
.
$router
.
replace
({
path
:
'/notice'
,
query
:
this
.
nextConfig
,
});
}
else
if
(
rightsNo
)
{
this
.
showProtocol
=
true
;
const
yo
=
yunOrderNoNext
||
yunOrderNo
;
const
po
=
projectEquityNoNext
||
projectEquityNo
;
this
.
openWebAppConfigPositive
.
path
=
`pagesInsurance/my-right/index?encryptPatientId=
${
encryptPatientId
}
&projectEquityNo=
${
po
}
&yunOrderNo=
${
yo
}
&externalOrderNo=
${
externalOrderNo
}
&rightsNo=
${
rightsNo
}
`
;
console
.
log
(
'-this.openWebAppConfigPositive.path'
,
versionNumber
,
this
.
openWebAppConfigPositive
.
path
);
}
else
if
(
lanZhouOldflag
)
{
const
url
=
'/home'
;
const
l
=
window
.
location
.
origin
;
const
hr
=
l
+
`/pica-insurance
${
url
}
?projectEquityNo=
${
projectEquityNo
}
&externalOrderNo=
${
externalOrderNo
}
`
;
window
.
location
.
href
=
hr
;
}
else
if
(
statusCode
==
'0103'
||
[
4
,
5
,
6
].
includes
(
versionNumber
)
)
{
this
.
showProtocol
=
true
;
const
yo
=
yunOrderNo
;
const
po
=
projectEquityNo
;
this
.
openWebAppConfigPositive
.
path
=
`pagesInsurance/all-entrance/index?channelSource=insurance_channel&projectEquityNo=
${
po
}
&yunOrderNo=
${
yo
}
&externalOrderNo=
${
externalOrderNo
}
`
;
console
.
log
(
'-this.openWebAppConfigPositive.path'
,
versionNumber
,
this
.
openWebAppConfigPositive
.
path
);
}
else
{
this
.
$router
.
replace
({
path
:
'/entitlement'
,
query
:
{
projectEquityNo
:
projectEquityNo
,
externalOrderNo
:
externalOrderNo
,
},
});
}
}
else
{
this
.
$toast
(
res
.
message
);
}
})
.
catch
((
err
)
=>
{
console
.
log
(
err
);
this
.
$loading
.
hide
();
});
},
appointment
()
{
this
.
$refs
.
dectionForm
.
validate
()
.
then
((
result
)
=>
{
console
.
log
(
'this.dectionForm'
,
result
);
this
.
createOrderSz
();
})
.
catch
((
err
)
=>
{
console
.
log
(
err
);
});
},
handleErrorFn
(
e
)
{
console
.
log
(
'handleErrorFn'
,
e
);
},
handleLaunchFn
(
e
)
{
console
.
log
(
'handleLaunchFn'
,
e
);
that
.
showProtocol
=
false
;
},
initInsurancePath
()
{
this
.
openWebAppConfig_without_yunorder
=
`pagesInsurance/all-entrance/index?insurance_without_yunorder=insurance_without_yunorder&projectEquityNo=
${
this
.
projectEquityNo
}
`
;
},
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
.sz-appoint
{
width
:
100%
;
overflow
:
auto
;
box-sizing
:
border-box
;
padding-bottom
:
70px
;
background-color
:
#bee2fd
;
.insurance-register-bg
{
width
:
100%
;
.bg-img
{
width
:
100%
;
img
{
width
:
100%
;
height
:
100%
;
}
}
.wrap-reg
{
width
:
350px
;
border-radius
:
20px
;
margin
:
0
auto
;
margin-top
:
280px
;
position
:
relative
;
}
}
.back-img
{
position
:
absolute
;
top
:
0
;
}
.choose-section
{
padding
:
10px
12px
;
background
:
#ffffff
;
border-radius
:
11px
;
font-weight
:
600
;
padding-top
:
0px
;
margin
:
0
auto
;
/
deep
/
.van-field__label
{
color
:
#212121
;
}
/
deep
/
.van-field__control
:disabled
{
color
:
#323233
;
-webkit-text-fill-color
:
inherit
;
}
.item
{
color
:
#212121
;
font-size
:
14px
;
display
:
flex
;
height
:
60px
;
align-items
:
center
;
position
:
relative
;
.input-key
{
font-weight
:
300
;
margin-left
:
10px
;
}
.input-value
{
margin-left
:
18px
;
font-weight
:
500
;
overflow
:
visible
;
}
.right
{
position
:
absolute
;
right
:
10px
;
top
:
25px
;
}
}
.height60
{
height
:
30px
;
}
.required
{
position
:
relative
;
}
.
required
:
:
after
{
position
:
absolute
;
content
:
'*'
;
display
:
block
;
left
:
-10px
;
top
:
0
;
text-align
:
center
;
color
:
rgba
(
255
,
56
,
56
,
1
);
}
}
.appoint-form-items
{
.van-inner-field
{
padding
:
0
;
}
/
deep
/
.van-field__label
{
color
:
#212121
;
width
:
auto
;
}
&
.field-readonly
{
/
deep
/
.van-field__label
{
color
:
#999999
;
width
:
auto
;
}
&
:
:
before
{
color
:
#999999
;
}
/
deep
/
.van-field__control
{
&
:disabled
,
&
:read-only
{
color
:
#999999
;
-webkit-text-fill-color
:
inherit
;
.van-radio__label
{
color
:
inherit
;
}
}
}
}
}
.appoint-form-placeholder
{
color
:
#999999
;
}
.
appoint-form-title
:
:
after
{
display
:
none
;
}
.appoint-form-submit
{
margin-top
:
30px
;
height
:
40px
;
background
:
#d9d9d9
;
border-radius
:
20px
;
border
:
none
;
position
:
absolute
;
font-size
:
16px
;
font-weight
:
600
;
}
.sz-appoint-form-tips
{
width
:
175px
;
height
:
32px
;
margin
:
0
auto
;
margin-bottom
:
10px
;
}
/
deep
/
.van-cell
{
display
:
block
;
font-weight
:
300
;
font-size
:
14px
;
}
.phone-wrap
{
.sm-grey
{
font-weight
:
100
;
color
:
#999999
;
font-size
:
12px
;
}
}
.protocol-content
{
padding
:
20px
;
border-radius
:
20px
;
}
.block70
{
font-size
:
14px
;
color
:
#212121
!
important
;
text-align
:
center
;
margin-top
:
15px
;
}
.f20
{
font-size
:
20px
;
}
.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
:
242px
;
margin
:
0px
auto
;
}
/
deep
/
.van-popup--center
{
border-radius
:
20px
;
}
.bottom-btn
{
width
:
100%
;
background
:
#ffffff
;
box-shadow
:
inset
0px
1px
0px
0px
#e9e9e9
;
overflow
:
hidden
;
text-align
:
center
;
padding-bottom
:
calc
(
5px
+
env
(
safe-area-inset-bottom
)
/
2
);
position
:
fixed
;
bottom
:
0
;
left
:
0
;
.btn
{
width
:
351px
;
height
:
40px
;
border-radius
:
20px
;
margin
:
4px
auto
;
font-size
:
16px
;
background
:
#cccccc
;
font-weight
:
600
;
color
:
#ffffff
;
line-height
:
40px
;
text-align
:
center
;
}
.appoint-form-submit-active
{
background
:
linear-gradient
(
270deg
,
#ff7400
0%
,
#fe4000
100%
);
}
}
.mt20
{
margin-top
:
10px
;
background-color
:
#bee2fd
;
}
.check-popup-wrapper
{
width
:
295px
;
height
:
227px
;
position
:
fixed
;
background
:
url('https://files.yunqueyi.com/image/png/common/20230830115339979.png')
no-repeat
center
;
background-size
:
100%
100%
;
top
:
50%
;
left
:
50%
;
transform
:
translate
(
-50%
,
-50%
);
.delete-icon
{
// width: 25px;
// height: 25px;
position
:
absolute
;
color
:
#fff
;
right
:
0
;
top
:
-36px
;
}
.title
{
font-size
:
18px
;
font-weight
:
800
;
color
:
#3c877d
;
margin-top
:
36px
;
padding
:
0
24px
;
}
.content
{
display
:
inline-block
;
font-size
:
16px
;
color
:
#212121
;
margin
:
25px
0
48px
0
;
padding
:
0
24px
;
}
.next-btn
{
width
:
247px
;
height
:
39px
;
margin
:
0
auto
;
background
:
#00bda5
;
border-radius
:
23px
;
color
:
#fff
;
font-size
:
18px
;
font-weight
:
800
;
line-height
:
39px
;
text-align
:
center
;
}
}
}
</
style
>
写
预览
Markdown
格式
0%
请重试
or
附加一个文件
附加文件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录