From c0e5ef27056e45f5984e118e8b516d7704c133ed Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期三, 08 四月 2026 14:24:50 +0800
Subject: [PATCH] getSparePartsList接口不存在问题
---
src/api/equipmentManagement/repair.js | 7 ++
src/pages/equipmentManagement/repair/maintain.vue | 77 +++++++++++++++++--------
src/pages/equipmentManagement/upkeep/maintain.vue | 94 ++++++++++++++++++++++--------
3 files changed, 128 insertions(+), 50 deletions(-)
diff --git a/src/api/equipmentManagement/repair.js b/src/api/equipmentManagement/repair.js
index 0233ae6..927d5fb 100644
--- a/src/api/equipmentManagement/repair.js
+++ b/src/api/equipmentManagement/repair.js
@@ -70,3 +70,10 @@
data,
});
};
+export const getSparePartsList = (params) => {
+ return request({
+ url: "/spareParts/listPage",
+ method: "get",
+ params,
+ });
+};
\ No newline at end of file
diff --git a/src/pages/equipmentManagement/repair/maintain.vue b/src/pages/equipmentManagement/repair/maintain.vue
index 15bf464..9b077d6 100644
--- a/src/pages/equipmentManagement/repair/maintain.vue
+++ b/src/pages/equipmentManagement/repair/maintain.vue
@@ -82,7 +82,6 @@
@click.stop="showSparePart = true"></u-icon>
</template>
</u-form-item>
-
<u-form-item v-if="selectedSpareParts.length"
label="棰嗙敤鏁伴噺"
border-bottom>
@@ -119,7 +118,6 @@
format="YYYY-MM-DD HH:mm:ss"
@confirm="onDateConfirm"
@cancel="showDatePicker = false" />
-
<!-- 璁惧澶囦欢閫夋嫨鍣� -->
<up-popup :show="showSparePart"
mode="bottom"
@@ -155,7 +153,7 @@
import { onShow } from "@dcloudio/uni-app";
import PageHeader from "@/components/PageHeader.vue";
import { addMaintain } from "@/api/equipmentManagement/repair";
- import { getSparePartsList } from "@/api/equipmentManagement/spareParts";
+ import { getSparePartsList } from "@/api/equipmentManagement/repair";
import useUserStore from "@/store/modules/user";
import dayjs from "dayjs";
@@ -232,7 +230,7 @@
};
selectedSpareParts.value = [];
tempSelectedSpareParts.value = [];
- Object.keys(sparePartQtyMap).forEach((k) => delete sparePartQtyMap[k]);
+ Object.keys(sparePartQtyMap).forEach(k => delete sparePartQtyMap[k]);
};
const resetFormAndValidate = () => {
@@ -265,7 +263,10 @@
}
form.value.status = Number(form.value.status);
// 棰嗙敤鏁伴噺鏍¢獙
- if (Array.isArray(form.value.sparePartsIds) && form.value.sparePartsIds.length > 0) {
+ if (
+ Array.isArray(form.value.sparePartsIds) &&
+ form.value.sparePartsIds.length > 0
+ ) {
for (const partId of form.value.sparePartsIds) {
const qty = Number(sparePartQtyMap?.[partId]);
if (!Number.isFinite(qty) || qty <= 0) {
@@ -273,11 +274,19 @@
loading.value = false;
return;
}
- const part = sparePartOptions.value.find((p) => String(p.id) === String(partId));
+ const part = sparePartOptions.value.find(
+ p => String(p.id) === String(partId)
+ );
const stock = part?.quantity;
- if (stock !== null && stock !== undefined && Number.isFinite(Number(stock))) {
+ if (
+ stock !== null &&
+ stock !== undefined &&
+ Number.isFinite(Number(stock))
+ ) {
if (qty > Number(stock)) {
- showToast(`澶囦欢銆�${part?.name || ""}銆嶉鐢ㄦ暟閲忎笉鑳借秴杩囧簱瀛橈紙${stock}锛塦);
+ showToast(
+ `澶囦欢銆�${part?.name || ""}銆嶉鐢ㄦ暟閲忎笉鑳借秴杩囧簱瀛橈紙${stock}锛塦
+ );
loading.value = false;
return;
}
@@ -285,12 +294,21 @@
}
}
- const spareIds = Array.isArray(form.value.sparePartsIds) ? form.value.sparePartsIds : [];
+ const spareIds = Array.isArray(form.value.sparePartsIds)
+ ? form.value.sparePartsIds
+ : [];
const submitData = {
...form.value,
sparePartsIds: spareIds.length ? spareIds.join(",") : "",
- sparePartsQty: spareIds.length ? spareIds.map((pid) => sparePartQtyMap?.[pid] ?? 1).join(",") : "",
- sparePartsUseList: spareIds.length ? spareIds.map((pid) => ({ id: pid, quantity: sparePartQtyMap?.[pid] ?? 1 })) : [],
+ sparePartsQty: spareIds.length
+ ? spareIds.map(pid => sparePartQtyMap?.[pid] ?? 1).join(",")
+ : "",
+ sparePartsUseList: spareIds.length
+ ? spareIds.map(pid => ({
+ id: pid,
+ quantity: sparePartQtyMap?.[pid] ?? 1,
+ }))
+ : [],
};
const { code } = await addMaintain({ id: id, ...submitData });
@@ -344,12 +362,14 @@
}
};
- const isSparePartSelected = (id) => {
- return tempSelectedSpareParts.value.some((p) => String(p.id) === String(id));
+ const isSparePartSelected = id => {
+ return tempSelectedSpareParts.value.some(p => String(p.id) === String(id));
};
- const toggleSparePartSelection = (item) => {
- const idx = tempSelectedSpareParts.value.findIndex((p) => String(p.id) === String(item.id));
+ const toggleSparePartSelection = item => {
+ const idx = tempSelectedSpareParts.value.findIndex(
+ p => String(p.id) === String(item.id)
+ );
if (idx >= 0) {
tempSelectedSpareParts.value.splice(idx, 1);
delete sparePartQtyMap[item.id];
@@ -367,20 +387,23 @@
const confirmSparePartSelection = () => {
selectedSpareParts.value = [...tempSelectedSpareParts.value];
- form.value.sparePartsIds = selectedSpareParts.value.map((i) => i.id);
+ form.value.sparePartsIds = selectedSpareParts.value.map(i => i.id);
// 淇濆簳缁欐湭濉殑鏁伴噺璧嬪��
- selectedSpareParts.value.forEach((p) => {
- if (!Number.isFinite(Number(sparePartQtyMap[p.id])) || Number(sparePartQtyMap[p.id]) <= 0) {
+ selectedSpareParts.value.forEach(p => {
+ if (
+ !Number.isFinite(Number(sparePartQtyMap[p.id])) ||
+ Number(sparePartQtyMap[p.id]) <= 0
+ ) {
sparePartQtyMap[p.id] = 1;
}
});
showSparePart.value = false;
};
- const removeSparePart = (index) => {
+ const removeSparePart = index => {
const removed = selectedSpareParts.value.splice(index, 1)[0];
tempSelectedSpareParts.value = [...selectedSpareParts.value];
- form.value.sparePartsIds = selectedSpareParts.value.map((i) => i.id);
+ form.value.sparePartsIds = selectedSpareParts.value.map(i => i.id);
if (removed?.id !== null && removed?.id !== undefined) {
delete sparePartQtyMap[removed.id];
}
@@ -408,17 +431,23 @@
initForm();
});
- watch(showSparePart, (val) => {
+ watch(showSparePart, val => {
if (val) {
tempSelectedSpareParts.value = [...selectedSpareParts.value];
- tempSelectedSpareParts.value.forEach((p) => {
- if (!Number.isFinite(Number(sparePartQtyMap[p.id])) || Number(sparePartQtyMap[p.id]) <= 0) {
+ tempSelectedSpareParts.value.forEach(p => {
+ if (
+ !Number.isFinite(Number(sparePartQtyMap[p.id])) ||
+ Number(sparePartQtyMap[p.id]) <= 0
+ ) {
sparePartQtyMap[p.id] = 1;
}
});
// 鍏滃簳锛氬鏋滆繕娌″姞杞藉浠跺垪琛紝鎵撳紑寮圭獥鏃跺啀鎷変竴娆�
- if (!Array.isArray(sparePartOptions.value) || sparePartOptions.value.length === 0) {
+ if (
+ !Array.isArray(sparePartOptions.value) ||
+ sparePartOptions.value.length === 0
+ ) {
fetchSparePartOptions().catch(() => {});
}
}
diff --git a/src/pages/equipmentManagement/upkeep/maintain.vue b/src/pages/equipmentManagement/upkeep/maintain.vue
index b11a585..f86006c 100644
--- a/src/pages/equipmentManagement/upkeep/maintain.vue
+++ b/src/pages/equipmentManagement/upkeep/maintain.vue
@@ -79,7 +79,6 @@
@click="showSparePartPicker" />
</template>
</u-form-item>
-
<u-form-item v-if="selectedSpareParts.length"
label="棰嗙敤鏁伴噺"
border-bottom>
@@ -236,10 +235,8 @@
import { ref, onMounted, reactive } from "vue";
import { onShow } from "@dcloudio/uni-app";
import PageHeader from "@/components/PageHeader.vue";
- import {
- addMaintenance,
- } from "@/api/equipmentManagement/upkeep";
- import { getSparePartsList } from "@/api/equipmentManagement/spareParts";
+ import { addMaintenance } from "@/api/equipmentManagement/upkeep";
+ import { getSparePartsList } from "@/api/equipmentManagement/repair";
import useUserStore from "@/store/modules/user";
import dayjs from "dayjs";
import { formatDateToYMD } from "@/utils/ruoyi";
@@ -337,7 +334,7 @@
maintenancestatusText.value = "";
selectedSpareParts.value = [];
tempSelectedSpareParts.value = [];
- Object.keys(sparePartQtyMap).forEach((k) => delete sparePartQtyMap[k]);
+ Object.keys(sparePartQtyMap).forEach(k => delete sparePartQtyMap[k]);
sparePartsQtyRaw.value = "";
};
@@ -406,7 +403,9 @@
return;
}
// 棰嗙敤鏁伴噺鏍¢獙
- const spareIds = Array.isArray(form.value.sparePartsIds) ? form.value.sparePartsIds : [];
+ const spareIds = Array.isArray(form.value.sparePartsIds)
+ ? form.value.sparePartsIds
+ : [];
if (spareIds.length > 0) {
for (const partId of spareIds) {
const qty = Number(sparePartQtyMap?.[partId]);
@@ -415,11 +414,19 @@
loading.value = false;
return;
}
- const part = sparePartOptions.value.find((p) => String(p.id || p.value) === String(partId));
+ const part = sparePartOptions.value.find(
+ p => String(p.id || p.value) === String(partId)
+ );
const stock = part?.quantity;
- if (stock !== null && stock !== undefined && Number.isFinite(Number(stock))) {
+ if (
+ stock !== null &&
+ stock !== undefined &&
+ Number.isFinite(Number(stock))
+ ) {
if (qty > Number(stock)) {
- showToast(`澶囦欢銆�${part?.name || ""}銆嶉鐢ㄦ暟閲忎笉鑳借秴杩囧簱瀛橈紙${stock}锛塦);
+ showToast(
+ `澶囦欢銆�${part?.name || ""}銆嶉鐢ㄦ暟閲忎笉鑳借秴杩囧簱瀛橈紙${stock}锛塦
+ );
loading.value = false;
return;
}
@@ -431,8 +438,15 @@
...form.value,
imagesFile: form.value.status == "1" ? uploadFiles.value : [],
sparePartsIds: spareIds.length ? spareIds.join(",") : "",
- sparePartsQty: spareIds.length ? spareIds.map((pid) => sparePartQtyMap?.[pid] ?? 1).join(",") : "",
- sparePartsUseList: spareIds.length ? spareIds.map((pid) => ({ id: pid, quantity: sparePartQtyMap?.[pid] ?? 1 })) : [],
+ sparePartsQty: spareIds.length
+ ? spareIds.map(pid => sparePartQtyMap?.[pid] ?? 1).join(",")
+ : "",
+ sparePartsUseList: spareIds.length
+ ? spareIds.map(pid => ({
+ id: pid,
+ quantity: sparePartQtyMap?.[pid] ?? 1,
+ }))
+ : [],
};
const { code } = await addMaintenance({ id: id, ...submitData });
@@ -512,10 +526,13 @@
// 鏄剧ず璁惧澶囦欢閫夋嫨鍣�
const showSparePartPicker = () => {
tempSelectedSpareParts.value = [...selectedSpareParts.value];
- tempSelectedSpareParts.value.forEach((p) => {
+ tempSelectedSpareParts.value.forEach(p => {
const pid = p?.id ?? p?.value;
if (pid !== null && pid !== undefined) {
- if (!Number.isFinite(Number(sparePartQtyMap[pid])) || Number(sparePartQtyMap[pid]) <= 0) {
+ if (
+ !Number.isFinite(Number(sparePartQtyMap[pid])) ||
+ Number(sparePartQtyMap[pid]) <= 0
+ ) {
sparePartQtyMap[pid] = 1;
}
}
@@ -541,7 +558,10 @@
delete sparePartQtyMap[itemId];
} else {
tempSelectedSpareParts.value.push(item);
- if (!Number.isFinite(Number(sparePartQtyMap[itemId])) || Number(sparePartQtyMap[itemId]) <= 0) {
+ if (
+ !Number.isFinite(Number(sparePartQtyMap[itemId])) ||
+ Number(sparePartQtyMap[itemId]) <= 0
+ ) {
sparePartQtyMap[itemId] = 1;
}
}
@@ -550,11 +570,16 @@
// 纭澶囦欢閫夋嫨
const confirmSparePartSelection = () => {
selectedSpareParts.value = [...tempSelectedSpareParts.value];
- form.value.sparePartsIds = selectedSpareParts.value.map(item => item.id || item.value);
- selectedSpareParts.value.forEach((p) => {
+ form.value.sparePartsIds = selectedSpareParts.value.map(
+ item => item.id || item.value
+ );
+ selectedSpareParts.value.forEach(p => {
const pid = p?.id ?? p?.value;
if (pid !== null && pid !== undefined) {
- if (!Number.isFinite(Number(sparePartQtyMap[pid])) || Number(sparePartQtyMap[pid]) <= 0) {
+ if (
+ !Number.isFinite(Number(sparePartQtyMap[pid])) ||
+ Number(sparePartQtyMap[pid]) <= 0
+ ) {
sparePartQtyMap[pid] = 1;
}
}
@@ -565,7 +590,9 @@
// 绉婚櫎宸查�夊浠�
const removeSparePart = index => {
const removed = selectedSpareParts.value.splice(index, 1)[0];
- form.value.sparePartsIds = selectedSpareParts.value.map(item => item.id || item.value);
+ form.value.sparePartsIds = selectedSpareParts.value.map(
+ item => item.id || item.value
+ );
const rid = removed?.id ?? removed?.value;
if (rid !== null && rid !== undefined) delete sparePartQtyMap[rid];
};
@@ -671,7 +698,9 @@
const idArray =
typeof sparePartsIds.value === "string"
? sparePartsIds.value.split(",")
- : (Array.isArray(sparePartsIds.value) ? sparePartsIds.value : []);
+ : Array.isArray(sparePartsIds.value)
+ ? sparePartsIds.value
+ : [];
if (idArray.length > 0) {
selectedSpareParts.value = sparePartOptions.value
@@ -688,28 +717,41 @@
quantity: option.quantity,
}));
// 璁剧疆澶囦欢IDs锛堜繚鎸佹暟缁勶紝鎻愪氦鏃跺啀 join锛�
- form.value.sparePartsIds = idArray.map((v) => {
+ form.value.sparePartsIds = idArray.map(v => {
const n = Number(String(v).trim());
return Number.isFinite(n) ? n : String(v).trim();
});
// 鍥炴樉棰嗙敤鏁伴噺锛堣嫢鏈� sparePartsQty锛�
- if (typeof sparePartsQtyRaw.value === "string" && sparePartsQtyRaw.value.trim()) {
- const qtyArr = sparePartsQtyRaw.value.split(",").map((s) => Number(String(s).trim()));
+ if (
+ typeof sparePartsQtyRaw.value === "string" &&
+ sparePartsQtyRaw.value.trim()
+ ) {
+ const qtyArr = sparePartsQtyRaw.value
+ .split(",")
+ .map(s => Number(String(s).trim()));
selectedSpareParts.value.forEach((p, idx) => {
const pid = p?.id ?? p?.value;
const q = qtyArr[idx];
- if (pid !== null && pid !== undefined && Number.isFinite(q) && q > 0) {
+ if (
+ pid !== null &&
+ pid !== undefined &&
+ Number.isFinite(q) &&
+ q > 0
+ ) {
sparePartQtyMap[pid] = q;
}
});
}
// 榛樿鏁伴噺鍏滃簳
- selectedSpareParts.value.forEach((p) => {
+ selectedSpareParts.value.forEach(p => {
const pid = p?.id ?? p?.value;
if (pid !== null && pid !== undefined) {
- if (!Number.isFinite(Number(sparePartQtyMap[pid])) || Number(sparePartQtyMap[pid]) <= 0) {
+ if (
+ !Number.isFinite(Number(sparePartQtyMap[pid])) ||
+ Number(sparePartQtyMap[pid]) <= 0
+ ) {
sparePartQtyMap[pid] = 1;
}
}
--
Gitblit v1.9.3