From 10a440fac0dd665bf4af78e1e3c913dcf893bf10 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 02 六月 2026 10:00:28 +0800
Subject: [PATCH] 新疆马铃薯 1.设备保养、设备验收添加验收人

---
 src/views/equipmentManagement/repair/Modal/RepairModal.vue |  203 ++++++++++++++++++++++++++++++++++----------------
 1 files changed, 137 insertions(+), 66 deletions(-)

diff --git a/src/views/equipmentManagement/repair/Modal/RepairModal.vue b/src/views/equipmentManagement/repair/Modal/RepairModal.vue
index 022ae6f..b7c3d35 100644
--- a/src/views/equipmentManagement/repair/Modal/RepairModal.vue
+++ b/src/views/equipmentManagement/repair/Modal/RepairModal.vue
@@ -59,43 +59,96 @@
         </el-col>
         <el-col :span="12">
           <el-form-item label="鎶ヤ慨鏃ユ湡">
-            <el-date-picker
-              v-model="form.repairTime"
-              placeholder="璇烽�夋嫨鎶ヤ慨鏃ユ湡"
-              format="YYYY-MM-DD"
-              value-format="YYYY-MM-DD"
-              type="date"
-              clearable
-              style="width: 100%"
-            />
+            <el-date-picker v-model="form.repairTime"
+                            placeholder="璇烽�夋嫨鎶ヤ慨鏃ユ湡"
+                            format="YYYY-MM-DD"
+                            value-format="YYYY-MM-DD"
+                            type="date"
+                            clearable
+                            style="width: 100%"
+                            :disabled="operationType === 'view'" />
           </el-form-item>
         </el-col>
         <el-col :span="12">
           <el-form-item label="鎶ヤ慨浜�">
-            <el-input v-model="form.repairName" placeholder="璇疯緭鍏ユ姤淇汉" />
+            <el-input v-model="form.repairName"
+                      placeholder="璇疯緭鍏ユ姤淇汉"
+                      :disabled="operationType === 'view'" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="鎶ヤ慨鎶ヤ慨椤圭洰">
+            <el-input v-model="form.machineryCategory"
+                      placeholder="璇疯緭鍏ユ姤淇姤淇」鐩�"
+                      :disabled="operationType === 'view'" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="缁翠慨浜�">
+            <el-input v-model="form.maintenanceName"
+                      placeholder="璇疯緭鍏ョ淮淇汉濮撳悕"
+                      :disabled="operationType === 'view'" />
           </el-form-item>
         </el-col>
       </el-row>
       <el-row v-if="id">
         <el-col :span="12">
           <el-form-item label="鎶ヤ慨鐘舵��">
-            <el-select v-model="form.status">
-              <el-option label="寰呯淮淇�" :value="0" />
-              <el-option label="瀹岀粨" :value="1" />
-              <el-option label="澶辫触" :value="2" />
+            <el-select v-model="form.status"
+                       disabled>
+              <el-option label="寰呯淮淇�"
+                         :value="0"></el-option>
+              <el-option label="宸查獙鏀�"
+                         :value="1"></el-option>
+              <el-option label="澶辫触"
+                         :value="2"></el-option>
             </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <!-- 楠屾敹淇℃伅灞曠ず -->
+      <el-row v-if="id && (form.status === 1 || form.status === 3)">
+        <el-col :span="12">
+          <el-form-item label="楠屾敹浜�">
+            <el-input v-model="form.acceptanceName"
+                      disabled />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="楠屾敹鏃堕棿">
+            <el-input v-model="form.acceptanceTime"
+                      disabled />
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="楠屾敹澶囨敞">
+            <el-input v-model="form.acceptanceRemark"
+                      type="textarea"
+                      :rows="2"
+                      disabled />
           </el-form-item>
         </el-col>
       </el-row>
       <el-row>
         <el-col :span="24">
           <el-form-item label="鏁呴殰鐜拌薄">
-            <el-input
-              v-model="form.remark"
-              :rows="2"
-              type="textarea"
-              placeholder="璇疯緭鍏ユ晠闅滅幇璞�"
-            />
+            <el-input v-model="form.remark"
+                      :rows="2"
+                      type="textarea"
+                      placeholder="璇疯緭鍏ユ晠闅滅幇璞�"
+                      :disabled="operationType === 'view'" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row v-if="operationType !== 'view'"
+              :gutter="30">
+        <el-col :span="24">
+          <el-form-item label="闄勪欢"
+                        prop="attachmentIds">
+            <FileUpload v-model:file-list="form.storageBlobDTOs"
+                        :disabled="operationType === 'view'" />
           </el-form-item>
         </el-col>
       </el-row>
@@ -104,21 +157,18 @@
 </template>
 
 <script setup>
-import { nextTick, ref, unref } from "vue";
-import dayjs from "dayjs";
-import { ElMessage } from "element-plus";
-import FormDialog from "@/components/Dialog/FormDialog.vue";
-import useFormData from "@/hooks/useFormData";
-import useUserStore from "@/store/modules/user";
-import {
-  addRepair,
-  editRepair,
-  getRepairById,
-} from "@/api/equipmentManagement/repair";
-import {
-  getDeviceAreaTree,
-  getDeviceAreaTreeWithDevices,
-} from "@/api/equipmentManagement/deviceArea";
+  import FormDialog from "@/components/Dialog/FormDialog.vue";
+  import FileUpload from "@/components/AttachmentUpload/file/index.vue";
+  import {
+    addRepair,
+    editRepair,
+    getRepairById,
+  } from "@/api/equipmentManagement/repair";
+  import { ElMessage } from "element-plus";
+  import dayjs from "dayjs";
+  import useFormData from "@/hooks/useFormData";
+  import { getDeviceLedger } from "@/api/equipmentManagement/ledger";
+  import useUserStore from "@/store/modules/user";
 
 defineOptions({
   name: "璁惧鎶ヤ慨寮圭獥",
@@ -126,16 +176,26 @@
 
 const emits = defineEmits(["ok"]);
 
-const id = ref();
-const visible = ref(false);
-const loading = ref(false);
-const userStore = useUserStore();
-const areaOptions = ref([]);
-const deviceOptions = ref([]);
-const areaTreeProps = {
-  label: "areaName",
-  children: "children",
-};
+  const id = ref();
+  const visible = ref(false);
+  const loading = ref(false);
+  const operationType = ref(""); // add, edit, view
+
+  const computedTitle = computed(() => {
+    if (operationType.value === "add") return "鏂板璁惧鎶ヤ慨";
+    if (operationType.value === "edit") return "缂栬緫璁惧鎶ヤ慨";
+    if (operationType.value === "view") return "璁惧鎶ヤ慨璇︽儏";
+    return "";
+  });
+
+  const userStore = useUserStore();
+  const deviceOptions = ref([]);
+  const fileList = ref([]);
+
+  const loadDeviceName = async () => {
+    const { data } = await getDeviceLedger();
+    deviceOptions.value = data;
+  };
 
 const { form, resetForm } = useFormData({
   areaId: undefined,
@@ -314,29 +374,40 @@
   visible.value = false;
 };
 
-const openAdd = async () => {
-  id.value = undefined;
-  visible.value = true;
-  await nextTick();
-  await loadAreaTree();
-  deviceOptions.value = [];
-};
+  const openAdd = async () => {
+    id.value = undefined;
+    operationType.value = "add";
+    visible.value = true;
+    fileList.value = [];
+    await nextTick();
+    await loadDeviceName();
+  };
 
-const openEdit = async (editId) => {
-  const { data } = await getRepairById(editId);
-  id.value = editId;
-  visible.value = true;
-  await nextTick();
-  await loadAreaTree();
-  setForm(data);
-  await loadDevicesByArea(form.areaId);
-  syncDeviceFields(form.deviceLedgerIds);
-};
+  const openEdit = async editId => {
+    const { data } = await getRepairById(editId);
+    id.value = editId;
+    operationType.value = "edit";
+    visible.value = true;
+    await nextTick();
+    await loadDeviceName();
+    setForm(data);
+  };
 
-defineExpose({
-  openAdd,
-  openEdit,
-});
+  const openView = async viewId => {
+    const { data } = await getRepairById(viewId);
+    id.value = viewId;
+    operationType.value = "view";
+    visible.value = true;
+    await nextTick();
+    await loadDeviceName();
+    setForm(data);
+  };
+
+  defineExpose({
+    openAdd,
+    openEdit,
+    openView,
+  });
 </script>
 
 <style lang="scss" scoped></style>

--
Gitblit v1.9.3