yudao-dev/src/views/group/base/groupClasses/index.vue

250 lines
6.3 KiB
Vue
Raw Normal View History

2023-07-27 15:16:13 +08:00
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
2023-08-02 09:17:46 +08:00
<search-bar
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick"
/>
2023-07-27 15:16:13 +08:00
<!-- 列表 -->
2023-08-02 09:17:46 +08:00
<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>
2023-07-27 15:16:13 +08:00
</div>
</template>
<script>
2023-08-02 09:17:46 +08:00
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',
2023-08-21 11:12:23 +08:00
label: '班次时间',
minWidth: 100
2023-08-02 09:17:46 +08:00
},
{
prop: 'code',
label: '班次编码',
minWidth: 200
},
{
prop: 'status',
label: '班次状态'
2023-07-27 15:16:13 +08:00
},
2023-08-02 09:17:46 +08:00
{
prop: 'remark',
label: '备注'
}
]
export default {
name: "GroupClass",
components: { GroupClassAdd },
2023-07-27 15:16:13 +08:00
data() {
return {
2023-08-02 09:17:46 +08:00
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,
2023-08-03 11:18:03 +08:00
tableBtn: [
this.$auth.hasPermi('base:group-classes:update')
? {
type: 'edit',
btnName: '编辑'
}
: undefined,
{
type: 'cancel',
btnName: '作废'
},
this.$auth.hasPermi('base:group-classes:delete')
? {
type: 'delete',
btnName: '删除'
}
: undefined
].filter((v) => v),
tableH: this.tableHeight(260),
2023-07-27 15:16:13 +08:00
// 总条数
total: 0,
// 班次基础信息列表
list: [],
// 弹出层标题
2023-08-02 09:17:46 +08:00
addOrEditTitle: "",
2023-07-27 15:16:13 +08:00
// 是否显示弹出层
2023-08-02 09:17:46 +08:00
centervisible: false,
2023-07-27 15:16:13 +08:00
// 查询参数
queryParams: {
pageNo: 1,
2023-08-02 09:17:46 +08:00
pageSize: 20,
name: null
2023-07-27 15:16:13 +08:00
}
};
},
created() {
2023-08-02 09:17:46 +08:00
window.addEventListener('resize', () => {
2023-08-03 11:18:03 +08:00
this.tableH = this.tableHeight(260)
2023-08-02 09:17:46 +08:00
})
this.getList()
2023-07-27 15:16:13 +08:00
},
methods: {
2023-08-02 09:17:46 +08:00
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()
})
}
},
2023-07-27 15:16:13 +08:00
/** 查询列表 */
getList() {
2023-08-02 09:17:46 +08:00
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
}
2023-07-27 15:16:13 +08:00
});
},
2023-08-02 09:17:46 +08:00
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)
}
2023-07-27 15:16:13 +08:00
},
2023-08-02 09:17:46 +08:00
handleCancel() {
this.$refs.classList.formClear()
this.centervisible = false
this.addOrEditTitle = ''
2023-07-27 15:16:13 +08:00
},
2023-08-02 09:17:46 +08:00
handleConfirm() {
this.$refs.classList.submitForm()
2023-07-27 15:16:13 +08:00
},
2023-08-02 09:17:46 +08:00
successSubmit() {
this.handleCancel()
this.getList()
2023-07-27 15:16:13 +08:00
},
2023-08-02 09:17:46 +08:00
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 })
2023-07-27 15:16:13 +08:00
}).then(() => {
this.getList();
2023-08-02 09:17:46 +08:00
this.$modal.msgSuccess("操作成功");
2023-07-27 15:16:13 +08:00
}).catch(() => {});
},
2023-08-02 09:17:46 +08:00
/** 删除按钮操作 */
handleDelete(row) {
if (row.status) {
let _this = this
_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(() => {});
}
2023-07-27 15:16:13 +08:00
}
}
};
</script>