浏览代码

feat(admin): 添加订单状态筛选功能

- 在交易订单页面增加订单状态下拉筛选框
- 新增订单状态选项配置,包括待发货、已发货、确认收货等状态
- 更新搜索逻辑以支持按订单状态筛选数据
- 重置搜索条件时清空订单状态筛选值
- 后端接口新增order_state参数处理
- 数据库查询增加订单状态过滤条件
runphp 3 月之前
父节点
当前提交
5a3dca25f1
共有 3 个文件被更改,包括 34 次插入11 次删除
  1. 29 11
      resource/admin/TradeOrder.vue
  2. 1 0
      src/Controller/Admin/TradeOrderController.php
  3. 4 0
      src/Service/PaymentRecordService.php

+ 29 - 11
resource/admin/TradeOrder.vue

@@ -21,6 +21,16 @@
             </template>
           </el-input>
         </el-form-item>
+        <el-form-item label="订单状态">
+          <el-select v-model="searchForm.order_state" placeholder="请选择订单状态" clearable style="width: 200px;">
+            <el-option 
+              v-for="item in orderStateOptions" 
+              :key="item.value" 
+              :label="item.label" 
+              :value="item.value"
+            />
+          </el-select>
+        </el-form-item>
         <el-form-item>
           <el-button type="primary" @click="handleSearch">查询</el-button>
           <el-button @click="handleReset">重置</el-button>
@@ -164,16 +174,9 @@ export default {
       loading: false,
       searchForm: {
         searchType: 'order_sn',
-        keyword: ''
+        keyword: '',
+        order_state: ''  // 添加订单状态筛选
       },
-      statusOptions: [
-        { label: '待支付', value: 0 },
-        { label: '支付中', value: 1 },
-        { label: '成功', value: 2 },
-        { label: '失败', value: 3 },
-        { label: '已关闭', value: 4 },
-        { label: '退款中', value: 5 }
-      ],
       bizTypeOptions: [
         { label: '商品订单支付', value: 1 }
       ],
@@ -186,7 +189,16 @@ export default {
       dialogVisible: false,
       expressList: [], // 快递公司列表
       currentRow: null, // 当前操作行
-      selectedExpress: '' // 选中的快递公司
+      selectedExpress: '', // 选中的快递公司
+      // 订单状态选项
+      orderStateOptions: [
+        { label: '待发货', value: 1 },
+        { label: '已发货', value: 2 },
+        { label: '确认收货', value: 3 },
+        { label: '交易完成', value: 4 },
+        { label: '已退款', value: 5 },
+        { label: '资金待结算', value: 6 }
+      ],
     }
   },
   async created() {
@@ -249,6 +261,11 @@ export default {
           params[this.searchForm.searchType] = this.searchForm.keyword
         }
         
+        // 添加订单状态筛选参数
+        if (this.searchForm.order_state !== '') {
+          params.order_state = this.searchForm.order_state
+        }
+        
         const res = await this.axiosInstance.get('/lakala/trade_order', { params })
         if (res.code === 200) {
           this.tableData = res.page.data
@@ -275,7 +292,8 @@ export default {
     handleReset() {
       this.searchForm = {
         searchType: 'order_sn',
-        keyword: ''
+        keyword: '',
+        order_state: ''  // 重置订单状态筛选
       }
       this.pagination.page = 1
       this.fetchData()

+ 1 - 0
src/Controller/Admin/TradeOrderController.php

@@ -18,6 +18,7 @@ class TradeOrderController
             'out_trade_no/s' => '',
             'transaction_id/s' => '',
             'wechat_transaction_id/s' => '',
+            'order_state/d' => 0,
         ]);
         return page_response(page: $service->getTradeOrderList($params, $request->pageAndLimit()));
     }

+ 4 - 0
src/Service/PaymentRecordService.php

@@ -42,6 +42,10 @@ class PaymentRecordService
             ->when($params['wechat_transaction_id'], function (Query $query) use ($params) {
                 $query->whereLike('w.wechat_transaction_id', '%' . $params['wechat_transaction_id'] . '%');
             })
+            ->when($params['order_state'], function (Query $query) use ($params) {
+                $query->whereIn('w.order_state', $params['order_state']);
+            })
+
             ->field([
                 'p.id',
                 'p.order_sn',