Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
功
功能演示系统
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
示例
功能演示系统
提交
77cc01a7
提交
77cc01a7
编写于
11月 08, 2022
作者:
ibizdev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ShineKOT 发布系统代码 [后台服务,演示应用]
上级
35d2b4f3
变更
13
隐藏空白字符变更
内嵌
并排
正在显示
13 个修改的文件
包含
1145 行增加
和
11 行删除
+1145
-11
app-panel-view-panel-base.vue
...ts/app/app-panel-view-panel/app-panel-view-panel-base.vue
+117
-0
default-searchform-base.vue
...zappeditor/default-searchform/default-searchform-base.vue
+2
-2
auto1-panel-base.vue
...Web/src/widgets/ibizbook/auto1-panel/auto1-panel-base.vue
+125
-0
default-searchform-base.vue
...s/ibizbook/default-searchform/default-searchform-base.vue
+2
-2
has-panel-kan-ban-panel-base.vue
.../has-panel-kan-ban-panel/has-panel-kan-ban-panel-base.vue
+125
-0
has-panel-list-panel-base.vue
...izbook/has-panel-list-panel/has-panel-list-panel-base.vue
+125
-0
listpanel-panel-base.vue
...widgets/ibizbook/listpanel-panel/listpanel-panel-base.vue
+131
-0
timelineitemlayoutpanel-panel-base.vue
...mlayoutpanel-panel/timelineitemlayoutpanel-panel-base.vue
+119
-0
usr-panel-base.vue
app_Web/src/widgets/ibizbook/usr-panel/usr-panel-base.vue
+119
-0
usr4-panel-base.vue
app_Web/src/widgets/ibizbook/usr4-panel/usr4-panel-base.vue
+125
-0
usr5-panel-base.vue
app_Web/src/widgets/ibizbook/usr5-panel/usr5-panel-base.vue
+119
-0
main-grid-base.vue
app_Web/src/widgets/ibizorder/main-grid/main-grid-base.vue
+21
-7
main-grid-model.ts
app_Web/src/widgets/ibizorder/main-grid/main-grid-model.ts
+15
-0
未找到文件。
app_Web/src/widgets/app/app-panel-view-panel/app-panel-view-panel-base.vue
浏览文件 @
77cc01a7
...
...
@@ -213,6 +213,30 @@ export default class AppPanelViewBase extends Vue implements ControlInterface {
*/
public
appUIService
:
UIService
=
new
UIService
();
/**
* 视图布局是否加载
*
* @public
* @memberof PanelBase
*/
public
isLayoutLoadding
:
boolean
=
false
;
/**
* 视图布局数据
*
* @public
* @memberof PanelBase
*/
public
layoutData
:
any
=
{};
/**
* 视图布局面板模型对象
*
* @public
* @memberof PanelBase
*/
public
layoutModelDetails
:
any
=
{};
/**
* 视图布局顶级成员名称
*
...
...
@@ -221,6 +245,68 @@ export default class AppPanelViewBase extends Vue implements ControlInterface {
*/
public
rootLayoutDetailNames
:
string
[]
=
[
];
/**
* 初始化布局
*
* @public
* @memberof PanelBase
*/
public
async
initLayout
()
{
if
(
this
.
rootLayoutDetailNames
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
this
.
rootLayoutDetailNames
.
length
;
i
++
)
{
const
name
=
this
.
rootLayoutDetailNames
[
i
];
const
rootItem
=
this
.
layoutItems
[
name
];
if
(
!
rootItem
)
{
return
;
}
await
this
.
initLayoutItem
(
rootItem
);
}
}
return
true
;
}
/**
* 初始化布局项
*
* @public
* @memberof PanelBase
*/
public
async
initLayoutItem
(
layoutModelItem
:
any
,
index
:
number
=
0
)
{
const
{
name
}
=
layoutModelItem
;
const
layoutModelDetail
=
Util
.
getLayoutItemInstance
(
layoutModelItem
);
if
(
!
index
)
{
await
layoutModelDetail
.
load
(
this
.
context
,
this
.
viewparams
);
this
.
$set
(
this
.
layoutModelDetails
,
name
,
layoutModelDetail
);
this
.
$set
(
this
.
layoutData
,
name
,
layoutModelDetail
.
getData
());
}
else
{
layoutModelDetail
.
setIndex
(
index
);
await
layoutModelDetail
.
load
(
this
.
context
,
this
.
viewparams
);
this
.
$set
(
this
.
layoutModelDetails
,
`
${
name
}
_
${
index
}
`
,
layoutModelDetail
);
this
.
$set
(
this
.
layoutData
,
`
${
name
}
_
${
index
}
`
,
layoutModelDetail
.
getData
());
}
if
(
layoutModelDetail
&&
layoutModelDetail
.
details
)
{
if
(
layoutModelDetail
.
dataRegionType
===
'MULTIDATA'
)
{
const
multiData
=
layoutModelDetail
.
getData
();
if
(
multiData
&&
multiData
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
multiData
.
length
;
i
++
)
{
for
(
let
j
=
0
;
j
<
layoutModelDetail
.
details
.
length
;
j
++
)
{
const
key
=
layoutModelDetail
.
details
[
j
];
if
(
this
.
layoutItems
[
key
])
{
await
this
.
initLayoutItem
(
this
.
layoutItems
[
key
],
i
);
}
}
}
}
}
else
{
for
(
let
i
=
0
;
i
<
layoutModelDetail
.
details
.
length
;
i
++
)
{
const
key
=
layoutModelDetail
.
details
[
i
];
if
(
this
.
layoutItems
[
key
])
{
await
this
.
initLayoutItem
(
this
.
layoutItems
[
key
],
index
);
}
}
}
}
}
/**
* 视图布局面板项模型对象
...
...
@@ -412,6 +498,7 @@ export default class AppPanelViewBase extends Vue implements ControlInterface {
* @memberof AppPanelViewBase
*/
public
panelLogic
(
name
:
string
):
void
{
}
/**
...
...
@@ -422,6 +509,36 @@ export default class AppPanelViewBase extends Vue implements ControlInterface {
*/
public
getButtonXData
(
name
:
string
):
any
{
let
xData
=
null
;
let
curLayoutModel
=
null
;
Object
.
values
(
this
.
layoutModelDetails
).
forEach
((
layoutModel
:
any
)
=>
{
if
(
layoutModel
.
name
==
name
)
{
curLayoutModel
=
layoutModel
;
}
})
// 获取数据容器
if
(
curLayoutModel
)
{
const
getDataArea
=
(
cLayoutModel
:
any
):
any
=>
{
let
dataArea
=
null
;
let
parentLayoutModel
=
null
;
Object
.
values
(
this
.
layoutModelDetails
).
forEach
((
pLayoutModel
:
any
)
=>
{
if
(
pLayoutModel
.
name
==
cLayoutModel
.
parentName
)
{
parentLayoutModel
=
pLayoutModel
;
if
(
parentLayoutModel
.
dataRegionType
==
'SINGLEDATA'
||
parentLayoutModel
.
dataRegionType
==
'MULTIDATA'
)
{
dataArea
=
parentLayoutModel
;
}
}
})
if
(
!
dataArea
&&
parentLayoutModel
)
{
dataArea
=
getDataArea
(
parentLayoutModel
);
}
return
dataArea
;
}
xData
=
getDataArea
(
curLayoutModel
);
}
// 获取当前视图
if
(
!
xData
)
{
xData
=
this
;
}
return
xData
;
}
...
...
app_Web/src/widgets/ibizappeditor/default-searchform/default-searchform-base.vue
浏览文件 @
77cc01a7
...
...
@@ -598,7 +598,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
*/
public
load
(
opt
:
any
=
{}):
void
{
if
(
!
this
.
loadAction
){
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
'IBIZAPPEDITOR
List
View'
+
(
this
.
$t
(
'app.searchForm.notConfig.loadAction'
)
as
string
)
});
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
'IBIZAPPEDITOR
Grid
View'
+
(
this
.
$t
(
'app.searchForm.notConfig.loadAction'
)
as
string
)
});
return
;
}
const
arg
:
any
=
{
...
opt
};
...
...
@@ -634,7 +634,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
*/
public
loadDraft
(
opt
:
any
=
{},
mode
?:
string
):
void
{
if
(
!
this
.
loaddraftAction
){
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
'IBIZAPPEDITOR
List
View'
+
(
this
.
$t
(
'app.searchForm.notConfig.loaddraftAction'
)
as
string
)
});
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
'IBIZAPPEDITOR
Grid
View'
+
(
this
.
$t
(
'app.searchForm.notConfig.loaddraftAction'
)
as
string
)
});
return
;
}
const
arg
:
any
=
{
...
opt
}
;
...
...
app_Web/src/widgets/ibizbook/auto1-panel/auto1-panel-base.vue
浏览文件 @
77cc01a7
...
...
@@ -247,6 +247,30 @@ export default class Auto1Base extends Vue implements ControlInterface {
*/
public
appUIService
:
IBIZBOOKUIService
=
new
IBIZBOOKUIService
();
/**
* 视图布局是否加载
*
* @public
* @memberof Item1layoutpanelBase
*/
public
isLayoutLoadding
:
boolean
=
false
;
/**
* 视图布局数据
*
* @public
* @memberof Item1layoutpanelBase
*/
public
layoutData
:
any
=
{};
/**
* 视图布局面板模型对象
*
* @public
* @memberof Item1layoutpanelBase
*/
public
layoutModelDetails
:
any
=
{};
/**
* 视图布局顶级成员名称
*
...
...
@@ -255,6 +279,68 @@ export default class Auto1Base extends Vue implements ControlInterface {
*/
public
rootLayoutDetailNames
:
string
[]
=
[
'container1'
];
/**
* 初始化布局
*
* @public
* @memberof Item1layoutpanelBase
*/
public
async
initLayout
()
{
if
(
this
.
rootLayoutDetailNames
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
this
.
rootLayoutDetailNames
.
length
;
i
++
)
{
const
name
=
this
.
rootLayoutDetailNames
[
i
];
const
rootItem
=
this
.
layoutItems
[
name
];
if
(
!
rootItem
)
{
return
;
}
await
this
.
initLayoutItem
(
rootItem
);
}
}
return
true
;
}
/**
* 初始化布局项
*
* @public
* @memberof Item1layoutpanelBase
*/
public
async
initLayoutItem
(
layoutModelItem
:
any
,
index
:
number
=
0
)
{
const
{
name
}
=
layoutModelItem
;
const
layoutModelDetail
=
Util
.
getLayoutItemInstance
(
layoutModelItem
);
if
(
!
index
)
{
await
layoutModelDetail
.
load
(
this
.
context
,
this
.
viewparams
);
this
.
$set
(
this
.
layoutModelDetails
,
name
,
layoutModelDetail
);
this
.
$set
(
this
.
layoutData
,
name
,
layoutModelDetail
.
getData
());
}
else
{
layoutModelDetail
.
setIndex
(
index
);
await
layoutModelDetail
.
load
(
this
.
context
,
this
.
viewparams
);
this
.
$set
(
this
.
layoutModelDetails
,
`
${
name
}
_
${
index
}
`
,
layoutModelDetail
);
this
.
$set
(
this
.
layoutData
,
`
${
name
}
_
${
index
}
`
,
layoutModelDetail
.
getData
());
}
if
(
layoutModelDetail
&&
layoutModelDetail
.
details
)
{
if
(
layoutModelDetail
.
dataRegionType
===
'MULTIDATA'
)
{
const
multiData
=
layoutModelDetail
.
getData
();
if
(
multiData
&&
multiData
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
multiData
.
length
;
i
++
)
{
for
(
let
j
=
0
;
j
<
layoutModelDetail
.
details
.
length
;
j
++
)
{
const
key
=
layoutModelDetail
.
details
[
j
];
if
(
this
.
layoutItems
[
key
])
{
await
this
.
initLayoutItem
(
this
.
layoutItems
[
key
],
i
);
}
}
}
}
}
else
{
for
(
let
i
=
0
;
i
<
layoutModelDetail
.
details
.
length
;
i
++
)
{
const
key
=
layoutModelDetail
.
details
[
i
];
if
(
this
.
layoutItems
[
key
])
{
await
this
.
initLayoutItem
(
this
.
layoutItems
[
key
],
index
);
}
}
}
}
}
/**
* 视图布局面板项模型对象
...
...
@@ -263,6 +349,10 @@ export default class Auto1Base extends Vue implements ControlInterface {
* @memberof Item1layoutpanelBase
*/
public
layoutItems
:
any
=
{
field1
:{
name
:
'field1'
,
type
:
'ITEMLAYOUT'
,
caption
:
'图书名'
,
isShowCaption
:
false
,
sysCss
:
''
,
itemType
:
'FIELD'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
''
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
0
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
parentName
:
'container1'
,
panel
:
this
,
fieldState
:
'0'
,
predefinedType
:
''
,
renderMode
:
''
,
dataItemName
:
'title'
,
wrapMode
:
''
,
vAlign
:
''
,
hAlign
:
''
,
},
field2
:{
name
:
'field2'
,
type
:
'ITEMLAYOUT'
,
caption
:
'借出日期'
,
isShowCaption
:
false
,
sysCss
:
''
,
itemType
:
'FIELD'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
''
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
0
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
parentName
:
'container1'
,
panel
:
this
,
fieldState
:
'0'
,
predefinedType
:
''
,
renderMode
:
''
,
dataItemName
:
'start'
,
wrapMode
:
''
,
vAlign
:
''
,
hAlign
:
''
,
},
field3
:{
name
:
'field3'
,
type
:
'ITEMLAYOUT'
,
caption
:
'归还日期'
,
isShowCaption
:
false
,
sysCss
:
''
,
itemType
:
'FIELD'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
''
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
0
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
parentName
:
'container1'
,
panel
:
this
,
fieldState
:
'0'
,
predefinedType
:
''
,
renderMode
:
''
,
dataItemName
:
'end'
,
wrapMode
:
''
,
vAlign
:
''
,
hAlign
:
''
,
},
container1
:{
name
:
'container1'
,
type
:
'ITEMLAYOUT'
,
caption
:
''
,
titleBarCloseMode
:
0
,
isShowCaption
:
false
,
sysCss
:
''
,
itemType
:
'CONTAINER'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
'TABLE_24COL'
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
0
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
panel
:
this
,
details
:[
'field1'
,
'field2'
,
'field3'
]
,
dataRegionType
:
'INHERIT'
}
};
/**
...
...
@@ -458,6 +548,11 @@ export default class Auto1Base extends Vue implements ControlInterface {
* @memberof Auto1Base
*/
public
panelLogic
(
name
:
string
):
void
{
}
/**
...
...
@@ -468,6 +563,36 @@ export default class Auto1Base extends Vue implements ControlInterface {
*/
public
getButtonXData
(
name
:
string
):
any
{
let
xData
=
null
;
let
curLayoutModel
=
null
;
Object
.
values
(
this
.
layoutModelDetails
).
forEach
((
layoutModel
:
any
)
=>
{
if
(
layoutModel
.
name
==
name
)
{
curLayoutModel
=
layoutModel
;
}
})
// 获取数据容器
if
(
curLayoutModel
)
{
const
getDataArea
=
(
cLayoutModel
:
any
):
any
=>
{
let
dataArea
=
null
;
let
parentLayoutModel
=
null
;
Object
.
values
(
this
.
layoutModelDetails
).
forEach
((
pLayoutModel
:
any
)
=>
{
if
(
pLayoutModel
.
name
==
cLayoutModel
.
parentName
)
{
parentLayoutModel
=
pLayoutModel
;
if
(
parentLayoutModel
.
dataRegionType
==
'SINGLEDATA'
||
parentLayoutModel
.
dataRegionType
==
'MULTIDATA'
)
{
dataArea
=
parentLayoutModel
;
}
}
})
if
(
!
dataArea
&&
parentLayoutModel
)
{
dataArea
=
getDataArea
(
parentLayoutModel
);
}
return
dataArea
;
}
xData
=
getDataArea
(
curLayoutModel
);
}
// 获取当前视图
if
(
!
xData
)
{
xData
=
this
;
}
return
xData
;
}
...
...
app_Web/src/widgets/ibizbook/default-searchform/default-searchform-base.vue
浏览文件 @
77cc01a7
...
...
@@ -671,7 +671,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
*/
public
load
(
opt
:
any
=
{}):
void
{
if
(
!
this
.
loadAction
){
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
'IBIZBOOKUsr
9Grid
View'
+
(
this
.
$t
(
'app.searchForm.notConfig.loadAction'
)
as
string
)
});
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
'IBIZBOOKUsr
5Data
View'
+
(
this
.
$t
(
'app.searchForm.notConfig.loadAction'
)
as
string
)
});
return
;
}
const
arg
:
any
=
{
...
opt
};
...
...
@@ -707,7 +707,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
*/
public
loadDraft
(
opt
:
any
=
{},
mode
?:
string
):
void
{
if
(
!
this
.
loaddraftAction
){
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
'IBIZBOOKUsr
9Grid
View'
+
(
this
.
$t
(
'app.searchForm.notConfig.loaddraftAction'
)
as
string
)
});
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
'IBIZBOOKUsr
5Data
View'
+
(
this
.
$t
(
'app.searchForm.notConfig.loaddraftAction'
)
as
string
)
});
return
;
}
const
arg
:
any
=
{
...
opt
}
;
...
...
app_Web/src/widgets/ibizbook/has-panel-kan-ban-panel/has-panel-kan-ban-panel-base.vue
浏览文件 @
77cc01a7
...
...
@@ -247,6 +247,30 @@ export default class HasPanelKanBanBase extends Vue implements ControlInterface
*/
public
appUIService
:
IBIZBOOKUIService
=
new
IBIZBOOKUIService
();
/**
* 视图布局是否加载
*
* @public
* @memberof ItemlayoutpanelBase
*/
public
isLayoutLoadding
:
boolean
=
false
;
/**
* 视图布局数据
*
* @public
* @memberof ItemlayoutpanelBase
*/
public
layoutData
:
any
=
{};
/**
* 视图布局面板模型对象
*
* @public
* @memberof ItemlayoutpanelBase
*/
public
layoutModelDetails
:
any
=
{};
/**
* 视图布局顶级成员名称
*
...
...
@@ -255,6 +279,68 @@ export default class HasPanelKanBanBase extends Vue implements ControlInterface
*/
public
rootLayoutDetailNames
:
string
[]
=
[
'container1'
];
/**
* 初始化布局
*
* @public
* @memberof ItemlayoutpanelBase
*/
public
async
initLayout
()
{
if
(
this
.
rootLayoutDetailNames
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
this
.
rootLayoutDetailNames
.
length
;
i
++
)
{
const
name
=
this
.
rootLayoutDetailNames
[
i
];
const
rootItem
=
this
.
layoutItems
[
name
];
if
(
!
rootItem
)
{
return
;
}
await
this
.
initLayoutItem
(
rootItem
);
}
}
return
true
;
}
/**
* 初始化布局项
*
* @public
* @memberof ItemlayoutpanelBase
*/
public
async
initLayoutItem
(
layoutModelItem
:
any
,
index
:
number
=
0
)
{
const
{
name
}
=
layoutModelItem
;
const
layoutModelDetail
=
Util
.
getLayoutItemInstance
(
layoutModelItem
);
if
(
!
index
)
{
await
layoutModelDetail
.
load
(
this
.
context
,
this
.
viewparams
);
this
.
$set
(
this
.
layoutModelDetails
,
name
,
layoutModelDetail
);
this
.
$set
(
this
.
layoutData
,
name
,
layoutModelDetail
.
getData
());
}
else
{
layoutModelDetail
.
setIndex
(
index
);
await
layoutModelDetail
.
load
(
this
.
context
,
this
.
viewparams
);
this
.
$set
(
this
.
layoutModelDetails
,
`
${
name
}
_
${
index
}
`
,
layoutModelDetail
);
this
.
$set
(
this
.
layoutData
,
`
${
name
}
_
${
index
}
`
,
layoutModelDetail
.
getData
());
}
if
(
layoutModelDetail
&&
layoutModelDetail
.
details
)
{
if
(
layoutModelDetail
.
dataRegionType
===
'MULTIDATA'
)
{
const
multiData
=
layoutModelDetail
.
getData
();
if
(
multiData
&&
multiData
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
multiData
.
length
;
i
++
)
{
for
(
let
j
=
0
;
j
<
layoutModelDetail
.
details
.
length
;
j
++
)
{
const
key
=
layoutModelDetail
.
details
[
j
];
if
(
this
.
layoutItems
[
key
])
{
await
this
.
initLayoutItem
(
this
.
layoutItems
[
key
],
i
);
}
}
}
}
}
else
{
for
(
let
i
=
0
;
i
<
layoutModelDetail
.
details
.
length
;
i
++
)
{
const
key
=
layoutModelDetail
.
details
[
i
];
if
(
this
.
layoutItems
[
key
])
{
await
this
.
initLayoutItem
(
this
.
layoutItems
[
key
],
index
);
}
}
}
}
}
/**
* 视图布局面板项模型对象
...
...
@@ -263,6 +349,10 @@ export default class HasPanelKanBanBase extends Vue implements ControlInterface
* @memberof ItemlayoutpanelBase
*/
public
layoutItems
:
any
=
{
srfmajortext
:{
name
:
'srfmajortext'
,
type
:
'ITEMLAYOUT'
,
caption
:
''
,
isShowCaption
:
false
,
sysCss
:
'kanban-title'
,
itemType
:
'FIELD'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
''
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
0
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
parentName
:
'container1'
,
panel
:
this
,
fieldState
:
'0'
,
predefinedType
:
''
,
renderMode
:
''
,
dataItemName
:
'srfmajortext'
,
wrapMode
:
''
,
vAlign
:
''
,
hAlign
:
''
,
},
author
:{
name
:
'author'
,
type
:
'ITEMLAYOUT'
,
caption
:
''
,
isShowCaption
:
false
,
sysCss
:
'kanban-author'
,
itemType
:
'FIELD'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
''
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
0
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
parentName
:
'container1'
,
panel
:
this
,
fieldState
:
'0'
,
predefinedType
:
''
,
renderMode
:
''
,
dataItemName
:
'author'
,
wrapMode
:
''
,
vAlign
:
''
,
hAlign
:
''
,
},
srfdescription
:{
name
:
'srfdescription'
,
type
:
'ITEMLAYOUT'
,
caption
:
''
,
isShowCaption
:
false
,
sysCss
:
'kanban-description'
,
itemType
:
'FIELD'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
''
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
0
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
parentName
:
'container1'
,
panel
:
this
,
fieldState
:
'0'
,
predefinedType
:
''
,
renderMode
:
''
,
dataItemName
:
'srfdescription'
,
wrapMode
:
''
,
vAlign
:
''
,
hAlign
:
''
,
},
container1
:{
name
:
'container1'
,
type
:
'ITEMLAYOUT'
,
caption
:
''
,
titleBarCloseMode
:
0
,
isShowCaption
:
false
,
sysCss
:
'kanban-panel'
,
itemType
:
'CONTAINER'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
'TABLE_24COL'
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
400
,
widthMode
:
'PX'
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
0
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
panel
:
this
,
details
:[
'srfmajortext'
,
'author'
,
'srfdescription'
]
,
dataRegionType
:
'INHERIT'
}
};
/**
...
...
@@ -458,6 +548,11 @@ export default class HasPanelKanBanBase extends Vue implements ControlInterface
* @memberof HasPanelKanBanBase
*/
public
panelLogic
(
name
:
string
):
void
{
}
/**
...
...
@@ -468,6 +563,36 @@ export default class HasPanelKanBanBase extends Vue implements ControlInterface
*/
public
getButtonXData
(
name
:
string
):
any
{
let
xData
=
null
;
let
curLayoutModel
=
null
;
Object
.
values
(
this
.
layoutModelDetails
).
forEach
((
layoutModel
:
any
)
=>
{
if
(
layoutModel
.
name
==
name
)
{
curLayoutModel
=
layoutModel
;
}
})
// 获取数据容器
if
(
curLayoutModel
)
{
const
getDataArea
=
(
cLayoutModel
:
any
):
any
=>
{
let
dataArea
=
null
;
let
parentLayoutModel
=
null
;
Object
.
values
(
this
.
layoutModelDetails
).
forEach
((
pLayoutModel
:
any
)
=>
{
if
(
pLayoutModel
.
name
==
cLayoutModel
.
parentName
)
{
parentLayoutModel
=
pLayoutModel
;
if
(
parentLayoutModel
.
dataRegionType
==
'SINGLEDATA'
||
parentLayoutModel
.
dataRegionType
==
'MULTIDATA'
)
{
dataArea
=
parentLayoutModel
;
}
}
})
if
(
!
dataArea
&&
parentLayoutModel
)
{
dataArea
=
getDataArea
(
parentLayoutModel
);
}
return
dataArea
;
}
xData
=
getDataArea
(
curLayoutModel
);
}
// 获取当前视图
if
(
!
xData
)
{
xData
=
this
;
}
return
xData
;
}
...
...
app_Web/src/widgets/ibizbook/has-panel-list-panel/has-panel-list-panel-base.vue
浏览文件 @
77cc01a7
...
...
@@ -247,6 +247,30 @@ export default class HasPanelListBase extends Vue implements ControlInterface {
*/
public
appUIService
:
IBIZBOOKUIService
=
new
IBIZBOOKUIService
();
/**
* 视图布局是否加载
*
* @public
* @memberof List_itempanelBase
*/
public
isLayoutLoadding
:
boolean
=
false
;
/**
* 视图布局数据
*
* @public
* @memberof List_itempanelBase
*/
public
layoutData
:
any
=
{};
/**
* 视图布局面板模型对象
*
* @public
* @memberof List_itempanelBase
*/
public
layoutModelDetails
:
any
=
{};
/**
* 视图布局顶级成员名称
*
...
...
@@ -255,6 +279,68 @@ export default class HasPanelListBase extends Vue implements ControlInterface {
*/
public
rootLayoutDetailNames
:
string
[]
=
[
'container1'
];
/**
* 初始化布局
*
* @public
* @memberof List_itempanelBase
*/
public
async
initLayout
()
{
if
(
this
.
rootLayoutDetailNames
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
this
.
rootLayoutDetailNames
.
length
;
i
++
)
{
const
name
=
this
.
rootLayoutDetailNames
[
i
];
const
rootItem
=
this
.
layoutItems
[
name
];
if
(
!
rootItem
)
{
return
;
}
await
this
.
initLayoutItem
(
rootItem
);
}
}
return
true
;
}
/**
* 初始化布局项
*
* @public
* @memberof List_itempanelBase
*/
public
async
initLayoutItem
(
layoutModelItem
:
any
,
index
:
number
=
0
)
{
const
{
name
}
=
layoutModelItem
;
const
layoutModelDetail
=
Util
.
getLayoutItemInstance
(
layoutModelItem
);
if
(
!
index
)
{
await
layoutModelDetail
.
load
(
this
.
context
,
this
.
viewparams
);
this
.
$set
(
this
.
layoutModelDetails
,
name
,
layoutModelDetail
);
this
.
$set
(
this
.
layoutData
,
name
,
layoutModelDetail
.
getData
());
}
else
{
layoutModelDetail
.
setIndex
(
index
);
await
layoutModelDetail
.
load
(
this
.
context
,
this
.
viewparams
);
this
.
$set
(
this
.
layoutModelDetails
,
`
${
name
}
_
${
index
}
`
,
layoutModelDetail
);
this
.
$set
(
this
.
layoutData
,
`
${
name
}
_
${
index
}
`
,
layoutModelDetail
.
getData
());
}
if
(
layoutModelDetail
&&
layoutModelDetail
.
details
)
{
if
(
layoutModelDetail
.
dataRegionType
===
'MULTIDATA'
)
{
const
multiData
=
layoutModelDetail
.
getData
();
if
(
multiData
&&
multiData
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
multiData
.
length
;
i
++
)
{
for
(
let
j
=
0
;
j
<
layoutModelDetail
.
details
.
length
;
j
++
)
{
const
key
=
layoutModelDetail
.
details
[
j
];
if
(
this
.
layoutItems
[
key
])
{
await
this
.
initLayoutItem
(
this
.
layoutItems
[
key
],
i
);
}
}
}
}
}
else
{
for
(
let
i
=
0
;
i
<
layoutModelDetail
.
details
.
length
;
i
++
)
{
const
key
=
layoutModelDetail
.
details
[
i
];
if
(
this
.
layoutItems
[
key
])
{
await
this
.
initLayoutItem
(
this
.
layoutItems
[
key
],
index
);
}
}
}
}
}
/**
* 视图布局面板项模型对象
...
...
@@ -263,6 +349,10 @@ export default class HasPanelListBase extends Vue implements ControlInterface {
* @memberof List_itempanelBase
*/
public
layoutItems
:
any
=
{
bookname
:{
name
:
'bookname'
,
type
:
'ITEMLAYOUT'
,
caption
:
'图书名称'
,
isShowCaption
:
false
,
sysCss
:
''
,
itemType
:
'FIELD'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
''
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
0
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
parentName
:
'container1'
,
panel
:
this
,
fieldState
:
'0'
,
predefinedType
:
''
,
renderMode
:
''
,
dataItemName
:
'IBIZBOOKNAME'
,
wrapMode
:
''
,
vAlign
:
''
,
hAlign
:
''
,
},
author
:{
name
:
'author'
,
type
:
'ITEMLAYOUT'
,
caption
:
'图书作者'
,
isShowCaption
:
false
,
sysCss
:
''
,
itemType
:
'FIELD'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
''
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
0
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
parentName
:
'container1'
,
panel
:
this
,
fieldState
:
'0'
,
predefinedType
:
''
,
renderMode
:
''
,
dataItemName
:
'AUTHOR'
,
wrapMode
:
''
,
vAlign
:
''
,
hAlign
:
''
,
},
press
:{
name
:
'press'
,
type
:
'ITEMLAYOUT'
,
caption
:
'图书出版社'
,
isShowCaption
:
false
,
sysCss
:
''
,
itemType
:
'FIELD'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
''
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
0
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
parentName
:
'container1'
,
panel
:
this
,
fieldState
:
'0'
,
predefinedType
:
''
,
renderMode
:
''
,
dataItemName
:
'PRESS'
,
wrapMode
:
''
,
vAlign
:
''
,
hAlign
:
''
,
},
container1
:{
name
:
'container1'
,
type
:
'ITEMLAYOUT'
,
caption
:
''
,
titleBarCloseMode
:
0
,
isShowCaption
:
false
,
sysCss
:
''
,
itemType
:
'CONTAINER'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
'TABLE_24COL'
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
0
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
panel
:
this
,
details
:[
'bookname'
,
'author'
,
'press'
]
,
dataRegionType
:
'INHERIT'
}
};
/**
...
...
@@ -458,6 +548,11 @@ export default class HasPanelListBase extends Vue implements ControlInterface {
* @memberof HasPanelListBase
*/
public
panelLogic
(
name
:
string
):
void
{
}
/**
...
...
@@ -468,6 +563,36 @@ export default class HasPanelListBase extends Vue implements ControlInterface {
*/
public
getButtonXData
(
name
:
string
):
any
{
let
xData
=
null
;
let
curLayoutModel
=
null
;
Object
.
values
(
this
.
layoutModelDetails
).
forEach
((
layoutModel
:
any
)
=>
{
if
(
layoutModel
.
name
==
name
)
{
curLayoutModel
=
layoutModel
;
}
})
// 获取数据容器
if
(
curLayoutModel
)
{
const
getDataArea
=
(
cLayoutModel
:
any
):
any
=>
{
let
dataArea
=
null
;
let
parentLayoutModel
=
null
;
Object
.
values
(
this
.
layoutModelDetails
).
forEach
((
pLayoutModel
:
any
)
=>
{
if
(
pLayoutModel
.
name
==
cLayoutModel
.
parentName
)
{
parentLayoutModel
=
pLayoutModel
;
if
(
parentLayoutModel
.
dataRegionType
==
'SINGLEDATA'
||
parentLayoutModel
.
dataRegionType
==
'MULTIDATA'
)
{
dataArea
=
parentLayoutModel
;
}
}
})
if
(
!
dataArea
&&
parentLayoutModel
)
{
dataArea
=
getDataArea
(
parentLayoutModel
);
}
return
dataArea
;
}
xData
=
getDataArea
(
curLayoutModel
);
}
// 获取当前视图
if
(
!
xData
)
{
xData
=
this
;
}
return
xData
;
}
...
...
app_Web/src/widgets/ibizbook/listpanel-panel/listpanel-panel-base.vue
浏览文件 @
77cc01a7
...
...
@@ -256,6 +256,30 @@ export default class ListpanelBase extends Vue implements ControlInterface {
*/
public
appUIService
:
IBIZBOOKUIService
=
new
IBIZBOOKUIService
();
/**
* 视图布局是否加载
*
* @public
* @memberof List_itempanelBase
*/
public
isLayoutLoadding
:
boolean
=
false
;
/**
* 视图布局数据
*
* @public
* @memberof List_itempanelBase
*/
public
layoutData
:
any
=
{};
/**
* 视图布局面板模型对象
*
* @public
* @memberof List_itempanelBase
*/
public
layoutModelDetails
:
any
=
{};
/**
* 视图布局顶级成员名称
*
...
...
@@ -264,6 +288,68 @@ export default class ListpanelBase extends Vue implements ControlInterface {
*/
public
rootLayoutDetailNames
:
string
[]
=
[
'container1'
];
/**
* 初始化布局
*
* @public
* @memberof List_itempanelBase
*/
public
async
initLayout
()
{
if
(
this
.
rootLayoutDetailNames
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
this
.
rootLayoutDetailNames
.
length
;
i
++
)
{
const
name
=
this
.
rootLayoutDetailNames
[
i
];
const
rootItem
=
this
.
layoutItems
[
name
];
if
(
!
rootItem
)
{
return
;
}
await
this
.
initLayoutItem
(
rootItem
);
}
}
return
true
;
}
/**
* 初始化布局项
*
* @public
* @memberof List_itempanelBase
*/
public
async
initLayoutItem
(
layoutModelItem
:
any
,
index
:
number
=
0
)
{
const
{
name
}
=
layoutModelItem
;
const
layoutModelDetail
=
Util
.
getLayoutItemInstance
(
layoutModelItem
);
if
(
!
index
)
{
await
layoutModelDetail
.
load
(
this
.
context
,
this
.
viewparams
);
this
.
$set
(
this
.
layoutModelDetails
,
name
,
layoutModelDetail
);
this
.
$set
(
this
.
layoutData
,
name
,
layoutModelDetail
.
getData
());
}
else
{
layoutModelDetail
.
setIndex
(
index
);
await
layoutModelDetail
.
load
(
this
.
context
,
this
.
viewparams
);
this
.
$set
(
this
.
layoutModelDetails
,
`
${
name
}
_
${
index
}
`
,
layoutModelDetail
);
this
.
$set
(
this
.
layoutData
,
`
${
name
}
_
${
index
}
`
,
layoutModelDetail
.
getData
());
}
if
(
layoutModelDetail
&&
layoutModelDetail
.
details
)
{
if
(
layoutModelDetail
.
dataRegionType
===
'MULTIDATA'
)
{
const
multiData
=
layoutModelDetail
.
getData
();
if
(
multiData
&&
multiData
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
multiData
.
length
;
i
++
)
{
for
(
let
j
=
0
;
j
<
layoutModelDetail
.
details
.
length
;
j
++
)
{
const
key
=
layoutModelDetail
.
details
[
j
];
if
(
this
.
layoutItems
[
key
])
{
await
this
.
initLayoutItem
(
this
.
layoutItems
[
key
],
i
);
}
}
}
}
}
else
{
for
(
let
i
=
0
;
i
<
layoutModelDetail
.
details
.
length
;
i
++
)
{
const
key
=
layoutModelDetail
.
details
[
i
];
if
(
this
.
layoutItems
[
key
])
{
await
this
.
initLayoutItem
(
this
.
layoutItems
[
key
],
index
);
}
}
}
}
}
/**
* 视图布局面板项模型对象
...
...
@@ -272,6 +358,13 @@ export default class ListpanelBase extends Vue implements ControlInterface {
* @memberof List_itempanelBase
*/
public
layoutItems
:
any
=
{
static_label1
:{
name
:
'static_label1'
,
type
:
'ITEMLAYOUT'
,
caption
:
'标签'
,
isShowCaption
:
true
,
sysCss
:
''
,
itemType
:
'RAWITEM'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
''
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
-
1
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
parentName
:
'container1'
,
panel
:
this
,
viewType
:
'DELISTVIEW'
,
predefinedType
:
'STATIC_LABEL'
,
contentType
:
'RAW'
,
contentStyle
:
''
,
rawContent
:
'标签'
,
htmlContent
:
''
,
renderMode
:
'PARAGRAPH'
,
wrapMode
:
''
,
vAlign
:
''
,
hAlign
:
''
,
},
static_text1
:{
name
:
'static_text1'
,
type
:
'ITEMLAYOUT'
,
caption
:
'文本'
,
isShowCaption
:
true
,
sysCss
:
''
,
itemType
:
'RAWITEM'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
''
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
-
1
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
parentName
:
'container1'
,
panel
:
this
,
viewType
:
'DELISTVIEW'
,
predefinedType
:
'STATIC_TEXT'
,
contentType
:
'RAW'
,
contentStyle
:
''
,
rawContent
:
'文本内容'
,
htmlContent
:
''
,
renderMode
:
'TEXT'
,
wrapMode
:
''
,
vAlign
:
''
,
hAlign
:
''
,
},
field_text_dynamic
:{
name
:
'field_text_dynamic'
,
type
:
'ITEMLAYOUT'
,
caption
:
'文本(动态)'
,
isShowCaption
:
false
,
sysCss
:
''
,
itemType
:
'FIELD'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
''
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
-
1
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
parentName
:
'container1'
,
panel
:
this
,
fieldState
:
'0'
,
predefinedType
:
'FIELD_TEXT_DYNAMIC'
,
renderMode
:
'TEXT_DYNAMIC'
,
dataItemName
:
'author'
,
wrapMode
:
''
,
vAlign
:
''
,
hAlign
:
''
,
},
field_textbox
:{
name
:
'field_textbox'
,
type
:
'ITEMLAYOUT'
,
caption
:
'文本框'
,
isShowCaption
:
false
,
sysCss
:
''
,
itemType
:
'FIELD'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
''
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
-
1
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
parentName
:
'container1'
,
panel
:
this
,
fieldState
:
'0'
,
predefinedType
:
'FIELD_TEXTBOX'
,
dataItemName
:
'booknumber'
,
},
button_link1
:{
name
:
'button_link1'
,
type
:
'ITEMLAYOUT'
,
caption
:
'页面链接'
,
isShowCaption
:
true
,
sysCss
:
''
,
itemType
:
'BUTTON'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
''
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
-
1
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
parentName
:
'container1'
,
panel
:
this
,
buttonStyle
:
'DEFAULT'
,
borderStyle
:
''
,
iconAlign
:
''
,
renderMode
:
'LINK'
,
},
button_calluilogic1
:{
name
:
'button_calluilogic1'
,
type
:
'ITEMLAYOUT'
,
caption
:
'按钮'
,
isShowCaption
:
true
,
sysCss
:
''
,
itemType
:
'BUTTON'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
''
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
-
1
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
parentName
:
'container1'
,
panel
:
this
,
buttonStyle
:
'DEFAULT'
,
borderStyle
:
''
,
iconAlign
:
''
,
renderMode
:
''
,
},
container1
:{
name
:
'container1'
,
type
:
'ITEMLAYOUT'
,
caption
:
'容器'
,
titleBarCloseMode
:
0
,
isShowCaption
:
false
,
sysCss
:
''
,
itemType
:
'CONTAINER'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
'FLEX'
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
0
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
panel
:
this
,
details
:[
'static_label1'
,
'static_text1'
,
'field_text_dynamic'
,
'field_textbox'
,
'button_link1'
,
'button_calluilogic1'
]
,
dataRegionType
:
'INHERIT'
}
};
/**
...
...
@@ -463,6 +556,14 @@ export default class ListpanelBase extends Vue implements ControlInterface {
* @memberof ListpanelBase
*/
public
panelLogic
(
name
:
string
):
void
{
}
/**
...
...
@@ -473,6 +574,36 @@ export default class ListpanelBase extends Vue implements ControlInterface {
*/
public
getButtonXData
(
name
:
string
):
any
{
let
xData
=
null
;
let
curLayoutModel
=
null
;
Object
.
values
(
this
.
layoutModelDetails
).
forEach
((
layoutModel
:
any
)
=>
{
if
(
layoutModel
.
name
==
name
)
{
curLayoutModel
=
layoutModel
;
}
})
// 获取数据容器
if
(
curLayoutModel
)
{
const
getDataArea
=
(
cLayoutModel
:
any
):
any
=>
{
let
dataArea
=
null
;
let
parentLayoutModel
=
null
;
Object
.
values
(
this
.
layoutModelDetails
).
forEach
((
pLayoutModel
:
any
)
=>
{
if
(
pLayoutModel
.
name
==
cLayoutModel
.
parentName
)
{
parentLayoutModel
=
pLayoutModel
;
if
(
parentLayoutModel
.
dataRegionType
==
'SINGLEDATA'
||
parentLayoutModel
.
dataRegionType
==
'MULTIDATA'
)
{
dataArea
=
parentLayoutModel
;
}
}
})
if
(
!
dataArea
&&
parentLayoutModel
)
{
dataArea
=
getDataArea
(
parentLayoutModel
);
}
return
dataArea
;
}
xData
=
getDataArea
(
curLayoutModel
);
}
// 获取当前视图
if
(
!
xData
)
{
xData
=
this
;
}
return
xData
;
}
...
...
app_Web/src/widgets/ibizbook/timelineitemlayoutpanel-panel/timelineitemlayoutpanel-panel-base.vue
浏览文件 @
77cc01a7
...
...
@@ -238,6 +238,30 @@ export default class TIMELINEITEMLAYOUTPANELBase extends Vue implements ControlI
*/
public
appUIService
:
IBIZBOOKUIService
=
new
IBIZBOOKUIService
();
/**
* 视图布局是否加载
*
* @public
* @memberof ItemlayoutpanelBase
*/
public
isLayoutLoadding
:
boolean
=
false
;
/**
* 视图布局数据
*
* @public
* @memberof ItemlayoutpanelBase
*/
public
layoutData
:
any
=
{};
/**
* 视图布局面板模型对象
*
* @public
* @memberof ItemlayoutpanelBase
*/
public
layoutModelDetails
:
any
=
{};
/**
* 视图布局顶级成员名称
*
...
...
@@ -246,6 +270,68 @@ export default class TIMELINEITEMLAYOUTPANELBase extends Vue implements ControlI
*/
public
rootLayoutDetailNames
:
string
[]
=
[
'container1'
];
/**
* 初始化布局
*
* @public
* @memberof ItemlayoutpanelBase
*/
public
async
initLayout
()
{
if
(
this
.
rootLayoutDetailNames
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
this
.
rootLayoutDetailNames
.
length
;
i
++
)
{
const
name
=
this
.
rootLayoutDetailNames
[
i
];
const
rootItem
=
this
.
layoutItems
[
name
];
if
(
!
rootItem
)
{
return
;
}
await
this
.
initLayoutItem
(
rootItem
);
}
}
return
true
;
}
/**
* 初始化布局项
*
* @public
* @memberof ItemlayoutpanelBase
*/
public
async
initLayoutItem
(
layoutModelItem
:
any
,
index
:
number
=
0
)
{
const
{
name
}
=
layoutModelItem
;
const
layoutModelDetail
=
Util
.
getLayoutItemInstance
(
layoutModelItem
);
if
(
!
index
)
{
await
layoutModelDetail
.
load
(
this
.
context
,
this
.
viewparams
);
this
.
$set
(
this
.
layoutModelDetails
,
name
,
layoutModelDetail
);
this
.
$set
(
this
.
layoutData
,
name
,
layoutModelDetail
.
getData
());
}
else
{
layoutModelDetail
.
setIndex
(
index
);
await
layoutModelDetail
.
load
(
this
.
context
,
this
.
viewparams
);
this
.
$set
(
this
.
layoutModelDetails
,
`
${
name
}
_
${
index
}
`
,
layoutModelDetail
);
this
.
$set
(
this
.
layoutData
,
`
${
name
}
_
${
index
}
`
,
layoutModelDetail
.
getData
());
}
if
(
layoutModelDetail
&&
layoutModelDetail
.
details
)
{
if
(
layoutModelDetail
.
dataRegionType
===
'MULTIDATA'
)
{
const
multiData
=
layoutModelDetail
.
getData
();
if
(
multiData
&&
multiData
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
multiData
.
length
;
i
++
)
{
for
(
let
j
=
0
;
j
<
layoutModelDetail
.
details
.
length
;
j
++
)
{
const
key
=
layoutModelDetail
.
details
[
j
];
if
(
this
.
layoutItems
[
key
])
{
await
this
.
initLayoutItem
(
this
.
layoutItems
[
key
],
i
);
}
}
}
}
}
else
{
for
(
let
i
=
0
;
i
<
layoutModelDetail
.
details
.
length
;
i
++
)
{
const
key
=
layoutModelDetail
.
details
[
i
];
if
(
this
.
layoutItems
[
key
])
{
await
this
.
initLayoutItem
(
this
.
layoutItems
[
key
],
index
);
}
}
}
}
}
/**
* 视图布局面板项模型对象
...
...
@@ -254,6 +340,7 @@ export default class TIMELINEITEMLAYOUTPANELBase extends Vue implements ControlI
* @memberof ItemlayoutpanelBase
*/
public
layoutItems
:
any
=
{
container1
:{
name
:
'container1'
,
type
:
'ITEMLAYOUT'
,
caption
:
''
,
titleBarCloseMode
:
0
,
isShowCaption
:
false
,
sysCss
:
''
,
itemType
:
'CONTAINER'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
'TABLE_24COL'
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
0
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
panel
:
this
,
details
:[]
,
dataRegionType
:
'INHERIT'
}
};
/**
...
...
@@ -437,6 +524,8 @@ export default class TIMELINEITEMLAYOUTPANELBase extends Vue implements ControlI
* @memberof TIMELINEITEMLAYOUTPANELBase
*/
public
panelLogic
(
name
:
string
):
void
{
}
/**
...
...
@@ -447,6 +536,36 @@ export default class TIMELINEITEMLAYOUTPANELBase extends Vue implements ControlI
*/
public
getButtonXData
(
name
:
string
):
any
{
let
xData
=
null
;
let
curLayoutModel
=
null
;
Object
.
values
(
this
.
layoutModelDetails
).
forEach
((
layoutModel
:
any
)
=>
{
if
(
layoutModel
.
name
==
name
)
{
curLayoutModel
=
layoutModel
;
}
})
// 获取数据容器
if
(
curLayoutModel
)
{
const
getDataArea
=
(
cLayoutModel
:
any
):
any
=>
{
let
dataArea
=
null
;
let
parentLayoutModel
=
null
;
Object
.
values
(
this
.
layoutModelDetails
).
forEach
((
pLayoutModel
:
any
)
=>
{
if
(
pLayoutModel
.
name
==
cLayoutModel
.
parentName
)
{
parentLayoutModel
=
pLayoutModel
;
if
(
parentLayoutModel
.
dataRegionType
==
'SINGLEDATA'
||
parentLayoutModel
.
dataRegionType
==
'MULTIDATA'
)
{
dataArea
=
parentLayoutModel
;
}
}
})
if
(
!
dataArea
&&
parentLayoutModel
)
{
dataArea
=
getDataArea
(
parentLayoutModel
);
}
return
dataArea
;
}
xData
=
getDataArea
(
curLayoutModel
);
}
// 获取当前视图
if
(
!
xData
)
{
xData
=
this
;
}
return
xData
;
}
...
...
app_Web/src/widgets/ibizbook/usr-panel/usr-panel-base.vue
浏览文件 @
77cc01a7
...
...
@@ -238,6 +238,30 @@ export default class UsrBase extends Vue implements ControlInterface {
*/
public
appUIService
:
IBIZBOOKUIService
=
new
IBIZBOOKUIService
();
/**
* 视图布局是否加载
*
* @public
* @memberof List_itempanelBase
*/
public
isLayoutLoadding
:
boolean
=
false
;
/**
* 视图布局数据
*
* @public
* @memberof List_itempanelBase
*/
public
layoutData
:
any
=
{};
/**
* 视图布局面板模型对象
*
* @public
* @memberof List_itempanelBase
*/
public
layoutModelDetails
:
any
=
{};
/**
* 视图布局顶级成员名称
*
...
...
@@ -246,6 +270,68 @@ export default class UsrBase extends Vue implements ControlInterface {
*/
public
rootLayoutDetailNames
:
string
[]
=
[
'container1'
];
/**
* 初始化布局
*
* @public
* @memberof List_itempanelBase
*/
public
async
initLayout
()
{
if
(
this
.
rootLayoutDetailNames
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
this
.
rootLayoutDetailNames
.
length
;
i
++
)
{
const
name
=
this
.
rootLayoutDetailNames
[
i
];
const
rootItem
=
this
.
layoutItems
[
name
];
if
(
!
rootItem
)
{
return
;
}
await
this
.
initLayoutItem
(
rootItem
);
}
}
return
true
;
}
/**
* 初始化布局项
*
* @public
* @memberof List_itempanelBase
*/
public
async
initLayoutItem
(
layoutModelItem
:
any
,
index
:
number
=
0
)
{
const
{
name
}
=
layoutModelItem
;
const
layoutModelDetail
=
Util
.
getLayoutItemInstance
(
layoutModelItem
);
if
(
!
index
)
{
await
layoutModelDetail
.
load
(
this
.
context
,
this
.
viewparams
);
this
.
$set
(
this
.
layoutModelDetails
,
name
,
layoutModelDetail
);
this
.
$set
(
this
.
layoutData
,
name
,
layoutModelDetail
.
getData
());
}
else
{
layoutModelDetail
.
setIndex
(
index
);
await
layoutModelDetail
.
load
(
this
.
context
,
this
.
viewparams
);
this
.
$set
(
this
.
layoutModelDetails
,
`
${
name
}
_
${
index
}
`
,
layoutModelDetail
);
this
.
$set
(
this
.
layoutData
,
`
${
name
}
_
${
index
}
`
,
layoutModelDetail
.
getData
());
}
if
(
layoutModelDetail
&&
layoutModelDetail
.
details
)
{
if
(
layoutModelDetail
.
dataRegionType
===
'MULTIDATA'
)
{
const
multiData
=
layoutModelDetail
.
getData
();
if
(
multiData
&&
multiData
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
multiData
.
length
;
i
++
)
{
for
(
let
j
=
0
;
j
<
layoutModelDetail
.
details
.
length
;
j
++
)
{
const
key
=
layoutModelDetail
.
details
[
j
];
if
(
this
.
layoutItems
[
key
])
{
await
this
.
initLayoutItem
(
this
.
layoutItems
[
key
],
i
);
}
}
}
}
}
else
{
for
(
let
i
=
0
;
i
<
layoutModelDetail
.
details
.
length
;
i
++
)
{
const
key
=
layoutModelDetail
.
details
[
i
];
if
(
this
.
layoutItems
[
key
])
{
await
this
.
initLayoutItem
(
this
.
layoutItems
[
key
],
index
);
}
}
}
}
}
/**
* 视图布局面板项模型对象
...
...
@@ -254,6 +340,7 @@ export default class UsrBase extends Vue implements ControlInterface {
* @memberof List_itempanelBase
*/
public
layoutItems
:
any
=
{
container1
:{
name
:
'container1'
,
type
:
'ITEMLAYOUT'
,
caption
:
''
,
titleBarCloseMode
:
0
,
isShowCaption
:
false
,
sysCss
:
''
,
itemType
:
'CONTAINER'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
'TABLE_24COL'
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
0
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
panel
:
this
,
details
:[]
,
dataRegionType
:
'INHERIT'
}
};
/**
...
...
@@ -437,6 +524,8 @@ export default class UsrBase extends Vue implements ControlInterface {
* @memberof UsrBase
*/
public
panelLogic
(
name
:
string
):
void
{
}
/**
...
...
@@ -447,6 +536,36 @@ export default class UsrBase extends Vue implements ControlInterface {
*/
public
getButtonXData
(
name
:
string
):
any
{
let
xData
=
null
;
let
curLayoutModel
=
null
;
Object
.
values
(
this
.
layoutModelDetails
).
forEach
((
layoutModel
:
any
)
=>
{
if
(
layoutModel
.
name
==
name
)
{
curLayoutModel
=
layoutModel
;
}
})
// 获取数据容器
if
(
curLayoutModel
)
{
const
getDataArea
=
(
cLayoutModel
:
any
):
any
=>
{
let
dataArea
=
null
;
let
parentLayoutModel
=
null
;
Object
.
values
(
this
.
layoutModelDetails
).
forEach
((
pLayoutModel
:
any
)
=>
{
if
(
pLayoutModel
.
name
==
cLayoutModel
.
parentName
)
{
parentLayoutModel
=
pLayoutModel
;
if
(
parentLayoutModel
.
dataRegionType
==
'SINGLEDATA'
||
parentLayoutModel
.
dataRegionType
==
'MULTIDATA'
)
{
dataArea
=
parentLayoutModel
;
}
}
})
if
(
!
dataArea
&&
parentLayoutModel
)
{
dataArea
=
getDataArea
(
parentLayoutModel
);
}
return
dataArea
;
}
xData
=
getDataArea
(
curLayoutModel
);
}
// 获取当前视图
if
(
!
xData
)
{
xData
=
this
;
}
return
xData
;
}
...
...
app_Web/src/widgets/ibizbook/usr4-panel/usr4-panel-base.vue
浏览文件 @
77cc01a7
...
...
@@ -247,6 +247,30 @@ export default class Usr4Base extends Vue implements ControlInterface {
*/
public
appUIService
:
IBIZBOOKUIService
=
new
IBIZBOOKUIService
();
/**
* 视图布局是否加载
*
* @public
* @memberof ItemlayoutpanelBase
*/
public
isLayoutLoadding
:
boolean
=
false
;
/**
* 视图布局数据
*
* @public
* @memberof ItemlayoutpanelBase
*/
public
layoutData
:
any
=
{};
/**
* 视图布局面板模型对象
*
* @public
* @memberof ItemlayoutpanelBase
*/
public
layoutModelDetails
:
any
=
{};
/**
* 视图布局顶级成员名称
*
...
...
@@ -255,6 +279,68 @@ export default class Usr4Base extends Vue implements ControlInterface {
*/
public
rootLayoutDetailNames
:
string
[]
=
[
'container1'
];
/**
* 初始化布局
*
* @public
* @memberof ItemlayoutpanelBase
*/
public
async
initLayout
()
{
if
(
this
.
rootLayoutDetailNames
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
this
.
rootLayoutDetailNames
.
length
;
i
++
)
{
const
name
=
this
.
rootLayoutDetailNames
[
i
];
const
rootItem
=
this
.
layoutItems
[
name
];
if
(
!
rootItem
)
{
return
;
}
await
this
.
initLayoutItem
(
rootItem
);
}
}
return
true
;
}
/**
* 初始化布局项
*
* @public
* @memberof ItemlayoutpanelBase
*/
public
async
initLayoutItem
(
layoutModelItem
:
any
,
index
:
number
=
0
)
{
const
{
name
}
=
layoutModelItem
;
const
layoutModelDetail
=
Util
.
getLayoutItemInstance
(
layoutModelItem
);
if
(
!
index
)
{
await
layoutModelDetail
.
load
(
this
.
context
,
this
.
viewparams
);
this
.
$set
(
this
.
layoutModelDetails
,
name
,
layoutModelDetail
);
this
.
$set
(
this
.
layoutData
,
name
,
layoutModelDetail
.
getData
());
}
else
{
layoutModelDetail
.
setIndex
(
index
);
await
layoutModelDetail
.
load
(
this
.
context
,
this
.
viewparams
);
this
.
$set
(
this
.
layoutModelDetails
,
`
${
name
}
_
${
index
}
`
,
layoutModelDetail
);
this
.
$set
(
this
.
layoutData
,
`
${
name
}
_
${
index
}
`
,
layoutModelDetail
.
getData
());
}
if
(
layoutModelDetail
&&
layoutModelDetail
.
details
)
{
if
(
layoutModelDetail
.
dataRegionType
===
'MULTIDATA'
)
{
const
multiData
=
layoutModelDetail
.
getData
();
if
(
multiData
&&
multiData
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
multiData
.
length
;
i
++
)
{
for
(
let
j
=
0
;
j
<
layoutModelDetail
.
details
.
length
;
j
++
)
{
const
key
=
layoutModelDetail
.
details
[
j
];
if
(
this
.
layoutItems
[
key
])
{
await
this
.
initLayoutItem
(
this
.
layoutItems
[
key
],
i
);
}
}
}
}
}
else
{
for
(
let
i
=
0
;
i
<
layoutModelDetail
.
details
.
length
;
i
++
)
{
const
key
=
layoutModelDetail
.
details
[
i
];
if
(
this
.
layoutItems
[
key
])
{
await
this
.
initLayoutItem
(
this
.
layoutItems
[
key
],
index
);
}
}
}
}
}
/**
* 视图布局面板项模型对象
...
...
@@ -263,6 +349,10 @@ export default class Usr4Base extends Vue implements ControlInterface {
* @memberof ItemlayoutpanelBase
*/
public
layoutItems
:
any
=
{
author
:{
name
:
'author'
,
type
:
'ITEMLAYOUT'
,
caption
:
'作者'
,
isShowCaption
:
false
,
sysCss
:
''
,
itemType
:
'FIELD'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
''
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
0
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
parentName
:
'container1'
,
panel
:
this
,
fieldState
:
'0'
,
predefinedType
:
''
,
renderMode
:
''
,
dataItemName
:
'author'
,
wrapMode
:
''
,
vAlign
:
''
,
hAlign
:
''
,
},
press
:{
name
:
'press'
,
type
:
'ITEMLAYOUT'
,
caption
:
'出版社'
,
isShowCaption
:
false
,
sysCss
:
''
,
itemType
:
'FIELD'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
''
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
0
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
parentName
:
'container1'
,
panel
:
this
,
fieldState
:
'0'
,
predefinedType
:
''
,
renderMode
:
''
,
dataItemName
:
'press'
,
wrapMode
:
''
,
vAlign
:
''
,
hAlign
:
''
,
},
bookname
:{
name
:
'bookname'
,
type
:
'ITEMLAYOUT'
,
caption
:
'图书名'
,
isShowCaption
:
false
,
sysCss
:
''
,
itemType
:
'FIELD'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
''
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
0
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
parentName
:
'container1'
,
panel
:
this
,
fieldState
:
'0'
,
predefinedType
:
''
,
renderMode
:
''
,
dataItemName
:
'IBIZBOOKNAME'
,
wrapMode
:
''
,
vAlign
:
''
,
hAlign
:
''
,
},
container1
:{
name
:
'container1'
,
type
:
'ITEMLAYOUT'
,
caption
:
''
,
titleBarCloseMode
:
0
,
isShowCaption
:
false
,
sysCss
:
''
,
itemType
:
'CONTAINER'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
'TABLE_24COL'
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
0
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
panel
:
this
,
details
:[
'author'
,
'press'
,
'bookname'
]
,
dataRegionType
:
'INHERIT'
}
};
/**
...
...
@@ -458,6 +548,11 @@ export default class Usr4Base extends Vue implements ControlInterface {
* @memberof Usr4Base
*/
public
panelLogic
(
name
:
string
):
void
{
}
/**
...
...
@@ -468,6 +563,36 @@ export default class Usr4Base extends Vue implements ControlInterface {
*/
public
getButtonXData
(
name
:
string
):
any
{
let
xData
=
null
;
let
curLayoutModel
=
null
;
Object
.
values
(
this
.
layoutModelDetails
).
forEach
((
layoutModel
:
any
)
=>
{
if
(
layoutModel
.
name
==
name
)
{
curLayoutModel
=
layoutModel
;
}
})
// 获取数据容器
if
(
curLayoutModel
)
{
const
getDataArea
=
(
cLayoutModel
:
any
):
any
=>
{
let
dataArea
=
null
;
let
parentLayoutModel
=
null
;
Object
.
values
(
this
.
layoutModelDetails
).
forEach
((
pLayoutModel
:
any
)
=>
{
if
(
pLayoutModel
.
name
==
cLayoutModel
.
parentName
)
{
parentLayoutModel
=
pLayoutModel
;
if
(
parentLayoutModel
.
dataRegionType
==
'SINGLEDATA'
||
parentLayoutModel
.
dataRegionType
==
'MULTIDATA'
)
{
dataArea
=
parentLayoutModel
;
}
}
})
if
(
!
dataArea
&&
parentLayoutModel
)
{
dataArea
=
getDataArea
(
parentLayoutModel
);
}
return
dataArea
;
}
xData
=
getDataArea
(
curLayoutModel
);
}
// 获取当前视图
if
(
!
xData
)
{
xData
=
this
;
}
return
xData
;
}
...
...
app_Web/src/widgets/ibizbook/usr5-panel/usr5-panel-base.vue
浏览文件 @
77cc01a7
...
...
@@ -238,6 +238,30 @@ export default class Usr5Base extends Vue implements ControlInterface {
*/
public
appUIService
:
IBIZBOOKUIService
=
new
IBIZBOOKUIService
();
/**
* 视图布局是否加载
*
* @public
* @memberof ItemlayoutpanelBase
*/
public
isLayoutLoadding
:
boolean
=
false
;
/**
* 视图布局数据
*
* @public
* @memberof ItemlayoutpanelBase
*/
public
layoutData
:
any
=
{};
/**
* 视图布局面板模型对象
*
* @public
* @memberof ItemlayoutpanelBase
*/
public
layoutModelDetails
:
any
=
{};
/**
* 视图布局顶级成员名称
*
...
...
@@ -246,6 +270,68 @@ export default class Usr5Base extends Vue implements ControlInterface {
*/
public
rootLayoutDetailNames
:
string
[]
=
[
'container1'
];
/**
* 初始化布局
*
* @public
* @memberof ItemlayoutpanelBase
*/
public
async
initLayout
()
{
if
(
this
.
rootLayoutDetailNames
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
this
.
rootLayoutDetailNames
.
length
;
i
++
)
{
const
name
=
this
.
rootLayoutDetailNames
[
i
];
const
rootItem
=
this
.
layoutItems
[
name
];
if
(
!
rootItem
)
{
return
;
}
await
this
.
initLayoutItem
(
rootItem
);
}
}
return
true
;
}
/**
* 初始化布局项
*
* @public
* @memberof ItemlayoutpanelBase
*/
public
async
initLayoutItem
(
layoutModelItem
:
any
,
index
:
number
=
0
)
{
const
{
name
}
=
layoutModelItem
;
const
layoutModelDetail
=
Util
.
getLayoutItemInstance
(
layoutModelItem
);
if
(
!
index
)
{
await
layoutModelDetail
.
load
(
this
.
context
,
this
.
viewparams
);
this
.
$set
(
this
.
layoutModelDetails
,
name
,
layoutModelDetail
);
this
.
$set
(
this
.
layoutData
,
name
,
layoutModelDetail
.
getData
());
}
else
{
layoutModelDetail
.
setIndex
(
index
);
await
layoutModelDetail
.
load
(
this
.
context
,
this
.
viewparams
);
this
.
$set
(
this
.
layoutModelDetails
,
`
${
name
}
_
${
index
}
`
,
layoutModelDetail
);
this
.
$set
(
this
.
layoutData
,
`
${
name
}
_
${
index
}
`
,
layoutModelDetail
.
getData
());
}
if
(
layoutModelDetail
&&
layoutModelDetail
.
details
)
{
if
(
layoutModelDetail
.
dataRegionType
===
'MULTIDATA'
)
{
const
multiData
=
layoutModelDetail
.
getData
();
if
(
multiData
&&
multiData
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
multiData
.
length
;
i
++
)
{
for
(
let
j
=
0
;
j
<
layoutModelDetail
.
details
.
length
;
j
++
)
{
const
key
=
layoutModelDetail
.
details
[
j
];
if
(
this
.
layoutItems
[
key
])
{
await
this
.
initLayoutItem
(
this
.
layoutItems
[
key
],
i
);
}
}
}
}
}
else
{
for
(
let
i
=
0
;
i
<
layoutModelDetail
.
details
.
length
;
i
++
)
{
const
key
=
layoutModelDetail
.
details
[
i
];
if
(
this
.
layoutItems
[
key
])
{
await
this
.
initLayoutItem
(
this
.
layoutItems
[
key
],
index
);
}
}
}
}
}
/**
* 视图布局面板项模型对象
...
...
@@ -254,6 +340,7 @@ export default class Usr5Base extends Vue implements ControlInterface {
* @memberof ItemlayoutpanelBase
*/
public
layoutItems
:
any
=
{
container1
:{
name
:
'container1'
,
type
:
'ITEMLAYOUT'
,
caption
:
''
,
titleBarCloseMode
:
0
,
isShowCaption
:
false
,
sysCss
:
''
,
itemType
:
'CONTAINER'
,
itemStyle
:
'DEFAULT'
,
visible
:
true
,
disabled
:
false
,
layout
:
'TABLE_24COL'
,
layoutPos
:
''
,
layoutHeight
:
0
,
heightMode
:
''
,
layoutWidth
:
0
,
widthMode
:
''
,
spacingBottom
:
''
,
spacingLeft
:
''
,
spacingRight
:
''
,
spacingTop
:
''
,
hAlignSelf
:
''
,
vAlignSelf
:
''
,
flexGrow
:
0
,
flexParams
:{
align
:
''
,
dir
:
''
,
vAlign
:
''
},
panel
:
this
,
details
:[]
,
dataRegionType
:
'INHERIT'
}
};
/**
...
...
@@ -437,6 +524,8 @@ export default class Usr5Base extends Vue implements ControlInterface {
* @memberof Usr5Base
*/
public
panelLogic
(
name
:
string
):
void
{
}
/**
...
...
@@ -447,6 +536,36 @@ export default class Usr5Base extends Vue implements ControlInterface {
*/
public
getButtonXData
(
name
:
string
):
any
{
let
xData
=
null
;
let
curLayoutModel
=
null
;
Object
.
values
(
this
.
layoutModelDetails
).
forEach
((
layoutModel
:
any
)
=>
{
if
(
layoutModel
.
name
==
name
)
{
curLayoutModel
=
layoutModel
;
}
})
// 获取数据容器
if
(
curLayoutModel
)
{
const
getDataArea
=
(
cLayoutModel
:
any
):
any
=>
{
let
dataArea
=
null
;
let
parentLayoutModel
=
null
;
Object
.
values
(
this
.
layoutModelDetails
).
forEach
((
pLayoutModel
:
any
)
=>
{
if
(
pLayoutModel
.
name
==
cLayoutModel
.
parentName
)
{
parentLayoutModel
=
pLayoutModel
;
if
(
parentLayoutModel
.
dataRegionType
==
'SINGLEDATA'
||
parentLayoutModel
.
dataRegionType
==
'MULTIDATA'
)
{
dataArea
=
parentLayoutModel
;
}
}
})
if
(
!
dataArea
&&
parentLayoutModel
)
{
dataArea
=
getDataArea
(
parentLayoutModel
);
}
return
dataArea
;
}
xData
=
getDataArea
(
curLayoutModel
);
}
// 获取当前视图
if
(
!
xData
)
{
xData
=
this
;
}
return
xData
;
}
...
...
app_Web/src/widgets/ibizorder/main-grid/main-grid-base.vue
浏览文件 @
77cc01a7
...
...
@@ -299,7 +299,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @param {*} [$event] 事件源
* @param {*} [xData] 执行行为所需当前部件
* @param {*} [actionContext] 执行行为上下文
* @memberof IBIZOrder
Pickup
GridViewBase
* @memberof IBIZOrder
SF1
GridViewBase
*/
public
Edit
(
args
:
any
[],
contextJO
?:
any
,
params
?:
any
,
$event
?:
any
,
xData
?:
any
,
actionContext
?:
any
,
srfParentDeName
?:
string
)
{
if
(
args
.
length
===
0
)
{
...
...
@@ -421,6 +421,20 @@ export default class MainBase extends Vue implements ControlInterface {
return
this
.
selections
[
0
];
}
/**
* 打开新建数据视图
*
* @type {any}
* @memberof MainBase
*/
@
Prop
()
public
newdata
:
any
;
/**
* 打开编辑数据视图
*
* @type {any}
* @memberof MainBase
*/
@
Prop
()
public
opendata
:
any
;
/**
* 是否嵌入关系界面
...
...
@@ -953,7 +967,7 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public
load
(
opt
:
any
=
{},
pageReset
:
boolean
=
false
):
void
{
if
(
!
this
.
fetchAction
){
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
'IBIZOrder
Pickup
GridView'
+
(
this
.
$t
(
'app.gridpage.notConfig.fetchAction'
)
as
string
)
});
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
'IBIZOrder
SF1
GridView'
+
(
this
.
$t
(
'app.gridpage.notConfig.fetchAction'
)
as
string
)
});
return
;
}
if
(
pageReset
){
...
...
@@ -1048,7 +1062,7 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public
async
remove
(
datas
:
any
[]):
Promise
<
any
>
{
if
(
!
this
.
removeAction
){
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
'IBIZOrder
Pickup
GridView'
+
(
this
.
$t
(
'app.gridpage.notConfig.removeAction'
)
as
string
)
});
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
'IBIZOrder
SF1
GridView'
+
(
this
.
$t
(
'app.gridpage.notConfig.removeAction'
)
as
string
)
});
return
;
}
let
_datas
:
any
[]
=
[];
...
...
@@ -1154,7 +1168,7 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public
addBatch
(
arg
:
any
=
{}):
void
{
if
(
!
this
.
fetchAction
){
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
'IBIZOrder
Pickup
GridView'
+
(
this
.
$t
(
'app.gridpage.notConfig.fetchAction'
)
as
string
)
});
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
'IBIZOrder
SF1
GridView'
+
(
this
.
$t
(
'app.gridpage.notConfig.fetchAction'
)
as
string
)
});
return
;
}
if
(
!
arg
){
...
...
@@ -2071,7 +2085,7 @@ export default class MainBase extends Vue implements ControlInterface {
try
{
if
(
Object
.
is
(
item
.
rowDataState
,
'create'
)){
if
(
!
this
.
createAction
){
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
'IBIZOrder
Pickup
GridView'
+
(
this
.
$t
(
'app.gridpage.notConfig.createAction'
)
as
string
)
});
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
'IBIZOrder
SF1
GridView'
+
(
this
.
$t
(
'app.gridpage.notConfig.createAction'
)
as
string
)
});
}
else
{
Object
.
assign
(
item
,{
viewparams
:
this
.
viewparams
});
let
response
=
await
this
.
service
.
add
(
this
.
createAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
item
,
this
.
showBusyIndicator
);
...
...
@@ -2079,7 +2093,7 @@ export default class MainBase extends Vue implements ControlInterface {
}
}
else
if
(
Object
.
is
(
item
.
rowDataState
,
'update'
)){
if
(
!
this
.
updateAction
){
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
'IBIZOrder
Pickup
GridView'
+
(
this
.
$t
(
'app.gridpage.notConfig.updateAction'
)
as
string
)
});
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
'IBIZOrder
SF1
GridView'
+
(
this
.
$t
(
'app.gridpage.notConfig.updateAction'
)
as
string
)
});
}
else
{
Object
.
assign
(
item
,{
viewparams
:
this
.
viewparams
});
if
(
item
.
ibizorder
){
...
...
@@ -2146,7 +2160,7 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public
newRow
(
args
:
any
[],
params
?:
any
,
$event
?:
any
,
xData
?:
any
):
void
{
if
(
!
this
.
loaddraftAction
){
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
'IBIZOrder
Pickup
GridView'
+
(
this
.
$t
(
'app.gridpage.notConfig.loaddraftAction'
)
as
string
)
});
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
'IBIZOrder
SF1
GridView'
+
(
this
.
$t
(
'app.gridpage.notConfig.loaddraftAction'
)
as
string
)
});
return
;
}
let
_this
=
this
;
...
...
app_Web/src/widgets/ibizorder/main-grid/main-grid-model.ts
浏览文件 @
77cc01a7
...
...
@@ -104,6 +104,21 @@ export default class MainModel {
prop
:
'n_ibizordername_like'
,
dataType
:
'QUERYPARAM'
},
{
name
:
'n_orderstate_eq'
,
prop
:
'n_orderstate_eq'
,
dataType
:
'QUERYPARAM'
},
{
name
:
'n_ordertime_gt'
,
prop
:
'n_ordertime_gt'
,
dataType
:
'QUERYPARAM'
},
{
name
:
'n_ordertime_lt'
,
prop
:
'n_ordertime_lt'
,
dataType
:
'QUERYPARAM'
},
{
name
:
'size'
,
...
...
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录