Browse Source

Merge branch 'master' of gitea.intra.yunpaper.com:kuaileadmin/acupuncture_register_system_uniapp

master
zq 1 month ago
parent
commit
58974a01f0
  1. 38
      App.vue
  2. 303
      components/bookBox.vue
  3. 6
      main.js
  4. 1118
      pages/index/index.vue
  5. 12
      中医针灸改版2.0_2025_03_06/需求拆分.txt
  6. 14
      针灸挂号系统功能拆分.txt

38
App.vue

@ -4,6 +4,42 @@
doctorId:'', doctorId:'',
doctoridStorageKey:'doctor_id' doctoridStorageKey:'doctor_id'
}, },
onShow: function() {
var updateManager = uni.getUpdateManager();
updateManager.onCheckForUpdate(function(res) {
console.log("是否有最近版本", res.hasUpdate)
});
updateManager.onUpdateReady(function(res) {
uni.showModal({
title: '更新提示',
content: '新版本已经准备好,是否重启应用?',
showCancel: false,
success(res) {
if (res.confirm) {
updateManager.applyUpdate();
}
}
});
});
updateManager.onUpdateFailed(function(res) {
uni.showModal({
title: '提示',
content: '新版小程序下载失败\n请自行退出程序,手动卸载本程序,再运行',
confirmText: "知道了",
showCancel: false,
success(res) {
wx.exitMiniProgram({
success: () => {
console.log('退出小程序成功');
}
});
}
});
});
},
onLaunch: function(option) { onLaunch: function(option) {
console.log(option, 'option===='); console.log(option, 'option====');
var did = false var did = false
@ -82,7 +118,6 @@
} }
}, },
onShow: function() {},
onHide: function() {} onHide: function() {}
} }
</script> </script>
@ -242,6 +277,7 @@
} }
.btn{ .btn{
text-align: center; text-align: center;
font-size: 32rpx;
} }
.primary.btn{ .primary.btn{
background-color: #39D067; background-color: #39D067;

303
components/bookBox.vue

@ -1,303 +0,0 @@
<template>
<view class="book-com">
<view class="date-wraper">
<view :class="'date'+((selectDay===item.date)?' active':'')" v-for="(item,key) in Object.values(RegistrationTimeList)" @click="chooseDay(item.date)">
<view class="top">
<view>{{item.month}}.{{ item.day }}</view>
<view class="PfScMedium">{{item.week_desc}}</view>
</view>
<view :class="'bot'+((item.work_desc !== '不出诊')?' active':'')+(key==0?' PfScMedium':'')">
{{item.work_desc}}
</view>
</view>
</view>
<view class="datelist">
<view :class="'item'+(timeList.am.length<=0?' itemempty':' ')" v-if="bookTimeList">
<view class="title PfScMedium">上午预约</view>
<view class="inner-wrapper" v-if="timeList.am.length>0">
<view v-for="(item,key) in timeList.am" :class="'son PfScMedium'+( time2remain[item] <=0?' disable':'')" @click="confirmSubmit(item, 1)" :hover-class="time2remain[item]>0?'hover2':''">
{{item.split('-')[0]}}
<text v-if="visitorList.length > time2remain[item] || time2remain[item]<=0">{{time2remain[item]>0?("(名额余"+time2remain[item]+")"):(time2remainExpire[item]?'':'(名额已满)')}}</text>
</view>
</view>
<view class="empty" v-else>
<img :src="cssUrl+'empty.png'" alt="">
<view class="info">当前时间段不可预约</view>
</view>
</view>
<view :class="'item'+(timeList.pm.length<=0?' itemempty':' ')" v-if="bookTimeList">
<view class="title PfScMedium">下午预约</view>
<view class="inner-wrapper" v-if="timeList.pm.length>0">
<view :class="'son PfScMedium'+(time2remain[item]<=0?' disable':'')" @click="confirmSubmit(item, 2)" :hover-class="time2remain[item]>0?'hover2':''" v-for="(item,key) in timeList.pm">
{{item.split('-')[0]}}
<text v-if="visitorList.length > time2remain[item] || time2remain[item]<=0">{{time2remain[item]>0?("(名额余"+time2remain[item]+")"):(time2remainExpire[item]?'':'(名额已满)')}}</text>
</view>
</view>
<view class="empty" v-else>
<img :src="cssUrl+'empty.png'" alt="">
<view class="info">当前时间段不可预约</view>
</view>
</view>
<view class="empty-all" v-else>
<img :src="cssUrl+'empty.png'" alt="">
<view class="info2">
<view class="PfScMedium">{{timeList.type_text}}</view>
<view>请选择其他可预约日期</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
name: "bookBox",
props: {
visitorList:{
type:Array,
default:()=>[]
},
},
data() {
return {
cssUrl:this.cssUrl,
time2remain:[],
bookTimeList:false,
timeList:true,
disable:true,
selectDay:-1,
RegistrationTimeList:[],
nowtime:'',
time2remainExpire:[],
}
},
methods: {
dataInit(allDate,chooseDate) {//
let firstRegistrationTime = allDate['date2time']
this.RegistrationTimeList = allDate['date2work']
this.nowtime = allDate['nowtime']
this.time2remain = allDate['time2remain'];
for (var key in this.time2remain) {
if (this.time2remain.hasOwnProperty(key)) {
var times = key.split('-')
var end_times = chooseDate+' '+times[1]
this.time2remainExpire[key] = 0
if(this.nowtime >= end_times) this.time2remainExpire[key] = 1
}
}
if(chooseDate){
this.selectDay = chooseDate;
}else{
this.selectDay = Object.keys(this.RegistrationTimeList)[0];
if(!this.selectDay)return
this.chooseDay(this.selectDay)
return
}
this.bookTimeList = false
if(firstRegistrationTime.am.length > 0 || firstRegistrationTime.pm.length > 0) this.bookTimeList = true
this.timeList = firstRegistrationTime
},
chooseDay(date){
this.selectDay = date
this.bookTimeList = false
this.$emit('getAvailabletRegistrationTime', true,this.selectDay)
},
confirmSubmit(time_interval, type){
let param = new Object()
if(this.time2remain[time_interval] <= 0) return
param.date = this.selectDay
param.time_interval = time_interval
param.type = type
this.$emit('confirmSubmitEvent', param)
}
}
};
</script>
<style lang="scss" scoped>
.book-com{
width: 100%;
height: auto;
overflow: hidden;
.date-wraper{
width: 714rpx;
margin: 24rpx auto 0;
height: 218rpx;
background: #FFFFFF;
box-shadow: 0rpx 2rpx 24rpx 0rpx rgba(0,0,0,0.03);
overflow-x: auto;
display: flex;
box-sizing: border-box;
padding: 40rpx 24rpx;
.date{
width: 120rpx;
flex-shrink: 0;
margin-right: 18rpx;
.top{
width: 106rpx;
height: 98rpx;
padding-top: 8rpx !important;
box-sizing: border-box;
view{
color: #333333;
font-size: 28rpx;
line-height: 36rpx;
height: 36rpx;
text-align: center;
}
view:last-of-type{
margin-top: 10rpx;
}
}
.bot{
height: 32rpx;
font-size: 24rpx;
color: #999999;
line-height: 32rpx;
margin-top: 14rpx;
text-align: center;
&.active{
color: #50C382;
}
}
&.active{
.top{
background: #39D067;
border-radius: 8rpx;
view{
color: white !important;
}
}
}
}
}
.datelist{
width: 714rpx;
margin: 20rpx auto 0;
height: auto;
background: #F8F8F8;
border-radius: 8rpx;
box-sizing: border-box;
overflow: hidden;
.title{
height: 50rpx;
font-size: 32rpx;
color: #000000;
line-height: 50rpx;
letter-spacing: 2rpx;
padding-top: 24rpx;
margin-bottom: 24rpx;
background: #FFFFFF;
}
.item{
min-height: 318rpx;
padding: 0 24rpx 0rpx 24rpx;
box-shadow: 0rpx 24rpx 24rpx 0rpx rgba(0,0,0,0.03);
background: #FFFFFF;
position: relative;
margin-bottom: 20rpx;
&.itemallempty{
background: #FFFFFF !important;
}
&.itemempty{
height: 420rpx !important;
padding-bottom: 0rpx !important;
}
.empty{
position: absolute;
top: 0;
left: 147rpx;
width: 420rpx;
height: 420rpx;
img{
width: 420rpx;
height: 420rpx;
display: block;
height: 420rpx;
margin: 0 auto;
}
.info{
width: 100%;
position: absolute;
z-index: 2;
bottom: 42rpx;
text-align: center;
height: 40rpx;
font-size: 28rpx;
color: #AEB0B8;
line-height: 40rpx;
}
}
.inner-wrapper{
width: 100%;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.son{
display: flex;
align-items: center;
justify-content: center;
width: 320rpx;
height: 86rpx;
background: #F8FFF7;
border-radius: 8rpx;
border: 2rpx solid #39D067;
margin-bottom: 20rpx;
color: #50C382;
font-size: 30rpx;
&.disable{
background: #F1F1F1;
border: 2rpx solid #CACACA;
color: #999999;
}
}
}
}
img{
width: 420rpx;
height: 420rpx;
display: block;
height: 420rpx;
margin: 0 auto;
}
.info2{
position: absolute;
bottom: 50rpx;
width: 100%;
view{
width: 100%;
text-align: center;
}
view:first-of-type{
font-size: 28rpx;
height: 40rpx;
width: 100%;
color: #AEB0B8;
line-height: 40rpx;
}
view:last-of-type{
height: 33rpx;
font-size: 24rpx;
color: #BEC1CA;
line-height: 33rpx;
margin-top: 14rpx;
}
}
.empty-all{
height: 454rpx;
padding-bottom: 20rpx;
background: #FFFFFF;
position: relative;
}
}
}
</style>

6
main.js

@ -287,6 +287,12 @@ function req(url, data={}, method = 'POST', header={}) {
} }
return; return;
} }
if (rs.confirm && rdata.code!=CODE_LOGIN_EXIPRE && rdata.msg && rdata.msg.indexOf('用户信息不存在') > -1) {
removeLogin();
navToPath('/pages/index/index')
return;
}
} }
}); });

1118
pages/index/index.vue

File diff suppressed because it is too large

12
中医针灸改版2.0_2025_03_06/需求拆分.txt

@ -1,23 +1,23 @@
中医针灸患者端静态页面及样式改造 中医针灸患者端静态页面及样式改造
1.首页调整 1.首页调整
(1)首页医院地址导航在小程序中打开样式 (1)首页医院地址导航在小程序中打开样式
(2)增加就诊须知折叠面板 (2)增加预约须知折叠面板
(3)增加医保定点标签 (3)增加医保定点标签
(4)出诊医院列表样式调整 (4)出诊医院列表样式调整
2.底部公共菜单增加“现场报道”入口 2.底部公共菜单增加“现场报道”入口
3.首页医院列表部分样式调整 3.首页医院列表部分样式调整
4.选择就诊人列表页面调整 4.选择预约人列表页面调整
进行中 进行中
4.新增就诊人页面样式改造 4.新增预约人页面样式改造
5.扫码报道页面 5.扫码报道页面
6.确认报道页面 6.确认报道页面
7.确认报道空页面 7.确认报道空页面
8.候诊方式页面 8.候诊方式页面
9.个人中心页面样式改造 9.个人中心页面样式改造
11.就诊人列表页面 11.预约人列表页面
12.就诊记录页面 12.预约记录页面
13.就诊详情页面样式改造 13.预约详情页面样式改造
14.候诊状态,所在床位弹窗 14.候诊状态,所在床位弹窗
1.首页医院地址导航在小程序中打开调整 1.首页医院地址导航在小程序中打开调整

14
针灸挂号系统功能拆分.txt

@ -14,23 +14,23 @@
2.用户端首页样式调整 2.用户端首页样式调整
已完成 已完成
1.挂号就诊人页面 1.挂号预约人页面
2.新增就诊人信息页面 2.新增预约人信息页面
已完成 已完成
1.针灸挂号系统选择就诊人页面 1.针灸挂号系统选择预约人页面
2.修改就诊人信息页面 2.修改预约人信息页面
3.就诊人信息页面 3.预约人信息页面
待完成 待完成
一、患者端 静态页面 一、患者端 静态页面
2.就诊人预约挂号页面 2.预约人预约挂号页面
预计完成 2024-03-11 09:30~2024-03-11 19:00 预计完成 2024-03-11 09:30~2024-03-11 19:00
3.个人中心页面 3.个人中心页面
4.修改个人资料页面 4.修改个人资料页面
预计完成 2024-03-12 09:30~2024-03-12 19:00 预计完成 2024-03-12 09:30~2024-03-12 19:00
5.就诊人列表页面 5.预约人列表页面
预计完成 2024-03-13 09:30~2024-03-13 19:00 预计完成 2024-03-13 09:30~2024-03-13 19:00
6.预约列表页面 6.预约列表页面

Loading…
Cancel
Save