分包医生

This commit is contained in:
zoujiandong
2024-01-16 14:59:06 +08:00
parent 562d4e9691
commit d5a9339ddd
1060 changed files with 3177 additions and 44707 deletions
+22
View File
@@ -0,0 +1,22 @@
// Pages/webpage/index.js
import { API } from '../../../utils/network/api'
const api = new API()
Page({
/**
* 页面的初始数据
*/
data: {
src: "",
static_host: api.getStaticHost()
},
onLoad(options) {
console.log(options.agreement_id)
console.log(this.data.static_host+"/basic/file/agreement.htm?id="+options.agreement_id)
this.setData({
src: this.data.static_host+"/basic/file/agreement.htm?id="+options.agreement_id
})
},
})
+3
View File
@@ -0,0 +1,3 @@
{
"usingComponents": {}
}
+2
View File
@@ -0,0 +1,2 @@
<!--Pages/webpage/index.wxml-->
<web-view src="{{src}}"/>
+1
View File
@@ -0,0 +1 @@
/* Pages/webpage/index.wxss */
+9
View File
@@ -0,0 +1,9 @@
const app = getApp()
Page({
data: {
},
confirmJieSuanDialog(){
app.go("/Pages/index/index");
}
})
+5
View File
@@ -0,0 +1,5 @@
{
"usingComponents": {
"t-dialog": "tdesign-miniprogram/dialog/dialog"
}
}
+9
View File
@@ -0,0 +1,9 @@
<t-dialog
visible="{{ true }}"
title="温馨提示"
content="您已被踢下线"
>
<view slot="confirm-btn" class="dialog dialog_confirm_btn" bindtap="confirmJieSuanDialog">
好的
</view>
</t-dialog>
+11
View File
@@ -0,0 +1,11 @@
.dialog{
width: 50%;
text-align: center;
height: 100rpx;
line-height: 100rpx;
}
.dialog_confirm_btn{
border-top: 1px solid #E9E9E9;
color: #3CC7C0;
width: 100%;
}
+178
View File
@@ -0,0 +1,178 @@
// Pages/login/index.js
import { API } from '../../../utils/network/api'
const api = new API()
const app = getApp()
Page({
data: {
showEntryTip:false,
showEntryTip_second:false,
beforeClose(action){
return new Promise((resolve) => {
if (action === 'confirm') {
resolve(true);
} else {
// 拦截取消操作
resolve(false);
}
})
},
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '登录', //导航栏 中间的标题
},
checked: false,
static_host: api.getStaticHost()
},
onShow(){
let usertype = wx.getStorageSync('usertype');
this.setData({
beforeClose: this.data.beforeClose.bind(this),
})
if(!usertype){
wx.navigateTo({
url: "/Pages/index/index"
})
};
},
onLoad(){
let usertype = wx.getStorageSync('usertype');
this.setData({
beforeClose: this.data.beforeClose.bind(this),
})
if(!usertype){
wx.navigateTo({
url: "/Pages/index/index"
})
};
wx.getPrivacySetting({
success: res => {
console.log(res) // 返回结果为: res = { needAuthorization: true/false, privacyContractName: '《xxx隐私保护指引》' }
if (res.needAuthorization) {
// 需要弹出隐私协议
this.setData({
showEntryTip:true
})
} else {
this.setData({
showEntryTip:false
})
// 用户已经同意过隐私协议,所以不需要再弹出隐私协议,也能调用已声明过的隐私
}
},
fail: () => {},
complete: () => {}
})
// let isEntry=wx.getStorageSync('hasEntry');
// if(!isEntry){
// this.setData({
// showEntryTip:true,
// });
// }else{
// this.setData({
// showEntryTip:false
// });
// }
},
onChange(event) {
this.setData({
checked: event.detail,
});
},
changeCheck(){
let checked = this.data.checked
this.setData({
checked: !checked
})
},
_navback() {
wx.navigateBack()
},
onConfirmEntry(){
this.setData({
showEntryTip:false
})
// wx.setStorageSync('hasEntry', true);
},
onCloseEntry(){
this.setData({
showEntryTip_second:true,
showEntryTip:true
})
},
onConfirmEntry_second(){
this.setData({
showEntryTip_second:false,
//showEntryTip:false,
});
//wx.setStorageSync('hasEntry', true);
},
onCloseEntry_second(){
this.setData({
showEntryTip_second:false,
showEntryTip:false,
});
wx.exitMiniProgram({success: (res) => {}})
},
go(e){
let url = e.currentTarget.dataset.url;
app.go(url);
},
getPhoneNumber (e) {
console.log(e);
console.log(e.detail.code);
if(!this.data.checked){
wx.showToast({
title: '请同意协议',
icon: "error"
})
return;
}
let THIS=this;
let usertype = wx.getStorageSync('usertype');
let next_url = wx.getStorageSync('next_url');
if(e.detail.errMsg == 'getPhoneNumber:ok'){
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_'+usertype, response.data.token);
wx.setStorageSync('user_id_'+usertype, response.data.user_id);
wx.setStorageSync('client_user_id_'+usertype, response.data.client_user_id);
app.globalData.config.userID = response.data.user_id;
app.globalData.isLogin=true;
let handleGo=function(){
wx.switchTab({
url: next_url
})
}
app.imInit({path:'Pages/login/index'},1,handleGo);
//跳转页面
}).catch(errors => {
console.error(errors);
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
}else if(e.detail.errMsg == 'getPhoneNumber:fail user deny'){
console.log('您拒绝手机号授权')
}else{
wx.showToast({
title: '手机号授权失败',
icon:'none'
})
}
},
})
+10
View File
@@ -0,0 +1,10 @@
{
"usingComponents": {
"van-button": "@vant/weapp/button/index",
"van-image": "@vant/weapp/image/index",
"van-checkbox": "@vant/weapp/checkbox/index",
"van-overlay": "@vant/weapp/overlay/index",
"van-dialog": "@vant/weapp/dialog/index",
"van-checkbox-group": "@vant/weapp/checkbox-group/index"
}
}
+109
View File
@@ -0,0 +1,109 @@
<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_black.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="{{static_host}}/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
wx:if="{{ checked }}"
open-type="getPhoneNumber"
bindgetphonenumber="getPhoneNumber"
color="#09BB07" custom-style="font-size: 36rpx;" type="primary" round block>手机号快捷登录</van-button>
<van-button
wx:else
bindtap="getPhoneNumber"
color="#09BB07" custom-style="font-size: 36rpx;" type="primary" round block>手机号快捷登录</van-button>
<view style="display: flex;margin-top: 30rpx;line-height: 50rpx;">
<van-checkbox value="{{ checked }}" bind:change="onChange"></van-checkbox>
<view style="float: left;">
<text style="color: #000000;word-wrap: break-word;" bindtap="changeCheck">我已阅读并同意协议</text>
<text style="color: #4384FE;word-wrap: break-word;" bindtap="go" data-url="/user/pages/agreement_page/index?agreement_id=10">《肝胆相照用户注册及服务协议》</text>
<text style="color: #4384FE;word-wrap: break-word;" bindtap="go" data-url="/user/pages/agreement_page/index?agreement_id=9">《隐私协议》</text>
<text style="color: #4384FE;word-wrap: break-word;" bindtap="go" data-url="/user/pages/agreement_page/index?agreement_id=11">《劳务协议》</text>
</view>
</view>
</view>
<view class="bottom">
<text class="bottom_txt" bindtap="go" data-url="/user/pages/mobile_login/index">输入手机号登录/注册</text>
</view>
</view>
</view>
<van-overlay show="{{ showEntryTip }}" >
<view class="wrapper">
<view class="privacyBox">
<view class="title">温馨提示</view>
<view class="entrymsg" >
<view> 亲爱的用户,感谢您信任并使用肝胆相照互联网医院医师端!我们依据最新法律法规的要求,制定了<text class="navigator" bindtap="go" data-url="/user/pages/agreement_page/index?agreement_id=9">《隐私协议》</text>。请您仔细阅《隐私协议》,并确认了解我们对您的个人信息处理原则。</view>
<view>如您同意《隐私协议》,请点击“同意”开始使用我们的产品和服务。</view>
</view>
<view class="btnbox">
<view class="cancel" bindtap="onCloseEntry">不同意</view>
<button id="agree-btn"
plain
class="confirm"
open-type="agreePrivacyAuthorization" bindagreeprivacyauthorization="onConfirmEntry">同意并继续</button>
</view>
</view>
</view>
</van-overlay>
<!-- <van-dialog
use-slot
title="温馨提示"
show="{{ showEntryTip }}"
show-cancel-button
confirm-button-text="同意并继续"
cancel-button-text="不同意"
confirm-button-color="#3CC7C0"
bind:confirm="onConfirmEntry"
bind:cancel="onCloseEntry"
before-close="{{beforeClose}}"
confirm-button-open-type="agreePrivacyAuthorization"
>
<view class="entrymsg" >
<view> 亲爱的用户,感谢您信任并使用肝胆相照互联网医院医师端!我们依据最新法律法规的要求,制定了<text class="navigator" bindtap="go" data-url="/user/pages/agreement_page/index?agreement_id=9">《隐私协议》</text>。请您仔细阅《隐私协议》,并确认了解我们对您的个人信息处理原则。</view>
<view>如您同意《隐私协议》,请点击“同意”开始使用我们的产品和服务。</view>
</view>
</van-dialog>-->
<van-overlay show="{{ showEntryTip_second }}" >
<view class="wrapper">
<view class="privacyBox">
<view class="title">温馨提示</view>
<view class="entrymsg" >
<view> 很抱歉,如您不同意《隐私协议》,可能无法继续正常使用我们的服务,请您先同意哦~</view>
</view>
<view class="btnbox">
<view class="cancel" bindtap="onCloseEntry_second">不同意</view>
<button id="agree-btn"
plain
class="confirm"
bindtap="onConfirmEntry_second">好的</button>
</view>
</view>
</view>
</van-overlay>
<!--<van-dialog
title="温馨提示"
show="{{ showEntryTip_second }}"
message="很抱歉,如您不同意《隐私协议》,可能无法继续正常使用我们的服务,请您先同意哦~"
show-cancel-button
confirm-button-text="好的"
cancel-button-text="不同意"
confirm-button-color="#3CC7C0"
bind:confirm="onConfirmEntry_second"
bind:cancel="onCloseEntry_second"
>
</van-dialog> -->
+142
View File
@@ -0,0 +1,142 @@
.container {
width: 100vw;
background-color: #ffffff;
}
.tui-navigatorbar{
position: fixed;
top: 0;
width: 750rpx;
height: 170rpx;
background-color: #ffffff;
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: #000000;
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;
}
.van-checkbox {
padding-top: 6rpx !important;
}
.entrymsg{
-webkit-overflow-scrolling: touch;
font-size: 28rpx;
line-height: 40rpx;
max-height: 60vh;
overflow-y: auto;
padding: 48rpx;
text-align: left;
}
.navigator{
color:#3CC7C0
}
.wrapper {
display: flex;
align-items: center;
justify-content: center;
height: 100%;
}
.privacyBox {
width:90%;
background-color: #fff;
border-radius: 30rpx;
}
.privacyBox .title{
margin: 0;
text-align: center;
font-weight: 500;
line-height:24px;
padding-top:24px;
text-align: center;
font-size:16px;
}
.btnbox{
display: flex;
align-items: center;
border-top:1rpx solid #efefef;
width:100%;
font-size: 17px;
}
.btnbox .cancel{
flex:1;
height: 50px;
display: flex;
justify-content: center;
align-items: center;
}
.btnbox .confirm{
margin: 0;
height: 50px;
padding: 0;
color: #3CC7C0;
flex:1;
font-size: 17px;
border: none!important;
border-left:1rpx solid #efefef!important;
display: flex;
background-color: none!important;
justify-content: center;
align-items: center;
}
+190
View File
@@ -0,0 +1,190 @@
import { API } from '../../../utils/network/api'
const api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '手机号登录', //导航栏 中间的标题
},
checked: false,
phone: "",
sms: "",
btn_msg: "获取验证码",
btn_disabled: false,
login_disabled: false,
btn_color: "#ccc",
static_host: api.getStaticHost()
},
onLoad(){
let usertype = wx.getStorageSync('usertype');
if(!usertype){
wx.navigateTo({
url: "/Pages/index/index"
})
}
},
onShow(){
let usertype = wx.getStorageSync('usertype');
if(!usertype){
wx.navigateTo({
url: "/Pages/index/index"
})
}
},
onChange(event) {
this.setData({
checked: event.detail,
});
},
changeCheck(){
let checked = this.data.checked
this.setData({
checked: !checked
})
},
phone_change(e){
let phone = e.detail.value;
this.setData({
phone: e.detail.value
})
let phone_reg = /^1[3-9]\d{9}$/;
if(phone_reg.test(phone)){
this.setData({
btn_color: "#3CC7C0"
})
}else{
this.setData({
btn_color: "#ccc"
})
}
},
getCodePhone(e){
let phone_reg = /^1[3-9]\d{9}$/;
let phone = this.data.phone;
//判断用户输入的真实姓名是否为空
if(phone.length == 0){
wx.showToast({title: '手机号不能为空', icon:'error'})
return false;
}else if(!phone_reg.test(phone)){//检测姓名的格式是否匹配
wx.showToast({title: '手机号输入有误', icon:'error'})
return false;
}
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){
let THIS=this;
let phone_reg = /^1[3-9]\d{9}$/;
let phone = this.data.phone;
let sms = this.data.sms;
//判断用户输入的真实姓名是否为空
if(phone.length == 0){
wx.showToast({title: '手机号不能为空', icon:'error'})
return false;
}else if(!phone_reg.test(phone)){//检测姓名的格式是否匹配
wx.showToast({title: '手机号输入有误', icon:'error'})
return false;
}
if(sms.length == 0){
wx.showToast({title: '验证码不能为空', icon:'error'})
return false;
}
if(!this.data.checked){
wx.showToast({
title: '请同意协议',
icon: "error"
})
return;
}
let usertype = wx.getStorageSync('usertype');
wx.login({
success: (res) => {
console.log(res)
if (res.code) {
var params = {};
params.phone = this.data.phone;
params.code = this.data.sms;
params.user_type = usertype;
params.wx_code = res.code;
api.mobileLogin(params).then(response => {
app.globalData.isLogin=true;
console.log(response);
wx.setStorageSync('AUTH_TOKEN_'+usertype, response.data.token);
wx.setStorageSync('user_id_'+usertype, response.data.user_id);
wx.setStorageSync('client_user_id_'+usertype, response.data.client_user_id);
app.globalData.config.userID = response.data.user_id;
let handleGo=function(){
wx.switchTab({
url: wx.getStorageSync('next_url')
})
}
app.imInit({path:'Pages/mobile_login/index'},1,handleGo);
}).catch(errors => {console.error(errors);})
} else {
wx.showToast({
title: '登录失败',
icon: "error"
})
}
},
})
},
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)
},
go(e){
let url = e.currentTarget.dataset.url;
app.go(url);
}
})
+11
View File
@@ -0,0 +1,11 @@
{
"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",
"van-image": "@vant/weapp/image/index"
}
}
+41
View File
@@ -0,0 +1,41 @@
<m-nav-bar navbarData="{{navbarData}}">
<view class="logo">
<van-image height="196rpx" src="{{static_host}}/applet/doctor/static/images/logo2.png" fit="heightFix" />
</view>
<view class="fields">
<view class="phone_box">
<view class="country">+86</view>
<view class="phone">
<input placeholder-style="color:#c8c9cc;font-size:34rpx;" type="number" confirm-type="next" bindinput="phone_change" auto-focus placeholder="请输入手机号"/>
</view>
</view>
<van-field
model:value="{{ sms }}"
center
clearable
type="number"
label=""
placeholder="请输入短信验证码"
use-button-slot
placeholder-style="color:#c8c9cc;font-size:30rpx;"
>
<van-button disabled="{{btn_disabled}}" color="{{btn_color}}" 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 style="display: flex;margin-top: 30rpx;line-height: 50rpx;">
<van-checkbox value="{{ checked }}" bind:change="onChange"></van-checkbox>
<view style="float: left;">
<text style="color: #000000;word-wrap: break-word;" bindtap="changeCheck">我已阅读并同意协议</text>
<text style="color: #4384FE;word-wrap: break-word;" bindtap="go" data-url="/user/pages/agreement_page/index?agreement_id=10">《肝胆相照用户注册及服务协议》</text>
<text style="color: #4384FE;word-wrap: break-word;" bindtap="go" data-url="/user/pages/agreement_page/index?agreement_id=9">《隐私协议》</text>
<text style="color: #4384FE;word-wrap: break-word;" bindtap="go" data-url="/user/pages/agreement_page/index?agreement_id=11">《劳务协议》</text>
</view>
</view>
</view>
</m-nav-bar>
+56
View File
@@ -0,0 +1,56 @@
.logo{
margin-top: 150rpx;
display: flex;
align-items: center;
justify-content: center;
}
.fields{
margin: 50rpx 0;
}
.btn{
font-size: 28rpx;
color: #666666;
}
.van-cell {
padding: 32rpx !important;
font-size: 34rpx !important;
}
.mylabel{
background-color: red;
width: 100rpx !important;
}
.label-class{
background-color: royalblue !important;
}
.phone_box{
display: flex;
padding: 32rpx;
position: relative;
}
.country{
flex: 1;
height: 24px;
line-height: 24px;
}
.phone{
flex: 7;
height: 24px;
}
.phone_box:after {
border-bottom: 1px solid #ebedf0;
bottom: 0;
box-sizing: border-box;
content: " ";
left: 16px;
pointer-events: none;
position: absolute;
right: 16px;
transform: scaleY(.5);
transform-origin: center;
border-bottom-width: 1px;
border-bottom-style: solid;
border-bottom-color: rgb(235, 237, 240);
}
.van-checkbox {
padding-top: 6rpx !important;
}
+18
View File
@@ -0,0 +1,18 @@
// Pages/webpage/index.js
Page({
/**
* 页面的初始数据
*/
data: {
src: ""
},
onLoad(options) {
console.log(options.src)
this.setData({
src: options.src
})
},
})
+3
View File
@@ -0,0 +1,3 @@
{
"usingComponents": {}
}
+2
View File
@@ -0,0 +1,2 @@
<!--Pages/webpage/index.wxml-->
<web-view src="{{src}}"/>
+1
View File
@@ -0,0 +1 @@
/* Pages/webpage/index.wxss */
@@ -0,0 +1,32 @@
import { API } from '../../../../utils/network/api'
const api = new API()
const app = getApp()
Page({
data: {
nbFrontColor: '#000000',
nbBackgroundColor: '#ffffff',
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '实名认证', //导航栏 中间的标题
},
height: app.globalData.height,
info: {}
},
onLoad() {
console.log(this.data.height)
},
onShow(){
this.setData({
nbLoading: false,
})
api.getPharmacistInfo().then(response => {
console.log(response.data);
this.setData({
info: response.data
})
}).catch(errors => {
console.error(errors);
})
}
})
@@ -0,0 +1,15 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"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"
}
@@ -0,0 +1,18 @@
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container">
<van-cell-group>
<van-cell size="large" title="真实姓名" title-width="120rpx" required title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="{{info.card_name}}" />
<van-cell size="large" title="身份证号" title-width="120rpx" required title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="{{info.card_num}}" />
<van-cell size="large" title="联系邮箱" title-width="120rpx" required title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="缺少字段" />
<van-cell size="large" title="手机号码" title-width="120rpx" required title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="缺少字段" />
<van-cell size="large" title="所在医疗机构" title-width="120rpx" required title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="缺少字段" />
<van-cell size="large" title="所在科室" title-width="120rpx" required title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="{{info.department_custom_name}}" />
<van-cell size="large" title="职称" title-width="120rpx" required title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="{{info.pharmacist_title}}" />
<van-cell size="large" title="医龄" title-width="120rpx" required title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="缺少字段" />
<van-cell size="large" title="执业经历" title-width="120rpx" required title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="缺少字段" />
<van-cell size="large" 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>
@@ -0,0 +1,4 @@
.submit{
width: 90vw;
margin: 20rpx auto;
}
+144
View File
@@ -0,0 +1,144 @@
import { API } from '../../../../utils/network/api'
const api = new API()
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
active: 0,
active_color: "rgb(116,162,250)",
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '药师端', //导航栏 中间的标题
},
// 此页面 页面内容距最顶部的距离
height: app.globalData.height,
pharmacist: {},
audit_number: 0,
data_list_0: [],
data_list_1: [],
data_list_2: [],
data_list_3: [],
current_page: 0,
total: 0,
per_page: 0,
last_page: 0,
},
onShow() {
if (typeof this.getTabBar === 'function' && this.getTabBar()) {
this.getTabBar().setData({
active: 0, //数字是当前页面在tabbar的索引,如我的查询页索引是2,因此这边为2,同理首页就为0,审批页面为1
})
}
this.getPharmacistPrescription(this.data.active);
},
/**
* 生命周期函数--监听页面显示
*/
onLoad: function () {
api.getPharmacistIndex().then(response => {
this.setData({
pharmacist: response.data.pharmacist,
audit_number: response.data.audit_number
})
}).catch(errors => {
console.error(errors);
})
},
getPharmacistPrescription(active){
let params = {};
let page = this.data.current_page + 1;
let pharmacist_audit_status = 0;
let platform_audit_status = 1;
if(active == 0){
pharmacist_audit_status = 0;
platform_audit_status = 0;
}
if(active == 1){
pharmacist_audit_status = 1;
platform_audit_status = 1;
}
if(active == 2){
pharmacist_audit_status = 2;
platform_audit_status = 0;
}
if(active == 3){
pharmacist_audit_status = 1;
platform_audit_status = 2;
}
params.pharmacist_audit_status = pharmacist_audit_status;
params.platform_audit_status = platform_audit_status;
params.page = page;
let data_name = "data_list_"+active;
let list = this.data[data_name];
api.getPharmacistPrescription(params).then(response => {
this.setData({
[data_name]: 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);
})
},
onHide(){
this.setData({
current_page: 0,
total: 0,
per_page: 0,
last_page: 0,
data_list_0: [],
data_list_1: [],
data_list_2: [],
data_list_3: [],
})
},
onChange(e){
console.log(e)
let data_name = "data_list_"+e.detail.index;
this.setData({
active: e.detail.index,
current_page: 0,
total: 0,
per_page: 0,
last_page: 0,
[data_name]: []
})
this.getPharmacistPrescription(e.detail.index);
},
onReachBottom() {
console.log('===触底了!!===');
if(this.data.current_page < this.data.last_page){//最后一页时停止分页
this.getPharmacistPrescription(this.data.active)
}
},
go(e){
let url = e.currentTarget.dataset.url;
app.go(url)
},
switchStatus(){
let is_online = this.data.pharmacist.is_online;
if(is_online == 0){
is_online = 1
}else if(is_online == 1){
is_online = 0
}
api.putPharmacistOnOff({is_online: is_online}).then(response => {
this.setData({
"pharmacist.is_online": is_online
})
}).catch(errors => {console.error(errors);})
}
})
+12
View File
@@ -0,0 +1,12 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"van-tab": "@vant/weapp/tab/index",
"van-tabs": "@vant/weapp/tabs/index",
"t-avatar": "tdesign-miniprogram/avatar/avatar",
"van-button": "@vant/weapp/button/index",
"van-empty": "@vant/weapp/empty/index",
"van-divider": "@vant/weapp/divider/index"
}
}
+136
View File
@@ -0,0 +1,136 @@
<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="{{pharmacist.avatar}}" />
</view>
<view class="name">
<view class="realname">{{pharmacist.user_name}}</view>
<view class="today_num">今日审方 {{audit_number}}</view>
</view>
<view class="status" bindtap="switchStatus">
<view class="status_text {{pharmacist.is_online==1?'status_online':'status_offline'}}">{{pharmacist.is_online==1?'在线':'离线'}}</view>
</view>
</view>
<view class="main content">
<van-tabs color="{{ active_color }}" bind:change="onChange">
<van-tab title="待审核处方">
<view class="item_list" wx:if="{{data_list_0.length>0}}">
<view class="item" wx:for="{{data_list_0}}">
<view class="item_txt">
<view class="pre_content">处方订单号:{{item.prescription_code}}</view>
<view class="end_content">
<!-- <navigator url="/user/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">开方时间:{{item.created_at}}</view>
<view class="end_content" bindtap="go" data-url="/user/pages/yaoshi/medicalrecord/medicalrecord?order_inquiry_id={{item.order_inquiry_id }}&order_prescription_id={{item.order_prescription_id}}&from=1">
<van-button type="primary" color="#ec871e" size="small">查看病例</van-button>
</view>
</view>
<view class="item_txt">
<view class="pre_content">{{item.patient_name}}/{{item.patient_sex==1?'男':'女'}}/{{item.patient_age}}岁</view>
<view class="end_content" bindtap="go" data-url="/user/pages/yaoshi/prescription/prescription?order_prescription_id={{item.order_prescription_id}}">
<van-button type="primary" color="linear-gradient(to bottom, #5EA8D5, #63CFEA)" size="small">去审方</van-button>
</view>
</view>
</view>
<van-divider contentPosition="center" wx:if="{{data_list_0.length > 0 && current_page == last_page}}">到底了~</van-divider>
</view>
<van-empty description="暂无数据" wx:if="{{data_list_0.length == 0}}" />
</van-tab>
<van-tab title="已审核处方">
<view class="item_list" wx:if="{{data_list_1.length>0}}">
<view class="item" wx:for="{{data_list_1}}">
<view class="item_txt">
<view class="pre_content">处方订单号:{{item.prescription_code}}</view>
<view class="end_content" bindtap="go" data-url="/user/pages/yaoshi/medicalrecord/medicalrecord?order_inquiry_id={{item.order_inquiry_id }}&order_prescription_id={{item.order_prescription_id}}">
<van-button type="primary" color="#ec871e" size="small">查看病例</van-button>
</view>
</view>
<view class="item_txt">
<view class="pre_content">开方时间:{{item.created_at}}</view>
<view class="end_content" style="color: #2196f3;">通过</view>
</view>
<view class="item_txt">
<view class="pre_content">{{item.patient_name}}/{{item.patient_sex==1?'男':'女'}}/{{item.patient_age}}岁</view>
<view class="end_content">
<!-- <van-button type="primary" color="linear-gradient(to bottom, #5EA8D5, #63CFEA)" size="small">去审方</van-button> -->
</view>
</view>
</view>
<van-divider contentPosition="center" wx:if="{{data_list_1.length > 0 && current_page == last_page}}">到底了~</van-divider>
</view>
<van-empty description="暂无数据" wx:if="{{data_list_1.length == 0}}" />
</van-tab>
<van-tab title="驳回处方">
<view class="item_list" wx:if="{{data_list_2.length>0}}">
<view class="item" wx:for="{{data_list_2}}">
<view class="item_txt">
<view class="pre_content">处方订单号:{{item.prescription_code}}</view>
<view class="end_content" bindtap="go" data-url="/user/pages/yaoshi/medicalrecord/medicalrecord?order_inquiry_id={{item.order_inquiry_id }}&order_prescription_id={{item.order_prescription_id}}">
<van-button type="primary" color="#ec871e" size="small">查看病例</van-button>
</view>
</view>
<view class="item_txt">
<view class="pre_content">开方时间:{{item.created_at}}</view>
<view class="end_content" style="color: red;">驳回</view>
</view>
<view class="item_txt">
<view class="pre_content">{{item.patient_name}}/{{item.patient_sex==1?'男':'女'}}/{{item.patient_age}}岁</view>
<view class="end_content">
<!-- <van-button type="primary" color="linear-gradient(to bottom, #5EA8D5, #63CFEA)" size="small">去审方</van-button> -->
</view>
</view>
<view class="item_txt">
<view class="pre_content">驳回时间:{{item.pharmacist_verify_time}}</view>
</view>
<view class="item_txt">
<view class="pre_content">驳回理由:{{item.pharmacist_fail_reason}}</view>
</view>
</view>
<van-divider contentPosition="center" wx:if="{{data_list_2.length > 0 && current_page == last_page}}">到底了~</van-divider>
</view>
<van-empty description="暂无数据" wx:if="{{data_list_2.length == 0}}" />
</van-tab>
<van-tab title="不通过">
<view class="item_list" wx:if="{{data_list_3.length>0}}">
<view class="item" wx:for="{{data_list_3}}">
<view class="item_txt">
<view class="pre_content">处方订单号:{{item.prescription_code}}</view>
<view class="end_content" bindtap="go" data-url="/user/pages/yaoshi/medicalrecord/medicalrecord?order_inquiry_id={{item.order_inquiry_id }}&order_prescription_id={{item.order_prescription_id}}">
<van-button type="primary" color="#ec871e" size="small">查看病例</van-button>
</view>
</view>
<view class="item_txt">
<view class="pre_content">开方时间:{{item.created_at}}</view>
<view class="end_content" style="color: red;">驳回</view>
</view>
<view class="item_txt">
<view class="pre_content">{{item.patient_name}}/{{item.patient_sex==1?'男':'女'}}/{{item.patient_age}}岁</view>
<view class="end_content">
<!-- <van-button type="primary" color="linear-gradient(to bottom, #5EA8D5, #63CFEA)" size="small">去审方</van-button> -->
</view>
</view>
</view>
<van-divider contentPosition="center" wx:if="{{data_list_3.length > 0 && current_page == last_page}}">到底了~</van-divider>
</view>
<van-empty description="暂无数据" wx:if="{{data_list_3.length == 0}}" />
</van-tab>
</van-tabs>
</view>
<view style="height: 60px;">
<!-- 适配底部tabbar -->
</view>
</view>
+111
View File
@@ -0,0 +1,111 @@
page{
background-color: #F4F5F7;
}
.container{
width: 100vw;
}
.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_online{
background-color: rgb(124, 231, 124);
}
.status_text{
padding: 10rpx 20rpx;
border-radius: 20rpx;
float: right;
margin-right: 25rpx;
font-size: 20rpx;
display: flex;
width: 50rpx;
justify-content: space-evenly;
}
.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;
}
.van-tabs__nav{
border-radius: 20rpx !important;
}
.item_list{
padding-bottom: 100rpx;
background-color: #F4F5F7;
border-radius: 20rpx;
}
.item:last-child{
border-bottom-left-radius: 20rpx;
border-bottom-right-radius: 20rpx;
}
.item{
border-top: solid rgb(187, 185, 185) 1rpx;
width: 100%;
margin: 0 auto;
background-color: #fff;
padding: 20rpx 0;
}
.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; */
}
+22
View File
@@ -0,0 +1,22 @@
// Pages/index/index.js
import { API } from '../../../../utils/network/api'
const api = new API()
Page({
data: {
static_host: api.getStaticHost()
},
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
})
}
})
+6
View File
@@ -0,0 +1,6 @@
{
"component": true,
"usingComponents": {
"t-image": "tdesign-miniprogram/image/image"
}
}
+29
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="{{static_host}}/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="{{static_host}}/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>
+19
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;
}
+30
View File
@@ -0,0 +1,30 @@
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,
info: ""
},
onLoad(options) {
},
onShow(){
api.getPharmacistInfo().then(response => {
console.log(response.data);
this.setData({
info: response.data
})
}).catch(errors => {
console.error(errors);
})
}
})
+14
View File
@@ -0,0 +1,14 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"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"
}
+19
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="{{info.avatar}}" />
<text class="name">{{info.user_name}}</text>
</view>
<view class="content">
<van-cell-group>
<van-cell size="large" title="姓名" title-width="120rpx" title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="{{info.user_name}}" />
<van-cell size="large" title="性别" title-width="120rpx" title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="{{info.sex==1?'男':'女'}}" />
<van-cell size="large" title="年龄" title-width="120rpx" title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="{{info.age}}" />
<van-cell size="large" title="身份证号" title-width="120rpx" title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="{{info.card_num}}" />
<!-- <van-cell size="large" title="手机号码" title-width="120rpx" title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="{{info.user_name}}" /> -->
<!-- <van-cell size="large" title="我的地址" title-width="120rpx" title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="{{info.user_name}}" /> -->
<van-cell size="large" title="科室" title-width="120rpx" title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="{{info.department_custom_name}}" />
<van-cell size="large" title="职称" title-width="120rpx" title-style="text-align: justify;text-justify:distribute-all-lines; text-align-last: justify;" value="{{info.pharmacist_title}}" />
</van-cell-group>
</view>
</view>
+23
View File
@@ -0,0 +1,23 @@
page{
background-color: #F4F4F4;
}
.top{
width: 100vw;
background-color: rgb(255, 255, 255);
height: 370rpx;
display: flex;
justify-content: center;
align-items: center;
align-content: center;
flex-direction: column;
margin-bottom: 20rpx;
}
.name{
color: white;
margin-top: 30rpx;
text-align: justify;
text-justify:distribute-all-lines;
text-align-last: justify;
font-size: 28rpx;
width: 180rpx;
}
@@ -0,0 +1,44 @@
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,
order_inquiry_id: "",
order_prescription_id: "",
case_detail: {},
from: ""
},
onLoad(options) {
let order_inquiry_id = options.order_inquiry_id;
let order_prescription_id = options.order_prescription_id;
let from = options.from;
console.log("order_inquiry_id: ", order_inquiry_id);
this.setData({
order_inquiry_id: order_inquiry_id,
order_prescription_id: order_prescription_id,
from: from,
})
},
onShow(){
api.getCase({order_inquiry_id: this.data.order_inquiry_id}).then(response => {
console.log(response.data);
this.setData({
case_detail: response.data
})
}).catch(errors => {
console.error(errors);
})
},
go(e){
let url = e.currentTarget.dataset.url;
app.go(url)
},
})
@@ -0,0 +1,12 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"van-button": "@vant/weapp/button/index"
},
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black",
"navigationBarTitleText": "患者病历",
"backgroundColor": "#eeeeee",
"backgroundTextStyle": "light"
}
@@ -0,0 +1,28 @@
<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>{{case_detail.name}}
<text class="item_title">性别:</text>{{case_detail.sex==1?'男':'女'}}
<text class="item_title">年龄:</text>{{case_detail.age}}岁
</view>
</view>
<view class="case_info">
<view class="item">疾病资料</view>
<view class="item"><text class="item_title">病情主要述:</text>{{case_detail.disease_desc}}</view>
<view class="item">
<text class="item_title">用药意向:</text>
<text wx:for="{{case_detail.product}}">{{item}}</text>
</view>
<view class="item"><text class="item_title">体重:</text>{{case_detail.weight}}KG</view>
<view class="item"><text class="item_title">是否服用过您想购买的药品且无相关禁忌症:</text>{{case_detail.is_taboo==0?'否':'是'}}</view>
<view class="item"><text class="item_title">是否有药物过敏史:</text>{{case_detail.is_allergy_history==0?'否':'是'}}</view>
<view class="item"><text class="item_title">您是否处于备孕、妊娠、哺乳期:</text>{{case_detail.is_pregnant==0?'否':'是'}}</view>
<view class="item"><text class="item_title">复诊凭证</text></view>
</view>
<view class="go_check" bindtap="go" data-url="/user/pages/yaoshi/prescription/prescription?order_prescription_id={{order_prescription_id}}">
<van-button wx:if="{{from == '1'}}" color="linear-gradient(to right, #4CABEA, #64CFE9)" block round type="info">前往审方</van-button>
</view>
<view class="bottom"></view>
</view>
@@ -0,0 +1,35 @@
page{
background-color: #F3F5F7;
}
.container{
letter-spacing: 3rpx;
}
.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;
}
+56
View File
@@ -0,0 +1,56 @@
import { API } from '../../../../utils/network/api'
const api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 0, //是否显示左上角图标 1表示显示 0表示不显示
title: '个人中心', //导航栏 中间的标题
},
height: app.globalData.height,
info:{}
},
onShow() {
if (typeof this.getTabBar === 'function' && this.getTabBar()) {
this.getTabBar().setData({
active: 1, //数字是当前页面在tabbar的索引,如我的查询页索引是2,因此这边为2,同理首页就为0,审批页面为1
})
}
api.getPharmacistInfo().then(response => {
console.log(response.data);
this.setData({
info: response.data
})
}).catch(errors => {
console.error(errors);
})
},
logOut(){
console.log("退出登录");
let usertype = wx.getStorageSync('usertype');
wx.showModal({
title: '确认退出登录',
content: '退出登录后您需要重新登录',
success (res) {
if (res.confirm) {
console.log('用户点击确定')
wx.setStorageSync('AUTH_TOKEN_'+usertype, "");
wx.setStorageSync('user_id_'+usertype, "");
wx.setStorageSync('client_user_id_'+usertype, "");
app.globalData.isLogin=false;
wx.setStorageSync('usertype','')
app.go("/Pages/index/index");
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
},
go(e){
console.log(e)
let url = e.currentTarget.dataset.url;
app.go(url);
}
})
+14
View File
@@ -0,0 +1,14 @@
{
"component": true,
"usingComponents": {
"t-avatar": "tdesign-miniprogram/avatar/avatar",
"van-icon": "@vant/weapp/icon/index",
"van-button": "@vant/weapp/button/index",
"te-nav-bar": "../../../../commpents/te_navbar/index"
},
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black",
"navigationBarTitleText": "个人中心",
"backgroundColor": "#eeeeee",
"backgroundTextStyle": "light"
}
+18
View File
@@ -0,0 +1,18 @@
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container">
<view class="top">
<t-avatar class="avatar" size="large" image="{{info.avatar}}" />
<text class="name">{{info.user_name}}</text>
</view>
<view class="content">
<view class="my" bindtap="go" data-url="/Pages/yaoshi/info/info">个人中心</view>
<view class="item_list">
<view class="item" bindtap="go" data-url="/Pages/yaoshi/authentication/authentication">
<van-icon name="user-o" size="50rpx" color="#55B0E5"/>
<text class="item_name">实名认证</text>
</view>
</view>
<van-button type="primary" block bindtap="logOut">退出登录</van-button>
</view>
</view>
+39
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: inter-word;
text-align-last: justify;
font-size: 28rpx;
width: 180rpx;
}
.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;
}
@@ -0,0 +1,97 @@
import Toast from '@vant/weapp/toast/toast'
import { API } from '../../../../utils/network/api'
const api = new API()
const app = getApp()
Page({
data: {
bohuishow: false,
reasonshow: false,
resonText: "请选择驳回理由",
columns: ['用法错误', '超适应症用药', '诊断与用药不符', '抗生素使用不合理', '重复用药'],
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '处方详情', //导航栏 中间的标题
},
// 此页面 页面内容距最顶部的距离
height: app.globalData.height,
order_prescription_id: "",
prescription_img_oss_path: "",
doctor_sign_image: ""
},
onLoad(options) {
let order_prescription_id = options.order_prescription_id;
console.log("order_prescription_id: ", order_prescription_id)
this.setData({
order_prescription_id: order_prescription_id
})
},
onConfirmReason(event) {
const { picker, value, index } = event.detail;
console.log(`当前值:${value}, 当前索引:${index}`);
let _resonText = `${value}`;
this.setData({ resonText: _resonText });
this.setData({ reasonshow: false });
},
onCancelReason() {
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(e) {
console.log(444);
this.putPharmacistPrescriptionVerify(e);
},
submit(){
console.log(555);
},
onShow(){
api.getPharmacistPrescriptioninfo({order_prescription_id: this.data.order_prescription_id}).then(response => {
console.log(response.data);
this.setData({
prescription_img_oss_path: response.data.prescription_img_oss_path,
doctor_sign_image: response.data.doctor_sign_image
})
}).catch(errors => {console.error(errors);})
},
putPharmacistPrescriptionVerify(e){
console.log(e)
let params = {};
params.pharmacist_audit_status = e.currentTarget.dataset.pharmacist_audit_status;
if(params.pharmacist_audit_status == 2){
params.pharmacist_fail_reason = this.data.resonText;
}
params.order_prescription_id = this.data.order_prescription_id;
api.putPharmacistPrescriptionVerify(params).then(response => {
console.log(response.data);
Toast.success("处理成功");
setTimeout(() => {
wx.navigateBack();
}, 1000);
}).catch(errors => {console.error(errors);})
}
})
@@ -0,0 +1,17 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"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"
}
@@ -0,0 +1,59 @@
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container">
<view class="img_box" wx:if="{{false}}">
<view class="img_content">
<image class="case_img"
src="{{prescription_img_oss_path}}"
mode="widthFix"
/>
<image class="doctor_sign_image"
src="{{doctor_sign_image}}"
mode="widthFix"
/>
</view>
</view>
<view class="imgbox">
<image src="{{prescription_img_oss_path}}" mode="widthFix" class="prescription"></image>
<image src="{{doctor_sign_image}}" mode="widthFix" class="doctorSign"></image>
</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" bindtap="putPharmacistPrescriptionVerify" data-pharmacist_audit_status="1">
<van-button round type="primary" bind:click="submit">
<text decode="true">&nbsp;&nbsp;&nbsp;&nbsp;通过&nbsp;&nbsp;&nbsp;&nbsp;</text>
</van-button>
</view>
</view>
<view style="height: 20rpx;">
</view>
<van-popup show="{{ bohuishow }}" bind:close="onClose">
<view class="pop">
<van-cell size="large" 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" data-pharmacist_audit_status="2">确认驳回</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>
@@ -0,0 +1,60 @@
page{
background-color: #F3F5F7;
}
.img_box{
width: 90vw;
margin: 20rpx auto;
text-align: center;
}
.case_img{
width: 100%;
}
.img_content{
background-color: #F3F5F7;
padding: 20rpx;
border-radius: 10rpx;
}
.button_group{
display: flex;
justify-content: space-around;
margin-bottom: 50rpx;
}
.button_item{
display:inline-block;
}
.pop{
width: 90vw;
margin-bottom: 30rpx;
}
.pop_button{
margin-top: 30rpx;
display: flex;
justify-content: space-around;
}
.pop_button_txt{
color: red;
}
.imgbox{
width:100%;
height:0;
position:relative;
padding-bottom:141%;
}
.prescription{
position:absolute;
top:0px;
height:100%;
bottom:0px;
width:100%;
}
.doctorSign{
position:absolute;
width:100rpx;
height:53rpx;
left:125rpx;
bottom:126rpx;
}
.van-cell__value{
flex: 1.2 !important;
}
+43
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);
}
})
+7
View File
@@ -0,0 +1,7 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"van-field": "@vant/weapp/field/index"
}
}
+14
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>
+12
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;
}
@@ -0,0 +1,30 @@
import { API } from '../../../../utils/network/api'
let api = new API()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '协议详情', //导航栏 中间的标题
},
agreement_id: "",
agreement_content: ""
},
onLoad(option){
this.setData({
agreement_id: option.agreement_id
})
},
onShow(){
//获取医生我的账户数据
api.getBasicAgreement({agreement_id: this.data.agreement_id}).then(response => {
console.log(response);
this.setData({
agreement_content: response.data.agreement_content,
"navbarData.title": response.data.agreement_name,
})
}).catch(errors => {console.error(errors);})
}
})
@@ -0,0 +1,6 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index"
}
}
@@ -0,0 +1,5 @@
<!-- 协议详情 -->
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container">
<rich-text nodes="{{agreement_content}}" space="nbsp"></rich-text>
</view>
@@ -0,0 +1,8 @@
/* Pages/yishi/manual_detail/index.wxss */
page{
background-color: #F6F6F6;
}
.container{
width: 92vw;
margin: 20rpx auto;
}
+90
View File
@@ -0,0 +1,90 @@
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(this.data.evaluation_type)
}
},
onLoad(option){
console.log(option.doctor_id);
this.setData({
doctor_id: option.doctor_id
})
},
onShow(){
console.log("onShow");
this.getDoctorEvaluationList(1);
},
onTabsChange(e){
console.log(e);
let list_name = "appraise_list_" + e.detail.name;
this.setData({
evaluation_type: e.detail.name,
current_page: 0,
last_page: 0,
[list_name]: []
})
this.getDoctorEvaluationList(e.detail.name)
},
getDoctorEvaluationList(evaluation_type){
//获取评价列表
let params = {};
params.page = this.data.current_page + 1;
params.doctor_id = this.data.doctor_id;
params.evaluation_type = evaluation_type;
api.getDoctorEvaluation(params).then(response => {
if(response.data.total > 0){
let list_name = "appraise_list_" + 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);
})
}
})
+13
View File
@@ -0,0 +1,13 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"appraise-data": "../../../commpents/appraise_data/index",
"van-empty": "@vant/weapp/empty/index",
"van-tab": "@vant/weapp/tab/index",
"van-tabs": "@vant/weapp/tabs/index",
"t-rate": "tdesign-miniprogram/rate/rate",
"van-divider": "@vant/weapp/divider/index"
},
"onReachBottomDistance": 100
}
+111
View File
@@ -0,0 +1,111 @@
<wxs module="dateSubstr" src="/utils/substr.wxs"></wxs>
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container">
<van-tabs active="1"
color="#3CC7C0"
title-active-color="#3CC7C0"
bind:change="onTabsChange"
border="{{true}}"
>
<van-tab title="全部({{total_quantity}})" name="1">
<view class="item_list">
<view class="item" wx:for="{{appraise_list_1}}">
<view class="top">
<view class="name">{{item.name_mask}}</view>
<view class="start">
<t-rate value="{{item.avg_score}}" count="5" color="#ED9C00"/>
</view>
</view>
<view class="content">{{item.content}}</view>
<view class="date">{{dateSubstr.substring(item.created_at,0,16)}}</view>
</view>
</view>
<van-empty description="暂无数据" wx:if="{{appraise_list_1.length == 0}}" />
<van-divider contentPosition="center" wx:if="{{appraise_list_1.length > 0 && current_page == last_page}}">到底了~</van-divider>
</van-tab>
<van-tab title="好评({{good_quantity}})" name="2">
<view class="item_list">
<view class="item" wx:for="{{appraise_list_2}}">
<view class="top">
<view class="name">{{item.name_mask}}</view>
<view class="start">
<t-rate value="{{item.avg_score}}" count="5" color="#ED9C00"/>
</view>
</view>
<view class="content">{{item.content}}</view>
<view class="date">{{dateSubstr.substring(item.created_at,0,16)}}</view>
</view>
</view>
<van-empty description="暂无数据" wx:if="{{appraise_list_2.length == 0}}" />
<van-divider contentPosition="center" wx:if="{{appraise_list_2.length > 0 && current_page == last_page}}">到底了~</van-divider>
</van-tab>
<van-tab title="中/差评({{bad_quantity}})" name="3">
<view class="item_list">
<view class="item" wx:for="{{appraise_list_3}}">
<view class="top">
<view class="name">{{item.name_mask}}</view>
<view class="start">
<t-rate value="{{item.avg_score}}" count="5" color="#ED9C00"/>
</view>
</view>
<view class="content">{{item.content}}</view>
<view class="date">{{dateSubstr.substring(item.created_at,0,16)}}</view>
</view>
</view>
<van-empty description="暂无数据" wx:if="{{appraise_list_3.length == 0}}" />
<van-divider contentPosition="center" wx:if="{{appraise_list_3.length > 0 && current_page == last_page}}">到底了~</van-divider>
</van-tab>
</van-tabs>
<!-- <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>
<van-empty description="暂无数据" wx:if="{{appraise_list_1.length == 0}}" />
</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>
<van-empty description="暂无数据" wx:if="{{appraise_list_2.length == 0}}" />
</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>
<van-empty description="暂无数据" wx:if="{{appraise_list_3.length == 0}}" />
</t-tab-panel>
</t-tabs> -->
</view>
+50
View File
@@ -0,0 +1,50 @@
page{
background-color: #F6F6F6;
}
.container{
width: 100vw;
}
.item_list{
width: 92vw;
margin: 20rpx auto;
background-color: #fff;
border-radius: 20rpx;
}
.item{
display: flex;
padding: 20rpx;
flex-direction: column;
}
.item:not(:last-child){
border-bottom: 1px solid #E7E7E7;
}
.top{
display: flex;
justify-content: space-between;
align-items: center;
flex: 1;
}
.name{
flex: 1;
font-size: 30rpx;
color: #666666;
}
.start{
flex: 1;
display: flex;
justify-content: flex-end;
}
.content{
flex: 2;
font-size: 34rpx;
color: #333333;
margin: 20rpx 0;
}
.date{
flex: 1;
font-size: 28rpx;
color: #666666;
}
+22
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,
})
}
})
+8
View File
@@ -0,0 +1,8 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"van-cell": "@vant/weapp/cell/index",
"van-cell-group": "@vant/weapp/cell-group/index"
}
}
+6
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 size="large" title="真实姓名" value="{{card_name}}" />
<van-cell size="large" title="身份证号" value="{{card_num_mask}}" />
</view>
+6
View File
@@ -0,0 +1,6 @@
.container{
padding-top: 20rpx;
background-color: #F6F6F6;
width: 100vw;
height: 100vh;
}
+47
View File
@@ -0,0 +1,47 @@
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: "",
static_host: api.getStaticHost()
},
onShow(){
api.getDoctorBank().then(response => {
if(response.data.bank_card_id){
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);
}
})
+9
View File
@@ -0,0 +1,9 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"van-image": "@vant/weapp/image/index",
"t-icon": "tdesign-miniprogram/icon/icon",
"van-button": "@vant/weapp/button/index"
}
}
+32
View File
@@ -0,0 +1,32 @@
<!-- 我的银行卡页面 -->
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container">
<view class="help">
<view class="help_title">
<text wx:if="{{ !banklist_empty }}">我的银行卡</text>
</view>
<view class="help_note" data-url="/user/pages/yishi/manual/index" bindtap="go">
操作手册-银行卡<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">
<van-image src="{{static_host}}/applet/doctor/static/images/yishi/bankcard_empty.png" fit="widthFix" width="500rpx" aria-label="空" />
</view>
<van-button data-url="/user/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">
<van-image src="{{bank_img_path}}" fit="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>
<van-button data-url="/user/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>
+61
View File
@@ -0,0 +1,61 @@
page{
background-color: #F4F4F4;
}
.container{
width: 100vw;
}
.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: -20rpx 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;
}
+253
View File
@@ -0,0 +1,253 @@
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: "",
static_host: api.getStaticHost()
},
onLoad(options){
console.log("options: ", options);
let bank_card_id = options.bank_card_id;
if(bank_card_id && bank_card_id != "undefined"){
console.log("options bank_card_id: ", 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_mask,
idcard:response.data.card_num_mask
});
}
}).catch(errors => {
console.error(errors);
})
},
onCityShow(e) {
console.log("onCityShow");
this.setData({ city_show: true });
},
onBankShow(e) {
console.log("onBankShow");
if(this.data.select_county_id == ""){
wx.showToast({
title: '请选择城市',
icon: "error"
})
return;
}
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.county_id: ", params.county_id)
if(params.county_id == ""){
wx.showToast({
title: '请选择城市',
icon: "error"
})
return;
}
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"
})
wx.navigateBack();
}).catch(errors => {console.error(errors); })
}else{
//绑定医生银行卡
api.postDoctorBank(params).then(response => {
console.log(response);
wx.showToast({
title: '绑定成功',
icon: "success"
})
wx.navigateBack();
}).catch(errors => {console.error(errors); })
}
}
})
+15
View File
@@ -0,0 +1,15 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"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",
"van-image": "@vant/weapp/image/index",
"t-cascader": "tdesign-miniprogram/cascader/cascader"
}
}
+63
View File
@@ -0,0 +1,63 @@
<!-- 绑定银行卡页面 -->
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container" style="height: calc(100vh - 96rpx - {{height}}px);">
<view class="top_note">
<van-image style="display: flex;align-items: center;margin-right: 10rpx;" src="{{static_host}}/applet/doctor/static/images/bell.png" fit="widthFix" width="45rpx" aria-label="qrcode" />
<text>请确定开户人姓名与账户医生的姓名一致</text>
</view>
<view class="info">
<van-cell-group>
<van-cell size="large" title="姓名" value="{{realname}}" />
<van-cell size="large" title="身份证号" value="{{idcard}}" border="{{ false }}" />
</van-cell-group>
</view>
<view class="bankcard">
<van-cell-group>
<van-cell size="large" title="所在城市" value="{{city_note}}" is-link bindtap="onCityShow"/>
<van-cell size="large" title="开户行" value="{{bank_note}}" is-link bindtap="onBankShow"/>
<van-field
placeholder="请输入卡号"
model:value="{{ bankcard }}"
input-align="right"
type="number"
clearable
placeholder-style="font-size: 16px;"
>
<text slot="label" style="font-size: 30rpx;">银行卡号</text>
</van-field>
</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>
+44
View File
@@ -0,0 +1,44 @@
.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;
display: flex;
align-items: center;
}
.bankcard{
margin-top: 20rpx;
}
.note{
font-size: 28rpx;
color: #999999;
width: 92vw;
margin: 20rpx auto;
line-height: 50rpx;
}
.t-tabs__item--active{
color: #49B9AD !important;
}
.t-tabs__track{
background-color: #49B9AD !important;
}
.t-icon-check{
color: #49B9AD !important;
}
.van-picker__confirm{
color: #3cc7c0 !important;
}
.van-cell {
padding: 32rpx !important;
}
.bankcard input{
font-size: 16px !important;
}
+88
View File
@@ -0,0 +1,88 @@
import { API } from '../../../../utils/network/api'
import debounce from '../../../../utils/debounce'
let api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '病历信息', //导航栏 中间的标题
},
height: app.globalData.height,
order_inquiry_id: "",
case_detail: {},
imglist: []
},
onLoad(options){
console.log("onLoad", options)
this.setData({
order_inquiry_id: options.order_inquiry_id
})
},
goReport:debounce(function(event){
wx.showLoading({
mask:true,
title: '正在打开文件...',
})
const url=event.currentTarget.dataset.url;
const randfile = new Date().getTime() + '检测报告';
const newPath = `${wx.env.USER_DATA_PATH}/${randfile}`;
wx.downloadFile({
// 示例 url,并非真实存在
url:url,
filePath: newPath,
success: function (res) {
//const filePath = res.tempFilePath
wx.openDocument({
fileType:"pdf",
showMenu:true,
filePath: newPath,
success: function (res) {
console.log('打开文档成功');
wx.hideLoading()
},
fail:function(error){
wx.hideLoading()
wx.showToast({
title:res,
icon:"none"
})
}
})
},
fail:function(error){
wx.showToast({
title:error,
icon:"none"
})
}
})
}),
formatImgList(){
let diagnose_images = this.data.case_detail.diagnose_images?this.data.case_detail.diagnose_images:[];
let img_list = [];
diagnose_images.forEach(item => {
let img = {};
img.isImage = true;
img.url = item;
img_list.push(img);
})
this.setData({
imglist: img_list
})
},
onShow(){
//获取患者问诊病例
api.getInquiryDetail({order_inquiry_id: this.data.order_inquiry_id}).then(response => {
console.log(response);
this.setData({
case_detail: response.data
})
}).then(res => {
this.formatImgList();
}).catch(errors => {console.error(errors);})
},
})
+8
View File
@@ -0,0 +1,8 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"van-icon": "@vant/weapp/icon/index",
"van-uploader": "@vant/weapp/uploader/index"
}
}
+114
View File
@@ -0,0 +1,114 @@
<wxs module="dateSubstr" src="./../../../utils/substr.wxs"></wxs>
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container">
<view class="main_title">基础信息</view>
<view class="data_box">
<view class="data_box_top">
<view class="name">{{case_detail.name}}</view>
<view class="sex">{{case_detail.sex==1?'男':case_detail.sex==2?'女':'未知'}}|{{case_detail.age}}岁 </view>
</view>
<view class="info">
<view class="height info_item"><text class="info_title">身高:</text><text class="info_val">{{case_detail.height==null?'未知':case_detail.height + 'CM'}}</text></view>
<view class="weight info_item"><text class="info_title">体重:</text><text class="info_val">{{case_detail.weight==null?'未知':case_detail.weight + 'KG'}}</text></view>
<view class="minzu info_item"><text class="info_title">民族:</text><text class="info_val">{{case_detail.nation_name==''?'未知':case_detail.nation_name}}</text></view>
<view class="zhiye info_item"><text class="info_title">职业:</text><text class="info_val">{{case_detail.job_name==''?'未知':case_detail.job_name}}</text></view>
<view class="hunyin info_item"><text class="info_title">婚姻:</text><text class="info_val">{{case_detail.marital_status==0?'未婚':case_detail.marital_status==1?'已婚':case_detail.marital_status==2?'离异':'未知'}}</text></view>
</view>
<view class="disease_box">
<view class="disease_box_item" wx:if="{{case_detail.disease_class_name}}">
<view class="title">所患疾病:</view>
<view class="conent">{{case_detail.disease_class_name}}</view>
</view>
<view class="disease_box_item" wx:if="{{case_detail.diagnosis_date}}">
<view class="title">确诊日期:</view>
<view class="conent" >{{dateSubstr.substring(case_detail.diagnosis_date,0,10)}}</view>
</view>
<!-- <view class="disease_box_item">
<view class="title">医生诊断:</view>
<view class="conent">{{case_detail.disease_class_name}}</view>
</view> -->
<view class="disease_box_item" wx:if="{{case_detail.diagnosis_hospital != '' && case_detail.diagnosis_hospital != null}}">
<view class="title">确诊医院:</view>
<view class="conent">{{case_detail.diagnosis_hospital}}</view>
</view>
<view class="disease_box_item" wx:if="{{case_detail.drugs_name != '' && case_detail.drugs_name != null}}">
<view class="title">正在服用的药品信息:</view>
<view class="conent">{{case_detail.drugs_name==''?'无':''}}</view>
</view>
<view class="disease_info" wx:if="{{case_detail.drugs_name != '' && case_detail.drugs_name != null}}">
详细描述:{{case_detail.drugs_name}}
</view>
<view class="disease_box_item" wx:if="{{case_detail.disease_desc}}">
<view class="title">病情描述:</view>
<view class="conent">{{case_detail.disease_desc}}</view>
</view>
<view class="disease_box_item" wx:if="{{case_detail.product.length > 0}}">
<view class="title">用药意向:</view>
<view class="conent">
<view wx:for="{{case_detail.product}}">{{item}};</view>
</view>
</view>
<view class="disease_box_item" wx:if="{{case_detail.diagnose_images.length > 0}}">
<view class="title">复诊凭证(病例/处方单/检查报告/住院单):</view>
<view class="conent" wx:if="{{case_detail.diagnose_images.length == 0}}">无</view>
</view>
<view class="img_box" >
<van-uploader image-fit="aspectFit" file-list="{{ imglist }}" show-upload="{{false}}" deletable="{{false}}" />
</view>
</view>
</view>
<view class="sugarbox" wx:if="{{case_detail.detection_project}}" data-url="{{case_detail.detection_project.detection_link}}" bindtap="goReport">
<view class="main_title">{{case_detail.detection_project_name}}</view>
<view class="data_box sugar" >
<view class="sugar_left">
<view class="name">糖组检测</view>
<view class="date">{{case_detail.detection_project.detection_time}}</view>
</view>
<van-icon name="arrow" />
</view>
</view>
<view class="main_title" wx:if="{{!(case_detail.is_taboo == null && case_detail.is_allergy_history == null && case_detail.is_family_history == null && case_detail.is_pregnant == null && case_detail.drink_wine_status == null && case_detail.smoke_status == null && case_detail.is_operation == null && case_detail.chemical_compound_status == null && case_detail.chemical_compound_status == null)}}">其他信息</view>
<view class="data_box orther" wx:if="{{!(case_detail.is_taboo == null && case_detail.is_allergy_history == null && case_detail.is_family_history == null && case_detail.is_pregnant == null && case_detail.drink_wine_status == null && case_detail.smoke_status == null && case_detail.is_operation == null && case_detail.chemical_compound_status == null && case_detail.chemical_compound_status == null)}}">
<view class="disease_box">
<view class="disease_box_item" wx:if="{{case_detail.is_taboo != null}}">
<view class="title">是否服用过您想购买的药品且无相关禁忌:</view>
<view class="conent">{{case_detail.is_taboo==0?'否':'是'}}</view>
</view>
<view class="disease_box_item" wx:if="{{case_detail.is_allergy_history != null}}">
<view class="title">过敏史:</view>
<view class="conent">{{case_detail.is_allergy_history==0?'否':case_detail.allergy_history}}</view>
</view>
<view class="disease_box_item" wx:if="{{ case_detail.is_family_history != null}}">
<view class="title">家族史:</view>
<view class="conent">{{case_detail.is_family_history==0?'否':case_detail.family_history}}</view>
</view>
<view class="disease_box_item" wx:if="{{case_detail.is_pregnant != null}}">
<view class="title">是否备孕、妊娠或者哺乳期:</view>
<view class="conent">{{case_detail.is_pregnant==0?'否':case_detail.pregnant}}</view>
</view>
<view class="disease_box_item" wx:if="{{ case_detail.drink_wine_status != null}}">
<view class="title">饮酒史:</view>
<view class="conent">{{case_detail.drink_wine_status==1?'从不':case_detail.drink_wine_status==2?'偶尔':case_detail.drink_wine_status==3?'经常':case_detail.drink_wine_status==4?'每天':case_detail.drink_wine_status==5?'已戒酒':'其他'}}</view>
</view>
<view class="disease_box_item" wx:if="{{case_detail.smoke_status != null}}">
<view class="title">吸烟史:</view>
<view class="conent">{{case_detail.smoke_status==1?'从不':case_detail.smoke_status==2?'偶尔':case_detail.smoke_status==3?'经常':case_detail.smoke_status==4?'每天':case_detail.smoke_status==5?'已戒烟':'其他'}}</view>
</view>
<view class="disease_box_item" wx:if="{{case_detail.is_operation != null}}">
<view class="title">手术史:</view>
<view class="conent">{{case_detail.is_operation==0?'否':case_detail.operation}}</view>
</view>
<view class="disease_box_item" wx:if="{{ case_detail.chemical_compound_status != null}}">
<view class="title">接触化学物:</view>
<view class="conent">{{case_detail.chemical_compound_status==1?'从不':case_detail.chemical_compound_status==2?'偶尔':case_detail.chemical_compound_status==3?'经常':case_detail.chemical_compound_status==4?'每天':'其他'}}</view>
</view>
<view class="disease_info" wx:if="{{case_detail.chemical_compound_describe != '' && case_detail.chemical_compound_describe != null}}">
详细描述:{{case_detail.chemical_compound_describe}}
</view>
</view>
</view>
<view style="height: 50rpx;">
</view>
</view>
+127
View File
@@ -0,0 +1,127 @@
page{
background-color: #F6F6F6;
}
.container{
/* width: 100vw; */
padding: 0 4vw;
}
.main_title{
font-size: 16px;
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;
padding-top: 10rpx;
display: flex;
flex-wrap: wrap;
margin: 20rpx 0 0;
padding-bottom: 20rpx;
}
.info_item{
text-align: left;
/* width: 190rpx; */
/* height: 60rpx; */
margin-top: 10rpx;
display: flex;
align-items: center;
margin-left: 20rpx;
align-items: flex-start;
}
.info_title{
font-size: 28rpx;
color: #333333;
}
.info_val{
font-size: 28rpx;
flex: 1;
color: #666666;
}
.disease_box{
}
.disease_box_item{
margin-bottom: 30rpx;
display: flex;
}
.data_box .disease_box_item:first-child{
margin-top: 20rpx;
}
.orther .disease_box_item:first-child{
margin-top: 0rpx;
}
.title{
font-size: 30rpx;
color: #333333;
}
.conent{
flex: 1;
font-size: 28rpx;
color: #666666;
word-wrap:break-word;
word-break:break-all;
}
.disease_info{
background: #FAFAFA;
border-radius: 10rpx;
padding: 10rpx;
font-size: 26rpx;
color: #999999;
margin-bottom: 20rpx;
}
.img_box{
display: flex;
flex-wrap: wrap;
}
.van-uploader__wrapper{
display: flex !important;
}
.van-uploader__preview{
padding: 20rpx 15rpx !important;
background-color: #E4E4E4 !important;
border-radius: 15rpx;
width: 150rpx;
display: flex;
justify-content: center;
}
.orther{
margin-bottom: 50rpx;
}
.sugar{
display: flex;
align-items: center;
justify-content:space-between ;
}
.sugar .name{
color:#333;
font-size: 30rpx;
}
.sugar .date{
margin-top: 12rpx;
font-size: 24rpx;
font-weight: 400;
color: rgba(0,0,0,0.45);
}
+108
View File
@@ -0,0 +1,108 @@
import { API } from '../../../../utils/network/api'
import debounce from '../../../../utils/debounce'
let api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '病历信息', //导航栏 中间的标题
},
pathography_id:'',
height: app.globalData.height,
order_inquiry_id:"",
case_detail: {},
imglist: []
},
onLoad(options){
console.log("onLoad", options)
if(options.order_inquiry_id){
this.setData({
order_inquiry_id: options.order_inquiry_id
})
//获取患者问诊病例
api.getInquiryDetail({order_inquiry_id: this.data.order_inquiry_id}).then(response => {
console.log(response);
this.setData({
case_detail: response.data
})
}).then(res => {
this.formatImgList();
}).catch(errors => {console.error(errors);})
}
if(options.pathography_id){
this.setData({
pathography_id: options.pathography_id
})
//获取患者问诊病例
api.getPathographyDetail(options.pathography_id).then(response => {
this.setData({
case_detail: response.data
})
}).then(res => {
this.formatImgList();
}).catch(errors => {console.error(errors);})
}
},
goReport:debounce(function(event){
wx.showLoading({
mask:true,
title: '正在打开文件...',
})
const url=event.currentTarget.dataset.url;
const randfile = new Date().getTime() + '检测报告';
const newPath = `${wx.env.USER_DATA_PATH}/${randfile}`;
wx.downloadFile({
// 示例 url,并非真实存在
url:url,
filePath: newPath,
success: function (res) {
//const filePath = res.tempFilePath
wx.openDocument({
fileType:"pdf",
showMenu:true,
filePath: newPath,
success: function (res) {
console.log('打开文档成功');
wx.hideLoading()
},
fail:function(error){
wx.hideLoading()
wx.showToast({
title:res,
icon:"none"
})
}
})
},
fail:function(error){
wx.showToast({
title:error,
icon:"none"
})
}
})
}),
formatImgList(){
let diagnose_images = this.data.case_detail.diagnose_images?this.data.case_detail.diagnose_images:[];
let img_list = [];
diagnose_images.forEach(item => {
let img = {};
img.isImage = true;
img.url = item;
img_list.push(img);
})
this.setData({
imglist: img_list
})
},
onShow(){
},
})
+8
View File
@@ -0,0 +1,8 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"van-icon": "@vant/weapp/icon/index",
"van-uploader": "@vant/weapp/uploader/index"
}
}
+139
View File
@@ -0,0 +1,139 @@
<wxs module="dateSubstr" src="../../../../utils/substr.wxs"></wxs>
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container">
<view class="main_title">基础信息</view>
<view class="data_box">
<view class="data_box_top">
<view class="name">{{case_detail.name}}</view>
<view class="sex">{{case_detail.sex==1?'男':case_detail.sex==2?'女':'未知'}}|{{case_detail.age}}岁 </view>
</view>
<view class="info">
<view class="height info_item"><text class="info_title">身高:</text><text class="info_val">{{case_detail.height==null?'未知':case_detail.height + 'CM'}}</text></view>
<view class="weight info_item"><text class="info_title">体重:</text><text class="info_val">{{case_detail.weight==null?'未知':case_detail.weight + 'KG'}}</text></view>
<view class="minzu info_item"><text class="info_title">民族:</text><text class="info_val">{{case_detail.nation_name?case_detail.nation_name:'未知'}}</text></view>
<view class="zhiye info_item"><text class="info_title">职业:</text><text class="info_val">{{case_detail.job_name?case_detail.job_name:'未知'}}</text></view>
<view class="hunyin info_item"><text class="info_title">婚姻:</text><text class="info_val">{{case_detail.marital_status==0?'未婚':case_detail.marital_status==1?'已婚':case_detail.marital_status==2?'离异':'未知'}}</text></view>
</view>
<view class="disease_box">
<view class="disease_box_item" wx:if="{{case_detail.disease_class_name}}">
<view class="title">所患疾病:</view>
<view class="conent">{{case_detail.disease_class_name}}</view>
</view>
<view class="disease_box_item" wx:if="{{case_detail.diagnosis_date}}">
<view class="title">确诊日期:</view>
<view class="conent" >{{dateSubstr.substring(case_detail.diagnosis_date,0,10)}}</view>
</view>
<!-- <view class="disease_box_item">
<view class="title">医生诊断:</view>
<view class="conent">{{case_detail.disease_class_name}}</view>
</view> -->
<view class="disease_box_item" wx:if="{{case_detail.diagnosis_hospital != '' && case_detail.diagnosis_hospital != null}}">
<view class="title">确诊医院:</view>
<view class="conent">{{case_detail.diagnosis_hospital}}</view>
</view>
<view class="disease_box_item" wx:if="{{case_detail.drugs_name != '' && case_detail.drugs_name != null}}">
<view class="title">正在服用的药品信息:</view>
<view class="conent">{{case_detail.drugs_name==''?'无':''}}</view>
</view>
<view class="disease_info" wx:if="{{case_detail.drugs_name != '' && case_detail.drugs_name != null}}">
详细描述:{{case_detail.drugs_name}}
</view>
<view class="disease_box_item" wx:if="{{case_detail.disease_desc}}">
<view class="title">病情描述:</view>
<view class="conent">{{case_detail.disease_desc}}</view>
</view>
<view class="disease_box_item" wx:if="{{case_detail.product.length > 0}}">
<view class="title">用药意向:</view>
<view class="conent">
<view wx:for="{{case_detail.product}}">{{item}};</view>
</view>
</view>
<view class="disease_box_item" wx:if="{{case_detail.diagnose_images.length > 0}}">
<view class="title">复诊凭证(病例/处方单/检查报告/住院单):</view>
<view class="conent" wx:if="{{case_detail.diagnose_images.length == 0}}">无</view>
</view>
<view class="img_box" >
<van-uploader image-fit="aspectFit" file-list="{{ imglist }}" show-upload="{{false}}" deletable="{{false}}" />
</view>
</view>
</view>
<view class="sugarbox" wx:if="{{case_detail.detection_project}}" data-url="{{case_detail.detection_project.detection_link}}" bindtap="goReport">
<view class="main_title">{{case_detail.detection_project_name}}</view>
<view class="data_box sugar" >
<view class="sugar_left">
<view class="name">糖组检测</view>
<view class="date">{{case_detail.detection_project.detection_time}}</view>
</view>
<van-icon name="arrow" />
</view>
</view>
<view class="main_title" wx:if="{{!(case_detail.is_taboo == null && case_detail.is_allergy_history == null && case_detail.is_family_history == null && case_detail.is_pregnant == null && case_detail.drink_wine_status == null && case_detail.smoke_status == null && case_detail.is_operation == null && case_detail.chemical_compound_status == null && case_detail.chemical_compound_status == null)}}">其他信息</view>
<view class="data_box orther" wx:if="{{!(case_detail.is_taboo == null && case_detail.is_allergy_history == null && case_detail.is_family_history == null && case_detail.is_pregnant == null && case_detail.drink_wine_status == null && case_detail.smoke_status == null && case_detail.is_operation == null && case_detail.chemical_compound_status == null && case_detail.chemical_compound_status == null)}}">
<view class="disease_box">
<view class="disease_box_item" wx:if="{{case_detail.is_taboo != null}}">
<view class="title">是否服用过您想购买的药品且无相关禁忌:</view>
<view class="conent">{{case_detail.is_taboo==0?'否':'是'}}</view>
</view>
<view class="disease_box_item" wx:if="{{case_detail.is_allergy_history != null}}">
<view class="title">过敏史:</view>
<view class="conent">{{case_detail.is_allergy_history==0?'否':case_detail.allergy_history}}</view>
</view>
<view class="disease_box_item" wx:if="{{ case_detail.is_family_history != null}}">
<view class="title">家族史:</view>
<view class="conent">{{case_detail.is_family_history==0?'否':case_detail.family_history}}</view>
</view>
<view class="disease_box_item" wx:if="{{case_detail.is_pregnant != null}}">
<view class="title">是否备孕、妊娠或者哺乳期:</view>
<view class="conent">{{case_detail.is_pregnant==0?'否':case_detail.pregnant}}</view>
</view>
<view class="disease_box_item" wx:if="{{ case_detail.drink_wine_status != null}}">
<view class="title">饮酒史:</view>
<view class="conent">{{case_detail.drink_wine_status==1?'从不':case_detail.drink_wine_status==2?'偶尔':case_detail.drink_wine_status==3?'经常':case_detail.drink_wine_status==4?'每天':case_detail.drink_wine_status==5?'已戒酒':'其他'}}</view>
</view>
<view class="disease_box_item" wx:if="{{case_detail.smoke_status != null}}">
<view class="title">吸烟史:</view>
<view class="conent">{{case_detail.smoke_status==1?'从不':case_detail.smoke_status==2?'偶尔':case_detail.smoke_status==3?'经常':case_detail.smoke_status==4?'每天':case_detail.smoke_status==5?'已戒烟':'其他'}}</view>
</view>
<view class="disease_box_item" wx:if="{{case_detail.is_operation != null}}">
<view class="title">手术史:</view>
<view class="conent">{{case_detail.is_operation==0?'否':case_detail.operation}}</view>
</view>
<view class="disease_box_item" wx:if="{{ case_detail.chemical_compound_status != null}}">
<view class="title">接触化学物:</view>
<view class="conent">{{case_detail.chemical_compound_status==1?'从不':case_detail.chemical_compound_status==2?'偶尔':case_detail.chemical_compound_status==3?'经常':case_detail.chemical_compound_status==4?'每天':'其他'}}</view>
</view>
<view class="disease_info" wx:if="{{case_detail.chemical_compound_describe != '' && case_detail.chemical_compound_describe != null}}">
详细描述:{{case_detail.chemical_compound_describe}}
</view>
</view>
</view>
<view wx:if="{{case_detail.order_prescription}}">
<view class="main_title">处方信息</view>
<view class="data_box">
<view class="disease_box">
<view class="disease_box_item" >
<view class="title">诊断:</view>
<view class="conent">{{case_detail.order_prescription.icd_name}}</view>
</view>
<view class="disease_box_item" >
<view class="title">时间:</view>
<view class="conent">{{case_detail.order_prescription.doctor_created_time}}</view>
</view>
<view class="disease_box_item" >
<view class="title">药品:</view>
<view class="conent" wx:for="{{case_detail.order_prescription.product}}" wx:for-item="itemName">
{{itemName.product_name}};
</view>
</view>
<view class="disease_box_item" >
<view class="title">用法:</view>
<view class="conent">{{case_detail.order_prescription.doctor_advice}}</view>
</view>
</view>
</view>
</view>
</view>
+134
View File
@@ -0,0 +1,134 @@
page{
background-color: #F6F6F6;
}
.container{
/* width: 100vw; */
padding: 0 4vw;
}
.main_title{
font-size: 16px;
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 0;
padding:10rpx 20rpx 20rpx;
}
.info_item{
text-align: left;
width: 33.3%;
margin-right: -1rpx;
/* height: 60rpx; */
margin-top: 10rpx;
display: flex;
align-items: center;
align-items: flex-start;
}
.info_item:nth-child(3n){
margin-right: 0rpx;
}
.info_title{
font-size: 28rpx;
color: #333333;
}
.info_val{
font-size: 28rpx;
flex: 1;
color: #666666;
}
.disease_box{
}
.disease_box_item{
margin-bottom: 30rpx;
display: flex;
}
.data_box .disease_box_item:first-child{
margin-top: 20rpx;
}
.orther .disease_box_item:first-child{
margin-top: 0rpx;
}
.title{
font-size: 30rpx;
color: #333333;
}
.conent{
flex: 1;
font-size: 28rpx;
color: #666666;
word-wrap:break-word;
word-break:break-all;
}
.disease_info{
background: #FAFAFA;
border-radius: 10rpx;
padding: 10rpx;
font-size: 26rpx;
color: #999999;
margin-bottom: 20rpx;
}
.img_box{
display: flex;
flex-wrap: wrap;
}
.van-uploader__wrapper{
display: flex !important;
}
.van-uploader__preview{
padding: 20rpx 15rpx !important;
background-color: #E4E4E4 !important;
border-radius: 15rpx;
width: 150rpx;
display: flex;
justify-content: center;
}
.orther{
margin-bottom: 50rpx;
}
.sugar{
display: flex;
align-items: center;
justify-content:space-between ;
}
.sugar .name{
color:#333;
font-size: 30rpx;
}
.sugar .date{
margin-top: 12rpx;
font-size: 24rpx;
font-weight: 400;
color: rgba(0,0,0,0.45);
}
+133
View File
@@ -0,0 +1,133 @@
import { API } from '../../../../utils/network/api'
import { requestSubscribeMessage } from '../../../../utils/requestSubscribeUtil';
const api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '去提现', //导航栏 中间的标题
},
height: app.globalData.height,
bank_card_id: "",
static_host: api.getStaticHost(),
bank_icon_path: api.getStaticHost()+"/applet/doctor/static/images/yishi/bankcard/js_icon.png",
bank_card_name: "默认姓名",
bank_name : "xx银行",
bank_card_code_mask: "888 xxxx xxxx 888",
withdrawal_amount: "xxxx",
amount_total:'',
income_tax: "xx",
contactKeFu: false,
sub_visible: false,
skeleton_loading: true,
order_inquiry_ids: [],
sub_btn_disabled: false
},
onLoad(option){
let order_inquiry_ids = option.order_inquiry_ids;
let params = {};
if(order_inquiry_ids){
params.order_inquiry_ids = order_inquiry_ids;
this.setData({
"navbarData.back_url": "/Pages/yishi/my/index",
"navbarData.back_url_type": 1,
})
}
this.postDoctorWithdrawalInfo(params);
},
onShow(){
this.setData({
sub_btn_disabled: false
})
},
go(e){
let url = e.currentTarget.dataset.url;
app.go(url);
},
contactKeFu(e){
console.log("concatKeFu");
let tmplIds = ['JMPmlYGh1HcUSuEfJCVQUIsZv4H5ar3QvXZfrNYNFuc']
let sub_promise = requestSubscribeMessage(tmplIds)
sub_promise.then(res => {
console.log("订阅成功")
this.setData({
contactKeFu: true
})
}).catch(err => {
console.log(err)
let errCode = err.errCode
if(errCode == 20004){
this.setData({
sub_visible: true,
})
}
})
},
subcancelDialog(){
this.setData({
sub_visible: false
})
},
subconfirmDialog(){
this.setData({
sub_visible: false
})
wx.openSetting({
success (res) {
console.log(res.authSetting)
}
})
},
postDoctorWithdrawalInfo(params){
//获取提现数据
api.postDoctorWithdrawalInfo(params).then(response => {
console.log(response);
if(response.data.bank.bank_card_id){
this.setData({
bank_card_id: response.data.bank.bank_card_id,
bank_icon_path: response.data.bank.bank_icon_path,
bank_name : response.data.bank.bank_name,
bank_card_code_mask: response.data.bank.bank_card_code_mask,
withdrawal_amount: response.data.withdrawal_amount,
amount_total:response.data.amount_total,
order_inquiry_ids: response.data.order_inquiry_ids,
bank_card_name: response.data.bank.bank_card_name_mask,
income_tax: response.data.income_tax,
skeleton_loading: false
})
}
}).catch(errors => {
console.error(errors);
})
},
postDoctorWithdrawal(){
this.setData({
sub_btn_disabled: true
})
let params = {};
params.order_inquiry_id = this.data.order_inquiry_ids.join(",");
params.withdrawal_amount_total = this.data.withdrawal_amount;
params.bank_card_id = this.data.bank_card_id;
//获取提现数据
api.postDoctorWithdrawal(params).then(response => {
console.log(response);
this.setData({
withdrawal_amount: 0,
income_tax: 0
})
wx.showToast({
title: '提现申请成功',
icon: "success"
})
}).catch(errors => {
console.error(errors);
this.setData({
sub_btn_disabled: false
})
})
}
})
+12
View File
@@ -0,0 +1,12 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"van-image": "@vant/weapp/image/index",
"van-icon": "@vant/weapp/icon/index",
"van-button": "@vant/weapp/button/index",
"van-dialog": "@vant/weapp/dialog/index",
"t-skeleton": "tdesign-miniprogram/skeleton/skeleton",
"t-dialog": "tdesign-miniprogram/dialog/dialog"
}
}
+102
View File
@@ -0,0 +1,102 @@
<!-- 提现页面 -->
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container">
<view class="top">
<view class="txt_title">结算银行卡</view>
<view class="rule" bindtap="go" data-url="/user/pages/agreement_page/index?agreement_id=12">提现规则<van-icon name="warning-o" color="#FF9800" /></view>
</view>
<view class="bankcard" wx:if="{{!skeleton_loading}}">
<view class="bankcard_icon">
<van-image custom-style="" src="{{bank_icon_path}}" fit="heightFix" height="50rpx" aria-label="role" />
</view>
<view class="bankcard_info">
<view class="bankcard_info_top">{{bank_card_name}}<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="bankcard_loading" wx:if="{{skeleton_loading}}">
<t-skeleton theme="text" row-col="{{[{width: '30%'},{width: '80%'}]}}" animation="gradient" loading="{{skeleton_loading}}" />
</view>
<view class="cash" wx:if="{{!skeleton_loading}}">
<view class="cash_top">
<view class="cash_left">
<!-- <view class="cash_left_title">实际到账(元)</view> -->
<view class="cash_num">
<view>
<text style="font-size: 34rpx;">账户余额:¥</text>{{amount_total}}
</view>
</view>
<view class="shui">扣除个人所得税:
<text style="color: red;">{{income_tax}}元</text>
</view>
</view>
<!-- <view class="cash_right">
<navigator url="/Pages/yishi/wenzhenorderV2/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">
<view class="title">
实际到账(元)
</view>
<view class="moneybox">
<view class="money"><text class="mark">¥</text><text class="moneyNum">{{withdrawal_amount}}</text></view>
<navigator url="/user/pages/yishi/wenzhenorderV2/index" open-type="navigate" hover-class="other-navigator-hover">
<van-button custom-style="text-align: center;border-radius: 10rpx;height:70rpx;width:200rpx;" color="linear-gradient(310deg, #FF931A 0%, #FF931A 0%, #FCB75D 100%);">
查看订单
</van-button>
</navigator>
</view>
</view>
</view>
<view class="tixian">
<navigator url="/user/pages/yishi/cashrecord/index" open-type="navigate" hover-class="other-navigator-hover">
提现记录 <van-icon name="arrow" />
</navigator>
</view>
<view class="cash_loading" wx:if="{{skeleton_loading}}">
<t-skeleton theme="text" row-col="{{[{width: '30%'},{width: '80%'},{width: '50%'},{width: '30%'}]}}" animation="gradient" loading="{{skeleton_loading}}" />
</view>
<!-- <view class="note">
<text>
说明:1、每月只可提取一次,提现金额大于300元才可提现,限额1万元;
2、平台会在24小时内自动结算至您绑定的银行卡内,请注意查收银行信息;
3、平台代扣个人所得税,根据公式:
</text>
</view> -->
<view class="bottom">
<van-button bind:click="postDoctorWithdrawal" disabled="{{order_inquiry_ids.length == 0 || sub_btn_disabled || withdrawal_amount == 0}}" custom-style="border-radius: 10rpx;font-size: 30rpx;" block color="#3CC7C0">提取</van-button>
<view class="kefu" bindtap="contactKeFu">
<text>联系客服</text>
</view>
</view>
<van-dialog
title="立即联系客服"
show="{{ contactKeFu }}"
show-cancel-button
confirm-button-color="#3CC7C0"
confirm-button-open-type="contact"
/>
<t-dialog
visible="{{ sub_visible }}"
title="温馨提示"
content="您已关闭订阅消息通知,请点击“确认”按钮在设置中打开订阅通知。"
>
<view slot="cancel-btn" class="dialog dialog_cancel_btn" bindtap="subcancelDialog">
取消
</view>
<view slot="confirm-btn" class="dialog dialog_confirm_btn" bindtap="subconfirmDialog">
确定
</view>
</t-dialog>
</view>
+192
View File
@@ -0,0 +1,192 @@
page{
background-color: #F4F4F4;
}
.container{
margin-top: 20rpx;
width: 100vw;
}
.top{
display: flex;
width: 92vw;
margin: 0 auto 20rpx auto;
justify-content: space-between;
}
.txt_title{
font-size: 36rpx;
}
.rule{
font-size: 30rpx;
color: #333333;
}
.bankcard_loading{
width: calc(92vw - 40rpx);
margin: 0 auto;
background-color: #fff;
border-radius: 20rpx;
padding: 20rpx 20rpx;
}
.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_loading{
padding: 20rpx 20rpx;
width: calc(92vw - 40rpx);
margin: 20rpx auto;
background-color: #fff;
border-radius: 20rpx;
display: flex;
flex-direction: column;
}
.cash{
width: 92vw;
margin: 20rpx auto;
background-color: #fff;
border-radius: 20rpx;
display: flex;
flex-direction: column;
}
.cash_top{
margin-top:30rpx;
display: flex;
flex: 3;
}
.cash_bottom{
padding:20rpx 20rpx 30rpx;
border-top: 1px solid #E5E5E5;
font-size: 32rpx;
display: flex;
flex-direction: column;
padding-right: 20rpx;
}
.cash_bottom .title{
margin-top: 10rpx;
font-size: 30rpx;
color: #000000;
}
.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: 34rpx;
}
.shui{
flex: 1;
margin-top: 20rpx;
margin-bottom: 30rpx;
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;
}
.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;
}
.moneybox{
display: flex;
}
.moneybox{
display: flex;
margin-top: 20rpx;
align-items: center;
justify-content: space-between;
}
.money .mark{
font-size: 42rpx;
font-weight: 400;
color: #333333;
}
.moneyNum{
font-size: 64rpx;
font-family: ArialMT;
color: #333333;
}
.tixian{
display: flex;
margin:0 30rpx;
color: #3CC7C0;
font-size: 32rpx;
align-items: center;
justify-content: flex-end;
}
+81
View File
@@ -0,0 +1,81 @@
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,
dateVisible: false,
select_date: '',
years: [],
static_host: api.getStaticHost()
},
onLoad(){
let now_year = (new Date()).Format("yyyy");
let begin_year = 2023;
let years = [];
for(let i=begin_year;i<=now_year;i++){
years.push({label: i+"年", value: i+""})
}
this.setData({
years: years,
select_date: now_year+""
})
},
onShow(){
let year = this.data.select_date;
year = Number(year);
this.getDoctorWithdrawalRecord(year);
},
getDoctorWithdrawalRecord(year){
this.setData({
record_list: []
})
//获取提现数据
api.getDoctorWithdrawalRecord({year: year}).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); })
},
onDatePicker() {
this.setData({ dateVisible: true });
},
onPickerChange(e) {
const { key } = e.currentTarget.dataset;
const { value } = e.detail;
console.log('picker change:', e.detail);
this.setData({
select_date: value
})
let year = this.data.select_date;
year = Number(year);
this.getDoctorWithdrawalRecord(year);
},
onColumnChange(e) {
const { key } = e.currentTarget.dataset;
const { value } = e.detail;
console.log('Column change:', e.detail);
},
onPickerCancel(e) {
const { key } = e.currentTarget.dataset;
const { value } = e.detail;
console.log('picker Cancel:', e.detail);
}
})
+11
View File
@@ -0,0 +1,11 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"van-icon": "@vant/weapp/icon/index",
"van-empty": "@vant/weapp/empty/index",
"van-image": "@vant/weapp/image/index",
"t-picker": "tdesign-miniprogram/picker/picker",
"t-picker-item": "tdesign-miniprogram/picker-item/picker-item"
}
}
+55
View File
@@ -0,0 +1,55 @@
<!-- 提现记录 -->
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<wxs src="../../../../filters/filter.wxs" module="moduleFilter"></wxs>
<view class="container">
<view class="top">
<view class="top_txt" bindtap="onDatePicker">
<view class="month">{{select_date}}年<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_content">
<view class="namebox">
<view class="data_item_top_icon">
<van-image custom-style="" src="{{static_host}}/applet/doctor/static/images/yishi/bankcard/js_icon.png" fit="heightFix" height="50rpx" aria-label="role" />
</view>
<view class="name">{{item.account_name}}<text style="margin-left:20rpx;font-size: 28rpx;color:#999;">(尾号{{item.bank_card_code_four}})</text></view>
</view>
<view class="status_box">
<!-- 审核状态(1:审核中 2:审核通过 3:审核未通过) -->
<view class="status {{item.examine_status==1?'paying':item.examine_status==2?'paysuccess':item.examine_status==3?'payfail':''}}">{{item.examine_status==1?'结算中':item.examine_status==2?'结算成功':item.examine_status==3?'结算失败':'未知'}}</view>
</view>
</view>
<view class="data_item_top_num">
<view class="date">{{moduleFilter.transforDay(item.created_at,"noyear")}}</view>
<view class="jine"><text class="jinename">实际到账金额:</text>¥{{item.actual_withdrawal_amount}}</view>
</view>
</view>
<view class="data_item_bottom">个人所得税:¥{{item.income_tax}}</view>
</view>
<van-empty description="暂无数据" wx:if="{{record_list.length == 0}}" />
</view>
<t-picker
visible="{{dateVisible}}"
value="{{[select_date]}}"
data-key="date"
title="选择年份"
cancelBtn="取消"
confirmBtn="确认"
bindchange="onPickerChange"
bindpick="onColumnChange"
bindcancel="onPickerCancel"
>
<t-picker-item options="{{years}}" />
</t-picker>
</view>
+122
View File
@@ -0,0 +1,122 @@
page{
background-color: #F4F4F4;
}
.container{
width: 100vw;
}
.top{
width: 92vw;
margin: 20rpx 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: 20rpx;
background-color: #ffffff;
border-radius: 20rpx;
padding: 30rpx 0 0 0;
}
.data_item_top{
margin:0 30rpx;
border-bottom: 1px solid #E7E7E7;
}
.data_item_top_icon{
text-align: center;
}
.data_item_top_content{
justify-content: space-between;
display: flex;
}
.name{
margin-left: 10rpx;
font-size: 32rpx;
color: #333333;
}
.date{
font-size: 28rpx;
display: flex;
margin-left: 28rpx;
color: #999999;
white-space: nowrap;
}
.data_item_top_num{
justify-content: space-between;
display: flex;
align-items: center;
margin:0 30rpx 25rpx;
text-align: center;
}
.jinename{
font-size: 30rpx;
font-weight: 400;
color: #666666;
}
.namebox{
display: flex;
}
.jine{
display: flex;
align-items: center;
color: #FF0000;
font-size: 34rpx;
}
.status_box{
display: flex;
justify-content: center;
}
.status{
width: 125rpx;
height: 50rpx;
background: #FFF2E8;
border-radius: 10rpx;
margin-bottom: 20rpx;
font-size: 24rpx;
font-weight: 400;
display: flex;
align-items: center;
justify-content: center;
color: #FFFFFF;
}
.status.paying{
background: #FFF2E8;
color: #FA541C;
}
.status.paysuccess{
background: #E2FFFE;
color: #3CC7C0;
}
.status.payfail{
background-color: #C5C5C5;
color: #FFFFFF;
}
.data_item_bottom{
padding:20rpx 30rpx 26rpx;
display: flex;
align-items: center;
justify-content: flex-end;
margin-right: 20rpx;
color: #666;
font-size: 28rpx;
}
.t-picker__confirm{
color: #3CC7C0 !important;
}
+72
View File
@@ -0,0 +1,72 @@
import { API } from './../../../utils/network/api'
const api = new API()
const app = getApp()
Page({
data: {
title: '',
height: app.globalData.height,
order_inquiry_id: "",
from:'',
baseInfo: {}
},
onLoad(option) {
// console.log("chat onload", option);
let order_inquiry_id = option.order_inquiry_id;
let from=option.from;
this.setData({
order_inquiry_id: order_inquiry_id,
from:from?from:''
})
this.getInquiryMessageBasic();
},
onUnload() {
// console.log("chat onUnload");
},
onShow(){
// console.log("chat onShow");
// console.log("app.globalData.scene from chat: ", app.globalData.scene);
},
$onMessageReceived(value) {
const message = value.data[0];
// console.log("message from chat: ",message)
},
initChat(){
let _this = this;
let count = 0;
let interval = setInterval(() => {
// console.log("chat init count: ", count);
// console.log("app.globalData.chat_sdk_ready: ", app.globalData.chat_sdk_ready);
if(app.globalData.chat_sdk_ready){
const TUIChat = _this.selectComponent('#TUIChat');
TUIChat.init();
// wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.MESSAGE_RECEIVED, _this.$onMessageReceived, _this);
clearInterval(interval);
}
count = count + 1;
if(count > 5){//如果尝试5次不成功就去主动调用IM初始化
app.imInit();
count = 0;
}
}, 1000);
},
//获取问诊订单消息内页基础数据
getInquiryMessageBasic() {
// console.log("order_inquiry_id: ", this.data.order_inquiry_id);
api.getInquiryMessageBasic({order_inquiry_id: this.data.order_inquiry_id}).then(response => {
// console.log(response);
this.setData({
baseInfo: response.data
})
let promise=wx.$TUIKit.getUserProfile({
userIDList: [response.data.patient_user_id]
});
promise.then(function(imResponse) {
wx.setStorageSync('patient_avatar',imResponse.data[0].avatar);
}).catch(function(imError) {
console.warn('getUserProfile error:', imError); // 获取其他用户资料失败的相关信息
});
}).then(res => {
this.initChat();
}).catch(errors => {console.error(errors);})
},
})
+7
View File
@@ -0,0 +1,7 @@
{
"usingComponents": {
},
"navigationStyle": "custom",
"disableScroll":true
}
+5
View File
@@ -0,0 +1,5 @@
<!-- 一对一聊天 不带会话列表 -->
<view>
<TUIChat id="TUIChat" currentConversationID="C2C{{baseInfo.patient_user_id}}" inquiry_type="{{baseInfo.inquiry_type}}" order_inquiry_id="{{order_inquiry_id}}" baseInfo="{{baseInfo}}"
hasCallKit="{{ true }}" from="{{from}}" bind:handleCall="handleCall"></TUIChat>
</view>
+5
View File
@@ -0,0 +1,5 @@
.container{
background-color: #F4F4F4;
width: 100vw;
height: 100vh;
}
+24
View File
@@ -0,0 +1,24 @@
// index.js
const app = getApp()
Page({
data: {
title: '患者姓名',
height: app.globalData.height,
},
onLoad() {
console.log("onLoad chat_session")
},
onUnload() {
},
onShow(){
let _this = this;
let interval = setInterval(() => {
if(app.globalData.chat_sdk_ready){
const TUIKit = _this.selectComponent('#TUIKit');
TUIKit.init();
clearInterval(interval);
}
}, 100);
}
})
+6
View File
@@ -0,0 +1,6 @@
{
"usingComponents": {
"TUIKit": "../../../../TUIKit/index"
},
"navigationStyle": "custom"
}
+4
View File
@@ -0,0 +1,4 @@
<!-- 最近回话列表 -->
<view>
<TUIKit config="{{config}}" id="TUIKit"></TUIKit>
</view>
+8
View File
@@ -0,0 +1,8 @@
.container{
background-color: #F4F4F4;
width: 100vw;
height: 100vh;
}
.top{
}
+119
View File
@@ -0,0 +1,119 @@
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_1: [],
chufang_list_2: [],
current_page: 0,
total: 0,
per_page: 0,
last_page: 0,
},
onLoad(options){
console.log(options.status)
if(options.status){
this.setData({
pharmacist_audit_status:options.status,
prescription_status:options.status
})
}
},
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.pharmacist_audit_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);})
},
go(e){
let url = e.currentTarget.dataset.url;
//console.log(url);
app.go(url);
},
handlegetLastInquiry(patient_id,doctor_id,order_inquiry_id){
api.getLastInquiry({
patient_id:patient_id,
doctor_id:doctor_id
}).then(data=>{
let result=data.data;
let url='';
if(result){
url = "/TUIChatService/pages/index?order_inquiry_id="+result+"&from=prescription";
}else{
url = "/TUIChatService/pages/index?order_inquiry_id="+order_inquiry_id+"&from=prescription";
}
app.go(url);
})
},
gochat(e){
let {order_inquiry_id,patient_id,doctor_id} = e.currentTarget.dataset;
this.handlegetLastInquiry(patient_id,doctor_id,order_inquiry_id);
}
})
+9
View File
@@ -0,0 +1,9 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"t-tabs": "tdesign-miniprogram/tabs/tabs",
"t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel",
"van-empty": "@vant/weapp/empty/index"
}
}
+162
View File
@@ -0,0 +1,162 @@
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container">
<view class="tabs">
<t-tabs
value="{{prescription_status}}"
bind:change="onTabsChange"
bind:click="onTabsClick"
bind:scroll="onStickyScroll"
t-class="custom-tabs"
>
<t-tab-panel label="审核中" name ="0" 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="namebox">
<view class="item_top_name">{{item.patient_name}}</view>
<view class="item_top_sex">{{item.patient_sex==1?'男':'女'}} | {{item.patient_age}}岁</view>
</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" wx:if="{{item.diagnosis_date}}">
<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" bindtap="gochat" data-order_inquiry_id="{{item.order_inquiry_id}}" data-doctor_id="{{item.doctor_id}}" data-patient_id="{{item.patient_id}}">
<view class="item_bottom_btn" >问诊记录</view>
</view>
</view>
<van-empty description="暂无数据" wx:if="{{chufang_list_0.length == 0}}" />
</view>
</t-tab-panel>
<!-- 审核通过面板 -->
<t-tab-panel label="审核通过" value="1" name ="1" style="overflow: scroll;">
<view class="item_list" style="overflow: scroll;">
<view class="item" wx:for="{{chufang_list_1}}">
<!-- 头部 -->
<view class="item_top">
<view class="namebox">
<view class="item_top_name">{{item.patient_name}}</view>
<view class="item_top_sex">{{item.patient_sex==1?'男':'女'}} | {{item.patient_age}}岁</view>
</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" wx:if="{{item.diagnosis_date}}">
<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" bindtap="gochat" data-order_inquiry_id="{{item.order_inquiry_id}}" data-doctor_id="{{item.doctor_id}}" data-patient_id="{{item.patient_id}}">
<view class="item_bottom_btn">问诊记录</view>
</view>
</view>
<van-empty description="暂无数据" wx:if="{{chufang_list_1.length == 0}}" />
</view>
</t-tab-panel>
<!-- 驳回面板 -->
<t-tab-panel label="驳回" value="2" name ="2" style="overflow: scroll;">
<view class="item_list" style="overflow: scroll;">
<view class="item" wx:for="{{chufang_list_2}}">
<!-- 头部 -->
<view class="item_top">
<view class="namebox">
<view class="item_top_name">{{item.patient_name}}</view>
<view class="item_top_sex">{{item.patient_sex==1?'男':'女'}} | {{item.patient_age}}岁</view>
</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" wx:if="{{item.diagnosis_date}}">
<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.pharmacist_fail_reason}}</view>
</view>
</view>
<!-- 底部按钮 -->
<view class="item_bottom">
<view class="item_bottom_btn" bindtap="gochat" data-order_inquiry_id="{{item.order_inquiry_id}}" data-doctor_id="{{item.doctor_id}}" data-patient_id="{{item.patient_id}}">问诊记录</view>
<view class="item_bottom_btn item_bottom_btn_repeat" bindtap="go" data-url="/user/pages/yishi/onlinechufang/index?order_inquiry_id={{item.order_inquiry_id}}&order_prescription_id={{item.order_prescription_id}}">
重开处方
</view>
</view>
</view>
</view>
<van-empty description="暂无数据" wx:if="{{chufang_list_2.length == 0}}" />
</t-tab-panel>
</t-tabs>
</view>
</view>
+111
View File
@@ -0,0 +1,111 @@
page{
background-color: #F6F6F6;
}
.container{
width: 100vw;
}
.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;
}
.namebox{
display: flex;
}
.item_top{
position: relative;
height: 100rpx;
display: flex;
justify-content:space-between;
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{
color: #3CC7C0;
font-size: 34rpx;
}
.item_top_sex{
margin-left: 30rpx;
font-size: 34rpx;
color: #666;
}
.item_top_status_box{
}
.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;
word-break: break-all;
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%);
}

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