Commit bcff6299 by yzh

feat:用户操作成功后添加消息提示

parent 0c43d37b
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
...@@ -13,7 +13,7 @@ interface shortcutsType { ...@@ -13,7 +13,7 @@ interface shortcutsType {
const props = defineProps({ const props = defineProps({
modelValue: { modelValue: {
type: String, type: String,
default: '* * * * * ?' default: '* * * * * *'
}, },
shortcuts: { type: Array as PropType<shortcutsType[]>, default: () => [] } shortcuts: { type: Array as PropType<shortcutsType[]>, default: () => [] }
}) })
...@@ -505,7 +505,7 @@ const submit = () => { ...@@ -505,7 +505,7 @@ const submit = () => {
dialogVisible.value = false dialogVisible.value = false
}else{ }else{
ElMessage.warning('cron表达式错误,只可设置一个间隔') ElMessage.warning('cron表达式错误,只可设置一个间隔')
// defaultValue.value = '* * * * * *' emit('update:modelValue', defaultValue.value)
} }
} }
...@@ -545,7 +545,7 @@ const inputChange = () => { ...@@ -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.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>
<el-form-item v-if="cronValue.second.type == '3'" label="指定" class="m-t-4"> <el-form-item v-if="cronValue.second.type == '3'" label="指定" class="m-t-4">
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<el-form-item prop="timeValue"> <el-form-item prop="timeValue">
<el-date-picker v-model="exportObject.timeValue" type="datetimerange" format="YYYY-MM-DD HH:mm:ss" <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" 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>
<el-form-item prop="spiderType"> <el-form-item prop="spiderType">
<el-checkbox-group v-model="exportObject.spiderType" class="checkboxStyle"> <el-checkbox-group v-model="exportObject.spiderType" class="checkboxStyle">
......
...@@ -268,6 +268,7 @@ import { onMounted, ref } from 'vue' ...@@ -268,6 +268,7 @@ import { onMounted, ref } from 'vue'
import Pagination from '@/components/pagination/index.vue' import Pagination from '@/components/pagination/index.vue'
import exportDialog from '@/components/Export/index.vue' import exportDialog from '@/components/Export/index.vue'
import { getItuList, getItuDetail, deleteItuData } from '@/api/spiderData' import { getItuList, getItuDetail, deleteItuData } from '@/api/spiderData'
import { ElMessage } from 'element-plus'
const searchTargetName = ref('') const searchTargetName = ref('')
const searchTimeValue = ref('') const searchTimeValue = ref('')
...@@ -369,6 +370,10 @@ const handleClose = () => { ...@@ -369,6 +370,10 @@ const handleClose = () => {
detailVisibleValue.value = false detailVisibleValue.value = false
} }
const handleSearch = async () => { 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 }) 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 pageObj.value.total = res.data.total
tableData.value = res.data.list tableData.value = res.data.list
......
...@@ -175,6 +175,7 @@ import { onMounted, ref } from 'vue' ...@@ -175,6 +175,7 @@ import { onMounted, ref } from 'vue'
import Pagination from '@/components/pagination/index.vue' import Pagination from '@/components/pagination/index.vue'
import exportDialog from '@/components/Export/index.vue' import exportDialog from '@/components/Export/index.vue'
import { getStList, getStDetail, deleteStData } from '@/api/spiderData' import { getStList, getStDetail, deleteStData } from '@/api/spiderData'
import { ElMessage } from 'element-plus'
const searchTargetName = ref('') const searchTargetName = ref('')
const noradCatId = ref('') const noradCatId = ref('')
...@@ -246,6 +247,10 @@ const handleClose = () => { ...@@ -246,6 +247,10 @@ const handleClose = () => {
detailVisibleValue.value = false detailVisibleValue.value = false
} }
const handleSearch = async () => { 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 }) 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
......
<template> <template>
<el-dialog v-model="currentVisible" :title="currentMode === AddMode.ADD_MODE ? '新增用户' : '编辑用户'" width="610" center align-center <el-dialog v-model="currentVisible" :title="currentMode === AddMode.ADD_MODE ? '新增用户' : '编辑用户'" width="480" center align-center
@close="handleClose" draggable> @close="handleClose" draggable>
<div v-if="currentMode === AddMode.ADD_MODE"> <div v-if="currentMode === AddMode.ADD_MODE">
<el-form :rules="firstFormRules" ref="firstRuleFormRef" :model="firstForm"> <el-form :rules="firstFormRules" ref="firstRuleFormRef" :model="firstForm">
<el-form-item label="用户账号:" prop="userAccount"> <el-form-item label="用户账号:" prop="userAccount" label-width="100px">
<el-input v-model="firstForm.userAccount" /> <el-input v-model="firstForm.userAccount" style="width: 300px;"/>
</el-form-item> </el-form-item>
<el-form-item label="用户名称:" prop="userName"> <el-form-item label="用户名称:" prop="userName" label-width="100px">
<el-input v-model="firstForm.userName" /> <el-input v-model="firstForm.userName" style="width: 300px"/>
</el-form-item> </el-form-item>
<el-form-item label="用户状态:"> <el-form-item label="用户状态:" label-width="100px">
<el-select v-model="userStatusValue" placeholder="请选择状态" style="width: 100%;"> <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-option v-for="item in userStatusOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="用户密码:" prop="userPassword"> <el-form-item label="用户密码:" prop="userPassword" label-width="100px">
<el-input v-model="firstForm.userPassword" /> <el-input v-model="firstForm.userPassword" style="width: 300px;"/>
</el-form-item> </el-form-item>
<el-form-item label="用户角色:"> <el-form-item label="用户角色:" label-width="100px">
<el-select v-model="userRoleValue" placeholder="请选择角色" style="width: 100%;"> <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-option v-for="item in userRoleOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -26,24 +26,24 @@ ...@@ -26,24 +26,24 @@
</div> </div>
<div v-if="currentMode === AddMode.UPDATE_MODE"> <div v-if="currentMode === AddMode.UPDATE_MODE">
<el-form :inline="true" :rules="secondFormRules" ref="secondRuleFormRef" :model="secondForm"> <el-form :inline="true" :rules="secondFormRules" ref="secondRuleFormRef" :model="secondForm">
<el-form-item label="用户名称:" prop="userName"> <el-form-item label="用户名称:" prop="userName" label-width="100px">
<el-input v-model="secondForm.userName" /> <el-input v-model="secondForm.userName" style="width: 300px;"/>
</el-form-item> </el-form-item>
<el-form-item label="用户角色:"> <el-form-item label="用户角色:" label-width="100px">
<el-select v-model="userRoleValue" placeholder="请选择角色" style="width: 180px;"> <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-option v-for="item in userRoleOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="m-t-4" /> <div class="m-t-4" />
<el-form :inline="true" :rules="editPasswordRules" ref="editPasswordFormRef" :model="editPasswordForm"> <el-form :inline="true" :rules="editPasswordRules" ref="editPasswordFormRef" :model="editPasswordForm">
<el-form-item label="用户状态:"> <el-form-item label="用户状态:" label-width="100px">
<el-select v-model="userStatusValue" placeholder="请选择状态" style="width: 180px;"> <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-option v-for="item in userStatusOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="用户密码:" prop="userPassword"> <el-form-item label="用户密码:" prop="userPassword" label-width="100px">
<el-input v-model="editPasswordForm.userPassword" placeholder="不修改请留空" /> <el-input v-model="editPasswordForm.userPassword" placeholder=" " style="width: 300px;"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
...@@ -100,12 +100,12 @@ const editPasswordFormRef = ref<FormInstance>() ...@@ -100,12 +100,12 @@ const editPasswordFormRef = ref<FormInstance>()
const firstFormRules = ref<FormRules>({ const firstFormRules = ref<FormRules>({
userAccount: [ userAccount: [
{ required: true, message: '请输入用户账号', trigger: 'blur' }, { required: true, message: '请输入用户账号', trigger: 'blur' },
{ type: 'string', min: 1, max: 20, message: '用户账号长度1-20字符', trigger: 'blur' }, { type: 'string', min: 3, max: 20, message: '用户账号长度3-20字符', trigger: 'blur' },
{ pattern: /^[A-Za-z0-9]+$/, message: '只能包含英文字母或数字', trigger: 'blur' } { pattern: /^[A-Za-z0-9]+$/, message: '用户账号只能包含英文字母或数字', trigger: 'blur' }
], ],
userName: [ userName: [
{ required: true, message: '请输入用户名称', trigger: 'blur' }, { 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: [ userPassword: [
{ required: true, message: '请输入用户密码', trigger: 'blur' }, { required: true, message: '请输入用户密码', trigger: 'blur' },
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="text-left p-8"> <div class="text-left p-8">
<el-form inline> <el-form inline>
<el-form-item> <el-form-item>
<el-button type="primary" plain @click="openAddUserDialog">创建用户</el-button> <el-button test-element="userSystem-AddUser" type="primary" plain @click="openAddUserDialog">创建用户</el-button>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="danger" plain @click="handleBatchDelete">批量删除</el-button> <el-button type="danger" plain @click="handleBatchDelete">批量删除</el-button>
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
<el-table-column property="create_time" label="创建时间" width="280" show-overflow-tooltip /> <el-table-column property="create_time" label="创建时间" width="280" show-overflow-tooltip />
<el-table-column label="操作" width="220"> <el-table-column label="操作" width="220">
<template #default="scope"> <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>
<el-button type="danger" plain @click="handleDelete(scope.row)"> <el-button type="danger" plain @click="handleDelete(scope.row)">
......
...@@ -6,9 +6,9 @@ ...@@ -6,9 +6,9 @@
<el-input v-model="ruleForm.taskName" placeholder="请输入任务名称" style="width: 90%" /> <el-input v-model="ruleForm.taskName" placeholder="请输入任务名称" style="width: 90%" />
</el-form-item> </el-form-item>
<el-form-item label="所属爬虫:" v-if="currentMode === AddMode.ADD_TASK" prop="spiderTypeValue"> <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" <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-select>
</el-form-item> </el-form-item>
<el-form-item label="执行频率:" prop="cronExpression"> <el-form-item label="执行频率:" prop="cronExpression">
...@@ -74,7 +74,18 @@ const rules = ref<FormRules<RuleForm>>({ ...@@ -74,7 +74,18 @@ const rules = ref<FormRules<RuleForm>>({
message: '请输入执行频率', message: '请输入执行频率',
trigger: 'change', 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值 // 向父组件传递dialog值
...@@ -82,8 +93,6 @@ const emit = defineEmits(['update:dialogVisible', 'confirm', 'update:mode', 'get ...@@ -82,8 +93,6 @@ const emit = defineEmits(['update:dialogVisible', 'confirm', 'update:mode', 'get
// 组件的状态 // 组件的状态
const currentVisible = ref(props.dialogVisible) const currentVisible = ref(props.dialogVisible)
const currentMode = ref(props.mode) const currentMode = ref(props.mode)
const taskName = ref('')
const spiderTypeValue = ref('')
const spiderTypeOptions = ref([ const spiderTypeOptions = ref([
{ {
value: 'api_spider', value: 'api_spider',
...@@ -115,6 +124,8 @@ const handleClose = () => { ...@@ -115,6 +124,8 @@ const handleClose = () => {
} }
// 确定的方法 // 确定的方法
const handleConfirm = async () => { const handleConfirm = async () => {
console.log(ruleForm.value.cronExpression);
if (!ruleFormRef.value) return if (!ruleFormRef.value) return
await ruleFormRef.value.validate(async (valid, fields) => { await ruleFormRef.value.validate(async (valid, fields) => {
console.log('开始校验'); console.log('开始校验');
......
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
<div> <div>
<el-form-item class="form-item"> <el-form-item class="form-item">
<el-button type="primary" @click="editTask(task)" class="editButton">编辑</el-button> <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-button type="danger" @click="deleteTask(task)" class="deleteButton">删除</el-button>
</el-form-item> </el-form-item>
</div> </div>
...@@ -110,6 +110,7 @@ import { DeleteMode } from '@/components/Delete/enum.ts' ...@@ -110,6 +110,7 @@ import { DeleteMode } from '@/components/Delete/enum.ts'
import { AddMode } from './enum' import { AddMode } from './enum'
import deleteDialog from './deleteDialog.vue' import deleteDialog from './deleteDialog.vue'
import { CronExpressionParser } from 'cron-parser'; import { CronExpressionParser } from 'cron-parser';
import { ElMessage } from 'element-plus'
const props = defineProps({ const props = defineProps({
spiderType: { spiderType: {
...@@ -160,7 +161,6 @@ const taskList = ref<any[]>([]) ...@@ -160,7 +161,6 @@ const taskList = ref<any[]>([])
// 删除任务的方法 // 删除任务的方法
const deleteTask = (task: any) => { const deleteTask = (task: any) => {
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
...@@ -209,7 +209,6 @@ const getData = async () => { ...@@ -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] 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 () => {
...@@ -223,6 +222,10 @@ const resetData = async () => { ...@@ -223,6 +222,10 @@ const resetData = async () => {
} }
// 搜索任务的方法 // 搜索任务的方法
const search = 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 res = await getSpiderTaskList({ spiders: searchCondition.value.spiders ? [searchCondition.value.spiders] : [], options: JSON.stringify({ jobName: taskName.value }) })
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++){
...@@ -267,28 +270,8 @@ const parseCronExpression = (cronExpression: string) => { ...@@ -267,28 +270,8 @@ const parseCronExpression = (cronExpression: string) => {
}else{ }else{
return `每${aaa[i][2] + aaa[i][3]}月执行一次` 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);
} }
} }
} }
......
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
<el-table :data="tableData" style="width: 100%" border :header-cell-style="{ textAlign: 'center' }" <el-table :data="tableData" style="width: 100%" border :header-cell-style="{ textAlign: 'center' }"
:cell-style="{ textAlign: 'center' }"> :cell-style="{ textAlign: 'center' }">
<el-table-column property="number" label="序号" width="55" type="index" /> <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="spider" label="所属爬虫" show-overflow-tooltip />
<el-table-column property="schedule_mode" label="调度模式" show-overflow-tooltip /> <el-table-column property="schedule_mode" label="调度模式" show-overflow-tooltip />
<el-table-column property="run_status" label="调度状态" show-overflow-tooltip> <el-table-column property="run_status" label="调度状态" show-overflow-tooltip>
...@@ -52,7 +52,11 @@ ...@@ -52,7 +52,11 @@
{{ scope.row.message || '-' }} {{ scope.row.message || '-' }}
</template> </template>
</el-table-column> </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="duration" label="持续时间" show-overflow-tooltip /> -->
<el-table-column property="create_time" label="调度时间" width="200" show-overflow-tooltip /> <el-table-column property="create_time" label="调度时间" width="200" show-overflow-tooltip />
<!-- <el-table-column label="运行日志" width="120"> <!-- <el-table-column label="运行日志" width="120">
...@@ -77,6 +81,7 @@ import Pagination from '@/components/pagination/index.vue' ...@@ -77,6 +81,7 @@ import Pagination from '@/components/pagination/index.vue'
import { useRoute } from 'vue-router' import { useRoute } from 'vue-router'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { getSpiderTaskRecord } from '@/api/spiderTask.ts' import { getSpiderTaskRecord } from '@/api/spiderTask.ts'
import { ElMessage } from 'element-plus'
const route = useRoute() const route = useRoute()
const router = useRouter() const router = useRouter()
...@@ -132,6 +137,10 @@ const getData = async () => { ...@@ -132,6 +137,10 @@ const getData = async () => {
} }
// 数据的方法 // 数据的方法
const searchData = async () => { const searchData = async () => {
if (!timeValue.value) {
ElMessage.warning('请先选择时间段')
return
}
let resTime = [] let resTime = []
const startTime = timeValue.value[0] const startTime = timeValue.value[0]
const endTime = timeValue.value[1] const endTime = timeValue.value[1]
......
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