Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fk-spider-web
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
周田
fk-spider-web
Commits
bcff6299
Commit
bcff6299
authored
Oct 23, 2025
by
yzh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:用户操作成功后添加消息提示
parent
0c43d37b
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
99 additions
and
58 deletions
+99
-58
bash.exe.stackdump
bash.exe.stackdump
+28
-0
Crontab.vue
src/components/Crontab/src/Crontab.vue
+3
-3
index.vue
src/components/Export/index.vue
+1
-1
ituDataTab.vue
src/views/os-dataDisplay/components/ituDataTab.vue
+5
-0
stDataTab.vue
src/views/os-dataDisplay/components/stDataTab.vue
+5
-0
addUserDialog.vue
src/views/os-system/components/addUserDialog.vue
+22
-22
index.vue
src/views/os-system/index.vue
+2
-2
addTaskDialog.vue
src/views/os-taskInformation/components/addTaskDialog.vue
+16
-5
taskCard.vue
src/views/os-taskInformation/components/taskCard.vue
+6
-23
index.vue
src/views/os-taskRecord/index.vue
+11
-2
No files found.
bash.exe.stackdump
0 → 100644
View file @
bcff6299
Stack trace:
Frame Function Args
0007FFFF9F30 00021005FEBA (000210285F48, 00021026AB6E, 0007FFFF9F30, 0007FFFF8E30) msys-2.0.dll+0x1FEBA
0007FFFF9F30 0002100467F9 (000000000000, 000000000000, 000000000000, 0007FFFFA208) msys-2.0.dll+0x67F9
0007FFFF9F30 000210046832 (000210285FF9, 0007FFFF9DE8, 0007FFFF9F30, 000000000000) msys-2.0.dll+0x6832
0007FFFF9F30 000210068F86 (000000000000, 000000000000, 000000000000, 000000000000) msys-2.0.dll+0x28F86
0007FFFF9F30 0002100690B4 (0007FFFF9F40, 000000000000, 000000000000, 000000000000) msys-2.0.dll+0x290B4
0007FFFFA210 00021006A49D (0007FFFF9F40, 000000000000, 000000000000, 000000000000) msys-2.0.dll+0x2A49D
End of stack trace
Loaded modules:
000100400000 bash.exe
7FFDA9860000 ntdll.dll
7FFDA81D0000 KERNEL32.DLL
7FFDA6ED0000 KERNELBASE.dll
7FFDA7E50000 USER32.dll
7FFDA6AB0000 win32u.dll
7FFDA91C0000 GDI32.dll
000210040000 msys-2.0.dll
7FFDA6D00000 gdi32full.dll
7FFDA6AE0000 msvcp_win.dll
7FFDA72D0000 ucrtbase.dll
7FFDA8460000 advapi32.dll
7FFDA9270000 msvcrt.dll
7FFDA7DA0000 sechost.dll
7FFDA9380000 RPCRT4.dll
7FFDA6010000 CRYPTBASE.DLL
7FFDA6E30000 bcryptPrimitives.dll
7FFDA7790000 IMM32.DLL
src/components/Crontab/src/Crontab.vue
View file @
bcff6299
...
...
@@ -13,7 +13,7 @@ interface shortcutsType {
const
props
=
defineProps
({
modelValue
:
{
type
:
String
,
default
:
'* * * * *
?
'
default
:
'* * * * *
*
'
},
shortcuts
:
{
type
:
Array
as
PropType
<
shortcutsType
[]
>
,
default
:
()
=>
[]
}
})
...
...
@@ -505,7 +505,7 @@ const submit = () => {
dialogVisible
.
value
=
false
}
else
{
ElMessage
.
warning
(
'cron表达式错误,只可设置一个间隔'
)
// defaultValue.value = '* * * * * *'
emit
(
'update:modelValue'
,
defaultValue
.
value
)
}
}
...
...
@@ -545,7 +545,7 @@ const inputChange = () => {
<!-- <el-input-number v-model="cronValue.second.loop.start" :max="59" :min="0" controls-position="right" />
秒开始,每 -->
每
<el-input-number
v-model=
"cronValue.second.loop.end"
:max=
"59"
:min=
"
0
"
controls-position=
"right"
/>
<el-input-number
v-model=
"cronValue.second.loop.end"
:max=
"59"
:min=
"
5
"
controls-position=
"right"
/>
秒执行一次
</el-form-item>
<el-form-item
v-if=
"cronValue.second.type == '3'"
label=
"指定"
class=
"m-t-4"
>
...
...
src/components/Export/index.vue
View file @
bcff6299
...
...
@@ -6,7 +6,7 @@
<el-form-item
prop=
"timeValue"
>
<el-date-picker
v-model=
"exportObject.timeValue"
type=
"datetimerange"
format=
"YYYY-MM-DD HH:mm:ss"
start-placeholder=
"开始时间"
end-placeholder=
"结束时间"
date-format=
"YYYY/MM/DD ddd"
time-format=
"A hh:mm:ss"
value-format=
"YYYY-MM-DD HH:mm:ss"
/>
value-format=
"YYYY-MM-DD HH:mm:ss"
data-testid=
"export-time-picker"
/>
</el-form-item>
<el-form-item
prop=
"spiderType"
>
<el-checkbox-group
v-model=
"exportObject.spiderType"
class=
"checkboxStyle"
>
...
...
src/views/os-dataDisplay/components/ituDataTab.vue
View file @
bcff6299
...
...
@@ -268,6 +268,7 @@ import { onMounted, ref } from 'vue'
import
Pagination
from
'@/components/pagination/index.vue'
import
exportDialog
from
'@/components/Export/index.vue'
import
{
getItuList
,
getItuDetail
,
deleteItuData
}
from
'@/api/spiderData'
import
{
ElMessage
}
from
'element-plus'
const
searchTargetName
=
ref
(
''
)
const
searchTimeValue
=
ref
(
''
)
...
...
@@ -369,6 +370,10 @@ const handleClose = () => {
detailVisibleValue
.
value
=
false
}
const
handleSearch
=
async
()
=>
{
if
(
searchTargetName
.
value
===
''
&&
searchTargetId
.
value
===
''
&&
searchTimeValue
.
value
===
''
){
ElMessage
.
warning
(
'请输入搜索内容'
)
return
}
const
res
=
await
getItuList
({
sat_name
:
searchTargetName
.
value
,
ntc_id
:
searchTargetId
.
value
,
times
:
searchTimeValue
.
value
,
page
:
pageObj
.
value
.
pageNo
,
size
:
pageObj
.
value
.
pageSize
})
pageObj
.
value
.
total
=
res
.
data
.
total
tableData
.
value
=
res
.
data
.
list
...
...
src/views/os-dataDisplay/components/stDataTab.vue
View file @
bcff6299
...
...
@@ -175,6 +175,7 @@ import { onMounted, ref } from 'vue'
import
Pagination
from
'@/components/pagination/index.vue'
import
exportDialog
from
'@/components/Export/index.vue'
import
{
getStList
,
getStDetail
,
deleteStData
}
from
'@/api/spiderData'
import
{
ElMessage
}
from
'element-plus'
const
searchTargetName
=
ref
(
''
)
const
noradCatId
=
ref
(
''
)
...
...
@@ -246,6 +247,10 @@ const handleClose = () => {
detailVisibleValue
.
value
=
false
}
const
handleSearch
=
async
()
=>
{
if
(
searchTargetName
.
value
===
''
&&
noradCatId
.
value
===
''
&&
timeValue
.
value
===
''
){
ElMessage
.
warning
(
'请输入搜索内容'
)
return
}
const
res
=
await
getStList
({
norad_cat_id
:
noradCatId
.
value
,
object_name
:
searchTargetName
.
value
,
times
:
timeValue
.
value
,
page
:
pageObj
.
value
.
pageNo
,
size
:
pageObj
.
value
.
pageSize
})
tableData
.
value
=
res
.
data
.
list
pageObj
.
value
.
total
=
res
.
data
.
total
...
...
src/views/os-system/components/addUserDialog.vue
View file @
bcff6299
<
template
>
<el-dialog
v-model=
"currentVisible"
:title=
"currentMode === AddMode.ADD_MODE ? '新增用户' : '编辑用户'"
width=
"
61
0"
center
align-center
<el-dialog
v-model=
"currentVisible"
:title=
"currentMode === AddMode.ADD_MODE ? '新增用户' : '编辑用户'"
width=
"
48
0"
center
align-center
@
close=
"handleClose"
draggable
>
<div
v-if=
"currentMode === AddMode.ADD_MODE"
>
<el-form
:rules=
"firstFormRules"
ref=
"firstRuleFormRef"
:model=
"firstForm"
>
<el-form-item
label=
"用户账号:"
prop=
"userAccount"
>
<el-input
v-model=
"firstForm.userAccount"
/>
<el-form-item
label=
"用户账号:"
prop=
"userAccount"
label-width=
"100px"
>
<el-input
v-model=
"firstForm.userAccount"
style=
"width: 300px;"
/>
</el-form-item>
<el-form-item
label=
"用户名称:"
prop=
"userName"
>
<el-input
v-model=
"firstForm.userName"
/>
<el-form-item
label=
"用户名称:"
prop=
"userName"
label-width=
"100px"
>
<el-input
v-model=
"firstForm.userName"
style=
"width: 300px"
/>
</el-form-item>
<el-form-item
label=
"用户状态:"
>
<el-select
v-model=
"userStatusValue"
placeholder=
"请选择状态"
style=
"width:
100%
;"
>
<el-form-item
label=
"用户状态:"
label-width=
"100px"
>
<el-select
v-model=
"userStatusValue"
placeholder=
"请选择状态"
style=
"width:
300px
;"
>
<el-option
v-for=
"item in userStatusOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"用户密码:"
prop=
"userPassword"
>
<el-input
v-model=
"firstForm.userPassword"
/>
<el-form-item
label=
"用户密码:"
prop=
"userPassword"
label-width=
"100px"
>
<el-input
v-model=
"firstForm.userPassword"
style=
"width: 300px;"
/>
</el-form-item>
<el-form-item
label=
"用户角色:"
>
<el-select
v-model=
"userRoleValue"
placeholder=
"请选择角色"
style=
"width:
100%
;"
>
<el-form-item
label=
"用户角色:"
label-width=
"100px"
>
<el-select
v-model=
"userRoleValue"
placeholder=
"请选择角色"
style=
"width:
300px
;"
>
<el-option
v-for=
"item in userRoleOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
...
...
@@ -26,24 +26,24 @@
</div>
<div
v-if=
"currentMode === AddMode.UPDATE_MODE"
>
<el-form
:inline=
"true"
:rules=
"secondFormRules"
ref=
"secondRuleFormRef"
:model=
"secondForm"
>
<el-form-item
label=
"用户名称:"
prop=
"userName"
>
<el-input
v-model=
"secondForm.userName"
/>
<el-form-item
label=
"用户名称:"
prop=
"userName"
label-width=
"100px"
>
<el-input
v-model=
"secondForm.userName"
style=
"width: 300px;"
/>
</el-form-item>
<el-form-item
label=
"用户角色:"
>
<el-select
v-model=
"userRoleValue"
placeholder=
"请选择角色"
style=
"width:
18
0px;"
>
<el-form-item
label=
"用户角色:"
label-width=
"100px"
>
<el-select
v-model=
"userRoleValue"
placeholder=
"请选择角色"
style=
"width:
30
0px;"
>
<el-option
v-for=
"item in userRoleOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
</el-form>
<div
class=
"m-t-4"
/>
<el-form
:inline=
"true"
:rules=
"editPasswordRules"
ref=
"editPasswordFormRef"
:model=
"editPasswordForm"
>
<el-form-item
label=
"用户状态:"
>
<el-select
v-model=
"userStatusValue"
placeholder=
"请选择状态"
style=
"width:
18
0px;"
>
<el-form-item
label=
"用户状态:"
label-width=
"100px"
>
<el-select
v-model=
"userStatusValue"
placeholder=
"请选择状态"
style=
"width:
30
0px;"
>
<el-option
v-for=
"item in userStatusOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"用户密码:"
prop=
"userPassword"
>
<el-input
v-model=
"editPasswordForm.userPassword"
placeholder=
"
不修改请留空"
/>
<el-form-item
label=
"用户密码:"
prop=
"userPassword"
label-width=
"100px"
>
<el-input
v-model=
"editPasswordForm.userPassword"
placeholder=
"
"
style=
"width: 300px;"
/>
</el-form-item>
</el-form>
</div>
...
...
@@ -100,12 +100,12 @@ const editPasswordFormRef = ref<FormInstance>()
const
firstFormRules
=
ref
<
FormRules
>
({
userAccount
:
[
{
required
:
true
,
message
:
'请输入用户账号'
,
trigger
:
'blur'
},
{
type
:
'string'
,
min
:
1
,
max
:
20
,
message
:
'用户账号长度1
-20字符'
,
trigger
:
'blur'
},
{
pattern
:
/^
[
A-Za-z0-9
]
+$/
,
message
:
'只能包含英文字母或数字'
,
trigger
:
'blur'
}
{
type
:
'string'
,
min
:
3
,
max
:
20
,
message
:
'用户账号长度3
-20字符'
,
trigger
:
'blur'
},
{
pattern
:
/^
[
A-Za-z0-9
]
+$/
,
message
:
'
用户账号
只能包含英文字母或数字'
,
trigger
:
'blur'
}
],
userName
:
[
{
required
:
true
,
message
:
'请输入用户名称'
,
trigger
:
'blur'
},
{
type
:
'string'
,
min
:
1
,
max
:
20
,
message
:
'用户名称长度1
-20字符'
,
trigger
:
'blur'
},
{
type
:
'string'
,
min
:
2
,
max
:
20
,
message
:
'用户名称长度2
-20字符'
,
trigger
:
'blur'
},
],
userPassword
:
[
{
required
:
true
,
message
:
'请输入用户密码'
,
trigger
:
'blur'
},
...
...
src/views/os-system/index.vue
View file @
bcff6299
...
...
@@ -3,7 +3,7 @@
<div
class=
"text-left p-8"
>
<el-form
inline
>
<el-form-item>
<el-button
type=
"primary"
plain
@
click=
"openAddUserDialog"
>
创建用户
</el-button>
<el-button
t
est-element=
"userSystem-AddUser"
t
ype=
"primary"
plain
@
click=
"openAddUserDialog"
>
创建用户
</el-button>
</el-form-item>
<el-form-item>
<el-button
type=
"danger"
plain
@
click=
"handleBatchDelete"
>
批量删除
</el-button>
...
...
@@ -20,7 +20,7 @@
<el-table-column
property=
"create_time"
label=
"创建时间"
width=
"280"
show-overflow-tooltip
/>
<el-table-column
label=
"操作"
width=
"220"
>
<template
#
default=
"scope"
>
<el-button
type=
"primary"
plain
@
click=
"handleEdit(scope.row)"
>
<el-button
type=
"primary"
plain
@
click=
"handleEdit(scope.row)"
id=
"editUser"
>
编辑
</el-button>
<el-button
type=
"danger"
plain
@
click=
"handleDelete(scope.row)"
>
...
...
src/views/os-taskInformation/components/addTaskDialog.vue
View file @
bcff6299
...
...
@@ -6,9 +6,9 @@
<el-input
v-model=
"ruleForm.taskName"
placeholder=
"请输入任务名称"
style=
"width: 90%"
/>
</el-form-item>
<el-form-item
label=
"所属爬虫:"
v-if=
"currentMode === AddMode.ADD_TASK"
prop=
"spiderTypeValue"
>
<el-select
v-model=
"ruleForm.spiderTypeValue"
placeholder=
"请选择所属爬虫"
style=
"width: 90%"
>
<el-select
v-model=
"ruleForm.spiderTypeValue"
placeholder=
"请选择所属爬虫"
style=
"width: 90%"
>
<el-option
v-for=
"item in spiderTypeOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
:value=
"item.value"
:id=
"item.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"执行频率:"
prop=
"cronExpression"
>
...
...
@@ -74,7 +74,18 @@ const rules = ref<FormRules<RuleForm>>({
message
:
'请输入执行频率'
,
trigger
:
'change'
,
},
{
min
:
1
,
message
:
'执行频率应为cron表达式'
,
trigger
:
'blur'
},
{
validator
:
(
rule
,
value
,
callback
)
=>
{
// 计算字符串中'*'的数量
const
starCount
=
(
value
.
match
(
/
\*
/g
)
||
[]).
length
;
if
(
starCount
<
5
)
{
callback
(
new
Error
(
'cron表达式最多设置一个间隔'
));
}
else
{
callback
();
}
},
trigger
:
'blur'
}
]
})
// 向父组件传递dialog值
...
...
@@ -82,8 +93,6 @@ const emit = defineEmits(['update:dialogVisible', 'confirm', 'update:mode', 'get
// 组件的状态
const
currentVisible
=
ref
(
props
.
dialogVisible
)
const
currentMode
=
ref
(
props
.
mode
)
const
taskName
=
ref
(
''
)
const
spiderTypeValue
=
ref
(
''
)
const
spiderTypeOptions
=
ref
([
{
value
:
'api_spider'
,
...
...
@@ -115,6 +124,8 @@ const handleClose = () => {
}
// 确定的方法
const
handleConfirm
=
async
()
=>
{
console
.
log
(
ruleForm
.
value
.
cronExpression
);
if
(
!
ruleFormRef
.
value
)
return
await
ruleFormRef
.
value
.
validate
(
async
(
valid
,
fields
)
=>
{
console
.
log
(
'开始校验'
);
...
...
src/views/os-taskInformation/components/taskCard.vue
View file @
bcff6299
...
...
@@ -44,7 +44,7 @@
<div>
<el-form-item
class=
"form-item"
>
<el-button
type=
"primary"
@
click=
"editTask(task)"
class=
"editButton"
>
编辑
</el-button>
<
el-button
type=
"success"
@
click=
"goToTaskRecord"
class=
"recordButton"
>
执行记录
</el-button
>
<
!--
<el-button
type=
"success"
@
click=
"goToTaskRecord"
class=
"recordButton"
>
执行记录
</el-button>
--
>
<el-button
type=
"danger"
@
click=
"deleteTask(task)"
class=
"deleteButton"
>
删除
</el-button>
</el-form-item>
</div>
...
...
@@ -110,6 +110,7 @@ import { DeleteMode } from '@/components/Delete/enum.ts'
import
{
AddMode
}
from
'./enum'
import
deleteDialog
from
'./deleteDialog.vue'
import
{
CronExpressionParser
}
from
'cron-parser'
;
import
{
ElMessage
}
from
'element-plus'
const
props
=
defineProps
({
spiderType
:
{
...
...
@@ -160,7 +161,6 @@ const taskList = ref<any[]>([])
// 删除任务的方法
const
deleteTask
=
(
task
:
any
)
=>
{
console
.
log
(
task
);
jobId
.
value
=
task
.
id
deleteMode
.
value
=
DeleteMode
.
SINGLE_DELETE
showDeleteDialog
.
value
=
true
...
...
@@ -209,7 +209,6 @@ const getData = async () => {
res
.
data
[
i
].
count
=
resId
.
data
[
res
.
data
[
i
].
id
]
===
undefined
?
0
:
resId
.
data
[
res
.
data
[
i
].
id
]
}
taskList
.
value
=
res
.
data
console
.
log
(
taskList
.
value
);
}
// 重置任务列表的方法
const
resetData
=
async
()
=>
{
...
...
@@ -223,6 +222,10 @@ const resetData = async () => {
}
// 搜索任务的方法
const
search
=
async
()
=>
{
if
(
searchCondition
.
value
.
spiders
===
''
){
ElMessage
.
warning
(
'请先选择爬虫'
)
return
}
const
res
=
await
getSpiderTaskList
({
spiders
:
searchCondition
.
value
.
spiders
?
[
searchCondition
.
value
.
spiders
]
:
[],
options
:
JSON
.
stringify
({
jobName
:
taskName
.
value
})
})
const
resId
=
await
getTaskCount
({})
for
(
let
i
=
0
;
i
<
res
.
data
.
length
;
i
++
){
...
...
@@ -267,28 +270,8 @@ const parseCronExpression = (cronExpression: string) => {
}
else
{
return
`每
${
aaa
[
i
][
2
]
+
aaa
[
i
][
3
]}
月执行一次`
}
}
else
if
(
i
==
5
){
console
.
log
(
aaa
[
i
]);
// if(aaa[i][0] === '1'){
// return `第${aaa[i][2]}周的星期天执行一次`
// }else if(aaa[i][0] === '2'){
// return `第${aaa[i][2]}周的星期一执行一次`
// }else if(aaa[i][0] === '3'){
// return `第${aaa[i][2]}周的星期二执行一次`
// }else if(aaa[i][0] === '4'){
// return `第${aaa[i][2]}周的星期三执行一次`
// }else if(aaa[i][0] === '5'){
// return `第${aaa[i][2]}周的星期四执行一次`
// }else if(aaa[i][0] === '6'){
// return `第${aaa[i][2]}周的星期五执行一次`
// }else if(aaa[i][0] === '7'){
// return `第${aaa[i][2]}周的星期六执行一次`
// }
}
}
console
.
log
(
aaa
);
}
}
}
...
...
src/views/os-taskRecord/index.vue
View file @
bcff6299
...
...
@@ -38,7 +38,7 @@
<el-table
:data=
"tableData"
style=
"width: 100%"
border
:header-cell-style=
"
{ textAlign: 'center' }"
:cell-style="{ textAlign: 'center' }">
<el-table-column
property=
"number"
label=
"序号"
width=
"55"
type=
"index"
/>
<
el-table-column
property=
"project"
label=
"项目名称"
show-overflow-tooltip
/
>
<
!--
<el-table-column
property=
"project"
label=
"项目名称"
show-overflow-tooltip
/>
--
>
<el-table-column
property=
"spider"
label=
"所属爬虫"
show-overflow-tooltip
/>
<el-table-column
property=
"schedule_mode"
label=
"调度模式"
show-overflow-tooltip
/>
<el-table-column
property=
"run_status"
label=
"调度状态"
show-overflow-tooltip
>
...
...
@@ -52,7 +52,11 @@
{{
scope
.
row
.
message
||
'-'
}}
</
template
>
</el-table-column>
<el-table-column
property=
"run_status"
label=
"运行状态"
show-overflow-tooltip
/>
<el-table-column
property=
"run_status"
label=
"运行状态"
show-overflow-tooltip
>
<
template
#
default=
"scope"
>
{{
scope
.
row
.
run_status
===
"unknown"
?
'已结束'
:
scope
.
row
.
run_status
}}
</
template
>
</el-table-column>
<!-- <el-table-column property="duration" label="持续时间" show-overflow-tooltip /> -->
<el-table-column
property=
"create_time"
label=
"调度时间"
width=
"200"
show-overflow-tooltip
/>
<!-- <el-table-column label="运行日志" width="120">
...
...
@@ -77,6 +81,7 @@ import Pagination from '@/components/pagination/index.vue'
import
{
useRoute
}
from
'vue-router'
import
{
useRouter
}
from
'vue-router'
import
{
getSpiderTaskRecord
}
from
'@/api/spiderTask.ts'
import
{
ElMessage
}
from
'element-plus'
const
route
=
useRoute
()
const
router
=
useRouter
()
...
...
@@ -132,6 +137,10 @@ const getData = async () => {
}
// 数据的方法
const
searchData
=
async
()
=>
{
if
(
!
timeValue
.
value
)
{
ElMessage
.
warning
(
'请先选择时间段'
)
return
}
let
resTime
=
[]
const
startTime
=
timeValue
.
value
[
0
]
const
endTime
=
timeValue
.
value
[
1
]
...
...
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