diff --git a/seller/src/styles/element.scss b/seller/src/styles/element.scss
index 56f235b4f..509c3f2d4 100644
--- a/seller/src/styles/element.scss
+++ b/seller/src/styles/element.scss
@@ -144,3 +144,40 @@
url("data:image/svg+xml;utf8,");
}
}
+
+
+/*
+ * 商家端固定左侧 300px 菜单布局下的 Dialog 弹窗居中与边界保护 (Issue #IKUDFL)
+ * 1. 扣除左侧 300px 菜单宽度,将弹窗容器限定在右侧内容工作区内,使得弹窗自然以工作区为中心水平居中,不再全屏居中;
+ * 2. 弹窗最大宽度限制在 calc(100% - 40px),在中低分辨率(如 1440px/1600px)下左右预留各 20px 边距,避免大尺寸弹窗(如 1200px)溢出或贴紧菜单;
+ * 3. 兼容未挂载至 body 的弹窗,当内容区内弹窗展开时提升 .single-page-con 层级,避免被菜单(z-index: 21)遮挡。
+ */
+body.seller-has-sidebar,
+.main {
+ .el-overlay-dialog {
+ left: 300px;
+ width: calc(100vw - 300px);
+ box-sizing: border-box;
+ }
+
+ .el-overlay-dialog .el-dialog {
+ max-width: calc(100% - 40px);
+ box-sizing: border-box;
+ }
+}
+
+/* 移动端/极窄屏兜底:若宽度小于等于 768px 则恢复全屏居中 */
+@media (max-width: 768px) {
+ body.seller-has-sidebar,
+ .main {
+ .el-overlay-dialog {
+ left: 0;
+ width: 100vw;
+ }
+ }
+}
+
+/* 未使用 append-to-body 挂载的局部弹窗,在打开时提升内容区层叠上下文,避免被菜单栏或顶栏压盖 */
+.single-page-con:has(.el-overlay:not([style*="display: none"])) {
+ z-index: 2000;
+}
diff --git a/seller/src/views/Main.vue b/seller/src/views/Main.vue
index 2af63aaa1..f1dd42233 100644
--- a/seller/src/views/Main.vue
+++ b/seller/src/views/Main.vue
@@ -317,12 +317,14 @@ watch(() => appStore.tagsList, () => {
appStore.setOpenedList();
onMounted(() => {
+ document.body.classList.add("seller-has-sidebar");
init();
resize();
window.addEventListener("resize", resize);
});
onBeforeUnmount(() => {
+ document.body.classList.remove("seller-has-sidebar");
window.removeEventListener("resize", resize);
});
diff --git a/seller/src/views/order/order/orderDetail.vue b/seller/src/views/order/order/orderDetail.vue
index 55d83ba54..ff661b091 100644
--- a/seller/src/views/order/order/orderDetail.vue
+++ b/seller/src/views/order/order/orderDetail.vue
@@ -559,7 +559,7 @@
-
+
整单发货