소스 검색

fix(photography): 修复演示模式下的货号删除逻辑和界面样式问题

- 修改 camera-preview 背景色为 rgb(234, 236, 237) 并添加 10px 内边距
- 调整预览区域背景透明度从 0.2 提升至 0.5
- 将自动对焦按钮位置调整为顶部和右侧贴边显示
- 设置预览图片宽高为 100% 并调整示例图片位置到右下角贴边
- 将 del 函数改为 Promise 形式并添加 10 秒超时机制
- 在演示模式下增加状态检查避免重复操作
- 修复演示模式停止时的数据处理逻辑
panqiuyao 1 개월 전
부모
커밋
a81ca5adab
2개의 변경된 파일과 38개의 추가작업 그리고 31개의 파일을 삭제
  1. 9 8
      frontend/src/views/Photography/check.vue
  2. 29 23
      frontend/src/views/Photography/mixin/usePhotography.ts

+ 9 - 8
frontend/src/views/Photography/check.vue

@@ -595,7 +595,8 @@ onBeforeUnmount(() => {
         }
 
         .camera-preview {
-          background-color: rgba(255, 255, 255, 1);
+          background-color: rgb(234, 236, 237);
+          padding: 10px;
           width: 100%;
           height: calc(100vh - 200px);
           position: relative;
@@ -609,7 +610,7 @@ onBeforeUnmount(() => {
             bottom: 20px;
             width: 60%;
             padding: 8px 20px;
-            background: rgba($color: #ffffff, $alpha: .2);
+            background: rgba($color: #ffffff, $alpha: .5);
             border-radius: 20px;
             font-size: 14px;
           }
@@ -626,8 +627,8 @@ onBeforeUnmount(() => {
 
           .auto-focus-btn {
             position: absolute;
-            top: 10px;
-            right: 10px;
+            top: 0px;
+            right: 0px;
             z-index: 10;
           }
 
@@ -637,15 +638,15 @@ onBeforeUnmount(() => {
             box-shadow: 0px 2px 10px 0px rgba(0, 32, 78, 0.1);
             max-width: 100%;
             max-height: 100%;
-            width: auto;
-            height: auto;
+            width: 100%;
+            height: 100%;
             object-fit: contain;
             object-position: center;
           }
           .example-image {
             position: absolute;
-            right: 10px;
-            bottom: 10px;
+            right: 0px;
+            bottom: 0px;
             background-color: rgba(216, 216, 216, 1);
             height: 135px;
             margin-top: 10px;

+ 29 - 23
frontend/src/views/Photography/mixin/usePhotography.ts

@@ -295,28 +295,33 @@ export default function usePhotography() {
      */
     const del = async function (params) {
       console.log(icpList.takePhoto.delectGoodsArts, params);
-      clientStore.ipc.removeAllListeners(icpList.takePhoto.delectGoodsArts);
-      clientStore.ipc.send(icpList.takePhoto.delectGoodsArts, params);
-      clientStore.ipc.on(icpList.takePhoto.delectGoodsArts, (event, result) => {
-        clientStore.ipc.removeAllListeners(icpList.takePhoto.delectGoodsArts);
-        console.log("icpList.takePhoto.delectGoodsArts", params);
-        if (result.code === 0) {
-          isDelGoodsGetList.value = true
-          ElMessage.info('货号删除成功')
-          getPhotoRecords()
-          if (reNosObj.value.goods_art_no) {
-            runGoods(
-              {
-                "action": reNosObj.value.action,
-                "goods_art_no": reNosObj.value.goods_art_no
-              })
-
+      return new Promise((resolve) => {
+        const channel = icpList.takePhoto.delectGoodsArts
+        clientStore.ipc.removeAllListeners(channel);
+        clientStore.ipc.send(channel, params);
+        const timer = setTimeout(() => {
+          resolve({ code: -1, msg: '删除超时' })
+        }, 10000)
+        clientStore.ipc.once(channel, (event, result) => {
+          clearTimeout(timer)
+          console.log("icpList.takePhoto.delectGoodsArts", params);
+          if (result.code === 0) {
+            isDelGoodsGetList.value = true
+            ElMessage.info('货号删除成功')
+            getPhotoRecords()
+            if (reNosObj.value.goods_art_no) {
+              runGoods(
+                {
+                  "action": reNosObj.value.action,
+                  "goods_art_no": reNosObj.value.goods_art_no
+                })
+            }
+          } else if (result.msg) {
+            ElMessage.error(result.msg)
           }
-        } else if (result.msg) {
-          ElMessage.error(result.msg)
-        }
-      });
-
+          resolve(result)
+        });
+      })
     }
 
     //单个重拍
@@ -838,6 +843,7 @@ const onRemoteControl = async (type) => {
           if (isDemoMode.value && !demoStopping.value) {
             const demoGoodsNo = demoGoodsArtNo.value
             setTimeout(async () => {
+              if (!isDemoMode.value || demoStopping.value) return
               try {
                 await del({ goods_art_nos: [demoGoodsNo] })
                 ElMessage.info('演示拍摄完成,货号已自动删除')
@@ -1168,9 +1174,9 @@ const onRemoteControl = async (type) => {
      * 演示模式下拍摄完成后自动删除货号
      */
     const handlePhotoTakeFinishForDemo = (goodsArtNo: string) => {
-      if (isDemoMode.value && goodsArtNo === demoGoodsArtNo.value) {
-        // 延迟删除,等待数据写入完成
+      if (isDemoMode.value && goodsArtNo === demoGoodsArtNo.value && !demoStopping.value) {
         setTimeout(async () => {
+          if (!isDemoMode.value || demoStopping.value) return
           try {
             await del({ goods_art_nos: [demoGoodsArtNo.value] })
             ElMessage.info('演示拍摄完成,货号已自动删除')