Просмотр исходного кода

作业管理详情页归档信息按钮添加显示条件限制

wyn 3 месяцев назад
Родитель
Сommit
0a0af4abea
1 измененных файлов с 30 добавлено и 6 удалено
  1. 30 6
      src/components/WorkJobDetail.tsx

+ 30 - 6
src/components/WorkJobDetail.tsx

@@ -2416,6 +2416,28 @@ export default function WorkJobDetail() {
     return statusMap[statusStr] || String(status) || t('workJobDetail.statusUnknown');
   };
 
+  // 判断状态是否为已完成
+  const isStatusCompleted = (status: string | number | undefined): boolean => {
+    if (!status) return false;
+    
+    // 直接判断是否为字符串 'completed'
+    if (String(status).toLowerCase() === 'completed') {
+      return true;
+    }
+    
+    // 从字典中查找状态文本
+    const statusStr = String(status).toLowerCase();
+    const statusItem = jobStatusDictList.find(item => String(item.value).toLowerCase() === statusStr);
+    const statusText = statusItem ? (statusItem.label || '') : String(status || '');
+    const statusTextLower = statusText.toLowerCase();
+    
+    // 判断状态文本是否包含已完成相关的关键词
+    return statusTextLower.includes('已完成') || 
+           statusTextLower.includes('执行完成') || 
+           statusTextLower.includes('completed') || 
+           statusTextLower.includes('完成');
+  };
+
   // 获取作业状态样式(与列表颜色一致)
   const getStatusStyle = (status: string | number | undefined): React.CSSProperties => {
     if (!status) {
@@ -2662,12 +2684,14 @@ export default function WorkJobDetail() {
             </div>
             
             <div className="flex items-center gap-2 flex-shrink-0">
-              <Button
-                type="primary"
-                onClick={() => navigate(`/work-job/archive${jobId ? `?id=${jobId}` : ''}`)}
-              >
-                {t('workJobDetail.archiveInfo')}
-              </Button>
+              {isStatusCompleted(jobDetail?.status) && (
+                <Button
+                  type="primary"
+                  onClick={() => navigate(`/work-job/archive${jobId ? `?id=${jobId}` : ''}`)}
+                >
+                  {t('workJobDetail.archiveInfo')}
+                </Button>
+              )}
               <button
                 onClick={() => {
                   // 设置菜单信息到 sessionStorage,以便 Dashboard 恢复菜单状态