فهرست منبع

修改工单 提交成功

ajun 4 سال پیش
والد
کامیت
a71d471744

+ 33 - 9
app/Http/Controllers/WorkOrderController.php

@@ -31,11 +31,11 @@ class WorkOrderController extends Controller
         if (!Gate::allows('订单管理-工单处理-查询')) return redirect('/');
 
         $workOrders = WorkOrder::query()->filter($filters)->with(['type', 'creator', 'order' => function ($query) {
-                /** @var $query Builder */
-                $query->with('packages', 'issue','logistic');
-            }, 'reviewer'])->orderByDesc('created_at', 'grad', 'status')->paginate($request['paginate'] ?? 50);
+            /** @var $query Builder */
+            $query->with('packages', 'issue', 'logistic');
+        }, 'reviewer'])->orderByDesc('created_at', 'grad', 'status')->paginate($request['paginate'] ?? 50);
         $logistics = Logistic::all();
-        return view('order.workOrder.index', compact('workOrders','logistics'));
+        return view('order.workOrder.index', compact('workOrders', 'logistics'));
     }
 
     public function create()
@@ -64,20 +64,44 @@ class WorkOrderController extends Controller
      * @param WorkOrderService $service
      * @return array
      */
-    public function interceptOrderApi(Request $request,WorkOrderService $service): array
+    public function interceptOrderApi(Request $request, WorkOrderService $service): array
     {
         if (!Gate::allows('订单管理-订单-生成工单')) return ['success' => false, 'message' => '没有对应的创建权限'];
 
         $uniquely_tags = $request['order_nos'];
 
-        $work_order_type = app(WorkOrderTypeService::class)->findOrCreate('订单拦截','orders','订单','订单拦截');
+        $work_order_type = app(WorkOrderTypeService::class)->findOrCreate('订单拦截', 'orders', '订单', '订单拦截');
 
-        $result = $service->exists($work_order_type['id'],$uniquely_tags);     // 检查订单号和工单类型是否有对应的工单
+        $result = $service->exists($work_order_type['id'], $uniquely_tags);     // 检查订单号和工单类型是否有对应的工单
 
         if ($result['success'])
-            return ['success' => false,'message' => join(",", array($result['data'])) . "已有对应的订单拦截工单"];
+            return ['success' => false, 'message' => join(",", array($result['data'])) . "已有对应的订单拦截工单"];
 
-        return $service->interceptOrder($work_order_type,$uniquely_tags,$request['grad']);
+        return $service->interceptOrder($work_order_type, $uniquely_tags, $request['grad']);
+    }
+
+    /**
+     * 生成订单修改工单
+     * @param Request $request
+     * @param WorkOrderService $service
+     * @return array
+     */
+    public function editOrderReceiveInfoApi(Request $request,WorkOrderService $service): array
+    {
+        if (!Gate::allows('订单管理-订单-生成工单')) return ['success' => false, 'message' => '没有对应的创建权限'];
+
+        if (is_array($request['order_nos'])) return ['success' => false,'message' => '参数错误'];
+
+        $uniquely_tag = $request['order_nos'];
+
+        $work_order_type = app(WorkOrderTypeService::class)->findOrCreate('订单收件信息修改', 'orders', '订单', '订单收件信息修改');
+
+        $result = $service->exists($work_order_type['id'], $uniquely_tag);     // 检查订单号和工单类型是否有对应的工单
+
+        if($result['success'])
+            return ['success' => false,'message' => join(",", array($result['data'])) . "已有对应的订单信息修改工单"];
+
+        return $service->editOrder($work_order_type,$uniquely_tag,$request['remake']);
     }
 
     /**

+ 32 - 0
app/Services/WorkOrderService.php

@@ -51,6 +51,38 @@ class WorkOrderService
         return ['success' => true];
     }
 
+    /**
+     * 创建 信息更改 工单
+     * @param $workOrderType
+     * @param $uniquelyTag
+     * @param $remake
+     * @param int $grad
+     * @param int $status
+     * @return bool[]
+     */
+    public function editOrder($workOrderType, $uniquelyTag,$remake,int $grad = 1,int $status = 1) :array
+    {
+        app("OrderService")->syncOrderByCodes([$uniquelyTag]);  // 同步订单
+        $creator_id = Auth::user()['id'];  // 创建人
+        $order = Order::query()->where('code',$uniquelyTag)->first();
+
+        if (!$order) return ['success' => false,'message' => '对应订单未找到'];
+        WorkOrder::query()->create(
+            [
+                'creator_id' => $creator_id,
+                'work_order_type_id' => $workOrderType->id,
+                'grad' => $grad,
+                'remark' => $remake,
+                'outer_table_name' => $workOrderType->table_name ?? 'orders',
+                'order_id' => $order->id ?? '',
+                'uniquely_tag' => $uniquelyTag,
+                'status' => $status,
+                'created_at' => Carbon::now(),
+            ]
+        );
+        return ['success' => true];
+    }
+
     /**
      * 工单审核
      * @param $wordOrder

+ 75 - 0
resources/views/order/index/_workOrderModal.blade.php

@@ -0,0 +1,75 @@
+<div class="modal fade " id="intercept-modal" tabindex="-1" role="dialog" aria-labelledby="checkModalLabel" aria-hidden="true">
+    <div class="modal-dialog modal-dialog-centered">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title" id="checkModalLabel" v-if="workType === '拦截'">拦截工单</h5>
+                <h5 class="modal-title" id="checkModalLabel" v-if="workType === '修改'">修改工单</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="grad" class="">任务紧急程度</label>
+                    <div class="pl-1">
+                        <div v-for="(item,i) in grads">
+                            <input type="radio" :id="'grad'+i" name="grad" :value="item.value" v-model="grad">
+                            <label :for="'grad'+i">@{{ item.name }}</label>
+                        </div>
+                    </div>
+                </div>
+
+                <template v-if="workType === '修改'">
+                    <hr>
+                    <div class="form-group">
+                        <label for="contact">收货人</label>
+                        <div class="pl-1">
+                            <input class="form-control" v-model="remark.name" id="contact">
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label for="phone">联系号码</label>
+                        <div class="pl-1">
+                            <input class="form-control" v-model="remark.phone" id="phone"></input>
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label for="province">省</label>
+                        <div class="pl-1">
+                            <input class="form-control" v-model="remark.province" id="province"></input>
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label for="city">市</label>
+                        <div class="pl-1">
+                            <input class="form-control" v-model="remark.city" id="city"></input>
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label for="istrict">区</label>
+                        <div class="pl-1">
+                            <input class="form-control" v-model="remark.district" id="district"></input>
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label for="adder">详细地址</label>
+                        <div class="pl-1">
+                            <input class="form-control" v-model="remark.adder" id="adder"></input>
+                        </div>
+                    </div>
+                </template>
+
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭
+                </button>
+                <button type="button" class="btn btn-outline-primary" @click="interceptOrder" v-if="workType === '拦截'">
+                    提交
+                </button>
+                <button type="button" class="btn btn-outline-primary" @click="changeReceiveInfo" v-if="workType === '修改'">
+                    提交
+                </button>
+            </div>
+        </div>
+    </div>
+</div>

+ 55 - 35
resources/views/order/index/delivering.blade.php

@@ -37,7 +37,10 @@
 
                     <button class="btn btn-sm ml-1 btn-primary" @click="copyLogisticNumber()">复制快递单号</button>
                     @can('订单管理-订单-生成工单')
-                    <button class="btn btn-sm ml-1 btn-outline-secondary" @click="showInterceptModel()">订单拦截</button>
+                    <button class="btn btn-sm ml-1 btn-outline-secondary" @click="showInterceptModel('拦截')">订单拦截</button>
+                    @endcan
+                    @can('订单管理-订单-生成工单')
+                        <button class="btn btn-sm ml-1 btn-outline-success" @click="showInterceptModel('修改')">订单修改</button>
                     @endcan
                 </div>
                 <div class="modal fade " style="top: 20%" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
@@ -223,39 +226,9 @@
                         </div>
                     </div>
                 </div>
-
-                <div class="modal fade " id="intercept-modal" tabindex="-1" role="dialog" aria-labelledby="checkModalLabel" aria-hidden="true">
-                    <div class="modal-dialog modal-dialog-centered">
-                        <div class="modal-content">
-                            <div class="modal-header">
-                                <h5 class="modal-title" id="checkModalLabel">拦截工单生成提示</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="grad" class="">任务紧急程度</label>
-                                    <div class="pl-1">
-                                        <div v-for="(item,i) in grads">
-                                            <input type="radio" :id="'grad'+i" name="grad" :value="item.value" v-model="grad">
-                                            <label :for="'grad'+i">@{{ item.name }}</label>
-                                        </div>
-                                    </div>
-                                </div>
-                            </div>
-                            <div class="modal-footer">
-                                <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭
-                                </button>
-                                <button type="button" class="btn btn-outline-primary" @click="interceptOrder">
-                                    提交
-                                </button>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-
-
+                @can('订单管理-订单-生成工单')
+                @include('order.index._workOrderModal')
+                @endcan
                 <textarea  id="clipboardDiv" style="opacity:0"></textarea>
             </div>
         </div>
@@ -310,6 +283,15 @@
                 },
                 upList:{},
                 grad:1,
+                remark:{
+                    name:null,     // 联系人
+                    phone:null,    // 联系号码
+                    province:null, // 省
+                    city:null,      // 市
+                    district:null,  // 区
+                    adder:null,     // 详细地址
+                },
+                workType:'',
                 grads:[
                     {name:'一般',value:'1'},
                     {name:'重要',value:'2'},
@@ -925,12 +907,30 @@
                     }else {char+=order.soreference5}
                     return char;
                 },
-                showInterceptModel(){
+                showInterceptModel(type = '拦截'){
                     this.grad = 1;
                     if(checkData.length === 0){
                         tempTip.show('选中订单在进行操作');
                         return;
                     }
+                    this.workType = type;
+                    if (type==='修改' && checkData.length > 1){
+                        window.tempTip.show('请选中一条订单来修改收货信息');
+                        return;
+                    }
+                    if (type ==='修改'){
+                        this.orders.forEach(order=>{
+                            if (order.orderno === checkData[0]){
+                                this.remark.name = order.c_contact
+                                this.remark.phone = order.c_tel2?order.c_tel2:order.c_tel1;
+                                this.remark.province = order.c_province;
+                                this.remark.city = order.c_city;
+                                this.remark.district = order.c_district
+                                this.remark.adder = order.c_address1;
+                            }
+                        });
+                    }
+
                     $('#intercept-modal').modal('show');
                 },
                 interceptOrder(){    // 订单拦截
@@ -950,6 +950,26 @@
                     }).catch(err=>{
                         window.tempTip.show(err);
                     });
+                },
+                changeReceiveInfo() {
+                    let url = '{{url('apiLocal/workOrder/editOrderReceiveInfo')}}';
+                    let data = {
+                        order_nos:checkData[0],
+                        grad:this.grad,
+                        remake:`${this.remark.name} ${this.remark.phone} ${this.remark.province} ${this.remark.city} ${this.remark.city} ${this.remark.district} ${this.remark.adder}`,
+                    };
+                    console.log(data);
+                    window.tempTip.setIndex('1999');
+                    window.axios.post(url,data).then(res=>{
+                        if (res.data.success){
+                            window.tempTip.showSuccess('生成修改工单成功');
+                            $('#intercept-modal').modal('hide');
+                        } else{
+                            window.tempTip.show(res.data.message);
+                        }
+                    }).catch(err=>{
+                        window.tempTip.show(err);
+                    });
                 }
             },
         });

+ 11 - 5
resources/views/order/workOrder/index.blade.php

@@ -313,39 +313,45 @@
                                 + item.order.consignee_phone + ' '
                                 + item.order.province + ' ' + item.order.city + ' ' + item.order.district + ' ' + item.order.address;
                             item.order.packages.forEach(node=>{
-                                rest_logistic += item_order_logistic_name +' ' + node.logistic_number + ' '+item_order_adder + '——拦截\n';
+                                rest_logistic += item_order_logistic_name +' ' + node.logistic_number + ' '+item_order_adder + ' ——拦截\n';
                             });
                         }
                     });
-                    let text = zto_and_sf.trim('\n') + '——拦截' + '\n';
+                    let text = zto_and_sf.trim('\n') + ' ——拦截' + '\n';
                     text += rest_logistic;
                     this.copyText(text);
                 },
                 modificationMessage(){
                     let selectItems = this.getMessageWorkOrder();
+                    console.log(selectItems);
                     if (selectItems === null) return ;
                     let zto = '';
                     let sf = '';
                     let rest_logistic = '';
                     selectItems.forEach(item=>{
                         let logistic_code = item.order.logistic.code;
+                        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(node=> {
                             if (logistic_code.includes('SF')) { // 顺丰订单
                                 sf += node.logistic_number +' 改信息: ' + item.remark + ',运费到付或月结'+'\n';
                             } else if (logistic_code.includes('ZTO')){
-                                zto += node.logistic_number + ' 改信息' +item.remark+'\n';
+                                zto += node.logistic_number + ' 改信息:' +item.remark+'\n';
+                                console.log(zto);
                             } else {
-
+                                rest_logistic += node.logistic_number + ' '+ adder +' ——改地址'+item.remark + '\n';
                             }
                         });
                     });
+                    let text = sf + zto + rest_logistic;
+                    this.copyText(text);
                 },
                 copyText(text){
                     let ele = document.querySelector('#copy_text');
                     if (ele == null ){
                         ele = document.createElement("textarea");
                         ele.setAttribute('id','copy_text')
-                        ele.style.opacity=0;
+                        ele.style.opacity = 0;
                         document.querySelector('body').append(ele);
                     }
                     try {

+ 1 - 0
routes/apiLocal.php

@@ -230,6 +230,7 @@ Route::group(['prefix' => 'print'],function (){
 
 Route::prefix('workOrder')->group(function(){
     Route::post('interceptOrder','WorkOrderController@interceptOrderApi');
+    Route::post('editOrderReceiveInfo','WorkOrderController@editOrderReceiveInfoApi');
     Route::post('review','WorkOrderController@reviewApi');
     Route::post('createOrderIssue','WorkOrderController@createOrderIssueApi');
 });