From f49bfd6c085cbf28a25d9404f8dc5b74368b716a Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 29 五月 2026 15:54:02 +0800
Subject: [PATCH] 新疆马铃薯 1.代码更新
---
src/views/equipmentManagement/upkeep/Form/MaintenanceModal.vue | 361 ++++++++++++++++++++++++---------------------------
1 files changed, 172 insertions(+), 189 deletions(-)
diff --git a/src/views/equipmentManagement/upkeep/Form/MaintenanceModal.vue b/src/views/equipmentManagement/upkeep/Form/MaintenanceModal.vue
index 0fcccb2..e86b64a 100644
--- a/src/views/equipmentManagement/upkeep/Form/MaintenanceModal.vue
+++ b/src/views/equipmentManagement/upkeep/Form/MaintenanceModal.vue
@@ -1,216 +1,199 @@
<template>
- <FormDialog v-model="visible"
- :title="'璁惧淇濆吇'"
- width="500px"
- @confirm="sendForm"
- @cancel="handleCancel"
- @close="handleClose">
- <el-form :model="form"
- label-width="100px">
+ <FormDialog
+ v-model="visible"
+ :title="'璁惧淇濆吇'"
+ width="500px"
+ @confirm="sendForm"
+ @cancel="handleCancel"
+ @close="handleClose"
+ >
+ <el-form :model="form" label-width="100px">
<el-form-item label="瀹為檯淇濆吇浜�">
- <el-input v-model="form.maintenanceActuallyName"
- placeholder="璇疯緭鍏ュ疄闄呬繚鍏讳汉"></el-input>
+ <el-input
+ v-model="form.maintenanceActuallyName"
+ placeholder="璇疯緭鍏ュ疄闄呬繚鍏讳汉"
+ ></el-input>
</el-form-item>
<el-form-item label="瀹為檯淇濆吇鏃ユ湡">
- <el-date-picker v-model="form.maintenanceActuallyTime"
- placeholder="璇烽�夋嫨瀹為檯淇濆吇鏃ユ湡"
- format="YYYY-MM-DD HH:mm:ss"
- value-format="YYYY-MM-DD HH:mm:ss"
- type="datetime"
- clearable
- style="width: 100%" />
+ <el-date-picker
+ v-model="form.maintenanceActuallyTime"
+ placeholder="璇烽�夋嫨瀹為檯淇濆吇鏃ユ湡"
+ format="YYYY-MM-DD HH:mm:ss"
+ value-format="YYYY-MM-DD HH:mm:ss"
+ type="datetime"
+ clearable
+ style="width: 100%"
+ />
</el-form-item>
<el-form-item label="淇濆吇鐘舵��">
<el-select v-model="form.status">
- <el-option label="寰呬繚鍏�"
- :value="0"></el-option>
- <el-option label="瀹岀粨"
- :value="1"></el-option>
- <el-option label="澶辫触"
- :value="2"></el-option>
+ <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-form-item label="淇濆吇缁撴灉">
- <el-input v-model="form.maintenanceResult"
- placeholder="璇疯緭鍏ヤ繚鍏荤粨鏋�"
- type="text" />
+ <el-input
+ v-model="form.maintenanceResult"
+ 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 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-item v-if="selectedSpareParts.length"
- label="棰嗙敤鏁伴噺">
+
+ <el-form-item v-if="selectedSpareParts.length" label="棰嗙敤鏁伴噺">
<div style="width: 100%">
- <div v-for="item in selectedSpareParts"
- :key="item.id"
- style="display: flex; align-items: center; gap: 10px; margin-bottom: 10px;">
+ <div
+ v-for="item in selectedSpareParts"
+ :key="item.id"
+ style="display: flex; align-items: center; gap: 10px; margin-bottom: 10px;"
+ >
<div style="flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;">
{{ item.name }}
- <span v-if="item.quantity !== null && item.quantity !== undefined"
- style="color: #909399;">
+ <span v-if="item.quantity !== null && item.quantity !== undefined" style="color: #909399;">
锛堝簱瀛橈細{{ item.quantity }}锛�
</span>
</div>
- <el-input-number v-model="sparePartQtyMap[item.id]"
- :min="1"
- :max="item.quantity !== null && item.quantity !== undefined ? Number(item.quantity) : undefined"
- :step="1"
- controls-position="right"
- style="width: 180px" />
+ <el-input-number
+ v-model="sparePartQtyMap[item.id]"
+ :min="1"
+ :max="item.quantity !== null && item.quantity !== undefined ? Number(item.quantity) : undefined"
+ :step="1"
+ controls-position="right"
+ style="width: 180px"
+ />
</div>
</div>
- </el-form-item>
- <el-form-item label="闄勪欢">
- <FileUpload v-model:file-list="form.storageBlobDTOs" />
</el-form-item>
</el-form>
</FormDialog>
</template>
<script setup>
- import FormDialog from "@/components/Dialog/FormDialog.vue";
- import FileUpload from "@/components/AttachmentUpload/file/index.vue";
- import { addMaintenance } from "@/api/equipmentManagement/upkeep";
- import useFormData from "@/hooks/useFormData";
- import dayjs from "dayjs";
- import useUserStore from "@/store/modules/user";
- import { ElMessage } from "element-plus";
- import { computed, ref, nextTick, getCurrentInstance } from "vue";
- import { getSparePartsList } from "@/api/equipmentManagement/spareParts.js";
+import FormDialog from "@/components/Dialog/FormDialog.vue";
+import { addMaintenance } from "@/api/equipmentManagement/upkeep";
+import useFormData from "@/hooks/useFormData";
+import dayjs from "dayjs";
+import useUserStore from "@/store/modules/user";
+import { ElMessage } from "element-plus";
+import {computed, ref} from "vue";
+import {getSparePartsList} from "@/api/equipmentManagement/spareParts.js";
- defineOptions({
- name: "淇濆吇妯℃�佹",
- });
+defineOptions({
+ name: "淇濆吇妯℃�佹",
+});
- const emits = defineEmits(["ok"]);
+const emits = defineEmits(["ok"]);
- const { proxy } = getCurrentInstance();
- // 淇濆瓨璁″垝淇濆吇璁板綍鐨刬d
- const planId = ref();
- const visible = ref(false);
- const loading = ref(false);
- const userStore = useUserStore();
+// 淇濆瓨璁″垝淇濆吇璁板綍鐨刬d
+const planId = ref();
+const visible = ref(false);
+const loading = ref(false);
+const userStore = useUserStore();
- const { form, resetForm } = useFormData({
- maintenanceActuallyName: undefined, // 瀹為檯淇濆吇浜�
- maintenanceActuallyTime: undefined, // 瀹為檯淇濆吇鏃ユ湡
- maintenanceResult: undefined, // 淇濆吇缁撴灉
- status: 0, // 淇濆吇鐘舵��
- sparePartsIds: [],
- storageBlobDTOs: [],
- });
+const { form, resetForm } = useFormData({
+ maintenanceActuallyName: undefined, // 瀹為檯淇濆吇浜�
+ maintenanceActuallyTime: undefined, // 瀹為檯淇濆吇鏃ユ湡
+ maintenanceResult: undefined, // 淇濆吇缁撴灉
+ status: 0, // 淇濆吇鐘舵��
+ sparePartsIds: [],
+});
- const sparePartOptions = ref([]);
- const loadingSparePartOptions = ref(true);
- const sparePartQtyMap = ref({});
+const sparePartOptions = ref([])
+const loadingSparePartOptions = ref(true)
+const sparePartQtyMap = ref({})
- const selectedSpareParts = computed(() => {
- const ids = Array.isArray(form.sparePartsIds) ? form.sparePartsIds : [];
- const set = new Set(ids.map(i => String(i)));
- return (sparePartOptions.value || []).filter(p => set.has(String(p.id)));
- });
+const selectedSpareParts = computed(() => {
+ const ids = Array.isArray(form.sparePartsIds) ? form.sparePartsIds : [];
+ const set = new Set(ids.map((i) => String(i)));
+ return (sparePartOptions.value || []).filter((p) => set.has(String(p.id)));
+});
- const setForm = data => {
- form.maintenanceActuallyName =
- data.maintenanceActuallyName ?? userStore.nickName;
- form.maintenanceActuallyTime = data.maintenanceActuallyTime
+const setForm = (data) => {
+ form.maintenanceActuallyName =
+ data.maintenanceActuallyName ?? userStore.nickName;
+ form.maintenanceActuallyTime =
+ data.maintenanceActuallyTime
? dayjs(data.maintenanceActuallyTime).format("YYYY-MM-DD HH:mm:ss")
: dayjs().format("YYYY-MM-DD HH:mm:ss");
- form.maintenanceResult = data.maintenanceResult;
- form.status = 1; // 榛樿鐘舵�佷负瀹岀粨
- // multiple 閫夋嫨鍣ㄨ姹傛暟缁勶紱鍚庣甯歌繑鍥� "1,2,3"
- if (Array.isArray(data?.sparePartsIds)) {
- form.sparePartsIds = data.sparePartsIds
- .map(v => Number(v))
- .filter(v => Number.isFinite(v));
- } else if (typeof data?.sparePartsIds === "string") {
- form.sparePartsIds = data.sparePartsIds
+ form.maintenanceResult = data.maintenanceResult;
+ form.status = 1; // 榛樿鐘舵�佷负瀹岀粨
+ // multiple 閫夋嫨鍣ㄨ姹傛暟缁勶紱鍚庣甯歌繑鍥� "1,2,3"
+ if (Array.isArray(data?.sparePartsIds)) {
+ form.sparePartsIds = data.sparePartsIds.map((v) => Number(v)).filter((v) => Number.isFinite(v));
+ } else if (typeof data?.sparePartsIds === "string") {
+ form.sparePartsIds = data.sparePartsIds
.split(",")
- .map(s => Number(String(s).trim()))
- .filter(v => Number.isFinite(v));
- } else if (typeof data?.sparePartsIds === "number") {
- form.sparePartsIds = [data.sparePartsIds];
- } else {
- form.sparePartsIds = [];
- }
- form.storageBlobDTOs = data.storageBlobVOs || [];
- };
+ .map((s) => Number(String(s).trim()))
+ .filter((v) => Number.isFinite(v));
+ } else if (typeof data?.sparePartsIds === "number") {
+ form.sparePartsIds = [data.sparePartsIds];
+ } else {
+ form.sparePartsIds = [];
+ }
+};
- /**
- * @desc 淇濆瓨淇濆吇
- */
- const sendForm = async () => {
- loading.value = true;
- try {
- // 棰嗙敤鏁伴噺鏍¢獙
- if (Array.isArray(form.sparePartsIds) && form.sparePartsIds.length > 0) {
- for (const partId of form.sparePartsIds) {
- const qty = Number(sparePartQtyMap.value?.[partId]);
- if (!Number.isFinite(qty) || qty <= 0) {
- proxy?.$modal?.msgError?.("璇峰~鍐欏浠堕鐢ㄦ暟閲�");
+/**
+ * @desc 淇濆瓨淇濆吇
+ */
+const sendForm = async () => {
+ loading.value = true;
+ try {
+ // 棰嗙敤鏁伴噺鏍¢獙
+ if (Array.isArray(form.sparePartsIds) && form.sparePartsIds.length > 0) {
+ for (const partId of form.sparePartsIds) {
+ const qty = Number(sparePartQtyMap.value?.[partId]);
+ if (!Number.isFinite(qty) || qty <= 0) {
+ proxy?.$modal?.msgError?.("璇峰~鍐欏浠堕鐢ㄦ暟閲�");
+ return;
+ }
+ 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 (qty > Number(stock)) {
+ proxy?.$modal?.msgError?.(`澶囦欢銆�${part?.name || ""}銆嶉鐢ㄦ暟閲忎笉鑳借秴杩囧簱瀛橈紙${stock}锛塦);
return;
- }
- 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 (qty > Number(stock)) {
- proxy?.$modal?.msgError?.(
- `澶囦欢銆�${part?.name || ""}銆嶉鐢ㄦ暟閲忎笉鑳借秴杩囧簱瀛橈紙${stock}锛塦
- );
- return;
- }
}
}
}
- const data = {
- id: planId.value,
- ...form,
- sparePartsIds: form.sparePartsIds ? form.sparePartsIds.join(",") : "",
- sparePartsQty: form.sparePartsIds
- ? form.sparePartsIds
- .map(id => sparePartQtyMap.value?.[id] ?? 1)
- .join(",")
- : "",
- sparePartsUseList: form.sparePartsIds
- ? form.sparePartsIds.map(id => ({
- id,
- quantity: sparePartQtyMap.value?.[id] ?? 1,
- }))
- : [],
- };
- const { code } = await addMaintenance(data);
- if (code == 200) {
- ElMessage.success("淇濆吇鎴愬姛");
- emits("ok");
- resetForm();
- sparePartQtyMap.value = {};
- visible.value = false;
- }
- } finally {
- loading.value = false;
}
- };
+ const data = {
+ id: planId.value,
+ ...form,
+ sparePartsIds: form.sparePartsIds ? form.sparePartsIds.join(",") : "",
+ sparePartsQty: form.sparePartsIds
+ ? form.sparePartsIds.map((id) => sparePartQtyMap.value?.[id] ?? 1).join(",")
+ : "",
+ sparePartsUseList: form.sparePartsIds
+ ? form.sparePartsIds.map((id) => ({ id, quantity: sparePartQtyMap.value?.[id] ?? 1 }))
+ : [],
+ }
+ const { code } = await addMaintenance(data);
+ if (code == 200) {
+ ElMessage.success("淇濆吇鎴愬姛");
+ emits("ok");
+ resetForm();
+ sparePartQtyMap.value = {};
+ visible.value = false;
+ }
+ } finally {
+ loading.value = false;
+ }
+};
- const fetchSparePartOptions = () => {
- loadingSparePartOptions.value = true;
- // 鍜屽浠剁鐞嗛〉涓�鑷达細/spareParts/listPage 鈫� res.data.records
- getSparePartsList({ current: 1, size: 1000 })
- .then(res => {
+const fetchSparePartOptions = () => {
+ loadingSparePartOptions.value = true;
+ // 鍜屽浠剁鐞嗛〉涓�鑷达細/spareParts/listPage 鈫� res.data.records
+ getSparePartsList({ current: 1, size: 1000 })
+ .then((res) => {
if (res.code === 200) {
sparePartOptions.value = res?.data?.records || [];
} else {
@@ -223,31 +206,31 @@
.finally(() => {
loadingSparePartOptions.value = false;
});
- };
+}
- const handleCancel = () => {
- resetForm();
- sparePartQtyMap.value = {};
- visible.value = false;
- };
+const handleCancel = () => {
+ resetForm();
+ sparePartQtyMap.value = {};
+ visible.value = false;
+};
- const handleClose = () => {
- resetForm();
- sparePartQtyMap.value = {};
- visible.value = false;
- };
+const handleClose = () => {
+ resetForm();
+ sparePartQtyMap.value = {};
+ visible.value = false;
+};
- const open = async (id, row) => {
- planId.value = id; // 淇濆瓨璁″垝淇濆吇璁板綍鐨刬d
- visible.value = true;
- await nextTick();
- fetchSparePartOptions();
- setForm(row);
- };
+const open = async (id, row) => {
+ planId.value = id; // 淇濆瓨璁″垝淇濆吇璁板綍鐨刬d
+ visible.value = true;
+ await nextTick();
+ fetchSparePartOptions()
+ setForm(row);
+};
- defineExpose({
- open,
- });
+defineExpose({
+ open,
+});
</script>
<style lang="scss" scoped></style>
--
Gitblit v1.9.3