Преглед изворни кода

修复Main页面的修改密码弹窗

画安 пре 3 дана
родитељ
комит
6353fa41e5
1 измењених фајлова са 50 додато и 2 уклоњено
  1. 50 2
      src/layouts/LoginLayout.vue

+ 50 - 2
src/layouts/LoginLayout.vue

@@ -22,6 +22,35 @@
             </main>
         </div>
 
+        <SmartDialog
+            ref="dialogs"
+            v-for="dialog in activeDialogs"
+            :key="dialog.id"
+            :id="dialog.id"
+            :visible.sync="dialog.visible"
+            :title="dialog.title"
+            :defaultWidth="dialog.width || 400"
+            :defaultHeight="dialog.height || 300"
+            :center="dialog.center !== false"
+            :position="dialog.position"
+            :showClose="dialog.showClose"
+            :enableDblclickExpand="dialog.enableDblclickExpand"
+            :noPadding="dialog.noPadding"
+            :draggable="dialog.draggable"
+            :resizable="dialog.resizable"
+            :minWidth="dialog.minWidth"
+            :minHeight="dialog.minHeight"
+            :bringToFrontOnMousedown="dialog.bringToFrontOnMousedown"
+            @close="handleDialogClose(dialog.id)"
+            @expand="handleDialogExpand(dialog)">
+
+            <template #header v-if="dialog.headerComponent">
+                <component :is="dialog.headerComponent" v-bind="dialog.headerProps" />
+            </template>
+
+            <component :is="dialog.componentName" v-bind="dialog.data" />
+        </SmartDialog>
+
     </div>
 </template>
 
@@ -29,13 +58,28 @@
 
 
 import FullscreenToggle from '@/components/ui/FullscreenToggle.vue';
+import SmartDialog from '@/components/ui/SmartDialog.vue';
+import ChangePassword from '@/components/ui/ChangePassword.vue';
+import dialogManager from '@/mixins/dialogManager';
 import brand from '@/utils/brand';
 
 export default {
     name: 'LoginLayout',
-    mixins: [],
+    mixins: [dialogManager],
     components: {
         FullscreenToggle,
+        SmartDialog,
+        ChangePassword,
+    },
+    provide() {
+        return {
+            dialogManager: {
+                openDialog: this.openDialog,
+                closeDialog: this.handleDialogClose,
+                clearDialogs: this.clearDialogs,
+                getDialogs: () => this.activeDialogs,
+            }
+        };
     },
     props: {
         layoutClass: {
@@ -49,7 +93,11 @@ export default {
         }
     },
     methods: {
-        
+        handleDialogExpand(dialog) {
+            if (dialog.data && typeof dialog.data.onExpand === 'function') {
+                dialog.data.onExpand(dialog.data);
+            }
+        }
     }
 }
 </script>