From f15c2ea99e9ede2a6e7ee3a206ba08d3172aa36d Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期六, 16 五月 2026 10:46:55 +0800
Subject: [PATCH] feat(equipment): 添加设备维保和巡检任务的启用状态功能
---
src/views/equipmentManagement/inspectionManagement/index.vue | 66 ++++++++++++++++++++++++++++++++-
1 files changed, 64 insertions(+), 2 deletions(-)
diff --git a/src/views/equipmentManagement/inspectionManagement/index.vue b/src/views/equipmentManagement/inspectionManagement/index.vue
index cd7369d..b0f4f58 100644
--- a/src/views/equipmentManagement/inspectionManagement/index.vue
+++ b/src/views/equipmentManagement/inspectionManagement/index.vue
@@ -23,6 +23,17 @@
style="width: 220px"
/>
</el-form-item>
+ <el-form-item v-show="activeRadio === 'taskManage'" label="鏄惁鍚敤">
+ <el-select
+ v-model="queryParams.isEnabled"
+ placeholder="璇烽�夋嫨"
+ clearable
+ style="width: 140px"
+ >
+ <el-option label="鍚敤" :value="1" />
+ <el-option label="绂佺敤" :value="0" />
+ </el-select>
+ </el-form-item>
<el-form-item v-show="activeRadio === 'task'" label="鎵ц鏃ユ湡">
<el-date-picker
v-model="queryDate"
@@ -90,6 +101,15 @@
<span v-else class="no-data">--</span>
</div>
</template>
+ <template #isEnabledSwitch="{ row }">
+ <el-switch
+ v-model="row.isEnabled"
+ :active-value="1"
+ :inactive-value="0"
+ :loading="row.enableSwitchLoading"
+ :before-change="() => handleTimingTaskEnableBeforeChange(row)"
+ />
+ </template>
</PIMTable>
</el-card>
<form-dia ref="formDia" @closeDia="handleQuery" />
@@ -99,13 +119,14 @@
<script setup>
import { Delete, Plus } from "@element-plus/icons-vue";
-import { ElMessageBox } from "element-plus";
+import { ElMessage, ElMessageBox } from "element-plus";
import { getCurrentInstance, nextTick, onMounted, reactive, ref } from "vue";
import dayjs from "dayjs";
import PIMTable from "@/components/PIMTable/PIMTable.vue";
import FormDia from "@/views/equipmentManagement/inspectionManagement/components/formDia.vue";
import ViewFiles from "@/views/equipmentManagement/inspectionManagement/components/viewFiles.vue";
import {
+ changeTimingTaskEnable,
delTimingTask,
inspectionTaskList,
timingTaskList,
@@ -119,6 +140,7 @@
const queryParams = reactive({
taskName: "",
areaId: undefined,
+ isEnabled: undefined,
createTimeStart: undefined,
createTimeEnd: undefined,
});
@@ -190,6 +212,14 @@
{ prop: "registrant", label: "鐧昏浜�", minWidth: 100 },
{ prop: "createTime", label: "鐧昏鏃ユ湡", width: 130 },
]);
+
+const isEnabledColumn = {
+ prop: "isEnabled",
+ label: "鏄惁鍚敤",
+ minWidth: 110,
+ dataType: "slot",
+ slot: "isEnabledSwitch",
+};
// 宸℃鐘舵�佸垪锛堜粎瀹氭椂浠诲姟璁板綍鏄剧ず锛�
const inspectionStatusColumn = {
@@ -271,13 +301,14 @@
const radioChange = (value) => {
if (value === "taskManage") {
const operationColumn = getOperationColumn(["edit"]);
- tableColumns.value = [...columns.value, ...(operationColumn ? [operationColumn] : [])];
+ tableColumns.value = [...columns.value, isEnabledColumn, ...(operationColumn ? [operationColumn] : [])];
} else {
const operationColumn = getOperationColumn(["viewFile"]);
// 瀹氭椂浠诲姟璁板綍娣诲姞宸℃鐘舵�佸垪
tableColumns.value = [...columns.value, inspectionStatusColumn, inspectionResultColumn, ...(operationColumn ? [operationColumn] : [])];
// 鍒囨崲鍒板畾鏃朵换鍔¤褰曟椂锛岄粯璁ゆ煡璇㈠綋澶�
queryDate.value = dayjs().format("YYYY-MM-DD");
+ queryParams.isEnabled = undefined;
}
pageNum.value = 1;
pageSize.value = 10;
@@ -319,6 +350,12 @@
const rawData = res?.data?.records || [];
tableData.value = rawData.map((item) => {
const processedItem = { ...item };
+ if (activeRadio.value === "taskManage") {
+ processedItem.isEnabled = Number(
+ processedItem.isEnabled ?? processedItem.status ?? 1
+ );
+ processedItem.enableSwitchLoading = false;
+ }
if (processedItem.inspector) {
if (typeof processedItem.inspector === "string") {
processedItem.inspector = processedItem.inspector
@@ -343,6 +380,7 @@
const resetQuery = () => {
queryParams.taskName = "";
queryParams.areaId = undefined;
+ queryParams.isEnabled = undefined;
queryParams.createTimeStart = undefined;
queryParams.createTimeEnd = undefined;
// 瀹氭椂浠诲姟璁板綍鏃堕噸缃负褰撳ぉ
@@ -383,6 +421,30 @@
selectedRows.value = selection;
};
+const handleTimingTaskEnableBeforeChange = async (row) => {
+ if (row.enableSwitchLoading) {
+ return false;
+ }
+ const nextValue = Number(row.isEnabled) === 1 ? 0 : 1;
+ row.enableSwitchLoading = true;
+ try {
+ const res = await changeTimingTaskEnable({
+ id: row.id,
+ isEnabled: nextValue,
+ });
+ if (res?.code !== 200) {
+ throw new Error(res?.msg || "鏇存柊澶辫触");
+ }
+ ElMessage.success("鍚敤鐘舵�佸凡鏇存柊");
+ return true;
+ } catch (error) {
+ proxy.$modal.msgError(error?.message || "鍚敤鐘舵�佹洿鏂板け璐�");
+ return false;
+ } finally {
+ row.enableSwitchLoading = false;
+ }
+};
+
const handleOut = () => {
ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
confirmButtonText: "纭",
--
Gitblit v1.9.3