Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
A
admin-ci-test
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
test-ci
admin-ci-test
Commits
3e967a6d
提交
3e967a6d
authored
8月 09, 2023
作者:
ZhangLingKun
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
功能:积分列表
上级
36f0e208
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
193 行增加
和
158 行删除
+193
-158
pointManageType.ts
src/api/interface/pointManageType.ts
+33
-0
pointManageAPI.ts
src/api/modules/pointManageAPI.ts
+12
-0
index.tsx
src/pages/pointManage/pointList/detail/index.tsx
+0
-0
index.tsx
src/pages/pointManage/pointList/index.tsx
+66
-74
index.ts
src/router/index.ts
+1
-1
router.tsx
src/router/router.tsx
+81
-83
没有找到文件。
src/api/interface/pointManageType.ts
浏览文件 @
3e967a6d
...
@@ -649,3 +649,36 @@ export type DistributeMallOrderBonusType = InterFunction<
...
@@ -649,3 +649,36 @@ export type DistributeMallOrderBonusType = InterFunction<
}
>
;
}
>
;
}
}
>
;
>
;
// 后台管理——积分列表
export
type
UserPointListType
=
InterListFunction
<
{
nickName
?:
string
;
phoneNum
?:
string
;
},
{
createTime
:
string
;
id
:
number
;
nickName
:
string
;
phoneNum
:
number
;
totalPoints
:
number
;
updateTime
:
string
;
userAccountId
:
number
;
}
>
;
// 后台管理——积分详情
export
type
DetailPointListType
=
InterListFunction
<
{
userAccountId
:
number
;
},
{
createTime
:
string
;
id
:
number
;
nickName
:
string
;
phoneNum
:
number
;
point
:
number
;
pointSource
:
number
;
timeOfRelease
:
number
;
updateTime
:
string
;
userAccountId
:
number
;
}
>
;
src/api/modules/pointManageAPI.ts
浏览文件 @
3e967a6d
...
@@ -2,6 +2,7 @@ import axios from '../request';
...
@@ -2,6 +2,7 @@ import axios from '../request';
import
{
import
{
AddAndEditBonusRuleType
,
AddAndEditBonusRuleType
,
AddConvertRuleType
,
AddConvertRuleType
,
UserPointListType
,
BonusRuleListQueryType
,
BonusRuleListQueryType
,
CalculateOrderBonusVOType
,
CalculateOrderBonusVOType
,
CheckUserScoreType
,
CheckUserScoreType
,
...
@@ -25,6 +26,7 @@ import {
...
@@ -25,6 +26,7 @@ import {
UpdateMallOrderBonusType
,
UpdateMallOrderBonusType
,
UserScoreDetailsListType
,
UserScoreDetailsListType
,
UserScorePageListType
,
UserScorePageListType
,
DetailPointListType
,
}
from
'../interface/pointManageType'
;
}
from
'../interface/pointManageType'
;
export
class
PointManageAPI
{
export
class
PointManageAPI
{
...
@@ -127,4 +129,14 @@ export class PointManageAPI {
...
@@ -127,4 +129,14 @@ export class PointManageAPI {
// 积分管理-订单分成-发放积分
// 积分管理-订单分成-发放积分
static
DistributeMallOrderBonus
:
DistributeMallOrderBonusType
=
(
params
)
=>
static
DistributeMallOrderBonus
:
DistributeMallOrderBonusType
=
(
params
)
=>
axios
.
get
(
'/mallorder/orderBonus/distributeMallOrderBonus'
,
{
params
});
axios
.
get
(
'/mallorder/orderBonus/distributeMallOrderBonus'
,
{
params
});
// 后台管理——积分列表
static
UserPointList
:
UserPointListType
=
(
params
)
=>
{
return
axios
.
post
(
'/userapp/userPoint/userPointList'
,
params
);
};
// 后台管理——积分详情
static
DetailPointList
:
DetailPointListType
=
(
params
)
=>
{
return
axios
.
post
(
'/userapp/userPoint/detailPoint'
,
params
);
};
}
}
src/pages/pointManage/pointList/detail/index.tsx
浏览文件 @
3e967a6d
差异被折叠。
点击展开。
src/pages/pointManage/pointList/index.tsx
浏览文件 @
3e967a6d
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
useEffect
,
useState
}
from
'react'
;
import
{
Button
,
message
,
Table
}
from
'antd'
;
import
{
Button
,
message
,
Table
}
from
'antd'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
import
SearchView
from
'~/components/search-box/index'
;
import
SearchView
from
'~/components/search-box/index'
;
import
{
PointManageAPI
}
from
'~/api'
;
import
{
PointManageAPI
}
from
'~/api'
;
import
{
User
ScorePage
ListType
}
from
'~/api/interface/pointManageType'
;
import
{
User
Point
ListType
}
from
'~/api/interface/pointManageType'
;
import
{
useNavigate
}
from
'react-router-dom'
;
import
{
useNavigate
}
from
'react-router-dom'
;
import
{
InterListType
,
InterReqListType
}
from
'~/api/interface'
;
import
qs
from
'query-string'
;
// 列表的类型
// 列表的类型
type
TableType
=
(
ReturnType
<
UserScorePageListType
>
extends
Promise
<
infer
T
>
type
TableType
=
InterListType
<
UserPointListType
>
;
?
T
:
never
)[
'result'
][
'list'
][
'userBasicInfo'
];
// 后台返回的类型,但不是列表
type
ListType
=
(
ReturnType
<
UserScorePageListType
>
extends
Promise
<
infer
T
>
?
T
:
never
)[
'result'
][
'list'
];
// 搜索表单的类型
// 搜索表单的类型
type
ReqType
=
Parameters
<
UserScorePageListType
>
[
0
]
;
type
ReqType
=
InterReqListType
<
UserPointListType
>
;
// 搜索表单的数据
// 搜索表单的数据
let
query
:
ReqType
=
{};
let
query
:
ReqType
=
{};
export
const
PointList
=
()
=>
{
export
const
PointList
=
()
=>
{
// 路由操作
// 路由操作
const
navigat
ion
=
useNavigate
();
const
navigat
e
=
useNavigate
();
// 金额数据
// 金额数据
const
[
pointData
,
setPointData
]
=
useState
<
ListType
>
();
//
const [pointData, setPointData] = useState<ListType>();
// 表格数据
// 表格数据
const
[
tableData
,
setTableData
]
=
useState
<
TableType
>
([]);
const
[
tableData
,
setTableData
]
=
useState
<
TableType
>
([]);
// 表格分页配置
// 表格分页配置
...
@@ -34,36 +30,30 @@ export const PointList = () => {
...
@@ -34,36 +30,30 @@ export const PointList = () => {
totalPage
:
0
,
totalPage
:
0
,
});
});
// 跳转指定明细详情
// 跳转指定明细详情
const
handleDetailList
=
(
type
:
number
)
=>
{
//
const handleDetailList = (type: number) => {
navigation
(
`/pointManage/pointList/list?type=
${
type
}
`
);
//
navigation(`/pointManage/pointList/list?type=${type}`);
};
//
};
// +++++++++++++++++++++++++++++++++++++++++++++++++++ //
// +++++++++++++++++++++++++++++++++++++++++++++++++++ //
// 新版通用部分(ES6+ for React) ZhangLK 2022/08/30 Start
// 新版通用部分(ES6+ for React) ZhangLK 2022/08/30 Start
// 加载列表
// 加载列表
const
getTableList
=
async
(
value
=
{})
=>
{
const
getTableList
=
async
(
value
=
{})
=>
{
// 只需要修改这个地方的接口即可
// 只需要修改这个地方的接口即可
const
res
=
await
PointManageAPI
.
User
ScorePage
List
({
const
res
=
await
PointManageAPI
.
User
Point
List
({
pageNo
:
pagination
.
current
,
pageNo
:
pagination
.
current
,
pageSize
:
pagination
.
pageSize
,
pageSize
:
pagination
.
pageSize
,
...
value
,
...
value
,
...
query
,
...
query
,
});
});
if
(
res
&&
res
.
code
===
'200'
)
{
if
(
res
&&
res
.
code
===
'200'
)
{
const
{
const
{
list
,
pageNo
,
totalCount
,
pageSize
,
totalPage
}
=
res
.
result
;
// 解构
list
:
{
convertScore
,
releaseScore
,
userBasicInfo
,
withdrawScore
,
withdrawingScore
},
pageNo
,
totalCount
,
pageSize
,
totalPage
,
}
=
res
.
result
;
// 解构
setPagination
({
setPagination
({
total
:
totalCount
,
total
:
totalCount
,
current
:
pageNo
,
current
:
pageNo
,
pageSize
,
pageSize
,
totalPage
,
totalPage
,
});
});
setTableData
(
userBasicInfo
);
setTableData
(
list
||
[]
);
setPointData
(
res
?.
result
?.
list
);
//
setPointData(res?.result?.list);
}
else
{
}
else
{
message
.
warning
(
res
.
message
);
message
.
warning
(
res
.
message
);
}
}
...
@@ -81,26 +71,28 @@ export const PointList = () => {
...
@@ -81,26 +71,28 @@ export const PointList = () => {
// +++++++++++++++++++++++++++++++++++++++++++++++++++ //
// +++++++++++++++++++++++++++++++++++++++++++++++++++ //
// 跳转详情
// 跳转详情
const
handleDetail
=
(
record
:
TableType
[
0
])
=>
{
const
handleDetail
=
(
record
:
TableType
[
0
])
=>
{
navigation
({
const
search
=
{
pathname
:
'/pointManage/pointList/detail'
,
id
:
record
.
userAccountId
,
search
:
`id=
${
record
?.
mallUserId
}
&
uid
=
$
{
record
?.
uid
}
`,
totalPoints
:
record
.
totalPoints
,
});
nickName
:
record
.
nickName
||
'游客用户'
,
};
navigate
(
`/pointManage/pointList/detail?
${
qs
.
stringify
(
search
)}
`
);
};
};
// 表格结构
// 表格结构
const
columns
:
ColumnsType
<
TableType
[
0
]
>
=
[
const
columns
:
ColumnsType
<
TableType
[
0
]
>
=
[
{ title: 'UID', dataIndex: 'u
i
d', align: 'center' },
{
title
:
'UID'
,
dataIndex
:
'u
serAccountI
d'
,
align
:
'center'
},
{
{
title
:
'用户名称'
,
title
:
'用户名称'
,
dataIndex
:
'userName'
,
dataIndex
:
'userName'
,
align
:
'center'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
text
||
record
?.
nickName
||
`游客用户`
,
render
:
(
text
,
record
)
=>
text
||
record
?.
nickName
||
`游客用户`
,
},
},
{
//
{
title: '企业名称',
//
title: '企业名称',
dataIndex: 'entName',
//
dataIndex: 'entName',
align: 'center',
//
align: 'center',
render: (text: string, record) => text || (record.phoneNum ? '微信用户' : '游客用户'),
//
render: (text: string, record) => text || (record.phoneNum ? '微信用户' : '游客用户'),
},
//
},
{
{
title
:
'手机号'
,
title
:
'手机号'
,
dataIndex
:
'phoneNum'
,
dataIndex
:
'phoneNum'
,
...
@@ -108,7 +100,7 @@ export const PointList = () => {
...
@@ -108,7 +100,7 @@ export const PointList = () => {
},
},
{
{
title
:
'积分总额'
,
title
:
'积分总额'
,
dataIndex: '
score
',
dataIndex
:
'
totalPoints
'
,
align
:
'center'
,
align
:
'center'
,
render
:
(
text
:
string
,
record
)
=>
{
render
:
(
text
:
string
,
record
)
=>
{
return
(
return
(
...
@@ -132,10 +124,10 @@ export const PointList = () => {
...
@@ -132,10 +124,10 @@ export const PointList = () => {
<
SearchView
<
SearchView
search=
{
[
search=
{
[
{
{
label: '
用户UID
',
label
:
'
微信昵称
'
,
name: '
uid
',
name
:
'
nickName
'
,
type
:
'input'
,
type
:
'input'
,
placeholder: '请输入
UID
',
placeholder
:
'请输入
微信昵称
'
,
width
:
180
,
width
:
180
,
},
},
{
{
...
@@ -144,42 +136,42 @@ export const PointList = () => {
...
@@ -144,42 +136,42 @@ export const PointList = () => {
type
:
'input'
,
type
:
'input'
,
placeholder
:
'请输入手机号'
,
placeholder
:
'请输入手机号'
,
},
},
{
//
{
label: '企业名称',
//
label: '企业名称',
name: 'entName',
//
name: 'entName',
type: 'input',
//
type: 'input',
placeholder: '请输入企业名称',
//
placeholder: '请输入企业名称',
},
//
},
]
}
]
}
searchData=
{
onFinish
}
searchData=
{
onFinish
}
sufFixBtn={
//
sufFixBtn={
<div className='point-list-head-number'>
//
<div className='point-list-head-number'>
<div className='head-number'>
//
<div className='head-number'>
<span className='number-label'>积分发放总额</span>
//
<span className='number-label'>积分发放总额</span>
<Button type='link' onClick={() => handleDetailList(0)}>
//
<Button type='link' onClick={() => handleDetailList(0)}>
{pointData?.releaseScore}
//
{pointData?.releaseScore}
</Button>
//
</Button>
</div>
//
</div>
<div className='head-number'>
//
<div className='head-number'>
<span className='number-label'>积分兑换总额</span>
//
<span className='number-label'>积分兑换总额</span>
<Button type='link' onClick={() => handleDetailList(1)}>
//
<Button type='link' onClick={() => handleDetailList(1)}>
{pointData?.convertScore}
//
{pointData?.convertScore}
</Button>
//
</Button>
</div>
//
</div>
<div className='head-number'>
//
<div className='head-number'>
<span className='number-label'>积分提现总额</span>
//
<span className='number-label'>积分提现总额</span>
<Button type='link' onClick={() => handleDetailList(2)}>
//
<Button type='link' onClick={() => handleDetailList(2)}>
{pointData?.withdrawScore}
//
{pointData?.withdrawScore}
</Button>
//
</Button>
</div>
//
</div>
<div className='head-number'>
//
<div className='head-number'>
<span className='number-label'>待处理提现积分</span>
//
<span className='number-label'>待处理提现积分</span>
<Button type='link' onClick={() => handleDetailList(2)}>
//
<Button type='link' onClick={() => handleDetailList(2)}>
{pointData?.withdrawingScore}
//
{pointData?.withdrawingScore}
</Button>
//
</Button>
</div>
//
</div>
</div>
//
</div>
}
//
}
/>
/>
<
Table
<
Table
size=
'small'
size=
'small'
...
...
src/router/index.ts
浏览文件 @
3e967a6d
...
@@ -20,7 +20,7 @@ export const authRouterList = async () => {
...
@@ -20,7 +20,7 @@ export const authRouterList = async () => {
const
getRouteList
=
(
data
:
RouteObjectType
[])
=>
{
const
getRouteList
=
(
data
:
RouteObjectType
[])
=>
{
return
data
.
reduce
((
pre
:
RouteObjectType
[],
cur
)
=>
{
return
data
.
reduce
((
pre
:
RouteObjectType
[],
cur
)
=>
{
const
Obj
:
RouteObjectType
=
{
...
cur
};
const
Obj
:
RouteObjectType
=
{
...
cur
};
if
(
ids
.
includes
(
Obj
.
meta
.
id
)
||
Obj
.
meta
.
hidden
)
{
if
(
ids
.
includes
(
Obj
.
meta
.
id
)
||
Obj
.
meta
.
hidden
||
Obj
.
meta
.
develop
)
{
if
(
Obj
.
children
)
{
if
(
Obj
.
children
)
{
Obj
.
children
=
[...
getRouteList
(
Obj
.
children
)];
Obj
.
children
=
[...
getRouteList
(
Obj
.
children
)];
}
}
...
...
src/router/router.tsx
浏览文件 @
3e967a6d
...
@@ -34,6 +34,7 @@ import {
...
@@ -34,6 +34,7 @@ import {
ThunderboltOutlined
,
ThunderboltOutlined
,
BankOutlined
,
BankOutlined
,
VerifiedOutlined
,
VerifiedOutlined
,
AccountBookOutlined
,
}
from
'@ant-design/icons'
;
}
from
'@ant-design/icons'
;
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
// @ts-ignore
...
@@ -43,8 +44,8 @@ import { Spin } from 'antd';
...
@@ -43,8 +44,8 @@ import { Spin } from 'antd';
import
LoginView
from
'~/pages/common/login'
;
import
LoginView
from
'~/pages/common/login'
;
// 积分
// 积分
//
import { PointList } from '~/pages/pointManage/pointList';
import
{
PointList
}
from
'~/pages/pointManage/pointList'
;
//
import { PointDetail } from '~/pages/pointManage/pointList/detail';
import
{
PointDetail
}
from
'~/pages/pointManage/pointList/detail'
;
// import { PointRules } from '~/pages/pointManage/pointRules';
// import { PointRules } from '~/pages/pointManage/pointRules';
// import PointDetailList from '~/pages/pointManage/pointDetail';
// import PointDetailList from '~/pages/pointManage/pointDetail';
// 分成
// 分成
...
@@ -175,6 +176,7 @@ export interface RouteObjectType {
...
@@ -175,6 +176,7 @@ export interface RouteObjectType {
icon
:
any
;
icon
:
any
;
customIcon
?:
boolean
;
customIcon
?:
boolean
;
title
:
string
;
title
:
string
;
develop
?:
boolean
;
};
};
}
}
// 加载页面
// 加载页面
...
@@ -854,87 +856,83 @@ export const routerList: Array<RouteObjectType> = [
...
@@ -854,87 +856,83 @@ export const routerList: Array<RouteObjectType> = [
},
},
],
],
},
},
// {
{
// path: '/pointManage',
path
:
'/pointManage'
,
// element: <LayoutView />,
element
:
<
LayoutView
/>,
// errorElement: <ErrorPage />,
errorElement
:
<
ErrorPage
/>,
// meta: {
meta
:
{
// id: 25000,
id
:
12000
,
// icon: <AccountBookOutlined />,
icon
:
<
AccountBookOutlined
/>,
// title: '积分管理',
title
:
'积分管理'
,
// },
develop
:
true
,
// children: [
},
// {
children
:
[
// path: '/pointManage/pointList',
{
// element: withLoadingComponent(<PointList />),
path
:
'/pointManage/pointList'
,
// meta: {
element
:
withLoadingComponent
(<
PointList
/>),
// id: 25100,
meta
:
{
// title: '积分列表',
id
:
12100
,
// icon: <MacCommandOutlined />,
title
:
'积分列表'
,
// },
icon
:
<
MacCommandOutlined
/>,
// },
develop
:
true
,
// {
},
// path: '/pointManage/pointList/detail',
},
// element: withLoadingComponent(
{
// <PointDetail
path
:
'/pointManage/pointList/detail'
,
// location={{
element
:
withLoadingComponent
(<
PointDetail
/>),
// search: '',
meta
:
{
// }}
id
:
12110
,
// />,
title
:
'个人积分明细'
,
// ),
icon
:
<
MacCommandOutlined
/>,
// meta: {
hidden
:
true
,
// id: 25100,
},
// title: '个人积分明细',
},
// icon: <MacCommandOutlined />,
// {
// hidden: true,
// path: '/pointManage/pointRule',
// },
// element: withLoadingComponent(<PointRules />),
// },
// meta: {
// {
// id: 25200,
// path: '/pointManage/pointRule',
// title: '兑换规则',
// element: withLoadingComponent(<PointRules />),
// icon: <MacCommandOutlined />,
// meta: {
// },
// id: 25200,
// },
// title: '兑换规则',
// {
// icon: <MacCommandOutlined />,
// path: '/pointManage/pointList/list',
// },
// element: withLoadingComponent(
// },
// <PointDetailList
// {
// location={{
// path: '/pointManage/pointList/list',
// search: '',
// element: withLoadingComponent(
// }}
// <PointDetailList
// />,
// location={{
// ),
// search: '',
// meta: {
// }}
// id: 25100,
// />,
// title: '积分明细',
// ),
// icon: <MacCommandOutlined />,
// meta: {
// hidden: true,
// id: 25100,
// },
// title: '积分明细',
// },
// icon: <MacCommandOutlined />,
// {
// hidden: true,
// path: '/pointManage/divideOrder',
// },
// element: withLoadingComponent(<DivideOrder />),
// },
// meta: {
// {
// id: 25300,
// path: '/pointManage/divideOrder',
// title: '订单分成',
// element: withLoadingComponent(<DivideOrder />),
// icon: <MacCommandOutlined />,
// meta: {
// },
// id: 25300,
// },
// title: '订单分成',
// {
// icon: <MacCommandOutlined />,
// path: '/pointManage/divideRules',
// },
// element: withLoadingComponent(<DivideRules />),
// },
// meta: {
// {
// id: 25400,
// path: '/pointManage/divideRules',
// title: '分成规则',
// element: withLoadingComponent(<DivideRules />),
// icon: <MacCommandOutlined />,
// meta: {
// hidden: true,
// id: 25400,
// },
// title: '分成规则',
// },
// icon: <MacCommandOutlined />,
],
// hidden: true,
},
// },
// },
// ],
// },
// {
// {
// path: '/couponManage',
// path: '/couponManage',
// element: <LayoutView />,
// element: <LayoutView />,
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论