From f13a77f3606057cd186c53a833e1bbe58175aafb Mon Sep 17 00:00:00 2001
From: 董国庆 <364620639@qq.com>
Date: 星期二, 06 一月 2026 10:36:41 +0800
Subject: [PATCH] Merge branch 'main' of http://120.76.84.145:10101/gitblit/r/H5/JiaShiDa
---
management/config/env.ts | 3
management/src/pages/order/refundAudit/index.jsx | 42 +++++---
management/src/pages/order/refundAudit/components/RefundDetailModal.jsx | 110 +++++++++------------
management/src/pages/refundRecords/components/RefundDetailModal.jsx | 20 +--
management/src/pages/company/list/components/addAndEdit.jsx | 4
management/src/pages/refundRecords/index.jsx | 17 +++
management/src/pages/user/list/index.jsx | 28 +++++
management/src/pages/company/detail/components/userManagement.jsx | 7
management/src/pages/order/physicalGoodsOrder/components/OrderDetailModal.jsx | 33 +-----
9 files changed, 139 insertions(+), 125 deletions(-)
diff --git a/management/config/env.ts b/management/config/env.ts
index b5a3889..312ac56 100644
--- a/management/config/env.ts
+++ b/management/config/env.ts
@@ -1,6 +1,7 @@
export default {
dev: {
- SERVER_URL: 'https://jiashikang.cn/manage',
+ // SERVER_URL: 'https://jiashikang.cn/manage',
+ SERVER_URL: 'http://192.168.110.111:9908',
IMAGE_URL: 'https://jiashikang.cn/images/', // 图片地址
},
test: {
diff --git a/management/src/pages/company/detail/components/userManagement.jsx b/management/src/pages/company/detail/components/userManagement.jsx
index 46efe71..614d5db 100644
--- a/management/src/pages/company/detail/components/userManagement.jsx
+++ b/management/src/pages/company/detail/components/userManagement.jsx
@@ -101,11 +101,12 @@
},
{
title: '角色',
- dataIndex: 'roleName',
+ dataIndex: 'roleType',
align: 'center',
hideInSearch: true,
- render: (text) => {
- return <Tag color="blue">{text}</Tag>;
+ valueEnum: {
+ 3: '经销商',
+ 2: '经销商(超管)',
},
},
{
diff --git a/management/src/pages/company/list/components/addAndEdit.jsx b/management/src/pages/company/list/components/addAndEdit.jsx
index e167307..766b93f 100644
--- a/management/src/pages/company/list/components/addAndEdit.jsx
+++ b/management/src/pages/company/list/components/addAndEdit.jsx
@@ -30,8 +30,8 @@
const okHandle = () => {
form.validateFields().then((values) => {
- if (values.id) {
- onUpdate(values);
+ if (editData.id) {
+ onUpdate({ id: editData.id, ...values });
} else {
onSave(values);
}
diff --git a/management/src/pages/order/physicalGoodsOrder/components/OrderDetailModal.jsx b/management/src/pages/order/physicalGoodsOrder/components/OrderDetailModal.jsx
index e0c941f..3f5632a 100644
--- a/management/src/pages/order/physicalGoodsOrder/components/OrderDetailModal.jsx
+++ b/management/src/pages/order/physicalGoodsOrder/components/OrderDetailModal.jsx
@@ -59,12 +59,7 @@
title: '商品简介',
dataIndex: 'physicalGoodsIntro',
ellipsis: true,
- },
- {
- title: '销量',
- dataIndex: 'physicalGoodsSales',
- width: 80,
- },
+ }
];
const dataSource = [{
@@ -107,28 +102,10 @@
) : orderDetail ? (
<>
<Descriptions column={2} bordered>
- {orderDetail.status === 1 ? (
- <>
- <Descriptions.Item label="订单编号">{orderDetail.code}</Descriptions.Item>
- <Descriptions.Item label="下单时间">{orderDetail.createTime}</Descriptions.Item>
- {/* <Descriptions.Item label="订单价格">¥{orderDetail.orderPrice || 0}</Descriptions.Item> */}
- <Descriptions.Item label="用户昵称">{orderDetail.userName}</Descriptions.Item>
- <Descriptions.Item label="用户手机号">{orderDetail.phone}</Descriptions.Item>
- </>
- ) : (
- <>
- <Descriptions.Item label="订单编号">{orderDetail.code}</Descriptions.Item>
- <Descriptions.Item label="下单时间">{orderDetail.createTime}</Descriptions.Item>
- <Descriptions.Item label="用户昵称">{orderDetail.userName}</Descriptions.Item>
- <Descriptions.Item label="当前状态">
- <span style={{ color: currentStatus.color }}>{currentStatus.text}</span>
- </Descriptions.Item>
- <Descriptions.Item label="用户手机号">{orderDetail.phone}</Descriptions.Item>
- <Descriptions.Item label="已支付">¥{orderDetail.paymentPrice || 0}</Descriptions.Item>
- <Descriptions.Item label="支付时间">{orderDetail.paymentTime}</Descriptions.Item>
- <Descriptions.Item label="支付方式">微信支付</Descriptions.Item>
- </>
- )}
+ <Descriptions.Item label="订单编号">{orderDetail.code}</Descriptions.Item>
+ <Descriptions.Item label="下单时间">{orderDetail.createTime}</Descriptions.Item>
+ <Descriptions.Item label="用户昵称">{orderDetail.userName}</Descriptions.Item>
+ <Descriptions.Item label="用户手机号">{orderDetail.phone}</Descriptions.Item>
</Descriptions>
{/* 商品信息 */}
diff --git a/management/src/pages/order/refundAudit/components/RefundDetailModal.jsx b/management/src/pages/order/refundAudit/components/RefundDetailModal.jsx
index 45d4efe..c887fa0 100644
--- a/management/src/pages/order/refundAudit/components/RefundDetailModal.jsx
+++ b/management/src/pages/order/refundAudit/components/RefundDetailModal.jsx
@@ -5,7 +5,7 @@
const { Text } = Typography;
-const RefundDetailModal = ({ visible, onCancel, id }) => {
+const RefundDetailModal = ({ visible, onCancel, id, onRefresh }) => {
const [orderDetail, setOrderDetail] = useState(null);
const [loading, setLoading] = useState(false);
const [auditForm] = Form.useForm();
@@ -59,21 +59,22 @@
const params = {
id,
auditStatus: values.auditStatus,
- auditRemark: values.auditRemark || '',
+ auditRemark: values.auditRemark,
};
const res = await refundAudit(params);
if (res.code === 200) {
message.success('审核成功');
- fetchOrderDetail(); // 重新获取详情
- auditForm.resetFields();
+ // 关闭弹窗
+ onCancel();
+ // 触发父组件刷新列表
+ if (onRefresh) {
+ onRefresh();
+ }
} else {
message.error(res.msg || '审核失败');
}
- } catch (error) {
- console.error('审核失败:', error);
- message.error('审核失败');
} finally {
setAuditLoading(false);
}
@@ -145,7 +146,7 @@
const renderDetailContent = () => {
if (!orderDetail) return null;
- const { status, paymentType, auditStatus } = orderDetail;
+ const { status, paymentType, refundStatus } = orderDetail;
// 基础字段(所有状态都显示)
const baseItems = [
@@ -171,16 +172,7 @@
},
{
label: '审核状态',
- children: (
- <span style={{
- color:
- auditStatus === 1 ? '#faad14' :
- auditStatus === 2 ? '#52c41a' :
- '#f5222d'
- }}>
- {auditStatusMap[auditStatus] || auditStatus}
- </span>
- ),
+ children: auditStatusMap[refundStatus] || '-',
},
{
label: '订单金额',
@@ -262,24 +254,24 @@
// 审核相关字段
const auditItems = [];
- if (auditStatus >= 2) {
+ if (refundStatus == 2) {
auditItems.push(
{
label: '审核结果',
- children: auditStatus === 2 ? '审核通过' : '审核驳回',
+ children: refundStatus === 2 ? '审核通过' : '审核驳回',
},
{
label: '审核时间',
children: orderDetail.auditTime ? moment(orderDetail.auditTime).format('YYYY-MM-DD HH:mm:ss') : '-',
},
+ );
+ }
+ if (refundStatus == 3) {
+ auditItems.push(
{
- label: '审核人',
- children: orderDetail.auditorName || '-',
- },
- {
- label: '审核意见',
+ label: '驳回原因',
children: orderDetail.auditRemark || '-',
- },
+ }
);
}
@@ -300,6 +292,16 @@
{renderProductTable()}
</div>
</div>
+
+ {/* 备注 */}
+ {orderDetail.remark && (
+ <div style={{ marginTop: 24 }}>
+ <Text strong>备注</Text>
+ <div style={{ marginTop: 8 }}>
+ {orderDetail.remark}
+ </div>
+ </div>
+ )}
{/* 图片凭证 */}
{orderDetail.refundImages && (
@@ -322,12 +324,11 @@
)}
{/* 审核表单(仅待审核状态显示) */}
- {orderDetail?.auditStatus === 1 && (
+ {orderDetail?.refundStatus === 1 && (
<div style={{ marginTop: 24 }}>
<Text strong>审核操作</Text>
<Form
form={auditForm}
- layout="vertical"
style={{ marginTop: 16 }}
>
<Form.Item
@@ -342,29 +343,25 @@
<Radio value={3}>审核驳回</Radio>
</Radio.Group>
</Form.Item>
-
<Form.Item
- name="auditRemark"
- label="审核意见"
- rules={[
- {
- required: true,
- message: '请填写审核意见',
- validator: (_, value) => {
- if (form.getFieldValue('auditStatus') === 3 && !value) {
- return Promise.reject(new Error('驳回时必须填写驳回原因'));
- }
- return Promise.resolve();
- }
- }
- ]}
+ noStyle
+ shouldUpdate={(prevValues, currentValues) =>
+ prevValues.auditStatus !== currentValues.auditStatus
+ }
>
- <Input.TextArea
- rows={4}
- placeholder="请输入审核意见"
- maxLength={500}
- showCount
- />
+ {() => (
+ auditForm.getFieldValue('auditStatus') === 3 && (
+ <Form.Item
+ name="auditRemark"
+ label="驳回原因"
+ rules={[
+ { required: true, message: '请输入驳回原因' },
+ ]}
+ >
+ <Input.TextArea />
+ </Form.Item>
+ )
+ )}
</Form.Item>
<Form.Item>
@@ -376,21 +373,8 @@
>
提交审核
</Button>
- <Button onClick={() => auditForm.resetFields()}>
- 重置
- </Button>
</Form.Item>
</Form>
- </div>
- )}
-
- {/* 备注 */}
- {orderDetail.remark && (
- <div style={{ marginTop: 24 }}>
- <Text strong>备注</Text>
- <div style={{ marginTop: 8 }}>
- {orderDetail.remark}
- </div>
</div>
)}
</div>
@@ -399,7 +383,7 @@
return (
<Modal
- title="退款申请详情"
+ title="订单详情"
open={visible}
onCancel={onCancel}
footer={[
diff --git a/management/src/pages/order/refundAudit/index.jsx b/management/src/pages/order/refundAudit/index.jsx
index bd0c883..7485a7d 100644
--- a/management/src/pages/order/refundAudit/index.jsx
+++ b/management/src/pages/order/refundAudit/index.jsx
@@ -40,7 +40,6 @@
dataIndex: 'code',
hideInSearch: true,
width: 180,
- copyable: true,
ellipsis: true,
},
{
@@ -95,12 +94,12 @@
dataIndex: 'deposit',
hideInSearch: true,
width: 100,
- render: (text) => `¥${text}`,
+ render: (text) => `¥${text || '0.00'}`,
search: false,
},
{
- title: '退款',
- dataIndex: 'refundAmount',
+ title: '尾款',
+ dataIndex: 'finalPayment',
hideInSearch: true,
width: 100,
render: (text) => `¥${text || '0.00'}`,
@@ -122,6 +121,19 @@
fixed: 'right',
render: (_, record) => (
<>
+ <Access accessible={(access.refundAudit_audit || false) && record.auditStatus === 1}>
+ <Button
+ type="link"
+ size="small"
+ onClick={() => {
+ setCurrentId(record.id);
+ setCurrentRecord(record);
+ setDetailVisible(true);
+ }}
+ >
+ 审核
+ </Button>
+ </Access>
<Access accessible={access.refundAudit_detail || false}>
<Button
type="link"
@@ -199,19 +211,18 @@
]}
request={async (params) => {
const { current, pageSize, ...rest } = params;
-
+ let queryParams = {
+ ...rest,
+ pageNum: current,
+ pageSize,
+ };
+ if (queryParams.bigGiftPackageName) {
+ queryParams.name = queryParams.bigGiftPackageName;
+ }
// 保存搜索参数,用于导出
- setSearchParams({
- ...rest,
- pageNum: current,
- pageSize,
- });
+ setSearchParams(queryParams);
- const res = await pageRefundList({
- ...rest,
- pageNum: current,
- pageSize,
- });
+ const res = await pageRefundList(queryParams);
return {
data: res.data?.records || [],
@@ -237,6 +248,7 @@
setCurrentRecord(null);
}}
id={currentId}
+ onRefresh={() => actionRef.current?.reload()}
/>
</PageContainer>
);
diff --git a/management/src/pages/refundRecords/components/RefundDetailModal.jsx b/management/src/pages/refundRecords/components/RefundDetailModal.jsx
index 303544a..fbfddec 100644
--- a/management/src/pages/refundRecords/components/RefundDetailModal.jsx
+++ b/management/src/pages/refundRecords/components/RefundDetailModal.jsx
@@ -116,7 +116,7 @@
const renderDetailContent = () => {
if (!orderDetail) return null;
- const { status, paymentType, auditStatus } = orderDetail;
+ const { status, paymentType, refundStatus } = orderDetail;
// 基础字段(所有状态都显示)
const baseItems = [
@@ -145,11 +145,11 @@
children: (
<span style={{
color:
- auditStatus === 1 ? '#faad14' :
- auditStatus === 2 ? '#52c41a' :
- '#f5222d'
+ refundStatus === 1 ? '#faad14' :
+ refundStatus === 2 ? '#52c41a' :
+ '#f5222d'
}}>
- {auditStatusMap[auditStatus] || auditStatus}
+ {auditStatusMap[refundStatus] || refundStatus}
</span>
),
},
@@ -233,11 +233,11 @@
// 审核相关字段
const auditItems = [];
- if (auditStatus >= 2) {
+ if (status >= 2) {
auditItems.push(
{
label: '审核结果',
- children: auditStatus === 2 ? '审核通过' : '审核驳回',
+ children: status === 2 ? '审核通过' : '审核驳回',
},
{
label: '审核时间',
@@ -310,11 +310,7 @@
title="退款申请详情"
open={visible}
onCancel={onCancel}
- footer={[
- <button key="close" type="button" className="ant-btn" onClick={onCancel}>
- 关闭
- </button>,
- ]}
+ footer={false}
width={800}
destroyOnHidden
>
diff --git a/management/src/pages/refundRecords/index.jsx b/management/src/pages/refundRecords/index.jsx
index 0e6f920..97922c4 100644
--- a/management/src/pages/refundRecords/index.jsx
+++ b/management/src/pages/refundRecords/index.jsx
@@ -50,6 +50,7 @@
valueType: 'dateRange',
width: 240,
order: 2,
+ render: (_, record) => record.createTime || '-',
search: {
transform: (value) => ({
time: value ? value.join(' - ') : undefined,
@@ -103,6 +104,22 @@
width: 120,
},
{
+ title: '定金',
+ dataIndex: 'deposit',
+ hideInSearch: true,
+ width: 100,
+ render: (text) => `¥${text || '0.00'}`,
+ search: false,
+ },
+ {
+ title: '尾款',
+ dataIndex: 'finalPayment',
+ hideInSearch: true,
+ width: 100,
+ render: (text) => `¥${text || '0.00'}`,
+ search: false,
+ },
+ {
title: '审核状态',
dataIndex: 'auditStatus',
valueType: 'select',
diff --git a/management/src/pages/user/list/index.jsx b/management/src/pages/user/list/index.jsx
index 4503ba7..ac67b1a 100644
--- a/management/src/pages/user/list/index.jsx
+++ b/management/src/pages/user/list/index.jsx
@@ -2,7 +2,7 @@
import { PageContainer, ProTable } from '@ant-design/pro-components';
import { Button, Space, Popconfirm, message, Modal, Input, Form, Avatar } from 'antd';
import { getUserList, exportUserExcel, clearAllGold, batchUpdateIntegral, changeStatus } from './service';
-import { importFile, exportExcell } from '@/utils/utils';
+import { importFile, exportExcell, downLoad } from '@/utils/utils';
import BatchUpdateIntegralModal from './components/BatchUpdateIntegralModal';
import { history } from '@umijs/max';
import { Access, useAccess } from 'umi';
@@ -126,6 +126,16 @@
// 触发金币导入
const triggerGoldImport = () => {
goldFileInputRef.current?.click();
+ };
+
+ // 处理下载用户导入模板
+ const handleDownloadUserTemplate = () => {
+ downLoad('/t-app-user/import-template_user', '用户导入模板.xlsx');
+ };
+
+ // 处理下载金币导入模板
+ const handleDownloadGoldTemplate = () => {
+ downLoad('/t-app-user/import-template_gold', '金币导入模板.xlsx');
};
// 导出Excel
@@ -350,6 +360,22 @@
defaultCollapsed: false,
}}
toolBarRender={() => [
+ <Access accessible={access.user_import || false}>
+ <Button
+ key="download-user-template"
+ onClick={handleDownloadUserTemplate}
+ >
+ 导入用户模板
+ </Button>
+ </Access>,
+ <Access accessible={access.user_batchImportGold || false}>
+ <Button
+ key="download-gold-template"
+ onClick={handleDownloadGoldTemplate}
+ >
+ 导入金币模板
+ </Button>
+ </Access>,
<input
ref={fileInputRef}
type="file"
--
Gitblit v1.7.1