@ -1 +0,0 @@
@@ -1 +0,0 @@
|
||||
export {}; |
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
{ |
||||
"component": true, |
||||
"usingComponents": { |
||||
"van-popup": "@vant/weapp/popup/index" |
||||
} |
||||
} |
@ -0,0 +1,91 @@
@@ -0,0 +1,91 @@
|
||||
.popup { |
||||
.container { |
||||
width: 630rpx; |
||||
padding: 48rpx 32rpx 0; |
||||
box-sizing: border-box; |
||||
background: linear-gradient(to top, #ffffff 0%, #ffffff 86%, #ffedeb 100%); |
||||
.title { |
||||
font-size: 36rpx; |
||||
color: rgba(20, 21, 21, 1); |
||||
font-weight: bold; |
||||
text-align: center; |
||||
} |
||||
.user { |
||||
position: relative; |
||||
margin-top: 32rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 24rpx; |
||||
justify-content: space-between; |
||||
.avatar { |
||||
flex-shrink: 0; |
||||
width: 92rpx; |
||||
height: 92rpx; |
||||
border-radius: 50%; |
||||
} |
||||
.wrap { |
||||
flex: 1; |
||||
.name { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
font-weight: bold; |
||||
} |
||||
.content { |
||||
padding-top: 12rpx; |
||||
font-size: 28rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 10rpx; |
||||
.line { |
||||
color: rgba(205, 205, 205, 0.6); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.row { |
||||
padding: 26rpx 0; |
||||
display: flex; |
||||
gap: 24rpx; |
||||
border-bottom: 1px solid rgba(247, 247, 250, 1); |
||||
.label { |
||||
flex-shrink: 0; |
||||
font-size: 32rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
} |
||||
.col { |
||||
.content { |
||||
margin-right: 8rpx; |
||||
display: inline-block; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
max-height: 30vh; |
||||
overflow-y: auto; |
||||
&::-webkit-scrollbar { |
||||
display: none; |
||||
} |
||||
} |
||||
.tag { |
||||
display: inline-block; |
||||
font-size: 20rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
padding: 0 8rpx; |
||||
background-color: rgba(255, 186, 1, 1); |
||||
border-radius: 6rpx; |
||||
} |
||||
} |
||||
} |
||||
.footer { |
||||
padding: 32rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(246, 74, 58, 1); |
||||
text-align: center; |
||||
} |
||||
} |
||||
} |
||||
.close { |
||||
margin: 32rpx auto 0; |
||||
display: block; |
||||
width: 64rpx; |
||||
height: 64rpx; |
||||
} |
@ -0,0 +1,66 @@
@@ -0,0 +1,66 @@
|
||||
const app = getApp<IAppOption>() |
||||
|
||||
Component({ |
||||
properties: { |
||||
did: { |
||||
type: String, |
||||
value: '', |
||||
}, |
||||
}, |
||||
|
||||
data: { |
||||
show: false, |
||||
doctorInfo: {}, |
||||
|
||||
imageUrl: app.globalData.imageUrl, |
||||
Timestamp: app.globalData.Timestamp, |
||||
}, |
||||
methods: { |
||||
handleShow() { |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/doctor/get-info', |
||||
data: { |
||||
doctorId: this.data.did, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
doctorInfo: res, |
||||
show: true, |
||||
}) |
||||
}) |
||||
}, |
||||
handleCancel() { |
||||
this.setData({ |
||||
show: false, |
||||
}) |
||||
}, |
||||
handleUnbind() { |
||||
const { did } = this.data |
||||
wx.showModal({ |
||||
title: '确认解绑?', |
||||
confirmColor: 'rgba(246, 74, 58, 1)', |
||||
success: (res) => { |
||||
if (res.confirm) { |
||||
wx.ajax({ |
||||
method: 'POST', |
||||
url: '?r=wtx/account/unbind-doctor', |
||||
data: { |
||||
doctorId: did, |
||||
}, |
||||
}).then(() => { |
||||
wx.showToast({ |
||||
title: '解绑成功', |
||||
icon: 'none', |
||||
}) |
||||
this.setData({ |
||||
show: false, |
||||
}) |
||||
this.triggerEvent('update') |
||||
}) |
||||
} |
||||
}, |
||||
}) |
||||
}, |
||||
}, |
||||
}) |
@ -0,0 +1,45 @@
@@ -0,0 +1,45 @@
|
||||
<slot bind:tap="handleShow"></slot> |
||||
|
||||
<van-popup |
||||
wx:if="{{show}}" |
||||
bind:click-overlay="handleCancel" |
||||
round |
||||
z-index="{{100000}}" |
||||
show="{{ true }}" |
||||
custom-style="background:transparent;" |
||||
safe-area-inset-bottom="{{false}}" |
||||
root-portal |
||||
> |
||||
<view class="popup"> |
||||
<view class="container"> |
||||
<view class="title">医生介绍</view> |
||||
<view class="user"> |
||||
<image class="avatar" src="{{doctorInfo.doctorAvatar}}"></image> |
||||
<view class="wrap"> |
||||
<view class="name">{{doctorInfo.doctorName}}</view> |
||||
</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="label">所在医院</view> |
||||
<view class="col"> |
||||
<view class="content">{{doctorInfo.hospitalName}}</view> |
||||
<view class="tag">{{doctorInfo.hospitalClassificationName}}{{doctorInfo.hospitalLevelName}}</view> |
||||
</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="label">医生简介</view> |
||||
<view class="col"> |
||||
<view class="content">{{doctorInfo.doctorIntroduce || '--'}}</view> |
||||
</view> |
||||
</view> |
||||
<view class="footer" bind:tap="handleUnbind">解绑此医生</view> |
||||
</view> |
||||
</view> |
||||
|
||||
<image |
||||
wx:if="{{params.close}}" |
||||
class="close" |
||||
src="{{imageUrl}}icon25.png?t={{Timestamp}}" |
||||
bind:tap="handleCancel" |
||||
></image> |
||||
</van-popup> |
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
{ |
||||
"component": true, |
||||
"usingComponents": { |
||||
"van-tabbar": "@vant/weapp/tabbar/index", |
||||
"van-tabbar-item": "@vant/weapp/tabbar-item/index" |
||||
} |
||||
} |
@ -0,0 +1,16 @@
@@ -0,0 +1,16 @@
|
||||
/* custom-tab-bar/index.wxss */ |
||||
|
||||
|
||||
.tab-item { |
||||
.icon { |
||||
width: 50rpx; |
||||
height: 50rpx; |
||||
} |
||||
.name { |
||||
font-size: 24rpx; |
||||
color: #010105; |
||||
&.active{ |
||||
color: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,53 @@
@@ -0,0 +1,53 @@
|
||||
import { getCurrentPageUrl } from '@/utils/util' |
||||
const app = getApp() |
||||
|
||||
Component({ |
||||
properties: {}, |
||||
data: { |
||||
imageUrl: app.globalData.imageUrl, |
||||
isChild: 0, |
||||
active: 0, |
||||
list: [ |
||||
{ |
||||
pagePath: '/doctor/pages/index/index', |
||||
text: '基因疗法', |
||||
icon: 'tabbar3-1', |
||||
iconActive: 'tabbar3-1-active', |
||||
}, |
||||
{ |
||||
pagePath: '/doctor/pages/index/index', |
||||
text: '知识库', |
||||
icon: 'tabbar3-1', |
||||
iconActive: 'tabbar3-1-active', |
||||
}, |
||||
{ |
||||
pagePath: '/doctor/pages/my/index', |
||||
text: '我的', |
||||
icon: 'tabbar3-2', |
||||
iconActive: 'tabbar3-2-active', |
||||
}, |
||||
], |
||||
}, |
||||
observers: {}, |
||||
lifetimes: { |
||||
ready() { |
||||
const pagePath = getCurrentPageUrl() |
||||
const active = this.data.list.findIndex((item) => item.pagePath === pagePath) |
||||
this.setData({ |
||||
active, |
||||
anyWhere: app.globalData.anyWhere, |
||||
}) |
||||
}, |
||||
}, |
||||
methods: { |
||||
onChange() {}, |
||||
handleNav(e) { |
||||
const { index } = e.currentTarget.dataset |
||||
const { list } = this.data |
||||
const pagePath = list[index].pagePath |
||||
wx.reLaunch({ |
||||
url: pagePath, |
||||
}) |
||||
}, |
||||
}, |
||||
}) |
@ -0,0 +1,14 @@
@@ -0,0 +1,14 @@
|
||||
<van-tabbar active="{{ active }}" active-color="rgba(28, 107, 255, 1)" bind:change="onChange" inactive-color="#010105"> |
||||
<block wx:for="{{list}}" wx:key="*this"> |
||||
<van-tabbar-item |
||||
class="tab-item" |
||||
wx:if="{{ index != 3 || !anyWhere}}" |
||||
bind:tap="handleNav" |
||||
data-index="{{index}}" |
||||
icon="{{imageUrl}}tabbar/{{active==index ? item.iconActive : item.icon}}.png?t={{Timestamp}}" |
||||
> |
||||
<view class="name {{index==active && 'active'}}">{{item.text}}</view> |
||||
<view class="hot"></view> |
||||
</van-tabbar-item> |
||||
</block> |
||||
</van-tabbar> |
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
{ |
||||
"navigationBarTitleText": "修改手机号", |
||||
"usingComponents": {} |
||||
} |
@ -0,0 +1,50 @@
@@ -0,0 +1,50 @@
|
||||
page { |
||||
background-color: rgba(247, 247, 250, 1); |
||||
} |
||||
|
||||
.page { |
||||
padding: 48rpx 40rpx; |
||||
.form { |
||||
padding: 0 32rpx; |
||||
background-color: #fff; |
||||
border-radius: 24rpx; |
||||
.row { |
||||
display: flex; |
||||
align-items: center; |
||||
.label { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
width: 5em; |
||||
} |
||||
.container { |
||||
flex: 1; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
.input { |
||||
padding: 32rpx 0; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.place-input { |
||||
color: rgba(161, 164, 172, 0.4); |
||||
} |
||||
.btn { |
||||
flex-shrink: 0; |
||||
font-size: 32rpx; |
||||
color: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.login-out { |
||||
margin-top: 48rpx; |
||||
padding: 20rpx; |
||||
font-size: 32rpx; |
||||
line-height: 48rpx; |
||||
color: #fff; |
||||
text-align: center; |
||||
background: linear-gradient(356deg, #1d6bff 0%, #4f8dff 100%); |
||||
border-radius: 96rpx; |
||||
} |
||||
} |
@ -0,0 +1,85 @@
@@ -0,0 +1,85 @@
|
||||
const app = getApp<IAppOption>() |
||||
let timer = null as null | number |
||||
|
||||
Page({ |
||||
data: { |
||||
mobile: '', |
||||
code: '', |
||||
|
||||
codeText: '发送验证码', |
||||
}, |
||||
onLoad() {}, |
||||
getCode() { |
||||
if (timer) return |
||||
const mobile = this.data.mobile |
||||
if (!mobile) { |
||||
wx.showToast({ |
||||
title: '手机号不能为空', |
||||
icon: 'none', |
||||
}) |
||||
return |
||||
} |
||||
// 验证手机号
|
||||
if (!/^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/.test(mobile)) { |
||||
wx.showToast({ |
||||
title: '手机号格式不正确', |
||||
icon: 'none', |
||||
}) |
||||
return |
||||
} |
||||
wx.ajax({ |
||||
method: 'POST', |
||||
url: '?r=wtx/doctor/login/send-verify-code', |
||||
data: { |
||||
mobile, |
||||
}, |
||||
}).then((res) => { |
||||
console.log(res) |
||||
wx.showToast({ |
||||
icon: 'none', |
||||
title: '验证码已发送~', |
||||
}) |
||||
let time = 60 |
||||
timer = setInterval(() => { |
||||
time-- |
||||
this.setData({ |
||||
codeText: time + 's后重新发送', |
||||
}) |
||||
if (time <= 0) { |
||||
clearInterval(timer as number) |
||||
timer = null |
||||
this.setData({ |
||||
codeText: '发送验证码', |
||||
}) |
||||
} |
||||
}, 1000) |
||||
}) |
||||
}, |
||||
handleSubmit() { |
||||
wx.showModal({ |
||||
title: '确定修改此手机号?', |
||||
confirmColor: 'rgba(246, 74, 58, 1)', |
||||
success: (res) => { |
||||
if (!res.confirm) return |
||||
const { mobile, code } = this.data |
||||
const { registrationSource, registChannel, regBusinessId } = app.globalData |
||||
wx.ajax({ |
||||
method: 'POST', |
||||
url: '?r=wtx/doctor/account/update-telephone', |
||||
data: { |
||||
mobile, |
||||
code, |
||||
registrationSource, |
||||
registChannel, |
||||
regBusinessId, |
||||
}, |
||||
}).then((_res) => { |
||||
wx.navigateBack() |
||||
}) |
||||
}, |
||||
}) |
||||
}, |
||||
handleBack() { |
||||
wx.navigateBack() |
||||
}, |
||||
}) |
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
<view class="page"> |
||||
<view class="form"> |
||||
<view class="row"> |
||||
<view class="label">新手机号</view> |
||||
<view class="container"> |
||||
<input |
||||
type="number" |
||||
class="input" |
||||
maxlength="11" |
||||
placeholder-class="place-input" |
||||
placeholder="请输入新手机号" |
||||
/> |
||||
</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="label">验证码</view> |
||||
<view class="container"> |
||||
<input |
||||
type="number" |
||||
class="input" |
||||
maxlength="6" |
||||
placeholder-class="place-input" |
||||
placeholder="请输入短信验证码" |
||||
/> |
||||
<view class="btn" bind:tap="getCode">{{codeText}}</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="login-out">提交</view> |
||||
</view> |
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
{ |
||||
"navigationStyle": "custom", |
||||
"usingComponents": { |
||||
"navbar": "/components/navbar/index", |
||||
"doctor-tab-bar": "/doctor/components/doctor-tab-bar/index" |
||||
} |
||||
} |
@ -0,0 +1,403 @@
@@ -0,0 +1,403 @@
|
||||
page { |
||||
background-color: rgba(246, 246, 246, 1); |
||||
} |
||||
.page-title { |
||||
width: 400rpx; |
||||
height: 52rpx; |
||||
} |
||||
|
||||
.page { |
||||
padding-bottom: 240rpx; |
||||
.header { |
||||
padding: 46rpx 0 50rpx; |
||||
.user { |
||||
padding: 0 32rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
gap: 24rpx; |
||||
.avatar { |
||||
flex-shrink: 0; |
||||
width: 120rpx; |
||||
height: 120rpx; |
||||
border-radius: 50%; |
||||
border: 2px solid #fff; |
||||
} |
||||
.wrap { |
||||
flex: 1; |
||||
.name { |
||||
font-size: 40rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
} |
||||
.content { |
||||
margin-top: 22rpx; |
||||
font-size: 28rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
} |
||||
} |
||||
.code { |
||||
flex-shrink: 0; |
||||
width: 72rpx; |
||||
height: 72rpx; |
||||
} |
||||
} |
||||
.patient { |
||||
margin-top: 26rpx; |
||||
.p-title { |
||||
padding-left: 32rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
.num { |
||||
font-size: 48rpx; |
||||
font-weight: bold; |
||||
} |
||||
} |
||||
.swiper { |
||||
margin-top: 20rpx; |
||||
height: 116rpx; |
||||
.swiper-item { |
||||
padding: 0 12rpx 0; |
||||
box-sizing: border-box; |
||||
line-height: 1; |
||||
.swiper-item-container { |
||||
background-color: rgba(255, 255, 255, 0.9); |
||||
height: 100%; |
||||
border-radius: 24rpx; |
||||
padding: 20rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 12rpx; |
||||
box-sizing: border-box; |
||||
.avatar { |
||||
width: 76rpx; |
||||
height: 76rpx; |
||||
border-radius: 50%; |
||||
} |
||||
.wrap { |
||||
.name { |
||||
font-size: 32rpx; |
||||
color: rgba(176, 178, 181, 1); |
||||
} |
||||
.date { |
||||
margin-top: 16rpx; |
||||
font-size: 24rpx; |
||||
color: rgba(105, 108, 114, 0.6); |
||||
} |
||||
} |
||||
} |
||||
&.active { |
||||
.swiper-item-container { |
||||
background-color: #fff; |
||||
box-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1); |
||||
.wrap { |
||||
.name { |
||||
color: rgba(28, 107, 255, 1); |
||||
} |
||||
.date { |
||||
color: rgba(28, 107, 255, 0.6); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.body { |
||||
position: relative; |
||||
padding: 42rpx 40rpx 0; |
||||
background-color: rgba(246, 246, 246, 1); |
||||
border-radius: 32rpx 32rpx 0 0; |
||||
&::before { |
||||
position: absolute; |
||||
top: -25rpx; |
||||
left: 80rpx; |
||||
content: ''; |
||||
width: 0; |
||||
height: 0; |
||||
border-style: solid; |
||||
border-width: 0 26rpx 26rpx 26rpx; |
||||
border-color: transparent transparent rgba(246, 246, 246, 1) transparent; |
||||
} |
||||
.doctor { |
||||
padding: 32rpx; |
||||
border-radius: 32rpx; |
||||
background-color: #fff; |
||||
.d-header { |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
.title { |
||||
font-size: 32rpx; |
||||
color: rgba(34, 34, 34, 1); |
||||
font-weight: bold; |
||||
} |
||||
.message { |
||||
position: relative; |
||||
font-size: 28rpx; |
||||
color: rgba(0, 0, 0, 0.6); |
||||
.dot { |
||||
position: absolute; |
||||
right: -7rpx; |
||||
top: -7rpx; |
||||
width: 16rpx; |
||||
height: 16rpx; |
||||
border-radius: 50%; |
||||
background-color: rgba(232, 70, 60, 1); |
||||
} |
||||
} |
||||
} |
||||
.d-container { |
||||
margin-top: 32rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
gap: 16rpx; |
||||
.avatar { |
||||
flex-shrink: 0; |
||||
width: calc(92rpx * 1.5); |
||||
display: flex; |
||||
.a-img { |
||||
flex-shrink: 0; |
||||
width: 92rpx; |
||||
height: 92rpx; |
||||
border-radius: 50%; |
||||
&:last-of-type { |
||||
transform: translateX(-50%); |
||||
} |
||||
} |
||||
} |
||||
.wrap { |
||||
flex: 1; |
||||
.name { |
||||
font-size: 32rpx; |
||||
color: rgba(34, 34, 34, 1); |
||||
font-weight: bold; |
||||
} |
||||
.content { |
||||
margin-top: 12rpx; |
||||
font-size: 28rpx; |
||||
color: rgba(0, 0, 0, 0.3); |
||||
} |
||||
} |
||||
.btn { |
||||
flex-shrink: 0; |
||||
width: 162rpx; |
||||
height: 56rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
text-align: center; |
||||
line-height: 56rpx; |
||||
background: #1c6bff; |
||||
border-radius: 68rpx 68rpx 68rpx 68rpx; |
||||
} |
||||
} |
||||
} |
||||
.progress { |
||||
margin-top: 38rpx; |
||||
.p-header { |
||||
padding-bottom: 32rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(34, 34, 34, 1); |
||||
font-weight: bold; |
||||
} |
||||
.card { |
||||
display: flex; |
||||
gap: 24rpx; |
||||
.c-aside { |
||||
flex-shrink: 0; |
||||
display: flex; |
||||
flex-direction: column; |
||||
align-items: center; |
||||
.line-top { |
||||
flex-shrink: 0; |
||||
height: 48rpx; |
||||
border-right: 1px dashed rgba(225, 225, 226, 1); |
||||
} |
||||
.num { |
||||
flex-shrink: 0; |
||||
width: 56rpx; |
||||
height: 56rpx; |
||||
border-radius: 50%; |
||||
font-size: 40rpx; |
||||
text-align: center; |
||||
line-height: 56rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
background-color: rgba(225, 225, 226, 1); |
||||
} |
||||
.line-bottom { |
||||
flex: 1; |
||||
border-right: 1px dashed rgba(225, 225, 226, 1); |
||||
} |
||||
.hide { |
||||
opacity: 0; |
||||
} |
||||
} |
||||
.c-container { |
||||
padding-bottom: 24rpx; |
||||
flex: 1; |
||||
.module { |
||||
position: relative; |
||||
padding: 32rpx; |
||||
background-color: #fff; |
||||
border-radius: 32rpx; |
||||
box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(0, 0, 0, 0.05); |
||||
.m-header { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
.title { |
||||
font-size: 32rpx; |
||||
color: rgba(171, 174, 180, 1); |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 8rpx; |
||||
.tag { |
||||
font-size: 28rpx; |
||||
color: rgba(171, 174, 180, 1); |
||||
line-height: 34rpx; |
||||
padding: 0 18rpx; |
||||
border-radius: 40rpx 40rpx 40rpx 40rpx; |
||||
border: 1rpx solid rgba(171, 174, 180, 0.52); |
||||
} |
||||
} |
||||
.date { |
||||
font-size: 28rpx; |
||||
color: rgba(171, 174, 180, 1); |
||||
} |
||||
} |
||||
.m-body { |
||||
margin-top: 16rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
.status { |
||||
font-size: 28rpx; |
||||
color: rgba(171, 174, 180, 1); |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 10rpx; |
||||
.icon { |
||||
opacity: 0; |
||||
width: 36rpx; |
||||
height: 36rpx; |
||||
} |
||||
} |
||||
.detail { |
||||
font-size: 28rpx; |
||||
color: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
.btn { |
||||
position: absolute; |
||||
top: 48rpx; |
||||
right: 32rpx; |
||||
width: 162rpx; |
||||
height: 56rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
font-size: 32rpx; |
||||
color: rgba(181, 184, 189, 0.6); |
||||
border-radius: 68rpx 68rpx 68rpx 68rpx; |
||||
border: 2rpx solid rgba(181, 184, 189, 0.6); |
||||
} |
||||
} |
||||
} |
||||
&.finish { |
||||
.c-aside { |
||||
.line-top { |
||||
border-color: rgba(28, 107, 255, 1); |
||||
} |
||||
.num { |
||||
background-color: rgba(14, 209, 167, 1); |
||||
} |
||||
.line-bottom { |
||||
border-color: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
.c-container { |
||||
.module { |
||||
.m-header { |
||||
.title { |
||||
color: rgba(34, 34, 34, 1); |
||||
} |
||||
} |
||||
.m-body { |
||||
.status { |
||||
color: rgba(14, 209, 167, 1); |
||||
.icon { |
||||
opacity: 1; |
||||
} |
||||
} |
||||
.detail { |
||||
color: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
&.current { |
||||
.c-aside { |
||||
.line-top { |
||||
border-color: rgba(28, 107, 255, 1); |
||||
} |
||||
.num { |
||||
background-color: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
.c-container { |
||||
.module { |
||||
.m-header { |
||||
.title { |
||||
color: rgba(34, 34, 34, 1); |
||||
} |
||||
} |
||||
.m-body { |
||||
.status { |
||||
color: rgba(34, 34, 34, 1); |
||||
} |
||||
.detail { |
||||
color: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.kkd { |
||||
margin-top: 32rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
gap: 22rpx; |
||||
.k-item { |
||||
padding: 28rpx 24rpx; |
||||
flex: 1; |
||||
background: linear-gradient(52deg, #ffffff 0%, #eff4ff 100%); |
||||
border-radius: 32rpx 32rpx 32rpx 32rpx; |
||||
border: 2rpx solid #ffffff; |
||||
display: flex; |
||||
align-items: center; |
||||
.icon { |
||||
width: 88rpx; |
||||
height: 88rpx; |
||||
} |
||||
.wrap { |
||||
padding-left: 14rpx; |
||||
.title { |
||||
font-size: 28rpx; |
||||
color: rgba(34, 34, 34, 1); |
||||
line-height: 44rpx; |
||||
} |
||||
.content { |
||||
font-size: 32rpx; |
||||
color: rgba(34, 34, 34, 1); |
||||
font-weight: bold; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
|
||||
const _app = getApp<IAppOption>(); |
||||
|
||||
Page({ |
||||
data: {}, |
||||
onLoad() {}, |
||||
}); |
||||
|
||||
export {} |
@ -0,0 +1,177 @@
@@ -0,0 +1,177 @@
|
||||
<navbar fixed custom-style="background:{{background}}" back> |
||||
<image class="page-title" slot="left" src="{{imageUrl}}title11.png?t={{Timestamp}}"></image> |
||||
</navbar> |
||||
<view |
||||
class="page" |
||||
style="padding-top:{{pageTop}}px;background:url('{{imageUrl}}bg17.png?t={{Timestamp}}') no-repeat top center/100% 666rpx" |
||||
> |
||||
<view class="header"> |
||||
<view class="user"> |
||||
<image |
||||
class="avatar" |
||||
src="https://pic1.zhimg.com/50/v2-8cfef5f9ea7d15963af2277c6814f152_720w.jpg?source=2c26e567" |
||||
></image> |
||||
<view class="wrap"> |
||||
<view class="name">王青</view> |
||||
<view class="content">北京协和医院</view> |
||||
</view> |
||||
<image class="code" src="/images/icon72.png"></image> |
||||
</view> |
||||
<view class="patient"> |
||||
<view class="p-title"> |
||||
您当前跟进 |
||||
<text class="num">4</text> |
||||
个患者 |
||||
</view> |
||||
<swiper class="swiper" display-multiple-items="{{2.8}}" circular previous-margin="10rpx"> |
||||
<swiper-item class="swiper-item {{index==0 && 'active'}}" wx:for="{{6}}" wx:key="index"> |
||||
<view class="swiper-item-container"> |
||||
<image |
||||
class="avatar" |
||||
src="https://pic1.zhimg.com/50/v2-8cfef5f9ea7d15963af2277c6814f152_720w.jpg?source=2c26e567" |
||||
></image> |
||||
<view class="wrap"> |
||||
<view class="name">刘可</view> |
||||
<view class="date">2024.3.12</view> |
||||
</view> |
||||
</view> |
||||
</swiper-item> |
||||
</swiper> |
||||
</view> |
||||
</view> |
||||
<view class="body"> |
||||
<view class="doctor"> |
||||
<view class="d-header"> |
||||
<view class="title">共同照护团队</view> |
||||
<view class="message"> |
||||
最新消息12条 |
||||
<view class="dot"></view> |
||||
</view> |
||||
</view> |
||||
<view class="d-container"> |
||||
<view class="avatar"> |
||||
<image |
||||
class="a-img" |
||||
src="https://pic1.zhimg.com/50/v2-8cfef5f9ea7d15963af2277c6814f152_720w.jpg?source=2c26e567" |
||||
></image> |
||||
<image |
||||
class="a-img" |
||||
src="https://pic1.zhimg.com/50/v2-8cfef5f9ea7d15963af2277c6814f152_720w.jpg?source=2c26e567" |
||||
></image> |
||||
</view> |
||||
<view class="wrap"> |
||||
<view class="name">刘湖飞</view> |
||||
<view class="content">天津血液科诊断中心</view> |
||||
</view> |
||||
<view class="btn">去看看></view> |
||||
</view> |
||||
</view> |
||||
<view class="progress"> |
||||
<view class="p-header">刘可的检查进展</view> |
||||
<view class="card finish"> |
||||
<view class="c-aside"> |
||||
<view class="line-top hide"></view> |
||||
<view class="num">1</view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="c-container"> |
||||
<view class="module"> |
||||
<view class="m-header"> |
||||
<view class="title">诊前筛查</view> |
||||
<view class="date">2024-08-24</view> |
||||
</view> |
||||
<view class="m-body"> |
||||
<view class="status"> |
||||
已完成 |
||||
<image class="icon" src="/images/icon29.png"></image> |
||||
</view> |
||||
<view class="detail">查看详情</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="card current"> |
||||
<view class="c-aside"> |
||||
<view class="line-top"></view> |
||||
<view class="num">2</view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="c-container"> |
||||
<view class="module"> |
||||
<view class="m-header"> |
||||
<view class="title">注射前准备</view> |
||||
</view> |
||||
<view class="m-body"> |
||||
<view class="status"> |
||||
进行中 |
||||
<image class="icon" src="/images/icon29.png"></image> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="card"> |
||||
<view class="c-aside"> |
||||
<view class="line-top"></view> |
||||
<view class="num">3</view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="c-container"> |
||||
<view class="module"> |
||||
<view class="m-header"> |
||||
<view class="title"> |
||||
诊前筛查 |
||||
<view class="tag">还未确定注射日</view> |
||||
</view> |
||||
</view> |
||||
<view class="m-body"> |
||||
<view class="status"> |
||||
待启动 |
||||
<image class="icon" src="/images/icon29.png"></image> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="card"> |
||||
<view class="c-aside"> |
||||
<view class="line-top"></view> |
||||
<view class="num">4</view> |
||||
<view class="line-bottom hide"></view> |
||||
</view> |
||||
<view class="c-container"> |
||||
<view class="module"> |
||||
<view class="m-header"> |
||||
<view class="title">诊前筛查</view> |
||||
</view> |
||||
<view class="m-body"> |
||||
<view class="status"> |
||||
已完成 |
||||
<image class="icon" src="/images/icon29.png"></image> |
||||
</view> |
||||
</view> |
||||
<view class="btn">待启动</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="kkd"> |
||||
<view class="k-item"> |
||||
<image class="icon" src="/images/icon73.png"></image> |
||||
<view class="wrap"> |
||||
<view class="title">他的全部</view> |
||||
<view class="content">病历档案</view> |
||||
</view> |
||||
</view> |
||||
<view class="k-item"> |
||||
<image class="icon" src="/images/icon74.png"></image> |
||||
<view class="wrap"> |
||||
<view class="title">查看他的</view> |
||||
<view class="content">健康变化</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
|
||||
<doctor-tab-bar></doctor-tab-bar> |
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
{ |
||||
"navigationStyle": "custom", |
||||
"usingComponents": { |
||||
"van-divider": "@vant/weapp/divider/index" |
||||
} |
||||
} |
@ -0,0 +1,125 @@
@@ -0,0 +1,125 @@
|
||||
page { |
||||
background-color: rgba(246, 246, 246, 1); |
||||
} |
||||
.page { |
||||
padding: 0 70rpx 100rpx; |
||||
.logo { |
||||
display: block; |
||||
margin: 0 auto; |
||||
width: 164rpx; |
||||
height: 164rpx; |
||||
border-radius: 24rpx; |
||||
} |
||||
.title { |
||||
margin-top: 32rpx; |
||||
text-align: center; |
||||
font-size: 48rpx; |
||||
color: transparent; |
||||
background: linear-gradient(0deg, rgba(114, 163, 255, 1) 0%, rgba(29, 107, 255, 1) 100%); |
||||
font-weight: bold; |
||||
-webkit-background-clip: text; |
||||
background-clip: text; |
||||
} |
||||
.form { |
||||
margin-top: 50rpx; |
||||
.form-row { |
||||
margin-bottom: 32rpx; |
||||
display: flex; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
padding: 12rpx 12rpx 12rpx 32rpx; |
||||
background-color: #fff; |
||||
border-radius: 24rpx; |
||||
.input { |
||||
flex: 1; |
||||
line-height: 60rpx; |
||||
height: 60rpx; |
||||
font-size: 32rpx; |
||||
} |
||||
.place-input { |
||||
color: rgba(161, 164, 172, 1); |
||||
} |
||||
.btn { |
||||
padding: 0 24rpx; |
||||
height: 60rpx; |
||||
font-size: 28rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
background-color: rgba(28, 107, 255, 1); |
||||
border-radius: 20rpx; |
||||
} |
||||
} |
||||
.submit { |
||||
margin-top: 50rpx; |
||||
height: 96rpx; |
||||
font-size: 32rpx; |
||||
color: #fff; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
border-radius: 84rpx 84rpx 84rpx 84rpx; |
||||
background: linear-gradient(356deg, #1d6bff 0%, #4f8dff 100%); |
||||
} |
||||
} |
||||
.divider { |
||||
margin: 48rpx 150rpx 0; |
||||
.van-divider { |
||||
color: rgba(207, 209, 213, 1); |
||||
} |
||||
} |
||||
.phone { |
||||
margin-top: 38rpx; |
||||
height: 48rpx; |
||||
width: 280rpx; |
||||
font-size: 24rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
border-radius: 84rpx 84rpx 84rpx 84rpx; |
||||
background-color: #fff; |
||||
&::after { |
||||
border: none; |
||||
} |
||||
.icon { |
||||
width: 48rpx; |
||||
height: 48rpx; |
||||
} |
||||
} |
||||
.tel-btn { |
||||
margin: 0 auto; |
||||
padding: 4rpx 0; |
||||
width: 266rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
gap: 12rpx; |
||||
background: #f7f7fa; |
||||
border-radius: 24rpx; |
||||
font-size: 24rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
.icon { |
||||
width: 40rpx; |
||||
height: 40rpx; |
||||
} |
||||
} |
||||
.signature { |
||||
margin-top: 88rpx; |
||||
font-size: 28rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
line-height: 48rpx; |
||||
.row { |
||||
margin-top: 24rpx; |
||||
display: flex; |
||||
.checkbox { |
||||
margin-top: -8rpx; |
||||
transform: scale(0.8); |
||||
} |
||||
} |
||||
.link { |
||||
color: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,116 @@
@@ -0,0 +1,116 @@
|
||||
const app = getApp<IAppOption>() |
||||
let timer = null as null | number |
||||
|
||||
Page({ |
||||
data: { |
||||
showTel: false, |
||||
mobile: '', |
||||
code: '', |
||||
|
||||
codeText: '发送验证码', |
||||
|
||||
check1: false, |
||||
check2: false, |
||||
}, |
||||
onLoad() {}, |
||||
getCode() { |
||||
if (timer) return |
||||
const mobile = this.data.mobile |
||||
if (!mobile) { |
||||
wx.showToast({ |
||||
title: '手机号不能为空', |
||||
icon: 'none', |
||||
}) |
||||
return |
||||
} |
||||
// 验证手机号
|
||||
if (!/^1[3-9,]\d{9}$/.test(mobile)) { |
||||
wx.showToast({ |
||||
title: '手机号格式不正确', |
||||
icon: 'none', |
||||
}) |
||||
return |
||||
} |
||||
wx.ajax({ |
||||
method: 'POST', |
||||
url: '?r=wtx/doctor/login/send-verify-code', |
||||
data: { |
||||
mobile, |
||||
}, |
||||
}).then((_res) => { |
||||
wx.showToast({ |
||||
icon: 'none', |
||||
title: '验证码已发送~', |
||||
}) |
||||
let time = 60 |
||||
timer = setInterval(() => { |
||||
time-- |
||||
this.setData({ |
||||
codeText: `${time}s后重新发送`, |
||||
}) |
||||
if (time <= 0) { |
||||
clearInterval(timer as number) |
||||
timer = null |
||||
this.setData({ |
||||
codeText: '发送验证码', |
||||
}) |
||||
} |
||||
}, 1000) |
||||
}) |
||||
}, |
||||
handleDocRule() { |
||||
const { check1, check2 } = this.data |
||||
return new Promise((resolve) => { |
||||
if (check1 && check2) { |
||||
return resolve(true) |
||||
} |
||||
wx.showToast({ |
||||
title: '请同意相关协议', |
||||
icon: 'none', |
||||
}) |
||||
}) |
||||
}, |
||||
async handleSubmit() { |
||||
await this.handleDocRule() |
||||
const { mobile, code } = this.data |
||||
wx.ajax({ |
||||
method: 'POST', |
||||
url: '?r=wtx/doctor/login/reg-login', |
||||
data: { |
||||
mobile, |
||||
code, |
||||
}, |
||||
}).then((_res) => { |
||||
this.submitCallback() |
||||
}) |
||||
}, |
||||
handleWxSubmit(e: WechatMiniprogram.CustomEvent) { |
||||
const { iv, encryptedData } = e.detail |
||||
if (iv && encryptedData) { |
||||
wx.ajax({ |
||||
method: 'POST', |
||||
url: '?r=wtx/doctor/login/wx-reg-login', |
||||
data: { |
||||
iv: encodeURIComponent(iv), |
||||
encryptedData: encodeURIComponent(encryptedData), |
||||
}, |
||||
}).then((_res) => { |
||||
this.submitCallback() |
||||
}) |
||||
} |
||||
}, |
||||
submitCallback() { |
||||
app.getUserInfo(3).then(() => { |
||||
wx.reLaunch({ |
||||
url: `/doctor/pages/index/index`, |
||||
}) |
||||
}) |
||||
}, |
||||
handleShowTel() { |
||||
this.setData({ |
||||
showTel: !this.data.showTel, |
||||
}) |
||||
}, |
||||
}) |
||||
|
||||
export {} |
@ -0,0 +1,60 @@
@@ -0,0 +1,60 @@
|
||||
<view |
||||
class="page" |
||||
style="padding-top: {{pageTop + 60}}px;background:url('{{imageUrl}}bg19.png?t={{Timestamp}}') no-repeat top center/100% 618rpx;" |
||||
> |
||||
<image class="logo" src="/images/logo2.png"></image> |
||||
<view class="title">欢迎加入愈见守护</view> |
||||
<view class="form"> |
||||
<view class="form-row"> |
||||
<input |
||||
class="input" |
||||
placeholder-class="place-input" |
||||
type="number" |
||||
maxlength="11" |
||||
placeholder="请输入您的手机号" |
||||
model:value="{{mobile}}" |
||||
/> |
||||
</view> |
||||
<view class="form-row"> |
||||
<input |
||||
class="input" |
||||
medal:value="{{code}}" |
||||
placeholder-class="place-input" |
||||
type="number" |
||||
maxlength="6" |
||||
placeholder="请输入验证码" |
||||
/> |
||||
<view class="btn" bind:tap="getCode">{{codeText}}</view> |
||||
</view> |
||||
<view class="submit" bind:tap="handleSubmit">登录</view> |
||||
</view> |
||||
<view class="divider"> |
||||
<van-divider class="van-divider" contentPosition="center">或者</van-divider> |
||||
</view> |
||||
<button wx:if="{{check1 && check2 }}" class="phone" open-type="getPhoneNumber" bindgetphonenumber="handleWxSubmit"> |
||||
<image class="icon" src="/images/icon87.png"></image> |
||||
手机号一键登录 |
||||
</button> |
||||
<button wx:else class="phone" bind:tap="handleDocRule"> |
||||
<image class="icon" src="/images/icon87.png"></image> |
||||
手机号一键登录 |
||||
</button> |
||||
|
||||
<view class="signature"> |
||||
<view class="row"> |
||||
<checkbox model:checked="{{check1}}" class="checkbox" color="rgba(28, 107, 255, 1)"></checkbox> |
||||
<view class="r-content"> |
||||
我已阅读并同意 |
||||
<text class="link">《个人信息及隐私协议政策》</text> |
||||
</view> |
||||
</view> |
||||
<view class="row"> |
||||
<checkbox model:checked="{{check2}}" class="checkbox" color="rgba(28, 107, 255, 1)"></checkbox> |
||||
<view class="r-content"> |
||||
我已阅读并同意 |
||||
<text class="link">《个人信息共享知情同意书》</text> |
||||
规定收集我的相关敏感个人信息 |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
{ |
||||
"navigationStyle": "custom", |
||||
"usingComponents": { |
||||
"popup": "/components/popup/index", |
||||
"patient-tab-bar":"/patient/components/patient-tab-bar/index" |
||||
} |
||||
} |
@ -0,0 +1,112 @@
@@ -0,0 +1,112 @@
|
||||
page { |
||||
background-color: rgba(247, 247, 250, 1); |
||||
} |
||||
.page { |
||||
padding: 52rpx 30rpx; |
||||
.user { |
||||
display: flex; |
||||
align-items: center; |
||||
.avatar-wrapper { |
||||
flex-shrink: 0; |
||||
padding: 0; |
||||
margin: 0; |
||||
width: 128rpx; |
||||
height: 128rpx; |
||||
outline: none; |
||||
background-color: transparent; |
||||
border-radius: 50%; |
||||
border: 2rpx solid #ffffff; |
||||
box-shadow: 0 4rpx 8rpx rgba(1, 1, 5, 0.1); |
||||
&::after { |
||||
border: none; |
||||
} |
||||
.avatar { |
||||
width: 128rpx; |
||||
height: 128rpx; |
||||
border-radius: 50%; |
||||
&::after { |
||||
border: none; |
||||
} |
||||
} |
||||
} |
||||
.wrap { |
||||
flex: 1; |
||||
padding-left: 24rpx; |
||||
.name { |
||||
display: flex; |
||||
align-items: center; |
||||
.nickname { |
||||
font-size: 40rpx; |
||||
} |
||||
font-weight: bold; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.hostipal { |
||||
margin-top: 16rpx; |
||||
font-size: 28rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
.tag { |
||||
display: inline-block; |
||||
padding: 0 8rpx; |
||||
font-size: 24rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
background-color: rgba(28, 107, 255, 1); |
||||
border-radius: 6rpx; |
||||
} |
||||
} |
||||
} |
||||
.code { |
||||
width: 72rpx; |
||||
height: 72rpx; |
||||
} |
||||
} |
||||
.list { |
||||
margin-top: 48rpx; |
||||
.list-container { |
||||
margin-top: 46rpx; |
||||
background: linear-gradient(19deg, #ffffff 0%, #eff5ff 100%); |
||||
border-radius: 24rpx 24rpx 24rpx 24rpx; |
||||
border: 2rpx solid #ffffff; |
||||
padding: 0 32rpx; |
||||
.item { |
||||
padding: 32rpx 0; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
border-bottom: 1px solid rgba(247, 247, 250, 1); |
||||
&:last-of-type { |
||||
border: none; |
||||
} |
||||
.icon { |
||||
width: 44rpx; |
||||
height: 44rpx; |
||||
} |
||||
.content { |
||||
padding: 0 24rpx; |
||||
flex: 1; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
.tex { |
||||
padding-left: 10rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
} |
||||
} |
||||
.more { |
||||
color: rgba(161, 164, 172, 0.4); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.login-out { |
||||
margin-top: 158rpx; |
||||
width: 670rpx; |
||||
height: 84rpx; |
||||
border-radius: 130rpx 130rpx 130rpx 130rpx; |
||||
border: 2rpx solid rgba(1, 1, 5, 0.04); |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 0.4); |
||||
} |
||||
} |
@ -0,0 +1,84 @@
@@ -0,0 +1,84 @@
|
||||
const app = getApp<IAppOption>() |
||||
|
||||
Page({ |
||||
data: { |
||||
popupShow: false, |
||||
popupType: 'stayTuned', |
||||
popupParams: {}, |
||||
|
||||
userInfo: {}, |
||||
Days: '', |
||||
}, |
||||
onLoad() { |
||||
app.waitLogin().then(() => { |
||||
app.getUserInfo(3).then((userInfo) => { |
||||
this.setData({ |
||||
userInfo, |
||||
// 数字变红
|
||||
}) |
||||
}) |
||||
}) |
||||
}, |
||||
onChooseAvatar(e) { |
||||
const { avatarUrl } = e.detail |
||||
const url = `${app.globalData.upFileUrl}?r=file-service/upload-img` |
||||
wx.showLoading({ |
||||
title: '上传中', |
||||
}) |
||||
wx.uploadFile({ |
||||
url, |
||||
filePath: avatarUrl, |
||||
name: 'file', |
||||
success: (res) => { |
||||
const data = JSON.parse(res.data) |
||||
const avatarUrl = data.data.Url |
||||
wx.ajax({ |
||||
method: 'POST', |
||||
url: '?r=wtx/user/update-avatar', |
||||
data: { |
||||
Avatar: avatarUrl, |
||||
}, |
||||
}) |
||||
.then(() => { |
||||
wx.hideLoading() |
||||
wx.showToast({ |
||||
title: '头像更新成功!', |
||||
icon: 'none', |
||||
}) |
||||
this.setData({ |
||||
'userInfo.Avatar': avatarUrl, |
||||
}) |
||||
}) |
||||
.catch(() => { |
||||
wx.hideLoading() |
||||
}) |
||||
}, |
||||
fail() { |
||||
wx.hideLoading() |
||||
}, |
||||
}) |
||||
}, |
||||
handlePopupCancel() { |
||||
this.setData({ |
||||
popupShow: false, |
||||
}) |
||||
}, |
||||
routerTo(e) { |
||||
const { url } = e.currentTarget.dataset |
||||
wx.navigateTo({ |
||||
url, |
||||
}) |
||||
}, |
||||
handleUserInfo() { |
||||
wx.navigateTo({ |
||||
url: '/doctor/pages/userInfo/index', |
||||
}) |
||||
}, |
||||
handleDoc() { |
||||
wx.navigateTo({ |
||||
url: '/doctor/pages/doc/index', |
||||
}) |
||||
}, |
||||
}) |
||||
|
||||
export {} |
@ -0,0 +1,38 @@
@@ -0,0 +1,38 @@
|
||||
<view |
||||
class="page" |
||||
style="background: url('{{imageUrl}}bg20.png?t={{Timestamp}}') no-repeat top center/100% 602rpx;padding-top:{{pageTop+21}}px;" |
||||
> |
||||
<view class="user"> |
||||
<button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar"> |
||||
<image class="avatar" src="{{userInfo.Img}}"></image> |
||||
</button> |
||||
<view class="wrap"> |
||||
<view class="name"> |
||||
<text class="nickname">{{userInfo.Name}}</text> |
||||
</view> |
||||
<view class="hostipal"> |
||||
{{userInfo.HospitalName}} |
||||
<view class="tag">随访医院</view> |
||||
</view> |
||||
</view> |
||||
<image class="code" src="/images/icon88.png"></image> |
||||
</view> |
||||
<view class="list"> |
||||
<view class="list-container"> |
||||
<view class="item" bind:tap="handleUserInfo"> |
||||
<image class="icon" src="/images/icon89.png"></image> |
||||
<view class="content">账号管理</view> |
||||
<van-icon class="more" name="arrow" /> |
||||
</view> |
||||
<view class="item" bind:tap="handleDoc"> |
||||
<image class="icon" src="/images/icon90.png"></image> |
||||
<view class="content">隐私协议</view> |
||||
<van-icon class="more" name="arrow" /> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
|
||||
<popup model:show="{{popupShow}}" type="{{popupType}}" params="{{popupParams}}" bind:cancel="handlePopupCancel"></popup> |
||||
|
||||
<patient-tab-bar></patient-tab-bar> |
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
{ |
||||
"navigationBarTitleText": "账号管理", |
||||
"usingComponents": {} |
||||
} |
@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
|
||||
page { |
||||
background-color: rgba(246, 246, 246, 1); |
||||
} |
||||
|
||||
.page { |
||||
padding: 48rpx 40rpx; |
||||
.card { |
||||
padding: 0 32rpx; |
||||
background-color: #fff; |
||||
border-radius: 24rpx; |
||||
.row { |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
padding: 32rpx; |
||||
border-bottom: 1px solid rgba(247, 247, 250, 1); |
||||
&:last-of-type { |
||||
border: none; |
||||
} |
||||
.name { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.more { |
||||
color: rgba(161, 164, 172, 0.4); |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,34 @@
@@ -0,0 +1,34 @@
|
||||
const app = getApp<IAppOption>() |
||||
|
||||
Page({ |
||||
data: {}, |
||||
onLoad() {}, |
||||
handleChanegTel() { |
||||
wx.navigateTo({ |
||||
url: '/doctor/pages/changeTel/index', |
||||
}) |
||||
}, |
||||
handleLoginOut() { |
||||
wx.showModal({ |
||||
title: '确定退出登录吗?', |
||||
confirmColor: 'rgba(246, 74, 58, 1)', |
||||
success: (res) => { |
||||
if (res.confirm) { |
||||
wx.ajax({ |
||||
method: 'POST', |
||||
url: '?r=wtx/doctor/account/reg-logout', |
||||
data: {}, |
||||
}).then(() => { |
||||
app.startLogin(() => { |
||||
wx.reLaunch({ |
||||
url: '/pages/index/index', |
||||
}) |
||||
}) |
||||
}) |
||||
} |
||||
}, |
||||
}) |
||||
}, |
||||
}) |
||||
|
||||
export {} |
@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
|
||||
<view class="page"> |
||||
<view class="card"> |
||||
<view class="row" bind:tap="handleChanegTel"> |
||||
<view class="name">修改手机号</view> |
||||
<van-icon class="more" name="arrow" /> |
||||
</view> |
||||
<view class="row" bind:tap="handleLoginOut"> |
||||
<view class="name">退出登录</view> |
||||
<van-icon class="more" name="arrow" /> |
||||
</view> |
||||
</view> |
||||
</view> |
After Width: | Height: | Size: 349 KiB |
After Width: | Height: | Size: 218 KiB |
After Width: | Height: | Size: 432 KiB |
After Width: | Height: | Size: 204 KiB |
After Width: | Height: | Size: 576 B |
After Width: | Height: | Size: 560 B |
After Width: | Height: | Size: 546 B |
After Width: | Height: | Size: 534 B |
After Width: | Height: | Size: 2.4 MiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 695 B |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 9.0 KiB |
After Width: | Height: | Size: 9.6 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 960 B |
After Width: | Height: | Size: 9.5 KiB |
After Width: | Height: | Size: 582 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 504 B |
After Width: | Height: | Size: 753 B |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 786 B |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 7.7 KiB |
After Width: | Height: | Size: 17 KiB |
@ -1,4 +1,4 @@
@@ -1,4 +1,4 @@
|
||||
{ |
||||
"navigationBarTitleText": "BBM-H901输注备注", |
||||
"navigationBarTitleText": "输注感受日志", |
||||
"usingComponents": {} |
||||
} |
||||
|
@ -1,8 +1,16 @@
@@ -1,8 +1,16 @@
|
||||
const _app = getApp<IAppOption>(); |
||||
const _app = getApp<IAppOption>() |
||||
|
||||
Page({ |
||||
data: {}, |
||||
data: { |
||||
active: 1, |
||||
}, |
||||
onLoad() {}, |
||||
}); |
||||
handleSelect(e) { |
||||
const { active } = e.currentTarget.dataset |
||||
this.setData({ |
||||
active, |
||||
}) |
||||
}, |
||||
}) |
||||
|
||||
export {} |
||||
|
@ -1,6 +1,7 @@
@@ -1,6 +1,7 @@
|
||||
{ |
||||
"navigationStyle": "custom", |
||||
"usingComponents": { |
||||
"popup": "/components/popup/index", |
||||
"navbar": "/components/navbar/index" |
||||
} |
||||
} |
||||
|