Browse Source

3.0 联调 & bug处理

2.0
kola-web 7 days ago
parent
commit
fc31f8701e
  1. 18
      project.private.config.json
  2. 5
      src/app.json
  3. 4
      src/components/calendar/index.wxml
  4. 160
      src/components/customPoster/README.md
  5. 101
      src/components/customPoster/index.js
  6. 3
      src/components/customPoster/index.json
  7. 53
      src/components/customPoster/index.scss
  8. 43
      src/components/customPoster/index.wxml
  9. 0
      src/components/customPoster/wxml2canvas/README.md
  10. 1692
      src/components/customPoster/wxml2canvas/index.js
  11. 1
      src/components/customPoster/wxml2canvas/index.js.map
  12. 12
      src/components/popup/index.ts
  13. 2
      src/components/popup/index.wxml
  14. 4
      src/doctor/pages/calculator/index.json
  15. 98
      src/doctor/pages/calculator/index.scss
  16. 27
      src/doctor/pages/calculator/index.ts
  17. 40
      src/doctor/pages/calculator/index.wxml
  18. 455
      src/doctor/pages/index/index.scss
  19. 19
      src/doctor/pages/index/index.ts
  20. 193
      src/doctor/pages/index/index.wxml
  21. 7
      src/doctor/pages/patientDetail/index.json
  22. 362
      src/doctor/pages/patientDetail/index.scss
  23. 11
      src/doctor/pages/patientDetail/index.ts
  24. 164
      src/doctor/pages/patientDetail/index.wxml
  25. 6
      src/doctor/pages/poster/index.json
  26. 29
      src/doctor/pages/poster/index.scss
  27. 114
      src/doctor/pages/poster/index.ts
  28. 6
      src/doctor/pages/poster/index.wxml
  29. BIN
      src/images/banner2.png
  30. BIN
      src/images/bg22.png
  31. BIN
      src/images/icon100.png
  32. BIN
      src/images/icon101.png
  33. BIN
      src/images/icon102.png
  34. BIN
      src/images/icon103.png
  35. BIN
      src/images/illustrate.png
  36. BIN
      src/images/title13.png
  37. BIN
      src/images/title14.png
  38. BIN
      src/images/title15.png
  39. 2
      src/patient/pages/bbmReport/index.ts
  40. 2
      src/patient/pages/bbmReport/index.wxml
  41. 14
      src/patient/pages/blood/index.scss
  42. 7
      src/patient/pages/blood/index.ts
  43. 8
      src/patient/pages/blood/index.wxml
  44. 2
      src/patient/pages/bloodAdd/index.wxml
  45. 2
      src/patient/pages/bloodDetail/index.wxml
  46. 26
      src/patient/pages/casesAdd/index.ts
  47. 4
      src/patient/pages/casesAdd/index.wxml
  48. 1
      src/patient/pages/coltStat/index.scss
  49. 21
      src/patient/pages/coltStat/index.ts
  50. 4
      src/patient/pages/course/index.ts
  51. 8
      src/patient/pages/course/index.wxml
  52. 8
      src/patient/pages/file/index.scss
  53. 22
      src/patient/pages/file/index.ts
  54. 80
      src/patient/pages/file/index.wxml
  55. 7
      src/patient/pages/followPlan/index.scss
  56. 2
      src/patient/pages/followPlan/index.ts
  57. 7
      src/patient/pages/followPlan/index.wxml
  58. 5
      src/patient/pages/index/index.ts
  59. 5
      src/patient/pages/inhibitorsManage/index.ts
  60. 9
      src/patient/pages/inhibitorsManageDetail/index.ts
  61. 5
      src/patient/pages/preDiagnosisReport/index.ts

18
project.private.config.json

@ -23,13 +23,27 @@
"miniprogram": { "miniprogram": {
"list": [ "list": [
{ {
"name": "患者-我的复诊记录", "name": "医生-海报",
"pathName": "patient/pages/revisitRecord/index", "pathName": "doctor/pages/poster/index",
"query": "", "query": "",
"scene": null, "scene": null,
"launchMode": "default" "launchMode": "default"
}, },
{ {
"name": "医生-计算器",
"pathName": "doctor/pages/calculator/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "患者-我的复诊记录",
"pathName": "patient/pages/revisitRecord/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "医生-修改手机号", "name": "医生-修改手机号",
"pathName": "doctor/pages/changeTel/index", "pathName": "doctor/pages/changeTel/index",
"query": "", "query": "",

5
src/app.json

@ -61,8 +61,11 @@
"pages/login/index", "pages/login/index",
"pages/index/index", "pages/index/index",
"pages/my/index", "pages/my/index",
"pages/patientDetail/index",
"pages/userInfo/index", "pages/userInfo/index",
"pages/changeTel/index" "pages/changeTel/index",
"pages/calculator/index",
"pages/poster/index"
] ]
}, },
{ {

4
src/components/calendar/index.wxml

@ -45,8 +45,8 @@
<view <view
class="b lr wrap" class="b lr wrap"
bindtouchstart="calendarTouchstart" bindtouchstart="calendarTouchstart"
catchtouchmove="calendarTouchmove" bindtouchmove="calendarTouchmove"
catchtouchend="calendarTouchend" bindtouchend="calendarTouchend"
> >
<!-- 上月日期格子 --> <!-- 上月日期格子 -->
<view <view

160
src/components/customPoster/README.md

@ -0,0 +1,160 @@
# 海报插件
## 基于[wxml2canvas](https://github.com/wg-front/wxml2canvas)插件
### 插件引入
```json
{
"customPoster": "/components/customPoster/index"
}
```
```wxml
<customPoster params="{{params}}"></customPoster>
```
### 参数示例
```js
const data = {
params: {
info: { id: 'circle-note_mp', title: '动态页', desc: '指定动态的页面,mp' },
body: {
bgImg:
'https://picsissiok-10049618.cos.ap-shanghai.myqcloud.com/a74018e725861534f1644cff04780f4e_16273677601587.png',
width: '750',
height: '1254',
},
elements: [
{
id: 'circle-name',
desc: '圈名称',
type: 1,
text: '治疗讨论',
font: '宋体',
'font-size': '42',
color: '#FFFFFF',
'single-line': true,
halign: 'center',
top: '106',
},
{
id: 'master-name',
desc: '专家名称',
type: 1,
text: '健康小贴士',
font: '宋体',
'font-size': '38',
color: '#FFFFFF',
'single-line': true,
halign: 'center',
top: '237',
},
{
id: 'master-avatar',
desc: '专家头像',
type: 0,
picType: 'avatar',
src: 'https://picsissiok-10049618.cos.ap-shanghai.myqcloud.com/ceb31ac6137e873225b8cc826389a267_16655329078962.jpg',
width: '120',
height: '120',
halign: 'center',
shape: 'circle',
top: '328',
},
{
id: 'note-content',
desc: '动态内容',
type: 1,
text: '11月5日上海组织进口博览会CIIE大会,邀请大家来我们的展馆现场交流。',
font: '宋体',
'font-size': '45',
color: '#18191A',
width: '630',
height: '348',
left: '60',
top: '495',
},
{
id: 'note-title',
desc: '长文标题',
type: 1,
text: '',
font: '宋体',
'font-size': '42',
color: '#18191A',
width: '659',
height: '116',
left: '46',
top: '495',
'font-weight': 'bold',
},
{
id: 'note-summary',
desc: '长文摘要 ',
type: 1,
text: '',
font: '宋体',
'font-size': '42',
color: '#18191A',
width: '672',
height: '232',
left: '39',
top: '646',
},
{
id: 'note-more',
desc: '还有',
type: 1,
text: '还有3条精彩附件>',
font: '宋体',
'font-size': '31',
color: '#666666',
'single-line': true,
width: '292',
height: '46',
left: '60',
top: '1024',
},
{
id: 'scanText',
desc: '扫描二维码查看详情',
type: 1,
text: '扫描二维码查看详情',
font: '宋体',
'font-size': '31',
color: '#666666',
'single-line': true,
width: '279',
height: '43',
left: '60',
top: '1087',
},
{
id: 'note-qrcode',
desc: '专家列表的二维码',
type: 0,
picType: 'qrcode',
src: 'https://family.devred.hbraas.com/proxy/mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQHJ8TwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyUWhDdGhTWVNlTjMxMDAwMDAwN3gAAgSonPxjAwQAAAAA',
width: '130',
height: '130',
left: '554',
top: '1012',
},
{
id: 'brand',
desc: 'brand×华秉科技',
type: 1,
text: '做企业数字化转型的亲密伙伴×华秉科技',
font: '宋体',
'font-size': '24',
color: '#B2B3B4',
'single-line': true,
halign: 'center',
top: '1192',
},
],
},
}
```

101
src/components/customPoster/index.js

@ -0,0 +1,101 @@
import Wxml2Canvas from "./wxml2canvas/index.js"; // 根据具体路径修改,node_modules会被忽略
Component({
properties: {
params: {
type: Object,
observer(newVal, _olVal) {
if (Object.keys(newVal).length > 0) {
this.paramsFormat(newVal);
this.setData({
width: newVal.body.width,
height: newVal.body.height,
bgImg: newVal.body.bgImg,
elementsMp: newVal.elements,
});
this.drawImage1();
}
},
},
},
data: {
imgUrl: "",
width: "",
height: "",
imgheight: "",
bgImg: "",
elementsMp: [],
},
lifetimes: {
attached() {},
},
methods: {
paramsFormat(params) {
params.elements.forEach((item) => {
if (item.type === 0) {
// 图片居中
if (item.halign === "center") {
item.left = (params.body.width - item.width) / 2;
}
} else {
item.text = item.text.replace(/[\r\n]/g, "");
// 文字居中(使文字标签宽度等于画布宽度,文字加上居中的className)
if (item.halign === "center") {
item.width = item.width || params.body.width;
item.left = (params.body.width - item.width) / 2;
}
if (item.halign === "right") {
item.width = params.body.width;
}
if (item.id === "shareText" && item.text.length > 30) {
item.text = item.text.slice(0, 30) + "...";
}
if (item.id === "note-title" && item.text.length > 28) {
item.text = item.text.slice(0, 28) + "...";
}
if (item.id === "note-content" && item.text.length > 90) {
item.text = item.text.slice(0, 90) + "...";
}
let len = params.elements.some((x) => x.id === "note-title" && x.text.length);
if (len && item.id === "note-summary" && item.text.length > 62) {
item.text = item.text.slice(0, 62) + "...";
} else if (item.id === "note-summary" && item.text.length > 76) {
item.text = item.text.slice(0, 76) + "...";
}
}
});
},
drawImage1() {
let self = this;
this.drawImage1 = new Wxml2Canvas({
obj: self,
width: this.data.width, // 宽, 以iphone6为基准,传具体数值,其它机型自动适配
height: this.data.height, // 高
element: "canvas1",
background: "transparent",
progress(percent) {},
finish(url) {
self.setData({
imgUrl: url,
});
self.triggerEvent("finish", url);
},
error(res) {},
});
let data = {
list: [
{
type: "wxml",
class: "#canvas-bill-body-mp .draw_canvas",
limit: "#canvas-bill-body-mp",
x: 0,
y: 0,
},
],
};
this.drawImage1.draw(data);
},
},
});

3
src/components/customPoster/index.json

@ -0,0 +1,3 @@
{
"usingComponents": {}
}

53
src/components/customPoster/index.scss

@ -0,0 +1,53 @@
.canvas-box {
position: fixed;
left: 1000000rpx;
top: -1000000rpx;
}
.canvas-body {
background-position: center;
background-repeat: no-repeat;
background-size: cover;
background-color: #fff;
}
.draw_canvas {
position: absolute;
}
.canvas-bill {
position: fixed;
width: 750rpx;
left: 1000000rpx;
top: -1000000rpx;
visibility: hidden;
}
.lineOne {
// overflow: hidden;
// text-overflow: ellipsis;
// white-space: nowrap;
}
.textCenter {
text-align: center;
}
.textRight {
text-align: right;
}
.billImg-box {
position: fixed;
left: 0;
top: 0;
z-index: 10;
width: 750rpx;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background-color: rgba(0, 0, 0, 0.75);
}
.image-load-text {
width: 750rpx;
text-align: center;
color: #fff;
line-height: 50rpx;
margin-top: 20rpx;
font-size: 28rpx;
letter-spacing: 2rpx;
}

43
src/components/customPoster/index.wxml

@ -0,0 +1,43 @@
<view id="canvas-bill-body-mp" class="canvas-box" style="height: {{ height }}rpx; width: {{ width }}rpx;">
<view
data-type="{{bgImg ? 'background-image' : 'text'}}"
style="height: {{ height }}rpx; width: {{ width }}rpx;background-image: url({{bgImg}})"
class="canvas-body draw_canvas"
>
<view wx:for="{{elementsMp}}" wx:key="index" wx:for-item="item">
<image
class="draw_canvas"
data-type="{{item.shape === 'circle' ? 'radius-image' : 'image'}}"
data-url="{{item.src}}"
style="height: {{ item.height }}rpx; width: {{ item.width? item.width + 'rpx' : 'auto'}};left: {{item.left}}rpx;right: {{item.right}}rpx;top: {{item.top}}rpx;{{item.shape === 'circle'?'border-radius:50%;':''}}"
src="{{item.src}}"
wx:if="{{item.type === 0}}"
data-delay="{{item.delay}}"
></image>
<view
class="draw_canvas {{item['single-line'] ? 'lineOne' : ''}} {{item['halign'] === 'center' ? 'textCenter' : ''}} {{item['halign'] === 'right' ? 'textRight' : ''}}"
wx:if="{{item.type === 1}}"
data-background="{{item.bgcolor}}"
style="font-style: {{item['font-style']}};font-weight: {{item['font-weight']}};background-color: {{item.bgcolor}};color: {{item.color}};font-size: {{item['font-size']}}rpx;font-family: {{item.font}};height: {{ item.height }}rpx; width: {{ item.width? item.width + 'rpx' : 'auto'}};left: {{item.left}}rpx;right: {{item.right}}rpx;top: {{item.top}}rpx;line-height:{{item.lineHeight}}rpx;"
data-type="text"
data-text="{{item.text}}"
>
{{item.text}}
</view>
</view>
</view>
</view>
<canvas
canvas-id="canvas1"
class="canvas-bill"
style="height: {{ height }}rpx; width: {{ width }}rpx;transform: scale({{scale}})"
></canvas>
<!-- <image -->
<!-- wx:if="{{imgUrl}}" -->
<!-- src="{{imgUrl}}" -->
<!-- mode="aspectFit" -->
<!-- style="height: {{ height }}rpx; width: {{ width }}rpx;" -->
<!-- show-menu-by-longpress -->
<!-- ></image> -->

0
src/components/customPoster/wxml2canvas/README.md

1692
src/components/customPoster/wxml2canvas/index.js

File diff suppressed because it is too large Load Diff

1
src/components/customPoster/wxml2canvas/index.js.map

File diff suppressed because one or more lines are too long

12
src/components/popup/index.ts

@ -13,6 +13,10 @@ Component({
return {} return {}
}, },
}, },
top: {
type: Number,
value: 50,
},
}, },
observers: { observers: {
show(val) { show(val) {
@ -22,6 +26,14 @@ Component({
TCenterId: this.data.params.hospitalId, TCenterId: this.data.params.hospitalId,
}) })
} }
if (this.data.type === 'inhibitors') {
console.log(this.data.params)
this.setData({
inhibitorsId: this.data.params.drugId || '',
inhibitorsName: this.data.params.drugName || '',
inhibitorsContent: this.data.params.content || '',
})
}
} }
}, },
}, },

2
src/components/popup/index.wxml

@ -4,7 +4,7 @@
round round
z-index="{{100000}}" z-index="{{100000}}"
show="{{ true }}" show="{{ true }}"
custom-style="background:transparent;top:40%" custom-style="background:transparent;{{!params.position ? 'top:'+top+'%' : ''}}"
position="{{params.position || 'center'}}" position="{{params.position || 'center'}}"
safe-area-inset-bottom="{{false}}" safe-area-inset-bottom="{{false}}"
root-portal root-portal

4
src/doctor/pages/calculator/index.json

@ -0,0 +1,4 @@
{
"navigationBarTitleText": "用药计算器",
"usingComponents": {}
}

98
src/doctor/pages/calculator/index.scss

@ -0,0 +1,98 @@
page {
background-color: rgba(246, 246, 246, 1);
}
.page-tip {
font-size: 28rpx;
color: rgba(255, 163, 112, 1);
padding: 18rpx;
text-align: center;
line-height: 44rpx;
background-color: rgba(255, 247, 232, 1);
}
.page {
padding: 32rpx 40rpx 80rpx;
.banner {
background-color: rgba(28, 107, 255, 1);
border: 1px solid rgba(255, 255, 255, 1);
border-radius: 24rpx;
.b-header {
padding: 24rpx 32rpx;
display: flex;
align-items: center;
gap: 36rpx;
.left {
flex-shrink: 0;
.name {
font-size: 32rpx;
color: rgba(255, 255, 255, 1);
line-height: 44rpx;
}
.content {
margin-top: 8rpx;
font-size: 24rpx;
color: rgba(255, 255, 255, 0.5);
}
}
.wrap {
flex: 1;
flex-shrink: 0;
padding: 20rpx 32rpx;
background-color: #fff;
border-radius: 24rpx;
display: flex;
align-items: center;
.input {
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
}
.input-place {
color: rgba(207, 209, 213, 1);
}
.sub {
flex-shrink: 0;
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
}
}
}
.b-body {
padding: 32rpx 0;
display: flex;
background-color: #fff;
border-radius: 24rpx;
.item {
flex: 1;
padding: 0 48rpx;
.name {
font-size: 32rpx;
color: rgba(161, 164, 172, 1);
}
.content {
margin-top: 16rpx;
display: flex;
justify-content: space-between;
align-items: baseline;
.value {
font-size: 44rpx;
color: rgba(1, 1, 5, 1);
font-weight: bold;
}
.sub {
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
}
}
}
.line {
flex-shrink: 0;
border-right: 1px dashed rgba(247, 247, 250, 1);
}
}
}
.illustrate {
margin-top: 32rpx;
width: 670rpx;
height: 964rpx;
}
}

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

@ -0,0 +1,27 @@
const app = getApp<IAppOption>()
import { calc } from 'a-calc'
Page({
data: {
injectionWeight: '',
injectionDrugs: '',
injectionNum: '',
},
onLoad() {
app.waitLogin({ type: 2 }).then(() => {})
},
handleWeight(e) {
const value = e.detail.value
if (value) {
const injectionDrugs = calc(`${value} * 1.25 | =0 ~+`)
const injectionNum = calc(`${value} * 1.25 / 2 | =0 ~+`)
this.setData({
injectionDrugs,
injectionNum,
})
}
},
})
export {}

40
src/doctor/pages/calculator/index.wxml

@ -0,0 +1,40 @@
<view class="page-tip">此方案仅供参考,请以最新说明书计算方式为准</view>
<view class="page">
<view class="banner">
<view class="b-header">
<view class="left">
<view class="name">体重</view>
<view class="content">输入体重, 自动计算用药</view>
</view>
<view class="wrap">
<input
type="digit"
class="input"
placeholder-class="input-place"
placeholder="请输入"
model:value="{{injectionWeight}}"
bindblur="handleWeight"
/>
<view class="sub">KG</view>
</view>
</view>
<view class="b-body">
<view class="item">
<view class="name">用药体积</view>
<view class="content">
<view class="value">{{injectionDrugs||'--'}}</view>
<view class="sub">ml</view>
</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">预计瓶数</view>
<view class="content">
<view class="value">{{injectionNum||'--'}}</view>
<view class="sub">瓶数</view>
</view>
</view>
</view>
</view>
<image class="illustrate" src="/images/illustrate.png"></image>
</view>

455
src/doctor/pages/index/index.scss

@ -2,14 +2,16 @@ page {
background-color: rgba(246, 246, 246, 1); background-color: rgba(246, 246, 246, 1);
} }
.page-title { .page-title {
width: 400rpx; width: 399rpx;
height: 52rpx; height: 30rpx;
} }
.page { .page {
padding-bottom: 240rpx; padding-bottom: 240rpx;
.header { min-height: 100vh;
padding: 46rpx 0 50rpx; padding: 0 40rpx;
.page-header {
padding: 54rpx 0 0;
.user { .user {
padding: 0 32rpx; padding: 0 32rpx;
display: flex; display: flex;
@ -18,8 +20,8 @@ page {
gap: 24rpx; gap: 24rpx;
.avatar { .avatar {
flex-shrink: 0; flex-shrink: 0;
width: 120rpx; width: 116rpx;
height: 120rpx; height: 116rpx;
border-radius: 50%; border-radius: 50%;
border: 2px solid #fff; border: 2px solid #fff;
} }
@ -27,12 +29,13 @@ page {
flex: 1; flex: 1;
.name { .name {
font-size: 40rpx; font-size: 40rpx;
color: rgba(255, 255, 255, 1); color: rgba(1, 1, 5, 1);
font-weight: bold;
} }
.content { .content {
margin-top: 22rpx; margin-top: 12rpx;
font-size: 28rpx; font-size: 28rpx;
color: rgba(255, 255, 255, 1); color: rgba(137, 141, 151, 1);
} }
} }
.code { .code {
@ -41,361 +44,131 @@ page {
height: 72rpx; height: 72rpx;
} }
} }
.patient { }
margin-top: 26rpx; .banner {
.p-title { margin-top: 46rpx;
padding-left: 32rpx; height: 130rpx;
font-size: 32rpx; .b-img {
color: rgba(255, 255, 255, 1); display: block;
.num { width: 100%;
font-size: 48rpx; height: 100%;
font-weight: bold;
}
}
.swiper {
margin-top: 20rpx;
height: 116rpx;
.swiper-item {
padding: 0 12rpx 0;
box-sizing: border-box;
line-height: 1;
.swiper-item-container {
background-color: rgba(255, 255, 255, 0.9);
height: 100%;
border-radius: 24rpx;
padding: 20rpx;
display: flex;
align-items: center;
gap: 12rpx;
box-sizing: border-box;
.avatar {
width: 76rpx;
height: 76rpx;
border-radius: 50%;
}
.wrap {
.name {
font-size: 32rpx;
color: rgba(176, 178, 181, 1);
}
.date {
margin-top: 16rpx;
font-size: 24rpx;
color: rgba(105, 108, 114, 0.6);
}
}
}
&.active {
.swiper-item-container {
background-color: #fff;
box-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1);
.wrap {
.name {
color: rgba(28, 107, 255, 1);
}
.date {
color: rgba(28, 107, 255, 0.6);
}
}
}
}
}
}
} }
} }
.body { .info {
position: relative; margin-top: 50rpx;
padding: 42rpx 40rpx 0; .i-header {
background-color: rgba(246, 246, 246, 1); display: flex;
border-radius: 32rpx 32rpx 0 0; align-items: center;
&::before { justify-content: space-between;
position: absolute; .title {
top: -25rpx; width: 175rpx;
left: 80rpx; height: 34rpx;
content: ''; }
width: 0; .more {
height: 0; font-size: 28rpx;
border-style: solid; color: rgba(1, 1, 5, 0.4);
border-width: 0 26rpx 26rpx 26rpx; }
border-color: transparent transparent rgba(246, 246, 246, 1) transparent;
} }
.doctor { .info-list {
padding: 32rpx; padding-left: 40rpx;
border-radius: 32rpx; margin: 30rpx -40rpx 0;
background-color: #fff; overflow-x: auto;
.d-header { overflow-y: hidden;
display: flex; display: flex;
align-items: center; gap: 24rpx;
justify-content: space-between; &::-webkit-scrollbar {
.title { display: none;
font-size: 32rpx;
color: rgba(34, 34, 34, 1);
font-weight: bold;
}
.message {
position: relative;
font-size: 28rpx;
color: rgba(0, 0, 0, 0.6);
.dot {
position: absolute;
right: -7rpx;
top: -7rpx;
width: 16rpx;
height: 16rpx;
border-radius: 50%;
background-color: rgba(232, 70, 60, 1);
}
}
} }
.d-container { .card {
margin-top: 32rpx; flex-shrink: 0;
display: flex; .photo {
align-items: center; width: 424rpx;
justify-content: space-between; height: 246rpx;
gap: 16rpx; border-radius: 24rpx 24rpx 0 0;
.avatar {
flex-shrink: 0;
width: calc(92rpx * 1.5);
display: flex;
.a-img {
flex-shrink: 0;
width: 92rpx;
height: 92rpx;
border-radius: 50%;
&:last-of-type {
transform: translateX(-50%);
}
}
}
.wrap {
flex: 1;
.name {
font-size: 32rpx;
color: rgba(34, 34, 34, 1);
font-weight: bold;
}
.content {
margin-top: 12rpx;
font-size: 28rpx;
color: rgba(0, 0, 0, 0.3);
}
} }
.btn { .content {
flex-shrink: 0; padding: 20rpx;
width: 162rpx; font-size: 28rpx;
height: 56rpx; color: rgba(1, 1, 5, 1);
font-size: 32rpx; white-space: nowrap;
color: rgba(255, 255, 255, 1); text-overflow: ellipsis;
text-align: center; overflow: hidden;
line-height: 56rpx; background-color: #fff;
background: #1c6bff; line-height: 32rpx;
border-radius: 68rpx 68rpx 68rpx 68rpx; border-radius: 0 0 24rpx 24rpx;
} }
} }
} }
.progress { }
margin-top: 38rpx; .patient {
.p-header { margin-top: 50rpx;
padding-bottom: 32rpx; .p-header {
font-size: 32rpx; display: flex;
color: rgba(34, 34, 34, 1); align-items: center;
font-weight: bold; .title {
width: 236rpx;
height: 34rpx;
} }
font-size: 36rpx;
color: rgba(28, 107, 255, 1);
}
.patient-list {
.card { .card {
margin-top: 24rpx;
padding: 32rpx;
background: linear-gradient(358deg, #ffffff 0%, #f7faff 100%);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #ffffff;
display: flex; display: flex;
gap: 24rpx; align-items: center;
.c-aside { justify-content: space-between;
gap: 20rpx;
.photo {
flex-shrink: 0; flex-shrink: 0;
display: flex; width: 112rpx;
flex-direction: column; height: 112rpx;
align-items: center; border-radius: 50%;
.line-top {
flex-shrink: 0;
height: 48rpx;
border-right: 1px dashed rgba(225, 225, 226, 1);
}
.num {
flex-shrink: 0;
width: 56rpx;
height: 56rpx;
border-radius: 50%;
font-size: 40rpx;
text-align: center;
line-height: 56rpx;
color: rgba(255, 255, 255, 1);
background-color: rgba(225, 225, 226, 1);
}
.line-bottom {
flex: 1;
border-right: 1px dashed rgba(225, 225, 226, 1);
}
.hide {
opacity: 0;
}
} }
.c-container { .wrap {
padding-bottom: 24rpx;
flex: 1; flex: 1;
.module { .title {
position: relative; display: flex;
padding: 32rpx; align-items: center;
background-color: #fff; gap: 24rpx;
border-radius: 32rpx; .name {
box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(0, 0, 0, 0.05);
.m-header {
display: flex;
justify-content: space-between;
align-items: center;
.title {
font-size: 32rpx;
color: rgba(171, 174, 180, 1);
display: flex;
align-items: center;
gap: 8rpx;
.tag {
font-size: 28rpx;
color: rgba(171, 174, 180, 1);
line-height: 34rpx;
padding: 0 18rpx;
border-radius: 40rpx 40rpx 40rpx 40rpx;
border: 1rpx solid rgba(171, 174, 180, 0.52);
}
}
.date {
font-size: 28rpx;
color: rgba(171, 174, 180, 1);
}
}
.m-body {
margin-top: 16rpx;
display: flex;
align-items: center;
justify-content: space-between;
.status {
font-size: 28rpx;
color: rgba(171, 174, 180, 1);
display: flex;
align-items: center;
gap: 10rpx;
.icon {
opacity: 0;
width: 36rpx;
height: 36rpx;
}
}
.detail {
font-size: 28rpx;
color: rgba(28, 107, 255, 1);
}
}
.btn {
position: absolute;
top: 48rpx;
right: 32rpx;
width: 162rpx;
height: 56rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 32rpx; font-size: 32rpx;
color: rgba(181, 184, 189, 0.6); color: rgba(1, 1, 5, 1);
border-radius: 68rpx 68rpx 68rpx 68rpx;
border: 2rpx solid rgba(181, 184, 189, 0.6);
}
}
}
&.finish {
.c-aside {
.line-top {
border-color: rgba(28, 107, 255, 1);
}
.num {
background-color: rgba(14, 209, 167, 1);
} }
.line-bottom { .date {
border-color: rgba(28, 107, 255, 1); font-size: 28rpx;
color: rgba(171, 174, 180, 1);
} }
} }
.c-container { .content {
.module { margin-top: 20rpx;
.m-header { padding: 1px;
.title { background-color: rgba(28, 107, 255, 1);
color: rgba(34, 34, 34, 1); border-radius: 8rpx;
} display: inline-flex;
} align-items: center;
.m-body { font-size: 24rpx;
.status { line-height: 32rpx;
color: rgba(14, 209, 167, 1); .step {
.icon { padding: 0 12rpx;
opacity: 1; color: #fff;
}
}
.detail {
color: rgba(28, 107, 255, 1);
}
}
}
}
}
&.current {
.c-aside {
.line-top {
border-color: rgba(28, 107, 255, 1);
}
.num {
background-color: rgba(28, 107, 255, 1);
} }
} .s-name {
.c-container { padding: 0 12rpx;
.module { border-radius: 0 8rpx 8rpx 8rpx;
.m-header { color: rgba(28, 107, 255, 1);
.title { background-color: #fff;
color: rgba(34, 34, 34, 1);
}
}
.m-body {
.status {
color: rgba(34, 34, 34, 1);
}
.detail {
color: rgba(28, 107, 255, 1);
}
}
} }
} }
} }
}
}
.kkd {
margin-top: 32rpx;
display: flex;
align-items: center;
justify-content: space-between;
gap: 22rpx;
.k-item {
padding: 28rpx 24rpx;
flex: 1;
background: linear-gradient(52deg, #ffffff 0%, #eff4ff 100%);
border-radius: 32rpx 32rpx 32rpx 32rpx;
border: 2rpx solid #ffffff;
display: flex;
align-items: center;
.icon { .icon {
width: 88rpx; flex-shrink: 0;
height: 88rpx; width: 60rpx;
} height: 60rpx;
.wrap {
padding-left: 14rpx;
.title {
font-size: 28rpx;
color: rgba(34, 34, 34, 1);
line-height: 44rpx;
}
.content {
font-size: 32rpx;
color: rgba(34, 34, 34, 1);
font-weight: bold;
}
} }
} }
} }

19
src/doctor/pages/index/index.ts

@ -1,8 +1,23 @@
const _app = getApp<IAppOption>(); const _app = getApp<IAppOption>()
Page({ Page({
data: {}, data: {},
onLoad() {}, onLoad() {},
}); handleCalculator() {
wx.navigateTo({
url: '/doctor/pages/calculator/index',
})
},
handlePatientDetail() {
wx.navigateTo({
url: '/doctor/pages/patientDetail/index',
})
},
handlePoster() {
wx.navigateTo({
url: '/doctor/pages/poster/index',
})
},
})
export {} export {}

193
src/doctor/pages/index/index.wxml

@ -1,11 +1,8 @@
<navbar fixed custom-style="background:{{background}}" back> <navbar fixed custom-style="background:{{background}}" back>
<image class="page-title" slot="left" src="{{imageUrl}}title11.png?t={{Timestamp}}"></image> <image class="page-title" slot="left" src="/images/title13.png"></image>
</navbar> </navbar>
<view <view class="page" style="padding-top:{{pageTop}}px;">
class="page" <view class="page-header">
style="padding-top:{{pageTop}}px;background:url('{{imageUrl}}bg17.png?t={{Timestamp}}') no-repeat top center/100% 666rpx"
>
<view class="header">
<view class="user"> <view class="user">
<image <image
class="avatar" class="avatar"
@ -15,160 +12,52 @@
<view class="name">王青</view> <view class="name">王青</view>
<view class="content">北京协和医院</view> <view class="content">北京协和医院</view>
</view> </view>
<image class="code" src="{{imageUrl}}icon72.png?t={{Timestamp}}"></image> <image class="code" bind:tap="handlePoster" src="/images/icon100.png"></image>
</view>
<view class="patient">
<view class="p-title">
您当前跟进
<text class="num">4</text>
个患者
</view>
<swiper class="swiper" display-multiple-items="{{2.8}}" circular previous-margin="10rpx">
<swiper-item class="swiper-item {{index==0 && 'active'}}" wx:for="{{6}}" wx:key="index">
<view class="swiper-item-container">
<image
class="avatar"
src="https://pic1.zhimg.com/50/v2-8cfef5f9ea7d15963af2277c6814f152_720w.jpg?source=2c26e567"
></image>
<view class="wrap">
<view class="name">刘可</view>
<view class="date">2024.3.12</view>
</view>
</view>
</swiper-item>
</swiper>
</view> </view>
</view> </view>
<view class="body"> <view class="banner" bind:tap="handleCalculator">
<view class="doctor"> <image class="b-img" src="/images/banner2.png"></image>
<view class="d-header"> </view>
<view class="title">共同照护团队</view> <view class="info">
<view class="message"> <view class="i-header">
最新消息12条 <image class="title" src="/images/title14.png"></image>
<view class="dot"></view> <view class="more">
</view> 查看更多
</view> <van-icon name="arrow" />
<view class="d-container">
<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="https://pic1.zhimg.com/50/v2-8cfef5f9ea7d15963af2277c6814f152_720w.jpg?source=2c26e567"
></image>
</view>
<view class="wrap">
<view class="name">刘湖飞</view>
<view class="content">天津血液科诊断中心</view>
</view>
<view class="btn">去看看></view>
</view> </view>
</view> </view>
<view class="progress"> <view class="info-list">
<view class="p-header">刘可的检查进展</view> <view class="card" wx:for="{{10}}" wx:key="index">
<view class="card finish"> <image
<view class="c-aside"> class="photo"
<view class="line-top hide"></view> src="https://pic1.zhimg.com/50/v2-8cfef5f9ea7d15963af2277c6814f152_720w.jpg?source=2c26e567"
<view class="num">1</view> ></image>
<view class="line-bottom"></view> <view class="content">什么是基因疗法? 治疗流程了解</view>
</view>
<view class="c-container">
<view class="module">
<view class="m-header">
<view class="title">诊前筛查</view>
<view class="date">2024-08-24</view>
</view>
<view class="m-body">
<view class="status">
已完成
<image class="icon" src="{{imageUrl}}icon29.png?t={{Timestamp}}"></image>
</view>
<view class="detail">查看详情</view>
</view>
</view>
</view>
</view>
<view class="card current">
<view class="c-aside">
<view class="line-top"></view>
<view class="num">2</view>
<view class="line-bottom"></view>
</view>
<view class="c-container">
<view class="module">
<view class="m-header">
<view class="title">注射前准备</view>
</view>
<view class="m-body">
<view class="status">
进行中
<image class="icon" src="{{imageUrl}}icon29.png?t={{Timestamp}}"></image>
</view>
</view>
</view>
</view>
</view>
<view class="card">
<view class="c-aside">
<view class="line-top"></view>
<view class="num">3</view>
<view class="line-bottom"></view>
</view>
<view class="c-container">
<view class="module">
<view class="m-header">
<view class="title">
诊前筛查
<view class="tag">还未确定注射日</view>
</view>
</view>
<view class="m-body">
<view class="status">
待启动
<image class="icon" src="{{imageUrl}}icon29.png?t={{Timestamp}}"></image>
</view>
</view>
</view>
</view>
</view>
<view class="card">
<view class="c-aside">
<view class="line-top"></view>
<view class="num">4</view>
<view class="line-bottom hide"></view>
</view>
<view class="c-container">
<view class="module">
<view class="m-header">
<view class="title">诊前筛查</view>
</view>
<view class="m-body">
<view class="status">
已完成
<image class="icon" src="{{imageUrl}}icon29.png?t={{Timestamp}}"></image>
</view>
</view>
<view class="btn">待启动</view>
</view>
</view>
</view> </view>
</view> </view>
<view class="kkd"> </view>
<view class="k-item"> <view class="patient">
<image class="icon" src="{{imageUrl}}icon73.png?t={{Timestamp}}"></image> <view class="p-header">
<view class="wrap"> <image class="title" src="/images/title15.png"></image>
<view class="title">他的全部</view> (12)
<view class="content">病历档案</view> </view>
</view> <view class="patient-list">
</view> <view class="card" bind:tap="handlePatientDetail">
<view class="k-item"> <image
<image class="icon" src="{{imageUrl}}icon74.png?t={{Timestamp}}"></image> class="photo"
src="https://pic1.zhimg.com/50/v2-8cfef5f9ea7d15963af2277c6814f152_720w.jpg?source=2c26e567"
></image>
<view class="wrap"> <view class="wrap">
<view class="title">查看他的</view> <view class="title">
<view class="content">健康变化</view> <view class="name">刘可</view>
<view class="date">入组:2024.3.12</view>
</view>
<view class="content">
<view class="step">第一阶段</view>
<view class="s-name">诊前筛选</view>
</view>
</view> </view>
<image class="icon" src="/images/icon12.png"></image>
</view> </view>
</view> </view>
</view> </view>

7
src/doctor/pages/patientDetail/index.json

@ -0,0 +1,7 @@
{
"navigationStyle": "custom",
"usingComponents": {
"navbar": "/components/navbar/index",
"doctor-tab-bar": "/doctor/components/doctor-tab-bar/index"
}
}

362
src/doctor/pages/patientDetail/index.scss

@ -0,0 +1,362 @@
page {
background-color: rgba(246, 246, 246, 1);
}
.nav-title {
color: rgba(255, 255, 255, 1);
&.nav-title_dark {
color: #000;
}
}
.page {
padding-bottom: 160rpx;
.header {
padding: 46rpx 0 0;
.user {
padding: 0 40rpx;
display: flex;
align-items: center;
justify-content: space-between;
gap: 24rpx;
.avatar {
flex-shrink: 0;
width: 120rpx;
height: 120rpx;
border-radius: 50%;
border: 2px solid #fff;
}
.wrap {
flex: 1;
.w-header {
display: flex;
align-items: center;
gap: 16rpx;
.name {
font-size: 36rpx;
color: rgba(255, 255, 255, 1);
}
.age {
padding: 0 14rpx;
border-radius: 20rpx;
display: flex;
align-items: center;
gap: 6rpx;
font-size: 24rpx;
color: rgba(255, 255, 255, 1);
line-height: 32rpx;
border: 1px solid #fff;
.icon {
width: 28rpx;
height: 28rpx;
}
}
.site {
padding: 0 14rpx;
border-radius: 20rpx;
background-color: rgba(32, 196, 255, 1);
display: flex;
align-items: center;
gap: 6rpx;
font-size: 24rpx;
color: rgba(255, 255, 255, 1);
line-height: 32rpx;
.icon {
width: 28rpx;
height: 28rpx;
}
}
}
.w-footer {
margin-top: 22rpx;
display: flex;
justify-content: space-between;
align-items: center;
.content {
font-size: 28rpx;
color: rgba(255, 255, 255, 1);
}
.doc {
font-size: 28rpx;
color: rgba(255, 255, 255, 1);
}
}
}
}
}
.body {
position: relative;
padding: 42rpx 40rpx 0;
.doctor {
padding: 32rpx;
border-radius: 32rpx;
background-color: #fff;
.d-header {
display: flex;
align-items: center;
justify-content: space-between;
.title {
font-size: 32rpx;
color: rgba(34, 34, 34, 1);
font-weight: bold;
}
.message {
position: relative;
font-size: 28rpx;
color: rgba(0, 0, 0, 0.6);
.dot {
position: absolute;
right: -7rpx;
top: -7rpx;
width: 16rpx;
height: 16rpx;
border-radius: 50%;
background-color: rgba(232, 70, 60, 1);
}
}
}
.d-container {
margin-top: 32rpx;
display: flex;
align-items: center;
justify-content: space-between;
gap: 16rpx;
.avatar {
flex-shrink: 0;
width: calc(92rpx * 1.5);
display: flex;
.a-img {
flex-shrink: 0;
width: 92rpx;
height: 92rpx;
border-radius: 50%;
&:last-of-type {
transform: translateX(-50%);
}
}
}
.wrap {
flex: 1;
.name {
font-size: 32rpx;
color: rgba(34, 34, 34, 1);
font-weight: bold;
}
.content {
margin-top: 12rpx;
font-size: 28rpx;
color: rgba(0, 0, 0, 0.3);
}
}
.btn {
flex-shrink: 0;
width: 162rpx;
height: 56rpx;
font-size: 32rpx;
color: rgba(255, 255, 255, 1);
text-align: center;
line-height: 56rpx;
background: #1c6bff;
border-radius: 68rpx 68rpx 68rpx 68rpx;
}
}
}
.progress {
margin-top: 38rpx;
.p-header {
padding-bottom: 32rpx;
font-size: 36rpx;
color: rgba(34, 34, 34, 1);
font-weight: bold;
}
.card {
display: flex;
gap: 24rpx;
.c-aside {
flex-shrink: 0;
display: flex;
flex-direction: column;
align-items: center;
.line-top {
flex-shrink: 0;
height: 48rpx;
border-right: 1px dashed rgba(225, 225, 226, 1);
}
.num {
flex-shrink: 0;
width: 56rpx;
height: 56rpx;
border-radius: 50%;
font-size: 40rpx;
text-align: center;
line-height: 56rpx;
color: rgba(255, 255, 255, 1);
background-color: rgba(225, 225, 226, 1);
}
.line-bottom {
flex: 1;
border-right: 1px dashed rgba(225, 225, 226, 1);
}
.hide {
opacity: 0;
}
}
.c-container {
padding-bottom: 24rpx;
flex: 1;
.module {
position: relative;
padding: 32rpx;
background-color: #fff;
border-radius: 32rpx;
box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(0, 0, 0, 0.05);
.m-header {
display: flex;
justify-content: space-between;
align-items: center;
.title {
font-size: 32rpx;
color: rgba(171, 174, 180, 1);
display: flex;
align-items: center;
gap: 8rpx;
.tag {
font-size: 28rpx;
color: rgba(171, 174, 180, 1);
line-height: 34rpx;
padding: 0 18rpx;
border-radius: 40rpx 40rpx 40rpx 40rpx;
border: 1rpx solid rgba(171, 174, 180, 0.52);
}
}
.date {
font-size: 28rpx;
color: rgba(171, 174, 180, 1);
}
}
.m-body {
margin-top: 16rpx;
display: flex;
align-items: center;
justify-content: space-between;
.status {
width: 154rpx;
height: 40rpx;
}
.detail {
font-size: 28rpx;
color: rgba(28, 107, 255, 1);
}
}
.btn {
position: absolute;
top: 48rpx;
right: 32rpx;
width: 162rpx;
height: 56rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 32rpx;
color: rgba(181, 184, 189, 0.6);
border-radius: 68rpx 68rpx 68rpx 68rpx;
border: 2rpx solid rgba(181, 184, 189, 0.6);
}
}
}
&.finish {
.c-aside {
.line-top {
border-color: rgba(28, 107, 255, 1);
}
.num {
background-color: rgba(14, 209, 167, 1);
}
.line-bottom {
border-color: rgba(28, 107, 255, 1);
}
}
.c-container {
.module {
.m-header {
.title {
color: rgba(34, 34, 34, 1);
}
}
.m-body {
.status {
color: rgba(14, 209, 167, 1);
.icon {
opacity: 1;
}
}
.detail {
color: rgba(28, 107, 255, 1);
}
}
}
}
}
&.current {
.c-aside {
.line-top {
border-color: rgba(28, 107, 255, 1);
}
.num {
background-color: rgba(28, 107, 255, 1);
}
}
.c-container {
.module {
.m-header {
.title {
color: rgba(34, 34, 34, 1);
}
}
.m-body {
.status {
color: rgba(34, 34, 34, 1);
}
.detail {
color: rgba(28, 107, 255, 1);
}
}
}
}
}
}
}
.kkd {
margin-top: 32rpx;
display: flex;
align-items: center;
justify-content: space-between;
gap: 22rpx;
.k-item {
padding: 28rpx 24rpx;
flex: 1;
background: linear-gradient(52deg, #ffffff 0%, #eff4ff 100%);
border-radius: 32rpx 32rpx 32rpx 32rpx;
border: 2rpx solid #ffffff;
display: flex;
align-items: center;
.icon {
width: 88rpx;
height: 88rpx;
}
.wrap {
padding-left: 14rpx;
.title {
font-size: 28rpx;
color: rgba(34, 34, 34, 1);
line-height: 44rpx;
}
.content {
font-size: 32rpx;
color: rgba(34, 34, 34, 1);
font-weight: bold;
}
}
}
}
}
}

11
src/doctor/pages/patientDetail/index.ts

@ -0,0 +1,11 @@
const _app = getApp<IAppOption>()
Page({
data: {},
onLoad() {},
handleBack() {
wx.navigateBack()
},
})
export {}

164
src/doctor/pages/patientDetail/index.wxml

@ -0,0 +1,164 @@
<navbar fixed custom-style="background:{{background}}" back>
<van-icon
name="arrow-left"
slot="left"
size="18px"
color="{{background==='#ffffff' ? '#000' : '#fff'}}"
bind:tap="handleBack"
/>
<view class="nav-title {{background=='#ffffff' && 'nav-title_dark'}}" slot="title">患者详情</view>
</navbar>
<view
class="page"
style="padding-top:{{pageTop}}px;background:url('{{imageUrl}}bg22.png?t={{Timestamp}}') no-repeat top center/100% 600rpx"
>
<view class="header">
<view class="user">
<image
class="avatar"
src="https://pic1.zhimg.com/50/v2-8cfef5f9ea7d15963af2277c6814f152_720w.jpg?source=2c26e567"
></image>
<view class="wrap">
<view class="w-header">
<view class="name">王青</view>
<view class="age">
<image class="icon" src="{{imageUrl}}icon91.png?t={{Timestamp}}"></image>
32岁
</view>
<view class="site">
<image class="icon" src="{{imageUrl}}icon92.png?t={{Timestamp}}"></image>
北京
</view>
</view>
<view class="w-footer">
<view class="content">入组时间:2025年6月12日</view>
<view class="doc">
查看档案
<van-icon name="arrow" />
</view>
</view>
</view>
</view>
</view>
<view class="body">
<view class="doctor">
<view class="d-header">
<view class="title">共同照护团队</view>
<view class="message">
最新消息12条
<view class="dot"></view>
</view>
</view>
<view class="d-container">
<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="https://pic1.zhimg.com/50/v2-8cfef5f9ea7d15963af2277c6814f152_720w.jpg?source=2c26e567"
></image>
</view>
<view class="wrap">
<view class="name">刘湖飞</view>
<view class="content">天津血液科诊断中心</view>
</view>
<view class="btn">去看看></view>
</view>
</view>
<view class="progress">
<view class="p-header">刘可的检查进展</view>
<view class="card finish">
<view class="c-aside">
<view class="line-top hide"></view>
<view class="num">1</view>
<view class="line-bottom"></view>
</view>
<view class="c-container">
<view class="module">
<view class="m-header">
<view class="title">诊前筛查</view>
<view class="date">2024-08-24</view>
</view>
<view class="m-body">
<image class="status" src="/images/icon102.png"></image>
<view class="detail">查看详情</view>
</view>
</view>
</view>
</view>
<view class="card current">
<view class="c-aside">
<view class="line-top"></view>
<view class="num">2</view>
<view class="line-bottom"></view>
</view>
<view class="c-container">
<view class="module">
<view class="m-header">
<view class="title">注射前准备</view>
</view>
<view class="m-body">
<image class="status" src="/images/icon101.png"></image>
</view>
</view>
</view>
</view>
<view class="card">
<view class="c-aside">
<view class="line-top"></view>
<view class="num">3</view>
<view class="line-bottom"></view>
</view>
<view class="c-container">
<view class="module">
<view class="m-header">
<view class="title">
诊前筛查
<view class="tag">还未确定注射日</view>
</view>
</view>
<view class="m-body">
<image class="status" src="/images/icon103.png"></image>
</view>
</view>
</view>
</view>
<view class="card">
<view class="c-aside">
<view class="line-top"></view>
<view class="num">4</view>
<view class="line-bottom hide"></view>
</view>
<view class="c-container">
<view class="module">
<view class="m-header">
<view class="title">诊前筛查</view>
</view>
<view class="m-body">
<image class="status" src="/images/icon103.png"></image>
</view>
<view class="btn">待启动</view>
</view>
</view>
</view>
</view>
<view class="kkd">
<view class="k-item">
<image class="icon" src="{{imageUrl}}icon73.png?t={{Timestamp}}"></image>
<view class="wrap">
<view class="title">他的全部</view>
<view class="content">病历档案</view>
</view>
</view>
<view class="k-item">
<image class="icon" src="{{imageUrl}}icon74.png?t={{Timestamp}}"></image>
<view class="wrap">
<view class="title">查看他的</view>
<view class="content">健康变化</view>
</view>
</view>
</view>
</view>
</view>

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

@ -0,0 +1,6 @@
{
"navigationBarTitleText": "海报",
"usingComponents": {
"customPoster": "/components/customPoster/index"
}
}

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

@ -0,0 +1,29 @@
page {
background-color: #c65174;
}
.page {
position: relative;
height: 1448rpx;
.poster {
width: 100%;
height: 100%;
}
.btn {
position: absolute;
bottom: 88rpx;
left: 50%;
transform: translateX(-50%);
margin: 36rpx auto;
padding: 18rpx 44rpx;
font-size: 36rpx;
line-height: 48rpx;
font-weight: bold;
display: flex;
align-items: center;
justify-content: center;
color: rgba(255, 255, 255, 1);
border-radius: 64rpx 64rpx 64rpx 64rpx;
border: 1px solid rgba(255, 255, 255, 1);
box-sizing: border-box;
}
}

114
src/doctor/pages/poster/index.ts

@ -0,0 +1,114 @@
const app = getApp<IAppOption>()
Page({
data: {
doctor: {},
hospital: {},
qrCode: '',
posterUrl: '',
params: {},
},
onLoad() {
const SystemInfo = app.globalSystemInfo
if (SystemInfo) {
const { bottom } = SystemInfo.capsulePosition
this.setData({
bottom,
})
}
app.waitLogin().then((_res) => {
wx.showLoading({
title: '加载中',
})
app.mpBehavior({ doctor: true, PageName: 'PG_DOCTORINVITEPATIENT' })
this.getDetail()
})
},
getDetail() {
wx.ajax({
method: 'GET',
url: '?r=zd/doctor/account/info',
data: {},
}).then((res) => {
this.setData({
doctor: res.doctor,
hospital: res.hospital,
})
this.getPrepare(res.doctor.Id)
})
},
getPrepare(id) {
wx.ajax({
method: 'POST',
url: '?r=poster/prepare',
data: {
posterId: 'doctor_mini',
doctorId: id,
},
}).then((res) => {
this.setData({
params: res,
})
})
},
getQrCode() {
this.setData({
qrCode: `${app.globalData.url}?r=zd/doctor/account/mp-info&loginState=${app.globalData.loginState}`,
})
},
handleDownload() {
wx.showToast({
title: '请长按海报图片进行保存',
icon: 'none',
})
// wx.showLoading({
// title: '加载中',
// })
// wx.downloadFile({
// url: this.data.posterUrl,
// success: (res) => {
// if (res.statusCode === 200) {
// wx.saveImageToPhotosAlbum({
// filePath: res.tempFilePath,
// success: () => {
// wx.hideLoading()
// wx.showToast({
// title: '保存成功,请到相册中查看',
// })
// },
// fail: () => {
// wx.hideLoading()
// wx.showToast({
// icon: 'none',
// title: '保存失败,请稍后重试',
// })
// },
// })
// } else {
// wx.hideLoading()
// wx.showToast({
// icon: 'none',
// title: '下载失败,请稍后重试',
// })
// }
// },
// fail: () => {
// wx.hideLoading()
// wx.showToast({
// icon: 'none',
// title: '下载失败,请稍后重试',
// })
// },
// })
},
handlePosterFinish(e: any) {
this.setData({
posterUrl: e.detail,
})
wx.hideLoading()
},
handleBack() {
wx.navigateBack()
},
})

6
src/doctor/pages/poster/index.wxml

@ -0,0 +1,6 @@
<view class="page">
<image class="poster" show-menu-by-longpress src="{{posterUrl}}"></image>
<view class="btn" bind:tap="handleDownload">长按图片保存</view>
</view>
<customPoster params="{{params}}" bind:finish="handlePosterFinish"></customPoster>

BIN
src/images/banner2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

BIN
src/images/bg22.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 KiB

BIN
src/images/icon100.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 753 B

BIN
src/images/icon101.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
src/images/icon102.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
src/images/icon103.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
src/images/illustrate.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

BIN
src/images/title13.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

BIN
src/images/title14.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

BIN
src/images/title15.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

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

@ -1,5 +1,5 @@
const app = getApp<IAppOption>() const app = getApp<IAppOption>()
import { calc, fmt } from 'a-calc' import { calc } from 'a-calc'
Page({ Page({
data: { data: {

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

@ -21,7 +21,7 @@
<input <input
class="input" class="input"
model:value="{{injectionWeight}}" model:value="{{injectionWeight}}"
type="number" type="digit"
placeholder-class="input-place" placeholder-class="input-place"
placeholder="请输入" placeholder="请输入"
bindblur="handleWeight" bindblur="handleWeight"

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

@ -36,7 +36,7 @@ page {
border-radius: 12rpx; border-radius: 12rpx;
.content { .content {
flex: 1; flex: 1;
font-size: 32rpx; font-size: 28rpx;
color: rgba(1, 1, 5, 1); color: rgba(1, 1, 5, 1);
&:empty::after { &:empty::after {
content: attr(data-place); content: attr(data-place);
@ -52,6 +52,18 @@ page {
} }
} }
} }
.clear {
flex-shrink: 0;
font-size: 28rpx;
color: rgba(1, 1, 5, 1);
display: flex;
align-items: center;
gap: 12rpx;
.icon {
width: 36rpx;
height: 36rpx;
}
}
} }
} }
.list { .list {

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

@ -19,6 +19,13 @@ Page({
this.addVisitRecord() this.addVisitRecord()
}) })
}, },
handleClear() {
this.setData({
beginDate: '',
endDate: '',
})
this.getList(1)
},
addVisitRecord() { addVisitRecord() {
wx.ajax({ wx.ajax({
method: 'POST', method: 'POST',

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

@ -1,7 +1,7 @@
<view class="page"> <view class="page">
<view class="header"> <view class="header">
<view class="range"> <view class="range">
<picker class="picker" mode="date" end="{{endDate}}" model:value="{{beginDate}}" bind:change="handleChange"> <picker class="picker" mode="date" end="{{endDate}}" model:value="{{beginDate}}" bind:change="handleChange">
<view class="picker-content"> <view class="picker-content">
<view class="content" data-place="开始时间">{{beginDate}}</view> <view class="content" data-place="开始时间">{{beginDate}}</view>
<view class="tril"></view> <view class="tril"></view>
@ -14,6 +14,10 @@
<view class="tril"></view> <view class="tril"></view>
</view> </view>
</picker> </picker>
<view class="clear" catchtap="handleClear">
<image class="icon" src="{{imageUrl}}icon98.png?t={{Timestamp}}"></image>
重选
</view>
</view> </view>
</view> </view>
<view class="list"> <view class="list">
@ -33,7 +37,7 @@
</view> </view>
</view> </view>
</view> </view>
<view class="row-resver"> <view class="row-resver" wx:if="{{item.remark}}">
<view class="label">其他情况备注</view> <view class="label">其他情况备注</view>
<view class="content">{{item.remark}}</view> <view class="content">{{item.remark}}</view>
</view> </view>

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

@ -36,7 +36,7 @@
</view> </view>
<view class="card2"> <view class="card2">
<view class="title"> <view class="title">
您近6个月的出血情况 其他情况备注
<view class="stat-font"> <view class="stat-font">
<text class="num">{{remark.length}}</text> <text class="num">{{remark.length}}</text>
/200 /200

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

@ -13,7 +13,7 @@
</view> </view>
</view> </view>
</view> </view>
<view class="card2"> <view class="card2" wx:if="{{detail.remark}}">
<view class="title">其他情况备注</view> <view class="title">其他情况备注</view>
<view class="content"> <view class="content">
{{detail.remark}} {{detail.remark}}

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

@ -1,3 +1,4 @@
const licia = require('miniprogram-licia')
import dayjs from 'dayjs' import dayjs from 'dayjs'
const app = getApp<IAppOption>() const app = getApp<IAppOption>()
@ -249,11 +250,7 @@ Page({
bleedingParts, bleedingParts,
}) })
}, },
updateSave(e = false) { updateSave(back = false) {
let back = false
if (e) {
back = (e as any).currentTarget.dataset.back
}
const { formKeys, ...reset } = this.data const { formKeys, ...reset } = this.data
const form: any = formKeys.reduce((pre, cur) => { const form: any = formKeys.reduce((pre, cur) => {
pre[cur] = reset[cur] pre[cur] = reset[cur]
@ -280,12 +277,29 @@ Page({
}) })
this.time = setTimeout(() => { this.time = setTimeout(() => {
wx.navigateBack() wx.navigateBack()
}) }, 2000)
} else { } else {
this.handlePrevUpdate() this.handlePrevUpdate()
} }
}) })
}, },
handleSubmit() {
const { formKeys, ...reset } = this.data
const empty = formKeys.every((key) => {
if (licia.isObj(reset[key])) {
return licia.isEmpty(1)
}
return !reset[key]
})
if (empty) {
wx.showToast({
icon: 'none',
title: '至少选择或填写一项信息',
})
return
}
this.updateSave(true)
},
handlePrevUpdate() { handlePrevUpdate() {
const pages = getCurrentPages() const pages = getCurrentPages()
const currentPage = pages[pages.length - 1] const currentPage = pages[pages.length - 1]

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

@ -305,7 +305,7 @@
</scroll-view> </scroll-view>
<view class="footer"> <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 class="submit" bind:tap="handleSubmit">完成</view>
</view> </view>
</swiper-item> </swiper-item>
</swiper> </swiper>
@ -314,7 +314,7 @@
<popup <popup
show="{{popupShow}}" show="{{popupShow}}"
type="{{popupType}}" type="{{popupType}}"
style="top: 30%" top="{{40}}"
params="{{popupParams}}" params="{{popupParams}}"
bind:ok="handlePopupOk" bind:ok="handlePopupOk"
bind:cancel="handlePopupCancel" bind:cancel="handlePopupCancel"

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

@ -140,6 +140,7 @@ page {
.doc { .doc {
margin-top: 32rpx; margin-top: 32rpx;
display: flex; display: flex;
align-items: center;
justify-content: flex-end; justify-content: flex-end;
gap: 58rpx; gap: 58rpx;
.total { .total {

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

@ -104,6 +104,7 @@ Page({
altList, altList,
cfRecordList, cfRecordList,
} }
console.log('DEBUGPRINT[107]: index.ts:102: initParams=', initParams)
this.initChart(initParams, rangeDate) this.initChart(initParams, rangeDate)
}) })
}, },
@ -293,15 +294,15 @@ Page({
}, },
initChart({ altList = {}, astList = {}, cfRecordList = {} }, rangeDate) { initChart({ altList = {}, astList = {}, cfRecordList = {} }, rangeDate) {
const arr = this.generateDateArray(rangeDate.beginDate, rangeDate.endDate) const arr = this.generateDateArray(rangeDate.beginDate, rangeDate.endDate)
console.log('DEBUGPRINT[99]: index.ts:263: arr=', arr) const astArr: Number[] = []
const astArr: string[] = [] const altArr: Number[] = []
const altArr: string[] = [] const cfRecordArr: Number[] = []
const cfRecordArr: string[] = []
arr.forEach((item: any) => { arr.forEach((item: any) => {
astArr.push(astList[item] || 0) astArr.push(astList[item] ? Number(astList[item]) : 0)
altArr.push(altList[item] || 0) altArr.push(altList[item] ? Number(altList[item]) : 0)
cfRecordArr.push(cfRecordList[item] || 0) cfRecordArr.push(cfRecordList[item] ? Number(cfRecordList[item]) : 0)
}) })
console.log(altArr)
this.ecDataTrendComponent.init((canvas, width, height, dpr) => { this.ecDataTrendComponent.init((canvas, width, height, dpr) => {
let chart = echarts.init(canvas, null, { let chart = echarts.init(canvas, null, {
width: width, width: width,
@ -423,6 +424,7 @@ Page({
name: 'AST天门冬氨酸氨基转移酶', name: 'AST天门冬氨酸氨基转移酶',
data: astArr, data: astArr,
type: 'line', type: 'line',
yAxisIndex: 1,
lineStyle: { width: 4 }, lineStyle: { width: 4 },
symbolSize: 6, symbolSize: 6,
color: { color: {
@ -442,8 +444,8 @@ Page({
}, },
{ {
name: 'ALT丙氨酸氨基转移酶', name: 'ALT丙氨酸氨基转移酶',
yAxisIndex: 0, yAxisIndex: 1,
data: altList, data: altArr,
type: 'line', type: 'line',
lineStyle: { width: 4 }, lineStyle: { width: 4 },
symbolSize: 6, symbolSize: 6,
@ -464,7 +466,6 @@ Page({
}, },
{ {
name: '凝血因子水平', name: '凝血因子水平',
yAxisIndex: 1,
data: cfRecordArr, data: cfRecordArr,
type: 'line', type: 'line',
lineStyle: { width: 4 }, lineStyle: { width: 4 },

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

@ -71,7 +71,7 @@ Page({
}) })
}, },
handleTCenter() { handleTCenter() {
const { periodInfo1 } = this.data const { periodInfo2 } = this.data
wx.ajax({ wx.ajax({
method: 'GET', method: 'GET',
url: '?r=wtx/common/get-treatment-center-list', url: '?r=wtx/common/get-treatment-center-list',
@ -81,7 +81,7 @@ Page({
popupShow: true, popupShow: true,
popupType: 'TCenter', popupType: 'TCenter',
popupParams: { popupParams: {
hospitalId: periodInfo1.hospitalId, hospitalId: periodInfo2.hospitalId,
list: res, list: res,
}, },
}) })

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

@ -300,11 +300,7 @@
class="feel" class="feel"
src="{{imageUrl}}icon43.png?t={{Timestamp}}" src="{{imageUrl}}icon43.png?t={{Timestamp}}"
></image> ></image>
<image <image wx:else class="feel" src="{{imageUrl}}icon49.png?t={{Timestamp}}"></image>
wx:else
class="feel"
src="{{imageUrl}}icon49.png?t={{Timestamp}}"
></image>
</view> </view>
</view> </view>
</view> </view>
@ -362,7 +358,7 @@
<view class="c-footer"> <view class="c-footer">
<view <view
class="content" class="content"
wx:if="{{periodInfo4.followUpWeekInfo.iYear || periodInfo4.followUpWeekInfo.iWeek}}" wx:if="{{periodInfo4.followUpWeekInfo.iYear || periodInfo4.followUpWeekInfo.iYearDay || periodInfo4.followUpWeekInfo.iWeek}}"
> >
当前是注射后 当前是注射后
<block wx:if="{{periodInfo4.followUpWeekInfo.iYear}}"> <block wx:if="{{periodInfo4.followUpWeekInfo.iYear}}">

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

@ -103,6 +103,11 @@ page {
.container0 { .container0 {
padding: 8rpx 0 0; padding: 8rpx 0 0;
.none {
display: block;
margin: 30rpx auto;
width: 80%;
}
.card1 { .card1 {
margin-top: 24rpx; margin-top: 24rpx;
border-radius: 24rpx 24rpx 24rpx 24rpx; border-radius: 24rpx 24rpx 24rpx 24rpx;
@ -418,6 +423,7 @@ page {
display: flex; display: flex;
gap: 32rpx; gap: 32rpx;
.label { .label {
flex-shrink: 0;
width: 9em; width: 9em;
font-size: 32rpx; font-size: 32rpx;
color: rgba(161, 164, 172, 1); color: rgba(161, 164, 172, 1);
@ -447,6 +453,7 @@ page {
align-items: center; align-items: center;
gap: 32rpx; gap: 32rpx;
.label { .label {
flex-shrink: 0;
width: 11em; width: 11em;
font-size: 32rpx; font-size: 32rpx;
color: rgba(161, 164, 172, 1); color: rgba(161, 164, 172, 1);
@ -538,6 +545,7 @@ page {
position: relative; position: relative;
z-index: 1; z-index: 1;
padding: 40rpx 32rpx 0; padding: 40rpx 32rpx 0;
min-height: 400rpx;
background-color: #fff; background-color: #fff;
border-radius: 24rpx; border-radius: 24rpx;
.lengend { .lengend {

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

@ -14,10 +14,11 @@ Page({
fold3: false, fold3: false,
fold4: false, fold4: false,
periodOne: {}, periodOne: [],
periodTwo: {}, periodTwo: [],
periodThree: {}, periodThree: {},
periodFour: {}, periodFour: [],
empty0: false,
medical: { medical: {
lastBleedingInfo: { lastBleedingInfo: {
@ -36,7 +37,7 @@ Page({
autoChoosedWhenJump: true, autoChoosedWhenJump: true,
firstDayOfWeek: 'Mon', firstDayOfWeek: 'Mon',
theme: 'geneb', theme: 'geneb',
takeoverTap: true, takeoverTap: false,
highlightToday: true, highlightToday: true,
onlyShowCurrentMonth: true, onlyShowCurrentMonth: true,
disableMode: { disableMode: {
@ -81,6 +82,14 @@ Page({
}).then((res) => { }).then((res) => {
this.setData({ this.setData({
...res, ...res,
empty0:
!res.periodOne.length &&
!res.periodTwo.length &&
!res.periodFour.length &&
!res.periodThree.injectionDate &&
!res.periodThree.injectionWeight &&
!res.periodThree.injectionDrugs &&
!res.periodThree.injectionNum,
}) })
}) })
} }
@ -219,6 +228,11 @@ Page({
url: `/patient/pages/preDiagnosisReport/index?examid=${id}&period=${period}`, url: `/patient/pages/preDiagnosisReport/index?examid=${id}&period=${period}`,
}) })
}, },
handleInjectionDate() {
wx.navigateTo({
url: '/patient/pages/injectDate/index',
})
},
}) })
export {} export {}

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

@ -29,7 +29,7 @@
<view class="nav {{nav==2 && 'active'}}" bindtap="handleNav" data-nav="2">随访日历</view> <view class="nav {{nav==2 && 'active'}}" bindtap="handleNav" data-nav="2">随访日历</view>
</view> </view>
<view class="container0" wx:if="{{nav==0}}"> <view class="container0" wx:if="{{nav==0}}">
<view class="card1"> <view class="card1" wx:if="{{periodFour.length}}">
<view class="c-header"> <view class="c-header">
<view class="left" bindtap="handleFold" data-fold="fold1"> <view class="left" bindtap="handleFold" data-fold="fold1">
<view class="title">随访期</view> <view class="title">随访期</view>
@ -56,7 +56,7 @@
</view> </view>
<view class="row"> <view class="row">
<view class="label">诊疗医院</view> <view class="label">诊疗医院</view>
<view class="content">{{item.hospitalName || '--'}}</view> <view class="content">{{item.hospitalName || '未填写'}}</view>
</view> </view>
<view class="row"> <view class="row">
<view class="label">检查项目</view> <view class="label">检查项目</view>
@ -69,7 +69,10 @@
</view> </view>
</view> </view>
</view> </view>
<view class="card2"> <view
class="card2"
wx:if="{{periodThree.injectionDate || periodThree.injectionWeight || periodThree.injectionDrugs || periodThree.injectionNum}}"
>
<view class="c-header"> <view class="c-header">
<view class="left" bindtap="handleFold" data-fold="fold2"> <view class="left" bindtap="handleFold" data-fold="fold2">
<view class="title">注射日</view> <view class="title">注射日</view>
@ -85,9 +88,12 @@
<view class="row"> <view class="row">
<view class="label">BBM-H901</view> <view class="label">BBM-H901</view>
<view class="content"> <view class="content">
<view>体重 {{periodThree.injectionWeight}}kg</view> <view wx:if="{{periodThree.injectionWeight}}">体重 {{periodThree.injectionWeight}}kg</view>
<view>用药 {{periodThree.injectionDrugs}}ml</view> <view wx:else>体重 未填写</view>
<view>预期用药 {{periodThree.injectionNum}} 瓶</view> <view wx:if="{{periodThree.injectionDrugs}}">用药 {{periodThree.injectionDrugs}}ml</view>
<view wx:else>用药 未填写</view>
<view wx:if="{{periodThree.injectionNum}}">预期用药 {{periodThree.injectionNum}} 瓶</view>
<view wx:else>预期用药 未填写</view>
</view> </view>
</view> </view>
<view class="options"> <view class="options">
@ -103,7 +109,7 @@
</view> </view>
</view> </view>
</view> </view>
<view class="card3"> <view class="card3" wx:if="{{periodTwo.length}}">
<view class="c-header"> <view class="c-header">
<view class="left" bindtap="handleFold" data-fold="fold3"> <view class="left" bindtap="handleFold" data-fold="fold3">
<view class="title">基因治疗中心检查</view> <view class="title">基因治疗中心检查</view>
@ -115,11 +121,11 @@
<view class="row"> <view class="row">
<view class="label">日期</view> <view class="label">日期</view>
<view class="content" wx:if="{{item.beginDate && item.endDate}}">{{item.beginDate}}~{{item.endDate}}</view> <view class="content" wx:if="{{item.beginDate && item.endDate}}">{{item.beginDate}}~{{item.endDate}}</view>
<view class="content" wx:else>--</view> <view class="content" wx:else>未填写</view>
</view> </view>
<view class="row"> <view class="row">
<view class="label">诊疗医院</view> <view class="label">诊疗医院</view>
<view class="content">{{item.hospitalName || '--'}}</view> <view class="content">{{item.hospitalName || '未填写'}}</view>
</view> </view>
<view class="row"> <view class="row">
<view class="label">检查项目</view> <view class="label">检查项目</view>
@ -143,7 +149,7 @@
</view> </view>
</view> </view>
</view> </view>
<view class="card4"> <view class="card4" wx:if="{{periodOne.length}}">
<view class="c-header"> <view class="c-header">
<view class="left" bindtap="handleFold" data-fold="fold4"> <view class="left" bindtap="handleFold" data-fold="fold4">
<view class="title">诊前筛查</view> <view class="title">诊前筛查</view>
@ -155,11 +161,11 @@
<view class="row"> <view class="row">
<view class="label">日期</view> <view class="label">日期</view>
<view class="content" wx:if="{{item.beginDate && item.endDate}}">{{item.beginDate}}~{{item.endDate}}</view> <view class="content" wx:if="{{item.beginDate && item.endDate}}">{{item.beginDate}}~{{item.endDate}}</view>
<view class="content" wx:else>--</view> <view class="content" wx:else>未填写</view>
</view> </view>
<view class="row"> <view class="row">
<view class="label">定点医院</view> <view class="label">定点医院</view>
<view class="content">{{item.hospitalName || '--'}}</view> <view class="content">{{item.hospitalName || '未填写'}}</view>
</view> </view>
<view class="row"> <view class="row">
<view class="label">检查项目</view> <view class="label">检查项目</view>
@ -183,6 +189,7 @@
</view> </view>
</view> </view>
</view> </view>
<image wx:if="{{empty0}}" class="none" src="{{imageUrl}}none.png"></image>
</view> </view>
<view class="container1" wx:if="{{nav==1}}"> <view class="container1" wx:if="{{nav==1}}">
<view class="c1_card1"> <view class="c1_card1">
@ -192,53 +199,59 @@
</view> </view>
<view class="row"> <view class="row">
<view class="label">确诊时间</view> <view class="label">确诊时间</view>
<view class="content">{{medical.diagnosisTime}}({{medical.diagnosisAge}})</view> <view class="content">
{{medical.diagnosisTime || '未填写'}}
<block wx:if="{{medical.diagnosisAge}}">({{medical.diagnosisAge}})</block>
</view>
</view> </view>
<view class="row"> <view class="row">
<view class="label">您的体重</view> <view class="label">您的体重</view>
<view class="content">{{medical.weight}} kg</view> <view class="content" wx:if="{{medical.weight}}">{{medical.weight}} kg</view>
<div class="content" wx:else>未填写</div>
</view> </view>
</view> </view>
<view class="c1_card1"> <view class="c1_card1">
<view class="row"> <view class="row">
<view class="label">凝血因子</view> <view class="label">凝血因子</view>
<view class="content">{{medical.clottingFactor}}%</view> <view class="content" wx:if="{{medical.clottingFactor}}">{{medical.clottingFactor}}%</view>
<view class="content" wx:else>未填写</view>
</view> </view>
<view class="row"> <view class="row">
<view class="label">治疗方案</view> <view class="label">治疗方案</view>
<view class="content">{{medical.treatmentPlanName}}</view> <view class="content">{{medical.treatmentPlanName || '未填写'}}</view>
</view> </view>
<view class="row"> <view class="row">
<view class="label">FIX暴露日</view> <view class="label">FIX暴露日</view>
<view class="content">{{medical.fixExposureDay}} 个</view> <view class="content" wx:if="{{medical.fixExposureDay}}">{{medical.fixExposureDay}}个</view>
<view class="content" wx:else>未填写</view>
</view> </view>
</view> </view>
<view class="c1_card2"> <view class="c1_card2">
<view class="row"> <view class="row">
<view class="wrap"> <view class="wrap">
<view class="label">既往FIX抑制物病史</view> <view class="label">既往FIX抑制物病史</view>
<view class="content">{{medical.beforeFixHistoryName}}</view> <view class="content">{{medical.beforeFixHistoryName || '未填写'}}</view>
</view> </view>
</view> </view>
<view class="row"> <view class="row">
<view class="wrap"> <view class="wrap">
<view class="label">既往肝脏疾病病史</view> <view class="label">既往肝脏疾病病史</view>
<view class="content">{{medical.beforeLiverHistoryName}}</view> <view class="content">{{medical.beforeLiverHistoryName || '未填写'}}</view>
</view> </view>
<view class="remark">{{medical.liverRecord}}</view> <view class="remark" wx:if="{{medical.liverRecord}}">{{medical.liverRecord}}</view>
</view> </view>
<view class="row"> <view class="row">
<view class="wrap"> <view class="wrap">
<view class="label">您是否有饮酒史</view> <view class="label">您是否有饮酒史</view>
<view class="content">{{medical.drinkingHistoryName}}</view> <view class="content">{{medical.drinkingHistoryName || '未填写'}}</view>
</view> </view>
</view> </view>
<view class="row"> <view class="row">
<view class="wrap"> <view class="wrap">
<view class="label">您是否有过敏史</view> <view class="label">您是否有过敏史</view>
<view class="content">{{medical.allergyHistoryName}}</view> <view class="content">{{medical.allergyHistoryName || '未填写'}}</view>
</view> </view>
<view class="remark">{{medical.allergyRecord}}</view> <view class="remark" wx:if="{{medical.allergyRecord}}">{{medical.allergyRecord}}</view>
</view> </view>
<view class="row1"> <view class="row1">
<view class="wrap"> <view class="wrap">
@ -247,9 +260,9 @@
<view>使用糖皮质激素的情况?</view> <view>使用糖皮质激素的情况?</view>
</view> </view>
<view class="line"></view> <view class="line"></view>
<view class="content">{{medical.isNotGlucocorticoidName}}</view> <view class="content">{{medical.isNotGlucocorticoidName || '未填写'}}</view>
</view> </view>
<view class="remark">{{medical.medicalHistoryInfo}}</view> <view class="remark" wx:if="{{medical.medicalHistoryInfo}}">{{medical.medicalHistoryInfo}}</view>
</view> </view>
</view> </view>
<view class="c1_card2"> <view class="c1_card2">
@ -257,9 +270,9 @@
<view class="wrap"> <view class="wrap">
<view class="label" style="width: 4em">靶关节</view> <view class="label" style="width: 4em">靶关节</view>
<view class="content"> <view class="content">
<text wx:for="{{medical.lastBleedingInfo.bleedingPartList}}" wx:key="bleedingId"> <view wx:for="{{medical.lastBleedingInfo.bleedingPartList}}" wx:key="bleedingId">
{{item.bleedingPartName}} {{item.bleedingPartName}}
</text> </view>
</view> </view>
</view> </view>
</view> </view>
@ -267,16 +280,21 @@
<view class="wrap"> <view class="wrap">
<view class="label">最近6个月出血</view> <view class="label">最近6个月出血</view>
</view> </view>
<view class="remark">{{medical.lastBleedingInfo.remark}}</view> <view class="remark" wx:if="{{medical.lastBleedingInfo.remark}}">{{medical.lastBleedingInfo.remark}}</view>
</view> </view>
</view> </view>
</view> </view>
<view class="container2" wx:if="{{nav==2}}"> <view class="container2" wx:if="{{nav==2}}">
<view class="date-card"> <view class="date-card" bind:tap="handleInjectionDate">
<image class="icon" src="{{imageUrl}}icon67.png?t={{Timestamp}}"></image> <image class="icon" src="{{imageUrl}}icon67.png?t={{Timestamp}}"></image>
<view class="content">注射日:{{followExam.injectionDateName}}</view> <view class="content" wx:if="{{followExam.injectionDateName}}">注射日:{{followExam.injectionDateName}}</view>
<view class="content" wx:else>请填写您的注射日生成随访计划</view>
</view> </view>
<view class="notic" style="background: url('{{imageUrl}}bg21.png?t={{Timestamp}}') no-repeat top center/100%"> <view
class="notic"
wx:if="{{followExam.injectionDateName}}"
style="background: url('{{imageUrl}}bg21.png?t={{Timestamp}}') no-repeat top center/100%"
>
<view class="title">{{followExam.tipsInfo}}</view> <view class="title">{{followExam.tipsInfo}}</view>
<view class="content" wx:if="{{followExam.lastNoticeWeekInfo}}">{{followExam.lastNoticeWeekInfo}}</view> <view class="content" wx:if="{{followExam.lastNoticeWeekInfo}}">{{followExam.lastNoticeWeekInfo}}</view>
<view class="sub-content" wx:if="{{followExam.lastNoticeExamInfo}}">{{followExam.lastNoticeExamInfo}}</view> <view class="sub-content" wx:if="{{followExam.lastNoticeExamInfo}}">{{followExam.lastNoticeExamInfo}}</view>

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

@ -79,10 +79,9 @@ page {
color: rgba(1, 1, 5, 1); color: rgba(1, 1, 5, 1);
line-height: 40rpx; line-height: 40rpx;
white-space: pre-line; white-space: pre-line;
&:last-of-type { display: flex;
display: flex; justify-content: center;
align-items: center; flex-direction: column;
}
} }
} }
.tr:nth-child(even) { .tr:nth-child(even) {

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

@ -30,7 +30,7 @@ Page({
}).then((res) => { }).then((res) => {
console.log('res: ', res) console.log('res: ', res)
this.setData({ this.setData({
injectionDate: dayjs(res.injectionDate).format('YYYY年MM月DD日 ddd'), injectionDate: res.injectionDate ? dayjs(res.injectionDate).format('YYYY年MM月DD日 ddd') : '',
stage: res.stage, stage: res.stage,
}) })
}) })

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

@ -1,7 +1,7 @@
<view class="page"> <view class="page">
<view class="date-card"> <view class="date-card">
<image class="icon" src="{{imageUrl}}icon67.png?t={{Timestamp}}"></image> <image class="icon" src="{{imageUrl}}icon67.png?t={{Timestamp}}"></image>
<view class="content">注射日:{{injectionDate}}</view> <view class="content">注射日:{{injectionDate || '未录入'}}</view>
</view> </view>
<view class="body"> <view class="body">
<view class="title">基因治疗后时间监测频率</view> <view class="title">基因治疗后时间监测频率</view>
@ -19,7 +19,10 @@
<view class="line-bottom"></view> <view class="line-bottom"></view>
</view> </view>
<view class="td">1 周内</view> <view class="td">1 周内</view>
<view class="td">每周2次 输注后第3天,第6天</view> <view class="td">
<view>每周2次</view>
<view>输注后第3天,第6天</view>
</view>
</view> </view>
<view class="tr {{stage === 2 && 'current'}} {{stage > 2 && 'active'}}"> <view class="tr {{stage === 2 && 'current'}} {{stage > 2 && 'active'}}">
<view class="aside"> <view class="aside">

5
src/patient/pages/index/index.ts

@ -8,13 +8,13 @@ Page({
// popupType: 'bindDoctor', // 绑定成功 // popupType: 'bindDoctor', // 绑定成功
// popupType: 'bindDoctorQuestion', // 为什么绑定医生 // popupType: 'bindDoctorQuestion', // 为什么绑定医生
// popupType: 'conformBindDoctorQuestion', // 确认绑定曾经扫码医生 // popupType: 'conformBindDoctorQuestion', // 确认绑定曾经扫码医生
popupType: 'conformBindDoctorConform', // 注册后绑定医生码 ptrueopupType: 'conformBindDoctorConform', // 注册后绑定医生码
popupParams: {}, popupParams: {},
doctorList: [], doctorList: [],
progress: 1, progress: 1,
swiperHeight: 0, swiperHeight: 220,
treatment: { treatment: {
followUpWeekInfo: {}, followUpWeekInfo: {},
examDiffDays: '', examDiffDays: '',
@ -53,6 +53,7 @@ Page({
if (this.data.isLoad) { if (this.data.isLoad) {
this.getBindDoctorList() this.getBindDoctorList()
this.getTeratmentInfo() this.getTeratmentInfo()
this.handleSwiperChange({ detail: { current: this.data.progress } })
} }
}, },
getBindDoctorList() { getBindDoctorList() {

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

@ -66,11 +66,14 @@ Page({
}) })
}, },
handleDrug() { handleDrug() {
const { dict } = this.data const { dict, drugId, drugName } = this.data
this.setData({ this.setData({
popupShow: true, popupShow: true,
popupType: 'inhibitors', popupType: 'inhibitors',
popupParams: { popupParams: {
drugId: drugId,
drugName: dict.drugList[drugId] == '其他' ? '其他' : drugName,
content: dict.drugList[drugId] == '其他' ? drugName : '',
list: dict.drugList, list: dict.drugList,
}, },
}) })

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

@ -18,13 +18,16 @@ Page({
dosageUnitIndex: 0, dosageUnitIndex: 0,
}, },
onLoad(options) { onLoad(options) {
console.log('DEBUGPRINT[71]: index.ts:29: options=', options)
this.setData({ this.setData({
period: options.period, period: options.period,
recordId: options.id || '',
}) })
},
onShow() {
app.waitLogin({ type: 1 }).then(() => { app.waitLogin({ type: 1 }).then(() => {
if (options.id) { const recordId = this.data.recordId
this.getDetail(options.id) if (recordId) {
this.getDetail(recordId)
} }
}) })
}, },

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

@ -110,6 +110,11 @@ Page({
examId: options.examid || '', examId: options.examid || '',
period: options.period || '1', period: options.period || '1',
}) })
if (options.period === '2') {
wx.setNavigationBarTitle({
title: '我的检查报告',
})
}
}, },
onShow() { onShow() {
const { formKeys, period } = this.data const { formKeys, period } = this.data

Loading…
Cancel
Save