From 727e9cb845a70cb99ded092f262e0d4712eaa33b Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 30 三月 2026 13:49:00 +0800
Subject: [PATCH] 酒泉 1.设备功能迁移

---
 src/views/equipmentManagement/upkeep/Form/ApproveModal.vue |  144 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 144 insertions(+), 0 deletions(-)

diff --git a/src/views/equipmentManagement/upkeep/Form/ApproveModal.vue b/src/views/equipmentManagement/upkeep/Form/ApproveModal.vue
new file mode 100644
index 0000000..c7a9329
--- /dev/null
+++ b/src/views/equipmentManagement/upkeep/Form/ApproveModal.vue
@@ -0,0 +1,144 @@
+<template>
+  <FormDialog
+    v-model="visible"
+    title="瀹氭椂浠诲姟瀹℃壒"
+    width="800px"
+    @confirm="handleSubmit"
+    @cancel="handleClose"
+    @close="handleClose"
+  >
+    <el-descriptions :column="2" border>
+      <el-descriptions-item label="浠诲姟鍚嶇О">
+        {{ detail.taskName || "-" }}
+      </el-descriptions-item>
+      <el-descriptions-item label="瑙勬牸鍨嬪彿">
+        {{ detail.deviceModel || "-" }}
+      </el-descriptions-item>
+      <el-descriptions-item label="棰戞">
+        {{ frequencyText(detail.frequencyType) }}
+      </el-descriptions-item>
+      <el-descriptions-item label="寮�濮嬫棩鏈熶笌鏃堕棿">
+        {{ detail.frequencyDetail || "-" }}
+      </el-descriptions-item>
+      <el-descriptions-item label="鐧昏浜�">
+        {{ detail.registrant || "-" }}
+      </el-descriptions-item>
+      <el-descriptions-item label="鐧昏鏃ユ湡">
+        {{ detail.registrationDate || "-" }}
+      </el-descriptions-item>
+      <el-descriptions-item label="褰撳墠鐘舵��">
+        {{ statusText(detail.status) }}
+      </el-descriptions-item>
+      <el-descriptions-item label="澶囨敞" :span="2">
+        {{ detail.remarks || "-" }}
+      </el-descriptions-item>
+    </el-descriptions>
+    <div style="margin-top: 16px">
+      <el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="瀹℃壒缁撴灉" prop="decision">
+          <el-radio-group v-model="form.decision">
+            <el-radio label="瀹℃牳閫氳繃">瀹℃牳閫氳繃</el-radio>
+            <el-radio label="瀹℃牳涓嶉�氳繃">瀹℃牳涓嶉�氳繃</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="鐩戠潱浜�" prop="supervisoryName">
+          <el-input v-model="form.supervisoryName" placeholder="璇疯緭鍏ョ洃鐫d汉" clearable style="width: 100%" />
+        </el-form-item>
+      </el-form>
+    </div>
+  </FormDialog>
+</template>
+
+<script setup>
+import { nextTick, ref } from "vue";
+import { ElMessage, ElMessageBox } from "element-plus";
+import FormDialog from "@/components/Dialog/FormDialog.vue";
+import { deviceMaintenanceTaskEdit } from "@/api/equipmentManagement/upkeep";
+
+defineOptions({
+  name: "瀹氭椂浠诲姟瀹℃壒寮圭獥",
+});
+
+const emits = defineEmits(["ok"]);
+
+const visible = ref(false);
+const loading = ref(false);
+const detail = ref({});
+const formRef = ref();
+const form = ref({
+  decision: undefined, // 瀹℃牳閫氳繃 / 瀹℃牳涓嶉�氳繃
+  supervisoryName: undefined, // 鐩戠潱浜�
+});
+
+const rules = {
+  decision: [{ required: true, message: "璇烽�夋嫨瀹℃壒缁撴灉", trigger: "change" }],
+  supervisoryName: [{ required: true, message: "璇烽�夋嫨鐩戠潱浜�", trigger: "change" }],
+};
+
+const statusText = (status) => status || "-";
+
+const frequencyText = (type) => {
+  const map = {
+    DAILY: "姣忔棩",
+    WEEKLY: "姣忓懆",
+    MONTHLY: "姣忔湀",
+    QUARTERLY: "瀛e害",
+  };
+  return map[type] ?? "-";
+};
+
+const open = async (row) => {
+  detail.value = { ...(row || {}) };
+  visible.value = true;
+  await nextTick();
+  form.value.decision = undefined;
+  form.value.supervisoryName = undefined;
+};
+
+const handleClose = () => {
+  visible.value = false;
+  detail.value = {};
+  form.value.decision = undefined;
+  form.value.supervisoryName = undefined;
+};
+
+const updateStatus = async (status) => {
+  loading.value = true;
+  try {
+    const payload = { ...(detail.value || {}), status, supervisoryName: form.value.supervisoryName };
+    const { code } = await deviceMaintenanceTaskEdit(payload);
+    if (code === 200) {
+      ElMessage.success("瀹℃壒鎴愬姛");
+      emits("ok");
+      handleClose();
+    }
+  } finally {
+    loading.value = false;
+  }
+};
+
+const handleSubmit = async () => {
+  if (detail.value?.status === "瀹℃牳閫氳繃") {
+    ElMessage.warning("瀹℃牳閫氳繃鍚庝笉鍙啀娆″鎵�");
+    return;
+  }
+  await formRef.value?.validate(async (valid) => {
+    if (!valid) return;
+    const isApprove = form.value.decision === "瀹℃牳閫氳繃";
+    ElMessageBox.confirm(
+      `纭瀹℃壒${isApprove ? "閫氳繃" : "涓嶉�氳繃"}锛焋,
+      "鎻愮ず",
+      {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning",
+      }
+    ).then(() => updateStatus(form.value.decision));
+  });
+};
+
+defineExpose({ open });
+</script>
+
+<style scoped></style>
+

--
Gitblit v1.9.3