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/upkeep/index.vue | 65 +++++++++++++++++++++++++++-----
1 files changed, 54 insertions(+), 11 deletions(-)
diff --git a/src/views/equipmentManagement/upkeep/index.vue b/src/views/equipmentManagement/upkeep/index.vue
index 765a5c9..419e9aa 100644
--- a/src/views/equipmentManagement/upkeep/index.vue
+++ b/src/views/equipmentManagement/upkeep/index.vue
@@ -15,10 +15,10 @@
@change="getScheduledTableData"
/>
</el-form-item>
- <el-form-item label="浠诲姟鐘舵��">
- <el-select v-model="scheduledFilters.status" placeholder="璇烽�夋嫨浠诲姟鐘舵��" clearable style="width: 200px">
- <el-option label="鍚敤" value="1" />
- <el-option label="鍋滅敤" value="0" />
+ <el-form-item label="鏄惁鍚敤">
+ <el-select v-model="scheduledFilters.isEnabled" placeholder="璇烽�夋嫨鏄惁鍚敤" clearable style="width: 200px">
+ <el-option label="鍚敤" :value="1" />
+ <el-option label="绂佺敤" :value="0" />
</el-select>
</el-form-item>
<el-form-item>
@@ -57,9 +57,14 @@
@selection-change="handleScheduledSelectionChange"
@pagination="changeScheduledPage"
>
- <template #statusRef="{ row }">
- <el-tag v-if="row.status === 1" type="success">鍚敤</el-tag>
- <el-tag v-if="row.status === 0" type="danger">鍋滅敤</el-tag>
+ <template #isEnabledRef="{ row }">
+ <el-switch
+ v-model="row.isEnabled"
+ :active-value="1"
+ :inactive-value="0"
+ :loading="row.enableSwitchLoading"
+ :before-change="() => handleScheduledEnableBeforeChange(row)"
+ />
</template>
<template #operation="{ row }">
<el-button
@@ -243,6 +248,7 @@
delUpkeep,
deviceMaintenanceTaskList,
deviceMaintenanceTaskDel,
+ deviceMaintenanceTaskChangeEnable,
} from '@/api/equipmentManagement/upkeep'
import {
listMaintenanceTaskFiles,
@@ -286,7 +292,7 @@
// 瀹氭椂浠诲姟绠$悊tab鐩稿叧鍙橀噺
const scheduledFilters = reactive({
taskName: '',
- status: '',
+ isEnabled: undefined,
})
const scheduledDataList = ref([])
@@ -344,6 +350,14 @@
},
{ prop: "registrant", label: "鐧昏浜�", minWidth: 100 },
{ prop: "registrationDate", label: "鐧昏鏃ユ湡", minWidth: 100 },
+ {
+ label: "鏄惁鍚敤",
+ prop: "isEnabled",
+ dataType: "slot",
+ slot: "isEnabledRef",
+ align: "center",
+ width: "120px",
+ },
{
fixed: "right",
label: "鎿嶄綔",
@@ -440,11 +454,16 @@
current: scheduledPagination.currentPage,
size: scheduledPagination.pageSize,
taskName: scheduledFilters.taskName || undefined,
- status: scheduledFilters.status || undefined,
+ isEnabled: scheduledFilters.isEnabled,
}
const { code, data } = await deviceMaintenanceTaskList(params)
if (code === 200) {
- scheduledDataList.value = data?.records || []
+ const records = data?.records || []
+ scheduledDataList.value = records.map((item) => ({
+ ...item,
+ isEnabled: Number(item.isEnabled ?? item.status ?? 1),
+ enableSwitchLoading: false,
+ }))
scheduledPagination.total = data?.total || 0
}
} catch (error) {
@@ -454,7 +473,7 @@
const resetScheduledFilters = () => {
scheduledFilters.taskName = ''
- scheduledFilters.status = ''
+ scheduledFilters.isEnabled = undefined
getScheduledTableData()
}
@@ -496,6 +515,30 @@
}
}
+const handleScheduledEnableBeforeChange = async (row) => {
+ if (row.enableSwitchLoading) {
+ return false
+ }
+ const nextValue = Number(row.isEnabled) === 1 ? 0 : 1
+ row.enableSwitchLoading = true
+ try {
+ const res = await deviceMaintenanceTaskChangeEnable({
+ id: row.id,
+ isEnabled: nextValue,
+ })
+ if (res?.code !== 200) {
+ throw new Error(res?.msg || '鏇存柊澶辫触')
+ }
+ ElMessage.success('鍚敤鐘舵�佸凡鏇存柊')
+ return true
+ } catch (error) {
+ ElMessage.error(error?.message || '鍚敤鐘舵�佹洿鏂板け璐�')
+ return false
+ } finally {
+ row.enableSwitchLoading = false
+ }
+}
+
const handleScheduledOut = () => {
ElMessage.info('瀵煎嚭瀹氭椂浠诲姟鍔熻兘寰呭疄鐜�')
}
--
Gitblit v1.9.3