From 77bb73aaef8f85d961b373731a05361cbe6921de Mon Sep 17 00:00:00 2001 From: 张诺 <2864490065@qq.com> Date: 星期五, 25 七月 2025 14:06:57 +0800 Subject: [PATCH] 提交设备管理优化 以及防抖功能 --- src/views/equipment/management/mould/equipmentRequisitionDialog.vue | 103 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 93 insertions(+), 10 deletions(-) diff --git a/src/views/equipment/management/mould/equipmentRequisitionDialog.vue b/src/views/equipment/management/mould/equipmentRequisitionDialog.vue index c3f6907..92768ec 100644 --- a/src/views/equipment/management/mould/equipmentRequisitionDialog.vue +++ b/src/views/equipment/management/mould/equipmentRequisitionDialog.vue @@ -87,10 +87,17 @@ >(鏈�澶歿{ remainingReturnQuantity }}鍙�)</span > <span - style="color: #ff4d4f; font-size: 12px; margin-left: 8px" + style="color: #67c23a; font-size: 12px; margin-left: 8px" v-else >(宸插叏閮ㄥ綊杩�)</span > + <!-- 褰掕繕瀹屾垚鎻愮ず --> + <div + v-if="remainingReturnQuantity > 0 && form.returnQuantity === remainingReturnQuantity" + style="color: #67c23a; font-size: 12px; margin-top: 4px" + > + 馃挕 鎻愮ず锛氭湰娆″綊杩樺悗灏嗗畬鎴愬叏閮ㄥ綊杩� + </div> </el-form-item> <!-- 浣跨敤寮�濮嬫椂闂� - 鍙湪闈炲綊杩樻ā寮忔樉绀� --> <el-form-item label="浣跨敤寮�濮嬫椂闂�" prop="usageStartTime" v-if="!isReturnMode"> @@ -127,7 +134,7 @@ </el-form> <template #footer> <el-button @click="handleClose">鍙栨秷</el-button> - <el-button type="primary" @click="handleSubmit" v-if="!isViewMode" + <el-button type="primary" @click="debouncedSubmit" v-if="!isViewMode" >纭畾</el-button > </template> @@ -136,7 +143,7 @@ <script setup> import { ref, watch, computed, onMounted } from "vue"; -import { ElMessage } from "element-plus"; +import { ElMessage, ElMessageBox } from "element-plus"; import { getEquipmentList } from "@/api/publicApi/index.js"; import { addOrEditUsageRecord } from "@/api/equipment/requisition/index.js"; @@ -313,8 +320,23 @@ emit("update:modelValue", false); } -function handleSubmit() { - formRef.value.validate((valid) => { +// 閫氱敤闃叉姈鍑芥暟 +function debounce(fn, delay = 800) { + let timer = null; + return function (...args) { + if (timer) clearTimeout(timer); + timer = setTimeout(() => { + fn.apply(this, args); + timer = null; + }, delay); + }; +} + +// 闃叉姈鍚庣殑鎻愪氦鏂规硶 +const debouncedSubmit = debounce(handleSubmit, 800); + +function handleSubmit () { + formRef.value.validate(async (valid) => { if (!valid) return; let submitData = { ...form.value }; @@ -326,20 +348,81 @@ const alreadyReturnedQuantity = props.formData.totalReturnNo || 0; const newTotalReturnedQuantity = alreadyReturnedQuantity + currentReturnQuantity; + // 鍒ゆ柇鏄惁鍏ㄩ儴褰掕繕瀹屾垚 + let equipmentStatus = 2; // 榛樿涓洪儴鍒嗗綊杩� + let isFullyReturned = newTotalReturnedQuantity >= totalUsageQuantity; + + if (isFullyReturned) { + equipmentStatus = 3; // 鍏ㄩ儴褰掕繕瀹屾垚 + + // 鍏ㄩ儴褰掕繕鏃剁殑纭鎻愮ず + try { + await ElMessageBox.confirm( + `纭灏嗚澶�"${props.formData.equipmentName || '鏈煡璁惧'}"鍏ㄩ儴褰掕繕鍚楋紵褰掕繕鍚庤澶囩姸鎬佸皢鍙樹负"宸插綊杩�"銆俙, + '纭鍏ㄩ儴褰掕繕', + { + confirmButtonText: '纭褰掕繕', + cancelButtonText: '鍙栨秷', + type: 'success', + } + ); + } catch (error) { + if (error === 'cancel') { + ElMessage.info('宸插彇娑堝綊杩樻搷浣�'); + return; + } + } + + console.log('璁惧褰掕繕瀹屾垚:', { + 璁惧鍚嶇О: props.formData.equipmentName, + 鎬讳娇鐢ㄦ暟閲�: totalUsageQuantity, + 鏂扮殑褰掕繕鎬绘暟: newTotalReturnedQuantity, + 鐘舵��: '宸插叏閮ㄥ綊杩�' + }); + } else { + console.log('璁惧閮ㄥ垎褰掕繕:', { + 璁惧鍚嶇О: props.formData.equipmentName, + 鎬讳娇鐢ㄦ暟閲�: totalUsageQuantity, + 宸插綊杩樻暟閲�: newTotalReturnedQuantity, + 鍓╀綑鏈綊杩�: totalUsageQuantity - newTotalReturnedQuantity, + 鐘舵��: '閮ㄥ垎褰掕繕' + }); + } + submitData = { ...props.formData, totalReturnNo: newTotalReturnedQuantity, returnQuantity: currentReturnQuantity, returnTime: form.value.returnTime, - equipmentStatus: 2, + equipmentStatus: equipmentStatus, remarks: form.value.remarks, usageQuantity: totalUsageQuantity }; } - - addOrEditUsageRecord(submitData); - emit("submit", submitData); - handleClose(); + + try { + let {code,data} = await addOrEditUsageRecord(submitData); + if (code !== 200) { + ElMessage.error(data.msg || "鎿嶄綔澶辫触"); + return; + } + if(code == 200 && data == 1){ + // 鏍规嵁褰掕繕鐘舵�佺粰鍑轰笉鍚岀殑鎴愬姛鎻愮ず + if (isReturnMode.value && submitData.equipmentStatus === 3) { + ElMessage.success("璁惧宸插叏閮ㄥ綊杩樺畬鎴愶紒"); + } else if (isReturnMode.value && submitData.equipmentStatus === 2) { + ElMessage.success("璁惧閮ㄥ垎褰掕繕鎴愬姛锛�"); + } else { + ElMessage.success("鎿嶄綔鎴愬姛锛�"); + } + + emit("submit", submitData); + } + handleClose(); + } catch (error) { + console.error('鎻愪氦澶辫触:', error); + ElMessage.error("鎿嶄綔澶辫触锛岃绋嶅悗鍐嶈瘯"); + } }); } </script> -- Gitblit v1.9.3