diff --git a/src/views/weightManage/index.vue b/src/views/weightManage/index.vue
index 728a355..358f520 100644
--- a/src/views/weightManage/index.vue
+++ b/src/views/weightManage/index.vue
@@ -48,7 +48,7 @@
@@ -58,8 +58,9 @@
@@ -128,13 +129,13 @@
@@ -172,8 +173,8 @@
- {{ workOrderResp.matchResult === '1' ? '创建成功' : '创建失败' }}
- {{ workOrderResp.matchResult === '1' ? '任务已成功创建' : '任务创建失败' }},以下是任务详情:
+ {{ workOrderResp.matchResult === 'success' ? '创建成功' : '创建失败' }}
+ {{ workOrderResp.matchResult === 'success' ? '任务创建成功' : '任务创建失败' }},以下是任务详情:
任务工单号:
@@ -181,19 +182,23 @@
物料名称:
- {{ workOrderResp.materialName }}
+ {{ formData.materialName }}
物料编码:
- {{ workOrderResp.encoding }}
+ {{ formData.encoding }}
物料规格:
- {{ workOrderResp.materialSpec }}
+ {{ formData.materialSpec }}
- 重量:
- {{ workOrderResp.unitWeight }}
+ 物料总个数:
+ {{ workOrderResp.totalCount }}
+
+
+ 物料总重量(g):
+ {{ workOrderResp.totalWeight }}
@@ -260,7 +265,7 @@ const workOrderResp = ref({
totalCount: '',
createUserString: '',
updateUserString: '',
- matchResult: ''
+ matchResult: 'failed'
})
@@ -293,13 +298,13 @@ const columns = [
className: 'green-bg'
},
{
- title: '重量',
+ title: '重量(g)',
dataIndex: 'weight',
key: 'weight',
className: 'green-bg'
},
{
- title: '计算重量',
+ title: '计算重量(g)',
dataIndex: 'calculatedWeight',
key: 'calculatedWeight',
className: 'green-bg'
@@ -320,24 +325,67 @@ const columns = [
-// 处理物料编码变化
-const handleMaterialCodeChange = async () => {
- if (formData.inputMaterialCode) {
+// 防抖函数
+const debounce = any>(func: T, delay: number): ((...args: Parameters) => void) => {
+ let timer: ReturnType | null = null;
+ return function(...args: Parameters) {
+ if (timer) clearTimeout(timer);
+ timer = setTimeout(() => {
+ func(...args);
+ }, delay);
+ };
+};
+
+// 原始的物料编码变化处理函数
+const originalHandleMaterialCodeChange = async () => {
+ // 确保输入框内容是完整的物料编码
+ const materialCode = formData.inputMaterialCode?.trim();
+
+ // 无论是否有输入,先重置所有物料相关字段,确保新数据能完全覆盖旧数据
+ formData.encoding = "";
+ formData.materialName = "";
+ formData.materialSpec = "";
+ formData.unitWeight = 0;
+ formData.photoUrl = "";
+ formData.matchResult = "";
+
+ // 如果有物料编码输入,获取物料数据
+ if (materialCode) {
try {
- await fetchMaterialData(formData.inputMaterialCode)
+ await fetchMaterialData(materialCode)
} catch (error) {
console.error('获取物料数据失败:', error)
+ // 即使获取失败,也保持字段为空,避免显示旧数据
}
- } else {
- formData.encoding = "";
- formData.materialName = "";
- formData.materialSpec = "";
- formData.unitWeight = 0;
- formData.photoUrl = "";
- formData.matchResult = "";
}
};
+// 记录上次输入时间,用于判断是否是扫码枪输入
+let lastInputTime = 0;
+// 记录输入内容,用于判断是否是新的扫码
+let previousInput = '';
+
+// 处理键盘按下事件
+const handleKeyDown = (event: KeyboardEvent) => {
+ // 获取当前时间
+ const currentTime = Date.now();
+
+ // 如果输入速度非常快(小于100ms),认为是扫码枪输入
+ if (currentTime - lastInputTime < 100 && formData.inputMaterialCode) {
+ // 扫码枪通常会以回车键结束,这里不做处理
+ } else if (event.key.length === 1 && !event.ctrlKey && !event.altKey) {
+ // 如果是新的输入(不是快速连续输入),清空输入框
+ // 这样可以确保每次扫码都从空输入框开始
+ formData.inputMaterialCode = '';
+ }
+
+ // 更新上次输入时间
+ lastInputTime = currentTime;
+};
+
+// 带防抖的物料编码变化处理函数
+const handleMaterialCodeChange = debounce(originalHandleMaterialCodeChange, 500); // 500ms防抖延迟
+
// 扫码核验获取物料信息
const fetchMaterialData = async (code: string) => {
getMaterialDetail(code).then(res => {
@@ -351,7 +399,7 @@ const fetchMaterialData = async (code: string) => {
formData.photoUrl = res.data?.photoUrl || "";
// 假设后端返回比对结果
// formData.matchResult = res.data.matchResult || 'failed' // 这里根据实际接口返回调整
- formData.matchResult = res.data.matchResult || 'success' // 这里根据实际接口返回调整
+ formData.matchResult = res.data?.matchResult || 'success' // 这里根据实际接口返回调整
return true
}
});
@@ -373,26 +421,26 @@ const handleNext = async () => {
materialName: formData.materialName,
workOrderInfos: weighingList.value
}
-
// 调用后端接口
addWorkOrder(workOrderData).then(res => {
if (res.code == '0') {
Notification.success({
title: '操作成功',
- content: `操作成功!`
+ content: `工单创建成功!`
})
- workOrderResp.value = res.data || {}
+ workOrderResp.value.matchResult = 'success';
+ workOrderResp.value.title = res.data?.title || "";
+ workOrderResp.value.orderNo = res.data?.orderNo || "";
+ workOrderResp.value.totalWeight = res.data?.totalWeight || "";
+ workOrderResp.value.totalCount = res.data?.totalCount || "";
+
+ // 关闭WebSocket连接
+ closeWebSocket()
+ // 跳转到完成页面
+ activeStep.value++
return true
}
});
-
- // 关闭WebSocket连接
- closeWebSocket()
-
- // 跳转到完成页面
- activeStep.value++
-
- Message.success('工作订单创建成功')
} catch (error) {
console.error('创建工作订单失败:', error)
Message.error('创建工作订单失败')
@@ -444,6 +492,12 @@ const calculateWeight = () => {
// 处理确定
const handleConfirm = () => {
+ // 校验输入数量是否为空
+ if (!inputQuantity.value || inputQuantity.value.trim() === '') {
+ Message.error('请输入数量')
+ return
+ }
+
// 生成新的列表数据
const newItem = {
key: (weighingList.value.length + 1).toString(),
@@ -505,7 +559,6 @@ const establishWebSocket = () => {
}
ws.value.onclose = () => {
- Message.success('已和电子秤断开连接')
wsConnected.value = false
}
@@ -526,7 +579,6 @@ const closeWebSocket = () => {
ws.value.close()
ws.value = null
wsConnected.value = false
- console.log('WebSocket连接已关闭')
}
}