yudao-dev/src/views/specialEquipment/check/Content.vue
2024-02-23 16:32:01 +08:00

361 lines
7.8 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
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"
@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>
<!-- 添加巡检查看详情 -->
<addOrUpdata
v-if="addOrUpdateVisible"
ref="addOrUpdate"
@refreshDataList="getList" />
<edit
ref="content-edit"
v-if="editOpen"
@refreshDataList="getList"
@destroy="editOpen = 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';
export default {
name: 'SpecialEquipmentCheckConfig',
components: { addOrUpdata, add, edit, CheckOrderListTable },
mixins: [basicPageMixin],
data() {
return {
editOpen: 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,
},
// 表单参数
form: {},
basePath: '/base/equipment-check-order',
mode: null,
allSpecialEquipments: [],
};
},
created() {
this.initSearchBar();
this.getList();
},
methods: {
handleSubmit() {
this.$refs.add.dataFormSubmit();
},
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);
});
},
/** 编辑 */
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.userId,
// '/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>