Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
center-book
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
center-book
Commits
228cd6c0
提交
228cd6c0
authored
5月 13, 2024
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
chore: update
上级
d53f1387
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
104 行增加
和
25 行删除
+104
-25
AppList.jsx
src/components/AppList.jsx
+103
-24
axios.js
src/utils/axios.js
+1
-1
没有找到文件。
src/components/AppList.jsx
浏览文件 @
228cd6c0
import
{
useState
,
useEffect
}
from
'react'
;
import
{
useState
,
useEffect
,
forwardRef
,
useImperativeHandle
}
from
'react'
;
import
{
Table
}
from
'antd'
;
import
{
Table
,
Row
,
Col
,
Form
,
Button
,
Space
}
from
'antd'
;
import
IconReset
from
'@/assets/images/icon/reset.png'
;
import
IconReload
from
'@/assets/images/icon/reload.png'
;
import
IconFilter
from
'@/assets/images/icon/filter.png'
;
export
default
function
AppList
(
props
)
{
const
AppList
=
forwardRef
((
props
,
ref
)
=>
{
const
{
remote
=
{},
filters
=
[],
...
rese
t
}
=
props
;
const
{
remote
=
{},
filters
=
[],
filterAside
,
...
res
t
}
=
props
;
const
[
data
,
setData
]
=
useState
({
total
:
0
,
list
:
[]
});
const
[
data
,
setData
]
=
useState
({
total
:
0
,
list
:
[]
});
const
[
page
,
setPage
]
=
useState
({
current
:
1
,
pageSize
:
10
});
const
[
page
,
setPage
]
=
useState
({
current
:
1
,
pageSize
:
10
});
const
[
form
]
=
Form
.
useForm
();
const
[
loading
,
setLoading
]
=
useState
(
false
);
// 分页配置
// 分页配置
const
pagination
=
{
const
pagination
=
{
total
:
100
,
showSizeChanger
:
true
,
showSizeChanger
:
true
,
showQuickJumper
:
true
,
showQuickJumper
:
true
,
pageSizeOptions
:
[
'10'
,
'20'
,
'30'
,
'40'
],
showTotal
:
(
total
)
=>
`共
${
total
}
条数据`
,
showTotal
:
(
total
)
=>
`共
${
total
}
条数据`
,
onChange
:
handlePageChange
,
onChange
:
handlePageChange
,
};
};
// 获取列表数据
// 获取列表数据
async
function
fetchList
()
{
async
function
fetchData
()
{
let
{
httpRequest
,
beforeRequest
,
callback
,
params
}
=
remote
;
let
{
request
,
beforeRequest
,
afterRequest
}
=
remote
;
if
(
!
httpRequest
)
return
;
if
(
!
request
)
return
;
setLoading
(
true
);
let
params
=
{
page
:
page
.
current
,
page_size
:
page
.
pageSize
,
...
form
.
getFieldsValue
()
};
if
(
beforeRequest
)
{
if
(
beforeRequest
)
{
params
=
beforeRequest
(
params
);
params
=
await
beforeRequest
(
params
);
}
}
const
res
=
await
httpRequest
(
params
);
const
res
=
await
request
(
params
);
const
{
list
=
[],
total
=
0
}
=
callback
?
callback
(
res
.
data
,
params
)
:
res
.
data
||
{};
const
{
list
=
[],
total
=
0
}
=
afterRequest
?
await
afterRequest
(
res
.
data
,
params
)
:
res
.
data
||
{};
setData
({
list
,
total
});
setData
({
list
,
total
});
setLoading
(
false
);
}
}
useEffect
(()
=>
{
fetchData
();
},
[
page
]);
// 筛选
// 筛选
async
function
handleSearch
()
{
async
function
handleSearch
()
{
setPage
({
...
page
,
current
:
1
});
setPage
({
...
page
,
current
:
1
});
await
fetchList
();
}
}
// 重置
// 重置
async
function
handleReset
()
{
async
function
handleReset
()
{
// 清空筛选条件
// 清空筛选条件
form
.
resetFields
();
setPage
({
...
page
,
current
:
1
});
setPage
({
...
page
,
current
:
1
});
await
fetchList
();
}
}
// 刷新
// 刷新
async
function
handleRe
fresh
(
)
{
async
function
handleRe
load
(
isForce
=
false
)
{
await
fetchList
();
isForce
?
await
handleSearch
()
:
await
fetchData
();
}
}
// 分页改变
// 分页改变
async
function
handlePageChange
(
current
,
pageSize
)
{
async
function
handlePageChange
(
current
,
pageSize
)
{
setPage
({
current
,
pageSize
});
setPage
({
current
,
pageSize
});
await
handleRefresh
();
}
}
const
onValuesChange
=
(
changedValues
,
allValues
)
=>
{
const
[
value
]
=
Object
.
values
(
changedValues
);
!
value
&&
handleReload
();
};
useImperativeHandle
(
ref
,
()
=>
{
return
{
handleSearch
,
handleReset
,
handleReload
};
});
const
filterElement
=
(
<
div
className=
'app-list-filter'
style=
{
{
marginBottom
:
20
}
}
>
<
div
className=
'app-list-filter'
style=
{
{
marginBottom
:
20
}
}
>
<
Row
justify=
'space-between'
>
<
Col
>
<
Form
layout=
'inline'
autoComplete=
'off'
form=
{
form
}
onValuesChange=
{
onValuesChange
}
>
{
filters
.
map
((
item
)
=>
(
<
Form
.
Item
label=
{
item
.
label
}
name=
{
item
.
name
}
key=
{
item
.
label
}
>
{
item
.
element
}
</
Form
.
Item
>
))
}
<
Space
>
<
Button
type=
'primary'
htmlType=
'button'
ghost
icon=
{
<
Icon
src=
{
IconFilter
}
/>
}
onClick=
{
handleSearch
}
>
筛选
</
Button
>
<
Button
type=
'primary'
htmlType=
'button'
ghost
icon=
{
<
Icon
src=
{
IconReset
}
/>
}
onClick=
{
handleReset
}
>
重置
</
Button
>
<
Button
type=
'primary'
htmlType=
'button'
ghost
icon=
{
<
Icon
src=
{
IconReload
}
/>
}
onClick=
{
handleReload
}
>
刷新
</
Button
>
</
Space
>
</
Form
>
</
Col
>
<
Col
>
{
filterAside
}
</
Col
>
</
Row
>
</
div
>
</
div
>
);
return
(
<
div
className=
'app-list'
>
{
filters
.
length
>
0
&&
filterElement
}
<
div
className=
'app-list-table'
>
<
Table
bordered
dataSource=
{
data
.
list
}
loading=
{
loading
}
pagination=
{
pagination
}
{
...
rest
}
></
Table
>
</
div
>
</
div
>
);
});
// useEffect(async (
) => {
const
Icon
=
({
src
}
)
=>
{
// const res = await fetchList(remote)
;
const
IconStyle
=
{
height
:
'12px'
,
objectFit
:
'contain'
}
;
// setDataSource(res.data.list || [])
;
return
<
img
src=
{
src
}
style=
{
IconStyle
}
/>
;
// }, [])
;
}
;
return
<
Table
bordered
dataSource=
{
data
.
list
}
pagination=
{
pagination
}
{
...
reset
}
></
Table
>;
export
default
AppList
;
}
src/utils/axios.js
浏览文件 @
228cd6c0
...
@@ -80,7 +80,7 @@ httpRequest.interceptors.response.use(
...
@@ -80,7 +80,7 @@ httpRequest.interceptors.response.use(
notification
.
error
({
message
:
data
.
message
||
'请求错误'
});
notification
.
error
({
message
:
data
.
message
||
'请求错误'
});
return
Promise
.
reject
(
data
);
return
Promise
.
reject
(
data
);
}
}
return
data
.
data
;
return
data
;
},
},
(
error
)
=>
{
(
error
)
=>
{
if
(
error
.
response
)
{
if
(
error
.
response
)
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论