提交 370b1696 编写于 作者: ibizdev's avatar ibizdev

lxm1993 发布系统代码 [TrainSys,网页端]

上级 f3904da6
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
"@interactjs/actions": "^1.10.11", "@interactjs/actions": "^1.10.11",
"@interactjs/modifiers": "^1.10.11", "@interactjs/modifiers": "^1.10.11",
"@interactjs/dev-tools": "^1.10.11", "@interactjs/dev-tools": "^1.10.11",
"@ibiz/dynamic-model-api": "0.0.61", "@ibiz/dynamic-model-api": "1.0.5",
"@ibiz/model-location": "^0.0.4", "@ibiz/model-location": "^0.0.4",
"xgplayer":"2.31.4", "xgplayer":"2.31.4",
"xlsx": "^0.16.9" "xlsx": "^0.16.9"
......
...@@ -18,10 +18,6 @@ export class AppModelService extends PSModelServiceImpl { } ...@@ -18,10 +18,6 @@ export class AppModelService extends PSModelServiceImpl { }
if(param && param.srfsandboxtag){ if(param && param.srfsandboxtag){
return SandboxService.getInstance().getSandBoxInstance(param.srfsandboxtag).getModelService(param); return SandboxService.getInstance().getSandBoxInstance(param.srfsandboxtag).getModelService(param);
}else{ }else{
if(param && param.instTag && param.instTag2){ return GlobalHelp.getModelService();
return GlobalHelp.getModelServiceByTag(param.instTag,param.instTag2);
}else{
return GlobalHelp.getModelService(param?.srfdynainstid);
}
} }
} }
\ No newline at end of file
import { DynamicInstanceConfig, GlobalHelp, ModelInstanceHelp } from "@ibiz/dynamic-model-api"; import { GlobalHelp, ModelInstanceHelp } from "@ibiz/dynamic-model-api";
import qs from 'qs'; import qs from 'qs';
import { Http } from "../../../utils/net/http"; import { Http } from "../../../utils/net/http";
import { AppServiceBase } from "../../app-service/app-base.service"; import { AppServiceBase } from "../../app-service/app-base.service";
...@@ -45,7 +45,7 @@ export class SandboxInstance { ...@@ -45,7 +45,7 @@ export class SandboxInstance {
*/ */
public async initSandBox() { public async initSandBox() {
const service = new AppModelService(); const service = new AppModelService();
this.help = await GlobalHelp.sandboxInstall(service, async (strPath: string, config: DynamicInstanceConfig) => { this.help = await GlobalHelp.sandboxInstall(service, async (strPath: string) => {
let url: string = ''; let url: string = '';
const Environment = AppServiceBase.getInstance().getAppEnvironment(); const Environment = AppServiceBase.getInstance().getAppEnvironment();
if (Environment.bDynamic) { if (Environment.bDynamic) {
...@@ -55,17 +55,14 @@ export class SandboxInstance { ...@@ -55,17 +55,14 @@ export class SandboxInstance {
if (dynamodeltag) { if (dynamodeltag) {
Object.assign(queryParam, { dynamodeltag }); Object.assign(queryParam, { dynamodeltag });
} }
if (config) {
Object.assign(queryParam, { srfInstTag: config.instTag, srfInstTag2: config.instTag2 });
}
if (queryParam && Object.keys(queryParam).length > 0) { if (queryParam && Object.keys(queryParam).length > 0) {
url += `?${qs.stringify(queryParam)}`; url += `?${qs.stringify(queryParam)}`;
} }
} else { } else {
const microAppService = AppServiceBase.getInstance().getMicroAppService(); const microAppService = AppServiceBase.getInstance().getMicroAppService();
if(microAppService && microAppService.getIsMicroApp() && microAppService.getMicroAppFolder()){ if (microAppService && microAppService.getIsMicroApp() && microAppService.getMicroAppFolder()) {
url = `./${microAppService.getMicroAppFolder()}/assets/model${strPath}`; url = `./${microAppService.getMicroAppFolder()}/assets/model${strPath}`;
}else{ } else {
url = `./assets/model${strPath}`; url = `./assets/model${strPath}`;
} }
} }
...@@ -86,11 +83,7 @@ export class SandboxInstance { ...@@ -86,11 +83,7 @@ export class SandboxInstance {
* @memberof SandboxInstance * @memberof SandboxInstance
*/ */
public async getModelService(param: any) { public async getModelService(param: any) {
if (param && param.instTag && param.instTag2) { return this.help.getModelService();
return this.help.getModelServiceByTag(param.instTag, param.instTag2);
} else {
return this.help.getModelService(param?.srfdynainstid);
}
} }
} }
\ No newline at end of file
import { IPSAppDEUIAction, IPSAppView, IPSAppViewRef, IPSPanelContainer, IPSPanelField, IPSPanelItem, IPSPanelTabPage, IPSPanelTabPanel, IPSPanelUserControl, DynamicInstanceConfig } from "@ibiz/dynamic-model-api"; import { IPSAppDEUIAction, IPSAppView, IPSAppViewRef, IPSPanelContainer, IPSPanelField, IPSPanelItem, IPSPanelTabPage, IPSPanelTabPanel, IPSPanelUserControl } from "@ibiz/dynamic-model-api";
import { clearCookie, setCookie } from "qx-util"; import { clearCookie, setCookie } from "qx-util";
import { AppServiceBase, DataServiceHelp, GetModelService, Http, ModelTool, PluginService, removeSessionStorage, Util, ViewTool } from "ibiz-core"; import { AppServiceBase, DataServiceHelp, GetModelService, Http, ModelTool, PluginService, removeSessionStorage, Util, ViewTool } from "ibiz-core";
import { NavDataService } from "../common-service/app-navdata-service"; import { NavDataService } from "../common-service/app-navdata-service";
...@@ -765,13 +765,7 @@ export class AppGlobalService { ...@@ -765,13 +765,7 @@ export class AppGlobalService {
let localdata: any; let localdata: any;
let requestResult: Promise<any>; let requestResult: Promise<any>;
let copyContext: any = Util.deepCopy(_this.context); let copyContext: any = Util.deepCopy(_this.context);
if (copyContext.srfdynainstid) { requestResult = _this.appEntityService.getStandWorkflow(copyContext);
let dynainstParam: DynamicInstanceConfig = (await GetModelService(copyContext)).getDynaInsConfig();
Object.assign(copyContext, dynainstParam ? dynainstParam : {});
requestResult = _this.appEntityService.getCopyWorkflow(copyContext);
} else {
requestResult = _this.appEntityService.getStandWorkflow(copyContext);
}
requestResult.then((response: any) => { requestResult.then((response: any) => {
const { data: targetData, status: status } = response; const { data: targetData, status: status } = response;
if (status !== 200) { if (status !== 200) {
......
...@@ -241,7 +241,7 @@ export default class AppColumnLink extends Vue { ...@@ -241,7 +241,7 @@ export default class AppColumnLink extends Vue {
* @param {*} params * @param {*} params
* @memberof AppColumnLink * @memberof AppColumnLink
*/ */
private async openRedirectView($event: any, context: any, params: any) { private async openRedirectView($event: any, context: any, params: any) {
let targetRedirectView: IPSAppDERedirectView = this.linkview.viewModel; let targetRedirectView: IPSAppDERedirectView = this.linkview.viewModel;
await targetRedirectView.fill(true); await targetRedirectView.fill(true);
if ( if (
...@@ -254,6 +254,16 @@ export default class AppColumnLink extends Vue { ...@@ -254,6 +254,16 @@ export default class AppColumnLink extends Vue {
targetRedirectView.getPSAppDataEntity(), targetRedirectView.getPSAppDataEntity(),
{context} {context}
); );
if (targetRedirectView.getPSAppViewNavContexts()) {
const localContextRef: any = Util.formatNavParam(targetRedirectView.getPSAppViewNavContexts(), true);
const _context: any = Util.computedNavData(this.data, context, params, localContextRef);
Object.assign(context, _context);
}
if (targetRedirectView.getPSAppViewNavParams()) {
const localContextRef: any = Util.formatNavParam(targetRedirectView.getPSAppViewNavParams(), true);
const _params: any = Util.computedNavData(this.data, context, params, localContextRef);
Object.assign(params, _params);
}
await redirectUIService.loaded(); await redirectUIService.loaded();
const redirectAppEntity: IPSAppDataEntity | null = targetRedirectView.getPSAppDataEntity(); const redirectAppEntity: IPSAppDataEntity | null = targetRedirectView.getPSAppDataEntity();
await ViewTool.calcRedirectContext(context, this.data, redirectAppEntity); await ViewTool.calcRedirectContext(context, this.data, redirectAppEntity);
...@@ -266,6 +276,18 @@ export default class AppColumnLink extends Vue { ...@@ -266,6 +276,18 @@ export default class AppColumnLink extends Vue {
if (!result) { if (!result) {
return; return;
} }
const data = result.srfdata;
if (data) {
const linkUrl: string = data.linkurl;
if (linkUrl && linkUrl !== '') {
if (linkUrl.startsWith('http://') || linkUrl.startsWith('https://')) {
window.open(linkUrl, '_blank');
} else {
this.$router.push(linkUrl);
}
return;
}
}
let targetOpenViewRef: IPSAppViewRef | undefined = ViewTool.computeRedirectViewRef(targetRedirectView,params,result); let targetOpenViewRef: IPSAppViewRef | undefined = ViewTool.computeRedirectViewRef(targetRedirectView,params,result);
if (!targetOpenViewRef) { if (!targetOpenViewRef) {
return; return;
...@@ -347,7 +369,7 @@ export default class AppColumnLink extends Vue { ...@@ -347,7 +369,7 @@ export default class AppColumnLink extends Vue {
this.openDrawer(view, context, params); this.openDrawer(view, context, params);
} }
} }
/** /**
* 打开页面关闭 * 打开页面关闭
* *
......
import Vue from 'vue'; import Vue from 'vue';
import qs from 'qs'; import qs from 'qs';
import { DynamicInstanceConfig, IPSAppView } from '@ibiz/dynamic-model-api'; import { IPSAppView } from '@ibiz/dynamic-model-api';
import { AppServiceBase, GetModelService, SandboxInstance, Util } from 'ibiz-core'; import { AppServiceBase, GetModelService, SandboxInstance, Util } from 'ibiz-core';
import { AppNavHistory } from '../app-service'; import { AppNavHistory } from '../app-service';
import { CommunicationService } from '@ibiz/model-location'; import { CommunicationService } from '@ibiz/model-location';
...@@ -165,13 +165,6 @@ export class ViewContainerBase extends Vue { ...@@ -165,13 +165,6 @@ export class ViewContainerBase extends Vue {
if (tempViewParam && tempViewParam.hasOwnProperty('srfsandboxtag')) { if (tempViewParam && tempViewParam.hasOwnProperty('srfsandboxtag')) {
await this.initSandBoxInst(tempViewParam); await this.initSandBoxInst(tempViewParam);
} }
if (tempViewParam.srfinsttag && tempViewParam.srfinsttag2) {
let dynainstParam: DynamicInstanceConfig = (await GetModelService({ srfsandboxtag: tempViewParam.srfsandboxtag, instTag: tempViewParam.srfinsttag, instTag2: tempViewParam.srfinsttag2 })).getDynaInsConfig();
this.context = { srfdynainstid: dynainstParam.id };
}
if (tempViewParam.srfdynainstid) {
this.context = { srfdynainstid: tempViewParam.srfdynainstid };
}
// 补充沙箱实例参数(路由) // 补充沙箱实例参数(路由)
if (tempViewParam && tempViewParam.hasOwnProperty('srfsandboxtag')) { if (tempViewParam && tempViewParam.hasOwnProperty('srfsandboxtag')) {
Object.assign(this.context, { 'srfsandboxtag': tempViewParam.srfsandboxtag }); Object.assign(this.context, { 'srfsandboxtag': tempViewParam.srfsandboxtag });
...@@ -359,4 +352,4 @@ export class ViewContainerBase extends Vue { ...@@ -359,4 +352,4 @@ export class ViewContainerBase extends Vue {
}); });
return tempValue; return tempValue;
} }
} }
\ No newline at end of file
import { VNode } from 'vue'; import { VNode } from 'vue';
import { DynamicInstanceConfig, IPSAppDataEntity, IPSAppDERedirectView, IPSAppDEView, IPSAppView, IPSAppViewRef, IPSNavigateContext, IPSNavigateParam } from "@ibiz/dynamic-model-api"; import { IPSAppDataEntity, IPSAppDERedirectView, IPSAppDEView, IPSAppView, IPSAppViewRef, IPSNavigateContext, IPSNavigateParam } from "@ibiz/dynamic-model-api";
import { GetModelService, LogUtil, ModelTool, RedirectViewInterface, StringUtil, Util, ViewTool } from "ibiz-core"; import { GetModelService, LogUtil, ModelTool, RedirectViewInterface, StringUtil, Util, ViewTool } from "ibiz-core";
import { MainViewBase } from "./mainview-base"; import { MainViewBase } from "./mainview-base";
...@@ -135,14 +135,6 @@ export class DeRedirectViewBase extends MainViewBase implements RedirectViewInte ...@@ -135,14 +135,6 @@ export class DeRedirectViewBase extends MainViewBase implements RedirectViewInte
} }
Object.assign(tempViewParams, _viewParams); Object.assign(tempViewParams, _viewParams);
} }
// 存在动态实例
let splitArray: Array<any> = result.param.split(":");
if (splitArray && (splitArray.length == 3)) {
let curDynaInst: DynamicInstanceConfig = (await GetModelService({ instTag: splitArray[2], instTag2: splitArray[1] }))?.getDynaInsConfig();
if (curDynaInst) {
Object.assign(tempContext, { srfdynainstid: curDynaInst.id });
}
}
if (targetOpenViewRef.getRefPSAppView()) { if (targetOpenViewRef.getRefPSAppView()) {
let targetOpenView: IPSAppView | null = targetOpenViewRef.getRefPSAppView(); let targetOpenView: IPSAppView | null = targetOpenViewRef.getRefPSAppView();
if (!targetOpenView) { if (!targetOpenView) {
......
...@@ -2,7 +2,6 @@ import { Subject, Subscription } from 'rxjs'; ...@@ -2,7 +2,6 @@ import { Subject, Subscription } from 'rxjs';
import { IPSAppView, IPSControl, IPSLanguageRes } from '@ibiz/dynamic-model-api'; import { IPSAppView, IPSControl, IPSLanguageRes } from '@ibiz/dynamic-model-api';
import { ViewMessageService, Util, ViewTool, AppServiceBase, ViewContext, ModelTool, GetModelService, AppModelService, LogUtil, SandboxInstance, ViewInterface, appEngineService, throttle } from 'ibiz-core'; import { ViewMessageService, Util, ViewTool, AppServiceBase, ViewContext, ModelTool, GetModelService, AppModelService, LogUtil, SandboxInstance, ViewInterface, appEngineService, throttle } from 'ibiz-core';
import { AppMessageBoxService, AppNavHistory, NavDataService } from '../app-service'; import { AppMessageBoxService, AppNavHistory, NavDataService } from '../app-service';
import { DynamicInstanceConfig } from '@ibiz/dynamic-model-api/dist/types/core';
import { createUUID, isNilOrEmpty } from 'qx-util'; import { createUUID, isNilOrEmpty } from 'qx-util';
import { ControlContainer } from '../control-container/control-container'; import { ControlContainer } from '../control-container/control-container';
...@@ -736,7 +735,6 @@ export class ViewBase extends ControlContainer implements ViewInterface { ...@@ -736,7 +735,6 @@ export class ViewBase extends ControlContainer implements ViewInterface {
Object.assign(_this.viewparams, { srfparentkey: _this.context.srfparentkey }); Object.assign(_this.viewparams, { srfparentkey: _this.context.srfparentkey });
} }
_this.handleCustomViewData(); _this.handleCustomViewData();
_this.handleOtherViewData();
return; return;
} }
const path = (_this.$route.matched[_this.$route.matched.length - 1]).path; const path = (_this.$route.matched[_this.$route.matched.length - 1]).path;
...@@ -759,19 +757,11 @@ export class ViewBase extends ControlContainer implements ViewInterface { ...@@ -759,19 +757,11 @@ export class ViewBase extends ControlContainer implements ViewInterface {
if (_this.viewInstance && ModelTool.getContainerAppEntityCodeName(this.viewInstance)) { if (_this.viewInstance && ModelTool.getContainerAppEntityCodeName(this.viewInstance)) {
Object.assign(_this.context, { srfsessionid: Util.createUUID() }); Object.assign(_this.context, { srfsessionid: Util.createUUID() });
} }
if (_this.viewparams.srfinsttag && _this.viewparams.srfinsttag2 && this.modelService) {
let dynainstParam: DynamicInstanceConfig = this.modelService.getDynaInsConfig();
Object.assign(_this.context, { srfdynainstid: dynainstParam.id });
}
if (_this.viewparams && _this.viewparams.srfdynainstid) {
Object.assign(_this.context, { srfdynainstid: this.viewparams.srfdynainstid });
}
// 补充沙箱实例参数(路由) // 补充沙箱实例参数(路由)
if (_this.viewparams && _this.viewparams.hasOwnProperty('srfsandboxtag')) { if (_this.viewparams && _this.viewparams.hasOwnProperty('srfsandboxtag')) {
Object.assign(_this.context, { 'srfsandboxtag': _this.viewparams.srfsandboxtag }); Object.assign(_this.context, { 'srfsandboxtag': _this.viewparams.srfsandboxtag });
} }
_this.handleCustomViewData(); _this.handleCustomViewData();
_this.handleOtherViewData();
} }
/** /**
...@@ -799,21 +789,6 @@ export class ViewBase extends ControlContainer implements ViewInterface { ...@@ -799,21 +789,6 @@ export class ViewBase extends ControlContainer implements ViewInterface {
} }
} }
/**
* 处理其他数据(多实例)
*
* @memberof ViewBase
*/
public handleOtherViewData() {
let appEnvironment = AppServiceBase.getInstance().getAppEnvironment();
if (appEnvironment.bDynamic && this.modelService) {
let dynainstParam: DynamicInstanceConfig = this.modelService.getDynaInsConfig();
if (dynainstParam) {
Object.assign(this.viewparams, { srfinsttag: dynainstParam.instTag, srfinsttag2: dynainstParam.instTag2 });
}
}
}
/** /**
* 处理指定视图控制关系将父键转为父实体上下文 * 处理指定视图控制关系将父键转为父实体上下文
* *
......
import qs from 'qs'; import qs from 'qs';
import { GlobalHelp, IPSAppView, DynamicInstanceConfig } from '@ibiz/dynamic-model-api'; import { GlobalHelp, IPSAppView } from '@ibiz/dynamic-model-api';
import { clearCookie, getCookie, SyncSeriesHook } from 'qx-util'; import { clearCookie, getCookie, SyncSeriesHook } from 'qx-util';
import { AppServiceBase, Http, getSessionStorage, setSessionStorage, AppModelService, Util, GetModelService, ViewTool } from 'ibiz-core'; import { AppServiceBase, Http, getSessionStorage, setSessionStorage, AppModelService, Util, GetModelService, ViewTool } from 'ibiz-core';
import { AppCenterService, AppNoticeService, AppViewLogicService, NoticeHandler } from 'ibiz-vue'; import { AppCenterService, AppNoticeService, AppViewLogicService, NoticeHandler } from 'ibiz-vue';
...@@ -210,7 +210,7 @@ export class AuthGuard { ...@@ -210,7 +210,7 @@ export class AuthGuard {
AppServiceBase.getInstance().setViewLogicService(AppViewLogicService.getInstance()); AppServiceBase.getInstance().setViewLogicService(AppViewLogicService.getInstance());
AppServiceBase.getInstance().setAppComponentService(AppComponentService); AppServiceBase.getInstance().setAppComponentService(AppComponentService);
const service = new AppModelService(); const service = new AppModelService();
await GlobalHelp.install(service, async (strPath: string, config: DynamicInstanceConfig) => { await GlobalHelp.install(service, async (strPath: string) => {
let url: string = ''; let url: string = '';
if (Environment.bDynamic) { if (Environment.bDynamic) {
url = `${Environment.remoteDynaPath}${strPath}`; url = `${Environment.remoteDynaPath}${strPath}`;
...@@ -219,9 +219,6 @@ export class AuthGuard { ...@@ -219,9 +219,6 @@ export class AuthGuard {
if (dynamodeltag) { if (dynamodeltag) {
Object.assign(queryParam, { dynamodeltag }); Object.assign(queryParam, { dynamodeltag });
} }
if (config) {
Object.assign(queryParam, { srfInstTag: config.instTag, srfInstTag2: config.instTag2 });
}
if (queryParam && Object.keys(queryParam).length > 0) { if (queryParam && Object.keys(queryParam).length > 0) {
url += `?${qs.stringify(queryParam)}`; url += `?${qs.stringify(queryParam)}`;
} }
......
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
</changeSet> </changeSet>
<!--输出实体[BOOK]数据结构 --> <!--输出实体[BOOK]数据结构 -->
<changeSet author="root" id="tab-book-173-3"> <changeSet author="root" id="tab-book-178-3">
<createTable tableName="T_BOOK"> <createTable tableName="T_BOOK">
<column name="BOOKNAME" remarks="" type="VARCHAR(200)"> <column name="BOOKNAME" remarks="" type="VARCHAR(200)">
</column> </column>
...@@ -194,7 +194,7 @@ ...@@ -194,7 +194,7 @@
</changeSet> </changeSet>
<!--输出实体[REGINFO]数据结构 --> <!--输出实体[REGINFO]数据结构 -->
<changeSet author="root" id="tab-reginfo-36-8"> <changeSet author="root" id="tab-reginfo-38-8">
<createTable tableName="T_REGINFO"> <createTable tableName="T_REGINFO">
<column name="UPDATEDATE" remarks="" type="DATETIME"> <column name="UPDATEDATE" remarks="" type="DATETIME">
</column> </column>
......
...@@ -216,6 +216,41 @@ ...@@ -216,6 +216,41 @@
"labelWidth" : 130, "labelWidth" : 130,
"name" : "name", "name" : "name",
"noPrivDisplayMode" : 1, "noPrivDisplayMode" : 1,
"getPSDEFDGroupLogics" : [ {
"groupOP" : "AND",
"logicCat" : "PANELVISIBLE",
"logicType" : "GROUP",
"name" : "表单成员[name][面板显示]逻辑",
"getPSDEFDLogics" : [ {
"groupOP" : "AND",
"logicType" : "GROUP",
"name" : "AND",
"getPSDEFDLogics" : [ {
"condOP" : "LT",
"dEFDName" : "Age",
"logicType" : "SINGLE",
"name" : "Age 小于(<) (113)",
"value" : "113"
} ],
"notMode" : false
} ],
"relatedDetailNames" : [ "age" ],
"notMode" : false
}, {
"groupOP" : "AND",
"logicCat" : "ITEMENABLE",
"logicType" : "GROUP",
"name" : "表单成员[name][表单项启用]逻辑",
"getPSDEFDLogics" : [ {
"condOP" : "GT",
"dEFDName" : "Age",
"logicType" : "SINGLE",
"name" : "Age 大于(>) (22)",
"value" : "22"
} ],
"relatedDetailNames" : [ "age" ],
"notMode" : false
} ],
"getPSEditor" : { "getPSEditor" : {
"editorType" : "TEXTBOX", "editorType" : "TEXTBOX",
"name" : "name" "name" : "name"
......
...@@ -1202,6 +1202,41 @@ ...@@ -1202,6 +1202,41 @@
"labelWidth" : 130, "labelWidth" : 130,
"name" : "name", "name" : "name",
"noPrivDisplayMode" : 1, "noPrivDisplayMode" : 1,
"getPSDEFDGroupLogics" : [ {
"groupOP" : "AND",
"logicCat" : "PANELVISIBLE",
"logicType" : "GROUP",
"name" : "表单成员[name][面板显示]逻辑",
"getPSDEFDLogics" : [ {
"groupOP" : "AND",
"logicType" : "GROUP",
"name" : "AND",
"getPSDEFDLogics" : [ {
"condOP" : "LT",
"dEFDName" : "Age",
"logicType" : "SINGLE",
"name" : "Age 小于(<) (113)",
"value" : "113"
} ],
"notMode" : false
} ],
"relatedDetailNames" : [ "age" ],
"notMode" : false
}, {
"groupOP" : "AND",
"logicCat" : "ITEMENABLE",
"logicType" : "GROUP",
"name" : "表单成员[name][表单项启用]逻辑",
"getPSDEFDLogics" : [ {
"condOP" : "GT",
"dEFDName" : "Age",
"logicType" : "SINGLE",
"name" : "Age 大于(>) (22)",
"value" : "22"
} ],
"relatedDetailNames" : [ "age" ],
"notMode" : false
} ],
"getPSEditor" : { "getPSEditor" : {
"editorType" : "TEXTBOX", "editorType" : "TEXTBOX",
"name" : "name" "name" : "name"
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册