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/repair/Modal/ApproveModal.vue |  142 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 142 insertions(+), 0 deletions(-)

diff --git a/src/views/equipmentManagement/repair/Modal/ApproveModal.vue b/src/views/equipmentManagement/repair/Modal/ApproveModal.vue
new file mode 100644
index 0000000..74f3605
--- /dev/null
+++ b/src/views/equipmentManagement/repair/Modal/ApproveModal.vue
@@ -0,0 +1,142 @@
+<template>
+  <FormDialog
+    v-model="visible"
+    title="鎶ヤ慨瀹℃壒"
+    width="800px"
+    @confirm="handleSubmit"
+    @cancel="handleClose"
+    @close="handleClose"
+  >
+    <el-descriptions :column="2" border>
+      <el-descriptions-item label="璁惧鍚嶇О">
+        {{ detail.deviceName || "-" }}
+      </el-descriptions-item>
+      <el-descriptions-item label="瑙勬牸鍨嬪彿">
+        {{ detail.deviceModel || "-" }}
+      </el-descriptions-item>
+      <el-descriptions-item label="鎶ヤ慨鏃ユ湡">
+        {{ detail.repairTime || "-" }}
+      </el-descriptions-item>
+      <el-descriptions-item label="鎶ヤ慨浜�">
+        {{ detail.repairName || "-" }}
+      </el-descriptions-item>
+      <el-descriptions-item label="瀹℃壒浜�">
+        {{ detail.auditName || "-" }}
+      </el-descriptions-item>
+      <el-descriptions-item label="褰撳墠鐘舵��">
+        {{ statusText(detail.status) }}
+      </el-descriptions-item>
+      <el-descriptions-item label="鏁呴殰鐜拌薄" :span="2">
+        {{ detail.remark || "-" }}
+      </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 :value="0">閫氳繃</el-radio>
+            <el-radio :value="3">涓嶉�氳繃</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 { editRepair, getRepairById } from "@/api/equipmentManagement/repair";
+
+defineOptions({
+  name: "鎶ヤ慨瀹℃壒寮圭獥",
+});
+
+const emits = defineEmits(["ok"]);
+
+const visible = ref(false);
+const loading = ref(false);
+const id = ref();
+const detail = ref({});
+const formRef = ref();
+const form = ref({
+  decision: undefined, // 0 閫氳繃 3 涓嶉�氳繃
+  supervisoryName: undefined, // 鐩戠潱浜�
+});
+
+const rules = {
+  decision: [{ required: true, message: "璇烽�夋嫨瀹℃壒缁撴灉", trigger: "change" }],
+  supervisoryName: [{ required: true, message: "璇烽�夋嫨鐩戠潱浜�", trigger: "change" }],
+};
+
+const statusText = (status) => {
+  const map = {
+    0: "寰呯淮淇�",
+    1: "瀹岀粨",
+    2: "寰呭鏍�",
+    3: "瀹℃牳涓嶉�氳繃",
+  };
+  return map[status] ?? "-";
+};
+
+const loadDetail = async (repairId) => {
+  const { data } = await getRepairById(repairId);
+  detail.value = data ?? {};
+};
+
+const open = async (repairId) => {
+  id.value = repairId;
+  visible.value = true;
+  await nextTick();
+  await loadDetail(repairId);
+  form.value.decision = undefined;
+  form.value.supervisoryName = undefined;
+};
+
+const handleClose = () => {
+  visible.value = false;
+  id.value = undefined;
+  detail.value = {};
+  form.value.decision = undefined;
+  form.value.supervisoryName = undefined;
+};
+
+const updateStatus = async (status) => {
+  loading.value = true;
+  try {
+    const { code } = await editRepair({ id: id.value, status, supervisoryName: form.value.supervisoryName });
+    if (code === 200) {
+      ElMessage.success("瀹℃壒鎴愬姛");
+      emits("ok");
+      handleClose();
+    }
+  } finally {
+    loading.value = false;
+  }
+};
+
+const handleSubmit = async () => {
+  if (detail.value?.status !== 2) {
+    ElMessage.warning("浠呭緟瀹℃牳鐘舵�佸彲瀹℃壒");
+    return;
+  }
+  await formRef.value?.validate(async (valid) => {
+    if (!valid) return;
+    const isApprove = form.value.decision === 0;
+    ElMessageBox.confirm(`纭瀹℃壒${isApprove ? "閫氳繃" : "涓嶉�氳繃"}锛焋, "鎻愮ず", {
+      confirmButtonText: "纭畾",
+      cancelButtonText: "鍙栨秷",
+      type: "warning",
+    }).then(() => updateStatus(form.value.decision));
+  });
+};
+
+defineExpose({ open });
+</script>
+
+<style scoped></style>
+

--
Gitblit v1.9.3