Преглед изворни кода

部分BUG修复,排序组件js保留(未完善)

Zhouzhendong пре 5 година
родитељ
комит
88f23e79bd

+ 29 - 5
app/Http/Controllers/ProcessController.php

@@ -273,6 +273,7 @@ class ProcessController extends Controller
     private function countRemains($processDaily){
         if (!$processDaily || !$processDaily->process) return;
         $processDailies=ProcessDaily::where('process_id',$processDaily->process_id)->orderBy('date')->get();
+        $completed_amount = 0;
         for ($i=0;$i<count($processDailies);$i++){
             if ($i==0&&$processDailies[$i]->date>=$processDaily->date){
                 $processDailies[$i]->remain=($processDaily->process->amount)-$processDailies[$i]->output;
@@ -282,8 +283,9 @@ class ProcessController extends Controller
                 $processDailies[$i]->remain=($processDailies[$i-1]->remain)-$processDailies[$i]->output;
                 $processDailies[$i]->update();
             }
+            $completed_amount += $processDailies[$i]->output;
         }
-
+        if ($completed_amount) Process::query()->where('id',$processDaily->process_id)->update(['completed_amount'=>$completed_amount]);
         //同步二次加工单统计
         $processDailiesStatistic=$processDailies->where('output','>',0);
         $processStatistic=ProcessStatistic::find($processDaily->process_id);    //如非录入渠道建单不生成统计单,报错
@@ -696,9 +698,9 @@ class ProcessController extends Controller
     /**
      * Update the specified resource in storage.
      *
-     * @param  \Illuminate\Http\Request  $request
+     * @param  Request  $request
      * @param  int  $id
-     * @return \Illuminate\Http\Response
+     * @return array
      */
     public function update(Request $request, $id)
     {
@@ -748,17 +750,39 @@ class ProcessController extends Controller
                 if ($processContent['type'])$processContentOne->type='成品单';
                 $processContentOne->save();
                 if (isset($processContent['is_update_commodity_name'])){
-                    Sign::create([
+                    Sign::query()->updateOrCreate([
+                        'signable_type'=>'processes_contents',
+                        'signable_id'=>$processContentOne->id,
+                        'field'=>'commodity_name',
+                    ],[
                         'signable_type'=>'processes_contents',
                         'signable_id'=>$processContentOne->id,
                         'field'=>'commodity_name',
                         'mark'=>$processContent['commodity_name'],
                     ]);
                 }
+                if (isset($processContent['commodity_barcode'])){
+                    CommodityBarcode::query()->firstOrCreate([
+                            'commodity_id'=>$processContent['commodity_id'],
+                            'code'=>$processContent['commodity_barcode']]
+                    );
+                }
+                if (isset($processContent['is_update_commodity_sku'])){
+                    Sign::query()->updateOrCreate([
+                        'signable_type'=>'processes_contents',
+                        'signable_id'=>$processContentOne->id,
+                        'field'=>'commodity_sku',
+                    ],[
+                        'signable_type'=>'processes_contents',
+                        'signable_id'=>$processContentOne->id,
+                        'field'=>'commodity_sku',
+                        'mark'=>$processContent['commodity_sku'],
+                    ]);
+                }
             }
         }
         $this->log(__METHOD__,"编辑二次加工单_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
-        return;
+        return ['success'=>true];
     }
 
     //删除二次加工内容单            弃用,保留,改为全部提交后一次性验证,不在操作时就允许删除

+ 62 - 0
resources/js/queryForm/header.js

@@ -0,0 +1,62 @@
+require('../utilities/sort.js');
+const header = function (object) {
+    this._header = object.el || '#header';
+    this._column = object.column;
+    this._data = object.data;
+
+    let _this = this;
+    let _parentNode = $(_this._header);
+    let sortType = {};
+    let columnArr = [];
+    // form fixed
+    function parentNodeFloat() {
+        let _parentNode_top = _parentNode.offset().top;
+        let height = _parentNode.height();
+        window.onscroll = function () {
+            let scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
+            if (scrollTop > _parentNode_top) {
+                _parentNode.addClass('fixed-top');
+                _parentNode.height(height);
+            } else {
+                _parentNode.removeClass('fixed-top');
+            }
+        }
+    }
+
+    /**
+     * column :{customization : null || bool   --是否自定义
+     *          dom : null || element           --自定义元素
+     *          style :  null || string         --样式
+     *          name : null || string           --字段名,英文
+     *          value : string                  --列名
+     *          neglect : null || bool          --是否忽略排序
+     *         }
+     * */
+    function append() {
+        _this._column.forEach(function (column) {
+            if (column.customization){
+                _parentNode.append(column.dom);
+            }else{
+                let _td = "<th";
+                if (column.style) _td += " style='"+column.style+"'"
+                _td += ">"+column.value;
+                _td += "</th>";
+                _parentNode.append(_td);
+                if (!column.neglect){
+                    $(_td).click(function () {
+                        if (!sortType[column.name]){
+                            sortType[column.name] = 'asc';
+                            columnArr.push(column.name);
+                        }
+                        if (sortType[column.name] === 'asc') sortType[column.name] = 'desc';
+                        if (sortType[column.name] === 'desc'){
+                            delete sortType[column.name];
+                            delete columnArr[column.name];
+                        }
+                        sort(_this._data,columnArr,sortType);
+                    });
+                }
+            }
+        });
+    }
+};

+ 12 - 12
resources/js/utilities/sort.js

@@ -1,6 +1,6 @@
 var result = [];
-var type = true;
-function sort(array , column , i) {
+var type = {};
+function parse(array , column , i) {
     let data = {};
     data['0']='';data['1']='';data['2']='';data['3']='';data['4']='';data['5']='';data['6']='';data['7']='';data['8']='';
     data['9']='';data['a']='';data['b']='';data['c']='';data['d']='';data['e']='';data['f']='';data['g']='';data['h']='';
@@ -30,33 +30,33 @@ function sort(array , column , i) {
     if (recursion.length > 0){
         i++;
         recursion.forEach(function (key) {
-            data[key] = this.sort(data[key] ,column , i);
+            data[key] = this.parse(data[key] ,column , i);
         });
     }
     return data;
 }
 
-function sortInit(array, column ,type='up', i=0 ) {
+function sort(array, column ,type, i=0 ) {
     result = [];
+    this.type = type;
     if (!Array.isArray(column)) column = [column];
-    if (type === 'up') this.type = true;
-    else this.type = false;
     let columnName = column[0];
     column.splice(0,1);
-    merge(sort(array, columnName, i), column);
-    return result;
+    merge(parse(array, columnName, i), column, columnName);
+    array.length = 0;
+    array.push.apply(array,result);
 }
 
-function merge(object, subordinate = []) {
+function merge(object, subordinate = [] ,columnName = '') {
     for (let key in object){
         if (Array.isArray(object[key])){
             if (object[key].length > 1 && subordinate.length > 0){
                 let subordinateName = subordinate[0];
                 subordinate.splice(0,1);
-                object[key] = merge(sort(object[key], subordinateName, 0), subordinate);
+                object[key] = merge(parse(object[key], subordinateName, 0), subordinate, subordinateName);
             }
-            if (this.type) result.push.apply(result,object[key]);
+            if (this.type[columnName] === 'asc') result.push.apply(result,object[key]);
             else result.unshift.apply(result,object[key]);
-        }else merge(object[key]);
+        }else merge(object[key], [] ,columnName);
     }
 }

+ 3 - 7
resources/views/process/create.blade.php

@@ -402,21 +402,18 @@
                 deleteProcessContent(wms_code,commodity_id,type,amount){
                     let _this=this;
                     let deleteData=[];
-                    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;
+                    if (!type) _this.sum -= amount;
                     deleteData.forEach(function (data) {
                         _this.processContents.splice(data,1);
                     });
@@ -574,7 +571,7 @@
                     content['type'] = type ;
                     this.processContents.unshift(content);
                     this.commodityIds.push(commodity.id+"_"+content['type']);
-                    this.sum += Number(commodity.amount);
+                    if (!type) this.sum += Number(commodity.amount);
                     return content;
                 },
                 //添加所有
@@ -589,7 +586,6 @@
                                 contentTemp['type'] = true;
                                 _this.processContents.unshift(contentTemp);
                                 _this.commodityIds.push(commodity.id+"_"+contentTemp['type']);
-                                _this.sum += Number(commodity.amount);
                             }
                         }
                     });
@@ -624,7 +620,7 @@
                                     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);
+                                        if (!processContent.type) sum += Number(processContent.amount);
                                     }
                                 });
                                 _this.sum += sum;

+ 25 - 15
resources/views/process/edit.blade.php

@@ -37,15 +37,15 @@
                                     </span>
                                 </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" v-model="processContents[0].commodity_name" @input="update_commodity_name(processContents[0])">
+                                    <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>
-                                    <ul class="p-0 m-0 ml-2 list-unstyled list-inline" v-if="processContents.length>0 && processContents[0].addBtnShow && !processContents[0].type && processContents[0].commodity_barcodes && processContents[0].commodity_barcodes.length>0">
-                                        <li v-for="barcode in processContents[0].commodity_barcodes"><small>&nbsp;&nbsp;@{{ barcode.code }}</small></li>
-                                    </ul>
+                                    <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>
-                                    <b v-if="processContents.length>0 && processContents[0].addBtnShow && !processContents[0].type" class="col-8">@{{ processContents[0].commodity_sku }}</b></div>
+                                    <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">
+                                </div>
                                 <div class="row pt-2 small"><label class="col-3  text-right">单据类型</label>
                                     <select v-if="processContents.length>0 && processContents[0].addBtnShow && !processContents[0].type"
                                             v-model="processContents[0].bill_type"  class="col-8 form-control form-control-sm">
@@ -81,8 +81,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+'_'+false]" @click="deleteProcessContent(processContent.wms_code,processContent.commodity_id,false)" class="btn btn-sm btn-danger" style="position: absolute;right: 0;bottom: 0">删除</button>
                                     </div>
                                 </div>
@@ -114,15 +116,15 @@
                                     </span>
                                 </div>
                                 <div class="row pt-2 small"><label class="col-3  text-right">商品名</label>
-                                    <b v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].type" class="col-8">@{{ processContents[0].commodity_name }}</b>
+                                    <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>
-                                    <ul class="p-0 m-0 ml-2 list-unstyled list-inline" v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].type && processContents[0].commodity_barcodes && processContents[0].commodity_barcodes.length>0">
-                                        <li v-for="barcode in processContents[0].commodity_barcodes"><small>&nbsp;&nbsp;@{{ barcode.code }}</small></li>
-                                    </ul>
+                                    <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>
-                                    <b v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].type" class="col-8">@{{ processContents[0].commodity_sku }}</b></div>
+                                    <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">
+                                </div>
                                 <div class="row pt-2 small"><label class="col-3  text-right">单据类型</label>
                                     <select v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].type"
                                             v-model="processContents[0].bill_type"  class="col-8 form-control form-control-sm">
@@ -158,8 +160,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)" class="btn btn-sm btn-danger" style="position: absolute;right: 0;bottom: 0">删除</button>
                                     </div>
                                 </div>
@@ -435,7 +439,13 @@
                     else this.$set(this.is_delBtn,wms_code+'_'+commodity_id+'_'+type,false);
                 },
                 update_commodity_name(processContent){
-                  this.$set(processContent,'is_update_commodity_name',true);
+                    this.$set(processContent,'is_update_commodity_name',true);
+                },
+                update_commodity_barcode(processContent,e){
+                    this.$set(processContent,'commodity_barcode',e.target.value);
+                },
+                update_commodity_sku(processContent){
+                    this.$set(processContent,'is_update_commodity_sku',true);
                 },
             },
 

+ 2 - 1
resources/views/process/index.blade.php

@@ -159,7 +159,7 @@
             </div><!-- /.modal -->
         </div>
             <table class="table table-sm text-nowrap">
-                <tr class="row-even">
+                <tr class="row-even" id="header">
                     <th>
                         <label for="all">
                             <input id="all" type="checkbox" @click="checkAll($event)">全选
@@ -578,6 +578,7 @@
                 this.form = new query({
                     el:"#form_div",
                     condition:data,
+                    test : this.test,
                 });
                 this.form.init();
             },