Browse Source

fix:未找到指定单页

super-yimizi 2 months ago
parent
commit
6b2e7e9061

+ 27 - 3
application/admin/controller/shop/Comment.php

@@ -7,7 +7,8 @@ use Exception;
 use think\Db;
 use think\Db;
 use think\exception\PDOException;
 use think\exception\PDOException;
 use think\exception\ValidateException;
 use think\exception\ValidateException;
-
+use app\common\Enum\CommentEnum;
+use app\common\Enum\StatusEnum;
 /**
 /**
  * 评论管理
  * 评论管理
  *
  *
@@ -21,12 +22,16 @@ class Comment extends Backend
      * @var \app\admin\model\shop\Comment
      * @var \app\admin\model\shop\Comment
      */
      */
     protected $model = null;
     protected $model = null;
+    protected $relationSearch = true;
 
 
     public function _initialize()
     public function _initialize()
     {
     {
         parent::_initialize();
         parent::_initialize();
         $this->model = new \app\admin\model\shop\Comment;
         $this->model = new \app\admin\model\shop\Comment;
-        $this->view->assign("statusList", $this->model->getStatusList());
+        $this->view->assign("statusList",StatusEnum::getMap());
+        $this->assignconfig('statusSearchList',json_encode(StatusEnum::getMap()));
+        $this->view->assign("evaluateStatusList", CommentEnum::getEvaluateStatusList());
+        $this->assignconfig('evaluateStatusSearchList',json_encode(CommentEnum::getEvaluateStatusList()));
     }
     }
 
 
     /**
     /**
@@ -45,6 +50,7 @@ class Comment extends Backend
     {
     {
         //设置过滤方法
         //设置过滤方法
         $this->request->filter(['strip_tags', 'trim']);
         $this->request->filter(['strip_tags', 'trim']);
+        $this->view->assign("evaluateStatusList", CommentEnum::getEvaluateStatusList());
         if ($this->request->isAjax()) {
         if ($this->request->isAjax()) {
             //如果发送的来源是Selectpage,则转发到Selectpage
             //如果发送的来源是Selectpage,则转发到Selectpage
             if ($this->request->request('keyField')) {
             if ($this->request->request('keyField')) {
@@ -61,7 +67,7 @@ class Comment extends Backend
 
 
             foreach ($list as $index => $item) {
             foreach ($list as $index => $item) {
                 if ($item->user) {
                 if ($item->user) {
-                    $item->user->visible(['id', 'nickname', 'avatar']);
+                    $item->user->visible(['id', 'username', 'avatar']);
                 }
                 }
             }
             }
 
 
@@ -127,4 +133,22 @@ class Comment extends Backend
 
 
         return $this->view->fetch();
         return $this->view->fetch();
     }
     }
+
+    /**
+     * 评论审核
+     */
+    public function audit($ids = null)
+    {
+        $comment_id = $ids;
+        $evaluate_status = $this->request->param('evaluate_status');
+        if (!$comment_id || !$evaluate_status) {
+            $this->error('参数错误');
+        }
+        try {
+            \app\common\Service\Goods\CommentService::auditComment($comment_id, $evaluate_status);
+        } catch (\Exception $e) {
+            $this->error($e->getMessage());
+        }
+        $this->success('操作成功');
+    }
 }
 }

+ 87 - 115
application/admin/controller/shop/Order.php

@@ -12,6 +12,9 @@ use app\common\Enum\OrderEnum;
 use app\common\Enum\GoodsEnum;
 use app\common\Enum\GoodsEnum;
 use app\common\Enum\PayEnum;
 use app\common\Enum\PayEnum;
 use app\common\Enum\ChannelEnum;
 use app\common\Enum\ChannelEnum;
+use app\common\Enum\OrderActionEnum;
+use app\common\Service\Order\OrderActionService;
+use app\common\Service\Pay\PayService;
 use think\Db;
 use think\Db;
 
 
 /**
 /**
@@ -44,7 +47,7 @@ class Order extends Backend
         $this->view->assign("deliveryTypeList", OrderEnum::getDeliveryTypeList());
         $this->view->assign("deliveryTypeList", OrderEnum::getDeliveryTypeList());
         $this->view->assign("invoiceStatusList", OrderEnum::getInvoiceStatusList());
         $this->view->assign("invoiceStatusList", OrderEnum::getInvoiceStatusList());
         $this->view->assign("activityTypeList", OrderEnum::getActivityTypeList());
         $this->view->assign("activityTypeList", OrderEnum::getActivityTypeList());
-        $this->view->assign("actionTypeList", OrderEnum::getActionTypeList());
+        $this->view->assign("actionTypeList", OrderActionEnum::getActionTypeList());
         $this->view->assign("saleStatusList", GoodsEnum::getSaleStatusMap());
         $this->view->assign("saleStatusList", GoodsEnum::getSaleStatusMap());
         
         
         // 前端配置
         // 前端配置
@@ -56,36 +59,10 @@ class Order extends Backend
         $this->assignconfig('deliveryTypeList', json_encode(OrderEnum::getDeliveryTypeList()));
         $this->assignconfig('deliveryTypeList', json_encode(OrderEnum::getDeliveryTypeList()));
         $this->assignconfig('invoiceStatusList', json_encode(OrderEnum::getInvoiceStatusList()));
         $this->assignconfig('invoiceStatusList', json_encode(OrderEnum::getInvoiceStatusList()));
         $this->assignconfig('activityTypeList', json_encode(OrderEnum::getActivityTypeList()));
         $this->assignconfig('activityTypeList', json_encode(OrderEnum::getActivityTypeList()));
-        $this->assignconfig('actionTypeList', json_encode(OrderEnum::getActionTypeList()));
+        $this->assignconfig('actionTypeList', json_encode(OrderActionEnum::getActionTypeList()));
         $this->assignconfig('saleStatusList', json_encode(GoodsEnum::getSaleStatusMap()));
         $this->assignconfig('saleStatusList', json_encode(GoodsEnum::getSaleStatusMap()));
         
         
-        // 订单状态常量配置
-        $this->assignconfig('orderStatusConstants', json_encode([
-            'STATUS_CREATE' => OrderEnum::STATUS_CREATE,
-            'STATUS_PAY' => OrderEnum::STATUS_PAY,
-            'STATUS_SHIP' => OrderEnum::STATUS_SHIP,
-            'STATUS_CONFIRM' => OrderEnum::STATUS_CONFIRM,
-            'STATUS_COMMENT' => OrderEnum::STATUS_COMMENT,
-            'STATUS_CANCEL' => OrderEnum::STATUS_CANCEL,
-            'STATUS_AUTO_CANCEL' => OrderEnum::STATUS_AUTO_CANCEL,
-            'STATUS_ADMIN_CANCEL' => OrderEnum::STATUS_ADMIN_CANCEL,
-            'STATUS_REFUND' => OrderEnum::STATUS_REFUND,
-            'STATUS_REFUND_CONFIRM' => OrderEnum::STATUS_REFUND_CONFIRM,
-            'STATUS_GROUPON_TIMEOUT' => OrderEnum::STATUS_GROUPON_TIMEOUT,
-            'STATUS_AUTO_CONFIRM' => OrderEnum::STATUS_AUTO_CONFIRM,
-        ]));
-        
-        // 显示类型状态映射
-        $this->assignconfig('showTypeStatusMap', json_encode([
-            'all' => [],
-            'wait_pay' => [OrderEnum::STATUS_CREATE],
-            'cancelled' => [OrderEnum::STATUS_CANCEL, OrderEnum::STATUS_AUTO_CANCEL, OrderEnum::STATUS_ADMIN_CANCEL],
-            'refund' => [OrderEnum::STATUS_REFUND, OrderEnum::STATUS_REFUND_CONFIRM, OrderEnum::STATUS_GROUPON_TIMEOUT],
-            'wait_ship' => [OrderEnum::STATUS_PAY],
-            'shipped' => [OrderEnum::STATUS_SHIP],
-            'wait_comment' => [OrderEnum::STATUS_CONFIRM, OrderEnum::STATUS_AUTO_CONFIRM],
-            'completed' => [OrderEnum::STATUS_COMMENT],
-        ]));
+  
     }
     }
 
 
     /**
     /**
@@ -227,106 +204,61 @@ class Order extends Backend
             $this->error('记录未找到');
             $this->error('记录未找到');
         }
         }
 
 
+        // 转换为数组以便处理
+        $rowData = $row->toArray();
+        
         // 添加枚举文本转换
         // 添加枚举文本转换
-        $row['order_status_text'] = OrderEnum::getOrderStatusText($row['order_status']);
-        $row['source_text'] = $this->getSourceText($row['source']);
-        $row['type_text'] = $this->getTypeText($row['type']);
-        $row['pay_type_text'] = $this->getPayTypeText($row['pay_type']);
-        $row['pay_mode_text'] = $this->getPayModeText($row['pay_mode']);
-        $row['delivery_type_text'] = $this->getDeliveryTypeText($row['delivery_type']);
-        $row['invoice_status_text'] = $this->getInvoiceStatusText($row['invoice_status']);
-        $row['activity_type_text'] = $this->getActivityTypeText($row['activity_type']);
+        $rowData['order_status_text'] = OrderEnum::getOrderStatusText($rowData['order_status']);
+        $rowData['source_text'] = ChannelEnum::getChannelText($rowData['source'] ?? '');
+        $rowData['type_text'] = $this->getTypeText($rowData['type']);
+        $rowData['pay_type_text'] = $this->getPayTypeText($rowData['pay_type']);
+        $rowData['pay_mode_text'] = $this->getPayModeText($rowData['pay_mode']);
+        $rowData['delivery_type_text'] = $this->getDeliveryTypeText($rowData['delivery_type']);
+        
+        if (!empty($rowData['invoice_status'])) {
+            $rowData['invoice_status_text'] = $this->getInvoiceStatusText($rowData['invoice_status']);
+        }
+        if (!empty($rowData['activity_type'])) {
+            $rowData['activity_type_text'] = $this->getActivityTypeText($rowData['activity_type']);
+        }
         
         
         // 处理订单商品的规格信息和售后状态文本
         // 处理订单商品的规格信息和售后状态文本
-        if ($row->order_goods) {
+        if (!empty($rowData['order_goods'])) {
             $orderGoods = [];
             $orderGoods = [];
-            foreach ($row->order_goods as $index => $item) {
-                $itemData = $item->toArray();
+            foreach ($rowData['order_goods'] as $index => $item) {
                 // 格式化商品规格属性
                 // 格式化商品规格属性
-                $itemData['goods_sku_attr_formatted'] = $this->formatGoodsSkuAttr($itemData['goods_sku_attr']);
+                $item['goods_sku_attr_formatted'] = $this->formatGoodsSkuAttr($item['goods_sku_attr']);
                 // 处理售后状态文本
                 // 处理售后状态文本
-                $itemData['sale_status_text'] = $this->getSaleStatusText($itemData['sale_status']);
-                $orderGoods[] = $itemData;
+                $item['sale_status_text'] = $this->getSaleStatusText($item['sale_status']);
+                $orderGoods[] = $item;
             }
             }
-            $row['order_goods'] = $orderGoods;
+            $rowData['order_goods'] = $orderGoods;
         }
         }
         
         
-        // 单独查询订单操作记录(因为使用order_sn关联)
-        $orderActionResult = Db::name('shop_order_action')
-            ->where('order_sn', $row['order_sn'])
-            ->order('createtime desc')
-            ->select();
-        
-        // 转换为数组并处理操作记录文本
-        $orderActions = [];
-        if ($orderActionResult) {
-            $orderActions = collection($orderActionResult)->toArray();
-            foreach ($orderActions as &$action) {
-                $action['action_type_text'] = $this->getActionTypeText($action['action_type'] ?? '');
-            }
-        }
+        // 使用 OrderActionService 获取订单操作记录
+        $orderActions = OrderActionService::getActionTimeline($rowData['order_sn']);
         
         
         // 将操作记录添加到订单数据中
         // 将操作记录添加到订单数据中
-        $row['order_action'] = $orderActions;
-
-        // 重新计算商品折扣价格(基于新字段)
-        // $this->calculateGoodsDiscountPrice($row);
+        $rowData['order_action'] = $orderActions;
 
 
+        // 支付信息
+        //  查询支付信息
+        $payInfo = PayService::getPayInfo($rowData['id']);
+        $rowData['pay_info'] = $payInfo;
         $config = get_addon_config('shop');
         $config = get_addon_config('shop');
         $this->assignconfig('shop', $config);
         $this->assignconfig('shop', $config);
 
 
-        $this->view->assign('row', $row);
+        $this->view->assign('row', $rowData);
         return $this->view->fetch();
         return $this->view->fetch();
     }
     }
 
 
     /**
     /**
-     * 计算商品折扣后的价格
-     */
-    private function calculateGoodsDiscountPrice(&$row)
-    {
-        if (!isset($row['order_goods']) || empty($row['order_goods'])) {
-            return;
-        }
-
-        // 使用新的字段名进行计算
-        $orderAmount = bcsub($row['order_amount'], $row['express_fee'], 2);
-        $goodsPrice = $row['goods_price'];
-        $discountRatio = $goodsPrice > 0 ? bcdiv($orderAmount, $goodsPrice, 10) : 1;
-        $remainingAmount = $orderAmount;
-        
-        $orderGoods = $row['order_goods'];
-        $goodsCount = count($orderGoods);
-        foreach ($orderGoods as $index => $item) {
-            if ($index == $goodsCount - 1) {
-                // 最后一个商品,使用剩余金额
-                $discountPrice = $remainingAmount;
-            } else {
-                // 计算折扣后价格
-                $originalPrice = bcmul($item['goods_original_price'], $item['nums'], 2);
-                $discountPrice = $row['discount_fee'] == 0 ? $originalPrice : bcmul($originalPrice, $discountRatio, 2);
-            }
-            $remainingAmount = bcsub($remainingAmount, $discountPrice, 2);
-            $row['order_goods'][$index]['discount_price'] = $discountPrice;
-        }
-    }
-
-    /**
      * 获取订单来源文本
      * 获取订单来源文本
      */
      */
-    private function getSourceText($source)
+    private function getPlatformText($platform)
     {
     {
-        // 映射数据库中的source字段到ChannelEnum
-        $sourceMapping = [
-            'H5' => ChannelEnum::CHANNEL_H5,
-            'WechatOfficialAccount' => ChannelEnum::CHANNEL_WECHAT_OFFICIAL_ACCOUNT,
-            'WechatMiniProgram' => ChannelEnum::CHANNEL_WECHAT_MINI_PROGRAM,
-            'App' => ChannelEnum::CHANNEL_IOS_APP, // 默认使用iOS
-            'PC' => ChannelEnum::CHANNEL_PC,
-            'Admin' => ChannelEnum::CHANNEL_PC, // 后台创建归为PC
-        ];
-        
-        $channelType = $sourceMapping[$source] ?? $source;
-        return ChannelEnum::getChannelText($channelType);
+        // 直接使用ChannelEnum获取渠道文本
+        return ChannelEnum::getChannelText($platform);
     }
     }
 
 
     /**
     /**
@@ -379,13 +311,7 @@ class Order extends Backend
         return OrderEnum::getActivityTypeText($activityType);
         return OrderEnum::getActivityTypeText($activityType);
     }
     }
 
 
-    /**
-     * 获取操作类型文本
-     */
-    private function getActionTypeText($actionType)
-    {
-        return OrderEnum::getActionTypeText($actionType);
-    }
+
 
 
     /**
     /**
      * 获取售后状态文本
      * 获取售后状态文本
@@ -432,18 +358,39 @@ class Order extends Backend
         }
         }
         //取消
         //取消
         if ($order_status == OrderEnum::STATUS_CANCEL && $order->order_status == OrderEnum::STATUS_CREATE && !$order->pay_time) {
         if ($order_status == OrderEnum::STATUS_CANCEL && $order->order_status == OrderEnum::STATUS_CREATE && !$order->pay_time) {
+            $oldStatus = $order->order_status;
             $order->order_status = OrderEnum::STATUS_CANCEL;
             $order->order_status = OrderEnum::STATUS_CANCEL;
             $order->cancel_time = time();
             $order->cancel_time = time();
             $order->save();
             $order->save();
+            
+            // 记录管理员操作
+            OrderActionService::recordAdminAction(
+                $order->order_sn,
+                OrderActionEnum::ACTION_ADMIN_CANCEL,
+                '管理员',
+                '管理员取消订单',
+                $this->auth->id ?? 0
+            );
+            
             $this->success('取消成功');
             $this->success('取消成功');
         }
         }
         // 支付
         // 支付
         if ($pay_time && $order->order_status == OrderEnum::STATUS_CREATE && !$order->pay_time) {
         if ($pay_time && $order->order_status == OrderEnum::STATUS_CREATE && !$order->pay_time) {
+            $oldStatus = $order->order_status;
             $order->order_status = OrderEnum::STATUS_PAY;
             $order->order_status = OrderEnum::STATUS_PAY;
             $order->pay_type = 'system';
             $order->pay_type = 'system';
             $order->pay_amount = $order->amount;
             $order->pay_amount = $order->amount;
             $order->pay_time = time();
             $order->pay_time = time();
             $order->save();
             $order->save();
+            
+            // 记录管理员操作
+            OrderActionService::recordAdminAction(
+                $order->order_sn,
+                OrderActionEnum::ACTION_PAY,
+                '管理员',
+                '管理员手动标记订单为已支付',
+                $this->auth->id ?? 0
+            );
 
 
             //发送通知
             //发送通知
             //TemplateMsg::sendTempMsg(0, $order->order_sn);
             //TemplateMsg::sendTempMsg(0, $order->order_sn);
@@ -451,9 +398,19 @@ class Order extends Backend
         }
         }
         //已完成
         //已完成
         if ($order_status == OrderEnum::STATUS_CONFIRM && $order->order_status == OrderEnum::STATUS_PAY && $order->pay_time) {
         if ($order_status == OrderEnum::STATUS_CONFIRM && $order->order_status == OrderEnum::STATUS_PAY && $order->pay_time) {
+            $oldStatus = $order->order_status;
             $order->order_status = OrderEnum::STATUS_CONFIRM;
             $order->order_status = OrderEnum::STATUS_CONFIRM;
             $order->save();
             $order->save();
-            OrderAction::push($order->order_sn, '更改订单为已完成', '管理员');
+            
+            // 记录管理员操作
+            OrderActionService::recordAdminAction(
+                $order->order_sn,
+                OrderActionEnum::ACTION_RECEIVE,
+                '管理员',
+                '管理员手动标记订单为已完成',
+                $this->auth->id ?? 0
+            );
+            
             $this->success('操作成功');
             $this->success('操作成功');
         } elseif ($order->order_status == OrderEnum::STATUS_REFUND) {
         } elseif ($order->order_status == OrderEnum::STATUS_REFUND) {
             $this->error("请完成售后后再进行操作");
             $this->error("请完成售后后再进行操作");
@@ -494,11 +451,26 @@ class Order extends Backend
         }
         }
         //发货 / 修改快递信息
         //发货 / 修改快递信息
         if ($order->order_status == OrderEnum::STATUS_PAY && $type == 0) {
         if ($order->order_status == OrderEnum::STATUS_PAY && $type == 0) {
+            $oldStatus = $order->order_status;
             $order->express_name = $expressname;
             $order->express_name = $expressname;
             $order->express_no = $expressno;
             $order->express_no = $expressno;
             $order->order_status = OrderEnum::STATUS_SHIP;
             $order->order_status = OrderEnum::STATUS_SHIP;
             $order->shipping_time = time();
             $order->shipping_time = time();
             $order->save();
             $order->save();
+            
+            // 记录管理员操作
+            OrderActionService::recordAdminAction(
+                $order->order_sn,
+                OrderActionEnum::ACTION_SHIP,
+                '管理员',
+                '管理员发货,快递公司:' . $expressname . ',快递单号:' . $expressno,
+                $this->auth->id ?? 0,
+                [
+                    'express_name' => $expressname,
+                    'express_no' => $expressno,
+                ]
+            );
+            
             $this->success('发货成功');
             $this->success('发货成功');
         } elseif ($type == 1) {
         } elseif ($type == 1) {
             $order->express_name = $expressname;
             $order->express_name = $expressname;

+ 6 - 11
application/admin/model/shop/Comment.php

@@ -3,8 +3,8 @@
 namespace app\admin\model\shop;
 namespace app\admin\model\shop;
 
 
 use think\Model;
 use think\Model;
-
-
+use app\common\Enum\StatusEnum;
+use app\common\Enum\CommentEnum;
 class Comment extends Model
 class Comment extends Model
 {
 {
 
 
@@ -28,8 +28,8 @@ class Comment extends Model
     {
     {
         self::afterWrite(function ($row) {
         self::afterWrite(function ($row) {
             $changedData = $row->getChangedData();
             $changedData = $row->getChangedData();
-            if (isset($changedData['status']) && $row->goods) {
-                if ($changedData['status'] == 'normal') {
+            if (isset($changedData['evaluate_status']) && $row->goods) {
+                if ($changedData['evaluate_status'] == CommentEnum::EVALUATE_STATUS_APPROVED) {
                     $row->goods->setInc('comments');
                     $row->goods->setInc('comments');
                 } else {
                 } else {
                     if ($row->goods->comments > 0) {
                     if ($row->goods->comments > 0) {
@@ -40,20 +40,15 @@ class Comment extends Model
         });
         });
         self::afterDelete(function ($row) {
         self::afterDelete(function ($row) {
             if ($row['pid']) {
             if ($row['pid']) {
-                \addons\shop\model\Comment::where('id', $row['pid'])->setDec('comments');
+                \app\admin\model\shop\Comment::where('id', $row['pid'])->setDec('comments');
             }
             }
         });
         });
     }
     }
 
 
-    public function getStatusList()
-    {
-        return ['normal' => __('Normal'), 'hidden' => __('Hidden')];
-    }
-
     public function getStatusTextAttr($value, $data)
     public function getStatusTextAttr($value, $data)
     {
     {
         $value = $value ?: ($data['status'] ?? '');
         $value = $value ?: ($data['status'] ?? '');
-        $list = $this->getStatusList();
+        $list = StatusEnum::getMap();
         return $list[$value] ?? '';
         return $list[$value] ?? '';
     }
     }
 
 

+ 4 - 4
application/admin/view/shop/comment/index.html

@@ -2,10 +2,10 @@
     
     
     <div class="panel-heading">
     <div class="panel-heading">
         {:build_heading(null,FALSE)}
         {:build_heading(null,FALSE)}
-        <ul class="nav nav-tabs" data-field="status">
-            <li class="{:$Think.get.status === null ? 'active' : ''}"><a href="#t-all" data-value="" data-toggle="tab">{:__('All')}</a></li>
-            {foreach name="statusList" item="vo"}
-            <li class="{:$Think.get.status === (string)$key ? 'active' : ''}"><a href="#t-{$key|htmlentities}" data-value="{$key|htmlentities}" data-toggle="tab">{$vo|htmlentities}</a></li>
+        <ul class="nav nav-tabs" data-field="evaluate_status">
+            <li class="{:$Think.get.evaluate_status === null ? 'active' : ''}"><a href="#t-all" data-value="" data-toggle="tab">{:__('All')}</a></li>
+            {foreach name="evaluateStatusList" item="vo" key="key"}
+            <li class="{:$Think.get.evaluate_status === (string)$key ? 'active' : ''}"><a href="#t-{$key|htmlentities}" data-value="{$key|htmlentities}" data-toggle="tab">{$vo|htmlentities}</a></li>
             {/foreach}
             {/foreach}
         </ul>
         </ul>
     </div>
     </div>

+ 101 - 21
application/admin/view/shop/order/detail.html

@@ -30,6 +30,16 @@
     .table-goods > thead > tr > th, .table-goods > tbody > tr > th, .table-goods > thead > tr > td, .table-goods > tbody > tr > td {
     .table-goods > thead > tr > th, .table-goods > tbody > tr > th, .table-goods > thead > tr > td, .table-goods > tbody > tr > td {
         vertical-align: middle;
         vertical-align: middle;
     }
     }
+    
+    .table-goods .label {
+        margin: 0;
+        padding: 4px 8px;
+        font-size: 11px;
+    }
+    
+    .table-goods th[width] {
+        white-space: nowrap;
+    }
 
 
     .order-status {
     .order-status {
         display: flex;
         display: flex;
@@ -72,7 +82,10 @@
                         <li class="list-group-item order-status">
                         <li class="list-group-item order-status">
                             <div>
                             <div>
                                 订单状态:
                                 订单状态:
-                                <span class="label label-danger">{$row.order_status_text|default='未知'}</span>
+                                <span class="label label-{if $row.order_status == 101}warning{elseif $row.order_status == 201}info{elseif $row.order_status == 301}primary{elseif $row.order_status == 401}success{elseif $row.order_status == 102}danger{else/}default{/if}">
+                                    {if $row.order_status == 101}<i class="fa fa-clock-o"></i> {elseif $row.order_status == 201}<i class="fa fa-money"></i> {elseif $row.order_status == 301}<i class="fa fa-truck"></i> {elseif $row.order_status == 401}<i class="fa fa-check-circle"></i> {elseif $row.order_status == 102}<i class="fa fa-times-circle"></i> {/if}
+                                    {$row.order_status_text|default='未知'}
+                                </span>
                             </div>
                             </div>
                             <div>
                             <div>
                                 {if $row['order_status']==101}
                                 {if $row['order_status']==101}
@@ -124,19 +137,29 @@
                                 <span style="margin-right:10px;">下单用户:</span>
                                 <span style="margin-right:10px;">下单用户:</span>
                                 <img src="{$row.user.avatar|default='/assets/img/avatar.png'}" style="width:40px;height:40px;border-radius:50%;margin-right:10px;" />
                                 <img src="{$row.user.avatar|default='/assets/img/avatar.png'}" style="width:40px;height:40px;border-radius:50%;margin-right:10px;" />
                                 <div>
                                 <div>
-                                    <div style="color:#337ab7;font-weight:bold;">{$row.user.username|default='游客'}</div>
+                                    <div>
+                                        {if !empty($row.user_id) && $row.user_id > 0}
+                                        <!-- <a href="{:url('user/user/edit', ['ids' => $row.user_id])}" target="_blank" style="color:#337ab7;font-weight:bold;text-decoration:none;"> -->
+                                            {$row.user.username|default='游客'}
+                                            <i class="fa fa-external-link" style="font-size:10px;margin-left:3px;"></i>
+                                        <!-- </a> -->
+                                        {else/}
+                                        <span style="color:#999;font-weight:bold;">游客</span>
+                                        {/if}
+                                    </div>
                                     <div style="color:#999;font-size:12px;">ID: {$row.user_id|htmlentities}</div>
                                     <div style="color:#999;font-size:12px;">ID: {$row.user_id|htmlentities}</div>
                                 </div>
                                 </div>
                             </div>
                             </div>
                         </li>
                         </li>
-                        <li class="list-group-item">订单来源:{$row.source_text|default='未知'}</li>
+                        <!-- <li class="list-group-item">订单来源:{$row.source_text|default='未知'}</li> -->
                         <li class="list-group-item">订单类型:{$row.type_text|default='普通订单'}</li>
                         <li class="list-group-item">订单类型:{$row.type_text|default='普通订单'}</li>
                         <li class="list-group-item">商品数量:{$row.goods_num|htmlentities}</li>
                         <li class="list-group-item">商品数量:{$row.goods_num|htmlentities}</li>
                         <li class="list-group-item">商品费用:¥{$row.goods_price|htmlentities}</li>
                         <li class="list-group-item">商品费用:¥{$row.goods_price|htmlentities}</li>
-                        <li class="list-group-item">快递费用:¥{$row.express_fee|htmlentities}</li>
-                        <li class="list-group-item">折扣金额:¥{$row.discount_fee|htmlentities}</li>
+                        <li class="list-group-item">快递费用:¥{$row.express_fee|default='0.00'}</li>
+                        <li class="list-group-item">折扣金额:¥{$row.discount_fee|default='0.00'}</li>
+                        {if !empty($row.user_coupon_id)}
                         <li class="list-group-item">优惠券金额:¥{$row.coupon_discount_fee|default='0.00'}</li>
                         <li class="list-group-item">优惠券金额:¥{$row.coupon_discount_fee|default='0.00'}</li>
-                        <li class="list-group-item">营销金额:¥{$row.promo_discount_fee|default='0.00'}</li>
+                        {/if}
                         <li class="list-group-item">订单金额:¥{$row.order_amount|htmlentities}</li>
                         <li class="list-group-item">订单金额:¥{$row.order_amount|htmlentities}</li>
                         <li class="list-group-item">实付金额:¥{$row.pay_amount|htmlentities}</li>
                         <li class="list-group-item">实付金额:¥{$row.pay_amount|htmlentities}</li>
                         <li class="list-group-item">
                         <li class="list-group-item">
@@ -147,13 +170,13 @@
                         <li class="list-group-item">优惠券ID:{$row.user_coupon_id|htmlentities}</li>
                         <li class="list-group-item">优惠券ID:{$row.user_coupon_id|htmlentities}</li>
                         {/if}
                         {/if}
                         {if !empty($row.activity_type)}
                         {if !empty($row.activity_type)}
-                        <!-- <li class="list-group-item">活动类型:{$row.activity_type_text|default=$row.activity_type|default='未知'}</li> -->
+                        <li class="list-group-item">活动类型:{$row.activity_type_text|default=$row.activity_type|default='未知'}</li>
                         {/if}
                         {/if}
                         {if !empty($row.activity_id)}
                         {if !empty($row.activity_id)}
-                        <!-- <li class="list-group-item">活动ID:{$row.activity_id|htmlentities}</li> -->
+                        <li class="list-group-item">活动ID:{$row.activity_id|htmlentities}</li>
                         {/if}
                         {/if}
                         {if !empty($row.score)}
                         {if !empty($row.score)}
-                        <!-- <li class="list-group-item">使用积分:{$row.score|htmlentities}</li> -->
+                        <li class="list-group-item">使用积分:{$row.score|htmlentities}</li>
                         {/if}
                         {/if}
                     </ul>
                     </ul>
                 </div>
                 </div>
@@ -162,10 +185,10 @@
                         <li class="list-group-item">下单时间:{$row.createtime|date="Y-m-d H:i:s",###}</li>
                         <li class="list-group-item">下单时间:{$row.createtime|date="Y-m-d H:i:s",###}</li>
                         <li class="list-group-item">过期时间:{notempty name="row.expire_time"}{$row.expire_time|date="Y-m-d H:i:s",###}{else/}无{/notempty}</li>
                         <li class="list-group-item">过期时间:{notempty name="row.expire_time"}{$row.expire_time|date="Y-m-d H:i:s",###}{else/}无{/notempty}</li>
                         <li class="list-group-item">支付方式:{$row.pay_type_text|default=$row.pay_type|default='未知'}</li>
                         <li class="list-group-item">支付方式:{$row.pay_type_text|default=$row.pay_type|default='未知'}</li>
-                        <li class="list-group-item">支付模式:{$row.pay_mode_text|default=$row.pay_mode|default='未知'}</li>
-                        <li class="list-group-item">交易流水号:{$row.transactionid|htmlentities}</li>
                         <li class="list-group-item">支付时间:{notempty name="row.pay_time"}{$row.pay_time|date="Y-m-d H:i:s",###}{else/}未支付{/notempty}</li>
                         <li class="list-group-item">支付时间:{notempty name="row.pay_time"}{$row.pay_time|date="Y-m-d H:i:s",###}{else/}未支付{/notempty}</li>
-                        <!-- <li class="list-group-item">退货时间:{notempty name="row.refund_time"}{$row.refund_time|date="Y-m-d H:i:s",###}{else/}无{/notempty}</li> -->
+                        {if !empty($row.refund_time)}
+                        <li class="list-group-item">退款时间:{$row.refund_time|date="Y-m-d H:i:s",###}</li>
+                        {/if}
                         <li class="list-group-item">发货时间:{notempty name="row.shipping_time"}{$row.shipping_time|date="Y-m-d H:i:s",###}{else/}未发货{/notempty}</li>
                         <li class="list-group-item">发货时间:{notempty name="row.shipping_time"}{$row.shipping_time|date="Y-m-d H:i:s",###}{else/}未发货{/notempty}</li>
                         <li class="list-group-item">收货时间:{notempty name="row.receive_time"}{$row.receive_time|date="Y-m-d H:i:s",###}{else/}未收货{/notempty}</li>
                         <li class="list-group-item">收货时间:{notempty name="row.receive_time"}{$row.receive_time|date="Y-m-d H:i:s",###}{else/}未收货{/notempty}</li>
                         <li class="list-group-item">取消时间:{notempty name="row.cancel_time"}{$row.cancel_time|date="Y-m-d H:i:s",###}{else/}未取消{/notempty}</li>
                         <li class="list-group-item">取消时间:{notempty name="row.cancel_time"}{$row.cancel_time|date="Y-m-d H:i:s",###}{else/}未取消{/notempty}</li>
@@ -188,6 +211,40 @@
             </div>
             </div>
         </div>
         </div>
     </div>
     </div>
+    
+    <!-- 支付信息 -->
+    {if !empty($row.pay_info)}
+    <div class="panel panel-default">
+        <div class="panel-heading">
+            <span>支付信息</span>
+        </div>
+        <div class="panel-body">
+            <div class="row">
+                <div class="col-xs-6">
+                    <ul class="list-group">
+                        <li class="list-group-item">支付订单号:{$row.pay_info.order_sn|default='无'}</li>
+                        <li class="list-group-item">支付金额:¥{$row.pay_info.amount|default='0.00'}</li>
+                        <li class="list-group-item">支付状态:
+                            <span class="label label-{if $row.pay_info.status == 'success'}success{elseif $row.pay_info.status == 'pending'}warning{elseif $row.pay_info.status == 'failed'}danger{else/}default{/if}">
+                                {$row.pay_info.status_text|default='未知'}
+                            </span>
+                        </li>
+                        <li class="list-group-item">支付平台:{$row.pay_info.platform_text|default='无'}</li>
+                    </ul>
+                </div>
+                <div class="col-xs-6">
+                    <ul class="list-group">
+                        <li class="list-group-item">第三方订单号:{$row.pay_info.third_order_sn|default='无'}</li>
+                        <li class="list-group-item">支付创建时间:{if !empty($row.pay_info.createtime)}{$row.pay_info.createtime|date="Y-m-d H:i:s",###}{else/}无{/if}</li>
+                        <li class="list-group-item">支付完成时间:{if !empty($row.pay_info.pay_time)}{$row.pay_info.pay_time|date="Y-m-d H:i:s",###}{else/}未完成{/if}</li>
+                        <li class="list-group-item">支付备注:{$row.pay_info.memo|default='无'}</li>
+                    </ul>
+                </div>
+            </div>
+        </div>
+    </div>
+    {/if}
+    
     <!--  -->
     <!--  -->
     <div class="panel panel-default">
     <div class="panel panel-default">
         <div class="panel-heading print-flex">
         <div class="panel-heading print-flex">
@@ -225,8 +282,10 @@
                 <div class="col-xs-6">
                 <div class="col-xs-6">
                     <p>快递公司:{$row.express_name|htmlentities}</p>
                     <p>快递公司:{$row.express_name|htmlentities}</p>
                     <p>快递单号:{$row.express_no|htmlentities}</p>
                     <p>快递单号:{$row.express_no|htmlentities}</p>
-                    <p>快递费用:¥{$row.express_fee|htmlentities}</p>
+                    <p>快递费用:¥{$row.express_fee|default='0.00'}</p>
+                    {if !empty($row.invoice_status)}
                     <p>发票状态:{$row.invoice_status_text|default=$row.invoice_status|default='未开发票'}</p>
                     <p>发票状态:{$row.invoice_status_text|default=$row.invoice_status|default='未开发票'}</p>
+                    {/if}
                 </div>
                 </div>
             </div>
             </div>
         </div>
         </div>
@@ -272,8 +331,8 @@
                                 <div class="sku-attr-list">
                                 <div class="sku-attr-list">
                                     {foreach name="item.goods_sku_attr_formatted" item="attr"}
                                     {foreach name="item.goods_sku_attr_formatted" item="attr"}
                                         <div class="sku-attr-item" style="margin-bottom:2px;">
                                         <div class="sku-attr-item" style="margin-bottom:2px;">
-                                            <span class="attr-name" style="color:#666;font-size:12px;">{$attr.name}:</span>
-                                            <span class="attr-value" style="color:#333;font-weight:bold;">{$attr.value}</span>
+                                            <span class="attr-name" style="color:#666;font-size:12px;">{$attr.key ?? ''}:</span>
+                                            <span class="attr-value" style="color:#333;font-weight:bold;">{$attr.value ?? ''}</span>
                                         </div>
                                         </div>
                                     {/foreach}
                                     {/foreach}
                                 </div>
                                 </div>
@@ -315,11 +374,13 @@
         <table class="table table-bordered table-goods">
         <table class="table table-bordered table-goods">
             <thead>
             <thead>
             <tr>
             <tr>
-                <th>序号</th>
-                <th>操作人</th>
-                <!-- <th>操作类型</th> -->
+                <th width="50">序号</th>
+                <th width="120">操作类型</th>
+                <th width="100">操作人</th>
+                <th width="80">用户类型</th>
                 <th>操作记录</th>
                 <th>操作记录</th>
-                <th>操作时间</th>
+                <th width="80">优先级</th>
+                <th width="150">操作时间</th>
             </tr>
             </tr>
             </thead>
             </thead>
             <tbody>
             <tbody>
@@ -328,19 +389,38 @@
                 <tr>
                 <tr>
                     <th scope="row">{$key+1}</th>
                     <th scope="row">{$key+1}</th>
                     <td>
                     <td>
+                        <span class="label label-{if $item.action_type == 'create'}info{elseif $item.action_type == 'pay'}success{elseif $item.action_type == 'ship'}primary{elseif $item.action_type == 'receive'}success{elseif $item.action_type == 'cancel' || $item.action_type == 'admin_cancel'}danger{elseif $item.action_type == 'refund'}warning{else/}default{/if}">
+                            {$item.action_type_text|default='未知'}
+                        </span>
+                    </td>
+                    <td>
                         {if !empty($item.operator)}
                         {if !empty($item.operator)}
                             {$item.operator|htmlentities}
                             {$item.operator|htmlentities}
                         {else/}
                         {else/}
                             <span style="color:#999;">系统</span>
                             <span style="color:#999;">系统</span>
                         {/if}
                         {/if}
                     </td>
                     </td>
+                    <td>
+                        <span class="label label-{if $item.user_type == 'customer'}info{elseif $item.user_type == 'admin'}warning{elseif $item.user_type == 'system'}default{else/}default{/if}">
+                            {$item.user_type_text|default='未知'}
+                        </span>
+                    </td>
                     <td>{$item.memo|htmlentities}</td>
                     <td>{$item.memo|htmlentities}</td>
-                    <td>{$item.createtime|date="Y-m-d H:i:s",###}</td>
+                    <td>
+                        {if !empty($item.priority_text)}
+                        <span class="label label-{if $item.priority == 4}danger{elseif $item.priority == 3}warning{elseif $item.priority == 2}info{else/}default{/if}">
+                            {$item.priority_text}
+                        </span>
+                        {else/}
+                        <span style="color:#999;">-</span>
+                        {/if}
+                    </td>
+                    <td>{$item.createtime_text}</td>
                 </tr>
                 </tr>
                 {/foreach}
                 {/foreach}
             {else/}
             {else/}
                 <tr>
                 <tr>
-                    <td colspan="5" class="text-center" style="color:#999;padding:20px;">暂无操作记录</td>
+                    <td colspan="7" class="text-center" style="color:#999;padding:20px;">暂无操作记录</td>
                 </tr>
                 </tr>
             {/if}
             {/if}
             </tbody>
             </tbody>

+ 5 - 9
application/admin/view/shop/order/index.html

@@ -2,15 +2,11 @@
 
 
     <div class="panel-heading">
     <div class="panel-heading">
         {:build_heading(null,FALSE)}
         {:build_heading(null,FALSE)}
-        <ul class="nav nav-tabs">
+        <ul class="nav nav-tabs" data-field="order_status">
             <li class="active"><a href="#t-all" data-value='' data-toggle="tab">{:__('All')}</a></li>
             <li class="active"><a href="#t-all" data-value='' data-toggle="tab">{:__('All')}</a></li>
-            <li class=""><a href="#t-wait-pay" data-value='{"order_status":"101"}' data-toggle="tab">待付款</a></li>
-            <li class=""><a href="#t-cancelled" data-value='{"order_status":["in","102,103,104"]}' data-toggle="tab">已取消</a></li>
-            <li class=""><a href="#t-refund" data-value='{"order_status":["in","202,203,204"]}' data-toggle="tab">退款中</a></li>
-            <li class=""><a href="#t-wait-ship" data-value='{"order_status":"201"}' data-toggle="tab">待发货</a></li>
-            <li class=""><a href="#t-shipped" data-value='{"order_status":"301"}' data-toggle="tab">已发货</a></li>
-            <li class=""><a href="#t-wait-comment" data-value='{"order_status":["in","401,402"]}' data-toggle="tab">待评价</a></li>
-            <li class=""><a href="#t-completed" data-value='{"order_status":"501"}' data-toggle="tab">已完成</a></li>
+            {foreach name="orderStatusList" item="vo"}
+            <li><a href="#t-{$key|htmlentities}" data-value='{$vo|htmlentities}'  data-toggle="tab">{$vo|htmlentities}</a></li>
+            {/foreach}
         </ul>
         </ul>
     </div>
     </div>
 
 
@@ -24,7 +20,7 @@
                         <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('shop/order/del')?'':'hide'}" title="{:__('Delete')}"><i class="fa fa-trash"></i> {:__('Delete')}</a>
                         <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('shop/order/del')?'':'hide'}" title="{:__('Delete')}"><i class="fa fa-trash"></i> {:__('Delete')}</a>
 
 
                         <a class="btn btn-success btn-recyclebin btn-dialog {:$auth->check('shop/order/recyclebin')?'':'hide'}" href="shop/order/recyclebin" title="{:__('Recycle bin')}"><i class="fa fa-recycle"></i> {:__('Recycle bin')}</a>
                         <a class="btn btn-success btn-recyclebin btn-dialog {:$auth->check('shop/order/recyclebin')?'':'hide'}" href="shop/order/recyclebin" title="{:__('Recycle bin')}"><i class="fa fa-recycle"></i> {:__('Recycle bin')}</a>
-                        <a class="btn btn-info btn-print-multiple-electronic" href="javascript:;" title="{:__('批量打印快递电子面单')}"><i class="fa fa-print"></i> {:__('批量打印快递电子面单')}</a>
+                        <!-- <a class="btn btn-info btn-print-multiple-electronic" href="javascript:;" title="{:__('批量打印快递电子面单')}"><i class="fa fa-print"></i> {:__('批量打印快递电子面单')}</a> -->
                         <a class="btn btn-primary btn-print-multiple-invoice" href="javascript:;" title="{:__('批量打印发货单')}"><i class="fa fa-print"></i> {:__('批量打印发货单')}</a>
                         <a class="btn btn-primary btn-print-multiple-invoice" href="javascript:;" title="{:__('批量打印发货单')}"><i class="fa fa-print"></i> {:__('批量打印发货单')}</a>
 
 
                     </div>
                     </div>

+ 3 - 3
application/api/controller/Page.php

@@ -22,9 +22,9 @@ class Page extends Base
             $id =  $keyword ? $keyword : $this->request->param('id', '');
             $id =  $keyword ? $keyword : $this->request->param('id', '');
             $page = PageModel::get($id);
             $page = PageModel::get($id);
         }
         }
-        // if (!$page || $page['status'] != 'normal') {
-        //     $this->error('未找到指定的单页');
-        // }
+        if (!$page || $page['status'] != 'normal') {
+            $this->success('未找到指定的单页', null);
+        }
         $page->setInc('views');
         $page->setInc('views');
         $image = $page->getData('image');
         $image = $page->getData('image');
         $fields = explode(',', 'id,title,content,image,description,status,createtime');
         $fields = explode(',', 'id,title,content,image,description,status,createtime');

+ 80 - 94
application/common/Enum/ChannelEnum.php

@@ -8,21 +8,21 @@ namespace app\common\Enum;
 class ChannelEnum
 class ChannelEnum
 {
 {
     // ============ 渠道类型 ============
     // ============ 渠道类型 ============
-    const CHANNEL_WECHAT_OFFICIAL_ACCOUNT = 'wechat_official_account';  // 微信公众号
-    const CHANNEL_WECHAT_MINI_PROGRAM = 'wechat_mini_program';      // 微信小程序
-    const CHANNEL_IOS_APP = 'ios_app';                  // iOS APP
-    const CHANNEL_ANDROID_APP = 'android_app';              // Android APP
-    const CHANNEL_H5 = 'h5';                       // H5
-    const CHANNEL_DOUYIN_MINI_PROGRAM = 'douyin_mini_program';      // 抖音小程序
-    const CHANNEL_PC = 'pc';                       // PC
-    const CHANNEL_QQ_MINI_PROGRAM = 'qq_mini_program';          // QQ小程序
-    const CHANNEL_ALIPAY_MINI_PROGRAM = 'alipay_mini_program';      // 支付宝小程序
+    const CHANNEL_WECHAT_OFFICIAL_ACCOUNT = 'WechatOfficialAccount';  // 微信公众号
+    const CHANNEL_WECHAT_MINI_PROGRAM = 'WechatMiniProgram';      // 微信小程序
+    const CHANNEL_IOS_APP = 'App';                  // iOS APP
+    const CHANNEL_ANDROID_APP = 'App';              // Android APP
+    const CHANNEL_H5 = 'H5';                       // H5
+    const CHANNEL_DOUYIN_MINI_PROGRAM = 'DouyinMiniProgram';      // 抖音小程序
+    const CHANNEL_PC = 'PC';                       // PC
+    const CHANNEL_QQ_MINI_PROGRAM = 'QQMiniProgram';          // QQ小程序
+    const CHANNEL_ALIPAY_MINI_PROGRAM = 'AlipayMiniProgram';      // 支付宝小程序
 
 
     // ============ 渠道分组 ============
     // ============ 渠道分组 ============
-    const GROUP_WECHAT = 'wechat';              // 微信生态
-    const GROUP_MOBILE_APP = 'mobile_app';      // 移动应用
-    const GROUP_WEB = 'web';                    // 网页端
-    const GROUP_MINI_PROGRAM = 'mini_program';  // 小程序
+    const GROUP_WECHAT = 'Wechat';              // 微信生态
+    const GROUP_MOBILE_APP = 'MobileApp';      // 移动应用
+    const GROUP_WEB = 'Web';                    // 网页端
+    const GROUP_MINI_PROGRAM = 'MiniProgram';  // 小程序
 
 
     /**
     /**
      * 获取渠道映射
      * 获取渠道映射
@@ -88,15 +88,15 @@ class ChannelEnum
     public static function getChannelCodeMap()
     public static function getChannelCodeMap()
     {
     {
         return [
         return [
-            self::CHANNEL_WECHAT_OFFICIAL_ACCOUNT => 'wechat_official_account',
-            self::CHANNEL_WECHAT_MINI_PROGRAM => 'wechat_mini_program',
-            self::CHANNEL_IOS_APP => 'ios_app',
-            self::CHANNEL_ANDROID_APP => 'android_app',
-            self::CHANNEL_H5 => 'h5',
-            self::CHANNEL_DOUYIN_MINI_PROGRAM => 'douyin_mini_program',
-            self::CHANNEL_PC => 'pc',
-            self::CHANNEL_QQ_MINI_PROGRAM => 'qq_mini_program',
-            self::CHANNEL_ALIPAY_MINI_PROGRAM => 'alipay_mini_program',
+            self::CHANNEL_WECHAT_OFFICIAL_ACCOUNT => 'WechatOfficialAccount',
+            self::CHANNEL_WECHAT_MINI_PROGRAM => 'WechatMiniProgram',
+            self::CHANNEL_IOS_APP => 'App',
+            self::CHANNEL_ANDROID_APP => 'App',
+            self::CHANNEL_H5 => 'H5',
+            self::CHANNEL_DOUYIN_MINI_PROGRAM => 'DouyinMiniProgram',
+            self::CHANNEL_PC => 'PC',
+            self::CHANNEL_QQ_MINI_PROGRAM => 'QQMiniProgram',
+            self::CHANNEL_ALIPAY_MINI_PROGRAM => 'AlipayMiniProgram',
         ];
         ];
     }
     }
 
 
@@ -269,27 +269,13 @@ class ChannelEnum
     }
     }
 
 
     // ============ 支付方式枚举 ============
     // ============ 支付方式枚举 ============
-    const PAYMENT_WECHAT = 'wechat';        // 微信支付
-    const PAYMENT_ALIPAY = 'alipay';        // 支付宝支付
-    const PAYMENT_BALANCE = 'balance';      // 余额支付
-    const PAYMENT_OFFLINE = 'offline';      // 线下支付
-    const PAYMENT_COD = 'cod';              // 货到付款
-    const PAYMENT_DOUYIN = 'douyin';        // 抖音支付
 
 
     /**
     /**
      * 获取支付方式映射
      * 获取支付方式映射
      */
      */
     public static function getPaymentMap()
     public static function getPaymentMap()
     {
     {
-        return [
-            self::PAYMENT_WECHAT => '微信支付',
-            self::PAYMENT_ALIPAY => '支付宝支付',
-            self::PAYMENT_BALANCE => '余额支付',
-            self::PAYMENT_OFFLINE => '线下支付',
-            self::PAYMENT_COD => '货到付款',          //货到付款
-            self::PAYMENT_DOUYIN => '抖音支付',
-
-        ];
+        return PayEnum::getPayMethodList();
     }
     }
 
 
     /**
     /**
@@ -299,57 +285,57 @@ class ChannelEnum
     {
     {
         $channelPayments = [
         $channelPayments = [
             self::CHANNEL_WECHAT_OFFICIAL_ACCOUNT => [
             self::CHANNEL_WECHAT_OFFICIAL_ACCOUNT => [
-                self::PAYMENT_WECHAT, 
-                self::PAYMENT_ALIPAY, 
-                self::PAYMENT_BALANCE,
-                self::PAYMENT_COD,
+                PayEnum::METHOD_WECHAT, 
+                PayEnum::METHOD_ALIPAY, 
+                PayEnum::METHOD_BALANCE,
+                PayEnum::METHOD_COD,
             ],
             ],
             self::CHANNEL_WECHAT_MINI_PROGRAM => [
             self::CHANNEL_WECHAT_MINI_PROGRAM => [
-                self::PAYMENT_WECHAT, 
-                //self::PAYMENT_ALIPAY, 
-                //self::PAYMENT_BALANCE,
-                //self::PAYMENT_COD,
+                PayEnum::METHOD_WECHAT, 
+                //PayEnum::METHOD_ALIPAY, 
+                //PayEnum::METHOD_BALANCE,
+                //PayEnum::METHOD_COD,
             ],
             ],
             self::CHANNEL_DOUYIN_MINI_PROGRAM => [
             self::CHANNEL_DOUYIN_MINI_PROGRAM => [
-                self::PAYMENT_WECHAT, 
-                self::PAYMENT_ALIPAY, 
-                // self::PAYMENT_BALANCE,
-                // self::PAYMENT_COD,
-                self::PAYMENT_DOUYIN,
+                PayEnum::METHOD_WECHAT, 
+                PayEnum::METHOD_ALIPAY, 
+                // PayEnum::METHOD_BALANCE,
+                // PayEnum::METHOD_COD,
+                PayEnum::METHOD_DOUYIN,
             ],
             ],
             self::CHANNEL_IOS_APP => [
             self::CHANNEL_IOS_APP => [
-                self::PAYMENT_WECHAT, 
-                self::PAYMENT_ALIPAY, 
-                //self::PAYMENT_BALANCE,
-                //self::PAYMENT_COD,
+                PayEnum::METHOD_WECHAT, 
+                PayEnum::METHOD_ALIPAY, 
+                //PayEnum::METHOD_BALANCE,
+                //PayEnum::METHOD_COD,
             ],
             ],
             self::CHANNEL_ANDROID_APP => [
             self::CHANNEL_ANDROID_APP => [
-                self::PAYMENT_WECHAT, 
-                self::PAYMENT_ALIPAY, 
-                //self::PAYMENT_BALANCE,
-                //self::PAYMENT_COD,
+                PayEnum::METHOD_WECHAT, 
+                PayEnum::METHOD_ALIPAY, 
+                //PayEnum::METHOD_BALANCE,
+                //PayEnum::METHOD_COD,
             ],
             ],
             self::CHANNEL_PC => [       
             self::CHANNEL_PC => [       
-                self::PAYMENT_ALIPAY, 
-                self::PAYMENT_BALANCE, 
-                self::PAYMENT_OFFLINE,
-                self::PAYMENT_COD,
+                PayEnum::METHOD_ALIPAY, 
+                PayEnum::METHOD_BALANCE, 
+                PayEnum::METHOD_OFFLINE,
+                PayEnum::METHOD_COD,
             ],
             ],
             self::CHANNEL_QQ_MINI_PROGRAM => [
             self::CHANNEL_QQ_MINI_PROGRAM => [
-                self::PAYMENT_WECHAT, 
-                self::PAYMENT_ALIPAY, 
-                self::PAYMENT_BALANCE,
-                self::PAYMENT_COD,
+                PayEnum::METHOD_WECHAT, 
+                PayEnum::METHOD_ALIPAY, 
+                PayEnum::METHOD_BALANCE,
+                PayEnum::METHOD_COD,
             ],
             ],
             self::CHANNEL_ALIPAY_MINI_PROGRAM => [
             self::CHANNEL_ALIPAY_MINI_PROGRAM => [
-                self::PAYMENT_WECHAT, 
-                self::PAYMENT_ALIPAY, 
-                self::PAYMENT_BALANCE,
-                self::PAYMENT_COD,
+                PayEnum::METHOD_WECHAT, 
+                PayEnum::METHOD_ALIPAY, 
+                PayEnum::METHOD_BALANCE,
+                PayEnum::METHOD_COD,
             ],
             ],
         ];
         ];
 
 
-        return $channelPayments[$channel] ?? [self::PAYMENT_BALANCE];
+        return $channelPayments[$channel] ?? [PayEnum::METHOD_BALANCE];
     }
     }
 
 
     /**
     /**
@@ -368,40 +354,40 @@ class ChannelEnum
     {
     {
         $recommendedPayments = [
         $recommendedPayments = [
             self::CHANNEL_WECHAT_OFFICIAL_ACCOUNT => [
             self::CHANNEL_WECHAT_OFFICIAL_ACCOUNT => [
-                self::PAYMENT_WECHAT, 
-                self::PAYMENT_BALANCE,
+                PayEnum::METHOD_WECHAT, 
+                PayEnum::METHOD_BALANCE,
             ],
             ],
             self::CHANNEL_WECHAT_MINI_PROGRAM => [
             self::CHANNEL_WECHAT_MINI_PROGRAM => [
-                self::PAYMENT_WECHAT, 
-                self::PAYMENT_BALANCE,
+                PayEnum::METHOD_WECHAT, 
+                PayEnum::METHOD_BALANCE,
             ],
             ],
             self::CHANNEL_IOS_APP => [
             self::CHANNEL_IOS_APP => [
-                self::PAYMENT_WECHAT, 
-                self::PAYMENT_ALIPAY, 
-                self::PAYMENT_BALANCE
+                PayEnum::METHOD_WECHAT, 
+                PayEnum::METHOD_ALIPAY, 
+                PayEnum::METHOD_BALANCE
             ],
             ],
             self::CHANNEL_ANDROID_APP => [
             self::CHANNEL_ANDROID_APP => [
-                self::PAYMENT_ALIPAY, 
-                self::PAYMENT_WECHAT, 
-                self::PAYMENT_BALANCE
+                PayEnum::METHOD_ALIPAY, 
+                PayEnum::METHOD_WECHAT, 
+                PayEnum::METHOD_BALANCE
             ],
             ],
             self::CHANNEL_PC => [
             self::CHANNEL_PC => [
-                self::PAYMENT_ALIPAY, 
-                self::PAYMENT_OFFLINE, 
-                self::PAYMENT_BALANCE
+                PayEnum::METHOD_ALIPAY, 
+                PayEnum::METHOD_OFFLINE, 
+                PayEnum::METHOD_BALANCE
             ],
             ],
             self::CHANNEL_QQ_MINI_PROGRAM => [
             self::CHANNEL_QQ_MINI_PROGRAM => [
-                self::PAYMENT_WECHAT, 
-                self::PAYMENT_BALANCE
+                PayEnum::METHOD_WECHAT, 
+                PayEnum::METHOD_BALANCE
             ],
             ],
             self::CHANNEL_ALIPAY_MINI_PROGRAM => [
             self::CHANNEL_ALIPAY_MINI_PROGRAM => [
-                self::PAYMENT_WECHAT, 
-                self::PAYMENT_ALIPAY, 
-                self::PAYMENT_BALANCE
+                PayEnum::METHOD_WECHAT, 
+                PayEnum::METHOD_ALIPAY, 
+                PayEnum::METHOD_BALANCE
             ],
             ],
         ];
         ];
 
 
-        return $recommendedPayments[$channel] ?? [self::PAYMENT_BALANCE];
+        return $recommendedPayments[$channel] ?? [PayEnum::METHOD_BALANCE];
     }
     }
 
 
     /**
     /**
@@ -410,7 +396,7 @@ class ChannelEnum
     public static function getPaymentChannelCompatibility($payment)
     public static function getPaymentChannelCompatibility($payment)
     {
     {
         $compatibility = [
         $compatibility = [
-            self::PAYMENT_WECHAT => [
+            PayEnum::METHOD_WECHAT => [
                 'supported' => [
                 'supported' => [
                     self::CHANNEL_WECHAT_OFFICIAL_ACCOUNT,
                     self::CHANNEL_WECHAT_OFFICIAL_ACCOUNT,
                     self::CHANNEL_WECHAT_MINI_PROGRAM,
                     self::CHANNEL_WECHAT_MINI_PROGRAM,
@@ -423,7 +409,7 @@ class ChannelEnum
                     self::CHANNEL_WECHAT_MINI_PROGRAM,
                     self::CHANNEL_WECHAT_MINI_PROGRAM,
                 ],
                 ],
             ],
             ],
-            self::PAYMENT_ALIPAY => [
+            PayEnum::METHOD_ALIPAY => [
                 'supported' => [
                 'supported' => [
                     self::CHANNEL_IOS_APP,
                     self::CHANNEL_IOS_APP,
                     self::CHANNEL_ANDROID_APP,
                     self::CHANNEL_ANDROID_APP,
@@ -438,11 +424,11 @@ class ChannelEnum
                     self::CHANNEL_H5,
                     self::CHANNEL_H5,
                 ],
                 ],
             ],
             ],
-            self::PAYMENT_BALANCE => [
+            PayEnum::METHOD_BALANCE => [
                 'supported' => array_keys(self::getChannelMap()),
                 'supported' => array_keys(self::getChannelMap()),
                 'recommended' => array_keys(self::getChannelMap()),
                 'recommended' => array_keys(self::getChannelMap()),
             ],
             ],
-            self::PAYMENT_OFFLINE => [
+            PayEnum::METHOD_OFFLINE => [
                 'supported' => [self::CHANNEL_PC],
                 'supported' => [self::CHANNEL_PC],
                 'recommended' => [self::CHANNEL_PC],
                 'recommended' => [self::CHANNEL_PC],
             ],
             ],

+ 5 - 30
application/common/Enum/OrderEnum.php

@@ -49,15 +49,7 @@ class OrderEnum
     const ACTIVITY_TYPE_PRESALE = 'presale';     // 预售活动
     const ACTIVITY_TYPE_PRESALE = 'presale';     // 预售活动
     const ACTIVITY_TYPE_DISCOUNT = 'discount';   // 折扣活动
     const ACTIVITY_TYPE_DISCOUNT = 'discount';   // 折扣活动
 
 
-    // 操作类型
-    const ACTION_TYPE_CREATE = 'create';       // 创建订单
-    const ACTION_TYPE_PAY = 'pay';             // 支付订单
-    const ACTION_TYPE_SHIP = 'ship';           // 发货
-    const ACTION_TYPE_RECEIVE = 'receive';     // 确认收货
-    const ACTION_TYPE_CANCEL = 'cancel';       // 取消订单
-    const ACTION_TYPE_REFUND = 'refund';       // 退款
-    const ACTION_TYPE_RETURN = 'return';       // 退货
-    const ACTION_TYPE_COMPLETE = 'complete';   // 完成订单
+
 
 
     public static function getPayModeList()
     public static function getPayModeList()
     {
     {
@@ -133,24 +125,7 @@ class OrderEnum
         return self::getActivityTypeList()[$activityType] ?? $activityType;
         return self::getActivityTypeList()[$activityType] ?? $activityType;
     }
     }
 
 
-    public static function getActionTypeList()
-    {
-        return [
-            self::ACTION_TYPE_CREATE => '创建订单',
-            self::ACTION_TYPE_PAY => '支付订单',
-            self::ACTION_TYPE_SHIP => '发货',
-            self::ACTION_TYPE_RECEIVE => '确认收货',
-            self::ACTION_TYPE_CANCEL => '取消订单',
-            self::ACTION_TYPE_REFUND => '退款',
-            self::ACTION_TYPE_RETURN => '退货',
-            self::ACTION_TYPE_COMPLETE => '完成订单',
-        ];
-    }
 
 
-    public static function getActionTypeText($actionType)
-    {
-        return self::getActionTypeList()[$actionType] ?? $actionType;
-    }
 
 
 
 
     const STATUS_TEXT_MAP = [
     const STATUS_TEXT_MAP = [
@@ -159,10 +134,10 @@ class OrderEnum
         self::STATUS_AUTO_CANCEL => "已取消(系统)",
         self::STATUS_AUTO_CANCEL => "已取消(系统)",
         self::STATUS_ADMIN_CANCEL => "已取消(管理员)",
         self::STATUS_ADMIN_CANCEL => "已取消(管理员)",
         self::STATUS_PAY => "已付款",
         self::STATUS_PAY => "已付款",
-        self::STATUS_REFUND => "订单取消,退款中",
-        self::STATUS_REFUND_CONFIRM => "已退款",
-        self::STATUS_GROUPON_TIMEOUT => "已超时团购",
-        self::STATUS_SHIP => "已发货",
+        // self::STATUS_REFUND => "订单取消,退款中",
+        // self::STATUS_REFUND_CONFIRM => "已退款",
+        // self::STATUS_GROUPON_TIMEOUT => "已超时团购",
+        self::STATUS_SHIP => "待收货",
         self::STATUS_CONFIRM => "已完成",
         self::STATUS_CONFIRM => "已完成",
         self::STATUS_AUTO_CONFIRM => "已收货(系统)",
         self::STATUS_AUTO_CONFIRM => "已收货(系统)",
         self::STATUS_COMMENT => "已评价",
         self::STATUS_COMMENT => "已评价",

+ 2 - 2
application/common/Enum/PayEnum.php

@@ -14,7 +14,7 @@ class PayEnum
     const METHOD_DOUYIN  = 'douyin';
     const METHOD_DOUYIN  = 'douyin';
     const METHOD_BALANCE = 'balance';
     const METHOD_BALANCE = 'balance';
     const METHOD_OFFLINE = 'offline';
     const METHOD_OFFLINE = 'offline';
-    const METHOD_CASH    = 'cash';
+    const METHOD_COD    = 'cod';
     const METHOD_BANK_CARD = 'bank_card';
     const METHOD_BANK_CARD = 'bank_card';
     const METHOD_SCORE = 'score';
     const METHOD_SCORE = 'score';
     // 支付类型枚举
     // 支付类型枚举
@@ -24,7 +24,7 @@ class PayEnum
         self::METHOD_DOUYIN => '抖音支付',
         self::METHOD_DOUYIN => '抖音支付',
         // self::METHOD_BALANCE => '余额支付',
         // self::METHOD_BALANCE => '余额支付',
         // self::METHOD_OFFLINE => '线下支付',
         // self::METHOD_OFFLINE => '线下支付',
-        // self::METHOD_CASH => '现金支付',
+       //self::METHOD_COD => '货到付款', 
         // self::METHOD_BANK_CARD => '银行卡支付',
         // self::METHOD_BANK_CARD => '银行卡支付',
         //self::METHOD_SCORE => '积分支付',
         //self::METHOD_SCORE => '积分支付',
     ];
     ];

+ 12 - 0
application/common/Service/Pay/PayService.php

@@ -7,6 +7,7 @@ use think\Exception;
 use app\common\Enum\ChannelEnum;
 use app\common\Enum\ChannelEnum;
 use app\common\Service\Pay\Provider\Base;
 use app\common\Service\Pay\Provider\Base;
 use app\common\exception\BusinessException;
 use app\common\exception\BusinessException;
+use app\common\model\pay\index as PayModel;
 /**
 /**
  * 支付服务类 - 工厂模式
  * 支付服务类 - 工厂模式
  * 配合 yansongda 支付库
  * 配合 yansongda 支付库
@@ -183,4 +184,15 @@ class PayService
         return $this->provider()->{$funcname}(...$arguments);
         return $this->provider()->{$funcname}(...$arguments);
     }
     }
 
 
+    /**
+     * 获取支付信息
+     * @param string $orderId
+     * @return array
+     */
+    public static function getPayInfo($orderId = 0)
+    {
+        $payInfo = PayModel::where('id', $orderId)->select();
+        return $payInfo;
+    }
+
 }
 }

+ 110 - 14
public/assets/js/backend/shop/comment.js

@@ -17,6 +17,24 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
 
 
             var table = $("#table");
             var table = $("#table");
 
 
+            // 绑定评价状态tab事件
+            $('.panel-heading .nav-tabs[data-field="evaluate_status"] a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
+                var value = $(this).data("value");
+                var options = table.bootstrapTable('getOptions');
+                var queryParams = options.queryParams;
+                options.pageNumber = 1;
+                options.queryParams = function (params) {
+                    if (value) {
+                        params.filter = JSON.stringify({evaluate_status: value});
+                        params.op = JSON.stringify({evaluate_status: '='});
+                    }
+                    params = queryParams.call(this, params);
+                    return params;
+                };
+                table.bootstrapTable('refresh', {});
+                return false;
+            });
+
             // 初始化表格
             // 初始化表格
             table.bootstrapTable({
             table.bootstrapTable({
                 url: $.fn.bootstrapTable.defaults.extend.index_url,
                 url: $.fn.bootstrapTable.defaults.extend.index_url,
@@ -28,8 +46,23 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                     [
                     [
                         {checkbox: true},
                         {checkbox: true},
                         {field: 'id', title: __('Id')},
                         {field: 'id', title: __('Id')},
-                        {field: 'user_id', title: __('User_id'), formatter: Table.api.formatter.search},
-                        {field: 'user.nickname', title: __('Nickname')},
+                        {field: 'user_id', title: __('User_id'), formatter: Table.api.formatter.search,visible: false},
+                        {
+                            field: 'user.username', 
+                            title: __('User_id'),
+                            operate: 'LIKE',
+                            formatter: function (value, row, index) {
+                                // 显示用户头像和用户名
+                                console.log(row);
+                                var avatar = row.user && row.user.avatar ? row.user.avatar : '/assets/img/avatar.png';
+                                var username = row.user && row.user.username ? row.user.username : '游客';
+                                
+                                return '<div style="display:flex;align-items:center;">' + 
+                                       '<img src="' + avatar + '" style="width:40px;height:40px;border-radius:50%;margin-right:10px;" />' +
+                                       '<span style="color:#a55bff;">' + username + '</span>' +
+                                       '</div>';
+                            }
+                        },
                         {field: 'order_id', title: __('Order_id')},
                         {field: 'order_id', title: __('Order_id')},
                         // {field: 'pid', title: __('Pid')},
                         // {field: 'pid', title: __('Pid')},
                         {field: 'goods.title', title: __('Goods')},
                         {field: 'goods.title', title: __('Goods')},
@@ -39,20 +72,69 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         // {field: 'subscribe', title: __('Subscribe')},
                         // {field: 'subscribe', title: __('Subscribe')},
                         {field: 'createtime', title: __('Createtime'), operate: 'RANGE', addclass: 'datetimerange', autocomplete: false, formatter: Table.api.formatter.datetime},
                         {field: 'createtime', title: __('Createtime'), operate: 'RANGE', addclass: 'datetimerange', autocomplete: false, formatter: Table.api.formatter.datetime},
                         {field: 'updatetime', title: __('Updatetime'), operate: 'RANGE', addclass: 'datetimerange', autocomplete: false, formatter: Table.api.formatter.datetime, visible: false},
                         {field: 'updatetime', title: __('Updatetime'), operate: 'RANGE', addclass: 'datetimerange', autocomplete: false, formatter: Table.api.formatter.datetime, visible: false},
-                        {field: 'status', title: __('Status'), searchList: {"normal": __('Normal'), "hidden": __('Hidden')}, formatter: Table.api.formatter.status},
+                        {field: 'status', title: __('Status'), searchList: Controller.api.parseConfigJson('statusSearchList'), formatter: Table.api.formatter.status},
                         {
                         {
-                            field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate, buttons: [{
-                                name: '回复',
-                                title: function (row) {
-                                    return '回复(' + (row.user ? row.user.nickname : '未知') + ')';
+                            field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate, 
+                            buttons: [
+                            {
+                                name: '审核通过',
+                                title: '审核通过',
+                                classname: 'btn btn-xs btn-success btn-ajax',
+                                text: '审核通过',
+                                icon: 'fa fa-check',
+                                url: 'shop/comment/audit/evaluate_status/2',
+                                visible: function (row) {
+                                    //返回true时按钮显示,返回false隐藏
+                                    return row.evaluate_status == 1;
+                                },
+                                confirm: '确认审核通过吗',
+                                success: function (data, ret) {
+                                    Layer.alert(ret.msg + ",返回数据:" + JSON.stringify(data));
+                                    //如果需要阻止成功提示,则必须使用return false;
+                                    //return false;
                                 },
                                 },
-                                classname: 'btn btn-xs btn-primary btn-dialog',
-                                text: function (row) {
-                                    return '回复(' + row.comments + ')';
+                                error: function (data, ret) {
+                                    console.log(data, ret);
+                                    Layer.alert(ret.msg);
+                                    return false;
+                                }       
+                            }, 
+                            {
+                                name: '审核拒绝',
+                                title: '审核拒绝',
+                                classname: 'btn btn-xs btn-danger btn-ajax',
+                                text: '审核拒绝',
+                                icon: 'fa fa-close',
+                                url: 'shop/comment/audit/evaluate_status/3',
+                                visible: function (row) {
+                                    //返回true时按钮显示,返回false隐藏
+                                    return row.evaluate_status == 1;
                                 },
                                 },
-                                icon: 'fa fa-comment',
-                                url: 'shop/comment/reply/pid/{id}'
-                            }]
+                                confirm: '确认审核拒绝吗',
+                                success: function (data, ret) {
+                                    Layer.alert(ret.msg + ",返回数据:" + JSON.stringify(data));
+                                    //如果需要阻止成功提示,则必须使用return false;
+                                    //return false;
+                                },
+                                error: function (data, ret) {
+                                    console.log(data, ret);
+                                    Layer.alert(ret.msg);
+                                    return false;
+                                }       
+                            }, 
+                            // {
+                            //     name: '回复',
+                            //     title: function (row) {
+                            //         return '回复(' + (row.user ? row.user.nickname : '未知') + ')';
+                            //     },
+                            //     classname: 'btn btn-xs btn-primary btn-dialog',
+                            //     text: function (row) {
+                            //         return '回复(' + row.comments + ')';
+                            //     },
+                            //     icon: 'fa fa-comment',
+                            //     url: 'shop/comment/reply/pid/{id}'
+                            // }
+                           ]
                         }
                         }
                     ]
                     ]
                 ]
                 ]
@@ -81,13 +163,27 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
             Controller.api.bindevent();
             Controller.api.bindevent();
         },
         },
         api: {
         api: {
+              // 解析Config中的JSON字符串的辅助函数
+            parseConfigJson: function(configKey, defaultValue) {
+                var configValue = Config[configKey] || defaultValue || {};
+                
+                // 如果是字符串,尝试解析JSON
+                if (typeof configValue === 'string') {
+                    try {
+                        return JSON.parse(configValue);
+                    } catch (e) {
+                        return defaultValue || {};
+                    }
+                }                
+                return configValue;
+            },
             bindevent: function () {
             bindevent: function () {
                 Form.api.bindevent($("form[role=form]"));
                 Form.api.bindevent($("form[role=form]"));
             },
             },
             content: function (value, row, index) {
             content: function (value, row, index) {
                 var width = this.width != undefined ? (this.width.match(/^\d+$/) ? this.width + "px" : this.width) : "250px";
                 var width = this.width != undefined ? (this.width.match(/^\d+$/) ? this.width + "px" : this.width) : "250px";
                 return "<div style='white-space: nowrap; text-overflow:ellipsis; overflow: hidden; max-width:" + width + ";' title='" + value + "' data-toggle='tooltip' data-placement='right'>" + value + "</div>";
                 return "<div style='white-space: nowrap; text-overflow:ellipsis; overflow: hidden; max-width:" + width + ";' title='" + value + "' data-toggle='tooltip' data-placement='right'>" + value + "</div>";
-            },
+            }
         }
         }
     };
     };
     return Controller;
     return Controller;

+ 39 - 97
public/assets/js/backend/shop/order.js

@@ -1,41 +1,9 @@
 define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
 define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
 
 
-    if (Config.shop && Config.shop.printtype == 'clodop') {
-        require([Config.shop.clodop_ip_port + '/CLodopfuncs.js']);
-    }
+  
     
     
     var Controller = {
     var Controller = {
-        // OrderEnum 辅助方法
-        orderEnum: {
-            // 获取订单状态常量
-            getStatusConstants: function() {
-                return Controller.api.parseConfigJson('orderStatusConstants') || {};
-            },
-            
-            // 获取显示类型状态映射
-            getShowTypeStatusMap: function() {
-                return Controller.api.parseConfigJson('showTypeStatusMap') || {};
-            },
-            
-            // 根据状态码获取状态文本
-            getStatusText: function(statusCode) {
-                var statusList = Controller.api.parseConfigJson('orderStatusList') || {};
-                return statusList[statusCode] || '未知状态';
-            },
-            
-            // 根据显示类型获取对应的状态列表
-            getStatusByShowType: function(showType) {
-                var statusMap = this.getShowTypeStatusMap();
-                return statusMap[showType] || [];
-            },
-            
-            // 检查订单状态是否属于某个显示类型
-            isStatusInShowType: function(statusCode, showType) {
-                var statusList = this.getStatusByShowType(showType);
-                return statusList.indexOf(parseInt(statusCode)) !== -1;
-            }
-        },
-        
+       
         index: function () {
         index: function () {
             // 初始化表格参数配置
             // 初始化表格参数配置
             Table.api.init({
             Table.api.init({
@@ -140,25 +108,20 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                             }
                             }
                         },
                         },
                         {
                         {
-                            field: 'amount',
-                            title: __('Amount'),
-                            operate: 'BETWEEN'
-                        },
-                        {
                             field: 'goods_price',
                             field: 'goods_price',
                             title: __('Goods_price'),
                             title: __('Goods_price'),
                             operate: 'BETWEEN'
                             operate: 'BETWEEN'
                         },
                         },
-                        {
-                            field: 'discount_fee',
-                            title: __('Discount_fee'),
-                            operate: 'BETWEEN'
-                        },
-                        {
-                            field: 'express_fee',
-                            title: __('Express_fee'),
-                            operate: 'BETWEEN'
-                        },
+                        // {
+                        //     field: 'discount_fee',
+                        //     title: __('Discount_fee'),
+                        //     operate: 'BETWEEN'
+                        // },
+                        // {
+                        //     field: 'express_fee',
+                        //     title: __('Express_fee'),
+                        //     operate: 'BETWEEN'
+                        // },
                         {
                         {
                             field: 'order_amount',
                             field: 'order_amount',
                             title: __('Order_amount'),
                             title: __('Order_amount'),
@@ -178,15 +141,15 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                                 return row.pay_type_text || value;
                                 return row.pay_type_text || value;
                             }
                             }
                         },
                         },
-                        {
-                            field: 'pay_mode',
-                            title: __('Pay_mode'),
-                            searchList: Controller.api.parseConfigJson('payModeList'),
-                            operate: 'LIKE',
-                            formatter: function (value, row) {
-                                return row.pay_mode_text || value;
-                            }
-                        },
+                        // {
+                        //     field: 'pay_mode',
+                        //     title: __('Pay_mode'),
+                        //     searchList: Controller.api.parseConfigJson('payModeList'),
+                        //     operate: 'LIKE',
+                        //     formatter: function (value, row) {
+                        //         return row.pay_mode_text || value;
+                        //     }
+                        // },
                         {
                         {
                             field: 'express_name',
                             field: 'express_name',
                             title: __('Express_name'),
                             title: __('Express_name'),
@@ -200,10 +163,12 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         {
                         {
                             field: 'order_status',
                             field: 'order_status',
                             title: __('Order_status'),
                             title: __('Order_status'),
+                            
                             searchList: Controller.api.parseConfigJson('orderStatusList'),
                             searchList: Controller.api.parseConfigJson('orderStatusList'),
                             formatter: function (value, row) {
                             formatter: function (value, row) {
                                 return row.order_status_text || value;
                                 return row.order_status_text || value;
                             }
                             }
+                            // formatter: Table.api.formatter.search, 
                         },
                         },
                         {
                         {
                             field: 'memo',
                             field: 'memo',
@@ -232,14 +197,14 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                             autocomplete: false,
                             autocomplete: false,
                             formatter: Table.api.formatter.datetime
                             formatter: Table.api.formatter.datetime
                         },
                         },
-                        {
-                            field: 'expire_time',
-                            title: __('Expire_time'),
-                            operate: 'RANGE',
-                            addclass: 'datetimerange',
-                            autocomplete: false,
-                            formatter: Table.api.formatter.datetime
-                        },
+                        // {
+                        //     field: 'expire_time',
+                        //     title: __('Expire_time'),
+                        //     operate: 'RANGE',
+                        //     addclass: 'datetimerange',
+                        //     autocomplete: false,
+                        //     formatter: Table.api.formatter.datetime
+                        // },
                         {
                         {
                             field: 'pay_time',
                             field: 'pay_time',
                             title: __('Pay_time'),
                             title: __('Pay_time'),
@@ -248,14 +213,14 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                             autocomplete: false,
                             autocomplete: false,
                             formatter: Table.api.formatter.datetime
                             formatter: Table.api.formatter.datetime
                         },
                         },
-                        {
-                            field: 'refund_time',
-                            title: __('Refund_time'),
-                            operate: 'RANGE',
-                            addclass: 'datetimerange',
-                            autocomplete: false,
-                            formatter: Table.api.formatter.datetime
-                        },
+                        // {
+                        //     field: 'refund_time',
+                        //     title: __('Refund_time'),
+                        //     operate: 'RANGE',
+                        //     addclass: 'datetimerange',
+                        //     autocomplete: false,
+                        //     formatter: Table.api.formatter.datetime
+                        // },
                         {
                         {
                             field: 'shipping_time',
                             field: 'shipping_time',
                             title: __('Shipping_time'),
                             title: __('Shipping_time'),
@@ -314,29 +279,6 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                     ]
                     ]
                 ]
                 ]
             });
             });
-
-            var options = table.bootstrapTable('getOptions');
-            var queryParams = options.queryParams;
-            // 绑定TAB事件
-            $('.panel-heading a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
-                var value = $(this).data("value");
-                options = table.bootstrapTable('getOptions');
-                options.pageNumber = 1;
-                options.queryParams = function (params) {
-                    if (value) {
-                        params.filter = JSON.stringify(value);
-                        let op = {}
-                        for (let i in value) {
-                            op[i] = '=';
-                        }
-                        params.op = JSON.stringify(op);
-                    }
-                    params = queryParams.call(this, params);
-                    return params;
-                };
-                table.bootstrapTable('refresh', {});
-                return false;
-            });
             // 批量打印电子面单
             // 批量打印电子面单
             $(document).on('click', '.btn-print-multiple-electronic', function () {
             $(document).on('click', '.btn-print-multiple-electronic', function () {
                 let ids = Table.api.selectedids(table);
                 let ids = Table.api.selectedids(table);