diff --git a/src/components/pages/BatchJobManager.vue b/src/components/pages/BatchJobManager.vue index 5abddef..68349bd 100644 --- a/src/components/pages/BatchJobManager.vue +++ b/src/components/pages/BatchJobManager.vue @@ -107,22 +107,26 @@
-

请从文件库或本地选择需要进行批量处理的模型集合:

- - -
- 拖拽文件到此处或 点击上传 +

请输入模型路径并点击“增加模型”,构建本次批处理的模型列表:

+
+ + + 增加模型 + +
+
+
+ {{ path }} + 移除
- - +
+
+ 尚未添加模型路径 +
@@ -187,8 +191,10 @@ const taskForm = ref({ exportPath: '', priority: '普通', maxConcurrency: 3, - scheduleAt: '' + scheduleAt: '', + modelPaths: [] }) +const newModelPath = ref('') // 模拟列表数据 const jobs = ref([ @@ -211,12 +217,19 @@ const openWizard = () => { exportPath: '', priority: '普通', maxConcurrency: 3, - scheduleAt: '' + scheduleAt: '', + modelPaths: [] } wizardVisible.value = true } const submitTask = () => { + if (taskForm.value.modelPaths.length === 0) { + ElMessage.warning('请先添加至少一个模型路径') + wizardStep.value = 0 + return + } + ElMessage.success('批量任务已成功加入调度队列!') wizardVisible.value = false // 将新任务加入 mock 数据 (实际应调用后端的 create job 接口) @@ -226,12 +239,27 @@ const submitTask = () => { priority: taskForm.value.priority, progress: 0, status: 'queued', - totalCount: 1, // 模拟数 + totalCount: taskForm.value.modelPaths.length, completedCount: 0, createdAt: new Date().toLocaleString() }) } +const addModelPath = () => { + const path = newModelPath.value.trim() + if (!path) return + if (taskForm.value.modelPaths.includes(path)) { + ElMessage.warning('该模型路径已存在') + return + } + taskForm.value.modelPaths.push(path) + newModelPath.value = '' +} + +const removeModelPath = (index) => { + taskForm.value.modelPaths.splice(index, 1) +} + // 格式辅助 const getStatusLabel = (status) => { const map = { running: '执行中', completed: '已完成', queued: '排队中', paused: '已暂停', failed: '异常' } @@ -389,10 +417,50 @@ const viewDetails = (row) => { } .step-desc { - color: var(--color-text-secondary); + color: #4b5563; margin-bottom: var(--spacing-md); } +.model-path-input-row { + display: flex; + gap: var(--spacing-md); + margin-bottom: var(--spacing-md); +} + +.model-path-list { + border: 1px solid #d1d5db; + border-radius: var(--size-border-radius); + background: #ffffff; + max-height: 260px; + overflow-y: auto; +} + +.model-path-item { + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--spacing-md); + padding: 10px 12px; + border-bottom: 1px solid #e5e7eb; +} + +.model-path-item:last-child { + border-bottom: none; +} + +.path-text { + flex: 1; + color: #111827; + font-size: var(--font-size-sm); + word-break: break-all; +} + +.empty-model-paths { + color: #6b7280; + font-size: var(--font-size-sm); + padding: 10px 2px; +} + .form-tip { margin-left: 10px; font-size: 12px; @@ -403,10 +471,26 @@ const viewDetails = (row) => { :deep(.el-table) { --el-table-bg-color: transparent; --el-table-tr-bg-color: transparent; + --el-table-striped-bg-color: rgba(255, 255, 255, 0.08); --el-table-header-bg-color: var(--color-bg-primary); --el-table-border-color: var(--color-border-primary); --el-table-text-color: var(--color-text-primary); --el-table-header-text-color: var(--color-text-primary); --el-table-row-hover-bg-color: var(--color-white-rgb-05); } + +/* 修复浅色斑马纹导致的文字可读性问题 */ +:deep(.el-table .el-table__row td.el-table__cell) { + color: var(--color-text-primary); +} + +:deep(.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell) { + background-color: rgba(255, 255, 255, 0.12); +} + +/* 固定列默认会有独立背景,保持与行背景一致,避免发白 */ +:deep(.el-table .el-table-fixed-column--left), +:deep(.el-table .el-table-fixed-column--right) { + background-color: transparent !important; +} diff --git a/src/components/pages/RevitEnvelopeOptimization.vue b/src/components/pages/RevitEnvelopeOptimization.vue index 9f02eaf..8aa69d3 100644 --- a/src/components/pages/RevitEnvelopeOptimization.vue +++ b/src/components/pages/RevitEnvelopeOptimization.vue @@ -50,14 +50,6 @@
-
- -
- 操作前备份原始文件? - -
-
-