From ac09706b8eb2315b444f4ee8837de47747a6ea43 Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期六, 23 五月 2026 14:15:38 +0800
Subject: [PATCH] 合并河南鹤壁问题 1、客户往来没有合同金额 2、销售台账需要详情按钮查看 3、主生产计划,统一居左展示。把销售合同号移到前面展示而不是往后拉才可以看到 4、设备报修-只需要展示关键数据。新增一个详情按钮,其他数据在详情里查看 5、计量器台账-应该是叫编辑而不是查看 6、设备巡检tab页更名、表格无法拖拉问题 7、任务管理不需要巡检结果 8、	反馈登记-问题描述修改为客户诉求

---
 src/views/equipmentManagement/repair/Modal/RepairModal.vue |  332 ++++++++++++++++++++++++++++++------------------------
 1 files changed, 184 insertions(+), 148 deletions(-)

diff --git a/src/views/equipmentManagement/repair/Modal/RepairModal.vue b/src/views/equipmentManagement/repair/Modal/RepairModal.vue
index 4e73833..4a10071 100644
--- a/src/views/equipmentManagement/repair/Modal/RepairModal.vue
+++ b/src/views/equipmentManagement/repair/Modal/RepairModal.vue
@@ -1,111 +1,126 @@
 <template>
-  <FormDialog
-    v-model="visible"
-    :title="id ? '缂栬緫璁惧鎶ヤ慨' : '鏂板璁惧鎶ヤ慨'"
-    width="800px"
-    @confirm="sendForm"
-    @cancel="handleCancel"
-    @close="handleClose"
-  >
-    <el-form :model="form" label-width="100px">
+  <FormDialog v-model="visible"
+              :title="computedTitle"
+              :operation-type="operationType"
+              width="800px"
+              @confirm="sendForm"
+              @cancel="handleCancel"
+              @close="handleClose">
+    <el-form :model="form"
+             label-width="100px">
       <el-row>
         <el-col :span="12">
           <el-form-item label="璁惧鍚嶇О">
-            <el-select v-model="form.deviceLedgerId" @change="setDeviceModel" filterable>
-              <el-option
-                v-for="(item, index) in deviceOptions"
-                :key="index"
-                :label="item.deviceName"
-                :value="item.id"
-              ></el-option>
+            <el-select v-model="form.deviceLedgerId"
+                       @change="setDeviceModel"
+                       filterable
+                       :disabled="operationType === 'view'">
+              <el-option v-for="(item, index) in deviceOptions"
+                         :key="index"
+                         :label="item.deviceName"
+                         :value="item.id"></el-option>
             </el-select>
           </el-form-item>
         </el-col>
         <el-col :span="12">
           <el-form-item label="瑙勬牸鍨嬪彿">
-            <el-input
-              v-model="form.deviceModel"
-              placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�"
-              disabled
-            />
+            <el-input v-model="form.deviceModel"
+                      placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�"
+                      disabled />
           </el-form-item>
         </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="璇疯緭鍏ユ姤淇姤淇」鐩�" />
+            <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="璇疯緭鍏ョ淮淇汉濮撳悕" />
+            <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" disabled>
-              <el-option label="寰呯淮淇�" :value="0"></el-option>
-              <el-option label="宸查獙鏀�" :value="1"></el-option>
-              <el-option label="澶辫触" :value="2"></el-option>
+            <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">
+      <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-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-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-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 :gutter="30">
+      <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" />
+          <el-form-item label="闄勪欢"
+                        prop="attachmentIds">
+            <FileUpload v-model:file-list="form.storageBlobDTOs"
+                        :disabled="operationType === 'view'" />
           </el-form-item>
         </el-col>
       </el-row>
@@ -114,119 +129,140 @@
 </template>
 
 <script setup>
-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";
+  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: "璁惧鎶ヤ慨寮圭獥",
-});
+  defineOptions({
+    name: "璁惧鎶ヤ慨寮圭獥",
+  });
 
-const emits = defineEmits(["ok"]);
+  const emits = defineEmits(["ok"]);
 
-const id = ref();
-const visible = ref(false);
-const loading = ref(false);
+  const id = ref();
+  const visible = ref(false);
+  const loading = ref(false);
+  const operationType = ref(""); // add, edit, view
 
-const userStore = useUserStore();
-const deviceOptions = ref([]);
-const fileList = ref([]);
+  const computedTitle = computed(() => {
+    if (operationType.value === "add") return "鏂板璁惧鎶ヤ慨";
+    if (operationType.value === "edit") return "缂栬緫璁惧鎶ヤ慨";
+    if (operationType.value === "view") return "璁惧鎶ヤ慨璇︽儏";
+    return "";
+  });
 
-const loadDeviceName = async () => {
-  const { data } = await getDeviceLedger();
-  deviceOptions.value = data;
-};
+  const userStore = useUserStore();
+  const deviceOptions = ref([]);
+  const fileList = ref([]);
 
-const { form, resetForm } = useFormData({
-  deviceLedgerId: undefined, // 璁惧Id
-  deviceName: undefined, // 璁惧鍚嶇О
-  deviceModel: undefined, // 瑙勬牸鍨嬪彿
-  repairTime: dayjs().format("YYYY-MM-DD"), // 鎶ヤ慨鏃ユ湡锛岄粯璁ゅ綋澶�
-  repairName: userStore.nickName, // 鎶ヤ慨浜�
-  remark: undefined, // 鏁呴殰鐜拌薄
-  status: 0, // 鎶ヤ慨鐘舵��
-  machineryCategory: undefined,
-  storageBlobDTOs: [],
-  maintenanceName: undefined, // 缁翠慨浜�
-});
+  const loadDeviceName = async () => {
+    const { data } = await getDeviceLedger();
+    deviceOptions.value = data;
+  };
 
-const setDeviceModel = (deviceId) => {
-  const option = deviceOptions.value.find((item) => item.id === deviceId);
-  form.deviceModel = option.deviceModel;
-};
+  const { form, resetForm } = useFormData({
+    deviceLedgerId: undefined, // 璁惧Id
+    deviceName: undefined, // 璁惧鍚嶇О
+    deviceModel: undefined, // 瑙勬牸鍨嬪彿
+    repairTime: dayjs().format("YYYY-MM-DD"), // 鎶ヤ慨鏃ユ湡锛岄粯璁ゅ綋澶�
+    repairName: userStore.nickName, // 鎶ヤ慨浜�
+    remark: undefined, // 鏁呴殰鐜拌薄
+    status: 0, // 鎶ヤ慨鐘舵��
+    machineryCategory: undefined,
+    storageBlobDTOs: [],
+    maintenanceName: undefined, // 缁翠慨浜�
+  });
 
-const setForm = (data) => {
-  form.deviceLedgerId = data.deviceLedgerId;
-  form.deviceName = data.deviceName;
-  form.deviceModel = data.deviceModel;
-  form.repairTime = data.repairTime;
-  form.repairName = data.repairName;
-  form.remark = data.remark;
-  form.status = data.status;
-  form.machineryCategory = data.machineryCategory;
-  form.storageBlobDTOs = data.storageBlobVOs || [];
-  form.maintenanceName = data.maintenanceName;
-  form.acceptanceName = data.acceptanceName;
-  form.acceptanceTime = data.acceptanceTime;
-  form.acceptanceRemark = data.acceptanceRemark;
-};
+  const setDeviceModel = deviceId => {
+    const option = deviceOptions.value.find(item => item.id === deviceId);
+    form.deviceModel = option.deviceModel;
+  };
 
-const sendForm = async () => {
-  loading.value = true;
-  try {
-    const { code } = id.value
-      ? await editRepair({ id: unref(id), ...form })
-      : await addRepair(form);
-    if (code == 200) {
-      ElMessage.success(`${id.value ? "缂栬緫" : "鏂板"}鎶ヤ慨鎴愬姛`);
-      visible.value = false;
-      emits("ok");
+  const setForm = data => {
+    form.deviceLedgerId = data.deviceLedgerId;
+    form.deviceName = data.deviceName;
+    form.deviceModel = data.deviceModel;
+    form.repairTime = data.repairTime;
+    form.repairName = data.repairName;
+    form.remark = data.remark;
+    form.status = data.status;
+    form.machineryCategory = data.machineryCategory;
+    form.storageBlobDTOs = data.storageBlobVOs || [];
+    form.maintenanceName = data.maintenanceName;
+    form.acceptanceName = data.acceptanceName;
+    form.acceptanceTime = data.acceptanceTime;
+    form.acceptanceRemark = data.acceptanceRemark;
+  };
+
+  const sendForm = async () => {
+    loading.value = true;
+    try {
+      const { code } = id.value
+        ? await editRepair({ id: unref(id), ...form })
+        : await addRepair(form);
+      if (code == 200) {
+        ElMessage.success(`${id.value ? "缂栬緫" : "鏂板"}鎶ヤ慨鎴愬姛`);
+        visible.value = false;
+        emits("ok");
+      }
+    } finally {
+      loading.value = false;
     }
-  } finally {
-    loading.value = false;
-  }
-};
+  };
 
-const handleCancel = () => {
-  resetForm();
-  visible.value = false;
-};
+  const handleCancel = () => {
+    resetForm();
+    visible.value = false;
+  };
 
-const handleClose = () => {
-  resetForm();
-  visible.value = false;
-};
+  const handleClose = () => {
+    resetForm();
+    visible.value = false;
+  };
 
-const openAdd = async () => {
-  id.value = undefined;
-  visible.value = true;
-  fileList.value = [];
-  await nextTick();
-  await loadDeviceName();
-};
+  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 loadDeviceName();
-  setForm(data);
-};
+  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