- 拖拽文件到此处或
点击上传
+
请输入模型路径并点击“增加模型”,构建本次批处理的模型列表:
+
+
+
+ 增加模型
+
+
+
+
+ {{ path }}
+ 移除
-
- 支持多选,目前已选 0 个模型
-
-
+
+
+ 尚未添加模型路径
+
@@ -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 @@