diff --git a/static/style.css b/static/style.css
index 8ef0e5c..963f955 100644
--- a/static/style.css
+++ b/static/style.css
@@ -828,6 +828,51 @@ optgroup {
padding: 0 var(--space-4) var(--space-4);
}
+.advanced-param-grid {
+ display: grid;
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ gap: var(--space-4);
+ margin-top: var(--space-4);
+}
+
+.param-input-card {
+ background: var(--bg-secondary);
+ border: 1px solid var(--border-light);
+ border-radius: var(--radius-lg);
+ padding: var(--space-4);
+}
+
+.param-input-row {
+ display: flex;
+ align-items: center;
+ gap: var(--space-3);
+}
+
+.param-number-input {
+ flex: 1;
+}
+
+.param-unit {
+ min-width: 2.5rem;
+ font-size: var(--text-sm);
+ color: var(--text-secondary);
+ font-weight: var(--font-semibold);
+}
+
+.param-meta-row {
+ display: flex;
+ gap: var(--space-3);
+ flex-wrap: wrap;
+ margin-top: var(--space-2);
+}
+
+.param-hint {
+ margin-top: var(--space-2);
+ font-size: var(--text-xs);
+ color: var(--text-tertiary);
+ line-height: 1.6;
+}
+
.upload-submit-btn {
width: 100%;
margin-top: var(--space-4);
@@ -1311,6 +1356,33 @@ optgroup {
margin-bottom: var(--space-6);
}
+.result-anchor-nav {
+ display: flex;
+ gap: var(--space-2);
+ flex-wrap: wrap;
+ margin-bottom: var(--space-5);
+}
+
+.anchor-pill {
+ display: inline-flex;
+ align-items: center;
+ padding: var(--space-2) var(--space-4);
+ border-radius: var(--radius-full);
+ background: var(--bg-primary);
+ border: 1px solid var(--border-default);
+ color: var(--text-secondary);
+ font-size: var(--text-sm);
+ font-weight: var(--font-medium);
+ text-decoration: none;
+ transition: all var(--duration-fast) var(--ease-default);
+}
+
+.anchor-pill:hover {
+ background: var(--primary-50);
+ border-color: var(--primary-200);
+ color: var(--primary-700);
+}
+
.single-scheme-grid {
grid-template-columns: 1fr !important;
}
@@ -2841,6 +2913,10 @@ select.form-input {
.upload-layout {
grid-template-columns: 1fr;
}
+
+ .advanced-param-grid {
+ grid-template-columns: 1fr;
+ }
}
/* ================================
diff --git a/static/vue-app.js b/static/vue-app.js
index 33ace19..6909396 100644
--- a/static/vue-app.js
+++ b/static/vue-app.js
@@ -1156,6 +1156,49 @@ const MoldInsightView = {
loadHistory();
});
+ const moldParamFields = [
+ {
+ key: 'draftAngle',
+ label: '拔模角',
+ unit: '°',
+ min: 1,
+ max: 10,
+ step: 0.5,
+ defaultValue: 2.0,
+ hint: '常规注塑件建议从 1.5° 到 3° 起步'
+ },
+ {
+ key: 'shrinkageRate',
+ label: '收缩率',
+ unit: '%',
+ min: 0.5,
+ max: 3.0,
+ step: 0.1,
+ defaultValue: 0.5,
+ hint: '按材料牌号校核,默认值用于首轮方案评估'
+ },
+ {
+ key: 'partingPrecision',
+ label: '分型精度',
+ unit: 'mm',
+ min: 0.01,
+ max: 1.0,
+ step: 0.01,
+ defaultValue: 0.1,
+ hint: '用于控制分型面拟合与边界容差'
+ },
+ {
+ key: 'cavityMatch',
+ label: '型腔匹配度',
+ unit: '%',
+ min: 80,
+ max: 100,
+ step: 1,
+ defaultValue: 95,
+ hint: '数值越高越偏向紧配合与严格封合'
+ }
+ ];
+
return {
state,
handleFileChange,
@@ -1164,6 +1207,7 @@ const MoldInsightView = {
formatFileSize,
formatDateTime,
formatNumber,
+ moldParamFields,
toggleFileHistory,
viewResult
};
@@ -1248,31 +1292,25 @@ const MoldInsightView = {