diff --git a/src/page/main/auto-maintenance/task-history/list/index.vue b/src/page/main/auto-maintenance/task-history/list/index.vue index eff4b3697f119502a602b519b4f83f01c0cdf547..7baa9d6acf34b3d00fa2022b1d212d60fcb2c9f5 100644 --- a/src/page/main/auto-maintenance/task-history/list/index.vue +++ b/src/page/main/auto-maintenance/task-history/list/index.vue @@ -21,7 +21,9 @@ {{ dateStringTransform(row.exec_start_time) }} diff --git a/src/page/main/auto-maintenance/task-history/list/record/index.vue b/src/page/main/auto-maintenance/task-history/list/record/index.vue index 9aa110459bbe19e93278117ef9685f907d5cde76..722d5422eee1174b9ad86dd1eaef0b943542045a 100644 --- a/src/page/main/auto-maintenance/task-history/list/record/index.vue +++ b/src/page/main/auto-maintenance/task-history/list/record/index.vue @@ -3,16 +3,50 @@
- 返回 - 执行ping命令 / 执行说明1 + + 返回 + + {{ state.taskName }} / {{ state.desc }}
- +
- 重新执行 + 重新执行
+ + +
+
+ 向执行脚本传递额外的命令行变量。这是 + ansible-playbook 的 -e 或 --extra-vars 命令行参数。使用 YAML 或 JSON 提供键/值对,此项为非必填项。 +
+ +
+
+ +
+
+ +
@@ -29,21 +63,61 @@ const router = useRouter(); const route = useRoute(); const state = reactive({ time: "", + state: -1, logArr: [], + taskName: "", + desc: "", + useScriptShow: false, + useType: 0, + useText: "", + useData: ["yaml", "json"], }); -const getLog = () => { - axios.get(`/v1/api/automated_mainten/task_history/task_exec_log?id=${route.query.id}`).then((res) => { +const getLog = (id) => { + axios.get(`/v1/api/automated_mainten/task_history/task_exec_log?id=${id}`).then((res) => { if (res.data.code == 200) { let data = res.data.data; state.time = secondeToHour(data.exec_time); state.logArr = data.exec_log.split("\n"); + state.state = data.state; + state.taskName = data.task_name; + state.desc = data.exec_desc; + + if (data.state == 0) { + getLog(id); + } } }); }; +const cancelUse = () => { + state.useScriptShow = false; +}; + +const confirmUse = () => { + state.useScriptShow = false; + let params = new FormData(); + params.append("task_id", route.query.task_id); + params.append("type", state.useType + 1); + params.append("value", state.useText); + axios + .post(`/v1/api/automated_mainten/task_manage/exec/script`, params) + .then((res) => { + if (res.data.code == 200) { + router.push(`/auto-maintenance/task-history/list/record?id=${res.data.data}&task_id=${route.query.task_id}`); + getLog(res.data.data); + } else { + ElMessage.error(res.data.msg); + } + }) + .finally(() => { + state.useType = 0; + state.useText = ""; + }); +}; + onBeforeMount(() => { - getLog(); + getLog(route.query.id); }); @@ -76,4 +150,14 @@ onBeforeMount(() => { float: right; } } + +.dialog-tips { + height: 38px; + line-height: 38px; + background-color: #f7f7f9; + border-radius: 4px; + font-size: 14px; + color: #404a62; + margin-bottom: 16px; +} diff --git a/src/page/main/auto-maintenance/task-manage/add/finish-use.vue b/src/page/main/auto-maintenance/task-manage/add/finish-use.vue index 0cf4212d5904ac8625da2d36e6c5aa48b3e14713..3ca75b64819703469535c26a1b7434815837e625 100644 --- a/src/page/main/auto-maintenance/task-manage/add/finish-use.vue +++ b/src/page/main/auto-maintenance/task-manage/add/finish-use.vue @@ -4,10 +4,13 @@ 已经过:{{ props.time }} -
+
+ 执行中 +
+
执行成功
-
+
执行失败
@@ -15,7 +18,7 @@
{{ i + 1 }} - +
@@ -37,8 +40,8 @@ const props = defineProps({ default: () => [], }, state: { - type: Boolean, - default: true, + type: Number, + default: 1, }, time: { type: String, @@ -80,6 +83,9 @@ const props = defineProps({ .fail { background-color: #fbeeeb; } + .using { + background-color: #edf0ff; + } } .log-bg { diff --git a/src/page/main/auto-maintenance/task-manage/add/index.vue b/src/page/main/auto-maintenance/task-manage/add/index.vue index 74727257dc4ccf2d991e05ac58f58d4e82b5513d..5b243d34985296693816f88dbd868a5a80b9ae2e 100644 --- a/src/page/main/auto-maintenance/task-manage/add/index.vue +++ b/src/page/main/auto-maintenance/task-manage/add/index.vue @@ -62,8 +62,9 @@ + :state="state.useStatus" + :codes="state.finishUseData.logArr" + :time="state.finishUseData.time">
取消 @@ -72,7 +73,7 @@ 保存 立即执行 返回列表 - 重新执行 + 重新执行
@@ -108,6 +109,7 @@ import baseInfo from "./base-info.vue"; import useContent from "./use-content.vue"; import finish from "./finish.vue"; import finishUse from "./finish-use.vue"; +import { secondeToHour } from "@/services/helper.js"; const router = useRouter(); const route = useRoute(); @@ -122,9 +124,16 @@ const state = reactive({ useData: ["yaml", "json"], useText: "", isSave: true, + isReuse: false, status: true, + useStatus: -1, pageType: 0, //0新增,1编辑,2复制 loadComponents: false, //控制子组件的加载 + taskId: "", + finishUseData: { + time: "", + logArr: [], + }, }); const cancel = () => { @@ -153,7 +162,15 @@ const saveTask = async () => { .then(() => { step.value = 3; if (state.pageType == 0 || state.pageType == 2) { - postTask(); + postTask().then((res) => { + if (res.data.code == 200) { + state.status = true; + ElMessage.success("保存成功"); + } else { + state.status = false; + ElMessage.error(res.data.msg); + } + }); } else if (state.pageType == 1) { editTask(); } @@ -182,23 +199,13 @@ const editTask = () => { }; const postTask = () => { - axios - .post(`/v1/api/automated_mainten/task_manage/add`, { - task_name: state.data.name, - task_desc: state.data.desc, - yaml_desc: state.data.useText, - yaml_url: JSON.stringify(state.data.doc_file), - host_group_id: state.data.pcName, - }) - .then((res) => { - if (res.data.code == 200) { - state.status = true; - ElMessage.success("保存成功"); - } else { - state.status = false; - ElMessage.error(res.data.msg); - } - }); + return axios.post(`/v1/api/automated_mainten/task_manage/add`, { + task_name: state.data.name, + task_desc: state.data.desc, + yaml_desc: state.data.useText, + yaml_url: JSON.stringify(state.data.doc_file), + host_group_id: state.data.pcName, + }); }; const useScript = async () => { @@ -217,15 +224,65 @@ const cancelUse = () => { state.useScriptShow = false; }; +//重新执行 +const reUseScript = () => { + state.useScriptShow = true; + state.isReuse = true; +}; + const confirmUse = () => { state.useScriptShow = false; state.isSave = false; step.value = 3; - // TODO:调用接口立即执行 - postScript(); + if (state.isReuse) { + postScript(state.taskId); + } else { + postTask().then((res) => { + if (res.data.code == 200) { + state.taskId = res.data.data; + postScript(res.data.data); + } else { + ElMessage.error(res.data.msg); + } + }); + } +}; + +const getLog = (id) => { + axios.get(`/v1/api/automated_mainten/task_history/task_exec_log?id=${id}`).then((res) => { + if (res.data.code == 200) { + let data = res.data.data; + state.finishUseData.time = secondeToHour(data.exec_time); + state.finishUseData.logArr = data.exec_log.split("\n"); + state.useStatus = data.state; + + if (data.state == 0) { + getLog(id); + } + } + }); }; -const postScript = () => {}; +const postScript = (task_id) => { + let params = new FormData(); + params.append("task_id", task_id); + params.append("type", state.useType + 1); + params.append("value", state.useText); + axios + .post(`/v1/api/automated_mainten/task_manage/exec/script`, params) + .then((res) => { + if (res.data.code == 200) { + getLog(res.data.data); + } else { + state.useStatus = 2; + ElMessage.error(res.data.msg); + } + }) + .finally(() => { + state.useType = 0; + state.useText = ""; + }); +}; const clearData = () => { baseInfoRef.value.clear(); @@ -233,6 +290,9 @@ const clearData = () => { state.data = {}; step.value = 1; state.loadComponents = false; + state.isReuse = false + state.useStatus = -1 + state.taskId = '' init(); }; diff --git a/src/page/main/auto-maintenance/task-manage/index.vue b/src/page/main/auto-maintenance/task-manage/index.vue index 638680be4bbb885f07e827548b82504319f97f11..d9780c5086b5ba6f778b56470a3760fa3d61e756 100644 --- a/src/page/main/auto-maintenance/task-manage/index.vue +++ b/src/page/main/auto-maintenance/task-manage/index.vue @@ -92,7 +92,12 @@ - +
向执行脚本传递额外的命令行变量。这是 @@ -172,6 +177,7 @@ const state = reactive({ dialogDelete: false, // 删除弹窗 useScriptShow: false, useType: 0, + useText: "", useData: ["yaml", "json"], deleteType: 0, //0单个删除,1批量删除 }); @@ -187,6 +193,25 @@ const cancelUse = () => { const confirmUse = () => { state.useScriptShow = false; + let params = new FormData(); + params.append("task_id", state.actionRow.id); + params.append("type", state.useType + 1); + params.append("value", state.useText); + axios + .post(`/v1/api/automated_mainten/task_manage/exec/script`, params) + .then((res) => { + if (res.data.code == 200) { + ElMessage.success("执行成功"); + router.push(`/auto-maintenance/task-history/list/record?id=${res.data.data}`); + } else { + ElMessage.error(res.data.msg); + } + }) + .finally(() => { + state.useType = 0; + state.useText = ""; + state.actionRow = null; + }); }; const deleteRow = (row) => {