Selaa lähdekoodia

二次加工管理-录入与首页样式

Zhouzhendong 5 vuotta sitten
vanhempi
commit
7c8b634e40

+ 1 - 0
app/Http/Controllers/ProcessController.php

@@ -562,6 +562,7 @@ class ProcessController extends Controller
                 'wms_code'=>$processContent['wms_code'],
                 'amount'=>$processContent['amount'],
             ]);
+            if ($processContent['is_full'])$processContentOne->is_full='Y';
             $processContentOne->save();
             $this->log(__METHOD__,"录入二次加工单内容单".__FUNCTION__,json_encode($processContentOne),Auth::user()['id']);
         }

+ 0 - 108
app/Http/Controllers/TestController.php

@@ -179,114 +179,6 @@ class TestController extends Controller
             $authority->delete();
         });
     }
-    public function test1(){
-        $waybills=Waybill::select('id','wms_bill_number')->get();
-        foreach ($waybills as $waybill){
-            $orders=WMSWaybillOrder::where('OrderNo',$waybill->wms_bill_number)->get();
-            if (count($orders)>0){
-                $warehouseWeight=0;
-                $sign=false;
-                foreach ($orders as $order){
-                    $warehouseWeight+=$order->Cubic;
-                    if ($order->Cubic==0)$sign=true;
-                }
-                if ($sign)unset($warehouseWeight);
-            }
-            $waybill=Waybill::find($waybill->id);
-            if (isset($warehouseWeight)){
-                if ($waybill){
-                    $waybill->warehouse_weight=$warehouseWeight;
-                }
-            }else{
-                $waybill->warehouse_weight=null;
-                $waybill->warehouse_weight_unit_id=null;
-            }
-            $result+=$temp[$arr[$i]];
-            if ($sign)$sign=false;
-        }
-        if($result<1 || $result>3999)$result=0;
-        return $result;
-    }
-    public function test3()
-    {
-        $strs=["auibh","aopk","bikon"];
-        if (!$strs[0])return "";
-        $len=strlen($strs[0]);
-        for ($i=1;$i<count($strs);$i++){
-            if ($len<1)break;
-            for ($j=0;$j<$len;$j++){
-                if ($strs[$i][$j]!=$strs[0][$j]){
-                    if ($j==0)return "";
-                    break;
-                }
-                $sum=$j+1;
-            }
-            $len=isset($sum)?$sum:0;
-        }
-        return substr($strs[0],0,$len);
-    }
-    public function test4(){
-        $s="{([{()()[]{}}])[{()()[}]{}}](){[]}";
-        $map = [
-            ")" => "(",
-            "}" => "{",
-            "]" => "[",
-        ];
-
-        $len = strlen($s);
-        $stack = [];
-        if ($len%2!=0)dd(false);
-        //s中出现map的key则弹出,没有出现则入栈
-        for ($i =0; $i<$len; $i++) {
-            var_dump("data:".$s[$i]);
-            if (isset($map[$s[$i]])){
-                //s中出现map的key:如果能找到对应的map的值 (,{,[ 则说明有配对,则弹出
-                if (isset($stack)  && $stack[0] == $map[$s[$i]]) {
-                    array_shift($stack);
-                } else { //仅找到后面的一部分,说明是不匹配的
-                    dd(false);
-                }
-                var_dump("value1:".$map[$s[$i]]);
-                var_dump($stack);
-            } else {
-                array_unshift($stack, $s[$i]);
-                var_dump("value2:".$s[$i]);
-                var_dump($stack);
-            }
-        }
-
-        if (count($stack) > 0) {
-            dd(false);
-        }
-        dd(true);
-        //利用栈的先进后出 一个正确的括号组对应都为1对1或N对N
-        // 先进后出“([{”入栈,")]}"出栈,轮询到出栈元素去映射栈顶,符合出栈,不符合直接返回
-        //依次轮询 如果映射正确那么最后栈为空栈 否则返回false
-
-        /*
-        $r=[];
-        $sTemp=["("=>1,"["=>2,"{"=>3,")"=>-1,"]"=>-2,"}"=>-3];
-        for ($i=0;$i<strlen($s);$i++){
-            if ($i!=strlen($s)-1){
-                if (($sTemp[$s[$i]]+$sTemp[$s[$i+1]])==0){
-                    $i++;
-                    var_dump($s[$i],$i);
-                    continue;
-                }
-            }
-            array_push($r,$sTemp[$s[$i]]);
-        }
-        $sum=count($r);
-        if ($sum==0)return "a";
-        if ($sum%2!=0)return "b";
-        $svg=$sum/2;
-        for ($i=0;$i<$svg;$i++){
-            if ($r[$i]>0&&$r[$i]+$r[$sum-1-$i]!=0)return "b";
-        }
-        return "a";*/
-    }
     function test(){
-        $waybill=Waybill::with('uploadFile')->find(55);
-        dd($waybill,$waybill->upload_file_url);
     }
 }

+ 32 - 0
database/migrations/2020_06_22_145927_change_processes_contents_add_column_is_full.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class ChangeProcessesContentsAddColumnIsFull extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('processes_contents',function (Blueprint $table){
+            $table->string('is_full',2)->default('N')->comment('是否成品');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('processes_contents',function (Blueprint $table) {
+            $table->dropColumn('is_full');
+        });
+    }
+}

+ 160 - 64
resources/views/process/create.blade.php

@@ -7,70 +7,159 @@
     <div class="container-fluid" id="list">
         <div class="card col-md-8 offset-md-2">
             <div class="card-body">
-                <div class="form-group row">
-                    <label class="col-3 col-form-label text-right" >单据号</label>
-                    <input v-model="process.wms_code" class="form-control col-6 " :class="error.wms_code && error.wms_code.length>0 ? 'is-invalid' :''">&nbsp;&nbsp;&nbsp;
-                    <input class="btn btn-info col-2" type="button" @click="addProcessContent()" value="新增库单据">
-                    <span v-if="error.wms_code && error.wms_code.length>0" class="invalid-feedback col-8 offset-3 mt-0" role="alert">
-                        <strong>@{{ error.wms_code[0] }}</strong>
-                    </span>
-                </div>
-                <div class="form-group row" v-if="processContents.length>0" v-for="processContent in processContents" >
-                    <div class="col-8 offset-md-3 pl-0 pt-2 border  rounded" :style="processContent.addBtnShow?'': 'opacity:0.88;background-color:#f5f5f5;transform:scale(0.9)'">
-                        <div class="row pt-2">
-                            <label class="col-3 col-form-label text-right">单据号@{{ processContent.i }}</label>
-                            <b class="col-8">@{{ processContent.wms_code }}</b>
-                        </div>
-                        <div class="row pt-2" v-if="processContent.addBtnShow">
-                            <label class="col-3 col-form-label text-right">选择商品</label>
-                            <span class=" col-9 input-group" style="max-height: 150px; overflow-y: scroll;border-radius:5px;opacity:1.5;text-align: center;">
-                                <ul class="list-group tooltipTarget" title="双击选择商品" style="width: 100%" onselectstart="return false;">
-                                    <li v-for="commodity in processContent.commodities" :id="commodity.id" class="list-group-item list-group-item-action p-0 m-0"
-                                        @dblclick="selectedCommodity(commodity,processContent.wms_code)" :class="processContent.commodity_id && processContent.commodity_id==commodity.id && processContent.lineNo==commodity.lineNo? 'active' :''">
-                                        <p class="form-inline" style="cursor: default;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;"><small style="overflow: hidden;" :title="commodity.name" class="text-left text-info col-6">@{{ commodity.name }}</small>
-                                            <small class="text-left  col-6" style="overflow: hidden;">
-                                                <a v-for="barcode in commodity.barcodes">@{{ barcode.code }}&nbsp;&nbsp;&nbsp;</a>
-                                            </small></p></li>
-                                </ul>
-                            </span>
+                <div class="row">
+                    <div class="col-6  rounded mb-2 border" style="background: #efe3d9;">
+                        <div class="form-group row mt-2">
+                            <label class="col-2 text-right mt-2">原料单据</label>
+                            <input class="form-control col-7" v-model="process.wms_code">&nbsp;&nbsp;&nbsp;
+                            <button class="btn btn-info btn-sm col-2"  type="button" @click="addProcessContent(false)"> 新增库单据</button>
                         </div>
-                        <div class="row pt-2">
-                            <label class="col-3 col-form-label text-right">商品名</label>
-                            <b  class="col-8">@{{ processContent.commodity_name }}</b>
-                        </div>
-                        <div class="row pt-2">
-                            <label class="col-3 col-form-label text-right">条码</label>
-                            <ul class="p-0 m-0 ml-3 list-unstyled list-inline" v-if="processContent.commodity_barcodes && processContent.commodity_barcodes.length>0">
-                                <li v-for="barcode in processContent.commodity_barcodes"><small>@{{ barcode.code }}</small></li>
-                            </ul>
-                        </div>
-
-                        <div class="row pt-2">
-                            <label class="col-3 col-form-label text-right">SKU</label>
-                            <b  class="col-8">@{{ processContent.commodity_sku }}</b>
+                        <div class="form-group row">
+                            <div class="col-10 offset-1 pl-0 pt-2 border rounded bg-light">
+                                <div class="row pt-2 small"><label class="col-3 text-right" >单据号</label>
+                                    <b class="col-8" v-if="processContents.length>0 && processContents[0].addBtnShow && !processContents[0].is_full">@{{ processContents[0].wms_code }}</b></div> <!---->
+                                <div class="row pt-2" v-if="processContents.length>0 && processContents[0].addBtnShow && !processContents[0].is_full">
+                                    <span class="col-12 text-center text-muted small">双击选择商品:</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':''}"
+                                                @dblclick="selectedCommodity(commodity,processContents[0].wms_code)" 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-primary col-6 tooltipTarget"  style="overflow: hidden;">@{{ commodity.name }}</small>
+                                                    <small class="text-left  col-6"><a v-for="barcode in commodity.barcodes">@{{ barcode.code }}&nbsp;&nbsp;&nbsp;</a></small>
+                                                </div>
+                                            </li>
+                                        </ul>
+                                    </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].is_full" class="col-8">@{{ processContents[0].commodity_name }}</b>
+                                </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].is_full && processContents[0].commodity_barcodes && processContents[0].commodity_barcodes.length>0">
+                                        <li v-for="barcode in processContents[0].commodity_barcodes"><small>@{{ barcode.code }}</small></li>
+                                    </ul>
+                                </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].is_full" class="col-8">@{{ processContents[0].commodity_sku }}</b></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].is_full"
+                                            v-model="processContents[0].bill_type"  class="col-8 form-control form-control-sm">
+                                        <option value="移库单">移库单</option>
+                                        <option value="入库单">入库单</option>
+                                        <option value="出库单">出库单</option>
+                                    </select></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].is_full" v-model="processContents[0].amount" type="text" class="form-control form-control-sm col-8">
+                                </div>
+                                <div class="col-8 offset-2 pt-2 pb-2">
+                                    <input type="button" v-if="processContents.length>0 && processContents[0].addBtnShow && !processContents[0].is_full"
+                                           @click="confirmStore(processContents[0].wms_code,processContents[0].commodity_id,processContents[0].amount)"
+                                           value="确定新增" class="btn btn-primary btn-sm form-control form-control-sm">
+                                </div>
+                                <div class="col-8 offset-2 pt-2 pb-2">
+                                    <input v-if="processContents.length>0 && processContents[0].addBtnShow && !processContents[0].is_full" type="button" @click="deleteProcessContent(processContents[0].wms_code)" value="删除" class="btn btn-danger form-control">
+                                </div>
+                            </div>
                         </div>
-                        <div class="row pt-2">
-                            <label class="col-3 col-form-label text-right">单据类型</label>
-                            <select  disabled v-model="processContent.bill_type" class="col-8 form-control"
-                                     :class="processContentError[processContent.wms_code] && processContentError[processContent.wms_code].bill_type ? 'is-invalid' :''">
-                                <option value="移库单">移库单</option>
-                                <option value="入库单">入库单</option>
-                                <option value="出库单">出库单</option>
-                            </select>
+                        <div class="form-group row">
+                            <div class="col-10 offset-1 p-1 border rounded bg-light" v-for="processContent in processContents" v-if="!processContent.addBtnShow && !processContent.is_full">
+                                <div class="col-12 border">
+                                    <div class="row small"  @mouseover="is_delBtn=true;" @mouseleave="is_delBtn=false;">
+                                        <span class="font-weight-bold">单据号:</span>
+                                        <span class="font-weight-bold">@{{ processContent.wms_code }}</span>
+                                        <span class="ml-2 text-muted">单据类型:</span>
+                                        <span class=" text-muted">@{{ processContent.bill_type }}</span>
+                                        <span class="ml-2 font-weight-bold">商品名:</span>
+                                        <span class="font-weight-bold">@{{ processContent.commodity_name }}</span>
+                                        <span class="ml-2 text-muted">SKU:</span>
+                                        <span class=" text-muted">@{{ processContent.commodity_sku }}</span>
+                                        <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>
+                                        <button v-if="is_delBtn" @click="deleteProcessContent(processContent.wms_code,processContent.commodity_id)" class="btn btn-sm btn-danger" style="position: absolute;right: 0;bottom: 0">删除</button>
+                                    </div>
+                                </div>
+                            </div>
                         </div>
-                        <div  class="row pt-2">
-                            <label class="col-3 col-form-label text-right">数量</label>
-                            <input :readonly="!processContent.addBtnShow" v-model="processContent.amount" type="text" class="form-control col-8"
-                                   :class="processContentError[processContent.wms_code] && processContentError[processContent.wms_code].amount ? 'is-invalid' :''">
-                            <span v-if="processContentError[processContent.wms_code] && processContentError[processContent.wms_code].amount" class="invalid-feedback col-8 offset-3 mt-0" role="alert">
-                                <strong>@{{ processContentError[processContent.wms_code].amount[0] }}</strong>
-                            </span>
+                    </div>
+                    <div class="col-6 rounded mb-2 border" style="background: #ccd7dc;">
+                        <div class="form-group row mt-2">
+                            <label class="col-2 text-right mt-2">成品单据</label>
+                            <input class="form-control col-7" v-model="process.wms_code_full">&nbsp;&nbsp;&nbsp;
+                            <button class="btn btn-info btn-sm col-2"  type="button" @click="addProcessContent(true)"> 新增库单据</button>
                         </div>
-                        <div class="col-8 offset-2 pt-2" v-if="processContent.addBtnShow">
-                            <input type="button" @click="confirmStore(processContent.wms_code,processContent.commodity_id,processContent.amount)" value="确定新增" class="btn btn-primary form-control">
+                        <div class="form-group row">
+                            <div class="col-10 offset-1 pl-0 pt-2 border rounded bg-light">
+                                <div class="row pt-2 small"><label class="col-3 text-right" >单据号</label>
+                                    <b class="col-8" v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].is_full">@{{ processContents[0].wms_code }}</b></div> <!---->
+                                <div class="row pt-2" v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].is_full">
+                                    <span class="col-12 text-center text-muted small">双击选择商品:</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':''}"
+                                                 @dblclick="selectedCommodity(commodity,processContents[0].wms_code)" 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>
+                                                    <small class="text-left  col-6"><a v-for="barcode in commodity.barcodes">@{{ barcode.code }}&nbsp;&nbsp;&nbsp;</a></small>
+                                                </div>
+                                            </li>
+                                        </ul>
+                                    </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].is_full" class="col-8">@{{ processContents[0].commodity_name }}</b>
+                                </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].is_full && processContents[0].commodity_barcodes && processContents[0].commodity_barcodes.length>0">
+                                        <li v-for="barcode in processContents[0].commodity_barcodes"><small>@{{ barcode.code }}</small></li>
+                                    </ul>
+                                </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].is_full" class="col-8">@{{ processContents[0].commodity_sku }}</b></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].is_full"
+                                            v-model="processContents[0].bill_type"  class="col-8 form-control form-control-sm">
+                                        <option value="移库单">移库单</option>
+                                        <option value="入库单">入库单</option>
+                                        <option value="出库单">出库单</option>
+                                    </select></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].is_full" v-model="processContents[0].amount" type="text" class="form-control form-control-sm col-8">
+                                </div>
+                                <div class="col-8 offset-2 pt-2 pb-2">
+                                    <input type="button" v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].is_full"
+                                           @click="confirmStore(processContents[0].wms_code,processContents[0].commodity_id,processContents[0].amount)"
+                                           value="确定新增" class="btn btn-primary btn-sm form-control form-control-sm">
+                                </div>
+                                <div class="col-8 offset-2 pt-2 pb-2">
+                                    <input v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].is_full" type="button" @click="deleteProcessContent(processContents[0].wms_code)" value="删除" class="btn btn-danger form-control">
+                                </div>
+                            </div>
                         </div>
-                        <div class="col-8 offset-2 pt-2 pb-2">
-                            <input type="button" @click="deleteProcessContent(processContent.wms_code)" value="删除" class="btn btn-danger form-control">
+                        <div class="form-group row">
+                            <div class="col-10 offset-1 p-1 border rounded bg-light" v-for="processContent in processContents" v-if="!processContent.addBtnShow && processContent.is_full">
+                                <div class="col-12 border">
+                                    <div class="row small" style="position: relative" @mouseover="is_delBtn=true;" @mouseleave="is_delBtn=false;">
+                                        <span class="font-weight-bold">单据号:</span>
+                                        <span class="font-weight-bold">@{{ processContent.wms_code }}</span>
+                                        <span class="ml-2 text-muted">单据类型:</span>
+                                        <span class=" text-muted">@{{ processContent.bill_type }}</span>
+                                        <span class="ml-2 font-weight-bold">商品名:</span>
+                                        <span class="font-weight-bold">@{{ processContent.commodity_name }}</span>
+                                        <span class="ml-2 text-muted">SKU:</span>
+                                        <span class=" text-muted">@{{ processContent.commodity_sku }}</span>
+                                        <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>
+                                        <button v-if="is_delBtn" @click="deleteProcessContent(processContent.wms_code,processContent.commodity_id)" class="btn btn-sm btn-danger" style="position: absolute;right: 0;bottom: 0">删除</button>
+                                    </div>
+                                </div>
+                            </div>
                         </div>
                     </div>
                 </div>
@@ -134,7 +223,7 @@
         let vueList=new Vue({
             el:'#list',
             data:{
-                process:{wms_code:'',owner_id:'',process_method_id:'',unit_price:'',remark:'',amount:''},
+                process:{wms_code:'',owner_id:'',process_method_id:'',unit_price:'',remark:'',amount:'',wms_code_full:''},
                 error:{wms_code:[],owner_id:[],process_method_id:[],unit_price:[],amount:[]},
                 processContentError:[],
                 processContents:[],
@@ -147,7 +236,7 @@
                 selectedTutorials:[],
                 msg:false,
                 commodityIds:[],
-
+                is_delBtn:false,
             },
             watch:{
                 processContents:{
@@ -164,9 +253,10 @@
             },
             methods:{
                 //新增库单据
-                addProcessContent(){
+                addProcessContent(is_full){
                     let _this=this;
                     let wms_code=_this.process.wms_code;
+                    if (is_full) wms_code=_this.process.wms_code_full;
                     if (!wms_code){
                         tempTip.setDuration(3000);
                         tempTip.show('未输入单据号!');
@@ -219,6 +309,7 @@
                             processContent['amount']='';
                             processContent['lineNo']='';
                             processContent['addBtnShow']=true;
+                            processContent['is_full']=is_full;
                             _this.processContents.unshift(processContent);
                         }).catch(function (err) {
                         if (_this.msg)_this.msg=false;
@@ -239,6 +330,11 @@
                         tempTip.show("尚未填写数量!");
                         return;
                     }
+                    if (isNaN(amount)) {
+                        tempTip.setDuration(2000);
+                        tempTip.show("数量必须为数字!");
+                        return;
+                    }
                     let _this=this;
                     _this.processContents.every(function (processContent) {
                         if (processContent.wms_code==wms_code) {
@@ -250,10 +346,10 @@
                     });
                 },
                 //删除新增
-                deleteProcessContent(wms_code){
+                deleteProcessContent(wms_code,commodity_id){
                     let _this=this;
                     _this.processContents.every(function (processContent,i) {
-                        if (processContent.wms_code==wms_code) {
+                        if (processContent.wms_code===wms_code&&processContent.commodity_id===commodity_id) {
                             _this.processContents.splice(i,1);
                             _this.commodityIds.splice(_this.commodityIds.indexOf(processContent.commodity_id),1);
                             return false;

+ 1 - 1
resources/views/process/edit.blade.php

@@ -84,7 +84,7 @@
                 </div>
                 <div class="form-group row">
                     <label class="col-3 col-form-label text-right" >货主</label>
-                    <input readonly v-if="processContents.length>0" :value="processContents[processContents.length-1].owner_name?process.owner_name:processContents[processContents.length-1].owner_name" class="form-control col-8" :class="error.owner_id && error.owner_id.length>0 ? 'is-invalid' :''">
+                    <input readonly v-if="processContents.length>0" :value="process.owner_name" class="form-control col-8" :class="error.owner_id && error.owner_id.length>0 ? 'is-invalid' :''">
                     <span v-if="error.owner_id && error.owner_id.length>0" class="invalid-feedback col-8 offset-3 mt-0" role="alert">
                         <strong>@{{ error.owner_id[0] }}</strong>
                     </span>

+ 55 - 33
resources/views/process/index.blade.php

@@ -243,19 +243,19 @@
                     <th>提交日期</th>
                     <th>状态</th>
                     <th>备注</th>
-                    <th>单据类型</th>
-                    <th>单据号</th>
-                    <th>本单数量</th>
-                    <th>商品条码</th>
-                    <th>商品名称 </th>
+                    <th style="min-width: 200px">单据类型</th>
+                    <th style="min-width: 200px">单据号</th>
+                    <th style="min-width: 200px">本单数量</th>
+                    <th style="min-width: 200px">商品条码</th>
+                    <th style="min-width: 200px">商品名称 </th>
                 </tr>
                 <template>
-                <tr v-for="(processOne,i) in processes" :id="processOne.afterLocation?processOne.afterLocation:processOne.id">
-                    <td :rowspan="processOne.rowspan" v-if="processOne.id">
+                <tr v-for="(processOne,i) in processesContents" :id="processOne.afterLocation?processOne.afterLocation:processOne.id">
+                    <td v-if="processOne.id">
                         <input class="checkItem" type="checkbox" :value="processOne.id" v-model="checkData">
                     </td>
-                    <td :rowspan="processOne.rowspan" v-if="processOne.id" class="text-muted">@{{ i+1 }}</td>
-                    <td :rowspan="processOne.rowspan" v-if="processOne.id" style="min-width:150px" >
+                    <td v-if="processOne.id" class="text-muted">@{{ i+1 }}</td>
+                    <td v-if="processOne.id" style="min-width:150px" >
                         <p v-if="!processOne.openProcessHour && processOne.status=='驳回'" class="text-muted">已驳回</p>
                         <p v-if="!processOne.openProcessHour && processOne.status=='已完成'" class="text-success">已完成</p>
                         @can("二次加工管理-接单与驳回")
@@ -267,11 +267,11 @@
                         <button v-if="processOne.openProcessHour" @click="closeProcessHour(processOne.id);processOne.openProcessHour=false" class="btn btn-sm btn-dark pull-left">收起登记工时</button>@endcan
                         @can("二次加工管理-验收完成")<button v-if="!processOne.openProcessHour && processOne.status=='待验收'" @click="processAccomplish(processOne.id)" class="btn btn-sm btn-outline-success pull-left">完成</button>@endcan
                     </td>
-                    <td :rowspan="processOne.rowspan" v-if="processOne.id" class="text-muted">@{{ processOne.code }}</td>
-                    <td :rowspan="processOne.rowspan" v-if="processOne.id" class="text-muted">@{{ processOne.owner_name }}</td>
-                    <td :rowspan="processOne.rowspan" v-if="processOne.id">@{{ processOne.process_method_name }}</td>
-                    <td :rowspan="processOne.rowspan" v-if="processOne.id">@{{ processOne.amount }}</td>
-                    <td :rowspan="processOne.rowspan" v-if="processOne.id" >
+                    <td v-if="processOne.id" class="text-muted">@{{ processOne.code }}</td>
+                    <td v-if="processOne.id" class="text-muted">@{{ processOne.owner_name }}</td>
+                    <td v-if="processOne.id">@{{ processOne.process_method_name }}</td>
+                    <td v-if="processOne.id">@{{ processOne.amount }}</td>
+                    <td v-if="processOne.id" >
                         <div class="" v-if="processOne.tutorials" {{--style="width: 200px;overflow:auto;"--}}>
                             <div v-if=" processOne.tutorials.length>0">
                             <u v-if="!processOne.detailFolding" @click="showTutorial(processOne.tutorials[0].id)" class="text-info" style="cursor:pointer;">@{{processOne.tutorials[0].name}}</u>
@@ -298,22 +298,36 @@
                             </div>
                         </div>
                     </td>
-                    <td :rowspan="processOne.rowspan" v-if="processOne.id" class="text-muted">@{{ processOne.unit_price }}</td>
-                    <td :rowspan="processOne.rowspan" v-if="processOne.id">@{{ processOne.completed_amount }}</td>
-                    <td :rowspan="processOne.rowspan" v-if="processOne.id">@{{ processOne.created_at }}</td>
-                    <td :rowspan="processOne.rowspan" v-if="processOne.id" class="text-muted">@{{ processOne.status }}</td>
-                    <td :rowspan="processOne.rowspan" v-if="processOne.id" class="text-muted">@{{ processOne.remark }}</td>
-                    <td class="text-muted">@{{ processOne.bill_type }}</td>
-                    <td class="text-muted">@{{ processOne.wms_code }}</td>
-                    <td class="text-muted">@{{ processOne.thisAmount }}</td>
-                    <td class="text-muted">
-                        <ul class="p-0 m-0 list-unstyled list-inline" v-if="processOne.commodity_barcodes">
-                            <li v-for="barcode in processOne.commodity_barcodes"><small>@{{ barcode.code }}</small></li>
-                        </ul>
+                    <td v-if="processOne.id" class="text-muted">@{{ processOne.unit_price }}</td>
+                    <td v-if="processOne.id">@{{ processOne.completed_amount }}</td>
+                    <td v-if="processOne.id">@{{ processOne.created_at }}</td>
+                    <td v-if="processOne.id" class="text-muted">@{{ processOne.status }}</td>
+                    <td v-if="processOne.id" class="text-muted">@{{ processOne.remark }}</td>
+                    <td colspan="5">
+                        <table class="table table-sm table-striped" v-if="processUnfold[processOne.code] || processOne.processesContents.length==1">
+                            <tr v-for="processesContent in processOne.processesContents" v-if="processUnfold[processOne.code] ? processesContent.is_full==processUnfold[processOne.code] :processOne.processesContents.length==1">
+                                <td style="width: 180px" class="text-muted">@{{ processesContent.bill_type }}</td>
+                                <td style="width: 180px" class="text-muted">@{{ processesContent.wms_code }}</td>
+                                <td style="width: 180px" class="text-muted">@{{ processesContent.amount }}</td>
+                                <td style="width: 180px" class="text-muted">
+                                    <ul class="p-0 m-0 list-unstyled list-inline" v-if="processesContent.commodity">
+                                        <li v-for="barcode in processesContent.commodity.barcodes"><small>@{{ barcode.code }}</small></li>
+                                    </ul>
+                                </td>
+                                <td :title="processesContent.commodity_name" class="text-muted tooltipTarget"><div style="width: 180px;overflow:hidden" >@{{ processesContent.commodity_name }}</div></td>
+                            </tr>
+                            <tr v-if="processUnfold[processOne.code]">
+                               <td colspan="5">
+                                   <div class="text-center">
+                                       <b v-if="processUnfold[processOne.code]=='N'" style="cursor:pointer;color: #4aa0e6;text-decoration:underline" @click="processUnfold=[]">点击关闭原料单</b><br>
+                                       <b v-if="processUnfold[processOne.code]=='Y'" style="cursor:pointer;color: #4aa0e6;text-decoration:underline" @click="processUnfold=[]">点击关闭成品单</b></div>
+                               </td>
+                            </tr>
+                        </table>
+                        <div v-if="!processUnfold[processOne.code] && processOne.processesContents.length>1" class="text-center">
+                        <b v-if="processFullSum[processOne.code]!=processOne.processesContents.length" style="cursor:pointer;color: #4aa0e6;text-decoration:underline" @click="unfold(processOne.code,'N')">点击展开原料单</b><br>
+                        <b v-if="processFullSum[processOne.code] && processFullSum[processOne.code]!=0" style="cursor:pointer;color: #4aa0e6;text-decoration:underline" @click="unfold(processOne.code,'Y')">点击展开成品单</b></div>
                     </td>
-                    <td class="text-muted">@{{ processOne.commodity_name }}</td>
-
-
                 </tr>
                 <tr id="addProcessDailyParticipants" v-show="processDailyParticipants.length>0">
                     <td colspan="2"></td>
@@ -432,7 +446,7 @@
                 processesContents:[
                     @foreach($processes as $processOne)
                     {id:'{{$processOne->id}}',code:'{{$processOne->code}}',owner_name:'{{$processOne->owner_name}}',owner_id:'{{$processOne->owner_id}}',
-                        process_method_name:'{{$processOne->process_method_name}}',amount:'{{$processOne->amount}}'
+                        process_method_name:'{{$processOne->process_method_name}}',amount:'{{$processOne->amount}}',is_full:'{{$processOne->is_full}}'
                         ,tutorials:{!! $processOne->tutorials !!},processesContents:{!! $processOne->processesContents !!},unit_price:'{{$processOne->unit_price}}',created_at:'{{$processOne->created_at}}',
                         completed_amount:'{{$processOne->completed_amount}}',status:'{{$processOne->status}}',remark:'{{$processOne->remark}}',detailFolding:false,openProcessHour:false,},
                     @endforeach
@@ -457,6 +471,8 @@
                 processDailyParticipantOne:{id:'',user_id:'',user_detail_full_name:'',started_at:"",ended_at:"",
                                         hour_price:'',unit_price:'',dinner_duration:'',hour_count:'',unit_count:'',remark:''},
                 processTutorial:{id:'',owner_id:'',tutorials:[],},
+                processUnfold:[],
+                processFullSum:[],
             },
             watch:{
                 checkData:{
@@ -513,6 +529,7 @@
                             continue;
                         }
                         process.processesContents.every(function (processesContent,count) {
+                            if (processesContent.is_full==='Y')_this.$set(_this.processFullSum,process.code,_this.processFullSum[process.code]?_this.processFullSum[process.code]+1:1);
                             let processOne={};
                             if ((count+1)==process.processesContents.length){
                                 processOne['afterLocation'] = process.id+"-"+process.processesContents.length;
@@ -1217,9 +1234,14 @@
                     location.href = "{{url('process')}}/"+id+"/edit";
                 },
                 //去往新增教程
-                addTutorial(){
-                    window.open("{{url('maintenance/tutorial/create?owner_id=')}}"+this.processTutorial.owner_id);
-                }
+                addTutorial() {
+                    window.open("{{url('maintenance/tutorial/create?owner_id=')}}" + this.processTutorial.owner_id);
+                },
+                //展开内容单
+                unfold(code,is_full){
+                    this.processUnfold=[];
+                    this.$set(this.processUnfold,code,is_full);
+                },
             },
         });
     </script>