spring
2026-03-16 9030f4f4913935611e613a4064d8e26a01cbf070
src/views/equipmentManagement/repair/index.vue
@@ -112,6 +112,13 @@
            编辑
          </el-button>
          <el-button
            type="info"
            link
            @click="viewAttachments(row)"
          >
            查看附件
          </el-button>
          <el-button
            type="success"
            link
            :disabled="row.status === 1"
@@ -132,17 +139,26 @@
    </div>
    <RepairModal ref="repairModalRef" @ok="getTableData"/>
    <MaintainModal ref="maintainModalRef" @ok="getTableData"/>
    <FileListDialog
      ref="fileListDialogRef"
      v-model="fileDialogVisible"
      title="查看附件"
      :show-upload-button="false"
      :show-delete-button="false"
      name-column-label="附件名称"
    />
  </div>
</template>
<script setup>
import { onMounted, getCurrentInstance, computed } from "vue";
import {usePaginationApi} from "@/hooks/usePaginationApi";
import {getRepairPage, delRepair} from "@/api/equipmentManagement/repair";
import {getRepairPage, delRepair, getRepairById} 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 FileListDialog from "@/components/Dialog/FileListDialog.vue";
defineOptions({
  name: "设备报修",
@@ -153,6 +169,37 @@
// 模态框实例
const repairModalRef = ref();
const maintainModalRef = ref();
const fileListDialogRef = ref();
const fileDialogVisible = ref(false);
const baseApi = import.meta.env.VITE_APP_BASE_API || "";
const formatFileUrl = (url) => {
  if (!url) return "";
  if (url.startsWith("http://") || url.startsWith("https://")) return url;
  const path = String(url).replace(/^\/+/, "");
  return path ? baseApi + "/" + path : baseApi;
};
// 查看附件(与 APP 字段一致:fileList / commonFileList)
const viewAttachments = async (row) => {
  try {
    const { code, data } = await getRepairById(row.id);
    if (code === 200 && data) {
      const list = data.fileList || data.commonFileList || [];
      const mapped = (Array.isArray(list) ? list : []).map((f) => ({
        id: f.id,
        name: f.originalFilename || f.bucketFilename || f.name || "附件",
        url: formatFileUrl(f.url || f.downloadUrl),
        raw: f,
      }));
      fileListDialogRef.value?.open(mapped);
    } else {
      ElMessage.warning("获取附件失败");
    }
  } catch (e) {
    ElMessage.error("获取附件失败");
  }
};
// 表格多选框选中项
const multipleList = ref([]);
@@ -232,7 +279,7 @@
        dataType: "slot",
        slot: "operation",
        align: "center",
        width: "300px",
        width: "360px",
      },
    ]
);