Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
I
ibizlab-generator
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
ibiz4jteam
ibizlab-generator
提交
a607e251
提交
a607e251
编写于
1月 20, 2022
作者:
Mosher
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update:更新分割栏组件
上级
f248649f
变更
3
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
182 行增加
和
15 行删除
+182
-15
app-split.vue
...templ/r7/app_{{apps}}/src/components/common/app-split.vue
+160
-0
tree-service.ts
...{{apps}}/src/core/service/control-service/tree-service.ts
+16
-7
{{ctrls@TREEEXPBAR}}-tree-exp-bar.vue.hbs
...}}-tree-exp-bar/{{ctrls@TREEEXPBAR}}-tree-exp-bar.vue.hbs
+6
-8
未找到文件。
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/components/common/app-split.vue
0 → 100644
浏览文件 @
a607e251
<
template
>
<div
ref=
"split"
class=
"app-split"
>
<div
v-if=
"isHorizontal"
class=
"app-split-horizontal"
>
<div
class=
"app-split-pane left-pane"
:style=
"
{ right: `${100 - offset}%` }">
<slot
name=
"left"
/>
</div>
<div
class=
"app-split-trigger"
:style=
"
{ left: `${offset}%` }">
</div>
<div
class=
"app-split-pane right-pane"
:style=
"
{ left: `${offset}%` }">
<slot
name=
"right"
/>
</div>
</div>
<div
v-else
class=
"app-split-vertical"
>
<div
class=
"app-split-pane top-pane"
:style=
"
{ bottom: `${100 - offset}%` }">
<slot
name=
"top"
/>
</div>
<div
class=
"app-split-trigger"
:style=
"
{ top: `${offset}%` }">
</div>
<div
class=
"app-split-pane bottom-pane"
:style=
"
{ top: `${offset}%` }">
<slot
name=
"bottom"
/>
</div>
</div>
</div>
</
template
>
<
script
setup
lang=
"ts"
>
import
{
Ref
,
ref
}
from
'vue'
;
interface
IProps
{
/**
* horizontal 横向
* vertical 垂直
*/
mode
?:
string
,
/**
* 位置,0-1表示百分比,也可以是具体数值
*/
value
:
number
|
string
,
/**
* 最小阈值
*/
min
:
number
|
string
,
/**
* 最大阈值
*/
max
:
number
|
string
}
// ref指向
const
split
=
ref
(
null
);
// 参数
const
props
=
withDefaults
(
defineProps
<
IProps
>
(),
{
mode
:
'horizontal'
,
value
:
0.5
})
// 是否横向布局
const
isHorizontal
:
Ref
<
boolean
>
=
computed
(()
=>
{
return
props
.
mode
===
'horizontal'
;
})
// 偏移量值
const
offsetSize
:
Ref
<
string
>
=
computed
(()
=>
{
return
isHorizontal
?
'offsetWidth'
:
'offsetHeight'
;
})
// px转百分比
const
px2Percent
=
(
numerator
:
any
,
denominator
:
any
)
=>
{
return
parseFloat
(
numerator
)
/
parseFloat
(
denominator
);
}
// 当前分割值
const
currentValue
:
Ref
<
string
|
number
>
=
ref
(
0.5
);
currentValue
.
value
=
props
.
value
;
// 当前最小分割阈值
const
currentMin
:
Ref
<
string
|
number
>
=
ref
(
40
);
currentMin
.
value
=
props
.
min
;
// 当前最大分割阈值
const
currentMax
:
Ref
<
string
|
number
>
=
ref
(
40
);
currentMax
.
value
=
props
.
max
;
// 偏移量
const
offset
:
Ref
<
number
>
=
ref
(
0
);
// 获取分割组件
const
getSplitCom
=
():
any
=>
{
return
unref
(
split
);
}
// 值是否是PX
const
valueIsPx
=
():
boolean
=>
{
return
typeof
props
.
value
===
'string'
;
}
// 计算阈值
const
getComputedThresholdValue
=
(
type
:
'min'
|
'max'
):
string
|
number
=>
{
const
splitCom
=
getSplitCom
();
const
size
=
splitCom
[
offsetSize
.
value
];
if
(
valueIsPx
())
{
return
typeof
props
[
type
]
===
'string'
?
props
[
type
]
:
size
*
(
props
[
type
]
as
number
);
}
else
{
return
typeof
props
[
type
]
===
'string'
?
px2Percent
(
props
[
type
],
size
)
:
props
[
type
];
}
}
// 计算偏移量
const
computeOffset
=
()
=>
{
nextTick
(()
=>
{
const
splitCom
=
getSplitCom
();
currentMin
.
value
=
getComputedThresholdValue
(
'min'
);
currentMin
.
value
=
getComputedThresholdValue
(
'max'
);
offset
.
value
=
(
valueIsPx
()
?
px2Percent
(
props
.
value
,
splitCom
[
offsetSize
.
value
])
:
props
.
value
as
number
)
*
10000
/
100
;
})
}
// 组件挂载
onMounted
(()
=>
{
nextTick
(()
=>
{
computeOffset
();
})
})
</
script
>
<
style
lang=
"scss"
scoped
>
.app-split
{
position
:
relative
;
width
:
100%
;
height
:
100%
;
}
.app-split-pane
{
position
:
absolute
;
&
.left-pane
,
&
.right-pane
{
top
:
0
;
bottom
:
0
;
}
&
.left-pane
{
left
:
0
;
}
&
.right-pane
{
right
:
0
;
}
&
.top-pane
,
&
.bottom-pane
{
left
:
0
;
right
:
0
;
}
&
.top-pane
{
top
:
0
;
}
&
.bottom-pane
{
bottom
:
0
;
}
}
</
style
>
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/service/control-service/tree-service.ts
浏览文件 @
a607e251
import
{
ControlServiceBase
,
ControlVOBase
,
deepCopy
,
IContext
,
IParam
,
isEmpty
,
TreeNodeRSVO
,
TreeNodeVO
}
from
"@core"
;
import
{
Environment
}
from
"@/environments/environment"
;
/**
* @description 树部件服务
...
...
@@ -341,7 +342,18 @@ export class TreeService<T extends ControlVOBase> extends ControlServiceBase<T>
const
nodeDataItems
:
any
[]
=
node
.
deTreeNodeDataItems
||
[];
if
(
nodeDataItems
.
length
>
0
)
{
nodeDataItems
.
forEach
((
item
:
any
)
=>
{
// TODO 节点数据项
const
name
=
item
.
name
.
toLowerCase
();
if
(
item
.
fieldCodeName
)
{
Object
.
assign
(
treeNode
,
{
[
name
]:
entity
[
item
.
fieldCodeName
.
toLowerCase
()],
})
}
if
(
Object
.
is
(
'text'
,
name
)
&&
item
.
customCode
)
{
Object
.
assign
(
treeNode
,
{
textCustomCode
:
true
,
textScriptCode
:
item
.
scriptCode
});
}
if
(
Object
.
is
(
'icon'
,
name
)
&&
item
.
customCode
)
{
Object
.
assign
(
treeNode
,
{
iconCustomCode
:
true
,
iconScriptCode
:
item
.
scriptCode
});
}
})
}
Object
.
assign
(
treeNode
,
{
selected
:
node
.
selected
});
...
...
@@ -349,7 +361,6 @@ export class TreeService<T extends ControlVOBase> extends ControlServiceBase<T>
Object
.
assign
(
treeNode
,
{
navfilter
:
node
.
navFilter
});
}
Object
.
assign
(
treeNode
,
{
curData
:
entity
});
// TODO 导航上下文 导航参数
if
(
node
.
counterId
)
{
Object
.
assign
(
treeNode
,
{
counterId
:
node
.
counterId
});
}
...
...
@@ -403,11 +414,9 @@ export class TreeService<T extends ControlVOBase> extends ControlServiceBase<T>
}
if
(
context
&&
context
.
srfparentkey
)
{
Object
.
assign
(
searchFilter
,
{
srfparentkey
:
deepCopy
(
context
).
srfparentkey
});
// TODO 识别环境参数 enableIssue
// const Environment = AppServiceBase.getInstance().getAppEnvironment();
// if (Environment.enableIssue) {
// Object.assign(searchFilter, { nodeid: Util.deepCopy(context).srfparentkey });
// }
if
(
Environment
&&
Environment
.
enableIssue
)
{
Object
.
assign
(
searchFilter
,
{
nodeid
:
deepCopy
(
context
).
srfparentkey
});
}
}
if
(
node
.
sortPSAppDEField
?.
codeName
)
{
Object
.
assign
(
searchFilter
,
{
sort
:
`
${
node
.
sortPSAppDEField
.
codeName
.
toLowerCase
()}
,
${
node
.
sortDir
?
node
.
sortDir
:
'asc'
}
`
});
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/widgets/{{appEntities}}/{{ctrls@TREEEXPBAR}}-tree-exp-bar/{{ctrls@TREEEXPBAR}}-tree-exp-bar.vue.hbs
浏览文件 @
a607e251
...
...
@@ -42,10 +42,8 @@ defineExpose({ state, name: '{{ctrl.name}}' });
</script>
<template>
<a-layout
class=
"app-tree-exp-bar
{{#if
ctrl
.
psSysCss
}}
{{
ctrl
.
psSysCss
.
cssName
}}{{/if}}
"
>
<a-layout-sider>
<AppSplit
class=
"app-tree-exp-bar
{{#if
ctrl
.
psSysCss
}}
{{
ctrl
.
psSysCss
.
cssName
}}{{/if}}
"
:value=
"0.2"
>
<template
#
left
>
{{#
ctrl
.
ctrls
}}
{{#
eq
controlType
"TREEVIEW"
}}
<
{{
codeName
}}
Tree
...
...
@@ -58,8 +56,8 @@ defineExpose({ state, name: '{{ctrl.name}}' });
></
{{
codeName
}}
Tree>
{{/
eq
}}
{{/
ctrl
.
ctrls
}}
</
a-layout-sider
>
<
a-layou
t>
</
template
>
<
template
#
righ
t
>
{{#
each
ctrl
.
psAppViewRefs
as
|
viewRef
|
}}
{{#if
viewRef
.
refPSAppView
}}
<
{{
viewRef
.
refPSAppView
.
name
}}
...
...
@@ -70,6 +68,6 @@ defineExpose({ state, name: '{{ctrl.name}}' });
</
{{
viewRef
.
refPSAppView
.
name
}}
>
{{/if}}
{{/
each
}}
</
a-layout
>
</
a-layou
t>
</
template
>
</
AppSpli
t>
</template>
\ No newline at end of file
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录