| | |
| | | 编辑 |
| | | </el-button> |
| | | <el-button |
| | | type="info" |
| | | link |
| | | @click="viewAttachments(row)" |
| | | > |
| | | 查看附件 |
| | | </el-button> |
| | | <el-button |
| | | type="success" |
| | | link |
| | | :disabled="row.status === 1" |
| | |
| | | </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: "设备报修", |
| | |
| | | // 模态框实例 |
| | | 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([]); |
| | |
| | | dataType: "slot", |
| | | slot: "operation", |
| | | align: "center", |
| | | width: "300px", |
| | | width: "360px", |
| | | }, |
| | | ] |
| | | ); |