.picker-doms{margin-left:auto;color:#888;font-size:10px;max-width:42%;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* ===== 设备模版:图片与采集点编辑 ===== */
.device-list{display:grid;grid-template-columns:1fr;gap:14px;padding:4px 0}
-.device-img-field{margin-top:6px;border:1px dashed #c4ccd2;border-radius:6px;min-height:170px;background:#f7f9fa;display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}
+.device-img-field{margin-top:6px;border:1px dashed #c4ccd2;border-radius:6px;width:160px;height:160px;background:#f7f9fa;display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}
.device-img-field:hover{border-color:var(--blue);background:#f0f8fc}
-.device-img-field img{width:100%;height:170px;object-fit:cover;display:block}
-.device-img-field .device-img-empty{color:#9aa1a5;font-size:12px}
+.device-img-field img{width:100%;height:100%;object-fit:cover;display:block}
+.device-img-field .device-img-empty{color:#9aa1a5;font-size:12px;text-align:center;padding:0 8px}
.cp-list-head{display:flex;align-items:center;justify-content:space-between;margin:10px 0 6px}
.cp-list-head span{display:flex;gap:12px}
.cp-editor td{padding:4px 6px;vertical-align:middle}
res.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
res.setHeader("Access-Control-Allow-Headers", "Content-Type");
if (req.method === "OPTIONS") return res.writeHead(204).end();
- route(req, res).catch(e => console.error("[db-sidecar route error]", e));
+ route(req, res).catch(e => {
+ console.error("[db-sidecar route error]", e);
+ try { if (!res.headersSent && !res.writableEnded) respondError(res, 500, (e && e.message) || "internal error"); }
+ catch (_) {}
+ });
});
// 兜底:任何未捕获异常 / 未处理的 Promise 拒绝都不应让旁路服务退出