Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
I
ibizlab-generator
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
ibiz4jteam
ibizlab-generator
提交
25fc6088
提交
25fc6088
编写于
12月 31, 2021
作者:
sq3536
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/master'
上级
03416b1d
15c3466e
变更
28
隐藏空白字符变更
内嵌
并排
正在显示
28 个修改的文件
包含
373 行增加
和
172 行删除
+373
-172
form-details-model.hbs
...ources/templ/r7/@macro/form-detail/form-details-model.hbs
+8
-0
form-group.hbs
...main/resources/templ/r7/@macro/form-detail/form-group.hbs
+1
-1
form-item.hbs
.../main/resources/templ/r7/@macro/form-detail/form-item.hbs
+1
-1
controlAction.hbs
...s/templ/r7/@macro/front-end/view/common/controlAction.hbs
+8
-2
layout.hbs
...esources/templ/r7/@macro/front-end/view/common/layout.hbs
+8
-0
viewBaseConfig.hbs
.../templ/r7/@macro/front-end/view/common/viewBaseConfig.hbs
+23
-24
menu-item.hbs
.../main/resources/templ/r7/@macro/menu-detail/menu-item.hbs
+1
-1
views.json.hbs
...s/templ/r7/app_{{apps}}/public/assets/json/views.json.hbs
+1
-1
IbizDefaultViewLayout.vue
..._{{apps}}/src/components/layout/IbizDefaultViewLayout.vue
+18
-14
IbizEditViewLayout.vue
...app_{{apps}}/src/components/layout/IbizEditViewLayout.vue
+40
-0
IbizIconText.vue
...pl/r7/app_{{apps}}/src/components/render/IbizIconText.vue
+0
-3
IbizMenuItem.vue
...pl/r7/app_{{apps}}/src/components/render/IbizMenuItem.vue
+31
-14
ibizToolbar.vue
...mpl/r7/app_{{apps}}/src/components/render/ibizToolbar.vue
+31
-26
control-vo-base.ts
...pps}}/src/ibiz-core/runtime/control-vo/control-vo-base.ts
+17
-0
control-service-base.ts
...ibiz-core/service/control-service/control-service-base.ts
+18
-1
edit-form-service.ts
...rc/ibiz-core/service/control-service/edit-form-service.ts
+99
-0
index.ts
...p_{{apps}}/src/ibiz-core/service/control-service/index.ts
+2
-1
{{pages@APPINDEXVIEW}}-config.ts.hbs
...pages@APPINDEXVIEW}}/{{pages@APPINDEXVIEW}}-config.ts.hbs
+1
-3
{{pages@APPINDEXVIEW}}.vue.hbs
...s}}/{{pages@APPINDEXVIEW}}/{{pages@APPINDEXVIEW}}.vue.hbs
+5
-2
{{pages@DEEDITVIEW}}-config.ts.hbs
...}/{{pages@DEEDITVIEW}}/{{pages@DEEDITVIEW}}-config.ts.hbs
+0
-5
{{pages@DEEDITVIEW}}.vue.hbs
...dules}}/{{pages@DEEDITVIEW}}/{{pages@DEEDITVIEW}}.vue.hbs
+4
-4
{{pages@DEGRIDVIEW}}-config.ts.hbs
...}/{{pages@DEGRIDVIEW}}/{{pages@DEGRIDVIEW}}-config.ts.hbs
+0
-5
{{pages@DEPICKUPGRIDVIEW}}-config.ts.hbs
...PICKUPGRIDVIEW}}/{{pages@DEPICKUPGRIDVIEW}}-config.ts.hbs
+1
-14
{{pages@DEPICKUPVIEW}}-config.ts.hbs
...pages@DEPICKUPVIEW}}/{{pages@DEPICKUPVIEW}}-config.ts.hbs
+1
-14
index.ts.hbs
...n/resources/templ/r7/app_{{apps}}/src/router/index.ts.hbs
+1
-1
{{ctrls@APPMENU}}-menu.vue.hbs
...s}}/{{ctrls@APPMENU}}-menu/{{ctrls@APPMENU}}-menu.vue.hbs
+2
-1
{{ctrls@FORM}}-form-config.ts.hbs
...s}}/{{ctrls@FORM}}-form/{{ctrls@FORM}}-form-config.ts.hbs
+50
-33
{{ctrls@GRID}}-grid-config.ts.hbs
...s}}/{{ctrls@GRID}}-grid/{{ctrls@GRID}}-grid-config.ts.hbs
+1
-1
未找到文件。
modules/ibizlab-generator-core/src/main/resources/templ/r7/@macro/form-detail/form-details-model.hbs
浏览文件 @
25fc6088
...
...
@@ -8,6 +8,14 @@
detailStyle: '
{{
formDetail
.
detailStyle
}}
',
resetItemName: '
{{
formDetail
.
resetItemName
}}
',
valueItemName: '
{{
formDetail
.
valueItemName
}}
',
{{#
each
formDetail
.
psDEFDGroupLogics
as
|
groupLogic
|
}}
groupOP:
{{
groupLogic
.
groupOP
}}
,
relatedDetailNames:
{{
groupLogic
.
relatedDetailNames
}}
,
logicCat:
{{
groupLogic
.
logicCat
}}
,
logicType:
{{
groupLogic
.
logicType
}}
,
notMode:
{{
groupLogic
.
notMode
}}
,
Logics: []
{{/
each
}}
{{/if}}
},
{{#if
formDetail
.
psDEFormDetails
}}
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/@macro/form-detail/form-group.hbs
浏览文件 @
25fc6088
...
...
@@ -17,7 +17,7 @@
</IbizFormGroup>
</div>
{{else}}
<a-col
:span=
"24"
>
{{>
@macro
/
front-end
/
view
/
common
/
layout
.
hbs
item
=
item
}}
<IbizFormGroup
name=
"
{{
item
.
codeName
}}
"
title=
"
{{
item
.
caption
}}
"
>
{{#
eq
item
.
psLayout
.
layout
"FLEX"
}}
<div
class=
"app-form-layout-flex"
style=
"
{{#if
item
.
psLayout
.
dir
}}
flex-direction:
{{
item
.
psLayout
.
dir
}}
;
{{/if}}{{#if
item
.
psLayout
.
align
}}
justify-content:
{{
item
.
psLayout
.
align
}}
;
{{/if}}{{#if
item
.
psLayout
.
vAlign
}}
align-items:
{{
item
.
psLayout
.
vAlign
}}
;
{{/if}}
"
>
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/@macro/form-detail/form-item.hbs
浏览文件 @
25fc6088
...
...
@@ -8,7 +8,7 @@
</IbizFormItem>
</div>
{{else}}
<a-col
:span=
"24"
>
{{>
@macro
/
front-end
/
view
/
common
/
layout
.
hbs
item
=
item
.
psLayoutPos
}}
<IbizFormItem
name=
"
{{
item
.
codeName
}}
"
label=
"
{{
item
.
caption
}}
"
>
{{#if
item
.
psEditor
}}
{{>
(
lookup
.
'item.psEditor.editorType'
)
item
=
item
ctrlType
=
"form"
}}
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/@macro/front-end/view/common/controlAction.hbs
浏览文件 @
25fc6088
controlsAction:{
controlsAction:{
{{#
page
.
ctrls
as
|
ctrl
|
}}
{{#
neq
controlType
"TOOLBAR"
}}
{{
codeName
}}
:{
loadAction: '
{{
ctrl
.
getPSControlAction
.
psAppDEMethod
.
codeName
}}
',
removeAction: '
{{
ctrl
.
removePSControlAction
.
psAppDEMethod
.
codeName
}}
',
updateAction: '
{{
ctrl
.
updatePSControlAction
.
psAppDEMethod
.
codeName
}}
',
loadDraftAction: '
{{
ctrl
.
getDraftPSControlAction
.
psAppDEMethod
.
codeName
}}
',
createAction: '
{{
ctrl
.
getDraftPSControlAction
.
psAppDEMethod
.
codeName
}}
',
}
\ No newline at end of file
},
{{/
neq
}}
{{/
page
.
ctrls
}}
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/@macro/front-end/view/common/layout.hbs
0 → 100644
浏览文件 @
25fc6088
<a-col
:span=
"
{{#if
item
.
colMD
}}{{
item
.
colMD
}}{{else}}
24
{{/if}}
"
{{!-- :offset="{{#if item.colMD}}{{item.colMD}}{{/if}}"
:lg="{{#if item.colLG}}{{item.colLG}}{{/if}}"
:md="{{#if item.colMD}}{{item.colMD}}{{/if}}"
:sm="{{#if item.colSM}}{{item.colSM}}{{/if}}"
:xs="{{#if item.xs}}{{item.xs}}{{/if}}" --}}
>
modules/ibizlab-generator-core/src/main/resources/templ/r7/@macro/front-end/view/common/viewBaseConfig.hbs
浏览文件 @
25fc6088
viewCodeName: '
{{
page
.
codeName
}}
',
viewName: '
{{
page
.
name
}}
',
viewCaption: '
{{
page
.
caption
}}
',
height: '
{{
page
.
height
}}
',
width: '
{{
page
.
width
}}
',
viewMsgGroup: '
{{
page
.
psAppViewMsgGroup
}}
',
viewUIActions: '
{{
page
.
psAppViewUIActions
}}
',
viewSysCss: '
{{
page
.
psSysCss
}}
',
viewSysImage: '
{{
page
.
psSysImage
}}
',
subCaption: '
{{
page
.
subCaption
}}
',
viewType: '
{{
page
.
viewType
}}
',
viewStyle: '
{{
page
.
viewStyle
}}
',
showCaptionBar: '
{{
page
.
viewStyle
}}
',
viewToolbarModel: [
{{#
page
.
ctrls
}}
{{#
eq
controlType
"TOOLBAR"
}}
{{#
psDEToolbarItems
}}
{ name:'
{{
name
}}
',caption:'
{{
caption
}}
',groupExtractMode:'
{{
groupExtractMode
}}
',itemType:'
{{
itemType
}}
',noPrivDisplayMode:'
{{
noPrivDisplayMode
}}
',showIcon:
{{
showIcon
}}
,showCaption:
{{
showCaption
}}
,tooltip:'
{{
tooltip
}}
' },
{{/
psDEToolbarItems
}}
{{/
eq
}}
{{/
page
.
ctrls
}}
],
\ No newline at end of file
viewCodeName: '
{{
page
.
codeName
}}
',
viewName: '
{{
page
.
name
}}
',
viewCaption: '
{{
page
.
caption
}}
',
height: '
{{
page
.
height
}}
',
width: '
{{
page
.
width
}}
',
viewMsgGroup: '
{{
page
.
psAppViewMsgGroup
}}
',
viewUIActions: '
{{
page
.
psAppViewUIActions
}}
',
viewSysCss: '
{{
page
.
psSysCss
}}
',
viewSysImage: '
{{
page
.
psSysImage
}}
',
subCaption: '
{{
page
.
subCaption
}}
',
viewType: '
{{
page
.
viewType
}}
',
viewStyle: '
{{
page
.
viewStyle
}}
',
showCaptionBar: '
{{
page
.
viewStyle
}}
',
viewToolbarModel: [
{{#
page
.
ctrls
}}
{{#
eq
controlType
"TOOLBAR"
}}
{{#
psDEToolbarItems
}}
{ name:'
{{
name
}}
',caption:'
{{
caption
}}
',groupExtractMode:'
{{
groupExtractMode
}}
',itemType:'
{{
itemType
}}
',noPrivDisplayMode:'
{{
noPrivDisplayMode
}}
',showIcon:
{{
showIcon
}}
,showCaption:
{{
showCaption
}}
,tooltip:'
{{
tooltip
}}
',disabled: false, visible: true,
{{#if
psUIAction
.
psSysImage
}}{{#if
psUIAction
.
psSysImage
.
imagePath
}}
imgPath: "
{{
psUIAction
.
psSysImage
.
imagePath
}}
",
{{/if}}{{#if
psUIAction
.
psSysImage
.
cssClass
}}
iconClass: "
{{
psUIAction
.
psSysImage
.
cssClass
}}
",
{{/if}}{{/if}}
},
{{/
psDEToolbarItems
}}
{{/
eq
}}
{{/
page
.
ctrls
}}
],
{{>
@macro
/
front-end
/
view
/
common
/
controlAction
.
hbs
}}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/@macro/menu-detail/menu-item.hbs
浏览文件 @
25fc6088
...
...
@@ -15,7 +15,7 @@
{{/if}}
{{#if
item
.
psSysImage
}}
{{#if
item
.
psSysImage
.
cssClass
}}
iconCls: "
{{
item
.
psSysImage
.
cssClass
}}
",
iconCl
as
s: "
{{
item
.
psSysImage
.
cssClass
}}
",
{{/if}}
{{#if
item
.
psSysImage
.
imagePath
}}
imgPath: "
{{
item
.
psSysImage
.
imagePath
}}
",
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/public/assets/json/views.json.hbs
浏览文件 @
25fc6088
...
...
@@ -23,6 +23,6 @@
{{/if}}
"viewType": "
{{
appView
.
viewType
}}
",
"fileDir": "@page/
{{#if
psAppDataEntity
}}{{
spinalCase
psAppDataEntity
.
codeName
}}{{else}}
default
{{/if}}
/
{{
spinalCase
appView
.
codeName
}}
"
}
{{#
unless
(
and
@last
..
/
@last
)
}}
,
{{/
unless
}}
}
{{#
unless
@last
}}
,
{{/
unless
}}
{{/
each
}}
}
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/layout/IbizDefaultViewLayout.vue
浏览文件 @
25fc6088
...
...
@@ -18,46 +18,50 @@ const showHeader = computed(()=> props.showHeader && (props.viewCaption || slot
<
template
>
<div
class=
"ibiz-view-layout ibiz-view-layout--default"
>
<div
v-if=
"showHeader"
class=
"ibiz-view-layout__header"
>
<div
class=
"ibiz-view-layout__header"
>
<slot
name=
"header-top"
/>
<div
class=
"ibiz-view-layout__header-content"
>
<slot
name=
"header"
>
<div
class=
"ibiz-view-layout__header-left"
>
<slot
name=
"header-left"
/>
</div>
<div
class=
"ibiz-view-layout__header-right"
>
<slot
name=
"header-right"
/>
</div>
</slot>
<slot
name=
"header-left"
/>
<slot
name=
"header-content"
/>
<slot
name=
"header-right"
/>
</div>
<slot
name=
"header-bottom"
/>
</div>
<div
class=
"ibiz-view-layout__body"
>
<slot
name=
"body-top"
/>
<slot
/>
<slot
name=
"body-bottom"
/>
</div>
<div
class=
"ibiz-view-footer"
>
<slot
name=
"footer"
/>
<slot
name=
"footer-left"
/>
<slot
name=
"footer-content"
/>
<slot
name=
"footer-right"
/>
</div>
</div>
</
template
>
<
style
lang=
"scss"
>
.ibiz-view-layout
{
display
:
flex
;
flex-direction
:
column
;
padding
:
0
24px
24px
;
.ibiz-view-layout__header
{
flex
:
none
;
display
:
flex
;
flex-direction
:
column
;
padding
:
16px
0
;
.ibiz-view-layout__header-content
{
display
:
flex
;
justify-content
:
space-between
;
padding
:
16px
0
;
}
}
.ibiz-view-layout__body
{
flex
:
auto
;
display
:
flex
;
flex-direction
:
column
;
}
.ibiz-view-
layout__
footer
{
.ibiz-view-footer
{
flex
:
none
;
display
:
flex
;
justify-content
:
space-between
;
}
}
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/layout/IbizEditViewLayout.vue
0 → 100644
浏览文件 @
25fc6088
<
script
setup
lang=
"ts"
>
interface
Props
{
viewCaption
?:
string
showHeader
?:
boolean
}
const
props
=
withDefaults
(
defineProps
<
Props
>
(),
{
// 设定默认值,可选属性可以在这初始化
showHeader
:
true
,
})
</
script
>
<
template
>
<IbizDefaultViewLayout>
<template
v-slot:header-left
>
<slot
name=
"caption"
/>
</
template
>
<
template
v-slot:header-right
>
<slot
name=
"toolbar"
/>
</
template
>
<
template
v-slot:header-bottom
>
<slot
name=
"topMessage"
/>
<slot
name=
"searchForm"
/>
</
template
>
<
template
v-slot:body-top
>
<slot
name=
"bodyMessage"
/>
</
template
>
<slot
/>
<
template
v-slot:footer-content
>
<slot
name=
"bottomMessage"
/>
</
template
>
</IbizDefaultViewLayout>
</template>
<
style
lang=
"scss"
>
</
style
>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/render/IbizIconText.vue
浏览文件 @
25fc6088
<
script
setup
lang=
"ts"
>
// props声明和默认值处理
interface
Props
{
text
?:
string
iconClass
?:
string
,
...
...
@@ -15,7 +13,6 @@ const props = withDefaults(defineProps<Props>(), {
const
hasIcon
=
computed
(()
=>
props
.
iconClass
||
props
.
imgPath
)
const
extraClass
=
{
"ibiz-icon-text--no-icon"
:
!
hasIcon
.
value
,
[
`ibiz-icon-text--
${
props
.
position
}
`
]:
hasIcon
.
value
,
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/render/IbizMenuItem.vue
浏览文件 @
25fc6088
<
script
setup
lang=
"ts"
>
import
{
IParam
}
from
"@ibiz-core"
;
import
{
UserOutlined
,
}
from
'@ant-design/icons-vue'
;
interface
Props
{
items
:
IParam
[];
items
:
IParam
[],
collapsed
:
boolean
,
}
const
props
=
withDefaults
(
defineProps
<
Props
>
(),
{});
const
props
=
withDefaults
(
defineProps
<
Props
>
(),
{
collapsed
:
false
,
});
</
script
>
<
template
>
<template
v-for=
"item in items"
:key=
"item.name"
>
<template
v-if=
"!item.items"
>
<a-menu-item
v-if=
"!item.hidden"
:key=
"item.name"
>
<a-menu-item
v-if=
"!item.hidden"
:key=
"item.name"
class=
"ibiz-menu-item"
>
<template
#
icon
>
<div
class=
"menu-icon"
>
<UserOutlined
/>
</div>
<IbizIconText
:iconClass=
"item.iconClass"
:imgPath=
"item.imgPath"
:text=
"collapsed && item.caption[0]"
/>
</
template
>
\{{item.caption}}
</a-menu-item>
</template>
<
template
v-else
>
<a-sub-menu
v-if=
"!item.hidden"
:key=
"item.name"
>
<a-sub-menu
v-if=
"!item.hidden"
:key=
"item.name"
class=
"ibiz-menu-item"
>
<template
#
icon
>
<div
class=
"menu-icon"
>
<UserOutlined
/>
</div>
<IbizIconText
:iconClass=
"item.iconClass"
:imgPath=
"item.imgPath"
:text=
"collapsed && item.caption[0]"
/>
</
template
>
<
template
#
title
>
\
{{
item
.
caption
}}
</
template
>
<IbizMenuItem
:items=
"item.items"
/>
...
...
@@ -36,5 +32,26 @@ const props = withDefaults(defineProps<Props>(), {});
</template>
<
style
lang=
"scss"
>
.ibiz-icon-text
{
display
:
flex
!
important
;
align-items
:
center
;
}
.ant-menu-submenu-popup
{
.ibiz-menu-item
{
display
:
flex
!
important
;
}
.ant-menu-submenu-title
{
display
:
flex
!
important
;
width
:
100%
;
}
}
.ant-menu-inline-collapsed
{
.ibiz-menu-item
{
position
:
relative
;
.ibiz-icon-text
{
position
:
absolute
;
right
:
calc
(
50%
-
8px
);
}
}
}
</
style
>
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/render/ibizToolbar.vue
浏览文件 @
25fc6088
...
...
@@ -25,15 +25,6 @@ const props = withDefaults(defineProps<ToolbarProps>(), {
});
const
emit
=
defineEmits
<
toolbarEmit
>
();
const
items
:
Ref
<
IParam
[]
>
=
ref
(
props
.
actionModel
||
[]);
console
.
log
(
items
);
const
getItemClass
=
(
item
:
IParam
)
=>
{
return
item
?.
class
;
};
const
getItemIcon
=
(
item
:
IParam
)
=>
{
if
(
item
.
getPSSysImage
)
{
return
item
.
getPSSysImage
.
cssClass
;
}
};
const
itemClick
=
(
item
:
IParam
)
=>
{
emit
(
"toolbarEvent"
,
{
tag
:
props
.
name
,
...
...
@@ -52,17 +43,19 @@ const itemClick = (item: IParam) => {
>
<!-- todo 无权限显示模式 -->
<a-button
v-show=
"
tru
e"
:class=
"['toolbar-item',
getItemClass(item)
]"
v-show=
"
item.visibl
e"
:class=
"['toolbar-item',
item.class
]"
:disabled=
"item.disabled"
type=
"primary"
@
click=
"itemClick(item)"
>
<!--
<a-icon
v-show=
"item.showIcon"
:type=
"getItemIcon(item)"
/>
-->
\
{{
item
.
showCaption
?
item
.
caption
:
""
}}
<IbizIconText
:text=
"item.showCaption && item.caption"
:iconClass=
"item.showIcon && item.iconClass"
:imgPath=
"item.showIcon && item.imgPath"
/>
</a-button>
</a-tooltip>
<a-dropdown
v-else-if=
"Object.is(item.itemType, '
items
')"
>
<a-dropdown
v-else-if=
"Object.is(item.itemType, '
ITEMS
')"
>
<a-menu
slot=
"overlay"
@
click=
"itemClick"
>
<a-tooltip
v-for=
"(childItem, index) in item"
...
...
@@ -71,35 +64,39 @@ const itemClick = (item: IParam) => {
>
<a-menu-item
v-show=
"childItem.visible"
:class=
"['toolbar-item',
getItemClass(childItem)
]"
:class=
"['toolbar-item',
item.class
]"
:disabled=
"childItem.disabled"
type=
"primary"
@
click=
"itemClick(childItem)"
>
<!--
<a-icon
v-show=
"childItem.showIcon"
:type=
"getItemIcon(childItem)"
/>
-->
\
{{
childItem
.
showCaption
?
childItem
.
caption
:
""
}}
<IbizIconText
:text=
"item.showCaption && item.caption"
:iconClass=
"item.showIcon && item.iconClass"
:imgPath=
"item.showIcon && item.imgPath"
/>
</a-menu-item>
</a-tooltip>
</a-menu>
</a-dropdown>
<template
v-else-if=
"Object.is(item.itemType, 'SEPERATOR')"
>
<span
class=
'separator'
>
|
</span>
</
template
>
</template>
</a-space>
<a-space
v-else
class=
"toolbar-link"
>
<
template
v-for=
"(item, index) in items"
:key=
"index"
>
<div
v-if=
"item.separator"
class=
"separator"
></div>
<a-button
v-show=
"item.vis
abled
"
:class=
"['toolbar-item',
getItemClass(item)
]"
v-show=
"item.vis
ible
"
:class=
"['toolbar-item',
item.class
]"
:disabled=
"item.disabled"
type=
"link"
@
click=
"itemClick(item)"
>
<!--
<a-icon
v-show=
"item.showIcon"
:type=
"getItemIcon(item)"
/>
-->
\
{{
item
.
showCaption
?
item
.
caption
:
""
}}
<IbizIconText
:text=
"item.showCaption && item.caption"
:iconClass=
"item.showIcon && item.iconClass"
:imgPath=
"item.showIcon && item.imgPath"
/>
</a-button>
<div
v-if=
"item.separator"
class=
"separator"
></div>
</
template
>
</a-space>
</div>
...
...
@@ -113,9 +110,12 @@ const itemClick = (item: IParam) => {
flex-wrap
:
wrap
;
.ant-space-item
{
position
:
relative
;
.ant-btn-link
{
padding
:
4px
10px
;
}
.separator
{
position
:
absolute
;
righ
t
:
0
;
lef
t
:
0
;
top
:
15%
;
height
:
70%
;
width
:
1px
;
...
...
@@ -123,5 +123,10 @@ const itemClick = (item: IParam) => {
}
}
}
.toolbar-item
{
.ibiz-icon-text__icon
{
vertical-align
:
unset
;
}
}
}
</
style
>
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/ibiz-core/runtime/control-vo/control-vo-base.ts
浏览文件 @
25fc6088
...
...
@@ -74,6 +74,23 @@ export class ControlVOBase {
}
}
/**
* 克隆方法(创建一个新的ControlVO对象)
* 拥有ControlVO的功能,且与原对象的互不影响。
*
*/
public
clone
(){
}
/**
* 转换成普通js对象,拷贝所有的数据
*
*/
public
toObject
(){
return
{};
}
/**
* 用后台数据重置数据对象
* @param data 后台数据
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/ibiz-core/service/control-service/control-service-base.ts
浏览文件 @
25fc6088
export
class
ControlServiceBase
{
import
{
ControlVOBase
,
EntityService
}
from
"@ibiz-core"
;
export
class
ControlServiceBase
<
T
extends
ControlVOBase
>
{
/**
* 构造函数
* @param controlVOType
*/
constructor
(
private
controlVOType
:
new
(
data
:
any
)
=>
T
,
public
entityService
:
EntityService
){}
/**
* 新建部件界面数据对象
* @param $DO 后台数据对象
* @return {*}
*/
public
newControlVO
(
$DO
:
any
){
return
new
this
.
controlVOType
(
$DO
);
}
/**
* 请求前处理函数
*
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/
widgets/{{appEntities}}/{{ctrls@FORM}}-form/{{ctrls@FORM}}-form-service.ts.hb
s
→
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/
ibiz-core/service/control-service/edit-form-service.t
s
浏览文件 @
25fc6088
import { ControlServiceBase, hasFunction } from '@ibiz-core';
import { createUUID } from 'qx-util';
import {
{{
pascalCase
ctrl
.
psAppDataEntity
.
codeName
}}
Service } from '@service/entity/
{{
spinalCase
ctrl
.
psAppDataEntity
.
codeName
}}
/
{{
spinalCase
ctrl
.
psAppDataEntity
.
codeName
}}
-service';
import { ControlVO } from './
{{
spinalCase
ctrl
.
codeName
}}
-form-config';
export class ControlService extends ControlServiceBase {
/**
* 实体服务对象
*/
public entityService:
{{
pascalCase
ctrl
.
psAppDataEntity
.
codeName
}}
Service = new
{{
pascalCase
ctrl
.
psAppDataEntity
.
codeName
}}
Service();
import
{
ControlServiceBase
,
ControlVOBase
,
hasFunction
}
from
'@ibiz-core'
;
/**
* 表单部件服务
*
* @export
* @class EditFormService
* @template T 部件数据对象类型
*/
export
class
EditFormService
<
T
extends
ControlVOBase
>
extends
ControlServiceBase
<
T
>
{
/**
* 加载草稿数据
*
...
...
@@ -19,14 +17,15 @@ export class ControlService extends ControlServiceBase {
* @return {*}
*/
public
async
loadDraft
(
context
:
any
,
data
:
any
,
opts
:
{
action
:
string
;
isLoading
?:
boolean
}):
Promise
<
any
>
{
const { context: Context, data: Data } = this.handleRequestData(context, data, opts);
// todo主键
const action = hasFunction(this.entityService, opts.action) ? opts.action : 'GetDraft';
const response = await this.entityService[action](Context, Data, opts.isLoading);
// this.setRemoteCopyData(response);
response.data = new ControlVO(response.data);
response.data.srfuf = "0";
return this.handleResponse(response, opts);
let
_entityService
:
any
=
this
.
entityService
;
const
{
context
:
Context
,
data
:
Data
}
=
this
.
handleRequestData
(
context
,
data
,
opts
);
// todo主键
const
action
=
hasFunction
(
_entityService
,
opts
.
action
)
?
opts
.
action
:
'GetDraft'
;
const
response
=
await
_entityService
[
action
](
Context
,
Data
,
opts
.
isLoading
);
// this.setRemoteCopyData(response);
response
.
data
=
this
.
newControlVO
(
response
.
data
);
response
.
data
.
srfuf
=
'0'
;
return
this
.
handleResponse
(
response
,
opts
);
}
/**
...
...
@@ -38,12 +37,13 @@ export class ControlService extends ControlServiceBase {
* @return {*}
*/
public
async
get
(
context
:
any
,
data
:
any
,
opts
:
{
action
:
string
;
isLoading
?:
boolean
}):
Promise
<
any
>
{
const { context: Context, data: Data } = this.handleRequestData(context, data, opts);
const action = hasFunction(this.entityService, opts.action) ? opts.action : 'GET';
const response = await this.entityService[action](Context, Data, opts.isLoading);
// this.setRemoteCopyData(response);
response.data = new ControlVO(response.data);
return this.handleResponse(response, opts);
let
_entityService
:
any
=
this
.
entityService
;
const
{
context
:
Context
,
data
:
Data
}
=
this
.
handleRequestData
(
context
,
data
,
opts
);
const
action
=
hasFunction
(
_entityService
,
opts
.
action
)
?
opts
.
action
:
'GET'
;
const
response
=
await
_entityService
[
action
](
Context
,
Data
,
opts
.
isLoading
);
// this.setRemoteCopyData(response);
response
.
data
=
this
.
newControlVO
(
response
.
data
);
return
this
.
handleResponse
(
response
,
opts
);
}
/**
...
...
@@ -55,11 +55,12 @@ export class ControlService extends ControlServiceBase {
* @return {*}
*/
public
async
create
(
context
:
any
,
data
:
any
,
opts
:
{
action
:
string
;
isLoading
?:
boolean
}):
Promise
<
any
>
{
const { context: Context, data: Data } = this.handleRequestData(context, data, opts);
const action = hasFunction(this.entityService, opts.action) ? opts.action : 'Create';
const response = await this.entityService[action](Context, Data, opts.isLoading);
response.data = new ControlVO(response.data);
return this.handleResponse(response, opts);
let
_entityService
:
any
=
this
.
entityService
;
const
{
context
:
Context
,
data
:
Data
}
=
this
.
handleRequestData
(
context
,
data
,
opts
);
const
action
=
hasFunction
(
_entityService
,
opts
.
action
)
?
opts
.
action
:
'Create'
;
const
response
=
await
_entityService
[
action
](
Context
,
Data
,
opts
.
isLoading
);
response
.
data
=
this
.
newControlVO
(
response
.
data
);
return
this
.
handleResponse
(
response
,
opts
);
}
/**
...
...
@@ -71,11 +72,12 @@ export class ControlService extends ControlServiceBase {
* @return {*}
*/
public
async
remove
(
context
:
any
,
data
:
any
,
opts
:
{
action
:
string
;
isLoading
?:
boolean
}):
Promise
<
any
>
{
const { context: Context, data: Data } = this.handleRequestData(context, data, opts);
const action = hasFunction(this.entityService, opts.action) ? opts.action : 'Remove';
const response = await this.entityService[action](Context, Data, opts.isLoading);
response.data = new ControlVO(response.data);
return this.handleResponse(response, opts);
let
_entityService
:
any
=
this
.
entityService
;
const
{
context
:
Context
,
data
:
Data
}
=
this
.
handleRequestData
(
context
,
data
,
opts
);
const
action
=
hasFunction
(
_entityService
,
opts
.
action
)
?
opts
.
action
:
'Remove'
;
const
response
=
await
_entityService
[
action
](
Context
,
Data
,
opts
.
isLoading
);
response
.
data
=
this
.
newControlVO
(
response
.
data
);
return
this
.
handleResponse
(
response
,
opts
);
}
/**
...
...
@@ -87,11 +89,11 @@ export class ControlService extends ControlServiceBase {
* @return {*}
*/
public
async
update
(
context
:
any
,
data
:
any
,
opts
:
{
action
:
string
;
isLoading
?:
boolean
}):
Promise
<
any
>
{
const { context: Context, data: Data } = this.handleRequestData(context, data, opts);
const action = hasFunction(this.entityService, opts.action) ? opts.action : 'Update';
const response = await this.entityService[action](Context, Data, opts.isLoading);
response.data = new ControlVO(response.data);
return this.handleResponse(response, opts);
}
let
_entityService
:
any
=
this
.
entityService
;
const
{
context
:
Context
,
data
:
Data
}
=
this
.
handleRequestData
(
context
,
data
,
opts
);
const
action
=
hasFunction
(
_entityService
,
opts
.
action
)
?
opts
.
action
:
'Update'
;
const
response
=
await
_entityService
[
action
](
Context
,
Data
,
opts
.
isLoading
);
response
.
data
=
this
.
newControlVO
(
response
.
data
);
return
this
.
handleResponse
(
response
,
opts
);
}
}
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/ibiz-core/service/control-service/index.ts
浏览文件 @
25fc6088
export
*
from
'./control-service-base'
\ No newline at end of file
export
*
from
'./control-service-base'
export
*
from
'./edit-form-service'
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/page/{{appModules}}/{{pages@APPINDEXVIEW}}/{{pages@APPINDEXVIEW}}-config.ts.hbs
浏览文件 @
25fc6088
export const ViewConfig = {
viewCodeName: '
{{
page
.
codeName
}}
',
viewName: '
{{
page
.
name
}}
',
viewCaption: '
{{
page
.
caption
}}
',
{{>
@macro
/
front-end
/
view
/
common
/
viewBaseConfig
.
hbs
}}
};
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/page/{{appModules}}/{{pages@APPINDEXVIEW}}/{{pages@APPINDEXVIEW}}.vue.hbs
浏览文件 @
25fc6088
...
...
@@ -32,6 +32,9 @@ const emit = defineEmits<ViewEmit>();
// 安装功能模块,提供状态和能力方法
const
{
state
}
=
new
IndexView
(
ViewConfig
).
moduleInstall
(
props
,
emit
);
const
collapsed
:
Ref
<
boolean
>
=
ref
(
false
);
const
collapsedChange
=
()
=>
{
collapsed
.
value
=
!
collapsed
.
value
;
}
</script>
<template>
...
...
@@ -42,9 +45,9 @@ const collapsed: Ref<boolean> = ref(false);
<MenuUnfoldOutlined
v-if=
"collapsed"
class=
"trigger"
@
click=
"
() => (collapsed = !collapsed)
"
@
click=
"
collapsedChange
"
/>
<MenuFoldOutlined
v-else
class=
"trigger"
@
click=
"
() => (collapsed = !collapsed)
"
/>
<MenuFoldOutlined
v-else
class=
"trigger"
@
click=
"
collapsedChange
"
/>
</div>
</template>
<template
#
user
>
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/page/{{appModules}}/{{pages@DEEDITVIEW}}/{{pages@DEEDITVIEW}}-config.ts.hbs
浏览文件 @
25fc6088
export const ViewConfig = {
{{>
@macro
/
front-end
/
view
/
common
/
viewBaseConfig
.
hbs
}}
{{#
each
page
.
ctrls
as
|
ctrl
|
}}
{{#if
(
eq
ctrl
.
controlType
"FORM"
)
}}
{{>
@macro
/
front-end
/
view
/
common
/
controlAction
.
hbs
ctrl
=
ctrl
}}
{{/if}}
{{/
each
}}
};
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/page/{{appModules}}/{{pages@DEEDITVIEW}}/{{pages@DEEDITVIEW}}.vue.hbs
浏览文件 @
25fc6088
...
...
@@ -34,8 +34,8 @@ const { state, handleToolbarEvent } = new EditView(ViewConfig).moduleInstall(pro
</script>
<template>
<Ibiz
Defaul
tViewLayout
:class=
"['ibiz-edit-view', state.viewSysCss]"
>
<template
v-slot:
header-left
>
<Ibiz
Edi
tViewLayout
:class=
"['ibiz-edit-view', state.viewSysCss]"
>
<template
v-slot:
caption
>
<IbizIconText
class=
"ibiz-view__caption"
size=
"large"
...
...
@@ -46,7 +46,7 @@ const { state, handleToolbarEvent } = new EditView(ViewConfig).moduleInstall(pro
</template>
{{#
page
.
ctrls
}}
{{#
eq
controlType
"TOOLBAR"
}}
<template
v-slot:
header-right
>
<template
v-slot:
toolbar
>
<IbizToolbar
mode=
"button"
name=
"
{{
lowerCase
codeName
}}
"
...
...
@@ -64,7 +64,7 @@ const { state, handleToolbarEvent } = new EditView(ViewConfig).moduleInstall(pro
></
{{
codeName
}}
Form>
{{/
eq
}}
{{/
page
.
ctrls
}}
</Ibiz
Defaul
tViewLayout>
</Ibiz
Edi
tViewLayout>
</template>
<style
lang=
"scss"
>
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/page/{{appModules}}/{{pages@DEGRIDVIEW}}/{{pages@DEGRIDVIEW}}-config.ts.hbs
浏览文件 @
25fc6088
...
...
@@ -2,9 +2,4 @@ export const ViewConfig = {
gridRowActiveMode:
{{
page
.
gridRowActiveMode
}}
,
rowEditState:
{{#if
page
.
enableRowEdit
}}{{
page
.
rowEditDefault
}}{{else}}
false
{{/if}}
,
{{>
@macro
/
front-end
/
view
/
common
/
viewBaseConfig
.
hbs
}}
{{#
each
page
.
ctrls
as
|
ctrl
|
}}
{{#if
(
eq
ctrl
.
controlType
"GRID"
)
}}
{{>
@macro
/
front-end
/
view
/
common
/
controlAction
.
hbs
ctrl
=
ctrl
}}
{{/if}}
{{/
each
}}
};
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/page/{{appModules}}/{{pages@DEPICKUPGRIDVIEW}}/{{pages@DEPICKUPGRIDVIEW}}-config.ts.hbs
浏览文件 @
25fc6088
export const ViewConfig = {
viewCodeName: '
{{
page
.
codeName
}}
',
viewName: '
{{
page
.
name
}}
',
viewCaption: '
{{
page
.
caption
}}
',
{{#
page
.
ctrls
}}
{{#
eq
controlType
"GRID"
}}
{{
lowerCase
codeName
}}
:{
name:'
{{
name
}}
',
codeName:'
{{
codeName
}}
',
action:{
'createAction': 'Create'
}
},
{{/
eq
}}
{{/
page
.
ctrls
}}
{{>
@macro
/
front-end
/
view
/
common
/
viewBaseConfig
.
hbs
}}
};
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/page/{{appModules}}/{{pages@DEPICKUPVIEW}}/{{pages@DEPICKUPVIEW}}-config.ts.hbs
浏览文件 @
25fc6088
export const ViewConfig = {
viewCodeName: '
{{
page
.
codeName
}}
',
viewName: '
{{
page
.
name
}}
',
viewCaption: '
{{
page
.
caption
}}
',
{{#
page
.
ctrls
}}
{{#
eq
controlType
"PICKUPVIEWPANEL"
}}
{{
lowerCase
codeName
}}
:{
name:'
{{
name
}}
',
codeName:'
{{
codeName
}}
',
action:{
'createAction': 'Create'
}
},
{{/
eq
}}
{{/
page
.
ctrls
}}
{{>
@macro
/
front-end
/
view
/
common
/
viewBaseConfig
.
hbs
}}
};
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/router/index.ts.hbs
浏览文件 @
25fc6088
...
...
@@ -32,7 +32,7 @@ const routes = [
viewType: "
{{
appView
.
viewType
}}
",
{{#if
appView
.
psSysImage
}}
imgPath: "
{{
appView
.
psSysImage
.
imagePath
}}
",
iconCls: "
{{
appView
.
psSysImage
.
cssClass
}}
",
iconCl
as
s: "
{{
appView
.
psSysImage
.
cssClass
}}
",
{{/if}}
parameters: [
{ pathName: "apps", parameterName: "app" },
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/widgets/{{appEntities}}/{{ctrls@APPMENU}}-menu/{{ctrls@APPMENU}}-menu.vue.hbs
浏览文件 @
25fc6088
...
...
@@ -25,11 +25,12 @@ const { state, menuSelect } = new MenuControl(CtrlConfig).moduleInstall(props, e
<template>
<a-menu
class=
"ibiz-menu"
v-model:openKeys=
"state.defaultOpens"
v-model:selectedKeys=
"state.defaultSelect"
:mode=
"Object.is('LEFT', state.menuAlign) ? 'inline' : 'horizontal'"
@
select=
"menuSelect"
>
<IbizMenuItem
:items=
"state.menus"
/>
<IbizMenuItem
:items=
"state.menus"
:collapsed=
"collapsed"
/>
</a-menu>
</template>
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/widgets/{{appEntities}}/{{ctrls@FORM}}-form/{{ctrls@FORM}}-form-config.ts.hbs
浏览文件 @
25fc6088
{{>
@macro
/
form-detail
/
include-form
.
hbs
}}
import { ControlVOBase, verifyRules } from '@ibiz-core';
import {
ControlService } from './
{{
spinalCase
ctrl
.
codeName
}}
-form
-service';
import { ControlVOBase, verifyRules
, EditFormService
} from '@ibiz-core';
import {
{{
pascalCase
ctrl
.
psAppDataEntity
.
codeName
}}
Service } from '@service/entity/
{{
spinalCase
ctrl
.
psAppDataEntity
.
codeName
}}
/
{{
spinalCase
ctrl
.
psAppDataEntity
.
codeName
}}
-service';
/**
* 部件展示数据对象
* @export
* @class ControlVO
*/
export class ControlVO extends ControlVOBase {
/**
* 用后台数据对象创建部件数据对象
* @param data 后台数据
*/
constructor(data: any){
super(data);
// 记录没有映射的属性
this.$ownKeys =
{{
~#
each
ctrl
.
psDEFormItems
as
|
formItem
|
~
}}
{{#if
@first
}}
[
{{/
if
~
}}
'
{{
lowerCase
formItem
.
id
}}
'
{{#
unless
@last
}}
,
{{/
unless
}}
{{
~#
if
@last
}}
];
{{/
if
~
}}
{{/
each
}}
}
// 表单里映射了属性的字段
{{#
each
ctrl
.
psDEFormItems
as
|
formItem
|
}}
{{!-- TODO: 表单formItem的name拿不到 --}}
{{#
neq
formItem
.
psAppDEField
null
}}
get
{{
lowerCase
formItem
.
id
}}
() {
return this.$DO.
{{
lowerCase
formItem
.
psAppDEField
.
codeName
}}
;
}
set
{{
lowerCase
formItem
.
id
}}
(value: any) {
this.$DO.
{{
lowerCase
formItem
.
psAppDEField
.
codeName
}}
= value;
}
{{/
neq
}}
{{/
each
}}
// 表单里没有映射实体属性的字段(srfuf除外)
{{#
each
ctrl
.
psDEFormItems
as
|
formItem
|
}}
{{#if
(
and
(
eq
formItem
.
psAppDEField
null
)
(
neq
formItem
.
id
"srfuf"
))
}}
{{
lowerCase
formItem
.
id
}}
: any;
{{/if}}
{{/
each
}}
}
// 部件配置对象
export const CtrlConfig = {
controlCodeName: '
{{
ctrl
.
codeName
}}
',
controlName: '
{{
ctrl
.
name
}}
',
controlService: new
ControlService(
),
data:
{}
,
controlService: new
EditFormService
<ControlVO>
(ControlVO, new
{{
pascalCase
ctrl
.
psAppDataEntity
.
codeName
}}
Service()
),
data:
new ControlVO({})
,
itemsModel: [
{{#
each
ctrl
.
psDEFormPages
as
|
FormPage
|
}}
{{>
(
lookup
'FORMDETAILSMODEL'
)
items
=
FormPage
.
psDEFormDetails
}}
...
...
@@ -34,32 +79,4 @@ export const CtrlConfig = {
{{/
neq
}}
{{/
each
}}
},
};
/**
* 部件展示数据对象
* @export
* @class ControlVO
*/
export class ControlVO extends ControlVOBase {
// 表单里映射了属性的字段
{{#
each
ctrl
.
psDEFormItems
as
|
formItem
|
}}
{{!-- TODO: 表单formItem的name拿不到 --}}
{{#
neq
formItem
.
psAppDEField
null
}}
get
{{
lowerCase
formItem
.
id
}}
() {
return this.$DO.
{{
lowerCase
formItem
.
psAppDEField
.
codeName
}}
;
}
set
{{
lowerCase
formItem
.
id
}}
(value: any) {
this.$DO.
{{
lowerCase
formItem
.
psAppDEField
.
codeName
}}
= value;
}
{{/
neq
}}
{{/
each
}}
// 表单里没有映射实体属性的字段(srfuf除外)
{{#
each
ctrl
.
psDEFormItems
as
|
formItem
|
}}
{{#if
(
and
(
eq
formItem
.
psAppDEField
null
)
(
neq
formItem
.
id
"srfuf"
))
}}
{{
lowerCase
formItem
.
id
}}
: any;
{{/if}}
{{/
each
}}
}
\ No newline at end of file
};
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/widgets/{{appEntities}}/{{ctrls@GRID}}-grid/{{ctrls@GRID}}-grid-config.ts.hbs
浏览文件 @
25fc6088
...
...
@@ -48,7 +48,7 @@ export const CtrlConfig = {
{{#if
(
eq
column
.
columnType
'UAGRIDCOLUMN'
)
}}
{{#
each
column
.
psDEUIActionGroup
.
psUIActionGroupDetails
as
|
action
|
}}
{{#
action
}}
{ name: "
{{
name
}}
", caption: "
{{
psUIAction
.
caption
}}
", showIcon:
{{
showIcon
}}
, showCaption:
{{
showCaption
}}
, separator:
{{
addSeparator
}}
, uIActionTag: "
{{
psUIAction
.
uIActionTag
}}
", noPrivDisplayMode:
{{#if
psUIAction
.
noPrivDisplayMode
}}{{
psUIAction
.
noPrivDisplayMode
}}{{else}}
6
{{/if}}
, disabled: false, vis
abled: true,
{{#if
psUIAction
.
psSysImage
}}{{#if
psUIAction
.
psSysImage
.
imagePath
}}
imgPath: "
{{
psUIAction
.
psSysImage
.
imagePath
}}
",
{{/if}}{{#if
psUIAction
.
psSysImage
.
cssClass
}}
iconCl
s: "
{{
psUIAction
.
psSysImage
.
cssClass
}}
",
{{/if}}{{/if}}
},
{ name: "
{{
name
}}
", caption: "
{{
psUIAction
.
caption
}}
", showIcon:
{{
showIcon
}}
, showCaption:
{{
showCaption
}}
, separator:
{{
addSeparator
}}
, uIActionTag: "
{{
psUIAction
.
uIActionTag
}}
", noPrivDisplayMode:
{{#if
psUIAction
.
noPrivDisplayMode
}}{{
psUIAction
.
noPrivDisplayMode
}}{{else}}
6
{{/if}}
, disabled: false, vis
ible: true,
{{#if
psUIAction
.
psSysImage
}}{{#if
psUIAction
.
psSysImage
.
imagePath
}}
imgPath: "
{{
psUIAction
.
psSysImage
.
imagePath
}}
",
{{/if}}{{#if
psUIAction
.
psSysImage
.
cssClass
}}
iconClas
s: "
{{
psUIAction
.
psSysImage
.
cssClass
}}
",
{{/if}}{{/if}}
},
{{/
action
}}
{{/
each
}}
{{/if}}
...
...
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录