Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
saas-bi
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
saas-bi
Commits
068ee8d5
提交
068ee8d5
authored
3月 21, 2025
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
chore: update
上级
b8930cc2
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
127 行增加
和
12 行删除
+127
-12
home_bg.png
public/images/home_bg.png
+0
-0
AppHeader.tsx
src/components/layout/AppHeader.tsx
+8
-2
styles.scss
src/modules/data/dashboard/styles.scss
+46
-0
Index.tsx
src/modules/data/dashboard/views/Index.tsx
+40
-8
styles.scss
src/modules/home/styles.scss
+28
-0
Index.tsx
src/modules/home/views/Index.tsx
+5
-2
没有找到文件。
public/images/home_bg.png
0 → 100644
浏览文件 @
068ee8d5
733.4 KB
src/components/layout/AppHeader.tsx
浏览文件 @
068ee8d5
...
@@ -7,7 +7,6 @@ import { logout } from '@/api/base'
...
@@ -7,7 +7,6 @@ import { logout } from '@/api/base'
export
default
function
AppHeader
({
title
=
'AI数据分析实验室'
})
{
export
default
function
AppHeader
({
title
=
'AI数据分析实验室'
})
{
const
location
=
useLocation
()
const
location
=
useLocation
()
const
defaultSelectedKeys
=
[
location
.
pathname
]
const
user
=
useUserStore
((
state
)
=>
state
.
info
)
const
user
=
useUserStore
((
state
)
=>
state
.
info
)
const
name
=
user
?.
name
||
user
?.
username
const
name
=
user
?.
name
||
user
?.
username
...
@@ -25,6 +24,13 @@ export default function AppHeader({ title = 'AI数据分析实验室' }) {
...
@@ -25,6 +24,13 @@ export default function AppHeader({ title = 'AI数据分析实验室' }) {
}
}
})
})
const
matchedKey
=
items
.
find
((
item
)
=>
location
.
pathname
===
item
.
key
)?.
key
||
items
.
filter
((
item
)
=>
location
.
pathname
.
startsWith
(
item
.
key
))
// 过滤所有前缀匹配的项
.
sort
((
a
,
b
)
=>
b
.
key
.
length
-
a
.
key
.
length
)[
0
]?.
key
||
// 按 key 长度排序,取最长的匹配项
'/'
const
handleLogout
=
async
()
=>
{
const
handleLogout
=
async
()
=>
{
await
logout
()
await
logout
()
window
.
location
.
href
=
`
${
import
.
meta
.
env
.
VITE_LOGIN_URL
}
?rd=
${
encodeURIComponent
(
window
.
location
.
origin
)}
`
window
.
location
.
href
=
`
${
import
.
meta
.
env
.
VITE_LOGIN_URL
}
?rd=
${
encodeURIComponent
(
window
.
location
.
origin
)}
`
...
@@ -44,7 +50,7 @@ export default function AppHeader({ title = 'AI数据分析实验室' }) {
...
@@ -44,7 +50,7 @@ export default function AppHeader({ title = 'AI数据分析实验室' }) {
</
h1
>
</
h1
>
</
div
>
</
div
>
<
div
className=
"app-header-nav"
>
<
div
className=
"app-header-nav"
>
<
Menu
mode=
"horizontal"
items=
{
items
}
defaultSelectedKeys=
{
defaultSelectedKeys
}
/>
<
Menu
mode=
"horizontal"
items=
{
items
}
defaultSelectedKeys=
{
[
matchedKey
]
}
/>
</
div
>
</
div
>
<
div
className=
"app-header-right"
>
<
div
className=
"app-header-right"
>
<
Popover
<
Popover
...
...
src/modules/data/dashboard/styles.scss
浏览文件 @
068ee8d5
.banner
{
padding
:
30px
40px
50px
;
h2
{
font-size
:
20px
;
font-weight
:
700
;
line-height
:
28px
;
}
p
{
margin-top
:
20px
;
font-size
:
18px
;
line-height
:
25px
;
}
}
.carousel-banner
{
.slick-dots
{
li
{
button
{
&
:
:
after
{
background-color
:
#bbb
!
important
;
}
}
&
.slick-active
{
&
:
:
after
{
background
:
var
(
--
main-color
)
!
important
;
}
}
}
}
}
.card-item
{
display
:
flex
;
&
__left
{
flex
:
1
;
h3
{
font-size
:
20px
;
}
p
{
font-size
:
16px
;
margin-top
:
10px
;
}
}
&
__right
{
font-size
:
20px
;
color
:
var
(
--
main-color
);
}
}
src/modules/data/dashboard/views/Index.tsx
浏览文件 @
068ee8d5
import
{
Card
,
Button
,
Row
,
Col
}
from
'antd'
import
{
Card
,
Button
,
Row
,
Col
,
Carousel
}
from
'antd'
import
{
Link
}
from
'react-router'
import
{
Link
}
from
'react-router'
import
{
Database
,
SearchCheck
,
Filter
,
Bolt
,
Cone
,
ChartArea
,
Wallpaper
}
from
'lucide-react'
import
'../styles.scss'
type
CardItem
=
{
type
CardItem
=
{
icon
:
React
.
ReactNode
title
:
string
title
:
string
description
:
string
description
:
string
path
:
string
path
:
string
...
@@ -10,36 +13,43 @@ type CardItem = {
...
@@ -10,36 +13,43 @@ type CardItem = {
export
default
function
DataDashboard
()
{
export
default
function
DataDashboard
()
{
const
items
:
CardItem
[]
=
[
const
items
:
CardItem
[]
=
[
{
{
icon
:
<
Database
size=
{
40
}
/>,
title
:
'数据采集'
,
title
:
'数据采集'
,
description
:
'多源数据采集与结构化导入'
,
description
:
'多源数据采集与结构化导入'
,
path
:
'/data/write'
,
path
:
'/data/write'
,
},
},
{
{
icon
:
<
SearchCheck
size=
{
40
}
/>,
title
:
'数据理解与探索'
,
title
:
'数据理解与探索'
,
description
:
'动态化数据理解与深度模式探索'
,
description
:
'动态化数据理解与深度模式探索'
,
path
:
'/data/read'
,
path
:
'/data/read'
,
},
},
{
{
icon
:
<
Filter
size=
{
40
}
/>,
title
:
'数据预处理'
,
title
:
'数据预处理'
,
description
:
'智能化数据预处理范式'
,
description
:
'智能化数据预处理范式'
,
path
:
'/data/preprocess'
,
path
:
'/data/preprocess'
,
},
},
{
{
icon
:
<
Bolt
size=
{
40
}
/>,
title
:
'数据加工'
,
title
:
'数据加工'
,
description
:
'多模态数据加工架构'
,
description
:
'多模态数据加工架构'
,
path
:
'/data/process'
,
path
:
'/data/process'
,
},
},
{
{
icon
:
<
Cone
size=
{
40
}
/>,
title
:
'数据挖掘'
,
title
:
'数据挖掘'
,
description
:
'智能数据解析与知识图谱构建'
,
description
:
'智能数据解析与知识图谱构建'
,
path
:
'/data/digging'
,
path
:
'/data/digging'
,
},
},
{
{
icon
:
<
ChartArea
size=
{
40
}
/>,
title
:
'可视化组件'
,
title
:
'可视化组件'
,
description
:
'智能可视化组件'
,
description
:
'智能可视化组件'
,
path
:
'/data/chart'
,
path
:
'/data/chart'
,
},
},
{
{
icon
:
<
Wallpaper
size=
{
40
}
/>,
title
:
'可视化大屏'
,
title
:
'可视化大屏'
,
description
:
'智能可视化大屏'
,
description
:
'智能可视化大屏'
,
path
:
'/data/screen'
,
path
:
'/data/screen'
,
...
@@ -48,18 +58,40 @@ export default function DataDashboard() {
...
@@ -48,18 +58,40 @@ export default function DataDashboard() {
const
CardCardItem
=
(
item
:
CardItem
)
=>
{
const
CardCardItem
=
(
item
:
CardItem
)
=>
{
return
(
return
(
<
Card
title=
{
item
.
title
}
>
<
Card
>
<
p
>
{
item
.
description
}
</
p
>
<
div
className=
"card-item"
>
<
br
/>
<
div
className=
"card-item__left"
>
<
Link
to=
{
item
.
path
}
>
<
h3
>
{
item
.
title
}
</
h3
>
<
Button
shape=
"round"
>
点击进入
</
Button
>
<
p
>
{
item
.
description
}
</
p
>
</
Link
>
<
br
/>
<
Link
to=
{
item
.
path
}
>
<
Button
shape=
"round"
>
点击进入
</
Button
>
</
Link
>
</
div
>
<
div
className=
"card-item__right"
>
{
item
.
icon
}
</
div
>
</
div
>
</
Card
>
</
Card
>
)
)
}
}
return
(
return
(
<
div
style=
{
{
margin
:
'0 80px'
}
}
>
<
div
style=
{
{
margin
:
'0 80px'
}
}
>
<
Card
style=
{
{
marginBottom
:
40
}
}
>
<
Carousel
className=
"carousel-banner"
>
<
div
className=
"banner"
>
<
h2
>
AI驱动的数据分析实验室
</
h2
>
<
p
>
以AI技术为核心驱动力,深度挖掘数据价值,为各领域提供精准、高效的数据分析解决方案,助力决策智能化与业务创新。
</
p
>
</
div
>
<
div
className=
"banner"
>
<
h2
>
AI驱动的数据分析实验室
</
h2
>
<
p
>
以AI技术为核心驱动力,深度挖掘数据价值,为各领域提供精准、高效的数据分析解决方案,助力决策智能化与业务创新。
</
p
>
</
div
>
</
Carousel
>
</
Card
>
<
Row
gutter=
{
[
40
,
40
]
}
>
<
Row
gutter=
{
[
40
,
40
]
}
>
{
items
.
map
((
item
)
=>
(
{
items
.
map
((
item
)
=>
(
<
Col
span=
{
6
}
key=
{
item
.
path
}
>
<
Col
span=
{
6
}
key=
{
item
.
path
}
>
...
...
src/modules/home/styles.scss
0 → 100644
浏览文件 @
068ee8d5
.home
{
position
:
relative
;
margin
:
100px
auto
;
background
:
url(/images/home_bg.png)
no-repeat
center
center
;
background-size
:
contain
;
width
:
1215px
;
height
:
577px
;
.link1
{
position
:
absolute
;
top
:
160px
;
width
:
250px
;
height
:
250px
;
}
.link2
{
position
:
absolute
;
left
:
400px
;
bottom
:
0
;
width
:
300px
;
height
:
250px
;
}
.link3
{
position
:
absolute
;
top
:
200px
;
right
:
0
;
width
:
300px
;
height
:
300px
;
}
}
src/modules/home/views/Index.tsx
浏览文件 @
068ee8d5
import
'../styles.scss'
import
{
NavLink
}
from
'react-router'
function
Home
()
{
function
Home
()
{
return
(
return
(
<
div
>
<
div
className=
"home"
>
<
h1
>
Home
</
h1
>
<
NavLink
to=
"/data"
className=
"link1"
></
NavLink
>
</
div
>
</
div
>
)
)
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论