feat(shopOrder): 新增确认线下收款上传支付凭证功能

- 重构确认线下收款为独立组件 OfflinePaymentModal.vue
- 新增支付凭证字段 paymentVoucher,支持图片上传与预览
- 上传限制为 jpg/png 格式,单张图片最大 10MB
- API confirmOfflinePayment 新增 paymentVoucher 参数
- 页面移除原 Modal.confirm 逻辑,改为调用新组件弹窗
- 修复 buyerRemarks 和 merchantRemarks 类型错误
- 后端 shop_order 表待新增 payment_voucher 字段和接口支持
- 同步更新相关接口模型与视图交互逻辑

feat(shopGoodsBrowse): 新增用户商品浏览记录管理功能

- 新增 ShopGoodsBrowse 接口模型及分页查询、删除接口
- 前端新增浏览记录管理页面,实现列表展示和删除
- 支持基于用户ID、商品ID、浏览来源和日期范围搜索
- 列表显示商品图片、名称、价格、浏览次数及时间等信息
- 添加图片预览和操作确认弹窗,保障操作体验和安全
This commit is contained in:
2026-07-15 13:30:14 +08:00
parent 9e65007e65
commit a59d428e78
9 changed files with 636 additions and 31 deletions

View File

@@ -369,6 +369,13 @@
:data="current"
@done="reload"
/>
<!-- 确认线下收款弹窗 -->
<OfflinePaymentModal
v-model:visible="showOfflinePayment"
:data="current"
@done="reload"
/>
</a-page-header>
</template>
@@ -399,14 +406,14 @@
import { toDateString } from 'ele-admin-pro';
import OrderInfo from './components/orderInfo.vue';
import DeliveryModal from './components/deliveryModal.vue';
import OfflinePaymentModal from './components/OfflinePaymentModal.vue';
import { ShopOrder, ShopOrderParam } from '@/api/shop/shopOrder/model';
import {
pageShopOrder,
repairOrder,
removeShopOrder,
removeBatchShopOrder,
updateShopOrder, refundShopOrder,
confirmOfflinePayment
updateShopOrder, refundShopOrder
} from '@/api/shop/shopOrder';
import { updateUser } from '@/api/system/user';
import { getPayType } from '@/utils/shop';
@@ -427,6 +434,8 @@
const showMove = ref(false);
// 是否显示发货弹窗
const showDelivery = ref(false);
// 是否显示确认线下收款弹窗
const showOfflinePayment = ref(false);
// 加载状态
const loading = ref(true);
// 激活的标签(支持从路由参数初始化,如 /shop/shopOrder?tab=all
@@ -647,31 +656,8 @@
// 确认线下付款收款
const handleConfirmOfflinePayment = (record: ShopOrder) => {
let remarksValue = '';
Modal.confirm({
title: '确认线下收款',
content: createVNode('div', null, [
createVNode('p', { style: 'margin-bottom: 8px' }, '确认已收到该订单的线下付款(微信转账/银行汇款等)?'),
createVNode('p', { style: 'margin-bottom: 8px; color: #999; font-size: 12px' }, `订单号:${record.orderNo}`),
createVNode('input', {
id: 'offline-remarks-input',
placeholder: '可填写备注(如:微信转账已收到)',
style: 'width: 100%; padding: 4px 8px; border: 1px solid #d9d9d9; border-radius: 4px;',
onInput: (e: any) => { remarksValue = e.target.value; }
})
]),
okText: '确认收款',
okType: 'success',
onOk: async () => {
try {
await confirmOfflinePayment(record.orderId!, remarksValue || undefined);
message.success('确认收款成功,订单已进入待发货状态');
reload();
} catch (error: any) {
message.error(error.message || '确认收款失败');
}
}
});
current.value = record;
showOfflinePayment.value = true;
};
// 发货处理