瀏覽代碼

fix(schedule): 修复计划管理中状态限制功能

- 在右键菜单中添加已排期状态检查,非100状态时禁用取消计划选项
- 为删除按钮添加v-if条件,仅在任务状态为100时显示删除按钮
- 在handleDeleteTask方法中添加状态验证,阻止删除非已排期状态的任务
- 在批量删除操作中过滤非已排期状态任务并显示警告信息
- 为取消计划功能添加状态检查逻辑,确保只有已排期状态可被取消
- 添加CSS样式使禁用状态的菜单项呈现灰色不可点击效果
- 统一两个页面(pipeindex.vue和index.vue)的状态限制功能实现
xuzhancheng 2 天之前
父節點
當前提交
c8ac6adfbe

+ 35 - 1
yudao-ui-admin-vue3/src/views/pressure2/schedule/index.vue

@@ -54,7 +54,11 @@
         <el-icon><Edit /></el-icon>
         <span>修改计划</span>
       </div>
-      <div class="context-menu-item" @click="handleCancelPlan">
+      <div 
+        class="context-menu-item" 
+        :class="{ 'disabled': (currentTask as BoilerTaskItem)?.status !== 100 }"
+        @click="handleCancelPlan"
+      >
         <el-icon><Delete /></el-icon>
         <span>取消计划</span>
       </div>
@@ -153,6 +157,7 @@
                         class="delete-btn"
                         type="danger"
                         link
+                        v-if="task.status === 100"
                         @click.stop="handleDeleteTask(task)"
                       >
                         <el-icon><Delete /></el-icon>
@@ -573,6 +578,11 @@ onUnmounted(() => {
 
 // 处理单个计划删除
 const handleDeleteTask = (task: BoilerTaskItem) => {
+  // 检查状态是否为已排期(100)
+  if (task.status !== 100) {
+    ElMessage.warning('仅允许删除"已排期"状态的记录')
+    return
+  }
   handleDeleteSelected([task])
 }
 
@@ -581,6 +591,13 @@ const handleDeleteSelected = async (tasksToDelete?: BoilerTaskItem[]) => {
   const tasks = tasksToDelete || selectedTasks.value
   if (tasks.length === 0) return
   
+  // 过滤出非已排期状态的任务
+  const nonScheduledTasks = tasks.filter(task => task.status !== 100)
+  if (nonScheduledTasks.length > 0) {
+    ElMessage.warning('仅允许删除"已排期"状态的记录')
+    return
+  }
+  
   try {
     await ElMessageBox.confirm(
       `确认删除选中的计划吗?`,
@@ -644,6 +661,13 @@ const handleEditPlan = () => {
 // 取消计划
 const handleCancelPlan = () => {
   if (currentTask.value) {
+    const task = currentTask.value as BoilerTaskItem
+    // 检查状态是否为已排期(100)
+    if (task.status !== 100) {
+      ElMessage.warning('仅允许删除"已排期"状态的记录')
+      contextMenuVisible.value = false
+      return
+    }
     handleDeleteSelected([currentTask.value])
     contextMenuVisible.value = false
   }
@@ -1053,6 +1077,16 @@ const handleSubmitPlan = async () => {
       background-color: var(--el-fill-color-light);
     }
     
+    &.disabled {
+      opacity: 0.5;
+      cursor: not-allowed;
+      color: var(--el-text-color-placeholder);
+      
+      &:hover {
+        background-color: transparent;
+      }
+    }
+    
     .el-icon {
       font-size: 16px;
     }

+ 35 - 1
yudao-ui-admin-vue3/src/views/pressure2/schedule/pipeindex.vue

@@ -128,7 +128,11 @@
         <el-icon><Edit /></el-icon>
         <span>修改计划</span>
       </div>
-      <div class="context-menu-item" @click="handleCancelPlan">
+      <div 
+        class="context-menu-item" 
+        :class="{ 'disabled': (currentTask as PipeTaskItem)?.status !== 100 }"
+        @click="handleCancelPlan"
+      >
         <el-icon><Delete /></el-icon>
         <span>取消计划</span>
       </div>
@@ -228,6 +232,7 @@
                         class="delete-btn"
                         type="danger"
                         link
+                        v-if="task.status === 100"
                         @click.stop="handleDeleteTask(task)"
                       >
                         <el-icon><Delete /></el-icon>
@@ -678,6 +683,11 @@ onUnmounted(() => {
 
 // 处理单个计划删除
 const handleDeleteTask = (task: PipeTaskItem) => {
+  // 检查状态是否为已排期(100)
+  if (task.status !== 100) {
+    ElMessage.warning('仅允许删除"已排期"状态的记录')
+    return
+  }
   handleDeleteSelected([task])
 }
 
@@ -686,6 +696,13 @@ const handleDeleteSelected = async (tasksToDelete?: PipeTaskItem[]) => {
   const tasks = tasksToDelete || selectedTasks.value
   if (tasks.length === 0) return
   
+  // 过滤出非已排期状态的任务
+  const nonScheduledTasks = tasks.filter(task => task.status !== 100)
+  if (nonScheduledTasks.length > 0) {
+    ElMessage.warning('仅允许删除"已排期"状态的记录')
+    return
+  }
+  
   try {
     await ElMessageBox.confirm(
       `确认删除选中的计划吗?`,
@@ -749,6 +766,13 @@ const handleEditPlan = () => {
 // 取消计划
 const handleCancelPlan = () => {
   if (currentTask.value) {
+    const task = currentTask.value as PipeTaskItem
+    // 检查状态是否为已排期(100)
+    if (task.status !== 100) {
+      ElMessage.warning('仅允许删除"已排期"状态的记录')
+      contextMenuVisible.value = false
+      return
+    }
     handleDeleteSelected([currentTask.value])
     contextMenuVisible.value = false
   }
@@ -1178,6 +1202,16 @@ watch(() => queryParams.value.type, (newType) => {
       background-color: var(--el-fill-color-light);
     }
     
+    &.disabled {
+      opacity: 0.5;
+      cursor: not-allowed;
+      color: var(--el-text-color-placeholder);
+      
+      &:hover {
+        background-color: transparent;
+      }
+    }
+    
     .el-icon {
       font-size: 16px;
     }