From 8219355b920c6020569690cffe9ba4d411ef383e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=97=AD=E6=98=8E=5C73939?= <739390650@QQ.COM> Date: Fri, 12 Jun 2026 18:02:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E7=9C=8B=E6=9D=BF=E5=BC=BA=E5=88=B6?= =?UTF-8?q?=E7=99=BB=E5=87=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/HandheldServiceImpl.java | 22 +++++++----- .../src/views/wms/produceScreen/setup.vue | 36 ++++++++++++++++++- 2 files changed, 49 insertions(+), 9 deletions(-) diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/impl/HandheldServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/impl/HandheldServiceImpl.java index 67be6a2..46b8bf9 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/impl/HandheldServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/impl/HandheldServiceImpl.java @@ -925,16 +925,22 @@ public class HandheldServiceImpl implements HandheldService { if (StrUtil.isNotEmpty(json.getString("device_code"))) { Object deviceLogin = redisUtils.get("mobile:" + json.getString("device_code")); if (deviceLogin != null) { - throw new BadRequestException("当前设备工序已经登陆,无法继续选择"); - } else { - SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class); - Param isInvokeConnector = sysParamService.findByCode(GeneralDefinition.HANDHELD_LOGIN_TIME); - int loginTime = 3; - if (ObjectUtil.isNotEmpty(isInvokeConnector)) { - loginTime = Integer.parseInt(isInvokeConnector.getValue()); + // 检查是否需要强制登出 + Boolean forceLogout = json.getBoolean("force_logout"); + if (Boolean.TRUE.equals(forceLogout)) { + // 强制登出,清除redis中的key + redisUtils.del("mobile:" + json.getString("device_code")); + } else { + throw new BadRequestException("当前设备工序已经登陆,无法继续选择"); } - redisUtils.set("mobile:" + json.getString("device_code"), json.getString("device_code"), loginTime, TimeUnit.HOURS); } + SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class); + Param isInvokeConnector = sysParamService.findByCode(GeneralDefinition.HANDHELD_LOGIN_TIME); + int loginTime = 3; + if (ObjectUtil.isNotEmpty(isInvokeConnector)) { + loginTime = Integer.parseInt(isInvokeConnector.getValue()); + } + redisUtils.set("mobile:" + json.getString("device_code"), json.getString("device_code"), loginTime, TimeUnit.HOURS); } SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(json.getString("device_code")); if (ObjectUtil.isNotEmpty(schBasePoint)) { diff --git a/lms/nladmin-ui/src/views/wms/produceScreen/setup.vue b/lms/nladmin-ui/src/views/wms/produceScreen/setup.vue index 8d869c4..1a33156 100644 --- a/lms/nladmin-ui/src/views/wms/produceScreen/setup.vue +++ b/lms/nladmin-ui/src/views/wms/produceScreen/setup.vue @@ -109,8 +109,42 @@ export default { this.show = false this.disabled = false this.$router.push('/produceScreen/1') - }).catch(() => { + }).catch(error => { this.disabled = false + // 尝试从多个位置获取错误信息 + let errorMsg = '' + if (error.response && error.response.data) { + if (error.response.data.msg) { + errorMsg = error.response.data.msg + } else if (error.response.data.message) { + errorMsg = error.response.data.message + } else if (error.response.data.error) { + errorMsg = error.response.data.error + } + } else if (error.message) { + errorMsg = error.message + } + console.log('Extracted error message:', errorMsg) + if (errorMsg === '当前设备工序已经登陆,无法继续选择') { + this.$confirm('用户当前设备工序已经登陆,是否强制登出?', '确认操作', { + confirmButtonText: '是', + cancelButtonText: '否', + type: 'warning' + }).then(() => { + // 用户确认,强制登出并重新登录 + crudProduceScreen.deviceInLogin({ device_code: this.value, force_logout: true }).then(res => { + res.username = this.username + this.$store.dispatch('addScreenData', JSON.stringify(res)) + this.show = false + this.disabled = false + this.$router.push('/produceScreen/1') + }).catch(() => { + // 强制登出登录失败 + }) + }).catch(() => { + // 用户取消,不做任何操作 + }) + } }) } }