From 17efddc6a667670dca682bf36b51a43e99615e6d Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期三, 16 十月 2024 15:59:38 +0800 Subject: [PATCH] 代码初始化 --- admin/src/views/meeting/bookings.vue | 232 +++++++++++++++++++++++++++++++++------------------------ 1 files changed, 135 insertions(+), 97 deletions(-) diff --git a/admin/src/views/meeting/bookings.vue b/admin/src/views/meeting/bookings.vue index 1cb742c..73cc725 100644 --- a/admin/src/views/meeting/bookings.vue +++ b/admin/src/views/meeting/bookings.vue @@ -3,23 +3,13 @@ <!-- 鎼滅储琛ㄥ崟 --> <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> <el-form-item label="浼氳瀹�" prop="roomId"> - <el-select - v-model="searchForm.roomId" - filterable - clearable - placeholder="璇烽�夋嫨浼氳瀹�" - > + <el-select v-model="searchForm.roomId" filterable clearable placeholder="璇烽�夋嫨浼氳瀹�"> <el-option v-for="item in rooms" :key="item.id" :value="item.id" :label="item.name" /> </el-select> </el-form-item> <el-form-item label="棰勭害閮ㄩ棬" prop="department"> - <el-cascader - v-model="searchForm.department" - :options="department" - :show-all-levels="false" - clearable - :props="props" - ></el-cascader> + <el-cascader v-model="searchForm.department" :options="department" :show-all-levels="false" clearable + :props="props"></el-cascader> <!-- @change="handleChange" --> <!-- <el-select v-model="searchForm.departmentId" @@ -37,32 +27,17 @@ <el-input v-model="searchForm.realName" placeholder="璇疯緭鍏ラ绾︿汉" @keypress.enter.native="search"></el-input> </el-form-item> <el-form-item label="浼氳鐘舵��" prop="status"> - <el-select - v-model="searchForm.status" - filterable - clearable - placeholder="璇烽�夋嫨鐘舵��" - > + <el-select v-model="searchForm.meetingStatus" filterable clearable placeholder="璇烽�夋嫨鐘舵��"> <el-option v-for="item in status" :key="item.id" :value="item.id" :label="item.name" /> </el-select> </el-form-item> <el-form-item label="璧锋鏃堕棿" prop="startTime"> - <el-date-picker - v-model="date" - type="datetimerange" - range-separator="鑷�" - value-format="yyyy-MM-dd HH:mm:ss" - start-placeholder="寮�濮嬫椂闂�" - end-placeholder="缁撴潫鏃堕棿" - @change="selectDate" - ></el-date-picker> + <el-date-picker v-model="date" type="datetimerange" range-separator="鑷�" value-format="yyyy-MM-dd HH:mm:ss" + :default-time="['00:00:00', '23:59:59']" start-placeholder="寮�濮嬫椂闂�" end-placeholder="缁撴潫鏃堕棿" + @change="selectDate"></el-date-picker> <!-- <el-date-picker v-model="searchForm.startTime" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ紑濮嬫椂闂�" @change="search"/> --> </el-form-item> - <el-radio-group - v-model="searchForm.radio" - size="small" - @input="changeRadio" - > + <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio"> <el-radio-button label="0">褰撳ぉ</el-radio-button> <el-radio-button label="1">杩�7澶�</el-radio-button> <el-radio-button label="2">杩�30澶�</el-radio-button> @@ -77,68 +52,75 @@ </el-form> <!-- 琛ㄦ牸鍜屽垎椤� --> <template v-slot:table-wrap> - <ul class="toolbar" v-permissions="['business:bookings:create', 'business:bookings:exportExcel']"> - <li><el-button type="primary" @click="$refs.operaBookingsWindow.open('鏂板缓浼氳')" v-permissions="['business:bookings:create']">鏂板缓</el-button></li> + <ul class="toolbar" v-permissions="[ + 'business:bookings:create', + 'business:bookings:exportExcel', + ]"> + <li> + <el-button type="primary" @click="$refs.operaBookingsWindow.open('鏂板缓浼氳')" + v-permissions="['business:bookings:create']">鏂板缓</el-button> + </li> <!-- <li><el-button @click="deleteByIdInBatch" v-permissions="['business:bookings:delete']">鍒犻櫎</el-button></li> --> - <li><el-button :loading="isWorking.export" v-permissions="['business:bookings:exportExcel']" @click="exportExcel">瀵煎嚭</el-button></li> + <li> + <el-button :loading="isWorking.export" v-permissions="['business:bookings:exportExcel']" + @click="exportExcel">瀵煎嚭</el-button> + </li> </ul> - <el-table - v-loading="isWorking.search" - :data="tableData.list" - stripe - border - @selection-change="handleSelectionChange" - > + <el-table v-loading="isWorking.search" :data="tableData.list" stripe border + @selection-change="handleSelectionChange"> <!-- <el-table-column type="selection" align="center" width="55"></el-table-column> --> <el-table-column prop="name" label="浼氳涓婚" align="center" min-width="120px" show-overflow-tooltip> - <template slot-scope="{row}"> + <template slot-scope="{ row }"> <span class="long-title-style">{{ row.name }}</span> </template> </el-table-column> <el-table-column prop="roomName" label="浼氳瀹�" align="center" min-width="120px" show-overflow-tooltip> - <template slot-scope="{row}"> + <template slot-scope="{ row }"> <span class="long-title-style">{{ row.roomName }}</span> </template> </el-table-column> <el-table-column prop="meetingTime" label="浼氳鏃堕棿" align="center" min-width="120px"></el-table-column> <el-table-column prop="managerInfo" label="棰勭害浜�" align="center" min-width="100px"></el-table-column> - <el-table-column label="鐘舵��" align="center" min-width="60px"> - <template slot-scope="{row}"> - <span v-if="row.status==0" style="color:rgb(127, 178, 53)">姝e父</span> - <span v-else style="color:rgb(234, 54, 38)">鍙栨秷</span> + <el-table-column label="浼氳鐘舵��" align="center" min-width="60px"> + <template slot-scope="{ row }"> + <span v-if="row.meetingStatus == 1">鏈紑濮�</span> + <span v-if="row.meetingStatus == 2">杩涜涓�</span> + <span v-if="row.meetingStatus == 3">宸茬粨鏉�</span> + <span v-if="row.meetingStatus == 4">鍗冲皢寮�濮�</span> + <span v-if="row.meetingStatus == 5">宸叉挙閿�</span> <!-- {{ row.status==0 ? '姝e父' : '鍙栨秷' }} --> </template> </el-table-column> - <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" align="center" min-width="100px"></el-table-column> + <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" align="center" min-width="150px"></el-table-column> <!-- <el-table-column prop="content" label="浼氳鍐呭" min-width="100px"></el-table-column> --> - <el-table-column - v-if="containPermissions(['business:bookings:update', 'business:bookings:delete'])" - label="鎿嶄綔" - min-width="120" - align="center" - fixed="right" - > - <template slot-scope="{row}"> - <template v-if="row.status==0"> - <el-button type="text" @click="$refs.operaBookingsDetailWindow.open('浼氳璇︽儏', row)">鏌ョ湅</el-button> - <el-button v-if="row.flag == 0" type="text" @click="$refs.operaBookingsWindow.open('缂栬緫浼氳棰勭害', row)" v-permissions="['business:bookings:update']">淇敼</el-button> - <el-button type="text" @click="copy(row)">澶嶅埗</el-button> - <el-button v-if="row.flag == 0" type="text" @click="cancelMeeting(row.id)" v-permissions="['business:bookings:update']">鍙栨秷</el-button> + <el-table-column v-if=" + containPermissions([ + 'business:bookings:update', + 'business:bookings:delete', + ]) + " label="鎿嶄綔" min-width="140" align="center" fixed="right"> + <template slot-scope="{ row }"> + <template> + <el-button type="text" @click="$refs.operaBookingsDetailWindow.open('浼氳璇︽儏', row)">鏌ョ湅璇︽儏</el-button> + <el-button v-if="row.meetingStatus == '1'" type="text" + @click="$refs.operaBookingsWindow.open('缂栬緫浼氳棰勭害', row)" + v-permissions="['business:bookings:update']">缂栬緫</el-button> + <el-button type="text" v-if="row.meetingStatus == '1'" @click="handleStart(row)">寮�濮�</el-button> + <el-button type="text" v-if="row.meetingStatus == '2'" @click="handleEnd(row)">缁撴潫</el-button> + <el-button v-if="row.meetingStatus == '1'" type="text" @click="cancelMeeting(row.id)" + v-permissions="['business:bookings:update']">鎾ゅ洖</el-button> </template> - <el-button v-else type="text" @click="deleteById(row)" v-permissions="['business:bookings:delete']">鍒犻櫎</el-button> + <!-- <el-button v-else type="text" @click="deleteById(row)" v-permissions="['business:bookings:delete']">鍒犻櫎</el-button> --> </template> </el-table-column> </el-table> - <pagination - @size-change="handleSizeChange" - @current-change="handlePageChange" - :pagination="tableData.pagination" - > + <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination"> </pagination> </template> <!-- 鏂板缓/淇敼 --> - <OperaBookingsWindow ref="operaBookingsWindow" @success="handlePageChange"/> - <OperaBookingsDetailWindow ref="operaBookingsDetailWindow"/> + <OperaBookingsWindow ref="operaBookingsWindow" @success="handlePageChange" /> + <OperaBookingsDetailWindow @success="search" ref="operaBookingsDetailWindow" /> + </TableLayout> </template> @@ -151,13 +133,13 @@ import { findList } from '@/api/meeting/rooms' import { getSystemDictData } from '@/api/system/dictData' import { fetchList } from '@/api/business/company' -import { cancelById, bookingsDetail } from '@/api/meeting/bookings' +import { cancelById, bookingsDetail, startEarlyById, startById, meetingEndById } from '@/api/meeting/bookings' import { timeForMat } from '@/utils/util' export default { name: 'Bookings', extends: BaseTable, components: { TableLayout, Pagination, OperaBookingsWindow, OperaBookingsDetailWindow }, - data () { + data() { return { date: [], // 鎼滅储 @@ -166,7 +148,7 @@ // departmentId: [], department: [], realName: '', - status: '', + meetingStatus: '', createDate: '', editor: '', editDate: '', @@ -190,19 +172,21 @@ { name: '寮�鍙戦儴闂�', id: '0' } ], status: [ - { name: '鍏ㄩ儴', id: '' }, - { name: '姝e父', id: '0' }, - { name: '鍙栨秷', id: '1' } + { name: '鏈紑濮�', id: 1 }, + { name: '鍗冲皢寮�濮�', id: 4 }, + { name: '杩涜涓�', id: 2 }, + { name: '宸叉挙閿�', id: 5 }, + { name: '宸茬粨鏉�', id: 3 } ], link: 'https://dmtest.ahapp.net/meeting_h5/' // H5_LINK_ADDR } }, - provide () { + provide() { return { rooms: () => this.rooms } }, - created () { + created() { this.config({ module: '浼氳瀹ら瀹氫俊鎭〃', api: '/meeting/bookings', @@ -225,23 +209,23 @@ this.changeRadio('0') }, methods: { - changeRadio (e) { + changeRadio(e) { if (e === '0') { this.searchForm.startTime = timeForMat(0)[0] this.searchForm.endTime = timeForMat(0)[1] - this.time = timeForMat(0) + this.date = timeForMat(0) } else if (e === '1') { this.searchForm.startTime = timeForMat(6)[0] this.searchForm.endTime = timeForMat(6)[1] - this.time = timeForMat(6) + this.date = timeForMat(6) } else if (e === '2') { this.searchForm.startTime = timeForMat(29)[0] this.searchForm.endTime = timeForMat(29)[1] - this.time = timeForMat(29) + this.date = timeForMat(29) } this.search() }, - newTree (tree) { + newTree(tree) { if (tree == null) { return [] } @@ -258,30 +242,54 @@ return newItem }) }, - selectDate (v) { + selectDate(v) { this.searchForm.endTime = v[1] + ' 23:59:59' this.searchForm.startTime = v[0] + ' 00:00:00' this.searchForm.radio = null }, - reset () { + reset() { this.$refs.searchForm.resetFields() this.date = [] this.searchForm.radio = '0' this.searchForm.startTime = '' this.searchForm.endTime = '' - this.search() + this.changeRadio('0') }, - copy (row) { + copy(row) { const text = `${row.realName} 閭�璇锋偍鍔犲叆浼氳\n浼氳涓婚锛�${row.name}\n浼氳瀹わ細${row.roomName}\n浼氳鏃堕棿锛�${row.meetingTime}\n鐐瑰嚮閾炬帴鐩存帴鍔犲叆浼氳锛歕n${this.link}?id=${row.id}` this.$copyText(text) .then(() => { this.$message.success('浼氳淇℃伅澶嶅埗鎴愬姛锛屽幓鍒嗕韩缁欏悓浜嬪惂~') }) .catch(e => { - this.$message.error(e) }) }, - cancelMeeting (id) { + handleStart(row) { + this.$dialog.messageWaring('寮�濮嬩細璁�', '鏄惁寮�濮嬪綋鍓嶄細璁紵') + .then(() => { + let fn = new Date(row.startTime).getTime() > new Date().getTime() ? startEarlyById : startById + fn({ id: row.id }) + .then(() => { + this.$message.success('浼氳宸插紑濮�') + this.handlePageChange() + }) + .catch(e => { + }) + }) + }, + handleEnd(row) { + this.$dialog.messageWaring('缁撴潫浼氳', '鏄惁缁撴潫褰撳墠浼氳锛�') + .then(() => { + meetingEndById({ id: row.id }) + .then(() => { + this.$message.success('浼氳宸茬粨鏉�') + this.handlePageChange() + }) + .catch(e => { + }) + }) + }, + cancelMeeting(id) { this.$dialog.messageWaring('鍙栨秷浼氳', '鏄惁鍙栨秷褰撳墠浼氳锛�') .then(() => { cancelById({ id }) @@ -290,29 +298,26 @@ this.handlePageChange() }) .catch(e => { - this.$message.error(e) }) }) }, - showDetail (id) { + showDetail(id) { bookingsDetail(id) .then(res => { this.$refs.operaBookingsDetailWindow.open('浼氳璇︽儏', res) }) .catch(e => { - this.$message.error(e) }) }, - editBookings (id) { + editBookings(id) { bookingsDetail(id) .then(res => { this.$refs.operaBookingsWindow.open('缂栬緫浼氳棰勭害', res) }) .catch(e => { - this.$message.error(e) }) }, - handlePageChange (pageIndex) { + handlePageChange(pageIndex) { this.__checkApi() this.tableData.pagination.pageIndex = pageIndex || this.tableData.pagination.pageIndex this.isWorking.search = true @@ -331,7 +336,7 @@ this.tableData.pagination.total = data.total }) .catch(e => { - this.$tip.apiFailed(e) + // this.$tip.apiFailed(e) }) .finally(() => { this.isWorking.search = false @@ -340,3 +345,36 @@ } } </script> + +<style lang="scss" scoped> +.detail_modal { + padding: 20px 16px; + + .title { + text-align: center; + font-weight: 600; + font-size: 16px; + margin-bottom: 20px; + } + + .h1 { + font-weight: 600; + font-size: 16px; + margin-bottom: 15px; + } + + .line { + display: flex; + margin-bottom: 10px; + + .label { + width: 70px; + color: #888888; + } + + .value { + color: #333333; + } + } +} +</style> -- Gitblit v1.9.3