sakura 1 éve
szülő
commit
4934ca87db
62 módosított fájl, 241 hozzáadás és 104 törlés
  1. 1 1
      manager-admin/dist/index.html
  2. 0 0
      manager-admin/dist/static/js/2.c22b912269dd5b5d30bc.js
  3. BIN
      manager-admin/dist/static/js/2.c22b912269dd5b5d30bc.js.gz
  4. 0 0
      manager-admin/dist/static/js/2.cb0d2e3344e429ddebaa.js
  5. BIN
      manager-admin/dist/static/js/2.cb0d2e3344e429ddebaa.js.gz
  6. 0 0
      manager-admin/dist/static/js/39.00741da879cd1b58f1de.js
  7. BIN
      manager-admin/dist/static/js/39.8f56ed4f21ac5b4d0fdc.js.gz
  8. 0 0
      manager-admin/dist/static/js/40.1f396f6928fa20157a79.js
  9. BIN
      manager-admin/dist/static/js/40.1f396f6928fa20157a79.js.gz
  10. 0 0
      manager-admin/dist/static/js/41.515be821591115b6096b.js
  11. 0 0
      manager-admin/dist/static/js/42.356cee529d9ad2037467.js
  12. BIN
      manager-admin/dist/static/js/42.f2c74e1bfb838352e333.js.gz
  13. 0 0
      manager-admin/dist/static/js/43.7aaddcf4b21b9fcec5c3.js
  14. BIN
      manager-admin/dist/static/js/43.7aaddcf4b21b9fcec5c3.js.gz
  15. BIN
      manager-admin/dist/static/js/44.825772074041588995c1.js.gz
  16. 0 0
      manager-admin/dist/static/js/44.b589545c88a34284da09.js
  17. 0 0
      manager-admin/dist/static/js/45.754006629ea5a6c6d77f.js
  18. BIN
      manager-admin/dist/static/js/45.754006629ea5a6c6d77f.js.gz
  19. 0 0
      manager-admin/dist/static/js/46.029b553592801b191e66.js
  20. BIN
      manager-admin/dist/static/js/46.029b553592801b191e66.js.gz
  21. 0 0
      manager-admin/dist/static/js/47.60a9e6601bf7df5da630.js
  22. BIN
      manager-admin/dist/static/js/48.08e96b9778bc9106d916.js.gz
  23. 0 0
      manager-admin/dist/static/js/48.2a416da2729e6bb18fd6.js
  24. 0 0
      manager-admin/dist/static/js/49.995d40962b299345d057.js
  25. BIN
      manager-admin/dist/static/js/49.9b2191116aa7f7afb5cc.js.gz
  26. 0 0
      manager-admin/dist/static/js/50.11c0de8d72a407633376.js
  27. BIN
      manager-admin/dist/static/js/50.11c0de8d72a407633376.js.gz
  28. 0 0
      manager-admin/dist/static/js/50.2976e48f89199bdcb1c6.js
  29. BIN
      manager-admin/dist/static/js/50.2976e48f89199bdcb1c6.js.gz
  30. 0 0
      manager-admin/dist/static/js/51.313ad3344f6d517de1f6.js
  31. BIN
      manager-admin/dist/static/js/51.313ad3344f6d517de1f6.js.gz
  32. BIN
      manager-admin/dist/static/js/51.4709c3674ec658243e02.js.gz
  33. 0 0
      manager-admin/dist/static/js/52.4526dc0896c1cde18a2b.js
  34. BIN
      manager-admin/dist/static/js/52.4526dc0896c1cde18a2b.js.gz
  35. 0 0
      manager-admin/dist/static/js/53.8810e19ea60ad93bba4b.js
  36. 0 0
      manager-admin/dist/static/js/54.4be536150571afc2104e.js
  37. BIN
      manager-admin/dist/static/js/54.e0179de1931f2d6c6a2b.js.gz
  38. 0 0
      manager-admin/dist/static/js/55.206ff04f9f6ee347ca8e.js
  39. BIN
      manager-admin/dist/static/js/55.206ff04f9f6ee347ca8e.js.gz
  40. BIN
      manager-admin/dist/static/js/55.57df82625f0d98b2ba67.js.gz
  41. 0 0
      manager-admin/dist/static/js/56.5ad8a2586a42905f742a.js
  42. 0 0
      manager-admin/dist/static/js/56.8c13867fdbae8a488d4c.js
  43. BIN
      manager-admin/dist/static/js/56.8c13867fdbae8a488d4c.js.gz
  44. 0 0
      manager-admin/dist/static/js/6.71239cd46ec729ce5133.js
  45. BIN
      manager-admin/dist/static/js/6.71239cd46ec729ce5133.js.gz
  46. 0 0
      manager-admin/dist/static/js/6.b10d424fb92c7cae0e29.js
  47. BIN
      manager-admin/dist/static/js/6.b10d424fb92c7cae0e29.js.gz
  48. 0 0
      manager-admin/dist/static/js/8.2f64b33d78cdfaa6aa5d.js
  49. 0 0
      manager-admin/dist/static/js/8.fea954c99853655aa500.js
  50. BIN
      manager-admin/dist/static/js/8.fea954c99853655aa500.js.gz
  51. 0 0
      manager-admin/dist/static/js/9.f22942d248f66f85afd5.js
  52. BIN
      manager-admin/dist/static/js/9.f22942d248f66f85afd5.js.gz
  53. BIN
      manager-admin/dist/static/js/app.56d7331098536b64867d.js.gz
  54. 0 0
      manager-admin/dist/static/js/app.833c9175df42f35dab57.js
  55. BIN
      manager-admin/dist/static/js/app.833c9175df42f35dab57.js.gz
  56. 0 0
      manager-admin/dist/static/js/manifest.0bf34872e26940584239.js
  57. 0 0
      manager-admin/dist/static/js/manifest.ff1d1a8f34fd55bf9884.js
  58. 2 2
      manager-admin/src/views/basicSetting/specList.vue
  59. 104 61
      manager-admin/src/views/stock/goodsExchange/addInventory.vue
  60. 54 20
      manager-admin/src/views/stock/goodsExchange/goodsExchangeAdd.vue
  61. 28 14
      manager-admin/src/views/stock/goodsLend.vue
  62. 52 6
      manager-admin/src/views/stock/orderAdd.vue

+ 1 - 1
manager-admin/dist/index.html

@@ -1,3 +1,3 @@
 <!DOCTYPE html><html><head><meta charset=utf-8><script>var ua = window.navigator.userAgent
     var isIe = /MSIE|Trident/.test(ua)
-    // if (isIe) window.location.href = 'http://support.dmeng.net/upgrade-your-browser.html?referrer=' + encodeURIComponent(window.location.href)</script><script src=/static/js/envs.js></script><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=renderer content=webkit><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><title>erp</title><link rel="shortcut icon" href=/favicon.ico><link href=/static/css/app.e7b0e510a33bb83825df6634ccfde84a.css rel=stylesheet></head><body><div id=app><div style="display: flex;width: 100vw;height: 100vh;justify-content:center;align-items:center"><img src=/static/img/index.ripple-radio-preloader.gif alt=""></div></div><script src=/static/js/jquery.min.js></script><script src=/static/js/xlsx.full.min.js></script><script src=/static/js/echarts.min.js></script><script src=/static/js/base64.min.js></script><script src=/static/js/psl.min.js></script><script src=/static/UE/ueditor.config.js></script><script src=/static/UE/ueditor.all.js></script><script src=/static/UE/lang/zh-cn/zh-cn.js></script><script src=/static/UE/ueditor.parse.js></script><script src="//webapi.amap.com/maps?v=2.0&key=a4553619077791eb0a6df2f450b9a03b&plugin=AMap.CircleEditor"></script><script src=//webapi.amap.com/ui/1.1/main.js></script><script type=text/javascript src=/static/js/manifest.ff1d1a8f34fd55bf9884.js></script><script type=text/javascript src=/static/js/vendor.d57e793ff4adf5dd9683.js></script><script type=text/javascript src=/static/js/app.56d7331098536b64867d.js></script></body></html>
+    // if (isIe) window.location.href = 'http://support.dmeng.net/upgrade-your-browser.html?referrer=' + encodeURIComponent(window.location.href)</script><script src=/static/js/envs.js></script><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=renderer content=webkit><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><title>erp</title><link rel="shortcut icon" href=/favicon.ico><link href=/static/css/app.e7b0e510a33bb83825df6634ccfde84a.css rel=stylesheet></head><body><div id=app><div style="display: flex;width: 100vw;height: 100vh;justify-content:center;align-items:center"><img src=/static/img/index.ripple-radio-preloader.gif alt=""></div></div><script src=/static/js/jquery.min.js></script><script src=/static/js/xlsx.full.min.js></script><script src=/static/js/echarts.min.js></script><script src=/static/js/base64.min.js></script><script src=/static/js/psl.min.js></script><script src=/static/UE/ueditor.config.js></script><script src=/static/UE/ueditor.all.js></script><script src=/static/UE/lang/zh-cn/zh-cn.js></script><script src=/static/UE/ueditor.parse.js></script><script src="//webapi.amap.com/maps?v=2.0&key=a4553619077791eb0a6df2f450b9a03b&plugin=AMap.CircleEditor"></script><script src=//webapi.amap.com/ui/1.1/main.js></script><script type=text/javascript src=/static/js/manifest.0bf34872e26940584239.js></script><script type=text/javascript src=/static/js/vendor.d57e793ff4adf5dd9683.js></script><script type=text/javascript src=/static/js/app.833c9175df42f35dab57.js></script></body></html>

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/2.c22b912269dd5b5d30bc.js


BIN
manager-admin/dist/static/js/2.c22b912269dd5b5d30bc.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/2.cb0d2e3344e429ddebaa.js


BIN
manager-admin/dist/static/js/2.cb0d2e3344e429ddebaa.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/39.00741da879cd1b58f1de.js


BIN
manager-admin/dist/static/js/39.8f56ed4f21ac5b4d0fdc.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/40.1f396f6928fa20157a79.js


BIN
manager-admin/dist/static/js/40.1f396f6928fa20157a79.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/41.515be821591115b6096b.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/42.356cee529d9ad2037467.js


BIN
manager-admin/dist/static/js/42.f2c74e1bfb838352e333.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/43.7aaddcf4b21b9fcec5c3.js


BIN
manager-admin/dist/static/js/43.7aaddcf4b21b9fcec5c3.js.gz


BIN
manager-admin/dist/static/js/44.825772074041588995c1.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/44.b589545c88a34284da09.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/45.754006629ea5a6c6d77f.js


BIN
manager-admin/dist/static/js/45.754006629ea5a6c6d77f.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/46.029b553592801b191e66.js


BIN
manager-admin/dist/static/js/46.029b553592801b191e66.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/47.60a9e6601bf7df5da630.js


BIN
manager-admin/dist/static/js/48.08e96b9778bc9106d916.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/48.2a416da2729e6bb18fd6.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/49.995d40962b299345d057.js


BIN
manager-admin/dist/static/js/49.9b2191116aa7f7afb5cc.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/50.11c0de8d72a407633376.js


BIN
manager-admin/dist/static/js/50.11c0de8d72a407633376.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/50.2976e48f89199bdcb1c6.js


BIN
manager-admin/dist/static/js/50.2976e48f89199bdcb1c6.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/51.313ad3344f6d517de1f6.js


BIN
manager-admin/dist/static/js/51.313ad3344f6d517de1f6.js.gz


BIN
manager-admin/dist/static/js/51.4709c3674ec658243e02.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/52.4526dc0896c1cde18a2b.js


BIN
manager-admin/dist/static/js/52.4526dc0896c1cde18a2b.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/53.8810e19ea60ad93bba4b.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/54.4be536150571afc2104e.js


BIN
manager-admin/dist/static/js/54.e0179de1931f2d6c6a2b.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/55.206ff04f9f6ee347ca8e.js


BIN
manager-admin/dist/static/js/55.206ff04f9f6ee347ca8e.js.gz


BIN
manager-admin/dist/static/js/55.57df82625f0d98b2ba67.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/56.5ad8a2586a42905f742a.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/56.8c13867fdbae8a488d4c.js


BIN
manager-admin/dist/static/js/56.8c13867fdbae8a488d4c.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/6.71239cd46ec729ce5133.js


BIN
manager-admin/dist/static/js/6.71239cd46ec729ce5133.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/6.b10d424fb92c7cae0e29.js


BIN
manager-admin/dist/static/js/6.b10d424fb92c7cae0e29.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/8.2f64b33d78cdfaa6aa5d.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/8.fea954c99853655aa500.js


BIN
manager-admin/dist/static/js/8.fea954c99853655aa500.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/9.f22942d248f66f85afd5.js


BIN
manager-admin/dist/static/js/9.f22942d248f66f85afd5.js.gz


BIN
manager-admin/dist/static/js/app.56d7331098536b64867d.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/app.833c9175df42f35dab57.js


BIN
manager-admin/dist/static/js/app.833c9175df42f35dab57.js.gz


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/manifest.0bf34872e26940584239.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
manager-admin/dist/static/js/manifest.ff1d1a8f34fd55bf9884.js


+ 2 - 2
manager-admin/src/views/basicSetting/specList.vue

@@ -30,10 +30,10 @@
               size="mini"
               type="primary"
               @click="handleEditSpec(scope.$index, scope.row)" v-if="checkPermission(['specList:edit'])">编辑规格</el-button>
-            <!-- <el-button
+            <el-button
               size="mini"
               type="primary"
-              @click="handleEditSpecVal(scope.$index, scope.row)" v-if="checkPermission(['specList:edit'])">编辑规格值</el-button> -->
+              @click="handleEditSpecVal(scope.$index, scope.row)" v-if="checkPermission(['specList:edit'])">编辑规格值</el-button>
             <el-button
               size="mini"
               type="danger"

+ 104 - 61
manager-admin/src/views/stock/goodsExchange/addInventory.vue

@@ -54,7 +54,7 @@
             :key="item.id"
             :label="item.label"
             :value="item.value"
-            :disabled="item.value=='TRANSFER_ENTRY'"
+            :disabled="item.value == 'TRANSFER_ENTRY'"
           />
         </el-select>
       </el-form-item>
@@ -185,11 +185,11 @@
               v-if="type !== 'detail' && type !== 'audit'"
             >
               <template slot-scope="scope">
-                <el-button
+                <!-- <el-button
                   size="mini"
                   @click="addSnCode(scope.row, scope.$index)"
                   >添加序列号</el-button
-                >
+                > -->
                 <el-button
                   size="mini"
                   type="danger"
@@ -253,7 +253,6 @@
       title="扫码入库"
       :visible.sync="scanDialogVisible"
       width="30%"
-      :close-on-press-escape="false"
       :close-on-click-modal="false"
     >
       <el-form
@@ -262,23 +261,25 @@
         label-width="120px"
         inline
       >
+        <!-- @blur="blurCode()" -->
         <el-form-item label="条码" prop="bar_code">
           <el-input
             v-model="scanGoodsForm.bar_code"
             ref="input"
             @keyup.enter.native="toSearch()"
-            @blur="blurCode()"
             :minlength="0"
             :maxlength="100"
           ></el-input>
         </el-form-item>
-        <!-- <el-form-item label="序列号" prop="sn_code">
+        <el-form-item label="序列号" prop="sn_code">
           <el-input
-            v-model="scanGoodsForm.sn_code"
+            ref="sn_input"
+            v-model="sn_code"
+            @keyup.enter.native="toSnCode()"
             :minlength="0"
             :maxlength="100"
           ></el-input>
-        </el-form-item> -->
+        </el-form-item>
       </el-form>
     </el-dialog>
     <el-dialog
@@ -402,7 +403,7 @@
         <el-button @click="searchOrderAdd" type="primary">确 定</el-button>
       </span>
     </el-dialog>
-    <el-dialog
+    <!-- <el-dialog
       title="序列号"
       @close="closeSncode"
       :visible.sync="snCodeVisible"
@@ -425,7 +426,7 @@
           ></el-input>
         </el-form-item>
       </el-form>
-    </el-dialog>
+    </el-dialog> -->
   </div>
 </template>
 
@@ -583,7 +584,7 @@ export default {
       sku: "",
       sn_code_list: [],
       index: "",
-      snMultipleSelection:''
+      snMultipleSelection: "",
     };
   },
   mounted() {
@@ -639,14 +640,14 @@ export default {
   },
   methods: {
     /* 订单列表选择 */
-    handleSelOrderChange(val){
+    handleSelOrderChange(val) {
       if (val.length > 1) {
         // 如果当前选中数量超过1,移除先前选中的,保留最后选中的
         const lastSelected = val[val.length - 1];
         this.$refs.tables.clearSelection(); // 清除所有选中
         this.$refs.tables.toggleRowSelection(lastSelected, true); // 重新选中最后一个
       }
-      this.snMultipleSelection=val
+      this.snMultipleSelection = val;
     },
     /* 返回出入明细 */
     toBack() {
@@ -661,13 +662,30 @@ export default {
     },
     //扫序列号goodsExchangeAddForm.product_list[this.index].sn_code_list
     toSnCode() {
-      API_GoodsExchange.getSnCode("in", this.sku, this.sn_code).then((res) => {
-        /*  this.sn_code_list.push(res); */
+      API_GoodsExchange.getSnCode("in", this.sku, this.sn_code.replace(/\s+/g, '')).then((res) => {
         this.sn_code = "";
-        this.snCodeVisible = false;
-        this.goodsExchangeAddForm.product_list[this.index].sn_code_list.push(
-          res
+        // 假设res是一个对象,我们根据res的某个属性(如sn)来检查重复
+        let exists = this.goodsExchangeAddForm.product_list[
+          this.index
+        ].sn_code_list.find(
+          (item) => item.sn_code === res.sn_code && item.sku === res.sku
         );
+        if (!exists) {
+          this.goodsExchangeAddForm.product_list[this.index].sn_code_list.push(
+            res
+          );
+        }
+        /* this.goodsExchangeAddForm.product_list[this.index].sn_code_list.push(
+          res
+        ); */
+        this.goodsExchangeAddForm.product_list[this.index].num =
+          this.goodsExchangeAddForm.product_list[
+            this.index
+          ].sn_code_list.length;
+        this.scanGoodsForm.bar_code = "";
+        this.$nextTick(() => {
+          this.$refs.input.focus();
+        });
       });
     },
     addSnCode(row, index) {
@@ -775,30 +793,31 @@ export default {
         }).then((res) => {
           console.log(res);
           this.goodsExchangeAddForm.contract_product_list = res.data;
-          this.scanDialogVisible = false;
+          //this.scanDialogVisible = false;
         });
       }
     },
-    searchOrderAdd(){
-      if (this.snMultipleSelection.length >=1) {
+    searchOrderAdd() {
+      if (this.snMultipleSelection.length >= 1) {
         API_GoodsExchange.getOneBySn(this.snMultipleSelection[0].sn).then(
           (res) => {
-            this.goodsExchangeAddForm.scan_order_sn=this.snMultipleSelection[0].sn
-            this.goodsExchangeAddForm.scan_order_type=res.type
-            this.goodsExchangeAddForm.order_id=res.id
-            res.item_list.map(el=>{
-              el.scan_order_item_id=el.id
-              el.scan_order_id=res.id
-              el.orderNum=el.num
-              el.num=0
-              el.sn_code_list=[]
-            })
-            this.goodsExchangeAddForm.product_list=res.item_list
-            this.orderVisible=false
+            this.goodsExchangeAddForm.scan_order_sn =
+              this.snMultipleSelection[0].sn;
+            this.goodsExchangeAddForm.scan_order_type = res.type;
+            this.goodsExchangeAddForm.order_id = res.id;
+            res.item_list.map((el) => {
+              el.scan_order_item_id = el.id;
+              el.scan_order_id = res.id;
+              el.orderNum = el.num;
+              el.num = 0;
+              el.sn_code_list = [];
+            });
+            this.goodsExchangeAddForm.product_list = res.item_list;
+            this.orderVisible = false;
           }
         );
-      }else{
-        this.$message.error("请选择订单")
+      } else {
+        this.$message.error("请选择订单");
       }
     },
     // 查询订单编号
@@ -806,21 +825,22 @@ export default {
       if (this.goodsExchangeAddForm.sn !== undefined) {
         API_GoodsExchange.getOneBySn(this.goodsExchangeAddForm.sn).then(
           (res) => {
-            this.goodsExchangeAddForm.scan_order_sn=this.goodsExchangeAddForm.sn
-            this.goodsExchangeAddForm.scan_order_type=res.type
-            this.goodsExchangeAddForm.order_id=res.id
-            res.item_list.map(el=>{
-              el.scan_order_item_id=el.id
-              el.scan_order_id=res.id
-              el.orderNum=el.num
-              el.num=0
-              el.sn_code_list=[]
-            })
-            this.goodsExchangeAddForm.product_list=res.item_list
+            this.goodsExchangeAddForm.scan_order_sn =
+              this.goodsExchangeAddForm.sn;
+            this.goodsExchangeAddForm.scan_order_type = res.type;
+            this.goodsExchangeAddForm.order_id = res.id;
+            res.item_list.map((el) => {
+              el.scan_order_item_id = el.id;
+              el.scan_order_id = res.id;
+              el.orderNum = el.num;
+              el.num = 0;
+              el.sn_code_list = [];
+            });
+            this.goodsExchangeAddForm.product_list = res.item_list;
           }
         );
-      } else{
-        this.$message.error("请填写订单编号")
+      } else {
+        this.$message.error("请填写订单编号");
       }
     },
     /* 通过id查询商品信息
@@ -873,12 +893,36 @@ export default {
     toSearch() {
       API_GoodsExchange.getProduct(
         this.goodsExchangeAddForm.warehouse_id,
-        this.scanGoodsForm.bar_code
+        this.scanGoodsForm.bar_code.replace(/\s+/g, '')
       ).then((res) => {
         res.sn_code_list = [];
-        this.goodsExchangeAddForm.product_list.push(res);
-        this.scanGoodsForm.bar_code = "";
-        this.scanDialogVisible = false;
+        this.sku = res.product_vo.sku;
+        // 查找当前商品是否已存在于列表中
+        const indexs = this.goodsExchangeAddForm.product_list.findIndex(
+          (el) => {
+            console.log("Comparing with:", el);
+            return (
+              el.goods_id === res.goods_id &&
+              el.product_id === res.product_id &&
+              el.warehouse_id === res.warehouse_id &&
+              el.product_vo.sku === res.product_vo.sku
+            );
+          }
+        );
+        // 如果商品不存在,则添加到列表
+        if (indexs === -1) {
+          this.index = this.goodsExchangeAddForm.product_list.length;
+          this.goodsExchangeAddForm.product_list.push(res);
+        } else {
+          this.index = indexs;
+        }
+        if (res.product_vo.have_sn) {
+          this.$nextTick(() => {
+            this.$refs.sn_input.focus();
+          });
+        } else {
+          /* this.scanDialogVisible = false; */
+        }
       });
     },
     // 扫码入库
@@ -1021,8 +1065,8 @@ export default {
             el.product_stock_id = el.id;
             el.product_id = el.product_vo.id;
             el.id = "";
-            if(!el.orderNum){
-              el.scan_diff_num=el.orderNum-el.num
+            if (!el.orderNum) {
+              el.scan_diff_num = el.orderNum - el.num;
             }
           });
           if (this.$route.name === "editInventory") {
@@ -1284,15 +1328,14 @@ export default {
           this.goodsExchangeAddForm.change_time = Math.floor(
             this.goodsExchangeAddForm.change_time * 1000
           );
-          response.product_list.map(el=>{
-            if(!el.sn_code_list){
-              el.sn_code_list=[]
+          response.product_list.map((el) => {
+            if (!el.sn_code_list) {
+              el.sn_code_list = [];
             }
-          })
+          });
           this.goodsExchangeAddForm.distribution_name = response.staff_name;
-          this.goodsExchangeAddForm.product_list =
-            response.product_list;
-            /* .map((item) => {
+          this.goodsExchangeAddForm.product_list = response.product_list;
+          /* .map((item) => {
               //change_list
               item.name=item.goods_do.name
               item.sn=item.goods_do.sn

+ 54 - 20
manager-admin/src/views/stock/goodsExchange/goodsExchangeAdd.vue

@@ -228,11 +228,11 @@
               v-if="type !== 'detail' && type !== 'audit'"
             >
               <template slot-scope="scope">
-                <el-button
+                <!-- <el-button
                   size="mini"
                   @click="addSnCode(scope.row,scope.$index)"
                   >添加序列号</el-button
-                >
+                > -->
                 <el-button
                   size="mini"
                   type="danger"
@@ -308,20 +308,22 @@
             :maxlength="100"
           ></el-input>
         </el-form-item>
-        <!-- <el-form-item label="序列号" prop="sn_code">
+        <el-form-item label="序列号" prop="sn_code">
           <el-input
-            v-model="scanGoodsForm.sn_code"
+            v-model="sn_code"
+            ref="sn_input"
+            @keyup.enter.native="toSnCode()"
             :minlength="0"
             :maxlength="100"
           ></el-input>
-        </el-form-item> -->
+        </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
         <!-- <el-button @click="dialogVisible = false">取 消</el-button>
         <el-button type="primary" @click="handleRejectGoodsExchange()">确 定</el-button> -->
       </span>
     </el-dialog>
-    <el-dialog
+  <!--   <el-dialog
       title="序列号"
       :visible.sync="snCodeVisible"
       width="30%"
@@ -343,7 +345,7 @@
           ></el-input>
         </el-form-item>
       </el-form>
-    </el-dialog>
+    </el-dialog> -->
     <!-- <el-dialog
       title="出库商品"
       :visible.sync="goodsVisible"
@@ -545,13 +547,24 @@ export default {
     },
     //扫序列号goodsExchangeAddForm.product_list[this.index].sn_code_list
     toSnCode() {
-      API_GoodsExchange.getSnCode("out", this.sku, this.sn_code).then((res) => {
-        //this.sn_code_list.push(res);
+      API_GoodsExchange.getSnCode("out", this.sku, this.sn_code.replace(/\s+/g, '')).then((res) => {
         this.sn_code = "";
-        this.snCodeVisible = false;
-        console.log(this.goodsExchangeAddForm.product_list);
-         this.goodsExchangeAddForm.product_list[this.index].sn_code_list.push(res);
-
+         // 假设res是一个对象,我们根据res的某个属性(如sn)来检查重复
+         let exists = this.goodsExchangeAddForm.product_list[
+          this.index
+        ].sn_code_list.find(
+          (item) => item.sn_code === res.sn_code && item.sku === res.sku
+        );
+        if (!exists) {
+          this.goodsExchangeAddForm.product_list[this.index].sn_code_list.push(
+            res
+          );
+        }
+        this.goodsExchangeAddForm.product_list[this.index].out_num= this.goodsExchangeAddForm.product_list[this.index].sn_code_list.length
+        this.scanGoodsForm.bar_code = "";
+        this.$nextTick(() => {
+          this.$refs.input.focus();
+        });
       });
 
     },
@@ -605,13 +618,34 @@ export default {
     toSearch() {
       API_GoodsExchange.getProduct(
         this.goodsExchangeAddForm.warehouse_id,
-        this.scanGoodsForm.bar_code
+        this.scanGoodsForm.bar_code.replace(/\s+/g, '')
       ).then((res) => {
         res.sn_code_list=[]
-        this.goodsExchangeAddForm.product_list.push(res);
-        console.log(this.goodsExchangeAddForm.product_list);
-        this.scanGoodsForm.bar_code = "";
-        this.scanDialogVisible = false;
+        this.sku = res.product_vo.sku;
+        // 查找当前商品是否已存在于列表中
+        const indexs = this.goodsExchangeAddForm.product_list.findIndex((el) => {
+          console.log("Comparing with:", el);
+          return (
+            el.goods_id === res.goods_id &&
+            el.product_id === res.product_id &&
+            el.warehouse_id === res.warehouse_id &&
+            el.product_vo.sku === res.product_vo.sku
+          );
+        });
+        // 如果商品不存在,则添加到列表
+        if (indexs === -1) {
+          this.index=this.goodsExchangeAddForm.product_list.length
+          this.goodsExchangeAddForm.product_list.push(res);
+        } else {
+           this.index=indexs
+        }
+        if (res.product_vo.have_sn) {
+          this.$nextTick(() => {
+            this.$refs.sn_input.focus();
+          });
+        } else {
+         // this.scanDialogVisible = false;
+        }
       });
     },
     // 扫码入库
@@ -744,7 +778,7 @@ export default {
             return;
           }
           const isStockSufficient = params.product_list.map((el) => {
-            if (el.out_num > el.usable_stock) {
+            if (el.out_num < el.usable_stock) {
               this.$message.error("该商品库存不足!");
               return false
             }
@@ -815,7 +849,7 @@ export default {
             el.id=''
           })
           const isStockSufficient = params.product_list.map((el) => {
-            if (el.out_num > el.usable_stock) {
+            if (el.out_num < el.usable_stock) {
               this.$message.error("该商品库存不足!");
               return false
             }

+ 28 - 14
manager-admin/src/views/stock/goodsLend.vue

@@ -256,6 +256,16 @@
             >新增仓库</span
           >
         </el-form-item>
+        <el-form-item label="库位区域" prop="type">
+          <el-select v-model="addLendForm.type" clearable  @change="selAreaTableData">
+            <el-option
+              v-for="item in AreaTableData"
+              :key="item.id"
+              :label="item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </el-form-item>
         <el-form-item label="库位号" prop="code">
           <el-input
             v-model="addLendForm.code"
@@ -263,19 +273,9 @@
             placeholder="请输入库位号"
             style="width: 270px"
           >
-            <template slot="prepend">{{ warehouseSn }}-</template>
+            <template slot="prepend">{{ warehouseSn }}-{{ AreaTab }}</template>
           </el-input>
         </el-form-item>
-        <el-form-item label="库位区域" prop="type">
-          <el-select v-model="addLendForm.type" clearable>
-            <el-option
-              v-for="item in typeList"
-              :key="item.id"
-              :label="item.label"
-              :value="item.value"
-            />
-          </el-select>
-        </el-form-item>
         <el-form-item label="库位说明">
           <el-input
             type="textarea"
@@ -341,6 +341,8 @@ export default {
         ],
       },
       typeList: [],
+      AreaTableData:[],
+      AreaTab:''
     };
   },
   mounted() {
@@ -397,6 +399,14 @@ export default {
       let obj = list[0];
       this.warehouseSn = obj.sn;
     },
+    selAreaTableData(val){
+      const list = this.AreaTableData.filter((el) => {
+        return el.code === val;
+      });
+      let obj = list[0];
+      console.log(list[0]);
+      this.AreaTab = obj.code;
+    },
     // 确认提交
     lendCommit() {
       this.$refs.addLendForm.validate((valid) => {
@@ -469,11 +479,11 @@ export default {
     },
     /** 状态 */
     statusFilter(val) {
-      const obj = this.typeList.filter((el) => {
-        return el.value === val;
+      const obj = this.AreaTableData.filter((el) => {
+        return el.code === val;
       });
       if (obj.length !== 0) {
-        return obj[0].label;
+        return obj[0].name;
       } else {
         return "";
       }
@@ -499,6 +509,10 @@ export default {
       }).then((res) => {
         this.typeList = res.data;
       });
+      API_GoodsLend.getListAreaType().then(response => {
+        this.loading = false
+        this.AreaTableData = response
+      }).catch(() => { this.loading = false })
     },
     /** 打印对账详情 */
     handlePrintGoodsLend() {

+ 52 - 6
manager-admin/src/views/stock/orderAdd.vue

@@ -1,6 +1,7 @@
 <template>
-  <div class="bg-in-stock">
-    <div class="numOrder" v-if="brcode">
+  <div class="bg-in-stock" ref="printId">
+   <!--  <h2 v-if="barcodeValue">订单编号</h2> -->
+    <div class="numOrder" v-if="barcodeValue">
       <barcode :value="barcodeValue"></barcode>
     </div>
     <el-form
@@ -542,6 +543,7 @@ import {
   pcaTextArr,
   codeToText,
 } from "element-china-area-data";
+import Print from "print-js";
 import html2canvas from "html2canvas";
 
 const initOrderForm = {
@@ -812,7 +814,53 @@ export default {
       }
     }, */
     // 打印功能
-    printIng() {},
+    printIng() {
+      // Print({
+      //   printable: 'deliverySheet',
+      //   type: 'html',
+      //   targetStyles: ['*'],
+      //   ignoreElements: ['no-logs', 'goods-image', 'no-btn']
+      // })
+      const printContent = this.$refs.printId;
+      // 获取dom 宽度 高度
+      const width = printContent.clientWidth;
+      const height = printContent.clientHeight;
+      // 创建一个canvas节点
+      const canvas = document.createElement("canvas");
+
+      const scale = 1; // 定义任意放大倍数,支持小数;越大,图片清晰度越高,生成图片越慢。
+      canvas.width = width * scale; // 定义canvas 宽度 * 缩放
+      canvas.height = height * scale; // 定义canvas高度 *缩放
+      canvas.style.width = width * scale + "px";
+      canvas.style.height = height * scale + "px";
+      canvas.getContext("2d").scale(scale, scale); // 获取context,设置scale
+
+      const scrollTop =
+        document.documentElement.scrollTop || document.body.scrollTop; // 获取滚动轴滚动的长度
+      const scrollLeft =
+        document.documentElement.scrollLeft || document.body.scrollLeft; // 获取水平滚动轴的长度
+
+      html2canvas(printContent, {
+        canvas,
+        backgroundColor: null,
+        useCORS: true,
+        windowHeight: document.body.scrollHeight,
+        scrollX: -scrollLeft, // 解决水平偏移问题,防止打印的内容不全
+        scrollY: -scrollTop,
+      })
+        .then((canvas) => {
+          const url = canvas.toDataURL("image/png");
+          printJS({
+            printable: url,
+            type: "image",
+            documentTitle: "", // 标题
+            style: "@page{size:auto;margin: 0cm 1cm 0cm 1cm;}", // 去除页眉页脚
+          });
+        })
+        .catch((err) => {
+          console.error(err);
+        });
+    },
   /*   validateNumber(){
       const regex = '/^(?:[0-9]|10(?:\.0{1,2})?)$/';
      return regex.test(this.discount)
@@ -856,9 +904,6 @@ export default {
     },
     handleChange(value) {
       this.OrderForm.province_city_area = value.join(",");
-      console.log(this.OrderForm.province_city_area);
-      /**/
-
       //打印区域码所对应的属性值即中文地址
     },
     /** 初始化 */
@@ -1248,6 +1293,7 @@ export default {
     GET_OrderDetail() {
       API_Order.getOrderDetail(this.id).then((response) => {
         /**/ this.price = response.price;
+        this.barcodeValue=response.sn
         response.product_list = response.item_list.map(el=>{
           el.good_vo=el.goods_vo
           return el

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott