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) {
}
if(option.query && option.query.depart_id) {
uni.setStorageSync('checkin_depart_id', option.query.depart_id)
if(option.query && option.query.checkin_depart_id) {
uni.setStorageSync('checkin_depart_id', option.query.checkin_depart_id)
}
if(!did){

2
components/preBookList.vue

@ -45,7 +45,7 @@ export default {
},
methods: {
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) {
var str = new Date(dateString);

108
components/visitorAccount.vue

@ -1,65 +1,32 @@
<template>
<view :class="'visitor-account-com'+(open?' default-open':'')">
<uni-collapse v-model="open?valueOpen:valueClose">
<uni-collapse-item title="广安门中医医院中西医门诊部 中医科" :thumb="thumb" :errmsg="errmsg" :disabled="disabled">
<view class="collapse-list">
<uni-collapse v-model="open?valueOpen:valueClose" @change="change">
<uni-collapse-item :title="hospital_name" :thumb="thumb" :errmsg="errmsg" :disabled="disabled">
<view class="collapse-list" v-if="visitorInfo">
<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="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 class="item" v-for="(item, index) in visitorInfo.single_items" :key="'single_'+index">
<text>{{item.name}}</text>
<text :class="{'outnum': parseInt(item.num) < 0}">{{parseInt(item.num) >= 0 ? '治疗'+item.num+'次' : '欠'+Math.abs(parseInt(item.num))+'次'}}</text>
</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>
<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>
<span class="package-name over">{{packageItem.name}}</span>
<view class="item" v-for="(item, index) in packageItem.data" :key="'package_item_'+index" :class="{'notice': parseInt(item.num) < 0}">
<text>{{item.name}}</text>
<text :class="{'outnum': parseInt(item.num) < 0}">{{parseInt(item.num) >= 0 ? '治疗'+item.num+'次' : '欠'+Math.abs(parseInt(item.num))+'次'}}</text>
</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>
</uni-collapse-item>
</uni-collapse>
</view>
</template>
@ -84,16 +51,46 @@ export default {
type: Boolean,
default: false
},
depart_id: {
type: [Number, String],
default: 0
},
visitor_id: {
type: [Number, String],
default: 0
},
hospital_name: {
type: String,
default: '医院科室'
}
},
data() {
return {
cssUrl:this.cssUrl,
valueOpen:['0'],
valueClose:['1'],
visitorInfo: false
}
},
mounted() {
if(this.open) {
this.get_visitor_info();
}
},
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>
@ -103,6 +100,11 @@ export default {
width: 100%;
height: auto;
overflow: hidden;
margin-top: 28rpx;
padding: 12px;
box-sizing: border-box;
background: #F9FAFB;
&.default-open{
::v-deep{
.uni-collapse-item__title{
@ -114,13 +116,16 @@ export default {
.uni-collapse-item__wrap{
margin-top: 16rpx;
}
.uni-collapse-item__wrap-content{
border: none !important;
}
}
}
::v-deep{
.uni-collapse-item__wrap-content{
border: none;
}
.uni-collapse-item__wrap{
background: #F9FAFB;
.uni-collapse-item__wrap-content{
@ -182,5 +187,4 @@ export default {
}
}
}
</style>

13
components/visitorList.vue

@ -25,6 +25,7 @@ export default {
cssUrl:this.cssUrl,
userSelectIndex:0,
vistors:false,
visitor_id:0
}
},
methods: {
@ -35,16 +36,22 @@ export default {
this.userSelectIndex = key
var visitor_id = 0
if(this.userSelectIndex > 0) visitor_id = this.vistors[this.userSelectIndex-1].id
this.visitor_id = visitor_id
this.getVisitors()
this.$emit('clickEvent', visitor_id)
},
getVisitors() {
var param = new Object()
param.page = 1
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
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;
padding: 0 12rpx;
flex-shrink: 0;
img{
height: 44rpx;
height: 44rpx;

3
main.js

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

19
pages/index/index.vue

@ -224,6 +224,16 @@
this.$settoken.setToken(data.jwttoken)
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()
// var rebackPagePath = uni.getStorageSync('rebackPagePath')
// if(rebackPagePath){
@ -237,6 +247,15 @@
async getDoctorInfo() {
await this.$http.req('user/index_info', {}, 'GET').then(data=>{
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;
let visitFlag = true;
this.doctorInfo = data;

14
pages/prebook_list/prebook_list.vue

@ -1,6 +1,6 @@
<template>
<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>
</view>
</template>
@ -15,17 +15,17 @@
}
},
components:{
preBookList,
preBookList,
visitorList
},
onReady() {
this.pageInit()
},
onReady() {
this.pageInit()
},
methods: {
getBookData(visitor_id) {
var param = new Object()
param.page = 1
param.limit = 10000
param.limit = 10000
if(visitor_id >= 0){
param.visitor_id = visitor_id
}else{
@ -48,7 +48,7 @@
// }
});
},
pageInit() {
pageInit() {
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>
</list-box>
</view>
<view class="bot-con">
<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 class="bot-con">
@ -16,7 +16,7 @@
<view class="content" v-html="notice"></view>
</view>
<view class="btPadding pagebt"></view>
<view class="fixedBot btPadding">
<view class="submit">
<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>
</view>
<view :class="'ccpop'+(popkey==0?' bed-edit-pop':'')">
<uni-popup ref="popup" type="bottom" background-color="#fff">
<view class="edit-pop-title PfScSemibold">{{poptitle}}</view>
@ -38,7 +38,7 @@
</uni-popup>
</view>
</view>
</template>
@ -47,7 +47,7 @@
import listBox from '@/components/listBox.vue';
import visitorAccount from '@/components/visitorAccount.vue'
import userCard from '@/components/userCard.vue';
export default {
data() {
return {
@ -71,6 +71,7 @@
showCancelBook:false,
redirect:'/pages/prebook_list/prebook_list',
bookId:false,
visitor_id:0,
depart_id:false,
bookInfo:false,
showReBook:false,
@ -86,6 +87,7 @@
// if(option.index) this.redirect = '/pages/index/index'
if(option.id) this.bookId = option.id
if(option.depart_id) this.depart_id = option.depart_id
if(option.visitor_id) this.visitor_id = option.visitor_id
},
onShow() {
if(!this.bookId || !this.depart_id){
@ -103,7 +105,7 @@
submitEdit(e){
var obj = this.$refs.usercard_0[0].getData()
console.log(obj)
},
closepop(){
this.$refs.popup.close()
@ -155,7 +157,7 @@
this.$func.toPage('/pages/index/index')
},
changeType() {
},
getBookDetail(){
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.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[2].rightTitle = bookInfo.name
this.list[3].rightTitle = bookInfo.hospital_name
this.list[4].rightTitle = bookInfo.depart_name
@ -225,7 +227,7 @@
border-radius: 40rpx;
}
}
}
}
.list-box,.bot-con{
width: calc(100% - 34rpx);
height: auto;
@ -252,14 +254,14 @@
backdrop-filter: blur(54.4rpx);
box-shadow: 0rpx -2rpx 6rpx 0rpx rgba(181, 181, 181, 0.1319);
align-items: center;
.btn.btn1{
border-radius: 12rpx;
width: 300rpx;
height: 90rpx;
}
}
.list-box{
.item-wrapper{
.item-inner ::v-deep{
@ -323,7 +325,7 @@
}
}
}
.queue-text{
height: 40rpx;
font-size: 28rpx;

10
pages/visitors/visitors.vue

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

45
pages/visitors_new/visitors_new.vue

@ -1,33 +1,35 @@
<template>
<view class='waiting-method-page'>
<visitor-list @clickEvent="getBookData" 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">
<!-- <visitor-account></visitor-account> -->
<visitor-list @clickEvent="getVisitorListData" @dataEvent="setVisitorListData" ref="visitors" :add="true"></visitor-list>
<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 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 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>
</uni-card>
<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>
</uni-card>
<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>
</uni-card>
<visitor-account :thumb="cssUrl+'hicon.svg'" errmsg="4周未看病,请及时复诊"></visitor-account>
</uni-card> -->
<view class="bt btPadding"></view>
</view>
</template>
<script>
import visitorList from '@/components/visitorList.vue'
import visitorAccount from '@/components/visitorAccount.vue'
export default {
data() {
return {
@ -36,7 +38,9 @@
cssUrl:this.cssUrl,
depart_id:0,
hospital_depart_name:'',
visitor_list:false,
value:'',
visitor_id:0,
type: 0,
types: [{
text: '等医生叫号',
@ -63,7 +67,11 @@
changeCollapse(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)
}
}
@ -77,13 +85,14 @@
.uni-card{
border-radius: 0;
padding: 34rpx 42rpx !important;
margin-bottom: 20rpx !important;
.uni-collapse-item__title-arrow{
margin-right: 0;
}
.uni-collapse-item{
background: #F9FAFB;
}
&.empty{
.uni-card__content{
display: none;
@ -93,8 +102,8 @@
width: calc(100% - 40rpx);
}
.uni-card__content{
background: #F9FAFB;
margin-top: 28rpx;
padding: 0 !important;
background: white;
}
.uni-collapse-item__title{
background: #F9FAFB;

Loading…
Cancel
Save