Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
功
功能演示系统
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
示例
功能演示系统
提交
7b3f17da
提交
7b3f17da
编写于
11月 26, 2020
作者:
ibizdev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ShineKOT 发布系统代码 [后台服务,演示应用]
上级
175efb5a
变更
6
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
603 行增加
和
1 行删除
+603
-1
ibizbookpanel-calendar.vue
...bizbook/ibizbookpanel-calendar/ibizbookpanel-calendar.vue
+1
-1
item1layoutpanel-panel-base.vue
...ok/item1layoutpanel-panel/item1layoutpanel-panel-base.vue
+519
-0
item1layoutpanel-panel-model.ts
...ok/item1layoutpanel-panel/item1layoutpanel-panel-model.ts
+31
-0
item1layoutpanel-panel-service.ts
.../item1layoutpanel-panel/item1layoutpanel-panel-service.ts
+11
-0
item1layoutpanel-panel.less
...izbook/item1layoutpanel-panel/item1layoutpanel-panel.less
+27
-0
item1layoutpanel-panel.vue
...bizbook/item1layoutpanel-panel/item1layoutpanel-panel.vue
+14
-0
未找到文件。
app_Web/src/widgets/ibizbook/ibizbookpanel-calendar/ibizbookpanel-calendar.vue
浏览文件 @
7b3f17da
...
...
@@ -2,7 +2,7 @@
import
{
Component
}
from
'vue-property-decorator'
;
import
IBIZBOOKPANELBase
from
'./ibizbookpanel-calendar-base.vue'
;
import
layout_item1layoutpanel
from
'@widgets/ibizbook/
has-panel-kan-ban-panel/has-panel-kan-ban
-panel.vue'
;
import
layout_item1layoutpanel
from
'@widgets/ibizbook/
item1layoutpanel-panel/item1layoutpanel
-panel.vue'
;
@
Component
({
components
:
{
...
...
app_Web/src/widgets/ibizbook/item1layoutpanel-panel/item1layoutpanel-panel-base.vue
0 → 100644
浏览文件 @
7b3f17da
<
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
Item1layoutpanelService
from
'./item1layoutpanel-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
Item1layoutpanelModel
from
'./item1layoutpanel-panel-model'
;
import
CodeListService
from
"@/codelist/codelist-service"
;
import
UIService
from
'@/uiservice/ui-service'
;
@
Component
({
components
:
{
}
})
export
default
class
Item1layoutpanelBase
extends
Vue
implements
ControlInterface
{
/**
* 名称
*
* @type {string}
* @memberof Item1layoutpanelBase
*/
@
Prop
()
public
name
?:
string
;
/**
* 视图通讯对象
*
* @type {Subject<ViewState>}
* @memberof Item1layoutpanelBase
*/
@
Prop
()
public
viewState
!
:
Subject
<
ViewState
>
;
/**
* 应用上下文
*
* @type {*}
* @memberof Item1layoutpanelBase
*/
@
Prop
()
public
context
:
any
;
/**
* 视图参数
*
* @type {*}
* @memberof Item1layoutpanelBase
*/
@
Prop
()
public
viewparams
:
any
;
/**
* 视图状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof Item1layoutpanelBase
*/
public
viewStateEvent
:
Subscription
|
undefined
;
/**
* 获取部件类型
*
* @returns {string}
* @memberof Item1layoutpanelBase
*/
public
getControlType
():
string
{
return
'PANEL'
}
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof Item1layoutpanelBase
*/
public
counterServiceArray
:
Array
<
any
>
=
[];
/**
* 建构部件服务对象
*
* @type {Item1layoutpanelService}
* @memberof Item1layoutpanelBase
*/
public
service
:
Item1layoutpanelService
=
new
Item1layoutpanelService
({
$store
:
this
.
$store
});
/**
* 实体服务对象
*
* @type {IBIZBOOKService}
* @memberof Item1layoutpanelBase
*/
public
appEntityService
:
IBIZBOOKService
=
new
IBIZBOOKService
({
$store
:
this
.
$store
});
/**
* 转化数据
*
* @param {any} args
* @memberof Item1layoutpanelBase
*/
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 Item1layoutpanelBase
*/
public
closeView
(
args
:
any
):
void
{
let
_this
:
any
=
this
;
_this
.
$emit
(
'closeview'
,
[
args
]);
}
/**
* 计数器刷新
*
* @memberof Item1layoutpanelBase
*/
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 Item1layoutpanelBase
*/
getDatas
():
any
[]
{
if
(
!
this
.
panelData
)
{
return
[];
}
return
[
this
.
panelData
];
}
/**
* 接口实现
*
* @returns {*}
* @memberof Item1layoutpanelBase
*/
getData
()
{
return
this
.
panelData
;
}
/**
* 父级部件引用
*
* @type {*}
* @memberof Item1layoutpanelBase
*/
@
Prop
()
public
parentRef
?:
any
;
/**
* 面板数据对象
*
* @type {*}
* @memberof Item1layoutpanelBase
*/
@
Prop
()
public
inputData
?:
any
;
/**
* UI数据对象
*
* @type {*}
* @memberof Item1layoutpanelBase
*/
public
data
:
any
=
{};
/**
* 面板数据对象
*
* @type {*}
* @memberof Item1layoutpanelBase
*/
public
panelData
:
any
=
null
;
/**
* 数据模型对象
*
* @type {Item1layoutpanelModel}
* @memberof Item1layoutpanelBase
*/
public
dataModel
:
Item1layoutpanelModel
=
new
Item1layoutpanelModel
();
/**
* 代码表服务对象
*
* @type {CodeListService}
* @memberof Item1layoutpanelBase
*/
public
codeListService
:
CodeListService
=
new
CodeListService
({
$store
:
this
.
$store
});
/**
* 界面UI服务对象
*
* @type {IBIZBOOKUIService}
* @memberof Item1layoutpanelBase
*/
public
appUIService
:
IBIZBOOKUIService
=
new
IBIZBOOKUIService
(
this
.
$store
);
/**
* 详情模型集合
*
* @type {*}
* @memberof Item1layoutpanelBase
*/
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 Item1layoutpanelBase
*/
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 Item1layoutpanelBase
*/
@
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 Item1layoutpanelBase
*/
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 Item1layoutpanelBase
*/
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 Item1layoutpanelBase
*/
public
uiAction
(
row
:
any
,
tag
:
any
,
$event
:
any
)
{
}
/**
* 打开编辑数据视图
*
* @type {any}
* @memberof Item1layoutpanelBase
*/
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 Item1layoutpanelBase
*/
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 Item1layoutpanelBase
*/
public
async
remove
(
datas
:
any
[]):
Promise
<
any
>
{
if
(
this
.
parentRef
.
remove
&&
this
.
parentRef
.
remove
instanceof
Function
)
{
return
this
.
parentRef
.
remove
(
datas
);
}
}
/**
* 刷新
*
* @param {*} [args={}]
* @memberof Item1layoutpanelBase
*/
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 Item1layoutpanelBase
*/
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 Item1layoutpanelBase
*/
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 Item1layoutpanelBase
*/
public
handleTabPanelClick
(
name
:
string
,
$event
:
any
){
this
.
detailsModel
[
name
].
clickPage
(
$event
.
name
);
}
/**
* 面板逻辑
*
* @public
* @param {{ name: string, newVal: any, oldVal: any }} { name, newVal, oldVal }
* @memberof Item1layoutpanelBase
*/
public
panelLogic
({
name
,
newVal
,
oldVal
}:
{
name
:
string
,
newVal
:
any
,
oldVal
:
any
}):
void
{
}
}
</
script
>
<
style
lang=
'less'
>
@import './item1layoutpanel-panel.less';
</
style
>
app_Web/src/widgets/ibizbook/item1layoutpanel-panel/item1layoutpanel-panel-model.ts
0 → 100644
浏览文件 @
7b3f17da
/**
* Item1layoutpanel 部件模型
*
* @export
* @class Item1layoutpanelModel
*/
export
default
class
Item1layoutpanelModel
{
/**
* 获取数据项集合
*
* @returns {any[]}
* @memberof Item1layoutpanelModel
*/
public
getDataItems
():
any
[]
{
return
[
{
name
:
'field1'
,
prop
:
'ibizbookname'
},
{
name
:
'field2'
,
prop
:
'author'
},
{
name
:
'field3'
,
prop
:
'press'
}
]
}
}
\ No newline at end of file
app_Web/src/widgets/ibizbook/item1layoutpanel-panel/item1layoutpanel-panel-service.ts
0 → 100644
浏览文件 @
7b3f17da
import
{
Http
}
from
'@/utils'
;
import
ControlService
from
'@/widgets/control-service'
;
/**
* Item1layoutpanel 部件服务对象
*
* @export
* @class Item1layoutpanelService
*/
export
default
class
Item1layoutpanelService
extends
ControlService
{
}
\ No newline at end of file
app_Web/src/widgets/ibizbook/item1layoutpanel-panel/item1layoutpanel-panel.less
0 → 100644
浏览文件 @
7b3f17da
// 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/item1layoutpanel-panel/item1layoutpanel-panel.vue
0 → 100644
浏览文件 @
7b3f17da
<
script
lang=
'tsx'
>
import
{
Component
}
from
'vue-property-decorator'
;
import
Item1layoutpanelBase
from
'./item1layoutpanel-panel-base.vue'
;
@
Component
({
components
:
{
}
})
export
default
class
Item1layoutpanel
extends
Item1layoutpanelBase
{
}
</
script
>
\ No newline at end of file
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录