Browse Source

vue3更改

master
si@aidatagov.com 2 weeks ago
parent
commit
c3ce7ba52b
  1. 132
      vue-fastapi-frontend/src/views/meta/metatask/dsDialog.vue
  2. 798
      vue-fastapi-frontend/src/views/meta/metatask/index.vue
  3. 144
      vue-fastapi-frontend/src/views/meta/metatask/logsDialog.vue
  4. 14
      vue-fastapi-frontend/src/views/meta/metatask/runDialog.vue

132
vue-fastapi-frontend/src/views/meta/metatask/dsDialog.vue

@ -1,6 +1,6 @@
<template> <template>
<el-dialog title="调度" :visible.sync="visible" width="700px" top="5vh" append-to-body> <el-dialog title="调度" v-model="visible" width="700px" top="5vh" append-to-body>
<el-form ref="form" :model="form" label-width="120px" style="margin: 10px;"> <el-form ref="formDS" :model="form" label-width="120px" style="margin: 10px;">
<!-- 日期范围 --> <!-- 日期范围 -->
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="24"> <el-col :span="24">
@ -95,66 +95,104 @@
</el-form> </el-form>
<!-- Footer 按钮 --> <!-- Footer 按钮 -->
<div slot="footer" class="dialog-footer" style="text-align: right;">
<el-button @click="visible = false"> </el-button>
<el-button type="primary" @click="handleds"> </el-button>
</div>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="handleds"> </el-button>
<el-button @click="visible = false"> </el-button>
</div>
</template>
<!-- Cron表达式生成器 --> <!-- Cron表达式生成器 -->
<el-dialog title="Cron表达式生成器" :visible.sync="openCron" append-to-body destroy-on-close class="scrollbar">
<crontab @hide="openCron=false" @fill="crontabFill" :expression="expression"></crontab> <el-dialog title="Cron表达式生成器" v-model="openCron" append-to-body destroy-on-close>
</el-dialog> <crontab ref="crontabRef" @hide="openCron=false" @fill="crontabFill" :expression="expression"></crontab>
</el-dialog>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import { ref, reactive, watch } from "vue";
import { dsmetatask } from "@/api/meta/metatask"; import { dsmetatask } from "@/api/meta/metatask";
import Crontab from '@/components/Crontab'; import Crontab from '@/components/Crontab'
export default { export default {
components: { Crontab }, components: { Crontab },
props: [ props: {
"processDefinitionCode", processDefinitionCode: String,
"warningGroupList", warningGroupList: Array,
"environmentList", environmentList: Array,
"workerGroupList" workerGroupList: Array
],
data() {
return {
visible: false, //
expression: "", //
openCron: false, // Cron
dateRange: [], //
form: {
processDefinitionCode: undefined,
warningGroupId: undefined,
environmentCode: undefined,
workerGroup: undefined,
crontab: "",
},
};
}, },
methods: { setup(props) {
show(ids) { // Reactive state with `reactive` and `ref`
this.form.processDefinitionCode = Number(this.processDefinitionCode[0]); const visible = ref(false);
this.visible = true; const openCron = ref(false);
}, const expression = ref("");
handleShowCron() { const dateRange = ref([]);
this.expression = this.form.crontab; const form = reactive({
this.openCron = true; processDefinitionCode: undefined,
}, warningGroupId: undefined,
crontabFill(value) { environmentCode: undefined,
this.form.crontab = value; workerGroup: undefined,
}, crontab: "",
handleds() { });
dsmetatask(this.addDateRange(this.form, this.dateRange)).then((response) => {
// Watch for changes in props to update internal state if necessary
watch(() => props.processDefinitionCode, (newVal) => {
form.processDefinitionCode = Number(newVal[0]);
});
// Methods
const show = (ids) => {
form.processDefinitionCode = Number(ids[0]);
visible.value = true;
};
const handleShowCron = () => {
expression.value = form.crontab;
openCron.value = true;
};
const crontabFill = (value) => {
form.crontab = value;
};
const handleds = () => {
dsmetatask(addDateRange(form, dateRange.value)).then((response) => {
if (response.success) { if (response.success) {
this.visible = false; visible.value = false;
this.$modal.msgSuccess("运行成功"); this.$modal.msgSuccess("运行成功");
} }
}); });
}, };
},
// Helper function to add the date range to the form
const addDateRange = (form, dateRange) => {
return {
...form,
beginTime: dateRange[0],
endTime: dateRange[1],
};
};
// Return the state and methods to the template
return {
visible,
openCron,
expression,
dateRange,
form,
show,
handleShowCron,
crontabFill,
handleds,
addDateRange,
};
}
}; };
</script> </script>

798
vue-fastapi-frontend/src/views/meta/metatask/index.vue

File diff suppressed because it is too large

144
vue-fastapi-frontend/src/views/meta/metatask/logsDialog.vue

@ -1,12 +1,15 @@
<template> <template>
<el-dialog :visible.sync="visible" width="80%" top="5vh" append-to-body> <el-dialog v-model="visible" width="80%" top="5vh" append-to-body>
<div style="display: flex; flex-direction: column; gap: 10px;">
<div style="display: flex; flex-direction: column; gap: 10px;">
<!-- 第一部分实例表格带分页 --> <!-- 第一部分实例表格带分页 -->
<el-card shadow="hover"> <el-card shadow="hover">
<div slot="header" class="clearfix"> <template v-slot:header>
<span>实例列表</span> <div class="clearfix">
</div> <span>实例列表</span>
</div>
</template>
<el-table <el-table
:data="instances" :data="instances"
border border
@ -16,23 +19,25 @@
> >
<el-table-column prop="id" label="实例ID" width="100" /> <el-table-column prop="id" label="实例ID" width="100" />
<el-table-column prop="name" label="实例名称" /> <el-table-column prop="name" label="实例名称" />
<el-table-column prop="state" label="状态" width="100" > <el-table-column prop="state" label="状态" width="100">
<template slot-scope="scope"> <template v-slot:default="scope">
<dict-tag <dict-tag
:options="dict.type.meta_instance_status" :options="meta_instance_status"
:value="scope.row.state" :value="scope.row.state"
/> />
</template> </template>
</el-table-column> <el-table-column prop="startTime" label="开始时间" width="200" /> </el-table-column>
<el-table-column prop="startTime" label="开始时间" width="200" />
<el-table-column prop="endTime" label="结束时间" width="200" /> <el-table-column prop="endTime" label="结束时间" width="200" />
<el-table-column prop="duration" label="运行时长" width="80" /> <el-table-column prop="duration" label="运行时长" width="80" />
</el-table> </el-table>
<el-pagination <el-pagination
background background
layout="prev, pager, next" layout="prev, pager, next"
:total="total" :total="total"
:page-size="pageSize" :page-size="pageSize"
:current-page.sync="currentPage" :current-page="currentPage"
@current-change="fetchInstances" @current-change="fetchInstances"
style="margin-top: 10px; text-align: right;" style="margin-top: 10px; text-align: right;"
/> />
@ -40,34 +45,39 @@
<!-- 第二部分任务节点表格 --> <!-- 第二部分任务节点表格 -->
<el-card shadow="hover"> <el-card shadow="hover">
<div slot="header" class="clearfix"> <template v-slot:header>
<span>任务节点</span> <div class="clearfix">
</div> <span>任务节点</span>
</div>
</template>
<el-table <el-table
:data="taskNodes" :data="taskNodesData"
border border
style="width: 100%" style="width: 100%"
@row-click="handleSecondRowClick" @row-click="handleSecondRowClick"
:height="300" :height="300"
> >
<el-table-column prop="name" label="节点名称"/> <el-table-column prop="name" label="节点名称" />
<el-table-column prop="taskType" label="任务类型" /> <el-table-column prop="taskType" label="任务类型" />
<el-table-column prop="state" label="状态" width="100" > <el-table-column prop="state" label="状态" width="100">
<template slot-scope="scope"> <template v-slot:default="scope">
<dict-tag <dict-tag
:options="dict.type.meta_instance_status" :options="meta_instance_status"
:value="scope.row.state" :value="scope.row.state"
/> />
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-card> </el-card>
<!-- 第三部分日志内容 --> <!-- 第三部分日志内容 -->
<el-card shadow="hover"> <el-card shadow="hover">
<div slot="header" class="clearfix"> <template v-slot:header>
<span>日志详情</span> <div class="clearfix">
</div> <span>日志详情</span>
</div>
</template>
<el-input <el-input
type="textarea" type="textarea"
v-model="logDetailsContent" v-model="logDetailsContent"
@ -81,53 +91,61 @@
</el-dialog> </el-dialog>
</template> </template>
<script> <script setup>
import { listInstances, taskNodes, logDetails } from "@/api/meta/metatask"; import { listInstances, taskNodes, logDetails } from "@/api/meta/metatask";
import { ref } from "vue";
const { proxy } = getCurrentInstance();
const { meta_instance_status} = proxy.useDict("meta_instance_status");
// Define props
const props = defineProps({
defindName: String, // Assuming defindName is a string, you can adjust based on actual type
});
export default { // Define reactive state
props: ["defindName"], const visible = ref(false); //
dicts:["meta_instance_status"], const instances = ref([]); //
data() { const total = ref(0); //
return { const pageSize = ref(10); //
visible: false, // const currentPage = ref(1); //
instances: [], // const taskNodesData = ref([]); //
total: 0, // const logDetailsContent = ref(""); //
pageSize: 10, //
currentPage: 1, // defineExpose({
taskNodes: [], // show(name) {
logDetailsContent: "", // visible.value = true;
}; console.log(visible.value,name, "visible");
}, fetchInstances(name);
methods: {
//
show(defindName) {
this.visible = true;
this.fetchInstances(defindName);
},
//
fetchInstances(defindName) {
listInstances({ page_num: this.currentPage, page_size: this.pageSize, searchVal: defindName }).then((response) => {
console.log(response, "response");
this.instances = response.rows;
this.total = response.total;
});
},
//
handleFirstRowClick(row) {
taskNodes(row.id).then((response) => {
this.taskNodes = response.rows;
});
},
//
handleSecondRowClick(row) {
logDetails(row.id).then((response) => {
this.logDetailsContent = response.data;
});
},
}, },
});
// Fetch first table data
const fetchInstances = (defindName) => {
listInstances({
page_num: currentPage.value,
page_size: pageSize.value,
searchVal: defindName,
}).then((response) => {
console.log(response, "response");
instances.value = response.rows;
total.value = response.total;
});
};
// Handle row click in the first table and fetch task node data
const handleFirstRowClick = (row) => {
taskNodes(row.id).then((response) => {
taskNodesData.value = response.rows;
});
};
// Handle row click in the second table and fetch log details
const handleSecondRowClick = (row) => {
logDetails(row.id).then((response) => {
logDetailsContent.value = response.data;
});
}; };
</script> </script>
<style scoped> <style scoped>
/* 添加全局间距和样式优化 */ /* 添加全局间距和样式优化 */
.el-card { .el-card {

14
vue-fastapi-frontend/src/views/meta/metatask/runDialog.vue

@ -1,6 +1,6 @@
<template> <template>
<!-- 运行 --> <!-- 运行 -->
<el-dialog title="运行" :visible.sync="visible" width="500px" top="5vh" append-to-body> <el-dialog title="运行" v-model="visible" width="500px" top="5vh" append-to-body>
<el-form ref="form" :model="form" label-width="120px" class="dialog-form"> <el-form ref="form" :model="form" label-width="120px" class="dialog-form">
<!-- Worker分组 --> <!-- Worker分组 -->
<el-row :gutter="20"> <el-row :gutter="20">
@ -52,10 +52,13 @@
</el-form> </el-form>
<!-- Footer 按钮 --> <!-- Footer 按钮 -->
<div slot="footer" class="dialog-footer">
<el-button @click="visible = false"> </el-button> <template #footer>
<el-button type="primary" @click="handleRun"> </el-button> <div class="dialog-footer">
</div> <el-button type="primary" @click="handleRun"> </el-button>
<el-button @click="visible = false"> </el-button>
</div>
</template>
</el-dialog> </el-dialog>
</template> </template>
@ -77,6 +80,7 @@ export default {
}, },
methods: { methods: {
show(ids) { show(ids) {
this.form.processDefinitionCode = Number(this.processDefinitionCode[0]); this.form.processDefinitionCode = Number(this.processDefinitionCode[0]);
this.visible = true; this.visible = true;
}, },

Loading…
Cancel
Save