<template> <div class="app-container"> <!-- 搜索工作栏 --> <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" /> <!-- 列表 --> <base-table :page="queryParams.pageNo" :limit="queryParams.pageSize" :table-props="tableProps" :table-data="list" :max-height="tableH" > <method-btn v-if="tableBtn.length" slot="handleBtn" :width="120" label="操作" :method-list="tableBtn" @clickBtn="handleClick" /> </base-table> <pagination :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" :total="total" @pagination="getList" /> <!-- 新增 --> <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="centervisible" @cancel="handleCancel" @confirm="handleConfirm" :before-close="handleCancel" width='70%' > <group-class-add ref="classList" @successSubmit="successSubmit" /> </base-dialog> </div> </template> <script> import { getGroupClassesPage, deleteGroupClasses, updateGroupClasses } from "@/api/base/groupClasses"; import GroupClassAdd from './components/groupClassAdd.vue' import { formatDate } from '@/utils' const tableProps = [ { prop: 'enableTimeStr', label: '生效时段', minWidth: 300 }, { prop: 'name', label: '班次名称' }, { prop: 'timeStr', label: '班次时间', minWidth: 100 }, { prop: 'code', label: '班次编码', minWidth: 200 }, { prop: 'status', label: '班次状态' }, { prop: 'remark', label: '备注' } ] export default { name: "GroupClass", components: { GroupClassAdd }, data() { return { formConfig: [ { type: 'input', label: '班次名称', placeholder: '班次名称', param: 'name' }, { type: 'button', btnName: '查询', name: 'search', color: 'primary' }, { type: 'separate' }, { type: this.$auth.hasPermi('base:group-classes:create') ? 'button' : '', btnName: '新增', name: 'add', color: 'success', plain: true } ], tableProps, tableBtn: [ this.$auth.hasPermi('base:group-classes:update') ? { type: 'edit', btnName: '编辑' } : undefined, { type: 'cancel', btnName: '作废', showParam: { type: '&', data: [ { type: 'unequal', name: 'status', value: '不可用' } ] } }, this.$auth.hasPermi('base:group-classes:delete') ? { type: 'delete', btnName: '删除' } : undefined ].filter((v) => v), tableH: this.tableHeight(260), // 总条数 total: 0, // 班次基础信息列表 list: [], // 弹出层标题 addOrEditTitle: "", // 是否显示弹出层 centervisible: false, // 查询参数 queryParams: { pageNo: 1, pageSize: 20, name: null } }; }, created() { window.addEventListener('resize', () => { this.tableH = this.tableHeight(260) }) this.getList() }, methods: { buttonClick(val) { switch (val.btnName) { case 'search': this.queryParams.pageNo = 1; this.queryParams.name = val.name this.getList() break default: this.addOrEditTitle = '新增' this.centervisible = true this.$nextTick(() => { this.$refs.classList.init() }) } }, /** 查询列表 */ getList() { getGroupClassesPage(this.queryParams).then(res => { if (res.code === 0 && res.data.list.length > 0) { res.data.list.map(item => { item.enableTimeStr = formatDate(item.enableTime) + '至' + (item.disableTime ? formatDate(item.disableTime) : '永久') item.timeStr = item.startTime.slice(0, 5) + '-' + item.endTime.slice(0, 5) item.status = item.status === true ? '可用' : '不可用' }) this.list = res.data.list; this.total = res.data.total; } else { this.list = [] this.total = 0 } }); }, handleClick(val) { switch (val.type) { case 'edit': this.addOrEditTitle = '编辑' this.$nextTick(() => { this.$refs.classList.init(val.data.id) }) this.centervisible = true break case 'cancel': this.discard(val.data) break default: this.handleDelete(val.data) } }, handleCancel() { this.$refs.classList.formClear() this.centervisible = false this.addOrEditTitle = '' }, handleConfirm() { this.$refs.classList.submitForm() }, successSubmit() { this.handleCancel() this.getList() }, discard(row) { let obj = {} obj.id = row.id obj.startTime = row.startTime obj.endTime = row.endTime obj.enableTime = row.enableTime obj.disableTime = Date.parse(new Date()) this.$modal.confirm('是否确认作废班次名称为"' + row.name + '"的数据项?').then(function() { return updateGroupClasses({ ...obj }) }).then(() => { this.getList(); this.$modal.msgSuccess("操作成功"); }).catch(() => {}); }, /** 删除按钮操作 */ handleDelete(row) { console.log(row) let _this = this if (row.status === '可用') {// 可用 _this.$modal.confirm('删除的班次"' + row.name + '"可能会影响交接班计划,请点取消再次确认!').then(function() { return _this.$modal.confirm('是否确认删除班次名称为"' + row.name + '"的数据项?').then(function() { return deleteGroupClasses(row.id); }).then(() => { _this.getList(); _this.$modal.msgSuccess("删除成功"); }).catch(() => {}); }) } else { _this.$modal.confirm('是否确认删除班次名称为"' + row.name + '"的数据项?').then(function() { return deleteGroupClasses(row.id); }).then(() => { _this.getList(); _this.$modal.msgSuccess("删除成功"); }).catch(() => {}); } } } }; </script>