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:'',
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) {
console.log(option, 'option====');
var did = false
@ -82,7 +118,6 @@
}
},
onShow: function() {},
onHide: function() {}
}
</script>
@ -242,6 +277,7 @@
}
.btn{
text-align: center;
font-size: 32rpx;
}
.primary.btn{
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;
}
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)首页医院地址导航在小程序中打开样式
(2)增加就诊须知折叠面板
(2)增加预约须知折叠面板
(3)增加医保定点标签
(4)出诊医院列表样式调整
2.底部公共菜单增加“现场报道”入口
3.首页医院列表部分样式调整
4.选择就诊人列表页面调整
4.选择预约人列表页面调整
进行中
4.新增就诊人页面样式改造
4.新增预约人页面样式改造
5.扫码报道页面
6.确认报道页面
7.确认报道空页面
8.候诊方式页面
9.个人中心页面样式改造
11.就诊人列表页面
12.就诊记录页面
13.就诊详情页面样式改造
11.预约人列表页面
12.预约记录页面
13.预约详情页面样式改造
14.候诊状态,所在床位弹窗
1.首页医院地址导航在小程序中打开调整

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

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

Loading…
Cancel
Save