Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
I
ibizlab-generator
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
ibiz4jteam
ibizlab-generator
提交
cff4b6a7
提交
cff4b6a7
编写于
12月 30, 2021
作者:
WodahsOrez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: 路径计算
上级
7cbf7f5f
变更
1
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
62 行增加
和
1 行删除
+62
-1
route-tool.ts
...s/templ/r7/app_{{apps}}/src/ibiz-core/utils/route-tool.ts
+62
-1
未找到文件。
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/ibiz-core/utils/route-tool.ts
浏览文件 @
cff4b6a7
...
...
@@ -55,7 +55,10 @@ export class RouteTool {
}
/**
* 获取关系实体路径
* 获取关系实体路径(部分匹配)
* - 优先匹配路径节点数多的路径
* - 取最终匹配节点个数最多的组合
* - 路径节点必须从后往前连续匹配,中间缺失的舍弃前面匹配的节点
*
* @static
* @param {*} [viewParam={}] 视图上下文
...
...
@@ -101,6 +104,64 @@ export class RouteTool {
}
});
// 如果一个匹配的没有,即没有任何主键匹配上,关系路径为实体自身的pathName
if
(
routePath
==
''
){
routePath
=
"/"
+
deResPaths
[
deResPaths
.
length
-
1
][
0
].
pathName
;
}
return
routePath
;
}
/**
* 计算请求关系实体路径(全部匹配)
* - 优先匹配路径节点数多的路径
* - 取最终匹配节点个数最多的组合
* - 路径的每个节点必须全部匹配
*
* @static
* @param {*} [viewParam={}] 视图上下文
* @param {any[]} deResPaths 关系实体参数对象数组
* @returns {string}
* @memberof RouteTool
*/
public
static
buildDeResRequestPath
(
context
:
any
=
{},
deResPaths
:
any
[]):
string
{
let
routePath
:
string
=
''
;
// 首先给deResPaths排序,关系多的排前面。
deResPaths
.
sort
((
a
:
any
[],
b
:
any
[])
=>
a
.
length
-
b
.
length
);
// 最多匹配路径节点数
let
maxMatch
:
number
=
0
;
// 开始匹配,先遍历关系路径,在遍历关系路径的每个节点
deResPaths
.
some
((
deResPath
:
any
[])
=>
{
// 如果节点个数小于最大匹配,则后面都无需在计算了。(省略多余运算)
if
(
maxMatch
>
deResPath
.
length
)
{
return
true
;
}
// 当前匹配路径节点数
let
curMatch
:
number
=
0
;
let
curRoutPath
:
string
=
''
;
deResPath
.
some
((
deResNode
:
any
,
index
:
number
)
=>
{
let
value
:
any
=
context
[
deResNode
.
parameterName
];
if
(
notEmpty
(
value
))
{
curMatch
++
;
curRoutPath
+=
`/
${
deResNode
.
pathName
}
/
${
value
}
`
;
}
else
{
// 只要有一个节点没值,则整个路径作废。
curMatch
=
0
;
curRoutPath
=
''
;
return
true
}
});
// 当前匹配个数大于最大匹配时,修改最大匹配和最终结果
if
(
curMatch
>
maxMatch
)
{
maxMatch
=
curMatch
;
routePath
=
curRoutPath
;
}
});
return
routePath
;
}
...
...
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录