分包医生

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
+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%);
}
+745
View File
@@ -0,0 +1,745 @@
// Pages/yishi/identity/index.js
import { API } from '../../../../utils/network/api'
import { FileUtil } from '../../../../utils/fileutil'
const api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '医师身份认证', //导航栏 中间的标题
},
navHeight: 0,
stateHeight: 0,
height: app.globalData.height,
//选项卡
stickyProps: {
zIndex: 9,
offsetTop: (app.globalData.height * 2)
},
selected_tab: 0,
panel_2_disabled: true,
next_btn_disabled: false,
next_btn_txt: "下一步",
realname: "",
idcard: "",
page_meta_show: false
},
getMenuButtonBound() {
let stateHeight = 0; // 接收状态栏高度
const navHeight = wx.getMenuButtonBoundingClientRect().height; // 获取胶囊高度
let top = 0;
wx.getSystemInfo({
success(res) {
stateHeight = res.statusBarHeight;
},
});
top = wx.getMenuButtonBoundingClientRect().top - stateHeight; // 获取top值
console.log('navHeight', navHeight);
console.log('top', top);
this.setData({
// navHeight: navHeight + top * 2, // 导航栏高度
navHeight, // 导航栏高度
stateHeight: stateHeight + top, // 状态栏高度
});
this.setData({
"stickyProps.offsetTop": this.data.stateHeight + this.data.navHeight + 10
})
},
onLoad(options){
let selected_tab = options.selected_tab;
if(selected_tab){
this.setData({
selected_tab: selected_tab
})
}
let _this = this;
//获取实名认证信息
api.getDoctorAuthReal().then(response => {
console.log(response);
if(response.data.length == 0){
return;
}
this.setData({
realname:response.data.card_name_mask,
idcard:response.data.card_num_mask,
next_btn_txt: "已认证,不可修改",
next_btn_disabled: true,
panel_2_disabled: false,
});
}).catch(errors => {
console.error(errors);
})
//获得医师身份认证
// api.getDoctorAuthIden().then(response => {
// console.log("getDoctorAuthIden: ",response);
// this.setData({
// is_avatar: true,
// doctorauthiden_data_ready: true,
// textarea_jianjie: response.data.brief_introduction,
// textarea_shanchang: response.data.be_good_at,
// custom_keshi: response.data.department_custom_name,
// office_phone: response.data.department_custom_mobile,
// select_keshi_id: response.data.department_custom_id,
// select_zhicheng_id: response.data.doctor_title,
// select_province_id: response.data.hospital.province_id,
// select_city_id: response.data.hospital.city_id,
// select_county_id: response.data.hospital.county_id,
// select_yiyuan_id: response.data.hospital.hospital_id,
// hospital: response.data.hospital,
// iden_auth_status: response.data.iden_auth_status,
// });
// let iden_auth_status = response.data.iden_auth_status;
// let iden_auth_status_txt = iden_auth_status == 0?'请完善资料后提交':iden_auth_status == 1?'认证通过': iden_auth_status==2?'资料已提交,审核中':iden_auth_status==3?'认证失败':'未认证';
// let iden_auth_disabled = iden_auth_status == 0?false:iden_auth_status == 1?false: iden_auth_status==2?true:iden_auth_status==3?false:true;
// this.setData({
// iden_auth_status_txt: iden_auth_status_txt,
// iden_auth_disabled: iden_auth_disabled
// })
// if(response.data.license_cert){
// let img_list = response.data.license_cert.map(item => {
// let img = {};
// img.url = item;
// img.isImg = true;
// return img;
// })
// this.setData({
// zhiye_file_list: img_list
// })
// }
// if(response.data.qualification_cert){
// let img_list = response.data.qualification_cert.map(item => {
// let img = {};
// img.url = item;
// img.isImg = true;
// return img;
// })
// this.setData({
// zige_file_list: img_list
// })
// }
// if(response.data.work_cert){
// let img_list = response.data.work_cert.map(item => {
// let img = {};
// img.url = item;
// img.isImg = true;
// return img;
// })
// this.setData({
// zhicheng_file_list: img_list
// })
// }
// let avatar = response.data.avatar;
// if(avatar && (avatar.indexOf("http") == -1)){
// avatar = api.getStaticHost() + avatar;
// }
// this.setData({
// "avatar": avatar
// })
// }).catch(errors => {console.error(errors);})
// //加载省份列表
// api.getAreaProvince().then(response => {
// console.log(response);
// const list = _this.formatArea(response, -1, true);
// _this.setData({
// areaprovince_data_ready: true,
// areaList: list
// })
// }).catch(errors => {console.error(errors); })
// //加载科室列表
// api.getBasicDepartment().then(response => {
// console.log(response);
// const list = _this.formatKeShi(response);
// _this.setData({
// basicdepartment_data_ready: true,
// keshi_columns: list
// })
// }).catch(errors => {console.error(errors); })
// //加载专长列表
// api.getDoctorExpertise().then(response => {
// console.log(response);
// _this.setData({
// zhuanchang_columns: response.data
// })
// }).catch(errors => {console.error(errors); })
// let keshi_huixian = false;
// let zhicheng_huixian = false;
// let area_huixian = false;
// //执行回显
// let data_replay = setInterval(() => {
// console.log("执行回显。。。")
// //回显科室
// if(_this.data.doctorauthiden_data_ready && _this.data.basicdepartment_data_ready){
// let index = _this.data.keshi_columns.findIndex(item => {
// return item.value == _this.data.select_keshi_id
// })
// _this.setData({
// select_keshi_index: index,
// keshi_note: _this.data.keshi_columns[index].text
// })
// keshi_huixian = true;
// }
// //回显职称
// if(_this.data.doctorauthiden_data_ready){
// let index = _this.data.zhicheng_columns.findIndex(item => {
// return item.value == _this.data.select_zhicheng_id
// })
// _this.setData({
// select_zhicheng_index: index,
// zhicheng_note: _this.data.zhicheng_columns[index].text
// })
// zhicheng_huixian = true;
// }
// //回显省市区
// if(_this.data.doctorauthiden_data_ready && _this.data.areaprovince_data_ready){
// let select_province_id = _this.data.select_province_id;
// let select_city_id = _this.data.select_city_id;
// let select_county_id = _this.data.select_county_id;
// let select_yiyuan_id = _this.data.select_yiyuan_id;
// api.getAreaCity({area_id: select_province_id}).then(response => {// 请求市区列表
// let _index = _this.data.areaList.findIndex(item => item.value == select_province_id);
// const list = _this.formatArea(response, _index, true);
// const _city = "areaList[" + _index + "].children";
// console.log("_city: ", _city);
// _this.setData({
// [_city]: list,
// })
// }).then(e =>{
// api.getAreaCounty({area_id: select_city_id}).then(response => {// 请求市区列表
// let _index = _this.data.areaList.findIndex(item => item.value == select_province_id);
// console.log("getAreaCounty: ", _index)
// let c_index = _this.data.areaList[_index].children.findIndex(item => item.value == select_city_id);
// console.log("children: ", _index)
// let p_index = _this.data.areaList[_index].children[c_index].index;
// const list = _this.formatArea(response, _index, false);
// const _county = "areaList[" + _index + "].children[" +p_index+ "].children";
// _this.setData({
// [_county]: list,
// })
// }).then(e => {
// let params = {
// province_id: _this.data.select_province_id,
// city_id: _this.data.select_city_id,
// county_id: _this.data.select_county_id,
// }
// api.getBasicHospital(params).then(response => {// 请求医院列表
// _this.setData({
// yiyuan_columns: _this.formatYiYuan(response),
// city_note: _this.data.hospital.province + "/" + _this.data.hospital.city + "/" + _this.data.hospital.county
// })
// setTimeout(() => {
// let index = _this.data.yiyuan_columns.findIndex(item => {
// return item.value == _this.data.select_yiyuan_id
// })
// _this.setData({
// select_yiyuan_index: index,
// yiyuan_note: _this.data.yiyuan_columns[index].text
// })
// }, 100);
// }).catch(errors => {console.error(errors); })
// }).catch(errors => {console.error(errors); })
// }).catch(errors => {console.error(errors); })
// area_huixian = true;
// }
// //都回显成功后,清除计时器
// if(keshi_huixian && zhicheng_huixian && area_huixian){
// clearInterval(data_replay);
// }
// console.log("计时器")
// }, 100);
},
onShow(){
console.log("onshow()....");
this.getMenuButtonBound();
},
doUploadFile(event) {
console.log("index douploadFIle: ", event);
const scene = event.currentTarget.dataset.scene;
const field_name = event.currentTarget.dataset.field_name;
const file_multiple = event.currentTarget.dataset.file_multiple;//是否为多张图
console.log("scene: ", scene);
console.log("field_name: ", field_name);
console.log("file_multiple: ", file_multiple);
let _this = this;
api.getOssSign({user_type:2,scene:scene}).then(response => {
console.log(response);
const { file } = event.detail;
console.log("file: ", file);
const filename = FileUtil.getFileName(file);
const host = response.data.host;
const signature = response.data.signature;
const ossAccessKeyId = response.data.accessid;
const policy = response.data.policy;
const key = response.data.dir+filename;
const filePath = file.url; // 待上传文件的文件路径。
wx.uploadFile({
url: host, // 开发者服务器的URL。
filePath: filePath,
name: 'file', // 必须填file。
formData: {
key,
policy,
OSSAccessKeyId: ossAccessKeyId,
signature,
},
success: (res) => {
console.log("upload: ", res);
if (res.statusCode === 204) {
if(scene == 1){
this.setData({
is_avatar: true
})
}
wx.showToast({title: '上传成功'})
if(file_multiple == "true"){//多张图
let img = {}
img.url = host+"/"+key;
img.isImg = true;
let img_list = _this.data[field_name];
console.log("img_list: ", img_list);
img_list.push(img);
console.log("img_list: ", img_list);
this.setData({
[field_name]: img_list
});
}else{
this.setData({[field_name]: host+"/"+key});
}
}
},
fail: err => {
console.log(err);
}
});
}).catch(errors => {
console.error(errors);
})
},
doDeleteFile(event){
console.log(event);
let url = event.detail.file.url;
let file_name = event.currentTarget.dataset.field_name;
let img_list = this.data[file_name].filter(item => item.url != url);
this.setData({
[file_name]: img_list
})
},
//新增实名认证信息
postDoctorAuthReal(){
let _this = this;
let realname = this.data.realname.trim();
const idcard = this.data.idcard.trim();
console.log("realname: ",realname);
console.log("idcard: ", idcard);
realname = realname.replace(/•/g,"·");
var realname_reg= /^(([a-zA-Z+\.?\·?a-zA-Z+]{2,30}$)|([\u4e00-\u9fa5+\·?\u4e00-\u9fa5+]{2,30}$))/;
var idcard_reg=/^(^[1-9]\d{5}[1-9]\d{3}(((0[2])([0|1|2][0-8])|(([0-1][1|4|6|9])([0|1|2][0-9]|[3][0]))|(((0[1|3|5|7|8])|(1[0|2]))(([0|1|2]\d)|3[0-1]))))((\d{4})|\d{3}[Xx])$)$/;
//判断用户输入的真实姓名是否为空
if(realname.length == 0){
wx.showToast({title: '姓名不能为空', icon:'error'})
return false;
}else if(!realname_reg.test(realname)){//检测姓名的格式是否匹配
wx.showToast({title: '姓名输入有误', icon:'error'})
return false;
}
//判断用户输入的身份证号是否为空
if(idcard.length == 0){
wx.showToast({title: '身份证不能为空', icon:'error'})
return false;
}else if(!idcard_reg.test(idcard)){//检测姓名的格式是否匹配
wx.showToast({title: '身份证输入有误', icon:'error'})
return false;
}
var params = {
card_name: realname,
card_num: idcard,
}
api.postDoctorAuthReal(params).then(response => {
console.log(response);
wx.showToast({
title: '认证成功',
icon: 'none',
duration: 2000
})
_this.setData({
panel_2_disabled: false,
selected_tab: 1,
next_btn_disabled: true,
next_btn_txt: '已认证,不可修改'
})
}).catch(errors => {
console.error(errors);
})
},
onTabsChange(event) {
console.log(`Change tab, tab-panel value is ${event.detail.value}.`);
this.setData({
selected_tab: event.detail.value
})
},
onTabsClick(event) {
console.log(`Click tab, tab-panel value is ${event.detail.value}.`);
},
onStickyScroll(event) {
// console.log(`Click tab, tab-panel value is ${event.detail.value}.`);
},
// onCityShow(e) {
// console.log("onCityShow");
// this.setData({ city_show: true });
// },
// onChangeCity(e) {
// this.setData({
// select_county_id: "",
// select_yiyuan_id: ""
// })
// console.log("onChangeCity");
// const { selectedOptions } = e.detail;
// console.log(e.detail)
// let area = selectedOptions[selectedOptions.length-1];
// if(!area){
// area = selectedOptions[selectedOptions.length-2];
// }
// const type = area.type;
// const value = area.value;
// const index = area.index;
// const p_index = area.p_index;
// if(type == 2){//省份
// api.getAreaCity({area_id: value}).then(response => {// 请求市区列表
// const list = this.formatArea(response, index, true);
// const _city = "areaList[" + index + "].children";
// this.setData({
// [_city]: list,
// select_province_id: value
// })
// }).catch(errors => {console.error(errors); })
// }
// if(type == 3){//市区
// api.getAreaCounty({area_id: value}).then(response => {// 请求市区列表
// const list = this.formatArea(response, index, false);
// const _county = "areaList[" + p_index + "].children[" +index+ "].children";
// this.setData({
// [_county]: list,
// select_city_id: value
// })
// }).catch(errors => {console.error(errors); })
// }
// console.log("type: " + type);
// if(type == 4){//区县
// this.setData({
// select_county_id: value,
// });
// let params = {
// province_id: this.data.select_province_id,
// city_id: this.data.select_city_id,
// county_id: this.data.select_county_id,
// }
// api.getBasicHospital(params).then(response => {// 请求医院列表】
// this.setData({
// yiyuan_columns: this.formatYiYuan(response),
// city_show: false,
// city_note: this.getCityNote(selectedOptions),
// yiyuan_show: true
// })
// }).catch(errors => {console.error(errors); })
// }else{
// this.setData({
// city_show: true
// })
// }
// },
// getCityNote(selectedOptions){
// let txt = [];
// selectedOptions.forEach(item => {
// if(item){
// txt.push(item.label);
// }
// })
// return txt.join("/");
// },
// formatArea(response, p_index, has_children){
// var list = []
// let index = 0;
// response.data.forEach(data => {
// let area = {};
// area.index = index++;
// area.p_index = p_index;
// area.type = data.area_type;
// area.label = data.area_name;
// area.value = data.area_id;
// if(has_children){
// area.children = [];
// }
// list.push(area)
// });
// return list;
// },
// formatYiYuan(response){
// let list = [];
// response.data.forEach(data => {
// let hospital = {};
// hospital.text = data.hospital_name;
// hospital.value = data.hospital_id;
// list.push(hospital)
// });
// return list;
// },
// formatKeShi(response){
// let list = [];
// response.data.forEach(item => {
// let data = {};
// data.text = item.department_custom_name;
// data.value = item.department_custom_id;
// list.push(data)
// });
// return list;
// },
// formatZhuanChang(response){
// let list = [];
// response.data.forEach(item => {
// let data = {};
// data.text = item.expertise_name;
// data.value = item.expertise_id;
// list.push(data)
// });
// return list;
// },
// onYiYuanShow(e) {
// console.log("onYiYuanShow");
// this.setData({ yiyuan_show: true });
// },
// onYiYuanClose(e) {
// console.log("onYiYuanClose");
// this.setData({ yiyuan_show: false });
// },
// onYiYuanCancel(event) {
// console.log("onYiYuanCancel");
// const { picker, value, index } = event.detail;
// Toast(`当前值:${value}, 当前索引:${index}`);
// this.setData({
// yiyuan_show: false
// });
// },
// onYiYuanConfirm(event) {
// console.log("onYiYuanConfirm");
// const { picker, value, index } = event.detail;
// console.log(event.detail);
// this.setData({
// yiyuan_show: false,
// select_yiyuan_id: `${value.value}`,
// yiyuan_note: `${value.text}`
// });
// },
// onYiYuanChange(event) {
// console.log("onYiYuanChange");
// const { picker, value, index } = event.detail;
// Toast(`当前值:${value}, 当前索引:${index}`);
// },
// onKeshiShow(e) {
// console.log("onKeshiShow");
// this.setData({ keshi_show: true });
// },
// onKeshiCancel(event) {
// console.log("onKeshiCancel");
// const { picker, value, index } = event.detail;
// Toast(`当前值:${value}, 当前索引:${index}`);
// this.setData({ keshi_show: false });
// },
// onKeshiConfirm(event) {
// console.log("onKeshiConfirm");
// const { picker, value, index } = event.detail;
// Toast(`当前值:${value}, 当前索引:${index}`);
// this.setData({
// keshi_show: false,
// select_keshi_id: `${value.value}`,
// keshi_note: `${value.text}`,
// });
// },
// onKeshiChange(event) {
// console.log("onKeshiChange");
// },
// onKeshiClose(e) {
// console.log("onKeshiClose");
// this.setData({ keshi_show: false });
// },
// onZhiChengShow(e) {
// console.log("onKeshiShow");
// this.setData({ zhicheng_show: true });
// },
// onZhiChengCancel(event) {
// console.log("onKeshiCancel");
// const { picker, value, index } = event.detail;
// Toast(`当前值:${value}, 当前索引:${index}`);
// this.setData({ zhicheng_show: false });
// },
// onZhiChengConfirm(event) {
// console.log("onZhiChengConfirm");
// const { picker, value, index } = event.detail;
// Toast(`当前值:${value}, 当前索引:${index}`);
// this.setData({
// zhicheng_show: false,
// select_zhicheng_id: `${value.value}`,
// zhicheng_note: `${value.text}`,
// });
// },
// onZhiChengChange(event) {
// console.log("onZhiChengChange");
// },
// onZhiChengClose(e) {
// console.log("onZhiChengClose");
// this.setData({ zhicheng_show: false });
// },
// onZhuanChangShow(){
// this.setData({ zhuanchang_show: true });
// },
// onZhuanChangVisibleChange(e) {
// this.setData({
// zhuanchang_show: e.detail.visible,
// });
// },
// onshowJianJieNote(e){
// e.detail // 自定义组件触发事件时提供的 detail 对象
// console.log("onshowJianJieNote");
// },
// onshowShanChangNote(e){
// e.detail // 自定义组件触发事件时提供的 detail 对象
// console.log("onshowShanChangNote");
// },
// onshowZhiYeNote(e){
// e.detail // 自定义组件触发事件时提供的 detail 对象
// console.log("onshowZhiYeNote");
// this.setData({ zhiye_show: true });
// },
// onZhiYeClose(){
// console.log("onZhiYeClose");
// this.setData({ zhiye_show: false });
// },
// onshowZiGeNote(e){
// e.detail // 自定义组件触发事件时提供的 detail 对象
// console.log("onshowZiGeNote");
// this.setData({ zige_show: true });
// },
// onZiGeClose(){
// console.log("onZhiYeClose");
// this.setData({ zige_show: false });
// },
// onshowZhiChengImgNote(e){
// e.detail // 自定义组件触发事件时提供的 detail 对象
// console.log("onshowZhiChengNote");
// this.setData({ zhicheng_img_show: true });
// },
// onZhiChengImgClose(){
// console.log("onZhiChengClose");
// this.setData({ zhicheng_img_show: false });
// },
// getTextAreaVal(e){
// console.log("myindex: ", e);
// let textarea_name = e.currentTarget.dataset.textarea_name;
// this.setData({
// [textarea_name]: e.detail.value
// })
// },
// select_zhuanchang(e){
// console.log(e);
// let expertise_name = e.currentTarget.dataset.expertise_name;
// let expertise_id = e.currentTarget.dataset.expertise_id;
// let is_selected = e.currentTarget.dataset.is_selected;
// let index = e.currentTarget.dataset.index;
// let data = "zhuanchang_columns["+index+"].is_selected";
// this.setData({[data]: is_selected==1?0:1})
// },
// zhuanchangConfirm(e){
// this.setData({ zhuanchang_show: false });
// },
// zhuanchangConcle(e){
// this.setData({ zhuanchang_show: false });
// },
// addDoctorAuthIden(){
// let params = {};
// if(!this.data.is_avatar){wx.showToast({title: '请上传头像',icon: "error"});return}
// params.avatar = this.data.avatar;
// if(!this.data.select_county_id){wx.showToast({title: '请选择城市',icon: "error"});return}
// if(!this.data.select_yiyuan_id){wx.showToast({title: '请选择医院',icon: "error"});return}
// params.hospital_id = this.data.select_yiyuan_id;//医院id
// if(!this.data.select_keshi_id){wx.showToast({title: '请选择科室',icon: "error"});return}
// params.department_custom_id = this.data.select_keshi_id;//科室id
// if(!this.data.custom_keshi){wx.showToast({title: '请输入科室',icon: "error"});return}
// params.department_custom_name = this.data.custom_keshi;//自定义科室名称
// if(!this.data.office_phone){wx.showToast({title: '请输入科室电话',icon: "error"});return}
// params.department_custom_mobile = this.data.office_phone;//科室电话
// params.doctor_expertise = this.data.zhuanchang_columns.filter(e => e.is_selected == 1 ).map(e => e.expertise_id);//专长
// if(params.doctor_expertise.length == 0){wx.showToast({title: '请选择专长',icon: "error"});return}
// if(!this.data.select_zhicheng_id){wx.showToast({title: '请选择职称',icon: "error"});return}
// params.doctor_title = this.data.select_zhicheng_id;//职称id
// if(!this.data.textarea_jianjie){wx.showToast({title: '请输入简介',icon: "error"});return}
// params.brief_introduction = this.data.textarea_jianjie;//简介
// if(!this.data.textarea_shanchang){wx.showToast({title: '请输入擅长',icon: "error"});return}
// params.be_good_at = this.data.textarea_shanchang;//擅长
// if(this.data.zhiye_file_list.length == 0){wx.showToast({title: '请上传医师执业证',icon: "error"});return}
// params.license_cert = this.data.zhiye_file_list.map(e => e.url);//医师执业证
// if(this.data.zige_file_list.length == 0){wx.showToast({title: '请上传医师资格证',icon: "error"});return}
// params.qualification_cert = this.data.zige_file_list.map(e => e.url);//医生资格证
// if(this.data.zhicheng_file_list.length == 0){wx.showToast({title: '请上传职称证',icon: "error"});return}
// params.work_cert = this.data.zhicheng_file_list.map(e => e.url);//工作证,职称证
// console.log(params);
// api.postDoctorAuthIden(params).then(response => {
// console.log(response);
// wx.showToast({
// title: '提交成功',
// icon: "success"
// })
// this.setData({
// iden_auth_status_txt: "审核中",
// iden_auth_disabled: true
// })
// }).catch(errors => {console.error(errors);})
// }
showPageMeta(){
console.log("showPageMeta from indenity");
this.setData({
page_meta_show: true
})
},
hidePageMeta(){
console.log("hidePageMeta from indenity");
this.setData({
page_meta_show: false
})
}
})
+14
View File
@@ -0,0 +1,14 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"myprofile": "../../../commpents/myprofile/index",
"t-tabs": "tdesign-miniprogram/tabs/tabs",
"t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel",
"t-cell": "tdesign-miniprogram/cell/cell",
"t-icon": "tdesign-miniprogram/icon/icon",
"t-button": "tdesign-miniprogram/button/button",
"van-field": "@vant/weapp/field/index",
"van-button": "@vant/weapp/button/index"
}
}
+87
View File
@@ -0,0 +1,87 @@
<!-- <nav-bar navbar-data='{{navbarData}}' style="margin-bottom: {{height*2 + 20}}px;"></nav-bar> -->
<!-- 设置滚动穿透 -->
<page-meta page-style="{{ page_meta_show ? 'overflow: hidden;' : '' }}" />
<te-nav-bar navbar-data='{{navbarData}}'></te-nav-bar>
<view class="container">
<view class="tabs">
<t-tabs
defaultValue="{{ selected_tab }}"
value="{{selected_tab}}"
sticky="{{true}}"
stickyProps="{{stickyProps}}"
bind:change="onTabsChange"
bind:click="onTabsClick"
bind:scroll="onStickyScroll"
t-class="custom-tabs"
theme="line"
custom-style="font-size: 32rpx"
swipeable="{{false}}"
>
<!-- 实名认证tab -->
<t-tab-panel label="实名认证" value="0" style="{{tabPanelstyle}}" catchtouchmove='true'>
<van-cell-group>
<van-field
model:value="{{ realname }}"
placeholder="请填写真实姓名,提交后不能修改"
placeholder-style="font-size:28rpx; color: #C5C8CB;"
input-align="right"
clearable
type="text"
size="large"
custom-style="font-size:16px;"
disabled="{{next_btn_disabled}}"
>
<text slot="label">真实姓名 <text style="color: #e34d59;">*</text> </text>
</van-field>
<van-field
model:value="{{ idcard }}"
type="idcard"
placeholder="请填写身份证号"
placeholder-style="font-size:28rpx; color: #C5C8CB;"
input-align="right"
clearable
size="large"
custom-style="font-size:16px;"
disabled="{{next_btn_disabled}}"
>
<text slot="label">身份证号 <text style="color: #e34d59;">*</text> </text>
</van-field>
</van-cell-group>
<!-- <t-cell title="真实姓名" hover required arrow note="请填写真实姓名,提交后不能修改"/> -->
<!-- <t-cell title="身份证号" hover required arrow note="请填写身份证号"/> -->
<view class="bottom_note">
说明:因互联网医院诊疗实名制法规要求,为顺利完成医师身份认证,请您如实提供姓名及身份证等身份信息
</view>
<view class="bottom_next">
<van-button disabled="{{next_btn_disabled}}"
color="#3CC7C0" bind:click="postDoctorAuthReal"
custom-style="border-radius: 20rpx;font-size: 30rpx;"
type="primary" block>{{next_btn_txt}}</van-button>
</view>
</t-tab-panel>
<!-- 医师身份认证 -->
<t-tab-panel label="医师身份认证" value="1" disabled style="{{tabPanelstyle}}" wx:if="{{panel_2_disabled}}">
<myprofile wx:if="{{selected_tab == 1}}"
bind:showPageMeta="showPageMeta"
bind:hidePageMeta="hidePageMeta"
/>
<view style="height: 50rpx;"></view>
</t-tab-panel>
<t-tab-panel label="医师身份认证" value="1" style="{{tabPanelstyle}}" wx:if="{{!panel_2_disabled}}">
<myprofile wx:if="{{selected_tab == 1}}"
bind:showPageMeta="showPageMeta"
bind:hidePageMeta="hidePageMeta"
/>
<view style="height: 50rpx;"></view>
</t-tab-panel>
</t-tabs>
</view>
<!-- <van-toast id="van-toast" /> -->
</view>
+214
View File
@@ -0,0 +1,214 @@
.required{
color: #e34d59;
}
.title{
font-size: 30rpx;
color: #1C2023;
}
.right{
display: flex;
color: rgba(0, 0, 0, 0.4);
font-size: 25rpx;
letter-spacing: 2rpx;
align-items: center;
}
.t-input__label{
font-size: 30rpx !important;
}
.van-field__label{
color: #000 !important;
font-size: 30rpx !important;
}
.zhuanchang{
position: relative;
padding: 32rpx;
display: flex;
justify-content: space-between;
font-size: 32rpx;
font-weight: 400;
align-items: center;
}
.zhuanchang::after {
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
right: 0;
left: 32rpx;
bottom: 0;
border-bottom: 1px solid var(--td-cell-border-color, var(--td-gray-color-3, #e7e7e7));
transform: scaleY(0.5);
left: 32rpx;
}
.zhuanchang .content{
flex: 1;
display: flex;
flex-wrap: wrap;
margin-left: 20rpx;
}
.content_item{
height: 60rpx;
line-height: 60rpx;
padding: 0rpx 20rpx;
background: #3CC7C0;
border-radius: 29rpx;
color: #fff;
margin: 20rpx 10rpx 20rpx 0;
font-size: 28rpx;
}
.t-tabs__item--active{
color: #49B9AD !important;
}
.t-tabs__track{
background-color: #49B9AD !important;
}
.t-icon-check{
color: #49B9AD !important;
}
.t-cell__note {
font-size: 25rpx !important;
letter-spacing: 2rpx;
}
.t-cell__title-text{
font-size: 16px !important;
}
.t-input__wrap--suffix-icon{
padding-left: var(--td-spacer-1, 8rpx) !important;
}
.t-tabs__content {
overflow: unset !important;
}
.bottom_note{
color: #999999;
font-size: 28rpx;
width: 95vw;
margin: 30rpx auto;
letter-spacing: 3rpx;
}
.bottom_next{
width: 95vw;
margin: 530rpx auto 0 auto;
}
.sub_button{
width: 95vw;
margin: 0 auto 30rpx auto;
}
.zhiye_popup_title{
margin-top: 16px;
font-size: 32rpx;
font-weight: 600;
letter-spacing: 5rpx;
}
.zhuanchang_box{
display: flex;
flex-wrap: wrap;
margin: 0 20rpx;
}
.zhuanchang_box_item{
background-color: #f2f2f2;
padding: 10rpx 20rpx;
border-radius: 20rpx;
color: #000;
font-size: 28rpx;
margin: 20rpx 10rpx;
}
.zhuanchang_box_item_checked{
background-color: #3cc7c0;
color: #fff;
}
.zhuanchang_block {
width: 100vw;
background: #fff;
border-top-left-radius: 16rpx;
border-top-right-radius: 16rpx;
}
.zhuanchang_wrapper {
margin: 32rpx;
display: block;
}
.zhuanchang_header {
display: flex;
align-items: center;
border-bottom: 1px solid #e7e7e7;
}
.zhuanchang_title {
flex: 1;
text-align: center;
font-weight: 600;
font-size: 36rpx;
}
.zhuanchang_btn {
font-size: 32rpx;
padding: 32rpx;
}
.zhuanchang_btn--cancel {
color: rgba(0, 0, 0, .6);
}
.zhuanchang_btn--confirm {
color: #3cc7c0;
}
/* 自定义医院搜索框样式 */
.van-search__field .van-cell{
padding: 10rpx !important;
}
.van-picker__columns {
height: 264px !important;
top: 40px !important;
}
.van-search {
top: -270px !important;
position: relative !important;
}
.van-picker__confirm{
color: #3cc7c0 !important;
}
.van-cell:after {
border-bottom: 1px solid var(--td-cell-border-color, var(--td-gray-color-3, #e7e7e7));
bottom: 0;
box-sizing: border-box;
content: " ";
pointer-events: none;
position: absolute;
width: calc(100vw - 32rpx);
transform: scaleY(.5);
transform-origin: center;
border-bottom-width: 1px;
border-bottom-style: solid;
border-bottom-color: var(--td-cell-border-color, var(--td-gray-color-3, #e7e7e7));
}
.t-cell__note,.t-class-note,.note{
font-size: 30rpx !important;
}
.van-cell {
padding: 32rpx !important;
}
.van-picker__cancel{
font-size: 32rpx !important;
}
.van-picker__confirm{
color: #3cc7c0 !important;
font-size: 32rpx !important;
}
.van-picker__title {
font-size: 34rpx !important;
}
.van-empty{
position: absolute;
width: 100%;
left: 50%;
top: 180rpx;
transform: translateX(-50%);
z-index: 9999999;
background: rgb(255, 255, 255);
}
+770
View File
@@ -0,0 +1,770 @@
// Pages/yishi/index/index.js
import { API } from '../../../../utils/network/api'
import { pxTorpx } from '../../../../utils/util'
import { requestSubscribeMessage } from '../../../../utils/requestSubscribeUtil';
const api = new API()
const app = getApp()
Page({
data: {
title: "肝胆相照互联网医院",
navHeight: 0,
stateHeight: 0,
doctor_inquiry_config:null,
info:{
user_name: "医师姓名",
not_accepted_inquiry_num: 0,
accepting_inquiry_num: 0,
info_shiming_status_txt: "未认证",
info_shiming_status: "info_shiming_status_no",
show_info_note: false,
praise_rate: "100%",
avg_response_time: 0,
number_of_fans: 0,
avatar: api.getStaticHost()+"/applet/doctor/static/images/default_photo.png",
reject_prescription_number: false,//处方管理小红点
},
static_host: api.getStaticHost(),
iden_auth_status_txt: "未认证",
multi_point_status_txt: "未认证",
shiming_status_url: "",
iden_auth_status_url: "/user/pages/yishi/identity/index",
multi_point_status_url: "/user/pages/yishi/zhiye_identity/index",
duration: 500,
interval: 5000,
swiperList: [],
banner: [],
default_dialog_show: false,//只弹框一次
dialog_visible: false,
dialog_content: "请您先完成实名认证",
dialog_url: "",
/*
case_module取值
新问诊 0
接诊中 1
多点执业认证 2
简介管理 3
在线问诊管理 4
快速问诊管理 5
义诊管理 6
处方管理 7
联系客服 8
*/
/*
case_status 取值
未实名认证和医师身份认证 0
已实名认证,未医师身份认证 1
已实名认证和医师身份认证,未绑定结算银行卡 2
已实名认证和医生身份认证,已绑定结算银行卡 3
已实名认证和医师身份认证且绑定结算银行卡,开通了在线问诊,未开通多点执业认证 4
*/
mycase: [
{
case_status: 0,
case_module: [0,1,2,3,4,5,6,7,8],
case_text: "请您先完成实名认证",
case_url: "/user/pages/yishi/identity/index"
},
{
case_status: 1,
case_module: [0,1,2,3,4,5,6,7,8],
case_text: "请您先医师身份认证",
case_url: "/user/pages/yishi/identity/index?selected_tab=1"
},
{
case_status: 2,
case_module: [0,1,2,3,4,5,6,7,8],
case_text: "请您先绑定结算银行卡",
case_url: "/user/pages/yishi/bankcard/index"
},
{
case_status: 3,
case_module: [7],
case_text: "请您先进行多点执业认证",
case_url: "/user/pages/yishi/zhiye_identity/index"
},
{
case_status: 4,
case_module: [7],
case_text: "请您先进行多点执业认证",
case_url: "/user/pages/yishi/zhiye_identity/index"
},
{
case_status: 5,
case_module: [],
case_text: "已全部通过"
},
],
contactKeFu: false,
sub_visible: false,
jiesuan_dialog_show: false,
jiesuan_dialog_visible: false,
funbox_height: 100,
skeleton_loading: true,
confirmBtn: {
"openType": "contact",
"content": "确认",
},
overlay_show: false
},
// 获取状态栏信息
getMenuButtonBound() {
let stateHeight = 0; // 接收状态栏高度
const navHeight = wx.getMenuButtonBoundingClientRect().height; // 获取胶囊高度
let top = 0;
top = wx.getMenuButtonBoundingClientRect().top - stateHeight; // 获取top值
// console.log('navHeight', navHeight);
// console.log('top', top);
this.setData({
// navHeight: navHeight + top * 2, // 导航栏高度
navHeight, // 导航栏高度
stateHeight: stateHeight + top, // 状态栏高度
});
},
getFunboxHeight(){
// console.log("109: ", rpxTopx(109))
// console.log("113: ", rpxTopx(113))
const { statusBarHeight } = wx.getSystemInfoSync();
// console.log("statusBarHeight: ", rpxTopx(statusBarHeight));
let funbox_height = wx.getSystemInfoSync().windowHeight - (this.data.stateHeight + this.data.navHeight + 10) - 55;//减去底部空白
funbox_height = pxTorpx(funbox_height);
// 147 userinfo的高度
// 80 info_note
// 155 认证部分的高度
// 168 广告部分的高度
// 40 自定义适配
funbox_height = funbox_height - 147 - 20 - 30 - 20 - 155 - 30 - 168 - 20 - 30 - 30 - 30 - 30 - 40;
// 50 info_note
if(this.data.info.show_info_note){
funbox_height = funbox_height - 50;
}
funbox_height = funbox_height / 3;
if(funbox_height > 150) funbox_height = 150
this.setData({
funbox_height: funbox_height
})
},
confirmJieSuanDialog(){
this.setData({
jiesuan_dialog_visible: false,
})
const overlay_show = wx.getStorageSync('overlay_show')
if(!overlay_show){
this.setData({
overlay_show: true
})
wx.setStorageSync('overlay_show', "1")
}
app.go("/user/pages/yishi/manual_detail/index?manual_id=1")
},
cancelJieSuanDialog(){
this.setData({
jiesuan_dialog_visible: false,
})
const overlay_show = wx.getStorageSync('overlay_show')
if(!overlay_show){
this.setData({
overlay_show: true
})
wx.setStorageSync('overlay_show', "1")
}
},
confirmContactDialog(){
this.setData({
contactKeFu: false
})
},
cancelContactDialog(){
// console.log("cancelContactDialogcancelContactDialogcancelContactDialog");
this.setData({
contactKeFu: false
})
},
onPullDownRefresh(){
// console.log("用户下拉动作")
this.onShow();
},
onLoad(){
},
onUnload(){
// console.log("index onUnload() onUnload() ");
this.setData({
swiperList: []
})
},
onHide(){
// console.log("index onHide() onHide() ");
// wx.offCopyUrl(this.Copylistener) // 需传入与监听时同一个的函数对象
if (typeof this.getTabBar === 'function' && this.getTabBar()) {
this.getTabBar().stopInterval()
}
this.setData({
contactKeFu: false
})
},
Copylistener(res){
setTimeout(()=>{
wx.setClipboardData({
data: '暂不支持分享',
success (res) {
},
complete(){
wx.hideToast()
}
})
},1000)
return
},
onShow: function () {
//初始化默认值
this.setData({
skeleton_loading: true,
});
// wx.onCopyUrl(this.Copylistener);
if (typeof this.getTabBar === 'function' && this.getTabBar()) {
this.getTabBar().setData({
active: 0, //数字是当前页面在tabbar的索引,如我的查询页索引是2,因此这边为2,同理首页就为0,审批页面为1
})
this.getTabBar().startInterval()
}
this.getMenuButtonBound();
api.yiShiIndex().then(response => {
// console.log(response);
let avatar = response.data.info.avatar;
this.setData({
"info.user_name": response.data.info.user_name,
"info.not_accepted_inquiry_num": response.data.info.not_accepted_inquiry_num,
"info.accepting_inquiry_num": response.data.info.accepting_inquiry_num,
"info.praise_rate": response.data.info.praise_rate,
"info.avg_response_time": response.data.info.avg_response_time,
"info.number_of_fans": response.data.info.number_of_fans,
doctor_inquiry_config:response.data.doctor_inquiry_config
})
if(avatar){
this.setData({
"info.avatar": avatar
})
}
//实名认证
let idcard_status = response.data.info.idcard_status;
//医师身份认证
let iden_auth_status = response.data.info.iden_auth_status;
//多点执业认证
let multi_point_status = response.data.info.multi_point_status;
//绑定结算银行卡
let is_bind_bank = response.data.info.is_bind_bank;
// //是否参加专家图文接诊(0:否 1:是)
// let is_img_expert_reception = response.data.info.is_img_expert_reception;
// //是否参加专家快速接诊(0:否 1:是)
// let is_img_quick_reception = response.data.info.is_img_quick_reception;
// //是否参加专家公益接诊(0:否 1:是)
// let is_img_welfare_reception = response.data.info.is_img_welfare_reception;
this.setData({
"info.idcard_status": idcard_status,
"info.iden_auth_status": iden_auth_status,
"info.multi_point_status": multi_point_status,
"info.is_bind_bank": is_bind_bank,
// "info.is_img_expert_reception": is_img_expert_reception,
// "info.is_img_quick_reception": is_img_quick_reception,
// "info.is_img_welfare_reception": is_img_welfare_reception,
});
//iden_auth_status 0:未认证 1:认证通过 2:审核中 3:认证失败
if(iden_auth_status == 0) this.setData({iden_auth_status_txt: "未认证"});
if(iden_auth_status == 1) this.setData({iden_auth_status_txt: "已认证", iden_auth_status_url: "/user/pages/yishi/attestation/index"});
if(iden_auth_status == 2) this.setData({iden_auth_status_txt: "审核中"});
if(iden_auth_status == 3) this.setData({iden_auth_status_txt: "认证失败"});
//multi_point_status 0:未认证 1:认证通过 2:审核中 3:认证失败
if(multi_point_status == 0) this.setData({multi_point_status_txt: "未认证"});
if(multi_point_status == 1) this.setData({multi_point_status_txt: "已认证", multi_point_status_url: "/user/pages/yishi/practicing/index"});
if(multi_point_status == 2) this.setData({multi_point_status_txt: "审核中"});
if(multi_point_status == 3) this.setData({multi_point_status_txt: "认证失败"});
//平均响应时间
var avg_response_time = response.data.info.avg_response_time;
if(avg_response_time != "0"){
this.setData({"info.show_info_note": true});
}
//处方管理小红点
var reject_prescription_number = response.data.info.reject_prescription_number;
if(reject_prescription_number){
this.setData({"info.reject_prescription_number": reject_prescription_number});
}
//格式化广告轮播
this.formatAD(response.data.banner);
this.checkStatus();
this.setData({
skeleton_loading: false
})
}).then(res => {
wx.stopPullDownRefresh()
}).then(res =>{
this.getFunboxHeight();
}).catch(errors => {
console.error(errors);
})
},
formatAD(banner){
let swiperList = [];
banner.forEach(item => {
swiperList.push(item.banner_path);
})
this.setData({
banner: banner,
swiperList: swiperList
})
},
onTapAD(e) {
let item = e.currentTarget.dataset.item;
// console.log(item);
let open_with = item.open_with;
let banner_link = item.banner_link;
if(open_with == 1){//小程序页面
app.go(banner_link);
}else if(open_with == 2){//webview 页面
app.go("/user/pages/webpage/index?src="+banner_link);
}
},
onChangeAD(e) {
// const { current, source } = e.detail;
// console.log(current, source);
},
go(e){
let checkDialog = this.checkDialog(e);
// console.log("checkDialog: ", checkDialog);
if(checkDialog){
let url = e.currentTarget.dataset.url;
// console.log(url);
if(url.indexOf("wenzhen") > -1){
wx.switchTab({
url: url,
})
}
app.go(e.currentTarget.dataset.url)
}
},
gozhiye(e){
let idcard_status = this.data.info.idcard_status;
let iden_auth_status = this.data.info.iden_auth_status;
let is_bind_bank = this.data.info.is_bind_bank;
if(idcard_status != 1){
this.setData({
dialog_content: "请您先完成实名认证",
shiming_status_url: "/user/pages/yishi/identity/index",
dialog_visible: true,
});
return;
}
if(iden_auth_status != 1){
this.setData({
dialog_content: "请您先医师身份认证",
shiming_status_url: "/user/pages/yishi/identity/index?selected_tab=1",
dialog_visible: true,
});
return;
}
if(is_bind_bank != 1){
this.setData({
dialog_content: "请您先绑定结算银行卡",
shiming_status_url: "/user/pages/yishi/bankcard/index",
dialog_visible: true,
});
return;
}
app.go(e.currentTarget.dataset.url);
},
confirmDialog(e){
// console.log(e)
let url = e.currentTarget.dataset.url;
// console.log("confirmDialog: ", url)
this.setData({
dialog_visible: false
})
app.go(url);
},
cancelDialog(){
this.setData({
dialog_visible: false
})
},
checkStatus(){
//实名认证
let idcard_status = this.data.info.idcard_status;
//医师身份认证
let iden_auth_status = this.data.info.iden_auth_status;
//多点执业认证
let multi_point_status = this.data.info.multi_point_status;
//绑定结算银行卡
var is_bind_bank = this.data.info.is_bind_bank;
//是否参加专家图文接诊(0:否 1:是)
// let is_img_expert_reception = this.data.info.is_img_expert_reception;
// //是否参加专家快速接诊(0:否 1:是)
// let is_img_quick_reception = this.data.info.is_img_quick_reception;
// //是否参加专家公益接诊(0:否 1:是)
// let is_img_welfare_reception = this.data.info.is_img_welfare_reception;
let usertype = wx.getStorageSync('usertype');
let userID = wx.getStorageSync('user_id_'+usertype);
wx.setStorageSync(userID+'_idcard_status', idcard_status);
wx.setStorageSync(userID+'_iden_auth_status', iden_auth_status);
wx.setStorageSync(userID+'_multi_point_status', multi_point_status);
wx.setStorageSync(userID+'_is_bind_bank', is_bind_bank);
if(idcard_status == 0){
if(!this.data.default_dialog_show){
this.setData({
dialog_visible: true,
});
}
this.setData({
"info.info_shiming_status_txt": "未认证",
"info.info_shiming_status": "info_shiming_status_no",
dialog_content: "请您先完成实名认证",
shiming_status_url: "/user/pages/yishi/identity/index",
dialog_url: "/user/pages/yishi/identity/index",
default_dialog_show: true
});
return false;
}
if(idcard_status == 2){
if(!this.data.default_dialog_show){
this.setData({
dialog_visible: true,
});
}
this.setData({
"info.info_shiming_status_txt": "认证失败",
"info.info_shiming_status": "info_shiming_status_yes",
shiming_status_url: "/user/pages/yishi/identity/index",
dialog_url: "/user/pages/yishi/identity/index",
dialog_content: "实名认证失败",
default_dialog_show: true
});
return false;;
}
if(iden_auth_status == 0){
if(!this.data.default_dialog_show){
this.setData({
dialog_visible: true,
});
}
this.setData({
"info.info_shiming_status_txt": "前往医师身份认证",
"info.info_shiming_status": "info_shiming_status_yes",
shiming_status_url: "/user/pages/yishi/identity/index?selected_tab=1",
dialog_url: "/user/pages/yishi/identity/index?selected_tab=1",
dialog_content: "请您先医师身份认证",
default_dialog_show: true
});
return false;
}
if(iden_auth_status == 2){
if(!this.data.default_dialog_show){
this.setData({
// dialog_visible: true,
});
}
this.setData({
"info.info_shiming_status_txt": "审核中",
"info.info_shiming_status": "info_shiming_status_yes",
shiming_status_url: "/user/pages/yishi/identity/index?selected_tab=1",
dialog_url: "/user/pages/yishi/identity/index?selected_tab=1",
// dialog_content: "您的医师身份认证正在审核中",
// default_dialog_show: true
});
return false;
}
if(iden_auth_status == 3){
if(!this.data.default_dialog_show){
this.setData({
// dialog_visible: true,
});
}
this.setData({
"info.info_shiming_status_txt": "认证失败",
"info.info_shiming_status": "info_shiming_status_yes",
shiming_status_url: "/user/pages/yishi/identity/index?selected_tab=1",
dialog_url: "/user/pages/yishi/identity/index?selected_tab=1",
dialog_content: "您的医师身份认证失败",
// default_dialog_show: true
});
return false;
}
if(is_bind_bank == 0){
if(!this.data.default_dialog_show){
this.setData({
dialog_visible: true,
});
}
this.setData({
"info.info_shiming_status_txt": "绑定结算银行卡",
"info.info_shiming_status": "info_shiming_status_yes",
shiming_status_url: "/user/pages/yishi/bankcard/index",
dialog_url: "/user/pages/yishi/bankcard/index",
dialog_content: "请您先绑定结算银行卡",
default_dialog_show: true
});
return false;
}
//多点执业认证
if(multi_point_status == 0){
if(!this.data.default_dialog_show){
this.setData({
// dialog_visible: true,
});
}
this.setData({
"info.info_shiming_status_txt": "前往多点执业认证",
"info.info_shiming_status": "info_shiming_status_yes",
shiming_status_url: "/user/pages/yishi/zhiye_identity/index",
dialog_content: "请您先进行多点执业认证",
// default_dialog_show: true
});
// return false;
}
if(multi_point_status == 2){
if(!this.data.default_dialog_show){
this.setData({
// dialog_visible: true,
});
}
this.setData({
"info.info_shiming_status_txt": "审核中",
"info.info_shiming_status": "info_shiming_status_yes",
shiming_status_url: "/user/pages/yishi/zhiye_identity/index",
dialog_content: "您的多点执业认证正在审核中",
// default_dialog_show: true
});
// return false;
}
if(multi_point_status == 3){
if(!this.data.default_dialog_show){
this.setData({
// dialog_visible: true,
});
}
this.setData({
"info.info_shiming_status_txt": "认证失败",
"info.info_shiming_status": "info_shiming_status_yes",
shiming_status_url: "/user/pages/yishi/zhiye_identity/index",
dialog_content: "您的多点执业认证失败",
// default_dialog_show: true
});
// return false;
}
const jiesuan_dialog_show = wx.getStorageSync('jiesuan_dialog_show');
if(!jiesuan_dialog_show){
this.setData({
jiesuan_dialog_visible: true,
});
wx.setStorageSync('jiesuan_dialog_show', true);
}
// (is_img_expert_reception + is_img_quick_reception + is_img_welfare_reception) == 0
let flag=false;
if(this.data.doctor_inquiry_config){
flag=this.data.doctor_inquiry_config.every((item)=>{
return item.is_enable==0
})
};
if(!this.data.doctor_inquiry_config || flag){
if(!this.data.default_dialog_show){
this.setData({
// dialog_visible: true,
});
}
this.setData({
"info.info_shiming_status_txt": "开启在线问诊",
"info.info_shiming_status": "info_shiming_status_yes",
shiming_status_url: "/user/pages/yishi/onlinesetup/index",
// default_dialog_show: true
});
return false;
}
//(is_img_expert_reception + is_img_quick_reception + is_img_welfare_reception) > 0
if(this.data.doctor_inquiry_config && !flag){
if(!this.data.default_dialog_show){
this.setData({
// dialog_visible: true,
});
}
this.setData({
"info.info_shiming_status_txt": "去接诊",
"info.info_shiming_status": "info_shiming_status_yes",
shiming_status_url: "/Pages/yishi/wenzhen_v2/wenzhen",
// default_dialog_show: true
});
return false;
}
//开启在线问诊
// var is_img_expert_reception = this.data.info.is_img_expert_reception;
// if(is_img_expert_reception == 0 ){
// if(!this.data.default_dialog_show){
// this.setData({
// // dialog_visible: true,
// });
// }
// this.setData({
// "info.info_shiming_status_txt": "开启在线问诊",
// "info.info_shiming_status": "info_shiming_status_yes",
// shiming_status_url: "/user/pages/yishi/onlinesetup/index",
// dialog_content: "请您先前往在线问诊管理中,开通在线问诊",
// default_dialog_show: true
// })
// return false;
// }
this.setData({
"info.info_shiming_status_txt": "去接诊",
shiming_status_url: "/Pages/yishi/wenzhen_v2/wenzhen",
});
this.setData({"info.info_shiming_status": "info_shiming_status_yes"});
return true;
},
contactKeFu(e){
let _this = this;
let checkDialog = this.checkDialog(e);
if(checkDialog){
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,
contactKeFu: true
})
},
subconfirmDialog(){
this.setData({
sub_visible: false
})
wx.openSetting({
success (res) {
console.log(res.authSetting)
}
})
},
checkDialog(e){
//实名认证
let idcard_status = this.data.info.idcard_status;
//医师身份认证
let iden_auth_status = this.data.info.iden_auth_status;
//多点执业认证
let multi_point_status = this.data.info.multi_point_status;
//绑定结算银行卡
let is_bind_bank = this.data.info.is_bind_bank;
//是否参加专家图文接诊(0:否 1:是)
let is_img_expert_reception = this.data.info.is_img_expert_reception;
//是否参加专家快速接诊(0:否 1:是)
let is_img_quick_reception = this.data.info.is_img_quick_reception;
//是否参加专家公益接诊(0:否 1:是)
let is_img_welfare_reception = this.data.info.is_img_welfare_reception;
let statusArr = [];
// 未实名认证和医师身份认证 0
// 已实名认证,未医师身份认证 1
// 已实名认证和医师身份认证,未绑定结算银行卡 2
// 已实名认证和医生身份认证,已绑定结算银行卡 未开通多点执业认证3
// 已实名认证和医师身份认证且绑定结算银行卡,开通了在线问诊,未开通多点执业认证 4
// 已实名认证和医师身份认证且绑定结算银行卡,开通了在线问诊,已开通多点执业认证 5
if(idcard_status == 0 && iden_auth_status == 0){
statusArr.push(0);
}
if(idcard_status == 1 && iden_auth_status != 1){
statusArr.push(1);
}
if(idcard_status == 1 && iden_auth_status == 1 && is_bind_bank != 1){
statusArr.push(2);
}
if(idcard_status == 1 && iden_auth_status == 1 && is_bind_bank == 1 && multi_point_status != 1 &&
(is_img_expert_reception + is_img_quick_reception + is_img_welfare_reception) == 0){
statusArr.push(3);
}
if(idcard_status == 1 && iden_auth_status == 1 && is_bind_bank == 1 && multi_point_status != 1 &&
(is_img_expert_reception + is_img_quick_reception + is_img_welfare_reception) > 0){
statusArr.push(4);
}
if(idcard_status == 1 && iden_auth_status == 1 && is_bind_bank == 1 && multi_point_status == 1){
statusArr.push(5);
}
let retult = true;
statusArr.forEach(status => {
let now_case = this.data.mycase.find(item => {
return item.case_status == status;
});
// console.log("now_case: ", now_case);
//所属模块
let moudle = e.currentTarget.dataset.moudle;
// console.log("moudle: ", moudle);
if(now_case){
let now_moudle = now_case.case_module.find(item => {
return item == moudle;
})
// console.log("now_moudle: ", now_moudle);
if(now_moudle != undefined){
this.setData({
dialog_content: now_case.case_text,
dialog_visible: true,
dialog_url: now_case.case_url
});
retult = false;
return;
}
}
})
return retult;
},
onClickHideOverlay(){
this.setData({
overlay_show: false
})
}
})
+15
View File
@@ -0,0 +1,15 @@
{
"component": true,
"usingComponents": {
"t-avatar": "tdesign-miniprogram/avatar/avatar",
"van-button": "@vant/weapp/button/index",
"t-swiper": "tdesign-miniprogram/swiper/swiper",
"t-badge": "tdesign-miniprogram/badge/badge",
"t-dialog": "tdesign-miniprogram/dialog/dialog",
"van-image": "@vant/weapp/image/index",
"t-skeleton": "tdesign-miniprogram/skeleton/skeleton",
"van-overlay": "@vant/weapp/overlay/index"
},
"enablePullDownRefresh": false,
"backgroundTextStyle":"dark"
}
+251
View File
@@ -0,0 +1,251 @@
<page-meta page-style="{{ true ? 'overflow: hidden;' : '' }}" />
<view class="container" id="container">
<!-- 顶部背景 -->
<view class="top_bk"></view>
<!-- 顶部标题 -->
<view class="title"
style="top:0;padding-top: {{stateHeight}}px;height: {{navHeight + 10}}px;line-height: {{navHeight}}px;position: relative;">{{ title }}</view>
<!-- 用户信息 -->
<!-- <view class="info_box" style="margin-top: {{stateHeight+navHeight+10}}px;"> -->
<view class="info_box">
<view class="info">
<view class="info_top">
<view class="info_photo" bindtap="go" data-url="/Pages/yishi/myinfo/index">
<!-- 跳转我的信息 -->
<t-avatar alt="头像" class="avatar" size="medium" image="{{info.avatar}}" wx:if="{{!skeleton_loading}}"/>
<!-- 骨架屏 -->
<t-skeleton theme="avatar" animation="gradient" loading="{{skeleton_loading}}" />
</view>
<view class="info_content">
<view class="info_mobile" wx:if="{{!skeleton_loading}}">{{info.user_name}}</view>
<t-skeleton theme="text" row-col="{{[1]}}" animation="gradient" loading="{{skeleton_loading}}" />
</view>
<view class="info_shiming" bindtap="go" data-url="{{shiming_status_url}}" wx:if="{{!skeleton_loading}}">
<view class="info_shiming_status {{info.info_shiming_status}}" wx:if="{{!skeleton_loading}}">{{info.info_shiming_status_txt}}</view>
<t-skeleton theme="text" row-col="{{[{ width: '50rpx' }]}}" animation="gradient" loading="{{skeleton_loading}}" />
</view>
</view>
<view class="info_wenzhen">
<view class="info_wenzhen_new" wx:if="{{skeleton_loading}}">
<t-skeleton theme="text" row-col="{{[{ width: '70%' }]}}" animation="gradient" loading="{{skeleton_loading}}" />
</view>
<view class="info_wenzhen_new" bindtap="go" data-url="/Pages/yishi/wenzhen_v2/wenzhen" data-moudle="0" wx:if="{{!skeleton_loading}}">
待接诊:{{info.not_accepted_inquiry_num}}
<t-skeleton theme="text" row-col="{{[1]}}" animation="gradient" loading="{{skeleton_loading}}" />
</view>
<view class="info_wenzhen_ing" bindtap="go" data-url="/Pages/yishi/wenzhen_v2/wenzhen" data-moudle="1" wx:if="{{!skeleton_loading}}">接诊中:{{info.accepting_inquiry_num}}</view>
</view>
</view>
<view class="info_note" wx:if="{{info.show_info_note}}">
<view class="haoping info_note_item" wx:if="{{skeleton_loading}}">
<t-skeleton theme="text" row-col="{{[{ width: '90%' }]}}" animation="gradient" loading="{{skeleton_loading}}" />
</view>
<view class="haoping info_note_item" wx:if="{{!skeleton_loading}}">
<text class="info_note_txt">好评率</text><text class="info_note_num"> {{info.praise_rate}}%</text>
</view>
<view class="time info_note_item" wx:if="{{!skeleton_loading}}">
<text class="info_note_txt">响应时间</text><text class="info_note_num"> {{info.avg_response_time}} </text><text class="info_note_txt">分钟</text>
</view>
<view class="follow info_note_item" wx:if="{{!skeleton_loading}}">
<text class="info_note_txt">关注数</text><text class="info_note_num"> {{info.number_of_fans}}</text>
</view>
</view>
</view>
<!-- 认证信息 -->
<view class="renzhen">
<view class="renzheng_left" wx:if="{{skeleton_loading}}">
<t-skeleton theme="image" row-col="{{[1]}}" animation="gradient" loading="{{skeleton_loading}}" />
</view>
<view class="renzheng_left" bindtap="go" data-url="/Pages/yishi/identity/index" wx:if="{{!skeleton_loading}}">
<view class="renzheng_content_left">
<view class="renzheng_content_name">医师身份认证</view>
<view class="renzheng_content_status">
<van-button round plain
custom-style="background-color: #E0FFFE; height: 45rpx; letter-spacing: 3rpx; font-size: 26rpx;"
color="#3CC7C0" type="info" size="small">{{ iden_auth_status_txt }}></van-button>
</view>
</view>
<view class="renzheng_content_right">
<van-image class="renzheng_content_right_img" width="100%"
fit="widthFix"
src="{{static_host}}/applet/doctor/static/images/yishi/yishirenzheng.png"
/>
</view>
</view>
<view class="renzheng_right" wx:if="{{skeleton_loading}}">
<t-skeleton theme="image" row-col="{{[1,1,1]}}" animation="gradient" loading="{{skeleton_loading}}" />
</view>
<view class="renzheng_right" bindtap="gozhiye" data-url="/Pages/yishi/zhiye_identity/index" wx:if="{{!skeleton_loading}}">
<view class="renzheng_content_left">
<view class="renzheng_content_name">多点执业认证</view>
<view class="renzheng_content_status">
<van-button round plain data-moudle="2"
custom-style="background-color: #FFF5E0; height: 45rpx; letter-spacing: 3rpx; font-size: 26rpx;"
color="#FC7E00" type="info" size="small">{{ multi_point_status_txt }}></van-button>
</view>
</view>
<view class="renzheng_content_right">
<van-image class="renzheng_content_right_img" width="100%"
fit="widthFix"
src="{{static_host}}/applet/doctor/static/images/yishi/zhiyerenzheng.png"
/>
</view>
</view>
</view>
<!-- 广告版块 -->
<view class="ad">
<!-- <t-swiper
height="110rpx"
duration="{{duration}}"
interval="{{interval}}"
navigation="{{ { type: 'dots' } }}"
list="{{swiperList}}"
bind:click="onTapAD"
bind:change="onChangeAD"
data-url="123"
wx:if="{{!skeleton_loading}}"
>
</t-swiper> -->
<swiper class="swiper" indicator-dots="{{true}}" circular="{{true}}" indicator-active-color="#3CC7C0" autoplay="{{true}}" interval="3000">
<block wx:for="{{banner}}" wx:key="*this">
<swiper-item>
<view class="swiper-item">
<image class="swiperimg" src="{{item.banner_path}}" data-item="{{item}}" bindtap="onTapAD"></image>
</view>
</swiper-item>
</block>
</swiper>
</view>
<!-- 功能模块 -->
<view class="fun_box">
<view bindtap="go" data-moudle="3" data-url="/Pages/yishi/myprofile/index" class="fun_box_item" style="height: {{funbox_height}}rpx;">
<van-image class="fun_box_item_img"
fit="heightFix"
height="70rpx"
src="{{static_host}}/applet/doctor/static/images/yishi/jianjie.png"
/>
<text class="fun_box_item_txt">个人简介管理</text>
</view>
<view bindtap="go" data-moudle="4" data-url="/Pages/yishi/onlinesetup/index" class="fun_box_item" style="height: {{funbox_height}}rpx;">
<van-image class="fun_box_item_img"
fit="widthFix"
width="70rpx"
src="{{static_host}}/applet/doctor/static/images/yishi/zaixian.png"
/>
<text class="fun_box_item_txt">在线问诊管理</text>
</view>
<view bindtap="go" data-moudle="5" data-url="/Pages/yishi/kuaisusetup/index" class="fun_box_item" style="height: {{funbox_height}}rpx;">
<van-image class="fun_box_item_img"
fit="widthFix"
width="70rpx"
src="{{static_host}}/applet/doctor/static/images/yishi/kuaisu.png"
/>
<text class="fun_box_item_txt">快速问诊管理</text>
</view>
<view bindtap="go" data-moudle="6" data-url="/Pages/yishi/yizhensetup/index" class="fun_box_item" style="height: {{funbox_height}}rpx;">
<van-image class="fun_box_item_img"
fit="widthFix"
width="70rpx"
src="{{static_host}}/applet/doctor/static/images/yishi/yizhen.png"
/>
<text class="fun_box_item_txt">公益问诊管理</text>
</view>
<view bindtap="go" data-moudle="7" data-url="/Pages/yishi/chufangsetup/index" class="fun_box_item" style="height: {{funbox_height}}rpx;">
<van-image class="fun_box_item_img"
fit="widthFix"
width="70rpx"
src="{{static_host}}/applet/doctor/static/images/yishi/chufang.png"
/>
<view class="fun_box_item_txt">
<t-badge style="display: flex;align-items: center;" dot="{{info.reject_prescription_number ? true : false}}" offset="{{ ['-14rpx', '10rpx'] }}" class="wrapper" content="处方管理" />
</view>
</view>
<view class="fun_box_item" data-moudle="8" bindtap="contactKeFu" style="height: {{funbox_height}}rpx;">
<van-image class="fun_box_item_img"
fit="widthFix"
width="70rpx"
src="{{static_host}}/applet/doctor/static/images/yishi/kefu.png"
/>
<text class="fun_box_item_txt">联系客服</text>
</view>
</view>
<view style="width: 100%;height: 55px;">
<!-- 处理底部tabbar遮挡 50px -->
</view>
<t-dialog
visible="{{ dialog_visible }}"
title="温馨提示"
content="{{dialog_content}}"
>
<view slot="cancel-btn" class="dialog dialog_cancel_btn" bindtap="cancelDialog">
取消
</view>
<view slot="confirm-btn" class="dialog dialog_confirm_btn" bindtap="confirmDialog" data-url="{{dialog_url}}">
确定
</view>
</t-dialog>
<t-dialog
visible="{{ jiesuan_dialog_visible }}"
title="温馨提示"
content="快速了解在线问诊、公益问诊和快速问诊"
>
<view slot="cancel-btn" class="dialog dialog_cancel_btn" bindtap="cancelJieSuanDialog">
已了解
</view>
<view slot="confirm-btn" class="dialog dialog_confirm_btn" bindtap="confirmJieSuanDialog">
不了解
</view>
</t-dialog>
<t-dialog
visible="{{ contactKeFu }}"
title="立即联系客服"
confirm-btn="{{confirmBtn}}"
close-on-overlay-click="{{true}}"
close="cancelContactDialog"
>
<view slot="cancel-btn" class="dialog dialog_cancel_btn" bindtap="cancelContactDialog">
取消
</view>
<!-- <view slot="confirm-btn" class="dialog dialog_confirm_btn" open-type="contact">
<t-button theme="primary" size="large" open-type="contact">确认</t-button>
</view> -->
</t-dialog>
<!-- <van-dialog
title="立即联系客服"
show="{{ contactKeFu }}"
show-cancel-button
confirm-button-color="#3CC7C0"
confirm-button-open-type="contact"
/> -->
<van-overlay show="{{ overlay_show }}" z-index="999999999999">
<van-image class="overlay_show"
fit="widthFix"
style="position: absolute; padding-top: {{stateHeight + navHeight}}px;"
width="100vw"
src="{{static_host}}/applet/doctor/static/images/collection.png"
/>
<van-button color="rgba(0, 0, 0, .1)" style="position: fixed;bottom: 100rpx;left: 50%;transform: translateX(-50%);width: 80vw;border: 1px solid #fff;border-radius: 50px;" block round bind:click="onClickHideOverlay">我知道了</van-button>
</van-overlay>
<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>
+257
View File
@@ -0,0 +1,257 @@
page{
background-color: #FAFAFA;
}
.container{
width: 100vw;
}
.top_bk{
position: fixed;
top: -2230rpx;
left: 50%;
transform: translateX(-50%);
width: 2500rpx;
height: 2500rpx;
background-color: #3CC7C0;
border-radius: 50%;
z-index: -99;
}
.title{
position: fixed;
letter-spacing: 3rpx;
padding-left: 5vw;
font-size: 35rpx;
color: #fff;
background-color: #3CC7C0;
z-index: 999;
}
.info_box{
width: 90vw;
margin: 0 auto;
display: flex;
padding: 20rpx 0;
flex-direction: column;
background-color: rgb(255, 255, 255);
border-radius: 10rpx;
box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.06);
z-index: 999;
}
.info{
display: flex;
flex-direction: column;
z-index: 999;
}
.info_top{
display: flex;
align-items: center;
justify-content: space-around;
z-index: 999;
}
.info_photo{
margin-left: 20rpx;
flex: 1;
z-index: 999;
}
.info_content{
color: #000;
flex: 2;
display: flex;
flex-direction: column;
justify-content: space-between;
padding-left: 20rpx;
z-index: 999;
}
.info_mobile{
font-size: 36rpx;
letter-spacing: 3rpx;
z-index: 999;
}
.info_wenzhen{
margin: 20rpx 0 0 30rpx;
font-size: 28rpx;
color: #666666;
display: flex;
z-index: 999;
}
.info_wenzhen_new{
flex: 1;
}
.info_wenzhen_ing{
flex: 3;
}
.info_shiming{
flex: 3;
display: flex;
justify-content: flex-end;
margin-right: 20rpx;
}
.info_shiming_status{
padding: 15rpx 20rpx 15rpx 20rpx;
border-radius: 10rpx;
margin-right: 10rpx;
font-size: 30rpx;
}
.info_shiming_status_no{
background-color: rgb(207, 207, 214);
}
.info_shiming_status_yes{
background-color: #3CC7C0;
color: #fff;
}
.info_note{
color: rgb(122, 121, 121);
display: flex;
justify-content: space-around;
align-items: center;
text-align: center;
margin-top: 20rpx;
margin-left: 20rpx;
height: 50rpx;
}
.info_note_txt{
font-size: 28rpx;
color: #666666;
}
.info_note_item{
flex: 3;
}
.time{
flex: 4;
}
.info_note_num{
color: #E34D59;
font-weight: 600;
font-size: 36rpx;
}
.renzhen{
width: 90vw;
margin: 30rpx auto;
display: flex;
}
.renzheng_left{
flex: 1;
background-color: #E0FFFE;
display: flex;
align-items: center;
padding: 20rpx 0;
box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.06);
}
.renzheng_right{
flex: 1;
background-color: #FFF5E0;
margin-left: 20rpx;
display: flex;
align-items: center;
box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.06);
}
.renzheng_content_left{
flex: 2;
display: flex;
flex-direction: column;
padding: 0 0rpx 0 20rpx;
}
.renzheng_content_name{
font-size: 34rpx;
}
.renzheng_content_status{
margin-top: 20rpx;
}
.renzheng_content_right{
flex: 1;
}
.renzheng_content_right_img{
width: 100%;
}
.ad {
width: calc(92vw - 40rpx);
border-radius: 10rpx;
margin: 0 auto;
background-color: #fff;
padding: 20rpx 20rpx 0 20rpx;
box-shadow: 0px 2px 10px 0px rgba(0,0,0,0.1);
}
.swiper{
height:168rpx;
}
.swiper-item .swiperimg{
width:100%;
border-radius: 10rpx;
height:110rpx;
}
.fun_box{
width: 90vw;
margin: 30rpx auto 0 auto;
padding: 30rpx 0;
box-shadow: 0px 2px 10px 0px rgba(0,0,0,0.1);
display: flex;
flex-wrap: wrap;
justify-content: space-evenly;
border-radius: 10rpx;
background-color: #fff;
}
.fun_box_item{
width: 40vw;
height: 110rpx;
background-color: #FAFAFA;
border-radius: 10rpx;
margin: 10rpx 0;
display: flex;
align-items: center;
}
.fun_box_item_img{
flex: 1;
display: flex;
justify-content: center;
}
.fun_box_item_txt{
flex: 2.5;
font-size: 34rpx;
color: #333333;
height: 70rpx;
line-height: 70rpx;
display: flex;
}
.t-class-cancel{
color: #3CC7C0 !important;
}
.dialog{
width: 50%;
text-align: center;
height: 100rpx;
line-height: 100rpx;
}
.dialog_cancel_btn{
position: relative;
}
.dialog_cancel_btn::before {
content: ' ';
position: absolute;
box-sizing: border-box;
top: 0;
left: 0;
border-top: 2px solid var(--td-border-color, #e7e7e7);
border-right: 2px solid var(--td-border-color, #e7e7e7);
transform: scale(0.5);
transform-origin: 0 0;
width: 200%;
height: 200%;
border-radius: 0;
border-top-left-radius: 0px;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
border-bottom-left-radius: 0px;
}
.dialog_confirm_btn{
border-top: 1px solid #E9E9E9;
color: #3CC7C0;
}
.t-button__content{
color: #3CC7C0 !important;
}
.t-dialog__button--text:before {
border-top: 2px solid #E9E9E9 !important;
border-left: 2px solid var(--td-border-color, #E9E9E9);
border-top-color: #E9E9E9 !important;
}
.overlay_show{
}
+145
View File
@@ -0,0 +1,145 @@
import { API } from '../../../../utils/network/api'
import { requestSubscribeMessage } from '../../../../utils/requestSubscribeUtil';
let api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '快速问诊设置', //导航栏 中间的标题
},
height: app.globalData.height,
checked: true,
open_note: "已开启,可在问诊消息中进行接诊",
close_note: "已关闭,暂不接收快速问诊",
note: "",
inquiry_type: 2,
inquiry_mode: 1,
info:{
is_open: false,
inquiry_price: 0,
work_num_day: 0
},
config:{
"max_work_num_day": 30,
"min_inquiry_price": 0,
"max_inquiry_price": 0,
"default_inquiry_price": 0,
"times_number": 10,
"duration": 1440,
"system_inquiry_price": [
"0",
"5",
"10"
]
},
sub_visible: false,
},
onLoad(){
},
onShow(){
let params = {};
params.inquiry_type = this.data.inquiry_type;//接诊类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药)
params.inquiry_mode = this.data.inquiry_mode;//接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员)
//获取医生我的账户数据
api.getDoctorInquiryConfig(params).then(response => {
console.log(response);
this.setData({
info: response.data.info,
config: response.data.config,
})
}).then(re => {
let is_open = this.data.info.is_open;
let note = this.data.note;
if(is_open == 1) note = this.data.open_note;
if(is_open == 0) note = this.data.close_note;
this.setData({
note: note
})
}).catch(errors => {console.error(errors);})
},
changeON(){
let is_open = this.data.info.is_open
console.log("changeON:", is_open)
let detail = false
if(is_open == 0){
detail = true
}else{
detail = false
}
this.doChange(detail)
},
onChange({ detail }) {
console.log("onChange: ", detail);
this.doChange(detail)
},
doChange(detail){
let is_open = 0;
if(detail){
this.setData({ note: this.data.open_note });
wx.vibrateShort({
"type": "heavy"
})
is_open = 1
}else{
this.setData({ note: this.data.close_note });
is_open = 0
}
this.setData({ "info.is_open": is_open });
//修改开关
let params = {};
params.inquiry_type = this.data.inquiry_type;//接诊类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药)
params.inquiry_mode = this.data.inquiry_mode;//接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员)
params.is_open = detail?1:0;
api.putDoctorInquiryOpen(params).then(response => {
console.log(response);
}).then(()=>{
if(detail){
let tmplIds = ['G1RIs0RYqsTQ2CuPQWalIMyb6_deuEEbJfajfhGvNzc']
let sub_promise = requestSubscribeMessage(tmplIds)
sub_promise.then(res => {
console.log("订阅成功")
}).catch(err => {
console.log(err)
let errCode = err.errCode
if(errCode == 20004){
this.setData({
sub_visible: true,
})
}
})
}
}).catch(errors => {console.error(errors);})
},
subcancelDialog(){
this.setData({
sub_visible: false
})
},
subconfirmDialog(){
this.setData({
sub_visible: false
})
wx.openSetting({
success (res) {
console.log(res.authSetting)
}
})
},
putDoctorInquiryConfig(){
wx.switchTab({
url: "/Pages/yishi/wenzhen_v2/wenzhen"
})
},
})
+13
View File
@@ -0,0 +1,13 @@
{
"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-stepper": "@vant/weapp/stepper/index",
"van-switch": "@vant/weapp/switch/index",
"van-button": "@vant/weapp/button/index",
"van-toast": "@vant/weapp/toast/index",
"t-dialog": "tdesign-miniprogram/dialog/dialog"
}
}
+67
View File
@@ -0,0 +1,67 @@
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container">
<view class="switch_box">
<view class="switch_box_top">
<view class="switch_box_item" bindtap="changeON">
<view class="switch_box_item_name">接诊开关</view>
<view class="switch_box_item_btn">
<van-switch
active-color="#3CC7C0"
inactive-color="#E7E7E7"
size="40rpx"
checked="{{ info.is_open==1 }}"
/>
</view>
</view>
<view class="switch_box_note">{{ note }}</view>
</view>
<view class="help">
<van-cell size="large" url="/user/pages/yishi/manual_detail/index?manual_id=5" custom-style="font-size:32rpx;" title="图文问诊操作手册" is-link border="{{false}}" />
</view>
</view>
<view class="checked_box">
<view class="price_title">价格设置</view>
<view class="price_steup_box">
<view class="price_steup_box_bottom">
<view class="price_steup_box_bottom_title">问诊单价</view>
<view class="price_steup_box_bottom_num">
<input class="weui-input" disabled bindblur="onPriceChange" type="digit" value="{{ info.inquiry_price }}" placeholder="请输入问诊单价" />
<text class="price" decode="true">&nbsp;元</text>
</view>
</view>
</view>
</view>
<view class="bottom">
<text class="bottom_txt">
提示:服务开通后,患者可以通过快速问诊找到您
1、快速问诊价格为平台统一定价;
2、优先分配给好评率高、响应时间快的医生;
3、平台分配成功后,要求医生在<text style="color:#3CC7C0">5分钟内接诊 </text>,如5分钟内未接诊,将自动取消订单,消息列表中也将删除此订单;
4、接诊后{{config.duration}}分钟内,患者可以和您<text style="color:#3CC7C0">不限制回合数沟通</text>;
5、如果时间不允许请慎重开通快速问诊,出现两次漏接,平台将主动关闭您的此项服务。
</text>
</view>
<view class="go">
<van-button disabled="{{info.is_open!=1}}" bind:click="putDoctorInquiryConfig" color="#3CC7C0" custom-style="border-radius: 20rpx;font-size:30rpx;" type="primary" block>去接诊</van-button>
</view>
<van-toast id="van-toast" />
<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>
+140
View File
@@ -0,0 +1,140 @@
page{
background-color: #F6F6F6;
}
.container{
width: 100vw;
}
.switch_box{
display: flex;
flex-direction: column;
width: 90vw;
/* height: 500rpx; */
border-radius: 20rpx;
margin: 30rpx auto;
background-color: rgb(255, 255, 255);
}
.switch_box_top{
position: relative;
display: flex;
/* height: 300rpx; */
flex-direction: column;
padding: 30rpx 30rpx 20rpx 30rpx;
}
.switch_box_top::after{
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
right: 0;
left: 32rpx;
bottom: 0;
border-bottom: 1px solid var(--td-cell-border-color, var(--td-gray-color-3, #e7e7e7));
transform: scaleY(0.5);
}
.switch_box_item{
display: flex;
justify-content: space-between;
align-items: center;
}
.switch_box_item_name{
flex: 1;
font-size: 16px;
}
.switch_box_item_btn{
flex: 1;
text-align: right;
}
.switch_box_note{
color: #999999;
font-size: 24rpx;
}
.help{
margin-bottom: 20rpx;
}
.price_title{
width: 90vw;
margin: 0 auto;
font-size: 32rpx;
margin-bottom: 20rpx;
color: #333333;
}
.price_steup_box{
display: flex;
width: 90vw;
margin: 0 auto;
border-radius: 20rpx;
flex-direction: column;
background-color: rgb(255, 255, 255);
}
.price_steup_box_top, .price_steup_box_bottom{
position: relative;
display: flex;
justify-content: space-between;
margin: 20rpx 20rpx 20rpx 30rpx;
align-items: center;
}
.price_steup_box_bottom_num{
flex: 1.5;
display: flex;
align-items: center;
}
.price_steup_box_top_title, .price_steup_box_bottom_title{
flex: 1;
font-size: 16px;
color: #333;
}
.price_steup_box_top::after{
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
right: 0;
left: 0;
bottom: 0;
border-bottom: 1px solid var(--td-cell-border-color, var(--td-gray-color-3, #e7e7e7));
transform: scaleY(0.5);
}
.price_steup_box_top_stepper{
flex: 1;
text-align: right;
align-items: center;
}
.bottom{
width: 90vw;
margin: -20rpx auto;
color: #999;
letter-spacing: 2rpx;
font-size: 28rpx;
line-height: 40rpx;
}
.go{
position: fixed;
left: 50%;
transform: translateX(-50%);
bottom: 100rpx;
width: 90vw;
}
.weui-input{
color: red;
display: inline-block;
text-align: right;
}
.price{
text-align: center;
flex: 1;
}
.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;
}
+68
View File
@@ -0,0 +1,68 @@
// pages/linkPage/linkPage.js
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
url:''
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
if(options.url){
this.setData({
url:decodeURIComponent(options.url)
});
}
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
})
+3
View File
@@ -0,0 +1,3 @@
{
"usingComponents": {}
}
+2
View File
@@ -0,0 +1,2 @@
<!--pages/linkPage/linkPage.wxml-->
<web-view src="{{url}}" ></web-view>
+1
View File
@@ -0,0 +1 @@
/* pages/linkPage/linkPage.wxss */
+23
View File
@@ -0,0 +1,23 @@
import { API } from '../../../../utils/network/api'
let api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '操作手册', //导航栏 中间的标题
},
height: app.globalData.height,
list: []
},
onShow(){
console.log("onShow");
//获取医生我的账户数据
api.getBasicOperationManual().then(response => {
console.log(response);
this.setData({
list: response.data,
})
}).catch(errors => {console.error(errors);})
},
})
+7
View File
@@ -0,0 +1,7 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"van-cell": "@vant/weapp/cell/index"
}
}
+7
View File
@@ -0,0 +1,7 @@
<!-- 操作手册 -->
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container">
<view class="item_list">
<van-cell size="large" url="/user/pages/yishi/manual_detail/index?manual_id={{item.manual_id}}" custom-style="border-radius: 20rpx;margin-bottom: 20rpx;" title="{{item.title}}" is-link wx:for="{{list}}" />
</view>
</view>
+11
View File
@@ -0,0 +1,11 @@
page{
background-color: #F6F6F6;
}
.container{
margin-top: 20rpx;
width: 100vw;
}
.item_list{
width: 92vw;
margin: 0 auto;
}
+30
View File
@@ -0,0 +1,30 @@
import { API } from '../../../../utils/network/api'
let api = new API()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '操作手册详情', //导航栏 中间的标题
},
manual_id: "",
html_content: ""
},
onLoad(option){
this.setData({
manual_id: option.manual_id
})
},
onShow(){
//获取操作手册详情
api.getBasicOperationManualID({manual_id: this.data.manual_id}).then(response => {
console.log(response);
this.setData({
html_content: response.data.content,
"navbarData.title": response.data.title,
})
}).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="{{html_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;
}
+145
View File
@@ -0,0 +1,145 @@
// Pages/yishi/medince_list/index.js
import { API } from '../../../../utils/network/api'
import debounce from "../../../../utils/debounce"
let api = new API()
Page({
/**
* 页面的初始数据
*/
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '药品清单', //导航栏 中间的标题
},
page:1,
isLoding:false,
list:[],
isLock:false,
per_page:10,
keyword:'',
static_host: api.getStaticHost()
},
changeInput:debounce(function(event){
const { value }= event.detail;
this.setData({
isLock:false,
page:1,
list:[],
keyword:value
})
this.handleGetList();
},600),
goSearch(){
this.setData({
isLock:false,
list:[],
page:1
})
this.handleGetList();
},
confirmSearch(event){
const { value }= event.detail;
this.setData({
isLock:false,
list:[],
page:1,
keyword:value
})
this.handleGetList();
},
lower(){
console.log('===触底了!!===');
let {page,isLock}=this.data;
if(!isLock){
page++;
this.setData({
page:page
});
this.handleGetList();
}
},
/**
* 生命周期函数--监听页面加载
*/
handleGetList(){
const {page,per_page,keyword,isLoding}=this.data;
if(isLoding)return false;
this.setData({
isLoding:true
})
api.getMedinceList({
page,
per_page,
keyword,
}).then(data=>{
this.setData({
isLoding:false
})
let result=data.data.data;
if(result.length==0){
this.setData({
isLock:true
});
return false;
}
this.setData({
list:this.data.list.concat(result)
});
}).catch(errors => {console.error(errors);})
},
onLoad(options) {
this.handleGetList();
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})
+9
View File
@@ -0,0 +1,9 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"van-image": "@vant/weapp/image/index",
"van-divider": "@vant/weapp/divider/index",
"van-empty": "@vant/weapp/empty/index"
}
}
+36
View File
@@ -0,0 +1,36 @@
<!--Pages/yishi/medince_list/index.wxml-->
<view class="page">
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container">
<view class="searchCon">
<view class="searchbox">
<input type="text" value="" class="searchIpt" placeholder="请输入药品名称" confirm-type="search" bindinput="changeInput" bindconfirm="confirmSearch"/>
<image src="{{static_host}}/applet/doctor/static/images/yishi/ss.png" mode="" class="searchImg" bindtap="goSearch"/>
</view>
</view>
<scroll-view scroll-y="true" class="scrollbox" bindscrolltolower="lower" wx:if="{{list.length>0}}" >
<view class="cell" wx:for="{{list}}" wx:key="product_id" >
<view class="medimgbox">
<view class="tips">
<view class="desc">处方药品</view>
<view class="desc">依据法规不展示包装</view>
</view>
<image class="medImg" src="{{static_host}}/applet/doctor/static/images/yishi/zhiyao.png" mode=""/>
</view>
<view class="rightbox">
<view class="info">
<view class="name">{{item.product_name}}/{{item.packaging_unit}}</view>
<view class="company">{{item.manufacturer}}</view>
</view>
<view class="bottombox">
<view class="price">¥ {{item.product_price}}</view>
<view class="num">库存:{{item.stock}}</view>
</view>
</view>
</view>
<van-divider contentPosition="center" wx:if="{{list.length > 0 && isLock}}">到底了~</van-divider>
</scroll-view>
<van-empty description="暂无数据" wx:if="{{list.length == 0}}" />
</view></view>
+122
View File
@@ -0,0 +1,122 @@
/* Pages/yishi/medince_list/index.wxss */
page{
height:100vh;
background-color: #F6F6F6;
}
.page{
height:100vh;
display: flex;
flex-direction: column;
}
.container{
/* height:calc(100vh - 135rpx); */
display: flex;
overflow: hidden;
/* overflow-y: scroll; */
/* -webkit-overflow-scrolling: touch; */
flex-direction: column;
}
.searchCon{
width:100%;
background:#fff;
}
.searchbox{
display: flex;
margin:32rpx;
align-items: center;
height: 80rpx;
background: #FFFFFF;
border-radius: 40rpx;
border: 2rpx solid #3CC7C0;
}
.searchIpt{
flex:1;
margin-left: 32px;
}
.searchImg{
width: 40rpx;
height:40rpx;
padding:30rpx;
}
.tips{
display: flex;
flex-direction: column;
justify-content: center;
position: absolute;
width: 200rpx;
height:200rpx;
font-size: 22rpx;
font-weight: 400;
color: #666666;
}
.desc{
text-align: center;
}
.medimgbox{
position: relative;
width: 200rpx;
height:200rpx;
margin-left: 30rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius:5rpx;
}
.medImg{
width:120rpx;
height:128rpx;
}
.cell{
padding:20rpx 0;
background: #FFFFFF;
box-shadow: 0rpx 2rpx 16rpx 2rpx rgba(0,0,0,0.02);
border-radius: 12rpx;
margin:0 32rpx 20rpx;
display: flex;
}
.rightbox{
flex:1;
margin-left: 24rpx;
margin-right: 20rpx;
}
.scrollbox{
margin-top: 20rpx;
flex:1;
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
}
.bottombox{
display: flex;
align-items: center;
justify-content: space-between;
}
.info .name{
word-break: break-all;
font-size: 32rpx;
font-weight: 600;
color: rgba(0,0,0,0.85);
}
.company{
margin-top: 5rpx;
font-size: 26rpx;
font-weight: 400;
color: rgba(0,0,0,0.45);
}
.price{
font-size: 28rpx;
color: #EF4F20;
}
.rightbox{
display: flex;
flex-direction: column;
justify-content: space-between;
}
.num{
font-size: 28rpx;
font-weight: 400;
color: rgba(0,0,0,0.65);
}
+142
View File
@@ -0,0 +1,142 @@
import { API } from '../../../../utils/network/api'
const util = require('../../../../utils/util')
let api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '我的账户', //导航栏 中间的标题
},
height: app.globalData.height,
dateVisible: false,
dateText: "",
dateValue: ['2023','3'],
dialog_visible:false,
select_date: "",
balance_account: "",
amount_total_month: "",
doctor_today_inquiry_total:'',
doctor_day_completed_amount_total:'',
withdrawal_amount_month: "",
static_host: api.getStaticHost(),
bill: [],
years: [],
seasons: [
{ label: '1月', value: '1' },
{ label: '2月', value: '2' },
{ label: '3月', value: '3' },
{ label: '4月', value: '4' },
{ label: '5月', value: '5' },
{ label: '6月', value: '6' },
{ label: '7月', value: '7' },
{ label: '8月', value: '8' },
{ label: '9月', value: '9' },
{ label: '10月', value: '10' },
{ label: '11月', value: '11' },
{ label: '12月', value: '12' },
]
},
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
})
},
onShow(){
let now_date = new Date();
let now_datearr = util.getDateArr(now_date);
console.log(now_datearr);
let year = now_datearr[0];
let month = now_datearr[1];
let mmdateValue = [''+year+'',''+month+''];
this.setData({
dateValue: mmdateValue,
dateText: year+"年"
})
let date = this.data.dateValue.join("-");
this.getDoctorCenterAccount(date);
},
onColumnChange(e) {
console.log('picker onColumnChange:', e);
},
confirmDialog(){
this.setData({
dialog_visible:false
})
},
showDialog(){
this.setData({
dialog_visible:true
})
},
onPickerChange(e) {
const { key } = e.currentTarget.dataset;
const { value } = e.detail;
console.log('picker onPickerChange:', e.detail);
this.setData({
[`${key}Visible`]: false,
[`${key}Value`]: value,
[`${key}Text`]: value[0]+"年",
});
let date = value.join("-");
this.getDoctorCenterAccount(date);
},
onPickerCancel(e) {
const { key } = e.currentTarget.dataset;
console.log(e, '取消');
console.log('picker1 onPickerCancel:');
this.setData({
[`${key}Visible`]: false,
});
},
onSeasonPicker() {
this.setData({ dateVisible: true });
},
showPop(){
this.setData({
dateVisible: true
});
},
getDoctorCenterAccount(date){
//获取医生我的账户数据
api.getDoctorCenterAccount({date:date}).then(response => {
console.log(response);
this.setData({
balance_account: response.data.balance_account,
amount_total_month: response.data.amount_total_month,
doctor_today_inquiry_total:response.data.doctor_today_inquiry_total,
doctor_day_completed_amount_total:response.data.doctor_day_completed_amount_total,
withdrawal_amount_month: response.data.withdrawal_amount_month,
bill: response.data.bill,
})
}).catch(errors => {console.error(errors);})
},
goTixian(){
app.go('/user/pages/yishi/cash/index')
},
goDetail(e){
let url = e.currentTarget.dataset.url;
let md = e.currentTarget.dataset.md;
let date = this.data.dateValue[0]+"-"+md;
console.log(date);
app.go(url+"?date="+date);
},
go(e){
let url = e.currentTarget.dataset.url;
app.go(url);
},
})
+14
View File
@@ -0,0 +1,14 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"van-image": "@vant/weapp/image/index",
"t-picker": "tdesign-miniprogram/picker/picker",
"t-picker-item": "tdesign-miniprogram/picker-item/picker-item",
"van-icon": "@vant/weapp/icon/index",
"t-dialog": "tdesign-miniprogram/dialog/dialog",
"van-cell": "@vant/weapp/cell/index",
"van-cell-group": "@vant/weapp/cell-group/index",
"van-empty": "@vant/weapp/empty/index"
}
}
+78
View File
@@ -0,0 +1,78 @@
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container">
<!-- <view class="top">
<view class="top_txt">
<view style="font-size: 30rpx;">
账户当前余额:
</view>
<view style="font-size: 40rpx;">
¥ {{balance_account}}
</view>
</view>
</view> -->
<view class="monthbox">
<view class="titlebox">
<view class="name">账户余额(元)</view>
<van-icon name="question-o" class="question" bindtap="showDialog"/>
</view>
<view class="accoutbox">
<view class="accountNum"><text class="mark">¥</text>{{balance_account}}</view>
<view class="tixian" bindtap="goTixian">提现</view>
</view>
<view class="line"></view>
<view class="cashbox">
<view class="today">
<view class="titlename">今日接诊收入</view>
<view class="money">¥{{doctor_today_inquiry_total}}</view>
</view>
<view class="finish">
<view class="titlename">已完成待入账</view>
<view class="money">¥{{doctor_day_completed_amount_total}}</view>
</view>
</view>
<!-- <view class="month" bindtap="showPop">{{dateText}}<van-icon name="arrow-down" color="#999" size="40rpx" /></view>
<view class="account">
<view class="account_left" style="font-size: 30rpx;">当月收益:<text style="font-size: 40rpx;">¥{{amount_total_month}}</text></view>
<view class="account_right" style="font-size: 30rpx;">当月已提取:<text style="font-size: 40rpx;">¥{{withdrawal_amount_month}}</text></view>
</view> -->
</view>
<view class="txt_title" bindtap="showPop">
{{dateText}}<van-icon name="arrow-down" color="#333" size="34rpx" />
</view>
<view class="content">
<van-cell size="large" bindtap="goDetail" data-url="/user/pages/yishi/orderdetail/index" data-md="{{item.month}}" title-style="font-size: 30rpx;" title="{{item.month}}月" value="" is-link wx:for="{{bill}}" />
<van-empty description="暂无账单" wx:if="{{ bill.length == 0 }}" />
</view>
<van-image bind:click="go" data-url="/user/user/pages/agreement_page/index?agreement_id=13" style="position: fixed; right: 0;bottom: 262rpx;" src="{{static_host}}/applet/doctor/static/images/yishi/account_rule.png" fit="heightFix" height="84rpx" aria-label="role" />
<t-picker
visible="{{dateVisible}}"
value="{{dateValue}}"
data-key="date"
title="选择日期"
cancelBtn="取消"
confirmBtn="确认"
bindchange="onPickerChange"
bindpick="onColumnChange"
bindcancel="onPickerCancel"
>
<t-picker-item options="{{years}}"></t-picker-item>
<!-- <t-picker-item options="{{seasons}}"></t-picker-item> -->
</t-picker>
<t-dialog
visible="{{ dialog_visible }}"
title="温馨提示"
>
<view slot="content" class="slotcontent">
<view class="msg">1、账户余额表示未提现的所有已经结束的订单金额总和</view>
<view class="msg">2、今日接诊收入表示今日已经接诊的订单金额总和 </view>
<view class="msg">3、已完成待入账表示近期已完成未结束的订单金额总和 </view>
</view>
<view slot="confirm-btn" class="dialog dialog_confirm_btn" bindtap="confirmDialog">
确定
</view>
</t-dialog>
</view>
+190
View File
@@ -0,0 +1,190 @@
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;
}
.monthbox{
width: 92vw;
margin: 20rpx auto 0 auto;
background-color: #ffffff;
padding:26rpx 0 20rpx;
border-radius: 20rpx;
display: flex;
flex-direction: column;
}
.month{
flex: 3;
display: flex;
align-items: center;
font-size: 50rpx;
padding-left: 20rpx;
}
.account{
flex: 2;
display: flex;
justify-content: space-around;
color: #666666;
font-size: 28rpx;
}
.account_left{
flex: 1;
text-align: center;
text-align: left;
margin-left: 20rpx;
}
.account_right{
flex: 1;
text-align: center;
text-align: left;
}
.txt_title{
font-size: 34rpx;
margin: 20rpx 0;
position: relative;
left: 4vw;
width: 20vw;
}
.content{
width: 92vw;
background-color: #fff;
margin: 0 auto;
border-radius: 20rpx;
overflow: hidden;
}
.t-picker__confirm{
color: #3CC7C0 !important;
}
.titlebox{
margin:0 30rpx;
display: flex;
}
.titlebox .name{
color: #000000;
}
.question{
color:rgba(0,0,0,0.6);
}
.tixian{
width: 200rpx;
height: 70rpx;
background: linear-gradient(310deg, #FF931A 0%, #FF931A 0%, #FCB75D 100%);
border-radius: 10rpx;
font-size: 32rpx;
display: flex;
align-items: center;
justify-content: center;
font-weight: 400;
color: #FFFFFF;
}
.accoutbox{
margin:20rpx 30rpx 0;
display: flex;
align-items: center;
justify-content: space-between;
padding-bottom: 26rpx;
}
.line{
width:100%;
height:1rpx;
background-color:#E5E5E5;
}
.mark{
font-size: 42rpx;
font-weight: 400;
color: #333333;
}
.cashbox{
margin:20rpx 30rpx 0;
display: flex;
justify-content: space-between;
}
.accountNum{
font-size: 64rpx;
font-family: ArialMT;
color: #333333;
}
.titlename{
font-size: 28rpx;
font-weight: 400;
color: #999999;
}
.today,.finish{
/* flex:1; */
}
.money{
margin-top: 16rpx;
font-size: 36rpx;
font-weight: 400;
color: #000000;
}
.van-cell:after{
left:0rpx!important;
right:0rpx!important;
}
.van-cell{
padding:35rpx 16rpx!important;
}
.dialog{
width: 100%;
text-align: center;
height: 100rpx;
line-height: 100rpx;
}
.dialog_cancel_btn{
position: relative;
}
.dialog_cancel_btn::before {
content: ' ';
position: absolute;
box-sizing: border-box;
top: 0;
left: 0;
border-top: 2px solid var(--td-border-color, #e7e7e7);
border-right: 2px solid var(--td-border-color, #e7e7e7);
transform: scale(0.5);
transform-origin: 0 0;
width: 200%;
height: 200%;
border-radius: 0;
border-top-left-radius: 0px;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
border-bottom-left-radius: 0px;
}
.dialog_confirm_btn{
border-top: 1px solid #E9E9E9;
color: #3CC7C0;
}
.t-button__content{
color: #3CC7C0 !important;
}
.t-dialog__button--text:before {
border-top: 2px solid #E9E9E9 !important;
border-left: 2px solid var(--td-border-color, #E9E9E9);
border-top-color: #E9E9E9 !important;
}
.slotcontent{
margin-top: 20rpx;
}
.slotcontent .msg{
font-size: 34rpx;
font-weight: 400;
color: #666;
line-height: 48rpx;
}
+251
View File
@@ -0,0 +1,251 @@
import { API } from '../../../../utils/network/api'
let api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '我的名片', //导航栏 中间的标题
},
height: app.globalData.height,
confirmBtn: { content: '去开启', variant: 'base', theme: 'gdxz'},
showText: false,
saveImgPath: "",
info: {},
codeImg:'',
// https://github.com/Kujiale-Mobile/Painter
template: {
width: '750px',
height: '1200px',
background: "#eee",
views: [
{
type: 'rect',//顶部背景图 0
css: {
top: '0',
left: '0',
color: '#3CC7C0',
width: '750px',
height: '350px',
},
},
{
type: 'rect',//医生信息矩形框 1
css: {
left: '30px',
top: '100px',
color: '#fff',
width: '690px',
height: '300px',
borderRadius: "10px"
},
},
{
type: 'rect',//医生二维码框 2
css: {
left: '30px',
top: '402px',
color: '#fff',
width: '690px',
height: '532px',
borderRadius: "10px"
},
},
{
type: 'image',//医生二维码图片 3
url: '',
css: {
left: '215px',
top: '458px',
width: '320px',
height: '320px',
},
},
{
type: 'image',//医生头像图片 4
url: '',
css: {
top: '40px',
left: '327px',
width: '120px',
height: '120px',
borderRadius: "50%"
},
},
{
type: 'text',//医生姓名 5
text: "张三三",
css: {
top: '172px',
left: '327px',
width: '120px',
height: '120px',
fontSize: '36px',
textAlign: 'center',
},
},
{
type: 'text',//医生职称 6
text: "主任医师",
css: {
top: '232px',
left: '30px',
width: '340px',
height: '42px',
color: '#3CC7C0',
fontSize: '30px',
textAlign: 'right',
},
},
{
type: 'text',//医生职称 7
text: "|",
css: {
top: '232px',
left: '370px',
width: '10px',
height: '42px',
color: '#3CC7C0',
fontSize: '30px',
textAlign: 'center',
},
},
{
type: 'text',//医生职称 8
text: "肝病科",
css: {
top: '232px',
left: '400px',
width: '340px',
height: '42px',
color: '#3CC7C0',
fontSize: '30px',
textAlign: 'left',
},
},
{
type: 'text',//医生医院 9
text: "首都医科大学附属北京佑安医院",
css: {
top: '284px',
left: '40px',
width: '690px',
height: '42px',
fontSize: '30px',
color: '#666666',
textAlign: 'center',
},
},
{
type: 'text',//微信长按或扫描二维码查看我的更多信息 10
text: "微信长按或扫描二维码查看我的更多信息",
css: {
top: '790px',
left: '228px',
width: '300px',
height: '62px',
lineHeight: '50px',
letterSpacing: '10px',
fontSize: '30px',
textAlign: 'center',
color: '#666666'
},
},
],
},
painter_ready: false
},
onLoad(){
//获取医生名片
api.getDoctorInfoCard().then(response => {
console.log(response);
this.setData({
info: response.data,
codeImg:response.data.qr_code_url+"?v=3.0",
"template.views[3].url" : response.data.qr_code_url,
"template.views[4].url" : response.data.avatar,
"template.views[5].text" : response.data.user_name,
"template.views[6].text" : response.data.doctor_title,
"template.views[8].text" : response.data.department_custom_name,
"template.views[9].text" : response.data.hospital_name,
})
}).then(res => {
this.setData({
painter_ready: true
})
}).catch(errors => {console.error(errors);})
},
onImgOK(e){
console.log(e.detail.path);
this.setData({
saveImgPath: e.detail.path
})
},
openSetting(){
wx.openSetting({
success(res){
console.log("openSetting success: ", res)
},
fail(res){
console.log("openSetting fail: ", res)
}
})
},
onSave(){
let _this = this;
wx.getSetting({
success(res){
console.log(res.authSetting)
if (!res.authSetting['scope.writePhotosAlbum']) {
wx.authorize({
scope: 'scope.writePhotosAlbum',
success () {
_this.saveImg();
},
fail(res){
_this.setData({
showText: true
})
}
})
}else{
_this.saveImg();
}
}
})
},
/* 保存图片 */
saveImg() {
let tempFilePath = this.data.saveImgPath;
wx.saveImageToPhotosAlbum({
filePath: tempFilePath,
success: function (res) {
wx.showToast({
title: '保存图片成功',
})
},
fail: function (err) {
wx.showToast({
title: '保存图片失败' ,
})
}
})
},
onVisibleChange(e) {
this.setData({
visible: e.detail.visible,
});
},
showVisible(){
this.setData({
visible: !this.data.visible,
});
},
// onShareAppMessage(e) {
// return {
// title: '自定义转发标题',
// path: '/Pages/yishi/mycard/index',
// }
// }
})
+14
View File
@@ -0,0 +1,14 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"painter":"../../../commpents/painter/painter",
"t-avatar": "tdesign-miniprogram/avatar/avatar",
"van-image": "@vant/weapp/image/index",
"t-icon": "tdesign-miniprogram/icon/icon",
"van-cell": "@vant/weapp/cell/index",
"van-cell-group": "@vant/weapp/cell-group/index",
"van-button": "@vant/weapp/button/index",
"t-dialog": "tdesign-miniprogram/dialog/dialog"
}
}
+46
View File
@@ -0,0 +1,46 @@
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container" style="height: calc(100vh - 96rpx - {{height}}px);">
<view class="bk"></view>
<view class="content">
<view class="name">{{info.user_name}}</view>
<view class="zhicheng">
<view class="zhicheng_title">{{info.doctor_title}}</view>
<view class="zhicheng_c"> | </view>
<view class="zhicheng_name">{{info.department_custom_name }}</view>
</view>
<view class="hospital">{{info.hospital_name}}</view>
</view>
<view class="photo">
<t-avatar class="avatar" size="large" image="{{info.avatar}}" />
</view>
<view class="qrcode">
<van-image bindtap="showVisible" src="{{codeImg}}" fit="heightFix" width="150" height="150" aria-label="qrcode" />
<text>让您的患者微信扫码,线上复诊更便捷</text>
</view>
<view class="block" wx:if="{{painter_ready}}">
<view class="header">
<!-- <view class="title">分享我的名片到</view> -->
</view>
<view class="imgbox">
<view class="imgbox_item" bindtap="onSave">
<t-icon color="#fff" name="download" size="24" data-name="download" class="t_icon" />
<text class="imgbox_item_txt">
保存到相册,分享到朋友圈
</text>
</view>
</view>
</view>
<t-dialog
visible="{{showText}}"
content="您已禁止保存名片到相册,现在去开启"
confirm-btn="{{ confirmBtn }}"
close-btn="{{true}}"
bind:confirm="openSetting"
/>
</view>
<painter palette="{{template}}" customStyle="position:fixed;top:-9999rpx;" bind:imgOK="onImgOK" wx:if="{{painter_ready}}"/>
+132
View File
@@ -0,0 +1,132 @@
.container{
background-color: #F4F4F4;
width: 100vw;
position: relative;
}
.bk{
position: absolute;
background-color: #3CC7C0;
height: 300rpx;
width: 100%;
}
.content{
position: absolute;
left: 50%;
transform: translateX(-50%);
top: 120rpx;
width: 92vw;
border-radius: 20rpx;
display: flex;
background-color: rgb(255, 255, 255);
flex-direction: column;
justify-content: center;
align-items: center;
padding: 100rpx 0 50rpx 0;
}
.photo{
position: absolute;
width: 120rpx;
height: 120rpx;
border-radius: 50%;
left: 50%;
transform: translateX(-50%);
top: 50rpx;
box-shadow: 0rpx 2rpx 4rpx 0rpx rgba(0,0,0,1);
}
.name{
font-size: 36rpx;
margin-bottom: 10rpx;
}
.zhicheng{
font-size: 30rpx;
color: #3CC7C0;
margin-bottom: 10rpx;
display: flex;
width: 100%;
}
.zhicheng_title{
flex: 8;
text-align: right;
}
.zhicheng_c{
flex: 1;
text-align: center;
}
.zhicheng_name{
flex: 8;
}
.hospital{
font-size: 30rpx;
color: #666;
}
.qrcode{
position: absolute;
left: 50%;
transform: translateX(-50%);
top: calc(120rpx + 100rpx + 36rpx + 30rpx + 30rpx + 50rpx + 59rpx);
padding: 50rpx 0;
background-color: #fff;
border-radius: 20rpx;
width: 92vw;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
color: #666;
font-size: 30rpx;
}
.block {
width: 100vw;
background: #fff;
border-top-left-radius: 30rpx;
border-top-right-radius: 30rpx;
position: fixed;
bottom: 0;
padding-bottom: 50rpx;
}
.wrapper {
margin: 32rpx;
display: block;
}
.header {
display: flex;
align-items: center;
padding: 20rpx ;
}
.title {
flex: 1;
text-align: center;
font-size: 30rpx;
}
.cnacle{
position: fixed;
bottom: 50rpx;
text-align: center;
width: 100%;
height: 100rpx;
line-height: 100rpx;
}
.imgbox{
display: flex;
justify-content: space-around;
}
.imgbox_item{
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
font-size: 23rpx;
color: #646566;
}
.imgbox_item_txt{
margin-top: -15rpx;
}
.t_icon{
background-color: #3B83FF;
padding: 30rpx;
border-radius: 50%;
}
+138
View File
@@ -0,0 +1,138 @@
import { API } from '../../../../utils/network/api'
let api = new API()
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '我的信息', //导航栏 中间的标题
},
height: app.globalData.height,
card_name: "",
card_num_mask: "",
doctor_id: "",
idcard_status: 0,
iden_auth_status: 0,
is_bind_bank: 0,
user_name: "",
brief_introduction: "点击编辑",
v_show: false,
v_message: "",
next_url: "/user/pages/yishi/identity/index"
},
onLoad(){
//获取医生我的账户数据
api.getDoctorCenterInfo().then(response => {
console.log(response);
this.setData({
doctor_id: response.data.doctor_id,
brief_introduction: response.data.brief_introduction==null?this.data.brief_introduction:response.data.brief_introduction,
idcard_status:response.data.idcard_status,
iden_auth_status:response.data.iden_auth_status,
card_name:response.data.card_name,
card_num_mask:response.data.card_num_mask,
})
}).catch(errors => {console.error(errors);})
},
onShow(){
let usertype = wx.getStorageSync('usertype');
let user_id = wx.getStorageSync("user_id_"+usertype);
let is_bind_bank = wx.getStorageSync(user_id+'_is_bind_bank');
this.setData({
is_bind_bank: is_bind_bank
})
},
logOut(){
console.log("退出登录");
wx.showModal({
title: '确认退出登录',
content: '退出登录后您需要重新登录',
success (res) {
if (res.confirm) {
console.log('用户点击确定')
let usertype = wx.getStorageSync('usertype');
wx.setStorageSync('AUTH_TOKEN_'+usertype, "");
wx.setStorageSync('user_id_'+usertype, "");
wx.setStorageSync('client_user_id_'+usertype, "");
app.imLogout();
app.globalData.isLogin=false;
wx.setStorageSync('usertype','')
app.go("/Pages/index/index");
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
},
go(e){
console.log(2222)
if(this.data.idcard_status != 1){
this.setData({
v_show: true,
v_message: "请先进行实名认证",
next_url: "/user/pages/yishi/identity/index"
})
return;
}
if(this.data.iden_auth_status != 1){
this.setData({
v_show: true,
v_message: "请先进行医师身份认证",
next_url: "/user/pages/yishi/identity/index?selected_tab=1",
})
return;
}
if(this.data.is_bind_bank != 1){
this.setData({
v_show: true,
v_message: "请您先绑定结算银行卡",
next_url: "/user/pages/yishi/bankcard/index",
})
return;
}
app.go(e.currentTarget.dataset.url)
},
go1(e){
if(this.data.idcard_status != 1){
this.setData({
v_show: true,
v_message: "请先进行实名认证",
next_url: "/user/pages/yishi/identity/index"
})
return;
}
app.go(e.currentTarget.dataset.url)
},
go2(e){
if(this.data.idcard_status != 1){
this.setData({
v_show: true,
v_message: "请先进行实名认证",
next_url: "/user/pages/yishi/identity/index"
})
return;
}
if(this.data.iden_auth_status != 1){
this.setData({
v_show: true,
v_message: "请先进行医师身份认证",
next_url: "/user/pages/yishi/identity/index?selected_tab=1",
})
return;
}
app.go(e.currentTarget.dataset.url)
},
goIn(){
this.setData({
v_show: false
})
app.go(this.data.next_url)
},
cancelDialog(){
this.setData({
v_show: false
})
}
})
+10
View File
@@ -0,0 +1,10 @@
{
"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",
"t-dialog": "tdesign-miniprogram/dialog/dialog"
}
}
+38
View File
@@ -0,0 +1,38 @@
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container" style="height: calc(100vh - 96rpx - {{height}}px);">
<van-cell-group>
<van-cell size="large" bindtap="go" data-url="/user/pages/yishi/mycard/index" title="我的名片" value="分享名片" is-link />
<van-cell size="large" bindtap="go" data-url="/user/pages/yishi/myprofile/index" title="我的简介" value="{{brief_introduction == ''?'点击编辑':brief_introduction}}" is-link />
<van-cell size="large" bindtap="go1" data-url="/user/pages/yishi/attestation/index?card_name={{card_name}}&card_num_mask={{card_num_mask}}" link-type="navigateTo" title="实名认证"
value="{{idcard_status==0?'未认证':idcard_status==1?'已认证':'认证失败'}}" is-link />
<van-cell size="large" bindtap="go2" data-url="/user/pages/yishi/practicing/index" link-type="navigateTo" title="医师认证"
value="{{iden_auth_status==0?'未认证':iden_auth_status==1?'已认证':iden_auth_status==2?'审核中':'认证失败'}}" is-link />
<van-cell size="large" bindtap="go" data-url="/user/pages/yishi/notify/notify" link-type="navigateTo" title="消息通知"
is-link />
</van-cell-group>
<van-button bind:click="logOut" custom-style="width: 92vw;margin: 50rpx auto;border-radius: 10rpx;" type="primary" color="#3CC7C0" block>退出登录</van-button>
<!-- <van-dialog
title="温馨提示"
message="{{v_message}}"
show="{{ v_show }}"
show-cancel-button
confirm-button-color="#3CC7C0"
bind:confirm="goIn"
/> -->
<t-dialog
visible="{{ v_show }}"
title="温馨提示"
content="{{v_message}}"
>
<view slot="cancel-btn" class="dialog dialog_cancel_btn" bindtap="cancelDialog">
取消
</view>
<view slot="confirm-btn" class="dialog dialog_confirm_btn" bindtap="goIn">
确定
</view>
</t-dialog>
</view>
+22
View File
@@ -0,0 +1,22 @@
.van-cell__value {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.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;
}
.van-cell {
padding: 32rpx !important;
}
+25
View File
@@ -0,0 +1,25 @@
const app = getApp()
Page({
data: {
navbarData: {
showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
title: '我的简介', //导航栏 中间的标题
},
page_meta_show: false
},
goBack(){
wx.navigateBack();
},
showPageMeta(){
console.log("showPageMeta from indenity");
this.setData({
page_meta_show: true
})
},
hidePageMeta(){
console.log("hidePageMeta from indenity");
this.setData({
page_meta_show: false
})
}
})
+8
View File
@@ -0,0 +1,8 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"myprofile": "../../../commpents/myprofile/index",
"van-button": "@vant/weapp/button/index"
}
}
+10
View File
@@ -0,0 +1,10 @@
<!-- 设置滚动穿透 -->
<page-meta page-style="{{ page_meta_show ? 'overflow: hidden;' : '' }}" />
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container" style="height: calc(100vh - 96rpx - {{height}}px);">
<myprofile indentity="{{false}}"
bind:showPageMeta="showPageMeta"
bind:hidePageMeta="hidePageMeta"
/>
<view style="height: 50rpx;"></view>
</view>
+50
View File
@@ -0,0 +1,50 @@
.t-cell__note,.t-class-note,.note{
font-size: 16px !important;
}
.t-tabs__item--active{
color: #49B9AD !important;
}
.t-tabs__track{
background-color: #49B9AD !important;
}
.t-icon-check{
color: #49B9AD !important;
}
.zhuanchang_btn--confirm {
color: #3cc7c0;
}
.van-picker__cancel{
font-size: 32rpx !important;
}
.van-picker__confirm{
color: #3cc7c0 !important;
font-size: 32rpx !important;
}
.van-picker__title {
font-size: 34rpx !important;
}
.van-cell {
padding: 32rpx !important;
}
/* 自定义医院搜索框样式 */
.van-search__field .van-cell{
padding: 10rpx !important;
}
.van-picker__columns {
height: 264px !important;
top: 40px !important;
}
.van-search {
top: -270px !important;
position: relative !important;
}
.van-empty{
position: absolute;
width: 100%;
left: 50%;
top: 180rpx;
transform: translateX(-50%);
z-index: 9999999;
background: rgb(255, 255, 255);
}
+31
View File
@@ -0,0 +1,31 @@
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,
notice: {}
},
onLoad(options){
let notice_id = options.notice_id;
api.getDoctorMessageSystemDetail({notice_id: notice_id}).then(response => {
console.log(response);
this.setData({
notice: response.data
})
}).catch(errors => {console.error(errors);})
},
go(e){
let link_type = this.data.notice.link_type;
let link_params = this.data.notice.link_params;
wx.showToast({
title: '无数据,不能调试',
icon: "error"
})
}
})
@@ -0,0 +1,7 @@
{
"component": true,
"usingComponents": {
"te-nav-bar": "../../../../commpents/te_navbar/index",
"van-button": "@vant/weapp/button/index"
}
}
+26
View File
@@ -0,0 +1,26 @@
<te-nav-bar navbar-data='{{navbarData}}' ></te-nav-bar>
<view class="container" style="height: calc(100vh - 96rpx - {{height}}px);">
<view class="data">
<view class="item">
<view class="title">发信人</view><text>:</text>
<view class="conent">{{notice.from_name}}</view>
</view>
<view class="item">
<view class="title">标题</view><text>:</text>
<view class="conent">{{notice.notice_title}}</view>
</view>
<view class="item">
<view class="title">时间</view><text>:</text>
<view class="conent">{{notice.notice_send_time}}</view>
</view>
<view class="item">
<view class="title">内容</view><text>:</text>
<view class="conent">{{notice.notice_content}}</view>
</view>
<van-button bind:click="go" color="#3CC7C0" custom-style="border-radius: 10rpx;margin: 30rpx 0;" block wx:if="{{notice.button_type == 1}}">我的账户</van-button>
<van-button bind:click="go" color="#3CC7C0" custom-style="border-radius: 10rpx;margin: 30rpx 0;" block wx:if="{{notice.button_type == 2}}">联系客服</van-button>
<van-button bind:click="go" color="#3CC7C0" custom-style="border-radius: 10rpx;margin: 30rpx 0;" block wx:if="{{notice.button_type == 3}}">查看协议</van-button>
<van-button bind:click="go" color="#3CC7C0" custom-style="border-radius: 10rpx;margin: 30rpx 0;" block wx:if="{{notice.button_type == 4}}">订单详情</van-button>
<van-button bind:click="go" color="#3CC7C0" custom-style="border-radius: 10rpx;margin: 30rpx 0;" block wx:if="{{notice.button_type == 5}}">查看处方</van-button>
</view>
</view>
+28
View File
@@ -0,0 +1,28 @@
page{
background-color: #F4F4F4;
}
.container{
width: 100vw;
}
.data{
background-color: #fff;
margin: 20rpx auto;
padding: 20rpx 30rpx;
}
.item{
display: flex;
margin-bottom: 40rpx;
}
.title{
flex: 1;
font-size: 34rpx;
color: #333333;
text-align: justify;
text-justify:distribute-all-lines;
text-align-last: justify;
}
.conent{
flex: 4;
font-size: 30rpx;
color: #666666;
}

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