From 7a3223845bec65f25d231621946feb7af46ce867 Mon Sep 17 00:00:00 2001 From: "si@aidatagov.com" Date: Thu, 15 Jan 2026 01:27:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module_admin/dao/datasec_config_dao.py | 5 +- .../src/views/meta/metatask/index.vue | 58 +++++++++++---- .../src/views/meta/metatask/secConfig.vue | 51 +++++++++---- .../metadataConfig/taskBizConfig/index.vue | 71 ++++++++++++------- 4 files changed, 129 insertions(+), 56 deletions(-) diff --git a/vue-fastapi-backend/module_admin/dao/datasec_config_dao.py b/vue-fastapi-backend/module_admin/dao/datasec_config_dao.py index 5e6471e..716d149 100644 --- a/vue-fastapi-backend/module_admin/dao/datasec_config_dao.py +++ b/vue-fastapi-backend/module_admin/dao/datasec_config_dao.py @@ -1,6 +1,6 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.future import select -from sqlalchemy import update, delete +from sqlalchemy import update, delete,desc from datetime import datetime, time from typing import List @@ -33,7 +33,8 @@ class DatasecConfigDao: datetime.combine(datetime.strptime(query_object.begin_time, '%Y-%m-%d'), time(0, 0, 0)), datetime.combine(datetime.strptime(query_object.end_time, '%Y-%m-%d'), time(23, 59, 59)), ) if query_object.begin_time and query_object.end_time else True - ).order_by(DatasecConfig.onum) + ) .order_by(desc(DatasecConfig.create_time)) + return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) diff --git a/vue-fastapi-frontend/src/views/meta/metatask/index.vue b/vue-fastapi-frontend/src/views/meta/metatask/index.vue index f0897e8..7d417d8 100644 --- a/vue-fastapi-frontend/src/views/meta/metatask/index.vue +++ b/vue-fastapi-frontend/src/views/meta/metatask/index.vue @@ -117,7 +117,7 @@ plain icon="edit" - :disabled="singleOne" + :disabled="multiple" @click="handleUpdate" v-hasPermi="['meta:metatask:edit']" >修改 - +
@@ -899,28 +898,57 @@ const handleLogRow = (row) => { }; const submitForm = async () => { + proxy.$refs["taskForm"].validate(async (valid) => { + if (!valid) return; - proxy.$refs["taskForm"].validate(async (valid) => { - if (valid) { - const submitForm = { ...form.value }; - submitForm.dbCode = clickNode.value.type; - submitForm.dbRName = clickNode.value.name; - if (submitForm.metataskId !== undefined) { + const submitData = { ...form.value }; - await updatemetatask(submitForm); - proxy.$modal.msgSuccess("修改成功"); + + const isOnline = submitData.status === 'ONLINE'; + const metataskId = submitData.metataskId; + + // ⭐ ONLINE 状态:先确认 → 下线 → 再保存 + if (isOnline) { + try { + await proxy.$modal.confirm( + "该任务当前为【上线状态】,提交修改将导致任务下线,是否确认继续?" + ); + + // 1️⃣ 先下线 + await downOrUpmetatask(String(metataskId), "OFFLINE"); + + + submitData.status='OFFLINE' + // 2️⃣ 再保存 + await updatemetatask(submitData); + + proxy.$modal.msgSuccess("修改成功,任务已下线"); open.value = false; getList(); + } catch (e) { + // 用户取消 或 接口异常 + return; + } + } + // ⭐ 非 ONLINE:正常保存 + else { + if (metataskId !== undefined) { + await updatemetatask(submitData); + proxy.$modal.msgSuccess("修改成功"); } else { - await addmetatask(submitForm); + submitData.dbRName = clickNode.value.name; + submitData.dbCode = clickNode.value.type; + await addmetatask(submitData); proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); } + + open.value = false; + getList(); } }); }; + const handleDelete = async (row) => { let isDelete = true; if(row.metataskId!=null){ diff --git a/vue-fastapi-frontend/src/views/meta/metatask/secConfig.vue b/vue-fastapi-frontend/src/views/meta/metatask/secConfig.vue index edaddb5..52bca0e 100644 --- a/vue-fastapi-frontend/src/views/meta/metatask/secConfig.vue +++ b/vue-fastapi-frontend/src/views/meta/metatask/secConfig.vue @@ -61,8 +61,7 @@ type="success" plain icon="edit" - - :disabled="singleOne" + :disabled="single" @click="handleUpdate" v-hasPermi="['meta:metatask:edit']" >修改 @@ -665,27 +663,50 @@ const handleLogRow = (row) => { }; const submitForm = async () => { + proxy.$refs["taskForm"].validate(async (valid) => { + if (!valid) return; + + const submitData = { ...form.value }; + const isEdit = submitData.onum !== undefined; + const isOnline = submitData.status === 'ONLINE'; - proxy.$refs["taskForm"].validate(async (valid) => { - if (valid) { - const submitForm = { ...form.value }; + try { + // ⭐ 编辑 + ONLINE:保存时提示 → 下线 → 再保存 + if (isEdit && isOnline) { + await proxy.$modal.confirm( + "该任务当前为【上线状态】,提交修改将导致任务下线,是否确认继续?" + ); - if (submitForm.onum !== undefined) { + // 1️⃣ 先下线 + await downOrUpmetatask(String(submitData.onum), "OFFLINE"); - await editDatasecConfig(submitForm); + // 2️⃣ 同步状态后保存 + submitData.status = 'OFFLINE'; + await editDatasecConfig(submitData); + + proxy.$modal.msgSuccess("修改成功,任务已下线"); + } + // ⭐ 编辑 + 非 ONLINE + else if (isEdit) { + await editDatasecConfig(submitData); proxy.$modal.msgSuccess("修改成功"); - open.value = false; - getList(); - } else { - await addDatasecConfig(submitForm); + } + // ⭐ 新增 + else { + await addDatasecConfig(submitData); proxy.$modal.msgSuccess("新增成功"); - open.value = false; - getList(); } + + open.value = false; + getList(); + } catch (e) { + // 用户取消确认 / 接口异常 → 不继续 + return; } }); }; + const handleDelete = async (row) => { let isDelete = true; if(row.onum!=null){ diff --git a/vue-fastapi-frontend/src/views/metadataConfig/taskBizConfig/index.vue b/vue-fastapi-frontend/src/views/metadataConfig/taskBizConfig/index.vue index 94b1fa2..ad613eb 100644 --- a/vue-fastapi-frontend/src/views/metadataConfig/taskBizConfig/index.vue +++ b/vue-fastapi-frontend/src/views/metadataConfig/taskBizConfig/index.vue @@ -618,10 +618,7 @@ function openEditDialog(row) { ElMessage.warning('请选择一条记录进行编辑') return } - if (row.status !== 'OFFLINE') { - ElMessage.warning('仅支持下线状态的任务进行修改') - return - } + title.value = '编辑标签任务' Object.assign(form, row) loadRightTable(row.onum) @@ -648,30 +645,56 @@ function handleRowDelete(row) { .catch(() => {}) } -function submitForm() { - bizFormRef.value.validate(async valid => { - if (!valid) return - let tabonums=[] - rightTableData.value.forEach(item=>{ - tabonums.push(item.onum) +const submitForm = async () => { + bizFormRef.value.validate(async (valid) => { + if (!valid) return; + + // 组装提交数据 + const tabonums = rightTableData.value.map(item => item.onum); + const submitData = { + ...form, + tabOnumList: tabonums + }; + + const isEdit = !!submitData.onum; + const isOnline = submitData.status === 'ONLINE'; - }) - console.log( rightTableData.value,"sss") - const submitData = { ...form,tabOnumList:tabonums } try { - if (title.value.includes('新增')) { - await addTaskBizConfig(submitData) - ElMessage.success('新增成功') - } else { - await updateTaskBizConfig(submitData) - ElMessage.success('编辑成功') + // ⭐ 编辑 + ONLINE:保存时确认 → 下线 → 保存 + if (isEdit && isOnline) { + await proxy.$modal.confirm( + '该任务当前为【上线状态】,保存修改将导致任务下线,是否确认继续?' + ); + + // 1️⃣ 先下线 + await downOrUpmetatask(submitData.onum, 'OFFLINE'); + + // 2️⃣ 状态同步为 OFFLINE 再保存 + submitData.status = 'OFFLINE'; + await updateTaskBizConfig(submitData); + + proxy.$modal.msgSuccess('修改成功,任务已下线'); } - open.value = false - getList() - } catch { + // ⭐ 编辑 + 非 ONLINE + else if (isEdit) { + await updateTaskBizConfig(submitData); + proxy.$modal.msgSuccess('修改成功'); + } + // ⭐ 新增 + else { + await addTaskBizConfig(submitData); + proxy.$modal.msgSuccess('新增成功'); + } + + open.value = false; + getList(); + } catch (e) { + // 用户取消确认 or 接口异常 → 直接终止 + return; } - }) -} + }); +}; + function handleClose(done) { bizFormRef.value.resetFields()