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