|
|
@@ -1,27 +1,172 @@
|
|
|
-<route lang="yaml">
|
|
|
-meta:
|
|
|
- enabled: false
|
|
|
-</route>
|
|
|
-
|
|
|
-<script lang="ts" setup>
|
|
|
-const value = ref(true)
|
|
|
-const value1 = ref(true)
|
|
|
-const value2 = ref(true)
|
|
|
-const value3 = ref(false)
|
|
|
+<script lang="ts" setup name="GroupCatIndex">
|
|
|
+import { ElMessage, ElMessageBox } from 'element-plus'
|
|
|
+import JobComponent from './components/Job.vue'
|
|
|
+import { deleteJobById, getJobByList } from '@/api/system/jobApi'
|
|
|
+
|
|
|
+const state = reactive({
|
|
|
+ loading: false,
|
|
|
+ // 表格是否自适应高度
|
|
|
+ tableAutoHeight: false,
|
|
|
+ // 搜索
|
|
|
+ search: {
|
|
|
+ keywords: '',
|
|
|
+ },
|
|
|
+ // 列表数据
|
|
|
+ dataList: [],
|
|
|
+})
|
|
|
+
|
|
|
+const jobRef = ref()
|
|
|
+
|
|
|
+const getData = async () => {
|
|
|
+ state.loading = true
|
|
|
+ const { data } = await getJobByList(state.search)
|
|
|
+ state.dataList = data
|
|
|
+ state.loading = false
|
|
|
+}
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ getData()
|
|
|
+})
|
|
|
+
|
|
|
+function onJobAdd() {
|
|
|
+ jobRef.value.showAddModel()
|
|
|
+}
|
|
|
+
|
|
|
+function onJobEdit(row: any) {
|
|
|
+ const groupCatId = row.groupCatId
|
|
|
+ jobRef.value.showEditModel(groupCatId)
|
|
|
+}
|
|
|
+
|
|
|
+function onJobDel(row: any) {
|
|
|
+ const { jobId, jobTitle } = row
|
|
|
+ ElMessageBox.confirm(`确认删除「${jobTitle}」吗?`, '确认信息').then(async () => {
|
|
|
+ const { msg } = await deleteJobById(jobId)
|
|
|
+ ElMessage.success(msg)
|
|
|
+ await getData()
|
|
|
+ }).catch(() => {})
|
|
|
+}
|
|
|
+
|
|
|
+const onChangeStatus = (status: number, row: any) => {
|
|
|
+ window.console.log(status)
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
|
- <div>
|
|
|
- <page-header title="开关" />
|
|
|
- <page-main title="基础用法" class="demo">
|
|
|
- <el-switch v-model="value" active-color="#13ce66" inactive-color="#ff4949" />
|
|
|
- </page-main>
|
|
|
- <page-main title="文字描述" class="demo">
|
|
|
- <el-switch v-model="value1" active-text="按月付费" inactive-text="按年付费" />
|
|
|
- </page-main>
|
|
|
- <page-main title="禁用状态" class="demo">
|
|
|
- <el-switch v-model="value2" disabled style="margin-right: 10px;" />
|
|
|
- <el-switch v-model="value3" disabled />
|
|
|
+ <div :class="{ 'absolute-container': state.tableAutoHeight }">
|
|
|
+ <page-header title="系统作业">
|
|
|
+ <template #content>
|
|
|
+ <div>
|
|
|
+ 系统支持设定定时器作业
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <el-button-group>
|
|
|
+ <el-button type="primary" size="large" @click="onJobAdd">
|
|
|
+ <template #icon>
|
|
|
+ <el-icon>
|
|
|
+ <svg-icon name="ep:plus" />
|
|
|
+ </el-icon>
|
|
|
+ </template>
|
|
|
+ 新增
|
|
|
+ </el-button>
|
|
|
+ </el-button-group>
|
|
|
+ </page-header>
|
|
|
+
|
|
|
+ <page-main>
|
|
|
+ <el-table v-loading="state.loading" class="list-table" :data="state.dataList" border stripe highlight-current-row height="100%">
|
|
|
+ <el-table-column type="index" label="序号" width="60" header-align="center" align="center" />
|
|
|
+
|
|
|
+ <el-table-column label="JOB名称" align="center">
|
|
|
+ <template #default="scope">
|
|
|
+ <span>{{ scope.row.jobTitle }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column label="类型" align="center" width="90">
|
|
|
+ <template #default="scope">
|
|
|
+ <span v-if="scope.row.jobType === 1">Cron任务</span>
|
|
|
+ <span v-else> 循环任务 </span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column label="频次" align="center">
|
|
|
+ <template #default="scope">
|
|
|
+ <span>{{ scope.row.cycleTitle }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column label="JOB Class" align="center" width="220">
|
|
|
+ <template #default="scope">
|
|
|
+ <span>{{ scope.row.jobClass }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column label="参数" align="center" width="220">
|
|
|
+ <template #default="scope">
|
|
|
+ <span v-if="scope.row.jobType === 1">{{ scope.row.jobCron }}</span>
|
|
|
+ <span v-else>{{ scope.row.cyclePeriod }} {{ scope.row.cycleUnit }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column label="说明" header-align="left" align="left">
|
|
|
+ <template #default="scope">
|
|
|
+ <span>{{ scope.row.jobDesc }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column align="center" label="状态" width="150">
|
|
|
+ <template #default="scope">
|
|
|
+ <div>
|
|
|
+ <el-switch
|
|
|
+ v-model="scope.row.status"
|
|
|
+ active-text="启动"
|
|
|
+ inactive-text="停止"
|
|
|
+ :active-value="1"
|
|
|
+ :inactive-value="0"
|
|
|
+ @change="(status) => onChangeStatus(status, scope.row)"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column label="操作" width="250" align="center" fixed="right">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-button type="primary" size="small" plain @click="onJobEdit(scope.row)">
|
|
|
+ 编辑
|
|
|
+ </el-button>
|
|
|
+ <el-button v-if="!scope.row.isFixed" type="danger" size="small" plain @click="onJobDel(scope.row)">
|
|
|
+ 删除
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
</page-main>
|
|
|
+ <JobComponent ref="jobRef" @success="getData" />
|
|
|
</div>
|
|
|
</template>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+.absolute-container {
|
|
|
+ position: absolute;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+
|
|
|
+ .page-header {
|
|
|
+ margin-bottom: 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ .page-main {
|
|
|
+ // 让 page-main 的高度自适应
|
|
|
+ flex: 1;
|
|
|
+ overflow: auto;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+
|
|
|
+ .search-container {
|
|
|
+ margin-bottom: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|