فهرست منبع

修正 破损工单的创建

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

+ 11 - 7
app/Services/WorkOrderCommoditiesService.php

@@ -2,6 +2,7 @@
 
 namespace App\Services;
 
+use App\Commodity;
 use App\Traits\ServiceAppAop;
 use App\WorkOrder;
 use App\WorkOrderCommodities;
@@ -9,23 +10,26 @@ use App\WorkOrderCommodities;
 class WorkOrderCommoditiesService
 {
     use ServiceAppAop;
-    protected $modelClass=WorkOrderCommodities::class;
 
-    public function createWorkOrderCommodityByJson(WorkOrder  $workOrder,$json)
+    protected $modelClass = WorkOrderCommodities::class;
+
+    public function createWorkOrderCommodityByJson(WorkOrder $workOrder, $json)
     {
-        $obj =  json_decode($json);
-        $workOrder->commodities()->create(['sku'=>$obj->sku,'amount'=>$obj->amount,'commodity_id'=>$obj->commodity_id]);
+        $obj = json_decode($json);
+        $owner_id = $workOrder->order->owner_id ?? '';
+        $commodity = Commodity::query()->where('owner_id', $owner_id)->where('sku', $obj->sku)->first();
+        $workOrder->commodities()->create(['sku' => $obj->sku, 'amount' => $obj->amount, 'commodity_id' => $commodity->id ?? '']);
     }
 
     /**
      * 工单详情
-     * @param $workOrder
+     * @param $workOrder $workOrder
      * @param $array
      */
-    public function createWorkOrderCommoditiesByJsonArray($workOrder,$array)
+    public function createWorkOrderCommoditiesByJsonArray(WorkOrder $workOrder, $array)
     {
         foreach ($array as $json) {
-            $this->createWorkOrderCommodityByJson($workOrder,$json);
+            $this->createWorkOrderCommodityByJson($workOrder, $json);
         }
     }
 }

+ 1 - 1
app/Services/WorkOrderImageService.php

@@ -74,7 +74,7 @@ class WorkOrderImageService
     public function createWorkOrderDealImages($workOrder,$images, bool $isLoadMissing = true)
     {
         foreach ($images as $image) {
-            $this->createWorkOrderCommodityImage($workOrder,$image);
+            $this->createWorkOrderDealImage($workOrder,$image);
         }
         if ($isLoadMissing)$workOrder->loadMissing('dealImages');
     }

+ 4 - 4
app/WorkOrderDetail.php

@@ -15,10 +15,10 @@ class WorkOrderDetail extends Model
 
     protected $fillable = [
         'work_order_id',
-        'price',  // 商品价值
-        'sku_amount', // 破损sku数
-        'receive_address', // 收方信息
-        'reissue_logistic_number', // 补发单号
+        'price',                    // 商品价值
+        'sku_amount',               // 破损sku数
+        'receive_address',          // 收方信息
+        'reissue_logistic_number',  // 补发单号
         'return_logistic_number',   // 退回单号
         'logistic_number',
     ];

+ 9 - 32
resources/views/order/index/_work_order_modal.blade.php

@@ -41,7 +41,7 @@
                 {{--快递单号--}}
                 <div class="form-group row" v-if="'破损' === workOrder.orderIssueType">
                     <label for="work-order-logistic-number"
-                           class="col-sm-2 col-form-label text-right text-primary">快递单号</label>
+                           class="col-sm-2 col-form-label text-right text-primary">退回单号</label>
                     <div class="col-sm-10">
                         <input type="text" id="work-order-logistic-number" class="form-control"
                                v-model="workOrder['logistic_number']" placeholder="快递单号">
@@ -126,14 +126,6 @@
                     </div>
                 </div>
 
-                <div class="form-group row" v-if="'破损' === workOrder.orderIssueType">
-                    <label for="work-order-sku-amount"
-                           class="col-sm-2 col-form-label text-right text-primary">破损sku编号数量</label>
-                    <div class="col-sm-10">
-                        <input type="number" id="work-order-sku-amount" class="form-control"
-                               v-model="workOrder['sku_amount']" placeholder="破损sku编号数量">
-                    </div>
-                </div>
                 <hr v-if="'破损' === workOrder.orderIssueType">
                 <div class="form-group row" v-if="'破损' === workOrder.orderIssueType">
                     <label for="work-order-sku-amount"
@@ -141,39 +133,24 @@
                     <div class="col-sm-10">
                         <table class="table table-sm table-active table-grid-row">
                             <tr class="text-center">
-                                <th>sku</th>
+                                <th>商品编码</th>
                                 <th>商品名称</th>
                                 <th>数量</th>
-                                <th>操作</th>
+                                <th>选中</th>
                             </tr>
                             <tr v-for="(item,i) in workOrder.commodities" :key="i" class="text-center">
-                                <td>@{{ item.sku }}</td>
-                                <td>@{{ item.commodity.name }}</td>
-                                <td>@{{ item.amount }}</td>
+                                <td><span v-text="item.sku"></span></td>
+                                <td><span v-text="item.name"></span></td>
                                 <td>
-                                    <button type="button" class="btn btn-sm btn-danger"
-                                            @click="workOrder.commodities.splice(i,1)">取消
-                                    </button>
+                                    <input type="number" class="form-control form-control-sm" v-model="item.amount">
+                                </td>
+                                <td>
+                                    <button type="button" class="btn btn-sm btn-outline-danger" @click="workOrder.commodities.splice(i,1)">删除</button>
                                 </td>
                             </tr>
                         </table>
                     </div>
                 </div>
-                <div class="form-group row" v-if="'破损' === workOrder.orderIssueType">
-                    <label for="work-order-sku-amount" class="col-sm-2 col-form-label text-right "> 添加</label>
-                    <div class="col-sm-10  col-sm-offset-2 form-group form-inline">
-                        <div class="col-4">
-                            <input type="text" class="form-control" placeholder="sku编号" name="sku" id="commodity-sku" ref="commodity-sku">
-                         </div>
-                        <div class="col-4">
-                            <input type="number" class="form-control form-control-static" placeholder="数量" name="amount" ref="commodity-amount"
-                               id="commodity-amount">
-                        </div>
-                        <div class="col-4">
-                            <button type="button" class="btn btn-sm btn-outline-success col-4" @click="addCommodity">添加</button>
-                        </div>
-                    </div>
-                </div>
             </div>
             <hr v-if="'破损' === workOrder.orderIssueType">
             <div class="modal-footer">

+ 27 - 68
resources/views/order/index/delivering.blade.php

@@ -402,7 +402,6 @@
                     dealImages: [], // 交易截图
                     commodities: [],
                     logistic_number: null, // 快递单号
-                    sku_amount: 0, // sku商品总数
                     price: null,
                 },
                 grads: [
@@ -620,7 +619,13 @@
                 result_explain: function () {
                     this.setLogisticInfo();
                     this.setMerchantInfo();
-                }
+                },
+                'workOrder.orderIssueType':function(newValue){
+                    if (newValue === null) return;
+                    if (newValue === '破损'){
+                        this.fillWorkOrderCommodity();
+                    }
+                },
             },
             methods: {
                 initData() {
@@ -1211,12 +1216,11 @@
                 showInterceptModel() {
                     this.workOrder.grad = 1;
                     if (checkData.length < 1) {
+                        window.tempTip.setDuration(1500);
                         window.tempTip.show('未选中任何订单');
                         return;
                     }
                     this.workOrder.orderIssueType = null;
-                    //this.workOrder.remark.info = null;
-                    // this.workOrder.info = null;
                     this.workOrder.price = null;
                     this.workOrder.refundImages = [];
                     this.workOrder.packageImages = [];
@@ -1225,7 +1229,6 @@
                     this.workOrder.remark.info = '';
                     this.workOrder.commodities = [];
                     this.workOrder.logistic_number = null;
-                    this.workOrder.sku_amount = 0;
                     $('#intercept-modal').modal('show');
                 },
                 checkOrderIssue(name) {  //
@@ -1313,7 +1316,6 @@
                     formData.append('type', '破损');
                     formData.append('logistic_number', this.workOrder.logistic_number);
                     formData.append('price', this.workOrder.price);
-                    formData.append('sku_amount', this.workOrder.sku_amount);
                     this.setFormDataImagePrefix(formData, 'packageImages', packageImages);
                     this.setFormDataImagePrefix(formData, 'commodityImages', commodityImages);
                     this.setFormDataImagePrefix(formData, 'dealImages', dealImages);
@@ -1322,10 +1324,10 @@
                 },
                 createDamagedWorkOrder() { //破损工单创建
                     if (!this.checkDamagedWorkOrder())return;
-                    let packageImages = this.getImages(this.workOrder.packageImages);  // 外包装破损图片
-                    let commodityImages = this.getImages(this.workOrder.commodityImages); // 内物破损图片
-                    let dealImages = this.getImages(this.workOrder.dealImages); // 交易截图
-                    let message = this.checkWorkOrderImage(packageImages,commodityImages,dealImages); // 校验工单图片不能为空
+                    let packageImages = this.getImages(this.workOrder.packageImages);                   // 外包装破损图片
+                    let commodityImages = this.getImages(this.workOrder.commodityImages);               // 内物破损图片
+                    let dealImages = this.getImages(this.workOrder.dealImages);                         // 交易截图
+                    let message = this.checkWorkOrderImage(packageImages,commodityImages,dealImages);   // 校验工单图片不能为空
                     if (message) {
                         window.tempTip.setIndex(1999);
                         window.tempTip.show(message)
@@ -1338,7 +1340,7 @@
                 },
                 setFormDataCommodities(formData){
                      this.workOrder.commodities.map(commodity=>{
-                         let item = {sku:commodity.sku,amount:commodity.amount,commodity_id:commodity.commodity.id};
+                         let item = {sku:commodity.sku,amount:commodity.amount};
                          formData.append('commodities[]',JSON.stringify(item)) ;
                     });
                 },
@@ -1356,8 +1358,6 @@
                     let message = null;
                     if (!this.checkPrice()){
                         message = '商品价值需大于0';
-                    } else if (!this.checkSkuAmount()){
-                        message = "sku数量和录入sku信息数量不符合";
                     }
                     if (message){
                         window.tempTip.setIndex(1999);
@@ -1369,9 +1369,6 @@
                 checkPrice(){
                     return parseInt(this.workOrder.price) !== 0;
                 },
-                checkSkuAmount(){
-                    return parseInt(this.workOrder.sku_amount) === this.workOrder.commodities.length;
-                },
                 createMistakeWorkOrder() { // 错漏发
                     let data = this.getCreateWorkOrderData();
                     this.createWorkOrder(data);
@@ -1420,7 +1417,6 @@
                     this.workOrder.price = [];
                     this.workOrder.logisticNumber = [];
                     this.workOrder.orderIssueType = 0;
-                    this.workOrder.sku_amount = 0;
                 },
                 getCreateWorkOrderData() {
                     return checkData.map(item => {
@@ -1525,57 +1521,6 @@
                         window.tempTip.show("网络错误:" + err);
                     });
                 },
-                addCommodity(){
-                    let sku = this.$refs['commodity-sku'].value;
-                    let amount = this.$refs['commodity-amount'].value;
-                    window.tempTip.setIndex(1999);
-                    window.tempTip.setDuration(1999);
-                    if (amount<=0) {
-                        window.tempTip.show('数量登记异常');
-                        return;
-                    }
-                    if (this.hasWorkOrderCommodity(sku)){
-                        this.addWorkOrderCommodityAmount(sku,amount);
-                        return ;
-                    }
-                    this.checkSkuAndPushWorkOrderCommodity(sku,amount);
-                },
-                hasWorkOrderCommodity(sku){
-                    let count = this.workOrder.commodities.filter(item=>{
-                        return item.sku === sku;
-                    }).length;
-                    return count>0;
-                },
-                addWorkOrderCommodityAmount(sku,amount){
-                    this.workOrder.commodities.forEach(item=>{
-                        if (item.sku === sku){
-                            item.amount = parseInt(item.amount) + parseInt(amount);
-                        }
-                    });
-                },
-                pushWorkOrderCommodities(sku,amount,commodity){
-                    this.workOrder.commodities.push({sku:sku,amount:amount,commodity:commodity});
-                },
-                checkSkuAndPushWorkOrderCommodity(sku,amount){
-                    let url = "{{route('commodity.getCommodityApi')}}";
-                    let order = this.orders.find(item=>{
-                        return item.orderno === checkData[0];
-                    });
-                    let data = {
-                        sku:sku,
-                        owner_name:order['customer_descr_c']
-                    };
-                    window.tempTip.setIndex(1999);
-                    window.axios.post(url,data).then(res=>{
-                        if (res.data.success){
-                            this.pushWorkOrderCommodities(sku,amount,res.data.data);
-                            return;
-                        }
-                        window.tempTip.show(res.data.message ? res.data.message : "校验sku失败");
-                    }).catch(err=>{
-                        window.tempTip.show("校验sku异常:"+err);
-                    })
-                },
                 isDB(item) {
                     if (item.indexOf('德邦') == -1 || item.indexOf('京东') == -1) return false;
                     return true;
@@ -1594,6 +1539,20 @@
                         }
                     });
                 },
+                fillWorkOrderCommodity(){
+                    const {commodities} = this;
+                    let orderNo = checkData[0];
+                    let orderCommodities = commodities[orderNo];
+                    this.workOrder.commodities = [];
+                    orderCommodities.forEach(item=>{
+                        this.workOrder.commodities.push({
+                            sku:item.sku,
+                            name:item['descr_c'],
+                            amount:item['qtyordered'],
+                            selected:false,
+                        });
+                    });
+                },
             },
         });
     </script>

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

@@ -219,21 +219,23 @@
                                         <span v-text="item['issue_type'] ?  item['issue_type'].name : ''"></span>
                                     @endcan
                                 </td>
-                                <td class="text-center">@{{ item.remark }}</td>
                                 <td class="text-center">
-                                    @{{ item.result_explain ?item.result_explain : '' }}
+                                    <span v-text="item.remark"></span>
                                 </td>
                                 <td class="text-center">
-                                    @{{ item.issue_order_type ?item.issue_order_type : '' }}
+                                    <span v-text="item.result_explain ?item.result_explain : ''"></span>
+                                </td>
+                                <td class="text-center">
+                                    <span v-text="item.issue_order_type ?item.issue_order_type : ''"></span>
                                 </td>
                                 <td class="text-center p-0">
                                     <template v-if="item.issue_logs">
                                         <template v-if="item.issue_logs.length === 1">
                                             <table class="table table-sm m-0">
                                                 <tr class="table table-sm">
-                                                    <td>@{{ item.issue_logs[0].content }}</td>
-                                                    <td>@{{ item.issue_logs[0].username }}</td>
-                                                    <td>@{{ item.issue_logs[0].created_at | dataTime}}</td>
+                                                    <td v-text="item.issue_logs[0].content"></td>
+                                                    <td v-text="item.issue_logs[0].username"></td>
+                                                    <td>@{{ item.issue_logs[0].created_at | dataTime }}</td>
                                                 </tr>
                                             </table>
                                         </template>
@@ -241,18 +243,18 @@
                                             <transition name="fade">
                                                 <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 | dataTime}}</td>
+                                                        <td v-text="log.content"></td>
+                                                        <td v-text="log.username"></td>
+                                                        <td>@{{ log.created_at | dataTime }}</td>
                                                     </tr>
                                                 </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 | dataTime}}</td>
+                                                        <td v-text="item.issue_logs[0].content"></td>
+                                                        <td v-text="item.issue_logs[0].username"></td>
+                                                        <td>@{{ item.issue_logs[0].created_at | dataTime }}</td>
                                                     </tr>
                                                 </table>
                                             </transition>
@@ -274,15 +276,10 @@
                                                 v-if="package.transfer_status && package.transfer_status.length > 0">
                                                 <div v-if="selectOrderPackage === package.id">
                                                     <template v-for="transfer in package.transfer_status">
-                                                        <p>@{{
-                                                            transfer['accept_time']+':'+transfer['accept_address']
-                                                            }}</p>
+                                                        <p v-text="transfer['accept_time']+':'+transfer['accept_address']"></p>
                                                     </template>
                                                 </div>
-                                                <div v-else>
-                                                    @{{
-                                                    package.transfer_status[0]['accept_time']+':'+package.transfer_status[0]['accept_address']
-                                                    }}
+                                                <div v-else v-text="package.transfer_status[0]['accept_time']+':'+package.transfer_status[0]['accept_address']">
                                                 </div>
                                                 <button class="btn btn-sm btn-outline-primary"
                                                         v-if="selectOrderPackage !== package.id"
@@ -295,10 +292,10 @@
                                         </template>
                                     </div>
                                 </td>
-                                <td class="text-center">@{{ item.creator ? item.creator.name : '' }}</td>
-                                <td class="text-center">@{{ item.created_at}}</td>
-                                <td>@{{ item.reviewer ? item.reviewer.name : ''}}</td>
-                                <td>@{{ item.review_at}}</td>
+                                <td class="text-center" v-text="item.creator ? item.creator.name : ''"></td>
+                                <td class="text-center" v-text="item.created_at"></td>
+                                <td v-text="item.reviewer ? item.reviewer.name : ''"></td>
+                                <td v-text="item.review_at"></td>
                                 @can('订单管理-工单处理-删除')
                                     <td>
                                         <button class="btn btn-sm btn-outline-danger"