39 changed files with 2774 additions and 71 deletions
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
{ |
||||
"component": true, |
||||
"usingComponents": { |
||||
"doctorAvatar": "/components/doctorAvatar/index", |
||||
"van-icon": "@vant/weapp/icon/index" |
||||
} |
||||
} |
@ -0,0 +1,364 @@
@@ -0,0 +1,364 @@
|
||||
.page { |
||||
padding: 36rpx 32rpx 200rpx; |
||||
.user { |
||||
display: flex; |
||||
gap: 24rpx; |
||||
align-items: center; |
||||
.avatar { |
||||
flex-shrink: 0; |
||||
width: 112rpx; |
||||
height: 112rpx; |
||||
} |
||||
.wrap { |
||||
.w-header { |
||||
display: flex; |
||||
flex-wrap: wrap; |
||||
align-items: baseline; |
||||
gap: 16rpx; |
||||
.name { |
||||
font-size: 36rpx; |
||||
color: rgba(0, 180, 197, 1); |
||||
font-weight: bold; |
||||
} |
||||
.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: 24rpx; |
||||
line-height: 32rpx; |
||||
color: rgba(148, 87, 30, 1); |
||||
border-radius: 4rpx; |
||||
background-color: rgba(250, 229, 206, 1); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.banner { |
||||
margin-top: 32rpx; |
||||
.title { |
||||
position: relative; |
||||
z-index: 1; |
||||
padding: 22rpx 30rpx 18rpx; |
||||
width: 262rpx; |
||||
height: 116rpx; |
||||
font-size: 28rpx; |
||||
font-weight: bold; |
||||
color: rgba(0, 180, 197, 1); |
||||
line-height: 1; |
||||
box-sizing: border-box; |
||||
} |
||||
.bg { |
||||
padding-top: 40rpx; |
||||
border-radius: 24rpx; |
||||
background-color: rgba(250, 229, 206, 1); |
||||
margin-top: -95rpx; |
||||
.b-container { |
||||
position: relative; |
||||
z-index: 2; |
||||
border: 1px solid #ffffff; |
||||
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%); |
||||
border-radius: 16rpx 16rpx 16rpx 16rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
.item { |
||||
padding: 32rpx 0; |
||||
flex: 1; |
||||
text-align: center; |
||||
.name { |
||||
font-size: 28rpx; |
||||
color: #fff; |
||||
line-height: 1; |
||||
} |
||||
.num { |
||||
margin-top: 24rpx; |
||||
font-size: 56rpx; |
||||
color: #fff; |
||||
line-height: 56rpx; |
||||
} |
||||
} |
||||
.line { |
||||
flex-shrink: 0; |
||||
height: 108rpx; |
||||
border-right: 1rpx dashed #ffffff; |
||||
opacity: 0.5; |
||||
} |
||||
} |
||||
.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: 1px solid #ffffff; |
||||
} |
||||
} |
||||
} |
||||
.stat { |
||||
position: relative; |
||||
margin-top: 24rpx; |
||||
padding: 96rpx 0 32rpx; |
||||
border-radius: 16rpx; |
||||
.title { |
||||
position: absolute; |
||||
top: 0; |
||||
left: 0; |
||||
padding: 16rpx 30rpx; |
||||
font-size: 28rpx; |
||||
color: #fff; |
||||
font-weight: bold; |
||||
} |
||||
.s-container { |
||||
display: flex; |
||||
.item { |
||||
flex: 1; |
||||
text-align: center; |
||||
.name { |
||||
font-size: 28rpx; |
||||
color: rgba(128, 128, 128, 1); |
||||
line-height: 1; |
||||
} |
||||
.num { |
||||
margin-top: 24rpx; |
||||
font-size: 48rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
line-height: 56rpx; |
||||
} |
||||
} |
||||
.line { |
||||
flex-shrink: 0; |
||||
height: 108rpx; |
||||
border-right: 1rpx dashed rgba(224, 224, 224, 0.5); |
||||
} |
||||
} |
||||
} |
||||
.stat-none { |
||||
position: relative; |
||||
margin-top: 24rpx; |
||||
padding: 96rpx 0 32rpx; |
||||
border-radius: 16rpx; |
||||
.title { |
||||
position: absolute; |
||||
top: 0; |
||||
left: 0; |
||||
padding: 16rpx 30rpx; |
||||
font-size: 28rpx; |
||||
color: #fff; |
||||
font-weight: bold; |
||||
} |
||||
.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; |
||||
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); |
||||
font-weight: bold; |
||||
} |
||||
.fold { |
||||
font-size: 28rpx; |
||||
color: rgba(153, 153, 153, 1); |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 12rpx; |
||||
.icon { |
||||
width: 28rpx; |
||||
height: 28rpx; |
||||
} |
||||
} |
||||
} |
||||
.doctor-list { |
||||
padding: 0 20rpx 32rpx; |
||||
transition: 0.3s max-height; |
||||
max-height: var(--fold-height); |
||||
&-fold { |
||||
padding: 0; |
||||
max-height: 0; |
||||
overflow: hidden; |
||||
} |
||||
.doctor { |
||||
margin-bottom: 20rpx; |
||||
padding: 32rpx; |
||||
display: flex; |
||||
gap: 24rpx; |
||||
background: linear-gradient(180deg, #e5f5f7 0%, #ffffff 50%); |
||||
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.1); |
||||
border-radius: 16rpx 16rpx 16rpx 16rpx; |
||||
border: 2rpx solid #ffffff; |
||||
&:last-of-type { |
||||
margin-bottom: 0; |
||||
} |
||||
.avatar { |
||||
flex-shrink: 0; |
||||
position: relative; |
||||
width: 112rpx; |
||||
height: 112rpx; |
||||
} |
||||
.wrap { |
||||
padding-top: 8rpx; |
||||
.w-header { |
||||
display: flex; |
||||
flex-wrap: wrap; |
||||
align-items: baseline; |
||||
gap: 16rpx; |
||||
line-height: 1; |
||||
.name { |
||||
font-size: 36rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
font-weight: bold; |
||||
} |
||||
.label { |
||||
font-size: 28rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
} |
||||
.line { |
||||
width: 1px; |
||||
height: 24rpx; |
||||
background-color: rgba(205, 205, 205, 1); |
||||
} |
||||
} |
||||
.w-container { |
||||
margin-top: 24rpx; |
||||
.hostipal { |
||||
margin-right: 12rpx; |
||||
font-size: 28rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
} |
||||
.tag { |
||||
margin-right: 12rpx; |
||||
display: inline-block; |
||||
padding: 0 8rpx; |
||||
border-radius: 4rpx; |
||||
font-size: 24rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
line-height: 32rpx; |
||||
background-color: rgba(0, 180, 197, 1); |
||||
} |
||||
.site { |
||||
display: inline-block; |
||||
padding: 0 8rpx; |
||||
font-size: 24rpx; |
||||
color: rgba(148, 87, 30, 1); |
||||
line-height: 32rpx; |
||||
border-radius: 4rpx; |
||||
background-color: rgba(250, 229, 206, 1); |
||||
} |
||||
} |
||||
.w-footer { |
||||
margin-top: 16rpx; |
||||
display: flex; |
||||
gap: 12rpx; |
||||
flex-wrap: wrap; |
||||
.wf-label { |
||||
flex-shrink: 0; |
||||
width: 48rpx; |
||||
height: 32rpx; |
||||
} |
||||
.wf-tag { |
||||
flex-shrink: 0; |
||||
padding: 0 8rpx; |
||||
font-size: 22rpx; |
||||
color: rgba(0, 180, 197, 1); |
||||
line-height: 32rpx; |
||||
border: 1px solid rgba(191, 239, 244, 1); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
.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; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,73 @@
@@ -0,0 +1,73 @@
|
||||
const _app = getApp<IAppOption>(); |
||||
|
||||
// pages/story/a.ts
|
||||
Component({ |
||||
/** |
||||
* 组件的属性列表 |
||||
*/ |
||||
properties: { |
||||
userInfo: Object, |
||||
DoctorTitleType: Object, |
||||
hospitalClassification: Object, |
||||
hospitalLevel: Object, |
||||
did: String, |
||||
}, |
||||
|
||||
/** |
||||
* 组件的初始数据 |
||||
*/ |
||||
data: { |
||||
take: {}, |
||||
case: {}, |
||||
cooperateList: [], |
||||
}, |
||||
|
||||
lifetimes: { |
||||
attached() { |
||||
this.getTake(); |
||||
this.getCase(); |
||||
}, |
||||
}, |
||||
/** |
||||
* 组件的方法列表 |
||||
*/ |
||||
methods: { |
||||
handleEntryCase() { |
||||
wx.navigateTo({ |
||||
url: "/module1/pages/entryCases/index", |
||||
}); |
||||
}, |
||||
getTake() { |
||||
wx.ajax({ |
||||
method: "GET", |
||||
url: "?r=takeda/doctor/todo", |
||||
data: { |
||||
DoctorId: this.data.did, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
take: res, |
||||
}); |
||||
}); |
||||
}, |
||||
getCase() { |
||||
wx.ajax({ |
||||
method: "GET", |
||||
url: "?r=takeda/doctor/case", |
||||
data: { |
||||
DoctorId: this.data.did, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
case: res, |
||||
}); |
||||
}); |
||||
}, |
||||
handleQuestion(e) { |
||||
const { index } = e.currentTarget.dataset; |
||||
this.triggerEvent("question", index); |
||||
}, |
||||
}, |
||||
}); |
||||
|
||||
export {}; |
@ -0,0 +1,93 @@
@@ -0,0 +1,93 @@
|
||||
<view class="page"> |
||||
<view class="user"> |
||||
<doctorAvatar |
||||
did="{{userInfo.DoctorId}}" |
||||
class="avatar" |
||||
src="{{userInfo.Img}}" |
||||
level="{{userInfo.DoctorLevel}}" |
||||
></doctorAvatar> |
||||
<view class="wrap"> |
||||
<view class="w-header"> |
||||
<view class="name">{{userInfo.Name}}</view> |
||||
<view class="desc" wx:if="{{userInfo.TitleType === 99}}">{{userInfo.OtherTitle}}</view> |
||||
<view class="desc" wx:else>{{DoctorTitleType[userInfo.TitleType]}}</view> |
||||
</view> |
||||
<view class="w-footer"> |
||||
<view class="hostipal">{{userInfo.HospitalName}}</view> |
||||
<view class="tag">{{userInfo.HospitalClassificationName}}{{userInfo.HospitalLevelName}}</view> |
||||
<view class="site" wx:if="{{userInfo.CityName}}"> |
||||
{{userInfo.CityName}}{{userInfo.CountyName?'/':''}}{{userInfo.CountyName}} |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="banner"> |
||||
<view |
||||
class="title" |
||||
style="background: url({{imageUrl}}home-banner-title-bg.png?r={{Timestamp}}) no-repeat top center/262rpx 116rpx;" |
||||
> |
||||
待处理事项 |
||||
</view> |
||||
<view class="bg"> |
||||
<view class="b-container"> |
||||
<view class="item"> |
||||
<view class="name">病历更新</view> |
||||
<view class="num">{{take.notReadFeedBackCount*1 || '--'}}</view> |
||||
</view> |
||||
<view class="line"></view> |
||||
<view class="item"> |
||||
<view class="name">学习窗消息</view> |
||||
<view class="num">{{take.notReadChatRoomCount*1 || '--'}}</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view |
||||
class="stat" |
||||
style="background: url({{imageUrl}}home-stat-bg.png?r={{Timestamp}}) no-repeat top center/100% 100%;" |
||||
wx:if="{{case.totalCaseCount>0}}" |
||||
> |
||||
<view class="title">我提交的病历</view> |
||||
<view class="s-container"> |
||||
<view class="item"> |
||||
<view class="name">总数</view> |
||||
<view class="num">{{case.totalCaseCount}}</view> |
||||
</view> |
||||
<view class="line"></view> |
||||
<view class="item"> |
||||
<view class="name"> |
||||
新病历 |
||||
<van-icon bind:tap="handleQuestion" data-index="1" name="question" color="rgba(224, 224, 224, 1)" /> |
||||
</view> |
||||
<view class="num">{{case.newCaseCount}}</view> |
||||
</view> |
||||
<view class="line"></view> |
||||
<view class="item"> |
||||
<view class="name"> |
||||
讨论中 |
||||
<van-icon bind:tap="handleQuestion" data-index="2" name="question" color="rgba(224, 224, 224, 1)" /> |
||||
</view> |
||||
<view class="num">{{case.feedbackCaseCount}}</view> |
||||
</view> |
||||
<view class="line"></view> |
||||
<view class="item"> |
||||
<view class="name"> |
||||
已归档 |
||||
<van-icon bind:tap="handleQuestion" data-index="3" name="question" color="rgba(224, 224, 224, 1)" /> |
||||
</view> |
||||
<view class="num">{{case.archiveCaseCount}}</view> |
||||
</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="{{imageUrl}}empty-3.png?t={{Timestamp}}"></image> |
||||
<view class="tip">还没有提交病历</view> |
||||
</view> |
||||
</view> |
||||
</view> |
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
{ |
||||
"component": true, |
||||
"usingComponents": { |
||||
"doctorAvatar": "/components/doctorAvatar/index", |
||||
"van-icon": "@vant/weapp/icon/index" |
||||
} |
||||
} |
@ -0,0 +1,482 @@
@@ -0,0 +1,482 @@
|
||||
.page { |
||||
padding: 36rpx 32rpx 200rpx; |
||||
.user { |
||||
margin-top: 40rpx; |
||||
position: relative; |
||||
padding: 94rpx 32rpx 32rpx; |
||||
background: linear-gradient(180deg, #f1feff 0%, #ffffff 35%, #ffffff 100%); |
||||
box-shadow: 0rpx 8rpx 24rpx 0rpx rgba(0, 66, 73, 0.09); |
||||
border-radius: 16rpx 16rpx 16rpx 16rpx; |
||||
border: 2rpx solid #ffffff; |
||||
.avatar { |
||||
position: absolute; |
||||
top: -38rpx; |
||||
left: 32rpx; |
||||
width: 112rpx; |
||||
height: 112rpx; |
||||
} |
||||
.code { |
||||
position: absolute; |
||||
top: 38rpx; |
||||
right: 34rpx; |
||||
width: 60rpx; |
||||
height: 60rpx; |
||||
} |
||||
.wrap { |
||||
.w-header { |
||||
display: flex; |
||||
align-items: baseline; |
||||
flex-wrap: wrap; |
||||
gap: 16rpx; |
||||
.name { |
||||
font-size: 36rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
font-weight: bold; |
||||
} |
||||
.desc { |
||||
font-size: 28rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
.line { |
||||
margin: 0 12rpx; |
||||
display: inline-block; |
||||
height: 24rpx; |
||||
width: 1rpx; |
||||
background-color: rgba(205, 205, 205, 1); |
||||
} |
||||
} |
||||
} |
||||
.w-container { |
||||
margin-top: 24rpx; |
||||
.hostipal { |
||||
margin-right: 12rpx; |
||||
display: inline; |
||||
font-size: 28rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
} |
||||
.tag { |
||||
margin-right: 12rpx; |
||||
display: inline-block; |
||||
padding: 0 8rpx; |
||||
border-radius: 4rpx; |
||||
background-color: rgba(0, 180, 197, 1); |
||||
font-size: 24rpx; |
||||
color: #fff; |
||||
} |
||||
.site { |
||||
display: inline-block; |
||||
padding: 0 8rpx; |
||||
font-size: 24rpx; |
||||
line-height: 32rpx; |
||||
color: rgba(148, 87, 30, 1); |
||||
border-radius: 4rpx; |
||||
background-color: rgba(250, 229, 206, 1); |
||||
} |
||||
} |
||||
.w-footer { |
||||
margin-top: 16rpx; |
||||
display: flex; |
||||
gap: 12rpx; |
||||
flex-wrap: wrap; |
||||
.wf-label { |
||||
flex-shrink: 0; |
||||
width: 48rpx; |
||||
height: 32rpx; |
||||
} |
||||
.wf-tag { |
||||
flex-shrink: 0; |
||||
padding: 0 8rpx; |
||||
font-size: 22rpx; |
||||
color: rgba(0, 180, 197, 1); |
||||
line-height: 32rpx; |
||||
border: 1px solid rgba(191, 239, 244, 1); |
||||
border-radius: 4rpx; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.banner { |
||||
margin-top: 32rpx; |
||||
.title { |
||||
position: relative; |
||||
z-index: 1; |
||||
padding: 22rpx 30rpx 18rpx; |
||||
width: 262rpx; |
||||
height: 116rpx; |
||||
font-size: 28rpx; |
||||
font-weight: bold; |
||||
color: rgba(0, 180, 197, 1); |
||||
line-height: 1; |
||||
box-sizing: border-box; |
||||
} |
||||
.bg { |
||||
padding-top: 40rpx; |
||||
border-radius: 24rpx; |
||||
background-color: rgba(250, 229, 206, 1); |
||||
margin-top: -95rpx; |
||||
.b-container { |
||||
position: relative; |
||||
z-index: 2; |
||||
border: 1px solid #ffffff; |
||||
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%); |
||||
border-radius: 16rpx 16rpx 16rpx 16rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
.item { |
||||
padding: 32rpx 0; |
||||
flex: 1; |
||||
text-align: center; |
||||
.name { |
||||
font-size: 26rpx; |
||||
color: #fff; |
||||
line-height: 1; |
||||
} |
||||
.num { |
||||
margin-top: 24rpx; |
||||
font-size: 56rpx; |
||||
color: #fff; |
||||
line-height: 56rpx; |
||||
} |
||||
} |
||||
.line { |
||||
flex-shrink: 0; |
||||
height: 108rpx; |
||||
border-right: 1rpx dashed #ffffff; |
||||
opacity: 0.5; |
||||
} |
||||
} |
||||
.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: 1px solid #ffffff; |
||||
} |
||||
} |
||||
} |
||||
.stat { |
||||
position: relative; |
||||
margin-top: 24rpx; |
||||
padding: 96rpx 0 32rpx; |
||||
border-radius: 16rpx; |
||||
.title { |
||||
position: absolute; |
||||
top: 0; |
||||
left: 0; |
||||
padding: 16rpx 30rpx; |
||||
font-size: 28rpx; |
||||
color: #fff; |
||||
font-weight: bold; |
||||
} |
||||
.more { |
||||
position: absolute; |
||||
top: 0; |
||||
right: 0; |
||||
padding: 14rpx 20rpx; |
||||
font-size: 28rpx; |
||||
color: rgba(153, 153, 153, 1); |
||||
} |
||||
.s-container { |
||||
display: flex; |
||||
.item { |
||||
position: relative; |
||||
flex: 1; |
||||
text-align: center; |
||||
.name { |
||||
font-size: 28rpx; |
||||
color: rgba(128, 128, 128, 1); |
||||
line-height: 1; |
||||
} |
||||
.num { |
||||
margin-top: 24rpx; |
||||
font-size: 48rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
line-height: 56rpx; |
||||
} |
||||
.item-toast { |
||||
position: absolute; |
||||
left: -80rpx; |
||||
top: -20rpx; |
||||
transform: translate(0, -100%); |
||||
padding: 28rpx 0; |
||||
border-radius: 16rpx; |
||||
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%); |
||||
display: flex; |
||||
align-items: center; |
||||
white-space: nowrap; |
||||
font-size: 28rpx; |
||||
color: #fff; |
||||
.i-row { |
||||
padding: 0 56rpx; |
||||
} |
||||
.i-line { |
||||
width: 2rpx; |
||||
height: 32rpx; |
||||
background-color: rgba(255, 255, 255, 0.29); |
||||
} |
||||
.i-clsoe { |
||||
position: absolute; |
||||
top: -10rpx; |
||||
right: -10rpx; |
||||
width: 32rpx; |
||||
height: 32rpx; |
||||
} |
||||
&::after { |
||||
position: absolute; |
||||
left: 134rpx; |
||||
bottom: -10rpx; |
||||
content: ""; |
||||
width: 0; |
||||
height: 0; |
||||
border-style: solid; |
||||
border-width: 18rpx 18rpx 0 18rpx; |
||||
border-color: #4abfc0 transparent transparent transparent; |
||||
} |
||||
} |
||||
} |
||||
.line { |
||||
flex-shrink: 0; |
||||
height: 108rpx; |
||||
border-right: 1rpx dashed rgba(224, 224, 224, 0.5); |
||||
} |
||||
} |
||||
} |
||||
.stat-none { |
||||
position: relative; |
||||
margin-top: 24rpx; |
||||
padding: 96rpx 0 32rpx; |
||||
border-radius: 16rpx; |
||||
.title { |
||||
position: absolute; |
||||
top: 0; |
||||
left: 0; |
||||
padding: 16rpx 30rpx; |
||||
font-size: 28rpx; |
||||
color: #fff; |
||||
font-weight: bold; |
||||
} |
||||
.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; |
||||
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); |
||||
font-weight: bold; |
||||
} |
||||
.fold { |
||||
font-size: 28rpx; |
||||
color: rgba(153, 153, 153, 1); |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 12rpx; |
||||
.icon { |
||||
width: 28rpx; |
||||
height: 28rpx; |
||||
} |
||||
} |
||||
} |
||||
.doctor-list { |
||||
padding: 0 20rpx 32rpx; |
||||
transition: 0.3s max-height; |
||||
max-height: var(--fold-height); |
||||
&-fold { |
||||
padding: 0; |
||||
max-height: 0; |
||||
overflow: hidden; |
||||
} |
||||
.doctor { |
||||
position: relative; |
||||
margin-bottom: 20rpx; |
||||
padding: 32rpx; |
||||
display: flex; |
||||
gap: 24rpx; |
||||
background: linear-gradient(180deg, #e5f5f7 0%, #ffffff 50%); |
||||
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.1); |
||||
border-radius: 16rpx 16rpx 16rpx 16rpx; |
||||
border: 2rpx solid #ffffff; |
||||
&:last-of-type { |
||||
margin-bottom: 0; |
||||
} |
||||
.invite-doctor { |
||||
position: absolute; |
||||
top: 0; |
||||
right: 0; |
||||
padding: 2rpx 16rpx; |
||||
font-size: 22rpx; |
||||
color: #00b4c5; |
||||
line-height: 28rpx; |
||||
border-radius: 0 16rpx 0 16rpx; |
||||
background-color: #d7edee; |
||||
} |
||||
.avatar { |
||||
flex-shrink: 0; |
||||
position: relative; |
||||
width: 112rpx; |
||||
height: 112rpx; |
||||
} |
||||
.assign { |
||||
position: absolute; |
||||
top: 0; |
||||
right: 0; |
||||
padding: 2rpx 16rpx; |
||||
line-height: 28rpx; |
||||
font-size: 22rpx; |
||||
color: rgba(0, 180, 197, 1); |
||||
background-color: rgba(215, 237, 238, 1); |
||||
border-radius: 0 16rpx 0 16rpx; |
||||
} |
||||
.wrap { |
||||
padding-top: 8rpx; |
||||
.w-header { |
||||
display: flex; |
||||
align-items: baseline; |
||||
flex-wrap: wrap; |
||||
gap: 16rpx; |
||||
line-height: 1; |
||||
.name { |
||||
font-size: 36rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
font-weight: bold; |
||||
} |
||||
.label { |
||||
font-size: 28rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
} |
||||
.line { |
||||
width: 1px; |
||||
height: 24rpx; |
||||
background-color: rgba(205, 205, 205, 1); |
||||
} |
||||
} |
||||
.w-container { |
||||
margin-top: 24rpx; |
||||
.hostipal { |
||||
margin-right: 12rpx; |
||||
font-size: 28rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
} |
||||
.tag { |
||||
margin-right: 12rpx; |
||||
display: inline-block; |
||||
padding: 0 8rpx; |
||||
border-radius: 4rpx; |
||||
font-size: 24rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
line-height: 32rpx; |
||||
background-color: rgba(0, 180, 197, 1); |
||||
} |
||||
.site { |
||||
display: inline-block; |
||||
padding: 0 8rpx; |
||||
font-size: 24rpx; |
||||
color: rgba(148, 87, 30, 1); |
||||
line-height: 32rpx; |
||||
border-radius: 4rpx; |
||||
background-color: rgba(250, 229, 206, 1); |
||||
} |
||||
} |
||||
.w-footer { |
||||
margin-top: 16rpx; |
||||
display: flex; |
||||
gap: 12rpx; |
||||
flex-wrap: wrap; |
||||
.wf-label { |
||||
flex-shrink: 0; |
||||
width: 48rpx; |
||||
height: 32rpx; |
||||
} |
||||
.wf-tag { |
||||
flex-shrink: 0; |
||||
padding: 0 8rpx; |
||||
font-size: 22rpx; |
||||
color: rgba(0, 180, 197, 1); |
||||
line-height: 32rpx; |
||||
border: 1px solid rgba(191, 239, 244, 1); |
||||
border-radius: 4rpx; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.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; |
||||
} |
||||
.none-img1 { |
||||
width: 230rpx; |
||||
height: 184rpx; |
||||
} |
||||
.content { |
||||
margin-top: -70rpx; |
||||
text-align: center; |
||||
font-size: 32rpx; |
||||
color: rgba(153, 153, 153, 1); |
||||
line-height: 44rpx; |
||||
.sub-content { |
||||
font-size: 28rpx; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,81 @@
@@ -0,0 +1,81 @@
|
||||
const app = getApp<IAppOption>(); |
||||
|
||||
// pages/story/a.ts
|
||||
Component({ |
||||
/** |
||||
* 组件的属性列表 |
||||
*/ |
||||
properties: { |
||||
userInfo: Object, |
||||
DoctorTitleType: Object, |
||||
hospitalClassification: Object, |
||||
hospitalLevel: Object, |
||||
did: String, |
||||
}, |
||||
|
||||
/** |
||||
* 组件的初始数据 |
||||
*/ |
||||
data: { |
||||
take: {}, |
||||
case: {} as any, |
||||
cooperateList: [], |
||||
inviteList: [], |
||||
newCaseShow: false, |
||||
}, |
||||
|
||||
lifetimes: { |
||||
attached() { |
||||
this.getTake(); |
||||
this.getCase(); |
||||
}, |
||||
}, |
||||
/** |
||||
* 组件的方法列表 |
||||
*/ |
||||
methods: { |
||||
getTake() { |
||||
wx.ajax({ |
||||
method: "GET", |
||||
url: "?r=takeda/doctor/todo", |
||||
data: { |
||||
DoctorId: this.data.did, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
take: res, |
||||
}); |
||||
}); |
||||
}, |
||||
getCase() { |
||||
wx.ajax({ |
||||
method: "GET", |
||||
url: "?r=takeda/doctor/case", |
||||
data: { |
||||
DoctorId: this.data.did, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
case: res, |
||||
}); |
||||
}); |
||||
}, |
||||
handleQuestion(e) { |
||||
const { index } = e.currentTarget.dataset; |
||||
this.triggerEvent("question", index); |
||||
}, |
||||
|
||||
handleNewCase() { |
||||
this.setData({ |
||||
newCaseShow: true, |
||||
}); |
||||
}, |
||||
handleNewCaseClose() { |
||||
this.setData({ |
||||
newCaseShow: false, |
||||
}); |
||||
}, |
||||
}, |
||||
}); |
||||
|
||||
export {}; |
@ -0,0 +1,124 @@
@@ -0,0 +1,124 @@
|
||||
<view class="page"> |
||||
<view class="user"> |
||||
<doctorAvatar |
||||
did="{{userInfo.DoctorId}}" |
||||
class="avatar" |
||||
src="{{userInfo.Img}}" |
||||
level="{{userInfo.DoctorLevel}}" |
||||
></doctorAvatar> |
||||
<view class="wrap"> |
||||
<view class="w-header"> |
||||
<view class="name">{{userInfo.Name}}</view> |
||||
<view class="desc"> |
||||
<block wx:if="{{userInfo.TitleType === 99}}">{{userInfo.OtherTitle}}</block> |
||||
<block wx:else>{{DoctorTitleType[userInfo.TitleType]}}</block> |
||||
<block wx:for="{{userInfo.Department}}" wx:key="DepartmentId"> |
||||
<view class="line"></view> |
||||
{{item.DepartmentName}} |
||||
</block> |
||||
</view> |
||||
</view> |
||||
<view class="w-container"> |
||||
<view class="hostipal">{{userInfo.HospitalName}}</view> |
||||
<view class="tag">{{userInfo.HospitalClassificationName}}{{userInfo.HospitalLevelName}}</view> |
||||
<view class="site" wx:if="{{userInfo.CityName}}"> |
||||
{{userInfo.CityName}}{{userInfo.CountyName?'/':''}}{{userInfo.CountyName}} |
||||
</view> |
||||
</view> |
||||
<view class="w-footer" wx:if="{{userInfo.Specialty.length}}"> |
||||
<image class="wf-label" src="{{imageUrl}}text-specialty.png?t={{Timestamp}}" mode="aspectFit"></image> |
||||
<view class="wf-tag" wx:for="{{userInfo.Specialty}}" wx:key="SpecialtyId">{{item.SpecialtyName}}</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="banner"> |
||||
<view |
||||
class="title" |
||||
style="background: url({{imageUrl}}home-banner-title-bg.png?r={{Timestamp}}) no-repeat top center/262rpx 116rpx;" |
||||
> |
||||
待处理事项 |
||||
</view> |
||||
<view class="bg"> |
||||
<view |
||||
class="b-container" |
||||
wx:if="{{take.dealCaseCount>0 || take.notReadFeedBackCount>0 || take.notReadChatRoomCount>0 || take.toAuditDoctorCount>0}}" |
||||
> |
||||
<view class="item"> |
||||
<view class="name">待处理病历</view> |
||||
<view class="num">{{take.dealCaseCount*1 || '--'}}</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="name">病历更新</view> |
||||
<view class="num">{{take.notReadFeedBackCount*1 || '--'}}</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="name">学习窗消息</view> |
||||
<view class="num">{{take.notReadChatRoomCount*1 || '--'}}</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="name">医生待审核</view> |
||||
<view class="num">{{take.toAuditDoctorCount*1 || '--'}}</view> |
||||
</view> |
||||
</view> |
||||
<view class="b-container-none" wx:else>暂时没有需要处理的事项哦~</view> |
||||
</view> |
||||
</view> |
||||
<view |
||||
class="stat" |
||||
wx:if="{{case.totalCaseCount>0}}" |
||||
style="background: url({{imageUrl}}home-stat-bg.png?r={{Timestamp}}) no-repeat top center/100% 100%;" |
||||
> |
||||
<view class="title">我管理的病历</view> |
||||
<view class="s-container"> |
||||
<view class="item"> |
||||
<view class="name">全部</view> |
||||
<view class="num">{{case.totalCaseCount}}</view> |
||||
</view> |
||||
<view class="line"></view> |
||||
<view class="item" bind:tap="handleNewCase"> |
||||
<view class="name"> |
||||
新病历 |
||||
<van-icon catch:tap="handleQuestion" data-index="1" name="question" color="rgba(224, 224, 224, 1)" /> |
||||
</view> |
||||
<view class="num">{{case.newCaseCount}}</view> |
||||
<view class="item-toast" wx:if="{{newCaseShow}}"> |
||||
<image |
||||
class="i-clsoe" |
||||
src="{{imageUrl}}icon-close.png?r={{Timestamp}}" |
||||
catch:tap="handleNewCaseClose" |
||||
></image> |
||||
<view class="i-row">本人提交:{{case.newOneCaseCount}}</view> |
||||
<view class="i-line"></view> |
||||
<view class="i-row">他人提交:{{case.newTwoCaseCount}}</view> |
||||
</view> |
||||
</view> |
||||
<view class="line"></view> |
||||
<view class="item"> |
||||
<view class="name"> |
||||
讨论中 |
||||
<van-icon catch:tap="handleQuestion" data-index="2" name="question" color="rgba(224, 224, 224, 1)" /> |
||||
</view> |
||||
<view class="num">{{case.feedbackCaseCount}}</view> |
||||
</view> |
||||
<view class="line"></view> |
||||
<view class="item"> |
||||
<view class="name"> |
||||
已归档 |
||||
<van-icon bind:tap="handleQuestion" data-index="3" name="question" color="rgba(224, 224, 224, 1)" /> |
||||
</view> |
||||
<view class="num">{{case.archiveCaseCount}}</view> |
||||
</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="{{imageUrl}}empty-3.png?t={{Timestamp}}"></image> |
||||
<view class="tip">还没有提交病历</view> |
||||
</view> |
||||
</view> |
||||
</view> |
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
{ |
||||
"component": true, |
||||
"usingComponents": { |
||||
"doctorAvatar": "/components/doctorAvatar/index", |
||||
"van-icon": "@vant/weapp/icon/index" |
||||
} |
||||
} |
@ -0,0 +1,250 @@
@@ -0,0 +1,250 @@
|
||||
.page { |
||||
padding: 36rpx 32rpx 200rpx; |
||||
.user { |
||||
margin-top: 40rpx; |
||||
position: relative; |
||||
padding: 94rpx 32rpx 32rpx; |
||||
background: linear-gradient(180deg, #f1feff 0%, #ffffff 35%, #ffffff 100%); |
||||
box-shadow: 0rpx 8rpx 24rpx 0rpx rgba(0, 66, 73, 0.09); |
||||
border-radius: 16rpx 16rpx 16rpx 16rpx; |
||||
border: 2rpx solid #ffffff; |
||||
.avatar { |
||||
position: absolute; |
||||
top: -38rpx; |
||||
left: 32rpx; |
||||
width: 112rpx; |
||||
height: 112rpx; |
||||
} |
||||
.code { |
||||
position: absolute; |
||||
top: 38rpx; |
||||
right: 34rpx; |
||||
width: 60rpx; |
||||
height: 60rpx; |
||||
} |
||||
.wrap { |
||||
.w-header { |
||||
display: flex; |
||||
flex-wrap: wrap; |
||||
align-items: baseline; |
||||
gap: 16rpx; |
||||
.name { |
||||
font-size: 36rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
font-weight: bold; |
||||
} |
||||
.desc { |
||||
font-size: 28rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
.line { |
||||
margin: 0 12rpx; |
||||
display: inline-block; |
||||
height: 24rpx; |
||||
width: 1rpx; |
||||
background-color: rgba(205, 205, 205, 1); |
||||
} |
||||
} |
||||
} |
||||
.w-container { |
||||
margin-top: 24rpx; |
||||
.hostipal { |
||||
margin-right: 12rpx; |
||||
display: inline; |
||||
font-size: 28rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
} |
||||
.tag { |
||||
margin-right: 12rpx; |
||||
display: inline-block; |
||||
padding: 0 8rpx; |
||||
border-radius: 4rpx; |
||||
background-color: rgba(0, 180, 197, 1); |
||||
font-size: 24rpx; |
||||
color: #fff; |
||||
} |
||||
.site { |
||||
display: inline-block; |
||||
padding: 0 8rpx; |
||||
font-size: 24rpx; |
||||
line-height: 32rpx; |
||||
color: rgba(148, 87, 30, 1); |
||||
border-radius: 4rpx; |
||||
background-color: rgba(250, 229, 206, 1); |
||||
} |
||||
} |
||||
.w-footer { |
||||
margin-top: 16rpx; |
||||
display: flex; |
||||
gap: 12rpx; |
||||
flex-wrap: wrap; |
||||
.wf-label { |
||||
flex-shrink: 0; |
||||
width: 48rpx; |
||||
height: 32rpx; |
||||
} |
||||
.wf-tag { |
||||
flex-shrink: 0; |
||||
padding: 0 8rpx; |
||||
font-size: 22rpx; |
||||
color: rgba(0, 180, 197, 1); |
||||
line-height: 32rpx; |
||||
border: 1px solid rgba(191, 239, 244, 1); |
||||
border-radius: 4rpx; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.banner { |
||||
margin-top: 32rpx; |
||||
.title { |
||||
position: relative; |
||||
z-index: 1; |
||||
padding: 22rpx 30rpx 18rpx; |
||||
width: 262rpx; |
||||
height: 116rpx; |
||||
font-size: 28rpx; |
||||
font-weight: bold; |
||||
color: rgba(0, 180, 197, 1); |
||||
line-height: 1; |
||||
box-sizing: border-box; |
||||
} |
||||
.bg { |
||||
padding-top: 40rpx; |
||||
border-radius: 24rpx; |
||||
background-color: rgba(250, 229, 206, 1); |
||||
margin-top: -95rpx; |
||||
.b-container { |
||||
position: relative; |
||||
z-index: 2; |
||||
border: 1px solid #ffffff; |
||||
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%); |
||||
border-radius: 16rpx 16rpx 16rpx 16rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
.item { |
||||
padding: 32rpx 0; |
||||
flex: 1; |
||||
text-align: center; |
||||
.name { |
||||
font-size: 26rpx; |
||||
color: #fff; |
||||
line-height: 1; |
||||
} |
||||
.num { |
||||
margin-top: 24rpx; |
||||
font-size: 56rpx; |
||||
color: #fff; |
||||
line-height: 56rpx; |
||||
} |
||||
} |
||||
.line { |
||||
flex-shrink: 0; |
||||
height: 108rpx; |
||||
border-right: 1rpx dashed #ffffff; |
||||
opacity: 0.5; |
||||
} |
||||
} |
||||
.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: 1px solid #ffffff; |
||||
} |
||||
} |
||||
} |
||||
.stat { |
||||
position: relative; |
||||
margin-top: 24rpx; |
||||
padding: 96rpx 0 32rpx; |
||||
border-radius: 16rpx; |
||||
.title { |
||||
position: absolute; |
||||
top: 0; |
||||
left: 0; |
||||
padding: 16rpx 24rpx; |
||||
font-size: 28rpx; |
||||
font-weight: bold; |
||||
color: #fff; |
||||
} |
||||
.more { |
||||
position: absolute; |
||||
top: 0; |
||||
right: 0; |
||||
padding: 14rpx 20rpx; |
||||
font-size: 28rpx; |
||||
color: rgba(153, 153, 153, 1); |
||||
} |
||||
.s-container { |
||||
display: flex; |
||||
.item { |
||||
flex: 1; |
||||
text-align: center; |
||||
.name { |
||||
font-size: 28rpx; |
||||
color: rgba(128, 128, 128, 1); |
||||
line-height: 1; |
||||
} |
||||
.num { |
||||
margin-top: 24rpx; |
||||
font-size: 48rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
line-height: 56rpx; |
||||
} |
||||
} |
||||
.line { |
||||
flex-shrink: 0; |
||||
height: 108rpx; |
||||
border-right: 1rpx dashed rgba(224, 224, 224, 0.5); |
||||
} |
||||
} |
||||
} |
||||
.stat-none { |
||||
position: relative; |
||||
margin-top: 24rpx; |
||||
padding: 96rpx 0 32rpx; |
||||
border-radius: 16rpx; |
||||
.title { |
||||
position: absolute; |
||||
top: 0; |
||||
left: 0; |
||||
padding: 16rpx 30rpx; |
||||
font-size: 28rpx; |
||||
color: #fff; |
||||
font-weight: bold; |
||||
} |
||||
.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; |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,82 @@
@@ -0,0 +1,82 @@
|
||||
const app = getApp<IAppOption>(); |
||||
|
||||
// pages/story/a.ts
|
||||
Component({ |
||||
/** |
||||
* 组件的属性列表 |
||||
*/ |
||||
properties: { |
||||
userInfo: Object, |
||||
DoctorTitleType: Object, |
||||
hospitalClassification: Object, |
||||
hospitalLevel: Object, |
||||
did: String, |
||||
}, |
||||
|
||||
/** |
||||
* 组件的初始数据 |
||||
*/ |
||||
data: { |
||||
take: {}, |
||||
case: {} as any, |
||||
doctorCount: {}, |
||||
}, |
||||
|
||||
lifetimes: { |
||||
attached() { |
||||
this.getTake(); |
||||
this.getCase(); |
||||
this.getManageDoctor(); |
||||
}, |
||||
}, |
||||
/** |
||||
* 组件的方法列表 |
||||
*/ |
||||
methods: { |
||||
getTake() { |
||||
wx.ajax({ |
||||
method: "GET", |
||||
url: "?r=takeda/doctor/todo", |
||||
data: { |
||||
DoctorId: this.data.did, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
take: res, |
||||
}); |
||||
}); |
||||
}, |
||||
getCase() { |
||||
wx.ajax({ |
||||
method: "GET", |
||||
url: "?r=takeda/doctor/case", |
||||
data: { |
||||
DoctorId: this.data.did, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
case: res, |
||||
}); |
||||
}); |
||||
}, |
||||
getManageDoctor() { |
||||
wx.ajax({ |
||||
method: "GET", |
||||
url: "?r=takeda/doctor/manage-doctor-count", |
||||
data: { |
||||
DoctorId: this.data.did, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
doctorCount: res.count, |
||||
}); |
||||
}); |
||||
}, |
||||
handleQuestion(e) { |
||||
const { index } = e.currentTarget.dataset; |
||||
this.triggerEvent("question", index); |
||||
}, |
||||
}, |
||||
}); |
||||
|
||||
export {}; |
@ -0,0 +1,142 @@
@@ -0,0 +1,142 @@
|
||||
<view class="page"> |
||||
<view class="user"> |
||||
<doctorAvatar |
||||
did="{{userInfo.DoctorId}}" |
||||
class="avatar" |
||||
src="{{userInfo.Img}}" |
||||
level="{{userInfo.DoctorLevel}}" |
||||
></doctorAvatar> |
||||
<view class="wrap"> |
||||
<view class="w-header"> |
||||
<view class="name">{{userInfo.Name}}</view> |
||||
<view class="desc"> |
||||
<block wx:if="{{userInfo.TitleType === 99}}">{{userInfo.OtherTitle}}</block> |
||||
<block wx:else>{{DoctorTitleType[userInfo.TitleType]}}</block> |
||||
<block wx:for="{{userInfo.Department}}" wx:key="DepartmentId"> |
||||
<view class="line"></view> |
||||
{{item.DepartmentName}} |
||||
</block> |
||||
</view> |
||||
</view> |
||||
<view class="w-container"> |
||||
<view class="hostipal">{{userInfo.HospitalName}}</view> |
||||
<view class="tag">{{userInfo.HospitalClassificationName}}{{userInfo.HospitalLevelName}}</view> |
||||
<view class="site" wx:if="{{userInfo.CityName}}"> |
||||
{{userInfo.CityName}}{{userInfo.CountyName?'/':''}}{{userInfo.CountyName}} |
||||
</view> |
||||
</view> |
||||
<view class="w-footer" wx:if="{{userInfo.Specialty.length}}"> |
||||
<image class="wf-label" src="{{imageUrl}}text-specialty.png?t={{Timestamp}}" mode="aspectFit"></image> |
||||
<view class="wf-tag" wx:for="{{userInfo.Specialty}}" wx:key="SpecialtyId">{{item.SpecialtyName}}</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="banner"> |
||||
<view |
||||
class="title" |
||||
style="background: url({{imageUrl}}home-banner-title-bg.png?r={{Timestamp}}) no-repeat top center/262rpx 116rpx;" |
||||
> |
||||
待处理事项 |
||||
</view> |
||||
<view class="bg"> |
||||
<view class="b-container"> |
||||
<view class="item"> |
||||
<view class="name">待处理病历</view> |
||||
<view class="num">{{take.dealCaseCount*1 || '--'}}</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="name">病历更新</view> |
||||
<view class="num">{{take.notReadFeedBackCount*1 || '--'}}</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="name">学习窗消息</view> |
||||
<view class="num">{{take.notReadChatRoomCount*1 || '--'}}</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="name">医生待审核</view> |
||||
<view class="num">{{take.toAuditDoctorCount*1 || '--'}}</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view |
||||
class="stat" |
||||
wx:if="{{case.totalCaseCount>0}}" |
||||
style="background: url({{imageUrl}}home-stat-bg.png?r={{Timestamp}}) no-repeat top center/100% 100%;" |
||||
> |
||||
<view class="title">我管理的病历</view> |
||||
<view class="s-container"> |
||||
<view class="item"> |
||||
<view class="name">全部</view> |
||||
<view class="num">{{case.totalCaseCount}}</view> |
||||
</view> |
||||
<view class="line"></view> |
||||
<view class="item"> |
||||
<view class="name"> |
||||
新病历 |
||||
<van-icon catch:tap="handleQuestion" data-index="1" name="question" color="rgba(224, 224, 224, 1)" /> |
||||
</view> |
||||
<view class="num">{{case.newCaseCount}}</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="name"> |
||||
讨论中 |
||||
<van-icon catch:tap="handleQuestion" data-index="2" name="question" color="rgba(224, 224, 224, 1)" /> |
||||
</view> |
||||
<view class="num">{{case.feedbackCaseCount}}</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="name"> |
||||
已归档 |
||||
<van-icon bind:tap="handleQuestion" data-index="3" name="question" color="rgba(224, 224, 224, 1)" /> |
||||
</view> |
||||
<view class="num">{{case.archiveCaseCount}}</view> |
||||
</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="{{imageUrl}}empty-3.png?t={{Timestamp}}"></image> |
||||
<view class="tip">还没有提交病历</view> |
||||
<view></view> |
||||
</view> |
||||
</view> |
||||
<view |
||||
class="stat" |
||||
wx:if="{{doctorCount.TotalCount>0}}" |
||||
style="background: url({{imageUrl}}home-stat-bg.png?r={{Timestamp}}) no-repeat top center/100% 100%;" |
||||
> |
||||
<view class="title">我管理的医生</view> |
||||
<view class="s-container"> |
||||
<view class="item"> |
||||
<view class="name">全部</view> |
||||
<view class="num">{{doctorCount.TotalCount}}</view> |
||||
</view> |
||||
<view class="line"></view> |
||||
<view class="item"> |
||||
<view class="name">二级医生</view> |
||||
<view class="num">{{doctorCount.TwoCount}}</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="name">一级医生</view> |
||||
<view class="num">{{doctorCount.OneCount}}</view> |
||||
</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="{{imageUrl}}empty-3.png?t={{Timestamp}}"></image> |
||||
<view class="tip">还没有邀约的医生</view> |
||||
</view> |
||||
</view> |
||||
</view> |
@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
|
||||
{ |
||||
"component": true, |
||||
"usingComponents": { |
||||
"doctorAvatar": "/components/doctorAvatar/index", |
||||
"van-icon": "@vant/weapp/icon/index", |
||||
"ec-canvas": "../ec-canvas/ec-canvas" |
||||
} |
||||
} |
@ -0,0 +1,489 @@
@@ -0,0 +1,489 @@
|
||||
.page { |
||||
padding: 36rpx 32rpx 100rpx; |
||||
.user { |
||||
margin-top: 40rpx; |
||||
position: relative; |
||||
padding: 94rpx 32rpx 32rpx; |
||||
background: linear-gradient(180deg, #f1feff 0%, #ffffff 35%, #ffffff 100%); |
||||
box-shadow: 0rpx 8rpx 24rpx 0rpx rgba(0, 66, 73, 0.09); |
||||
border-radius: 16rpx 16rpx 16rpx 16rpx; |
||||
border: 2rpx solid #ffffff; |
||||
.avatar { |
||||
position: absolute; |
||||
top: -38rpx; |
||||
left: 32rpx; |
||||
width: 112rpx; |
||||
height: 112rpx; |
||||
} |
||||
.code { |
||||
position: absolute; |
||||
top: 38rpx; |
||||
right: 34rpx; |
||||
width: 60rpx; |
||||
height: 60rpx; |
||||
} |
||||
.wrap { |
||||
.w-header { |
||||
display: flex; |
||||
align-items: baseline; |
||||
gap: 16rpx; |
||||
.name { |
||||
font-size: 36rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
font-weight: bold; |
||||
} |
||||
.desc { |
||||
font-size: 28rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
.line { |
||||
margin: 0 12rpx; |
||||
display: inline-block; |
||||
height: 24rpx; |
||||
width: 1rpx; |
||||
background-color: rgba(205, 205, 205, 1); |
||||
} |
||||
} |
||||
} |
||||
.w-container { |
||||
margin-top: 24rpx; |
||||
.hostipal { |
||||
margin-right: 12rpx; |
||||
display: inline; |
||||
font-size: 28rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
} |
||||
.tag { |
||||
margin-right: 12rpx; |
||||
display: inline-block; |
||||
padding: 0 8rpx; |
||||
border-radius: 4rpx; |
||||
background-color: rgba(0, 180, 197, 1); |
||||
font-size: 24rpx; |
||||
color: #fff; |
||||
} |
||||
.site { |
||||
display: inline-block; |
||||
padding: 0 8rpx; |
||||
font-size: 24rpx; |
||||
line-height: 32rpx; |
||||
color: rgba(148, 87, 30, 1); |
||||
border-radius: 4rpx; |
||||
background-color: rgba(250, 229, 206, 1); |
||||
} |
||||
} |
||||
.w-footer { |
||||
margin-top: 16rpx; |
||||
display: flex; |
||||
gap: 12rpx; |
||||
flex-wrap: wrap; |
||||
.wf-label { |
||||
flex-shrink: 0; |
||||
width: 48rpx; |
||||
height: 32rpx; |
||||
} |
||||
.wf-tag { |
||||
flex-shrink: 0; |
||||
padding: 0 8rpx; |
||||
font-size: 22rpx; |
||||
color: rgba(0, 180, 197, 1); |
||||
line-height: 32rpx; |
||||
border: 1px solid rgba(191, 239, 244, 1); |
||||
border-radius: 4rpx; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.banner { |
||||
margin-top: 32rpx; |
||||
.title { |
||||
position: relative; |
||||
z-index: 1; |
||||
padding: 22rpx 30rpx 18rpx; |
||||
width: 262rpx; |
||||
height: 116rpx; |
||||
font-size: 28rpx; |
||||
font-weight: bold; |
||||
color: rgba(0, 180, 197, 1); |
||||
line-height: 1; |
||||
box-sizing: border-box; |
||||
} |
||||
.bg { |
||||
padding-top: 40rpx; |
||||
border-radius: 24rpx; |
||||
background-color: rgba(250, 229, 206, 1); |
||||
margin-top: -95rpx; |
||||
.b-container { |
||||
position: relative; |
||||
z-index: 2; |
||||
border: 1px solid #ffffff; |
||||
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%); |
||||
border-radius: 16rpx 16rpx 16rpx 16rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
.item { |
||||
padding: 32rpx 0; |
||||
flex: 1; |
||||
text-align: center; |
||||
.name { |
||||
font-size: 26rpx; |
||||
color: #fff; |
||||
line-height: 1; |
||||
} |
||||
.num { |
||||
margin-top: 24rpx; |
||||
font-size: 56rpx; |
||||
color: #fff; |
||||
line-height: 56rpx; |
||||
} |
||||
} |
||||
.line { |
||||
flex-shrink: 0; |
||||
height: 108rpx; |
||||
border-right: 1rpx dashed #ffffff; |
||||
opacity: 0.5; |
||||
} |
||||
} |
||||
.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: 1px solid #ffffff; |
||||
} |
||||
} |
||||
} |
||||
.stat { |
||||
position: relative; |
||||
margin-top: 24rpx; |
||||
padding: 96rpx 0 32rpx; |
||||
border-radius: 16rpx; |
||||
.title { |
||||
position: absolute; |
||||
top: 0; |
||||
left: 0; |
||||
padding: 16rpx 30rpx; |
||||
font-size: 26rpx; |
||||
color: #fff; |
||||
font-weight: bold; |
||||
} |
||||
.picker { |
||||
position: absolute; |
||||
top: 8rpx; |
||||
left: 296rpx; |
||||
.picker-content { |
||||
padding: 8rpx 24rpx; |
||||
display: flex; |
||||
gap: 18rpx; |
||||
font-size: 28rpx; |
||||
line-height: 40rpx; |
||||
color: rgba(133, 133, 133, 1); |
||||
background: #ffffff; |
||||
border-radius: 98rpx 98rpx 98rpx 98rpx; |
||||
border: 1px solid #f6f6f6; |
||||
} |
||||
} |
||||
.more { |
||||
position: absolute; |
||||
top: 0; |
||||
right: 0; |
||||
padding: 14rpx 20rpx; |
||||
font-size: 28rpx; |
||||
color: rgba(153, 153, 153, 1); |
||||
} |
||||
.s-container { |
||||
display: flex; |
||||
.item { |
||||
position: relative; |
||||
flex: 1; |
||||
text-align: center; |
||||
.name { |
||||
font-size: 28rpx; |
||||
color: rgba(128, 128, 128, 1); |
||||
line-height: 1; |
||||
} |
||||
.num { |
||||
margin-top: 24rpx; |
||||
font-size: 48rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
line-height: 56rpx; |
||||
} |
||||
.item-toast { |
||||
position: absolute; |
||||
left: -80rpx; |
||||
top: -20rpx; |
||||
transform: translate(0, -100%); |
||||
padding: 28rpx 0; |
||||
border-radius: 16rpx; |
||||
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%); |
||||
display: flex; |
||||
align-items: center; |
||||
white-space: nowrap; |
||||
font-size: 28rpx; |
||||
color: #fff; |
||||
.i-row { |
||||
padding: 0 56rpx; |
||||
} |
||||
.i-line { |
||||
width: 2rpx; |
||||
height: 32rpx; |
||||
background-color: rgba(255, 255, 255, 0.29); |
||||
} |
||||
.i-clsoe { |
||||
position: absolute; |
||||
top: -10rpx; |
||||
right: -10rpx; |
||||
width: 32rpx; |
||||
height: 32rpx; |
||||
} |
||||
&::after { |
||||
position: absolute; |
||||
left: 134rpx; |
||||
bottom: -10rpx; |
||||
content: ""; |
||||
width: 0; |
||||
height: 0; |
||||
border-style: solid; |
||||
border-width: 18rpx 18rpx 0 18rpx; |
||||
border-color: #4abfc0 transparent transparent transparent; |
||||
} |
||||
} |
||||
} |
||||
.line { |
||||
flex-shrink: 0; |
||||
height: 108rpx; |
||||
border-right: 1rpx dashed rgba(224, 224, 224, 0.5); |
||||
} |
||||
} |
||||
.s-container-none { |
||||
padding: 4rpx 0; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
gap: 26rpx; |
||||
.none { |
||||
width: 102rpx; |
||||
height: 102rpx; |
||||
} |
||||
.tip { |
||||
font-size: 28rpx; |
||||
color: rgba(128, 128, 128, 1); |
||||
} |
||||
} |
||||
} |
||||
.department { |
||||
margin-top: 24rpx; |
||||
padding: 0 20rpx; |
||||
background: linear-gradient(180deg, #f1feff 0%, #ffffff 35%, #ffffff 100%); |
||||
border-radius: 16rpx 16rpx 16rpx 16rpx; |
||||
border: 2rpx solid #ffffff; |
||||
.d-header { |
||||
padding: 32rpx 0; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
.name { |
||||
font-size: 32rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
font-weight: bold; |
||||
} |
||||
.more { |
||||
font-size: 28rpx; |
||||
color: rgba(153, 153, 153, 1); |
||||
} |
||||
} |
||||
.d-container { |
||||
padding: 32rpx 0; |
||||
background: linear-gradient(180deg, #f3fbfd 0%, #ffffff 50%); |
||||
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.08); |
||||
border-radius: 16rpx 16rpx 16rpx 16rpx; |
||||
border: 2rpx solid #ffffff; |
||||
display: flex; |
||||
justify-content: space-between; |
||||
.item { |
||||
flex: 1; |
||||
text-align: center; |
||||
.name { |
||||
font-size: 28rpx; |
||||
color: rgba(128, 128, 128, 1); |
||||
line-height: 1; |
||||
} |
||||
.num { |
||||
margin-top: 24rpx; |
||||
font-size: 48rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
line-height: 56rpx; |
||||
} |
||||
} |
||||
} |
||||
.tip { |
||||
padding: 20rpx 0; |
||||
font-size: 22rpx; |
||||
color: rgba(153, 153, 153, 1); |
||||
text-align: right; |
||||
} |
||||
} |
||||
.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%); |
||||
border-radius: 16rpx 16rpx 16rpx 16rpx; |
||||
border: 2rpx solid #ffffff; |
||||
.c-header { |
||||
padding: 32rpx 20rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
.name { |
||||
font-size: 32rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
font-weight: bold; |
||||
} |
||||
.picker { |
||||
.picker-content { |
||||
padding: 8rpx 24rpx; |
||||
display: flex; |
||||
gap: 18rpx; |
||||
font-size: 28rpx; |
||||
color: rgba(133, 133, 133, 1); |
||||
background: #ffffff; |
||||
border-radius: 98rpx 98rpx 98rpx 98rpx; |
||||
border: 1px solid #f6f6f6; |
||||
} |
||||
} |
||||
} |
||||
.chart { |
||||
height: 450rpx; |
||||
} |
||||
.tip { |
||||
padding: 24rpx 20rpx 32rpx; |
||||
font-size: 22rpx; |
||||
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; |
||||
padding: 0 32rpx 100rpx; |
||||
background: linear-gradient(180deg, #f1feff 0%, #ffffff 14%, #ffffff 100%); |
||||
border-radius: 32rpx 32rpx 0 0; |
||||
border: 2rpx solid #ffffff; |
||||
.r-header { |
||||
padding: 32rpx 0; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
.title { |
||||
font-size: 32rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
font-weight: bold; |
||||
} |
||||
.more { |
||||
font-size: 28rpx; |
||||
color: rgba(153, 153, 153, 1); |
||||
} |
||||
} |
||||
.table { |
||||
.thead { |
||||
padding: 22rpx 0; |
||||
display: flex; |
||||
font-size: 28rpx; |
||||
color: rgba(0, 180, 197, 1); |
||||
background-color: rgba(233, 246, 247, 1); |
||||
text-align: center; |
||||
border-radius: 8rpx; |
||||
.th1 { |
||||
width: 338rpx; |
||||
} |
||||
.th2, |
||||
.th3, |
||||
.th4, |
||||
.th5 { |
||||
width: 96rpx; |
||||
white-space: nowrap; |
||||
} |
||||
} |
||||
.tbody { |
||||
border-bottom: 1rpx solid rgba(224, 224, 224, 0.5); |
||||
.tr { |
||||
display: flex; |
||||
font-size: 28rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
text-align: center; |
||||
padding: 18rpx 0; |
||||
line-height: 32rpx; |
||||
border-radius: 8rpx; |
||||
&:nth-child(even) { |
||||
background-color: rgba(248, 248, 248, 1); |
||||
} |
||||
.td1 { |
||||
padding: 12rpx 10rpx; |
||||
width: 338rpx; |
||||
text-align-last: left; |
||||
} |
||||
.td2, |
||||
.td3, |
||||
.td4, |
||||
.td5 { |
||||
padding: 12rpx 0; |
||||
width: 96rpx; |
||||
border-left: 1px dashed rgba(224, 224, 224, 1); |
||||
} |
||||
.td2 { |
||||
color: rgba(0, 180, 197, 1); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,115 @@
@@ -0,0 +1,115 @@
|
||||
import dayjs from "dayjs"; |
||||
const app = getApp<IAppOption>(); |
||||
|
||||
const echarts = require("../ec-canvas/echarts.js"); |
||||
|
||||
// pages/story/a.ts
|
||||
Component({ |
||||
/** |
||||
* 组件的属性列表 |
||||
*/ |
||||
properties: { |
||||
userInfo: Object, |
||||
DoctorTitleType: Object, |
||||
hospitalClassification: Object, |
||||
hospitalLevel: Object, |
||||
did: String, |
||||
}, |
||||
|
||||
/** |
||||
* 组件的初始数据 |
||||
*/ |
||||
data: { |
||||
take: {}, |
||||
case: {} as any, |
||||
doctorCount: {}, |
||||
|
||||
DepartmentId: "", |
||||
DepartmentName: "", |
||||
|
||||
newCaseShow: false, |
||||
}, |
||||
|
||||
lifetimes: { |
||||
attached() { |
||||
const { DepartmentId, DepartmentName } = this.data.userInfo.Department[0]; |
||||
this.setData({ |
||||
Department: this.data.userInfo.Department, |
||||
DepartmentId, |
||||
DepartmentName, |
||||
}); |
||||
this.getTake(); |
||||
this.getCase(); |
||||
this.getManageDoctor(); |
||||
}, |
||||
}, |
||||
/** |
||||
* 组件的方法列表 |
||||
*/ |
||||
methods: { |
||||
getTake() { |
||||
wx.ajax({ |
||||
method: "GET", |
||||
url: "?r=takeda/doctor/todo", |
||||
data: { |
||||
DoctorId: this.data.did, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
take: res, |
||||
}); |
||||
}); |
||||
}, |
||||
handleChangeDept(e) { |
||||
const index = e.detail.value; |
||||
const { DepartmentId, DepartmentName } = this.data.userInfo.Department[index]; |
||||
this.setData({ |
||||
DepartmentId, |
||||
DepartmentName, |
||||
}); |
||||
this.getCase(); |
||||
this.getManageDoctor(); |
||||
}, |
||||
getCase() { |
||||
wx.ajax({ |
||||
method: "GET", |
||||
url: "?r=takeda/doctor/case", |
||||
data: { |
||||
DepartmentId: this.data.DepartmentId, |
||||
DoctorId: this.data.did, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
case: res, |
||||
}); |
||||
}); |
||||
}, |
||||
getManageDoctor() { |
||||
wx.ajax({ |
||||
method: "GET", |
||||
url: "?r=takeda/doctor/manage-doctor-count", |
||||
data: { DepartmentId: this.data.DepartmentId, DoctorId: this.data.did }, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
doctorCount: res.count, |
||||
}); |
||||
}); |
||||
}, |
||||
handleQuestion(e) { |
||||
const { index } = e.currentTarget.dataset; |
||||
this.triggerEvent("question", index); |
||||
}, |
||||
handleNewCase() { |
||||
this.setData({ |
||||
newCaseShow: true, |
||||
}); |
||||
}, |
||||
handleNewCaseClose() { |
||||
this.setData({ |
||||
newCaseShow: false, |
||||
}); |
||||
}, |
||||
}, |
||||
}); |
||||
|
||||
export {}; |
@ -0,0 +1,140 @@
@@ -0,0 +1,140 @@
|
||||
<view class="page"> |
||||
<view class="user"> |
||||
<doctorAvatar did="{{userInfo.DoctorId}}" class="avatar" src="{{userInfo.Img}}" level="4"></doctorAvatar> |
||||
<view class="wrap"> |
||||
<view class="w-header"> |
||||
<view class="name">{{userInfo.Name}}</view> |
||||
<view class="desc"> |
||||
<block wx:if="{{userInfo.TitleType === 99}}">{{userInfo.OtherTitle}}</block> |
||||
<block wx:else>{{DoctorTitleType[userInfo.TitleType]}}</block> |
||||
<block wx:for="{{userInfo.Department}}" wx:key="DepartmentId"> |
||||
<view class="line"></view> |
||||
{{item.DepartmentName}} |
||||
</block> |
||||
</view> |
||||
</view> |
||||
<view class="w-container"> |
||||
<view class="hostipal">{{userInfo.HospitalName}}</view> |
||||
<view class="tag">{{userInfo.HospitalClassificationName}}{{userInfo.HospitalLevelName}}</view> |
||||
<view class="site" wx:if="{{userInfo.CityName}}"> |
||||
{{userInfo.CityName}}{{userInfo.CountyName?'/':''}}{{userInfo.CountyName}} |
||||
</view> |
||||
</view> |
||||
<view class="w-footer" wx:if="{{userInfo.Specialty.length}}"> |
||||
<image class="wf-label" src="{{imageUrl}}text-specialty.png?t={{Timestamp}}" mode="aspectFit"></image> |
||||
<view class="wf-tag" wx:for="{{userInfo.Specialty}}" wx:key="SpecialtyId">{{item.SpecialtyName}}</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="banner"> |
||||
<view |
||||
class="title" |
||||
style="background: url({{imageUrl}}home-banner-title-bg.png?r={{Timestamp}}) no-repeat top center/262rpx 116rpx;" |
||||
> |
||||
待处理事项 |
||||
</view> |
||||
<view class="bg"> |
||||
<view class="b-container"> |
||||
<view class="item"> |
||||
<view class="name">待处理病历</view> |
||||
<view class="num">{{take.dealCaseCount*1 || '--'}}</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="name">学习窗消息</view> |
||||
<view class="num">{{take.notReadChatRoomCount*1 || '--'}}</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="name">医生待审核</view> |
||||
<view class="num">{{take.toAuditDoctorCount*1 || '--'}}</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view |
||||
class="stat" |
||||
style="background: url({{imageUrl}}home-stat-bg.png?r={{Timestamp}}) no-repeat top center/100% 100%;" |
||||
> |
||||
<view class="title">本科室全部病历</view> |
||||
<picker class="picker" range="{{Department}}" range-key="DepartmentName" bind:change="handleChangeDept"> |
||||
<view class="picker-content"> |
||||
<view class="text">{{DepartmentName}}</view> |
||||
<van-icon name="arrow-down" /> |
||||
</view> |
||||
</picker> |
||||
<view class="s-container" wx:if="{{case.totalCaseCount>0}}"> |
||||
<view class="item"> |
||||
<view class="name">全部</view> |
||||
<view class="num">{{case.totalCaseCount}}</view> |
||||
</view> |
||||
<view class="line"></view> |
||||
<view class="item" bind:tap="handleNewCase"> |
||||
<view class="name"> |
||||
新病历 |
||||
<van-icon catch:tap="handleQuestion" data-index="1" name="question" color="rgba(224, 224, 224, 1)" /> |
||||
</view> |
||||
<view class="num">{{case.newCaseCount}}</view> |
||||
<view class="item-toast" wx:if="{{newCaseShow}}"> |
||||
<image |
||||
class="i-clsoe" |
||||
src="{{imageUrl}}icon-close.png?r={{Timestamp}}" |
||||
catch:tap="handleNewCaseClose" |
||||
></image> |
||||
<view class="i-row">本科室:{{case.newOneCaseCount}}</view> |
||||
<view class="i-line"></view> |
||||
<view class="i-row">无科室:{{case.newTwoCaseCount}}</view> |
||||
</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="name"> |
||||
讨论中 |
||||
<van-icon catch:tap="handleQuestion" data-index="2" name="question" color="rgba(224, 224, 224, 1)" /> |
||||
</view> |
||||
<view class="num">{{case.feedbackCaseCount}}</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="name"> |
||||
已归档 |
||||
<van-icon bind:tap="handleQuestion" data-index="3" name="question" color="rgba(224, 224, 224, 1)" /> |
||||
</view> |
||||
<view class="num">{{case.archiveCaseCount}}</view> |
||||
</view> |
||||
</view> |
||||
<view class="s-container-none" wx:else> |
||||
<image class="none" src="{{imageUrl}}empty-3.png?t={{Timestamp}}"></image> |
||||
<view class="tip">暂时还没有医生提交病历哦~</view> |
||||
</view> |
||||
</view> |
||||
<view class="department" wx:if="{{doctorCount.TotalCount>0}}"> |
||||
<view class="d-header"> |
||||
<view class="name">本科室医生</view> |
||||
</view> |
||||
<view class="d-container"> |
||||
<view class="item"> |
||||
<view class="name">医生总数</view> |
||||
<view class="num">{{doctorCount.TotalCount}}</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="name">质控医生</view> |
||||
<view class="num">{{doctorCount.ThreeCount}}</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="name">核心医生</view> |
||||
<view class="num">{{doctorCount.TwoCount}}</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="name">一级医生</view> |
||||
<view class="num">{{doctorCount.OneCount}}</view> |
||||
</view> |
||||
</view> |
||||
<view class="tip">注:一级医生为平台全部医生,不区分科室</view> |
||||
</view> |
||||
<view class="department-none" wx:else> |
||||
<view class="d-header"> |
||||
<view class="name">本科室医生</view> |
||||
</view> |
||||
<view class="d-container"> |
||||
<image class="none-img" src="{{imageUrl}}empty-4.png?t={{Timestamp}}"></image> |
||||
<view class="none-title">暂无数据</view> |
||||
</view> |
||||
</view> |
||||
</view> |
After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 42 KiB |
@ -0,0 +1,17 @@
@@ -0,0 +1,17 @@
|
||||
{ |
||||
"navigationStyle": "default", |
||||
"navigationBarTitleText": "医生看板", |
||||
"usingComponents": { |
||||
"doctorLevel1": "../../../echart/components/doctorLevel1/index", |
||||
"doctorLevel2": "../../../echart/components/doctorLevel2/index", |
||||
"doctorLevel3": "../../../echart/components/doctorLevel3/index", |
||||
"doctorLevel4": "../../../echart/components/doctorLevel4/index", |
||||
"van-popup": "@vant/weapp/popup/index" |
||||
}, |
||||
"componentPlaceholder": { |
||||
"doctorLevel1": "view", |
||||
"doctorLevel2": "view", |
||||
"doctorLevel3": "view", |
||||
"doctorLevel4": "view" |
||||
} |
||||
} |
@ -0,0 +1,47 @@
@@ -0,0 +1,47 @@
|
||||
page { |
||||
background-color: rgba(250, 250, 250, 1); |
||||
} |
||||
.page { |
||||
.logo { |
||||
margin-left: 32rpx; |
||||
width: 160rpx; |
||||
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; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,96 @@
@@ -0,0 +1,96 @@
|
||||
const app = getApp<IAppOption>(); |
||||
export {}; |
||||
|
||||
Page({ |
||||
data: { |
||||
level: 0, |
||||
|
||||
hide: true, |
||||
|
||||
show1: false, |
||||
bindDoctorName: "", |
||||
|
||||
id: "", |
||||
userInfo: {}, |
||||
DoctorTitleType: {}, |
||||
|
||||
hospitalClassification: {}, |
||||
hospitalLevel: {}, |
||||
}, |
||||
onLoad(options) { |
||||
app.waitLogin().then(() => { |
||||
this.getDoctorDict(); |
||||
this.getHostipalDict(); |
||||
this.getDoctorDetail(options.id, (res) => { |
||||
this.setData({ |
||||
id: options.id, |
||||
level: res.IsSuper === 1 ? 4 : res.DoctorLevel, |
||||
userInfo: res, |
||||
}); |
||||
}); |
||||
}); |
||||
}, |
||||
onShow() { |
||||
this.setData({ |
||||
hide: false, |
||||
}); |
||||
}, |
||||
onHide() { |
||||
this.setData({ |
||||
hide: true, |
||||
}); |
||||
}, |
||||
getDoctorDetail(id, callback) { |
||||
wx.ajax({ |
||||
method: "GET", |
||||
url: "?r=takeda/doctor/detail", |
||||
data: { |
||||
DoctorId: id, |
||||
}, |
||||
}).then((res) => { |
||||
callback(res); |
||||
}); |
||||
}, |
||||
getDoctorDict() { |
||||
wx.ajax({ |
||||
method: "GET", |
||||
url: "?r=takeda/reg/doctor-dict", |
||||
data: {}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
DoctorTitleType: res.DoctorTitleType, |
||||
}); |
||||
}); |
||||
}, |
||||
getHostipalDict() { |
||||
wx.ajax({ |
||||
method: "GET", |
||||
url: "?r=takeda/reg/hospital-dict", |
||||
data: {}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
hospitalClassification: res.hospitalClassification, |
||||
hospitalLevel: res.hospitalLevel, |
||||
}); |
||||
}); |
||||
}, |
||||
|
||||
handleQuestion(e) { |
||||
const index = e.detail; |
||||
const tip = { |
||||
1: "无任何医生反馈、以及操作的病历", |
||||
2: "有医生反馈且未归档的病历", |
||||
3: "设为归档的病历,病历参与者不可反馈,仅可访问", |
||||
4: "科室医生入驻情况:按月统计所在科室注册平台的医生数,并以堆叠图显示一级医生、二级医生、三级医生数;其中,一级医生为全平台的一级医生,不区分科室", |
||||
5: "累计病历统计:按月统计所在科室累计提交的病历数,并以堆叠图显示一级医生、核心医生提交病历数", |
||||
6: "科室新增病历统计:按月统计所在科室新提交的病历 数,并以堆叠图显示一级医生、核心医生提交的病历数", |
||||
7: "医院活跃排行榜:按医院入驻医生数进行活跃排序,入驻医生数越多则活跃度越高,排序则越靠前", |
||||
}[index]; |
||||
wx.showModal({ |
||||
content: tip, |
||||
confirmColor: "#00B4C5", |
||||
cancelColor: "#141515", |
||||
showCancel: false, |
||||
}); |
||||
}, |
||||
}); |
@ -0,0 +1,38 @@
@@ -0,0 +1,38 @@
|
||||
<view class="page" wx:if="{{!hide}}"> |
||||
<doctorLevel1 |
||||
wx:if="{{level===1}}" |
||||
hospitalClassification="{{hospitalClassification}}" |
||||
hospitalLevel="{{hospitalLevel}}" |
||||
DoctorTitleType="{{DoctorTitleType}}" |
||||
userInfo="{{userInfo}}" |
||||
did="{{id}}" |
||||
bind:question="handleQuestion" |
||||
></doctorLevel1> |
||||
<doctorLevel2 |
||||
wx:elif="{{level===2}}" |
||||
hospitalClassification="{{hospitalClassification}}" |
||||
hospitalLevel="{{hospitalLevel}}" |
||||
DoctorTitleType="{{DoctorTitleType}}" |
||||
userInfo="{{userInfo}}" |
||||
did="{{id}}" |
||||
bind:question="handleQuestion" |
||||
></doctorLevel2> |
||||
<doctorLevel3 |
||||
wx:elif="{{level===3}}" |
||||
hospitalClassification="{{hospitalClassification}}" |
||||
hospitalLevel="{{hospitalLevel}}" |
||||
DoctorTitleType="{{DoctorTitleType}}" |
||||
userInfo="{{userInfo}}" |
||||
did="{{id}}" |
||||
bind:question="handleQuestion" |
||||
></doctorLevel3> |
||||
<doctorLevel4 |
||||
wx:elif="{{level===4}}" |
||||
hospitalClassification="{{hospitalClassification}}" |
||||
hospitalLevel="{{hospitalLevel}}" |
||||
DoctorTitleType="{{DoctorTitleType}}" |
||||
userInfo="{{userInfo}}" |
||||
did="{{id}}" |
||||
bind:question="handleQuestion" |
||||
></doctorLevel4> |
||||
</view> |
Loading…
Reference in new issue