Browse Source

联调 stash

master
kola-web 3 weeks ago
parent
commit
6baf27b0b0
  1. 32
      project.private.config.json
  2. 20
      src/app.ts
  3. 22
      src/custom-tab-bar/index.ts
  4. 6
      src/doctor/pages/d_changeDoctor/index.json
  5. 71
      src/doctor/pages/d_changeDoctor/index.scss
  6. 30
      src/doctor/pages/d_changeDoctor/index.wxml
  7. 22
      src/doctor/pages/d_home/index.scss
  8. 138
      src/doctor/pages/d_home/index.ts
  9. 29
      src/doctor/pages/d_home/index.wxml
  10. 18
      src/doctor/pages/d_interactiveDoctor/index.scss
  11. 1
      src/doctor/pages/d_invite/index.scss
  12. 27
      src/doctor/pages/d_patient/index.ts
  13. 7
      src/doctor/pages/d_patient/index.wxml
  14. 1
      src/doctor/pages/d_patientDetail/index.scss
  15. 26
      src/doctor/pages/d_patientDetail/index.ts
  16. 22
      src/doctor/pages/d_patientDetail/index.wxml
  17. 305
      src/doctor/pages/d_patientList/index.scss
  18. 41
      src/doctor/pages/d_patientList/index.ts
  19. 172
      src/doctor/pages/d_patientList/index.wxml
  20. 29
      src/doctor/pages/d_userInfo/index.scss
  21. 8
      src/doctor/pages/d_userInfo/index.wxml
  22. BIN
      src/images/bg15.png
  23. BIN
      src/images/bg28.png
  24. BIN
      src/images/bg29.png
  25. BIN
      src/images/icon84.png
  26. BIN
      src/images/icon85.png
  27. BIN
      src/images/icon99.png
  28. BIN
      src/images/kkd1.png
  29. 8
      src/pages/enterInfo/index.ts
  30. 2
      src/pages/enterInfo/index.wxml
  31. 13
      src/pages/index/index.scss
  32. 40
      src/pages/index/index.ts
  33. 13
      src/pages/index/index.wxml
  34. 11
      src/pages/interactivePatient/index.scss
  35. 2
      src/pages/interactivePatient/index.ts
  36. 1
      src/pages/login/index.wxml
  37. 4
      src/pages/my/index.wxml
  38. 2
      src/pages/qaForm/index.json
  39. 2
      src/pages/qaForm/index.scss
  40. 13
      src/pages/qaForm/index.ts
  41. 7
      src/pages/signIn/index.json
  42. 169
      src/pages/signIn/index.scss
  43. 99
      src/pages/signIn/index.ts
  44. 57
      src/pages/signIn/index.wxml
  45. 4
      src/pages/start/index.ts

32
project.private.config.json

@ -22,13 +22,34 @@ @@ -22,13 +22,34 @@
"miniprogram": {
"list": [
{
"name": "医生-切换患者端",
"pathName": "doctor/pages/d_trans/index",
"name": "患者-健康档案",
"pathName": "pages/qaForm/index",
"query": "",
"scene": null,
"launchMode": "default"
},
{
"name": "患者-记录就诊时间",
"pathName": "pages/signIn/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "患者-注册表单",
"pathName": "pages/enterInfoQa/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "医生-切换患者端",
"pathName": "doctor/pages/d_trans/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "患者-审核中",
"pathName": "gift/pages/vipPending/index",
"query": "",
@ -127,13 +148,6 @@ @@ -127,13 +148,6 @@
"scene": null
},
{
"name": "患者-问卷",
"pathName": "pages/qaForm/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "患者-用药认证审核失败",
"pathName": "gift/pages/vipReject/index",
"query": "",

20
src/app.ts

@ -328,7 +328,7 @@ App<IAppOption>({ @@ -328,7 +328,7 @@ App<IAppOption>({
}
if (grade == 4 && Number(UserType) < 4) {
wx.reLaunch({
url: '/pages/vipLogin/index',
url: '/gift/pages/vipCert/index',
})
isReject = true
}
@ -352,7 +352,7 @@ App<IAppOption>({ @@ -352,7 +352,7 @@ App<IAppOption>({
method: 'GET',
url: '?r=igg4/account/info',
showMsg: false,
}).then((res) => {
}).then(async (res) => {
res.UserType = res.UserType || 1
if (res.UserType > 2) {
this.globalData.anyWhere = false
@ -362,7 +362,6 @@ App<IAppOption>({ @@ -362,7 +362,6 @@ App<IAppOption>({
self?.setData({
userInfo: res,
})
// this.globalData.scene.doctorId = 3
const { doctorId, recDoctorId: recommendDoctorId } = this.globalData.scene
if (
doctorId &&
@ -371,7 +370,7 @@ App<IAppOption>({ @@ -371,7 +370,7 @@ App<IAppOption>({
res.PatientId &&
!recommendDoctorId
) {
wx.ajax({
await wx.ajax({
method: 'POST',
url: '?r=igg4/account/update-doctor',
data: {
@ -379,6 +378,19 @@ App<IAppOption>({ @@ -379,6 +378,19 @@ App<IAppOption>({
inviteChannel: 1,
},
})
this.globalData.scene.doctorId = ''
const updatedRes = await wx.ajax({
method: 'GET',
url: '?r=igg4/account/info',
showMsg: false,
})
updatedRes.UserType = updatedRes.UserType || 1
this.globalData.userInfo = updatedRes
this.triggerListeners()
self?.setData({
userInfo: updatedRes,
})
res = updatedRes
}
if (recommendDoctorId && doctorId) {
wx.ajax({

22
src/custom-tab-bar/index.ts

@ -20,17 +20,17 @@ Component({ @@ -20,17 +20,17 @@ Component({
icon: 'story',
iconActive: 'story-active',
},
{
pagePath: '/pages/certReslove/index',
text: '突眼日记',
custom: true,
},
{
pagePath: '/pages/live/index',
text: '活动',
icon: 'gift',
iconActive: 'gift-active',
},
// {
// pagePath: '/pages/certReslove/index',
// text: '突眼日记',
// custom: true,
// },
// {
// pagePath: '/pages/live/index',
// text: '活动',
// icon: 'gift',
// iconActive: 'gift-active',
// },
{
pagePath: '/pages/my/index',
text: '我的',

6
src/doctor/pages/d_changeDoctor/index.json

@ -1,8 +1,6 @@ @@ -1,8 +1,6 @@
{
"navigationBarTitleText": "登录",
"navigationStyle": "custom",
"navigationBarTitleText": "切换医生",
"usingComponents": {
"van-divider": "@vant/weapp/divider/index",
"navBar": "/components/navBar/navBar"
"van-divider": "@vant/weapp/divider/index"
}
}

71
src/doctor/pages/d_changeDoctor/index.scss

@ -1,21 +1,28 @@ @@ -1,21 +1,28 @@
.page {
min-height: 100vh;
padding: 460rpx 0 80rpx 0;
padding: 36rpx 0 80rpx 0;
box-sizing: border-box;
.container {
padding: 0 60rpx;
padding: 0 40rpx;
.page-logo {
margin: 0 auto;
display: block;
width: 223rpx;
height: 280rpx;
}
.c-title {
font-size: 36rpx;
color: rgba(32, 33, 33, 1);
margin-top: 56rpx;
font-size: 40rpx;
color: rgba(33, 33, 32, 1);
font-weight: bold;
}
.content {
margin-top: 30rpx;
font-size: 32rpx;
color: rgba(32, 33, 33, 1);
color: rgba(33, 33, 32, 0.70);
line-height: 56rpx;
.link {
color: rgba(67, 168, 188, 1);
color: rgba(22, 121, 203, 1);
}
}
}
@ -26,7 +33,7 @@ @@ -26,7 +33,7 @@
margin-bottom: 32rpx;
display: flex;
justify-content: space-between;
border-radius: 64rpx;
border-radius: 12rpx;
background: rgba(247, 247, 247, 1);
border: 1rpx solid rgba(237, 239, 240, 1);
.input {
@ -34,10 +41,10 @@ @@ -34,10 +41,10 @@
padding: 20rpx 32rpx;
height: 40rpx;
font-size: 32rpx;
color: #999999;
color: #000;
}
.input-placeholade {
color: rgba(194, 201, 202, 1);
color: rgba(33, 33, 32, 0.40);
}
.code {
margin-left: 24rpx;
@ -45,7 +52,7 @@ @@ -45,7 +52,7 @@
width: 262rpx;
border-radius: 24rpx;
font-size: 32rpx;
color: rgba(103, 186, 202, 1);
color: rgba(22, 121, 203, 1);
display: flex;
align-items: center;
justify-content: center;
@ -54,48 +61,16 @@ @@ -54,48 +61,16 @@
.submit {
margin-top: 32px;
padding: 24rpx 20rpx;
width: 622rpx;
background: rgba(103, 186, 202, 1);
border-radius: 64rpx;
font-size: 36rpx;
border-radius: 12rpx;
background: linear-gradient(90deg, #293B9F 0%, #1679CB 100%);
font-size: 32rpx;
color: #ffffff;
font-weight: bold;
text-align: center;
line-height: 1;
}
}
.divider {
margin: 36rpx auto 0;
width: 338rpx;
}
.phone {
margin: 0 48rpx;
padding: 24rpx 20rpx;
border-radius: 64rpx;
background: #eeeeee;
font-size: 36rpx;
color: rgba(103, 186, 202, 1);
line-height: 1;
&::after {
border: none;
outline: none;
}
}
.partient {
margin-top: 58rpx;
font-size: 36rpx;
color: rgba(103, 186, 202, 1);
display: flex;
gap: 10rpx;
align-items: center;
justify-content: center;
.arrow {
width: 23rpx;
height: 19rpx;
line-height: 48rpx;
}
}
.check {
margin: 50rpx 0 0;
margin: 50rpx 50rpx 0;
display: flex;
line-height: 60rpx;
color: rgba(32, 33, 33, 1);
@ -107,7 +82,7 @@ @@ -107,7 +82,7 @@
height: 32rpx;
}
.link {
color: rgba(67, 168, 188, 1);
color: rgba(22, 121, 203, 1);
}
}
}

30
src/doctor/pages/d_changeDoctor/index.wxml

@ -1,14 +1,12 @@ @@ -1,14 +1,12 @@
<view class="page" style="background: url({{imageUrl}}/bg4.png?t={{Timestamp}}) no-repeat top center / 100% 648rpx">
<navBar background="{{background}}" fixed back bind:back="handleBack"></navBar>
<view class="page">
<view class="container">
<image class="page-logo" src="{{imageUrl}}bg19.png?t={{Timestamp}}"></image>
<view class="c-title">尊敬的医生您好</view>
<view class="content">愈见昕生是中国罕见病联盟/北京罕见病诊疗与保障学会发起的gMG患者健康全程管理平台;</view>
<view class="content">"愈见昕生"是北京白求恩公益基金会发起的 IgG4-RD 患者健康管理平台。</view>
<view class="content">
在您加入愈见昕生平台之前,请您阅读并充分理解
<text class="link" bind:tap="handleLink">《隐私协议保护政策》</text>
,了解您的权益及相关数据处理方法,我们将严格按照法律法规及
<text class="link" bind:tap="handleLink">《隐私协议保护政策》</text>
的相关规定,保证您的个人信息不受侵犯。
加入平台前,请您仔细阅读
<text class="link" bind:tap="handleLink">《隐私保护协议》</text>
,了解您的权益及个人信息处理方式。我们将严格依法保护您的个人信息安全。
</view>
</view>
<view class="form">
@ -32,14 +30,14 @@ @@ -32,14 +30,14 @@
<view class="code" bind:tap="getCode">{{codeText}}</view>
</view>
<view class="submit" bind:tap="handleSubmit">切换医生</view>
<view class="check">
<image wx:if="{{check}}" class="icon" src="{{imageUrl}}icon12.png?t={{Timestamp}}" bind:tap="handleCheck"></image>
<image wx:else class="icon" src="{{imageUrl}}icon13.png?t={{Timestamp}}" bind:tap="handleCheck"></image>
<view class="p">
我特此同意依照此
<text class="link" bind:tap="handleLink">《隐私协议保护政策》</text>
规定收集我的个人敏感信息
</view>
</view>
<view class="check">
<image wx:if="{{check}}" class="icon" src="{{imageUrl}}icon52.png?t={{Timestamp}}" bind:tap="handleCheck"></image>
<image wx:else class="icon" src="{{imageUrl}}icon13.png?t={{Timestamp}}" bind:tap="handleCheck"></image>
<view class="p">
我同意依照此
<text class="link" bind:tap="handleLink">《隐私政策》</text>
规定收集我的个人敏感信息
</view>
</view>
</view>

22
src/doctor/pages/d_home/index.scss

@ -23,6 +23,7 @@ page { @@ -23,6 +23,7 @@ page {
font-size: 32rpx;
color: rgba(33, 33, 32, 0.4);
.tag {
vertical-align: 2rpx;
display: inline-block;
padding: 0 12rpx;
font-size: 22rpx;
@ -82,27 +83,6 @@ page { @@ -82,27 +83,6 @@ page {
margin: 24rpx 0 0;
padding-top: 15px;
border-radius: 24rpx 24rpx 24rpx 24rpx;
.switch {
margin: 15rpx 30rpx;
padding: 8rpx;
display: flex;
justify-content: space-between;
align-items: center;
background: #f2f4f5;
border-radius: 98rpx 98rpx 98rpx 98rpx;
.switch-item {
flex: 1;
padding: 14rpx;
font-size: 28rpx;
color: rgba(103, 113, 114, 1);
text-align: center;
border-radius: 62rpx;
&.active {
color: #fff;
background-color: rgba(39, 66, 164, 1);
}
}
}
.chart {
margin-top: 48rpx;
padding: 32rpx 0;

138
src/doctor/pages/d_home/index.ts

@ -19,12 +19,9 @@ Page({ @@ -19,12 +19,9 @@ Page({
hospital: {},
detail: {},
tab1: 0,
year1: dayjs().format('YYYY'),
},
ecDataTrendComponent1_1: null as any,
ecDataTrendComponent1_2: null as any,
async onLoad() {
const SystemInfo = app.globalSystemInfo
if (SystemInfo) {
@ -57,37 +54,16 @@ Page({ @@ -57,37 +54,16 @@ Page({
getDetail() {
wx.ajax({
method: 'GET',
url: '?r=igg4/doctor/doctor-stat/get-last-month',
url: '?r=igg4/doctor/index/summary',
data: {},
}).then((res) => {
this.setData({
detail: {
...res,
year: dayjs(res.StatMonth).format('YYYY'),
yr: dayjs(res.StatMonth).format('YY'),
},
detail: res,
})
})
},
handleTab1(e) {
const { index } = e.currentTarget.dataset
this.setData({
tab1: index,
})
if (index === 0) {
this.getList1_1()
} else if (index === 1) {
this.getList1_2()
}
},
handleSelectYear1() {
this.handleTab1({
currentTarget: {
dataset: {
index: this.data.tab1,
},
},
})
this.getList1_1()
},
getList1_1() {
wx.ajax({
@ -100,17 +76,6 @@ Page({ @@ -100,17 +76,6 @@ Page({
this.initChart1_1(res.list)
})
},
getList1_2() {
wx.ajax({
method: 'GET',
url: '?r=igg4/doctor/doctor-stat/get-month-list',
data: {
statYear: this.data.year1,
},
}).then((res) => {
this.initChart1_2(res.list)
})
},
initChart1_1(list: any[]) {
return new Promise((reslove) => {
this.ecDataTrendComponent1_1 = this.selectComponent('#chart1_1')
@ -207,99 +172,6 @@ Page({ @@ -207,99 +172,6 @@ Page({
})
})
},
initChart1_2(list: any[]) {
this.ecDataTrendComponent1_2 = this.selectComponent('#chart1_2')
this.ecDataTrendComponent1_2.init((canvas, width, height, dpr) => {
const chart = echarts.init(canvas, null, {
width,
height,
devicePixelRatio: dpr, // new
})
canvas.setChart(chart)
const x: string[] = []
const y1: string[] = []
list.forEach((item) => {
x.push(item.StatMonth)
y1.push(item.InvitePCount)
})
const option = {
legend: {
bottom: 0,
itemWidth: 8,
itemHeight: 8,
icon: 'circle',
lineStyle: {
width: '0',
},
textStyle: {
color: 'rgba(103, 113, 114, 1)',
fontSize: '12',
},
data: [],
},
grid: {
top: '10%',
left: '3%',
right: '4%',
bottom: '30',
containLabel: true,
},
xAxis: [
{
type: 'category',
axisTick: {
show: false,
},
axisLabel: {
fontSize: 10,
color: 'rgba(40, 48, 49, 1)',
},
data: x,
},
],
yAxis: [
{
type: 'value',
minInterval: 1,
axisLabel: {
fontSize: 10,
color: 'rgba(40, 48, 49, 1)',
formatter(value) {
return Math.abs(value)
},
},
},
],
series: [
{
name: '患者数',
type: 'bar',
stack: 'a',
label: {
show: true,
color: '#000',
fontSize: 10,
overflow: 'truncate',
width: 30,
position: 'top',
},
color: 'rgba(103, 186, 202, 1)',
data: y1,
},
],
dataZoom: {
type: 'inside', // 有type这个属性,滚动条在最下面,也可以不行,写y:36,这表示距离顶端36px,一般就是在图上面。
startValue: x.length - 6,
endValue: x.length - 1,
filterMode: 'none',
},
}
chart.setOption(option)
return chart
})
},
handleQuestion(e) {
const { id } = e.currentTarget.dataset
@ -309,8 +181,8 @@ Page({ @@ -309,8 +181,8 @@ Page({
title: '累计邀约',
},
2: {
content: `本月新邀约患者数`,
title: '月新增',
content: `当月新增患者数`,
title: '月新增',
},
}[id]
Dialog.alert({

29
src/doctor/pages/d_home/index.wxml

@ -19,20 +19,20 @@ @@ -19,20 +19,20 @@
<van-icon catch:tap="handleQuestion" data-id="1" name="question" color="rgba(33, 33, 32, 0.30)" />
</view>
<view class="num">
{{detail.InvitePCount}}
{{detail.TotalPatientNum}}
<text class="sub">人</text>
</view>
</view>
</view>
<view class="item" bind:tap="handlePatient" data-type="2" data-name="当月邀约">
<view class="item" bind:tap="handlePatient" data-type="2" data-name="当月新增">
<image class="icon" src="{{imageUrl}}icon54.png?t={{Timestamp}}"></image>
<view class="wrap">
<view class="title">
当月邀约
当月活跃
<van-icon catch:tap="handleQuestion" data-id="2" name="question" color="rgba(33, 33, 32, 0.30)" />
</view>
<view class="num">
{{detail.MonthInvitePCount}}
{{detail.MonthNewPatientCount}}
<text class="sub">人</text>
</view>
@ -41,14 +41,6 @@ @@ -41,14 +41,6 @@
</view>
<view class="page-container">
<view class="card">
<view class="switch">
<view class="switch-item {{tab1===0 && 'active'}}" bind:tap="handleTab1" data-index="{{0}}">
月度邀约患者数
</view>
<view class="switch-item {{tab1===1 && 'active'}}" bind:tap="handleTab1" data-index="{{1}}">
累计邀约患者数
</view>
</view>
<view class="chart">
<view class="chart-header">
<picker
@ -65,16 +57,9 @@ @@ -65,16 +57,9 @@
</picker>
<view class="tip">统计数据截止昨天</view>
</view>
<block wx:if="{{tab1===0}}">
<view class="chart-container">
<ec-canvas id="chart1_1" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
</block>
<block wx:if="{{tab1===1}}">
<view class="chart-container">
<ec-canvas id="chart1_2" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
</block>
<view class="chart-container">
<ec-canvas id="chart1_1" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
</view>
</view>
</view>

18
src/doctor/pages/d_interactiveDoctor/index.scss

@ -110,11 +110,11 @@ page { @@ -110,11 +110,11 @@ page {
margin-bottom: 32rpx;
padding: 32rpx 30rpx;
border-radius: 32rpx 32rpx;
background: rgba(248, 248, 248, 1);
background: rgba(22, 121, 203, 1);
border: 2rpx solid #ffffff;
.title {
font-size: 40rpx;
color: rgba(33, 33, 32, 1);
color: rgba(255, 255, 255, 1);
font-weight: bold;
}
.list {
@ -126,7 +126,7 @@ page { @@ -126,7 +126,7 @@ page {
margin-bottom: 0;
}
.order {
margin-top: 6rpx;
margin-top: 10rpx;
flex-shrink: 0;
width: 28rpx;
height: 28rpx;
@ -134,13 +134,13 @@ page { @@ -134,13 +134,13 @@ page {
display: flex;
align-items: center;
justify-content: center;
color: rgba(255, 255, 255, 1);
color: rgba(22, 121, 203, 1);
border-radius: 6rpx;
background: linear-gradient(90deg, #293b9f 0%, #1679cb 100%);
background: rgba(255, 255, 255, 1);
}
.content {
font-size: 36rpx;
color: rgba(33, 33, 32, 1);
color: #fff;
}
}
}
@ -148,10 +148,10 @@ page { @@ -148,10 +148,10 @@ page {
.message {
margin-bottom: 32rpx;
padding: 26rpx 32rpx;
background: rgba(248, 248, 248, 1);
background: rgba(22, 121, 203, 1);
border-radius: 32rpx;
font-size: 36rpx;
color: rgba(33, 33, 32, 1);
color: #fff;
white-space: pre-line;
}
.week {
@ -229,7 +229,7 @@ page { @@ -229,7 +229,7 @@ page {
.adl {
position: relative;
margin-bottom: 32rpx;
adl-img {
.adl-img {
width: 498rpx;
height: 250rpx;
}

1
src/doctor/pages/d_invite/index.scss

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
page{
background-color: #3059C2;
}
.page {
position: relative;

27
src/doctor/pages/d_patient/index.ts

@ -61,6 +61,11 @@ Page({ @@ -61,6 +61,11 @@ Page({
this.getList()
})
},
onShow() {
if (this.data.list.length) {
this.getList()
}
},
handleReset() {
this.setData({
Search: '',
@ -106,21 +111,19 @@ Page({ @@ -106,21 +111,19 @@ Page({
},
getList(newPage = 1) {
const { active } = this.data
const params = {
search: this.data.Search,
const params: any = {
page: newPage,
count: 10,
Search: this.data.Search,
}
if (active === 0) {
} else if (active === 1) {
params.IsPreviousConvulsion = 1
}
const url = {
0: '?r=igg4/doctor/patient/get-need-follow-list',
1: '?r=igg4/doctor/patient/get-no-standard-list',
2: '?r=igg4/doctor/patient/get-my-list',
}[active] as string
wx.ajax({
method: 'GET',
url,
data: {
page: newPage,
...params,
},
url: '?r=igg4/doctor/patient/list',
data: params,
}).then((res) => {
res.list.forEach((item) => {
if (item.LastAdlTime) {

7
src/doctor/pages/d_patient/index.wxml

@ -17,7 +17,6 @@ @@ -17,7 +17,6 @@
<view class="navbar">
<view class="nav {{active===0 && 'active'}}" bind:tap="handleNav" data-active="{{0}}">疾病基础</view>
<view class="nav {{active===1 && 'active'}}" bind:tap="handleNav" data-active="{{1}}">复发/活动期</view>
<view class="nav {{active===2 && 'active'}}" bind:tap="handleNav" data-active="{{2}}">伊奈利珠单抗用药患者</view>
</view>
</view>
<view class="list">
@ -28,10 +27,10 @@ @@ -28,10 +27,10 @@
<view class="container">
<view class="title">
<view class="name">{{item.Name}}</view>
<view class="disease">病程{{'<'}}1年</view>
<view class="disease">病程{{item.DiagnosisTimeRange == 1 ? '<1年' : item.DiagnosisTimeRange == 2 ? '1-3年' : '>3年'}}</view>
</view>
<view class="replay-date">邀约时间:2025-12-30</view>
<view class="remark">备注:111111111111111111111</view>
<view class="replay-date">邀约时间:{{item.InviteTime}}</view>
<view class="remark">备注:{{item.DoctorRemark || '无'}}</view>
</view>
</view>
<pagination pagination="{{pagination}}"></pagination>

1
src/doctor/pages/d_patientDetail/index.scss

@ -56,6 +56,7 @@ page { @@ -56,6 +56,7 @@ page {
.content {
margin-top: 24rpx;
text-align: left;
max-width: 100%;
}
}
.label {

26
src/doctor/pages/d_patientDetail/index.ts

@ -124,6 +124,20 @@ Page({ @@ -124,6 +124,20 @@ Page({
nav: '0',
ageRangeMap: {
1: '<40岁',
2: '40-49岁',
3: '50-59岁',
4: '60-69岁',
5: '70-79岁',
6: '80岁以上',
},
diagnosisTimeRangeMap: {
1: '6个月以内',
2: '6个月-3年',
3: '3年以上',
},
adlList: [] as any,
tableData: [
{
@ -222,6 +236,17 @@ Page({ @@ -222,6 +236,17 @@ Page({
? ''
: dayjs(res.LastUseDrugsTime).from(dayjs().format('YYYY-MM-DD')).replace(' ', '')
}
res.AgeRangeName = this.data.ageRangeMap[res.AgeRange] || ''
res.DiagnosisTimeRangeName = this.data.diagnosisTimeRangeMap[res.DiagnosisTimeRange] || ''
if (res.HealthQA && res.HealthQA.hasSubmitted && res.HealthQA.questions) {
res.HealthQA.questions.forEach((q: any) => {
if (Array.isArray(q.AnswerText)) {
q.AnswerTextStr = q.AnswerText.join('、') + (q.OtherText ? `${q.OtherText}` : '')
} else {
q.AnswerTextStr = q.AnswerText + (q.OtherText ? `${q.OtherText}` : '')
}
})
}
this.setData({
detail: {
...res,
@ -927,6 +952,7 @@ Page({ @@ -927,6 +952,7 @@ Page({
icon: 'none',
title: '请输入备注',
})
return
}
wx.ajax({
method: 'POST',

22
src/doctor/pages/d_patientDetail/index.wxml

@ -10,31 +10,31 @@ @@ -10,31 +10,31 @@
<image wx:else class="tel-icon" src="{{imageUrl}}/5/eye1.png?t={{Timestamp}}"></image>
</view>
<view class="content">
<view>18岁以下 | {{showTel ? detail.Telephone : '***********'}}</view>
<view>邀约时间:2025-12-09 15:05:58</view>
<view>{{detail.AgeRangeName}} | {{showTel ? detail.Telephone : '***********'}}</view>
<view>邀约时间:{{detail.InviteTime}}</view>
</view>
</view>
</view>
<view class="container">
<view class="row">
<view class="label">IgG4相关性疾病病程</view>
<view class="content">4年</view>
<view class="content">{{detail.DiagnosisTimeRangeName}}</view>
</view>
<view class="row">
<view class="row" wx:if="{{detail.HealthQA && detail.HealthQA.hasSubmitted && detail.HealthQA.questions.length > 1}}">
<view class="label">疾病阶段</view>
<view class="content">稳定期</view>
<view class="content">{{detail.HealthQA.questions[1].AnswerTextStr}}</view>
</view>
<view class="row">
<view class="row row-vetical" wx:if="{{detail.HealthQA && detail.HealthQA.hasSubmitted && detail.HealthQA.questions.length > 2}}">
<view class="label">正在使用的药物</view>
<view class="content">糖皮质激素 免疫抑制剂</view>
<view class="content">{{detail.HealthQA.questions[2].AnswerTextStr}}</view>
</view>
<view class="row row-vetical">
<view class="label">正在使用的药物</view>
<view class="content">糖皮质激素 免疫抑制剂</view>
<view class="row row-vetical" wx:if="{{detail.HealthQA && detail.HealthQA.hasSubmitted && detail.HealthQA.questions.length > 0}}">
<view class="label">被确诊受累的器官</view>
<view class="content">{{detail.HealthQA.questions[0].AnswerTextStr}}</view>
</view>
<view class="row">
<view class="label">备注</view>
<view class="content">无</view>
<view class="content">{{detail.DoctorRemark || ''}}</view>
</view>
</view>

305
src/doctor/pages/d_patientList/index.scss

@ -6,84 +6,6 @@ page { @@ -6,84 +6,6 @@ page {
.page {
min-height: 100vh;
.page-header {
position: sticky;
top: 0;
padding: 30rpx;
box-shadow: 0rpx 8rpx 16rpx 0rpx rgba(40, 48, 49, 0.04);
border-radius: 0 0 32rpx 32rpx;
z-index: 10;
.search {
padding: 18rpx 32rpx;
display: flex;
align-items: center;
gap: 16rpx;
background: linear-gradient(to top, #ffffff 0%, #ebf3f4 100%);
box-shadow: 0rpx 8rpx 8rpx 0rpx rgba(40, 48, 49, 0.04);
border-radius: 140rpx 140rpx 140rpx 140rpx;
border: 2rpx solid #ffffff;
.icon {
width: 40rpx;
height: 40rpx;
}
.input {
flex: 1;
font-size: 28rpx;
}
.input-place {
color: rgba(173, 179, 180, 1);
}
}
.navbar {
margin-top: 32rpx;
display: flex;
justify-content: space-between;
align-items: center;
.nav {
position: relative;
flex: 1;
text-align: center;
font-size: 32rpx;
color: rgba(103, 113, 114, 1);
transition: all 0.3s;
.dot {
padding: 0 4rpx;
position: absolute;
left: 50%;
transform: translateX(35rpx);
top: 0;
min-width: 18rpx;
height: 26rpx;
font-size: 18rpx;
line-height: 26rpx;
color: rgba(255, 255, 255, 1);
border-radius: 50%;
background: rgba(215, 108, 108, 1);
}
&.active {
font-size: 32rpx;
color: rgba(98, 190, 208, 1);
font-weight: bold;
&::after {
position: absolute;
bottom: -30rpx;
left: 50%;
transform: translateX(-50%);
content: '';
width: 52rpx;
height: 8rpx;
border-radius: 24rpx 24rpx 0 0;
background: #62bed0;
}
}
}
}
}
.total-line {
padding: 34rpx 30rpx 0;
display: flex;
@ -110,6 +32,7 @@ page { @@ -110,6 +32,7 @@ page {
color: rgba(43, 160, 184, 1);
}
}
.data-tip {
font-size: 24rpx;
color: rgba(154, 161, 162, 1);
@ -121,236 +44,58 @@ page { @@ -121,236 +44,58 @@ page {
.list-item {
margin-top: 24rpx;
padding: 36rpx 34rpx;
background: #ffffff;
border-radius: 24rpx 24rpx 24rpx 24rpx;
padding: 28rpx;
display: flex;
background: #ffffff;
border: 2rpx solid #f4f3f3;
border-radius: 24rpx;
box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(0, 0, 0, 0.08);
.avatar {
flex-shrink: 0;
.avatar-img {
width: 100rpx;
height: 100rpx;
width: 111rpx;
height: 111rpx;
border-radius: 50%;
}
}
.container {
flex: 1;
padding-left: 20rpx;
.title {
display: flex;
align-items: center;
justify-content: space-between;
.name {
font-size: 32rpx;
color: #283031;
font-weight: bold;
}
.send {
padding: 8rpx 22rpx;
font-size: 24rpx;
color: #67baca;
line-height: 1;
border-radius: 32rpx 32rpx 32rpx 32rpx;
border: 2rpx solid rgba(103, 186, 202, 0.26);
display: flex;
align-items: center;
gap: 8rpx;
.icon {
width: 28rpx;
height: 28rpx;
}
}
}
.tags {
margin-top: 16rpx;
display: flex;
flex-wrap: wrap;
gap: 12rpx;
.tag {
padding: 4rpx 16rpx;
font-size: 22rpx;
color: #e59a29;
line-height: 28rpx;
background: #fff5df;
border-radius: 8rpx 8rpx 8rpx 8rpx;
}
}
.content {
margin-top: 24rpx;
display: flex;
align-items: center;
flex-wrap: wrap;
font-size: 28rpx;
color: #283031;
gap: 14rpx;
.line {
flex-shrink: 0;
width: 2rpx;
height: 32rpx;
background-color: #eaeced;
}
.blod {
font-size: 40rpx;
color: rgba(40, 48, 49, 1);
font-weight: bold;
}
&.disable {
color: #9aa1a2;
.disease {
font-size: 32rpx;
color: rgba(22, 121, 203, 1);
}
}
.replay-date {
margin-top: 16rpx;
font-size: 28rpx;
color: #9aa1a2;
}
}
}
}
}
.popup {
padding: 92rpx 30rpx calc(30rpx + env(safe-area-inset-bottom));
.form {
max-height: 60vh;
overflow-y: auto;
overflow-x: hidden;
.form-item {
margin-bottom: 48rpx;
.f-title {
font-size: 36rpx;
color: rgba(40, 48, 49, 1);
font-weight: bold;
}
.select {
margin-top: 24rpx;
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16rpx;
.s-item {
padding: 18rpx 0;
text-align: center;
border-radius: 12rpx;
font-size: 28rpx;
color: rgba(103, 113, 114, 1);
background: #f2f4f5;
&.active {
color: #fff;
background-color: rgba(103, 186, 202, 1);
}
}
}
.custom {
margin-top: 16rpx;
display: flex;
align-items: center;
gap: 12rpx;
.c-item {
padding: 18rpx 24rpx;
display: flex;
align-items: center;
.remark {
margin-top: 34rpx;
padding-top: 24rpx;
border-top: 1px solid rgba(244, 243, 243, 1);
font-size: 32rpx;
color: rgba(103, 113, 114, 1);
border-radius: 12rpx;
background-color: rgba(242, 244, 245, 1);
.input {
padding: 0;
margin: 0;
width: 3em;
font-size: 32rpx;
line-height: 1;
}
.input-place {
color: rgba(194, 201, 202, 1);
line-height: 1;
}
color: rgba(33, 33, 32, 1);
}
}
.date {
margin-top: 24rpx;
display: flex;
align-items: center;
justify-content: space-between;
.picker {
flex: 1;
.d-item {
flex: 1;
display: flex;
align-items: center;
justify-content: space-between;
padding: 18rpx 32rpx;
background: #f7f8f9;
border-radius: 12rpx 12rpx 12rpx 12rpx;
.icon {
width: 32rpx;
height: 32rpx;
}
.content {
font-size: 32rpx;
color: #677172;
&:empty::after {
content: attr(data-place);
color: rgba(194, 201, 202, 1);
}
}
}
}
.sion {
flex-shrink: 0;
margin: 0 14rpx;
font-size: 32rpx;
color: #677172;
}
}
}
}
.p-footer {
margin-top: 32rpx;
display: flex;
justify-content: space-between;
align-items: center;
gap: 26rpx;
.reset {
flex: 1;
height: 84rpx;
font-size: 36rpx;
color: rgba(103, 186, 202, 1);
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
background: #ffffff;
border-radius: 98rpx 98rpx 98rpx 98rpx;
border: 2rpx solid #67baca;
}
.submit {
flex: 1;
height: 84rpx;
font-size: 36rpx;
color: #ffffff;
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
background: rgba(103, 186, 202, 1);
border-radius: 98rpx 98rpx 98rpx 98rpx;
}
}
}

41
src/doctor/pages/d_patientList/index.ts

@ -1,11 +1,7 @@ @@ -1,11 +1,7 @@
import dayjs from 'dayjs'
const app = getApp<IAppOption>()
Page({
data: {
active: 0,
statType: '',
navTitle: '',
@ -26,29 +22,25 @@ Page({ @@ -26,29 +22,25 @@ Page({
this.getList()
})
},
handleReset() {
this.getList()
},
handleSearch() {
this.getList()
onShow() {
if (this.data.list.length) {
this.getList()
}
},
getList(newPage = 1) {
const params = {
statType: this.data.statType,
const { statType } = this.data
const params: any = {
page: newPage,
count: 10,
}
if (statType === '1') {
} else if (statType === '2') {
}
wx.ajax({
method: 'GET',
url: '?r=igg4/doctor/patient/get-stat-patient-list',
data: {
page: newPage,
...params,
},
url: '?r=igg4/doctor/patient/list',
data: params,
}).then((res) => {
res.list.forEach((item) => {
if (item.LastAdlTime) {
item.LastAdlTimeName = dayjs(item.LastAdlTime).from(dayjs().format('YYYY-MM-DD')).replace(' ', '')
}
})
const list = res.page === 1 ? res.list : [...this.data.list, ...res.list]
this.setData({
total: res.count,
@ -70,17 +62,10 @@ Page({ @@ -70,17 +62,10 @@ Page({
handleDetail(e: any) {
const { index } = e.currentTarget.dataset
const item = this.data.list[index]
wx.navigateTo({
url: `/doctor/pages/d_patientDetail/index?id=${item.PatientId}`,
})
},
handleSend(e) {
const { index } = e.currentTarget.dataset
wx.navigateTo({
url: `/doctor/pages/d_interactiveDoctor/index?patientId=${this.data.list[index].PatientId}`,
})
},
handleSendGroup() {
wx.navigateTo({
url: '/doctor/pages/d_taskList/index',

172
src/doctor/pages/d_patientList/index.wxml

@ -1,8 +1,4 @@ @@ -1,8 +1,4 @@
<wxs src="./index.wxs" module="tools" />
<view
class="page"
style="background: url({{imageUrl}}/doctor/d_patient-detail-bg.png?t={{Timestamp}}) no-repeat top center/100% 640rpx"
>
<view class="page">
<navBar background="{{background}}" title="{{navTitle}}" back bind:back="handleBack"></navBar>
<view class="total-line">
<view class="wrap">
@ -21,172 +17,12 @@ @@ -21,172 +17,12 @@
<view class="container">
<view class="title">
<view class="name">{{item.Name}}</view>
<view class="send" catch:tap="handleSend" data-index="{{index}}" wx:if="{{item.IsCurrent==1}}">
<image class="icon" src="{{imageUrl}}5/icon-message.png?t={{Timestamp}}"></image>
消息
</view>
<view class="disease">病程{{item.DiagnosisTimeRange == 1 ? '<1年' : item.DiagnosisTimeRange == 2 ? '1-3年' : '>3年'}}</view>
</view>
<view class="tags">
<view class="tag" wx:if="{{item.LastAdlTime}}">最近一次ADL:{{item.LastAdlTimeName}}</view>
<view class="tag" wx:if="{{item.LastAdlNeedFollowStatus==1}}">需随访</view>
</view>
<view class="content" wx:if="{{item.AdlScore || item.SteroidDailyDose}}">
<view wx:if="{{item.LastAdlTime}}">
ADL评分:
<text class="blod">{{item.AdlScore}}</text>
</view>
<view class="line" wx:if="{{item.AdlScore || item.SteroidDailyDose}}"></view>
<view wx:if="{{item.SteroidDailyDose}}">
激素用量:
<text class="blod">{{item.SteroidDailyDose}}</text>
mg/d
</view>
</view>
<view class="content disable" wx:else>无ADL记录</view>
<view class="replay-date" wx:if="{{item.LastReVisitDate}}">复诊时间:{{item.LastReVisitDate}}</view>
<view class="replay-date">邀约时间:{{item.InviteTime}}</view>
<view class="remark">备注:{{item.DoctorRemark || '无'}}</view>
</view>
</view>
<!-- <view class="list-item" wx:for="{{list}}" wx:key="index" bind:tap="handleDetail" data-index="{{index}}"> -->
<!-- <view class="user"> -->
<!-- <view class="avatar"> -->
<!-- <image class="avatar-img" src="{{item.UserImg}}"></image> -->
<!-- </view> -->
<!-- <view class="wrap"> -->
<!-- <view class="w-header"> -->
<!-- <view class="name">{{item.Name}}</view> -->
<!-- <image -->
<!-- wx:if="{{item.Gender==='1'}}" -->
<!-- class="icon" -->
<!-- src="{{imageUrl}}/doctor/icon-man.png?t={{Timestamp}}" -->
<!-- ></image> -->
<!-- <image -->
<!-- wx:if="{{item.Gender==='2'}}" -->
<!-- class="icon" -->
<!-- src="{{imageUrl}}/doctor/icon-woman.png?t={{Timestamp}}" -->
<!-- ></image> -->
<!-- <view class="tel">{{item.Telephone}}</view> -->
<!-- <view class="send" catch:tap="handleSend" data-index="{{index}}">发消息</view> -->
<!-- </view> -->
<!-- <view class="w-tags"> -->
<!-- <image -->
<!-- wx:if="{{item.UserType===4}}" -->
<!-- class="label" -->
<!-- src="{{imageUrl}}/doctor/drug-label.png?t={{Timestamp}}" -->
<!-- ></image> -->
<!-- <view class="tag" wx:for="{{item.Tags}}" wx:for-item="tag" wx:for-index="tIndex" wx:key="tIndex"> -->
<!-- {{tag}} -->
<!-- </view> -->
<!-- </view> -->
<!-- </view> -->
<!-- </view> -->
<!-- <view class="adl" wx:if="{{item.LastAdlTime}}"> -->
<!-- <view class="a-header"> -->
<!-- <view class="content">最近一次测评:{{item.LastAdlTimeName}}</view> -->
<!-- <view class="box"></view> -->
<!-- </view> -->
<!-- <view class="a-content"> -->
<!-- <view class="row" wx:if="{{item.AdlScore}}"> -->
<!-- <view class="label">最新ADL评分</view> -->
<!-- <view class="num">{{item.AdlScore}}</view> -->
<!-- <view class="tag" wx:if="{{item.AdlScore<=1}}"> -->
<!-- <view class="t-label"> -->
<!-- <image class="icon" src="{{imageUrl}}/doctor/icon-success.png?t={{Timestamp}}"></image> -->
<!-- 已达标 -->
<!-- </view> -->
<!-- <view class="t-content" wx:if="{{item.TotalScoreChange*1!=0}}"> -->
<!-- <image -->
<!-- wx:if="{{item.TotalScoreChange<=0}}" -->
<!-- class="icon" -->
<!-- src="{{imageUrl}}/doctor/icon-down-success.png?t={{Timestamp}}" -->
<!-- ></image> -->
<!-- <image wx:else class="icon" src="{{imageUrl}}/doctor/icon-up-success.png?t={{Timestamp}}"></image> -->
<!-- {{item.TotalScoreChange}} -->
<!-- </view> -->
<!-- </view> -->
<!-- <view class="tag tag-warn" wx:elif="{{item.AdlScore<=5}}"> -->
<!-- <view class="t-label"> -->
<!-- <image class="icon" src="{{imageUrl}}/doctor/icon-warn.png?t={{Timestamp}}"></image> -->
<!-- 接近达标 -->
<!-- </view> -->
<!-- <view class="t-content" wx:if="{{item.TotalScoreChange*1!=0}}"> -->
<!-- <image -->
<!-- wx:if="{{item.TotalScoreChange<=0}}" -->
<!-- class="icon" -->
<!-- src="{{imageUrl}}/doctor/icon-down-warn.png?t={{Timestamp}}" -->
<!-- ></image> -->
<!-- <image wx:else class="icon" src="{{imageUrl}}/doctor/icon-up-warn.png?t={{Timestamp}}"></image> -->
<!-- {{item.TotalScoreChange}} -->
<!-- </view> -->
<!-- </view> -->
<!-- <view class="tag tag-error" wx:else> -->
<!-- <view class="t-label"> -->
<!-- <image class="icon" src="{{imageUrl}}/doctor/icon-error.png?t={{Timestamp}}"></image> -->
<!-- 待达标 -->
<!-- </view> -->
<!-- <view class="t-content" wx:if="{{item.TotalScoreChange*1!=0}}"> -->
<!-- <image -->
<!-- wx:if="{{item.TotalScoreChange<=0}}" -->
<!-- class="icon" -->
<!-- src="{{imageUrl}}/doctor/icon-down-error.png?t={{Timestamp}}" -->
<!-- ></image> -->
<!-- <image wx:else class="icon" src="{{imageUrl}}/doctor/icon-up-error.png?t={{Timestamp}}"></image> -->
<!-- {{item.TotalScoreChange}} -->
<!-- </view> -->
<!-- </view> -->
<!-- </view> -->
<!-- <view class="row" wx:if="{{item.SteroidDailyDose}}"> -->
<!-- <view class="label">最新激素用量</view> -->
<!-- <view class="num">{{item.SteroidDailyDose}}mg</view> -->
<!-- <view class="tag" wx:if="{{item.SteroidDailyDose<=5}}"> -->
<!-- <view class="t-label"> -->
<!-- <image class="icon" src="{{imageUrl}}/doctor/icon-success.png?t={{Timestamp}}"></image> -->
<!-- 已达标 -->
<!-- </view> -->
<!-- <view class="t-content" wx:if="{{item.SteroidDailyDoseChange*1!=0}}"> -->
<!-- <image -->
<!-- wx:if="{{item.SteroidDailyDoseChange<=0}}" -->
<!-- class="icon" -->
<!-- src="{{imageUrl}}/doctor/icon-down-success.png?t={{Timestamp}}" -->
<!-- ></image> -->
<!-- <image wx:else class="icon" src="{{imageUrl}}/doctor/icon-up-success.png?t={{Timestamp}}"></image> -->
<!-- {{item.SteroidDailyDoseChange}}mg -->
<!-- </view> -->
<!-- </view> -->
<!-- <view class="tag tag-error" wx:else> -->
<!-- <view class="t-label"> -->
<!-- <image class="icon" src="{{imageUrl}}/doctor/icon-error.png?t={{Timestamp}}"></image> -->
<!-- 待达标 -->
<!-- </view> -->
<!-- <view class="t-content" wx:if="{{item.SteroidDailyDoseChange*1!=0}}"> -->
<!-- <image -->
<!-- wx:if="{{item.SteroidDailyDoseChange<=0}}" -->
<!-- class="icon" -->
<!-- src="{{imageUrl}}/doctor/icon-down-error.png?t={{Timestamp}}" -->
<!-- ></image> -->
<!-- <image wx:else class="icon" src="{{imageUrl}}/doctor/icon-up-error.png?t={{Timestamp}}"></image> -->
<!-- {{item.SteroidDailyDoseChange}}mg -->
<!-- </view> -->
<!-- </view> -->
<!-- </view> -->
<!-- </view> -->
<!-- </view> -->
<!-- <view class="adl-none" wx:else> -->
<!-- <image class="icon" src="{{imageUrl}}/doctor/icon-adl-none.png?t={{Timestamp}}"></image> -->
<!-- 还未做ADL测评 -->
<!-- </view> -->
<!-- <view class="drug" wx:if="{{item.LastUseDrugsTime}}"> -->
<!-- <view class="label">最近用药</view> -->
<!-- <view class="content"> -->
<!-- {{item.LastUseDrugsTime}} -->
<!-- <block wx:if="{{item.LastUseDrugsTimeName}}">({{item.LastUseDrugsTimeName}})</block> -->
<!-- </view> -->
<!-- </view> -->
<!-- <view class="drug-none" wx:else> -->
<!-- <image class="icon" src="{{imageUrl}}/doctor/icon-drug-none.png?t={{Timestamp}}"></image> -->
<!-- 暂无用药数据 -->
<!-- </view> -->
<!-- </view> -->
<pagination pagination="{{pagination}}"></pagination>
</view>
</view>

29
src/doctor/pages/d_userInfo/index.scss

@ -20,7 +20,7 @@ page { @@ -20,7 +20,7 @@ page {
flex-shrink: 0;
width: 5em;
font-size: 36rpx;
color: rgba(33, 33, 32, 0.30);
color: rgba(33, 33, 32, 0.3);
line-height: 48rpx;
}
.content {
@ -50,21 +50,14 @@ page { @@ -50,21 +50,14 @@ page {
}
}
.switch-btn {
margin-top: 64rpx;
font-size: 36rpx;
color: rgba(255, 255, 255, 1);
display: flex;
align-items: center;
justify-content: center;
height: 84rpx;
background: rgba(22, 121, 203, 1);
border-radius: 64rpx;
&.logout {
margin-top: 32rpx;
background: #fff;
color: rgba(22, 121, 203, 1);
border: 2rpx solid rgba(22, 121, 203, 1);
}
margin-top: 32px;
padding: 24rpx 20rpx;
border-radius: 12rpx;
background: linear-gradient(90deg, #293b9f 0%, #1679cb 100%);
font-size: 32rpx;
color: #ffffff;
text-align: center;
line-height: 48rpx;
}
}
@ -152,7 +145,7 @@ page { @@ -152,7 +145,7 @@ page {
display: flex;
justify-content: center;
align-items: center;
background: linear-gradient( 90deg, #293B9F 0%, #1679CB 100%);
background: linear-gradient(90deg, #293b9f 0%, #1679cb 100%);
font-size: 36rpx;
color: #fff;
border-radius: 12rpx;
@ -185,7 +178,7 @@ page { @@ -185,7 +178,7 @@ page {
display: flex;
justify-content: center;
align-items: center;
background: linear-gradient( 90deg, #293B9F 0%, #1679CB 100%);
background: linear-gradient(90deg, #293b9f 0%, #1679cb 100%);
font-size: 36rpx;
color: #fff;
border-radius: 12rpx;

8
src/doctor/pages/d_userInfo/index.wxml

@ -11,6 +11,14 @@ @@ -11,6 +11,14 @@
<view class="content">{{doctor.Name}}</view>
</view>
<view class="row">
<view class="label">科室</view>
<view class="content">{{doctor.Department || '暂无'}}</view>
</view>
<view class="row">
<view class="label">职称</view>
<view class="content">{{doctor.JobTitle || '暂无'}}</view>
</view>
<view class="row">
<view class="label">电话</view>
<view class="content">{{doctor.Telephone}}</view>
</view>

BIN
src/images/bg15.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

BIN
src/images/bg28.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 KiB

After

Width:  |  Height:  |  Size: 167 KiB

BIN
src/images/bg29.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 468 KiB

BIN
src/images/icon84.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
src/images/icon85.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 827 B

BIN
src/images/icon99.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 877 B

BIN
src/images/kkd1.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 156 KiB

8
src/pages/enterInfo/index.ts

@ -96,7 +96,7 @@ Page({ @@ -96,7 +96,7 @@ Page({
if (this.data.submiting) return
app.mpBehavior({ PageName: 'BTN_PATIENTINFONEXT' })
const { name, gender, ageRange, diagnosisTimeRange, relationType } = this.data
const { registrationSource, registChannel, regBusinessId, WorkerId, IsAliQiWei } = app.globalData
const { registrationSource, registChannel, regBusinessId, WorkerId } = app.globalData
const { doctorId, inviteChan, recDoctorId: recommendDoctorId } = app.globalData.scene
let toast = ''
if (!gender) toast = '请选择性别'
@ -122,16 +122,12 @@ Page({ @@ -122,16 +122,12 @@ Page({
gender,
ageRange,
diagnosisTimeRange,
// birth,
// diagnoseType,
// diagnosisTime,
relationType,
registrationSource,
registChannel,
regBusinessId,
WorkerId,
inviteChannel: inviteChan,
IsAliQiWei,
inviteDoctorId: recommendDoctorId ? '' : doctorId,
recommendDoctorId: recommendDoctorId ? doctorId : '',
beRecommendDoctorId: recommendDoctorId,
@ -143,7 +139,7 @@ Page({ @@ -143,7 +139,7 @@ Page({
app.globalData.scene.recDoctorId = ''
app.getUserInfo(this, true, () => {
wx.reLaunch({
url: navUrl,
url: `/pages/qaForm/index?backPage=${encodeURIComponent(navUrl)}`,
})
this.setData({
submiting: false,

2
src/pages/enterInfo/index.wxml

@ -71,7 +71,7 @@ @@ -71,7 +71,7 @@
</view>
</view>
<view class="footer">
<view bind:tap="handleSubmit" class="next">立即进入</view>
<view bind:tap="handleSubmit" class="next">下一步</view>
</view>
</view>

13
src/pages/index/index.scss

@ -60,9 +60,10 @@ page { @@ -60,9 +60,10 @@ page {
font-size: 26rpx;
color: rgba(34, 34, 34, 0.7);
display: flex;
align-items: baseline;
align-items: center;
justify-content: center;
line-height: 1;
gap: 10rpx;
.num {
font-size: 36rpx;
color: #0eb66d;
@ -73,16 +74,18 @@ page { @@ -73,16 +74,18 @@ page {
}
}
.page-container {
margin-top: -38rpx;
width: 100%;
box-sizing: border-box;
padding-bottom: 180rpx;
.module-title:first-of-type {
margin-top: 0;
}
.kkd {
margin: 0 $page-margin 80rpx;
display: flex;
gap: 30rpx;
.k-item {
height: 172rpx;
display: block;
width: 100%;
height: 190rpx;
}
}

40
src/pages/index/index.ts

@ -38,6 +38,8 @@ Page({ @@ -38,6 +38,8 @@ Page({
options: {} as any,
firstLogin: '',
nextVisitDays: '--',
},
onLoad(options) {
const systemInfo = wx.getSystemInfoSync()
@ -60,6 +62,7 @@ Page({ @@ -60,6 +62,7 @@ Page({
userInfo,
})
this.updateGreeting()
this.updateNextVisitDays(userInfo)
if (this.data.firstLogin != '1' || userInfo.EntryFourPeriod != 1) {
this.getPopup()
} else {
@ -101,6 +104,14 @@ Page({ @@ -101,6 +104,14 @@ Page({
})
})
},
updateNextVisitDays(userInfo: any) {
if (userInfo.NextVisitDate) {
const diff = dayjs(userInfo.NextVisitDate).diff(dayjs(), 'day')
this.setData({ nextVisitDays: diff >= 0 ? diff : 0 })
} else {
this.setData({ nextVisitDays: '--' })
}
},
updateGreeting() {
const hour = new Date().getHours()
let greeting = '晚上好'
@ -416,33 +427,6 @@ Page({ @@ -416,33 +427,6 @@ Page({
regGuide: false,
})
},
handleStoryView(e: any) {
const { id } = e.currentTarget.dataset
wx.navigateTo({
url: `/pages/publishStoryDetail/index?id=${id}`,
})
},
handleStorySave(e: any) {
const { id, saved } = e.currentTarget.dataset
wx.ajax({
method: 'POST',
url: '?r=igg4/story/save',
data: {
id,
isSave: saved ? 0 : 1,
},
}).then(() => {
const { storyList } = this.data
const newList = storyList.map((page: any) =>
page.map((item: any) => (item.Id === id ? { ...item, IsSave: saved ? 0 : 1 } : item)),
)
this.setData({ storyList: newList })
wx.showToast({
title: saved ? '已取消收藏' : '收藏成功',
icon: 'none',
})
})
},
handleArticleView(e: any) {
const { id } = e.currentTarget.dataset
wx.navigateTo({
@ -463,7 +447,7 @@ Page({ @@ -463,7 +447,7 @@ Page({
}).then(() => {
const { infoList } = this.data
const newList = infoList.map((page: any) =>
page.map((item: any) => (item.ArticleId === id ? { ...item, IsSave: saved ? 0 : 1 } : item)),
page.map((item: any) => (item.ArticleId === id ? { ...item, IsCollect: saved ? 0 : 1 } : item)),
)
this.setData({ infoList: newList })
wx.showToast({

13
src/pages/index/index.wxml

@ -13,10 +13,12 @@ @@ -13,10 +13,12 @@
<view
wx:if="{{userInfo.UserType>=3}}"
class="day"
bind:tap="routerTo"
data-url="/pages/signIn/index"
style="background: url('{{imageUrl}}{{theme === 'DRUG' ? 'bg22' : 'bg15'}}.png?t={{Timestamp}}') no-repeat top center/100%"
>
<view class="d-content">
<view class="num">{{userInfo.JoinDays}}</view>
<view class="num">{{nextVisitDays}}</view>
</view>
</view>
@ -140,7 +142,7 @@ @@ -140,7 +142,7 @@
>
<view class="cover">
<image class="photo" mode="aspectFill" src="{{item.TitlePicLink}}"></image>
<view class="label">{{item.CateName}}</view>
<view class="label" wx:if="{{item.CateName}}">{{item.CateName}}</view>
</view>
<view class="content">
<view class="title">{{item.Title}}</view>
@ -150,15 +152,15 @@ @@ -150,15 +152,15 @@
<block wx:if="{{~~item.OpenNum + ~~item.BasicNum}}">{{~~item.OpenNum + ~~item.BasicNum}}</block>
</view>
<view
class="action-btn {{item.IsSave == 1 && 'active'}}"
class="action-btn {{item.IsCollect == 1 && 'active'}}"
catch:tap="handleArticleSave"
data-id="{{item.ArticleId}}"
data-saved="{{item.IsSave}}"
data-saved="{{item.IsCollect}}"
>
<image
class="action-icon"
mode="aspectFit"
src="{{imageUrl}}{{item.IsSave ? '1/save-active-plan.png' : '1/save.png'}}?t={{Timestamp}}"
src="{{imageUrl}}{{item.IsCollect ? '1/save-active-plan.png' : '1/save.png'}}?t={{Timestamp}}"
></image>
<block wx:if="{{~~item.CollectionPeopleNum}}">{{item.CollectionPeopleNum}}</block>
</view>
@ -177,7 +179,6 @@ @@ -177,7 +179,6 @@
bind:tap="routerTo"
data-url="/pages/doctor/index"
></image>
<image class="k-item" src="{{imageUrl}}{{theme === 'DRUG' ? 'kkd4' : 'kkd2'}}.png?t={{Timestamp}}"></image>
</view>
</view>

11
src/pages/interactivePatient/index.scss

@ -102,7 +102,7 @@ page { @@ -102,7 +102,7 @@ page {
margin-bottom: 0;
}
.order {
margin-top: 6rpx;
margin-top: 10rpx;
flex-shrink: 0;
width: 28rpx;
height: 28rpx;
@ -241,10 +241,10 @@ page { @@ -241,10 +241,10 @@ page {
}
.content {
padding: 26rpx 32rpx;
background: rgba(248, 248, 248, 1);
background: rgba(14, 182, 109, 1);
border-radius: 32rpx;
font-size: 36rpx;
color: rgba(33, 33, 32, 1);
color: rgba(255, 255, 255, 1);
white-space: pre-line;
}
}
@ -525,4 +525,9 @@ page { @@ -525,4 +525,9 @@ page {
background: linear-gradient(270deg, #5956e9 0%, #b384f4 100%);
}
}
.p-container{
.content{
background-color: rgba(109, 106, 236, 1);
}
}
}

2
src/pages/interactivePatient/index.ts

@ -408,7 +408,7 @@ Page({ @@ -408,7 +408,7 @@ Page({
},
handleQol() {
wx.navigateTo({
url: '/pages/adl/index',
url: '/pages/qaForm/index',
})
},
handlePopupOk() {

1
src/pages/login/index.wxml

@ -1,5 +1,4 @@ @@ -1,5 +1,4 @@
<view class="page" id="{{theme === 'DRUG' && 'drug-page'}}">
<image class="bg" mode="widthFix" src="{{imageUrl}}1/login-bg.png?t={{Timestamp}}"></image>
<image src="/src{{imageUrl}}bg1.png?t={{Timestamp}}"></image>
<view class="container">
<image class="frame" src="{{imageUrl}}bg18.png?t={{Timestamp}}"></image>

4
src/pages/my/index.wxml

@ -27,9 +27,9 @@ @@ -27,9 +27,9 @@
<image class="icon" src="{{imageUrl}}{{theme === 'DRUG' ? 'icon71' : 'icon62'}}.png?t={{Timestamp}}"></image>
<view class="name">健康档案</view>
</view>
<view bind:tap="routerVipTo" class="item">
<view bind:tap="routerTo" class="item" data-url="/pages/signIn/index">
<image class="icon" src="{{imageUrl}}{{theme === 'DRUG' ? 'icon72' : 'icon63'}}.png?t={{Timestamp}}"></image>
<view class="name">用药提醒</view>
<view class="name">复诊提醒</view>
</view>
</view>
<view class="options-list">

2
src/pages/qaForm/index.json

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
{
"navigationBarTitleText": "问卷",
"navigationBarTitleText": "健康档案",
"usingComponents": {}
}

2
src/pages/qaForm/index.scss

@ -45,7 +45,7 @@ page { @@ -45,7 +45,7 @@ page {
&.active {
border-color: #0eb66d;
.check-icon {
border-color: transparent;
border: none;
background: linear-gradient(94deg, #0eb66d 0%, #00d277 100%);
.icon-inner {
opacity: 1;

13
src/pages/qaForm/index.ts

@ -23,9 +23,13 @@ Page({ @@ -23,9 +23,13 @@ Page({
hasSubmitted: false,
latestSubmitTime: '',
isSubmitting: false,
backPage: '',
},
onLoad() {
onLoad(options) {
this.setData({
backPage: options.backPage || '',
})
app.waitLogin().then(() => {
this.getQuestionnaire()
})
@ -170,8 +174,13 @@ Page({ @@ -170,8 +174,13 @@ Page({
})
.then(() => {
wx.showToast({ title: '提交成功', icon: 'success' })
const { backPage } = this.data
setTimeout(() => {
wx.navigateBack()
if (backPage) {
wx.reLaunch({ url: decodeURIComponent(backPage) })
} else {
wx.navigateBack()
}
}, 1500)
})
.finally(() => {

7
src/pages/signIn/index.json

@ -1,4 +1,7 @@ @@ -1,4 +1,7 @@
{
"navigationBarTitleText": "报名",
"usingComponents": {}
"navigationStyle": "custom",
"usingComponents": {
"navBar": "/components/navBar/navBar",
"van-icon": "@vant/weapp/icon/index"
}
}

169
src/pages/signIn/index.scss

File diff suppressed because one or more lines are too long

99
src/pages/signIn/index.ts

@ -1,77 +1,50 @@ @@ -1,77 +1,50 @@
const app = getApp<IAppOption>();
const app = getApp<IAppOption>()
Page({
data: {
id: "",
detail: {} as any,
codeUrl: "",
currentVisitDate: '',
nextVisitDate: '',
},
onShow() {
app.waitLogin().then(() => {
// const options = wx.getEnterOptionsSync();
const scene = app.globalData.scene;
if (scene.id) {
app.waitLogin({}).then(() => {
app.getUserInfo(this, true, (userInfo) => {
this.setData({
id: scene.id,
});
}
app.permissionVerification(3, 1, `/pages/liveDetail/index?id=${this.data.id}`, this.data.id).then(() => {
this.getCode();
this.signIn();
this.getDetail();
});
});
currentVisitDate: userInfo.CurrentVisitDate || '',
nextVisitDate: userInfo.NextVisitDate || '',
})
})
})
},
signIn() {
wx.ajax({
method: "POST",
url: "?r=igg4/activity/sign-in",
data: {
Id: this.data.id,
},
showMsg: false,
}).then(() => {
this.getDetail();
});
handleCurrentVisitDateChange(e: any) {
this.setData({
currentVisitDate: e.detail.value,
})
},
getDetail() {
wx.ajax({
method: "GET",
url: "?r=igg4/activity/sign-in-detail",
data: {
Id: this.data.id,
},
}).then((res) => {
this.setData({
detail: res,
});
});
handleNextVisitDateChange(e: any) {
this.setData({
nextVisitDate: e.detail.value,
})
},
getCode() {
const { registChannel } = app.globalData;
handleSubmit() {
const { currentVisitDate, nextVisitDate } = this.data
if (!currentVisitDate && !nextVisitDate) {
wx.showToast({ icon: 'none', title: '请选择就诊时间' })
return
}
wx.ajax({
method: "GET",
url: "?r=igg4/common/get-channel-wx-code",
method: 'POST',
url: '?r=igg4/account/update-visit-date',
data: {
Id: this.data.id,
ChannelType: registChannel,
CurrentVisitDate: currentVisitDate,
NextVisitDate: nextVisitDate,
},
}).then((res) => {
this.setData({
codeUrl: res,
});
});
},
handleHome() {
wx.reLaunch({
url: "/pages/index/index",
});
loading: true,
}).then(() => {
wx.showToast({ icon: 'none', title: '保存成功' })
app.getUserInfo(this, true)
})
},
onShareAppMessage() {
return {
title: this.detail.ActivityName,
path: `/pages/liveDetail/index?id=${this.data.detail.ActivityId}`,
imageUrl: `${getApp().globalData.imageUrl}1/1.png`,
};
handleBack() {
wx.navigateBack()
},
});
})

57
src/pages/signIn/index.wxml

@ -1,34 +1,29 @@ @@ -1,34 +1,29 @@
<view class="page" id="{{theme === 'DRUG' && 'drug-page'}}">
<image
class="badge"
wx:if="{{detail.IsSignIn==1}}"
mode="aspectFit"
src="{{imageUrl}}1/live-result-success.png?t={{Timestamp}}"
></image>
<image class="badge" wx:else mode="aspectFit" src="{{imageUrl}}1/live-result-warn.png?t={{Timestamp}}"></image>
<block wx:if="{{detail.IsSignIn==1}}">
<view class="status">签到成功</view>
<view class="tip">欢迎您参与此次活动</view>
</block>
<view wx:else class="nostatus">您未报名此活动</view>
<view class="container">
<view class="c-content">
<view class="c-title">
<view>{{detail.ActivityName}}</view>
</view>
<view class="date">
<image class="icon" src="{{imageUrl}}1/date.png?t={{Timestamp}}"></image>
{{detail.BeginTime}}
</view>
<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">关注"愈见昕生"公众号获取活动通知</view>
</block>
<view
class="page"
id="{{theme === 'DRUG' && 'drug-page'}}"
style="background: url('{{imageUrl}}bg29.png?t={{Timestamp}}') no-repeat top center/100%;padding-top: {{pageTop+110}}px;"
>
<navBar background="{{background}}" title="" back bind:back="handleBack" fixed></navBar>
<view class="page-container">
<image class="badge" src="{{imageUrl}}icon84.png?t={{Timestamp}}"></image>
<view class="form">
<view class="form-title">我的本次就诊时间</view>
<picker mode="date" value="{{currentVisitDate}}" bind:change="handleCurrentVisitDateChange">
<view class="date">
<image class="icon" src="{{imageUrl}}icon85.png?t={{Timestamp}}"></image>
<view class="content {{currentVisitDate && 'active'}}">{{currentVisitDate || '请选择'}}</view>
<van-icon name="arrow-down" />
</view>
</picker>
<view class="form-title">我的下次就诊时间</view>
<picker mode="date" value="{{nextVisitDate}}" bind:change="handleNextVisitDateChange">
<view class="date no-margin">
<image class="icon" src="{{imageUrl}}icon85.png?t={{Timestamp}}"></image>
<view class="content {{nextVisitDate && 'active'}}">{{nextVisitDate || '请选择'}}</view>
<van-icon name="arrow-down" />
</view>
</picker>
</view>
</view>
<view class="footer">
<button open-type="share" class="btn" wx:if="{{detail.IsFollow==1}}">邀约好友参与</button>
<view class="btn" bind:tap="handleHome">去首页</view>
</view>
<view class="submit" bind:tap="handleSubmit">提交</view>
</view>

4
src/pages/start/index.ts

@ -4,9 +4,9 @@ Page({ @@ -4,9 +4,9 @@ Page({
data: {},
onLoad() {
app.waitLogin().then((_res) => {
const { isLogin, anyWhere, loginType } = app.globalData
const { isLogin, anyWhere, loginType,scene } = app.globalData
if (isLogin) {
if (loginType == 2) {
if (loginType == 2 && scene?.doctorId) {
wx.reLaunch({
url: '/doctor/pages/d_trans/index',
})

Loading…
Cancel
Save