Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
功
功能演示系统
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
示例
功能演示系统
提交
8ee76e82
提交
8ee76e82
编写于
12月 14, 2020
作者:
ibizdev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ShineKOT 发布系统代码 [后台服务,演示应用]
上级
d6f66297
变更
17
隐藏空白字符变更
内嵌
并排
正在显示
17 个修改的文件
包含
1440 行增加
和
6 行删除
+1440
-6
portlet-data.json
app_Web/public/assets/json/portlet-data.json
+1
-1
en-US-base.ts
app_Web/src/locale/lang/en-US-base.ts
+1
-1
zh-CN-base.ts
app_Web/src/locale/lang/zh-CN-base.ts
+1
-1
quickmenubar-appmenu.ts
...src/mock/app/quickmenubar-appmenu/quickmenubar-appmenu.ts
+54
-0
portlet.ts
app_Web/src/mock/portlet/portlet.ts
+1
-1
app-portal-view2-db-dashboard.vue
...rtal-view2-db-dashboard/app-portal-view2-db-dashboard.vue
+1
-1
quickmenubar-appmenu-base.vue
...ts/app/quickmenubar-appmenu/quickmenubar-appmenu-base.vue
+646
-0
quickmenubar-appmenu-model.ts
...ts/app/quickmenubar-appmenu/quickmenubar-appmenu-model.ts
+88
-0
quickmenubar-appmenu-service.ts
.../app/quickmenubar-appmenu/quickmenubar-appmenu-service.ts
+46
-0
quickmenubar-appmenu.less
...idgets/app/quickmenubar-appmenu/quickmenubar-appmenu.less
+159
-0
quickmenubar-appmenu.vue
...widgets/app/quickmenubar-appmenu/quickmenubar-appmenu.vue
+14
-0
quickmenubar-portlet-base.vue
...ts/app/quickmenubar-portlet/quickmenubar-portlet-base.vue
+315
-0
quickmenubar-portlet-model.ts
...ts/app/quickmenubar-portlet/quickmenubar-portlet-model.ts
+21
-0
quickmenubar-portlet-service.ts
.../app/quickmenubar-portlet/quickmenubar-portlet-service.ts
+11
-0
quickmenubar-portlet.less
...idgets/app/quickmenubar-portlet/quickmenubar-portlet.less
+63
-0
quickmenubar-portlet.vue
...widgets/app/quickmenubar-portlet/quickmenubar-portlet.vue
+17
-0
systemResource.json
demo-core/src/main/resources/permission/systemResource.json
+1
-1
未找到文件。
app_Web/public/assets/json/portlet-data.json
浏览文件 @
8ee76e82
...
...
@@ -314,7 +314,7 @@
{
"type"
:
"app"
,
"appCodeName"
:
"Web"
,
"appName"
:
"演示应用"
,
"portletCodeName"
:
"
appMenu
"
,
"portletCodeName"
:
"
QUICKMENUBAR
"
,
"portletName"
:
"快捷菜单"
,
"groupCodeName"
:
"Ungroup"
,
"groupName"
:
"(未分类)"
,
...
...
app_Web/src/locale/lang/en-US-base.ts
浏览文件 @
8ee76e82
...
...
@@ -179,7 +179,7 @@ function getAppLocale(){
info
:
"Please configure the data import item"
},
menus
:
{
appmenu
:
{
quickmenubar
:
{
menuitem1
:
commonLogic
.
appcommonhandle
(
"应用菜单"
,
null
),
menuitem2
:
commonLogic
.
appcommonhandle
(
"打开文档"
,
null
),
},
...
...
app_Web/src/locale/lang/zh-CN-base.ts
浏览文件 @
8ee76e82
...
...
@@ -179,7 +179,7 @@ function getAppLocale(){
info
:
"请配置数据导入项"
},
menus
:
{
appmenu
:
{
quickmenubar
:
{
menuitem1
:
commonLogic
.
appcommonhandle
(
"应用菜单"
,
null
),
menuitem2
:
commonLogic
.
appcommonhandle
(
"打开文档"
,
null
),
},
...
...
app_Web/src/mock/app/quickmenubar-appmenu/quickmenubar-appmenu.ts
0 → 100644
浏览文件 @
8ee76e82
import
{
MockAdapter
}
from
'@/mock/mock-adapter'
;
const
mock
=
MockAdapter
.
getInstance
();
import
Mock
from
'mockjs'
const
Random
=
Mock
.
Random
;
// 获取应用数据
mock
.
onGet
(
'v7/quickmenubarappmenu'
).
reply
((
config
:
any
)
=>
{
let
status
=
MockAdapter
.
mockStatus
(
config
);
return
[
status
,
{
name
:
'db_appmenu1_appmenu'
,
items
:
[
{
id
:
'161CE06C-7FEB-4D3A-908A-EA2756104A50'
,
name
:
'menuitem1'
,
text
:
'应用菜单'
,
type
:
'MENUITEM'
,
counterid
:
''
,
tooltip
:
'应用菜单'
,
expanded
:
false
,
separator
:
false
,
hidden
:
false
,
hidesidebar
:
false
,
opendefault
:
false
,
iconcls
:
''
,
icon
:
''
,
textcls
:
''
,
appfunctag
:
''
,
resourcetag
:
''
,
items
:
[
{
id
:
'00926656-BCDE-45AF-B381-3B465E80D8EB'
,
name
:
'menuitem2'
,
text
:
'打开文档'
,
type
:
'MENUITEM'
,
counterid
:
''
,
tooltip
:
'打开文档'
,
expanded
:
false
,
separator
:
false
,
hidden
:
false
,
hidesidebar
:
false
,
opendefault
:
false
,
iconcls
:
'fa fa-twitter'
,
icon
:
''
,
textcls
:
''
,
appfunctag
:
'AppFunc93'
,
resourcetag
:
''
,
},
],
},
],
}];
});
app_Web/src/mock/portlet/portlet.ts
浏览文件 @
8ee76e82
...
...
@@ -324,7 +324,7 @@ mock.onGet('./assets/json/portlet-data.json').reply((config: any) => {
{
"type"
:
"app"
,
"appCodeName"
:
"Web"
,
"appName"
:
"演示应用"
,
"portletCodeName"
:
"
appMenu
"
,
"portletCodeName"
:
"
QUICKMENUBAR
"
,
"portletName"
:
"快捷菜单"
,
"groupCodeName"
:
"Ungroup"
,
"groupName"
:
"(未分类)"
,
...
...
app_Web/src/widgets/app/app-portal-view2-db-dashboard/app-portal-view2-db-dashboard.vue
浏览文件 @
8ee76e82
<
script
lang=
'tsx'
>
import
{
Component
}
from
'vue-property-decorator'
;
import
AppPortalView2_dbBase
from
'./app-portal-view2-db-dashboard-base.vue'
;
import
view_db_appmenu1
from
'@widgets/app/
app-menu-portlet/app-menu
-portlet.vue'
;
import
view_db_appmenu1
from
'@widgets/app/
quickmenubar-portlet/quickmenubar
-portlet.vue'
;
@
Component
({
...
...
app_Web/src/widgets/app/quickmenubar-appmenu/quickmenubar-appmenu-base.vue
0 → 100644
浏览文件 @
8ee76e82
<
template
>
<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.quickmenubar.' + item0.name)"
>
{{$t('app.menus.quickmenubar.' + 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.quickmenubar.' + item1.name)"
>
{{$t('app.menus.quickmenubar.' + 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.quickmenubar.' + item2.name)"
>
{{
$t
(
'app.menus.quickmenubar.'
+
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.quickmenubar.' + item1.name)"
>
{{
$t
(
'app.menus.quickmenubar.'
+
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.quickmenubar.' + item0.name)"
>
{{
$t
(
'app.menus.quickmenubar.'
+
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=
"'quickmenubar'"
:isFirst=
"true"
:counterdata=
"counterdata"
:popper-class=
"popperClass"
></app-menu-item>
</el-menu>
</div>
</template>
<
script
lang=
'tsx'
>
import
{
Vue
,
Component
,
Prop
,
Provide
,
Emit
,
Watch
,
Model
,
Inject
}
from
'vue-property-decorator'
;
import
{
CreateElement
}
from
'vue'
;
import
{
Subject
,
Subscription
}
from
'rxjs'
;
import
{
ControlInterface
}
from
'@/interface/control'
;
import
{
UIActionTool
,
Util
,
ViewTool
}
from
'@/utils'
;
import
NavDataService
from
'@/service/app/navdata-service'
;
import
AppCenterService
from
"@service/app/app-center-service"
;
import
QUICKMENUBARService
from
'./quickmenubar-appmenu-service'
;
import
QUICKMENUBARModel
from
'./quickmenubar-appmenu-model'
;
import
{
Environment
}
from
'@/environments/environment'
;
import
AuthService
from
'@/authservice/auth-service'
;
@
Component
({
components
:
{
}
})
export
default
class
QUICKMENUBARBase
extends
Vue
implements
ControlInterface
{
/**
* 名称
*
* @type {string}
* @memberof QUICKMENUBARBase
*/
@
Prop
()
public
name
?:
string
;
/**
* 视图通讯对象
*
* @type {Subject<ViewState>}
* @memberof QUICKMENUBARBase
*/
@
Prop
()
public
viewState
!
:
Subject
<
ViewState
>
;
/**
* 应用上下文
*
* @type {*}
* @memberof QUICKMENUBARBase
*/
@
Prop
()
public
context
!
:
any
;
/**
* 视图参数
*
* @type {*}
* @memberof QUICKMENUBARBase
*/
@
Prop
()
public
viewparams
!
:
any
;
/**
* 视图状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof QUICKMENUBARBase
*/
public
viewStateEvent
:
Subscription
|
undefined
;
/**
* 获取部件类型
*
* @returns {string}
* @memberof QUICKMENUBARBase
*/
public
getControlType
():
string
{
return
'APPMENU'
}
/**
* 建构部件服务对象
*
* @type {QUICKMENUBARService}
* @memberof QUICKMENUBARBase
*/
public
service
:
QUICKMENUBARService
=
new
QUICKMENUBARService
({
$store
:
this
.
$store
});
/**
* 关闭视图
*
* @param {any} args
* @memberof QUICKMENUBARBase
*/
public
closeView
(
args
:
any
):
void
{
let
_this
:
any
=
this
;
_this
.
$emit
(
'closeview'
,
[
args
]);
}
/**
* 计数器刷新
*
* @memberof QUICKMENUBARBase
*/
public
counterRefresh
(){
const
_this
:
any
=
this
;
if
(
_this
.
counterServiceArray
&&
_this
.
counterServiceArray
.
length
>
0
){
_this
.
counterServiceArray
.
forEach
((
item
:
any
)
=>
{
if
(
item
.
refreshData
&&
item
.
refreshData
instanceof
Function
){
item
.
refreshData
();
}
})
}
}
/**
* 获取多项数据
*
* @returns {any[]}
* @memberof QUICKMENUBARBase
*/
public
getDatas
():
any
[]
{
return
[];
}
/**
* 获取单项树
*
* @returns {*}
* @memberof QUICKMENUBARBase
*/
public
getData
():
any
{
return
null
;
}
/**
* 导航模式(route:面包屑模式、tab:分页导航模式)
*
* @type {string}
* @memberof QUICKMENUBARBase
*/
@
Prop
({
default
:
'tab'
})
public
navModel
?:
string
;
/**
* 视图标识
*
* @type {string}
* @memberof QUICKMENUBARBase
*/
@
Prop
()
public
viewtag
!
:
string
;
/**
* 菜单模型
*
* @public
* @type {QUICKMENUBARModel}
* @memberof QUICKMENUBARBase
*/
public
menuMode
:
QUICKMENUBARModel
=
new
QUICKMENUBARModel
();
/**
* 显示处理提示
*
* @type {boolean}
* @memberof QUICKMENUBARBase
*/
@
Prop
({
default
:
true
})
public
showBusyIndicator
?:
boolean
;
/**
* 菜单数据
*
* @public
* @type {any[]}
* @memberof QUICKMENUBARBase
*/
@
Provide
()
public
menus
:
any
[]
=
[];
/**
* 菜单收缩改变
*
* @type {boolean}
* @memberof QUICKMENUBARBase
*/
@
Model
()
public
collapsechange
?:
boolean
;
/**
* 监听菜单收缩
*
* @param {*} newVal
* @param {*} oldVal
* @memberof QUICKMENUBARBase
*/
@
Watch
(
'collapsechange'
)
onCollapsechangeChange
(
newVal
:
any
,
oldVal
:
any
)
{
if
(
newVal
!==
this
.
isCollapse
)
{
this
.
isCollapse
=
!
this
.
isCollapse
;
}
}
/**
* 当前模式,菜单在顶部还是在底部
*
* @type {*}
* @memberof QUICKMENUBARBase
*/
@
Prop
()
mode
:
any
;
/**
* 应用起始页面
*
* @type {boolean}
* @memberof QUICKMENUBARBase
*/
@
Prop
({
default
:
false
})
isDefaultPage
?:
boolean
;
/**
* 空白视图模式
*
* @type {boolean}
* @memberof QUICKMENUBARBase
*/
@
Prop
({
default
:
false
})
isBlankMode
?:
boolean
;
/**
* 默认打开视图
*
* @type {*}
* @memberof QUICKMENUBARBase
*/
@
Prop
()
defPSAppView
:
any
;
/**
* 默认激活的index
*
* @type {*}
* @memberof QUICKMENUBARBase
*/
@
Provide
()
defaultActive
:
any
=
null
;
/**
* 当前选中主题
*
* @type {*}
* @memberof QUICKMENUBARBase
*/
@
Prop
()
selectTheme
:
any
;
/**
* 默认打开的index数组
*
* @type {any[]}
* @memberof QUICKMENUBARBase
*/
@
Provide
()
public
defaultOpeneds
:
any
[]
=
[];
/**
* 是否展开
*
* @type {boolean}
* @memberof QUICKMENUBARBase
*/
@
Provide
()
public
isCollapse
:
boolean
=
false
;
/**
* 触发方式,默认click
*
* @type {string}
* @memberof QUICKMENUBARBase
*/
@
Provide
()
trigger
:
string
=
'click'
;
/**
* 计数器数据
*
* @type {*}
* @memberof QUICKMENUBARBase
*/
public
counterdata
:
any
=
{};
/**
* 建构权限服务对象
*
* @type {AuthService}
* @memberof QUICKMENUBARBase
*/
public
authService
:
AuthService
=
new
AuthService
({
$store
:
this
.
$store
});
/**
* vue 生命周期
*
* @memberof QUICKMENUBARBase
*/
public
created
()
{
this
.
afterCreated
();
}
/**
* 执行created后的逻辑
*
* @memberof QUICKMENUBARBase
*/
public
afterCreated
(){
if
(
Object
.
is
(
this
.
mode
,
'horizontal'
))
{
this
.
trigger
=
'hover'
;
}
if
(
this
.
viewState
)
{
this
.
viewStateEvent
=
this
.
viewState
.
subscribe
(({
tag
,
action
,
data
})
=>
{
if
(
!
Object
.
is
(
tag
,
this
.
name
))
{
return
;
}
this
.
load
(
data
);
});
}
}
/**
* vue 生命周期
*
* @memberof QUICKMENUBARBase
*/
public
destroyed
()
{
this
.
afterDestroy
();
}
/**
* 执行destroyed后的逻辑
*
* @memberof QUICKMENUBARBase
*/
public
afterDestroy
()
{
if
(
this
.
viewStateEvent
)
{
this
.
viewStateEvent
.
unsubscribe
();
}
}
/**
* 获取菜单项数据
*
* @public
* @param {any[]} items
* @param {string} name
* @returns
* @memberof QUICKMENUBARBase
*/
public
compute
(
items
:
any
[],
name
:
string
)
{
const
item
:
any
=
{};
items
.
some
((
_item
:
any
)
=>
{
if
(
name
&&
Object
.
is
(
_item
.
name
,
name
))
{
Object
.
assign
(
item
,
_item
);
this
.
setHideSideBar
(
_item
);
return
true
;
}
if
(
_item
.
items
&&
Array
.
isArray
(
_item
.
items
))
{
const
subItem
=
this
.
compute
(
_item
.
items
,
name
);
if
(
Object
.
keys
(
subItem
).
length
>
0
)
{
Object
.
assign
(
item
,
subItem
);
return
true
;
}
}
return
false
;
});
return
item
;
}
/**
* 设置是否隐藏菜单栏
*
* @public
* @param {*} item
* @memberof QUICKMENUBARBase
*/
public
setHideSideBar
(
item
:
any
):
void
{
}
/**
* 菜单项选中处理
*
* @param {*} index
* @param {any[]} indexs
* @returns
* @memberof QUICKMENUBARBase
*/
public
select
(
index
:
any
,
indexs
:
any
[])
{
let
item
=
this
.
compute
(
this
.
menus
,
index
);
if
(
Object
.
keys
(
item
).
length
===
0
)
{
return
;
}
this
.
click
(
item
);
}
/**
* 菜单点击
*
* @public
* @param {*} item 菜单数据
* @memberof QUICKMENUBARBase
*/
public
click
(
item
:
any
)
{
if
(
item
)
{
let
navDataService
=
NavDataService
.
getInstance
(
this
.
$store
);
if
(
Object
.
is
(
this
.
navModel
,
"route"
)){
navDataService
.
removeNavData
(
this
.
viewtag
);
}
switch
(
item
.
appfunctag
)
{
case
'AppFunc93'
:
this
.
clickAppFunc93
(
item
);
return
;
default
:
console
.
warn
(
'未指定应用功能'
);
}
}
}
/**
* 打开文档
*
* @param {*} [item={}]
* @memberof QUICKMENUBAR
*/
public
clickAppFunc93
(
item
:
any
=
{}){
const
localdata
:
any
=
this
.
$store
.
getters
.
getLocalData
();
const
url
=
`https://www.yuque.com/ibiz/wuf19n/gybogg`
;
window
.
open
(
url
,
'_blank'
);
}
/**
* 数据加载
*
* @param {*} data
* @memberof QUICKMENUBARBase
*/
public
load
(
data
:
any
)
{
this
.
handleMenusResource
(
this
.
menuMode
.
getAppMenuItems
());
}
/**
* 通过统一资源标识计算菜单
*
* @param {*} data
* @memberof QUICKMENUBARBase
*/
public
handleMenusResource
(
inputMenus
:
Array
<
any
>
){
if
(
this
.
$store
.
getters
[
'authresource/getEnablePermissionValid'
]){
this
.
computedEffectiveMenus
(
inputMenus
);
this
.
computeParentMenus
(
inputMenus
);
}
this
.
dataProcess
(
inputMenus
);
this
.
menus
=
inputMenus
;
}
/**
* 计算有效菜单项
*
* @param {*} inputMenus
* @memberof QUICKMENUBARBase
*/
public
computedEffectiveMenus
(
inputMenus
:
Array
<
any
>
){
inputMenus
.
forEach
((
_item
:
any
)
=>
{
if
(
!
this
.
authService
.
getMenusPermission
(
_item
)){
_item
.
hidden
=
true
;
if
(
_item
.
items
&&
_item
.
items
.
length
>
0
)
{
this
.
computedEffectiveMenus
(
_item
.
items
);
}
}
})
}
/**
* 计算父项菜单项是否隐藏
*
* @param {*} inputMenus
* @memberof QUICKMENUBARBase
*/
public
computeParentMenus
(
inputMenus
:
Array
<
any
>
){
if
(
inputMenus
&&
inputMenus
.
length
>
0
){
inputMenus
.
forEach
((
item
:
any
)
=>
{
if
(
item
.
hidden
&&
item
.
items
&&
item
.
items
.
length
>
0
){
item
.
items
.
map
((
singleItem
:
any
)
=>
{
if
(
!
singleItem
.
hidden
){
item
.
hidden
=
false
;
}
else
{
if
(
singleItem
.
items
&&
singleItem
.
items
.
length
>
0
){
singleItem
.
items
.
map
((
grandsonItem
:
any
)
=>
{
if
(
!
grandsonItem
.
hidden
){
item
.
hidden
=
false
;
}
})
}
}
if
(
item
.
items
&&
item
.
items
.
length
>
0
){
this
.
computeParentMenus
(
item
.
items
);
}
})
}
})
}
}
/**
* 数据处理
*
* @public
* @param {any[]} items
* @memberof QUICKMENUBARBase
*/
public
dataProcess
(
items
:
any
[]):
void
{
items
.
forEach
((
_item
:
any
)
=>
{
if
(
_item
.
expanded
)
{
this
.
defaultOpeneds
.
push
(
_item
.
name
);
}
if
(
_item
.
items
&&
_item
.
items
.
length
>
0
)
{
this
.
dataProcess
(
_item
.
items
)
}
});
}
/**
* 提示框主题样式
*
* @readonly
* @type {string}
* @memberof QUICKMENUBARBase
*/
get
popperClass
():
string
{
return
'app-popper-menu '
+
this
.
selectTheme
;
}
}
</
script
>
<
style
lang=
'less'
>
@import './quickmenubar-appmenu.less';
</
style
>
\ No newline at end of file
app_Web/src/widgets/app/quickmenubar-appmenu/quickmenubar-appmenu-model.ts
0 → 100644
浏览文件 @
8ee76e82
/**
* QUICKMENUBAR 部件模型
*
* @export
* @class QUICKMENUBARModel
*/
export
default
class
QUICKMENUBARModel
{
/**
* 菜单项集合
*
* @public
* @type {any[]}
* @memberof QUICKMENUBARModel
*/
public
items
:
any
[]
=
[
{
id
:
'161CE06C-7FEB-4D3A-908A-EA2756104A50'
,
name
:
'menuitem1'
,
text
:
'应用菜单'
,
type
:
'MENUITEM'
,
counterid
:
''
,
tooltip
:
'应用菜单'
,
expanded
:
false
,
separator
:
false
,
hidden
:
false
,
hidesidebar
:
false
,
opendefault
:
false
,
iconcls
:
''
,
icon
:
''
,
textcls
:
''
,
appfunctag
:
''
,
resourcetag
:
''
,
authtag
:
'Web-QUICKMENUBAR-menuitem1'
,
items
:
[
{
id
:
'00926656-BCDE-45AF-B381-3B465E80D8EB'
,
name
:
'menuitem2'
,
text
:
'打开文档'
,
type
:
'MENUITEM'
,
counterid
:
''
,
tooltip
:
'打开文档'
,
expanded
:
false
,
separator
:
false
,
hidden
:
false
,
hidesidebar
:
false
,
opendefault
:
false
,
iconcls
:
'fa fa-twitter'
,
icon
:
''
,
textcls
:
''
,
appfunctag
:
'AppFunc93'
,
resourcetag
:
''
,
authtag
:
'Web-QUICKMENUBAR-menuitem2'
,
},
],
},
];
/**
* 应用功能集合
*
* @public
* @type {any[]}
* @memberof QUICKMENUBARModel
*/
public
funcs
:
any
[]
=
[
];
/**
* 获取所有菜单项集合
*
* @returns {any[]}
* @memberof QUICKMENUBARModel
*/
public
getAppMenuItems
():
any
[]
{
return
this
.
items
;
}
/**
* 获取所有应用功能集合
*
* @returns {any[]}
* @memberof QUICKMENUBARModel
*/
public
getAppFuncs
():
any
[]
{
return
this
.
funcs
;
}
}
\ No newline at end of file
app_Web/src/widgets/app/quickmenubar-appmenu/quickmenubar-appmenu-service.ts
0 → 100644
浏览文件 @
8ee76e82
import
{
Http
,
Util
,
Errorlog
}
from
'@/utils'
;
import
ControlService
from
'@/widgets/control-service'
;
import
QUICKMENUBARModel
from
'./quickmenubar-appmenu-model'
;
/**
* QUICKMENUBAR 部件服务对象
*
* @export
* @class QUICKMENUBARService
*/
export
default
class
QUICKMENUBARService
extends
ControlService
{
/**
* 设置从数据模式
*
* @type {boolean}
* @memberof QUICKMENUBARService
*/
public
setTempMode
(){
this
.
isTempMode
=
false
;
}
/**
* Creates an instance of QUICKMENUBARService.
*
* @param {*} [opts={}]
* @memberof QUICKMENUBARService
*/
constructor
(
opts
:
any
=
{})
{
super
(
opts
);
this
.
model
=
new
QUICKMENUBARModel
();
}
/**
* 获取数据
*
* @returns {Promise<any>}
* @memberof QUICKMENUBAR
*/
@
Errorlog
public
get
(
params
:
any
=
{}):
Promise
<
any
>
{
return
Http
.
getInstance
().
get
(
'v7/quickmenubarappmenu'
,
params
);
}
}
\ No newline at end of file
app_Web/src/widgets/app/quickmenubar-appmenu/quickmenubar-appmenu.less
0 → 100644
浏览文件 @
8ee76e82
/*** 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/quickmenubar-appmenu/quickmenubar-appmenu.vue
0 → 100644
浏览文件 @
8ee76e82
<
script
lang=
'tsx'
>
import
{
Component
}
from
'vue-property-decorator'
;
import
QUICKMENUBARBase
from
'./quickmenubar-appmenu-base.vue'
;
@
Component
({
components
:
{
}
})
export
default
class
QUICKMENUBAR
extends
QUICKMENUBARBase
{
}
</
script
>
\ No newline at end of file
app_Web/src/widgets/app/quickmenubar-portlet/quickmenubar-portlet-base.vue
0 → 100644
浏览文件 @
8ee76e82
<
template
>
<div
class=
'portlet quickmenubar '
:style=
"
{}">
<p
class=
'portlet-title'
>
<span>
快捷菜单
</span>
</p>
<el-divider
class=
"divider"
></el-divider>
<div
class=
"portlet-with-title"
>
<view
_db_appmenu1_appmenu
:viewState=
"viewState"
:viewparams=
"viewparams"
:context=
"context"
:showBusyIndicator=
"true"
name=
"db_appmenu1_appmenu"
ref=
'db_appmenu1_appmenu'
@
closeview=
"closeView($event)"
>
</view
_db_appmenu1_appmenu
>
</div>
</div>
</
template
>
<
script
lang=
'tsx'
>
import
{
Vue
,
Component
,
Prop
,
Provide
,
Emit
,
Watch
,
Model
,
Inject
}
from
'vue-property-decorator'
;
import
{
CreateElement
}
from
'vue'
;
import
{
Subject
,
Subscription
}
from
'rxjs'
;
import
{
ControlInterface
}
from
'@/interface/control'
;
import
{
UIActionTool
,
Util
,
ViewTool
}
from
'@/utils'
;
import
NavDataService
from
'@/service/app/navdata-service'
;
import
QUICKMENUBARService
from
'./quickmenubar-portlet-service'
;
import
UIService
from
'@/uiservice/ui-service'
;
import
{
Environment
}
from
'@/environments/environment'
;
@
Component
({
components
:
{
}
})
export
default
class
QUICKMENUBARBase
extends
Vue
implements
ControlInterface
{
/**
* 名称
*
* @type {string}
* @memberof QUICKMENUBARBase
*/
@
Prop
()
public
name
?:
string
;
/**
* 视图通讯对象
*
* @type {Subject<ViewState>}
* @memberof QUICKMENUBARBase
*/
@
Prop
()
public
viewState
!
:
Subject
<
ViewState
>
;
/**
* 应用上下文
*
* @type {*}
* @memberof QUICKMENUBARBase
*/
@
Prop
()
public
context
!
:
any
;
/**
* 视图参数
*
* @type {*}
* @memberof QUICKMENUBARBase
*/
@
Prop
()
public
viewparams
!
:
any
;
/**
* 视图状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof QUICKMENUBARBase
*/
public
viewStateEvent
:
Subscription
|
undefined
;
/**
* 获取部件类型
*
* @returns {string}
* @memberof QUICKMENUBARBase
*/
public
getControlType
():
string
{
return
'PORTLET'
}
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof QUICKMENUBARBase
*/
public
counterServiceArray
:
Array
<
any
>
=
[];
/**
* 建构部件服务对象
*
* @type {QUICKMENUBARService}
* @memberof QUICKMENUBARBase
*/
public
service
:
QUICKMENUBARService
=
new
QUICKMENUBARService
({
$store
:
this
.
$store
});
/**
* 关闭视图
*
* @param {any} args
* @memberof QUICKMENUBARBase
*/
public
closeView
(
args
:
any
):
void
{
let
_this
:
any
=
this
;
_this
.
$emit
(
'closeview'
,
[
args
]);
}
/**
* 计数器刷新
*
* @memberof QUICKMENUBARBase
*/
public
counterRefresh
(){
const
_this
:
any
=
this
;
if
(
_this
.
counterServiceArray
&&
_this
.
counterServiceArray
.
length
>
0
){
_this
.
counterServiceArray
.
forEach
((
item
:
any
)
=>
{
if
(
item
.
refreshData
&&
item
.
refreshData
instanceof
Function
){
item
.
refreshData
();
}
})
}
}
/**
* 长度
*
* @type {number}
* @memberof QUICKMENUBARBase
*/
@
Prop
()
public
height
?:
number
;
/**
* 宽度
*
* @type {number}
* @memberof QUICKMENUBARBase
*/
@
Prop
()
public
width
?:
number
;
/**
* 门户部件类型
*
* @type {number}
* @memberof QUICKMENUBARBase
*/
public
portletType
:
string
=
'appmenu'
;
/**
* 视图默认使用
*
* @type {string}
* @memberof QUICKMENUBARBase
*/
@
Inject
({
from
:
'navModel'
,
default
:
'tab'
})
public
navModel
!
:
string
;
/**
* 界面行为模型数据
*
* @memberof QUICKMENUBARBase
*/
public
uiactionModel
:
any
=
{
}
/**
* 是否自适应大小
*
* @returns {boolean}
* @memberof QUICKMENUBARBase
*/
@
Prop
({
default
:
false
})
public
isAdaptiveSize
!
:
boolean
;
/**
* 获取多项数据
*
* @returns {any[]}
* @memberof QUICKMENUBARBase
*/
public
getDatas
():
any
[]
{
return
[];
}
/**
* 获取单项树
*
* @returns {*}
* @memberof QUICKMENUBARBase
*/
public
getData
():
any
{
return
{};
}
/**
* 获取高度
*
* @returns {any[]}
* @memberof QUICKMENUBARBase
*/
get
getHeight
(){
if
(
!
this
.
$util
.
isEmpty
(
this
.
height
)
&&
!
this
.
$util
.
isNumberNaN
(
this
.
height
)){
if
(
this
.
height
==
0
){
return
'auto'
;
}
else
{
return
this
.
height
+
'px'
;
}
}
else
{
return
'auto'
;
}
}
/**
* 刷新
*
* @memberof QUICKMENUBARBase
*/
public
refresh
(
args
?:
any
)
{
}
/**
* vue 生命周期
*
* @memberof QUICKMENUBARBase
*/
public
created
()
{
this
.
afterCreated
();
}
/**
* 执行created后的逻辑
*
* @memberof QUICKMENUBARBase
*/
public
afterCreated
(){
if
(
this
.
viewState
)
{
this
.
viewStateEvent
=
this
.
viewState
.
subscribe
(({
tag
,
action
,
data
})
=>
{
if
(
Object
.
is
(
tag
,
"all-portlet"
)
&&
Object
.
is
(
action
,
'loadmodel'
)){
this
.
calcUIActionAuthState
(
data
);
}
if
(
!
Object
.
is
(
tag
,
this
.
name
))
{
return
;
}
const
refs
:
any
=
this
.
$refs
;
Object
.
keys
(
refs
).
forEach
((
_name
:
string
)
=>
{
this
.
viewState
.
next
({
tag
:
_name
,
action
:
action
,
data
:
data
});
});
});
}
}
/**
* vue 生命周期
*
* @memberof QUICKMENUBARBase
*/
public
destroyed
()
{
this
.
afterDestroy
();
}
/**
* 执行destroyed后的逻辑
*
* @memberof QUICKMENUBARBase
*/
public
afterDestroy
()
{
if
(
this
.
viewStateEvent
)
{
this
.
viewStateEvent
.
unsubscribe
();
}
}
/**
* 计算界面行为权限
*
* @memberof QUICKMENUBARBase
*/
public
calcUIActionAuthState
(
data
:
any
=
{})
{
// 如果是操作栏,不计算权限
if
(
this
.
portletType
&&
Object
.
is
(
'actionbar'
,
this
.
portletType
))
{
return
;
}
let
_this
:
any
=
this
;
let
uiservice
:
any
=
_this
.
appUIService
?
_this
.
appUIService
:
new
UIService
(
_this
.
$store
);
if
(
_this
.
uiactionModel
){
ViewTool
.
calcActionItemAuthState
(
data
,
_this
.
uiactionModel
,
uiservice
);
}
}
}
</
script
>
<
style
lang=
'less'
>
@import './quickmenubar-portlet.less';
</
style
>
app_Web/src/widgets/app/quickmenubar-portlet/quickmenubar-portlet-model.ts
0 → 100644
浏览文件 @
8ee76e82
/**
* QUICKMENUBAR 部件模型
*
* @export
* @class QUICKMENUBARModel
*/
export
default
class
QUICKMENUBARModel
{
/**
* 获取数据项集合
*
* @returns {any[]}
* @memberof QUICKMENUBARModel
*/
public
getDataItems
():
any
[]
{
return
[
]
}
}
app_Web/src/widgets/app/quickmenubar-portlet/quickmenubar-portlet-service.ts
0 → 100644
浏览文件 @
8ee76e82
import
{
Http
}
from
'@/utils'
;
import
ControlService
from
'@/widgets/control-service'
;
/**
* QUICKMENUBAR 部件服务对象
*
* @export
* @class QUICKMENUBARService
*/
export
default
class
QUICKMENUBARService
extends
ControlService
{
}
app_Web/src/widgets/app/quickmenubar-portlet/quickmenubar-portlet.less
0 → 100644
浏览文件 @
8ee76e82
// this is less
.portlet{
height: 100%;
width: 100%;
> .portlet-title{
padding: 14px 16px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
height: 52px;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
justify-content: space-between;
width:100%;
line-height: 22px;
font-size: 16px;
font-weight: 500;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: #304265;
font-weight: 600;
i{
margin-right: 5px;
}
>.portlet-action{
margin-left: 12px;
font-size: 14px;
>a{
padding: 6px;
}
}
}
> .divider {
margin: 0px 0px 11px 0px;
}
> .portlet-with-title{
width:100%;
height:calc(100% - 58px);
overflow:auto;
padding:0px 12px;
}
> .portlet-without-title{
width:100%;
height:100%;
overflow:auto;
padding:0px 12px;
}
.app-charts{
height: 100%!important;
}
.toolbar-container {
button{
margin: 6px 0px 4px 16px;
}
.ivu-badge{
.ivu-badge-count{
top: 0;
}
}
}
}
app_Web/src/widgets/app/quickmenubar-portlet/quickmenubar-portlet.vue
0 → 100644
浏览文件 @
8ee76e82
<
script
lang=
'tsx'
>
import
{
Component
}
from
'vue-property-decorator'
;
import
QUICKMENUBARBase
from
'./quickmenubar-portlet-base.vue'
;
import
view_db_appmenu1_appmenu
from
'@widgets/app/quickmenubar-appmenu/quickmenubar-appmenu.vue'
;
@
Component
({
components
:
{
view_db_appmenu1_appmenu
,
}
})
export
default
class
QUICKMENUBAR
extends
QUICKMENUBARBase
{
}
</
script
>
demo-core/src/main/resources/permission/systemResource.json
浏览文件 @
8ee76e82
...
...
@@ -358,7 +358,7 @@
{
"appid"
:
"Web"
,
"appname"
:
"演示应用"
,
"appmenu"
:[{
"menuid"
:
"
appMenu
"
,
"menuname"
:
"appMenu"
,
"menuitem"
:[{
"id"
:
"menuitem1"
,
"name"
:
"应用菜单"
,
"items"
:[{
"id"
:
"menuitem2"
,
"name"
:
"打开文档"
}]}]
},{
"menuid"
:
"MainMenu"
,
"menuname"
:
"MainMenu"
,
"menuitem"
:[{
"id"
:
"menuitem1"
,
"name"
:
"工作台"
},{
"id"
:
"menuitem3"
,
"name"
:
"控件"
,
"items"
:[{
"id"
:
"menuitem6"
,
"name"
:
"默认数据类型"
},{
"id"
:
"menuitem7"
,
"name"
:
"默认编辑器类型"
},{
"id"
:
"menuitem72"
,
"name"
:
"扩展编辑器"
},{
"id"
:
"menuitem151"
,
"name"
:
"编辑器插件示例"
},{
"id"
:
"menuitem65"
,
"name"
:
"微服务组件"
}]},{
"id"
:
"menuitem4"
,
"name"
:
"部件"
,
"items"
:[{
"id"
:
"menuitem112"
,
"name"
:
"应用类"
,
"items"
:[{
"id"
:
"menuitem186"
,
"name"
:
"数据看板"
},{
"id"
:
"menuitem129"
,
"name"
:
"门户部件"
}]},{
"id"
:
"menuitem156"
,
"name"
:
"表单类"
,
"items"
:[{
"id"
:
"menuitem12"
,
"name"
:
"编辑表单"
,
"items"
:[{
"id"
:
"menuitem15"
,
"name"
:
"基础表单项"
},{
"id"
:
"menuitem107"
,
"name"
:
"内置功能"
},{
"id"
:
"menuitem47"
,
"name"
:
"新建默认值"
},{
"id"
:
"menuitem99"
,
"name"
:
"更新默认值"
},{
"id"
:
"menuitem48"
,
"name"
:
"输入提示"
},{
"id"
:
"menuitem49"
,
"name"
:
"辅助输入"
},{
"id"
:
"menuitem50"
,
"name"
:
"自动填充"
},{
"id"
:
"menuitem51"
,
"name"
:
"超链接"
},{
"id"
:
"menuitem52"
,
"name"
:
"表单值重置"
},{
"id"
:
"menuitem55"
,
"name"
:
"动态显示"
},{
"id"
:
"menuitem53"
,
"name"
:
"动态启用"
},{
"id"
:
"menuitem54"
,
"name"
:
"动态空输入"
},{
"id"
:
"menuitem56"
,
"name"
:
"表单项更新"
},{
"id"
:
"menuitem108"
,
"name"
:
"表单值规则"
}]},{
"id"
:
"menuitem16"
,
"name"
:
"搜索表单"
}]},{
"id"
:
"menuitem157"
,
"name"
:
"导航类"
,
"items"
:[{
"id"
:
"menuitem120"
,
"name"
:
"分页导航"
},{
"id"
:
"menuitem128"
,
"name"
:
"表格导航"
},{
"id"
:
"menuitem136"
,
"name"
:
"树导航"
},{
"id"
:
"menuitem137"
,
"name"
:
"卡片导航"
},{
"id"
:
"menuitem139"
,
"name"
:
"时间轴导航"
},{
"id"
:
"menuitem114"
,
"name"
:
"列表导航"
},{
"id"
:
"menuitem138"
,
"name"
:
"日历导航"
},{
"id"
:
"menuitem20"
,
"name"
:
"数据关系分页"
,
"items"
:[{
"id"
:
"menuitem117"
,
"name"
:
"数据关系分页(上下关系)"
},{
"id"
:
"menuitem118"
,
"name"
:
"数据关系分页(分页关系)"
}]},{
"id"
:
"menuitem116"
,
"name"
:
" 数据关系栏"
}]},{
"id"
:
"menuitem158"
,
"name"
:
"面板类"
,
"items"
:[{
"id"
:
"menuitem145"
,
"name"
:
"选择视图面板"
},{
"id"
:
"menuitem17"
,
"name"
:
"向导面板"
,
"items"
:[{
"id"
:
"menuitem134"
,
"name"
:
"基础用法"
},{
"id"
:
"menuitem135"
,
"name"
:
"状态属性"
}]},{
"id"
:
"menuitem121"
,
"name"
:
"多编辑视图面板"
,
"items"
:[{
"id"
:
"menuitem115"
,
"name"
:
"多表单(行记录)"
},{
"id"
:
"menuitem123"
,
"name"
:
"多表单(上分页)"
}]}]},{
"id"
:
"menuitem119"
,
"name"
:
"多数据类"
,
"items"
:[{
"id"
:
"menuitem13"
,
"name"
:
"表格"
,
"items"
:[{
"id"
:
"menuitem57"
,
"name"
:
"禁用排序"
},{
"id"
:
"menuitem59"
,
"name"
:
"行操作"
},{
"id"
:
"menuitem58"
,
"name"
:
"行编辑"
},{
"id"
:
"menuitem73"
,
"name"
:
"内置功能"
},{
"id"
:
"menuitem74"
,
"name"
:
"表格行编辑"
},{
"id"
:
"menuitem75"
,
"name"
:
"新建默认值"
},{
"id"
:
"menuitem76"
,
"name"
:
"更新默认值"
},{
"id"
:
"menuitem77"
,
"name"
:
"表格值规则"
},{
"id"
:
"menuitem132"
,
"name"
:
"表格列更新"
},{
"id"
:
"menuitem133"
,
"name"
:
"表格列重置"
},{
"id"
:
"menuitem78"
,
"name"
:
"自动分组"
},{
"id"
:
"menuitem80"
,
"name"
:
"代码表分组"
},{
"id"
:
"menuitem81"
,
"name"
:
"当前页聚合"
},{
"id"
:
"menuitem82"
,
"name"
:
"远程聚合"
}]},{
"id"
:
"menuitem83"
,
"name"
:
"列表"
,
"items"
:[{
"id"
:
"menuitem84"
,
"name"
:
"内置功能"
},{
"id"
:
"menuitem85"
,
"name"
:
"自动分组"
},{
"id"
:
"menuitem86"
,
"name"
:
"代码表分组"
},{
"id"
:
"menuitem91"
,
"name"
:
"项布局面板"
},{
"id"
:
"menuitem143"
,
"name"
:
"自定义插件"
}]},{
"id"
:
"menuitem95"
,
"name"
:
"日历"
,
"items"
:[{
"id"
:
"menuitem96"
,
"name"
:
"内置功能"
},{
"id"
:
"menuitem97"
,
"name"
:
"时间轴样式"
},{
"id"
:
"menuitem109"
,
"name"
:
"项布局面板"
},{
"id"
:
"menuitem64"
,
"name"
:
"自定义插件"
}]},{
"id"
:
"menuitem14"
,
"name"
:
"树视图"
,
"items"
:[{
"id"
:
"menuitem60"
,
"name"
:
"静态节点"
},{
"id"
:
"menuitem61"
,
"name"
:
"动态节点(代码表)"
},{
"id"
:
"menuitem62"
,
"name"
:
"动态节点(实体)"
},{
"id"
:
"menuitem63"
,
"name"
:
"右键操作"
}]},{
"id"
:
"menuitem111"
,
"name"
:
"甘特图"
},{
"id"
:
"menuitem110"
,
"name"
:
"树表格"
},{
"id"
:
"menuitem87"
,
"name"
:
"数据视图"
,
"items"
:[{
"id"
:
"menuitem88"
,
"name"
:
"内置功能"
},{
"id"
:
"menuitem89"
,
"name"
:
"自动分组"
},{
"id"
:
"menuitem90"
,
"name"
:
"代码表分组"
},{
"id"
:
"menuitem94"
,
"name"
:
"项布局面板"
},{
"id"
:
"menuitem152"
,
"name"
:
"自定义插件"
}]},{
"id"
:
"menuitem101"
,
"name"
:
"看板视图"
,
"items"
:[{
"id"
:
"menuitem102"
,
"name"
:
"内置功能"
},{
"id"
:
"menuitem104"
,
"name"
:
"代码表分组"
},{
"id"
:
"menuitem105"
,
"name"
:
"项布局面板"
}]},{
"id"
:
"menuitem37"
,
"name"
:
"数据图表"
,
"items"
:[{
"id"
:
"menuitem38"
,
"name"
:
"柱状图"
},{
"id"
:
"menuitem39"
,
"name"
:
"折线图"
},{
"id"
:
"menuitem40"
,
"name"
:
"饼图"
},{
"id"
:
"menuitem41"
,
"name"
:
"区域图"
},{
"id"
:
"menuitem42"
,
"name"
:
"雷达图"
}]}]},{
"id"
:
"menuitem159"
,
"name"
:
"其他类"
}]},{
"id"
:
"menuitem5"
,
"name"
:
"视图"
,
"items"
:[{
"id"
:
"menuitem140"
,
"name"
:
"单数据视图"
,
"items"
:[{
"id"
:
"menuitem161"
,
"name"
:
"实体向导视图"
},{
"id"
:
"menuitem8"
,
"name"
:
"实体编辑视图"
},{
"id"
:
"menuitem162"
,
"name"
:
"实体编辑视图(分页关系)"
},{
"id"
:
"menuitem163"
,
"name"
:
"实体编辑视图(上下关系)"
},{
"id"
:
"menuitem164"
,
"name"
:
"实体编辑视图(左右关系)"
},{
"id"
:
"menuitem165"
,
"name"
:
"实体分页导航视图"
},{
"id"
:
"menuitem166"
,
"name"
:
"实体数据看板视图"
},{
"id"
:
"menuitem167"
,
"name"
:
"实体选项操作视图"
}]},{
"id"
:
"menuitem141"
,
"name"
:
"多数据视图"
,
"items"
:[{
"id"
:
"menuitem79"
,
"name"
:
"实体表格视图"
},{
"id"
:
"menuitem168"
,
"name"
:
"实体多表单编辑视图"
},{
"id"
:
"menuitem169"
,
"name"
:
"实体甘特视图"
},{
"id"
:
"menuitem9"
,
"name"
:
"实体列表视图"
},{
"id"
:
"menuitem170"
,
"name"
:
"实体日历视图"
},{
"id"
:
"menuitem171"
,
"name"
:
"实体看板视图"
},{
"id"
:
"menuitem172"
,
"name"
:
"实体树表格视图"
},{
"id"
:
"menuitem173"
,
"name"
:
"实体树视图"
},{
"id"
:
"menuitem174"
,
"name"
:
"实体数据视图"
},{
"id"
:
"menuitem175"
,
"name"
:
"实体图表视图"
}]},{
"id"
:
"menuitem10"
,
"name"
:
"导航视图"
,
"items"
:[{
"id"
:
"menuitem176"
,
"name"
:
"实体表格导航视图"
},{
"id"
:
"menuitem177"
,
"name"
:
"实体列表导航视图"
},{
"id"
:
"menuitem178"
,
"name"
:
"实体卡片导航视图"
},{
"id"
:
"menuitem179"
,
"name"
:
"实体日历导航视图"
},{
"id"
:
"menuitem180"
,
"name"
:
"实体树导航视图"
}]},{
"id"
:
"menuitem26"
,
"name"
:
"选择视图"
,
"items"
:[{
"id"
:
"menuitem18"
,
"name"
:
"数据选择视图"
},{
"id"
:
"menuitem27"
,
"name"
:
"索引选择视图"
}]},{
"id"
:
"menuitem69"
,
"name"
:
"工作流"
,
"items"
:[{
"id"
:
"menuitem30"
,
"name"
:
"工作流动态导航视图"
},{
"id"
:
"menuitem31"
,
"name"
:
"工作流启动"
}]},{
"id"
:
"menuitem11"
,
"name"
:
"其他视图"
,
"items"
:[{
"id"
:
"menuitem98"
,
"name"
:
"自定义视图"
}]}]},{
"id"
:
"menuitem153"
,
"name"
:
"逻辑"
,
"items"
:[{
"id"
:
"menuitem154"
,
"name"
:
"应用功能"
,
"items"
:[{
"id"
:
"menuitem127"
,
"name"
:
"打开应用视图"
},{
"id"
:
"menuitem147"
,
"name"
:
"打开HTML页面"
},{
"id"
:
"menuitem160"
,
"name"
:
"执行JavaScript"
}]},{
"id"
:
"menuitem155"
,
"name"
:
"界面行为"
,
"items"
:[{
"id"
:
"menuitem181"
,
"name"
:
"前台界面行为"
},{
"id"
:
"menuitem182"
,
"name"
:
"后台界面行为"
}]},{
"id"
:
"menuitem19"
,
"name"
:
"临时模式"
}]},{
"id"
:
"menuitem2"
,
"name"
:
"更多"
,
"items"
:[{
"id"
:
"menuitem46"
,
"name"
:
"数据导出导入"
},{
"id"
:
"menuitem184"
,
"name"
:
"主状态"
,
"items"
:[{
"id"
:
"menuitem70"
,
"name"
:
"表格主状态"
},{
"id"
:
"menuitem148"
,
"name"
:
"列表主状态"
},{
"id"
:
"menuitem183"
,
"name"
:
"数据主状态"
},{
"id"
:
"menuitem28"
,
"name"
:
"日历主状态"
},{
"id"
:
"menuitem29"
,
"name"
:
"树主状态"
}]}]},{
"id"
:
"menuitem92"
,
"name"
:
"其他"
,
"items"
:[{
"id"
:
"menuitem93"
,
"name"
:
"示例实体02示例数据补充"
},{
"id"
:
"menuitem100"
,
"name"
:
"订单示例数据补充"
},{
"id"
:
"menuitem103"
,
"name"
:
"产品示例数据补充"
},{
"id"
:
"menuitem106"
,
"name"
:
"示例实体03示例数据补充"
},{
"id"
:
"menuitem113"
,
"name"
:
"订单类型添加"
},{
"id"
:
"menuitem124"
,
"name"
:
"示例实体01数据补充"
},{
"id"
:
"menuitem144"
,
"name"
:
"客户实体示例数据补充"
},{
"id"
:
"menuitem146"
,
"name"
:
"应用视图数据补充"
},{
"id"
:
"menuitem149"
,
"name"
:
"应用部件数据补充"
},{
"id"
:
"menuitem150"
,
"name"
:
"编辑器数据补充"
}]}]
}]
"appmenu"
:[{
"menuid"
:
"
QUICKMENUBAR
"
,
"menuname"
:
"appMenu"
,
"menuitem"
:[{
"id"
:
"menuitem1"
,
"name"
:
"应用菜单"
,
"items"
:[{
"id"
:
"menuitem2"
,
"name"
:
"打开文档"
}]}]
},{
"menuid"
:
"MainMenu"
,
"menuname"
:
"MainMenu"
,
"menuitem"
:[{
"id"
:
"menuitem1"
,
"name"
:
"工作台"
},{
"id"
:
"menuitem3"
,
"name"
:
"控件"
,
"items"
:[{
"id"
:
"menuitem6"
,
"name"
:
"默认数据类型"
},{
"id"
:
"menuitem7"
,
"name"
:
"默认编辑器类型"
},{
"id"
:
"menuitem72"
,
"name"
:
"扩展编辑器"
},{
"id"
:
"menuitem151"
,
"name"
:
"编辑器插件示例"
},{
"id"
:
"menuitem65"
,
"name"
:
"微服务组件"
}]},{
"id"
:
"menuitem4"
,
"name"
:
"部件"
,
"items"
:[{
"id"
:
"menuitem112"
,
"name"
:
"应用类"
,
"items"
:[{
"id"
:
"menuitem186"
,
"name"
:
"数据看板"
},{
"id"
:
"menuitem129"
,
"name"
:
"门户部件"
}]},{
"id"
:
"menuitem156"
,
"name"
:
"表单类"
,
"items"
:[{
"id"
:
"menuitem12"
,
"name"
:
"编辑表单"
,
"items"
:[{
"id"
:
"menuitem15"
,
"name"
:
"基础表单项"
},{
"id"
:
"menuitem107"
,
"name"
:
"内置功能"
},{
"id"
:
"menuitem47"
,
"name"
:
"新建默认值"
},{
"id"
:
"menuitem99"
,
"name"
:
"更新默认值"
},{
"id"
:
"menuitem48"
,
"name"
:
"输入提示"
},{
"id"
:
"menuitem49"
,
"name"
:
"辅助输入"
},{
"id"
:
"menuitem50"
,
"name"
:
"自动填充"
},{
"id"
:
"menuitem51"
,
"name"
:
"超链接"
},{
"id"
:
"menuitem52"
,
"name"
:
"表单值重置"
},{
"id"
:
"menuitem55"
,
"name"
:
"动态显示"
},{
"id"
:
"menuitem53"
,
"name"
:
"动态启用"
},{
"id"
:
"menuitem54"
,
"name"
:
"动态空输入"
},{
"id"
:
"menuitem56"
,
"name"
:
"表单项更新"
},{
"id"
:
"menuitem108"
,
"name"
:
"表单值规则"
}]},{
"id"
:
"menuitem16"
,
"name"
:
"搜索表单"
}]},{
"id"
:
"menuitem157"
,
"name"
:
"导航类"
,
"items"
:[{
"id"
:
"menuitem120"
,
"name"
:
"分页导航"
},{
"id"
:
"menuitem128"
,
"name"
:
"表格导航"
},{
"id"
:
"menuitem136"
,
"name"
:
"树导航"
},{
"id"
:
"menuitem137"
,
"name"
:
"卡片导航"
},{
"id"
:
"menuitem139"
,
"name"
:
"时间轴导航"
},{
"id"
:
"menuitem114"
,
"name"
:
"列表导航"
},{
"id"
:
"menuitem138"
,
"name"
:
"日历导航"
},{
"id"
:
"menuitem20"
,
"name"
:
"数据关系分页"
,
"items"
:[{
"id"
:
"menuitem117"
,
"name"
:
"数据关系分页(上下关系)"
},{
"id"
:
"menuitem118"
,
"name"
:
"数据关系分页(分页关系)"
}]},{
"id"
:
"menuitem116"
,
"name"
:
" 数据关系栏"
}]},{
"id"
:
"menuitem158"
,
"name"
:
"面板类"
,
"items"
:[{
"id"
:
"menuitem145"
,
"name"
:
"选择视图面板"
},{
"id"
:
"menuitem17"
,
"name"
:
"向导面板"
,
"items"
:[{
"id"
:
"menuitem134"
,
"name"
:
"基础用法"
},{
"id"
:
"menuitem135"
,
"name"
:
"状态属性"
}]},{
"id"
:
"menuitem121"
,
"name"
:
"多编辑视图面板"
,
"items"
:[{
"id"
:
"menuitem115"
,
"name"
:
"多表单(行记录)"
},{
"id"
:
"menuitem123"
,
"name"
:
"多表单(上分页)"
}]}]},{
"id"
:
"menuitem119"
,
"name"
:
"多数据类"
,
"items"
:[{
"id"
:
"menuitem13"
,
"name"
:
"表格"
,
"items"
:[{
"id"
:
"menuitem57"
,
"name"
:
"禁用排序"
},{
"id"
:
"menuitem59"
,
"name"
:
"行操作"
},{
"id"
:
"menuitem58"
,
"name"
:
"行编辑"
},{
"id"
:
"menuitem73"
,
"name"
:
"内置功能"
},{
"id"
:
"menuitem74"
,
"name"
:
"表格行编辑"
},{
"id"
:
"menuitem75"
,
"name"
:
"新建默认值"
},{
"id"
:
"menuitem76"
,
"name"
:
"更新默认值"
},{
"id"
:
"menuitem77"
,
"name"
:
"表格值规则"
},{
"id"
:
"menuitem132"
,
"name"
:
"表格列更新"
},{
"id"
:
"menuitem133"
,
"name"
:
"表格列重置"
},{
"id"
:
"menuitem78"
,
"name"
:
"自动分组"
},{
"id"
:
"menuitem80"
,
"name"
:
"代码表分组"
},{
"id"
:
"menuitem81"
,
"name"
:
"当前页聚合"
},{
"id"
:
"menuitem82"
,
"name"
:
"远程聚合"
}]},{
"id"
:
"menuitem83"
,
"name"
:
"列表"
,
"items"
:[{
"id"
:
"menuitem84"
,
"name"
:
"内置功能"
},{
"id"
:
"menuitem85"
,
"name"
:
"自动分组"
},{
"id"
:
"menuitem86"
,
"name"
:
"代码表分组"
},{
"id"
:
"menuitem91"
,
"name"
:
"项布局面板"
},{
"id"
:
"menuitem143"
,
"name"
:
"自定义插件"
}]},{
"id"
:
"menuitem95"
,
"name"
:
"日历"
,
"items"
:[{
"id"
:
"menuitem96"
,
"name"
:
"内置功能"
},{
"id"
:
"menuitem97"
,
"name"
:
"时间轴样式"
},{
"id"
:
"menuitem109"
,
"name"
:
"项布局面板"
},{
"id"
:
"menuitem64"
,
"name"
:
"自定义插件"
}]},{
"id"
:
"menuitem14"
,
"name"
:
"树视图"
,
"items"
:[{
"id"
:
"menuitem60"
,
"name"
:
"静态节点"
},{
"id"
:
"menuitem61"
,
"name"
:
"动态节点(代码表)"
},{
"id"
:
"menuitem62"
,
"name"
:
"动态节点(实体)"
},{
"id"
:
"menuitem63"
,
"name"
:
"右键操作"
}]},{
"id"
:
"menuitem111"
,
"name"
:
"甘特图"
},{
"id"
:
"menuitem110"
,
"name"
:
"树表格"
},{
"id"
:
"menuitem87"
,
"name"
:
"数据视图"
,
"items"
:[{
"id"
:
"menuitem88"
,
"name"
:
"内置功能"
},{
"id"
:
"menuitem89"
,
"name"
:
"自动分组"
},{
"id"
:
"menuitem90"
,
"name"
:
"代码表分组"
},{
"id"
:
"menuitem94"
,
"name"
:
"项布局面板"
},{
"id"
:
"menuitem152"
,
"name"
:
"自定义插件"
}]},{
"id"
:
"menuitem101"
,
"name"
:
"看板视图"
,
"items"
:[{
"id"
:
"menuitem102"
,
"name"
:
"内置功能"
},{
"id"
:
"menuitem104"
,
"name"
:
"代码表分组"
},{
"id"
:
"menuitem105"
,
"name"
:
"项布局面板"
}]},{
"id"
:
"menuitem37"
,
"name"
:
"数据图表"
,
"items"
:[{
"id"
:
"menuitem38"
,
"name"
:
"柱状图"
},{
"id"
:
"menuitem39"
,
"name"
:
"折线图"
},{
"id"
:
"menuitem40"
,
"name"
:
"饼图"
},{
"id"
:
"menuitem41"
,
"name"
:
"区域图"
},{
"id"
:
"menuitem42"
,
"name"
:
"雷达图"
}]}]},{
"id"
:
"menuitem159"
,
"name"
:
"其他类"
}]},{
"id"
:
"menuitem5"
,
"name"
:
"视图"
,
"items"
:[{
"id"
:
"menuitem140"
,
"name"
:
"单数据视图"
,
"items"
:[{
"id"
:
"menuitem161"
,
"name"
:
"实体向导视图"
},{
"id"
:
"menuitem8"
,
"name"
:
"实体编辑视图"
},{
"id"
:
"menuitem162"
,
"name"
:
"实体编辑视图(分页关系)"
},{
"id"
:
"menuitem163"
,
"name"
:
"实体编辑视图(上下关系)"
},{
"id"
:
"menuitem164"
,
"name"
:
"实体编辑视图(左右关系)"
},{
"id"
:
"menuitem165"
,
"name"
:
"实体分页导航视图"
},{
"id"
:
"menuitem166"
,
"name"
:
"实体数据看板视图"
},{
"id"
:
"menuitem167"
,
"name"
:
"实体选项操作视图"
}]},{
"id"
:
"menuitem141"
,
"name"
:
"多数据视图"
,
"items"
:[{
"id"
:
"menuitem79"
,
"name"
:
"实体表格视图"
},{
"id"
:
"menuitem168"
,
"name"
:
"实体多表单编辑视图"
},{
"id"
:
"menuitem169"
,
"name"
:
"实体甘特视图"
},{
"id"
:
"menuitem9"
,
"name"
:
"实体列表视图"
},{
"id"
:
"menuitem170"
,
"name"
:
"实体日历视图"
},{
"id"
:
"menuitem171"
,
"name"
:
"实体看板视图"
},{
"id"
:
"menuitem172"
,
"name"
:
"实体树表格视图"
},{
"id"
:
"menuitem173"
,
"name"
:
"实体树视图"
},{
"id"
:
"menuitem174"
,
"name"
:
"实体数据视图"
},{
"id"
:
"menuitem175"
,
"name"
:
"实体图表视图"
}]},{
"id"
:
"menuitem10"
,
"name"
:
"导航视图"
,
"items"
:[{
"id"
:
"menuitem176"
,
"name"
:
"实体表格导航视图"
},{
"id"
:
"menuitem177"
,
"name"
:
"实体列表导航视图"
},{
"id"
:
"menuitem178"
,
"name"
:
"实体卡片导航视图"
},{
"id"
:
"menuitem179"
,
"name"
:
"实体日历导航视图"
},{
"id"
:
"menuitem180"
,
"name"
:
"实体树导航视图"
}]},{
"id"
:
"menuitem26"
,
"name"
:
"选择视图"
,
"items"
:[{
"id"
:
"menuitem18"
,
"name"
:
"数据选择视图"
},{
"id"
:
"menuitem27"
,
"name"
:
"索引选择视图"
}]},{
"id"
:
"menuitem69"
,
"name"
:
"工作流"
,
"items"
:[{
"id"
:
"menuitem30"
,
"name"
:
"工作流动态导航视图"
},{
"id"
:
"menuitem31"
,
"name"
:
"工作流启动"
}]},{
"id"
:
"menuitem11"
,
"name"
:
"其他视图"
,
"items"
:[{
"id"
:
"menuitem98"
,
"name"
:
"自定义视图"
}]}]},{
"id"
:
"menuitem153"
,
"name"
:
"逻辑"
,
"items"
:[{
"id"
:
"menuitem154"
,
"name"
:
"应用功能"
,
"items"
:[{
"id"
:
"menuitem127"
,
"name"
:
"打开应用视图"
},{
"id"
:
"menuitem147"
,
"name"
:
"打开HTML页面"
},{
"id"
:
"menuitem160"
,
"name"
:
"执行JavaScript"
}]},{
"id"
:
"menuitem155"
,
"name"
:
"界面行为"
,
"items"
:[{
"id"
:
"menuitem181"
,
"name"
:
"前台界面行为"
},{
"id"
:
"menuitem182"
,
"name"
:
"后台界面行为"
}]},{
"id"
:
"menuitem19"
,
"name"
:
"临时模式"
}]},{
"id"
:
"menuitem2"
,
"name"
:
"更多"
,
"items"
:[{
"id"
:
"menuitem46"
,
"name"
:
"数据导出导入"
},{
"id"
:
"menuitem184"
,
"name"
:
"主状态"
,
"items"
:[{
"id"
:
"menuitem70"
,
"name"
:
"表格主状态"
},{
"id"
:
"menuitem148"
,
"name"
:
"列表主状态"
},{
"id"
:
"menuitem183"
,
"name"
:
"数据主状态"
},{
"id"
:
"menuitem28"
,
"name"
:
"日历主状态"
},{
"id"
:
"menuitem29"
,
"name"
:
"树主状态"
}]}]},{
"id"
:
"menuitem92"
,
"name"
:
"其他"
,
"items"
:[{
"id"
:
"menuitem93"
,
"name"
:
"示例实体02示例数据补充"
},{
"id"
:
"menuitem100"
,
"name"
:
"订单示例数据补充"
},{
"id"
:
"menuitem103"
,
"name"
:
"产品示例数据补充"
},{
"id"
:
"menuitem106"
,
"name"
:
"示例实体03示例数据补充"
},{
"id"
:
"menuitem113"
,
"name"
:
"订单类型添加"
},{
"id"
:
"menuitem124"
,
"name"
:
"示例实体01数据补充"
},{
"id"
:
"menuitem144"
,
"name"
:
"客户实体示例数据补充"
},{
"id"
:
"menuitem146"
,
"name"
:
"应用视图数据补充"
},{
"id"
:
"menuitem149"
,
"name"
:
"应用部件数据补充"
},{
"id"
:
"menuitem150"
,
"name"
:
"编辑器数据补充"
}]}]
}]
}
]
}
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录