患者端1.0

This commit is contained in:
zoujiandong 2023-11-27 16:14:26 +08:00
parent a74582961e
commit a92f1621b1
44 changed files with 1750 additions and 145 deletions

View File

@ -0,0 +1 @@
{"containers":[],"config":{}}

View File

@ -1,5 +1,5 @@
<block> <block>
<view class="audio-message {{isMine?'my-audio':''}}"> <view class="audio-message {{isMine?'my-audio':'your-audio'}}">
<!-- 默认状态 未播放 --> <!-- 默认状态 未播放 -->
<view class='audio' wx:if="{{!isPlay}}" bindtap='audioPlay' data-id="{{message.ID}}" > <view class='audio' wx:if="{{!isPlay}}" bindtap='audioPlay' data-id="{{message.ID}}" >
<image class="image {{isMine?'my-image':''}}" src="../../../../../static/images/sendingaudio.png"/> {{renderDom[0].second}}s <image class="image {{isMine?'my-image':''}}" src="../../../../../static/images/sendingaudio.png"/> {{renderDom[0].second}}s

View File

@ -4,9 +4,22 @@
border: 1px solid #D9D9D9; border: 1px solid #D9D9D9;
} }
.my-audio { .my-audio {
border-radius: 10px 2px 10px 10px; position: relative;
background: rgba(0,110,255,0.10); border-radius: 10px 10px 10px 10px;
border: 1px solid rgba(0,110,255,0.30); background: rgb(212, 239, 241);
border: 1rpx solid #1ACAD3;
}
.my-audio::after{
content:'';
position: absolute;
top: 35rpx;
right: -19rpx;
transform: translate(-50%,-50%) rotate(-135deg);
width: 16rpx;
height: 16rpx;
background: rgb(212, 239, 241);
border: 1rpx solid #1ACAD3;
border-style: none none solid solid
} }
.audio { .audio {
/*border-radius: 2px 10px 10px 10px;*/ /*border-radius: 2px 10px 10px 10px;*/
@ -30,3 +43,28 @@
height: 16px; height: 16px;
transform:rotate(180deg) transform:rotate(180deg)
} }
.my-text {
position: relative;
border-radius: 10px 10px 10px 10px;
background: rgb(212, 239, 241);
border: 1rpx solid #1ACAD3;
}
.your-audio{
position: relative;
border-radius: 10px 10px 10px 10px;
background: rgb(255, 255, 255);
border: 1rpx solid #D8D8D8;
}
.your-audio::after{
content:'';
position: absolute;
top: 35rpx;
left: 0;
transform: translate(-50%,-50%) rotate(45deg);
width: 16rpx;
height: 16rpx;
background: rgb(255, 255, 255);
border: 1rpx solid #D8D8D8;
border-style: none none solid solid
}

View File

@ -181,7 +181,15 @@ Component({
payload: { payload: {
file: res, file: res,
}, },
cloudCustomData: JSON.stringify({
order_inquiry_id:this.data.order_inquiry_id,
inquiry_type:this.data.inquiry_type,
message_rounds:this.data.msgData.msg_round,
patient_family_data:this.data.patient_family_data,
is_system:0
})
}); });
//this.sendCallback();
this.$sendTIMMessage(message); this.$sendTIMMessage(message);
} }
} }
@ -260,29 +268,32 @@ Component({
// 长按录音 // 长按录音
handleLongPress(e) { handleLongPress(e) {
wx.aegis.reportEvent({ if(this.setMsgRound()){
name: 'messageType', wx.aegis.reportEvent({
ext1: 'messageType-audio', name: 'messageType',
ext2: wx.$chat_reportType, ext1: 'messageType-audio',
ext3: wx.$chat_SDKAppID, ext2: wx.$chat_reportType,
}); ext3: wx.$chat_SDKAppID,
this.recorderManager.start({ });
duration: 60000, // 录音的时长,单位 ms最大值 60000010 分钟) this.recorderManager.start({
sampleRate: 44100, // 采样率 duration: 60000, // 录音的时长,单位 ms最大值 60000010 分钟)
numberOfChannels: 1, // 录音通道数 sampleRate: 44100, // 采样率
encodeBitRate: 192000, // 编码码率 numberOfChannels: 1, // 录音通道数
format: 'aac', // 音频格式,选择此格式创建的音频消息,可以在即时通信 IM 全平台Android、iOS、微信小程序和Web互通 encodeBitRate: 192000, // 编码码率
}); format: 'aac', // 音频格式,选择此格式创建的音频消息,可以在即时通信 IM 全平台Android、iOS、微信小程序和Web互通
this.setData({ });
startPoint: e.touches[0], this.setData({
title: '正在录音', startPoint: e.touches[0],
// isRecording : true, title: '正在录音',
// canSend: true, // isRecording : true,
notShow: true, // canSend: true,
isShow: false, notShow: true,
isRecording: true, isShow: false,
popupToggle: true, isRecording: true,
}); popupToggle: true,
});
}
}, },
// 录音时的手势上划移动距离对应文案变化 // 录音时的手势上划移动距离对应文案变化
@ -377,7 +388,7 @@ Component({
sourceType: [type], sourceType: [type],
mediaType: [mediaType], mediaType: [mediaType],
success: (res) => { success: (res) => {
this.sendCallback(); //this.sendCallback();
const mediaInfoList = res.tempFiles; const mediaInfoList = res.tempFiles;
mediaInfoList.forEach((mediaInfo) => { mediaInfoList.forEach((mediaInfo) => {
fileList.push({ type: res.type, tempFiles: [{ tempFilePath: mediaInfo.tempFilePath }] }); fileList.push({ type: res.type, tempFiles: [{ tempFilePath: mediaInfo.tempFilePath }] });
@ -731,7 +742,7 @@ Component({
const to =this.getToAccount(); const to =this.getToAccount();
const text = flag ? msg : this.data.message; const text = flag ? msg : this.data.message;
const { FEAT_NATIVE_CODE } = constant; const { FEAT_NATIVE_CODE } = constant;
this.sendCallback(); //this.sendCallback();
const message = wx.$TUIKit.createTextMessage({ const message = wx.$TUIKit.createTextMessage({
to, to,
conversationType: this.data.conversation.type, conversationType: this.data.conversation.type,
@ -953,6 +964,7 @@ Component({
ext3: wx.$chat_SDKAppID, ext3: wx.$chat_SDKAppID,
}); });
} }
this.sendCallback();
}) })
.catch((error) => { .catch((error) => {
logger.log(`| TUI-chat | message-input | sendMessageError: ${error.code} `); logger.log(`| TUI-chat | message-input | sendMessageError: ${error.code} `);

View File

@ -13,17 +13,17 @@
</view> </view>
<view class="TUI-message-input"> <view class="TUI-message-input">
<!-- <image class="TUI-icon" bindtap="switchAudio" src="{{isAudio ? '../../../../static/assets/keyboard.svg' : '../../../../static/assets/audio.svg'}}" /> --> <image class="TUI-icon" bindtap="switchAudio" src="{{isAudio ? '../../../../static/assets/keyboard.svg' : '../../../../static/assets/audio.svg'}}" />
<view wx:if="{{!isAudio || isEmoji}}" class="TUI-message-input-main {{ focus && 'TUI-message-input-main-focus'}}"> <view wx:if="{{!isAudio || isEmoji}}" class="TUI-message-input-main {{ focus && 'TUI-message-input-main-focus'}}">
<view class="textbox" hidden="{{hideText}}"> <view class="textbox" hidden="{{hideText}}">
</view> </view>
<textarea class="TUI-message-input-area" adjust-position="{{true}}" cursor-spacing="-300" placeholder="请输入文字" value="{{message}}" bindinput="onInputValueChange" maxlength="-1" type="text" auto-height="{{true}}" placeholder-class="textarea-placeholder" confirm-type="send" show-confirm-bar="{{false}}" disable-default-padding="{{true}}" bindfocus="inputBindFocus" bindblur="inputBindBlur" bindconfirm="sendTextMessage" /> <textarea class="TUI-message-input-area" adjust-position="{{true}}" cursor-spacing="-300" placeholder="请输入文字" value="{{message}}" bindinput="onInputValueChange" maxlength="-1" type="text" auto-height="{{true}}" placeholder-class="textarea-placeholder" confirm-type="send" show-confirm-bar="{{false}}" disable-default-padding="{{true}}" bindfocus="inputBindFocus" bindblur="inputBindBlur" bindconfirm="sendTextMessage" />
</view> </view>
<view wx:if="{{isAudio}}" class="TUI-message-input-main" bind:longpress="handleLongPress" bind:touchmove="handleTouchMove" bind:touchend="handleTouchEnd" style="display: flex; justify-content: center; font-size: 32rpx; font-family: PingFangSC-Regular; height: 30px"> <view wx:if="{{isAudio}}" class="TUI-message-input-main audio-main" bind:longpress="handleLongPress" bind:touchmove="handleTouchMove" bind:touchend="handleTouchEnd" style="display: flex; justify-content: center; font-size: 32rpx; font-family: PingFangSC-Regular; height: 30px">
<text>{{text}}</text> <text>{{text}}</text>
</view> </view>
<view class="TUI-message-input-functions" hover-class="none"> <view class="TUI-message-input-functions" hover-class="none" wx:if="{{!isAudio || isEmoji}}">
<view class="TUI-sendMessage-btn"> <view class="TUI-sendMessage-btn">
<image class="TUI-icon" bindtap="handleEmoji" src="../../../../static/images/emoji.png" /> <image class="TUI-icon" bindtap="handleEmoji" src="../../../../static/images/emoji.png" />
</view> </view>

View File

@ -7,6 +7,7 @@
display: flex; display: flex;
position: relative; position: relative;
padding-bottom: 16rpx; padding-bottom: 16rpx;
align-items: center;
margin: 30rpx 32rpx 0; margin: 30rpx 32rpx 0;
/* background-color: #F1F1F1; */ /* background-color: #F1F1F1; */
/* width: 100vw; */ /* width: 100vw; */
@ -57,6 +58,9 @@
display: flex; display: flex;
align-items: center; align-items: center;
} }
.audio-main{
padding:12rpx 10rpx;
}
.TUI-message-input-main-focus { .TUI-message-input-main-focus {

22
api/sickRecord.js Normal file
View File

@ -0,0 +1,22 @@
import {request} from '../utils/request.js'
function isExist(data){ //检测家庭成员是否存在病情记录
return request('/patient/pathography/exist','GET',data,false)
};
function pathographyList(data){ //获取家庭成员病情记录列表
return request('/patient/pathography','GET',data)
};
function pathographyDetail(id){ //获取家庭成员病情记录列表
return request('/patient/pathography/'+id,'GET')
};
function pathographyGroup(){ //获取家庭成员病情记录分组
return request('/patient/pathography/group','GET')
};
function pathographyDelete(id){ // 删除家庭成员病情记录
return request('/patient/pathography/'+id,'DELETE')
};
module.exports={
isExist,
pathographyList,
pathographyDetail
}

20
app.js
View File

@ -34,6 +34,7 @@ App({
}) })
}, },
onShow: function (options) { onShow: function (options) {
console.log(options)
if (options.scene == 1007 || options.scene == 1008) { if (options.scene == 1007 || options.scene == 1008) {
this.globalData.origion = 1; this.globalData.origion = 1;
} else if (options.scene == 1014 || options.scene == 1017) { } else if (options.scene == 1014 || options.scene == 1017) {
@ -41,12 +42,12 @@ App({
} else { } else {
this.globalData.origion = 0; this.globalData.origion = 0;
}; };
this.imLogin(); this.imLogin(options);
}, },
method: router, method: router,
hostConfig: hostConfig, hostConfig: hostConfig,
imLogin() { imLogin(options={},type=1,callback=()=>{}) {
imSign().then(data => { imSign().then(data => {
wx.$TUIKit = TIM.create({ wx.$TUIKit = TIM.create({
SDKAppID: this.globalData.config.SDKAPPID, SDKAppID: this.globalData.config.SDKAPPID,
@ -76,8 +77,21 @@ App({
userSig: data userSig: data
}).then(res => { }).then(res => {
console.log("登录成功"); console.log("登录成功");
callback();
}).catch(function (imError) { }).catch(function (imError) {
console.warn('login error:', imError); // 登录失败的相关信息 //console.warn('login error:', imError); // 登录失败的相关信息
if(type==1){
wx.showToast({
title: '登陆失败',
icon:"none"
})
};
if(!(options.path=="pages/mobileLogin/mobileLogin" || options.path=='pages/login/login')){
wx.navigateTo({
url: '/pages/login/login',
})
}
}); });
wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.SDK_READY, this.onSDKReady); wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.SDK_READY, this.onSDKReady);
} else { } else {

View File

@ -50,7 +50,11 @@
"pages/imgPreview/imgpreview", "pages/imgPreview/imgpreview",
"pages/sugarDetail/sugarDetail", "pages/sugarDetail/sugarDetail",
"pages/sugarSickInfo/sugarSickInfo", "pages/sugarSickInfo/sugarSickInfo",
"pages/notify/notify" "pages/notify/notify",
"pages/inquiryForm/inquiryForm",
"pages/sickManage/sickManage",
"pages/sickRecord/sickRecord",
"pages/sickDetail/sickDetail"
], ],
"subPackages": [ "subPackages": [
{ {

View File

@ -113,7 +113,15 @@ font-size: 32rpx!important;
flex:none!important; flex:none!important;
z-index:1; z-index:1;
} }
.onlinebox .icon{
top:60rpx;
left:50%;
position: absolute;
margin-left: -48rpx;
width:96rpx;
height:34rpx;
border-radius: 0;
}
/* .van-dialog__cancel{ /* .van-dialog__cancel{
border-right: 1px solid rgba(0,0,0,0.1)!important; border-right: 1px solid rgba(0,0,0,0.1)!important;
} */ } */

BIN
assets/images/online.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -24,6 +24,11 @@ Component({
handleFocus(){ handleFocus(){
this.triggerEvent('handleFocus',true) this.triggerEvent('handleFocus',true)
}, },
goInquirtForm(){
wx.navigateTo({
url: '/pages/sickDetail/sickDetail',
})
}
}, },
}) })

View File

@ -1,7 +1,7 @@
<!--components/navbar/navbar.wxml--> <!--components/navbar/navbar.wxml-->
<view class="barcontain"> <view class="barcontain">
<view class="barcon"> <view class="barcon">
<text class="text">肝胆相照互联网医院</text> <text class="text" bindtap="goInquirtForm">肝胆相照互联网医院</text>
<view class="scon"> <view class="scon">
<input type="text" placeholder="输入姓名或医院查找医生" value="{{keyWord}}" disabled="{{true}}" bindtap="handleFocus" confirm-type="search" class="ipt"/> <input type="text" placeholder="输入姓名或医院查找医生" value="{{keyWord}}" disabled="{{true}}" bindtap="handleFocus" confirm-type="search" class="ipt"/>
<image src="{{img_host+'/ss.png'}}" class="ss"></image> <image src="{{img_host+'/ss.png'}}" class="ss"></image>

View File

@ -20,6 +20,7 @@ Page({
city_id:'', city_id:'',
keyword:'', keyword:'',
lock:false, lock:false,
is_online:0,
sort_order:1, sort_order:1,
navName:"专家问诊", navName:"专家问诊",
scrollHeight:300, scrollHeight:300,
@ -60,6 +61,11 @@ Page({
delta: 1, delta: 1,
}) })
}, },
toggleOnline(){
this.setData({
is_online:this.data.is_online==0?1:0
})
},
onScroll(event) { onScroll(event) {
wx.createSelectorQuery().select('#scroller') wx.createSelectorQuery().select('#scroller')
.boundingClientRect((res) => { .boundingClientRect((res) => {
@ -206,12 +212,13 @@ Page({
this.getDoctorList() this.getDoctorList()
}, },
getDoctorList(){ getDoctorList(){
let {expertise_id,province_id, city_id,sort_order,keyword,page,pageNumber,is_search_welfare_reception}=this.data; let {expertise_id,province_id, city_id,sort_order,keyword,page,pageNumber,is_search_welfare_reception,is_online}=this.data;
doctorList({ doctorList({
expertise_id:expertise_id, expertise_id:expertise_id,
province_id:province_id, province_id:province_id,
city_id:city_id, city_id:city_id,
sort_order: sort_order, sort_order: sort_order,
is_online,
keyword:keyword, keyword:keyword,
is_search_welfare_reception: is_search_welfare_reception, is_search_welfare_reception: is_search_welfare_reception,
page:page, page:page,

View File

@ -19,11 +19,14 @@
</view> </view>
<view class="dropdown"> <view class="dropdown">
<view class="bar"></view>
<van-dropdown-menu active-color="#3CC7C0" overlay="{{overlay}}" > <van-dropdown-menu active-color="#3CC7C0" overlay="{{overlay}}" style="width:66.66%;position: relative;">
<view class="bar"></view>
<van-dropdown-item title-class="droptitle {{selectarea?'active':''}}" title="{{position}}" bind:open="openCity" bind:close="closeCity" id="item" popup-style="itemPop" > </van-dropdown-item> <van-dropdown-item title-class="droptitle {{selectarea?'active':''}}" title="{{position}}" bind:open="openCity" bind:close="closeCity" id="item" popup-style="itemPop" > </van-dropdown-item>
<view class="dropbar"></view>
<van-dropdown-item title-class="droptitle {{selectkind?'active':''}}" value="{{ sort_order }}" options="{{ option }}" bind:change="changeSorder" /> <van-dropdown-item title-class="droptitle {{selectkind?'active':''}}" value="{{ sort_order }}" options="{{ option }}" bind:change="changeSorder" />
</van-dropdown-menu> </van-dropdown-menu>
<view class="dropOnline {{is_online==1?'active':''}}" bindtap="toggleOnline">优先在线</view>
</view> </view>
@ -35,6 +38,9 @@
<image src="{{item.avatar}}" wx:if="{{item.avatar}}" mode="aspectFill"></image> <image src="{{item.avatar}}" wx:if="{{item.avatar}}" mode="aspectFill"></image>
<image src="{{img_host+'/octor_avatar.png'}}" wx:else></image> <image src="{{img_host+'/octor_avatar.png'}}" wx:else></image>
<view class="onlinebox" wx:if="{{item.user.is_online==1}}">
<image src="../../assets/images/online.gif" mode="" class="icon"/>
</view>
</view> </view>
<view class="right"> <view class="right">
<view class="namebox"> <view class="namebox">

View File

@ -19,6 +19,7 @@
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.droptitle.active{ .droptitle.active{
color:#3CC7C0; color:#3CC7C0;
} }
@ -86,7 +87,7 @@
} }
.van-dropdown-menu{ .van-dropdown-menu{
box-shadow: none!important; box-shadow: none!important;
border-bottom: 1rpx solid #E7E7E7;
} }
.viewcell{ .viewcell{
display: flex; display: flex;
@ -170,6 +171,9 @@ overflow: hidden;
margin-left: 15rpx; margin-left: 15rpx;
font-size: 30rpx; font-size: 30rpx;
} }
.dropOnline.active{
color: #3CC7C0;
}
.diseaseType{ .diseaseType{
height: 40rpx; height: 40rpx;
background: #E2FFFE; background: #E2FFFE;
@ -226,15 +230,38 @@ font-size: 30rpx;
-webkit-overflow-scrolling: touch; -webkit-overflow-scrolling: touch;
} }
.dropdown{ .dropdown{
width:100%;
position: relative; position: relative;
justify-content:center;
align-items: center;
border-bottom: 1rpx solid #E7E7E7;
display: flex;
} }
.dropdown .bar{ .dropdown .bar{
position: absolute;
height:40rpx; height:40rpx;
width:1rpx; width:1rpx;
left: 50%; left: 50%;
top:50%; top:50%;
transform: translate(-50%,-50%); transform: translate(-50%,-50%);
position: absolute;
background:#ccc; background:#ccc;
opacity: 0.9; opacity: 0.9;
} }
.dropbar{
background:#ccc;
opacity: 0.9;
height:40rpx;
width:1rpx;
position: static;
margin-top: 30rpx;
}
.dropOnline{
display: flex;
justify-content: center;
align-items: center;
width:33.33%;
}
.viewcell .left{
position: relative;
}

View File

@ -21,6 +21,7 @@ Page({
doctor_id: '', doctor_id: '',
doctor_title_name:'', doctor_title_name:'',
user_id:'', user_id:'',
is_online:'0',
avg_response_time: 0, avg_response_time: 0,
be_good_at: '', be_good_at: '',
department_custom_name: '', department_custom_name: '',

View File

@ -5,8 +5,13 @@
<view class="boxwraper"> <view class="boxwraper">
<view class="infobox"> <view class="infobox">
<view class="namebox"> <view class="namebox">
<image src="{{avatar}}" class="head" wx:if="{{avatar}}" mode="aspectFill"></image> <view class="left">
<image src="{{avatar}}" class="head" wx:if="{{avatar}}" mode="aspectFill"></image>
<image class="head" src="{{img_host+'/doctor_avatar.png'}}" wx:else></image> <image class="head" src="{{img_host+'/doctor_avatar.png'}}" wx:else></image>
<view class="onlinebox" wx:if="{{is_online==1}}">
<image src="../../assets/images/online.gif" mode="" class="icon" style="top:100rpx" />
</view>
</view>
<view class="namewraper"> <view class="namewraper">
<view class="row"> <view class="row">
<view class="name">{{user_name}}</view> <view class="name">{{user_name}}</view>

View File

@ -2,7 +2,9 @@
.namebox { .namebox {
display: flex; display: flex;
} }
.namebox .left{
position: relative;
}
.contain { .contain {
position: relative; position: relative;
background: #F2F2F2; background: #F2F2F2;

View File

@ -52,7 +52,6 @@
</view> </view>
</view> </view>
</view> </view>
</van-overlay> </van-overlay>
<nav-bar bind:handleFocus="handleFocus"></nav-bar> <nav-bar bind:handleFocus="handleFocus"></nav-bar>
<view class="container"> <view class="container">
@ -152,6 +151,7 @@
<view class="left"> <view class="left">
<image src="{{item.avatar}}" wx:if="{{item.avatar}}" mode="aspectFill"></image> <image src="{{item.avatar}}" wx:if="{{item.avatar}}" mode="aspectFill"></image>
<image src="{{img_host+'/doctor_avatar.png'}}" wx:else></image> <image src="{{img_host+'/doctor_avatar.png'}}" wx:else></image>
<view class="onlinebox" wx:if="{{item.is_online==1}}"> <image src="../../assets/images/online.gif" mode="" class="icon"/></view>
</view> </view>
<view class="right"> <view class="right">
<view class="namebox"> <view class="namebox">

View File

@ -505,3 +505,6 @@
.navigator{ .navigator{
color:#3CC7C0 color:#3CC7C0
} }
.viewcell .left{
position: relative;
}

View File

@ -0,0 +1,69 @@
// pages/inquiryForm/inquiryForm.js
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
this.setData({
img_host:app.hostConfig().imghost
});
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@ -0,0 +1,13 @@
{
"usingComponents": {
"van-picker": "@vant/weapp/picker/index",
"van-radio": "@vant/weapp/radio/index",
"van-datetime-picker": "@vant/weapp/datetime-picker/index",
"van-popup": "@vant/weapp/popup/index",
"van-radio-group": "@vant/weapp/radio-group/index",
"nav":"../../components/nav/nav"
},
"navigationStyle":"custom",
"disableScroll": true,
"navigationBarTitleText": "问诊表"
}

View File

@ -0,0 +1,244 @@
<!--pages/inquiryForm/inquiryForm.wxml-->
<nav navName="问诊表"></nav>
<view class="page">
<view class="questionbox">
<view class="cellbox">
<view class="basictitle">基本信息</view>
<view class="cell" >
<view class="cellrow">
<view class="name">
1、身高CM
</view>
<view class="iptbox">
<input type="text" value="{{user_info.name}}" bindinput="handleIpt" data-id="name" placeholder="请输入身高" placeholder-class="placeholder" class="ipt" disabled="{{notallowEdit?true:false}}" />
</view>
</view>
</view>
<view class="cell" >
<view class="cellrow">
<view class="name">
2、体重KG
</view>
<view class="iptbox">
<input type="text" value="{{user_info.name}}" bindinput="handleIpt" data-id="name" placeholder="请请输入体重" placeholder-class="placeholder" class="ipt" disabled="{{notallowEdit?true:false}}" />
</view>
</view>
</view>
<view class="cell" >
<view class="cellrow">
<view class="name">
3、婚姻状况
</view>
<view class="iptbox">
<input type="text" value="{{user_info.name}}" bindinput="handleIpt" data-id="name" placeholder="请选择婚姻状况" placeholder-class="placeholder" class="ipt" disabled="{{notallowEdit?true:false}}" />
<image src="{{img_host+'/righticon.png'}}" class="righticon"></image>
</view>
</view>
</view>
<view class="cell" >
<view class="cellrow">
<view class="name">
4、民族
</view>
<view class="iptbox">
<input type="text" value="{{user_info.name}}" bindinput="handleIpt" data-id="name" placeholder="请选择民族" placeholder-class="placeholder" class="ipt" disabled="{{notallowEdit?true:false}}" />
<image src="{{img_host+'/righticon.png'}}" class="righticon"></image>
</view>
</view>
</view>
<view class="cell" >
<view class="cellrow">
<view class="name">
5、职业
</view>
<view class="iptbox">
<input type="text" value="{{user_info.name}}" bindinput="handleIpt" data-id="name" placeholder="请请选择职业" placeholder-class="placeholder" class="ipt" disabled="{{notallowEdit?true:false}}" />
<image src="{{img_host+'/righticon.png'}}" class="righticon"></image>
</view>
</view>
</view>
</view>
<view class="cellbox">
<view class="basictitle">个人情况</view>
<view class="sickHis">
<view class="list">
<view class="qa">
<view class="num">1、</view>
<view class="titlebox">
<view class="title">您是否有过敏史?</view>
<view class="radio" >
<van-radio-group value="{{ filter.numberTOstring(personInfo.is_allergy_history) }}" class="singlegroup" data-id="is_allergy_history" bind:change="onChangeRadio" direction="horizontal">
<van-radio name="1" checked-color="#3cc7c0">是</van-radio>
<van-radio name="0" checked-color="#3cc7c0">否</van-radio>
</van-radio-group>
</view>
<!-- hidden="{{checkGuomin!=1}}" -->
<view class="radiotip" hidden="{{personInfo.is_allergy_history!=1}}">
<textarea placeholder=" " show-confirm-bar="{{false}}" cursor-spacing="70" confirm-type="done" bindinput="handelFocus" value="{{personInfo.allergy_history}}" data-id="hideGuomin" data-value="allergy_history"></textarea>
<view class="textbox" hidden="{{hideGuomin}}">
<view class="desc"><text>过敏史:</text>请填写过敏源如药物请写出药名如食物请写具体如鸡蛋、牛奶等限制50个字</view>
</view>
</view>
</view>
</view>
<view class="qa">
<view class="num">2、</view>
<view class="titlebox">
<view class="title">您是否有家族病史?</view>
<view class="radio">
<van-radio-group class="singlegroup" value="{{filter.numberTOstring(personInfo.is_family_history)}}" data-id="is_family_history" bind:change="onChangeRadio" direction="horizontal">
<van-radio name="1" checked-color="#3cc7c0">是</van-radio>
<van-radio name="0" checked-color="#3cc7c0">否</van-radio>
</van-radio-group>
</view>
<view class="radiotip" hidden="{{personInfo.is_family_history!=1}}">
<textarea placeholder=" " show-confirm-bar="{{false}}" cursor-spacing="70" confirm-type="done" bindinput="handelFocus" value="{{personInfo.family_history}}" data-id="hideFamilysick" data-value="family_history"></textarea>
<view class="textbox" hidden="{{hideFamilysick}}">
<view class="desc"><text>家族病史:</text>请详细填写相关家族病史限制50个字</view>
</view>
</view>
</view>
</view>
<view class="qa" wx:if="{{sex==2}}">
<view class="num">{{startIndex}}、</view>
<view class="titlebox">
<view class="title">您是否处于备孕、妊娠、哺乳期?</view>
<view class="radio">
<van-radio-group value="{{ filter.numberTOstring(personInfo.is_pregnant) }}" bind:change="onChangeRadio" data-id="is_pregnant" direction="horizontal" class="singlegroup">
<van-radio name="1" checked-color="#3cc7c0">是</van-radio>
<van-radio name="0" checked-color="#3cc7c0">否</van-radio>
</van-radio-group>
</view>
<view class="radiotip" hidden="{{personInfo.is_pregnant!=1}}">
<textarea placeholder=" " show-confirm-bar="{{false}}" cursor-spacing="70" confirm-type="done" bindinput="handelFocus" value="{{personInfo.pregnant}}" data-id="hidePregnant" data-value="pregnant"></textarea>
<view class="textbox" hidden="{{hidePregnant}}">
<view class="desc">请描述您目前所处阶段如备孕中、哺乳期中、妊娠月份。限制50个字</view>
</view>
</view>
</view>
</view>
<view class="qa">
<view class="num">{{startIndex+1}}、</view>
<view class="titlebox">
<view class="title">是否做过手术</view>
<view class="radio">
<van-radio-group value="{{ filter.numberTOstring(personInfo.is_operation) }}" data-id="is_operation" bind:change="onChangeRadio" direction="horizontal" class="singlegroup">
<van-radio name="1" checked-color="#3cc7c0">是</van-radio>
<van-radio name="0" checked-color="#3cc7c0">否</van-radio>
</van-radio-group>
</view>
<view class="radiotip" hidden="{{personInfo.is_operation !=1}}">
<textarea placeholder=" " show-confirm-bar="{{false}}" cursor-spacing="70" confirm-type="done" bindinput="handelFocus" value="{{personInfo.operation}}" data-id="hideOperation" data-value="operation"></textarea>
<view class="textbox" hidden="{{hideOperation}}">
<view class="desc">请描述具体手术名称和做手术医院</view>
</view>
</view>
</view>
</view>
<view class="qa">
<view class="num">{{startIndex+2}}、</view>
<view class="titlebox">
<view class="title">是否有饮酒史</view>
<view class="radio">
<van-radio-group value="{{ filter.numberTOstring(personInfo.drink_wine_status) }}" data-id="drink_wine_status" bind:change="onChangeRadio" direction="horizontal" class="group">
<van-radio name="1" checked-color="#3cc7c0">从不</van-radio>
<van-radio name="2" checked-color="#3cc7c0">偶尔</van-radio>
<van-radio name="3" checked-color="#3cc7c0">经常</van-radio>
<van-radio name="4" checked-color="#3cc7c0">每天</van-radio>
<van-radio name="5" checked-color="#3cc7c0">已戒酒</van-radio>
</van-radio-group>
</view>
</view>
</view>
<view class="qa">
<view class="num">{{startIndex+3}}、</view>
<view class="titlebox">
<view class="title">是否有吸烟史</view>
<view class="radio">
<van-radio-group value="{{ filter.numberTOstring(personInfo.smoke_status) }}" data-id="smoke_status" bind:change="onChangeRadio" direction="horizontal" class="group">
<van-radio name="1" checked-color="#3cc7c0">从不</van-radio>
<van-radio name="2" checked-color="#3cc7c0">偶尔</van-radio>
<van-radio name="3" checked-color="#3cc7c0">经常</van-radio>
<van-radio name="4" checked-color="#3cc7c0">每天</van-radio>
<van-radio name="5" checked-color="#3cc7c0">已戒烟</van-radio>
</van-radio-group>
</view>
</view>
</view>
<view class="qa">
<view class="num">{{startIndex+4}}、</view>
<view class="titlebox">
<view class="title">是否有接触过化学物</view>
<view class="radio">
<van-radio-group value="{{filter.numberTOstring(personInfo.chemical_compound_status)}}" data-id="chemical_compound_status" bind:change="onChangeRadio" direction="horizontal" class="group">
<van-radio name="1" checked-color="#3cc7c0">从不</van-radio>
<van-radio name="2" checked-color="#3cc7c0">偶尔</van-radio>
<van-radio name="3" checked-color="#3cc7c0">经常</van-radio>
<van-radio name="4" checked-color="#3cc7c0">每天</van-radio>
</van-radio-group>
</view>
<view class="radiotip" wx:if="{{(personInfo.chemical_compound_status!=1 && personInfo.chemical_compound_status)}}">
<textarea placeholder=" " show-confirm-bar="{{false}}" cursor-spacing="70" confirm-type="done" value="{{personInfo.chemical_compound_describe}}" bindinput="handelFocus" data-id="hideChemical" data-value="chemical_compound_describe"></textarea>
<view class="textbox" hidden="{{hideChemical}}">
<view class="desc"><text>化学物:</text>请详细填写接触过的相关化学物限制50个字</view>
</view>
</view>
</view>
</view>
<view class="qa">
<view class="num">{{startIndex+45}}、</view>
<view class="titlebox">
<view class="title">确诊医院是?</view>
<view class="radiotip" >
<textarea placeholder=" " show-confirm-bar="{{false}}" cursor-spacing="70" confirm-type="done" bindinput="handelFocus" value="{{personInfo.family_history}}" data-id="hideFamilysick" data-value="family_history"></textarea>
<view class="textbox" hidden="{{hideFamilysick}}">
<view class="desc"><text></text>请填写确诊医院名称</view>
</view>
</view>
</view>
</view>
<view class="qa">
<view class="num">{{startIndex+6}}、</view>
<view class="titlebox">
<view class="title">服用药品是?</view>
<view class="radiotip" >
<textarea placeholder=" " show-confirm-bar="{{false}}" cursor-spacing="70" confirm-type="done" bindinput="handelFocus" value="{{personInfo.family_history}}" data-id="hideFamilysick" data-value="family_history"></textarea>
<view class="textbox" hidden="{{hideFamilysick}}">
<view class="desc"><text></text>请详细填写所服药物限制50个字</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<van-popup show="{{ showMarital }}" round position="bottom" custom-style="height:auto" bind:close="closeMaritalPicker">
<van-picker show-toolbar title="请选择婚姻状况" columns="{{ maritalColumn }}" bind:cancel="closeMaritalPicker" bind:confirm="onConfirmMaritalPicker" />
</van-popup>
<van-popup show="{{ showCity}}" round position="bottom" custom-style="height: 50%" bind:close="onClose">
<van-picker columns="{{ columns }}" show-toolbar title="选择地区" columns="{{ columns }}" value-key="area_name" bind:cancel="onCancel" bind:change="onChangePicker" bind:confirm="onConfirm" />
</van-popup>
<van-popup show="{{ showSick }}" position="bottom" custom-style="height: auto">
<van-picker show-toolbar title="选择所患疾病" columns="{{ sickcolumns }}" value-key="disease_class_name" bind:cancel="onCancelSick" bind:confirm="onConfirmSick" />
</van-popup>
<!-- <van-popup show="{{ showNation }}" position="bottom" custom-style="height: auto">
<van-picker show-toolbar title="选择民族" columns="{{ nationcolumns }}" value-key="nation_name" bind:cancel="onCancelSick" bind:confirm="onConfirmNation" />
</van-popup> -->
<van-popup show="{{ showNation }}" position="bottom" custom-style="height: auto">
<van-picker show-toolbar title="选择民族" columns="{{ nationcolumns }}" value-key="nation_name" bind:cancel="onCancelNation" bind:confirm="onConfirmNation" />
</van-popup>
<van-popup show="{{ showJob }}" position="bottom" custom-style="height: auto">
<van-picker show-toolbar title="选择职业" columns="{{ jobcolumns }}" value-key="job_name" bind:cancel="onCancelJob" bind:confirm="onConfirmJob" />
</van-popup>

View File

@ -0,0 +1,146 @@
/* pages/inquiryForm/inquiryForm.wxss */
.page {
display: flex;
flex-direction: column;
overflow: hidden;
}
.cellbox{
background-color: #fff;
}
.questionbox{
overflow-y: scroll;
margin-top: 172rpx;
}
.cellbox .cell{
background-color: #fff;
align-items: center;
display: flex;
padding:0 32rpx;
}
.cellrow{
height:105rpx;
width:100%;
justify-content: space-between;
align-items: center;
display: flex;
border-bottom:1rpx solid #E3E4E5;
}
.cell:last-child .cellrow{
border-bottom: none;
}
.iptbox{
display: flex;
flex:1;
justify-content: flex-end;
}
.righticon{
width:24rpx;
height: 48rpx;
}
.name{
display: flex;
align-items: center;
}
.name .red{
margin-top: 20rpx;
color:#E34D59;
}
.placeholder{
text-align: right;
font-size: 28rpx;
font-weight: 400;
color: #C5C8CB;
}
.ipt{
width:100%;
text-align: right;
color: #666666;
font-size: 28rpx;
}
.basictitle{
margin-top: 30rpx;
font-size: 34rpx;
padding:30rpx 32rpx 10rpx;
font-family: PingFangSC, PingFang SC;
font-weight: 500;
color: #1C2023;
}
.sickHis{
background-color: #fff;
/* margin-top: 20rpx; */
padding:1rpx 52rpx 40rpx;
}
.list .qa{
display: flex;
margin-top: 30rpx;
border-bottom:1rpx solid #E3E4E5;
}
.titlebox{
flex:1;
}
textarea{
position: relative;
z-index:1;
width:100%;
color:#333;
height:132rpx;
}
.radio{
margin: 30rpx 0rpx 30rpx 0;
}
.group .van-radio--horizontal{
margin-right: 11rpx;
}
.singlegroup .van-radio--horizontal{
margin-right:44rpx;
}
.singlegroup .van-radio--horizontal:nth-child(2n){
margin-right: 0rpx;
}
.group .van-radio--horizontal:nth-child(3n){
margin-right: 0;
}
.radiotip{
position: relative;
padding:24rpx 20rpx;
justify-content: center;
margin-top: 20rpx;
line-height: 42rpx;
background: #F2F2F2;
border-radius: 10rpx;
font-size: 28rpx;
color:#999;
margin-bottom: 20rpx;
}
.radiotip .textbox{
top:20rpx;
left:20rpx;
margin-top: 0;
width:auto;
height: 100rpx;
font-weight: normal;
z-index: 0;
position: absolute;
right:20rpx;
}
.radiotip text{
white-space: nowrap;
color:#333;
}
.van-radio__label{
padding-right:40rpx!important;
}
/* .van-radio__label:nth-child(3){
padding-right:0rpx!important;
} */
.van-radio{
margin-bottom: 10rpx!important;
}

View File

@ -80,17 +80,21 @@ Page({
 wx.setStorageSync('AUTH_TOKEN', data.token);  wx.setStorageSync('AUTH_TOKEN', data.token);
 wx.setStorageSync('CLIENT_USER_ID',data.client_user_id);  wx.setStorageSync('CLIENT_USER_ID',data.client_user_id);
 wx.setStorageSync('USER_ID',data.user_id);  wx.setStorageSync('USER_ID',data.user_id);
app.imLogin(); let url=this.data.redirectUrl?this.data.redirectUrl:'/pages/index/index';
let url=this.data.redirectUrl?this.data.redirectUrl:'/pages/index/index'; let handleGo=null;
if(url.indexOf('login')!=-1 || url.indexOf('mobileLogin')!=-1){ if(url.indexOf('login')!=-1 || url.indexOf('mobileLogin')!=-1){
wx.reLaunch({ handleGo=function(){
url:'/pages/index/index' wx.reLaunch({
}) url:'/pages/index/index'
}else{ })
}
}else{
wx.reLaunch({ wx.reLaunch({
url:url url:url
}) })
} }
app.imLogin({path:'pages/login/login'},handleGo);
}) })
}); });
}else if(e.detail.errMsg == 'getPhoneNumber:fail user deny'){ }else if(e.detail.errMsg == 'getPhoneNumber:fail user deny'){

View File

@ -131,19 +131,24 @@ Page({
 wx.setStorageSync('AUTH_TOKEN', data.token);  wx.setStorageSync('AUTH_TOKEN', data.token);
 wx.setStorageSync('CLIENT_USER_ID',data.client_user_id);  wx.setStorageSync('CLIENT_USER_ID',data.client_user_id);
 wx.setStorageSync('USER_ID',data.user_id);  wx.setStorageSync('USER_ID',data.user_id);
app.imLogin();
let url=this.data.redirectUrl?this.data.redirectUrl:'/pages/index/index'; let url=this.data.redirectUrl?this.data.redirectUrl:'/pages/index/index';
// console.log('333333'); let handleGO=null;
// console.log(url)
if(url.indexOf('login')!=-1 || url.indexOf('mobileLogin')!=-1 ){ if(url.indexOf('login')!=-1 || url.indexOf('mobileLogin')!=-1 ){
wx.reLaunch({ handleGO=function(){
url:'/pages/index/index' wx.reLaunch({
}) url:'/pages/index/index'
})
}
}else{ }else{
wx.reLaunch({ handleGO=function(){
url:url wx.reLaunch({
}) url:url
} })
}
}
app.imLogin({path:'pages/mobileLogin/mobileLogin'},1,handleGO);
}) })
}); });
}), }),

View File

@ -30,6 +30,9 @@
<view class="left"> <view class="left">
<image src="{{item.avatar}}" mode="aspectFill" wx:if="{{item.avatar}}"></image> <image src="{{item.avatar}}" mode="aspectFill" wx:if="{{item.avatar}}"></image>
<image src="{{img_host+'/doctor_avatar.png'}}" wx:else></image> <image src="{{img_host+'/doctor_avatar.png'}}" wx:else></image>
<view class="onlinebox" wx:if="{{item.user.is_online==1}}">
<image src="../../assets/images/online.gif" mode="" class="icon"/>
</view>
</view> </view>
<view class="right"> <view class="right">
<view class="namebox"> <view class="namebox">

View File

@ -203,3 +203,6 @@ font-size: 30rpx;
overflow-y: scroll; overflow-y: scroll;
-webkit-overflow-scrolling: touch; -webkit-overflow-scrolling: touch;
} }
.viewcell .left{
position: relative;
}

View File

@ -0,0 +1,74 @@
// pages/sickDetail/sickDetail.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
previewImage(event) {
let id = event.currentTarget.dataset.id;
let urls = this.data.sick.diagnose_images;
wx.previewImage({
current: urls[id], // 当前显示图片的http链接
urls: urls // 需要预览的图片http链接列表
})
},
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@ -0,0 +1,8 @@
{
"usingComponents": {
"nav":"../../components/nav/nav",
"van-icon": "@vant/weapp/icon/index"
},
"navigationStyle":"custom",
"navigationBarTitleText": "病情详情"
}

View File

@ -0,0 +1,130 @@
<!--pages/sickDetail/sickDetail.wxml-->
<nav navName="病情详情"></nav>
<view class="page">
<view class="content">
<view class="countcell">
<view class="left">
<view class="name">第一份病例 </view>
<view class="time">填写时间2022-12-20 </view>
</view>
<van-icon name="delete-o" class="icon"/>
</view>
<view class="infobox">
<view class="title">基础信息</view>
<view class="basiccell">
<view class="namebox">
<view class="name">贺俊青</view>
<view class="age">男30岁</view>
</view>
<view class="info">
<view class="infocell">
<view class="cell">身高:<text class="desc">170cm</text></view>
<view class="cell">体重:<text class="desc">170cm</text></view>
<view class="cell">民族:<text class="desc">170cm</text></view>
<view class="cell" >民族:<text class="desc">170cm</text></view>
<view class="cell">民族:<text class="desc">170cm</text></view>
</view>
</view>
<view class="row">
<view class="name">所患疾病:</view>
<view class="desc">肝炎</view>
</view>
<view class="row">
<view class="name">确诊日期:</view>
<view class="desc">肝炎</view>
</view>
<view class="row">
<view class="name">确诊医院:</view>
<view class="desc">肝炎</view>
</view>
<view class="rowtip">
<view class="row">
<view class="name">正在服用的药品信息:</view>
<view class="desc">肝炎</view>
</view>
<view class="tip">详细描述阿托伐他汀钙片8片 (用法用量</view>
</view>
<view class="row top">
<view class="name">病情描述:</view>
<view class="desc">肝炎详细描述阿托伐他汀钙片8片 用法用量详细描述阿托伐他汀钙片8片 (用法用量</view>
</view>
<view class="row top">
<view class="name">用药意向:</view>
<view class="desc">肝炎详细描述阿托伐他汀钙片8片 用法用量详细描述阿托伐他汀钙片8片 (用法用量</view>
</view>
<view class="rowtip">
<view class="row">
<view class="name">复诊凭证(病例/处方单/检查报告/住院单)</view>
</view>
<view class="imgtip">
<image src="{{item}}" class="img" wx:for="{{diagnose_images}}" mode="aspectFill" wx:for-index="idx" wx:key="idx" bindtap="previewImage" data-id="{{idx}}" ></image>
</view>
</view>
</view>
</view>
<view class="infobox">
<view class="title">其他信息</view>
<view class="basiccell">
<view class="info">
<view class="row top">
<view class="name">过敏史:</view>
<view class="desc">肝炎详细描述阿托伐他汀钙片8片 用法用量详细描述阿托伐他汀钙片8片 (用法用量</view>
</view>
<view class="row top">
<view class="name">家族史:</view>
<view class="desc">肝炎详细描述阿托伐他汀钙片8片 用法用量详细描述阿托伐他汀钙片8片 (用法用量</view>
</view>
<view class="rowtip">
<view class="row">
<view class="name">是否备孕、妊娠或者哺乳期:</view>
<view class="desc">肝炎</view>
</view>
<view class="tip">详细描述阿托伐他汀钙片8片 (用法用量</view>
</view>
<view class="rowtip">
<view class="row">
<view class="name">饮酒史:</view>
<view class="desc">肝炎</view>
</view>
</view>
<view class="rowtip">
<view class="row">
<view class="name">吸烟史:</view>
<view class="desc">肝炎</view>
</view>
</view>
<view class="row top">
<view class="name">手术史:</view>
<view class="desc">肝炎详细描述阿托伐他汀钙片8片 用法用量详细描述阿托伐他汀钙片8片 (用法用量</view>
</view>
<view class="rowtip">
<view class="row">
<view class="name">接触化学物:</view>
<view class="desc">肝炎</view>
</view>
<view class="tip">详细描述阿托伐他汀钙片8片 (用法用量</view>
</view>
</view>
</view>
</view>
<view class="infobox">
<view class="title">处方信息</view>
<view class="basiccell">
<view class="row">
<view class="name">诊断:</view>
<view class="desc">肝炎</view>
</view>
<view class="row">
<view class="name">时间:</view>
<view class="desc">肝炎</view>
</view>
<view class="row top">
<view class="name">药品:</view>
<view class="desc">肝炎详细描述阿托伐他汀钙片8片 用法用量详细描述阿托伐他汀钙片8片 (用法用量</view>
</view>
</view>
</view>
</view>
</view>

View File

@ -0,0 +1,102 @@
/* pages/sickDetail/sickDetail.wxss */
.page{
overflow: hidden;
display: flex;
flex-direction: column;
}
.content{
overflow-y: scroll;
}
.countcell{
margin: 192rpx 30rpx 0;
background:#fff;
display: flex;
padding:30rpx 20rpx;
border-radius: 10rpx;
align-items: flex-start;
justify-content: space-between;
}
.icon{
font-size: 34rpx;
color: #666666;
}
.countcell .time{
font-size: 30rpx;
color: #666666;
margin-top: 20rpx;
}
.basiccell{
padding:23rpx 20rpx;
margin:0 30rpx;
background: #FFFFFF;
border-radius: 10rpx;
}
.infobox .title{
margin:0 30rpx;
padding:30rpx 0;
}
.namebox{
display: flex;
align-items: center;
}
.namebox .name{
font-size: 34rpx;
color: #3CC7C0;
}
.age{
margin-left: 30rpx;
font-size: 34rpx;
color: #666666;
}
.infocell{
font-size: 30rpx;
margin-top: 20rpx;
flex-wrap: wrap;
padding:20rpx;
display: flex;
background: #FAFAFA;
border-radius: 10rpx;
}
.infocell .cell{
line-height: 60rpx;
margin-right: 21rpx;
}
.infocell .cell:nth-child(3){
margin-right: 0rpx;
}
.cell .desc{
font-size: 28rpx;
color: #666666;
}
.row{
padding:0 20rpx;
margin-top: 20rpx;
display: flex;
align-items: center;
}
.row.top{
align-items:flex-start
}
.row .name{
font-size: 30rpx;
flex-shrink: 0;
white-space: nowrap;
}
.row .desc{
word-break: break-all;
font-size: 28rpx;
color: #666666;
}
.row.top .desc{
margin-top: 5rpx;
}
.tip{
margin-top: 10rpx;
background: #FAFAFA;
border-radius: 10rpx;
padding:20rpx;
font-size: 26rpx;
color: #999999;
}

View File

@ -0,0 +1,98 @@
const app = getApp()
import {family} from "../../api/familyDoc"
import {throttle} from "../../utils/util"
Page({
/**
* 页面的初始数据
*/
data: {
isTriggered:false,
img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static',
list:[]
},
handleRefresher(){
this.handleFamily();
},
handleFamily(){
family().then(data=>{
this.setData({
isTriggered:false,
list:data
})
})
},
goBack(){
wx.navigateBack({
delta: 1,
})
},
goInfo:throttle(function(){
app.method.navigateTo({
url: '/pages/sickDetail/sickDetail',
})
}),
goMember:throttle(function(event){
let id=event.currentTarget.dataset.id;
app.method.navigateTo({
url: '/pages/memberDetail/memberDetail?family_id='+id,
})
}),
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
this.setData({
img_host:app.hostConfig().imghost
});
this.handleFamily();
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
})

View File

@ -0,0 +1,7 @@
{
"usingComponents": {
"nav":"../../components/nav/nav"
},
"navigationStyle":"custom",
"navigationBarTitleText": "病情管理"
}

View File

@ -0,0 +1,24 @@
<!--pages/sickManage/sickManage.wxml-->
<nav navName="病情管理"></nav>
<view class="page">
<view class="hasdata">
<scroll-view scroll-y="true" bindrefresherrefresh="handleRefresher" class="scrollbox" refresher-triggered="{{isTriggered}}" refresher-threshold="100" refresher-enabled="true" class="namebox" wx:if="{{list.length>0}}">
<view class="namecell" bindtap="goMember" wx:for="{{list}}" wx:key="family_id" data-id="{{item.family_id}}">
<view class="name">{{item.card_name}}(<text wx:if="{{item.sex==1}}">男</text><text wx:elif="{{item.sex==2}}">女</text><text wx:else>未知</text>{{item.age}}岁)</view>
<image src="{{img_host+'/righticon.png'}}" class="righticon"></image>
</view>
</scroll-view>
<view class="nodata" wx:else>
<image src="{{img_host+'/member.png'}}" class="memberimg"></image>
<view class="tips">当前暂未添加任何家庭成员哦~</view>
<view class="btnbox add nobtn">
<view class="btn" bindtap="goInfo">立即添加</view>
</view>
</view>
<view class="btnbox add" wx:if="{{list.length>0}}">
<view class="btn" bindtap="goInfo">+添加家庭成员</view>
</view>
</view>
</view>

View File

@ -0,0 +1,96 @@
/* pages/familyDoc/familyDoc.wxss */
.noimg {
width: 206rpx;
height: 100rpx;
}
.scrollbox{
flex:1;
}
.tips {
font-size: 24rpx;
color: #999999;
}
.page{
display: flex;
flex-direction: column;
}
.nodata {
margin-top: 172rpx;
width: 100%;
height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.nodata .btnbox,.hasdata .btnbox{
width:100%;
}
.nodata .btn,.hasdata .btn{
display: flex;
margin: 40rpx 32rpx 0;
box-sizing: border-box;
align-items: center;
height: 80rpx;
background: #3CC7C0;
color: #fff;
font-size: 30rpx;
justify-content: center;
border-radius: 8rpx;
}
.namecell{
display: flex;
margin:0 32rpx;
height: 142rpx;
align-items: center;
padding:0 20rpx 0 30rpx;
background: #FFFFFF;
border-radius: 10rpx;
justify-content: space-between;
}
.hasdata{
flex:1;
margin-top: 172rpx;
overflow: hidden;
position: relative;
display: flex;
flex-direction: column;
}
.namebox{
width:100%;
margin-top: 20rpx;
flex:1;
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
}
.namecell {
margin-bottom: 10rpx;
}
.namecll .name{
font-size: 34rpx;
color: #333333;
}
.righticon{
width:20rpx;
height:40rpx;
}
.add{
background-color: #fff;
margin-bottom: 20rpx;
}
.memberimg{
width:206rpx;
height:100rpx;
}
.nodata .tips{
font-size: 24rpx;
color: #999999;
}
.nobtn{
background-color: transparent;
}
.img {
padding:14rpx 29rpx;
}

View File

@ -0,0 +1,175 @@
const app = getApp()
import {pathographyList,pathographyListDelte} from "../../api/sickRecord"
import {throttle} from "../../utils/util"
Page({
/**
* 页面的初始数据
*/
data: {
isTriggered:false,
family_id:'',
show:false,
message:'',
page:1,
currentId:'',
isLock:false,
per_page:10,
img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static',
list:[]
},
handleRefresher(){
this.setData({
page:1,
isLock:false,
list:[]
})
this.handleFamily();
},
onDel(event) {
let id=event.currentTarget.dataset.id;
const {instance } = event.detail;
instance.close();
this.setData({
show:true,
currentId:id,
message:"确定删除该病情记录?"
})
},
confirm:throttle(function(event){
if(event.detail){
this.handlePathographyListDelte();
}
}),
handlePathographyListDelte(){
pathographyListDelte(id).then(data=>{
wx.showToast({
title: '删除成功',
icon:'none'
})
})
},
onChange(event) {
this.setData({
radio: event.detail,
});
var pages = getCurrentPages(); // 当前页面
var beforePage = pages[pages.length - 2]; // 前一个页面
beforePage.setData({ //修改上衣页面的参数
'pathography_id':event.detail,
})
//返回上一个页面之前先处理一下数据或调用一下上个页面的方法
wx.navigateBack({
delta: 1,
success: function() {
}
});
},
lower(e) {
if(!this.data.isLock){
this.setData({
page: ++this.data.page
})
this.handleFamily()
}
},
handleFamily(){
let {family_id,page,per_page}=this.data;
pathographyList({
family_id,
page,
per_page
}).then(data=>{
let result=data.data;
if(result.length==0){
this.setData({
isLock:true,
isTriggered:false
})
return false
};
this.setData({
isTriggered:false,
list:this.data.list.concat(result)
})
})
},
goBack(){
wx.navigateBack({
delta: 1,
})
},
goInfo:throttle(function(){
app.method.navigateTo({
url: '/pages/memberDetail/memberDetail',
})
}),
goMember:throttle(function(event){
let id=event.currentTarget.dataset.id;
app.method.navigateTo({
url: '/pages/memberDetail/memberDetail?family_id='+id,
})
}),
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.setData({
family_id:options.family_id
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
this.setData({
img_host:app.hostConfig().imghost
});
this.handleFamily();
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
})

View File

@ -0,0 +1,11 @@
{
"usingComponents": {
"nav":"../../components/nav/nav",
"van-radio": "@vant/weapp/radio/index",
"dialog":"../../components/dialog/dialog",
"van-swipe-cell": "@vant/weapp/swipe-cell/index",
"van-radio-group": "@vant/weapp/radio-group/index"
},
"navigationStyle":"custom",
"navigationBarTitleText": "病情管理"
}

View File

@ -0,0 +1,29 @@
<!--pages/sickManage/sickManage.wxml-->
<nav navName="病情记录"></nav>
<view class="page">
<view class="hasdata">
<scroll-view scroll-y="true" bindrefresherrefresh="handleRefresher" class="scrollbox" refresher-triggered="{{isTriggered}}" refresher-threshold="100" bindscrolltolower="lower" refresher-enabled="true" class="namebox" wx:if="{{list.length>0}}">
<van-radio-group value="{{ radio }}" bind:change="onChange">
<van-swipe-cell right-width="{{ 65 }}" wx:for="{{list}}" wx:key="pathography_id" data-id="{{item.pathography_id}}" async-close bind:close="onDel">
<van-cell-group>
<view class="namecell" >
<van-radio right="leftcon" name="{{item.pathography_id}}" checked-color="#3CC7C0;"></van-radio>
<view class="rightcon">
<view class="time">{{item.created_at}}</view>
<view class="disease">
<view > {{item.disease_class_name}}</view>
<view class="disease_desc">
<view class="desctext">{{item.disease_desc}}</view>
</view>
</view>
</view>
</view>
</van-cell-group>
<view slot="right" class="van-swipe-cell__right" >删除</view>
</van-swipe-cell>
</van-radio-group>
</scroll-view>
</view>
</view>
<dialog bind:confirm="confirm" showDialog="{{show}}" message="{{message}}"></dialog>

View File

@ -0,0 +1,130 @@
/* pages/familyDoc/familyDoc.wxss */
.noimg {
width: 206rpx;
height: 100rpx;
}
.scrollbox{
flex:1;
}
.tips {
font-size: 24rpx;
color: #999999;
}
.page{
display: flex;
flex-direction: column;
}
.nodata {
margin-top: 172rpx;
width: 100%;
height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.nodata .btnbox,.hasdata .btnbox{
width:100%;
}
.nodata .btn,.hasdata .btn{
display: flex;
margin: 40rpx 32rpx 0;
box-sizing: border-box;
align-items: center;
height: 80rpx;
background: #3CC7C0;
color: #fff;
font-size: 30rpx;
justify-content: center;
border-radius: 8rpx;
}
.namecell{
display: flex;
margin:0 32rpx;
height: 142rpx;
align-items: center;
padding:0 20rpx 0 30rpx;
background: #FFFFFF;
box-sizing: content-box;
border-radius: 10rpx;
}
.namecell .time{
font-size: 34rpx;
color: #333333;
}
.rightcon{
flex:1;
}
.namecell .disease{
flex:1;
display: flex;
margin-top: 10rpx;
font-size: 24rpx;
color: #666666;
}
.disease{
white-space: nowrap;
}
.disease_desc{
flex:1;
margin-left: 8rpx;
}
.desctext{
width:80%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.hasdata{
flex:1;
margin-top: 172rpx;
overflow: hidden;
position: relative;
display: flex;
flex-direction: column;
}
.namebox{
width:100%;
margin-top: 20rpx;
flex:1;
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
}
.namecell {
margin-bottom: 10rpx;
}
.namecll .name{
font-size: 34rpx;
color: #333333;
}
.righticon{
width:20rpx;
height:40rpx;
}
.add{
background-color: #fff;
margin-bottom: 20rpx;
}
.memberimg{
width:206rpx;
height:100rpx;
}
.nodata .tips{
font-size: 24rpx;
color: #999999;
}
.nobtn{
background-color: transparent;
}
.van-swipe-cell__right {
width:65px;
display: flex;
align-items: center;
justify-content: center;
background: #FA541C;
color: #fff;
}

View File

@ -15,6 +15,7 @@ import {
throttle throttle
} from "../../utils/util" } from "../../utils/util"
import {client_type} from "../../utils/isPc" import {client_type} from "../../utils/isPc"
import {isExist,pathographyDetail} from "../../api/sickRecord"
let urlHost=app.hostConfig().agreehost; let urlHost=app.hostConfig().agreehost;
console.log(client_type); console.log(client_type);
Page({ Page({
@ -24,6 +25,7 @@ Page({
*/ */
data: { data: {
prevData: null, prevData: null,
pathography_id:'',
showdialog: false, showdialog: false,
showAgreeDialog: false, showAgreeDialog: false,
message: '', message: '',
@ -46,6 +48,7 @@ Page({
disease_desc: '', disease_desc: '',
hideFamilysick: false, hideFamilysick: false,
showBack: false, showBack: false,
is_exist:false,
columns: [], columns: [],
fileList: [], fileList: [],
lockBtn: false, lockBtn: false,
@ -127,91 +130,110 @@ Page({
getlocalInfo(id){ getlocalInfo(id){
let sickInfo = wx.getStorageSync('sickInfo'); let sickInfo = wx.getStorageSync('sickInfo');
if (sickInfo) { if (sickInfo) {
var InfoObj = JSON.parse(sickInfo); var InfoObj = JSON.parse(sickInfo);
if (InfoObj instanceof Array) { if (InfoObj instanceof Array) {
for (let i = 0; i < InfoObj.length; i++) { let obj=null;
if (InfoObj[i].family_id == id) { let isHas= InfoObj.some((item)=>{
Dialog.confirm({ if(item.family_id==id){
title: '温馨提示', obj=item;
message: '是否加载之前保存的病情信息?', }
}).then(() => { return item.family_id==id;
this.setInfo(InfoObj[i]) })
}) if(isHas){
.catch(() => { this.setInfo(obj)
}else{
this.handleOnlineSick(this.data.family_id);
}
// for (let i = 0; i < InfoObj.length; i++) {
// if (InfoObj[i].family_id == id) {
// Dialog.confirm({
// title: '温馨提示',
// message: '是否加载之前保存的病情信息?',
// }).then(() => {
// this.setInfo(InfoObj[i])
// }).catch(() => {
}); // });
break; // break;
}; // };
} // }
} }
} }
}, },
handleLastSick(id) { handleSetValue(data){
lastSick(id).then(data => { if(data){
if (!data){ let obj = {
this.getlocalInfo(id); disease_class_name: '',
disease_class_id: '',
} else { diagnosis_date: '',
let obj = { disease_desc: '',
disease_class_name: '', is_allergy_history:null,
disease_class_id: '', product: [],
diagnosis_date: '', is_taboo:null,
disease_desc: '', is_pregnant:null,
is_allergy_history:null, pregnant: '',
product: [], is_family_history:null,
is_taboo:null, allergy_history: '',
is_pregnant:null, family_history: '',
pregnant: '',
is_family_history:null,
allergy_history: '',
family_history: '',
}
for (const key in obj) {
if (key != "product") {
this.setData({
[key]: data[key]
})
}
};
if (data.disease_desc) {
this.setData({
hideSick: true
})
};
if (data.pregnant) {
this.setData({
hidePregnant: true
})
};
if (data.allergy_history) {
this.setData({
hideGuomin: true
})
};
if (data.family_history) {
this.setData({
hideFamilysick: true
})
};
if (data.diagnose_images) {
this.setData({
fileList: data.diagnose_images,
checkSign: false
})
} else {
this.setData({
checkSign: false
})
}
} }
for (const key in obj) {
if (key != "product") {
this.setData({
[key]: data[key]
})
}
};
if (data.disease_desc) {
this.setData({
hideSick: true
})
};
if (data.pregnant) {
this.setData({
hidePregnant: true
})
};
if (data.allergy_history) {
this.setData({
hideGuomin: true
})
};
if (data.family_history) {
this.setData({
hideFamilysick: true
})
};
if (data.diagnose_images) {
this.setData({
fileList: data.diagnose_images,
checkSign: false
})
} else {
this.setData({
checkSign: false
})
}
}
},
handleOnlineSick(id){
lastSick(id).then(data => {
this.handleSetValue(data);
}) })
}, },
// handleLastSick(id) {
// lastSick(id).then(data => {
// if (!data){
// this.getlocalInfo(id);
// } else {
// }
// })
// },
onConfirm(event) { onConfirm(event) {
const { const {
@ -331,6 +353,11 @@ Page({
showSick: false showSick: false
}) })
}, },
goRecord:throttle(function(){
app.method.navigateTo({
url:'/pages/sickRecord/sickRecord?family_id='+this.data.family_id
})
}),
handleThrottle: throttle(function () { handleThrottle: throttle(function () {
this.create_Order() this.create_Order()
}), }),
@ -552,6 +579,21 @@ Page({
diagnosis_date: dayjs(event.detail).format('YYYY-MM-DD') diagnosis_date: dayjs(event.detail).format('YYYY-MM-DD')
}); });
}, },
handlepathographyDetail(id){
pathographyDetail(id).then(data=>{
this.handleSetValue(data);
})
},
handleIsExist(){
let {family_id}=this.data;
isExist({
family_id
}).then(data=>{
this.setData({
is_exist:data.is_exist==0?false:true
})
})
},
handelFocus(e) { handelFocus(e) {
let key = e.target.dataset.id; let key = e.target.dataset.id;
let value = e.target.dataset.value; let value = e.target.dataset.value;
@ -630,9 +672,6 @@ Page({
}) })
} }
} }
}, },
agreeConfirm(){ agreeConfirm(){
this.setData({ this.setData({
@ -784,7 +823,9 @@ Page({
}) })
} }
//this.getSick(); //this.getSick();
this.handleLastSick(options.family_id);
this.handleIsExist();
}, },
goAgreement:throttle(function(){ goAgreement:throttle(function(){
app.method.navigateTo({ app.method.navigateTo({
@ -806,7 +847,9 @@ Page({
img_host:app.hostConfig().imghost img_host:app.hostConfig().imghost
}); });
let { let {
prevData prevData,
pathography_id,
family_id
} = this.data; } = this.data;
if (prevData) { if (prevData) {
this.setData({ this.setData({
@ -814,6 +857,14 @@ Page({
disease_class_id: prevData.disease_class_id, disease_class_id: prevData.disease_class_id,
}) })
} }
console.log(pathography_id)
if(pathography_id){
this.handlepathographyDetail(pathography_id)
}else{
this.getlocalInfo(family_id);
//this.handleLastSick(options.family_id);
}
}, },
/** /**

View File

@ -6,6 +6,10 @@
<view class="ui-title">填写病情</view> <view class="ui-title">填写病情</view>
</view> </view>
<view class="infobox"> <view class="infobox">
<view class="sickHisbox" wx:if="{{is_exist}}">
<view class="name">病情历史</view>
<view class="hisBtn" bindtap="goRecord">查看记录</view>
</view>
<view class="info" bindtap="showSick"> <view class="info" bindtap="showSick">
<view class="name">所患疾病</view> <view class="name">所患疾病</view>
<input type="text" value="{{disease_class_name}}" placeholder="请填写所患疾病名称" class="ipt" disabled="true"> <input type="text" value="{{disease_class_name}}" placeholder="请填写所患疾病名称" class="ipt" disabled="true">

View File

@ -7,7 +7,27 @@
margin-top:172rpx; margin-top:172rpx;
} }
.sickHisbox{
display: flex;
height:94rpx;
align-items: center;
margin-bottom: 20rpx;
background-color: #fff;
padding:0 55rpx;
justify-content: space-between;
}
.hisBtn{
width: 166rpx;
height: 60rpx;
color:#3CC7C0;
display: flex;
font-size: 26rpx;
align-items: center;
justify-content: center;
background: #E2FFFE;
border-radius: 6rpx;
border: 1rpx solid #3CC7C0;
}
.info { .info {
border-bottom: 1rpx solid #E7E7E7; border-bottom: 1rpx solid #E7E7E7;
display: flex; display: flex;