Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
T
TrainSys
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
苏州培训方案
TrainSys
提交
d7dfff35
提交
d7dfff35
编写于
8月 09, 2022
作者:
ibizdev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
zhujiamin 发布系统代码 [TrainSys,网页端]
上级
599220cf
变更
22
隐藏空白字符变更
内嵌
并排
正在显示
22 个修改的文件
包含
930 行增加
和
195 行删除
+930
-195
i-redirect-result.ts
...kages/ibiz-core/src/interface/common/i-redirect-result.ts
+27
-0
index.ts
app_Web/packages/ibiz-core/src/interface/common/index.ts
+2
-1
begin-node.ts
...e/src/service/data-service/logic/logic-node/begin-node.ts
+2
-0
ui-base.service.ts
...kages/ibiz-core/src/service/ui-service/ui-base.service.ts
+24
-21
view-tool.ts
app_Web/packages/ibiz-core/src/utils/ui-tools/view-tool.ts
+30
-1
app-front-action.ts
app_Web/packages/ibiz-vue/src/app-logic/app-front-action.ts
+59
-33
begin-node.ts
...z-vue/src/app-logic/appuilogic/uilogic-node/begin-node.ts
+2
-0
app-column-link.vue
...src/components/common/app-column-link/app-column-link.vue
+2
-5
app-picker.vue
.../ibiz-vue/src/components/common/app-picker/app-picker.vue
+2
-5
control-container.tsx
...ages/ibiz-vue/src/control-container/control-container.tsx
+64
-63
deredirectview-base.tsx
app_Web/packages/ibiz-vue/src/view/deredirectview-base.tsx
+3
-6
gantt-control-base.tsx
app_Web/packages/ibiz-vue/src/widgets/gantt-control-base.tsx
+2
-5
h2_table.xml
...ources/liquibase/cn/ibizlab/trainsys/DEFAULT/h2_table.xml
+8
-0
h2_table.xml
trainsys-core/src/main/resources/liquibase/h2_table.xml
+9
-1
Book.json
...bizlab/trainsys/PSMODULES/common/PSDATAENTITIES/Book.json
+360
-0
MYSQL5.json
...TIES/Book/PSDEDATAQUERIES/Default/PSDEDQCODES/MYSQL5.json
+13
-1
MYSQL5.json
...NTITIES/Book/PSDEDATAQUERIES/View/PSDEDQCODES/MYSQL5.json
+13
-1
Book.json
...bizlab/trainsys/PSSYSAPPS/Web/PSAPPDATAENTITIES/Book.json
+72
-0
Main.json
...ys/PSSYSAPPS/Web/PSAPPDATAENTITIES/Book/PSFORMS/Main.json
+68
-26
bookEditView.json
...lab/trainsys/PSSYSAPPS/Web/PSAPPDEVIEWS/bookEditView.json
+68
-26
PSSYSAPP.json
...ces/model/cn/ibizlab/trainsys/PSSYSAPPS/Web/PSSYSAPP.json
+72
-0
DEFAULT.json
...ces/model/cn/ibizlab/trainsys/PSSYSDBSCHEMES/DEFAULT.json
+28
-0
未找到文件。
app_Web/packages/ibiz-core/src/interface/common/i-redirect-result.ts
0 → 100644
浏览文件 @
d7dfff35
import
{
IParams
}
from
"./i-params"
;
export
interface
IRedirectResult
{
/**
* 原始数据
*
* @type {IParams}
* @memberof IRedirectResult
*/
srfdata
?:
IParams
;
/**
* 重定向类型
*
* @type {string}
* @memberof IRedirectResult
*/
srfstate
?:
'inwf'
|
'multiform'
|
'indextype'
|
'redirectitem'
|
'funcview'
;
/**
* 重定向计算目标值
*
* @type {string}
* @memberof IRedirectResult
*/
param
?:
string
;
}
app_Web/packages/ibiz-core/src/interface/common/index.ts
浏览文件 @
d7dfff35
...
...
@@ -5,4 +5,5 @@ export * from './i-http-response';
export
*
from
'./i-params'
;
export
*
from
'./layout-state'
;
export
*
from
'./i-loading-service'
;
export
*
from
'./i-runtime-data'
;
\ No newline at end of file
export
*
from
'./i-runtime-data'
;
export
*
from
'./i-redirect-result'
;
\ No newline at end of file
app_Web/packages/ibiz-core/src/service/data-service/logic/logic-node/begin-node.ts
浏览文件 @
d7dfff35
...
...
@@ -22,6 +22,8 @@ export class AppDeLogicBeginNode extends AppDeLogicNodeBase {
* @memberof AppDeLogicBeginNode
*/
public
async
executeNode
(
logicNode
:
IPSDELogicNode
,
actionContext
:
ActionContext
)
{
// 默认设置当前逻辑返回结果为当前默认输入参数
actionContext
.
setResult
(
actionContext
.
defaultParam
.
getReal
());
return
this
.
computeNextNodes
(
logicNode
,
actionContext
);
}
}
\ No newline at end of file
app_Web/packages/ibiz-core/src/service/ui-service/ui-base.service.ts
浏览文件 @
d7dfff35
import
{
IPSAppDataEntity
,
IPSAppDEField
,
IPSAppDEView
,
IPSAppView
,
IPSAppWF
,
IPSAppWFDE
,
IPSDEMainState
,
IPSDEMainStateOPPriv
,
IPSDEOPPriv
}
from
'@ibiz/dynamic-model-api'
;
import
{
IRunTimeData
}
from
'../../interface'
;
import
{
I
Context
,
IParams
,
IRedirectResult
,
I
RunTimeData
}
from
'../../interface'
;
import
{
LogUtil
,
ModelTool
}
from
'../../utils'
;
import
{
AppServiceBase
}
from
'../app-service/app-base.service'
;
import
{
AuthServiceHelp
}
from
'../auth-service'
;
...
...
@@ -340,27 +340,36 @@ export class UIServiceBase {
* 获取指定数据的重定向页面
*
* @param context 应用上下文
* @param
srfkey 数据主键
* @param
enableWorkflowParam 重定向视图需要处理流程中的
数据
* @param
viewparam 视图参数
* @param
data 业务
数据
* @param redirectParam 重定向视图参数 (获取数据行为和数据识别参数)
* @memberof UIServiceBase
*/
protected
async
getRDAppView
(
context
:
any
,
srfkey
:
string
,
enableWorkflowParam
:
any
,
redirectParam
:
any
=
{})
{
protected
async
getRDAppView
(
context
:
IContext
,
viewParam
:
IParams
,
data
:
IParams
=
{},
redirectParam
:
IParams
=
{}):
Promise
<
IRedirectResult
>
{
// 进行数据查询
let
returnData
:
any
=
{};
Object
.
assign
(
context
,
{
[
this
.
appDataEntity
.
codeName
.
toLowerCase
()]:
srfkey
});
let
returnData
:
IRedirectResult
=
{};
const
key
:
string
=
this
.
appDataEntity
.
codeName
.
toLowerCase
();
let
srfkey
:
string
|
null
=
null
;
if
(
data
&&
data
.
hasOwnProperty
(
key
))
{
srfkey
=
data
[
key
];
}
else
if
(
context
&&
context
[
key
])
{
srfkey
=
context
[
key
];
}
else
if
(
viewParam
&&
viewParam
[
key
])
{
srfkey
=
viewParam
[
key
];
}
Object
.
assign
(
context
,
{
[
key
]:
srfkey
});
let
result
:
any
=
{};
try
{
if
(
redirectParam
&&
redirectParam
.
action
&&
this
.
dataService
)
{
result
=
await
this
.
dataService
.
execute
(
redirectParam
.
action
,
context
);
result
=
await
this
.
dataService
.
execute
(
redirectParam
.
action
,
context
,
viewParam
);
}
else
{
result
=
await
this
.
dataService
.
execute
(
'Get'
,
context
);
result
=
await
this
.
dataService
.
execute
(
'Get'
,
context
,
viewParam
);
}
}
catch
(
error
:
any
)
{
AppServiceBase
.
getInstance
().
getNotification
().
error
(
error
?.
message
?
error
.
message
:
'获取数据异常'
);
return
;
throw
new
Error
(
error
?.
message
?
error
.
message
:
'获取数据异常'
)
;
}
const
curData
:
any
=
result
.
data
;
// 设置原始数据
...
...
@@ -370,18 +379,12 @@ export class UIServiceBase {
let
bDataInWF
:
boolean
=
false
;
// 计算数据模式
if
(
(
enableWorkflo
wParam
&&
enableWorkflo
wParam
.
srfwf
&&
this
.
InWorkflowArray
.
indexOf
(
enableWorkflo
wParam
.
srfwf
)
!==
-
1
)
(
vie
wParam
&&
vie
wParam
.
srfwf
&&
this
.
InWorkflowArray
.
indexOf
(
vie
wParam
.
srfwf
)
!==
-
1
)
)
{
bDataInWF
=
true
;
}
if
(
bDataInWF
)
{
// 设置临时组织标识(用于工作流获取多实例)
if
(
this
.
tempOrgIdDEField
&&
curData
&&
curData
[
this
.
tempOrgIdDEField
])
{
Object
.
assign
(
returnData
,
{
'srfsandboxtag'
:
curData
[
this
.
tempOrgIdDEField
]
});
}
}
let
strPDTViewParam
:
string
=
await
this
.
getDESDDEViewPDTParam
(
bDataInWF
,
curData
,
redirectParam
);
// 工作流
if
(
bDataInWF
)
{
...
...
@@ -480,10 +483,10 @@ export class UIServiceBase {
const
typeValue
=
curData
[
redirectParam
.
type
.
toLowerCase
()];
if
(
typeValue
)
{
if
(
!
Environment
.
isAppMode
)
{
let
tempParam
=
'MOBEDITVIEW:'
+
typeValue
;
let
tempParam
=
typeValue
;
return
tempParam
;
}
let
tempParam
=
'EDITVIEW:'
+
typeValue
;
let
tempParam
=
typeValue
;
return
tempParam
;
}
}
...
...
@@ -583,4 +586,4 @@ export class UIServiceBase {
(
ModelTool
.
getAppEntityKeyField
(
this
.
appDataEntity
)
as
IPSAppDEField
)?.
codeName
||
''
);
}
}
}
\ No newline at end of file
app_Web/packages/ibiz-core/src/utils/ui-tools/view-tool.ts
浏览文件 @
d7dfff35
import
{
IPSAppDERedirectView
,
IPSAppViewRef
}
from
'@ibiz/dynamic-model-api'
;
import
qs
from
'qs'
;
import
{
IParams
}
from
'../../interface'
;
import
{
I
Context
,
I
Params
}
from
'../../interface'
;
import
{
AppServiceBase
}
from
'../../service'
;
import
{
getSessionStorage
,
Util
}
from
'../util/util'
;
...
...
@@ -508,4 +508,33 @@ export class ViewTool {
return
targetViewRef
;
}
/**
* 清除父数据
*
* @static
* @param {IContext} context
* @param {IParams} viewParam
* @memberof ViewTool
*/
public
static
clearParentParams
(
context
:
IContext
,
viewParam
:
IParams
)
{
if
(
context
&&
context
.
srfparentkey
){
delete
context
.
srfparentkey
;
}
if
(
context
&&
context
.
srfparentdename
){
delete
context
.
srfparentdename
;
}
if
(
context
&&
context
.
srfparentdemapname
){
delete
context
.
srfparentdemapname
;
}
if
(
viewParam
&&
viewParam
.
srfparentkey
){
delete
viewParam
.
srfparentkey
;
}
if
(
viewParam
&&
viewParam
.
srfparentdename
){
delete
viewParam
.
srfparentdename
;
}
if
(
viewParam
&&
viewParam
.
srfparentdemapname
){
delete
viewParam
.
srfparentdemapname
;
}
}
}
\ No newline at end of file
app_Web/packages/ibiz-vue/src/app-logic/app-front-action.ts
浏览文件 @
d7dfff35
...
...
@@ -2,7 +2,6 @@ import {
getPSUIActionByModelObject
,
IPSAppDataEntity
,
IPSAppDEField
,
IPSAppDERedirectView
,
IPSAppDEUIAction
,
IPSAppDEView
,
IPSAppView
,
...
...
@@ -10,7 +9,7 @@ import {
IPSNavigateContext
,
IPSNavigateParam
}
from
'@ibiz/dynamic-model-api'
;
import
{
Http
,
IContext
,
IParams
,
LogUtil
,
ModelTool
,
StringUtil
,
UIActionTool
,
U
ti
l
}
from
'ibiz-core'
;
import
{
Http
,
IContext
,
IParams
,
LogUtil
,
ModelTool
,
StringUtil
,
UIActionTool
,
U
IServiceHelp
,
Util
,
ViewToo
l
}
from
'ibiz-core'
;
import
{
Subject
}
from
'rxjs'
;
import
{
AppGlobalService
}
from
'../app-service'
;
import
{
appPopup
}
from
'../utils'
;
...
...
@@ -297,37 +296,64 @@ export class AppFrontAction extends AppDEUIAction {
}
// 打开重定向视图
if
(
frontPSAppView
.
redirectView
)
{
const
data
=
args
[
0
];
const
field
:
IPSAppDEField
|
null
=
(
frontPSAppView
as
IPSAppDERedirectView
).
getTypePSAppDEField
();
if
(
field
)
{
const
type
=
data
[
field
.
codeName
.
toLocaleLowerCase
()];
const
appViewRefs
=
(
frontPSAppView
as
IPSAppDERedirectView
).
getRedirectPSAppViewRefs
()
!
;
let
appViewRef
:
IPSAppViewRef
|
undefined
=
appViewRefs
?.
find
(
(
appViewRef
:
IPSAppViewRef
)
=>
appViewRef
.
name
===
type
||
appViewRef
.
name
===
`EDITVIEW:
${
type
}
`
,
);
if
(
!
appViewRef
)
{
appViewRef
=
appViewRefs
?.
find
((
appViewRef
:
IPSAppViewRef
)
=>
{
const
entityName
=
frontPSAppView
.
getPSAppDataEntity
()?.
name
;
return
appViewRef
.
name
===
type
||
appViewRef
.
name
===
`
${
entityName
}
:EDITVIEW:
${
type
}
`
;
});
const
redirectUIService
:
any
=
await
UIServiceHelp
.
getInstance
().
getService
(
frontPSAppView
.
getPSAppDataEntity
(),
{
context
});
await
redirectUIService
.
loaded
();
const
redirectAppEntity
:
IPSAppDataEntity
|
null
=
frontPSAppView
.
getPSAppDataEntity
();
await
ViewTool
.
calcRedirectContext
(
context
,
args
[
0
],
redirectAppEntity
);
redirectUIService
.
getRDAppView
(
context
,
data
,
args
[
0
],
{
action
:
frontPSAppView
.
getGetDataPSAppDEAction
()?.
codeName
,
type
:
frontPSAppView
.
getTypePSAppDEField
()?.
codeName
}
).
then
(
async
(
result
:
any
)
=>
{
if
(
!
result
)
{
return
;
}
if
(
appViewRef
)
{
const
appView
:
any
=
await
appViewRef
.
getRefPSAppView
()?.
fill
();
return
this
.
oPenView
(
appView
,
actionContext
,
context
,
args
,
deUIService
,
params
,
$event
,
data
,
xData
,
_args
,
let
targetOpenViewRef
:
|
IPSAppViewRef
|
undefined
=
ViewTool
.
computeRedirectViewRef
(
frontPSAppView
,
params
,
result
);
if
(
!
targetOpenViewRef
)
{
return
;
}
let
targetOpenView
:
IPSAppView
|
null
=
targetOpenViewRef
.
getRefPSAppView
();
if
(
!
targetOpenView
)
{
return
;
}
await
targetOpenView
.
fill
(
true
);
if
(
result
&&
result
.
indextype
)
{
const
indexContext
:
any
=
Util
.
formatNavParam
(
[{
key
:
targetOpenView
?.
getPSAppDataEntity
()?.
codeName
,
rawValue
:
false
,
value
:
ModelTool
.
getContainerAppEntityCodeName
(
frontPSAppView
)
}],
true
,
);
const
_context
:
any
=
Util
.
computedNavData
(
args
[
0
],
context
,
data
,
indexContext
);
Object
.
assign
(
context
,
_context
);
}
}
if
(
targetOpenViewRef
.
getPSNavigateContexts
()
&&
(
targetOpenViewRef
.
getPSNavigateContexts
()
as
IPSNavigateContext
[]).
length
>
0
)
{
let
localContextRef
:
any
=
Util
.
formatNavParam
(
targetOpenViewRef
.
getPSNavigateContexts
(),
true
,
);
let
_context
:
any
=
Util
.
computedNavData
(
args
[
0
],
context
,
data
,
localContextRef
);
Object
.
assign
(
context
,
_context
);
}
ViewTool
.
clearParentParams
(
context
,
params
);
return
this
.
oPenView
(
targetOpenView
,
actionContext
,
context
,
args
,
deUIService
,
params
,
$event
,
data
,
xData
,
_args
,
);
})
}
else
if
(
!
frontPSAppView
.
openMode
||
frontPSAppView
.
openMode
==
'INDEXVIEWTAB'
)
{
const
routePath
=
actionContext
.
$viewTool
.
buildUpRoutePath
(
actionContext
.
$route
,
...
...
@@ -487,11 +513,11 @@ export class AppFrontAction extends AppDEUIAction {
if
(
actionContext
.
context
&&
actionContext
.
context
.
srfparentdename
&&
actionContext
.
context
.
srfparentkey
)
{
Object
.
assign
(
tempContext
,
{
srfparentdename
:
actionContext
.
context
.
srfparentdename
});
Object
.
assign
(
tempContext
,
{
srfparentkey
:
actionContext
.
context
.
srfparentkey
});
}
else
{
if
(
tempContext
.
srfparentdename
)
{
}
else
{
if
(
tempContext
.
srfparentdename
)
{
delete
tempContext
.
srfparentdename
;
}
if
(
tempContext
.
srfparentkey
)
{
if
(
tempContext
.
srfparentkey
)
{
delete
tempContext
.
srfparentkey
;
}
}
...
...
app_Web/packages/ibiz-vue/src/app-logic/appuilogic/uilogic-node/begin-node.ts
浏览文件 @
d7dfff35
...
...
@@ -21,6 +21,8 @@ export class AppUILogicBeginNode extends AppUILogicNodeBase {
* @memberof AppUILogicBeginNode
*/
public
async
executeNode
(
logicNode
:
IPSAppUILogic
,
actionContext
:
UIActionContext
)
{
// 默认设置当前逻辑返回结果为当前默认输入参数
actionContext
.
setResult
(
actionContext
.
defaultParam
.
getReal
());
return
this
.
computeNextNodes
(
logicNode
,
actionContext
);
}
}
\ No newline at end of file
app_Web/packages/ibiz-vue/src/components/common/app-column-link/app-column-link.vue
浏览文件 @
d7dfff35
...
...
@@ -250,8 +250,8 @@ export default class AppColumnLink extends Vue {
await
ViewTool
.
calcRedirectContext
(
context
,
this
.
data
,
redirectAppEntity
);
let
result
=
await
redirectUIService
.
getRDAppView
(
context
,
this
.
data
[
this
.
deKeyField
]
?
this
.
data
[
this
.
deKeyField
]
:
this
.
data
[
this
.
valueitem
as
string
],
params
,
this
.
data
,
{
action
:
targetRedirectView
.
getGetDataPSAppDEAction
()?.
codeName
,
type
:
targetRedirectView
.
getTypePSAppDEField
()?.
codeName
}
);
if
(
!
result
)
{
...
...
@@ -269,15 +269,12 @@ export default class AppColumnLink extends Vue {
let
_context
:
any
=
Util
.
computedNavData
(
this
.
data
,
context
,
params
,
localContextRef
);
Object
.
assign
(
context
,
_context
);
}
if
(
result
&&
result
.
hasOwnProperty
(
'srfsandboxtag'
))
{
Object
.
assign
(
context
,
{
srfsandboxtag
:
result
[
'srfsandboxtag'
]
});
Object
.
assign
(
params
,
{
srfsandboxtag
:
result
[
'srfsandboxtag'
]
});
}
let
targetOpenView
:
IPSAppView
|
null
=
targetOpenViewRef
.
getRefPSAppView
();
if
(
!
targetOpenView
)
{
return
;
}
await
targetOpenView
.
fill
(
true
);
ViewTool
.
clearParentParams
(
context
,
params
);
const
view
:
any
=
{
viewname
:
'app-view-shell'
,
height
:
targetOpenView
.
height
,
...
...
app_Web/packages/ibiz-vue/src/components/common/app-picker/app-picker.vue
浏览文件 @
d7dfff35
...
...
@@ -773,7 +773,7 @@ export default class AppPicker extends Vue {
await
redirectUIService
.
loaded
();
const
redirectAppEntity
:
IPSAppDataEntity
|
null
=
targetRedirectView
.
getPSAppDataEntity
();
await
ViewTool
.
calcRedirectContext
(
context
,
this
.
data
,
redirectAppEntity
);
let
result
=
await
redirectUIService
.
getRDAppView
(
context
,
this
.
data
[
'srfkey'
],
params
,
{
let
result
=
await
redirectUIService
.
getRDAppView
(
context
,
params
,
this
.
data
,
{
action
:
targetRedirectView
.
getGetDataPSAppDEAction
()?.
codeName
,
type
:
targetRedirectView
.
getTypePSAppDEField
()?.
codeName
,
});
...
...
@@ -796,15 +796,12 @@ export default class AppPicker extends Vue {
let
_context
:
any
=
Util
.
computedNavData
(
this
.
data
,
context
,
params
,
localContextRef
);
Object
.
assign
(
context
,
_context
);
}
if
(
result
&&
result
.
hasOwnProperty
(
'srfsandboxtag'
))
{
Object
.
assign
(
context
,
{
srfsandboxtag
:
result
[
'srfsandboxtag'
]
});
Object
.
assign
(
params
,
{
srfsandboxtag
:
result
[
'srfsandboxtag'
]
});
}
let
targetOpenView
:
IPSAppView
|
null
=
targetOpenViewRef
.
getRefPSAppView
();
if
(
!
targetOpenView
)
{
return
;
}
await
targetOpenView
.
fill
(
true
);
ViewTool
.
clearParentParams
(
context
,
params
);
const
view
:
any
=
{
viewname
:
'app-view-shell'
,
height
:
targetOpenView
.
height
,
...
...
app_Web/packages/ibiz-vue/src/control-container/control-container.tsx
浏览文件 @
d7dfff35
...
...
@@ -985,15 +985,19 @@ export class ControlContainer extends Vue {
) {
return;
}
Object.assign(params, this.viewparams);
const targetViewparams: IParams = {};
if (params && Object.keys(params).length > 0) {
Object.assign(targetViewparams, params);
}
Object.assign(targetViewparams, data);
const redirectUIService: any = await UIServiceHelp.getInstance().getService(targetRedirectView.getPSAppDataEntity(), { context: this.context });
await redirectUIService.loaded();
const redirectAppEntity: IPSAppDataEntity | null = targetRedirectView.getPSAppDataEntity();
await ViewTool.calcRedirectContext(tempContext, fullargs[0], redirectAppEntity);
redirectUIService.getRDAppView(
tempContext,
args[0][(ModelTool.getContainerAppEntityCodeName(this.containerModel) as string)?.toLowerCase()]
,
params
,
targetViewparams
,
args[0]
,
{ action: targetRedirectView.getGetDataPSAppDEAction()?.codeName, type: targetRedirectView.getTypePSAppDEField()?.codeName }
)
.then(async (result: any) => {
...
...
@@ -1002,7 +1006,7 @@ export class ControlContainer extends Vue {
}
let targetOpenViewRef:
| IPSAppViewRef
| undefined = ViewTool.computeRedirectViewRef(targetRedirectView,
params,
result);
| undefined = ViewTool.computeRedirectViewRef(targetRedirectView,
params,
result);
if (!targetOpenViewRef) {
return;
}
...
...
@@ -1030,10 +1034,7 @@ export class ControlContainer extends Vue {
let _context: any = Util.computedNavData(fullargs[0], tempContext, data, localContextRef);
Object.assign(tempContext, _context);
}
if (result && result.hasOwnProperty('srfsandboxtag')) {
Object.assign(tempContext, { 'srfsandboxtag': result['srfsandboxtag'] });
Object.assign(data, { 'srfsandboxtag': result['srfsandboxtag'] });
}
ViewTool.clearParentParams(tempContext,data);
const view: any = {
viewname: 'app-view-shell',
height: targetOpenView.height,
...
...
@@ -1321,65 +1322,65 @@ export class ControlContainer extends Vue {
// }
// } else {
const getActiveField: Function = (path: string) => {
const activeAppDER = minorPSAppDERSs.find((item: IPSAppDERS) => {
return (item.getMajorPSAppDataEntity() as IPSAppDataEntity).modelPath == path;
})
return activeAppDER?.getParentPSAppDEField();
const getActiveField: Function = (path: string) => {
const activeAppDER = minorPSAppDERSs.find((item: IPSAppDERS) => {
return (item.getMajorPSAppDataEntity() as IPSAppDataEntity).modelPath == path;
})
return activeAppDER?.getParentPSAppDEField();
}
result.datas.forEach((record: any) => {
let tempParam: any = {};
if (otherView) {
const key = (getActiveField((otherView.getPSAppDataEntity() as IPSAppDataEntity).modelPath))?.codeName;
if (key) {
tempParam[key] = this.context['srfparentkey'];
}
}
result.datas.forEach((record: any) => {
let tempParam: any = {};
if (otherView) {
const key = (getActiveField((otherView.getPSAppDataEntity() as IPSAppDataEntity).modelPath))?.codeName;
if (key) {
tempParam[key] = this.context['srfparentkey'];
}
if (getActiveField((openView.getPSAppDataEntity() as IPSAppDataEntity).modelPath)) {
tempParam[
(getActiveField((openView.getPSAppDataEntity() as IPSAppDataEntity).modelPath))?.codeName.toLowerCase()
] = record.srfkey;
} else {
tempParam[
(ModelTool.getAppEntityKeyField(
openView?.getPSAppDataEntity() as IPSAppDataEntity,
) as IPSAppDEField)?.codeName.toLowerCase()
] = record.srfkey;
}
requestParam.push(tempParam);
});
let promises: any;
const entityCodeName = (ModelTool.getAppEntityKeyField(
openView?.getPSAppDataEntity() as IPSAppDataEntity,
) as IPSAppDEField)?.codeName.toLowerCase();
if (requestParam && requestParam.length) {
const promiseArr: any[] = [];
requestParam.forEach((param: any) => {
let _context = Util.deepCopy(this.context);
Object.assign(_context, { [entityCodeName]: param[entityCodeName] });
if (this.viewparams && Object.keys(this.viewparams).length) {
Object.assign(param, this.viewparams);
}
if (getActiveField((openView.getPSAppDataEntity() as IPSAppDataEntity).modelPath)) {
tempParam[
(getActiveField((openView.getPSAppDataEntity() as IPSAppDataEntity).modelPath))?.codeName.toLowerCase()
] = record.srfkey;
promiseArr.push(this.appEntityService.execute('Create', _context, param));
});
promises = Promise.all(promiseArr);
}
if (promises) {
promises.then((response: any) => {
if ((!response || response.status !== 200) && !Array.isArray(response)) {
this.$throw(this.$t('app.warn.batcherror'), 'newdata');
return;
} else {
tempParam[
(ModelTool.getAppEntityKeyField(
openView?.getPSAppDataEntity() as IPSAppDataEntity,
) as IPSAppDEField)?.codeName.toLowerCase()
] = record.srfkey;
this.$success(this.$t('app.commonwords.batchaddsuccess'), 'newdata');
}
requestParam.push(tempParam);
});
let promises: any;
const entityCodeName = (ModelTool.getAppEntityKeyField(
openView?.getPSAppDataEntity() as IPSAppDataEntity,
) as IPSAppDEField)?.codeName.toLowerCase();
if (requestParam && requestParam.length) {
const promiseArr: any[] = [];
requestParam.forEach((param: any) => {
let _context = Util.deepCopy(this.context);
Object.assign(_context, { [entityCodeName]: param[entityCodeName] });
if (this.viewparams && Object.keys(this.viewparams).length) {
Object.assign(param, this.viewparams);
}
promiseArr.push(this.appEntityService.execute('Create',_context, param));
});
promises = Promise.all(promiseArr);
}
if (promises) {
promises.then((response: any) => {
if ((!response || response.status !== 200) && !Array.isArray(response)) {
this.$throw(this.$t('app.warn.batcherror'), 'newdata');
return;
} else {
this.$success(this.$t('app.commonwords.batchaddsuccess'), 'newdata');
}
if (!xData || !(xData.refresh instanceof Function)) {
return;
}
xData.refresh(result.datas);
}).catch((error: any) => {
this.$throw(error && error.data && error.data.message ? error.data.message : this.$t('app.warn.batcherror'));
})
}
if (!xData || !(xData.refresh instanceof Function)) {
return;
}
xData.refresh(result.datas);
}).catch((error: any) => {
this.$throw(error && error.data && error.data.message ? error.data.message : this.$t('app.warn.batcherror'));
})
}
// }
});
} else if (viewNewAppUIlogic.batchAddOnly) {
...
...
app_Web/packages/ibiz-vue/src/view/deredirectview-base.tsx
浏览文件 @
d7dfff35
...
...
@@ -97,7 +97,7 @@ export class DeRedirectViewBase extends MainViewBase implements RedirectViewInte
});
}
}
this
.
appUIService
.
getRDAppView
(
this
.
context
,
this
.
context
[
this
.
appDeCodeName
.
toLowerCase
()],
localParams
,
dataSetParams
).
then
(
async
(
result
:
any
)
=>
{
this
.
appUIService
.
getRDAppView
(
this
.
context
,
localParams
,
{}
,
dataSetParams
).
then
(
async
(
result
:
any
)
=>
{
if
(
!
result
)
{
return
;
}
...
...
@@ -143,16 +143,13 @@ export class DeRedirectViewBase extends MainViewBase implements RedirectViewInte
Object
.
assign
(
tempContext
,
{
srfdynainstid
:
curDynaInst
.
id
});
}
}
if
(
result
&&
result
.
hasOwnProperty
(
'srfsandboxtag'
))
{
Object
.
assign
(
tempContext
,
{
'srfsandboxtag'
:
result
[
'srfsandboxtag'
]
});
Object
.
assign
(
tempViewParams
,
{
'srfsandboxtag'
:
result
[
'srfsandboxtag'
]
});
}
if
(
targetOpenViewRef
.
getRefPSAppView
())
{
let
targetOpenView
:
IPSAppView
|
null
=
targetOpenViewRef
.
getRefPSAppView
();
if
(
!
targetOpenView
)
{
return
;
}
await
targetOpenView
.
fill
(
true
);
ViewTool
.
clearParentParams
(
tempContext
,
tempViewParams
);
const
view
:
any
=
{
viewname
:
'app-view-shell'
,
height
:
targetOpenView
.
height
,
...
...
@@ -261,4 +258,4 @@ export class DeRedirectViewBase extends MainViewBase implements RedirectViewInte
}
}
}
}
\ No newline at end of file
app_Web/packages/ibiz-vue/src/widgets/gantt-control-base.tsx
浏览文件 @
d7dfff35
...
...
@@ -547,8 +547,8 @@ export class GanttControlBase extends MDControlBase implements GanttControlInter
await
ViewTool
.
calcRedirectContext
(
tempContext
,
fullargs
[
0
],
redirectAppEntity
);
redirectUIService
.
getRDAppView
(
tempContext
,
args
[
0
][
this
.
appDeCodeName
.
toLowerCase
()],
params
,
args
[
0
],
{
action
:
targetRedirectView
.
getGetDataPSAppDEAction
()?.
codeName
,
type
:
targetRedirectView
.
getTypePSAppDEField
()?.
codeName
}
)
.
then
(
async
(
result
:
any
)
=>
{
...
...
@@ -572,15 +572,12 @@ export class GanttControlBase extends MDControlBase implements GanttControlInter
let
_context
:
any
=
Util
.
computedNavData
(
fullargs
[
0
],
tempContext
,
data
,
localContextRef
);
Object
.
assign
(
tempContext
,
_context
);
}
if
(
result
&&
result
.
hasOwnProperty
(
'srfsandboxtag'
))
{
Object
.
assign
(
tempContext
,
{
'srfsandboxtag'
:
result
[
'srfsandboxtag'
]
});
Object
.
assign
(
data
,
{
'srfsandboxtag'
:
result
[
'srfsandboxtag'
]
});
}
let
targetOpenView
:
IPSAppView
|
null
=
targetOpenViewRef
.
getRefPSAppView
();
if
(
!
targetOpenView
)
{
return
;
}
await
targetOpenView
.
fill
();
ViewTool
.
clearParentParams
(
tempContext
,
data
);
const
view
:
any
=
{
viewname
:
'app-view-shell'
,
height
:
targetOpenView
.
height
,
...
...
trainsys-core/src/main/resources/liquibase/cn/ibizlab/trainsys/DEFAULT/h2_table.xml
浏览文件 @
d7dfff35
...
...
@@ -15,6 +15,14 @@
</column>
<column
name=
"DEPTID"
remarks=
"组织部门标识"
type=
"VARCHAR(60)"
>
</column>
<column
name=
"FIELD"
remarks=
"属性"
type=
"VARCHAR(100)"
>
</column>
<column
name=
"FIELD2"
remarks=
"属性2"
type=
"VARCHAR(100)"
>
</column>
<column
name=
"FIELD3"
remarks=
"属性3"
type=
"VARCHAR(100)"
>
</column>
<column
name=
"FIELD4"
remarks=
"属性4"
type=
"VARCHAR(100)"
>
</column>
<column
name=
"ORGID"
remarks=
"组织机构标识"
type=
"VARCHAR(60)"
>
</column>
<column
name=
"TYPE"
remarks=
"类型"
type=
"VARCHAR(100)"
>
...
...
trainsys-core/src/main/resources/liquibase/h2_table.xml
浏览文件 @
d7dfff35
...
...
@@ -2,7 +2,7 @@
<databaseChangeLog
xmlns=
"http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext=
"http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"
>
<!--输出实体[BOOK]数据结构 -->
<changeSet
author=
"root"
id=
"tab-book-
19
-1"
>
<changeSet
author=
"root"
id=
"tab-book-
30
-1"
>
<createTable
tableName=
"T_BOOK"
>
<column
name=
"BOOKNAME"
remarks=
""
type=
"VARCHAR(200)"
>
</column>
...
...
@@ -23,6 +23,14 @@
</column>
<column
name=
"TYPE"
remarks=
""
type=
"VARCHAR(100)"
>
</column>
<column
name=
"FIELD"
remarks=
""
type=
"VARCHAR(100)"
>
</column>
<column
name=
"FIELD2"
remarks=
""
type=
"VARCHAR(100)"
>
</column>
<column
name=
"FIELD3"
remarks=
""
type=
"VARCHAR(100)"
>
</column>
<column
name=
"FIELD4"
remarks=
""
type=
"VARCHAR(100)"
>
</column>
</createTable>
</changeSet>
...
...
trainsys-core/src/main/resources/model/cn/ibizlab/trainsys/PSMODULES/common/PSDATAENTITIES/Book.json
浏览文件 @
d7dfff35
...
...
@@ -210,6 +210,18 @@
},
{
"name"
:
"TYPE"
,
"codeName"
:
"Type"
},
{
"name"
:
"FIELD"
,
"codeName"
:
"Field"
},
{
"name"
:
"FIELD2"
,
"codeName"
:
"Field2"
},
{
"name"
:
"FIELD3"
,
"codeName"
:
"Field3"
},
{
"name"
:
"FIELD4"
,
"codeName"
:
"Field4"
}
],
"codeName"
:
"Table"
,
"dynaModelFilePath"
:
"PSMODULES/common/PSDATAENTITIES/Book/PSDETABLES/Table.json"
,
...
...
@@ -1136,6 +1148,310 @@
"stdDataType"
:
25
,
"stringLength"
:
100
,
"valueFormat"
:
"%1$s"
},
{
"getAllPSDEFDTColumns"
:
[
{
"columnName"
:
"FIELD"
,
"dBType"
:
"MYSQL5"
,
"name"
:
"FIELD"
,
"queryCodeExp"
:
"t1.`FIELD`"
,
"standardColumnName"
:
"`FIELD`"
}
],
"getAllPSDEFUIModes"
:
[
{
"codeName"
:
"Default"
,
"name"
:
"[FIELD][属性]"
,
"getPSDEFFormItem"
:
{
"codeName"
:
"Default"
,
"editorType"
:
"TEXTBOX"
,
"name"
:
"[FIELD][属性]"
,
"stringLength"
:
100
,
"uIMode"
:
"DEFAULT"
},
"type"
:
"DEFAULT"
},
{
"codeName"
:
"MobileDefault"
,
"name"
:
"[FIELD][属性]移动端默认"
,
"getPSDEFFormItem"
:
{
"codeName"
:
"MobileDefault"
,
"editorType"
:
"MOBTEXT"
,
"name"
:
"[FIELD][属性]移动端默认"
,
"stringLength"
:
100
,
"uIMode"
:
"MOBILEDEFAULT"
,
"mobileMode"
:
true
},
"type"
:
"MOBILEDEFAULT"
,
"mobileMode"
:
true
}
],
"getAllPSDEFValueRules"
:
[
{
"codeName"
:
"Default"
,
"name"
:
"默认规则"
,
"getPSDEFVRGroupCondition"
:
{
"condOp"
:
"AND"
,
"condType"
:
"GROUP"
,
"name"
:
"默认组"
,
"getPSDEFVRConditions"
:
[
{
"condType"
:
"STRINGLENGTH"
,
"dEFName"
:
"FIELD"
,
"maxValue"
:
100
,
"name"
:
"默认字符串长度"
,
"ruleInfo"
:
"内容长度必须小于等于[100]"
,
"includeMaxValue"
:
true
,
"includeMinValue"
:
false
,
"keyCond"
:
true
}
],
"ruleInfo"
:
"内容长度必须小于等于[100]"
},
"ruleInfo"
:
"内容长度必须小于等于[100]"
,
"checkDefault"
:
true
,
"defaultMode"
:
true
,
"enableBackend"
:
true
,
"enableFront"
:
true
}
],
"codeName"
:
"Field"
,
"dEFType"
:
1
,
"dataType"
:
"TEXT"
,
"importOrder"
:
1000
,
"length"
:
100
,
"logicName"
:
"属性"
,
"name"
:
"FIELD"
,
"getPSDEDBTable"
:
{
"modelref"
:
true
,
"path"
:
"PSMODULES/common/PSDATAENTITIES/Book/PSDETABLES/Table.json"
},
"getPSSysDBColumn"
:
{
"modelref"
:
true
,
"id"
:
"FIELD"
},
"stdDataType"
:
25
,
"stringLength"
:
100
,
"valueFormat"
:
"%1$s"
},
{
"getAllPSDEFDTColumns"
:
[
{
"columnName"
:
"FIELD2"
,
"dBType"
:
"MYSQL5"
,
"name"
:
"FIELD2"
,
"queryCodeExp"
:
"t1.`FIELD2`"
,
"standardColumnName"
:
"`FIELD2`"
}
],
"getAllPSDEFUIModes"
:
[
{
"codeName"
:
"Default"
,
"name"
:
"[FIELD2][属性2]"
,
"getPSDEFFormItem"
:
{
"codeName"
:
"Default"
,
"editorType"
:
"TEXTBOX"
,
"name"
:
"[FIELD2][属性2]"
,
"stringLength"
:
100
,
"uIMode"
:
"DEFAULT"
},
"type"
:
"DEFAULT"
},
{
"codeName"
:
"MobileDefault"
,
"name"
:
"[FIELD2][属性2]移动端默认"
,
"getPSDEFFormItem"
:
{
"codeName"
:
"MobileDefault"
,
"editorType"
:
"MOBTEXT"
,
"name"
:
"[FIELD2][属性2]移动端默认"
,
"stringLength"
:
100
,
"uIMode"
:
"MOBILEDEFAULT"
,
"mobileMode"
:
true
},
"type"
:
"MOBILEDEFAULT"
,
"mobileMode"
:
true
}
],
"getAllPSDEFValueRules"
:
[
{
"codeName"
:
"Default"
,
"name"
:
"默认规则"
,
"getPSDEFVRGroupCondition"
:
{
"condOp"
:
"AND"
,
"condType"
:
"GROUP"
,
"name"
:
"默认组"
,
"getPSDEFVRConditions"
:
[
{
"condType"
:
"STRINGLENGTH"
,
"dEFName"
:
"FIELD2"
,
"maxValue"
:
100
,
"name"
:
"默认字符串长度"
,
"ruleInfo"
:
"内容长度必须小于等于[100]"
,
"includeMaxValue"
:
true
,
"includeMinValue"
:
false
,
"keyCond"
:
true
}
],
"ruleInfo"
:
"内容长度必须小于等于[100]"
},
"ruleInfo"
:
"内容长度必须小于等于[100]"
,
"checkDefault"
:
true
,
"defaultMode"
:
true
,
"enableBackend"
:
true
,
"enableFront"
:
true
}
],
"codeName"
:
"Field2"
,
"dEFType"
:
1
,
"dataType"
:
"TEXT"
,
"importOrder"
:
1000
,
"length"
:
100
,
"logicName"
:
"属性2"
,
"name"
:
"FIELD2"
,
"getPSDEDBTable"
:
{
"modelref"
:
true
,
"path"
:
"PSMODULES/common/PSDATAENTITIES/Book/PSDETABLES/Table.json"
},
"getPSSysDBColumn"
:
{
"modelref"
:
true
,
"id"
:
"FIELD2"
},
"stdDataType"
:
25
,
"stringLength"
:
100
,
"valueFormat"
:
"%1$s"
},
{
"getAllPSDEFDTColumns"
:
[
{
"columnName"
:
"FIELD3"
,
"dBType"
:
"MYSQL5"
,
"name"
:
"FIELD3"
,
"queryCodeExp"
:
"t1.`FIELD3`"
,
"standardColumnName"
:
"`FIELD3`"
}
],
"getAllPSDEFUIModes"
:
[
{
"codeName"
:
"Default"
,
"name"
:
"[FIELD3][属性3]"
,
"getPSDEFFormItem"
:
{
"codeName"
:
"Default"
,
"editorType"
:
"TEXTBOX"
,
"name"
:
"[FIELD3][属性3]"
,
"stringLength"
:
100
,
"uIMode"
:
"DEFAULT"
},
"type"
:
"DEFAULT"
},
{
"codeName"
:
"MobileDefault"
,
"name"
:
"[FIELD3][属性3]移动端默认"
,
"getPSDEFFormItem"
:
{
"codeName"
:
"MobileDefault"
,
"editorType"
:
"MOBTEXT"
,
"name"
:
"[FIELD3][属性3]移动端默认"
,
"stringLength"
:
100
,
"uIMode"
:
"MOBILEDEFAULT"
,
"mobileMode"
:
true
},
"type"
:
"MOBILEDEFAULT"
,
"mobileMode"
:
true
}
],
"getAllPSDEFValueRules"
:
[
{
"codeName"
:
"Default"
,
"name"
:
"默认规则"
,
"getPSDEFVRGroupCondition"
:
{
"condOp"
:
"AND"
,
"condType"
:
"GROUP"
,
"name"
:
"默认组"
,
"getPSDEFVRConditions"
:
[
{
"condType"
:
"STRINGLENGTH"
,
"dEFName"
:
"FIELD3"
,
"maxValue"
:
100
,
"name"
:
"默认字符串长度"
,
"ruleInfo"
:
"内容长度必须小于等于[100]"
,
"includeMaxValue"
:
true
,
"includeMinValue"
:
false
,
"keyCond"
:
true
}
],
"ruleInfo"
:
"内容长度必须小于等于[100]"
},
"ruleInfo"
:
"内容长度必须小于等于[100]"
,
"checkDefault"
:
true
,
"defaultMode"
:
true
,
"enableBackend"
:
true
,
"enableFront"
:
true
}
],
"codeName"
:
"Field3"
,
"dEFType"
:
1
,
"dataType"
:
"TEXT"
,
"importOrder"
:
1000
,
"length"
:
100
,
"logicName"
:
"属性3"
,
"name"
:
"FIELD3"
,
"getPSDEDBTable"
:
{
"modelref"
:
true
,
"path"
:
"PSMODULES/common/PSDATAENTITIES/Book/PSDETABLES/Table.json"
},
"getPSSysDBColumn"
:
{
"modelref"
:
true
,
"id"
:
"FIELD3"
},
"stdDataType"
:
25
,
"stringLength"
:
100
,
"valueFormat"
:
"%1$s"
},
{
"getAllPSDEFDTColumns"
:
[
{
"columnName"
:
"FIELD4"
,
"dBType"
:
"MYSQL5"
,
"name"
:
"FIELD4"
,
"queryCodeExp"
:
"t1.`FIELD4`"
,
"standardColumnName"
:
"`FIELD4`"
}
],
"getAllPSDEFUIModes"
:
[
{
"codeName"
:
"MobileDefault"
,
"name"
:
"[FIELD4][属性4]移动端默认"
,
"getPSDEFFormItem"
:
{
"codeName"
:
"MobileDefault"
,
"editorType"
:
"MOBTEXT"
,
"name"
:
"[FIELD4][属性4]移动端默认"
,
"stringLength"
:
100
,
"uIMode"
:
"MOBILEDEFAULT"
,
"mobileMode"
:
true
},
"type"
:
"MOBILEDEFAULT"
,
"mobileMode"
:
true
},
{
"codeName"
:
"Default"
,
"name"
:
"[FIELD4][属性4]"
,
"getPSDEFFormItem"
:
{
"codeName"
:
"Default"
,
"editorType"
:
"TEXTBOX"
,
"name"
:
"[FIELD4][属性4]"
,
"stringLength"
:
100
,
"uIMode"
:
"DEFAULT"
},
"type"
:
"DEFAULT"
}
],
"getAllPSDEFValueRules"
:
[
{
"codeName"
:
"Default"
,
"name"
:
"默认规则"
,
"getPSDEFVRGroupCondition"
:
{
"condOp"
:
"AND"
,
"condType"
:
"GROUP"
,
"name"
:
"默认组"
,
"getPSDEFVRConditions"
:
[
{
"condType"
:
"STRINGLENGTH"
,
"dEFName"
:
"FIELD4"
,
"maxValue"
:
100
,
"name"
:
"默认字符串长度"
,
"ruleInfo"
:
"内容长度必须小于等于[100]"
,
"includeMaxValue"
:
true
,
"includeMinValue"
:
false
,
"keyCond"
:
true
}
],
"ruleInfo"
:
"内容长度必须小于等于[100]"
},
"ruleInfo"
:
"内容长度必须小于等于[100]"
,
"checkDefault"
:
true
,
"defaultMode"
:
true
,
"enableBackend"
:
true
,
"enableFront"
:
true
}
],
"codeName"
:
"Field4"
,
"dEFType"
:
1
,
"dataType"
:
"TEXT"
,
"importOrder"
:
1000
,
"length"
:
100
,
"logicName"
:
"属性4"
,
"name"
:
"FIELD4"
,
"getPSDEDBTable"
:
{
"modelref"
:
true
,
"path"
:
"PSMODULES/common/PSDATAENTITIES/Book/PSDETABLES/Table.json"
},
"getPSSysDBColumn"
:
{
"modelref"
:
true
,
"id"
:
"FIELD4"
},
"stdDataType"
:
25
,
"stringLength"
:
100
,
"valueFormat"
:
"%1$s"
}
],
"getAllPSDEMethodDTOs"
:
[
{
"name"
:
"BookDTO"
,
...
...
@@ -1198,6 +1514,50 @@
"stdDataType"
:
25
,
"stringLength"
:
60
,
"type"
:
"SIMPLE"
},
{
"logicName"
:
"属性"
,
"name"
:
"Field"
,
"getPSDEField"
:
{
"name"
:
"FIELD"
,
"codeName"
:
"Field"
},
"sourceType"
:
"DEFIELD"
,
"stdDataType"
:
25
,
"stringLength"
:
100
,
"type"
:
"SIMPLE"
},
{
"logicName"
:
"属性2"
,
"name"
:
"Field2"
,
"getPSDEField"
:
{
"name"
:
"FIELD2"
,
"codeName"
:
"Field2"
},
"sourceType"
:
"DEFIELD"
,
"stdDataType"
:
25
,
"stringLength"
:
100
,
"type"
:
"SIMPLE"
},
{
"logicName"
:
"属性3"
,
"name"
:
"Field3"
,
"getPSDEField"
:
{
"name"
:
"FIELD3"
,
"codeName"
:
"Field3"
},
"sourceType"
:
"DEFIELD"
,
"stdDataType"
:
25
,
"stringLength"
:
100
,
"type"
:
"SIMPLE"
},
{
"logicName"
:
"属性4"
,
"name"
:
"Field4"
,
"getPSDEField"
:
{
"name"
:
"FIELD4"
,
"codeName"
:
"Field4"
},
"sourceType"
:
"DEFIELD"
,
"stdDataType"
:
25
,
"stringLength"
:
100
,
"type"
:
"SIMPLE"
},
{
"logicName"
:
"组织机构标识"
,
"name"
:
"OrgId"
,
...
...
trainsys-core/src/main/resources/model/cn/ibizlab/trainsys/PSMODULES/common/PSDATAENTITIES/Book/PSDEDATAQUERIES/Default/PSDEDQCODES/MYSQL5.json
浏览文件 @
d7dfff35
...
...
@@ -16,6 +16,18 @@
},
{
"expression"
:
"t1.`DEPTID`"
,
"name"
:
"DEPTID"
},
{
"expression"
:
"t1.`FIELD`"
,
"name"
:
"FIELD"
},
{
"expression"
:
"t1.`FIELD2`"
,
"name"
:
"FIELD2"
},
{
"expression"
:
"t1.`FIELD3`"
,
"name"
:
"FIELD3"
},
{
"expression"
:
"t1.`FIELD4`"
,
"name"
:
"FIELD4"
},
{
"expression"
:
"t1.`ORGID`"
,
"name"
:
"ORGID"
...
...
@@ -29,6 +41,6 @@
"expression"
:
"t1.`UPDATEMAN`"
,
"name"
:
"UPDATEMAN"
}
],
"queryCode"
:
"SELECT
\n
t1.`BOOKID`,
\n
t1.`BOOKNAME`,
\n
t1.`CREATEDATE`,
\n
t1.`CREATEMAN`,
\n
t1.`DEPTID`,
\n
t1.`ORGID`,
\n
t1.`TYPE`,
\n
t1.`UPDATEDATE`,
\n
t1.`UPDATEMAN`
\n
FROM `T_BOOK` t1
\n
"
,
"queryCode"
:
"SELECT
\n
t1.`BOOKID`,
\n
t1.`BOOKNAME`,
\n
t1.`CREATEDATE`,
\n
t1.`CREATEMAN`,
\n
t1.`DEPTID`,
\n
t1.`
FIELD`,
\n
t1.`FIELD2`,
\n
t1.`FIELD3`,
\n
t1.`FIELD4`,
\n
t1.`
ORGID`,
\n
t1.`TYPE`,
\n
t1.`UPDATEDATE`,
\n
t1.`UPDATEMAN`
\n
FROM `T_BOOK` t1
\n
"
,
"id"
:
"PSMODULES/common/PSDATAENTITIES/Book/PSDEDATAQUERIES/Default/PSDEDQCODES/MYSQL5.json"
}
\ No newline at end of file
trainsys-core/src/main/resources/model/cn/ibizlab/trainsys/PSMODULES/common/PSDATAENTITIES/Book/PSDEDATAQUERIES/View/PSDEDQCODES/MYSQL5.json
浏览文件 @
d7dfff35
...
...
@@ -16,6 +16,18 @@
},
{
"expression"
:
"t1.`DEPTID`"
,
"name"
:
"DEPTID"
},
{
"expression"
:
"t1.`FIELD`"
,
"name"
:
"FIELD"
},
{
"expression"
:
"t1.`FIELD2`"
,
"name"
:
"FIELD2"
},
{
"expression"
:
"t1.`FIELD3`"
,
"name"
:
"FIELD3"
},
{
"expression"
:
"t1.`FIELD4`"
,
"name"
:
"FIELD4"
},
{
"expression"
:
"t1.`ORGID`"
,
"name"
:
"ORGID"
...
...
@@ -29,6 +41,6 @@
"expression"
:
"t1.`UPDATEMAN`"
,
"name"
:
"UPDATEMAN"
}
],
"queryCode"
:
"SELECT
\n
t1.`BOOKID`,
\n
t1.`BOOKNAME`,
\n
t1.`CREATEDATE`,
\n
t1.`CREATEMAN`,
\n
t1.`DEPTID`,
\n
t1.`ORGID`,
\n
t1.`TYPE`,
\n
t1.`UPDATEDATE`,
\n
t1.`UPDATEMAN`
\n
FROM `T_BOOK` t1
\n
"
,
"queryCode"
:
"SELECT
\n
t1.`BOOKID`,
\n
t1.`BOOKNAME`,
\n
t1.`CREATEDATE`,
\n
t1.`CREATEMAN`,
\n
t1.`DEPTID`,
\n
t1.`
FIELD`,
\n
t1.`FIELD2`,
\n
t1.`FIELD3`,
\n
t1.`FIELD4`,
\n
t1.`
ORGID`,
\n
t1.`TYPE`,
\n
t1.`UPDATEDATE`,
\n
t1.`UPDATEMAN`
\n
FROM `T_BOOK` t1
\n
"
,
"id"
:
"PSMODULES/common/PSDATAENTITIES/Book/PSDEDATAQUERIES/View/PSDEDQCODES/MYSQL5.json"
}
\ No newline at end of file
trainsys-core/src/main/resources/model/cn/ibizlab/trainsys/PSSYSAPPS/Web/PSAPPDATAENTITIES/Book.json
浏览文件 @
d7dfff35
...
...
@@ -283,6 +283,30 @@
"name"
:
"TYPE"
,
"stdDataType"
:
25
,
"stringLength"
:
100
},
{
"codeName"
:
"Field"
,
"logicName"
:
"属性"
,
"name"
:
"FIELD"
,
"stdDataType"
:
25
,
"stringLength"
:
100
},
{
"codeName"
:
"Field2"
,
"logicName"
:
"属性2"
,
"name"
:
"FIELD2"
,
"stdDataType"
:
25
,
"stringLength"
:
100
},
{
"codeName"
:
"Field3"
,
"logicName"
:
"属性3"
,
"name"
:
"FIELD3"
,
"stdDataType"
:
25
,
"stringLength"
:
100
},
{
"codeName"
:
"Field4"
,
"logicName"
:
"属性4"
,
"name"
:
"FIELD4"
,
"stdDataType"
:
25
,
"stringLength"
:
100
}
],
"getAllPSAppDEMethodDTOs"
:
[
{
"codeName"
:
"BookDTO"
,
...
...
@@ -350,6 +374,54 @@
"sourceType"
:
"DEFIELD"
,
"stdDataType"
:
25
,
"type"
:
"SIMPLE"
},
{
"codeName"
:
"Field"
,
"logicName"
:
"属性"
,
"name"
:
"Field"
,
"orderValue"
:
1000
,
"getPSAppDEField"
:
{
"name"
:
"FIELD"
,
"codeName"
:
"Field"
},
"sourceType"
:
"DEFIELD"
,
"stdDataType"
:
25
,
"type"
:
"SIMPLE"
},
{
"codeName"
:
"Field2"
,
"logicName"
:
"属性2"
,
"name"
:
"Field2"
,
"orderValue"
:
1000
,
"getPSAppDEField"
:
{
"name"
:
"FIELD2"
,
"codeName"
:
"Field2"
},
"sourceType"
:
"DEFIELD"
,
"stdDataType"
:
25
,
"type"
:
"SIMPLE"
},
{
"codeName"
:
"Field3"
,
"logicName"
:
"属性3"
,
"name"
:
"Field3"
,
"orderValue"
:
1000
,
"getPSAppDEField"
:
{
"name"
:
"FIELD3"
,
"codeName"
:
"Field3"
},
"sourceType"
:
"DEFIELD"
,
"stdDataType"
:
25
,
"type"
:
"SIMPLE"
},
{
"codeName"
:
"Field4"
,
"logicName"
:
"属性4"
,
"name"
:
"Field4"
,
"orderValue"
:
1000
,
"getPSAppDEField"
:
{
"name"
:
"FIELD4"
,
"codeName"
:
"Field4"
},
"sourceType"
:
"DEFIELD"
,
"stdDataType"
:
25
,
"type"
:
"SIMPLE"
},
{
"codeName"
:
"OrgId"
,
"logicName"
:
"组织机构标识"
,
...
...
trainsys-core/src/main/resources/model/cn/ibizlab/trainsys/PSSYSAPPS/Web/PSAPPDATAENTITIES/Book/PSFORMS/Main.json
浏览文件 @
d7dfff35
...
...
@@ -93,17 +93,33 @@
"codeName"
:
"Type"
}
},
{
"id"
:
"formitem"
,
"dataType"
:
25
"id"
:
"field"
,
"dataType"
:
25
,
"getPSAppDEField"
:
{
"name"
:
"FIELD"
,
"codeName"
:
"Field"
}
},
{
"id"
:
"formitem1"
,
"dataType"
:
25
"id"
:
"field2"
,
"dataType"
:
25
,
"getPSAppDEField"
:
{
"name"
:
"FIELD2"
,
"codeName"
:
"Field2"
}
},
{
"id"
:
"formitem3"
,
"dataType"
:
25
"id"
:
"field3"
,
"dataType"
:
25
,
"getPSAppDEField"
:
{
"name"
:
"FIELD3"
,
"codeName"
:
"Field3"
}
},
{
"id"
:
"formitem2"
,
"dataType"
:
25
"id"
:
"field4"
,
"dataType"
:
25
,
"getPSAppDEField"
:
{
"name"
:
"FIELD4"
,
"codeName"
:
"Field4"
}
},
{
"id"
:
"createman"
,
"dataType"
:
25
,
...
...
@@ -249,7 +265,8 @@
"detailType"
:
"TABPAGE"
,
"name"
:
"tabpage1"
,
"getPSDEFormDetails"
:
[
{
"codeName"
:
"formitem"
,
"caption"
:
"属性"
,
"codeName"
:
"field"
,
"dataType"
:
25
,
"detailStyle"
:
"DEFAULT"
,
"detailType"
:
"FORMITEM"
,
...
...
@@ -257,21 +274,27 @@
"ignoreInput"
:
0
,
"labelPos"
:
"LEFT"
,
"labelWidth"
:
130
,
"name"
:
"f
ormitem
"
,
"name"
:
"f
ield
"
,
"noPrivDisplayMode"
:
1
,
"getPSAppDEField"
:
{
"name"
:
"FIELD"
,
"codeName"
:
"Field"
},
"getPSEditor"
:
{
"editorType"
:
"TEXTBOX"
,
"name"
:
"formitem"
"maxLength"
:
100
,
"name"
:
"field"
},
"getPSLayoutPos"
:
{
"colLG"
:
12
,
"colMD"
:
24
,
"colLG"
:
8
,
"colMD"
:
8
,
"layout"
:
"TABLE_24COL"
},
"allowEmpty"
:
true
,
"showCaption"
:
true
},
{
"codeName"
:
"formitem1"
,
"caption"
:
"属性2"
,
"codeName"
:
"field2"
,
"dataType"
:
25
,
"detailStyle"
:
"DEFAULT"
,
"detailType"
:
"FORMITEM"
,
...
...
@@ -279,15 +302,20 @@
"ignoreInput"
:
0
,
"labelPos"
:
"LEFT"
,
"labelWidth"
:
130
,
"name"
:
"f
ormitem1
"
,
"name"
:
"f
ield2
"
,
"noPrivDisplayMode"
:
1
,
"getPSAppDEField"
:
{
"name"
:
"FIELD2"
,
"codeName"
:
"Field2"
},
"getPSEditor"
:
{
"editorType"
:
"NUMBER"
,
"name"
:
"formitem1"
"editorType"
:
"TEXTBOX"
,
"maxLength"
:
100
,
"name"
:
"field2"
},
"getPSLayoutPos"
:
{
"colLG"
:
12
,
"colMD"
:
24
,
"colLG"
:
8
,
"colMD"
:
8
,
"layout"
:
"TABLE_24COL"
},
"allowEmpty"
:
true
,
...
...
@@ -306,7 +334,8 @@
"detailType"
:
"TABPAGE"
,
"name"
:
"tabpage2"
,
"getPSDEFormDetails"
:
[
{
"codeName"
:
"formitem3"
,
"caption"
:
"属性3"
,
"codeName"
:
"field3"
,
"dataType"
:
25
,
"detailStyle"
:
"DEFAULT"
,
"detailType"
:
"FORMITEM"
,
...
...
@@ -314,11 +343,16 @@
"ignoreInput"
:
0
,
"labelPos"
:
"LEFT"
,
"labelWidth"
:
130
,
"name"
:
"f
ormitem
3"
,
"name"
:
"f
ield
3"
,
"noPrivDisplayMode"
:
1
,
"getPSAppDEField"
:
{
"name"
:
"FIELD3"
,
"codeName"
:
"Field3"
},
"getPSEditor"
:
{
"editorType"
:
"PASSWORD"
,
"name"
:
"formitem3"
"editorType"
:
"TEXTBOX"
,
"maxLength"
:
100
,
"name"
:
"field3"
},
"getPSLayoutPos"
:
{
"grow"
:
-1
,
...
...
@@ -327,7 +361,8 @@
"allowEmpty"
:
true
,
"showCaption"
:
true
},
{
"codeName"
:
"formitem2"
,
"caption"
:
"属性4"
,
"codeName"
:
"field4"
,
"dataType"
:
25
,
"detailStyle"
:
"DEFAULT"
,
"detailType"
:
"FORMITEM"
,
...
...
@@ -335,11 +370,16 @@
"ignoreInput"
:
0
,
"labelPos"
:
"LEFT"
,
"labelWidth"
:
130
,
"name"
:
"f
ormitem2
"
,
"name"
:
"f
ield4
"
,
"noPrivDisplayMode"
:
1
,
"getPSAppDEField"
:
{
"name"
:
"FIELD4"
,
"codeName"
:
"Field4"
},
"getPSEditor"
:
{
"editorType"
:
"TEXTBOX"
,
"name"
:
"formitem2"
"maxLength"
:
100
,
"name"
:
"field4"
},
"getPSLayoutPos"
:
{
"grow"
:
-1
,
...
...
@@ -349,6 +389,8 @@
"showCaption"
:
true
}
],
"getPSLayout"
:
{
"align"
:
"center"
,
"dir"
:
"row"
,
"layout"
:
"FLEX"
},
"infoGroupMode"
:
false
,
...
...
trainsys-core/src/main/resources/model/cn/ibizlab/trainsys/PSSYSAPPS/Web/PSAPPDEVIEWS/bookEditView.json
浏览文件 @
d7dfff35
...
...
@@ -1079,17 +1079,33 @@
"codeName"
:
"Type"
}
},
{
"id"
:
"formitem"
,
"dataType"
:
25
"id"
:
"field"
,
"dataType"
:
25
,
"getPSAppDEField"
:
{
"name"
:
"FIELD"
,
"codeName"
:
"Field"
}
},
{
"id"
:
"formitem1"
,
"dataType"
:
25
"id"
:
"field2"
,
"dataType"
:
25
,
"getPSAppDEField"
:
{
"name"
:
"FIELD2"
,
"codeName"
:
"Field2"
}
},
{
"id"
:
"formitem3"
,
"dataType"
:
25
"id"
:
"field3"
,
"dataType"
:
25
,
"getPSAppDEField"
:
{
"name"
:
"FIELD3"
,
"codeName"
:
"Field3"
}
},
{
"id"
:
"formitem2"
,
"dataType"
:
25
"id"
:
"field4"
,
"dataType"
:
25
,
"getPSAppDEField"
:
{
"name"
:
"FIELD4"
,
"codeName"
:
"Field4"
}
},
{
"id"
:
"createman"
,
"dataType"
:
25
,
...
...
@@ -1235,7 +1251,8 @@
"detailType"
:
"TABPAGE"
,
"name"
:
"tabpage1"
,
"getPSDEFormDetails"
:
[
{
"codeName"
:
"formitem"
,
"caption"
:
"属性"
,
"codeName"
:
"field"
,
"dataType"
:
25
,
"detailStyle"
:
"DEFAULT"
,
"detailType"
:
"FORMITEM"
,
...
...
@@ -1243,21 +1260,27 @@
"ignoreInput"
:
0
,
"labelPos"
:
"LEFT"
,
"labelWidth"
:
130
,
"name"
:
"f
ormitem
"
,
"name"
:
"f
ield
"
,
"noPrivDisplayMode"
:
1
,
"getPSAppDEField"
:
{
"name"
:
"FIELD"
,
"codeName"
:
"Field"
},
"getPSEditor"
:
{
"editorType"
:
"TEXTBOX"
,
"name"
:
"formitem"
"maxLength"
:
100
,
"name"
:
"field"
},
"getPSLayoutPos"
:
{
"colLG"
:
12
,
"colMD"
:
24
,
"colLG"
:
8
,
"colMD"
:
8
,
"layout"
:
"TABLE_24COL"
},
"allowEmpty"
:
true
,
"showCaption"
:
true
},
{
"codeName"
:
"formitem1"
,
"caption"
:
"属性2"
,
"codeName"
:
"field2"
,
"dataType"
:
25
,
"detailStyle"
:
"DEFAULT"
,
"detailType"
:
"FORMITEM"
,
...
...
@@ -1265,15 +1288,20 @@
"ignoreInput"
:
0
,
"labelPos"
:
"LEFT"
,
"labelWidth"
:
130
,
"name"
:
"f
ormitem1
"
,
"name"
:
"f
ield2
"
,
"noPrivDisplayMode"
:
1
,
"getPSAppDEField"
:
{
"name"
:
"FIELD2"
,
"codeName"
:
"Field2"
},
"getPSEditor"
:
{
"editorType"
:
"NUMBER"
,
"name"
:
"formitem1"
"editorType"
:
"TEXTBOX"
,
"maxLength"
:
100
,
"name"
:
"field2"
},
"getPSLayoutPos"
:
{
"colLG"
:
12
,
"colMD"
:
24
,
"colLG"
:
8
,
"colMD"
:
8
,
"layout"
:
"TABLE_24COL"
},
"allowEmpty"
:
true
,
...
...
@@ -1292,7 +1320,8 @@
"detailType"
:
"TABPAGE"
,
"name"
:
"tabpage2"
,
"getPSDEFormDetails"
:
[
{
"codeName"
:
"formitem3"
,
"caption"
:
"属性3"
,
"codeName"
:
"field3"
,
"dataType"
:
25
,
"detailStyle"
:
"DEFAULT"
,
"detailType"
:
"FORMITEM"
,
...
...
@@ -1300,11 +1329,16 @@
"ignoreInput"
:
0
,
"labelPos"
:
"LEFT"
,
"labelWidth"
:
130
,
"name"
:
"f
ormitem
3"
,
"name"
:
"f
ield
3"
,
"noPrivDisplayMode"
:
1
,
"getPSAppDEField"
:
{
"name"
:
"FIELD3"
,
"codeName"
:
"Field3"
},
"getPSEditor"
:
{
"editorType"
:
"PASSWORD"
,
"name"
:
"formitem3"
"editorType"
:
"TEXTBOX"
,
"maxLength"
:
100
,
"name"
:
"field3"
},
"getPSLayoutPos"
:
{
"grow"
:
-1
,
...
...
@@ -1313,7 +1347,8 @@
"allowEmpty"
:
true
,
"showCaption"
:
true
},
{
"codeName"
:
"formitem2"
,
"caption"
:
"属性4"
,
"codeName"
:
"field4"
,
"dataType"
:
25
,
"detailStyle"
:
"DEFAULT"
,
"detailType"
:
"FORMITEM"
,
...
...
@@ -1321,11 +1356,16 @@
"ignoreInput"
:
0
,
"labelPos"
:
"LEFT"
,
"labelWidth"
:
130
,
"name"
:
"f
ormitem2
"
,
"name"
:
"f
ield4
"
,
"noPrivDisplayMode"
:
1
,
"getPSAppDEField"
:
{
"name"
:
"FIELD4"
,
"codeName"
:
"Field4"
},
"getPSEditor"
:
{
"editorType"
:
"TEXTBOX"
,
"name"
:
"formitem2"
"maxLength"
:
100
,
"name"
:
"field4"
},
"getPSLayoutPos"
:
{
"grow"
:
-1
,
...
...
@@ -1335,6 +1375,8 @@
"showCaption"
:
true
}
],
"getPSLayout"
:
{
"align"
:
"center"
,
"dir"
:
"row"
,
"layout"
:
"FLEX"
},
"infoGroupMode"
:
false
,
...
...
trainsys-core/src/main/resources/model/cn/ibizlab/trainsys/PSSYSAPPS/Web/PSSYSAPP.json
浏览文件 @
d7dfff35
...
...
@@ -8621,6 +8621,30 @@
"name"
:
"TYPE"
,
"stdDataType"
:
25
,
"stringLength"
:
100
},
{
"codeName"
:
"Field"
,
"logicName"
:
"属性"
,
"name"
:
"FIELD"
,
"stdDataType"
:
25
,
"stringLength"
:
100
},
{
"codeName"
:
"Field2"
,
"logicName"
:
"属性2"
,
"name"
:
"FIELD2"
,
"stdDataType"
:
25
,
"stringLength"
:
100
},
{
"codeName"
:
"Field3"
,
"logicName"
:
"属性3"
,
"name"
:
"FIELD3"
,
"stdDataType"
:
25
,
"stringLength"
:
100
},
{
"codeName"
:
"Field4"
,
"logicName"
:
"属性4"
,
"name"
:
"FIELD4"
,
"stdDataType"
:
25
,
"stringLength"
:
100
}
],
"getAllPSAppDEMethodDTOs"
:
[
{
"codeName"
:
"BookDTO"
,
...
...
@@ -8688,6 +8712,54 @@
"sourceType"
:
"DEFIELD"
,
"stdDataType"
:
25
,
"type"
:
"SIMPLE"
},
{
"codeName"
:
"Field"
,
"logicName"
:
"属性"
,
"name"
:
"Field"
,
"orderValue"
:
1000
,
"getPSAppDEField"
:
{
"name"
:
"FIELD"
,
"codeName"
:
"Field"
},
"sourceType"
:
"DEFIELD"
,
"stdDataType"
:
25
,
"type"
:
"SIMPLE"
},
{
"codeName"
:
"Field2"
,
"logicName"
:
"属性2"
,
"name"
:
"Field2"
,
"orderValue"
:
1000
,
"getPSAppDEField"
:
{
"name"
:
"FIELD2"
,
"codeName"
:
"Field2"
},
"sourceType"
:
"DEFIELD"
,
"stdDataType"
:
25
,
"type"
:
"SIMPLE"
},
{
"codeName"
:
"Field3"
,
"logicName"
:
"属性3"
,
"name"
:
"Field3"
,
"orderValue"
:
1000
,
"getPSAppDEField"
:
{
"name"
:
"FIELD3"
,
"codeName"
:
"Field3"
},
"sourceType"
:
"DEFIELD"
,
"stdDataType"
:
25
,
"type"
:
"SIMPLE"
},
{
"codeName"
:
"Field4"
,
"logicName"
:
"属性4"
,
"name"
:
"Field4"
,
"orderValue"
:
1000
,
"getPSAppDEField"
:
{
"name"
:
"FIELD4"
,
"codeName"
:
"Field4"
},
"sourceType"
:
"DEFIELD"
,
"stdDataType"
:
25
,
"type"
:
"SIMPLE"
},
{
"codeName"
:
"OrgId"
,
"logicName"
:
"组织机构标识"
,
...
...
trainsys-core/src/main/resources/model/cn/ibizlab/trainsys/PSSYSDBSCHEMES/DEFAULT.json
浏览文件 @
d7dfff35
...
...
@@ -35,6 +35,34 @@
"name"
:
"DEPTID"
,
"stdDataType"
:
25
,
"nullable"
:
true
},
{
"codeName"
:
"FIELD"
,
"length"
:
100
,
"logicName"
:
"属性"
,
"name"
:
"FIELD"
,
"stdDataType"
:
25
,
"nullable"
:
true
},
{
"codeName"
:
"FIELD2"
,
"length"
:
100
,
"logicName"
:
"属性2"
,
"name"
:
"FIELD2"
,
"stdDataType"
:
25
,
"nullable"
:
true
},
{
"codeName"
:
"FIELD3"
,
"length"
:
100
,
"logicName"
:
"属性3"
,
"name"
:
"FIELD3"
,
"stdDataType"
:
25
,
"nullable"
:
true
},
{
"codeName"
:
"FIELD4"
,
"length"
:
100
,
"logicName"
:
"属性4"
,
"name"
:
"FIELD4"
,
"stdDataType"
:
25
,
"nullable"
:
true
},
{
"codeName"
:
"ORGID"
,
"length"
:
60
,
...
...
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录