儿科医生端

This commit is contained in:
@zuopngfei 2025-07-03 18:16:00 +08:00
parent c5aabfc3bf
commit 9960083e52
71 changed files with 813 additions and 10936 deletions

View File

@ -1,7 +1,5 @@
import config from '~/config'; const baseUrl = 'http://1.15.53.35:9998/';
const baseUrl = 'https://ddbs.1024tool.vip/';
const delay = config.isMock ? 500 : 0;
function request(url, method = 'GET', data = {}) { function request(url, method = 'GET', data = {}) {
const header = { const header = {
'content-type': 'application/json', 'content-type': 'application/json',
@ -20,29 +18,24 @@ function request(url, method = 'GET', data = {}) {
dataType: 'json', // 微信官方文档中介绍会对数据进行一次JSON.parse dataType: 'json', // 微信官方文档中介绍会对数据进行一次JSON.parse
header, header,
success(res) { success(res) {
console.log(res) if (res.data.code) {
setTimeout(() => { if (res.data.code == 10103) {
if(res.data.code && res.data.code == 10103){
wx.removeStorageSync('access_token'); wx.removeStorageSync('access_token');
wx.switchTab({ wx.switchTab({
url: '/pages/my/index', url: '/pages/my/index',
}) })
reject(res.data); reject(res.data);
}
reject(res.data);
} else { } else {
console.log(res.data)
resolve(res.data); resolve(res.data);
} }
}, delay);
}, },
fail(err) { fail(err) {
setTimeout(() => {
console.log(err) console.log(err)
// 断网、服务器挂了都会fail回调直接reject即可 // 断网、服务器挂了都会fail回调直接reject即可
reject(err); reject(err);
}, delay);
}, },
}); });
}); });

20
app.js
View File

@ -1,12 +1,6 @@
// app.js // app.js
import config from './config';
import Mock from './mock/index';
import createBus from './utils/eventBus'; import createBus from './utils/eventBus';
import { connectSocket, fetchUnreadNum } from './mock/chat';
if (config.isMock) {
Mock();
}
App({ App({
onLaunch() { onLaunch() {
@ -28,8 +22,6 @@ App({
}); });
}); });
this.getUnreadNum();
this.connect();
}, },
globalData: { globalData: {
userInfo: null, userInfo: null,
@ -50,17 +42,5 @@ App({
this.globalData.socket = socket; this.globalData.socket = socket;
}, },
/** 获取未读消息数量 */
getUnreadNum() {
fetchUnreadNum().then(({ data }) => {
this.globalData.unreadNum = data;
this.eventBus.emit('unread-num-change', data);
});
},
/** 设置未读消息数量 */
setUnreadNum(unreadNum) {
this.globalData.unreadNum = unreadNum;
this.eventBus.emit('unread-num-change', unreadNum);
},
}); });

View File

@ -28,6 +28,12 @@ page {
button{ button{
margin: 0; margin: 0;
} }
.t-image-viewer {
top: 0;
}
.t-navbar__content{
background-color: transparent;
}
} }
.page { .page {

View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>生长曲线备份</title>
<defs>
<linearGradient x1="50%" y1="0%" x2="50%" y2="97.7014374%" id="linearGradient-1">
<stop stop-color="#54A4E6" offset="0%"></stop>
<stop stop-color="#1C71B3" offset="100%"></stop>
</linearGradient>
<rect id="path-2" x="0" y="0" width="18" height="18" rx="4"></rect>
</defs>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="02首页-00" transform="translate(-22.000000, -100.000000)">
<g id="宝宝生长曲线" transform="translate(12.000000, 100.000000)">
<g id="生长曲线备份" transform="translate(10.000000, 0.000000)">
<mask id="mask-3" fill="white">
<use xlink:href="#path-2"></use>
</mask>
<use id="蒙版" fill="url(#linearGradient-1)" xlink:href="#path-2"></use>
<path d="M13.2887481,8.84531617 C14.1171752,8.84531617 14.7887481,9.51688904 14.7887481,10.3453162 L14.7887481,13.9183441 C14.7887481,14.7467712 14.1171752,15.4183441 13.2887481,15.4183441 L13.0022341,15.4183441 C12.173807,15.4183441 11.5022341,14.7467712 11.5022341,13.9183441 L11.5022341,10.3453162 C11.5022341,9.51688904 12.173807,8.84531617 13.0022341,8.84531617 L13.2887481,8.84531617 Z M4.08650902,12.1308664 C4.91493615,12.1308664 5.58650902,12.8024393 5.58650902,13.6308664 L5.58650902,13.9173803 C5.58650902,14.7458075 4.91493615,15.4173803 4.08650902,15.4173803 L3.79999507,15.4173803 C2.97156795,15.4173803 2.29999507,14.7458075 2.29999507,13.9173803 L2.29999507,13.6308664 C2.29999507,12.8024393 2.97156795,12.1308664 3.79999507,12.1308664 L4.08650902,12.1308664 Z M8.68762856,10.8150892 C9.51605568,10.8150892 10.1876286,11.486662 10.1876286,12.3150892 L10.1876286,13.9162087 C10.1876286,14.7446358 9.51605568,15.4162087 8.68762856,15.4162087 L8.40111461,15.4162087 C7.57268748,15.4162087 6.90111461,14.7446358 6.90111461,13.9162087 L6.90111461,12.3150892 C6.90111461,11.486662 7.57268748,10.8150892 8.40111461,10.8150892 L8.68762856,10.8150892 Z M16.1174277,3.43416352 C16.1291426,3.55601781 16.1183842,3.67898747 16.0856874,3.79695624 L15.2775434,6.71271375 C15.1300309,7.24493411 14.5789985,7.55680143 14.0467782,7.40928892 C13.8518339,7.35525732 13.6778605,7.24337219 13.5478287,7.08840633 L12.9656075,6.3972697 C10.1188007,8.87646671 7.4276443,9.86144651 3.86551098,9.93934871 L3.48661779,9.94422682 L2.98876335,9.94281924 C2.55314138,9.94281924 2.2,9.58967786 2.2,9.15405589 C2.2,8.78914098 2.44902966,8.47819263 2.79724606,8.38965382 L2.90453675,8.3699329 L2.9893466,8.36529383 L3.51583083,8.36645753 C6.88597863,8.34509504 9.31054469,7.49628332 11.9523661,5.18796425 L11.3441794,4.46219937 C10.9891777,4.0391247 11.0443616,3.40836911 11.4674363,3.05336731 C11.6224021,2.92333552 11.8131611,2.84336034 12.0145262,2.82400131 L15.0263196,2.53445076 C15.5760696,2.48159839 16.0645753,2.88441352 16.1174277,3.43416352 Z" id="形状结合" fill="#FFFFFF" mask="url(#mask-3)"></path>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 701 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>健康教育</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="04我的-00-00" transform="translate(-28.000000, -273.000000)">
<g id="编组-11备份-3" transform="translate(12.000000, 204.000000)">
<g id="健康教育" transform="translate(0.000000, 53.000000)">
<g transform="translate(16.000000, 16.000000)">
<rect id="矩形" fill="#FFFFFF" opacity="0.00999999978" x="0" y="0" width="20" height="20"></rect>
<g id="编组-4" transform="translate(2.000000, 2.000000)">
<path d="M14,6.08333333 C14.345178,6.08333333 14.657678,6.22324435 14.8838835,6.44944986 C15.110089,6.67565536 15.25,6.98815536 15.25,7.33333333 L15.25,7.33333333 L15.25,14 C15.25,14.345178 15.110089,14.657678 14.8838835,14.8838835 C14.657678,15.110089 14.345178,15.25 14,15.25 L14,15.25 L11.8649104,15.25 L11.8649104,6.08333333 Z" id="蒙版备份" stroke="#333333" stroke-width="1.5"></path>
<path d="M9.44444444,0.75 C10.0657648,0.75 10.6282648,1.00183983 11.0354347,1.40900974 C11.4426046,1.81617966 11.6944444,2.37867966 11.6944444,3 L11.6944444,3 L11.6944444,15.25 L3,15.25 C2.37867966,15.25 1.81617966,14.9981602 1.40900974,14.5909903 C1.00183983,14.1838203 0.75,13.6213203 0.75,13 L0.75,13 L0.75,3 C0.75,2.37867966 1.00183983,1.81617966 1.40900974,1.40900974 C1.81617966,1.00183983 2.37867966,0.75 3,0.75 L3,0.75 Z" id="蒙版" stroke="#333333" stroke-width="1.5"></path>
<g id="编组-2" transform="translate(3.111111, 3.400000)" fill="#005BA2">
<rect id="矩形" x="0" y="2.44444444" width="6.22222222" height="1.33333333" rx="0.666666667"></rect>
<path d="M0.666666667,2.44444444 L5.55555556,2.44444444 C5.92374539,2.44444444 6.22222222,2.74292128 6.22222222,3.11111111 C6.22222222,3.47930094 5.92374539,3.77777778 5.55555556,3.77777778 L0.666666667,3.77777778 C0.298476833,3.77777778 3.64153152e-14,3.47930094 3.64153152e-14,3.11111111 C3.64153152e-14,2.74292128 0.298476833,2.44444444 0.666666667,2.44444444 Z" id="矩形" transform="translate(3.111111, 3.111111) rotate(90.000000) translate(-3.111111, -3.111111) "></path>
</g>
<rect id="矩形备份" fill="#005BA2" x="2.66666667" y="11.2" width="7.11111111" height="1.33333333" rx="0.666666667"></rect>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

View File

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>用药方案</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="04我的-00-00" transform="translate(-28.000000, -220.000000)">
<g id="编组-11备份-3" transform="translate(12.000000, 204.000000)">
<g id="用药方案" transform="translate(16.000000, 16.000000)">
<rect id="Rectangle-3" fill-opacity="0.01" fill="#EEEEEE" x="0" y="0" width="20" height="20"></rect>
<g id="编组-14" transform="translate(3.600000, 2.000000)">
<rect id="矩形" stroke="#333333" stroke-width="1.5" x="2.25980392" y="0.75" width="8.31372549" height="2.625" rx="1"></rect>
<path d="M10.1646069,3.5 L11.8771593,6.09940994 C12.0116516,6.30354996 12.0833333,6.54264578 12.0833333,6.78710705 L12.0833333,6.78710705 L12.0833333,14.5 C12.0833333,14.845178 11.9434223,15.157678 11.7172168,15.3838835 C11.4910113,15.610089 11.1785113,15.75 10.8333333,15.75 L10.8333333,15.75 L2,15.75 C1.65482203,15.75 1.34232203,15.610089 1.11611652,15.3838835 C0.889911016,15.157678 0.75,14.845178 0.75,14.5 L0.75,14.5 L0.75,6.78710705 C0.75,6.54264578 0.821681769,6.30354996 0.95617402,6.09940994 L0.95617402,6.09940994 L2.66872645,3.5 L10.1646069,3.5 Z" id="矩形" stroke="#333333" stroke-width="1.5"></path>
<rect id="矩形" x="0" y="7.5625" width="12.8333333" height="6.1875"></rect>
<g id="编组-24" transform="translate(3.666667, 7.235119)" fill="#005BA2">
<rect id="矩形" x="0" y="2.0625" width="5.5" height="1.375" rx="0.6875"></rect>
<path d="M0.6875,2.0625 L4.8125,2.0625 C5.19219577,2.0625 5.5,2.37030423 5.5,2.75 C5.5,3.12969577 5.19219577,3.4375 4.8125,3.4375 L0.6875,3.4375 C0.307804235,3.4375 -1.13686838e-13,3.12969577 -1.13686838e-13,2.75 C-1.13686838e-13,2.37030423 0.307804235,2.0625 0.6875,2.0625 Z" id="矩形" transform="translate(2.750000, 2.750000) rotate(90.000000) translate(-2.750000, -2.750000) "></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

186
assets/js/heightWeight.js Normal file
View File

@ -0,0 +1,186 @@
export const heightList = {
boy: [
[47.6, 54.8],
[51.3, 59.0],
[54.9, 63.0],
[58.0, 66.4],
[60.5, 69.1],
[62.5, 71.3],
[64.2, 73.2],
[65.7, 74.9],
[67.1, 76.4],
[68.3, 77.8],
[69.5, 79.1],
[70.7, 80.4],
[71.7, 81.6],
[72.8, 82.8],
[73.8, 84.0],
[74.8, 85.1],
[75.8, 86.3],
[76.8, 87.4],
[77.7, 88.5],
[78.6, 89.6],
[79.6, 90.6],
[80.5, 91.7],
[81.4, 92.8],
[82.2, 93.7],
[82.4, 94.0],
[84.8, 96.8],
[87.0, 99.4],
[89.0, 101.9],
[90.9, 104.1],
[92.7, 106.2],
[94.4, 108.3],
[96.0, 110.2],
[97.6, 112.2],
[99.2, 114.1],
[100.8, 116.0],
[102.4, 117.9],
[104.1, 119.9],
[105.7, 121.8],
[107.2, 123.7],
[108.8, 125.5],
[110.3, 127.3],
[111.7, 129.1],
[113.1, 130.9],
[114.5, 132.5]
],
girl: [
[46.8, 53.8],
[50.4, 57.8],
[53.8, 61.6],
[56.7, 64.8],
[59.1, 67.4],
[61.0, 69.6],
[62.7, 71.5],
[64.2, 73.5],
[65.6, 74.7],
[66.8, 76.1],
[68.1, 77.5],
[69.2, 78.8],
[70.4, 80.1],
[71.4, 81.4],
[72.5, 82.6],
[73.4, 83.8],
[74.6, 84.9],
[75.5, 86.1],
[76.5, 87.2],
[77.5, 88.3],
[78.4, 89.4],
[79.3, 90.4],
[80.2, 91.5],
[81.1, 92.5],
[81.2, 92.8],
[83.6, 95.5],
[85.7, 98.1],
[87.7, 100.5],
[89.7, 102.7],
[91.5, 104.9],
[93.2, 106.9],
[94.9, 108.9],
[96.5, 110.9],
[98.1, 112.8],
[99.7, 114.7],
[101.3, 116.7],
[103.0, 118.6],
[104.6, 120.6],
[106.1, 122.4],
[107.6, 124.2],
[109.0, 126.0],
[110.4, 127.7],
[111.8, 129.4],
[113.2, 131.0]
]
}
export const weightList = {
boy: [
[2.8, 4.2],
[3.7, 5.6],
[4.7, 7.1],
[5.5, 8.3],
[6.1, 9.2],
[6.6, 9.8],
[6.9, 10.3],
[7.2, 10.8],
[7.5, 11.1],
[7.7, 11.5],
[7.9, 11.8],
[8.1, 12.0],
[8.3, 12.3],
[8.4, 12.5],
[8.6, 12.8],
[8.8, 13.2],
[9.0, 13.5],
[9.1, 13.8],
[9.3, 14.0],
[9.5, 14.3],
[9.7, 14.6],
[9.8, 14.8],
[10.3, 15.5],
[10.7, 16.2],
[11.1, 16.9],
[11.5, 17.7],
[12.0, 18.4],
[12.4, 19.1],
[12.8, 19.8],
[13.1, 20.5],
[13.5, 21.1],
[13.9, 21.9],
[14.3, 22.6],
[14.7, 23.4],
[15.1, 24.3],
[15.5, 25.1],
[15.9, 26.0],
[16.3, 26.8],
[16.7, 27.6],
[17.0, 28.5],
[17.4, 29.3]
],
girl: [
[2.7, 4.1],
[3.5, 5.3],
[4.4, 6.6],
[5.1, 7.6],
[5.6, 8.4],
[6.0, 9.1],
[6.4, 9.6],
[6.7, 10.0],
[6.9, 10.4],
[7.2, 10.8],
[7.4, 11.1],
[7.6, 11.4],
[7.7, 11.6],
[7.9, 11.9],
[8.1, 12.2],
[8.3, 12.4],
[8.4, 12.7],
[8.6, 12.9],
[8.8, 13.2],
[9.0, 13.5],
[9.1, 13.8],
[9.3, 14.0],
[9.5, 14.3],
[9.7, 14.6],
[9.8, 14.8],
[10.3, 15.5],
[10.7, 16.2],
[11.1, 16.9],
[11.5, 17.7],
[12.0, 18.4],
[12.4, 19.1],
[12.8, 19.8],
[13.1, 20.5],
[13.5, 21.1],
[13.9, 21.9],
[14.3, 22.6],
[14.7, 23.4],
[15.1, 24.3],
[15.5, 25.1],
[15.9, 26.0],
[16.3, 26.8],
[16.7, 27.6],
[17.0, 28.5],
[17.4, 29.3]
]
}

View File

@ -1,9 +0,0 @@
Component({
properties: {
url: String,
desc: String,
tags: Array,
},
data: {},
methods: {},
});

View File

@ -1,7 +0,0 @@
{
"component": true,
"usingComponents": {
"t-image": "tdesign-miniprogram/image/image",
"t-tag": "tdesign-miniprogram/tag/tag"
}
}

View File

@ -1,27 +0,0 @@
@import '/variable.less';
.home-card {
display: inline-flex;
flex-direction: column;
width: 340rpx;
height: 488rpx;
border-radius: 9px;
background: @bg-color-white;
&__image {
width: 340rpx;
height: 340rpx;
}
&__info {
padding: 32rpx;
font-weight: 400;
font-size: @font-size-small;
}
&__tag-group {
display: flex;
gap: 16rpx;
margin-top: 16rpx;
}
}

View File

@ -1,9 +0,0 @@
<view class="home-card">
<t-image t-class="home-card__image" src="{{url}}" mode="aspectFill" />
<view class="home-card__info">
<text>{{desc}}</text>
<view class="home-card__tag-group">
<t-tag wx:for="{{tags}}" wx:key="index" size="small" variant="light" theme="{{item.theme}}">{{item.text}}</t-tag>
</view>
</view>
</view>

View File

@ -1,109 +0,0 @@
Component({
options: {
styleIsolation: 'shared',
},
properties: {
navType: {
type: String,
value: 'title',
},
titleText: String,
},
data: {
visible: false,
sidebar: [
{
title: '首页',
url: 'pages/home/index',
isSidebar: true,
},
{
title: '搜索页',
url: 'pages/search/index',
isSidebar: false,
},
{
title: '发布页',
url: 'pages/release/index',
isSidebar: false,
},
{
title: '消息列表页',
url: 'pages/message/index',
isSidebar: true,
},
{
title: '对话页',
url: 'pages/chat/index',
isSidebar: false,
},
{
title: '个人中心页',
url: 'pages/my/index',
isSidebar: true,
},
{
title: '个人信息表单页',
url: 'pages/my/info-edit/index',
isSidebar: false,
},
{
title: '设置页',
url: 'pages/setting/index',
isSidebar: false,
},
{
title: '数据图表页',
url: 'pages/dataCenter/index',
isSidebar: false,
},
{
title: '登录注册页',
url: 'pages/login/login',
isSidebar: false,
},
],
statusHeight: 0,
},
lifetimes: {
ready() {
const statusHeight = wx.getWindowInfo().statusBarHeight;
this.setData({ statusHeight });
},
},
methods: {
openDrawer() {
this.setData({
visible: true,
});
},
itemClick(e) {
const that = this;
const { isSidebar, url } = e.detail.item;
if (isSidebar) {
wx.switchTab({
url: `/${url}`,
}).then(() => {
// 防止点回tab时sidebar依旧是展开模式
that.setData({
visible: false,
});
});
} else {
wx.navigateTo({
url: `/${url}`,
}).then(() => {
that.setData({
visible: false,
});
});
}
},
searchTurn() {
wx.navigateTo({
url: `/pages/search/index`,
});
},
},
});

View File

@ -1,9 +0,0 @@
{
"component": true,
"usingComponents": {
"t-navbar": "tdesign-miniprogram/navbar/navbar",
"t-icon": "tdesign-miniprogram/icon/icon",
"t-drawer": "tdesign-miniprogram/drawer/drawer",
"t-search": "tdesign-miniprogram/search/search"
}
}

View File

@ -1,30 +0,0 @@
@import '/variable.less';
.home-navbar {
.t-navbar {
&__left {
margin-left: 12rpx;
}
}
&__icon {
padding: 12rpx;
}
&__left {
display: flex;
align-items: center;
padding: 0 16rpx;
.t-search {
--td-search-height: 64rpx;
--td-search-font-size: @font-size-mini;
width: 375rpx;
.t-icon {
font-size: @font-size-default !important;
}
}
}
--td-drawer-title-font-size: 48rpx;
}

View File

@ -1,23 +0,0 @@
<view class="home-navbar">
<t-navbar title="{{ titleText }}">
<!-- <view slot="left">
<view class="home-navbar__left">
<t-icon class="home-navbar__icon" bind:tap="openDrawer" name="view-list" size="48rpx" />
<t-search
shape="round"
placeholder="请搜索你想要的内容"
bindtap="searchTurn"
wx:if="{{navType === 'search'}}"
/>
</view>
</view> -->
</t-navbar>
<!-- <t-drawer
style="padding-top: {{statusHeight}}px;"
visible="{{visible}}"
items="{{sidebar}}"
placement="left"
title="页面目录"
bind:item-click="itemClick"
/> -->
</view>

View File

@ -1,4 +0,0 @@
export default {
isMock: true,
baseUrl: '',
};

View File

@ -1,57 +0,0 @@
const app = getApp();
Component({
data: {
value: '', // 初始值设置为空,避免第一次加载时闪烁
unreadNum: 0, // 未读消息数量
list: [
{
icon: 'home',
value: 'index',
label: '首页',
},
{
icon: 'chat',
value: 'notice',
label: '随访',
},
{
icon: 'user',
value: 'my',
label: '我1的',
},
],
},
lifetimes: {
ready() {
const pages = getCurrentPages();
const curPage = pages[pages.length - 1];
if (curPage) {
const nameRe = /pages\/(\w+)\/index/.exec(curPage.route);
if (nameRe === null) return;
if (nameRe[1] && nameRe) {
this.setData({
value: nameRe[1],
});
}
}
// 同步全局未读消息数量
this.setUnreadNum(app.globalData.unreadNum);
app.eventBus.on('unread-num-change', (unreadNum) => {
this.setUnreadNum(unreadNum);
});
},
},
methods: {
handleChange(e) {
const { value } = e.detail;
wx.switchTab({ url: `/pages/${value}/index` });
},
/** 设置未读消息数量 */
setUnreadNum(unreadNum) {
this.setData({ unreadNum });
},
},
});

View File

@ -1,7 +0,0 @@
{
"component": true,
"usingComponents": {
"t-tab-bar": "tdesign-miniprogram/tab-bar/tab-bar",
"t-tab-bar-item": "tdesign-miniprogram/tab-bar-item/tab-bar-item"
}
}

View File

@ -1,10 +0,0 @@
@import '/variable.less';
.custom-tab-bar {
--td-tab-bar-height: @tab-bar-height;
&-item {
margin: 0;
padding: 16rpx 24rpx;
}
}

View File

@ -1,5 +0,0 @@
<t-tab-bar value="{{ value }}" theme="tag" split="{{ false }}" bind:change="handleChange">
<t-tab-bar-item icon="home" value="home">首页</t-tab-bar-item>
<t-tab-bar-item icon="chat" value="message">随访</t-tab-bar-item>
<t-tab-bar-item icon="user" value="my">我的</t-tab-bar-item>
</t-tab-bar>

View File

@ -1,19 +0,0 @@
/* eslint-disable */
var __request = wx.request;
var Mock = require('./mock.js');
Object.defineProperty(wx, 'request', { writable: true });
wx.request = function (config) {
if (typeof Mock._mocked[config.url] == 'undefined') {
__request(config);
return;
}
var resTemplate = Mock._mocked[config.url].template;
var response = Mock.mock(resTemplate);
if (typeof config.success == 'function') {
config.success(response);
}
if (typeof config.complete == 'function') {
config.complete(response);
}
};
module.exports = Mock;

View File

@ -1,140 +0,0 @@
/** 模拟网络请求的延迟 */
function delay(ms = 500) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
// 模拟聊天数据
const mockData = [
{
userId: 1,
name: 'Sean',
avatar: '/static/chat/avatar-Sean.png',
messages: [
{ messageId: 1, from: 1, content: '那明天准时见哦😊', time: 1690646400000, read: true },
{ messageId: 2, from: 0, content: '好的,我会记得的', time: 1690646400000, read: true },
{ messageId: 3, from: 1, content: '在吗?', time: Date.now() - 3600000, read: false },
{
messageId: 4,
from: 1,
content: '有个问题想咨询一下关于TDesign组件库如何更好地使用',
time: Date.now() - 3600000,
read: false,
},
],
},
{
userId: 2,
name: 'Mollymolly',
avatar: '/static/chat/avatar-Mollymolly.png',
messages: [{ messageId: 5, from: 1, content: '好久不见,最近咋样?', time: 1692100800000, read: true }],
},
{
userId: 3,
name: 'Andrew',
avatar: '/static/chat/avatar-Andrew.png',
messages: [{ messageId: 6, from: 0, content: '现在没空,晚点再联系你哈', time: 1690084800000, read: true }],
},
{
userId: 4,
name: 'Kingdom',
avatar: '/static/chat/avatar-Kingdom.png',
messages: [{ messageId: 7, from: 1, content: '真的吗?', time: 1656880200000, read: true }],
},
{
userId: 5,
name: 'Paige',
avatar: '/static/chat/avatar-Paige.png',
messages: [
{ messageId: 8, from: 1, content: '此次要评审的首页和专区页改版的交互方案', time: 1652963880000, read: true },
],
},
];
// 模拟新增一条消息
function addNewMessage(userId, from, content) {
const index = mockData.map((item) => item.userId).indexOf(userId);
const user = mockData.splice(index, 1)[0];
mockData.unshift(user);
let messageId = 0;
mockData.forEach((item) => {
messageId += item.messages.length;
});
const message = { messageId, from, content, time: Date.now(), read: from === 0 };
user.messages.push(message);
return message;
}
/** 模拟SocketTask */
class MockSocketTask {
constructor(url) {
this.url = url;
this.onopen = () => {};
this.onmessage = () => {};
this.onclose = () => {};
delay(1000).then(() => {
this.onopen();
});
}
onOpen(callback) {
if (typeof callback === 'function') this.onopen = callback;
}
onMessage(callback) {
if (typeof callback === 'function') this.onmessage = callback;
}
send(data) {
data = JSON.parse(data);
if (data.type === 'message') {
const { userId, content } = data.data;
delay().then(() => {
const message = addNewMessage(userId, 0, content);
this.onmessage(JSON.stringify({ type: 'message', data: { userId, message } }));
});
// 模拟3秒后对方回复消息
delay(3000).then(() => {
const message = addNewMessage(userId, 1, ['收到', '好的', '知道了', '👌OK'].at(Math.floor(Math.random() * 4)));
this.onmessage(JSON.stringify({ type: 'message', data: { userId, message } }));
});
}
}
}
/** 连接WebSocket返回SocketTask对象 */
export function connectSocket() {
// return wx.connectSocket({ url: 'url' })
return new MockSocketTask('ws://localhost:8080');
}
/** 获取未读消息数量 */
export function fetchUnreadNum() {
let unreadNum = 0;
mockData.forEach((item) => {
unreadNum += item.messages.filter((message) => !message.read).length;
});
return delay().then(() => ({ code: 200, data: unreadNum }));
}
/** 获取完整消息列表 */
export function fetchMessageList() {
return delay().then(() => ({ code: 200, data: JSON.parse(JSON.stringify(mockData)) }));
}
/** 将某个用户的所有消息标记为已读 */
export function markMessagesRead(userId) {
let index = 0;
while (index < mockData.length) {
const user = mockData[index];
if (user.userId === userId) {
user.messages.forEach((message) => {
message.read = true;
});
break;
}
index += 1;
}
}

View File

@ -1,98 +0,0 @@
export default {
path: '/dataCenter/area',
data: {
returnType: 'succ',
generateType: 'template',
manual: {
succ: {
resStr: {
data: '',
statusCode: '',
header: '',
},
},
fail: {
resStr: {
errMsg: 'request:fail 填写错误信息',
},
},
},
template: {
succ: {
data: {
list: [
{
标题: '视频A',
全球: '4442',
华北: '456',
华东: '456',
},
{
标题: '视频A',
全球: '4442',
华北: '456',
华东: '456',
},
{
标题: '视频A',
全球: '4442',
华北: '456',
华东: '456',
},
{
标题: '视频A',
全球: '4442',
华北: '456',
华东: '456',
},
{
标题: '视频A',
全球: '4442',
华北: '456',
华东: '456',
},
{
标题: '视频A',
全球: '4442',
华北: '456',
华东: '456',
},
{
标题: '视频A',
全球: '4442',
华北: '456',
华东: '456',
},
{
标题: '视频A',
全球: '4442',
华北: '456',
华东: '456',
},
{
标题: '视频A',
全球: '4442',
华北: '456',
华东: '456',
},
{
标题: '视频A',
全球: '4442',
华北: '456',
华东: '456',
},
],
},
statusCode: 200,
header: {
'content-type': 'application/json; charset=utf-8',
},
},
fail: {
templateStr: {
errMsg: 'request:fail 填写错误信息',
},
},
},
},
};

View File

@ -1,62 +0,0 @@
export default {
path: '/dataCenter/complete-rate',
data: {
returnType: 'succ',
generateType: 'template',
manual: {
succ: {
resStr: {
data: '',
statusCode: '',
header: '',
},
},
fail: {
resStr: {
errMsg: 'request:fail 填写错误信息',
},
},
},
template: {
succ: {
data: {
list: [
{
time: '12:00',
percentage: '80',
},
{
time: '14:00',
percentage: '60',
},
{
time: '16:00',
percentage: '85',
},
{
time: '18:00',
percentage: '43',
},
{
time: '20:00',
percentage: '60',
},
{
time: '22:00',
percentage: '95',
},
],
},
statusCode: 200,
header: {
'content-type': 'application/json; charset=utf-8',
},
},
fail: {
templateStr: {
errMsg: 'request:fail 填写错误信息',
},
},
},
},
};

View File

@ -1,32 +0,0 @@
export default {
path: '/dataCenter/interaction',
data: {
returnType: 'succ',
generateType: 'template',
manual: {
succ: {
resStr: { data: '', statusCode: '', header: '' },
},
fail: {
resStr: { errMsg: 'request:fail 填写错误信息' },
},
},
template: {
succ: {
data: {
list: [
{ name: '浏览量', number: '919' },
{ name: '点赞量', number: '887' },
{ name: '分享量', number: '104' },
{ name: '收藏', number: '47' },
],
},
statusCode: 200,
header: { 'content-type': 'application/json; charset=utf-8' },
},
fail: {
templateStr: { errMsg: 'request:fail 填写错误信息' },
},
},
},
};

View File

@ -1,50 +0,0 @@
export default {
path: '/dataCenter/member',
data: {
returnType: 'succ',
generateType: 'template',
manual: {
succ: {
resStr: {
data: '',
statusCode: '',
header: '',
},
},
fail: {
resStr: {
errMsg: 'request:fail 填写错误信息',
},
},
},
template: {
succ: {
data: {
list: [
{
name: '浏览量',
number: '202W',
},
{
name: 'PV',
number: '233W',
},
{
name: 'UV',
number: '102W',
},
],
},
statusCode: 200,
header: {
'content-type': 'application/json; charset=utf-8',
},
},
fail: {
templateStr: {
errMsg: 'request:fail 填写错误信息',
},
},
},
},
};

View File

@ -1,6 +0,0 @@
import getDataCenterArea from './getArea';
import getDataCenterMember from './getMember';
import getDataCompleteRate from './getCompleteRate';
import getDataInteraction from './getInteraction';
export default [getDataCenterArea, getDataCenterMember, getDataCompleteRate, getDataInteraction];

View File

@ -1,79 +0,0 @@
export default {
path: '/home/cards',
data: {
code: 200,
message: '请求成功',
data: [
{
url: '/static/home/card0.png',
desc: '少年,星空与梦想',
tags: [
{
text: 'AI绘画',
theme: 'primary',
},
{
text: '版权素材',
theme: 'success',
},
],
},
{
url: '/static/home/card1.png',
desc: '仰望星空的少女',
tags: [
{
text: 'AI绘画',
theme: 'primary',
},
{
text: '版权素材',
theme: 'success',
},
],
},
{
url: '/static/home/card3.png',
desc: '仰望星空的少年',
tags: [
{
text: 'AI绘画',
theme: 'primary',
},
{
text: '版权素材',
theme: 'success',
},
],
},
{
url: '/static/home/card2.png',
desc: '少年,星空与梦想',
tags: [
{
text: 'AI绘画',
theme: 'primary',
},
{
text: '版权素材',
theme: 'success',
},
],
},
{
url: '/static/home/card4.png',
desc: '多彩的天空',
tags: [
{
text: 'AI绘画',
theme: 'primary',
},
{
text: '版权素材',
theme: 'success',
},
],
},
],
},
};

View File

@ -1,8 +0,0 @@
export default {
path: '/home/swipers',
data: {
code: 200,
message: '请求成功',
data: new Array(6).fill('/static/home/swiper0.png'),
},
};

View File

@ -1,4 +0,0 @@
import getHomeCards from './getHomeCards';
import getHomeSwipers from './getHomeSwipers';
export default [getHomeCards, getHomeSwipers];

View File

@ -1,15 +0,0 @@
import Mock from './WxMock';
// 导入包含path和data的对象
import loginMock from './login/index';
import homeMock from './home/index';
import searchMock from './search/index';
import dataCenter from './dataCenter/index';
import my from './my/index';
export default () => {
// 在这里添加新的mock数据
const mockData = [...loginMock, ...homeMock, ...searchMock, ...dataCenter, ...my];
mockData.forEach((item) => {
Mock.mock(item.path, { code: 200, success: true, data: item.data });
});
};

View File

@ -1,6 +0,0 @@
export default {
path: '/login/getSendMessage',
data: {
message: '发送成功',
},
};

View File

@ -1,5 +0,0 @@
import getSendMessage from './getSendMessage';
import postCodeVerify from './postCodeVerify';
import postPasswordLogin from './postPasswordLogin';
export default [getSendMessage, postCodeVerify, postPasswordLogin];

View File

@ -1,7 +0,0 @@
export default {
path: '/login/postCodeVerify',
data: {
message: '验证码正确',
token: '@guid()',
},
};

View File

@ -1,7 +0,0 @@
export default {
path: '/login/postPasswordLogin',
data: {
message: '登录成功',
token: '@guid()',
},
};

File diff suppressed because it is too large Load Diff

View File

@ -1,21 +0,0 @@
import { getLocalUrl } from '~/utils/util.js';
export default {
path: '/api/genPersonalInfo',
data: {
code: 200,
message: 'success',
data: {
image: '/static/avatar1.png',
name: '小小轩',
star: '天枰座',
gender: 0,
birth: '1994-09-27',
address: ['440000', '440300'],
brief: '在你身边,为你设计',
photos: [
],
},
},
};

View File

@ -1,19 +0,0 @@
export default {
path: '/api/getServiceList',
data: {
code: 200,
message: 'success',
data: {
service: [
{ image: '/static/icon_wx.png', name: '微信', type: 'weixin', url: '' },
{ image: '/static/icon_qq.png', name: 'QQ', type: 'QQ', url: '' },
{ image: '/static/icon_doc.png', name: '腾讯文档', type: 'document', url: '' },
{ image: '/static/icon_map.png', name: '腾讯地图', type: 'map', url: '' },
{ image: '/static/icon_td.png', name: '数据中心', type: 'data', url: '/pages/dataCenter/index' },
{ image: '/static/icon_td.png', name: '数据中心', type: 'data', url: '/pages/dataCenter/index' },
{ image: '/static/icon_td.png', name: '数据中心', type: 'data', url: '/pages/dataCenter/index' },
{ image: '/static/icon_td.png', name: '数据中心', type: 'data', url: '/pages/dataCenter/index' },
],
},
},
};

View File

@ -1,4 +0,0 @@
import getServiceList from './getServiceList';
import getPersonalInfo from './getPersonalInfo';
export default [getServiceList, getPersonalInfo];

View File

@ -1,21 +0,0 @@
import service from './service/index';
const failResponse = {
code: null,
data: null,
message: 'invaild path',
};
export const request = (url, data) =>
new Promise((resolve, reject) => {
const waitTime = Math.random() * 300 + 200;
const target = service.find((item) => item.path === url);
setTimeout(() => {
if (target) {
const { response } = target;
resolve(typeof response === 'function' ? response(data) : response);
} else {
reject(failResponse);
}
}, waitTime); // 200-500ms
});

View File

@ -1,8 +0,0 @@
export default {
path: '/api/searchHistory',
code: 200,
message: '请求成功',
data: {
historyWords: ['AI绘画', 'Stable Diffusion', '版权素材', '星空', 'illustration', '原创'],
},
};

View File

@ -1,15 +0,0 @@
export default {
path: '/api/searchPopular',
code: 200,
message: '请求成功',
data: {
popularWords: [
'考研和靠边同时上岸应该怎么选?有哪些参考建议',
'日常饮食中,如何选择优质蛋白',
'你有没有网购维权成功的经历?求分享经验',
'夏季带孩子旅游,你的必备物品有哪些',
'在海外越卖越贵,中国汽车做对了什么',
'当HR问你离职原因怎么回答最能被接受',
],
},
};

View File

@ -1,4 +0,0 @@
import getSearchHistory from './getSearchHistory';
import getSearchPopular from './getSearchPopular';
export default [getSearchHistory, getSearchPopular];

View File

@ -14,6 +14,7 @@ Page({
imageList: [], imageList: [],
imageIndex: 1, imageIndex: 1,
}, },
userId: '',
openSelect(){ openSelect(){
this.setData({ this.setData({
visible: true visible: true
@ -31,7 +32,7 @@ Page({
}, },
async getlist(){ async getlist(){
const res = await request('doctor/patient/questionnaires/1') const res = await request('doctor/patient/questionnaires/' + this.userId)
this.setData({ this.setData({
followUpList: res.list followUpList: res.list
}) })
@ -76,7 +77,8 @@ Page({
* 生命周期函数--监听页面加载 * 生命周期函数--监听页面加载
*/ */
onLoad(options) { onLoad(options) {
this.userId = options.userId;
this.getlist();
}, },
/** /**
@ -90,7 +92,7 @@ Page({
* 生命周期函数--监听页面显示 * 生命周期函数--监听页面显示
*/ */
onShow() { onShow() {
this.getlist(); // this.getlist();
}, },
/** /**

View File

@ -1,8 +1,11 @@
{ {
"navigationStyle": "custom",
"styleIsolation": "apply-shared",
"usingComponents": { "usingComponents": {
"t-col": "tdesign-miniprogram/col/col", "t-col": "tdesign-miniprogram/col/col",
"t-row": "tdesign-miniprogram/row/row", "t-row": "tdesign-miniprogram/row/row",
"t-image-viewer": "tdesign-miniprogram/image-viewer/image-viewer", "t-image-viewer": "tdesign-miniprogram/image-viewer/image-viewer",
"t-popup": "tdesign-miniprogram/popup/popup" "t-popup": "tdesign-miniprogram/popup/popup",
"t-navbar": "tdesign-miniprogram/navbar/navbar"
} }
} }

View File

@ -1,5 +1,12 @@
.container{ .container{
padding: 24rpx; padding: 24rpx;
.t-navbar__content{
background-color: #fff;
}
.no-data{
text-align: center;
margin-top: 100rpx;
}
.follow-up{ .follow-up{
background-color: #fff; background-color: #fff;
border-radius: 24rpx; border-radius: 24rpx;
@ -82,7 +89,7 @@
} }
} }
.block { .popup-block {
width: 100vw; width: 100vw;
min-height: 30vh; min-height: 30vh;
min-height: 60vh; min-height: 60vh;
@ -130,3 +137,5 @@
} }
} }
} }

View File

@ -1,5 +1,10 @@
<!-- pages/followUp/index.wxml --> <!-- pages/followUp/index.wxml -->
<view class="container"> <view class="container">
<t-navbar t-class-placeholder="t-navbar-placeholder" t-class-content="t-navbar-content" class="block" title="患者详情" left-arrow bind:go-back="handleBack" />
<view class="no-data" wx:if="{{followUpList.length == 0}}">
暂无随访记录
</view>
<view wx:else>
<view class="follow-up" bind:tap="openSelect"> <view class="follow-up" bind:tap="openSelect">
<view class="follow-up-time">{{followUpDetail.follow_date}}</view> <view class="follow-up-time">{{followUpDetail.follow_date}}</view>
<view class="follow-name">{{followUpDetail.follow_name}}</view> <view class="follow-name">{{followUpDetail.follow_name}}</view>
@ -295,11 +300,11 @@
</t-col> </t-col>
</t-row> </t-row>
</view> </view>
</view>
</view> </view>
<t-popup visible="{{visible}}" bind:visible-change="onVisibleChange" placement="bottom" custom-style="custom-style" prevent-scroll-through="{{true}}"> <t-popup visible="{{visible}}" bind:visible-change="onVisibleChange" placement="bottom" custom-style="custom-style" prevent-scroll-through="{{true}}">
<view class="block"> <view class="popup-block">
<view class="header"> <view class="header">
<view class="btn btn--cancel" aria-role="button" bindtap="close">取消</view> <view class="btn btn--cancel" aria-role="button" bindtap="close">取消</view>
<view class="title"></view> <view class="title"></view>

View File

@ -1,131 +1,8 @@
import * as echarts from '../../ec-canvas/echarts.min'; import * as echarts from '../../ec-canvas/echarts.min';
import request from '~/api/request'; import request from '~/api/request';
import { heightList, weightList } from '../../assets/js/heightWeight';
const app = getApp(); const app = getApp();
function initChart(canvas, width, height, dpr) {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr
});
canvas.setChart(chart);
var option = {
title: {
text: '',
left: 'left',
fontSize: 6
},
legend: {
data: ['实际身高', '标准范围'],
bottom: 0,
left: 'center',
z: 100
},
grid: {
containLabel: true,
top: '5%',
left: '1%',
right: '5%',
bottom: '10%'
},
tooltip: {
show: true,
trigger: 'axis'
},
xAxis: {
type: 'category',
boundaryGap: false,
data: ['出生', '1月', '2月', '3月', '4月', '5月'],
},
yAxis: {
x: 'center',
type: 'value',
splitLine: {
lineStyle: {
type: 'dashed'
}
}
},
series: [{
name: '实际身高',
type: 'line',
smooth: true,
data: []
}, {
name: '标准范围',
type: 'line',
smooth: true,
data: [120, 130, 140, 150, 160, 170]
}]
};
chart.setOption(option);
return chart;
}
function initChart2(canvas, width, height, dpr) {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr
});
canvas.setChart(chart);
var option = {
title: {
text: '',
left: 'left',
fontSize: 12
},
legend: {
data: ['实际体重', '标准范围'],
bottom: 0,
left: 'center',
z: 100
},
grid: {
containLabel: true,
top: '5%',
left: '1%',
right: '5%',
bottom: '10%'
},
tooltip: {
show: true,
trigger: 'axis'
},
xAxis: {
type: 'category',
boundaryGap: false,
data: ['出生', '1月', '2月', '3月', '4月', '5月'],
},
yAxis: {
x: 'center',
type: 'value',
splitLine: {
lineStyle: {
type: 'dashed'
}
}
},
series: [{
name: '实际体重',
type: 'line',
smooth: true,
data: []
}, {
name: '标准范围',
type: 'line',
smooth: true,
data: [120, 130, 140, 150, 160, 170]
}]
};
chart.setOption(option);
return chart;
}
Page({ Page({
onShareAppMessage: function (res) { onShareAppMessage: function (res) {
return { return {
@ -142,286 +19,97 @@ Page({
ec2: { ec2: {
lazyLoad: true lazyLoad: true
}, },
ec3: {
lazyLoad: true
},
ec4: {
lazyLoad: true
},
activeIndex: 0, activeIndex: 0,
sfData:{}, sfData: {},
sfListLength: 0, sfListLength: 0,
articles:[], articles: [],
articlesLength: 0, articlesLength: 0,
heightData: [], heightData: [],
weightData: [], weightData: [],
heightChart: null, heightChart: null,
weightChart: null, weightChart: null,
carList: [], carList: [],
carLength: 0 carLength: 0,
userInfo: {},
totalBilirubin: [],
directBilirubin: []
}, },
standardHeight: [],
standardWeight: [],
userId: '',
// Helper function to strip HTML tags and convert to plain text // Helper function to strip HTML tags and convert to plain text
stripHtml(html) { stripHtml(html) {
if (!html) return ''; if (!html) return '';
return html.replace(/<[^>]*>/g, ''); return html.replace(/<[^>]*>/g, '');
}, },
async getPersonalInfo(id) {
async getSfList(){ const info = await request('doctor/patient/basic/'+id).then((res) => res);
console.log(info)
this.followPlans()
this.getArticleList()
this.getCarList()
},
async followPlans(){
const res = await request('patient/follow_plans', 'get', {
page: 1,
page_size: 10,
type: 1
})
// Calculate days between today and plan_date
const today = new Date()
const planDate = new Date(res.list[0].plan_date)
const diffTime = planDate - today
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24))
this.setData({ this.setData({
sfListLength: res.total, userInfo: info
sfData: { })
...res.list[0], if(info.sex == 1){
daysUntilPlan: diffDays this.standardHeight = heightList.boy
this.standardWeight = weightList.boy
}else{
this.standardHeight = heightList.girl
this.standardWeight = weightList.girl
} }
}) this.getChartData()
},
async getArticleList(){
const res2 = await request('patient/articles', 'get', { title: '', page: 1, page_size: 2 });
// Convert rich text content to plain text
const plainTextContent = this.stripHtml(res2.list[0].content);
const articleList = res2.list.map(item => {
return {
...item,
contentText: this.stripHtml(item.content)
}
})
this.setData({
articlesLength: res2.total,
articles: articleList
})
}, },
async getCarList() {
const res3 = await request('patient/medicine_records', 'get', {
time_type: 1,
status: 0,
page: 1,
page_size: 10
})
const carList = res3.list.map(item => {
item.detail = JSON.parse(item.detail)
return item
})
setTimeout(() => {
this.setData({
carLength: res3.total,
carList: carList
})
})
},
async medicineRecord(e){
const {id, status} = e.currentTarget.dataset
if(status == 1){
await request('patient/medicine_record/'+id, 'put', {})
wx.showToast({
type: 'success',
title: '打卡成功',
})
this.getCarList()
}
},
async getChartData(){ async getChartData(){
const res = await request('patient/chat/0', 'get') const res = await request('doctor/patient/chat/'+this.userId, 'get')
const heightData = [] const heightData = []
const weightData = [] const weightData = []
const totalBilirubin = []
const directBilirubin = []
if(res.list.length > 0){ if(res.list.length > 0){
res.list.forEach(item => { res.list.forEach(item => {
heightData.push(item.height) heightData.push(item.height)
weightData.push(item.weight) weightData.push(item.weight)
totalBilirubin.push(item.total_bilirubin)
directBilirubin.push(item.directBilirubin)
}) })
} }
this.setData({ this.setData({
heightData, heightData,
weightData weightData,
}, () => { totalBilirubin,
this.initCharts(); directBilirubin
}); });
this.initHeightChart()
this.initDirectChart()
this.initIndirectChart()
}, },
initCharts() { toBack() {
// 初始化身高图表
if (!this.heightChart) {
const chart1 = this.selectComponent('#mychart-dom-height');
if (chart1) {
chart1.init((canvas, width, height, dpr) => {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr
});
canvas.setChart(chart);
const option = {
title: {
text: '',
left: 'left',
fontSize: 6
},
legend: {
data: ['实际身高', '标准范围'],
bottom: 0,
left: 'center',
z: 100
},
grid: {
containLabel: true,
top: '5%',
left: '1%',
right: '5%',
bottom: '10%'
},
tooltip: {
show: true,
trigger: 'axis'
},
xAxis: {
type: 'category',
boundaryGap: false,
data: ['出生', '1月', '2月', '3月', '4月', '5月'],
},
yAxis: {
x: 'center',
type: 'value',
splitLine: {
lineStyle: {
type: 'dashed'
}
}
},
series: [{
name: '实际身高',
type: 'line',
smooth: true,
data: this.data.heightData
}, {
name: '标准范围',
type: 'line',
smooth: true,
data: [120, 130, 140, 150, 160, 170]
}]
};
chart.setOption(option);
this.heightChart = chart;
return chart;
});
}
}
// 初始化体重图表
if (!this.weightChart) {
const chart2 = this.selectComponent('#mychart-dom-weight');
if (chart2) {
chart2.init((canvas, width, height, dpr) => {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr
});
canvas.setChart(chart);
const option = {
title: {
text: '',
left: 'left',
fontSize: 12
},
legend: {
data: ['实际体重', '标准范围'],
bottom: 0,
left: 'center',
z: 100
},
grid: {
containLabel: true,
top: '5%',
left: '1%',
right: '5%',
bottom: '10%'
},
tooltip: {
show: true,
trigger: 'axis'
},
xAxis: {
type: 'category',
boundaryGap: false,
data: ['出生', '1月', '2月', '3月', '4月', '5月'],
},
yAxis: {
x: 'center',
type: 'value',
splitLine: {
lineStyle: {
type: 'dashed'
}
}
},
series: [{
name: '实际体重',
type: 'line',
smooth: true,
data: this.data.weightData
}, {
name: '标准范围',
type: 'line',
smooth: true,
data: [120, 130, 140, 150, 160, 170]
}]
};
chart.setOption(option);
this.weightChart = chart;
return chart;
});
}
}
},
toBack(){
wx.navigateBack({ wx.navigateBack({
delta: 1 delta: 1
}) })
}, },
onLoad(){ onLoad(options) {
// this.getSfList() this.userId = options.userId
// setTimeout(() => { this.getPersonalInfo(options.userId)
// this.getChartData().then(() => {
// if (this.data.activeIndex === 0) {
// this.initHeightChart();
// } else {
// this.initWeightChart();
// }
// });
// }, 500);
}, },
onReady() { onReady() {
// setTimeout(() => {
// this.getChartData().then(() => {
// if (this.data.activeIndex === 0) { },
// this.initHeightChart(); toLink(){
// } else { wx.navigateTo({
// this.initWeightChart(); url: '/pages/followUp/index?userId=' + this.userId
// } })
// });
// }, 500);
}, },
changeChart(e) { changeChart(e) {
@ -442,28 +130,6 @@ Page({
}); });
}, },
toClockIn(){
wx.navigateTo({
url: '/pages/clockIn/index',
})
},
toEmergency(){
wx.navigateTo({
url: '/pages/emergency/index',
})
},
toArticle(){
wx.navigateTo({
url: '/pages/articleList/index',
})
},
async toArticleDelit(e){
const index = e.currentTarget.dataset.index;
await wx.setStorageSync('article',JSON.stringify(this.data.articles[index]));
wx.navigateTo({
url: '/pages/article/index',
})
},
onUnload() { onUnload() {
// 页面卸载时销毁图表实例 // 页面卸载时销毁图表实例
@ -479,6 +145,11 @@ Page({
// 初始化身高图表 // 初始化身高图表
initHeightChart() { initHeightChart() {
const standardHeight = this.standardHeight;
const standardLower = standardHeight.map(item => item[0]);
const standardUpper = standardHeight.map(item => item[1]);
const standardRange = standardUpper.map((up, i) => up - standardLower[i]);
const chartComp = this.selectComponent('#mychart-dom-height'); const chartComp = this.selectComponent('#mychart-dom-height');
if (chartComp) { if (chartComp) {
chartComp.init((canvas, width, height, dpr) => { chartComp.init((canvas, width, height, dpr) => {
@ -486,14 +157,44 @@ Page({
canvas.setChart(chart); canvas.setChart(chart);
chart.setOption({ chart.setOption({
title: { text: '', left: 'left', fontSize: 6 }, title: { text: '', left: 'left', fontSize: 6 },
legend: { data: ['实际身高', '标准范围'], bottom: 0, left: 'center', z: 100 }, grid: { containLabel: true, top: '5%', left: '1%', right: '5%', bottom: '3%' },
grid: { containLabel: true, top: '5%', left: '1%', right: '5%', bottom: '10%' }, tooltip: {
tooltip: { show: true, trigger: 'axis' }, show: true,
xAxis: { type: 'category', boundaryGap: false, data: ['出生', '1月', '2月', '3月', '4月', '5月'] }, trigger: 'axis',
formatter: function (params) {
const param = params[0];
return `${param.axisValue}\n${param.seriesName}: ${param.value} cm`;
}
},
xAxis: { type: 'category', boundaryGap: false, data: ['出生', '1月', '2月', '3月', '4月', '5月', '6月'] },
yAxis: { x: 'center', type: 'value', splitLine: { lineStyle: { type: 'dashed' } } }, yAxis: { x: 'center', type: 'value', splitLine: { lineStyle: { type: 'dashed' } } },
series: [ series: [
{ name: '实际身高', type: 'line', smooth: true, data: this.data.heightData }, {
{ name: '标准范围', type: 'line', smooth: true, data: [120, 130, 140, 150, 160, 170] } name: '实际身高',
type: 'line',
smooth: true,
data: this.data.heightData
},
{
name: '标准下界',
type: 'line',
symbol: 'none',
data: standardLower,
lineStyle: { opacity: 0 },
stack: '标准范围',
areaStyle: { opacity: 0 },
tooltip: { show: false }
},
{
name: '标准范围',
type: 'line',
symbol: 'none',
data: standardRange,
lineStyle: { opacity: 0 },
stack: '标准范围',
areaStyle: { color: 'rgba(135,206,250,0.3)' },
tooltip: { show: false }
}
] ]
}); });
return chart; return chart;
@ -503,21 +204,128 @@ Page({
// 初始化体重图表 // 初始化体重图表
initWeightChart() { initWeightChart() {
const standardWeight = this.standardWeight;
const standardLower = standardWeight.map(item => item[0]);
const standardUpper = standardWeight.map(item => item[1]);
const standardRange = standardUpper.map((up, i) => up - standardLower[i]);
const chartComp = this.selectComponent('#mychart-dom-weight'); const chartComp = this.selectComponent('#mychart-dom-weight');
if (chartComp) { if (chartComp) {
chartComp.init((canvas, width, height, dpr) => { chartComp.init((canvas, width, height, dpr) => {
const chart = echarts.init(canvas, null, { width, height, devicePixelRatio: dpr }); const chart = echarts.init(canvas, null, { width, height, devicePixelRatio: dpr });
canvas.setChart(chart); canvas.setChart(chart);
chart.setOption({ chart.setOption({
title: { text: '', left: 'left', fontSize: 12 }, title: { text: '', left: 'left', fontSize: 6 },
legend: { data: ['实际体重', '标准范围'], bottom: 0, left: 'center', z: 100 }, grid: { containLabel: true, top: '5%', left: '1%', right: '5%', bottom: '3%' },
grid: { containLabel: true, top: '5%', left: '1%', right: '5%', bottom: '10%' }, tooltip: {
tooltip: { show: true, trigger: 'axis' }, show: true,
xAxis: { type: 'category', boundaryGap: false, data: ['出生', '1月', '2月', '3月', '4月', '5月'] }, trigger: 'axis',
formatter: function (params) {
const param = params[0];
return `${param.axisValue}\n${param.seriesName}: ${param.value} cm`;
}
},
xAxis: { type: 'category', boundaryGap: false, data: ['出生', '1月', '2月', '3月', '4月', '5月', '6月'] },
yAxis: { x: 'center', type: 'value', splitLine: { lineStyle: { type: 'dashed' } } }, yAxis: { x: 'center', type: 'value', splitLine: { lineStyle: { type: 'dashed' } } },
series: [ series: [
{ name: '实际体重', type: 'line', smooth: true, data: this.data.weightData }, {
{ name: '标准范围', type: 'line', smooth: true, data: [120, 130, 140, 150, 160, 170] } name: '实际体重',
type: 'line',
smooth: true,
data: this.data.weightData
},
{
name: '标准下界',
type: 'line',
symbol: 'none',
data: standardLower,
lineStyle: { opacity: 0 },
stack: '标准范围',
areaStyle: { opacity: 0 },
tooltip: { show: false }
},
{
name: '标准范围',
type: 'line',
symbol: 'none',
data: standardRange,
lineStyle: { opacity: 0 },
stack: '标准范围',
areaStyle: { color: 'rgba(135,206,250,0.3)' },
tooltip: { show: false }
}
]
});
return chart;
});
}
},
// 初始化体直接胆红素趋势
initDirectChart() {
const chartComp = this.selectComponent('#mychart-dom-direct');
if (chartComp) {
chartComp.init((canvas, width, height, dpr) => {
const chart = echarts.init(canvas, null, { width, height, devicePixelRatio: dpr });
canvas.setChart(chart);
chart.setOption({
title: { text: '', left: 'left', fontSize: 6 },
grid: { containLabel: true, top: '5%', left: '1%', right: '5%', bottom: '3%' },
tooltip: {
show: true,
trigger: 'axis',
formatter: function (params) {
const param = params[0];
return `${param.axisValue}\n${param.seriesName}: ${param.value} μmol/L`;
}
},
xAxis: { type: 'category', boundaryGap: false, data: ['出生', '1月', '2月', '3月', '4月', '5月', '6月'] },
yAxis: { x: 'center', type: 'value', splitLine: { lineStyle: { type: 'dashed' } } },
series: [
{
name: '总胆红素',
type: 'line',
smooth: true,
data: this.data.totalBilirubin
},
]
});
return chart;
});
}
},
// 初始化体间接胆红素趋势
initIndirectChart() {
const chartComp = this.selectComponent('#mychart-dom-indirect');
if (chartComp) {
chartComp.init((canvas, width, height, dpr) => {
const chart = echarts.init(canvas, null, { width, height, devicePixelRatio: dpr });
canvas.setChart(chart);
chart.setOption({
title: { text: '', left: 'left', fontSize: 6 },
grid: { containLabel: true, top: '5%', left: '1%', right: '5%', bottom: '3%' },
tooltip: {
show: true,
trigger: 'axis',
formatter: function (params) {
const param = params[0];
return `${param.axisValue}\n${param.seriesName}: ${param.value} μmol/L`;
}
},
xAxis: { type: 'category', boundaryGap: false, data: ['出生', '1月', '2月', '3月', '4月', '5月', '6月'] },
yAxis: { x: 'center', type: 'value', splitLine: { lineStyle: { type: 'dashed' } } },
series: [
{
name: '直接胆红素',
type: 'line',
smooth: true,
data: this.data.directBilirubin
},
] ]
}); });
return chart; return chart;

View File

@ -5,6 +5,7 @@
"t-button": "tdesign-miniprogram/button/button", "t-button": "tdesign-miniprogram/button/button",
"ec-canvas": "../../ec-canvas/ec-canvas", "ec-canvas": "../../ec-canvas/ec-canvas",
"t-col": "tdesign-miniprogram/col/col", "t-col": "tdesign-miniprogram/col/col",
"t-row": "tdesign-miniprogram/row/row" "t-row": "tdesign-miniprogram/row/row",
"t-navbar": "tdesign-miniprogram/navbar/navbar"
} }
} }

View File

@ -3,10 +3,11 @@
@home-tab-item-height: 96rpx; @home-tab-item-height: 96rpx;
.home-container { .home-container {
height: calc(100vh - @tab-bar-height);
padding-top: 88rpx;
position: relative; position: relative;
.home-top-bg{ height: 100vh;
overflow: hidden;
.home-top-bg {
width: 100%; width: 100%;
height: auto; height: auto;
position: absolute; position: absolute;
@ -15,11 +16,29 @@
z-index: 0; z-index: 0;
} }
.hot {
color: #D00F16;
font-size: 36rpx;
margin-bottom: 16rpx;
font-weight: bold;
// margin-top: ;
}
.waring{
color:#ed7b2f ;
}
.success{
color:#00a870;
}
.info {
font-size: 36rpx;
margin-bottom: 16rpx;
font-weight: bold;
}
.group_2 { .group_2 {
overflow-wrap: break-word; overflow-wrap: break-word;
color: rgba(144,147,153,1); color: rgba(144, 147, 153, 1);
font-size: 24rpx; font-size: 24rpx;
font-family: Alibaba-PuHuiTi-R; font-family: Alibaba-PuHuiTi-R;
font-weight: normal; font-weight: normal;
@ -31,23 +50,26 @@
z-index: 1; z-index: 1;
display: flex; display: flex;
padding: 28rpx; padding: 28rpx;
.box_1 { .box_1 {
border-radius: 100%; border-radius: 100%;
background-image: url(https://lanhu-dds-backend.oss-cn-beijing.aliyuncs.com/merge_image/imgs/e2d2f77550f64a02bebd425d1db7d2e3_mergeImage.png); background-image: url(https://lanhu-dds-backend.oss-cn-beijing.aliyuncs.com/merge_image/imgs/e2d2f77550f64a02bebd425d1db7d2e3_mergeImage.png);
width: 120rpx; width: 120rpx;
height: 120rpx; height: 120rpx;
border: 1px solid rgba(248,248,248,1); border: 1px solid rgba(248, 248, 248, 1);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
} }
.text-group_1 { .text-group_1 {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
margin: 16rpx 0 16rpx 24rpx; margin: 16rpx 0 16rpx 24rpx;
} }
.text_2 { .text_2 {
overflow-wrap: break-word; overflow-wrap: break-word;
color: rgba(17,17,17,1); color: rgba(17, 17, 17, 1);
font-size: 36rpx; font-size: 36rpx;
font-family: Alibaba-PuHuiTi-M; font-family: Alibaba-PuHuiTi-M;
font-weight: normal; font-weight: normal;
@ -56,9 +78,10 @@
line-height: 36rpx; line-height: 36rpx;
margin-right: 24rpx; margin-right: 24rpx;
} }
.text_3 { .text_3 {
overflow-wrap: break-word; overflow-wrap: break-word;
color: rgba(96,98,102,1); color: rgba(96, 98, 102, 1);
font-size: 28rpx; font-size: 28rpx;
font-family: Alibaba-PuHuiTi-R; font-family: Alibaba-PuHuiTi-R;
font-weight: normal; font-weight: normal;
@ -67,16 +90,18 @@
line-height: 28rpx; line-height: 28rpx;
margin-top: 24rpx; margin-top: 24rpx;
} }
.text_4 { .text_4 {
color: rgba(96,98,102,1); color: rgba(96, 98, 102, 1);
font-size: 24rpx; font-size: 24rpx;
text-align: left; text-align: left;
line-height: 24rpx; line-height: 24rpx;
margin: 28rpx 0 0 0rpx; margin: 28rpx 0 0 0rpx;
margin-left: 24rpx; margin-left: 24rpx;
} }
.box_2 { .box_2 {
background-color: rgba(255,93,93,0.000000); background-color: rgba(255, 93, 93, 0.000000);
border-radius: 100%; border-radius: 100%;
width: 16rpx; width: 16rpx;
height: 16rpx; height: 16rpx;
@ -97,6 +122,7 @@
justify-content: center; justify-content: center;
margin: 16rpx 0 16rpx 24rpx; margin: 16rpx 0 16rpx 24rpx;
} }
.image_2 { .image_2 {
width: 24rpx; width: 24rpx;
height: 48rpx; height: 48rpx;
@ -105,10 +131,12 @@
left: 0; left: 0;
z-index: 1; z-index: 1;
} }
.text_1 { .text_1 {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
} }
.image_3 { .image_3 {
width: 174rpx; width: 174rpx;
height: 64rpx; height: 64rpx;
@ -116,42 +144,78 @@
} }
.home-content { .home-content {
// height: calc(100% - @nav-bar-height); height: calc(100vh - 180rpx);
background-color: #F8F8F8; overflow: scroll;
padding: 28rpx; // padding: 28rpx;
padding-bottom: 0;
position: relative; position: relative;
z-index: 1; z-index: 1;
.table-group {
background: #F8F8F8;
border-radius: 40rpx 40rpx 0rpx 0rpx; border-radius: 40rpx 40rpx 0rpx 0rpx;
.text_1{ padding: 28rpx;
}
.text_1 {
font-size: 36rpx; font-size: 36rpx;
color: var(--td-text-color); color: var(--td-text-color);
font-weight: bold;
} }
.core-indicators{
.box_2{ .core-indicators {
.box_2 {
margin-top: 24rpx; margin-top: 24rpx;
background-color: #fff; background-color: #fff;
border-radius: 24rpx; border-radius: 24rpx;
box-shadow: 0 0 30rpx 0 rgba(0,0,0,0.1); // box-shadow: 0 0 30rpx 0 rgba(0,0,0,0.1);
padding: 24rpx; padding: 40rpx 32rpx;
.box_2_item{
.box_2_item {
text-align: center; text-align: center;
height: 200rpx; padding-bottom: 20rpx;
.title {
margin-top: 50rpx;
font-size: 32rpx;
}
.text{
font-size: 24rpx;
color: #606266;
}
// height: 200rpx;
}
.box_3_item {
border-top: 2rpx solid #f5f5f5;
text-align: center;
padding-top: 20rpx;
.text{
font-size: 24rpx;
color: #606266;
}
}
.border-left {
border-left: 2rpx solid #f5f5f5;
} }
} }
} }
.item-title-img{ .item-title-img {
height: 36rpx; height: 36rpx;
// width: auto; // width: auto;
} }
.item-title-img-2{
.item-title-img-2 {
height: 96rpx; height: 96rpx;
position: relative; position: relative;
left: -24rpx; left: -24rpx;
// margin-top: -28rpx; // margin-top: -28rpx;
} }
.item-title { .item-title {
font-family: Alibaba-PuHuiTi, Alibaba-PuHuiTi; font-family: Alibaba-PuHuiTi, Alibaba-PuHuiTi;
font-weight: normal; font-weight: normal;
@ -161,29 +225,21 @@
font-style: normal; font-style: normal;
text-transform: none; text-transform: none;
margin-bottom: 28rpx; margin-bottom: 28rpx;
.item-title-icon{ margin-top: 28rpx;
vertical-align: middle; font-weight: bold;
width: 36rpx;
height: 36rpx;
margin-right: 20rpx;
position: relative;
top: -4rpx;
left: 20rpx;
}
} }
.item-content { .item-content {
background-color: #fff; background-color: #fff;
border-radius: 24rpx; border-radius: 24rpx;
padding: 28rpx; padding: 28rpx;
margin-bottom: 28rpx; margin-bottom: 28rpx;
box-shadow: 0rpx 2rpx 20rpx 0rpx rgba(178, 178, 178, 0.05);
.echarts-canvas-container { .echarts-canvas-container {
width: 100%; width: 100%;
height: 600rpx; height: 500rpx;
} }
.echarts-canvas { .echarts-canvas {
@ -208,12 +264,14 @@
.item-title { .item-title {
position: relative; position: relative;
.item-title-icon{
.item-title-icon {
vertical-align: middle; vertical-align: middle;
width: 36rpx; width: 36rpx;
height: 36rpx; height: 36rpx;
margin-right: 20rpx; margin-right: 20rpx;
} }
.item-title-right-text { .item-title-right-text {
position: absolute; position: absolute;
right: 0; right: 0;
@ -222,7 +280,8 @@
font-size: 26rpx; font-size: 26rpx;
} }
} }
.item-content-1-bg{
.item-content-1-bg {
position: absolute; position: absolute;
z-index: 0; z-index: 0;
right: 0; right: 0;
@ -230,6 +289,7 @@
width: 240rpx; width: 240rpx;
height: 240rpx; height: 240rpx;
} }
.item-box { .item-box {
background-color: #fff; background-color: #fff;
border-radius: 12rpx; border-radius: 12rpx;
@ -296,37 +356,54 @@
} }
} }
.item-content-3{ .btn{
width: 100%;
height: 96rpx;
background: #005BA2;
border-radius: 24rpx;
display: flex;
justify-content: center;
align-items: center;
color: #fff;
font-size: 32rpx;
}
.item-content-3 {
padding-left: 0; padding-left: 0;
padding-right: 0; padding-right: 0;
background-color: transparent; background-color: transparent;
.item-box{
.item-box {
// background-color: transparent; // background-color: transparent;
box-shadow: 0rpx 2rpx 20rpx 0rpx rgba(178,178,178,0.05); box-shadow: 0rpx 2rpx 20rpx 0rpx rgba(178, 178, 178, 0.05);
border-radius: 24rpx; border-radius: 24rpx;
} }
.item-title-icon{
.item-title-icon {
margin-right: 18rpx; margin-right: 18rpx;
} }
} }
.item-content-2{
background: linear-gradient( 180deg, #E7F2F2 0%, #F7FCFC 100%); .item-content-2 {
background: linear-gradient(180deg, #E7F2F2 0%, #F7FCFC 100%);
box-shadow: 0rpx 2rpx 20rpx 0rpx #E9F4F3; box-shadow: 0rpx 2rpx 20rpx 0rpx #E9F4F3;
border-radius: 24rpx; border-radius: 24rpx;
border: 2rpx solid #FFFFFF; border: 2rpx solid #FFFFFF;
position: relative; position: relative;
padding-top:0 ; padding-top: 0;
.item-title{
.item-title {
margin-bottom: 0; margin-bottom: 0;
} }
.item-box{
.item-box {
margin-top: 0; margin-top: 0;
} }
} }
} }
.item-content-1{
background: linear-gradient( 180deg, #EDF3F8 0%, #F7FAFC 100%); .item-content-1 {
background: linear-gradient(180deg, #EDF3F8 0%, #F7FAFC 100%);
box-shadow: 0rpx 2rpx 20rpx 0rpx #EDF3F8; box-shadow: 0rpx 2rpx 20rpx 0rpx #EDF3F8;
border-radius: 24rpx; border-radius: 24rpx;
border: 2rpx solid #FFFFFF; border: 2rpx solid #FFFFFF;
@ -354,7 +431,7 @@
} }
.box_3 { .box_3 {
background-color: rgba(245,245,245,1.000000); background-color: rgba(245, 245, 245, 1.000000);
border-radius: 28rpx; border-radius: 28rpx;
width: 250rpx; width: 250rpx;
flex-direction: row; flex-direction: row;
@ -363,21 +440,24 @@
padding: 4rpx 28rpx 4rpx 4rpx; padding: 4rpx 28rpx 4rpx 4rpx;
white-space: nowrap; white-space: nowrap;
margin-bottom: 16rpx; margin-bottom: 16rpx;
margin-left:-4rpx; margin-left: -4rpx;
} }
.text-wrapper_1 { .text-wrapper_1 {
border-radius: 28rpx; border-radius: 28rpx;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
padding: 12rpx 24rpx 12rpx 24rpx; padding: 12rpx 24rpx 12rpx 24rpx;
} }
.text-act{
background-color: rgba(255,255,255,1.000000); .text-act {
background-color: rgba(255, 255, 255, 1.000000);
} }
.text_2 { .text_2 {
overflow-wrap: break-word; overflow-wrap: break-word;
color: rgba(34,34,34,1); color: rgba(34, 34, 34, 1);
font-size: 24rpx; font-size: 24rpx;
font-family: Alibaba-PuHuiTi-M; font-family: Alibaba-PuHuiTi-M;
font-weight: normal; font-weight: normal;
@ -385,11 +465,13 @@
white-space: nowrap; white-space: nowrap;
line-height: 24rpx; line-height: 24rpx;
} }
.echarts-title{
.echarts-title {
font-size: 24rpx; font-size: 24rpx;
color: #909399; color: #909399;
line-height: 34rpx; line-height: 34rpx;
} }
.image-text_3 { .image-text_3 {
width: 110rpx; width: 110rpx;
flex-direction: row; flex-direction: row;
@ -397,19 +479,21 @@
justify-content: space-between; justify-content: space-between;
margin: 32rpx 0rpx 18rpx 0; margin: 32rpx 0rpx 18rpx 0;
} }
.box_6 { .box_6 {
border-radius: 100%; border-radius: 100%;
width: 16rpx; width: 16rpx;
height: 16rpx; height: 16rpx;
border: 2px solid rgba(0,91,162,1); border: 2px solid rgba(0, 91, 162, 1);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
margin: 6rpx 0 6rpx 0; margin: 6rpx 0 6rpx 0;
box-sizing: border-box; box-sizing: border-box;
} }
.text-group_3 { .text-group_3 {
overflow-wrap: break-word; overflow-wrap: break-word;
color: rgba(34,34,34,1); color: rgba(34, 34, 34, 1);
font-size: 28rpx; font-size: 28rpx;
font-family: Alibaba-PuHuiTi-M; font-family: Alibaba-PuHuiTi-M;
font-weight: normal; font-weight: normal;
@ -417,8 +501,9 @@
white-space: nowrap; white-space: nowrap;
line-height: 28rpx; line-height: 28rpx;
} }
.box_9 { .box_9 {
background-color: rgba(255,255,255,1.000000); background-color: rgba(255, 255, 255, 1.000000);
border-radius: 16rpx; border-radius: 16rpx;
position: relative; position: relative;
z-index: 1; z-index: 1;
@ -428,40 +513,45 @@
padding: 24rpx 24rpx 24rpx 24rpx; padding: 24rpx 24rpx 24rpx 24rpx;
margin-left: 30rpx; margin-left: 30rpx;
} }
.image-text_5 { .image-text_5 {
width: 298rpx; width: 298rpx;
flex-direction: row; flex-direction: row;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
} }
.box_10 { .box_10 {
border-radius: 16rpx; border-radius: 16rpx;
background-image: url(https://lanhu-dds-backend.oss-cn-beijing.aliyuncs.com/merge_image/imgs/c46fcd8a7c644cbbb347a75b175350c6_mergeImage.png); background-image: url(https://lanhu-dds-backend.oss-cn-beijing.aliyuncs.com/merge_image/imgs/c46fcd8a7c644cbbb347a75b175350c6_mergeImage.png);
width: 100rpx; width: 100rpx;
height: 100rpx; height: 100rpx;
border: 1px solid rgba(0,91,162,0.1); border: 1px solid rgba(0, 91, 162, 0.1);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
box-sizing: border-box; box-sizing: border-box;
margin-right:16rpx ; margin-right: 16rpx;
} }
.text-group_5 { .text-group_5 {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
margin: 12rpx 0 12rpx 0; margin: 12rpx 0 12rpx 0;
} }
.text_21 { .text_21 {
overflow-wrap: break-word; overflow-wrap: break-word;
color: rgba(34,34,34,1); color: rgba(34, 34, 34, 1);
font-size: 32rpx; font-size: 32rpx;
font-family: Alibaba-PuHuiTi-M; font-family: Alibaba-PuHuiTi-M;
white-space: nowrap; white-space: nowrap;
line-height: 32rpx; line-height: 32rpx;
margin-right: 86rpx; margin-right: 86rpx;
} }
.text_22 { .text_22 {
overflow-wrap: break-word; overflow-wrap: break-word;
color: rgba(144,147,153,1); color: rgba(144, 147, 153, 1);
font-size: 28rpx; font-size: 28rpx;
font-family: Alibaba-PuHuiTi-R; font-family: Alibaba-PuHuiTi-R;
font-weight: normal; font-weight: normal;
@ -470,14 +560,16 @@
line-height: 28rpx; line-height: 28rpx;
margin-top: 16rpx; margin-top: 16rpx;
} }
.box_11 { .box_11 {
background-color: rgba(237,243,248,1.000000); background-color: rgba(237, 243, 248, 1.000000);
width: 2rpx; width: 2rpx;
height: 62rpx; height: 62rpx;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
margin: 20rpx 0 18rpx 100rpx; margin: 20rpx 0 18rpx 100rpx;
} }
.text-wrapper_6 { .text-wrapper_6 {
border-radius: 32rpx; border-radius: 32rpx;
@ -485,17 +577,20 @@
flex-direction: column; flex-direction: column;
margin: 22rpx 0 22rpx 24rpx; margin: 22rpx 0 22rpx 24rpx;
padding: 12rpx 40rpx 12rpx 40rpx; padding: 12rpx 40rpx 12rpx 40rpx;
.text_23 { .text_23 {
color:rgba(0,91,162,1.000000); color: rgba(0, 91, 162, 1.000000);
} }
} }
.catArt{
background-color: rgba(0,91,162,1.000000); .catArt {
background-color: rgba(0, 91, 162, 1.000000);
.text_23 { .text_23 {
color: #fff; color: #fff;
} }
} }
.text_23 { .text_23 {
overflow-wrap: break-word; overflow-wrap: break-word;
font-size: 28rpx; font-size: 28rpx;

View File

@ -1,42 +1,59 @@
<!-- <nav nav-type="search" /> --> <!-- <nav nav-type="search" /> -->
<view class="home-container"> <view class="home-container">
<image class="home-top-bg" mode="widthFix" src="../../assets/images/my/my-top-bg.png" /> <image class="home-top-bg" mode="widthFix" src="https://image-fudan.oss-cn-beijing.aliyuncs.com/mini_images/my/my-top-bg.png" />
<view class="group_1"> <t-navbar t-class-placeholder="t-navbar-placeholder" t-class-content="t-navbar-content" class="block" title="患者详情" left-arrow bind:go-back="handleBack" />
<text class="iconfont icon-fanhui image_2" bind:tap="toBack"></text> <view class="home-content">
<text lines="1" class="text_1">患者详情页</text>
</view>
<view class="group_2"> <view class="group_2">
<view class="box_1"></view> <view class="box_1"></view>
<view class="text-group_1"> <view class="text-group_1">
<text lines="1" class="text_2">张知梦<text lines="1" decode="true" class="text_4">女&nbsp;·&nbsp;2岁5个月</text></text> <text lines="1" class="text_2">{{userInfo.username}}<text lines="1" decode="true" class="text_4">{{userInfo.sex == 1 ? '男':'女'}}&nbsp;·&nbsp;{{ userInfo.age }}</text></text>
<text lines="1" class="text_3">下次随访时间:2025-12-12</text> <text lines="1" class="text_3">下次随访时间:{{ userInfo.next_follow_date }}</text>
</view> </view>
</view> </view>
<view class="home-content"> <view class="table-group">
<view class="core-indicators"> <view class="core-indicators">
<text lines="1" class="text_1">核心指标</text> <text lines="1" class="text_1">核心指标</text>
<view class="box_2"> <view class="box_2">
<t-row> <t-row>
<t-col span="12" t-class="dark"> <t-col span="12" t-class="dark">
<view class="box_2_item"> <view class="box_2_item">
<view>术后时长3个月</view> <view class="info">{{userInfo.postoperative_duration}}</view>
<view class="text">术后时长</view>
</view> </view>
</t-col> </t-col>
<t-col span="12" t-class="light"> <t-col span="12" t-class="light">
<view >高危/PELD 12</view> <view class="box_2_item border-left">
<view></view> <view class="hot" wx:if="{{userInfo.risk_type == 3}}">高危/PELD {{userInfo.risk_value}}</view>
<view class="hot wargin" wx:if="{{userInfo.risk_type == 2}}">中危/PELD {{userInfo.risk_value}}</view>
<view class="hot success" wx:if="{{userInfo.risk_type == 1}}">低危/PELD {{userInfo.risk_value}}</view>
<view class="hot success" wx:if="{{userInfo.risk_type == 0}}">未知 {{userInfo.risk_value}}</view>
<view class="text">当前风险</view>
</view>
</t-col>
<t-col span="12" t-class="dark">
<view class="box_3_item">
<view class="hot">40%</view>
<view class="text">GGT指数/较上次</view>
</view>
</t-col>
<t-col span="12" t-class="dark">
<view class="box_3_item border-left">
<view class="info" wx:if="{{userInfo.height_growth_curve_type == 0}}">未知</view>
<view class="info" wx:if="{{userInfo.height_growth_curve_type == 1}}">轻度偏离</view>
<view class="info" wx:if="{{userInfo.height_growth_curve_type == 2}}">正常</view>
<view class="info" wx:if="{{userInfo.height_growth_curve_type == 3}}">重度偏离</view>
<view class="text">生长曲线</view>
</view>
</t-col> </t-col>
<t-col span="12" t-class="dark">col-8</t-col>
</t-row> </t-row>
</view> </view>
</view> </view>
<view class="item-title"> <view class="item-title">
<image class="item-title-icon" src="../../assets/images/home/icon_1.svg"></image> 生长曲线</view>
宝宝成长曲线</view>
<view class="item-content"> <view class="item-content">
<view class="box_3"> <view class="box_3">
@ -53,76 +70,26 @@
<ec-canvas wx:else id="mychart-dom-weight" canvas-id="mychart-weight" ec="{{ ec2 }}" force-use-old-canvas="true"></ec-canvas> <ec-canvas wx:else id="mychart-dom-weight" canvas-id="mychart-weight" ec="{{ ec2 }}" force-use-old-canvas="true"></ec-canvas>
</view> </view>
</view> </view>
<view class="item-content item-content-1">
<image class="item-content-1-bg" src="../../assets/images/home/img_1.png" mode="widthFix"></image>
<view class="item-title"> <view class="item-title">
<image class="item-title-img" src="../../assets/images/home/img_title_1.png" mode="heightFix"></image> 总胆红素趋势</view>
<view class="item-title-right-text" bindtap="toClockIn"> <view class="item-content">
更多 <view class="echarts-canvas-container">
<ec-canvas id="mychart-dom-direct" canvas-id="mychart-direct" ec="{{ ec3 }}" force-use-old-canvas="true"></ec-canvas>
</view> </view>
</view> </view>
<view wx:for="{{carList}}"> <view class="item-title">
直接胆红素趋势</view>
<view class="item-content">
<view class="echarts-canvas-container">
<ec-canvas id="mychart-dom-indirect" canvas-id="mychart-indirect" ec="{{ ec4 }}" force-use-old-canvas="true"></ec-canvas>
<view class="image-text_3">
<view class="box_6"></view>
<text lines="1" class="text-group_3">{{item.medicine_time}}</text>
</view>
<view class="box_9" wx:for="{{item.detail}}" wx:for-item="item2">
<view class="image-text_5">
<view class="box_10"></view>
<view class="text-group_5">
<text lines="1" class="text_21">{{item2.name}}</text>
<text lines="1" class="text_22">{{item2.frequency}}片,{{item2.time}}服用</text>
</view>
</view>
<view class="box_11"></view>
<view class="text-wrapper_6 {{item.status=='2'?'':'catArt'}}" data-id="{{item.id}}" data-status="{{item.status}}" bind:tap="medicineRecord">
<text lines="1" class="text_23">{{item.status=='2'?'已打卡':'打卡'}}</text>
</view>
</view>
</view>
</view>
<view class="item-content item-content-2" wx:if="{{sfListLength > 0}}">
<image class="item-content-1-bg" src="../../assets/images/home/img_2.png" mode="widthFix"></image>
<view class="item-title">
<image class="item-title-img-2" src="../../assets/images/home/img_title_2.png" mode="heightFix"></image>
</view>
<view class="item-box">
<view class="drug-name">
{{sfData.plan_name}}
</view> </view>
<view class="follow-up-itme">
随访时间:{{sfData.plan_date}}
</view>
<text class="follow-itme-ed">{{sfData.daysUntilPlan}}天后</text>
</view>
</view>
<view class="item-content item-content-3" wx:if="articlesLength > 0">
<view class="item-title">
<image class="item-title-icon" src="../../assets/images/home/icon_2.png"></image> 健康推送
<view class="item-title-right-text" bind:tap="toArticle">
更多
</view>
</view>
<view class="item-box" wx:for="{{articles}}" wx:key="index" bind:tap="toArticleDelit" data-index="{{index}}">
<view class="drug-name">
{{item.title}}
</view>
<view class="article-content">
{{item.contentText}}
</view> </view>
<view class="btn" bind:tap="toLink">
查看患者随访问卷
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<!-- <view class="home-release">
<t-button theme="primary" size="large" icon="add" shape="round" bindtap="goRelease">
发布
</t-button>
</view> -->
<!-- <t-message id="t-message" /> -->
<view class="emergency-access" bindtap="toEmergency">
<t-icon name="call-1-filled" size="42rpx" />
</view>

View File

@ -1,6 +1,6 @@
import request from '~/api/request'; import request from '~/api/request';
import aesCryptoJS from '~/utils/aesCryptoJS'; import aesCryptoJS from '~/utils/aesCryptoJS.js';
Page({ Page({
data: { data: {
@ -8,8 +8,8 @@ Page({
phoneNumber: '', phoneNumber: '',
timer: null, timer: null,
getCodeText: '获取验证码', getCodeText: '获取验证码',
mobile: '13888888888', mobile: '',//13888888888
password: 'doctor2025', password: '',//doctor2025
showPassword: false, showPassword: false,
}, },

View File

@ -1,9 +1,6 @@
{ {
"usingComponents": { "usingComponents": {
"t-navbar": "tdesign-miniprogram/navbar/navbar",
"t-input": "tdesign-miniprogram/input/input",
"t-link": "tdesign-miniprogram/link/link",
"t-button": "tdesign-miniprogram/button/button"
}, },
"navigationStyle": "custom" "navigationStyle": "custom"
} }

View File

@ -1,6 +1,6 @@
{ {
"navigationStyle": "custom", "navigationStyle": "custom",
"usingComponents": { "usingComponents": {
"t-button": "tdesign-miniprogram/button/button" "t-navbar": "tdesign-miniprogram/navbar/navbar"
} }
} }

View File

@ -167,7 +167,6 @@
box-sizing: border-box; box-sizing: border-box;
width: 120rpx; width: 120rpx;
height: 120rpx; height: 120rpx;
margin-bottom: 48rpx;
background-color: rgba(255,255,255,0.5); background-color: rgba(255,255,255,0.5);
// padding: 20rpx; // padding: 20rpx;
border-radius: 120rpx; border-radius: 120rpx;
@ -182,11 +181,10 @@
height: 120rpx; height: 120rpx;
display: flex; display: flex;
align-items: center; align-items: center;
padding-left: 20rpx; padding-left: 20rpx;
} }
.text-group_4 { .text-group_4 {
display: flex;
flex-direction: column;
} }
.text_3 { .text_3 {
overflow-wrap: break-word; overflow-wrap: break-word;

View File

@ -1,4 +1,10 @@
<view class="page"> <view class="page">
<t-navbar
t-class-placeholder="t-navbar-placeholder"
t-class-content="t-navbar-content"
class="block"
title="首页"
/>
<view class="block_1"> <view class="block_1">
<view class="box_1"> <view class="box_1">
<view class="text-wrapper_1" wx:if="{{isLogin}}" bind:tap="logOut"> <view class="text-wrapper_1" wx:if="{{isLogin}}" bind:tap="logOut">
@ -8,11 +14,11 @@
</view> </view>
<view class="block_3"> <view class="block_3">
<image src="../../assets/images/my/my-top-bg.png" class="image_3"></image> <image src="https://image-fudan.oss-cn-beijing.aliyuncs.com/mini_images/my/my-top-bg.png" class="image_3"></image>
<view class="section_2" wx:if="{{isLogin}}" > <view class="section_2" wx:if="{{isLogin}}" >
<view class="image_5"> <view class="image_5">
<image src="../../assets/images/logo.jpg" class=""></image> <image src="https://image-fudan.oss-cn-beijing.aliyuncs.com/mini_images/logo.jpg" class=""></image>
</view> </view>
<view class="block_4"> <view class="block_4">
@ -23,7 +29,7 @@
</view> </view>
<view class="section_2" wx:if="{{!isLogin}}" bind:tap="onLogin"> <view class="section_2" wx:if="{{!isLogin}}" bind:tap="onLogin">
<view class="image_5"> <view class="image_5">
<image src="../../assets/images/logo.jpg" class=""></image> <image src="https://image-fudan.oss-cn-beijing.aliyuncs.com/mini_images/logo.jpg" class=""></image>
</view> </view>
<view class="block_4"> <view class="block_4">

View File

@ -6,27 +6,33 @@ Page({
*/ */
data: { data: {
username: '', username: '',
list: [] list: [],
hasMore: true
}, },
page: 1, page: 1,
page_size: 20,
handleClick(e){ handleClick(e){
wx.navigateTo({ wx.navigateTo({
url: '/pages/home/index', url: '/pages/home/index?userId=' + e.currentTarget.dataset.id,
}) })
}, },
async getList() { async getList(append = false) {
if (!this.data.hasMore && append) return;
const res = await request('doctor/patients', { const res = await request('doctor/patients', {
username: this.data.username, username: this.data.username,
page: this.page, page: this.page,
page_size: 20 page_size: this.page_size
}) })
const newList = append ? this.data.list.concat(res.list) : res.list;
this.setData({ this.setData({
list: res.list list: newList,
hasMore: res.list.length === this.page_size
}) })
}, },
changeUsername(){ changeUsername(){
this.page = 1 this.page = 1
this.setData({ hasMore: true })
this.getList() this.getList()
}, },
@ -48,6 +54,8 @@ Page({
* 生命周期函数--监听页面显示 * 生命周期函数--监听页面显示
*/ */
onShow() { onShow() {
this.page = 1;
this.setData({ hasMore: true })
this.getList(); this.getList();
}, },
@ -71,7 +79,12 @@ Page({
onPullDownRefresh() { onPullDownRefresh() {
}, },
scrolltolower(){
console.log('上拉触底');
if (!this.data.hasMore) return;
this.page++;
this.getList(true);
},
/** /**
* 页面上拉触底事件的处理函数 * 页面上拉触底事件的处理函数
*/ */

View File

@ -1,4 +1,6 @@
{ {
"usingComponents": {}, "usingComponents": {
"t-navbar": "tdesign-miniprogram/navbar/navbar"
},
"navigationStyle": "custom" "navigationStyle": "custom"
} }

View File

@ -1,7 +1,8 @@
.page { .page {
background-color: rgba(248,248,248,1.000000); background-color: rgba(248,248,248,1.000000);
position: relative; position: relative;
flex-direction: column; height: 100vh;
overflow: hidden;
.home-top-bg{ .home-top-bg{
width: 100%; width: 100%;
height: auto; height: auto;
@ -16,11 +17,20 @@
height: 88rpx; height: 88rpx;
} }
.box_1 { .box_1 {
height: calc(100% - 200rpx);
position: relative; position: relative;
z-index: 1; z-index: 1;
display: flex; padding: 24rpx;
flex-direction: column; padding-top: 0;
padding: 12rpx 12rpx 24rpx 24rpx; scroll-view{
box-sizing: border-box;
width: 100%;
height: 100%;
// padding-top: 24rpx;
}
}
.scroll-top{
margin-top: 24rpx;
} }
.box_2 { .box_2 {
flex-direction: row; flex-direction: row;
@ -45,7 +55,6 @@
.box_3 { .box_3 {
background-color: rgba(255,255,255,1.000000); background-color: rgba(255,255,255,1.000000);
border-radius: 40rpx; border-radius: 40rpx;
margin: 36rpx 12rpx 0 0;
padding: 0 24rpx; padding: 0 24rpx;
height: 78rpx; height: 78rpx;
} }
@ -80,20 +89,15 @@
margin-top: 2rpx; margin-top: 2rpx;
} }
.box_4 { .box_4 {
display: flex; margin-top: 24rpx;
flex-direction: column;
margin: 24rpx 12rpx 0 0;
} }
.block_1 { .block_1 {
background-color: rgba(255,255,255,1.000000); background-color: rgba(255,255,255,1.000000);
border-radius: 24rpx; border-radius: 24rpx;
display: flex;
flex-direction: column;
padding: 32rpx; padding: 32rpx;
margin-bottom: 24rpx; margin-bottom: 24rpx;
} }
.image-text_2 { .image-text_2 {
margin-right: 92rpx;
display: flex; display: flex;
} }
.box_5 { .box_5 {
@ -103,6 +107,7 @@
height: 84rpx; height: 84rpx;
border-radius: 84rpx; border-radius: 84rpx;
border: 1px solid rgba(248,248,248,1); border: 1px solid rgba(248,248,248,1);
flex: none;
image{ image{
width: 100%; width: 100%;
height: 100%; height: 100%;
@ -110,38 +115,33 @@
} }
} }
.text-group_2 { .text-group_2 {
flex: auto;
margin-bottom: 8rpx; margin-bottom: 8rpx;
display: flex;
flex-direction: column;
} }
.text-wrapper_1 { .text-wrapper_1 {
display: flex; overflow: hidden;
height: 50rpx;
} }
.text_2 { .text_2 {
overflow-wrap: break-word; float: left;
color: rgba(17,17,17,1); color: rgba(17,17,17,1);
font-size: 32rpx; font-size: 32rpx;
font-family: Alibaba-PuHuiTi-M;
white-space: nowrap;
line-height: 32rpx;
margin-left: 20rpx; margin-left: 20rpx;
} }
.text_3 { .text_3 {
overflow-wrap: break-word; float: left;
color: rgba(96,98,102,1); color: rgba(96,98,102,1);
font-size: 24rpx; font-size: 24rpx;
font-family: Alibaba-PuHuiTi-R; position: relative;
font-weight: normal; margin-left: 20rpx;
white-space: nowrap; top: -24rpx;
line-height: 24rpx;
margin-top: 8rpx;
} }
.text_4 { .text_4 {
color: rgba(96,98,102,1); color: rgba(96,98,102,1);
font-size: 28rpx; font-size: 28rpx;
font-family: Alibaba-PuHuiTi-R; font-family: Alibaba-PuHuiTi-R;
line-height: 28rpx; line-height: 28rpx;
margin: 16rpx 74rpx 0 0; margin: 16rpx 0 0 0;
padding-left: 20rpx; padding-left: 20rpx;
} }
.text_5 { .text_5 {
@ -156,18 +156,16 @@
margin: 8rpx 0 0 100rpx; margin: 8rpx 0 0 100rpx;
} }
.box_6 { .box_6 {
width: 188rpx; margin: 16rpx 0rpx 0 100rpx;
flex-direction: row;
display: flex;
justify-content: space-between;
margin: 16rpx 160rpx 0 100rpx;
} }
.text-wrapper_2 { .text-wrapper_2 {
background-color: rgba(208,15,22,0.100000); background-color: rgba(208,15,22,0.100000);
border-radius: 8rpx; border-radius: 8rpx;
display: flex;
flex-direction: column;
padding: 6rpx 6rpx 6rpx 8rpx; padding: 6rpx 6rpx 6rpx 8rpx;
font-size: 24rpx;
display: inline-block;
margin-right: 20rpx;
} }
.text_6 { .text_6 {
overflow-wrap: break-word; overflow-wrap: break-word;
@ -183,9 +181,10 @@
.text-wrapper_3 { .text-wrapper_3 {
background-color: rgba(0,91,162,0.100000); background-color: rgba(0,91,162,0.100000);
border-radius: 8rpx; border-radius: 8rpx;
display: flex;
flex-direction: column;
padding: 6rpx 8rpx 6rpx 10rpx; padding: 6rpx 8rpx 6rpx 10rpx;
display: inline-block;
margin-right: 20rpx;
font-size: 24rpx;
} }
.text_7 { .text_7 {
overflow-wrap: break-word; overflow-wrap: break-word;
@ -286,9 +285,10 @@
.text-wrapper_5 { .text-wrapper_5 {
background-color: rgba(255,142,0,0.100000); background-color: rgba(255,142,0,0.100000);
border-radius: 8rpx; border-radius: 8rpx;
display: flex;
flex-direction: column;
padding: 6rpx 6rpx 6rpx 8rpx; padding: 6rpx 6rpx 6rpx 8rpx;
margin-right: 20rpx;
display: inline-block;
font-size: 24rpx;
} }
.text_12 { .text_12 {
overflow-wrap: break-word; overflow-wrap: break-word;
@ -402,9 +402,10 @@
.text-wrapper_8 { .text-wrapper_8 {
background-color: rgba(27,163,167,0.100000); background-color: rgba(27,163,167,0.100000);
border-radius: 8rpx; border-radius: 8rpx;
display: flex;
flex-direction: column;
padding: 6rpx 6rpx 6rpx 8rpx; padding: 6rpx 6rpx 6rpx 8rpx;
display: inline-block;
margin-right: 20rpx;
font-size: 24rpx;
} }
.text_18 { .text_18 {
overflow-wrap: break-word; overflow-wrap: break-word;

View File

@ -1,10 +1,9 @@
<view class="page"> <view class="page">
<image src="" class="image_1"></image> <image class="home-top-bg" mode="widthFix" src="https://image-fudan.oss-cn-beijing.aliyuncs.com/mini_images/home/top-bg.png" />
<image class="home-top-bg" mode="widthFix" src="../../assets/images/home/top-bg.png" /> <t-navbar t-class-placeholder="t-navbar-placeholder" t-class-content="t-navbar-content" class="block" title="患者管理" />
<view class="box_1"> <view class="box_1">
<view class="box_2"> <scroll-view scroll-y="true" bindscrolltolower="scrolltolower">
<text lines="1" class="text_1">患者管理</text> <view class="scroll-top">
</view> </view>
<view class="box_3"> <view class="box_3">
<view class="image-text_1"> <view class="image-text_1">
@ -13,15 +12,17 @@
</view> </view>
</view> </view>
<view class="box_4"> <view class="box_4">
<view class="block_1" wx:for="{{list}}" bind:tap="handleClick"> <view class="block_1" wx:for="{{list}}" data-id="{{item.id}}" bind:tap="handleClick">
<view class="image-text_2"> <view class="image-text_2">
<view class="box_5"> <view class="box_5">
<image :src="{{item.avatar}}" class="label_1"></image> <image :src="{{item.avatar}}" class="label_1"></image>
</view> </view>
<view class="text-group_2"> <view class="text-group_2">
<view class="text-wrapper_1"> <view class="text-wrapper_1">
<text lines="1" class="text_2">{{item.username}}</text> <text class="text_2">{{item.username}}</text>
<text lines="1" decode="true" class="text_3">{{item.sex == 1 ? '男':'女'}}&nbsp;·&nbsp;{{item.age}}</text> <text decode="true" class="text_3">
{{item.sex == 1 ? '男':'女'}}&nbsp;·&nbsp;{{item.age}}
</text>
</view> </view>
<text lines="1" class="text_4">PELD评分{{item.risk_value}}</text> <text lines="1" class="text_4">PELD评分{{item.risk_value}}</text>
</view> </view>
@ -40,7 +41,6 @@
<view class="text-wrapper_3"> <view class="text-wrapper_3">
<text lines="1" class="text_7">术后{{item.postoperative_duration}}</text> <text lines="1" class="text_7">术后{{item.postoperative_duration}}</text>
</view> </view>
</view> </view>
</view> </view>
<!-- <view class="block_2"> <!-- <view class="block_2">
@ -86,6 +86,6 @@
</view> </view>
</view> --> </view> -->
</view> </view>
</scroll-view>
</view> </view>
<image src="https://lanhu-oss-2537-2.lanhuapp.com/SketchPng5307b1af86169f255826abaf863153204cb2945f88383eb8f7ba6d59f57697e1" class="image_3"></image>
</view> </view>