Selaa lähdekoodia

Merge branch 'master' of ssh://47.103.131.176:10022/var/git/bswas

zhouzhendong 4 vuotta sitten
vanhempi
commit
8e35f64bc6

+ 7 - 3
app/Filters/WorkOrderFilters.php

@@ -402,12 +402,16 @@ class WorkOrderFilters
 
     public function status($status)
     {
+        $status = array_filter(preg_split('/[,, ]+/u', $status));
+
         $status_list = [];
-        if ($status == '承运商处理') {
+        if (in_array('承运商处理',$status)) {
             array_push($status_list, 3);
-        } elseif ($status == '宝时处理') {
+        }
+        if (in_array('宝时处理',$status)) {
             array_push($status_list, 4, 1);
-        } elseif ($status == '货主处理') {
+        }
+        if (in_array('货主处理',$status)) {
             array_push($status_list, 2, 6);
         }
         $this->queryBuilder->whereIn('status', $status_list);

+ 1 - 1
app/Http/Controllers/DeliveryAppointmentController.php

@@ -684,7 +684,7 @@ html;
         $asn = preg_split('/[,, ]+/is', request("asn"));
         $asnNos = $this->checkAndGetAsn(request("asn"));
         if(!$asnNos) $this->error("无此ASN单号");
-        if (!$asn || strlen(request("asn"))<13)$this->error("非法ASN单号");
+        if (!$asn)$this->error("非法ASN单号");
         $owner = request("owner_id");
         $asnNos = preg_split('/[,, ]+/u', $asnNos);
         $query = Store::query()->whereIn("asn_code",$asnNos);

+ 1 - 1
app/Http/Controllers/OrderDetailController.php

@@ -33,6 +33,6 @@ class OrderDetailController extends Controller
         $order_detail = OrderDetail::query()->where('order_id',$request->input('order_id'))->first();
 
         $order_detail->update(['is_new_rejecting' => '已处理']);
-        return ['success' => success,'data' => $order_detail];
+        return ['success' => true,'data' => $order_detail];
     }
 }

+ 2 - 1
app/Http/Controllers/WorkOrderController.php

@@ -279,7 +279,7 @@ class WorkOrderController extends Controller
     {
         $json = [];
         $row = [
-            '工单类型', '当前进度', '客户', '店铺名称', '客户订单号', '承运人', '快递单号', '创建时间', '当前处理人', '创建人', '情况说明', '退回单号', '退回商品', '退回商品名称', '退回商品数量', '是否正品', '操作类型', '操作人', '内容'
+            '工单类型', '当前进度', '客户', '店铺名称', '客户订单号', '承运人', '快递单号', '创建时间', '当前处理人', '创建人', '情况说明', '退回单号', '退回商品', '退回商品名称', '退回商品数量', '是否正品', '操作类型', '操作人', '内容','退回标记'
         ];
         $workOrders->each(function ($item) use (&$json) {
             $logistic_numbers = $item->order->packages->implode('logistic_number', ",\r\n");
@@ -332,6 +332,7 @@ class WorkOrderController extends Controller
                 rtrim($work_order_process_logs_type, ",\r\n"),
                 rtrim($work_order_process_logs_user, ",\r\n"),
                 rtrim($work_order_process_logs, ",\r\n"),
+                $item->custom_rejected_status ?? '',
             ];
         });
         return Export::make($row, $json, "工单");

+ 6 - 3
app/Services/RejectedBillService.php

@@ -21,6 +21,7 @@ use Carbon\Carbon;
 use App\Traits\ServiceAppAop;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Query\Builder;
+use Illuminate\Support\Facades\Auth;
 use Overtrue\LaravelPinyin\Facades\Pinyin;
 
 
@@ -74,7 +75,10 @@ class RejectedBillService
         if ($updates && count($updates) > 1) $this->batchUpdate($updates);
         //是否入库
         $updateParams=$this->getNeedUpdateLoadedStatusByWms($asnHerders);
-        if ($updateParams && count($updateParams) > 1) $this->batchUpdate($updateParams);
+        if ($updateParams && count($updateParams) > 1){
+            $this->batchUpdate($updateParams);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($updateParams));
+        }
     }
 
     public function getNeedUpdateLoadedStatusByWms($asnHerders)
@@ -82,7 +86,7 @@ class RejectedBillService
 
         if (!$asnHerders) return null;
         $updateCollect = $this->getUpdateCollect($asnHerders);
-        if (!$updateCollect) return null;
+        if ($updateCollect->count()<1) return null;
         $logisticNumberReturn = $this->getLogisticNumberReturn($updateCollect);
         $checkedNumbers = $this->getCheckNumbers($updateCollect);
         $rejectedBills = $this->getRejectedBills($logisticNumberReturn,$checkedNumbers);
@@ -129,7 +133,6 @@ class RejectedBillService
                        ];
                    }
                 }
-
                unset($result);
             }
         }

+ 2 - 0
app/Services/WorkOrderCommoditiesService.php

@@ -38,6 +38,7 @@ class WorkOrderCommoditiesService
             'abnormal_type' => $obj->abnormal_type ?? '',
             'issue_type' => $detail->order_issue_type_id ?? '',
             'out_order_number' => $detail->out_order_number ?? '',
+            'remark' => $detail->remark ?? '',
         ]);
     }
 
@@ -85,6 +86,7 @@ class WorkOrderCommoditiesService
             'store_in_number' => $obj->store_in_number ?? '',                       // 入库单号
             'out_order_number' => $obj->out_order_number ?? '',                       // 入库单号
             'end_handle_result' => $obj->end_handle_result ?? '',                       // 最终处理
+            'remark' => $obj->remark ?? '',
         ]);
     }
 

+ 12 - 1
app/Services/WorkOrderMistakeService.php

@@ -247,6 +247,18 @@ class WorkOrderMistakeService extends WorkOrderService
             'work_order_status' => 0,
         ]);
 
+
+        $detail->commodities()->whereNotNull('remark')->get()->each(function ($commodity)use($detail){
+            $detail->processLogs()->create([
+                'work_order_id' => $detail->workOrder->id,
+                'work_order_detail_id' => $detail->id,
+                'user_id' => $detail->workOrder->creator_id,
+                'content' => $commodity->remark,
+                'status' => '未同步',
+                'type' => '处理',
+            ]);
+        });
+
         $detail->processLogs()->create([
             'work_order_id' => $detail->work_order_id,
             'work_order_detail_id' => $detail->id,
@@ -255,7 +267,6 @@ class WorkOrderMistakeService extends WorkOrderService
             'status' => '未同步',
             'type' => '结束',
         ]);
-
         $this->endOrderIssueAndSyncProcessLogs($detail);
         $this->logService->createLog($detail, '终审', $params['process_progress'].'-宝时终审');
     }

+ 1 - 0
app/WorkOrderCommodities.php

@@ -45,6 +45,7 @@ class WorkOrderCommodities extends Model
                                     // -----------------------------------
         'end_handle_result',       // 错漏发时添加:
         'tag',                      // 当前工单标记
+        'remark'
     ];
 
     static public $enums = [

+ 32 - 0
database/migrations/2022_03_03_095245_work_order_commodities_add_column_remark.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class WorkOrderCommoditiesAddColumnRemark extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('work_order_commodities', function (Blueprint $table) {
+            $table->string('remark');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('work_order_commodities', function (Blueprint $table) {
+            $table->dropColumn('remark');
+        });
+    }
+}

+ 38 - 0
resources/views/order/workOrder/_owner_fill_work_order_modal.blade.php

@@ -186,6 +186,31 @@
                             </td>
                         </tr>
 
+                        <tr v-if="item.process_result_info === '不入库'">
+                            <td colspan="9">
+                                <div class="row">
+                                    <label class="col-form-label col-sm-4 text-right ">原因<span class="text-danger">*</span></label>
+                                    <div class="col-sm-8 form-inline">
+                                        <input type="text" class="form-control form-control-sm col-12"
+                                               v-model="item.remark"
+                                               placeholder="不入库原因" >
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+                        <tr v-if="item.process_result_info === '不出库'">
+                            <td colspan="9">
+                                <div class="row">
+                                    <label class="col-form-label col-sm-4 text-right ">原因<span class="text-danger">*</span></label>
+                                    <div class="col-sm-8 form-inline">
+                                        <input type="text" class="form-control form-control-sm col-12"
+                                               v-model="item.remark"
+                                               placeholder="不出库原因" >
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+
                         <tr v-if="item.process_result_info === '商家做出库单(物流选自提,宝时不发货)'">
                             <td colspan="8">
                                 <div class="row">
@@ -549,6 +574,19 @@
                                     </div>
                                 </td>
                             </tr>
+                            <tr v-else-if="['不入库','不出库'].includes(item.process_result_info)" class="bg-light">
+                                <td colspan="9">
+                                    <div class="row">
+                                        <label class="col-form-label col-sm-4 text-right">
+                                            原因
+                                        </label>
+                                        <div class="form-inline col-sm-8 row">
+                                            <input type="text" class="form-control form-control-sm col-12"
+                                                   v-model="item.remark">
+                                        </div>
+                                    </div>
+                                </td>
+                            </tr>
                         </template>
                         </tbody>
                     </table>

+ 30 - 7
resources/views/order/workOrder/_work_order_show.blade.php

@@ -296,12 +296,15 @@
                                 <td class="text-wrap" v-text="item.process_result_info"></td>
                             </tr>
                             <tr v-if="hasOutInNumber(item)">
-                                <td colspan="9" class="row">
-                                    <label for="" class="col-form-label col-sm-3 text-right">出库订单号:</label>
-                                    <label class="col-form-label col-sm-9 text-monospace"
-                                           v-text="item.out_order_number"></label>
+                                <td colspan="9">
+                                    <div class="row">
+                                        <label for="" class="col-form-label col-sm-3 text-right">出库订单号:</label>
+                                        <label class="col-form-label col-sm-9 text-monospace"
+                                               v-text="item.out_order_number"></label>
+                                    </div>
                                 </td>
                             </tr>
+
                             <tr v-else-if="hasStoreNumber(item)">
                                 <td colspan="5">
                                     <div class="row">
@@ -318,6 +321,15 @@
                                     </div>
                                 </td>
                             </tr>
+                            <tr v-else-if="['不入库','不出库'].includes(item.process_result_info)">
+                                <td colspan="9">
+                                    <div class="row">
+                                        <label for="" class="col-form-label col-sm-3 text-right">原因:</label>
+                                        <label class="col-form-label col-sm-9 text-monospace "
+                                               v-text="item.remark"></label>
+                                    </div>
+                                </td>
+                            </tr>
                         </template>
                         </tbody>
                     </table>
@@ -418,6 +430,16 @@
                                     </div>
                                 </td>
                             </tr>
+
+                            <tr v-if="['不入库','不出库'].includes(item.process_result_info)">
+                                <td colspan="9">
+                                    <div class="row">
+                                        <label for="" class="col-form-label col-3 text-right">原因: </label>
+                                        <label for="" class="col-form-label col-9 text-monospace "
+                                               v-text="item.remark"> </label>
+                                    </div>
+                                </td>
+                            </tr>
                         </template>
                         </tbody>
                     </table>
@@ -450,8 +472,8 @@
 
         <div class="modal-body" v-if="'快递丢件' === showWorkOrder.issue_type_name">
             <template v-if="'货主处理'=== showWorkOrder.status">
-                <div class="form-group row" >
-                    <label  class="col-form-label col-12 text-center text-secondary" style="font-size: 28px">
+                <div class="form-group row">
+                    <label class="col-form-label col-12 text-center text-secondary" style="font-size: 28px">
                         待商家填充丢件信息详情
                     </label>
                 </div>
@@ -478,7 +500,8 @@
                         </div>
                     </div>
                 </div>
-                <div class="form-group row" v-if="showWorkOrder.refund_images && showWorkOrder.refund_images.length > 0">
+                <div class="form-group row"
+                     v-if="showWorkOrder.refund_images && showWorkOrder.refund_images.length > 0">
                     <label class="col-form-label col-sm-2 text-right">
                         退款截图
                     </label>

+ 23 - 15
resources/views/order/workOrder/index.blade.php

@@ -838,8 +838,14 @@
                         tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的仓库责任方'],
                         placeholder: ['仓库责任方', '定位或多选仓库责任方'], data: this.userWorkgroup
                     },
-
-                    {name: 'creator', type: 'input', placeholder: '创建人'},
+                    {
+                        name: 'status', type: 'select_multiple_select',
+                        tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的工单当前处理人'],
+                        placeholder: ['工单当前处理人', '定位或多选工单当前处理人'],
+                        data: [{name: '宝时处理', value: '宝时处理'},
+                            {name: '货主处理', value: '货主处理'},
+                            {name: '承运商处理', value: '承运商处理'},]
+                    },
                 ], [
                     {name: 'review_at_start', type: 'time', tip: ['终审开始日期', '时间']},
                     {name: 'review_at_end', type: 'time', tip: ['终审结束日期', '时间']},
@@ -847,12 +853,7 @@
                         name: 'logistic_number', type: 'input', placeholder: '快递单号'
                     },
                     {name: 'client_code', type: 'input', placeholder: '客户订单号'},
-                    {
-                        name: 'status', type: 'select', placeholder: '工单当前处理人',
-                        data: [{name: '宝时处理', value: '宝时处理'},
-                            {name: '货主处理', value: '货主处理'},
-                            {name: '承运商处理', value: '承运商处理'},]
-                    },
+                    {name: 'creator', type: 'input', placeholder: '创建人'},
                     {
                         name: 'process_progress', type: 'select', placeholder: '当前进度',
                         data: [
@@ -1532,7 +1533,11 @@
                         let cur_logistic_number = e.logistic_number,
                             process_result_info = e.process_result_info,
                             isAdd = false, isAddRow = false;
-                        if (process_result_info && (process_result_info.indexOf('商家做入库单') >= 0 || process_result_info.indexOf('商家做出库单') >= 0)) {
+                        if (process_result_info && (
+                            process_result_info.indexOf('商家做入库单') >= 0 ||
+                            process_result_info.indexOf('商家做出库单') >= 0 ||
+                            process_result_info.indexOf('不入库')  >= 0  ||
+                            process_result_info.indexOf('不出库')  >= 0)) {
                             isAddRow = true;
                         }
                         if (cur_logistic_number === logistic_number) {
@@ -1882,10 +1887,10 @@
                 getBaoShiEndHandleResult(commodity) {
                     let {process_result} = commodity;
                     let items = [
-                        {process_result: '多发,客户买下', option: ['已完成出库']},
-                        {process_result: '多发,客户退回', option: ['已退回仓库', '完成']},
+                        {process_result: '多发,客户买下', option: ['已完成出库','完成']},
+                        {process_result: '多发,客户退回', option: ['已退回仓库' ]},
                         {process_result: '少发,宝时补发', option: ['宝时补发']},
-                        {process_result: '少发,不补发', option: ['已完成入库']},
+                        {process_result: '少发,不补发', option: ['已完成入库','完成']},
                         {process_result: '核实未错漏发', option: ['确认未错漏发']},
                     ];
                     return items.filter(e => process_result === e.process_result).map(e => e.option).shift() ?? [];
@@ -1894,9 +1899,9 @@
                 getOwnerMistakeProcessResultInfo(process_result, item) {
                     let items = [
                         {process_result: "少发,宝时补发", option: ['商家不做单'],},
-                        {process_result: "多发,客户买下", option: ['商家做出库单(物流选自提,宝时不发货)'],},
+                        {process_result: "多发,客户买下", option: ['商家做出库单(物流选自提,宝时不发货)','不出库'],},
                         {process_result: "多发,客户退回", option: ['客户自行退回(提供退回单号)', '宝时上门取件(提供寄件信息,地址,联系人,电话)'],},
-                        {process_result: "少发,不补发", option: ['商家做入库单,选择明细和数量'],},
+                        {process_result: "少发,不补发", option: ['商家做入库单,选择明细和数量','不入库'],},
                         {process_result: "核实未错漏发", option: ['确认未错漏发'],},
                     ];
                     let options = items.filter(e => e.process_result === process_result).map(e => e.option).shift() ?? [];
@@ -2772,9 +2777,12 @@
                                 message = '出库订单号不能为空';
                             } else if ('商家做入库单,选择明细和数量' === e.process_result_info && !e.store_in_amount) {
                                 message = '入库单不能为空';
+                            } else if (['不入库','不出库'].includes(e.process_result_info) && !e.remark){
+                                message = '不入库,不出库原因不能为空';
                             }
                         });
                         if (message) return {success: false, message: message};
+                        return {success:true};
                     } else if ('快递异常' === issue_type_name) {
                         if (is_edit) {
                             let {type, commodities, dealImages} = this.ownerEditWorkOrder;
@@ -3096,7 +3104,7 @@
                     copy_items.forEach((e, i) => {
                         let current_logistic_number = e.logistic_number;
                         let add_flag = false;
-                        if (e.reissue_logistic_number || e.out_order_number || e.store_in_number) {
+                        if (e.reissue_logistic_number || e.out_order_number || e.store_in_number || e.remark) {
                             add_flag = true;
                         }
                         if (current_logistic_number === logistic_number) {

+ 9 - 10
resources/views/store/receivingDashboard/punctualityProgress/index.blade.php

@@ -72,10 +72,10 @@
                 <td class="td-warm text-muted"><span>@{{ item.workGroupName }}</span></td>
                 <td class="td-warm text-muted"><span>@{{ item.expectancyAmount }}</span></td>
                 <td class="td-warm text-muted"><span>@{{ item.putawayAmount }}</span></td>
-                <td class="td-warm text-muted"><span>@{{ item.receiveAverageConsumeDuration }}</span></td>
-                <td class="td-warm text-muted"><span>@{{ item.putawayAverageConsumeDuration }}</span></td>
+                <td class="td-warm text-muted"><span>@{{ item.receiveConsumeDuration }}</span></td>
+                <td class="td-warm text-muted"><span>@{{ item.putawayConsumeDuration }}</span></td>
                 <td class="td-warm text-muted">
-                    <button @click="showDetail(item.receiveTaskNo,item.reservationNo,item.asnNo)" type="button"
+                    <button @click="showDetail(item.receiveTaskNo,item.reservationNo,item.asnNo,item.createSingleTime)" type="button"
                             class="btn btn-primary" data-toggle="modal"
                             data-target="#staticBackdrop">
                         查看明细
@@ -217,8 +217,8 @@
                     {name: 'workGroupName', value: '操作组', neglect: true},
                     {name: 'expectancyAmount', value: '预期总数', neglect: true},
                     {name: 'putawayAmount', value: '已上架总数', neglect: true},
-                    {name: 'receiveAverageConsumeDuration', value: ' 收货平均耗时', neglect: true},
-                    {name: 'putawayAverageConsumeDuration', value: '上架平均耗时', neglect: true},
+                    {name: 'receiveConsumeDuration', value: ' 收货总耗时(分)', neglect: true},
+                    {name: 'putawayConsumeDuration', value: '上架总耗时(分)', neglect: true},
 
                 ];
                 new Header({
@@ -242,8 +242,8 @@
                     {name: 'commBarcode', value: '条码', neglect: true},
                     {name: 'receiveQty', value: '收货数量', neglect: true},
                     {name: 'putawayTime', value: '上架时间', neglect: true},
-                    {name: 'receiveConsumeDuration', value: '收货耗时', neglect: true},
-                    {name: 'putawayConsumeDuration', value: '上架耗时', neglect: true},
+                    {name: 'receiveConsumeDuration', value: '收货耗时(分)', neglect: true},
+                    {name: 'putawayConsumeDuration', value: '上架耗时(分)', neglect: true},
 
                 ];
                 new Header({
@@ -317,9 +317,8 @@
                     let url = this.getBaseUrl() + `/api/receiveBoard/agingScheduleList?size=${this.size}&current=${this.current}`
                     this.getPageResult(url);
                 },
-                showDetail(receiveTaskNo, reservationNo, asnNo) {
-                    let url = this.getBaseUrl() + `/api/receiveBoard/agingScheduleDetail?receiveTaskNo=${receiveTaskNo}&reservationNo=${reservationNo}&asnNo=${asnNo}`
-                    tempTip.showSuccess('开始查询,请稍后!');
+                showDetail(receiveTaskNo, reservationNo, asnNo,createSingleTime) {
+                    let url = this.getBaseUrl() + `/api/receiveBoard/agingScheduleDetail?receiveTaskNo=${receiveTaskNo}&reservationNo=${reservationNo}&asnNo=${asnNo}&createSingleTime=${createSingleTime}`
                     axios.get(url, this.getSearch()).then(res => {
                         if (res.data.code !== 200) {
                             this.resData.itemDetail = null;