Browse Source

后台售后同意流程

lizhen_gitee 3 months ago
parent
commit
316b81cdad

+ 4 - 4
addons/shopro/controller/order/Aftersale.php

@@ -86,7 +86,7 @@ class Aftersale extends Common
             $images = $params['images'] ? json_decode(htmlspecialchars_decode($params['images']),true) : [];
 
             //寄回信息
-            $express_id = $params['express_id'] ?? 0;
+            /*$express_id = $params['express_id'] ?? 0;
             $express_no = $params['express_no'] ?? '';
             if($type == 'return'){
                 if(!$express_id || !$express_no){
@@ -97,7 +97,7 @@ class Aftersale extends Common
                 if(!$express){
                     error_stop('请输入快递公司和运单号');
                 }
-            }
+            }*/
 
 
             //订单状态:已支付,已完成
@@ -145,11 +145,11 @@ class Aftersale extends Common
             $aftersale->reason = $reason;
             $aftersale->content = $content;
 
-            if($type == 'return'){
+            /*if($type == 'return'){
                 $aftersale->express_name = $express['name'];
                 $aftersale->express_code = $express['code'];
                 $aftersale->express_no   = $express_no;
-            }
+            }*/
 
             $aftersale->save();
 

+ 41 - 2
application/admin/controller/shopro/order/Aftersale.php

@@ -157,6 +157,45 @@ class Aftersale extends Common
         $this->success('操作成功', null, $aftersale);
     }
 
+    /**
+     * 同意售后
+     */
+    public function agree($id)
+    {
+        $admin = $this->auth->getUserInfo();
+
+        $aftersale = $this->model->withTrashed()->canOper()->where('id', $id)->find();
+        if (!$aftersale) {
+            $this->error('售后单不存在或不可完成');
+        }
+
+        $order = $this->orderModel->withTrashed()->find($aftersale->order_id);
+        $orderItem = OrderItemModel::find($aftersale->order_item_id);
+        if (!$order || !$orderItem) {
+            $this->error('订单或订单商品不存在');
+        }
+
+        $aftersale = Db::transaction(function () use ($aftersale, $order, $orderItem, $admin) {
+            $aftersale->aftersale_status = OrderAftersaleModel::AFTERSALE_STATUS_ING;    // 售后完成
+            $aftersale->save();
+            // 增加售后单变动记录、
+            OrderAftersaleLogModel::add($order, $aftersale, $admin, 'admin', [
+                'log_type' => 'agree',
+                'content' => '售后订单已同意',
+                'images' => []
+            ]);
+
+            /*$orderItem->aftersale_status = OrderItemModel::AFTERSALE_STATUS_ING;
+            $orderItem->save();
+            OrderActionModel::add($order, $orderItem, $admin, 'admin', '管理员同意售后');*/
+
+
+            return $aftersale;
+        });
+
+        $this->success('操作成功', null, $aftersale);
+    }
+
 
     /**
      * 拒绝售后
@@ -318,10 +357,10 @@ class Aftersale extends Common
         }
 
         $aftersale = Db::transaction(function () use ($order, $aftersale, $params, $admin) {
-            if ($aftersale['aftersale_status'] == 0) {
+            /*if ($aftersale['aftersale_status'] == 0) {
                 $aftersale->aftersale_status = OrderAftersaleModel::AFTERSALE_STATUS_ING;    // 售后处理中
                 $aftersale->save();
-            }
+            }*/
 
             // 增加售后单变动记录
             OrderAftersaleLogModel::add($order, $aftersale, $admin, 'admin', [

+ 2 - 2
application/admin/model/shopro/order/Aftersale.php

@@ -53,7 +53,7 @@ class Aftersale extends Common
     const AFTERSALE_STATUS_CANCEL = -2;       // 已取消
     const AFTERSALE_STATUS_REFUSE = -1;       // 拒绝
     const AFTERSALE_STATUS_NOOPER = 0;       // 未处理
-    const AFTERSALE_STATUS_ING = 1;       // 申请售后
+    const AFTERSALE_STATUS_ING = 1;       // 同意并处理中
     const AFTERSALE_STATUS_COMPLETED = 2;        // 售后完成
 
 
@@ -88,7 +88,7 @@ class Aftersale extends Common
             self::AFTERSALE_STATUS_CANCEL => '已取消',
             self::AFTERSALE_STATUS_REFUSE => '拒绝',
             self::AFTERSALE_STATUS_NOOPER => '未处理',
-            self::AFTERSALE_STATUS_ING => '申请售后',
+            self::AFTERSALE_STATUS_ING => '申请售后', //售后处理中
             self::AFTERSALE_STATUS_COMPLETED => '售后完成'
         ];
     }

+ 2 - 2
application/admin/model/shopro/order/OrderItem.php

@@ -47,7 +47,7 @@ class OrderItem extends Common
 
 
     // 退款状态
-    const REFUND_STATUS_NOREFUND = 0;       // 退款状态 未申请
+    const REFUND_STATUS_NOREFUND = 0;       // 退款
     const REFUND_STATUS_AGREE = 1;       // 已同意
     const REFUND_STATUS_COMPLETED = 2;       // 退款完成     
 
@@ -80,7 +80,7 @@ class OrderItem extends Common
         return [
             self::AFTERSALE_STATUS_REFUSE => '售后驳回',
             self::AFTERSALE_STATUS_NOAFTER => '未申请',
-            self::AFTERSALE_STATUS_ING => '申请售后',
+            self::AFTERSALE_STATUS_ING => '申请售后', //售后处理中
             self::AFTERSALE_STATUS_COMPLETED => '已完成'
         ];
     }

+ 9 - 4
application/admin/view/shopro/order/aftersale/detail.html

@@ -234,15 +234,20 @@
                             {{ state.data.aftersale_status_desc }}
                         </div>
                         <div class="tools">
-                            <template v-if="state.data.aftersale_status == 0 || state.data.aftersale_status == 1">
-                                {if $auth->check('shopro/order/aftersale/refund')}
-                                <el-button type="primary" link @click="onRefund">售后退款</el-button>
+                            <template v-if="state.data.aftersale_status == 0">
+                                {if $auth->check('shopro/order/aftersale/agree')}
+                                <el-button @click="onAgree">同意售后</el-button>
                                 {/if}
                                 {if $auth->check('shopro/order/aftersale/refuse')}
                                 <el-button @click="onRefuse">拒绝售后</el-button>
                                 {/if}
+                            </template>
+                            <template v-if="state.data.aftersale_status == 1">
+                                {if $auth->check('shopro/order/aftersale/refund')}
+                                <el-button @click="onRefund">售后退款</el-button>
+                                {/if}
                                 {if $auth->check('shopro/order/aftersale/completed')}
-                                <el-button type="primary" link @click="onCompleted">售后完成</el-button>
+                                <el-button @click="onCompleted">售后完成</el-button>
                                 {/if}
                             </template>
                         </div>

+ 9 - 0
public/assets/js/backend/shopro/order/aftersale.js

@@ -270,6 +270,14 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                             }
                         })
                     }
+                    function onAgree() {
+                        Fast.api.ajax({
+                            url: `shopro/order/aftersale/agree/id/${state.id}`,
+                            type: 'POST',
+                        }, function (ret, res) {
+                            getDetail()
+                        }, function (ret, res) { })
+                    }
                     function onCompleted() {
                         Fast.api.ajax({
                             url: `shopro/order/aftersale/completed/id/${state.id}`,
@@ -296,6 +304,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         state,
                         onRefund,
                         onRefuse,
+                        onAgree,
                         onCompleted,
                         onAddLog,
                     }