Files
UNION_HUTB/target/classes/views/platform/activity/site/SiteReserve.html
T
2026-09-09 09:14:28 +08:00

783 lines
37 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!--#
layout("/layouts/platform.html"){
#-->
<style xmlns="">
.text {
font-size: 14px;
}
.e-item {
margin-bottom: 10px;
}
.el-divider--horizontal {
margin: 5px 0;
}
.v-tab .el-card__header {
padding: 10px 15px;
font-weight: bold;
}
.reserve_btn {
font-size: 16px;
float: right;
padding: 3px 0
}
.is-selected {
color: #1989FA;
}
.div-Calendar {
box-sizing: border-box;
height: 100%;
}
.el-carousel__button {
background-color: #c0c4cc;
}
.el-carousel__container {
height: 240px;
}
.el-button--mini.is-circle {
padding: 5px;
font-size: 1px;
}
.slider {
position: relative;
}
.cover {
position: absolute;
height: 6px;
background-color: #409EFF;
margin: 16px 0;
z-index: 999;
}
.cover2 {
position: absolute;
height: 6px;
background-color: #E4E7ED;
margin: 16px 0;
z-index: 1000;
}
.el-slider__marks-text {
margin-top: 10px !important;
}
.el-slider__stop {
z-index: 1001;
}
.el-slider__bar {
z-index: 1000;
}
.el-slider__marks-text {
min-width: 40px !important;
}
.el-slider__button-wrapper {
display: none !important;
}
.el-calendar-day:has(.not-allow-day) {
background-color: #F5F5F5;
}
.div-Calendar p {
margin: 0;
}
</style>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="btn-group tool-button">
<el-select v-model="pageForm.siteType" placeholder="场地类型" clearable
style="width: 200px;">
<el-option v-for="item in activityTypeList" :label="item.text" :value="item.value"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-date-picker
v-model="pageForm.time" placeholder="选择月"
type="month" value-format="yyyy-MM">
</el-date-picker>
</div>
<div class="btn-group tool-button">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 105px;">
<el-option label="场地名称" value="asi.name"></el-option>
<el-option label="预约人" value="asr.reserve_person"></el-option>
</el-select>
</el-input>
</div>
<div class="btn-group tool-button">
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
</div>
</el-card>
<el-row>
<el-carousel :interval="5000" arrow="always" style="margin: 10px auto;">
<el-carousel-item v-for="index in Math.ceil(siteList.length/4)" :key="index">
<el-row :gutter="20">
<el-col v-for="item in siteList.slice((index-1)*4,index*4)" :span="6">
<el-card class="box-card" style="border-radius: 10px">
<div slot="header" class="clearfix" style="font-size: 16px;padding: 5px 0">
<span>{{item.name}}</span>
<el-button @click.stop="onReserve(item)" class="reserve_btn" type="text">预约</el-button>
</div>
<div @click="siteChange(item.id)">
<div class="text e-item">
<span style="color: gray">场地地址:</span>
{{item.address}}
</div>
<div class="text e-item">
<span style="color: gray">&ensp;&ensp;人:</span>
{{(item.unitname ? item.unitname : '') + ' ' + item.contact_person}}
</div>
<div class="text e-item">
<span style="color: gray">联系方式:</span>
{{item.contact_phone}}
</div>
<!--<div class="text e-item">
<span style="color: gray">面向对象:</span>
<span v-if="item.reservetarget == 1">分工会</span>
<span v-if="item.reservetarget == 2">个人</span>
<span v-if="item.reservetarget == 3">集体</span>
</div>-->
<div class="text e-item">
<span style="color: gray">场地介绍:</span>
<el-link @click="viewIntroduce(item)" type="primary" style="position: relative; top: -2px">点击查看</el-link>
</div>
</div>
</el-card>
</el-col>
</el-row>
</el-carousel-item>
</el-carousel>
<el-row class="v-tab">
<el-card class="box-card" shadow="never">
<vi-title2 title="预约列表">
<template #func>
<el-button style="float: right" type="primary" @click="siteChange()" size="mini">全部</el-button>
</template>
</vi-title2>
<el-table :data="tableData" row-key="id"
v-loading="tableLoading">
<el-table-column align="center" header-align="center" label="序号" type="index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column align="center" sortable show-overflow-tooltip header-align="center"
label="场地名称"
prop="site_name"></el-table-column>
<el-table-column align="center" sortable header-align="center" label="预约人"
prop="reserve_person"></el-table-column>
<el-table-column align="center" sortable show-overflow-tooltip header-align="center"
label="所属单位"
prop="reserve_person_unit"></el-table-column>
<el-table-column align="center" sortable show-overflow-tooltip header-align="center"
label="预约日期"
prop="concat_day"></el-table-column>
<el-table-column align="center" sortable show-overflow-tooltip header-align="center"
label="开始时间"
prop="start_time">
<template slot-scope="{row}">
<span>{{row.start_time}}</span>
</template>
</el-table-column>
<el-table-column align="center" sortable show-overflow-tooltip header-align="center"
label="结束时间"
prop="end_time">
<template slot-scope="{row}">
<span>{{row.end_time}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="联系方式"
prop="reserve_person_phone"></el-table-column>
<el-table-column align="center" show-overflow-tooltip header-align="center" label="预约事由"
prop="reserve_cause"></el-table-column>
<el-table-column align="center" show-overflow-tooltip="true" header-align="center" sortable
label="预约状态" prop="state_name">
<template slot-scope="{row}">
<!--<span :style="'color:'+row.state_color">{{row.state_name}}</span>-->
<span v-if="[0].includes(row.stateaudittype)" style="color: #e6a23c">{{row.state_name}}</span>
<span v-if="row.stateaudittype==3" style="color: #67c23a">{{row.state_name}}</span>
<span v-if="row.stateaudittype==1" style="color: #f56c6c">{{row.state_name}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="操作" fixed="right"
width="200px">
<template scope="scope">
<el-dropdown @command="dropdownCommand">
<el-button size="mini">
<i class="ti-settings"></i>
<span class="ti-angle-down"></span>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{type:'view',data:scope.row}">
查看
</el-dropdown-item>
<el-dropdown-item
v-if="scope.row.reserve_person_id === '${@shiro.getPrincipalProperty('id')}'"
:command="{type:'backOption',data:scope.row}">
反馈意见
</el-dropdown-item>
<!--# if(@shiro.hasRole('sysadmin')){ #-->
<el-dropdown-item
:command="{type:'delete',data:scope.row}">
删除
</el-dropdown-item>
<!--# } #-->
<el-dropdown-item
v-if="scope.row.reserve_person_id === '${@shiro.getPrincipalProperty('id')}'"
:command="{type:'cancel',data:scope.row}">
撤销预约
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container">
<el-pagination
@size-change="pageSizeChange"
@current-change="pageNumberChange"
:current-page="pageForm.pageNumber"
:page-sizes="[10, 20, 30, 50]"
:page-size="pageForm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="pageForm.totalCount">
</el-pagination>
</el-row>
</el-card>
</el-row>
</el-row>
</template>
<template #edit>
<el-row :gutter="20">
<el-col :span="12" :offset="6" style="text-align: center">
<div style="font-size: large;color: #303133">
您正在预约【<span style="color: #409EFF">{{infoViewData.name}}</span>】活动场地
</div>
</el-col>
</el-row>
<el-calendar v-model="reserve_time">
<template slot="dateCell" slot-scope="{date, data}">
<div :class="getDayClass(data)" @click="pushDay(data)">
<p :style="dayArray.includes(data.day) ? 'color: #246fb4' : ''">
{{ data.day.split('-').slice(1).join('-') }} {{ dayArray.includes(data.day) ? '✔️' : ''}}
</p>
<div v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('xghng')||@shiro.hasRole('A06')}"
v-for="item in reserveViewData">
<div v-if="data.day.toString() == item.reserve_day"
:style="{backgroundColor:([0].includes(item.stateaudittype)?'#FAECD9':item.reserve_state==30?'#E0F4D9':'#FEE2E2')}">
<el-row style="line-height: 20px">
<el-col :span="4" style="font-size: 10px">
<span v-if="[0].includes(item.stateaudittype)">待审</span>
<span v-if="item.stateaudittype==3">通过</span>
<span v-if="item.stateaudittype==1">拒绝</span>
</el-col>
<el-col :span="20" style="font-size: 10px">
<span>
<b>{{item.reserve_person}}</b>{{item.start_time}}-{{item.end_time}}
</span>
</el-col>
</el-row>
</div>
</div>
</div>
</template>
</el-calendar>
<div style="text-align: right">
<el-button @click="openAdd" type="primary">下一步</el-button>
</div>
</template>
<template #view>
<reserve-info ref="reserve"></reserve-info>
</template>
</guava>
<el-dialog title="新增场地预约" class="dia" :close-on-click-modal="false" @close="diaClose" top="2%"
:visible.sync="addDialogVisible" custom-class="ViewDialogClass" width="50%">
<vi-title :title="'您已选择的预约日期为:'+ dayArray.toString()" style="margin-left: 48px"></vi-title>
<el-form :model="formData" ref="addForm" :rules="formRules" label-position="right"
label-width="100px">
<el-form-item label="预约人" prop="reserve_person">
<el-select disabled allow-create style="width: 100%" v-model="formData.reserve_person" filterable remote
value-key="id" reserve-keyword placeholder="请输入关键词" @change="userChange"
:remote-method="remoteMethod" :loading="loading">
<el-option v-for="item in restaurants" :key="item.id" :label="item.username"
:value="item"></el-option>
</el-select>
</el-form-item>
<el-form-item label="性别" prop="sex">
<el-input readonly v-model="formData.sex" maxlength="100"
placeholder="请输入性别"></el-input>
</el-form-item>
<el-form-item label="工号" prop="loginname">
<el-input readonly v-model="formData.loginname" maxlength="100"
placeholder="请输入工号"></el-input>
</el-form-item>
<el-form-item label="所属单位" prop="reserve_person_unit">
<el-input readonly v-model="formData.reserve_person_unit" maxlength="100"
placeholder="请输入所属单位"></el-input>
</el-form-item>
<el-form-item label="联系电话" prop="reserve_person_phone">
<el-input maxlength="11" placeholder="请输入联系电话"
v-model="formData.reserve_person_phone"></el-input>
</el-form-item>
<el-form-item label="预约时间" prop="time">
<el-select v-model="formData.time" style="width: 100%" filterable @change="timeChange"
placeholder="请选择预约时间">
<el-option v-for="item in allowTimeList"
:disabled="item.disabled === true"
:value="item.start_time + '-' + item.end_time">
<template #default>
<span v-if="item.disabled === true">
{{ item.start_time + ' - ' + item.end_time + '' + item.tooltip + '' }}
</span>
<span v-else>{{ item.start_time + ' - ' + item.end_time }}</span>
</template>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="预约人数" prop="joinCount">
<el-input-number
:disabled="infoViewData.reservetarget === 1 || infoViewData.reservetarget === 3"
v-model="formData.joinCount"
:min="1" :max="9999"
label="请输入预约人数"
style="width: 100%"></el-input-number>
</el-form-item>
<el-form-item label="预约事由" prop="reserve_cause">
<el-input maxlength="1000" placeholder="请输入预约事由" autosize v-model="formData.reserve_cause"
type="textarea" :autosize="{ minRows: 4, maxRows: 6}"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="closeAdd">取 消</el-button>
<el-button type="primary" :disabled="subDis" @click="doAdd">确 定</el-button>
</span>
</el-dialog>
<el-dialog :visible.sync="drawer" title="场地介绍" width="40%" top="3%">
<div v-html="viewData.introduce"></div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="drawer = false">确定</el-button>
</span>
</el-dialog>
</div>
<script>
<!--# include("/platform/activity/includeJs/activityUtil.js"){} #-->
const activityUtil = new typeUtil()
const vue = new Vue({
el: '#app',
data() {
return {
activityTypeList: [],
drawer: false,
siteList: [],
restaurants: [],
reserve_time: '',
infoViewData: {},
reserveViewData: {},
tableLoading: false,
addDialogVisible: false,
subDis: false,
loading: false,
tableData: [],
formData: {
start_time: '',
end_time: '',
reserve_person_phone: '',
reserve_cause: '',
time: '',
sex: "${@shiro.getPrincipalProperty('sex')}",
loginname: "${@shiro.getPrincipalProperty('loginname')}"
},
pageForm: {
searchName: "asr.reserve_person",
searchKeyword: "",
pageNumber: 1,
pageSize: 10,
totalCount: 0,
pageOrderName: "",
pageOrderBy: "",
time: ''
},
userid: '',
formRules: {
reserve_person: [{required: true, message: '请填写预约人', trigger: ['blur', 'change']}],
reserve_person_unit: [{required: true, message: '请填写单位', trigger: ['blur', 'change']}],
reserve_person_phone: [{required: true, message: '请填写联系电话', trigger: ['blur', 'change']}],
start_time: [{required: true, message: '请选择预约时间', trigger: ['blur', 'change']}],
time: [{required: true, message: '请选择预约时间', trigger: ['blur', 'change']}],
joinCount: [{required: true, message: '请输入预约人数', trigger: ['blur', 'change']}],
/*reserve_cause: [{required: true, message: '请选择预约事由', trigger: ['blur', 'change']}],*/
},
dayArray: [],
allowDayList: [],
allowTimeList: [],
viewData: {},
reverseData: {},
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'reserve-info': httpVueLoader('/components/activity/site/ReserveInfo.vue?v=' + new Date().getTime()),
},
methods: {
viewIntroduce(item) {
this.viewData = item
this.drawer = true
},
diaClose() {
this.formData.time = ''
this.formData.start_time = ''
this.formData.end_time = ''
},
timeChange(o) {
this.formData.start_time = o.split('-')[0]
this.formData.end_time = o.split('-')[1]
},
dropdownCommand(command) {
const {type, data} = command
if (type === 'view') {
this.userid = data.reserve_person_id;
this.openView(data)
} else if (type === 'delete') {
this.doDelete(data.id, 1)
} else if (type === 'cancel') {
this.doDelete(data.id, 2)
} else if (type === 'backOption') {
this.backOption(data)
}
},
backOption(row) {
this.$prompt('请填写反馈意见', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
inputValidator: (value) => {
if (value === null) {
return '反馈意见不能为空'
}
}
}).then(async ({value}) => {
const res = await $.post('/mobile/activity/site/info/backOption', {
id: row.id,
option: value
})
if (res.code === 0) {
await this.doSearch()
this.$message.success(res.msg)
} else {
this.$message.warning(res.msg)
}
}).catch(() => {
});
},
async siteChange(id) {
this.pageForm.siteId = id
this.pageData()
},
userChange(data) {
this.$set(this.formData, "reserve_person", data.username ? data.username : data)
this.$set(this.formData, "reserve_person_unit", data.unit_name)
this.$set(this.formData, "reserve_person_phone", data.mobile ? data.mobile : '')
},
remoteMethod(keywords) {
$.post(location.href + "/findUser", {keywords: keywords}, (res) => {
const {code, data, msg} = res
if (code === 0) {
this.restaurants = data;
} else {
this.restaurants = [];
this.$message.error(msg);
}
this.loading = false;
})
},
closeAdd() {
this.addDialogVisible = false
this.formData.end_time = ''
},
onReserve(data) {
if(data.reservetarget === 1 && "${@shiro.hasAnyRoles('gh01', 'H04')}" === 'false' && "${@shiro.hasRole('sysadmin')}" === 'false') {
this.$message.warning('该场地只能分工会预约')
return
}
this.reverseData = data
this.dayArray = []
this.getAllowTime()
if (data.sexlimit === 1 || data.sexlimit === 2) {
const sex = data.sexlimit === 1 ? '男' : '女'
if ("${@shiro.getPrincipalProperty('sex')}" === sex) {
this.openReserve(data)
} else {
this.$message.warning('抱歉,该场地仅限' + sex + '性会员预约')
}
} else {
this.openReserve(data)
}
},
getDayClass(data) {
const d = new Date(data.day).getDay()
let classStr = 'div-Calendar'
if(this.allowDayList.length > 0 && !this.allowDayList.includes(data.day)) {
classStr += ' not-allow-day';
}
if(this.infoViewData.openweektime) {
const openWeedTime = JSON.parse(this.infoViewData.openweektime)
if(!openWeedTime.includes(d)) {
classStr += ' not-allow-day';
}
}
if(this.infoViewData.notapplytimelist) {
const notApplyTimeList = JSON.parse(this.infoViewData.notapplytimelist)
if(notApplyTimeList.includes(data.day)) {
classStr += ' not-allow-day';
}
}
if(moment(data.day).isBefore(moment().startOf('day'))) {
classStr += ' not-allow-day';
}
return classStr
},
async pushDay(data) {
this.$nextTick(async () => {
await this.getAllowTime(moment(data.day).year(), moment(data.day).month() + 1)
})
if (this.allowDayList.length > 0 && !this.allowDayList.includes(data.day)) {
this.$message.warning(data.day + "不能预约")
return
}
if (this.infoViewData.notapplytimelist) {
const notApplyTimeList = JSON.parse(this.infoViewData.notapplytimelist)
if (notApplyTimeList.includes(data.day)) {
this.$message.warning(data.day + "不能预约")
return
}
}
if (data.day < moment(new Date()).format('YYYY-MM-DD')) {
this.$message.warning('你选择的日期已过')
return
}
if (this.dayArray.includes(data.day)) {
this.dayArray.splice(this.dayArray.indexOf(data.day), 1)
} else {
this.dayArray = []
this.dayArray.push(data.day)
this.dayArray.sort()
}
},
async openAdd() {
//查询用户点击的这一天已经被预约的时间段
if (this.dayArray && this.dayArray.length === 0) {
this.$message.warning('请选择预约日期')
return
}
this.$set(this.formData, "reserve_person", '${@shiro.getPrincipalProperty("username")}')
this.$set(this.formData, "reserve_person_unit", '${@shiro.getPrincipalProperty("unit").getName()}')
this.$set(this.formData, "reserve_person_phone", '${@shiro.getPrincipalProperty("mobile")}')
if (this.$refs['addForm']) {
this.$refs['addForm'].resetFields()
}
if(this.infoViewData.reservetarget === 1 || this.infoViewData.reservetarget === 3) {
this.$set(this.formData, "joinCount", this.infoViewData.maxnum)
} else {
this.$set(this.formData, "joinCount", 1)
}
this.allowTimeList = await this.getTimesByDay()
this.addDialogVisible = true
},
async doDelete(id, op) {
if (op === 2) {
const res = await $.post(location.href + "/isCanRollBack", {id: id});
if (res === true) {
this.$message.warning('此预约状态下不能进行撤回操作')
return
}
}
let text = op === 1 ? '删除' : '撤销'
this.$confirm("您确定要" + text + "此预约吗?", '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: (a, b) => {
if ("confirm" === a) {
$.post(location.href + "/doDelete", {id, op}, (data) => {
if (data.code === 0) {
this.$message.success(data.msg)
this.pageData();
} else {
this.$message.warning(data.msg)
}
}, "json");
}
}
});
},
async doAdd() {
if (!this.formData.time) {
this.$message.warning('未选择预约时间')
return
}
const s = this.formData.time.split('-')[0]
const e = this.formData.time.split('-')[1]
if (moment().unix() >= moment(this.dayArray[0] + ' ' + e + ':00').unix()) {
this.$message.warning('您预约的时间段已过')
return
}
this.$refs["addForm"].validate(async (valid) => {
if (valid) {
this.subDis = true
const loading = this.$loading({
lock: true,
text: '正在提交...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
const {code, msg} = await $.post(location.href + "/doAdd", {
data: JSON.stringify(this.formData),
days: JSON.stringify(this.dayArray)
})
if (code === 0) {
this.addDialogVisible = false
this.$message.success(msg);
this.pageData()
this.$refs.guava.index()
} else {
this.$message.warning(msg)
}
loading.close()
this.subDis = false
}
});
},
openView(row) {
this.$refs.guava.view()
const role = "${@shiro.hasRole('sysadmin')||@shiro.hasRole('xghng')||@shiro.hasRole('A06')}"
this.$refs.reserve.role = role
const backOptionShow = "${@shiro.getPrincipalProperty('id')}" === this.userid
this.$refs.reserve.backOptionShow = (role || backOptionShow)
this.$refs.reserve.openView(row.id)
},
async openReserve(data) {
this.reserveViewData = await this.findReserveInfo(data.id)
/*this.reserveViewData.forEach(item => {
item.index = 0
})*/
this.formData.site_id = data.id
this.infoViewData = data
this.$refs.guava.edit()
},
async doSearch() {
this.pageForm.pageNumber = 1
this.pageData()
this.siteList = await this.findAllOpenSite()
},
pageOrder(column) {
this.pageForm.pageOrderName = column.prop;
this.pageForm.pageOrderBy = column.order;
this.pageData();
},
pageNumberChange(val) {
this.pageForm.pageNumber = val;
this.pageData();
},
pageSizeChange(val) {
this.pageForm.pageSize = val;
this.pageData();
},
pageData() {
sublime.showLoadingbar();
this.tableLoading = true
$.post(location.href + "/pageData", this.pageForm, (res) => {
const {code, data, msg} = res
sublime.closeLoadingbar();
this.tableLoading = false
if (code === 0) {
this.tableData = data.list;
this.pageForm.totalCount = data.totalCount;
} else {
this.$message.error(msg);
}
}, "json");
},
async findReserveInfo(siteId) {
const {data} = await $.get("/platform/activity/site/reserve/findReserveInfo", {siteId})
return data;
},
async findAllOpenSite(siteId) {
const {data} = await $.get("/platform/activity/site/reserve/findAllOpenSite", {
time: this.pageForm.time,
siteId: siteId,
siteType: this.pageForm.siteType,
})
return data
},
async getAllowTime(year = null, month = null) {
const titleText = $('.el-calendar__title').text().trim().replaceAll(' ', '')
const m = moment(titleText, "YYYY年M月")
const { data } = await $.get("/platform/activity/site/reserve/getAllowTime", {
siteId: this.reverseData.id,
year: year != null ? year : m.year(),
month: month != null ? month : m.month() + 1,
})
this.allowDayList = data
},
async getTimesByDay() {
const { data } = await $.get("/platform/activity/site/reserve/getTimesByDay", {
siteId: this.reverseData.id,
day: moment(this.reserve_time).format('YYYY-MM-DD'),
})
return data
}
},
async created() {
this.activityTypeList = await activityUtil.getAllType()
this.siteList = await this.findAllOpenSite()
await this.getAllowTime()
this.pageData()
this.$nextTick(() => {
// 点击前一个月
let prevBtn = document.querySelector(
".el-calendar__button-group .el-button-group>button:nth-child(1)"
);
prevBtn.addEventListener("click", e => {
this.getAllowTime()
})
//点击下一个月
let nextBtn = document.querySelector(
".el-calendar__button-group .el-button-group>button:nth-child(3)"
);
nextBtn.addEventListener("click", () => {
this.getAllowTime()
});
//点击今天
let todayBtn = document.querySelector(
".el-calendar__button-group .el-button-group>button:nth-child(2)"
);
todayBtn.addEventListener("click", () => {
this.getAllowTime()
});
})
},
})
</script>
<!--#
}
#-->