Quellcode durchsuchen

Merge branch 'zengjun'

zhouzhendong vor 4 Jahren
Ursprung
Commit
e5c0d20e0c

+ 18 - 5
app/Filters/WorkOrderFilters.php

@@ -7,6 +7,7 @@ use App\Order;
 use App\OrderIssue;
 use App\OrderPackage;
 use App\Traits\ModelSearchWay;
+use App\User;
 use App\WorkOrder;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Http\Request;
@@ -30,7 +31,9 @@ class WorkOrderFilters
         'is_review',
         'logistic_number',
         'is_issue_order',
+        'order_issue_type',
         'grad',
+        'owner'
     ];
     protected $array_filter;
     protected $params = [];
@@ -128,12 +131,10 @@ class WorkOrderFilters
         $this->queryBuilder->where('work_orders.review_at','<=',$review_at_end);
     }
     // 创建人
-    public function creator($id)
+    public function creator($creator)
     {
-        if (is_array($id))
-            $this->queryBuilder->whereIn('work_orders.creator_id',$id);
-        else
-            $this->queryBuilder->where('work_orders.creator_id',$id);
+        $userQuery = User::query()->select('id')->where('name','like',"%{$creator}%");;
+        $this->queryBuilder->whereIn('creator_id',$userQuery);
     }
     // 审核人
     public function reviewer($id)
@@ -154,6 +155,11 @@ class WorkOrderFilters
         else $this->workOrderTypeQuery->where('id',$word_order_types);
     }
 
+    public function order_issue_type($order_issue_type)
+    {
+        $this->queryBuilder->where('order_issue_type_id',$order_issue_type);
+    }
+
     // 快递单号
     public function logistic_number($logistic_number)
     {
@@ -182,4 +188,11 @@ class WorkOrderFilters
         $this->queryBuilder->where('grad',$grad);
     }
 
+    // 货主
+    public function owner($owner)
+    {
+        $this->searchWay($this->queryBuilder,$owner,'work_orders.owner_id');
+    }
+
+
 }

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

@@ -57,6 +57,7 @@ use App\UserDetail;
 use App\UserDutyCheck;
 use App\ValueStore;
 use App\Waybill;
+use App\WorkOrder;
 use Carbon\Carbon;
 use Carbon\CarbonPeriod;
 use Firebase\JWT\JWT;
@@ -246,4 +247,24 @@ sql;
                 ]);
         }
     }
+
+    public function updateWorkOrder(){
+        $items = WorkOrder::query()->with('order.owner')->get();
+        $params = [];
+        $items->each(function($item)use(&$params){
+            if ($item->order){
+                $owner_id = $item->order->owner_id;
+
+                $params[] = [
+                    'id' => $item->id,
+                    'order_id' => $item->order->id,
+                    'owner_id' => $owner_id,
+                ];
+                $item->owner_id = $owner_id;
+                $item->save();
+            }
+        });
+    }
+
+
 }

+ 16 - 3
app/Http/Controllers/WorkOrderController.php

@@ -6,6 +6,7 @@ use App\Filters\WorkOrderFilters;
 use App\Logistic;
 use App\OrderIssue;
 use App\OrderIssueType;
+use App\Services\OwnerService;
 use App\Services\WorkOrderService;
 use App\WorkOrder;
 use Illuminate\Database\Eloquent\Builder;
@@ -18,12 +19,12 @@ class WorkOrderController extends Controller
     public function index(Request $request, WorkOrderFilters $filters, WorkOrderService $service)
     {
         if (Gate::denies('订单管理-工单处理-查询')) return redirect('/');
-
         $workOrders = WorkOrder::query()->filter($filters)->defaultWith()->orderBy('created_at')->orderByDesc('status')->paginate($request['paginate'] ?? 50);
         $logistics = Logistic::all();
-        $orderIssueTypes = OrderIssueType::all();
+        $orderIssueTypes = $service->getIssueType();
+        $owners = app('OwnerService')->getAuthorizedOwners();
         $service->tags($workOrders);
-        return view('order.workOrder.index', compact('workOrders', 'logistics', 'orderIssueTypes'));
+        return view('order.workOrder.index', compact('workOrders', 'logistics', 'orderIssueTypes','owners'));
     }
 
     // 审核 api
@@ -87,4 +88,16 @@ class WorkOrderController extends Controller
         WorkOrder::query()->where('id',$request['id'])->update(['order_issue_type_id' => $request['type_id']]);
         return ['success' => true];
     }
+
+    // 批量修改问题件类型
+    public function batchUpdateIssueTypeApi(Request $request,WorkOrderService $service): array
+    {
+        if (Gate::denies('订单管理-工单处理-审核'))
+            return ['success' => false,'message' => '没有对应权限'];
+        WorkOrder::query()->whereIn('id',$request['ids'])->update(['order_issue_type_id' => $request['type']]);
+        $items = WorkOrder::query()->defaultWith()->whereIn('id',$request['ids'])->get();
+        $service->tags($items);
+        return ['success' => true,'data' => $items];
+    }
+
 }

+ 4 - 0
app/Http/Controllers/api/thirdPart/weight/WeightBaseController.php

@@ -406,6 +406,10 @@ class WeightBaseController
             if(strlen($a) == strlen($b))return 0;
             return strlen($a) < strlen($b) ? 1 : -1;
         });
+        if (count($codes) > 1){
+            $item = OrderPackage::query()->whereIn('logistic_number',$codes)->first();
+            if ($item)return $item->logistic_number;
+        }
         return $codes[0] ?? null;
     }
 

+ 10 - 1
app/Services/WorkOrderService.php

@@ -28,6 +28,14 @@ class WorkOrderService
         '破损' => '快递破损',
     ];
 
+    /**
+     * 获取可生成工单的问题件类型
+     * @return Builder[]|\Illuminate\Database\Eloquent\Collection
+     */
+    public function getIssueType(){
+        return OrderIssueType::query()->whereIn('name',['拦截','信息更改','其他', '快递异常','错漏发','破损'])->get();
+    }
+
     /**
      * 生成工单
      * @param $params
@@ -60,7 +68,7 @@ class WorkOrderService
             }
             switch ($type_name) {
                 case '拦截':
-                    $remark = "拦截订单:".$order->client_code ?? '';
+                    $remark = "拦截订单";
                     break;
                 case '信息更改':
                 case '其他':
@@ -79,6 +87,7 @@ class WorkOrderService
                 'order_id' => $order['id'],
                 'creator_id' => $creator_id,
                 'work_order_type_id' => $work_order_type_id ?? 0,
+                'owner_id' => $order['owner_id'] ?? '',
                 'grad' => $param['grad'] ?? 1,
                 'remark' => $remark,
                 'outer_table_name' => 'orders',

+ 23 - 16
app/WorkOrder.php

@@ -22,6 +22,7 @@ class WorkOrder extends Model
         'status',           // 状态
         'creator_id',       // 创建人
         'reviewer_id',      // 审核人
+        'owner_id',      // 货主
         'order_issue_type_id', // 问题件类型
         'work_order_type_id',  // 工单类型
         'grad',         // 紧急等级
@@ -105,6 +106,12 @@ class WorkOrder extends Model
         return $this->belongsTo(Order::class);
     }
 
+    // 关联货主
+    public function owner(): BelongsTo
+    {
+        return $this->belongsTo(Owner::class,'owner_id');
+    }
+
     // 工单类型
     public function type(): BelongsTo
     {
@@ -132,9 +139,9 @@ class WorkOrder extends Model
     /** 默认 with 参数 */
     public function scopeDefaultWith($query)
     {
-        $query->with(['type','issueType','creator','reviewer','order'=>function($query){
+        $query->with(['type','owner','issueType','creator','reviewer','order'=>function($query){
             /** @var $query Builder */
-            $query->with('packages','logistic');
+            $query->with('packages','logistic','owner');
         },'orderIssue'=>function($query){
             /** @var $query Builder */
             $query->with(['issueType','logs'=>function($query){
@@ -145,20 +152,20 @@ class WorkOrder extends Model
                 }
             }]);
         }]);
-
-        $query->with(['type', 'creator', 'order' => function ($query) {
-            /** @var $query Builder */
-            $query->with(['packages', 'issue'=>function($query){
-                /** @var $query Builder */
-                $query->with(['issueType','logs'=>function($query){
-                    if (Gate::denies('订单管理-问题件-客户不可见')){
-                        $query->with('user')->orderByDesc('created_at');
-                    } else{
-                        $query->with('user')->where('tag','=',0)->orderByDesc('created_at');
-                    }
-                }]);
-            }, 'logistic']);
-        }, 'reviewer','issueType']);
+//
+//        $query->with(['type','owner', 'creator', 'order' => function ($query) {
+//            /** @var $query Builder */
+//            $query->with(['packages','owner', 'issue'=>function($query){
+//                /** @var $query Builder */
+//                $query->with(['issueType','logs'=>function($query){
+//                    if (Gate::denies('订单管理-问题件-客户不可见')){
+//                        $query->with('user')->orderByDesc('created_at');
+//                    } else{
+//                        $query->with('user')->where('tag','=',0)->orderByDesc('created_at');
+//                    }
+//                }]);
+//            }, 'logistic']);
+//        }, 'reviewer','issueType']);
     }
 
 }

+ 32 - 0
database/migrations/2021_09_04_160531_add_column_owner_id_work_orders.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddColumnOwnerIdWorkOrders extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('work_orders', function (Blueprint $table) {
+            $table->tinyInteger('owner_id')->index()->comment('货主');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('work_orders', function (Blueprint $table) {
+            $table->dropColumn('owner_id');
+        });
+    }
+}

+ 27 - 0
resources/views/order/workOrder/_edit_issue_type.blade.php

@@ -0,0 +1,27 @@
+<div class="modal fade" id="edit-issue-type-type-modal" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true" z-index="51">
+    <div class="modal-dialog">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title" id="edit-issue-type-type">问题件类型修改</h5>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">&times;</span>
+                </button>
+            </div>
+            <div class="modal-body">
+                <div class="form-group">
+                    <label for="">
+                        问题件类型
+                    </label>
+                    <select v-model="selectIssueType" class="form-control">
+                        <option value=""></option>
+                        <option v-for="type in orderIssueTypes" :value="type.name">@{{ type.value }}</option>
+                    </select>
+                </div>
+            </div>
+            <div class="modal-footer">
+                <button @click="selectIssueType = ''" type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
+                <button @click="editOrderIssueType" type="button" class="btn btn-primary">提交</button>
+            </div>
+        </div>
+    </div>
+</div>

+ 154 - 67
resources/views/order/workOrder/index.blade.php

@@ -26,10 +26,21 @@
                         </button>
                         </span>
                     @endcan
+                    <span class="ml-1">
+                    <button type="button" class="btn btn-outline-dark btn-sm form-control-sm  tooltipTarget"
+                            @click="copyLogisticNumber()" style="background: #dad7e8;">批量复制单号</button>
+                    </span>
+                    @can('订单管理-工单处理-审核')
+                        <span class="ml-1">
+                        <button type="button" class="btn btn-outline-success btn-sm form-control-sm  tooltipTarget"
+                                @click="showEditIssueType">
+                            批量修改问题件类型
+                        </button>
+                        </span>
+                    @endcan
                 </div>
 
                 <div>
-
                     <table class="table table-sm table-striped table-hover table-bordered td-min-width-80" id="table">
                         <tbody class="">
                         <template v-for="(item,i) in workOrders">
@@ -43,18 +54,21 @@
                                 </td>
                                 <td class="text-center">
                                     @can('订单管理-订单问题件生成')
-                                        <button class="btn btn-sm btn-outline-primary" @click="createOrderIssue(item,true)" v-show="!item.is_issue_order ">
+                                        <button class="btn btn-sm btn-outline-primary"
+                                                @click="createOrderIssue(item,true)" v-show="!item.is_issue_order ">
                                             生成问题件
                                         </button>
                                     @endcan
                                     @can('订单管理-工单处理-审核')
-                                        <button class="btn btn-sm btn-outline-success" v-show="item.status !== '已处理'" @click="review(item,i)">
+                                        <button class="btn btn-sm btn-outline-success" v-show="item.status !== '已处理'"
+                                                @click="review(item,i)">
                                             审核
                                         </button>
                                     @endcan
                                 </td>
-                                <td>@{{item.type ? item.type.name : '' }}</td>
                                 <td class="text-center">@{{ item.status }}</td>
+                                <td class="text-center">@{{ item.owner ? item.owner.name : '' }}</td>
+                                <td class="text-center">@{{ item.order ? item.order.client_code : ''}}</td>
                                 <td>@{{item.order ? (item.order.logistic ? item.order.logistic.name : '') : '' }}</td>
                                 <td class="text-center">
                                     <template v-if="item.order">
@@ -88,9 +102,11 @@
                                         <select class="form-control form-control-sm"
                                                 :disabled="item.review_at || item.is_issue_order"
                                                 :value="item.order_issue_type_id"
-                                                @change="changeIssueType(item,$event)" >
+                                                @change="changeIssueType(item,$event)">
                                             <option value="0"></option>
-                                            <option  v-for="type in orderIssueTypes" :value="type.name">@{{ type.value }}</option>
+                                            <option v-for="type in orderIssueTypes" :value="type.name">@{{ type.value
+                                                }}
+                                            </option>
                                         </select>
                                     @else
                                         @{{ item.issue_type ?  item.issue_type.name : '' }}
@@ -99,7 +115,7 @@
                                 <td class="text-center">@{{ item.remark }}</td>
 
                                 <td class="text-center">
-                                        @{{ item.result_explain ?item.result_explain : '' }}
+                                    @{{ item.result_explain ?item.result_explain : '' }}
                                 </td>
                                 <td class="text-center">
                                     @{{ item.issue_order_type ?item.issue_order_type : '' }}
@@ -117,29 +133,30 @@
                                         </template>
                                         <template v-else>
                                             <transition name="fade">
-                                            <table class="table table-sm m-0" v-if="selectOrderIssue === item.id">
+                                                <table class="table table-sm m-0" v-if="selectOrderIssue === item.id">
 
                                                     <tr v-for="log in item.issue_logs">
                                                         <td>@{{ log.content }}</td>
                                                         <td>@{{ log.username }}</td>
                                                         <td>@{{ log.created_at }}</td>
                                                     </tr>
-                                            </table>
+                                                </table>
                                             </transition>
                                             <transition name="fade">
-                                            <table class="table table-sm m-0" v-if="selectOrderIssue !== item.id">
-                                                <tr>
-                                                <td>@{{ item.issue_logs[0].content }}</td>
-                                                <td>@{{ item.issue_logs[0].username }}</td>
-                                                <td>@{{ item.issue_logs[0].created_at }}</td>
-                                                </tr>
-                                            </table>
+                                                <table class="table table-sm m-0" v-if="selectOrderIssue !== item.id">
+                                                    <tr>
+                                                        <td>@{{ item.issue_logs[0].content }}</td>
+                                                        <td>@{{ item.issue_logs[0].username }}</td>
+                                                        <td>@{{ item.issue_logs[0].created_at }}</td>
+                                                    </tr>
+                                                </table>
                                             </transition>
                                             <button class="btn btn-sm btn-outline-primary"
                                                     v-show="selectOrderIssue !== item.id"
                                                     @click="selectOrderIssue = item.id">展开
                                             </button>
-                                            <button class="btn btn-sm btn-outline-primary" v-show="selectOrderIssue === item.id"
+                                            <button class="btn btn-sm btn-outline-primary"
+                                                    v-show="selectOrderIssue === item.id"
                                                     @click="selectOrderIssue = null">收起
                                             </button>
                                         </template>
@@ -187,18 +204,22 @@
                     {{ $workOrders->withQueryString()->links() }}
                 </div>
             </div>
+            @can('订单管理-工单处理-审核')
+                @include('order.workOrder._edit_issue_type')
+            @endcan
         </div>
     </div>
 @endsection()
 
 @section("lastScript")
     <script type="text/javascript" src="{{asset('js/queryForm/queryForm.js')}}"></script>
-    <script type="text/javascript" src="{{asset('js/queryForm/header.js')}}"></script>
+    <script type="text/javascript" src="{{mix('js/queryForm/header.js')}}"></script>
     <style>
         .fade-enter-active, .fade-leave-active {
             transition: opacity .5s;
         }
-        .fade-enter, .fade-leave-to  {
+
+        .fade-enter, .fade-leave-to {
             opacity: 0;
         }
     </style>
@@ -216,17 +237,24 @@
                     },
                     @endforeach
                 ],
-                orderIssueTypes:[
-                    @foreach($orderIssueTypes as $type)
-                    {name:'{{$type->id}}',value:"{{$type->name}}"},
+                orderIssueTypes: [
+                        @foreach($orderIssueTypes as $type)
+                    {
+                        name: '{{$type->id}}', value: "{{$type->name}}"
+                    },
+                    @endforeach
+                ],
+                owners:[
+                    @foreach($owners as $owner)
+                    {name:'{{$owner->id}}',value:'{{$owner->name}}'},
                     @endforeach
                 ],
                 selectOrderPackage: null,
                 selectOrder: null,
-                selectOrderIssue:null,
+                selectOrderIssue: null,
+                selectIssueType: '',
             },
             mounted() {
-                console.log();
                 let data = [[
                     {name: 'created_at_start', type: 'time', tip: ['工单创建开始日期', '时间']},
                     {name: 'created_at_end', type: 'time', tip: ['工单创建结束日期', '时间']},
@@ -237,6 +265,13 @@
                         tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的承运商'],
                         placeholder: ['承运商', '定位或多选承运商']
                     },
+                    {
+                        name: 'owner',
+                        type: 'select_multiple_select',
+                        data: this.owners,
+                        tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的货主'],
+                        placeholder: ['货主', '定位或多选货主']
+                    },
                     {name: 'logistic_number', type: 'input', placeholder: '快递单号'},
                     {
                         name: 'grad',
@@ -253,8 +288,10 @@
                         placeholder: '问题件',
                         data: [{name: 'true', value: '有'}, {name: 'false', value: '无'}]
                     },
+                    {name: 'creator', type: 'input', placeholder: '创建人'},
                 ], [{name: 'review_at_start', type: 'time', tip: ['工单审核开始日期', '时间']},
                     {name: 'review_at_end', type: 'time', tip: ['工单审核结束日期', '时间']},
+                    {name: 'order_issue_type', type: 'select', placeholder: '问题件类型', data: this.orderIssueTypes},
                     {name: 'is_review', type: 'checkbox', tip: '是否审核', data: [{name: 'true', value: '已审核'}]},
                 ]];
                 this.form = new query({
@@ -265,19 +302,22 @@
                 let column = [
                     {name: 'no', value: '序号', neglect: true},
                     {name: 'operation', value: '操作', neglect: true},
-                    {name: 'type', value: '相关类型'},
                     {name: 'status', value: '状态'},
+                    {name: 'owner', value: '货主'},
+                    {name: 'client_code', value: '订单号'},
                     {name: 'logisticName', value: '承运商'},
                     {name: 'logisticNumber', value: '快递单号'},
                     {name: 'issueType', value: '问题件类型'},
                     {name: 'workOrderInfo', value: '问题描述'},
-                    {name:'result_explain',value:'情况说明'},
-                    {name:'orderIssueType',value:'问题件类别'},
-                    {name:'orderIssueProcessLogs',type:'multi',title:"处理结果",rows:[
-                            {value:"内容",col:"4"},
-                            {value:"操作人",col:"4"},
-                            {value:"时间",col:"4"},
-                    ]},
+                    {name: 'result_explain', value: '情况说明'},
+                    {name: 'orderIssueType', value: '问题件类别'},
+                    {
+                        name: 'orderIssueProcessLogs', type: 'multi', title: "处理结果", rows: [
+                            {value: "内容", col: "4"},
+                            {value: "操作人", col: "4"},
+                            {value: "时间", col: "4"},
+                        ]
+                    },
                     {name: 'Info', value: '物流跟踪信息', neglect: true},
                     {name: 'creator', value: '创建人'},
                     {name: 'submit_at', value: '提交时间'},
@@ -287,11 +327,12 @@
 
                 new Header({
                     el: "table",
-                    name: "area",
+                    name: "workOrders",
                     column: column,
                     data: this.workOrders,
                     fixedTop: ($('#form_div').height()) + 2,
                 }).init();
+
                 $("#list").removeClass("d-none");
             },
             created() {
@@ -306,17 +347,17 @@
                 sortOrder(workOrder) {
                     let self = this;
                     if (!workOrder.order) return;
-                    if (workOrder.order_issue){
+                    if (workOrder.order_issue) {
                         workOrder.result_explain = workOrder.order_issue.result_explain;
-                        if (workOrder.order_issue.issue_type){
+                        if (workOrder.order_issue.issue_type) {
                             workOrder.issue_order_type = workOrder.order_issue.issue_type.name;
                         }
-                        if (workOrder.order_issue.logs){
-                            workOrder.issue_logs  = workOrder.order_issue.logs.map(item=>{
+                        if (workOrder.order_issue.logs) {
+                            workOrder.issue_logs = workOrder.order_issue.logs.map(item => {
                                 return {
-                                    username : item.user ? item.user.name : '',
+                                    username: item.user ? item.user.name : '',
                                     content: item.content,
-                                    created_at : item.created_at
+                                    created_at: item.created_at
                                 };
                             });
                         }
@@ -359,14 +400,14 @@
                     if (tag) data.ids = [item.id];
                     else data.ids = checkData;
                     if (!confirm('是否生成对应的问题件')) return;
-                    let _this =this;
+                    let _this = this;
                     window.axios.post(url, data).then(res => {
                         if (res.data.success) {
-                            res.data.data.forEach(item=>{
-                                this.workOrders.forEach((workOrder,i)=>{
-                                    if (item.id === workOrder.id){
+                            res.data.data.forEach(item => {
+                                this.workOrders.forEach((workOrder, i) => {
+                                    if (item.id === workOrder.id) {
                                         _this.sortOrder(item);
-                                        _this.$set(_this.workOrders,i,item);
+                                        _this.$set(_this.workOrders, i, item);
                                     }
                                 });
                             });
@@ -391,34 +432,39 @@
                         return selected.includes(item.id + '');
                     });
                 },
-                exportText(){
+                exportText() {
                     let items = this.getMessageWorkOrder();
-                    if (items == null) return ;
+                    if (items == null) return;
                     let text = '';
-                    items.forEach(item=>{
+                    items.forEach(item => {
                         if (item.order) text += this.getExportText(item);
                     });
                     this.copyText(text);
                 },
-                getExportText(item){
+                getExportText(item) {
                     if (!item.order) return '';
                     if (!item.order.packages) return '';
-                    switch (item.issue_order_type){
+                    let message = '';
+                    switch (item.issue_order_type) {
                         case '拦截':
-                            return this.interceptMessage(item);
-                        case '信息修改':
-                            return this.modificationMessage(item);
-                        default :
-                            return  this.getMessage(item);
+                            message = this.interceptMessage(item);
+                            break;
+                        case '信息更改':
+                            message = this.modificationMessage(item);
+                            break;
+                        default:
+                            message = this.getMessage(item);
+                            break;
                     }
+                    return message;
                 },
                 interceptMessage(item) {
-                    let message  = '';
+                    let message = '';
                     if (item.order.logistic.code.includes('SF') || item.order.logistic.code.includes('ZTO')) {
                         item.order.packages.forEach(node => {
                             message += node.logistic_number + '\n';
                         });
-                        message = message.trim('\n') +  ' ——拦截\n';
+                        message = message.trim('\n') + ' ——拦截\n';
                     } else {
                         let item_order_logistic_name = item.order.logistic.name;
                         let item_order_adder = item.order.consignee_name + ' '
@@ -427,7 +473,7 @@
                         item.order.packages.forEach(p => {
                             if (p) message += item_order_logistic_name + ' ' + p.logistic_number + ' ' + item_order_adder + '\n';
                         });
-                        message = message.trim('\n') +  ' ——拦截\n';
+                        message = message.trim('\n') + ' ——拦截\n';
                     }
                     return message;
                 },
@@ -447,13 +493,13 @@
                     });
                     return message;
                 },
-                getMessage(item){
+                getMessage(item) {
                     let message = '';
                     if (!item.order.packages) return message;
                     let adder = item.order.consignee_name + ' ' + item.order.consignee_phone + ' '
                         + item.order.province + ' ' + item.order.city + ' ' + item.order.district + ' ' + item.order.address;
-                    item.order.packages.forEach(p=>{
-                        message+= p.logistic_number + '  '+ adder + ' ——描述 '+item.remark+'\n';
+                    item.order.packages.forEach(p => {
+                        message += p.logistic_number + '  ' + adder + ' ——描述 ' + item.remark + '\n';
                     });
                     return message;
                 },
@@ -497,23 +543,64 @@
                         window.tempTip.show(err);
                     })
                 },
-                changeIssueType(item,e){
+                changeIssueType(item, e) {
                     let url = '{{route('workOrder.updateIssueTypeApi')}}';
                     let data = {
-                        id:item.id,
+                        id: item.id,
                         type_id: $(e.target).val()
                     };
-                    window.axios.post(url,data).then(res=>{
-                        if (res.data.success){
+                    window.axios.post(url, data).then(res => {
+                        if (res.data.success) {
                             window.tempTip.showSuccess('修改成功');
                             item.order_issue_type_id = data.type_id;
-                        }else{
+                        } else {
                             window.tempTip.show(res.data.message ? res.data.message : '修改异常');
                         }
-                    }).catch(err=>{
+                    }).catch(err => {
                         window.tempTip.show(err);
                     });
-                }
+                },
+                copyLogisticNumber() {
+                    let items = this.getMessageWorkOrder();
+                    let logistic_numbers = '';
+                    items.forEach(item => {
+                        item.order.packages.forEach(node => {
+                            logistic_numbers += node.logistic_number + '\n';
+                        });
+                    })
+                    this.copyText(logistic_numbers);
+                },
+                showEditIssueType() {
+                    this.selectIssueType = 0;
+                    $("#edit-issue-type-type-modal").modal('show');
+                },
+                editOrderIssueType() {
+                    let url = '{{route('workOrder.batchUpdateIssueTypeApi')}}'
+                    let data = {ids: checkData, type: this.selectIssueType};
+                    let _this = this;
+                    window.tempTip.setIndex(1999);
+                    window.axios.post(url, data).then(res => {
+                        if (res.data.success) {
+                            window.tempTip.showSuccess('修改问题件类型成功');
+
+                            res.data.data.forEach(item => {
+                                _this.sortOrder(item);
+                                _this.workOrders.forEach((workOrder, i, array) => {
+                                    if (workOrder.id === item.id) {
+                                        array[i] = item;
+                                    }
+                                })
+                            });
+                            this.$forceUpdate();
+                            $("#edit-issue-type-type-modal").modal('hide');
+                            return;
+                        }
+                        window.tempTip.show(res.data.message ? res.data.message : '修改异常');
+                    }).catch(err => {
+                        window.tempTip.show(err)
+                    })
+                },
+
             },
         });
     </script>

+ 1 - 0
routes/apiLocal.php

@@ -266,4 +266,5 @@ Route::prefix('workOrder')->group(function(){
     Route::post('batchReview','WorkOrderController@batchReviewApi')->name('workOrder.batchReviewApi');  // 批量审核
     Route::post('buildOrderIssue','WorkOrderController@buildOrderIssueApi')->name('workOrder.buildOrderIssueApi');  // 生成问题件
     Route::post('updateIssueType','WorkOrderController@updateIssueTypeApi')->name('workOrder.updateIssueTypeApi'); // 修改问题类型
+    Route::post('batchUpdateIssueType','WorkOrderController@batchUpdateIssueTypeApi')->name('workOrder.batchUpdateIssueTypeApi'); // 修改问题类型
  });