Browse Source

小程序页面开发

main
kola 4 months ago
parent
commit
39597b862a
  1. 6
      README.md
  2. 23
      index.d.ts
  3. 12
      project.config.json
  4. 70
      project.private.config.json
  5. 19
      src/app.json
  6. 4
      src/components/customAudio/index.json
  7. 0
      src/components/customAudio/index.scss
  8. 25
      src/components/customAudio/index.ts
  9. 2
      src/components/customAudio/index.wxml
  10. 6
      src/components/customRecord/index.json
  11. 109
      src/components/customRecord/index.scss
  12. 39
      src/components/customRecord/index.ts
  13. 18
      src/components/customRecord/index.wxml
  14. 0
      src/components/uploadFile/index.json
  15. 0
      src/components/uploadFile/index.scss
  16. 0
      src/components/uploadFile/index.ts
  17. 0
      src/components/uploadFile/index.wxml
  18. 18
      src/custom-tab-bar/index.ts
  19. 39
      src/echart/components/ec-canvas/ec-canvas.js
  20. 5
      src/echart/components/homeLevel1/index.json
  21. 272
      src/echart/components/homeLevel1/index.scss
  22. 38
      src/echart/components/homeLevel1/index.ts
  23. 161
      src/echart/components/homeLevel1/index.wxml
  24. 7
      src/echart/components/homeLevel2/index.json
  25. 332
      src/echart/components/homeLevel2/index.scss
  26. 49
      src/echart/components/homeLevel2/index.ts
  27. 184
      src/echart/components/homeLevel2/index.wxml
  28. 7
      src/echart/components/homeLevel3/index.json
  29. 194
      src/echart/components/homeLevel3/index.scss
  30. 26
      src/echart/components/homeLevel3/index.ts
  31. 129
      src/echart/components/homeLevel3/index.wxml
  32. 8
      src/echart/components/homeLevel4/index.json
  33. 370
      src/echart/components/homeLevel4/index.scss
  34. 466
      src/echart/components/homeLevel4/index.ts
  35. 209
      src/echart/components/homeLevel4/index.wxml
  36. BIN
      src/images/doctor-rank-bg.png
  37. BIN
      src/images/empty-2.png
  38. BIN
      src/images/fold-down.png
  39. BIN
      src/images/fold-top.png
  40. BIN
      src/images/home-stat-bg.png
  41. BIN
      src/images/icon-code.png
  42. BIN
      src/images/icon-del.png
  43. BIN
      src/images/icon-download.png
  44. BIN
      src/images/icon-edit.png
  45. BIN
      src/images/icon-eye.png
  46. BIN
      src/images/icon-file.png
  47. BIN
      src/images/icon-nore-file.png
  48. BIN
      src/images/my-bg.png
  49. BIN
      src/images/my-list-icon1.png
  50. BIN
      src/images/my-list-icon2.png
  51. BIN
      src/images/my-list-icon3.png
  52. BIN
      src/images/record.png
  53. 2
      src/module1/pages/auditDoctorDetail/index.wxml
  54. 5
      src/module1/pages/casesDetail/index.json
  55. 116
      src/module1/pages/casesDetail/index.scss
  56. 6
      src/module1/pages/casesDetail/index.ts
  57. 62
      src/module1/pages/casesDetail/index.wxml
  58. 5
      src/module1/pages/changePhone/index.json
  59. 50
      src/module1/pages/changePhone/index.scss
  60. 77
      src/module1/pages/changePhone/index.ts
  61. 16
      src/module1/pages/changePhone/index.wxml
  62. 5
      src/module1/pages/doctorRankList/index.json
  63. 63
      src/module1/pages/doctorRankList/index.scss
  64. 6
      src/module1/pages/doctorRankList/index.ts
  65. 25
      src/module1/pages/doctorRankList/index.wxml
  66. 10
      src/module1/pages/entryCases/index.json
  67. 363
      src/module1/pages/entryCases/index.scss
  68. 15
      src/module1/pages/entryCases/index.ts
  69. 111
      src/module1/pages/entryCases/index.wxml
  70. 5
      src/module1/pages/entryCasesResult/index.json
  71. 50
      src/module1/pages/entryCasesResult/index.scss
  72. 6
      src/module1/pages/entryCasesResult/index.ts
  73. 13
      src/module1/pages/entryCasesResult/index.wxml
  74. 7
      src/module1/pages/org3/index.json
  75. 314
      src/module1/pages/org3/index.scss
  76. 6
      src/module1/pages/org3/index.ts
  77. 229
      src/module1/pages/org3/index.wxml
  78. 8
      src/module1/pages/org4/index.json
  79. 333
      src/module1/pages/org4/index.scss
  80. 6
      src/module1/pages/org4/index.ts
  81. 279
      src/module1/pages/org4/index.wxml
  82. 2
      src/module1/pages/setDoctor/index.wxml
  83. 2
      src/module1/pages/setInfo/index.json
  84. 16
      src/module1/pages/setInfo/index.wxml
  85. 9
      src/module1/pages/userInfo/index.json
  86. 128
      src/module1/pages/userInfo/index.scss
  87. 19
      src/module1/pages/userInfo/index.ts
  88. 87
      src/module1/pages/userInfo/index.wxml
  89. 7
      src/pages/cases/index.json
  90. 464
      src/pages/cases/index.scss
  91. 21
      src/pages/cases/index.ts
  92. 237
      src/pages/cases/index.wxml
  93. 10
      src/pages/home/index.json
  94. 3
      src/pages/home/index.scss
  95. 8
      src/pages/home/index.ts
  96. 7
      src/pages/home/index.wxml
  97. 6
      src/pages/my/index.json
  98. 154
      src/pages/my/index.scss
  99. 11
      src/pages/my/index.ts
  100. 65
      src/pages/my/index.wxml
  101. Some files were not shown because too many files have changed in this diff Show More

6
README.md

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
1. user 打开小程序进入 身份认证页面
2. 判断图片是否涂抹
3. 图像识别模糊 可以反向确认 通过ocr识别接口 接入ocr同时识别不到 姓名,年龄等字样,及判断该病已被涂抹
3. 图像识别模糊 可以反向确认 通过ocr识别接口 接入ocr同时识别不到 姓名,年龄等字样,及判断该病已被涂抹
<!--占位图像-->
https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567
@ -9,3 +9,7 @@ images svn 地址 @@ -9,3 +9,7 @@ images svn 地址
svn://39.106.86.127:28386/projects/takeda/proj_src/shop/frontend/web/wt
ui问题
1. 首页绑定医生弹窗需要重新切图
2. 播放语音条图片没切

23
index.d.ts vendored

@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
interface IAppOption {
globalData: {
userInfo?: WechatMiniprogram.UserInfo
url: string
upFileUrl: string
imageUrl: string
}
userInfoReadyCallback?: WechatMiniprogram.GetUserInfoSuccessCallback
waitLogin: () => Promise<any>
getMenuInfo: (arg0: WechatMiniprogram.Page.Instance<any, any>) => void
}
interface IAgaxParams extends WechatMiniprogram.RequestOption {
showMsg?: boolean
loading?: boolean
isJSON?: boolean
}
declare namespace WechatMiniprogram {
export interface Wx {
ajax: (arg0: IAgaxParams) => Promise<any>
}
}

12
project.config.json

@ -15,7 +15,7 @@ @@ -15,7 +15,7 @@
"coverView": false,
"postcss": false,
"minified": false,
"enhance": false,
"enhance": true,
"showShadowRootInWxmlPanel": false,
"packNpmManually": true,
"packNpmRelationList": [
@ -26,7 +26,8 @@ @@ -26,7 +26,8 @@
],
"ignoreUploadUnusedFiles": true,
"compileHotReLoad": false,
"skylineRenderEnable": true
"skylineRenderEnable": true,
"es6": true
},
"simulatorType": "wechat",
"simulatorPluginLibVersion": {},
@ -39,7 +40,12 @@ @@ -39,7 +40,12 @@
"libVersion": "2.32.3",
"packOptions": {
"ignore": [],
"include": []
"include": [
{
"value": "/echart/components/ec-canvas/echarts.js",
"type": "file"
}
]
},
"appid": "wxaae50c206446a964"
}

70
project.private.config.json

@ -8,6 +8,76 @@ @@ -8,6 +8,76 @@
"miniprogram": {
"list": [
{
"name": "病例详情",
"pathName": "module1/pages/casesDetail/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "录入病例结果",
"pathName": "module1/pages/entryCasesResult/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "录入病历",
"pathName": "module1/pages/entryCases/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "病历",
"pathName": "pages/cases/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "组织架构4",
"pathName": "module1/pages/org4/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "组织架构3",
"pathName": "module1/pages/org3/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "医院活跃排行榜",
"pathName": "module1/pages/doctorRankList/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "更换手机号",
"pathName": "module1/pages/changePhone/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "个人信息",
"pathName": "module1/pages/userInfo/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "我的",
"pathName": "pages/my/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "首页",
"pathName": "pages/home/index",
"query": "",

19
src/app.json

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
{
"$schema": "https://dldir1.qq.com/WechatWebDev/editor-extension/wx-json/app.schema.json",
"pages": ["pages/start/index", "pages/home/index", "pages/cases/index"],
"pages": ["pages/start/index", "pages/home/index", "pages/cases/index", "pages/my/index"],
"subPackages": [
{
"root": "echart",
@ -19,10 +19,19 @@ @@ -19,10 +19,19 @@
"pages/cDoctorResult/index",
"pages/auditDoctorList/index",
"pages/auditDoctorDetail/index",
"pages/setDoctor/index"
"pages/setDoctor/index",
"pages/userInfo/index",
"pages/changePhone/index",
"pages/doctorRankList/index",
"pages/org3/index",
"pages/org4/index",
"pages/entryCases/index",
"pages/entryCasesResult/index",
"pages/casesDetail/index"
]
}
],
"preloadRule": {},
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff",
@ -39,7 +48,11 @@ @@ -39,7 +48,11 @@
},
{
"pagePath": "pages/cases/index",
"text": "病例"
"text": "病历"
},
{
"pagePath": "pages/my/index",
"text": "我的"
}
]
},

4
src/components/customAudio/index.json

@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

0
src/components/customAudio/index.scss

25
src/components/customAudio/index.ts

@ -0,0 +1,25 @@ @@ -0,0 +1,25 @@
const _app = getApp<IAppOption>();
// pages/story/a.ts
Component({
/**
*
*/
properties: {
},
/**
*
*/
data: {
},
/**
*
*/
methods: {
}
})

2
src/components/customAudio/index.wxml

@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
<!--pages/story/a.wxml-->
<text>pages/story/a.wxml</text>

6
src/components/customRecord/index.json

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
{
"component": true,
"usingComponents": {
"van-popup": "@vant/weapp/popup/index"
}
}

109
src/components/customRecord/index.scss

@ -0,0 +1,109 @@ @@ -0,0 +1,109 @@
.record {
width: 107rpx;
height: 107rpx;
border: 10rpx solid #e6f7f9;
border-radius: 50%;
.icon {
width: 107rpx;
height: 107rpx;
}
.record-page {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
z-index: 10000;
background-color: rgba(0, 0, 0, 0);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.record-line {
position: relative;
padding: 32rpx;
border-radius: 32rpx;
background-color: rgba(1, 180, 197, 1);
display: flex;
align-items: center;
.wave {
width: 260rpx;
height: 60rpx;
}
.time {
font-size: 28rpx;
color: rgba(255, 255, 255, 1);
}
&::after {
position: absolute;
left: calc(50% - 6rpx);
bottom: -10rpx;
content: '';
width: 0;
height: 0;
border-style: solid;
border-width: 12rpx 12rpx 0 12rpx;
border-color: rgba(1, 180, 197, 1) transparent transparent transparent;
}
}
.record-page-icon-wrap {
width: 320rpx;
height: 320rpx;
display: flex;
align-items: center;
justify-content: center;
}
.record-page-icon {
margin-top: 32rpx;
width: 0;
height: 0;
padding: 0;
// background-color: rgba(255, 255, 255, 0.5);
// border: 0 solid rgba(255, 255, 255, 0.25);
background: radial-gradient(circle, rgba(192, 192, 192, 1) 0%, rgba(133, 133, 133, 1) 100%);
border-radius: 50%;
transition: all 0.3s;
}
&.record-pape-start {
opacity: 0;
left: 0;
top: 100vh;
transition: all 0.3s;
}
&.record-page-active {
left: 0;
top: 0;
opacity: 1;
background-color: rgba(0, 0, 0, 0.7);
.record-page-icon {
width: 200rpx;
height: 200rpx;
padding: 56rpx;
// border: 28rpx solid rgba(255, 255, 255, 0.25);
border-radius: 50%;
animation: grow-bp 0.6s ease-in-out 0.3s infinite;
@keyframes grow-bp {
0% {
padding: 0;
// border-width: 0;
}
// 25% {
// padding: 28rpx;
// }
50% {
padding: 56rpx;
// border-width: 28rpx;
}
// 75% {
// padding: 28rpx;
// border-width: 0;
// }
100% {
padding: 0;
// border-width: 0;
}
}
}
}
}
}

39
src/components/customRecord/index.ts

@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
const _app = getApp<IAppOption>()
// pages/story/a.ts
Component({
/**
*
*/
properties: {},
/**
*
*/
data: {
startShow: false,
show: false,
},
/**
*
*/
methods: {
handleStart() {
this.setData({
startShow: true,
})
},
handleShow() {
this.setData({
show: true,
})
},
handleHide() {
this.setData({
startShow: false,
show: false,
})
},
},
})

18
src/components/customRecord/index.wxml

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
<view
class="record"
bind:touchstart="handleStart"
bind:longtap="handleShow"
bind:touchend="handleHide"
bind:touchcancel="handleHide"
>
<image class="icon" src="/images/record.png"></image>
<view wx:if="{{startShow}}" class="record-page {{startShow && 'record-pape-start'}} {{show && 'record-page-active'}}">
<view class="record-line">
<image class="wave"></image>
<view class="time">45”</view>
</view>
<view class="record-page-icon-wrap">
<image class="record-page-icon" src="/images/record.png" mode="scaleToFill"></image>
</view>
</view>
</view>

0
src/components/upload/index.json → src/components/uploadFile/index.json

0
src/components/upload/index.scss → src/components/uploadFile/index.scss

0
src/components/upload/index.ts → src/components/uploadFile/index.ts

0
src/components/upload/index.wxml → src/components/uploadFile/index.wxml

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

@ -19,14 +19,14 @@ Component({ @@ -19,14 +19,14 @@ Component({
iconActive: 'tab-active1.png',
},
{
path: '/pages/home/index',
name: '首页',
path: '/pages/cases/index',
name: '病历',
icon: 'tab2.png',
iconActive: 'tab-active2.png',
},
{
custom: true,
path: '/pages/home/index',
path: '/module1/pages/entryCases/index',
},
{
path: '/pages/home/index',
@ -51,9 +51,15 @@ Component({ @@ -51,9 +51,15 @@ Component({
handleTab(e: any) {
const { index } = e.currentTarget.dataset
const tab = this.data.tabbar[index]
wx.switchTab({
url: tab.path,
})
if (tab.custom) {
wx.navigateTo({
url: tab.path,
})
} else {
wx.switchTab({
url: tab.path,
})
}
},
},
})

39
src/echart/components/ec-canvas/ec-canvas.js

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import WxCanvas from './wx-canvas';
import * as echarts from './echarts';
let ctx;
let echarts
function compareVersion(v1, v2) {
v1 = v1.split('.')
@ -49,8 +49,7 @@ Component({ @@ -49,8 +49,7 @@ Component({
isUseNewCanvas: false
},
ready:async function () {
echarts = await require.async('../../resource/components/echart/echarts.js')
ready: function () {
// Disable prograssive because drawImage doesn't support DOM as parameter
// See https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.drawImage.html
echarts.registerPreprocessor(option => {
@ -78,8 +77,7 @@ Component({ @@ -78,8 +77,7 @@ Component({
},
methods: {
init: async function (callback) {
echarts = await require.async('../../resource/components/echart/echarts.js')
init: function (callback) {
const version = wx.getSystemInfoSync().SDKVersion
const canUseNewCanvas = compareVersion(version, '2.9.0') >= 0;
@ -114,9 +112,13 @@ Component({ @@ -114,9 +112,13 @@ Component({
ctx = wx.createCanvasContext(this.data.canvasId, this);
const canvas = new WxCanvas(ctx, this.data.canvasId, false);
echarts.setCanvasCreator(() => {
return canvas;
});
if (echarts.setPlatformAPI) {
echarts.setPlatformAPI({
createCanvas: () => canvas,
});
} else {
echarts.setCanvasCreator(() => canvas);
};
// const canvasDpr = wx.getSystemInfoSync().pixelRatio // 微信旧的canvas不能传入dpr
const canvasDpr = 1
var query = wx.createSelectorQuery().in(this);
@ -155,9 +157,24 @@ Component({ @@ -155,9 +157,24 @@ Component({
const ctx = canvasNode.getContext('2d')
const canvas = new WxCanvas(ctx, this.data.canvasId, true, canvasNode)
echarts.setCanvasCreator(() => {
return canvas
})
if (echarts.setPlatformAPI) {
echarts.setPlatformAPI({
createCanvas: () => canvas,
loadImage: (src, onload, onerror) => {
if (canvasNode.createImage) {
const image = canvasNode.createImage();
image.onload = onload;
image.onerror = onerror;
image.src = src;
return image;
}
console.error('加载图片依赖 `Canvas.createImage()` API,要求小程序基础库版本在 2.7.0 及以上。');
// PENDING fallback?
}
})
} else {
echarts.setCanvasCreator(() => canvas)
}
if (typeof callback === 'function') {
this.chart = callback(canvas, canvasWidth, canvasHeight, canvasDpr)

5
src/echart/components/homeLevel1/index.json

@ -1,4 +1,7 @@ @@ -1,4 +1,7 @@
{
"component": true,
"usingComponents": {}
"usingComponents": {
"doctorAvatar": "/components/doctorAvatar/index",
"van-icon": "@vant/weapp/icon/index"
}
}

272
src/echart/components/homeLevel1/index.scss

@ -0,0 +1,272 @@ @@ -0,0 +1,272 @@
.page {
padding: 36rpx 32rpx 200rpx;
.user {
display: flex;
gap: 24rpx;
align-items: center;
.avatar {
width: 112rpx;
height: 112rpx;
}
.wrap {
.w-header {
display: flex;
align-items: baseline;
gap: 16rpx;
.name {
font-size: 36rpx;
color: rgba(0, 180, 197, 1);
}
.desc {
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
}
.w-footer {
margin-top: 24rpx;
.hostipal {
margin-right: 12rpx;
display: inline;
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.tag {
margin-right: 12rpx;
display: inline-block;
padding: 0 8rpx;
border-radius: 4rpx;
background-color: rgba(0, 180, 197, 1);
font-size: 24rpx;
color: #fff;
}
.site {
display: inline-block;
padding: 0 8rpx;
font-size: 28rpx;
line-height: 32rpx;
color: rgba(148, 87, 30, 1);
border-radius: 4rpx;
background-color: rgba(250, 229, 206, 1);
}
}
}
}
.banner {
margin-top: 32rpx;
.title {
position: relative;
z-index: 1;
padding: 14rpx;
width: 262rpx;
height: 116rpx;
text-align: center;
font-size: 28rpx;
color: rgba(0, 180, 197, 1);
line-height: 1;
box-sizing: border-box;
background: linear-gradient(180deg, #dcf5f7 0%, #ffffff 100%);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 1rpx solid #ffffff;
}
.bg {
padding-top: 40rpx;
border-radius: 24rpx;
background-color: rgba(250, 229, 206, 1);
margin-top: -95rpx;
.b-container {
position: relative;
z-index: 2;
border: 1rpx solid #ffffff;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 16rpx 16rpx 16rpx 16rpx;
display: flex;
align-items: center;
.item {
padding: 32rpx 0;
flex: 1;
text-align: center;
.name {
font-size: 28rpx;
color: #fff;
line-height: 1;
}
.num {
margin-top: 24rpx;
font-size: 56rpx;
color: #fff;
line-height: 56rpx;
}
}
.line {
flex-shrink: 0;
height: 108rpx;
border-right: 1rpx dashed #ffffff;
opacity: 0.5;
}
}
}
}
.stat {
position: relative;
margin-top: 24rpx;
padding: 96rpx 0 32rpx;
border-radius: 16rpx;
.title {
position: absolute;
top: 0;
left: 0;
padding: 16rpx 24rpx;
font-size: 28rpx;
color: #fff;
}
.s-container {
display: flex;
.item {
flex: 1;
text-align: center;
.name {
font-size: 28rpx;
color: rgba(128, 128, 128, 1);
line-height: 1;
}
.num {
margin-top: 24rpx;
font-size: 48rpx;
color: rgba(20, 21, 21, 1);
line-height: 56rpx;
}
}
.line {
flex-shrink: 0;
height: 108rpx;
border-right: 1rpx dashed rgba(224, 224, 224, 0.5);
}
}
}
.cooperate,
.invite {
margin-top: 24rpx;
background: linear-gradient(180deg, #f1feff 0%, #ffffff 100%);
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #ffffff;
&-header {
padding: 32rpx 20rpx;
display: flex;
align-items: center;
justify-content: space-between;
.name {
font-size: 32rpx;
color: rgba(20, 21, 21, 1);
}
.fold {
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
display: flex;
align-items: center;
gap: 12rpx;
.icon {
width: 28rpx;
height: 28rpx;
}
}
}
.doctor-list {
padding: 0 20rpx 32rpx;
transition: 0.3s max-height;
max-height: var(--fold-height);
&-fold {
padding: 0;
max-height: 0;
overflow: hidden;
}
.doctor {
margin-bottom: 20rpx;
padding: 32rpx;
display: flex;
gap: 24rpx;
background: linear-gradient(180deg, #e5f5f7 0%, #ffffff 50%);
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.1);
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #ffffff;
&:last-of-type {
margin-bottom: 0;
}
.avatar {
flex-shrink: 0;
position: relative;
width: 112rpx;
height: 112rpx;
}
.wrap {
padding-top: 8rpx;
.w-header {
display: flex;
align-items: baseline;
gap: 16rpx;
line-height: 1;
.name {
font-size: 36rpx;
color: rgba(20, 21, 21, 1);
font-weight: bold;
}
.label {
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.line {
width: 1px;
height: 24rpx;
background-color: rgba(205, 205, 205, 1);
}
}
.w-container {
margin-top: 24rpx;
.hostipal {
margin-right: 12rpx;
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.tag {
margin-right: 12rpx;
display: inline-block;
padding: 0 8rpx;
border-radius: 4rpx;
font-size: 24rpx;
color: rgba(255, 255, 255, 1);
line-height: 32rpx;
background-color: rgba(0, 180, 197, 1);
}
.site {
display: inline-block;
padding: 0 8rpx;
font-size: 24rpx;
color: rgba(148, 87, 30, 1);
line-height: 32rpx;
border-radius: 4rpx;
background-color: rgba(250, 229, 206, 1);
}
}
.w-footer {
margin-top: 16rpx;
display: flex;
gap: 12rpx;
flex-wrap: wrap;
.wf-label {
flex-shrink: 0;
width: 48rpx;
height: 32rpx;
}
.wf-tag {
flex-shrink: 0;
padding: 0 8rpx;
font-size: 22rpx;
color: rgba(0, 180, 197, 1);
line-height: 32rpx;
border: 1rpx solid rgba(191, 239, 244, 1);
}
}
}
}
}
}
}

38
src/echart/components/homeLevel1/index.ts

@ -1,25 +1,49 @@ @@ -1,25 +1,49 @@
const _app = getApp<IAppOption>();
const _app = getApp<IAppOption>()
// pages/story/a.ts
Component({
/**
*
*/
properties: {
},
properties: {},
/**
*
*/
data: {
fold1: false,
foldHeight1: 10000,
fold2: false,
foldHeight2: 10000,
},
attached() {
this.getHeight()
},
/**
*
*/
methods: {
}
getHeight() {
const query = wx.createSelectorQuery().in(this)
query.select('#fold1').boundingClientRect()
query.select('#fold2').boundingClientRect()
query.exec((res) => {
this.setData({
foldHeight1: res[0].height,
foldHeight2: res[1].height,
})
})
},
toggleFold1() {
this.setData({
fold1: !this.data.fold1,
})
},
toggleFold2() {
this.setData({
fold2: !this.data.fold2,
})
},
},
})

161
src/echart/components/homeLevel1/index.wxml

@ -1 +1,160 @@ @@ -1 +1,160 @@
<view class="page">11</view>
<view class="page">
<view class="user">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{1}}"
></doctorAvatar>
<view class="wrap">
<view class="w-header">
<view class="name">徐萌</view>
<view class="desc">主治医师</view>
</view>
<view class="w-footer">
<view class="hostipal">北京天坛医院</view>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
</view>
</view>
</view>
<view class="banner">
<view class="title">待处理事项</view>
<view class="bg">
<view class="b-container">
<view class="item">
<view class="name">病历更新</view>
<view class="num">27</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">聊天室新消息</view>
<view class="num">1</view>
</view>
</view>
</view>
</view>
<view
class="stat"
style="background: url({{imageUrl}}home-stat-bg.png?r={{Timestamp}}) no-repeat top center/100% 100%;"
>
<view class="title">我提交的病历</view>
<view class="s-container">
<view class="item">
<view class="name">总数</view>
<view class="num">54</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">
新病历
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
<view class="num">54</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">
讨论中
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
<view class="num">54</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">
已归档
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
<view class="num">54</view>
</view>
</view>
</view>
<view class="cooperate">
<view class="cooperate-header">
<view class="name">我合作的医生(2)</view>
<view class="fold" bind:tap="toggleFold1">
<block wx:if="{{fold1}}">
展开
<image class="icon" src="/images/fold-down.png"></image>
</block>
<block wx:else>
收起
<image class="icon" src="/images/fold-top.png"></image>
</block>
</view>
</view>
<view id="fold1" class="doctor-list {{fold1 && 'doctor-list-fold'}}" style="--fold-height: {{foldHeight1}}px;">
<view class="doctor">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{1}}"
></doctorAvatar>
<view class="wrap">
<view class="w-header">
<view class="name">徐萌</view>
<view class="label">主任医师</view>
<view class="line"></view>
<view class="label">心内科</view>
</view>
<view class="w-container">
<text class="hostipal">北京天坛医院</text>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
</view>
<view class="w-footer">
<image class="wf-label" src="/images/text-specialty.png" mode="aspectFit"></image>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
</view>
</view>
</view>
</view>
</view>
<view class="invite">
<view class="invite-header">
<view class="name">我合作的医生(2)</view>
<view class="fold" bind:tap="toggleFold2">
<block wx:if="{{fold2}}">
展开
<image class="icon" src="/images/fold-down.png"></image>
</block>
<block wx:else>
收起
<image class="icon" src="/images/fold-top.png"></image>
</block>
</view>
</view>
<view id="fold2" class="doctor-list {{fold2 && 'doctor-list-fold'}}" style="--fold-height: {{foldHeight2}}px;">
<view class="doctor">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{1}}"
></doctorAvatar>
<view class="wrap">
<view class="w-header">
<view class="name">徐萌</view>
<view class="label">主任医师</view>
<view class="line"></view>
<view class="label">心内科</view>
</view>
<view class="w-container">
<text class="hostipal">北京天坛医院</text>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
</view>
<view class="w-footer">
<image class="wf-label" src="/images/text-specialty.png" mode="aspectFit"></image>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
</view>
</view>
</view>
</view>
</view>
</view>

7
src/echart/components/homeLevel2/index.json

@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
{
"component": true,
"usingComponents": {
"doctorAvatar": "/components/doctorAvatar/index",
"van-icon": "@vant/weapp/icon/index"
}
}

332
src/echart/components/homeLevel2/index.scss

@ -0,0 +1,332 @@ @@ -0,0 +1,332 @@
.page {
padding: 36rpx 32rpx 200rpx;
.user {
margin-top: 40rpx;
position: relative;
padding: 94rpx 32rpx 32rpx;
background: linear-gradient(180deg, #f1feff 0%, #ffffff 35%, #ffffff 100%);
box-shadow: 0rpx 8rpx 24rpx 0rpx rgba(0, 66, 73, 0.09);
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #ffffff;
.avatar {
position: absolute;
top: -38rpx;
left: 32rpx;
width: 112rpx;
height: 112rpx;
}
.code {
position: absolute;
top: 38rpx;
right: 34rpx;
width: 60rpx;
height: 60rpx;
}
.wrap {
.w-header {
display: flex;
align-items: baseline;
gap: 16rpx;
.name {
font-size: 36rpx;
color: rgba(20, 21, 21, 1);
}
.desc {
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
.line {
margin: 0 12rpx;
display: inline-block;
height: 24rpx;
width: 1rpx;
background-color: rgba(205, 205, 205, 1);
}
}
}
.w-container {
margin-top: 24rpx;
.hostipal {
margin-right: 12rpx;
display: inline;
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.tag {
margin-right: 12rpx;
display: inline-block;
padding: 0 8rpx;
border-radius: 4rpx;
background-color: rgba(0, 180, 197, 1);
font-size: 24rpx;
color: #fff;
}
.site {
display: inline-block;
padding: 0 8rpx;
font-size: 28rpx;
line-height: 32rpx;
color: rgba(148, 87, 30, 1);
border-radius: 4rpx;
background-color: rgba(250, 229, 206, 1);
}
}
.w-footer {
margin-top: 16rpx;
display: flex;
gap: 12rpx;
flex-wrap: wrap;
.wf-label {
flex-shrink: 0;
width: 48rpx;
height: 32rpx;
}
.wf-tag {
flex-shrink: 0;
padding: 0 8rpx;
font-size: 22rpx;
color: rgba(0, 180, 197, 1);
line-height: 32rpx;
border: 1rpx solid rgba(191, 239, 244, 1);
}
}
}
}
.banner {
margin-top: 32rpx;
.title {
position: relative;
z-index: 1;
padding: 14rpx;
width: 262rpx;
height: 116rpx;
text-align: center;
font-size: 28rpx;
color: rgba(0, 180, 197, 1);
line-height: 1;
box-sizing: border-box;
background: linear-gradient(180deg, #dcf5f7 0%, #ffffff 100%);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 1rpx solid #ffffff;
}
.bg {
padding-top: 40rpx;
border-radius: 24rpx;
background-color: rgba(250, 229, 206, 1);
margin-top: -95rpx;
.b-container {
position: relative;
z-index: 2;
border: 1rpx solid #ffffff;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 16rpx 16rpx 16rpx 16rpx;
display: flex;
align-items: center;
.item {
padding: 32rpx 0;
flex: 1;
text-align: center;
.name {
font-size: 26rpx;
color: #fff;
line-height: 1;
}
.num {
margin-top: 24rpx;
font-size: 56rpx;
color: #fff;
line-height: 56rpx;
}
}
.line {
flex-shrink: 0;
height: 108rpx;
border-right: 1rpx dashed #ffffff;
opacity: 0.5;
}
}
}
}
.stat {
position: relative;
margin-top: 24rpx;
padding: 96rpx 0 32rpx;
border-radius: 16rpx;
.title {
position: absolute;
top: 0;
left: 0;
padding: 16rpx 24rpx;
font-size: 28rpx;
color: #fff;
}
.more {
position: absolute;
top: 0;
right: 0;
padding: 14rpx 20rpx;
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
}
.s-container {
display: flex;
.item {
flex: 1;
text-align: center;
.name {
font-size: 28rpx;
color: rgba(128, 128, 128, 1);
line-height: 1;
}
.num {
margin-top: 24rpx;
font-size: 48rpx;
color: rgba(20, 21, 21, 1);
line-height: 56rpx;
}
}
.line {
flex-shrink: 0;
height: 108rpx;
border-right: 1rpx dashed rgba(224, 224, 224, 0.5);
}
}
}
.cooperate,
.invite {
margin-top: 24rpx;
background: linear-gradient(180deg, #f1feff 0%, #ffffff 100%);
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #ffffff;
&-header {
padding: 32rpx 20rpx;
display: flex;
align-items: center;
justify-content: space-between;
.name {
font-size: 32rpx;
color: rgba(20, 21, 21, 1);
}
.fold {
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
display: flex;
align-items: center;
gap: 12rpx;
.icon {
width: 28rpx;
height: 28rpx;
}
}
}
.doctor-list {
padding: 0 20rpx 32rpx;
transition: 0.3s max-height;
max-height: var(--fold-height);
&-fold {
padding: 0;
max-height: 0;
overflow: hidden;
}
.doctor {
position: relative;
margin-bottom: 20rpx;
padding: 32rpx;
display: flex;
gap: 24rpx;
background: linear-gradient(180deg, #e5f5f7 0%, #ffffff 50%);
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.1);
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #ffffff;
&:last-of-type {
margin-bottom: 0;
}
.avatar {
flex-shrink: 0;
position: relative;
width: 112rpx;
height: 112rpx;
}
.assign {
position: absolute;
top: 0;
right: 0;
padding: 2rpx 16rpx;
line-height: 28rpx;
font-size: 22rpx;
color: rgba(0, 180, 197, 1);
background-color: rgba(215, 237, 238, 1);
border-radius: 0 16rpx 0 16rpx;
}
.wrap {
padding-top: 8rpx;
.w-header {
display: flex;
align-items: baseline;
gap: 16rpx;
line-height: 1;
.name {
font-size: 36rpx;
color: rgba(20, 21, 21, 1);
font-weight: bold;
}
.label {
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.line {
width: 1px;
height: 24rpx;
background-color: rgba(205, 205, 205, 1);
}
}
.w-container {
margin-top: 24rpx;
.hostipal {
margin-right: 12rpx;
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.tag {
margin-right: 12rpx;
display: inline-block;
padding: 0 8rpx;
border-radius: 4rpx;
font-size: 24rpx;
color: rgba(255, 255, 255, 1);
line-height: 32rpx;
background-color: rgba(0, 180, 197, 1);
}
.site {
display: inline-block;
padding: 0 8rpx;
font-size: 24rpx;
color: rgba(148, 87, 30, 1);
line-height: 32rpx;
border-radius: 4rpx;
background-color: rgba(250, 229, 206, 1);
}
}
.w-footer {
margin-top: 16rpx;
display: flex;
gap: 12rpx;
flex-wrap: wrap;
.wf-label {
flex-shrink: 0;
width: 48rpx;
height: 32rpx;
}
.wf-tag {
flex-shrink: 0;
padding: 0 8rpx;
font-size: 22rpx;
color: rgba(0, 180, 197, 1);
line-height: 32rpx;
border: 1rpx solid rgba(191, 239, 244, 1);
}
}
}
}
}
}
}

49
src/echart/components/homeLevel2/index.ts

@ -0,0 +1,49 @@ @@ -0,0 +1,49 @@
const _app = getApp<IAppOption>()
// pages/story/a.ts
Component({
/**
*
*/
properties: {},
/**
*
*/
data: {
fold1: false,
foldHeight1: 10000,
fold2: false,
foldHeight2: 10000,
},
attached() {
this.getHeight()
},
/**
*
*/
methods: {
getHeight() {
const query = wx.createSelectorQuery().in(this)
query.select('#fold1').boundingClientRect()
query.select('#fold2').boundingClientRect()
query.exec((res) => {
this.setData({
foldHeight1: res[0].height,
foldHeight2: res[1].height,
})
})
},
toggleFold1() {
this.setData({
fold1: !this.data.fold1,
})
},
toggleFold2() {
this.setData({
fold2: !this.data.fold2,
})
},
},
})

184
src/echart/components/homeLevel2/index.wxml

@ -0,0 +1,184 @@ @@ -0,0 +1,184 @@
<view class="page">
<view class="user">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{1}}"
></doctorAvatar>
<image class="code" src="/images/icon-code.png"></image>
<view class="wrap">
<view class="w-header">
<view class="name">徐萌</view>
<view class="desc">
主治医师
<view class="line"></view>
心内科
</view>
</view>
<view class="w-container">
<view class="hostipal">北京天坛医院</view>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
</view>
<view class="w-footer">
<image class="wf-label" src="/images/text-specialty.png" mode="aspectFit"></image>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
</view>
</view>
</view>
<view class="banner">
<view class="title">待处理事项</view>
<view class="bg">
<view class="b-container">
<view class="item">
<view class="name">待处理病历</view>
<view class="num">27</view>
</view>
<view class="item">
<view class="name">病历更新</view>
<view class="num">1</view>
</view>
<view class="item">
<view class="name">聊天室消息</view>
<view class="num">1</view>
</view>
<view class="item">
<view class="name">医生待审核</view>
<view class="num">1</view>
</view>
</view>
</view>
</view>
<view
class="stat"
style="background: url({{imageUrl}}home-stat-bg.png?r={{Timestamp}}) no-repeat top center/100% 100%;"
>
<view class="title">我管理的病历</view>
<view class="more">
查看全部
<van-icon name="arrow" />
</view>
<view class="s-container">
<view class="item">
<view class="name">全部</view>
<view class="num">54</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">
新病历
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
<view class="num">54</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">
讨论中
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
<view class="num">54</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">
已归档
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
<view class="num">54</view>
</view>
</view>
</view>
<view class="cooperate">
<view class="cooperate-header">
<view class="name">我合作的医生(2)</view>
<view class="fold" bind:tap="toggleFold1">
<block wx:if="{{fold1}}">
展开
<image class="icon" src="/images/fold-down.png"></image>
</block>
<block wx:else>
收起
<image class="icon" src="/images/fold-top.png"></image>
</block>
</view>
</view>
<view id="fold1" class="doctor-list {{fold1 && 'doctor-list-fold'}}" style="--fold-height: {{foldHeight1}}px;">
<view class="doctor">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{1}}"
></doctorAvatar>
<view class="wrap">
<view class="w-header">
<view class="name">徐萌</view>
<view class="label">主任医师</view>
<view class="line"></view>
<view class="label">心内科</view>
</view>
<view class="w-container">
<text class="hostipal">北京天坛医院</text>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
</view>
<view class="w-footer">
<image class="wf-label" src="/images/text-specialty.png" mode="aspectFit"></image>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
</view>
</view>
</view>
</view>
</view>
<view class="invite">
<view class="invite-header">
<view class="name">我邀约的医生(1)</view>
<view class="fold" bind:tap="toggleFold2">
<block wx:if="{{fold2}}">
展开
<image class="icon" src="/images/fold-down.png"></image>
</block>
<block wx:else>
收起
<image class="icon" src="/images/fold-top.png"></image>
</block>
</view>
</view>
<view id="fold2" class="doctor-list {{fold2 && 'doctor-list-fold'}}" style="--fold-height: {{foldHeight2}}px;">
<view class="doctor">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{1}}"
></doctorAvatar>
<view class="assign">蒋亮医生指派</view>
<view class="wrap">
<view class="w-header">
<view class="name">徐萌</view>
<view class="label">主任医师</view>
<view class="line"></view>
<view class="label">心内科</view>
</view>
<view class="w-container">
<text class="hostipal">北京天坛医院</text>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
</view>
<view class="w-footer">
<image class="wf-label" src="/images/text-specialty.png" mode="aspectFit"></image>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
</view>
</view>
</view>
</view>
</view>
</view>

7
src/echart/components/homeLevel3/index.json

@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
{
"component": true,
"usingComponents": {
"doctorAvatar": "/components/doctorAvatar/index",
"van-icon": "@vant/weapp/icon/index"
}
}

194
src/echart/components/homeLevel3/index.scss

@ -0,0 +1,194 @@ @@ -0,0 +1,194 @@
.page {
padding: 36rpx 32rpx 200rpx;
.user {
margin-top: 40rpx;
position: relative;
padding: 94rpx 32rpx 32rpx;
background: linear-gradient(180deg, #f1feff 0%, #ffffff 35%, #ffffff 100%);
box-shadow: 0rpx 8rpx 24rpx 0rpx rgba(0, 66, 73, 0.09);
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #ffffff;
.avatar {
position: absolute;
top: -38rpx;
left: 32rpx;
width: 112rpx;
height: 112rpx;
}
.code {
position: absolute;
top: 38rpx;
right: 34rpx;
width: 60rpx;
height: 60rpx;
}
.wrap {
.w-header {
display: flex;
align-items: baseline;
gap: 16rpx;
.name {
font-size: 36rpx;
color: rgba(20, 21, 21, 1);
}
.desc {
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
.line {
margin: 0 12rpx;
display: inline-block;
height: 24rpx;
width: 1rpx;
background-color: rgba(205, 205, 205, 1);
}
}
}
.w-container {
margin-top: 24rpx;
.hostipal {
margin-right: 12rpx;
display: inline;
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.tag {
margin-right: 12rpx;
display: inline-block;
padding: 0 8rpx;
border-radius: 4rpx;
background-color: rgba(0, 180, 197, 1);
font-size: 24rpx;
color: #fff;
}
.site {
display: inline-block;
padding: 0 8rpx;
font-size: 28rpx;
line-height: 32rpx;
color: rgba(148, 87, 30, 1);
border-radius: 4rpx;
background-color: rgba(250, 229, 206, 1);
}
}
.w-footer {
margin-top: 16rpx;
display: flex;
gap: 12rpx;
flex-wrap: wrap;
.wf-label {
flex-shrink: 0;
width: 48rpx;
height: 32rpx;
}
.wf-tag {
flex-shrink: 0;
padding: 0 8rpx;
font-size: 22rpx;
color: rgba(0, 180, 197, 1);
line-height: 32rpx;
border: 1rpx solid rgba(191, 239, 244, 1);
}
}
}
}
.banner {
margin-top: 32rpx;
.title {
position: relative;
z-index: 1;
padding: 14rpx;
width: 262rpx;
height: 116rpx;
text-align: center;
font-size: 28rpx;
color: rgba(0, 180, 197, 1);
line-height: 1;
box-sizing: border-box;
background: linear-gradient(180deg, #dcf5f7 0%, #ffffff 100%);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 1rpx solid #ffffff;
}
.bg {
padding-top: 40rpx;
border-radius: 24rpx;
background-color: rgba(250, 229, 206, 1);
margin-top: -95rpx;
.b-container {
position: relative;
z-index: 2;
border: 1rpx solid #ffffff;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 16rpx 16rpx 16rpx 16rpx;
display: flex;
align-items: center;
.item {
padding: 32rpx 0;
flex: 1;
text-align: center;
.name {
font-size: 26rpx;
color: #fff;
line-height: 1;
}
.num {
margin-top: 24rpx;
font-size: 56rpx;
color: #fff;
line-height: 56rpx;
}
}
.line {
flex-shrink: 0;
height: 108rpx;
border-right: 1rpx dashed #ffffff;
opacity: 0.5;
}
}
}
}
.stat {
position: relative;
margin-top: 24rpx;
padding: 96rpx 0 32rpx;
border-radius: 16rpx;
.title {
position: absolute;
top: 0;
left: 0;
padding: 16rpx 24rpx;
font-size: 28rpx;
color: #fff;
}
.more {
position: absolute;
top: 0;
right: 0;
padding: 14rpx 20rpx;
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
}
.s-container {
display: flex;
.item {
flex: 1;
text-align: center;
.name {
font-size: 28rpx;
color: rgba(128, 128, 128, 1);
line-height: 1;
}
.num {
margin-top: 24rpx;
font-size: 48rpx;
color: rgba(20, 21, 21, 1);
line-height: 56rpx;
}
}
.line {
flex-shrink: 0;
height: 108rpx;
border-right: 1rpx dashed rgba(224, 224, 224, 0.5);
}
}
}
}

26
src/echart/components/homeLevel3/index.ts

@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
const _app = getApp<IAppOption>()
// pages/story/a.ts
Component({
/**
*
*/
properties: {},
/**
*
*/
data: {},
attached() {},
/**
*
*/
methods: {
handleOrg() {
wx.navigateTo({
url: '/module1/pages/org3/index',
})
},
},
})

129
src/echart/components/homeLevel3/index.wxml

@ -0,0 +1,129 @@ @@ -0,0 +1,129 @@
<view class="page">
<view class="user">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{1}}"
></doctorAvatar>
<image class="code" src="/images/icon-code.png"></image>
<view class="wrap">
<view class="w-header">
<view class="name">徐萌</view>
<view class="desc">
主治医师
<view class="line"></view>
心内科
</view>
</view>
<view class="w-container">
<view class="hostipal">北京天坛医院</view>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
</view>
<view class="w-footer">
<image class="wf-label" src="/images/text-specialty.png" mode="aspectFit"></image>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
</view>
</view>
</view>
<view class="banner">
<view class="title">待处理事项</view>
<view class="bg">
<view class="b-container">
<view class="item">
<view class="name">待处理病历</view>
<view class="num">27</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">聊天室新消息</view>
<view class="num">1</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">医生待审核</view>
<view class="num">1</view>
</view>
</view>
</view>
</view>
<view
class="stat"
style="background: url({{imageUrl}}home-stat-bg.png?r={{Timestamp}}) no-repeat top center/100% 100%;"
>
<view class="title">我管理的病历</view>
<view class="s-container">
<view class="item">
<view class="name">全部</view>
<view class="num">54</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">
新病历
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
<view class="num">54</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">
讨论中
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
<view class="num">54</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">
已归档
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
<view class="num">54</view>
</view>
</view>
</view>
<view
class="stat"
style="background: url({{imageUrl}}home-stat-bg.png?r={{Timestamp}}) no-repeat top center/100% 100%;"
>
<view class="title">我管理的医生</view>
<view class="more" bind:tap="handleOrg">
查看全部
<van-icon name="arrow" />
</view>
<view class="s-container">
<view class="item">
<view class="name">全部</view>
<view class="num">54</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">
新病历
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
<view class="num">54</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">
讨论中
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
<view class="num">54</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">
已归档
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
<view class="num">54</view>
</view>
</view>
</view>
</view>

8
src/echart/components/homeLevel4/index.json

@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
{
"component": true,
"usingComponents": {
"doctorAvatar": "/components/doctorAvatar/index",
"van-icon": "@vant/weapp/icon/index",
"ec-canvas": "../ec-canvas/ec-canvas"
}
}

370
src/echart/components/homeLevel4/index.scss

@ -0,0 +1,370 @@ @@ -0,0 +1,370 @@
.page {
padding: 36rpx 32rpx 100rpx;
.user {
margin-top: 40rpx;
position: relative;
padding: 94rpx 32rpx 32rpx;
background: linear-gradient(180deg, #f1feff 0%, #ffffff 35%, #ffffff 100%);
box-shadow: 0rpx 8rpx 24rpx 0rpx rgba(0, 66, 73, 0.09);
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #ffffff;
.avatar {
position: absolute;
top: -38rpx;
left: 32rpx;
width: 112rpx;
height: 112rpx;
}
.code {
position: absolute;
top: 38rpx;
right: 34rpx;
width: 60rpx;
height: 60rpx;
}
.wrap {
.w-header {
display: flex;
align-items: baseline;
gap: 16rpx;
.name {
font-size: 36rpx;
color: rgba(20, 21, 21, 1);
}
.desc {
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
.line {
margin: 0 12rpx;
display: inline-block;
height: 24rpx;
width: 1rpx;
background-color: rgba(205, 205, 205, 1);
}
}
}
.w-container {
margin-top: 24rpx;
.hostipal {
margin-right: 12rpx;
display: inline;
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.tag {
margin-right: 12rpx;
display: inline-block;
padding: 0 8rpx;
border-radius: 4rpx;
background-color: rgba(0, 180, 197, 1);
font-size: 24rpx;
color: #fff;
}
.site {
display: inline-block;
padding: 0 8rpx;
font-size: 28rpx;
line-height: 32rpx;
color: rgba(148, 87, 30, 1);
border-radius: 4rpx;
background-color: rgba(250, 229, 206, 1);
}
}
.w-footer {
margin-top: 16rpx;
display: flex;
gap: 12rpx;
flex-wrap: wrap;
.wf-label {
flex-shrink: 0;
width: 48rpx;
height: 32rpx;
}
.wf-tag {
flex-shrink: 0;
padding: 0 8rpx;
font-size: 22rpx;
color: rgba(0, 180, 197, 1);
line-height: 32rpx;
border: 1rpx solid rgba(191, 239, 244, 1);
}
}
}
}
.banner {
margin-top: 32rpx;
.title {
position: relative;
z-index: 1;
padding: 14rpx;
width: 262rpx;
height: 116rpx;
text-align: center;
font-size: 28rpx;
color: rgba(0, 180, 197, 1);
line-height: 1;
box-sizing: border-box;
background: linear-gradient(180deg, #dcf5f7 0%, #ffffff 100%);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 1rpx solid #ffffff;
}
.bg {
padding-top: 40rpx;
border-radius: 24rpx;
background-color: rgba(250, 229, 206, 1);
margin-top: -95rpx;
.b-container {
position: relative;
z-index: 2;
border: 1rpx solid #ffffff;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 16rpx 16rpx 16rpx 16rpx;
display: flex;
align-items: center;
.item {
padding: 32rpx 0;
flex: 1;
text-align: center;
.name {
font-size: 26rpx;
color: #fff;
line-height: 1;
}
.num {
margin-top: 24rpx;
font-size: 56rpx;
color: #fff;
line-height: 56rpx;
}
}
.line {
flex-shrink: 0;
height: 108rpx;
border-right: 1rpx dashed #ffffff;
opacity: 0.5;
}
}
}
}
.stat {
position: relative;
margin-top: 24rpx;
padding: 96rpx 0 32rpx;
border-radius: 16rpx;
.title {
position: absolute;
top: 0;
left: 0;
padding: 16rpx 24rpx;
font-size: 28rpx;
color: #fff;
}
.picker {
position: absolute;
top: 8rpx;
left: 296rpx;
.picker-content {
padding: 4rpx 24rpx;
display: flex;
gap: 18rpx;
font-size: 28rpx;
color: rgba(133, 133, 133, 1);
background: #ffffff;
border-radius: 98rpx 98rpx 98rpx 98rpx;
border: 1rpx solid #f6f6f6;
}
}
.more {
position: absolute;
top: 0;
right: 0;
padding: 14rpx 20rpx;
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
}
.s-container {
display: flex;
.item {
flex: 1;
text-align: center;
.name {
font-size: 28rpx;
color: rgba(128, 128, 128, 1);
line-height: 1;
}
.num {
margin-top: 24rpx;
font-size: 48rpx;
color: rgba(20, 21, 21, 1);
line-height: 56rpx;
}
}
.line {
flex-shrink: 0;
height: 108rpx;
border-right: 1rpx dashed rgba(224, 224, 224, 0.5);
}
}
}
.department {
margin-top: 24rpx;
padding: 0 20rpx;
background: linear-gradient(180deg, #f1feff 0%, #ffffff 35%, #ffffff 100%);
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #ffffff;
.d-header {
padding: 32rpx 0;
display: flex;
align-items: center;
justify-content: space-between;
.name {
font-size: 32rpx;
color: rgba(20, 21, 21, 1);
}
.more {
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
}
}
.d-container {
padding: 32rpx 0;
background: linear-gradient(180deg, #f3fbfd 0%, #ffffff 50%);
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.08);
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #ffffff;
display: flex;
justify-content: space-between;
.item {
flex: 1;
text-align: center;
.name {
font-size: 28rpx;
color: rgba(128, 128, 128, 1);
line-height: 1;
}
.num {
margin-top: 24rpx;
font-size: 48rpx;
color: rgba(20, 21, 21, 1);
line-height: 56rpx;
}
}
}
.tip {
padding: 20rpx 0;
font-size: 22rpx;
color: rgba(153, 153, 153, 1);
text-align: right;
}
}
.chart-card {
margin-top: 24rpx;
background: linear-gradient(180deg, #f1feff 0%, #ffffff 35%, #ffffff 100%);
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #ffffff;
.c-header {
padding: 32rpx 20rpx;
display: flex;
align-items: center;
justify-content: space-between;
.name {
font-size: 32rpx;
color: rgba(20, 21, 21, 1);
}
.picker {
.picker-content {
padding: 8rpx 24rpx;
display: flex;
gap: 18rpx;
font-size: 28rpx;
color: rgba(133, 133, 133, 1);
background: #ffffff;
border-radius: 98rpx 98rpx 98rpx 98rpx;
border: 1rpx solid #f6f6f6;
}
}
}
.cahrt {
height: 450rpx;
}
.tip {
padding: 24rpx 20rpx 32rpx;
font-size: 22rpx;
color: rgba(153, 153, 153, 1);
text-align: right;
}
}
.rank {
margin: 24rpx -32rpx 0;
padding: 0 32rpx 100rpx;
background: linear-gradient(180deg, #f1feff 0%, #ffffff 14%, #ffffff 100%);
border-radius: 32rpx 32rpx 0 0;
border: 2rpx solid #ffffff;
.r-header {
padding: 32rpx 0;
display: flex;
align-items: center;
justify-content: space-between;
.title {
font-size: 32rpx;
color: rgba(20, 21, 21, 1);
}
.more {
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
}
}
.table {
margin-top: 40rpx;
.thead {
padding: 22rpx 0;
display: flex;
font-size: 28rpx;
color: rgba(0, 180, 197, 1);
background-color: rgba(233, 246, 247, 1);
text-align: center;
border-radius: 8rpx;
.th1 {
width: 338rpx;
}
.th2,
.th3,
.th4,
.th5 {
width: 96rpx;
white-space: nowrap;
}
}
.tbody {
border-bottom: 1rpx solid rgba(224, 224, 224, 0.5);
.tr {
display: flex;
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
text-align: center;
padding: 18rpx 0;
line-height: 32rpx;
border-radius: 8rpx;
&:nth-child(even) {
background-color: rgba(248, 248, 248, 1);
}
.td1 {
padding: 12rpx 0;
width: 338rpx;
}
.td2,
.td3,
.td4,
.td5 {
padding: 12rpx 0;
width: 96rpx;
border-left: 1px dashed rgba(224, 224, 224, 1);
}
.td2 {
color: rgba(0, 180, 197, 1);
}
}
}
}
}
}

466
src/echart/components/homeLevel4/index.ts

@ -0,0 +1,466 @@ @@ -0,0 +1,466 @@
const app = getApp<IAppOption>()
const echarts = require('../ec-canvas/echarts.js')
// pages/story/a.ts
Component({
/**
*
*/
properties: {},
/**
*
*/
data: {
ec: {
lazyLoad: true,
},
},
attached() {
this.waitEchart(async () => {
const chart1: any = await this.initChart1()
const chart2: any = await this.initChart2()
const chart3: any = await this.initChart3()
})
},
/**
*
*/
methods: {
ecDataTrendComponent1: null as any,
ecDataTrendComponent2: null as any,
ecDataTrendComponent3: null as any,
waitEchart(callback) {
const time = setInterval(() => {
if (this.selectComponent('#chart1')) {
console.log(this.selectComponent('#chart1'))
clearInterval(time)
callback()
}
}, 30)
},
initChart1() {
return new Promise((reslove) => {
this.ecDataTrendComponent1 = this.selectComponent('#chart1')
this.ecDataTrendComponent1.init((canvas, width, height, dpr) => {
const chart = echarts.init(canvas, null, {
width,
height,
devicePixelRatio: dpr, // new
})
canvas.setChart(chart)
const x: string[] = ['2024-09', '2024-10']
const y1: string[] = ['10', '30']
const y2: string[] = ['10', '30']
const y3: string[] = ['10', '30']
const y4: string[] = ['30', '90']
const option = {
legend: {
bottom: 0,
itemWidth: 8,
itemHeight: 8,
icon: 'circle',
lineStyle: {
width: '0',
},
textStyle: {
color: 'rgba(103, 113, 114, 1)',
fontSize: '12',
},
data: ['一级医生', '核心医生', '质控医生'],
},
grid: {
top: '10%',
left: '3%',
right: '4%',
bottom: '30',
containLabel: true,
},
xAxis: [
{
type: 'category',
axisTick: {
show: false,
},
axisLine: {
show: false,
},
axisLabel: {
fontSize: 10,
color: 'rgba(40, 48, 49, 1)',
},
data: x,
},
],
yAxis: [
{
type: 'value',
minInterval: 1,
splitLine: {
show: false,
},
axisLabel: {
fontSize: 10,
color: 'rgba(40, 48, 49, 1)',
formatter(value) {
return Math.abs(value)
},
},
},
],
series: [
{
name: '质控医生',
type: 'bar',
stack: 'a',
label: {
show: true,
color: '#fff',
fontSize: 10,
overflow: 'truncate',
width: 30,
formatter(params) {
return Math.abs(params.value)
},
},
color: 'rgba(0, 180, 197, 1)',
data: y3,
},
{
name: '核心医生',
type: 'bar',
stack: 'a',
label: {
show: true,
color: '#fff',
fontSize: 10,
overflow: 'truncate',
width: 30,
formatter(params) {
return Math.abs(params.value)
},
},
color: 'rgba(84, 226, 180, 1)',
data: y2,
},
{
name: '一级医生',
type: 'bar',
stack: 'a',
label: {
show: true,
color: 'rgba(0, 180, 197, 1)',
fontSize: 10,
overflow: 'truncate',
width: 30,
},
color: 'rgba(225, 248, 242, 1)',
data: y1,
},
{
name: '总数', // 总数显示,生成一个总数的柱状图,将颜色设为透明,
type: 'line', // label将位置设备内部底部,造成一个总数显示在
stack: '', // 柱状图上方的假象
color: 'rgba(0, 0, 0, 0)',
data: y4,
symbolSize: 0,
label: {
normal: {
show: true,
position: 'top',
color: 'rgba(133, 133, 133, 1)',
fontSize: 10,
formatter: '{c}',
},
},
},
],
dataZoom: {
type: 'inside', // 有type这个属性,滚动条在最下面,也可以不行,写y:36,这表示距离顶端36px,一般就是在图上面。
startValue: x.length - 6,
endValue: x.length - 1,
filterMode: 'none',
},
}
chart.setOption(option)
reslove(chart)
return chart
})
})
},
initChart2() {
return new Promise((reslove) => {
this.ecDataTrendComponent2 = this.selectComponent('#chart2')
this.ecDataTrendComponent2.init((canvas, width, height, dpr) => {
const chart = echarts.init(canvas, null, {
width,
height,
devicePixelRatio: dpr, // new
})
canvas.setChart(chart)
const x: string[] = ['2024-09', '2024-10']
const y1: string[] = ['10', '30']
const y2: string[] = ['10', '30']
const y3: string[] = ['20', '60']
const option = {
legend: {
bottom: 0,
itemWidth: 8,
itemHeight: 8,
icon: 'circle',
lineStyle: {
width: '0',
},
textStyle: {
color: 'rgba(103, 113, 114, 1)',
fontSize: '12',
},
data: ['一级医生提交', '核心医生提交'],
},
grid: {
top: '10%',
left: '3%',
right: '4%',
bottom: '30',
containLabel: true,
},
xAxis: [
{
type: 'category',
axisTick: {
show: false,
},
axisLine: {
show: false,
},
axisLabel: {
fontSize: 10,
color: 'rgba(40, 48, 49, 1)',
},
data: x,
},
],
yAxis: [
{
type: 'value',
minInterval: 1,
splitLine: {
show: false,
},
axisLabel: {
fontSize: 10,
color: 'rgba(40, 48, 49, 1)',
formatter(value) {
return Math.abs(value)
},
},
},
],
series: [
{
name: '核心医生提交',
type: 'bar',
stack: 'a',
label: {
show: true,
color: '#fff',
fontSize: 10,
overflow: 'truncate',
width: 30,
formatter(params) {
return Math.abs(params.value)
},
},
color: 'rgba(84, 226, 180, 1)',
data: y2,
},
{
name: '一级医生提交',
type: 'bar',
stack: 'a',
label: {
show: true,
color: 'rgba(0, 180, 197, 1)',
fontSize: 10,
overflow: 'truncate',
width: 30,
},
color: 'rgba(225, 248, 242, 1)',
data: y1,
},
{
name: '总数', // 总数显示,生成一个总数的柱状图,将颜色设为透明,
type: 'line', // label将位置设备内部底部,造成一个总数显示在
stack: '', // 柱状图上方的假象
color: 'rgba(0, 0, 0, 0)',
data: y3,
symbolSize: 0,
label: {
normal: {
show: true,
position: 'top',
color: 'rgba(133, 133, 133, 1)',
fontSize: 10,
formatter: '{c}',
},
},
},
],
dataZoom: {
type: 'inside', // 有type这个属性,滚动条在最下面,也可以不行,写y:36,这表示距离顶端36px,一般就是在图上面。
startValue: x.length - 6,
endValue: x.length - 1,
filterMode: 'none',
},
}
chart.setOption(option)
reslove(chart)
return chart
})
})
},
initChart3() {
return new Promise((reslove) => {
this.ecDataTrendComponent3 = this.selectComponent('#chart3')
this.ecDataTrendComponent3.init((canvas, width, height, dpr) => {
const chart = echarts.init(canvas, null, {
width,
height,
devicePixelRatio: dpr, // new
})
canvas.setChart(chart)
const x: string[] = ['2024-09', '2024-10']
const y1: string[] = ['10', '30']
const y2: string[] = ['10', '30']
const y3: string[] = ['20', '60']
const option = {
legend: {
bottom: 0,
itemWidth: 8,
itemHeight: 8,
icon: 'circle',
lineStyle: {
width: '0',
},
textStyle: {
color: 'rgba(103, 113, 114, 1)',
fontSize: '12',
},
data: ['一级医生提交', '核心医生提交'],
},
grid: {
top: '10%',
left: '3%',
right: '4%',
bottom: '30',
containLabel: true,
},
xAxis: [
{
type: 'category',
axisTick: {
show: false,
},
axisLine: {
show: false,
},
axisLabel: {
fontSize: 10,
color: 'rgba(40, 48, 49, 1)',
},
data: x,
},
],
yAxis: [
{
type: 'value',
minInterval: 1,
splitLine: {
show: false,
},
axisLabel: {
fontSize: 10,
color: 'rgba(40, 48, 49, 1)',
formatter(value) {
return Math.abs(value)
},
},
},
],
series: [
{
name: '核心医生提交',
type: 'bar',
stack: 'a',
label: {
show: true,
color: '#fff',
fontSize: 10,
overflow: 'truncate',
width: 30,
formatter(params) {
return Math.abs(params.value)
},
},
color: 'rgba(84, 226, 180, 1)',
data: y2,
},
{
name: '一级医生提交',
type: 'bar',
stack: 'a',
label: {
show: true,
color: 'rgba(0, 180, 197, 1)',
fontSize: 10,
overflow: 'truncate',
width: 30,
},
color: 'rgba(225, 248, 242, 1)',
data: y1,
},
{
name: '总数', // 总数显示,生成一个总数的柱状图,将颜色设为透明,
type: 'line', // label将位置设备内部底部,造成一个总数显示在
stack: '', // 柱状图上方的假象
color: 'rgba(0, 0, 0, 0)',
data: y3,
symbolSize: 0,
label: {
normal: {
show: true,
position: 'top',
color: 'rgba(133, 133, 133, 1)',
fontSize: 10,
formatter: '{c}',
},
},
},
],
dataZoom: {
type: 'inside', // 有type这个属性,滚动条在最下面,也可以不行,写y:36,这表示距离顶端36px,一般就是在图上面。
startValue: x.length - 6,
endValue: x.length - 1,
filterMode: 'none',
},
}
chart.setOption(option)
reslove(chart)
return chart
})
})
},
handleRankDetail() {
wx.navigateTo({
url: '/module1/pages/doctorRankList/index',
})
},
},
})

209
src/echart/components/homeLevel4/index.wxml

@ -0,0 +1,209 @@ @@ -0,0 +1,209 @@
<view class="page">
<view class="user">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{1}}"
></doctorAvatar>
<image class="code" src="/images/icon-code.png"></image>
<view class="wrap">
<view class="w-header">
<view class="name">徐萌</view>
<view class="desc">
主治医师
<view class="line"></view>
心内科
</view>
</view>
<view class="w-container">
<view class="hostipal">北京天坛医院</view>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
</view>
<view class="w-footer">
<image class="wf-label" src="/images/text-specialty.png" mode="aspectFit"></image>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
</view>
</view>
</view>
<view class="banner">
<view class="title">待处理事项</view>
<view class="bg">
<view class="b-container">
<view class="item">
<view class="name">待处理病历</view>
<view class="num">27</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">聊天室新消息</view>
<view class="num">1</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">医生待审核</view>
<view class="num">1</view>
</view>
</view>
</view>
</view>
<view
class="stat"
style="background: url({{imageUrl}}home-stat-bg.png?r={{Timestamp}}) no-repeat top center/100% 100%;"
>
<view class="title">本科室全部病历</view>
<picker class="picker">
<view class="picker-content">
<view class="text">全部</view>
<van-icon name="arrow-down" />
</view>
</picker>
<view class="more">
查看全部
<van-icon name="arrow" />
</view>
<view class="s-container">
<view class="item">
<view class="name">全部</view>
<view class="num">54</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">
新病历
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
<view class="num">54</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">
讨论中
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
<view class="num">54</view>
</view>
<view class="line"></view>
<view class="item">
<view class="name">
已归档
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
<view class="num">54</view>
</view>
</view>
</view>
<view class="department">
<view class="d-header">
<view class="name">本科室医生</view>
<view class="more">
查看全部
<van-icon name="arrow" />
</view>
</view>
<view class="d-container">
<view class="item">
<view class="name">医生总数</view>
<view class="num">54</view>
</view>
<view class="item">
<view class="name">质控医生</view>
<view class="num">54</view>
</view>
<view class="item">
<view class="name">核心医生</view>
<view class="num">54</view>
</view>
<view class="item">
<view class="name">一级医生</view>
<view class="num">54</view>
</view>
</view>
<view class="tip">注:一级医生为平台全部医生,不区分科室</view>
</view>
<view class="chart-card">
<view class="c-header">
<view class="name">
科室医生入驻情况
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
<picker class="picker">
<view class="picker-content">
<view class="text">2024年</view>
<van-icon name="arrow-down" />
</view>
</picker>
</view>
<view class="cahrt">
<ec-canvas id="chart1" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
<view class="tip">注:一级医生为平台全部医生,不区分科室</view>
</view>
<view class="chart-card">
<view class="c-header">
<view class="name">
累计病历统计
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
<picker class="picker">
<view class="picker-content">
<view class="text">2024年</view>
<van-icon name="arrow-down" />
</view>
</picker>
</view>
<view class="cahrt">
<ec-canvas id="chart2" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
</view>
<view class="chart-card">
<view class="c-header">
<view class="name">
科室新增病历统计
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
<picker class="picker">
<view class="picker-content">
<view class="text">2024年</view>
<van-icon name="arrow-down" />
</view>
</picker>
</view>
<view class="cahrt">
<ec-canvas id="chart3" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
</view>
<view class="rank">
<view class="r-header">
<view class="title">
医院活跃排行榜
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
<view class="more" bind:tap="handleRankDetail">
查看全部
<van-icon name="arrow" />
</view>
</view>
<view class="table">
<view class="thead">
<view class="th1">医院</view>
<view class="th2">医生总数</view>
<view class="th3">S1</view>
<view class="th4">S2</view>
<view class="th5">S3</view>
</view>
<view class="tbody">
<view class="tr" wx:for="{{4}}" wx:key="index">
<view class="td1">1 中山大学附属医院</view>
<view class="td2">888</view>
<view class="td3">888</view>
<view class="td4">888</view>
<view class="td5">888</view>
</view>
</view>
</view>
</view>
</view>

BIN
src/images/doctor-rank-bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

BIN
src/images/empty-2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
src/images/fold-down.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 771 B

BIN
src/images/fold-top.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 754 B

BIN
src/images/home-stat-bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
src/images/icon-code.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/images/icon-del.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/images/icon-download.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 471 B

BIN
src/images/icon-edit.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 B

BIN
src/images/icon-eye.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
src/images/icon-file.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/images/icon-nore-file.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
src/images/my-bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 KiB

BIN
src/images/my-list-icon1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/images/my-list-icon2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/images/my-list-icon3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
src/images/record.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

2
src/module1/pages/auditDoctorDetail/index.wxml

@ -62,7 +62,7 @@ @@ -62,7 +62,7 @@
</view>
<view class="btn2" bind:tap="handleSetDoctor">
<view class="title">指派核心医生后通过</view>
<view class="explanation">被指派医生将帮您提前审核病</view>
<view class="explanation">被指派医生将帮您提前审核病</view>
</view>
<view class="cancel" bind:tap="handleDialogClose">取消</view>
</view>

5
src/module1/pages/casesDetail/index.json

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
{
"navigationBarTitleText": "病历",
"navigationStyle": "default",
"usingComponents": {}
}

116
src/module1/pages/casesDetail/index.scss

@ -0,0 +1,116 @@ @@ -0,0 +1,116 @@
.page {
padding: 24rpx;
.detail-card {
padding-bottom: 16rpx;
position: relative;
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #ffffff;
background: linear-gradient(180deg, #f1feff 0%, #ffffff 35%, #ffffff 100%);
.li-header {
padding: 32rpx 32rpx 0 16rpx;
display: flex;
justify-content: space-between;
&::before {
flex-shrink: 0;
content: '';
width: 10rpx;
height: 40rpx;
background: #00b4c5;
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
.wrap {
flex: 1;
padding-left: 22rpx;
display: flex;
flex-wrap: wrap;
gap: 24rpx;
.id {
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.status {
font-size: 28rpx;
&.status1 {
color: rgba(0, 180, 197, 1);
}
&.status2 {
color: rgba(247, 121, 0, 1);
}
&.status3 {
color: rgba(153, 153, 153, 1);
}
}
}
.fold {
flex-shrink: 0;
display: flex;
align-items: center;
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
.icon {
width: 32rpx;
height: 32rpx;
}
}
}
.li-row {
padding: 16rpx 32rpx;
display: flex;
line-height: 32rpx;
.label {
flex-shrink: 0;
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
width: 5em;
}
.content {
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
.line {
color: rgba(205, 205, 205, 1);
}
.new {
margin-right: 12rpx;
display: inline-block;
padding: 0 8rpx;
font-size: 24rpx;
color: #fff;
background: linear-gradient(177deg, #f77900 0%, #ed4f39 88%);
border-radius: 0rpx 8rpx 0rpx 8rpx;
}
.reject {
padding: 0 8rpx;
display: inline-block;
font-size: 24rpx;
color: rgba(153, 153, 153, 1);
line-height: 32rpx;
border: 1px solid rgba(224, 224, 224, 1);
border-radius: 4rpx;
}
}
.tags {
display: flex;
gap: 12rpx;
.tag {
padding: 2rpx 8rpx;
font-size: 22rpx;
color: rgba(0, 180, 197, 1);
line-height: 32rpx;
border: 1rpx solid #bfeff4;
border-radius: 4rpx;
}
}
}
.photos {
padding: 16rpx 32rpx;
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 12rpx;
.photo {
width: 100%;
height: 148rpx;
border-radius: 8rpx;
}
}
}
}

6
src/module1/pages/casesDetail/index.ts

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
const _app = getApp<IAppOption>();
Page({
data: {},
onLoad() {},
});

62
src/module1/pages/casesDetail/index.wxml

@ -0,0 +1,62 @@ @@ -0,0 +1,62 @@
<view class="page">
<view class="detail-card">
<view class="li-header">
<view class="wrap">
<view class="id">ID:2024020913049204001</view>
<view class="status status2">新病历</view>
</view>
<view class="fold">
收起
<image class="icon" src="/images/fold-down.png"></image>
</view>
</view>
<view class="li-row">
<view class="label">提交时间</view>
<view class="content">2024-02-09 12:04:23</view>
</view>
<view class="li-row">
<view class="label">提交人</view>
<view class="content">
王军
<text class="line">|</text>
四川大学华西医院 副主任医师
</view>
</view>
<view class="li-row">
<view class="label">标签</view>
<view class="tags">
<view class="tag">心律失常</view>
<view class="tag">心律失常</view>
<view class="tag">心律失常</view>
</view>
</view>
<view class="photos">
<image
class="photo"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
bind:tap="handleImagePreview"
data-url="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
></image>
<image
class="photo"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
></image>
</view>
<view class="li-row">
<view class="label">更新时间</view>
<view class="content">
2024-02-09 12:04:23
<view class="new">new</view>
<view class="reject">已驳回</view>
</view>
</view>
<view class="li-row">
<view class="label">反馈人</view>
<view class="content">
王军
<text class="line">|</text>
四川大学华西医院 副主任医师
</view>
</view>
</view>
</view>

5
src/module1/pages/changePhone/index.json

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
{
"navigationBarTitleText": "更换手机号",
"navigationStyle": "default",
"usingComponents": {}
}

50
src/module1/pages/changePhone/index.scss

@ -0,0 +1,50 @@ @@ -0,0 +1,50 @@
pgae {
}
.page {
.container {
.form {
margin-top: 32rpx;
padding: 0 64rpx;
.row {
margin-bottom: 40rpx;
display: flex;
.input {
flex: 1;
padding: 24rpx 32rpx;
height: 40rpx;
font-size: 32rpx;
color: #000;
background: #f6f6f6;
border-radius: 96rpx 96rpx 96rpx 96rpx;
}
.place-input {
color: rgba(205, 205, 205, 1);
}
.code {
margin-left: 24rpx;
flex-shrink: 0;
width: 262rpx;
border-radius: 24rpx;
font-size: 32rpx;
color: rgba(0, 180, 197, 1);
display: flex;
align-items: center;
justify-content: center;
background-color: rgba(216, 247, 250, 1);
border-radius: 96rpx;
}
.submit {
margin-top: 24rpx;
width: 622rpx;
height: 88rpx;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 96rpx;
font-size: 32rpx;
color: #ffffff;
text-align: center;
line-height: 88rpx;
}
}
}
}
}

77
src/module1/pages/changePhone/index.ts

@ -0,0 +1,77 @@ @@ -0,0 +1,77 @@
const app = getApp<IAppOption>()
let timer = null as null | number
Page({
data: {
mobile: '',
code: '',
codeText: '发送验证码',
},
onLoad() {},
getCode() {
if (timer) return
const mobile = this.data.mobile
if (!mobile) {
wx.showToast({
title: '手机号不能为空',
icon: 'none',
})
return
}
// 验证手机号
if (!/^(13\d|14[579]|15[0-3,5-9]|166|17[0135-8]|18\d|19[89])\d{8}$/.test(mobile)) {
wx.showToast({
title: '手机号格式不正确',
icon: 'none',
})
return
}
wx.ajax({
method: 'POST',
url: '?r=zd/login/send-verify-code',
data: {
mobile,
},
}).then((res) => {
wx.showToast({
icon: 'none',
title: '验证码已发送~',
})
let time = 60
timer = setInterval(() => {
time--
this.setData({
codeText: `${time}s后重新发送`,
})
if (time <= 0) {
clearInterval(timer as number)
timer = null
this.setData({
codeText: '发送验证码',
})
}
}, 1000)
})
},
handleSubmit() {
const { mobile, code } = this.data
const { registrationSource, registChannel, regBusinessId } = app.globalData
wx.ajax({
method: 'POST',
url: '?r=zd/account/update-telephone',
data: {
mobile,
code,
registrationSource,
registChannel,
regBusinessId,
},
}).then((_res) => {
wx.navigateBack()
})
},
handleBack() {
wx.navigateBack()
},
})

16
src/module1/pages/changePhone/index.wxml

@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
<view class="page">
<view class="container">
<view class="form">
<view class="row">
<input type="number" model:value="{{mobile}}" class="input" placeholder-class="place-input" placeholder="请输入手机号" />
</view>
<view class="row">
<input type="number" model:value="{{code}}" class="input" placeholder-class="place-input" placeholder="请输入验证码" />
<view class="code" bind:tap="getCode">{{codeText}}</view>
</view>
<view class="row">
<view class="submit" bind:tap="handleSubmit">修改手机号</view>
</view>
</view>
</view>
</view>

5
src/module1/pages/doctorRankList/index.json

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
{
"navigationBarTitleText": "医院活跃排行榜",
"navigationStyle": "default",
"usingComponents": {}
}

63
src/module1/pages/doctorRankList/index.scss

@ -0,0 +1,63 @@ @@ -0,0 +1,63 @@
page {
background-color: #fff;
}
.page {
padding: 240rpx 0 0;
.container {
padding: 32rpx;
border-radius: 32rpx 32rpx 0 0;
background: #fff linear-gradient(180deg, #f1feff 0%, #ffffff 7%, #ffffff 100%);
border: 2rpx solid #ffffff;
.table {
.thead {
padding: 22rpx 0;
display: flex;
font-size: 28rpx;
color: rgba(0, 180, 197, 1);
background-color: rgba(233, 246, 247, 1);
text-align: center;
border-radius: 8rpx;
.th1 {
width: 338rpx;
}
.th2,
.th3,
.th4,
.th5 {
width: 96rpx;
white-space: nowrap;
}
}
.tbody {
border-bottom: 1rpx solid rgba(224, 224, 224, 0.5);
.tr {
display: flex;
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
text-align: center;
padding: 18rpx 0;
line-height: 32rpx;
border-radius: 8rpx;
&:nth-child(even) {
background-color: rgba(248, 248, 248, 1);
}
.td1 {
padding: 12rpx 0;
width: 338rpx;
}
.td2,
.td3,
.td4,
.td5 {
padding: 12rpx 0;
width: 96rpx;
border-left: 1px dashed rgba(224, 224, 224, 1);
}
.td2 {
color: rgba(0, 180, 197, 1);
}
}
}
}
}
}

6
src/module1/pages/doctorRankList/index.ts

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
const _app = getApp<IAppOption>();
Page({
data: {},
onLoad() {},
});

25
src/module1/pages/doctorRankList/index.wxml

@ -0,0 +1,25 @@ @@ -0,0 +1,25 @@
<view
class="page"
style="background: url({{imageUrl}}doctor-rank-bg.png?r={{Timestamp}}) no-repeat top center/100% 326rpx;"
>
<view class="container">
<view class="table">
<view class="thead">
<view class="th1">医院</view>
<view class="th2">医生总数</view>
<view class="th3">S1</view>
<view class="th4">S2</view>
<view class="th5">S3</view>
</view>
<view class="tbody">
<view class="tr" wx:for="{{4}}" wx:key="index">
<view class="td1">1 中山大学附属医院</view>
<view class="td2">888</view>
<view class="td3">888</view>
<view class="td4">888</view>
<view class="td5">888</view>
</view>
</view>
</view>
</view>
</view>

10
src/module1/pages/entryCases/index.json

@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
{
"navigationBarTitleText": "录入新病历",
"navigationStyle": "default",
"usingComponents": {
"uploadFile": "/components/uploadFile/index",
"van-icon": "@vant/weapp/icon/index",
"customRecord": "/components/customRecord/index",
"van-popup": "@vant/weapp/popup/index"
}
}

363
src/module1/pages/entryCases/index.scss

@ -0,0 +1,363 @@ @@ -0,0 +1,363 @@
page {
background-color: rgba(246, 246, 246, 1);
}
.page {
padding: 24rpx 32rpx 200rpx;
.card {
margin-bottom: 24rpx;
padding: 32rpx;
background-color: #fff;
border-radius: 16rpx;
.card-title {
font-size: 32rpx;
color: rgba(20, 21, 21, 1);
line-height: 56rpx;
.limit {
color: rgba(153, 153, 153, 1);
}
.message-select {
float: right;
padding: 8rpx 24rpx;
font-size: 28rpx;
color: rgba(255, 255, 255, 1);
line-height: 40rpx;
background: #01b4c5;
border-radius: 60rpx 60rpx 60rpx 60rpx;
}
&.required {
&::before {
display: inline;
content: '*';
color: rgba(255, 87, 51, 1);
}
}
}
.image-files {
margin-top: 32rpx;
display: flex;
gap: 14rpx;
.upload-file {
width: 144rpx;
height: 144rpx;
background: #f6f6f6;
border-radius: 8rpx 8rpx 8rpx 8rpx;
display: flex;
align-items: center;
justify-content: center;
.add {
color: #cdcdcd;
font-size: 30px;
}
}
.photo {
position: relative;
width: 144rpx;
height: 144rpx;
border-radius: 8rpx 8rpx 8rpx 8rpx;
.p-img {
width: 100%;
height: 100%;
border-radius: inherit;
}
.del {
position: absolute;
top: 0;
right: 0;
z-index: 1;
color: #fff;
width: 32rpx;
height: 32rpx;
text-align: center;
line-height: 32rpx;
font-size: 20rpx;
border-radius: 8rpx;
background-color: rgba(0, 0, 0, 0.3);
}
.repeat {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
border-radius: inherit;
background-color: rgba(0, 0, 0, 0.3);
.icon {
width: 36rpx;
height: 36rpx;
}
.r-title {
margin-top: 8rpx;
font-size: 20rpx;
color: rgba(237, 79, 57, 1);
}
}
}
}
.remark {
margin-top: 32rpx;
padding: 32rpx;
border-radius: 16rpx;
background-color: rgba(246, 246, 246, 1);
.textarea {
font-size: 28rpx;
line-height: 32rpx;
min-height: 200rpx;
color: #000;
}
.limit {
font-size: 28rpx;
color: rgba(205, 205, 205, 1);
line-height: 32rpx;
text-align: right;
}
}
.record {
margin: 24rpx -30rpx -30rpx;
height: 198rpx;
border-radius: 16rpx;
background: linear-gradient(to bottom, #fff 0%, #fff 34%, #f6f6f6 34%, #f6f6f6 100%);
.record-btn {
display: flex;
justify-content: center;
}
.r-title {
margin-top: 12rpx;
font-size: 28rpx;
color: rgba(133, 133, 133, 1);
text-align: center;
}
}
.none-file {
margin-top: 24rpx;
padding: 26rpx;
border-radius: 16rpx;
background-color: rgba(246, 246, 246, 1);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.nf-icon {
width: 96rpx;
height: 66rpx;
}
.nf-title {
margin-top: 14rpx;
font-size: 24rpx;
color: rgba(205, 205, 205, 1);
}
}
.file-list {
margin-top: 8rpx;
.fl-row {
margin-top: 24rpx;
display: flex;
align-content: inherit;
justify-content: space-between;
.wrap {
flex: 1;
padding: 20rpx 24rpx;
border-radius: 16rpx;
background-color: rgba(246, 246, 246, 1);
display: flex;
align-items: center;
.icon {
width: 56rpx;
height: 56rpx;
}
.name {
margin-left: 30rpx;
font-size: 32rpx;
color: rgba(128, 128, 128, 1);
}
}
.option {
display: flex;
align-items: center;
.icon {
margin-left: 16rpx;
width: 36rpx;
height: 36rpx;
}
}
}
}
}
.tags {
margin-top: 24rpx;
padding: 22rpx 32rpx;
border-radius: 16rpx;
background-color: #fff;
display: flex;
.label {
padding-top: 8rpx;
flex-shrink: 0;
width: 3em;
font-size: 32rpx;
color: rgba(20, 21, 21, 1);
}
.wrap {
flex: 1;
.tag-wrap {
display: flex;
gap: 16rpx;
flex-wrap: wrap;
.tag {
padding: 10rpx 32rpx;
font-size: 32rpx;
line-height: 44rpx;
color: rgba(133, 133, 133, 1);
background: #f6f6f6;
border-radius: 84rpx 84rpx 84rpx 84rpx;
&.active {
color: #fff;
background-color: rgba(1, 180, 197, 1);
}
}
}
.sub-tag-wrap {
margin-top: 32rpx;
padding: 32rpx;
border-radius: 16rpx;
background-color: rgba(246, 250, 250, 1);
display: flex;
flex-wrap: wrap;
gap: 16rpx;
.sub-tag {
padding: 6rpx 32rpx;
border-radius: 8rpx;
font-size: 32rpx;
color: rgba(133, 133, 133, 1);
line-height: 44rpx;
border: 1px solid rgba(255, 255, 255, 1);
background-color: rgba(255, 255, 255, 1);
&.active {
border-color: rgba(1, 180, 197, 1);
color: rgba(1, 180, 197, 1);
}
}
}
}
}
.footer {
position: fixed;
bottom: 0;
left: 0;
padding: 32rpx 32rpx calc(env(safe-area-inset-bottom) + 32rpx);
width: 100%;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: space-between;
background-color: #fff;
box-shadow: 0 -10rpx 20rpx rgba(0, 0, 0, 0.1);
.cancel {
width: 332rpx;
height: 84rpx;
text-align: center;
line-height: 88rpx;
font-size: 32rpx;
color: rgba(1, 180, 197, 1);
border-radius: 96rpx 96rpx 96rpx 96rpx;
border: 1rpx solid #01b4c5;
}
.submit {
width: 330rpx;
height: 88rpx;
text-align: center;
line-height: 88rpx;
font-size: 32rpx;
color: #fff;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 96rpx;
}
}
}
.popup1 {
padding: 64rpx 52rpx 34rpx;
width: 580rpx;
box-sizing: border-box;
.title {
font-size: 36rpx;
color: rgba(29, 33, 41, 1);
font-weight: bold;
line-height: 56rpx;
text-align: center;
}
.btn1 {
margin-top: 24rpx;
padding: 14rpx;
font-size: 32rpx;
color: #fff;
line-height: 44rpx;
text-align: center;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 60rpx 60rpx 60rpx 60rpx;
}
.btn2 {
margin-top: 24rpx;
padding: 12rpx 14rpx;
font-size: 32rpx;
color: rgba(1, 180, 197, 1);
line-height: 44rpx;
text-align: center;
border: 1px solid rgba(1, 180, 197, 1);
border-radius: 60rpx 60rpx 60rpx 60rpx;
}
.public {
margin-top: 32rpx;
.radio {
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
.wx-radio-input {
flex-shrink: 0;
align-self: self-start;
transform: scale(0.7);
}
}
}
}
.popup2 {
padding: 64rpx 52rpx 34rpx;
width: 580rpx;
box-sizing: border-box;
.title {
font-size: 36rpx;
color: rgba(29, 33, 41, 1);
font-weight: bold;
line-height: 56rpx;
text-align: center;
}
.content {
margin-top: 12rpx;
font-size: 32rpx;
line-height: 48rpx;
color: rgba(78, 89, 105, 1);
.link {
color: rgba(1, 180, 197, 1);
}
}
.btn {
margin-top: 24rpx;
padding: 14rpx;
font-size: 32rpx;
color: #fff;
line-height: 44rpx;
text-align: center;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 60rpx 60rpx 60rpx 60rpx;
}
.cancel {
margin-top: 24rpx;
padding: 14rpx;
font-size: 32rpx;
color: rgba(205, 205, 205, 1);
line-height: 44rpx;
text-align: center;
}
}

15
src/module1/pages/entryCases/index.ts

@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
const _app = getApp<IAppOption>()
Page({
data: {
show1: false,
show2: false,
},
onLoad() {},
handleSubmit(){
wx.navigateTo({
url:"/module1/pages/entryCasesResult/index"
})
}
})

111
src/module1/pages/entryCases/index.wxml

@ -0,0 +1,111 @@ @@ -0,0 +1,111 @@
<view class="page">
<view class="card">
<view class="card-title required">
上传病历图片
<text class="limit">(0/9)</text>
</view>
<view class="image-files">
<view class="photo">
<image
class="p-img"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
mode="aspectFill"
></image>
<view class="del">
<van-icon name="cross" />
</view>
<view class="repeat">
<image class="icon" src="/images/icon-error.png"></image>
<view class="r-title">重复图片</view>
</view>
</view>
<uploadFile>
<view class="upload-file">
<van-icon class="add" name="plus" />
</view>
</uploadFile>
</view>
</view>
<view class="card">
<view class="card-title">病历备注</view>
<view class="remark">
<textarea
class="textarea"
placeholder-style="color:rgba(205, 205, 205, 1);"
placeholder="请输入您的病历备注"
auto-height
maxlength="{{3000}}"
></textarea>
<view class="limit">0/3000</view>
</view>
<view class="record">
<customRecord class="record-btn"></customRecord>
<view class="r-title">您也可以长按录入语音</view>
</view>
</view>
<view class="card">
<view class="card-title">
病历相关文件
<view class="message-select">从聊天记录选择文件</view>
</view>
<view class="none-file">
<image class="nf-icon" src="/images/icon-nore-file.png"></image>
<view class="nf-title">还没有文件哦!</view>
</view>
<view class="file-list">
<view class="fl-row">
<view class="wrap">
<image class="icon" src="/images/icon-file.png"></image>
<view class="name">基因检测报告.pdf</view>
</view>
<view class="option">
<image class="icon" src="/images/icon-del.png"></image>
<image class="icon" src="/images/icon-eye.png"></image>
<image class="icon" src="/images/icon-download.png"></image>
</view>
</view>
</view>
</view>
<view class="tags">
<view class="label">标签</view>
<view class="wrap">
<view class="tag-wrap">
<view class="tag">消化科</view>
<view class="tag">消化科</view>
</view>
<view class="sub-tag-wrap">
<view class="sub-tag active">心衰</view>
<view class="sub-tag">心衰</view>
<view class="sub-tag">心衰</view>
<view class="sub-tag">心衰</view>
</view>
</view>
</view>
<view class="footer">
<view class="cancel">存为草稿</view>
<view class="submit" bind:tap="handleSubmit" bind:tap="handleSubmit">保存并提交</view>
</view>
</view>
<van-popup show="{{ show1 }}" bind:close="onClose" round closeable>
<view class="popup1">
<view class="title">确认提交您的反馈信息</view>
<view class="btn1">直接提交我的反馈信息</view>
<view class="btn2">提交并邀约质控医生</view>
<view class="public">
<radio class="radio">病例公开(选择公开后,本科室医生均查看病例)</radio>
</view>
</view>
</van-popup>
<van-popup show="{{ show2 }}" bind:close="onClose" round closeable>
<view class="popup2">
<view class="title">您的病例没有进行涂抹</view>
<!-- prettier-ignore -->
<view class="content">
请<text class="link">确认</text>上传的病例 已不包含患者的隐私信息
</view>
<view class="btn">确认继续提交</view>
<view class="cancel">返回</view>
</view>
</van-popup>

5
src/module1/pages/entryCasesResult/index.json

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
{
"navigationBarTitleText": "录入新病例",
"navigationStyle": "default",
"usingComponents": {}
}

50
src/module1/pages/entryCasesResult/index.scss

@ -0,0 +1,50 @@ @@ -0,0 +1,50 @@
.page {
padding: 60rpx 34rpx;
.badge {
display: block;
margin: 0 auto;
width: 200rpx;
height: 200rpx;
}
.desc {
margin-top: 16rpx;
font-size: 32rpx;
color: rgba(20, 21, 21, 1);
text-align: center;
}
.btn1 {
margin: 86rpx 124rpx 0;
padding: 22rpx;
font-size: 32rpx;
color: #fff;
line-height: 44rpx;
text-align: center;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 60rpx 60rpx 60rpx 60rpx;
}
.btn2 {
margin: 32rpx 124rpx 0;
padding: 20rpx 14rpx;
font-size: 32rpx;
color: rgba(1, 180, 197, 1);
line-height: 44rpx;
text-align: center;
border: 1px solid rgba(1, 180, 197, 1);
border-radius: 60rpx 60rpx 60rpx 60rpx;
}
.code {
margin: 90rpx auto 0;
padding: 20rpx;
display: block;
border: 4rpx solid rgba(1, 180, 197, 0.18);
width: 296rpx;
height: 296rpx;
border-radius: 16rpx;
}
.tip{
margin-top: 32rpx;
text-align: center;
font-size: 32rpx;
color: rgba(153, 153, 153, 1);
}
}

6
src/module1/pages/entryCasesResult/index.ts

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
const _app = getApp<IAppOption>();
Page({
data: {},
onLoad() {},
});

13
src/module1/pages/entryCasesResult/index.wxml

@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
<view class="page">
<image class="badge" src="/images/icon-resolve.png" mode="scaleToFill"></image>
<view class="desc">病历提交后医生将收到消息提醒</view>
<view class="btn1">查看我提交的病历</view>
<view class="btn2">继续录入新的病历</view>
<image
class="code"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
mode="scaleToFill"
show-menu-by-longpress
></image>
<view class="tip">关注公众号接收病例反馈消息</view>
</view>

7
src/module1/pages/org3/index.json

@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
{
"navigationBarTitleText": "我的组织架构",
"navigationStyle": "default",
"usingComponents": {
"doctorAvatar": "/components/doctorAvatar/index"
}
}

314
src/module1/pages/org3/index.scss

@ -0,0 +1,314 @@ @@ -0,0 +1,314 @@
page {
background-color: rgba(246, 246, 246, 1);
}
.page {
padding-bottom: 80rpx;
.header {
padding: 32rpx;
border-radius: 0 0 32rpx 32rpx;
background-color: #fff;
.banner {
padding: 32rpx 0;
display: flex;
justify-content: space-between;
align-items: center;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 1rpx solid #ffffff;
.item {
flex: 1;
text-align: center;
.name {
font-size: 28rpx;
color: rgba(255, 255, 255, 1);
line-height: 1;
}
.num {
margin-top: 24rpx;
font-size: 56rpx;
color: rgba(255, 255, 255, 1);
line-height: 1;
}
&:nth-of-type(2) {
border-right: 1rpx dashed rgba(255, 255, 255, 0.5);
border-left: 1rpx dashed rgba(255, 255, 255, 0.5);
}
}
}
.operate {
margin-top: 32rpx;
display: flex;
gap: 24rpx;
align-items: center;
justify-content: space-between;
.search {
flex: 1;
display: flex;
gap: 12rpx;
align-items: center;
padding: 16rpx 36rpx;
border-radius: 96rpx;
background-color: rgba(246, 246, 246, 1);
.icon {
flex-shrink: 0;
width: 32rpx;
height: 32rpx;
}
.input {
font-size: 28rpx;
color: #000;
}
.place-input {
color: rgba(205, 205, 205, 1);
}
}
.invite {
flex-shrink: 0;
padding: 14rpx 24rpx;
font-size: 30rpx;
line-height: 44rpx;
color: rgba(0, 180, 197, 1);
border-radius: 72rpx 72rpx 72rpx 72rpx;
border: 1rpx solid #00b4c5;
}
}
}
.doctor {
display: flex;
gap: 24rpx;
&:last-of-type {
margin-bottom: 0;
}
.avatar-wrap {
width: 112rpx;
flex-shrink: 0;
display: flex;
flex-direction: column;
align-items: center;
.avatar {
flex-shrink: 0;
position: relative;
width: 112rpx;
height: 112rpx;
}
}
.wrap {
padding-top: 8rpx;
.w-header {
display: flex;
align-items: baseline;
gap: 16rpx;
line-height: 1;
.wh-wrap {
flex: 1;
display: flex;
align-items: baseline;
gap: 16rpx;
.name {
font-size: 36rpx;
color: rgba(20, 21, 21, 1);
font-weight: bold;
}
.label {
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.line {
width: 1px;
height: 24rpx;
background-color: rgba(205, 205, 205, 1);
}
}
.fold {
flex-shrink: 0;
display: flex;
align-items: center;
font-size: 28rpx;
gap: 8rpx;
color: rgba(153, 153, 153, 1);
.f-icon {
width: 28rpx;
height: 28rpx;
}
}
}
.w-container {
margin-top: 16rpx;
.hostipal {
margin-right: 12rpx;
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.tag {
margin-right: 12rpx;
display: inline-block;
padding: 0 8rpx;
border-radius: 4rpx;
font-size: 24rpx;
color: rgba(255, 255, 255, 1);
line-height: 32rpx;
background-color: rgba(0, 180, 197, 1);
}
.site {
display: inline-block;
padding: 0 8rpx;
font-size: 24rpx;
color: rgba(148, 87, 30, 1);
line-height: 32rpx;
border-radius: 4rpx;
background-color: rgba(250, 229, 206, 1);
}
}
.w-footer {
margin-top: 16rpx;
display: flex;
gap: 12rpx;
flex-wrap: wrap;
.wf-label {
flex-shrink: 0;
width: 48rpx;
height: 32rpx;
}
.wf-tag {
flex-shrink: 0;
padding: 0 8rpx;
font-size: 22rpx;
color: rgba(0, 180, 197, 1);
line-height: 32rpx;
border: 1rpx solid rgba(191, 239, 244, 1);
}
}
}
}
.me {
margin: 24rpx 24rpx 0;
.doctor {
padding: 24rpx;
background: linear-gradient(180deg, #e5f5f7 0%, #ffffff 50%);
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.1);
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #ffffff;
}
}
.container {
margin: 24rpx 24rpx 0;
border-radius: 16rpx;
background-color: #fff;
.level-two {
display: flex;
.aside {
padding-left: 60rpx;
display: flex;
flex-direction: column;
.vertical {
flex-shrink: 0;
width: 1px;
height: 80rpx;
background-color: rgba(0, 180, 197, 1);
}
.across {
flex-shrink: 0;
width: 42rpx;
height: 1px;
background-color: rgba(0, 180, 197, 1);
}
}
.doctor {
padding-top: 24rpx;
padding-right: 24rpx;
.avatar-wrap {
.num {
flex-shrink: 0;
margin-top: 8rpx;
padding: 0 20rpx;
font-size: 22rpx;
color: rgba(255, 255, 255, 1);
border-radius: 64rpx;
background-color: rgba(0, 180, 197, 1);
}
.line {
flex: 1;
width: 1px;
background-color: rgba(0, 180, 197, 1);
}
}
.wrap {
padding-bottom: 24rpx;
}
}
}
.level-three {
display: flex;
.aside {
margin-left: 60rpx;
padding-left: 42rpx;
display: flex;
flex-direction: column;
.vertical {
flex-shrink: 0;
margin-left: 56rpx;
width: 1px;
height: 80rpx;
background-color: rgba(0, 180, 197, 1);
}
.across {
flex-shrink: 0;
margin-left: 56rpx;
width: 42rpx;
height: 1px;
background-color: rgba(0, 180, 197, 1);
}
.vertical-grow {
flex: 1;
margin-left: 56rpx;
width: 1px;
background-color: rgba(0, 180, 197, 1);
}
}
.doctor {
padding: 24rpx 24rpx 24rpx 0;
}
}
.level-three-only {
display: flex;
.aside {
padding-left: 60rpx;
display: flex;
flex-direction: column;
.vertical {
flex-shrink: 0;
width: 1px;
height: 80rpx;
background-color: rgba(0, 180, 197, 1);
}
.across {
flex-shrink: 0;
width: 144rpx;
height: 1px;
background-color: rgba(0, 180, 197, 1);
}
}
.doctor {
padding: 24rpx 24rpx 24rpx 0;
}
}
}
.empty-wrap {
.empty {
margin: 174rpx auto 0;
display: block;
width: 356rpx;
height: 280rpx;
}
.e-title {
margin-top: -80rpx;
font-size: 32rpx;
color: rgba(153, 153, 153, 1);
text-align: center;
}
}
}

6
src/module1/pages/org3/index.ts

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
const _app = getApp<IAppOption>();
Page({
data: {},
onLoad() {},
});

229
src/module1/pages/org3/index.wxml

@ -0,0 +1,229 @@ @@ -0,0 +1,229 @@
<view class="page">
<view class="header">
<view class="banner">
<view class="item">
<view class="name">全部医生</view>
<view class="num">9</view>
</view>
<view class="item">
<view class="name">二级医生</view>
<view class="num">9</view>
</view>
<view class="item">
<view class="name">一级医生</view>
<view class="num">9</view>
</view>
</view>
<view class="operate">
<view class="search">
<image class="icon" src="/images/icon-search.png"></image>
<input type="text" class="input" placeholder-class="place-input" placeholder="搜索医院名称" />
</view>
<view class="invite">邀约新医生</view>
</view>
</view>
<view class="me">
<view class="doctor">
<view class="avatar-wrap">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{1}}"
></doctorAvatar>
</view>
<view class="wrap">
<view class="w-header">
<view class="wh-wrap">
<view class="name">徐萌</view>
<view class="label">主任医师</view>
<view class="line"></view>
<view class="label">心内科</view>
</view>
<view class="fold">
收起
<image class="f-icon" src="/images/fold-down.png"></image>
</view>
</view>
<view class="w-container">
<text class="hostipal">北京天坛医院</text>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
</view>
<view class="w-footer">
<image class="wf-label" src="/images/text-specialty.png" mode="aspectFit"></image>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
</view>
</view>
</view>
</view>
<view class="container">
<view class="level-two">
<view class="aside">
<view class="vertical"></view>
<view class="across"></view>
</view>
<view class="doctor">
<view class="avatar-wrap">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{1}}"
></doctorAvatar>
<view class="num">2人</view>
<view class="line"></view>
</view>
<view class="wrap">
<view class="w-header">
<view class="wh-wrap">
<view class="name">徐萌</view>
<view class="label">主任医师</view>
<view class="line"></view>
<view class="label">心内科</view>
</view>
<view class="fold">
收起
<image class="f-icon" src="/images/fold-down.png"></image>
</view>
</view>
<view class="w-container">
<text class="hostipal">北京天坛医院</text>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
</view>
<view class="w-footer">
<image class="wf-label" src="/images/text-specialty.png" mode="aspectFit"></image>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
</view>
</view>
</view>
</view>
<view class="level-three">
<view class="aside">
<view class="vertical"></view>
<view class="across"></view>
<view class="vertical-grow"></view>
</view>
<view class="doctor">
<view class="avatar-wrap">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{1}}"
></doctorAvatar>
</view>
<view class="wrap">
<view class="w-header">
<view class="wh-wrap">
<view class="name">徐萌</view>
<view class="label">主任医师</view>
<view class="line"></view>
<view class="label">心内科</view>
</view>
</view>
<view class="w-container">
<text class="hostipal">北京天坛医院</text>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
</view>
<view class="w-footer">
<image class="wf-label" src="/images/text-specialty.png" mode="aspectFit"></image>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
</view>
</view>
</view>
</view>
<view class="level-three">
<view class="aside">
<view class="vertical"></view>
<view class="across"></view>
<view class="vertical-grow"></view>
</view>
<view class="doctor">
<view class="avatar-wrap">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{1}}"
></doctorAvatar>
</view>
<view class="wrap">
<view class="w-header">
<view class="wh-wrap">
<view class="name">徐萌</view>
<view class="label">主任医师</view>
<view class="line"></view>
<view class="label">心内科</view>
</view>
</view>
<view class="w-container">
<text class="hostipal">北京天坛医院</text>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
</view>
<view class="w-footer">
<image class="wf-label" src="/images/text-specialty.png" mode="aspectFit"></image>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
</view>
</view>
</view>
</view>
</view>
<view class="container">
<view class="level-three-only">
<view class="aside">
<view class="vertical"></view>
<view class="across"></view>
</view>
<view class="doctor">
<view class="avatar-wrap">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{1}}"
></doctorAvatar>
</view>
<view class="wrap">
<view class="w-header">
<view class="wh-wrap">
<view class="name">徐萌</view>
<view class="label">主任医师</view>
<view class="line"></view>
<view class="label">心内科</view>
</view>
</view>
<view class="w-container">
<text class="hostipal">北京天坛医院</text>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
</view>
<view class="w-footer">
<image class="wf-label" src="/images/text-specialty.png" mode="aspectFit"></image>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
</view>
</view>
</view>
</view>
</view>
<view class="empty-wrap">
<image class="empty" src="/images/empty-1.png" mode="scaleToFill"></image>
<view class="e-title">没有找到您搜索的医院哦!</view>
</view>
</view>

8
src/module1/pages/org4/index.json

@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
{
"navigationBarTitleText": "我的组织架构",
"navigationStyle": "default",
"usingComponents": {
"doctorAvatar": "/components/doctorAvatar/index",
"van-icon": "@vant/weapp/icon/index"
}
}

333
src/module1/pages/org4/index.scss

@ -0,0 +1,333 @@ @@ -0,0 +1,333 @@
page {
background-color: rgba(246, 246, 246, 1);
}
.page {
padding-bottom: 80rpx;
.header {
padding: 32rpx;
border-radius: 0 0 32rpx 32rpx;
background-color: #fff;
.select {
display: flex;
align-content: inherit;
gap: 14rpx;
.label {
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.picker {
.picker-content {
padding: 4rpx 24rpx;
font-size: 28rpx;
color: rgba(133, 133, 133, 1);
line-height: 39rpx;
border-radius: 98rpx;
background-color: rgba(246, 246, 246, 1);
}
}
}
.banner {
margin-top: 24rpx;
padding: 32rpx 0;
display: flex;
justify-content: space-between;
align-items: center;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 1rpx solid #ffffff;
.item {
flex: 1;
text-align: center;
.name {
font-size: 28rpx;
color: rgba(255, 255, 255, 1);
line-height: 1;
}
.num {
margin-top: 24rpx;
font-size: 56rpx;
color: rgba(255, 255, 255, 1);
line-height: 1;
}
&:nth-of-type(1) {
border-right: 1rpx dashed rgba(255, 255, 255, 0.5);
}
}
}
.operate {
margin-top: 32rpx;
display: flex;
gap: 24rpx;
align-items: center;
justify-content: space-between;
.search {
flex: 1;
display: flex;
gap: 12rpx;
align-items: center;
padding: 16rpx 36rpx;
border-radius: 96rpx;
background-color: rgba(246, 246, 246, 1);
.icon {
flex-shrink: 0;
width: 32rpx;
height: 32rpx;
}
.input {
font-size: 28rpx;
color: #000;
}
.place-input {
color: rgba(205, 205, 205, 1);
}
}
.invite {
flex-shrink: 0;
padding: 14rpx 24rpx;
font-size: 30rpx;
line-height: 44rpx;
color: rgba(0, 180, 197, 1);
border-radius: 72rpx 72rpx 72rpx 72rpx;
border: 1rpx solid #00b4c5;
}
}
}
.doctor {
display: flex;
gap: 24rpx;
&:last-of-type {
margin-bottom: 0;
}
.avatar-wrap {
width: 112rpx;
flex-shrink: 0;
display: flex;
flex-direction: column;
align-items: center;
.avatar {
flex-shrink: 0;
position: relative;
width: 112rpx;
height: 112rpx;
}
}
.wrap {
padding-top: 8rpx;
.w-header {
display: flex;
align-items: baseline;
gap: 16rpx;
line-height: 1;
.wh-wrap {
flex: 1;
display: flex;
align-items: baseline;
gap: 16rpx;
.name {
font-size: 36rpx;
color: rgba(20, 21, 21, 1);
font-weight: bold;
}
.label {
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.line {
width: 1px;
height: 24rpx;
background-color: rgba(205, 205, 205, 1);
}
}
.fold {
flex-shrink: 0;
display: flex;
align-items: center;
font-size: 28rpx;
gap: 8rpx;
color: rgba(153, 153, 153, 1);
.f-icon {
width: 28rpx;
height: 28rpx;
}
}
}
.w-container {
margin-top: 16rpx;
.hostipal {
margin-right: 12rpx;
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.tag {
margin-right: 12rpx;
display: inline-block;
padding: 0 8rpx;
border-radius: 4rpx;
font-size: 24rpx;
color: rgba(255, 255, 255, 1);
line-height: 32rpx;
background-color: rgba(0, 180, 197, 1);
}
.site {
display: inline-block;
padding: 0 8rpx;
font-size: 24rpx;
color: rgba(148, 87, 30, 1);
line-height: 32rpx;
border-radius: 4rpx;
background-color: rgba(250, 229, 206, 1);
}
}
.w-footer {
margin-top: 16rpx;
display: flex;
gap: 12rpx;
flex-wrap: wrap;
.wf-label {
flex-shrink: 0;
width: 48rpx;
height: 32rpx;
}
.wf-tag {
flex-shrink: 0;
padding: 0 8rpx;
font-size: 22rpx;
color: rgba(0, 180, 197, 1);
line-height: 32rpx;
border: 1rpx solid rgba(191, 239, 244, 1);
}
}
}
}
.me {
margin: 24rpx 24rpx 0;
.doctor {
padding: 24rpx;
background: linear-gradient(180deg, #e5f5f7 0%, #ffffff 50%);
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.1);
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #ffffff;
}
}
.container {
margin: 24rpx 24rpx 0;
border-radius: 16rpx;
background-color: #fff;
.level-two {
display: flex;
.aside {
padding-left: 60rpx;
display: flex;
flex-direction: column;
.vertical {
flex-shrink: 0;
width: 1px;
height: 80rpx;
background-color: rgba(0, 180, 197, 1);
}
.across {
flex-shrink: 0;
width: 42rpx;
height: 1px;
background-color: rgba(0, 180, 197, 1);
}
}
.doctor {
padding-top: 24rpx;
padding-right: 24rpx;
.avatar-wrap {
.num {
flex-shrink: 0;
margin-top: 8rpx;
padding: 0 20rpx;
font-size: 22rpx;
color: rgba(255, 255, 255, 1);
border-radius: 64rpx;
background-color: rgba(0, 180, 197, 1);
}
.line {
flex: 1;
width: 1px;
background-color: rgba(0, 180, 197, 1);
}
}
.wrap {
padding-bottom: 24rpx;
}
}
}
.level-three {
display: flex;
.aside {
margin-left: 60rpx;
padding-left: 42rpx;
display: flex;
flex-direction: column;
.vertical {
flex-shrink: 0;
margin-left: 56rpx;
width: 1px;
height: 80rpx;
background-color: rgba(0, 180, 197, 1);
}
.across {
flex-shrink: 0;
margin-left: 56rpx;
width: 42rpx;
height: 1px;
background-color: rgba(0, 180, 197, 1);
}
.vertical-grow {
flex: 1;
margin-left: 56rpx;
width: 1px;
background-color: rgba(0, 180, 197, 1);
}
}
.doctor {
padding: 24rpx 24rpx 24rpx 0;
}
}
.level-three-only {
display: flex;
.aside {
padding-left: 60rpx;
display: flex;
flex-direction: column;
.vertical {
flex-shrink: 0;
width: 1px;
height: 80rpx;
background-color: rgba(0, 180, 197, 1);
}
.across {
flex-shrink: 0;
width: 144rpx;
height: 1px;
background-color: rgba(0, 180, 197, 1);
}
}
.doctor {
padding: 24rpx 24rpx 24rpx 0;
}
}
}
.empty-wrap {
.empty {
margin: 174rpx auto 0;
display: block;
width: 356rpx;
height: 280rpx;
}
.e-title {
margin-top: -80rpx;
font-size: 32rpx;
color: rgba(153, 153, 153, 1);
text-align: center;
}
}
}

6
src/module1/pages/org4/index.ts

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
const _app = getApp<IAppOption>();
Page({
data: {},
onLoad() {},
});

279
src/module1/pages/org4/index.wxml

@ -0,0 +1,279 @@ @@ -0,0 +1,279 @@
<view class="page">
<view class="header">
<view class="select">
<view class="label">所在科室:</view>
<picker class="picker">
<view class="picker-content">
心血管内科
<van-icon name="arrow-down" />
</view>
</picker>
</view>
<view class="banner">
<view class="item">
<view class="name">全部医生</view>
<view class="num">9</view>
</view>
<view class="item">
<view class="name">三级医生</view>
<view class="num">9</view>
</view>
<view class="item">
<view class="name">二级医生</view>
<view class="num">9</view>
</view>
<view class="item">
<view class="name">一级医生</view>
<view class="num">9</view>
</view>
</view>
<view class="operate">
<view class="search">
<image class="icon" src="/images/icon-search.png"></image>
<input type="text" class="input" placeholder-class="place-input" placeholder="搜索医院名称" />
</view>
<view class="invite">邀约新医生</view>
</view>
</view>
<view class="me">
<view class="doctor">
<view class="avatar-wrap">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{1}}"
></doctorAvatar>
</view>
<view class="wrap">
<view class="w-header">
<view class="wh-wrap">
<view class="name">徐萌</view>
<view class="label">主任医师</view>
<view class="line"></view>
<view class="label">心内科</view>
</view>
<view class="fold">
全部收起
<image class="f-icon" src="/images/fold-down.png"></image>
</view>
</view>
<view class="w-container">
<text class="hostipal">北京天坛医院</text>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
</view>
<view class="w-footer">
<image class="wf-label" src="/images/text-specialty.png" mode="aspectFit"></image>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
</view>
</view>
</view>
</view>
<view class="me">
<view class="doctor">
<view class="avatar-wrap">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{1}}"
></doctorAvatar>
</view>
<view class="wrap">
<view class="w-header">
<view class="wh-wrap">
<view class="name">徐萌</view>
<view class="label">主任医师</view>
<view class="line"></view>
<view class="label">心内科</view>
</view>
<view class="fold">
收起
<image class="f-icon" src="/images/fold-down.png"></image>
</view>
</view>
<view class="w-container">
<text class="hostipal">北京天坛医院</text>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
</view>
<view class="w-footer">
<image class="wf-label" src="/images/text-specialty.png" mode="aspectFit"></image>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
</view>
</view>
</view>
</view>
<view class="container">
<view class="level-two">
<view class="aside">
<view class="vertical"></view>
<view class="across"></view>
</view>
<view class="doctor">
<view class="avatar-wrap">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{1}}"
></doctorAvatar>
<view class="num">2人</view>
<view class="line"></view>
</view>
<view class="wrap">
<view class="w-header">
<view class="wh-wrap">
<view class="name">徐萌</view>
<view class="label">主任医师</view>
<view class="line"></view>
<view class="label">心内科</view>
</view>
<view class="fold">
收起
<image class="f-icon" src="/images/fold-down.png"></image>
</view>
</view>
<view class="w-container">
<text class="hostipal">北京天坛医院</text>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
</view>
<view class="w-footer">
<image class="wf-label" src="/images/text-specialty.png" mode="aspectFit"></image>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
</view>
</view>
</view>
</view>
<view class="level-three">
<view class="aside">
<view class="vertical"></view>
<view class="across"></view>
<view class="vertical-grow"></view>
</view>
<view class="doctor">
<view class="avatar-wrap">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{1}}"
></doctorAvatar>
</view>
<view class="wrap">
<view class="w-header">
<view class="wh-wrap">
<view class="name">徐萌</view>
<view class="label">主任医师</view>
<view class="line"></view>
<view class="label">心内科</view>
</view>
</view>
<view class="w-container">
<text class="hostipal">北京天坛医院</text>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
</view>
<view class="w-footer">
<image class="wf-label" src="/images/text-specialty.png" mode="aspectFit"></image>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
</view>
</view>
</view>
</view>
<view class="level-three">
<view class="aside">
<view class="vertical"></view>
<view class="across"></view>
<view class="vertical-grow"></view>
</view>
<view class="doctor">
<view class="avatar-wrap">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{1}}"
></doctorAvatar>
</view>
<view class="wrap">
<view class="w-header">
<view class="wh-wrap">
<view class="name">徐萌</view>
<view class="label">主任医师</view>
<view class="line"></view>
<view class="label">心内科</view>
</view>
</view>
<view class="w-container">
<text class="hostipal">北京天坛医院</text>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
</view>
<view class="w-footer">
<image class="wf-label" src="/images/text-specialty.png" mode="aspectFit"></image>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
</view>
</view>
</view>
</view>
</view>
<view class="container">
<view class="level-three-only">
<view class="aside">
<view class="vertical"></view>
<view class="across"></view>
</view>
<view class="doctor">
<view class="avatar-wrap">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{1}}"
></doctorAvatar>
</view>
<view class="wrap">
<view class="w-header">
<view class="wh-wrap">
<view class="name">徐萌</view>
<view class="label">主任医师</view>
<view class="line"></view>
<view class="label">心内科</view>
</view>
</view>
<view class="w-container">
<text class="hostipal">北京天坛医院</text>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
</view>
<view class="w-footer">
<image class="wf-label" src="/images/text-specialty.png" mode="aspectFit"></image>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
</view>
</view>
</view>
</view>
</view>
<view class="empty-wrap">
<image class="empty" src="/images/empty-1.png" mode="scaleToFill"></image>
<view class="e-title">没有找到您搜索的医院哦!</view>
</view>
</view>

2
src/module1/pages/setDoctor/index.wxml

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
<view class="tip">
您将为
<text class="link">王欢医生</text>
指派核心医生,帮助TA一起反馈病
指派核心医生,帮助TA一起反馈病
</view>
<view class="search">
<image class="icon" src="/images/icon-search.png"></image>

2
src/module1/pages/setInfo/index.json

@ -2,6 +2,6 @@ @@ -2,6 +2,6 @@
"navigationBarTitleText": "医生认证",
"navigationStyle": "default",
"usingComponents": {
"upload": "/components/upload/index"
"uploadFile": "/components/uploadFile/index"
}
}

16
src/module1/pages/setInfo/index.wxml

@ -37,15 +37,15 @@ @@ -37,15 +37,15 @@
<view class="ex">查看示例</view>
</view>
<view class="files">
<upload class="upload">
<uploadFile class="upload">
<image class="u-img" src="/images/credentials1.png"></image>
</upload>
<upload class="upload">
</uploadFile>
<uploadFile class="upload">
<image class="u-img" src="/images/credentials2.png"></image>
</upload>
<upload class="upload">
</uploadFile>
<uploadFile class="upload">
<image class="u-img" src="/images/credentials3.png"></image>
</upload>
</uploadFile>
</view>
</view>
</view>
@ -55,9 +55,9 @@ @@ -55,9 +55,9 @@
<view class="label">您的头像</view>
<view class="avatar-wrap">
<view class="avatar">
<upload class="upload" chooseAvatar>
<uploadFile class="upload" chooseAvatar>
<image class="u-img" src="/images/user.png"></image>
</upload>
</uploadFile>
</view>
</view>
</view>

9
src/module1/pages/userInfo/index.json

@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
{
"navigationBarTitleText": "个人信息",
"navigationStyle": "default",
"usingComponents": {
"uploadFile": "/components/uploadFile/index",
"van-icon": "@vant/weapp/icon/index",
"van-popup": "@vant/weapp/popup/index"
}
}

128
src/module1/pages/userInfo/index.scss

@ -0,0 +1,128 @@ @@ -0,0 +1,128 @@
page {
background-color: rgba(246, 246, 246, 1);
}
.page {
padding: 48rpx 32rpx 0;
background-color: #fff;
.upload {
margin: 0 auto 0;
display: block;
width: 136rpx;
height: 136rpx;
.avatar {
width: 136rpx;
height: 136rpx;
border-radius: 50%;
}
.edit {
position: absolute;
bottom: 0;
right: 0;
width: 52rpx;
height: 52rpx;
border-radius: 50%;
background-color: #fff;
display: flex;
align-items: center;
justify-content: center;
.icon {
width: 32rpx;
height: 32rpx;
}
}
}
.row {
padding: 32rpx 0;
display: flex;
align-items: center;
justify-content: space-between;
.label {
font-size: 32rpx;
color: rgba(133, 133, 133, 1);
}
.content {
flex: 1;
text-align: right;
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.picker {
flex: 1;
.picker-content {
text-align: right;
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
}
}
}
.btn {
margin: 32rpx 32rpx 0;
width: 686rpx;
height: 88rpx;
border-radius: 84rpx 84rpx 84rpx 84rpx;
border: 1rpx solid #00b4c5;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
font-size: 32rpx;
color: rgba(0, 180, 197, 1);
&:first-of-type {
margin-top: 48rpx;
}
}
.popup-brief {
padding: 32rpx 30rpx 84rpx;
.title {
display: flex;
justify-content: center;
font-size: 36rpx;
color: rgba(40, 48, 49, 1);
font-weight: bold;
}
.textarea {
padding: 30rpx;
margin-top: 32rpx;
width: 100%;
height: 216rpx;
box-sizing: border-box;
background: #f7f8f9;
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #f8f9f9;
font-size: 32rx;
}
.tags {
margin-top: 32rpx;
display: flex;
flex-wrap: wrap;
gap: 20rpx;
.tag {
padding: 6rpx 44rpx;
font-size: 32rpx;
color: rgba(133, 133, 133, 1);
line-height: 44rpx;
background-color: #fff;
border: 1px solid rgba(133, 133, 133, 1);
border-radius: 8rpx;
&.active {
background-color: #fff;
border-color: rgba(1, 180, 197, 1);
color: rgba(1, 180, 197, 1);
}
}
}
.submit {
margin-top: 32rpx;
height: 84rpx;
display: flex;
justify-content: center;
align-items: center;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
font-size: 36rpx;
color: #fff;
border-radius: 64rpx 64rpx 64rpx 64rpx;
}
}

19
src/module1/pages/userInfo/index.ts

@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
const _app = getApp<IAppOption>()
Page({
data: {
popupBriefShow: false,
popupSpecialtyShow: false,
},
onLoad() {},
changePhone() {
wx.navigateTo({
url: '/module1/pages/changePhone/index',
})
},
handleBrief() {
this.setData({
popupBriefShow: true,
})
},
})

87
src/module1/pages/userInfo/index.wxml

@ -0,0 +1,87 @@ @@ -0,0 +1,87 @@
<view class="page">
<uploadFile class="upload" chooseAvatar>
<image
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
></image>
<view class="edit">
<image class="icon" src="/images/icon-edit.png"></image>
</view>
</uploadFile>
<view class="row">
<view class="label">姓名</view>
<view class="content">刘大庆</view>
</view>
<view class="row">
<view class="label">电话</view>
<view class="content" bind:tap="changePhone">139****6754</view>
</view>
<view class="row">
<view class="label">医院</view>
<view class="content">北京天坛医院</view>
</view>
<view class="row">
<view class="label">科室</view>
<picker class="picker">
<view class="picker-content">
消化科
<van-icon name="arrow" />
</view>
</picker>
</view>
<view class="row">
<view class="label">专长</view>
<view class="content">
高血压;心脏病
<van-icon name="arrow" />
</view>
</view>
<view class="row">
<view class="label">医生简介</view>
<view class="content">
医生简介信息
<van-icon name="arrow" />
</view>
</view>
</view>
<view class="btn">退出登录</view>
<view class="btn">更换手机号</view>
<van-popup
show="{{ popupBriefShow }}"
style="--popup-close-icon-color: #283031"
position="bottom"
round
closeable
bind:close="onClose"
>
<view class="popup-brief">
<view class="title">医生简介</view>
<textarea
class="textarea"
placeholder-style="color: rgba(194, 201, 202, 1)"
placeholder="请输入医生简介信息"
></textarea>
<view class="submit">保存</view>
</view>
</van-popup>
<van-popup
show="{{ popupSpecialtyShow }}"
style="--popup-close-icon-color: #283031"
position="bottom"
round
closeable
bind:close="onClose"
>
<view class="popup-brief">
<view class="title">医生专长</view>
<view class="tags">
<view class="tag active">瓣膜病</view>
<view class="tag">心律失常</view>
<view class="tag">心衰</view>
<view class="tag">心肌病</view>
</view>
<view class="submit">保存</view>
</view>
</van-popup>

7
src/pages/cases/index.json

@ -1,3 +1,8 @@ @@ -1,3 +1,8 @@
{
"usingComponents": {}
"navigationBarTitleText": "病历",
"navigationStyle": "default",
"usingComponents": {
"van-icon": "@vant/weapp/icon/index",
"van-popup": "@vant/weapp/popup/index"
}
}

464
src/pages/cases/index.scss

@ -0,0 +1,464 @@ @@ -0,0 +1,464 @@
page {
background-color: rgba(246, 246, 246, 1);
}
.page {
padding-bottom: 200rpx;
.header {
background-color: #fff;
border-radius: 0 0 32rpx 32rpx;
.navbar {
display: flex;
align-items: center;
justify-content: space-between;
.nav {
padding: 20rpx;
flex: 1;
text-align: center;
font-size: 32rpx;
color: rgba(133, 133, 133, 1);
line-height: 44rpx;
&.active {
position: relative;
color: rgba(0, 180, 197, 1);
&::after {
position: absolute;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 48rpx;
height: 8rpx;
border-radius: 8rpx 8rpx 0 0;
content: '';
background-color: rgba(0, 180, 197, 1);
}
}
}
}
.search {
margin: 32rpx 32rpx 0;
padding: 16rpx 32rpx;
display: flex;
align-items: center;
border-radius: 122rpx;
background-color: rgba(246, 246, 246, 1);
.icon {
margin-right: 14rpx;
width: 32rpx;
height: 32rpx;
}
.input {
flex: 1;
font-size: 28rpx;
color: #000;
}
.place-input {
color: rgba(205, 205, 205, 1);
}
}
.form {
margin: 32rpx 32rpx 0;
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 18rpx 28rpx;
.row {
display: flex;
align-items: center;
gap: 16rpx;
.label {
flex-shrink: 0;
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.picker {
flex: 1;
}
.picker-content {
flex: 1;
padding: 16rpx 20rpx;
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
line-height: 32rpx;
background: #f6f6f6;
border-radius: 12rpx 12rpx 12rpx 12rpx;
display: flex;
align-items: center;
justify-content: space-between;
.content {
max-width: 6em;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
}
}
.station {
padding: 32rpx;
display: flex;
align-items: center;
justify-content: space-between;
.wrap {
display: flex;
align-items: center;
justify-content: space-between;
gap: 60rpx;
.item {
display: flex;
align-items: center;
justify-content: space-between;
font-size: 32rpx;
color: rgba(20, 21, 21, 1);
.radio {
transform: scale(0.7);
}
}
}
.fold {
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
}
}
}
.sort-line {
margin: 32rpx 32rpx 0;
display: flex;
align-items: center;
justify-content: space-between;
.wrap {
display: flex;
align-items: center;
gap: 16rpx;
.btn {
padding: 8rpx 24rpx;
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
line-height: 32rpx;
background: #ffffff;
border-radius: 40rpx 40rpx 40rpx 40rpx;
&.active {
background-color: rgba(0, 180, 197, 1);
color: #fff;
}
}
}
.feedback {
font-size: 28rpx;
color: rgba(0, 180, 197, 1);
.wx-radio-input {
transform: scale(0.7);
}
}
}
.list {
padding: 0 32rpx;
.list-total {
padding: 24rpx 0;
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
}
.list-item {
padding-bottom: 16rpx;
position: relative;
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #ffffff;
background: linear-gradient(180deg, #f1feff 0%, #ffffff 35%, #ffffff 100%);
.quality {
position: absolute;
top: 0;
right: 0;
width: 120rpx;
height: 50rpx;
border-radius: 0 16rpx 0 0;
}
.li-header {
padding: 32rpx 32rpx 0 16rpx;
display: flex;
justify-content: space-between;
align-items: center;
&::before {
flex-shrink: 0;
content: '';
width: 10rpx;
height: 40rpx;
background: #00b4c5;
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
.wrap {
display: flex;
gap: 24rpx;
.id {
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.status {
font-size: 28rpx;
&.status1 {
color: rgba(0, 180, 197, 1);
}
&.status2 {
color: rgba(247, 121, 0, 1);
}
&.status3 {
color: rgba(153, 153, 153, 1);
}
}
}
.option {
color: rgba(20, 21, 21, 1);
letter-spacing: -4rpx;
}
}
.li-row {
padding: 16rpx 32rpx;
display: flex;
line-height: 32rpx;
.label {
flex-shrink: 0;
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
width: 5em;
}
.content {
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
.line {
color: rgba(205, 205, 205, 1);
}
.new {
margin-right: 12rpx;
display: inline-block;
padding: 0 8rpx;
font-size: 24rpx;
color: #fff;
background: linear-gradient(177deg, #f77900 0%, #ed4f39 88%);
border-radius: 0rpx 8rpx 0rpx 8rpx;
}
.reject {
padding: 0 8rpx;
display: inline-block;
font-size: 24rpx;
color: rgba(153, 153, 153, 1);
line-height: 32rpx;
border: 1px solid rgba(224, 224, 224, 1);
border-radius: 4rpx;
}
}
.tags {
display: flex;
gap: 12rpx;
.tag {
padding: 2rpx 8rpx;
font-size: 22rpx;
color: rgba(0, 180, 197, 1);
line-height: 32rpx;
border: 1rpx solid #bfeff4;
border-radius: 4rpx;
}
}
}
.photos {
padding: 16rpx 32rpx;
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 12rpx;
.photo {
width: 100%;
height: 148rpx;
border-radius: 8rpx;
}
}
}
}
.empty-1 {
margin: 174rpx auto 0;
text-align: center;
.e-img {
width: 356rpx;
height: 280rpx;
}
.e-tip {
font-size: 32rpx;
color: rgba(153, 153, 153, 1);
}
}
.empty-2 {
margin: 174rpx auto 0;
text-align: center;
.e-img {
width: 356rpx;
height: 242rpx;
}
.e-tip {
font-size: 32rpx;
color: rgba(153, 153, 153, 1);
}
}
}
.popup1 {
padding: 0 32rpx 80rpx;
.title {
padding: 32rpx;
font-size: 36rpx;
line-height: 1;
color: rgba(20, 21, 21, 1);
text-align: center;
}
.scroll {
max-height: 50vh;
overflow-y: auto;
overflow-x: hidden;
.list {
.list-item {
margin-bottom: 24rpx;
padding: 18rpx;
text-align: center;
font-size: 28rpx;
line-height: 32rpx;
background: #f6f6f6;
border-radius: 16rpx;
border: 2rpx solid #f6f6f6;
&.active {
background: rgba(29, 188, 204, 0.05);
border: 2rpx solid #00b4c5;
color: rgba(29, 188, 204, 1);
}
}
}
}
.submit {
width: 686rpx;
height: 88rpx;
font-size: 32rpx;
color: #fff;
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 96rpx 96rpx 96rpx 96rpx;
}
}
.popup2 {
padding: 0 32rpx 80rpx;
.title {
padding: 32rpx;
font-size: 36rpx;
line-height: 1;
color: rgba(20, 21, 21, 1);
text-align: center;
}
.search {
padding: 16rpx 32rpx;
display: flex;
align-items: center;
border-radius: 122rpx;
background-color: rgba(246, 246, 246, 1);
.icon {
margin-right: 14rpx;
width: 32rpx;
height: 32rpx;
}
.input {
flex: 1;
font-size: 28rpx;
color: #000;
}
.place-input {
color: rgba(205, 205, 205, 1);
}
}
.scroll {
margin-top: 24rpx;
max-height: 50vh;
overflow-y: auto;
overflow-x: hidden;
.list {
.list-item {
margin-bottom: 24rpx;
padding: 32rpx;
border-radius: 16rpx;
border: 2rpx solid rgba(246, 246, 246, 1);
background-color: rgba(246, 246, 246, 1);
.hostipal {
font-size: 32rpx;
color: rgba(20, 21, 21, 1);
line-height: 44rpx;
.tag {
vertical-align: 4rpx;
display: inline-block;
padding: 0 8rpx;
font-size: 24rpx;
line-height: 32rpx;
color: #fff;
border-radius: 4rpx;
background-color: rgba(0, 180, 197, 1);
}
}
.site {
margin-top: 16rpx;
font-size: 28rpx;
color: rgba(133, 133, 133, 1);
}
&.active {
background: rgba(29, 188, 204, 0.05);
border: 2rpx solid #00b4c5;
color: rgba(29, 188, 204, 1);
}
}
}
}
}
.popup3 {
padding: 32rpx 30rpx 84rpx;
.title {
display: flex;
justify-content: center;
font-size: 36rpx;
color: rgba(40, 48, 49, 1);
font-weight: bold;
}
.textarea {
padding: 30rpx;
margin-top: 32rpx;
width: 100%;
height: 216rpx;
box-sizing: border-box;
background: #f7f8f9;
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #f8f9f9;
font-size: 32rx;
}
.tags {
margin-top: 32rpx;
display: flex;
flex-wrap: wrap;
gap: 20rpx;
.tag {
padding: 6rpx 44rpx;
font-size: 32rpx;
color: rgba(133, 133, 133, 1);
line-height: 44rpx;
background-color: #fff;
border: 1px solid #f6f6f6;
border-radius: 8rpx;
background: #f6f6f6;
&.active {
background-color: #fff;
border-color: rgba(1, 180, 197, 1);
color: rgba(1, 180, 197, 1);
}
}
}
.submit {
margin-top: 32rpx;
height: 84rpx;
display: flex;
justify-content: center;
align-items: center;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
font-size: 36rpx;
color: #fff;
border-radius: 64rpx 64rpx 64rpx 64rpx;
}
}

21
src/pages/cases/index.ts

@ -1,6 +1,21 @@ @@ -1,6 +1,21 @@
const _app = getApp<IAppOption>();
const _app = getApp<IAppOption>()
Page({
data: {},
data: {
show1: false,
show2: false,
show3: false,
},
onLoad() {},
});
handleImagePreview(e) {
const { url } = e.currentTarget.dataset
wx.previewImage({
urls: [url],
})
},
handleDetail(){
wx.navigateTo({
url:"/module1/pages/casesDetail/index"
})
}
})

237
src/pages/cases/index.wxml

@ -1,2 +1,235 @@ @@ -1,2 +1,235 @@
<!--pages/story/index.wxml-->
<text>pages/story/index.wxml</text>
<view class="page">
<view class="header">
<view class="navbar">
<view class="nav active">我的病历</view>
<view class="nav">
公开病历
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
<view class="nav">
优质病历
<van-icon name="question" color="rgba(224, 224, 224, 1)" />
</view>
</view>
<view class="search">
<image class="icon" src="/images/icon-search.png"></image>
<input class="input" placeholder-class="place-input" type="text" placeholder="支持档案编号、医生姓名进行搜索" />
</view>
<view class="form">
<view class="row">
<view class="label">状态</view>
<view class="picker-content">
<view class="content">全全部全部全部全部全部全部全部全部全部全部部</view>
<van-icon name="arrow-down" />
</view>
</view>
<view class="row">
<view class="label">医院</view>
<view class="picker-content">
<view class="content">全全部全部全部全部全部全部全部全部全部全部部</view>
<van-icon name="arrow-down" />
</view>
</view>
<view class="row">
<view class="label">创建</view>
<picker class="picker">
<view class="picker-content">
<view class="content">全全部全部全部全部全部全部全部全部全部全部部</view>
<van-icon name="arrow-down" />
</view>
</picker>
</view>
<view class="row">
<view class="label">更新</view>
<picker class="picker">
<view class="picker-content">
<view class="content">全全部全部全部全部全部全部全部全部全部全部部</view>
<van-icon name="arrow-down" />
</view>
</picker>
</view>
<view class="row">
<view class="label">标签</view>
<view class="picker-content">
<view class="content">全全部全部全部全部全部全部全部全部全部全部部</view>
<van-icon name="arrow-down" />
</view>
</view>
<view class="row">
<view class="label">地区</view>
<picker class="picker">
<view class="picker-content">
<view class="content">全全部全部全部全部全部全部全部全部全部全部部</view>
<van-icon name="arrow-down" />
</view>
</picker>
</view>
</view>
<view class="station">
<view class="wrap">
<view class="item">
<radio class="radio"></radio>
驳回
</view>
<view class="item">
<radio class="radio"></radio>
优质
</view>
<view class="item">
<radio class="radio"></radio>
公开
</view>
</view>
<view class="fold">
收起
<van-icon class="v-icon" name="arrow-down" />
</view>
</view>
</view>
<view class="sort-line">
<view class="wrap">
<view class="btn active">更新时间排序</view>
<view class="btn">提交时间排序</view>
</view>
<radio class="feedback" color="rgba(0, 180, 197, 1)">待我反馈</radio>
</view>
<view class="list">
<view class="list-total">共有290条病历</view>
<view class="list-item" bind:tap="handleDetail">
<image
class="quality"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
mode="scaleToFill"
></image>
<view class="li-header">
<view class="wrap">
<view class="id">ID:2024020913049204001</view>
<view class="status status1">讨论中</view>
<view class="status status3">已公开</view>
</view>
<view class="option">···</view>
</view>
<view class="li-row">
<view class="label">提交时间</view>
<view class="content">2024-02-09 12:04:23</view>
</view>
<view class="li-row">
<view class="label">提交人</view>
<view class="content">
王军
<text class="line">|</text>
四川大学华西医院 副主任医师
</view>
</view>
<view class="li-row">
<view class="label">标签</view>
<view class="tags">
<view class="tag">心律失常</view>
<view class="tag">心律失常</view>
<view class="tag">心律失常</view>
</view>
</view>
<view class="photos">
<image
class="photo"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
bind:tap="handleImagePreview"
data-url="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
></image>
<image
class="photo"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
></image>
</view>
<view class="li-row">
<view class="label">更新时间</view>
<view class="content">
2024-02-09 12:04:23
<view class="new">new</view>
<view class="reject">已驳回</view>
</view>
</view>
<view class="li-row">
<view class="label">反馈人</view>
<view class="content">
王军
<text class="line">|</text>
四川大学华西医院 副主任医师
</view>
</view>
</view>
</view>
<view class="empty-1">
<image class="e-img" src="/images/empty-1.png"></image>
<view class="e-tip">没有找到您搜索的医院哦!</view>
</view>
<view class="empty-2">
<image class="e-img" src="/images/empty-2.png"></image>
<view class="e-tip">没有找到您搜索的医院哦!</view>
</view>
</view>
<van-popup show="{{ show1 }}" position="bottom" bind:close="onClose" z-index="10000" round closeable>
<view class="popup1">
<view class="title">病历状态</view>
<view class="scroll">
<view class="list">
<view class="list-item active">全部</view>
<view class="list-item">新病历</view>
<view class="list-item">讨论中</view>
<view class="list-item">已归档</view>
<view class="list-item">已归档</view>
</view>
</view>
<view class="submit">保存</view>
</view>
</van-popup>
<van-popup show="{{ show2 }}" position="bottom" bind:close="onClose" z-index="10000" round closeable>
<view class="popup2">
<view class="title">选择医院</view>
<view class="search">
<image class="icon" src="/images/icon-search.png"></image>
<input class="input" placeholder-class="place-input" type="text" placeholder="支持档案编号、医生姓名进行搜索" />
</view>
<view class="scroll">
<view class="list">
<view class="list-item active">
<view class="hostipal">
中山大学附属第一医院
<view class="tag">三甲</view>
</view>
<view class="site">广东省广州市越秀区中山二路58号</view>
</view>
<view class="list-item">
<view class="hostipal">
中山大学附属第一医院
<view class="tag">三甲</view>
</view>
<view class="site">广东省广州市越秀区中山二路58号</view>
</view>
</view>
</view>
</view>
</van-popup>
<van-popup
show="{{ show3 }}"
style="--popup-close-icon-color: #283031"
position="bottom"
round
closeable
bind:close="onClose"
z-index="10000"
>
<view class="popup3">
<view class="title">选择标签</view>
<view class="tags">
<view class="tag active">瓣膜病</view>
<view class="tag">心律失常</view>
<view class="tag">心衰</view>
<view class="tag">心肌病</view>
</view>
<view class="submit">保存</view>
</view>
</van-popup>

10
src/pages/home/index.json

@ -1,8 +1,14 @@ @@ -1,8 +1,14 @@
{
"usingComponents": {
"homeLevel1": "../../echart/components/homeLevel1/index"
"homeLevel1": "../../echart/components/homeLevel1/index",
"homeLevel2": "../../echart/components/homeLevel2/index",
"homeLevel3": "../../echart/components/homeLevel3/index",
"homeLevel4": "../../echart/components/homeLevel4/index"
},
"componentPlaceholder": {
"homeLevel1": "view"
"homeLevel1": "view",
"homeLevel2": "view",
"homeLevel3": "view",
"homeLevel4": "view"
}
}

3
src/pages/home/index.scss

@ -1,3 +1,6 @@ @@ -1,3 +1,6 @@
page{
background-color: rgba(246, 246, 246, 1);
}
.page {
.logo {
margin-left: 32rpx;

8
src/pages/home/index.ts

@ -1,6 +1,8 @@ @@ -1,6 +1,8 @@
const _app = getApp<IAppOption>();
const _app = getApp<IAppOption>()
Page({
data: {},
data: {
level: 3,
},
onLoad() {},
});
})

7
src/pages/home/index.wxml

@ -1,7 +1,10 @@ @@ -1,7 +1,10 @@
<view
class="page"
style="background: url({{imageUrl}}home-bg.png?r={{Timestamp}}) no-repeat top center/100% 1624rpx;padding-top:{{menuButtonInfo.bottom}}rpx;"
style="background: url({{imageUrl}}home-bg.png?r={{Timestamp}}) no-repeat top center/100% 560rpx;padding-top:{{menuButtonInfo.top}}px;"
>
<image class="logo" src="/images/home-logo.png"></image>
<homeLevel1></homeLevel1>
<homeLevel1 wx:if="{{level===1}}"></homeLevel1>
<homeLevel2 wx:elif="{{level===2}}"></homeLevel2>
<homeLevel3 wx:elif="{{level===3}}"></homeLevel3>
<homeLevel4 wx:elif="{{level===4}}"></homeLevel4>
</view>

6
src/pages/my/index.json

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
{
"usingComponents": {
"doctorAvatar": "/components/doctorAvatar/index",
"van-icon": "@vant/weapp/icon/index"
}
}

154
src/pages/my/index.scss

@ -0,0 +1,154 @@ @@ -0,0 +1,154 @@
page {
background-color: rgba(246, 246, 246, 1);
}
.page {
padding: 0 32rpx 280rpx;
.user {
position: relative;
padding: 102rpx 32rpx 32rpx;
background: linear-gradient(180deg, #f1feff 0%, #ffffff 35%, #ffffff 100%);
box-shadow: 0rpx 8rpx 24rpx 0rpx rgba(0, 66, 73, 0.09);
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #ffffff;
.avatar {
position: absolute;
top: -38rpx;
left: 32rpx;
width: 112rpx;
height: 112rpx;
}
.wrap {
.w-header {
display: flex;
align-items: baseline;
gap: 16rpx;
.name {
font-size: 36rpx;
color: rgba(20, 21, 21, 1);
}
.desc {
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
.line {
margin: 0 12rpx;
display: inline-block;
height: 24rpx;
width: 1rpx;
background-color: rgba(205, 205, 205, 1);
}
}
}
.w-container {
margin-top: 24rpx;
.hostipal {
margin-right: 12rpx;
display: inline;
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.tag {
margin-right: 12rpx;
display: inline-block;
padding: 0 8rpx;
border-radius: 4rpx;
background-color: rgba(0, 180, 197, 1);
font-size: 24rpx;
color: #fff;
}
.site {
display: inline-block;
padding: 0 8rpx;
font-size: 28rpx;
line-height: 32rpx;
color: rgba(148, 87, 30, 1);
border-radius: 4rpx;
background-color: rgba(250, 229, 206, 1);
}
}
.w-footer {
margin-top: 16rpx;
display: flex;
gap: 12rpx;
flex-wrap: wrap;
.wf-label {
flex-shrink: 0;
width: 48rpx;
height: 32rpx;
}
.wf-tag {
flex-shrink: 0;
padding: 0 8rpx;
font-size: 22rpx;
color: rgba(0, 180, 197, 1);
line-height: 32rpx;
border: 1rpx solid rgba(191, 239, 244, 1);
}
}
}
}
.invite {
margin-top: 24rpx;
padding: 36rpx 36rpx 36rpx 42rpx;
display: flex;
align-items: center;
justify-content: space-between;
background: linear-gradient(83deg, #d8fcff 0%, rgba(240, 254, 255, 0.38) 33%, rgba(255, 255, 255, 1) 100%);
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #ffffff;
.code {
flex-shrink: 0;
width: 76rpx;
height: 76rpx;
}
.wrap {
.title {
font-size: 30rpx;
color: rgba(20, 21, 21, 1);
font-weight: bold;
line-height: 1;
}
.desc {
margin-top: 16rpx;
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
}
}
.btn {
flex-shrink: 0;
width: 120rpx;
height: 56rpx;
font-size: 28rpx;
color: #fff;
text-align: center;
line-height: 56rpx;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 34rpx 34rpx 34rpx 34rpx;
}
}
.list {
margin-top: 24rpx;
background: #ffffff;
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #ffffff;
.list-item {
padding: 32rpx;
display: flex;
align-items: center;
justify-content: space-between;
.label {
display: flex;
align-items: center;
font-size: 32rpx;
color: rgba(0, 0, 0, 1);
.icon {
margin-right: 16rpx;
width: 44rpx;
height: 44rpx;
}
}
.more{
color: rgba(205, 205, 205, 1);
}
}
}
}

11
src/pages/my/index.ts

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
const _app = getApp<IAppOption>()
Page({
data: {},
onLoad() {},
handleUserInfo() {
wx.navigateTo({
url: '/module1/pages/userInfo/index',
})
},
})

65
src/pages/my/index.wxml

@ -0,0 +1,65 @@ @@ -0,0 +1,65 @@
<view
class="page"
style="background: url({{imageUrl}}my-bg.png?r={{Timestamp}}) no-repeat top center/100% 642rpx;padding-top:{{menuButtonInfo.bottom+30}}px;"
>
<view class="user">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{1}}"
></doctorAvatar>
<view class="wrap">
<view class="w-header">
<view class="name">徐萌</view>
<view class="desc">
主治医师
<view class="line"></view>
心内科
</view>
</view>
<view class="w-container">
<view class="hostipal">北京天坛医院</view>
<view class="tag">三甲</view>
<view class="site">广州市/番禺区</view>
</view>
<view class="w-footer">
<image class="wf-label" src="/images/text-specialty.png" mode="aspectFit"></image>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
<view class="wf-tag">心律失常</view>
</view>
</view>
</view>
<view class="invite">
<image class="code" src="/images/icon-code.png"></image>
<view class="wrap">
<view class="title">我的专属邀约码</view>
<view class="desc">出示邀约码邀请医生交流病历</view>
</view>
<view class="btn">邀约</view>
</view>
<view class="list">
<view class="list-item">
<view class="label" bind:tap="handleUserInfo">
<image class="icon" src="/images/my-list-icon1.png"></image>
个人信息
</view>
<van-icon class="more" name="arrow" />
</view>
<view class="list-item">
<view class="label">
<image class="icon" src="/images/my-list-icon2.png"></image>
隐私与合规协议
</view>
<van-icon class="more" name="arrow" />
</view>
<view class="list-item">
<view class="label">
<image class="icon" src="/images/my-list-icon3.png"></image>
账号相关
</view>
<van-icon class="more" name="arrow" />
</view>
</view>
</view>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save