From cd2d3c65b9af62cbafa57a835b237a9f193148f2 Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期五, 20 九月 2024 14:22:06 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- admin/src/views/meeting/bookings.vue | 242 +++++++++++++++--------------------------------- 1 files changed, 75 insertions(+), 167 deletions(-) diff --git a/admin/src/views/meeting/bookings.vue b/admin/src/views/meeting/bookings.vue index f6e4b81..e9e45a1 100644 --- a/admin/src/views/meeting/bookings.vue +++ b/admin/src/views/meeting/bookings.vue @@ -1,36 +1,15 @@ <template> <TableLayout :permissions="['business:bookings:query']"> <!-- 鎼滅储琛ㄥ崟 --> - <el-form - ref="searchForm" - slot="search-form" - :model="searchForm" - label-width="100px" - inline - > + <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-option - v-for="item in rooms" - :key="item.id" - :value="item.id" - :label="item.name" - /> + <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" @@ -42,52 +21,23 @@ </el-select> --> </el-form-item> <el-form-item label="浼氳涓婚" prop="name"> - <el-input - v-model="searchForm.name" - placeholder="璇疯緭鍏ヤ細璁富棰�" - @keypress.enter.native="search" - ></el-input> + <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ヤ細璁富棰�" @keypress.enter.native="search"></el-input> </el-form-item> <el-form-item label="棰勭害浜�" prop="realName"> - <el-input - v-model="searchForm.realName" - placeholder="璇疯緭鍏ラ绾︿汉" - @keypress.enter.native="search" - ></el-input> + <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.meetingStatus" - filterable - clearable - placeholder="璇烽�夋嫨鐘舵��" - > - <el-option - v-for="item in status" - :key="item.id" - :value="item.id" - :label="item.name" - /> + <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" - :default-time="['00:00:00', '23:59:59']" - 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> @@ -102,73 +52,35 @@ </el-form> <!-- 琛ㄦ牸鍜屽垎椤� --> <template v-slot:table-wrap> - <ul - class="toolbar" - v-permissions="[ - 'business:bookings:create', - 'business:bookings:exportExcel', - ]" - > + <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 - > + <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 - > + <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 - > + <el-table-column prop="name" label="浼氳涓婚" align="center" min-width="120px" show-overflow-tooltip> <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 - > + <el-table-column prop="roomName" label="浼氳瀹�" align="center" min-width="120px" show-overflow-tooltip> <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 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.meetingStatus == 1">鏈紑濮�</span> @@ -179,56 +91,34 @@ <!-- {{ row.status==0 ? '姝e父' : '鍙栨秷' }} --> </template> </el-table-column> - <el-table-column - prop="createDate" - label="鍒涘缓鏃堕棿" - align="center" - min-width="150px" - ></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="100" - align="center" - fixed="right" - > + <el-table-column v-if=" + containPermissions([ + 'business:bookings:update', + 'business:bookings:delete', + ]) + " label="鎿嶄綔" min-width="100" 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" @click="copy(row)">澶嶅埗</el-button> --> - <el-button v-if="row.meetingStatus == '1'" type="text" @click="cancelMeeting(row.id)" v-permissions="['business:bookings:update']">鎾ゅ洖</el-button> + <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 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> --> </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 - @success="search" - ref="operaBookingsDetailWindow" - /> + <OperaBookingsWindow ref="operaBookingsWindow" @success="handlePageChange" /> + <OperaBookingsDetailWindow @success="search" ref="operaBookingsDetailWindow" /> </TableLayout> </template> @@ -242,13 +132,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 } from '@/api/meeting/bookings' import { timeForMat } from '@/utils/util' export default { name: 'Bookings', extends: BaseTable, components: { TableLayout, Pagination, OperaBookingsWindow, OperaBookingsDetailWindow }, - data () { + data() { return { date: [], // 鎼滅储 @@ -290,12 +180,12 @@ link: 'https://dmtest.ahapp.net/meeting_h5/' // H5_LINK_ADDR } }, - provide () { + provide() { return { rooms: () => this.rooms } }, - created () { + created() { this.config({ module: '浼氳瀹ら瀹氫俊鎭〃', api: '/meeting/bookings', @@ -318,7 +208,7 @@ this.changeRadio('0') }, methods: { - changeRadio (e) { + changeRadio(e) { if (e === '0') { this.searchForm.startTime = timeForMat(0)[0] this.searchForm.endTime = timeForMat(0)[1] @@ -334,7 +224,7 @@ } this.search() }, - newTree (tree) { + newTree(tree) { if (tree == null) { return [] } @@ -351,12 +241,12 @@ 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' @@ -364,7 +254,7 @@ this.searchForm.endTime = '' 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(() => { @@ -373,7 +263,20 @@ .catch(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 => { + }) + }) + }, + cancelMeeting(id) { this.$dialog.messageWaring('鍙栨秷浼氳', '鏄惁鍙栨秷褰撳墠浼氳锛�') .then(() => { cancelById({ id }) @@ -385,7 +288,7 @@ }) }) }, - showDetail (id) { + showDetail(id) { bookingsDetail(id) .then(res => { this.$refs.operaBookingsDetailWindow.open('浼氳璇︽儏', res) @@ -393,7 +296,7 @@ .catch(e => { }) }, - editBookings (id) { + editBookings(id) { bookingsDetail(id) .then(res => { this.$refs.operaBookingsWindow.open('缂栬緫浼氳棰勭害', res) @@ -401,7 +304,7 @@ .catch(e => { }) }, - handlePageChange (pageIndex) { + handlePageChange(pageIndex) { this.__checkApi() this.tableData.pagination.pageIndex = pageIndex || this.tableData.pagination.pageIndex this.isWorking.search = true @@ -433,24 +336,29 @@ <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; } -- Gitblit v1.9.3