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:
@@ -31,6 +31,12 @@ public class MerchantOrderPageResponse implements Serializable {
|
|||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "商户ID")
|
||||||
|
private Integer merId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "商户名称")
|
||||||
|
private String merName;
|
||||||
|
|
||||||
@ApiModelProperty(value = "订单号")
|
@ApiModelProperty(value = "订单号")
|
||||||
private String orderNo;
|
private String orderNo;
|
||||||
|
|
||||||
|
|||||||
@@ -288,9 +288,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderDao, Order> implements Or
|
|||||||
map.put("endTime", dateLimit.getEndTime());
|
map.put("endTime", dateLimit.getEndTime());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 平台管理员(mer_id=0)查看全部商户订单,商户管理员只查看自己的订单
|
// 平台管理员(mer_id=0)可按商户筛选或查看全部,商户管理员只查看自己的订单
|
||||||
if (systemAdmin.getMerId() > 0) {
|
if (systemAdmin.getMerId() > 0) {
|
||||||
map.put("merId", systemAdmin.getMerId());
|
map.put("merId", systemAdmin.getMerId());
|
||||||
|
} else if (ObjectUtil.isNotNull(request.getMerId()) && request.getMerId() > 0) {
|
||||||
|
map.put("merId", request.getMerId());
|
||||||
}
|
}
|
||||||
if (StrUtil.isNotBlank(request.getOrderNo())) {
|
if (StrUtil.isNotBlank(request.getOrderNo())) {
|
||||||
map.put("orderNo", URLUtil.decode(request.getOrderNo()));
|
map.put("orderNo", URLUtil.decode(request.getOrderNo()));
|
||||||
|
|||||||
@@ -151,9 +151,11 @@ public class RefundOrderServiceImpl extends ServiceImpl<RefundOrderDao, RefundOr
|
|||||||
map.put("endTime", dateLimit.getEndTime());
|
map.put("endTime", dateLimit.getEndTime());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 平台管理员(mer_id=0)查看全部商户退款订单
|
// 平台管理员(mer_id=0)可按商户筛选或查看全部,商户管理员只查看自己的
|
||||||
if (systemAdmin.getMerId() > 0) {
|
if (systemAdmin.getMerId() > 0) {
|
||||||
map.put("merId", systemAdmin.getMerId());
|
map.put("merId", systemAdmin.getMerId());
|
||||||
|
} else if (ObjectUtil.isNotNull(request.getMerId()) && request.getMerId() > 0) {
|
||||||
|
map.put("merId", request.getMerId());
|
||||||
}
|
}
|
||||||
if (StrUtil.isNotBlank(request.getRefundOrderNo())) {
|
if (StrUtil.isNotBlank(request.getRefundOrderNo())) {
|
||||||
map.put("refundOrderNo", request.getRefundOrderNo());
|
map.put("refundOrderNo", request.getRefundOrderNo());
|
||||||
|
|||||||
@@ -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, 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,
|
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,
|
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
|
from eb_order o
|
||||||
left join eb_merchant_order as mo on o.order_no = mo.order_no
|
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_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
|
where o.is_del = 0 and o.is_merchant_del = 0 and o.level = 1
|
||||||
<if test="merId != null">
|
<if test="merId != null">
|
||||||
and o.mer_id = #{merId}
|
and o.mer_id = #{merId}
|
||||||
|
|||||||
@@ -48,6 +48,9 @@
|
|||||||
<el-form-item label="用户搜索:" label-for="nickname">
|
<el-form-item label="用户搜索:" label-for="nickname">
|
||||||
<UserSearchInput v-model="tableFrom" />
|
<UserSearchInput v-model="tableFrom" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="商户名称:">
|
||||||
|
<merchant-name @getMerId="getMerId" :merIdChecked="tableFrom.merId"></merchant-name>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" size="small" @click="handleSearchList">查询</el-button>
|
<el-button type="primary" size="small" @click="handleSearchList">查询</el-button>
|
||||||
<el-button size="small" @click="handleReset">重置</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>
|
<span v-show="scope.row.isUserDel" class="colorPrompt" style="display: block">用户已删除</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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('用户昵称')">
|
<el-table-column label="用户昵称" min-width="150" v-if="checkedCities.includes('用户昵称')">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span :class="scope.row.isLogoff == true ? 'colorPrompt' : ''">{{ scope.row.nickName }}</span>
|
<span :class="scope.row.isLogoff == true ? 'colorPrompt' : ''">{{ scope.row.nickName }}</span>
|
||||||
@@ -334,6 +338,7 @@ import {
|
|||||||
import detailsFrom from './components/orderDetail';
|
import detailsFrom from './components/orderDetail';
|
||||||
import writeOffDialog from './components/writeOffDialog';
|
import writeOffDialog from './components/writeOffDialog';
|
||||||
import orderSend from './orderSend';
|
import orderSend from './orderSend';
|
||||||
|
import merchantName from '@/components/merchantName';
|
||||||
import Cookies from 'js-cookie';
|
import Cookies from 'js-cookie';
|
||||||
import { isWriteOff } from '@/utils';
|
import { isWriteOff } from '@/utils';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
@@ -350,6 +355,7 @@ let tableFroms = {
|
|||||||
type: '',
|
type: '',
|
||||||
searchType: 'all',
|
searchType: 'all',
|
||||||
content: '',
|
content: '',
|
||||||
|
merId: null,
|
||||||
};
|
};
|
||||||
export default {
|
export default {
|
||||||
name: 'orderlistDetails',
|
name: 'orderlistDetails',
|
||||||
@@ -358,6 +364,7 @@ export default {
|
|||||||
detailsFrom,
|
detailsFrom,
|
||||||
orderSend,
|
orderSend,
|
||||||
writeOffDialog,
|
writeOffDialog,
|
||||||
|
merchantName,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -404,8 +411,8 @@ export default {
|
|||||||
active: false,
|
active: false,
|
||||||
card_select_show: false,
|
card_select_show: false,
|
||||||
checkAll: true,
|
checkAll: true,
|
||||||
checkedCities: ['订单号', '用户昵称', '实际支付', '支付方式', '订单状态', '下单时间'],
|
checkedCities: ['订单号', '商户名称', '用户昵称', '实际支付', '支付方式', '订单状态', '下单时间'],
|
||||||
columnData: ['订单号', '用户昵称', '实际支付', '支付方式', '订单状态', '下单时间'],
|
columnData: ['订单号', '商户名称', '用户昵称', '实际支付', '支付方式', '订单状态', '下单时间'],
|
||||||
isIndeterminate: false,
|
isIndeterminate: false,
|
||||||
orderDatalist: null,
|
orderDatalist: null,
|
||||||
merPrintStatus: Cookies.get('merPrint'), // 商家小票打印开关状态
|
merPrintStatus: Cookies.get('merPrint'), // 商家小票打印开关状态
|
||||||
@@ -422,6 +429,10 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
checkPermi,
|
checkPermi,
|
||||||
|
getMerId(id) {
|
||||||
|
this.tableFrom.merId = id;
|
||||||
|
this.handleSearchList();
|
||||||
|
},
|
||||||
//直接退款
|
//直接退款
|
||||||
onDirectRefund(row) {
|
onDirectRefund(row) {
|
||||||
this.secondType = row.secondType;
|
this.secondType = row.secondType;
|
||||||
@@ -454,6 +465,8 @@ export default {
|
|||||||
this.tableFrom.page = 1;
|
this.tableFrom.page = 1;
|
||||||
this.tableFrom.content = '';
|
this.tableFrom.content = '';
|
||||||
this.tableFrom.searchType = 'all';
|
this.tableFrom.searchType = 'all';
|
||||||
|
this.tableFrom.merId = null;
|
||||||
|
this.timeVal = [];
|
||||||
this.selectChange();
|
this.selectChange();
|
||||||
},
|
},
|
||||||
resetFormRefundhandler() {
|
resetFormRefundhandler() {
|
||||||
|
|||||||
@@ -58,6 +58,9 @@
|
|||||||
@keyup.enter.native="handleSearchList"
|
@keyup.enter.native="handleSearchList"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="商户名称:">
|
||||||
|
<merchant-name @getMerId="getMerId" :merIdChecked="tableFrom.merId"></merchant-name>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" size="small" @click="handleSearchList">查询</el-button>
|
<el-button type="primary" size="small" @click="handleSearchList">查询</el-button>
|
||||||
<el-button size="small" @click="handleReset">重置</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 { refundStatusFilter } from '@/filters';
|
||||||
import useRefundOrder from '@/libs/useRefundOrder';
|
import useRefundOrder from '@/libs/useRefundOrder';
|
||||||
import AgreeToReturn from '@/views/merchantOrder/components/agreeToReturn.vue';
|
import AgreeToReturn from '@/views/merchantOrder/components/agreeToReturn.vue';
|
||||||
|
import merchantName from '@/components/merchantName';
|
||||||
import * as $constants from '@/utils/constants';
|
import * as $constants from '@/utils/constants';
|
||||||
const { onConfirmReceipt, onApprovedReview } = useRefundOrder();
|
const { onConfirmReceipt, onApprovedReview } = useRefundOrder();
|
||||||
const tableFroms = {
|
const tableFroms = {
|
||||||
@@ -294,6 +298,7 @@ const tableFroms = {
|
|||||||
searchType: 'all',
|
searchType: 'all',
|
||||||
content: '',
|
content: '',
|
||||||
trackingNumber: '',
|
trackingNumber: '',
|
||||||
|
merId: null,
|
||||||
};
|
};
|
||||||
// 权限判断函数
|
// 权限判断函数
|
||||||
export default {
|
export default {
|
||||||
@@ -301,6 +306,7 @@ export default {
|
|||||||
components: {
|
components: {
|
||||||
AgreeToReturn,
|
AgreeToReturn,
|
||||||
RefundOrderDetail,
|
RefundOrderDetail,
|
||||||
|
merchantName,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -369,6 +375,10 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
checkPermi,
|
checkPermi,
|
||||||
|
getMerId(id) {
|
||||||
|
this.tableFrom.merId = id;
|
||||||
|
this.handleSearchList();
|
||||||
|
},
|
||||||
//商家确认收货
|
//商家确认收货
|
||||||
handleConfirmReceipt(refundOrderNo) {
|
handleConfirmReceipt(refundOrderNo) {
|
||||||
onConfirmReceipt(refundOrderNo).then(() => {
|
onConfirmReceipt(refundOrderNo).then(() => {
|
||||||
@@ -425,6 +435,8 @@ export default {
|
|||||||
this.tableFrom.content = '';
|
this.tableFrom.content = '';
|
||||||
this.tableFrom.searchType = 'all';
|
this.tableFrom.searchType = 'all';
|
||||||
this.tableFrom.trackingNumber = '';
|
this.tableFrom.trackingNumber = '';
|
||||||
|
this.tableFrom.merId = null;
|
||||||
|
this.timeVal = [];
|
||||||
this.selectChange();
|
this.selectChange();
|
||||||
},
|
},
|
||||||
//搜索
|
//搜索
|
||||||
|
|||||||
Reference in New Issue
Block a user