Browse Source

患者端联调

master
kola-web 4 weeks ago
parent
commit
86e4aa7755
  1. 18
      project.private.config.json
  2. 4
      src/app.json
  3. 77
      src/app.ts
  4. 63
      src/components/toast/index.scss
  5. 35
      src/components/toast/index.wxml
  6. 2
      src/doc/pages/doc2/index.ts
  7. 9
      src/doc/pages/privacyAgreement/index.json
  8. 3
      src/doc/pages/privacyAgreement/index.scss
  9. 17
      src/doc/pages/privacyAgreement/index.ts
  10. 17
      src/doc/pages/privacyAgreement/index.wxml
  11. 2
      src/doctor/pages/d_my/index.ts
  12. 4
      src/gift/pages/giftDetail/index.ts
  13. 2
      src/gift/pages/vipPending/index.wxml
  14. BIN
      src/images/1/save-active-plan.png
  15. BIN
      src/images/1/save-active.png
  16. BIN
      src/images/1/share-active.png
  17. BIN
      src/images/1/share.png
  18. BIN
      src/images/1/star-active.png
  19. BIN
      src/images/bg15.png
  20. BIN
      src/images/bg22.png
  21. BIN
      src/images/bg26.png
  22. BIN
      src/images/icon75.png
  23. BIN
      src/images/icon76.png
  24. BIN
      src/images/icon77.png
  25. BIN
      src/images/icon78.png
  26. BIN
      src/images/icon79.png
  27. BIN
      src/images/icon80.png
  28. BIN
      src/images/icon81.png
  29. 2
      src/pages/changePhone/index.json
  30. 134
      src/pages/changePhone/index.scss
  31. 38
      src/pages/changePhone/index.wxml
  32. 2
      src/pages/changeUser/index.wxml
  33. 7
      src/pages/doctor/index.json
  34. 286
      src/pages/doctor/index.ts
  35. 26
      src/pages/doctor/index.wxml
  36. 4
      src/pages/doctorDetail/index.wxml
  37. 16
      src/pages/enterInfo/index.ts
  38. 8
      src/pages/enterInfo/index.wxml
  39. 2
      src/pages/familyScan/index.ts
  40. 4
      src/pages/hospital/index.scss
  41. 10
      src/pages/hospital/index.wxml
  42. 3
      src/pages/index/index.json
  43. 22
      src/pages/index/index.scss
  44. 272
      src/pages/index/index.ts
  45. 247
      src/pages/index/index.wxml
  46. 23
      src/pages/live/index.scss
  47. 41
      src/pages/live/index.wxml
  48. 4
      src/pages/liveDetail/index.json
  49. 101
      src/pages/liveDetail/index.scss
  50. 168
      src/pages/liveDetail/index.ts
  51. 103
      src/pages/liveDetail/index.wxml
  52. 199
      src/pages/liveResult/index.scss
  53. 70
      src/pages/liveResult/index.wxml
  54. 9
      src/pages/login/index.ts
  55. 2
      src/pages/my/index.wxml
  56. 56
      src/pages/myLive/index.wxml
  57. 7
      src/pages/mySave/index.json
  58. 286
      src/pages/mySave/index.scss
  59. 254
      src/pages/mySave/index.ts
  60. 169
      src/pages/mySave/index.wxml
  61. 8
      src/pages/personalInformation/index.json
  62. 483
      src/pages/personalInformation/index.scss
  63. 254
      src/pages/personalInformation/index.ts
  64. 390
      src/pages/personalInformation/index.wxml
  65. 10
      src/pages/privacyAgreement/index.json
  66. 74
      src/pages/privacyAgreement/index.scss
  67. 28
      src/pages/privacyAgreement/index.ts
  68. 17
      src/pages/privacyAgreement/index.wxml
  69. 56
      src/pages/repository/index.scss
  70. 231
      src/pages/repository/index.ts
  71. 62
      src/pages/repository/index.wxml
  72. 56
      src/pages/repositoryDetail/index.scss
  73. 23
      src/pages/repositoryDetail/index.ts
  74. 22
      src/pages/repositoryDetail/index.wxml
  75. 9
      src/pages/repositoryVideoDetail/index.json
  76. 106
      src/pages/repositoryVideoDetail/index.scss
  77. 235
      src/pages/repositoryVideoDetail/index.ts
  78. 108
      src/pages/repositoryVideoDetail/index.wxml
  79. 2
      src/pages/signIn/index.wxml
  80. 2
      src/pages/storyGuide/index.ts
  81. 2
      src/pages/thePublic/index.wxml
  82. 2
      src/public/pages/informedResult/index.wxml

18
project.private.config.json

@ -22,11 +22,25 @@ @@ -22,11 +22,25 @@
"miniprogram": {
"list": [
{
"name": "患者-活动报名成功",
"pathName": "pages/liveResult/index",
"query": "id=1",
"scene": null,
"launchMode": "default"
},
{
"name": "患者-个人信息",
"pathName": "pages/personalInformation/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "医生-邀约",
"pathName": "doctor/pages/d_invite/index",
"query": "",
"scene": null,
"launchMode": "default"
"launchMode": "default",
"scene": null
},
{
"name": "患者-我的",

4
src/app.json

@ -27,7 +27,6 @@ @@ -27,7 +27,6 @@
"pages/familyList/index",
"pages/familyScan/index",
"pages/thePublic/index",
"pages/privacyAgreement/index",
"pages/taskAgreement/index",
"pages/enterInfo/index",
"pages/uploadCert/index",
@ -35,7 +34,6 @@ @@ -35,7 +34,6 @@
"pages/certPending/index",
"pages/repository/index",
"pages/repositoryDetail/index",
"pages/repositoryVideoDetail/index",
"pages/live/index",
"pages/liveDetail/index",
"pages/liveResult/index",
@ -114,7 +112,7 @@ @@ -114,7 +112,7 @@
},
{
"root": "doc",
"pages": ["pages/doc1/index", "pages/doc2/index"]
"pages": ["pages/doc1/index", "pages/doc2/index", "pages/privacyAgreement/index"]
},
{
"root": "resource",

77
src/app.ts

@ -206,7 +206,7 @@ App<IAppOption>({ @@ -206,7 +206,7 @@ App<IAppOption>({
},
registrationVerification(callback: () => void, loginPage = false) {
// 1-空白用户,2-注册用户,3-疾病患者,4-用药患者
const { PatientId, AuditStatus, isFollow, UserType } = this.globalData.userInfo
const { PatientId, UserType } = this.globalData.userInfo
const { anyWhere, first } = this.globalData
if (loginPage || (anyWhere && first)) {
@ -229,32 +229,17 @@ App<IAppOption>({ @@ -229,32 +229,17 @@ App<IAppOption>({
return
}
let urlKey = ''
// UserType == 2: 已注册用户,无需审核直接成为疾病患者
if (!PatientId) {
urlKey = 'enterInfo'
} else if (AuditStatus == 0) {
urlKey = 'noCert'
} else if (AuditStatus == 1) {
urlKey = isFollow ? 'nopending' : 'pending'
} else if (AuditStatus == 2) {
urlKey = 'reject'
}
let navUrl = {
enterInfo: '/pages/enterInfo/index',
noCert: '/pages/enterInfo/index',
reject: '/pages/enterInfo/index',
pending: '/pages/enterInfo/index',
nopending: '/pages/enterInfo/index',
}[urlKey]
if (navUrl && first) {
this.globalData.registChannel = 0
this.globalData.first = false
wx.reLaunch({
url: navUrl,
})
this.globalData.first = false
return
const navUrl = '/pages/enterInfo/index'
if (first) {
this.globalData.registChannel = 0
this.globalData.first = false
wx.reLaunch({
url: navUrl,
})
return
}
}
this.globalData.first = false
@ -316,7 +301,7 @@ App<IAppOption>({ @@ -316,7 +301,7 @@ App<IAppOption>({
},
permissionVerification(grade = 1, registChannel = 0, backPage = null, regBusinessId = '') {
// 1-空白用户,2-注册用户,3-疾病患者,4-用药患者
const { PatientId, AuditStatus, isFollow, UserType } = this.globalData.userInfo
const { UserType } = this.globalData.userInfo
const that = this
this.globalData.registChannel = registChannel
this.globalData.regBusinessId = regBusinessId
@ -336,37 +321,11 @@ App<IAppOption>({ @@ -336,37 +321,11 @@ App<IAppOption>({
isReject = true
}
if (UserType == 2) {
let urlKey = ''
if (!PatientId) {
urlKey = 'enterInfo'
} else if (AuditStatus == 0) {
urlKey = 'noCert'
} else if (AuditStatus == 1) {
if (backPage && (backPage as string).includes('liveResult')) {
urlKey = 'liveResult'
} else {
urlKey = isFollow ? 'nopending' : 'pending'
}
} else if (AuditStatus == 2) {
urlKey = 'reject'
}
let navUrl = {
enterInfo: '/pages/enterInfo/index',
noCert: '/pages/enterInfo/index',
reject: '/pages/enterInfo/index',
pending: '/pages/enterInfo/index',
nopending: '/pages/enterInfo/index',
liveResult: backPage,
}[urlKey]
if (urlKey == 'liveResult') {
wx.navigateTo({
url: navUrl as string,
})
} else {
wx.reLaunch({
url: navUrl as string,
})
}
// 已注册用户无需审核,直接引导完善信息
const navUrl = '/pages/enterInfo/index'
wx.reLaunch({
url: navUrl,
})
isReject = true
}
}
@ -630,7 +589,7 @@ App<IAppOption>({ @@ -630,7 +589,7 @@ App<IAppOption>({
const checkUserType = () => {
const userInfo = this.globalData.userInfo
if (userInfo.UserType) {
resolve(userInfo.UserType >= 3 ? 'DRUG' : 'PATIENT')
resolve(userInfo.UserType >= 4 ? 'DRUG' : 'PATIENT')
return true
}
return false

63
src/components/toast/index.scss

@ -2326,31 +2326,27 @@ @@ -2326,31 +2326,27 @@
.popup-dedicated-doctor {
.popup-container {
position: relative;
padding: 392rpx 40rpx 0;
padding: 334rpx 40rpx 0;
width: 670rpx;
height: 496rpx;
height: 644rpx;
box-sizing: border-box;
.content {
position: absolute;
top: 78rpx;
right: 20rpx;
width: 462rpx;
height: 122rpx;
animation: hu__hu__ infinite 2s ease-in-out;
@keyframes hu__hu__ {
50% {
transform: translateY(20rpx);
}
font-size: 36rpx;
color: rgba(34, 34, 34, 1);
text-align: center;
line-height: 58rpx;
.high {
color: rgba(14, 182, 109, 1);
}
}
.btn {
width: 610rpx;
height: 80rpx;
margin-top: 58rpx;
height: 96rpx;
font-size: 32rpx;
color: rgba(255, 255, 255, 1);
text-align: center;
line-height: 80rpx;
background: #cf5375;
line-height: 96rpx;
background: linear-gradient(to right, rgba(14, 182, 109, 1), rgba(0, 210, 119, 1));
border-radius: 24rpx 24rpx 24rpx 24rpx;
}
}
@ -2435,27 +2431,36 @@ @@ -2435,27 +2431,36 @@
}
.popup-patient-detail-safe-doctor {
.badge{
position: relative;
z-index: 1;
display: block;
margin: 0 auto;
width: 380rpx;
height: 362rpx;
}
.popup-container {
margin-top: -200rpx;
position: relative;
padding: 228rpx 50rpx 0;
padding: 180rpx 50rpx 40rpx;
width: 670rpx;
height: 566rpx;
box-sizing: border-box;
border-radius: 24rpx;
background: linear-gradient(180deg, #E5FFF4 0%, #FFFFFF 22.89%, #FFFFFF 100%);
.content {
font-size: 32rpx;
color: #283031;
line-height: 48rpx;
font-size: 36rpx;
color: rgba(34, 34, 34, 1);
line-height: 60rpx;
}
.btn {
margin: 32rpx auto 0;
width: 364rpx;
height: 84rpx;
font-size: 36rpx;
margin: 46rpx auto 0;
height: 96rpx;
font-size: 40rpx;
color: rgba(255, 255, 255, 1);
text-align: center;
line-height: 80rpx;
background: linear-gradient(345deg, #d76c6c 0%, #fb7474 100%);
border-radius: 48rpx;
line-height: 96rpx;
background: linear-gradient(to right, rgba(14, 182, 109, 1) 0%, rgba(0, 210, 119, 1) 100%);
border-radius: 16rpx;
}
}
.close {
@ -3141,7 +3146,7 @@ @@ -3141,7 +3146,7 @@
}
.sure {
padding: 0;
background: linear-gradient( 90deg, #293B9F 0%, #1679CB 100%);
background: linear-gradient(90deg, #293b9f 0%, #1679cb 100%);
color: #ffffff;
display: flex;
align-items: center;

35
src/components/toast/index.wxml

@ -659,18 +659,15 @@ @@ -659,18 +659,15 @@
</view>
</view>
</view>
<view
class="popup-dedicated-doctor {{theme === 'DRUG' && 'popup-dedicated-doctor-drug'}}"
wx:if="{{type == 'dedicatedDoctor'}}"
>
<view
class="popup-container"
style="background: url({{imageUrl}}2/popup-dedicated-doctor{{theme === 'DRUG'?'-drug':''}}-bg.png?t={{Timestamp}}) no-repeat top center/100%"
>
<image
class="content"
src="{{imageUrl}}2/popup-dedicated-doctor-content{{theme === 'DRUG'?'-drug':''}}.png?t={{Timestamp}}"
></image>
<view class="popup-dedicated-doctor" wx:if="{{type == 'dedicatedDoctor'}}">
<view class="popup-container" style="background: url('/images/bg26.png') no-repeat top center/100%">
<div class="content">
<view>
通过
<text class="high">「专属医生互动」</text>
</view>
<view>医生可远程关注您的健康状态啦</view>
</div>
<view class="btn" bind:tap="handleOk">立即体验</view>
</view>
<image
@ -703,10 +700,8 @@ @@ -703,10 +700,8 @@
></image>
</view>
<view class="popup-patient-detail-safe-doctor" wx:if="{{type == 'patientDetailSafeDoctor'}}">
<view
class="popup-container"
style="background: url({{imageUrl}}5/safe-bg.png?t={{Timestamp}}) no-repeat top center/100%"
>
<image class="badge" src="/images/icon80.png"></image>
<view class="popup-container">
<view class="content">
以下内容涉及患者个人信息,仅用于{{params.HospitalName}}{{params.Name}}医生进行患者随访管理,请在安全环境下查看,不截图,不转发
</view>
@ -914,7 +909,9 @@ @@ -914,7 +909,9 @@
<text class="link" bind:tap="routerTo" data-path="/doc/pages/doc2/index?active=1">《用户协议》</text>
<text class="link" bind:tap="routerTo" data-path="/doc/pages/doc2/index">《隐私政策》</text>
<view></view>
<text class="link" bind:tap="routerTo" data-path="/doc/pages/doc2/index?active=2">《个人信息共享知情同意书》</text>
<text class="link" bind:tap="routerTo" data-path="/doc/pages/doc2/index?active=2">
《个人信息共享知情同意书》
</text>
</view>
<view class="footer">
<view class="cancel" bind:tap="handleCancel">取消</view>
@ -1060,9 +1057,7 @@ @@ -1060,9 +1057,7 @@
<view class="popup18" wx:if="{{type==='popup18'}}">
<image class="badge" src="{{imageUrl}}icon156.png?t={{Timestamp}}"></image>
<view class="popup-container">
<view class="title">
是否替换已有基准照
</view>
<view class="title">是否替换已有基准照</view>
<view class="p-footer">
<view class="cancel" bind:tap="handleCancel">取消</view>
<view class="sure" bind:tap="handleOk">确认替换</view>

2
src/doc/pages/doc2/index.ts

File diff suppressed because one or more lines are too long

9
src/doc/pages/privacyAgreement/index.json

@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
{
"navigationStyle": "default",
"navigationBarTitleText": "协议相关",
"usingComponents": {
"mp-html": "mp-html",
"van-tab": "@vant/weapp/tab/index",
"van-tabs": "@vant/weapp/tabs/index"
}
}

3
src/doc/pages/privacyAgreement/index.scss

@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
.mp-html {
padding: 20rpx 40rpx;
}

17
src/doc/pages/privacyAgreement/index.ts

File diff suppressed because one or more lines are too long

17
src/doc/pages/privacyAgreement/index.wxml

@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
<van-tabs active="{{ active }}" color="rgba(14, 182, 109, 1)" sticky swipeable bind:change="onChange">
<van-tab title="隐私政策">
<view class="mp-html">
<mp-html content="{{doc1}}"></mp-html>
</view>
</van-tab>
<van-tab title="用户协议">
<view class="mp-html">
<mp-html content="{{doc2}}"></mp-html>
</view>
</van-tab>
<van-tab title="个人信息共享知情同意书">
<view class="mp-html">
<mp-html content="{{doc3}}"></mp-html>
</view>
</van-tab>
</van-tabs>

2
src/doctor/pages/d_my/index.ts

@ -62,7 +62,7 @@ Page({ @@ -62,7 +62,7 @@ Page({
},
handlePrivacy() {
wx.navigateTo({
url: '/pages/privacyAgreement/index',
url: '/doc/pages/privacyAgreement/index',
})
},
handleFollow() {

4
src/gift/pages/giftDetail/index.ts

@ -20,8 +20,8 @@ Page({ @@ -20,8 +20,8 @@ Page({
this.setData({
id: options.id,
toastParams: {
doc: `<p style="text-indent: 24pt; line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">为让用户更好的享受再鼎gMG给力加油站的服务,gMG给力加油站平台向用户提供了能量兑换服务,并提供了丰富的礼品,平台注册用户可使用有效的能量兑换礼品。</span></p><p style="text-indent: 24pt; line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">gMG给力加油站的礼品库将提供:</span></p><p style="text-indent: 24pt; line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 微软雅黑;">1) </span><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">查看用户在能量商城选择兑换的商品信息;</span></p><p style="text-indent: 24pt; line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 微软雅黑;">2) </span><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">确认兑换商品的订单信息;</span></p><p style="text-indent: 24pt; line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 微软雅黑;">3) </span><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">实施兑换商品的物流配送服务。</span></p><p style="text-indent: 24pt; line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">基于以上服务内容,我们在此特别声明:</span></p><p style="text-indent: 24pt; line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">gMG给力加油站非常重视用户个人信息保护,我们制定了详细的<a style="color:#00A4ED" href="/pages/privacyAgreement/index?page=/gift/pages/giftDetail/index&id=${options.id}">《知情同意书》</a></span><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">,我们将按照公示的政策及相关法律法规的要求,对您的个人信息予以保护。为了完整的向您提供能量的商品兑换服务,gMG给力加油站将需要您提供用户真实姓名、手机号、地址信息,以便完成您所兑换商品的物流配送。其中,当用户准备对兑换商品进行结算时,平台会生成兑换该商品的订单,同时该订单中会载明订单号、所兑换的商品或服务信息、应支付的能量值。以上所有信息构成用户的“订单信息”,平台将使用订单信息来进行用户的身份核验、确定交易、支付结算、完成配送。</span></p><p style="text-indent: 24pt; line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">用户点击本协议的"同意"按钮即视为完全接受以上声明条款,在点击之前请用户再次确认已知悉并完全理解声明的全部内容。</span></p>`,
// doc:` <p style="line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">为让用户更好的享受再鼎gMG给力加油站的服务,gMG给力加油站平台向用户提供了能量兑换服务,并提供了丰富的礼品,平台注册用户可使用有效的能量兑换礼品。</span></p><p style="line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">gMG给力加油站的礼品库将提供:</span></p><p style="line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 微软雅黑;">1) </span><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">查看用户在能量商城选择兑换的商品信息;</span></p><p style="line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 微软雅黑;">2) </span><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">确认兑换商品的订单信息;</span></p><p style="line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 微软雅黑;">3) </span><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">实施兑换商品的物流配送服务。</span></p><p style="line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">基于以上服务内容,我们在此特别声明:</span></p><p style="line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">gMG给力加油站非常重视用户个人信息保护,我们制定了详细的<a style="color:#00A4ED" href="/pages/privacyAgreement/index?page=/gift/pages/giftDetail/index&id=${options.id}">《知情同意书》</a></span><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">,我们将按照公示的政策及相关法律法规的要求,对您的个人信息予以保护。为了完整的向您提供能量的商品兑换服务,gMG给力加油站将需要您提供用户真实姓名、手机号、地址信息,以便完成您所兑换商品的物流配送。其中,当用户准备对兑换商品进行结算时,平台会生成兑换该商品的订单,同时该订单中会载明订单号、所兑换的商品或服务信息、应支付的能量值。以上所有信息构成用户的“订单信息”,平台将使用订单信息来进行用户的身份核验、确定交易、支付结算、完成配送。</span></p><p style="line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">用户点击本协议的"同意"按钮即视为完全接受以上声明条款,在点击之前请用户再次确认已知悉并完全理解声明的全部内容。</span></p>`
doc: `<p style="text-indent: 24pt; line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">为让用户更好的享受再鼎愈见昕生的服务,愈见昕生平台向用户提供了能量兑换服务,并提供了丰富的礼品,平台注册用户可使用有效的能量兑换礼品。</span></p><p style="text-indent: 24pt; line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">愈见昕生的礼品库将提供:</span></p><p style="text-indent: 24pt; line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 微软雅黑;">1) </span><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">查看用户在能量商城选择兑换的商品信息;</span></p><p style="text-indent: 24pt; line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 微软雅黑;">2) </span><span style="color: rgb(89, 89, 89); font-size: 14p ... (very long line, trimmed to 1000 chars)
// doc:` <p style="line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">为让用户更好的享受再鼎愈见昕生的服务,愈见昕生平台向用户提供了能量兑换服务,并提供了丰富的礼品,平台注册用户可使用有效的能量兑换礼品。</span></p><p style="line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">愈见昕生的礼品库将提供:</span></p><p style="line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 微软雅黑;">1) </span><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">查看用户在能量商城选择兑换的商品信息;</span></p><p style="line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 微软雅黑;">2) </span><span style="color: rgb(89, 89, 89); font-size: 14px; font-family: 宋体;">确认兑换商品的订单信息;</span></p>< ... (very long line, trimmed to 1000 chars)
},
});
app.waitLogin().then(() => {

2
src/gift/pages/vipPending/index.wxml

@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
</view>
<image class="code" src="{{qrCode}}" show-menu-by-longpress></image>
<view class="tip">
<view>关注"gMG给力加油站"公众号 获取审核进度</view>
<view>关注"愈见昕生"公众号 获取审核进度</view>
<view>还可以了解更多重症肌无力专业知识</view>
</view>
</view>

BIN
src/images/1/save-active-plan.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
src/images/1/save-active.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/images/1/share-active.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 746 B

BIN
src/images/1/share.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 746 B

BIN
src/images/1/star-active.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 985 B

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
src/images/bg15.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 37 KiB

BIN
src/images/bg22.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 36 KiB

BIN
src/images/bg26.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

BIN
src/images/icon75.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
src/images/icon76.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
src/images/icon77.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
src/images/icon78.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

BIN
src/images/icon79.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
src/images/icon80.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

BIN
src/images/icon81.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

2
src/pages/changePhone/index.json

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
{
"navigationStyle": "custom",
"navigationBarTitleText": "修改手机号",
"usingComponents": {
"van-icon": "@vant/weapp/icon/index",
"navBar": "/components/navBar/navBar"

134
src/pages/changePhone/index.scss

@ -1,110 +1,36 @@ @@ -1,110 +1,36 @@
pgae {
}
.page {
position: relative;
height: 100vh;
background-color: #fafafa;
.bg {
width: 100%;
}
.container {
position: absolute;
left: 0;
top: 233rpx;
width: 100%;
.frame {
display: block;
margin: 0 auto;
width: 220rpx;
height: 220rpx;
}
.title {
display: block;
margin: 86rpx auto 0;
width: 430rpx;
height: 50rpx;
padding: 88rpx 40rpx;
.row {
margin-bottom: 32rpx;
padding: 24rpx 48rpx;
background: #f2f4f5;
border-radius: 12rpx;
border: 1rpx solid #edeff0;
display: flex;
.place-input {
color: rgba(33, 33, 32, 0.40);
}
.sub-title {
margin-top: 95rpx;
font-size: 24rpx;
color: #999999;
display: flex;
align-items: center;
justify-content: center;
.link {
color: #e04775;
}
.input {
flex: 1;
font-size: 32rpx;
line-height: 40rpx;
color: rgba(40, 48, 49, 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;
}
}
}
.divider {
margin: 48rpx auto 0;
width: 300rpx;
}
.ohter {
margin-top: 48rpx;
display: flex;
justify-content: center;
.col {
margin: 0 48rpx;
padding: 0 20rpx;
height: 48rpx;
border-radius: 24rpx;
background: #eeeeee;
font-size: 24rpx;
color: #666666;
display: flex;
align-items: center;
justify-content: center;
&::after {
border: none;
outline: none;
}
.icon {
margin-right: 12rpx;
width: 48rpx;
height: 48rpx;
}
}
.btn {
flex-shrink: 0;
font-size: 32rpx;
color: rgba(14, 182, 109, 1);
}
}
.submit {
margin-top: 64rpx;
height: 96rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 36rpx;
color: rgba(255, 255, 255, 1);
background: linear-gradient(to right, rgba(14, 182, 109, 1), rgba(0, 210, 119, 1));
border-radius: 12rpx;
}
}

38
src/pages/changePhone/index.wxml

@ -1,20 +1,24 @@ @@ -1,20 +1,24 @@
<view class="page" id="{{theme === 'DRUG' && 'drug-page'}}">
<navBar color="#364E9E" back fixed title="" bind:back="handleBack"></navBar>
<image class="bg" mode="widthFix" src="{{imageUrl}}1/login-bg.png?t={{Timestamp}}"></image>
<view class="container">
<image class="frame" src="{{imageUrl}}1/frame.png?t={{Timestamp}}"></image>
<image class="title" src="{{imageUrl}}1/login-title.png?t={{Timestamp}}"></image>
<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 class="page">
<view class="form">
<view class="row">
<input
class="input"
model:value="{{mobile}}"
placeholder-class="place-input"
type="number"
placeholder="请输入手机号"
/>
</view>
<view class="row">
<input
class="input"
model:value="{{code}}"
placeholder-class="place-input"
type="number"
placeholder="请输入验证码"
/>
<view class="btn" bind:tap="getCode">{{codeText}}</view>
</view>
<view class="submit" bind:tap="handleSubmit">确定</view>
</view>
</view>

2
src/pages/changeUser/index.wxml

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
<view class="page" id="{{theme === 'DRUG' && 'drug-page'}}">
<view class="page" id="{{theme === 'DRUG' && 'drug-page'}}">
<navBar color="#364E9E" back fixed title="" bind:back="handleBack"></navBar>
<image class="bg" mode="widthFix" src="{{imageUrl}}1/login-bg.png?t={{Timestamp}}"></image>
<view class="container">

7
src/pages/doctor/index.json

@ -3,11 +3,8 @@ @@ -3,11 +3,8 @@
"usingComponents": {
"navBar": "/components/navBar/navBar",
"van-icon": "@vant/weapp/icon/index",
"van-tab": "@vant/weapp/tab/index",
"van-tabs": "@vant/weapp/tabs/index",
"timeOut": "/components/timeOut/index",
"toast": "/components/toast/index",
"siteShare": "./siteShare/index",
"pickerArea":"/components/pickerArea/index"
"pickerArea": "/components/pickerArea/index",
"pagination": "/components/pagination/index"
}
}

286
src/pages/doctor/index.ts

@ -2,14 +2,9 @@ const app = getApp<IAppOption>() @@ -2,14 +2,9 @@ const app = getApp<IAppOption>()
Page({
data: {
tabShow: false,
tabActive: '0',
LNG: '' as number | string,
LAT: '' as number | string,
HosList: [],
DoctortList: [],
infusionCenterList: [],
dtpList: [],
HosList: [] as any[],
pagination: {
page: 1,
pages: 1,
@ -22,6 +17,7 @@ Page({ @@ -22,6 +17,7 @@ Page({
Name: '',
bottom: 0,
areaShow: false,
asideOut: false,
timeToast: false,
@ -29,24 +25,9 @@ Page({ @@ -29,24 +25,9 @@ Page({
timeToastParams: {
rewardScore: 0,
},
areaShow: false,
toastShow: false,
// toastType: 'dtpDrug',// TODO:已销毁
toastType: 'siteConform',
toastParams: {} as any,
es: '',
locationName: '重新定位',
pharmacyList: [],
pharmacyPagination: {
page: 1,
pages: 1,
count: 0,
},
userInfo: {},
},
onLoad(options) {
@ -61,24 +42,9 @@ Page({ @@ -61,24 +42,9 @@ Page({
if (options.es === '201504') {
app.globalData.IsAliQiWei = 1
app.mpBehavior({ PageName: 'PG_PATIENTVISITMAP_PAGE' })
this.setData({
es: options.es,
})
}
if (options.active && ['1', '2', '3', '4'].includes(options.active)) {
this.setData({
tabActive: options.active,
})
} else {
app.mpBehavior({ PageName: 'PG_PATIENTVISITMAPLIST' })
}
app.getUserInfo(this, true, () => {
this.setData({
tabShow: true,
})
})
app.mpBehavior({ PageName: 'PG_PATIENTVISITMAPLIST' })
app.getUserInfo(this, true)
if (options.pid) {
this.setData({
@ -101,10 +67,8 @@ Page({ @@ -101,10 +67,8 @@ Page({
res.authSetting['scope.userFuzzyLocation'] != undefined &&
res.authSetting['scope.userFuzzyLocation'] == true
) {
//获取当前位置
that.getFuzzyLocation()
} else if (res.authSetting['scope.userFuzzyLocation'] == undefined) {
//获取当前位置
that.getFuzzyLocation()
} else {
wx.showModal({
@ -113,7 +77,6 @@ Page({ @@ -113,7 +77,6 @@ Page({
confirmColor: '#cf5375',
success(res) {
if (res.cancel) {
//取消授权
wx.showToast({
title: '拒绝授权',
icon: 'none',
@ -121,7 +84,6 @@ Page({ @@ -121,7 +84,6 @@ Page({
})
that.getList()
} else if (res.confirm) {
//确定授权,通过wx.openSetting发起授权请求
wx.openSetting({
success(res) {
if (res.authSetting['scope.userFuzzyLocation'] == true) {
@ -130,7 +92,6 @@ Page({ @@ -130,7 +92,6 @@ Page({
icon: 'success',
duration: 1000,
})
//再次授权,调用wx.getLocation的API
that.getFuzzyLocation()
} else {
wx.showToast({
@ -159,7 +120,8 @@ Page({ @@ -159,7 +120,8 @@ Page({
})
that.getLocationInfo()
},
fail() {
fail(err) {
console.log(err)
that.getList()
},
})
@ -177,28 +139,6 @@ Page({ @@ -177,28 +139,6 @@ Page({
})
this.getList()
},
onChange(e: WechatMiniprogram.CustomEvent) {
const index = e.detail.name
if (index == 0) {
app.mpBehavior({ PageName: 'PG_PATIENTVISITMAPLIST' })
} else if (index == 1) {
app.mpBehavior({ PageName: 'PG_PATIENTVISITMAPDUALCHANNELPHARMACY' })
} else if (index == 2) {
app.mpBehavior({ PageName: 'PG_PATIENTVISITMAPINFUSIONCENTERLIST' })
} else if (index == 3) {
app.mpBehavior({ PageName: 'PG_PATIENTVISITMAPDOCTORS' })
} else if (index == 4) {
app.mpBehavior({ PageName: 'PG_PATIENTVISITMAPRECOMMENDEDDRLIST' })
}
this.setData({
tabActive: index,
})
wx.pageScrollTo({
scrollTop: 0,
})
this.getList()
},
handleTapSearch() {
app.mpBehavior({ PageName: 'BTN_PATIENTVISITMAPSEARCHBOX' })
},
@ -224,21 +164,7 @@ Page({ @@ -224,21 +164,7 @@ Page({
})
},
getList() {
const { tabActive, toastShow, toastType } = this.data
if (tabActive != 1 && toastShow && toastType == 'dtpDrug') {
this.hideDtpAlert()
}
if (tabActive == 0) {
this.getHosList()
} else if (tabActive == 1) {
this.getDtpList()
} else if (tabActive == 2) {
this.getInfusionCenter()
} else if (tabActive == 3) {
this.getDoctorList()
} else if (tabActive == 4) {
this.getPharmacyList()
}
this.getHosList()
},
getHosList() {
const { Name, LNG, LAT, ProvinceId, CityId } = this.data
@ -256,154 +182,17 @@ Page({ @@ -256,154 +182,17 @@ Page({
if (res.CanGetScore) {
this.handleTimeOut()
}
const list = Array.isArray(res) ? res : res.list
this.setData({
HosList: Array.isArray(res) ? res : res.list,
locationName: '重新定位',
})
})
},
getInfusionCenter() {
const { Name, LNG, LAT, ProvinceId, CityId } = this.data
wx.ajax({
method: 'GET',
url: '?r=igg4/infusion-center/list',
data: {
lng: LNG,
lat: LAT,
ProvinceId: Name ? '' : ProvinceId,
CityId: Name ? '' : CityId,
Name,
},
}).then((res) => {
this.setData({
infusionCenterList: Array.isArray(res) ? res : res.list,
locationName: '重新定位',
})
})
},
getDoctorList() {
const { Name, LNG, LAT, ProvinceId, CityId } = this.data
wx.ajax({
method: 'GET',
url: '?r=igg4/doctor/list',
data: {
lng: LNG,
lat: LAT,
ProvinceId: Name ? '' : ProvinceId,
CityId: Name ? '' : CityId,
Name,
},
}).then((res) => {
this.setData({
HosList: list,
locationName: '重新定位',
DoctortList: res.map((item: { Clinic: string }) => {
let weekName = ''
if (item.ClinicType == 2) {
weekName = item.Clinic
} else {
weekName = (JSON.parse(item.Clinic) ? JSON.parse(item.Clinic) : []).map(
(subItem: { weekday: string | number; timeType: string | number }) => {
const week = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
const timeDay = { 1: '上午', 2: '下午' }
return { week: week[Number(subItem.weekday) - 1], timeDay: timeDay[subItem.timeType] }
},
)
}
return {
weekName,
...item,
}
}),
'pagination.count': list.length,
})
})
},
getDtpList() {
const { Name, LNG, LAT, ProvinceId, CityId } = this.data
wx.ajax({
method: 'GET',
url: '?r=igg4/dtp-pharmacy/list',
data: {
lng: LNG,
lat: LAT,
ProvinceId: Name ? '' : ProvinceId,
CityId: Name ? '' : CityId,
Name,
},
}).then((res) => {
this.setData({
dtpList: res.list,
locationName: '重新定位',
})
})
},
getPharmacyList() {
const { Name } = this.data
wx.ajax({
method: 'GET',
url: '?r=igg4/doctor-recommend/get-doctor-list',
data: {
count: 0,
search: Name,
},
}).then((res) => {
res.list = res.list.map((item) => {
let weekName = ''
if (item.doctorClinicType == 2) {
weekName = item.doctorClinic
} else {
weekName = (JSON.parse(item.doctorClinic) ? JSON.parse(item.doctorClinic) : []).map(
(subItem: { weekday: string | number; timeType: string | number }) => {
const week = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
const timeDay = { 1: '上午', 2: '下午' }
return { week: week[Number(subItem.weekday) - 1], timeDay: timeDay[subItem.timeType] }
},
)
}
return {
weekName,
...item,
}
})
this.setData({
pharmacyList: res.list,
})
})
},
// getDtpAlert() {
// wx.ajax({
// method: 'GET',
// url: '?r=igg4/popup/info',
// data: { Type: 3 },
// }).then((res) => {
// if (res.showAlert) {
// this.setData({
// toastShow: true,
// toastType: 'dtpDrug',
// })
// }
// })
// },
hideDtpAlert() {
wx.ajax({
method: 'POST',
url: '?r=igg4/popup/close-popup',
data: { Type: 3 },
}).then((_res) => {})
},
handleDetail(e: WechatMiniprogram.CustomEvent) {
const { url } = e.currentTarget.dataset
const { tabActive } = this.data
if (tabActive == '0') {
app.mpBehavior({ PageName: 'BTN_PATIENTVISITMAPLIST' })
} else if (tabActive == '1') {
app.mpBehavior({ PageName: 'BTN_PATIENTVISITMAPDUALCHANNELPHARMACY' })
} else if (tabActive == '2') {
app.mpBehavior({ PageName: 'BTN_PATIENTVISITMAPINFUSIONCENTERLIST' })
} else if (tabActive == '3') {
app.mpBehavior({ PageName: 'BTN_PATIENTVISITMAPDOCTORS' })
} else if (tabActive == '4') {
app.mpBehavior({ PageName: 'BTN_PATIENTVISITMAPRECOMMENDEDDRLIST' })
}
app.mpBehavior({ PageName: 'BTN_PATIENTVISITMAPLIST' })
wx.navigateTo({
url,
})
@ -421,29 +210,6 @@ Page({ @@ -421,29 +210,6 @@ Page({
wx.navigateBack()
},
onPageScroll() {},
handleToastOk() {
this.handleToastCancel()
},
handleToastCancel() {
this.hideDtpAlert()
this.setData({
toastShow: false,
})
},
handleDtpPhone(e: any) {
const { tel } = e.currentTarget.dataset
if (!tel) {
wx.showToast({
icon: 'none',
title: '电话暂未开通',
})
return
}
wx.makePhoneCall({
phoneNumber: tel,
})
},
handleTimeOut() {
this.setData({
asideOut: false,
@ -471,17 +237,14 @@ Page({ @@ -471,17 +237,14 @@ Page({
}
})
},
handleSiteShare(e) {
this.setData({
toastShow: true,
toastType: 'siteConform',
toastParams: e.detail,
})
},
handleDefultLocation() {
if (this.data.locationName === '定位中') return
this.setData({
locationName: '定位中',
ProvinceId: '',
ProvinceName: '',
CityId: '',
CityName: '',
})
this.handleToggleSite()
},
@ -490,24 +253,11 @@ Page({ @@ -490,24 +253,11 @@ Page({
areaShow: e.detail,
})
},
onShareAppMessage(e: any) {
let path = `/pages/doctor/index?active=${this.data.tabActive}&es=${this.data.es}`
const { toastType, toastParams } = this.data
if (toastType === 'siteConform' && e.from === 'button') {
path = `${path}&pid=${toastParams.ProvinceId}&cid=${toastParams.CityId}&pn=${toastParams.ProvinceName}&cn=${toastParams.CityName}`
this.setData({
ProvinceId: toastParams.ProvinceId,
ProvinceName: toastParams.ProvinceName,
CityId: toastParams.CityId,
CityName: toastParams.CityName,
})
this.getList()
}
onShareAppMessage() {
return {
title: '【就诊地图】帮您快速找到医生医院、药店和输注点',
title: '【就诊地图】帮您快速找到医生医院',
imageUrl: `${app.globalData.imageUrl}5/share1.png?t=${app.globalData.Timestamp}`,
path,
path: `/pages/doctor/index`,
}
},
})

26
src/pages/doctor/index.wxml

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
<page-meta page-style="{{ areaShow || toastShow ? 'overflow: hidden;' : '' }}" />
<page-meta page-style="{{ areaShow ? 'overflow: hidden;' : '' }}" />
<view class="page" id="{{theme === 'DRUG' && 'drug-page'}}">
<view class="page-header" style="background: #fff">
@ -37,7 +37,7 @@ @@ -37,7 +37,7 @@
</view>
</view>
<view class="map" wx:if="{{tabActive==0}}">
<view class="map">
<view
class="map-item"
wx:for="{{HosList}}"
@ -45,14 +45,13 @@ @@ -45,14 +45,13 @@
bind:tap="handleDetail"
data-url="/pages/hospital/index?id={{item.Id}}"
>
<!-- <view class="follow" wx:if="{{item.IsTop==1}}">已关注</view> -->
<view class="m-header">
<view class="hosttipat-img">
<image class="img" mode="aspectFill" src="{{item.Imgs}}"></image>
</view>
<view class="wrap">
<view class="title">
<view class="tag" wx:if="{{item.HospitalClassificationName || item.HospitalLevelName}}">
<view class="tag" wx:if="{{item.HospitalClassificationName || item.HospitalLevelName}}">
{{item.HospitalClassificationName}}{{item.HospitalLevelName}}
</view>
<view class="name">{{item.Name}}</view>
@ -79,7 +78,7 @@ @@ -79,7 +78,7 @@
</view>
</view>
</view>
<pagination wx:if="{{!HosList.length}}" pagination="{{pagination}}"></pagination>
<pagination pagination="{{pagination}}"></pagination>
</view>
</view>
@ -90,20 +89,3 @@ @@ -90,20 +89,3 @@
timeToastType="{{timeToastType}}"
timeToastParams="{{timeToastParams}}"
></timeOut>
<toast
bind:cancel="handleToastCancel"
bind:ok="handleToastOk"
show="{{toastShow}}"
type="{{toastType}}"
params="{{toastParams}}"
></toast>
<!--<siteShare
pname="{{ProvinceName}}"
pid="{{ProvinceId}}"
cid="{{CityId}}"
cname="{{CityName}}"
bind:ok="handleSiteShare"
bind:show="handleSiteShareShow"
></siteShare>-->

4
src/pages/doctorDetail/index.wxml

@ -24,9 +24,9 @@ @@ -24,9 +24,9 @@
<view class="title">医生简介</view>
<view class="r-content">{{detail.Introduce}}</view>
</view>
<view class="row" wx:if="{{detail.weekName}}">
<view class="row" wx:if="{{detail.weekName.length || detail.ClinicType==2 && detail.weekName}}">
<view class="title">出诊时间</view>
<view class="r-content" wx:if="{[detail.weekName]}">
<view class="r-content">
<!-- prettier-ignore -->
<view wx:if="{{detail.ClinicType==2}}" class="week-name pre-line">
<view class="label">出诊时间</view>{{detail.weekName}}

16
src/pages/enterInfo/index.ts

@ -8,6 +8,7 @@ Page({ @@ -8,6 +8,7 @@ Page({
gender: '',
birth: '',
ageRange: '',
diagnosisTimeRange: '',
diagnosisTime: '',
diagnoseType: '',
@ -57,6 +58,12 @@ Page({ @@ -57,6 +58,12 @@ Page({
ageRange: id,
})
},
handleSelectDiagnosisTimeRange(e: WechatMiniprogram.CustomEvent) {
const { id } = e.currentTarget.dataset
this.setData({
diagnosisTimeRange: id,
})
},
bindChangeDate(e: WechatMiniprogram.CustomEvent) {
const { key } = e.currentTarget.dataset
this.setData({
@ -88,12 +95,11 @@ Page({ @@ -88,12 +95,11 @@ Page({
handleSubmit() {
if (this.data.submiting) return
app.mpBehavior({ PageName: 'BTN_PATIENTINFONEXT' })
const { name, gender, ageRange, relationType } = this.data
const { name, gender, ageRange, diagnosisTimeRange, relationType } = this.data
const { registrationSource, registChannel, regBusinessId, WorkerId, IsAliQiWei } = app.globalData
const { doctorId, inviteChan, recDoctorId: recommendDoctorId } = app.globalData.scene
let toast = ''
// if (!diagnosisTime) toast = "确诊时间不能为空";
// if (!birth) toast = "出生日期不能为空";
if (!diagnosisTimeRange) toast = '请选择确诊时间范围'
if (!gender) toast = '请选择性别'
if (!ageRange) toast = '请选择年龄范围'
if (!name) toast = '姓名不能为空'
@ -103,8 +109,7 @@ Page({ @@ -103,8 +109,7 @@ Page({
}
const backPage = app.globalData.backPage
const navUrl =
typeof backPage === 'string' && backPage.includes('liveResult') ? backPage : '/pages/certReslove/index'
const navUrl = typeof backPage === 'string' && backPage.includes('liveResult') ? backPage : '/pages/index/index'
this.setData({
submiting: true,
@ -116,6 +121,7 @@ Page({ @@ -116,6 +121,7 @@ Page({
name,
gender,
ageRange,
diagnosisTimeRange,
// birth,
// diagnoseType,
// diagnosisTime,

8
src/pages/enterInfo/index.wxml

@ -35,11 +35,11 @@ @@ -35,11 +35,11 @@
</view>
<view class="row-title">从首次确诊IgG4相关性疾病,到现在多久了</view>
<view class="row row-age">
<view class="age-item {{ageRange==5 && 'active'}}" data-id="5" bind:tap="handleSelectAge">6个月以内</view>
<view class="age-item {{ageRange==1 && 'active'}}" data-id="1" bind:tap="handleSelectAge">6个月-3年</view>
<view class="age-item {{ageRange==2 && 'active'}}" data-id="2" bind:tap="handleSelectAge">3年以上</view>
<view class="age-item {{diagnosisTimeRange==1 && 'active'}}" data-id="1" bind:tap="handleSelectDiagnosisTimeRange">6个月以内</view>
<view class="age-item {{diagnosisTimeRange==2 && 'active'}}" data-id="2" bind:tap="handleSelectDiagnosisTimeRange">6个月-3年</view>
<view class="age-item {{diagnosisTimeRange==3 && 'active'}}" data-id="3" bind:tap="handleSelectDiagnosisTimeRange">3年以上</view>
</view>
<view class="row-title">患者年龄</view>
<view class="row-title">输入真实姓名,便于医生识别随访</view>
<view class="row">
<input
model:value="{{name}}"

2
src/pages/familyScan/index.ts

@ -45,7 +45,7 @@ Page({ @@ -45,7 +45,7 @@ Page({
if (!this.data.ignoreAgreement) {
if (UserType >= 2) {
wx.navigateTo({
url: `/pages/privacyAgreement/index?page=/pages/familyScan/index`,
url: `/doc/pages/privacyAgreement/index?page=/pages/familyScan/index`,
});
} else {
wx.navigateTo({

4
src/pages/hospital/index.scss

@ -95,8 +95,6 @@ page { @@ -95,8 +95,6 @@ page {
.nc-header {
display: flex;
gap: 24rpx;
padding-bottom: 40rpx;
border-bottom: 1px solid #ebebeb;
.avatar {
flex-shrink: 0;
width: 124rpx;
@ -125,6 +123,8 @@ page { @@ -125,6 +123,8 @@ page {
}
}
.content {
margin-top: 40rpx;
border-top: 1px solid #ebebeb;
padding-top: 30rpx;
flex: 1;
.name {

10
src/pages/hospital/index.wxml

@ -39,9 +39,9 @@ @@ -39,9 +39,9 @@
<view class="p ellipsis">{{item.Introduce}}</view>
</view>
</view>
<view class="content">
<view class="content" wx:if="{{item.weekName.length || item.ClinicType==2 && item.weekName}}">
<view class="name">出诊时间</view>
<view class="row" wx:if="{[item.weekName]}">
<view class="row">
<!-- prettier-ignore -->
<view wx:if="{{item.ClinicType==2}}" class="week-name pre-line">
<view class="label">出诊时间</view>{{item.weekName}}
@ -59,13 +59,13 @@ @@ -59,13 +59,13 @@
</view>
</view>
<view class="footer">
<view class="phone">
<view class="phone" bind:tap="handlePhone" wx:if="{{detail.Telephone}}">
<image class="icon" src="{{imageUrl}}{{theme === 'DRUG' ? 'icon70' : 'icon46'}}.png?t={{Timestamp}}"></image>
电话
</view>
<view class="site">
<view class="site" bind:tap="handleOpenMap">
<image class="icon" src="{{imageUrl}}icon47.png?t={{Timestamp}}"></image>
地址14.46KM
地址{{detail.dist}}
</view>
</view>
</view>

3
src/pages/index/index.json

@ -3,7 +3,6 @@ @@ -3,7 +3,6 @@
"usingComponents": {
"pageNavbar": "/components/pageNavbar/index",
"van-icon": "@vant/weapp/icon/index",
"toast": "/components/toast/index",
"referralFrom": "/components/referralFrom/index"
"toast": "/components/toast/index"
}
}

22
src/pages/index/index.scss

@ -56,7 +56,7 @@ page { @@ -56,7 +56,7 @@ page {
line-height: 1;
}
.d-content {
margin-top: 24rpx;
margin-top: 64rpx;
font-size: 26rpx;
color: rgba(34, 34, 34, 0.7);
display: flex;
@ -234,19 +234,15 @@ page { @@ -234,19 +234,15 @@ page {
width: 100%;
height: 40rpx;
font-size: 24rpx;
color: #fff;
color: rgba(255, 255, 255, 1);
display: flex;
align-items: center;
justify-content: center;
gap: 10rpx;
background: rgba(0, 0, 0, 0.21);
background: linear-gradient(270deg, #ffd454 0%, #ffa851 100%);
border-radius: 0 0 24rpx 24rpx;
.icon {
width: 20rpx;
height: 20rpx;
}
&.active {
background-color: rgba(207, 83, 117, 1);
&.unsigned {
color: rgba(34, 34, 34, 0.5);
background: rgba(246, 246, 246, 1);
}
}
}
@ -339,7 +335,7 @@ page { @@ -339,7 +335,7 @@ page {
.actions {
margin-top: 16rpx;
display: flex;
gap: 32rpx;
gap: 48rpx;
.action-btn {
display: flex;
align-items: center;
@ -348,8 +344,8 @@ page { @@ -348,8 +344,8 @@ page {
color: #999999;
font-weight: normal;
.action-icon {
width: 28rpx;
height: 28rpx;
width: 32rpx;
height: 32rpx;
}
}
}

272
src/pages/index/index.ts

@ -11,6 +11,9 @@ Page({ @@ -11,6 +11,9 @@ Page({
anyWhere: false,
regGuide: true,
greeting: '晚上好',
greetingIcon: 'icon77',
adlList: [],
adlNum: '',
adlNewRecord: {} as any,
@ -22,22 +25,9 @@ Page({ @@ -22,22 +25,9 @@ Page({
detail: {},
referralFromShow: false,
publicCard: false,
// toastShow: true,
// toastType: "doubleStandards",
// toastType: "vipScan",
// toastType: "healthCare",
// toastType: "aldAlert",
// toastType: "dedicatedDoctor",
// toastType: 'referral-toast',
// toastType: 'public-toast',
// toastType: 'recommendDoctor',
// toastType: 'recommendBindDoctor',
toastShow: false,
toastType: '',
// toastType: 'dedicatedDoctor', // 绑定医生弹窗
toastParams: {} as any,
sliderTop: 0,
@ -82,8 +72,8 @@ Page({ @@ -82,8 +72,8 @@ Page({
app.getUserInfo(this, true, (userInfo) => {
this.setData({
userInfo,
publicCard: userInfo.isShowFollowGuide == 1,
})
this.updateGreeting()
if (this.data.firstLogin != '1' || userInfo.EntryFourPeriod != 1) {
this.getPopup()
} else {
@ -125,6 +115,28 @@ Page({ @@ -125,6 +115,28 @@ Page({
})
})
},
updateGreeting() {
const hour = new Date().getHours()
let greeting = '晚上好'
let greetingIcon = 'icon77'
if (hour >= 6 && hour < 12) {
greeting = '早上好'
greetingIcon = 'icon75'
} else if (hour >= 12 && hour < 18) {
greeting = '下午好'
greetingIcon = 'icon76'
}
if (this.data.userInfo.UserType == 4) {
if (hour >= 6 && hour < 12) {
greetingIcon = 'icon78'
} else if (hour >= 12 && hour < 18) {
greetingIcon = 'icon79'
} else {
greetingIcon = 'icon65'
}
}
this.setData({ greeting, greetingIcon })
},
getLastRecord() {
wx.ajax({
method: 'GET',
@ -194,71 +206,6 @@ Page({ @@ -194,71 +206,6 @@ Page({
})
},
async getPopup() {
const data5 = await wx.ajax({
method: 'GET',
url: '?r=igg4/popup/info',
data: {
Type: 5,
},
})
if (data5.showAlert) {
this.setData({
toastShow: data5.showAlert,
toastType: 'doubleStandards',
toastParams: data5,
})
return
}
const data4 = await wx.ajax({
method: 'GET',
url: '?r=igg4/popup/info',
data: {
Type: 4,
},
})
if (data4.showAlert) {
this.setData({
toastShow: data4.showAlert,
toastType: 'vipScan',
toastParams: {},
})
return
}
const data1 = await wx.ajax({
method: 'GET',
url: '?r=igg4/popup/info',
data: { Type: 1 },
})
if (!Array.isArray(data1)) {
this.setData({
toastShow: true,
toastType: 'healthCare',
toastParams: data1,
})
return
}
const data2 = await wx.ajax({
method: 'GET',
url: '?r=igg4/popup/info',
data: {
Type: 2,
},
})
if (data2.showAlert && this.data.userInfo.UserType == 4) {
this.setData({
toastShow: data2.showAlert,
toastType: 'aldAlert',
toastParams: {
id: data2.articleId,
},
})
return
}
const data3 = await wx.ajax({
method: 'GET',
url: '?r=igg4/popup/info',
@ -274,49 +221,8 @@ Page({ @@ -274,49 +221,8 @@ Page({
...data3.doctorInfo,
},
})
return
}
const data6 = await wx.ajax({
method: 'GET',
url: '?r=igg4/re-visit/get-popup-show-status',
})
if (data6.showStatus === 1) {
this.setData({
toastShow: true,
toastType: 'referral-toast',
toastParams: {},
})
return
}
const data7 = await wx.ajax({
method: 'GET',
url: '?r=igg4/popup/info',
data: {
Type: 7,
},
})
if (data7.showAlert) {
this.setData({
toastShow: data7.showAlert,
toastType: 'recommendDoctor',
toastParams: {
...data7.doctorInfo,
},
})
}
},
setPopupInfo() {
wx.ajax({
method: 'POST',
url: '?r=igg4/popup/update-click-status',
data: {
Type: 1,
Id: this.data.toastParams.Id,
},
}).then((_res) => {})
},
setBannerClick() {
wx.ajax({
method: 'POST',
@ -537,29 +443,7 @@ Page({ @@ -537,29 +443,7 @@ Page({
},
handleToastOk() {
const { toastType } = this.data
if (toastType === 'vipScan') {
this.routerVipTo()
this.handleToastCancel()
} else if (toastType === 'aldAlert') {
wx.navigateTo({
url: '/pages/adl/index',
})
this.handleToastCancel()
} else if (toastType === 'healthCare') {
this.setPopupInfo()
this.handleNRDL()
this.handleToastCancel()
} else if (toastType === 'ndrlAldAlert') {
wx.navigateTo({
url: '/pages/adl/index?nrdl=1',
})
this.handleToastCancel()
} else if (toastType === 'doubleStandards') {
wx.navigateTo({
url: '/pages/adl/index',
})
this.handleToastCancel()
} else if (toastType === 'dedicatedDoctor' || toastType === 'recommendBindDoctor') {
if (toastType === 'dedicatedDoctor' || toastType === 'recommendBindDoctor') {
wx.ajax({
method: 'POST',
url: '?r=igg4/popup/close-popup',
@ -575,42 +459,11 @@ Page({ @@ -575,42 +459,11 @@ Page({
app.getUserInfo(this, true)
})
this.handleToastCancel(null, false)
} else if (toastType === 'referral-toast') {
this.setData({
referralFromShow: true,
})
wx.ajax({
method: 'POST',
url: '?r=igg4/re-visit/update-popup-show-status',
data: {},
})
this.handleToastCancel(null, false)
} else if (toastType === 'recommendDoctor') {
wx.ajax({
method: 'POST',
url: '?r=igg4/popup/close-popup',
data: {
Type: 7,
},
}).then(() => {
wx.navigateTo({
url: '/pages/doctor/index?active=4',
})
})
this.handleToastCancel(null, false)
}
},
handleToastCancel(_e = null, sure = true) {
const { toastType } = this.data
if (toastType === 'doubleStandards' && sure) {
wx.ajax({
method: 'POST',
url: '?r=igg4/popup/close-popup',
data: {
Type: 5,
},
})
} else if ((toastType === 'dedicatedDoctor' || toastType === 'recommendBindDoctor') && sure) {
if ((toastType === 'dedicatedDoctor' || toastType === 'recommendBindDoctor') && sure) {
wx.ajax({
method: 'POST',
url: '?r=igg4/popup/close-popup',
@ -619,20 +472,6 @@ Page({ @@ -619,20 +472,6 @@ Page({
},
})
app.getUserInfo(this, true)
} else if (toastType === 'referral-toast' && sure) {
wx.ajax({
method: 'POST',
url: '?r=igg4/re-visit/update-popup-show-status',
data: {},
})
} else if (toastType === 'recommendDoctor' && sure) {
wx.ajax({
method: 'POST',
url: '?r=igg4/popup/close-popup',
data: {
Type: 7,
},
})
}
this.setData({
toastShow: false,
@ -640,24 +479,6 @@ Page({ @@ -640,24 +479,6 @@ Page({
toastParams: '',
})
},
handlePublic() {
this.setData({
toastShow: true,
toastType: 'public-toast',
toastParams: {},
})
this.handlePublicClose()
},
handlePublicClose() {
this.setData({
publicCard: false,
})
wx.ajax({
method: 'POST',
url: '?r=igg4/account/add-user-subscribe-guide-record',
data: {},
})
},
handleMp(e: any) {
const { code } = e.currentTarget.dataset
const PageName = {
@ -706,22 +527,25 @@ Page({ @@ -706,22 +527,25 @@ Page({
},
handleArticleSave(e: any) {
const { id, saved } = e.currentTarget.dataset
wx.ajax({
method: 'POST',
url: '?r=igg4/pic-text/save',
data: {
id,
isSave: saved ? 0 : 1,
},
}).then(() => {
const { infoList } = this.data
const newList = infoList.map((page: any) =>
page.map((item: any) => (item.ArticleId === id ? { ...item, IsSave: saved ? 0 : 1 } : item)),
)
this.setData({ infoList: newList })
wx.showToast({
title: saved ? '已取消收藏' : '收藏成功',
icon: 'none',
const url = saved ? '?r=igg4/pic-text/cancel-collection' : '?r=igg4/pic-text/collection'
app.permissionVerification(3, 3, `/pages/index/index`, id).then(() => {
wx.ajax({
method: 'POST',
url,
data: {
ContentId: id,
},
loading: true,
}).then(() => {
const { infoList } = this.data
const newList = infoList.map((page: any) =>
page.map((item: any) => (item.ArticleId === id ? { ...item, IsSave: saved ? 0 : 1 } : item)),
)
this.setData({ infoList: newList })
wx.showToast({
title: saved ? '已取消收藏' : '收藏成功',
icon: 'none',
})
})
})
},

247
src/pages/index/index.wxml

@ -4,9 +4,9 @@ @@ -4,9 +4,9 @@
<view class="user" wx:if="{{userInfo.UserType!=1}}">
<view class="content">
<view class="name">
<text class="high">kola,</text>
晚上好
<image class="icon" src="{{imageUrl}}{{theme === 'DRUG' ? 'icon65' : 'icon33'}}.png?t={{Timestamp}}"></image>
<text class="high">{{userInfo.PatientName || 'HI'}},</text>
{{greeting}}
<image class="icon" src="{{imageUrl}}{{greetingIcon}}.png?t={{Timestamp}}"></image>
</view>
<image class="slogan" src="{{imageUrl}}title2.png?t={{Timestamp}}"></image>
</view>
@ -15,7 +15,6 @@ @@ -15,7 +15,6 @@
class="day"
style="background: url('{{imageUrl}}{{theme === 'DRUG' ? 'bg22' : 'bg15'}}.png?t={{Timestamp}}') no-repeat top center/100%"
>
<view class="d-title">今天是陪伴您</view>
<view class="d-content">
<view class="num">{{userInfo.JoinDays}}</view>
@ -33,157 +32,147 @@ @@ -33,157 +32,147 @@
</view>
</view>
<view class="page-container">
<view class="module-title">
<view class="title">我的医生</view>
</view>
<view
class="doctor"
wx:if="{{userInfo.ExclusiveDoctorId}}"
bind:tap="routerTo"
data-url="/pages/interactivePatient/index"
>
<view
class="container"
style="background: url('{{imageUrl}}{{theme === 'DRUG' ? 'bg23' : 'bg14'}}.png?t={{Timestamp}}') no-repeat top center/100% 172rpx"
>
<view class="avatar">
<image class="a-img" mode="aspectFill" src="{{userInfo.ExclusiveDoctorImg}}" alt=""></image>
<image wx:if="{{unreadCount}}" class="icon" src="{{imageUrl}}icon33.png?t={{Timestamp}}"></image>
</view>
<view class="wrap">
<view class="name-wrap">
<view class="name">
<view class="n-content">{{userInfo.ExclusiveDoctorName}}</view>
<image class="label" src="{{imageUrl}}icon61.png?t={{Timestamp}}"></image>
</view>
<block wx:if="{{userInfo.ExclusiveDoctorId}}">
<view class="module-title">
<view class="title">我的医生</view>
</view>
<view class="doctor" bind:tap="routerTo" data-url="/pages/interactivePatient/index">
<view
class="container"
style="background: url('{{imageUrl}}{{theme === 'DRUG' ? 'bg23' : 'bg14'}}.png?t={{Timestamp}}') no-repeat top center/100% 172rpx"
>
<view class="avatar">
<image class="a-img" mode="aspectFill" src="{{userInfo.ExclusiveDoctorImg}}" alt=""></image>
<image wx:if="{{unreadCount}}" class="icon" src="{{imageUrl}}icon33.png?t={{Timestamp}}"></image>
</view>
<view class="content" wx:if="{{unreadCount}}">医生给您留言了,记得查看!</view>
<view class="hostipal" wx:else>
<view class="h-content">{{userInfo.ExclusiveDoctorHospitalName}}</view>
<view
class="tag"
wx:if="{{userInfo.ExclusiveDoctorHospitalClassificationName || userInfo.ExclusiveDoctorHospitalLevelName}}"
>
{{userInfo.ExclusiveDoctorHospitalClassificationName}}{{userInfo.ExclusiveDoctorHospitalLevelName}}
<view class="wrap">
<view class="name-wrap">
<view class="name">
<view class="n-content">{{userInfo.ExclusiveDoctorName}}</view>
<image class="label" src="{{imageUrl}}icon61.png?t={{Timestamp}}"></image>
</view>
</view>
<view class="content" wx:if="{{unreadCount}}">医生给您留言了,记得查看!</view>
<view class="hostipal" wx:else>
<view class="h-content">{{userInfo.ExclusiveDoctorHospitalName}}</view>
<view
class="tag"
wx:if="{{userInfo.ExclusiveDoctorHospitalClassificationName || userInfo.ExclusiveDoctorHospitalLevelName}}"
>
{{userInfo.ExclusiveDoctorHospitalClassificationName}}{{userInfo.ExclusiveDoctorHospitalLevelName}}
</view>
</view>
</view>
</view>
<view class="btn">
<image class="icon" src="{{imageUrl}}{{theme === 'DRUG' ? 'icon66' : 'icon34'}}.png?t={{Timestamp}}"></image>
<view class="btn">
<image
class="icon"
src="{{imageUrl}}{{theme === 'DRUG' ? 'icon66' : 'icon34'}}.png?t={{Timestamp}}"
></image>
</view>
</view>
</view>
</view>
<view class="module-title">
<view class="title">大咖说</view>
<view class="more" bind:tap="routerTo" data-url="/pages/live/index" data-active="1" data-code="{{card.code}}">
查看更多
<van-icon name="arrow" />
</block>
<block wx:if="{{liveList.length}}">
<view class="module-title">
<view class="title">大咖说</view>
<view class="more" bind:tap="routerTo" data-url="/pages/live/index" data-active="1" data-code="activity2">
查看更多
<van-icon name="arrow" />
</view>
</view>
</view>
<view class="live">
<view
class="item"
wx:for="{{liveList}}"
wx:key="index"
bind:tap="routerTo"
data-url="/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}}icon2.png?t={{Timestamp}}"></image>
{{liveStatus[item.Status]}}
<view class="live">
<view
class="item"
wx:for="{{liveList}}"
wx:key="index"
bind:tap="routerTo"
data-url="/pages/liveDetail/index?id={{item.Id}}"
data-code="activity2"
>
<view class="photo-wrap">
<image class="photo" src="{{item.PosterUrl}}"></image>
<view class="status {{item.IsSignUp != 1 && 'unsigned'}}">{{item.IsSignUp==1 ? '已报名' : '未报名'}}</view>
</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 class="content">
<view class="name">{{item.Name}}</view>
<view class="labels" wx:if="{{item.doctorName}}">
{{item.doctorName}}{{item.hospitalName ? ' | ' + item.hospitalName : ''}}
</view>
</view>
</view>
</view>
</view>
<view class="module-title">
<view class="title">了解 IgG4-RD</view>
<view class="more" bind:tap="routerTo" data-url="/pages/repository/index" data-code="{{card.code}}">
查看更多
<van-icon name="arrow" />
</block>
<block wx:if="{{infoList.length}}">
<view class="module-title">
<view class="title">了解 IgG4-RD</view>
<view class="more" bind:tap="routerTo" data-url="/pages/repository/index" data-code="article">
查看更多
<van-icon name="arrow" />
</view>
</view>
</view>
<view class="book" wx:if="{{infoList.length}}">
<swiper
class="swiper"
indicator-active-color="rgba(39, 58, 101, 0.5)"
indicator-color="rgba(39, 58, 101, 0.2)"
indicator-dots="{{infoList.length > 1}}"
>
<swiper-item class="swiper-item" wx:for="{{infoList}}" wx:for-item="info" wx:key="index">
<view class="book-list">
<view class="card" wx:for="{{info}}" wx:key="index">
<view class="cover">
<image class="photo" mode="aspectFill" src="{{item.TitlePicLink}}"></image>
<view class="label">{{item.CateName}}</view>
</view>
<view class="content">
<view class="title">{{item.Title}}</view>
<view class="actions">
<view class="action-btn" bind:tap="handleArticleView" data-id="{{item.ArticleId}}">
<image class="action-icon" src="{{imageUrl}}icon-view.png?t={{Timestamp}}"></image>
查看
</view>
<view
class="action-btn"
bind:tap="handleArticleSave"
data-id="{{item.ArticleId}}"
data-saved="{{item.IsSave}}"
>
<image
class="action-icon"
src="{{imageUrl}}{{item.IsSave ? 'icon-saved.png' : 'icon-save.png'}}?t={{Timestamp}}"
></image>
收藏
<view class="book">
<swiper
class="swiper"
indicator-active-color="rgba(39, 58, 101, 0.5)"
indicator-color="rgba(39, 58, 101, 0.2)"
indicator-dots="{{infoList.length > 1}}"
>
<swiper-item class="swiper-item" wx:for="{{infoList}}" wx:for-item="info" wx:key="index">
<view class="book-list">
<view
class="card"
wx:for="{{info}}"
wx:key="index"
bind:tap="handleArticleView"
data-id="{{item.ArticleId}}"
>
<view class="cover">
<image class="photo" mode="aspectFill" src="{{item.TitlePicLink}}"></image>
<view class="label">{{item.CateName}}</view>
</view>
<view class="content">
<view class="title">{{item.Title}}</view>
<view class="actions">
<view class="action-btn">
<image class="action-icon" mode="aspectFit" src="{{imageUrl}}1/view.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.OpenNum + ~~item.BasicNum}}">{{~~item.OpenNum + ~~item.BasicNum}}</block>
</view>
<view
class="action-btn {{item.IsSave == 1 && 'active'}}"
catch:tap="handleArticleSave"
data-id="{{item.ArticleId}}"
data-saved="{{item.IsSave}}"
>
<image
class="action-icon"
mode="aspectFit"
src="{{imageUrl}}{{item.IsSave ? '1/save-active-plan.png' : '1/save.png'}}?t={{Timestamp}}"
></image>
<block wx:if="{{~~item.CollectionPeopleNum}}">{{item.CollectionPeopleNum}}</block>
</view>
</view>
</view>
</view>
</view>
</view>
</swiper-item>
</swiper>
</view>
</swiper-item>
</swiper>
</view>
</block>
</view>
<view
class="reg"
wx:if="{{regGuide && anyWhere && (userInfo.UserType==1 || (userInfo.UserType==2 && userInfo.AuditStatus==0))}}"
bind:tap="handleReg"
>
<view class="reg" wx:if="{{regGuide && anyWhere && userInfo.UserType==1}}" bind:tap="handleReg">
<text class="blod">注册</text>
后享受全面重症肌无力患者服务
<van-icon name="arrow" />
<image catch:tap="handleRegClose" class="reg-close" src="{{imageUrl}}5/reg-close.png?t={{Timestamp}}"></image>
</view>
<view
class="reg-audit"
wx:elif="{{regGuide && anyWhere && userInfo.UserType==2 && (userInfo.AuditStatus==1 || userInfo.AuditStatus==2 )}}"
bind:tap="handleReg"
>
您的认证正在审核中,审核通过后获取全部服务
<view class="reg-audit" wx:elif="{{regGuide && anyWhere && userInfo.UserType==2}}" bind:tap="handleReg">
完善患者信息后获取全部服务
<van-icon name="arrow" />
<image catch:tap="handleRegClose" class="reg-close" src="{{imageUrl}}5/reg-close.png?t={{Timestamp}}"></image>
</view>
<view wx:elif="{{!anyWhere && publicCard}}" class="public" bind:tap="handlePublic">
<image class="logo" src="{{imageUrl}}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}}5/close1.png?t={{Timestamp}}"></image>
</view>
</view>
<toast
bind:cancel="handleToastCancel"
bind:ok="handleToastOk"
@ -191,5 +180,3 @@ @@ -191,5 +180,3 @@
type="{{toastType}}"
params="{{toastParams}}"
></toast>
<referralFrom model:show="{{referralFromShow}}"></referralFrom>

23
src/pages/live/index.scss

@ -94,20 +94,17 @@ @@ -94,20 +94,17 @@
background: linear-gradient(270deg, #ffd454 0%, #ffa851 100%);
border-radius: 0 24rpx 0 24rpx;
font-size: 24rpx;
color: #fff;
color: rgba(255, 255, 255, 1);
.dot {
margin-right: 8rpx;
width: 13rpx;
height: 13rpx;
border-radius: 50%;
background-color: var(--name);
background-color: #fff;
}
&.bad {
color: #484848;
background: #e6e6e6;
.dot {
display: none;
}
&.unsigned {
color: rgba(34, 34, 34, 0.5);
background: rgba(246, 246, 246, 1);
}
}
}
@ -151,9 +148,13 @@ @@ -151,9 +148,13 @@
color: #ffffff;
background: linear-gradient(94deg, #0eb66d 0%, #00d277 100%);
border-radius: 66rpx;
&.active {
color: #484848;
background: #e7e7e7;
&.signed {
color: rgba(14, 182, 109, 1);
background: rgba(205, 248, 229, 1);
}
&.ended {
color: rgba(34, 34, 34, 0.7);
background: rgba(246, 246, 246, 1);
}
.icon {
width: 24rpx;

41
src/pages/live/index.wxml

@ -3,9 +3,9 @@ @@ -3,9 +3,9 @@
<view class="list-item" wx:for="{{list}}" 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 class="status {{item.IsSignUp != 1 && 'unsigned'}}">
<view class="dot" wx:if="{{item.IsSignUp==1}}"></view>
{{item.IsSignUp==1 ? '已报名' : '未报名'}}
</view>
</view>
<view class="inner">
@ -15,37 +15,10 @@ @@ -15,37 +15,10 @@
<view class="content">
<view class="people" wx:if="{{item.SignUpPeopleNum * 1}}">{{item.SignUpPeopleNum}}人已报名</view>
</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 && userInfo.AuditStatus}}">
<block wx:if="{{userInfo.AuditStatus == 1 || userInfo.AuditStatus == 3 || userInfo.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 class="btn ended" wx:if="{{item.Status==3 || item.Status==99 || item.Status==100}}">已结束</view>
<view class="btn" wx:elif="{{item.IsSignUp==1 && item.BeginTimeValue * 1 <= dateValue * 1}}">立即参与</view>
<view class="btn signed" wx:elif="{{item.IsSignUp==1}}">已报名</view>
<view class="btn" wx:else>立即报名</view>
</view>
</view>
</view>

4
src/pages/liveDetail/index.json

@ -4,8 +4,6 @@ @@ -4,8 +4,6 @@
"navigationStyle": "custom",
"usingComponents": {
"mp-html": "mp-html",
"customPoster": "/components/customPoster/index",
"van-popup": "@vant/weapp/popup/index",
"navBar":"/components/navBar/navBar"
"navBar": "/components/navBar/navBar"
}
}

101
src/pages/liveDetail/index.scss

@ -14,10 +14,14 @@ page { @@ -14,10 +14,14 @@ page {
display: inline-block;
padding: 0 10rpx;
font-size: 32rpx;
color: #ffffff;
color: rgba(255, 255, 255, 1);
line-height: 44rpx;
background: linear-gradient(270deg, #ffd454 0%, #ffa851 100%);
border-radius: 8rpx 8rpx 8rpx 8rpx;
border-radius: 8rpx;
&.unsigned {
color: rgba(34, 34, 34, 0.5);
background: rgba(246, 246, 246, 1);
}
}
}
.page-container {
@ -25,6 +29,7 @@ page { @@ -25,6 +29,7 @@ page {
padding: 60rpx 32rpx 160rpx;
border-radius: 24rpx 24rpx 0 0;
background-color: #f7f7f7;
min-height: calc(100vh - 480rpx);
.module {
margin-bottom: 24rpx;
padding: 34rpx 32rpx;
@ -77,9 +82,52 @@ page { @@ -77,9 +82,52 @@ 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);
.countdown {
margin: 0 32rpx;
padding: 0 0 24rpx;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
gap: 12rpx;
.countdown-label {
font-size: 28rpx;
color: rgba(34, 34, 34, 0.7);
}
.countdown-boxes {
display: flex;
align-items: center;
justify-content: center;
gap: 12rpx;
.countdown-item {
display: flex;
align-items: center;
gap: 12rpx;
.countdown-num {
min-width: 56rpx;
height: 56rpx;
line-height: 56rpx;
text-align: center;
font-size: 36rpx;
color: #ffffff;
background: rgba(255, 141, 40, 1);
border-radius: 6rpx;
}
.countdown-unit {
font-size: 24rpx;
color: rgba(34, 34, 34, 0.7);
}
}
.countdown-sep {
margin: 0 8rpx;
font-size: 36rpx;
font-weight: bold;
color: #0eb66d;
}
}
}
.btn {
flex: 1;
height: 88rpx;
@ -89,9 +137,13 @@ page { @@ -89,9 +137,13 @@ page {
line-height: 88rpx;
font-size: 32rpx;
color: #ffffff;
&.active {
color: #484848;
background: #e7e7e7;
&.signed {
color: rgba(14, 182, 109, 1);
background: rgba(205, 248, 229, 1);
}
&.ended {
color: rgba(34, 34, 34, 0.7);
background: rgba(246, 246, 246, 1);
}
}
}
@ -110,42 +162,19 @@ page { @@ -110,42 +162,19 @@ page {
}
}
.fixed-share {
position: fixed;
right: 14rpx;
bottom: 264rpx;
width: 104rpx;
height: 104rpx;
}
.custom-popup {
background-color: transparent !important;
}
.p-share {
width: 622rpx;
.photo {
display: block;
width: 100%;
height: 964rpx;
border-radius: 24rpx;
}
.tip {
margin: 34rpx auto;
font-size: 28rpx;
color: #ffffff;
text-align: center;
}
}
#drug-page {
.c-title::before {
background-color: rgba(89, 86, 233, 1);
}
.btn {
background: linear-gradient(270deg, #5956e9 0%, #b384f4 100%);
&.active {
color: #484848;
background: #e7e7e7;
&.signed {
color: rgba(89, 86, 233, 1);
background: rgba(224, 220, 252, 1);
}
&.ended {
color: rgba(34, 34, 34, 0.7);
background: rgba(246, 246, 246, 1);
}
}
}

168
src/pages/liveDetail/index.ts

@ -5,15 +5,21 @@ let live_time: null | number = null @@ -5,15 +5,21 @@ let live_time: null | number = null
Page({
data: {
id: '',
shareShow: false,
detail: {} as any,
userInfo: {} as any,
posterUrl: '',
params: {},
play: false,
meeting_notice: '',
liveStatus: app.globalData.liveStatus,
countDown: {
days: '00',
hours: '00',
minutes: '00',
seconds: '00',
},
showCountDown: false,
dateValue: 0,
},
videoContext: {} as WechatMiniprogram.VideoContext,
onLoad(options) {
@ -31,6 +37,7 @@ Page({ @@ -31,6 +37,7 @@ Page({
this.setData({
dateValue: dayjs().valueOf(),
})
this.updateCountDown()
}, 1000)
},
onShow() {
@ -38,9 +45,7 @@ Page({ @@ -38,9 +45,7 @@ Page({
this.getDetail()
this.setView()
this.getTmeplateList()
app.getUserInfo(this, true, () => {
this.getPosterParams()
})
app.getUserInfo(this, true)
})
},
onReady() {
@ -57,21 +62,6 @@ Page({ @@ -57,21 +62,6 @@ Page({
})
})
},
getPosterParams() {
wx.ajax({
method: 'POST',
url: '?r=poster/prepare',
data: {
posterId: 'activity-invite',
activityId: this.data.id,
userId: this.data.userInfo.UserId,
},
}).then((res) => {
this.setData({
params: res,
})
})
},
setView() {
wx.ajax({
method: 'POST',
@ -120,6 +110,29 @@ Page({ @@ -120,6 +110,29 @@ Page({
BeginTime: dayjs(res.BeginTime).format('YYYY-MM-DD HH:mm'),
},
})
this.updateCountDown()
})
},
updateCountDown() {
const { detail, dateValue } = this.data
if (!detail.BeginTimeValue) return
const diff = detail.BeginTimeValue - dateValue
if (diff <= 0 || detail.Status == 3 || detail.Status == 99 || detail.Status == 100) {
this.setData({ showCountDown: false })
return
}
const days = Math.floor(diff / 86400000)
const hours = Math.floor((diff % 86400000) / 3600000)
const minutes = Math.floor((diff % 3600000) / 60000)
const seconds = Math.floor((diff % 60000) / 1000)
this.setData({
showCountDown: true,
countDown: {
days: String(days).padStart(2, '0'),
hours: String(hours).padStart(2, '0'),
minutes: String(minutes).padStart(2, '0'),
seconds: String(seconds).padStart(2, '0'),
},
})
},
handleReplay() {
@ -216,22 +229,6 @@ Page({ @@ -216,22 +229,6 @@ Page({
showMsg: false,
})
},
handleShare() {
this.setData({
shareShow: true,
})
this.saveShare()
},
saveShare() {
const { UserType } = this.data.userInfo
wx.ajax({
method: 'POST',
url: '?r=igg4/activity/share',
data: { Id: this.data.id, PreUserIdentity: UserType },
}).then(() => {
this.getDetail()
})
},
handleMap() {
const { LocationLAT, LocationLNG, Location } = this.data.detail
wx.openLocation({
@ -243,104 +240,19 @@ Page({ @@ -243,104 +240,19 @@ Page({
},
})
},
handleShareClose() {
this.setData({
shareShow: false,
})
},
handlePosterFinish(e) {
this.setData({
posterUrl: e.detail,
})
},
handleDownload() {
const that = this
wx.getSetting({
success(res) {
console.log(res)
if (
res.authSetting['scope.writePhotosAlbum'] != undefined &&
res.authSetting['scope.writePhotosAlbum'] == true
) {
that.saveImage()
} else if (res.authSetting['scope.writePhotosAlbum'] == undefined) {
//获取当前位置
that.saveImage()
} else {
wx.showModal({
title: '请求授权相册权限',
content: '需要保存海报到相册,请确认授权',
confirmColor: '#cf5375',
success(res) {
if (res.cancel) {
//取消授权
wx.showToast({
title: '拒绝授权',
icon: 'none',
duration: 1000,
})
} else if (res.confirm) {
//确定授权,通过wx.openSetting发起授权请求
wx.openSetting({
success(res) {
if (res.authSetting['scope.writePhotosAlbum'] == true) {
that.saveImage()
} else {
wx.showToast({
title: '授权失败',
icon: 'none',
duration: 1000,
})
}
},
})
}
},
})
}
},
})
},
saveImage() {
wx.showLoading({
title: '加载中',
})
wx.saveImageToPhotosAlbum({
filePath: this.data.posterUrl,
success: () => {
wx.hideLoading()
wx.showToast({
title: '保存成功,请到相册中查看',
})
},
fail: () => {
wx.hideLoading()
wx.showToast({
icon: 'none',
title: '保存失败,请稍后重试',
})
},
})
},
handleVideoPlay() {
this.setData({
play: true,
})
},
handleVideoPause() {
this.setData({
play: false,
saveShare() {
const { UserType } = this.data.userInfo
wx.ajax({
method: 'POST',
url: '?r=igg4/activity/share',
data: { Id: this.data.id, PreUserIdentity: UserType },
})
},
handlePlayVideo() {
this.videoContext.play()
},
onShareAppMessage() {
this.saveShare()
return {
title: `【会议报名】${this.data.detail.Name}`,
path: `/pages/liveDetail/index?id=${this.data.id}`,
// imageUrl: this.data.detail.IntroductionUrl,
}
},
onShareTimeline() {

103
src/pages/liveDetail/index.wxml

@ -5,88 +5,57 @@ @@ -5,88 +5,57 @@
>
<navBar color="" background="{{background}}" fixed title="" iconTheme="white" back bind:back="handleBack"></navBar>
<view class="title">
<view class="status">{{liveStatus[detail.Status]}}</view>
<view class="status {{detail.IsSignUp != 1 && 'unsigned'}}">{{detail.IsSignUp==1 ? '已报名' : '未报名'}}</view>
{{detail.Name}}
</view>
<view class="page-container">
<view class="module">
<view class="info">活动时间 {{detail.BeginTime}}</view>
</view>
<view class="module" style="background: #fff url('/images/{{theme === 'DRUG' ? 'icon73' : 'icon74'}}.png') no-repeat bottom 0 right 24rpx/88rpx 88rpx;">
<view
class="module"
style="background: #fff url('/images/{{theme === 'DRUG' ? 'icon73' : 'icon74'}}.png') no-repeat bottom 0 right 24rpx/88rpx 88rpx;"
>
<view class="info">主讲人:{{detail.MasterName}} {{detail.MasterTitle}}</view>
</view>
<view class="content">
<view class="content" wx:if="{{detail.DetailJson.length}}">
<view class="c-title">活动介绍</view>
<image class="c-img" mode="widthFix" src="{{item.url}}" wx:for="{{detail.DetailJson}}" wx:key="name"></image>
</view>
</view>
<view class="footer">
<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 && userInfo.AuditStatus}}">
<block wx:if="{{userInfo.AuditStatus == 1 || userInfo.AuditStatus == 3 || userInfo.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>
</block>
</block>
<block wx:else>
<view
class="btn active"
wx:if="{{detail.IsLimitUser==1 && detail.SignUpPeopleNum * 1 >= detail.LimitPeopleNum * 1}}"
>
已满额
<view class="countdown" wx:if="{{showCountDown}}">
<view class="countdown-label">开始倒计时</view>
<view class="countdown-boxes">
<view class="countdown-item">
<view class="countdown-num">{{countDown.days}}</view>
<view class="countdown-unit">天</view>
</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 && userInfo.AuditStatus}}">
<block wx:if="{{userInfo.AuditStatus == 1 || userInfo.AuditStatus == 3 || userInfo.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>
</block>
<block wx:else>
<view
class="btn active"
wx:if="{{detail.IsLimitUser==1 && detail.SignUpPeopleNum * 1 >= detail.LimitPeopleNum * 1}}"
>
已满额
<view class="countdown-item">
<view class="countdown-num">{{countDown.hours}}</view>
<view class="countdown-unit">时</view>
</view>
<view class="countdown-item">
<view class="countdown-num">{{countDown.minutes}}</view>
<view class="countdown-unit">分</view>
</view>
<view class="btn active" wx:elif="{{detail.SignUpDeadlineValue * 1 < dateValue * 1}}">报名已截止</view>
<view class="btn" wx:else bind:tap="handleSignUp">报名</view>
</block>
<view class="countdown-item">
<view class="countdown-num">{{countDown.seconds}}</view>
<view class="countdown-unit">秒</view>
</view>
</view>
</view>
<block>
<view class="btn ended" wx:if="{{detail.Status==3 || detail.Status==99 || detail.Status==100}}">已结束</view>
<view
class="btn"
wx:elif="{{detail.IsSignUp==1 && detail.BeginTimeValue * 1 <= dateValue * 1}}"
bind:tap="handleLive"
>
立即参与
</view>
<view class="btn signed" wx:elif="{{detail.IsSignUp==1}}" bind:tap="handleResult">已报名</view>
<view class="btn" wx:else bind:tap="handleSignUp">立即报名</view>
</block>
</view>
</view>

199
src/pages/liveResult/index.scss

File diff suppressed because one or more lines are too long

70
src/pages/liveResult/index.wxml

@ -1,61 +1,19 @@ @@ -1,61 +1,19 @@
<view class="page" id="{{theme === 'DRUG' && 'drug-page'}}">
<block wx:if="{{detail.AuditStatus==1}}">
<image class="badge" mode="aspectFit" src="{{imageUrl}}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}}1/live-result-success.png?t={{Timestamp}}"></image>
<view class="page" id="{{theme === 'DRUG' && 'drug-page'}}">
<view class="banner">
<image class="badge" mode="aspectFit" src="/images/icon81.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>
<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}}1/date.png?t={{Timestamp}}"></image>
{{detail.BeginTime}}
</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 class="c-title">活动开始时间</view>
<view class="date">{{detail.BeginTime}}</view>
<image class="code" src="{{codeUrl}}" show-menu-by-longpress></image>
<view class="c-tip">
关注
<text class="high">"愈见昕生"</text>
公众号
<view></view>
获取活动通知
</view>
</view>
<view class="footer">
<block wx:if="{{detail.AuditStatus==1}}">
<button wx:if="{{detail.IsFollow==1}}" open-type="share" class="btn">邀约好友参与</button>
</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 class="btn btn2" bind:tap="handleHome">回到首页</view>
</view>
<view class="btn" bind:tap="handleHome">回到首页</view>
</view>

9
src/pages/login/index.ts

@ -115,25 +115,20 @@ Page({ @@ -115,25 +115,20 @@ Page({
app.globalData.isLogin = true
app.getUserInfo(this, true, (userInfo) => {
// 1-空白用户,2-注册用户,3-疾病患者,4-用药患者
const { PatientId, AuditStatus, UserType } = userInfo
const { PatientId, UserType } = userInfo
const backPage = app.globalData.backPage
let urlKey = ''
if (UserType >= 3) {
urlKey = 'home'
} else if (!PatientId) {
urlKey = 'agreement'
} else if (AuditStatus == 1 && typeof backPage === 'string' && backPage.includes('liveResult')) {
urlKey = 'home'
} else if ([0, 2].includes(AuditStatus)) {
urlKey = 'enterInfo'
}
const navUrl = {
home: backPage || '/pages/index/index',
agreement: `/pages/enterInfo/index`,
enterInfo: '/pages/enterInfo/index',
}[urlKey]
if (['agreement', 'enterInfo'].includes(urlKey)) {
if (['enterInfo'].includes(urlKey)) {
wx.navigateTo({
url: navUrl,
})

2
src/pages/my/index.wxml

@ -62,7 +62,7 @@ @@ -62,7 +62,7 @@
</view>
</view>
<view class="options-list">
<view bind:tap="routerTo" class="row" data-url="/pages/privacyAgreement/index">
<view bind:tap="routerTo" class="row" data-url="/doc/pages/privacyAgreement/index">
<view class="col">
<image class="icon" src="{{imageUrl}}icon40.png?t={{Timestamp}}"></image>
协议相关

56
src/pages/myLive/index.wxml

@ -57,21 +57,19 @@ @@ -57,21 +57,19 @@
<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 && userInfo.AuditStatus}}">
<block wx:if="{{userInfo.AuditStatus == 1 || userInfo.AuditStatus == 3 || userInfo.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 wx:elif="{{item.IsSignUp==1}}">
<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 wx:else>
@ -126,21 +124,19 @@ @@ -126,21 +124,19 @@
<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 && userInfo.AuditStatus}}">
<block wx:if="{{userInfo.AuditStatus == 1 || userInfo.AuditStatus == 3 || userInfo.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 wx:elif="{{item.IsSignUp==1}}">
<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 wx:else>

7
src/pages/mySave/index.json

@ -1,8 +1,3 @@ @@ -1,8 +1,3 @@
{
"navigationBarTitleText": "我的收藏",
"usingComponents": {
"van-tab": "@vant/weapp/tab/index",
"van-tabs": "@vant/weapp/tabs/index",
"van-icon": "@vant/weapp/icon/index"
}
"navigationBarTitleText": "我的收藏"
}

286
src/pages/mySave/index.scss

@ -1,188 +1,54 @@ @@ -1,188 +1,54 @@
.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;
}
}
padding-bottom: 160rpx;
.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;
margin-bottom: 32rpx;
padding-bottom: 32rpx;
border-bottom: 1px solid rgba(182, 183, 186, 0.21);
&:last-of-type {
margin-bottom: 0;
padding-bottom: 0;
border-bottom: none;
}
.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: 204rpx;
height: 204rpx;
flex-shrink: 0;
border-radius: 24rpx;
margin-right: 24rpx;
.photo-img {
width: 100%;
height: 100%;
border-radius: inherit;
}
.play {
.new-icon {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 104rpx;
height: 104rpx;
left: -16rpx;
top: 122rpx;
width: 96rpx;
height: 47rpx;
}
}
.inner {
padding: 32rpx 34rpx 28rpx;
background-color: #fff;
border-radius: 0 0 24rpx 24rpx;
flex: 1;
display: flex;
flex-direction: column;
justify-content: space-between;
.title {
font-size: 32rpx;
color: #252525;
font-size: 36rpx;
color: #000000;
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;
}
line-height: 42rpx;
}
.footer {
margin-top: 28rpx;
margin-top: 10rpx;
display: flex;
justify-content: space-around;
gap: 48rpx;
.f-item {
display: flex;
align-items: center;
@ -194,102 +60,18 @@ @@ -194,102 +60,18 @@
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;
color: rgba(249, 163, 14, 1);
}
}
}
}
}
}
}
.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;
}
}
}
}
}
}
#drug-page {
.tag.active {
color: #fff;
background: linear-gradient(270deg, #5956e9 0%, #b384f4 100%);
}
}

254
src/pages/mySave/index.ts

@ -1,18 +1,14 @@ @@ -1,18 +1,14 @@
const app = getApp<IAppOption>()
const licia = require('miniprogram-licia')
Page({
data: {
active: 0,
list: [] as any,
HistoryId: '',
pagination: {
page: 1,
pages: 1,
count: 1,
count: 0,
},
picTextStatus: 0,
videoStatus: 0,
config: {} as any,
},
onLoad() {
@ -24,43 +20,13 @@ Page({ @@ -24,43 +20,13 @@ Page({
this.setData({
config: res,
})
this.getConfig()
this.getList()
})
})
},
getConfig() {
wx.ajax({
method: 'GET',
url: '?r=igg4/common/get-config',
data: {},
}).then((res) => {
this.setData({
picTextStatus: res.picTextStatus,
videoStatus: res.videoStatus,
active: res.picTextStatus == 0 ? 1 : 0,
})
this.getList()
})
},
getList() {
const { active, pagination } = this.data
if (active == 0) {
this.getInfoList()
} else if (active == 1) {
this.getVideoList()
} else if (active == 2) {
this.getQuestionList()
}
if (active == 0 && pagination.page == 1) {
app.mpBehavior({ PageName: 'PG_PATIENTMYFAVORITES_KNOWLEDGEBASE' })
}
if (active == 1 && pagination.page == 1) {
app.mpBehavior({ PageName: 'PG_PATIENTMYFAVORITES_VIDEOCLASS' })
}
if (active == 2 && pagination.page == 1) {
app.mpBehavior({ PageName: 'PG_PATIENTMYFAVORITES_HEALTHQA' })
}
this.getInfoList()
app.mpBehavior({ PageName: 'PG_PATIENTMYFAVORITES_KNOWLEDGEBASE' })
},
getInfoList(newPage = 1) {
wx.ajax({
@ -68,12 +34,10 @@ Page({ @@ -68,12 +34,10 @@ Page({
url: '?r=igg4/pic-text/collection-list',
data: {
page: newPage,
count: 10,
},
loading: true,
}).then((res) => {
res.list = res.list.map((item) => {
return item
})
}).then((res: any) => {
const list = res.page == 1 ? res.list : [...this.data.list, ...res.list]
this.setData({
list,
@ -85,131 +49,6 @@ Page({ @@ -85,131 +49,6 @@ Page({
})
})
},
getVideoList(newPage = 1) {
wx.ajax({
method: 'GET',
url: '?r=igg4/video/collection-list',
data: {
page: newPage,
},
loading: true,
}).then((res) => {
res.list = res.list.map((item) => {
return item
})
const list = res.page == 1 ? res.list : [...this.data.list, ...res.list]
this.setData({
list,
pagination: {
page: res.page,
pages: res.pages,
count: res.count,
},
})
})
},
getQuestionList(newPage = 1) {
wx.ajax({
method: 'GET',
url: '?r=igg4/health-question/collection-list',
data: {
page: newPage,
},
loading: true,
}).then((res) => {
res.list = res.list.map((item) => {
return item
})
const list = res.page == 1 ? res.list : [...this.data.list, ...res.list]
this.setData({
list,
pagination: {
page: res.page,
pages: res.pages,
count: res.count,
},
})
})
},
handleStar(e) {
const { id, index } = e.currentTarget.dataset
wx.ajax({
method: 'POST',
url: '?r=igg4/pic-text/compliment',
data: {
ContentId: id,
},
loading: true,
}).then(() => {
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
wx.ajax({
method: 'POST',
url: '?r=igg4/video/compliment',
data: {
ContentId: id,
},
loading: true,
}).then(() => {
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
list.map((item: any, i) => {
if (item.play && i != index) {
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=igg4/video/view',
data: {
ContentId: id,
},
}).then((res) => {
this.setData({
HistoryId: res.HistoryId,
})
})
},
handleVideo(e: WechatMiniprogram.CustomEvent) {
const { index } = e.currentTarget.dataset
const context = wx.createVideoContext(`video${index}`)
context.play()
},
handleVideoTime: licia.throttle(function (e: WechatMiniprogram.CustomEvent) {
wx.ajax({
method: 'GET',
url: '?r=igg4/video/watch-duration',
data: {
HistoryId: this.data.HistoryId,
WatchDuration: e.detail.currentTime,
},
}).then((res) => {
console.log('res: ', res)
})
}, 5000),
handleVideoPause(e: WechatMiniprogram.CustomEvent) {
console.log(e)
},
handleDetail(e: WechatMiniprogram.CustomEvent) {
const { id } = e.currentTarget.dataset
if (this.data.config.picTextEbookStatus == 1) {
@ -225,21 +64,12 @@ Page({ @@ -225,21 +64,12 @@ Page({
})
}
},
handleQuestionDetail(e) {
const { id } = e.currentTarget.dataset
const webviewUrl = encodeURIComponent(
`${app.globalData.url}/zdcare/#/info-detail?loginState=${app.globalData.loginState}&Id=${id}`,
)
wx.navigateTo({
url: `/pages/webview/index?url=${webviewUrl}`,
})
},
handleVideoToggleSave(e: WechatMiniprogram.CustomEvent) {
handleToggleSave(e: WechatMiniprogram.CustomEvent) {
const { id, collect, index } = e.currentTarget.dataset
if (collect == 1) {
wx.ajax({
method: 'POST',
url: '?r=igg4/video/cancel-collection',
url: '?r=igg4/pic-text/cancel-collection',
data: {
ContentId: id,
},
@ -257,7 +87,7 @@ Page({ @@ -257,7 +87,7 @@ Page({
} else {
wx.ajax({
method: 'POST',
url: '?r=igg4/video/collection',
url: '?r=igg4/pic-text/collection',
data: {
ContentId: id,
},
@ -276,64 +106,28 @@ Page({ @@ -276,64 +106,28 @@ Page({
},
onReachBottom() {
const { page, pages } = this.data.pagination
const { active } = this.data
if (pages > page) {
if (active == 0) {
this.getInfoList(page + 1)
} else {
this.getVideoList(page + 1)
}
this.getInfoList(page + 1)
}
},
tabChange(e) {
this.setData({
active: e.detail.index,
CateId: '',
Search: '',
list: [],
pagination: {
page: 1,
pages: 1,
count: 1,
},
})
this.getList()
},
onShareAppMessage(e: any) {
if (e.from === 'button') {
const { id, index, type } = e.target.dataset
const { id, index } = e.target.dataset
const { list } = this.data
const { Title, TitlePicLink, ImageUrl } = list[index]
if (type == 'info') {
wx.ajax({
method: 'POST',
url: '?r=igg4/pic-text/share',
data: { ContentId: id },
}).then(() => {
this.setData({
[`list[${index}].ShareNum`]: Number(this.data.list[index].ShareNum) + 1,
})
})
return {
title: Title,
path: `/pages/repositoryDetail/index?id=${id}`,
imageUrl: TitlePicLink,
}
} else {
wx.ajax({
method: 'POST',
url: '?r=igg4/video/share',
data: { ContentId: id },
}).then(() => {
this.setData({
[`list[${index}].ShareNum`]: Number(this.data.list[index].ShareNum) + 1,
})
const { Title, TitlePicLink } = list[index]
wx.ajax({
method: 'POST',
url: '?r=igg4/pic-text/share',
data: { ContentId: id },
}).then(() => {
this.setData({
[`list[${index}].ShareNum`]: Number(this.data.list[index].ShareNum) + 1,
})
return {
title: Title,
path: `/pages/repository/index?id=${id}&active=1&title=${Title}`,
imageUrl: ImageUrl,
}
})
return {
title: Title,
path: `/pages/repositoryDetail/index?id=${id}`,
imageUrl: TitlePicLink,
}
} else {
return {

169
src/pages/mySave/index.wxml

@ -1,119 +1,27 @@ @@ -1,119 +1,27 @@
<view class="page" id="{{theme === 'DRUG' && 'drug-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"
<view class="info-list" wx:if="{{list.length}}">
<view
class="list-item"
wx:for="{{list}}"
bind:tap="handleDetail"
data-id="{{item.Id}}"
data-index="{{index}}"
wx:key="index"
>
<van-tab title="知识库"></van-tab>
<van-tab title="视频课堂"></van-tab>
<van-tab title="健康问答"></van-tab>
</van-tabs>
</view>
<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}}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}}1/star-active.png?t={{Timestamp}}"
></image>
<image class="icon" wx:else src="{{imageUrl}}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}}1/share.png?t={{Timestamp}}"></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}}1/video-play.png?t={{Timestamp}}"
bind:tap="handleVideo"
data-index="{{index}}"
></image>
</block>
<image src="{{item.TitlePicLink}}" mode="aspectFill" class="photo-img"></image>
<image wx:if="{{item.IsNew==1}}" class="new-icon" src="{{imageUrl}}2/new-label.png?t={{Timestamp}}"></image>
</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="f-item">
<image class="icon" src="{{imageUrl}}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}}1/star-active.png?t={{Timestamp}}"
></image>
<image class="icon" wx:else src="{{imageUrl}}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"
catch:tap="handleToggleSave"
data-id="{{item.Id}}"
data-collect="{{item.IsCollect}}"
data-index="{{index}}"
@ -126,62 +34,9 @@ @@ -126,62 +34,9 @@
<image class="icon" wx:else src="{{imageUrl}}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}}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}}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}}1/star-active.png?t={{Timestamp}}"
></image>
<image class="icon" wx:else src="{{imageUrl}}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}}1/share.png?t={{Timestamp}}"></image> -->
<!-- <block wx:if="{{~~item.ShareNum}}">{{item.ShareNum}}</block> -->
<!-- </button> -->
</view>
</view>
</view>
</view>
<pagination pagination="{{pagination}}"></pagination>
</view>
<pagination pagination="{{pagination}}"></pagination>
</view>

8
src/pages/personalInformation/index.json

@ -1,11 +1,7 @@ @@ -1,11 +1,7 @@
{
"navigationBarTitleText": "治疗记录",
"navigationStyle": "custom",
"navigationBarTitleText": "个人信息",
"usingComponents": {
"navBar": "/components/navBar/navBar",
"van-icon": "@vant/weapp/icon/index",
"van-toast": "@vant/weapp/toast/index",
"van-popup": "@vant/weapp/popup/index",
"van-switch": "@vant/weapp/switch/index"
"van-toast": "@vant/weapp/toast/index"
}
}

483
src/pages/personalInformation/index.scss

@ -1,359 +1,176 @@ @@ -1,359 +1,176 @@
.page {
padding-bottom: 200rpx;
min-height: 100vh;
position: relative;
box-sizing: border-box;
background-color: #fff;
.cross {
margin-left: 40rpx;
font-size: 40rpx;
color: #000000;
}
.page-container {
width: 100%;
padding: 30rpx 38rpx;
box-sizing: border-box;
.banner-new {
padding: 38rpx 30rpx;
background-color: #fff;
padding-bottom: 180rpx;
display: flex;
flex-direction: column;
.content {
margin: 0 auto;
padding: 40rpx 0 0;
width: 654rpx;
box-sizing: border-box;
border-radius: 24rpx;
box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(0, 0, 0, 0.09);
.switch {
margin-bottom: 50rpx;
display: flex;
justify-content: center;
align-items: center;
gap: 26rpx;
.item {
flex: 1;
display: flex;
align-items: center;
background-color: #f6f8f9;
border-radius: 16rpx;
border: 1px solid #f6f8f9;
.icon {
flex-shrink: 0;
width: 148rpx;
height: 140rpx;
}
.name {
font-size: 36rpx;
color: #211d2e;
text-align: center;
}
&.active {
border-color: #0eb66d;
background: #fff;
.name {
color: #0eb66d;
}
}
}
}
.row-title {
margin-bottom: 32rpx;
font-size: 40rpx;
color: #222222;
font-weight: bold;
}
.row {
margin-top: 48rpx;
&:first-of-type {
margin-top: 0;
margin-bottom: 56rpx;
&.row2 {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 22rpx;
}
&.row-age {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24rpx;
}
.row-header {
&.row-phone {
display: flex;
align-items: center;
justify-content: space-between;
.label {
font-size: 32rpx;
color: #283031;
font-weight: bold;
gap: 20rpx;
.phone-input {
flex: 1;
}
.change-phone {
flex-shrink: 0;
font-size: 32rpx;
color: #cf5375;
color: #0eb66d;
}
}
.row-content {
padding-top: 24rpx;
.input {
padding: 24rpx 28rpx;
background-color: #f2f2f2;
border: 1px solid #ccc;
border-radius: 12rpx;
color: #283031;
line-height: 40rpx;
}
.place-input {
color: #999999;
}
.radio-btns {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 22rpx;
.btn {
padding: 24rpx;
.picker {
flex: 1;
padding: 24rpx 32rpx;
font-size: 28rpx;
color: #999999;
background: #f2f2f2;
border: 2rpx solid #cccccc;
border-radius: 24rpx;
.select {
display: flex;
justify-content: space-between;
align-items: center;
.select-content {
font-size: 32rpx;
color: #999999;
text-align: center;
line-height: 40rpx;
border-radius: 12rpx 12rpx 12rpx 12rpx;
border: 1px solid #cccccc;
&.active {
color: #e04775;
border-color: #e04775;
}
color: #222222;
}
}
.r-picker {
display: block;
.r-picker-content {
padding: 24rpx 28rpx;
background: #f2f2f2;
border-radius: 12rpx 12rpx 12rpx 12rpx;
border: 1rpx solid #cccccc;
display: flex;
align-items: center;
justify-content: space-between;
.value {
font-size: 32rpx;
color: #283031;
line-height: 40rpx;
&:empty {
&::after {
content: attr(data-place);
color: #999999;
font-size: 32rpx;
}
}
}
.triangle {
width: 48rpx;
height: 48rpx;
}
.triangle {
width: 48rpx;
height: 48rpx;
}
}
}
}
.protocol {
margin-top: 48rpx;
display: flex;
align-items: center;
justify-content: space-between;
.wrap {
line-height: 1;
.name {
font-size: 32rpx;
color: #283031;
font-weight: bold;
.input {
flex: 1;
padding: 24rpx 32rpx;
height: 40rpx;
font-size: 32rpx;
color: #222222;
background: #f6f6f6;
border-radius: 24rpx;
}
.item {
padding: 12rpx 24rpx;
opacity: 1;
border: 2rpx solid #cccccc;
font-size: 28rpx;
color: #999999;
display: flex;
align-items: center;
justify-content: center;
border-radius: 12rpx;
background: linear-gradient(90deg, #fff 0%, #f9f9f9 100%);
.icon {
width: 64rpx;
height: 64rpx;
}
.book {
margin-top: 16rpx;
font-size: 28rpx;
color: #cf5375;
&.active {
color: #0eb66d;
background: #ecfff7;
border-color: #0eb66d;
}
}
.age-item {
height: 96rpx;
white-space: nowrap;
font-size: 36rpx;
color: rgba(34, 34, 34, 0.7);
display: flex;
align-items: center;
justify-content: center;
border-radius: 12rpx;
box-sizing: border-box;
border: 1px solid #f6f6f6;
background-color: #f6f6f6;
&.active {
background-color: #ecfff7;
color: #0eb66d;
border-color: #0eb66d;
}
}
}
}
// .footer-new {
// position: fixed;
// left: 0;
// bottom: 80rpx;
// z-index: 10;
// width: 100%;
// padding: 0 30rpx;
// box-sizing: border-box;
// display: grid;
// grid-template-columns: repeat(auto-fit, minmax(200rpx, 1fr));
// gap: 20rpx;
// .btn1 {
// height: 88rpx;
// text-align: center;
// line-height: 88rpx;
// background: #dddddd;
// font-size: 34rpx;
// font-weight: bold;
// color: #283031;
// border-radius: 24rpx 24rpx 24rpx 24rpx;
// }
// .btn2 {
// height: 88rpx;
// text-align: center;
// line-height: 88rpx;
// background: #dddddd;
// font-size: 34rpx;
// font-weight: bold;
// color: #283031;
// border-radius: 24rpx 24rpx 24rpx 24rpx;
// }
// .btn3 {
// height: 88rpx;
// text-align: center;
// line-height: 88rpx;
// background: #dddddd;
// font-size: 34rpx;
// font-weight: bold;
// color: #283031;
// border-radius: 24rpx 24rpx 24rpx 24rpx;
// }
// }
.cancellation {
margin-top: 45rpx;
height: 80rpx;
text-align: center;
line-height: 80rpx;
font-size: 32rpx;
color: #fff;
background: #b8bfd1;
border-radius: 100rpx 100rpx 100rpx 100rpx;
}
}
.picker {
font-size: 28rpx;
color: #023eba;
max-width: 50vw;
}
.call {
text-align: center;
margin: 0 auto;
width: 560rpx;
height: 80rpx;
line-height: 80rpx;
background: #023eba;
border-radius: 100px 100px 100px 100px;
font-size: 34rpx;
font-family:
Source Han Sans CN-Bold,
Source Han Sans CN;
font-weight: bold;
color: #ffffff;
}
.order-shop {
position: fixed;
left: 0;
top: 0;
width: 100vw;
height: 100vh;
background-color: rgba(0, 0, 0, 0.25);
z-index: 666;
}
.order-shop-worker {
position: fixed;
display: flex;
justify-content: center;
align-items: center;
left: 0;
top: 0;
width: 100vw;
height: 100vh;
background-color: rgba(0, 0, 0, 0.25);
z-index: 3;
}
.order-shop-box {
position: fixed;
left: 0;
bottom: 0;
width: 100vw;
max-height: 80vh;
background: #ffffff;
box-shadow: 0px 2px 2px 0px rgba(0, 0, 0, 0.5);
border-radius: 32rpx 32rpx 0px 0px;
padding: 48rpx 0 60rpx;
}
.order-shop-worker-box {
width: 646rpx;
padding: 48rpx 40rpx 64rpx;
background: #ffffff;
border-radius: 32rpx;
}
.order-shop-title {
text-align: center;
font-size: 36rpx;
font-family:
PingFangSC-Medium,
PingFang SC;
font-weight: bold;
color: #222222;
line-height: 50rpx;
}
.order-search {
box-sizing: border-box;
width: 690rpx;
height: 84rpx;
line-height: 84rpx;
background: #f8f8f8;
border-radius: 42rpx;
margin: 32rpx auto;
padding-left: 74rpx;
background-position: 30rpx center;
background-repeat: no-repeat;
background-size: 36rpx;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABMCAYAAAD6BTBNAAAAAXNSR0IArs4c6QAADFpJREFUeF7dnHmQHFUdx7+/N5OQhBw7vRuRwyMWGBQEJcEQIEn3LJBjpjcgJlwhqIVFyRUxSBQoDAhBBCmQq8pSUIggCwps9+bA7PQkYQkoMRaHBIyCFBggOz2bc2N2p39Wz+6GHP36mJk9+6+per/3e7/3mXf+3u89Qh99VapVFaNd4wtwxgumsQCNhHBGEdNwZuwCYTvAO5jxUQziLaeN3rZfnrWtj8yVFku9ZBAlVPM4QZx0CBoxJgM4LFrZxABvBqiZCVaMY5kWa+Zb0XRUXrpHAVarxrEO0cUEngfgs5U2n4FNBHqsILB0a1P635XWH0ZfDwBkqk6aZzPjOgCnhDGiAjLMwGpicYedTa2ogL7QKioIkCmhmRcQcD2A40JbUGFBBtYLiJ/mrNRzFVbtqa4iAKs040QBPAjg1N4wOlQZTH9uj9GV25tSb4eSL1GoPIDqI8MUGrsE4KsAxEu0oceyMfA/IvzMdkbeiqzW0RMFlQxw7FTjmI4Y6gn4aumGuTMrPgTzJgZa3aULgdoAZwQTuUuaBIiPAeNTpZfh5qRmsDjfzs56vzw9B+cuCaBSu+ybKBQeBmFUNINoN8DNBMowIYtDxOv28uC13ZjTzQQNcU4QHFOZOAnwZAKGRCmbgRYCzbOt9Moo+YJkIwNUVGMBCHcDEEHKP0mnZgYeZW6vb82e0xo+n7fkyCnLxh4SL1zggOYTeEJYfQxqF+BLc5b+aNg8QXKRACY0YwkBPw5S2pXOzMIUhNtyVurlkHkii1VNMzUh+AYAtaEyM9wF+XV2tu6uUPIBQqEBRoHHwN8ECpfnrLN7DNyB9aqpNTWH+QEwvhQSzELb0t2eVNYXCmBXt70nREltRLQol0k9AJATQr6yIhNeGVI9+sMfOuDFIcZIhwRdkmtKLy3HiECAxQnDKTwZYszbyMI5L980+9VyDKpEXqXWmAyHngD4c376GGgXTLNy2fSqUsv1BeguVQoC64NnW14R491ztmTn7ijVkErnGz19hRLf09EA8GkBuj8We5yvtTTP/m8pNsgBqo8MS1DNuqB1HhEtzW394DtYf1l7KQb0aJ7JLw5PDM/VEyPtVw4Bq3M1bbV4am4hqj1SgIpm3g3wNb4Fu/AyqflAcUHcPz/Viiu081mAU/7dmW7IW+klUSvhCbBrb/uK//aMV9jbNtf1y5Z3IIUJxghlDFah0w8p+3YVCnz81jV170SB6AGQSdHMFwIcAxtj3HZyfxrzgio9SjVqhhA2ADhKJksMI5fV64J07Zt+EMCEZlxIwO99lLRxTEzKr0q9FqWg/iCbUJefDuqwyM/xQZhuZ/Tnw9p7AMBi63PBSP15RHR1LpO+L2wB/U1O0cybAb5JahdjrZ3Vp4a1ez+A1UnjHGb8SZbZ3WHkrfTJfbJIDlujILnO1cVrBBwtraegqfmm9NogVW76fgAVreElgCZJMjKhMLk3t2dhKlCKTEIzZhHQ6JO30bZ036VPd969AN0DICa8Kf1XGEY+4gBbSuV6K4+iGi+CpLNyR4zFZ7ZkUx8G2bMXYJCzgCBO6UmvSpChlU5PaGaKwKaP3lDOhm6ApGjGu/KjR2q2rfTpla5EX+tTNMPtccd62cGMDfmsflKQjUWACdU8noilyxIGXZa30r8KUjbQ0qs183oG3yYb80XHniNb1p672a9eRYDVmnE1A/d6C9Juh9sPr4Qnub8BTpxhfJYKcHcent51Bi7KW/rjgQATSeMZYpwtEWyyLf2M/lb5StmjaMbfAZzoqY/wazujfzcQoKIZ7mzjGatCoBtyJWyyK1XBntYT4DR5w7b0430BulFSgnbkpUJEp9mZ9Is9XZG+0l+jmXUO2DOKwT1Xzte0Hern5qJqrXESw3lJMv4xhomqMEePfQWg3HLH1JpfiDn8L5meAsWO3pqZJU2nKs2YL4DfSRRsti39iHKN7N/5WSha406Ah3kuZ4BU3tKXyepAimouBLH3EV/EjXX/BiW3Tkma/wCz52mew/St1mxa1sBAimosBuEnnvQH2fZNhtBvW8eMq/JZ/X55C0yad4F5oaT5Pp639IsGassKa7eiGW64x1kSBtfnLf12KcBqzXyAwZd7C/BvbKvu0rCGDFS5hGY+S+DZkon0FttKe/ZQV94dA+8E8bUSgE/YVt2FAxVMWLsV1XwexGd6D2P0o3w2fYe8C2vmTQDf7JmZYOYzuh7WkIEqp2jGOlk4MoOuyFtpN3jU83O9MD8A8AtJ8qD0whxYV0UzNgIY78XAAS5p9YnmooRqXEQE7/gQwsd2Ro94HWGAtUPViidox04Chkoa0Qy/mEKqURsnOuT8VVbtQjspW19Iy7d6A4zXgeaOnmocE49BGkftcHxca3am6yuVdOFJy0ZjhNMKsOchuwNWW6261QOck9R8RWs4F6CnJQK7bWv9ocBiaaRZEZqiGR8A8N6ysVhsZ1Oek8xggJpImvcR85WSurxqW7q3q6srQxdAsx7gOZ4zMWhN3kpPGwywvOqgaOYbAH/ZK42IHspl0pI1cmeOTpd+0vweMXtO1W4MXXtH7Mgda2dtGWwQu8Y/976dd5CVQ3Pt1emn/OpdzFijLR/voMOdyr0HSmBBztJ/OdgABkQpOO2Mw7Zn9ZZAgMVWqBn/lJ3WM2h93kpPHFwAFwtFnbAJhHGSer1kW7pfNNcnXbhzIpHvSNx0x6Fk6+q0NVggKklzDpjrZfUJ2oF059vb97s8s5uk4wEwqA6XFM3cALDnLSsG9nSI9iO2N30jF9Rg9hs8E5rhhn6pskxCULKlaeC3wqDWB8LTdkb3XJUcyGb/4CK1cQbIWS6lTnjT3nr4iVg/sf/FQwc1la70sao1skA73wRYEmhJLJi+3pJNuRG6gZ9XgOUrBEivTw30Y84Qsd8rbUufEUiuS+AggNVa42yG86x8cEU7CUyzm3TXBTSgvkSyYSYxuQFFknt+xMw8NZ/V3RDnUJ/nAtLPwdiplf7TMTR+0raVM+xQpfQDIUVddhRTYQMBNXJz6AnbSkdyIHsCHFXb+MW447xKwCE+hTXbu5Uzse7Utn7Ax9eEKvWZKiHia8D4io/gNtEx5NiWtTN8g4l8J5F9E5WksRjsfVrXLceux9oZeU5P3QavyB8zuX64Mnz4SjCm+OkrNfbb56ZS8YJKNviqFDXa23gu1uu7KlLhCirpankNQfDcIhl4KG/pV3T+DP/53pULN24Ul97r2h3UBe0bw5tVvqRrO0RhWUC33a8gBj2Yt9Kuays0xODbmpo5nQGDwEFX7N9njl+Qz84MPYOVj8lbgzvbgulR/wnDO29UiIEA3WKqNWM+M34Lkrh9umxhoINAS2zecjuy397dU4BkersWybcAvCDE9VypeVEghgLolqSoDdeC6M4wUNwnmQAs8AvKCaMnikzn9sx9y0G2w4iize3D4bpzaIBFiJ1HoC7EcA9OMNYx0W15K+13JyNazfaTXiyU5MRzwe5rSd6OgQOVd/YSZGShHPvKh4EYCWCxO9ea8xyHHw5xpX5fWza6j4Q5MV6aX6W/VwaxYtZOTzLNA/PFPv48r2J2CcL5LRndTGjm/SQNafkkaxDEyACLEFXzDCZ2LyRGfRDHPd16DaCMALLtAq9vbUq963t1TLXio50d4+IxPoFJqMRw341xQ9Gi2v4emM+zs3XdwaTuW19lQ4xqxN6/pua0547goeJxBso8cKLdILwDh4svFzG4jViMALH7qE+CgXHyQ+9wbZkIZvuQIZd4bD3LhlgywKLpc+pjiZYRiwjFd1tGhKtOr0ptI6Ibc5m0G98nW9uVBbE8gF0sxkxtGBcXdC8T+kkgUvEJgj+IjvjCkHvbkiFWBGB3m1KSxllwcCPIf9/Zc22w+Ezo88y4NYpLqsuekiBWFGA3mEStOYUcXgRgem88i+eeYRChQTjijrCeZMmfGBoiiO6xM+lregRgt3Fj1cZPF8i5kBnziIrP5FWyPHdG/wuDHusQe54McwAUsuWHhuiQmFbJCvnaVzPlj4cX4kM1Imju6xkMHO3vbzxInbs1fJuImrkAq53Y6kHnRViId/YawINwzKmPjcmN/LzgwnhmGkvgURBiJDF3viPtviFN2C5AHzkce6s1+/J7flFSIVtXFLEwEPsQYJSq9J2sL8Re7cJ9x6DskklJmneD+fv7aiKIn+es1KK+68Jl16t3FVQlG6cKdooPUTgkzNZMao37+/+7SsIz/Eyb1AAAAABJRU5ErkJggg==);
}
.search-input {
font-size: 28rpx;
line-height: 84rpx;
height: 84rpx;
padding-right: 30rpx;
}
.search-cell-box {
max-height: 550rpx;
}
.search-cell {
display: flex;
justify-content: space-between;
padding: 0 60rpx;
color: #aeb6cd;
}
.shop-text {
padding: 20rpx 0;
text-align: center;
line-height: 40rpx;
// border-bottom: 2rpx solid #f8f8f8;
flex: 1;
font-size: 32rpx;
font-family:
Alibaba PuHuiTi-Medium,
Alibaba PuHuiTi;
font-weight: 500;
}
.search-cell-active {
border-bottom: none;
color: #364e9e;
font-size: 32rpx;
font-family:
Alibaba PuHuiTi-Medium,
Alibaba PuHuiTi;
font-weight: 500;
color: #364e9e;
}
.fl1 {
display: flex;
justify-content: space-between;
padding: 0 30rpx;
}
.closeShop {
color: #aeb6cd;
font-size: 28rpx;
margin-left: auto;
}
.clickShop {
color: #364e9e;
font-size: 28rpx;
}
.empty-image {
margin: 0 auto;
width: 100%;
padding-top: 450rpx;
text-align: center;
background-position: center 100rpx;
background-size: 300rpx;
background-repeat: no-repeat;
background-image: url(https://m.zd.hbraas.com/zd/none.png?t={{Timestamp}});
}
.moretext {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
}
.popup {
.popup-title {
display: flex;
justify-content: space-between;
padding: 20rpx 40rpx;
font-size: 32rpx;
.clsoe {
color: #7f7f7f;
}
.sure {
color: #22c065;
}
}
.popup-picker {
.picker-col {
padding: 10rpx 30rpx;
font-size: 28rpx;
line-height: 40rpx;
.bottom-actions {
width: 100%;
padding: 0 48rpx;
box-sizing: border-box;
display: flex;
align-items: center;
.action-btn {
margin-bottom: 32rpx;
text-align: center;
height: 96rpx;
line-height: 96rpx;
border-radius: 16rpx;
font-size: 36rpx;
background: #FFFFFF;
box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(0,0,0,0.05);
color: rgba(34, 34, 34, 1);
&.danger {
color: rgba(14, 182, 109, 1);
}
}
}
}
}

254
src/pages/personalInformation/index.ts

@ -4,161 +4,26 @@ const licia = require('miniprogram-licia') @@ -4,161 +4,26 @@ const licia = require('miniprogram-licia')
Page({
data: {
isEdit: false,
area: [] as string[][],
city: [] as string[][],
userInfo: {} as any,
areaValue: '',
bron: '',
age: '',
ageStart: '1930-01-01',
ageEnd: '',
rtValue: '0',
RTList: [
{ id: 1, value: '本人' },
{ id: 2, value: '亲友' },
],
genderValue: '0',
GenderList: [
{
id: 1,
value: '男',
},
{
id: 2,
value: '女',
},
],
ageRangeValue: '0',
ageRangeList: [
{
id: 5,
value: '18岁以下',
},
{
id: 1,
value: '18岁-44岁',
},
{
id: 2,
value: '45岁-59岁',
},
{
id: 3,
value: '60岁-74岁',
},
{
id: 4,
value: '75岁以上',
},
],
taskValue: 0,
TaskList: [
{
id: 1,
value: '接受随访',
},
{
id: 2,
value: '不接受随访',
},
],
antibodyTypeRangeList: [
{
id: '1',
value: 'AchR',
},
{
id: '2',
value: 'MuSK',
},
{
id: '3',
value: 'LRP4',
},
{
id: '4',
value: 'RyR',
},
],
thyroidAbnormalRangeList: [
{
id: '1',
value: '是',
},
{
id: '2',
value: '否',
},
{ id: 5, value: '18岁以下' },
{ id: 1, value: '18岁-44岁' },
{ id: 2, value: '45岁-59岁' },
{ id: 3, value: '60岁-74岁' },
{ id: 4, value: '75岁以上' },
],
previousConvulsionRangeList: [
{
id: '1',
value: '是',
},
{
id: '2',
value: '否',
},
diagnosisTimeRangeList: [
{ id: 1, value: '6个月以内' },
{ id: 2, value: '6个月-3年' },
{ id: 3, value: '3年以上' },
],
traditionalImmunosuppressantRangeList: [
{
id: '1',
value: '他克莫司',
},
{
id: '2',
value: '硫唑嘌呤',
},
{
id: '3',
value: '吗替麦考酚酯',
},
{
id: '4',
value: '其它',
},
],
medicalInsuranceTypeRangeList: [
{
id: '1',
value: '城市职工',
},
{
id: '2',
value: '城市居民',
},
{
id: '3',
value: '新农合',
},
],
DiagnosisTime: '',
selectDiagnoseTypeIndex: '0',
diagnoseTypeShow: false,
diagnoseTypeValue: '0',
DTList: app.globalData.DiagnoseType.map((item) => {
return {
id: item.id,
value: item.name,
}
}),
},
onShow() {
const SystemInfo = app.globalSystemInfo
if (SystemInfo) {
const { bottom } = SystemInfo.capsulePosition
this.setData({
bottom,
})
}
const ageEnd = licia.dateFormat(new Date(), 'yyyy-mm-dd')
this.setData({
@ -174,11 +39,6 @@ Page({ @@ -174,11 +39,6 @@ Page({
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.handleTapRT();
},
formatBorn(Birth) {
let bron = ''
@ -213,14 +73,6 @@ Page({ @@ -213,14 +73,6 @@ Page({
this.formatBorn(Birth)
this.updateUserInfo()
},
handleChaneDiagnosisTime(e, update = true) {
const DiagnosisTime = e.detail.value
this.setData({
DiagnosisTime: dayjs(DiagnosisTime).format('YYYY年MM月'),
'userInfo.DiagnosisTime': DiagnosisTime,
})
this.updateUserInfo(update)
},
handleInput(e) {
const { key } = e.currentTarget.dataset
@ -228,55 +80,7 @@ Page({ @@ -228,55 +80,7 @@ Page({
[`userInfo.${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
this.setData({
rtValue: value,
'userInfo.RelationType': id,
})
this.updateUserInfo(update)
},
handleChangeGender(e, update = true) {
const value = e.detail.value
const id = this.data.GenderList.filter((_item, index) => index == value)[0]?.id
this.setData({
genderValue: value,
'userInfo.Gender': id,
})
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
this.setData({
taskValue: value,
'userInfo.PatientCanFollowUp': id,
})
this.updateUserInfo(update)
},
handleChangeAgeRange(e, update = true) {
const value = e.detail.value
const id = this.data.ageRangeList.filter((_item, index) => index == value)[0]?.id
this.setData({
ageRangeValue: value,
'userInfo.AgeRange': id,
})
this.updateUserInfo(update)
},
handleDiagnoseTypeSave(update = true) {
const rangeIndex = this.data.selectDiagnoseTypeIndex
const id = this.data.DTList.filter((_item, index) => index == rangeIndex)[0]?.id
this.setData({
diagnoseTypeValue: rangeIndex,
'userInfo.DiagnoseType': id,
})
if (update) {
this.handleDiagnoseTypeShow()
}
this.updateUserInfo(update)
},
handleRadio(e) {
const { id, key } = e.currentTarget.dataset
this.setData({
@ -284,27 +88,10 @@ Page({ @@ -284,27 +88,10 @@ Page({
})
this.updateUserInfo(true)
},
handleDiagnoseTypeShow() {
this.setData({
diagnoseTypeShow: !this.data.diagnoseTypeShow,
})
},
handleChangeDiagnoseType(e) {
const value = e.detail.value[0]
this.setData({
selectDiagnoseTypeIndex: value,
})
},
handleRedioSelect(e) {
const { key, id } = e.currentTarget.dataset
this.setData({
[`userInfo.${key}`]: id,
})
this.updateUserInfo()
},
updateUserInfo(update = true) {
if (!update) return
const { PatientName, RelationType, Gender, Birth, DiagnosisTime, DiagnoseType, ...userInfo } = this.data.userInfo
const { PatientName, RelationType, Gender, AgeRange, DiagnosisTimeRange, Birth, DiagnosisTime } = this.data.userInfo
wx.ajax({
method: 'POST',
url: '?r=igg4/account/update-info',
@ -312,17 +99,10 @@ Page({ @@ -312,17 +99,10 @@ Page({
name: PatientName,
relationType: RelationType,
gender: Gender,
ageRange: AgeRange,
diagnosisTimeRange: DiagnosisTimeRange,
birth: Birth,
diagnosisTime: DiagnosisTime,
diagnoseType: DiagnoseType,
ageRange: userInfo.AgeRange,
patientCanFollowUp: userInfo.PatientCanFollowUp,
antibodyType: userInfo.AntibodyType,
thyroidAbnormal: userInfo.ThyroidAbnormal,
previousConvulsion: userInfo.PreviousConvulsion,
traditionalImmunosuppressant: userInfo.TraditionalImmunosuppressant,
medicalInsuranceType: userInfo.MedicalInsuranceType,
...userInfo,
},
})
.then((_res) => {
@ -370,10 +150,6 @@ Page({ @@ -370,10 +150,6 @@ Page({
url,
})
},
redirectTo(e) {
const { url } = e.currentTarget.dataset
wx.redirectTo({
url,
})
},
})
export {}

390
src/pages/personalInformation/index.wxml

@ -1,285 +1,135 @@ @@ -1,285 +1,135 @@
<view
class="page"
id="{{theme === 'DRUG' && 'drug-page'}}"
style="background: url({{imageUrl}}/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" id="{{theme === 'DRUG' && 'drug-page'}}">
<view class="page-container">
<view class="banner-new">
<view class="row">
<view class="row-header">
<view class="label">姓名</view>
</view>
<view class="row-content">
<input
class="input"
placeholder-class="place-input"
placeholder="请输入真实姓名"
value="{{userInfo.PatientName}}"
maxlength="{{8}}"
bindinput="handleInput"
data-key="PatientName"
bindblur="updateUserInfo"
/>
</view>
</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="{{userInfo.Telephone}}" />
<view class="content">
<view class="switch">
<view
class="item {{userInfo.RelationType == 1 && 'active'}}"
bind:tap="handleRadio"
data-key="RelationType"
data-id="1"
>
<image class="icon" src="{{imageUrl}}icon31.png?t={{Timestamp}}"></image>
<view class="name">本人</view>
</view>
<view
class="item {{userInfo.RelationType == 2 && 'active'}}"
bind:tap="handleRadio"
data-key="RelationType"
data-id="2"
>
<image class="icon" style="margin-right: 10rpx" src="{{imageUrl}}icon32.png?t={{Timestamp}}"></image>
<view class="name">亲友</view>
</view>
</view>
<view class="row">
<view class="row-header">
<view class="label">身份</view>
</view>
<view class="row-content">
<view class="radio-btns">
<view
class="btn {{userInfo.RelationType==item.id && 'active'}}"
wx:for="{{RTList}}"
wx:key="index"
bind:tap="handleRedioSelect"
data-key="RelationType"
data-id="{{item.id}}"
>
{{item.value}}
</view>
</view>
<view class="row-title">患者性别</view>
<view class="row row2">
<view class="item {{userInfo.Gender == 2 && 'active'}}" bind:tap="handleRadio" data-key="Gender" data-id="2">
<image
class="icon"
src="{{imageUrl}}1/woman{{userInfo.Gender == 2 ? '-active' : ''}}.png?t={{Timestamp}}"
></image>
</view>
<view class="item {{userInfo.Gender == 1 && 'active'}}" bind:tap="handleRadio" data-key="Gender" data-id="1">
<image
class="icon"
src="{{imageUrl}}1/man{{userInfo.Gender == 1 ? '-active' : ''}}.png?t={{Timestamp}}"
></image>
</view>
</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="{{userInfo.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}}/3/triangle-down.png?t={{Timestamp}}"></image>
</view>
</picker>
<view class="row-title">患者年龄</view>
<view class="row row-age">
<view
class="age-item {{userInfo.AgeRange == 5 && 'active'}}"
data-key="AgeRange"
data-id="5"
bind:tap="handleRadio"
>
18岁以下
</view>
<view
class="age-item {{userInfo.AgeRange == 1 && 'active'}}"
data-key="AgeRange"
data-id="1"
bind:tap="handleRadio"
>
18岁-44岁
</view>
<view
class="age-item {{userInfo.AgeRange == 2 && 'active'}}"
data-key="AgeRange"
data-id="2"
bind:tap="handleRadio"
>
45岁-59岁
</view>
<view
class="age-item {{userInfo.AgeRange == 3 && 'active'}}"
data-key="AgeRange"
data-id="3"
bind:tap="handleRadio"
>
60岁-74岁
</view>
<view
class="age-item {{userInfo.AgeRange == 4 && 'active'}}"
data-key="AgeRange"
data-id="4"
bind:tap="handleRadio"
>
75岁以上
</view>
</view>
<view class="row">
<view class="row-header">
<view class="label">年龄范围</view>
</view>
<view class="row-content">
<view class="radio-btns">
<view
class="btn {{userInfo.AgeRange==item.id && 'active'}}"
wx:for="{{ageRangeList}}"
wx:key="index"
bind:tap="handleRedioSelect"
data-key="AgeRange"
data-id="{{item.id}}"
>
{{item.value}}
</view>
</view>
<view class="row-title">从首次确诊IgG4相关性疾病,到现在多久了</view>
<view class="row row-age">
<view
class="age-item {{userInfo.DiagnosisTimeRange == 1 && 'active'}}"
data-key="DiagnosisTimeRange"
data-id="1"
bind:tap="handleRadio"
>
6个月以内
</view>
<view
class="age-item {{userInfo.DiagnosisTimeRange == 2 && 'active'}}"
data-key="DiagnosisTimeRange"
data-id="2"
bind:tap="handleRadio"
>
6个月-3年
</view>
<view
class="age-item {{userInfo.DiagnosisTimeRange == 3 && 'active'}}"
data-key="DiagnosisTimeRange"
data-id="3"
bind:tap="handleRadio"
>
3年以上
</view>
</view>
<view class="row-title">真实姓名</view>
<view class="row">
<view class="row-header">
<view class="label">性别</view>
</view>
<view class="row-content">
<view class="radio-btns">
<view
class="btn {{ userInfo.Gender === item.id && 'active'}}"
wx:for="{{GenderList}}"
wx:key="index"
bind:tap="handleRedioSelect"
data-key="Gender"
data-id="{{item.id}}"
>
{{item.value}}
</view>
</view>
</view>
<input
class="input"
placeholder-style="color:rgba(34,34,34,0.3)"
placeholder="输入真实姓名"
value="{{userInfo.PatientName}}"
maxlength="{{8}}"
bindinput="handleInput"
data-key="PatientName"
bindblur="updateUserInfo"
/>
</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}}/3/triangle-down.png?t={{Timestamp}}"></image>
</view>
</picker>
</view>
<view class="row-title">手机号</view>
<view class="row row-phone">
<input class="input phone-input" disabled value="{{userInfo.Telephone}}" />
<view class="change-phone" bind:tap="handleChangeTel">修改</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="{{antibodyTypeRangeList}}"
wx:key="index"
class="btn {{userInfo.AntibodyType + '' === item.id && 'active'}}"
data-key="AntibodyType"
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="{{thyroidAbnormalRangeList}}"
wx:key="index"
class="btn {{userInfo.ThyroidAbnormal + '' === item.id && 'active'}}"
data-key="ThyroidAbnormal"
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="{{previousConvulsionRangeList}}"
wx:key="index"
class="btn {{userInfo.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 {{userInfo.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 {{userInfo.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="/pages/taskAgreement/index?page=/pages/personalInformation/index" -->
<!-- > -->
<!-- 《电话随访知情同意书》 -->
<!-- </view> -->
<!-- </view> -->
<!-- <van-switch -->
<!-- checked="{{userInfo.PatientCanFollowUp==1}}" -->
<!-- active-color="#CF5375" -->
<!-- size="24px" -->
<!-- bind:change="handleChangeTask" -->
<!-- ></van-switch> -->
<!-- </view> -->
</view>
<!-- <view class="footer-new"> -->
<!-- <view class="btn1" wx:if="{{userInfo.IsRootUser==1}}" bind:tap="handleLogout">注销账号</view> -->
<!-- <view class="btn2" bind:tap="routerTo" data-url="/doctor/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="/doctor/pages/d_login/index?back=1">切换医生端</view>
<view wx:if="{{userInfo.IsRootUser==1}}" class="cancellation" bind:tap="handleLogout">注销</view>
<view class="bottom-actions">
<view class="action-btn danger" bind:tap="routerTo" data-url="/doctor/pages/d_login/index?back=1">切换医生端</view>
<view wx:if="{{userInfo.IsRootUser==1}}" class="action-btn danger" bind:tap="handleLogout">注销</view>
</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="{{[selectDiagnoseTypeIndex]}}"
bindchange="handleChangeDiagnoseType"
bindpickstart="handelUpdateDiagnoseType"
>
<picker-view-column>
<view class="picker-col" wx:for="{{DTList}}">{{item.value}}</view>
</picker-view-column>
</picker-view>
</van-popup>

10
src/pages/privacyAgreement/index.json

@ -1,10 +0,0 @@ @@ -1,10 +0,0 @@
{
"navigationBarTitleText": "",
"navigationStyle": "custom",
"disableScroll": true,
"usingComponents": {
"mp-html": "mp-html",
"loginNavbar": "/components/loginNavbar/index",
"navBar": "/components/navBar/navBar"
}
}

74
src/pages/privacyAgreement/index.scss

@ -1,74 +0,0 @@ @@ -1,74 +0,0 @@
.page {
position: relative;
box-sizing: border-box;
background-color: #fff;
height: 100vh;
overflow: hidden;
.bg {
width: 100%;
}
.page-container {
position: absolute;
width: 100%;
top: 0;
left: 0;
display: flex;
flex-direction: column;
height: 100vh;
padding-bottom: 80rpx;
box-sizing: border-box;
.navbar {
flex-shrink: 0;
}
.content {
position: relative;
flex: 1;
margin: 80rpx auto 0;
overflow-y: auto;
overflow-x: hidden;
padding: 40rpx 48rpx;
width: 654rpx;
font-size: 28rpx;
color: #666666;
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;
.mask {
position: sticky;
bottom: -40rpx;
left: 0;
width: 100%;
height: 250rpx;
background: linear-gradient(rgba(255, 255, 255, 0.3), #fff);
}
}
.footer {
flex-shrink: 0;
margin: 81rpx 48rpx 0;
box-sizing: border-box;
display: flex;
> view:not(:last-of-type),
> image {
margin-right: 30rpx;
}
.btn {
flex: 1;
text-align: center;
height: 80rpx;
line-height: 80rpx;
text-align: center;
border: 2rpx solid #e04775;
border-radius: 24rpx;
font-size: 34rpx;
font-weight: bold;
color: #e04775;
}
.sure {
background-color: #e04775;
color: #fff;
}
}
}
}

28
src/pages/privacyAgreement/index.ts

File diff suppressed because one or more lines are too long

17
src/pages/privacyAgreement/index.wxml

@ -1,17 +0,0 @@ @@ -1,17 +0,0 @@
<view class="page" id="{{theme === 'DRUG' && 'drug-page'}}">
<image class="bg" mode="widthFix" src="{{imageUrl}}1/login-bg.png?t={{Timestamp}}"></image>
<view class="page-container">
<navBar wx:if="{{pagePath != '/pages/enterInfo/index'}}" background="{{background}}" title="隐私协议"></navBar>
<view class="content">
<mp-html class="mp-html" container-style="overflow: visible" content="{{Content}}"></mp-html>
<!-- <view class="mask"></view> -->
</view>
<view class="footer" wx:if="{{pagePath == '/pages/enterInfo/index' || pagePath == '/pages/familyScan/index'}}">
<view bind:tap="handleBack" class="btn">不同意</view>
<view bind:tap="handleSure" class="btn sure">同意</view>
</view>
<view class="footer" wx:else>
<view bind:tap="handleSure" class="btn sure" data-replace="1">关闭</view>
</view>
</view>
</view>

56
src/pages/repository/index.scss

@ -70,12 +70,6 @@ @@ -70,12 +70,6 @@
}
}
}
.slogan {
display: block;
margin: 24rpx auto 0;
width: 686rpx;
height: 56rpx;
}
}
.swiper {
margin: 32rpx 30rpx 0;
@ -92,7 +86,7 @@ @@ -92,7 +86,7 @@
.info-list {
margin: 32rpx 30rpx;
padding: 24rpx;
padding: 24rpx 0;
border-radius: 24rpx;
.list-item {
display: flex;
@ -145,7 +139,7 @@ @@ -145,7 +139,7 @@
height: 32rpx;
}
&.active {
color: #e04775;
color: rgba(249, 163, 14, 1);
}
}
.share {
@ -161,9 +155,9 @@ @@ -161,9 +155,9 @@
}
}
}
.video-list {
padding: 32rpx 30rpx;
min-height: 100vh;
background-color: #f6f6f6;
.list-item {
margin-bottom: 20rpx;
@ -178,11 +172,6 @@ @@ -178,11 +172,6 @@
width: 100%;
height: 344rpx;
overflow: hidden;
.video {
border-radius: inherit;
width: 100%;
height: 100%;
}
.poster {
position: absolute;
top: 0;
@ -201,33 +190,6 @@ @@ -201,33 +190,6 @@
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;
@ -243,14 +205,8 @@ @@ -243,14 +205,8 @@
width: 36rpx;
height: 36rpx;
}
}
.share {
padding: 0;
background-color: transparent;
margin: 0;
&::after {
border: none;
outline: none;
&.active {
color: rgba(249, 163, 14, 1);
}
}
}
@ -262,6 +218,6 @@ @@ -262,6 +218,6 @@
#drug-page {
.tag.active {
color: #fff;
background: linear-gradient( 270deg, #5956E9 0%, #B384F4 100%);
background: linear-gradient(270deg, #5956e9 0%, #b384f4 100%);
}
}

231
src/pages/repository/index.ts

File diff suppressed because one or more lines are too long

62
src/pages/repository/index.wxml

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
<view class="page" id="{{theme === 'DRUG' && 'drug-page'}}">
<van-tabs
wx:if="{{picTextStatus==1 && videoStatus==1}}"
class="navbar"
active="{{ active }}"
bind:change="tabChange"
@ -27,35 +26,21 @@ @@ -27,35 +26,21 @@
/>
<van-icon class="clear extend-via-pseudo-elem" wx:if="{{Search}}" name="clear" bind:tap="handleClear" />
</view>
<view class="sticky">
<view class="tags" wx:if="{{active==0}}">
<view class="sticky" wx:if="{{active==0}}">
<view class="tags">
<view class="scroll">
<view class="tag {{!CateId &&'active'}}" bind:tap="handleCate" data-id="">全部</view>
<block wx:if="{{active==0}}">
<view
class="tag {{CateId == item.CateId &&'active'}}"
wx:for="{{infoCateList}}"
bind:tap="handleCate"
data-id="{{item.CateId}}"
wx:key="index"
>
{{item.CateName}}
</view>
</block>
<block wx:if="{{active==1}}">
<view
class="tag {{CateId == item.CateId &&'active'}}"
wx:for="{{videoCateList}}"
bind:tap="handleCate"
data-id="{{item.CateId}}"
wx:key="index"
>
{{item.CateName}}
</view>
</block>
<view
class="tag {{CateId == item.CateId &&'active'}}"
wx:for="{{infoCateList}}"
bind:tap="handleCate"
data-id="{{item.CateId}}"
wx:key="index"
>
{{item.CateName}}
</view>
</view>
</view>
<image wx:if="{{active==1}}" class="slogan" src="{{imageUrl}}title3.png?t={{Timestamp}}"></image>
</view>
<swiper wx:if="{{banner.length && active==0}}" class="swiper" autoplay interval="{{3000}}">
<swiper-item
@ -79,7 +64,6 @@ @@ -79,7 +64,6 @@
>
<view class="photo">
<image src="{{item.TitlePicLink}}" mode="aspectFill" class="photo-img"></image>
<image wx:if="{{item.IsNew==1}}" class="new-icon" src="{{imageUrl}}2/new-label.png?t={{Timestamp}}"></image>
</view>
<view class="inner">
<view class="title">{{item.Title}}</view>
@ -89,30 +73,29 @@ @@ -89,30 +73,29 @@
<block wx:if="{{~~item.OpenNum + ~~item.BasicNum}}">{{~~item.OpenNum + ~~item.BasicNum}}</block>
</view>
<view
class="f-item {{item.IsCompliment==1 && 'active'}}"
catch:tap="handleStar"
class="f-item {{item.IsCollect == 1 && 'active'}}"
catch:tap="handleToggleSave"
data-id="{{item.Id}}"
data-collect="{{item.IsCollect}}"
data-index="{{index}}"
>
<image
class="icon"
wx:if="{{item.IsCompliment==1}}"
src="{{imageUrl}}1/star-active.png?t={{Timestamp}}"
wx:if="{{item.IsCollect == 1}}"
src="{{imageUrl}}1/save-active-plan.png?t={{Timestamp}}"
></image>
<image class="icon" wx:else src="{{imageUrl}}1/star.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.ComplimentNum}}">{{item.ComplimentNum}}</block>
<image class="icon" wx:else src="{{imageUrl}}1/save.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.CollectionPeopleNum}}">{{item.CollectionPeopleNum}}</block>
</view>
</view>
</view>
</view>
<pagination pagination="{{pagination}}"></pagination>
</view>
<view class="video-list" wx:elif="{{active==1}}">
<view class="list-item" wx:for="{{list}}" wx:key="{{item.Id}}">
<view class="video-list" wx:if="{{active==1 && list.length}}">
<view class="list-item" wx:for="{{list}}" bind:tap="handleDetail" data-id="{{item.Id}}" data-index="{{index}}" wx:key="index">
<view class="photo">
<block wx:if="{{!item.play}}">
<image class="poster" mode="widthFix" src="{{item.ImageUrl}}"></image>
</block>
<image class="poster" mode="widthFix" src="{{item.TitlePicLink}}"></image>
</view>
<view class="inner">
<view class="title">{{item.Title}}</view>
@ -121,10 +104,9 @@ @@ -121,10 +104,9 @@
<image class="icon" src="{{imageUrl}}1/view.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.OpenNum + ~~item.BasicNum}}">{{~~item.OpenNum + ~~item.BasicNum}}</block>
</view>
<view
class="f-item {{item.IsCollect == 1 && 'active'}}"
catch:tap="handleVideoToggleSave"
catch:tap="handleToggleSave"
data-id="{{item.Id}}"
data-collect="{{item.IsCollect}}"
data-index="{{index}}"

56
src/pages/repositoryDetail/index.scss

@ -1,12 +1,10 @@ @@ -1,12 +1,10 @@
.page {
.page-container {
box-sizing: border-box;
margin-top: -20rpx;
padding: 40rpx 30rpx 200rpx;
padding: 0 30rpx 200rpx;
.banner {
.title {
margin-top: 34rpx;
font-size: 44rpx;
color: #484848;
font-weight: bold;
@ -28,20 +26,6 @@ @@ -28,20 +26,6 @@
}
}
}
.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 {
@ -83,8 +67,10 @@ @@ -83,8 +67,10 @@
}
.inner {
flex: 1;
padding-bottom: 20rpx;
border-bottom: 1px solid rgba(182, 183, 186, 0.21);
display: flex;
flex-direction: column;
justify-content: space-between;
.title {
font-size: 28rpx;
color: #252525;
@ -96,22 +82,6 @@ @@ -96,22 +82,6 @@
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;
@ -126,9 +96,12 @@ @@ -126,9 +96,12 @@
width: 32rpx;
height: 32rpx;
}
&.active {
color: rgba(249, 163, 14, 1);
}
&:not(:last-of-type)::after {
margin: 18rpx;
content: "";
content: '';
width: 2rpx;
height: 20rpx;
background-color: #f3f3f4;
@ -188,7 +161,7 @@ @@ -188,7 +161,7 @@
bottom: -12rpx;
left: 50%;
transform: translateX(-50%);
content: "";
content: '';
width: 0;
height: 0;
border-style: solid;
@ -198,18 +171,23 @@ @@ -198,18 +171,23 @@
}
.f-item {
display: flex;
flex-direction: column;
align-items: center;
font-size: 30rpx;
color: #e04775;
color: rgba(34, 34, 34, 0.7);
margin: 0;
padding: 0;
background: transparent;
border: none;
border-radius: 0;
line-height: 1;
text-align: center;
&::after {
display: none;
outline: none;
border: none;
}
.icon {
margin-right: 6rpx;
width: 44rpx;
height: 44rpx;
}
@ -218,7 +196,7 @@ @@ -218,7 +196,7 @@
display: none;
}
&.active {
color: #e04775;
color: rgba(249, 163, 14, 1);
.icon {
display: none;
}

23
src/pages/repositoryDetail/index.ts

@ -143,6 +143,29 @@ Page({ @@ -143,6 +143,29 @@ Page({
})
this.getDetail(true)
},
handleRecommendSave(e) {
const { id, collect, index } = e.currentTarget.dataset
const url = collect == 1 ? '?r=igg4/pic-text/cancel-collection' : '?r=igg4/pic-text/collection'
wx.ajax({
method: 'POST',
url,
data: {
ContentId: id,
},
loading: true,
}).then(() => {
const key = `detail.Recommends[${index}]`
this.setData({
[`${key}.IsCollect`]: collect == 1 ? 0 : 1,
[`${key}.CollectionPeopleNum`]:
Number(this.data.detail.Recommends[index].CollectionPeopleNum) + (collect == 1 ? -1 : 1),
})
wx.showToast({
title: collect == 1 ? '取消收藏' : '收藏成功',
icon: 'none',
})
})
},
handleStar() {
app.mpBehavior({ PageName: 'BTN_PATIENTKNOWLEDGEDETAILSLIKE' })
this.setData({

22
src/pages/repositoryDetail/index.wxml

@ -11,9 +11,6 @@ @@ -11,9 +11,6 @@
{{~~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}}">
@ -29,22 +26,25 @@ @@ -29,22 +26,25 @@
<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}}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'}}">
<view
class="f-item {{item.IsCollect == 1 && 'active'}}"
catch:tap="handleRecommendSave"
data-id="{{item.Id}}"
data-collect="{{item.IsCollect}}"
data-index="{{index}}"
>
<image
class="icon"
wx:if="{{item.IsCompliment==1}}"
src="{{imageUrl}}1/star-active.png?t={{Timestamp}}"
wx:if="{{item.IsCollect == 1}}"
src="{{imageUrl}}1/save-active-plan.png?t={{Timestamp}}"
></image>
<image class="icon" wx:else src="{{imageUrl}}1/star.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.ComplimentNum}}">{{item.ComplimentNum}}</block>
<image class="icon" wx:else src="{{imageUrl}}1/save.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.CollectionPeopleNum}}">{{item.CollectionPeopleNum}}</block>
</view>
</view>
</view>

9
src/pages/repositoryVideoDetail/index.json

@ -1,9 +0,0 @@ @@ -1,9 +0,0 @@
{
"navigationStyle": "custom",
"usingComponents": {
"mp-video-swiper": "@miniprogram-component-plus/video-swiper",
"navbar": "/components/navBar/navBar",
"van-slider": "@vant/weapp/slider/index",
"star": "/components/star/index"
}
}

106
src/pages/repositoryVideoDetail/index.scss

@ -1,106 +0,0 @@ @@ -1,106 +0,0 @@
.page {
background-color: #000;
.swiper {
width: 100vw;
height: 100vh;
.swiper-item {
position: relative;
width: 100vw;
height: 100vh;
.video {
width: 100%;
height: 100%;
}
.play {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 90rpx;
height: 90rpx;
}
.swiper-item-footer {
padding: 80rpx 30rpx calc(34rpx + env(safe-area-inset-bottom));
width: 100%;
position: absolute;
bottom: 0;
left: 0;
box-sizing: border-box;
background: linear-gradient(to top, rgba(20, 20, 20, 0.88) 0%, rgba(20, 20, 20, 0) 100%);
.title {
font-size: 32rpx;
color: rgba(255, 255, 255, 1);
}
.progress {
margin-top: 24rpx;
.slider-btn {
width: 200vw;
height: 80rpx;
}
}
.container {
margin-top: 24rpx;
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
.user {
display: flex;
align-items: center;
.avatar {
width: 76rpx;
height: 76rpx;
border-radius: 50%;
}
.name {
margin-left: 16rpx;
font-size: 28rpx;
color: rgba(255, 255, 255, 1);
}
}
.options {
padding-right: 26rpx;
display: flex;
justify-content: space-around;
gap: 20rpx;
.o-item {
padding: 0 10rpx;
font-size: 22rpx;
color: #b6b7ba;
line-height: 1;
text-align: center;
.icon {
margin: 0 auto 10rpx;
display: block;
width: 36rpx;
height: 36rpx;
}
}
.share {
margin: 0;
padding: 0;
background-color: transparent;
border-radius: 0;
&::after {
border: none;
outline: none;
}
}
}
}
}
}
}
}
.animate {
position: fixed;
z-index: 10000000;
right: 1000000px;
bottom: calc(env(safe-area-inset-bottom) + 110rpx);
width: 200rpx;
height: 400rpx;
&.active {
right: -20rpx;
}
}

235
src/pages/repositoryVideoDetail/index.ts

@ -1,235 +0,0 @@ @@ -1,235 +0,0 @@
const licia = require('miniprogram-licia')
const app = getApp<IAppOption>()
// 组件说明文档 https://github.com/wechat-miniprogram/miniprogram-component-plus/blob/master/docs/video-swiper.md
Page({
data: {
id: '',
activeId: '',
LikeTimes: 0,
current: 0,
videoList: [] as any,
beforeLoading: false,
beforeEnd: false,
afterLoading: false,
afterEnd: false,
starShow: false,
},
onLoad(options) {
this.setData({
id: options.id,
activeId: options.id,
})
app.waitLogin({ type: 1 }).then(() => {
this.getList()
})
},
getDetail() {
wx.ajax({
method: 'GET',
url: '?r=wtx/knowledge/detail',
data: {
Id: this.data.id,
},
}).then(async (res) => {
this.setData({
videoList: [res],
afterLoading: true,
beforeLoading: true,
})
this.playCurrentVideo()
await this.getList('after')
await this.getList('before')
})
},
getList() {
const { id } = this.data
return wx
.ajax({
method: 'GET',
url: '?r=igg4/video/list',
data: {},
})
.then((res) => {
const { videoList, current } = this.data
const newVideoList = [...videoList, ...res.list]
this.setData({
videoList: newVideoList,
afterLoading: false,
afterEnd: res.length === 0,
})
this.playCurrentVideo()
})
},
handleChange(e: any) {
const { beforeLoading, afterLoading, beforeEnd, afterEnd, videoList } = this.data
const { current } = e.detail
this.setData({
current,
starShow: false,
})
if (current === 0 && !beforeLoading && beforeEnd) {
this.setData({
beforeLoading: true,
})
this.getList('before')
}
if (current === videoList.length - 1 && !afterLoading && afterEnd) {
this.setData({
afterLoading: true,
})
this.getList('after')
}
this.playCurrentVideo()
},
playCurrentVideo() {
const { current, videoList } = this.data
videoList.forEach((item: any, index: number) => {
if (!item.ctx) {
item.ctx = wx.createVideoContext(`video-${item.Id}`)
}
item.drag = false
if (index === current) {
item.ctx.play()
} else {
item.ctx.pause()
}
})
},
handlePlay(e: any) {
const { index } = e.currentTarget.dataset
const key = `videoList[${index}].play`
this.setData({
[key]: true,
})
},
handlePause(e: any) {
const { index } = e.currentTarget.dataset
const key = `videoList[${index}].play`
this.setData({
[key]: false,
})
},
handleTimeUpdate(e: any) {
const { index } = e.currentTarget.dataset
const { videoList } = this.data
if (videoList[index].drag) return
const { currentTime, duration } = e.detail
const progress = (currentTime / duration) * 100
const progressKey = `videoList[${index}].progress`
const durationKey = `videoList[${index}].duration`
this.setData({
[progressKey]: progress,
[durationKey]: duration,
})
},
handleTogglePlay(e) {
const { index } = e.currentTarget.dataset
const { videoList } = this.data
if (videoList[index].play) {
videoList[index].ctx.pause()
} else {
videoList[index].ctx.play()
}
},
handleDragStart(e: any) {
const { index } = e.currentTarget.dataset
const key = `videoList[${index}].drag`
this.setData({
[key]: true,
})
},
handleDragEnd(e: any) {
const { index } = e.currentTarget.dataset
const { videoList } = this.data
const duration = videoList[index].duration
const drapProgress = e.detail
const currentTime = (drapProgress / 100) * duration
videoList[index].ctx.seek(currentTime)
const dragKey = `videoList[${index}].drag`
this.setData({
[dragKey]: false,
})
},
_timer: null as any,
handleVideoStar(e: WechatMiniprogram.CustomEvent) {
const { id, index } = e.currentTarget.dataset
wx.ajax({
method: 'POST',
url: '?r=igg4/video/compliment',
data: {
ContentId: id,
},
}).then(() => {
this.setData({
[`videoList[${index}].ComplimentNum`]: Number(this.data.videoList[index].ComplimentNum) + 1,
[`videoList[${index}].IsCompliment`]: 1,
})
})
},
handleVideoToggleSave(e: WechatMiniprogram.CustomEvent) {
const { id, collect, index } = e.currentTarget.dataset
const { videoList } = this.data
const title = videoList[index].Title
app.permissionVerification(3, 4, `/pages/repository/index?active=1&title=${title}`, id).then(() => {
if (collect == 1) {
wx.ajax({
method: 'POST',
url: '?r=igg4/video/cancel-collection',
data: {
ContentId: id,
},
loading: true,
}).then(() => {
wx.showToast({
title: '取消收藏',
icon: 'none',
})
this.setData({
[`videoList[${index}].IsCollect`]: 0,
[`videoList[${index}].CollectionPeopleNum`]: Number(this.data.videoList[index].CollectionPeopleNum) - 1,
})
})
} else {
wx.ajax({
method: 'POST',
url: '?r=igg4/video/collection',
data: {
ContentId: id,
},
loading: true,
}).then(() => {
wx.showToast({
title: '收藏成功',
icon: 'none',
})
this.setData({
[`videoList[${index}].IsCollect`]: 1,
[`videoList[${index}].CollectionPeopleNum`]: Number(this.data.videoList[index].CollectionPeopleNum) + 1,
})
})
}
})
},
onShareAppMessage() {
const { current, videoList } = this.data
const currentVideo = videoList[current]
this.setData({
[`videoList[${current}].ShareTimes`]: Number(currentVideo.ShareTimes) + 1,
[`videoList[${current}].IsShare`]: true,
})
wx.ajax({
method: 'POST',
url: '?r=wtx/knowledge/share',
data: { Id: this.data.activeId },
})
},
handleBack() {
wx.navigateBack()
},
})
export {}

108
src/pages/repositoryVideoDetail/index.wxml

@ -1,108 +0,0 @@ @@ -1,108 +0,0 @@
<navbar fixed custom-style="background:{{background}};color:#fff">
<van-icon name="arrow-left" slot="left" size="18px" color="#fff" bind:tap="handleBack" />
<view slot="title" style="color: #fff">视频</view>
</navbar>
<view class="page" id="{{theme === 'DRUG' && 'drug-page'}}">
<swiper class="swiper" vertical="{{true}}" current="{{current}}" bindchange="handleChange">
<swiper-item class="swiper-item" wx:for="{{videoList}}" wx:key="Id">
<video
id="video-{{item.Id}}"
class="video"
src="{{item.SrcUrl}}"
poster="{{item.ImageUrl}}"
loop
object-fit="contain"
enable-play-gesture
enable-progress-gesture
show-center-play-btn="{{false}}"
play-btn-position="center"
controls="{{false}}"
bindprogress="handleProgress"
bindplay="handlePlay"
bindpause="handlePause"
bindtimeupdate="handleTimeUpdate"
data-index="{{index}}"
bind:tap="handleTogglePlay"
></video>
<image
wx:if="{{!item.play}}"
class="play"
src="{{imageUrl}}1/video-play.png?t={{Timestamp}}"
catch:tap="handleTogglePlay"
data-index="{{index}}"
></image>
<view class="swiper-item-footer">
<view class="title">{{item.Title}}</view>
<view class="progress">
<van-slider
value="{{item.progress}}"
active-color="#fff"
bar-height="4"
inactive-color="rgba(255, 255, 255, 0.29)"
bind:drag-start="handleDragStart"
bind:change="handleDragEnd"
use-button-slot
data-index="{{index}}"
>
<view class="slider-btn" slot="button"></view>
</van-slider>
</view>
<view class="container">
<view class="user">
<image class="avatar" src="{{imageUrl}}5/logo1.png?t={{Timestamp}}"></image>
<view class="name">gMG给力加油站</view>
</view>
<view class="options">
<view class="o-item">
<image class="icon" src="{{imageUrl}}1/view.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.OpenNum + ~~item.BasicNum}}">{{~~item.OpenNum + ~~item.BasicNum}}</block>
</view>
<view
class="o-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}}1/star-active.png?t={{Timestamp}}"
></image>
<image class="icon" wx:else src="{{imageUrl}}1/star.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.ComplimentNum}}">{{item.ComplimentNum}}</block>
</view>
<view
class="o-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}}1/save-active-plan.png?t={{Timestamp}}"
></image>
<image class="icon" wx:else src="{{imageUrl}}1/save.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.CollectionPeopleNum}}">{{item.CollectionPeopleNum}}</block>
</view>
<button
class="o-item share"
open-type="share"
data-id="{{item.Id}}"
data-type="video"
data-index="{{index}}"
catch:tap="handleShare"
>
<image class="icon" src="{{imageUrl}}1/share.png?t={{Timestamp}}"></image>
<block wx:if="{{~~item.ShareNum}}">{{item.ShareNum}}</block>
</button>
</view>
</view>
</view>
</swiper-item>
</swiper>
</view>
<star id="animate" class="animate {{starShow&&'active'}}"></star>

2
src/pages/signIn/index.wxml

@ -23,7 +23,7 @@ @@ -23,7 +23,7 @@
<view class="site" wx:if="{{detail.Location}}">地点:{{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>
<view class="c-tip">关注"愈见昕生"公众号获取活动通知</view>
</block>
</view>
</view>

2
src/pages/storyGuide/index.ts

@ -70,7 +70,7 @@ Page({ @@ -70,7 +70,7 @@ Page({
},
handleProtocols() {
wx.redirectTo({
url: '/pages/privacyAgreement/index?page=/pages/storyGuide/index',
url: '/doc/pages/privacyAgreement/index?page=/pages/storyGuide/index',
})
},
handleBack() {

2
src/pages/thePublic/index.wxml

@ -7,6 +7,6 @@ @@ -7,6 +7,6 @@
<view class="qrcode">
<image class="code" src="{{qrCode}}" show-menu-by-longpress></image>
</view>
<view class="footer">关注gMG给力加油站</view>
<view class="footer">关注愈见昕生</view>
</view>
</view>

2
src/public/pages/informedResult/index.wxml

@ -18,6 +18,6 @@ @@ -18,6 +18,6 @@
</view>
<view class="back-hoem" bind:tap="handleBackHome">
进入gMG给力加油站
进入愈见昕生
</view>
</view>

Loading…
Cancel
Save