From f7bd6321d824a92da49b1b35aa729a29502f19bc Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期五, 27 二月 2026 15:09:27 +0800
Subject: [PATCH] 设备管理:备件管理去掉价格;设备保修和设备保养增加关联设备备件
---
src/views/equipmentManagement/spareParts/index.vue | 13 ------
src/views/equipmentManagement/repair/Modal/MaintainModal.vue | 27 +++++++++++++
src/api/equipmentManagement/spareParts.js | 9 ++++
src/views/equipmentManagement/upkeep/Form/MaintenanceModal.vue | 27 +++++++++++++
4 files changed, 63 insertions(+), 13 deletions(-)
diff --git a/src/api/equipmentManagement/spareParts.js b/src/api/equipmentManagement/spareParts.js
index 2b64689..4d3fd88 100644
--- a/src/api/equipmentManagement/spareParts.js
+++ b/src/api/equipmentManagement/spareParts.js
@@ -20,6 +20,15 @@
});
};
+// 鏌ヨ澶囦欢閫夐」
+export const getSparePartsOptions = (params) => {
+ return request({
+ url: "/spareParts/getByIdDeviceId",
+ method: "get",
+ params,
+ });
+};
+
/**
* @desc 鏂板
*/
diff --git a/src/views/equipmentManagement/repair/Modal/MaintainModal.vue b/src/views/equipmentManagement/repair/Modal/MaintainModal.vue
index 496b072..cdfcb3c 100644
--- a/src/views/equipmentManagement/repair/Modal/MaintainModal.vue
+++ b/src/views/equipmentManagement/repair/Modal/MaintainModal.vue
@@ -32,6 +32,16 @@
style="width: 100%"
/>
</el-form-item>
+ <el-form-item label="璁惧澶囦欢">
+ <el-select v-model="form.sparePartsIds" :loading="loadingSparePartOptions" placeholder="璇烽�夋嫨璁惧澶囦欢" multiple filterable>
+ <el-option
+ v-for="item in sparePartOptions"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id"
+ />
+ </el-select>
+ </el-form-item>
</el-form>
</FormDialog>
</template>
@@ -43,6 +53,7 @@
import useUserStore from "@/store/modules/user";
import dayjs from "dayjs";
import { ElMessage } from "element-plus";
+import {getSparePartsOptions} from "@/api/equipmentManagement/spareParts.js";
defineOptions({
name: "缁翠慨妯℃�佹",
@@ -61,7 +72,10 @@
maintenanceResult: undefined, // 缁翠慨缁撴灉
maintenanceTime: undefined, // 缁翠慨鏃ユ湡
status: 0,
+ sparePartsIds: undefined,
});
+const sparePartOptions = ref([])
+const loadingSparePartOptions = ref(true)
const setForm = (data) => {
form.maintenanceName = data.maintenanceName ?? userStore.nickName;
@@ -71,6 +85,7 @@
? dayjs(data.maintenanceTime).format("YYYY-MM-DD HH:mm:ss")
: dayjs().format("YYYY-MM-DD HH:mm:ss");
form.status = 1; // 榛樿鐘舵�佷负瀹岀粨
+ form.sparePartsIds = data.sparePartsIds;
};
const sendForm = async () => {
@@ -88,6 +103,17 @@
}
};
+const fetchSparePartOptions = (deviceLedgerId) => {
+ loadingSparePartOptions.value = true;
+ getSparePartsOptions({ deviceLedgerId: deviceLedgerId }).then((res) => {
+ if (res.code == 200) {
+ sparePartOptions.value = res.data || [];
+ }
+ }).finally(() => {
+ loadingSparePartOptions.value = false;
+ })
+}
+
const handleCancel = () => {
resetForm();
visible.value = false;
@@ -103,6 +129,7 @@
visible.value = true;
await nextTick();
setForm(row);
+ fetchSparePartOptions(row.deviceLedgerId)
};
defineExpose({
diff --git a/src/views/equipmentManagement/spareParts/index.vue b/src/views/equipmentManagement/spareParts/index.vue
index 0b0dae2..db82a7d 100644
--- a/src/views/equipmentManagement/spareParts/index.vue
+++ b/src/views/equipmentManagement/spareParts/index.vue
@@ -36,7 +36,6 @@
<el-tag type="success" size="small">{{ row.status }}</el-tag>
</template>
</el-table-column>
- <el-table-column prop="price" label="浠锋牸" width="140"></el-table-column>
<el-table-column prop="quantity" label="鏁伴噺" width="140"></el-table-column>
<el-table-column prop="description" label="鎻忚堪"></el-table-column>
<el-table-column label="鎿嶄綔" width="150" fixed="right" align="center">
@@ -111,16 +110,6 @@
<el-form-item label="鎻忚堪" prop="description">
<el-input v-model="form.description"></el-input>
</el-form-item>
- <el-form-item label="浠锋牸" prop="price">
- <el-input-number
- v-model="form.price"
- placeholder="璇疯緭鍏ヤ环鏍�"
- :min="0"
- :step="0.01"
- :precision="2"
- style="width: 100%"
- ></el-input-number>
- </el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
@@ -173,7 +162,6 @@
status: '',
description: '',
deviceLedgerIds: [],
- price: null
});
// 琛ㄥ崟楠岃瘉瑙勫垯
@@ -298,7 +286,6 @@
form.status = '';
form.description = '';
form.deviceLedgerIds = [];
- form.price = null;
operationType.value = 'add'
dialogVisible.value = true;
};
diff --git a/src/views/equipmentManagement/upkeep/Form/MaintenanceModal.vue b/src/views/equipmentManagement/upkeep/Form/MaintenanceModal.vue
index c660840..4f6ca04 100644
--- a/src/views/equipmentManagement/upkeep/Form/MaintenanceModal.vue
+++ b/src/views/equipmentManagement/upkeep/Form/MaintenanceModal.vue
@@ -38,6 +38,16 @@
placeholder="璇疯緭鍏ヤ繚鍏荤粨鏋�"
type="text" />
</el-form-item>
+ <el-form-item label="璁惧澶囦欢">
+ <el-select v-model="form.sparePartsIds" :loading="loadingSparePartOptions" placeholder="璇烽�夋嫨璁惧澶囦欢" multiple filterable>
+ <el-option
+ v-for="item in sparePartOptions"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id"
+ />
+ </el-select>
+ </el-form-item>
</el-form>
</FormDialog>
</template>
@@ -45,6 +55,7 @@
<script setup>
import FormDialog from "@/components/Dialog/FormDialog.vue";
import { addMaintenance } from "@/api/equipmentManagement/upkeep";
+import {getSparePartsOptions} from "@/api/equipmentManagement/spareParts.js";
import useFormData from "@/hooks/useFormData";
import dayjs from "dayjs";
import useUserStore from "@/store/modules/user";
@@ -67,7 +78,10 @@
maintenanceActuallyTime: undefined, // 瀹為檯淇濆吇鏃ユ湡
maintenanceResult: undefined, // 淇濆吇缁撴灉
status: 0, // 淇濆吇鐘舵��
+ sparePartsIds: undefined,
});
+const sparePartOptions = ref([])
+const loadingSparePartOptions = ref(true)
const setForm = (data) => {
form.maintenanceActuallyName =
@@ -78,7 +92,19 @@
: dayjs().format("YYYY-MM-DD HH:mm:ss");
form.maintenanceResult = data.maintenanceResult;
form.status = 1; // 榛樿鐘舵�佷负瀹岀粨
+ form.sparePartsIds = data.sparePartsIds;
};
+
+const fetchSparePartOptions = (deviceLedgerId) => {
+ loadingSparePartOptions.value = true;
+ getSparePartsOptions({ deviceLedgerId: deviceLedgerId }).then((res) => {
+ if (res.code == 200) {
+ sparePartOptions.value = res.data || [];
+ }
+ }).finally(() => {
+ loadingSparePartOptions.value = false;
+ })
+}
/**
* @desc 淇濆瓨淇濆吇
@@ -113,6 +139,7 @@
visible.value = true;
await nextTick();
setForm(row);
+ fetchSparePartOptions(row.deviceLedgerId)
};
defineExpose({
--
Gitblit v1.9.3