Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
iBiz-Vue-Mob-R7-Res
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
iBiz-R7前端标准模板
iBiz-Vue-Mob-R7-Res
提交
691f48eb
提交
691f48eb
编写于
6月 10, 2020
作者:
zcdtk
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
视图参数处理
上级
f0c7a69b
变更
1
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
144 行增加
和
0 行删除
+144
-0
view-tool.ts
src/utils/view-tool/view-tool.ts
+144
-0
未找到文件。
src/utils/view-tool/view-tool.ts
浏览文件 @
691f48eb
import
{
Route
}
from
'vue-router'
;
import
{
Route
}
from
'vue-router'
;
import
qs
from
'qs'
;
import
qs
from
'qs'
;
import
{
Util
}
from
'@/ibiz-core/utils'
;
export
class
ViewTool
{
export
class
ViewTool
{
...
@@ -271,6 +272,28 @@ export class ViewTool {
...
@@ -271,6 +272,28 @@ export class ViewTool {
return
this
.
indexViewParam
;
return
this
.
indexViewParam
;
}
}
/**
* 判断是否为 null
*
* @param {*} o
* @returns {boolean}
* @memberof ViewTool
*/
public
isNull
(
o
:
any
):
boolean
{
return
Object
.
prototype
.
toString
.
call
(
o
).
slice
(
8
,
-
1
)
===
'Null'
}
/**
* 判断是否为 undefined
*
* @param {*} o
* @returns {boolean}
* @memberof ViewTool
*/
public
isUndefined
(
o
:
any
):
boolean
{
return
Object
.
prototype
.
toString
.
call
(
o
).
slice
(
8
,
-
1
)
===
'Undefined'
}
/**
/**
* 处理编辑器参数
* 处理编辑器参数
*
*
...
@@ -332,4 +355,125 @@ export class ViewTool {
...
@@ -332,4 +355,125 @@ export class ViewTool {
}
}
return
_itemParam
;
return
_itemParam
;
}
}
/**
* 解析视图数据
*
* @returns {{ context: {}, viewparams: {} }}
* @memberof ViewTool
*/
public
parseViewData
(
view
:
any
,
isPSDEView
:
boolean
):
{
context
:
{},
viewparams
:
{}
}
{
let
data
=
{
context
:
{},
viewparams
:
{}
};
// 合并全局上下文
const
{
context
,
param
}
=
view
.
$store
.
getters
.
getAppData
();
if
(
context
&&
Object
.
keys
(
context
).
length
>
0
)
{
data
.
context
=
{
...
context
};
}
// 合并全局参数
if
(
param
&&
Object
.
keys
(
param
).
length
>
0
)
{
data
.
viewparams
=
{
...
param
};
}
let
_context
:
any
=
{},
_viewparams
:
any
=
{};
if
(
!
view
.
viewDefaultUsage
)
{
// 视图模态或者嵌入打开
if
(
view
.
_context
&&
!
Object
.
is
(
view
.
_context
,
''
))
{
_context
=
{
...
JSON
.
parse
(
view
.
_context
)
};
}
if
(
view
.
_viewparams
&&
!
Object
.
is
(
view
.
_viewparams
,
''
))
{
_viewparams
=
{
...
JSON
.
parse
(
view
.
_viewparams
)
};
}
}
else
{
// 视图路由打开
const
path
=
(
view
.
$route
.
matched
[
view
.
$route
.
matched
.
length
-
1
]).
path
;
const
keys
:
Array
<
any
>
=
[];
const
curReg
=
view
.
$pathToRegExp
.
pathToRegexp
(
path
,
keys
);
const
matchArray
=
curReg
.
exec
(
view
.
$route
.
path
);
keys
.
forEach
((
item
:
any
,
index
:
number
)
=>
{
Object
.
defineProperty
(
_context
,
item
.
name
,
{
enumerable
:
true
,
value
:
matchArray
[
index
+
1
]
});
});
if
(
view
.
$route
&&
view
.
$route
.
fullPath
&&
view
.
$route
.
fullPath
.
indexOf
(
"?"
)
>
-
1
)
{
const
viewParamStr
=
view
.
$route
.
fullPath
.
slice
(
view
.
$route
.
fullPath
.
indexOf
(
"?"
)
+
1
);
_viewparams
=
{
...
qs
.
parse
(
viewParamStr
,
{
delimiter
:
'&'
})
};
}
}
// 合并视图上下文
data
.
context
=
{
...
data
.
context
,
...
_context
};
// 合并视图参数
data
.
viewparams
=
{
...
data
.
viewparams
,
...
_viewparams
};
this
.
parseViewNavData
(
data
,
view
.
navContext
,
view
.
navParam
);
if
(
isPSDEView
)
{
data
.
context
=
{
...
data
.
context
,
...{
srfsessionid
:
Util
.
createUUID
()
}
};
}
return
data
;
}
/**
* 动态视图导航数据
*
* @private
* @param {({ context: any | {}, viewparams: any | {} })} data
* @param {*} [navContext={}]
* @param {*} [navParam={}]
* @memberof ViewTool
*/
private
parseViewNavData
(
data
:
{
context
:
any
|
{},
viewparams
:
any
|
{}
},
navContext
:
any
=
{},
navParam
:
any
=
{}):
void
{
Object
.
keys
(
navContext
).
forEach
((
name
:
any
)
=>
{
if
(
!
name
)
{
return
;
}
let
value
:
any
=
navContext
[
name
];
// 配置值置空,去掉属性
if
(
data
.
context
.
hasOwnProperty
(
name
)
&&
(
this
.
isNull
(
value
)
||
this
.
isUndefined
(
value
)))
{
delete
data
.
context
[
name
];
return
;
}
if
(
value
.
startsWith
(
'%'
)
&&
value
.
endsWith
(
'%'
))
{
const
key
:
string
=
value
.
slice
(
1
,
-
1
);
let
has_value
:
boolean
=
false
;
if
(
data
.
context
.
hasOwnProperty
(
key
))
{
has_value
=
true
;
value
=
data
.
context
[
key
];
delete
data
.
context
[
name
];
}
if
(
!
has_value
)
{
return
;
}
}
Object
.
assign
(
data
.
context
,
{
[
name
]:
value
});
});
Object
.
keys
(
navParam
).
forEach
((
name
:
any
)
=>
{
if
(
!
name
)
{
return
;
}
let
value
:
any
=
navParam
[
name
];
// 配置值置空,去掉属性
if
(
data
.
viewparams
.
hasOwnProperty
(
name
)
&&
(
this
.
isNull
(
value
)
||
this
.
isUndefined
(
value
)))
{
delete
data
.
viewparams
[
name
];
return
;
}
if
(
value
.
startsWith
(
'%'
)
&&
value
.
endsWith
(
'%'
))
{
const
key
:
string
=
value
.
slice
(
1
,
-
1
);
let
has_value
:
boolean
=
false
;
if
(
data
.
viewparams
.
hasOwnProperty
(
key
))
{
has_value
=
true
;
value
=
data
.
viewparams
[
key
];
delete
data
.
viewparams
[
name
];
}
if
(
!
has_value
)
{
return
;
}
}
Object
.
assign
(
data
.
viewparams
,
{
[
name
]:
value
});
});
}
}
}
\ No newline at end of file
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录