+
+
{{ userStore.nickName ?? userStore.username }}
[{{ userStore.currentRole?.name }}]
diff --git a/src/layouts/components/index.js b/src/layouts/components/index.js
index fd91831..e32d88c 100644
--- a/src/layouts/components/index.js
+++ b/src/layouts/components/index.js
@@ -1 +1,7 @@
export { default as RoleSelect } from './RoleSelect.vue'
+export { default as UserAvatar } from './UserAvatar.vue'
+export { default as MenuCollapse } from './MenuCollapse.vue'
+export { default as BreadCrumb } from './BreadCrumb.vue'
+export { default as AppTab } from './tab/index.vue'
+export { default as SideLogo } from './SideLogo.vue'
+export { default as SideMenu } from './SideMenu.vue'
diff --git a/src/layouts/default/header/components/tab/ContextMenu.vue b/src/layouts/components/tab/ContextMenu.vue
similarity index 98%
rename from src/layouts/default/header/components/tab/ContextMenu.vue
rename to src/layouts/components/tab/ContextMenu.vue
index 9e89efe..a377dc8 100644
--- a/src/layouts/default/header/components/tab/ContextMenu.vue
+++ b/src/layouts/components/tab/ContextMenu.vue
@@ -1,7 +1,7 @@
diff --git a/src/layouts/default/header/components/tab/index.vue b/src/layouts/components/tab/index.vue
similarity index 98%
rename from src/layouts/default/header/components/tab/index.vue
rename to src/layouts/components/tab/index.vue
index 117daeb..2e64bad 100644
--- a/src/layouts/default/header/components/tab/index.vue
+++ b/src/layouts/components/tab/index.vue
@@ -1,7 +1,7 @@
diff --git a/src/layouts/default/header/components/index.js b/src/layouts/default/header/components/index.js
deleted file mode 100644
index 19570cb..0000000
--- a/src/layouts/default/header/components/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-export { default as UserAvatar } from './UserAvatar.vue'
-export { default as AppTab } from './tab/index.vue'
diff --git a/src/layouts/full/header/index.vue b/src/layouts/full/header/index.vue
new file mode 100644
index 0000000..33c8f2d
--- /dev/null
+++ b/src/layouts/full/header/index.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/full/index.vue b/src/layouts/full/index.vue
new file mode 100644
index 0000000..e1b6504
--- /dev/null
+++ b/src/layouts/full/index.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/default/sidebar/index.vue b/src/layouts/full/sidebar/index.vue
similarity index 74%
rename from src/layouts/default/sidebar/index.vue
rename to src/layouts/full/sidebar/index.vue
index bd6545e..030938e 100644
--- a/src/layouts/default/sidebar/index.vue
+++ b/src/layouts/full/sidebar/index.vue
@@ -1,17 +1,16 @@
-
-
+
+
diff --git a/src/layouts/default/header/index.vue b/src/layouts/normal/header/index.vue
similarity index 81%
rename from src/layouts/default/header/index.vue
rename to src/layouts/normal/header/index.vue
index 9aba3ba..b760d37 100644
--- a/src/layouts/default/header/index.vue
+++ b/src/layouts/normal/header/index.vue
@@ -1,19 +1,14 @@
-
-
-
+
@@ -45,9 +40,9 @@
diff --git a/src/layouts/normal/sidebar/index.vue b/src/layouts/normal/sidebar/index.vue
new file mode 100644
index 0000000..f6b71fb
--- /dev/null
+++ b/src/layouts/normal/sidebar/index.vue
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
diff --git a/src/layouts/simple/index.vue b/src/layouts/simple/index.vue
new file mode 100644
index 0000000..09d64fc
--- /dev/null
+++ b/src/layouts/simple/index.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/simple/sidebar/index.vue b/src/layouts/simple/sidebar/index.vue
new file mode 100644
index 0000000..4163670
--- /dev/null
+++ b/src/layouts/simple/sidebar/index.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/settings.js b/src/settings.js
index 8c3680c..85e1d56 100644
--- a/src/settings.js
+++ b/src/settings.js
@@ -1,47 +1,39 @@
/**********************************
* @Author: Ronnie Zhang
* @LastEditor: Ronnie Zhang
- * @LastEditTime: 2023/12/05 21:30:24
+ * @LastEditTime: 2023/12/13 20:54:36
* @Email: zclzone@outlook.com
* Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top
**********************************/
-export default {
- defaultLayout: 'default',
- header: {
- height: 60,
- },
- tab: {
- visible: true,
- height: 50,
- },
- naiveThemeOverrides: {
- common: {
- primaryColor: '#316C72FF',
- primaryColorHover: '#316C72E3',
- primaryColorPressed: '#2B4C59FF',
- primaryColorSuppl: '#316C72E3',
+export const defaultLayout = 'normal'
- infoColor: '#2080F0FF',
- infoColorHover: '#4098FCFF',
- infoColorPressed: '#1060C9FF',
- infoColorSuppl: '#4098FCFF',
+export const naiveThemeOverrides = {
+ common: {
+ primaryColor: '#316C72FF',
+ primaryColorHover: '#316C72E3',
+ primaryColorPressed: '#2B4C59FF',
+ primaryColorSuppl: '#316C72E3',
- successColor: '#18A058FF',
- successColorHover: '#36AD6AFF',
- successColorPressed: '#0C7A43FF',
- successColorSuppl: '#36AD6AFF',
+ infoColor: '#2080F0FF',
+ infoColorHover: '#4098FCFF',
+ infoColorPressed: '#1060C9FF',
+ infoColorSuppl: '#4098FCFF',
- warningColor: '#F0A020FF',
- warningColorHover: '#FCB040FF',
- warningColorPressed: '#C97C10FF',
- warningColorSuppl: '#FCB040FF',
+ successColor: '#18A058FF',
+ successColorHover: '#36AD6AFF',
+ successColorPressed: '#0C7A43FF',
+ successColorSuppl: '#36AD6AFF',
- errorColor: '#D03050FF',
- errorColorHover: '#DE576DFF',
- errorColorPressed: '#AB1F3FFF',
- errorColorSuppl: '#DE576DFF',
- },
+ warningColor: '#F0A020FF',
+ warningColorHover: '#FCB040FF',
+ warningColorPressed: '#C97C10FF',
+ warningColorSuppl: '#FCB040FF',
+
+ errorColor: '#D03050FF',
+ errorColorHover: '#DE576DFF',
+ errorColorPressed: '#AB1F3FFF',
+ errorColorSuppl: '#DE576DFF',
},
}
diff --git a/src/store/modules/app.js b/src/store/modules/app.js
index e251d8a..20aff76 100644
--- a/src/store/modules/app.js
+++ b/src/store/modules/app.js
@@ -8,13 +8,14 @@
import { defineStore } from 'pinia'
import { useDark } from '@vueuse/core'
-import settings from '@/settings'
+import { defaultLayout, naiveThemeOverrides } from '@/settings'
export const useAppStore = defineStore('app', {
state: () => ({
collapsed: false,
isDark: useDark(),
- layout: settings.defaultLayout,
+ layout: defaultLayout,
+ naiveThemeOverrides,
}),
actions: {
switchCollapsed() {
@@ -26,12 +27,12 @@ export const useAppStore = defineStore('app', {
toggleDark() {
this.isDark = !this.isDark
},
- setDeaultLayout(v) {
+ setLayout(v) {
this.layout = v
},
},
persist: {
- paths: ['layout', 'collapsed'],
+ paths: ['collapsed', 'naiveThemeOverrides'],
storage: localStorage,
},
})
diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js
index c3b425e..4dbf0e0 100644
--- a/src/store/modules/permission.js
+++ b/src/store/modules/permission.js
@@ -64,7 +64,7 @@ export const usePermissionStore = defineStore('permission', {
meta: {
icon: item.icon,
title: item.name,
- layout: item.layout || 'default',
+ layout: item.layout,
keepAlive: !!item.keepAlive,
parentKey,
btns: item.children
diff --git a/src/utils/naiveTools.js b/src/utils/naiveTools.js
index 754ef12..5f647d1 100644
--- a/src/utils/naiveTools.js
+++ b/src/utils/naiveTools.js
@@ -9,7 +9,6 @@
import * as NaiveUI from 'naive-ui'
import { isNullOrUndef } from '@/utils'
-import settings from '@/settings'
import { useAppStore } from '@/store/modules/app'
export function setupMessage(NMessage) {
@@ -104,10 +103,9 @@ export function setupDialog(NDialog) {
export function setupNaiveDiscreteApi() {
const appStore = useAppStore()
- const { naiveThemeOverrides: themeOverrides } = settings
const configProviderProps = computed(() => ({
theme: appStore.isDark ? NaiveUI.darkTheme : undefined,
- themeOverrides,
+ themeOverrides: useAppStore().naiveThemeOverrides,
}))
const { message, dialog, notification, loadingBar } = NaiveUI.createDiscreteApi(
['message', 'dialog', 'notification', 'loadingBar'],
diff --git a/src/views/base/test-modal.vue b/src/views/base/test-modal.vue
index 0d9c919..a52cc56 100644
--- a/src/views/base/test-modal.vue
+++ b/src/views/base/test-modal.vue
@@ -1,7 +1,7 @@
@@ -32,6 +32,10 @@ function openModal1() {
okText: '再弹个窗',
cancelText: '关闭',
async onOk() {
+ if (!text.value) {
+ $message.warning('请输入内容')
+ return false // 阻止弹窗关闭
+ }
okLoading1.value = true
$message.loading('正在提交...', { key: 'modal1' })
await sleep(1000)
@@ -48,16 +52,10 @@ function openModal1() {
const [$modal2, okLoading2] = useModal()
function openModal2() {
- // modal的options都是可变的
- if ($modal1.value) {
- $modal1.value.options.style.top = '-100px'
- $modal1.value.options.title = '我走了'
- }
-
$modal2.value?.open({
cancelText: '关闭当前',
okText: '关闭所有弹窗',
- style: { width: '320px', padding: '12px', top: '100px' },
+ modalStyle: { width: '320px', padding: '12px', top: '100px' },
async onOk() {
okLoading2.value = true
$message.loading('正在关闭...', { key: 'modal2' })
@@ -68,12 +66,6 @@ function openModal2() {
$modal1.value?.close()
$message.success('已关闭', { key: 'modal2' })
},
- onCancel() {
- if ($modal1.value) {
- $modal1.value.options.style.top = '0'
- $modal1.value.options.title = '我又回来了'
- }
- },
})
}
diff --git a/src/views/pms/resource/components/ResAddOrEdit.vue b/src/views/pms/resource/components/ResAddOrEdit.vue
index ab0b1e9..2761000 100644
--- a/src/views/pms/resource/components/ResAddOrEdit.vue
+++ b/src/views/pms/resource/components/ResAddOrEdit.vue
@@ -155,7 +155,10 @@ const iconOptions = icons.map((item) => ({
value: item,
}))
const layoutOptions = [
- { label: '默认-default', value: 'default' },
+ { label: '跟随系统', value: '' },
+ { label: '简约-simple', value: 'simple' },
+ { label: '通用-normal', value: 'normal' },
+ { label: '全面-full', value: 'full' },
{ label: '空白-empty', value: 'empty' },
]
const required = {
diff --git a/src/views/pms/resource/index.vue b/src/views/pms/resource/index.vue
index 63c2809..b34c9e5 100644
--- a/src/views/pms/resource/index.vue
+++ b/src/views/pms/resource/index.vue
@@ -49,7 +49,7 @@
无
- {{ currentMenu.layout ?? 'default' }}
+ {{ currentMenu.layout || '跟随系统' }}
{{ currentMenu.show ? '是' : '否' }}