Browse Source

页面开发

main
kola 4 months ago
parent
commit
5a8b29ef0f
  1. 1
      dist.sh
  2. 3
      project.private.config.json
  3. 57
      src/components/customAudioBar/index.ts
  4. 7
      src/components/customAudioBar/index.wxml
  5. 7
      src/components/customRecord/index.scss
  6. 90
      src/components/customRecord/index.ts
  7. 4
      src/components/customRecord/index.wxml
  8. 52
      src/custom-tab-bar/index.scss
  9. 7
      src/custom-tab-bar/index.ts
  10. 15
      src/custom-tab-bar/index.wxml
  11. 93
      src/echart/components/homeLevel1/index.scss
  12. 9
      src/echart/components/homeLevel1/index.ts
  13. 66
      src/echart/components/homeLevel1/index.wxml
  14. 89
      src/echart/components/homeLevel2/index.scss
  15. 43
      src/echart/components/homeLevel2/index.wxml
  16. 54
      src/echart/components/homeLevel3/index.scss
  17. 28
      src/echart/components/homeLevel3/index.wxml
  18. 79
      src/echart/components/homeLevel4/index.scss
  19. 42
      src/echart/components/homeLevel4/index.wxml
  20. BIN
      src/images/audio-left.gif
  21. BIN
      src/images/audio-left.png
  22. BIN
      src/images/audio-right.gif
  23. BIN
      src/images/audio-right.png
  24. BIN
      src/images/daub.gif
  25. BIN
      src/images/empty-3.png
  26. BIN
      src/images/empty-4.png
  27. BIN
      src/images/home-bind-doctor-bg.png
  28. BIN
      src/images/icon-circle-add.png
  29. BIN
      src/images/icon-gather.png
  30. BIN
      src/images/icon-picture.png
  31. BIN
      src/images/icon-video-play.png
  32. BIN
      src/images/icon-video.png
  33. BIN
      src/images/icon-voice.png
  34. BIN
      src/images/new.png
  35. BIN
      src/images/quality.png
  36. BIN
      src/images/wave-white.gif
  37. 4
      src/module1/pages/casesDetail/index.json
  38. 342
      src/module1/pages/casesDetail/index.scss
  39. 1
      src/module1/pages/casesDetail/index.ts
  40. 101
      src/module1/pages/casesDetail/index.wxml
  41. 256
      src/module1/pages/chatRoom/index.scss
  42. 392
      src/module1/pages/chatRoom/index.ts
  43. 140
      src/module1/pages/chatRoom/index.wxml
  44. 22
      src/module1/pages/entryCases/index.scss
  45. 22
      src/module1/pages/entryCases/index.ts
  46. 12
      src/module1/pages/entryCases/index.wxml
  47. 13
      src/pages/cases/index.scss
  48. 6
      src/pages/cases/index.ts
  49. 9
      src/pages/cases/index.wxml
  50. 6
      src/pages/chatRoomList/index.ts
  51. 3
      src/pages/home/index.json
  52. 39
      src/pages/home/index.scss
  53. 9
      src/pages/home/index.ts
  54. 17
      src/pages/home/index.wxml
  55. 6
      src/pages/my/index.ts

1
dist.sh

@ -2,4 +2,3 @@ @@ -2,4 +2,3 @@
cd ./src/images/ || exit
svn add . --no-ignore --force
svn ci -m "版本更新"
exit

3
project.private.config.json

@ -2,7 +2,8 @@ @@ -2,7 +2,8 @@
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
"projectname": "wutian-miniprogram",
"setting": {
"compileHotReLoad": true
"compileHotReLoad": true,
"urlCheck": false
},
"condition": {
"miniprogram": {

57
src/components/customAudioBar/index.ts

@ -5,15 +5,66 @@ Component({ @@ -5,15 +5,66 @@ Component({
/**
*
*/
properties: {},
properties: {
url: {
type: String,
value:
'https://circlehbsaas.oss-cn-beijing.aliyuncs.com/audio/20240907757_tmp_acf4f18c59553a8d2d9f74e173a16328.m4a.mp3',
},
time: {
type: String,
value: '',
},
},
/**
*
*/
data: {},
data: {
play: false,
innerAudioContext: null as WechatMiniprogram.InnerAudioContext | null,
},
lifetimes: {
attached() {
this.setData({
innerAudioContext: wx.createInnerAudioContext(),
})
},
},
/**
*
*/
methods: {},
methods: {
handlePlay() {
const { url, play, innerAudioContext } = this.data
if (innerAudioContext) {
if (play) {
innerAudioContext.stop()
return
}
innerAudioContext.stop()
innerAudioContext.src = url
innerAudioContext.play()
this.setData({
play: true,
})
innerAudioContext.onEnded(() => {
this.setData({
play: false,
})
})
}
},
handlePause() {
const { innerAudioContext } = this.data
if (innerAudioContext) {
innerAudioContext.pause()
this.setData({
play: false,
})
}
},
},
})

7
src/components/customAudioBar/index.wxml

@ -1,11 +1,12 @@ @@ -1,11 +1,12 @@
<view class="audio-bar">
<view class="btn">
<image class="icon" src="/images/audio-line-play.png"></image>
<!-- <image class="icon" src="/images/audio-line-pause.png.png"></image> -->
<image bind:tap="handlePause" wx:if="{{play}}" class="icon" src="/images/audio-line-pause.png"></image>
<image bind:tap="handlePlay" wx:else class="icon" src="/images/audio-line-play.png"></image>
</view>
<view class="container">
<view class="hide">
<image class="wave" src="/images/wave.png"></image>
<image wx:if="{{play}}" class="wave" src="/images/wave.gif"></image>
<image wx:else class="wave" src="/images/wave.png"></image>
</view>
</view>
<view class="time">45”</view>

7
src/components/customRecord/index.scss

@ -27,10 +27,11 @@ @@ -27,10 +27,11 @@
display: flex;
align-items: center;
.wave {
width: 260rpx;
height: 60rpx;
width: 230rpx;
height: 68rpx;
}
.time {
margin-left: 26rpx;
font-size: 28rpx;
color: rgba(255, 255, 255, 1);
}
@ -81,7 +82,7 @@ @@ -81,7 +82,7 @@
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;
animation: grow-bp 0.6s ease-in-out infinite;
@keyframes grow-bp {
0% {
padding: 0;

90
src/components/customRecord/index.ts

@ -1,3 +1,5 @@ @@ -1,3 +1,5 @@
import { isQualifiedName } from 'typescript'
const _app = getApp<IAppOption>()
// pages/story/a.ts
@ -13,27 +15,111 @@ Component({ @@ -13,27 +15,111 @@ Component({
data: {
startShow: false,
show: false,
recorderManager: null as null | WechatMiniprogram.RecorderManager,
time: 0,
},
lifetimes: {
attached() {
const recorderManager = wx.getRecorderManager()
this.setData({
recorderManager,
})
this.recorderManagerListen(recorderManager)
},
},
/**
*
*/
methods: {
handleStart() {
this.setData({
startShow: true,
this.checkRecordPermission(() => {
this.setData({
startShow: true,
})
})
},
handleShow() {
const { recorderManager } = this.data
this.setData({
show: true,
})
recorderManager?.start({
format: 'mp3',
})
},
handleHide() {
const { recorderManager } = this.data
recorderManager?.stop()
this.setData({
startShow: false,
show: false,
})
},
recorderManagerListen(recorderManager: WechatMiniprogram.RecorderManager) {
recorderManager.onError(() => {
wx.showToast({
title: '录音失败',
icon: 'none',
})
})
recorderManager.onStart(() => {
this.handleTiem()
})
recorderManager.onStop((res) => {
this.handleHide()
console.log(res)
})
},
checkRecordPermission(callback: () => void) {
wx.getSetting({
success(res) {
if (!res.authSetting['scope.record']) {
wx.authorize({
scope: 'scope.record',
success() {
// 用户已同意授权
},
fail() {
// 用户拒绝了授权
wx.showModal({
title: '提示',
content: '需要获取录音权限,请点击确定进入设置页面进行授权。',
showCancel: false,
success(res) {
if (res.confirm) {
wx.openSetting({
success(res) {
// 用户在设置页面设置了录音权限
if (res.authSetting['scope.record']) {
// 用户在设置页面设置了录音权限
} else {
// 用户在设置页面未设置录音权限
}
},
})
}
},
})
},
})
} else {
// 已经有录音权限
callback()
}
},
})
},
handleTiem() {
const time = setTimeout(() => {
clearInterval(time)
if (!this.data.show) return
this.setData({
time: this.data.time + 1,
})
console.log(this.data.time)
this.handleTiem()
}, 1000)
},
},
})

4
src/components/customRecord/index.wxml

@ -8,8 +8,8 @@ @@ -8,8 +8,8 @@
<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>
<image class="wave" src="/images/wave-white.gif"></image>
<view class="time">{{time}}”</view>
</view>
<view class="record-page-icon-wrap">
<image class="record-page-icon" src="/images/record.png" mode="scaleToFill"></image>

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

@ -15,6 +15,58 @@ @@ -15,6 +15,58 @@
width: 94rpx;
height: 94rpx;
}
.popup-tip {
padding: 22rpx 48rpx;
position: absolute;
top: -50rpx;
left: 50%;
transform: translate(-50%, -100%);
border-radius: 16rpx;
background-color: rgba(20, 21, 21, 0.76);
.content {
text-align: center;
font-size: 28rpx;
color: #fff;
white-space: nowrap;
line-height: 32rpx;
.plus {
font-size: 52rpx;
font-weight: bold;
}
}
.pt-footer {
margin-top: 16rpx;
display: flex;
align-items: center;
justify-content: center;
gap: 24rpx;
.cancel {
padding: 8rpx 28rpx;
font-size: 24rpx;
color: rgba(255, 255, 255, 1);
}
.ok {
padding: 8rpx 28rpx;
font-size: 24rpx;
color: rgba(20, 21, 21, 1);
line-height: 32rpx;
border-radius: 80rpx;
background-color: #fff;
}
}
&::after {
position: absolute;
content: '';
bottom: -10rpx;
left: 50%;
transform: translateX(-50%);
width: 0;
height: 0;
border-style: solid;
border-width: 12rpx 12rpx 0 12rpx;
border-color: rgba(20, 21, 21, 0.76) transparent transparent transparent;
}
}
}
.tab-item {
flex: 1;

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

@ -11,18 +11,22 @@ Component({ @@ -11,18 +11,22 @@ Component({
*
*/
data: {
showEntryCase: false,
active: 0,
tabbar: [
{
path: '/pages/home/index',
name: '首页',
icon: 'tab1.png',
iconActive: 'tab-active1.png',
activeIndex: 1,
},
{
path: '/pages/cases/index',
name: '病历',
icon: 'tab2.png',
iconActive: 'tab-active2.png',
activeIndex: 2,
},
{
custom: true,
@ -33,16 +37,17 @@ Component({ @@ -33,16 +37,17 @@ Component({
name: '聊天室',
icon: 'tab3.png',
iconActive: 'tab-active3.png',
activeIndex: 3,
},
{
path: '/pages/my/index',
name: '我的',
icon: 'tab4.png',
iconActive: 'tab-active3.png',
activeIndex: 4,
},
],
},
attached() {},
/**
*

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

@ -2,8 +2,21 @@ @@ -2,8 +2,21 @@
<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 class="popup-tip" wx:if="{{showEntryCase}}">
<view class="content">
点击
<text class="plus">+</text>
,可录入病历
<view></view>
邀约合作医生一起讨论哦
</view>
<view class="pt-footer">
<view class="cancel">跳过</view>
<view class="ok">去录入</view>
</view>
</view>
</view>
<view class="tab-item {{index===0 &&'active'}}" wx:else bind:tap="handleTab" data-index="{{index}}">
<view class="tab-item {{active===item.activeIndex &&'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>

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

@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
gap: 24rpx;
align-items: center;
.avatar {
flex-shrink: 0;
width: 112rpx;
height: 112rpx;
}
@ -104,6 +105,20 @@ @@ -104,6 +105,20 @@
opacity: 0.5;
}
}
.b-container-none {
position: relative;
z-index: 1;
width: 686rpx;
height: 172rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
color: #fff;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 1rpx solid #ffffff;
}
}
}
.stat {
@ -143,8 +158,47 @@ @@ -143,8 +158,47 @@
}
}
}
.cooperate,
.invite {
.stat-none {
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;
justify-content: space-between;
align-items: center;
padding: 0 38rpx 0;
.none {
width: 102rpx;
height: 102rpx;
}
.tip {
padding: 0 26rpx;
flex: 1;
font-size: 28rpx;
color: rgba(128, 128, 128, 1);
}
.btn {
width: 184rpx;
height: 72rpx;
text-align: center;
line-height: 72rpx;
font-size: 30rpx;
color: rgba(255, 255, 255, 1);
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 44rpx 44rpx 44rpx 44rpx;
}
}
}
.cooperate {
margin-top: 24rpx;
background: linear-gradient(180deg, #f1feff 0%, #ffffff 100%);
border-radius: 16rpx 16rpx 16rpx 16rpx;
@ -269,4 +323,39 @@ @@ -269,4 +323,39 @@
}
}
}
.cooperate-none {
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);
}
}
.none {
padding-bottom: 54rpx;
text-align: center;
.none-img {
width: 240rpx;
height: 200rpx;
}
.content {
margin-top: -70rpx;
text-align: center;
font-size: 32rpx;
color: rgba(153, 153, 153, 1);
line-height: 44rpx;
.sub-content{
font-size: 28rpx;
}
}
}
}
}

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

@ -13,8 +13,6 @@ Component({ @@ -13,8 +13,6 @@ Component({
data: {
fold1: false,
foldHeight1: 10000,
fold2: false,
foldHeight2: 10000,
},
attached() {
@ -27,11 +25,9 @@ Component({ @@ -27,11 +25,9 @@ Component({
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,
})
})
},
@ -40,10 +36,5 @@ Component({ @@ -40,10 +36,5 @@ Component({
fold1: !this.data.fold1,
})
},
toggleFold2() {
this.setData({
fold2: !this.data.fold2,
})
},
},
})

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

@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
<view class="banner">
<view class="title">待处理事项</view>
<view class="bg">
<view class="b-container">
<view class="b-container" wx:if="{{true}}">
<view class="item">
<view class="name">病历更新</view>
<view class="num">27</view>
@ -31,11 +31,13 @@ @@ -31,11 +31,13 @@
<view class="num">1</view>
</view>
</view>
<view class="b-container-none" wx:else>暂时没有需要处理的事项哦~</view>
</view>
</view>
<view
class="stat"
style="background: url({{imageUrl}}home-stat-bg.png?r={{Timestamp}}) no-repeat top center/100% 100%;"
wx:if="{{true}}"
>
<view class="title">我提交的病历</view>
<view class="s-container">
@ -69,7 +71,19 @@ @@ -69,7 +71,19 @@
</view>
</view>
</view>
<view class="cooperate">
<view
class="stat-none"
style="background: url({{imageUrl}}home-stat-bg.png?r={{Timestamp}}) no-repeat top center/100% 100%;"
wx:else
>
<view class="title">我提交的病历</view>
<view class="s-container">
<image class="none" src="/images/empty-3.png"></image>
<view class="tip">还没有提交病历</view>
<view class="btn">提交病历</view>
</view>
</view>
<view class="cooperate" wx:if="{{true}}">
<view class="cooperate-header">
<view class="name">我合作的医生(2)</view>
<view class="fold" bind:tap="toggleFold1">
@ -113,47 +127,15 @@ @@ -113,47 +127,15 @@
</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 class="cooperate-none" wx:else>
<view class="cooperate-header">
<view class="name">我合作的医生</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 class="none">
<image class="none-img" src="/images/empty-4.png"></image>
<view class="content">
还没有合作医生哦
<view class="sub-content">合作医生出示邀约码您用微信扫一扫即可绑定</view>
</view>
</view>
</view>

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

@ -144,6 +144,20 @@ @@ -144,6 +144,20 @@
opacity: 0.5;
}
}
.b-container-none {
position: relative;
z-index: 1;
width: 686rpx;
height: 172rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
color: #fff;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 1rpx solid #ffffff;
}
}
}
.stat {
@ -191,6 +205,46 @@ @@ -191,6 +205,46 @@
}
}
}
.stat-none {
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;
justify-content: space-between;
align-items: center;
padding: 0 38rpx 0;
.none {
width: 102rpx;
height: 102rpx;
}
.tip {
padding: 0 26rpx;
flex: 1;
font-size: 28rpx;
color: rgba(128, 128, 128, 1);
}
.btn {
width: 184rpx;
height: 72rpx;
text-align: center;
line-height: 72rpx;
font-size: 30rpx;
color: rgba(255, 255, 255, 1);
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 44rpx 44rpx 44rpx 44rpx;
}
}
}
.cooperate,
.invite {
margin-top: 24rpx;
@ -329,4 +383,39 @@ @@ -329,4 +383,39 @@
}
}
}
.cooperate-none,
.invite-none {
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);
}
}
.none {
padding-bottom: 54rpx;
text-align: center;
.none-img {
width: 240rpx;
height: 200rpx;
}
.content {
margin-top: -70rpx;
text-align: center;
font-size: 32rpx;
color: rgba(153, 153, 153, 1);
line-height: 44rpx;
.sub-content {
font-size: 28rpx;
}
}
}
}
}

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

@ -32,7 +32,7 @@ @@ -32,7 +32,7 @@
<view class="banner">
<view class="title">待处理事项</view>
<view class="bg">
<view class="b-container">
<view class="b-container" wx:if="{{false}}">
<view class="item">
<view class="name">待处理病历</view>
<view class="num">27</view>
@ -50,10 +50,12 @@ @@ -50,10 +50,12 @@
<view class="num">1</view>
</view>
</view>
<view class="b-container-none" wx:else>暂时没有需要处理的事项哦~</view>
</view>
</view>
<view
class="stat"
wx:if="{{false}}"
style="background: url({{imageUrl}}home-stat-bg.png?r={{Timestamp}}) no-repeat top center/100% 100%;"
>
<view class="title">我管理的病历</view>
@ -92,7 +94,19 @@ @@ -92,7 +94,19 @@
</view>
</view>
</view>
<view class="cooperate">
<view
class="stat-none"
style="background: url({{imageUrl}}home-stat-bg.png?r={{Timestamp}}) no-repeat top center/100% 100%;"
wx:else
>
<view class="title">我提交的病历</view>
<view class="s-container">
<image class="none" src="/images/empty-3.png"></image>
<view class="tip">还没有提交病历</view>
<view class="btn">提交病历</view>
</view>
</view>
<view class="cooperate" wx:if="{{false}}">
<view class="cooperate-header">
<view class="name">我合作的医生(2)</view>
<view class="fold" bind:tap="toggleFold1">
@ -136,7 +150,19 @@ @@ -136,7 +150,19 @@
</view>
</view>
</view>
<view class="invite">
<view class="cooperate-none" wx:else>
<view class="cooperate-header">
<view class="name">我合作的医生</view>
</view>
<view class="none">
<image class="none-img" src="/images/empty-4.png"></image>
<view class="content">
还没有合作医生哦
<view class="sub-content">合作医生出示邀约码您用微信扫一扫即可绑定</view>
</view>
</view>
</view>
<view class="invite" wx:if="{{false}}">
<view class="invite-header">
<view class="name">我邀约的医生(1)</view>
<view class="fold" bind:tap="toggleFold2">
@ -181,4 +207,15 @@ @@ -181,4 +207,15 @@
</view>
</view>
</view>
<view class="invite-none" wx:else>
<view class="cooperate-header">
<view class="name">我邀约的医生</view>
</view>
<view class="none">
<image class="none-img" src="/images/empty-4.png"></image>
<view class="content">
还没有邀约医生哦
</view>
</view>
</view>
</view>

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

@ -144,6 +144,20 @@ @@ -144,6 +144,20 @@
opacity: 0.5;
}
}
.b-container-none {
position: relative;
z-index: 1;
width: 686rpx;
height: 172rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
color: #fff;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 1rpx solid #ffffff;
}
}
}
.stat {
@ -191,4 +205,44 @@ @@ -191,4 +205,44 @@
}
}
}
.stat-none {
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;
justify-content: space-between;
align-items: center;
padding: 0 38rpx 0;
.none {
width: 102rpx;
height: 102rpx;
}
.tip {
padding: 0 26rpx;
flex: 1;
font-size: 28rpx;
color: rgba(128, 128, 128, 1);
}
.btn {
width: 184rpx;
height: 72rpx;
text-align: center;
line-height: 72rpx;
font-size: 30rpx;
color: rgba(255, 255, 255, 1);
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 44rpx 44rpx 44rpx 44rpx;
}
}
}
}

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

@ -32,7 +32,7 @@ @@ -32,7 +32,7 @@
<view class="banner">
<view class="title">待处理事项</view>
<view class="bg">
<view class="b-container">
<view class="b-container" wx:if="{{false}}">
<view class="item">
<view class="name">待处理病历</view>
<view class="num">27</view>
@ -48,10 +48,12 @@ @@ -48,10 +48,12 @@
<view class="num">1</view>
</view>
</view>
<view class="b-container-none" wx:else>暂时没有需要处理的事项哦~</view>
</view>
</view>
<view
class="stat"
wx:if="{{false}}"
style="background: url({{imageUrl}}home-stat-bg.png?r={{Timestamp}}) no-repeat top center/100% 100%;"
>
<view class="title">我管理的病历</view>
@ -87,7 +89,20 @@ @@ -87,7 +89,20 @@
</view>
</view>
<view
class="stat-none"
style="background: url({{imageUrl}}home-stat-bg.png?r={{Timestamp}}) no-repeat top center/100% 100%;"
wx:else
>
<view class="title">我管理的病历</view>
<view class="s-container">
<image class="none" src="/images/empty-3.png"></image>
<view class="tip">还没有提交病历</view>
<view class="btn">提交病历</view>
</view>
</view>
<view
class="stat"
wx:if="{{fasle}}"
style="background: url({{imageUrl}}home-stat-bg.png?r={{Timestamp}}) no-repeat top center/100% 100%;"
>
<view class="title">我管理的医生</view>
@ -126,4 +141,15 @@ @@ -126,4 +141,15 @@
</view>
</view>
</view>
<view
class="stat-none"
style="background: url({{imageUrl}}home-stat-bg.png?r={{Timestamp}}) no-repeat top center/100% 100%;"
wx:else
>
<view class="title">我管理的医生</view>
<view class="s-container">
<image class="none" src="/images/empty-3.png"></image>
<view class="tip">还没有邀约的医生</view>
</view>
</view>
</view>

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

@ -97,7 +97,7 @@ @@ -97,7 +97,7 @@
position: relative;
z-index: 1;
padding: 14rpx;
width: 262rpx;
width: 221rpx;
height: 116rpx;
text-align: center;
font-size: 28rpx;
@ -144,6 +144,20 @@ @@ -144,6 +144,20 @@
opacity: 0.5;
}
}
.b-container-none {
position: relative;
z-index: 1;
width: 686rpx;
height: 172rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
color: #fff;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 1rpx solid #ffffff;
}
}
}
.stat {
@ -156,7 +170,7 @@ @@ -156,7 +170,7 @@
top: 0;
left: 0;
padding: 16rpx 24rpx;
font-size: 28rpx;
font-size: 26rpx;
color: #fff;
}
.picker {
@ -205,6 +219,20 @@ @@ -205,6 +219,20 @@
border-right: 1rpx dashed rgba(224, 224, 224, 0.5);
}
}
.s-container-none {
padding: 4rpx 0;
display: flex;
align-items: center;
justify-content: center;
.none {
width: 116rpx;
height: 102rpx;
}
.tip {
font-size: 28rpx;
color: rgba(128, 128, 128, 1);
}
}
}
.department {
margin-top: 24rpx;
@ -257,6 +285,37 @@ @@ -257,6 +285,37 @@
text-align: right;
}
}
.department-none {
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);
}
}
.d-container {
padding: 24rpx;
text-align: center;
.none-img {
width: 240rpx;
height: 200rpx;
}
.none-title {
margin-top: -80rpx;
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
line-height: 44rpx;
}
}
}
.chart-card {
margin-top: 24rpx;
background: linear-gradient(180deg, #f1feff 0%, #ffffff 35%, #ffffff 100%);
@ -284,7 +343,7 @@ @@ -284,7 +343,7 @@
}
}
}
.cahrt {
.chart {
height: 450rpx;
}
.tip {
@ -293,6 +352,20 @@ @@ -293,6 +352,20 @@
color: rgba(153, 153, 153, 1);
text-align: right;
}
.chart-none {
padding: 24rpx;
text-align: center;
.none-img {
width: 240rpx;
height: 200rpx;
}
.none-title {
margin-top: -80rpx;
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
line-height: 44rpx;
}
}
}
.rank {
margin: 24rpx -32rpx 0;

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

@ -32,7 +32,7 @@ @@ -32,7 +32,7 @@
<view class="banner">
<view class="title">待处理事项</view>
<view class="bg">
<view class="b-container">
<view class="b-container" wx:if="{{false}}">
<view class="item">
<view class="name">待处理病历</view>
<view class="num">27</view>
@ -48,6 +48,7 @@ @@ -48,6 +48,7 @@
<view class="num">1</view>
</view>
</view>
<view class="b-container-none" wx:else>暂时没有需要处理的事项哦~</view>
</view>
</view>
<view
@ -65,7 +66,7 @@ @@ -65,7 +66,7 @@
查看全部
<van-icon name="arrow" />
</view>
<view class="s-container">
<view class="s-container" wx:if="{{false}}">
<view class="item">
<view class="name">全部</view>
<view class="num">54</view>
@ -95,6 +96,10 @@ @@ -95,6 +96,10 @@
<view class="num">54</view>
</view>
</view>
<view class="s-container-none" wx:else>
<image class="none" src="/images/empty-3.png"></image>
<view class="tip">暂时还没有医生提交病历哦~</view>
</view>
</view>
<view class="department">
<view class="d-header">
@ -124,6 +129,15 @@ @@ -124,6 +129,15 @@
</view>
<view class="tip">注:一级医生为平台全部医生,不区分科室</view>
</view>
<view class="department-none">
<view class="d-header">
<view class="name">本科室医生</view>
</view>
<view class="d-container">
<image class="none-img" src="/images/empty-4.png"></image>
<view class="none-title">暂无数据</view>
</view>
</view>
<view class="chart-card">
<view class="c-header">
<view class="name">
@ -137,10 +151,16 @@ @@ -137,10 +151,16 @@
</view>
</picker>
</view>
<view class="cahrt">
<view class="chart">
<ec-canvas id="chart1" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
<view class="tip">注:一级医生为平台全部医生,不区分科室</view>
<view class="chart-none">
<view class="d-container">
<image class="none-img" src="/images/empty-4.png"></image>
<view class="none-title">暂无数据</view>
</view>
</view>
</view>
<view class="chart-card">
<view class="c-header">
@ -155,9 +175,15 @@ @@ -155,9 +175,15 @@
</view>
</picker>
</view>
<view class="cahrt">
<view class="chart">
<ec-canvas id="chart2" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
<view class="chart-none">
<view class="d-container">
<image class="none-img" src="/images/empty-4.png"></image>
<view class="none-title">暂无数据</view>
</view>
</view>
</view>
<view class="chart-card">
<view class="c-header">
@ -172,9 +198,15 @@ @@ -172,9 +198,15 @@
</view>
</picker>
</view>
<view class="cahrt">
<view class="chart">
<ec-canvas id="chart3" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
<view class="chart-none">
<view class="d-container">
<image class="none-img" src="/images/empty-4.png"></image>
<view class="none-title">暂无数据</view>
</view>
</view>
</view>
<view class="rank">
<view class="r-header">

BIN
src/images/audio-left.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
src/images/audio-left.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 985 B

BIN
src/images/audio-right.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
src/images/audio-right.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
src/images/daub.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
src/images/empty-3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

BIN
src/images/empty-4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
src/images/home-bind-doctor-bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

BIN
src/images/icon-circle-add.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
src/images/icon-gather.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 B

BIN
src/images/icon-picture.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
src/images/icon-video-play.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
src/images/icon-video.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
src/images/icon-voice.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
src/images/new.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

BIN
src/images/quality.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
src/images/wave-white.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 KiB

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

@ -3,6 +3,8 @@ @@ -3,6 +3,8 @@
"navigationStyle": "default",
"usingComponents": {
"doctorAvatar": "/components/doctorAvatar/index",
"van-dialog": "@vant/weapp/dialog/index"
"van-dialog": "@vant/weapp/dialog/index",
"customAudioBar": "/components/customAudioBar/index",
"van-icon": "@vant/weapp/icon/index"
}
}

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

@ -9,8 +9,21 @@ page { @@ -9,8 +9,21 @@ page {
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #ffffff;
background-color: #fffdfd;
.li-options {
display: flex;
justify-content: space-between;
.quality {
width: 136rpx;
height: 50rpx;
}
.gather {
padding: 12rpx 32rpx;
width: 48rpx;
height: 48rpx;
}
}
.li-header {
padding: 32rpx 32rpx 0 16rpx;
padding: 32rpx 32rpx 0 0;
display: flex;
justify-content: space-between;
&::before {
@ -215,6 +228,295 @@ page { @@ -215,6 +228,295 @@ page {
}
.audio-list {
margin-top: 32rpx;
.audio-row {
display: flex;
gap: 28rpx;
align-items: center;
.audio-bar {
flex: 1;
border-radius: 104rpx;
background-color: #fff;
}
.options {
flex-shrink: 0;
gap: 20rpx;
display: flex;
align-items: center;
.del {
width: 36rpx;
height: 36rpx;
}
.trans {
font-size: 28rpx;
color: rgba(128, 128, 128, 1);
}
}
}
}
.files {
margin-top: 32rpx;
.f-title {
font-size: 32rpx;
color: #000;
font-weight: bold;
line-height: 1;
}
.file-list {
margin-top: 24rpx;
.fl-row {
margin-top: 24rpx;
display: flex;
align-content: inherit;
justify-content: space-between;
.wrap {
flex: 1;
padding: 20rpx 24rpx;
border-radius: 16rpx;
background: #ffffff;
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;
}
}
}
}
}
}
}
.feedback-card {
margin-top: 24rpx;
padding-bottom: 16rpx;
position: relative;
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #ffffff;
background-color: #fffdfd;
.li-options {
margin-bottom: -32rpx;
display: flex;
justify-content: space-between;
.quality {
width: 136rpx;
height: 50rpx;
}
.gather {
padding: 12rpx 32rpx;
width: 48rpx;
height: 48rpx;
}
}
.li-row {
padding: 32rpx 32rpx 16rpx;
display: flex;
justify-content: space-between;
line-height: 32rpx;
.label {
flex-shrink: 0;
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
width: 5em;
}
.content {
flex: 1;
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;
}
}
.fold {
flex-shrink: 0;
display: flex;
align-items: center;
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
.icon {
margin-left: 14rpx;
width: 32rpx;
height: 32rpx;
}
}
.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;
}
}
}
.user {
padding: 16rpx 32rpx;
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: #141515;
}
.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);
}
}
}
}
.cases {
margin: 16rpx 32rpx 0;
padding: 32rpx;
background-color: rgba(246, 246, 246, 1);
border-radius: 16rpx;
.tags {
display: flex;
.t-label {
width: 3em;
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
}
.wrap {
display: flex;
flex-wrap: wrap;
gap: 12rpx;
.tag {
padding: 0 8rpx;
font-size: 22rpx;
color: rgba(0, 180, 197, 1);
line-height: 32rpx;
background: #ffffff;
border-radius: 4rpx 4rpx 4rpx 4rpx;
border: 1rpx solid #bfeff4;
}
}
}
.photos {
margin-top: 32rpx;
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 12rpx;
.photo {
width: 100%;
height: 128rpx;
border-radius: 8rpx;
}
}
.remark {
margin-top: 32rpx;
.r-title {
font-size: 32rpx;
color: rgba(20, 21, 21, 1);
font-weight: bold;
line-height: 1;
}
.r-content {
margin-top: 24rpx;
padding: 32rpx;
font-size: 28rpx;
color: rgba(133, 133, 133, 1);
line-height: 50rpx;
border-radius: 16rpx;
background-color: #fff;
}
}
.audio-list {
margin-top: 32rpx;
.audio-row {
display: flex;
gap: 28rpx;
align-items: center;
.audio-bar {
flex: 1;
border-radius: 104rpx;
background-color: #fff;
}
.options {
flex-shrink: 0;
gap: 20rpx;
display: flex;
align-items: center;
.del {
width: 36rpx;
height: 36rpx;
}
.trans {
font-size: 28rpx;
color: rgba(128, 128, 128, 1);
}
}
}
}
.files {
margin-top: 32rpx;
@ -590,3 +892,41 @@ page { @@ -590,3 +892,41 @@ page {
}
}
}
.dialog6 {
position: relative;
padding: 48rpx 32rpx 32rpx;
.close {
position: absolute;
top: 32rpx;
right: 32rpx;
font-size: 40rpx;
color: #000;
}
.title {
font-size: 36rpx;
color: rgba(20, 21, 21, 1);
font-weight: bold;
text-align: center;
}
.btn1 {
margin-top: 32rpx;
padding: 14rpx;
text-align: center;
font-size: 32rpx;
color: rgba(255, 255, 255, 1);
line-height: 44rpx;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 60rpx 60rpx 60rpx 60rpx;
}
.btn2 {
margin-top: 24rpx;
text-align: center;
padding: 12rpx;
font-size: 32rpx;
color: rgba(1, 180, 197, 1);
line-height: 44rpx;
border-radius: 60rpx 60rpx 60rpx 60rpx;
border: 1px solid #01b4c5;
}
}

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

@ -7,6 +7,7 @@ Page({ @@ -7,6 +7,7 @@ Page({
show3: false,
show4: false,
show5: false,
show6: true,
},
onLoad() {},
})

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

@ -56,7 +56,91 @@ @@ -56,7 +56,91 @@
</view>
</view>
<view class="audio-list">
<view class="audio-row">音频条,占位</view>
<view class="audio-row">
<customAudioBar class="audio-bar"></customAudioBar>
<view class="options">
<view class="trans">转文字</view>
</view>
</view>
</view>
<view class="files">
<view class="f-title">病历相关文件</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-eye.png"></image>
<image class="icon" src="/images/icon-download.png"></image>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="feedback-card">
<view class="li-options">
<image class="quality" src="/images/new.png" mode="scaleToFill"></image>
<image class="gather" src="/images/icon-gather.png"></image>
</view>
<view class="li-row">
<view class="label">提交时间</view>
<view class="content">2024-02-09 12:04:23</view>
<view class="fold">
收起
<image class="icon" src="/images/fold-down.png"></image>
</view>
</view>
<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="cases">
<view class="tags">
<view class="t-label">标签</view>
<view class="wrap">
<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"
mode="aspectFill"
bind:tap="handleImagePreview"
data-url="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
></image>
</view>
<view class="remark">
<view class="r-title">病历备注</view>
<view class="r-content">
此患者已经做了基因检测,根据基因检测的流程判断已排除,但是其他的检测档案指向性较强,请帮忙判断
</view>
</view>
<view class="audio-list">
<view class="audio-row">
<customAudioBar class="audio-bar"></customAudioBar>
<view class="options">
<view class="trans">转文字</view>
</view>
</view>
</view>
<view class="files">
<view class="f-title">病历相关文件</view>
@ -243,3 +327,18 @@ @@ -243,3 +327,18 @@
</view>
</view>
</van-dialog>
<van-dialog
use-slot
title=""
show="{{ show6 }}"
bind:close="onClose"
show-confirm-button="{{false}}"
confirm-button-color="rgba(0, 180, 197, 1)"
>
<view class="dialog6">
<van-icon name="cross" class="close" />
<view class="title">确认创建聊天室</view>
<view class="btn1">邀约并创建</view>
<view class="btn2">直接创建</view>
</view>
</van-dialog>

256
src/module1/pages/chatRoom/index.scss

@ -2,7 +2,13 @@ page { @@ -2,7 +2,13 @@ page {
background-color: rgba(246, 246, 246, 1);
}
.page {
.header {
height: 100vh;
overflow: hidden;
display: flex;
flex-direction: column;
justify-content: space-between;
.page-header {
flex-shrink: 0;
padding: 26rpx 32rpx 30rpx;
background-color: #fff;
border-radius: 16rpx;
@ -17,6 +23,7 @@ page { @@ -17,6 +23,7 @@ page {
gap: 28rpx;
align-items: flex-start;
.photos {
position: relative;
padding: 4rpx;
display: grid;
grid-template-columns: repeat(2, 40rpx);
@ -28,6 +35,19 @@ page { @@ -28,6 +35,19 @@ page {
width: 100%;
height: 100%;
}
.sealed {
position: absolute;
bottom: -40rpx;
left: 50%;
transform: translateX(-50%);
white-space: nowrap;
font-size: 20rpx;
color: rgba(133, 133, 133, 1);
line-height: 1;
padding: 6rpx 16rpx;
border-radius: 48rpx;
background-color: rgba(224, 224, 224, 1);
}
}
.inner {
flex: 1;
@ -79,4 +99,238 @@ page { @@ -79,4 +99,238 @@ page {
}
}
}
.page-container {
flex: 1;
overflow: hidden;
.scroll-view {
height: 100%;
.date {
padding-top: 20rpx;
font-size: 28rpx;
color: rgba(173, 179, 180, 1);
text-align: center;
}
.doctor {
padding: 15rpx 30rpx;
display: flex;
.avatar {
padding-right: 16rpx;
flex-shrink: 0;
.a-img {
width: 84rpx;
height: 84rpx;
border-radius: 50%;
}
}
.d-container {
flex: 1;
margin-right: 74rpx;
display: flex;
flex-direction: column;
align-items: start;
.user {
padding: 12rpx 0;
font-size: 28rpx;
color: rgba(153, 153, 153, 1);
line-height: 32rpx;
}
.message {
margin-bottom: 32rpx;
padding: 26rpx 32rpx;
background-color: #fff;
border-radius: 0 32rpx 32rpx;
font-size: 32rpx;
color: rgba(40, 48, 49, 1);
white-space: pre-line;
}
.photo {
margin-bottom: 32rpx;
width: 234rpx;
.p-img {
width: 100%;
height: auto;
border-radius: 16rpx;
}
}
.video {
margin-bottom: 32rpx;
position: relative;
width: 452rpx;
height: 254rpx;
.v-img {
width: 100%;
height: 100%;
border-radius: 16rpx;
}
.play {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 84rpx;
height: 84rpx;
}
}
.audio {
margin-bottom: 32rpx;
padding: 22rpx 24rpx;
border-radius: 0 32rpx 32rpx;
background-color: #fff;
min-width: 218rpx;
font-size: 32rpx;
color: rgba(40, 48, 49, 1);
display: flex;
align-items: center;
gap: 12rpx;
box-sizing: border-box;
.icon {
width: 32rpx;
height: 40rpx;
}
}
}
}
.patient {
padding: 15rpx 30rpx;
display: flex;
justify-content: flex-end;
.avatar {
padding-left: 16rpx;
flex-shrink: 0;
.a-img {
width: 84rpx;
height: 84rpx;
border-radius: 50%;
}
}
.p-container {
flex: 1;
margin-left: 74rpx;
display: flex;
flex-direction: column;
align-items: flex-end;
.message {
margin-bottom: 32rpx;
padding: 26rpx 32rpx;
background: #67baca;
border-radius: 32rpx 0 32rpx 32rpx;
font-size: 32rpx;
color: #fff;
white-space: pre-line;
}
.photo {
margin-bottom: 32rpx;
width: 234rpx;
.p-img {
width: 100%;
height: auto;
border-radius: 16rpx;
}
}
.video {
margin-bottom: 32rpx;
position: relative;
width: 452rpx;
height: 254rpx;
.v-img {
width: 100%;
height: 100%;
border-radius: 16rpx;
}
.play {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 84rpx;
height: 84rpx;
}
}
.audio {
margin-bottom: 32rpx;
padding: 22rpx 24rpx;
border-radius: 32rpx 0 32rpx 32rpx;
background: #67baca;
min-width: 218rpx;
font-size: 32rpx;
color: #fff;
display: flex;
align-items: center;
justify-content: flex-end;
gap: 12rpx;
box-sizing: border-box;
.icon {
width: 32rpx;
height: 40rpx;
}
}
}
}
.place {
height: 10vh;
}
}
}
.page-footer {
flex-shrink: 0;
background-color: #fff;
.header {
padding: 32rpx;
display: flex;
gap: 12rpx;
align-items: center;
justify-content: space-between;
.icon {
width: 48rpx;
height: 48rpx;
}
.input {
padding: 16rpx 32rpx;
flex: 1;
background: #f6f6f6;
border-radius: 212rpx 212rpx 212rpx 212rpx;
font-size: 28rpx;
color: #000;
}
.place-input {
color: rgba(205, 205, 205, 1);
}
.icon-add {
width: 48rpx;
height: 48rpx;
}
}
.fold-container {
padding: 0 44rpx;
display: flex;
gap: 24rpx 72rpx;
max-height: 0;
overflow: hidden;
transition: max-height 0.3s;
&.unfold {
max-height: 300rpx;
}
.f-item {
padding: 16rpx 0 calc(32rpx + env(safe-area-inset-bottom));
.icon {
padding: 32rpx;
width: 48rpx;
height: 48rpx;
border-radius: 24rpx;
background-color: rgba(246, 246, 246, 1);
}
.name {
text-align: center;
margin-top: 12rpx;
font-size: 24rpx;
color: rgba(133, 133, 133, 1);
}
}
}
}
}
#video {
width: 0;
height: 0;
}

392
src/module1/pages/chatRoom/index.ts

@ -1,6 +1,390 @@ @@ -1,6 +1,390 @@
const _app = getApp<IAppOption>();
import dayjs from 'dayjs'
const _app = getApp<IAppOption>()
interface IMessageItem {
msgId: string
msgContentType: '1' | '2' | '3' | '4' // 1:文本 4: 语音
msgContent: any
msgVisitTime: string
msgFromType: '1' | '2' // 1: 患者 2: 医生
isPlay?: boolean
welcomeMsg?: {
hotQuestion: Item[]
}
msgCreateTime: string // 消息创建时间
msgCreateTimeName?: string // 消息创建时间
showTime?: boolean
}
interface Item {
questionId: string
question: string
}
Page({
data: {},
onLoad() {},
});
data: {
fold: true,
scrollTop: 0,
scrollIntoView: '',
doctorDetail: {} as any,
questionActive: 0,
questionList: [] as any,
questionActiveList: [] as Item[],
isLoad: false,
isFinish: false,
messageList: [
{
msgId: '686',
msgContentType: '2',
msgContent: '重症肌无力患者复查的频率取决于多种因素',
welcomeMsg: '',
msgVisitTime: '',
msgFromType: '2',
msgCreateTime: '2024-10-10 09:37:40',
},
{
msgId: '686',
msgContentType: '3',
msgContent: '重症肌无力患者复查的频率取决于多种因素',
welcomeMsg: '',
msgVisitTime: '',
msgFromType: '2',
msgCreateTime: '2024-10-10 09:37:40',
},
{
msgId: '686',
msgContentType: '2',
msgContent: '重症肌无力患者复查的频率取决于多种因素',
welcomeMsg: '',
msgVisitTime: '',
msgFromType: '1',
msgCreateTime: '2024-10-10 09:37:40',
},
{
msgId: '686',
msgContentType: '3',
msgContent: '重症肌无力患者复查的频率取决于多种因素',
welcomeMsg: '',
msgVisitTime: '',
msgFromType: '1',
msgCreateTime: '2024-10-10 09:37:40',
},
{
msgId: '681',
msgContentType: '1',
msgContent: '重症肌无力是否有遗传性?',
welcomeMsg: '',
msgVisitTime: '',
msgFromType: '1',
msgCreateTime: '2024-10-10 09:37:17',
},
{
msgId: '681',
msgContentType: '1',
msgContent: '重症肌无力是否有遗传性?',
welcomeMsg: '',
msgVisitTime: '',
msgFromType: '1',
msgCreateTime: '2024-10-10 09:37:17',
},
{
msgId: '483',
msgContentType: '4',
msgContent:
'[{"duration":8,"url":"https://circlehbsaas.oss-cn-beijing.aliyuncs.com/audio/20240907757_tmp_acf4f18c59553a8d2d9f74e173a16328.m4a.mp3"}]',
welcomeMsg: '',
msgVisitTime: '',
msgFromType: '2',
msgCreateTime: '2024-10-08 15:24:19',
},
{
msgId: '483',
msgContentType: '4',
msgContent:
'[{"duration":8,"url":"https://circlehbsaas.oss-cn-beijing.aliyuncs.com/audio/20240907757_tmp_acf4f18c59553a8d2d9f74e173a16328.m4a.mp3"}]',
welcomeMsg: '',
msgVisitTime: '',
msgFromType: '1',
msgCreateTime: '2024-10-08 15:24:19',
},
],
nextMsgId: '',
unReadCount: 0,
firstNotReadMsgId: 0,
isVisitAdl: 2,
adlMsgId: 0,
week: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
timeDay: { 1: '上午', 2: '下午' },
userInfo: {},
},
innerAudioContext: null as WechatMiniprogram.InnerAudioContext | null,
videoContext: null as WechatMiniprogram.VideoContext | null,
onLoad(options) {
this.videoContext = wx.createVideoContext('video')
},
onUnload() {
if (this.innerAudioContext) {
this.innerAudioContext.stop()
}
},
handleView(index = -1) {
this.setData({
scrollIntoView: index > -1 ? `view${index}` : `place`,
})
},
getDoctorDetail() {
wx.ajax({
method: 'GET',
url: '?r=zd/message-interact/get-bind-doctor-info',
data: {},
}).then((res) => {
this.setData({
doctorDetail: {
...res,
},
})
})
},
getQuestionList() {
wx.ajax({
method: 'GET',
url: '?r=zd/message-interact/get-question-list',
data: {},
}).then((res) => {
this.setData({
questionList: res,
questionActiveList: res[0].questionList,
})
})
},
getMessageList() {
if (this.data.isLoad || this.data.isFinish) return
this.setData({
isLoad: true,
})
const nextMsgId = this.data.nextMsgId
wx.ajax({
method: 'GET',
url: '?r=zd/message-interact/patient-get-message-list',
data: {
nextMsgId,
},
}).then((res) => {
res.messageList.map((item) => {
if (item.msgContentType === '4') {
item.msgContent = JSON.parse(item.msgContent)
}
if (item.msgContentType === '2') {
item.msgVisitTime = JSON.parse(item.msgVisitTime)
}
if (item.msgContentType === '5') {
item.welcomeMsg = JSON.parse(item.welcomeMsg)
}
return item
})
this.setData({
messageList: [...res.messageList.reverse(), ...this.data.messageList],
nextMsgId: res.nextMsgId,
unReadCount: res.unReadCount,
firstNotReadMsgId: res.firstNotReadMsgId,
isVisitAdl: res.isVisitAdl,
adlMsgId: res.adlMsgId,
isLoad: false,
isFinish: nextMsgId === res.nextMsgId,
})
this.filterCreateTime()
if (!nextMsgId) {
this.handleView()
}
})
},
scrolltoupper(e) {
// if (e.detail.direction === 'top') {
// this.getMessageList()
// }
},
handleHot(e) {
const { index, mindex } = e.currentTarget.dataset
const { messageList } = this.data
const hotList = messageList[mindex].welcomeMsg?.hotQuestion
const hot = hotList?.[index]
this.setData({
messageList: [
...messageList,
{
msgId: '',
msgContentType: '1',
msgContent: hot?.question,
msgVisitTime: '',
msgFromType: '1',
msgCreateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
},
],
})
this.handleView()
this.sendQuestion(hot?.questionId)
},
handleQuestion(e) {
const { index } = e.currentTarget.dataset
const { questionActiveList, messageList } = this.data
const question = questionActiveList[index]
this.setData({
messageList: [
...messageList,
{
msgId: '',
msgContentType: '1',
msgContent: question.question,
msgVisitTime: '',
msgFromType: '1',
msgCreateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
},
],
})
this.sendQuestion(question.questionId)
},
sendQuestion(questionId) {
wx.ajax({
method: 'POST',
url: '?r=zd/message-interact/send-question-message',
data: {
questionId,
},
}).then((res) => {
this.setData({
messageList: [
...this.data.messageList,
{
msgId: '',
msgContentType: '1',
msgContent: res,
msgVisitTime: '',
msgFromType: '2',
msgCreateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
},
],
})
this.filterCreateTime()
this.handleView()
})
},
formatTime(date: string) {
let msgCreateTimeName = ''
if (dayjs().format('YYYY-MM-DD') === dayjs(date).format('YYYY-MM-DD')) {
msgCreateTimeName = dayjs(date).format('HH:mm')
} else if (dayjs().format('YYYY-MM-DD') === dayjs(date).add(1, 'day').format('YYYY-MM-DD')) {
msgCreateTimeName = `昨天 ${dayjs(date).format('HH:mm')}`
} else if (dayjs().diff(date, 'day') < 7) {
msgCreateTimeName = dayjs(date).format(`dddd HH:mm`)
} else {
msgCreateTimeName = dayjs(date).format('YYYY-MM-DD HH:mm')
}
return msgCreateTimeName
},
filterCreateTime() {
const gapTime = 5 * 60 * 1000
const { messageList } = this.data
let preTime = 0
messageList.forEach((item, index) => {
if (index === 0) {
item.showTime = true
preTime = dayjs(item.msgCreateTime).valueOf()
item.msgCreateTimeName = this.formatTime(item.msgCreateTime)
} else {
const curTime = dayjs(item.msgCreateTime).valueOf()
if (curTime - preTime > gapTime) {
item.showTime = true
item.msgCreateTimeName = this.formatTime(item.msgCreateTime)
preTime = dayjs(item.msgCreateTime).valueOf()
}
}
})
this.setData({
messageList,
})
},
handleQuestionTab(e) {
const { index } = e.currentTarget.dataset
this.setData({
questionActive: index,
questionActiveList: this.data.questionList[index].questionList,
})
},
handleDoctorDetail() {
const { doctorId } = this.data.doctorDetail
wx.navigateTo({
url: `/pages/doctorDetail/index?id=${doctorId}`,
})
},
handleRead() {
const { firstNotReadMsgId, messageList } = this.data
const index = messageList.findIndex((item) => `${item.msgId}` === `${firstNotReadMsgId}`)
this.handleView(index)
this.setData({
unReadCount: 0,
})
},
handleFooter() {
this.setData({
fold: !this.data.fold,
})
if (this.data.fold) {
setTimeout(() => {
this.handleView()
}, 300)
}
},
handleAdl() {
wx.navigateTo({
url: '/pages/adl/index',
})
},
handleAudio(e) {
const { index } = e.currentTarget.dataset
const { messageList } = this.data
const messageItem = messageList[index]
const { url } = messageItem.msgContent[0]
if (this.innerAudioContext) {
if (messageItem.isPlay) {
this.innerAudioContext.stop()
messageItem.isPlay = false
this.setData({
messageList,
})
return
}
this.innerAudioContext.stop()
this.innerAudioContext.src = url
this.innerAudioContext.play()
messageItem.isPlay = true
this.innerAudioContext.onEnded(() => {
messageItem.isPlay = false
this.setData({
messageList,
})
})
this.setData({
messageList,
})
}
},
handlePreview(e) {
const { url } = e.currentTarget.dataset
wx.previewImage({
urls: [url],
})
},
handleVideo() {
if (this.videoContext) {
this.videoContext.play()
this.videoContext.requestFullScreen({})
}
},
})

140
src/module1/pages/chatRoom/index.wxml

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
<view class="page">
<view class="header">
<view class="page-header">
<view class="info">
<view class="photos">
<image
@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
class="photo"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
></image>
<view class="sealed">已归档</view>
</view>
<view class="inner">
<view class="c-header">
@ -28,7 +29,7 @@ @@ -28,7 +29,7 @@
</view>
</view>
<view class="c-footer">
<view class="name">刘欢</view>
<view class="name">刘欢1</view>
<view class="line">|</view>
<view class="hostipal">广东省人民医院</view>
<view class="site">广州市/番禺区</view>
@ -36,4 +37,139 @@ @@ -36,4 +37,139 @@
</view>
</view>
</view>
<view class="page-container">
<scroll-view
class="scroll-view"
scroll-y="{{true}}"
scroll-top="{{scrollTop}}"
scroll-into-view="{{scrollIntoView}}"
scroll-with-animation
bindscrolltoupper="scrolltoupper"
>
<van-loading wx:if="{{isLoad && !isFinish}}" />
<view wx:for="{{messageList}}" wx:key="msgId" wx:for-item="message" wx:for-index="mIndex" id="view{{mIndex}}">
<view class="date" wx:if="{{message.showTime}}">{{message.msgCreateTimeName}}</view>
<view class="doctor" wx:if="{{message.msgFromType==='2'}}">
<view class="avatar">
<image
class="a-img"
mode="aspectFill"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
></image>
</view>
<view class="d-container">
<view class="user">李倩 中南大学湘雅医院李倩</view>
<view class="message" wx:if="{{message.msgContentType==='1'}}">{{message.msgContent}}</view>
<view class="photo" wx:elif="{{message.msgContentType==='2'}}">
<image
class="p-img"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
mode="widthFix"
show-menu-by-longpress
bind:tap="handlePreview"
data-url="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
></image>
</view>
<view class="video" wx:elif="{{message.msgContentType==='3'}}" bind:tap="handleVideo">
<image
class="v-img"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
mode="aspectFill"
show-menu-by-longpress
bind:tap="handlePreview"
data-url="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
></image>
<image class="play" src="/images/icon-video-play.png"></image>
</view>
<view
class="audio"
wx:elif="{{message.msgContentType==='4'}}"
bind:tap="handleAudio"
data-index="{{mIndex}}"
>
<image
wx:if="{{message.isPlay}}"
class="icon"
src="{{imageUrl}}/audio-right.gif?t={{Timestamp}}"
mode="aspectFit"
></image>
<image wx:else class="icon" src="{{imageUrl}}/audio-right.png?t={{Timestamp}}" mode="aspectFit"></image>
{{message.msgContent[0].duration}}''
</view>
</view>
</view>
<view class="patient" wx:if="{{message.msgFromType==='1'}}">
<view class="p-container">
<view class="message" wx:if="{{message.msgContentType==='1'}}">{{message.msgContent}}</view>
<view
class="audio"
wx:elif="{{message.msgContentType==='4'}}"
bind:tap="handleAudio"
data-index="{{mIndex}}"
>
{{message.msgContent[0].duration}}''
<image
class="icon"
wx:if="{{message.isPlay}}"
src="{{imageUrl}}/audio-left.gif?t={{Timestamp}}"
mode="aspectFit"
></image>
<image class="icon" wx:else src="{{imageUrl}}/audio-left.png?t={{Timestamp}}" mode="aspectFit"></image>
</view>
<view class="photo" wx:elif="{{message.msgContentType==='2'}}">
<image
class="p-img"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
mode="widthFix"
show-menu-by-longpress
bind:tap="handlePreview"
data-url="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
></image>
</view>
<view class="video" wx:elif="{{message.msgContentType==='3'}}" bind:tap="handleVideo">
<image
class="v-img"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
mode="aspectFill"
show-menu-by-longpress
bind:tap="handlePreview"
data-url="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
></image>
<image class="play" src="/images/icon-video-play.png"></image>
</view>
</view>
<view class="avatar">
<image
class="a-img"
mode="aspectFill"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
></image>
</view>
</view>
</view>
<view id="place" class="place"></view>
</scroll-view>
</view>
<view class="page-footer">
<view class="header">
<image class="icon" src="/images/icon-voice.png"></image>
<input class="input" placeholder-class="place-class" type="text" placeholder="请输入要查询的内容" />
<image class="icon-add" src="/images/icon-circle-add.png" mode="scaleToFill" bind:tap="handleFooter"></image>
</view>
<view class="fold-container {{!fold && 'unfold'}}">
<view class="f-item">
<image class="icon" src="/images/icon-picture.png"></image>
<view class="name">照片</view>
</view>
<view class="f-item">
<image class="icon" src="/images/icon-video.png"></image>
<view class="name">视频</view>
</view>
</view>
</view>
</view>
<video
id="video"
src="http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400"
></video>

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

@ -388,3 +388,25 @@ page { @@ -388,3 +388,25 @@ page {
text-align: center;
}
}
.popup3 {
position: relative;
width: 580rpx;
height: 590rpx;
box-sizing: border-box;
.bg{
width: 100%;
height: 100%;
}
.sure{
position: absolute;
width: 100%;
bottom: 40rpx;
left: 0;
text-align: center;
font-size: 32rpx;
color: rgba(0, 180, 197, 1);
line-height: 48rpx;
}
}

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

@ -4,12 +4,26 @@ Page({ @@ -4,12 +4,26 @@ Page({
data: {
show1: false,
show2: false,
show3: false,
},
onLoad() {},
handleSubmit(){
handleChooseFile() {
wx.chooseMessageFile({
count: 1,
success(res) {
console.log(res)
},
fail() {
wx.showToast({
icon: 'none',
title: '取消选择',
})
},
})
},
handleSubmit() {
wx.navigateTo({
url:"/module1/pages/entryCasesResult/index"
url: '/module1/pages/entryCasesResult/index',
})
}
},
})

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

@ -55,7 +55,7 @@ @@ -55,7 +55,7 @@
<view class="card">
<view class="card-title">
病历相关文件
<view class="message-select">从聊天记录选择文件</view>
<view class="message-select" bind:tap="handleChooseFile">从聊天记录选择文件</view>
</view>
<view class="none-file">
<image class="nf-icon" src="/images/icon-nore-file.png"></image>
@ -118,3 +118,13 @@ @@ -118,3 +118,13 @@
<view class="cancel">返回</view>
</view>
</van-popup>
<van-popup show="{{ show3 }}" bind:close="onClose" round>
<view class="popup3">
<image class="bg" src="/images/daub.gif"></image>
<view class="sure">
我知道了 去涂抹
<van-icon name="arrow" />
</view>
</view>
</van-popup>

13
src/pages/cases/index.scss

@ -164,16 +164,14 @@ page { @@ -164,16 +164,14 @@ page {
background: linear-gradient(180deg, #f1feff 0%, #ffffff 35%, #ffffff 100%);
.quality {
position: absolute;
top: 0;
right: 0;
right: 0;
width: 120rpx;
height: 50rpx;
border-radius: 0 16rpx 0 0;
}
.li-header {
padding: 32rpx 32rpx 0 16rpx;
padding: 32rpx 20rpx 0 0;
display: flex;
justify-content: space-between;
align-items: center;
&::before {
flex-shrink: 0;
@ -184,6 +182,8 @@ page { @@ -184,6 +182,8 @@ page {
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
.wrap {
padding-left: 22rpx;
flex: 1;
display: flex;
gap: 24rpx;
.id {
@ -204,8 +204,9 @@ page { @@ -204,8 +204,9 @@ page {
}
}
.option {
color: rgba(20, 21, 21, 1);
letter-spacing: -4rpx;
flex-shrink: 0;
width: 48rpx;
height: 48rpx;
}
}
.li-row {

6
src/pages/cases/index.ts

@ -6,7 +6,11 @@ Page({ @@ -6,7 +6,11 @@ Page({
show2: false,
show3: false,
},
onLoad() {},
onLoad() {
this.getTabBar().setData({
active: 2,
})
},
handleImagePreview(e) {
const { url } = e.currentTarget.dataset
wx.previewImage({

9
src/pages/cases/index.wxml

@ -96,18 +96,14 @@ @@ -96,18 +96,14 @@
<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>
<image class="quality" src="/images/quality.png"></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>
<image class="option" src="/images/icon-gather.png"></image>
</view>
<view class="li-row">
<view class="label">提交时间</view>
@ -233,4 +229,3 @@ @@ -233,4 +229,3 @@
<view class="submit">保存</view>
</view>
</van-popup>

6
src/pages/chatRoomList/index.ts

@ -5,7 +5,11 @@ Page({ @@ -5,7 +5,11 @@ Page({
fold: true,
show1: false,
},
onLoad() {},
onLoad() {
this.getTabBar().setData({
active: 3,
})
},
handleRoom() {
wx.navigateTo({
url: '/module1/pages/chatRoom/index',

3
src/pages/home/index.json

@ -3,7 +3,8 @@ @@ -3,7 +3,8 @@
"homeLevel1": "../../echart/components/homeLevel1/index",
"homeLevel2": "../../echart/components/homeLevel2/index",
"homeLevel3": "../../echart/components/homeLevel3/index",
"homeLevel4": "../../echart/components/homeLevel4/index"
"homeLevel4": "../../echart/components/homeLevel4/index",
"van-popup": "@vant/weapp/popup/index"
},
"componentPlaceholder": {
"homeLevel1": "view",

39
src/pages/home/index.scss

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
page{
page {
background-color: rgba(246, 246, 246, 1);
}
.page {
@ -8,3 +8,40 @@ page{ @@ -8,3 +8,40 @@ page{
height: 36rpx;
}
}
.popup1 {
width: 750rpx;
height: 752rpx;
.container {
padding: 322rpx 0 0;
.title {
font-size: 32rpx;
color: rgba(20, 21, 21, 1);
line-height: 42rpx;
text-align: center;
font-weight: bold;
.name {
font-size: 36rpx;
color: rgba(0, 180, 197, 1);
}
}
.content {
text-align: center;
margin-top: 16rpx;
font-size: 28rpx;
color: rgba(133, 133, 133, 1);
line-height: 44rpx;
}
.sure {
margin: 32rpx auto 0;
width: 476rpx;
height: 72rpx;
font-size: 32rpx;
color: rgba(255, 255, 255, 1);
text-align: center;
line-height: 72rpx;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
border-radius: 84rpx 84rpx 84rpx 84rpx;
}
}
}

9
src/pages/home/index.ts

@ -2,7 +2,12 @@ const _app = getApp<IAppOption>() @@ -2,7 +2,12 @@ const _app = getApp<IAppOption>()
Page({
data: {
level: 3,
level: 4,
show1: false,
},
onLoad() {
this.getTabBar().setData({
active: 1,
})
},
onLoad() {},
})

17
src/pages/home/index.wxml

@ -8,3 +8,20 @@ @@ -8,3 +8,20 @@
<homeLevel3 wx:elif="{{level===3}}"></homeLevel3>
<homeLevel4 wx:elif="{{level===4}}"></homeLevel4>
</view>
<van-popup show="{{ show1 }}" bind:close="onClose" round custom-style="background:transparent">
<view
class="popup1"
style="background: url({{imageUrl}}home-bind-doctor-bg.png?r={{Timestamp}}) no-repeat top center/100%;"
>
<view class="container">
<view class="title">您已绑定<text class="name">陈艺莉医生</text></view>
<view class="content">
作为您的合作医生
<view></view>
后续病例可邀约对方参与
</view>
<view class="sure">确认</view>
</view>
</view>
</van-popup>

6
src/pages/my/index.ts

@ -2,7 +2,11 @@ const _app = getApp<IAppOption>() @@ -2,7 +2,11 @@ const _app = getApp<IAppOption>()
Page({
data: {},
onLoad() {},
onLoad() {
this.getTabBar().setData({
active: 4,
})
},
handleUserInfo() {
wx.navigateTo({
url: '/module1/pages/userInfo/index',

Loading…
Cancel
Save