Browse Source

3.0联调&bug处理

2.0
kola-web 1 week ago
parent
commit
20f3d70262
  1. 1
      src/app.json
  2. 5
      src/components/calendar/theme/theme-geneB.wxss
  3. 11
      src/components/popup/index.scss
  4. 13
      src/components/popup/index.ts
  5. 2
      src/components/popup/index.wxml
  6. 2
      src/components/uploadFile/index.scss
  7. BIN
      src/images/icon99.png
  8. 8
      src/pages/applyFrom/index.wxml
  9. 4
      src/pages/ask/index.scss
  10. 2
      src/patient/pages/askPatient/index.scss
  11. 7
      src/patient/pages/bbmReport/index.scss
  12. 1
      src/patient/pages/bbmReport/index.ts
  13. 2
      src/patient/pages/bbmReport/index.wxml
  14. 6
      src/patient/pages/blood/index.scss
  15. 71
      src/patient/pages/blood/index.ts
  16. 24
      src/patient/pages/blood/index.wxml
  17. 195
      src/patient/pages/bloodAdd/index.ts
  18. 18
      src/patient/pages/bloodAdd/index.wxml
  19. 5
      src/patient/pages/bloodDetail/index.scss
  20. 53
      src/patient/pages/bloodDetail/index.ts
  21. 12
      src/patient/pages/bloodDetail/index.wxml
  22. 5
      src/patient/pages/casesAdd/index.scss
  23. 36
      src/patient/pages/casesAdd/index.ts
  24. 27
      src/patient/pages/casesAdd/index.wxml
  25. 4
      src/patient/pages/coltStat/index.scss
  26. 198
      src/patient/pages/coltStat/index.ts
  27. 62
      src/patient/pages/coltStat/index.wxml
  28. 27
      src/patient/pages/course/index.scss
  29. 15
      src/patient/pages/course/index.ts
  30. 111
      src/patient/pages/course/index.wxml
  31. 36
      src/patient/pages/file/index.scss
  32. 194
      src/patient/pages/file/index.ts
  33. 275
      src/patient/pages/file/index.wxml
  34. 50
      src/patient/pages/followPlan/index.ts
  35. 20
      src/patient/pages/followPlan/index.wxml
  36. 42
      src/patient/pages/index/index.scss
  37. 17
      src/patient/pages/index/index.ts
  38. 58
      src/patient/pages/index/index.wxml
  39. 2
      src/patient/pages/inhibitorsManage/index.scss
  40. 21
      src/patient/pages/inhibitorsManage/index.ts
  41. 14
      src/patient/pages/inhibitorsManage/index.wxml
  42. 6
      src/patient/pages/inhibitorsManageDetail/index.json
  43. 131
      src/patient/pages/inhibitorsManageDetail/index.scss
  44. 87
      src/patient/pages/inhibitorsManageDetail/index.ts
  45. 36
      src/patient/pages/inhibitorsManageDetail/index.wxml
  46. 2
      src/patient/pages/inhibitorsManageList/index.scss
  47. 14
      src/patient/pages/inhibitorsManageList/index.ts
  48. 6
      src/patient/pages/inhibitorsManageList/index.wxml
  49. 1
      src/patient/pages/injectDate/index.ts
  50. 19
      src/patient/pages/lastDiagnosisReport/index.scss
  51. 228
      src/patient/pages/lastDiagnosisReport/index.ts
  52. 147
      src/patient/pages/lastDiagnosisReport/index.wxml
  53. 31
      src/patient/pages/preDiagnosisReport/index.ts
  54. 98
      src/patient/pages/preDiagnosisReport/index.wxml
  55. 2
      src/patient/pages/revisitRecord/index.json
  56. 1
      src/patient/pages/revisitRecord/index.scss
  57. 24
      src/patient/pages/revisitRecord/index.ts
  58. 15
      src/patient/pages/revisitRecord/index.wxml
  59. 17
      src/patient/pages/selectHostipal/index.ts
  60. 2
      src/patient/pages/selectHostipal/index.wxml
  61. 15
      src/utils/page.ts

1
src/app.json

@ -31,6 +31,7 @@ @@ -31,6 +31,7 @@
"pages/injectDate/index",
"pages/inhibitorsManageList/index",
"pages/inhibitorsManage/index",
"pages/inhibitorsManageDetail/index",
"pages/file/index",
"pages/coltStat/index",
"pages/preDiagnosisReport/index",

5
src/components/calendar/theme/theme-geneB.wxss

@ -17,6 +17,11 @@ @@ -17,6 +17,11 @@
background-color: rgba(255, 237, 235, 1);
}
.geneb_today.geneb_choosed {
color: #fff;
background-color: rgba(246, 74, 58, 1);
}
.geneb_date-disable {
color: #c7c7c7;
}

11
src/components/popup/index.scss

@ -447,6 +447,7 @@ @@ -447,6 +447,7 @@
border: none;
}
.radio {
flex-shrink: 0;
width: 32rpx;
height: 32rpx;
background-color: rgba(247, 247, 250, 1);
@ -534,6 +535,10 @@ @@ -534,6 +535,10 @@
text-align: center;
}
.list {
margin-top: 20rpx;
max-height: 40vh;
overflow-y: ayto;
overflow-x: hidden;
.list-item {
padding: 32rpx 0;
display: flex;
@ -1066,19 +1071,19 @@ @@ -1066,19 +1071,19 @@
background: linear-gradient(7deg, #ffffff 19%, #ffe8e4 100%);
border-radius: 24rpx 24rpx 24rpx 24rpx;
box-sizing: border-box;
.title{
.title {
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
text-align: center;
}
.hostipal{
.hostipal {
margin-top: 32rpx;
font-size: 36rpx;
color: rgba(1, 1, 5, 1);
font-weight: bold;
text-align: center;
}
.address{
.address {
margin-top: 12rpx;
text-align: center;
font-size: 28rpx;

13
src/components/popup/index.ts

@ -14,6 +14,17 @@ Component({ @@ -14,6 +14,17 @@ Component({
},
},
},
observers: {
show(val) {
if (val) {
if (this.data.type === 'TCenter') {
this.setData({
TCenterId: this.data.params.hospitalId,
})
}
}
},
},
data: {
popup1Check1: false,
@ -40,7 +51,7 @@ Component({ @@ -40,7 +51,7 @@ Component({
if (type === 'TCenter') {
if (!this.data.TCenterId) {
wx.showToast({
title: '请选择疗中心',
title: '请选择疗中心',
icon: 'none',
})
return

2
src/components/popup/index.wxml

@ -159,7 +159,7 @@ @@ -159,7 +159,7 @@
</view>
<view class="popup9" wx:elif="{{type==='TCenter'}}">
<view class="container">
<view class="title">请选择您的基治疗中心</view>
<view class="title">请选择您的基治疗中心</view>
<view class="list">
<view
class="list-item"

2
src/components/uploadFile/index.scss

@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
height: 180rpx;
position: relative;
line-height: 0;
background-color: rgba(217, 217, 217, 1);
background-color: rgba(247, 247, 250, 1);
border-radius: 12rpx;
display: flex;
align-items: center;

BIN
src/images/icon99.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

8
src/pages/applyFrom/index.wxml

@ -24,7 +24,7 @@ @@ -24,7 +24,7 @@
class="input"
placeholder-class="place-input"
type="text"
placeholder="如何称呼{{Relation == 1 ? '您' : '患者'}}"
placeholder="如何称呼{{Relation == 1 ? '您' : '患者'}}"
/>
</view>
</view>
@ -34,7 +34,9 @@ @@ -34,7 +34,9 @@
<picker mode="date" model:value="{{BirthMonth}}" fields="month">
<view class="picker">
<view class="picker-content">
<view class="picker-text" data-place="请选择{{Relation == 1 ? '您的' : '患者'}}的出生月">{{BirthMonth}}</view>
<view class="picker-text" data-place="请选择{{Relation == 1 ? '您' : '患者'}}的出生月">
{{BirthMonth}}
</view>
<van-icon name="arrow-down" color="rgba(51,51,51,0.73)" />
</view>
</view>
@ -48,7 +50,7 @@ @@ -48,7 +50,7 @@
<view class="picker">
<view class="picker-content">
<!-- prettier-ignore -->
<view class="picker-text" data-place="请选择{{Relation == 1 ? '您' : '患者'}}的所在地区">{{ProvinceName ? ProvinceName+ '/' : ProvinceName }}{{CityName}}</view>
<view class="picker-text" data-place="请选择{{Relation == 1 ? '您' : '患者'}}的所在地区">{{ProvinceName ? ProvinceName+ '/' : ProvinceName }}{{CityName}}</view>
<van-icon name="arrow-down" color="rgba(51,51,51,0.73)" />
</view>
</view>

4
src/pages/ask/index.scss

@ -145,7 +145,7 @@ page { @@ -145,7 +145,7 @@ page {
.message {
margin-bottom: 32rpx;
padding: 26rpx 32rpx;
background: linear-gradient(13deg, #FFFFFF 58.17%, #FFCDCA 156.6%);
background: linear-gradient(13deg, #ffffff 58.17%, #ffcdca 156.6%);
border-radius: 32rpx;
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
@ -529,7 +529,7 @@ page { @@ -529,7 +529,7 @@ page {
display: flex;
justify-content: space-between;
.order {
margin-top: 8rpx;
margin-top: 10rpx;
width: 28rpx;
height: 28rpx;
font-size: 24rpx;

2
src/patient/pages/askPatient/index.scss

@ -395,7 +395,7 @@ page { @@ -395,7 +395,7 @@ page {
display: flex;
justify-content: space-between;
.order {
margin-top: 8rpx;
margin-top: 10rpx;
width: 28rpx;
height: 28rpx;
font-size: 24rpx;

7
src/patient/pages/bbmReport/index.scss

@ -1,6 +1,13 @@ @@ -1,6 +1,13 @@
page {
background-color: rgba(247, 247, 250, 1);
}
.page-tip{
padding: 18rpx;
text-align: center;
font-size: 28rpx;
color: rgba(255, 163, 112, 1);
background-color: rgba(255, 240, 218, 1);
}
.page {
padding: 48rpx 40rpx;
.container {

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

@ -45,6 +45,7 @@ Page({ @@ -45,6 +45,7 @@ Page({
}).then((res) => {
this.setData({
...res,
injectionDate: res.injectionDate || '',
})
})
},

2
src/patient/pages/bbmReport/index.wxml

@ -1,3 +1,4 @@ @@ -1,3 +1,4 @@
<view class="page-tip">此信息仅供参考,请以实际临床医生的专业意见为准</view>
<view class="page">
<view class="container">
<view class="title">BBM-H901输注信息</view>
@ -22,7 +23,6 @@ @@ -22,7 +23,6 @@
model:value="{{injectionWeight}}"
type="number"
placeholder-class="input-place"
type=""
placeholder="请输入"
bindblur="handleWeight"
/>

6
src/patient/pages/blood/index.scss

@ -95,7 +95,6 @@ page { @@ -95,7 +95,6 @@ page {
.row {
padding: 32rpx;
display: flex;
align-items: center;
gap: 16rpx;
border-bottom: 1px solid rgba(247, 247, 250, 1);
.label {
@ -103,10 +102,13 @@ page { @@ -103,10 +102,13 @@ page {
color: rgba(137, 141, 151, 1);
}
.content {
flex: 1;
width: 5em;
font-size: 32rpx;
color: rgba(0, 0, 0, 1);
line-height: 48rpx;
display: flex;
gap: 10rpx;
flex-wrap: wrap;
}
}
.row-resver {

71
src/patient/pages/blood/index.ts

@ -1,11 +1,72 @@ @@ -1,11 +1,72 @@
const _app = getApp<IAppOption>()
const app = getApp<IAppOption>()
Page({
data: {},
onLoad() {},
handleEdit() {
data: {
beginDate: '',
endDate: '',
list: [] as any[],
total: 0,
pagination: {
page: 1,
pages: 1,
count: 1,
},
},
onShow() {
app.waitLogin({ type: 1 }).then(() => {
this.getList()
this.addVisitRecord()
})
},
addVisitRecord() {
wx.ajax({
method: 'POST',
url: '?r=wtx/popup/add-visit-record',
data: {
type: 6,
},
})
},
handleChange() {
const { beginDate, endDate } = this.data
if (beginDate && endDate) {
this.getList(1)
}
},
getList(newPage = 1) {
const { beginDate, endDate } = this.data
wx.ajax({
method: 'GET',
url: '?r=wtx/bleeding/get-list',
data: {
page: newPage,
beginDate,
endDate,
},
}).then((res) => {
const list = res.page === 1 ? res.list : [...this.data.list, ...res.list]
this.setData({
total: res.count,
list,
pagination: {
page: res.page,
pages: res.pages,
count: res.count,
},
})
})
},
onReachBottom() {
const { page, pages } = this.data.pagination
if (pages > page) {
this.getList(page + 1)
}
},
handleEdit(e) {
const { id } = e.currentTarget.dataset
wx.navigateTo({
url: '/patient/pages/bloodDetail/index',
url: `/patient/pages/bloodDetail/index?id=${id}`,
})
},
handleAdd() {

24
src/patient/pages/blood/index.wxml

@ -1,44 +1,46 @@ @@ -1,44 +1,46 @@
<view class="page">
<view class="header">
<view class="range">
<picker class="picker" mode="date">
<picker class="picker" mode="date" end="{{endDate}}" model:value="{{beginDate}}" bind:change="handleChange">
<view class="picker-content">
<view class="content" data-place="开始时间"></view>
<view class="content" data-place="开始时间">{{beginDate}}</view>
<view class="tril"></view>
</view>
</picker>
<picker class="picker" mode="date">
<picker class="picker" mode="date" start="{{beginDate}}" model:value="{{endDate}}" bind:change="handleChange">
<view class="picker-content">
<view class="content" data-place="结束时间"></view>
<view class="content" data-place="结束时间">{{endDate}}</view>
<view class="tril"></view>
</view>
</picker>
</view>
</view>
<view class="list">
<view class="list-item" bind:tap="handleEdit">
<view class="list-item" wx:for="{{list}}" wx:key="recordId" bind:tap="handleEdit" data-id="{{item.recordId}}">
<view class="aside">
<view class="order"></view>
<view class="line"></view>
</view>
<view class="container">
<view class="date">2025.6.15</view>
<view class="date">{{item.bleedingDate}}</view>
<view class="wrap">
<view class="row">
<view class="label">出血关节</view>
<view class="content">左膝 右肘</view>
<view class="content">
<view wx:for="{{item.bleedingPartList}}" wx:for-item="subItem" wx:key="bleedingId">
{{subItem.bleedingPartName}}
</view>
</view>
</view>
<view class="row-resver">
<view class="label">其他情况备注</view>
<view class="content">
症状1、关节积血:血友病比较多见于膝关节,在就是踝、髋、肘、腕、肩以及手足小关节。
性期关节肿痛,局部发发发...
</view>
<view class="content">{{item.remark}}</view>
</view>
</view>
</view>
</view>
<pagination pagination="{{pagination}}"></pagination>
</view>
<image class="add" src="{{imageUrl}}icon53.png?t={{Timestamp}}" bind:tap="handleAdd"></image>
</view>

195
src/patient/pages/bloodAdd/index.ts

@ -1,8 +1,195 @@ @@ -1,8 +1,195 @@
const _app = getApp<IAppOption>();
const app = getApp<IAppOption>()
Page({
data: {},
onLoad() {},
});
data: {
recordId: '',
remark: '',
bleedingDate: '',
bleedingParts: [] as { id: string; name: string }[],
dict: {
parts: {} as any,
},
parts: [
{
top: '94',
left: '-14',
active: false,
},
{
top: '78',
left: '28',
active: false,
},
{
top: '88',
left: '72',
active: false,
},
{
top: '78',
left: '126',
active: false,
},
{
top: '78',
left: '184',
active: false,
},
{
top: '88',
left: '238',
active: false,
},
{
top: '78',
left: '284',
active: false,
},
{
top: '94',
left: '324',
active: false,
},
{
top: '194',
left: '122',
active: false,
},
{
top: '194',
left: '190',
active: false,
},
{
top: '296',
left: '122',
active: false,
},
{
top: '296',
left: '190',
active: false,
},
{
top: '364',
left: '122',
active: false,
},
{
top: '364',
left: '190',
active: false,
},
{
top: '396',
left: '104',
active: false,
},
{
top: '396',
left: '206',
active: false,
},
],
},
onLoad(options) {
this.setData({
recordId: options.id,
})
app.waitLogin({ type: 1 }).then(() => {
this.getDict()
this.getDetail()
})
},
getDetail() {
if (!this.data.recordId) return
wx.ajax({
method: 'GET',
url: '?r=wtx/bleeding/get-detail',
data: {
recordId: this.data.recordId,
},
}).then((res) => {
const parts = this.data.parts
const bleedingParts = res.bleedingPartList.map((item) => {
parts[item.bleedingPart - 1].active = true
return {
id: item.bleedingParts,
name: item.bleedingPartName,
}
})
this.setData({
...res,
bleedingParts,
parts,
})
})
},
getDict() {
wx.ajax({
method: 'GET',
url: '?r=wtx/treatment/get-dict',
data: {},
}).then((res) => {
this.setData({
dict: res,
})
})
},
handlePartSelect(e) {
const { index } = e.currentTarget.dataset
const {
dict: { parts: partsDict },
parts,
} = this.data
parts[index].active = !parts[index].active
const bleedingParts = parts.reduce((pre, cur, index) => {
if (cur.active) {
pre.push({
name: partsDict[index + 1],
id: index + 1,
})
}
return pre
}, [] as any)
this.setData({
parts,
bleedingParts,
})
},
handleSubmit() {
const { recordId, remark, bleedingDate, bleedingParts } = this.data
if (!bleedingDate) {
wx.showToast({
title: '请选择出血日期',
icon: 'none',
})
return
}
if (!bleedingParts.length) {
wx.showToast({
title: '请选择出血部位',
icon: 'none',
})
return
}
wx.ajax({
method: 'POST',
url: '?r=wtx/bleeding/save-record',
data: {
recordId,
remark,
bleedingDate,
bleedingParts: bleedingParts.map((item) => item.id),
},
}).then(() => {
wx.navigateBack()
})
},
handleBack() {
wx.navigateBack()
},
})
export {}

18
src/patient/pages/bloodAdd/index.wxml

@ -3,9 +3,9 @@ @@ -3,9 +3,9 @@
<view class="date-form">
<image class="icon" src="{{imageUrl}}icon52.png?t={{Timestamp}}"></image>
<view class="label">出血日期</view>
<picker class="picker">
<picker class="picker" mode="date" model:value="{{bleedingDate}}">
<view class="picker-content">
<view class="content" data-place="请选择"></view>
<view class="content" data-place="请选择">{{bleedingDate}}</view>
<view class="tril"></view>
</view>
</picker>
@ -21,29 +21,31 @@ @@ -21,29 +21,31 @@
style="background: #fff url({{imageUrl}}body1.png?t={{Timestamp}}) no-repeat top center/345rpx 417rpx"
>
<view
class="part {{index===0 &&'active'}}"
class="part {{item.active && 'active'}}"
wx:for="{{parts}}"
wx:key="index"
bind:tap="handlePartSelect"
data-index="{{index}}"
style="top:{{item.top}}rpx;left:{{item.left}}rpx"
></view>
</view>
<view class="part-name">
<view class="item">左侧手肘</view>
<view class="item">右侧手肘</view>
<view class="item" wx:for="{{bleedingParts}}" wx:key="id">{{item.name}}</view>
</view>
<view class="name">已选择关节</view>
<view class="name" wx:if="{{bleedingParts.length}}">已选择关节</view>
</view>
<view class="card2">
<view class="title">
您近6个月的出血情况
<view class="stat-font">
<text class="num">200</text>
<text class="num">{{remark.length}}</text>
/200
</view>
</view>
<view class="auto-area">
<textarea
class="textarea"
model:value="{{remark}}"
placeholder-class="place-textarea"
disable-default-padding
placeholder="出血频次、出血部位、出血原因等"
@ -53,7 +55,7 @@ @@ -53,7 +55,7 @@
</view>
<view class="footer">
<view class="cancel">取消</view>
<view class="cancel" bind:tap="handleBack">取消</view>
<view class="submit" bind:tap="handleSubmit">完成</view>
</view>
</view>

5
src/patient/pages/bloodDetail/index.scss

@ -10,19 +10,22 @@ page { @@ -10,19 +10,22 @@ page {
.row {
padding: 32rpx 0;
display: flex;
align-items: center;
gap: 48rpx;
border-bottom: 1px solid rgba(247, 247, 250, 1);
&:last-of-type {
border: none;
}
.label {
flex-shrink: 0;
font-size: 32rpx;
color: rgba(137, 141, 151, 1);
}
.content {
font-size: 32rpx;
color: rgba(0, 0, 0, 1);
display: flex;
gap: 20rpx;
flex-wrap: wrap;
}
}
}

53
src/patient/pages/bloodDetail/index.ts

@ -1,11 +1,56 @@ @@ -1,11 +1,56 @@
const _app = getApp<IAppOption>()
const app = getApp<IAppOption>()
Page({
data: {},
onLoad() {},
data: {
recordId: '',
detail: {} as any,
},
onLoad(options) {
this.setData({
recordId: options.id,
})
app.waitLogin({ type: 1 }).then(() => {
this.getDetail()
})
},
getDetail() {
wx.ajax({
method: 'GET',
url: '?r=wtx/bleeding/get-detail',
data: {
recordId: this.data.recordId,
},
}).then((res) => {
this.setData({
detail: res,
})
})
},
handleEdit() {
const { recordId } = this.data
wx.navigateTo({
url: '/patient/pages/bloodAdd/index',
url: `/patient/pages/bloodAdd/index?id=${recordId}`,
})
},
handleDel() {
const { recordId } = this.data
wx.showModal({
title: '确认删除?',
confirmColor: 'rgba(246, 74, 58, 1)',
success: (res) => {
if (res.confirm) {
wx.ajax({
method: 'POST',
url: '?r=wtx/bleeding/del',
data: {
recordId,
},
}).then(() => {
wx.navigateBack()
})
}
},
})
},
})

12
src/patient/pages/bloodDetail/index.wxml

@ -2,22 +2,26 @@ @@ -2,22 +2,26 @@
<view class="card1">
<view class="row">
<view class="label">出血日期</view>
<view class="content">2025-12-12</view>
<view class="content">{{detail.bleedingDate}}</view>
</view>
<view class="row">
<view class="label">出血关节</view>
<view class="content">左膝 右肘</view>
<view class="content">
<view class="item" wx:for="{{detail.bleedingPartList}}" wx:for-item="subItem" wx:key="bleedingId">
{{subItem.bleedingPartName}}
</view>
</view>
</view>
</view>
<view class="card2">
<view class="title">其他情况备注</view>
<view class="content">
症状1、关节积血:血友病比较多见于膝关节,在就是踝、髋、肘、腕、肩以及手足小关节。 性期关节肿痛,局部发
{{detail.remark}}
</view>
</view>
<view class="footer">
<view class="cancel">删除</view>
<view class="cancel" bind:tap="handleDel">删除</view>
<view class="submit" bind:tap="handleEdit">编辑</view>
</view>
</view>

5
src/patient/pages/casesAdd/index.scss

@ -204,13 +204,13 @@ page { @@ -204,13 +204,13 @@ page {
width: 100%;
padding-bottom: 0;
}
.tip{
.tip {
margin-top: 16rpx;
font-size: 28rpx;
color: rgba(161, 164, 172, 1);
line-height: 40rpx;
}
.container{
.container {
margin-bottom: 10rpx;
}
}
@ -411,7 +411,6 @@ page { @@ -411,7 +411,6 @@ page {
}
}
.footer {
margin-top: 32rpx;
flex-shrink: 0;
display: flex;
align-items: center;

36
src/patient/pages/casesAdd/index.ts

@ -138,6 +138,7 @@ Page({ @@ -138,6 +138,7 @@ Page({
},
],
},
time: 0,
onShow() {
const casesCache = wx.getStorageSync('casesCache')
app.waitLogin().then(() => {
@ -162,6 +163,28 @@ Page({ @@ -162,6 +163,28 @@ Page({
onHide() {
this.updateSave()
},
handleInput(e) {
const { key, length } = e.currentTarget.dataset
const value = e.detail.value
this.setData({
[`${key}`]: this.validateInput(value, length),
})
},
validateInput(val, integerLimit) {
let num = val.toString()
// 清除“数字”和“.”以外的字符
num = num.replace(/[^\d.]/g, '')
// 只保留第一个.,清除多余的
num = num.replace(/\.{2,}/g, '.')
// 限制整数位位数
const index = num.indexOf('.')
if (index !== -1) {
num = num.slice(0, index + integerLimit + 1)
} else {
num = num.slice(0, integerLimit)
}
return num
},
getDict() {
wx.ajax({
method: 'GET',
@ -255,9 +278,21 @@ Page({ @@ -255,9 +278,21 @@ Page({
popupType: 'casesAddComplete',
popupParams: { close: true },
})
this.time = setTimeout(() => {
wx.navigateBack()
})
} else {
this.handlePrevUpdate()
}
})
},
handlePrevUpdate() {
const pages = getCurrentPages()
const currentPage = pages[pages.length - 1]
if (currentPage && currentPage.handleUpdate) {
currentPage.handleUpdate()
}
},
handleBack() {
wx.navigateBack()
},
@ -281,6 +316,7 @@ Page({ @@ -281,6 +316,7 @@ Page({
handlePopupCancel() {
const { popupType } = this.data
if (popupType === 'casesAddComplete') {
clearTimeout(this.time)
wx.navigateBack()
this.setData({
popupShow: false,

27
src/patient/pages/casesAdd/index.wxml

@ -50,9 +50,12 @@ @@ -50,9 +50,12 @@
<view class="input-wrap">
<input
class="input"
model:value="{{weight}}"
value="{{weight}}"
placeholder-class="place-input"
type="number"
bind:input="handleInput"
data-key="weight"
data-length="3"
type="digit"
placeholder="请输入"
/>
<view class="unit">kg</view>
@ -67,9 +70,12 @@ @@ -67,9 +70,12 @@
<view class="input-wrap">
<input
class="input"
model:value="{{clottingFactor}}"
value="{{clottingFactor}}"
placeholder-class="place-input"
type="number"
type="digit"
bind:input="handleInput"
data-key="clottingFactor"
data-length="3"
placeholder="请输入"
/>
<view class="unit">%</view>
@ -101,9 +107,12 @@ @@ -101,9 +107,12 @@
<view class="input-wrap">
<input
class="input"
model:value="{{fixExposureDay}}"
value="{{fixExposureDay}}"
placeholder-class="place-input"
type="number"
type="digit"
bind:input="handleInput"
data-key="fixExposureDay"
data-length="5"
placeholder="请输入"
/>
<view class="unit">个</view>
@ -115,7 +124,7 @@ @@ -115,7 +124,7 @@
</scroll-view>
<view class="footer">
<view class="cancel" bind:tap="handleBack">取消</view>
<view class="submit" bind:tap="handleNext" data-value="{{1}}">下一步</view>
<view class="submit" bind:tap="handleNext" data-value="{{1}}">下一步</view>
</view>
</swiper-item>
<swiper-item class="swiper-item">
@ -245,7 +254,7 @@ @@ -245,7 +254,7 @@
</scroll-view>
<view class="footer">
<view class="cancel" bind:tap="handlePrev" data-value="{{0}}">上一步</view>
<view class="submit" bind:tap="handleNext" data-value="{{2}}">下一步</view>
<view class="submit" bind:tap="handleNext" data-value="{{2}}">下一步</view>
</view>
</swiper-item>
<swiper-item class="swiper-item">
@ -295,7 +304,7 @@ @@ -295,7 +304,7 @@
</view>
</scroll-view>
<view class="footer">
<view class="cancel" bind:tap="handlePrev" data-value="{{1}}">上一步</view>
<view class="cancel" bind:tap="handlePrev" data-value="{{1}}">上一步</view>
<view class="submit" bind:tap="updateSave" data-back="{{true}}">完成</view>
</view>
</swiper-item>

4
src/patient/pages/coltStat/index.scss

@ -235,7 +235,6 @@ page { @@ -235,7 +235,6 @@ page {
.date {
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
font-weight: bold;
padding-bottom: 16rpx;
}
.wrap {
@ -260,7 +259,7 @@ page { @@ -260,7 +259,7 @@ page {
}
}
.progress {
width: 118rpx;
min-width: 148rpx;
height: 88rpx;
display: flex;
align-items: center;
@ -311,7 +310,6 @@ page { @@ -311,7 +310,6 @@ page {
.date {
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
font-weight: bold;
padding-bottom: 16rpx;
}
.wrap {

198
src/patient/pages/coltStat/index.ts

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
const _app = getApp<IAppOption>()
const app = getApp<IAppOption>()
const echarts = require('@/components/ec-canvas/echarts.js')
const licia = require('miniprogram-licia')
import dayjs from 'dayjs'
@ -33,18 +33,90 @@ Page({ @@ -33,18 +33,90 @@ Page({
highlightToday: true,
onlyShowCurrentMonth: true,
disableMode: {
type: 'after', // [‘before’, 'after']
type: 'after',
},
},
tabActve: 1,
tabActve: 2,
iDays: '',
list2: [] as any[],
total2: 0,
pagination2: {
page: 1,
pages: 1,
count: 1,
},
list3: [] as any[],
total3: 0,
pagination3: {
page: 1,
pages: 1,
count: 1,
},
},
ecDataTrendComponent: null as any,
onLoad() {
this.ecDataTrendComponent = this.selectComponent('#mychart-dom-bar')
this.initChart()
},
handleUpdate() {
this.getDetail()
this.getList()
},
addVisitRecord() {
wx.ajax({
method: 'POST',
url: '?r=wtx/popup/add-visit-record',
data: {
type: 4,
},
})
},
getDetail() {
const rangeDate = this.getRangeDate()
wx.ajax({
method: 'GET',
url: '?r=wtx/treatment/get-health',
data: {
...rangeDate,
},
}).then((res) => {
console.log('res: ', res)
this.setCalendarTodos({ bleedDate: res.examDateList, injectionDate: res.bleedDateList })
const astList = {}
const altList = {}
const cfRecordList = {}
res.astList = res.astList || []
res.altList = res.altList || []
res.cfRecordList = res.cfRecordList || []
res.astList.forEach((item: any) => {
astList[item.beginDate] = item.ast
})
res.altList.forEach((item: any) => {
altList[item.beginDate] = item.alt
})
res.cfRecordList.forEach((item: any) => {
cfRecordList[item.beginDate] = item.clottingFactor
})
const initParams = {
astList,
altList,
cfRecordList,
}
this.initChart(initParams, rangeDate)
})
},
getRangeDate() {
const calendar = this.selectComponent('#calendar').calendar
const dates = calendar.getCalendarDates()
console.log('DEBUGPRINT[96]: index.ts:69: dates=')
return {
beginDate: `${dates[0].year}-${dates[0].month}-${dates[0].date}`,
endDate: `${dates.at(-1).year}-${dates.at(-1).month}-${dates.at(-1).date}`,
}
},
setCalendarTodos({ bleedDate = [], injectionDate = [] }: { bleedDate: any[]; injectionDate: string[] }) {
const calendar = this.selectComponent('#calendar').calendar
const dates: any[] = []
@ -52,10 +124,6 @@ Page({ @@ -52,10 +124,6 @@ Page({
const filterAdlDate = bleedDate.filter((item) => !intersectDate.includes(item))
const filterMedication = injectionDate.filter((item) => !intersectDate.includes(item))
console.log(filterAdlDate)
console.log(filterMedication)
console.log(intersectDate)
filterAdlDate.forEach((Date: string) => {
dates.push({
year: Date.split('-')[0],
@ -99,9 +167,13 @@ Page({ @@ -99,9 +167,13 @@ Page({
month,
},
})
app.waitLogin().then(() => {
this.addVisitRecord()
this.handleUpdate()
})
this.handleIsDisableRight()
},
onSwipe(e) {
onSwipe() {
const calendar = this.selectComponent('#calendar').calendar
const { year, month } = calendar.getCurrentYM()
this.setData({
@ -110,20 +182,9 @@ Page({ @@ -110,20 +182,9 @@ Page({
month,
},
})
this.handleUpdate()
this.handleIsDisableRight()
},
takeoverTap(e) {
console.log('e: ', e)
const date = `${e.detail.year}-${e.detail.month}-${e.detail.date}`
this.setData({
toastShow: true,
toastType: 'myHealthRecord',
toastParams: {
date: dayjs(date).format('YYYY-MM-DD'),
week: dayjs(date).format('dddd'),
},
})
},
handleCalendarSwitch(e: any) {
const { type } = e.currentTarget.dataset
const calendar = this.selectComponent('#calendar').calendar
@ -163,8 +224,8 @@ Page({ @@ -163,8 +224,8 @@ Page({
beginDate: dayjs(`${year}-${month}-01`).startOf('month').format('YYYY-MM-DD'),
endDate: dayjs(`${year}-${month}-01`).endOf('month').format('YYYY-MM-DD'),
})
this.handleUpdate()
this.handleIsDisableRight()
this.getMark()
},
handleCalendarCurrent() {
const calendar = this.selectComponent('#calendar').calendar
@ -181,6 +242,7 @@ Page({ @@ -181,6 +242,7 @@ Page({
month,
},
})
this.handleUpdate()
this.handleIsDisableRight()
},
handleCalendarMore() {
@ -211,6 +273,7 @@ Page({ @@ -211,6 +273,7 @@ Page({
this.setData({
['calendarConfig.weekMode']: !weekMode,
})
this.handleUpdate()
},
handleIsDisableRight() {
const { year, month } = this.data.calendarCurrent
@ -228,8 +291,17 @@ Page({ @@ -228,8 +291,17 @@ Page({
})
}
},
initChart(defaultList = []) {
initChart({ altList = {}, astList = {}, cfRecordList = {} }, rangeDate) {
const arr = this.generateDateArray(rangeDate.beginDate, rangeDate.endDate)
console.log('DEBUGPRINT[99]: index.ts:263: arr=', arr)
const astArr: string[] = []
const altArr: string[] = []
const cfRecordArr: string[] = []
arr.forEach((item: any) => {
astArr.push(astList[item] || 0)
altArr.push(altList[item] || 0)
cfRecordArr.push(cfRecordList[item] || 0)
})
this.ecDataTrendComponent.init((canvas, width, height, dpr) => {
let chart = echarts.init(canvas, null, {
width: width,
@ -242,10 +314,8 @@ Page({ @@ -242,10 +314,8 @@ Page({
dataZoom: [
{
type: 'inside', // 内置于坐标系中
// start: 0,
// end: 15,
startValue: 0,
endValue: 15,
endValue: 7,
xAxisIndex: [0],
},
],
@ -299,7 +369,7 @@ Page({ @@ -299,7 +369,7 @@ Page({
color: 'rgba(137, 141, 151, 0.23)',
},
},
data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月'],
data: arr,
},
yAxis: [
{
@ -351,7 +421,7 @@ Page({ @@ -351,7 +421,7 @@ Page({
series: [
{
name: 'AST天门冬氨酸氨基转移酶',
data: [150, 230, 224, 218, 135, 147, 260],
data: astArr,
type: 'line',
lineStyle: { width: 4 },
symbolSize: 6,
@ -373,7 +443,7 @@ Page({ @@ -373,7 +443,7 @@ Page({
{
name: 'ALT丙氨酸氨基转移酶',
yAxisIndex: 0,
data: [100, 210, 124, 118, 235, 247, 160],
data: altList,
type: 'line',
lineStyle: { width: 4 },
symbolSize: 6,
@ -395,7 +465,7 @@ Page({ @@ -395,7 +465,7 @@ Page({
{
name: '凝血因子水平',
yAxisIndex: 1,
data: [50, 30, 24, 18, 35, 47, 60],
data: cfRecordArr,
type: 'line',
lineStyle: { width: 4 },
symbolSize: 6,
@ -429,12 +499,76 @@ Page({ @@ -429,12 +499,76 @@ Page({
return chart
})
},
generateDateArray(startDate, endDate) {
const dates: string[] = []
let currentDate = dayjs(startDate)
handleTab(e) {
while (currentDate.isBefore(dayjs(endDate).add(1, 'day'))) {
dates.push(currentDate.format('YYYY-MM-DD'))
currentDate = currentDate.add(1, 'day')
}
return dates
},
handleTab(e: any) {
const { active } = e.currentTarget.dataset
this.setData({
tabActve: active,
})
this.getList(1)
},
handleFile() {
wx.navigateTo({
url: '/patient/pages/file/index',
})
},
getList(newPage = 1) {
const { tabActve } = this.data
const dateRange = this.getRangeDate()
wx.ajax({
method: 'GET',
url: '?r=wtx/treatment/get-health-exam-list',
data: {
examType: tabActve,
page: newPage,
...dateRange,
},
}).then((res) => {
res.list = res.list.map((item) => {
return {
...item,
beginDate: item.beginDate ? dayjs(item.beginDate).format('YYYY.MM.DD') : null,
endDate: item.endDate ? dayjs(item.endDate).format('YYYY.MM.DD') : null,
}
})
if (tabActve == 2) {
const list = res.page === 1 ? res.list : [...this.data.list2, ...res.list]
this.setData({
total2: res.count,
list2: list,
iDays: res.iDays,
pagination2: {
page: res.page,
pages: res.pages,
count: res.count,
},
})
}
if (tabActve == 3) {
const list = res.page === 1 ? res.list : [...this.data.list3, ...res.list]
this.setData({
total3: res.count,
list3: list,
iDays: res.iDays,
pagination3: {
page: res.page,
pages: res.pages,
count: res.count,
},
})
}
})
},
handleBack() {
wx.navigateBack()

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

@ -36,7 +36,6 @@ @@ -36,7 +36,6 @@
<view class="calendar">
<calendar
bind:afterCalendarRender="afterCalendarRender"
bind:takeoverTap="takeoverTap"
bind:onSwipe="onSwipe"
config="{{calendarConfig}}"
id="calendar"
@ -46,11 +45,11 @@ @@ -46,11 +45,11 @@
<view class="legend">
<view class="l-item">
<view class="dot dot1"></view>
<view class="name">出血</view>
<view class="name">已复诊</view>
</view>
<view class="l-item">
<view class="dot dot2"></view>
<view class="name">注射</view>
<view class="name">出血</view>
</view>
</view>
<view class="more {{!calendarConfig.weekMode && 'active'}}" bindtap="handleCalendarMore">
@ -65,21 +64,21 @@ @@ -65,21 +64,21 @@
</view>
</view>
<view class="tabs">
<view class="tab {{tabActve===1 && 'active'}}" bind:tap="handleTab" data-active="{{1}}">凝血因子</view>
<view class="tab {{tabActve===2 && 'active'}}" bind:tap="handleTab" data-active="{{2}}">生化检查</view>
<view class="tab {{tabActve===2 && 'active'}}" bind:tap="handleTab" data-active="{{2}}">凝血因子</view>
<view class="tab {{tabActve===3 && 'active'}}" bind:tap="handleTab" data-active="{{3}}">生化检查</view>
</view>
<view class="doc">
<view class="total">
<view class="total" wx:if="{{tabActve===3}}">
已记录
<text class="num">3</text>
<text class="num">{{pagination2.count}}</text>
</view>
<view class="more">
<view class="more" bind:tap="handleFile">
查看档案
<van-icon name="arrow" />
</view>
</view>
<view class="tab1" wx:if="{{tabActve===1}}">
<view class="tab1" wx:if="{{tabActve===2}}">
<view class="tab1-module">
<view class="item">
<view class="icon">
@ -88,7 +87,7 @@ @@ -88,7 +87,7 @@
<view class="wrap">
<view class="name">因子检查</view>
<view class="num">
30
{{pagination2.count}}
<text class="sub">次</text>
</view>
</view>
@ -98,63 +97,54 @@ @@ -98,63 +97,54 @@
<image class="i-img" src="{{imageUrl}}icon58.png?t={{Timestamp}}"></image>
</view>
<view class="wrap">
<view class="name">因子检查</view>
<view class="name">注射后</view>
<view class="num">
30
<text class="sub"></text>
{{iDays || '--'}}
<text class="sub"></text>
</view>
</view>
</view>
</view>
<view class="tab1-list">
<view class="list-item">
<view class="aside">
<view class="order"></view>
<view class="line"></view>
</view>
<view class="container">
<view class="date">2025.6.15</view>
<view class="wrap">
<view class="title">基因中心检查</view>
<view class="progress">13</view>
</view>
</view>
</view>
<view class="list-item">
<view class="list-item" wx:for="{{list2}}" wx:key="index">
<view class="aside">
<view class="order"></view>
<view class="line"></view>
</view>
<view class="container">
<view class="date">2025.6.15</view>
<view class="date" wx:if="{{item.beginDate && item.endDate}}">{{item.beginDate}}~{{item.endDate}}</view>
<view class="date" wx:else>--</view>
<view class="wrap">
<view class="title">基因中心检查</view>
<view class="progress">13</view>
<view class="title">{{item.periodName}}</view>
<view class="progress">{{item.clottingFactor}}</view>
</view>
</view>
</view>
</view>
</view>
<view class="tab2" wx:elif="{{tabActve===2}}">
<view class="tab2" wx:elif="{{tabActve===3}}">
<view class="tab2-list">
<view class="list-item">
<view class="list-item" wx:for="{{list3}}" wx:key="index">
<view class="aside">
<view class="order"></view>
<view class="line"></view>
</view>
<view class="container">
<view class="date">2025.6.15</view>
<view class="date" wx:if="{{item.beginDate && item.endDate}}">{{item.beginDate}}~{{item.endDate}}</view>
<view class="date" wx:else>--</view>
<view class="wrap">
<view class="title">基因中心检查</view>
<view class="title">{{item.periodName}}</view>
<view class="row">
<view class="legend legend1"></view>
<view class="label">AST天门冬氨酸氨基转移酶</view>
<view class="num">40U/L</view>
<view class="num" wx:if="{{item.ast}}">{{item.ast}}U/L</view>
<view class="num" wx:else>--</view>
</view>
<view class="row">
<view class="legend legend2"></view>
<view class="label">ALT丙氨酸氨基转移酶</view>
<view class="num">100U/L</view>
<view class="num" wx:if="{{item.alt}}">{{item.alt}}U/L</view>
<view class="num" wx:else>--</view>
</view>
</view>
</view>

27
src/patient/pages/course/index.scss

@ -118,6 +118,7 @@ @@ -118,6 +118,7 @@
}
}
.icon {
flex-shrink: 0;
width: 40rpx;
height: 40rpx;
}
@ -208,7 +209,15 @@ @@ -208,7 +209,15 @@
}
}
.guide {
.guide1 {
position: fixed;
z-index: 10;
top: 640rpx;
right: 86rpx;
width: 172rpx;
height: 256rpx;
}
.guide2 {
position: fixed;
z-index: 10;
top: 660rpx;
@ -216,3 +225,19 @@ @@ -216,3 +225,19 @@
width: 172rpx;
height: 256rpx;
}
.guide3 {
position: fixed;
z-index: 10;
top: 620rpx;
right: 86rpx;
width: 172rpx;
height: 256rpx;
}
.guide4 {
position: fixed;
z-index: 10;
top: 620rpx;
right: 86rpx;
width: 172rpx;
height: 256rpx;
}

15
src/patient/pages/course/index.ts

@ -16,7 +16,7 @@ Page({ @@ -16,7 +16,7 @@ Page({
periodInfo1: {} as any,
periodInfo2: {} as any,
periodInfo3: {} as any,
periodInfo4: {} as any,
periodInfo4: { followUpWeekInfo: {} } as any,
},
onLoad(options) {
if (options.current) {
@ -27,9 +27,12 @@ Page({ @@ -27,9 +27,12 @@ Page({
},
onShow() {
app.waitLogin({ type: 1 }).then(() => {
this.getPeriodInfo(this.data.current + 1, `periodInfo${this.data.current + 1}`)
this.handleUpdate()
})
},
handleUpdate() {
this.getPeriodInfo(this.data.current + 1, `periodInfo${this.data.current + 1}`)
},
getPeriodInfo(period: number, key: string) {
wx.ajax({
method: 'GET',
@ -47,7 +50,7 @@ Page({ @@ -47,7 +50,7 @@ Page({
this.setData({
current: e.detail.current,
})
this.getPeriodInfo(e.detail.current + 1, `periodInfo${this.data.current + 1}`)
this.handleUpdate()
},
handleSelectHostipal() {
const { periodInfo1 } = this.data
@ -68,6 +71,7 @@ Page({ @@ -68,6 +71,7 @@ Page({
})
},
handleTCenter() {
const { periodInfo1 } = this.data
wx.ajax({
method: 'GET',
url: '?r=wtx/common/get-treatment-center-list',
@ -77,6 +81,7 @@ Page({ @@ -77,6 +81,7 @@ Page({
popupShow: true,
popupType: 'TCenter',
popupParams: {
hospitalId: periodInfo1.hospitalId,
list: res,
},
})
@ -122,7 +127,7 @@ Page({ @@ -122,7 +127,7 @@ Page({
},
handleLastDiagnosisReport() {
wx.navigateTo({
url: '/patient/pages/lastDiagnosisReport/index',
url: `/patient/pages/revisitRecord/index?period=4`,
})
},
handleColtStat() {
@ -164,7 +169,7 @@ Page({ @@ -164,7 +169,7 @@ Page({
handlePopupCancel() {
const { popupType } = this.data
if (popupType === 'TCenterEnd') {
this.getPeriodInfo(this.data.current + 1, `periodInfo${this.data.current + 1}`)
this.handleUpdate()
}
this.setData({
popupShow: false,

111
src/patient/pages/course/index.wxml

@ -1,3 +1,4 @@ @@ -1,3 +1,4 @@
<page-meta page-style="{{ popupShow ? 'overflow: hidden;' : '' }}" />
<navbar fixed custom-style="background:{{background}}" back>
<van-icon name="arrow-left" slot="left" size="18px" color="#000" bind:tap="handleBack" />
</navbar>
@ -8,6 +9,7 @@ @@ -8,6 +9,7 @@
</view>
<view class="page-container">
<swiper class="swiper" current="{{current}}" vertical bindchange="handleSwiperChange">
<!-- 阶段一 -->
<swiper-item class="swiper-item">
<scroll-view class="scroll-view" scroll-y show-scrollbar="{{false}}">
<view class="scroll-view-container">
@ -84,7 +86,7 @@ @@ -84,7 +86,7 @@
<view class="wrap">
<view class="content">3.我的诊前检查报告</view>
</view>
<image class="icon" src="{{imageUrl}}icon31.png?t={{Timestamp}}"></image>
<image class="icon" src="{{imageUrl}}icon30.png?t={{Timestamp}}"></image>
</view>
</view>
</view>
@ -101,6 +103,7 @@ @@ -101,6 +103,7 @@
</view>
</scroll-view>
</swiper-item>
<!-- 阶段二 -->
<swiper-item class="swiper-item">
<scroll-view class="scroll-view" scroll-y show-scrollbar="{{false}}">
<view class="scroll-view-container">
@ -174,6 +177,7 @@ @@ -174,6 +177,7 @@
</view>
</scroll-view>
</swiper-item>
<!-- 阶段三 -->
<swiper-item class="swiper-item">
<scroll-view class="scroll-view" scroll-y show-scrollbar="{{false}}">
<view class="scroll-view-container">
@ -205,7 +209,7 @@ @@ -205,7 +209,7 @@
<view class="container">
<view class="c-body">
<view class="wrap">
<view class="content">1.录入您的注射日</view>
<view class="content">1.{{periodInfo3.injectionDate ? '注射日':'录入您的注射日'}}</view>
<view class="hostipl-name" wx:if="{{periodInfo3.injectionDate}}">
{{periodInfo3.injectionDate}}
</view>
@ -258,7 +262,7 @@ @@ -258,7 +262,7 @@
<view class="wrap">
<view class="content">3.BBM-H901输注记录</view>
</view>
<image class="icon" src="{{imageUrl}}icon31.png?t={{Timestamp}}"></image>
<image class="icon" src="{{imageUrl}}icon30.png?t={{Timestamp}}"></image>
</view>
<view class="c-footer">
<view class="content" wx:if="{{periodInfo3.isInjection == 1}}">已完成</view>
@ -280,7 +284,7 @@ @@ -280,7 +284,7 @@
<view class="c-body">
<view class="wrap">
<view class="content">
4.此次输注结果如何?
4.此次输注感受如何?
<image
wx:if="{{periodInfo3.injectionFeel==1}}"
class="feel"
@ -296,6 +300,11 @@ @@ -296,6 +300,11 @@
class="feel"
src="{{imageUrl}}icon43.png?t={{Timestamp}}"
></image>
<image
wx:else
class="feel"
src="{{imageUrl}}icon49.png?t={{Timestamp}}"
></image>
</view>
</view>
</view>
@ -314,6 +323,7 @@ @@ -314,6 +323,7 @@
</view>
</scroll-view>
</swiper-item>
<!-- 阶段四 -->
<swiper-item class="swiper-item">
<scroll-view class="scroll-view" scroll-y show-scrollbar="{{false}}">
<view class="scroll-view-container">
@ -334,8 +344,12 @@ @@ -334,8 +344,12 @@
<view class="row" bind:tap="handleFollowPlan">
<view class="aside">
<view class="slow-line"></view>
<!-- <image class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image> -->
<image class="radio" src="{{imageUrl}}icon29.png?t={{Timestamp}}"></image>
<image
wx:if="{{periodInfo4.isVisitFollowUp==1}}"
class="radio"
src="{{imageUrl}}icon29.png?t={{Timestamp}}"
></image>
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image>
<view class="line"></view>
</view>
<view class="container">
@ -346,14 +360,33 @@ @@ -346,14 +360,33 @@
<image class="icon" src="{{imageUrl}}icon66.png?t={{Timestamp}}"></image>
</view>
<view class="c-footer">
<view class="content">当前是注射后第3周</view>
<view
class="content"
wx:if="{{periodInfo4.followUpWeekInfo.iYear || periodInfo4.followUpWeekInfo.iWeek}}"
>
当前是注射后
<block wx:if="{{periodInfo4.followUpWeekInfo.iYear}}">
第{{periodInfo4.followUpWeekInfo.iYear}}年
<block wx:if="{{periodInfo4.followUpWeekInfo.iYearDay}}">
第{{periodInfo4.followUpWeekInfo.iYearDay}}天
</block>
</block>
<block wx:if="{{periodInfo4.followUpWeekInfo.iWeek}}">
第{{periodInfo4.followUpWeekInfo.iWeek}}周
</block>
</view>
</view>
</view>
</view>
<view class="row" bind:tap="handleLastDiagnosisReport">
<view class="aside">
<view class="slow-line"></view>
<image class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image>
<image
wx:if="{{periodInfo4.isRevisit==1}}"
class="radio"
src="{{imageUrl}}icon29.png?t={{Timestamp}}"
></image>
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image>
<view class="line"></view>
</view>
<view class="container">
@ -363,15 +396,20 @@ @@ -363,15 +396,20 @@
</view>
<image class="icon" src="{{imageUrl}}icon30.png?t={{Timestamp}}"></image>
</view>
<view class="c-footer">
<view class="content">最近录入:2025-08-01</view>
<view class="c-footer" wx:if="{{periodInfo4.revisitDate}}">
<view class="content">最近录入:{{periodInfo4.revisitDate}}</view>
</view>
</view>
</view>
<view class="row" bind:tap="handleColtStat">
<view class="aside">
<view class="slow-line"></view>
<image class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image>
<image
wx:if="{{periodInfo4.isVisitHealthChange==1}}"
class="radio"
src="{{imageUrl}}icon29.png?t={{Timestamp}}"
></image>
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image>
<view class="line"></view>
</view>
<view class="container">
@ -379,14 +417,19 @@ @@ -379,14 +417,19 @@
<view class="wrap">
<view class="content">3.查看我的健康变化</view>
</view>
<image class="icon" src="{{imageUrl}}icon31.png?t={{Timestamp}}"></image>
<image class="icon" src="{{imageUrl}}icon30.png?t={{Timestamp}}"></image>
</view>
</view>
</view>
<view class="row" bind:tap="handleInhibitorsManage">
<view class="row" bind:tap="handleInhibitorsManage" data-period="4">
<view class="aside">
<view class="slow-line"></view>
<image class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image>
<image
wx:if="{{periodInfo4.isImmune==1}}"
class="radio"
src="{{imageUrl}}icon29.png?t={{Timestamp}}"
></image>
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image>
<view class="line"></view>
</view>
<view class="container">
@ -394,17 +437,22 @@ @@ -394,17 +437,22 @@
<view class="wrap">
<view class="content">4.免疫抑制剂记录</view>
</view>
<image class="icon" src="{{imageUrl}}icon31.png?t={{Timestamp}}"></image>
<image class="icon" src="{{imageUrl}}icon30.png?t={{Timestamp}}"></image>
</view>
<view class="c-footer">
<view class="content">最近录入:2025-08-01</view>
<view class="c-footer" wx:if="{{periodInfo4.immuneDate}}">
<view class="content">最近录入:{{periodInfo4.immuneDate}}</view>
</view>
</view>
</view>
<view class="row" bind:tap="handleBlood">
<view class="aside">
<view class="slow-line"></view>
<image class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image>
<image
wx:if="{{periodInfo4.isBleed==1}}"
class="radio"
src="{{imageUrl}}icon29.png?t={{Timestamp}}"
></image>
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image>
<view class="line"></view>
</view>
<view class="container">
@ -412,10 +460,10 @@ @@ -412,10 +460,10 @@
<view class="wrap">
<view class="content">5.我的出血记录</view>
</view>
<image class="icon" src="{{imageUrl}}icon31.png?t={{Timestamp}}"></image>
<image class="icon" src="{{imageUrl}}icon30.png?t={{Timestamp}}"></image>
</view>
<view class="c-footer">
<view class="content">最近录入:2025-08-01</view>
<view class="c-footer" wx:if="{{periodInfo4.bleedDate}}">
<view class="content">最近录入:{{periodInfo4.bleedDate}}</view>
</view>
</view>
</view>
@ -432,7 +480,26 @@ @@ -432,7 +480,26 @@
</view>
</view>
<image class="guide" src="{{imageUrl}}gif1.gif?t={{Timestamp}}"></image>
<image
class="guide1"
wx:if="{{current==0 && periodInfo1.isEnterPeriod==2}}"
src="{{imageUrl}}gif1.gif?t={{Timestamp}}"
></image>
<image
class="guide2"
wx:if="{{current==1 && periodInfo2.isEnterPeriod==2}}"
src="{{imageUrl}}gif1.gif?t={{Timestamp}}"
></image>
<image
class="guide3"
wx:if="{{current==2 && periodInfo3.isEnterPeriod==2}}"
src="{{imageUrl}}gif1.gif?t={{Timestamp}}"
></image>
<image
class="guide4"
wx:if="{{current==3 && periodInfo4.isEnterPeriod==2}}"
src="{{imageUrl}}gif1.gif?t={{Timestamp}}"
></image>
<popup
show="{{popupShow}}"

36
src/patient/pages/file/index.scss

@ -136,6 +136,11 @@ page { @@ -136,6 +136,11 @@ page {
.fold-icon {
width: 60rpx;
height: 60rpx;
transition: all 0.3s ease;
transform: rotate(0);
&.trun {
transform: rotate(-180deg);
}
}
}
.btn {
@ -148,6 +153,11 @@ page { @@ -148,6 +153,11 @@ page {
border-radius: 96rpx;
}
}
.fold {
transition: height 0.3s ease;
max-height: 0;
overflow: hidden;
}
.c-body {
margin: 24rpx 32rpx 0;
padding: 16rpx 32rpx;
@ -168,6 +178,7 @@ page { @@ -168,6 +178,7 @@ page {
gap: 32rpx;
line-height: 56rpx;
.label {
flex-shrink: 0;
width: 4em;
font-size: 32rpx;
color: rgba(161, 164, 172, 1);
@ -224,9 +235,19 @@ page { @@ -224,9 +235,19 @@ page {
.fold-icon {
width: 60rpx;
height: 60rpx;
transition: all 0.3s ease;
transform: rotate(0);
&.trun {
transform: rotate(-180deg);
}
}
}
}
.fold {
transition: height 0.3s ease;
max-height: 0;
overflow: hidden;
}
.c-body {
margin: 24rpx 32rpx 0;
padding: 16rpx 0 0;
@ -240,6 +261,7 @@ page { @@ -240,6 +261,7 @@ page {
gap: 32rpx;
line-height: 56rpx;
.label {
flex-shrink: 0;
width: 6em;
font-size: 32rpx;
color: rgba(161, 164, 172, 1);
@ -303,9 +325,19 @@ page { @@ -303,9 +325,19 @@ page {
.fold-icon {
width: 60rpx;
height: 60rpx;
transition: all 0.3s ease;
transform: rotate(0);
&.trun {
transform: rotate(-180deg);
}
}
}
}
.fold {
transition: height 0.3s ease;
max-height: 0;
overflow: hidden;
}
.c-body {
margin: 24rpx 32rpx 0;
padding: 16rpx 0 0;
@ -319,6 +351,7 @@ page { @@ -319,6 +351,7 @@ page {
gap: 32rpx;
line-height: 56rpx;
.label {
flex-shrink: 0;
width: 4em;
font-size: 32rpx;
color: rgba(161, 164, 172, 1);
@ -392,6 +425,9 @@ page { @@ -392,6 +425,9 @@ page {
.content {
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
display: flex;
gap: 10rpx;
flex-wrap: wrap;
}
}
.remark {

194
src/patient/pages/file/index.ts

@ -1,8 +1,33 @@ @@ -1,8 +1,33 @@
const _app = getApp<IAppOption>()
import dayjs from 'dayjs'
const licia = require('miniprogram-licia')
const app = getApp<IAppOption>()
Page({
data: {
nav: 2,
nav: 0,
userInfo: {},
fold1: false,
fold2: false,
fold3: false,
fold4: false,
periodOne: {},
periodTwo: {},
periodThree: {},
periodFour: {},
medical: {
lastBleedingInfo: {
bleedingPartList: [],
},
},
followExam: {
recommendDate: [],
} as any,
calendarConfig: {
multi: false,
@ -19,18 +44,181 @@ Page({ @@ -19,18 +44,181 @@ Page({
},
},
},
onLoad() {},
onLoad(options) {
if (options.nav) {
this.setData({
nav: Number(options.nav),
})
}
},
onShow() {
app.waitLogin({ type: 1 }).then(() => {
this.getInfo()
app.getUserInfo(1).then((userInfo) => {
this.setData({
userInfo: {
...userInfo,
CreateTime: dayjs(userInfo.CreateTime).format('YYYY年MM月DD日'),
},
})
})
})
},
handleNav(e) {
const { nav } = e.currentTarget.dataset
this.setData({
nav,
})
this.getInfo()
},
getInfo() {
const { nav } = this.data
if (nav == 0) {
wx.ajax({
method: 'GET',
url: '?r=wtx/treatment/get-archives',
data: {},
}).then((res) => {
this.setData({
...res,
})
})
}
if (nav == 1) {
wx.ajax({
method: 'GET',
url: '?r=wtx/treatment/get-medical-history-info',
data: {},
}).then((res) => {
this.setData({
medical: res,
})
})
}
if (nav == 2) {
wx.ajax({
method: 'GET',
url: '?r=wtx/treatment/get-follow-up-exam',
data: {},
}).then((res) => {
this.setData({
followExam: {
injectionDateName: dayjs(res.injectionDate).format('YYYY年MM月DD日 ddd'),
...res,
},
})
this.getFollowList()
})
}
},
getFollowList(dateMonth = '') {
wx.ajax({
method: 'GET',
url: '?r=wtx/treatment/get-follow-up-exam-list',
data: {
month: dateMonth,
},
}).then((res) => {
console.log('res: ', res)
const { followExam } = this.data
this.setCalendarTodos({
bleedDate: [followExam.injectionDate],
injectionDate: res,
reportInjectionDate: followExam.recommendDate,
})
})
},
handleWhenChangeMonth(e) {
console.log('DEBUGPRINT[101]: index.ts:129: e=', e)
const next = e.detail.next
const dateMonth = dayjs(`${next.year}-${next.month}`).format('YYYY-MM')
this.getFollowList(dateMonth)
},
setCalendarTodos({
bleedDate = [],
injectionDate = [],
reportInjectionDate = [],
}: {
bleedDate: any[]
injectionDate: string[]
reportInjectionDate: string[]
}) {
const calendar = this.selectComponent('#calendar').calendar
const dates: any[] = []
const unionArr = licia.union(bleedDate, injectionDate, reportInjectionDate)
unionArr.forEach((date: string) => {
let color: string[] = []
if (bleedDate.includes(date)) {
color.push('rgba(246, 74, 58, 1)')
}
if (injectionDate.includes(date)) {
color.push('rgba(255, 163, 112, 1)')
}
if (reportInjectionDate.includes(date)) {
color.push('rgba(255, 207, 135, 1)')
}
dates.push({
year: date.split('-')[0],
month: date.split('-')[1],
date: date.split('-')[2],
color,
})
})
calendar.setTodos({
// 待办点标记设置
pos: 'bottom', // 待办点标记位置 ['top', 'bottom']
dotColor: 'purple', // 待办点标记颜色
circle: false, // 待办圆圈标记设置(如圆圈标记已签到日期),该设置与点标记设置互斥
showLunar: true,
showLabelAlways: true, // 点击时是否显示待办事项(圆点/文字),在 circle 为 true 及当日历配置 showLunar 为 true 时,此配置失效
dates,
})
},
handleFold(e) {
const { fold } = e.currentTarget.dataset
this.setData({
[fold]: !this.data[fold],
})
console.log(this.data[fold])
},
handleRevisitRecord() {
wx.navigateTo({
url: '/patient/pages/lastDiagnosisReport/index',
})
},
handleRevisitDetail(e) {
const { id, period } = e.currentTarget.dataset
wx.navigateTo({
url: `/patient/pages/lastDiagnosisReport/index?examid=${id}&period=${period}`,
})
},
handleRevisitAll() {
wx.navigateTo({
url: '/patient/pages/revisitRecord/index',
})
},
handleCourse(e: any) {
const { progress } = e.currentTarget.dataset
wx.navigateTo({
url: `/patient/pages/course/index?current=${progress}`,
})
},
handleBbmDetail() {
wx.navigateTo({
url: '/patient/pages/bbmReport/index',
})
},
handlePreDiagnosisReport(e) {
const { id, period } = e.currentTarget.dataset
wx.navigateTo({
url: `/patient/pages/preDiagnosisReport/index?examid=${id}&period=${period}`,
})
},
})
export {}

275
src/patient/pages/file/index.wxml

@ -4,29 +4,22 @@ @@ -4,29 +4,22 @@
>
<view class="user">
<view class="avatar">
<image
class="a-img"
src="https://pic1.zhimg.com/50/v2-8cfef5f9ea7d15963af2277c6814f152_720w.jpg?source=2c26e567"
></image>
<image class="a-img" src="{{userInfo.Avatar}}"></image>
</view>
<view class="wrap">
<view class="w-header">
<view class="name">刘能</view>
<view class="name">{{userInfo.PatientName}}</view>
<view class="age">
<image class="icon" src="{{imageUrl}}icon91.png?t={{Timestamp}}"></image>
32
{{userInfo.AgeYear}}
</view>
<view class="site">
<image class="icon" src="{{imageUrl}}icon92.png?t={{Timestamp}}"></image>
北京
{{userInfo.PatientProvince}}
</view>
</view>
<view class="w-footer">
<view class="info">入组时间:2025年6月12日</view>
<view class="more">
查看档案
<van-icon name="arrow" />
</view>
<view class="info">入组时间:{{userInfo.CreateTime}}</view>
</view>
</view>
</view>
@ -38,127 +31,154 @@ @@ -38,127 +31,154 @@
<view class="container0" wx:if="{{nav==0}}">
<view class="card1">
<view class="c-header">
<view class="left">
<view class="left" bindtap="handleFold" data-fold="fold1">
<view class="title">随访期</view>
<image class="fold-icon" src="{{imageUrl}}icon56.png?t={{Timestamp}}"></image>
<image class="fold-icon {{fold1 && 'trun'}}" src="{{imageUrl}}icon56.png?t={{Timestamp}}"></image>
</view>
<view class="btn" bind:tap="handleRevisitRecord">添加随访记录</view>
</view>
<view class="c-body">
<image wx:if="{{true}}" class="status" src="{{imageUrl}}icon42.png?t={{Timestamp}}"></image>
<image wx:elif="{{false}}" class="status" src="{{imageUrl}}icon43.png?t={{Timestamp}}"></image>
<image wx:elif="{{false}}" class="status" src="{{imageUrl}}icon44.png?t={{Timestamp}}"></image>
<view class="row">
<view class="label">日期</view>
<view class="content">2025-06-01</view>
</view>
<view class="row">
<view class="label">诊疗医院</view>
<view class="content">唐山人民医院</view>
<view class="{{fold1 && 'fold'}}">
<view
class="c-body"
wx:for="{{periodFour}}"
wx:key="index"
bind:tap="handleRevisitDetail"
data-id="{{item.examId}}"
data-period="{{item.period}}"
>
<!-- <image wx:if="{{true}}" class="status" src="{{imageUrl}}icon42.png?t={{Timestamp}}"></image> -->
<!-- <image wx:elif="{{false}}" class="status" src="{{imageUrl}}icon43.png?t={{Timestamp}}"></image> -->
<!-- <image wx:elif="{{false}}" class="status" src="{{imageUrl}}icon44.png?t={{Timestamp}}"></image> -->
<view class="row">
<view class="label">日期</view>
<view class="content" wx:if="{{item.beginDate && item.endDate}}">{{item.beginDate}}~{{item.endDate}}</view>
<view class="content" wx:else>--</view>
</view>
<view class="row">
<view class="label">诊疗医院</view>
<view class="content">{{item.hospitalName || '--'}}</view>
</view>
<view class="row">
<view class="label">检查项目</view>
<view class="content">{{item.totalNum}}/{{item.allNum}}</view>
</view>
</view>
<view class="row">
<view class="label">检查项目</view>
<view class="content">3/3</view>
<view class="more" bind:tap="handleRevisitAll">
查看全部
<van-icon name="arrow" />
</view>
<view class="detail">查看详情></view>
</view>
<view class="more">
查看全部
<van-icon name="arrow" />
</view>
</view>
<view class="card2">
<view class="c-header">
<view class="left">
<view class="left" bindtap="handleFold" data-fold="fold2">
<view class="title">注射日</view>
<image class="fold-icon" src="{{imageUrl}}icon56.png?t={{Timestamp}}"></image>
<image class="fold-icon {{fold2 && 'trun'}}" src="{{imageUrl}}icon56.png?t={{Timestamp}}"></image>
</view>
</view>
<view class="c-body">
<view class="row">
<view class="label">注射日期</view>
<view class="content">2025-06-01</view>
</view>
<view class="row">
<view class="label">BBM-H901</view>
<view class="content">
<view>体重 45kg</view>
<view>用药 89ml</view>
<view>预期用药 45 瓶</view>
<view class="{{fold2 && 'fold'}}">
<view class="c-body">
<view class="row">
<view class="label">注射日期</view>
<view class="content">{{periodThree.injectionDate}}</view>
</view>
</view>
<view class="options">
<view class="item">
诊疗阶段详情
<van-icon name="arrow" />
<view class="row">
<view class="label">BBM-H901</view>
<view class="content">
<view>体重 {{periodThree.injectionWeight}}kg</view>
<view>用药 {{periodThree.injectionDrugs}}ml</view>
<view>预期用药 {{periodThree.injectionNum}} 瓶</view>
</view>
</view>
<view class="item">
查看全部
<van-icon name="arrow" />
<view class="options">
<view class="item" bind:tap="handleCourse" data-progress="2">
诊疗阶段详情
<van-icon name="arrow" />
</view>
<view class="item" bind:tap="handleBbmDetail">
查看详情
<van-icon name="arrow" />
</view>
</view>
</view>
</view>
</view>
<view class="card3">
<view class="c-header">
<view class="left">
<view class="left" bindtap="handleFold" data-fold="fold3">
<view class="title">基因治疗中心检查</view>
<image class="fold-icon" src="{{imageUrl}}icon56.png?t={{Timestamp}}"></image>
<image class="fold-icon {{fold3 && 'trun'}}" src="{{imageUrl}}icon56.png?t={{Timestamp}}"></image>
</view>
</view>
<view class="c-body">
<view class="row">
<view class="label">日期</view>
<view class="content">2025-06-01</view>
</view>
<view class="row">
<view class="label">诊疗医院</view>
<view class="content">体重 45kg</view>
</view>
<view class="row">
<view class="label">检查项目</view>
<view class="content">8/10</view>
</view>
<view class="options">
<view class="item">
诊疗阶段详情
<van-icon name="arrow" />
<view class="{{fold3 && 'fold'}}">
<view class="c-body" wx:for="{{periodTwo}}" wx:key="index">
<view class="row">
<view class="label">日期</view>
<view class="content" wx:if="{{item.beginDate && item.endDate}}">{{item.beginDate}}~{{item.endDate}}</view>
<view class="content" wx:else>--</view>
</view>
<view class="row">
<view class="label">诊疗医院</view>
<view class="content">{{item.hospitalName || '--'}}</view>
</view>
<view class="row">
<view class="label">检查项目</view>
<view class="content">{{item.totalNum}}/{{item.allNum}}</view>
</view>
<view class="item">
查看全部
<van-icon name="arrow" />
<view class="options">
<view class="item" bind:tap="handleCourse" data-progress="1">
诊疗阶段详情
<van-icon name="arrow" />
</view>
<view
class="item"
bind:tap="handlePreDiagnosisReport"
data-id="{{item.examId}}"
data-period="{{item.period}}"
>
查看详情
<van-icon name="arrow" />
</view>
</view>
</view>
</view>
</view>
<view class="card4">
<view class="c-header">
<view class="left">
<view class="left" bindtap="handleFold" data-fold="fold4">
<view class="title">诊前筛查</view>
<image class="fold-icon" src="{{imageUrl}}icon56.png?t={{Timestamp}}"></image>
<image class="fold-icon {{fold4 && 'trun'}}" src="{{imageUrl}}icon56.png?t={{Timestamp}}"></image>
</view>
</view>
<view class="c-body">
<view class="row">
<view class="label">日期</view>
<view class="content">2025-06-01</view>
</view>
<view class="row">
<view class="label">定点医院</view>
<view class="content">体重 45kg</view>
</view>
<view class="row">
<view class="label">检查项目</view>
<view class="content">8/10</view>
</view>
<view class="options">
<view class="item">
诊疗阶段详情
<van-icon name="arrow" />
<view class="{{fold4 && 'fold'}}">
<view class="c-body" wx:for="{{periodOne}}" wx:key="index">
<view class="row">
<view class="label">日期</view>
<view class="content" wx:if="{{item.beginDate && item.endDate}}">{{item.beginDate}}~{{item.endDate}}</view>
<view class="content" wx:else>--</view>
</view>
<view class="item">
查看全部
<van-icon name="arrow" />
<view class="row">
<view class="label">定点医院</view>
<view class="content">{{item.hospitalName || '--'}}</view>
</view>
<view class="row">
<view class="label">检查项目</view>
<view class="content">{{item.totalNum}}/{{item.allNum}}</view>
</view>
<view class="options">
<view class="item" bind:tap="handleCourse" data-progress="0">
诊疗阶段详情
<van-icon name="arrow" />
</view>
<view
class="item"
bind:tap="handlePreDiagnosisReport"
data-id="{{item.examId}}"
data-period="{{item.period}}"
>
查看详情
<van-icon name="arrow" />
</view>
</view>
</view>
</view>
@ -168,57 +188,57 @@ @@ -168,57 +188,57 @@
<view class="c1_card1">
<view class="row">
<view class="label">出生年月</view>
<view class="content">1980 年 12 月(44 岁)</view>
<view class="content">{{medical.birthMonth}}({{medical.ageYear}}岁)</view>
</view>
<view class="row">
<view class="label">确诊时间</view>
<view class="content">2000 年 12 月(20 岁时)</view>
<view class="content">{{medical.diagnosisTime}}({{medical.diagnosisAge}})</view>
</view>
<view class="row">
<view class="label">您的体重</view>
<view class="content">69 kg</view>
<view class="content">{{medical.weight}} kg</view>
</view>
</view>
<view class="c1_card1">
<view class="row">
<view class="label">凝血因子</view>
<view class="content">1% 轻度</view>
<view class="content">{{medical.clottingFactor}}%</view>
</view>
<view class="row">
<view class="label">治疗方案</view>
<view class="content">预防治疗</view>
<view class="content">{{medical.treatmentPlanName}}</view>
</view>
<view class="row">
<view class="label">FIX暴露日</view>
<view class="content">198 个</view>
<view class="content">{{medical.fixExposureDay}} 个</view>
</view>
</view>
<view class="c1_card2">
<view class="row">
<view class="wrap">
<view class="label">既往FIX抑制物病史</view>
<view class="content"></view>
<view class="content">{{medical.beforeFixHistoryName}}</view>
</view>
</view>
<view class="row">
<view class="wrap">
<view class="label">既往肝脏疾病病史</view>
<view class="content"></view>
<view class="content">{{medical.beforeLiverHistoryName}}</view>
</view>
<view class="remark">乙肝、肝硬化</view>
<view class="remark">{{medical.liverRecord}}</view>
</view>
<view class="row">
<view class="wrap">
<view class="label">您是否有饮酒史</view>
<view class="content">从不</view>
<view class="content">{{medical.drinkingHistoryName}}</view>
</view>
</view>
<view class="row">
<view class="wrap">
<view class="label">您是否有过敏史</view>
<view class="content"></view>
<view class="content">{{medical.allergyHistoryName}}</view>
</view>
<view class="remark">对空气中的毛絮过敏</view>
<view class="remark">{{medical.allergyRecord}}</view>
</view>
<view class="row1">
<view class="wrap">
@ -227,43 +247,48 @@ @@ -227,43 +247,48 @@
<view>使用糖皮质激素的情况?</view>
</view>
<view class="line"></view>
<view class="content"></view>
<view class="content">{{medical.isNotGlucocorticoidName}}</view>
</view>
<view class="remark">有高血压</view>
<view class="remark">{{medical.medicalHistoryInfo}}</view>
</view>
</view>
<view class="c1_card2">
<view class="row">
<view class="wrap">
<view class="label" style="width: 4em">靶关节</view>
<view class="content">左腿膝盖 左脚脚踝</view>
<view class="content">
<text wx:for="{{medical.lastBleedingInfo.bleedingPartList}}" wx:key="bleedingId">
{{item.bleedingPartName}}
</text>
</view>
</view>
</view>
<view class="row">
<view class="wrap">
<view class="label">最近6个月出血</view>
</view>
<view class="remark">
症状1、关节积血:血友病比较多见于膝关节,在就是踝、髋、肘、腕、肩以及手足小关节。 性期关节肿痛,局部发
</view>
<view class="remark">{{medical.lastBleedingInfo.remark}}</view>
</view>
</view>
</view>
<view class="container2" wx:if="{{nav==2}}">
<view class="date-card">
<image class="icon" src="{{imageUrl}}icon67.png?t={{Timestamp}}"></image>
<view class="content">注射日:2025 年5月28日 星期三</view>
<view class="content">注射日:{{followExam.injectionDateName}}</view>
</view>
<view class="notic" style="background: url('{{imageUrl}}bg21.png?t={{Timestamp}}') no-repeat top center/100%">
<view class="title">最近1个月没有您的复诊信息哦!</view>
<view class="content">本周是注射后第12周</view>
<view class="sub-content">建议每周复诊1次~</view>
<image class="badge" src="{{imageUrl}}icon93.png?t={{Timestamp}}"></image>
<!-- <image class="badge" src="{{imageUrl}}icon94.png?t={{Timestamp}}"></image> -->
<!-- <image class="badge" src="{{imageUrl}}icon95.png?t={{Timestamp}}"></image> -->
<view class="title">{{followExam.tipsInfo}}</view>
<view class="content" wx:if="{{followExam.lastNoticeWeekInfo}}">{{followExam.lastNoticeWeekInfo}}</view>
<view class="sub-content" wx:if="{{followExam.lastNoticeExamInfo}}">{{followExam.lastNoticeExamInfo}}</view>
<image
wx:if="{{followExam.examDiffPassMonth==1}}"
class="badge"
src="{{imageUrl}}icon94.png?t={{Timestamp}}"
></image>
<image wxx:else class="badge" src="{{imageUrl}}icon95.png?t={{Timestamp}}"></image>
</view>
<view class="card">
<view class="c-calendar">
<view class="c-calendar" style="background: #fff url('/images/icon99.png') no-repeat bottom right/118rpx 116rpx">
<calendar
bind:whenChangeMonth="handleWhenChangeMonth"
config="{{calendarConfig}}"
@ -287,7 +312,7 @@ @@ -287,7 +312,7 @@
</view>
<view class="c-sub-card"></view>
</view>
<view class="btn">添加复诊检查记录</view>
<view class="btn" bind:tap="handleRevisitRecord">添加复诊检查记录</view>
</view>
</view>

50
src/patient/pages/followPlan/index.ts

@ -1,8 +1,50 @@ @@ -1,8 +1,50 @@
const _app = getApp<IAppOption>();
import dayjs from 'dayjs'
const app = getApp<IAppOption>()
Page({
data: {},
onLoad() {},
});
data: {
injectionDate: '',
stage: '',
},
onLoad() {
app.waitLogin({ type: 1 }).then(() => {
this.getDetail()
this.addVisitRecord()
})
},
addVisitRecord() {
wx.ajax({
method: 'POST',
url: '?r=wtx/popup/add-visit-record',
data: {
type: 3,
},
})
},
getDetail() {
wx.ajax({
method: 'GET',
url: '?r=wtx/treatment/get-follow-up-plan',
data: {},
}).then((res) => {
console.log('res: ', res)
this.setData({
injectionDate: dayjs(res.injectionDate).format('YYYY年MM月DD日 ddd'),
stage: res.stage,
})
})
},
handleClander() {
wx.navigateTo({
url: '/patient/pages/file/index?nav=2',
})
},
handleLastDiagnosisReport() {
wx.navigateTo({
url: '/patient/pages/lastDiagnosisReport/index',
})
},
})
export {}

20
src/patient/pages/followPlan/index.wxml

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
<view class="page">
<view class="date-card">
<image class="icon" src="{{imageUrl}}icon67.png?t={{Timestamp}}"></image>
<view class="content">注射日:2025 年5月28日 星期三</view>
<view class="content">注射日:{{injectionDate}}</view>
</view>
<view class="body">
<view class="title">基因治疗后时间监测频率</view>
@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
<view class="th">监测频率</view>
</view>
<view class="tbody">
<view class="tr active">
<view class="tr {{stage === 1 && 'current'}} {{stage > 1 && 'active'}}">
<view class="aside">
<view class="line-top"></view>
<view class="order"></view>
@ -21,7 +21,7 @@ @@ -21,7 +21,7 @@
<view class="td">1 周内</view>
<view class="td">每周2次 输注后第3天,第6天</view>
</view>
<view class="tr current">
<view class="tr {{stage === 2 && 'current'}} {{stage > 2 && 'active'}}">
<view class="aside">
<view class="line-top"></view>
<view class="order"></view>
@ -33,7 +33,7 @@ @@ -33,7 +33,7 @@
</view>
<view class="td">每周1次</view>
</view>
<view class="tr">
<view class="tr {{stage === 3 && 'current'}} {{stage > 3 && 'active'}}">
<view class="aside">
<view class="line-top"></view>
<view class="order"></view>
@ -45,7 +45,7 @@ @@ -45,7 +45,7 @@
</view>
<view class="td">每2周1次</view>
</view>
<view class="tr">
<view class="tr {{stage === 4 && 'current'}} {{stage > 4 && 'active'}}">
<view class="aside">
<view class="line-top"></view>
<view class="order"></view>
@ -57,7 +57,7 @@ @@ -57,7 +57,7 @@
</view>
<view class="td">每4周1次</view>
</view>
<view class="tr">
<view class="tr {{stage === 5 && 'current'}} {{stage > 5 && 'active'}}">
<view class="aside">
<view class="line-top"></view>
<view class="order"></view>
@ -69,7 +69,7 @@ @@ -69,7 +69,7 @@
</view>
<view class="td">每周1次</view>
</view>
<view class="tr">
<view class="tr {{stage === 6 && 'current'}} {{stage > 6 && 'active'}}">
<view class="aside">
<view class="line-top"></view>
<view class="order"></view>
@ -81,7 +81,7 @@ @@ -81,7 +81,7 @@
</view>
<view class="td">每6个月1次</view>
</view>
<view class="tr">
<view class="tr {{stage === 7 && 'current'}} {{stage > 7 && 'active'}}">
<view class="aside">
<view class="line-top"></view>
<view class="order"></view>
@ -98,7 +98,7 @@ @@ -98,7 +98,7 @@
</view>
</view>
<view class="footer">
<view class="cancel">查看我的随访日历</view>
<view class="submit">添加复诊检查记录</view>
<view class="cancel" bindtap="handleClander">查看我的随访日历</view>
<view class="submit" bind:tap="handleLastDiagnosisReport">添加复诊检查记录</view>
</view>
</view>

42
src/patient/pages/index/index.scss

@ -205,7 +205,7 @@ page { @@ -205,7 +205,7 @@ page {
.c-header {
display: flex;
.num {
margin-top: 8rpx;
margin-top: 4rpx;
flex-shrink: 0;
width: 40rpx;
height: 40rpx;
@ -245,7 +245,7 @@ page { @@ -245,7 +245,7 @@ page {
}
}
.container4 {
padding: 40rpx 58rpx;
padding: 40rpx 32rpx;
background: #ffffff;
box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(40, 0, 0, 0.06);
border-radius: 24rpx 24rpx 24rpx 24rpx;
@ -253,6 +253,7 @@ page { @@ -253,6 +253,7 @@ page {
.c-header {
display: flex;
.num {
margin-top: 4rpx;
flex-shrink: 0;
width: 40rpx;
height: 40rpx;
@ -281,6 +282,7 @@ page { @@ -281,6 +282,7 @@ page {
display: flex;
padding: 32rpx;
.item1 {
flex: 1;
.title {
font-size: 28rpx;
color: rgba(161, 164, 172, 1);
@ -290,6 +292,11 @@ page { @@ -290,6 +292,11 @@ page {
font-size: 64rpx;
color: rgba(1, 1, 5, 1);
font-weight: bold;
&:empty::after {
margin: 0 10rpx;
content: '--';
font-size: 28rpx;
}
}
}
.tip {
@ -309,16 +316,18 @@ page { @@ -309,16 +316,18 @@ page {
}
}
.line {
margin: 0 30rpx;
margin: 0 40rpx;
flex-shrink: 0;
border-right: 1px dashed rgba(207, 209, 213, 1);
}
.item2 {
min-width: 200rpx;
.title {
font-size: 28rpx;
color: rgba(161, 164, 172, 1);
display: flex;
align-items: baseline;
gap: 20rpx;
.num {
font-size: 64rpx;
color: rgba(1, 1, 5, 1);
@ -334,6 +343,7 @@ page { @@ -334,6 +343,7 @@ page {
}
.btn {
font-size: 28rpx;
margin: 0 auto;
color: rgba(255, 255, 255, 1);
width: 556rpx;
height: 64rpx;
@ -418,6 +428,32 @@ page { @@ -418,6 +428,32 @@ page {
}
}
}
.item-none {
padding: 28rpx 22rpx 36rpx 30rpx;
background: linear-gradient(32deg, #ffffff 0%, #fffcfc 55%, #fff0f0 100%);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #ffffff;
.title {
line-height: 44rpx;
font-size: 28rpx;
color: rgba(1, 1, 5, 1);
}
.content {
line-height: 44rpx;
padding: 0 10rpx;
display: inline-block;
font-size: 28rpx;
border-radius: 8rpx;
color: rgba(255, 255, 255, 1);
background-color: rgba(242, 58, 47, 1);
}
.footer {
line-height: 44rpx;
margin-top: 4rpx;
font-size: 28rpx;
color: rgba(1, 1, 5, 1);
}
}
}
}
}

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

@ -14,9 +14,12 @@ Page({ @@ -14,9 +14,12 @@ Page({
doctorList: [],
progress: 1,
swiperHeight: 0,
treatment: {
followUpWeekInfo: {},
examDiffDays: '',
clottingFactorInfo: {},
bleedInfo: {},
},
Days: '',
@ -76,8 +79,13 @@ Page({ @@ -76,8 +79,13 @@ Page({
})
},
handleSwiperChange(e) {
this.setData({
progress: e.detail.current,
const query = wx.createSelectorQuery()
query.select(`#process${e.detail.current}`).boundingClientRect()
query.exec((res) => {
this.setData({
progress: e.detail.current,
swiperHeight: res[0].height + 22,
})
})
},
handleCondormBindDoctor(id) {
@ -164,6 +172,11 @@ Page({ @@ -164,6 +172,11 @@ Page({
url: '/patient/pages/coltStat/index',
})
},
handleBleed() {
wx.navigateTo({
url: '/patient/pages/blood/index',
})
},
handlePopupOk() {
const { popupType, userInfo } = this.data
if (popupType === 'bindDoctorReject') {

58
src/patient/pages/index/index.wxml

@ -51,9 +51,9 @@ @@ -51,9 +51,9 @@
<view class="btn" bind:tap="handleBindDoctor">扫一扫绑定</view>
</view>
</view>
<swiper class="swiper" style="height: {{progress === 3 ? 480 : 380}}rpx;" current="{{progress}}" bindchange="handleSwiperChange">
<swiper class="swiper" style="height: {{swiperHeight}}px;" current="{{progress}}" bindchange="handleSwiperChange">
<swiper-item>
<view class="process">
<view class="process" id="process0">
<view class="header">
<view class="title">我的专属诊疗流程</view>
<view class="dots">
@ -76,7 +76,7 @@ @@ -76,7 +76,7 @@
</view>
</swiper-item>
<swiper-item>
<view class="process">
<view class="process" id="process1">
<view class="header">
<view class="title">我的专属诊疗流程</view>
<view class="dots">
@ -99,7 +99,7 @@ @@ -99,7 +99,7 @@
</view>
</swiper-item>
<swiper-item>
<view class="process">
<view class="process" id="process2">
<view class="header">
<view class="title">我的专属诊疗流程</view>
<view class="dots">
@ -122,7 +122,7 @@ @@ -122,7 +122,7 @@
</view>
</swiper-item>
<swiper-item>
<view class="process">
<view class="process" id="process3">
<view class="header">
<view class="title">我的专属诊疗流程</view>
<view class="dots">
@ -132,7 +132,10 @@ @@ -132,7 +132,10 @@
<view class="item active">4</view>
</view>
</view>
<view class="container4">
<view
class="container4"
wx:if="{{treatment.examDiffDays || treatment.followUpWeekInfo.iYear || treatment.followUpWeekInfo.iWeek}}"
>
<view class="c-header">
<view class="num">4</view>
<view class="wrap">
@ -145,28 +148,28 @@ @@ -145,28 +148,28 @@
注射后
<block wx:if="{{treatment.followUpWeekInfo.iYear || treatment.followUpWeekInfo.iYearDay}}">
<block wx:if="{{treatment.followUpWeekInfo.iYear}}">
<text class="num">{{treatment.followUpWeekInfo.iYear}}</text>
<view class="num">{{treatment.followUpWeekInfo.iYear}}</view>
</block>
<block wx:if="{{treatment.followUpWeekInfo.iYearDay}}">
<text class="num">{{treatment.followUpWeekInfo.iYearDay}}</text>
<view class="num">{{treatment.followUpWeekInfo.iYearDay}}</view>
</block>
</block>
<block wx:elif="{{treatment.followUpWeekInfo.iWeek}}">
<text class="num">{{treatment.followUpWeekInfo.iWeek}}</text>
<block wx:else>
<view class="num">{{treatment.followUpWeekInfo.iWeek||''}}</view>
</block>
</view>
<view class="tip">
<view class="tip" wx:if="{{treatment.lastNoticeExamInfo}}">
<image class="icon" src="{{imageUrl}}icon96.png?t={{Timestamp}}"></image>
建议每2周复查一次
{{treatment.lastNoticeExamInfo}}
</view>
</view>
<view class="line"></view>
<view class="item2">
<view class="title">
<text class="num">{{treatment.followUpWeekInfo.examDiffDays}}</text>
<text class="num">{{treatment.examDiffDays || '--'}}</text>
天前
</view>
<view class="content">最近一次复诊</view>
@ -174,6 +177,16 @@ @@ -174,6 +177,16 @@
</view>
<view class="btn" bind:tap="handleCourse">查看我的诊疗计划</view>
</view>
<view class="container1" wx:else>
<view class="c-header">
<view class="num">4</view>
<view class="wrap">
<view class="title">长期随访</view>
<view class="content">我们一直陪伴您,全程参与您的健康之旅</view>
</view>
</view>
<view class="btn" bind:tap="handleCourse">查看我的诊疗计划</view>
</view>
</view>
</swiper-item>
</swiper>
@ -187,38 +200,37 @@ @@ -187,38 +200,37 @@
</view>
<image class="m-card" src="{{imageUrl}}banner1.png?t={{Timestamp}}"></image>
</view>
<view class="module2">
<view class="module2" wx:if="{{treatment.clottingFactorInfo.clottingFactor || treatment.bleedInfo.diffDays}}">
<view class="m-header">
<view class="title">向往的生活记录</view>
</view>
<view class="m-container">
<!-- prettier-ignore -->
<view class="item" style="background: url('{{imageUrl}}icon17.png?t={{Timestamp}}') no-repeat top 32rpx right 24rpx/84rpx 84rpx, linear-gradient(32deg, #ffffff 0%, #fffcfc 55%, #fff0f0 100%);">
<view class="item" bind:tap="handleColtStat" wx:if="{{treatment.clottingFactorInfo.clottingFactor}}" style="background: url('{{imageUrl}}icon17.png?t={{Timestamp}}') no-repeat top 32rpx right 24rpx/84rpx 84rpx, linear-gradient(32deg, #ffffff 0%, #fffcfc 55%, #fff0f0 100%);">
<view class="num">
50<text class="sub" style="color:rgba(246, 74, 58, 1)">%</text>
{{treatment.clottingFactorInfo.clottingFactor}}<text class="sub" style="color:rgba(246, 74, 58, 1)">%</text>
</view>
<view class="content">上次凝血因子水平(IX)</view>
<view class="footer">
<view class="date">7月23日</view>
<view class="date">{{treatment.clottingFactorInfo.clottingFactorDate}}</view>
</view>
</view>
<!-- prettier-ignore -->
<view class="item-none" wx:else style="background: url('{{imageUrl}}icon17.png?t={{Timestamp}}') no-repeat top 32rpx right 24rpx/84rpx 84rpx, linear-gradient(32deg, #ffffff 0%, #fffcfc 55%, #fff0f0 100%);">
<view class="item-none" bind:tap="handleColtStat" wx:else style="background: url('{{imageUrl}}icon17.png?t={{Timestamp}}') no-repeat top 32rpx right 24rpx/84rpx 84rpx, linear-gradient(32deg, #ffffff 0%, #fffcfc 55%, #fff0f0 100%);">
<view class="title">补全您的</view>
<view class="content">健康诊疗报告</view>
<view class="footer">获得健康变化曲线</view>
</view>
<!-- prettier-ignore -->
<view class="item" bind:tap="handleColtStat" style="background: url('{{imageUrl}}icon16.png?t={{Timestamp}}') no-repeat top 32rpx right 24rpx/84rpx 84rpx, linear-gradient(32deg, #ffffff 0%, #fffcfc 55%, #fff0f0 100%);"
>
<view class="num">13<text class="sub">天前</text></view>
<view class="item" wx:if="{{treatment.bleedInfo.diffDays}}" bind:tap="handleBleed" style="background: url('{{imageUrl}}icon16.png?t={{Timestamp}}') no-repeat top 32rpx right 24rpx/84rpx 84rpx, linear-gradient(32deg, #ffffff 0%, #fffcfc 55%, #fff0f0 100%);">
<view class="num">{{treatment.bleedInfo.diffDays}}<text class="sub">天前</text></view>
<view class="content">最近一次出血</view>
<view class="footer">
<view class="date">07月23日</view>
<view class="date">{{treatment.bleedInfo.bleedDate}}</view>
</view>
</view>
<!-- prettier-ignore -->
<view class="item-none" bind:tap="handleColtStat" style="background: url('{{imageUrl}}icon16.png?t={{Timestamp}}') no-repeat top 32rpx right 24rpx/84rpx 84rpx, linear-gradient(32deg, #ffffff 0%, #fffcfc 55%, #fff0f0 100%);">
<view class="item-none" wx:else bind:tap="handleBleed" style="background: url('{{imageUrl}}icon16.png?t={{Timestamp}}') no-repeat top 32rpx right 24rpx/84rpx 84rpx, linear-gradient(32deg, #ffffff 0%, #fffcfc 55%, #fff0f0 100%);">
<view class="title">记录您的</view>
<view class="content">出血信息</view>
<view class="footer">生成专属健康报告</view>

2
src/patient/pages/inhibitorsManage/index.scss

@ -81,6 +81,7 @@ page { @@ -81,6 +81,7 @@ page {
.input {
flex: 1;
padding: 32rpx 0;
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
text-align: right;
}
@ -88,6 +89,7 @@ page { @@ -88,6 +89,7 @@ page {
color: rgba(161, 164, 172, 0.5);
}
.unit {
font-size: 32rpx;
color: rgba(0, 0, 0, 1);
flex-shrink: 0;
}

21
src/patient/pages/inhibitorsManage/index.ts

@ -71,7 +71,6 @@ Page({ @@ -71,7 +71,6 @@ Page({
popupShow: true,
popupType: 'inhibitors',
popupParams: {
close: true,
list: dict.drugList,
},
})
@ -131,12 +130,20 @@ Page({ @@ -131,12 +130,20 @@ Page({
},
handleDel() {
const { recordId } = this.data
wx.ajax({
method: 'GET',
url: '?r=wtx/immune/del',
data: { recordId },
}).then(() => {
this.handleBack()
wx.showModal({
title: '确定删除吗?',
confirmColor: 'rgba(246, 74, 58, 1)',
success: (res) => {
if (res.confirm) {
wx.ajax({
method: 'POST',
url: '?r=wtx/immune/del',
data: { recordId },
}).then(() => {
this.handleBack()
})
}
},
})
},
handleBack() {

14
src/patient/pages/inhibitorsManage/index.wxml

@ -1,3 +1,5 @@ @@ -1,3 +1,5 @@
<page-meta page-style="{{ popupShow ? 'overflow: hidden;' : '' }}" />
<view class="page">
<view class="card">
<view class="row" bind:tap="handleDrug">
@ -38,7 +40,14 @@ @@ -38,7 +40,14 @@
model:value="{{dosage}}"
placeholder="请输入"
/>
<picker mode="selector" value="{{dosageUnitIndex}}" range="{{drugUnitList}}" range-key="value" class="date" bind:change="handleChange">
<picker
mode="selector"
value="{{dosageUnitIndex}}"
range="{{drugUnitList}}"
range-key="value"
class="date"
bind:change="handleChange"
>
<view class="date-content">
<view class="content" data-place="请选择">{{dosageUnitName}}</view>
<van-icon name="arrow-down" />
@ -60,8 +69,7 @@ @@ -60,8 +69,7 @@
</view>
</view>
<view class="footer">
<view wx:if="{{recordId}}" class="cancel" bind:tap="handleDel">删除</view>
<view wx:else class="cancel" bind:tap="handleBack">取消</view>
<view class="cancel" bind:tap="handleBack">取消</view>
<view class="submit" bind:tap="handleSubmit">提交</view>
</view>
</view>

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

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
{
"navigationBarTitleText": "免疫抑制剂管理",
"usingComponents": {
"popup": "/components/popup/index"
}
}

131
src/patient/pages/inhibitorsManageDetail/index.scss

@ -0,0 +1,131 @@ @@ -0,0 +1,131 @@
page {
background-color: rgba(247, 247, 250, 1);
}
.page {
padding: 32rpx 40rpx;
.card {
margin-bottom: 24rpx;
padding: 0 32rpx;
background: #ffffff;
border-radius: 24rpx 24rpx 24rpx 24rpx;
.row {
display: flex;
border-bottom: 1px solid rgba(247, 247, 250, 1);
flex-wrap: wrap;
&:last-of-type {
border: none;
}
.label {
width: 9em;
flex-shrink: 0;
padding: 32rpx 0;
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
}
.container {
flex: 1;
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
display: flex;
align-items: center;
justify-content: flex-end;
.tip {
padding-bottom: 32rpx;
font-size: 24rpx;
color: rgba(161, 164, 172, 0.5);
}
}
}
.row1 {
border-bottom: 1px solid rgba(247, 247, 250, 1);
flex-wrap: wrap;
&:last-of-type {
border: none;
}
.label {
width: 9em;
flex-shrink: 0;
padding: 32rpx 0;
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
}
.container {
flex: 1;
.select {
padding: 0 0 32rpx;
display: grid;
gap: 14rpx;
&.select4 {
grid-template-columns: repeat(4, 1fr);
}
.s-item {
padding: 12rpx;
font-size: 32rpx;
color: rgba(137, 141, 151, 1);
line-height: 40rpx;
background-color: rgba(247, 247, 250, 1);
text-align: center;
border-radius: 12rpx;
&.active {
color: #fff;
background-color: rgba(246, 74, 58, 1);
}
}
}
.tip {
padding-bottom: 32rpx;
font-size: 24rpx;
color: rgba(161, 164, 172, 0.5);
}
}
}
.auto-input {
padding-bottom: 32rpx;
.input {
padding: 22rpx 32rpx;
background: #f7f7fa;
border-radius: 12rpx;
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
}
.place-input {
color: rgba(161, 164, 172, 0.5);
}
}
}
.footer {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
padding: 16rpx 40rpx calc(16rpx + env(safe-area-inset-bottom));
background-color: rgba(255, 255, 255, 1);
display: flex;
gap: 26rpx;
box-sizing: border-box;
.cancel {
flex: 1;
padding: 22rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 32rpx;
color: rgba(246, 74, 58, 1);
border-radius: 84rpx;
border: 1px solid #f64a3a;
}
.submit {
flex: 1;
padding: 22rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 32rpx;
color: #fff;
background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%);
border-radius: 84rpx;
border: 1px solid #f64a3a;
}
}
}

87
src/patient/pages/inhibitorsManageDetail/index.ts

@ -0,0 +1,87 @@ @@ -0,0 +1,87 @@
const app = getApp<IAppOption>()
Page({
data: {
popupShow: false,
popupType: 'inhibitors',
popupParams: {},
recordId: '',
period: '',
recordDate: '',
drugId: '',
drugName: '',
type: '',
dosage: '',
dosageUnit: '',
dosageUnitName: '',
dosageUnitIndex: 0,
},
onLoad(options) {
console.log('DEBUGPRINT[71]: index.ts:29: options=', options)
this.setData({
period: options.period,
})
app.waitLogin({ type: 1 }).then(() => {
if (options.id) {
this.getDetail(options.id)
}
})
},
getDetail(id: string) {
wx.ajax({
method: 'GET',
url: '?r=wtx/immune/get-detail',
data: { recordId: id },
}).then((res) => {
this.setData({
...res,
})
})
},
handlePopupOk(e) {
const { popupType } = this.data
if (popupType === 'inhibitors') {
const { id, name, content } = e.detail
this.setData({
drugId: id,
drugName: name === '其他' ? content : name,
})
}
this.setData({
popupShow: false,
})
},
handlePopupCancel() {
this.setData({
popupShow: false,
})
},
handleSubmit() {
const { period, recordId } = this.data
wx.navigateTo({ url: `/patient/pages/inhibitorsManage/index?id=${recordId}&peroid=${period}` })
},
handleDel() {
const { recordId } = this.data
wx.showModal({
title: '确定删除吗?',
confirmColor: 'rgba(246, 74, 58, 1)',
success: (res) => {
if (res.confirm) {
wx.ajax({
method: 'POST',
url: '?r=wtx/immune/del',
data: { recordId },
}).then(() => {
this.handleBack()
})
}
},
})
},
handleBack() {
wx.navigateBack()
},
})
export {}

36
src/patient/pages/inhibitorsManageDetail/index.wxml

@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
<page-meta page-style="{{ popupShow ? 'overflow: hidden;' : '' }}" />
<view class="page">
<view class="card">
<view class="row" bind:tap="handleDrug">
<view class="label">药物名称</view>
<view class="container">{{drugName}}</view>
</view>
<view class="row">
<view class="label">用药方式</view>
<view class="container">{{typeName}}</view>
</view>
<view class="row">
<view class="label">使用剂量</view>
<view class="container">
<view class="input-wrap">{{dosage}}{{dosageUnitName}}</view>
</view>
</view>
<view class="row">
<view class="label">用药时间</view>
<view class="container">{{recordDate}}</view>
</view>
</view>
<view class="footer">
<view class="cancel" bind:tap="handleDel">删除</view>
<view class="submit" bind:tap="handleSubmit">编辑</view>
</view>
</view>
<popup
show="{{popupShow}}"
type="{{popupType}}"
params="{{popupParams}}"
bind:ok="handlePopupOk"
bind:cancel="handlePopupCancel"
></popup>

2
src/patient/pages/inhibitorsManageList/index.scss

@ -42,11 +42,13 @@ page { @@ -42,11 +42,13 @@ page {
padding: 16rpx 32rpx;
display: flex;
.item-title {
flex-shrink: 0;
width: 5em;
font-size: 32rpx;
color: rgba(161, 164, 172, 1);
}
.item-content {
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
}
}

14
src/patient/pages/inhibitorsManageList/index.ts

@ -14,12 +14,22 @@ Page({ @@ -14,12 +14,22 @@ Page({
},
onLoad(options) {
this.setData({
period: options.period,
period: options.period || '',
})
},
addVisitRecord() {
wx.ajax({
method: 'POST',
url: '?r=wtx/popup/add-visit-record',
data: {
type: 5,
},
})
},
onShow() {
app.waitLogin().then(() => {
this.getList()
this.addVisitRecord()
})
},
getList(newPage = 1) {
@ -51,7 +61,7 @@ Page({ @@ -51,7 +61,7 @@ Page({
handleEdit(e: any) {
const { id, period } = e.currentTarget.dataset
wx.navigateTo({
url: `/patient/pages/inhibitorsManage/index?id=${id}&peroid=${period}`,
url: `/patient/pages/inhibitorsManageDetail/index?id=${id}&peroid=${period}`,
})
},
handleAdd() {

6
src/patient/pages/inhibitorsManageList/index.wxml

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
<view class="page">
<view class="list" wx:if="{{total>0}}">
<view class="total">
用药
记录剂量处方
<text class="red">{{total}}</text>
</view>
@ -34,7 +34,7 @@ @@ -34,7 +34,7 @@
</view>
<view class="empty" wx:else>
<image class="none-img" src="{{imageUrl}}none1.png?t={{Timestamp}}"></image>
<view class="title">您还没有记录信息哦~</view>
<view class="add" bind:tap="handleAdd">录入我的免疫制剂信息</view>
<view class="title">您的免疫抑制剂的使用剂量是多少?</view>
<view class="add" bind:tap="handleAdd">录入我的免疫制剂剂量信息</view>
</view>
</view>

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

@ -9,7 +9,6 @@ Page({ @@ -9,7 +9,6 @@ Page({
multi: false,
hideSelectYear: true,
markToday: '今', // 当天日期展示不使用默认数字,用特殊文字标记
autoChoosedWhenJump: true,
firstDayOfWeek: 'Mon',
theme: 'geneb',
takeoverTap: true,

19
src/patient/pages/lastDiagnosisReport/index.scss

@ -3,22 +3,25 @@ page { @@ -3,22 +3,25 @@ page {
}
.page {
padding: 32rpx 30rpx 200rpx;
padding: 32rpx 30rpx 240rpx;
.date-form {
padding: 32rpx;
padding: 24rpx 32rpx;
background-color: #fff;
border-radius: 24rpx;
.label {
font-size: 32rpx;
color: rgba(0, 0, 0, 1);
.title {
display: flex;
align-items: center;
gap: 12rpx;
.icon {
flex-shrink: 0;
width: 48rpx;
height: 48rpx;
}
.label {
flex-shrink: 0;
margin-left: 16rpx;
font-size: 32rpx;
color: rgba(0, 0, 0, 1);
}
}
.range {
margin-top: 24rpx;
@ -163,6 +166,10 @@ page { @@ -163,6 +166,10 @@ page {
.icon {
width: 32rpx;
height: 32rpx;
transition: transform 0.3s;
&.turn {
transform: rotate(180deg);
}
}
}
.status {

228
src/patient/pages/lastDiagnosisReport/index.ts

@ -1,12 +1,236 @@ @@ -1,12 +1,236 @@
const _app = getApp<IAppOption>()
const app = getApp<IAppOption>()
Page({
data: {
popupShow: false,
popupType: 'preDiagnosisReportDate', // 确认绑定曾经扫码医生
popupParams: {},
edit: false,
fold1: true,
fold2: true,
fold3: true,
hospitalName: '',
examId: '',
period: '1',
beginDate: '',
endDate: '',
hospitalId: '',
isBiochemical: 2,
alt: '',
ast: '',
bilirubin: '',
isCFIxActivity: 2,
clottingFactor: '',
isOther: 2,
otherInfo: '',
attachmentList2: [],
attachmentList3: [],
attachmentList10: [],
formKeys: [
'beginDate',
'endDate',
'hospitalId',
'isBiochemical',
'alt',
'ast',
'bilirubin',
'isCFIxActivity',
'clottingFactor',
'isOther',
'otherInfo',
],
dict: {
result: {},
number: {},
},
},
onLoad(options) {
this.setData({
examId: options.examid || '',
period: options.period || '1',
edit: options.edit === '1',
})
},
onShow() {
app.waitLogin().then(() => {
this.getDict()
this.getDetail()
})
},
getDict() {
wx.ajax({
method: 'GET',
url: '?r=wtx/treatment/get-dict',
data: {},
}).then((res) => {
this.setData({
dict: res,
})
})
},
getDetail() {
const { examId, formKeys } = this.data
if (!examId) return
wx.ajax({
method: 'GET',
url: '?r=wtx/treatment/get-examination-info',
data: {
examId: examId,
},
}).then((res) => {
const reset = formKeys.reduce((pre, cur) => {
pre[cur] = res[cur] || ''
return pre
}, {})
this.setData({
...reset,
attachmentList2: res.attachmentList[2] || [],
attachmentList3: res.attachmentList[3] || [],
attachmentList10: res.attachmentList[10] || [],
})
})
},
handleSelectHospital() {
wx.navigateTo({
url: '/patient/pages/selectHostipal/index?select=1',
events: {
acceptDataFromOpenedPage: (data) => {
this.setData({
hospitalId: data.hospitalId,
hospitalName: data.hospitalName,
})
this.updateSave()
},
},
})
},
handleToggleFold(e: any) {
const { fold } = e.currentTarget.dataset
this.setData({
[fold]: !this.data[fold],
})
},
handleToggleCheck(e: any) {
const { check, fold } = e.currentTarget.dataset
let foldValue = this.data[fold]
if (this.data[check] == 2) {
foldValue = false
}
this.setData({
[check]: this.data[check] == 1 ? 2 : 1,
[fold]: foldValue,
})
this.updateSave()
},
updateSave(e = null) {
let isBack = false
if (e) {
const { back } = (e as any).currentTarget.dataset
isBack = back == 1
}
const { formKeys, period, examId, ...reset } = this.data
const form = formKeys.reduce((pre, cur) => {
pre[cur] = reset[cur]
return pre
}, {})
wx.ajax({
method: 'POST',
url: '?r=wtx/exam/save-record',
data: {
examId,
period,
...form,
},
}).then((res) => {
this.setData({
examId: res,
})
if (isBack) {
wx.navigateBack()
}
})
},
setFile(e: any) {
const { type, key } = e.currentTarget.dataset
const { examId, period } = this.data
const detail = e.detail || []
let apiArr: any[] = []
const fileList = this.data[key] || []
detail.forEach((item: any) => {
const params: any = {
examId,
period,
type,
fileType: item.fileType,
name: item.name,
url: item.url,
videoUrl: item.videoUrl,
duration: item.duration,
}
fileList.push(params)
apiArr.push(this.saveAttachment(params))
})
this.setData({
[key]: fileList,
})
Promise.all(apiArr).then((res) => {
console.log(res)
})
},
saveAttachment(params: any) {
return wx.ajax({
method: 'POST',
url: '?r=wtx/treatment/save-attachment',
data: params,
})
},
delFile(e: any) {
const { key } = e.currentTarget.dataset
const { index, item } = e.detail
if (item.attachmentId) {
wx.ajax({
method: 'POST',
url: '?r=wtx/treatment/del-attachment',
data: {
attachmentId: item.attachmentId,
},
})
}
const fileList = this.data[key]
const newFileList = fileList.filter((_, i) => i !== index)
this.setData({
[key]: newFileList,
})
},
handleDel() {
const { examId } = this.data
wx.showModal({
title: '确认删除?',
confirmColor: 'rgba(246, 74, 58, 1)',
success: (res) => {
if (res.confirm) {
wx.ajax({
method: 'POST',
url: '?r=wtx/exam/del',
data: { examId },
}).then(() => {
wx.navigateBack()
})
}
},
})
},
handleBack() {
wx.navigateBack()
},
onLoad() {},
})
export {}

147
src/patient/pages/lastDiagnosisReport/index.wxml

@ -1,20 +1,20 @@ @@ -1,20 +1,20 @@
<view class="page">
<view class="date-form">
<view class="label">
<view class="title">
<image class="icon" src="{{imageUrl}}icon52.png?t={{Timestamp}}"></image>
检查日期
<view class="label">检查时间</view>
</view>
<view class="range">
<picker class="picker" mode="date">
<picker class="picker" end="{{endDate}}" model:value="{{beginDate}}" mode="date" bind:change="updateSave">
<view class="picker-content">
<view class="content" data-place="开始时间"></view>
<view class="content" data-place="开始时间">{{beginDate}}</view>
<view class="tril"></view>
</view>
</picker>
<picker class="picker" mode="date">
<picker class="picker" start="beginDate" model:value="{{endDate}}" mode="date" bind:change="updateSave">
<view class="picker-content">
<view class="content" data-place="结束时间"></view>
<view class="content" data-place="结束时间">{{endDate}}</view>
<view class="tril"></view>
</view>
</picker>
@ -22,16 +22,16 @@ @@ -22,16 +22,16 @@
</view>
<view class="select-hostipal">
<view class="label">检查医院</view>
<picker class="picker" mode="selector">
<div class="picker" bind:tap="handleSelectHospital">
<view class="picker-content">
<view class="content" data-place="请选择"></view>
<view class="content" data-place="请选择">{{hospitalName}}</view>
<van-icon name="arrow" />
</view>
</picker>
</div>
</view>
<view class="form">
<view class="form-card">
<view class="aside">
<view class="aside {{isBiochemical==1 && 'active'}}">
<view class="line-top" style="border: none"></view>
<view class="order">1</view>
<view class="line-bottom"></view>
@ -39,19 +39,18 @@ @@ -39,19 +39,18 @@
<view class="container">
<view class="c-header">
<view class="wrap">
<view class="left">
<view class="left" bind:tap="handleToggleFold" data-fold="fold1">
<view class="title">生化检查</view>
<image class="icon" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image>
<image class="icon {{fold1 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image>
</view>
<view class="status">
<image wx:if="{{true}}" class="icon" src="{{imageUrl}}icon64.png?t={{Timestamp}}"></image>
<view class="status {{isBiochemical==1 && 'active'}}" catch:tap="handleToggleCheck" data-check="isBiochemical" data-fold="fold1">
<image wx:if="{{isBiochemical==1}}" class="icon" src="{{imageUrl}}icon64.png?t={{Timestamp}}"></image>
<image wx:else class="icon" src="{{imageUrl}}icon65.png?t={{Timestamp}}"></image>
已检查
{{isBiochemical==1?'已检查':'未检查'}}
</view>
</view>
<view class="content">重点检查项目:丙氨酸氨基转移酶(ALT)天门冬氨酸氨基转移酶(AST)总胆红素肌酐</view>
</view>
<view class="c-body">
<view class="c-body {{fold1 && 'fold'}}">
<view class="module1">
<view class="m-input-area">
<view class="m-input">
@ -59,7 +58,16 @@ @@ -59,7 +58,16 @@
ALT
<view class="sub-label">丙氨酸氨基转移酶</view>
</view>
<input type="number" placeholder="请填写" class="input" placeholder-class="place-input" />
<input
bind:blur="updateSave"
bind:blur="updateSave"
type="number"
maxlength="5"
model:value="{{alt}}"
placeholder="请填写"
class="input"
placeholder-class="place-input"
/>
<view class="sub">U/L</view>
</view>
<view class="m-input">
@ -67,25 +75,48 @@ @@ -67,25 +75,48 @@
AST
<view class="sub-label">天门冬氨酸氨基转移酶</view>
</view>
<input type="number" placeholder="请填写" class="input" placeholder-class="place-input" />
<input
bind:blur="updateSave"
type="number"
maxlength="5"
model:value="{{ast}}"
placeholder="请填写"
class="input"
placeholder-class="place-input"
/>
<view class="sub">U/L</view>
</view>
<view class="m-input">
<view class="label">总胆红素</view>
<input type="number" placeholder="请填写" class="input" placeholder-class="place-input" />
<input
bind:blur="updateSave"
type="number"
maxlength="4"
model:value="{{bilirubin}}"
placeholder="请填写"
class="input"
placeholder-class="place-input"
/>
<view class="sub">μmol/L</view>
</view>
</view>
<view class="m-title">请上传您的检查报告</view>
<view class="file-list">
<uploadFile></uploadFile>
<uploadFile
bind:setData="setFile"
bind:deleteFile="delFile"
fileList="{{attachmentList2}}"
maxNum="{{9}}"
data-key="attachmentList2"
data-type="2"
></uploadFile>
</view>
</view>
</view>
</view>
</view>
<view class="form-card">
<view class="aside">
<view class="aside {{isCFIxActivity==1 && 'active'}}">
<view class="line-top"></view>
<view class="order">2</view>
<view class="line-bottom"></view>
@ -93,58 +124,87 @@ @@ -93,58 +124,87 @@
<view class="container">
<view class="c-header">
<view class="wrap">
<view class="left">
<view class="left" bind:tap="handleToggleFold" data-fold="fold2">
<view class="title">凝血因子 IX 活性</view>
<image class="icon" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image>
<image class="icon {{fold2 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image>
</view>
<view class="status">
<image wx:if="{{true}}" class="icon" src="{{imageUrl}}icon64.png?t={{Timestamp}}"></image>
<view class="status {{isCFIxActivity==1 && 'active'}}" catch:tap="handleToggleCheck" data-check="isCFIxActivity" data-fold="fold2">
<image wx:if="{{isCFIxActivity==1}}" class="icon" src="{{imageUrl}}icon64.png?t={{Timestamp}}"></image>
<image wx:else class="icon" src="{{imageUrl}}icon65.png?t={{Timestamp}}"></image>
已检查
{{isCFIxActivity==1?'已检查':'未检查'}}
</view>
</view>
</view>
<view class="c-body">
<view class="c-body {{fold2 && 'fold'}}">
<view class="module2">
<view class="m-input">
<view class="label">您的凝血因子水平</view>
<input type="number" placeholder="请填写" class="input" placeholder-class="place-input" />
<input
bind:blur="updateSave"
type="number"
maxlength="3"
model:value="{{clottingFactor}}"
placeholder="请填写"
class="input"
placeholder-class="place-input"
/>
<view class="sub">%</view>
</view>
<view class="m-title">请上传您的检查报告</view>
<view class="file-list">
<uploadFile></uploadFile>
<uploadFile
bind:setData="setFile"
bind:deleteFile="delFile"
fileList="{{attachmentList3}}"
maxNum="{{9}}"
data-key="attachmentList3"
data-type="3"
></uploadFile>
</view>
</view>
</view>
</view>
</view>
<view class="form-card">
<view class="aside">
<view class="aside {{isOther==1 && 'active'}}">
<view class="line-top"></view>
<view class="order">3</view>
<view class="order" style="font-size: 24rpx">3</view>
<view class="line-bottom" style="border: none"></view>
</view>
<view class="container">
<view class="c-header">
<view class="wrap">
<view class="left">
<view class="left" bind:tap="handleToggleFold" data-fold="fold3">
<view class="title">其他检查</view>
<image class="icon" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image>
<image class="icon {{fold3 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image>
</view>
<view class="status">
<image wx:if="{{true}}" class="icon" src="{{imageUrl}}icon64.png?t={{Timestamp}}"></image>
<view class="status {{isOther==1 && 'active'}}" catch:tap="handleToggleCheck" data-check="isOther" data-fold="fold3">
<image wx:if="{{isOther==1}}" class="icon" src="{{imageUrl}}icon64.png?t={{Timestamp}}"></image>
<image wx:else class="icon" src="{{imageUrl}}icon65.png?t={{Timestamp}}"></image>
已检查
{{isOther==1?'已检查':'未检查'}}
</view>
</view>
<view class="content">您的其他项检查</view>
</view>
<view class="c-body">
<view class="c-body {{fold3 && 'fold'}}">
<view class="module3">
<textarea class="text-area" placeholder="您做了哪些其他检查?" disable-default-padding></textarea>
<view class="m-title">请上传您的检查报告</view>
<textarea
class="text-area"
model:value="{{otherInfo}}"
placeholder="您做了哪些其他检查?"
disable-default-padding
bind:blur="updateSave"
></textarea>
<view class="m-title">填提交您的检测报告</view>
<view class="file-list">
<uploadFile></uploadFile>
<uploadFile
bind:setData="setFile"
bind:deleteFile="delFile"
fileList="{{attachmentList10}}"
maxNum="{{9}}"
data-key="attachmentList10"
data-type="10"
></uploadFile>
</view>
</view>
</view>
@ -152,8 +212,9 @@ @@ -152,8 +212,9 @@
</view>
</view>
<view class="footer">
<view class="cancel">取消</view>
<view class="submit">提交</view>
<view class="cancel" wx:if="{{edit}}" bind:tap="handleDel">删除</view>
<view class="cancel" wx:else bind:tap="handleBack">取消</view>
<view class="submit" bind:tap="updateSave" data-back="1">提交</view>
</view>
</view>

31
src/patient/pages/preDiagnosisReport/index.ts

@ -136,6 +136,28 @@ Page({ @@ -136,6 +136,28 @@ Page({
onHide() {
this.updateSave()
},
handleInput(e) {
const { key, length } = e.currentTarget.dataset
const value = e.detail.value
this.setData({
[`${key}`]: this.validateInput(value, length),
})
},
validateInput(val, integerLimit) {
let num = val.toString()
// 清除“数字”和“.”以外的字符
num = num.replace(/[^\d.]/g, '')
// 只保留第一个.,清除多余的
num = num.replace(/\.{2,}/g, '.')
// 限制整数位位数
const index = num.indexOf('.')
if (index !== -1) {
num = num.slice(0, index + integerLimit + 1)
} else {
num = num.slice(0, integerLimit)
}
return num
},
getDict() {
wx.ajax({
method: 'GET',
@ -149,6 +171,7 @@ Page({ @@ -149,6 +171,7 @@ Page({
},
getDetail() {
const { examId, formKeys } = this.data
if (!examId) return
wx.ajax({
method: 'GET',
url: '?r=wtx/treatment/get-examination-info',
@ -233,8 +256,16 @@ Page({ @@ -233,8 +256,16 @@ Page({
},
}).then(() => {
wx.removeStorageSync(storageKey)
this.handlePrevUpdate()
})
},
handlePrevUpdate() {
const pages = getCurrentPages()
const currentPage = pages[pages.length - 1]
if (currentPage && currentPage.handleUpdate) {
currentPage.handleUpdate()
}
},
setFile(e: any) {
console.log('DEBUGPRINT[63]: index.ts:189: e=', e)
const { type, key } = e.currentTarget.dataset

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

@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
<view class="date-form">
<view class="title">
<image class="icon" src="{{imageUrl}}icon52.png?t={{Timestamp}}"></image>
<view class="label">诊前检查时间</view>
<view class="label">检查时间</view>
</view>
<view class="range">
<picker class="picker" end="{{endDate}}" model:value="{{beginDate}}" mode="date" bind:change="updateSave">
@ -30,7 +30,7 @@ @@ -30,7 +30,7 @@
</view>
</view>
<view class="form-card">
<view class="aside">
<view class="aside {{isBloodRoutine==1 && 'active'}}">
<view class="line-top" style="border: none"></view>
<view class="order">1</view>
<view class="line-bottom"></view>
@ -42,10 +42,10 @@ @@ -42,10 +42,10 @@
<view class="title">血常规检查</view>
<image class="icon {{fold1 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image>
</view>
<view class="status" catch:tap="handleToggleCheck" data-check="isBloodRoutine" data-fold="fold1">
<view class="status {{isBloodRoutine==1 && 'active'}} {{isBloodRoutine==1 && 'active'}}" catch:tap="handleToggleCheck" data-check="isBloodRoutine" data-fold="fold1">
<image wx:if="{{isBloodRoutine==1}}" class="icon" src="{{imageUrl}}icon64.png?t={{Timestamp}}"></image>
<image wx:else class="icon" src="{{imageUrl}}icon65.png?t={{Timestamp}}"></image>
已检查
{{isBloodRoutine==1?'已检查':'未检查'}}
</view>
</view>
<view class="content">重点检查项目:白细胞计数)WBC)血红蛋白(HGB)血小板计数(PLT)</view>
@ -68,7 +68,7 @@ @@ -68,7 +68,7 @@
</view>
</view>
<view class="form-card">
<view class="aside">
<view class="aside {{isBiochemical==1 && 'active'}}">
<view class="line-top"></view>
<view class="order">2</view>
<view class="line-bottom"></view>
@ -80,10 +80,10 @@ @@ -80,10 +80,10 @@
<view class="title">生化检查</view>
<image class="icon {{fold2 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image>
</view>
<view class="status" catch:tap="handleToggleCheck" data-check="isBiochemical" data-fold="fold2">
<view class="status {{isBiochemical==1 && 'active'}} {{isBiochemical==1 && 'active'}}" catch:tap="handleToggleCheck" data-check="isBiochemical" data-fold="fold2">
<image wx:if="{{isBiochemical==1}}" class="icon" src="{{imageUrl}}icon64.png?t={{Timestamp}}"></image>
<image wx:else class="icon" src="{{imageUrl}}icon65.png?t={{Timestamp}}"></image>
已检查
{{isBiochemical==1?'已检查':'未检查'}}
</view>
</view>
</view>
@ -97,9 +97,11 @@ @@ -97,9 +97,11 @@
</view>
<input
bind:blur="updateSave"
bind:blur="updateSave"
type="number"
model:value="{{alt}}"
type="digit"
bind:input="handleInput"
data-key="alt"
data-length="5"
value="{{alt}}"
placeholder="请填写"
class="input"
placeholder-class="place-input"
@ -113,8 +115,11 @@ @@ -113,8 +115,11 @@
</view>
<input
bind:blur="updateSave"
type="number"
model:value="{{ast}}"
type="digit"
bind:input="handleInput"
data-key="ast"
data-length="5"
value="{{ast}}"
placeholder="请填写"
class="input"
placeholder-class="place-input"
@ -125,8 +130,11 @@ @@ -125,8 +130,11 @@
<view class="label">总胆红素</view>
<input
bind:blur="updateSave"
type="number"
model:value="{{bilirubin}}"
type="digit"
bind:input="handleInput"
data-key="bilirubin"
data-length="4"
value="{{bilirubin}}"
placeholder="请填写"
class="input"
placeholder-class="place-input"
@ -150,7 +158,7 @@ @@ -150,7 +158,7 @@
</view>
</view>
<view class="form-card">
<view class="aside">
<view class="aside {{isCFIxActivity==1 && 'active'}}">
<view class="line-top"></view>
<view class="order">3</view>
<view class="line-bottom"></view>
@ -162,10 +170,10 @@ @@ -162,10 +170,10 @@
<view class="title">凝血因子 IX 活性</view>
<image class="icon {{fold3 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image>
</view>
<view class="status" catch:tap="handleToggleCheck" data-check="isCFIxActivity" data-fold="fold3">
<view class="status {{isCFIxActivity==1 && 'active'}}" catch:tap="handleToggleCheck" data-check="isCFIxActivity" data-fold="fold3">
<image wx:if="{{isCFIxActivity==1}}" class="icon" src="{{imageUrl}}icon64.png?t={{Timestamp}}"></image>
<image wx:else class="icon" src="{{imageUrl}}icon65.png?t={{Timestamp}}"></image>
已检查
{{isCFIxActivity==1?'已检查':'未检查'}}
</view>
</view>
</view>
@ -175,8 +183,11 @@ @@ -175,8 +183,11 @@
<view class="label">您的凝血因子水平</view>
<input
bind:blur="updateSave"
type="number"
model:value="{{clottingFactor}}"
type="digit"
bind:input="handleInput"
data-key="clottingFactor"
data-length="3"
value="{{clottingFactor}}"
placeholder="请填写"
class="input"
placeholder-class="place-input"
@ -199,7 +210,7 @@ @@ -199,7 +210,7 @@
</view>
</view>
<view class="form-card">
<view class="aside">
<view class="aside {{isCFIxInhibitor==1 && 'active'}}">
<view class="line-top"></view>
<view class="order">4</view>
<view class="line-bottom"></view>
@ -211,10 +222,10 @@ @@ -211,10 +222,10 @@
<view class="title">凝血因子 IX 抑制物检测</view>
<image class="icon {{fold4 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image>
</view>
<view class="status" catch:tap="handleToggleCheck" data-check="isCFIxInhibitor" data-fold="fold4">
<view class="status {{isCFIxInhibitor==1 && 'active'}}" catch:tap="handleToggleCheck" data-check="isCFIxInhibitor" data-fold="fold4">
<image wx:if="{{isCFIxInhibitor==1}}" class="icon" src="{{imageUrl}}icon64.png?t={{Timestamp}}"></image>
<image wx:else class="icon" src="{{imageUrl}}icon65.png?t={{Timestamp}}"></image>
已检查
{{isCFIxInhibitor==1?'已检查':'未检查'}}
</view>
</view>
</view>
@ -248,7 +259,7 @@ @@ -248,7 +259,7 @@
</view>
</view>
<view class="form-card">
<view class="aside">
<view class="aside {{isHepatitisB==1 && 'active'}}">
<view class="line-top"></view>
<view class="order">5</view>
<view class="line-bottom"></view>
@ -260,10 +271,10 @@ @@ -260,10 +271,10 @@
<view class="title">乙型肝炎相关检查</view>
<image class="icon {{fold5 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image>
</view>
<view class="status" catch:tap="handleToggleCheck" data-check="isHepatitisB" data-fold="fold5">
<view class="status {{isHepatitisB==1 && 'active'}}" catch:tap="handleToggleCheck" data-check="isHepatitisB" data-fold="fold5">
<image wx:if="{{isHepatitisB==1}}" class="icon" src="{{imageUrl}}icon64.png?t={{Timestamp}}"></image>
<image wx:else class="icon" src="{{imageUrl}}icon65.png?t={{Timestamp}}"></image>
已检查
{{isHepatitisB==1?'已检查':'未检查'}}
</view>
</view>
</view>
@ -311,7 +322,7 @@ @@ -311,7 +322,7 @@
</view>
</view>
<view class="form-card">
<view class="aside">
<view class="aside {{isHepatitisC==1 && 'active'}}">
<view class="line-top"></view>
<view class="order">6</view>
<view class="line-bottom"></view>
@ -323,10 +334,10 @@ @@ -323,10 +334,10 @@
<view class="title">丙型肝炎相关检查</view>
<image class="icon {{fold6 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image>
</view>
<view class="status" catch:tap="handleToggleCheck" data-check="isHepatitisC" data-fold="fold6">
<view class="status {{isHepatitisC==1 && 'active'}}" catch:tap="handleToggleCheck" data-check="isHepatitisC" data-fold="fold6">
<image wx:if="{{isHepatitisC==1}}" class="icon" src="{{imageUrl}}icon64.png?t={{Timestamp}}"></image>
<image wx:else class="icon" src="{{imageUrl}}icon65.png?t={{Timestamp}}"></image>
已检查
{{isHepatitisC==1?'已检查':'未检查'}}
</view>
</view>
</view>
@ -374,7 +385,7 @@ @@ -374,7 +385,7 @@
</view>
</view>
<view class="form-card">
<view class="aside">
<view class="aside {{isHivAntibody==1 && 'active'}}">
<view class="line-top"></view>
<view class="order">7</view>
<view class="line-bottom"></view>
@ -386,10 +397,10 @@ @@ -386,10 +397,10 @@
<view class="title">HIV抗体</view>
<image class="icon {{fold7 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image>
</view>
<view class="status" catch:tap="handleToggleCheck" data-check="isHivAntibody" data-fold="fold7">
<view class="status {{isHivAntibody==1 && 'active'}}" catch:tap="handleToggleCheck" data-check="isHivAntibody" data-fold="fold7">
<image wx:if="{{isHivAntibody==1}}" class="icon" src="{{imageUrl}}icon64.png?t={{Timestamp}}"></image>
<image wx:else class="icon" src="{{imageUrl}}icon65.png?t={{Timestamp}}"></image>
已检查
{{isHivAntibody==1?'已检查':'未检查'}}
</view>
</view>
<view class="content">类免疫缺陷病毒抗体(HIV - Ab)</view>
@ -425,7 +436,7 @@ @@ -425,7 +436,7 @@
</view>
</view>
<view class="form-card">
<view class="aside">
<view class="aside {{isAfp==1 && 'active'}}">
<view class="line-top"></view>
<view class="order">8</view>
<view class="line-bottom"></view>
@ -437,10 +448,10 @@ @@ -437,10 +448,10 @@
<view class="title">甲胎蛋白(AFP)检测</view>
<image class="icon {{fold8 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image>
</view>
<view class="status" catch:tap="handleToggleCheck" data-check="isAfp" data-fold="fold8">
<view class="status {{isAfp==1 && 'active'}}" catch:tap="handleToggleCheck" data-check="isAfp" data-fold="fold8">
<image wx:if="{{isAfp==1}}" class="icon" src="{{imageUrl}}icon64.png?t={{Timestamp}}"></image>
<image wx:else class="icon" src="{{imageUrl}}icon65.png?t={{Timestamp}}"></image>
已检查
{{isAfp==1?'已检查':'未检查'}}
</view>
</view>
</view>
@ -450,8 +461,11 @@ @@ -450,8 +461,11 @@
<view class="label">您的(AFP)检测</view>
<input
bind:blur="updateSave"
type="number"
model:value="{{afp}}"
type="digit"
bind:input="handleInput"
data-key="afp"
data-length="3"
value="{{afp}}"
placeholder="请填写"
class="input"
placeholder-class="place-input"
@ -474,7 +488,7 @@ @@ -474,7 +488,7 @@
</view>
</view>
<view class="form-card">
<view class="aside">
<view class="aside {{isAav==1 && 'active'}}">
<view class="line-top"></view>
<view class="order">9</view>
<view class="line-bottom"></view>
@ -486,10 +500,10 @@ @@ -486,10 +500,10 @@
<view class="title">AAV 抗体检查</view>
<image class="icon {{fold9 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image>
</view>
<view class="status" catch:tap="handleToggleCheck" data-check="isAav" data-fold="fold9">
<view class="status {{isAav==1 && 'active'}}" catch:tap="handleToggleCheck" data-check="isAav" data-fold="fold9">
<image wx:if="{{isAav==1}}" class="icon" src="{{imageUrl}}icon64.png?t={{Timestamp}}"></image>
<image wx:else class="icon" src="{{imageUrl}}icon65.png?t={{Timestamp}}"></image>
已检查
{{isAav==1?'已检查':'未检查'}}
</view>
</view>
<view class="content">提交您的AAV抗体检查报告</view>
@ -525,7 +539,7 @@ @@ -525,7 +539,7 @@
</view>
</view>
<view class="form-card">
<view class="aside">
<view class="aside {{isOther==1 && 'active'}}">
<view class="line-top"></view>
<view class="order" style="font-size: 24rpx">10</view>
<view class="line-bottom"></view>
@ -537,10 +551,10 @@ @@ -537,10 +551,10 @@
<view class="title">其他检查</view>
<image class="icon {{fold10 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image>
</view>
<view class="status" catch:tap="handleToggleCheck" data-check="isOther" data-fold="fold10">
<view class="status {{isOther==1 && 'active'}}" catch:tap="handleToggleCheck" data-check="isOther" data-fold="fold10">
<image wx:if="{{isOther==1}}" class="icon" src="{{imageUrl}}icon64.png?t={{Timestamp}}"></image>
<image wx:else class="icon" src="{{imageUrl}}icon65.png?t={{Timestamp}}"></image>
已检查
{{isOther==1?'已检查':'未检查'}}
</view>
</view>
<view class="content">您的其他项检查</view>

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

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
{
"navigationBarTitleText": "免疫抑制剂管理",
"navigationBarTitleText": "我的复诊记录",
"usingComponents": {}
}

1
src/patient/pages/revisitRecord/index.scss

@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
page {
background-color: rgba(247, 247, 250, 1);
}
.page {
.list {
padding: 32rpx 40rpx;

24
src/patient/pages/revisitRecord/index.ts

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
const _app = getApp<IAppOption>()
const app = getApp<IAppOption>()
Page({
data: {
@ -8,14 +8,28 @@ Page({ @@ -8,14 +8,28 @@ Page({
pages: 1,
count: 1,
},
examId: '',
period: '1',
},
onLoad(options) {
this.setData({
examId: options.examid || '',
period: options.period || '1',
})
},
onShow() {
app.waitLogin({ type: 1 }).then(() => {
this.getList()
})
},
onLoad() {},
getList(newPage = 1) {
wx.ajax({
method: 'GET',
url: '?r=wtx/knowledge/list',
url: '?r=wtx/exam/get-list',
data: {
page: newPage,
period: 4,
},
}).then((res) => {
const list = res.page === 1 ? res.list : [...this.data.list, ...res.list]
@ -39,12 +53,12 @@ Page({ @@ -39,12 +53,12 @@ Page({
handleEdit(e) {
const { id } = e.currentTarget.dataset
wx.navigateTo({
url: `/patient/pages/inhibitorsManage/index?id=${id}`,
url: `/patient/pages/lastDiagnosisReport/index?period=${this.data.period}&examid=${id}&edit=1`,
})
},
handleAdd() {
wx.navigateTo({
url: '/patient/pages/inhibitorsManage/index',
url: `/patient/pages/lastDiagnosisReport/index?period=${this.data.period}`,
})
},
})

15
src/patient/pages/revisitRecord/index.wxml

@ -1,22 +1,25 @@ @@ -1,22 +1,25 @@
<view class="page">
<view class="list">
<view class="total">
<view class="total" wx:if="{{pagination.count>0}}">
随访次数:
<text class="red">2</text>
<text class="red">{{pagination.count}}</text>
</view>
<view class="list-card" bind:tap="handleEdit" data-id="1">
<view class="list-card" wx:for="{{list}}" wx:key="examId" bind:tap="handleEdit" data-id="{{item.examId}}">
<view class="item">
<view class="item-title">日期</view>
<view class="item-content">2025-06-13</view>
<view class="item-content">
<block wx:if="{{item.beginDate && item.endDate}}">{{item.beginDate}}-{{item.endDate}}</block>
<block wx:else>---</block>
</view>
</view>
<view class="item">
<view class="item-title">诊疗医院</view>
<view class="item-content">唐山人民医院</view>
<view class="item-content">{{item.hospitalName || '---'}}</view>
</view>
<view class="item">
<view class="item-title">检查项目</view>
<view class="item-content">2/3</view>
<view class="item-content">{{item.totalNum}}/{{item.allNum}}</view>
</view>
</view>
<pagination pagination="{{pagination}}"></pagination>

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

@ -7,6 +7,7 @@ Page({ @@ -7,6 +7,7 @@ Page({
popupType: 'selectHostipalComplete',
popupParams: {} as any,
select: false,
selectId: '',
list: [] as any[],
@ -23,7 +24,11 @@ Page({ @@ -23,7 +24,11 @@ Page({
cityId: '',
cityName: '',
},
onLoad() {
onLoad(options) {
this.setData({
selectId: options.id || '',
select: options.select === '1',
})
app.waitLogin({ type: 1 }).then(() => {
this.getHospitalList()
})
@ -84,6 +89,16 @@ Page({ @@ -84,6 +89,16 @@ Page({
handleSelect(e) {
const { index } = e.currentTarget.dataset
const item = this.data.list[index]
const { select } = this.data
if (select) {
const eventChannel = this.getOpenerEventChannel()
eventChannel.emit('acceptDataFromOpenedPage', {
hospitalId: item.hospitalId,
hospitalName: item.hospitalName,
})
wx.navigateBack()
return
}
this.setData({
selectId: item.hospitalId,
popupShow: true,

2
src/patient/pages/selectHostipal/index.wxml

@ -33,7 +33,7 @@ @@ -33,7 +33,7 @@
<view class="list">
<view class="list-item" wx:for="{{list}}" wx:key="hospitalId" bind:tap="handleSelect" data-index="{{index}}">
<view class="aside">
<image wx:if="{{selectId == item.selectId}}" class="icon" src="{{imageUrl}}icon34.png?t={{Timestamp}}"></image>
<image wx:if="{{selectId == item.hospitalId}}" class="icon" src="{{imageUrl}}icon34.png?t={{Timestamp}}"></image>
<image wx:else class="icon" src="{{imageUrl}}icon35.png?t={{Timestamp}}"></image>
</view>
<view class="container">

15
src/utils/page.ts

@ -6,6 +6,13 @@ @@ -6,6 +6,13 @@
const originalPage = Page
const noSharePath = [
'patient/pages/login/index',
'patient/pages/familyScan/index',
'patient/pages/entryInfo/index',
'doctor/pages/login/index',
]
function page(config: WechatMiniprogram.Page.Instance<WechatMiniprogram.IAnyObject, WechatMiniprogram.IAnyObject>) {
const originalOnLoad = config.onLoad
config.onLoad = function (options) {
@ -42,7 +49,7 @@ function page(config: WechatMiniprogram.Page.Instance<WechatMiniprogram.IAnyObje @@ -42,7 +49,7 @@ function page(config: WechatMiniprogram.Page.Instance<WechatMiniprogram.IAnyObje
const pages = getCurrentPages()
const currentPage = pages[pages.length - 1]
const url = currentPage.route
let url = currentPage.route
const options = currentPage.options
let urlWithArgs = `${url}?`
for (const key in options) {
@ -51,6 +58,12 @@ function page(config: WechatMiniprogram.Page.Instance<WechatMiniprogram.IAnyObje @@ -51,6 +58,12 @@ function page(config: WechatMiniprogram.Page.Instance<WechatMiniprogram.IAnyObje
}
urlWithArgs = urlWithArgs.substring(0, urlWithArgs.length - 1)
const isNoShare = noSharePath.some((path) => url.includes(path))
if (isNoShare) {
url = 'pages/start/index'
}
return {
title: '血友病B 基因疗法数字化平台',
path: url,

Loading…
Cancel
Save