This commit is contained in:
haomingming 2023-03-06 17:57:39 +08:00
parent 3794faceae
commit 1066e37c96
4230 changed files with 193453 additions and 0 deletions

92
Pages/index/index.js Normal file
View File

@ -0,0 +1,92 @@
// Pages/index/index.js
const app = getApp()
Page({
data: {
loading: true
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
if (typeof this.getTabBar === 'function' && this.getTabBar()) {
this.getTabBar().setData({
tabBarShow:false, //true/false
})
}
this.setData({ loading: false });
},
goCheck(e){
console.log(e);
let usertype = e.currentTarget.dataset.usertype;
let url = e.currentTarget.dataset.url;
wx.setStorageSync('usertype', usertype);
wx.setStorageSync('next_url', url);
let user_uuid = wx.getStorageSync('user_id');
console.log(user_uuid);
if(user_uuid){
wx.switchTab({
url: url
})
}else{
app.go(app.globalData.login_url);
}
},
bindGetUserInfo(){
wx.getUserInfo({
success: function(res) {
var userInfo = res.userInfo
var nickName = userInfo.nickName
var avatarUrl = userInfo.avatarUrl
var gender = userInfo.gender //性别 0未知、1男、2
var province = userInfo.province
var city = userInfo.city
var country = userInfo.country
console.log(res.userInfo)
}
})
},
shenfang(){
wx.requestSubscribeMessage({
tmplIds: [
"5Tl-xmaWXrKP5BB8E6b3oTdPHbHa7WYWbmvZiuz4TLs",
"kUy70xHlr7ADo4aIHiictM4Te7MSec3E5kHsYvFQu40"
],
success(res){
console.log(res)
},
fail(res){
console.log(res)
},
complete(res){
console.log(res)
}
})
},
yici(){
wx.requestSubscribeMessage({
tmplIds: [
"jhYUf91ULCTX_f69hazqAYwImdFf8ELasRAwB6X-MTM",
"JMPmlYGh1HcUSuEfJCVQUIsZv4H5ar3QvXZfrNYNFuc"
],
success(res){
console.log(res)
},
fail(res){
console.log(res)
},
complete(res){
console.log(res)
}
})
},
check(){
wx.getSetting({
withSubscriptions: true,
success (res) {
console.log(res.authSetting)
console.log(res.subscriptionsSetting)
}
})
}
})

6
Pages/index/index.json Normal file
View File

@ -0,0 +1,6 @@
{
"component": true,
"usingComponents": {
"t-image": "tdesign-miniprogram/image/image"
}
}

View File

@ -0,0 +1,34 @@
<!--
此文件为开发者工具生成,生成时间: 2023/2/2 下午6:54:52
使用方法:
在 E:\WeChatProjects\test_miniprogram\Pages\index\index.wxml 引入模板
```
<import src="index.skeleton.wxml"/>
<template is="skeleton" wx:if="{{loading}}" />
```
在 E:\WeChatProjects\test_miniprogram\Pages\index\index.wxss 中引入样式
```
@import "./index.skeleton.wxss";
```
更多详细信息可以参考文档https://developers.weixin.qq.com/miniprogram/dev/devtools/skeleton.html
-->
<template name="skeleton">
<view class="sk-container">
<view class="title sk-transparent sk-text-14-2857-913 sk-text">请选择您的身份</view>
<view>
<view class="item">
<view is="miniprogram_npm/tdesign-miniprogram/image/image" class="item_img" data-url="/Pages/yishi/index/index">
<image class="t-image image--t-image t-image--shape-square image--t-image--shape-square sk-image" id="f1e69958--image" mode="heightFix" style="height: 121px; width: 386.074px;"></image>
</view>
</view>
<view class="item">
<view is="miniprogram_npm/tdesign-miniprogram/image/image" class="item_img" data-url="/Pages/yaoshi/home/home">
<image class="t-image image--t-image t-image--shape-square image--t-image--shape-square sk-image" id="16b3517e--image" mode="heightFix" style="height: 121px; width: 386.074px;"></image>
</view>
</view>
</view>
</view>
</template>

View File

@ -0,0 +1,37 @@
/*
此文件为开发者工具生成,生成时间: 2023/2/2 下午6:54:52
在 E:\WeChatProjects\test_miniprogram\Pages\index\index.wxss 中引入样式
```
@import "./index.skeleton.wxss";
```
更多详细信息可以参考文档https://developers.weixin.qq.com/miniprogram/dev/devtools/skeleton.html
*/
.sk-transparent {
color: transparent !important;
}
.sk-text-14-2857-913 {
background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
background-size: 100% 68.4783rpx;
position: relative !important;
}
.sk-text {
background-origin: content-box !important;
background-clip: content-box !important;
background-color: transparent !important;
color: transparent !important;
background-repeat: repeat-y !important;
}
.sk-image {
background: #EFEFEF !important;
}
.sk-container {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: hidden;
background-color: transparent;
}

37
Pages/index/index.wxml Normal file
View File

@ -0,0 +1,37 @@
<import src="index.skeleton.wxml"/>
<template is="skeleton" wx:if="{{loading}}" />
<view class="title">请选择您的身份</view>
<view>
<view class="item" data-usertype="2"
data-url="/Pages/yishi/index/index" bindtap="goCheck" >
<t-image
class="item_img"
src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yi.png"
mode="heightFix"
height="220rpx"
aria-label="医师端"
loading="slot"
>
<t-loading slot="loading" theme="circular" size="40rpx" loading />
</t-image>
</view>
<view class="item"
data-url="/Pages/yaoshi/home/home"
data-usertype="3" bindtap="goCheck">
<t-image
class="item_img"
src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yao.png"
mode="heightFix"
height="220rpx"
aria-label="药师端"
loading="slot">
<t-loading slot="loading" theme="circular" size="40rpx" loading />
</t-image>
</view>
<button bindtap="shenfang">审方提醒(长期)</button>
<button bindtap="yici">患者回复通知(一次)</button>
<button bindtap="check">获取订阅状态</button>
</view>

21
Pages/index/index.wxss Normal file
View File

@ -0,0 +1,21 @@
@import "./index.skeleton.wxss";
.title{
margin-top: 250rpx ;
margin-left: 50rpx;
margin-bottom: 100rpx;
font-size: 50rpx;
font-family: "AlibabaPuHuiTi-2-75-SemiBold";
color: #333;
}
.item{
display: flex;
flex-direction: row;
margin-bottom: 100rpx;
justify-content: center;
align-content: center;
}
.item_img{
flex: 1;
display: flex;
justify-content: center;
}

58
Pages/login/index.js Normal file
View File

@ -0,0 +1,58 @@
// Pages/login/index.js
import { API } from './../../utils/network/api'
const api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '登录', //导航栏 中间的标题
},
checked: true
},
onChange(event) {
this.setData({
checked: event.detail,
});
},
_navback() {
wx.navigateBack()
},
go(e){
let url = e.currentTarget.dataset.url;
app.go(url);
},
getPhoneNumber (e) {
console.log(e);
console.log(e.detail.code);
let usertype = wx.getStorageSync('usertype');
let next_url = wx.getStorageSync('next_url');
wx.login({
success (res) {
if (res.code) {
console.log('登录成功!' + res.errMsg)
var params = {
phone_code: e.detail.code,
user_type: usertype,
wx_code: res.code
}
api.wechatMobileLogin(params).then(response => {
console.log(response);
wx.setStorageSync('AUTH_TOKEN', response.data.token);
wx.setStorageSync('user_id', response.data.user_id);
wx.setStorageSync('client_user_id', response.data.client_user_id);
//跳转页面
wx.switchTab({
url: next_url
})
}).catch(errors => {
console.error(errors);
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
},
})

8
Pages/login/index.json Normal file
View File

@ -0,0 +1,8 @@
{
"usingComponents": {
"van-button": "@vant/weapp/button/index",
"van-image": "@vant/weapp/image/index",
"van-checkbox": "@vant/weapp/checkbox/index",
"van-checkbox-group": "@vant/weapp/checkbox-group/index"
}
}

28
Pages/login/index.wxml Normal file
View File

@ -0,0 +1,28 @@
<view class="container">
<view class="tui-navigatorbar">
<image wx:if="{{ navbarData.showCapsule==1 }}" class="tui-navigatorbar-back" bindtap="_navback" src="../../TUIKit/static/assets/ic_back_white.svg" />
<view class="conversation-title">{{ navbarData.title }}</view>
</view>
<view class="box">
<view class="top">
<view class="logo">
<van-image fit="heightFix" height="56rpx" src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/logo.png" use-loading-slot>
<van-loading slot="loading" type="spinner" size="20" vertical />
</van-image>
</view>
<view class="msg">你好!欢迎登录肝胆相照互联网医院</view>
</view>
<view class="btn">
<van-button
open-type="getPhoneNumber"
bindgetphonenumber="getPhoneNumber"
color="#09BB07" custom-style="font-size: 36rpx;" type="primary" round block>微信授权手机号登录</van-button>
<van-checkbox value="{{ checked }}" bind:change="onChange">我已阅读并同意协议<text style="color: #4384FE;">《肝胆相照用户服务协议》</text></van-checkbox>
</view>
<view class="bottom">
<text class="bottom_txt" bindtap="go" data-url="/Pages/mobile_login/index">输入手机号登录/注册</text>
</view>
</view>
</view>

79
Pages/login/index.wxss Normal file
View File

@ -0,0 +1,79 @@
.container {
width: 100vw;
background-color: #ffffff;
}
.tui-navigatorbar{
position: fixed;
top: 0;
width: 750rpx;
height: 170rpx;
background-color: #bae46b;
z-index: 99;
}
.tui-navigatorbar-back{
position: absolute;
width: 48rpx;
height: 48rpx;
left: 40rpx;
bottom: 20rpx;
}
.conversation-title {
position:absolute;
width: 350rpx;
height: 88rpx;
line-height: 56rpx;
font-size: 36rpx;
color: #e68080;
bottom: 0;
left: 200rpx;
display: flex;
justify-content: center;
align-items: center;
}
.box{
width: 92vw;
margin: 170rpx auto 0 auto;
height: calc(100vh - 170rpx);
display: flex;
flex-direction: column;
}
.top{
flex: 3;
display: flex;
flex-direction: column;
}
.logo{
display:flex;
align-items: center;
flex: 1;
align-items: flex-end;
}
.msg{
font-size: 40rpx;
color: #333333;
flex: 1;
display: flex;
align-items: flex-start;
}
.btn{
flex: 1;
display: flex;
flex-direction: column;
justify-content: space-around;
font-size: 28rpx;
color: #666666;
}
.bottom{
flex: 3;
display: flex;
flex-direction: column;
justify-content: flex-end;
align-items: center;
}
.bottom_txt{
font-size: 30rpx;
color: #333333;
margin-bottom: 60rpx;
}

View File

@ -0,0 +1,96 @@
import { API } from './../../utils/network/api'
const api = new API()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '手机号登录', //导航栏 中间的标题
},
checked: true,
phone: "",
sms: "",
btn_msg: "获取验证码",
btn_disabled: false,
login_disabled: true,
},
onChange(event) {
this.setData({
checked: event.detail,
});
},
getCodePhone(e){
if(!this.data.checked){
wx.showToast({
title: '请同意协议',
icon: "error"
})
return;
}
this.setData({
btn_disabled: true
})
//获取手机号验证码
var params = {};
params.phone = this.data.phone;
params.scene = 1;
api.getCodePhone(params).then(response => {
console.log(response);
this.beginDaoJiShi();
this.setData({
login_disabled: false
})
}).catch(errors => {
this.setData({
btn_disabled: false
})
console.error(errors);
})
},
mobileLogin(e){
if(!this.data.checked){
wx.showToast({
title: '请同意协议',
icon: "error"
})
return;
}
var params = {};
params.phone = this.data.phone;
params.code = this.data.sms;
params.user_type = wx.getStorageSync('usertype');
api.mobileLogin(params).then(response => {
console.log(response);
wx.setStorageSync('AUTH_TOKEN', response.data.token);
wx.setStorageSync('user_id', response.data.user_id);
wx.setStorageSync('client_user_id', response.data.client_user_id);
wx.switchTab({
url: wx.getStorageSync('next_url')
})
}).catch(errors => {console.error(errors);})
},
beginDaoJiShi(){
console.log("开始倒计时")
let _this = this;
let time = 60;
let time_index = setInterval(function(){
console.log("time: ", time);
if(time > 1){
time--;
_this.setData({
btn_msg: time+" 秒后获取",
btn_disabled: true
})
}else{
_this.setData({
btn_msg: "获取验证码",
btn_disabled: false
})
clearInterval(time_index);
}
},1000)
}
})

View File

@ -0,0 +1,10 @@
{
"component": true,
"usingComponents": {
"m-nav-bar": "/commpents/mynavbar/index",
"van-field": "@vant/weapp/field/index",
"van-button": "@vant/weapp/button/index",
"van-checkbox": "@vant/weapp/checkbox/index",
"van-checkbox-group": "@vant/weapp/checkbox-group/index"
}
}

View File

@ -0,0 +1,30 @@
<m-nav-bar navbarData="{{navbarData}}">
<view class="logo">
<image src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/logo2.png" mode="heightFix" style="height: 196rpx;"></image>
</view>
<view class="fields">
<van-field
model:value="{{ phone }}"
label="+86"
placeholder="请输入手机号"
input-align="left"
/>
<van-field
model:value="{{ sms }}"
center
clearable
label="短信验证码"
placeholder="请输入短信验证码"
use-button-slot
>
<van-button disabled="{{btn_disabled}}" color="#3CC7C0" slot="button" size="small" round plain type="primary" bind:click="getCodePhone">
{{btn_msg}}
</van-button>
</van-field>
</view>
<view class="btn">
<van-button color="#3CC7C0" disabled="{{login_disabled}}" custom-style="font-size: 36rpx;margin-bottom:30rpx;" type="primary" round block bind:click="mobileLogin">登录</van-button>
<van-checkbox value="{{ checked }}" bind:change="onChange">我已阅读并同意协议<text style="color: #4384FE;">《肝胆相照用户服务协议》</text></van-checkbox>
</view>
</m-nav-bar>

View File

@ -0,0 +1,13 @@
.logo{
height: 500rpx;
display: flex;
align-items: center;
justify-content: center;
}
.fields{
margin: 50rpx 0;
}
.btn{
font-size: 28rpx;
color: #666666;
}

View File

@ -0,0 +1,23 @@
// Pages/authentication/authentication.js
const app = getApp()
Page({
data: {
nbFrontColor: '#000000',
nbBackgroundColor: '#ffffff',
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '实名认证', //导航栏 中间的标题
},
// 此页面 页面内容距最顶部的距离
height: app.globalData.height,
},
onLoad() {
console.log(this.data.height)
},
onShow(){
this.setData({
nbLoading: false,
})
}
})

View File

@ -0,0 +1,15 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "/commpents/te_navbar",
"t-avatar": "tdesign-miniprogram/avatar/avatar",
"van-cell": "@vant/weapp/cell/index",
"van-cell-group": "@vant/weapp/cell-group/index",
"van-button": "@vant/weapp/button/index"
},
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black",
"navigationBarTitleText": "实名认证",
"backgroundColor": "#eeeeee",
"backgroundTextStyle": "light"
}

View File

@ -0,0 +1,18 @@
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container">
<van-cell-group>
<van-cell title="真实姓名" title-width="120rpx" required title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="内容" />
<van-cell title="身份证号" title-width="120rpx" required title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="内容" />
<van-cell title="联系邮箱" title-width="120rpx" required title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="内容" />
<van-cell title="手机号码" title-width="120rpx" required title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="内容" />
<van-cell title="所在医疗机构" title-width="120rpx" required title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="内容" />
<van-cell title="所在科室" title-width="120rpx" is-link required title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="内容" />
<van-cell title="职称" title-width="120rpx" is-link required title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="内容" />
<van-cell title="医龄" title-width="120rpx" required title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="内容" />
<van-cell title="执业经历" title-width="120rpx" required title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="内容" />
<van-cell title="擅长" title-width="120rpx" required title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="内容" />
</van-cell-group>
<view class="submit">
<van-button color="linear-gradient(to right, #4CABEA, #64CFE9)" block round type="info">下一步</van-button>
</view>
</view>

View File

@ -0,0 +1,4 @@
.submit{
width: 90vw;
margin: 20rpx auto;
}

32
Pages/yaoshi/home/home.js Normal file
View File

@ -0,0 +1,32 @@
// Pages/home.js
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
active: 0,
active_color: "rgb(116,162,250)",
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '药师端', //导航栏 中间的标题
},
// 此页面 页面内容距最顶部的距离
height: app.globalData.height
},
onLoad() {
console.log(this.data.height)
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
if (typeof this.getTabBar === 'function' && this.getTabBar()) {
this.getTabBar().setData({
currentTab: 0 //数字是当前页面在tabbar的索引,如我的查询页索引是2因此这边为2同理首页就为0审批页面为1
})
}
}
})

View File

@ -0,0 +1,10 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "/commpents/te_navbar",
"van-tab": "@vant/weapp/tab/index",
"van-tabs": "@vant/weapp/tabs/index",
"t-avatar": "tdesign-miniprogram/avatar/avatar",
"van-button": "@vant/weapp/button/index"
}
}

101
Pages/yaoshi/home/home.wxml Normal file
View File

@ -0,0 +1,101 @@
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container">
<view class="main title">
<view class="photo">
<t-avatar class="avatar-example" width="20" image="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/default_photo.png" />
</view>
<view class="name">
<view class="realname">李四</view>
<view class="today_num">今日审方 9</view>
</view>
<view class="status">
<view class="status_text status_offline">离线</view>
</view>
</view>
<view class="main content">
<van-tabs active="{{ active }}" color="{{ active_color }}" bind:change="onChange">
<van-tab title="待审核处方">
<view class="item">
<view class="item_txt">
<view class="pre_content">处方订单号2023010510324649</view>
<view class="end_content">
<navigator url="/Pages/yaoshi/medicalrecord/medicalrecord" open-type="navigate" hover-class="other-navigator-hover">
<van-button type="primary" size="small">查看病例</van-button>
</navigator>
</view>
</view>
<view class="item_txt">
<view class="pre_content">开方时间2023-01-16 08:52</view>
<view class="end_content">
<navigator url="/Pages/yaoshi/medicalrecord/medicalrecord" open-type="navigate" hover-class="other-navigator-hover">
<van-button type="primary" size="small">查看病例</van-button>
</navigator>
</view>
</view>
<view class="item_txt">
<view class="pre_content">张三/男/45岁</view>
<view class="end_content">
<van-button type="primary" color="linear-gradient(to bottom, #5EA8D5, #63CFEA)" size="small">去审方</van-button>
</view>
</view>
</view>
<view class="item">
<view class="item_txt">
<view class="pre_content">处方订单号2023010510324649</view>
<view class="end_content">
<van-button type="primary" size="small">查看病例</van-button>
</view>
</view>
<view class="item_txt">
<view class="pre_content">开方时间2023-01-16 08:52</view>
<view class="end_content">
<van-button type="primary" size="small">查看病例</van-button>
</view>
</view>
<view class="item_txt">
<view class="pre_content">张三/男/45岁</view>
<view class="end_content">
<van-button type="primary" color="linear-gradient(to bottom, #5EA8D5, #63CFEA)" size="small">去审方</van-button>
</view>
</view>
</view>
</van-tab>
<van-tab title="已审核处方">
<view class="item">
<view class="pre_content">
处方订单号 2023010510324649
</view>
<view class="end_content">
<van-button type="primary" size="mini">迷你按钮</van-button>
</view>
</view>
</van-tab>
<van-tab title="驳回处方">
<view class="item">
<view class="pre_content">
处方订单号 2023010510324649
</view>
<view class="end_content">
<van-button type="primary" size="mini">迷你按钮</van-button>
</view>
</view>
</van-tab>
<van-tab title="不通过">
<view class="item">
<view class="pre_content">
处方订单号 2023010510324649
</view>
<view class="end_content">
<van-button type="primary" size="mini">迷你按钮</van-button>
</view>
</view>
</van-tab>
</van-tabs>
</view>
</view>

View File

@ -0,0 +1,93 @@
.container{
background-color: #F4F5F7;
width: 100vw;
height: 100vh;
}
.main{
width: 90vw;
margin: 30rpx auto 0 auto;
background-color: #ffffff;
border-radius: 10rpx;
}
.title{
height: 200rpx;
display: flex;
justify-content: center;
align-items: center;
}
.photo{
flex: 1;
/* background-color: cyan; */
}
.name{
display: flex;
flex-direction: column;
flex: 2;
font-size: 30rpx;
line-height: 50rpx;
/* background-color: burlywood; */
}
.today_num{
font-size: 28rpx;
color: rgb(116,162,250);
}
.status{
flex: 1;
/* background-color: #ace247; */
height: 70%;
}
.status_offline{
background-color: #BFBFBF;
}
.status_text{
display: inline-block;
padding: 10rpx 20rpx;
border-radius: 20rpx;
word-spacing: 10rpx;
letter-spacing: 10rpx;
float: right;
margin-right: 25rpx;
font-size: 20rpx;
}
.custom-tabs {
margin-bottom: 32rpx;
}
.avatar-example {
display: flex;
justify-content: center;
align-items: center;
}
.external-class-content {
color: #fff;
background-color: #0052d9;
font-weight: 400;
}
.avatar-example--medium:not(:last-child) {
margin-right: 96rpx;
}
.item{
border-top: solid rgb(187, 185, 185) 1rpx;
width: 95%;
margin: 10rpx auto;
}
.item_txt{
display: flex;
/* background-color: #0052d9; */
padding: 10rpx 0;
}
.pre_content{
display: flex;
flex: 3;
/* background-color: chartreuse; */
justify-content: flex-start;
align-items: center;
margin-left: 20rpx;
font-size: 28rpx;
}
.end_content{
display: flex;
flex: 1;
justify-content:center;
align-items: center;
/* background-color: coral; */
}

View File

@ -0,0 +1,20 @@
// Pages/index/index.js
Page({
/**
* 生命周期函数--监听页面显示
*/
onShow() {
if (typeof this.getTabBar === 'function' && this.getTabBar()) {
this.getTabBar().setData({
tabBarShow:false, //true/false
})
}
},
toGo(e){
console.log(e.currentTarget.dataset.url)
wx.switchTab({
url: e.currentTarget.dataset.url
})
}
})

View File

@ -0,0 +1,6 @@
{
"component": true,
"usingComponents": {
"t-image": "tdesign-miniprogram/image/image"
}
}

View File

@ -0,0 +1,29 @@
<view class="title">请选择您的身份</view>
<view>
<view class="item">
<t-image
bindtap="toGo" data-url="/Pages/yaoshi/home/home"
class="item_img"
src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yi.png"
mode="heightFix"
height="220rpx"
aria-label="医师端"
loading="slot"
>
<t-loading slot="loading" theme="circular" size="40rpx" loading />
</t-image>
</view>
<view class="item">
<t-image
bindtap="toGo" data-url="/Pages/yaoshi/my/my"
class="item_img"
src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yao.png"
mode="heightFix"
height="220rpx"
aria-label="药师端"
loading="slot">
<t-loading slot="loading" theme="circular" size="40rpx" loading />
</t-image>
</view>
</view>

View File

@ -0,0 +1,19 @@
.title{
margin-top: 250rpx ;
margin-left: 50rpx;
margin-bottom: 100rpx;
font-size: 50rpx;
font-weight: bold;
}
.item{
display: flex;
flex-direction: row;
margin-bottom: 100rpx;
justify-content: center;
align-content: center;
}
.item_img{
flex: 1;
display: flex;
justify-content: center;
}

19
Pages/yaoshi/info/info.js Normal file
View File

@ -0,0 +1,19 @@
//index.js
//获取应用实例
const app = getApp()
Page({
data: {
// 组件所需的参数
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '基本资料', //导航栏 中间的标题
},
// 此页面 页面内容距最顶部的距离
height: app.globalData.height ,
},
onLoad() {
console.log(this.data.height)
}
})

View File

@ -0,0 +1,14 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "/commpents/te_navbar",
"t-avatar": "tdesign-miniprogram/avatar/avatar",
"van-cell": "@vant/weapp/cell/index",
"van-cell-group": "@vant/weapp/cell-group/index"
},
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black",
"navigationBarTitleText": "基本资料",
"backgroundColor": "#eeeeee",
"backgroundTextStyle": "light"
}

View File

@ -0,0 +1,19 @@
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container">
<view class="top">
<t-avatar class="avatar" size="large" image="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/default_photo.png" />
<text class="name">李四</text>
</view>
<view class="content">
<van-cell-group>
<van-cell title="姓名" title-width="120rpx" title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="李四" />
<van-cell title="性别" title-width="120rpx" title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="内容" />
<van-cell title="年龄" title-width="120rpx" title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="内容" />
<van-cell title="身份证号" title-width="120rpx" title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="内容" />
<van-cell title="手机号码" title-width="120rpx" title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="内容" />
<van-cell title="我的地址" title-width="120rpx" title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="内容" />
<van-cell title="科室" title-width="120rpx" title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="内容" />
<van-cell title="职称" title-width="120rpx" title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="内容" />
</van-cell-group>
</view>
</view>

View File

@ -0,0 +1,19 @@
.top{
width: 100vw;
background-color: cornflowerblue;
height: 370rpx;
display: flex;
justify-content: center;
align-items: center;
align-content: center;
flex-direction: column;
}
.name{
color: white;
margin-top: 30rpx;
text-align: justify;
text-justify:distribute-all-lines;
text-align-last: justify;
width: 60rpx;
font-size: 28rpx;
}

View File

@ -0,0 +1,19 @@
//index.js
//获取应用实例
const app = getApp()
Page({
data: {
// 组件所需的参数
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '患者病历', //导航栏 中间的标题
},
// 此页面 页面内容距最顶部的距离
height: app.globalData.height ,
},
onLoad() {
console.log(this.data.height)
}
})

View File

@ -0,0 +1,12 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "/commpents/te_navbar",
"van-button": "@vant/weapp/button/index"
},
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black",
"navigationBarTitleText": "患者病历",
"backgroundColor": "#eeeeee",
"backgroundTextStyle": "light"
}

View File

@ -0,0 +1,29 @@
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container">
<view class="user_info">
<view class="user_item">患者信息</view>
<view class="user_item">
<text class="item_title">姓名:</text>张三
<text class="item_title">性别:</text>男
<text class="item_title">年龄:</text>30岁
</view>
</view>
<view class="case_info">
<view class="item">疾病资料</view>
<view class="item"><text class="item_title">病情主要述:</text>我问问</view>
<view class="item"><text class="item_title">用药意向:</text>【未匹配】连花清瘟胶囊*1</view>
<view class="item"><text class="item_title">体重:</text>56KG</view>
<view class="item"><text class="item_title">本次用药已相关确认病症:</text>无</view>
<view class="item"><text class="item_title">是否服用过您想购买的药品且无相关禁忌症:</text>是</view>
<view class="item"><text class="item_title">是否有药物过敏史:</text>否</view>
<view class="item"><text class="item_title">您的肝功能、肾功能是否存在异常:</text>否</view>
<view class="item"><text class="item_title">您是否处于备孕、妊娠、哺乳期:</text>否</view>
<view class="item"><text class="item_title">复诊凭证</text></view>
</view>
<view class="go_check">
<navigator url="/Pages/yaoshi/prescription/prescription" open-type="navigate" hover-class="other-navigator-hover">
<van-button color="linear-gradient(to right, #4CABEA, #64CFE9)" block round type="info">前往审方</van-button>
</navigator>
</view>
<view class="bottom">肝胆相照提供技术支持</view>
</view>

View File

@ -0,0 +1,34 @@
.container{
letter-spacing: 3rpx;
background-color: #F3F5F7;
height: 100vh;
}
.user_info{
background-color: #fff;
margin: 30rpx 0;
padding: 20rpx;
}
.case_info{
background-color: #fff;
padding: 20rpx;
}
.user_item{
padding: 20rpx 0;
}
.item{
padding: 30rpx 0;
border-bottom: 1rpx solid #F1F1F1;
}
.item_title{
color: #909090;
}
.bottom{
text-align: center;
margin: 30rpx 0;
font-size: 20rpx;
letter-spacing: 5rpx;
}
.go_check{
width: 90vw;
margin: 20rpx auto 50rpx auto;
}

31
Pages/yaoshi/my/my.js Normal file
View File

@ -0,0 +1,31 @@
// Pages/my/my.js
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '个人中心', //导航栏 中间的标题
},
// 此页面 页面内容距最顶部的距离
height: app.globalData.height,
},
onLoad() {
console.log(this.data.height)
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
if (typeof this.getTabBar === 'function' && this.getTabBar()) {
this.getTabBar().setData({
currentTab: 1 //数字是当前页面在tabbar的索引,如我的查询页索引是2因此这边为2同理首页就为0审批页面为1
})
}
}
})

13
Pages/yaoshi/my/my.json Normal file
View File

@ -0,0 +1,13 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "/commpents/te_navbar",
"t-avatar": "tdesign-miniprogram/avatar/avatar",
"van-icon": "@vant/weapp/icon/index"
},
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black",
"navigationBarTitleText": "个人中心",
"backgroundColor": "#eeeeee",
"backgroundTextStyle": "light"
}

20
Pages/yaoshi/my/my.wxml Normal file
View File

@ -0,0 +1,20 @@
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container">
<view class="top">
<t-avatar class="avatar" size="large" image="/static/images/default_photo.png" />
<text class="name">李四</text>
</view>
<view class="content">
<navigator url="/Pages/yaoshi/info/info" open-type="navigate" hover-class="other-navigator-hover">
<view class="my">个人中心</view>
</navigator>
<view class="item_list">
<view class="item">
<navigator url="/Pages/yaoshi/authentication/authentication" open-type="navigate" hover-class="other-navigator-hover">
<van-icon name="user-o" size="50rpx" color="#55B0E5"/>
<text class="item_name">实名认证</text>
</navigator>
</view>
</view>
</view>
</view>

39
Pages/yaoshi/my/my.wxss Normal file
View File

@ -0,0 +1,39 @@
.top{
width: 100vw;
background-color: cornflowerblue;
height: 370rpx;
display: flex;
justify-content: center;
align-items: center;
align-content: center;
flex-direction: column;
}
.name{
color: white;
margin-top: 30rpx;
text-align: justify;
text-justify:distribute-all-lines;
text-align-last: justify;
width: 60rpx;
font-size: 28rpx;
}
.my{
display: flex;
height: 100rpx;
/* background-color: teal; */
align-items: center;
padding-left: 30rpx;
color: black;
border-bottom: 1px solid rgb(209, 206, 206);
}
.item{
display: flex;
height: 100rpx;
/* background-color: teal; */
align-items: center;
padding-left: 30rpx;
color: black;
}
.item_name{
margin-left: 20rpx;
}

View File

@ -0,0 +1,73 @@
import Toast from '@vant/weapp/toast/toast';
const app = getApp()
Page({
data: {
bohuishow: false,
reasonshow: false,
resonText: "请选择驳回理由",
columns: ['用法错误', '超适应症用药', '诊断与用药不符', '抗生素使用不合理', '重复用药'],
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '处方详情', //导航栏 中间的标题
},
// 此页面 页面内容距最顶部的距离
height: app.globalData.height,
},
onLoad() {
console.log(this.data.height)
},
onConfirmReason(event) {
const { picker, value, index } = event.detail;
console.log(`当前值:${value}, 当前索引:${index}`);
let _resonText = `${value}`;
this.setData({ resonText: _resonText });
this.setData({ reasonshow: false });
},
onCancelReason() {
Toast('取消');
this.setData({ reasonshow: false });
},
showPopup() {
this.setData({ bohuishow: true });
},
showReasonPopup(){
console.log(222);
this.setData({ reasonshow: true });
},
onClose() {
console.log(111);
this.setData({ bohuishow: false });
},
onCloseReason(){
this.setData({ reasonshow: false });
},
closePopup(){
this.setData({ bohuishow: false });
},
submitBohui() {
console.log(444);
Toast.loading({
message: '加载中...',
forbidClick: true,
onClose: () => {
console.log('执行OnClose函数');
this.setData({ bohuishow: false });
},
});
},
submit(){
console.log(555);
}
})

View File

@ -0,0 +1,17 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "/commpents/te_navbar",
"van-button": "@vant/weapp/button/index",
"van-cell": "@vant/weapp/cell/index",
"van-cell-group": "@vant/weapp/cell-group/index",
"van-toast": "@vant/weapp/toast/index",
"van-popup": "@vant/weapp/popup/index",
"van-picker": "@vant/weapp/picker/index"
},
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black",
"navigationBarTitleText": "处方详情",
"backgroundColor": "#eeeeee",
"backgroundTextStyle": "light"
}

View File

@ -0,0 +1,48 @@
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container">
<view class="img_box">
<view class="img_content">
<image class="case_img"
src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/prescription_demo.png"
mode="widthFix"
/>
</view>
</view>
<view class="button_group">
<view class="button_item">
<van-button round plain type="danger" bind:click="showPopup">
<text decode="true">&nbsp;&nbsp;&nbsp;&nbsp;驳回&nbsp;&nbsp;&nbsp;&nbsp;</text>
</van-button>
</view>
<view class="button_item">
<van-button round type="primary" bind:click="submit">
<text decode="true">&nbsp;&nbsp;&nbsp;&nbsp;通过&nbsp;&nbsp;&nbsp;&nbsp;</text>
</van-button>
</view>
</view>
<van-popup show="{{ bohuishow }}" bind:close="onClose">
<view class="pop">
<van-cell title="驳回理由:" is-link value="{{ resonText }}" bind:click="showReasonPopup"/>
<view class="pop_button">
<view class="pop_button_txt" bindtap="closePopup">取消</view>
<view class="pop_button_txt" bindtap="submitBohui">确认驳回</view>
</view>
</view>
</van-popup>
<van-popup
show="{{ reasonshow }}"
position="bottom"
bind:close="onCloseReason"
>
<van-picker show-toolbar
title="请选择"
columns="{{ columns }}"
bind:cancel="onCancelReason"
bind:confirm="onConfirmReason" />
</van-popup>
<van-toast id="van-toast" />
</view>

View File

@ -0,0 +1,36 @@
.container{
background-color: #F3F5F7;
}
.img_box{
width: 90vw;
margin: 20rpx auto;
text-align: center;
}
.case_img{
width: 100%;
}
.img_content{
background-color: #F1F1F3;
padding: 20rpx;
border-radius: 10rpx;
}
.button_group{
display: flex;
justify-content: space-around;
margin-bottom: 50rpx;
}
.button_item{
display:inline-block;
}
.pop{
width: 80vw;
margin-bottom: 30rpx;
}
.pop_button{
margin-top: 30rpx;
display: flex;
justify-content: space-around;
}
.pop_button_txt{
color: red;
}

View File

@ -0,0 +1,43 @@
import { API } from './../../../utils/network/api'
const api = new API()
// const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '添加诊断', //导航栏 中间的标题
},
disease_class_name: "",
data_list: []
},
onChange(e){
console.log(e)
let name = e.detail;
this.setData({
data_list: []
})
if(name){
this.search();
}
},
search(){
//获取评价列表
let params = {};
params.disease_class_name = this.data.disease_class_name;
api.getBasicDiseaseSearch(params).then(response => {
console.log(response);
this.setData({
data_list: response.data
})
}).catch(errors => {
console.error(errors);
})
},
addZhenDuan(e){
let disease_class_name = e.currentTarget.dataset.disease_class_name;
let disease_class_id = e.currentTarget.dataset.disease_class_id;
console.log("disease_class_name: ", disease_class_name);
console.log("disease_class_id: ", disease_class_id);
}
})

View File

@ -0,0 +1,7 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "/commpents/te_navbar",
"van-field": "@vant/weapp/field/index"
}
}

View File

@ -0,0 +1,14 @@
<!-- 添加诊断 暂时去掉了 -->
<m-nav-bar navbarData="{{navbarData}}">
<view style="font-size: 30rpx;color: #999999;margin: 20rpx 0;">诊断</view>
<van-field
model:value="{{ disease_class_name }}"
placeholder="请输入用户名"
bind:change="onChange"
/>
<view class="data_list">
<view bindtap="addZhenDuan" class="item" data-disease_class_name="{{item.disease_class_name}}" data-disease_class_id="{{item.disease_class_id}}" wx:for="{{data_list}}">
{{item.disease_class_name}}
</view>
</view>
</m-nav-bar>

View File

@ -0,0 +1,12 @@
.van-cell{
padding: 0 !important;
}
.data_list{
font-size: 30rpx;
color: #999999;
}
.item{
height: 100rpx;
line-height: 100rpx;
border-bottom: 1px solid #E7E7E7;
}

View File

@ -0,0 +1,96 @@
import { API } from './../../../utils/network/api'
const api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '患者评价', //导航栏 中间的标题
},
height: app.globalData.height,
stickyProps: {
offsetTop: app.globalData.height*2 + 20,
zIndex: 99
},
doctor_id: "",
evaluation_type: 1,
appraise_list_1: [],
appraise_list_2: [],
appraise_list_3: [],
current_page: 0,
total: 0,
per_page: 0,
last_page: 0,
total_quantity: 0,
good_quantity: 0,
bad_quantity: 0,
},
onPullDownRefresh(){
console.log('===下拉动作===');
this.setData({
current_page: 0,
})
this.getDoctorEvaluationList();
},
onReachBottom() {
console.log('===触底了!!===');
if(this.data.current_page < this.data.last_page){//最后一页时停止分页
this.getDoctorEvaluationList()
}
},
onLoad(option){
console.log(option.doctor_id);
this.setData({
doctor_id: option.doctor_id
})
},
onShow(){
console.log("onShow");
this.getDoctorEvaluationList();
},
onTabsChange(e){
console.log(e);
let list_name = "appraise_list_" + this.data.evaluation_type;
this.setData({
evaluation_type: e.detail.value,
current_page: 0,
last_page: 0,
[list_name]: []
})
this.getDoctorEvaluationList()
},
onTabsClick(e){
console.log(e);
},
onStickyScroll(e){
return 1;
},
getDoctorEvaluationList(){
//获取评价列表
let params = {};
params.page = this.data.current_page + 1;
params.doctor_id = this.data.doctor_id;
params.evaluation_type = this.data.evaluation_type;
api.getDoctorEvaluation(params).then(response => {
console.log(response);
if(response.data.total > 0){
let list_name = "appraise_list_" + this.data.evaluation_type;
console.log(list_name);
let apprise_list = this.data[list_name];
this.setData({
[list_name]: apprise_list.concat(response.data.data),
current_page: response.data.current_page,
total: response.data.total,
per_page: response.data.per_page,
last_page: response.data.last_page,
total_quantity: response.data.total_quantity,
good_quantity: response.data.good_quantity,
bad_quantity: response.data.bad_quantity,
})
}
}).catch(errors => {
console.error(errors);
})
}
})

View File

@ -0,0 +1,11 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "/commpents/te_navbar",
"appraise-data": "/commpents/appraise_data/index",
"t-tabs": "tdesign-miniprogram/tabs/tabs",
"t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel"
},
"enablePullDownRefresh": true,
"onReachBottomDistance": 100
}

View File

@ -0,0 +1,50 @@
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container" style="height: calc(100vh - 96rpx - {{height}}px);">
<t-tabs
defaultValue="{{1}}"
sticky
stickyProps="{{stickyProps}}"
bind:change="onTabsChange"
bind:click="onTabsClick"
t-class="custom-tabs"
catch:scroll="onStickyScroll"
theme="line"
custom-style="font-size: 32rpx"
>
<t-tab-panel label="全部({{total_quantity}}" value="1">
<view class="item_list">
<appraise-data
name="{{item.name_mask}}"
start="{{item.avg_score }}"
content="{{item.content}}"
date="{{item.created_at}}"
wx:for="{{appraise_list_1}}"
/>
</view>
</t-tab-panel>
<t-tab-panel label="好评({{good_quantity}}" value="2">
<view class="item_list">
<appraise-data
name="{{item.name_mask}}"
start="{{item.avg_score }}"
content="{{item.content}}"
date="{{item.created_at}}"
wx:for="{{appraise_list_2}}"
/>
</view>
</t-tab-panel>
<t-tab-panel label="中/差评({{bad_quantity}}" value="3">
<view class="item_list">
<appraise-data
name="{{item.name_mask}}"
start="{{item.avg_score }}"
content="{{item.content}}"
date="{{item.created_at}}"
wx:for="{{appraise_list_3}}"
/>
</view>
</t-tab-panel>
</t-tabs>
</view>

View File

@ -0,0 +1,24 @@
.container{
width: 100vw;
height: 100vh;
background-color: #F6F6F6;
}
.t-tab-panel,.t-tabs__content {
background-color: #F6F6F6;
}
.t-tabs__item--active{
color: #49B9AD !important;
font-size: 32rpx !important;
}
.t-tabs__item-inner--line{
font-size: 28rpx !important;
}
.t-tabs__track{
background-color: var(--td-tab-track-color, var(--td-primary-color, #49B9AD)) !important;
}
.item_list{
width: 92vw;
margin: 20rpx auto;
background-color: #fff;
border-radius: 20rpx;
}

View File

@ -0,0 +1,22 @@
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '实名认证', //导航栏 中间的标题
},
height: app.globalData.height,
card_num_mask: "",
card_name: ""
},
onLoad(option){
console.log(option.card_num_mask);
console.log(option.card_name);
this.setData({
card_name: option.card_name,
card_num_mask: option.card_num_mask,
})
}
})

View File

@ -0,0 +1,8 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "/commpents/te_navbar",
"van-cell": "@vant/weapp/cell/index",
"van-cell-group": "@vant/weapp/cell-group/index"
}
}

View File

@ -0,0 +1,6 @@
<!-- 实名认证结果页面 -->
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container" style="height: calc(100vh - 96rpx - {{height}}px);">
<van-cell title="真实姓名" value="{{card_name}}" />
<van-cell title="身份证号" value="{{card_num_mask}}" />
</view>

View File

@ -0,0 +1,6 @@
.container{
padding-top: 20rpx;
background-color: #F6F6F6;
width: 100vw;
height: 100vh;
}

View File

@ -0,0 +1,46 @@
import { API } from './../../../utils/network/api'
const api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '我的银行卡', //导航栏 中间的标题
},
height: app.globalData.height,
banklist_empty: true,
bank_card_id: "",
bank_img_path: "",
bank_name: "",
bank_card_code_mask: ""
},
onShow(){
api.getDoctorBank().then(response => {
if(response.data.total > 0){
this.setData({
banklist_empty: false,
bank_card_code_mask: response.data.bank_card_code_mask,
bank_card_id: response.data.bank_card_id,
bank_img_path: response.data.bank_img_path,
bank_name: response.data.bank_name
})
}
this.setData({
bank_card_id: response.data.bank_card_id,
bank_img_path: response.data.bank_img_path,
bank_name: response.data.bank_name,
bank_card_code_mask: response.data.bank_card_code_mask
})
}).catch(errors => {
console.error(errors);
})
},
go(e){
console.log(e)
let url = e.currentTarget.dataset.url;
app.go(url+"?bank_card_id="+this.data.bank_card_id);
}
})

View File

@ -0,0 +1,9 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "/commpents/te_navbar",
"t-image": "tdesign-miniprogram/image/image",
"t-icon": "tdesign-miniprogram/icon/icon",
"van-button": "@vant/weapp/button/index"
}
}

View File

@ -0,0 +1,42 @@
<!-- 我的银行卡页面 -->
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container" style="height: calc(100vh - 96rpx - {{height}}px);">
<view class="help">
<view class="help_title">
<text wx:if="{{ !banklist_empty }}">我的银行卡</text>
</view>
<view class="help_note">
操作手册-银行卡<t-icon size="26rpx" style="display: inline-block;" name="chevron-right" size="48rpx" data-name="chevron-right" />
</view>
</view>
<view class="bankcard_empty_box" wx:if="{{ banklist_empty }}">
<view class="bankcard_empty">
<t-image src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yishi/bankcard_empty.png" mode="heightFix" width="200rpx" aria-label="空" />
</view>
<van-button data-url="/Pages/yishi/bindcard/index" bind:click="go" custom-style="font-size: 30rpx;border-radius: 10rpx;background-color:#3CC7C0;border: none;width: 92vw;margin: 50rpx auto;" type="primary" block>添加结算银行卡</van-button>
<view class="note">提示:每人只能绑定一张银行卡,银行卡绑定成功后每月只能修改结算银行卡一次,请谨慎绑定。</view>
</view>
<view class="bankcard_list" wx:if="{{ !banklist_empty }}">
<view class="bankcard_list_item">
<t-image src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yishi/bankcard/gs.png" mode="widthFix" width="100%" aria-label="空" />
<view class="bankcard_list_item_name">{{bank_name}}</view>
<view class="bankcard_list_item_num">{{bank_card_code_mask}}</view>
</view>
<!-- <view class="bankcard_list_item">
<t-image src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yishi/bankcard/ny.png" mode="widthFix" width="100%" aria-label="空" />
<view class="bankcard_list_item_name">中国农业银行</view>
<view class="bankcard_list_item_num">3034 **** **** **** 2698</view>
</view> -->
<!-- <view class="bankcard_list_item">
<t-image src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yishi/bankcard/js.png" mode="widthFix" width="100%" aria-label="空" />
<view class="bankcard_list_item_name">中国建设银行</view>
<view class="bankcard_list_item_num">3034 **** **** **** 2698</view>
</view> -->
<van-button data-url="/Pages/yishi/bindcard/index" bind:click="go" custom-style="font-size: 30rpx;border-radius: 10rpx;background-color:#3CC7C0;border: none;width: 92vw;margin: 50rpx auto;" type="primary" block>更换银行卡</van-button>
<view class="note">
<text>提示: 1、每人只能绑定一张银行卡银行卡绑定成功后才可提取问诊费请谨慎绑定。
2、每人每月限定只能修改一次结算银行卡。</text>
</view>
</view>
</view>

View File

@ -0,0 +1,60 @@
.container{
width: 100vw;
height: 100vh;
background-color: #F4F4F4;
}
.help{
display: flex;
justify-content:space-between;
}
.help_title{
padding-left: 4vw;
height: 100rpx;
line-height: 100rpx;
font-size: 44rpx;
color: #333;
}
.help_note{
height: 100rpx;
line-height: 100rpx;
font-size: 26rpx;
color: #666;
display: flex;
justify-content: center;
align-items: center;
}
.bankcard_empty{
display: flex;
justify-content: center;
}
.note{
font-size: 28rpx;
color: #999999;
width: 92vw;
margin: 0 auto;
line-height: 50rpx;
}
.bankcard_list{
width: 92vw;
margin: 0 auto;
}
.bankcard_list_item{
position: relative;
margin-top: 20rpx;
}
.bankcard_list_item_name{
position: absolute;
top: 45rpx;
left: 130rpx;
font-size: 34rpx;
color: #FFFFFF;
}
.bankcard_list_item_num{
position: absolute;
top: 120rpx;
left: 130rpx;
font-size: 30rpx;
color: #FFFFFF;
height: 30rpx;
line-height: 30rpx;
}

View File

@ -0,0 +1,233 @@
import Toast from '@vant/weapp/toast/toast';
import { API } from './../../../utils/network/api'
const api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '绑定银行卡', //导航栏 中间的标题
},
height: app.globalData.height,
realname: "",
idcard: "",
bankcard: "",
city_show: false,
bank_show: false,
bank_note: "请选择开户行",
city_note: "请选择开户行所在城市",
areaList: [],
bankList: [],
select_province_id: "",
select_city_id: "",
select_county_id: "",
select_bank_index: "",
select_bank_id: "",
area_sub_titles: ["省份","市区","区县"],
areaprovince_data_ready: false,
banklist_data_ready: false,
bank_card_id: ""
},
onLoad(options){
console.log("options: ", options);
let bank_card_id = options.bank_card_id;
console.log("options bank_card_id: ", bank_card_id);
if(bank_card_id){
this.setData({
bank_card_id: bank_card_id
})
}
let _this = this;
//加载省份列表
api.getAreaProvince().then(response => {
console.log(response);
const list = _this.formatArea(response, -1, true);
_this.setData({
areaprovince_data_ready: true,
areaList: list
})
}).catch(errors => {console.error(errors); })
//加载银行卡列表
api.getBasicBank().then(response => {
console.log(response);
const list = _this.formatBankList(response, -1, true);
_this.setData({
banklist_data_ready: true,
bankList: list
})
}).catch(errors => {console.error(errors); })
},
onShow(){
//获取实名认证信息
api.getDoctorAuthReal().then(response => {
console.log(response);
if(response.data){
this.setData({
realname:response.data.card_name,
idcard:response.data.card_num
});
}
}).catch(errors => {
console.error(errors);
})
},
onCityShow(e) {
console.log("onCityShow");
this.setData({ city_show: true });
},
onBankShow(e) {
console.log("onBankShow");
this.setData({ bank_show: true });
},
onBankClose(e) {
console.log("onBankShow");
this.setData({ bank_show: false });
},
onBankCancel(event) {
console.log("onBankCancel");
const { picker, value, index } = event.detail;
Toast(`当前值:${value}, 当前索引:${index}`);
this.setData({
bank_show: false
});
},
onBankConfirm(event) {
console.log("onBankConfirm");
const { picker, value, index } = event.detail;
console.log(event.detail);
this.setData({
bank_show: false,
select_bank_id: `${value.value}`,
bank_note: `${value.text}`
});
},
onBankChange(event) {
console.log("onYiYuanChange");
const { picker, value, index } = event.detail;
Toast(`当前值:${value}, 当前索引:${index}`);
},
onChangeCity(e) {
this.setData({
select_county_id: "",
select_yiyuan_id: ""
})
console.log("onChangeCity");
const { selectedOptions } = e.detail;
console.log(e.detail)
let area = selectedOptions[selectedOptions.length-1];
if(!area){
area = selectedOptions[selectedOptions.length-2];
}
const type = area.type;
const value = area.value;
const index = area.index;
const p_index = area.p_index;
if(type == 2){//省份
api.getAreaCity({area_id: value}).then(response => {// 请求市区列表
const list = this.formatArea(response, index, true);
const _city = "areaList[" + index + "].children";
this.setData({
[_city]: list,
select_province_id: value
})
}).catch(errors => {console.error(errors); })
}
if(type == 3){//市区
api.getAreaCounty({area_id: value}).then(response => {// 请求市区列表
const list = this.formatArea(response, index, false);
const _county = "areaList[" + p_index + "].children[" +index+ "].children";
this.setData({
[_county]: list,
select_city_id: value
})
}).catch(errors => {console.error(errors); })
}
console.log("type: " + type);
if(type == 4){//区县
this.setData({
select_county_id: value,
bank_show: true,
city_note: this.getCityNote(selectedOptions)
});
}else{
this.setData({
city_show: true
})
}
},
getCityNote(selectedOptions){
let txt = [];
selectedOptions.forEach(item => {
if(item){
txt.push(item.label);
}
})
return txt.join("/");
},
formatArea(response, p_index, has_children){
var list = []
let index = 0;
response.data.forEach(data => {
let area = {};
area.index = index++;
area.p_index = p_index;
area.type = data.area_type;
area.label = data.area_name;
area.value = data.area_id;
if(has_children){
area.children = [];
}
list.push(area)
});
return list;
},
formatBankList(response){
let list = [];
response.data.forEach(item => {
let data = {};
data.text = item.bank_name;
data.value = item.bank_id;
list.push(data)
});
return list;
},
addBank(e){
console.log("addbank, ", e);
//绑定医生银行卡
let params = {};
params.county_id = this.data.select_county_id;
params.city_id = this.data.select_city_id;
params.province_id = this.data.select_province_id;
params.bank_card_code = this.data.bankcard;
params.bank_id = this.data.select_bank_id;
console.log(params);
let bank_card_id = this.data.bank_card_id;
if(bank_card_id){
params.bank_card_id = bank_card_id;
//更换医生银行卡
api.putDoctorBank(params).then(response => {
console.log(response);
wx.showToast({
title: '更换成功',
icon: "success"
})
}).catch(errors => {console.error(errors); })
}else{
//绑定医生银行卡
api.postDoctorBank(params).then(response => {
console.log(response);
wx.showToast({
title: '绑定成功',
icon: "success"
})
}).catch(errors => {console.error(errors); })
}
}
})

View File

@ -0,0 +1,14 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "/commpents/te_navbar",
"van-cell": "@vant/weapp/cell/index",
"van-cell-group": "@vant/weapp/cell-group/index",
"van-button": "@vant/weapp/button/index",
"van-field": "@vant/weapp/field/index",
"van-popup": "@vant/weapp/popup/index",
"van-picker": "@vant/weapp/picker/index",
"van-toast": "@vant/weapp/toast/index",
"t-cascader": "tdesign-miniprogram/cascader/cascader"
}
}

View File

@ -0,0 +1,58 @@
<!-- 绑定银行卡页面 -->
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container" style="height: calc(100vh - 96rpx - {{height}}px);">
<view class="top_note">
请确定开户人姓名与账户医生的姓名一致
</view>
<view class="info">
<van-cell-group>
<van-cell title="姓名" value="{{realname}}" />
<van-cell title="身份证号" value="{{idcard}}" border="{{ false }}" />
</van-cell-group>
</view>
<view class="bankcard">
<van-cell-group>
<van-cell title="所在城市" value="{{city_note}}" is-link bindtap="onCityShow"/>
<van-cell title="开户行" value="{{bank_note}}" is-link bindtap="onBankShow"/>
<van-field
label="银行卡号"
placeholder="请输入卡号"
model:value="{{ bankcard }}"
input-align="right"
/>
</van-cell-group>
</view>
<view class="note">
提示:银行卡提交即绑定成功,上述信息请保证信息真实准确性,避免影响提取服务费。
</view>
<van-button bind:click="addBank" custom-style="font-size: 30rpx;border-radius: 10rpx;background-color:#3CC7C0;border: none;width: 92vw;margin: 50rpx auto;" type="primary" block>提交</van-button>
<van-popup
show="{{ bank_show }}"
position="bottom"
bind:close="onBankClose"
round
>
<van-picker
show-toolbar
title="请选择开户行"
columns="{{ bankList }}"
default-index="{{select_bank_index}}"
bind:cancel="onBankCancel"
bind:confirm="onBankConfirm"
bind:change="onBankChange" />
</van-popup>
<t-cascader
visible="{{ city_show }}"
theme="tab"
value="{{ select_county_id }}"
options="{{ areaList }}"
title="请选择地址"
sub-titles="{{area_sub_titles}}"
bind:change="onChangeCity"
></t-cascader>
</view>

View File

@ -0,0 +1,23 @@
.container{
width: 100vw;
height: 100vh;
background-color: #F4F4F4;
}
.top_note{
padding-left: 4vw;
height: 90rpx;
line-height: 90rpx;
color: #3CC7C0;
background-color: #F0FFFB;
font-size: 30rpx;
}
.bankcard{
margin-top: 50rpx;
}
.note{
font-size: 28rpx;
color: #999999;
width: 92vw;
margin: 50rpx auto;
line-height: 50rpx;
}

10
Pages/yishi/case/index.js Normal file
View File

@ -0,0 +1,10 @@
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '病历信息', //导航栏 中间的标题
},
height: app.globalData.height,
}
})

View File

@ -0,0 +1,7 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "/commpents/te_navbar",
"t-image": "tdesign-miniprogram/image/image"
}
}

View File

@ -0,0 +1,93 @@
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container" style="height: calc(100vh - 96rpx - {{height}}px);">
<view class="main_title">基础信息</view>
<view class="data_box">
<view class="data_box_top">
<view class="name">张三三</view>
<view class="sex">男30岁 </view>
</view>
<view class="info">
<view class="height info_item"><text class="info_title">身高:</text><text class="info_val">182cm</text></view>
<view class="weight info_item"><text class="info_title">体重:</text><text class="info_val">98KG</text></view>
<view class="minzu info_item"><text class="info_title">民族:</text><text class="info_val">汉族</text></view>
<view class="zhiye info_item"><text class="info_title">职业:</text><text class="info_val">学生</text></view>
<view class="hunyin info_item"><text class="info_title">婚姻:</text><text class="info_val">已婚</text></view>
</view>
<view class="disease_box">
<view class="disease_box_item">
<view class="title">所患疾病:</view>
<view class="conent">肝炎</view>
</view>
<view class="disease_box_item">
<view class="title">确诊日期:</view>
<view class="conent">2022年8月29日 10:23</view>
</view>
<view class="disease_box_item">
<view class="title">医生诊断:</view>
<view class="conent">过度劳累,失眠不足导致可以多</view>
</view>
<view class="disease_box_item">
<view class="title">确诊医院:</view>
<view class="conent">首都医科大学附属北京佑安医院</view>
</view>
<view class="disease_box_item">
<view class="title">正在服用的药品信息:</view>
<view class="conent">无/有</view>
</view>
<view class="disease_info">
详细描述阿托伐他汀钙片8片 用法用量常用的起始剂量为10mg每日一次
</view>
<view class="disease_box_item">
<view class="title">病情描述:</view>
<view class="conent">过度劳累,失眠不足导致可以多休息几天,没有好转的话可以去医院看看先吧...</view>
</view>
<view class="disease_box_item">
<view class="title">用药意向:</view>
<view class="conent">阿托伐他汀钙片8片(用法用量:常用的起始剂量为10mg每日一次剂量调整时间为4周或更长。阿托伐他汀每日用量可在一天内的任何时间一次服用并不受进餐影响。)</view>
</view>
<view class="disease_box_item">
<view class="title">问诊本人复诊凭证(病例/处方单/检查报告/住院单可任选其一)</view>
<view class="conent">无</view>
</view>
<view class="img_box">
<t-image id="loading-img" shape="round" src="" width="72" height="72" />
</view>
</view>
</view>
<view class="main_title">其他信息</view>
<view class="data_box orther">
<view class="disease_box">
<view class="disease_box_item">
<view class="title">过敏史:</view>
<view class="conent">无/有(显示内容)</view>
</view>
<view class="disease_box_item">
<view class="title">家族史:</view>
<view class="conent">无/有(显示内容)</view>
</view>
<view class="disease_box_item">
<view class="title">是否备孕、妊娠或者哺乳期:</view>
<view class="conent">不是/是(显示内容)</view>
</view>
<view class="disease_box_item">
<view class="title">饮酒史:</view>
<view class="conent">从不、偶尔、经常、每天、已解酒</view>
</view>
<view class="disease_box_item">
<view class="title">吸烟史:</view>
<view class="conent">从不、偶尔、经常、每天、已解酒</view>
</view>
<view class="disease_box_item">
<view class="title">手术史:</view>
<view class="conent">无/有(手术名称)</view>
</view>
<view class="disease_box_item">
<view class="title">接触化学物:</view>
<view class="conent">从不、偶尔、经常、每天</view>
</view>
<view class="disease_info">
详细描述:如经常染发、接触油漆或者甲醛等
</view>
</view>
</view>
</view>

View File

@ -0,0 +1,83 @@
.container{
width: 100vw;
background-color: #F6F6F6;
padding: 0 4vw;
}
.main_title{
font-size: 30rpx;
color: #000000;
margin: 30rpx 0;
}
.data_box{
margin-top: 20rpx;
width: calc(92vw - 40rpx);
background-color: #fff;
border-radius: 20rpx;
padding: 20rpx;
}
.data_box_top{
display: flex;
}
.name{
font-size: 34rpx;
color: #3CC7C0;
margin-right: 20rpx;
}
.sex{
font-size: 34rpx;
color: #666666;
}
.info{
background: #FAFAFA;
border-radius: 10rpx;
display: flex;
flex-wrap: wrap;
margin: 20rpx 0;
}
.info_item{
text-align: center;
width: 180rpx;
height: 60rpx;
display: flex;
align-items: center;
margin-left: 20rpx;
}
.info_title{
font-size: 30rpx;
color: #333333;
}
.info_val{
font-size: 28rpx;
color: #666666;
}
.disease_box{
}
.disease_box_item{
margin-bottom: 30rpx;
display: flex;
}
.title{
font-size: 30rpx;
color: #333333;
}
.conent{
flex: 1;
font-size: 28rpx;
color: #666666;
}
.disease_info{
background: #FAFAFA;
border-radius: 10rpx;
padding: 10rpx;
font-size: 26rpx;
color: #999999;
margin-bottom: 20rpx;
}
.img_box{
}
.orther{
margin-bottom: 50rpx;
}

40
Pages/yishi/cash/index.js Normal file
View File

@ -0,0 +1,40 @@
import { API } from './../../../utils/network/api'
const api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '去提现', //导航栏 中间的标题
},
height: app.globalData.height,
bank_card_id: "",
bank_icon_path: "https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yishi/bankcard/js_icon.png",
realname: "默认姓名",
bank_name : "招商银行",
bank_card_code_mask: "2233 9988 9989 9900",
withdrawal_amount: "987",
income_tax: "12"
},
onLoad(options){
//获取提现数据
api.getDoctorWithdrawal().then(response => {
console.log(response);
if(response.data.bank_card_id){
this.setData({
bank_card_id: response.data.bank_card_id,
bank_icon_path: response.data.bank_icon_path,
bank_name : response.data.bank_name,
bank_card_code_mask: response.data.bank_card_code_mask,
withdrawal_amount: response.data.withdrawal_amount,
income_tax: response.data.income_tax,
})
}
}).catch(errors => {
console.error(errors);
})
}
})

View File

@ -0,0 +1,8 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "/commpents/te_navbar",
"t-image": "tdesign-miniprogram/image/image",
"van-button": "@vant/weapp/button/index"
}
}

View File

@ -0,0 +1,58 @@
<!-- 提现页面 -->
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container" style="height: calc(100vh - 96rpx - {{height}}px);">
<view class="top">
<view class="txt_title">结算银行卡</view>
<view class="rule">提现规则</view>
</view>
<view class="bankcard">
<view class="bankcard_icon">
<t-image custom-style="" src="{{bank_icon_path}}" mode="heightFix" height="50rpx" aria-label="role" />
</view>
<view class="bankcard_info">
<view class="bankcard_info_top">{{realname}}<text style="margin-left: 20rpx; font-size: 28rpx;color: #999999;">{{bank_name}}</text></view>
<view class="bankcard_info_bottom">{{bank_card_code_mask}}</view>
</view>
</view>
<view class="cash">
<view class="cash_top">
<view class="cash_left">
<view class="cash_left_title">提现金额(元)</view>
<view class="cash_num">
<view>
<text style="font-size: 42rpx;">¥</text>{{withdrawal_amount}}
</view>
</view>
<view class="shui">扣除个人所得税: <text style="color: red;">{{income_tax}}元</text> </view>
</view>
<view class="cash_right">
<navigator url="/Pages/yishi/wenzhenorder/index" open-type="navigate" hover-class="other-navigator-hover">
<van-button custom-style="text-align: center;border-radius: 10rpx;padding: 20rpx 50rpx;" color="linear-gradient(310deg, #FF931A 0%, #FF931A 0%, #FCB75D 100%);">
查看订单
</van-button>
</navigator>
</view>
</view>
<view class="cash_bottom">
<navigator url="/Pages/yishi/cashrecord/index" open-type="navigate" hover-class="other-navigator-hover">
提现记录 >
</navigator>
</view>
</view>
<view class="note">
<text>
说明1、每月只可提取一次提现金额大于300元才可提现限额1万元
2、平台会在24小时内自动结算至您绑定的银行卡内请注意查收银行信息
3、平台代扣个人所得税根据公式
</text>
</view>
<view class="bottom">
<van-button custom-style="border-radius: 10rpx;" block color="#3CC7C0">提取</van-button>
<view class="kefu">
<text>联系客服</text>
</view>
</view>
</view>

124
Pages/yishi/cash/index.wxss Normal file
View File

@ -0,0 +1,124 @@
.container{
background-color: #F4F4F4;
width: 100vw;
height: 100vh;
}
.top{
display: flex;
width: 92vw;
margin: 30rpx auto;
justify-content: space-between;
}
.txt_title{
font-size: 36rpx;
}
.rule{
font-size: 30rpx;
color: #333333;
}
.bankcard{
width: 92vw;
margin: 0 auto;
background-color: #fff;
border-radius: 20rpx;
display: flex;
align-items: center;
padding: 20rpx 0;
}
.bankcard_icon{
flex: 2;
text-align: center;
height: 70%;
align-self: start;
}
.bankcard_info{
flex: 10;
height: 70%;
display: flex;
flex-direction: column;
}
.bankcard_info_top{
font-size: 32rpx;
color: #333333;
}
.bankcard_info_bottom{
font-size: 28rpx;
color: #333333;
margin-top: 10rpx;
}
.cash{
width: 92vw;
height: 300rpx;
margin: 20rpx auto;
background-color: #fff;
border-radius: 20rpx;
display: flex;
flex-direction: column;
}
.cash_top{
display: flex;
flex: 3;
}
.cash_bottom{
border-top: 1px solid #E5E5E5;
flex: 1;
color: #3CC7C0;
font-size: 32rpx;
display: flex;
align-items: center;
justify-content: flex-end;
padding-right: 20rpx;
}
.cash_left{
flex: 3;
display: flex;
flex-direction: column;
padding-left: 20rpx;
}
.cash_left_title{
flex: 1;
display: flex;
align-items: center;
font-size: 30rpx;
}
.cash_num{
flex: 2;
display: flex;
align-items: center;
font-size: 64rpx;
}
.shui{
flex: 1;
display: flex;
align-items: center;
font-size: 28rpx;
color: #666666;
}
.cash_right{
flex: 2;
display: flex;
justify-content: center;
align-items: center;
}
.note{
font-size: 28rpx;
color: #666666;
width: 92vw;
margin: -50rpx auto;
line-height: 50rpx;
}
.bottom{
width: 92vw;
position: fixed;
bottom: 50rpx;
left: 50%;
transform: translateX(-50%);
text-align: center;
}
.kefu{
color: #3CC7C0;
margin: 30rpx;
}

View File

@ -0,0 +1,35 @@
import { API } from './../../../utils/network/api'
const api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '提现记录', //导航栏 中间的标题
},
height: app.globalData.height,
record_list: [],
current_page: 0,
total: 0,
per_page: 0,
last_page: 0
},
onLoad(){
//获取提现数据
api.getDoctorWithdrawalRecord({year:'2023'}).then(response => {
console.log(response);
if(response.data.total > 0){
this.setData({
record_list: response.data.data,
current_page: response.data.current_page,
total: response.data.total,
per_page: response.data.per_page,
last_page: response.data.last_page,
})
}
}).catch(errors => {
console.error(errors);
})
}
})

View File

@ -0,0 +1,8 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "/commpents/te_navbar",
"van-icon": "@vant/weapp/icon/index",
"t-image": "tdesign-miniprogram/image/image"
}
}

View File

@ -0,0 +1,71 @@
<!-- 提现记录 -->
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container" style="height: calc(100vh - 96rpx - {{height}}px);">
<view class="top">
<view class="top_txt">
<view class="month">2022年<van-icon name="arrow-down" color="#fff" size="40rpx" /></view>
</view>
</view>
<view class="data_list">
<view class="data_item" wx:for="{{record_list}}">
<view class="data_item_top">
<view class="data_item_top_icon">
<t-image custom-style="" src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yishi/bankcard/js_icon.png" mode="heightFix" height="50rpx" aria-label="role" />
</view>
<view class="data_item_top_content">
<view class="name">{{item.account_name}}<text style="margin-left:20rpx;font-size: 28rpx;corlor:#999;">(尾号{{item.bank_card_code_four}}</text></view>
<view class="date">{{item.examine_time}}</view>
</view>
<view class="data_item_top_num">
<view class="jine">¥{{item.applied_withdrawal_amount}}</view>
<view class="status_box">
<!-- 审核状态1:审核中 2:审核通过 3:审核未通过) -->
<view class="status status_ing">{{item.examine_status}}</view>
</view>
</view>
</view>
<view class="data_item_bottom">个人所得税:¥{{item.income_tax}}</view>
</view>
<view class="data_item">
<view class="data_item_top">
<view class="data_item_top_icon">
<t-image custom-style="" src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yishi/bankcard/js_icon.png" mode="heightFix" height="50rpx" aria-label="role" />
</view>
<view class="data_item_top_content">
<view class="name">张三三<text style="margin-left:20rpx;font-size: 28rpx;corlor:#999;">尾号9900</text></view>
<view class="date">12.09 13:23</view>
</view>
<view class="data_item_top_num">
<view class="jine">¥123.00</view>
<view class="status_box">
<view class="status status_end">结算成功</view>
</view>
</view>
</view>
<view class="data_item_bottom">个人所得税¥12.00</view>
</view>
<view class="data_item">
<view class="data_item_top">
<view class="data_item_top_icon">
<t-image custom-style="" src="/static/images/yishi/bankcard/js_icon.png" mode="heightFix" height="50rpx" aria-label="role" />
</view>
<view class="data_item_top_content">
<view class="name">张三三<text style="margin-left:20rpx;font-size: 28rpx;corlor:#999;">尾号9900</text></view>
<view class="date">12.09 13:23</view>
</view>
<view class="data_item_top_num">
<view class="jine">¥123.00</view>
<view class="status_box">
<view class="status status_ing">结算中</view>
</view>
</view>
</view>
<view class="data_item_bottom">个人所得税¥12.00</view>
</view>
</view>
</view>

View File

@ -0,0 +1,95 @@
.container{
background-color: #F4F4F4;
width: 100vw;
height: 100vh;
}
.top{
width: 92vw;
margin: 50rpx auto 0 auto;
background-color: #3CC7C0;
height: 150rpx;
border-radius: 20rpx;
color: #ffffff;
}
.top_txt{
display: flex;
align-items: center;
height: 110rpx;
padding-left: 20rpx;
}
.data_list{
width: 92vw;
margin: -40rpx auto 0 auto;
}
.data_item{
display: flex;
flex-direction: column;
margin-bottom: 50rpx;
height: 200rpx;
background-color: #ffffff;
border-radius: 20rpx;
padding: 20rpx 0 0 0;
}
.data_item_top{
flex: 2;
display: flex;
border-bottom: 1px solid #E7E7E7;
}
.data_item_top_icon{
flex: 1;
text-align: center;
height: 70%;
align-self: start;
}
.data_item_top_content{
flex: 3;
display: flex;
flex-direction: column;
}
.name{
font-size: 32rpx;
color: #333333;
flex: 1;
}
.date{
flex: 1;
font-size: 28rpx;
color: #999999;
}
.data_item_top_num{
flex: 2;
display: flex;
flex-direction: column;
justify-content: space-between;
text-align: center;
}
.jine{
color: #FF0000;
font-size: 34rpx;
}
.status_box{
display: flex;
justify-content: center;
}
.status{
border-radius: 10px;
font-size: 24rpx;
padding: 10rpx 40rpx;
margin-bottom: 20rpx;
}
.status_ing{
background-color: #FFF2E8;
color: #FA541C;
}
.status_end{
background-color: #C5C5C5;
color: #FFFFFF;
}
.data_item_bottom{
flex: 1;
display: flex;
align-items: center;
justify-content: flex-end;
margin-right: 20rpx;
color: #666;
}

63
Pages/yishi/chat/index.js Normal file
View File

@ -0,0 +1,63 @@
// index.js
import TIM from '../../../TUIKit/lib/tim-wx-sdk';
import { genTestUserSig } from '../../../TUIKit/debug/GenerateTestUserSig';
import TIMUploadPlugin from '../../../TUIKit/lib/tim-upload-plugin';
const app = getApp()
Page({
data: {
config: {
userID: "xiaobeibei", //User ID
SDKAPPID: 1400793692, // Your SDKAppID
SECRETKEY: "44d97cf741fc758be98cdad100015582b6ad1dc5a3b6676c1997a57279eecfa9", // Your secretKey
EXPIRETIME: 604800,
},
patient_account: "ayu",
title: '患者姓名',
height: app.globalData.height,
},
onLoad() {
console.log("chat onload");
let sign = genTestUserSig(this.data.config);
console.log("sign: ", sign);
const userSig = sign.userSig;
console.log("userSig: ", userSig);
wx.$TUIKit = TIM.create({
SDKAppID: this.data.config.SDKAPPID
});
wx.$chat_SDKAppID = this.data.config.SDKAPPID;
wx.$chat_userID = this.data.config.userID;
wx.$chat_userSig = userSig;
wx.$TUIKitTIM = TIM;
wx.$TUIKit.registerPlugin({ 'tim-upload-plugin': TIMUploadPlugin });
wx.$TUIKit.login({
userID: this.data.config.userID,
userSig
});
wx.$TUIKit.setLogLevel(3);//设置日志级别
wx.setStorage({
key: 'currentUserID',
data: [],
});
wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.SDK_READY, this.onSDKReady,this);
},
onUnload() {
console.log("chat onUnload");
wx.$TUIKit.off(wx.$TUIKitTIM.EVENT.SDK_READY, this.onSDKReady,this);
},
onShow(){
let _this = this;
let interval = setInterval(() => {
if(app.globalData.chat_sdk_ready){
_this.onSDKReady();
clearInterval(interval);
}
}, 100);
},
onSDKReady() {
console.error("chat js: onSDKReady")
const TUIChat = this.selectComponent('#TUIChat');
TUIChat.init();
app.globalData.chat_sdk_ready = true
}
})

View File

@ -0,0 +1,6 @@
{
"usingComponents": {
"TUIChat": "../../../TUIKit/components/TUIChat/index"
},
"navigationStyle": "custom"
}

View File

@ -0,0 +1,7 @@
<!-- 一对一聊天 -->
<view>
<TUIChat id="TUIChat" currentConversationID="C2C{{patient_account}}"
unreadCount="9" hasCallKit="{{ true }}" bind:handleCall="handleCall"
></TUIChat>
</view>

View File

@ -0,0 +1,8 @@
.container{
background-color: #F4F4F4;
width: 100vw;
height: 100vh;
}
.top{
}

View File

@ -0,0 +1,50 @@
// index.js
import TIM from '../../../TUIKit/lib/tim-wx-sdk';
import { genTestUserSig } from '../../../TUIKit/debug/GenerateTestUserSig';
import TIMUploadPlugin from '../../../TUIKit/lib/tim-upload-plugin';
const app = getApp()
Page({
data: {
config: {
userID: "xiaobeibei", //User ID
SDKAPPID: 1400793692, // Your SDKAppID
SECRETKEY: "44d97cf741fc758be98cdad100015582b6ad1dc5a3b6676c1997a57279eecfa9", // Your secretKey
EXPIRETIME: 604800,
},
title: '患者姓名',
height: app.globalData.height,
},
onLoad() {
let sign = genTestUserSig(this.data.config);
console.log("sign: ", sign);
const userSig = sign.userSig;
console.log("userSig: ", userSig);
wx.$TUIKit = TIM.create({
SDKAppID: this.data.config.SDKAPPID
});
wx.$chat_SDKAppID = this.data.config.SDKAPPID;
wx.$chat_userID = this.data.config.userID;
wx.$chat_userSig = userSig;
wx.$TUIKitTIM = TIM;
wx.$TUIKit.registerPlugin({ 'tim-upload-plugin': TIMUploadPlugin });
wx.$TUIKit.login({
userID: this.data.config.userID,
userSig
});
wx.$TUIKit.setLogLevel(3);//设置日志级别
wx.setStorage({
key: 'currentUserID',
data: [],
});
wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.SDK_READY, this.onSDKReady,this);
},
onUnload() {
wx.$TUIKit.off(wx.$TUIKitTIM.EVENT.SDK_READY, this.onSDKReady,this);
},
onSDKReady() {
console.warn("chat js: onSDKReady")
const TUIKit = this.selectComponent('#TUIKit');
TUIKit.init();
}
})

View File

@ -0,0 +1,6 @@
{
"usingComponents": {
"TUIKit": "../../../TUIKit/index"
},
"navigationStyle": "custom"
}

View File

@ -0,0 +1,4 @@
<!-- 最近回话列表 -->
<view>
<TUIKit config="{{config}}" id="TUIKit"></TUIKit>
</view>

View File

@ -0,0 +1,8 @@
.container{
background-color: #F4F4F4;
width: 100vw;
height: 100vh;
}
.top{
}

View File

@ -0,0 +1,82 @@
import { API } from './../../../utils/network/api'
const api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '处方管理', //导航栏 中间的标题
},
height: app.globalData.height,
stickyProps: {
offsetTop: app.globalData.height*2 + 20,
zIndex: 99
},
prescription_status: 0,
chufang_list_0: [],
chufang_list_2: [],
current_page: 0,
total: 0,
per_page: 0,
last_page: 0,
},
onShow(){
this.getList();
},
onTabsChange(e) {
console.log(e);
let list_name = "chufang_list_" + e.detail.value;
console.log(list_name)
this.setData({
prescription_status: e.detail.value,
current_page: 0,
last_page: 0,
[list_name]: []
})
this.getList()
},
onTabsClick(event) {
console.log(`Click tab, tab-panel value is ${event.detail.value}.`);
},
onStickyScroll(event) {
// console.log(event.detail);
},
onPullDownRefresh(){
console.log('===下拉动作===');
this.setData({
current_page: 0,
})
this.getList();
},
onReachBottom() {
console.log('===触底了!!===');
if(this.data.current_page < this.data.last_page){//最后一页时停止分页
this.getList()
}
},
getList(){
//获取处方列表
let params = {};
params.prescription_status = this.data.prescription_status;//处方审核状态0:审核中 2:审核驳回)
params.page = this.data.current_page + 1;
api.getDoctorPrescription(params).then(response => {
console.log(response);
if(response.data.total > 0){
let list_name = "chufang_list_" + this.data.prescription_status;
console.log(list_name);
let apprise_list = this.data[list_name];
this.setData({
[list_name]: apprise_list.concat(response.data.data),
current_page: response.data.current_page,
total: response.data.total,
per_page: response.data.per_page,
last_page: response.data.last_page,
})
}
}).catch(errors => {console.error(errors);})
}
})

View File

@ -0,0 +1,8 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "/commpents/te_navbar",
"t-tabs": "tdesign-miniprogram/tabs/tabs",
"t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel"
}
}

View File

@ -0,0 +1,154 @@
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container" style="height: calc(100vh - 96rpx - {{height}}px);">
<view class="tabs">
<t-tabs
defaultValue="{{0}}"
sticky
stickyProps="{{ stickyProps }}"
bind:change="onTabsChange"
bind:click="onTabsClick"
bind:scroll="onStickyScroll"
t-class="custom-tabs"
>
<t-tab-panel label="审核中" value="0" style="overflow: scroll;">
<view class="item_list" style="overflow: scroll;">
<view class="item" wx:for="{{chufang_list_0}}">
<!-- 头部 -->
<view class="item_top">
<view class="item_top_name">{{item.patient_name}}</view>
<view class="item_top_sex">{{item.patient_sex==1?'男':'女'}} | {{item.patient_age}}岁</view>
<view class="item_top_status_box">
<!-- 药师审核状态0:审核中 1:审核成功 2:审核驳回) -->
<view class="item_top_status">
{{item.pharmacist_audit_status==0?'审核中':item.pharmacist_audit_status==1?'审核成功':'审核驳回'}}
</view>
</view>
</view>
<!-- 中间内容部分 -->
<view class="item_content">
<view class="item_content_li">
<view class="item_content_li_title">开方时间:</view>
<view class="item_content_li_txt">{{item.created_at}}</view>
</view>
<view class="item_content_li">
<view class="item_content_li_title">病情描述:</view>
<view class="item_content_li_txt">{{item.disease_desc}}</view>
</view>
<view class="item_content_li">
<view class="item_content_li_title">确诊日期:</view>
<view class="item_content_li_txt">{{item.diagnosis_date}}</view>
</view>
<view class="item_content_li">
<view class="item_content_li_title">病情诊断:</view>
<view class="item_content_li_txt">
<text wx:for="{{item.order_prescription_icd}}" wx:for-item="icd">{{icd.icd_name}};</text>
</view>
</view>
</view>
<!-- 底部按钮 -->
<view class="item_bottom">
<view class="item_bottom_btn">问诊记录</view>
</view>
</view>
</view>
</t-tab-panel>
<!-- 驳回面板 -->
<t-tab-panel label="驳回" value="2" >
<view class="item_list">
<view class="item" wx:for="{{chufang_list_2}}">
<!-- 头部 -->
<view class="item_top">
<view class="item_top_name">{{item.patient_name}}</view>
<view class="item_top_sex">{{item.patient_sex==1?'男':'女'}} | {{item.patient_age}}岁</view>
<view class="item_top_status_box">
<!-- 药师审核状态0:审核中 1:审核成功 2:审核驳回) -->
<view class="item_top_status item_top_status_no">
{{item.pharmacist_audit_status==0?'审核中':item.pharmacist_audit_status==1?'审核成功':'审核驳回'}}
</view>
</view>
</view>
<!-- 中间内容部分 -->
<view class="item_content">
<view class="item_content_li">
<view class="item_content_li_title">开方时间:</view>
<view class="item_content_li_txt">{{item.created_at}}</view>
</view>
<view class="item_content_li">
<view class="item_content_li_title">病情描述:</view>
<view class="item_content_li_txt">{{item.disease_desc}}</view>
</view>
<view class="item_content_li">
<view class="item_content_li_title">确诊日期:</view>
<view class="item_content_li_txt">{{item.diagnosis_date}}</view>
</view>
<view class="item_content_li">
<view class="item_content_li_title">病情诊断:</view>
<view class="item_content_li_txt">{{item.icd_name}}</view>
</view>
<view class="item_content_li">
<view class="item_content_li_title">驳回原因:</view>
<view class="item_content_li_txt">{{item.platform_fail_reason}}</view>
</view>
</view>
<!-- 底部按钮 -->
<view class="item_bottom">
<view class="item_bottom_btn">问诊记录</view>
<view class="item_bottom_btn item_bottom_btn_repeat">
<navigator url="/Pages/yishi/onlinechufang/index" open-type="navigate" hover-class="other-navigator-hover">
重开处方
</navigator>
</view>
</view>
</view>
<view class="item">
<!-- 头部 -->
<view class="item_top">
<view class="item_top_name">张三三4</view>
<view class="item_top_sex">男 | 30岁</view>
<view class="item_top_status_box">
<view class="item_top_status item_top_status_no">驳回</view>
</view>
</view>
<!-- 中间内容部分 -->
<view class="item_content">
<view class="item_content_li">
<view class="item_content_li_title">病情诊断:</view>
<view class="item_content_li_txt">4年</view>
</view>
<view class="item_content_li">
<view class="item_content_li_title">病情诊断:</view>
<view class="item_content_li_txt">头疼,腰疼、肩膀酸、等症状已经困</view>
</view>
<view class="item_content_li">
<view class="item_content_li_title">病情诊断:</view>
<view class="item_content_li_txt">新冠病毒</view>
</view>
<view class="item_content_li">
<view class="item_content_li_title">处方时间:</view>
<view class="item_content_li_txt">2022年12月23日 1245</view>
</view>
<view class="item_content_li">
<view class="item_content_li_title">驳回原因:</view>
<view class="item_content_li_txt">图片不清晰</view>
</view>
</view>
<!-- 底部按钮 -->
<view class="item_bottom">
<view class="item_bottom_btn">问诊记录</view>
<view class="item_bottom_btn item_bottom_btn_repeat">
<navigator url="/Pages/yishi/onlinechufang/index" open-type="navigate" hover-class="other-navigator-hover">
重开处方
</navigator>
</view>
</view>
</view>
</view>
</t-tab-panel>
</t-tabs>
</view>
</view>

View File

@ -0,0 +1,105 @@
.container{
width: 100vw;
height: 100vh;
background-color: #F6F6F6;
}
.t-tabs__content{
background-color: #F6F6F6;
}
.t-tabs__item--active{
color: #49B9AD !important;
}
.t-tabs__track{
background-color: var(--td-tab-track-color, var(--td-primary-color, #49B9AD)) !important;
}
.item_list{
width: 90vw;
margin: 0 auto;
}
.item{
width: 100%;
border-radius: 20rpx;
background-color: #fff;
margin: 20rpx 0;
}
.item_top{
position: relative;
height: 100rpx;
display: flex;
align-items: center;
padding: 0 32rpx;
}
.item_top::after {
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
right: 32rpx;
left: 32rpx;
bottom: 0;
border-bottom: 1px dashed var(--td-cell-border-color, var(--td-gray-color-3, #999));
transform: scaleY(0.5);
}
.item_top_name{
flex: 1;
color: #3CC7C0;
font-size: 34rpx;
}
.item_top_sex{
flex: 3;
font-size: 34rpx;
color: #666;
}
.item_top_status_box{
flex: 1;
}
.item_top_status{
padding: 10rpx;
color: #FA541C;
background-color: #FFF2E8;
text-align: center;
border-radius: 10rpx;
font-size: 24rpx;
}
.item_top_status_no{
color: #fff;
background-color: #999;
}
.item_content{
padding: 20rpx 32rpx 0rpx 32rpx;
}
.item_content_li{
display: flex;
padding-bottom: 20rpx;
}
.item_content_li_title{
font-size: 30rpx;
}
.item_content_li_txt{
margin-left: 10rpx;
flex: 1;
color: #666666;
font-size: 28rpx;
}
.item_bottom{
height: 120rpx;
}
.item_bottom_btn{
position: relative;
top: 50%;
transform: translateY(-50%);
margin-right: 32rpx;
float: right;
text-align: center;
color: #fff;
padding: 15rpx 20rpx 15rpx 20rpx;
width: 150rpx;
background: linear-gradient(305deg, #FF931A 0%, #FCB75D 100%);
border-radius: 50rpx;
letter-spacing: 5rpx;
font-size: 28rpx;
}
.item_bottom_btn_repeat{
background: linear-gradient(129deg, #13DFD5 0%, #31C9C1 100%);
}

View File

@ -0,0 +1,741 @@
// Pages/yishi/identity/index.js
import Toast from '@vant/weapp/toast/toast';
import { API } from './../../../utils/network/api'
import { FileUtil } from './../../../utils/fileutil'
const api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '医师身份认证', //导航栏 中间的标题
},
height: app.globalData.height,
//选项卡
stickyProps: {
zIndex: 2,
},
realname:"",
idcard:"",
avatar: "https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/default_photo.png",
is_avatar: false,
city_show: false,
keshi_show: false,
yiyuan_show: false,
zhuanchang_show: false,
zhiye_show: false,
zige_show: false,
zhicheng_show: false,
zhicheng_img_show: false,
next_btn_txt: "下一步",
next_btn_disabled: false,
office_phone: "",
keshi_note: "请选择科室",
keshi_columns: [],
select_keshi_id: "",
select_keshi_index: "",
custom_keshi: "",
zhicheng_note: "请选择职称",
zhicheng_columns: [
{
text: "执业医师",
value: 1
},
{
text: "主治医师",
value: 2
},
{
text: "副主任医师",
value: 3
},
{
text: "主任医师",
value: 4
}
],
select_zhicheng_id: "",
select_zhicheng_index: "",
select_yiyuan_index: "",
yiyuan_columns: [],
zhuanchang_columns: [],
zhuanchang_selected_columns: [],
select_province_id: "",
select_city_id: "",
select_county_id: "",
city_note: "请选择城市",
yiyuan_note: "请选择医院",
select_yiyuan_id: "",
area_sub_titles: ["省份","市区","区县"],
areaList: [],
textarea_jianjie: "",
textarea_shanchang: "",
zhiye_file_list:[],
zige_file_list:[],
zhicheng_file_list:[],
doctorauthiden_data_ready: false,
basicdepartment_data_ready: false,
areaprovince_data_ready: false,
iden_auth_status: 0,
iden_auth_disabled: 0,
iden_auth_status_txt: "未认证",
},
onLoad(){
let _this = this;
//获取实名认证信息
api.getDoctorAuthReal().then(response => {
console.log(response);
if(response.data){
this.setData({
realname:response.data.card_name,
idcard:response.data.card_num,
next_btn_txt: "已认证,不可修改",
next_btn_disabled: true,
});
}
}).catch(errors => {
console.error(errors);
})
//获得医师身份认证
// api.getDoctorAuthIden().then(response => {
// console.log("getDoctorAuthIden: ",response);
// this.setData({
// is_avatar: true,
// doctorauthiden_data_ready: true,
// textarea_jianjie: response.data.brief_introduction,
// textarea_shanchang: response.data.be_good_at,
// custom_keshi: response.data.department_custom_name,
// office_phone: response.data.department_custom_mobile,
// select_keshi_id: response.data.department_custom_id,
// select_zhicheng_id: response.data.doctor_title,
// select_province_id: response.data.hospital.province_id,
// select_city_id: response.data.hospital.city_id,
// select_county_id: response.data.hospital.county_id,
// select_yiyuan_id: response.data.hospital.hospital_id,
// hospital: response.data.hospital,
// iden_auth_status: response.data.iden_auth_status,
// });
// let iden_auth_status = response.data.iden_auth_status;
// let iden_auth_status_txt = iden_auth_status == 0?'请完善资料后提交':iden_auth_status == 1?'认证通过': iden_auth_status==2?'资料已提交,审核中':iden_auth_status==3?'认证失败':'未认证';
// let iden_auth_disabled = iden_auth_status == 0?false:iden_auth_status == 1?false: iden_auth_status==2?true:iden_auth_status==3?false:true;
// this.setData({
// iden_auth_status_txt: iden_auth_status_txt,
// iden_auth_disabled: iden_auth_disabled
// })
// if(response.data.license_cert){
// let img_list = response.data.license_cert.map(item => {
// let img = {};
// img.url = item;
// img.isImg = true;
// return img;
// })
// this.setData({
// zhiye_file_list: img_list
// })
// }
// if(response.data.qualification_cert){
// let img_list = response.data.qualification_cert.map(item => {
// let img = {};
// img.url = item;
// img.isImg = true;
// return img;
// })
// this.setData({
// zige_file_list: img_list
// })
// }
// if(response.data.work_cert){
// let img_list = response.data.work_cert.map(item => {
// let img = {};
// img.url = item;
// img.isImg = true;
// return img;
// })
// this.setData({
// zhicheng_file_list: img_list
// })
// }
// let avatar = response.data.avatar;
// if(avatar && (avatar.indexOf("http") == -1)){
// avatar = api.getStaticHost() + avatar;
// }
// this.setData({
// "avatar": avatar
// })
// }).catch(errors => {console.error(errors);})
// //加载省份列表
// api.getAreaProvince().then(response => {
// console.log(response);
// const list = _this.formatArea(response, -1, true);
// _this.setData({
// areaprovince_data_ready: true,
// areaList: list
// })
// }).catch(errors => {console.error(errors); })
// //加载科室列表
// api.getBasicDepartment().then(response => {
// console.log(response);
// const list = _this.formatKeShi(response);
// _this.setData({
// basicdepartment_data_ready: true,
// keshi_columns: list
// })
// }).catch(errors => {console.error(errors); })
// //加载专长列表
// api.getDoctorExpertise().then(response => {
// console.log(response);
// _this.setData({
// zhuanchang_columns: response.data
// })
// }).catch(errors => {console.error(errors); })
// let keshi_huixian = false;
// let zhicheng_huixian = false;
// let area_huixian = false;
// //执行回显
// let data_replay = setInterval(() => {
// console.log("执行回显。。。")
// //回显科室
// if(_this.data.doctorauthiden_data_ready && _this.data.basicdepartment_data_ready){
// let index = _this.data.keshi_columns.findIndex(item => {
// return item.value == _this.data.select_keshi_id
// })
// _this.setData({
// select_keshi_index: index,
// keshi_note: _this.data.keshi_columns[index].text
// })
// keshi_huixian = true;
// }
// //回显职称
// if(_this.data.doctorauthiden_data_ready){
// let index = _this.data.zhicheng_columns.findIndex(item => {
// return item.value == _this.data.select_zhicheng_id
// })
// _this.setData({
// select_zhicheng_index: index,
// zhicheng_note: _this.data.zhicheng_columns[index].text
// })
// zhicheng_huixian = true;
// }
// //回显省市区
// if(_this.data.doctorauthiden_data_ready && _this.data.areaprovince_data_ready){
// let select_province_id = _this.data.select_province_id;
// let select_city_id = _this.data.select_city_id;
// let select_county_id = _this.data.select_county_id;
// let select_yiyuan_id = _this.data.select_yiyuan_id;
// api.getAreaCity({area_id: select_province_id}).then(response => {// 请求市区列表
// let _index = _this.data.areaList.findIndex(item => item.value == select_province_id);
// const list = _this.formatArea(response, _index, true);
// const _city = "areaList[" + _index + "].children";
// console.log("_city: ", _city);
// _this.setData({
// [_city]: list,
// })
// }).then(e =>{
// api.getAreaCounty({area_id: select_city_id}).then(response => {// 请求市区列表
// let _index = _this.data.areaList.findIndex(item => item.value == select_province_id);
// console.log("getAreaCounty: ", _index)
// let c_index = _this.data.areaList[_index].children.findIndex(item => item.value == select_city_id);
// console.log("children: ", _index)
// let p_index = _this.data.areaList[_index].children[c_index].index;
// const list = _this.formatArea(response, _index, false);
// const _county = "areaList[" + _index + "].children[" +p_index+ "].children";
// _this.setData({
// [_county]: list,
// })
// }).then(e => {
// let params = {
// province_id: _this.data.select_province_id,
// city_id: _this.data.select_city_id,
// county_id: _this.data.select_county_id,
// }
// api.getBasicHospital(params).then(response => {// 请求医院列表
// _this.setData({
// yiyuan_columns: _this.formatYiYuan(response),
// city_note: _this.data.hospital.province + "/" + _this.data.hospital.city + "/" + _this.data.hospital.county
// })
// setTimeout(() => {
// let index = _this.data.yiyuan_columns.findIndex(item => {
// return item.value == _this.data.select_yiyuan_id
// })
// _this.setData({
// select_yiyuan_index: index,
// yiyuan_note: _this.data.yiyuan_columns[index].text
// })
// }, 100);
// }).catch(errors => {console.error(errors); })
// }).catch(errors => {console.error(errors); })
// }).catch(errors => {console.error(errors); })
// area_huixian = true;
// }
// //都回显成功后,清除计时器
// if(keshi_huixian && zhicheng_huixian && area_huixian){
// clearInterval(data_replay);
// }
// console.log("计时器")
// }, 100);
},
onShow(){
console.log("onshow()....");
},
doUploadFile(event) {
console.log("index douploadFIle: ", event);
const scene = event.currentTarget.dataset.scene;
const field_name = event.currentTarget.dataset.field_name;
const file_multiple = event.currentTarget.dataset.file_multiple;//是否为多张图
console.log("scene: ", scene);
console.log("field_name: ", field_name);
console.log("file_multiple: ", file_multiple);
let _this = this;
api.getOssSign({user_type:2,scene:scene}).then(response => {
console.log(response);
const { file } = event.detail;
console.log("file: ", file);
const filename = FileUtil.getFileName(file);
const host = response.data.host;
const signature = response.data.signature;
const ossAccessKeyId = response.data.accessid;
const policy = response.data.policy;
const key = response.data.dir+filename;
const filePath = file.url; // 待上传文件的文件路径。
wx.uploadFile({
url: host, // 开发者服务器的URL。
filePath: filePath,
name: 'file', // 必须填file。
formData: {
key,
policy,
OSSAccessKeyId: ossAccessKeyId,
signature,
},
success: (res) => {
console.log("upload: ", res);
if (res.statusCode === 204) {
if(scene == 1){
this.setData({
is_avatar: true
})
}
wx.showToast({title: '上传成功'})
if(file_multiple == "true"){//多张图
let img = {}
img.url = host+"/"+key;
img.isImg = true;
let img_list = _this.data[field_name];
console.log("img_list: ", img_list);
img_list.push(img);
console.log("img_list: ", img_list);
this.setData({
[field_name]: img_list
});
}else{
this.setData({[field_name]: host+"/"+key});
}
}
},
fail: err => {
console.log(err);
}
});
}).catch(errors => {
console.error(errors);
})
},
doDeleteFile(event){
console.log(event);
let url = event.detail.file.url;
let file_name = event.currentTarget.dataset.field_name;
let img_list = this.data[file_name].filter(item => item.url != url);
this.setData({
[file_name]: img_list
})
},
//新增实名认证信息
postDoctorAuthReal(){
const realname = this.data.realname.trim();
const idcard = this.data.idcard.trim();
console.log("realname: ",realname);
console.log("idcard: ", idcard);
var realname_reg= /^(([a-zA-Z+\.?\·?a-zA-Z+]{2,30}$)|([\u4e00-\u9fa5+\·?\u4e00-\u9fa5+]{2,30}$))/;
var idcard_reg=/^(^[1-9]\d{5}[1-9]\d{3}(((0[2])([0|1|2][0-8])|(([0-1][1|4|6|9])([0|1|2][0-9]|[3][0]))|(((0[1|3|5|7|8])|(1[0|2]))(([0|1|2]\d)|3[0-1]))))((\d{4})|\d{3}[Xx])$)$/;
//判断用户输入的真实姓名是否为空
if(realname.length == 0){
wx.showToast({title: '姓名不能为空', icon:'error'})
return false;
}else if(!realname_reg.test(realname)){//检测姓名的格式是否匹配
wx.showToast({title: '姓名输入有误', icon:'error'})
return false;
}
//判断用户输入的身份证号是否为空
if(idcard.length == 0){
wx.showToast({title: '身份证不能为空', icon:'error'})
return false;
}else if(!idcard_reg.test(idcard)){//检测姓名的格式是否匹配
wx.showToast({title: '身份证输入有误', icon:'error'})
return false;
}
var params = {
card_name: realname,
card_num: idcard,
}
api.postDoctorAuthReal(params).then(response => {
console.log(response);
}).catch(errors => {
console.error(errors);
})
},
onTabsChange(event) {
console.log(`Change tab, tab-panel value is ${event.detail.value}.`);
},
onTabsClick(event) {
console.log(`Click tab, tab-panel value is ${event.detail.value}.`);
},
onStickyScroll(event) {
// console.log(`Click tab, tab-panel value is ${event.detail.value}.`);
},
// onCityShow(e) {
// console.log("onCityShow");
// this.setData({ city_show: true });
// },
// onChangeCity(e) {
// this.setData({
// select_county_id: "",
// select_yiyuan_id: ""
// })
// console.log("onChangeCity");
// const { selectedOptions } = e.detail;
// console.log(e.detail)
// let area = selectedOptions[selectedOptions.length-1];
// if(!area){
// area = selectedOptions[selectedOptions.length-2];
// }
// const type = area.type;
// const value = area.value;
// const index = area.index;
// const p_index = area.p_index;
// if(type == 2){//省份
// api.getAreaCity({area_id: value}).then(response => {// 请求市区列表
// const list = this.formatArea(response, index, true);
// const _city = "areaList[" + index + "].children";
// this.setData({
// [_city]: list,
// select_province_id: value
// })
// }).catch(errors => {console.error(errors); })
// }
// if(type == 3){//市区
// api.getAreaCounty({area_id: value}).then(response => {// 请求市区列表
// const list = this.formatArea(response, index, false);
// const _county = "areaList[" + p_index + "].children[" +index+ "].children";
// this.setData({
// [_county]: list,
// select_city_id: value
// })
// }).catch(errors => {console.error(errors); })
// }
// console.log("type: " + type);
// if(type == 4){//区县
// this.setData({
// select_county_id: value,
// });
// let params = {
// province_id: this.data.select_province_id,
// city_id: this.data.select_city_id,
// county_id: this.data.select_county_id,
// }
// api.getBasicHospital(params).then(response => {// 请求医院列表】
// this.setData({
// yiyuan_columns: this.formatYiYuan(response),
// city_show: false,
// city_note: this.getCityNote(selectedOptions),
// yiyuan_show: true
// })
// }).catch(errors => {console.error(errors); })
// }else{
// this.setData({
// city_show: true
// })
// }
// },
// getCityNote(selectedOptions){
// let txt = [];
// selectedOptions.forEach(item => {
// if(item){
// txt.push(item.label);
// }
// })
// return txt.join("/");
// },
// formatArea(response, p_index, has_children){
// var list = []
// let index = 0;
// response.data.forEach(data => {
// let area = {};
// area.index = index++;
// area.p_index = p_index;
// area.type = data.area_type;
// area.label = data.area_name;
// area.value = data.area_id;
// if(has_children){
// area.children = [];
// }
// list.push(area)
// });
// return list;
// },
// formatYiYuan(response){
// let list = [];
// response.data.forEach(data => {
// let hospital = {};
// hospital.text = data.hospital_name;
// hospital.value = data.hospital_id;
// list.push(hospital)
// });
// return list;
// },
// formatKeShi(response){
// let list = [];
// response.data.forEach(item => {
// let data = {};
// data.text = item.department_custom_name;
// data.value = item.department_custom_id;
// list.push(data)
// });
// return list;
// },
// formatZhuanChang(response){
// let list = [];
// response.data.forEach(item => {
// let data = {};
// data.text = item.expertise_name;
// data.value = item.expertise_id;
// list.push(data)
// });
// return list;
// },
// onYiYuanShow(e) {
// console.log("onYiYuanShow");
// this.setData({ yiyuan_show: true });
// },
// onYiYuanClose(e) {
// console.log("onYiYuanClose");
// this.setData({ yiyuan_show: false });
// },
// onYiYuanCancel(event) {
// console.log("onYiYuanCancel");
// const { picker, value, index } = event.detail;
// Toast(`当前值:${value}, 当前索引:${index}`);
// this.setData({
// yiyuan_show: false
// });
// },
// onYiYuanConfirm(event) {
// console.log("onYiYuanConfirm");
// const { picker, value, index } = event.detail;
// console.log(event.detail);
// this.setData({
// yiyuan_show: false,
// select_yiyuan_id: `${value.value}`,
// yiyuan_note: `${value.text}`
// });
// },
// onYiYuanChange(event) {
// console.log("onYiYuanChange");
// const { picker, value, index } = event.detail;
// Toast(`当前值:${value}, 当前索引:${index}`);
// },
// onKeshiShow(e) {
// console.log("onKeshiShow");
// this.setData({ keshi_show: true });
// },
// onKeshiCancel(event) {
// console.log("onKeshiCancel");
// const { picker, value, index } = event.detail;
// Toast(`当前值:${value}, 当前索引:${index}`);
// this.setData({ keshi_show: false });
// },
// onKeshiConfirm(event) {
// console.log("onKeshiConfirm");
// const { picker, value, index } = event.detail;
// Toast(`当前值:${value}, 当前索引:${index}`);
// this.setData({
// keshi_show: false,
// select_keshi_id: `${value.value}`,
// keshi_note: `${value.text}`,
// });
// },
// onKeshiChange(event) {
// console.log("onKeshiChange");
// },
// onKeshiClose(e) {
// console.log("onKeshiClose");
// this.setData({ keshi_show: false });
// },
// onZhiChengShow(e) {
// console.log("onKeshiShow");
// this.setData({ zhicheng_show: true });
// },
// onZhiChengCancel(event) {
// console.log("onKeshiCancel");
// const { picker, value, index } = event.detail;
// Toast(`当前值:${value}, 当前索引:${index}`);
// this.setData({ zhicheng_show: false });
// },
// onZhiChengConfirm(event) {
// console.log("onZhiChengConfirm");
// const { picker, value, index } = event.detail;
// Toast(`当前值:${value}, 当前索引:${index}`);
// this.setData({
// zhicheng_show: false,
// select_zhicheng_id: `${value.value}`,
// zhicheng_note: `${value.text}`,
// });
// },
// onZhiChengChange(event) {
// console.log("onZhiChengChange");
// },
// onZhiChengClose(e) {
// console.log("onZhiChengClose");
// this.setData({ zhicheng_show: false });
// },
// onZhuanChangShow(){
// this.setData({ zhuanchang_show: true });
// },
// onZhuanChangVisibleChange(e) {
// this.setData({
// zhuanchang_show: e.detail.visible,
// });
// },
// onshowJianJieNote(e){
// e.detail // 自定义组件触发事件时提供的 detail 对象
// console.log("onshowJianJieNote");
// },
// onshowShanChangNote(e){
// e.detail // 自定义组件触发事件时提供的 detail 对象
// console.log("onshowShanChangNote");
// },
// onshowZhiYeNote(e){
// e.detail // 自定义组件触发事件时提供的 detail 对象
// console.log("onshowZhiYeNote");
// this.setData({ zhiye_show: true });
// },
// onZhiYeClose(){
// console.log("onZhiYeClose");
// this.setData({ zhiye_show: false });
// },
// onshowZiGeNote(e){
// e.detail // 自定义组件触发事件时提供的 detail 对象
// console.log("onshowZiGeNote");
// this.setData({ zige_show: true });
// },
// onZiGeClose(){
// console.log("onZhiYeClose");
// this.setData({ zige_show: false });
// },
// onshowZhiChengImgNote(e){
// e.detail // 自定义组件触发事件时提供的 detail 对象
// console.log("onshowZhiChengNote");
// this.setData({ zhicheng_img_show: true });
// },
// onZhiChengImgClose(){
// console.log("onZhiChengClose");
// this.setData({ zhicheng_img_show: false });
// },
// getTextAreaVal(e){
// console.log("myindex: ", e);
// let textarea_name = e.currentTarget.dataset.textarea_name;
// this.setData({
// [textarea_name]: e.detail.value
// })
// },
// select_zhuanchang(e){
// console.log(e);
// let expertise_name = e.currentTarget.dataset.expertise_name;
// let expertise_id = e.currentTarget.dataset.expertise_id;
// let is_selected = e.currentTarget.dataset.is_selected;
// let index = e.currentTarget.dataset.index;
// let data = "zhuanchang_columns["+index+"].is_selected";
// this.setData({[data]: is_selected==1?0:1})
// },
// zhuanchangConfirm(e){
// this.setData({ zhuanchang_show: false });
// },
// zhuanchangConcle(e){
// this.setData({ zhuanchang_show: false });
// },
// addDoctorAuthIden(){
// let params = {};
// if(!this.data.is_avatar){wx.showToast({title: '请上传头像',icon: "error"});return}
// params.avatar = this.data.avatar;
// if(!this.data.select_county_id){wx.showToast({title: '请选择城市',icon: "error"});return}
// if(!this.data.select_yiyuan_id){wx.showToast({title: '请选择医院',icon: "error"});return}
// params.hospital_id = this.data.select_yiyuan_id;//医院id
// if(!this.data.select_keshi_id){wx.showToast({title: '请选择科室',icon: "error"});return}
// params.department_custom_id = this.data.select_keshi_id;//科室id
// if(!this.data.custom_keshi){wx.showToast({title: '请输入科室',icon: "error"});return}
// params.department_custom_name = this.data.custom_keshi;//自定义科室名称
// if(!this.data.office_phone){wx.showToast({title: '请输入科室电话',icon: "error"});return}
// params.department_custom_mobile = this.data.office_phone;//科室电话
// params.doctor_expertise = this.data.zhuanchang_columns.filter(e => e.is_selected == 1 ).map(e => e.expertise_id);//专长
// if(params.doctor_expertise.length == 0){wx.showToast({title: '请选择专长',icon: "error"});return}
// if(!this.data.select_zhicheng_id){wx.showToast({title: '请选择职称',icon: "error"});return}
// params.doctor_title = this.data.select_zhicheng_id;//职称id
// if(!this.data.textarea_jianjie){wx.showToast({title: '请输入简介',icon: "error"});return}
// params.brief_introduction = this.data.textarea_jianjie;//简介
// if(!this.data.textarea_shanchang){wx.showToast({title: '请输入擅长',icon: "error"});return}
// params.be_good_at = this.data.textarea_shanchang;//擅长
// if(this.data.zhiye_file_list.length == 0){wx.showToast({title: '请上传医师执业证',icon: "error"});return}
// params.license_cert = this.data.zhiye_file_list.map(e => e.url);//医师执业证
// if(this.data.zige_file_list.length == 0){wx.showToast({title: '请上传医师资格证',icon: "error"});return}
// params.qualification_cert = this.data.zige_file_list.map(e => e.url);//医生资格证
// if(this.data.zhicheng_file_list.length == 0){wx.showToast({title: '请上传职称证',icon: "error"});return}
// params.work_cert = this.data.zhicheng_file_list.map(e => e.url);//工作证,职称证
// console.log(params);
// api.postDoctorAuthIden(params).then(response => {
// console.log(response);
// wx.showToast({
// title: '提交成功',
// icon: "success"
// })
// this.setData({
// iden_auth_status_txt: "审核中",
// iden_auth_disabled: true
// })
// }).catch(errors => {console.error(errors);})
// }
})

View File

@ -0,0 +1,14 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "/commpents/te_navbar",
"myprofile": "/commpents/myprofile/index",
"t-tabs": "tdesign-miniprogram/tabs/tabs",
"t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel",
"t-cell": "tdesign-miniprogram/cell/cell",
"t-icon": "tdesign-miniprogram/icon/icon",
"t-button": "tdesign-miniprogram/button/button",
"van-field": "@vant/weapp/field/index",
"van-button": "@vant/weapp/button/index"
}
}

View File

@ -0,0 +1,67 @@
<!-- <nav-bar navbar-data='{{navbarData}}' style="margin-bottom: {{height*2 + 20}}px;"></nav-bar> -->
<te-nav-bar navbar-data='{{navbarData}}'></te-nav-bar>
<view class="container" style="height: calc(100vh - 96rpx - {{height}}px);">
<view class="tabs">
<t-tabs
defaultValue="{{0}}"
sticky
stickyProps="{{stickyProps}}"
bind:change="onTabsChange"
bind:click="onTabsClick"
bind:scroll="onStickyScroll"
t-class="custom-tabs"
theme="line"
custom-style="font-size: 32rpx"
>
<!-- 实名认证tab -->
<t-tab-panel label="实名认证" value="0" style="{{tabPanelstyle}}">
<van-cell-group>
<van-field
model:value="{{ realname }}"
label="真实姓名"
type="text"
placeholder="请填写真实姓名,提交后不能修改"
placeholder-style="font-size:28rpx; color: #C5C8CB;"
input-align="right"
required
clearable
custom-style="font-size:30rpx;"
/>
<van-field
model:value="{{ idcard }}"
type="idcard"
label="身份证号"
placeholder="请填写身份证号"
placeholder-style="font-size:28rpx; color: #C5C8CB;"
input-align="right"
required
clearable
custom-style="font-size:30rpx;"
border="{{ false }}"
/>
</van-cell-group>
<!-- <t-cell title="真实姓名" hover required arrow note="请填写真实姓名,提交后不能修改"/> -->
<!-- <t-cell title="身份证号" hover required arrow note="请填写身份证号"/> -->
<view class="bottom_note">
说明:因互联网医院实行实名制要求,需要您的身份信息,包括姓名,身份证号码。如您不能提供上述信息,将无法完成医师身份认证。
</view>
<view class="bottom_next">
<van-button disabled="{{next_btn_disabled}}"
color="#3CC7C0" bind:click="postDoctorAuthReal"
custom-style="border-radius: 20rpx;font-size: 30rpx;"
type="primary" block>{{next_btn_txt}}</van-button>
</view>
</t-tab-panel>
<!-- 医师身份认证 -->
<t-tab-panel label="医师身份认证" value="1" style="{{tabPanelstyle}}">
<myprofile />
</t-tab-panel>
</t-tabs>
</view>
<van-toast id="van-toast" />
</view>

View File

@ -0,0 +1,190 @@
.required{
color: #e34d59;
}
.photo{
position: relative;
padding: 32rpx;
display: flex;
justify-content: space-between;
font-size: 32rpx;
font-weight: 400;
align-items: center;
}
.photo::after {
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
right: 0;
left: 32rpx;
bottom: 0;
border-bottom: 1px solid var(--td-cell-border-color, var(--td-gray-color-3, #e7e7e7));
transform: scaleY(0.5);
left: 32rpx;
}
.title{
font-size: 30rpx;
color: #1C2023;
}
.right{
display: flex;
color: rgba(0, 0, 0, 0.4);
font-size: 25rpx;
letter-spacing: 2rpx;
align-items: center;
}
.t-input__label{
font-size: 30rpx !important;
}
.van-field__label{
color: #000 !important;
font-size: 30rpx !important;
}
.zhuanchang{
position: relative;
padding: 32rpx;
display: flex;
justify-content: space-between;
font-size: 32rpx;
font-weight: 400;
align-items: center;
}
.zhuanchang::after {
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
right: 0;
left: 32rpx;
bottom: 0;
border-bottom: 1px solid var(--td-cell-border-color, var(--td-gray-color-3, #e7e7e7));
transform: scaleY(0.5);
left: 32rpx;
}
.zhuanchang .content{
flex: 1;
display: flex;
flex-wrap: wrap;
margin-left: 20rpx;
}
.content_item{
height: 60rpx;
line-height: 60rpx;
padding: 0rpx 20rpx;
background: #3CC7C0;
border-radius: 29rpx;
color: #fff;
margin: 20rpx 10rpx 20rpx 0;
font-size: 28rpx;
}
.t-tabs__item--active{
color: #49B9AD !important;
}
.t-tabs__track{
background-color: var(--td-tab-track-color, var(--td-primary-color, #49B9AD)) !important;
}
.t-cell__note {
font-size: 25rpx !important;
letter-spacing: 2rpx;
}
.t-cell__title-text{
font-size: 30rpx !important;
}
.t-input__wrap--suffix-icon{
padding-left: var(--td-spacer-1, 8rpx) !important;
}
.t-tabs__content {
overflow: unset !important;
}
.bottom_note{
color: #999999;
font-size: 28rpx;
width: 95vw;
margin: 30rpx auto;
letter-spacing: 3rpx;
}
.bottom_next{
width: 95vw;
margin: 530rpx auto;
}
.sub_button{
width: 95vw;
margin: 0 auto 30rpx auto;
}
.zhiye_popup{
display: flex;
flex-direction: column;
align-items: center;
height: 600rpx;
}
.zhiye_popup_title{
margin-top: 16px;
font-size: 32rpx;
font-weight: 600;
letter-spacing: 5rpx;
}
.zhiye_popup_img{
margin-top: 30rpx;
width: 300rpx;
height: 300rpx;
background-color: cadetblue;
}
/* 自定义 vant required 小红点位置 */
.van-cell--required::before {
left: 4.7rem !important;
}
.zhuanchang_box{
display: flex;
flex-wrap: wrap;
margin: 0 20rpx;
}
.zhuanchang_box_item{
background-color: #f2f2f2;
padding: 10rpx 20rpx;
border-radius: 20rpx;
color: #000;
font-size: 28rpx;
margin: 20rpx 10rpx;
}
.zhuanchang_box_item_checked{
background-color: #3cc7c0;
color: #fff;
}
.zhuanchang_block {
width: 100vw;
height: 240px;
background: #fff;
border-top-left-radius: 16rpx;
border-top-right-radius: 16rpx;
}
.zhuanchang_wrapper {
margin: 32rpx;
display: block;
}
.zhuanchang_header {
display: flex;
align-items: center;
border-bottom: 1px solid #e7e7e7;
}
.zhuanchang_title {
flex: 1;
text-align: center;
font-weight: 600;
font-size: 36rpx;
}
.zhuanchang_btn {
font-size: 32rpx;
padding: 32rpx;
}
.zhuanchang_btn--cancel {
color: rgba(0, 0, 0, .6);
}
.zhuanchang_btn--confirm {
color: #3cc7c0;
}

377
Pages/yishi/index/index.js Normal file
View File

@ -0,0 +1,377 @@
// Pages/yishi/index/index.js
import { API } from './../../../utils/network/api'
const api = new API()
const app = getApp()
Page({
data: {
title: "肝胆相照互联网医院",
navHeight: 0,
stateHeight: 0,
info:{
user_name: "手机号后四位",
not_accepted_inquiry_num: 6,
accepting_inquiry_num: 12,
info_shiming_status_txt: "未认证",
info_shiming_status: "info_shiming_status_no",
show_info_note: false,
praise_rate: "99%",
avg_response_time: 125,
number_of_fans: 9254,
avatar: "https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/default_photo.png",
reject_prescription_number: false,//处方管理小红点
},
iden_auth_status_txt: "未认证",
multi_point_status_txt: "未认证",
iden_auth_status_url: "/Pages/yishi/identity/index",
multi_point_status_url: "/Pages/yishi/zhiye_identity/index",
current: 0,
autoplay: true,
duration: 500,
interval: 5000,
swiperList: [
`https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yishi/ad1.jpg`,
`https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yishi/ad2.jpg`,
`https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yishi/ad3.jpg`,
],
dialog_visible: false,
dialog_content: "请您先实名认证",
/*
case_module取值
新问诊 0
接诊中 1
多点执业认证 2
简介管理 3
在线问诊管理 4
快速问诊管理 5
义诊管理 6
处方管理 7
联系客服 8
*/
/*
case_status 取值
未实名认证和医师身份认证 0
已实名认证未医师身份认证 1
已实名认证和医师身份认证未绑定结算银行卡 2
已实名认证和医生身份认证已绑定结算银行卡 3
已实名认证和医师身份认证且绑定结算银行卡开通了在线问诊未开通多点执业认证 4
*/
mycase: [
{
case_status: 0,
case_module: [0,1,2,3,4,5,6,7,8],
case_text: "未实名认证"
},
{
case_status: 1,
case_module: [0,1,2,3,4,5,6,7,8],
case_text: "未医师身份认证"
},
{
case_status: 2,
case_module: [0,1,4,5,6],
case_text: "未绑定结算银行卡"
},
{
case_status: 3,
case_module: [0,1,5,6,7],
case_text: "请您先设置在线问诊价格"
},
{
case_status: 4,
case_module: [7],
case_text: "请您先进行多点执业认证证"
},
{
case_status: 5,
case_module: [],
case_text: "已全部通过"
},
],
skeleton_loading: true
},
// 获取状态栏信息
getMenuButtonBound() {
let stateHeight = 0; // 接收状态栏高度
const navHeight = wx.getMenuButtonBoundingClientRect().height; // 获取胶囊高度
let top = 0;
wx.getSystemInfo({
success(res) {
stateHeight = res.statusBarHeight;
},
});
top = wx.getMenuButtonBoundingClientRect().top - stateHeight; // 获取top值
console.log('navHeight', navHeight);
console.log('top', top);
this.setData({
// navHeight: navHeight + top * 2, // 导航栏高度
navHeight, // 导航栏高度
stateHeight: stateHeight + top, // 状态栏高度
});
},
onLoad(){
api.yiShiIndex().then(response => {
console.log(response);
let avatar = response.data.info.avatar;
this.setData({
"info.user_name": response.data.info.user_name,
"info.not_accepted_inquiry_num": response.data.info.not_accepted_inquiry_num,
"info.accepting_inquiry_num": response.data.info.accepting_inquiry_num,
"info.praise_rate": response.data.info.praise_rate,
"info.avg_response_time": response.data.info.avg_response_time,
"info.number_of_fans": response.data.info.number_of_fans,
})
if(avatar && (avatar.indexOf("http") == -1)){
avatar = api.getStaticHost() + avatar;
}
this.setData({
"info.avatar": avatar
})
//实名认证
let idcard_status = response.data.info.idcard_status;
//医师身份认证
let iden_auth_status = response.data.info.iden_auth_status;
//多点执业认证
let multi_point_status = response.data.info.multi_point_status;
//绑定结算银行卡
let is_bind_bank = response.data.info.is_bind_bank;
//是否参加专家图文接诊0:否 1:是)
let is_img_expert_reception = response.data.info.is_img_expert_reception;
this.setData({
"info.idcard_status": idcard_status,
"info.iden_auth_status": iden_auth_status,
"info.multi_point_status": multi_point_status,
"info.is_bind_bank": is_bind_bank,
"info.is_img_expert_reception": is_img_expert_reception,
});
//iden_auth_status 0:未认证 1:认证通过 2:审核中 3:认证失败
if(iden_auth_status == 0) this.setData({iden_auth_status_txt: "未认证"});
if(iden_auth_status == 1) this.setData({iden_auth_status_txt: "认证通过", iden_auth_status_url: "/Pages/yishi/attestation/index"});
if(iden_auth_status == 2) this.setData({iden_auth_status_txt: "审核中"});
if(iden_auth_status == 3) this.setData({iden_auth_status_txt: "认证失败"});
//multi_point_status 0:未认证 1:认证通过 2:审核中 3:认证失败
if(multi_point_status == 0) this.setData({multi_point_status_txt: "未认证"});
if(multi_point_status == 1) this.setData({multi_point_status_txt: "认证通过", multi_point_status_url: "/Pages/yishi/practicing/index"});
if(multi_point_status == 2) this.setData({multi_point_status_txt: "审核中"});
if(multi_point_status == 3) this.setData({multi_point_status_txt: "认证失败"});
//平均响应时间
var avg_response_time = response.data.info.avg_response_time;
if(avg_response_time != "0"){
this.setData({"info.show_info_note": true});
}
//处方管理小红点
var reject_prescription_number = response.data.info.reject_prescription_number;
if(reject_prescription_number){
this.setData({"info.reject_prescription_number": reject_prescription_number});
}
this.checkStatus();
this.setData({
skeleton_loading: false
})
}).catch(errors => {
console.error(errors);
})
},
onShow: function () {
if (typeof this.getTabBar === 'function' && this.getTabBar()) {
this.getTabBar().setData({
currentTab: 0 //数字是当前页面在tabbar的索引,如我的查询页索引是2因此这边为2同理首页就为0审批页面为1
})
}
this.getMenuButtonBound();
},
onADChange(){
// console.log("onADChange");
},
go(e){
//实名认证
let idcard_status = this.data.info.idcard_status;
//医师身份认证
let iden_auth_status = this.data.info.iden_auth_status;
//多点执业认证
let multi_point_status = this.data.info.multi_point_status;
//绑定结算银行卡
let is_bind_bank = this.data.info.is_bind_bank;
//是否参加专家图文接诊0:否 1:是)
let is_img_expert_reception = this.data.info.is_img_expert_reception;
let status = 0;
// 未实名认证和医师身份认证 0
// 已实名认证,未医师身份认证 1
// 已实名认证和医师身份认证,未绑定结算银行卡 2
// 已实名认证和医生身份认证,已绑定结算银行卡 没开通了在线问诊3
// 已实名认证和医师身份认证且绑定结算银行卡,开通了在线问诊,未开通多点执业认证 4
// 已实名认证和医师身份认证且绑定结算银行卡,开通了在线问诊,已开通多点执业认证 5
if(idcard_status == 0 && iden_auth_status == 0){
status = 0;
}else if(idcard_status == 1 && iden_auth_status == 0){
status = 1;
}else if(idcard_status == 1 && iden_auth_status == 1 && is_bind_bank == 0){
status = 2;
}else if(idcard_status == 1 && iden_auth_status == 1 && is_bind_bank == 1 && is_img_expert_reception == 0){
status = 3;
}else if(idcard_status == 1 && iden_auth_status == 1 && is_bind_bank == 1 && is_img_expert_reception == 1 && multi_point_status == 0){
status = 4;
}else{
status = 5;
}
let now_case = this.data.mycase.find(item => {
return item.case_status == status;
});
console.log("now_case: ", now_case);
//所属模块
let moudle = e.currentTarget.dataset.moudle;
console.log("moudle: ", moudle);
if(now_case){
let now_moudle = now_case.case_module.find(item => {
return item == moudle;
})
console.log("now_moudle: ", now_moudle);
if(now_moudle != undefined){
this.setData({
dialog_content: now_case.case_text,
dialog_visible: true
});
return;
}
}
app.go(e.currentTarget.dataset.url)
},
confirmDialog(){
this.setData({
dialog_visible: false
})
},
cancelDialog(){
this.setData({
dialog_visible: false
})
},
checkStatus(){
//实名认证
let idcard_status = this.data.info.idcard_status;
//医师身份认证
let iden_auth_status = this.data.info.iden_auth_status;
//多点执业认证
let multi_point_status = this.data.info.multi_point_status;
if(idcard_status == 0){
this.setData({
dialog_content: "请您先实名认证",
dialog_visible: true
});
return false;
}
if(idcard_status == 2){
this.setData({
"info.info_shiming_status_txt": "认证失败",
"info.info_shiming_status": "info_shiming_status_yes",
dialog_content: "实名认证失败",
dialog_visible: true
});
this.setData({
});
return false;;
}
if(iden_auth_status == 0){
this.setData({
"info.info_shiming_status_txt": "前往医师身份认证",
"info.info_shiming_status": "info_shiming_status_yes",
dialog_content: "请您前往医师身份认证",
dialog_visible: true
});
return false;
}
if(iden_auth_status == 2){
this.setData({
"info.info_shiming_status_txt": "审核中",
"info.info_shiming_status": "info_shiming_status_yes",
dialog_content: "您的医师身份认证正在审核中",
dialog_visible: true
});
return false;
}
if(iden_auth_status == 3){
this.setData({
"info.info_shiming_status_txt": "认证失败",
"info.info_shiming_status": "info_shiming_status_yes",
dialog_content: "您的医师身份认证失败",
dialog_visible: true
});
return false;
}
//多点执业认证
if(multi_point_status == 0){
this.setData({
"info.info_shiming_status_txt": "前往多点执业认证",
"info.info_shiming_status": "info_shiming_status_yes",
dialog_content: "请您先进行多点执业认证",
dialog_visible: true
});
return false;
}
if(multi_point_status == 2){
this.setData({
"info.info_shiming_status_txt": "审核中",
"info.info_shiming_status": "info_shiming_status_yes",
dialog_content: "您的多点执业认证正在审核中",
dialog_visible: true
});
return false;
}
if(multi_point_status == 3){
this.setData({
"info.info_shiming_status_txt": "认证失败",
"info.info_shiming_status": "info_shiming_status_yes",
dialog_content: "您的多点执业认证失败",
dialog_visible: true
});
return false;
}
//绑定结算银行卡
var is_bind_bank = this.data.info.is_bind_bank;
if(is_bind_bank == 0){
this.setData({
"info.info_shiming_status_txt": "绑定结算银行卡",
"info.info_shiming_status": "info_shiming_status_yes",
dialog_content: "请您先绑定结算银行卡",
dialog_visible: true
});
return false;
}
//开启在线问诊
var is_img_expert_reception = this.data.info.is_img_expert_reception;
if(is_img_expert_reception == 0){
this.setData({
"info.info_shiming_status_txt": "开启在线问诊",
"info.info_shiming_status": "info_shiming_status_yes",
multi_point_status_url: "/Pages/yishi/onlinesetup/index",
dialog_content: "请您先前往在线问诊管理中开通在线问诊",
dialog_visible: true
});
return false;
}
this.setData({"info.info_shiming_status_txt": "去接诊"});
this.setData({"info.info_shiming_status": "info_shiming_status_yes"});
return true;
}
})

View File

@ -0,0 +1,12 @@
{
"component": true,
"usingComponents": {
"t-avatar": "tdesign-miniprogram/avatar/avatar",
"van-image": "@vant/weapp/image/index",
"van-button": "@vant/weapp/button/index",
"t-swiper": "tdesign-miniprogram/swiper/swiper",
"t-swiper-nav": "tdesign-miniprogram/swiper-nav/swiper-nav",
"t-badge": "tdesign-miniprogram/badge/badge",
"t-dialog": "tdesign-miniprogram/dialog/dialog"
}
}

View File

@ -0,0 +1,155 @@
<view class="container">
<!-- 顶部背景 -->
<view class="top_bk"></view>
<!-- 顶部标题 -->
<view class="title"
style="top:0;padding-top: {{stateHeight}}px;height: {{navHeight + 10}}px;line-height: {{navHeight}}px;">{{ title }}</view>
<!-- 用户信息 -->
<view class="info_box" style="margin-top: {{stateHeight+navHeight+10}}px;">
<view class="info">
<view class="info_photo">
<!-- 跳转我的信息 -->
<navigator url="/Pages/yishi/myinfo/index" open-type="navigate" hover-class="other-navigator-hover">
<t-avatar alt="头像" class="avatar" size="large" image="{{info.avatar}}" />
</navigator>
</view>
<view class="info_content">
<view class="info_mobile">{{info.user_name}}</view>
<view class="info_wenzhen">
<view bindtap="go" data-moudle="0">新问诊:{{info.not_accepted_inquiry_num}}</view>
<view bindtap="go" data-moudle="1">接诊中:{{info.accepting_inquiry_num}}</view>
</view>
</view>
<view class="info_shiming">
<view class="info_shiming_status {{info.info_shiming_status}}">{{info.info_shiming_status_txt}}</view>
</view>
</view>
<view class="info_note" wx:if="{{info.show_info_note}}">
<view class="haoping info_note_item">
<text class="info_note_txt">好评率</text><text class="info_note_num"> {{info.praise_rate}}%</text>
</view>
<view class="time info_note_item">
<text class="info_note_txt">响应时间</text><text class="info_note_num"> {{info.avg_response_time}} </text><text class="info_note_txt">分钟</text>
</view>
<view class="follow info_note_item">
<text class="info_note_txt">关注数</text><text class="info_note_num"> {{info.number_of_fans}}</text>
</view>
</view>
</view>
<!-- 认证信息 -->
<view class="renzhen">
<view class="renzheng_left">
<view class="renzheng_content_left">
<view class="renzheng_content_name">医师身份认证</view>
<view class="renzheng_content_status">
<van-button round plain bind:click="go" data-url="/Pages/yishi/identity/index"
custom-style="background-color: #E0FFFE; height: 45rpx; letter-spacing: 3rpx; font-size: 26rpx;"
color="#3CC7C0" type="info" size="small">{{ iden_auth_status_txt }}></van-button>
</view>
</view>
<view class="renzheng_content_right">
<image class="renzheng_content_right_img"
mode="widthFix"
src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yishi/yishirenzheng.png"
/>
</view>
</view>
<view class="renzheng_right">
<view class="renzheng_content_left">
<view class="renzheng_content_name">多点执业认证</view>
<view class="renzheng_content_status">
<van-button round plain bind:click="go" data-moudle="2" data-url="/Pages/yishi/zhiye_identity/index"
custom-style="background-color: #FFF5E0; height: 45rpx; letter-spacing: 3rpx; font-size: 26rpx;"
color="#FC7E00" type="info" size="small">{{ multi_point_status_txt }}></van-button>
</view>
</view>
<view class="renzheng_content_right">
<image class="renzheng_content_right_img"
mode="widthFix"
src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yishi/zhiyerenzheng.png"
/>
</view>
</view>
</view>
<!-- 广告版块 -->
<view class="ad">
<t-swiper
height="110rpx"
current="{{current}}"
autoplay="{{autoplay}}"
duration="{{duration}}"
interval="{{interval}}"
navigation="{{ { type: 'dots' } }}"
list="{{swiperList}}"
bind:click="onTap"
bind:change="onADChange"
>
</t-swiper>
</view>
<!-- 功能模块 -->
<view class="fun_box">
<view bindtap="go" data-moudle="3" data-url="/Pages/yishi/myprofile/index" class="fun_box_item">
<image class="fun_box_item_img"
mode="widthFix"
width="70rpx"
custom-style="width: 70rpx;"
src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yishi/jianjie.png"
/>
<text class="fun_box_item_txt">我的简介</text>
</view>
<view bindtap="go" data-moudle="4" data-url="/Pages/yishi/onlinesetup/index" class="fun_box_item">
<image class="fun_box_item_img"
mode="widthFix"
src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yishi/zaixian.png"
/>
<text class="fun_box_item_txt">在线问诊</text>
</view>
<view bindtap="go" data-moudle="5" data-url="/Pages/yishi/kuaisusetup/index" class="fun_box_item">
<image class="fun_box_item_img"
mode="widthFix"
src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yishi/kuaisu.png"
/>
<text class="fun_box_item_txt">快速问诊</text>
</view>
<view bindtap="go" data-moudle="6" data-url="/Pages/yishi/yizhensetup/index" class="fun_box_item">
<image class="fun_box_item_img"
mode="widthFix"
src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yishi/yizhen.png"
/>
<text class="fun_box_item_txt">公益问诊</text>
</view>
<view bindtap="go" data-moudle="7" data-url="/Pages/yishi/chufangsetup/index" class="fun_box_item">
<image class="fun_box_item_img"
mode="widthFix"
src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yishi/chufang.png"
/>
<view class="fun_box_item_txt">
<t-badge dot="{{info.reject_prescription_number ? true : false}}" offset="{{ ['-14rpx', '10rpx'] }}" class="wrapper" content="处方管理" />
</view>
</view>
<view class="fun_box_item" bindtap="go" data-moudle="8">
<image class="fun_box_item_img"
mode="widthFix"
src="https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/yishi/kefu.png"
/>
<text class="fun_box_item_txt">联系客服</text>
</view>
</view>
<t-dialog
visible="{{ dialog_visible }}"
title="温馨提示"
content="{{dialog_content}}"
>
<view slot="cancel-btn" class="dialog dialog_cancel_btn" bindtap="cancelDialog">
取消
</view>
<view slot="confirm-btn" class="dialog dialog_confirm_btn" bindtap="confirmDialog">
确定
</view>
</t-dialog>
</view>

View File

@ -0,0 +1,204 @@
.container{
width: 100vw;
}
.top_bk{
position: fixed;
top: -2230rpx;
left: 50%;
transform: translateX(-50%);
width: 2500rpx;
height: 2500rpx;
background-color: #3CC7C0;
border-radius: 50%;
z-index: -99;
}
.title{
position: fixed;
letter-spacing: 3rpx;
margin-left: 5vw;
font-size: 35rpx;
color: #fff;
background-color: #3CC7C0;
width: 100%;
z-index: 999;
}
.info_box{
width: 90vw;
margin: 30rpx auto;
display: flex;
padding: 20rpx 0;
flex-direction: column;
background-color: rgb(255, 255, 255);
border-radius: 10rpx;
box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.06);
}
.info{
display: flex;
align-items: center;
justify-content: space-around;
}
.info_photo{
margin-left: 20rpx;
flex: 1;
}
.info_content{
color: #000;
flex: 4;
display: flex;
flex-direction: column;
justify-content: space-between;
padding-left: 20rpx;
}
.info_mobile{
font-size: 36rpx;
letter-spacing: 3rpx;
}
.info_wenzhen{
margin-top: 10rpx;
font-size: 28rpx;
color: #666666;
display: flex;
}
.info_shiming{
flex: 2;
display: flex;
justify-content: center;
}
.info_shiming_status{
padding: 15rpx 20rpx 15rpx 20rpx;
border-radius: 10rpx;
margin-right: 10rpx;
font-size: 30rpx;
}
.info_shiming_status_no{
background-color: rgb(207, 207, 214);
}
.info_shiming_status_yes{
background-color: #3CC7C0;
color: #fff;
}
.info_note{
color: rgb(122, 121, 121);
display: flex;
justify-content: space-around;
align-items: center;
text-align: center;
margin-top: 20rpx;
}
.info_note_txt{
font-size: 28rpx;
color: #666666;
}
.info_note_item{
flex: 3;
}
.time{
flex: 4;
}
.info_note_num{
color: #E34D59;
font-weight: 600;
font-size: 36rpx;
}
.renzhen{
width: 90vw;
margin: 30rpx auto;
display: flex;
}
.renzheng_left{
flex: 1;
background-color: #E0FFFE;
display: flex;
align-items: center;
padding: 20rpx 0;
box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.06);
}
.renzheng_right{
flex: 1;
background-color: #FFF5E0;
margin-left: 20rpx;
display: flex;
align-items: center;
box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.06);
}
.renzheng_content_left{
flex: 2;
display: flex;
flex-direction: column;
padding: 0 0rpx 0 20rpx;
}
.renzheng_content_name{
font-size: 34rpx;
}
.renzheng_content_status{
margin-top: 20rpx;
}
.renzheng_content_right{
flex: 1;
}
.renzheng_content_right_img{
width: 100%;
}
.ad{
padding: 20rpx 20rpx 0 20rpx;
width: calc(90vw - 40rpx);
height: 150rpx;
margin: 0 auto;
box-shadow: 0px 2px 10px 0px rgba(0,0,0,0.1);
border-radius: 10rpx;
background-color: rgb(255, 255, 255);
}
.t-swiper-nav--bottom {
bottom: -24rpx !important;
}
.t-swiper-nav__dots-item {
background: var(--td-swiper-nav-dot-color, var(--td-font-white-2, rgb(107, 106, 106))) !important;
}
.t-swiper-nav__dots-item--active {
background-color: var(--td-swiper-nav-dot-active-color, var(--td-font-white-1, #3CC7C0)) !important;
}
.fun_box{
width: 90vw;
margin: 30rpx auto 0 auto;
padding: 20rpx 0;
box-shadow: 0px 2px 10px 0px rgba(0,0,0,0.1);
display: flex;
flex-wrap: wrap;
justify-content: space-around;
}
.fun_box_item{
width: 40vw;
height: 150rpx;
background-color: #FAFAFA;
border-radius: 10rpx;
margin: 10rpx 0;
display: flex;
align-items: center;
padding-left: 20rpx;
}
.fun_box_item_img{
flex: 1;
}
.fun_box_item_txt{
flex: 2;
font-size: 30rpx;
color: #333333;
}
.t-class-cancel{
color: #3CC7C0 !important;
}
.dialog{
width: 50%;
text-align: center;
height: 100rpx;
line-height: 100rpx;
}
.dialog_cancel_btn{
border-top: 1px solid #E9E9E9;
border-right: 1px solid #E9E9E9;
}
.dialog_confirm_btn{
border-top: 1px solid #E9E9E9;
color: #3CC7C0;
}

View File

@ -0,0 +1,103 @@
import { API } from './../../../utils/network/api'
import Toast from '@vant/weapp/toast/toast';
let api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '快速问诊设置', //导航栏 中间的标题
},
height: app.globalData.height,
checked: true,
open_note: "已开启,可在问诊消息中选择订单接诊",
close_note: "已关闭,暂不接收快速图文订单",
note: "",
inquiry_type: 2,
inquiry_mode: 1,
info:{
is_open: false,
inquiry_price: 0,
work_num_day: 0
},
config:{
"max_work_num_day": 30,
"min_inquiry_price": 0,
"max_inquiry_price": 0,
"default_inquiry_price": 0,
"times_number": 10,
"duration": 1440,
"system_inquiry_price": [
"0",
"5",
"10"
]
}
},
onLoad(){
this.setData({ note: this.data.open_note });
},
onShow(){
let params = {};
params.inquiry_type = this.data.inquiry_type;//接诊类型1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药)
params.inquiry_mode = this.data.inquiry_mode;//接诊方式1:图文 2:视频 3:语音 4:电话 5:会员)
//获取医生我的账户数据
api.getDoctorInquiryConfig(params).then(response => {
console.log(response);
this.setData({
info: response.data.info,
config: response.data.config,
})
}).catch(errors => {console.error(errors);})
},
onChange({ detail }) {
console.log("onChange: ", detail);
if(detail){
this.setData({ note: this.data.open_note });
}else{
this.setData({ note: this.data.close_note });
}
this.setData({ "info.is_open": detail });
//修改开关
let params = {};
params.inquiry_type = this.data.inquiry_type;//接诊类型1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药)
params.inquiry_mode = this.data.inquiry_mode;//接诊方式1:图文 2:视频 3:语音 4:电话 5:会员)
params.is_open = detail?1:0;
api.putDoctorInquiryOpen(params).then(response => {
console.log(response);
}).catch(errors => {console.error(errors);})
},
putDoctorInquiryConfig(){
wx.switchTab({
url: "/Pages/yishi/wenzhen/wenzhen"
})
},
onStepperChange(event) {
console.log(event.detail);
this.setData({
"info.work_num_day": event.detail
});
},
onPriceChange(e){
console.log(e.detail);
let value = e.detail.value;
let min = this.data.config.min_inquiry_price;
let max = this.data.config.max_inquiry_price;
if(value < min){
value = min;
Toast.fail('价格不能低于' + min + '元');
}else if(value >= min && value <=max ){
value = value;
}else{
value = max;
Toast.fail('价格不能高于' + max + '元');
}
this.setData({
"info.inquiry_price": value
})
}
})

View File

@ -0,0 +1,12 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "/commpents/te_navbar",
"van-cell": "@vant/weapp/cell/index",
"van-cell-group": "@vant/weapp/cell-group/index",
"van-stepper": "@vant/weapp/stepper/index",
"van-switch": "@vant/weapp/switch/index",
"van-button": "@vant/weapp/button/index",
"van-toast": "@vant/weapp/toast/index"
}
}

View File

@ -0,0 +1,49 @@
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container" style="height: calc(100vh - 96rpx - {{height}}px);">
<view class="switch_box">
<view class="switch_box_top">
<view class="switch_box_item">
<view class="switch_box_item_name">接诊开关</view>
<view class="switch_box_item_btn">
<van-switch
active-color="#3CC7C0"
inactive-color="#E7E7E7"
size="40rpx"
checked="{{ info.is_open==1 }}"
bind:change="onChange" />
</view>
</view>
<view class="switch_box_note">{{ note }}</view>
</view>
<view class="help">
<van-cell url="/Pages/yishi/manual/index" custom-style="font-size:32rpx;" title="图文问诊操作手册" is-link border="{{false}}" />
</view>
</view>
<view wx:if="{{ info.is_open==1 }}" class="checked_box">
<view class="price_title">价格设置</view>
<view class="price_steup_box">
<view class="price_steup_box_bottom">
<view class="price_steup_box_bottom_title">问诊单价(元)</view>
<view class="price_steup_box_bottom_num">
<input class="weui-input" disabled bindblur="onPriceChange" type="digit" value="{{ info.inquiry_price }}" placeholder="请输入问诊单价" />
<text class="price">元</text>
</view>
</view>
</view>
</view>
<view class="bottom">
<text class="bottom_txt">
提示:服务开通后,患者可以通过快速问诊找到您,增加您的曝光度。
1、快速问诊价格为平台统一定价
2、接诊后{{config.duration}}分钟内和患者{{config.times_number==0?'无限':config.times_number}}次沟通。
</text>
</view>
<view class="go" wx:if="{{ info.is_open==1 }}">
<van-button bind:click="putDoctorInquiryConfig" color="#3CC7C0" custom-style="border-radius: 20rpx;font-size:30rpx;" type="primary" block>去接诊</van-button>
</view>
<van-toast id="van-toast" />
</view>

View File

@ -0,0 +1,125 @@
.container{
width: 100vw;
height: 100vh;
background-color: #F6F6F6;
}
.switch_box{
display: flex;
flex-direction: column;
width: 90vw;
/* height: 500rpx; */
border-radius: 20rpx;
margin: 30rpx auto;
background-color: rgb(255, 255, 255);
}
.switch_box_top{
position: relative;
display: flex;
/* height: 300rpx; */
flex-direction: column;
padding: 30rpx 30rpx 20rpx 30rpx;
}
.switch_box_top::after{
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
right: 0;
left: 32rpx;
bottom: 0;
border-bottom: 1px solid var(--td-cell-border-color, var(--td-gray-color-3, #e7e7e7));
transform: scaleY(0.5);
}
.switch_box_item{
display: flex;
justify-content: space-between;
align-items: center;
}
.switch_box_item_name{
flex: 1;
font-size: 32rpx;
}
.switch_box_item_btn{
flex: 1;
text-align: right;
}
.switch_box_note{
color: #999999;
font-size: 24rpx;
}
.help{
margin-bottom: 20rpx;
}
.price_title{
width: 90vw;
margin: 0 auto;
font-size: 32rpx;
margin-bottom: 20rpx;
color: #333333;
}
.price_steup_box{
display: flex;
width: 90vw;
margin: 0 auto;
border-radius: 20rpx;
flex-direction: column;
background-color: rgb(255, 255, 255);
}
.price_steup_box_top, .price_steup_box_bottom{
position: relative;
display: flex;
justify-content: space-between;
margin: 20rpx;
align-items: center;
}
.price_steup_box_bottom_num{
flex: 1.5;
display: flex;
align-items: center;
}
.price_steup_box_top_title, .price_steup_box_bottom_title{
flex: 1;
font-size: 32rpx;
color: #333;
}
.price_steup_box_top::after{
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
right: 0;
left: 0;
bottom: 0;
border-bottom: 1px solid var(--td-cell-border-color, var(--td-gray-color-3, #e7e7e7));
transform: scaleY(0.5);
}
.price_steup_box_top_stepper{
flex: 1;
text-align: right;
align-items: center;
}
.bottom{
width: 90vw;
margin: 0 auto;
color: #999;
letter-spacing: 2rpx;
font-size: 28rpx;
line-height: 40rpx;
}
.go{
position: fixed;
left: 50%;
transform: translateX(-50%);
bottom: 100rpx;
width: 90vw;
}
.weui-input{
color: red;
display: inline-block;
text-align: right;
}
.price{
text-align: center;
flex: 1;
}

View File

@ -0,0 +1,23 @@
import { API } from './../../../utils/network/api'
let api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '操作手册', //导航栏 中间的标题
},
height: app.globalData.height,
list: []
},
onShow(){
console.log("onShow");
//获取医生我的账户数据
api.getBasicOperationManual().then(response => {
console.log(response);
this.setData({
list: response.data,
})
}).catch(errors => {console.error(errors);})
},
})

View File

@ -0,0 +1,7 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "/commpents/te_navbar",
"van-cell": "@vant/weapp/cell/index"
}
}

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