Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
saas-bi
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
saas-bi
Commits
35a924d2
提交
35a924d2
authored
3月 14, 2025
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(data): 实现数据导入功能
上级
5dfaf713
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
50 行增加
和
5 行删除
+50
-5
api.ts
src/modules/data/write/upload/api.ts
+6
-0
query.ts
src/modules/data/write/upload/query.ts
+17
-0
Index.tsx
src/modules/data/write/upload/views/Index.tsx
+27
-5
没有找到文件。
src/modules/data/write/upload/api.ts
0 → 100644
浏览文件 @
35a924d2
import
httpRequest
from
'@/utils/axios'
// 导入我的数据集
export
function
importDataset
(
data
:
{
name
:
string
;
file
:
string
})
{
return
httpRequest
.
post
(
'/api/bi/v1/data/my/import'
,
data
)
}
src/modules/data/write/upload/query.ts
0 → 100644
浏览文件 @
35a924d2
import
{
useMutation
,
useQueryClient
}
from
'@tanstack/react-query'
import
{
importDataset
}
from
'./api'
import
{
message
}
from
'antd'
// 导入
export
function
useImportDataset
()
{
const
queryClient
=
useQueryClient
()
return
useMutation
({
mutationFn
:
(
data
:
{
name
:
string
;
file
:
string
})
=>
importDataset
(
data
),
onSuccess
:
()
=>
{
message
.
success
(
'导入成功'
)
queryClient
.
invalidateQueries
({
queryKey
:
[
'data'
]
})
queryClient
.
invalidateQueries
({
queryKey
:
[
'data-filed'
]
})
},
})
}
src/modules/data/write/upload/views/Index.tsx
浏览文件 @
35a924d2
...
@@ -4,6 +4,9 @@ import { InboxOutlined, PlusOutlined } from '@ant-design/icons'
...
@@ -4,6 +4,9 @@ import { InboxOutlined, PlusOutlined } from '@ant-design/icons'
import
{
useState
}
from
'react'
import
{
useState
}
from
'react'
import
{
read
,
utils
}
from
'xlsx'
import
{
read
,
utils
}
from
'xlsx'
import
DataRender
from
'@/components/data/DataRender'
import
DataRender
from
'@/components/data/DataRender'
import
{
useImportDataset
}
from
'../query'
import
{
upload
}
from
'@/utils/upload'
import
{
useNavigate
}
from
'react-router'
export
default
function
DataWriteUpload
()
{
export
default
function
DataWriteUpload
()
{
const
[
file
,
setFile
]
=
useState
<
File
|
null
>
(
null
)
const
[
file
,
setFile
]
=
useState
<
File
|
null
>
(
null
)
...
@@ -17,8 +20,7 @@ export default function DataWriteUpload() {
...
@@ -17,8 +20,7 @@ export default function DataWriteUpload() {
align
:
'center'
,
align
:
'center'
,
}))
}))
:
[]
:
[]
console
.
log
(
columns
)
console
.
log
(
data
)
const
props
:
UploadProps
=
{
const
props
:
UploadProps
=
{
showUploadList
:
false
,
showUploadList
:
false
,
accept
:
'.xlsx,.csv'
,
accept
:
'.xlsx,.csv'
,
...
@@ -35,12 +37,30 @@ export default function DataWriteUpload() {
...
@@ -35,12 +37,30 @@ export default function DataWriteUpload() {
},
},
}
}
const
{
mutate
}
=
useImportDataset
()
const
[
form
]
=
Form
.
useForm
()
const
navigate
=
useNavigate
()
const
handleSave
=
()
=>
{
if
(
!
file
)
return
form
.
validateFields
().
then
(
async
(
values
)
=>
{
const
url
=
await
upload
(
file
)
const
params
=
{
...
values
,
file
:
JSON
.
stringify
({
name
:
file
.
name
,
url
})
}
mutate
(
params
,
{
onSuccess
:
()
=>
{
navigate
(
'/data/write/my'
)
},
})
})
}
return
(
return
(
<
Card
className=
"app-card"
title=
"数据导入"
>
<
Card
className=
"app-card"
title=
"数据导入"
>
{
file
?
(
{
file
?
(
<
div
>
<
div
>
<
Form
layout=
"inline"
>
<
Form
layout=
"inline"
form=
{
form
}
>
<
Form
.
Item
label=
"数据集名称"
>
<
Form
.
Item
label=
"数据集名称"
name=
"name"
rules=
{
[{
required
:
true
,
message
:
'请输入数据集名称'
}]
}
>
<
Input
placeholder=
"请输入"
style=
{
{
width
:
'220px'
}
}
></
Input
>
<
Input
placeholder=
"请输入"
style=
{
{
width
:
'220px'
}
}
></
Input
>
</
Form
.
Item
>
</
Form
.
Item
>
</
Form
>
</
Form
>
...
@@ -50,7 +70,9 @@ export default function DataWriteUpload() {
...
@@ -50,7 +70,9 @@ export default function DataWriteUpload() {
<
span
style=
{
{
marginLeft
:
'10px'
}
}
>
{
file
?.
name
}
</
span
>
<
span
style=
{
{
marginLeft
:
'10px'
}
}
>
{
file
?.
name
}
</
span
>
</
Upload
>
</
Upload
>
<
p
>
共计:
{
data
.
length
}
条数据
</
p
>
<
p
>
共计:
{
data
.
length
}
条数据
</
p
>
<
Button
type=
"primary"
>
保存
</
Button
>
<
Button
type=
"primary"
onClick=
{
handleSave
}
>
保存
</
Button
>
</
Flex
>
</
Flex
>
<
DataRender
dataSource=
{
data
}
columns=
{
columns
}
></
DataRender
>
<
DataRender
dataSource=
{
data
}
columns=
{
columns
}
></
DataRender
>
</
div
>
</
div
>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论