Просмотр исходного кода

订单管理-工单处理-添加退货显示

loustwo 4 лет назад
Родитель
Сommit
bb013f40da
2 измененных файлов с 104 добавлено и 27 удалено
  1. 1 1
      app/WorkOrder.php
  2. 103 26
      resources/views/order/workOrder/index.blade.php

+ 1 - 1
app/WorkOrder.php

@@ -252,7 +252,7 @@ class WorkOrder extends Model
 
     public function defaultWith(): array
     {
-        return ['owner', 'logistic', 'issueType', 'creator', 'lastHandler','orderDetail','orderIssueRejectedBills', 'details' => function ($query) {
+        return ['owner', 'logistic', 'issueType', 'creator', 'lastHandler','orderDetail','orderIssueRejectedBills.rejectedBill.items', 'details' => function ($query) {
             return $query->with(['commodities.commodity', 'logs' => function ($query) {
                 return $query->with('creator')->orderByDesc('created_at');
             }, 'images.uploadFile', 'issueType', 'processLogs' => function ($query) {

+ 103 - 26
resources/views/order/workOrder/index.blade.php

@@ -75,11 +75,12 @@
 
                                     <template>
                                         <span class="badge badge-success" v-show="isLogisticHandler(item)">承</span>
-                                        <span v-show="item.order_detail && ['有','已处理'].includes(item.order_detail.is_new_rejecting)"
+                                        <span
+                                            v-show="item.order_detail && ['有','已处理'].includes(item.order_detail.is_new_rejecting)"
                                             class="badge badge-primary">退</span>
                                     </template>
 
-                                    <template >
+                                    <template>
                                         <br v-show="item.is_issue_order">
                                         <a :href="'{{url("order/issue/index")}}'+'?is_handle=ture&orderCode='+item.orderno"
                                            v-show="item.is_issue_order"
@@ -91,7 +92,7 @@
                                     <template v-show="item.order_detail">
                                         <br>
                                         <span class="badge  badge-light"
-                                            v-text="item.order_detail ? item.order_detail.rejecting_status : ''"></span>
+                                              v-text="item.order_detail ? item.order_detail.rejecting_status : ''"></span>
                                     </template>
                                 </td>
                                 <td>
@@ -208,7 +209,7 @@
                                 <td v-text="item.status"></td>
                                 <td v-text="item.creator ? item.creator.name : ''"></td>
                                 <td v-text="item.result_explain ? item.result_explain: item.remark"></td>
-                                <td class="text-muted child-layer-3-hide" >
+                                <td class="text-muted child-layer-3-hide">
                                     <div class="form-inline">
                                         <div class="form-group">
                                             <input type="text" class="form-control form-text form-control-sm mr-1">
@@ -223,7 +224,6 @@
                                              v-for="relation in item.order_issue_rejected_bills">
                                             <input type="text" class="form-control form-control-sm mt-1 mr-1"
                                                    :value="relation.logistic_number_return"
-{{--                                                       @change="reviseJoinRejectedBill(item,orderIssueRejectedBill.logistic_number_return,$event)"--}}
                                                    @focus="displayDelBtn(true,$event)"
                                                    @blur="displayDelBtn(false,$event)">
                                             <button type="button" class="btn btn-sm btn-outline-danger mt-1 d-none"
@@ -234,7 +234,54 @@
                                         </div>
                                     </div>
                                 </td>
-
+                                @if( \Illuminate\Support\Facades\Gate::check('订单管理-工单处理-宝时编辑') || \Illuminate\Support\Facades\Gate::check('订单管理-工单处理-商家编辑') )
+                                <td class="p-0 child-layer-3-hide align-center">
+                                    <div class="m-0 p-0" v-if="item.rejected_bill_items">
+                                        <table class="table table-sm m-0" v-show="showRejectedBillItem === item.id">
+                                            <tr v-for="rejected_bill_item in item.rejected_bill_items">
+                                                <td class="w-50">
+                                                    <span v-text="rejected_bill_item.barcode_goods"></span>
+                                                </td>
+                                                <td>
+                                                    <p class="text-truncate text-primary m-0 p-0 tooltipTarget"
+                                                       style="width: 100px;cursor:pointer;text-decoration: underline"
+                                                       title="双击展开"
+                                                       @dblclick="nowrapText($event)"
+                                                       v-text="rejected_bill_item.name_goods"></p>
+                                                    <p class="text-nowrap m-0 p-0 tooltipTarget"
+                                                       style="display: none;cursor:pointer"
+                                                       title="双击收起"
+                                                       @dblclick="truncateText($event)"
+                                                       v-text="rejected_bill_item.name_goods"></p>
+                                                </td>
+                                                <td class="w-25">
+                                                    <span v-text="rejected_bill_item.amount"></span>
+                                                </td>
+                                                <td class="w-25">
+                                                    <span v-text="rejected_bill_item.quality_label"></span>
+                                                </td>
+                                                <td class="w-auto">
+                                                    <span v-text="rejected_bill_item.remark"></span>
+                                                </td>
+                                            </tr>
+                                        </table>
+                                        <div class="text-center" v-show="item.rejected_bill_item_amount_count > 0">
+                                            <button type="button"
+                                                    class="btn btn-sm btn-outline-primary align-middle mt-1"
+                                                    v-show="showRejectedBillItem !== item.id"
+                                                    @click="showRejectedBillItem = item.id"
+                                                    v-text="'商品' + item.rejected_bill_item_amount_count + '件,点击展开'">
+                                            </button>
+                                            <button type="button"
+                                                    class="btn btn-sm btn-outline-primary align-middle mt-1"
+                                                    v-show="showRejectedBillItem === item.id"
+                                                    @click="showRejectedBillItem = null">
+                                                点击收起
+                                            </button>
+                                        </div>
+                                    </div>
+                                </td>
+                                @endif
                                 <td class="log-td"
                                     v-on:mouseover="showAddBtn($event)"
                                     v-on:mouseleave="hideAddBtn($event)">
@@ -299,7 +346,7 @@
     <script type="text/javascript" src="{{asset('js/queryForm/queryForm.js')}}"></script>
     <script type="text/javascript" src="{{mix('js/queryForm/header.js')}}"></script>
     <script type="text/javascript" src="{{mix('js/element-ui.js') }}"></script>
-{{--    <script src="https://unpkg.com/element-ui/lib/index.js"></script>--}}
+    {{--    <script src="https://unpkg.com/element-ui/lib/index.js"></script>--}}
 
     <style>
         .fade-enter-active {
@@ -511,6 +558,7 @@
                 showAddProcessLogFrom: null,     //
                 showAddProcessLogBtn: null,
 
+                showRejectedBillItem: null,          // 退回商品详情
                 batchHandlerWorkOrder: {
                     issue_type_name: '',
                     process_progress: '',
@@ -662,6 +710,9 @@
                     {name: 'creator', value: '创建人'},
                     {name: 'remark', value: '情况说明'},
                     {name: 'return_logistic_number', value: '退回单号'},
+                    @if( \Illuminate\Support\Facades\Gate::check('订单管理-工单处理-宝时编辑') || \Illuminate\Support\Facades\Gate::check('订单管理-工单处理-商家编辑') )
+                    {name: 'rejected_bills_items', value: '退回商品详情'},
+                    @endif
                     {name: 'process_logs', value: '处理日志'},
                         @can('订单管理-工单处理-宝时编辑')
                     {
@@ -810,6 +861,23 @@
                     workOrder.order_commodities = this.groupOrderPackageCommodities(workOrder);
                     workOrder.is_issue_order = workOrder.order_issue !== null;
                     if (workOrder.order_issue !== null) workOrder.order_issue.log_is_show = 'order_issue' in workOrder;
+                    let rejected_bill_items = this.groupRejectedBillItems(workOrder);
+                    workOrder.rejected_bill_items = rejected_bill_items;
+                    workOrder.rejected_bill_item_amount_count = rejected_bill_items ? rejected_bill_items.map(e => Number(e.amount)).reduce((a, b) => Number(a) + Number(b) , 0) : 0;
+                },
+                groupRejectedBillItems(workOrder) {
+                    let {order_issue_rejected_bills} = workOrder;
+                    if (!order_issue_rejected_bills) return [];
+                    return order_issue_rejected_bills.map(e => e.rejected_bill).map(e => e.items).filter(e => e).reduce((a, b) => a.concat(b),[])
+                        .map(e => {
+                            return {
+                                amount: e.amount,
+                                quality_label: e.quality_label,
+                                barcode_goods: e.barcode_goods,
+                                name_goods: e.name_goods,
+                                remark: e.remark,
+                            }
+                        });
                 },
                 groupOrderPackageCommodities(workOrder) {
                     let order_packages = workOrder.order ? workOrder.order.packages : [];
@@ -3318,52 +3386,61 @@
                         }, 100);
                     }
                 },
-
-                joinLogisticNumberReturn(item,e,index){
+                nowrapText(e) {
+                    let truncateSpan = $(e.target);
+                    truncateSpan.hide();
+                    truncateSpan.siblings('.text-nowrap').show();
+                },
+                truncateText(e) {
+                    let nowrapSpan = $(e.target);
+                    nowrapSpan.hide();
+                    nowrapSpan.siblings('.text-truncate').show();
+                },
+                joinLogisticNumberReturn(item, e, index) {
                     let logistic_number_return = $(e.target).prev().val();
                     console.log(logistic_number_return);
-                    if (logistic_number_return.trim().length === 0){
+                    if (logistic_number_return.trim().length === 0) {
                         this.errorTempTip('请输入退回单号进行添加');
                         return;
                     }
                     let url = "{{route('workOrder.rejectedBill.storeApi')}}";
-                    let data = {order_id:item.order_id,logistic_number_return:logistic_number_return};
+                    let data = {order_id: item.order_id, logistic_number_return: logistic_number_return};
                     this.waitingTempTip('处理中');
-                    window.axios.post(url,data).then(res=>{
+                    window.axios.post(url, data).then(res => {
                         window.tempTip.cancelWaitingTip();
-                        if (res.data.success){
+                        if (res.data.success) {
                             this.sortOrder(res.data.data);
-                            this.$set(this.workOrders,index,res.data.data);
+                            this.$set(this.workOrders, index, res.data.data);
                             this.successTempTip('处理完成');
                             this.$forceUpdate();
                             $(e.target).prev().val('');
-                            return ;
+                            return;
                         }
-                        this.errorTempTip(res.data.message ? res.data.message : '处理出现异常' )
-                    }).catch(err=>{
+                        this.errorTempTip(res.data.message ? res.data.message : '处理出现异常')
+                    }).catch(err => {
                         window.tempTip.cancelWaitingTip();
                         this.errorTempTip(err);
                     });
                 },
-                unJoinLogisticNumberReturn(item,logistic_number_return,index){
-                    if (logistic_number_return.trim().length === 0){
+                unJoinLogisticNumberReturn(item, logistic_number_return, index) {
+                    if (logistic_number_return.trim().length === 0) {
                         this.errorTempTip('请输入退回单号进行添加');
                         return;
                     }
                     let url = "{{route('workOrder.rejectedBill.destroyApi')}}";
-                    let data = {order_id:item.order_id,logistic_number_return:logistic_number_return};
+                    let data = {order_id: item.order_id, logistic_number_return: logistic_number_return};
                     this.waitingTempTip('处理中');
-                    window.axios.post(url,data).then(res=>{
+                    window.axios.post(url, data).then(res => {
                         window.tempTip.cancelWaitingTip();
-                        if (res.data.success){
+                        if (res.data.success) {
                             this.sortOrder(res.data.data);
-                            this.$set(this.workOrders,index,res.data.data);
+                            this.$set(this.workOrders, index, res.data.data);
                             this.successTempTip('处理完成');
                             this.$forceUpdate();
-                            return ;
+                            return;
                         }
-                        this.errorTempTip(res.data.message ? res.data.message : '处理出现异常' )
-                    }).catch(err=>{
+                        this.errorTempTip(res.data.message ? res.data.message : '处理出现异常')
+                    }).catch(err => {
                         window.tempTip.cancelWaitingTip();
                         this.errorTempTip(err);
                     });