From 476a9ca89794a830b8a8279b80d9b446624a0641 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期二, 02 六月 2026 17:50:39 +0800
Subject: [PATCH] refactor(equipment): 优化设备台账表单结构并更新质管检验选项
---
src/views/equipmentManagement/repair/index.vue | 285 +++++++++++++++++++++++++++++----------------------------
1 files changed, 145 insertions(+), 140 deletions(-)
diff --git a/src/views/equipmentManagement/repair/index.vue b/src/views/equipmentManagement/repair/index.vue
index a278a5c..ea18062 100644
--- a/src/views/equipmentManagement/repair/index.vue
+++ b/src/views/equipmentManagement/repair/index.vue
@@ -3,60 +3,60 @@
<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"
+ 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"
+ 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"
+ 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"
+ 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)"
+ 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)"
+ v-model="filters.maintenanceTimeStr"
+ type="date"
+ placeholder="璇烽�夋嫨缁翠慨鏃ユ湡"
+ size="default"
+ @change="(date) => handleDateChange(date, 1)"
/>
</el-form-item>
<el-form-item>
@@ -71,9 +71,7 @@
<el-button type="success" icon="Van" @click="addRepair">
鏂板鎶ヤ慨
</el-button>
- <el-button @click="handleOut">
- 瀵煎嚭
- </el-button>
+ <el-button @click="handleOut"> 瀵煎嚭 </el-button>
<el-button
type="danger"
icon="Delete"
@@ -85,17 +83,17 @@
</div>
</div>
<PIMTable
- rowKey="id"
- isSelection
- :column="columns"
- :tableData="dataList"
- :page="{
+ 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>
@@ -111,11 +109,7 @@
>
缂栬緫
</el-button>
- <el-button
- type="info"
- link
- @click="viewAttachments(row)"
- >
+ <el-button type="info" link @click="viewAttachments(row)">
鏌ョ湅闄勪欢
</el-button>
<el-button
@@ -129,7 +123,7 @@
<el-button
type="danger"
link
- :disabled="row.status === 1"
+ :disabled="row.status === 1 && !isAdmin"
@click="delRepairByIds(row.id)"
>
鍒犻櫎
@@ -137,8 +131,8 @@
</template>
</PIMTable>
</div>
- <RepairModal ref="repairModalRef" @ok="getTableData"/>
- <MaintainModal ref="maintainModalRef" @ok="getTableData"/>
+ <RepairModal ref="repairModalRef" @ok="getTableData" />
+ <MaintainModal ref="maintainModalRef" @ok="getTableData" />
<FileListDialog
ref="fileListDialogRef"
v-model="fileDialogVisible"
@@ -152,19 +146,26 @@
<script setup>
import { onMounted, getCurrentInstance, computed } from "vue";
-import {usePaginationApi} from "@/hooks/usePaginationApi";
-import {getRepairPage, delRepair, getRepairById} from "@/api/equipmentManagement/repair";
+import { usePaginationApi } from "@/hooks/usePaginationApi";
+import {
+ getRepairPage,
+ delRepair,
+ getRepairById,
+} from "@/api/equipmentManagement/repair";
import RepairModal from "./Modal/RepairModal.vue";
-import {ElMessageBox, ElMessage} from "element-plus";
+import { ElMessageBox, ElMessage } from "element-plus";
import dayjs from "dayjs";
import MaintainModal from "./Modal/MaintainModal.vue";
import FileListDialog from "@/components/Dialog/FileListDialog.vue";
+import useUserStore from "@/store/modules/user";
+import auth from "@/plugins/auth";
defineOptions({
name: "璁惧鎶ヤ慨",
});
-const {proxy} = getCurrentInstance();
+const { proxy } = getCurrentInstance();
+const userStore = useUserStore();
// 妯℃�佹瀹炰緥
const repairModalRef = ref();
@@ -217,80 +218,80 @@
resetFilters,
onCurrentChange,
} = usePaginationApi(
- getRepairPage,
+ getRepairPage,
+ {
+ deviceName: undefined,
+ deviceModel: undefined,
+ remark: undefined,
+ maintenanceName: undefined,
+ repairTimeStr: undefined,
+ maintenanceTimeStr: undefined,
+ },
+ [
{
- deviceName: undefined,
- deviceModel: undefined,
- remark: undefined,
- maintenanceName: undefined,
- repairTimeStr: undefined,
- maintenanceTimeStr: undefined,
+ label: "璁惧鍚嶇О",
+ align: "center",
+ prop: "deviceName",
},
- [
- {
- label: "璁惧鍚嶇О",
- align: "center",
- prop: "deviceName",
- },
- {
- label: "瑙勬牸鍨嬪彿",
- align: "center",
- prop: "deviceModel",
- },
- {
- label: "鎶ヤ慨鏃ユ湡",
- align: "center",
- prop: "repairTime",
- 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: "status",
- dataType: "slot",
- slot: "statusRef",
- },
- {
- fixed: "right",
- label: "鎿嶄綔",
- dataType: "slot",
- slot: "operation",
- align: "center",
- width: "360px",
- },
- ]
+ {
+ label: "瑙勬牸鍨嬪彿",
+ align: "center",
+ prop: "deviceModel",
+ },
+ {
+ label: "鎶ヤ慨鏃ユ湡",
+ align: "center",
+ prop: "repairTime",
+ 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: "status",
+ dataType: "slot",
+ slot: "statusRef",
+ },
+ {
+ fixed: "right",
+ label: "鎿嶄綔",
+ dataType: "slot",
+ slot: "operation",
+ align: "center",
+ width: "360px",
+ },
+ ]
);
// type === 1 缁翠慨 2鎶ヤ慨闂�
const handleDateChange = (value, type) => {
- filters.maintenanceTimeStr = null
- filters.c = null
+ filters.maintenanceTimeStr = null;
+ filters.c = null;
if (type === 1) {
if (value) {
filters.maintenanceTimeStr = dayjs(value).format("YYYY-MM-DD");
@@ -308,10 +309,14 @@
multipleList.value = selectionList;
};
-// 妫�鏌ラ�変腑鐨勮褰曚腑鏄惁鏈夊畬缁撶姸鎬佺殑
+// 鏄惁鏄鐞嗗憳
+const isAdmin = computed(() => auth.hasRole("admin"));
+
+// 妫�鏌ラ�変腑鐨勮褰曚腑鏄惁鏈夊畬缁撶姸鎬佺殑锛堢鐞嗗憳鍙互鍒犻櫎瀹岀粨鐘舵�佺殑璁板綍锛�
const hasFinishedStatus = computed(() => {
- return multipleList.value.some(item => item.status === 1)
-})
+ if (isAdmin.value) return false;
+ return multipleList.value.some((item) => item.status === 1);
+});
// 鏂板鎶ヤ慨
const addRepair = () => {
@@ -328,7 +333,7 @@
maintainModalRef.value.open(row.id, row);
};
-const changePage = ({page, limit}) => {
+const changePage = ({ page, limit }) => {
pagination.currentPage = page;
pagination.pageSize = limit;
onCurrentChange(page);
@@ -336,15 +341,15 @@
// 鍗曡鍒犻櫎
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);
+ const hasFinished = idsArray.some((id) => {
+ const record = dataList.value.find((item) => item.id === id);
return record && record.status === 1;
});
- if (hasFinished) {
- ElMessage.warning('涓嶈兘鍒犻櫎鐘舵�佷负瀹岀粨鐨勮褰�');
+ if (hasFinished && !isAdmin.value) {
+ ElMessage.warning("涓嶈兘鍒犻櫎鐘舵�佷负瀹岀粨鐨勮褰�");
return;
}
@@ -353,7 +358,7 @@
cancelButtonText: "鍙栨秷",
type: "warning",
}).then(async () => {
- const {code} = await delRepair(ids);
+ const { code } = await delRepair(ids);
if (code === 200) {
ElMessage.success("鍒犻櫎鎴愬姛");
getTableData();
@@ -368,12 +373,12 @@
cancelButtonText: "鍙栨秷",
type: "warning",
})
- .then(() => {
- proxy.download("/device/repair/export", {}, "璁惧鎶ヤ慨.xlsx");
- })
- .catch(() => {
- ElMessage.info("宸插彇娑�");
- });
+ .then(() => {
+ proxy.download("/device/repair/export", {}, "璁惧鎶ヤ慨.xlsx");
+ })
+ .catch(() => {
+ ElMessage.info("宸插彇娑�");
+ });
};
onMounted(() => {
--
Gitblit v1.9.3