yudao-dev/src/views/specialEquipment/check/Content.vue
2024-02-29 15:54:49 +08:00

382 lines
8.3 KiB
Vue

<!--
filename: Content.vue
author: liubin
date: 2023-12-12 13:53:22
description: 巡检单设置
-->
<template>
<div class="app-container SpecialEquipmentCheckConfig">
<!-- 搜索工作栏 -->
<SearchBar
:formConfigs="searchBarFormConfig"
ref="search-bar"
@headBtnClick="handleSearchBarBtnClick" />
<CheckOrderListTable
ref="check-order-list-table"
:table-data="list"
:page="queryParams.pageNo"
:limit="queryParams.pageSize"
:permissionGuard="checkConfirmPermission"
@edit="handleEdit"
@detail="handleDetail"
@delete="handleDelete"
@confirm="handleConfirm" />
<!-- 分页组件 -->
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
@pagination="getList" />
<!-- 对话框(添加 / 修改) -->
<base-dialog
:dialogTitle="title"
:dialogVisible="open"
@close="cancel"
@cancel="cancel"
@confirm="handleSubmit">
<add ref="add" @refreshDataList="successSubmit" />
</base-dialog>
<edit
ref="content-edit"
v-if="editOpen"
@refreshDataList="getList"
@destroy="editOpen = false" />
<AddCheckDet
ref="content-detail"
v-if="detOpen"
@refreshDataList="getList"
@destroy="detOpen = false" />
</div>
</template>
<script>
import basicPageMixin from '@/mixins/lb/basicPageMixin';
import addOrUpdata from './add-or-updata.vue';
import add from './Content-add.vue';
import { parseTime } from '../../core/mixins/code-filter';
import CheckOrderListTable from './CheckOrderListTable.vue';
import edit from './Content-edit.vue';
import AddCheckDet from './Content-add_detail.vue';
export default {
name: 'SpecialEquipmentCheckConfig',
components: { addOrUpdata, add, edit, AddCheckDet, CheckOrderListTable },
mixins: [basicPageMixin],
data() {
return {
editOpen: false,
detOpen: false,
addOrUpdateVisible: false,
addOrEditTitle: '',
searchBarKeys: ['name'],
tableBtn: [
{
type: 'confirm',
btnName: '确认',
showTip: '确认',
},
this.$auth.hasPermi('equipment:check-setting:update')
? {
type: 'edit',
btnName: '修改',
}
: undefined,
{
type: 'detail',
btnName: '巡检内容详情',
},
this.$auth.hasPermi('equipment:check-setting:delete')
? {
type: 'delete',
btnName: '删除',
}
: undefined,
].filter((v) => v),
tableProps: [
{
prop: 'name',
label: '巡检单名称',
width: 100,
showOverflowtooltip: true,
},
{
prop: 'department',
label: '部门',
width: 100,
showOverflowtooltip: true,
},
{
prop: 'planCheckTime',
label: '巡检时间',
showOverflowtooltip: true,
filter: parseTime,
},
{
prop: 'confirmDueTime',
label: '确认截止时间',
showOverflowtooltip: true,
filter: parseTime,
// filter: (val) =>
// val != null && val > 24
// ? `${(val - (val % 24)) / 24}天${val % 24}小时`
// : `${val}小时`,
},
{ prop: 'remark', label: '备注' },
],
searchBarFormConfig: [
{
type: 'input',
label: '巡检单名称',
placeholder: '请输入巡检单名称',
param: 'name',
},
{
type: 'button',
btnName: '查询',
name: 'search',
color: 'primary',
},
{
type: 'separate',
},
{
type: this.$auth.hasPermi('equipment:check-setting:create')
? 'button'
: '',
btnName: '新增',
name: 'add',
plain: true,
color: 'success',
},
{
type: 'button',
btnName: '导出',
name: 'export',
plain: true,
color: 'warning',
},
{
type: 'button',
btnName: '批量确认',
name: 'batch-confirm',
plain: true,
color: 'primary',
},
],
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
name: null,
status: 1,
special: true,
},
// 表单参数
form: {},
basePath: '/base/equipment-check-order',
mode: null,
allSpecialEquipments: [],
};
},
created() {
this.initSearchBar();
this.getList();
},
methods: {
async handleSubmit() {
const id = await this.$refs.add.dataFormSubmit();
setTimeout(() => {
this.handleAddDetail(id);
}, 500);
},
handleAddDetail(id) {
this.detOpen = true;
this.$nextTick(() => {
this.$refs['content-detail'].init({ id });
});
},
successSubmit() {
this.cancel();
this.getList();
},
initSearchBar() {
this.http('/base/core-equipment/listAll', 'get').then(({ data }) => {
this.allSpecialEquipments = data.filter((item) => item.special);
this.setSearchBarEquipmentList(data.filter((item) => item.special));
});
},
setSearchBarEquipmentList(eqList) {
this.$set(
this.searchBarFormConfig[2],
'selectOptions',
eqList.map((item) => ({
name: item.name,
id: item.id,
}))
);
},
/** 查询列表 */
getList() {
this.loading = true;
// 执行查询
this.recv(this.queryParams).then((response) => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
});
},
/** 取消按钮 */
cancel() {
this.$refs.add.reset();
this.open = false;
this.title = '';
},
/** search bar click */
async searchBarClicked(btn) {
switch (btn.btnName) {
/** 批量确认 */
case 'batch-confirm':
if (this.$refs['check-order-list-table'].selectedOrder.length == 0) {
this.$message.warning('请选择待确认的巡检单');
return;
}
const res = await this.$axios({
url:
'/base/equipment-check-order/confirm?confirmPerson=' +
this.$store.getters.userId,
method: 'put',
data: this.$refs['check-order-list-table'].selectedOrder.map(
(item) => item.id
),
});
if (res.code == 0) {
this.$message.success('确认成功');
this.getList();
}
break;
}
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
this.getList();
},
/** 新增按钮操作 */
handleAdd() {
this.open = true;
this.title = '新增巡检单';
this.$nextTick(() => {
this.$refs.add.init();
});
},
/** 修改按钮操作 */
handleUpdate(row) {
this.open = true;
this.title = '修改巡检设置';
this.$nextTick(() => {
this.$refs.add.init(row);
});
},
/** 按钮、选择权限 */
checkConfirmPermission(row) {
const isAdmin = false; // 后续再修改
return !row.confirmDueTime || row.confirmDueTime >= new Date().getTime() || isAdmin;
},
/** 编辑 */
handleEdit(row, detail) {
this.editOpen = true;
this.$nextTick(() => {
this.$refs['content-edit'].init(row, detail ?? false);
});
},
/** 确认巡检单 */
handleConfirm(row) {
const id = row.id;
this.$modal
.confirm('是否确认巡检单"' + row.name + '"?')
.then(() => {
return this.$axios({
url:
'/base/equipment-check-order/confirm?confirmPerson=' +
this.$store.getters.nickname,
// '/base/equipment-check-order/confirm?ids=' + JSON.stringify([id]).replaceAll("\"", ''),
method: 'put',
data: [id],
});
})
.then((res) => {
this.getList();
res.code == 0 && this.$modal.msgSuccess('确认成功');
res.code != 0 && this.$modal.msgError('确认失败');
})
.catch(() => {});
},
/** 删除巡检单 */
handleDelete(row) {
const id = row.id;
this.$modal
.confirm('是否确认删除巡检单"' + row.name + '"?')
.then(() => {
return this.del({ id });
})
.then(() => {
this.getList();
this.$modal.msgSuccess('删除成功');
})
.catch(() => {});
},
handleDetail(row) {
this.handleEdit(row, true);
},
/** 导出按钮操作 */
handleExport() {
this.$modal
.confirm('是否确认导出所有巡检单?')
.then(() => {
this.exportLoading = true;
return this.$axios({
url: '/base/equipment-check-order/export-excel',
params: {
name: this.queryParams.name,
status: 1,
special: true,
},
responseType: 'blob',
});
})
.then((response) => {
this.$download.excel(response, '巡检单待确认.xls');
this.exportLoading = false;
})
.catch(() => {});
},
},
};
</script>