瀏覽代碼

成品单在编辑条码时,失焦后条码会恢复,再编辑后,提交也是旧的
自动计算数量,在反复删除和一键导入后显示错误
在反复删除和一键导入后会出现录入复重不能提交的错误
(成品单据导入时,不会为已添加的记录增加删除线)
导入过的数据,删掉了再导入就会带着删除按钮(应当是在删除动作增加移出动作的标记逻辑)

Zhouzhendong 5 年之前
父節點
當前提交
141b4ba4e0
共有 2 個文件被更改,包括 26 次插入14 次删除
  1. 3 2
      app/Http/Controllers/ProcessController.php
  2. 23 12
      resources/views/process/create.blade.php

+ 3 - 2
app/Http/Controllers/ProcessController.php

@@ -930,8 +930,8 @@ class ProcessController extends Controller
         $processContents=[];
         $errors = [];
         foreach ($commodities as $i => $commodity){
-            if ($i==0 && mb_strpos($commodity,'货主') && mb_strpos($commodity,'品名')
-                && mb_strpos($commodity,'数量'))continue;
+            if ($i==0 && mb_strpos($commodity,'货主')!==false && mb_strpos($commodity,'品名')!==false
+                && mb_strpos($commodity,'数量')!==false)continue;
             $commodity = explode("\t",$commodity); //拆分列
             $head="第".($i+1)."行";
             if (count($commodity)<count($request->rows)){
@@ -956,6 +956,7 @@ class ProcessController extends Controller
                 }
                 if ($row == 'SKU'){
                     $commodityData['sku'] = $commodity[$index] ?? '';
+                    if (!$commodity[$index])array_push($errors[$head],"SKU为空");
                 }
                 if ($row == '品名'){
                     $commodityData['name'] = $commodity[$index] ?? '';

+ 23 - 12
resources/views/process/create.blade.php

@@ -14,7 +14,7 @@
                                 <div class="row modal-title font-weight-bold w-100 text-nowrap ml-1 noselect" id="pasteDataTitle">
                                     <span v-for="(row,i) in rows" draggable="true"
                                           @drop="drop($event,i)" @dragover="dragover($event)" @dragstart="dragstart($event,i)"
-                                          :class="row=='货主' || row=='品名' || row=='数量' ? 'text-danger' : ''"
+                                          :class="row=='货主' || row=='品名' || row=='数量' || row=='SKU' ? 'text-danger' : ''"
                                           class="col-2 border" style="cursor: move">@{{ row }}</span>
                                 </div>
                             </div>
@@ -138,7 +138,7 @@
                                     </span>
                                     <span class=" col-11 offset-1 input-group" style=" border-radius: 5px; opacity: 1.5; text-align: center;">
                                         <ul onselectstart="return false;" class="list-group tooltipTarget" style="width: 100%; max-height: 130px; overflow-y: scroll;">
-                                            <li  v-for="commodity in processContents[0].commodities" :id="commodity.id" :style="{'background-color':processContents[0].commodity_id==commodity.id ? '#9fcdff':''}"
+                                            <li  v-for="commodity in processContents[0].commodities" :id="commodity.id" :style="[{'background-color':processContents[0].commodity_id==commodity.id ? '#9fcdff':'' },{'text-decoration':commodityIds.includes(commodity.id+'_true')? 'line-through red' : ''}]"
                                                  @dblclick="selectedCommodity(commodity,processContents[0].wms_code,true)" class="list-group-item list-group-item-action p-0 m-0">
                                                 <div class="form-inline" style="cursor: default; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
                                                     <small :title="commodity.name" class="text-left text-info col-6" style="overflow: hidden;">@{{ commodity.name }}</small>
@@ -152,7 +152,8 @@
                                     <input v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].type" class="form-control form-control-sm col-8" @change="update_commodity_name(processContents[0])" v-model="processContents[0].commodity_name">
                                 </div>
                                 <div class="row pt-2 small"><label class="col-3  text-right">条码</label>
-                                    <input v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].type" class="form-control form-control-sm col-8" @change="update_commodity_barcode(processContents[0],$event)" :value="processContents[0].commodity_barcodes[0] ? processContents[0].commodity_barcodes[0].code :''">
+                                    <input v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].type" class="form-control form-control-sm col-8" @change="update_commodity_barcode(processContents[0],$event)" :value="processContents[0].commodity_barcode ? processContents[0].commodity_barcode :
+                                        (processContents[0].commodity_barcodes[0] ? processContents[0].commodity_barcodes[0].code :'')">
                                 </div>
                                 <div class="row pt-2 small"><label class="col-3  text-right">SKU</label>
                                     <input v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].type" class="form-control form-control-sm col-8" @change="update_commodity_sku(processContents[0])" v-model="processContents[0].commodity_sku">
@@ -192,8 +193,10 @@
                                         <span class="ml-2 font-weight-bold">数量:</span>
                                         <span class="font-weight-bold">@{{ processContent.amount }}</span>
                                         <span class="ml-2 text-muted">条码:</span>
-                                        <span class="text-muted"><small v-if="processContent.commodity_barcodes && processContent.commodity_barcodes.length>0"
-                                                                        v-for="barcode in processContent.commodity_barcodes">@{{ barcode.code }}</small></span>
+                                        <span class="text-muted">
+                                            <small v-if="processContent.commodity_barcode"> @{{ processContent.commodity_barcode }}</small>
+                                            <small v-if="processContent.commodity_barcodes && processContent.commodity_barcodes.length>0 && !processContent.commodity_barcode"
+                                                   v-for="barcode in processContent.commodity_barcodes">@{{ barcode.code }}</small></span>
                                         <button v-if="is_delBtn[processContent.wms_code+'_'+processContent.commodity_id+'_'+true]" @click="deleteProcessContent(processContent.wms_code,processContent.commodity_id,true,processContent.amount)" class="btn btn-sm btn-danger" style="position: absolute;right: 0;bottom: 0">删除</button>
                                     </div>
                                 </div>
@@ -399,23 +402,27 @@
                 deleteProcessContent(wms_code,commodity_id,type,amount){
                     let _this=this;
                     let deleteData=[];
-                    if (!type)_this.sum-= Number(amount);
+                    let sum = 0;
                     _this.processContents.some(function (processContent,i) {
                         if (processContent.wms_code===wms_code && processContent.commodity_id===commodity_id && processContent.type===type) {
                             deleteData.unshift(i);
+                            sum += Number(processContent.amount);
                             _this.commodityIds.splice(_this.commodityIds.indexOf(processContent.commodity_id+"_"+type),1);
                             if (type) return true;
                         }
                         if (!type && processContent.wms_code===wms_code && processContent.commodity_id===commodity_id && processContent.type===!type){
                             deleteData.unshift(i);
+                            sum += Number(processContent.amount);
                             _this.commodityIds.splice(_this.commodityIds.indexOf(processContent.commodity_id+"_"+!type),1);
                         }
                     });
+                    _this.sum -= sum;
                     deleteData.forEach(function (data) {
                         _this.processContents.splice(data,1);
                     });
+                    this.$delete(this.is_delBtn,wms_code+'_'+commodity_id+'_'+type);
                 },
-                /*//获取教程
+                {{--//获取教程
                 getTutorial(owner_id){
                     let _this=this;
                     axios.post("{{url('process/ownerGetTutorials')}}"+"/"+owner_id)
@@ -432,7 +439,7 @@
                         tempTip.setDuration(5000);
                         tempTip.show('获取教程失败!网络错误:'+err);
                         });
-                },*/
+                },--}}
                 //选择商品
                 selectedCommodity(commodity,wms_code,type){
                     let _this=this;
@@ -568,13 +575,14 @@
                     this.processContents.unshift(content);
                     this.commodityIds.push(commodity.id+"_"+content['type']);
                     this.sum += Number(commodity.amount);
+                    return content;
                 },
                 //添加所有
                 addAll(processContent){
                     let _this=this;
                     processContent.commodities.forEach(function (commodity) {
                         if (!_this.commodityIds.includes(commodity.id+"_"+false)){
-                            _this._add(processContent,commodity,false);
+                            let content = _this._add(processContent,commodity,false);
                             if (processContent.bill_type==='入库单' && !_this.commodityIds.includes(commodity.id+"_"+true)){
                                 let contentTemp={};
                                 Object.assign(contentTemp,content);
@@ -593,6 +601,7 @@
                     processContent.commodities.forEach(function (commodity) {
                         if (!_this.commodityIds.includes(commodity.id + "_" + true)) {
                             _this._add(processContent, commodity, true);
+                            _this.commodityIds.push(commodity.id+"_"+'true');
                         }
                     });
                     _this.$delete(_this.processContents,(_this.processContents.length)-1);
@@ -612,9 +621,11 @@
                             if (res.data.success){
                                 let sum=0;
                                 res.data.data.forEach(function (processContent) {
-                                    _this.processContents.unshift(processContent);
-                                    _this.commodityIds.push(processContent.commodity_id+"_"+processContent.type);
-                                    sum += Number(processContent.amount);
+                                    if (!_this.commodityIds.includes(processContent.commodity_id+"_"+processContent.type)){
+                                        _this.processContents.push(processContent);
+                                        _this.commodityIds.push(processContent.commodity_id+"_"+processContent.type);
+                                        sum += Number(processContent.amount);
+                                    }
                                 });
                                 _this.sum += sum;
                                 if (res.data.errors){