Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
功
功能演示系统
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
示例
功能演示系统
提交
7b3f17da
提交
7b3f17da
编写于
4年前
作者:
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 @@
...
@@ -2,7 +2,7 @@
import
{
Component
}
from
'vue-property-decorator'
;
import
{
Component
}
from
'vue-property-decorator'
;
import
IBIZBOOKPANELBase
from
'./ibizbookpanel-calendar-base.vue'
;
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
({
@
Component
({
components
:
{
components
:
{
...
...
This diff is collapsed.
Click to expand it.
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
>
This diff is collapsed.
Click to expand it.
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
This diff is collapsed.
Click to expand it.
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
This diff is collapsed.
Click to expand it.
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
This diff is collapsed.
Click to expand it.
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
This diff is collapsed.
Click to expand it.
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录