Commit 6505f76f by yzh

feat:修改主页跳转bug,代码添加注释

parent 307a70d8
...@@ -71,7 +71,7 @@ const props = defineProps({ ...@@ -71,7 +71,7 @@ const props = defineProps({
default: false default: false
} }
}) })
const emit = defineEmits(['update:dialogVisible', 'confirm']) const emit = defineEmits(['update:dialogVisible'])
const exportDialogVisible = ref(props.dialogVisible) const exportDialogVisible = ref(props.dialogVisible)
// 导出方法 // 导出方法
......
...@@ -253,6 +253,7 @@ ...@@ -253,6 +253,7 @@
import { onMounted, ref } from 'vue' import { onMounted, ref } from 'vue'
import Pagination from '@/components/pagination/index.vue' import Pagination from '@/components/pagination/index.vue'
import { getDsnList } from '@/api/spiderData' import { getDsnList } from '@/api/spiderData'
import { ElMessage } from 'element-plus'
const timeValue = ref('') const timeValue = ref('')
const statusMode = ref(false) const statusMode = ref(false)
...@@ -307,6 +308,7 @@ const pageObj = ref({ ...@@ -307,6 +308,7 @@ const pageObj = ref({
pageSize: 10, pageSize: 10,
pageNo: 1 pageNo: 1
}) })
// 查看数据详情的方法
const handleDetails = (row: any) => { const handleDetails = (row: any) => {
console.log(row); console.log(row);
targetName.value = row.targets[0].name targetName.value = row.targets[0].name
...@@ -326,6 +328,7 @@ const handleDetails = (row: any) => { ...@@ -326,6 +328,7 @@ const handleDetails = (row: any) => {
roundTripTime.value = row.targets[0].rtlt roundTripTime.value = row.targets[0].rtlt
detailVisibleValue.value = true detailVisibleValue.value = true
} }
// 获取dsn数据列表的方法
const getData = async () => { const getData = async () => {
const res = await getDsnList({ page: pageObj.value.pageNo, size: pageObj.value.pageSize }) const res = await getDsnList({ page: pageObj.value.pageNo, size: pageObj.value.pageSize })
tableData.value = res.data.list[0].dishes tableData.value = res.data.list[0].dishes
...@@ -333,6 +336,7 @@ const getData = async () => { ...@@ -333,6 +336,7 @@ const getData = async () => {
const handleClose = () => { const handleClose = () => {
detailVisibleValue.value = false detailVisibleValue.value = false
} }
// 刷新数据的方法
const handleRefresh = () => { const handleRefresh = () => {
// 切换是否开始刷新的状态 // 切换是否开始刷新的状态
statusMode.value = !statusMode.value statusMode.value = !statusMode.value
...@@ -343,12 +347,14 @@ const handleRefresh = () => { ...@@ -343,12 +347,14 @@ const handleRefresh = () => {
} }
// 开始刷新时重新设置一个定时器 // 开始刷新时重新设置一个定时器
if (statusMode.value) { if (statusMode.value) {
ElMessage.success('开始刷新')
// 保存id删除的时候用 // 保存id删除的时候用
timerId.value = setInterval(async () => { timerId.value = setInterval(async () => {
const res = await getDsnList({ page: pageObj.value.pageNo, size: pageObj.value.pageSize }); const res = await getDsnList({ page: pageObj.value.pageNo, size: pageObj.value.pageSize });
tableData.value = res.data.list[0].dishes; tableData.value = res.data.list[0].dishes;
}, 5000); }, 5000);
} else { } else {
ElMessage.success('停止刷新')
getData() getData()
} }
} }
......
...@@ -260,7 +260,7 @@ ...@@ -260,7 +260,7 @@
</el-form> </el-form>
</el-dialog> </el-dialog>
</div> </div>
<exportDialog v-model:dialogVisible="showDeleteDialog" @confirm="handleExportConfirm" /> <exportDialog v-model:dialogVisible="showDeleteDialog" />
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
...@@ -326,8 +326,8 @@ const pageObj = ref({ ...@@ -326,8 +326,8 @@ const pageObj = ref({
pageSize: 10, pageSize: 10,
pageNo: 1 pageNo: 1
}) })
// 查看数据详情的方法
const handleDetails = async (id: any) => { const handleDetails = async (id: any) => {
// console.log(id._id);
const res = await getItuDetail({ id: id._id }) const res = await getItuDetail({ id: id._id })
console.log(res); console.log(res);
snsId.value = res.data.item.ntc_id snsId.value = res.data.item.ntc_id
...@@ -356,23 +356,20 @@ const handleDetails = async (id: any) => { ...@@ -356,23 +356,20 @@ const handleDetails = async (id: any) => {
detailVisibleValue.value = true detailVisibleValue.value = true
} }
// 获取itu数据列表的方法
const getData = async () => { const getData = async () => {
const res = await getItuList({ page: pageObj.value.pageNo, size: pageObj.value.pageSize }) const res = await getItuList({ page: pageObj.value.pageNo, size: pageObj.value.pageSize })
console.log(res);
searchTargetName.value = '' searchTargetName.value = ''
searchTargetId.value = '' searchTargetId.value = ''
searchTimeValue.value = ''
pageObj.value.total = res.data.total pageObj.value.total = res.data.total
tableData.value = res.data.list tableData.value = res.data.list
} }
const handleClose = () => { const handleClose = () => {
detailVisibleValue.value = false detailVisibleValue.value = false
} }
const handleExportConfirm = () => {
}
const handleSearch = async () => { const handleSearch = async () => {
const res = await getItuList({ sat_name: searchTargetName.value, ntc_id: searchTargetId.value, times: searchTimeValue.value , page: pageObj.value.pageNo, size: pageObj.value.pageSize }) const res = await getItuList({ sat_name: searchTargetName.value, ntc_id: searchTargetId.value, times: searchTimeValue.value , page: pageObj.value.pageNo, size: pageObj.value.pageSize })
// console.log(res);
pageObj.value.total = res.data.total pageObj.value.total = res.data.total
tableData.value = res.data.list tableData.value = res.data.list
} }
......
...@@ -167,7 +167,7 @@ ...@@ -167,7 +167,7 @@
</el-form> </el-form>
</el-dialog> </el-dialog>
</div> </div>
<exportDialog v-model:dialogVisible="showDeleteDialog" @confirm="handleExportConfirm" /> <exportDialog v-model:dialogVisible="showDeleteDialog" />
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
...@@ -214,8 +214,8 @@ const pageObj = ref({ ...@@ -214,8 +214,8 @@ const pageObj = ref({
pageSize: 10, pageSize: 10,
pageNo: 1 pageNo: 1
}) })
// 查看数据详情的方法
const handleDetails = async (row: any) => { const handleDetails = async (row: any) => {
// console.log(row);
const res = await getStDetail({ id: row._id }) const res = await getStDetail({ id: row._id })
NoradCatID.value = res.data.data[0].NORAD_CAT_ID NoradCatID.value = res.data.data[0].NORAD_CAT_ID
targetName.value = res.data.data[0].OBJECT_NAME targetName.value = res.data.data[0].OBJECT_NAME
...@@ -233,6 +233,7 @@ ${res.data.data[0].TLE_LINE1} ...@@ -233,6 +233,7 @@ ${res.data.data[0].TLE_LINE1}
${res.data.data[0].TLE_LINE2}` ${res.data.data[0].TLE_LINE2}`
detailVisibleValue.value = true detailVisibleValue.value = true
} }
// 获取st数据列表的方法
const getData = async () => { const getData = async () => {
const res = await getStList({ page: pageObj.value.pageNo, size: pageObj.value.pageSize }) const res = await getStList({ page: pageObj.value.pageNo, size: pageObj.value.pageSize })
pageObj.value.total = res.data.total pageObj.value.total = res.data.total
...@@ -244,17 +245,10 @@ const getData = async () => { ...@@ -244,17 +245,10 @@ const getData = async () => {
const handleClose = () => { const handleClose = () => {
detailVisibleValue.value = false detailVisibleValue.value = false
} }
const handleExportConfirm = () => {
}
const handleExport = () => {
showDeleteDialog.value = true
}
const handleSearch = async () => { const handleSearch = async () => {
const res = await getStList({ norad_cat_id: noradCatId.value, object_name: searchTargetName.value, times:timeValue.value }) 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 tableData.value = res.data.list
pageObj.value.total = res.data.total pageObj.value.total = res.data.total
} }
onMounted(() => { onMounted(() => {
getData() getData()
......
...@@ -41,10 +41,12 @@ const handleDetails = (row: any) => { ...@@ -41,10 +41,12 @@ const handleDetails = (row: any) => {
path: '/osTaskInformation/list', path: '/osTaskInformation/list',
query: { query: {
jump: 'yes', jump: 'yes',
spiderType: row.spider spiderType: row.spider,
page:'spiderManager'
} }
}) })
} }
// 获取爬虫数据的方法
const getData = async () => { const getData = async () => {
const res = await getSpiderList({scrapydServerId:'1',project:'spiders'}) const res = await getSpiderList({scrapydServerId:'1',project:'spiders'})
tableData.value = res.data tableData.value = res.data
......
...@@ -68,7 +68,7 @@ const goToAllDataPage = () => { ...@@ -68,7 +68,7 @@ const goToAllDataPage = () => {
path: '/osDataDisplay/list', path: '/osDataDisplay/list',
query: { query: {
jump: 'yes', jump: 'yes',
mode: '综合数据' mode: 'DSN数据'
} }
}) })
} }
...@@ -83,6 +83,7 @@ const goToTaskRecordPage = () => { ...@@ -83,6 +83,7 @@ const goToTaskRecordPage = () => {
}) })
} }
// 获取数据统计数据的方法
const getData = async () => { const getData = async () => {
const staticData = await getStatsDataList({}) const staticData = await getStatsDataList({})
const spiderTask = await getSpiderTaskList({}) const spiderTask = await getSpiderTaskList({})
......
...@@ -78,33 +78,37 @@ const stErrorRate = ref('') ...@@ -78,33 +78,37 @@ const stErrorRate = ref('')
const goToDSNTaskRecordPage = () => { const goToDSNTaskRecordPage = () => {
router.push({ router.push({
path: '/osTaskRecord/list', path: '/osTaskInformation/list',
query: { query: {
mode: 'dsn', mode: 'dsn',
jump: 'yes' jump: 'yes',
page: 'statusMonitor'
} }
}) })
} }
const goToITUTaskRecordPage = () => { const goToITUTaskRecordPage = () => {
router.push({ router.push({
path: '/osTaskRecord/list', path: '/osTaskInformation/list',
query: { query: {
mode: 'itu', mode: 'itu',
jump: 'yes' jump: 'yes',
page: 'statusMonitor'
} }
}) })
} }
const goToSTTaskRecordPage = () => { const goToSTTaskRecordPage = () => {
router.push({ router.push({
path: '/osTaskRecord/list', path: '/osTaskInformation/list',
query: { query: {
mode: 'st', mode: 'st',
jump: 'yes' jump: 'yes',
page: 'statusMonitor'
} }
}) })
} }
// 获取任务统计数据的方法
const getData = async () => { const getData = async () => {
const res = await getAllSpiderTaskStatistics({}) const res = await getAllSpiderTaskStatistics({})
dsnTotalTaskNumber.value = res.data.dsn_now.totalCount dsnTotalTaskNumber.value = res.data.dsn_now.totalCount
......
...@@ -126,26 +126,24 @@ const editPasswordRules = ref<FormRules>({ ...@@ -126,26 +126,24 @@ const editPasswordRules = ref<FormRules>({
], ],
}) })
// 状态选项(统一值类型,避免类型错误)
const userStatusValue = ref(true) const userStatusValue = ref(true)
const userRoleValue = ref(1) const userRoleValue = ref(1)
const userStatusOptions = [ const userStatusOptions = [
{ value: true, label: '启用' }, { value: true, label: '启用' },
{ value: false, label: '停用' } // 与userStatusValue类型一致(boolean) { value: false, label: '停用' }
] ]
const userRoleOptions = [ const userRoleOptions = [
{ value: false, label: '管理员' }, { value: 1, label: '管理员' },
{ value: true, label: '普通用户' } // 统一值类型 { value: 0, label: '普通用户' }
] ]
const emit = defineEmits(['update:dialogVisible', 'getUserList']) const emit = defineEmits(['update:dialogVisible', 'getUserList'])
// 组件状态 // 组件状态
const currentVisible = ref(props.dialogVisible) const currentVisible = ref(props.dialogVisible)
const currentMode = ref(props.mode) const currentMode = ref(props.mode)
// 关闭对话框 // 关闭对话框的方法
const handleClose = () => { const handleClose = () => {
firstRuleFormRef.value?.resetFields() firstRuleFormRef.value?.resetFields()
secondRuleFormRef.value?.resetFields() secondRuleFormRef.value?.resetFields()
...@@ -153,14 +151,13 @@ const handleClose = () => { ...@@ -153,14 +151,13 @@ const handleClose = () => {
currentVisible.value = false currentVisible.value = false
} }
// 确认操作 // 创建用户与编辑用户的方法
const handleConfirm = async () => { const handleConfirm = async () => {
try { try {
if (currentMode.value === AddMode.ADD_MODE) { if (currentMode.value === AddMode.ADD_MODE) {
if (!firstRuleFormRef.value) { if (!firstRuleFormRef.value) {
return; return;
} }
// 使用Promise形式的validate(不传入回调),确保await生效
const valid = await firstRuleFormRef.value.validate(); const valid = await firstRuleFormRef.value.validate();
if (valid) { if (valid) {
await addUser({ await addUser({
...@@ -175,7 +172,6 @@ const handleConfirm = async () => { ...@@ -175,7 +172,6 @@ const handleConfirm = async () => {
currentVisible.value = false; currentVisible.value = false;
} }
} else if (currentMode.value === AddMode.UPDATE_MODE) { } else if (currentMode.value === AddMode.UPDATE_MODE) {
// 编辑模式逻辑(略,可参考新增模式调整)
if (!secondRuleFormRef.value) return; if (!secondRuleFormRef.value) return;
const valid = await secondRuleFormRef.value.validate(); const valid = await secondRuleFormRef.value.validate();
if (valid) { if (valid) {
...@@ -214,6 +210,7 @@ watch(() => props.mode, (newVal) => { ...@@ -214,6 +210,7 @@ watch(() => props.mode, (newVal) => {
currentMode.value = newVal currentMode.value = newVal
}) })
// 监听参数变化,将参数展示到对话框中
watch( watch(
[() => props.dialogVisible, () => props.mode, () => props.nickName, () => props.userPassword, () => props.userStatus, () => props.userRole], [() => props.dialogVisible, () => props.mode, () => props.nickName, () => props.userPassword, () => props.userStatus, () => props.userRole],
([newVisible, newMode, newNickName, newPwd, newStatus, newRole]) => { ([newVisible, newMode, newNickName, newPwd, newStatus, newRole]) => {
......
...@@ -65,10 +65,11 @@ const dialogVisible = ref<boolean>(false) ...@@ -65,10 +65,11 @@ const dialogVisible = ref<boolean>(false)
const mode = ref<AddMode>(AddMode.ADD_MODE) const mode = ref<AddMode>(AddMode.ADD_MODE)
const tableData = ref() const tableData = ref()
const pageObj = ref({ const pageObj = ref({
total: 12, total: 0,
pageSize: 10, pageSize: 10,
pageNo: 1 pageNo: 1
}) })
// 编辑用户信息的方法
const handleEdit = async (row: any) => { const handleEdit = async (row: any) => {
mode.value = AddMode.UPDATE_MODE mode.value = AddMode.UPDATE_MODE
nickName.value = row.nickname nickName.value = row.nickname
...@@ -79,13 +80,14 @@ const handleEdit = async (row: any) => { ...@@ -79,13 +80,14 @@ const handleEdit = async (row: any) => {
dialogVisible.value = true dialogVisible.value = true
userId.value = row.id userId.value = row.id
} }
// 弹窗关闭的方法
const handleDelete = async (row: any) => { const handleDelete = async (row: any) => {
showDeleteDialog.value = true showDeleteDialog.value = true
deleteMode.value = DeleteMode.SINGLE_DELETE deleteMode.value = DeleteMode.SINGLE_DELETE
userId.value = row.id userId.value = row.id
console.log(userId.value); console.log(userId.value);
} }
// 批量删除用户的方法
const handleBatchDelete = async () => { const handleBatchDelete = async () => {
if(userIds.value == undefined){ if(userIds.value == undefined){
ElMessage({ ElMessage({
...@@ -98,6 +100,7 @@ const handleBatchDelete = async () => { ...@@ -98,6 +100,7 @@ const handleBatchDelete = async () => {
showDeleteDialog.value = true showDeleteDialog.value = true
} }
} }
// 多选框改变后的方法
const handleSelectionChange = (data: any) => { const handleSelectionChange = (data: any) => {
let array = [] let array = []
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
...@@ -110,14 +113,15 @@ const openAddUserDialog = () => { ...@@ -110,14 +113,15 @@ const openAddUserDialog = () => {
mode.value = AddMode.ADD_MODE mode.value = AddMode.ADD_MODE
dialogVisible.value = true dialogVisible.value = true
} }
// 获取用户列表数据的方法
const getUserListData = async () => { const getUserListData = async () => {
const userList = await getUserList({ const userList = await getUserList({
// page: 1, page: pageObj.value.pageNo,
size: 10 size: pageObj.value.pageSize
}) })
tableData.value = userList.data tableData.value = userList.data.list
pageObj.value.total = tableData.value.length pageObj.value.total = userList.data.total
console.log(tableData.value.length); console.log(userList);
} }
onMounted(async () => { onMounted(async () => {
......
<!-- 任务执行统计卡片组件 --> <!-- 任务执行统计卡片组件 -->
<template> <template>
<div> <div>
<div class="m-t-2" />
<div class="text-left p-4 toolbarStyle "> <div class="text-left p-4 toolbarStyle ">
<div class="formStyle"> <div class="formStyle">
<el-form inline> <el-form inline>
...@@ -31,7 +33,6 @@ ...@@ -31,7 +33,6 @@
</el-form> </el-form>
</div> </div>
</div> </div>
<div class="cardStyle"> <div class="cardStyle">
<div class="taskCard p-6" v-for="task in taskList" :key="task.taskId"> <div class="taskCard p-6" v-for="task in taskList" :key="task.taskId">
<div class="taskContent"> <div class="taskContent">
...@@ -152,12 +153,14 @@ const taskOptions = ref('') ...@@ -152,12 +153,14 @@ const taskOptions = ref('')
const jobId = ref('') const jobId = ref('')
const taskList = ref<any[]>([]) const taskList = ref<any[]>([])
// 删除任务的方法
const deleteTask = (task: any) => { const deleteTask = (task: any) => {
console.log(task); console.log(task);
jobId.value = task.id jobId.value = task.id
deleteMode.value = DeleteMode.SINGLE_DELETE deleteMode.value = DeleteMode.SINGLE_DELETE
showDeleteDialog.value = true showDeleteDialog.value = true
} }
// 编辑任务的方法
const editTask = (task: any) => { const editTask = (task: any) => {
jobId.value = task.id jobId.value = task.id
taskOptions.value = JSON.stringify(JSON.parse(task.kwargs.options)) taskOptions.value = JSON.stringify(JSON.parse(task.kwargs.options))
...@@ -177,6 +180,7 @@ const goToTaskRecord = () => { ...@@ -177,6 +180,7 @@ const goToTaskRecord = () => {
} }
}) })
} }
// 启动与停止任务的方法
const changeStatus = async (task: any, newStatus: string) => { const changeStatus = async (task: any, newStatus: string) => {
if (newStatus === "running") { if (newStatus === "running") {
await resumeSpiderTask({ job_id: task.id }); await resumeSpiderTask({ job_id: task.id });
...@@ -192,26 +196,33 @@ const openTaskDialog = () => { ...@@ -192,26 +196,33 @@ const openTaskDialog = () => {
editMode.value = AddMode.ADD_TASK editMode.value = AddMode.ADD_TASK
showTaskDialog.value = true showTaskDialog.value = true
} }
// 获取任务列表的方法
const getData = async () => { const getData = async () => {
const res = await getSpiderTaskList({ spiders: searchCondition.value.spiders ? [searchCondition.value.spiders] : [] }) const res = await getSpiderTaskList({ spiders: searchCondition.value.spiders ? [searchCondition.value.spiders] : [] })
// for (let i = 0; i < res.data.length; i++) {
// const resId = await getTaskCount({id:res.data[i].id})
// res.data[i].count = resId.data.count
// }
const resId = await getTaskCount({}) const resId = await getTaskCount({})
for(let i = 0; i < res.data.length; i++){ for(let i = 0; i < res.data.length; i++){
res.data[i].count = resId.data[res.data[i].id] === undefined ? 0 : resId.data[res.data[i].id] res.data[i].count = resId.data[res.data[i].id] === undefined ? 0 : resId.data[res.data[i].id]
} }
taskList.value = res.data taskList.value = res.data
console.log(taskList.value);
} }
// 重置任务列表的方法
const resetData = async () => { const resetData = async () => {
searchCondition.value.spiders = '' searchCondition.value.spiders = ''
const res = await getSpiderTaskList({ spiders: [], options: JSON.stringify({ jobName: taskName.value }) }) const res = await getSpiderTaskList({ spiders: [], options: JSON.stringify({ jobName: taskName.value }) })
const resId = await getTaskCount({})
for(let i = 0; i < res.data.length; i++){
res.data[i].count = resId.data[res.data[i].id] === undefined ? 0 : resId.data[res.data[i].id]
}
taskList.value = res.data taskList.value = res.data
} }
// 搜索任务的方法
const search = async () => { const search = async () => {
const res = await getSpiderTaskList({ spiders: searchCondition.value.spiders ? [searchCondition.value.spiders] : [], options: JSON.stringify({ jobName: taskName.value }) }) 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++){
res.data[i].count = resId.data[res.data[i].id] === undefined ? 0 : resId.data[res.data[i].id]
}
taskList.value = res.data taskList.value = res.data
} }
onMounted(() => { onMounted(() => {
...@@ -219,8 +230,7 @@ onMounted(() => { ...@@ -219,8 +230,7 @@ onMounted(() => {
searchCondition.value.spiders = props.spiderType searchCondition.value.spiders = props.spiderType
} }
getData() getData()
const interval = CronExpressionParser.parse('*/2 * * * *');
console.log(interval);
}) })
......
...@@ -47,7 +47,11 @@ const pageObj = ref({ ...@@ -47,7 +47,11 @@ const pageObj = ref({
}) })
const goToTaskInformation = () => { const goToTaskInformation = () => {
router.push({ path: '/osSpiderManager/list' }) if(route.query.page === 'spiderManager'){
router.push({ path: '/osSpiderManager/list' })
}else{
router.push({ path: '/osStatus/list' })
}
} }
onMounted(async () => { onMounted(async () => {
......
...@@ -103,17 +103,17 @@ const pageObj = ref({ ...@@ -103,17 +103,17 @@ const pageObj = ref({
pageNo: 1, pageNo: 1,
pagerCount: 5, pagerCount: 5,
}) })
const handleDetails = (row: any) => { // 前往运行日志,暂时不要
console.log(row); // const handleDetails = (row: any) => {
router.push({ // console.log(row);
path: '/os-log/list', // router.push({
query: { // path: '/os-log/list',
id: row.id // query: {
} // id: row.id
}) // }
} // })
// }
const goToStatus = () => { const goToStatus = () => {
if (route.query.mode === '状态监控') { if (route.query.mode === '状态监控') {
router.push({ router.push({
path: '/osStatus/list', path: '/osStatus/list',
...@@ -123,8 +123,6 @@ const goToStatus = () => { ...@@ -123,8 +123,6 @@ const goToStatus = () => {
path: '/osTaskInformation/list', path: '/osTaskInformation/list',
}) })
} }
} }
// 获取任务执行记录列表 // 获取任务执行记录列表
const getData = async () => { const getData = async () => {
...@@ -132,7 +130,7 @@ const getData = async () => { ...@@ -132,7 +130,7 @@ const getData = async () => {
pageObj.value.total = res.data.total pageObj.value.total = res.data.total
tableData.value = res.data.list tableData.value = res.data.list
} }
// 数据的方法
const searchData = async () => { const searchData = async () => {
let resTime = [] let resTime = []
const startTime = timeValue.value[0] const startTime = timeValue.value[0]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment