perry-mall/pagesA/ppointmentEv/ppointmentEv.vue

302 lines
9.8 KiB
Vue
Raw Normal View History

2022-02-12 11:33:47 +00:00
<template>
<view>
<!-- 状态栏 -->
<status-nav :titleVal="'自主预约'" :statusTitle="true"></status-nav>
<!-- 自定义二级分类 -->
<!-- 列表 -->
<view :style="{paddingTop: statusHNH+'px'}" class="pad-zy20">
<view class="bacf mar-s25 pad-zy20 radius20 fon28 col3 pad-x40">
<view class="disac pad-s32">
<view class="flexs mar-y20">预约类别</view>
<view @tap="openXial(0)" class="disjbac width100 radius10 pad-zy20 xiala posir">
<view>{{category}}</view>
<image :class="isZhuan?'zhuan':'nozhuan'" src="/static/public/sanj.png" mode="aspectFill"></image>
<view v-if="isZhuan" class="posia bacf radius10 xial-box">
<view class="pad-zy20 xial-item-box">
<view @tap="chooseXia(indexl)" :class="xialCurrent==indexl?'pcol pbord':''" v-for="(iteml,indexl) in xialone" :key="indexl">{{iteml.title}}</view>
</view>
</view>
</view>
</view>
<!-- <view class=" disac pad-s32">
<view class="flexs mar-y20">选择医生</view>
<view @tap="openXial(1)" class="disjbac width100 radius10 pad-zy20 xiala posir">
<view>{{categoryT}}</view>
<image :class="isZhuanT?'zhuan':'nozhuan'" src="/static/public/sanj.png" mode="aspectFill"></image>
<view v-if="isZhuanT" class="posia bacf radius10 xial-box">
<view class="pad-zy20 xial-item-box">
<view @tap="chooseXiaT(indext)" :class="xialCT==indext?'pcol':''" v-for="(itemt,indext) in xialTwo" :key="indext">{{itemt}}</view>
</view>
</view>
</view>
</view> -->
<!-- 预约日期 -->
<view class="mar-s20 mar-x30">预约日期</view>
<scroll-view scroll-x >
<view class="disac">
<view @tap="chooseTime(index)" class="disjcac fc flexs radius20 mar-y20 yutime borbot-df" :class="item.status==0?'bcdb col3':'colc'" :style="{background:timeCurrent==index?publicColor:'',border:timeCurrent==index?`2rpx solid ${publicColor}`:''}" v-for="(item,index) in dataList" :key="index">
<view :class="timeCurrent==index?'colf':'col3'" class="bold fon28">{{item.title}}</view>
<view :class="timeCurrent==index?'colf':''" class="fon26 mar-s10">{{item.time}}</view>
</view>
</view>
</scroll-view>
<!-- 时间段 -->
<view class="mar-s20 mar-x10"> </view>
<view class="disjb fw">
<view @tap="chooseTD(indextd)" :style="{background:itemtd.tdStatus?publicColor:'',border:itemtd.tdStatus?`2rpx solid ${publicColor}`:''}" :class="itemtd.num==0?'bcdb':''" class="tc radius10 mar-x30 col3 timed borbot-df" v-for="(itemtd,indextd) in dataTD" :key="indextd">
<view :class="itemtd.tdStatus?'colf':''">{{itemtd.ttime}}</view>
</view>
</view>
<!-- 联系人 -->
<view class="disac mar-s30">
<view class="mar-y20 flexs titlel"> </view>
<view class="width100 radius10 pad-zy20 borbot-cc height-68">
<input v-model="lname" maxlength="10" class="fon28 height-68" type="text" placeholder="请填写联系人姓名"/>
</view>
</view>
<!-- 联系方式 -->
<view class="disac mar-s20">
<view class="mar-y20 flexs titlel">联系方式</view>
<view class="width100 radius10 pad-zy20 borbot-cc height-68">
<input v-model="lphone" maxlength="11" class="fon28 height-68" type="text" placeholder="请输入联系电话"/>
</view>
</view>
<!-- 留言信息 -->
<view class="dis mar-s20">
<view class="mar-y20 flexs mar-s20 titlel">留言信息</view>
<view class="width100 radius10 pad20 borbot-cc" style="height: 300rpx;">
<textarea v-model="lmsg" class="fon28" maxlength="500" style="height: 300rpx;width: auto;" placeholder="请填写内容"/>
</view>
</view>
<!-- 立即提交底部按钮 -->
<view @tap="submit" class="fon30 radius20 tc colf bold0 btnl" :style="{background:publicColor}">{{btnCon}}</view>
</view>
<!-- 弹框 -->
<pu-po :isShowT="isShowT" :isCenter="true" :contentVal="'提交成功!等待审核'" :comfrimVal="'好的'" @comfirmev="comfirmev"></pu-po>
</view>
<!-- 底部客服 -->
<public-customer :nright="20"></public-customer>
</view>
</template>
<script>
export default {
data() {
return {
statusHNH:uni.getStorageSync('statusHNH'),
publicColor:uni.getStorageSync('publicColor'),//主题颜色
timeCurrent:0,
dataList:[],//日期
dataTD:[],//时间段
isShowT:false,
lname:'',//联系人姓名
lphone:'',//联系方式
lmsg:'',//留言信息
isZhuan:false,
xialCurrent:0,
xialone:[],
category:'',
categoryT:'',
isZhuanT:false,
xialCT:0,
xialTwo:['杨幂','周星驰'],
type_id:'',//预约类别ID
gday:'',//日期
dtId:[],//暂存禁选时间段ID
zanTimeD:[],//暂存时间段
zanDay:[],//暂存日期
dangId:'',//当前预约时间段ID
btnCon:'立即提交'
}
},
onShow() {
this.$toolAll.tools.isLogin()
},
onLoad() {
this.category = this.xialone[0]
this.categoryT = this.xialTwo[0]
this.checkZParmas();
this.lphone = uni.getStorageSync('phone');
// this.$toolAll.tools.weekDate()
},
methods: {
gtimeD(id,gday){
this.$requst.post('user/appointment-period-full',{type_id:id,day:gday}).then(res=>{
// console.log('查询预约分类某天已约满的时间段:',res);
if(res.code==0){
this.dtId = res.data
this.dataTD = []
if(this.dtId.length!=0){
this.zanTimeD.forEach((item,index)=>{
let newNum = 1
let newTdStatus = false
this.dtId.forEach(item1=>{
if(item.id==item1.id){
newNum = 0
newTdStatus = false
}
})
let tdObj = {
id:item.id,
ttime:item.ttime,
num:newNum,
status:item.status,
tdStatus:newTdStatus
}
this.dataTD.push(tdObj)
})
} else {
this.zanTimeD.forEach(item=>{
let tdObj = {
id:item.id,
ttime:item.ttime,
num:1,
status:item.status,
tdStatus:false
}
this.dataTD.push(tdObj)
})
}
}
},error=>{})
},
checkZParmas(){//查询参数
this.$requst.post('user/appointment-parameters',{page:1,size:20}).then(res=>{
// console.log('查询自主预约列表:',res);
if(res.code==0){
this.gtimeD(res.data.types[0].id,res.data.days[0].day)
// 预约类别
if(res.data.types.length!=0){
res.data.types.forEach(item=>{
let ycateObj = {
id:item.id,
title:item.title,
max:item.max
}
this.xialone.push(ycateObj)
})
this.type_id = this.xialone[0].id
this.category = this.xialone[0].title
}
//预约日期
if(res.data.days.length!=0){
this.gday = res.data.days[0].day
this.zanDay = res.data.days
res.data.days.forEach(item=>{
let arr = item.day.split('-')
let newDay = arr[1]+'月'+arr[2]+'日'
let dayObj = {
title:item.week,
time:newDay,
status:item.status
}
this.dataList.push(dayObj)
})
}
// 时间段
if(res.data.times.length!=0){
res.data.times.forEach((item,index)=>{
let tdObj = {
id:item.id,
ttime:item.name,
status:item.status,
}
// this.dataTD.push(tdObj)
this.zanTimeD.push(tdObj)
})
}
}
},error=>{})
},
submit(){
if(!this.lname){
this.$toolAll.tools.showToast('请输入联系人姓名')
} else if(!this.lphone){
this.$toolAll.tools.showToast('请输入联系电话')
} else if(this.$toolAll.tools.isPhone(this.lphone)){
this.$toolAll.tools.showToast('请输入正确的联系电话')
} else if(!this.dangId){
this.$toolAll.tools.showToast('请选择时间段')
} else {
let parmas = {
type_id:this.type_id,//预约类型ID
day:this.gday,//预约日期2021-08-11
period_id:this.dangId,//预约时间段ID
user_name:this.lname,//联系人姓名
user_phone:this.lphone,//联系人电话
remarks:this.lmsg//预约留言信息500字以内
}
if(this.btnCon=='立即提交'){
this.btnCon = "正在提交..."
this.$requst.post('user/appointment-apply',parmas).then(res=>{
// console.log('提交预约申请:',res);
if(res.code==0){
this.isShowT = true
wx.requestSubscribeMessage({
tmplIds: ['uvGd7RqaegheGU-uVxR-uM3y2MadZeMOHdQaNiiWm8U'],
success: (res)=> {
console.log('res',res);
this.isShowT = true
}
})
} else {
this.btnCon = "立即提交"
this.$toolAll.tools.showToast(res.msg)
}
},error=>{})
}
}
},
comfirmev(){
this.isShowT = false
uni.navigateBack({delta:1})
},
goYu(){//去预约
uni.navigateTo({
url:''
})
},
chooseTime(index){
if(this.dataList[index].status!=0){
this.timeCurrent = index
this.gday = this.zanDay[index].day
this.gtimeD(this.type_id,this.gday)
}
},
chooseTD(index){//时间段选择事件
if(this.dataTD[index].num!=0){
this.dangId = this.zanTimeD[index].id
this.dataTD.forEach(item=>{//发现为true的改为false即控制单选注释就表示多选
if(item.tdStatus==true) item.tdStatus = false
})
this.dataTD[index].tdStatus = !this.dataTD[index].tdStatus
}
},
openXial(index){
if(index==0) {
this.isZhuanT = false
this.isZhuan = !this.isZhuan
}
if(index==1) {
this.isZhuan = false
this.isZhuanT = !this.isZhuanT
}
},
chooseXia(index){//预约类别选择事件
this.xialCurrent = index
this.category = this.xialone[index].title
this.type_id = this.xialone[index].id
this.gtimeD(this.type_id,this.gday)
},
chooseXiaT(index){
this.xialCT = index
this.categoryT = this.xialTwo[index]
},
}
}
</script>
<style>
</style>