Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
功
功能演示系统
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
示例
功能演示系统
提交
f23505e1
提交
f23505e1
编写于
12月 07, 2020
作者:
hudan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
重新拉取
上级
1fae810d
变更
5
显示空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
0 行增加
和
610 行删除
+0
-610
itemlayoutpanel-panel-base.vue
...book/itemlayoutpanel-panel/itemlayoutpanel-panel-base.vue
+0
-527
itemlayoutpanel-panel-model.ts
...book/itemlayoutpanel-panel/itemlayoutpanel-panel-model.ts
+0
-31
itemlayoutpanel-panel-service.ts
...ok/itemlayoutpanel-panel/itemlayoutpanel-panel-service.ts
+0
-11
itemlayoutpanel-panel.less
...ibizbook/itemlayoutpanel-panel/itemlayoutpanel-panel.less
+0
-27
itemlayoutpanel-panel.vue
.../ibizbook/itemlayoutpanel-panel/itemlayoutpanel-panel.vue
+0
-14
未找到文件。
app_Web/src/widgets/ibizbook/itemlayoutpanel-panel/itemlayoutpanel-panel-base.vue
已删除
100644 → 0
浏览文件 @
1fae810d
<
template
>
<row
class=
"app-layoutpanel "
style=
"width:100%;height:100%;"
>
<i-col
v-show=
"detailsModel.container1.visible"
:md=
"
{ span: 24, offset: 0 }" class="app-layoutpanel-container" style="width:;height:100%;">
<row
style=
"height:100%;"
>
<i-col
v-show=
"detailsModel.field1.visible"
:md=
"
{ span: 24, offset: 0 }" style="" class="app-layoutpanel-field">
<div
class=
"item-field"
>
<app-panel-field
name=
'field1'
labelPos=
'LEFT'
caption=
"图书名"
:isEmptyCaption=
"false"
:error=
'detailsModel.field1.error'
:data=
'data'
:value=
'data.field1'
:itemRules=
"rules.field1"
>
<app-span
:value=
"data.field1"
name=
"field1"
:data=
"data"
:context=
"context"
:viewparams=
"viewparams"
:localContext =
'
{ }' :localParam ='{ }' style="">
</app-span>
</app-panel-field>
</div>
</i-col>
<i-col
v-show=
"detailsModel.field2.visible"
:md=
"
{ span: 24, offset: 0 }" style="" class="app-layoutpanel-field">
<div
class=
"item-field"
>
<app-panel-field
name=
'field2'
labelPos=
'LEFT'
caption=
"借出日期"
:isEmptyCaption=
"false"
:error=
'detailsModel.field2.error'
:data=
'data'
:value=
'data.field2'
:itemRules=
"rules.field2"
>
<app-span
:value=
"data.field2"
name=
"field2"
:data=
"data"
:context=
"context"
:viewparams=
"viewparams"
:localContext =
'
{ }' :localParam ='{ }' style="">
</app-span>
</app-panel-field>
</div>
</i-col>
<i-col
v-show=
"detailsModel.field3.visible"
:md=
"
{ span: 24, offset: 0 }" style="" class="app-layoutpanel-field">
<div
class=
"item-field"
>
<app-panel-field
name=
'field3'
labelPos=
'LEFT'
caption=
"归还日期"
:isEmptyCaption=
"false"
:error=
'detailsModel.field3.error'
:data=
'data'
:value=
'data.field3'
:itemRules=
"rules.field3"
>
<app-span
:value=
"data.field3"
name=
"field3"
:data=
"data"
:context=
"context"
:viewparams=
"viewparams"
:localContext =
'
{ }' :localParam ='{ }' style="">
</app-span>
</app-panel-field>
</div>
</i-col>
</row>
</i-col>
</row>
</
template
>
<
script
lang=
'tsx'
>
import
{
Vue
,
Component
,
Prop
,
Provide
,
Emit
,
Watch
,
Model
,
Inject
}
from
'vue-property-decorator'
;
import
{
CreateElement
}
from
'vue'
;
import
{
Subject
,
Subscription
}
from
'rxjs'
;
import
{
ControlInterface
}
from
'@/interface/control'
;
import
{
UIActionTool
,
Util
,
ViewTool
}
from
'@/utils'
;
import
NavDataService
from
'@/service/app/navdata-service'
;
import
AppCenterService
from
"@service/app/app-center-service"
;
import
IBIZBOOKService
from
'@/service/ibizbook/ibizbook-service'
;
import
ItemlayoutpanelService
from
'./itemlayoutpanel-panel-service'
;
import
IBIZBOOKUIService
from
'@/uiservice/ibizbook/ibizbook-ui-service'
;
import
{
PanelDetailModel
,
PanelRawitemModel
,
PanelTabPanelModel
,
PanelTabPageModel
,
PanelFieldModel
,
PanelContainerModel
,
PanelControlModel
,
PanelUserControlModel
,
PanelButtonModel
}
from
'@/model/panel-detail'
;
import
ItemlayoutpanelModel
from
'./itemlayoutpanel-panel-model'
;
import
CodeListService
from
"@/codelist/codelist-service"
;
import
UIService
from
'@/uiservice/ui-service'
;
@
Component
({
components
:
{
}
})
export
default
class
ItemlayoutpanelBase
extends
Vue
implements
ControlInterface
{
/**
* 名称
*
* @type {string}
* @memberof ItemlayoutpanelBase
*/
@
Prop
()
public
name
?:
string
;
/**
* 视图通讯对象
*
* @type {Subject<ViewState>}
* @memberof ItemlayoutpanelBase
*/
@
Prop
()
public
viewState
!
:
Subject
<
ViewState
>
;
/**
* 应用上下文
*
* @type {*}
* @memberof ItemlayoutpanelBase
*/
@
Prop
()
public
context
!
:
any
;
/**
* 视图参数
*
* @type {*}
* @memberof ItemlayoutpanelBase
*/
@
Prop
()
public
viewparams
!
:
any
;
/**
* 视图状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof ItemlayoutpanelBase
*/
public
viewStateEvent
:
Subscription
|
undefined
;
/**
* 获取部件类型
*
* @returns {string}
* @memberof ItemlayoutpanelBase
*/
public
getControlType
():
string
{
return
'PANEL'
}
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof ItemlayoutpanelBase
*/
public
counterServiceArray
:
Array
<
any
>
=
[];
/**
* 建构部件服务对象
*
* @type {ItemlayoutpanelService}
* @memberof ItemlayoutpanelBase
*/
public
service
:
ItemlayoutpanelService
=
new
ItemlayoutpanelService
({
$store
:
this
.
$store
});
/**
* 实体服务对象
*
* @type {IBIZBOOKService}
* @memberof ItemlayoutpanelBase
*/
public
appEntityService
:
IBIZBOOKService
=
new
IBIZBOOKService
({
$store
:
this
.
$store
});
/**
* 转化数据
*
* @param {any} args
* @memberof ItemlayoutpanelBase
*/
public
transformData
(
args
:
any
)
{
let
_this
:
any
=
this
;
if
(
_this
.
service
&&
_this
.
service
.
handleRequestData
instanceof
Function
&&
_this
.
service
.
handleRequestData
(
'transform'
,
_this
.
context
,
args
)){
return
_this
.
service
.
handleRequestData
(
'transform'
,
_this
.
context
,
args
)[
'data'
];
}
}
/**
* 关闭视图
*
* @param {any} args
* @memberof ItemlayoutpanelBase
*/
public
closeView
(
args
:
any
):
void
{
let
_this
:
any
=
this
;
_this
.
$emit
(
'closeview'
,
[
args
]);
}
/**
* 计数器刷新
*
* @memberof ItemlayoutpanelBase
*/
public
counterRefresh
(){
const
_this
:
any
=
this
;
if
(
_this
.
counterServiceArray
&&
_this
.
counterServiceArray
.
length
>
0
){
_this
.
counterServiceArray
.
forEach
((
item
:
any
)
=>
{
if
(
item
.
refreshData
&&
item
.
refreshData
instanceof
Function
){
item
.
refreshData
();
}
})
}
}
/**
* 接口实现
*
* @returns {any[]}
* @memberof ItemlayoutpanelBase
*/
getDatas
():
any
[]
{
if
(
!
this
.
panelData
)
{
return
[];
}
return
[
this
.
panelData
];
}
/**
* 接口实现
*
* @returns {*}
* @memberof ItemlayoutpanelBase
*/
getData
()
{
return
this
.
panelData
;
}
/**
* 父级部件引用
*
* @type {*}
* @memberof ItemlayoutpanelBase
*/
@
Prop
()
public
parentRef
?:
any
;
/**
* 面板数据对象
*
* @type {*}
* @memberof ItemlayoutpanelBase
*/
@
Prop
()
public
inputData
?:
any
;
/**
* 操作栏模型数据
*
* @type {*}
* @memberof ItemlayoutpanelBase
*/
@
Prop
()
public
actionModel
?:
any
;
/**
* UI数据对象
*
* @type {*}
* @memberof ItemlayoutpanelBase
*/
public
data
:
any
=
{};
/**
* 面板数据对象
*
* @type {*}
* @memberof ItemlayoutpanelBase
*/
public
panelData
:
any
=
null
;
/**
* 数据模型对象
*
* @type {ItemlayoutpanelModel}
* @memberof ItemlayoutpanelBase
*/
public
dataModel
:
ItemlayoutpanelModel
=
new
ItemlayoutpanelModel
();
/**
* 代码表服务对象
*
* @type {CodeListService}
* @memberof ItemlayoutpanelBase
*/
public
codeListService
:
CodeListService
=
new
CodeListService
({
$store
:
this
.
$store
});
/**
* 界面UI服务对象
*
* @type {IBIZBOOKUIService}
* @memberof ItemlayoutpanelBase
*/
public
appUIService
:
IBIZBOOKUIService
=
new
IBIZBOOKUIService
(
this
.
$store
);
/**
* 详情模型集合
*
* @type {*}
* @memberof ItemlayoutpanelBase
*/
public
detailsModel
:
any
=
{
field1
:
new
PanelFieldModel
({
caption
:
'图书名'
,
itemType
:
'FIELD'
,
visible
:
true
,
disabled
:
false
,
name
:
'field1'
,
panel
:
this
})
,
field2
:
new
PanelFieldModel
({
caption
:
'借出日期'
,
itemType
:
'FIELD'
,
visible
:
true
,
disabled
:
false
,
name
:
'field2'
,
panel
:
this
})
,
field3
:
new
PanelFieldModel
({
caption
:
'归还日期'
,
itemType
:
'FIELD'
,
visible
:
true
,
disabled
:
false
,
name
:
'field3'
,
panel
:
this
})
,
container1
:
new
PanelContainerModel
({
caption
:
''
,
itemType
:
'CONTAINER'
,
visible
:
true
,
disabled
:
false
,
name
:
'container1'
,
panel
:
this
})
,
};
/**
* 值规则对象
*
* @type {*}
* @memberof ItemlayoutpanelBase
*/
public
rules
:
any
=
{
field1
:[
{
required
:
false
,
type
:
'string'
,
message
:
'图书名 值不能为空'
},
{
required
:
false
,
type
:
'string'
,
message
:
'图书名 值不能为空'
}
],
field2
:[
{
required
:
false
,
type
:
'string'
,
message
:
'借出日期 值不能为空'
},
{
required
:
false
,
type
:
'string'
,
message
:
'借出日期 值不能为空'
}
],
field3
:[
{
required
:
false
,
type
:
'string'
,
message
:
'归还日期 值不能为空'
},
{
required
:
false
,
type
:
'string'
,
message
:
'归还日期 值不能为空'
}
],
};
/**
* 监听数据对象
*
* @memberof ItemlayoutpanelBase
*/
@
Watch
(
'inputData'
,{
immediate
:
true
,
deep
:
true
})
public
onInputDataChange
(
newVal
:
any
,
oldVal
:
any
){
if
(
newVal
){
this
.
computedUIData
(
newVal
);
this
.
panelData
=
Util
.
deepCopy
(
newVal
);
this
.
computeButtonState
(
newVal
);
this
.
panelLogic
({
name
:
''
,
newVal
:
null
,
oldVal
:
null
});
this
.
$forceUpdate
();
}
}
/**
* 计算UI展示数据
*
* @param codelistArray 代码表模型数组
* @memberof ItemlayoutpanelBase
*/
public
computedUIData
(
newVal
:
any
){
if
((
this
.
dataModel
.
getDataItems
instanceof
Function
)
&&
this
.
dataModel
.
getDataItems
().
length
>
0
){
this
.
dataModel
.
getDataItems
().
forEach
((
item
:
any
)
=>
{
this
.
data
[
item
.
name
]
=
newVal
[
item
.
prop
];
})
}
}
/**
* 计算面板按钮权限状态
*
* @param {*} [data] 传入数据
* @memberof ItemlayoutpanelBase
*/
public
computeButtonState
(
data
:
any
){
// 若为项布局面板,存在parentRef
if
(
this
.
parentRef
){
let
targetData
:
any
=
this
.
parentRef
.
transformData
(
data
);
if
(
this
.
detailsModel
&&
Object
.
keys
(
this
.
detailsModel
).
length
>
0
){
Object
.
keys
(
this
.
detailsModel
).
forEach
((
name
:
any
)
=>
{
if
(
this
.
detailsModel
[
name
]
&&
this
.
detailsModel
[
name
].
uiaction
&&
this
.
detailsModel
[
name
].
uiaction
.
dataaccaction
&&
Object
.
is
(
this
.
detailsModel
[
name
].
itemType
,
"BUTTON"
)){
this
.
detailsModel
[
name
].
isPower
=
true
;
let
tempUIAction
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
detailsModel
[
name
].
uiaction
));
let
result
:
any
[]
=
ViewTool
.
calcActionItemAuthState
(
targetData
,[
tempUIAction
],
this
.
appUIService
?
this
.
appUIService
:
null
);
this
.
detailsModel
[
name
].
visible
=
tempUIAction
.
visabled
;
this
.
detailsModel
[
name
].
disabled
=
tempUIAction
.
disabled
;
this
.
detailsModel
[
name
].
isPower
=
result
[
0
]
===
1
?
true
:
false
;
}
})
}
}
}
/**
* 界面行为
*
* @param {*} row
* @param {*} tag
* @param {*} $event
* @memberof ItemlayoutpanelBase
*/
public
uiAction
(
row
:
any
,
tag
:
any
,
$event
:
any
)
{
}
/**
* 打开编辑数据视图
*
* @type {any}
* @memberof ItemlayoutpanelBase
*/
public
opendata
(
args
:
any
[],
fullargs
?:
any
[],
params
?:
any
,
$event
?:
any
,
xData
?:
any
){
if
(
this
.
parentRef
.
opendata
&&
this
.
parentRef
.
opendata
instanceof
Function
)
{
this
.
parentRef
.
opendata
(
args
,
fullargs
,
params
,
$event
,
xData
);
}
}
/**
* 打开新建数据视图
*
* @type {any}
* @memberof ItemlayoutpanelBase
*/
public
newdata
(
args
:
any
[],
fullargs
?:
any
[],
params
?:
any
,
$event
?:
any
,
xData
?:
any
)
{
if
(
this
.
parentRef
.
newdata
&&
this
.
parentRef
.
newdata
instanceof
Function
)
{
this
.
parentRef
.
newdata
(
args
,
fullargs
,
params
,
$event
,
xData
);
}
}
/**
* 删除
*
* @param {any[]} datas
* @returns {Promise<any>}
* @memberof ItemlayoutpanelBase
*/
public
async
remove
(
datas
:
any
[]):
Promise
<
any
>
{
if
(
this
.
parentRef
.
remove
&&
this
.
parentRef
.
remove
instanceof
Function
)
{
return
this
.
parentRef
.
remove
(
datas
);
}
}
/**
* 刷新
*
* @param {*} [args={}]
* @memberof ItemlayoutpanelBase
*/
public
refresh
(
args
:
any
=
{})
{
if
(
this
.
parentRef
.
refresh
&&
this
.
parentRef
.
refresh
instanceof
Function
)
{
this
.
parentRef
.
refresh
(
args
);
}
}
/**
* 设置变更面板编辑项的值
*
* @param data 面板数据
* @param {{ name: string, value: any }} $event
* @returns {void}
* @memberof ItemlayoutpanelBase
*/
public
onPanelItemValueChange
(
data
:
any
,
$event
:
{
name
:
string
,
value
:
any
}):
void
{
if
(
!
$event
)
{
return
;
}
if
(
!
$event
.
name
||
Object
.
is
(
$event
.
name
,
''
)
||
!
data
.
hasOwnProperty
(
$event
.
name
))
{
return
;
}
data
[
$event
.
name
]
=
$event
.
value
;
this
.
panelEditItemChange
(
data
,
$event
.
name
,
$event
.
value
);
}
/**
* 面板编辑项值变化后续操作
*
* @public
* @param data 面板数据
* @param property 编辑项名
* @param value 编辑项值
* @returns {void}
* @memberof ItemlayoutpanelBase
*/
public
panelEditItemChange
(
data
:
any
,
property
:
string
,
value
:
any
){
// 面板数据变化事件
if
((
this
.
dataModel
.
getDataItems
instanceof
Function
)
&&
this
.
dataModel
.
getDataItems
().
length
>
0
){
let
modelitem
=
this
.
dataModel
.
getDataItems
().
find
((
item
:
any
)
=>
{
return
item
.
name
===
property
;
})
if
(
modelitem
){
this
.
$emit
(
'panelDataChange'
,{[
modelitem
.
prop
]:
value
});
}
}
}
/**
* 分页切换事件
*
* @memberof ItemlayoutpanelBase
*/
public
handleTabPanelClick
(
name
:
string
,
$event
:
any
){
this
.
detailsModel
[
name
].
clickPage
(
$event
.
name
);
}
/**
* 面板逻辑
*
* @public
* @param {{ name: string, newVal: any, oldVal: any }} { name, newVal, oldVal }
* @memberof ItemlayoutpanelBase
*/
public
panelLogic
({
name
,
newVal
,
oldVal
}:
{
name
:
string
,
newVal
:
any
,
oldVal
:
any
}):
void
{
}
}
</
script
>
<
style
lang=
'less'
>
@import './itemlayoutpanel-panel.less';
</
style
>
app_Web/src/widgets/ibizbook/itemlayoutpanel-panel/itemlayoutpanel-panel-model.ts
已删除
100644 → 0
浏览文件 @
1fae810d
/**
* Itemlayoutpanel 部件模型
*
* @export
* @class ItemlayoutpanelModel
*/
export
default
class
ItemlayoutpanelModel
{
/**
* 获取数据项集合
*
* @returns {any[]}
* @memberof ItemlayoutpanelModel
*/
public
getDataItems
():
any
[]
{
return
[
{
name
:
'field1'
,
prop
:
'title'
},
{
name
:
'field2'
,
prop
:
'start'
},
{
name
:
'field3'
,
prop
:
'end'
}
]
}
}
\ No newline at end of file
app_Web/src/widgets/ibizbook/itemlayoutpanel-panel/itemlayoutpanel-panel-service.ts
已删除
100644 → 0
浏览文件 @
1fae810d
import
{
Http
}
from
'@/utils'
;
import
ControlService
from
'@/widgets/control-service'
;
/**
* Itemlayoutpanel 部件服务对象
*
* @export
* @class ItemlayoutpanelService
*/
export
default
class
ItemlayoutpanelService
extends
ControlService
{
}
\ No newline at end of file
app_Web/src/widgets/ibizbook/itemlayoutpanel-panel/itemlayoutpanel-panel.less
已删除
100644 → 0
浏览文件 @
1fae810d
// this is less
.app-layoutpanel {
height: 100%;
.app-layoutpanel-container {
padding: 6px;
}
.app-layoutpanel-tabpanel{
>.el-tabs {
>.el-.el-tabs__header{
margin: 0 0 10px;
}
.app-layoutpanel-tabpage{
padding: 6px;
}
}
}
.app-layoutpanel-button,.app-layoutpanel-conctrl,.app-layoutpanel-ctrlpos,.app-layoutpanel-field,.app-layoutpanel-rowitem,.app-layoutpanel-usercontrol{
padding: 6px;
}
.item-field{
padding: 0 4px;
display: flex;
>.item-field-label{
padding: 0 8px;
}
}
}
\ No newline at end of file
app_Web/src/widgets/ibizbook/itemlayoutpanel-panel/itemlayoutpanel-panel.vue
已删除
100644 → 0
浏览文件 @
1fae810d
<
script
lang=
'tsx'
>
import
{
Component
}
from
'vue-property-decorator'
;
import
ItemlayoutpanelBase
from
'./itemlayoutpanel-panel-base.vue'
;
@
Component
({
components
:
{
}
})
export
default
class
Itemlayoutpanel
extends
ItemlayoutpanelBase
{
}
</
script
>
\ No newline at end of file
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录