Преглед на файлове

2024 2 26 张涛发货出库加了box_orders_product_id字段

mushencc преди 1 година
родител
ревизия
4a8b41a455
променени са 55 файла, в които са добавени 3200 реда и са изтрити 463 реда
  1. 0 0
      dist/index.html
  2. 0 1
      dist/static/css/app.817d81b5.css
  3. 0 1
      dist/static/css/chunk-041a3dfe.9387bf3f.css
  4. 0 1
      dist/static/css/chunk-07510353.d85d5c08.css
  5. 0 0
      dist/static/css/chunk-28f7aa99.db99cbd1.css
  6. 0 1
      dist/static/css/chunk-2b2e2df3.ec273e5c.css
  7. 0 1
      dist/static/css/chunk-32f53b72.2c0c8178.css
  8. 0 1
      dist/static/css/chunk-4ca68f57.fc285bbd.css
  9. 0 1
      dist/static/css/chunk-63a29b4e.f94d1c94.css
  10. 0 1
      dist/static/css/chunk-6eca8dec.04e54cc0.css
  11. 0 1
      dist/static/css/chunk-77aba47c.e7c147bf.css
  12. 0 0
      dist/static/css/chunk-7b519954.b6508ab8.css
  13. 0 1
      dist/static/css/chunk-84f0305a.e3e35c2c.css
  14. 0 1
      dist/static/css/chunk-aaa580e2.16bfd249.css
  15. 0 0
      dist/static/css/chunk-b41f9964.1a5717ba.css
  16. 0 1
      dist/static/css/chunk-fa19435e.9c4c7e69.css
  17. 0 0
      dist/static/js/app.8e9a0d78.js
  18. 0 0
      dist/static/js/chunk-041a3dfe.76505c49.js
  19. 0 0
      dist/static/js/chunk-07510353.51275077.js
  20. 0 0
      dist/static/js/chunk-28f7aa99.d4a1d0fd.js
  21. 0 1
      dist/static/js/chunk-2b2e2df3.142c0887.js
  22. 0 1
      dist/static/js/chunk-32f53b72.482df6bb.js
  23. 0 0
      dist/static/js/chunk-4ca68f57.490402f7.js
  24. 0 0
      dist/static/js/chunk-63a29b4e.0031a330.js
  25. 0 1
      dist/static/js/chunk-6eca8dec.1a621ad5.js
  26. 0 1
      dist/static/js/chunk-77aba47c.97eaa27e.js
  27. 0 0
      dist/static/js/chunk-7b519954.93a8b5da.js
  28. 0 0
      dist/static/js/chunk-84f0305a.ff8f5d43.js
  29. 0 1
      dist/static/js/chunk-aaa580e2.36a546cc.js
  30. 0 0
      dist/static/js/chunk-b41f9964.f2d5233e.js
  31. 0 0
      dist/static/js/chunk-fa19435e.2a4a342c.js
  32. 2 2
      src/App.vue
  33. BIN
      src/assets/images/time.png
  34. 3 4
      src/axios/index.js
  35. 22 2
      src/router/index.js
  36. 281 0
      src/views/BigScreen/chooseBtn.vue
  37. 1223 0
      src/views/BigScreen/detail.vue
  38. 296 0
      src/views/BigScreen/inOut.vue
  39. 226 0
      src/views/BigScreen/index.vue
  40. 191 0
      src/views/BigScreen/login.vue
  41. 15 6
      src/views/chipBoxPrint.vue
  42. 379 136
      src/views/chipFinish.vue
  43. 11 7
      src/views/chipPackage.vue
  44. 373 157
      src/views/chipQualityTesting.vue
  45. 7 1
      src/views/chipScreen.vue
  46. 11 1
      src/views/cms.vue
  47. 0 76
      src/views/inOut.vue
  48. 27 20
      src/views/page/Dispatch/detail.vue
  49. 1 1
      src/views/page/Finish/detail.vue
  50. 6 2
      src/views/page/Finish/detailed.vue
  51. 2 2
      src/views/page/Finish/index.vue
  52. 1 1
      src/views/page/Inventory/index.vue
  53. 1 1
      src/views/page/Package/index.vue
  54. 98 27
      src/views/page/print.vue
  55. 24 0
      utils/util.js

Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/index.html


+ 0 - 1
dist/static/css/app.817d81b5.css

@@ -1 +0,0 @@
-#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#000;height:100vh;width:100vw}.content{background-image:url(../../static/img/bc.ffc3491e.png);background-repeat:no-repeat;background-size:cover}#nav{padding:30px}#nav a{font-weight:700;color:#2c3e50}#nav a.router-link-exact-active{color:#42b983}ol,ul{padding:0!important}

+ 0 - 1
dist/static/css/chunk-041a3dfe.9387bf3f.css

@@ -1 +0,0 @@
-.choose2[data-v-710f7c2a]{color:#03fcd3;position:relative}.bc[data-v-710f7c2a]{height:100%}.tabBar[data-v-710f7c2a]{width:100%;color:#a8a2a2}.footer[data-v-710f7c2a]{position:absolute;bottom:0;width:100%;height:3.06rem;z-index:1;background-image:url(../../static/img/tabbarlist.0ccaf302.png)}.nav-link[data-v-710f7c2a]{color:#abdfff}.h5[data-v-710f7c2a]{margin-bottom:0;position:relative;top:.24rem}.nav[data-v-710f7c2a]{--bs-nav-link-padding-x:0rem;--bs-nav-link-padding-y:0rem}.choose[data-v-710f7c2a]{color:#03fcd3}.circle[data-v-710f7c2a]{width:3rem;height:3rem;margin:0 auto;position:absolute}.choose_1[data-v-710f7c2a],.choose_3[data-v-710f7c2a]{border-radius:50%;background:#03fcd3;top:-.3rem;left:50%;transform:translate(-50%,-50%);line-height:2.3;z-index:2}[data-v-710f7c2a].ivu-modal{top:40%}[data-v-710f7c2a].ivu-modal-content{background-color:transparent!important}[data-v-710f7c2a].ivu-modal-body{padding:0}[data-v-710f7c2a].ivu-btn-primary{background-color:#0f4680}

+ 0 - 1
dist/static/css/chunk-07510353.d85d5c08.css

@@ -1 +0,0 @@
-.header[data-v-1afade6d]{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #356070}.bdy[data-v-1afade6d]{height:calc(100% - 5rem);display:flex;flex-wrap:wrap;overflow:auto}.bdy[data-v-1afade6d]::-webkit-scrollbar{width:8px}.bdy[data-v-1afade6d]::-webkit-scrollbar-track{background:linear-gradient(180deg,#f5f5f5,#002359)}.bdy[data-v-1afade6d]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#a1a1a1,#3b4169);border-radius:5px;box-shadow:inset 0 0 6px rgba(0,0,0,.3)}.choose_item[data-v-1afade6d]{border-radius:20px;background:#fff;color:#000}.choose_item[data-v-1afade6d],.item[data-v-1afade6d]{cursor:pointer;display:flex;align-items:center;padding:10px;margin:20px 0 20px 2.5%;width:30%;height:80px}.item[data-v-1afade6d]{border:1px solid #797878;color:#797878;border-radius:20px}

Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/static/css/chunk-28f7aa99.db99cbd1.css


+ 0 - 1
dist/static/css/chunk-2b2e2df3.ec273e5c.css

@@ -1 +0,0 @@
-.header[data-v-3c46eb8c]{width:94%;height:7rem;position:relative;top:.5rem;left:3%;box-shadow:.16rem .1rem .1rem .1rem #9d9b9b;border-radius:1rem;padding:.4rem .7rem 0 1rem;background:#fff}.header_btn[data-v-3c46eb8c]{border-radius:.5rem;padding:.1rem;width:5rem;display:flex;justify-content:space-around;align-items:center}.header_top[data-v-3c46eb8c]{display:flex;justify-content:space-between;align-items:center}.ot[data-v-3c46eb8c]{position:relative;top:-1.3rem}.header_middle1[data-v-3c46eb8c]{display:flex;justify-content:space-between;align-items:center}.header_middle1 .ft[data-v-3c46eb8c]{font-size:1.5rem;width:5rem;text-align:center}.header_middle[data-v-3c46eb8c]{position:relative;top:-.3rem;display:flex;justify-content:space-between;align-items:center}.btn-group-vertical>.btn[data-v-3c46eb8c],[data-v-3c46eb8c] .btn-group>.btn{background:#fff;color:#2c3e50;outline:none;border:none;margin:0;z-index:3}.header_footer[data-v-3c46eb8c]{position:relative;top:-1.7rem;display:flex;justify-content:space-between;align-items:center}.header_footer div[data-v-3c46eb8c]{font-size:.5rem;color:#f4882a}.bdy[data-v-3c46eb8c]{height:14.09rem;background-image:url(../../static/img/packUpback.a42a8fa6.png);background-size:100% 100%;padding:1.78rem 2.03rem;box-sizing:border-box;position:absolute;width:94%;transform:translate(-50%,-50%);top:40%;border-radius:1rem;left:50%}.bdy_btn[data-v-3c46eb8c]{margin-top:2rem;display:flex;justify-content:center;align-items:center}.select_list[data-v-3c46eb8c]{border-radius:.38rem;border:.03rem solid #76cfff;background-color:transparent;outline:none;padding:0 .625rem;box-sizing:border-box;color:#fff;width:100%;height:100%;font-weight:500;letter-spacing:.1rem}[data-v-3c46eb8c].inp{background:#032a64!important;color:#fff}[data-v-3c46eb8c]::-webkit-input-placeholder{color:hsla(0,0%,100%,.5176470588)}

+ 0 - 1
dist/static/css/chunk-32f53b72.2c0c8178.css

@@ -1 +0,0 @@
-@keyframes example-dbe5cda8{0%{left:600px}to{left:0}}.isred[data-v-dbe5cda8]{color:red}.isg[data-v-dbe5cda8]{color:#0f3}#dy[data-v-dbe5cda8]{overflow:auto}#dy[data-v-dbe5cda8]::-webkit-scrollbar{width:1px}.dong[data-v-dbe5cda8]:first-child{position:relative;animation-name:example-dbe5cda8;animation-duration:.9s}

+ 0 - 1
dist/static/css/chunk-4ca68f57.fc285bbd.css

@@ -1 +0,0 @@
-.bdy[data-v-35a677a6]{height:calc(100% - 6rem);overflow:auto}.bdy[data-v-35a677a6]::-webkit-scrollbar{width:1px}.bdy .item[data-v-35a677a6]{background-color:#2a4470}.bdy .item .itemmingxi[data-v-35a677a6],.bdy .item[data-v-35a677a6]{width:98%;display:flex;flex-wrap:wrap;margin:0 1% 1% 1%;border-radius:20px;position:relative}.bdy .item .itemmingxi[data-v-35a677a6]{background-color:#012248}.bdy .item .itemmingxi div[data-v-35a677a6]{color:#fff;width:22%;margin:1%}.bdy .item .itemmingxi div label[data-v-35a677a6]{width:6rem;text-align:right}.bdy .item .it_ti[data-v-35a677a6]{color:#fff;width:22%;display:flex;align-items:center;margin:1%}.bdy .item .it_ti label[data-v-35a677a6]{width:6rem;text-align:right}[data-v-35a677a6] .ivu-form-item-label{color:#fff!important;font-size:1.3rem}[data-v-35a677a6] .ivu-divider-inner-text{color:#fff}[data-v-35a677a6] .ivu-divider{margin:2px 0}

+ 0 - 1
dist/static/css/chunk-63a29b4e.f94d1c94.css

@@ -1 +0,0 @@
-.header[data-v-7490e467]{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #356070}.bdy[data-v-7490e467]{height:calc(100% - 5rem);display:flex;flex-wrap:wrap;overflow:auto}.bdy[data-v-7490e467]::-webkit-scrollbar{width:8px}.bdy[data-v-7490e467]::-webkit-scrollbar-track{background:linear-gradient(180deg,#f5f5f5,#002359)}.bdy[data-v-7490e467]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#a1a1a1,#3b4169);border-radius:5px;box-shadow:inset 0 0 6px rgba(0,0,0,.3)}[data-v-7490e467] .van-calendar__body::-webkit-scrollbar{width:0}.choose_item[data-v-7490e467]{border-radius:20px;background:#fff;color:#000}.choose_item[data-v-7490e467],.item[data-v-7490e467]{cursor:pointer;padding:10px;margin:20px 0 20px 2.5%;width:30%;height:180px}.item[data-v-7490e467]{border:1px solid #797878;color:#797878;border-radius:20px}

+ 0 - 1
dist/static/css/chunk-6eca8dec.04e54cc0.css

@@ -1 +0,0 @@
-.bdy[data-v-4e52f1ee]{display:flex;flex-wrap:wrap;overflow:auto}.bdy div[data-v-4e52f1ee]{width:30%;height:20vh;color:#fff;border:1px solid;margin:10vh 10%;display:flex;border-radius:20px;justify-content:center;align-items:center;font-size:40px}

+ 0 - 1
dist/static/css/chunk-77aba47c.e7c147bf.css

@@ -1 +0,0 @@
-.header[data-v-71dca68a]{width:94%;height:7rem;position:relative;top:.5rem;left:3%;box-shadow:.16rem .1rem .1rem .1rem #9d9b9b;border-radius:1rem;padding:.4rem .7rem 0 1rem;background:#fff}.header_btn[data-v-71dca68a]{border-radius:.5rem;padding:.1rem;width:5rem;display:flex;justify-content:space-around;align-items:center}.header_top[data-v-71dca68a]{display:flex;justify-content:space-between;align-items:center}.ot[data-v-71dca68a]{position:relative;top:-1.3rem}.header_middle1[data-v-71dca68a]{display:flex;justify-content:space-between;align-items:center}.header_middle1 .ft[data-v-71dca68a]{font-size:1.5rem;width:5rem;text-align:center}.header_middle[data-v-71dca68a]{position:relative;top:-.3rem;display:flex;justify-content:space-between;align-items:center}.btn-group-vertical>.btn[data-v-71dca68a],[data-v-71dca68a] .btn-group>.btn{background:#fff;color:#2c3e50;outline:none;border:none;margin:0;z-index:3}.header_footer[data-v-71dca68a]{position:relative;top:-1.7rem;display:flex;justify-content:space-between;align-items:center}.header_footer div[data-v-71dca68a]{font-size:.5rem;color:#f4882a}.bdy[data-v-71dca68a]{height:14.09rem;background-image:url(../../static/img/packUpback.a42a8fa6.png);background-size:100% 100%;padding:1.78rem 2.03rem;box-sizing:border-box;position:absolute;width:94%;transform:translate(-50%,-50%);top:40%;border-radius:1rem;left:50%}.bdy_btn[data-v-71dca68a]{margin-top:2rem;display:flex;justify-content:center;align-items:center}.select_list[data-v-71dca68a]{border-radius:.38rem;border:.03rem solid #76cfff;background-color:transparent;outline:none;padding:0 .625rem;box-sizing:border-box;color:#fff;width:100%;height:100%;font-weight:500;letter-spacing:.1rem}[data-v-71dca68a].inp{background:#032a64!important;color:#fff}[data-v-71dca68a]::-webkit-input-placeholder{color:hsla(0,0%,100%,.5176470588)}

Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/static/css/chunk-7b519954.b6508ab8.css


+ 0 - 1
dist/static/css/chunk-84f0305a.e3e35c2c.css

@@ -1 +0,0 @@
-.bdy[data-v-2fd2a050]{height:calc(100% - 6rem);overflow:auto}.bdy[data-v-2fd2a050]::-webkit-scrollbar{width:1px}.bdy .item[data-v-2fd2a050]{background-color:#2a4470}.bdy .item .itemmingxi[data-v-2fd2a050],.bdy .item[data-v-2fd2a050]{width:98%;display:flex;flex-wrap:wrap;margin:0 1% 1% 1%;border-radius:20px;position:relative}.bdy .item .itemmingxi[data-v-2fd2a050]{background-color:#012248}.bdy .item .itemmingxi div[data-v-2fd2a050]{color:#fff;width:22%;margin:1%}.bdy .item .itemmingxi div label[data-v-2fd2a050]{width:6rem;text-align:right}.bdy .item .it_ti[data-v-2fd2a050]{color:#fff;width:22%;display:flex;align-items:center;margin:1%}.bdy .item .it_ti label[data-v-2fd2a050]{width:6rem;text-align:right}[data-v-2fd2a050] .ivu-form-item-label{color:#fff!important;font-size:1.3rem}[data-v-2fd2a050] .ivu-divider-inner-text{color:#fff}[data-v-2fd2a050] .ivu-divider{margin:2px 0}

+ 0 - 1
dist/static/css/chunk-aaa580e2.16bfd249.css

@@ -1 +0,0 @@
-.header[data-v-58871783]{width:94%;height:7rem;position:relative;top:.5rem;left:3%;box-shadow:.16rem .1rem .1rem .1rem #9d9b9b;border-radius:1rem;padding:.4rem .7rem 0 1rem;background:#fff}.header_btn[data-v-58871783]{border-radius:.5rem;padding:.1rem;width:5rem;display:flex;justify-content:space-around;align-items:center}.header_top[data-v-58871783]{display:flex;justify-content:space-between;align-items:center}.ot[data-v-58871783]{position:relative;top:-1.3rem}.header_middle1[data-v-58871783]{display:flex;justify-content:space-between;align-items:center}.header_middle1 .ft[data-v-58871783]{font-size:1.5rem;width:5rem;text-align:center}.header_middle[data-v-58871783]{position:relative;top:-.3rem;display:flex;justify-content:space-between;align-items:center}.btn-group-vertical>.btn[data-v-58871783],[data-v-58871783] .btn-group>.btn{background:#fff;color:#2c3e50;outline:none;border:none;margin:0;z-index:3}.header_footer[data-v-58871783]{position:relative;top:-1.7rem;display:flex;justify-content:space-between;align-items:center}.header_footer div[data-v-58871783]{font-size:.5rem;color:#f4882a}.bdy[data-v-58871783]{height:14.09rem;background-image:url(../../static/img/packUpback.a42a8fa6.png);background-size:100% 100%;padding:1.78rem 2.03rem;box-sizing:border-box;position:absolute;width:94%;transform:translate(-50%,-50%);top:40%;border-radius:1rem;left:50%}.bdy_btn[data-v-58871783]{margin-top:2rem;display:flex;justify-content:center;align-items:center}.select_list[data-v-58871783]{border-radius:.38rem;border:.03rem solid #76cfff;background-color:transparent;outline:none;padding:0 .625rem;box-sizing:border-box;color:#fff;width:100%;height:100%;font-weight:500;letter-spacing:.1rem}[data-v-58871783].inp{background:#032a64!important;color:#fff}[data-v-58871783]::-webkit-input-placeholder{color:hsla(0,0%,100%,.5176470588)}

Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/static/css/chunk-b41f9964.1a5717ba.css


+ 0 - 1
dist/static/css/chunk-fa19435e.9c4c7e69.css

@@ -1 +0,0 @@
-.bdy[data-v-197fb8fc]{height:calc(100% - 6rem);overflow:auto}.bdy[data-v-197fb8fc]::-webkit-scrollbar{width:1px}.bdy .item[data-v-197fb8fc]{background-color:#2a4470}.bdy .item .itemmingxi[data-v-197fb8fc],.bdy .item[data-v-197fb8fc]{width:98%;display:flex;flex-wrap:wrap;margin:0 1% 1% 1%;border-radius:20px;position:relative}.bdy .item .itemmingxi[data-v-197fb8fc]{background-color:#012248}.bdy .item .itemmingxi div[data-v-197fb8fc]{color:#fff;width:22%;margin:1%}.bdy .item .itemmingxi div label[data-v-197fb8fc]{width:6rem;text-align:right}.bdy .item .it_ti[data-v-197fb8fc]{color:#fff;width:22%;display:flex;align-items:center;margin:1%}.bdy .item .it_ti label[data-v-197fb8fc]{width:6rem;text-align:right}[data-v-197fb8fc] .ivu-form-item-label{color:#fff!important;font-size:1.3rem}[data-v-197fb8fc] .ivu-divider-inner-text{color:#fff}[data-v-197fb8fc] .ivu-divider{margin:2px 0}

Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/static/js/app.8e9a0d78.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/static/js/chunk-041a3dfe.76505c49.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/static/js/chunk-07510353.51275077.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/static/js/chunk-28f7aa99.d4a1d0fd.js


+ 0 - 1
dist/static/js/chunk-2b2e2df3.142c0887.js

@@ -1 +0,0 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2b2e2df3"],{"234b":function(e,t,s){},4462:function(e,t,s){"use strict";s.r(t);var i=function(){var e=this,t=e._self._c;return t("div",[t("div",{staticClass:"bdy"},[t("div",{staticStyle:{"font-size":"1.3rem","font-weight":"bold",color:"#fff","margin-bottom":"1rem"}},[e._v("销售单号")]),t("div",{staticClass:"secd_input_r"},[t("b-form-select",{staticClass:"inp select_list",staticStyle:{height:"3rem"},attrs:{id:"input-3",options:e.options,required:"",placeholder:"请选择站点"},model:{value:e.selected,callback:function(t){e.selected=t},expression:"selected"}})],1),t("div",{staticClass:"bdy_btn"},[t("Button",{staticClass:"header_btn",staticStyle:{"margin-right":"3rem",height:"2.6rem"},attrs:{type:"warning",ghost:""},on:{click:e.handleReturn}},[e._v(" 返回")]),t("Button",{staticClass:"header_btn",staticStyle:{"margin-left":"3rem",height:"2.6rem"},attrs:{ghost:""},on:{click:e.handelGoSure}},[e._v(" 确认")])],1)])])},a=[],o={data(){return{is_show:!0,is_use:!1,selected:"",options:[]}},created(){const e={url:"http://122.112.250.253:7774/jbl/api/module-data/exe_sale_order_b/page",post:{direction:"DESC",property:"id",fromClientType:"pc",number:0,sorts:[],rules:[],size:15,specialConditions:[],dynamicFormCode:"exe_sale_order_b",developmentSystemId:null,debugFlag:!1}};this.axios.post("/api/testdwy",{...e}).then(e=>{this.options=e.data.content,this.options.forEach(e=>{e.value=e.exe_sale_order_b.no,e.text=e.exe_sale_order_b.no})})},methods:{handelGoSure(){if(!this.selected)return this.$Message.warning("请先选择销售单号!");this.$router.push({path:"/cms/Package/detail",query:{id:this.selected}})},handleReturn(){this.$router.push("/cms/home")}}},n=o,r=(s("6dfa"),s("2877")),l=Object(r["a"])(n,i,a,!1,null,"3c46eb8c",null);t["default"]=l.exports},"6dfa":function(e,t,s){"use strict";s("234b")}}]);

+ 0 - 1
dist/static/js/chunk-32f53b72.482df6bb.js

@@ -1 +0,0 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-32f53b72"],{"5e6f":function(t,i,e){"use strict";e.r(i);var d=function(){var t=this,i=t._self._c;return i("div",{staticStyle:{height:"100vh",padding:"20px"}},[t._m(0),i("div",{staticStyle:{height:"calc(100% - 60px)"},attrs:{id:"dy"}},t._l(t.list,(function(e,d){return i("div",{key:d,staticStyle:{"margin-top":"20px",display:"flex","justify-content":"space-between",border:"1px solid #FFFFFF",color:"#FFFFFF",padding:"15px","font-size":"20px","font-weight":"bold","text-align":"center","border-radius":"20px"}},[i("div",{staticStyle:{width:"20%"}},[t._v(t._s(e.order_no))]),i("div",{staticStyle:{width:"30%"}},[t._v(t._s(e.project))]),i("div",{staticStyle:{width:"10%"}},[t._v(t._s(e.num))]),i("div",{class:"出库"==e.type?"isred":"isg",staticStyle:{width:"20%"}},[t._v(t._s(e.type))]),i("div",{staticStyle:{width:"20%"}},[t._v(t._s(e["时间"]))])])})),0)])},s=[function(){var t=this,i=t._self._c;return i("div",{staticStyle:{display:"flex","justify-content":"space-between",border:"1px solid #FFFFFF",color:"#FFFFFF",padding:"15px","font-size":"20px","font-weight":"bold","text-align":"center","border-radius":"20px"}},[i("div",{staticStyle:{width:"20%"}},[t._v("单号")]),i("div",{staticStyle:{width:"30%"}},[t._v("客户")]),i("div",{staticStyle:{width:"10%"}},[t._v("数量")]),i("div",{staticStyle:{width:"20%"}},[t._v("类型")]),i("div",{staticStyle:{width:"20%"}},[t._v("时间")])])}];document.title="出入库";var a={data(){return{list:[],time:null}},created(){},mounted(){this.time=setInterval(()=>{this.initData()},3e3)},destroyed(){clearInterval(this.time)},methods:{initData(){this.axios.post("/api/testdwyget",{url:"http://clouddevice.qingyaokeji.com/api/inout"}).then(t=>{0!=t.data.data.length&&this.list.unshift(t.data.data)})}}},n=a,l=(e("9e13"),e("2877")),c=Object(l["a"])(n,d,s,!1,null,"dbe5cda8",null);i["default"]=c.exports},"71da":function(t,i,e){},"9e13":function(t,i,e){"use strict";e("71da")}}]);

Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/static/js/chunk-4ca68f57.490402f7.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/static/js/chunk-63a29b4e.0031a330.js


+ 0 - 1
dist/static/js/chunk-6eca8dec.1a621ad5.js

@@ -1 +0,0 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-6eca8dec"],{"20d2":function(t,e,i){},6340:function(t,e,i){"use strict";i("20d2")},"686f":function(t,e,i){"use strict";i.r(e);var s=function(){var t=this,e=t._self._c;return e("div",{staticStyle:{height:"100vh"}},[e("div",{staticClass:"bdy"},[e("div",{on:{click:function(e){return t.handleGo(1)}}},[t._v("完工")]),e("div",{on:{click:function(e){return t.handleGo(2)}}},[t._v("质检")]),e("div",{on:{click:function(e){return t.handleGo(3)}}},[t._v("包装")]),e("div",{on:{click:function(e){return t.handleGo(4)}}},[t._v("包装打印")])])])},n=[];document.title="工位屏";var r={data(){return{}},created(){console.log(this.$route.query);let t=JSON.parse(JSON.stringify(this.$route.query));if(!t.Authorization||!t.site)return this.$Message.warning({content:"请联系开发者,缺少站点和人员信息!",duration:0,closable:!0});let e={site:t.site},i=t.Authorization,s="prod"==t.systemType?"http://122.112.250.253:7774/":"test"==t.systemType?"http://121.36.142.167:7774/":"";localStorage.setItem("site",JSON.stringify(e)),localStorage.setItem("token",i),localStorage.setItem("dwy_url",s)},methods:{handleGo(t){switch(t){case 1:this.$router.push("/cms/chipFinish");break;case 2:this.$router.push("/cms/chipQualityTesting");break;case 3:this.$router.push("/cms/chipPackage");break;case 4:this.$router.push("/cms/chipBoxOrder");break}}}},c=r,o=(i("6340"),i("2877")),a=Object(o["a"])(c,s,n,!1,null,"4e52f1ee",null);e["default"]=a.exports}}]);

+ 0 - 1
dist/static/js/chunk-77aba47c.97eaa27e.js

@@ -1 +0,0 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-77aba47c"],{"0d9e":function(t,e,s){"use strict";s.r(e);var i=function(){var t=this,e=t._self._c;return e("div",[e("div",{staticClass:"bdy"},[e("div",{staticStyle:{"font-size":"1.3rem","font-weight":"bold",color:"#fff","margin-bottom":"1rem"}},[t._v("发货单号")]),e("div",{staticClass:"secd_input_r"},[e("b-form-select",{staticClass:"inp select_list",staticStyle:{height:"3rem"},attrs:{id:"input-3",options:t.options,required:"",placeholder:"请选择站点"},model:{value:t.selected,callback:function(e){t.selected=e},expression:"selected"}})],1),e("div",{staticClass:"bdy_btn"},[e("Button",{staticClass:"header_btn",staticStyle:{"margin-right":"3rem",height:"2.6rem"},attrs:{type:"warning",ghost:""},on:{click:t.handleReturn}},[t._v(" 返回")]),e("Button",{staticClass:"header_btn",staticStyle:{"margin-left":"3rem",height:"2.6rem"},attrs:{ghost:""},on:{click:t.handelGoSure}},[t._v(" 确认")])],1)])])},n=[],a={data(){return{is_show:!0,is_use:!1,selected:"",options:[]}},created(){const t={url:"http://122.112.250.253:7774/jbl/api/module-data/delivery_note_list/page",post:{direction:"DESC",property:"id",fromClientType:"pc",number:0,sorts:[],rules:[],size:15,specialConditions:[],dynamicFormCode:"delivery_note",developmentSystemId:null,debugFlag:!1}};this.axios.post("/api/testdwy",{...t}).then(t=>{this.options=t.data.content,this.options.forEach(t=>{t.value=t.dynamic_form_value_id,t.text=t.no})})},methods:{handelGoSure(){if(!this.selected)return this.$Message.warning("请先选择发货单号!");this.$router.push({path:"/cms/dispatch/detail",query:{id:this.selected}})},handleReturn(){this.$router.push("/cms/home")}}},o=a,r=(s("3826"),s("2877")),l=Object(r["a"])(o,i,n,!1,null,"71dca68a",null);e["default"]=l.exports},3826:function(t,e,s){"use strict";s("7432")},7432:function(t,e,s){}}]);

Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/static/js/chunk-7b519954.93a8b5da.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/static/js/chunk-84f0305a.ff8f5d43.js


+ 0 - 1
dist/static/js/chunk-aaa580e2.36a546cc.js

@@ -1 +0,0 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-aaa580e2"],{a511:function(t,e,s){},ccd2:function(t,e,s){"use strict";s.r(e);var i=function(){var t=this,e=t._self._c;return e("div",[e("div",{staticClass:"bdy"},[e("div",{staticStyle:{"font-size":"1.3rem","font-weight":"bold",color:"#fff","margin-bottom":"1rem"}},[t._v("盘点单号")]),e("div",{staticClass:"secd_input_r"},[e("b-form-select",{staticClass:"inp select_list",staticStyle:{height:"3rem"},attrs:{id:"input-3",options:t.options,required:"",placeholder:"请选择站点"},model:{value:t.selected,callback:function(e){t.selected=e},expression:"selected"}})],1),e("div",{staticClass:"bdy_btn"},[e("Button",{staticClass:"header_btn",staticStyle:{"margin-right":"3rem",height:"2.6rem"},attrs:{type:"warning",ghost:""},on:{click:t.handleReturn}},[t._v(" 返回")]),e("Button",{staticClass:"header_btn",staticStyle:{"margin-left":"3rem",height:"2.6rem"},attrs:{ghost:""},on:{click:t.handelGoSure}},[t._v(" 确认")])],1)])])},o=[],a={data(){return{is_show:!0,is_use:!1,selected:"",options:[]}},created(){const t={url:"http://122.112.250.253:7774/jbl/api/module-data/goods_check_list/page",post:{direction:"DESC",property:"id",fromClientType:"pc",number:0,sorts:[],rules:[],size:15,specialConditions:[],dynamicFormCode:"goods_check",developmentSystemId:null,debugFlag:!0}};this.axios.post("/api/testdwy",{...t}).then(t=>{this.options=t.data.content.filter(t=>"NOT_APPROVED"===t.status),this.options.forEach(t=>{t.value=t.dynamic_form_value_id,t.text=t.goods_check_no})})},methods:{handelGoSure(){if(!this.selected)return this.$Message.warning("请先选择盘点单号!");this.$router.push({path:"/cms/Inventory/detail",query:{id:this.selected}})},handleReturn(){this.$router.push("/cms/home")}}},n=a,r=(s("fd13"),s("2877")),c=Object(r["a"])(n,i,o,!1,null,"58871783",null);e["default"]=c.exports},fd13:function(t,e,s){"use strict";s("a511")}}]);

Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/static/js/chunk-b41f9964.f2d5233e.js


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
dist/static/js/chunk-fa19435e.2a4a342c.js


+ 2 - 2
src/App.vue

@@ -37,8 +37,8 @@ document.body.addEventListener('focusout', () => { // 软键盘关闭事张
 .content{
   background-image: url("./assets/images/bc.png");
   background-repeat: no-repeat ;
-  background-size: cover;}
-
+  background-size: cover;
+}
 #nav {
   padding: 30px;
 }

BIN
src/assets/images/time.png


+ 3 - 4
src/axios/index.js

@@ -22,11 +22,10 @@ instance.interceptors.request.use(
     const proxyUrl = process.env.VUE_APP_BASE_URL // 打包上线时请改用此处
     // let proxy_url = '/proxy'//打包上线时此处请注释掉
     config.url = proxyUrl + config.url
-    if (config.data.url === 'http://122.112.250.253:7774/jbl/api/mes/login' || config.data.url === 'http://122.112.250.253:7774/jbl/api/site/all/ignore-action?_allow_anonymous=true') {
+    const urls = ['http://122.112.250.253:7774/jbl/api/mes/login','http://121.36.142.167:7774/jbl/api/mes/login','http://122.112.250.253:7774/jbl/api/site/all/ignore-action?_allow_anonymous=true','http://121.36.142.167:7774/jbl/api/site/all/ignore-action?_allow_anonymous=true','http://clouddevice.qingyaokeji.com/api/inout','http://122.112.250.253:7774/jbl/api/module-data/dispatch_orders/dispatch_orders/diy/update_print_status','http://122.112.250.253:7774/jbl/api/module-data/box_orders/box_orders/diy/update_print_status','http://122.112.250.253:7774/jbl/api/module-data/process_flow_card/process_flow_card/diy/update_print_status']
+    if (urls.indexOf(config.data.url) !== -1) {
       config.data.header = ['Content-Type:application/json']
-    } else if(config.data.url==='http://clouddevice.qingyaokeji.com/api/inout'){
-      config.data.header = ['Content-Type:application/json']
-    }else {
+    } else {
       config.data.header = [`Authorization:Bearer ${token}`, 'Content-Type:application/json', `Site:${site.site}`]
     }
     // config.data = JSON.stringify(data)

+ 22 - 2
src/router/index.js

@@ -49,7 +49,7 @@ const routes = [
   {
     path: '/cms/inOut',
     name: 'inOut', //  出入库
-    component: (resolve) => require(['@/views/inOut'], resolve)
+    component: (resolve) => require(['@/views/BigScreen/inOut.vue'], resolve)
   },
   {
     path: '/cms/chipBoxPrint',
@@ -57,6 +57,26 @@ const routes = [
     component: (resolve) => require(['@/views/chipBoxPrint'], resolve)
   },
   {
+    path: '/cms/choose',
+    name: 'choose', //  包装打印屏
+    component: (resolve) => require(['@/views/BigScreen/chooseBtn'], resolve)
+  },
+  {
+    path: '/cms/login',
+    name: 'bigScreenLogin', //  大屏登录
+    component: (resolve) => require(['@/views/BigScreen/login'], resolve)
+  },
+  {
+    path: '/cms/bigDispatchList',
+    name: 'bigDispatchList', //  选择发货列表
+    component: (resolve) => require(['@/views/BigScreen/index'], resolve)
+  },
+  {
+    path: '/cms/bigDispatch',
+    name: 'bigDispatch', //  选择发货大屏
+    component: (resolve) => require(['@/views/BigScreen/detail'], resolve)
+  },
+  {
     path: '/cms',
     name: 'Cms',
     meta: { index: 2 },
@@ -75,7 +95,7 @@ router.beforeEach((to, from, next) => {
     next()
   } else {
     const token = localStorage.getItem('token')
-    if (!token&&to.path!=='/cms/print'&&to.path!=='/cms/chipBoxPrint'&&to.path!=='/cms/inOut'&&to.path!=='/cms/chipBoxOrder'&&to.path!=='/cms/chipPackage'&&to.path!=='/cms/chipFinish'&&to.path!=='/cms/chipQualityTesting'&&to.path!=='/cms/chipScreen') {
+    if (!token&&to.path!=='/cms/print'&&to.path!=='/cms/chipBoxPrint'&&to.path!=='/cms/inOut'&&to.path!=='/cms/chipBoxOrder'&&to.path!=='/cms/chipPackage'&&to.path!=='/cms/chipFinish'&&to.path!=='/cms/chipQualityTesting'&&to.path!=='/cms/chipScreen'&&to.path!=='/cms/login'&&to.path!=='/cms/bigDispatch'&&to.path!=='/cms/bigDispatchList') {
       next('/')
     } else {
       next()

+ 281 - 0
src/views/BigScreen/chooseBtn.vue

@@ -0,0 +1,281 @@
+<template>
+  <div style="height:100vh;">
+    <div class="home_header">选择大屏</div>
+    <div class="home_header_line"></div>
+    <div class="home_con_body">
+      <div>
+          <div class="completion_con" @click="handlePackage">
+            <div style="display: flex;align-items: center;gap: .84rem;">
+              <img style="width: 3.19rem;height: 3.19rem" src="../../assets/home/bzhomebz.png" alt="">
+              <p style="margin-bottom: 0;font-size: 1.13rem;color: #FFFFFF;">出入库屏</p>
+            </div>
+          </div>
+          <div class="completion_con" @click="handleDispatch">
+            <div style="display: flex;align-items: center;gap: .84rem;">
+              <img style="width: 3.19rem;height: 3.19rem" src="../../assets/home/bzhomefha.png" alt="">
+              <p style="margin-bottom: 0;font-size: 1.13rem;color: #FFFFFF;">发货屏</p>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      is_show: true
+    }
+  },
+  mounted() {
+    this.handleShow()
+  },
+  methods: {
+    handlePackage () {
+      this.$router.push({path:'/cms/bigDispatchList',query:{type:2}})
+    },
+    handleDispatch () {
+      this.$router.push({path:'/cms/bigDispatchList',query:{type:1}})
+    },
+    handleShow () {
+      this.is_show = !this.is_show
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+.com_top {
+  margin-top: 2.2rem !important;
+}
+.com_down{
+  height: 15.7rem;
+  overflow: auto;
+}
+.completion_con {
+  cursor: pointer;
+  height: 5.19rem;
+  background-image: url('../../assets/home/completion.png');
+  background-size: 100% 100%;
+  margin-top: 0.72rem;
+  padding: 1rem 1.28rem;
+  box-sizing: border-box;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+
+.home_con_s {
+  position: relative;
+
+  .pack_up {
+    position: absolute;
+    top: 0;
+    left: 50%;
+    transform: translateX(-50%);
+    width: 5.56rem;
+    background-image: url('../../assets/home/packUp.png');
+    background-size: 100% 100%;
+    height: 1.97rem;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+
+    img {
+      width: 2.59rem;
+      height: 0.88rem;
+    }
+
+
+
+  }
+
+  .pack_up_d {
+    top: -2.2rem;
+  }
+
+  .pack_up_con {
+    height: 14.09rem;
+    background-image: url('../../assets/home/packUpback.png');
+    background-size: 100% 100%;
+    padding: 1.78rem 2.03rem;
+    box-sizing: border-box;
+
+    .pack_up_name {
+      height: 1.25rem;
+      font-size: 1.25rem;
+      color: #fff;
+      font-weight: 600;
+    }
+
+    .pack_up_grid {
+      display: grid;
+      grid-template-columns: repeat(2, 1fr);
+      row-gap: .625rem;
+
+      &>div {
+        display: flex;
+        flex-direction: column;
+        row-gap: .625rem;
+
+        &>div {
+          display: flex;
+          gap: .125rem;
+
+          span:nth-child(1) {
+            font-size: 1.63rem;
+            font-family: DIN-BoldItalic, DIN;
+            font-weight: 600;
+            color: #04FFD5;
+            line-height: 1.31rem;
+            transform: skewX(-10deg);
+            text-shadow: 0px 0px 0px rgba(4, 255, 213, 0.23);
+
+          }
+
+          span:nth-child(2) {
+            font-size: 1rem;
+            font-family: PingFangSC-Regular, PingFang SC;
+            font-weight: 400;
+            color: #ABDFFF;
+          }
+        }
+
+        &>p:nth-child(1) {
+          font-size: 1rem;
+          font-family: PingFangSC-Regular, PingFang SC;
+          font-weight: 400;
+          color: #ABDFFF;
+          margin-bottom: 0px;
+        }
+      }
+    }
+  }
+}
+
+.home_con_body {
+  width: 100%;
+  padding: 0 1rem 1rem 1rem;
+  box-sizing: border-box;
+}
+
+.home_header {
+  height: 2.125rem;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  color: #fff;
+  font-size: 1.125rem;
+  font-weight: 600;
+}
+
+.home_header_line {
+  width: 100%;
+  height: .0625rem;
+  background-color: #fff;
+  opacity: 0.2;
+}
+
+.header {
+  width: 94%;
+  height: 7rem;
+  // overflow: hidden;
+  // transition: all 0.4s;
+  position: relative;
+  top: 0.5rem;
+  left: 3%;
+  box-shadow: 0.16rem 0.1rem 0.1rem 0.1rem #9d9b9b;
+  border-radius: 1rem;
+  padding: 0.4rem 0.7rem 0 1rem;
+  background: #fff;
+}
+
+.header_btn {
+  border-radius: 1rem;
+  padding: 0.1rem;
+  width: 5rem;
+  display: flex;
+  justify-content: space-around;
+  align-items: center;
+}
+
+.header_top {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
+.ot {
+  position: relative;
+  top: -1.3rem;
+}
+
+.header_middle1 {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+
+  .ft {
+    font-size: 1.5rem;
+    width: 5rem;
+    text-align: center;
+  }
+}
+
+.header_middle {
+  position: relative;
+  top: -0.3rem;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
+::v-deep .btn-group>.btn,
+.btn-group-vertical>.btn {
+  background: #ffffff;
+  color: #2c3e50;
+  outline: none;
+  border: none;
+  margin: 0;
+  z-index: 3;
+}
+
+.header_footer {
+  position: relative;
+  top: -1.7rem;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+
+  div {
+    font-size: 0.5rem;
+    color: rgb(244, 136, 42);
+  }
+}
+
+.bdy {
+  display: flex;
+  flex-wrap: wrap;
+  width: 94%;
+  position: relative;
+  top: 1.4rem;
+  left: 3%;
+  height: 24rem;
+
+  .item {
+    width: 46%;
+    margin: 2%;
+    text-align: center;
+    height: 45%;
+    border-radius: 1rem;
+    background: #fff;
+    box-shadow: 0.16rem 0.1rem 0.1rem 0.1rem #9d9b9b;
+  }
+}
+
+.ft_by {
+  position: relative;
+  top: 0.5rem;
+  font-size: 1.4rem;
+}
+</style>

+ 1223 - 0
src/views/BigScreen/detail.vue

@@ -0,0 +1,1223 @@
+<template>
+  <div style="overflow: auto;padding-bottom: 6.6rem;box-sizing: border-box;height: 100vh">
+    <div style="height: calc(100% - 2rem);">
+      <div class="home_header">发货屏
+        <div style="position: absolute;right: 1rem;display: flex;align-items: center">
+          <i-switch v-model="direction" size="large" style="margin-right:1rem">
+            <span slot="open">入</span>
+            <span slot="close">出</span>
+          </i-switch>
+          <Button
+              @click="handleFullScreenClick"
+              id="full_screen_btn"
+              size="large"
+              type="primary"
+              style="margin-right: 1rem;margin-top: .2rem"
+          >
+            {{ isFullScreen ? "收  缩" : "全  屏" }}
+          </Button>
+          <div class="return_btn" @click="handleReturn">返回</div>
+          <div class="confirm_btn" @click="handelGoSure">确认</div>
+        </div>
+      </div>
+      <div class="home_header_line"></div>
+      <div class="time">
+        <img
+            class="time_pic"
+            src="../../assets/images/time.png"
+            alt=""
+        /><span>{{ time }}</span>
+        <span style="font-size: 1rem;margin-left: 1rem">({{name}})</span>
+      </div>
+      <div style="margin-left: 1rem;color: #FFFFFF;font-size: 1.2rem">
+        <div style="display: flex">
+          <div style="width: 30rem"><span style="width: 7rem;display: inline-block;text-align: right">经销商:</span><span>{{data.data.exe_delivery_note_b.distributor}}-{{data.data.exe_delivery_note_b.distributor_show}}</span></div>
+          <div><span style="width: 7rem;display: inline-block;text-align: right;margin-left: 2rem">发货单号:</span><span>{{data.data.exe_delivery_note_b.no}}</span></div>
+        </div>
+        <div style="display: flex;margin-top: 1rem">
+          <div style="width: 30rem"><span style="width: 7rem;display: inline-block;text-align: right">客户:</span><span>{{data.data.exe_delivery_note_b.customer_code_show}}</span></div>
+          <div><span style="width: 7rem;display: inline-block;text-align: right;margin-left: 2rem">销售单号:</span><span>{{data.data.exe_delivery_note_b.order_no}}</span></div>
+        </div>
+      </div>
+      <div class="home_con_body">
+        <div class="home_con_s">
+          <div class="pack_up_con">
+            <div class="pack_up_grid">
+              <div style="width: 40%">
+              <div>
+                <p>预发总数</p>
+                <div><span>{{ total_num }}</span><span>张</span></div>
+              </div>
+              <div>
+                <p>已扫总数</p>
+                <div><span>{{ scan_num }}</span><span>张</span></div>
+              </div>
+              <div>
+                <p>未扫总数</p>
+                <div><span>{{ total_num - scan_num }}</span><span>张</span></div>
+              </div>
+              </div>
+              <div style="width: 40%">
+              <div>
+<!--                @click="handleErrorShow"-->
+                <p style="color: red">异常总数</p>
+                <div><span style="color:red !important;margin-left: 1rem">{{error_num}}</span><span style="color: red">张</span></div>
+              </div>
+              </div>
+            </div>
+            <div style="display: flex;justify-content: space-between;margin-top: 1rem">
+              <div style="width: 50%">
+                <table class="true_table">
+                  <tr style="height: 2rem">
+                    <th style="width: 5rem">产品名称</th>
+                    <th style="width: 4rem">规格型号</th>
+                    <th style="width: 2rem">包装单号</th>
+                    <th style="width: 2rem">已扫到数量</th>
+                  </tr>
+                                  <tr v-for="(item, index) in tableData" :key="index" @click="handleChoose(item, index)">
+                                    <td>
+                                      {{ item.product_title}}
+                                    </td>
+                                    <td>{{ item.product_size }}</td>
+                                    <td>{{ item.box_no}}</td>
+                                    <td style="color: #04FFD5">{{ item.out_qty }}</td>
+                                  </tr>
+                </table>
+              </div>
+              <div style="width: 45%;margin-right: 1rem">
+                <table class='error_table'>
+                  <tr style="height: 2rem">
+                    <th style="width: 5rem;">产品名称</th>
+                    <th style="width: 4rem;">规格型号</th>
+                    <th style="width: 2rem;">包装单号</th>
+                    <th style="width: 2rem;">数量</th>
+                  </tr>
+                  <tr v-for="(item, index) in error_data" :key="index" @click="handleChoose(item, index)">
+                    <td>
+                      {{ item.box_detail.product_title }}
+                    </td>
+                    <td>{{ item.product_size }}</td>
+                    <td>{{ item.box_no }}</td>
+                    <td>{{ item.box_num }}</td>
+                  </tr>
+                </table>
+              </div>
+            </div>
+          </div>
+        </div>
+<!--        <div class="send_work" v-for="(item, index) in tableData" :key="index">-->
+<!--          &lt;!&ndash;          <div class="check_box">&ndash;&gt;-->
+<!--          &lt;!&ndash;            <div @click="handleChoose(item, index)" :class="item.is_choose ? 'check_box_c_active' : 'check_box_c'">&ndash;&gt;-->
+<!--          &lt;!&ndash;            </div>&ndash;&gt;-->
+<!--          &lt;!&ndash;          </div>&ndash;&gt;-->
+<!--          <div class="secd_flex" style="margin-top: .8rem">-->
+<!--            <div class="secd_title">-->
+<!--              <span>发货单号:</span><span> {{ data.data.exe_delivery_note_b.no }}</span>-->
+<!--            </div>-->
+<!--            <span class="secd_title_d">{{ item.material_name }}</span>-->
+<!--            <div class="secd_g"><span>规格型号:</span><span>{{ item.specs }}</span></div>-->
+<!--            <div class="secd_flex_w">-->
+<!--              <div class="secd_flex_s">-->
+<!--                <span>已扫到数量:</span>-->
+<!--                <span>{{ item.out_qty }}张</span>-->
+<!--              </div>-->
+<!--              <div class="secd_flex_s">-->
+<!--                <span>未发货数量:</span>-->
+<!--                <span>{{ item.this_delivery_qty  }}张</span>-->
+<!--              </div>-->
+<!--            </div>-->
+<!--          </div>-->
+
+<!--        </div>-->
+      </div>
+    </div>
+<!--    <Modal-->
+<!--        v-model="is_error"-->
+<!--        width="80"-->
+<!--        footer-hide-->
+<!--        :closable="false"-->
+<!--        :mask-closable="false"-->
+<!--    >-->
+<!--      <div style="font-size: 1.2rem; font-weight: bold;">异常数据</div>-->
+<!--      <div style="height: 50vh;overflow: auto">-->
+<!--        <Form v-for="(item,index) in error_data" :key="index" :label-width="120" style="width:100%;background-color: rgba(79,97,201,0.21);border-radius: 1rem;margin: .7rem 0">-->
+<!--          <FormItem label="包装单号:" style="margin-bottom: .2rem !important;">-->
+<!--            <span>{{item.box_no}}</span>-->
+<!--          </FormItem>-->
+<!--          <FormItem label="订单号:" style="margin-bottom: .2rem !important;">-->
+<!--            <span>{{item.order_no}}</span>-->
+<!--          </FormItem>-->
+<!--          <FormItem label="客户名称:" style="margin-bottom: .2rem !important;">-->
+<!--            <span>{{item.box_detail.customer_name}}</span>-->
+<!--          </FormItem>-->
+<!--          <FormItem label="产品名称:" style="margin-bottom: .2rem !important;">-->
+<!--            <span>{{item.box_detail.product_title}}</span>-->
+<!--          </FormItem>-->
+<!--          <FormItem label="规格型号:" style="margin-bottom: .2rem !important;">-->
+<!--            <span>{{item.product_size}}</span>-->
+<!--          </FormItem>-->
+<!--          <FormItem label="包装数量:" style="margin-bottom: 0">-->
+<!--            <span>{{item.box_num}}</span>-->
+<!--          </FormItem>-->
+<!--        </Form>-->
+<!--      </div>-->
+<!--      <div style="text-align: center">-->
+<!--        <Button-->
+<!--            style="margin-left: 1rem"-->
+<!--            type="primary"-->
+<!--            @click="is_error = false"-->
+<!--        >返回</Button-->
+<!--        >-->
+<!--      </div>-->
+<!--    </Modal>-->
+  </div>
+</template>
+<script>
+import $ from 'jquery'
+document.title = '发货屏'
+export default {
+  data () {
+    return {
+      direction:false,//false出,true 入
+      time:'',
+      name: '',
+      error_num:0,
+      // employee_code: '',
+      tableData: [],
+      key_tableData: {},
+      send_goods_out: {},
+      data: {
+        data:{
+          exe_delivery_note_b:{}
+        }
+      },
+      send_goods_out_product: {},
+      is_use: false,
+      total_num: 0,
+      scan_num: 0,
+      saveData: 0,
+      detail: {},
+      transport_total: 0,
+      scan_data: [],
+      new_table_data: [],
+      state: true,
+      is_error: false,
+      error_data:[],
+      text1:[],
+      timer: '',
+      times: '',
+      record_state: false,
+      record_send_goods:{},
+      isFullScreen:false,
+    }
+  },
+  created () {
+    let _this = this;
+    $.post({
+      url:'http://clouddevice.qingyaokeji.com/api/setFhMessage',
+      data:{
+        'device_id':_this.$route.query.code,
+        'fh':1
+      }
+    })
+    this.timeFh = setInterval(()=>{
+      $.post({
+        url:'http://clouddevice.qingyaokeji.com/api/setFhMessage',
+        data:{
+          'device_id':_this.$route.query.code,
+          'fh':1
+        }
+      })
+    },50000)
+    this.timer = setInterval(() => {
+      var date = new Date()
+      let time = new Date(date.toLocaleString('en-US', { timeZone: 'Asia/Shanghai' }));
+      let Y = time.getFullYear();
+      let M = time.getMonth() + 1;
+      let D = time.getDate();
+      let second = time.toString().split(" ")[4];
+      this.time = `${Y}-${M}-${D}  ${second}`;
+    }, 1000);
+  },
+  mounted() {
+    this.name=this.$route.query.title;
+    // this.employee_code = JSON.parse(localStorage.getItem('userDto')).mark1Code
+    // if (localStorage.getItem('fyy_target')) {
+    //   data.target = JSON.parse(localStorage.getItem('fyy_target'))
+    // }
+    this.tableData = []
+    const id = this.$route.query.id
+    const data = {
+      url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/delivery_note/delivery_note/478838363726815232/${id}`
+      // post: {"direction":"DESC","property":"id","fromClientType":"pc","number":0,"sorts":[],"rules":[{"field":"dispatch_orders.dispatch_no","option":"LIKE_ANYWHERE","values":[v]},{"field":"product_no","option":"LIKE_ANYWHERE","values":["BC030101000001"]}],"size":15,"specialConditions":[],"workflowSearchBean":{},"dynamicFormCode":"dispatch_orders","dynamicFormTable":null,"ignoreField":true,"developmentSystemId":null,"debugFlag":true},
+    }
+    this.initData(data)
+  },
+  destroyed () {
+    clearInterval(this.timer)
+    clearInterval(this.timeFh)
+    clearInterval(this.times)
+  },
+  methods:{
+    handleFullScreenClick () {
+      this.isFullScreen = !this.isFullScreen;
+      if (this.isFullScreen) {
+        this.enterFullScreen();
+      } else {
+        this.exitFullScreen();
+      }
+    },
+    enterFullScreen () {
+      let el = document.documentElement;
+      let rfs =
+          el.requestFullScreen ||
+          el.webkitRequestFullScreen ||
+          el.mozRequestFullScreen ||
+          el.msRequestFullscreen;
+      if (rfs) {
+        rfs.call(el);
+      } else if (typeof window.ActiveXObject !== "undefined") {
+        // for IE,这里其实就是模拟了按下键盘的F11,使浏览器全屏
+        let wscript = new ActiveXObject("WScript.Shell");
+        if (wscript != null) {
+          wscript.SendKeys("{F11}");
+        }
+      }
+    },
+    exitFullScreen () {
+      let el = document;
+      let cfs =
+          el.cancelFullScreen ||
+          el.mozCancelFullScreen ||
+          el.msExitFullscreen ||
+          el.webkitExitFullscreen ||
+          el.exitFullscreen;
+      if (cfs) {
+        // typeof cfs != "undefined" && cfs
+        cfs.call(el);
+      } else if (typeof window.ActiveXObject !== "undefined") {
+        // for IE,这里和fullScreen相同,模拟按下F11键退出全屏
+        let wscript = new ActiveXObject("WScript.Shell");
+        if (wscript != null) {
+          wscript.SendKeys("{F11}");
+        }
+      }
+    },
+    handleErrorShow(){
+      if(this.error_num){
+        this.is_error = true;
+      }
+    },
+    // 原始数据获取
+    initData(row) {
+      // console.log(this.func.stringToHex('BZ00329'))
+      // console.log(this.func.stringToHex('BZ00331'))
+      let _this = this;
+      this.axios.post('/api/testdwyget', { ...row }).then(res => {
+        // this.tableData.push(...res.data.data.exe_delivery_note_dtl_b);
+        res.data.data.exe_delivery_note_dtl_b.forEach(c=>{
+          c.this_delivery_qty -= c.out_qty_total?c.out_qty_total:0
+        })
+        this.data = JSON.parse(JSON.stringify(res.data));
+        this.$set(this.data.data.exe_delivery_note_b,'order_no',this.data.data.exe_delivery_note_b.order_no.slice(1,this.data.data.exe_delivery_note_b.order_no.length-1))
+        this.detail = res.data.data.exe_delivery_note_b;
+        this.total_num = 0;
+        res.data.data.exe_delivery_note_dtl_b.forEach((element, index) => {
+          element.out_qty = 0
+          element.product_code = element.material_code
+          this.total_num = this.total_num + element.this_delivery_qty
+          let product_key = this.deelUniqueProductKey(element)
+          // if(Object.keys(this.key_tableData).indexOf(product_key) !== -1){
+          //   this.key_tableData[product_key].this_delivery_qty += element.this_delivery_qty
+          // } else{
+          this.key_tableData[product_key] = element
+          // this.transport_total = this.transport_total + element.out_qty
+          // }
+          // if (element.box_orders_show) {
+          //   this.is_box_data.push(this.deelUniqueKey(element));
+          // }
+        })
+        // let ji = ['\"425A3030303235\"']
+        // console.log(JSON.stringify(ji))
+        // let text = []
+        // if (localStorage.getItem('fyy_target')) {
+        //   // console.log(JSON.parse(localStorage.getItem('fyy_target')))
+        //   let target = JSON.parse(localStorage.getItem('fyy_target'))
+        //   localStorage.removeItem('fyy_target')
+        //   // this.$Message.warning(localStorage.getItem('fyy_target'))
+        //   target.forEach(v => {
+        //     v = v.replace(/\"/g, '')
+        //     text.push(this.func.hexToString(v))
+        //   })
+        //   //   // console.log(text)
+        // }
+        // let text1 = localStorage.getItem('text') ? JSON.parse(localStorage.getItem('text')) : []
+        // text.forEach(v => {
+        //   if (text1.indexOf(v) === -1) {
+        //     text1.push(v)
+        //   }
+        // })
+        // localStorage.setItem('text', JSON.stringify(text1));
+        // text1 = ['BZ00327']
+        this.axios.post('/api/testdwy', {url:`${localStorage.getItem('dwy_url')}jbl/api/module-data/send_goods_out_dtl/page`,post: {
+            debugFlag: true,
+            developmentSystemId: null,
+            direction: "DESC",
+            dynamicFormCode: "send_goods_out",
+            dynamicFormTable: null,
+            fromClientType: "pc",
+            ignoreField: true,
+            number: 0,
+            property: "id",
+            rules: [{
+              field: "bus_id",
+              option: "LIKE_ANYWHERE",
+              values: [this.$route.query.id]
+            }],
+            size: 999,
+            sorts: [],
+            specialConditions: [],
+            workflowSearchBean: {}
+          }}
+        ).then(res => {
+          this.record_state = res.data.content.length==0?false:true;
+          if(this.record_state){
+            this.record_send_goods = res.data.content[0].send_goods_out
+          }
+          this.tableData = JSON.parse(JSON.stringify(res.data.content))
+          this.tableData.forEach(v=>{
+            this.scan_num += v.out_qty*1;
+            v.box_no = v.box_orders_show;
+            v.box_id = v.box_orders;
+            v.sure_id = v.id;
+          })
+        })
+        this.times = setInterval(()=>{
+          $.post({
+            url:'http://clouddevice.qingyaokeji.com/api/getOrderNumber',
+            data:{'device_id':_this.$route.query.code},
+            success:(res)=>{
+              let text1 = res.data.map(v=>v.epc);
+              let dir = this.direction?1:2;
+              const dataBox = {
+                url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/box_orders/box_orders/diy/defective_order_no_list`,
+                post: { "defective_order_no_list":text1}
+              }
+              // const dataBox = {
+              //   url: 'http://122.112.250.253:7774/jbl/api/module-data/box_orders/box_orders/diy/defective_order_no_list',
+              //   post: { "defective_order_no_list":['BZ00025']}
+              // }
+              if(text1.length!=0){
+                _this.initDataBox(dataBox,dir)
+              }
+            }
+          })
+        },2000)
+      })
+    },
+    // 扫描数据获取
+    initDataBox (row,type) {
+      if(type==1){//入
+       let box_n = row.post["defective_order_no_list"];
+       this.tableData = this.tableData.filter(v=>box_n.indexOf(v.box_no)==-1)
+        this.error_data = this.error_data.filter(v=>box_n.indexOf(v.box_no)==-1)
+        this.scan_num = 0;
+       this.error_num = 0;
+       this.tableData.forEach(v=>{
+         this.scan_num += v.out_qty*1;
+       })
+        this.error_data.forEach(v=>{
+          this.error_num += v.box_num*1;
+        })
+      }else {//出
+        // this.$Message.warning(row.post["defective_order_no_list"].toString())
+        this.text1 = row.post["defective_order_no_list"];
+        let data = [];
+        this.axios.post('/api/testdwy', { ...row }).then(res => {
+          if (res.code == 200) {
+            res.data.data.filter(v=>!v.box_orders.delivery_status).forEach((element, index) => {
+              element.product_code = element.product_no;
+              element.box_no= element.box_orders.defective_order_no;
+              element.box_orders= element.box_orders.id;
+              element.box_id = element.box_orders.id;
+              element.box_detail= element;
+              data.push(element);
+            })
+            this.getTable(data);
+          }
+        })
+      }
+    },
+    getTable(data){
+      let arr = Object.keys(this.key_tableData);
+      let arr1 = this.tableData.map(v=>`${v.product_title}${v.product_size}${v.box_no}`)
+      let arr2 =this.error_data.map(v=>`${v.product_title}${v.product_size}${v.box_no}`)
+      data.forEach(v=> {
+        if(this.detail.order_no.indexOf(v.order_no)!=-1&&arr.indexOf(this.deelUniqueProductKey(v)) != -1){
+          if(arr1.indexOf(`${v.product_title}${v.product_size}${v.box_no}`)==-1){
+            v.out_qty = v.box_num*1;
+            this.tableData.unshift(v);
+            this.scan_num += v.box_num*1;
+          }
+          // is_scan_key[this.deelUniqueProductKey(element)]=1;
+          // table_data_detail.this_delivery_qty =  this.key_tableData[this.deelUniqueProductKey(element)].this_delivery_qty;
+          // table_data_detail.n_id = element.id;
+          // table_data_detail.id = null;
+          // this.new_table_data.push(table_data_detail)
+        } else {
+          if(arr2.indexOf(`${v.product_title}${v.product_size}${v.box_no}`)==-1) {
+            this.error_data.push(v);
+            this.error_num += v.box_num * 1
+          }
+        }
+      })
+    },
+    deelUniqueProductKey(element) {
+      let key = element.product_code + (element.color?element.color:'') + (element.color_two?element.color_two:'') +(element.process_title?element.process_title:'') +(element.process_title_two?element.process_title_two:'')
+      return key;
+    },
+    // 将原始数据处理拼接成提交的数据
+    // deelTableData() {
+    //   // let new_table_data = [];
+    //   // let is_scan_key = {};
+    //   this.scan_data.forEach((element, index) => {
+    //     // console.log(element,1)
+    //     // console.log(this.key_tableData,2)
+    //     // console.log(this.deelUniqueProductKey(element),3)
+    //     // console.log(this.detail.order_no)
+    //     if (this.detail.order_no.indexOf(element.order_no)!=-1&&Object.keys(this.key_tableData).indexOf(this.deelUniqueProductKey(element)) !== -1 && (this.key_tableData[this.deelUniqueProductKey(element)].this_delivery_qty - element.box_num) >= 0) {
+    //       let table_data_detail = JSON.parse(JSON.stringify(this.key_tableData[this.deelUniqueProductKey(element)]))
+    //       table_data_detail.box_orders = element.box_id
+    //       table_data_detail.box_orders_show = element.box_no
+    //       table_data_detail.box_detail = element.box_detail
+    //       table_data_detail.this_delivery_qty = element.box_num
+    //       table_data_detail.out_qty = element.box_num
+    //       this.key_tableData[this.deelUniqueProductKey(element)].this_delivery_qty -= element.box_num*1
+    //       this.key_tableData[this.deelUniqueProductKey(element)].out_qty += element.box_num*1;
+    //       this.scan_num += element.box_num*1
+    //       // is_scan_key[this.deelUniqueProductKey(element)]=1;
+    //       // table_data_detail.this_delivery_qty =  this.key_tableData[this.deelUniqueProductKey(element)].this_delivery_qty;
+    //       // table_data_detail.n_id = element.id;
+    //       // table_data_detail.id = null;
+    //       this.new_table_data.push(table_data_detail)
+    //     } else {
+    //       this.error_data.push(element);
+    //       this.error_num += element.box_num*1;
+    //     }
+    //   })
+    //   // this.tableData.forEach((element, index) => {
+    //   //   // if (element.this_delivery_qty > 0 && element.out_qty === 0) {
+    //   //   //   new_table_data.push(element)
+    //   //   // }
+    //   // })
+    //   // this.tableData = new_table_data;
+    // },
+    // handleSureClick () {
+    //   this.is_modal = true
+    // },
+    handelGoSure () {
+      if(this.tableData.length==0&&!this.record_state){
+        return
+      }
+      this.tableData.forEach((element, index) => {
+        element.item_num = (index + 1)
+      })
+      const date = new Date()
+      // eslint-disable-next-line camelcase
+      const now_time = date.toISOString()
+      let data = {}
+      if(this.record_state){
+        data = {
+          // auditInfo: null,
+          bizId: this.record_send_goods.dynamic_form_value_id,
+          id: this.record_send_goods.dynamic_form_value_id,
+          bizTypeEk: 'LOWCODE',
+          // businessType: null,
+          // createdBy: "473698106823094272",
+          createdDate: now_time,
+          dynamicFormId: '474057887278641152',
+          // extDataId: null,
+          // id: "491138208411951104",
+          // lastModifiedBy: "473698106823094272",
+          // lastModifiedDate: now_time,
+          // requestId: null,
+          showModelId: '474061442555260928',
+          version: 1,
+          // versionNo: null,
+          data: {
+            send_goods_out: {},
+            send_goods_out_product: []
+          }
+        }
+        data.data.send_goods_out = this.record_send_goods;
+      }else {
+        data = {
+          // auditInfo: null,
+          bizId: -1,
+          bizTypeEk: 'LOWCODE',
+          // businessType: null,
+          // createdBy: "473698106823094272",
+          createdDate: now_time,
+          dynamicFormId: '474057887278641152',
+          // extDataId: null,
+          // id: "491138208411951104",
+          // lastModifiedBy: "473698106823094272",
+          // lastModifiedDate: now_time,
+          // requestId: null,
+          showModelId: '474061442555260928',
+          version: 1,
+          // versionNo: null,
+          data: {
+            send_goods_out: {},
+            send_goods_out_product: []
+          }
+        }
+        data.data.send_goods_out = {
+          send_goods_out_no: null,
+          in_out_type: 'CK007',
+          box_title: 'WH05001',
+          out_time: now_time,
+          out_depart: '481280388644478976',
+          // out_employee_id: this.employee_code,
+          expect_date_delivery: this.detail.expect_date_delivery,
+          expect_date_arrival: this.detail.expect_date_arrival,
+          delivery_method_dk: this.detail.delivery_method_dk,
+          express_company: null,
+          express_no: null,
+          area_selection: this.detail.area_selection,
+          detailed_address: this.detail.detailed_address,
+          contact: this.detail.contact,
+          contact_way: this.detail.contact_way,
+          status: 'NOT_APPROVED',
+          oa_id: null,
+          oa_time: null,
+          remark: null,
+          order_no: this.detail.order_no,
+          site: null,
+          in_out_type_show: '成品发货出库',
+          box_title_show: '成品仓',
+          out_depart_show: '仓储部',
+          out_employee_id_show: this.name,
+          bus_no: this.detail.no,
+          bus_id: this.$route.query.id,
+          delivery_method_dk_show: this.detail.delivery_method_dk_show,
+          area_selection_show: this.detail.area_selection_show,
+          // attachment: null,
+          // dynamic_form_value_id: this.detail.dynamic_form_value_id,
+          // expect_date_arrival_lt: this.detail.expect_date_arrival_lt,
+          // expect_date_delivery_lt: this.detail.expect_date_delivery_lt,
+          // id: "491138208583917568"
+          // main_table_id: null,
+          // oa_id_show: null,
+          // oa_time_lt: null,
+          // out_time_lt: now_time,
+          // request_id: null,
+          // send_goods_out_no: "FCK2023091700099",
+          // site_show: this.detail.site_show,
+          // status_show: '待审核'
+        }
+      }
+      this.tableData.forEach((element,index) =>{
+        let box_detail = {
+          item_num: (index + 1),
+          product_code: element.product_code,
+          product_title: element.product_title,
+          product_size: element.product_size,
+          product_unit: element.product_unit,
+          product_unit_title: element.product_unit_title,
+          process_code: element.process_code,
+          color_code: element.color_code,
+          process_code_two: element.process_code_two,
+          color_code_two: element.color_code_two,
+          process_title: element.process_title,
+          color: element.color,
+          process_title_two: element.process_title_two,
+          color_two: element.color_two,
+          bus_no: this.detail.no,
+          bus_id: this.$route.query.id,
+          bus_item_id: element.id,
+          bus_item_no: element.item_no,
+          order_no: element.order_no,
+          out_qty: element.out_qty,
+          this_delivery_qty: element.out_qty,
+          order_item_id: element.order_item_id,
+          unit_price: element.unit_price,
+          site: null,
+          customer_name: element.customer_name,
+          customer_no: element.customer_no,
+          dealer_name: element.dealer_name,
+          dealer_no: element.dealer_no,
+          box_orders: element.box_orders,
+          box_orders_show: element.box_no,
+          // site_show: element.box_detail.site_show
+          dynamic_form_value_id: element.dynamic_form_value_id,
+          id: element.sure_id,
+          // lineId: "29E776DE",
+          // mainKey: "29E776DE",
+          // main_table_id: "491138208583917568",
+          // request_id: null,
+        }
+        data.data.send_goods_out_product.push(box_detail)
+      })
+      if(this.state){
+        this.state = false
+        if(this.tableData.length==0&&this.record_state){
+          this.axios.post('/api/testdwydel',{url:`${localStorage.getItem('dwy_url')}jbl/api/module-data/send_goods_out/send_goods_out/${this.record_send_goods.dynamic_form_value_id}`}).then(res=>{
+            this.axios.post('/api/testdwy', {
+                  url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/send_goods_out_dtl/page`,
+                  post: {
+                    debugFlag: true,
+                    developmentSystemId: null,
+                    direction: "DESC",
+                    dynamicFormCode: "send_goods_out",
+                    dynamicFormTable: null,
+                    fromClientType: "pc",
+                    ignoreField: true,
+                    number: 0,
+                    property: "id",
+                    rules: [{
+                      field: "bus_id",
+                      option: "LIKE_ANYWHERE",
+                      values: [this.$route.query.id]
+                    }],
+                    size: 999,
+                    sorts: [],
+                    specialConditions: [],
+                    workflowSearchBean: {}
+                  }
+                }
+            ).then(req => {
+              this.record_state = req.data.content.length==0?false:true;
+              if(this.record_state){
+                this.record_send_goods = req.data.content[0].send_goods_out
+              }
+              this.scan_num = 0;
+              this.tableData = JSON.parse(JSON.stringify(req.data.content))
+              this.tableData.forEach(v => {
+                this.scan_num += v.out_qty * 1;
+                v.box_no = v.box_orders_show;
+                v.sure_id = v.id;
+              })
+            })
+          })
+        }else {
+          if(this.record_state){
+            this.axios.post('/api/testdwyget',{url:`${localStorage.getItem('dwy_url')}jbl/api/module-data/send_goods_out/send_goods_out/474061443708694528/${this.record_send_goods.dynamic_form_value_id}`}).then(res=>{
+              data.version = res.data.version;
+              this.axios.post('/api/testdwyput', {url:`${localStorage.getItem('dwy_url')}jbl/api/module-data/send_goods_out/send_goods_out`,post:data}).then(res => {
+                if (res.code === 200) {
+                  // this.$Message.success(res.msg)
+                  this.axios.post('/api/testdwy', {
+                        url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/send_goods_out_dtl/page`,
+                        post: {
+                          debugFlag: true,
+                          developmentSystemId: null,
+                          direction: "DESC",
+                          dynamicFormCode: "send_goods_out",
+                          dynamicFormTable: null,
+                          fromClientType: "pc",
+                          ignoreField: true,
+                          number: 0,
+                          property: "id",
+                          rules: [{
+                            field: "bus_id",
+                            option: "LIKE_ANYWHERE",
+                            values: [this.$route.query.id]
+                          }],
+                          size: 999,
+                          sorts: [],
+                          specialConditions: [],
+                          workflowSearchBean: {}
+                        }
+                      }
+                  ).then(req => {
+                    this.record_state = req.data.content.length==0?false:true;
+                    if(this.record_state){
+                      this.record_send_goods = req.data.content[0].send_goods_out
+                    }
+                    this.scan_num = 0;
+                    this.tableData = JSON.parse(JSON.stringify(req.data.content))
+                    this.tableData.forEach(v => {
+                      this.scan_num += v.out_qty * 1;
+                      v.box_no = v.box_orders_show;
+                      v.sure_id = v.id;
+                    })
+                  })
+                }
+                setTimeout(()=>{
+                  this.state = true
+                },5000)
+              })
+            })
+          }else {
+            this.axios.post('/api/testdwy', {url:`${localStorage.getItem('dwy_url')}jbl/api/module-data/send_goods_out/send_goods_out`,post:data}).then(res => {
+              if (res.code === 200) {
+                // this.$Message.success(res.msg)
+                this.axios.post('/api/testdwy', {
+                      url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/send_goods_out_dtl/page`,
+                      post: {
+                        debugFlag: true,
+                        developmentSystemId: null,
+                        direction: "DESC",
+                        dynamicFormCode: "send_goods_out",
+                        dynamicFormTable: null,
+                        fromClientType: "pc",
+                        ignoreField: true,
+                        number: 0,
+                        property: "id",
+                        rules: [{
+                          field: "bus_id",
+                          option: "LIKE_ANYWHERE",
+                          values: [this.$route.query.id]
+                        }],
+                        size: 999,
+                        sorts: [],
+                        specialConditions: [],
+                        workflowSearchBean: {}
+                      }
+                    }
+                ).then(req => {
+                  this.record_state = req.data.content.length==0?false:true;
+                  if(this.record_state){
+                    this.record_send_goods = req.data.content[0].send_goods_out
+                  }
+                  this.scan_num = 0;
+                  this.tableData = JSON.parse(JSON.stringify(req.data.content))
+                  this.tableData.forEach(v => {
+                    this.scan_num += v.out_qty * 1;
+                    v.box_no = v.box_orders_show;
+                    v.sure_id = v.id;
+                  })
+                })
+              }
+              setTimeout(()=>{
+                this.state = true
+              },5000)
+            })
+          }
+        }
+      }
+     },
+    handleReturn() {
+      if (this.isFullScreen) {
+        this.handleFullScreenClick()
+      }
+      this.$router.go(-1);
+    },
+    handleChoose(item, index) {
+      item.is_choose = !item.is_choose
+      this.tableData.splice(index, 1, item)
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+.return_btn {
+  background-image: url('../../assets/home/return.png');
+  background-size: 100% 100%;
+}
+
+.confirm_btn {
+  background-image: url('../../assets/home/confirm.png');
+  background-size: 100% 100%;
+}
+
+.return_btn,
+.confirm_btn {
+  width: 10.97rem;
+  height: 2.93rem;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  color: #fff;
+  font-size: 1.06rem;
+  font-weight: 500;
+  letter-spacing: 1px;
+  cursor: pointer;
+}
+
+.secd_flex_s>span:nth-child(1) {
+  font-size: 0.94rem;
+  color: #ABDFFF;
+}
+
+.secd_flex_s>span:nth-child(2) {
+  font-size: 0.94rem;
+  color: #03FCD3;
+}
+
+.secd_g {
+  font-size: 1rem;
+  color: #ABDFFF
+}
+
+.secd_title_d {
+  font-size: 1.13rem;
+  color: #FFFFFF;
+  text-shadow: 0px 0px 0px rgba(255, 255, 255, 0.5);
+  //white-space: nowrap;
+  //overflow: hidden;
+  //text-overflow: ellipsis;
+}
+
+.secd_flex_w {
+  display: flex;
+  justify-content: space-between;
+  padding-right: 1.6rem;
+  box-sizing: border-box;
+}
+
+.secd_flex {
+  display: flex;
+  flex-direction: column;
+  gap: .375rem;
+
+  .secd_title {
+    font-size: 0.88rem;
+    color: #ABDFFF;
+    opacity: 0.5;
+  }
+}
+
+
+.check_box_c {
+  width: 1.19rem;
+  height: 100%;
+  background-image: url('../../assets/home/check.png');
+  background-size: 100% 100%;
+
+}
+
+.check_box_c_active {
+  width: 1.3rem;
+  height: 100%;
+  background-image: url('../../assets/home/checked.png');
+  background-size: 100% 100%;
+}
+
+.send_work {
+  //height: 10.69rem;
+  height: auto;
+  background-image: url('../../assets/home/packUpback.png');
+  background-size: 100% 100%;
+  margin-top: 1.38rem;
+  padding: 0.44rem 0.4rem 1.34rem 1.22rem;
+  box-sizing: border-box;
+
+  .check_box {
+    height: 1.19rem;
+    display: flex;
+    justify-content: right;
+  }
+}
+
+.com_top {
+  margin-top: 1.72rem !important;
+}
+
+.completion_con {
+  height: 5.19rem;
+  background-image: url('../../assets/home/completion.png');
+  background-size: 100% 100%;
+  margin-top: 0.72rem;
+  padding: 1rem 1.28rem;
+  box-sizing: border-box;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+
+.home_con_s {
+  position: relative;
+height: 100%;
+  .pack_up {
+    position: absolute;
+    top: 0;
+    left: 50%;
+    transform: translateX(-50%);
+    width: 5.56rem;
+    background-image: url('../../assets/home/packUp.png');
+    background-size: 100% 100%;
+    height: 1.97rem;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+
+    img {
+      width: 2.59rem;
+      height: 0.88rem;
+    }
+
+
+
+  }
+
+  .pack_up_d {
+    top: -1.1rem;
+  }
+
+  .pack_up_con {
+    height: 100%;
+    overflow: auto;
+    background-image: url('../../assets/home/packUpback.png');
+    background-size: 100% 100%;
+    padding: 1.78rem 0 1.78rem 2.03rem;
+    box-sizing: border-box;
+    .pack_up_grid {
+      display: flex;
+      justify-content: space-around;
+      &>div{
+        display: flex;
+        justify-content: space-around;
+        &>div {
+          display: flex;
+          flex-direction: column;
+          row-gap: .625rem;
+
+          &>div {
+            display: flex;
+            gap: .125rem;
+
+            span:nth-child(1) {
+              font-size: 1.63rem;
+              font-family: DIN-BoldItalic, DIN;
+              font-weight: 600;
+              color: #04FFD5;
+              line-height: 1.31rem;
+              transform: skewX(-10deg);
+              text-shadow: 0px 0px 0 rgba(4, 255, 213, 0.23);
+
+            }
+
+            span:nth-child(2) {
+              font-size: 1rem;
+              font-family: PingFangSC-Regular, PingFang SC;
+              font-weight: 400;
+              color: #ABDFFF;
+            }
+          }
+
+          &>p:nth-child(1) {
+            font-size: 1rem;
+            font-family: PingFangSC-Regular, PingFang SC;
+            font-weight: 400;
+            color: #ABDFFF;
+            margin-bottom: 0px;
+          }
+        }
+      }
+    }
+  }
+}
+
+.home_con_body {
+  width: 100%;
+  height: 100%;
+  padding: 1rem;
+  box-sizing: border-box;
+}
+
+.home_header {
+  height: 3.425rem;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  color: #fff;
+  font-size: 2rem;
+  letter-spacing: 1rem;
+  font-weight: 600;
+}
+
+.home_header_line {
+  width: 100%;
+  height: .0625rem;
+  background-color: #fff;
+  opacity: 0.2;
+}
+
+.header {
+  width: 94%;
+  height: 7rem;
+  // overflow: hidden;
+  // transition: all 0.4s;
+  position: relative;
+  top: 0.5rem;
+  left: 3%;
+  box-shadow: 0.16rem 0.1rem 0.1rem 0.1rem #9d9b9b;
+  border-radius: 1rem;
+  padding: 0.4rem 0.7rem 0 1rem;
+  background: #fff;
+}
+
+.header_btn {
+  border-radius: 1rem;
+  padding: 0.1rem;
+  width: 5rem;
+  display: flex;
+  justify-content: space-around;
+  align-items: center;
+}
+
+.header_top {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
+.ot {
+  position: relative;
+  top: -1.3rem;
+}
+
+.header_middle1 {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+
+  .ft {
+    font-size: 1.5rem;
+    width: 5rem;
+    text-align: center;
+  }
+}
+
+.header_middle {
+  position: relative;
+  top: -0.3rem;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
+::v-deep .btn-group>.btn,
+.btn-group-vertical>.btn {
+  background: #ffffff;
+  color: #2c3e50;
+  outline: none;
+  border: none;
+  margin: 0;
+  z-index: 3;
+}
+.bdy {
+  width: 94%;
+  height: calc(100% - 18.7rem);
+  overflow: auto;
+  position: relative;
+  top: 1rem;
+  left: 3%;
+}
+
+::v-deep td {
+  text-align: center;
+  vertical-align: middle;
+}
+
+table {
+  border-collapse: collapse;
+  /* 合并边框 */
+  width: 100%;
+  /* 表格宽度 */
+  background: transparent;
+  table-layout: fixed;
+}
+
+th {
+  font-size: 1rem;
+}
+
+td {
+  font-size: 1rem;
+  word-break: break-all;
+
+}
+
+td,
+th {
+  vertical-align: middle;
+  text-align: center;
+  border: 0.1rem solid #dddddd;
+  /* 单元格边框样式 */
+  padding: 0.2rem;
+  /* 单元格内边距 */
+}
+.true_table{
+  th,td{
+    color: #ABDFFF;
+  }
+}
+.error_table{
+  th,td{
+    color: red;
+  }
+}
+.choose_item {
+  background: #c8c8c8;
+}
+::v-deep.ivu-modal-body{
+  background: #001e57;
+  border-radius: 1rem;
+  color:#FFFFFF;
+}
+::v-deep.ivu-modal-content{
+  background: transparent;
+}
+::v-deep.ivu-form-item-label{
+  color: #FFFFFF;
+}
+.total_img {
+  display: flex;
+  flex-wrap: wrap;
+  img {
+    max-width: 40px;
+    max-height: 40px;
+  }
+  .img_item {
+    position: relative;
+    .img_title {
+      text-align: center;
+    }
+  }
+}
+.upd_file {
+  width: 40px;
+  height: 40px;
+  cursor: pointer;
+  background-color: transparent;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  margin-left: 10px;
+}
+.img_content {
+  position: relative;
+  margin-right:20px;
+}
+.delete-img {
+  position: absolute;
+  right: -10px;
+  top: 0px;
+  color: red;
+}
+.ico{
+  color:#FFFFFF;
+}
+::v-deep.ivu-icon{
+  color: #FFFFFF;
+}
+.time {
+  position: absolute;
+  display: flex;
+  top: .5rem;
+  left: 1rem;
+  align-items: center;
+  width: 450px;
+  span {
+    color: white;
+    font-size: 25px;
+  }
+  .time_pic {
+    width: 40px;
+    margin-right: 24px;
+  }
+}
+</style>

+ 296 - 0
src/views/BigScreen/inOut.vue

@@ -0,0 +1,296 @@
+<template>
+  <div style="height: 100vh;">
+    <div style="position: absolute;left: 15px;top: 10px;color: #FFFFFF;letter-spacing: 2px;font-size: 1.5rem">{{$route.query.title}}</div>
+    <div style="text-align: center;font-size: 28px;color: #FFFFFF;padding: 5px 0 0 0">出入库屏</div>
+    <div style="position: absolute;right: 15px;top: 10px"><Button
+        @click="handleFullScreenClick"
+        id="full_screen_btn"
+        type="primary"
+        style="margin-right: 1rem"
+    >
+      {{ isFullScreen ? "收  缩" : "全  屏" }}
+    </Button><Button ghost @click="handleReturn">返回</Button></div>
+    <div style="display: flex;justify-content: space-between;border: 1px solid #FFFFFF;color: #FFFFFF;padding: 15px;margin:5px 10px;font-size: 20px;font-weight: bold;text-align: center;border-radius: 20px">
+      <div style="width: 8%">单号</div>
+      <div style="width: 20%">产品名称</div>
+      <div style="width: 10%">花色</div>
+      <div style="width: 10%">工艺</div>
+      <div style="width: 10%">花色2</div>
+      <div style="width: 10%">工艺2</div>
+      <div style="width: 6%">数量</div>
+      <div style="width: 10%">类型</div>
+      <div style="width: 16%">时间</div>
+    </div>
+    <div style="height: calc(100% - 60px);" id="dy">
+      <div v-for="(item,index) in list" :key="index" style="margin-top:20px;display: flex;justify-content: space-between;border: 1px solid #FFFFFF;color: #FFFFFF;padding: 15px;margin:20px 10px 0 10px;font-size: 20px;font-weight: bold;text-align: center;border-radius: 20px" >
+        <div style="width: 8%">{{item.order_no}}</div>
+        <div style="width: 20%">{{item.product_title}}</div>
+        <div style="width: 10%">{{item.color}}</div>
+        <div style="width: 10%">{{item.process_title}}</div>
+        <div style="width: 10%">{{item.color_two}}</div>
+        <div style="width: 10%">{{item.process_title_two}}</div>
+        <div style="width: 6%">{{item.box_num}}</div>
+        <div style="width: 10%" :class="item.status_title.indexOf('出库')!=-1?'isred':'isg'">{{item.status_title}}</div>
+        <div style="width: 16%">{{item.time}}</div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import $ from 'jquery'
+document.title = '出入库'
+export default {
+  data () {
+    return {
+      list: [],
+      time: null,
+      post:[],
+      isFullScreen: false,
+    }
+  },
+  created () {
+    let _this = this;
+    $.post({
+      url:'http://clouddevice.qingyaokeji.com/api/setFhMessage',
+      data:{device_id:_this.$route.query.code}
+    })
+  },
+  mounted () {
+    this.time = setInterval(()=>{
+      this.initData();
+    },2000)
+    // this.initDataBox({
+    //   url: 'http://121.36.142.167:7774/jbl/api/module-data/box_orders/box_orders/diy/defective_order_no_list',
+    //   post: { "defective_order_no_list":['BZ00327']}
+    // })
+  },
+  watch: {
+    list: {
+      handler (newVal, oldVal) {
+        if (newVal.length > 100) {
+          this.list.splice(100, newVal.length - 100)
+        }
+      },
+      immediate: true,
+      deep: true
+    }
+  },
+  destroyed () {
+    clearInterval(this.time)
+  },
+  methods: {
+    handleFullScreenClick () {
+      this.isFullScreen = !this.isFullScreen;
+      if (this.isFullScreen) {
+        this.enterFullScreen();
+      } else {
+        this.exitFullScreen();
+      }
+    },
+    enterFullScreen () {
+      let el = document.documentElement;
+      let rfs =
+          el.requestFullScreen ||
+          el.webkitRequestFullScreen ||
+          el.mozRequestFullScreen ||
+          el.msRequestFullscreen;
+      if (rfs) {
+        rfs.call(el);
+      } else if (typeof window.ActiveXObject !== "undefined") {
+        // for IE,这里其实就是模拟了按下键盘的F11,使浏览器全屏
+        let wscript = new ActiveXObject("WScript.Shell");
+        if (wscript != null) {
+          wscript.SendKeys("{F11}");
+        }
+      }
+    },
+    exitFullScreen () {
+      let el = document;
+      let cfs =
+          el.cancelFullScreen ||
+          el.mozCancelFullScreen ||
+          el.msExitFullscreen ||
+          el.webkitExitFullscreen ||
+          el.exitFullscreen;
+      if (cfs) {
+        // typeof cfs != "undefined" && cfs
+        cfs.call(el);
+      } else if (typeof window.ActiveXObject !== "undefined") {
+        // for IE,这里和fullScreen相同,模拟按下F11键退出全屏
+        let wscript = new ActiveXObject("WScript.Shell");
+        if (wscript != null) {
+          wscript.SendKeys("{F11}");
+        }
+      }
+    },
+    handleReturn(){
+      if (this.isFullScreen) {
+        this.handleFullScreenClick()
+      }
+     this.$router.go(-1)
+    },
+    async processArray(array) {
+      // let post_in = {};
+      // let post_out = {};
+      let post_in_data = [];
+      let post_out_data = [];
+      let in_data = {
+        bizTypeEk:"LOWCODE",
+        bizId:-1,
+        data:{
+          production_receipt:{
+            production_receipt_no:null,
+            in_out_type:"RK007",
+            box_title:"WH05001",
+            in_time:new Date().toISOString(),
+            remark:"",
+            status:"NOT_APPROVED"
+          },
+          production_receipt_dtl:[],
+        },
+        dynamicFormId:"473758926009479168",
+        showModelId:"473761325902147584"
+      }
+      let out_data = {
+        bizTypeEk:"LOWCODE",
+        bizId:-1,
+        data:{
+          picking_out:{
+            picking_out_no:null,
+            in_out_type:"CK010",
+            box_title:"WH05001",
+            out_time:new Date().toISOString(),
+            remark:"",
+            status:"NOT_APPROVED"
+          },
+          picking_out_product:[],
+        },
+        dynamicFormId:"473763313217908736",
+        showModelId:"473771977253269504"
+      }
+      this.post = []
+      for(let i = 0;i<array.length;i++){
+        let v = array[i];
+        let text1 = [v.epc];
+        const dataBox = {
+          url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/box_orders/box_orders/diy/defective_order_no_list`,
+          post: { "defective_order_no_list":text1}
+        }
+        // this.$Message.warning(dataBox.post["defective_order_no_list"].toString())
+        await this.axios.post('/api/testdwy', { ...dataBox }).then(res => {
+          if (res.code == 200) {
+            res.data.data.filter(c=>!c.box_orders.delivery_status).forEach((element) => {
+              if(v.direction=='1'){
+                post_in_data.push({
+                item_num:element.item_num,
+                product_code:element.brand_code,
+                product_title:element.product_title,
+                product_size:element.product_size,
+                color:element.color,
+                color_two:element.color_two,
+                product_unit_title:element.product_unit_title,
+                product_unit:element.product_unit,
+                color_code:element.color_code,
+                color_code_two:element.color_code_two,
+                site:null,
+                in_num:element.box_num
+              })
+                in_data.data.production_receipt_dtl = [...in_data.data.production_receipt_dtl,...post_in_data]
+                // post_in = {
+                //   url: 'http://121.36.142.167:7774/jbl/api/module-data/production_receipt/production_receipt',
+                //   post: in_data
+                // }
+              } else {
+                post_out_data.push({
+                  item_num:element.item_num,
+                  product_code:element.brand_code,
+                  product_title:element.product_title,
+                  product_size:element.product_size,
+                  color:element.color,
+                  color_two:element.color_two,
+                  product_unit_title:element.product_unit_title,
+                  product_unit:element.product_unit,
+                  color_code:element.color_code,
+                  color_code_two:element.color_code_two,
+                  site:null,
+                  in_num:element.box_num
+                })
+                out_data.data.picking_out_product = [...out_data.data.picking_out_product,...post_out_data]
+                // post_out = {
+                //   url: 'http://121.36.142.167:7774/jbl/api/module-data/picking_out/picking_out',
+                //   post: out_data
+                // }
+              }
+              this.list.unshift({
+                order_no:element.box_orders.defective_order_no,
+                product_title:element.product_title,
+                color:element.color,
+                color_two:element.color_two,
+                process_title:element.process_title,
+                process_title_two:element.process_title_two,
+                box_num:element.box_num,
+                direction:v.direction,
+                status_title:v.direction==1?'已入库':'已出库',
+                time:this.func.replaceDate(Date.parse(new Date()))
+              })
+            })
+          }
+        })
+      }
+      // await (
+      //   this.axios.post('/api/testdwy', {...post_in}).then(res=>{
+      //     this.list.forEach(v=>{
+      //       v.status_title=v.direction==1?'已入库':'已出库'
+      //     })
+      //   }),
+      //   this.axios.post('/api/testdwy', {...post_out}).then(res=>{
+      //     this.list.forEach(v=>{
+      //       v.status_title=v.direction==1?'已入库':'已出库'
+      //     })
+      //   })
+      // )
+    },
+    initData(){
+      let _this = this
+      $.post({
+        url:'http://clouddevice.qingyaokeji.com/api/getOrderNumber',
+        data:{'device_id':_this.$route.query.code},
+        success:(res)=>{
+          _this.processArray(res.data)
+        }
+      })
+      // this.axios.post('/api/testdwy', {url: 'http://clouddevice.qingyaokeji.com/api/getOrderNumber',post:{device_id:this.$route.query.code}}).then(res => {
+      //   if(res.data.data.length!=0){
+      //     // this.list.unshift(res.data.data)
+      //     // var element = document.getElementById("dy");
+      //     // element.classList.add("dong");
+      //     this.processArray(res.data.data)
+      //   }
+      // })
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+@keyframes example {
+  from {left: 600px}
+  to {left: 0px}
+}
+.isred{
+  color: red;
+}
+.isg{
+  color: #00ff33;
+}
+#dy{
+  overflow: auto;
+}
+#dy::-webkit-scrollbar{
+  width: 1px;
+}
+.dong:first-child{
+  position: relative;
+  animation-name: example;
+  animation-duration: .9s;
+}
+</style>

+ 226 - 0
src/views/BigScreen/index.vue

@@ -0,0 +1,226 @@
+<template>
+  <div style="height: 100vh">
+    <div class="bdy" :style="type==2?{height:'16rem'}:{}">
+
+      <div style="font-size: 1.3rem; font-weight: bold ; color: #fff;margin-bottom:1rem" v-show="type==1">发货单号</div>
+      <div class="secd_input_r" v-show="type==1">
+        <b-form-select id="input-3" :options="options" v-model="selected" class="inp select_list" style="height: 3rem   " filterable
+                       required placeholder="请选择站点"></b-form-select>
+      </div>
+      <div style="font-size: 1.3rem; font-weight: bold ; color: #fff;margin:1rem 0">通道门</div>
+      <div class="secd_input_r">
+        <b-form-select id="input-4" :options="options1" v-model="selected1" class="inp select_list" style="height: 3rem   " filterable
+                       required></b-form-select>
+      </div>
+      <div class="bdy_btn">
+<!--        <Button-->
+<!--            type="warning"-->
+<!--            ghost-->
+<!--            class="header_btn"-->
+<!--            style="margin-right: 3rem; height: 2.6rem"-->
+<!--            @click="handleReturn"-->
+<!--        >-->
+<!--          返回</Button-->
+<!--        >-->
+        <Button
+
+            class="header_btn"
+            ghost
+            style="margin-left: 3rem; height: 2.6rem"
+            @click="handelGoSure"
+        >
+          确认</Button
+        >
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  data () {
+    return {
+      is_show: true,
+      is_use: false,
+      selected: '',
+      selected1: '',
+      options: [],
+      options1: [],
+      type:1
+    }
+  },
+  created () {
+    this.type = this.$route.query.type;
+    let info = JSON.parse(JSON.stringify(this.$route.query));
+    if(!info.Authorization||!info.site){
+      return this.$Message.warning({content:'请联系开发者,缺少站点和人员信息!',duration:0,closable:true})
+    }
+    let site = {site:info.site};
+    let token = info.Authorization;
+    let url = info.systemType=='prod'?'http://122.112.250.253:7774/':info.systemType=='test'?'http://121.36.142.167:7774/':''
+    localStorage.setItem('site',JSON.stringify(site))
+    localStorage.setItem('token',token)
+    localStorage.setItem('dwy_url',url);
+    const data = {
+      url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/delivery_note_list/page`,
+      post:{"direction":"DESC","property":"id","fromClientType":"pc","number":0,"sorts":[],"rules":[],"size":999,"specialConditions":[],"dynamicFormCode":"delivery_note","developmentSystemId":null,"debugFlag":false}
+    }
+    const data1 = {
+      url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/device_list/page`,
+      post:{debugFlag: true, developmentSystemId: null, direction: "DESC",dynamicFormCode: "device",fromClientType: "pc",number: 0,property: "id",rules: [{field: "site", option: "IN", values: [JSON.parse(localStorage.getItem('site')).site]}],size: 999,sorts: [{property: "device_code", direction: "ASC"}],specialConditions: []}
+    }
+    this.axios.post('/api/testdwy', { ...data }).then(res => {
+      this.options = res.data.content.filter(v=>v.status_dk==="NOT_APPROVED")
+      this.options.forEach(v => {
+        v.value = v.dynamic_form_value_id
+        v.text = v.no
+      })
+    })
+    this.axios.post('/api/testdwy', { ...data1 }).then(res => {
+      let s_id = res.data.content.filter(c=>c.status==1).find(v=>v.title.indexOf('通道门')!=-1)?res.data.content.filter(c=>c.status==1).find(v=>v.title.indexOf('通道门')!=-1).dynamic_form_value_id:false;
+      if(s_id){
+        const data2 = {
+          url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/device/device/472663265332506624/${s_id}`,
+         }
+         this.axios.post('/api/testdwyget',data2).then(res=>{
+           this.options1 = res.data.data.device_machine;
+           this.options1.forEach(v => {
+             v.value = v.machine_code
+             v.text = v.machine_title
+           })
+         })
+      }
+    })
+  },
+  methods: {
+    handelGoSure () {
+      if(this.type==1){
+        if (!this.selected||!this.selected1) {
+          return this.$Message.warning('请先选择!')
+        }
+        this.$router.push({ path: '/cms/bigDispatch', query: { id: this.selected,code:this.selected1,title:this.options1.find(v=>v.value==this.selected1).text } })
+      }else {
+        if (!this.selected1) {
+          return this.$Message.warning('请先选择!')
+        }
+        this.$router.push({ path: '/cms/inOut', query: { code:this.selected1,title:this.options1.find(v=>v.value==this.selected1).text } })
+      }
+    },
+    handleReturn () {
+      this.$router.push('/cms/choose')
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+.header {
+  width: 94%;
+  height: 7rem;
+  // overflow: hidden;
+  // transition: all 0.4s;
+  position: relative;
+  top: 0.5rem;
+  left: 3%;
+  box-shadow: 0.16rem 0.1rem 0.1rem 0.1rem #9d9b9b;
+  border-radius: 1rem;
+  padding: 0.4rem 0.7rem 0 1rem;
+  background: #fff;
+}
+.header_btn {
+  border-radius: .5rem;
+  padding: 0.1rem;
+  width: 5rem;
+  display: flex;
+  justify-content: space-around;
+  align-items: center;
+}
+.header_top {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+.ot {
+  position: relative;
+  top: -1.3rem;
+}
+.header_middle1 {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  .ft {
+    font-size: 1.5rem;
+    width: 5rem;
+    text-align: center;
+  }
+}
+.header_middle {
+  position: relative;
+  top: -0.3rem;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+::v-deep .btn-group > .btn,
+.btn-group-vertical > .btn {
+  background: #ffffff;
+  color: #2c3e50;
+  outline: none;
+  border: none;
+  margin: 0;
+  z-index: 3;
+}
+.header_footer {
+  position: relative;
+  top: -1.7rem;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  div {
+    font-size: 0.5rem;
+    color: rgb(244, 136, 42);
+  }
+}
+.bdy {
+  height: 21.09rem;
+  background-image: url('../../assets/home/packUpback.png');
+  background-size: 100% 100%;
+  padding: 1.78rem 2.03rem;
+  box-sizing: border-box;
+  position: absolute;
+  width: 94%;
+  transform: translate(-50%,-50%);
+  top: 40%;
+  border-radius: 1rem;
+  left: 50%;
+}
+.bdy_btn {
+  margin-top: 2rem;
+
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+.select_list {
+  border-radius: 0.38rem;
+  border: 0.03rem solid #76CFFF;
+  background-color: #00000000;
+  outline: none;
+  padding: 0 .625rem;
+  box-sizing: border-box;
+  color: #fff;
+  width: 100%;
+  height: 100%;
+  font-weight: 500;
+  letter-spacing: 0.1rem;
+}
+::v-deep.inp {
+  background: #032a64 !important;
+  // opacity: 0.4;
+  //border: none;
+  color: #fff;
+}
+
+::-webkit-input-placeholder {
+  color: #ffffff84;
+  /* 设置占位符文字的颜色 */
+}
+</style>

+ 191 - 0
src/views/BigScreen/login.vue

@@ -0,0 +1,191 @@
+<template>
+  <div class="view">
+    <div class="header">
+      <img src="../../assets/images/home_title.png">
+    </div>
+    <b-form class="form">
+      <b-form-group label="账号" label-for="input-1" style="margin-bottom: .5rem" label-cols="2">
+        <b-form-input id="input-1" v-model="form.account" required class="inp" style="
+            height: 3rem;
+            font-size: 1.1rem;
+            font-weight: 500;
+            letter-spacing: 0.1rem;
+            color: #fff;
+          " placeholder="请输入账号"></b-form-input>
+      </b-form-group>
+
+      <b-form-group label="密码" label-for="input-2" style="margin-bottom: .5rem" label-cols="2">
+        <b-form-input id="input-2" v-model="form.password" type="password" autocomplete="off" class="inp" style="
+            height: 3rem;
+            font-size: 1.1rem;
+            font-weight: 500;
+            letter-spacing: 0.1rem;
+
+          " required placeholder="请输入密码"></b-form-input>
+      </b-form-group>
+      <b-form-group label="所属站点" label-for="input-3" style="margin: .5rem 0" label-cols="4">
+        <b-form-select id="input-3" v-model="form.site" :options="siteList" class="inp" style="height: 3rem;
+              width:100%;
+             padding: 0 0 0 0.5rem;
+            font-size: 1.1rem;
+            font-weight: 500;
+            letter-spacing: 0.1rem;
+           " required placeholder="请选择站点" @change="handleChangeSite"></b-form-select>
+      </b-form-group>
+      <div @click="onSubmit" style="
+          width: 100%;
+
+          margin-top: 2rem;
+        " class="btn_login">
+        <span
+            style="color: #ffffff;font-family: PingFangSC-Medium, sans-serif;text-shadow:1px 1px 1px #4FC9F2;letter-spacing: 2px;font-size: 1.2rem">登录</span>
+      </div>
+    </b-form>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      form: {
+        account: '',
+        password: '',
+        site: '',
+        site_show: ''
+      },
+      siteList: []
+    }
+  },
+  mounted() {
+    const data = { url: 'http://121.36.142.167:7774/jbl/api/site/all/ignore-action?_allow_anonymous=true' }
+    this.axios.post('/api/testdwyget', data).then(res => {
+      console.log(res,123)
+      res.data.forEach(v => {
+        v.text = v.name
+        v.value = v.code
+      })
+      this.siteList = res.data
+    })
+  },
+  methods: {
+    handleChangeSite(e) {
+      this.form.site_show = this.siteList.find(v => v.code === e).name
+    },
+    onSubmit() {
+      const data = {
+        post: {
+          name: this.form.account, password: this.form.password, rememberMe: true
+        },
+        // http://122.112.250.253:7774/jbl/api/mes/login
+        url: 'http://121.36.142.167:7774/jbl/api/mes/login',
+        header: ['Content-Type:application/json']
+      }
+      this.axios.post('/api/testdwy', data).then(res => {
+        if (res.code === 200) {
+          if (res.data.status === 'error') {
+            return this.$Message.error(res.data.errorMessage)
+          } else if (res.data.userDto.roleNames.indexOf('ROLE_HARDWARE') === -1) {
+            return this.$Message.error('用户无权访问!')
+          } else {
+            this.$Message.success(res.msg)
+            localStorage.setItem('site', JSON.stringify({ site: this.form.site, site_show: this.form.site_show }))
+            localStorage.setItem('token', res.data.token)
+            localStorage.setItem('userDto', JSON.stringify(res.data.userDto))
+            this.$router.push('/cms/choose')
+          }
+        }
+      })
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+.view {
+  height: 100%;
+  padding: 0;
+  overflow-x: hidden;
+}
+
+.form {
+  box-sizing: border-box;
+  width: 100%;
+  height: 100%;
+  color: #fff;
+  position: absolute;
+  top: 7.5rem;
+  padding: 1.7rem 1.5rem;
+  font-size: 18px !important;
+  font-weight: bold;
+}
+
+.logo {
+  width: 6rem;
+  height: 6rem;
+  position: absolute;
+  top: 20%;
+  left: 50%;
+  transform: translate(-50%, -70%);
+
+  img {
+    width: 100%;
+    height: 100%;
+  }
+}
+
+.header {
+  color: #fff;
+  font-size: 1.5rem;
+  position: relative;
+  width: 100%;
+  top: 1.6rem;
+  left: 1rem;
+}
+
+::-webkit-input-placeholder {
+  color: #ffffff84;
+  /* 设置占位符文字的颜色 */
+}
+
+::v-deep.inp {
+  background: #2A4470 !important;
+  // opacity: 0.4;
+  border: none;
+  color: #fff;
+}
+
+input {
+  color: #ffffff;
+}
+
+.inp:focus {
+  //background: #fff !important;
+  background-color: #04FFD5;
+  color: #ffffff;
+  border: 1px solid #76CFFF;
+}
+
+::v-deep.col-2 {
+  color: #ffffff;
+  font-family: PingFangSC-Medium, sans-serif;
+  text-shadow: 1px 1px 1px #4FC9F2;
+  letter-spacing: 2px;
+}
+
+::v-deep.col-4 {
+  color: #ffffff;
+  font-family: PingFangSC-Medium, sans-serif;
+  text-shadow: 1px 1px 1px #4FC9F2;
+  letter-spacing: 2px;
+}
+
+.btn_login {
+  background: url("../../assets/images/btn_login.png");
+  display: flex;
+  height: 3.5rem;
+  justify-content: center;
+  align-items: center;
+  background-repeat: no-repeat;
+  background-size: cover;
+}
+</style>

+ 15 - 6
src/views/chipBoxPrint.vue

@@ -9,8 +9,8 @@
       <div>
         <Button style="margin:15px;width: 6rem" :ghost="is_all" size="large" @click="handleChooseAll">{{is_all?'取消全选':'全选'}}</Button>
         <Button @click="handleReturn" style="margin:15px" size="large">返回</Button>
-        <Button ghost style="margin: 15px" @click="handlePrint1" size="large">打印(203)</Button>
-        <Button ghost style="margin: 15px" @click="handlePrint1" size="large">打印(300)</Button>
+        <Button ghost style="margin: 15px" @click="handlePrint(1)" size="large">打印(203)</Button>
+        <Button ghost style="margin: 15px" @click="handlePrint(2)" size="large">打印(300)</Button>
       </div>
     </div>
     <div class="bdy">
@@ -308,7 +308,6 @@ export default {
       arr.push({ PTK_CloseUSBPort: "" })
       let _this = this
       let printparams = JSON.stringify(arr)
-      console.log(arr)
       $.ajax({
         type: "post",
         url: 'http://127.0.0.1:888/postek/print',
@@ -319,9 +318,19 @@ export default {
           // _this.getChipDetail();
           if (result.retval == "0") {
             _this.$Message.success("发送成功");
-            setTimeout(()=>{
-              // this.close()
-            },200)
+            let dataq = {
+              post:{
+                defective_order_no_list:_this.selectData.map(v=>v.box_no)
+              },
+              url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/box_orders/box_orders/diy/update_print_status`
+            }
+            _this.axios.post('/api/testdwy', dataq).then(res => {
+              if (res.code === 200) {
+                // setTimeout(()=>{
+                //   _this.close()
+                // },200)
+              }
+            })
           } else {
             _this.$Message.error("发送失败,返回结果:" + result.msg);
           }

+ 379 - 136
src/views/chipFinish.vue

@@ -2,12 +2,17 @@
   <div style="width: 100vw;height: 100vh">
     <div style="display: flex;justify-content: center;align-items: center;padding-top: 1rem;position: relative">
       <div style="position: absolute;top: .2rem;left: 1rem;color: #FFFFFF;font-weight: bold;font-size: 3rem;letter-spacing: 1rem">完工屏</div>
-      <Form :label-width="150"
+      <Form :label-width="180"
             @submit.native.prevent
-            @keyup.enter.native="handleBlur">
-        <FormItem label="派工单号:">
+            @keyup.enter.native="handleBlur"
+            style="display: flex;"
+      >
+        <FormItem label="派工/工艺单号:">
           <Input clearable placeholder="扫码填入" style="width: 25rem" v-model="order_no" size="large"/>
         </FormItem>
+        <FormItem :label-width="10">
+          <Button size="large" @click="handleSearch" type="primary" ghost>查询</Button>
+        </FormItem>
       </Form>
       <div style="position: absolute;top:1.1rem;right: 0">
         <Button
@@ -24,14 +29,15 @@
       </div>
     </div>
      <div class="bdy" :style="show?{'position':'relative','top':'-200px'}:{}">
-       <div v-for="(item,index) in list" :key="index" class="item">
+       <div v-for="(item,index) in list" :key="index">
+         <div class="item" v-show="!item.is_fc">
          <div style="position:absolute;width: 2.4rem;height: 2.4rem;top: 0px;right:0px;border-radius: 50%;background-color: red;color: #FFFFFF;text-align: center;line-height: 1.6;font-size: 1.6rem" @click="handleDel(index)">X</div>
          <div class="it_ti"><label>派工单号:</label><span>{{item.dispatch_no}}</span></div>
          <div class="it_ti"><label>完工类型:</label><Select filterable clearable v-model="item.completion_type_show" style="width: 200px" transfer>
            <Option v-for="itm in completionList" :key="itm.id" :value="itm.value" :label="itm.text"/>
          </Select></div>
          <div class="it_ti"><label>完工时间:</label><DatePicker type="date" v-model="item.completion_time" style="width: 200px" placeholder="请选择"></DatePicker></div>
-         <div class="it_ti"><label>完工工序:</label><Select filterable clearable v-model="item.process_id" style="width: 200px" transfer>
+         <div class="it_ti"><label>完工工序:</label><Select filterable clearable v-model="item.process_id" disabled style="width: 200px" transfer>
            <Option v-for="itm in processList" :key="itm.id" :value="itm.value" :label="itm.text"/>
          </Select></div>
          <div class="it_ti"><label>完工班组:</label><Select v-model="item.team_id" clearable filterable style="width: 200px" transfer>
@@ -61,6 +67,42 @@
            <div><label>完工数量:</label><Input style="width: 150px" v-model="_item.finished_num" clearable placeholder="请输入" @on-focus="handlefocus(index,_index)"></Input></div>
            <div><label>未完工数量:</label><span>{{_item.not_finished_num}}</span></div>
          </div>
+         </div>
+         <div class="item" v-show="item.is_fc">
+           <div style="position:absolute;width: 2.4rem;height: 2.4rem;top: 0px;right:0px;border-radius: 50%;background-color: red;color: #FFFFFF;text-align: center;line-height: 1.6;font-size: 1.6rem" @click="handleDel(index)">X</div>
+           <div class="it_ti"><label>工艺单号:</label><span>{{item.flow_card_no}}</span></div>
+           <div class="it_ti"><label>完工工序:</label><Select filterable clearable v-model="item.process_id" style="width: 200px" transfer @on-change="handleSelectProcess($event,item)">
+             <Option v-for="itm in item.processList" :key="itm.process_id" :value="itm.process_id" :label="itm.process_id_show"/>
+           </Select></div>
+           <div class="it_ti"><label>完工类型:</label><Select filterable clearable v-model="item.completion_type_show" style="width: 200px" transfer>
+             <Option v-for="itm in completionList" :key="itm.id" :value="itm.value" :label="itm.text"/>
+           </Select></div>
+           <div class="it_ti"><label>完工班组:</label><Select v-model="item.team_id" clearable filterable style="width: 200px" transfer>
+             <Option v-for="itm in teamList" :key="itm.id" :value="itm.value" :label="itm.text"/>
+           </Select></div>
+           <div class="it_ti"><label>完工设备:</label><Select v-model="item.equipment_id" clearable filterable style="width: 200px" transfer>
+             <Option v-for="itm in equipmentList" :key="itm.id" :value="itm.value" :label="itm.text"/>
+           </Select></div>
+           <div class="it_ti"><label>完工人员:</label><Select v-model="item.employee_id" clearable multiple filterable style="width: 200px" transfer @on-change="handleChangeEmp">
+             <Option v-for="itm in employeeList" :key="itm.id" :value="itm.value" :label="itm.text"/>
+           </Select></div>
+           <Divider>产品明细</Divider>
+           <div v-for="(_item,_index) in item.children" :key="_index" class="itemmingxi">
+             <div><label>销售订单号:</label><span>{{item.order_no}}</span></div>
+             <div><label>经销商名称:</label><span>{{item.dealer_name}}</span></div>
+             <div><label>产品编码:</label><span>{{item.product_no}}</span></div>
+             <div style="display: flex"><span>产品名称:</span><span style="width: 200px">{{item.product_title}}</span></div>
+             <div style="display: flex"><label>规格型号:</label><span>{{item.product_size}}</span></div>
+             <div><label>计量单位:</label><span>{{ item.product_unit_title }}</span></div>
+             <div><label>工艺名称1:</label><span>{{item.in_process_title}}</span></div>
+             <div><label>花色名称1:</label><span>{{item.in_color}}</span></div>
+             <div><label>工艺名称2:</label><span>{{item.in_process_title_two}}</span></div>
+             <div><label>花色名称2:</label><span>{{item.in_color_two}}</span></div>
+             <div><label>工艺类型:</label><span>{{item.craft_type_dk_show}}</span></div>
+             <div><label>派工数量:</label><span>{{item.dispatch_num}}</span></div>
+             <div><label>完工数量:</label><Input style="width: 150px" v-model="_item.finished_num" clearable placeholder="请输入" @on-focus="handlefocus(index,_index)"></Input></div>
+           </div>
+         </div>
        </div>
      </div>
     <van-number-keyboard
@@ -75,6 +117,11 @@
   </div>
 </template>
 <script>
+// var is_pc = localStorage.getItem('is_pc')
+// import touch from '@vant/touch-emulator'
+// if(is_pc){
+//   Vue.use(touch)
+// }
 export default {
   data () {
     return{
@@ -92,13 +139,16 @@ export default {
       employee:{
         employee_id:null,
         employee_id_show:null,
-      }
+      },
+      is_pc:false,
+      state:true
     }
   },
   created () {
     if(!localStorage.getItem('dwy_url')){
       this.$router.push('/cms/chipScreen')
     }
+    this.is_pc = localStorage.getItem('is_pc')?JSON.parse(localStorage.getItem('is_pc')):false;
     this.axios.post('/api/testdwyget',{url:`${localStorage.getItem('dwy_url')}jbl/api/dict-tables/find-by-code?dictCode=completion_type`}).then(res=>{
          this.completionList = res.data.dictItems;
            this.completionList.forEach(v => {
@@ -116,7 +166,7 @@ export default {
        property: "id",
        rules: [],
        size: 999,
-       specialConditions: [],
+       specialConditions: []
      }
     }
     this.axios.post('/api/testdwy', { ...data4 }).then(res => {
@@ -203,6 +253,106 @@ export default {
     })
   },
   methods: {
+    handleSearch(){
+      if(this.order_no){
+        console.log(213)
+        let no = this.order_no
+        let order_no = [];
+        if(no.indexOf('PG')!=-1){
+          const data = {
+              url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/dispatch_orders/page`,
+              post: {
+                "direction": "DESC",
+                "property": "id",
+                "fromClientType": "pc",
+                "number": 0,
+                "sorts": [],
+                "rules": [{
+                  "field": "dispatch_orders.dispatch_no",
+                  "option": "LIKE_ANYWHERE",
+                  "values": [no]
+                }],
+                "size": 15,
+                "specialConditions": [],
+                "workflowSearchBean": {},
+                "dynamicFormCode": "dispatch_orders",
+                "dynamicFormTable": null,
+                "ignoreField": true,
+                "developmentSystemId": null,
+                "debugFlag": true
+              }
+            }
+          order_no = this.list.map(v=>{
+            if(v.dispatch_no){
+              return v.dispatch_no
+            }
+          })
+          this.axios.post('/api/testdwy', { ...data }).then(res => {
+            if(res.data.content.length!=0&&order_no.indexOf(res.data.content[0].dispatch_orders.dispatch_no)==-1){
+              res.data.content.forEach((v, idx) => {
+                v.dispatch_order_no = v.dispatch_orders.dispatch_no
+                v.not_finished_num = v.dispatch_num - (v.finished_num?v.finished_num:0)
+                v.finished_num = v.not_finished_num
+                v.item_num =idx+1;
+                v.dispatch_item_no = v.item_num;
+                v.dispatch_item_id = v.id;
+                v.refer_type= 'DISPATCH';
+                v.site= null
+              })
+              res.data.content[0].dispatch_orders.completion_time = new Date()
+              let obj = { ...res.data.content[0].dispatch_orders,completion_type_show:'完工后质检' , children:res.data.content}
+              this.list.push(obj)
+              this.order_no = ''
+            }else {
+              this.$Message.warning('已完工或者未查询到数据!')
+              this.order_no = ''
+            }
+          })
+        }else if(no.indexOf('FC')!=-1){
+          const data = {
+            url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/process_flow_card/process_flow_card/diy/flow_card_no`,
+            post: {
+              flow_card_no: no
+            }
+          }
+          order_no = this.list.map(v=>{
+            if(v.flow_card_no){
+              return v.flow_card_no
+            }
+          })
+          this.axios.post('/api/testdwy', { ...data }).then(res => {
+            if(res.data.data.data.process_flow_card_dtl.length!=0&&order_no.indexOf(res.data.data.data.process_flow_card.flow_card_no)==-1&&res.data.data.data.process_flow_card_dtl.filter(n=>n.status=='WIAT_COMPLETION').length!=0){
+              res.data.data.data.process_flow_card_dtl.forEach((v,idx) => {
+                v.flow_card_no = res.data.data.data.process_flow_card.flow_card_no;
+                v.finished_num = v.dispatch_num;
+              })
+              let obj = { ...res.data.data.data.process_flow_card,is_fc:true, children: [], processList: res.data.data.data.process_flow_card_dtl.filter(n=>n.status=='WIAT_COMPLETION') }
+              this.list.push(obj)
+              this.order_no = ''
+            }else {
+              this.$Message.warning('已完工或者未查询到数据!')
+              this.order_no = ''
+            }
+          })
+        }
+      }
+    },
+    handleSelectProcess(e,row){
+      if(e){
+        let obj = row.processList.find(v=>v.process_id==e);
+        row.employee_id = obj.employee_id;
+        row.team_id = obj.team_id;
+        row.completion_type_show = obj.completion_type_show;
+        row.equipment_id = obj.equipment_id;
+        row.children = [obj]
+      }else {
+        row.employee_id = '';
+        row.team_id = '';
+        row.completion_type_show = '';
+        row.equipment_id = '';
+        row.children = [];
+      }
+    },
     handleChangeEmp(e){
       if(e.length!=0){
         let employee_id = e.toString();
@@ -264,6 +414,9 @@ export default {
       }
     },
     handlefocus(index,_index){
+      if(this.is_pc){
+        return
+      }
       this.chooseIndex=index;
       this.itemIndex= _index;
       this.show=true;
@@ -285,99 +438,149 @@ export default {
         }
       }
     },
-    handleSure(){
-      this.list.forEach((b,bindex)=>{
-        let completion_orders = {
-          completion_order_no: null,
-          completion_time: new Date(Date.parse(b.completion_time)).toISOString(),
-          completion_type: this.completionList.find(v=>v.value== b.completion_type_show).code,
-          completion_type_show: b.completion_type_show,
-          created_by: null,
-          created_date: null,
-          dispatch_order_no: b.dispatch_no,
-          ...this.employee,
-          equipment_id:b.equipment_id,
-          equipment_id_show: this.equipmentList.find(v=>v.value==b.equipment_id)?this.equipmentList.find(v=>v.value==b.equipment_id).text:null,
-          last_modified_by: null,
-          last_modified_date: null,
-          process_id:b.process_id,
-          process_id_show:this.processList.find(v=>v.value==b.process_id)?this.processList.find(v=>v.value==b.process_id).text:null,
-          remark:b.remark,
-          site:null,
-          tag:null,
-          team_id:b.team_id,
-          team_id_show:this.teamList.find(v=>v.value==b.team_id)?this.teamList.find(v=>v.value==b.team_id).text:null
-        }
-        let completion_orders_dtl = [];
-        b.children.forEach(v=>{
-          let obj = {
-            item_num: v.item_num,
-            product_no: v.product_no,
-            in_product_tile: v.in_product_tile,
-            in_process_title: v.in_process_title,
-            in_color: v.in_color,
-            in_process_title_two: v.in_process_title_two,
-            in_color_two: v.in_color_two,
-            product_size: v.product_size,
-            product_unit: v.product_unit,
-            product_unit_title: v.product_unit_title,
-            finished_num: v.finished_num,
-            dispatch_num: v.dispatch_num,
-            production_num: v.production_num,
-            production_no: v.production_no,
-            production_item_no: v.production_item_no,
-            dispatch_order_no: v.dispatch_order_no,
-            dispatch_item_no: v.dispatch_item_no,
-            order_no: v.order_no,
-            order_item_no: v.order_item_no,
-            customer_no: v.customer_no,
-            customer_name: v.customer_name,
-            dealer_no: v.dealer_no,
-            dealer_name: v.dealer_name,
-            product_title: v.product_title,
-            process_title: v.process_title,
-            color: v.color,
-            process_title_two: v.process_title_two,
-            color_two: v.color_two,
-            color_code_two: v.color_code_two,
-            dispatch_item_id: v.dispatch_item_id,
-            process_code_two: v.process_code_two,
-            color_code: v.color_code,
-            order_item_id: v.order_item_id,
-            production_item_id: v.production_item_id,
-            process_code: v.process_code,
-            process_router_id: v.process_router_id,
-            craft_type_dk: v.craft_type_dk,
-            craft_type_dk_show: v.craft_type_dk_show,
-            mat_type: v.mat_type,
-            refer_type: 'DISPATCH',
-            site: null,
-            not_finished_num: v.not_finished_num
-          }
-          completion_orders_dtl.push(obj)
-        })
-        let data = {
-          url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/completion_orders/completion_orders`,
-          post: {
-            bizId: -1,
-            bizTypeEk: "LOWCODE",
-            data: {
-              completion_orders_dtl,
-              completion_orders
-            },
-            dynamicFormId: "474201923419320320",
-            showModelId: "474382714828959744"
-          }
-        }
-        this.axios.post('/api/testdwy', { ...data }).then(res => {
-          if(res.code==200){
-            this.$Message.success(res.msg)
-            if(bindex==this.list.length-1){
-             this.list = [];
+    handleSure () {
+      if (!this.list.every(v=>v.process_id)) {
+        return this.$Message.warning('请选择工序!')
+      }
+      // if(this.list.some(v=>v.children.some(c=>c.finished_num*1>c.not_finished_num))){
+      //   this.$Message.warning('有完工数量大于未完工数量的数据!')
+      // }
+      if(this.state){
+        this.state = false;
+        this.list.forEach((b,bindex)=>{
+          if(!b.is_fc){
+            let completion_orders = {
+              completion_order_no: null,
+              completion_time: new Date(Date.parse(b.completion_time)).toISOString(),
+              completion_type: this.completionList.find(v=>v.value== b.completion_type_show).code,
+              completion_type_show: b.completion_type_show,
+              created_by: null,
+              created_date: null,
+              dispatch_order_no: b.dispatch_no,
+              ...this.employee,
+              equipment_id:b.equipment_id,
+              equipment_id_show: this.equipmentList.find(v=>v.value==b.equipment_id)?this.equipmentList.find(v=>v.value==b.equipment_id).text:null,
+              last_modified_by: null,
+              last_modified_date: null,
+              process_id:b.process_id,
+              process_id_show:this.processList.find(v=>v.value==b.process_id)?this.processList.find(v=>v.value==b.process_id).text:null,
+              remark:b.remark,
+              site:null,
+              tag:null,
+              team_id:b.team_id,
+              team_id_show:this.teamList.find(v=>v.value==b.team_id)?this.teamList.find(v=>v.value==b.team_id).text:null,
+              finished_num_total:0
             }
+            let completion_orders_dtl = [];
+            b.children.forEach(v=>{
+              completion_orders.finished_num_total+=v.finished_num*1;
+              let obj = {
+                item_num: v.item_num,
+                product_no: v.product_no,
+                in_product_tile: v.in_product_tile,
+                in_process_title: v.in_process_title,
+                in_color: v.in_color,
+                in_process_title_two: v.in_process_title_two,
+                in_color_two: v.in_color_two,
+                product_size: v.product_size,
+                product_unit: v.product_unit,
+                product_unit_title: v.product_unit_title,
+                finished_num: v.finished_num,
+                dispatch_num: v.dispatch_num,
+                production_num: v.production_num,
+                production_no: v.production_no,
+                production_item_no: v.production_item_no,
+                dispatch_order_no: v.dispatch_order_no,
+                dispatch_item_no: v.dispatch_item_no,
+                order_no: v.order_no,
+                order_item_no: v.order_item_no,
+                customer_no: v.customer_no,
+                customer_name: v.customer_name,
+                dealer_no: v.dealer_no,
+                dealer_name: v.dealer_name,
+                product_title: v.product_title,
+                process_title: v.process_title,
+                color: v.color,
+                process_title_two: v.process_title_two,
+                color_two: v.color_two,
+                color_code_two: v.color_code_two,
+                dispatch_item_id: v.dispatch_item_id,
+                process_code_two: v.process_code_two,
+                color_code: v.color_code,
+                order_item_id: v.order_item_id,
+                production_item_id: v.production_item_id,
+                process_code: v.process_code,
+                process_router_id: v.process_router_id,
+                craft_type_dk: v.craft_type_dk,
+                craft_type_dk_show: v.craft_type_dk_show,
+                mat_type: v.mat_type,
+                refer_type: 'DISPATCH',
+                site: null,
+                not_finished_num: v.not_finished_num
+              }
+              completion_orders_dtl.push(obj)
+            })
+            let data = {
+              url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/completion_orders/completion_orders`,
+              post: {
+                bizId: -1,
+                bizTypeEk: "LOWCODE",
+                data: {
+                  completion_orders_dtl,
+                  completion_orders
+                },
+                dynamicFormId: "474201923419320320",
+                showModelId: "474382714828959744"
+              }
+            }
+            this.axios.post('/api/testdwy', { ...data }).then(res => {
+              if(res.code==200){
+                this.$Message.success(res.msg)
+                if(bindex==this.list.length-1){
+                  this.list = [];
+                  setTimeout(()=>{
+                    this.state = true
+                  },2000)
+                }
+              }
+            })
+          }else {
+            let post = {
+              id: b.children[0].id,
+              completion_orders_flag:b.children[0].completion_orders_flag,
+              completion_type: this.completionList.find(v=>v.value== b.completion_type_show).code,
+              completion_type_show: b.completion_type_show,
+              process_id:b.process_id,
+              process_id_show:b.children[0].process_id_show,
+              team_id:b.team_id,
+              team_id_show:this.teamList.find(v=>v.value==b.team_id)?this.teamList.find(v=>v.value==b.team_id).text:null,
+              equipment_id:b.equipment_id,
+              equipment_id_show: this.equipmentList.find(v=>v.value==b.equipment_id)?this.equipmentList.find(v=>v.value==b.equipment_id).text:null,
+              ...this.employee,
+              finished_num:b.children[0].finished_num,
+              dispatch_num:b.children[0].dispatch_num,
+              mark:null,
+              defective_num:null
+            }
+            delete post.employee_id_biz_data;
+            let data = {
+              url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/process_flow_card/process_flow_card/diy/completion_orders`,
+              post
+            }
+            this.axios.post('/api/testdwy', { ...data }).then(res => {
+              if(res.code==200){
+                this.$Message.success(res.msg)
+                if(bindex==this.list.length-1){
+                  this.list = [];
+                  setTimeout(()=>{
+                    this.state = true
+                  },2000)
+                }
+              }
+            })
           }
         })
-      })
+      }
     },
     exitFullScreen () {
       let el = document;
@@ -400,50 +603,90 @@ export default {
     },
     handleBlur () {
       //00504732303233313032383030383231
+      console.log(this.func.stringToHex('FC2023112300065'));
+      // if(this.is_pc){
+      //   return
+      // }
       if(this.order_no){
         let no = this.func.hexToString(this.order_no)
-        let order_no = this.list.map(v=>v.dispatch_no)
-        const data = {
-          url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/dispatch_orders/page`,
-          post: {
-            "direction": "DESC",
-            "property": "id",
-            "fromClientType": "pc",
-            "number": 0,
-            "sorts": [],
-            "rules": [{
-              "field": "dispatch_orders.dispatch_no",
-              "option": "LIKE_ANYWHERE",
-              "values": [no]
-            }],
-            "size": 15,
-            "specialConditions": [],
-            "workflowSearchBean": {},
-            "dynamicFormCode": "dispatch_orders",
-            "dynamicFormTable": null,
-            "ignoreField": true,
-            "developmentSystemId": null,
-            "debugFlag": true
+        let order_no = [];
+        if(no.indexOf('PG')!=-1){
+          const data = {
+            url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/dispatch_orders/page`,
+            post: {
+              "direction": "DESC",
+              "property": "id",
+              "fromClientType": "pc",
+              "number": 0,
+              "sorts": [],
+              "rules": [{
+                "field": "dispatch_orders.dispatch_no",
+                "option": "LIKE_ANYWHERE",
+                "values": [no]
+              }],
+              "size": 15,
+              "specialConditions": [],
+              "workflowSearchBean": {},
+              "dynamicFormCode": "dispatch_orders",
+              "dynamicFormTable": null,
+              "ignoreField": true,
+              "developmentSystemId": null,
+              "debugFlag": true
+            }
           }
-        }
-        this.axios.post('/api/testdwy', { ...data }).then(res => {
-          if(res.data.content.length!=0&&order_no.indexOf(res.data.content[0].dispatch_orders.dispatch_no)==-1){
-            res.data.content.forEach((v,idx) => {
-              v.dispatch_order_no = v.dispatch_orders.dispatch_no
-              v.not_finished_num = v.dispatch_num - (v.finished_num?v.finished_num:0)
-              v.finished_num = v.not_finished_num
-              v.item_num =idx+1;
-              v.dispatch_item_no = v.item_num;
-              v.dispatch_item_id = v.id;
-              v.refer_type= 'DISPATCH';
+          order_no = this.list.map(v=>{
+            if(v.dispatch_no){
+              return v.dispatch_no
+            }
+          })
+          this.axios.post('/api/testdwy', { ...data }).then(res => {
+            if(res.data.content.length!=0&&order_no.indexOf(res.data.content[0].dispatch_orders.dispatch_no)==-1){
+              res.data.content.forEach((v, idx) => {
+                v.dispatch_order_no = v.dispatch_orders.dispatch_no
+                v.not_finished_num = v.dispatch_num - (v.finished_num?v.finished_num:0)
+                v.finished_num = v.not_finished_num
+                v.item_num =idx+1;
+                v.dispatch_item_no = v.item_num;
+                v.dispatch_item_id = v.id;
+                v.refer_type= 'DISPATCH';
                 v.site= null
-            })
-            res.data.content[0].dispatch_orders.completion_time = new Date()
-            let obj = { ...res.data.content[0].dispatch_orders,completion_type_show:'完工后质检' , children:res.data.content}
-            this.list.push(obj)
-            console.log(this.list)
+              })
+              res.data.content[0].dispatch_orders.completion_time = new Date()
+              let obj = { ...res.data.content[0].dispatch_orders,completion_type_show:'完工后质检' , children:res.data.content}
+              this.list.push(obj)
+              this.order_no = ''
+            }else {
+              this.$Message.warning('已完工或者未查询到数据!')
+              this.order_no = ''
+            }
+          })
+        }else if(no.indexOf('FC')!=-1){
+          const data = {
+            url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/process_flow_card/process_flow_card/diy/flow_card_no`,
+            post: {
+              flow_card_no: no
+            }
           }
-        })
+          order_no = this.list.map(v=>{
+            if(v.flow_card_no){
+              return v.flow_card_no
+            }
+          })
+          this.axios.post('/api/testdwy', { ...data }).then(res => {
+            if(res.data.data.data.process_flow_card_dtl.length!=0&&order_no.indexOf(res.data.data.data.process_flow_card.flow_card_no)==-1&&res.data.data.data.process_flow_card_dtl.filter(n=>n.status=='WIAT_COMPLETION').length!=0){
+              res.data.data.data.process_flow_card_dtl.forEach((v,idx) => {
+                v.flow_card_no = res.data.data.data.process_flow_card.flow_card_no;
+                v.finished_num = v.dispatch_num;
+              })
+              let obj = { ...res.data.data.data.process_flow_card,is_fc:true, children: [], processList: res.data.data.data.process_flow_card_dtl.filter(n=>n.status=='WIAT_COMPLETION') }
+              this.list.push(obj)
+              this.order_no = ''
+            }else {
+              this.$Message.warning('已完工或者未查询到数据!')
+              this.order_no = ''
+            }
+          })
+        }
       }
     }
   }

+ 11 - 7
src/views/chipPackage.vue

@@ -37,8 +37,8 @@
         </Select></div>
         <Divider>包装明细</Divider>
         <div v-for="(_item,_index) in item.children" :key="_index" class="itemmingxi">
-          <div style="position:absolute;width: 2rem;height: 2rem;top: -.4rem;right:-.4rem;border-radius: 50%;background-color: #c91d31;color: #FFFFFF;text-align: center;line-height: .6;font-size: 2.5rem" @click="handleDelItem(_index)">-</div>
-          <div><label>销售订单号:</label><span>{{item.no}}</span></div>
+          <div style="position:absolute;width: 2rem;height: 2rem;top: -.4rem;right:-.4rem;border-radius: 50%;background-color: #c91d31;color: #FFFFFF;text-align: center;line-height: .6;font-size: 2.5rem" @click="handleDelItem(index,_index)">-</div>
+          <div><label>销售订单号:</label><span>{{_item.no}}</span></div>
           <div><label>经销商名称:</label><span>{{_item.exe_sale_order_b.jingxiaoshang_show}}</span></div>
           <div><label>产品编码:</label><span>{{_item.material_code}}</span></div>
           <div style="display: flex"><span>产品名称:</span><span style="width: 200px">{{_item.material_code_show}}</span></div>
@@ -92,13 +92,15 @@ export default {
       team:{
         team_id:null,
         team_id_show:null
-      }
+      },
+      is_pc:false
     }
   },
   created () {
     if(!localStorage.getItem('dwy_url')){
       this.$router.push('/cms/chipScreen')
     }
+    this.is_pc = localStorage.getItem('is_pc')?JSON.parse(localStorage.getItem('is_pc')):false;
     // 获取班组
     const data = {
       url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/team_list/page`,
@@ -204,6 +206,9 @@ export default {
       }
     },
     handlefocus(index,_index,sort,__index){
+      if(this.is_pc){
+        return
+      }
       if(sort==1){
         this.chooseIndex = index;
         this.itemIndex = _index;
@@ -431,6 +436,7 @@ export default {
         this.axios.post('/api/testdwy', { ...data }).then(res => {
           if(res.data.content.length!=0&&order_no.indexOf(res.data.content[0].exe_sale_order_b.no)==-1){
             res.data.content.forEach((v,idx)=>{
+              v.no = v.exe_sale_order_b.no
               v.item_num = idx + 1;
               v.product_no = v.material_code;
               v.product_title = v.material_code_show;
@@ -455,8 +461,8 @@ export default {
               v.brand_code= v.prod_trademark_compare_c.brand_code;
               v.brand_code_show= v.prod_trademark_compare_c.brand_code_show;
               v.site= null;
-              v.box_num = v.not_box_num_total;
-              v.not_box_num_total = v.box_num;
+              v.box_num = v.quality_num?v.quality_num:0;
+              v.not_box_num_total = v.quality_num?v.quality_num:0;
               v.new_box_orders_label_producter = [];
               let brand_code_list = v.prod_trademark_compare_c.brand_code.split(",");
               let brand_code_show_list = v.prod_trademark_compare_c.brand_code_show.split("$$$");
@@ -483,9 +489,7 @@ export default {
               box_time:new Date(),
               children: res.data.content
             }
-            obj.no = res.data.content[0].exe_sale_order_b.no;
             this.list.push(obj)
-            console.log(this.list)
             this.order_no = ''
           }else {
             this.order_no = ''

+ 373 - 157
src/views/chipQualityTesting.vue

@@ -2,12 +2,17 @@
   <div style="width: 100vw;height: 100vh">
     <div style="display: flex;justify-content: center;align-items: center;padding-top: 1rem;position: relative">
       <div style="position: absolute;top: .2rem;left: 1rem;color: #FFFFFF;font-weight: bold;font-size: 3rem;letter-spacing: 1rem">质检屏</div>
-      <Form :label-width="150"
+      <Form :label-width="180"
             @submit.native.prevent
-            @keyup.enter.native="handleBlur">
-        <FormItem label="派工单号:">
+            @keyup.enter.native="handleBlur"
+            style="display: flex"
+      >
+        <FormItem label="派工/工艺单号:">
           <Input clearable placeholder="扫码填入" style="width: 25rem" v-model="order_no" size="large"/>
         </FormItem>
+        <FormItem :label-width="10">
+          <Button size="large" @click="handleSearch" type="primary" ghost>查询</Button>
+        </FormItem>
       </Form>
       <div style="position: absolute;top:1.1rem;right: 0">
         <Button
@@ -25,6 +30,7 @@
     </div>
     <div class="bdy" :style="show?{'position':'relative','top':'-200px'}:{}">
       <div v-for="(item,index) in list" :key="index" class="item">
+        <div class="item" v-if="!item.is_fc">
         <div style="position:absolute;width: 2.4rem;height: 2.4rem;top: 0px;right:0px;border-radius: 50%;background-color: red;color: #FFFFFF;text-align: center;line-height: 1.6;font-size: 1.6rem" @click="handleDel(index)">X</div>
         <div class="it_ti"><label>派工单号:</label><span>{{item.dispatch_order_no}}</span></div>
         <div class="it_ti"><label>质检时间:</label><DatePicker type="date" v-model="item.quality_time" style="width: 200px" placeholder="请选择"></DatePicker></div>
@@ -62,6 +68,30 @@
           <div><label>不良品数量:</label><Input v-model="_item.defective_num" style="width: 200px;" placeholder="请输入" @on-focus="handlefocus(index,_index,2)"/></div>
         </div>
       </div>
+        <div class="item" v-else>
+          <div style="position:absolute;width: 2.4rem;height: 2.4rem;top: 0px;right:0px;border-radius: 50%;background-color: red;color: #FFFFFF;text-align: center;line-height: 1.6;font-size: 1.6rem" @click="handleDel(index)">X</div>
+          <div class="it_ti"><label>工艺单号:</label><span>{{item.flow_card_no}}</span></div>
+          <div class="it_ti"><label>质检工序:</label><Select filterable clearable v-model="item.process_id" style="width: 200px" transfer @on-change="handleSelectProcess($event,item)">
+            <Option v-for="itm in item.processList" :key="itm.process_id" :value="itm.process_id" :label="itm.process_id_show"/>
+          </Select></div>
+          <Divider>产品明细</Divider>
+          <div v-for="(_item,_index) in item.children" :key="_index" class="itemmingxi">
+            <div><label>销售订单号:</label><span>{{item.order_no}}</span></div>
+            <div><label>经销商名称:</label><span>{{item.dealer_name}}</span></div>
+            <div><label>产品编码:</label><span>{{item.product_no}}</span></div>
+            <div style="display: flex"><span>产品名称:</span><span style="width: 200px">{{item.product_title}}</span></div>
+            <div style="display: flex"><label>规格型号:</label><span>{{item.product_size}}</span></div>
+            <div><label>计量单位:</label><span>{{ item.product_unit_title }}</span></div>
+            <div><label>工艺名称1:</label><span>{{item.in_process_title}}</span></div>
+            <div><label>花色名称1:</label><span>{{item.in_color}}</span></div>
+            <div><label>工艺名称2:</label><span>{{item.in_process_title_two}}</span></div>
+            <div><label>花色名称2:</label><span>{{item.in_color_two}}</span></div>
+            <div><label>工艺类型:</label><span>{{item.craft_type_dk_show}}</span></div>
+            <div><label>合格数量:</label><Input v-model="_item.quality_num" style="width: 200px;" placeholder="请输入" @on-focus="handlefocus(index,_index,1)"/></div>
+            <div><label>不良品数量:</label><Input v-model="_item.defective_num" style="width: 200px;" placeholder="请输入" @on-focus="handlefocus(index,_index,2)"/></div>
+          </div>
+        </div>
+      </div>
     </div>
     <van-number-keyboard
         :show="show"
@@ -75,6 +105,7 @@
   </div>
 </template>
 <script>
+// import '@vant/touch-emulator';
 export default {
   data () {
     return{
@@ -87,16 +118,19 @@ export default {
       equipmentList:[],
       employeeList:[],
       processList:[],
+      is_pc:false,
       employee:{
         employee_id:null,
         employee_id_show:null
-      }
+      },
+      state:true
     }
   },
   created () {
     if(!localStorage.getItem('dwy_url')){
       this.$router.push('/cms/chipScreen')
     }
+    this.is_pc = localStorage.getItem('is_pc')?JSON.parse(localStorage.getItem('is_pc')):false;
     //获取工序
     const data4={
       url:`${localStorage.getItem('dwy_url')}jbl/api/module-data/process_dossier_code/page`,
@@ -195,6 +229,114 @@ export default {
     })
   },
   methods: {
+    handleSearch(){
+      console.log(this.func.stringToHex('FC2023112300065'));
+      if (this.order_no) {
+        let no = this.order_no
+        let order_no = []
+        if(no.indexOf('PG')!=-1){
+          const data = {
+            url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/completion_orders/page`,
+            post: {
+              debugFlag: false,
+              developmentSystemId: null,
+              direction: "DESC",
+              dynamicFormCode: "completion_orders",
+              dynamicFormTable: null,
+              fromClientType: "pc",
+              ignoreField: true,
+              number: 0,
+              property: "id",
+              rules: [{
+                field: "dispatch_order_no",
+                option: "LIKE_ANYWHERE",
+                values: [no]
+              }, {
+                field: "completion_orders.completion_type",
+                option: "EQ",
+                values: ["COMPLETION_AFTER_QUALITY"]
+              }],
+              size: 999,
+              sorts: [],
+              specialConditions: [],
+              workflowSearchBean: {}
+            }
+          }
+          order_no = this.list.map(v=>{
+            if(v.dispatch_no){
+              return v.dispatch_no
+            }
+          })
+          this.axios.post('/api/testdwy', { ...data }).then(res => {
+            if(res.data.content.length!=0&&order_no.indexOf(res.data.content[0].dispatch_order_no)==-1) {
+              res.data.content.forEach((v,idx) => {
+                v.completion_order_no = v.completion_orders.completion_order_no
+                v.quality_num= v.finished_num-(v.quality_num ? v.quality_num : '0');
+                v.not_quality_num= v.quality_num;
+                v.defective_num = 0;
+                v.item_num = idx+1;
+                v.completion_item_id= v.id;
+                v.completion_item_no= v.item_num;
+                v.completion_process_id= v.completion_orders.process_id;
+                v.completion_process_id_show= v.completion_orders.process_id_show;
+                v.completion_team_id= v.completion_orders.team_id;
+                v.completion_team_id_show= v.completion_orders.team_id_show;
+                v.completion_equipment_id= v.completion_orders.equipment_id;
+                v.completion_equipment_id_show= v.completion_orders.equipment_id_show;
+                v.completion_employee_id= v.completion_orders.employee_id;
+                v.completion_employee_id_show= v.completion_orders.employee_id_show;
+                v.site= null
+              })
+              res.data.content[0].completion_orders.quality_time = new Date()
+              let obj = {
+                ...res.data.content[0].completion_orders,
+                children: res.data.content
+              }
+              obj.dispatch_order_no = res.data.content[0].dispatch_order_no;
+              this.list.push(obj)
+              this.order_no = ''
+            }else {
+              this.$Message.warning('已质检或者未查询到数据!')
+              this.order_no =''
+            }
+          })
+        }else if(no.indexOf('FC')!=-1){
+          const data = {
+            url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/process_flow_card/process_flow_card/diy/flow_card_no`,
+            post: {
+              flow_card_no: no
+            }
+          }
+          order_no = this.list.map(v=>{
+            if(v.flow_card_no){
+              return v.flow_card_no
+            }
+          })
+          this.axios.post('/api/testdwy', { ...data }).then(res => {
+            if(res.data.data.data.process_flow_card_dtl.length!=0&&order_no.indexOf(res.data.data.data.process_flow_card.flow_card_no)==-1&&res.data.data.data.process_flow_card_dtl.filter(n=>n.status=='WIAT_QUALITY').length!=0){
+              res.data.data.data.process_flow_card_dtl.forEach((v,idx) => {
+                v.flow_card_no = res.data.data.data.process_flow_card.flow_card_no;
+              })
+              let obj = { ...res.data.data.data.process_flow_card,is_fc:true, children: [], processList: res.data.data.data.process_flow_card_dtl.filter(n=>n.status=='WIAT_QUALITY') }
+              this.list.push(obj)
+              this.order_no = ''
+            }else {
+              this.$Message.warning('已质检或者未查询到数据!')
+              this.order_no = ''
+            }
+          })
+        }
+      }
+    },
+    handleSelectProcess(e,row){
+      if(e){
+        let obj = row.processList.find(v=>v.process_id==e);
+        row.children = [obj]
+        console.log(row);
+      }else {
+        row.children = [];
+      }
+    },
     handleChangeEmp(e){
       if(e.length!=0){
         let employee_id = e.toString();
@@ -219,6 +361,9 @@ export default {
       }
     },
     handlefocus(index,_index,sort){
+      if(this.is_pc){
+        return
+      }
       this.chooseIndex=index;
       this.itemIndex= _index;
       this.sort=sort;
@@ -226,17 +371,19 @@ export default {
     },
     onInput (value) {
       if(this.sort==1){
-        this.list[this.chooseIndex].children[this.itemIndex].quality_num = this.list[this.chooseIndex].children[this.itemIndex].quality_num + '' + value
+        this.list[this.chooseIndex].children[this.itemIndex].quality_num = (this.list[this.chooseIndex].children[this.itemIndex].quality_num?this.list[this.chooseIndex].children[this.itemIndex].quality_num:'') + '' + value
       }else {
-        this.list[this.chooseIndex].children[this.itemIndex].defective_num = this.list[this.chooseIndex].children[this.itemIndex].defective_num + '' + value
+        this.list[this.chooseIndex].children[this.itemIndex].defective_num = (this.list[this.chooseIndex].children[this.itemIndex].defective_num?this.list[this.chooseIndex].children[this.itemIndex].defective_num:'') + '' + value
       }
 
     },
     onDelete () {
       if(this.sort==1){
+        this.list[this.chooseIndex].children[this.itemIndex].quality_num=this.list[this.chooseIndex].children[this.itemIndex].quality_num?this.list[this.chooseIndex].children[this.itemIndex].quality_num:'';
         this.list[this.chooseIndex].children[this.itemIndex].quality_num += ''
         this.list[this.chooseIndex].children[this.itemIndex].quality_num = this.list[this.chooseIndex].children[this.itemIndex].quality_num.substring(0, this.list[this.chooseIndex].children[this.itemIndex].quality_num.length - 1)
       }else {
+        this.list[this.chooseIndex].children[this.itemIndex].defective_num=this.list[this.chooseIndex].children[this.itemIndex].defective_num?this.list[this.chooseIndex].children[this.itemIndex].defective_num:'';
         this.list[this.chooseIndex].children[this.itemIndex].defective_num += ''
         this.list[this.chooseIndex].children[this.itemIndex].defective_num = this.list[this.chooseIndex].children[this.itemIndex].defective_num.substring(0, this.list[this.chooseIndex].children[this.itemIndex].defective_num.length - 1)
       }
@@ -282,104 +429,110 @@ export default {
       }
     },
     handleSure () {
-      new Promise((resolve,reject) => {
-        this.list.forEach(v=>{
-          v.children.forEach(c=>{
-            if(c.not_quality_num*1<c.quality_num*1+c.defective_num*1||c.not_quality_num*1==0){
-              resolve()
-            }else{
-               reject()
-            }
-          })
-        })
-      }).then(res=>{
-        return this.$Message.warning('合格数量加不良品数量不能超过未质检数量且数量不等于0!')
-      }).catch(()=>{
+      // new Promise((resolve,reject) => {
+      //   this.list.forEach(v=>{
+      //     v.children.forEach(c=>{
+      //       if(c.not_quality_num*1<c.quality_num*1+c.defective_num*1||c.not_quality_num*1==0){
+      //         resolve()
+      //       }else{
+      //          reject()
+      //       }
+      //     })
+      //   })
+      // }).then(res=>{
+      //   return this.$Message.warning('合格数量加不良品数量不能超过未质检数量且数量不等于0!')
+      // }).catch(()=>{})
+      if (!this.list.every(v=>v.process_id)) {
+        return this.$Message.warning('请选择工艺!')
+      }
+      if(this.state){
+        this.state = false;
         this.list.forEach((b,bindex)=>{
-          let quality_orders = {
-            quality_order_no:null,
-            quality_time: new Date(Date.parse(b.completion_time)).toISOString(),
+          if(!b.is_fc) {
+            let quality_orders = {
+              quality_order_no: null,
+              quality_time: new Date(Date.parse(b.completion_time)).toISOString(),
               created_by: null,
               created_date: null,
               dispatch_order_no: b.dispatch_no,
               ...this.employee,
-             last_modified_by: null,
+              last_modified_by: null,
               last_modified_date: null,
-              process_id:b.process_id,
-              process_id_show:this.processList.find(v=>v.value==b.process_id)?this.processList.find(v=>v.value==b.process_id).text:null,
-              remark:b.remark,
-              site:null,
-              tag:null,
-              team_id:b.team_id,
-              team_id_show:this.teamList.find(v=>v.value==b.team_id)?this.teamList.find(v=>v.value==b.team_id).text:null
+              process_id: b.process_id,
+              process_id_show: this.processList.find(v => v.value == b.process_id) ? this.processList.find(v => v.value == b.process_id).text : null,
+              remark: b.remark,
+              site: null,
+              tag: null,
+              team_id: b.team_id,
+              team_id_show: this.teamList.find(v => v.value == b.team_id) ? this.teamList.find(v => v.value == b.team_id).text : null
             }
-          let quality_orders_dtl = [];
-          b.children.forEach(v=>{
-            let obj = {
-              item_num: v.item_num,
-              product_no: v.product_no,
-              in_product_tile: v.in_product_tile,
-              in_process_title: v.in_process_title,
-              in_color: v.in_color,
-              in_process_title_two: v.in_process_title_two,
-              in_color_two: v.in_color_two,
-              product_size: v.product_size,
-              product_unit: v.product_unit,
-              product_unit_title: v.product_unit_title,
-              finished_num: v.finished_num,
-              dispatch_num: v.dispatch_num,
-              production_num: v.production_num,
-              production_no: v.production_no,
-              production_item_id: v.production_item_id,
-              production_item_no: v.production_item_no,
-              dispatch_order_no: v.dispatch_order_no,
-              dispatch_item_id: v.dispatch_item_id,
-              dispatch_item_no: v.dispatch_item_no,
-              process_router_id: v.process_router_id,
-              process_router_id_show: v.process_router_id_show,
-              order_no: v.order_no,
-              order_item_id: v.order_item_id,
-              order_item_no: v.order_item_no,
-              customer_no: v.customer_no,
-              customer_name: v.customer_name,
-              dealer_no: v.dealer_no,
-              dealer_name: v.dealer_name,
-              product_title: v.product_title,
-              process_code: v.process_code,
-              color_code: v.color_code,
-              process_code_two: v.process_code_two,
-              color_code_two: v.color_code_two,
-              process_title: v.process_title,
-              color: v.color,
-              process_title_two: v.process_title_two,
-              color_two: v.color_two,
-              craft_type_dk: v.craft_type_dk,
-              craft_type_dk_show: v.craft_type_dk_show,
-              mat_type: v.mat_type,
-              completion_order_no: v.completion_order_no,
-              completion_item_id: v.completion_item_id,
-              completion_item_no: v.completion_item_no,
-              completion_process_id: v.completion_process_id,
-              completion_process_id_show: v.completion_process_id,
-              completion_team_id: v.completion_team_id,
-              completion_team_id_show: v.completion_team_id_show,
-              completion_equipment_id: v.completion_equipment_id,
-              completion_equipment_id_show: v.completion_equipment_id_show,
-              completion_employee_id: v.completion_employee_id,
-              completion_employee_id_show: v.completion_employee_id_show,
-              quality_num: v.quality_num,
-              not_quality_num: v.not_quality_num,
-              defective_num: v.defective_num,
-              site: null
-            };
-            quality_orders_dtl.push(obj);
-          })
-          const data = {
+            let quality_orders_dtl = [];
+            b.children.forEach(v => {
+              let obj = {
+                item_num: v.item_num,
+                product_no: v.product_no,
+                in_product_tile: v.in_product_tile,
+                in_process_title: v.in_process_title,
+                in_color: v.in_color,
+                in_process_title_two: v.in_process_title_two,
+                in_color_two: v.in_color_two,
+                product_size: v.product_size,
+                product_unit: v.product_unit,
+                product_unit_title: v.product_unit_title,
+                finished_num: v.finished_num,
+                dispatch_num: v.dispatch_num,
+                production_num: v.production_num,
+                production_no: v.production_no,
+                production_item_id: v.production_item_id,
+                production_item_no: v.production_item_no,
+                dispatch_order_no: v.dispatch_order_no,
+                dispatch_item_id: v.dispatch_item_id,
+                dispatch_item_no: v.dispatch_item_no,
+                process_router_id: v.process_router_id,
+                process_router_id_show: v.process_router_id_show,
+                order_no: v.order_no,
+                order_item_id: v.order_item_id,
+                order_item_no: v.order_item_no,
+                customer_no: v.customer_no,
+                customer_name: v.customer_name,
+                dealer_no: v.dealer_no,
+                dealer_name: v.dealer_name,
+                product_title: v.product_title,
+                process_code: v.process_code,
+                color_code: v.color_code,
+                process_code_two: v.process_code_two,
+                color_code_two: v.color_code_two,
+                process_title: v.process_title,
+                color: v.color,
+                process_title_two: v.process_title_two,
+                color_two: v.color_two,
+                craft_type_dk: v.craft_type_dk,
+                craft_type_dk_show: v.craft_type_dk_show,
+                mat_type: v.mat_type,
+                completion_order_no: v.completion_order_no,
+                completion_item_id: v.completion_item_id,
+                completion_item_no: v.completion_item_no,
+                completion_process_id: v.completion_process_id,
+                completion_process_id_show: v.completion_process_id,
+                completion_team_id: v.completion_team_id,
+                completion_team_id_show: v.completion_team_id_show,
+                completion_equipment_id: v.completion_equipment_id,
+                completion_equipment_id_show: v.completion_equipment_id_show,
+                completion_employee_id: v.completion_employee_id,
+                completion_employee_id_show: v.completion_employee_id_show,
+                quality_num: v.quality_num,
+                not_quality_num: v.not_quality_num,
+                defective_num: v.defective_num,
+                site: null
+              };
+              quality_orders_dtl.push(obj);
+            })
+            const data = {
               url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/quality_orders/quality_orders`,
               post: {
                 bizId: -1,
                 bizTypeEk: "LOWCODE",
-                data:{
+                data: {
                   quality_orders_dtl,
                   quality_orders
                 },
@@ -387,16 +540,42 @@ export default {
                 showModelId: "494720843218427906"
               }
             }
-          this.axios.post('/api/testdwy', { ...data }).then(req => {
-            if(req.code==200){
-              this.$Message.success(req.msg)
-              if(bindex==this.list.length-1){
-                this.list = [];
+            this.axios.post('/api/testdwy', { ...data }).then(req => {
+              if (req.code == 200) {
+                this.$Message.success(req.msg)
+                if (bindex == this.list.length - 1) {
+                  this.list = [];
+                  setTimeout(()=>{
+                    this.state = true
+                  },2000)
+                }
               }
+            })
+          }else {
+            let post = {
+              id: b.children[0].id,
+              quality_orders_flag:b.children[0].quality_orders_flag,
+              quality_num:b.children[0].quality_num,
+              defective_num:b.children[0].defective_num
             }
-          })
+            let data = {
+              url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/process_flow_card/process_flow_card/diy/quality_orders`,
+              post
+            }
+            this.axios.post('/api/testdwy', { ...data }).then(res => {
+              if(res.code==200){
+                this.$Message.success(res.msg)
+                if(bindex==this.list.length-1){
+                  this.list = [];
+                  setTimeout(()=>{
+                    this.state = true
+                  },2000)
+                }
+              }
+            })
+          }
         })
-      })
+      }
     },
     exitFullScreen () {
       let el = document;
@@ -418,68 +597,105 @@ export default {
       }
     },
     handleBlur (e) {
+      console.log(this.func.stringToHex('FC2023112300065'));
+      // if(this.is_pc){
+      //   return
+      // }
       if (this.order_no) {
         let no = this.func.hexToString(e.target.value)
-        let order_no = this.list.map(v => v.dispatch_order_no)
-        const data = {
-          url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/completion_orders/page`,
-          post: {
-            debugFlag: false,
-            developmentSystemId: null,
-            direction: "DESC",
-            dynamicFormCode: "completion_orders",
-            dynamicFormTable: null,
-            fromClientType: "pc",
-            ignoreField: true,
-            number: 0,
-            property: "id",
-            rules: [{
-              field: "dispatch_order_no",
-              option: "LIKE_ANYWHERE",
-              values: [no]
-            }, {
-              field: "completion_orders.completion_type",
-              option: "EQ",
-              values: ["COMPLETION_AFTER_QUALITY"]
-            }],
-            size: 999,
-            sorts: [],
-            specialConditions: [],
-            workflowSearchBean: {}
+        let order_no = []
+        if(no.indexOf('PG')!=-1){
+          const data = {
+            url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/completion_orders/page`,
+            post: {
+              debugFlag: false,
+              developmentSystemId: null,
+              direction: "DESC",
+              dynamicFormCode: "completion_orders",
+              dynamicFormTable: null,
+              fromClientType: "pc",
+              ignoreField: true,
+              number: 0,
+              property: "id",
+              rules: [{
+                field: "dispatch_order_no",
+                option: "LIKE_ANYWHERE",
+                values: [no]
+              }, {
+                field: "completion_orders.completion_type",
+                option: "EQ",
+                values: ["COMPLETION_AFTER_QUALITY"]
+              }],
+              size: 999,
+              sorts: [],
+              specialConditions: [],
+              workflowSearchBean: {}
+            }
           }
-        }
-        this.axios.post('/api/testdwy', { ...data }).then(res => {
-          if(res.data.content.length!=0&&order_no.indexOf(res.data.content[0].dispatch_order_no)==-1) {
-            res.data.content.forEach((v,idx) => {
-              v.completion_order_no = v.completion_orders.completion_order_no
-              v.quality_num= v.finished_num-(v.quality_num ? v.quality_num : '0');
-              v.not_quality_num= v.quality_num;
-              v.defective_num = 0;
-              v.item_num = idx+1;
-              v.completion_item_id= v.id;
-              v.completion_item_no= v.item_num;
-              v.completion_process_id= v.completion_orders.process_id;
-              v.completion_process_id_show= v.completion_orders.process_id_show;
-              v.completion_team_id= v.completion_orders.team_id;
-              v.completion_team_id_show= v.completion_orders.team_id_show;
-              v.completion_equipment_id= v.completion_orders.equipment_id;
-              v.completion_equipment_id_show= v.completion_orders.equipment_id_show;
-              v.completion_employee_id= v.completion_orders.employee_id;
-              v.completion_employee_id_show= v.completion_orders.employee_id_show;
-              v.site= null
-            })
-            res.data.content[0].completion_orders.quality_time = new Date()
-            let obj = {
-              ...res.data.content[0].completion_orders,
-              children: res.data.content
+          order_no = this.list.map(v=>{
+            if(v.dispatch_no){
+              return v.dispatch_no
+            }
+          })
+          this.axios.post('/api/testdwy', { ...data }).then(res => {
+            if(res.data.content.length!=0&&order_no.indexOf(res.data.content[0].dispatch_order_no)==-1) {
+              res.data.content.forEach((v,idx) => {
+                v.completion_order_no = v.completion_orders.completion_order_no
+                v.quality_num= v.finished_num-(v.quality_num ? v.quality_num : '0');
+                v.not_quality_num= v.quality_num;
+                v.defective_num = 0;
+                v.item_num = idx+1;
+                v.completion_item_id= v.id;
+                v.completion_item_no= v.item_num;
+                v.completion_process_id= v.completion_orders.process_id;
+                v.completion_process_id_show= v.completion_orders.process_id_show;
+                v.completion_team_id= v.completion_orders.team_id;
+                v.completion_team_id_show= v.completion_orders.team_id_show;
+                v.completion_equipment_id= v.completion_orders.equipment_id;
+                v.completion_equipment_id_show= v.completion_orders.equipment_id_show;
+                v.completion_employee_id= v.completion_orders.employee_id;
+                v.completion_employee_id_show= v.completion_orders.employee_id_show;
+                v.site= null
+              })
+              res.data.content[0].completion_orders.quality_time = new Date()
+              let obj = {
+                ...res.data.content[0].completion_orders,
+                children: res.data.content
+              }
+              obj.dispatch_order_no = res.data.content[0].dispatch_order_no;
+              this.list.push(obj)
+              this.order_no = ''
+            }else {
+              this.$Message.warning('已质检或者未查询到数据!')
+              this.order_no =''
+            }
+          })
+        }else if(no.indexOf('FC')!=-1){
+          const data = {
+            url: `${localStorage.getItem('dwy_url')}jbl/api/module-data/process_flow_card/process_flow_card/diy/flow_card_no`,
+            post: {
+              flow_card_no: no
             }
-            obj.dispatch_order_no = res.data.content[0].dispatch_order_no;
-            this.list.push(obj)
-            this.order_no = ''
-          }else {
-            this.order_no =''
           }
-        })
+          order_no = this.list.map(v=>{
+            if(v.flow_card_no){
+              return v.flow_card_no
+            }
+          })
+          this.axios.post('/api/testdwy', { ...data }).then(res => {
+            if(res.data.data.data.process_flow_card_dtl.length!=0&&order_no.indexOf(res.data.data.data.process_flow_card.flow_card_no)==-1&&res.data.data.data.process_flow_card_dtl.filter(n=>n.status=='WIAT_QUALITY').length!=0){
+              res.data.data.data.process_flow_card_dtl.forEach((v,idx) => {
+                v.flow_card_no = res.data.data.data.process_flow_card.flow_card_no;
+              })
+              let obj = { ...res.data.data.data.process_flow_card,is_fc:true, children: [], processList: res.data.data.data.process_flow_card_dtl.filter(n=>n.status=='WIAT_QUALITY') }
+              this.list.push(obj)
+              this.order_no = ''
+            }else {
+              this.$Message.warning('已质检或者未查询到数据!')
+              this.order_no = ''
+            }
+          })
+        }
       }
     }
   }

+ 7 - 1
src/views/chipScreen.vue

@@ -1,5 +1,6 @@
 <template>
   <div style="height: 100vh">
+    <div style="position: absolute;right: 10px;top: 10px"><Button style="width: 5rem;height: 2rem;font-size: 1rem" type="primary" :ghost="is_pc" @click="handleChangeState">{{is_pc?'PC':'工位屏'}}</Button></div>
     <div class="bdy">
       <div @click="handleGo(1)">完工</div>
       <div @click="handleGo(2)">质检</div>
@@ -14,10 +15,11 @@ document.title = '工位屏'
 export default {
   data () {
     return {
+      is_pc:false
     }
   },
   created () {
-    console.log(this.$route.query);
+    this.is_pc = localStorage.getItem('is_pc')?JSON.parse(localStorage.getItem('is_pc')):false;
     let info = JSON.parse(JSON.stringify(this.$route.query));
     if(!info.Authorization||!info.site){
       return this.$Message.warning({content:'请联系开发者,缺少站点和人员信息!',duration:0,closable:true})
@@ -30,6 +32,10 @@ export default {
     localStorage.setItem('dwy_url',url);
   },
   methods: {
+    handleChangeState(){
+      this.is_pc = !this.is_pc;
+      localStorage.setItem('is_pc',this.is_pc)
+    },
     handleGo(type){
 switch (type){
   case 1:

+ 11 - 1
src/views/cms.vue

@@ -54,7 +54,7 @@
     </div>
     <Modal  :closable="false" v-model="is_show" footer-hide>
       <div style="text-align: center">
-        <Button type="primary" style="height: 4rem;width: 8rem" @click="handleGO">{{ !qrState ? "扫码枪扫描" : "停止扫描"
+        <Button type="primary" style="height: 4rem;width: 8rem" @click="handleGO">{{ !qrState ? "开始扫描" : "停止扫描"
         }}</Button>
         <Button type="primary" style="height: 4rem;width: 8rem;margin-left:1rem" @click="handleGODel">清空扫描</Button>
         <!--        <Button type="primary" style="height: 4rem" @click="handleGoQr"-->
@@ -72,6 +72,7 @@ export default {
       is_show: false,
       qrState: false,
       target: [],
+      timer:null
     }
   },
   mounted() {
@@ -104,7 +105,16 @@ export default {
           this.target = []
           localStorage.removeItem('fyy_target')
           androidJs.startInventory();
+          this.timer=setTimeout(()=>{
+            androidJs.stopInventory();
+            this.qrState = false;
+            this.is_show = false;
+            localStorage.setItem('fyy_target', JSON.stringify(this.target))
+            this.target = []
+            this.$router.replace('/cms/refresh')
+          },180000)
         } else {
+          clearTimeout(this.timer);
           localStorage.removeItem('fyy_target')
           androidJs.stopInventory();
           this.is_show = false;

+ 0 - 76
src/views/inOut.vue

@@ -1,76 +0,0 @@
-<template>
-  <div style="height: 100vh;padding: 20px">
-    <div style="display: flex;justify-content: space-between;border: 1px solid #FFFFFF;color: #FFFFFF;padding: 15px;font-size: 20px;font-weight: bold;text-align: center;border-radius: 20px">
-      <div style="width: 20%">单号</div>
-      <div style="width: 30%">客户</div>
-      <div style="width: 10%">数量</div>
-      <div style="width: 20%">类型</div>
-      <div style="width: 20%">时间</div>
-    </div>
-    <div style="height: calc(100% - 60px);" id="dy">
-      <div v-for="(item,index) in list" :key="index" style="margin-top:20px;display: flex;justify-content: space-between;border: 1px solid #FFFFFF;color: #FFFFFF;padding: 15px;font-size: 20px;font-weight: bold;text-align: center;border-radius: 20px" >
-        <div style="width: 20%">{{item.order_no}}</div>
-        <div style="width: 30%">{{item.project}}</div>
-        <div style="width: 10%">{{item.num}}</div>
-        <div style="width: 20%" :class="item.type=='出库'?'isred':'isg'">{{item.type}}</div>
-        <div style="width: 20%">{{item['时间']}}</div>
-      </div>
-    </div>
-  </div>
-</template>
-<script>
-document.title = '出入库'
-
-export default {
-  data () {
-    return {
-      list:[],
-      time:null,
-    }
-  },
-  created () {
-  },
-  mounted () {
-    this.time = setInterval(()=>{
-      this.initData();
-    },3000)
-  },
-  destroyed () {
-    clearInterval(this.time)
-  },
-  methods: {
-    initData(){
-      this.axios.post('/api/testdwyget', {url: 'http://clouddevice.qingyaokeji.com/api/inout'}).then(res => {
-        if(res.data.data.length!=0){
-          this.list.unshift(res.data.data)
-          // var element = document.getElementById("dy");
-          // element.classList.add("dong");
-        }
-      })
-    }
-  }
-}
-</script>
-<style lang="scss" scoped>
-@keyframes example {
-  from {left: 600px}
-  to {left: 0px}
-}
-.isred{
-  color: red;
-}
-.isg{
-  color: #00ff33;
-}
-#dy{
-  overflow: auto;
-}
-#dy::-webkit-scrollbar{
-  width: 1px;
-}
-.dong:first-child{
-  position: relative;
-  animation-name: example;
-  animation-duration: .9s;
-}
-</style>

+ 27 - 20
src/views/page/Dispatch/detail.vue

@@ -344,9 +344,11 @@ export default {
     initData(row) {
       this.axios.post('/api/testdwyget', { ...row }).then(res => {
         // this.tableData.push(...res.data.data.exe_delivery_note_dtl_b);
-        this.data = res.data
-        this.detail = res.data.data.exe_delivery_note_b
-        console.log(this.detail)
+        res.data.data.exe_delivery_note_dtl_b.forEach(c=>{
+          c.this_delivery_qty -= c.out_qty_total?c.out_qty_total:0
+        })
+        this.data = res.data;
+        this.detail = res.data.data.exe_delivery_note_b;
         this.modalData.attachment = this.detail.attachment?this.detail.attachment:{attachFile: []};
         this.modalData.id_number = this.detail.id_number;
         this.modalData.carrier = this.detail.carrier;
@@ -358,8 +360,11 @@ export default {
           this.total_num = this.total_num + element.this_delivery_qty
           // this.transport_total = this.transport_total + element.out_qty
           let product_key = this.deelUniqueProductKey(element)
-          if(Object.keys(this.key_tableData).indexOf(product_key) !== -1) this.key_tableData[product_key].this_delivery_qty += element.this_delivery_qty
-          else this.key_tableData[product_key] = element
+          if(Object.keys(this.key_tableData).indexOf(product_key) !== -1){
+            this.key_tableData[product_key].this_delivery_qty += element.this_delivery_qty
+          } else{
+            this.key_tableData[product_key] = element
+          }
           // if (element.box_orders_show) {
           //   this.is_box_data.push(this.deelUniqueKey(element));
           // }
@@ -388,7 +393,7 @@ export default {
           }
         })
         localStorage.setItem('text', JSON.stringify(text1));
-        text1 = ['BZ00280','BZ00281']
+        // text1 = ['BZ00520']
         const dataBox = {
           url: 'http://122.112.250.253:7774/jbl/api/module-data/box_orders/box_orders/diy/defective_order_no_list',
           post: { "defective_order_no_list":text1}
@@ -408,7 +413,7 @@ export default {
       this.axios.post('/api/testdwy', { ...row }).then(res => {
         if (res.code == 200) {
           this.$Message.success('请求成功!')
-          res.data.data.forEach((element, index) => {
+          res.data.data.filter(v=>!v.box_orders.delivery_status).forEach((element, index) => {
             element.product_code = element.product_no
             let object = {
               "order_item_id": element.order_item_id,
@@ -447,7 +452,8 @@ export default {
         // console.log(element,1)
         // console.log(this.key_tableData,2)
         // console.log(this.deelUniqueProductKey(element),3)
-        if (element.order_no==this.detail.order_no&&Object.keys(this.key_tableData).indexOf(this.deelUniqueProductKey(element)) !== -1 && (this.key_tableData[this.deelUniqueProductKey(element)].this_delivery_qty - element.box_num) >= 0) {
+        // console.log(this.detail.order_no)
+        if (this.detail.order_no.indexOf(element.order_no)!=-1&&Object.keys(this.key_tableData).indexOf(this.deelUniqueProductKey(element)) !== -1 && (this.key_tableData[this.deelUniqueProductKey(element)].this_delivery_qty - element.box_num) >= 0) {
           let table_data_detail = JSON.parse(JSON.stringify(this.key_tableData[this.deelUniqueProductKey(element)]))
           table_data_detail.box_orders = element.box_id
           table_data_detail.box_orders_show = element.box_no
@@ -459,8 +465,8 @@ export default {
           this.scan_num += element.box_num*1
           // is_scan_key[this.deelUniqueProductKey(element)]=1;
           // table_data_detail.this_delivery_qty =  this.key_tableData[this.deelUniqueProductKey(element)].this_delivery_qty;
-          table_data_detail.id = null;
-
+          // table_data_detail.n_id = element.id;
+          // table_data_detail.id = null;
           this.new_table_data.push(table_data_detail)
         } else {
           this.error_data.push(element);
@@ -484,7 +490,7 @@ export default {
       const date = new Date()
       // eslint-disable-next-line camelcase
       const now_time = date.toISOString()
-      this.data = {
+      let data = {
         // auditInfo: null,
         bizId: -1,
         bizTypeEk: 'LOWCODE',
@@ -505,7 +511,7 @@ export default {
           send_goods_out_product: []
         }
       }
-      this.data.data.send_goods_out = {
+      data.data.send_goods_out = {
         send_goods_out_no: null,
         in_out_type: 'CK007',
         box_title: 'WH05001',
@@ -538,7 +544,6 @@ export default {
         out_employee_id_show: this.name,
         delivery_method_dk_show: this.detail.delivery_method_dk_show,
         area_selection_show: this.detail.area_selection_show,
-
         // attachment: null,
         // dynamic_form_value_id: this.detail.dynamic_form_value_id,
         // expect_date_arrival_lt: this.detail.expect_date_arrival_lt,
@@ -554,7 +559,6 @@ export default {
         // status_show: '待审核'
       }
       this.new_table_data.forEach((element,index) =>{
-        // console.log(element)
         let box_detail = {
           item_num: (index + 1),
           product_code: element.box_detail.product_code,
@@ -571,9 +575,10 @@ export default {
           process_title_two: element.box_detail.process_title_two,
           color_two: element.box_detail.color_two,
           bus_no: this.detail.no,
-          bus_id: element.bus_id,
-          bus_item_id: element.bus_item_id,
+          bus_id: this.detail.id,
+          bus_item_id: element.id,
           bus_item_no: element.item_no,
+          box_orders_product_id:element.box_detail.id,
           order_no: element.box_detail.order_no,
           out_qty: element.out_qty,
           this_delivery_qty: element.out_qty,
@@ -594,15 +599,17 @@ export default {
           // main_table_id: "491138208583917568",
           // request_id: null,
         }
-        this.data.data.send_goods_out_product.push(box_detail)
+        data.data.send_goods_out_product.push(box_detail)
       })
       // console.log(this.data)
       // return false
       // this.data.data.send_goods_out = this.tableData
       // this.data.data.send_goods_out_product = this.tableData
-      let data = {
+      // console.log(this.data)
+      // return
+      let data2 = {
         url: 'http://122.112.250.253:7774/jbl/api/module-data/send_goods_out/send_goods_out',
-        post: this.data
+        post: data
       }
       let data1 ={
         url: 'http://122.112.250.253:7774/jbl/api/module-data/box_orders/box_orders/diy/update_delivery_status',
@@ -612,7 +619,7 @@ export default {
       }
       if(this.state){
         this.state = false
-        this.axios.post('/api/testdwy', data).then(res => {
+        this.axios.post('/api/testdwy', data2).then(res => {
           if (res.code === 200) {
             this.axios.post('/api/testdwy', data1).then(req=>{
               if(req.code === 200){

+ 1 - 1
src/views/page/Finish/detail.vue

@@ -130,7 +130,7 @@ export default {
     }
     this.tableData = []
     // // const fyyTarget = ('PG2023081000025,PG2023081000024').split(',')
-    // text=['PG2023102800821']
+    // text = ['PG2023112700410','PG2023112700409']
     text.forEach(v => {
       const data = {
         url: 'http://122.112.250.253:7774/jbl/api/module-data/dispatch_orders/page',

+ 6 - 2
src/views/page/Finish/detailed.vue

@@ -402,11 +402,14 @@ export default {
       if(!arr1.every(c=>c.color_code)){
         return this.$Message.warning('不良品花色1必选!')
       }
+
+      // console.log(this.list);
+      // return
       if(this.state){
         this.state = false
         this.list.forEach((v, index) => {
           v.not_finished_num = v.not_finished_num - v.finished_num
-          const data3 = {
+          let data3 = {
             url: 'http://122.112.250.253:7774/jbl/api/module-data/completion_orders/completion_orders',
             post: {
               bizId: -1,
@@ -430,7 +433,8 @@ export default {
                   remark: null,
                   site: null,
                   team_id: v.team_finish_id,
-                  team_id_show: v.team_id_show
+                  team_id_show: v.team_id_show,
+                  finished_num_total:v.finished_num
                 },
                 completion_orders_dtl: [v]
               }

+ 2 - 2
src/views/page/Finish/index.vue

@@ -43,10 +43,10 @@ export default {
   created () {
     const data = {
       url: 'http://122.112.250.253:7774/jbl/api/module-data/delivery_note_list/page',
-      post:{"direction":"DESC","property":"id","fromClientType":"pc","number":0,"sorts":[],"rules":[],"size":15,"specialConditions":[],"dynamicFormCode":"delivery_note","developmentSystemId":null,"debugFlag":false}
+      post:{"direction":"DESC","property":"id","fromClientType":"pc","number":0,"sorts":[],"rules":[],"size":999,"specialConditions":[],"dynamicFormCode":"delivery_note","developmentSystemId":null,"debugFlag":false}
     }
     this.axios.post('/api/testdwy', { ...data }).then(res => {
-      this.options = res.data.content
+      this.options = res.data.content.filter(v=>v.status_dk==="NOT_APPROVED")
       this.options.forEach(v => {
         v.value = v.dynamic_form_value_id
         v.text = v.no

+ 1 - 1
src/views/page/Inventory/index.vue

@@ -44,7 +44,7 @@ export default {
   created () {
     const data = {
       url: 'http://122.112.250.253:7774/jbl/api/module-data/goods_check_list/page',
-      post:{"direction":"DESC","property":"id","fromClientType":"pc","number":0,"sorts":[],"rules":[],"size":15,"specialConditions":[],"dynamicFormCode":"goods_check","developmentSystemId":null,"debugFlag":true}
+      post:{"direction":"DESC","property":"id","fromClientType":"pc","number":0,"sorts":[],"rules":[],"size":99,"specialConditions":[],"dynamicFormCode":"goods_check","developmentSystemId":null,"debugFlag":true}
     }
     this.axios.post('/api/testdwy', { ...data }).then(res => {
       this.options = res.data.content.filter(v => v.status === "NOT_APPROVED")

+ 1 - 1
src/views/page/Package/index.vue

@@ -43,7 +43,7 @@ export default {
   created () {
     const data = {
       url: 'http://122.112.250.253:7774/jbl/api/module-data/exe_sale_order_b/page',
-      post:{"direction":"DESC","property":"id","fromClientType":"pc","number":0,"sorts":[],"rules":[],"size":15,"specialConditions":[],"dynamicFormCode":"exe_sale_order_b","developmentSystemId":null,"debugFlag":false}
+      post:{"direction":"DESC","property":"id","fromClientType":"pc","number":0,"sorts":[],"rules":[],"size":99,"specialConditions":[],"dynamicFormCode":"exe_sale_order_b","developmentSystemId":null,"debugFlag":false}
     }
     this.axios.post('/api/testdwy', { ...data }).then(res => {
       this.options = res.data.content

+ 98 - 27
src/views/page/print.vue

@@ -10,14 +10,42 @@
     </div>
     <div class="bdy">
      <div v-for="(item,index) in list" :key="index" :class="item.is_choose?'choose_item':'item'" @click="handleClick(index)">
-       <div style="margin-bottom:10px">
-         <span>{{item.dispatch_no?'派工单号:':'包装单号:'}}</span>
-         <span>{{item.dispatch_no?item.dispatch_no:item.box_no}}</span>
+       <div style="margin-bottom:10px;width: 50%">
+         <span style="width: 80px;display: inline-block;text-align: right;padding: 0 5px 0 0">{{item.dispatch_no?'派工单号:':item.box_no?'包装单号:':'工艺卡号:'}}</span>
+         <span>{{item.dispatch_no?item.dispatch_no:item.box_no?item.box_no:item.flow_card_no}}</span>
+       </div>
+       <div style="margin-bottom:10px;width: 50%">
+         <span style="width: 80px;display: inline-block;text-align: right;padding: 0 5px 0 0">订单号:</span>
+         <span>{{item.order_number}}</span>
+       </div>
+       <div style="margin-bottom:10px;width: 50%">
+         <span style="width: 80px;display: inline-block;text-align: right;padding: 0 5px 0 0">供应商:</span>
+         <span>{{item.dealer}}</span>
+       </div>
+       <div style="margin-bottom:10px;width: 50%">
+         <span style="width: 80px;display: inline-block;text-align: right;padding: 0 5px 0 0">客户名称:</span>
+         <span>{{item.customer}}</span>
+       </div>
+       <div style="margin-bottom:10px;width: 50%">
+         <span style="width: 80px;display: inline-block;text-align: right;padding: 0 5px 0 0">产品名称:</span>
+         <span style="width: calc(100% - 100px);display: inline-block">{{item.product_title}}</span style="width: calc(100% - 100px);display: inline-block">
+       </div>
+       <div style="margin-bottom:10px;width: 50%">
+         <span style="width: 80px;display: inline-block;text-align: right;padding: 0 5px 0 0">花色:</span>
+         <span>{{item.color}}</span>
+       </div>
+       <div style="margin-bottom:10px;width: 50%">
+         <span style="width: 80px;display: inline-block;text-align: right;padding: 0 5px 0 0">工艺:</span>
+         <span>{{item.process}}</span>
+       </div>
+       <div style="margin-bottom:10px;width: 50%">
+         <span style="width: 80px;display: inline-block;text-align: right;padding: 0 5px 0 0">数量:</span>
+         <span>{{item.num}}</span>
+       </div>
+       <div style="margin-bottom:10px;width: 50%">
+         <span style="width: 80px;display: inline-block;text-align: right;padding: 0 5px 0 0">打印状态:</span>
+         <span>{{item.print_status?'已打印':'未打印'}}</span>
        </div>
-<!--       <div>-->
-<!--         <span>派工单号:</span>-->
-<!--         <span>{{item.dispatch_no}}</span>-->
-<!--       </div>-->
      </div>
     </div>
   </div>
@@ -31,7 +59,8 @@ export default {
     return {
       list: [],
       selectData: [],
-      state: true
+      state: true,
+      type:0
     }
   },
   mounted () {
@@ -43,6 +72,13 @@ export default {
       // eslint-disable-next-line no-return-assign
       this.list.forEach(v => v.is_choose = true)
       this.selectData = JSON.parse(JSON.stringify(this.list))
+      if (this.list[0].dispatch_no) {
+        this.type = 1
+      } else if (this.list[0].box_no) {
+        this.type = 2
+      } else {
+        this.type = 3
+      }
     }
   },
   methods: {
@@ -88,8 +124,8 @@ export default {
           v.color1 = v.color && v.color.length > 12 ? v.color.slice(0,12):v.color.slice(0)
           v.color2 = v.color && v.color.length > 12 ? v.color.slice(12):''
           // v.num = '120'
-          v.order_no = v.dispatch_no ? v.dispatch_no : v.box_no
-          v.is_s = v.dispatch_no ? true :false
+          v.order_no = v.dispatch_no ? v.dispatch_no : v.box_no ? v.box_no : v.flow_card_no
+          v.is_s = v.dispatch_no||v.flow_card_no ? true :false
           let cont = (this.func.stringToHex(v.order_no).length)%4;
           v.chip = this.func.stringToHex(v.order_no)
           for(let i = 0;i<cont;i++){
@@ -114,8 +150,8 @@ export default {
               v.color2 ? { PTK_DrawText_TrueType: `300,320,50,0,微软雅黑,1,700,0,0,0,${v.color2}` } : {},
               { PTK_DrawText_TrueType: '700,270,60,0,微软雅黑,1,700,0,0,0,数量:' },
               { PTK_DrawText_TrueType: `820,270,60,0,微软雅黑,1,700,0,0,0,${v.num}` },
-              { PTK_DrawText_TrueType: `130,370,60,0,微软雅黑,1,700,0,0,0,${v.is_s ? '派工单号:' : '包装单号:'}` },
-              { PTK_DrawText_TrueType: `330,370,60,0,微软雅黑,1,700,0,0,0,${v.dispatch_no ? v.dispatch_no:v.box_no}` },
+              { PTK_DrawText_TrueType: `130,370,60,0,微软雅黑,1,700,0,0,0,${v.dispatch_no ? '派工单号:' : v.box_no ? '包装单号:' : '工艺卡号'}` },
+              { PTK_DrawText_TrueType: `330,370,60,0,微软雅黑,1,700,0,0,0,${v.dispatch_no ? v.dispatch_no : v.box_no ? v.box_no : v.flow_card_no}` },
               !v.is_s ? { PTK_DrawText_TrueType: '700,370,60,0,微软雅黑,1,700,0,0,0,包装日期:' } : {},
               !v.is_s ? { PTK_DrawText_TrueType: `900,370,60,0,微软雅黑,1,700,0,0,0,${v.box_date}` } : {},
               v.is_s ? { PTK_DrawText_TrueType: '760,370,60,0,微软雅黑,1,700,0,0,0,经销商:' } : {},
@@ -137,8 +173,8 @@ export default {
               v.color2 ? { PTK_DrawText_TrueType: `300,775,50,0,微软雅黑,1,700,0,0,0,${v.color2}` } : {},
               { PTK_DrawText_TrueType: '700,725,60,0,微软雅黑,1,700,0,0,0,数量:' },
               { PTK_DrawText_TrueType: `820,725,60,0,微软雅黑,1,700,0,0,0,${v.num}` },
-              { PTK_DrawText_TrueType: `130,825,60,0,微软雅黑,1,700,0,0,0,${v.is_s ? '派工单号:' : '包装单号:'}` },
-              { PTK_DrawText_TrueType: `330,825,60,0,微软雅黑,1,700,0,0,0,${v.dispatch_no ? v.dispatch_no : v.box_no}` },
+              { PTK_DrawText_TrueType: `130,825,60,0,微软雅黑,1,700,0,0,0,${v.dispatch_no ? '派工单号:' : v.box_no ? '包装单号:' : '工艺卡号'}` },
+              { PTK_DrawText_TrueType: `330,825,60,0,微软雅黑,1,700,0,0,0,${v.dispatch_no ? v.dispatch_no : v.box_no ? v.box_no : v.flow_card_no}` },
               !v.is_s ? { PTK_DrawText_TrueType: '700,825,60,0,微软雅黑,1,700,0,0,0,包装日期:' } : {},
               !v.is_s ? { PTK_DrawText_TrueType: `900,825,60,0,微软雅黑,1,700,0,0,0,${v.box_date}` } : {},
               v.is_s ? { PTK_DrawText_TrueType: '760,825,60,0,微软雅黑,1,700,0,0,0,经销商:' } : {},
@@ -163,8 +199,8 @@ export default {
               v.color2 ? { PTK_DrawText_TrueType: `200,320,50,0,微软雅黑,1,700,0,0,0,${v.color2}` } : {},
               { PTK_DrawText_TrueType: '600,270,60,0,微软雅黑,1,700,0,0,0,数量:' },
               { PTK_DrawText_TrueType: `720,270,60,0,微软雅黑,1,700,0,0,0,${v.num}` },
-              { PTK_DrawText_TrueType: `30,370,60,0,微软雅黑,1,700,0,0,0,${v.is_s ? '派工单号:' : '包装单号:'}` },
-              { PTK_DrawText_TrueType: `230,370,60,0,微软雅黑,1,700,0,0,0,${v.dispatch_no ? v.dispatch_no:v.box_no}` },
+              { PTK_DrawText_TrueType: `30,370,60,0,微软雅黑,1,700,0,0,0,${v.dispatch_no ? '派工单号:' : v.box_no ? '包装单号:' : '工艺卡号'}` },
+              { PTK_DrawText_TrueType: `230,370,60,0,微软雅黑,1,700,0,0,0,${v.dispatch_no ? v.dispatch_no : v.box_no ? v.box_no : v.flow_card_no}` },
               !v.is_s ? { PTK_DrawText_TrueType: '600,370,60,0,微软雅黑,1,700,0,0,0,包装日期:' } : {},
               !v.is_s ? { PTK_DrawText_TrueType: `800,370,60,0,微软雅黑,1,700,0,0,0,${v.box_date}` } : {},
               v.is_s ? { PTK_DrawText_TrueType: '660,370,60,0,微软雅黑,1,700,0,0,0,经销商:' } : {},
@@ -186,8 +222,8 @@ export default {
               v.color2 ? { PTK_DrawText_TrueType: `200,775,50,0,微软雅黑,1,700,0,0,0,${v.color2}` } : {},
               { PTK_DrawText_TrueType: '600,725,60,0,微软雅黑,1,700,0,0,0,数量:' },
               { PTK_DrawText_TrueType: `720,725,60,0,微软雅黑,1,700,0,0,0,${v.num}` },
-              { PTK_DrawText_TrueType: `30,825,60,0,微软雅黑,1,700,0,0,0,${v.is_s ? '派工单号:' : '包装单号:'}` },
-              { PTK_DrawText_TrueType: `230,825,60,0,微软雅黑,1,700,0,0,0,${v.dispatch_no ? v.dispatch_no : v.box_no}` },
+              { PTK_DrawText_TrueType: `30,825,60,0,微软雅黑,1,700,0,0,0,${v.dispatch_no ? '派工单号:' : v.box_no ? '包装单号:' : '工艺卡号'}` },
+              { PTK_DrawText_TrueType: `230,825,60,0,微软雅黑,1,700,0,0,0,${v.dispatch_no ? v.dispatch_no : v.box_no ? v.box_no : v.flow_card_no}` },
               !v.is_s ? { PTK_DrawText_TrueType: '600,825,60,0,微软雅黑,1,700,0,0,0,包装日期:' } : {},
               !v.is_s ? { PTK_DrawText_TrueType: `800,825,60,0,微软雅黑,1,700,0,0,0,${v.box_date}` } : {},
               v.is_s ? { PTK_DrawText_TrueType: '660,825,60,0,微软雅黑,1,700,0,0,0,经销商:' } : {},
@@ -210,9 +246,36 @@ export default {
             // _this.getChipDetail();
             if (result.retval == "0") {
               _this.$Message.success("发送成功");
-              setTimeout(()=>{
-                this.close()
-              },200)
+              let dataq = {}
+              if(_this.type==1){
+                dataq = {
+                  post:{
+                    dispatch_no_list:_this.selectData.map(v=>v.dispatch_no)
+                  },
+                  url:'http://122.112.250.253:7774/jbl/api/module-data/dispatch_orders/dispatch_orders/diy/update_print_status'
+                }
+              }else if(_this.type==2){
+                dataq = {
+                  post:{
+                    defective_order_no_list:_this.selectData.map(v=>v.box_no)
+                  },
+                  url:'http://122.112.250.253:7774/jbl/api/module-data/box_orders/box_orders/diy/update_print_status'
+                }
+              }else {
+                dataq = {
+                  post:{
+                    flow_card_no_list:_this.selectData.map(v=>v.flow_card_no)
+                  },
+                  url:'http://122.112.250.253:7774/jbl/api/module-data/process_flow_card/process_flow_card/diy/update_print_status'
+                }
+              }
+              _this.axios.post('/api/testdwy', dataq).then(res => {
+                if (res.code === 200) {
+                  setTimeout(()=>{
+                    _this.close()
+                  },200)
+                }
+              })
             } else {
               _this.$Message.error("发送失败,返回结果:" + result.msg);
             }
@@ -254,20 +317,24 @@ align-items: center;
   box-shadow: inset 0 0 6px rgba(0,0,0,.3);
 }
 .choose_item{
+  display: flex;
+  flex-wrap: wrap;
 cursor: pointer;
   border-radius: 20px;
   background: #ffffff;
-  color: black;
-  display: flex;
-  align-items: center;
+  color: #545353;
   padding: 10px;
   margin: 20px 0 20px 2.5%;
   width: 30%;
-  height: 80px;
+  height: 200px;
+>div{
+  display: flex;
+
+}
 }
 .item{
   display: flex;
-align-items: center;
+  flex-wrap: wrap;
   cursor: pointer;
   border: 1px solid #797878;
   color: #797878;
@@ -275,6 +342,10 @@ align-items: center;
   padding: 10px;
   margin: 20px 0 20px 2.5%;
   width: 30%;
-  height: 80px;
+  height: 200px;
+  >div{
+    display: flex;
+
+  }
 }
 </style>

+ 24 - 0
utils/util.js

@@ -16,5 +16,29 @@ export default {
     // 将字节数组转换为字符串
     var str = new TextDecoder().decode(new Uint8Array(byteArray))
     return str
+  },
+  replaceDate(str, flag) {
+    //时间戳转换
+    if (str) {
+      str = str.toString().length == 10 ? str * 1000 : str;
+      let now = str ? new Date(str) : new Date(),
+        y = now.getFullYear(),
+        m = now.getMonth() + 1,
+        d = now.getDate();
+      if (flag) {
+        return y + '-' + (m < 10 ? '0' + m : m) + '-' + (d < 10 ? '0' + d : d);
+      }
+      return (
+        y +
+        '-' +
+        (m < 10 ? '0' + m : m) +
+        '-' +
+        (d < 10 ? '0' + d : d) +
+        ' ' +
+        now.toTimeString().substr(0, 8)
+      );
+    } else {
+      return null;
+    }
   }
 }

Някои файлове не бяха показани, защото твърде много файлове са промени