Browse Source

tabbar

main
kola 4 months ago
parent
commit
3e1b2e3637
  1. 4
      README.md
  2. 11
      index.html
  3. 28
      project.private.config.json
  4. 20
      src/app.json
  5. 2
      src/app.ts
  6. 4
      src/components/doctorAvatar/index.json
  7. 17
      src/components/doctorAvatar/index.scss
  8. 29
      src/components/doctorAvatar/index.ts
  9. 5
      src/components/doctorAvatar/index.wxml
  10. 8
      src/components/popupDoctorDetail/index.json
  11. 116
      src/components/popupDoctorDetail/index.scss
  12. 24
      src/components/popupDoctorDetail/index.ts
  13. 45
      src/components/popupDoctorDetail/index.wxml
  14. 4
      src/custom-tab-bar/index.json
  15. 54
      src/custom-tab-bar/index.scss
  16. 59
      src/custom-tab-bar/index.ts
  17. 12
      src/custom-tab-bar/index.wxml
  18. 4
      src/echart/components/homeLevel1/index.json
  19. 0
      src/echart/components/homeLevel1/index.scss
  20. 25
      src/echart/components/homeLevel1/index.ts
  21. 1
      src/echart/components/homeLevel1/index.wxml
  22. BIN
      src/images/.DS_Store
  23. BIN
      src/images/doctor-level2.png
  24. BIN
      src/images/doctor-level3.png
  25. BIN
      src/images/home-bg.png
  26. BIN
      src/images/home-logo.png
  27. BIN
      src/images/icon-reject.png
  28. BIN
      src/images/icon-resolve.png
  29. BIN
      src/images/tabbar/add.png
  30. BIN
      src/images/tabbar/tab-active1.png
  31. BIN
      src/images/tabbar/tab-active2.png
  32. BIN
      src/images/tabbar/tab-active3.png
  33. BIN
      src/images/tabbar/tab-active4.png
  34. BIN
      src/images/tabbar/tab1.png
  35. BIN
      src/images/tabbar/tab2.png
  36. BIN
      src/images/tabbar/tab3.png
  37. BIN
      src/images/tabbar/tab4.png
  38. BIN
      src/images/text-specialty.png
  39. 7
      src/module1/pages/auditDoctorDetail/index.json
  40. 228
      src/module1/pages/auditDoctorDetail/index.scss
  41. 20
      src/module1/pages/auditDoctorDetail/index.ts
  42. 110
      src/module1/pages/auditDoctorDetail/index.wxml
  43. 5
      src/module1/pages/auditDoctorList/index.json
  44. 96
      src/module1/pages/auditDoctorList/index.scss
  45. 17
      src/module1/pages/auditDoctorList/index.ts
  46. 41
      src/module1/pages/auditDoctorList/index.wxml
  47. 8
      src/module1/pages/setDoctor/index.json
  48. 180
      src/module1/pages/setDoctor/index.scss
  49. 6
      src/module1/pages/setDoctor/index.ts
  50. 74
      src/module1/pages/setDoctor/index.wxml
  51. 2
      src/module1/pages/setInfo/index.scss
  52. 3
      src/pages/cases/index.json
  53. 0
      src/pages/cases/index.scss
  54. 6
      src/pages/cases/index.ts
  55. 2
      src/pages/cases/index.wxml
  56. 8
      src/pages/home/index.json
  57. 7
      src/pages/home/index.scss
  58. 6
      src/pages/home/index.ts
  59. 7
      src/pages/home/index.wxml
  60. 46
      src/utils/component.ts
  61. 46
      src/utils/page.ts
  62. 52
      tsconfig.json

4
README.md

@ -1,8 +1,10 @@ @@ -1,8 +1,10 @@
1. user 打开小程序进入 身份认证页面
2. 判断图片是否涂抹
3. 图像识别模糊 可以反向确认 通过ocr识别接口 接入ocr同时识别不到 姓名,年龄等字样,及判断该病例已被涂抹
<!--占位图像-->
https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567
images svn 地址
svn://39.106.86.127:28386/projects/takeda/proj_src/shop/frontend/web/wt

11
index.html

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<view></view>
</body>
</html>

28
project.private.config.json

@ -8,6 +8,34 @@ @@ -8,6 +8,34 @@
"miniprogram": {
"list": [
{
"name": "首页",
"pathName": "pages/home/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "指派医生",
"pathName": "module1/pages/setDoctor/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "医生审核详情",
"pathName": "module1/pages/auditDoctorDetail/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "医生审核列表",
"pathName": "module1/pages/auditDoctorList/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "医生认证结果页",
"pathName": "module1/pages/setInfoResult/index",
"query": "",

20
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": ["pages/start/index", "pages/home/index", "pages/cases/index"],
"subPackages": [
{
"root": "echart",
@ -16,7 +16,10 @@ @@ -16,7 +16,10 @@
"pages/setInfoResult/index",
"pages/sDoctor/index",
"pages/cDoctor/index",
"pages/cDoctorResult/index"
"pages/cDoctorResult/index",
"pages/auditDoctorList/index",
"pages/auditDoctorDetail/index",
"pages/setDoctor/index"
]
}
],
@ -27,6 +30,19 @@ @@ -27,6 +30,19 @@
"navigationBarTextStyle": "black",
"navigationStyle": "custom"
},
"tabBar": {
"custom": true,
"list": [
{
"pagePath": "pages/home/index",
"text": "首页"
},
{
"pagePath": "pages/cases/index",
"text": "病例"
}
]
},
"resolveAlias": {
"@/*": "/*"
},

2
src/app.ts

@ -1,3 +1,4 @@ @@ -1,3 +1,4 @@
import component from '@/utils/component'
import relativeTime from '@/utils/dayjs/relativeTime.js'
import page from '@/utils/page'
@ -26,6 +27,7 @@ App<IAppOption>({ @@ -26,6 +27,7 @@ App<IAppOption>({
},
onLaunch() {
Page = page as WechatMiniprogram.Page.Constructor
Component = component as WechatMiniprogram.Component.Constructor
wx.ajax = licia.curry(request)({ gUrl: this.globalData.url })

4
src/components/doctorAvatar/index.json

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

17
src/components/doctorAvatar/index.scss

@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
.avatar {
position: relative;
width: 100%;
height: 100%;
.a-img {
width: 100%;
height: 100%;
border-radius: 50%;
}
.mask {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
}

29
src/components/doctorAvatar/index.ts

@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
const _app = getApp<IAppOption>()
// pages/story/a.ts
Component({
/**
*
*/
externalClasses: true,
properties: {
src: {
type: String,
value: '',
},
level: {
type: Number,
value: 1,
},
},
/**
*
*/
data: {},
/**
*
*/
methods: {},
})

5
src/components/doctorAvatar/index.wxml

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
<view class="avatar">
<image class="a-img" src="{{src}}"></image>
<image class="mask" wx:if="{{level===3}}" src="/images/doctor-level3.png"></image>
<image class="mask" wx:elif="{{level===2}}" src="/images/doctor-level3.png"></image>
</view>

8
src/components/popupDoctorDetail/index.json

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

116
src/components/popupDoctorDetail/index.scss

@ -0,0 +1,116 @@ @@ -0,0 +1,116 @@
.doctor-detail {
padding: 48rpx 32rpx;
width: 662rpx;
height: 874rpx;
background: #ffffff;
box-sizing: border-box;
border-radius: 16rpx 16rpx 16rpx 16rpx;
.close {
position: absolute;
top: 24rpx;
right: 24rpx;
color: rgba(133, 133, 133, 1);
}
.title {
text-align: center;
font-size: 36rpx;
color: rgba(20, 21, 21, 1);
font-weight: bold;
}
.user {
display: flex;
gap: 24rpx;
.avatar {
flex-shrink: 0;
width: 112rpx;
height: 112rpx;
}
.wrap {
.name {
font-size: 36rpx;
color: rgba(20, 21, 21, 1);
font-weight: bold;
}
.w-footer {
margin-top: 16rpx;
.label {
display: inline;
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.line {
vertical-align: middle;
display: inline-block;
margin: 0 12rpx;
width: 1px;
height: 24rpx;
background-color: rgba(205, 205, 205, 1);
}
}
}
}
.row {
padding: 32rpx 0;
display: flex;
border-bottom: 1px solid rgba(224, 224, 224, 0.5);
line-height: 32rpx;
.label {
padding-right: 1em;
flex-shrink: 0;
width: 4em;
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
text-align: right;
}
.hostipal {
flex: 1;
.h-name {
margin-right: 12rpx;
display: inline;
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
.h-tag {
margin-right: 12rpx;
display: inline-block;
padding: 0 8rpx;
font-size: 24rpx;
color: rgba(255, 255, 255, 1);
border-radius: 4rpx;
background: #00b4c5;
}
.h-site {
display: inline-block;
padding: 0 8rpx;
font-size: 24rpx;
color: rgba(148, 87, 30, 1);
border-radius: 4rpx;
background-color: rgba(250, 229, 206, 1);
}
}
.specialty {
flex: 1;
display: flex;
flex-wrap: wrap;
gap: 12rpx;
.s-tag {
padding: 0 8rpx;
font-size: 22rpx;
color: rgba(0, 180, 197, 1);
line-height: 32rpx;
border-radius: 4rpx 4rpx 4rpx 4rpx;
border: 1rpx solid #bfeff4;
}
}
.brief-introduction {
flex: 1;
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
line-height: 44rpx;
white-space: pre-line;
}
&:last-of-type {
border-bottom: none;
}
}
}

24
src/components/popupDoctorDetail/index.ts

@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
const _app = getApp<IAppOption>()
// pages/story/a.ts
Component({
/**
*
*/
properties: {
show: {
type: Boolean,
value: false,
},
},
/**
*
*/
data: {},
/**
*
*/
methods: {},
})

45
src/components/popupDoctorDetail/index.wxml

@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
<van-popup show="{{ show }}" bind:close="onClose" custom-style="background:transparent">
<view class="doctor-detail">
<van-icon class="close" name="cross" />
<view class="title">医生详情</view>
<view class="user">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{3}}"
></doctorAvatar>
<view class="wrap">
<view class="name">徐萌</view>
<view class="w-footer">
<view class="label">主任医师</view>
<view class="line"></view>
<view class="label">心内科</view>
</view>
</view>
</view>
<view class="row">
<view class="label">所在医院</view>
<view class="hostipal">
<view class="h-name">四川华西医院</view>
<view class="h-tag">三甲</view>
<view class="h-site">成都市/金牛区</view>
</view>
</view>
<view class="row">
<view class="label">专长</view>
<view class="specialty">
<div class="s-tag">冠心病</div>
<div class="s-tag">冠心病</div>
<div class="s-tag">冠心病</div>
<div class="s-tag">冠心病</div>
</view>
</view>
<view class="row">
<view class="label">简介</view>
<view class="brief-introduction">
曾任华西医院急诊科副主任、
血管疾病腔内治疗中心副主任。目前担任心脏和大血管外科教授、主任医师,硕士研究生导师。曾任华西医院急诊科副主任、血管疾病腔内治疗中心副主任。目前担任心脏和大血管外科教授、主任医师,硕士研究生导师。
</view>
</view>
</view>
</van-popup>

4
src/custom-tab-bar/index.json

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

54
src/custom-tab-bar/index.scss

@ -0,0 +1,54 @@ @@ -0,0 +1,54 @@
.tabbar {
padding: 0 0 calc(env(safe-area-inset-bottom) + 12rpx);
display: flex;
justify-content: space-between;
background-color: #fff;
box-shadow: 0rpx 3rpx 27rpx 0rpx rgba(40, 48, 49, 0.1);
.custom {
flex-shrink: 0;
position: relative;
width: 94rpx;
height: 94rpx;
.add {
position: absolute;
top: -42rpx;
width: 94rpx;
height: 94rpx;
}
}
.tab-item {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
.icon {
display: block;
width: 48rpx;
height: 48rpx;
}
.icon-active {
display: none;
width: 48rpx;
height: 48rpx;
}
.name {
margin-top: 8rpx;
font-size: 22rpx;
color: rgba(20, 21, 21, 1);
line-height: 21rpx;
}
&.active {
.icon {
display: none;
}
.icon-active {
display: block;
}
.name {
color: rgba(0, 180, 197, 1);
}
}
}
}

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

@ -0,0 +1,59 @@ @@ -0,0 +1,59 @@
const _app = getApp<IAppOption>()
// pages/story/a.ts
Component({
/**
*
*/
properties: {},
/**
*
*/
data: {
tabbar: [
{
path: '/pages/home/index',
name: '首页',
icon: 'tab1.png',
iconActive: 'tab-active1.png',
},
{
path: '/pages/home/index',
name: '首页',
icon: 'tab2.png',
iconActive: 'tab-active2.png',
},
{
custom: true,
path: '/pages/home/index',
},
{
path: '/pages/home/index',
name: '首页',
icon: 'tab3.png',
iconActive: 'tab-active3.png',
},
{
path: '/pages/home/index',
name: '首页',
icon: 'tab4.png',
iconActive: 'tab-active3.png',
},
],
},
attached() {},
/**
*
*/
methods: {
handleTab(e: any) {
const { index } = e.currentTarget.dataset
const tab = this.data.tabbar[index]
wx.switchTab({
url: tab.path,
})
},
},
})

12
src/custom-tab-bar/index.wxml

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
<view class="tabbar">
<block wx:for="{{tabbar}}" wx:key="index">
<view class="custom" wx:if="{{item.custom}}" bind:tap="handleTab" data-index="{{index}}">
<image class="add" src="/images/tabbar/add.png"></image>
</view>
<view class="tab-item {{index===0 &&'active'}}" wx:else bind:tap="handleTab" data-index="{{index}}">
<image class="icon" src="/images/tabbar/{{item.icon}}"></image>
<image class="icon-active" src="/images/tabbar/{{item.iconActive}}"></image>
<view class="name">{{item.name}}</view>
</view>
</block>
</view>

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

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

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

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

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

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

@ -0,0 +1 @@ @@ -0,0 +1 @@
<view class="page">11</view>

BIN
src/images/.DS_Store vendored

Binary file not shown.

BIN
src/images/doctor-level2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
src/images/doctor-level3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

BIN
src/images/home-bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

BIN
src/images/home-logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

BIN
src/images/icon-reject.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
src/images/icon-resolve.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
src/images/tabbar/add.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
src/images/tabbar/tab-active1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
src/images/tabbar/tab-active2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
src/images/tabbar/tab-active3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
src/images/tabbar/tab-active4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
src/images/tabbar/tab1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/images/tabbar/tab2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
src/images/tabbar/tab3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
src/images/tabbar/tab4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
src/images/text-specialty.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

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

@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
{
"navigationBarTitleText": "审核详情",
"navigationStyle": "default",
"usingComponents": {
"van-dialog": "@vant/weapp/dialog/index"
}
}

228
src/module1/pages/auditDoctorDetail/index.scss

@ -0,0 +1,228 @@ @@ -0,0 +1,228 @@
page {
background-color: rgba(246, 246, 246, 1);
}
.page {
padding: 24rpx 32rpx 240rpx;
.card {
margin-bottom: 24rpx;
padding: 0 32rpx;
border-radius: 16rpx;
background-color: #fff;
.row {
padding: 32rpx 0;
display: flex;
border-bottom: 1px solid rgba(224, 224, 224, 0.5);
.label {
flex-shrink: 0;
width: 5em;
font-size: 32rpx;
color: rgba(133, 133, 133, 1);
}
.content {
flex: 1;
font-size: 32rpx;
color: rgba(20, 21, 21, 1);
}
.photo-wrap {
flex: 1;
display: grid;
gap: 24rpx;
grid-template-columns: repeat(2, 1fr);
.photo {
position: relative;
display: block;
width: 100%;
height: 152rpx;
border-radius: 16rpx;
.preview {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
padding: 4rpx 0;
font-size: 24rpx;
line-height: 32rpx;
text-align: center;
color: rgba(255, 255, 255, 1);
background: rgba(0, 0, 0, 0.57);
}
}
}
&:last-of-type {
border-bottom: none;
}
}
.user {
padding: 30rpx 0;
.avatar {
margin: 0 auto;
display: block;
width: 160rpx;
height: 160rpx;
border-radius: 50%;
}
}
}
.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: 88rpx;
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;
}
}
}
.dialog {
padding: 56rpx 32rpx;
.d-title {
font-size: 32rpx;
color: rgba(20, 21, 21, 1);
font-weight: bold;
}
.btn1 {
margin-top: 32rpx;
padding: 14rpx;
text-align: center;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 60rpx 60rpx 60rpx 60rpx;
.title {
font-size: 32rpx;
color: rgba(255, 255, 255, 1);
}
.explanation {
font-size: 22rpx;
color: rgba(255, 255, 255, 1);
}
}
.btn2 {
margin-top: 32rpx;
padding: 12rpx;
text-align: center;
border-radius: 60rpx 60rpx 60rpx 60rpx;
box-sizing: border-box;
border: 1px solid #00b4c5;
.title {
font-size: 32rpx;
color: rgba(0, 180, 197, 1);
}
.explanation {
font-size: 22rpx;
color: rgba(0, 180, 197, 1);
}
}
.cancel {
margin: 32rpx 0 0;
font-size: 32rpx;
line-height: 44rpx;
color: rgba(0, 180, 197, 1);
text-align: center;
}
}
.reject {
background-color: transparent;
.r-badge {
position: relative;
z-index: 1;
display: block;
margin: 0 auto;
width: 152rpx;
height: 152rpx;
}
.r-container {
margin-top: -76rpx;
padding: 78rpx 32rpx 40rpx;
background-color: #fff;
border-radius: 32rpx 32rpx 0 0;
.title {
font-size: 32rpx;
color: rgba(20, 21, 21, 1);
font-weight: bold;
text-align: center;
}
.tip {
margin-top: 32rpx;
font-size: 30rpx;
color: rgba(153, 153, 153, 1);
line-height: 44rpx;
}
.select-wrap {
margin-top: 22rpx;
display: flex;
gap: 24rpx;
flex-wrap: wrap;
.btn {
flex: 1;
padding: 10rpx;
border-radius: 84rpx;
font-size: 32rpx;
color: rgba(133, 133, 133, 1);
line-height: 44rpx;
text-align: center;
box-sizing: border-box;
background-color: rgba(246, 246, 246, 1);
&.active {
color: #fff;
background-color: rgba(0, 180, 197, 1);
}
}
}
}
}
.resolve {
background-color: transparent;
.r-badge {
position: relative;
z-index: 1;
display: block;
margin: 0 auto;
width: 152rpx;
height: 152rpx;
}
.r-container {
margin-top: -76rpx;
padding: 78rpx 32rpx 40rpx;
background-color: #fff;
border-radius: 32rpx 32rpx 0 0;
.title {
font-size: 32rpx;
color: rgba(20, 21, 21, 1);
font-weight: bold;
text-align: center;
}
.content {
margin-top: 32rpx;
font-size: 30rpx;
color: rgba(153, 153, 153, 1);
line-height: 44rpx;
}
}
}

20
src/module1/pages/auditDoctorDetail/index.ts

@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
const _app = getApp<IAppOption>()
Page({
data: {
show: false,
showReject: false,
showResolve: true,
},
onLoad() {},
handleDialogClose() {
this.setData({
show: false,
})
},
handleSetDoctor() {
wx.navigateTo({
url: '/module1/pages/setDoctor/index',
})
},
})

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

@ -0,0 +1,110 @@ @@ -0,0 +1,110 @@
<view class="page">
<view class="card">
<view class="row">
<view class="label">提交人</view>
<view class="content">王军</view>
</view>
<view class="row">
<view class="label">提交时间</view>
<view class="content">2024-6-1 13:34:34</view>
</view>
</view>
<view class="card">
<view class="user">
<image
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
></image>
</view>
<view class="row">
<view class="label">姓名</view>
<view class="content">王军</view>
</view>
<view class="row">
<view class="label">头衔</view>
<view class="content">主任医师</view>
</view>
<view class="row">
<view class="label">证件</view>
<view class="photo-wrap">
<image
class="photo"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
mode="aspectFill"
catch:tap="handlePreview"
data-url="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
wx:for="{{3}}"
wx:for-item="photo"
wx:for-index="photo-index"
wx:key="photo-index"
>
<view class="preview">预览</view>
</image>
</view>
</view>
<view class="row">
<view class="label">所在医院</view>
<view class="content">北医三院</view>
</view>
</view>
<view class="footer">
<view class="cancel">驳回</view>
<view class="submit" bind:tap="handleSubmit">通过</view>
</view>
</view>
<van-dialog use-slot show="{{ show }}" bind:close="onClose" show-confirm-button="{{false}}">
<view class="dialog">
<view class="d-title">确认通过王欢医生的审核信息?</view>
<view class="btn1">
<view class="title">确认通过王欢医生的审核信息?</view>
<view class="explanation">您将成为王欢医生的直接上级医生</view>
</view>
<view class="btn2" bind:tap="handleSetDoctor">
<view class="title">指派核心医生后通过</view>
<view class="explanation">被指派医生将帮您提前审核病例</view>
</view>
<view class="cancel" bind:tap="handleDialogClose">取消</view>
</view>
</van-dialog>
<!-- 审核驳回 -->
<van-dialog
custom-style="background:transparent"
use-slot
show="{{ showReject }}"
showCancelButton
confirm-button-color="rgba(0, 180, 197, 1)"
bind:close="onClose"
>
<view class="reject">
<image class="r-badge" src="/images/icon-reject.png"></image>
<view class="r-container">
<view class="title">确认审核不通过?</view>
<view class="tip">请选择驳回原因</view>
<view class="select-wrap">
<view class="btn active">资料不符合要求</view>
<view class="btn">地区不合适</view>
</view>
</view>
</view>
</van-dialog>
<!-- 审核通过 -->
<van-dialog
custom-style="background:transparent"
use-slot
show="{{ showResolve }}"
showCancelButton
confirm-button-color="rgba(0, 180, 197, 1)"
bind:close="onClose"
>
<view class="resolve">
<image class="r-badge" src="/images/icon-resolve.png"></image>
<view class="r-container">
<view class="title">确定审核通过?</view>
<view class="content">审核通过后,当前医生将成为您的邀约医生,他上传的病历将可以指定您一起讨论病历</view>
</view>
</view>
</van-dialog>

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

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
{
"navigationStyle": "default",
"navigationBarTitleText": "待审核医生",
"usingComponents": {}
}

96
src/module1/pages/auditDoctorList/index.scss

@ -0,0 +1,96 @@ @@ -0,0 +1,96 @@
page {
background-color: rgba(246, 246, 246, 1);
}
.notice {
padding: 16rpx 64rpx;
font-size: 28rpx;
text-align: center;
line-height: 40rpx;
color: rgba(247, 121, 0, 1);
background-color: rgba(255, 247, 232, 1);
}
.page {
padding: 28rpx 32rpx;
.list {
.list-item {
margin-bottom: 24rpx;
padding: 32rpx;
border-radius: 16rpx;
background-color: #fff;
.user {
display: flex;
gap: 16rpx;
.avatar {
width: 92rpx;
height: 92rpx;
border-radius: 50%;
}
.wrap {
flex: 1;
.w-header {
display: flex;
line-height: 44rpx;
.name {
margin-right: 16rpx;
font-size: 32rpx;
color: rgba(20, 21, 21, 1);
font-weight: bold;
}
.label {
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
}
}
.w-footer {
line-height: 32rpx;
font-size: 28rpx;
color: rgba(133, 133, 133, 1);
.tag {
padding: 0 8rpx;
display: inline-block;
font-size: 28rpx;
line-height: 32rpx;
color: #fff;
background: #00b4c5;
border-radius: 4rpx 4rpx 4rpx 4rpx;
}
}
}
}
.photo-wrap {
padding: 32rpx 0 0;
display: grid;
gap: 24rpx;
grid-template-columns: repeat(3, 1fr);
.photo {
display: block;
width: 100%;
height: 134rpx;
border-radius: 16rpx;
}
}
.l-footer {
padding-top: 32rpx;
display: flex;
justify-content: space-between;
align-items: center;
.date {
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
}
.btn {
flex-shrink: 0;
width: 126rpx;
height: 48rpx;
font-size: 28rpx;
color: rgba(255, 255, 255, 1);
text-align: center;
line-height: 48rpx;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 64rpx 64rpx 64rpx 64rpx;
}
}
}
}
}

17
src/module1/pages/auditDoctorList/index.ts

@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
const _app = getApp<IAppOption>()
Page({
data: {},
onLoad() {},
handlePreview(e: WechatMiniprogram.BaseEvent) {
const { url } = e.currentTarget.dataset
wx.previewImage({
urls: [url],
})
},
handleDetail() {
wx.navigateTo({
url: '/module1/pages/auditDoctorDetail/index',
})
},
})

41
src/module1/pages/auditDoctorList/index.wxml

@ -0,0 +1,41 @@ @@ -0,0 +1,41 @@
<view class="notice">10位医生待您审核</view>
<view class="page">
<view class="list">
<view class="list-item" bind:tap="handleDetail">
<view class="user">
<image
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
></image>
<view class="wrap">
<view class="w-header">
<view class="name">刘青</view>
<view class="label">主任医院</view>
</view>
<view class="w-footer">
北医三院
<view class="tag">三甲</view>
</view>
</view>
</view>
<view class="photo-wrap">
<image
class="photo"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
mode="aspectFill"
catch:tap="handlePreview"
data-url="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
wx:for="{{3}}"
wx:for-item="photo"
wx:for-index="photo-index"
wx:key="photo-index"
></image>
</view>
<view class="l-footer">
<view class="date">提交时间:2024-09-19</view>
<view class="btn">审核</view>
</view>
</view>
</view>
</view>

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

@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
{
"navigationBarTitleText": "指派医生",
"navigationStyle": "default",
"usingComponents": {
"popupDoctorDetail": "/components/popupDoctorDetail/index",
"doctorAvatar":"/components/doctorAvatar/index"
}
}

180
src/module1/pages/setDoctor/index.scss

@ -0,0 +1,180 @@ @@ -0,0 +1,180 @@
page {
background-color: rgba(246, 246, 246, 1);
}
.page {
.header {
padding: 32rpx 32rpx 2rpx;
background-color: #fff;
.tip {
font-size: 28rpx;
color: rgba(20, 21, 21, 1);
.link {
color: rgba(0, 180, 197, 1);
}
}
.search {
margin-top: 32rpx;
padding: 20rpx 30rpx;
display: flex;
align-items: center;
gap: 20rpx;
border-radius: 122rpx;
background-color: rgba(246, 246, 246, 1);
.icon {
width: 32rpx;
height: 32rpx;
}
.input {
flex: 1;
text-align: center;
font-size: 28rpx;
color: #000;
}
.place-input {
color: rgba(205, 205, 205, 1);
}
}
.options {
display: flex;
align-items: center;
justify-content: space-between;
.option-wrap {
flex: 1;
.option {
padding: 30rpx 10rpx;
display: flex;
align-items: center;
justify-content: center;
.icon {
width: 24rpx;
height: 24rpx;
}
}
}
}
}
.list {
padding: 26rpx 32rpx;
.list-item {
display: flex;
align-items: center;
.radio {
transform: scale(0.7);
}
.card {
padding: 32rpx;
border-radius: 16rpx;
background-color: #fff;
display: flex;
gap: 24rpx;
.avatar {
flex-shrink: 0;
position: relative;
width: 112rpx;
height: 112rpx;
}
.wrap {
.w-header {
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);
}
}
.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: 14rpx;
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);
}
}
}
}
}
}
.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;
gap: 26rpx;
align-items: center;
justify-content: space-between;
background-color: #fff;
box-shadow: 0 -10rpx 20rpx rgba(0, 0, 0, 0.1);
.cancel {
width: 230rpx;
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 {
flex: 1;
height: 88rpx;
text-align: center;
line-height: 88rpx;
font-size: 32rpx;
color: #fff;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 96rpx;
}
}
}

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

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

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

@ -0,0 +1,74 @@ @@ -0,0 +1,74 @@
<view class="page">
<view class="header">
<view class="tip">
您将为
<text class="link">王欢医生</text>
指派核心医生,帮助TA一起反馈病例
</view>
<view class="search">
<image class="icon" src="/images/icon-search.png"></image>
<input class="input" placeholder-class="place-input" placeholder="搜索医生名" type="text" />
</view>
<view class="options">
<picker class="option-wrap">
<view class="option">
<text class="option-text">医院</text>
<image class="icon" src="/images/triangle-down.png"></image>
</view>
</picker>
<picker class="option-wrap">
<view class="option">
<text class="option-text">地区</text>
<image class="icon" src="/images/triangle-down.png"></image>
</view>
</picker>
<picker class="option-wrap">
<view class="option">
<text class="option-text">医生专长</text>
<image class="icon" src="/images/triangle-down.png"></image>
</view>
</picker>
</view>
</view>
<view class="container">
<view class="list">
<view class="list-item">
<radio class="radio"></radio>
<view class="card">
<doctorAvatar
class="avatar"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
level="{{3}}"
></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>
<view class="footer">
<view class="cancel">返回</view>
<view class="submit" bind:tap="handleSubmit">指派并审核通过</view>
</view>
</view>
<popupDoctorDetail show="{{true}}"></popupDoctorDetail>

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

@ -156,7 +156,7 @@ @@ -156,7 +156,7 @@
box-shadow: 0 -10rpx 20rpx rgba(0, 0, 0, 0.1);
.cancel {
width: 332rpx;
height: 88rpx;
height: 84rpx;
text-align: center;
line-height: 88rpx;
font-size: 32rpx;

3
src/pages/cases/index.json

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

0
src/pages/cases/index.scss

6
src/pages/cases/index.ts

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

2
src/pages/cases/index.wxml

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

8
src/pages/home/index.json

@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
{
"usingComponents": {
"homeLevel1": "../../echart/components/homeLevel1/index"
},
"componentPlaceholder": {
"homeLevel1": "view"
}
}

7
src/pages/home/index.scss

@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
.page {
.logo {
margin-left: 32rpx;
width: 160rpx;
height: 36rpx;
}
}

6
src/pages/home/index.ts

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

7
src/pages/home/index.wxml

@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
<view
class="page"
style="background: url({{imageUrl}}home-bg.png?r={{Timestamp}}) no-repeat top center/100% 1624rpx;padding-top:{{menuButtonInfo.bottom}}rpx;"
>
<image class="logo" src="/images/home-logo.png"></image>
<homeLevel1></homeLevel1>
</view>

46
src/utils/component.ts

@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
/**
* 使
* 1app.js const page = require('xx/xx/page);
* 2app.js onLaunch Page = page
*/
const originalComponent = Component
function component(
config: WechatMiniprogram.Component.Instance<
WechatMiniprogram.Component.DataOption,
WechatMiniprogram.Component.PropertyOption,
WechatMiniprogram.Component.MethodOption,
WechatMiniprogram.Component.BehaviorOption
>,
) {
const originalOnAttached = config.attached
config.attached = function (options) {
setImageParams(this)
getApp().getMenuInfo(this)
if (originalOnAttached) {
originalOnAttached.call(this, options)
}
}
return originalComponent(config)
}
function setImageParams(
currPage: WechatMiniprogram.Component.Instance<
WechatMiniprogram.Component.DataOption,
WechatMiniprogram.Component.PropertyOption,
WechatMiniprogram.Component.MethodOption,
WechatMiniprogram.Component.BehaviorOption
>,
) {
const date = new Date()
const Timestamp = date.getTime()
currPage.setData({
imageUrl: getApp().globalData.imageUrl,
Timestamp,
})
}
export default component

46
src/utils/page.ts

@ -4,28 +4,23 @@ @@ -4,28 +4,23 @@
* 2app.js onLaunch Page = page
*/
const originalPage = Page;
const originalPage = Page
function page(
config: WechatMiniprogram.Page.Instance<
WechatMiniprogram.IAnyObject,
WechatMiniprogram.IAnyObject
>,
) {
const originalOnLoad = config.onLoad;
function page(config: WechatMiniprogram.Page.Instance<WechatMiniprogram.IAnyObject, WechatMiniprogram.IAnyObject>) {
const originalOnLoad = config.onLoad
config.onLoad = function (options) {
setImageParams(this);
setImageParams(this)
getApp().getMenuInfo(this)
if (originalOnLoad) {
originalOnLoad.call(this, options);
originalOnLoad.call(this, options)
}
};
}
const originalOnShareAppMessage = config.onShareAppMessage;
const originalOnShareAppMessage = config.onShareAppMessage
config.onShareAppMessage = function (options) {
if (originalOnShareAppMessage) {
return originalOnShareAppMessage.call(this, options);
return originalOnShareAppMessage.call(this, options)
} else {
// const date = new Date();
// const Timestamp = date.getTime();
@ -35,28 +30,25 @@ function page( @@ -35,28 +30,25 @@ function page(
// const url = currentPage.route;
return {
title: "武田",
path: "/pages/start/index",
title: '武田',
path: '/pages/start/index',
// imageUrl: `${getApp().globalData.imageUrl}1/1.png?t=${Timestamp}`,
};
}
}
};
}
return originalPage(config);
return originalPage(config)
}
function setImageParams(
currPage: WechatMiniprogram.Page.Instance<
WechatMiniprogram.IAnyObject,
WechatMiniprogram.IAnyObject
>,
currPage: WechatMiniprogram.Page.Instance<WechatMiniprogram.IAnyObject, WechatMiniprogram.IAnyObject>,
) {
const date = new Date();
const Timestamp = date.getTime();
const date = new Date()
const Timestamp = date.getTime()
currPage.setData({
imageUrl: getApp().globalData.imageUrl,
Timestamp: Timestamp,
});
Timestamp,
})
}
export default page;
export default page

52
tsconfig.json

@ -1,44 +1,30 @@ @@ -1,44 +1,30 @@
{
"compilerOptions": {
"target": "ES2020",
"lib": ["ES2020"],
"experimentalDecorators": true,
"baseUrl": ".",
"strictNullChecks": true,
"noImplicitAny": true,
"module": "CommonJS",
"target": "ES2020",
"paths": {
"@vant/weapp/*": ["path/to/node_modules/@vant/weapp/dist/*"],
"@/*": ["src/*"]
},
"typeRoots": ["./typings"],
"types": ["miniprogram-api-typings"],
"allowJs": true,
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"experimentalDecorators": true,
"noImplicitThis": true,
"noImplicitReturns": true,
"strict": true,
"strictNullChecks": true,
"strictPropertyInitialization": true,
"alwaysStrict": true,
"noFallthroughCasesInSwitch": true,
"noImplicitAny": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"strict": true,
"strictPropertyInitialization": true,
"lib": [
"ES2020"
],
"types": [
"miniprogram-api-typings"
],
"typeRoots": [
"./typings"
],
"paths": {
"@vant/weapp/*": [
"path/to/node_modules/@vant/weapp/dist/*"
],
"@/*": [
"src/*"
]
},
"allowSyntheticDefaultImports": true,
"esModuleInterop": true
},
"include": [
"./**/*.ts"
],
"exclude": [
"node_modules"
]
"include": ["./**/*.ts"],
"exclude": ["node_modules"]
}

Loading…
Cancel
Save