Browse Source

修改卸货页面

ajun 5 years ago
parent
commit
5a18d502ab

+ 3 - 3
resources/views/transport/discharge/menu.blade.php

@@ -5,17 +5,17 @@
             <!--  权限 ***  -->
 
             <li class="nav-item">
-                <a target="waybill/recycle" class="nav-link" href="{{url('transport/discharge/task/index')}}" :class="{active:isActive('recycle',2)}">卸货任务</a>
+                <a target="transport/discharge/task" class="nav-link" href="{{url('transport/discharge/task/index')}}" :class="{active:isActive('task',3)}">卸货任务</a>
             </li>
             <!--  权限 ***  -->
 
             <li class="nav-item">
-                <a target="waybill/recycle" class="nav-link" href="{{url('transport/discharge/statement/index')}}" :class="{active:isActive('recycle',2)}">计算报表</a>
+                <a target="transport/discharge/statement" class="nav-link" href="{{url('transport/discharge/statement/index')}}" :class="{active:isActive('statement',3)}">计算报表</a>
             </li>
             <!--  权限 ***  -->
 
             <li class="nav-item">
-                <a target="waybill/recycle" class="nav-link" href="{{url('transport/discharge/provider/index')}}" :class="{active:isActive('recycle',2)}">服务商</a>
+                <a target="transport/discharge/provider" class="nav-link" href="{{url('transport/discharge/provider/index')}}" :class="{active:isActive('provider',3)}">服务商</a>
             </li>
         </ul>
     </div>

+ 42 - 0
resources/views/transport/discharge/provider/_table.blade.php

@@ -0,0 +1,42 @@
+<table class="table table-sm table-striped table-bordered table-hover card-body p-0 m-0">
+    <tr class="text-center">
+        <th><input type="checkbox" class="form-check" name="selectAll" id="selectAll" @click="checkAll" ></th>
+        <th>序号</th>
+        <th>日期</th>
+        <th>服务商</th>
+        <th>数量</th>
+        <th>单位</th>
+        <th>单价</th>
+        <th>总金额合计</th>
+    </tr>
+    <template v-if="providerStatements">
+        <tr v-for="(providerStatement,index) in providerStatements" :key="index" class="text-center">
+            <td><input type="checkbox" class="form-check" :value="providerStatement.id" v-model="checkData"></td>
+            <td>@{{index+1}}</td>
+            <td>@{{ providerStatement.created_at }}</td>
+            <td>@{{ providerStatement.discharge_provider ? providerStatement.discharge_provider.name : '' }}</td>
+            <td>
+                @{{ providerStatement.expenditure_amount }}
+            </td>
+            <td>
+                @{{ providerStatement.expenditure_unit }}
+            </td>
+            <td>
+                @{{ providerStatement.expenditure_unit_price  }}
+            </td>
+            <td>
+                @{{ providerStatement.expenditure_total_cost }}
+            </td>
+        </tr>
+    </template>
+    <template v-else>
+        <div class="container">
+            <div class='alert alert-light' role="alert">
+                服务商对账单数据为空
+            </div>
+        </div>
+    </template>
+    {{ $providerStatements->withQueryString()->links() }}
+</table>
+
+<hr>

+ 105 - 0
resources/views/transport/discharge/provider/index.blade.php

@@ -0,0 +1,105 @@
+@extends('layouts.app')
+
+@section('title','卸货服务商')
+
+@section('content')
+    <nav class="nav2">
+        @component('transport.menu')@endcomponent
+        @component('transport.discharge.menu')@endcomponent
+        @component('transport.discharge.provider.menu')@endcomponent
+    </nav>
+    <div id="list" class="d-none container-fluid">
+        <div id="form_div"  style="min-width: 2250px"></div>
+        <div class="form-inline mt-1" id="btn">
+            <span class="dropdown">
+                <button type="button" class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget"
+                        :class="[checkData.length>0?'btn-dark text-light':'']"
+                        data-toggle="dropdown" title="导出所有页将会以搜索条件得到的筛选结果,将其全部记录(每一页)导出">导出Excel
+                </button>
+                <div class="dropdown-menu">
+                    <a class="dropdown-item" @click="providerExport(false)" href="javascript:">导出勾选内容</a>
+                    <a class="dropdown-item" @click="providerExport(true)" href="javascript:">导出所有页</a>
+                </div>
+            </span>
+            @include('transport.discharge.provider._table')
+        </div>
+    </div>
+@endsection
+
+@section('lastScript')
+    <script type="text/javascript" src="{{mix('js/queryForm/queryForm.js')}}"></script>
+    <script type="text/javascript" src="{{mix('js/queryForm/export.js')}}"></script>
+
+    <script>
+        let ProviderVue = new Vue({
+            el:"#list",
+            data:{
+                providerStatements:{!! $providerStatements->toJson() !!}['data'],
+                providers:{!! $providers !!},
+                units:{0:'m3',1:'吨',2:'托',3:'件'},
+                checkData:[],
+            },
+            watch: {
+                checkData: {
+                    handler() {
+                        if (this.checkData.length === this.providerStatements.length) {
+                            document.querySelector('#selectAll').checked = true;
+                        } else {
+                            document.querySelector('#selectAll').checked = false;
+                        }
+                    },
+                    deep: true
+                },
+            },
+            created(){
+                let _this = this;
+                this.providerStatements.forEach(function(providerStatement,index,array){
+                    array[index]['expenditure_unit'] = _this.units[providerStatement['expenditure_unit']];
+                });
+                this.providers.forEach(function(provider,index,array){
+                    array[index] = {
+                        name:provider.id,
+                        value:provider.name,
+                    }
+                });
+            },
+            mounted(){
+                let _this = this;
+                $('#list').removeClass('d-none');
+                $(".tooltipTarget").tooltip({'trigger': 'hover'});
+                let data = [[
+                    {
+                        name: 'discharge_provider_id', type: 'select_multiple_select', tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的服务商'],
+                        placeholder: ['服务商', '服务商'],
+                        data: _this.providers
+                    },
+                    {name: 'created_at_start', type: 'dateTime', tip: '创建开始日期'},
+                    {name: 'created_at_end', type: 'dateTime', tip: '创建结束日期'},
+                ]];
+                this.form = new query({
+                    el: '#form_div',
+                    condition: data,
+                    appendDom : "btn",
+                    paginations:[ 50, 100, 200, 500,1000,20],
+                })
+                this.form.init();
+            },
+            methods:{
+                checkAll(e) {
+                    if (!e.target.checked) this.checkData = [];
+                    else {
+                        this.providerStatements.forEach((item, i) => {
+                            if (this.checkData.indexOf(item.id) === -1) this.checkData.push(item.id);
+                        });
+                    }
+                },
+                providerExport(isExportAll){
+                    let url = '{{url('transport/discharge/statement/export')}}';
+                    let token = '{{ csrf_token() }}';
+                    excelExport(isExportAll, this.checkData, url, this.sum, token);
+                }
+            }
+        })
+    </script>
+
+@endsection

+ 1 - 1
resources/views/transport/discharge/provider/menu.blade.php

@@ -4,7 +4,7 @@
         <ul class="nav nav-pills">
 <!--  权限 ***  -->
             <li class="nav-item">
-                <a target="transport/discharge/provider" class="nav-link" href="{{url('transport/discharge/provider/index')}}" :class="{active:isActive('recycle',2)}">查询</a>
+                <a target="transport/discharge/provider/index" class="nav-link" href="{{url('transport/discharge/provider/index')}}" :class="{active:isActive('index',4)}">查询</a>
             </li>
 <!--  权限 ***  -->
             <li class="nav-item">

+ 53 - 0
resources/views/transport/discharge/statement/_table.blade.php

@@ -0,0 +1,53 @@
+<table class="table table-sm table-striped table-bordered table-hover card-body p-0 m-0">
+    <tr class="text-center">
+        <th><input type="checkbox" class="form-check" name="selectAll" id="selectAll" @click="checkAll"/></th>
+        <th>序号</th>
+        <th>日期</th>
+        <th>作业名称</th>
+        <th>入库单号</th>
+        <th>数量</th>
+        <th>单位</th>
+        <th>收入单价</th>
+        <th>收入合计</th>
+        <th>服务商</th>
+        <th>数量</th>
+        <th>单位</th>
+        <th>支出单价</th>
+        <th>支出合计</th>
+        <th>状态</th>
+        <th>收入备注</th>
+        <th>支出备注</th>
+    </tr>
+    <template v-if="dischargeStatements">
+        <tr v-for="(dischargeTask,index) in dischargeStatements" class="text-center">
+            <td>
+                    <input type="checkbox" class="form-check" :value="dischargeTask.id" v-model="checkData">
+               </td>
+            <td>@{{ index+1 }}</td>
+            <td>@{{ dischargeTask.created_at }}</td>
+            <td>@{{ dischargeTask.type }}</td>
+            <td>@{{ dischargeTask.numbers }}</td>
+            <td>@{{ dischargeTask.income_amount }}</td>
+            <td>@{{ dischargeTask.income_unit }}</td>
+            <td>@{{ dischargeTask.income_unit_price }}</td>
+            <td>@{{ dischargeTask.income_total_cost }}</td>
+
+            <td>@{{ dischargeTask.discharge_provider ? dischargeTask.discharge_provider.name : ''  }}</td>
+            <td>@{{ dischargeTask.expenditure_amount }}</td>
+            <td>@{{ dischargeTask.expenditure_unit }}</td>
+            <td>@{{ dischargeTask.expenditure_unit_price }}</td>
+            <td>@{{ dischargeTask.expenditure_total_cost }}</td>
+            <td>@{{ dischargeTask.status }}</td>
+            <td>@{{ dischargeTask.income_remark }}</td>
+            <td>@{{ dischargeTask.expenditure_remark }}</td>
+        </tr>
+    </template>
+
+    <template v-else>
+        <div class="container">
+            <div class='alert alert-light' role="alert">
+                结算报表数据为空
+            </div>
+        </div>
+    </template>
+</table>

+ 109 - 0
resources/views/transport/discharge/statement/index.blade.php

@@ -0,0 +1,109 @@
+@extends('layouts.app')
+
+@section('title','结算报表')
+
+@section('content')
+    <nav class="nav2">
+        @component('transport.menu')@endcomponent
+        @component('transport.discharge.menu')@endcomponent
+    </nav>
+    <div id="list" class="d-none container-fluid">
+        <div id="form_div" style="min-width: 2250px"></div>
+
+        <div class="form-inline mt-1" id="btn">
+            <span class="dropdown">
+                <button type="button" class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget"
+                        :class="[checkData.length>0?'btn-dark text-light':'']"
+                        data-toggle="dropdown" title="导出所有页将会以搜索条件得到的筛选结果,将其全部记录(每一页)导出">导出Excel
+                </button>
+                <div class="dropdown-menu">
+                    <a class="dropdown-item" @click="Statementsexport(false)" href="javascript:">导出勾选内容</a>
+                    <a class="dropdown-item" @click="StatementsExport(true)" href="javascript:">导出所有页</a>
+                </div>
+            </span>
+            @include('transport.discharge.statement._table')
+        </div>
+    </div>
+@endsection
+
+@section('lastScript')
+    <script type="text/javascript" src="{{mix('js/queryForm/queryForm.js')}}"></script>
+    <script type="text/javascript" src="{{mix('js/queryForm/export.js')}}"></script>
+    <script>
+        let statementVue = new Vue({
+            el: '#list',
+            data: {
+                dischargeStatements: {!! $dischargeStatements->toJson() !!}['data'],
+                providers:{!! $providers !!},
+                owners:{!! $owners !!},
+                checkData: [],
+                taskTypes: {0: "装车", 1: "卸车"},
+                units: {0: 'm3', 1: '吨', 2: '件', 3: '托'},
+                status: {0: '创建', 1: '接单', 2: '作业中', 3: '完成'},
+            },
+            created() {
+                let _this = this;
+                this.dischargeStatements.forEach(function (item, index, array) {
+                    array[index]['status'] = _this.status[item['status']];
+                    array[index]['income_unit'] = _this.units[item['income_unit']];
+                    array[index]['expenditure_unit'] = _this.units[item['expenditure_unit']];
+                    array[index]['type'] = _this.taskTypes[item['type']];
+                });
+                this.owners.forEach(function (item, index, array) {
+                    array[index] = {name: item.id, value: item.name,};
+                })
+                this.providers.forEach(function(item, index, array){
+                    array[index] = {name:item.id,value:item.name};
+                })
+            },
+            mounted() {
+                $('#list').removeClass('d-none');
+                $(".tooltipTarget").tooltip({'trigger': 'hover'});
+                // 货主 创建日期 入库单号 状态 入库备注
+                let _this = this;
+                let status = [{name: 0, value: '创建'}, {name: 1, value: '接单'}, {name: 2, value: '作业中'}, {name: 3, value: '完成'}];
+                let data = [[
+                    {
+                        name: 'owner_id', type: 'select_multiple_select', tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的客户'],
+                        placeholder: ['货主', '定位或多选货主'],
+                        data: _this.owners
+                    },
+                    {name: 'created_at_start', type: 'dateTime', tip: '创建开始日期'},
+                    {name: 'created_at_end', type: 'dateTime', tip: '创建结束日期'},
+                    {name: 'numbers', type: 'input', tip: '入库单号', placeholder: '入库单号'},
+                    {name: 'status', type: 'select', tip: '状态', data: status, placeholder: '状态'},
+                ], [
+                    {
+                        name: 'discharge_provider_id', type: 'select_multiple_select', tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的服务商'],
+                        placeholder: ['服务商', '定位或多选服务商'],
+                        data: _this.providers
+                    },
+                    {name: 'income_remark', type: 'input', tip: '备注', data: _this.status, placeholder: '支出备注'},
+                    {name: 'income_remark', type: 'input', tip: '备注', data: _this.status, placeholder: '收入备注'},
+                ]];
+                this.form = new query({
+                    el: '#form_div',
+                    condition: data,
+                    appendDom: "btn",
+                    paginations: [50, 100, 200, 500, 1000, 20],
+                })
+                this.form.init();
+            },
+            methods: {
+                checkAll(e) {
+                    if (!e.target.checked) this.checkData = [];
+                    else {
+                        this.dischargeStatements.forEach((item, i) => {
+                            if (this.checkData.indexOf(item.id) === -1) this.checkData.push(item.id);
+                        });
+                    }
+                },
+                StatementsExport(isExportAll) {
+                    let url = '{{url('transport/discharge/provider/export')}}';
+                    let token = '{{ csrf_token() }}';
+                    excelExport(isExportAll, this.checkData, url, this.sum, token);
+                }
+            }
+        });
+    </script>
+@endsection

+ 5 - 5
resources/views/transport/discharge/task/_createTask.blade.php

@@ -6,7 +6,7 @@
                     <span v-show="isUpdate">卸货任务修改</span>
                     <span v-show="!isUpdate">卸货任务添加</span>
                 </h5>
-                <button type="button" class="close" data-dismiss="modal" @click="addTask={}">
+                <button type="button" class="close" data-dismiss="modal" @click="addTask={},isUpdate=false">
                     <span>&times;</span>
                 </button>
             </div>
@@ -17,7 +17,7 @@
                         <label for="addTask-owner-id" class="col-sm-3 col-form-label text-right">货主</label>
                         <div class="col-sm-9 form-inline">
                             <select id="addTask-owner-id" class="form-control col-3" v-model="addTask.owner_id">
-                                <option v-for="(owner,index) in ownerFilter" :value="owner.id" :key="owner+index">@{{ owner.name }}</option>
+                                <option v-for="(owner,index) in ownerFilter" :value="owner.name" :key="owner+index">@{{ owner.value }}</option>
                             </select>
                             <input class="form-control col-4 offset-2" placeholder="输入货主进行刷选" @change="filterOwner($event)">
                         </div>
@@ -26,7 +26,7 @@
                     <div class="form-group row">
                         <label for="addTask-created-at" class="col-sm-3 col-form-label text-right">预约日期</label>
                         <div class="col-sm-9 form-inline">
-                            <input type="text" id="addTask-created-at"  class="form-control col-9" name="size" v-model="addTask.created_at">
+                            <input type="date" id="addTask-created-at"  class="form-control col-9" name="size" v-model="addTask.created_at">
                         </div>
                     </div>
 
@@ -49,7 +49,7 @@
                     <div class="form-group row">
                         <label for="addTask-amount" class="col-sm-3 col-form-label text-right">数量</label>
                         <div class="col-sm-9 form-inline">
-                            <input type="number" id="addTask-amount" class="form-control col-9" name="size" v-model="addTask.amount">
+                            <input type="number" id="addTask-amount" class="form-control col-9" name="size" v-model="addTask.income_amount">
                         </div>
                     </div>
 
@@ -80,7 +80,7 @@
                     <div class="form-group row">
                         <label for="addTask-amount" class="col-sm-3 col-form-label text-right">备注</label>
                         <div class="col-sm-9 form-inline">
-                            <textarea class="form-control col-9"  >@{{addTask.income_remark}}</textarea>
+                            <textarea class="form-control col-9"  v-model="addTask.income_remark"></textarea>
                         </div>
                     </div>
 

+ 72 - 0
resources/views/transport/discharge/task/_executeTask.blade.php

@@ -0,0 +1,72 @@
+<div class="modal fade" id="executingTaskModal">
+    <div class="modal-dialog modal-dialog-centered modal-lg">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title text-center text-uppercase">
+                    卸货任务服务商指定
+                </h5>
+                <button type="button" class="close" data-dismiss="modal" @click="executingTack={},selectIndex = null">
+                    <span>&times;</span>
+                </button>
+            </div>
+
+            <div class="modal-body">
+                <form class="form">
+                    <div class="form-group row">
+                        <label for="executingTack-owner-id" class="col-sm-3 col-form-label text-right">服务商</label>
+                        <div class="col-sm-9 form-inline">
+                            <select id="executingTack-owner-id" class="form-control col-3" v-model="executingTack.owner_id">
+                                <option v-for="(providers,index) in dischargeProvidersFilter" :value="providers.id" :key="providers+index">@{{ providers.name }}</option>
+                            </select>
+                            <input class="form-control col-4 offset-2" placeholder="输入服务商进行刷选" @change="filterProviders($event)">
+                        </div>
+                    </div>
+
+                    <div class="form-group row">
+                        <label for="executingTack-created-at" class="col-sm-3 col-form-label text-right">卸货日期</label>
+                        <div class="col-sm-9 form-inline">
+                            <input type="date" id="executingTack-created-at"  class="form-control col-9" name="size" v-model="executingTack.created_at">
+                        </div>
+                    </div>
+
+                    <div class="form-group row">
+                        <label for="executingTack-amount" class="col-sm-3 col-form-label text-right">数量</label>
+                        <div class="col-sm-9 form-inline">
+                            <input type="number" id="executingTack-amount" class="form-control col-9" name="size" v-model="executingTack.expenditure_amount">
+                        </div>
+                    </div>
+
+                    <div class="form-group row">
+                        <label for="executingTack-amount" class="col-sm-3 col-form-label text-right">单位</label>
+                        <div class="col-sm-9 form-inline">
+                            <select id="executingTack-type" class="form-control col-4" v-model="executingTack.expenditure_unit">
+                                <option v-for="(unit,index) in units" :value="unit.name" :key="unit+index">@{{ unit.value }}</option>
+                            </select>
+                        </div>
+                    </div>
+
+                    <div class="form-group row">
+                        <label for="executingTack-expenditure-unit-price" class="col-sm-3 col-form-label text-right">外派单价</label>
+                        <div class="col-sm-9 form-inline">
+                            <input type="number" id="executingTack-expenditure-unit-price" class="form-control col-9"  v-model="executingTack.expenditure_unit_price">
+                        </div>
+                    </div>
+
+                    <div class="form-group row">
+                        <label for="executingTack-amount" class="col-sm-3 col-form-label text-right">备注</label>
+                        <div class="col-sm-9 form-inline">
+                            <textarea class="form-control col-9"  v-model="executingTack.expenditure_remark"></textarea>
+                        </div>
+                    </div>
+
+                </form>
+            </div>
+
+            <div class="modal-footer">
+                <button type="button" class="btn btn-secondary"  data-dismiss="modal" @click="executingTack={},selectIndex = null">关闭</button>
+                <button type="button" class="btn btn-primary"  @click="executedTask(executingTack,selectIndex)">提交</button>
+            </div>
+        </div>
+    </div>
+
+</div>

+ 5 - 3
resources/views/transport/discharge/task/_table.blade.php

@@ -35,8 +35,7 @@
             <!-- 权限 *** -->
             <span v-html="getUnit(dischargeTask.income_unit)"></span>
             <select name="" id="" v-model="dischargeTask.income_unit" class="form-control form-control-range">
-                <option v-for="(unit,i) in units" :value="unit.name"  v-html="unit.value" >
-                 </option>
+                <option v-for="(unit,i) in units" :value="unit.name"  v-html="unit.value" ></option>
             </select>
         </td>
         <td>@{{ dischargeTask.income_unit_price }}</td>
@@ -53,13 +52,16 @@
             <textarea class="form-control" cols="15" rows="2" :value="dischargeTask.income_remark"></textarea>
         </td>
         <td>
+            <button class="btn btn-sm btn-outline-primary" @click="showExecutingTaskModal(index,true,dischargeTask)">执行</button>
             <button class="btn btn-sm btn-outline-primary" @click="showUpdateTaskModal(index,true,dischargeTask)">编辑</button>
             <button class="btn btn-sm btn-outline-danger" @click="deleteTask(index,dischargeTask)">删除</button>
         </td>
     </tr>
     </template>
     <template v-else>
-        dischargeTasks 为空
+        <div class="alert  alert-light">
+            卸货任务数据为空
+        </div>
     </template>
     {{ $dischargeTasks->withQueryString()->links() }}
 </table>

+ 149 - 90
resources/views/transport/discharge/task/index.blade.php

@@ -8,11 +8,12 @@
         @component('transport.discharge.menu')@endcomponent
     </nav>
     <div id="list" class="d-none container-fluid">
-        <div id="form_div"></div>
+        <div id="form_div"  style="min-width: 2250px"></div>
 
-        <div class="form-inline mt-1" id = "btn">
+        <div class="form-inline mt-1" id="btn">
             <span class="dropdown">
-                <button type="button" class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget" :class="[checkData.length>0?'btn-dark text-light':'']"
+                <button type="button" class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget"
+                        :class="[checkData.length>0?'btn-dark text-light':'']"
                         data-toggle="dropdown" title="导出所有页将会以搜索条件得到的筛选结果,将其全部记录(每一页)导出">导出Excel
                 </button>
                 <div class="dropdown-menu">
@@ -21,7 +22,8 @@
                 </div>
             </span>
             <span class="ml-1">
-                <button type="button" class="btn btn-outline-dark btn-sm form-control-sm tooltipTarget" @click="showCreateTaskModal(true)" style="background: #dad7e8;">创建任务</button>
+                <button type="button" class="btn btn-outline-dark btn-sm form-control-sm tooltipTarget"
+                        @click="showCreateTaskModal(true)" style="background: #dad7e8;">创建任务</button>
             </span>
         </div>
         @include('transport.discharge.task._table')
@@ -35,49 +37,75 @@
     <script type="text/javascript" src="{{mix('js/queryForm/export.js')}}"></script>
     <script>
         let dischargeTaskVue = new Vue({
-            el:"#list",
-            data:{
-                dischargeTasks:{!! $dischargeTasks->toJson()!!}['data'],
+            el: "#list",
+            data: {
+                dischargeTasks: {!! $dischargeTasks->toJson()!!}['data'],
                 owners:{!! $owners !!},
-                ownerFilter:[],
-                addTask:{},
-                isUpdate:false,
-                checkData:[],
-                selectIndex:'',
-                taskTypes:[
-                    {name:0,value:"装车"},
-                    {name:1,value:"卸车"},
+                ownerFilter: [],
+                dischargeProviders:{!! $dischargeProviders !!},
+                dischargeProvidersFilter: [],
+                addTask: {},
+                executingTack: {},
+
+                taskTypes: [
+                    {name: 0, value: "装车"},
+                    {name: 1, value: "卸车"},
+                ],
+                units: [
+                    {name: 0, value: 'm3'},
+                    {name: 1, value: '吨'},
+                    {name: 2, value: '件'},
+                    {name: 3, value: '托'},
                 ],
-                units:[
-                    {name:0,value:'m<sup>3</sup>'},
-                    {name:1,value:'吨'},
-                    {name:2,value:'件'},
-                    {name:3,value:'托'},
+                status: [
+                    {name: '0', value: '创建'},
+                    {name: '1', value: '接单'},
+                    {name: '2', value: '作业'},
+                    {name: '3', value: '完成'},
                 ],
-                status:[
-                    {name:'0',value:'创建'},
-                    {name:'1',value:'接单'},
-                    {name:'2',value:'作业'},
-                    {name:'3',value:'完成'},
-                ]
+                isUpdate: false,
+                checkData: [],
+                selectIndex: '',
             },
             created() {
-                this.owners.forEach(function(owner,index,array){
+                this.owners.forEach(function (owner, index, array) {
                     array[index] = {
-                        id:owner.id,
-                        name:owner.name,
+                        name: owner.id,
+                        value: owner.name,
                     };
                 });
                 this.ownerFilter = JSON.parse(JSON.stringify(this.owners));
+                this.dischargeProvidersFilter = JSON.parse(JSON.stringify(this.dischargeProviders));
             },
             mounted() {
                 $('#list').removeClass('d-none');
-                $(".tooltipTarget").tooltip({'trigger':'hover'});
+                $(".tooltipTarget").tooltip({'trigger': 'hover'});
+                // 货主 创建日期 入库单号 状态 入库备注
+                let _this = this;
+                let data = [[
+                    {
+                        name: 'owner_id', type: 'select_multiple_select', tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的客户'],
+                        placeholder: ['货主', '定位或多选货主'],
+                        data: _this.owners
+                    },
+                    {name: 'created_at_start', type: 'dateTime', tip: '创建开始日期'},
+                    {name: 'created_at_end', type: 'dateTime', tip: '创建结束日期'},
+                    {name: 'numbers', type: 'input', tip: '入库单号',placeholder:'入库单号'},
+                    {name: 'status', type: 'select', tip: '状态' , data: _this.status,placeholder:'状态'},
+                    {name: 'income_remark', type: 'input', tip: '备注' , data: _this.status,placeholder:'备注'}
+                ]];
+                this.form = new query({
+                    el: '#form_div',
+                    condition: data,
+                    appendDom : "btn",
+                    paginations:[ 50, 100, 200, 500,1000,20],
+                })
+                this.form.init();
             },
-            watch:{
+            watch: {
                 checkData: {
                     handler() {
-                        if (this.checkData.length === this.dischargeTask.length) {
+                        if (this.checkData.length === this.dischargeTasks.length) {
                             document.querySelector('#selectAll').checked = true;
                         } else {
                             document.querySelector('#selectAll').checked = false;
@@ -86,142 +114,173 @@
                     deep: true
                 },
             },
-            methods:{
-                getUnit(type){
+            methods: {
+                getUnit(type) {
                     let unit = ''
-                    this.units.forEach(function(item){
-                        if(item.name==type) unit = item.value;
+                    this.units.forEach(function (item) {
+                        if (item.name === type) unit = item.value;
                     });
                     return unit;
                 },
-                getType(value){
+                getType(value) {
                     let type = ''
-                    this.taskTypes.forEach(function(item){
-                        if(item.name==value) type = item.value;
+                    this.taskTypes.forEach(function (item) {
+                        if (item.name === value) type = item.value;
                     });
                     return type;
                 },
-                getStatus(value){
+                getStatus(value) {
                     let status = '';
-                    this.status.forEach(function(item){
-                        if(item.name==value) status=item.value;
+                    this.status.forEach(function (item) {
+                        if (item.name === value) status = item.value;
                     })
                     return status;
                 },
                 checkAll(e) {
-                    if(!e.target.checked)this.checkData = [];
-                    else{
+                    if (!e.target.checked) this.checkData = [];
+                    else {
                         this.dischargeTasks.forEach((el, i) => {
                             if (this.checkData.indexOf(el.id) === -1) this.checkData.push(el.id);
                         });
                     }
                 },
-                showCreateTaskModal(isDisplay){
-                    if(isDisplay)$("#createdModal").modal('show');
+                // 创建任务 modal
+                showCreateTaskModal(isDisplay) {
+                    if (isDisplay) $("#createdModal").modal('show');
                     else {
                         this.isUpdate = false;
                         $("#createdModal").modal('hide');
                     }
                 },
-                showExecutingTaskModal(isDisplay,task){
+                // 执行任务 modal
+                showExecutingTaskModal(index, isDisplay, task) {
                     this.updateTask = task;
-                    if(isDisplay){
-                        this.isUpdate = true;
+                    this.selectIndex = index;
+                    if (isDisplay) {
                         $("#executingTaskModal").modal('show');
-                    } else{
+                    } else {
                         this.isUpdate = false;
+                        this.selectIndex = null;
                         $("#executingTaskModal").modal('hide');
                     }
                 },
-                showUpdateTaskModal(index,isDisplay,task){
+                // 编辑任务 modal
+                showUpdateTaskModal(index, isDisplay, task) {
                     this.isUpdate = true;
                     this.selectIndex = index;
                     this.addTask = JSON.parse(JSON.stringify(task));
                     this.showCreateTaskModal(isDisplay)
                 },
-                createTask(index){
-                    if(this.isUpdate){
+                // 创建任务
+                createTask(index) {
+                    if (this.isUpdate) {
                         this.updateCurrentTask(index);
                         return
                     }
-                    // 创建任务
+                    this.addTask['income_total_cost'] = Number(this.addTask['income_unit_price']) * Number(this.addTask.income_amount);
+                    this.addTask['status'] = 0;
                     let url = '{{url('apiLocal/transport/discharge/task/storeApi')}}';
                     tempTip.setDuration(2000);
-                    tempTip.setIndex(99);
-                    axios.post(url,this.addTask).then(res=>{
-                        if(res.data.success){
+                    tempTip.setIndex(999);
+                    axios.post(url, this.addTask).then(res => {
+                        if (res.data.success) {
+                            tempTip.showSuccess("添加卸货任务成功")
                             this.dischargeTasks.unshift(res.data.data);
+                            this.showCreateTaskModal(false);
                             this.addTask = {};
                             return
                         }
-                    }).catch(err=>{
+                        tempTip.show(res.data.message ? res.data.message : '添加卸货任务失败');
+                    }).catch(err => {
                         tempTip.show(err);
                     });
                 },
-                executedTask(dischargeTask,index){
-                    // 执行任务
+                // 执行任务
+                executedTask(dischargeTask, index) {
                     let url = '{{url('apiLocal/transport/discharge/task/updateTaskProviderApi')}}';
+                    tempTip.setDuration(2000);
+                    tempTip.setIndex(999);
+                    dischargeTask['income_total_cost'] = Number(dischargeTask['income_unit_price']) * dischargeTask(dischargeTask['income_amount']);
+                    dischargeTask['status'] = 1;
+                    axios.post(url, dischargeTask).then(res => {
+                        if (res.data.success) {
+                            this.$set(dischargeTask, index, res.data.data);
+                            tempTip.showSuccess("任务操作成功");
+                            this.selectIndex = null;
+                            this.executingTack = {};
+                            return;
+                        }
+                        tempTip.show(res.data.message ? res.data.message : '任务操作失败');
+                    }).catch(err => {
+                        tempTip.show(err);
+                    })
                 },
-                updateCurrentTask(){
+                // 编辑当前任务
+                updateCurrentTask() {
                     // 更新
                     let url = '{{url('apiLocal/transport/discharge/task/updateTaskProviderApi')}}';
                     tempTip.setDuration(2000);
                     tempTip.setIndex(99);
-                    axios.post(url,this.addTask).then(res=>{
-                        if(res.data.success){
-                            this.$set(this.dischargeTasks,this.selectIndex,res.data.data);
+                    axios.post(url, this.addTask).then(res => {
+                        if (res.data.success) {
+                            this.$set(this.dischargeTasks, this.selectIndex, res.data.data);
                             tempTip.showSuccess("订单修改成功")
+                            this.addTask = {};
+                            this.selectIndex = null;
                             return;
                         }
                         tempTip.show(res.data.message)
-                    }).catch(err=>{
+                    }).catch(err => {
                         tempTip.show(err);
                     });
-                    this.selectIndex = null,
+                    this.selectIndex = null;
                 },
-                deleteTask(index,dischargeTask){
-                    // 删除
-                    if(!confirm("是否删除当前任务")){
+                // 删除当前任务
+                deleteTask(index, dischargeTask) {
+                    if (!confirm("是否删除当前任务")) {
                         return
                     }
                     let url = '{{url('apiLocal/transport/discharge/task/deleteApi')}}';
                     tempTip.setDuration(2000);
                     tempTip.setIndex(99);
-                    axios.post(url,{id:dischargeTask.id}).then(res=>{
-                        if(res.data.success){
-                            this.$delete(this.dischargeTasks,index);
+                    axios.post(url, {id: dischargeTask.id}).then(res => {
+                        if (res.data.success) {
+                            this.$delete(this.dischargeTasks, index);
                             tempTip.showSuccess('删除成功')
                             return
                         }
-                        tempTip.show('删除失败!'+res.data.data)
-                    }).catch(err=>{
+                        tempTip.show('删除失败!' + res.data.data)
+                    }).catch(err => {
                         tempTip.show(err);
                     });
                 },
-                dischargeTaskExport(isExportAll){
-                    // 下载
-                    let url = '{{url('transport/discharge/task/export')}}';
-                    let token='{{ csrf_token() }}';
-                    excelExport(isExportAll,this.checkData,url,this.sum,token);
-                },
-                orderIssueExport(sign) {
+                // 下载
+                dischargeTaskExport(isExportAll) {
                     let url = '{{url('transport/discharge/task/export')}}';
                     let token = '{{ csrf_token() }}';
-                    if (sign) {
-                        excelExport(true, this.checkData, url, this.total, token);
-                    } else {
-                        excelExport(false, this.checkData, url, null, token);
-                    }
+                    excelExport(isExportAll, this.checkData, url, this.sum, token);
                 },
-                filterOwner(e){
+                // 筛选货主
+                filterOwner(e) {
                     let value = $(e.target).val();
-                    if(value==='')this.ownerFilter = JSON.parse(JSON.stringify(this.owners));
-                    else{
-                        this.ownerFilter = this.owners.filter(function(owner){
+                    if (value === '') this.ownerFilter = JSON.parse(JSON.stringify(this.owners));
+                    else {
+                        this.ownerFilter = this.owners.filter(function (owner) {
                             return owner.name.indexOf(value) !== -1;
                         });
                     }
+                },
+                // 筛选服务商
+                filterProviders(e) {
+                    let value = $(e.target).val();
+                    if (value === '') this.dischargeProvidersFilter = JSON.parse(JSON.stringify(this.dischargeProviders));
+                    else {
+                        this.dischargeProvidersFilter = this.dischargeProviders.filter(function (providers) {
+                            return providers.name.indexOf(value) !== -1;
+                        });
+                    }
                 }
+
             }
         })
     </script>

+ 2 - 2
resources/views/transport/menu.blade.php

@@ -4,12 +4,12 @@
             <!--  权限 ***  -->
 
             <li class="nav-item">
-                <a target="transport/waybill/recycle" class="nav-link" href="{{url('transport/waybill/recycle/index')}}" :class="{active:isActive('waybill',2)}">运单</a>
+                <a target="transport/waybill/recycle/index" class="nav-link" href="{{url('transport/waybill/recycle/index')}}" :class="{active:isActive('waybill',2)}">运单</a>
             </li>
 
             <!--  权限 ***  -->
             <li class="nav-item">
-                <a target="transport/discharge/task" class="nav-link" href="{{url('transport/discharge/task/index')}}" :class="{active:isActive('discharge',2)}">卸货</a>
+                <a target="transport/discharge/task/index" class="nav-link" href="{{url('transport/discharge/task/index')}}" :class="{active:isActive('discharge',2)}">卸货</a>
             </li>
         </ul>
     </div>