Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
new-api
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
7d08e133
authored
Aug 09, 2025
by
Calcium-Ion
Committed by
GitHub
Aug 09, 2025
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1429 from feitianbubu/pr/video-preview-modal
feat: add video preview modal
parents
9d6c1546
f11236a3
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
40 additions
and
2 deletions
+40
-2
web/src/components/table/task-logs/TaskLogsColumnDefs.js
+8
-1
web/src/components/table/task-logs/TaskLogsTable.jsx
+3
-0
web/src/components/table/task-logs/index.jsx
+8
-1
web/src/components/table/task-logs/modals/ContentModal.jsx
+5
-0
web/src/hooks/task-logs/useTaskLogsData.js
+16
-0
No files found.
web/src/components/table/task-logs/TaskLogsColumnDefs.js
View file @
7d08e133
...
@@ -211,6 +211,7 @@ export const getTaskLogsColumns = ({
...
@@ -211,6 +211,7 @@ export const getTaskLogsColumns = ({
copyText
,
copyText
,
openContentModal
,
openContentModal
,
isAdminUser
,
isAdminUser
,
openVideoModal
,
})
=>
{
})
=>
{
return
[
return
[
{
{
...
@@ -342,7 +343,13 @@ export const getTaskLogsColumns = ({
...
@@ -342,7 +343,13 @@ export const getTaskLogsColumns = ({
const
isUrl
=
typeof
text
===
'string'
&&
/^https
?
:
\/\/
/
.
test
(
text
);
const
isUrl
=
typeof
text
===
'string'
&&
/^https
?
:
\/\/
/
.
test
(
text
);
if
(
isSuccess
&&
isVideoTask
&&
isUrl
)
{
if
(
isSuccess
&&
isVideoTask
&&
isUrl
)
{
return
(
return
(
<
a
href
=
{
text
}
target
=
"_blank"
rel
=
"noopener noreferrer"
>
<
a
href
=
"#"
onClick
=
{
e
=>
{
e
.
preventDefault
();
openVideoModal
(
text
);
}}
>
{
t
(
'点击预览视频'
)}
{
t
(
'点击预览视频'
)}
<
/a
>
<
/a
>
);
);
...
...
web/src/components/table/task-logs/TaskLogsTable.jsx
View file @
7d08e133
...
@@ -39,6 +39,7 @@ const TaskLogsTable = (taskLogsData) => {
...
@@ -39,6 +39,7 @@ const TaskLogsTable = (taskLogsData) => {
handlePageSizeChange
,
handlePageSizeChange
,
copyText
,
copyText
,
openContentModal
,
openContentModal
,
openVideoModal
,
isAdminUser
,
isAdminUser
,
t
,
t
,
COLUMN_KEYS
,
COLUMN_KEYS
,
...
@@ -51,6 +52,7 @@ const TaskLogsTable = (taskLogsData) => {
...
@@ -51,6 +52,7 @@ const TaskLogsTable = (taskLogsData) => {
COLUMN_KEYS
,
COLUMN_KEYS
,
copyText
,
copyText
,
openContentModal
,
openContentModal
,
openVideoModal
,
isAdminUser
,
isAdminUser
,
});
});
},
[
},
[
...
@@ -58,6 +60,7 @@ const TaskLogsTable = (taskLogsData) => {
...
@@ -58,6 +60,7 @@ const TaskLogsTable = (taskLogsData) => {
COLUMN_KEYS
,
COLUMN_KEYS
,
copyText
,
copyText
,
openContentModal
,
openContentModal
,
openVideoModal
,
isAdminUser
,
isAdminUser
,
]);
]);
...
...
web/src/components/table/task-logs/index.jsx
View file @
7d08e133
...
@@ -37,7 +37,14 @@ const TaskLogsPage = () => {
...
@@ -37,7 +37,14 @@ const TaskLogsPage = () => {
<>
<>
{
/* Modals */
}
{
/* Modals */
}
<
ColumnSelectorModal
{
...
taskLogsData
}
/>
<
ColumnSelectorModal
{
...
taskLogsData
}
/>
<
ContentModal
{
...
taskLogsData
}
/>
<
ContentModal
{
...
taskLogsData
}
isVideo=
{
false
}
/>
{
/* 新增:视频预览弹窗 */
}
<
ContentModal
isModalOpen=
{
taskLogsData
.
isVideoModalOpen
}
setIsModalOpen=
{
taskLogsData
.
setIsVideoModalOpen
}
modalContent=
{
taskLogsData
.
videoUrl
}
isVideo=
{
true
}
/>
<
Layout
>
<
Layout
>
<
CardPro
<
CardPro
...
...
web/src/components/table/task-logs/modals/ContentModal.jsx
View file @
7d08e133
...
@@ -24,6 +24,7 @@ const ContentModal = ({
...
@@ -24,6 +24,7 @@ const ContentModal = ({
isModalOpen
,
isModalOpen
,
setIsModalOpen
,
setIsModalOpen
,
modalContent
,
modalContent
,
isVideo
,
})
=>
{
})
=>
{
return
(
return
(
<
Modal
<
Modal
...
@@ -34,7 +35,11 @@ const ContentModal = ({
...
@@ -34,7 +35,11 @@ const ContentModal = ({
bodyStyle=
{
{
height
:
'400px'
,
overflow
:
'auto'
}
}
bodyStyle=
{
{
height
:
'400px'
,
overflow
:
'auto'
}
}
width=
{
800
}
width=
{
800
}
>
>
{
isVideo
?
(
<
video
src=
{
modalContent
}
controls
style=
{
{
width
:
'100%'
}
}
autoPlay
/>
)
:
(
<
p
style=
{
{
whiteSpace
:
'pre-line'
}
}
>
{
modalContent
}
</
p
>
<
p
style=
{
{
whiteSpace
:
'pre-line'
}
}
>
{
modalContent
}
</
p
>
)
}
</
Modal
>
</
Modal
>
);
);
};
};
...
...
web/src/hooks/task-logs/useTaskLogsData.js
View file @
7d08e133
...
@@ -65,6 +65,10 @@ export const useTaskLogsData = () => {
...
@@ -65,6 +65,10 @@ export const useTaskLogsData = () => {
const
[
isModalOpen
,
setIsModalOpen
]
=
useState
(
false
);
const
[
isModalOpen
,
setIsModalOpen
]
=
useState
(
false
);
const
[
modalContent
,
setModalContent
]
=
useState
(
''
);
const
[
modalContent
,
setModalContent
]
=
useState
(
''
);
// 新增:视频预览弹窗状态
const
[
isVideoModalOpen
,
setIsVideoModalOpen
]
=
useState
(
false
);
const
[
videoUrl
,
setVideoUrl
]
=
useState
(
''
);
// Form state
// Form state
const
[
formApi
,
setFormApi
]
=
useState
(
null
);
const
[
formApi
,
setFormApi
]
=
useState
(
null
);
let
now
=
new
Date
();
let
now
=
new
Date
();
...
@@ -250,6 +254,12 @@ export const useTaskLogsData = () => {
...
@@ -250,6 +254,12 @@ export const useTaskLogsData = () => {
setIsModalOpen
(
true
);
setIsModalOpen
(
true
);
};
};
// 新增:打开视频预览弹窗
const
openVideoModal
=
(
url
)
=>
{
setVideoUrl
(
url
);
setIsVideoModalOpen
(
true
);
};
// Initialize data
// Initialize data
useEffect
(()
=>
{
useEffect
(()
=>
{
const
localPageSize
=
parseInt
(
localStorage
.
getItem
(
'task-page-size'
))
||
ITEMS_PER_PAGE
;
const
localPageSize
=
parseInt
(
localStorage
.
getItem
(
'task-page-size'
))
||
ITEMS_PER_PAGE
;
...
@@ -271,6 +281,11 @@ export const useTaskLogsData = () => {
...
@@ -271,6 +281,11 @@ export const useTaskLogsData = () => {
setIsModalOpen
,
setIsModalOpen
,
modalContent
,
modalContent
,
// 新增:视频弹窗状态
isVideoModalOpen
,
setIsVideoModalOpen
,
videoUrl
,
// Form state
// Form state
formApi
,
formApi
,
setFormApi
,
setFormApi
,
...
@@ -297,6 +312,7 @@ export const useTaskLogsData = () => {
...
@@ -297,6 +312,7 @@ export const useTaskLogsData = () => {
refresh
,
refresh
,
copyText
,
copyText
,
openContentModal
,
openContentModal
,
openVideoModal
,
// 新增
enrichLogs
,
enrichLogs
,
syncPageData
,
syncPageData
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment