mirror of
https://github.com/lzh-1625/go_process_manager.git
synced 2025-10-06 00:16:53 +08:00
add task ui
This commit is contained in:
8
resources/src/configs/menus/task.menus.ts
Normal file
8
resources/src/configs/menus/task.menus.ts
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
export default [
|
||||||
|
{
|
||||||
|
icon: "mdi-application-braces",
|
||||||
|
name: "task-page",
|
||||||
|
key: "menu.task",
|
||||||
|
link: "/task",
|
||||||
|
},
|
||||||
|
];
|
@@ -5,8 +5,8 @@ import menuCharts from "./menus/charts.menu";
|
|||||||
import menuUML from "./menus/uml.menu";
|
import menuUML from "./menus/uml.menu";
|
||||||
import menuLanding from "./menus/landing.menu";
|
import menuLanding from "./menus/landing.menu";
|
||||||
import menuData from "./menus/data.menu";
|
import menuData from "./menus/data.menu";
|
||||||
import menuAi from "./menus/ai.menu";
|
import menuProcess from "./menus/process.menus";
|
||||||
import menuProcess from "./menus/process.menus"
|
import menuTask from "./menus/task.menus";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
menu: [
|
menu: [
|
||||||
@@ -26,6 +26,10 @@ export default {
|
|||||||
text: "process",
|
text: "process",
|
||||||
items: menuProcess,
|
items: menuProcess,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
text: "task",
|
||||||
|
items: menuTask,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
text: "Apps",
|
text: "Apps",
|
||||||
items: menuApps,
|
items: menuApps,
|
||||||
|
@@ -10,6 +10,7 @@ import UmlRoutes from "./uml.routes";
|
|||||||
import AppsRoutes from "./apps.routes";
|
import AppsRoutes from "./apps.routes";
|
||||||
import DataRoutes from "./data.routes";
|
import DataRoutes from "./data.routes";
|
||||||
import ProcessRoutes from "./process.routes";
|
import ProcessRoutes from "./process.routes";
|
||||||
|
import TaskRoutes from "./task.routes";
|
||||||
|
|
||||||
export const routes = [
|
export const routes = [
|
||||||
{
|
{
|
||||||
@@ -41,7 +42,8 @@ export const routes = [
|
|||||||
...UmlRoutes,
|
...UmlRoutes,
|
||||||
...AppsRoutes,
|
...AppsRoutes,
|
||||||
...DataRoutes,
|
...DataRoutes,
|
||||||
...ProcessRoutes
|
...ProcessRoutes,
|
||||||
|
...TaskRoutes
|
||||||
];
|
];
|
||||||
|
|
||||||
// 动态路由,基于用户权限动态去加载
|
// 动态路由,基于用户权限动态去加载
|
||||||
|
12
resources/src/router/task.routes.ts
Normal file
12
resources/src/router/task.routes.ts
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
// users Data Page
|
||||||
|
export default [
|
||||||
|
{
|
||||||
|
path: "/task",
|
||||||
|
component: () => import("@/views/task/Task.vue"),
|
||||||
|
meta: {
|
||||||
|
requiresAuth: true,
|
||||||
|
layout: "landing",
|
||||||
|
category: "Data",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="toolbar">
|
<!-- <div class="toolbar">
|
||||||
<ConfirmButton @confirm="startAll" color="#3CB371">全部启动</ConfirmButton>
|
<ConfirmButton @confirm="startAll" color="#3CB371">全部启动</ConfirmButton>
|
||||||
<ConfirmButton @confirm="killAll" color="#CD5555">全部停止</ConfirmButton>
|
<ConfirmButton @confirm="killAll" color="#CD5555">全部停止</ConfirmButton>
|
||||||
<v-btn
|
<v-btn
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
@click="processCreateComponent?.createProcessDialog()"
|
@click="processCreateComponent?.createProcessDialog()"
|
||||||
>创建<v-icon dark right> mdi-plus-circle </v-icon>
|
>创建<v-icon dark right> mdi-plus-circle </v-icon>
|
||||||
</v-btn>
|
</v-btn>
|
||||||
</div>
|
</div> -->
|
||||||
<v-container>
|
<v-container>
|
||||||
<!-- 顶部工具栏 -->
|
<!-- 顶部工具栏 -->
|
||||||
|
|
||||||
@@ -100,7 +100,6 @@ onMounted(() => {
|
|||||||
gap: 10px;
|
gap: 10px;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
padding: 4px 0;
|
padding: 4px 0;
|
||||||
border-bottom: 1px solid #eee; /* 轻量分隔线 */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 原来的网格样式 */
|
/* 原来的网格样式 */
|
||||||
@@ -127,4 +126,15 @@ onMounted(() => {
|
|||||||
transform: translateY(-6px);
|
transform: translateY(-6px);
|
||||||
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);
|
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.fab {
|
||||||
|
position: fixed;
|
||||||
|
bottom: 24px;
|
||||||
|
right: 24px;
|
||||||
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
|
||||||
|
z-index: 999;
|
||||||
|
border-radius: 50%;
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
120
resources/src/views/task/Task.vue
Normal file
120
resources/src/views/task/Task.vue
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
<template>
|
||||||
|
<v-card class="pa-4">
|
||||||
|
<v-card-title>任务明细(单行)</v-card-title>
|
||||||
|
|
||||||
|
<v-data-table
|
||||||
|
:headers="headers"
|
||||||
|
:items="items"
|
||||||
|
:items-per-page="5"
|
||||||
|
item-key="id"
|
||||||
|
class="elevation-1"
|
||||||
|
>
|
||||||
|
<!-- 自定义列渲染 -->
|
||||||
|
<template #item.nextId="{ item }">
|
||||||
|
<span>{{ item.nextId === null ? "-" : item.nextId }}</span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #item.enable="{ item }">
|
||||||
|
<v-chip size="small" variant="tonal">{{
|
||||||
|
item.enable ? "启用" : "未启用"
|
||||||
|
}}</v-chip>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #item.apiEnable="{ item }">
|
||||||
|
<v-chip size="small" variant="tonal">{{
|
||||||
|
item.apiEnable ? "可用" : "不可用"
|
||||||
|
}}</v-chip>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #item.running="{ item }">
|
||||||
|
<v-chip size="small" variant="tonal">{{
|
||||||
|
item.running ? "运行中" : "未运行"
|
||||||
|
}}</v-chip>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #item.startTime="{ item }">
|
||||||
|
<span>{{ formatStartTime(item.startTime) }}</span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #item.key="{ item }">
|
||||||
|
<code>{{ item.key }}</code>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!-- 如果需要可以加 actions 列 -->
|
||||||
|
<template #body.append>
|
||||||
|
<!-- 这里可以放底部说明或按钮 -->
|
||||||
|
</template>
|
||||||
|
</v-data-table>
|
||||||
|
</v-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref } from "vue";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义列头:title -> 显示标题(中文),key -> 对应数据字段名
|
||||||
|
* (Vuetify 3 的 headers 使用 title/key 风格)
|
||||||
|
*/
|
||||||
|
const headers = [
|
||||||
|
{ title: "任务ID", key: "id" },
|
||||||
|
{ title: "任务名", key: "processName" },
|
||||||
|
{ title: "流程 ID", key: "processId" },
|
||||||
|
{ title: "条件", key: "condition" },
|
||||||
|
{ title: "下一步 ID", key: "nextId" },
|
||||||
|
{ title: "触发进程", key: "targetName" },
|
||||||
|
{ title: "触发名称", key: "triggerName" },
|
||||||
|
{ title: "操作", key: "operation" },
|
||||||
|
{ title: "触发事件", key: "triggerEvent" },
|
||||||
|
{ title: "触发目标", key: "triggerTarget" },
|
||||||
|
{ title: "操作目标", key: "operationTarget" },
|
||||||
|
{ title: "定时任务", key: "cron" },
|
||||||
|
{ title: "是否启用", key: "enable" },
|
||||||
|
{ title: "API 可用", key: "apiEnable" },
|
||||||
|
{ title: "开始时间", key: "startTime" },
|
||||||
|
{ title: "状态", key: "running" },
|
||||||
|
];
|
||||||
|
|
||||||
|
const rawData = {
|
||||||
|
id: 1,
|
||||||
|
processId: 0,
|
||||||
|
condition: 3,
|
||||||
|
nextId: null,
|
||||||
|
operation: 0,
|
||||||
|
triggerEvent: null,
|
||||||
|
triggerTarget: null,
|
||||||
|
operationTarget: 112,
|
||||||
|
cron: "",
|
||||||
|
enable: false,
|
||||||
|
apiEnable: true,
|
||||||
|
key: "bhCSw2QDdu",
|
||||||
|
processName: "",
|
||||||
|
targetName: "push",
|
||||||
|
triggerName: "",
|
||||||
|
startTime: "0001-01-01T00:00:00Z",
|
||||||
|
running: false,
|
||||||
|
};
|
||||||
|
|
||||||
|
// 单行数组(v-data-table 接受 items 数组)
|
||||||
|
const items = ref([rawData]);
|
||||||
|
|
||||||
|
/** 格式化开始时间(兼容 null / 空字符串) */
|
||||||
|
function formatStartTime(v) {
|
||||||
|
if (!v) return "-";
|
||||||
|
try {
|
||||||
|
const d = new Date(v);
|
||||||
|
if (Number.isNaN(d.getTime())) return v;
|
||||||
|
return d.toLocaleString();
|
||||||
|
} catch (e) {
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
code {
|
||||||
|
font-size: 0.85rem;
|
||||||
|
background: rgba(0, 0, 0, 0.04);
|
||||||
|
padding: 2px 6px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
</style>
|
Reference in New Issue
Block a user