Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
功
功能演示系统
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
示例
功能演示系统
提交
bb32a019
提交
bb32a019
编写于
12月 24, 2020
作者:
ibizdev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
RedPig97 发布系统代码 [后台服务,演示应用]
上级
b21e2695
变更
8
展开全部
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
395 行增加
和
46 行删除
+395
-46
en-US-base.ts
app_Web/src/locale/lang/en-US-base.ts
+3
-0
zh-CN-base.ts
app_Web/src/locale/lang/zh-CN-base.ts
+3
-0
icon-menu-appmenu.ts
app_Web/src/mock/app/icon-menu-appmenu/icon-menu-appmenu.ts
+60
-0
icon-menu-appmenu-base.vue
.../widgets/app/icon-menu-appmenu/icon-menu-appmenu-base.vue
+110
-21
icon-menu-appmenu-model.ts
.../widgets/app/icon-menu-appmenu/icon-menu-appmenu-model.ts
+63
-0
icon-menu-appmenu.less
.../src/widgets/app/icon-menu-appmenu/icon-menu-appmenu.less
+154
-23
icon-menu-portlet-base.vue
.../widgets/app/icon-menu-portlet/icon-menu-portlet-base.vue
+1
-1
systemResource.json
demo-core/src/main/resources/permission/systemResource.json
+1
-1
未找到文件。
app_Web/src/locale/lang/en-US-base.ts
浏览文件 @
bb32a019
...
...
@@ -184,8 +184,11 @@ function getAppLocale(){
menus
:
{
iconmenu
:
{
menuitem1
:
commonLogic
.
appcommonhandle
(
"菜单1"
,
null
),
menuitem6
:
commonLogic
.
appcommonhandle
(
"菜单项"
,
null
),
menuitem2
:
commonLogic
.
appcommonhandle
(
"菜单2"
,
null
),
menuitem7
:
commonLogic
.
appcommonhandle
(
"菜单项"
,
null
),
menuitem3
:
commonLogic
.
appcommonhandle
(
"菜单3"
,
null
),
menuitem8
:
commonLogic
.
appcommonhandle
(
"菜单项"
,
null
),
menuitem4
:
commonLogic
.
appcommonhandle
(
"菜单4"
,
null
),
menuitem5
:
commonLogic
.
appcommonhandle
(
"菜单5"
,
null
),
},
...
...
app_Web/src/locale/lang/zh-CN-base.ts
浏览文件 @
bb32a019
...
...
@@ -184,8 +184,11 @@ function getAppLocale(){
menus
:
{
iconmenu
:
{
menuitem1
:
commonLogic
.
appcommonhandle
(
"菜单1"
,
null
),
menuitem6
:
commonLogic
.
appcommonhandle
(
"菜单项"
,
null
),
menuitem2
:
commonLogic
.
appcommonhandle
(
"菜单2"
,
null
),
menuitem7
:
commonLogic
.
appcommonhandle
(
"菜单项"
,
null
),
menuitem3
:
commonLogic
.
appcommonhandle
(
"菜单3"
,
null
),
menuitem8
:
commonLogic
.
appcommonhandle
(
"菜单项"
,
null
),
menuitem4
:
commonLogic
.
appcommonhandle
(
"菜单4"
,
null
),
menuitem5
:
commonLogic
.
appcommonhandle
(
"菜单5"
,
null
),
},
...
...
app_Web/src/mock/app/icon-menu-appmenu/icon-menu-appmenu.ts
浏览文件 @
bb32a019
...
...
@@ -27,6 +27,26 @@ mock.onGet('v7/icon-menuappmenu').reply((config: any) => {
textcls
:
''
,
appfunctag
:
''
,
resourcetag
:
''
,
items
:
[
{
id
:
'046CE0A0-B7D6-494F-B05C-2E6A7CB6ABEB'
,
name
:
'menuitem6'
,
text
:
'菜单项'
,
type
:
'MENUITEM'
,
counterid
:
''
,
tooltip
:
'菜单项'
,
expanded
:
false
,
separator
:
false
,
hidden
:
false
,
hidesidebar
:
false
,
opendefault
:
false
,
iconcls
:
''
,
icon
:
''
,
textcls
:
''
,
appfunctag
:
''
,
resourcetag
:
''
,
},
],
},
{
id
:
'2A01B442-ACB2-4175-BC52-0C5743A72DB2'
,
...
...
@@ -45,6 +65,26 @@ mock.onGet('v7/icon-menuappmenu').reply((config: any) => {
textcls
:
''
,
appfunctag
:
''
,
resourcetag
:
''
,
items
:
[
{
id
:
'59B91A6F-9217-481E-B3DB-58CBA9E19F60'
,
name
:
'menuitem7'
,
text
:
'菜单项'
,
type
:
'MENUITEM'
,
counterid
:
''
,
tooltip
:
'菜单项'
,
expanded
:
false
,
separator
:
false
,
hidden
:
false
,
hidesidebar
:
false
,
opendefault
:
false
,
iconcls
:
''
,
icon
:
''
,
textcls
:
''
,
appfunctag
:
''
,
resourcetag
:
''
,
},
],
},
{
id
:
'AD755E05-FA6C-4FA4-90E9-AD0234566866'
,
...
...
@@ -63,6 +103,26 @@ mock.onGet('v7/icon-menuappmenu').reply((config: any) => {
textcls
:
''
,
appfunctag
:
''
,
resourcetag
:
''
,
items
:
[
{
id
:
'DDEEB631-7B6F-46A3-B06D-BD8DB76C27C4'
,
name
:
'menuitem8'
,
text
:
'菜单项'
,
type
:
'MENUITEM'
,
counterid
:
''
,
tooltip
:
'菜单项'
,
expanded
:
false
,
separator
:
false
,
hidden
:
false
,
hidesidebar
:
false
,
opendefault
:
false
,
iconcls
:
''
,
icon
:
''
,
textcls
:
''
,
appfunctag
:
''
,
resourcetag
:
''
,
},
],
},
{
id
:
'C19A946A-FEB4-4A7F-B858-05CBB788B066'
,
...
...
app_Web/src/widgets/app/icon-menu-appmenu/icon-menu-appmenu-base.vue
浏览文件 @
bb32a019
<
template
>
<div
class=
"app-quick-menus"
>
<row>
<template
v-for=
"(item,index) in menus"
>
<card
:bordered=
"false"
dis-hover
:key =
"index"
>
<p
slot=
'title'
@
click=
"select(item.name, [item.name])"
>
<span
style=
"margin-right:12px"
>
<img
:src=
"item.icon"
v-if=
"!Object.is(item.icon, '')"
/>
<img
:src=
"item.iconcls"
v-else-if=
"!Object.is(item.iconcls, '')"
/>
<i
class=
'fa fa-cogs'
v-else
></i>
</span>
<span>
{{
$t
(
'app.menus.iconmenu.'
+
item
.
name
)
}}
</span>
<span
class=
"line"
></span>
</p>
<p
style=
" display: 'flex' "
>
<app-quick-menus
:menus =
"item.items"
:ctrlName =
"'iconmenu'"
v-if=
"item.items"
@
menuClick=
"select(item.name, [item.name])"
></app-quick-menus>
</p>
</card>
</
template
>
</row>
</div>
<div
class=
"app-app-menu"
>
<el-menu
class=
"app-menu"
:default-openeds=
"defaultOpeneds"
:mode=
"mode"
:menu-trigger=
"trigger"
:collapse=
"isCollapse"
@
select=
"select"
:default-active=
"defaultActive"
>
<template
v-if=
"Object.is(mode,'horizontal')"
>
<template
v-for=
"item0 in menus"
>
<template
v-if=
"item0.items && Array.isArray(item0.items) && item0.items.length > 0"
>
<el-submenu
v-show=
"!item0.hidden"
:index=
"item0.name"
:popper-class=
"popperClass"
:key=
"item0.id"
:class=
"item0.textcls"
>
<template
slot=
'title'
>
<template
v-if=
"item0.icon && item0.icon != ''"
>
<img
:src=
"item0.icon"
class=
'app-menu-icon'
/>
</
template
>
<
template
v-else-if=
"item0.iconcls && item0.iconcls != ''"
>
<i
:class=
"[item0.iconcls, 'app-menu-icon']"
></i>
</
template
>
<
template
v-else
>
<i
class=
'fa fa-cogs app-menu-icon'
></i>
</
template
>
<span
class=
'text'
:title=
"$t('app.menus.iconmenu.' + item0.name)"
>
{{$t('app.menus.iconmenu.' + item0.name)}}
</span>
</template>
<
template
v-for=
"item1 in item0.items"
>
<template
v-if=
"item1.items && Array.isArray(item1.items) && item1.items.length > 0"
>
<el-submenu
v-show=
"!item1.hidden"
:index=
"item1.name"
:popper-class=
"popperClass"
:key=
"item1.id"
:class=
"item1.textcls"
>
<template
slot=
'title'
>
<template
v-if=
"item1.icon && item1.icon != ''"
>
<img
:src=
"item1.icon"
class=
'app-menu-icon'
/>
</
template
>
<
template
v-else-if=
"item1.iconcls && item1.iconcls != ''"
>
<i
:class=
"[item1.iconcls, 'app-menu-icon']"
></i>
</
template
>
<span
class=
'text'
:title=
"$t('app.menus.iconmenu.' + item1.name)"
>
{{$t('app.menus.iconmenu.' + item1.name)}}
</span>
</template>
<
template
v-for=
"item2 in item1.items"
>
<template
v-if=
"item2.type =='MENUITEM'"
>
<el-menu-item
v-show=
"!item2.hidden"
:index=
"item2.name"
:key=
"item2.id"
:class=
"item2.textcls"
>
<template
v-if=
"item2.icon && item2.icon != ''"
>
<img
:src=
"item2.icon"
class=
'app-menu-icon'
/>
</
template
>
<
template
v-else-if=
"item2.iconcls && item2.iconcls != ''"
>
<i
:class=
"[item2.iconcls, 'app-menu-icon']"
></i>
</
template
>
<
template
slot=
"title"
>
<span
class=
"text"
:title=
"$t('app.menus.iconmenu.' + item2.name)"
>
{{
$t
(
'app.menus.iconmenu.'
+
item2
.
name
)
}}
</span>
<template
v-if=
"counterdata && counterdata[item2.counterid] && counterdata[item2.counterid] > 0"
>
<span
class=
"pull-right"
>
<badge
:count=
"counterdata[item2.counterid]"
:overflow-count=
"9999"
></badge>
</span>
</
template
>
</template>
</el-menu-item>
</template>
</template>
</el-submenu>
</template>
<
template
v-else
>
<template
v-if=
"item1.type =='MENUITEM'"
>
<el-menu-item
v-show=
"!item1.hidden"
:index=
"item1.name"
:key=
"item1.id"
:class=
"item1.textcls"
>
<template
v-if=
"item1.icon && item1.icon != ''"
>
<img
:src=
"item1.icon"
class=
'app-menu-icon'
/>
</
template
>
<
template
v-else-if=
"item1.iconcls && item1.iconcls != ''"
>
<i
:class=
"[item1.iconcls, 'app-menu-icon']"
></i>
</
template
>
<
template
slot=
"title"
>
<span
class=
"text"
:title=
"$t('app.menus.iconmenu.' + item1.name)"
>
{{
$t
(
'app.menus.iconmenu.'
+
item1
.
name
)
}}
</span>
<template
v-if=
"counterdata && counterdata[item1.counterid] && counterdata[item1.counterid] > 0"
>
<span
class=
"pull-right"
>
<badge
:count=
"counterdata[item1.counterid]"
:overflow-count=
"9999"
></badge>
</span>
</
template
>
</template>
</el-menu-item>
</template>
</template>
</template>
</el-submenu>
</template>
<
template
v-else
>
<template
v-if=
"item0.type =='MENUITEM'"
>
<el-menu-item
v-show=
"!item0.hidden"
:index=
"item0.name"
:key=
"item0.id"
:class=
"item0.textcls"
>
<template
v-if=
"item0.icon && item0.icon != ''"
>
<img
:src=
"item0.icon"
class=
'app-menu-icon'
/>
</
template
>
<
template
v-else-if=
"item0.iconcls && item0.iconcls != ''"
>
<i
:class=
"[item0.iconcls, 'app-menu-icon']"
></i>
</
template
>
<
template
v-else
>
<i
class=
'fa fa-cogs app-menu-icon'
></i>
</
template
>
<
template
slot=
"title"
>
<span
class=
"text"
:title=
"$t('app.menus.iconmenu.' + item0.name)"
>
{{
$t
(
'app.menus.iconmenu.'
+
item0
.
name
)
}}
</span>
<template
v-if=
"counterdata && counterdata[item0.counterid] && counterdata[item0.counterid] > 0"
>
<span
class=
"pull-right"
>
<badge
:count=
"counterdata[item0.counterid]"
:overflow-count=
"9999"
></badge>
</span>
</
template
>
</template>
</el-menu-item>
</template>
</template>
</template>
</template>
<app-menu-item
v-else
:isCollapse=
"isCollapse"
:menus=
"menus"
:ctrlName=
"'iconmenu'"
:isFirst=
"true"
:counterdata=
"counterdata"
:popper-class=
"popperClass"
></app-menu-item>
</el-menu>
</div>
</template>
<
script
lang=
'tsx'
>
...
...
app_Web/src/widgets/app/icon-menu-appmenu/icon-menu-appmenu-model.ts
浏览文件 @
bb32a019
...
...
@@ -32,6 +32,27 @@ export default class IconMenuModel {
appfunctag
:
''
,
resourcetag
:
''
,
authtag
:
'Web-iconMenu-menuitem1'
,
items
:
[
{
id
:
'046CE0A0-B7D6-494F-B05C-2E6A7CB6ABEB'
,
name
:
'menuitem6'
,
text
:
'菜单项'
,
type
:
'MENUITEM'
,
counterid
:
''
,
tooltip
:
'菜单项'
,
expanded
:
false
,
separator
:
false
,
hidden
:
false
,
hidesidebar
:
false
,
opendefault
:
false
,
iconcls
:
''
,
icon
:
''
,
textcls
:
''
,
appfunctag
:
''
,
resourcetag
:
''
,
authtag
:
'Web-iconMenu-menuitem6'
,
},
],
},
{
id
:
'2A01B442-ACB2-4175-BC52-0C5743A72DB2'
,
...
...
@@ -51,6 +72,27 @@ export default class IconMenuModel {
appfunctag
:
''
,
resourcetag
:
''
,
authtag
:
'Web-iconMenu-menuitem2'
,
items
:
[
{
id
:
'59B91A6F-9217-481E-B3DB-58CBA9E19F60'
,
name
:
'menuitem7'
,
text
:
'菜单项'
,
type
:
'MENUITEM'
,
counterid
:
''
,
tooltip
:
'菜单项'
,
expanded
:
false
,
separator
:
false
,
hidden
:
false
,
hidesidebar
:
false
,
opendefault
:
false
,
iconcls
:
''
,
icon
:
''
,
textcls
:
''
,
appfunctag
:
''
,
resourcetag
:
''
,
authtag
:
'Web-iconMenu-menuitem7'
,
},
],
},
{
id
:
'AD755E05-FA6C-4FA4-90E9-AD0234566866'
,
...
...
@@ -70,6 +112,27 @@ export default class IconMenuModel {
appfunctag
:
''
,
resourcetag
:
''
,
authtag
:
'Web-iconMenu-menuitem3'
,
items
:
[
{
id
:
'DDEEB631-7B6F-46A3-B06D-BD8DB76C27C4'
,
name
:
'menuitem8'
,
text
:
'菜单项'
,
type
:
'MENUITEM'
,
counterid
:
''
,
tooltip
:
'菜单项'
,
expanded
:
false
,
separator
:
false
,
hidden
:
false
,
hidesidebar
:
false
,
opendefault
:
false
,
iconcls
:
''
,
icon
:
''
,
textcls
:
''
,
appfunctag
:
''
,
resourcetag
:
''
,
authtag
:
'Web-iconMenu-menuitem8'
,
},
],
},
{
id
:
'C19A946A-FEB4-4A7F-B858-05CBB788B066'
,
...
...
app_Web/src/widgets/app/icon-menu-appmenu/icon-menu-appmenu.less
浏览文件 @
bb32a019
// this is less
/*** BEGIN:potal菜单 ***/
.app-quick-menus{
>.ivu-row{
.ivu-card{
.ivu-card-body{
>p{
>.app-menus{
display: flex;
flex-wrap: wrap;
>div{
width: 100%;
margin-right: 10px;
.ivu-card-body{
>div{
display: flex;
>span{
margin-right: 12px;
}
/*** BRGIN:菜单样式 ***/
.app-app-menu {
overflow-y: auto;
overflow-x: hidden;
height: calc(100% - 58px);
.ivu-divider{
background-color: #b3b3b3;
height: 2px;
}
> .el-menu {
border-right: 0;
.el-menu-item {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
word-break: break-all;
.ivu-badge {
.ivu-badge-count {
box-shadow: 0 0 0 0px #fff;
}
}
}
.el-submenu__title i, .el-menu-item i {
font-size: 12px;
width: 18px;
}
.el-submenu__title .app-menu-icon,.el-menu-item .app-menu-icon{
width:20px;
font-size: 14px;
}
.el-submenu__title .text {
font-size: 16px;
}
.el-submenu__title .app-menu-circle,.el-menu-item .app-menu-circle {
display: inline-block;
border-radius: 50%;
width: 20px;
height: 20px;
line-height: 36px;
vertical-align:middle;
background: rgb(var(--app-footer-background-color-rgb));
border: 1px solid #fff;
border-color: rgb(var(--app-header-color-rgb));
color: rgb(var(--app-header-color-rgb));;
text-align: center;
font: 12px Arial, sans-serif;
}
.el-submenu__title, .el-menu-item {
height: 50px;
font-size: 14px;
line-height: 50px;
border-left: 4px !important;
}
.el-menu-item .el-tooltip {
padding-left: 12px !important;
}
.isCollpase .el-submenu__title{
padding-left: 12px !important;
}
.isFirst > .text {
font-size: 16px !important;
}
.el-menu-item, .el-submenu, .el-menu {
border-top: 1px solid #fff;
}
> .el-menu-item, > .el-submenu > .el-submenu__title {
height: 56px;
line-height: 56px;
padding-left: 16px !important;
}
.app-menu-icon {
margin: 4px;
text-align: center;
}
> .el-submenu {
> .el-menu {
> .el-menu-item, > .el-submenu > .el-submenu__title {
padding-left: 44px !important;
}
> .el-submenu {
> .el-menu {
> .el-menu-item, > .el-submenu > .el-submenu__title {
padding-left: 68px !important;
}
}
}
}
}
}
}
}
.active-icon {
font-size: 40px !important;
position: absolute;
right: 0;
line-height: 42px;
color: #fff !important;
display: none;
width: 24px !important;
overflow: hidden;
}
}
.el-menu--horizontal{
display: flex;
width: calc(100vw - 1100px);
height: 65px;
flex-wrap: nowrap;
overflow-x:scroll;
padding-top: 3px;
.el-menu-item{
overflow: visible;
}
.el-submenu{
.el-submenu__title{
padding-right: 0px !important;
padding-left: 0px !important;
}
}
}
.ivu-divider-horizontal {
width: 100%;
min-width: 100%;
margin: 4px auto;
margin-bottom: 1px;
}
}
}
.app-popper-menu {
.el-menu-item, .el-submenu__title {
height: 36px;
font-size: 16px;
line-height: 36px;
}
> .el-menu-item, > .el-submenu > .el-submenu__title {
height: 40px;
line-height: 40px;
}
.el-menu-item {
.ivu-badge {
.ivu-badge-count {
box-shadow: 0 0 0 0px #fff;
}
}
> span{
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.ivu-divider-horizontal {
width: 100%;
min-width: 100%;
margin: 4px auto;
margin-bottom: 1px;
}
}
// this is less
app_Web/src/widgets/app/icon-menu-portlet/icon-menu-portlet-base.vue
浏览文件 @
bb32a019
...
...
@@ -12,7 +12,7 @@
:viewState=
"viewState"
:viewparams=
"viewparams"
:context=
"context"
:showBusyIndicator=
"true"
:showBusyIndicator=
"true"
name=
"db_appmenu1_appmenu"
ref=
'db_appmenu1_appmenu'
@
closeview=
"closeView($event)"
>
...
...
demo-core/src/main/resources/permission/systemResource.json
浏览文件 @
bb32a019
此差异已折叠。
点击以展开。
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录