Browse Source

1.首页扫码签到/2.就诊人页面及交互/3.就诊详情页面及交互/4.修改床位弹窗/

master
kuaileWu 6 months ago
parent
commit
05b3f8eb3e
  1. 4
      App.vue
  2. 2
      components/preBookList.vue
  3. 108
      components/visitorAccount.vue
  4. 13
      components/visitorList.vue
  5. 3
      main.js
  6. 19
      pages/index/index.vue
  7. 14
      pages/prebook_list/prebook_list.vue
  8. 32
      pages/visit_detail/visit_detail.vue
  9. 10
      pages/visitors/visitors.vue
  10. 45
      pages/visitors_new/visitors_new.vue

4
App.vue

@ -17,8 +17,8 @@
} catch (e) { } catch (e) {
} }
if(option.query && option.query.depart_id) { if(option.query && option.query.checkin_depart_id) {
uni.setStorageSync('checkin_depart_id', option.query.depart_id) uni.setStorageSync('checkin_depart_id', option.query.checkin_depart_id)
} }
if(!did){ if(!did){

2
components/preBookList.vue

@ -45,7 +45,7 @@ export default {
}, },
methods: { methods: {
toBookDetail(item){ toBookDetail(item){
this.$func.toPage('/pages/visit_detail/visit_detail?id='+item.id+'&depart_id='+item.depart_id) this.$func.toPage('/pages/visit_detail/visit_detail?id='+item.id+'&depart_id='+item.depart_id+'&visitor_id='+item.visitor_id)
}, },
getDayOfWeek(dateString) { getDayOfWeek(dateString) {
var str = new Date(dateString); var str = new Date(dateString);

108
components/visitorAccount.vue

@ -1,65 +1,32 @@
<template> <template>
<view :class="'visitor-account-com'+(open?' default-open':'')"> <view :class="'visitor-account-com'+(open?' default-open':'')">
<uni-collapse v-model="open?valueOpen:valueClose"> <uni-collapse v-model="open?valueOpen:valueClose" @change="change">
<uni-collapse-item title="广安门中医医院中西医门诊部 中医科" :thumb="thumb" :errmsg="errmsg" :disabled="disabled"> <uni-collapse-item :title="hospital_name" :thumb="thumb" :errmsg="errmsg" :disabled="disabled">
<view class="collapse-list"> <view class="collapse-list" v-if="visitorInfo">
<view class="account-list"> <view class="account-list">
<view class="account-item"> <!-- 单次项目 -->
<view class="account-item" v-if="visitorInfo.single_items && visitorInfo.single_items.length > 0">
<view class="title PfScSemibold">单次项目</view> <view class="title PfScSemibold">单次项目</view>
<view class="item"> <view class="item" v-for="(item, index) in visitorInfo.single_items" :key="'single_'+index">
<text>针灸</text> <text>{{item.name}}</text>
<text>治疗1次</text> <text :class="{'outnum': parseInt(item.num) < 0}">{{parseInt(item.num) >= 0 ? '治疗'+item.num+'次' : '欠'+Math.abs(parseInt(item.num))+'次'}}</text>
</view>
<view class="item">
<text>麦粒灸</text>
<text>治疗3次</text>
</view>
<view class="item notice">
<text>艾灸</text>
<text class="outnum">欠1次</text>
</view> </view>
</view> </view>
<view class="account-item"> <!-- 疗程套餐 -->
<view class="accout-package"> <view class="account-item" v-if="visitorInfo.treatment_package && Object.keys(visitorInfo.treatment_package).length > 0">
<view class="accout-package" v-for="(packageItem, packageId) in visitorInfo.treatment_package" :key="'package_'+packageId">
<view class="title PfScSemibold">疗程套餐</view> <view class="title PfScSemibold">疗程套餐</view>
<span class="package-name over">上热下寒疗程包</span> <span class="package-name over">{{packageItem.name}}</span>
<view class="item"> <view class="item" v-for="(item, index) in packageItem.data" :key="'package_item_'+index" :class="{'notice': parseInt(item.num) < 0}">
<text>针灸</text> <text>{{item.name}}</text>
<text>治疗1次</text> <text :class="{'outnum': parseInt(item.num) < 0}">{{parseInt(item.num) >= 0 ? '治疗'+item.num+'次' : '欠'+Math.abs(parseInt(item.num))+'次'}}</text>
</view>
<view class="item">
<text>麦粒灸</text>
<text>治疗3次</text>
</view>
<view class="item notice">
<text>艾灸</text>
<text class="outnum">欠1次</text>
</view> </view>
</view> </view>
<view class="accout-package">
<view class="title PfScMedium">疗程套餐</view>
<span class="package-name over">上热下寒疗程包</span>
<view class="item">
<text>针灸</text>
<text>治疗1次</text>
</view>
<view class="item">
<text>麦粒灸</text>
<text>治疗3次</text>
</view>
<view class="item notice">
<text>艾灸</text>
<text class="outnum">欠1次</text>
</view>
</view>
</view> </view>
</view> </view>
</view> </view>
</uni-collapse-item> </uni-collapse-item>
</uni-collapse> </uni-collapse>
</view> </view>
</template> </template>
@ -84,16 +51,46 @@ export default {
type: Boolean, type: Boolean,
default: false default: false
}, },
depart_id: {
type: [Number, String],
default: 0
},
visitor_id: {
type: [Number, String],
default: 0
},
hospital_name: {
type: String,
default: '医院科室'
}
}, },
data() { data() {
return { return {
cssUrl:this.cssUrl, cssUrl:this.cssUrl,
valueOpen:['0'], valueOpen:['0'],
valueClose:['1'], valueClose:['1'],
visitorInfo: false
}
},
mounted() {
if(this.open) {
this.get_visitor_info();
} }
}, },
methods: { methods: {
change(e) {
if(e[0] == 0) this.get_visitor_info()
},
async get_visitor_info() {
this.visitorInfo = false
var obj = new Object()
obj.depart_id = this.depart_id
obj.visitor_id = this.visitor_id
await this.$http.req('user/get_visitor_info', obj, 'POST').then(data=>{
if(data == -1) return
this.visitorInfo = data;
});
}
} }
}; };
</script> </script>
@ -103,6 +100,11 @@ export default {
width: 100%; width: 100%;
height: auto; height: auto;
overflow: hidden; overflow: hidden;
margin-top: 28rpx;
padding: 12px;
box-sizing: border-box;
background: #F9FAFB;
&.default-open{ &.default-open{
::v-deep{ ::v-deep{
.uni-collapse-item__title{ .uni-collapse-item__title{
@ -114,13 +116,16 @@ export default {
.uni-collapse-item__wrap{ .uni-collapse-item__wrap{
margin-top: 16rpx; margin-top: 16rpx;
} }
.uni-collapse-item__wrap-content{ .uni-collapse-item__wrap-content{
border: none !important; border: none !important;
} }
} }
} }
::v-deep{ ::v-deep{
.uni-collapse-item__wrap-content{
border: none;
}
.uni-collapse-item__wrap{ .uni-collapse-item__wrap{
background: #F9FAFB; background: #F9FAFB;
.uni-collapse-item__wrap-content{ .uni-collapse-item__wrap-content{
@ -182,5 +187,4 @@ export default {
} }
} }
} }
</style> </style>

13
components/visitorList.vue

@ -25,6 +25,7 @@ export default {
cssUrl:this.cssUrl, cssUrl:this.cssUrl,
userSelectIndex:0, userSelectIndex:0,
vistors:false, vistors:false,
visitor_id:0
} }
}, },
methods: { methods: {
@ -35,16 +36,22 @@ export default {
this.userSelectIndex = key this.userSelectIndex = key
var visitor_id = 0 var visitor_id = 0
if(this.userSelectIndex > 0) visitor_id = this.vistors[this.userSelectIndex-1].id if(this.userSelectIndex > 0) visitor_id = this.vistors[this.userSelectIndex-1].id
this.visitor_id = visitor_id
this.getVisitors()
this.$emit('clickEvent', visitor_id) this.$emit('clickEvent', visitor_id)
}, },
getVisitors() { getVisitors() {
var param = new Object() var param = new Object()
param.page = 1 param.page = 1
param.limit = 10000 param.limit = 10000
this.$http.req('user/get_visitors', {}, 'GET').then(data=>{
var obj = new Object()
if(this.visitor_id != 0) obj.visitor_id = this.visitor_id
this.$http.req('user/get_visitors', obj, 'POST').then(data=>{
if(data == -1) return if(data == -1) return
this.vistors = data this.vistors = data
this.$emit('clickEvent', 0) this.$emit('dataEvent', this.vistors)
this.$emit('prebookEvent', this.visitor_id)
}); });
} }
} }
@ -101,7 +108,7 @@ export default {
color: #FFFFFF; color: #FFFFFF;
padding: 0 12rpx; padding: 0 12rpx;
flex-shrink: 0; flex-shrink: 0;
img{ img{
height: 44rpx; height: 44rpx;
height: 44rpx; height: 44rpx;

3
main.js

@ -233,9 +233,8 @@ function req(url, data={}, method = 'POST', header={}) {
logindatac.state = 'user'; logindatac.state = 'user';
var checkin_depart_id = uni.getStorageSync('checkin_depart_id'); var checkin_depart_id = uni.getStorageSync('checkin_depart_id');
if(checkin_depart_id){ if(checkin_depart_id){
logindatac.state += '-d'+checkin_depart_id;
} }
)
const pagesc = getCurrentPages(); const pagesc = getCurrentPages();
const currentPagec = pagesc[pagesc.length - 1]; const currentPagec = pagesc[pagesc.length - 1];

19
pages/index/index.vue

@ -224,6 +224,16 @@
this.$settoken.setToken(data.jwttoken) this.$settoken.setToken(data.jwttoken)
this.setLoginUserInfo(data) this.setLoginUserInfo(data)
var stat_info = this.state.split('-');
if(stat_info.length > 2) {
uni.removeStorageSync('checkin_depart_id');
location.href = '/pages/visitors/visitors?type=3&depart_id='+stat_info[2];
// uni.navigateTo({
// url:"/pages/visitors/visitors?type=3&depart_id="+stat_info[2]
// })
return;
}
this.getDoctorInfo() this.getDoctorInfo()
// var rebackPagePath = uni.getStorageSync('rebackPagePath') // var rebackPagePath = uni.getStorageSync('rebackPagePath')
// if(rebackPagePath){ // if(rebackPagePath){
@ -237,6 +247,15 @@
async getDoctorInfo() { async getDoctorInfo() {
await this.$http.req('user/index_info', {}, 'GET').then(data=>{ await this.$http.req('user/index_info', {}, 'GET').then(data=>{
if(data == -1) return if(data == -1) return
var checkin_depart_id = uni.getStorageSync('checkin_depart_id');
if(checkin_depart_id){
uni.removeStorageSync('checkin_depart_id');
location.href = '/pages/visitors/visitors?type=3&depart_id='+checkin_depart_id;
return;
}
this.pageShow = true; this.pageShow = true;
let visitFlag = true; let visitFlag = true;
this.doctorInfo = data; this.doctorInfo = data;

14
pages/prebook_list/prebook_list.vue

@ -1,6 +1,6 @@
<template> <template>
<view class="page-prebook-list"> <view class="page-prebook-list">
<visitor-list @clickEvent="getBookData" ref="visitors"></visitor-list> <visitor-list @prebookEvent="getBookData" ref="visitors"></visitor-list>
<pre-book-list class="preg-books" :dataList="bookList"></pre-book-list> <pre-book-list class="preg-books" :dataList="bookList"></pre-book-list>
</view> </view>
</template> </template>
@ -15,17 +15,17 @@
} }
}, },
components:{ components:{
preBookList, preBookList,
visitorList visitorList
}, },
onReady() { onReady() {
this.pageInit() this.pageInit()
}, },
methods: { methods: {
getBookData(visitor_id) { getBookData(visitor_id) {
var param = new Object() var param = new Object()
param.page = 1 param.page = 1
param.limit = 10000 param.limit = 10000
if(visitor_id >= 0){ if(visitor_id >= 0){
param.visitor_id = visitor_id param.visitor_id = visitor_id
}else{ }else{
@ -48,7 +48,7 @@
// } // }
}); });
}, },
pageInit() { pageInit() {
this.$refs.visitors.getVisitors() this.$refs.visitors.getVisitors()
} }
} }

32
pages/visit_detail/visit_detail.vue

@ -5,10 +5,10 @@
<view class="item-inner" v-html="item.custom" v-if="item.custom" @click="edit" :data-item="item" :data-key="key"></view> <view class="item-inner" v-html="item.custom" v-if="item.custom" @click="edit" :data-item="item" :data-key="key"></view>
</list-box> </list-box>
</view> </view>
<view class="bot-con"> <view class="bot-con">
<view class="title PfScMedium">治疗记录</view> <view class="title PfScMedium">治疗记录</view>
<visitor-account :open="true" :disabled="true"></visitor-account> <visitor-account :open="true" :disabled="true" :depart_id="depart_id" :visitor_id="visitor_id"></visitor-account>
</view> </view>
<view class="bot-con"> <view class="bot-con">
@ -16,7 +16,7 @@
<view class="content" v-html="notice"></view> <view class="content" v-html="notice"></view>
</view> </view>
<view class="btPadding pagebt"></view> <view class="btPadding pagebt"></view>
<view class="fixedBot btPadding"> <view class="fixedBot btPadding">
<view class="submit"> <view class="submit">
<view :class="'btn cancel'+(showCancelBook?' btn1':' btn3')" hover-class="hover" @click="reback">返回</view> <view :class="'btn cancel'+(showCancelBook?' btn1':' btn3')" hover-class="hover" @click="reback">返回</view>
@ -24,7 +24,7 @@
<!-- <view class="btn primary btn1" hover-class="hover" v-if="showReBook && !showCancelBook" @click="rebook">重新预约</view> --> <!-- <view class="btn primary btn1" hover-class="hover" v-if="showReBook && !showCancelBook" @click="rebook">重新预约</view> -->
</view> </view>
</view> </view>
<view :class="'ccpop'+(popkey==0?' bed-edit-pop':'')"> <view :class="'ccpop'+(popkey==0?' bed-edit-pop':'')">
<uni-popup ref="popup" type="bottom" background-color="#fff"> <uni-popup ref="popup" type="bottom" background-color="#fff">
<view class="edit-pop-title PfScSemibold">{{poptitle}}</view> <view class="edit-pop-title PfScSemibold">{{poptitle}}</view>
@ -38,7 +38,7 @@
</uni-popup> </uni-popup>
</view> </view>
</view> </view>
</template> </template>
@ -47,7 +47,7 @@
import listBox from '@/components/listBox.vue'; import listBox from '@/components/listBox.vue';
import visitorAccount from '@/components/visitorAccount.vue' import visitorAccount from '@/components/visitorAccount.vue'
import userCard from '@/components/userCard.vue'; import userCard from '@/components/userCard.vue';
export default { export default {
data() { data() {
return { return {
@ -71,6 +71,7 @@
showCancelBook:false, showCancelBook:false,
redirect:'/pages/prebook_list/prebook_list', redirect:'/pages/prebook_list/prebook_list',
bookId:false, bookId:false,
visitor_id:0,
depart_id:false, depart_id:false,
bookInfo:false, bookInfo:false,
showReBook:false, showReBook:false,
@ -86,6 +87,7 @@
// if(option.index) this.redirect = '/pages/index/index' // if(option.index) this.redirect = '/pages/index/index'
if(option.id) this.bookId = option.id if(option.id) this.bookId = option.id
if(option.depart_id) this.depart_id = option.depart_id if(option.depart_id) this.depart_id = option.depart_id
if(option.visitor_id) this.visitor_id = option.visitor_id
}, },
onShow() { onShow() {
if(!this.bookId || !this.depart_id){ if(!this.bookId || !this.depart_id){
@ -103,7 +105,7 @@
submitEdit(e){ submitEdit(e){
var obj = this.$refs.usercard_0[0].getData() var obj = this.$refs.usercard_0[0].getData()
console.log(obj) console.log(obj)
}, },
closepop(){ closepop(){
this.$refs.popup.close() this.$refs.popup.close()
@ -155,7 +157,7 @@
this.$func.toPage('/pages/index/index') this.$func.toPage('/pages/index/index')
}, },
changeType() { changeType() {
}, },
getBookDetail(){ getBookDetail(){
this.$http.req('user/get_appoint_detail', {appoint_id:this.bookId,depart_id:this.depart_id}, 'POST').then(data=>{ this.$http.req('user/get_appoint_detail', {appoint_id:this.bookId,depart_id:this.depart_id}, 'POST').then(data=>{
@ -178,10 +180,10 @@
this.showCancelBook = false this.showCancelBook = false
} }
this.list[0].custom = "<view class='bi flex'><view class='"+this.status+" status'><view class='over status_text'>"+bookInfo.status_desc+"</view></view><img src="+this.cssUrl+"bi.svg></view>" this.list[0].custom = "<view class='bi flex'><view class='"+this.status+" status'><view class='over status_text'>"+bookInfo.status_desc+"</view></view><img src="+this.cssUrl+"bi.svg></view>"
this.list[1].custom = "<view class='bi flex'><text>2诊室13床</text><img src="+this.cssUrl+"bi.svg></view>" this.list[1].custom = "<view class='bi flex'><text>2诊室13床</text><img src="+this.cssUrl+"bi.svg></view>"
this.list[2].rightTitle = bookInfo.name this.list[2].rightTitle = bookInfo.name
this.list[3].rightTitle = bookInfo.hospital_name this.list[3].rightTitle = bookInfo.hospital_name
this.list[4].rightTitle = bookInfo.depart_name this.list[4].rightTitle = bookInfo.depart_name
@ -225,7 +227,7 @@
border-radius: 40rpx; border-radius: 40rpx;
} }
} }
} }
.list-box,.bot-con{ .list-box,.bot-con{
width: calc(100% - 34rpx); width: calc(100% - 34rpx);
height: auto; height: auto;
@ -252,14 +254,14 @@
backdrop-filter: blur(54.4rpx); backdrop-filter: blur(54.4rpx);
box-shadow: 0rpx -2rpx 6rpx 0rpx rgba(181, 181, 181, 0.1319); box-shadow: 0rpx -2rpx 6rpx 0rpx rgba(181, 181, 181, 0.1319);
align-items: center; align-items: center;
.btn.btn1{ .btn.btn1{
border-radius: 12rpx; border-radius: 12rpx;
width: 300rpx; width: 300rpx;
height: 90rpx; height: 90rpx;
} }
} }
.list-box{ .list-box{
.item-wrapper{ .item-wrapper{
.item-inner ::v-deep{ .item-inner ::v-deep{
@ -323,7 +325,7 @@
} }
} }
} }
.queue-text{ .queue-text{
height: 40rpx; height: 40rpx;
font-size: 28rpx; font-size: 28rpx;

10
pages/visitors/visitors.vue

@ -153,9 +153,7 @@
if(option.depart_id) this.depart_id = option.depart_id if(option.depart_id) this.depart_id = option.depart_id
if(option.is_preview) this.is_preview = true if(option.is_preview) this.is_preview = true
},
async onShow() {
await this.getDoctorInfo();
if(this.type == 2){ if(this.type == 2){
uni.setNavigationBarTitle({ uni.setNavigationBarTitle({
title:'就诊人' title:'就诊人'
@ -169,6 +167,12 @@
title:'请选择就诊人' title:'请选择就诊人'
}) })
} }
},
async onShow() {
await this.getDoctorInfo();
},
onReady() {
}, },
methods: { methods: {

45
pages/visitors_new/visitors_new.vue

@ -1,33 +1,35 @@
<template> <template>
<view class='waiting-method-page'> <view class='waiting-method-page'>
<visitor-list @clickEvent="getBookData" ref="visitors" :add="true"></visitor-list> <visitor-list @clickEvent="getVisitorListData" @dataEvent="setVisitorListData" ref="visitors" :add="true"></visitor-list>
<uni-card title="上官子涵" extra="身份证:9098******8778" margin="0 0 20rpx 0" shadow="none" :border="false" padding="24rpx" class="empty"> <uni-card v-if="visitor_id==0 || (visitor_id!=0 && visitor_id==item.id)" v-for="(item,key) in visitor_list" :title="item.name" :extra="'身份证:'+item.idcard_txt" :class="((visitor_list && item.h_list && item.h_list.length>0)?'':'empty')" margin="0 0 0rpx 0" shadow="none" :border="false" padding="24rpx">
<!-- <visitor-account></visitor-account> --> <visitor-account v-for="(item2,key2) in item.h_list" :depart_id="item2.depart_id" :visitor_id="item.id" :thumb="cssUrl+'hicon.svg'" v-if="visitor_list && item.h_list && item.h_list.length>0" :errmsg="(!item2.weeks ? '' : ' '+(item2.weeks<=10?item2.weeks:('超过10')))+'周未看病,请及时复诊'"></visitor-account>
</uni-card> </uni-card>
<uni-card title="上官子涵" extra="身份证:9098******8778" margin="0 0 20rpx 0" shadow="none" :border="false" padding="24rpx" class=""> <!-- <uni-card title="上官子涵" extra="身份证:9098******8778" margin="0 0 20rpx 0" shadow="none" :border="false" padding="24rpx" class="">
<visitor-account :thumb="cssUrl+'hicon.svg'"></visitor-account> <visitor-account :thumb="cssUrl+'hicon.svg'"></visitor-account>
</uni-card> </uni-card>
<uni-card title="上官子涵" extra="身份证:9098******8778" margin="0 0 20rpx 0" shadow="none" :border="false" padding="24rpx" class=""> <uni-card title="上官子涵" extra="身份证:9098******8778" margin="0 0 20rpx 0" shadow="none" :border="false" padding="24rpx" class="">
<visitor-account :thumb="cssUrl+'hicon.svg'" errmsg="4周未看病,请及时复诊"></visitor-account> <visitor-account :thumb="cssUrl+'hicon.svg'" errmsg="4周未看病,请及时复诊"></visitor-account>
</uni-card> </uni-card>
<uni-card title="上官子涵" extra="身份证:9098******8778" margin="0 0 20rpx 0" shadow="none" :border="false" padding="24rpx" class=""> <uni-card title="上官子涵" extra="身份证:9098******8778" margin="0 0 20rpx 0" shadow="none" :border="false" padding="24rpx" class="">
<visitor-account :thumb="cssUrl+'hicon.svg'" errmsg="4周未看病,请及时复诊"></visitor-account> <visitor-account :thumb="cssUrl+'hicon.svg'" errmsg="4周未看病,请及时复诊"></visitor-account>
</uni-card> <visitor-account :thumb="cssUrl+'hicon.svg'" errmsg="4周未看病,请及时复诊"></visitor-account>
</uni-card> -->
<view class="bt btPadding"></view>
</view> </view>
</template> </template>
<script> <script>
import visitorList from '@/components/visitorList.vue' import visitorList from '@/components/visitorList.vue'
import visitorAccount from '@/components/visitorAccount.vue' import visitorAccount from '@/components/visitorAccount.vue'
export default { export default {
data() { data() {
return { return {
@ -36,7 +38,9 @@
cssUrl:this.cssUrl, cssUrl:this.cssUrl,
depart_id:0, depart_id:0,
hospital_depart_name:'', hospital_depart_name:'',
visitor_list:false,
value:'', value:'',
visitor_id:0,
type: 0, type: 0,
types: [{ types: [{
text: '等医生叫号', text: '等医生叫号',
@ -63,7 +67,11 @@
changeCollapse(e) { changeCollapse(e) {
console.log(e); console.log(e);
}, },
getBookData(visitor_id){ setVisitorListData(e) {
this.visitor_list = e
},
getVisitorListData(visitor_id){
this.visitor_id = visitor_id
console.log(visitor_id) console.log(visitor_id)
} }
} }
@ -77,13 +85,14 @@
.uni-card{ .uni-card{
border-radius: 0; border-radius: 0;
padding: 34rpx 42rpx !important; padding: 34rpx 42rpx !important;
margin-bottom: 20rpx !important;
.uni-collapse-item__title-arrow{ .uni-collapse-item__title-arrow{
margin-right: 0; margin-right: 0;
} }
.uni-collapse-item{ .uni-collapse-item{
background: #F9FAFB; background: #F9FAFB;
} }
&.empty{ &.empty{
.uni-card__content{ .uni-card__content{
display: none; display: none;
@ -93,8 +102,8 @@
width: calc(100% - 40rpx); width: calc(100% - 40rpx);
} }
.uni-card__content{ .uni-card__content{
background: #F9FAFB; padding: 0 !important;
margin-top: 28rpx; background: white;
} }
.uni-collapse-item__title{ .uni-collapse-item__title{
background: #F9FAFB; background: #F9FAFB;

Loading…
Cancel
Save