chore: 解决 stash pop 与 device-link 合并冲突并收回本地 WIP
保留 ConnectionHub(deviceLink 导入/ECAT 自启/pmHold 幂等)与主线 WIP(断线清指标、AUTO_POLL=false、boot_ecat 等)。
This commit is contained in:
+125
-2
@@ -249,6 +249,69 @@ select option { background: var(--bg-panel); color: var(--text); }
|
||||
color: #04142b;
|
||||
box-shadow: 0 4px 16px rgba(95,168,255,.3), inset 0 1px 0 rgba(255,255,255,.25);
|
||||
}
|
||||
#modeEcatBtn.btn-primary {
|
||||
background: linear-gradient(135deg, #8b5cf6 0%, #6366f1 100%);
|
||||
color: #0f0a1f;
|
||||
box-shadow: 0 4px 16px rgba(139,92,246,.3), inset 0 1px 0 rgba(255,255,255,.25);
|
||||
}
|
||||
#modeWifiBtn.btn-outline {
|
||||
border-color: rgba(47,216,193,.45);
|
||||
color: var(--esp32);
|
||||
}
|
||||
#modeBleBtn.btn-outline {
|
||||
border-color: rgba(95,168,255,.45);
|
||||
color: var(--ble);
|
||||
}
|
||||
#modeEcatBtn.btn-outline {
|
||||
border-color: rgba(139,92,246,.45);
|
||||
color: #a78bfa;
|
||||
}
|
||||
#modeWifiBtn.btn-outline:hover:not(:disabled) {
|
||||
border-color: var(--esp32);
|
||||
background: rgba(47,216,193,.08);
|
||||
color: var(--esp32);
|
||||
}
|
||||
#modeBleBtn.btn-outline:hover:not(:disabled) {
|
||||
border-color: var(--ble);
|
||||
background: rgba(95,168,255,.08);
|
||||
color: var(--ble);
|
||||
}
|
||||
#modeEcatBtn.btn-outline:hover:not(:disabled) {
|
||||
border-color: #8b5cf6;
|
||||
background: rgba(139,92,246,.08);
|
||||
color: #a78bfa;
|
||||
}
|
||||
|
||||
/* 升级目标:左右两个等宽扁按钮(GD32 琥珀 · ESP32 青绿) */
|
||||
.target-tab-row {
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
.target-tab-btn {
|
||||
flex: 1 1 0;
|
||||
min-width: 0;
|
||||
min-height: 40px;
|
||||
padding: 10px 14px;
|
||||
font-size: 14px;
|
||||
font-weight: 700;
|
||||
letter-spacing: .04em;
|
||||
flex-direction: row;
|
||||
gap: 8px;
|
||||
border-radius: var(--radius-sm);
|
||||
}
|
||||
.target-tab-btn .target-tab-ico {
|
||||
font-size: 15px;
|
||||
line-height: 1;
|
||||
opacity: .9;
|
||||
}
|
||||
.target-tab-btn .target-tab-txt {
|
||||
line-height: 1.1;
|
||||
}
|
||||
.target-tab-btn.btn-outline {
|
||||
border-width: 1.5px;
|
||||
background: rgba(255,255,255,.03);
|
||||
}
|
||||
#targetGd32Tab.btn-primary {
|
||||
background: linear-gradient(135deg, var(--gd32) 0%, #f59e0b 100%);
|
||||
color: #2b1d02;
|
||||
@@ -257,6 +320,58 @@ select option { background: var(--bg-panel); color: var(--text); }
|
||||
#targetEsp32Tab.btn-primary {
|
||||
background: linear-gradient(135deg, var(--esp32) 0%, #14b8a6 100%);
|
||||
color: #04231e;
|
||||
box-shadow: 0 4px 16px rgba(47,216,193,.28), inset 0 1px 0 rgba(255,255,255,.25);
|
||||
}
|
||||
/* 未选中时用各自子系统的淡描边,避免两个灰按钮看不出身份 */
|
||||
#targetGd32Tab.btn-outline {
|
||||
border-color: rgba(252,191,63,.45);
|
||||
color: var(--gd32);
|
||||
}
|
||||
#targetEsp32Tab.btn-outline {
|
||||
border-color: rgba(47,216,193,.45);
|
||||
color: var(--esp32);
|
||||
}
|
||||
#targetGd32Tab.btn-outline:hover:not(:disabled) {
|
||||
border-color: var(--gd32);
|
||||
background: rgba(252,191,63,.08);
|
||||
color: var(--gd32);
|
||||
}
|
||||
#targetEsp32Tab.btn-outline:hover:not(:disabled) {
|
||||
border-color: var(--esp32);
|
||||
background: rgba(47,216,193,.08);
|
||||
color: var(--esp32);
|
||||
}
|
||||
#ppEcatOta.active {
|
||||
color: #2b1d02;
|
||||
background: linear-gradient(135deg, var(--gd32), #f59e0b);
|
||||
box-shadow: 0 2px 12px rgba(252,191,63,.35);
|
||||
}
|
||||
|
||||
/* EtherCAT 连接说明 + 探测:与卡片内其他控件同一套字重/字距 */
|
||||
.ecat-mode-note {
|
||||
margin: 0 0 12px;
|
||||
padding: 10px 12px;
|
||||
border-radius: var(--radius-sm);
|
||||
border: 1px solid var(--border-subtle);
|
||||
background: rgba(252,191,63,.06);
|
||||
font-size: 12px;
|
||||
line-height: 1.7;
|
||||
color: var(--text-dim);
|
||||
}
|
||||
.ecat-mode-note b {
|
||||
color: var(--gd32);
|
||||
font-weight: 600;
|
||||
}
|
||||
#bootEcatProbeBtn {
|
||||
margin-bottom: 10px;
|
||||
border-color: rgba(252,191,63,.4);
|
||||
color: var(--gd32);
|
||||
background: rgba(252,191,63,.05);
|
||||
}
|
||||
#bootEcatProbeBtn:hover:not(:disabled) {
|
||||
border-color: var(--gd32);
|
||||
background: rgba(252,191,63,.12);
|
||||
color: var(--gd32-hi);
|
||||
}
|
||||
/* GD32 OTA 大按钮 = 琥珀(区别于 ESP32 青绿) */
|
||||
#uploadGd32Btn {
|
||||
@@ -264,6 +379,14 @@ select option { background: var(--bg-panel); color: var(--text); }
|
||||
color: #2b1d02;
|
||||
box-shadow: 0 6px 20px rgba(252,191,63,.3), inset 0 1px 0 rgba(255,255,255,.3);
|
||||
}
|
||||
#bootEcatRunBtn {
|
||||
background: linear-gradient(135deg, var(--gd32) 0%, #f59e0b 100%);
|
||||
color: #2b1d02;
|
||||
box-shadow: 0 6px 20px rgba(252,191,63,.3), inset 0 1px 0 rgba(255,255,255,.3);
|
||||
}
|
||||
#bootEcatRunBtn:disabled {
|
||||
opacity: .38;
|
||||
}
|
||||
#uploadEsp32Btn {
|
||||
box-shadow: 0 6px 20px rgba(47,216,193,.32), inset 0 1px 0 rgba(255,255,255,.28);
|
||||
}
|
||||
@@ -275,10 +398,10 @@ select option { background: var(--bg-panel); color: var(--text); }
|
||||
background: var(--bg-elevated); border: 1px solid var(--border);
|
||||
font-size: 13px; font-weight: 500;
|
||||
}
|
||||
.conn-indicator .light { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
|
||||
.conn-indicator .light { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; background: var(--text-label); }
|
||||
.conn-indicator.ok .light { background: var(--green); box-shadow: 0 0 8px rgba(61,220,142,.6); }
|
||||
.conn-indicator.err .light { background: var(--red); box-shadow: 0 0 8px rgba(255,107,107,.5); }
|
||||
.conn-indicator.warn .light { background: var(--amber); }
|
||||
.conn-indicator.warn .light { background: var(--amber); box-shadow: 0 0 8px rgba(252,191,63,.45); }
|
||||
|
||||
.helper-note {
|
||||
margin-top: 10px; padding: 10px 13px;
|
||||
|
||||
Reference in New Issue
Block a user