Browse Source

患者端换皮肤

dev
kola-web 2 months ago
parent
commit
b80f439fcf
  1. 19
      .prettierrc
  2. 3
      README.md
  3. 148
      project.config.json
  4. 25
      project.private.config.json
  5. 4
      src/app.json
  6. 34
      src/components/patient-tab-bar/index.scss
  7. 64
      src/components/patient-tab-bar/index.ts
  8. 4
      src/components/patient-tab-bar/index.wxml
  9. BIN
      src/images/bg10.png
  10. BIN
      src/images/icon24.png
  11. BIN
      src/images/icon25.png
  12. BIN
      src/images/icon26.png
  13. BIN
      src/images/icon27.png
  14. BIN
      src/images/icon28.png
  15. BIN
      src/images/icon29.png
  16. BIN
      src/images/icon30.png
  17. BIN
      src/images/icon31.png
  18. BIN
      src/images/icon32.png
  19. BIN
      src/images/icon33.png
  20. BIN
      src/images/icon34.png
  21. BIN
      src/images/icon35.png
  22. BIN
      src/images/icon36.png
  23. BIN
      src/images/icon37.png
  24. BIN
      src/images/icon38.png
  25. BIN
      src/images/icon39.png
  26. BIN
      src/images/icon40.png
  27. BIN
      src/images/icon41.png
  28. BIN
      src/images/icon42.png
  29. BIN
      src/images/icon43.png
  30. BIN
      src/images/icon44.png
  31. BIN
      src/images/logo2.png
  32. BIN
      src/images/tabbar/tab-active4.png
  33. BIN
      src/images/tabbar/tab-active5.png
  34. BIN
      src/images/tabbar/tab4.png
  35. BIN
      src/images/tabbar/tab5.png
  36. BIN
      src/images/title6.png
  37. 4
      src/patient/pages/cancellation/index.json
  38. 92
      src/patient/pages/cancellation/index.scss
  39. 9
      src/patient/pages/cancellation/index.wxml
  40. 2
      src/patient/pages/doctorDetail/index.json
  41. 162
      src/patient/pages/doctorDetail/index.scss
  42. 292
      src/patient/pages/doctorDetail/index.ts
  43. 45
      src/patient/pages/doctorDetail/index.wxml
  44. 5
      src/patient/pages/enterInfo/index.json
  45. 172
      src/patient/pages/enterInfo/index.scss
  46. 104
      src/patient/pages/enterInfo/index.ts
  47. 170
      src/patient/pages/enterInfo/index.wxml
  48. 953
      src/patient/pages/index/index.scss
  49. 306
      src/patient/pages/index/index.ts
  50. 447
      src/patient/pages/index/index.wxml
  51. 5
      src/patient/pages/interactivePatient/index.json
  52. 71
      src/patient/pages/interactivePatient/index.scss
  53. 11
      src/patient/pages/interactivePatient/index.ts
  54. 37
      src/patient/pages/interactivePatient/index.wxml
  55. 3
      src/patient/pages/live/index.json
  56. 731
      src/patient/pages/live/index.scss
  57. 38
      src/patient/pages/live/index.wxml
  58. 4
      src/patient/pages/liveDetail/index.json
  59. 135
      src/patient/pages/liveDetail/index.scss
  60. 17
      src/patient/pages/liveDetail/index.ts
  61. 155
      src/patient/pages/liveDetail/index.wxml
  62. 6
      src/patient/pages/liveResult/index.json
  63. 259
      src/patient/pages/liveResult/index.scss
  64. 184
      src/patient/pages/liveResult/index.ts
  65. 74
      src/patient/pages/liveResult/index.wxml
  66. 122
      src/patient/pages/login/index.scss
  67. 62
      src/patient/pages/login/index.wxml
  68. 154
      src/patient/pages/my/index.scss
  69. 1
      src/patient/pages/my/index.ts
  70. 127
      src/patient/pages/my/index.wxml
  71. 3
      src/patient/pages/myLive/index.json
  72. 434
      src/patient/pages/myLive/index.scss
  73. 13
      src/patient/pages/myLive/index.ts
  74. 224
      src/patient/pages/myLive/index.wxml
  75. 3
      src/patient/pages/mySave/index.json
  76. 392
      src/patient/pages/mySave/index.scss
  77. 175
      src/patient/pages/mySave/index.ts
  78. 172
      src/patient/pages/mySave/index.wxml
  79. 4
      src/patient/pages/personalInformation/index.json
  80. 47
      src/patient/pages/personalInformation/index.scss
  81. 176
      src/patient/pages/personalInformation/index.ts
  82. 176
      src/patient/pages/personalInformation/index.wxml
  83. 5
      src/patient/pages/repository/index.json
  84. 84
      src/patient/pages/repository/index.scss
  85. 82
      src/patient/pages/repository/index.wxml
  86. 473
      src/patient/pages/repositoryDetail/index.scss
  87. 168
      src/patient/pages/repositoryDetail/index.ts
  88. 98
      src/patient/pages/repositoryDetail/index.wxml

19
.prettierrc

@ -1,35 +1,28 @@ @@ -1,35 +1,28 @@
{
"$schema": "https://json.schemastore.org/prettierrc.json",
"$schema": "http://json.schemastore.org/prettierrc",
"printWidth": 120,
"tabWidth": 2,
"useTabs": false,
"semi": true,
"semi": false,
"singleQuote": true,
"bracketSpacing": true,
"trailingComma": "all",
"arrowParens": "always",
"endOfLine": "auto",
"endOfLine": "lf",
"htmlWhitespaceSensitivity": "ignore",
"singleAttributePerLine": false,
"jsxSingleQuote": true,
"overrides": [
{
"files": "*.wxml",
"options": {
"parser": "html"
}
"options": { "parser": "html" }
},
{
"files": "*.wxss",
"options": {
"parser": "css"
}
"options": { "parser": "css" }
},
{
"files": "*.wxs",
"options": {
"parser": "babel"
}
"options": { "parser": "babel" }
}
]
}

3
README.md

@ -7,7 +7,8 @@ @@ -7,7 +7,8 @@
https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567
images svn 地址
svn://39.106.86.127:28386/projects/takeda/proj_src/shop/frontend/web/wt
svn://39.106.86.127:28386/projects/xd/proj_src/shop/frontend/web/xd
svn://39.106.86.127:28386/projects/xd/proj_src/branches/dev_v2.0/shop/frontend/web/xd/
(/images/)(\S*(?=["|']))
{{imageUrl}}$2?t={{Timestamp}}

148
project.config.json

@ -1,75 +1,73 @@ @@ -1,75 +1,73 @@
{
"description": "项目配置文件",
"miniprogramRoot": "src/",
"compileType": "miniprogram",
"setting": {
"useCompilerPlugins": [
"typescript",
"sass"
],
"babelSetting": {
"ignore": [],
"disablePlugins": [],
"outputPath": ""
},
"coverView": false,
"postcss": false,
"minified": false,
"enhance": true,
"showShadowRootInWxmlPanel": false,
"packNpmManually": true,
"packNpmRelationList": [
{
"packageJsonPath": "package.json",
"miniprogramNpmDistDir": "./src"
}
],
"ignoreUploadUnusedFiles": true,
"compileHotReLoad": false,
"skylineRenderEnable": true,
"es6": true,
"compileWorklet": false,
"uglifyFileName": false,
"uploadWithSourceMap": true,
"minifyWXSS": true,
"minifyWXML": true,
"localPlugins": false,
"disableUseStrict": false,
"condition": false,
"swc": false,
"disableSWC": true
},
"simulatorType": "wechat",
"simulatorPluginLibVersion": {},
"condition": {},
"srcMiniprogramRoot": "src/",
"editorSetting": {
"tabIndent": "insertSpaces",
"tabSize": 2
},
"libVersion": "3.7.7",
"ignore": [],
"packOptions": {
"ignore": [
{
"value": "/images/*.*",
"type": "glob"
},
{
"value": "/images/**/*.*",
"type": "glob"
},
{
"value": "/images/**/**/*.*",
"type": "glob"
}
],
"include": [
{
"value": "/images/tabbar/*.*",
"type": "glob"
}
]
},
"appid": "wxf9ce8010f1ad24aa"
}
{
"description": "项目配置文件",
"miniprogramRoot": "src/",
"compileType": "miniprogram",
"setting": {
"useCompilerPlugins": ["typescript", "sass"],
"babelSetting": {
"ignore": [],
"disablePlugins": [],
"outputPath": ""
},
"coverView": false,
"postcss": false,
"minified": false,
"enhance": true,
"showShadowRootInWxmlPanel": false,
"packNpmManually": true,
"packNpmRelationList": [
{
"packageJsonPath": "package.json",
"miniprogramNpmDistDir": "./src"
}
],
"ignoreUploadUnusedFiles": true,
"compileHotReLoad": false,
"skylineRenderEnable": true,
"es6": true,
"compileWorklet": false,
"uglifyFileName": false,
"uploadWithSourceMap": true,
"minifyWXSS": true,
"minifyWXML": true,
"localPlugins": false,
"disableUseStrict": false,
"condition": false,
"swc": false,
"disableSWC": true
},
"simulatorType": "wechat",
"simulatorPluginLibVersion": {},
"condition": {},
"srcMiniprogramRoot": "src/",
"editorSetting": {
"tabIndent": "insertSpaces",
"tabSize": 2
},
"libVersion": "3.7.7",
"ignore": [],
"packOptions": {
"ignore": [
{
"value": "/images/*.*",
"type": "glob"
},
{
"value": "/images/**/*.*",
"type": "glob"
},
{
"value": "/images/**/**/*.*",
"type": "glob"
}
],
"include": [
{
"value": "/images/tabbar/*.*",
"type": "glob"
}
]
},
"appid": "wxf9ce8010f1ad24aa"
}

25
project.private.config.json

@ -23,11 +23,32 @@ @@ -23,11 +23,32 @@
"miniprogram": {
"list": [
{
"name": "患者-直播结果页",
"pathName": "patient/pages/liveResult/index",
"query": "id=5",
"scene": null,
"launchMode": "default"
},
{
"name": "患者-医生详情",
"pathName": "patient/pages/doctorDetail/index",
"query": "id=3",
"launchMode": "default",
"scene": null
},
{
"name": "患者-互动",
"pathName": "patient/pages/interactivePatient/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "患者端-登录",
"pathName": "patient/pages/login/index",
"query": "",
"scene": null,
"launchMode": "default"
"launchMode": "default",
"scene": null
},
{
"name": "资料库详情",

4
src/app.json

@ -131,8 +131,8 @@ @@ -131,8 +131,8 @@
"text": "资料库"
},
{
"iconPath": "/images/tabbar/tab2.png",
"selectedIconPath": "/images/tabbar/tab-active2.png",
"iconPath": "/images/tabbar/tab4.png",
"selectedIconPath": "/images/tabbar/tab-active4.png",
"pagePath": "pages/d_interactive/index",
"text": "互动"
},

34
src/components/patient-tab-bar/index.scss

@ -1,19 +1,15 @@ @@ -1,19 +1,15 @@
/* custom-tab-bar/index.wxss */
.tab-item {
.icon {
width: 50rpx;
height: 50rpx;
}
.name {
font-size: 24rpx;
color: #CCCCCC;
&.active{
color: #CF5375;
}
&.drug-active{
color: #25D9C8;
}
}
}
/* custom-tab-bar/index.wxss */
.tab-item {
.icon {
width: 48rpx;
height: 48rpx;
}
.name {
font-size: 20rpx;
color: rgba(105, 104, 110, 1);
&.active {
color: rgba(33, 29, 46, 1);
}
}
}

64
src/components/patient-tab-bar/index.ts

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
import { getCurrentPageUrl } from '@/utils/util';
const app = getApp();
import { getCurrentPageUrl } from '@/utils/util'
const app = getApp()
Component({
properties: {},
@ -11,32 +11,26 @@ Component({ @@ -11,32 +11,26 @@ Component({
{
pagePath: '/patient/pages/index/index',
text: '首页',
icon: 'home',
iconActive: 'home-active',
icon: 'tab1',
iconActive: 'tab-active1',
},
{
pagePath: '/patient/pages/repository/index',
text: 'MG全知道',
icon: 'story',
iconActive: 'story-active',
text: '了解TED',
icon: 'tab2',
iconActive: 'tab-active2',
},
{
pagePath: '/patient/pages/live/index',
text: '周三大咖说',
icon: 'gift',
iconActive: 'gift-active',
},
{
pagePath: '/patient/pages/story/index',
text: '向往的生活',
icon: 'class',
iconActive: 'class-active',
text: '大咖说',
icon: 'tab5',
iconActive: 'tab-active5',
},
{
pagePath: '/patient/pages/my/index',
text: '我的',
icon: 'my',
iconActive: 'my-active',
icon: 'tab3',
iconActive: 'tab-active3',
},
],
userInfo: {},
@ -50,17 +44,17 @@ Component({ @@ -50,17 +44,17 @@ Component({
app.zdGetTheme().then((res) => {
this.setData({
theme: res,
});
});
})
})
const pagePath = getCurrentPageUrl();
const active = this.data.list.findIndex((item) => item.pagePath === pagePath);
const pagePath = getCurrentPageUrl()
const active = this.data.list.findIndex((item) => item.pagePath === pagePath)
this.setData({
active,
});
})
this.setData({
showRed: app.globalData.showRed,
});
})
// getApp().registerListener(() => {
// wx.ajax({
// method: 'GET',
@ -76,30 +70,30 @@ Component({ @@ -76,30 +70,30 @@ Component({
methods: {
onChange() {},
handleNav(e) {
const { index } = e.currentTarget.dataset;
const { list, config } = this.data;
const pagePath = list[index].pagePath;
app.globalData.BeginnerCardId = '';
const { index } = e.currentTarget.dataset
const { list, config } = this.data
const pagePath = list[index].pagePath
app.globalData.BeginnerCardId = ''
if (pagePath == '/patient/pages/my/index') {
app.zdPermissionVerification(2, 0, `/patient/pages/index/index`).then(() => {
wx.reLaunch({
url: pagePath,
});
});
})
})
} else if (pagePath == '/patient/pages/repository/index' && config.picTextEbookStatus == 1) {
app.zdPermissionVerification(2, 0, `/pages/repository/index`).then(() => {
const webviewUrl = encodeURIComponent(
`${app.globalData.url}/zdcare/#/cover?loginState=${app.globalData.loginState}`,
);
)
wx.navigateTo({
url: `/patient/pages/webview/index?url=${webviewUrl}`,
});
});
})
})
} else {
wx.reLaunch({
url: pagePath,
});
})
}
},
},
});
})

4
src/components/patient-tab-bar/index.wxml

@ -4,9 +4,9 @@ @@ -4,9 +4,9 @@
class="tab-item"
bind:tap="handleNav"
data-index="{{index}}"
icon="{{imageUrl}}za-images/tabbar/{{active==index ? (theme === 'DRUG' ? 'drug-' :'' ) + item.iconActive: item.icon}}.png"
icon="{{imageUrl}}tabbar/{{active==index ? item.iconActive: item.icon}}.png"
>
<view class="name {{index==active && (theme === 'DRUG' ? 'drug-active' :'active')}}">{{item.text}}</view>
<view class="name {{index==active && 'active'}}">{{item.text}}</view>
<view class="hot"></view>
</van-tabbar-item>
</block>

BIN
src/images/bg10.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 KiB

BIN
src/images/icon24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 603 B

BIN
src/images/icon25.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 581 B

BIN
src/images/icon26.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
src/images/icon27.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
src/images/icon28.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
src/images/icon29.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
src/images/icon30.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 660 B

BIN
src/images/icon31.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
src/images/icon32.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/images/icon33.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
src/images/icon34.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
src/images/icon35.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
src/images/icon36.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
src/images/icon37.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/images/icon38.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 933 B

BIN
src/images/icon39.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/images/icon40.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/images/icon41.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/images/icon42.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/images/icon43.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
src/images/icon44.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
src/images/logo2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
src/images/tabbar/tab-active4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
src/images/tabbar/tab-active5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
src/images/tabbar/tab4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
src/images/tabbar/tab5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/images/title6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

4
src/patient/pages/cancellation/index.json

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
{
"navigationBarTitleText": "",
"navigationStyle": "custom",
"navigationBarTitleText": "注销账号",
"navigationStyle": "default",
"usingComponents": {
"navBar": "/components/zd-navBar/navBar"
}

92
src/patient/pages/cancellation/index.scss

@ -1,48 +1,44 @@ @@ -1,48 +1,44 @@
page {
background-color: #afb7cb;
}
.page {
height: 100vh;
display: flex;
flex-direction: column;
.container {
padding: 76rpx 48rpx 58rpx;
flex: 1;
margin-top: 160rpx;
box-sizing: border-box;
border-radius: 48rpx 48rpx 0 0;
background-color: #fff;
text-align: center;
display: flex;
flex-direction: column;
justify-content: space-between;
.icon {
width: 256rpx;
height: 256rpx;
}
.title {
margin-top: 51rpx;
font-size: 48rpx;
color: #495069;
font-weight: bold;
}
.tip {
text-align: left;
margin-top: 44rpx;
font-size: 30rpx;
line-height: 53rpx;
color: #aeb7cd;
}
.footer {
.rescan {
width: 100%;
height: 80rpx;
text-align: center;
color: #fff;
line-height: 80rpx;
background: #B8BFD1;
border-radius: 42rpx;
}
}
}
}
page {
background-color: rgba(246, 248, 249, 1);
}
.page {
height: 100vh;
.container {
padding: 84rpx 40rpx 0;
text-align: center;
display: flex;
flex-direction: column;
justify-content: space-between;
.icon {
width: 128rpx;
height: 128rpx;
}
.title {
margin-top: 51rpx;
font-size: 36rpx;
color: rgba(0, 0, 0, 1);
font-weight: bold;
}
.tip {
margin-top: 48rpx;
padding: 32rpx;
font-size: 32rpx;
line-height: 48rpx;
border-radius: 24rpx;
color: rgba(173, 172, 178, 1);
background-color: #fff;
}
.footer {
margin-top: 80rpx;
.rescan {
width: 100%;
height: 88rpx;
text-align: center;
color: #fff;
line-height: 88rpx;
background: linear-gradient( 197deg, #FFBCF9 0%, #B982FF 100%);
border-radius: 42rpx;
}
}
}
}

9
src/patient/pages/cancellation/index.wxml

@ -1,13 +1,8 @@ @@ -1,13 +1,8 @@
<view class="page">
<navBar back bind:back="handleBack" color="#fff" icon-theme="white" title="注销帐号"></navBar>
<view class="container">
<view class="banner">
<image class="icon" src="{{imageUrl}}za-images/1/f-warn.png?t={{Timestamp}}"></image>
<view class="title">
注销后数据不可恢复
<view></view>
请谨慎操作
</view>
<image class="icon" src="/images/icon44.png"></image>
<view class="title">注销后数据不可恢复 请谨慎操作</view>
<view class="tip">
注销账号后,系统会删除当前患者的全部信息和数据,包括基础信息数据,患者的健康记录数据,若您有亲友号绑定此患者,则亲友号也将同步自动注销。您注销后若重新注册,则为全新身份在平台内使用,原有的数据无法恢复。
</view>

2
src/patient/pages/doctorDetail/index.json

@ -2,6 +2,6 @@ @@ -2,6 +2,6 @@
"navigationStyle": "custom",
"usingComponents": {
"van-icon": "@vant/weapp/icon/index",
"navBar": "/components/zd-navBar/navBar"
"navbar": "/components/navbar/index"
}
}

162
src/patient/pages/doctorDetail/index.scss

@ -1,19 +1,21 @@ @@ -1,19 +1,21 @@
page {
background: #f2f4f5;
padding-bottom: calc(140rpx + env(safe-area-inset-bottom));
background: rgba(246, 248, 249, 1);
}
.page {
min-height: 100vh;
padding: 0 30rpx;
.container {
margin: 160rpx 30rpx 0;
padding: 0 30rpx 40rpx;
background: #fff linear-gradient(to top, #ffffff 0%, #e8f0f1 100%) no-repeat top center/100% 200rpx;
position: relative;
padding: 32rpx 32rpx 32rpx 32rpx;
background: linear-gradient(53deg, #ffffff 0%, rgba(255, 255, 255, 0.46) 100%);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #ffffff;
.avatar {
margin-top: -50rpx;
width: 128rpx;
height: 128rpx;
position: absolute;
top: -36rpx;
right: 32rpx;
width: 164rpx;
height: 164rpx;
.avatar-user {
width: 100%;
height: 100%;
@ -21,46 +23,47 @@ page { @@ -21,46 +23,47 @@ page {
}
}
.name {
margin: -55rpx 0 0 150rpx;
padding-right: 220rpx;
font-size: 40rpx;
color: rgba(40, 48, 49, 1);
color: rgba(33, 29, 46, 1);
font-weight: bold;
line-height: 1;
line-height: 48rpx;
.label {
display: inline;
font-weight: normal;
font-size: 28rpx;
color: rgba(105, 104, 110, 1);
}
}
.card {
margin-top: 52rpx;
padding: 32rpx;
background: #ffffff;
box-shadow: 0rpx 8rpx 32rpx 0rpx rgba(40, 48, 49, 0.04);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #f8f9f9;
.content {
display: flex;
gap: 8rpx;
align-items: start;
font-size: 32rpx;
color: rgba(40, 48, 49, 1);
line-height: 1;
.tag {
flex-shrink: 0;
padding: 4rpx 12rpx;
font-size: 22rpx;
color: rgba(229, 154, 41, 1);
border-radius: 8rpx;
background-color: rgba(229, 154, 41, 0.29);
}
.hostipal {
margin-top: 20rpx;
padding-right: 220rpx;
font-size: 28rpx;
color: rgba(105, 104, 110, 1);
.tag {
margin-right: 12rpx;
display: inline-block;
flex-shrink: 0;
padding: 4rpx 12rpx;
font-size: 22rpx;
color: #fff;
border-radius: 8rpx;
background: linear-gradient(90deg, #ffd650 0%, #f8a61a 100%);
}
}
.card {
margin-top: 32rpx;
padding-top: 32rpx;
border-top: 1px solid rgba(246, 248, 249, 1);
.c-row {
margin-top: 32rpx;
display: flex;
gap: 12rpx;
font-size: 32rpx;
color: rgba(40, 48, 49, 1);
line-height: 1;
gap: 16rpx;
font-size: 28rpx;
color: rgba(105, 104, 110, 1);
.icon {
flex-shrink: 0;
width: 32rpx;
height: 32rpx;
width: 36rpx;
height: 36rpx;
}
.site-num {
margin-top: 10rpx;
@ -70,75 +73,22 @@ page { @@ -70,75 +73,22 @@ page {
}
}
}
.row {
margin-top: 32rpx;
.r-title {
width: 128rpx;
height: 32rpx;
}
.r-content {
margin-top: 16rpx;
font-size: 28rpx;
color: rgba(154, 161, 163, 1);
}
}
}
.invite {
padding: 36rpx 30rpx 36rpx 168rpx;
margin: 24rpx 30rpx 0;
display: flex;
align-items: center;
justify-content: space-between;
border-radius: 24rpx;
.info-card {
margin-top: 24rpx;
padding: 32rpx;
background: #ffffff;
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #ffffff;
.wrap {
.title {
font-size: 36rpx;
color: rgba(40, 48, 49, 1);
}
.content {
font-size: 28rpx;
color: rgba(154, 161, 163, 1);
}
}
.btn {
width: 198rpx;
height: 64rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 32rpx;
color: rgba(255, 255, 255, 1);
background: #62bed0;
border-radius: 136rpx 136rpx 136rpx 136rpx;
.r-title {
width: 128rpx;
height: 32rpx;
}
}
.list {
margin: 24rpx 30rpx 0;
.list-item {
padding: 30rpx;
display: flex;
justify-content: space-between;
align-items: center;
background: #ffffff;
border-radius: 24rpx 24rpx 24rpx 24rpx;
.left {
display: flex;
gap: 20rpx;
align-items: center;
.icon {
width: 48rpx;
height: 48rpx;
}
.name {
font-size: 32rpx;
color: rgba(40, 48, 49, 1);
}
}
.more {
color: #d4d9da;
font-size: 32rpx;
}
.r-content {
margin-top: 16rpx;
font-size: 28rpx;
color: rgba(105, 104, 110, 1);
line-height: 44rpx;
}
}
}

292
src/patient/pages/doctorDetail/index.ts

@ -1,150 +1,142 @@ @@ -1,150 +1,142 @@
const app = getApp<IAppOption>()
Page({
data: {
id: '',
detail: {} as any,
LNG: '' as number | string,
LAT: '' as number | string,
pagination: {
page: 1,
pages: 1,
count: 1,
},
},
onLoad(options) {
const SystemInfo = app.globalSystemInfo
if (SystemInfo) {
const { top, bottom } = SystemInfo.capsulePosition
this.setData({
top,
bottom,
})
}
app.zdWaitLogin().then((_res) => {
this.setData({
id: options.id,
})
this.handleToggleSite()
})
},
handleToggleSite() {
const that = this
if (!this.data.LNG) {
wx.getSetting({
success(res) {
if (
res.authSetting['scope.userFuzzyLocation'] != undefined &&
res.authSetting['scope.userFuzzyLocation'] == true
) {
//获取当前位置
that.getFuzzyLocation()
} else if (res.authSetting['scope.userFuzzyLocation'] == undefined) {
//获取当前位置
that.getFuzzyLocation()
} else {
wx.showModal({
title: '请求授权当前位置',
content: '需要获取您的地理位置,请确认授权',
confirmColor: '#cf5375',
success(res) {
if (res.cancel) {
//取消授权
wx.showToast({
title: '拒绝授权',
icon: 'none',
duration: 1000,
})
that.getFuzzyLocation()
} else if (res.confirm) {
//确定授权,通过wx.openSetting发起授权请求
wx.openSetting({
success(res) {
if (res.authSetting['scope.userFuzzyLocation'] == true) {
that.getFuzzyLocation()
} else {
that.getFuzzyLocation()
}
},
})
}
},
})
}
},
})
} else {
that.setData({
LNG: '',
LAT: '',
})
this.getDetail()
}
},
getFuzzyLocation() {
const that = this
wx.getFuzzyLocation({
success(res) {
that.setData({
LNG: res.longitude,
LAT: res.latitude,
})
that.getDetail()
},
fail(_err) {
that.getDetail()
},
})
},
getDetail() {
wx.ajax({
method: 'GET',
url: '?r=zd/doctor/detail',
data: {
Id: this.data.id,
lng: this.data.LNG,
lat: this.data.LAT,
},
}).then((res) => {
let weekName = ''
if (res.ClinicType == 2) {
weekName = res.Clinic
} else {
weekName = (res.Clinic ? res.Clinic : [])
.map((subItem: { weekday: string | number; timeType: string | number }) => {
const week = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
const timeDay = { 1: '上午', 2: '下午' }
return `${week[Number(subItem.weekday) - 1]}${timeDay[subItem.timeType]}`
})
.join(',')
}
this.setData({
detail: {
...res,
weekName,
},
})
})
},
handlePhone() {
const { detail } = this.data
wx.makePhoneCall({
phoneNumber: detail.Telephone,
})
},
handleOpenMap() {
const {
detail: { hospital },
} = this.data
wx.openLocation({
latitude: hospital.LAT,
longitude: hospital.LNG,
name: hospital.Name,
address: `${hospital.ProvinceName}${hospital.CityName}${hospital.AreaName}${hospital.Address}`,
})
},
handleBack() {
wx.navigateBack()
},
onPageScroll() {},
})
const app = getApp<IAppOption>()
Page({
data: {
id: '',
detail: {} as any,
LNG: '' as number | string,
LAT: '' as number | string,
pagination: {
page: 1,
pages: 1,
count: 1,
},
},
onLoad(options) {
app.waitLogin({ type: [1] }).then((_res) => {
this.setData({
id: options.id,
})
this.handleToggleSite()
})
},
handleToggleSite() {
const that = this
if (!this.data.LNG) {
wx.getSetting({
success(res) {
if (
res.authSetting['scope.userFuzzyLocation'] != undefined &&
res.authSetting['scope.userFuzzyLocation'] == true
) {
//获取当前位置
that.getFuzzyLocation()
} else if (res.authSetting['scope.userFuzzyLocation'] == undefined) {
//获取当前位置
that.getFuzzyLocation()
} else {
wx.showModal({
title: '请求授权当前位置',
content: '需要获取您的地理位置,请确认授权',
confirmColor: '#cf5375',
success(res) {
if (res.cancel) {
//取消授权
wx.showToast({
title: '拒绝授权',
icon: 'none',
duration: 1000,
})
that.getFuzzyLocation()
} else if (res.confirm) {
//确定授权,通过wx.openSetting发起授权请求
wx.openSetting({
success(res) {
if (res.authSetting['scope.userFuzzyLocation'] == true) {
that.getFuzzyLocation()
} else {
that.getFuzzyLocation()
}
},
})
}
},
})
}
},
})
} else {
that.setData({
LNG: '',
LAT: '',
})
this.getDetail()
}
},
getFuzzyLocation() {
const that = this
wx.getFuzzyLocation({
success(res) {
that.setData({
LNG: res.longitude,
LAT: res.latitude,
})
that.getDetail()
},
fail(_err) {
that.getDetail()
},
})
},
getDetail() {
wx.ajax({
method: 'GET',
url: '?r=zd/doctor/detail',
data: {
Id: this.data.id,
lng: this.data.LNG,
lat: this.data.LAT,
},
}).then((res) => {
let weekName = ''
if (res.ClinicType == 2) {
weekName = res.Clinic
} else {
weekName = (res.Clinic ? res.Clinic : [])
.map((subItem: { weekday: string | number; timeType: string | number }) => {
const week = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
const timeDay = { 1: '上午', 2: '下午' }
return `${week[Number(subItem.weekday) - 1]}${timeDay[subItem.timeType]}`
})
.join(',')
}
this.setData({
detail: {
...res,
weekName,
},
})
})
},
handlePhone() {
const { detail } = this.data
wx.makePhoneCall({
phoneNumber: detail.Telephone,
})
},
handleOpenMap() {
const {
detail: { hospital },
} = this.data
wx.openLocation({
latitude: hospital.LAT,
longitude: hospital.LNG,
name: hospital.Name,
address: `${hospital.ProvinceName}${hospital.CityName}${hospital.AreaName}${hospital.Address}`,
})
},
handleBack() {
wx.navigateBack()
},
onPageScroll() {},
})

45
src/patient/pages/doctorDetail/index.wxml

@ -1,43 +1,50 @@ @@ -1,43 +1,50 @@
<view
class="page"
style="padding-top: {{top+5}}px;background: url({{imageUrl}}za-images//doctor/my-bg.png?t={{Timestamp}}) no-repeat top center / 100% 740rpx"
style="padding-top: {{pageTop+40}}px;background: url({{imageUrl}}bg10.png?t={{Timestamp}}) no-repeat top center / 100% 610rpx"
>
<navBar title="" fixed background="{{background}}" home="{{false}}" back bind:back="handleBack"></navBar>
<navbar fixed title="" custom-style="background:{{background}}">
<van-icon name="arrow-left" slot="left" size="18px" color="#000" bind:tap="handleBack" />
</navbar>
<view class="container">
<view class="avatar">
<image class="avatar-user" mode="aspectFill" src="{{detail.Img}}"></image>
</view>
<view class="name">{{detail.Name}}</view>
<view class="name">
{{detail.Name}}
<view class="label">主任医生 | 眼科</view>
</view>
<view class="hostipal">
<view class="tag">三级甲等</view>
{{detail.hospital.Name}}
<!-- <view class="tag" wx:if="{{detail.hospital.HospitalClassificationName || detail.hospital.HospitalLevelName}}"> -->
<!-- {{detail.hospital.HospitalClassificationName}}{{detail.hospital.HospitalLevelName}} -->
<!-- </view> -->
</view>
<view class="card">
<view class="content">
{{detail.hospital.Name}}
<view class="tag" wx:if="{{detail.hospital.HospitalClassificationName || detail.hospital.HospitalLevelName}}">
{{detail.hospital.HospitalClassificationName}}{{detail.hospital.HospitalLevelName}}
</view>
</view>
<view
class="c-row"
bind:tap="handleOpenMap"
wx:if="{{detail.hospital.ProvinceName || detail.hospital.CityName || detail.hospital.CountyName || detail.hospital.Address}}"
>
<image class="icon" src="{{imageUrl}}za-images//doctor/icon-site.png?t={{Timestamp}}"></image>
<image class="icon" src="/images/icon41.png"></image>
<view>
{{detail.hospital.ProvinceName}}{{detail.hospital.CityName}}{{detail.hospital.CountyName}}{{detail.hospital.Address}}
<view class="site-num">{{detail.hospital.dist}}</view>
</view>
</view>
<view class="c-row" bind:tap="handlePhone" wx:if="{{ detail.Telephone }}">
<image class="icon" src="{{imageUrl}}za-images//doctor/icon-phone.png?t={{Timestamp}}"></image>
<image class="icon" src="/images/icon42.png"></image>
{{ detail.Telephone }}
</view>
</view>
<view class="row" wx:if="{{detail.Introduce}}">
<image class="r-title" src="{{imageUrl}}za-images//doctor/my-title1.png?t={{Timestamp}}"></image>
<view class="r-content">{{detail.Introduce}}</view>
</view>
<view class="row" wx:if="{{detail.weekName}}">
<image class="r-title" src="{{imageUrl}}za-images//doctor/my-title2.png?t={{Timestamp}}"></image>
<view class="r-content pre-line">{{detail.weekName}}</view>
</view>
</view>
<view class="info-card" wx:if="{{detail.Introduce}}">
<image class="r-title" src="{{imageUrl}}za-images//doctor/my-title1.png?t={{Timestamp}}"></image>
<view class="r-content">{{detail.Introduce}}</view>
</view>
<view class="info-card" wx:if="{{detail.weekName}}">
<image class="r-title" src="{{imageUrl}}za-images//doctor/my-title2.png?t={{Timestamp}}"></image>
<view class="r-content pre-line">{{detail.weekName}}</view>
</view>
</view>

5
src/patient/pages/enterInfo/index.json

@ -3,10 +3,9 @@ @@ -3,10 +3,9 @@
"navigationStyle": "custom",
"disableSwipeBack": true,
"usingComponents": {
"loginNavbar": "/components/loginNavbar/index",
"pageNavbar": "/components/pageNavbar/index",
"van-icon": "@vant/weapp/icon/index",
"van-divider": "@vant/weapp/divider/index",
"van-popup": "@vant/weapp/popup/index"
"van-popup": "@vant/weapp/popup/index",
"navbar": "/components/navbar/index"
}
}

172
src/patient/pages/enterInfo/index.scss

@ -2,77 +2,76 @@ @@ -2,77 +2,76 @@
min-height: 100vh;
position: relative;
box-sizing: border-box;
background-color: #fff;
background-color: rgba(255, 255, 255, 1);
.bg {
width: 100%;
height: 512rpx;
}
.page-container {
padding-bottom: 180rpx;
padding-bottom: 260rpx;
position: absolute;
width: 100%;
top: 0;
left: 0;
display: flex;
flex-direction: column;
.navbar {
flex-shrink: 0;
}
.title {
margin-top: 86rpx;
font-size: 56rpx;
color: #333333;
font-weight: bold;
text-align: center;
}
.content {
margin: 86rpx auto 0;
padding: 40rpx 64rpx 0;
width: 654rpx;
padding: 40rpx 40rpx 0;
box-sizing: border-box;
background: #ffffff;
box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(0, 0, 0, 0.09);
border: 2rpx solid rgba(224, 71, 117, 0.25);
border-radius: 24rpx;
.switch {
margin-bottom: 40rpx;
margin-bottom: 50rpx;
display: flex;
gap: 22rpx;
justify-content: space-between;
justify-content: center;
gap: 86rpx;
.item {
padding: 19rpx 19rpx 16rpx;
flex: 1;
background: #f2f2f2;
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 1px solid #d2d2d2;
text-align: center;
.icon {
width: 152rpx;
height: 90rpx;
.icon-wrap {
background: rgba(255, 255, 255, 1);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 1px solid rgba(255, 255, 255, 1);
text-align: center;
.icon {
display: block;
margin-bottom: -2px;
width: 186rpx;
height: 164rpx;
}
}
.name {
margin-top: 12rpx;
font-size: 28rpx;
color: #999999;
line-height: 32rpx;
margin-top: 24rpx;
font-size: 32rpx;
color: rgba(173, 172, 178, 1);
text-align: center;
}
&.active {
background-color: #ffffff;
border-color: #cf5375;
.icon-wrap {
border-color: rgba(185, 130, 255, 1);
}
.name {
color: #cf5375;
color: rgba(185, 130, 255, 1);
}
}
}
}
.divider {
font-size: 24rpx;
color: #aaaaaa;
.row-title {
margin-top: 48rpx;
margin-bottom: 24rpx;
font-size: 32rpx;
font-weight: bold;
color: rgba(33, 29, 46, 1);
.sub {
font-size: 32rpx;
color: rgba(105, 104, 110, 1);
font-weight: normal;
}
}
.row {
margin-bottom: 40rpx;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
gap: 22rpx;
&.row-age {
display: grid;
grid-template-columns: repeat(3, 1fr);
@ -110,97 +109,102 @@ @@ -110,97 +109,102 @@
height: 40rpx;
font-size: 32rpx;
color: #333;
background: #f2f2f2;
border: 2rpx solid #cccccc;
border-radius: 24rpx;
background: #f6f8f9;
border-radius: 116rpx;
}
.input-place {
color: rgba(173, 172, 178, 1);
}
.input-required {
display: flex;
justify-content: space-between;
align-items: flex-end;
&::after {
flex-shrink: 0;
margin-right: 60rpx;
content: '';
width: 12rpx;
height: 12rpx;
border-radius: 50%;
background: rgba(185, 130, 255, 1);
}
}
.item {
padding: 12rpx 24rpx;
flex: 1;
padding: 12rpx 62rpx;
opacity: 1;
border: 2rpx solid #cccccc;
font-size: 28rpx;
color: #999999;
font-size: 32rpx;
color: rgba(173, 172, 178, 1);
display: flex;
align-items: center;
justify-content: center;
border-radius: 12rpx;
background: linear-gradient(90deg, #fff 0%, #f9f9f9 100%);
border-radius: 116rpx;
background: rgba(246, 248, 249, 1);
.icon {
width: 64rpx;
height: 64rpx;
}
&.active {
color: #e04775;
background: linear-gradient(90deg, #fff 0%, #f9f9f9 100%);
border-color: #e04775;
}
}
.input-required {
display: flex;
justify-content: space-between;
align-items: center;
&::after {
margin-right: 60rpx;
content: '';
width: 12rpx;
height: 12rpx;
border-radius: 50%;
background: #e04775;
color: rgba(185, 130, 255, 1);
background: #fff;
border-color: rgba(185, 130, 255, 1);
}
}
.age-item {
margin-bottom: 24rpx;
width: 160rpx;
width: 208rpx;
height: 88rpx;
white-space: nowrap;
font-size: 28rpx;
font-size: 32rpx;
color: #999999;
display: flex;
align-items: center;
justify-content: center;
border-radius: 12rpx;
border-radius: 150rpx;
box-sizing: border-box;
border: 2rpx solid #d2d2d2;
&.active {
color: #e04775;
border-color: #e04775;
color: rgba(185, 130, 255, 1);
border-color: rgba(185, 130, 255, 1);
}
}
}
.tip {
margin-top: -26rpx;
font-size: 24rpx;
margin-top: -24rpx;
margin-left: 46rpx;
font-size: 28rpx;
line-height: 40rpx;
color: #cf5375;
color: rgba(185, 130, 255, 1);
}
}
}
.footer {
padding: 32rpx 40rpx 40rpx;
position: fixed;
left: 0;
bottom: 40rpx;
width: calc(100% - 96rpx);
flex-shrink: 0;
margin: 0 48rpx;
bottom: 0;
width: 100%;
box-sizing: border-box;
display: flex;
> view:not(:last-of-type),
> image {
margin-right: 30rpx;
}
background-color: #fff;
box-shadow: 0 -10rpx 10rpx rgba(204,204,204, 0.1);
.next {
flex: 1;
text-align: center;
height: 88rpx;
line-height: 88rpx;
text-align: center;
border: 2rpx solid #e04775;
border-radius: 24rpx;
border-radius: 100rpx;
font-size: 34rpx;
font-weight: bold;
background-color: #e04775;
background: linear-gradient(197deg, #ffbcf9 0%, #b982ff 100%);
color: #fff;
}
.cancel {
margin-top: 48rpx;
font-size: 32rpx;
color: rgba(173, 172, 178, 1);
text-align: center;
}
}
}

104
src/patient/pages/enterInfo/index.ts

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
import dayjs from 'dayjs';
const app = getApp<IAppOption>();
import dayjs from 'dayjs'
const app = getApp<IAppOption>()
Page({
data: {
@ -26,7 +26,7 @@ Page({ @@ -26,7 +26,7 @@ Page({
this.setData({
pagePath: options.page,
proces: options.proces,
});
})
app.zdWaitLogin({ isReg: false, loginPage: true }).then(() => {
app.getZdUserInfo(this, true, (zdUserInfo) => {
this.setData({
@ -34,81 +34,53 @@ Page({ @@ -34,81 +34,53 @@ Page({
name: zdUserInfo.PatientName,
gender: zdUserInfo.Gender,
ageRange: zdUserInfo.AgeRange,
});
});
app.zdMpBehavior({ PageName: 'PG_PATIENTINFOENTRY' });
});
})
})
app.zdMpBehavior({ PageName: 'PG_PATIENTINFOENTRY' })
})
},
handleRelationType(e: WechatMiniprogram.CustomEvent) {
const { id } = e.currentTarget.dataset;
const { id } = e.currentTarget.dataset
this.setData({
relationType: id,
});
})
},
handleGender(e: WechatMiniprogram.CustomEvent) {
const { id } = e.currentTarget.dataset;
const { id } = e.currentTarget.dataset
this.setData({
gender: id,
});
})
},
handleSelectAge(e: WechatMiniprogram.CustomEvent) {
const { id } = e.currentTarget.dataset;
const { id } = e.currentTarget.dataset
this.setData({
ageRange: id,
});
},
bindChangeDate(e: WechatMiniprogram.CustomEvent) {
const { key } = e.currentTarget.dataset;
this.setData({
[key]: e.detail.value,
});
},
handleDiagnoseTypeSave() {
const rangeIndex = this.data.selectDiagnoseTypeIndex;
const { DiagnoseType } = this.data;
const { id, name } = DiagnoseType[rangeIndex];
this.setData({
diagnoseTypeIndex: rangeIndex,
diagnoseTypeName: name,
diagnoseType: id,
});
this.handleDiagnoseTypeShow();
},
handleDiagnoseTypeShow() {
this.setData({
diagnoseTypeShow: !this.data.diagnoseTypeShow,
});
},
bindChange(e: WechatMiniprogram.CustomEvent) {
const rangeIndex = e.detail.value[0];
this.setData({
selectDiagnoseTypeIndex: rangeIndex,
});
})
},
handleSubmit() {
if (this.data.submiting) return;
app.zdMpBehavior({ PageName: 'BTN_PATIENTINFONEXT' });
const { name, gender, ageRange, relationType } = this.data;
const { registrationSource, registChannel, regBusinessId, WorkerId, IsAliQiWei } = app.globalData;
const { doctorId, inviteChan } = app.globalData.scene;
let toast = '';
if (this.data.submiting) return
app.zdMpBehavior({ PageName: 'BTN_PATIENTINFONEXT' })
const { name, gender, ageRange, relationType } = this.data
const { registrationSource, registChannel, regBusinessId, WorkerId, IsAliQiWei } = app.globalData
const { doctorId, inviteChan } = app.globalData.scene
let toast = ''
// if (!diagnosisTime) toast = "确诊时间不能为空";
// if (!birth) toast = "出生日期不能为空";
if (!gender) toast = '请选择性别';
if (!ageRange) toast = '请选择年龄范围';
if (!name) toast = '姓名不能为空';
if (!gender) toast = '请选择性别'
if (!ageRange) toast = '请选择年龄范围'
if (!name) toast = '姓名不能为空'
if (toast) {
wx.showToast({ title: toast, icon: 'none' });
return;
wx.showToast({ title: toast, icon: 'none' })
return
}
const backPage = app.globalData.backPage;
const backPage = app.globalData.backPage
const navUrl =
typeof backPage === 'string' && backPage.includes('liveResult') ? backPage : '/patient/pages/certReslove/index';
typeof backPage === 'string' && backPage.includes('liveResult') ? backPage : '/patient/pages/certReslove/index'
this.setData({
submiting: true,
});
})
wx.ajax({
method: 'POST',
url: '?r=zd/account/reg',
@ -133,21 +105,27 @@ Page({ @@ -133,21 +105,27 @@ Page({
app.updateLoginInfo(() => {
wx.reLaunch({
url: navUrl,
});
})
this.setData({
submiting: false,
});
});
})
})
})
.catch(() => {
this.setData({
submiting: false,
});
});
})
})
},
handleBack() {
wx.navigateBack();
wx.navigateBack({
fail() {
wx.reLaunch({
url: '/patient/pages/login/index',
})
},
})
},
});
})
export {};
export {}

170
src/patient/pages/enterInfo/index.wxml

@ -1,31 +1,21 @@ @@ -1,31 +1,21 @@
<view class="page">
<image class="bg" mode="widthFix" src="{{imageUrl}}za-images/1/login-bg.png?t={{Timestamp}}"></image>
<view class="page-container">
<pageNavbar></pageNavbar>
<view class="title">录入信息</view>
<navbar fixed title="录入信息" custom-style="background:{{background}}">
<van-icon name="arrow-left" slot="left" size="18px" color="#000" bind:tap="handleBack" />
</navbar>
<image class="bg" src="/images/bg10.png"></image>
<view class="page-container" style="padding-top:{{pageTop+24}}px;">
<view class="content">
<view class="viewider">
<van-divider contentPosition="center" textColor="#aaaaaa">选择身份</van-divider>
</view>
<view class="switch">
<!-- <view class="name {{relationType==1 && 'active'}}" bind:tap="handleRelationType" data-id="1">患者本人</view> -->
<!-- <view class="name {{relationType==2 && 'active'}}" bind:tap="handleRelationType" data-id="2">患者亲友</view> -->
<view class="item {{relationType==1 && 'active'}}" bind:tap="handleRelationType" data-id="1">
<image
wx:if="{{relationType==1}}"
class="icon"
src="{{imageUrl}}za-images/1/enter-switch1-active.png?t={{Timestamp}}"
></image>
<image wx:else class="icon" src="{{imageUrl}}za-images/1/enter-switch1.png?t={{Timestamp}}"></image>
<view class="icon-wrap">
<image class="icon" src="/images/icon28.png"></image>
</view>
<view class="name">患者本人</view>
</view>
<view class="item {{relationType==2 && 'active'}}" bind:tap="handleRelationType" data-id="2">
<image
wx:if="{{relationType==2}}"
class="icon"
src="{{imageUrl}}za-images/1/enter-switch2-active.png?t={{Timestamp}}"
></image>
<image wx:else class="icon" src="{{imageUrl}}za-images/1/enter-switch2.png?t={{Timestamp}}"></image>
<view class="icon-wrap">
<image class="icon" src="/images/icon29.png"></image>
</view>
<view class="name">患者亲友</view>
</view>
</view>
@ -33,28 +23,31 @@ @@ -33,28 +23,31 @@
<input
model:value="{{name}}"
class="input input-required"
placeholder-class="input-place"
focus
maxlength="{{8}}"
placeholder="怎么称呼{{relationType==1?'您':'患者'}}?"
/>
</view>
<view class="tip">请您输入真实姓名,便于医生识别随访</view>
<view class="viewider">
<van-divider contentPosition="center" textColor="#aaaaaa">患者性别</van-divider>
</view>
<view class="row-title">患者性别</view>
<view class="row">
<view class="item {{gender==2 && 'active'}}" bind:tap="handleGender" data-id="2">
<image class="icon" src="{{imageUrl}}za-images/1/woman{{gender==2 ? '-active' : ''}}.png?t={{Timestamp}}"></image>
<image
class="icon"
src="{{imageUrl}}za-images/1/woman{{gender==2 ? '-active' : ''}}.png?t={{Timestamp}}"
></image>
女性用户
</view>
<view class="item {{gender==1 && 'active'}}" bind:tap="handleGender" data-id="1">
<image class="icon" src="{{imageUrl}}za-images/1/man{{gender==1 ? '-active' : ''}}.png?t={{Timestamp}}"></image>
<image
class="icon"
src="{{imageUrl}}za-images/1/man{{gender==1 ? '-active' : ''}}.png?t={{Timestamp}}"
></image>
男性用户
</view>
</view>
<view class="viewider">
<van-divider contentPosition="center" textColor="#aaaaaa">患者年龄范围</van-divider>
</view>
<view class="row-title">患者年龄范围</view>
<view class="row row-age">
<view class="age-item {{ageRange==5 && 'active'}}" data-id="5" bind:tap="handleSelectAge">18岁以下</view>
<view class="age-item {{ageRange==1 && 'active'}}" data-id="1" bind:tap="handleSelectAge">18岁-44岁</view>
@ -62,109 +55,28 @@ @@ -62,109 +55,28 @@
<view class="age-item {{ageRange==3 && 'active'}}" data-id="3" bind:tap="handleSelectAge">60岁-74岁</view>
<view class="age-item {{ageRange==4 && 'active'}}" data-id="4" bind:tap="handleSelectAge">75岁以上</view>
</view>
<!-- <view class="row"> -->
<!-- <picker -->
<!-- class="picker" -->
<!-- value="{{birth}}" -->
<!-- bind:change="bindChangeDate" -->
<!-- mode="date" -->
<!-- fields="month" -->
<!-- end="{{currentDate}}" -->
<!-- data-key="birth" -->
<!-- > -->
<!-- <view class="select"> -->
<!-- <input -->
<!-- class="picker-input" -->
<!-- value="{{birth}}" -->
<!-- type="text" -->
<!-- placeholder="请选择{{relationType==1?'您':'患者'}}的出生年月" -->
<!-- disabled="{{true}}" -->
<!-- /> -->
<!-- <view class="icons"> -->
<!-- <view class="required"></view> -->
<!-- <van-icon class="icon" name="arrow-down" color="#CCCCCC" size="20" /> -->
<!-- </view> -->
<!-- </view> -->
<!-- </picker> -->
<!-- </view> -->
<!-- <view class="row"> -->
<!-- <picker -->
<!-- class="picker" -->
<!-- value="{{diagnosisTime}}" -->
<!-- bind:change="bindChangeDate" -->
<!-- fields="month" -->
<!-- mode="date" -->
<!-- end="{{currentDate}}" -->
<!-- data-key="diagnosisTime" -->
<!-- > -->
<!-- <view class="select"> -->
<!-- <input -->
<!-- class="picker-input" -->
<!-- value="{{diagnosisTime}}" -->
<!-- type="text" -->
<!-- placeholder="请选择{{relationType==1?'您':'患者'}}的确诊时间" -->
<!-- disabled="{{true}}" -->
<!-- /> -->
<!-- <view class="icons"> -->
<!-- <view class="required"></view> -->
<!-- <van-icon class="icon" name="arrow-down" color="#CCCCCC" size="20" /> -->
<!-- </view> -->
<!-- </view> -->
<!-- </picker> -->
<!-- </view> -->
<!-- <view class="row"> -->
<!-- <picker -->
<!-- class="picker" -->
<!-- bind:change="bindChange" -->
<!-- value="{{diagnoseTypeIndex}}" -->
<!-- range="{{DiagnoseType}}" -->
<!-- range-key="name" -->
<!-- disabled="{{true}}" -->
<!-- > -->
<!-- <view class="select" bind:tap="handleDiagnoseTypeShow"> -->
<!-- <input -->
<!-- wx:if="{{!diagnoseTypeName}}" -->
<!-- class="picker-input" -->
<!-- value="{{diagnoseTypeName}}" -->
<!-- type="text" -->
<!-- placeholder="请选择{{relationType==1?'您':'患者'}}的诊断分型" -->
<!-- disabled="{{true}}" -->
<!-- /> -->
<!-- <view class="select-content" wx:else>{{diagnoseTypeName}}</view> -->
<!-- <view class="icons"> -->
<!-- <van-icon class="icon" name="arrow-down" color="#CCCCCC" size="20" /> -->
<!-- </view> -->
<!-- </view> -->
<!-- </picker> -->
<!-- </view> -->
<view class="row-title">
是否有Graves病病史
<div class="sub">(非必填)</div>
</view>
<view class="row row-age">
<view class="age-item {{ageRange==5 && 'active'}}" data-id="5" bind:tap="handleSelectAge">是</view>
<view class="age-item {{ageRange==1 && 'active'}}" data-id="1" bind:tap="handleSelectAge">否</view>
<view class="age-item {{ageRange==2 && 'active'}}" data-id="2" bind:tap="handleSelectAge">不确定</view>
</view>
<view class="row-title">
是否有TED(甲状腺眼突)及其相关眼部手术史
<div class="sub">(非必填)</div>
</view>
<view class="row row-age">
<view class="age-item {{ageRange==5 && 'active'}}" data-id="5" bind:tap="handleSelectAge">是</view>
<view class="age-item {{ageRange==1 && 'active'}}" data-id="1" bind:tap="handleSelectAge">否</view>
<view class="age-item {{ageRange==2 && 'active'}}" data-id="2" bind:tap="handleSelectAge">不确定</view>
</view>
</view>
</view>
<view class="footer">
<view bind:tap="handleSubmit" class="next">立即进入</view>
<view bind:tap="handleBack" class="cancel">取消</view>
</view>
</view>
<van-popup
class="popup"
show="{{ diagnoseTypeShow }}"
position="bottom"
round
close-on-click-overlay
bind:close="handleDiagnoseTypeShow"
>
<view class="popup-title">
<view class="close" bind:tap="handleDiagnoseTypeShow">关闭</view>
<view class="sure" bind:tap="handleDiagnoseTypeSave">保存</view>
</view>
<picker-view
class="popup-picker"
indicator-style="height: 50px;"
style="width: 100%; height: 300px"
value="{{value}}"
bindchange="bindChange"
>
<picker-view-column>
<view class="picker-col" wx:for="{{DiagnoseType}}">{{item.name}}</view>
</picker-view-column>
</picker-view>
</van-popup>

953
src/patient/pages/index/index.scss

File diff suppressed because it is too large Load Diff

306
src/patient/pages/index/index.ts

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import dayjs from 'dayjs';
const app = getApp<IAppOption>();
const licia = require('miniprogram-licia');
import dayjs from 'dayjs'
const app = getApp<IAppOption>()
const licia = require('miniprogram-licia')
Page({
data: {
@ -12,6 +12,7 @@ Page({ @@ -12,6 +12,7 @@ Page({
zdUserInfo: {} as any,
anyWhere: false,
regGuide: true,
isLogin: 1,
adlList: [],
adlNum: '',
@ -47,49 +48,50 @@ Page({ @@ -47,49 +48,50 @@ Page({
options: {} as any,
},
onLoad(options) {
const systemInfo = wx.getSystemInfoSync();
const systemInfo = wx.getSystemInfoSync()
app.zdGetTheme().then((res) => {
this.setData({
theme: res,
});
});
})
})
this.setData({
sliderTop: systemInfo.screenHeight - 160,
options,
});
})
},
onShow() {
app.waitLogin({ type: [0, 1] }).then(() => {
app.zdMpBehavior({ PageName: 'PG_PATIENTHOME' });
app.zdMpBehavior({ PageName: 'PG_PATIENTHOME' })
this.setData({
anyWhere: app.globalData.anyWhere,
});
isLogin: app.globalData.isLogin,
})
if (this.data.options.es === '201501') {
app.globalData.IsAliQiWei = 1;
app.zdMpBehavior({ PageName: 'JUMP_PATIENT_HOME_INDEX' });
app.globalData.IsAliQiWei = 1
app.zdMpBehavior({ PageName: 'JUMP_PATIENT_HOME_INDEX' })
this.setData({
options: {},
});
})
}
app.getZdUserInfo(this, true, (zdUserInfo) => {
this.setData({
zdUserInfo,
publicCard: zdUserInfo.isShowFollowGuide == 1,
});
this.getPopup();
this.getConfig(zdUserInfo);
this.getSystemConfig();
})
this.getPopup()
this.getConfig(zdUserInfo)
this.getSystemConfig()
if (zdUserInfo.ExclusiveDoctorId > 0) {
this.getUnreadCount();
this.getUnreadCount()
}
if (zdUserInfo.UserType == 4) {
this.getLastRecord();
this.getLastRecord()
}
});
});
})
})
},
getUnreadCount() {
wx.ajax({
@ -99,8 +101,8 @@ Page({ @@ -99,8 +101,8 @@ Page({
}).then((res) => {
this.setData({
unreadCount: res,
});
});
})
})
},
getSystemConfig() {
wx.ajax({
@ -110,8 +112,8 @@ Page({ @@ -110,8 +112,8 @@ Page({
}).then((res) => {
this.setData({
systemConfig: res,
});
});
})
})
},
getLastRecord() {
wx.ajax({
@ -124,13 +126,13 @@ Page({ @@ -124,13 +126,13 @@ Page({
days: dayjs().diff(res.InjectionDate, 'day'),
...res,
},
});
});
})
})
},
getConfig(zdUserInfo: any) {
let UserType = zdUserInfo.UserType;
let UserType = zdUserInfo.UserType
if (UserType <= 2) {
UserType = 1;
UserType = 1
}
wx.ajax({
method: 'GET',
@ -140,8 +142,8 @@ Page({ @@ -140,8 +142,8 @@ Page({
res = res.map((item: any) => {
if (item.code == 'spread1' || item.code == 'spread2' || item.code == 'serviceConf') {
item.subList = item.subList.filter((subItem) => {
return subItem.showStatus == 1;
});
return subItem.showStatus == 1
})
}
// if (item.name === 'BANNER-MINIDOVTOR') {
// item.subList = item.subList
@ -152,29 +154,29 @@ Page({ @@ -152,29 +154,29 @@ Page({
// return subItem.linkUrl !== 'MINIDOCTOR-1.0' || zdUserInfo.EntryTwoPeriod === 1
// })
// }
return item;
});
return item
})
this.setData({
configList: res,
});
})
res.forEach((item) => {
if (item.code == 'article') {
this.getInfoList(item.configId);
this.getInfoList(item.configId)
}
if (item.code == 'story') {
this.getStoryList(item.configId);
this.getStoryList(item.configId)
}
if (item.code == 'adl') {
this.getAdl();
this.getAdl()
}
if (item.code == 'activity2') {
this.getActivity(item.configId, item.showNum, 'liveList');
this.getActivity(item.configId, item.showNum, 'liveList')
}
if (item.code == 'activity1') {
this.getActivity(item.configId, item.showNum, 'liveDownList');
this.getActivity(item.configId, item.showNum, 'liveDownList')
}
});
});
})
})
},
async getPopup() {
const data5 = await wx.ajax({
@ -183,15 +185,15 @@ Page({ @@ -183,15 +185,15 @@ Page({
data: {
Type: 5,
},
});
})
if (data5.showAlert) {
this.setData({
toastShow: data5.showAlert,
toastType: 'doubleStandards',
toastParams: data5,
});
})
return;
return
}
const data4 = await wx.ajax({
@ -200,28 +202,28 @@ Page({ @@ -200,28 +202,28 @@ Page({
data: {
Type: 4,
},
});
})
if (data4.showAlert) {
this.setData({
toastShow: data4.showAlert,
toastType: 'vipScan',
toastParams: {},
});
return;
})
return
}
const data1 = await wx.ajax({
method: 'GET',
url: '?r=zd/popup/info',
data: { Type: 1 },
});
})
if (!Array.isArray(data1)) {
this.setData({
toastShow: true,
toastType: 'healthCare',
toastParams: data1,
});
return;
})
return
}
const data2 = await wx.ajax({
@ -230,7 +232,7 @@ Page({ @@ -230,7 +232,7 @@ Page({
data: {
Type: 2,
},
});
})
if (data2.showAlert && this.data.zdUserInfo.UserType == 4) {
this.setData({
toastShow: data2.showAlert,
@ -238,7 +240,7 @@ Page({ @@ -238,7 +240,7 @@ Page({
toastParams: {
id: data2.articleId,
},
});
})
}
const data3 = await wx.ajax({
@ -247,25 +249,25 @@ Page({ @@ -247,25 +249,25 @@ Page({
data: {
Type: 6,
},
});
})
if (data3.showAlert) {
this.setData({
toastShow: data3.showAlert,
toastType: 'dedicatedDoctor',
toastParams: {},
});
})
}
const data6 = await wx.ajax({
method: 'GET',
url: '?r=zd/re-visit/get-popup-show-status',
});
})
if (data6.showStatus === 1) {
this.setData({
toastShow: true,
toastType: 'referral-toast',
toastParams: {},
});
})
}
},
setPopupInfo() {
@ -276,14 +278,14 @@ Page({ @@ -276,14 +278,14 @@ Page({
Type: 1,
Id: this.data.toastParams.Id,
},
}).then((_res) => {});
}).then((_res) => {})
},
setBannerClick() {
wx.ajax({
method: 'POST',
url: '?r=zd/nrdl/add-banner-click-record',
data: {},
});
})
},
getInfoList(configId: string) {
wx.ajax({
@ -296,8 +298,8 @@ Page({ @@ -296,8 +298,8 @@ Page({
}).then((res) => {
this.setData({
infoList: licia.chunk(res.list, 3),
});
});
})
})
},
getStoryList(configId: string) {
wx.ajax({
@ -310,8 +312,8 @@ Page({ @@ -310,8 +312,8 @@ Page({
}).then((res) => {
this.setData({
storyList: res.list,
});
});
})
})
},
getAdl() {
wx.ajax({
@ -319,7 +321,7 @@ Page({ @@ -319,7 +321,7 @@ Page({
url: '?r=zd/adl/index',
data: {},
}).then((res) => {
const newRecord = res.newRecord;
const newRecord = res.newRecord
this.setData({
adlList: res.list,
adlNum: res.count,
@ -328,8 +330,8 @@ Page({ @@ -328,8 +330,8 @@ Page({
...newRecord,
newCreateTime: dayjs(newRecord.CreateTime).format('YYYY-MM-DD'),
},
});
});
})
})
},
getActivity(ConfigId: string, count: number, key: string) {
wx.ajax({
@ -339,126 +341,126 @@ Page({ @@ -339,126 +341,126 @@ Page({
}).then((res) => {
this.setData({
[key]: res.list.map((item) => {
item.EndTimeValue = dayjs(item.EndTime).valueOf();
item.BeginTimeValue = dayjs(item.BeginTime).valueOf();
item.SignUpDeadlineValue = dayjs(item.SignUpDeadline).valueOf();
item.BeginDate = dayjs(item.BeginTime).format('YYYY-MM-DD');
item.EndDate = dayjs(item.EndTime).format('YYYY-MM-DD');
item.isDay = item.BeginDate == item.EndDate;
item.BeginHm = dayjs(item.BeginTime).format('HH:mm');
item.EndHm = dayjs(item.EndTime).format('HH:mm');
item.BeginTime = dayjs(item.BeginTime).format('YYYY-MM-DD HH:mm');
item.EndTime = dayjs(item.EndTime).format('YYYY-MM-DD HH:mm');
return item;
item.EndTimeValue = dayjs(item.EndTime).valueOf()
item.BeginTimeValue = dayjs(item.BeginTime).valueOf()
item.SignUpDeadlineValue = dayjs(item.SignUpDeadline).valueOf()
item.BeginDate = dayjs(item.BeginTime).format('YYYY-MM-DD')
item.EndDate = dayjs(item.EndTime).format('YYYY-MM-DD')
item.isDay = item.BeginDate == item.EndDate
item.BeginHm = dayjs(item.BeginTime).format('HH:mm')
item.EndHm = dayjs(item.EndTime).format('HH:mm')
item.BeginTime = dayjs(item.BeginTime).format('YYYY-MM-DD HH:mm')
item.EndTime = dayjs(item.EndTime).format('YYYY-MM-DD HH:mm')
return item
}),
});
});
})
})
},
routerTo(e) {
let { url, active, code } = e.currentTarget.dataset;
if (!url) return;
let { url, active, code } = e.currentTarget.dataset
if (!url) return
if (code === 'adl') {
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMEADLMODULE' });
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMEADLMODULE' })
}
if (code === 'drugs') {
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMEMEDICATIONMODULE' });
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMEMEDICATIONMODULE' })
}
if (code === 'story' && url === '/patient/pages/story/index') {
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMESTORIESVIEWALL' });
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMESTORIESVIEWALL' })
}
if (code === 'story' && url.includes('/patient/pages/publishStoryDetail/index')) {
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMESTORYCLICK' });
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMESTORYCLICK' })
}
if (code === 'activity2' && url === '/patient/pages/live/index') {
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMEONLINEACTIVITIESVIEWALL' });
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMEONLINEACTIVITIESVIEWALL' })
}
if (code === 'activity2' && url === '/patient/pages/live/index?index=0') {
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMEONLINEACTIVITIESMONTHLYPOSTER' });
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMEONLINEACTIVITIESMONTHLYPOSTER' })
}
if (code === 'activity2' && url.includes('/patient/pages/liveDetail/index')) {
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMEONLINEACTIVITIESCARD' });
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMEONLINEACTIVITIESCARD' })
}
if (code === 'activity1' && url === '/patient/pages/live/index') {
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMEOFFLINEACTIVITIESVIEWALL' });
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMEOFFLINEACTIVITIESVIEWALL' })
}
if (code === 'activity1' && url.includes('/patient/pages/liveDetail/index')) {
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMEOFFLINEACTIVITIESCARD' });
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMEOFFLINEACTIVITIESCARD' })
}
if (code === 'article' && url === '/patient/pages/repository/index') {
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMERECOMMENDEDREADINGVIEWALL' });
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMERECOMMENDEDREADINGVIEWALL' })
}
if (code === 'article' && url.includes('/patient/pages/repositoryDetail/index')) {
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMERECOMMENDEDREADINGARTICLE' });
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMERECOMMENDEDREADINGARTICLE' })
}
if (code === 'serviceConf') {
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMESERVICE' });
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMESERVICE' })
}
if (url === '/patient/pages/interactivePatient/index') {
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMEDOCTORCARD' });
app.zdMpBehavior({ PageName: 'BTN_PATIENTHOMEDOCTORCARD' })
}
if (url === 'NRDL') {
this.setBannerClick();
this.handleNRDL();
return;
this.setBannerClick()
this.handleNRDL()
return
}
if (url.includes('loginState')) {
url = url + encodeURIComponent(app.globalData.loginState);
url = url + encodeURIComponent(app.globalData.loginState)
app.zdPermissionVerification(2, 11, `/patient/pages/repository/index`).then(() => {
wx.navigateTo({
url,
});
});
return;
})
})
return
}
wx.navigateTo({
url,
fail() {
app.globalData.active = active;
app.globalData.active = active
wx.switchTab({
url,
});
})
},
});
})
},
handleReg() {
app.zdPermissionVerification(3, 0, '');
app.zdPermissionVerification(3, 0, '')
},
handleMiniDoctor(e) {
const { link } = e.currentTarget.dataset;
let period = '';
const { link } = e.currentTarget.dataset
let period = ''
if (link === 'MINIDOCTOR-1.0') {
period = '2';
period = '2'
}
wx.navigateTo({
url: `/patient/pages/webview/index?period=${period}`,
});
})
},
handleQuestion() {
app.zdPermissionVerification(2, 11, `/patient/pages/repository/index`).then(() => {
const webviewUrl = encodeURIComponent(
`${app.globalData.url}/zdcare/#/info?loginState=${app.globalData.loginState}`,
);
)
wx.navigateTo({
url: `/patient/pages/webview/index?url=${webviewUrl}`,
});
});
})
})
},
handleSlider() {
wx.ajax({
method: 'POST',
url: '?r=zd/nrdl/add-slide-click-record',
data: {},
});
this.handleNRDL();
})
this.handleNRDL()
},
handleNRDL() {
app.zdPermissionVerification(3, 12, `/patient/pages/index/index`).then(() => {
wx.navigateTo({
url: `/patient/pages/nrdl/index`,
});
})
// if (this.data.zdUserInfo.has7DayAdl === 1) {
// wx.navigateTo({
// url: `/patient/pages/nrdl/index`,
@ -469,57 +471,57 @@ Page({ @@ -469,57 +471,57 @@ Page({
// toastType: "ndrlAldAlert",
// });
// }
});
})
},
routerVipTo() {
const { MedicineAuditSwitch, UseDrugsAuditStatus, isFollow } = this.data.zdUserInfo;
const { MedicineAuditSwitch, UseDrugsAuditStatus, isFollow } = this.data.zdUserInfo
if (MedicineAuditSwitch === '0') {
wx.navigateTo({
url: '/patient/pages/vipLogin/index',
});
})
} else if (MedicineAuditSwitch === '1') {
const pendPath = {
0: '/patient/pages/vipPending/index',
1: '/patient/pages/vipStartPending/index',
}[isFollow];
}[isFollow]
const url = {
1: pendPath,
2: '/patient/pages/vipReject/index',
}[UseDrugsAuditStatus];
}[UseDrugsAuditStatus]
wx.navigateTo({
url: url || '/patient/pages/vipCert/index',
});
})
} else {
wx.showToast({
icon: 'none',
title: '工程师正在努力建设中,敬请期待!',
});
})
}
},
handleToastOk() {
const { toastType } = this.data;
const { toastType } = this.data
if (toastType === 'vipScan') {
this.routerVipTo();
this.handleToastCancel();
this.routerVipTo()
this.handleToastCancel()
} else if (toastType === 'aldAlert') {
wx.navigateTo({
url: '/patient/pages/adl/index',
});
this.handleToastCancel();
})
this.handleToastCancel()
} else if (toastType === 'healthCare') {
this.setPopupInfo();
this.handleNRDL();
this.handleToastCancel();
this.setPopupInfo()
this.handleNRDL()
this.handleToastCancel()
} else if (toastType === 'ndrlAldAlert') {
wx.navigateTo({
url: '/patient/pages/adl/index?nrdl=1',
});
this.handleToastCancel();
})
this.handleToastCancel()
} else if (toastType === 'doubleStandards') {
wx.navigateTo({
url: '/patient/pages/adl/index',
});
this.handleToastCancel();
})
this.handleToastCancel()
} else if (toastType === 'dedicatedDoctor') {
wx.ajax({
method: 'POST',
@ -530,23 +532,23 @@ Page({ @@ -530,23 +532,23 @@ Page({
}).then((_res) => {
wx.navigateTo({
url: '/patient/pages/interactivePatient/index',
});
});
this.handleToastCancel(null, false);
})
})
this.handleToastCancel(null, false)
} else if (toastType === 'referral-toast') {
this.setData({
referralFromShow: true,
});
})
wx.ajax({
method: 'POST',
url: '?r=zd/re-visit/update-popup-show-status',
data: {},
});
this.handleToastCancel(null, false);
})
this.handleToastCancel(null, false)
}
},
handleToastCancel(_e = null, sure = true) {
const { toastType } = this.data;
const { toastType } = this.data
if (toastType === 'doubleStandards' && sure) {
wx.ajax({
method: 'POST',
@ -554,7 +556,7 @@ Page({ @@ -554,7 +556,7 @@ Page({
data: {
Type: 5,
},
});
})
} else if (toastType === 'dedicatedDoctor' && sure) {
wx.ajax({
method: 'POST',
@ -562,49 +564,49 @@ Page({ @@ -562,49 +564,49 @@ Page({
data: {
Type: 6,
},
});
})
} else if (toastType === 'referral-toast') {
wx.ajax({
method: 'POST',
url: '?r=zd/re-visit/update-popup-show-status',
data: {},
});
})
}
this.setData({
toastShow: false,
toastType: '',
toastParams: '',
});
})
},
handlePublic() {
this.setData({
toastShow: true,
toastType: 'public-toast',
toastParams: {},
});
this.handlePublicClose();
})
this.handlePublicClose()
},
handlePublicClose() {
this.setData({
publicCard: false,
});
})
wx.ajax({
method: 'POST',
url: '?r=zd/account/add-user-subscribe-guide-record',
data: {},
});
})
},
handleMp(e: any) {
const { code } = e.currentTarget.dataset;
const { code } = e.currentTarget.dataset
const PageName = {
spread1: 'BTN_PATIENTHOMEBANNER1',
spread2: 'BTN_PATIENTHOMEBANNER2',
}[code];
app.zdMpBehavior({ PageName });
}[code]
app.zdMpBehavior({ PageName })
},
handleRegClose() {
this.setData({
regGuide: false,
});
})
},
});
})

447
src/patient/pages/index/index.wxml

@ -1,39 +1,17 @@ @@ -1,39 +1,17 @@
<view class="page">
<image wx:if="{{theme === 'DRUG'}}" class="drug-bg" src="{{imageUrl}}za-images/1/my-bg.png?t={{Timestamp}}"></image>
<image wx:else class="bg" mode="widthFix" src="{{imageUrl}}za-images/1/index-bg.png?t={{Timestamp}}"></image>
<view
class="page"
style="background: url('/images/bg10.png') no-repeat top center/100% 610rpx;padding-top:{{pageTop+22}}px;"
>
<view class="page-container">
<pageNavbar drug="{{theme === 'DRUG'}}"></pageNavbar>
<view class="user" wx:if="{{zdUserInfo.UserType!=1}}">
<image
class="avatar"
src="{{zdUserInfo.UserImg}}"
bind:tap="routerTo"
data-url="/patient/pages/getUserInfo/index"
></image>
<view class="content">
<view class="name">{{today}}</view>
<view class="info" wx:if="{{zdUserInfo.UserType>=3}}">
今天是重症肌无力加油站陪伴你的第
<text class="num">{{zdUserInfo.JoinDays}}</text>
</view>
</view>
</view>
<pageNavbar></pageNavbar>
<!-- style="background: url({{imageUrl}}za-images/2/doctor-home{{theme === 'DRUG' ? '-drug':''}}-bg.png?t={{Timestamp}}) no-repeat 16rpx 9rpx/606rpx 173rpx,{{theme === 'DRUG'? 'linear-gradient( 360deg, #25D9C8 0%, #25D9C8 73%, #B5EFEA 100%)':'linear-gradient( 360deg, #CF5375 0%, #CF5375 74%, #EE9FB9 100%) no-repeat top center/100% 100%'}}" -->
<view
wx:if="{{zdUserInfo.UserType>=3}}"
class="referral"
bind:tap="routerTo"
data-url="/patient/pages/referral/index"
>
<image class="referral-img" src="{{imageUrl}}za-images/5/referral-card.png?t={{Timestamp}}"></image>
</view>
<view
class="doctor {{theme === 'DRUG' && 'doctor-drugs'}}"
class="doctor"
wx:if="{{zdUserInfo.ExclusiveDoctorId}}"
style="background: url({{imageUrl}}za-images/2/doctor-home{{theme === 'DRUG' ? '-drug':''}}-bg.png?t={{Timestamp}}) no-repeat 16rpx 9rpx/606rpx 173rpx,{{theme === 'DRUG'? 'linear-gradient( 360deg, #25D9C8 0%, #25D9C8 73%, #B5EFEA 100%)':'linear-gradient( 360deg, #CF5375 0%, #CF5375 74%, #EE9FB9 100%) no-repeat top center/100% 100%'}}"
bind:tap="routerTo"
data-url="/patient/pages/interactivePatient/index"
>
<view class="title">我的专属医生</view>
<view class="container">
<view class="avatar">
<image class="a-img" mode="aspectFill" src="{{zdUserInfo.ExclusiveDoctorImg}}" alt=""></image>
@ -42,7 +20,7 @@ @@ -42,7 +20,7 @@
<view class="name-wrap">
<view class="name">
<view class="n-content">{{zdUserInfo.ExclusiveDoctorName}}</view>
<image wx:if="{{unreadCount}}" class="icon" src="{{imageUrl}}za-images/icon5.png?t={{Timestamp}}"></image>
<image wx:if="{{unreadCount}}" class="icon" src="{{imageUrl}}/icon31.png?t={{Timestamp}}"></image>
</view>
</view>
<view class="content" wx:if="{{unreadCount}}">医生给您留言了,记得查看!</view>
@ -56,10 +34,7 @@ @@ -56,10 +34,7 @@
</view>
</view>
</view>
<view class="btn">
{{unreadCount ? '去看看':'去咨询'}}
<van-icon name="arrow" />
</view>
<view class="btn">{{unreadCount ? '去看看':'去咨询'}}</view>
</view>
</view>
<block wx:for="{{configList}}" wx:key="index" wx:for-item="card" wx:for-index="cIndex">
@ -98,233 +73,45 @@ @@ -98,233 +73,45 @@
</swiper-item>
</swiper>
</view>
<view class="adl {{theme === 'DRUG' && 'adl-drugs'}}" wx:if="{{card.code == 'adl' && card.showStatus == 1}}">
<image
class="adl-bg"
src="{{imageUrl}}za-images/double-standard/{{theme === 'DRUG'?'home-adl-drug-bg':'home-adl-bg'}}.png?t={{Timestamp}}"
></image>
<view class="adl-container">
<view
class="other"
catch:tap="routerTo"
data-url="/gift/pages/myHealthRecord/index"
data-code="{{card.code}}"
>
<image
class="adl-title"
src="{{imageUrl}}za-images/double-standard/home-adl-title{{theme === 'DRUG'?'-drug':''}}.png?t={{Timestamp}}"
></image>
<!-- <view class="title">自在生活<text class="blod">“双达标”</text></view> -->
<!-- <view class="num">控制症状 减少副作用</view> -->
<view
class="status"
wx:if="{{adlNewRecord.TotalScore}}"
catch:tap="routerTo"
data-url="/patient/pages/adl/index"
data-code="{{card.code}}"
>
最近一次测评 {{adlNewRecord.newCreateTime}}
</view>
<view
class="btn"
wx:else
catch:tap="routerTo"
data-url="/patient/pages/adl/index"
data-code="{{card.code}}"
>
立即自测
<image
wx:if="{{theme === 'DRUG'}}"
class="icon"
src="{{imageUrl}}za-images/1.5/btn-drug.png?t={{Timestamp}}"
></image>
<image wx:else class="icon" src="{{imageUrl}}za-images/1/arrow-right.png?t={{Timestamp}}"></image>
</view>
<view class="o-aside">
<image
class="badge"
src="{{imageUrl}}za-images/double-standard/{{theme === 'DRUG'?'home-adl-drug-badge':'home-adl-badge'}}.png?t={{Timestamp}}"
></image>
</view>
</view>
</view>
</view>
<view class="drug-record" wx:if="{{card.code == 'drugs' && card.showStatus == 1}}">
<block wx:if="{{detail.Id}}">
<view class="d-header">
<view class="status">
<view class="icons">
<image class="icon" src="{{imageUrl}}za-images/1.5/drug-icon.png?t={{Timestamp}}"></image>
</view>
<view class="name">连续治疗 {{detail.Times}} 次</view>
</view>
<view
class="more"
catch:tap="routerTo"
data-url="/patient/pages/myHealthRecord/index"
data-code="{{card.code}}"
>
查看健康档案
<van-icon name="arrow" />
</view>
</view>
<view class="d-line"></view>
<view class="date">
<view class="d-name">上次治疗日期</view>
<view class="d-str">
{{detail.InjectionDate}}
<view class="week">{{detail.weekName}}</view>
</view>
</view>
<view class="d-card">
<view class="dc-header">距离上次用药</view>
<view class="dc-content">
<view class="c-l today" wx:if="{{detail.days == 0}}">
<view class="box">今天治疗</view>
</view>
<view class="c-l" wx:else>
<view class="box">{{detail.days}}</view>
<view class="sub">天</view>
</view>
<view
class="more"
catch:tap="routerTo"
data-url="/patient/pages/drugRecord/index"
data-code="{{card.code}}"
>
更新记录
<van-icon name="arrow" />
</view>
</view>
</view>
</block>
<view class="d-noraml" wx:else>
<view class="n-left">
<view class="title">
<view>展示您的注射信息</view>
<view>开启您的专属服务</view>
</view>
<view class="btn" catch:tap="routerTo" data-url="/patient/pages/drugRecord/index" data-code="{{card.code}}">
开始记录
<image class="icon" src="{{imageUrl}}za-images/1.5/btn-drug.png?t={{Timestamp}}"></image>
</view>
</view>
<view class="n-right">
<view class="item">
<view class="icon">
<image src="{{imageUrl}}za-images/1.5/d1.png?t={{Timestamp}}"></image>
</view>
<view class="name">ADL提醒</view>
</view>
<view class="item">
<view class="icon">
<image src="{{imageUrl}}za-images/1.5/d2.png?t={{Timestamp}}"></image>
</view>
<view class="name">随访服务</view>
</view>
<view class="item">
<view class="icon">
<image src="{{imageUrl}}za-images/1.5/d3.png?t={{Timestamp}}"></image>
</view>
<view class="name">健康报告</view>
</view>
</view>
</view>
</view>
<view class="live" wx:if="{{card.code == 'activity1' && card.showStatus == 1 && liveDownList.length}}">
<view class="live-up-new" wx:if="{{card.code == 'activity2' && card.showStatus == 1 }}">
<view class="header" wx:if="{{card.name}}">
<view class="title">{{card.name}}</view>
<view
class="more"
bind:tap="routerTo"
data-url="/patient/pages/live/index"
data-active="1"
data-code="{{card.code}}"
>
查看全部
<van-icon name="arrow" />
</view>
<!-- <view bind:tap="routerTo" class="more" data-url="/patient/pages/repository/index" data-code="{{card.code}}"> -->
<!-- 查看全部 -->
<!-- <van-icon name="arrow" /> -->
<!-- </view> -->
</view>
<view class="live-container">
<view class="scroll">
<view
class="live-item"
wx:for="{{liveDownList}}"
wx:key="index"
bind:tap="routerTo"
data-url="/patient/pages/liveDetail/index?id={{item.Id}}"
data-code="{{card.code}}"
>
<image class="live-img" mode="aspectFill" src="{{item.IntroductionUrl}}"></image>
</view>
</view>
<view
class="l-banner"
bind:tap="routerTo"
data-url="/patient/pages/live/index?index=0"
data-code="{{card.code}}"
>
<image class="live-img" mode="aspectFill" src="{{imageUrl}}za-images/live-banner.png?t={{Timestamp}}"></image>
</view>
</view>
<!-- 隐藏老的直播模块 -->
<view class="live-up" wx:if="{{card.code == 'activity2' && card.showStatus == 1 && false }}">
<view class="header" wx:if="{{card.name}}">
<view class="title">{{card.name}}</view>
<view class="list">
<view
class="more"
class="item"
wx:for="{{liveList}}"
wx:key="index"
bind:tap="routerTo"
data-url="/patient/pages/live/index"
data-active="0"
data-url="/patient/pages/liveDetail/index?id={{item.Id}}"
data-code="{{card.code}}"
>
查看全部
<van-icon name="arrow" />
</view>
</view>
<view class="live-container {{theme === 'DRUG' && 'live-container-drugs'}}">
<view class="scroll">
<view
class="live-item"
bind:tap="routerTo"
data-url="/patient/pages/live/index?index=0"
data-code="{{card.code}}"
>
<image class="live-img" mode="aspectFill" src="{{imageUrl}}za-images/1/3.png?t={{Timestamp}}"></image>
</view>
<view
class="item"
wx:for="{{liveList}}"
wx:key="index"
bind:tap="routerTo"
data-url="/patient/pages/liveDetail/index?id={{item.Id}}"
data-code="{{card.code}}"
>
<view class="photo-wrap">
<image class="photo" src="{{item.IntroductionUrl}}"></image>
<view class="status {{item.Status != 2 && 'bad'}}">
<view class="dot"></view>
{{liveStatus[item.Status]}}
</view>
<!-- <view class="date"> -->
<!-- <view class="d-title"> -->
<!-- <van-icon class="icon" name="play" /> -->
<!-- 会议时间 -->
<!-- </view> -->
<!-- <block wx:if="{{item.isDay}}"> -->
<!-- <view class="ymd">{{item.BeginDate}}</view> -->
<!-- <view class="hm">{{item.BeginHm}}-{{item.EndHm}}</view> -->
<!-- </block> -->
<!-- <block wx:else> -->
<!-- <view class="ymd">{{item.BeginTime}}</view> -->
<!-- <view class="hm">{{item.EndTime}}</view> -->
<!-- </block> -->
<!-- </view> -->
<view class="photo-wrap">
<image class="photo" src="{{item.PosterUrl}}"></image>
</view>
<view class="content">
<view class="name">{{item.Name}}</view>
<view class="labels" wx:if="{{item.doctorName}}">
{{item.doctorName}}
<text class="line" wx:if="{{item.hospitalName}}"></text>
{{item.hospitalName}}
</view>
<view class="content">
<view class="name">{{item.MasterName}}</view>
<view class="labels">
<!-- <view class="label" wx:for="{{item.Labels}}" wx:for-item="label" wx:key="index">{{label}}</view> -->
<view class="label">{{item.MasterTitle}}</view>
</view>
<view class="c-footer">
<view class="date">{{item.BeginTime}}</view>
<view class="btn">
<image
class="icon"
src="{{imageUrl}}za-images/{{theme === 'DRUG'?1.5:1}}/live-play.png?t={{Timestamp}}"
></image>
<image class="icon" src="/images/icon30.png"></image>
{{item.Status==2?'参会':'查看'}}
</view>
</view>
@ -332,115 +119,6 @@ @@ -332,115 +119,6 @@
</view>
</view>
</view>
<view class="live-up-new" wx:if="{{card.code == 'activity2' && card.showStatus == 1 }}">
<view
class="l-banner"
bind:tap="routerTo"
data-url="/patient/pages/live/index?index=0"
data-code="{{card.code}}"
>
<image class="live-img" mode="aspectFill" src="{{imageUrl}}za-images/live-banner.png?t={{Timestamp}}"></image>
</view>
<view
class="item"
wx:for="{{liveList}}"
wx:key="index"
bind:tap="routerTo"
data-url="/patient/pages/liveDetail/index?id={{item.Id}}"
data-code="{{card.code}}"
>
<view class="photo-wrap">
<image class="photo" src="{{item.PosterUrl}}"></image>
<view class="status {{item.Status == 2 && 'active'}}">
<image
wx:if="{{item.Status==2}}"
class="icon"
src="{{imageUrl}}za-images/icon2.png?t={{Timestamp}}"
></image>
{{liveStatus[item.Status]}}
</view>
<!-- <view class="date"> -->
<!-- <view class="d-title"> -->
<!-- <van-icon class="icon" name="play" /> -->
<!-- 会议时间 -->
<!-- </view> -->
<!-- <block wx:if="{{item.isDay}}"> -->
<!-- <view class="ymd">{{item.BeginDate}}</view> -->
<!-- <view class="hm">{{item.BeginHm}}-{{item.EndHm}}</view> -->
<!-- </block> -->
<!-- <block wx:else> -->
<!-- <view class="ymd">{{item.BeginTime}}</view> -->
<!-- <view class="hm">{{item.EndTime}}</view> -->
<!-- </block> -->
<!-- </view> -->
</view>
<view class="content">
<view class="name">{{item.Name}}</view>
<view class="labels" wx:if="{{item.doctorName}}">
{{item.doctorName}}{{item.hospitalName ? ' | ' + item.hospitalName : ''}}
</view>
<view class="c-footer">
<view class="date">{{item.BeginTime}}</view>
<view class="btn">
<image class="icon" src="{{imageUrl}}za-images/icon1.png?t={{Timestamp}}"></image>
{{item.Status==2?'参会':'查看'}}
</view>
</view>
</view>
</view>
</view>
<view class="story" wx:if="{{card.code == 'story' && card.showStatus == 1}}">
<view class="header" wx:if="{{card.name}}">
<view class="title">{{card.name}}</view>
<view class="more" bind:tap="routerTo" data-url="/patient/pages/story/index" data-code="{{card.code}}">
查看全部
<van-icon name="arrow" />
</view>
</view>
<view class="story-container {{theme === 'DRUG' && 'story-container-drugs'}}">
<view class="scroll">
<view
class="story-item"
wx:for="{{storyList}}"
bind:tap="routerTo"
data-url="/patient/pages/publishStoryDetail/index?id={{item.Id}}"
data-code="{{card.code}}"
>
<image class="story-img" mode="aspectFill" src="{{item.ListPicLink}}"></image>
<view class="story-content">{{item.Title}}</view>
</view>
</view>
</view>
</view>
<view class="server" wx:if="{{card.code == 'serviceConf' && card.showStatus == 1}}">
<view class="header" wx:if="{{card.name}}">
<view class="title">{{card.name}}</view>
</view>
<view class="server-container">
<view class="two" wx:if="{{card.showType==1}}">
<block wx:for="{{card.subList}}" wx:key="index">
<!-- <view class="item" bind:tap="handleMiniDoctor" wx:if="{{item.showStatus==1 && index == 0}}"> -->
<!-- <image class="item-bg" src="{{item.img}}"></image> -->
<!-- </view> -->
<view class="item" bind:tap="routerTo" data-url="{{item.linkUrl}}" data-code="{{card.code}}">
<image class="item-bg" src="{{item.img}}"></image>
</view>
</block>
</view>
<view class="four" wx:if="{{card.showType==2}}">
<block wx:for="{{card.subList}}" wx:key="index">
<!-- <view class="item" bind:tap="handleMiniDoctor" wx:if="{{item.showStatus==1 && index==0}}"> -->
<!-- <image class="icon" src="{{item.img}}"></image> -->
<!-- <view class="name">{{item.title}}</view> -->
<!-- </view> -->
<view class="item" bind:tap="routerTo" data-url="{{item.linkUrl}}" data-code="{{card.code}}">
<image class="icon" src="{{item.img}}"></image>
<view class="name">{{item.title}}</view>
</view>
</block>
</view>
</view>
</view>
<view class="book" wx:if="{{card.code == 'article' && card.showStatus == 1 && infoList.length}}">
<view class="header" wx:if="{{card.name}}">
<view class="title">{{card.name}}</view>
@ -449,7 +127,6 @@ @@ -449,7 +127,6 @@
<van-icon name="arrow" />
</view>
</view>
<!-- style="height:{{infoList[0].length * 240}}rpx" -->
<swiper
class="swiper"
indicator-active-color="rgba(39, 58, 101, 0.5)"
@ -468,7 +145,7 @@ @@ -468,7 +145,7 @@
>
<view class="cover">
<image class="photo" mode="aspectFill" src="{{item.TitlePicLink}}"></image>
<view class="label">{{item.CateName}}</view>
<!-- <view class="label">{{item.CateName}}</view> -->
</view>
<view class="content">
<view class="title">{{item.Title}}</view>
@ -481,13 +158,8 @@ @@ -481,13 +158,8 @@
</block>
</view>
<view
class="reg"
wx:if="{{regGuide && (zdUserInfo.UserType==1 || (zdUserInfo.UserType==2 && zdUserInfo.AuditStatus==0))}}"
bind:tap="handleReg"
>
<text class="blod">注册</text>
后享受全面重症肌无力患者服务
<view class="reg" wx:if="{{regGuide && isLogin === 0}}" bind:tap="handleReg">
注册后享受全面TED患者服务
<van-icon name="arrow" />
<image
catch:tap="handleRegClose"
@ -495,28 +167,15 @@ @@ -495,28 +167,15 @@
src="{{imageUrl}}za-images/5/reg-close.png?t={{Timestamp}}"
></image>
</view>
<view
class="reg-audit"
wx:elif="{{regGuide && zdUserInfo.UserType==2 && (zdUserInfo.AuditStatus==1 || zdUserInfo.AuditStatus==2 )}}"
bind:tap="handleReg"
>
您的认证正在审核中,审核通过后获取全部服务
<van-icon name="arrow" />
<image
catch:tap="handleRegClose"
class="reg-close"
src="{{imageUrl}}za-images/5/reg-close.png?t={{Timestamp}}"
></image>
</view>
<view wx:elif="{{!anyWhere && publicCard}}" class="public" bind:tap="handlePublic">
<image class="logo" src="{{imageUrl}}za-images/5/logo1.png?t={{Timestamp}}"></image>
<view class="wrap">
<view class="title">关注公众号</view>
<view class="content">重要提醒不丢失~</view>
</view>
<view class="btn">去关注</view>
<image catch:tap="handlePublicClose" class="close" src="{{imageUrl}}za-images/5/close1.png?t={{Timestamp}}"></image>
</view>
<!-- <view wx:elif="{{!anyWhere && publicCard}}" class="public" bind:tap="handlePublic"> -->
<!-- <image class="logo" src="{{imageUrl}}za-images/5/logo1.png?t={{Timestamp}}"></image> -->
<!-- <view class="wrap"> -->
<!-- <view class="title">关注公众号</view> -->
<!-- <view class="content">重要提醒不丢失~</view> -->
<!-- </view> -->
<!-- <view class="btn">去关注</view> -->
<!-- <image catch:tap="handlePublicClose" class="close" src="{{imageUrl}}za-images/5/close1.png?t={{Timestamp}}"></image> -->
<!-- </view> -->
</view>
<movable-area class="slidearea">
@ -543,10 +202,6 @@ @@ -543,10 +202,6 @@
</movable-view>
</movable-area>
<!-- <view class="question" bind:tap="handleQuestion"> -->
<!-- <image class="question-img" src="{{imageUrl}}za-images/1.5/hoem-question.png?t={{Timestamp}}"></image> -->
<!-- </view> -->
<toast
bind:cancel="handleToastCancel"
bind:ok="handleToastOk"

5
src/patient/pages/interactivePatient/index.json

@ -1,9 +1,10 @@ @@ -1,9 +1,10 @@
{
"navigationBarTitleText": "互动",
"navigationStyle": "default",
"navigationStyle": "custom",
"usingComponents": {
"van-icon": "@vant/weapp/icon/index",
"van-loading": "@vant/weapp/loading/index",
"referralFrom": "/components/referralFrom/index"
"referralFrom": "/components/referralFrom/index",
"navbar": "/components/navbar/index"
}
}

71
src/patient/pages/interactivePatient/index.scss

@ -7,31 +7,33 @@ page { @@ -7,31 +7,33 @@ page {
display: flex;
flex-direction: column;
justify-content: space-between;
box-sizing: border-box;
.page-header {
flex-shrink: 0;
margin: 0 30rpx;
padding: 30rpx;
display: flex;
align-items: center;
justify-content: space-between;
border-radius: 0 0 24rpx 24rpx;
border-radius: 24rpx;
background-color: #fff;
.avatar {
width: 104rpx;
height: 104rpx;
width: 96rpx;
height: 96rpx;
border-radius: 50%;
}
.wrap {
flex: 1;
padding: 0 20rpx;
.name {
font-size: 40rpx;
color: rgba(40, 48, 49, 1);
font-size: 36rpx;
color: rgba(33, 29, 46, 1);
font-weight: bold;
}
.content {
margin-top: 8rpx;
font-size: 28rpx;
color: rgba(154, 161, 162, 1);
color: rgba(173, 172, 178, 1);
display: flex;
gap: 8rpx;
align-items: start;
@ -41,17 +43,18 @@ page { @@ -41,17 +43,18 @@ page {
flex-shrink: 0;
height: 28rpx;
font-size: 22rpx;
color: rgba(229, 154, 41, 1);
color: #fff;
line-height: 1;
text-align: center;
line-height: 28rpx;
background: rgba(229, 154, 41, 0.29);
border-radius: 8rpx 8rpx 8rpx 8rpx;
background: linear-gradient(90deg, #ffd650 0%, #f8a61a 100%);
border-radius: 4rpx;
}
}
}
.more {
color: #d4d9da;
color: rgba(173, 172, 178, 1);
font-size: 20rpx;
}
}
.page-container {
@ -86,8 +89,8 @@ page { @@ -86,8 +89,8 @@ page {
.guide {
margin-bottom: 32rpx;
padding: 32rpx 30rpx;
border-radius: 0 32rpx 32rpx;
background: linear-gradient(13deg, #ffffff 8%, #e8f0f1 100%);
border-radius: 32rpx 32rpx;
background: linear-gradient(180deg, #f6efff 0%, #ffffff 100%);
border: 2rpx solid #ffffff;
.title {
font-size: 32rpx;
@ -102,10 +105,10 @@ page { @@ -102,10 +105,10 @@ page {
.list {
.l-item {
display: flex;
align-items: center;
gap: 16rpx;
margin-bottom: 30rpx;
.order {
margin-top: 6rpx;
flex-shrink: 0;
width: 28rpx;
height: 28rpx;
@ -115,11 +118,11 @@ page { @@ -115,11 +118,11 @@ page {
justify-content: center;
color: rgba(255, 255, 255, 1);
border-radius: 6rpx;
background: #67baca;
background: linear-gradient(197deg, #ffbcf9 0%, #b982ff 100%);
}
.content {
font-size: 32rpx;
color: rgba(40, 48, 49, 1);
color: rgba(33, 29, 46, 1);
}
}
}
@ -356,7 +359,6 @@ page { @@ -356,7 +359,6 @@ page {
.list {
.l-item {
display: flex;
align-items: center;
gap: 16rpx;
margin-bottom: 30rpx;
.order {
@ -391,8 +393,8 @@ page { @@ -391,8 +393,8 @@ page {
.message {
margin-bottom: 32rpx;
padding: 26rpx 32rpx;
background: #67baca;
border-radius: 32rpx 0 32rpx 32rpx;
background: rgba(185, 130, 255, 1);
border-radius: 32rpx;
font-size: 32rpx;
color: #fff;
white-space: pre-line;
@ -499,9 +501,9 @@ page { @@ -499,9 +501,9 @@ page {
flex-shrink: 0;
padding: 13rpx 22rpx;
font-size: 32rpx;
color: rgba(40, 48, 49, 1);
border-radius: 129rpx;
background-color: rgba(242, 244, 245, 1);
color: rgba(33, 29, 46, 1);
border-radius: 8rpx;
background-color: rgba(246, 248, 249, 1);
display: flex;
align-items: center;
gap: 8rpx;
@ -517,7 +519,7 @@ page { @@ -517,7 +519,7 @@ page {
}
&.active {
color: #fff;
background-color: rgba(103, 186, 202, 1);
background-color: rgba(185, 130, 255, 1);
.icon {
display: none;
}
@ -531,29 +533,40 @@ page { @@ -531,29 +533,40 @@ page {
max-height: 35vh;
overflow-y: auto;
.l-item {
padding: 20rpx 0;
padding: 32rpx 0;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid rgba(39, 58, 101, 0.1);
&:last-of-type {
border: none;
}
.order {
width: 28rpx;
height: 28rpx;
font-size: 24rpx;
font-size: 40rpx;
font-weight: bold;
display: flex;
align-items: center;
justify-content: center;
color: rgba(255, 255, 255, 1);
color: rgba(185, 130, 255, 1);
border-radius: 6rpx;
background: #67baca;
}
.content {
padding: 0 16rpx;
flex: 1;
font-size: 32rpx;
color: rgba(40, 48, 49, 1);
color: rgba(33, 29, 46, 1);
}
.icon {
color: rgba(40, 48, 49, 1);
.icon-wrap {
padding: 8rpx 20rpx;
background: #f6f8f9;
border-radius: 20rpx 20rpx 20rpx 20rpx;
.icon {
display: block;
width: 24rpx;
height: 24rpx;
}
}
}
}

11
src/patient/pages/interactivePatient/index.ts

@ -53,7 +53,7 @@ Page({ @@ -53,7 +53,7 @@ Page({
this.innerAudioContext = wx.createInnerAudioContext({
useWebAudioImplement: true,
})
app.zdWaitLogin({}).then(() => {
app.waitLogin({ type: [1] }).then(() => {
app.zdMpBehavior({ PageName: 'PG_PATIENTINTERACTIONDETAILS' })
this.getDoctorDetail()
this.getQuestionList()
@ -362,4 +362,13 @@ Page({ @@ -362,4 +362,13 @@ Page({
],
})
},
handleBack() {
wx.navigateBack({
fail() {
wx.reLaunch({
url: '/patient/pages/index/index',
})
},
})
},
})

37
src/patient/pages/interactivePatient/index.wxml

@ -1,6 +1,13 @@ @@ -1,6 +1,13 @@
<page-meta page-style="{{ referralFromShow ? 'overflow: hidden;' : '' }}" />
<view class="page">
<navbar fixed title="互动" custom-style="background:{{background}}">
<van-icon name="arrow-left" slot="left" size="18px" color="#000" bind:tap="handleBack" />
</navbar>
<view
class="page"
style="background: url('/images/bg10.png') no-repeat top center/100% 610rpx;padding-top:{{pageTop+22}}px;"
>
<view class="page-header" bind:tap="handleDoctorDetail">
<image class="avatar" mode="aspectFill" src="{{doctorDetail.doctorAvatar}}"></image>
<view class="wrap">
@ -45,10 +52,6 @@ @@ -45,10 +52,6 @@
<view class="content">{{item.question}}</view>
</view>
</view>
<view class="tip">
{{message.welcomeMsg.guideClick}}
<image class="icon" src="{{imageUrl}}za-images//doctor/icon-down1.png?t={{Timestamp}}"></image>
</view>
</view>
<view class="message" wx:elif="{{message.msgContentType==='1'}}">{{message.msgContent}}</view>
<view class="week" wx:elif="{{message.msgContentType==='2'}}">
@ -119,17 +122,23 @@ @@ -119,17 +122,23 @@
<view class="patient" wx:if="{{message.msgFromType==='1'}}">
<view class="p-container">
<view class="message" wx:if="{{message.msgContentType==='1'}}">{{message.msgContent}}</view>
<view class="referral-replay" wx:if="{{message.msgContentType==='9'}}">
<view class="referral-replay" wx:if="{{message.msgContentType==='9'}}">
<view class="title">我最近一次复诊时间是{{message.ReVisitInfo.visitDateName}}</view>
<view class="sub-title">我的方案是</view>
<view class="r-list">
<view class="item" wx:if="{{message.ReVisitInfo.hormone==1}}">1.激素</view>
<view class="item" wx:if="{{message.ReVisitInfo.traditionalInhibitor==1}}">2.传统免疫抑制剂(如他克莫司、吗 替麦考酚酯等)</view>
<view class="item" wx:if="{{message.ReVisitInfo.traditionalInhibitor==1}}">
2.传统免疫抑制剂(如他克莫司、吗 替麦考酚酯等)
</view>
<view class="item" wx:if="{{message.ReVisitInfo.gammaGlobulin==1}}">3.静脉输注丙种球蛋白</view>
<view class="item" wx:if="{{message.ReVisitInfo.plasmaExchange==1}}">4.血浆置换</view>
<view class="item" wx:if="{{message.ReVisitInfo.bCellInhibitor==1}}">5.B细胞抑制剂(如:利妥昔单抗、泰 它西普、伊奈利珠单抗)</view>
<view class="item" wx:if="{{message.ReVisitInfo.bCellInhibitor==1}}">
5.B细胞抑制剂(如:利妥昔单抗、泰 它西普、伊奈利珠单抗)
</view>
<view class="item" wx:if="{{message.ReVisitInfo.fcRnAntagonists==1}}">6.FcRn拮抗剂(如:艾加莫德)</view>
<view class="item" wx:if="{{message.ReVisitInfo.c5ComplementInhibitor==1}}">7.C5补体抑制剂(如:依库珠单抗)</view>
<view class="item" wx:if="{{message.ReVisitInfo.c5ComplementInhibitor==1}}">
7.C5补体抑制剂(如:依库珠单抗)
</view>
<view class="item" wx:if="{{message.ReVisitInfo.chineseMedicine==1}}">8.中药或中成药</view>
<view class="item" wx:if="{{message.ReVisitInfo.other==1}}">9.其他</view>
</view>
@ -161,11 +170,6 @@ @@ -161,11 +170,6 @@
catch:tap="handleQuestionTab"
data-index="{{index}}"
>
<image class="icon" src="{{imageUrl}}za-images//doctor/d_interactivePatient-tab{{index%4+1}}.png?t={{Timestamp}}"></image>
<image
class="icon-active"
src="{{imageUrl}}za-images//doctor/d_interactivePatient-tab-active{{index%4+1}}.png?t={{Timestamp}}"
></image>
{{item.typeName}}
</view>
</view>
@ -179,11 +183,12 @@ @@ -179,11 +183,12 @@
>
<view class="order">{{index+1}}</view>
<view class="content">{{item.question}}</view>
<van-icon color="#ADB3B4" name="arrow" />
<view class="icon-wrap">
<image class="icon" src="/images/icon38.png"></image>
</view>
</view>
</view>
</view>
</view>
<referralFrom model:show="{{referralFromShow}}" bind:refresh="handleReferralReplay"></referralFrom>

3
src/patient/pages/live/index.json

@ -1,11 +1,12 @@ @@ -1,11 +1,12 @@
{
"navigationBarTitleText": "",
"navigationStyle": "default",
"navigationStyle": "custom",
"navigationBarBackgroundColor": "#fafafa",
"usingComponents": {
"van-tab": "@vant/weapp/tab/index",
"van-tabs": "@vant/weapp/tabs/index",
"van-icon": "@vant/weapp/icon/index",
"navbar": "/components/navbar/index",
"patient-tab-bar": "/components/patient-tab-bar/index"
}
}

731
src/patient/pages/live/index.scss

@ -1,405 +1,326 @@ @@ -1,405 +1,326 @@
.page {
padding-bottom: 120rpx;
background-color: #fafafa;
position: relative;
.tab {
font-size: 32rpx;
color: #9e9e9e;
background-color: #fafafa;
&.tab-active {
font-size: 36rpx;
color: #484848;
}
}
.search {
margin: 32rpx 30rpx 0;
padding: 18rpx 32rpx;
background: #ffffff;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 38rpx;
border: 2rpx solid #ebecee;
display: flex;
align-items: center;
.icon {
width: 40rpx;
height: 40rpx;
}
.input {
flex: 1;
margin-left: 20rpx;
font-size: 28rpx;
}
.placeholder-input {
color: #a8a8a8;
}
.clear {
color: #ccc;
}
}
.sticky {
position: sticky;
top: 0rpx;
left: 0;
z-index: 20;
padding-bottom: 10rpx;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
background-color: #fafafa;
.tags {
margin-top: 20rpx;
padding-top: 28rpx;
position: relative;
overflow-y: hidden;
overflow-x: auto;
padding-bottom: 8rpx;
&::-webkit-scrollbar {
display: none;
}
.scroll {
padding-left: 30rpx;
display: flex;
flex-wrap: nowrap;
.tag {
margin-right: 16rpx;
flex-shrink: 0;
font-size: 28rpx;
color: #484848;
background-color: #f2f2f2;
border-radius: 24rpx;
padding: 10rpx 24rpx;
line-height: 1;
&.active {
position: relative;
color: #fff;
background-color: var(--name);
}
}
.site {
flex-shrink: 0;
margin-left: auto;
position: sticky;
top: 0;
right: 0;
display: flex;
align-items: center;
justify-content: center;
width: 164rpx;
white-space: nowrap;
font-size: 24rpx;
color: #484848;
background-color: #fafafa;
box-shadow: -12rpx 2rpx 10rpx -12rpx rgba(0, 0, 0, 0.5);
.icon {
margin-right: 8rpx;
width: 32rpx;
height: 32rpx;
}
}
}
}
}
.info-list {
margin: 32rpx 30rpx;
.list-item {
margin-bottom: 32rpx;
background: #ffffff;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 24rpx;
border: 2rpx solid #ebecee;
.photo-wrap {
position: relative;
.photo {
border-radius: 24rpx 24rpx 0 0;
display: block;
width: 100%;
height: 388rpx;
}
.status {
padding: 6rpx 32rpx;
position: absolute;
top: 0;
left: 0;
display: flex;
align-items: center;
background: linear-gradient(90deg, #e5e9f5 0%, #fde4ec 100%);
border-radius: 24rpx 0rpx 24rpx 0rpx;
font-size: 28rpx;
color: var(--name);
.dot {
margin-right: 8rpx;
width: 13rpx;
height: 13rpx;
border-radius: 50%;
background-color: var(--name);
}
&.bad {
color: #484848;
background: #e6e6e6;
.dot {
display: none;
}
}
}
.money {
padding: 0 16rpx 0 0;
position: absolute;
right: 16rpx;
bottom: 16rpx;
background-color: #ffedca;
font-size: 24rpx;
color: #f5ad1d;
line-height: 30rpx;
display: flex;
align-items: center;
justify-content: center;
border-radius: 36rpx;
.icon {
margin-right: 5rpx;
width: 38rpx;
height: 36rpx;
}
}
.date {
padding: 18rpx 18rpx 8rpx;
position: absolute;
left: 40rpx;
bottom: 0;
background: var(--name);
border-radius: 11rpx 11rpx 0rpx 0rpx;
text-align: center;
.d-title {
font-size: 22rpx;
color: #ffffff;
font-weight: bold;
.icon {
margin-right: -10rpx;
}
}
.ymd {
font-size: 18rpx;
color: #fff;
line-height: 28rpx;
border-bottom: 2rpx solid rgba(255, 255, 255, 0.34);
}
.hm {
font-size: 18rpx;
color: #fff;
line-height: 28rpx;
}
}
}
.inner {
padding: 32rpx 34rpx;
background-color: #fff;
border-radius: 0 0 24rpx 24rpx;
.title {
font-size: 32rpx;
color: #252525;
font-weight: bold;
}
.content {
margin-top: 20rpx;
display: flex;
justify-content: space-between;
align-items: flex-start;
.labels {
display: flex;
align-items: center;
flex-wrap: wrap;
.label {
margin-right: 16rpx;
margin-bottom: 16rpx;
padding: 2rpx 20rpx;
font-size: 22rpx;
color: var(--name);
border-radius: 18rpx;
background-color: var(--tag-bg);
word-break: break-all;
}
}
.people {
flex-shrink: 0;
color: #9e9e9e;
font-size: 22rpx;
}
}
.footer {
margin-top: 32rpx;
display: flex;
align-items: center;
justify-content: space-between;
.site {
font-size: 22rpx;
color: #bebebe;
}
.btn {
margin-left: 10rpx;
flex-shrink: 0;
padding: 4rpx 36rpx;
font-size: 28rpx;
color: #ffffff;
background: var(--name);
border-radius: 24rpx;
&.active {
color: #484848;
background-color: #e7e7e7;
}
.icon {
width: 24rpx;
height: 24rpx;
}
}
}
}
}
}
.video-list {
margin: 32rpx 30rpx;
.list-item {
margin-bottom: 32rpx;
background: #ffffff;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 24rpx;
border: 2rpx solid #ebecee;
.photo-wrap {
position: relative;
.photo {
border-radius: 24rpx 24rpx 0 0;
display: block;
width: 100%;
height: 388rpx;
}
.status {
padding: 6rpx 32rpx;
position: absolute;
top: 0;
left: 0;
display: flex;
align-items: center;
background: linear-gradient(90deg, #e5e9f5 0%, #fde4ec 100%);
border-radius: 24rpx 0rpx 24rpx 0rpx;
font-size: 28rpx;
color: var(--name);
.dot {
margin-right: 8rpx;
width: 13rpx;
height: 13rpx;
border-radius: 50%;
background-color: var(--name);
}
&.bad {
color: #484848;
background: #e6e6e6;
.dot {
display: none;
}
}
}
.date {
padding: 18rpx 18rpx 8rpx;
position: absolute;
left: 40rpx;
bottom: 0;
background: var(--name);
border-radius: 11rpx 11rpx 0rpx 0rpx;
text-align: center;
.d-title {
font-size: 22rpx;
color: #ffffff;
font-weight: bold;
}
.ymd {
font-size: 18rpx;
color: #fff;
line-height: 28rpx;
border-bottom: 2rpx solid rgba(255, 255, 255, 0.34);
}
.hm {
font-size: 18rpx;
color: #fff;
line-height: 28rpx;
}
}
.money {
padding: 0 16rpx 0 0;
position: absolute;
right: 16rpx;
bottom: 16rpx;
background-color: #ffedca;
font-size: 24rpx;
color: #f5ad1d;
line-height: 30rpx;
display: flex;
align-items: center;
justify-content: center;
border-radius: 36rpx;
.icon {
margin-right: 5rpx;
width: 38rpx;
height: 36rpx;
}
}
}
.inner {
padding: 32rpx 34rpx;
background-color: #fff;
border-radius: 0 0 24rpx 24rpx;
.title {
font-size: 32rpx;
color: #252525;
font-weight: bold;
}
.content {
margin-top: 20rpx;
display: flex;
justify-content: space-between;
align-items: flex-start;
.labels {
display: flex;
align-items: center;
flex-wrap: wrap;
.label {
margin-right: 16rpx;
padding: 2rpx 20rpx;
font-size: 22rpx;
color: var(--name);
border-radius: 18rpx;
background-color: var(--tag-bg);
word-break: break-all;
}
}
.people {
color: #9e9e9e;
flex-shrink: 0;
font-size: 22rpx;
}
}
.footer {
margin-top: 32rpx;
display: flex;
align-items: center;
justify-content: space-between;
.site {
font-size: 22rpx;
color: #bebebe;
}
.btn {
margin-left: 10rpx;
flex-shrink: 0;
padding: 4rpx 36rpx;
font-size: 28rpx;
color: #ffffff;
background: var(--name);
border-radius: 24rpx;
&.active {
color: #484848;
background-color: #e7e7e7;
}
}
}
}
}
}
}
page {
background-color: rgba(246, 248, 249, 1);
}
.page {
padding-bottom: 120rpx;
position: relative;
.search {
margin: 32rpx 30rpx 0;
padding: 12rpx 32rpx;
background: #ffffff;
border-radius: 38rpx;
display: flex;
align-items: center;
.icon {
width: 40rpx;
height: 40rpx;
}
.input {
flex: 1;
margin-left: 20rpx;
font-size: 28rpx;
}
.placeholder-input {
color: rgba(173, 172, 178, 1);
}
.clear {
color: #ccc;
}
}
.sticky {
padding-bottom: 10rpx;
.tags {
margin-top: 20rpx;
padding-top: 28rpx;
position: relative;
overflow-y: hidden;
overflow-x: auto;
padding-bottom: 8rpx;
&::-webkit-scrollbar {
display: none;
}
.scroll {
padding-left: 30rpx;
display: flex;
flex-wrap: nowrap;
.tag {
margin-right: 16rpx;
flex-shrink: 0;
font-size: 28rpx;
color: rgba(33, 29, 46, 1);
background-color: rgba(255, 255, 255, 1);
border-radius: 8rpx;
padding: 8rpx 24rpx;
line-height: 1.2;
&.active {
position: relative;
color: #fff;
background-color: rgba(185, 130, 255, 1);
}
}
.site {
flex-shrink: 0;
margin-left: auto;
position: sticky;
top: 0;
right: 0;
display: flex;
align-items: center;
justify-content: center;
width: 164rpx;
white-space: nowrap;
font-size: 24rpx;
color: #484848;
background-color: #fafafa;
box-shadow: -12rpx 2rpx 10rpx -12rpx rgba(0, 0, 0, 0.5);
.icon {
margin-right: 8rpx;
width: 32rpx;
height: 32rpx;
}
}
}
}
}
.info-list {
margin: 32rpx 30rpx;
.list-item {
margin-bottom: 32rpx;
background: #ffffff;
border-radius: 24rpx;
.photo-wrap {
position: relative;
.photo {
border-radius: 24rpx 24rpx 0 0;
display: block;
width: 100%;
height: 328rpx;
}
.sign {
position: absolute;
right: 24rpx;
top: 24rpx;
width: 120rpx;
height: 42rpx;
font-size: 24rpx;
display: flex;
align-items: center;
justify-content: center;
color: rgba(255, 255, 255, 1);
background: rgba(0, 0, 0, 0.53);
border-radius: 74rpx 74rpx 74rpx 74rpx;
}
}
.inner {
padding: 32rpx 34rpx;
background-color: #fff;
border-radius: 0 0 24rpx 24rpx;
.title {
font-size: 32rpx;
color: rgba(33, 29, 46, 1);
font-weight: bold;
line-height: 48rpx;
}
.labels {
margin-top: 16rpx;
max-width: 56vw;
font-size: 28rpx;
color: rgba(105, 104, 110, 1);
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
.line {
margin: 0 4rpx;
vertical-align: baseline;
display: inline-block;
width: 1px;
height: 24rpx;
background-color: rgba(105, 104, 110, 0.2);
}
}
.footer {
margin-top: 32rpx;
display: flex;
align-items: center;
justify-content: space-between;
.people {
flex-shrink: 0;
color: rgba(173, 172, 178, 1);
font-size: 28rpx;
}
.btn {
margin-left: 10rpx;
flex-shrink: 0;
padding: 18rpx 36rpx;
font-size: 30rpx;
line-height: 1;
color: #ffffff;
background: linear-gradient(to right, #c690fd, #d79ffc);
border-radius: 80rpx;
min-width: 182rpx;
box-sizing: border-box;
text-align: center;
&.active {
color: #484848;
background: #e7e7e7;
}
.icon {
width: 24rpx;
height: 24rpx;
}
}
}
}
}
}
.video-list {
margin: 32rpx 30rpx;
.list-item {
margin-bottom: 32rpx;
background: #ffffff;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 24rpx;
border: 2rpx solid #ebecee;
.photo-wrap {
position: relative;
.photo {
border-radius: 24rpx 24rpx 0 0;
display: block;
width: 100%;
height: 388rpx;
}
.status {
padding: 6rpx 32rpx;
position: absolute;
top: 0;
left: 0;
display: flex;
align-items: center;
background: linear-gradient(90deg, #e5e9f5 0%, #fde4ec 100%);
border-radius: 24rpx 0rpx 24rpx 0rpx;
font-size: 28rpx;
color: var(--name);
.dot {
margin-right: 8rpx;
width: 13rpx;
height: 13rpx;
border-radius: 50%;
background-color: var(--name);
}
&.bad {
color: #484848;
background: #e6e6e6;
.dot {
display: none;
}
}
}
.date {
padding: 18rpx 18rpx 8rpx;
position: absolute;
left: 40rpx;
bottom: 0;
background: var(--name);
border-radius: 11rpx 11rpx 0rpx 0rpx;
text-align: center;
.d-title {
font-size: 22rpx;
color: #ffffff;
font-weight: bold;
}
.ymd {
font-size: 18rpx;
color: #fff;
line-height: 28rpx;
border-bottom: 2rpx solid rgba(255, 255, 255, 0.34);
}
.hm {
font-size: 18rpx;
color: #fff;
line-height: 28rpx;
}
}
.money {
padding: 0 16rpx 0 0;
position: absolute;
right: 16rpx;
bottom: 16rpx;
background-color: #ffedca;
font-size: 24rpx;
color: #f5ad1d;
line-height: 30rpx;
display: flex;
align-items: center;
justify-content: center;
border-radius: 36rpx;
.icon {
margin-right: 5rpx;
width: 38rpx;
height: 36rpx;
}
}
}
.inner {
padding: 32rpx 34rpx;
background-color: #fff;
border-radius: 0 0 24rpx 24rpx;
.title {
font-size: 32rpx;
color: #252525;
font-weight: bold;
}
.content {
margin-top: 20rpx;
display: flex;
justify-content: space-between;
align-items: flex-start;
.labels {
display: flex;
align-items: center;
flex-wrap: wrap;
.label {
margin-right: 16rpx;
padding: 2rpx 20rpx;
font-size: 22rpx;
color: var(--name);
border-radius: 18rpx;
background-color: var(--tag-bg);
word-break: break-all;
}
}
.people {
color: #9e9e9e;
flex-shrink: 0;
font-size: 22rpx;
}
}
.footer {
margin-top: 32rpx;
display: flex;
align-items: center;
justify-content: space-between;
.site {
font-size: 22rpx;
color: #bebebe;
}
.btn {
margin-left: 10rpx;
flex-shrink: 0;
padding: 4rpx 36rpx;
font-size: 28rpx;
color: #ffffff;
background: var(--name);
border-radius: 24rpx;
&.active {
color: #484848;
background-color: #e7e7e7;
}
}
}
}
}
}
}

38
src/patient/pages/live/index.wxml

@ -1,23 +1,11 @@ @@ -1,23 +1,11 @@
<navbar fixed title="大咖说" custom-style="background:{{background}}">
<van-icon name="arrow-left" slot="left" size="18px" color="#000" bind:tap="handleBack" />
</navbar>
<view
class="page"
style="{{theme === 'DRUG'?'--name:#25D9C8;--tag-bg:rgba(37, 217, 200, 0.13)':'--name:#e04775;--tag-bg:rgba(224, 71, 117, 0.13)'}}"
style="--name:#e04775;--tag-bg:rgba(224, 71, 117, 0.13);background: url('/images/bg10.png') no-repeat top center/100% 610rpx;padding-top:{{pageTop+22}}px;"
>
<van-tabs
wx:if="{{online_open_status==1 && offline_open_status==1}}"
class="navbar"
active="{{ active }}"
bind:change="tabChange"
title-inactive-color="#9E9E9E"
title-active-color="#484848"
line-width="{{17}}"
line-height="{{4}}"
color="#E04775"
tab-class="tab"
tab-active-class="tab-active"
>
<van-tab title="会议"></van-tab>
<van-tab title="活动"></van-tab>
</van-tabs>
<view class="search">
<image class="icon" src="{{imageUrl}}za-images/1/search.png?t={{Timestamp}}"></image>
<input
@ -55,21 +43,17 @@ @@ -55,21 +43,17 @@
<view class="list-item" wx:for="{{list}}" bind:tap="handleDetail" data-id="{{item.Id}}" wx:key="index">
<view class="photo-wrap">
<image class="photo" mode="aspectFill" src="{{item.IntroductionUrl}}"></image>
<view class="status {{item.Status != 2 && 'bad'}}">
<view class="dot"></view>
{{liveStatus[item.Status]}}
</view>
<view class="sign" wx:if="{{item.SignUpStatus==2}}">已报名</view>
</view>
<view class="inner">
<view class="title">{{item.Name}}</view>
<view class="content">
<view class="labels">
<view class="label" wx:for="{{item.Labels}}" wx:for-item="label" wx:key="index">{{label}}</view>
</view>
<view class="people" wx:if="{{item.SignUpPeopleNum * 1}}">{{item.SignUpPeopleNum}}人已报名</view>
<view class="labels" wx:if="{{item.doctorName}}">
{{item.doctorName}}
<text class="line" wx:if="{{item.MasterHosipital}}"></text>
{{item.MasterHosipital}}
</view>
<view class="footer">
<view class="site">{{item.MasterName}} {{item.MasterTitle}}</view>
<view class="people" wx:if="{{item.SignUpPeopleNum * 1}}">{{item.SignUpPeopleNum}}人已报名</view>
<view class="btn active" wx:if="{{ item.Status==99}}">已取消</view>
<view class="btn active" wx:elif="{{ item.Status==100}}">已删除</view>
<view class="btn" wx:elif="{{item.Status==3 && item.ReplayVideoUrl}}">看回放</view>

4
src/patient/pages/liveDetail/index.json

@ -1,10 +1,12 @@ @@ -1,10 +1,12 @@
{
"navigationBarTitleText": "活动详情",
"navigationBarBackgroundColor": "#EEF0F3",
"navigationStyle": "default",
"navigationStyle": "custom",
"usingComponents": {
"mp-html": "mp-html",
"van-icon": "@vant/weapp/icon/index",
"customPoster": "/components/customPoster/index",
"navbar": "/components/navbar/index",
"van-popup": "@vant/weapp/popup/index"
}
}

135
src/patient/pages/liveDetail/index.scss

@ -1,12 +1,13 @@ @@ -1,12 +1,13 @@
page {
background-color: #eef0f3;
}
.page {
min-height: 100vh;
.banner {
width: 100%;
height: 422rpx;
margin: 0 40rpx;
display: block;
width: calc(100vw - 80rpx);
height: 334rpx;
border-radius: 24rpx;
border: 2rpx solid #ffffff;
box-shadow: 0 10rpx 10rpx #ccc;
}
.page-container {
padding: 18rpx 30rpx 160rpx;
@ -16,63 +17,47 @@ page { @@ -16,63 +17,47 @@ page {
line-height: 64rpx;
font-weight: bold;
}
.stat {
margin-top: 20rpx;
.info {
margin-top: 32rpx;
padding-bottom: 32rpx;
display: flex;
.s-item {
display: flex;
align-items: center;
font-size: 24rpx;
color: #1e1f21;
margin-right: 48rpx;
.icon {
width: 36rpx;
height: 36rpx;
margin-right: 12rpx;
}
}
}
.module {
margin-top: 30rpx;
padding: 34rpx 32rpx;
border-radius: 24rpx;
border: 2rpx solid #ebecee;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
background-color: #fff;
> view:nth-of-type(2) {
margin-top: 30rpx;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid rgba(159, 168, 172, 0.1);
.date {
font-size: 32rpx;
color: rgba(33, 29, 46, 1);
}
.info {
.stat {
display: flex;
align-items: center;
font-size: 28rpx;
color: #636466;
.icon {
margin-right: 12rpx;
width: 32rpx;
height: 32rpx;
}
}
.site {
display: flex;
justify-content: space-between;
.wrap {
font-size: 28rpx;
color: #636466;
.s-item {
display: flex;
align-items: center;
font-size: 32rpx;
color: rgba(105, 104, 110, 1);
margin-left: 36rpx;
.icon {
flex-shrink: 0;
margin-right: 12rpx;
width: 32rpx;
height: 32rpx;
vertical-align: middle;
width: 40rpx;
height: 40rpx;
margin-right: 8rpx;
}
}
.nav-site {
margin-left: 10rpx;
flex-shrink: 0;
width: 36rpx;
height: 36rpx;
}
}
.limit {
margin-top: 32rpx;
font-size: 32rpx;
color: rgba(105, 104, 110, 1);
display: flex;
align-items: center;
gap: 20rpx;
.i-item {
display: flex;
align-items: center;
.num {
font-size: 36rpx;
color: rgba(185, 130, 255, 1);
font-weight: bold;
}
}
}
@ -80,15 +65,15 @@ page { @@ -80,15 +65,15 @@ page {
position: relative;
margin-top: 30rpx;
padding: 32rpx 32rpx 0;
background: linear-gradient(360deg, #ffffff 0%, #f6f7f7 100%);
background: rgba(246, 248, 249, 1);
border-radius: 24rpx;
box-sizing: border-box;
.screen-list {
max-height: 200rpx;
max-height: 268rpx;
.s-item {
display: flex;
align-items: center;
font-size: 28rpx;
font-size: 32rpx;
.avatar {
margin-right: 20rpx;
width: 68rpx;
@ -97,14 +82,14 @@ page { @@ -97,14 +82,14 @@ page {
}
.name {
margin-right: 20rpx;
color: #1e1f21;
color: rgba(33, 29, 46, 1);
}
.action {
margin-right: 20rpx;
color: #9b9fa4;
color: rgba(33, 29, 46, 1);
}
.date {
color: #e04775;
color: rgba(173, 172, 178, 1);
}
}
}
@ -138,35 +123,11 @@ page { @@ -138,35 +123,11 @@ page {
left: 0;
width: 100%;
box-sizing: border-box;
display: flex;
background-color: #fff;
box-shadow: 0rpx 8rpx 48rpx 0rpx rgba(0, 0, 0, 0.19);
.inner {
flex: 1;
display: flex;
.i-item {
text-align: center;
.num {
font-size: 36rpx;
color: #1e1f21;
}
.name {
font-size: 22rpx;
color: #a8acb0;
}
}
.vertical {
margin: 0 38rpx;
width: 2rpx;
height: 64rpx;
opacity: 0.19;
background: linear-gradient(180deg, rgba(200, 200, 200, 0), rgba(173, 173, 173, 1), rgba(151, 151, 151, 0));
}
}
.btn {
width: 346rpx;
height: 88rpx;
background: #e04775;
background: linear-gradient(197deg, #ffbcf9 0%, #b982ff 100%);
border-radius: 44rpx;
text-align: center;
line-height: 88rpx;

17
src/patient/pages/liveDetail/index.ts

@ -119,7 +119,12 @@ Page({ @@ -119,7 +119,12 @@ Page({
handleLive() {
const { Type } = this.data.detail
app
.zdPermissionVerification(3, Type == 1 ? 1 : 10, `/patient/pages/liveDetail/index?id=${this.data.id}`, this.data.id)
.zdPermissionVerification(
3,
Type == 1 ? 1 : 10,
`/patient/pages/liveDetail/index?id=${this.data.id}`,
this.data.id,
)
.then(() => {
const { TencentMeetingCode } = this.data.detail
wx.navigateToMiniProgram({
@ -292,6 +297,16 @@ Page({ @@ -292,6 +297,16 @@ Page({
handlePlayVideo() {
this.videoContext.play()
},
handleBack() {
wx.navigateBack({
fail() {
wx.reLaunch({
url: '/patient/pages/index/index',
})
},
})
},
onShareAppMessage() {
this.saveShare()
return {

155
src/patient/pages/liveDetail/index.wxml

@ -1,29 +1,41 @@ @@ -1,29 +1,41 @@
<view class="page">
<navbar fixed title="" custom-style="background:{{background}}">
<van-icon name="arrow-left" slot="left" color="#000" bind:tap="handleBack" />
</navbar>
<view
class="page"
style="background: url('/images/bg10.png') no-repeat top center/100% 610rpx;padding-top:{{pageTop+22}}px;"
>
<image class="banner" mode="aspectFill" src="{{detail.IntroductionUrl}}"></image>
<view class="page-container">
<view class="title">{{detail.Name}}</view>
<view class="stat">
<view class="s-item" wx:if="{{detail.ActivityBasicNum * 1 + detail.OpenNum * 1}}">
<image class="icon" src="{{imageUrl}}za-images/1/view.png?t={{Timestamp}}"></image>
{{detail.ActivityBasicNum * 1 + detail.OpenNum * 1}}次
</view>
<view class="s-item" bind:tap="handleShare" wx:if="{{detail.ShareNum}}">
<image class="icon" src="{{imageUrl}}za-images/1/share.png?t={{Timestamp}}"></image>
{{detail.ShareNum}}次
<view class="info">
<view class="date">2025.7.15</view>
<view class="stat">
<view class="s-item" wx:if="{{detail.ActivityBasicNum * 1 + detail.OpenNum * 1}}">
<image class="icon" src="/images/icon40.png"></image>
{{detail.ActivityBasicNum * 1 + detail.OpenNum * 1}}次
</view>
<view class="s-item" bind:tap="handleShare" wx:if="{{detail.ShareNum}}">
<image class="icon" src="/images/icon39.png"></image>
{{detail.ShareNum}}次
</view>
</view>
</view>
<view class="module">
<view class="info">
<image class="icon" src="{{imageUrl}}za-images/1/date.png?t={{Timestamp}}"></image>
{{detail.BeginTime}}
<view class="limit">
<view class="i-item">
已报名
<view class="num">{{detail.SignUpPeopleNum}}</view>
</view>
<view class="site" wx:if="{{detail.Type==2 && detail.Location}}">
<view class="wrap">
<image class="icon" src="{{imageUrl}}za-images/1/site.png?t={{Timestamp}}"></image>
{{detail.Location}}
<block wx:if="{{detail.IsLimitUser==1}}">
<view class="vertical"></view>
<view class="i-item">
限额
<view class="num">{{detail.LimitPeopleNum}}</view>
</view>
<image class="nav-site" src="{{imageUrl}}za-images/1/nav-site.png?t={{Timestamp}}" bind:tap="handleMap"></image>
</view>
</block>
</view>
<view class="screen" wx:if="{{detail.SignUpRecord.length}}">
<swiper
@ -32,7 +44,7 @@ @@ -32,7 +44,7 @@
interval="{{1000}}"
circular="{{true}}"
vertical="{{true}}"
display-multiple-items="{{detail.SignUpRecord.length>2?2.5:detail.SignUpRecord.length}}"
display-multiple-items="3"
easing-function="linear"
>
<swiper-item class="s-item" wx:for="{{detail.SignUpRecord}}" wx:key="UserId">
@ -49,85 +61,36 @@ @@ -49,85 +61,36 @@
</view>
</view>
<view class="footer">
<view class="inner">
<view class="i-item">
<view class="num">{{detail.SignUpPeopleNum}}人</view>
<view class="name">已报名</view>
</view>
<block wx:if="{{detail.IsLimitUser==1}}">
<view class="vertical"></view>
<view class="i-item">
<view class="num">{{detail.LimitPeopleNum}}人</view>
<view class="name">限额</view>
</view>
</block>
</view>
<block wx:if="{{detail.Type==1}}">
<view class="btn active" wx:if="{{ detail.Status==99}}">已取消</view>
<view class="btn active" wx:elif="{{ detail.Status==100}}">已删除</view>
<view class="btn" wx:elif="{{detail.Status==3 && detail.ReplayVideoUrl}}" bind:tap="handleReplay">看回放</view>
<view class="btn active" wx:elif="{{detail.Status==3 && !detail.ReplayVideoUrl}}">回放生成中</view>
<block wx:elif="{{detail.IsSignUp==1 && zdUserInfo.AuditStatus}}">
<block wx:if="{{zdUserInfo.AuditStatus == 1 || zdUserInfo.AuditStatus == 3 || zdUserInfo.AuditStatus == 4}}">
<view class="btn active" wx:if="{{detail.SignUpStatus==1}}" bind:tap="handleResult">审核中</view>
<block wx:elif="{{detail.SignUpStatus==2}}">
<view class="btn" wx:if="{{detail.BeginTimeValue * 1 < dateValue * 1}}" bind:tap="handleLive">参会</view>
<view class="btn active" wx:else bind:tap="handleResult">已报名</view>
</block>
<block wx:elif="{{detail.SignUpStatus==3}}">
<view
class="btn active"
wx:if="{{detail.IsLimitUser==1 && detail.SignUpPeopleNum * 1 >= detail.LimitPeopleNum * 1}}"
>
已满额
</view>
</block>
<view class="btn active" wx:if="{{ detail.Status==99}}">已取消</view>
<view class="btn active" wx:elif="{{ detail.Status==100}}">已删除</view>
<view class="btn" wx:elif="{{detail.Status==3 && detail.ReplayVideoUrl}}" bind:tap="handleReplay">看回放</view>
<view class="btn active" wx:elif="{{detail.Status==3 && !detail.ReplayVideoUrl}}">回放生成中</view>
<block wx:elif="{{detail.IsSignUp==1 && zdUserInfo.AuditStatus}}">
<block wx:if="{{zdUserInfo.AuditStatus == 1 || zdUserInfo.AuditStatus == 3 || zdUserInfo.AuditStatus == 4}}">
<view class="btn active" wx:if="{{detail.SignUpStatus==1}}" bind:tap="handleResult">审核中</view>
<block wx:elif="{{detail.SignUpStatus==2}}">
<view class="btn" wx:if="{{detail.BeginTimeValue * 1 < dateValue * 1}}" bind:tap="handleLive">参会</view>
<view class="btn active" wx:else bind:tap="handleResult">已报名</view>
</block>
</block>
<block wx:else>
<view
class="btn active"
wx:if="{{detail.IsLimitUser==1 && detail.SignUpPeopleNum * 1 >= detail.LimitPeopleNum * 1}}"
>
已满额
</view>
<view class="btn active" wx:elif="{{detail.SignUpDeadlineValue * 1 < dateValue * 1}}">报名已截止</view>
<view class="btn" wx:else bind:tap="handleSignUp">报名</view>
</block>
</block>
<block wx:elif="{{detail.Type==2}}">
<view class="btn active" wx:if="{{ detail.Status==3}}">已结束</view>
<view class="btn active" wx:elif="{{ detail.Status==99}}">已取消</view>
<view class="btn active" wx:elif="{{ detail.Status==100}}">已删除</view>
<block wx:elif="{{detail.IsSignUp==1 && zdUserInfo.AuditStatus}}">
<block wx:if="{{zdUserInfo.AuditStatus == 1 || zdUserInfo.AuditStatus == 3 || zdUserInfo.AuditStatus == 4}}">
<view class="btn active" wx:if="{{detail.SignUpStatus==1}}" bind:tap="handleResult">审核中</view>
<block wx:elif="{{detail.SignUpStatus==2}}">
<view class="btn" wx:if="{{detail.BeginTimeValue * 1 < dateValue * 1}}" bind:tap="handleResult">
已报名
</view>
<view class="btn active" wx:else bind:tap="handleResult">已报名</view>
</block>
<block wx:elif="{{detail.SignUpStatus==3}}">
<view
class="btn active"
wx:if="{{detail.IsLimitUser==1 && detail.SignUpPeopleNum * 1 >= detail.LimitPeopleNum * 1}}"
>
已满额
</view>
</block>
<block wx:elif="{{detail.SignUpStatus==3}}">
<view
class="btn active"
wx:if="{{detail.IsLimitUser==1 && detail.SignUpPeopleNum * 1 >= detail.LimitPeopleNum * 1}}"
>
已满额
</view>
</block>
</block>
<block wx:else>
<view
class="btn active"
wx:if="{{detail.IsLimitUser==1 && detail.SignUpPeopleNum * 1 >= detail.LimitPeopleNum * 1}}"
>
已满额
</view>
<view class="btn active" wx:elif="{{detail.SignUpDeadlineValue * 1 < dateValue * 1}}">报名已截止</view>
<view class="btn" wx:else bind:tap="handleSignUp">报名</view>
</block>
</block>
<block wx:else>
<view
class="btn active"
wx:if="{{detail.IsLimitUser==1 && detail.SignUpPeopleNum * 1 >= detail.LimitPeopleNum * 1}}"
>
已满额
</view>
<view class="btn active" wx:elif="{{detail.SignUpDeadlineValue * 1 < dateValue * 1}}">报名已截止</view>
<view class="btn" wx:else bind:tap="handleSignUp">报名</view>
</block>
</view>

6
src/patient/pages/liveResult/index.json

@ -1,5 +1,7 @@ @@ -1,5 +1,7 @@
{
"navigationBarTitleText": "",
"navigationStyle": "default",
"usingComponents": {}
"navigationStyle": "custom",
"usingComponents": {
"navbar": "/components/navbar/index"
}
}

259
src/patient/pages/liveResult/index.scss

File diff suppressed because one or more lines are too long

184
src/patient/pages/liveResult/index.ts

@ -1,100 +1,84 @@ @@ -1,100 +1,84 @@
const app = getApp<IAppOption>();
import dayjs from "dayjs";
let live_time: null | number = null;
Page({
data: {
id: "",
detail: {} as any,
liveDetail: {} as any,
zdUserInfo: {},
codeUrl: "",
dateValue: "" as string | number,
rewardScore: 0 as number | undefined,
},
onLoad(options) {
this.setData({
id: options.id,
rewardScore: options.rewardScore,
});
if (live_time) {
clearInterval(live_time);
}
this.setData({
dateValue: dayjs().valueOf(),
});
live_time = setInterval(() => {
this.setData({
dateValue: dayjs().valueOf(),
});
}, 1000);
app.zdWaitLogin().then((_res) => {
this.getLiveDetail();
this.getDetail();
this.getCode();
app.getZdUserInfo(this, true);
});
},
getDetail() {
wx.ajax({
method: "GET",
url: "?r=zd/activity/sign-up-detail",
data: {
Id: this.data.id,
},
}).then((res) => {
res.BeginTime = dayjs(res.BeginTime).format("YYYY-MM-DD HH:mm");
res.BeginTimeValue = dayjs(res.BeginTime).valueOf();
this.setData({
detail: res,
});
});
},
getLiveDetail() {
wx.ajax({
method: "GET",
url: "?r=zd/activity/detail",
data: {
Id: this.data.id,
},
}).then((res) => {
this.setData({
liveDetail: res,
});
});
},
handleLive() {
const { TencentMeetingCode } = this.data.detail;
wx.navigateToMiniProgram({
appId: "wx33fd6cdc62520063", // 要跳转的微信小程序appid
path: `pages/index/index?code=${TencentMeetingCode}`,
});
},
getCode() {
const { registChannel } = app.globalData;
wx.ajax({
method: "GET",
url: "?r=zd/common/get-channel-wx-code",
data: {
Id: this.data.id,
ChannelType: registChannel,
},
}).then((res) => {
this.setData({
codeUrl: res,
});
});
},
handleHome() {
wx.reLaunch({
url: "/patient/pages/index/index",
});
},
onShareAppMessage() {
return {
title: this.data.detail.ActivityName,
path: `/patient/pages/liveDetail/index?id=${this.data.detail.ActivityId}`,
imageUrl: `${this.data.liveDetail.IntroductionUrl}`,
};
},
});
const app = getApp<IAppOption>()
import dayjs from 'dayjs'
let live_time: null | number = null
Page({
data: {
id: '',
detail: {} as any,
liveDetail: {} as any,
zdUserInfo: {},
codeUrl: '',
dateValue: '' as string | number,
rewardScore: 0 as number | undefined,
},
onLoad(options) {
this.setData({
id: options.id,
rewardScore: options.rewardScore,
})
if (live_time) {
clearInterval(live_time)
}
this.setData({
dateValue: dayjs().valueOf(),
})
live_time = setInterval(() => {
this.setData({
dateValue: dayjs().valueOf(),
})
}, 1000)
app.waitLogin({ type: [1] }).then((_res) => {
this.getLiveDetail()
this.getDetail()
app.getZdUserInfo(this, true)
})
},
getDetail() {
wx.ajax({
method: 'GET',
url: '?r=zd/activity/sign-up-detail',
data: {
Id: this.data.id,
},
}).then((res) => {
res.BeginTime = dayjs(res.BeginTime).format('YYYY-MM-DD HH:mm')
res.BeginTimeValue = dayjs(res.BeginTime).valueOf()
this.setData({
detail: res,
})
})
},
getLiveDetail() {
wx.ajax({
method: 'GET',
url: '?r=zd/activity/detail',
data: {
Id: this.data.id,
},
}).then((res) => {
this.setData({
liveDetail: res,
})
})
},
handleLive() {
const { TencentMeetingCode } = this.data.detail
wx.navigateToMiniProgram({
appId: 'wx33fd6cdc62520063', // 要跳转的微信小程序appid
path: `pages/index/index?code=${TencentMeetingCode}`,
})
},
handleHome() {
wx.reLaunch({
url: '/patient/pages/index/index',
})
},
onShareAppMessage() {
return {
title: this.data.detail.ActivityName,
path: `/patient/pages/liveDetail/index?id=${this.data.detail.ActivityId}`,
imageUrl: `${this.data.liveDetail.IntroductionUrl}`,
}
},
})

74
src/patient/pages/liveResult/index.wxml

@ -1,61 +1,23 @@ @@ -1,61 +1,23 @@
<view class="page">
<block wx:if="{{detail.AuditStatus==1}}">
<image class="badge" mode="aspectFit" src="{{imageUrl}}za-images/1/live-result-reject.png?t={{Timestamp}}"></image>
<view class="status green">资料审核中</view>
<view class="tip">资料审核通过后可参与活动</view>
</block>
<block wx:elif="{{detail.SignUpStatus==2 && (detail.AuditStatus==3 || detail.AuditStatus==4)}}">
<!-- <block> -->
<image class="badge" mode="aspectFit" src="{{imageUrl}}za-images/1/live-result-success.png?t={{Timestamp}}"></image>
<navbar fixed title="" custom-style="background:{{background}}">
<van-icon name="arrow-left" slot="left" color="background=='#FFFFFF'?'#000':'#fff'" bind:tap="handleBack" />
</navbar>
<!-- padding-top:{{pageTop+22}}px; -->
<view class="page" style="background: url('/images/bg10.png') no-repeat top center/100% 610rpx">
<view class="bg"></view>
<view class="page-container" style="top:{{pageTop+30}}px;">
<image class="badge" mode="aspectFit" src="/images/icon43.png"></image>
<view class="status">报名成功</view>
<view class="tip">您已成功报名大咖秀</view>
<view class="price" wx:if="{{rewardScore>0}}">
+{{rewardScore}}
<view class="sub">能量</view>
</view>
</block>
<view class="container">
<view class="c-content">
<!-- <video -->
<!-- class="video" -->
<!-- show-mute-btn -->
<!-- autoplay -->
<!-- src="https://rs-os-lyh-dt-publicread-video-auto1080tr-prod.liangyihui.net/boss-upload/Mabd3TtaDlquV01ODi6qwA/YsT9kzIy5QKlZTYY.mp4" -->
<!-- controls -->
<!-- ></video> -->
<view class="c-title">{{detail.ActivityName}}</view>
<view class="date">
<image class="icon" src="{{imageUrl}}za-images/1/date.png?t={{Timestamp}}"></image>
{{detail.BeginTime}}
<view class="tip">欢迎您参与此次活动</view>
<view class="container">
<view class="c-content">
<image class="banner" src="{{liveDetail.IntroductionUrl}}"></image>
<view class="c-title">{{detail.ActivityName}}</view>
<view class="date">直播时间: {{detail.BeginTime}}</view>
<view wx:if="{{detail.BeginTimeValue * 1 < dateValue * 1 && detail.Type==1}}" class="btn" bind:tap="handleLive">
立即进入直播间
</view>
<button open-type="share" class="btn btn2">分享活动</button>
</view>
<view class="site" wx:if="{{detail.Type==2}}">地点:{{detail.Location}}</view>
<block wx:if="{{detail.IsFollow==0}}">
<image class="code" src="{{codeUrl}}" show-menu-by-longpress></image>
<view class="c-tip">关注"gMG给力加油站"公众号获取活动通知</view>
</block>
</view>
</view>
<view class="footer">
<block wx:if="{{detail.AuditStatus==1}}">
<button wx:if="{{detail.IsFollow==1}}" open-type="share" class="btn">邀约好友参与</button>
<view class="btn btn2" bind:tap="handleHome">随便看看</view>
</block>
<block wx:elif="{{detail.SignUpStatus==2 && (detail.AuditStatus==3 || detail.AuditStatus==4)}}">
<block wx:if="{{detail.IsFollow==0}}">
<view class="btn" wx:if="{{detail.BeginTimeValue * 1 < dateValue * 1 && detail.Type==1}}" bind:tap="handleLive">
进入会议间
</view>
</block>
<block wx:else>
<view
class="btn btn1"
wx:if="{{detail.BeginTimeValue * 1 < dateValue * 1 && detail.Type==1}}"
bind:tap="handleLive"
>
立即进入会议间
</view>
<button open-type="share" class="btn">邀约好友参与</button>
</block>
</block>
</view>
</view>

122
src/patient/pages/login/index.scss

@ -4,9 +4,9 @@ pgae { @@ -4,9 +4,9 @@ pgae {
padding-bottom: 80rpx;
position: relative;
height: 100vh;
background-color: #fafafa;
.bg {
width: 100%;
height: 610rpx;
}
.container {
position: absolute;
@ -16,14 +16,14 @@ pgae { @@ -16,14 +16,14 @@ pgae {
.frame {
display: block;
margin: 0 auto;
width: 124rpx;
height: 145rpx;
width: 196rpx;
height: 196rpx;
}
.title {
display: block;
margin: 32rpx auto 0;
width: 430rpx;
height: 50rpx;
width: 330rpx;
height: 52rpx;
}
.content {
padding: 32rpx 50rpx 0;
@ -34,90 +34,25 @@ pgae { @@ -34,90 +34,25 @@ pgae {
color: rgba(207, 83, 117, 1);
}
}
.form {
margin-top: 32rpx;
padding: 0 64rpx;
.row {
margin-bottom: 40rpx;
display: flex;
.input {
flex: 1;
padding: 24rpx 32rpx;
height: 40rpx;
font-size: 28rpx;
color: #999999;
background: #f2f2f2;
border: 1rpx solid #cccccc;
border-radius: 24rpx;
}
.code {
margin-left: 24rpx;
flex-shrink: 0;
width: 212rpx;
border: 2rpx solid #e04775;
border-radius: 24rpx;
font-size: 28rpx;
color: #e04775;
display: flex;
align-items: center;
justify-content: center;
}
.submit {
width: 622rpx;
height: 88rpx;
background: #e04775;
border-radius: 24rpx;
font-size: 34rpx;
color: #ffffff;
font-weight: bold;
text-align: center;
line-height: 88rpx;
}
}
}
.phone-btn {
margin: 48rpx 50rpx 0;
margin: 64rpx 50rpx 0;
height: 88rpx;
line-height: 88rpx;
text-align: center;
font-size: 34rpx;
color: #ffffff;
background: #cf5375;
border-radius: 24rpx 24rpx 24rpx 24rpx;
font-size: 32rpx;
color: rgba(255, 255, 255, 1);
background: linear-gradient(197deg, #ffbcf9 0%, #b982ff 30%, #b982ff 100%);
border-radius: 100rpx;
&::after {
border: none;
outline: none;
}
}
.divider {
margin: 48rpx auto 0;
width: 300rpx;
}
.other {
margin-top: 48rpx;
display: flex;
justify-content: center;
align-items: center;
.col {
font-size: 32rpx;
color: rgba(153, 153, 153, 1);
display: flex;
align-items: center;
justify-content: center;
}
.line {
flex-shrink: 0;
margin: 0 50rpx;
width: 1rpx;
height: 36rpx;
background-color: rgba(221, 221, 221, 1);
}
}
.argument {
margin-top: 76rpx;
margin-top: 150rpx;
padding: 0 50rpx;
.a-col {
margin-bottom: 20rpx;
margin-bottom: 30rpx;
display: flex;
gap: 12rpx;
@ -128,12 +63,41 @@ pgae { @@ -128,12 +63,41 @@ pgae {
}
.a-content {
font-size: 28rpx;
color: rgba(102, 102, 102, 1);
color: rgba(105, 104, 110, 1);
.link {
color: rgba(207, 83, 117, 1);
color: rgba(185, 130, 255, 1);
}
}
}
}
.divider {
margin: 106rpx auto 0;
width: 380rpx;
font-size: 28rpx;
color: rgba(207, 209, 213, 1);
}
.other {
margin-top: 48rpx;
display: flex;
justify-content: center;
align-items: center;
gap: 50rpx;
.col {
padding: 8rpx 32rpx;
font-size: 28rpx;
color: rgba(161, 164, 172, 1);
display: flex;
align-items: center;
justify-content: center;
gap: 8rpx;
background-color: rgba(246, 248, 249, 1);
border-radius: 92rpx;
.icon {
flex-shrink: 0;
width: 40rpx;
height: 40rpx;
}
}
}
}
}

62
src/patient/pages/login/index.wxml

@ -1,28 +1,8 @@ @@ -1,28 +1,8 @@
<view class="page">
<image class="bg" mode="widthFix" src="{{imageUrl}}za-images/1/login-bg.png?t={{Timestamp}}"></image>
<image src="/src/images/bg1.png"></image>
<image class="bg" src="/images/bg10.png"></image>
<view class="container">
<image class="frame" src="{{imageUrl}}za-images/icon17.png?t={{Timestamp}}"></image>
<image class="title" src="{{imageUrl}}za-images/1/login-title.png?t={{Timestamp}}"></image>
<view class="content">
在您加入gMG 给力加油站平台之前,请您阅读并充分理解
<text class="link" bind:tap="handleLink" data-url="/doc/patient/pages/doc2/index">《个人信息及隐私保护政策》</text>
,了解您的权益及相关数据处理方法,我们将严格按照法律法规及
<text class="link" bind:tap="handleLink" data-url="/doc/patient/pages/doc2/index">《个人信息及隐私保护政策》</text>
的相关规定保证您的个人信息不受侵犯。
</view>
<!-- <view class="form"> -->
<!-- <view class="row"> -->
<!-- <input type="number" model:value="{{mobile}}" class="input" placeholder="请输入手机号" /> -->
<!-- </view> -->
<!-- <view class="row"> -->
<!-- <input type="number" model:value="{{code}}" class="input" placeholder="请输入验证码" /> -->
<!-- <view class="code" bind:tap="getCode">{{codeText}}</view> -->
<!-- </view> -->
<!-- <view class="row"> -->
<!-- <view class="submit" bind:tap="handleSubmit">立即加入</view> -->
<!-- </view> -->
<!-- </view> -->
<image class="frame" src="/images/logo2.png"></image>
<image class="title" src="/images/title6.png"></image>
<button
wx:if="{{check1 && check2}}"
class="phone-btn"
@ -37,53 +17,45 @@ @@ -37,53 +17,45 @@
<image
wx:if="{{check1}}"
class="icon"
src="{{imageUrl}}za-images/icon20.png?t={{Timestamp}}"
bind:tap="handleCheck"
data-key="check1"
></image>
<image
wx:else
class="icon"
src="{{imageUrl}}za-images/icon19.png?t={{Timestamp}}"
src="/images/icon25.png"
bind:tap="handleCheck"
data-key="check1"
></image>
<image wx:else class="icon" src="/images/icon24.png" bind:tap="handleCheck" data-key="check1"></image>
<view class="a-content">
我已阅读并同意
<text class="link" bind:tap="handleLink" data-url="/doc/patient/pages/doc2/index">《个人信息及隐私协议政策》</text>
<text class="link" bind:tap="handleLink" data-url="/doc/patient/pages/doc2/index">《用户协议》</text>
<text class="link" bind:tap="handleLink" data-url="/doc/patient/pages/doc2/index">《隐私政策》</text>
</view>
</view>
<view class="a-col">
<image
wx:if="{{check2}}"
class="icon"
src="{{imageUrl}}za-images/icon20.png?t={{Timestamp}}"
bind:tap="handleCheck"
data-key="check2"
></image>
<image
wx:else
class="icon"
src="{{imageUrl}}za-images/icon19.png?t={{Timestamp}}"
src="/images/icon25.png"
bind:tap="handleCheck"
data-key="check2"
></image>
<image wx:else class="icon" src="/images/icon24.png" bind:tap="handleCheck" data-key="check2"></image>
<view class="a-content">
特此同意依照此
<text class="link" bind:tap="handleLink" data-url="/doc/patient/pages/doc2/index">《个人信息及隐私保护政策》</text>
我同意依照此
<text class="link" bind:tap="handleLink" data-url="/doc/patient/pages/doc2/index">《隐私政策》</text>
规定收集我的个人敏感信息
</view>
</view>
</view>
<view class="divider">
<van-divider contentPosition="center" custom-style="color:rgba(207, 209, 213, 1)">或者</van-divider>
</view>
<view class="other">
<view class="col" bind:tap="handleVisitors">
<image class="icon" src="/images/icon26.png"></image>
随便看看
<van-icon name="arrow" />
</view>
<view class="line"></view>
<view class="col" bind:tap="handleDoctor">
<image class="icon" src="/images/icon27.png"></image>
我是医生
<van-icon name="arrow" />
</view>
</view>
</view>

154
src/patient/pages/my/index.scss

@ -1,163 +1,50 @@ @@ -1,163 +1,50 @@
page {
background-color: #fcfcfc;
background-color: rgba(246, 248, 249, 1);
}
.page {
.bg {
width: 100%;
height: 902rpx;
}
.page-container {
position: absolute;
left: 0;
top: 0;
width: 100%;
padding: 0 40rpx;
box-sizing: border-box;
padding-bottom: 200rpx;
.banner {
padding: 24rpx;
border-radius: 24rpx;
background: rgba(255, 255, 255, 0.13);
border: 2rpx solid rgba(235, 236, 238, 0.51);
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
.user {
display: flex;
align-items: center;
justify-content: space-between;
.avatar {
flex-shrink: 0;
width: 116rpx;
height: 116rpx;
width: 112rpx;
height: 112rpx;
border-radius: 50%;
border: 4rpx solid #fff;
}
.inner {
flex: 1;
padding-left: 16rpx;
padding-left: 28rpx;
.name {
font-size: 40rpx;
font-weight: bold;
color: var(--name);
color: rgba(33, 29, 46, 1);
}
.tip {
margin-top: 16rpx;
font-size: 24rpx;
color: #9e9e9e;
margin-top: 4rpx;
font-size: 28rpx;
color: rgba(173, 172, 178, 1);
.day {
font-size: 36rpx;
color: var(--name);
font-size: 40rpx;
color: rgba(185, 130, 255, 1);
font-weight: bold;
}
}
}
}
.options {
margin-top: 32rpx;
padding: 30rpx 22rpx;
display: flex;
align-items: center;
justify-content: space-between;
background: #ffffff;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 24rpx;
border: 1rpx solid rgba(222, 222, 222, 0.6);
.ver-line {
margin: 0 26rpx;
flex-shrink: 0;
width: 2rpx;
height: 60rpx;
background-color: rgba(221, 221, 221, 0.6);
}
.option {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
.icon {
margin-right: 16rpx;
width: 50rpx;
height: 50rpx;
}
.wrap {
.title {
font-size: 28rpx;
color: #484848;
font-weight: bold;
.sub {
font-size: 20rpx;
}
}
.content {
margin-top: 4rpx;
font-size: 20rpx;
color: var(--name);
display: flex;
align-items: center;
justify-content: center;
&.gift {
color: #c2c2c2;
}
.line {
margin: 0 10rpx;
width: 2rpx;
height: 16rpx;
background-color: var(--name);
}
}
}
}
}
.notice {
margin-top: 24rpx;
height: 44rpx;
background: linear-gradient(90deg, rgba(241, 241, 241, 0) 0%, #f1f1f1 52%, rgba(241, 241, 241, 0) 100%);
border-radius: 16rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 24rpx;
color: #3f3f3f;
.icon {
margin-right: 6rpx;
width: 30rpx;
height: 24rpx;
}
}
}
.common-operations {
margin-top: 32rpx;
display: flex;
.item {
flex: 1;
padding: 30rpx;
display: flex;
align-items: center;
justify-content: center;
background: #ffffff;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 24rpx;
border: 2rpx solid rgba(235, 236, 238, 0.51);
.icon {
width: 64rpx;
height: 64rpx;
margin-right: 16rpx;
}
.name {
font-size: 32rpx;
color: #474747;
}
}
.item:first-of-type {
margin-right: 30rpx;
}
}
.options-list {
margin-top: 32rpx;
margin-top: 52rpx;
padding: 16rpx 28rpx;
background: #ffffff;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
@ -178,12 +65,8 @@ page { @@ -178,12 +65,8 @@ page {
margin-right: 16rpx;
}
.icon {
width: 36rpx;
height: 36rpx;
}
.icon {
width: 40rpx;
height: 36rpx;
height: 40rpx;
}
}
.more {
@ -194,10 +77,15 @@ page { @@ -194,10 +77,15 @@ page {
}
}
}
.switch-doctor {
margin-top: 80rpx;
text-align: center;
.login-out {
margin: 84rpx 40rpx 0;
height: 88rpx;
border-radius: 130rpx 130rpx 130rpx 130rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 32rpx;
color: #484848;
color: rgba(105, 104, 110, 1);
background-color: #fff;
}
}

1
src/patient/pages/my/index.ts

@ -135,4 +135,5 @@ Page({ @@ -135,4 +135,5 @@ Page({
url: '/patient/pages/webview/index',
})
},
handleLoginOut() {},
})

127
src/patient/pages/my/index.wxml

@ -1,8 +1,10 @@ @@ -1,8 +1,10 @@
<view class="page" style="{{theme === 'DRUG'?'--name:#24d8c8':'--name:#e04775'}}">
<view
class="page"
style="--name: rgba(185, 130, 255, 1); background: url('/images/bg10.png') no-repeat top center/100% 512rpx;padding-top:{{pageTop+22}}px"
>
<navBar color="#364E9E" fixed title="" home="{{false}}"></navBar>
<image class="bg" src="{{imageUrl}}za-images/1/my-bg.png?t={{Timestamp}}"></image>
<view class="page-container">
<view class="banner" style="margin-top:{{bottom+26}}px">
<view class="banner">
<view class="user">
<image
class="avatar"
@ -12,93 +14,30 @@ @@ -12,93 +14,30 @@
data-url="/patient/pages/getUserInfo/index"
></image>
<view class="inner">
<!-- <view class="name">Hi,{{zdUserInfo.PatientName}}{{zdUserInfo.RelationType== 2 ? '亲友':''}}</view> -->
<view class="name">{{today}}</view>
<view class="name">{{zdUserInfo.PatientName}}</view>
<!-- ignore-prettier -->
<view class="tip" wx:if="{{zdUserInfo.UserType>=3}}">
重症肌无力加油站已伴您走过
<view class="tip">
TED规关爱中心已伴您走过
<text class="day">{{zdUserInfo.JoinDays}}</text>
</view>
</view>
</view>
<view class="options" wx:if="{{selfScore.PatientScoreSwitch==='1'}}">
<view class="option">
<image
class="icon"
style="width: 56rpx; height: 54rpx"
src="{{imageUrl}}za-images/2/money.png?t={{Timestamp}}"
></image>
<view class="wrap">
<view class="title">
{{selfScore.score}}
<text class="sub">能量</text>
</view>
<view class="content">
<view bind:tap="routerTo" data-url="/patient/pages/priceDetail/index">能量明细</view>
<text class="line"></text>
<view bind:tap="routerTo" data-url="/patient/pages/scoreRule/index">能量规则</view>
</view>
</view>
</view>
<view class="ver-line"></view>
<view
class="option"
style="width: 54rpx; height: 60rpx"
bind:tap="routerTo"
data-url="/patient/pages/giftList/index"
>
<image
class="icon"
src="{{imageUrl}}za-images/2/gift{{theme === 'DRUG' ? '-drug' : ''}}.png?t={{Timestamp}}"
></image>
<view class="wrap">
<view class="title">礼品中心</view>
<view class="content gift">能量兑换丰厚礼品</view>
</view>
</view>
</view>
<view class="notice" wx:if="{{selfScore.expire.expireStatus===1}}">
<image class="icon" src="{{imageUrl}}za-images/2/notice.png?t={{Timestamp}}"></image>
你有{{selfScore.expire.expireScore}}能量将于6月31日过期
</view>
</view>
<view class="common-operations">
<view bind:tap="handleMyHealthRecord" class="item" data-url="/gift/pages/myHealthRecord/index">
<image
class="icon"
src="{{imageUrl}}za-images/{{theme === 'DRUG'?1.5:1}}/my-common-icon1.png?t={{Timestamp}}"
></image>
<view class="name">健康档案</view>
</view>
<view bind:tap="routerTo" class="item" data-url="/patient/pages/mySave/index">
<image
class="icon"
src="{{imageUrl}}za-images/{{theme === 'DRUG'?1.5:1}}/my-common-icon2.png?t={{Timestamp}}"
></image>
<view class="name">我的收藏</view>
</view>
</view>
<view class="options-list">
<view bind:tap="routerTo" class="row" data-url="/patient/pages/myLive/index">
<view class="col">
<image
class="icon"
src="{{imageUrl}}za-images/{{theme === 'DRUG'?1.5:1}}/my-list-icon1.png?t={{Timestamp}}"
></image>
我报名的会议
<image class="icon" src="/images/icon32.png"></image>
我报名的活动
</view>
<view class="more">
<van-icon name="arrow" />
</view>
</view>
<view bind:tap="handleFamily" class="row" data-url="/patient/pages/family/index">
<view bind:tap="routerTo" class="row" data-url="/patient/pages/mySave/index">
<view class="col">
<image
class="icon"
src="{{imageUrl}}za-images/{{theme === 'DRUG'?1.5:1}}/my-list-icon2.png?t={{Timestamp}}"
></image>
我的亲友
<image class="icon" src="/images/icon33.png"></image>
我的收藏
</view>
<view class="more">
<van-icon name="arrow" />
@ -106,55 +45,25 @@ @@ -106,55 +45,25 @@
</view>
<view bind:tap="routerTo" class="row" data-url="/patient/pages/personalInformation/index">
<view class="col">
<image
class="icon"
src="{{imageUrl}}za-images/{{theme === 'DRUG'?1.5:1}}/my-list-icon3.png?t={{Timestamp}}"
></image>
<image class="icon" src="/images/icon34.png"></image>
个人信息
</view>
<view class="more">
<van-icon name="arrow" />
</view>
</view>
<view bind:tap="routerTo" class="row" data-url="/patient/pages/storyList/index">
<view bind:tap="routerTo" class="row" data-url="">
<view class="col">
<image
class="icon"
src="{{imageUrl}}za-images/{{theme === 'DRUG'?1.5:1}}/my-list-icon4.png?t={{Timestamp}}"
></image>
我的故事
<image class="icon" src="/images/icon35.png"></image>
协议相关
</view>
<view class="more">
<van-icon name="arrow" />
</view>
</view>
<!-- <view bind:tap="handleMiniDoctor" wx:if="{{zdUserInfo.UserType<4}}" class="row"> -->
<!-- <view class="col"> -->
<!-- <image class="icon icon1" src="{{imageUrl}}za-images/1.5/my-list-icon5.png?t={{Timestamp}}"></image> -->
<!-- “有力人生”专属服务 -->
<!-- </view> -->
<!-- <view class="more"> -->
<!-- <van-icon name="arrow" /> -->
<!-- </view> -->
<!-- </view> -->
<view class="row">
<view class="col">
<image
class="icon"
src="{{imageUrl}}za-images/{{theme === 'DRUG'?1.5:1}}/my-list-icon4.png?t={{Timestamp}}"
></image>
ADL提醒
</view>
<view class="more">
<van-switch
checked="{{zdUserInfo.AdlNotifySwitch==1}}"
size="20px"
bind:change="handleAdlChaneg"
></van-switch>
</view>
</view>
</view>
</view>
<view class="login-out" bind:tap="handleLoginOut">退出登录</view>
</view>
<patient-tab-bar></patient-tab-bar>

3
src/patient/pages/myLive/index.json

@ -1,9 +1,10 @@ @@ -1,9 +1,10 @@
{
"navigationBarTitleText": "我报名的活动",
"navigationStyle": "default",
"navigationStyle": "custom",
"usingComponents": {
"van-tab": "@vant/weapp/tab/index",
"van-tabs": "@vant/weapp/tabs/index",
"navbar": "/components/navbar/index",
"van-icon": "@vant/weapp/icon/index"
}
}

434
src/patient/pages/myLive/index.scss

@ -1,318 +1,116 @@ @@ -1,318 +1,116 @@
.page {
padding-bottom: 120rpx;
.sticky {
position: sticky;
top: 0;
left: 0;
z-index: 20;
background-color: #fff;
padding-bottom: 10rpx;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
.tab {
font-size: 32rpx;
color: #9e9e9e;
}
.tab-active {
font-size: 36rpx;
color: #484848;
}
}
.allin-list {
margin: 32rpx 30rpx;
.on-list-item {
margin-bottom: 20rpx;
background: #ffffff;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 24rpx;
border: 2rpx solid #ebecee;
.photo-wrap {
position: relative;
.photo {
border-radius: 24rpx 24rpx 0 0;
display: block;
width: 100%;
height: 388rpx;
}
.status {
padding: 6rpx 32rpx;
position: absolute;
top: 0;
left: 0;
display: flex;
align-items: center;
background: linear-gradient(90deg, #e5e9f5 0%, #fde4ec 100%);
border-radius: 24rpx 0rpx 24rpx 0rpx;
font-size: 28rpx;
color: #e04775;
.dot {
margin-right: 8rpx;
width: 13rpx;
height: 13rpx;
border-radius: 50%;
background-color: #e04775;
}
&.bad {
color: #484848;
background: #e6e6e6;
.dot {
display: none;
}
}
}
.date {
padding: 18rpx 18rpx 8rpx;
position: absolute;
left: 40rpx;
bottom: 0;
background: #e04775;
border-radius: 11rpx 11rpx 0rpx 0rpx;
text-align: center;
.d-title {
font-size: 22rpx;
color: #ffffff;
font-weight: bold;
}
.ymd {
font-size: 18rpx;
color: #fff;
line-height: 28rpx;
border-bottom: 2rpx solid rgba(255, 255, 255, 0.34);
}
.hm {
font-size: 18rpx;
color: #fff;
line-height: 28rpx;
}
}
}
.inner {
padding: 32rpx 34rpx;
background-color: #fff;
border-radius: 0 0 24rpx 24rpx;
.tag {
margin-bottom: 16rpx;
width: 112rpx;
height: 36rpx;
font-size: 22rpx;
color: #ffffff;
line-height: 36rpx;
text-align: center;
background: #ffc137;
border-radius: 8rpx;
}
.title {
font-size: 32rpx;
color: #252525;
font-weight: bold;
.t-tag {
display: inline-block;
width: 112rpx;
height: 36rpx;
font-size: 22rpx;
color: #ffffff;
line-height: 36rpx;
text-align: center;
background: #e04775;
border-radius: 8rpx;
margin-right: 1em;
}
}
.content {
margin-top: 20rpx;
display: flex;
justify-content: space-between;
align-items: center;
.labels {
display: flex;
align-items: center;
flex-wrap: wrap;
.label {
margin-right: 16rpx;
margin-bottom: 16rpx;
padding: 2rpx 20rpx;
font-size: 22rpx;
color: #e04775;
border-radius: 18rpx;
background-color: rgba(224, 71, 117, 0.13);
word-break: break-all;
}
}
.people {
color: #9e9e9e;
font-size: 22rpx;
}
}
.footer {
margin-top: 32rpx;
display: flex;
align-items: center;
justify-content: space-between;
.site {
font-size: 22rpx;
color: #bebebe;
}
.btn {
margin-left: 10rpx;
flex-shrink: 0;
padding: 4rpx 36rpx;
font-size: 28rpx;
color: #ffffff;
background: #e04775;
border-radius: 24rpx;
&.active {
color: #484848;
background-color: #e7e7e7;
}
.icon {
width: 24rpx;
height: 24rpx;
}
}
}
}
}
.off-list-item {
margin-bottom: 20rpx;
background: #ffffff;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 24rpx;
border: 2rpx solid #ebecee;
.photo-wrap {
position: relative;
.photo {
border-radius: 24rpx 24rpx 0 0;
display: block;
width: 100%;
height: 388rpx;
}
.status {
padding: 6rpx 32rpx;
position: absolute;
top: 0;
left: 0;
display: flex;
align-items: center;
background: linear-gradient(90deg, #e5e9f5 0%, #fde4ec 100%);
border-radius: 24rpx 0rpx 24rpx 0rpx;
font-size: 28rpx;
color: #e04775;
.dot {
margin-right: 8rpx;
width: 13rpx;
height: 13rpx;
border-radius: 50%;
background-color: #e04775;
}
&.bad {
color: #484848;
background: #e6e6e6;
.dot {
display: none;
}
}
}
.date {
padding: 18rpx 18rpx 8rpx;
position: absolute;
left: 40rpx;
bottom: 0;
background: #e04775;
border-radius: 11rpx 11rpx 0rpx 0rpx;
text-align: center;
.d-title {
font-size: 22rpx;
color: #ffffff;
font-weight: bold;
}
.ymd {
font-size: 18rpx;
color: #fff;
line-height: 28rpx;
border-bottom: 2rpx solid rgba(255, 255, 255, 0.34);
}
.hm {
font-size: 18rpx;
color: #fff;
line-height: 28rpx;
}
}
}
.inner {
padding: 32rpx 34rpx;
background-color: #fff;
border-radius: 0 0 24rpx 24rpx;
.tag {
margin-bottom: 16rpx;
width: 112rpx;
height: 36rpx;
font-size: 22rpx;
color: #ffffff;
line-height: 36rpx;
text-align: center;
background: #ffc137;
border-radius: 8rpx;
}
.title {
font-size: 32rpx;
color: #252525;
font-weight: bold;
}
.content {
margin-top: 20rpx;
display: flex;
justify-content: space-between;
align-items: center;
.labels {
display: flex;
align-items: center;
flex-wrap: wrap;
.label {
margin-right: 16rpx;
margin-bottom: 16rpx;
padding: 2rpx 20rpx;
font-size: 22rpx;
color: #e04775;
border-radius: 18rpx;
background-color: rgba(224, 71, 117, 0.13);
word-break: break-all;
}
}
.people {
color: #9e9e9e;
font-size: 22rpx;
}
}
.footer {
margin-top: 32rpx;
display: flex;
align-items: center;
justify-content: space-between;
.site {
font-size: 22rpx;
color: #bebebe;
}
.btn {
margin-left: 10rpx;
flex-shrink: 0;
padding: 4rpx 36rpx;
font-size: 28rpx;
color: #ffffff;
background: #e04775;
border-radius: 24rpx;
&.active {
color: #484848;
background-color: #e7e7e7;
}
.icon {
width: 24rpx;
height: 24rpx;
}
}
}
}
}
}
}
page {
background-color: rgba(246, 248, 249, 1);
}
.page {
padding-bottom: 120rpx;
.sticky {
position: sticky;
top: 0;
left: 0;
z-index: 20;
background-color: #fff;
padding-bottom: 10rpx;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
.tab {
font-size: 32rpx;
color: #9e9e9e;
}
.tab-active {
font-size: 36rpx;
color: #484848;
}
}
.allin-list {
margin: 32rpx 30rpx;
.list-item {
margin-bottom: 32rpx;
background: #ffffff;
border-radius: 24rpx;
.photo-wrap {
position: relative;
.photo {
border-radius: 24rpx 24rpx 0 0;
display: block;
width: 100%;
height: 328rpx;
}
.sign {
position: absolute;
right: 24rpx;
top: 24rpx;
width: 120rpx;
height: 42rpx;
font-size: 24rpx;
display: flex;
align-items: center;
justify-content: center;
color: rgba(255, 255, 255, 1);
background: rgba(0, 0, 0, 0.53);
border-radius: 74rpx 74rpx 74rpx 74rpx;
}
}
.inner {
padding: 32rpx 34rpx;
background-color: #fff;
border-radius: 0 0 24rpx 24rpx;
.title {
font-size: 32rpx;
color: rgba(33, 29, 46, 1);
font-weight: bold;
line-height: 48rpx;
}
.labels {
margin-top: 16rpx;
max-width: 56vw;
font-size: 28rpx;
color: rgba(105, 104, 110, 1);
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
.line {
margin: 0 4rpx;
vertical-align: baseline;
display: inline-block;
width: 1px;
height: 24rpx;
background-color: rgba(105, 104, 110, 0.2);
}
}
.footer {
margin-top: 32rpx;
display: flex;
align-items: center;
justify-content: space-between;
.people {
flex-shrink: 0;
color: rgba(173, 172, 178, 1);
font-size: 28rpx;
}
.btn {
margin-left: 10rpx;
flex-shrink: 0;
padding: 18rpx 36rpx;
font-size: 30rpx;
line-height: 1;
color: #ffffff;
background: linear-gradient(to right, #c690fd, #d79ffc);
border-radius: 80rpx;
min-width: 182rpx;
box-sizing: border-box;
text-align: center;
&.active {
color: #484848;
background: #e7e7e7;
}
.icon {
width: 24rpx;
height: 24rpx;
}
}
}
}
}
}
}

13
src/patient/pages/myLive/index.ts

@ -29,7 +29,7 @@ Page({ @@ -29,7 +29,7 @@ Page({
dateValue: dayjs().valueOf(),
})
}, 1000)
app.zdWaitLogin().then(() => {
app.waitLogin({ type: [1] }).then(() => {
this.getConfig()
app.getZdUserInfo(this, true)
})
@ -103,7 +103,7 @@ Page({ @@ -103,7 +103,7 @@ Page({
},
handleDetail(e) {
const { id } = e.currentTarget.dataset
const {active} = this.data
const { active } = this.data
if (active == 0) {
app.zdMpBehavior({ PageName: 'BTN_PATIENTSIGNEDUPACTIVITIESALLLIST' })
}
@ -123,4 +123,13 @@ Page({ @@ -123,4 +123,13 @@ Page({
this.getList(page + 1)
}
},
handleBack() {
wx.navigateBack({
fail() {
wx.reLaunch({
url: '/patient/pages/index/index',
})
},
})
},
})

224
src/patient/pages/myLive/index.wxml

@ -1,162 +1,62 @@ @@ -1,162 +1,62 @@
<view class="page">
<view class="sticky">
<van-tabs
wx:if="{{online_open_status==1 && offline_open_status==1}}"
class="navbar"
active="{{ active }}"
bind:change="tabChange"
title-inactive-color="#9E9E9E"
title-active-color="#484848"
line-width="{{17}}"
line-height="{{4}}"
color="#E04775"
tab-class="tab"
tab-active-class="tab-active"
>
<van-tab title="全部"></van-tab>
<van-tab title="线上活动"></van-tab>
<van-tab title="线下活动"></van-tab>
</van-tabs>
</view>
<view class="allin-list">
<block wx:for="{{list}}" wx:key="Id">
<view class="on-list-item" wx:if="{{item.Type==1}}" bind:tap="handleDetail" data-id="{{item.Id}}">
<view class="photo-wrap">
<image class="photo" mode="aspectFill" src="{{item.IntroductionUrl}}"></image>
<view class="status {{item.Status != 2 && 'bad'}}">
<view class="dot"></view>
{{liveStatus[item.Status]}}
</view>
<!-- <view class="date"> -->
<!-- <view class="d-title"> -->
<!-- <van-icon class="icon" name="play" /> -->
<!-- 会议时间 -->
<!-- </view> -->
<!-- <block wx:if="{{item.isDay}}"> -->
<!-- <view class="ymd">{{item.BeginDate}}</view> -->
<!-- <view class="hm">{{item.BeginHm}}-{{item.EndHm}}</view> -->
<!-- </block> -->
<!-- <block wx:else> -->
<!-- <view class="ymd">{{item.BeginTime}}</view> -->
<!-- <view class="hm">{{item.EndTime}}</view> -->
<!-- </block> -->
<!-- </view> -->
</view>
<view class="inner">
<view class="tag" wx:if="{{active==0}}">线上活动</view>
<view class="title">{{item.Name}}</view>
<view class="content">
<view class="labels">
<view class="label" wx:for="{{item.Labels}}" wx:for-item="label" wx:key="index">{{label}}</view>
</view>
<view class="people" wx:if="{{~~item.SignUpPeopleNum}}">{{item.SignUpPeopleNum}}人已报名</view>
</view>
<view class="footer">
<view class="site">{{item.MasterName}} {{item.MasterTitle}}</view>
<view class="btn active" wx:if="{{ item.Status==99}}">已取消</view>
<view class="btn active" wx:elif="{{ item.Status==100}}">已删除</view>
<view class="btn" wx:elif="{{item.Status==3 && item.ReplayVideoUrl}}">看回放</view>
<view class="btn active" wx:elif="{{item.Status==3 && !item.ReplayVideoUrl}}">回放生成中</view>
<block wx:elif="{{item.IsSignUp==1 && zdUserInfo.AuditStatus}}">
<block wx:if="{{zdUserInfo.AuditStatus == 1 || zdUserInfo.AuditStatus == 3 || zdUserInfo.AuditStatus == 4}}">
<view class="btn active" wx:if="{{item.SignUpStatus==1}}">审核中</view>
<block wx:elif="{{item.SignUpStatus==2}}">
<view class="btn" wx:if="{{item.BeginTimeValue * 1 < dateValue * 1}}">参会</view>
<view class="btn active" wx:else>已报名</view>
</block>
<block wx:elif="{{item.SignUpStatus==3}}">
<view
class="btn active"
wx:if="{{item.IsLimitUser==1 && item.SignUpPeopleNum * 1 >= item.LimitPeopleNum * 1}}"
>
已满额
</view>
</block>
</block>
</block>
<block wx:else>
<view
class="btn active"
wx:if="{{item.IsLimitUser==1 && item.SignUpPeopleNum * 1 >= item.LimitPeopleNum * 1}}"
>
已满额
</view>
<view class="btn active" wx:elif="{{item.SignUpDeadlineValue * 1 < dateValue * 1}}">报名已截止</view>
<view class="btn" wx:else>报名</view>
</block>
</view>
</view>
</view>
<view class="off-list-item" wx:elif="{{item.Type==2}}" bind:tap="handleDetail" data-id="{{item.Id}}">
<view class="photo-wrap">
<image class="photo" mode="aspectFill" src="{{item.IntroductionUrl}}"></image>
<view class="status {{item.Status != 2 && 'bad'}}">
<view class="dot"></view>
{{activityStatus[item.Status]}}
</view>
<!-- <view class="date"> -->
<!-- <view class="d-title"> -->
<!-- <van-icon name="play" /> -->
<!-- 活动时间 -->
<!-- </view> -->
<!-- <block wx:if="{{item.isDay}}"> -->
<!-- <view class="ymd">{{item.BeginDate}}</view> -->
<!-- <view class="hm">{{item.BeginHm}}-{{item.EndHm}}</view> -->
<!-- </block> -->
<!-- <block wx:else> -->
<!-- <view class="ymd">{{item.BeginTime}}</view> -->
<!-- <view class="hm">{{item.EndTime}}</view> -->
<!-- </block> -->
<!-- </view> -->
</view>
<view class="inner">
<view class="tag" wx:if="{{active==0}}">线下活动</view>
<view class="title">{{item.Name}}</view>
<view class="content">
<view class="labels">
<view class="label" wx:for="{{item.Labels}}" wx:for-item="label" wx:key="index">{{label}}</view>
</view>
<view class="people" wx:if="{{~~item.SignUpPeopleNum}}">{{item.SignUpPeopleNum}}人已报名</view>
</view>
<view class="footer">
<view class="site">
<view>{{item.Location}}</view>
<view>{{item.Distance}}</view>
</view>
<view class="btn active" wx:if="{{ item.Status==3}}">已结束</view>
<view class="btn active" wx:elif="{{ item.Status==99}}">已取消</view>
<view class="btn active" wx:elif="{{ item.Status==100}}">已删除</view>
<block wx:elif="{{item.IsSignUp==1 && zdUserInfo.AuditStatus}}">
<block wx:if="{{zdUserInfo.AuditStatus == 1 || zdUserInfo.AuditStatus == 3 || zdUserInfo.AuditStatus == 4}}">
<view class="btn active" wx:if="{{item.SignUpStatus==1}}">审核中</view>
<block wx:elif="{{item.SignUpStatus==2}}">
<view class="btn" wx:if="{{item.BeginTimeValue * 1 < dateValue * 1}}">已报名</view>
<view class="btn active" wx:else>已报名</view>
</block>
<block wx:elif="{{item.SignUpStatus==3}}">
<view
class="btn active"
wx:if="{{item.IsLimitUser==1 && item.SignUpPeopleNum * 1 >= item.LimitPeopleNum * 1}}"
>
已满额
</view>
</block>
</block>
</block>
<block wx:else>
<view
class="btn active"
wx:if="{{item.IsLimitUser==1 && item.SignUpPeopleNum * 1 >= item.LimitPeopleNum * 1}}"
>
已满额
</view>
<view class="btn active" wx:elif="{{item.SignUpDeadlineValue * 1 < dateValue * 1}}">报名已截止</view>
<view class="btn" wx:else>报名</view>
</block>
</view>
</view>
</view>
</block>
</view>
<pagination pagination="{{pagination}}"></pagination>
</view>
<navbar fixed title="我报名的活动" custom-style="background:{{background}}">
<van-icon name="arrow-left" slot="left" color="#000" bind:tap="handleBack" />
</navbar>
<view
class="page"
style="background: url('/images/bg10.png') no-repeat top center/100% 410rpx;padding-top:{{pageTop+22}}px;"
>
<view class="allin-list">
<view class="list-item" wx:for="{{list}}" bind:tap="handleDetail" data-id="{{item.Id}}" wx:key="index">
<view class="photo-wrap">
<image class="photo" mode="aspectFill" src="{{item.IntroductionUrl}}"></image>
<view class="sign" wx:if="{{item.SignUpStatus==2}}">已报名</view>
</view>
<view class="inner">
<view class="title">{{item.Name}}</view>
<view class="labels" wx:if="{{item.doctorName}}">
{{item.doctorName}}
<text class="line" wx:if="{{item.MasterHosipital}}"></text>
{{item.MasterHosipital}}
</view>
<view class="footer">
<view class="people" wx:if="{{item.SignUpPeopleNum * 1}}">{{item.SignUpPeopleNum}}人已报名</view>
<view class="btn active" wx:if="{{ item.Status==99}}">已取消</view>
<view class="btn active" wx:elif="{{ item.Status==100}}">已删除</view>
<view class="btn" wx:elif="{{item.Status==3 && item.ReplayVideoUrl}}">看回放</view>
<view class="btn active" wx:elif="{{item.Status==3 && !item.ReplayVideoUrl}}">回放生成中</view>
<block wx:elif="{{item.IsSignUp==1 && zdUserInfo.AuditStatus}}">
<block
wx:if="{{zdUserInfo.AuditStatus == 1 || zdUserInfo.AuditStatus == 3 || zdUserInfo.AuditStatus == 4}}"
>
<view class="btn active" wx:if="{{item.SignUpStatus==1}}">审核中</view>
<block wx:elif="{{item.SignUpStatus==2}}">
<view class="btn" wx:if="{{item.BeginTimeValue * 1 < dateValue * 1}}">参会</view>
<view class="btn active" wx:else>已报名</view>
</block>
<block wx:elif="{{item.SignUpStatus==3}}">
<view
class="btn active"
wx:if="{{item.IsLimitUser==1 && item.SignUpPeopleNum * 1 >= item.LimitPeopleNum * 1}}"
>
已满额
</view>
</block>
</block>
</block>
<block wx:else>
<view
class="btn active"
wx:if="{{item.IsLimitUser==1 && item.SignUpPeopleNum * 1 >= item.LimitPeopleNum * 1}}"
>
已满额
</view>
<view class="btn active" wx:elif="{{item.SignUpDeadlineValue * 1 < dateValue * 1}}">报名已截止</view>
<view class="btn" wx:else>报名</view>
</block>
</view>
</view>
</view>
</view>
<pagination pagination="{{pagination}}"></pagination>
</view>

3
src/patient/pages/mySave/index.json

@ -1,9 +1,10 @@ @@ -1,9 +1,10 @@
{
"navigationBarTitleText": "我的收藏",
"navigationStyle": "default",
"navigationStyle": "custom",
"usingComponents": {
"van-tab": "@vant/weapp/tab/index",
"van-tabs": "@vant/weapp/tabs/index",
"navbar": "/components/navbar/index",
"van-icon": "@vant/weapp/icon/index"
}
}

392
src/patient/pages/mySave/index.scss

@ -1,295 +1,97 @@ @@ -1,295 +1,97 @@
.page {
padding-bottom: 120rpx;
.sticky {
position: sticky;
top: 0;
left: 0;
z-index: 20;
background-color: #fff;
padding-bottom: 10rpx;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
.tab {
font-size: 32rpx;
color: #9e9e9e;
}
.tab-active {
font-size: 36rpx;
color: #484848;
}
}
.info-list {
margin: 32rpx 30rpx;
padding: 24rpx;
background: #ffffff;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 24rpx;
border: 2rpx solid #ebecee;
.list-item {
display: flex;
margin-bottom: 22rpx;
.photo {
width: 232rpx;
height: 184rpx;
flex-shrink: 0;
border-radius: 16rpx;
border: 1rpx solid #ebecee;
margin-right: 16rpx;
}
.inner {
flex: 1;
padding-bottom: 20rpx;
border-bottom: 1rpx solid rgba(182, 183, 186, 0.21);
.title {
font-size: 28rpx;
color: #252525;
font-weight: bold;
line-height: 42rpx;
}
.date {
margin-top: 10rpx;
color: #9e9e9e;
font-size: 22rpx;
}
.labels {
margin-top: 16rpx;
display: flex;
flex-wrap: wrap;
align-items: center;
.label {
margin-right: 16rpx;
margin-bottom: 10rpx;
padding: 2rpx 20rpx;
font-size: 22rpx;
color: #e04775;
word-break: break-all;
border-radius: 18rpx;
background-color: rgba(224, 71, 117, 0.13);
}
}
.footer {
margin-top: 10rpx;
display: flex;
justify-content: flex-end;
.f-item {
display: flex;
align-items: center;
font-size: 22rpx;
color: #b6b7ba;
.icon {
margin-right: 8rpx;
width: 32rpx;
height: 32rpx;
}
&.active {
color: #e04775;
}
&::after {
margin: 18rpx;
content: "";
width: 2rpx;
height: 20rpx;
background-color: #f3f3f4;
}
}
.share {
padding: 0;
background-color: transparent;
margin: 0;
&::after {
border: none;
outline: none;
}
}
}
}
}
}
.video-list {
margin: 32rpx 30rpx;
.list-item {
margin-bottom: 20rpx;
background: #ffffff;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 24rpx;
border: 2rpx solid #ebecee;
.photo {
position: relative;
border-radius: 24rpx 24rpx 0 0;
display: block;
width: 100%;
height: 388rpx;
overflow: hidden;
.video {
border-radius: inherit;
width: 100%;
height: 100%;
}
.poster {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border-radius: inherit;
}
.play {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 104rpx;
height: 104rpx;
}
}
.inner {
padding: 32rpx 34rpx 28rpx;
background-color: #fff;
border-radius: 0 0 24rpx 24rpx;
.title {
font-size: 32rpx;
color: #252525;
font-weight: bold;
}
.content {
margin-top: 22rpx;
padding-bottom: 24rpx;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1rpx solid #ebecee;
.labels {
display: flex;
flex-wrap: wrap;
align-items: center;
.label {
margin-right: 16rpx;
margin-bottom: 10rpx;
padding: 2rpx 20rpx;
font-size: 22rpx;
color: #e04775;
word-break: break-all;
border-radius: 18rpx;
background-color: rgba(224, 71, 117, 0.13);
}
}
.date {
color: #9e9e9e;
font-size: 22rpx;
}
}
.footer {
margin-top: 28rpx;
display: flex;
justify-content: space-around;
.f-item {
display: flex;
align-items: center;
font-size: 22rpx;
color: #b6b7ba;
.icon {
margin-right: 8rpx;
width: 32rpx;
height: 32rpx;
}
&.active {
color: #e04775;
}
&::after {
margin: 18rpx;
content: "";
width: 2rpx;
height: 20rpx;
background-color: #f3f3f4;
}
}
.share {
padding: 0;
background-color: transparent;
margin: 0;
&::after {
border: none;
outline: none;
}
}
}
}
}
}
.question-list {
margin: 32rpx 30rpx;
.row {
padding: 38rpx 32rpx;
display: flex;
background: #ffffff;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 24rpx;
border: 2rpx solid #ebecee;
margin-bottom: 16rpx;
.num {
padding: 0 15rpx;
font-size: 28rpx;
color: #cf5375;
flex-shrink: 0;
height: 40rpx;
background: #ffffff linear-gradient(136deg, #e8ebfd 0%, #fde0ea 100%);
border-radius: 8rpx;
text-align: center;
line-height: 40rpx;
}
.wrap {
flex: 1;
color: #252525;
padding-left: 16rpx;
display: flex;
align-items: center;
justify-content: space-between;
.content {
flex: 1;
.c-title {
font-size: 28rpx;
color: #252525;
font-weight: bold;
}
.footer {
margin-top: 28rpx;
display: flex;
justify-content: flex-end;
.f-item {
display: flex;
align-items: center;
font-size: 22rpx;
color: #b6b7ba;
.icon {
margin-right: 8rpx;
width: 32rpx;
height: 32rpx;
}
&.active {
color: #e04775;
}
&:not(:last-of-type)::after {
margin: 18rpx;
content: "";
width: 2rpx;
height: 20rpx;
background-color: #f3f3f4;
}
}
.share {
padding: 0;
background-color: transparent;
margin: 0;
&::after {
border: none;
outline: none;
}
}
}
}
}
}
}
}
page {
background-color: rgba(246, 248, 249, 1);
}
.page {
padding-bottom: 120rpx;
.sticky {
position: sticky;
top: 0;
left: 0;
z-index: 20;
background-color: #fff;
padding-bottom: 10rpx;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
.tab {
font-size: 32rpx;
color: #9e9e9e;
}
.tab-active {
font-size: 36rpx;
color: #484848;
}
}
.info-list {
margin: 32rpx 30rpx;
padding: 24rpx;
background: #ffffff;
border-radius: 24rpx;
.list-item {
display: flex;
margin-bottom: 22rpx;
border-bottom: 1rpx dotted rgba(39, 58, 101, 0.2);
&:last-of-type{
border: none;
}
.photo {
width: 210rpx;
height: 140rpx;
flex-shrink: 0;
border-radius: 16rpx;
margin-right: 16rpx;
}
.inner {
flex: 1;
padding-bottom: 20rpx;
.title {
font-size: 32rpx;
color: rgba(33, 29, 46, 1);
font-weight: bold;
line-height: 42rpx;
}
.date {
margin-top: 12rpx;
color: rgba(173, 172, 178, 1);
font-size: 28rpx;
}
.footer {
margin-top: 20rpx;
display: flex;
gap: 48rpx;
.f-item {
display: flex;
align-items: center;
gap: 8rpx;
font-size: 28rpx;
color: rgba(105, 104, 110, 1);
line-height: 1;
.icon {
margin-right: 8rpx;
width: 36rpx;
height: 36rpx;
}
&.active {
color: #e04775;
}
}
.share {
padding: 0;
background-color: transparent;
margin: 0;
&::after {
border: none;
outline: none;
}
}
.line {
margin: 18rpx;
width: 2rpx;
height: 20rpx;
background-color: #f3f3f4;
}
}
}
}
}
}

175
src/patient/pages/mySave/index.ts

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
const app = getApp<IAppOption>();
const licia = require('miniprogram-licia');
const app = getApp<IAppOption>()
const licia = require('miniprogram-licia')
Page({
data: {
@ -23,10 +23,10 @@ Page({ @@ -23,10 +23,10 @@ Page({
}).then((res) => {
this.setData({
config: res,
});
this.getConfig();
});
});
})
this.getConfig()
})
})
},
getConfig() {
wx.ajax({
@ -38,28 +38,28 @@ Page({ @@ -38,28 +38,28 @@ Page({
picTextStatus: res.picTextStatus,
videoStatus: res.videoStatus,
active: res.picTextStatus == 0 ? 1 : 0,
});
this.getList();
});
})
this.getList()
})
},
getList() {
const { active, pagination } = this.data;
const { active, pagination } = this.data
if (active == 0) {
this.getInfoList();
this.getInfoList()
} else if (active == 1) {
this.getVideoList();
this.getVideoList()
} else if (active == 2) {
this.getQuestionList();
this.getQuestionList()
}
if (active == 0 && pagination.page == 1) {
app.zdMpBehavior({ PageName: 'PG_PATIENTMYFAVORITES_KNOWLEDGEBASE' });
app.zdMpBehavior({ PageName: 'PG_PATIENTMYFAVORITES_KNOWLEDGEBASE' })
}
if (active == 1 && pagination.page == 1) {
app.zdMpBehavior({ PageName: 'PG_PATIENTMYFAVORITES_VIDEOCLASS' });
app.zdMpBehavior({ PageName: 'PG_PATIENTMYFAVORITES_VIDEOCLASS' })
}
if (active == 2 && pagination.page == 1) {
app.zdMpBehavior({ PageName: 'PG_PATIENTMYFAVORITES_HEALTHQA' });
app.zdMpBehavior({ PageName: 'PG_PATIENTMYFAVORITES_HEALTHQA' })
}
},
getInfoList(newPage = 1) {
@ -72,9 +72,9 @@ Page({ @@ -72,9 +72,9 @@ Page({
loading: true,
}).then((res) => {
res.list = res.list.map((item) => {
return item;
});
const list = res.page == 1 ? res.list : [...this.data.list, ...res.list];
return item
})
const list = res.page == 1 ? res.list : [...this.data.list, ...res.list]
this.setData({
list,
pagination: {
@ -82,8 +82,8 @@ Page({ @@ -82,8 +82,8 @@ Page({
pages: res.pages,
count: res.count,
},
});
});
})
})
},
getVideoList(newPage = 1) {
wx.ajax({
@ -95,9 +95,9 @@ Page({ @@ -95,9 +95,9 @@ Page({
loading: true,
}).then((res) => {
res.list = res.list.map((item) => {
return item;
});
const list = res.page == 1 ? res.list : [...this.data.list, ...res.list];
return item
})
const list = res.page == 1 ? res.list : [...this.data.list, ...res.list]
this.setData({
list,
pagination: {
@ -105,8 +105,8 @@ Page({ @@ -105,8 +105,8 @@ Page({
pages: res.pages,
count: res.count,
},
});
});
})
})
},
getQuestionList(newPage = 1) {
wx.ajax({
@ -118,9 +118,9 @@ Page({ @@ -118,9 +118,9 @@ Page({
loading: true,
}).then((res) => {
res.list = res.list.map((item) => {
return item;
});
const list = res.page == 1 ? res.list : [...this.data.list, ...res.list];
return item
})
const list = res.page == 1 ? res.list : [...this.data.list, ...res.list]
this.setData({
list,
pagination: {
@ -128,11 +128,11 @@ Page({ @@ -128,11 +128,11 @@ Page({
pages: res.pages,
count: res.count,
},
});
});
})
})
},
handleStar(e) {
const { id, index } = e.currentTarget.dataset;
const { id, index } = e.currentTarget.dataset
wx.ajax({
method: 'POST',
url: '?r=zd/pic-text/compliment',
@ -144,11 +144,11 @@ Page({ @@ -144,11 +144,11 @@ Page({
this.setData({
[`list[${index}].IsCompliment`]: 1,
[`list[${index}].ComplimentNum`]: Number(this.data.list[index].ComplimentNum) + 1,
});
});
})
})
},
handleVideoStar(e: WechatMiniprogram.CustomEvent) {
const { id, index } = e.currentTarget.dataset;
const { id, index } = e.currentTarget.dataset
wx.ajax({
method: 'POST',
url: '?r=zd/video/compliment',
@ -160,24 +160,24 @@ Page({ @@ -160,24 +160,24 @@ Page({
this.setData({
[`list[${index}].ComplimentNum`]: Number(this.data.list[index].ComplimentNum) + 1,
[`list[${index}].IsCompliment`]: 1,
});
});
})
})
},
handleVideoPlay(e: WechatMiniprogram.CustomEvent) {
const { id, index } = e.currentTarget.dataset;
const { list } = this.data;
const { id, index } = e.currentTarget.dataset
const { list } = this.data
list.map((item: any, i) => {
if (item.play && i != index) {
const ctx = wx.createVideoContext(`video${i}`);
ctx.pause();
const ctx = wx.createVideoContext(`video${i}`)
ctx.pause()
this.setData({
[`list[${index}].play`]: false,
});
})
}
});
})
this.setData({
[`list[${index}].play`]: true,
});
})
wx.ajax({
method: 'POST',
url: '?r=zd/video/view',
@ -187,13 +187,13 @@ Page({ @@ -187,13 +187,13 @@ Page({
}).then((res) => {
this.setData({
HistoryId: res.HistoryId,
});
});
})
})
},
handleVideo(e: WechatMiniprogram.CustomEvent) {
const { index } = e.currentTarget.dataset;
const context = wx.createVideoContext(`video${index}`);
context.play();
const { index } = e.currentTarget.dataset
const context = wx.createVideoContext(`video${index}`)
context.play()
},
handleVideoTime: licia.throttle(function (e: WechatMiniprogram.CustomEvent) {
wx.ajax({
@ -204,38 +204,38 @@ Page({ @@ -204,38 +204,38 @@ Page({
WatchDuration: e.detail.currentTime,
},
}).then((res) => {
console.log('res: ', res);
});
console.log('res: ', res)
})
}, 5000),
handleVideoPause(e: WechatMiniprogram.CustomEvent) {
console.log(e);
console.log(e)
},
handleDetail(e: WechatMiniprogram.CustomEvent) {
const { id } = e.currentTarget.dataset;
const { id } = e.currentTarget.dataset
if (this.data.config.picTextEbookStatus == 1) {
const webviewUrl = encodeURIComponent(
`${app.globalData.url}/zdcare/#/book?loginState=${app.globalData.loginState}&Id=${id}`,
);
)
wx.navigateTo({
url: `/patient/pages/webview/index?url=${webviewUrl}`,
});
})
} else {
wx.navigateTo({
url: `/patient/pages/repositoryDetail/index?id=${id}`,
});
})
}
},
handleQuestionDetail(e) {
const { id } = e.currentTarget.dataset;
const { id } = e.currentTarget.dataset
const webviewUrl = encodeURIComponent(
`${app.globalData.url}/zdcare/#/info-detail?loginState=${app.globalData.loginState}&Id=${id}`,
);
)
wx.navigateTo({
url: `/patient/pages/webview/index?url=${webviewUrl}`,
});
})
},
handleVideoToggleSave(e: WechatMiniprogram.CustomEvent) {
const { id, collect, index } = e.currentTarget.dataset;
const { id, collect, index } = e.currentTarget.dataset
if (collect == 1) {
wx.ajax({
method: 'POST',
@ -248,12 +248,12 @@ Page({ @@ -248,12 +248,12 @@ Page({
wx.showToast({
title: '取消收藏',
icon: 'none',
});
})
this.setData({
[`list[${index}].IsCollect`]: 0,
[`list[${index}].CollectionPeopleNum`]: Number(this.data.list[index].CollectionPeopleNum) - 1,
});
});
})
})
} else {
wx.ajax({
method: 'POST',
@ -266,22 +266,22 @@ Page({ @@ -266,22 +266,22 @@ Page({
wx.showToast({
title: '收藏成功',
icon: 'none',
});
})
this.setData({
[`list[${index}].IsCollect`]: 1,
[`list[${index}].CollectionPeopleNum`]: Number(this.data.list[index].CollectionPeopleNum) + 1,
});
});
})
})
}
},
onReachBottom() {
const { page, pages } = this.data.pagination;
const { active } = this.data;
const { page, pages } = this.data.pagination
const { active } = this.data
if (pages > page) {
if (active == 0) {
this.getInfoList(page + 1);
this.getInfoList(page + 1)
} else {
this.getVideoList(page + 1);
this.getVideoList(page + 1)
}
}
},
@ -296,14 +296,23 @@ Page({ @@ -296,14 +296,23 @@ Page({
pages: 1,
count: 1,
},
});
this.getList();
})
this.getList()
},
handleBack() {
wx.navigateBack({
fail() {
wx.reLaunch({
url: '/patient/pages/index/index',
})
},
})
},
onShareAppMessage(e: any) {
if (e.from === 'button') {
const { id, index, type } = e.target.dataset;
const { list } = this.data;
const { Title, TitlePicLink, ImageUrl } = list[index];
const { id, index, type } = e.target.dataset
const { list } = this.data
const { Title, TitlePicLink, ImageUrl } = list[index]
if (type == 'info') {
wx.ajax({
method: 'POST',
@ -312,13 +321,13 @@ Page({ @@ -312,13 +321,13 @@ Page({
}).then(() => {
this.setData({
[`list[${index}].ShareNum`]: Number(this.data.list[index].ShareNum) + 1,
});
});
})
})
return {
title: Title,
path: `/patient/pages/repositoryDetail/index?id=${id}`,
imageUrl: TitlePicLink,
};
}
} else {
wx.ajax({
method: 'POST',
@ -327,19 +336,19 @@ Page({ @@ -327,19 +336,19 @@ Page({
}).then(() => {
this.setData({
[`list[${index}].ShareNum`]: Number(this.data.list[index].ShareNum) + 1,
});
});
})
})
return {
title: Title,
path: `/patient/pages/repository/index?id=${id}&active=1&title=${Title}`,
imageUrl: ImageUrl,
};
}
}
} else {
return {
title: '知识库',
path: '/patient/pages/repository/index',
};
}
}
},
});
})

172
src/patient/pages/mySave/index.wxml

@ -1,51 +1,18 @@ @@ -1,51 +1,18 @@
<view class="page">
<view class="sticky">
<van-tabs
wx:if="{{picTextStatus==1 && videoStatus==1}}"
class="navbar"
active="{{ active }}"
bind:change="tabChange"
title-inactive-color="#9E9E9E"
title-active-color="#484848"
line-width="{{17}}"
line-height="{{4}}"
color="#E04775"
tab-class="tab"
tab-active-class="tab-active"
>
<van-tab title="知识库"></van-tab>
<van-tab title="视频课堂"></van-tab>
<van-tab title="健康问答"></van-tab>
</van-tabs>
</view>
<navbar fixed title="我报名的活动" custom-style="background:{{background}}">
<van-icon name="arrow-left" slot="left" color="#000" bind:tap="handleBack" />
</navbar>
<view
class="page"
style="background: url('/images/bg10.png') no-repeat top center/100% 410rpx;padding-top:{{pageTop+12}}px;"
>
<view class="info-list" wx:if="{{active==0 && list.length}}">
<view class="list-item" wx:for="{{list}}" bind:tap="handleDetail" data-id="{{item.Id}}">
<image src="{{item.TitlePicLink}}" class="photo"></image>
<view class="inner">
<view class="title">{{item.Title}}</view>
<view class="date">{{item.UpdatedAt}}</view>
<view class="labels">
<view class="label" wx:for="{{item.Labels}}" wx:for-item="label">{{label}}</view>
</view>
<view class="footer">
<view class="f-item">
<image class="icon" src="{{imageUrl}}za-images/1/view.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.OpenNum + ~~item.BasicNum}}">{{~~item.OpenNum + ~~item.BasicNum}}</block>
</view>
<view
class="f-item {{item.IsCompliment==1 && 'active'}}"
catch:tap="handleStar"
data-id="{{item.Id}}"
data-index="{{index}}"
>
<image
class="icon"
wx:if="{{item.IsCompliment==1}}"
src="{{imageUrl}}za-images/1/star-active.png?t={{Timestamp}}"
></image>
<image class="icon" wx:else src="{{imageUrl}}za-images/1/star.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.ComplimentNum}}">{{item.ComplimentNum}}</block>
</view>
<button
class="f-item share"
open-type="share"
@ -54,131 +21,14 @@ @@ -54,131 +21,14 @@
data-index="{{index}}"
catch:tap="handleShare"
>
<image class="icon" src="{{imageUrl}}za-images/1/share.png?t={{Timestamp}}"></image>
<image class="icon" src="/images/icon39.png"></image>
<block wx:if="{{~~item.ShareNum}}">{{item.ShareNum}}</block>
</button>
</view>
</view>
</view>
</view>
<view class="video-list" wx:elif="{{active==1 && list.length}}">
<view class="list-item" wx:for="{{list}}" wx:key="{{item.Id}}">
<view class="photo">
<video
class="video"
id="video{{index}}"
src="{{item.SrcUrl}}"
bindplay="handleVideoPlay"
bindtimeupdate="handleVideoTime"
data-id="{{item.Id}}"
data-index="{{index}}"
></video>
<block wx:if="{{!item.play}}">
<image class="poster" mode="widthFix" src="{{item.ImageUrl}}"></image>
<image
class="play"
src="{{imageUrl}}za-images/1/video-play.png?t={{Timestamp}}"
bind:tap="handleVideo"
data-index="{{index}}"
></image>
</block>
</view>
<view class="inner">
<view class="title">{{item.Title}}</view>
<view class="content">
<view class="labels">
<view class="label" wx:for="{{item.Labels}}" wx:for-item="label">{{label}}</view>
</view>
<view class="date">{{item.UpdatedAt}}</view>
</view>
<view class="footer">
<view class="line"></view>
<view class="f-item">
<image class="icon" src="{{imageUrl}}za-images/1/view.png?t={{Timestamp}}"></image>
<image class="icon" src="/images/icon40.png"></image>
<block wx:if="{{~~item.OpenNum + ~~item.BasicNum}}">{{~~item.OpenNum + ~~item.BasicNum}}</block>
</view>
<view
class="f-item {{item.IsCompliment==1 && 'active'}}"
catch:tap="handleVideoStar"
data-id="{{item.Id}}"
data-index="{{index}}"
>
<image
class="icon"
wx:if="{{item.IsCompliment==1}}"
src="{{imageUrl}}za-images/1/star-active.png?t={{Timestamp}}"
></image>
<image class="icon" wx:else src="{{imageUrl}}za-images/1/star.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.ComplimentNum}}">{{item.ComplimentNum}}</block>
</view>
<view
class="f-item {{item.IsCollect == 1 && 'active'}}"
catch:tap="handleVideoToggleSave"
data-id="{{item.Id}}"
data-collect="{{item.IsCollect}}"
data-index="{{index}}"
>
<image
class="icon"
wx:if="{{item.IsCollect == 1}}"
src="{{imageUrl}}za-images/1/save-active-plan.png?t={{Timestamp}}"
></image>
<image class="icon" wx:else src="{{imageUrl}}za-images/1/save.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.CollectionPeopleNum}}">{{item.CollectionPeopleNum}}</block>
</view>
<button
class="f-item share"
open-type="share"
data-id="{{item.Id}}"
data-type="video"
data-index="{{index}}"
catch:tap="handleShare"
>
<image class="icon" src="{{imageUrl}}za-images/1/share.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.ShareNum}}">{{item.ShareNum}}</block>
</button>
</view>
</view>
</view>
</view>
<view class="question-list" wx:elif="{{active==2 && list.length}}">
<view class="row" wx:for="{{list}}" wx:key="index" bind:tap="handleQuestionDetail" data-id="{{item.Id}}">
<view class="num">{{item.CateName}}</view>
<view class="wrap">
<view class="content">
<view class="c-title">{{ item.Title }}</view>
<view class="footer">
<view class="f-item">
<image class="icon" src="{{imageUrl}}za-images/1/view.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.OpenNum + ~~item.BasicNum}}">{{~~item.OpenNum + ~~item.BasicNum}}</block>
</view>
<view
class="f-item {{item.IsCompliment==1 && 'active'}}"
catch:tap="handleVideoStar"
data-id="{{item.Id}}"
data-index="{{index}}"
>
<image
class="icon"
wx:if="{{item.IsCompliment==1}}"
src="{{imageUrl}}za-images/1/star-active.png?t={{Timestamp}}"
></image>
<image class="icon" wx:else src="{{imageUrl}}za-images/1/star.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.ComplimentNum}}">{{item.ComplimentNum}}</block>
</view>
<!-- <button -->
<!-- class="f-item share" -->
<!-- open-type="share" -->
<!-- data-id="{{item.Id}}" -->
<!-- data-type="video" -->
<!-- data-index="{{index}}" -->
<!-- catch:tap="handleShare" -->
<!-- > -->
<!-- <image class="icon" src="{{imageUrl}}za-images/1/share.png?t={{Timestamp}}"></image> -->
<!-- <block wx:if="{{~~item.ShareNum}}">{{item.ShareNum}}</block> -->
<!-- </button> -->
</view>
</view>
</view>
</view>

4
src/patient/pages/personalInformation/index.json

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
{
"navigationBarTitleText": "治疗记录",
"navigationStyle": "custom",
"navigationBarTitleText": "个人信息",
"navigationStyle": "default",
"usingComponents": {
"navBar": "/components/zd-navBar/navBar",
"van-icon": "@vant/weapp/icon/index",

47
src/patient/pages/personalInformation/index.scss

@ -6,10 +6,6 @@ @@ -6,10 +6,6 @@
box-sizing: border-box;
.banner-new {
padding: 38rpx 30rpx;
background-color: #fff;
border-radius: 24rpx;
box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(0, 0, 0, 0.09);
.row {
margin-top: 48rpx;
&:first-of-type {
@ -21,8 +17,12 @@ @@ -21,8 +17,12 @@
justify-content: space-between;
.label {
font-size: 32rpx;
color: #283031;
color: rgba(33, 29, 46, 1);
font-weight: bold;
.sub {
color: rgba(105, 104, 110, 1);
font-weight: normal;
}
}
.change-phone {
font-size: 32rpx;
@ -32,10 +32,9 @@ @@ -32,10 +32,9 @@
.row-content {
padding-top: 24rpx;
.input {
padding: 24rpx 28rpx;
background-color: #f2f2f2;
border: 1px solid #ccc;
border-radius: 12rpx;
padding: 24rpx 48rpx;
background-color: rgba(246, 248, 249, 1);
border-radius: 116rpx;
color: #283031;
line-height: 40rpx;
}
@ -46,17 +45,22 @@ @@ -46,17 +45,22 @@
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 22rpx;
&.radio-btns3 {
grid-template-columns: repeat(3, 1fr);
}
.btn {
padding: 24rpx;
font-size: 32rpx;
color: #999999;
color: rgba(173, 172, 178, 1);
text-align: center;
line-height: 40rpx;
border-radius: 12rpx 12rpx 12rpx 12rpx;
border: 1px solid #cccccc;
border-radius: 116rpx;
border: 1px solid rgba(246, 248, 249, 1);
background-color: rgba(246, 248, 249, 1);
&.active {
color: #e04775;
border-color: #e04775;
color: rgba(185, 130, 255, 1);
border-color: rgba(185, 130, 255, 1);
background-color: transparent;
}
}
}
@ -155,14 +159,19 @@ @@ -155,14 +159,19 @@
// }
.cancellation {
margin-top: 45rpx;
height: 80rpx;
margin-top: 58rpx;
height: 96rpx;
text-align: center;
line-height: 80rpx;
line-height: 96rpx;
font-size: 32rpx;
color: #fff;
background: #b8bfd1;
color: rgba(195, 148, 255, 1);
border-radius: 100rpx 100rpx 100rpx 100rpx;
border-top: 1px solid rgba(246, 248, 249, 1);
border-bottom: 1px solid rgba(246, 248, 249, 1);
&:last-of-type{
margin-top: 0;
border: none;
}
}
}

176
src/patient/pages/personalInformation/index.ts

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import dayjs from 'dayjs';
const app = getApp<IAppOption>();
const licia = require('miniprogram-licia');
import dayjs from 'dayjs'
const app = getApp<IAppOption>()
const licia = require('miniprogram-licia')
Page({
data: {
@ -148,164 +148,164 @@ Page({ @@ -148,164 +148,164 @@ Page({
return {
id: item.id,
value: item.name,
};
}
}),
},
onShow() {
const SystemInfo = app.globalSystemInfo;
const SystemInfo = app.globalSystemInfo
if (SystemInfo) {
const { bottom } = SystemInfo.capsulePosition;
const { bottom } = SystemInfo.capsulePosition
this.setData({
bottom,
});
})
}
const ageEnd = licia.dateFormat(new Date(), 'yyyy-mm-dd');
const ageEnd = licia.dateFormat(new Date(), 'yyyy-mm-dd')
this.setData({
ageEnd,
});
})
app.waitLogin({ type: [1] }).then(() => {
app.zdMpBehavior({ PageName: 'PG_PATIENTPERSONALINFO' });
const that = this;
app.getZdUserInfo(that, true, that.formatUserInfo.bind(that));
});
app.zdMpBehavior({ PageName: 'PG_PATIENTPERSONALINFO' })
const that = this
app.getZdUserInfo(that, true, that.formatUserInfo.bind(that))
})
},
formatUserInfo(res) {
this.formatBorn(res.Birth);
this.handleChaneDiagnosisTime({ detail: { value: res.DiagnosisTime } }, false);
const diagnoseTypeValue = this.data.DTList.findIndex((item) => item.id == res.DiagnoseType);
this.handleChangeDiagnoseType({ detail: { value: [diagnoseTypeValue] } });
this.handleDiagnoseTypeSave(false);
this.formatBorn(res.Birth)
this.handleChaneDiagnosisTime({ detail: { value: res.DiagnosisTime } }, false)
const diagnoseTypeValue = this.data.DTList.findIndex((item) => item.id == res.DiagnoseType)
this.handleChangeDiagnoseType({ detail: { value: [diagnoseTypeValue] } })
this.handleDiagnoseTypeSave(false)
// this.handleTapRT();
},
formatBorn(Birth) {
let bron = '';
let age = '';
const date = new Date();
const year = date.getFullYear();
const month = date.getMonth() + 1;
let bron = ''
let age = ''
const date = new Date()
const year = date.getFullYear()
const month = date.getMonth() + 1
if (!Birth) {
bron = `${Birth}`;
age = '岁';
bron = `${Birth}`
age = '岁'
} else if (Birth && Birth.split('-').length > 1) {
bron = `${Birth.split('-')[0]}${Birth.split('-')[1]}`;
bron = `${Birth.split('-')[0]}${Birth.split('-')[1]}`
age =
month - Birth.split('-')[1] >= 0
? `${year - Birth.split('-')[0]}${month - Birth.split('-')[1]}个月`
: `${year - Birth.split('-')[0] - 1}${12 - Birth.split('-')[1] + month}个月`;
: `${year - Birth.split('-')[0] - 1}${12 - Birth.split('-')[1] + month}个月`
} else {
bron = `${Birth}`;
age = `${year - Birth}`;
bron = `${Birth}`
age = `${year - Birth}`
}
age = age.replace('岁0个月', '岁');
age = age.replace('岁0个月', '岁')
this.setData({
bron,
age,
'zdUserInfo.Birth': Birth,
'zdUserInfo.AgeYear': Number(dayjs().format('YYYY')) - Birth.split('-')[0],
});
})
},
handleChaneAge(e) {
const Birth = e.detail.value;
this.formatBorn(Birth);
this.updateUserInfo();
const Birth = e.detail.value
this.formatBorn(Birth)
this.updateUserInfo()
},
handleChaneDiagnosisTime(e, update = true) {
const DiagnosisTime = e.detail.value;
const DiagnosisTime = e.detail.value
this.setData({
DiagnosisTime: dayjs(DiagnosisTime).format('YYYY年MM月'),
'zdUserInfo.DiagnosisTime': DiagnosisTime,
});
this.updateUserInfo(update);
})
this.updateUserInfo(update)
},
handleInput(e) {
const { key } = e.currentTarget.dataset;
const { key } = e.currentTarget.dataset
this.setData({
[`zdUserInfo.${key}`]: e.detail.value,
});
})
},
handleChangeRT(e, update = true) {
const value = e.detail.value;
const id = this.data.RTList.filter((_item, index) => index == value)[0]?.id;
const value = e.detail.value
const id = this.data.RTList.filter((_item, index) => index == value)[0]?.id
this.setData({
rtValue: value,
'zdUserInfo.RelationType': id,
});
this.updateUserInfo(update);
})
this.updateUserInfo(update)
},
handleChangeGender(e, update = true) {
const value = e.detail.value;
const id = this.data.GenderList.filter((_item, index) => index == value)[0]?.id;
const value = e.detail.value
const id = this.data.GenderList.filter((_item, index) => index == value)[0]?.id
this.setData({
genderValue: value,
'zdUserInfo.Gender': id,
});
this.updateUserInfo(update);
})
this.updateUserInfo(update)
},
handleChangeTask(e, update = true) {
const value = e.detail ? 0 : 1;
const id = this.data.TaskList.filter((_item, index) => index == value)[0]?.id;
const value = e.detail ? 0 : 1
const id = this.data.TaskList.filter((_item, index) => index == value)[0]?.id
this.setData({
taskValue: value,
'zdUserInfo.PatientCanFollowUp': id,
});
this.updateUserInfo(update);
})
this.updateUserInfo(update)
},
handleChangeAgeRange(e, update = true) {
const value = e.detail.value;
const id = this.data.ageRangeList.filter((_item, index) => index == value)[0]?.id;
const value = e.detail.value
const id = this.data.ageRangeList.filter((_item, index) => index == value)[0]?.id
this.setData({
ageRangeValue: value,
'zdUserInfo.AgeRange': id,
});
this.updateUserInfo(update);
})
this.updateUserInfo(update)
},
handleDiagnoseTypeSave(update = true) {
const rangeIndex = this.data.selectDiagnoseTypeIndex;
const id = this.data.DTList.filter((_item, index) => index == rangeIndex)[0]?.id;
const rangeIndex = this.data.selectDiagnoseTypeIndex
const id = this.data.DTList.filter((_item, index) => index == rangeIndex)[0]?.id
this.setData({
diagnoseTypeValue: rangeIndex,
'zdUserInfo.DiagnoseType': id,
});
})
if (update) {
this.handleDiagnoseTypeShow();
this.handleDiagnoseTypeShow()
}
this.updateUserInfo(update);
this.updateUserInfo(update)
},
handleRadio(e) {
const { id, key } = e.currentTarget.dataset;
const { id, key } = e.currentTarget.dataset
this.setData({
[`zdUserInfo.${key}`]: id,
});
this.updateUserInfo(true);
})
this.updateUserInfo(true)
},
handleDiagnoseTypeShow() {
this.setData({
diagnoseTypeShow: !this.data.diagnoseTypeShow,
});
})
},
handleChangeDiagnoseType(e) {
const value = e.detail.value[0];
const value = e.detail.value[0]
this.setData({
selectDiagnoseTypeIndex: value,
});
})
},
handleRedioSelect(e) {
const { key, id } = e.currentTarget.dataset;
const { key, id } = e.currentTarget.dataset
this.setData({
[`zdUserInfo.${key}`]: id,
});
this.updateUserInfo();
})
this.updateUserInfo()
},
updateUserInfo(update = true) {
if (!update) return;
if (!update) return
const { PatientName, RelationType, Gender, Birth, DiagnosisTime, DiagnoseType, ...zdUserInfo } =
this.data.zdUserInfo;
this.data.zdUserInfo
wx.ajax({
method: 'POST',
url: '?r=zd/account/update-info',
@ -330,51 +330,51 @@ Page({ @@ -330,51 +330,51 @@ Page({
wx.showToast({
title: '修改成功',
icon: 'none',
});
app.getZdUserInfo(this, true, this.formatUserInfo.bind(this));
})
app.getZdUserInfo(this, true, this.formatUserInfo.bind(this))
})
.catch((err) => {
wx.showToast({
title: err.data.msg,
icon: 'none',
});
app.getZdUserInfo(this, true, this.formatUserInfo.bind(this));
});
})
app.getZdUserInfo(this, true, this.formatUserInfo.bind(this))
})
},
handleChangeTel() {
app.zdMpBehavior({ PageName: 'PG_PATIENTPERSONALINFO_CHANGEPHONECLICK' });
app.zdMpBehavior({ PageName: 'PG_PATIENTPERSONALINFO_CHANGEPHONECLICK' })
wx.navigateTo({
url: '/patient/pages/changePhone/index',
});
})
},
handleChangeUser() {
wx.navigateTo({
url: '/patient/pages/changeUser/index',
});
})
},
handleLogout() {
app.zdMpBehavior({ PageName: 'BTN_PATIENTPERSONALINFOLOGOUT' });
app.zdMpBehavior({ PageName: 'BTN_PATIENTPERSONALINFOLOGOUT' })
wx.navigateTo({
url: '/patient/pages/cancellation/index',
});
})
},
handleBack() {
wx.navigateBack();
wx.navigateBack()
},
routerTo(e) {
const { url } = e.currentTarget.dataset;
const { url } = e.currentTarget.dataset
if (url.includes('/doctor/patient/pages/d_login/index')) {
app.zdMpBehavior({ PageName: 'BTN_PATIENTPERSONALINFOSWITCHDOCTORPORTAL' });
app.zdMpBehavior({ PageName: 'BTN_PATIENTPERSONALINFOSWITCHDOCTORPORTAL' })
}
wx.navigateTo({
url,
});
})
},
redirectTo(e) {
const { url } = e.currentTarget.dataset;
const { url } = e.currentTarget.dataset
wx.redirectTo({
url,
});
})
},
});
})

176
src/patient/pages/personalInformation/index.wxml

@ -1,8 +1,4 @@ @@ -1,8 +1,4 @@
<view
class="page"
style="background: url({{imageUrl}}za-images//3/userinfo-bg.png?t={{Timestamp}}) no-repeat top center / 100% 1200rpx;padding-top: {{bottom+10}}px;"
>
<navBar back background="{{background}}" fixed bind:back="handleBack" title="个人信息"></navBar>
<view class="page">
<view class="page-container">
<view class="banner-new">
<view class="row">
@ -24,15 +20,6 @@ @@ -24,15 +20,6 @@
</view>
<view class="row">
<view class="row-header">
<view class="label">手机号</view>
<view class="change-phone" bind:tap="handleChangeTel">修改手机号</view>
</view>
<view class="row-content">
<input class="input" disabled placeholder-class="place-input" type="" value="{{zdUserInfo.Telephone}}" />
</view>
</view>
<view class="row">
<view class="row-header">
<view class="label">身份</view>
</view>
<view class="row-content">
@ -52,36 +39,10 @@ @@ -52,36 +39,10 @@
</view>
<view class="row">
<view class="row-header">
<view class="label">出生日期</view>
</view>
<view class="row-content">
<picker
class="r-picker"
bindchange="handleChaneAge"
start="{{ageStart}}"
end="{{ageEnd}}"
fields="month"
mode="date"
value="{{zdUserInfo.Birth}}"
>
<view class="r-picker-content">
<view class="value" data-place="年/月" wx:if="{{bron}}">{{bron}}({{age}})</view>
<view class="value" data-place="年/月" wx:else></view>
<image
class="triangle"
mode="widthFix"
src="{{imageUrl}}za-images//3/triangle-down.png?t={{Timestamp}}"
></image>
</view>
</picker>
</view>
</view>
<view class="row">
<view class="row-header">
<view class="label">年龄范围</view>
</view>
<view class="row-content">
<view class="radio-btns">
<view class="radio-btns radio-btns3">
<view
class="btn {{zdUserInfo.AgeRange==item.id && 'active'}}"
wx:for="{{ageRangeList}}"
@ -97,53 +58,11 @@ @@ -97,53 +58,11 @@
</view>
<view class="row">
<view class="row-header">
<view class="label">性别</view>
</view>
<view class="row-content">
<view class="radio-btns">
<view
class="btn {{ zdUserInfo.Gender === item.id && 'active'}}"
wx:for="{{GenderList}}"
wx:key="index"
bind:tap="handleRedioSelect"
data-key="Gender"
data-id="{{item.id}}"
>
{{item.value}}
</view>
<view class="label">
是否有Graves病病史
<text class="sub">(非必填)</text>
</view>
</view>
</view>
<view class="row">
<view class="row-header">
<view class="label">诊断分型</view>
</view>
<view class="row-content">
<picker
class="r-picker"
bindchange="handleChangeDiagnoseType"
mode="selector"
range="{{DTList}}"
range-key="value"
value="{{diagnoseTypeValue}}"
disabled
>
<view class="r-picker-content" bind:tap="handleDiagnoseTypeShow">
<!-- prettier-ignore -->
<view class="value" data-place="请选择分型" >{{DTList[diagnoseTypeValue].value || '' }}</view>
<image
class="triangle"
mode="widthFix"
src="{{imageUrl}}za-images//3/triangle-down.png?t={{Timestamp}}"
></image>
</view>
</picker>
</view>
</view>
<view class="row">
<view class="row-header">
<view class="label">抗体类型</view>
</view>
<view class="row-content">
<view class="radio-btns">
<view
@ -161,7 +80,7 @@ @@ -161,7 +80,7 @@
</view>
<view class="row">
<view class="row-header">
<view class="label">胸腺异常</view>
<view class="label">是否有TED(甲状腺眼突)及其相关眼部手术史(非必填)</view>
</view>
<view class="row-content">
<view class="radio-btns">
@ -178,90 +97,9 @@ @@ -178,90 +97,9 @@
</view>
</view>
</view>
<view class="row">
<view class="row-header">
<view class="label">既往发生危象</view>
</view>
<view class="row-content">
<view class="radio-btns">
<view
wx:for="{{previousConvulsionRangeList}}"
wx:key="index"
class="btn {{zdUserInfo.PreviousConvulsion + '' === item.id && 'active'}}"
data-key="PreviousConvulsion"
data-id="{{item.id}}"
bind:tap="handleRadio"
>
{{item.value}}
</view>
</view>
</view>
</view>
<view class="row">
<view class="row-header">
<view class="label">传统免疫抑制剂</view>
</view>
<view class="row-content">
<view class="radio-btns">
<view
wx:for="{{traditionalImmunosuppressantRangeList}}"
wx:key="index"
class="btn {{zdUserInfo.TraditionalImmunosuppressant + '' === item.id && 'active'}}"
data-key="TraditionalImmunosuppressant"
data-id="{{item.id}}"
bind:tap="handleRadio"
>
{{item.value}}
</view>
</view>
</view>
</view>
<view class="row">
<view class="row-header">
<view class="label">医保类型</view>
</view>
<view class="row-content">
<view class="radio-btns">
<view
wx:for="{{medicalInsuranceTypeRangeList}}"
wx:key="index"
class="btn {{zdUserInfo.MedicalInsuranceType + '' === item.id && 'active'}}"
data-key="MedicalInsuranceType"
data-id="{{item.id}}"
bind:tap="handleRadio"
>
{{item.value}}
</view>
</view>
</view>
</view>
<!-- <view class="protocol"> -->
<!-- <view class="wrap"> -->
<!-- <view class="name">接受电话随访服务</view> -->
<!-- <view -->
<!-- class="book" -->
<!-- bind:tap="redirectTo" -->
<!-- data-url="/patient/pages/taskAgreement/index?page=/patient/pages/personalInformation/index" -->
<!-- > -->
<!-- 《电话随访知情同意书》 -->
<!-- </view> -->
<!-- </view> -->
<!-- <van-switch -->
<!-- checked="{{zdUserInfo.PatientCanFollowUp==1}}" -->
<!-- active-color="#CF5375" -->
<!-- size="24px" -->
<!-- bind:change="handleChangeTask" -->
<!-- ></van-switch> -->
<!-- </view> -->
</view>
<!-- <view class="footer-new"> -->
<!-- <view class="btn1" wx:if="{{zdUserInfo.IsRootUser==1}}" bind:tap="handleLogout">注销账号</view> -->
<!-- <view class="btn2" bind:tap="routerTo" data-url="/doctor/patient/pages/d_login/index?back=1">切换医生端</view> -->
<!-- <view class="btn3" bind:tap="handleChangeUser">切换账号</view> -->
<!-- </view> -->
<view class="cancellation" bind:tap="handleChangeUser">切换账号</view>
<view class="cancellation" bind:tap="routerTo" data-url="/pages/login/index">切换医生端</view>
<view wx:if="{{zdUserInfo.IsRootUser==1}}" class="cancellation" bind:tap="handleLogout">注销</view>
<view wx:if="{{zdUserInfo.IsRootUser==1}}" class="cancellation" bind:tap="handleLogout">注销账号</view>
</view>
</view>

5
src/patient/pages/repository/index.json

@ -1,10 +1,11 @@ @@ -1,10 +1,11 @@
{
"navigationBarTitleText": "",
"navigationStyle": "default",
"navigationStyle": "custom",
"usingComponents": {
"van-tab": "@vant/weapp/tab/index",
"van-tabs": "@vant/weapp/tabs/index",
"van-icon": "@vant/weapp/icon/index",
"patient-tab-bar": "/components/patient-tab-bar/index"
"patient-tab-bar": "/components/patient-tab-bar/index",
"navbar": "/components/navbar/index"
}
}

84
src/patient/pages/repository/index.scss

@ -1,3 +1,6 @@ @@ -1,3 +1,6 @@
page {
background-color: rgba(246, 248, 249, 1);
}
.page {
padding-bottom: 120rpx;
.tab {
@ -9,42 +12,13 @@ @@ -9,42 +12,13 @@
color: #484848;
}
}
.search {
margin: 32rpx 30rpx 0;
padding: 18rpx 32rpx;
background: #ffffff;
box-shadow: 0rpx 4rpx 0 0 rpx rgba(0, 0, 0, 0.05);
border-radius: 38rpx;
border: 2rpx solid #ebecee;
display: flex;
align-items: center;
.icon {
width: 40rpx;
height: 40rpx;
}
.input {
flex: 1;
margin: 0 20rpx;
font-size: 28rpx;
}
.placeholder-input {
color: #a8a8a8;
}
.clear {
color: #ccc;
}
}
.sticky {
position: sticky;
top: 0;
left: 0;
z-index: 20;
padding-bottom: 10rpx;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
background-color: #fff;
.tags {
margin-top: 20rpx;
padding-top: 28rpx;
overflow-y: hidden;
overflow-x: auto;
padding-bottom: 8rpx;
@ -56,14 +30,14 @@ @@ -56,14 +30,14 @@
display: flex;
flex-wrap: nowrap;
.tag {
padding: 10rpx 24rpx;
padding: 8rpx 24rpx;
margin-right: 16rpx;
flex-shrink: 0;
font-size: 28rpx;
color: #484848;
line-height: 1;
border-radius: 24rpx;
background-color: #f2f2f2;
font-size: 24rpx;
color: rgba(33, 29, 46, 1);
line-height: 34rpx;
border-radius: 8rpx;
background-color: rgba(255, 255, 255, 1);
&.active {
color: #fff;
background-color: var(--name);
@ -72,40 +46,25 @@ @@ -72,40 +46,25 @@
}
}
}
.swiper {
margin: 32rpx 30rpx 0;
height: 246rpx;
.swiper-item {
width: 100%;
height: 100%;
.img {
width: 100%;
height: 100%;
}
}
}
.info-list {
margin: 32rpx 30rpx;
padding: 24rpx;
background: #ffffff;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 24rpx;
border: 2rpx solid #ebecee;
.list-item {
padding: 32rpx;
display: flex;
margin-bottom: 22rpx;
margin-bottom: 24rpx;
background: #ffffff;
border-radius: 24rpx;
.photo {
position: relative;
width: 232rpx;
height: 184rpx;
width: 210rpx;
height: 140rpx;
flex-shrink: 0;
border-radius: 16rpx;
border: 1rpx solid #ebecee;
margin-right: 16rpx;
border-radius: 8rpx;
margin-right: 24rpx;
.photo-img {
width: 232rpx;
height: 184rpx;
width: 100%;
height: 100%;
border-radius: inherit;
}
.money {
@ -138,10 +97,9 @@ @@ -138,10 +97,9 @@
.inner {
flex: 1;
padding-bottom: 20rpx;
border-bottom: 1px solid rgba(182, 183, 186, 0.21);
.title {
font-size: 28rpx;
color: #252525;
font-size: 32rpx;
color: rgba(33, 29, 46, 1);
font-weight: bold;
line-height: 42rpx;
}

82
src/patient/pages/repository/index.wxml

@ -1,35 +1,8 @@ @@ -1,35 +1,8 @@
<view
class="page"
style="{{theme === 'DRUG'?'--name:#25D9C8;--tag-bg:rgba(37, 217, 200, 0.13)':'--name:#e04775;--tag-bg:rgba(224, 71, 117, 0.13)'}}"
style="--name: rgba(185, 130, 255, 1); --tag-bg: rgba(224, 71, 117, 0.13);background: url('/images/bg10.png') no-repeat top center/100% 610rpx;padding-top:{{pageTop+22}}px;"
>
<van-tabs
wx:if="{{picTextStatus==1 && videoStatus==1}}"
class="navbar"
active="{{ active }}"
bind:change="tabChange"
title-inactive-color="#9E9E9E"
title-active-color="#484848"
line-width="{{17}}"
line-height="{{4}}"
color="#E04775"
tab-class="tab"
tab-active-class="tab-active"
>
<van-tab title="知识库"></van-tab>
<van-tab title="视频课堂"></van-tab>
</van-tabs>
<view class="search">
<image class="icon" src="{{imageUrl}}za-images/1/search.png?t={{Timestamp}}"></image>
<input
class="input"
model:value="{{Search}}"
placeholder-class="placeholder-input"
confirm-type="search"
placeholder="搜一搜"
bindconfirm="handleSearch"
/>
<van-icon class="clear extend-via-pseudo-elem" wx:if="{{Search}}" name="clear" bind:tap="handleClear" />
</view>
<navbar fixed title="了解TED" custom-style="background:{{background}}"></navbar>
<view class="sticky">
<view class="tags">
<view class="scroll">
@ -59,17 +32,6 @@ @@ -59,17 +32,6 @@
</view>
</view>
</view>
<swiper wx:if="{{banner.length}}" class="swiper" autoplay interval="{{3000}}">
<swiper-item
class="swiper-item"
wx:for="{{banner}}"
wx:key="index"
bind:tap="routerTo"
data-path="{{item.linkUrl}}"
>
<image class="img" mode="scaleToFill" src="{{item.img}}"></image>
</swiper-item>
</swiper>
<view class="info-list" wx:if="{{active==0 && list.length}}">
<view
class="list-item"
@ -81,49 +43,9 @@ @@ -81,49 +43,9 @@
>
<view class="photo">
<image src="{{item.TitlePicLink}}" mode="aspectFill" class="photo-img"></image>
<image
wx:if="{{item.IsNew==1}}"
class="new-icon"
src="{{imageUrl}}za-images/2/new-label.png?t={{Timestamp}}"
></image>
</view>
<view class="inner">
<view class="title">{{item.Title}}</view>
<view class="date">{{item.UpdatedAt}}</view>
<view class="labels">
<view class="label" wx:for="{{item.Labels}}" wx:for-item="label" wx:key="index">{{label}}</view>
</view>
<view class="footer">
<view class="f-item">
<image class="icon" src="{{imageUrl}}za-images/1/view.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.OpenNum + ~~item.BasicNum}}">{{~~item.OpenNum + ~~item.BasicNum}}</block>
</view>
<view
class="f-item {{item.IsCompliment==1 && 'active'}}"
catch:tap="handleStar"
data-id="{{item.Id}}"
data-index="{{index}}"
>
<image
class="icon"
wx:if="{{item.IsCompliment==1}}"
src="{{imageUrl}}za-images/1/star-active.png?t={{Timestamp}}"
></image>
<image class="icon" wx:else src="{{imageUrl}}za-images/1/star.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.ComplimentNum}}">{{item.ComplimentNum}}</block>
</view>
<button
class="f-item share"
open-type="share"
data-id="{{item.Id}}"
data-type="info"
data-index="{{index}}"
catch:tap="handleShare"
>
<image class="icon" src="{{imageUrl}}za-images/1/share.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.ShareNum}}">{{item.ShareNum}}</block>
</button>
</view>
</view>
</view>
</view>

473
src/patient/pages/repositoryDetail/index.scss

@ -1,236 +1,237 @@ @@ -1,236 +1,237 @@
.page {
.page-container {
box-sizing: border-box;
margin-top: -20rpx;
padding: 40rpx 30rpx 200rpx;
.banner {
.title {
margin-top: 34rpx;
font-size: 44rpx;
color: #484848;
font-weight: bold;
}
.banner-footer {
margin-top: 22rpx;
display: flex;
align-items: center;
justify-content: space-between;
font-size: 28rpx;
color: #9e9e9e;
.views {
display: flex;
align-items: center;
.icon {
margin-right: 6rpx;
width: 32rpx;
height: 32rpx;
}
}
}
.tags {
margin-top: 32rpx;
.tag {
margin: 0 16rpx 16rpx 0;
padding: 2rpx 20rpx;
display: inline-block;
line-height: 32rpx;
font-size: 22rpx;
color: #e04775;
border-radius: 18rpx;
word-break: break-all;
background-color: rgba(224, 71, 117, 0.13);
}
}
}
.container {
.audio {
margin-top: 36rpx;
padding: 0 0 20rpx;
}
.mp-html {
padding: 20px;
video {
width: 100% !important;
object-fit: cover !important;
}
}
}
.other {
.o-title {
font-size: 36rpx;
color: #333333;
font-weight: bold;
}
.other-list {
margin-top: 32rpx;
padding: 24rpx;
background: #ffffff;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 24rpx;
border: 2rpx solid #ebecee;
.list-item {
display: flex;
margin-bottom: 22rpx;
.photo {
width: 232rpx;
height: 184rpx;
flex-shrink: 0;
border-radius: 16rpx;
border: 1rpx solid #ebecee;
margin-right: 16rpx;
}
.inner {
flex: 1;
padding-bottom: 20rpx;
border-bottom: 1px solid rgba(182, 183, 186, 0.21);
.title {
font-size: 28rpx;
color: #252525;
font-weight: bold;
line-height: 42rpx;
}
.date {
margin-top: 10rpx;
color: #9e9e9e;
font-size: 22rpx;
}
.labels {
margin-top: 16rpx;
display: flex;
flex-wrap: wrap;
align-items: center;
.label {
margin-right: 16rpx;
margin-bottom: 10rpx;
padding: 2rpx 20rpx;
font-size: 22rpx;
color: #e04775;
word-break: break-all;
border-radius: 18rpx;
background-color: rgba(224, 71, 117, 0.13);
}
}
.o-footer {
margin-top: 10rpx;
display: flex;
justify-content: flex-end;
.f-item {
display: flex;
align-items: center;
font-size: 22rpx;
color: #b6b7ba;
.icon {
margin-right: 8rpx;
width: 32rpx;
height: 32rpx;
}
&:not(:last-of-type)::after {
margin: 18rpx;
content: "";
width: 2rpx;
height: 20rpx;
background-color: #f3f3f4;
}
}
}
}
}
}
}
}
.animate {
position: fixed;
z-index: 1;
left: 1000000px;
bottom: calc(env(safe-area-inset-bottom) + 80rpx);
transform: translateX(-50%);
width: 200rpx;
height: 400rpx;
&.active {
left: 50%;
}
}
.footer {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
padding: 26rpx 50rpx calc(env(safe-area-inset-bottom) + 26rpx);
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
box-shadow: 0rpx 8rpx 20rpx 0rpx rgba(0, 0, 0, 0.26);
background-color: #fff;
.tip {
padding: 5rpx 16rpx;
position: absolute;
top: -80rpx;
left: 50%;
transform: translateX(-50%);
font-size: 28rpx;
color: #f5ad1d;
background: #ffefd0;
border: 1rpx solid #ffffff;
display: flex;
align-items: center;
border-radius: 20rpx;
box-shadow: -10rpx 20rpx 42rpx 0rpx rgba(0, 0, 0, 0.11);
.icon {
margin-right: 10rpx;
width: 40rpx;
height: 40rpx;
}
&::after {
position: absolute;
bottom: -12rpx;
left: 50%;
transform: translateX(-50%);
content: "";
width: 0;
height: 0;
border-style: solid;
border-width: 10rpx 10rpx 0 10rpx;
border-color: #ffefd0 transparent transparent transparent;
}
}
.f-item {
display: flex;
align-items: center;
font-size: 30rpx;
color: #e04775;
margin: 0;
padding: 0;
background: transparent;
&::after {
display: none;
outline: none;
}
.icon {
margin-right: 6rpx;
width: 44rpx;
height: 44rpx;
}
.icon-active {
@extend .icon;
display: none;
}
&.active {
color: #e04775;
.icon {
display: none;
}
.icon-active {
display: block;
}
}
}
.vertical {
width: 3rpx;
height: 28rpx;
background-color: #f3f3f4;
}
}
}
.page {
.page-container {
box-sizing: border-box;
margin-top: -20rpx;
padding: 40rpx 30rpx 200rpx;
.banner {
.title {
margin-top: 34rpx;
font-size: 44rpx;
color: #484848;
font-weight: bold;
}
.banner-footer {
margin-top: 22rpx;
display: flex;
align-items: center;
justify-content: space-between;
font-size: 28rpx;
color: #9e9e9e;
.views {
display: flex;
align-items: center;
.icon {
margin-right: 6rpx;
width: 32rpx;
height: 32rpx;
}
}
}
.tags {
margin-top: 32rpx;
.tag {
margin: 0 16rpx 16rpx 0;
padding: 2rpx 20rpx;
display: inline-block;
line-height: 32rpx;
font-size: 22rpx;
color: #e04775;
border-radius: 18rpx;
word-break: break-all;
background-color: rgba(224, 71, 117, 0.13);
}
}
}
.container {
.audio {
margin-top: 36rpx;
padding: 0 0 20rpx;
}
.mp-html {
padding: 20px;
video {
width: 100% !important;
object-fit: cover !important;
}
}
}
.other {
.o-title {
font-size: 36rpx;
color: #333333;
font-weight: bold;
}
.other-list {
margin-top: 32rpx;
padding: 24rpx;
background: #ffffff;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
border-radius: 24rpx;
border: 2rpx solid #ebecee;
.list-item {
display: flex;
margin-bottom: 22rpx;
.photo {
width: 232rpx;
height: 184rpx;
flex-shrink: 0;
border-radius: 16rpx;
border: 1rpx solid #ebecee;
margin-right: 16rpx;
}
.inner {
flex: 1;
padding-bottom: 20rpx;
border-bottom: 1px solid rgba(182, 183, 186, 0.21);
.title {
font-size: 28rpx;
color: #252525;
font-weight: bold;
line-height: 42rpx;
}
.date {
margin-top: 10rpx;
color: #9e9e9e;
font-size: 22rpx;
}
.labels {
margin-top: 16rpx;
display: flex;
flex-wrap: wrap;
align-items: center;
.label {
margin-right: 16rpx;
margin-bottom: 10rpx;
padding: 2rpx 20rpx;
font-size: 22rpx;
color: #e04775;
word-break: break-all;
border-radius: 18rpx;
background-color: rgba(224, 71, 117, 0.13);
}
}
.o-footer {
margin-top: 10rpx;
display: flex;
justify-content: flex-end;
.f-item {
display: flex;
align-items: center;
font-size: 22rpx;
color: #b6b7ba;
.icon {
margin-right: 8rpx;
width: 32rpx;
height: 32rpx;
}
&:not(:last-of-type)::after {
margin: 18rpx;
content: '';
width: 2rpx;
height: 20rpx;
background-color: #f3f3f4;
}
}
}
}
}
}
}
}
.animate {
position: fixed;
z-index: 1;
left: 1000000px;
bottom: calc(env(safe-area-inset-bottom) + 80rpx);
transform: translateX(-50%);
width: 200rpx;
height: 400rpx;
&.active {
left: 50%;
}
}
.footer {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
padding: 26rpx 50rpx calc(env(safe-area-inset-bottom) + 26rpx);
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
box-shadow: 0rpx 8rpx 20rpx 0rpx rgba(0, 0, 0, 0.26);
background-color: #fff;
.tip {
padding: 5rpx 16rpx;
position: absolute;
top: -80rpx;
left: 50%;
transform: translateX(-50%);
font-size: 28rpx;
color: #f5ad1d;
background: #ffefd0;
border: 1rpx solid #ffffff;
display: flex;
align-items: center;
border-radius: 20rpx;
box-shadow: -10rpx 20rpx 42rpx 0rpx rgba(0, 0, 0, 0.11);
.icon {
margin-right: 10rpx;
width: 40rpx;
height: 40rpx;
}
&::after {
position: absolute;
bottom: -12rpx;
left: 50%;
transform: translateX(-50%);
content: '';
width: 0;
height: 0;
border-style: solid;
border-width: 10rpx 10rpx 0 10rpx;
border-color: #ffefd0 transparent transparent transparent;
}
}
.f-item {
flex: 1;
display: flex;
align-items: center;
font-size: 30rpx;
color: rgba(33, 29, 46, 1);
margin: 0;
padding-left: 120rpx;
background: transparent;
&::after {
display: none;
outline: none;
}
.icon {
margin-right: 6rpx;
width: 44rpx;
height: 44rpx;
}
.icon-active {
@extend .icon;
display: none;
}
&.active {
color: rgba(33, 29, 46, 1);
.icon {
display: none;
}
.icon-active {
display: block;
}
}
}
.vertical {
width: 3rpx;
height: 28rpx;
background-color: rgba(105, 104, 110, 0.16);
}
}
}

168
src/patient/pages/repositoryDetail/index.ts

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
const app = getApp<IAppOption>();
const licia = require('miniprogram-licia');
const app = getApp<IAppOption>()
const licia = require('miniprogram-licia')
Page({
data: {
@ -28,32 +28,32 @@ Page({ @@ -28,32 +28,32 @@ Page({
},
onLoad(options) {
const { id } = options;
const { id } = options
this.setData({
id,
});
app.zdWaitLogin().then(() => {
this.getDetail(true);
});
})
app.waitLogin({ type: [1] }).then(() => {
this.getDetail(true)
})
},
onShow() {
app.zdMpBehavior({ PageName: 'PG_PATIENTKNOWLEDGEDETAILS' });
app.zdMpBehavior({ PageName: 'PG_PATIENTKNOWLEDGEDETAILS' })
if (this.data.sendShare) {
this.setData({
sendShare: false,
timeToastType: '9',
});
this.handleTimeOut();
})
this.handleTimeOut()
}
},
onHide() {
if (this._time) {
clearInterval(this._time);
clearInterval(this._time)
}
},
onUnload() {
if (this._time) {
clearInterval(this._time);
clearInterval(this._time)
}
},
getDetail(view = false) {
@ -64,40 +64,40 @@ Page({ @@ -64,40 +64,40 @@ Page({
Id: this.data.id,
},
}).then(async (res) => {
res.Content = await this.formatVideo(res.Content);
res.Content = await this.formatVideo(res.Content)
this.setData({
detail: res,
});
})
if (view) {
let asideOut = false;
let asideOut = false
if (res.CanGetScore) {
asideOut = true;
asideOut = true
}
this.setData({
asideOut,
});
this.saveView();
})
this.saveView()
}
});
})
},
formatVideo(Content) {
return new Promise((reslove) => {
const query = wx.createSelectorQuery();
const query = wx.createSelectorQuery()
query
.select('#mp-html')
.boundingClientRect((rect) => {
const mpWidth = rect.width;
const reg = /<video\b([^>]*)width="(.*?)".*?height="(.*?)".*?>/g;
const mpWidth = rect.width
const reg = /<video\b([^>]*)width="(.*?)".*?height="(.*?)".*?>/g
Content = Content.replace(reg, (match, otherAttributes, width, height) => {
if (!isNaN(Number(width)) && !isNaN(Number(height))) {
return `<video ${otherAttributes} width="${mpWidth}" height="${height * (mpWidth / width)}">`;
return `<video ${otherAttributes} width="${mpWidth}" height="${height * (mpWidth / width)}">`
}
return `<video ${otherAttributes} width="${mpWidth}">`;
});
reslove(Content);
return `<video ${otherAttributes} width="${mpWidth}">`
})
reslove(Content)
})
.exec();
});
.exec()
})
},
handleVideoTime: licia.throttle(function (time) {
wx.ajax({
@ -108,8 +108,8 @@ Page({ @@ -108,8 +108,8 @@ Page({
WatchDuration: time,
},
}).then((res) => {
console.log('res: ', res);
});
console.log('res: ', res)
})
}, 5000),
saveView() {
wx.ajax({
@ -121,43 +121,43 @@ Page({ @@ -121,43 +121,43 @@ Page({
}).then((res) => {
this.setData({
HistoryId: res.HistoryId,
});
let time = 0;
})
let time = 0
if (this._time) {
clearInterval(this._time);
clearInterval(this._time)
}
this._time = setInterval(() => {
time++;
this.handleVideoTime(time);
}, 1000);
});
time++
this.handleVideoTime(time)
}, 1000)
})
},
handleDetail(e) {
const { id } = e.currentTarget.dataset;
const { id } = e.currentTarget.dataset
this.setData({
id,
saveLock: false,
starLock: false,
shareLock: false,
sendShare: false,
});
this.getDetail(true);
})
this.getDetail(true)
},
handleStar() {
app.zdMpBehavior({ PageName: 'BTN_PATIENTKNOWLEDGEDETAILSLIKE' });
app.zdMpBehavior({ PageName: 'BTN_PATIENTKNOWLEDGEDETAILSLIKE' })
this.setData({
starShow: true,
});
const header = this.selectComponent('#animate');
header.start();
})
const header = this.selectComponent('#animate')
header.start()
if (this._timer) {
clearInterval(this._timer);
clearInterval(this._timer)
}
this._timer = setTimeout(() => {
this.setData({
starShow: false,
});
}, 2000);
})
}, 2000)
wx.ajax({
method: 'POST',
url: '?r=zd/pic-text/compliment',
@ -166,21 +166,21 @@ Page({ @@ -166,21 +166,21 @@ Page({
},
showMsg: false,
}).then(() => {
this.getDetail();
if (this.data.starLock || this.data.timeToast) return;
this.getDetail()
if (this.data.starLock || this.data.timeToast) return
this.setData({
timeToastType: '8',
starLock: true,
});
this.handleTimeOut();
});
})
this.handleTimeOut()
})
},
handleToggleSave() {
app.zdMpBehavior({ PageName: 'BTN_PATIENTKNOWLEDGEDETAILSFAVORITE' });
app.zdMpBehavior({ PageName: 'BTN_PATIENTKNOWLEDGEDETAILSFAVORITE' })
const {
id,
detail: { IsCollect },
} = this.data;
} = this.data
app.zdPermissionVerification(3, 3, `/patient/pages/repositoryDetail/index?id=${id}`, id).then(() => {
if (IsCollect == 1) {
wx.ajax({
@ -191,12 +191,12 @@ Page({ @@ -191,12 +191,12 @@ Page({
},
loading: true,
}).then(() => {
this.getDetail();
this.getDetail()
wx.showToast({
title: '取消收藏',
icon: 'none',
});
});
})
})
} else {
wx.ajax({
method: 'POST',
@ -206,23 +206,23 @@ Page({ @@ -206,23 +206,23 @@ Page({
},
loading: true,
}).then(() => {
this.getDetail();
this.getDetail()
// wx.showToast({
// title: "收藏成功",
// icon: "none",
// });
if (this.data.saveLock || this.data.timeToast) return;
if (this.data.saveLock || this.data.timeToast) return
this.setData({
timeToastType: '10',
saveLock: true,
});
this.handleTimeOut();
});
})
this.handleTimeOut()
})
}
});
})
},
handleBack() {
const { id } = this.data;
const { id } = this.data
app
.zdPermissionVerification(3, 3, `/patient/pages/repositoryDetail/index?id=${id}`, id)
.then(() => {
@ -230,13 +230,13 @@ Page({ @@ -230,13 +230,13 @@ Page({
fail() {
wx.reLaunch({
url: '/patient/pages/index/index',
});
})
},
});
})
})
.catch(() => {
app.globalData.backPage = false;
});
app.globalData.backPage = false
})
},
handleShare() {
wx.ajax({
@ -246,12 +246,12 @@ Page({ @@ -246,12 +246,12 @@ Page({
ContentId: this.data.id,
},
}).then(() => {
this.getDetail();
});
this.getDetail()
})
},
handleTimeOut() {
if (!this.data.timeToastType) {
return;
return
}
wx.ajax({
method: 'POST',
@ -261,48 +261,48 @@ Page({ @@ -261,48 +261,48 @@ Page({
Id: this.data.detail.Id,
},
}).then((res) => {
if (this.data.timeToast) return;
if (this.data.timeToast) return
if (!Array.isArray(res)) {
this.setData({
timeToast: true,
timeToastParams: {
rewardScore: res.rewardScore,
},
});
})
setTimeout(() => {
this.setData({
timeToast: false,
});
}, 3000);
})
}, 3000)
}
});
})
},
onShareAppMessage() {
this.handleShare();
this.handleShare()
if (!this.data.shareLock) {
this.setData({
sendShare: true,
});
})
}
this.setData({
shareLock: true,
});
})
return {
title: this.data.detail.Title,
path: `/patient/pages/repositoryDetail/index?id=${this.data.id}`,
imageUrl: this.data.detail.TitlePicLink,
};
}
},
onPageScroll(e) {
if (e.scrollTop > 10) {
this.setData({
showTip: false,
});
})
}
},
handleTapShare() {
app.zdMpBehavior({ PageName: 'BTN_PATIENTKNOWLEDGEDETAILSSHARE' });
app.zdMpBehavior({ PageName: 'BTN_PATIENTKNOWLEDGEDETAILSSHARE' })
},
});
})
export {};
export {}

98
src/patient/pages/repositoryDetail/index.wxml

@ -5,75 +5,67 @@ @@ -5,75 +5,67 @@
<view class="title">{{detail.Title}}</view>
<view class="banner-footer">
<view class="date">{{detail.UpdatedAt}}</view>
<view class="time">{{detail.ReadCost}}分钟</view>
<view class="views">
<image class="icon" src="{{imageUrl}}za-images/1/view.png?t={{Timestamp}}"></image>
{{~~detail.OpenNum + ~~detail.BasicNum}}
</view>
</view>
<view class="tags">
<view class="tag" wx:for="{{detail.Labels}}">{{item}}</view>
<!-- <view class="time">{{detail.ReadCost}}分钟</view> -->
<!-- <view class="views"> -->
<!-- <image class="icon" src="{{imageUrl}}za-images/1/view.png?t={{Timestamp}}"></image> -->
<!-- {{~~detail.OpenNum + ~~detail.BasicNum}} -->
<!-- </view> -->
</view>
<!-- <view class="tags"> -->
<!-- <view class="tag" wx:for="{{detail.Labels}}">{{item}}</view> -->
<!-- </view> -->
</view>
<view class="container">
<view class="audio" wx:if="{{detail.AudioLink.url}}">
<free-audio audio="{{detail.AudioLink}}"></free-audio>
</view>
<!-- <view class="audio" wx:if="{{detail.AudioLink.url}}"> -->
<!-- <free-audio audio="{{detail.AudioLink}}"></free-audio> -->
<!-- </view> -->
<mp-html id="mp-html" class="mp-html" container-style="overflow: visible" content="{{detail.Content}}"></mp-html>
</view>
<view class="other" wx:if="{{detail.Recommends.length}}">
<view class="o-title">其它推荐文章</view>
<view class="other-list">
<view class="list-item" wx:for="{{detail.Recommends}}" bind:tap="handleDetail" data-id="{{item.Id}}">
<image src="{{item.TitlePicLink}}" class="photo"></image>
<view class="inner">
<view class="title">{{item.Title}}</view>
<view class="date">{{item.PublishAt}}</view>
<view class="labels">
<view class="label" wx:for="{{item.Labels}}" wx:for-item="label">{{label}}</view>
</view>
<view class="o-footer">
<view class="f-item">
<image class="icon" src="{{imageUrl}}za-images/1/view.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.OpenNum + ~~item.BasicNum}}">{{~~item.OpenNum + ~~item.BasicNum}}</block>
</view>
<view class="f-item {{item.IsCompliment==1 && 'active'}}">
<image
class="icon"
wx:if="{{item.IsCompliment==1}}"
src="{{imageUrl}}za-images/1/star-active.png?t={{Timestamp}}"
></image>
<image class="icon" wx:else src="{{imageUrl}}za-images/1/star.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.ComplimentNum}}">{{item.ComplimentNum}}</block>
</view>
</view>
</view>
</view>
</view>
</view>
<!-- <view class="other" wx:if="{{detail.Recommends.length}}"> -->
<!-- <view class="o-title">其它推荐文章</view> -->
<!-- <view class="other-list"> -->
<!-- <view class="list-item" wx:for="{{detail.Recommends}}" bind:tap="handleDetail" data-id="{{item.Id}}"> -->
<!-- <image src="{{item.TitlePicLink}}" class="photo"></image> -->
<!-- <view class="inner"> -->
<!-- <view class="title">{{item.Title}}</view> -->
<!-- <view class="date">{{item.PublishAt}}</view> -->
<!-- <view class="labels"> -->
<!-- <view class="label" wx:for="{{item.Labels}}" wx:for-item="label">{{label}}</view> -->
<!-- </view> -->
<!-- <view class="o-footer"> -->
<!-- <view class="f-item"> -->
<!-- <image class="icon" src="{{imageUrl}}za-images/1/view.png?t={{Timestamp}}"></image> -->
<!-- <block wx:if="{{~~item.OpenNum + ~~item.BasicNum}}">{{~~item.OpenNum + ~~item.BasicNum}}</block> -->
<!-- </view> -->
<!-- <view class="f-item {{item.IsCompliment==1 && 'active'}}"> -->
<!-- <image -->
<!-- class="icon" -->
<!-- wx:if="{{item.IsCompliment==1}}" -->
<!-- src="{{imageUrl}}za-images/1/star-active.png?t={{Timestamp}}" -->
<!-- ></image> -->
<!-- <image class="icon" wx:else src="{{imageUrl}}za-images/1/star.png?t={{Timestamp}}"></image> -->
<!-- <block wx:if="{{~~item.ComplimentNum}}">{{item.ComplimentNum}}</block> -->
<!-- </view> -->
<!-- </view> -->
<!-- </view> -->
<!-- </view> -->
<!-- </view> -->
<!-- </view> -->
</view>
<star id="animate" class="animate {{starShow&&'active'}}"></star>
<view class="footer">
<view class="tip" wx:if="{{showTip}}">
<image class="icon" src="{{imageUrl}}za-images/2/money.png?t={{Timestamp}}"></image>
点赞和分享可获得能量
</view>
<view class="f-item {{detail.IsCollect == 1 && 'active'}}" bind:tap="handleToggleSave">
<image class="icon" src="{{imageUrl}}za-images/1/save-active.png?t={{Timestamp}}"></image>
<image class="icon-active" src="{{imageUrl}}za-images/1/save-active-plan.png?t={{Timestamp}}"></image>
<image class="icon" src="/images/icon36.png"></image>
<image class="icon-active" src="/images/icon36.png"></image>
<block wx:if="{{~~detail.CollectionPeopleNum}}">{{detail.CollectionPeopleNum}}</block>
</view>
<view class="vertical"></view>
<view class="f-item {{detail.IsCompliment == 1 && 'active'}}" bind:tap="handleStar">
<!-- <image class="animate" wx:if="{{animate}}" src="{{imageUrl}}za-images/1/start.gif?t={{Timestamp}}"></image> -->
<image class="icon" src="{{imageUrl}}za-images/1/star-detail.png?t={{Timestamp}}"></image>
<image class="icon-active" src="{{imageUrl}}za-images/1/star-active.png?t={{Timestamp}}"></image>
<block wx:if="{{~~detail.ComplimentNum}}">{{detail.ComplimentNum}}</block>
</view>
<view class="vertical"></view>
<button class="f-item" open-type="share" bind:tap="handleTapShare">
<image class="icon" src="{{imageUrl}}za-images/1/share-active.png?t={{Timestamp}}"></image>
<image class="icon-active" src="{{imageUrl}}za-images/1/share-active.png?t={{Timestamp}}"></image>
<image class="icon" src="/images/icon37.png"></image>
<image class="icon-active" src="/images/icon37.png"></image>
<block wx:if="{{detail.ShareNum}}">{{detail.ShareNum}}</block>
</button>
</view>

Loading…
Cancel
Save