1126 lines
31 KiB
Vue
1126 lines
31 KiB
Vue
<template>
|
||
<view class="hzIndex">
|
||
<hzHeader title="洗车预约"></hzHeader>
|
||
<view class="container hzContent">
|
||
<view class="main" :style="{paddingBottom:currentTabIndex == 0?'300upx':'180upx'}">
|
||
<!-- <view class="tab-box">
|
||
<view class="tab-item" :class="currentTabIndex == 0 ? 'active_tab' : ''"
|
||
@click="currentTabIndex = 0">洗车预约</view>
|
||
<view class="tab-item" :class="currentTabIndex == 1 ? 'active_tab' : ''"
|
||
@click="currentTabIndex = 1">预约记录</view>
|
||
</view> -->
|
||
<view class="tab-box">
|
||
<view class="tab-item" :class="currentTabIndex == 0 ? 'active_tab' : ''"
|
||
@click="currentTabIndex = 0">
|
||
洗车预约
|
||
<view class="tabBottom" v-if="currentTabIndex == 0"></view>
|
||
</view>
|
||
<view class="tab-item" :class="currentTabIndex == 1 ? 'active_tab' : ''"
|
||
@click="currentTabIndex = 1">
|
||
预约记录
|
||
<view class="tabBottom" v-if="currentTabIndex == 1"></view>
|
||
</view>
|
||
</view>
|
||
<!-- 预约表单 -->
|
||
<view class="reservation-box" v-if="currentTabIndex == 0 ">
|
||
<scroll-view scroll-x="true" class="scroll-view">
|
||
<view class="time-item-box" :class="chooseDateIndex == index ? 'time-active' : ''"
|
||
v-for="(item, index) in date" :key="index" @click="switchTab(index)">
|
||
<text class="time">{{ item.tiems.substr(5, 10) }}</text>
|
||
<text class="week">{{ item.week }}</text>
|
||
</view>
|
||
</scroll-view>
|
||
<view
|
||
v-if="this.date[this.chooseDateIndex].isholiday==2||(this.date[this.chooseDateIndex].isholiday!=1&&this.date[this.chooseDateIndex].week!='星期六'&&this.date[this.chooseDateIndex].week!='星期日')">
|
||
<!-- 选择日期 -->
|
||
<view class="selectTime">
|
||
<view class="dateTit">
|
||
<image src="@/static/haircut/date.png" mode=""></image>
|
||
<text style="font-size:30upx;color:#333;font-weight: 600;">选择时段</text>
|
||
</view>
|
||
<view class="time-box">
|
||
<view class="time-item"
|
||
:class="[chooseTimeIndex == index ? 'active' : '',item.count > 0 &&item.compareTime? '':'bg-gray']"
|
||
@click="item.count >0 &&item.compareTime ?chooseTime(index, item.count):''"
|
||
v-for="(item, index) in times" :key="index">
|
||
<view class="time-text">{{ item.time }}</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="form-box selectTime">
|
||
<view class="dateTit">
|
||
<image src="@/static/haircut/loc2.png" mode=""></image>
|
||
<text style="font-size:30upx;color:#333;font-weight: 600;">地点</text>
|
||
</view>
|
||
<view class="form-item">
|
||
<view class="ipt-box select">
|
||
<picker class="picker" v-if="places.length > 0" :range="places"
|
||
@change="changePlace" range-key="name">
|
||
<view>{{ places[placeIndex]}}</view>
|
||
</picker>
|
||
</view>
|
||
</view>
|
||
<view class="form-item" v-if="places[placeIndex]=='科技楼'">
|
||
<text class="label">需要迁车</text>
|
||
<view class="ipt-box select">
|
||
<!-- <radio-group @change="radioChange">
|
||
<label v-for="(item, index) in moveCarItems" :key="item.value">
|
||
<view style="display: inline-block;margin-right: 20upx;">
|
||
<radio :value="item.value" :checked="item.value ==moveCarItemCheck"
|
||
color="#00c277" />
|
||
{{item.name}}
|
||
</view>
|
||
</label>
|
||
</radio-group> -->
|
||
<view class="selectQC" @click="radioChange(item,index)"
|
||
v-for="(item, index) in moveCarItems" :key="index">
|
||
<image class="radio"
|
||
:src="moveCarItemIndex == index?'../../static/haircut/radio2.png':'../../static/haircut/radio.png'"
|
||
mode=""></image>
|
||
<view class="text_2">
|
||
{{item.name}}
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<!-- <view class="form-item">
|
||
<text class="label">车牌号</text>
|
||
<view class="ipt-box select">
|
||
<image class="arrow" src="/static/icons/right-arrow.png" mode=""></image>
|
||
<picker class="picker" v-if="licensePlateList.length > 0" :range="licensePlateList" @change="changeLicensePlateList" range-key="name">
|
||
<view>{{ licensePlateList[licensePlateListIndex]}}</view>
|
||
</picker>
|
||
</view>
|
||
</view> -->
|
||
<!-- <view class="form-item">
|
||
<text class="label">联系人</text>
|
||
<view class="ipt-box"><input type="text" placeholder="请填写预约人姓名" v-model="applyPersonName" /></view>
|
||
</view>
|
||
<view class="form-item">
|
||
<text class="label">联系电话</text>
|
||
<view class="ipt-box"><input type="number" placeholder="请填写预约人手机号" v-model="applyPersonMobile" /></view>
|
||
</view> -->
|
||
|
||
</view>
|
||
<view class="form-box selectTime">
|
||
<view class="dateTit">
|
||
<image src="@/static/haircut/cph.png" mode=""></image>
|
||
<text style="font-size:30upx;color:#333;font-weight: 600;">车牌号</text>
|
||
</view>
|
||
<view class="form-item">
|
||
<view class="ipt-box">
|
||
<input-autocomplete class="AUTO" v-model="carId" placeholder="请选择车牌号"
|
||
placeholderStyle="font-size:30upx" highlightColor="#FF0000"
|
||
:loadData="loadAutocompleteData"
|
||
v-on:selectItem="selectItemD"></input-autocomplete>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<!-- <view v-if="places[placeIndex]=='科技楼'&&moveCarItemCheck==1"
|
||
style="font-size: 28upx;color: red;background: #f8f8f8;padding:20upx 30upx">
|
||
提示:请把车钥匙送到科技楼801室
|
||
</view> -->
|
||
<!-- 要求去除提示 -->
|
||
<!-- <view class="tips" v-if="places[placeIndex]=='科技楼'&&moveCarItemCheck==1">
|
||
<view class="tipsTit">
|
||
<image class="clock" src="@/static/haircut/tz.png" mode=""></image>
|
||
<text>提示:请把车钥匙送到科技楼801室</text>
|
||
</view>
|
||
</view> -->
|
||
<!-- <view class="evaluate">
|
||
<view class="title">用户评价</view>
|
||
<view class="evaluate_item" v-for="(item,index) in commentList" :key="index">
|
||
<view class="user">
|
||
<text class="username input_left">{{item.userName}}</text>
|
||
<text>
|
||
<image v-for="(star,index) in item.level" :key="index" src="../../static/imgs/showstar.png" alt="">
|
||
</text>
|
||
</view>
|
||
<view class="text">{{item.content}}</view>
|
||
</view>
|
||
</view> -->
|
||
</view>
|
||
<view
|
||
v-if="this.date[this.chooseDateIndex].isholiday==0&&(this.date[this.chooseDateIndex].week=='星期六'||this.date[this.chooseDateIndex].week=='星期日')"
|
||
style="height: 100%;line-height: 400upx;text-align: center;color: #666;font-size: 32upx;">
|
||
今日周末不可预约
|
||
</view>
|
||
<view v-if="this.date[this.chooseDateIndex].isholiday==1"
|
||
style="height: 100%;line-height: 400upx;text-align: center;color: #666;font-size: 32upx;">
|
||
今日节假日不可预约
|
||
</view>
|
||
</view>
|
||
<view v-if="currentTabIndex==0&&licensePlateList.length<=0">
|
||
<view style="height: 100%;color: #666;font-size: 32upx;padding:80upx 20upx;">
|
||
您还没有登记过车牌号,或车牌号还在审核中,请确定已登记过车牌号并审核通过后再预约。
|
||
</view>
|
||
</view>
|
||
<!-- 预约记录列表 -->
|
||
<view v-if="currentTabIndex==1">
|
||
<view class="list-box" v-if="reservationList.length > 0">
|
||
<view class="detail" v-for="(item, index) in reservationList" :key="index">
|
||
<view class="detail_header">
|
||
<image class="blueSign" src="@/static/haircut/caricon.png" mode=""></image>
|
||
<text class="font-tilte">洗车预约</text>
|
||
<!-- <text class="slect_icon"></text> -->
|
||
<text class="font-result" v-if="item.int_status==0">预约成功</text>
|
||
<text class="font-result" v-if="item.int_status==1"
|
||
style="background: #FFEFE3;color: #FB8107;">已取消</text>
|
||
<text class="font-result" v-if="item.int_status==2"
|
||
style="background: #F6DFDF;color: #BD1515;">车主未至</text>
|
||
</view>
|
||
<view class="detail_msg">
|
||
<view class="info-item">
|
||
<text>预约时间:</text>
|
||
<text class="infoSpan">{{ item.timeQ }}</text>
|
||
</view>
|
||
<view class="info-item">
|
||
<text>预约地点:</text>
|
||
<text class="infoSpan">{{ item.apply_place }}</text>
|
||
</view>
|
||
|
||
<view class="info-item">
|
||
<text>申请时间:</text>
|
||
<text class="infoSpan">{{ formatDate(item.apply_time, 'dateTime') }}</text>
|
||
</view>
|
||
<!-- <view class="info-item">
|
||
<text>申请人:</text>
|
||
<text class="infoSpan">{{ item.userName }}</text>
|
||
</view>
|
||
<view class="info-item">
|
||
<text>联系人:</text>
|
||
<text class="infoSpan">{{ item.concatUserName }}</text>
|
||
</view>
|
||
<view class="info-item">
|
||
<text>申请电话:</text>
|
||
<text class="infoSpan">{{ item.concatPhone }}</text>
|
||
</view> -->
|
||
<view class="comment-btn"
|
||
v-if="item.conmentStatus == 0 &&item.compareTime&&item.int_status==0"
|
||
@click="goEvaluatePage(item.detailId)">评价</view>
|
||
<view class="comment-btn bg-ccc" v-if="item.conmentStatus == 1&&item.int_status==0">已评价
|
||
</view>
|
||
<view class="comment-btn" v-if="item.compareTimeCancle&&item.int_status==0"
|
||
@click="cancleWashCar(item)">取消</view>
|
||
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<content-none v-else :padTop="20"></content-none>
|
||
</view>
|
||
<view
|
||
v-if="currentTabIndex == 0&&(this.date[this.chooseDateIndex].isholiday==2||(this.date[this.chooseDateIndex].isholiday!=1&&this.date[this.chooseDateIndex].week!='星期六'&&this.date[this.chooseDateIndex].week!='星期日'))">
|
||
<view class="occupied"></view>
|
||
<view class="footer-btn" style="z-index: 999;">
|
||
<view class="btn" @click="submit">提交预约</view>
|
||
</view>
|
||
</view>
|
||
<load-more v-if="currentTabIndex == 1" :loadingType="loadingType"
|
||
:contentText="contentText"></load-more>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import {
|
||
getDate,
|
||
alertTip,
|
||
callbackRequest,
|
||
getStorage,
|
||
regPhone,
|
||
formatDate
|
||
} from '@/common/util.js';
|
||
import {
|
||
getAllDept,
|
||
initWashCar,
|
||
applyWashCar,
|
||
getMyWashCarList,
|
||
getPlaceData,
|
||
cancleWashCar,
|
||
getCarsById
|
||
} from '@/common/api.js';
|
||
import loadMore from '@/components/loadMore.vue';
|
||
import contentNone from '@/components/contentNone.vue';
|
||
import inputAutocomplete from '@/components/input-autocomplete/input-autocomplete.vue';
|
||
export default {
|
||
components: {
|
||
loadMore,
|
||
contentNone,
|
||
inputAutocomplete
|
||
},
|
||
data() {
|
||
return {
|
||
page: 1,
|
||
pageSize: 10,
|
||
loadingType: 0, //0-loading前;1-loading中;2-没有更多了
|
||
contentText: {
|
||
contentdown: '上拉加载更多',
|
||
contentrefresh: '正在加载...',
|
||
contentnomore: '没有更多数据了'
|
||
},
|
||
userId: getStorage('userInfo').id,
|
||
currentTabIndex: 0,
|
||
// date: getDate().then(v => {
|
||
// console.log(11111111)
|
||
// console.log(v)
|
||
// this.date = v;
|
||
// }), //获取近30天日期
|
||
date: getDate(),
|
||
chooseDateIndex: 0, //选中的日期
|
||
times: [
|
||
// { id: '1', time: '08:30-09:15', count: 1, status: 0 },
|
||
// { id: '2', time: '09:15-10:00', count: 1, status: 1 },
|
||
// { id: '3', time: '10:00-10:45', count: 1, status: 0 },
|
||
// { id: '4', time: '10:45-11:30', count: 1, status: 1 },
|
||
// { id: '5', time: '11:30-12:15', count: 1, status: 0 },
|
||
// { id: '6', time: '12:15-13:00', count: 1, status: 0 },
|
||
// { id: '7', time: '13:00-13:45', count: 1, status: 1 },
|
||
// { id: '8', time: '13:45-14:30', count: 1, status: 0 },
|
||
// { id: '9', time: '14:30-15:15', count: 1, status: 0 },
|
||
// { id: '10', time: '15:15-16:00', count: 1, status: 1 },
|
||
// { id: '11', time: '16:00-16:45', count: 1, status: 0 },
|
||
// { id: '12', time: '16:45-17:30', count: 1, status: 0 }
|
||
],
|
||
chooseTimeIndex: null,
|
||
deptList: [], //部门列表
|
||
places: [],
|
||
placeIndex: 0,
|
||
departmentIndex: 0, //选择的部门下标
|
||
applyPersonName: getStorage('userInfo').username, //申请人姓名
|
||
applyPersonMobile: getStorage('userInfo').telnumber, //申请人手机
|
||
carId: '',
|
||
commentList: [],
|
||
reservationList: [],
|
||
formatDate: formatDate,
|
||
licensePlateList: [],
|
||
licensePlateListIndex: 0,
|
||
moveCarItems: [{
|
||
value: '1',
|
||
name: '是'
|
||
},
|
||
{
|
||
value: '0',
|
||
name: '否'
|
||
}
|
||
],
|
||
moveCarItemIndex: 0,
|
||
moveCarItemCheck: 1
|
||
};
|
||
},
|
||
onLoad(option) {
|
||
this.currentTabIndex = option.currentTabIndex || 0;
|
||
},
|
||
onShow() {
|
||
this.getCalendar();
|
||
this.getDepartment();
|
||
if (this.currentTabIndex == 0) {
|
||
this.getCarsById(); //洗车 车牌号
|
||
this.getPlaceData(); //洗车地点
|
||
|
||
} else {
|
||
this.page = 1;
|
||
this.loadingType = 0;
|
||
this.getReservationRecord();
|
||
}
|
||
},
|
||
watch: {
|
||
currentTabIndex: function(newVal, oldVal) {
|
||
if (newVal == 1) {
|
||
this.page = 1;
|
||
this.loadingType = 0;
|
||
this.getReservationRecord();
|
||
} else {
|
||
this.initData();
|
||
}
|
||
}
|
||
},
|
||
methods: {
|
||
getCalendar(params) {
|
||
let params2 = {
|
||
method: "greenCalendar/getCalendarList",
|
||
data: {
|
||
date_name: this.date[0].tiems,
|
||
}
|
||
};
|
||
callbackRequest(params2).then(res => {
|
||
if (res.data.returnCode == 1) {
|
||
var list = res.data.returnData;
|
||
|
||
for (var j = 0; j < this.date.length; j++) {
|
||
var fl = true;
|
||
for (var i = 0; i < list.length; i++) {
|
||
if (list[i].date_name == this.date[j].tiems) {
|
||
this.$set(this.date[j], 'isholiday', list[i].isholiday);
|
||
fl = false;
|
||
}
|
||
}
|
||
if (fl) {
|
||
this.$set(this.date[j], 'isholiday', '0');
|
||
}
|
||
}
|
||
}
|
||
});
|
||
},
|
||
compareTime(time1) {
|
||
// var endTime = time1.split("-")[0];
|
||
// var endDate = this.date[this.chooseDateIndex].tiems+" "+endTime;
|
||
// endDate = endDate.replace(/-/g,'/');
|
||
// var endDateTime = new Date(endDate).getTime();
|
||
// var nowDateTime = new Date().getTime();
|
||
// if(endDateTime>nowDateTime){
|
||
// return true;
|
||
// }else{
|
||
// return false;
|
||
// }
|
||
|
||
|
||
// var todayTime = this.date[0].tiems.replace(/-/g,'/')+" 12:15";
|
||
// var nowDateTime = new Date().getTime();
|
||
// var chooseTime = this.date[this.chooseDateIndex].tiems.replace(/-/g,'/')+" "+endTime;
|
||
|
||
var chooseDay = this.date[this.chooseDateIndex].tiems.replace(/-/g, '/');
|
||
var today = this.date[0].tiems.replace(/-/g, '/');
|
||
var timeNode = this.date[0].tiems.replace(/-/g, '/') + " 12:15:00";
|
||
var chooseNodeStartTime = time1.split("-")[0];
|
||
var chooseTime = this.date[this.chooseDateIndex].tiems.replace(/-/g, '/') + " " + chooseNodeStartTime +
|
||
":00";
|
||
if (new Date(chooseDay).getTime() > new Date(today).getTime()) {
|
||
return true;
|
||
} else {
|
||
// if (new Date().getTime() > new Date(timeNode).getTime()) {
|
||
// return false;
|
||
// } else {
|
||
// var timeNode2 = this.date[0].tiems.replace(/-/g, '/') + " 13:00:00";
|
||
// if (new Date(chooseTime).getTime() >= new Date(timeNode2).getTime()) {
|
||
// return true;
|
||
// } else {
|
||
// return false;
|
||
// }
|
||
// }
|
||
// var timeNode2 = this.date[0].tiems.replace(/-/g, '/') + " 13:00:00";
|
||
if (new Date(chooseTime).getTime() >= new Date().getTime()) {
|
||
return true;
|
||
} else {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
},
|
||
compareTimeForCancle(date, time) {
|
||
var endTime = time.split("-")[0];
|
||
var endDate = date + " " + endTime;
|
||
endDate = endDate.replace(/-/g, '/');
|
||
var endDateTime = new Date(endDate).getTime();
|
||
var nowDateTime = new Date().getTime();
|
||
if (endDateTime > nowDateTime) {
|
||
return true;
|
||
} else {
|
||
return false;
|
||
}
|
||
},
|
||
compareTimeForRecord(date, time) {
|
||
var endTime = time.split("-")[0];
|
||
var endDate = date + " " + endTime;
|
||
endDate = endDate.replace(/-/g, '/');
|
||
var endDateTime = new Date(endDate).getTime();
|
||
var nowDateTime = new Date().getTime();
|
||
if (endDateTime < nowDateTime) {
|
||
return true;
|
||
} else {
|
||
return false;
|
||
}
|
||
},
|
||
// 根据输入内容动态加载数据
|
||
loadAutocompleteData(value) {
|
||
let that = this.$root;
|
||
return Promise.resolve(this.licensePlateList);
|
||
},
|
||
//响应选择事件,接收选中的数据
|
||
selectItemD(data) {
|
||
console.log('收到数据了:', data);
|
||
},
|
||
getCarsById() {
|
||
let params = {
|
||
method: getCarsById,
|
||
data: {
|
||
userId: this.userId
|
||
}
|
||
};
|
||
callbackRequest(params).then(res => {
|
||
console.log("车牌号", res)
|
||
if (res.data.returnCode == 1) {
|
||
var licensePlateList = res.data.returnData;
|
||
this.licensePlateList = [];
|
||
for (var i = 0; i < licensePlateList.length; i++) {
|
||
this.licensePlateList.push(licensePlateList[i].CAR_NUM)
|
||
}
|
||
}
|
||
});
|
||
},
|
||
getPlaceData() {
|
||
let params = {
|
||
method: getPlaceData,
|
||
data: {
|
||
userId: this.userId
|
||
}
|
||
};
|
||
callbackRequest(params).then(res => {
|
||
if (res.data.returnCode == 1) {
|
||
var places = res.data.returnData.placeList;
|
||
this.places = [];
|
||
for (var i = 0; i < places.length; i++) {
|
||
this.places.push(places[i].data_value)
|
||
}
|
||
// var licensePlateList = res.data.returnData.licensePlateList;
|
||
// this.licensePlateList = [];
|
||
// for (var i = 0; i < licensePlateList.length; i++) {
|
||
// this.licensePlateList.push(licensePlateList[i].licenseplate)
|
||
// }
|
||
this.initData();
|
||
}
|
||
});
|
||
},
|
||
cancleWashCar(item) {
|
||
let params = {
|
||
method: cancleWashCar,
|
||
data: {
|
||
id: item.detailId,
|
||
intStatus: 1
|
||
}
|
||
};
|
||
callbackRequest(params).then(res => {
|
||
if (res.data.returnCode == 1) {
|
||
alertTip("已成功取消预约!");
|
||
this.page = 1;
|
||
this.loadingType = 0;
|
||
this.getReservationRecord();
|
||
} else {
|
||
alertTip(res.data.returnMsg);
|
||
}
|
||
});
|
||
},
|
||
initData() {
|
||
let params = {
|
||
method: initWashCar,
|
||
data: {
|
||
applyDate: this.date[this.chooseDateIndex].tiems,
|
||
applyPlace: this.places[this.placeIndex] || '',
|
||
userId: this.userId
|
||
}
|
||
};
|
||
callbackRequest(params).then(res => {
|
||
if (res.data.returnCode == 1) {
|
||
this.times = res.data.returnData.timeList;
|
||
for (var i = 0; i < this.times.length; i++) {
|
||
|
||
var compareTime = this.compareTime(this.times[i].time);
|
||
this.times[i].compareTime = compareTime;
|
||
}
|
||
console.log('时间段', this.times)
|
||
// var places = res.data.returnData.placeList;
|
||
// this.places=[];
|
||
// for(var i=0;i<places.length;i++){
|
||
// this.places.push(places[i].data_value)
|
||
// }
|
||
// var licensePlateList = res.data.returnData.licensePlateList;
|
||
// this.licensePlateList=[];
|
||
// for(var i=0;i<licensePlateList.length;i++){
|
||
// this.licensePlateList.push(licensePlateList[i].licenseplate)
|
||
// }
|
||
}
|
||
});
|
||
},
|
||
//获取部门列表
|
||
getDepartment() {
|
||
let data = {
|
||
method: getAllDept,
|
||
data: {}
|
||
};
|
||
callbackRequest(data).then(res => {
|
||
if (res.data.returnCode == 1) {
|
||
this.deptList = res.data.returnData;
|
||
}
|
||
});
|
||
},
|
||
//获取预约记录列表
|
||
getReservationRecord() {
|
||
let params = {
|
||
method: getMyWashCarList,
|
||
data: {
|
||
pageSize: this.pageSize,
|
||
pageNum: this.page,
|
||
userId: this.userId
|
||
}
|
||
};
|
||
callbackRequest(params).then(res => {
|
||
if (res.data.returnCode == 1) {
|
||
if (this.page == 1) {
|
||
this.reservationList = res.data.returnData;
|
||
} else {
|
||
if (res.data.returnData.length > 0) {
|
||
this.reservationList = [...this.reservationList, ...res.data.returnData];
|
||
this.loadingType = 0;
|
||
} else {
|
||
this.loadingType = 2;
|
||
}
|
||
}
|
||
for (var i = 0; i < this.reservationList.length; i++) {
|
||
var compareTime = this.compareTimeForRecord(this.reservationList[i].apply_date, this
|
||
.reservationList[i].apply_time_interval);
|
||
var compareTimeCancle = this.compareTimeForCancle(this.reservationList[i].apply_date,
|
||
this.reservationList[i].apply_time_interval);
|
||
this.reservationList[i].compareTime = compareTime;
|
||
this.reservationList[i].compareTimeCancle = compareTimeCancle;
|
||
}
|
||
}
|
||
});
|
||
},
|
||
//选择日期
|
||
switchTab(index) {
|
||
this.chooseTimeIndex = null;
|
||
this.chooseDateIndex = index;
|
||
this.initData();
|
||
},
|
||
//选择时间段
|
||
chooseTime(index, num) {
|
||
if (num == 0) {
|
||
alertTip('该时间段已约满,请选择其它时间段');
|
||
this.chooseTimeIndex = null;
|
||
return false;
|
||
} else {
|
||
this.chooseTimeIndex = index;
|
||
}
|
||
},
|
||
changePlace(e) {
|
||
this.placeIndex = e.detail.value;
|
||
this.initData();
|
||
},
|
||
radioChange(item, index) {
|
||
this.moveCarItemIndex = index
|
||
this.moveCarItemCheck = item.value;
|
||
},
|
||
changeLicensePlateList(e) {
|
||
this.licensePlateListIndex = e.detail.value;
|
||
},
|
||
//提交预约
|
||
submit() {
|
||
if (this.chooseTimeIndex == null) {
|
||
alertTip('请选择预约时间段');
|
||
return false;
|
||
}
|
||
if (!this.applyPersonName) {
|
||
alertTip('请输入预约人姓名');
|
||
return false;
|
||
}
|
||
if (!regPhone.test(this.applyPersonMobile)) {
|
||
alertTip('请输入正确的手机号');
|
||
return false;
|
||
}
|
||
// if (this.placeIndex) {
|
||
// alertTip('请选择洗车地点');
|
||
// return false;
|
||
// }
|
||
var licensePlateReg = new RegExp(
|
||
/^(([\u4eac\u6d25\u6caa\u6e1d\u5180\u8c6b\u4e91\u8fbd\u9ed1\u6e58\u7696\u9c81\u65b0\u82cf\u6d59\u8d63\u9102\u6842\u7518\u664b\u8499\u9655\u5409\u95fd\u8d35\u7ca4\u9752\u85cf\u5ddd\u5b81\u743c\u4f7f\u9886][A-Z](([0-9]{6}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([\u4eac\u6d25\u6caa\u6e1d\u5180\u8c6b\u4e91\u8fbd\u9ed1\u6e58\u7696\u9c81\u65b0\u82cf\u6d59\u8d63\u9102\u6842\u7518\u664b\u8499\u9655\u5409\u95fd\u8d35\u7ca4\u9752\u85cf\u5ddd\u5b81\u743c\u4f7f\u9886][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9\u6302\u5b66\u8b66\u6e2f\u6fb3\u4f7f\u9886]))$/
|
||
);;
|
||
// // if(data.isCar==1 ){
|
||
if (this.carId == "") {
|
||
alertTip("请输入车牌号");
|
||
return false;
|
||
}
|
||
// else {
|
||
// if (licensePlateReg.test(this.carId) === false) {
|
||
// alertTip("车牌号格式不正确");
|
||
// return;
|
||
// }
|
||
// if (this.licensePlateList.includes(this.carId)) {
|
||
// if (licensePlateReg.test(this.carId) === false) {
|
||
// alertTip("车牌号格式不正确");
|
||
// return;
|
||
// }
|
||
// } else {
|
||
// alertTip("车牌号未配置");
|
||
// return;
|
||
// }
|
||
|
||
// }
|
||
|
||
let params = {
|
||
method: applyWashCar,
|
||
data: {
|
||
userId: this.userId,
|
||
applyDate: this.date[this.chooseDateIndex].tiems,
|
||
applyTime: this.times[this.chooseTimeIndex].time,
|
||
applyTimeId: this.times[this.chooseTimeIndex].timeId,
|
||
deptId: this.deptList[this.departmentIndex].id,
|
||
deptName: this.deptList[this.departmentIndex].name,
|
||
concatUserName: this.applyPersonName,
|
||
concatPhone: this.applyPersonMobile,
|
||
applyPlace: this.places[this.placeIndex],
|
||
//licensePlate:this.licensePlateList[this.licensePlateListIndex]
|
||
licensePlate: this.carId,
|
||
moveCar: this.moveCarItemCheck
|
||
}
|
||
};
|
||
callbackRequest(params).then(res => {
|
||
if (res.data.returnCode == 1) {
|
||
alertTip('预约成功');
|
||
this.page = 1;
|
||
this.loadingType = 0;
|
||
setTimeout(_ => {
|
||
// this.applyPersonName = '';
|
||
// this.applyPersonMobile = '';
|
||
this.chooseTimeIndex = null;
|
||
this.currentTabIndex = 1;
|
||
}, 2000);
|
||
} else {
|
||
alertTip(res.data.returnMsg);
|
||
}
|
||
});
|
||
},
|
||
//去评价页面
|
||
goEvaluatePage(id) {
|
||
uni.navigateTo({
|
||
url: `/pages/order-form/evaluate?type=5&typeId=${id}`
|
||
});
|
||
}
|
||
},
|
||
onReachBottom() {
|
||
if (this.loadingType !== 0 || this.currentTabIndex != 1) {
|
||
return;
|
||
}
|
||
this.loadingType = 1;
|
||
this.page = this.page + 1;
|
||
this.getReservationRecord();
|
||
}
|
||
};
|
||
</script>
|
||
|
||
<style lang="scss">
|
||
@import '@/static/css/common.scss';
|
||
|
||
.hzIndex {
|
||
background-color: #f0f5fa;
|
||
}
|
||
|
||
.container {
|
||
padding: 22upx;
|
||
margin-top: 150upx;
|
||
// background: #f8f8f8;
|
||
|
||
.banner-box {
|
||
width: 100%;
|
||
height: 240upx;
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
|
||
image {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
}
|
||
|
||
.main {
|
||
.tab-box {
|
||
width: 80%;
|
||
display: flex;
|
||
font-size: 36upx;
|
||
color: #555555;
|
||
|
||
.active_tab {
|
||
font-weight: 800;
|
||
|
||
}
|
||
|
||
.tab-item {
|
||
width: 40%;
|
||
|
||
.tabBottom {
|
||
width: 28%;
|
||
height: 6upx;
|
||
border-radius: 5px;
|
||
background-image: linear-gradient(to right, #64E182, #1CA7B2);
|
||
}
|
||
}
|
||
}
|
||
|
||
.reservation-box {
|
||
|
||
// background: #fff;
|
||
.selectTime {
|
||
width: 100%;
|
||
padding: 20upx;
|
||
background-color: #fff;
|
||
border-radius: 20upx;
|
||
margin-top: 24upx;
|
||
}
|
||
|
||
.dateTit {
|
||
width: 100%;
|
||
display: flex;
|
||
align-items: center;
|
||
|
||
image {
|
||
width: 35upx;
|
||
height: 35upx;
|
||
margin-right: 10upx;
|
||
}
|
||
|
||
.leftIcon {
|
||
width: 8upx;
|
||
height: 30upx;
|
||
background-image: linear-gradient(to bottom, #82E7B3, #94B8EF);
|
||
border-radius: 5px;
|
||
margin-right: 10upx;
|
||
}
|
||
}
|
||
|
||
.time-box {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
justify-content: start;
|
||
padding-top: 24upx;
|
||
|
||
|
||
.bg-gray {
|
||
opacity: 0.6;
|
||
color: #999999 !important;
|
||
background-color: #F2F6FA !important;
|
||
}
|
||
|
||
.time-item {
|
||
width: 30%;
|
||
margin-top: 20upx;
|
||
padding: 15upx 20upx;
|
||
// background: #F2F6FA;
|
||
border-radius: 9upx;
|
||
font-weight: 400;
|
||
font-size: 28upx;
|
||
// color: #999999;
|
||
margin-left: 5%;
|
||
background: #EDFCF7;
|
||
color: #0DB0A7;
|
||
border: 1px solid rgba(0, 0, 0, 0);
|
||
}
|
||
|
||
.time-item:nth-of-type(3n-2) {
|
||
margin-left: 0;
|
||
}
|
||
|
||
.active {
|
||
background: #EDFCF7;
|
||
color: #0DB0A7;
|
||
border: 1px solid #0DB0A7;
|
||
}
|
||
}
|
||
|
||
.form-box {
|
||
// padding: 20upx 30upx 50upx;
|
||
background: #fff;
|
||
|
||
.form-item {
|
||
overflow: hidden;
|
||
border-bottom: 1px solid #eee;
|
||
padding: 30upx;
|
||
|
||
.label {
|
||
float: left;
|
||
width: 150upx;
|
||
font-size: 28upx;
|
||
color: #333;
|
||
font-weight: bold;
|
||
line-height: 50upx;
|
||
}
|
||
|
||
.ipt-box {
|
||
|
||
input {
|
||
width: 100%;
|
||
height: 50upx;
|
||
line-height: 50upx;
|
||
font-size: 26upx;
|
||
color: #666;
|
||
}
|
||
|
||
.AUTO {
|
||
width: 100%;
|
||
height: 30upx;
|
||
line-height: 30upx;
|
||
font-size: 26upx;
|
||
color: #666;
|
||
}
|
||
}
|
||
|
||
.select {
|
||
display: flex;
|
||
flex-direction: row;
|
||
align-items: center;
|
||
|
||
.arrow {
|
||
float: right;
|
||
width: 16upx;
|
||
height: 29upx;
|
||
margin-top: 10upx;
|
||
}
|
||
|
||
.picker {
|
||
height: 50upx;
|
||
line-height: 50upx;
|
||
font-size: 26upx;
|
||
color: #666;
|
||
z-index: 999;
|
||
}
|
||
|
||
.selectQC {
|
||
display: flex;
|
||
flex-direction: row;
|
||
align-items: center;
|
||
|
||
.radio {
|
||
width: 40upx;
|
||
height: 40upx;
|
||
}
|
||
|
||
.text_2 {
|
||
margin-left: 10upx;
|
||
font-size: 28upx;
|
||
color: #555555;
|
||
}
|
||
}
|
||
|
||
.selectQC:nth-of-type(2) {
|
||
margin-left: 70upx;
|
||
}
|
||
}
|
||
}
|
||
|
||
.form-item:last-child {
|
||
border-bottom: 0px;
|
||
}
|
||
}
|
||
|
||
.tips {
|
||
width: 100%;
|
||
padding: 20upx;
|
||
background-color: #fff;
|
||
border-radius: 20upx;
|
||
margin-top: 20upx;
|
||
color: #FB8107;
|
||
font-size: 28upx;
|
||
|
||
.tipsTit {
|
||
width: 100%;
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
.tipsCont {
|
||
margin-left: 38upx;
|
||
display: flex;
|
||
flex-direction: column;
|
||
}
|
||
|
||
.clock {
|
||
width: 36upx;
|
||
height: 36upx;
|
||
}
|
||
}
|
||
|
||
/* 评论 */
|
||
.evaluate {
|
||
padding-top: 30upx;
|
||
border-top: 1px solid #eee;
|
||
}
|
||
|
||
.evaluate .title {
|
||
font-size: 28upx;
|
||
color: #333;
|
||
font-weight: bold;
|
||
line-height: 40upx;
|
||
padding: 0 30rpx 30rpx;
|
||
}
|
||
|
||
.evaluate .evaluate_item {
|
||
border-bottom: 1px solid #eeeeee;
|
||
padding: 0 0 30upx 50upx;
|
||
}
|
||
|
||
.evaluate .evaluate_item:last-child {
|
||
border: none;
|
||
}
|
||
|
||
.evaluate .evaluate_item .user {
|
||
padding: 20upx 0;
|
||
}
|
||
|
||
.evaluate .evaluate_item .user .username {
|
||
font-size: 28rpx;
|
||
color: #666;
|
||
display: inline-block;
|
||
vertical-align: top;
|
||
padding-right: 20upx;
|
||
}
|
||
|
||
.evaluate .evaluate_item .user span image {
|
||
width: 40upx;
|
||
height: 40upx;
|
||
margin-right: 5upx;
|
||
}
|
||
|
||
.evaluate .evaluate_item .text {
|
||
font-size: 28upx;
|
||
color: #666;
|
||
line-height: 40upx;
|
||
}
|
||
}
|
||
}
|
||
|
||
.scroll-view {
|
||
margin-top: 34upx;
|
||
padding-top: 30upx;
|
||
white-space: nowrap;
|
||
width: 100%;
|
||
height: 120upx;
|
||
border-radius: 20upx;
|
||
background-color: #fff;
|
||
|
||
.time-item-box {
|
||
padding: 0 10upx;
|
||
margin: 0 16upx;
|
||
display: inline-block;
|
||
|
||
.time {
|
||
display: block;
|
||
width: 100%;
|
||
font-size: 28upx;
|
||
color: #999;
|
||
}
|
||
|
||
.week {
|
||
display: block;
|
||
width: 100%;
|
||
font-size: 28upx;
|
||
color: #999;
|
||
}
|
||
}
|
||
|
||
.time-active {
|
||
.time {
|
||
color: #0DB0A7;
|
||
font-weight: bold;
|
||
}
|
||
|
||
.week {
|
||
color: #0DB0A7;
|
||
font-weight: bold;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.list-box {
|
||
margin: unset;
|
||
margin-top: 36upx;
|
||
|
||
.detail {
|
||
// margin-top: 10upx;
|
||
margin-bottom: 24upx;
|
||
background: #ffffff;
|
||
border-radius: 20upx;
|
||
padding: 24upx;
|
||
}
|
||
|
||
.detail_header {
|
||
padding: 15upx 0upx;
|
||
border-bottom: 1px solid #eee;
|
||
display: flex;
|
||
flex-direction: row;
|
||
align-items: center;
|
||
position: relative;
|
||
}
|
||
|
||
.detail_header .blueSign {
|
||
width: 48upx;
|
||
height: 48upx;
|
||
}
|
||
|
||
.detail_header .font-tilte {
|
||
display: inline-block;
|
||
font-weight: bold;
|
||
font-size: 18px;
|
||
color: #333333;
|
||
margin-left: 16upx;
|
||
}
|
||
|
||
.detail_header .font-result {
|
||
display: inline-block;
|
||
position: absolute;
|
||
width: 80*2upx;
|
||
height: 28*2upx;
|
||
right: 0upx;
|
||
background: #C1EFEA;
|
||
border-radius: 15px 15px 15px 15px;
|
||
font-size: 28upx;
|
||
color: #0DB0A7;
|
||
text-align: center;
|
||
line-height: 28*2upx;
|
||
}
|
||
|
||
.detail_msg {
|
||
display: grid;
|
||
margin-top: 20upx;
|
||
}
|
||
|
||
.detail_msg .info-item {
|
||
font-size: 28upx;
|
||
color: #999999;
|
||
margin-bottom: 10upx;
|
||
font-size: 28upx;
|
||
line-height: 50upx;
|
||
|
||
text {
|
||
display: inline-block;
|
||
width: 140upx;
|
||
}
|
||
|
||
.infoSpan {
|
||
width: auto;
|
||
font-size: 28upx;
|
||
color: #666;
|
||
float: right;
|
||
}
|
||
}
|
||
|
||
.detail_msg .info-item:nth-of-type(3) {
|
||
padding-bottom: 24upx;
|
||
border-bottom: 1px solid #EBEFF7;
|
||
}
|
||
|
||
.detail_msg .info-item:last-child {
|
||
padding-bottom: 24upx;
|
||
border-bottom: 0px solid #000;
|
||
}
|
||
|
||
.comment-btn {
|
||
margin-top: 24upx;
|
||
width: 84*2upx;
|
||
height: 32*2upx;
|
||
border-radius: 16*2upx;
|
||
border: 1px solid #0DB0A7;
|
||
font-size: 28upx;
|
||
color: #0DB0A7;
|
||
line-height: 32*2upx;
|
||
text-align: center;
|
||
min-width: 140upx;
|
||
justify-self: end;
|
||
}
|
||
|
||
.bg-ccc {
|
||
border-color: #CACACA;
|
||
color: #CACACA;
|
||
background-color: #fff !important;
|
||
}
|
||
}
|
||
</style> |