Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
basic-vue-admin
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Basic
basic-vue-admin
Commits
d5d4c4b4
提交
d5d4c4b4
authored
3月 07, 2021
作者:
Vben
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(menu): fix menu icon missing close #328
上级
491f1fcf
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
22 行增加
和
146 行删除
+22
-146
index.ts
src/components/Menu/index.ts
+2
-2
ExpandIcon.vue
src/components/Menu/src/components/ExpandIcon.vue
+0
-43
MenuItemTag.vue
src/components/Menu/src/components/MenuItemTag.vue
+0
-57
index.ts
src/components/SimpleMenu/index.ts
+1
-0
SimpleMenuTag.vue
src/components/SimpleMenu/src/SimpleMenuTag.vue
+4
-5
MixSider.vue
src/layouts/default/sider/MixSider.vue
+6
-28
index.vue
src/layouts/default/sider/index.vue
+1
-0
main.ts
src/main.ts
+4
-7
permission.ts
src/store/modules/permission.ts
+3
-4
stylelint.config.js
stylelint.config.js
+1
-0
没有找到文件。
src/components/Menu/index.ts
浏览文件 @
d5d4c4b4
import
{
createAsyncComponent
}
from
'/@/utils/factory/createAsyncComponent'
;
//
import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
import
BasicMenu
from
'./src/BasicMenu.vue'
;
import
BasicMenu
from
'./src/BasicMenu.vue'
;
// export const BasicMenu = createAsyncComponent(() => import('./src/BasicMenu.vue'));
// export const BasicMenu = createAsyncComponent(() => import('./src/BasicMenu.vue'));
export
const
MenuTag
=
createAsyncComponent
(()
=>
import
(
'./src/components/MenuItemTag.vue'
));
//
export const MenuTag = createAsyncComponent(() => import('./src/components/MenuItemTag.vue'));
export
{
BasicMenu
};
export
{
BasicMenu
};
src/components/Menu/src/components/ExpandIcon.vue
deleted
100644 → 0
浏览文件 @
491f1fcf
<
template
>
<BasicArrow
:expand=
"getIsOpen"
bottom
inset
:class=
"getWrapperClass"
/>
</
template
>
<
script
lang=
"ts"
>
import
{
defineComponent
,
PropType
,
computed
}
from
'vue'
;
import
{
useDesign
}
from
'/@/hooks/web/useDesign'
;
import
{
BasicArrow
}
from
'/@/components/Basic'
;
import
{
propTypes
}
from
'/@/utils/propTypes'
;
export
default
defineComponent
({
name
:
'BasicMenuItem'
,
components
:
{
BasicArrow
},
props
:
{
key
:
propTypes
.
string
,
openKeys
:
{
type
:
Array
as
PropType
<
string
[]
>
,
default
:
[],
},
collapsed
:
propTypes
.
bool
,
},
setup
(
props
)
{
const
{
prefixCls
}
=
useDesign
(
'basic-menu'
);
const
getIsOpen
=
computed
(()
=>
{
return
props
.
openKeys
.
includes
(
props
.
key
);
});
const
getWrapperClass
=
computed
(()
=>
{
return
[
`
${
prefixCls
}
__expand-icon`
,
{
[
`
${
prefixCls
}
__expand-icon--collapsed`
]:
props
.
collapsed
,
},
];
});
return
{
prefixCls
,
getIsOpen
,
getWrapperClass
,
};
},
});
</
script
>
src/components/Menu/src/components/MenuItemTag.vue
deleted
100644 → 0
浏览文件 @
491f1fcf
<
template
>
<span
:class=
"getTagClass"
v-if=
"getShowTag"
>
{{
getContent
}}
</span>
</
template
>
<
script
lang=
"ts"
>
import
{
defineComponent
,
computed
}
from
'vue'
;
import
{
useDesign
}
from
'/@/hooks/web/useDesign'
;
import
{
contentProps
}
from
'../props'
;
export
default
defineComponent
({
name
:
'MenuItemTag'
,
props
:
contentProps
,
setup
(
props
)
{
const
{
prefixCls
}
=
useDesign
(
'basic-menu-item-tag'
);
const
getShowTag
=
computed
(()
=>
{
const
{
item
,
showTitle
,
isHorizontal
}
=
props
;
if
(
!
item
||
showTitle
||
isHorizontal
)
return
false
;
const
{
tag
}
=
item
;
if
(
!
tag
)
return
false
;
const
{
dot
,
content
}
=
tag
;
if
(
!
dot
&&
!
content
)
return
false
;
return
true
;
});
const
getContent
=
computed
(()
=>
{
if
(
!
getShowTag
.
value
)
return
''
;
const
{
item
}
=
props
;
const
{
tag
}
=
item
;
const
{
dot
,
content
}
=
tag
!
;
return
dot
?
''
:
content
;
});
const
getTagClass
=
computed
(()
=>
{
const
{
item
}
=
props
;
const
{
tag
=
{}
}
=
item
||
{};
const
{
dot
,
type
=
'error'
}
=
tag
;
return
[
prefixCls
,
[
`
${
prefixCls
}
--
${
type
}
`
],
{
[
`
${
prefixCls
}
--dot`
]:
dot
,
},
];
});
return
{
prefixCls
,
getTagClass
,
getShowTag
,
getContent
,
};
},
});
</
script
>
src/components/SimpleMenu/index.ts
浏览文件 @
d5d4c4b4
export
{
default
as
SimpleMenu
}
from
'./src/SimpleMenu.vue'
;
export
{
default
as
SimpleMenu
}
from
'./src/SimpleMenu.vue'
;
export
{
default
as
SimpleMenuTag
}
from
'./src/SimpleMenuTag.vue'
;
src/components/SimpleMenu/src/SimpleMenuTag.vue
浏览文件 @
d5d4c4b4
...
@@ -8,6 +8,7 @@
...
@@ -8,6 +8,7 @@
import
{
defineComponent
,
computed
}
from
'vue'
;
import
{
defineComponent
,
computed
}
from
'vue'
;
import
{
useDesign
}
from
'/@/hooks/web/useDesign'
;
import
{
useDesign
}
from
'/@/hooks/web/useDesign'
;
import
{
propTypes
}
from
'/@/utils/propTypes'
;
export
default
defineComponent
({
export
default
defineComponent
({
name
:
'SimpleMenuTag'
,
name
:
'SimpleMenuTag'
,
...
@@ -16,10 +17,8 @@
...
@@ -16,10 +17,8 @@
type
:
Object
as
PropType
<
Menu
>
,
type
:
Object
as
PropType
<
Menu
>
,
default
:
{},
default
:
{},
},
},
collapseParent
:
{
dot
:
propTypes
.
bool
,
type
:
Boolean
as
PropType
<
boolean
>
,
collapseParent
:
propTypes
.
bool
,
default
:
false
,
},
},
},
setup
(
props
)
{
setup
(
props
)
{
const
{
prefixCls
}
=
useDesign
(
'simple-menu'
);
const
{
prefixCls
}
=
useDesign
(
'simple-menu'
);
...
@@ -56,7 +55,7 @@
...
@@ -56,7 +55,7 @@
[
`
${
tagCls
}
--
${
type
}
`
],
[
`
${
tagCls
}
--
${
type
}
`
],
{
{
[
`
${
tagCls
}
--collapse`
]:
collapseParent
,
[
`
${
tagCls
}
--collapse`
]:
collapseParent
,
[
`
${
tagCls
}
--dot`
]:
dot
,
[
`
${
tagCls
}
--dot`
]:
dot
||
props
.
dot
,
},
},
];
];
});
});
...
...
src/layouts/default/sider/MixSider.vue
浏览文件 @
d5d4c4b4
<
template
>
<
template
>
<div
:class=
"`$
{prefixCls}-dom`" :style="getDomStyle">
</div>
<div
:class=
"`$
{prefixCls}-dom`" :style="getDomStyle">
</div>
<div
<div
v-click-outside=
"handleClickOutside"
v-click-outside=
"handleClickOutside"
:style=
"getWrapStyle"
:style=
"getWrapStyle"
...
@@ -27,15 +26,15 @@
...
@@ -27,15 +26,15 @@
[`${prefixCls}-module__item--active`]: item.path === activePath,
[`${prefixCls}-module__item--active`]: item.path === activePath,
},
},
]"
]"
v-bind="getItemEvents(item)"
v-for="item in menuModules"
v-for="item in menuModules"
:key="item.path"
:key="item.path"
v-bind="getItemEvents(item)"
>
>
<
MenuTag
:item=
"item"
:showTitle=
"false"
:isHorizontal=
"false"
/>
<
SimpleMenuTag
:item=
"item"
collapseParent
dot
/>
<Icon
<Icon
:class=
"`$
{prefixCls}-module__icon`"
:class=
"`$
{prefixCls}-module__icon`"
:size="getCollapsed ? 16 : 20"
:size="getCollapsed ? 16 : 20"
:icon="item.
meta
&&
item.meta.icon
"
:icon="item.
icon || (item.meta
&&
item.meta.icon)
"
/>
/>
<p
:class=
"`$
{prefixCls}-module__name`">
<p
:class=
"`$
{prefixCls}-module__name`">
{{
t
(
item
.
name
)
}}
{{
t
(
item
.
name
)
}}
...
@@ -85,8 +84,8 @@
...
@@ -85,8 +84,8 @@
import
{
defineComponent
,
onMounted
,
ref
,
computed
,
unref
}
from
'vue'
;
import
{
defineComponent
,
onMounted
,
ref
,
computed
,
unref
}
from
'vue'
;
import
{
MenuTag
}
from
'/@/components/Menu'
;
import
{
ScrollContainer
}
from
'/@/components/Container'
;
import
{
ScrollContainer
}
from
'/@/components/Container'
;
import
{
SimpleMenuTag
}
from
'/@/components/SimpleMenu'
;
import
Icon
from
'/@/components/Icon'
;
import
Icon
from
'/@/components/Icon'
;
import
{
AppLogo
}
from
'/@/components/Application'
;
import
{
AppLogo
}
from
'/@/components/Application'
;
import
Trigger
from
'../trigger/HeaderTrigger.vue'
;
import
Trigger
from
'../trigger/HeaderTrigger.vue'
;
...
@@ -111,9 +110,9 @@
...
@@ -111,9 +110,9 @@
ScrollContainer
,
ScrollContainer
,
AppLogo
,
AppLogo
,
SimpleMenu
,
SimpleMenu
,
MenuTag
,
Icon
,
Icon
,
Trigger
,
Trigger
,
SimpleMenuTag
,
},
},
directives
:
{
directives
:
{
clickOutside
,
clickOutside
,
...
@@ -337,8 +336,6 @@
...
@@ -337,8 +336,6 @@
</
script
>
</
script
>
<
style
lang=
"less"
>
<
style
lang=
"less"
>
@prefix-cls
:
~
'@{namespace}-layout-mix-sider'
;
@prefix-cls
:
~
'@{namespace}-layout-mix-sider'
;
@tag-prefix-cls
:
~
'@{namespace}-basic-menu-item-tag'
;
@menu-prefix-cls
:
~
'@{namespace}-menu'
;
@width
:
80px
;
@width
:
80px
;
.@
{
prefix-cls
}
{
.@
{
prefix-cls
}
{
position
:
fixed
;
position
:
fixed
;
...
@@ -349,15 +346,6 @@
...
@@ -349,15 +346,6 @@
overflow
:
hidden
;
overflow
:
hidden
;
background
:
@
sider-dark-bg-color
;
background
:
@
sider-dark-bg-color
;
transition
:
all
0.2s
ease
0s
;
transition
:
all
0.2s
ease
0s
;
.@{tag-prefix-cls
}
{
position
:
absolute
;
top
:
6px
;
right
:
2px
;
}
.@
{
menu-prefix-cls
}
{
width
:
100%
!important
;
}
&-dom
{
&-dom
{
height
:
100%
;
height
:
100%
;
...
@@ -420,7 +408,7 @@
...
@@ -420,7 +408,7 @@
&
.dark
{
&
.dark
{
&.open
{
&.open
{
.@{prefix-cls
}
-logo
{
.@{prefix-cls
}
-logo
{
border-bottom
:
1px
solid
@
border-color
;
//
border-bottom
:
1px
solid
@
border-color
;
}
}
>
.scrollbar
{
>
.scrollbar
{
...
@@ -524,16 +512,6 @@
...
@@ -524,16 +512,6 @@
height
:
calc
(
100%
);
height
:
calc
(
100%
);
background
:
#fff
;
background
:
#fff
;
transition
:
all
0.2s
;
transition
:
all
0.2s
;
.@{tag-prefix-cls
}
{
position
:
absolute
;
top
:
10px
;
right
:
30px
;
&--dot
{
top
:
50%
;
margin-top
:
-3px
;
}
}
&__title
{
&__title
{
display
:
flex
;
display
:
flex
;
...
...
src/layouts/default/sider/index.vue
浏览文件 @
d5d4c4b4
...
@@ -43,6 +43,7 @@
...
@@ -43,6 +43,7 @@
</
script
>
</
script
>
<
style
lang=
"less"
>
<
style
lang=
"less"
>
@prefix-cls
:
~
'@{namespace}-layout-sider-wrapper'
;
@prefix-cls
:
~
'@{namespace}-layout-sider-wrapper'
;
.@
{
prefix-cls
}
{
.@
{
prefix-cls
}
{
.ant-drawer-body
{
.ant-drawer-body
{
height
:
100vh
;
height
:
100vh
;
...
...
src/main.ts
浏览文件 @
d5d4c4b4
...
@@ -27,10 +27,11 @@ import { isDevMode } from '/@/utils/env';
...
@@ -27,10 +27,11 @@ import { isDevMode } from '/@/utils/env';
(
async
()
=>
{
(
async
()
=>
{
const
app
=
createApp
(
App
);
const
app
=
createApp
(
App
);
// Register global components
// Register global components
registerGlobComp
(
app
);
registerGlobComp
(
app
);
// Multilingual configuration
await
setupI18n
(
app
);
// Configure routing
// Configure routing
setupRouter
(
app
);
setupRouter
(
app
);
...
@@ -43,12 +44,8 @@ import { isDevMode } from '/@/utils/env';
...
@@ -43,12 +44,8 @@ import { isDevMode } from '/@/utils/env';
// Configure global error handling
// Configure global error handling
setupErrorHandle
(
app
);
setupErrorHandle
(
app
);
await
Promise
.
all
([
// Mount when the route is ready
// Multilingual configuration
await
router
.
isReady
();
setupI18n
(
app
),
// Mount when the route is ready
router
.
isReady
(),
]);
app
.
mount
(
'#app'
,
true
);
app
.
mount
(
'#app'
,
true
);
...
...
src/store/modules/permission.ts
浏览文件 @
d5d4c4b4
...
@@ -18,7 +18,7 @@ import { transformObjToRoute } from '/@/router/helper/routeHelper';
...
@@ -18,7 +18,7 @@ import { transformObjToRoute } from '/@/router/helper/routeHelper';
import
{
transformRouteToMenu
}
from
'/@/router/helper/menuHelper'
;
import
{
transformRouteToMenu
}
from
'/@/router/helper/menuHelper'
;
import
{
useMessage
}
from
'/@/hooks/web/useMessage'
;
import
{
useMessage
}
from
'/@/hooks/web/useMessage'
;
//
import { useI18n } from '/@/hooks/web/useI18n';
import
{
useI18n
}
from
'/@/hooks/web/useI18n'
;
import
{
ERROR_LOG_ROUTE
,
PAGE_NOT_FOUND_ROUTE
}
from
'/@/router/constant'
;
import
{
ERROR_LOG_ROUTE
,
PAGE_NOT_FOUND_ROUTE
}
from
'/@/router/constant'
;
const
{
createMessage
}
=
useMessage
();
const
{
createMessage
}
=
useMessage
();
...
@@ -84,7 +84,7 @@ class Permission extends VuexModule {
...
@@ -84,7 +84,7 @@ class Permission extends VuexModule {
@
Action
@
Action
async
buildRoutesAction
(
id
?:
number
|
string
):
Promise
<
AppRouteRecordRaw
[]
>
{
async
buildRoutesAction
(
id
?:
number
|
string
):
Promise
<
AppRouteRecordRaw
[]
>
{
//
const { t } = useI18n();
const
{
t
}
=
useI18n
();
let
routes
:
AppRouteRecordRaw
[]
=
[];
let
routes
:
AppRouteRecordRaw
[]
=
[];
const
roleList
=
toRaw
(
userStore
.
getRoleListState
);
const
roleList
=
toRaw
(
userStore
.
getRoleListState
);
...
@@ -101,8 +101,7 @@ class Permission extends VuexModule {
...
@@ -101,8 +101,7 @@ class Permission extends VuexModule {
// If you are sure that you do not need to do background dynamic permissions, please comment the entire judgment below
// If you are sure that you do not need to do background dynamic permissions, please comment the entire judgment below
}
else
if
(
permissionMode
===
PermissionModeEnum
.
BACK
)
{
}
else
if
(
permissionMode
===
PermissionModeEnum
.
BACK
)
{
createMessage
.
loading
({
createMessage
.
loading
({
content
:
'Loading menu...'
,
content
:
t
(
'sys.app.menuLoading'
),
// content: 't('sys.app.menuLoading')',
duration
:
1
,
duration
:
1
,
});
});
// Here to get the background routing menu logic to modify by yourself
// Here to get the background routing menu logic to modify by yourself
...
...
stylelint.config.js
浏览文件 @
d5d4c4b4
...
@@ -16,6 +16,7 @@ module.exports = {
...
@@ -16,6 +16,7 @@ module.exports = {
},
},
],
],
'no-empty-source'
:
null
,
'no-empty-source'
:
null
,
'named-grid-areas-no-invalid'
:
null
,
'unicode-bom'
:
'never'
,
'unicode-bom'
:
'never'
,
'no-descending-specificity'
:
null
,
'no-descending-specificity'
:
null
,
'font-family-no-missing-generic-family-keyword'
:
null
,
'font-family-no-missing-generic-family-keyword'
:
null
,
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论