feat: 商户订单/退款页面增加商户名称筛选功能

前端:
- 商户订单页面(index.vue)和退款页面(refund/index.vue)增加merchant-name组件
- 搜索表单新增"商户名称"下拉选择,支持远程搜索和分页加载
- 订单列表表格新增"商户名称"列(merName)
- 重置按钮同时清除商户筛选条件

后端:
- MerchantOrderPageResponse增加merId和merName字段
- OrderMapper.xml的getMerchantAdminPage查询JOIN eb_merchant表获取商户名称
- OrderServiceImpl: 平台管理员支持按request.merId筛选指定商户订单
- RefundOrderServiceImpl: 同样支持按request.merId筛选退款订单

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
AriadenCaseblg
2026-04-10 12:09:29 +08:00
parent 0e6519b176
commit ad6fbc30ab
6 changed files with 42 additions and 5 deletions

View File

@@ -31,6 +31,12 @@ public class MerchantOrderPageResponse implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "商户ID")
private Integer merId;
@ApiModelProperty(value = "商户名称")
private String merName;
@ApiModelProperty(value = "订单号")
private String orderNo;

View File

@@ -288,9 +288,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderDao, Order> implements Or
map.put("endTime", dateLimit.getEndTime());
}
}
// 平台管理员(mer_id=0)查看全部商户订单,商户管理员只查看自己的订单
// 平台管理员(mer_id=0)可按商户筛选或查看全部,商户管理员只查看自己的订单
if (systemAdmin.getMerId() > 0) {
map.put("merId", systemAdmin.getMerId());
} else if (ObjectUtil.isNotNull(request.getMerId()) && request.getMerId() > 0) {
map.put("merId", request.getMerId());
}
if (StrUtil.isNotBlank(request.getOrderNo())) {
map.put("orderNo", URLUtil.decode(request.getOrderNo()));

View File

@@ -151,9 +151,11 @@ public class RefundOrderServiceImpl extends ServiceImpl<RefundOrderDao, RefundOr
map.put("endTime", dateLimit.getEndTime());
}
}
// 平台管理员(mer_id=0)查看全部商户退款订单
// 平台管理员(mer_id=0)可按商户筛选或查看全部商户管理员只查看自己的
if (systemAdmin.getMerId() > 0) {
map.put("merId", systemAdmin.getMerId());
} else if (ObjectUtil.isNotNull(request.getMerId()) && request.getMerId() > 0) {
map.put("merId", request.getMerId());
}
if (StrUtil.isNotBlank(request.getRefundOrderNo())) {
map.put("refundOrderNo", request.getRefundOrderNo());

View File

@@ -128,10 +128,12 @@
o.cancel_status as cancelStatus, o.level, o.type, o.create_time as createTime,o.second_type as secondType, o.group_buy_record_status as groupBuyRecordStatus,
o.cancel_status as cancelStatus, o.level, o.type, o.create_time as createTime,o.second_type as secondType,
mo.merchant_remark as merchantRemark, mo.verify_code as verifyCode, mo.shipping_type as shippingType,
u.nickname,u.is_logoff
u.nickname,u.is_logoff,
m.name as merName
from eb_order o
left join eb_merchant_order as mo on o.order_no = mo.order_no
left join eb_user as u on o.uid = u.id
left join eb_merchant as m on o.mer_id = m.id
where o.is_del = 0 and o.is_merchant_del = 0 and o.level = 1
<if test="merId != null">
and o.mer_id = #{merId}

View File

@@ -48,6 +48,9 @@
<el-form-item label="用户搜索:" label-for="nickname">
<UserSearchInput v-model="tableFrom" />
</el-form-item>
<el-form-item label="商户名称:">
<merchant-name @getMerId="getMerId" :merIdChecked="tableFrom.merId"></merchant-name>
</el-form-item>
<el-form-item>
<el-button type="primary" size="small" @click="handleSearchList">查询</el-button>
<el-button size="small" @click="handleReset">重置</el-button>
@@ -108,6 +111,7 @@
<span v-show="scope.row.isUserDel" class="colorPrompt" style="display: block">用户已删除</span>
</template>
</el-table-column>
<el-table-column prop="merName" label="商户名称" min-width="150" v-if="checkedCities.includes('商户名称')" />
<el-table-column label="用户昵称" min-width="150" v-if="checkedCities.includes('用户昵称')">
<template slot-scope="scope">
<span :class="scope.row.isLogoff == true ? 'colorPrompt' : ''">{{ scope.row.nickName }}</span>
@@ -334,6 +338,7 @@ import {
import detailsFrom from './components/orderDetail';
import writeOffDialog from './components/writeOffDialog';
import orderSend from './orderSend';
import merchantName from '@/components/merchantName';
import Cookies from 'js-cookie';
import { isWriteOff } from '@/utils';
import { checkPermi } from '@/utils/permission';
@@ -350,6 +355,7 @@ let tableFroms = {
type: '',
searchType: 'all',
content: '',
merId: null,
};
export default {
name: 'orderlistDetails',
@@ -358,6 +364,7 @@ export default {
detailsFrom,
orderSend,
writeOffDialog,
merchantName,
},
data() {
return {
@@ -404,8 +411,8 @@ export default {
active: false,
card_select_show: false,
checkAll: true,
checkedCities: ['订单号', '用户昵称', '实际支付', '支付方式', '订单状态', '下单时间'],
columnData: ['订单号', '用户昵称', '实际支付', '支付方式', '订单状态', '下单时间'],
checkedCities: ['订单号', '商户名称', '用户昵称', '实际支付', '支付方式', '订单状态', '下单时间'],
columnData: ['订单号', '商户名称', '用户昵称', '实际支付', '支付方式', '订单状态', '下单时间'],
isIndeterminate: false,
orderDatalist: null,
merPrintStatus: Cookies.get('merPrint'), // 商家小票打印开关状态
@@ -422,6 +429,10 @@ export default {
},
methods: {
checkPermi,
getMerId(id) {
this.tableFrom.merId = id;
this.handleSearchList();
},
//直接退款
onDirectRefund(row) {
this.secondType = row.secondType;
@@ -454,6 +465,8 @@ export default {
this.tableFrom.page = 1;
this.tableFrom.content = '';
this.tableFrom.searchType = 'all';
this.tableFrom.merId = null;
this.timeVal = [];
this.selectChange();
},
resetFormRefundhandler() {

View File

@@ -58,6 +58,9 @@
@keyup.enter.native="handleSearchList"
/>
</el-form-item>
<el-form-item label="商户名称:">
<merchant-name @getMerId="getMerId" :merIdChecked="tableFrom.merId"></merchant-name>
</el-form-item>
<el-form-item>
<el-button type="primary" size="small" @click="handleSearchList">查询</el-button>
<el-button size="small" @click="handleReset">重置</el-button>
@@ -282,6 +285,7 @@ import RefundOrderDetail from '../components/refundOrderDetail.vue';
import { refundStatusFilter } from '@/filters';
import useRefundOrder from '@/libs/useRefundOrder';
import AgreeToReturn from '@/views/merchantOrder/components/agreeToReturn.vue';
import merchantName from '@/components/merchantName';
import * as $constants from '@/utils/constants';
const { onConfirmReceipt, onApprovedReview } = useRefundOrder();
const tableFroms = {
@@ -294,6 +298,7 @@ const tableFroms = {
searchType: 'all',
content: '',
trackingNumber: '',
merId: null,
};
// 权限判断函数
export default {
@@ -301,6 +306,7 @@ export default {
components: {
AgreeToReturn,
RefundOrderDetail,
merchantName,
},
data() {
return {
@@ -369,6 +375,10 @@ export default {
},
methods: {
checkPermi,
getMerId(id) {
this.tableFrom.merId = id;
this.handleSearchList();
},
//商家确认收货
handleConfirmReceipt(refundOrderNo) {
onConfirmReceipt(refundOrderNo).then(() => {
@@ -425,6 +435,8 @@ export default {
this.tableFrom.content = '';
this.tableFrom.searchType = 'all';
this.tableFrom.trackingNumber = '';
this.tableFrom.merId = null;
this.timeVal = [];
this.selectChange();
},
//搜索