|
@@ -1,148 +1,148 @@
|
|
|
<template>
|
|
|
<div class="reservation tab-page position-relative p-16">
|
|
|
<template v-if="dateLoading"></template>
|
|
|
- <template v-else-if="dateStates.columns.length">
|
|
|
- <van-cell-group inset>
|
|
|
- <van-field
|
|
|
- v-model="params.aaa.text"
|
|
|
- name="城市"
|
|
|
- label="城市"
|
|
|
- placeholder=""
|
|
|
- input-align="right"
|
|
|
- is-link
|
|
|
- readonly
|
|
|
- :rules="[{ required: true, message: '请选择城市' }]"
|
|
|
- @click="cityStates.show = true"
|
|
|
- />
|
|
|
- <van-field
|
|
|
- v-model="params.bbb.text"
|
|
|
- name="教学点"
|
|
|
- label="教学点"
|
|
|
- placeholder=""
|
|
|
- input-align="right"
|
|
|
- :is-link="!!params.aaa.value"
|
|
|
- readonly
|
|
|
- :rules="[{ required: true, message: '请选择教学点' }]"
|
|
|
- @click="teachStates.show = true"
|
|
|
- :disabled="!params.aaa.value"
|
|
|
- />
|
|
|
- <van-field
|
|
|
- v-model="params.examSiteId.text"
|
|
|
- name="考点"
|
|
|
- label="考点"
|
|
|
- placeholder=""
|
|
|
- input-align="right"
|
|
|
- :is-link="!!params.bbb.value"
|
|
|
- readonly
|
|
|
- :rules="[{ required: true, message: '请选择考点' }]"
|
|
|
- @click="toChooseSite"
|
|
|
- :disabled="!params.bbb.value"
|
|
|
- />
|
|
|
- <van-field
|
|
|
- v-model="params.date.text"
|
|
|
- name="日期"
|
|
|
- label="日期"
|
|
|
- placeholder=""
|
|
|
- input-align="right"
|
|
|
- is-link
|
|
|
- readonly
|
|
|
- :rules="[{ required: true, message: '请选择日期' }]"
|
|
|
- @click="dateStates.show = true"
|
|
|
- />
|
|
|
- </van-cell-group>
|
|
|
+ <!-- <template v-else-if="dateStates.columns.length"> -->
|
|
|
+ <van-cell-group inset>
|
|
|
+ <van-field
|
|
|
+ v-model="params.aaa.text"
|
|
|
+ name="城市"
|
|
|
+ label="城市"
|
|
|
+ placeholder=""
|
|
|
+ input-align="right"
|
|
|
+ is-link
|
|
|
+ readonly
|
|
|
+ :rules="[{ required: true, message: '请选择城市' }]"
|
|
|
+ @click="cityStates.show = true"
|
|
|
+ />
|
|
|
+ <van-field
|
|
|
+ v-model="params.bbb.text"
|
|
|
+ name="教学点"
|
|
|
+ label="教学点"
|
|
|
+ placeholder=""
|
|
|
+ input-align="right"
|
|
|
+ :is-link="!!params.aaa.value"
|
|
|
+ readonly
|
|
|
+ :rules="[{ required: true, message: '请选择教学点' }]"
|
|
|
+ @click="teachStates.show = true"
|
|
|
+ :disabled="!params.aaa.value"
|
|
|
+ />
|
|
|
+ <van-field
|
|
|
+ v-model="params.examSiteId.text"
|
|
|
+ name="考点"
|
|
|
+ label="考点"
|
|
|
+ placeholder=""
|
|
|
+ input-align="right"
|
|
|
+ :is-link="!!params.bbb.value"
|
|
|
+ readonly
|
|
|
+ :rules="[{ required: true, message: '请选择考点' }]"
|
|
|
+ @click="toChooseSite"
|
|
|
+ :disabled="!params.bbb.value"
|
|
|
+ />
|
|
|
+ <van-field
|
|
|
+ v-model="params.date.text"
|
|
|
+ name="日期"
|
|
|
+ label="日期"
|
|
|
+ placeholder=""
|
|
|
+ input-align="right"
|
|
|
+ is-link
|
|
|
+ readonly
|
|
|
+ :rules="[{ required: true, message: '请选择日期' }]"
|
|
|
+ @click="dateStates.show = true"
|
|
|
+ />
|
|
|
+ </van-cell-group>
|
|
|
|
|
|
- <van-popup
|
|
|
- teleport="body"
|
|
|
- v-model:show="cityStates.show"
|
|
|
- round
|
|
|
- position="bottom"
|
|
|
- >
|
|
|
- <van-picker
|
|
|
- v-model="cityStates.value"
|
|
|
- :columns="cityStates.columns"
|
|
|
- @cancel="cityStates.show = false"
|
|
|
- @confirm="cityStates.onConfirm"
|
|
|
- />
|
|
|
- </van-popup>
|
|
|
- <van-popup
|
|
|
- teleport="body"
|
|
|
- v-model:show="teachStates.show"
|
|
|
- round
|
|
|
- position="bottom"
|
|
|
- >
|
|
|
- <van-picker
|
|
|
- v-model="teachStates.value"
|
|
|
- :columns="teachStates.columns"
|
|
|
- @cancel="teachStates.show = false"
|
|
|
- @confirm="teachStates.onConfirm"
|
|
|
- />
|
|
|
- </van-popup>
|
|
|
- <van-popup
|
|
|
- teleport="body"
|
|
|
- v-model:show="dateStates.show"
|
|
|
- round
|
|
|
- position="bottom"
|
|
|
- >
|
|
|
- <van-picker
|
|
|
- v-model="dateStates.value"
|
|
|
- :columns="dateStates.columns"
|
|
|
- @cancel="dateStates.show = false"
|
|
|
- @confirm="dateStates.onConfirm"
|
|
|
- />
|
|
|
- </van-popup>
|
|
|
+ <van-popup
|
|
|
+ teleport="body"
|
|
|
+ v-model:show="cityStates.show"
|
|
|
+ round
|
|
|
+ position="bottom"
|
|
|
+ >
|
|
|
+ <van-picker
|
|
|
+ v-model="cityStates.value"
|
|
|
+ :columns="cityStates.columns"
|
|
|
+ @cancel="cityStates.show = false"
|
|
|
+ @confirm="cityStates.onConfirm"
|
|
|
+ />
|
|
|
+ </van-popup>
|
|
|
+ <van-popup
|
|
|
+ teleport="body"
|
|
|
+ v-model:show="teachStates.show"
|
|
|
+ round
|
|
|
+ position="bottom"
|
|
|
+ >
|
|
|
+ <van-picker
|
|
|
+ v-model="teachStates.value"
|
|
|
+ :columns="teachStates.columns"
|
|
|
+ @cancel="teachStates.show = false"
|
|
|
+ @confirm="teachStates.onConfirm"
|
|
|
+ />
|
|
|
+ </van-popup>
|
|
|
+ <van-popup
|
|
|
+ teleport="body"
|
|
|
+ v-model:show="dateStates.show"
|
|
|
+ round
|
|
|
+ position="bottom"
|
|
|
+ >
|
|
|
+ <van-picker
|
|
|
+ v-model="dateStates.value"
|
|
|
+ :columns="dateStates.columns"
|
|
|
+ @cancel="dateStates.show = false"
|
|
|
+ @confirm="dateStates.onConfirm"
|
|
|
+ />
|
|
|
+ </van-popup>
|
|
|
|
|
|
- <van-popup
|
|
|
- teleport="body"
|
|
|
- v-model:show="showSites"
|
|
|
- round
|
|
|
- position="bottom"
|
|
|
- safe-area-inset-bottom
|
|
|
- >
|
|
|
- <ChooseSite
|
|
|
- :site-list="siteList"
|
|
|
- @site-confirm="siteConfirm"
|
|
|
- ></ChooseSite>
|
|
|
- </van-popup>
|
|
|
+ <van-popup
|
|
|
+ teleport="body"
|
|
|
+ v-model:show="showSites"
|
|
|
+ round
|
|
|
+ position="bottom"
|
|
|
+ safe-area-inset-bottom
|
|
|
+ >
|
|
|
+ <ChooseSite
|
|
|
+ :site-list="siteList"
|
|
|
+ @site-confirm="siteConfirm"
|
|
|
+ ></ChooseSite>
|
|
|
+ </van-popup>
|
|
|
|
|
|
- <div class="result-box" v-if="resultList.length">
|
|
|
- <div class="tip">选择预约时段</div>
|
|
|
- <div class="sub-tip">
|
|
|
- <van-icon name="warning" color="#FF7D00" size="20" />
|
|
|
- <span class="txt">我的剩余可约时段:{{ unApplyNumber }}</span>
|
|
|
- </div>
|
|
|
- <div class="list-box">
|
|
|
- <div
|
|
|
- v-for="item in resultList"
|
|
|
- :key="item.timePeriodId"
|
|
|
- class="flex-h-between list-item"
|
|
|
- >
|
|
|
- <div class="left d-flex align-items-center">
|
|
|
- <span class="s1"
|
|
|
- >{{ $filters.dateFormat(item.timePeriodStart, "HH:mm") }}-{{
|
|
|
- $filters.dateFormat(item.timePeriodEnd, "HH:mm")
|
|
|
- }}</span
|
|
|
- >
|
|
|
- <span class="s2">|</span>
|
|
|
- <span class="s3">剩余{{ item.availableCount }}</span>
|
|
|
- </div>
|
|
|
- <van-button
|
|
|
- v-if="item.status === 'AVAILABLE'"
|
|
|
- :type="!unApplyNumber ? 'default' : 'success'"
|
|
|
- size="small"
|
|
|
- @click="reservationHandle(item)"
|
|
|
- :disabled="!unApplyNumber"
|
|
|
- >预约</van-button
|
|
|
- >
|
|
|
- <span class="full" v-else-if="item.status === 'FULL'">约满</span>
|
|
|
- <span class="finish" v-else-if="item.status === 'FINISHED'"
|
|
|
- >已预约</span
|
|
|
+ <div class="result-box" v-if="resultList.length">
|
|
|
+ <div class="tip">选择预约时段</div>
|
|
|
+ <div class="sub-tip">
|
|
|
+ <van-icon name="warning" color="#FF7D00" size="20" />
|
|
|
+ <span class="txt">我的剩余可约时段:{{ unApplyNumber }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="list-box">
|
|
|
+ <div
|
|
|
+ v-for="item in resultList"
|
|
|
+ :key="item.timePeriodId"
|
|
|
+ class="flex-h-between list-item"
|
|
|
+ >
|
|
|
+ <div class="left d-flex align-items-center">
|
|
|
+ <span class="s1"
|
|
|
+ >{{ $filters.dateFormat(item.timePeriodStart, "HH:mm") }}-{{
|
|
|
+ $filters.dateFormat(item.timePeriodEnd, "HH:mm")
|
|
|
+ }}</span
|
|
|
>
|
|
|
- <span class="stop" v-else>停止</span>
|
|
|
+ <span class="s2">|</span>
|
|
|
+ <span class="s3">剩余{{ item.availableCount }}</span>
|
|
|
</div>
|
|
|
+ <van-button
|
|
|
+ v-if="item.status === 'AVAILABLE'"
|
|
|
+ :type="!unApplyNumber ? 'default' : 'success'"
|
|
|
+ size="small"
|
|
|
+ @click="reservationHandle(item)"
|
|
|
+ :disabled="!unApplyNumber"
|
|
|
+ >预约</van-button
|
|
|
+ >
|
|
|
+ <span class="full" v-else-if="item.status === 'FULL'">约满</span>
|
|
|
+ <span class="finish" v-else-if="item.status === 'FINISHED'"
|
|
|
+ >已预约</span
|
|
|
+ >
|
|
|
+ <span class="stop" v-else>停止</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </template>
|
|
|
- <div class="vh-100 flex-h-center text-center" v-else>
|
|
|
+ </div>
|
|
|
+ <!-- </template> -->
|
|
|
+ <!-- <div class="vh-100 flex-h-center text-center" v-else>
|
|
|
<div>
|
|
|
<NoData>
|
|
|
<template #img>
|
|
@@ -151,7 +151,7 @@
|
|
|
当前无考试预约时段</NoData
|
|
|
>
|
|
|
</div>
|
|
|
- </div>
|
|
|
+ </div> -->
|
|
|
|
|
|
<router-view v-slot="{ Component }">
|
|
|
<transition name="zoom-fade" mode="out-in" appear>
|
|
@@ -218,6 +218,7 @@ const teachStates = reactive({
|
|
|
if (option.value != params.bbb.value) {
|
|
|
params.bbb = { ...option };
|
|
|
params.examSiteId = { value: "", text: "" };
|
|
|
+ params.date = { value: "", text: "" };
|
|
|
}
|
|
|
teachStates.show = false;
|
|
|
_getSiteList();
|
|
@@ -273,7 +274,7 @@ _getCategoryList();
|
|
|
const dateLoading = ref(false);
|
|
|
function _getDateList() {
|
|
|
dateLoading.value = true;
|
|
|
- getDateList()
|
|
|
+ getDateList({ examSiteId: params.examSiteId.value })
|
|
|
.then((res) => {
|
|
|
dateStates.columns = (res || []).map((item) => ({
|
|
|
value: item,
|
|
@@ -284,7 +285,7 @@ function _getDateList() {
|
|
|
dateLoading.value = false;
|
|
|
});
|
|
|
}
|
|
|
-_getDateList();
|
|
|
+// _getDateList();
|
|
|
|
|
|
const unApplyNumber = ref("");
|
|
|
function _getReservationList() {
|
|
@@ -332,6 +333,7 @@ watch([() => params.examSiteId, () => params.date], ([examSiteId, date]) => {
|
|
|
function siteConfirm(obj) {
|
|
|
params.examSiteId = { text: obj.examSiteName, value: obj.examSiteId };
|
|
|
showSites.value = false;
|
|
|
+ _getDateList();
|
|
|
}
|
|
|
bus.on("continueApply", () => {
|
|
|
console.log("continueApply");
|