|
|
@@ -83,6 +83,9 @@ import { processException } from '../common/Common.js';
|
|
|
import { ajaxApiGet, ajaxApiPost } from '../common/utils.js';
|
|
|
import { showFailToast, showSuccessToast, showConfirmDialog } from 'vant';
|
|
|
|
|
|
+// WebSocket实例
|
|
|
+const ws = ref(null);
|
|
|
+
|
|
|
const route = useRoute();
|
|
|
const router = useRouter();
|
|
|
|
|
|
@@ -124,10 +127,16 @@ onMounted(() => {
|
|
|
warehouseId.value = route.query.warehouseId || '';
|
|
|
warehouseName.value = route.query.warehouseName || '';
|
|
|
title.value = route.query.warehouseName ? '出库 - ' + route.query.warehouseName : '出库';
|
|
|
+ // 建立WebSocket连接
|
|
|
+ initWebSocket();
|
|
|
});
|
|
|
|
|
|
// 在组件卸载时清除定时器(避免内存泄漏)
|
|
|
onUnmounted(() => {
|
|
|
+ // 关闭WebSocket连接
|
|
|
+ if (ws.value) {
|
|
|
+ ws.value.close();
|
|
|
+ }
|
|
|
clearTimeout(timer);
|
|
|
});
|
|
|
|
|
|
@@ -139,6 +148,76 @@ const goBack = () => {
|
|
|
router.push('/warehouse-selector?page=stock-out&warehouseId=' + warehouseId.value);
|
|
|
};
|
|
|
|
|
|
+// 初始化WebSocket连接
|
|
|
+const initWebSocket = () => {
|
|
|
+ const wsUrl = 'ws://127.0.0.1:10023';
|
|
|
+ ws.value = new WebSocket(wsUrl);
|
|
|
+
|
|
|
+ ws.value.onopen = () => {
|
|
|
+ console.log('WebSocket连接已建立');
|
|
|
+ };
|
|
|
+
|
|
|
+ ws.value.onmessage = event => {
|
|
|
+ handleWebSocketMessage(event);
|
|
|
+ };
|
|
|
+
|
|
|
+ ws.value.onerror = error => {
|
|
|
+ console.error('WebSocket错误:', error);
|
|
|
+ };
|
|
|
+
|
|
|
+ ws.value.onclose = () => {
|
|
|
+ console.log('WebSocket连接已关闭');
|
|
|
+ };
|
|
|
+};
|
|
|
+
|
|
|
+// 处理WebSocket消息
|
|
|
+const handleWebSocketMessage = event => {
|
|
|
+ try {
|
|
|
+ // 解析接收到的JSON数据
|
|
|
+ const data = event.data;
|
|
|
+ console.log('接收到WebSocket数据:', data);
|
|
|
+
|
|
|
+ // 判断数据长度是否小于20
|
|
|
+ if (data && typeof data === 'string' && data.length < 20) {
|
|
|
+ const positionNo = data;
|
|
|
+ console.log('货位编号:', positionNo);
|
|
|
+ // 搜索货位
|
|
|
+ searchPositionByNo(positionNo);
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (error) {
|
|
|
+ console.error('解析WebSocket消息失败:', error);
|
|
|
+ showFailToast('解析数据失败,请检查数据格式');
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+// 根据货位编号搜索货位
|
|
|
+const searchPositionByNo = positionNo => {
|
|
|
+ const url = `/api/positionResource/getTransferPosition?start=0&length=10&filter=${positionNo}&warehouseId=${warehouseId.value}`;
|
|
|
+ ajaxApiGet(url).then(
|
|
|
+ success => {
|
|
|
+ const { errorCode, errorMessage, datas } = success;
|
|
|
+ if (errorCode === 0) {
|
|
|
+ if (datas && datas.length > 0) {
|
|
|
+ const position = datas[0];
|
|
|
+ // 自动填充中转区货位
|
|
|
+ formData.value.transferId = position.id;
|
|
|
+ formData.value.transferNo = position.no;
|
|
|
+ formData.value.transferName = position.name;
|
|
|
+ showSuccessToast('中转货位自动填充成功');
|
|
|
+ } else {
|
|
|
+ console.log('未找到对应货位');
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ showFailToast(errorMessage);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ error => {
|
|
|
+ processException(error);
|
|
|
+ },
|
|
|
+ );
|
|
|
+};
|
|
|
+
|
|
|
let timer = null;
|
|
|
|
|
|
// 搜索出库物料
|