From 5a3edeb49a1d318ff41ec0bb9d4adf12ea32275c Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期六, 23 五月 2026 13:41:55 +0800
Subject: [PATCH] 设备报修-只需要展示关键数据。新增一个详情按钮,其他数据在详情里查看

---
 src/views/equipmentManagement/repair/Modal/RepairModal.vue |  332 +++++++++++++----------
 src/views/equipmentManagement/repair/index.vue             |  506 +++++++++++++++++-------------------
 2 files changed, 422 insertions(+), 416 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>
diff --git a/src/views/equipmentManagement/repair/index.vue b/src/views/equipmentManagement/repair/index.vue
index 2835356..f1573cb 100644
--- a/src/views/equipmentManagement/repair/index.vue
+++ b/src/views/equipmentManagement/repair/index.vue
@@ -1,193 +1,195 @@
 <template>
   <div class="app-container">
-    <el-form :model="filters" :inline="true">
+    <el-form :model="filters"
+             :inline="true">
       <el-form-item label="璁惧鍚嶇О">
-        <el-input
-            v-model="filters.deviceName"
-            style="width: 240px"
-            placeholder="璇疯緭鍏ヨ澶囧悕绉�"
-            clearable
-            :prefix-icon="Search"
-            @change="getTableData"
-        />
+        <el-input v-model="filters.deviceName"
+                  style="width: 240px"
+                  placeholder="璇疯緭鍏ヨ澶囧悕绉�"
+                  clearable
+                  :prefix-icon="Search"
+                  @change="getTableData" />
       </el-form-item>
       <el-form-item label="瑙勬牸鍨嬪彿">
-        <el-input
-            v-model="filters.deviceModel"
-            style="width: 240px"
-            placeholder="璇烽�夋嫨瑙勬牸鍨嬪彿"
-            clearable
-            :prefix-icon="Search"
-            @change="getTableData"
-        />
+        <el-input v-model="filters.deviceModel"
+                  style="width: 240px"
+                  placeholder="璇烽�夋嫨瑙勬牸鍨嬪彿"
+                  clearable
+                  :prefix-icon="Search"
+                  @change="getTableData" />
       </el-form-item>
       <el-form-item label="鏁呴殰鐜拌薄">
-        <el-input
-            v-model="filters.remark"
-            style="width: 240px"
-            placeholder="璇疯緭鍏ユ晠闅滅幇璞�"
-            clearable
-            :prefix-icon="Search"
-            @change="getTableData"
-        />
+        <el-input v-model="filters.remark"
+                  style="width: 240px"
+                  placeholder="璇疯緭鍏ユ晠闅滅幇璞�"
+                  clearable
+                  :prefix-icon="Search"
+                  @change="getTableData" />
       </el-form-item>
       <el-form-item label="缁翠慨浜�">
-        <el-input
-            v-model="filters.maintenanceName"
-            style="width: 240px"
-            placeholder="璇疯緭鍏ョ淮淇汉"
-            clearable
-            :prefix-icon="Search"
-            @change="getTableData"
-        />
+        <el-input v-model="filters.maintenanceName"
+                  style="width: 240px"
+                  placeholder="璇疯緭鍏ョ淮淇汉"
+                  clearable
+                  :prefix-icon="Search"
+                  @change="getTableData" />
       </el-form-item>
       <el-form-item label="鎶ヤ慨鏃ユ湡">
-        <el-date-picker
-            v-model="filters.repairTimeStr"
-            type="date"
-            placeholder="璇烽�夋嫨鎶ヤ慨鏃ユ湡"
-            size="default"
-            @change="(date) => handleDateChange(date,2)"
-        />
+        <el-date-picker v-model="filters.repairTimeStr"
+                        type="date"
+                        placeholder="璇烽�夋嫨鎶ヤ慨鏃ユ湡"
+                        size="default"
+                        @change="(date) => handleDateChange(date,2)" />
       </el-form-item>
       <el-form-item label="缁翠慨鏃ユ湡">
-        <el-date-picker
-            v-model="filters.maintenanceTimeStr"
-            type="date"
-            placeholder="璇烽�夋嫨缁翠慨鏃ユ湡"
-            size="default"
-            @change="(date) => handleDateChange(date,1)"
-        />
+        <el-date-picker v-model="filters.maintenanceTimeStr"
+                        type="date"
+                        placeholder="璇烽�夋嫨缁翠慨鏃ユ湡"
+                        size="default"
+                        @change="(date) => handleDateChange(date,1)" />
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" @click="getTableData">鎼滅储</el-button>
+        <el-button type="primary"
+                   @click="getTableData">鎼滅储</el-button>
         <el-button @click="resetFilters">閲嶇疆</el-button>
       </el-form-item>
     </el-form>
     <div class="table_list">
       <div class="actions">
-        <el-text class="mx-1" size="large">璁惧鎶ヤ慨</el-text>
+        <el-text class="mx-1"
+                 size="large">璁惧鎶ヤ慨</el-text>
         <div>
-          <el-button type="success" icon="Van" @click="addRepair">
+          <el-button type="success"
+                     icon="Van"
+                     @click="addRepair">
             鏂板鎶ヤ慨
           </el-button>
           <el-button @click="handleOut">
             瀵煎嚭
           </el-button>
-          <el-button
-            type="danger"
-            icon="Delete"
-            :disabled="multipleList.length <= 0 || hasFinishedStatus"
-            @click="delRepairByIds(multipleList.map((item) => item.id))"
-          >
+          <el-button type="danger"
+                     icon="Delete"
+                     :disabled="multipleList.length <= 0 || hasFinishedStatus"
+                     @click="delRepairByIds(multipleList.map((item) => item.id))">
             鎵归噺鍒犻櫎
           </el-button>
         </div>
       </div>
-      <PIMTable
-          rowKey="id"
-          isSelection
-          :column="columns"
-          :tableData="dataList"
-          :page="{
+      <PIMTable rowKey="id"
+                isSelection
+                :column="columns"
+                :tableData="dataList"
+                :page="{
           current: pagination.currentPage,
           size: pagination.pageSize,
           total: pagination.total,
         }"
-          @selection-change="handleSelectionChange"
-          @pagination="changePage"
-      >
+                @selection-change="handleSelectionChange"
+                @pagination="changePage">
         <template #statusRef="{ row }">
-          <el-tag v-if="row.status === 2" type="danger">澶辫触</el-tag>
-          <el-tag v-if="row.status === 1" type="success">瀹岀粨</el-tag>
-          <el-tag v-if="row.status === 3" type="info">寰呴獙鏀�</el-tag>
-          <el-tag v-if="row.status === 0" type="warning">寰呯淮淇�</el-tag>
+          <el-tag v-if="row.status === 2"
+                  type="danger">澶辫触</el-tag>
+          <el-tag v-if="row.status === 1"
+                  type="success">瀹岀粨</el-tag>
+          <el-tag v-if="row.status === 3"
+                  type="info">寰呴獙鏀�</el-tag>
+          <el-tag v-if="row.status === 0"
+                  type="warning">寰呯淮淇�</el-tag>
         </template>
         <template #operation="{ row }">
-          <el-button
-            type="primary"
-            link
-            :disabled="row.status === 1 || row.status === 3"
-            @click="editRepair(row.id)"
-          >
+          <el-button type="primary"
+                     link
+                     @click="viewRepair(row.id)">
+            璇︽儏
+          </el-button>
+          <el-button type="primary"
+                     link
+                     :disabled="row.status === 1 || row.status === 3"
+                     @click="editRepair(row.id)">
             缂栬緫
           </el-button>
-          <el-button
-            type="success"
-            link
-            :disabled="row.status !== 0"
-            @click="addMaintain(row)"
-          >
+          <el-button type="success"
+                     link
+                     :disabled="row.status !== 0"
+                     @click="addMaintain(row)">
             缁翠慨
           </el-button>
-          <el-button
-            type="warning"
-            link
-            :disabled="row.status !== 3"
-            @click="openAcceptance(row)"
-          >
+          <el-button type="warning"
+                     link
+                     :disabled="row.status !== 3"
+                     @click="openAcceptance(row)">
             楠屾敹
           </el-button>
-          <el-button
-            type="danger"
-            link
-            :disabled="row.status === 1 || row.status === 3"
-            @click="delRepairByIds(row.id)"
-          >
+          <el-button type="danger"
+                     link
+                     :disabled="row.status === 1 || row.status === 3"
+                     @click="delRepairByIds(row.id)">
             鍒犻櫎
           </el-button>
-          <el-button
-              type="primary"
-              link
-              @click="openFileDialog(row)"
-          >
+          <el-button type="primary"
+                     link
+                     @click="openFileDialog(row)">
             闄勪欢
           </el-button>
         </template>
       </PIMTable>
     </div>
-    <RepairModal ref="repairModalRef" @ok="getTableData"/>
-    <MaintainModal ref="maintainModalRef" @ok="getTableData"/>
-    <AcceptanceModal ref="acceptanceModalRef" @ok="getTableData"/>
-    <FileList v-if="fileDialogVisible"  v-model:visible="fileDialogVisible" :record-type="'device_repair'" :record-id="recordId"  />
+    <RepairModal ref="repairModalRef"
+                 @ok="getTableData" />
+    <MaintainModal ref="maintainModalRef"
+                   @ok="getTableData" />
+    <AcceptanceModal ref="acceptanceModalRef"
+                     @ok="getTableData" />
+    <FileList v-if="fileDialogVisible"
+              v-model:visible="fileDialogVisible"
+              :record-type="'device_repair'"
+              :record-id="recordId" />
   </div>
 </template>
 
 <script setup>
-import {onMounted, getCurrentInstance, computed, ref, defineAsyncComponent} from "vue";
-import {usePaginationApi} from "@/hooks/usePaginationApi";
-import {getRepairPage, delRepair} from "@/api/equipmentManagement/repair";
-import RepairModal from "./Modal/RepairModal.vue";
-import {ElMessageBox, ElMessage} from "element-plus";
-import dayjs from "dayjs";
-import MaintainModal from "./Modal/MaintainModal.vue";
-import AcceptanceModal from "./Modal/AcceptanceModal.vue";
-const FileList = defineAsyncComponent(() => import("@/components/Dialog/FileList.vue"));
+  import {
+    onMounted,
+    getCurrentInstance,
+    computed,
+    ref,
+    defineAsyncComponent,
+  } from "vue";
+  import { usePaginationApi } from "@/hooks/usePaginationApi";
+  import { getRepairPage, delRepair } from "@/api/equipmentManagement/repair";
+  import RepairModal from "./Modal/RepairModal.vue";
+  import { ElMessageBox, ElMessage } from "element-plus";
+  import dayjs from "dayjs";
+  import MaintainModal from "./Modal/MaintainModal.vue";
+  import AcceptanceModal from "./Modal/AcceptanceModal.vue";
+  const FileList = defineAsyncComponent(() =>
+    import("@/components/Dialog/FileList.vue")
+  );
 
-defineOptions({
-  name: "璁惧鎶ヤ慨",
-});
+  defineOptions({
+    name: "璁惧鎶ヤ慨",
+  });
 
-const {proxy} = getCurrentInstance();
+  const { proxy } = getCurrentInstance();
 
-// 妯℃�佹瀹炰緥
-const repairModalRef = ref();
-const maintainModalRef = ref();
-const acceptanceModalRef = ref();
+  // 妯℃�佹瀹炰緥
+  const repairModalRef = ref();
+  const maintainModalRef = ref();
+  const acceptanceModalRef = ref();
 
-// 琛ㄦ牸澶氶�夋閫変腑椤�
-const multipleList = ref([]);
+  // 琛ㄦ牸澶氶�夋閫変腑椤�
+  const multipleList = ref([]);
 
-// 琛ㄦ牸閽╁瓙
-const {
-  filters,
-  columns,
-  dataList,
-  pagination,
-  getTableData,
-  resetFilters,
-  onCurrentChange,
-} = usePaginationApi(
+  // 琛ㄦ牸閽╁瓙
+  const {
+    filters,
+    columns,
+    dataList,
+    pagination,
+    getTableData,
+    resetFilters,
+    onCurrentChange,
+  } = usePaginationApi(
     getRepairPage,
     {
       deviceName: undefined,
@@ -209,52 +211,15 @@
         prop: "deviceModel",
       },
       {
-        label: "鎶ヤ慨椤圭洰",
-        align: "center",
-        prop: "machineryCategory",
-      },
-      {
         label: "鎶ヤ慨鏃ユ湡",
         align: "center",
         prop: "repairTime",
-        formatData: (cell) => dayjs(cell).format("YYYY-MM-DD"),
+        formatData: cell => dayjs(cell).format("YYYY-MM-DD"),
       },
       {
         label: "鎶ヤ慨浜�",
         align: "center",
         prop: "repairName",
-      },
-      {
-        label: "鏁呴殰鐜拌薄",
-        align: "center",
-        prop: "remark",
-      },
-      {
-        label: "缁翠慨浜�",
-        align: "center",
-        prop: "maintenanceName",
-      },
-      {
-        label: "缁翠慨缁撴灉",
-        align: "center",
-        prop: "maintenanceResult",
-      },
-      {
-        label: "缁翠慨鏃ユ湡",
-        align: "center",
-        prop: "maintenanceTime",
-        formatData: (cell) => (cell ? dayjs(cell).format("YYYY-MM-DD") : ""),
-      },
-      {
-        label: "楠屾敹浜�",
-        align: "center",
-        prop: "acceptanceName",
-      },
-      {
-        label: "楠屾敹鏃堕棿",
-        align: "center",
-        prop: "acceptanceTime",
-        formatData: (cell) => (cell ? dayjs(cell).format("YYYY-MM-DD HH:mm:ss") : ""),
       },
       {
         label: "鐘舵��",
@@ -269,127 +234,132 @@
         dataType: "slot",
         slot: "operation",
         align: "center",
-        width: "300px",
+        width: "320px",
       },
     ]
-);
+  );
 
-// type === 1 缁翠慨 2鎶ヤ慨闂�
-const handleDateChange = (value, type) => {
-  filters.maintenanceTimeStr = null
-  filters.c = null
-  if (type === 1) {
-    if (value) {
-      filters.maintenanceTimeStr = dayjs(value).format("YYYY-MM-DD");
+  // type === 1 缁翠慨 2鎶ヤ慨闂�
+  const handleDateChange = (value, type) => {
+    filters.maintenanceTimeStr = null;
+    filters.c = null;
+    if (type === 1) {
+      if (value) {
+        filters.maintenanceTimeStr = dayjs(value).format("YYYY-MM-DD");
+      }
+    } else {
+      if (value) {
+        filters.repairTimeStr = dayjs(value).format("YYYY-MM-DD");
+      }
     }
-  } else {
-    if (value) {
-      filters.repairTimeStr = dayjs(value).format("YYYY-MM-DD");
-    }
-  }
-  getTableData();
-};
+    getTableData();
+  };
 
-// 鎵撳紑闄勪欢寮圭獥
-const recordId =ref(0)
-const fileDialogVisible = ref(false)
+  // 鎵撳紑闄勪欢寮圭獥
+  const recordId = ref(0);
+  const fileDialogVisible = ref(false);
 
-const openFileDialog = async (row) => {
-  recordId.value = row.id
-  fileDialogVisible.value = true
-}
+  const openFileDialog = async row => {
+    recordId.value = row.id;
+    fileDialogVisible.value = true;
+  };
 
-// 澶氶�夊悗鍋氫粈涔�
-const handleSelectionChange = (selectionList) => {
-  multipleList.value = selectionList;
-};
+  // 澶氶�夊悗鍋氫粈涔�
+  const handleSelectionChange = selectionList => {
+    multipleList.value = selectionList;
+  };
 
-// 妫�鏌ラ�変腑鐨勮褰曚腑鏄惁鏈夊畬缁撶姸鎬佺殑
-const hasFinishedStatus = computed(() => {
-  return multipleList.value.some(item => item.status === 1)
-})
-
-// 鏂板鎶ヤ慨
-const addRepair = () => {
-  repairModalRef.value.openAdd();
-};
-
-// 缂栬緫鎶ヤ慨
-const editRepair = (id) => {
-  repairModalRef.value.openEdit(id);
-};
-
-// 鏂板缁翠慨
-const addMaintain = (row) => {
-  maintainModalRef.value.open(row.id, row);
-};
-
-// 鎵撳紑楠屾敹寮圭獥
-const openAcceptance = (row) => {
-  acceptanceModalRef.value.open(row);
-};
-
-const changePage = ({page, limit}) => {
-  pagination.currentPage = page;
-  pagination.pageSize = limit;
-  onCurrentChange(page);
-};
-
-// 鍗曡鍒犻櫎
-const delRepairByIds = async (ids) => {
-  // 妫�鏌ユ槸鍚︽湁瀹岀粨鐘舵�佺殑璁板綍
-  const idsArray = Array.isArray(ids) ? ids : [ids];
-  const hasFinished = idsArray.some(id => {
-    const record = dataList.value.find(item => item.id === id);
-    return record && record.status === 1;
+  // 妫�鏌ラ�変腑鐨勮褰曚腑鏄惁鏈夊畬缁撶姸鎬佺殑
+  const hasFinishedStatus = computed(() => {
+    return multipleList.value.some(item => item.status === 1);
   });
 
-  if (hasFinished) {
-    ElMessage.warning('涓嶈兘鍒犻櫎鐘舵�佷负瀹岀粨鐨勮褰�');
-    return;
-  }
+  // 鏂板鎶ヤ慨
+  const addRepair = () => {
+    repairModalRef.value.openAdd();
+  };
 
-  ElMessageBox.confirm("纭鍒犻櫎鎶ヤ慨鏁版嵁, 姝ゆ搷浣滀笉鍙��?", "璀﹀憡", {
-    confirmButtonText: "纭畾",
-    cancelButtonText: "鍙栨秷",
-    type: "warning",
-  }).then(async () => {
-    const {code} = await delRepair(ids);
-    if (code === 200) {
-      ElMessage.success("鍒犻櫎鎴愬姛");
-      getTableData();
+  // 璇︽儏鏌ョ湅
+  const viewRepair = id => {
+    repairModalRef.value.openView(id);
+  };
+
+  // 缂栬緫鎶ヤ慨
+  const editRepair = id => {
+    repairModalRef.value.openEdit(id);
+  };
+
+  // 鏂板缁翠慨
+  const addMaintain = row => {
+    maintainModalRef.value.open(row.id, row);
+  };
+
+  // 鎵撳紑楠屾敹寮圭獥
+  const openAcceptance = row => {
+    acceptanceModalRef.value.open(row);
+  };
+
+  const changePage = ({ page, limit }) => {
+    pagination.currentPage = page;
+    pagination.pageSize = limit;
+    onCurrentChange(page);
+  };
+
+  // 鍗曡鍒犻櫎
+  const delRepairByIds = async ids => {
+    // 妫�鏌ユ槸鍚︽湁瀹岀粨鐘舵�佺殑璁板綍
+    const idsArray = Array.isArray(ids) ? ids : [ids];
+    const hasFinished = idsArray.some(id => {
+      const record = dataList.value.find(item => item.id === id);
+      return record && record.status === 1;
+    });
+
+    if (hasFinished) {
+      ElMessage.warning("涓嶈兘鍒犻櫎鐘舵�佷负瀹岀粨鐨勮褰�");
+      return;
     }
-  });
-};
 
-// 瀵煎嚭
-const handleOut = () => {
-  ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
-    confirmButtonText: "纭",
-    cancelButtonText: "鍙栨秷",
-    type: "warning",
-  })
+    ElMessageBox.confirm("纭鍒犻櫎鎶ヤ慨鏁版嵁, 姝ゆ搷浣滀笉鍙��?", "璀﹀憡", {
+      confirmButtonText: "纭畾",
+      cancelButtonText: "鍙栨秷",
+      type: "warning",
+    }).then(async () => {
+      const { code } = await delRepair(ids);
+      if (code === 200) {
+        ElMessage.success("鍒犻櫎鎴愬姛");
+        getTableData();
+      }
+    });
+  };
+
+  // 瀵煎嚭
+  const handleOut = () => {
+    ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
+      confirmButtonText: "纭",
+      cancelButtonText: "鍙栨秷",
+      type: "warning",
+    })
       .then(() => {
         proxy.download("/device/repair/export", {}, "璁惧鎶ヤ慨.xlsx");
       })
       .catch(() => {
         ElMessage.info("宸插彇娑�");
       });
-};
+  };
 
-onMounted(() => {
-  getTableData();
-});
+  onMounted(() => {
+    getTableData();
+  });
 </script>
 
 <style lang="scss" scoped>
-.table_list {
-  margin-top: unset;
-}
+  .table_list {
+    margin-top: unset;
+  }
 
-.actions {
-  display: flex;
-  justify-content: space-between;
-  margin-bottom: 10px;
-}
+  .actions {
+    display: flex;
+    justify-content: space-between;
+    margin-bottom: 10px;
+  }
 </style>

--
Gitblit v1.9.3