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