@gct-paas/design 0.1.6-dev.9 → 6.0.0-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +157 -0
- package/dist/index.min.css +1 -1
- package/dist/loader.esm.min.js +2 -1
- package/es/components/field-transfer/components/field-transfer-modal.vue.mjs +2 -2
- package/es/components/field-transfer/components/field-transfer-modal.vue_vue_type_style_index_0_scoped_2f34388d_lang.css +8 -0
- package/es/components/index.d.ts +0 -4
- package/es/components/index.mjs +0 -5
- package/es/components/mobile-container/mobile-container.d.ts +2 -2
- package/es/components/multi-field/multi-field-display.vue.mjs +2 -2
- package/es/components/multi-field/multi-field-display.vue_vue_type_script_setup_true_lang.mjs +1 -1
- package/es/components/multi-field/{multi-field-display.vue_vue_type_style_index_0_scoped_802ade7b_lang.css → multi-field-display.vue_vue_type_style_index_0_scoped_83390705_lang.css} +1 -1
- package/es/components/user-occupy/index.d.ts +0 -1
- package/es/components/user-occupy/index.mjs +0 -1
- package/es/components/user-occupy/user-lock.vue.mjs +2 -2
- package/es/components/user-occupy/user-lock.vue_vue_type_script_setup_true_lang.mjs +2 -1
- package/es/components/user-occupy/user-lock.vue_vue_type_style_index_0_scoped_143659f6_lang.css +29 -0
- package/es/components/user-occupy/user-occupy.vue.mjs +2 -2
- package/es/components/user-occupy/user-occupy.vue_vue_type_script_setup_true_lang.mjs +2 -1
- package/es/components/user-occupy/{user-occupy.vue_vue_type_style_index_0_scoped_9b136922_lang.css → user-occupy.vue_vue_type_style_index_0_scoped_1234af11_lang.css} +6 -6
- package/es/constant/index.d.ts +5 -0
- package/es/constant/index.mjs +6 -1
- package/es/constant/page-designer.d.ts +9 -36
- package/es/constant/page-designer.mjs +2 -32
- package/es/{components/user-occupy → hooks/design-view/components}/useUserOccupy.d.ts +3 -3
- package/es/{components/user-occupy → hooks/design-view/components}/useUserOccupy.mjs +48 -27
- package/es/hooks/design-view/design-state.d.ts +91 -1
- package/es/hooks/design-view/design-state.mjs +7 -7
- package/es/hooks/design-view/designer/useDesignCache.mjs +2 -3
- package/es/hooks/design-view/designer/useDesignPreview.mjs +15 -5
- package/es/hooks/design-view/designer/useDesignSave.d.ts +2 -2
- package/es/hooks/design-view/designer/useDesignSave.mjs +160 -23
- package/es/hooks/design-view/layout/useToolkit.d.ts +1 -1
- package/es/hooks/design-view/layout/useToolkit.mjs +166 -82
- package/es/hooks/design-view/page/usePage.d.ts +17 -7
- package/es/hooks/design-view/page/usePage.mjs +205 -9
- package/es/hooks/design-view/useDesigner.d.ts +7 -2
- package/es/hooks/design-view/useDesigner.mjs +25 -3
- package/es/hooks/design-view/widget/useSelectedWidget.mjs +55 -28
- package/es/hooks/design-view/widget/useWidget.mjs +2 -1
- package/es/hooks/index.d.ts +1 -1
- package/es/hooks/index.mjs +1 -1
- package/es/index.mjs +9 -12
- package/es/interface/index.d.ts +0 -1
- package/es/locale/auto-register.d.ts +2 -0
- package/es/locale/auto-register.mjs +25 -0
- package/es/locale/sys/app.mjs +6 -0
- package/es/locale/sys/appDesigner.mjs +9 -0
- package/es/locale/sys/cardDesign.d.ts +4 -4
- package/es/locale/sys/cardDesign.mjs +17 -0
- package/es/locale/sys/component.mjs +21 -0
- package/es/locale/sys/model.mjs +10 -0
- package/es/locale/sys/pageDesigner.mjs +32 -0
- package/es/locale/sys/platform.mjs +11 -0
- package/es/locale/sys.d.ts +7 -5
- package/es/locale/sys.mjs +26 -0
- package/es/register/designer-register/designer-register.d.ts +6 -3
- package/es/register/designer-register/designer-register.mjs +20 -14
- package/es/register/index.d.ts +1 -0
- package/es/register/index.mjs +1 -0
- package/es/register/props-editor/props-editor.register.d.ts +24 -0
- package/es/register/props-editor/props-editor.register.mjs +30 -0
- package/es/schema/begin-drag/begin-drag.mjs +1 -1
- package/es/schema/common-config/common-field-editor-config.mjs +7 -3
- package/es/schema/common-config/display-editor-config.mjs +2 -2
- package/es/schema/field/index.mjs +17 -3
- package/es/setup-app.d.ts +2 -1
- package/es/setup-app.mjs +3 -1
- package/es/types/index.d.ts +2 -1
- package/es/utils/design-interceptors/design-interceptors.mjs +1 -1
- package/package.json +12 -12
- package/es/components/design-save-tip/design-save-tip.css +0 -107
- package/es/components/design-save-tip/design-save-tip.d.ts +0 -44
- package/es/components/design-save-tip/design-save-tip.mjs +0 -81
- package/es/components/design-step-check/design-step-check.css +0 -133
- package/es/components/design-step-check/design-step-check.d.ts +0 -30
- package/es/components/design-step-check/design-step-check.mjs +0 -96
- package/es/components/design-view-layout/design-view-layout.css +0 -157
- package/es/components/design-view-layout/design-view-layout.d.ts +0 -1
- package/es/components/design-view-layout/design-view-layout.mjs +0 -139
- package/es/components/field-transfer/components/field-transfer-modal.vue_vue_type_style_index_0_scoped_711e6992_lang.css +0 -8
- package/es/components/modal-name-editor/modal-name-editor.css +0 -117
- package/es/components/modal-name-editor/modal-name-editor.d.ts +0 -34
- package/es/components/modal-name-editor/modal-name-editor.mjs +0 -124
- package/es/components/user-occupy/occupy.const.d.ts +0 -4
- package/es/components/user-occupy/occupy.const.mjs +0 -7
- package/es/components/user-occupy/user-lock.vue_vue_type_style_index_0_scoped_b40d46ff_lang.css +0 -29
- package/es/hooks/develop/useKeyParser.d.ts +0 -16
- package/es/hooks/develop/useKeyParser.mjs +0 -79
- package/es/interface/i-view-step/i-view-step.d.ts +0 -32
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { pageLayoutModeEnum } from '@gct-paas/core';
|
|
2
2
|
import { ExportMethod, LowCodeWidget, PageJson, IModal } from '@gct-paas/schema';
|
|
3
|
-
import { PageDesignerLogResponse } from '@gct-paas/api/apaas';
|
|
3
|
+
import { PageDesignerLogResponse, WebpageResponse } from '@gct-paas/api/apaas';
|
|
4
4
|
import { platform, designRegister } from '../../utils';
|
|
5
5
|
export { platform, designRegister };
|
|
6
6
|
/**
|
|
@@ -13,6 +13,93 @@ export declare const widgetInfo: import('vue').ComputedRef<import('@gct-paas/sch
|
|
|
13
13
|
/**
|
|
14
14
|
* 当前平台的插件注册实例
|
|
15
15
|
*/
|
|
16
|
+
export type PageInfo = WebpageResponse & {
|
|
17
|
+
categoryId?: string;
|
|
18
|
+
version?: string;
|
|
19
|
+
default?: boolean;
|
|
20
|
+
modelKey?: string;
|
|
21
|
+
_designerJson?: string;
|
|
22
|
+
detailDesignerJson?: string;
|
|
23
|
+
txnPageMode?: 'create' | 'detail';
|
|
24
|
+
baseId?: string;
|
|
25
|
+
};
|
|
26
|
+
/** 当前设计页面基础信息 */
|
|
27
|
+
export declare const pageInfo: import('vue').Ref<{
|
|
28
|
+
categoryResponse?: {
|
|
29
|
+
createTime?: string | undefined;
|
|
30
|
+
createUserId?: string | undefined;
|
|
31
|
+
createUserName?: string | undefined;
|
|
32
|
+
id?: string | undefined;
|
|
33
|
+
modifyTime?: string | undefined;
|
|
34
|
+
modifyUserId?: string | undefined;
|
|
35
|
+
modifyUserName?: string | undefined;
|
|
36
|
+
module?: string | undefined;
|
|
37
|
+
name?: string | undefined;
|
|
38
|
+
sortNum?: number | undefined;
|
|
39
|
+
sysBuiltin?: number | undefined;
|
|
40
|
+
} | undefined;
|
|
41
|
+
createTime?: string | undefined;
|
|
42
|
+
createUserId?: string | undefined;
|
|
43
|
+
createUserName?: string | undefined;
|
|
44
|
+
description?: string | undefined;
|
|
45
|
+
designerJson?: string | undefined;
|
|
46
|
+
id?: string | undefined;
|
|
47
|
+
key?: string | undefined;
|
|
48
|
+
lockUserId?: string | undefined;
|
|
49
|
+
lockUserName?: string | undefined;
|
|
50
|
+
modifyTime?: string | undefined;
|
|
51
|
+
modifyUserId?: string | undefined;
|
|
52
|
+
modifyUserName?: string | undefined;
|
|
53
|
+
name?: string | undefined;
|
|
54
|
+
newLogId?: string | undefined;
|
|
55
|
+
runtimeJson?: string | undefined;
|
|
56
|
+
categoryId?: string | undefined;
|
|
57
|
+
version?: string | undefined;
|
|
58
|
+
default?: boolean | undefined;
|
|
59
|
+
modelKey?: string | undefined;
|
|
60
|
+
_designerJson?: string | undefined;
|
|
61
|
+
detailDesignerJson?: string | undefined;
|
|
62
|
+
txnPageMode?: "create" | "detail" | undefined;
|
|
63
|
+
baseId?: string | undefined;
|
|
64
|
+
}, {
|
|
65
|
+
categoryResponse?: {
|
|
66
|
+
createTime?: string | undefined;
|
|
67
|
+
createUserId?: string | undefined;
|
|
68
|
+
createUserName?: string | undefined;
|
|
69
|
+
id?: string | undefined;
|
|
70
|
+
modifyTime?: string | undefined;
|
|
71
|
+
modifyUserId?: string | undefined;
|
|
72
|
+
modifyUserName?: string | undefined;
|
|
73
|
+
module?: string | undefined;
|
|
74
|
+
name?: string | undefined;
|
|
75
|
+
sortNum?: number | undefined;
|
|
76
|
+
sysBuiltin?: number | undefined;
|
|
77
|
+
} | undefined;
|
|
78
|
+
createTime?: string | undefined;
|
|
79
|
+
createUserId?: string | undefined;
|
|
80
|
+
createUserName?: string | undefined;
|
|
81
|
+
description?: string | undefined;
|
|
82
|
+
designerJson?: string | undefined;
|
|
83
|
+
id?: string | undefined;
|
|
84
|
+
key?: string | undefined;
|
|
85
|
+
lockUserId?: string | undefined;
|
|
86
|
+
lockUserName?: string | undefined;
|
|
87
|
+
modifyTime?: string | undefined;
|
|
88
|
+
modifyUserId?: string | undefined;
|
|
89
|
+
modifyUserName?: string | undefined;
|
|
90
|
+
name?: string | undefined;
|
|
91
|
+
newLogId?: string | undefined;
|
|
92
|
+
runtimeJson?: string | undefined;
|
|
93
|
+
categoryId?: string | undefined;
|
|
94
|
+
version?: string | undefined;
|
|
95
|
+
default?: boolean | undefined;
|
|
96
|
+
modelKey?: string | undefined;
|
|
97
|
+
_designerJson?: string | undefined;
|
|
98
|
+
detailDesignerJson?: string | undefined;
|
|
99
|
+
txnPageMode?: "create" | "detail" | undefined;
|
|
100
|
+
baseId?: string | undefined;
|
|
101
|
+
} | PageInfo>;
|
|
102
|
+
export declare const defaultPageJson: PageJson;
|
|
16
103
|
/** 设计页面JSON */
|
|
17
104
|
export declare const pageJson: {
|
|
18
105
|
id: string;
|
|
@@ -1081,6 +1168,9 @@ export declare const pageJson: {
|
|
|
1081
1168
|
title?: string | undefined;
|
|
1082
1169
|
} | undefined;
|
|
1083
1170
|
hasFooter?: boolean | undefined;
|
|
1171
|
+
unitType?: "px" | "%" | undefined;
|
|
1172
|
+
pageWidth?: number | undefined;
|
|
1173
|
+
independentDetailPage?: boolean | undefined;
|
|
1084
1174
|
};
|
|
1085
1175
|
pageVars: {
|
|
1086
1176
|
id: string;
|
|
@@ -22,11 +22,9 @@ import { getWidgetInfo } from "@gct-paas/schema";
|
|
|
22
22
|
var widgetInfo = computed(() => {
|
|
23
23
|
return getWidgetInfo(platform.value);
|
|
24
24
|
});
|
|
25
|
-
/**
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
/** 设计页面JSON */
|
|
29
|
-
var pageJson = reactive({
|
|
25
|
+
/** 当前设计页面基础信息 */
|
|
26
|
+
var pageInfo = ref({});
|
|
27
|
+
var defaultPageJson = {
|
|
30
28
|
id: "",
|
|
31
29
|
keepAlive: false,
|
|
32
30
|
pageEvents: {},
|
|
@@ -45,7 +43,9 @@ var pageJson = reactive({
|
|
|
45
43
|
hasFooter: void 0
|
|
46
44
|
},
|
|
47
45
|
pageLayoutMode: pageLayoutModeEnum.SHOW_ALL_DATA
|
|
48
|
-
}
|
|
46
|
+
};
|
|
47
|
+
/** 设计页面JSON */
|
|
48
|
+
var pageJson = reactive(cloneDeep(defaultPageJson));
|
|
49
49
|
/** 页面数据快照,用于脏检查对比 */
|
|
50
50
|
var pageJsonSnapshot = ref("");
|
|
51
51
|
/** 界面数据是否修改过,通过对比快照和当前数据判断 */
|
|
@@ -100,4 +100,4 @@ function transformPageJson(json, isClone = false) {
|
|
|
100
100
|
return _json;
|
|
101
101
|
}
|
|
102
102
|
//#endregion
|
|
103
|
-
export { isModified, loading, methodMap, modalDesignId, modalDesignState, modalInfo, noMore, pageDesignHistoryList, pageJson, pageJsonSnapshot, pageNo, pluginConfigs, regRoot, subTableModalId, subTableModalState, transformPageJson, wfNodesModalId, wfNodesModalState, widgetInfo, workflowModalId, workflowModalState };
|
|
103
|
+
export { defaultPageJson, isModified, loading, methodMap, modalDesignId, modalDesignState, modalInfo, noMore, pageDesignHistoryList, pageInfo, pageJson, pageJsonSnapshot, pageNo, pluginConfigs, regRoot, subTableModalId, subTableModalState, transformPageJson, wfNodesModalId, wfNodesModalState, widgetInfo, workflowModalId, workflowModalState };
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { pageJson } from "../design-state.mjs";
|
|
2
|
+
import { useUserOccupy } from "../components/useUserOccupy.mjs";
|
|
2
3
|
import { useScope } from "../layout/useScope.mjs";
|
|
3
4
|
import { useCacheHistory } from "../../develop/useCacheHistory.mjs";
|
|
4
5
|
import { useSelectedWidget } from "../widget/useSelectedWidget.mjs";
|
|
5
6
|
import "../../index.mjs";
|
|
6
|
-
import { useUserOccupy } from "../../../components/user-occupy/useUserOccupy.mjs";
|
|
7
|
-
import "../../../components/index.mjs";
|
|
8
7
|
//#region src/hooks/design-view/designer/useDesignCache.ts
|
|
9
8
|
/**
|
|
10
9
|
* 缓存撤销重做 Hook
|
|
@@ -19,7 +18,7 @@ function useDesignCache() {
|
|
|
19
18
|
* 缓存步骤,组件拖入布局画板时更新历史记录
|
|
20
19
|
*/
|
|
21
20
|
function emitCache() {
|
|
22
|
-
const id = _gct.store.context.
|
|
21
|
+
const id = _gct.store.context.pid;
|
|
23
22
|
historyUtils.addHistory({
|
|
24
23
|
historyId: id,
|
|
25
24
|
past: JSON.stringify(pageJson)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { platform } from "../../../utils/design-view/index.mjs";
|
|
2
2
|
import "../design-state.mjs";
|
|
3
|
-
import { Platform, openWindow, stringifyMatrixParams } from "@gct-paas/core";
|
|
3
|
+
import { ContextSceneEnum, EnvironmentType, Platform, openWindow, stringifyMatrixParams } from "@gct-paas/core";
|
|
4
4
|
import { ref } from "vue";
|
|
5
5
|
import { useDebounceFn } from "@vueuse/core";
|
|
6
6
|
//#region src/hooks/design-view/designer/useDesignPreview.ts
|
|
@@ -28,12 +28,21 @@ function useDesignPreview() {
|
|
|
28
28
|
*
|
|
29
29
|
* @param {IObject} params 预览参数
|
|
30
30
|
*/
|
|
31
|
-
function basicPreview({ pid, webUrl, mobileUrl, padUrl }) {
|
|
31
|
+
function basicPreview({ pid, webUrl, mobileUrl, padUrl, env }) {
|
|
32
32
|
const matrixParams = {
|
|
33
33
|
aid: _gct.store.context.aid,
|
|
34
|
-
bid: _gct.store.context.bid
|
|
34
|
+
bid: _gct.store.context.bid,
|
|
35
|
+
env: env || _gct.env.getEnv()
|
|
35
36
|
};
|
|
36
|
-
|
|
37
|
+
let hasUrl = `/PagePreview/${pid}`;
|
|
38
|
+
const scene = _gct.store.context.scene;
|
|
39
|
+
if (scene === ContextSceneEnum.TXN) {
|
|
40
|
+
matrixParams.scene = ContextSceneEnum.TXN;
|
|
41
|
+
hasUrl = `/TxnPagePreview/${pid}`;
|
|
42
|
+
} else if (scene === ContextSceneEnum.DETAIL) {
|
|
43
|
+
matrixParams.scene = ContextSceneEnum.DETAIL;
|
|
44
|
+
hasUrl = `/DetailPagePreview/${pid}`;
|
|
45
|
+
}
|
|
37
46
|
if (platform.value === Platform.MOBILE) openWindow(buildPreviewUrl(mobileUrl, hasUrl, matrixParams), {
|
|
38
47
|
noopener: false,
|
|
39
48
|
noreferrer: false,
|
|
@@ -78,7 +87,8 @@ function useDesignPreview() {
|
|
|
78
87
|
const _doPreviewSandbox = () => {
|
|
79
88
|
basicPreview({
|
|
80
89
|
pid: _gct.store.context.pid,
|
|
81
|
-
|
|
90
|
+
env: EnvironmentType.SANDBOX,
|
|
91
|
+
webUrl: "/web-render/",
|
|
82
92
|
mobileUrl: "/mobile-sandbox/",
|
|
83
93
|
padUrl: "/pad-sandbox/"
|
|
84
94
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PageJson, RuntimePageJson } from '@gct-paas/schema';
|
|
2
2
|
export declare function useDesignSave(): {
|
|
3
|
-
save: (flag?: boolean, showSuccess?: boolean) => Promise<boolean>;
|
|
3
|
+
save: (flag?: boolean, showSuccess?: boolean, scene?: string) => Promise<boolean>;
|
|
4
4
|
validateWidgets: (widgets: IData[], parents?: IData[]) => boolean;
|
|
5
5
|
savePageJsonSnapshot: (json?: PageJson) => void;
|
|
6
6
|
};
|
|
@@ -9,4 +9,4 @@ export declare function useDesignSave(): {
|
|
|
9
9
|
*
|
|
10
10
|
* @returns {Promise<RuntimePageJson>} 运行时页面JSON
|
|
11
11
|
*/
|
|
12
|
-
export declare function buildRuntimeJson(): Promise<RuntimePageJson>;
|
|
12
|
+
export declare function buildRuntimeJson(source?: PageJson): Promise<RuntimePageJson>;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { platform } from "../../../utils/design-view/index.mjs";
|
|
2
2
|
import { buildRunJs } from "../../../utils/transform-js/transform-js.mjs";
|
|
3
3
|
import "../../../utils/index.mjs";
|
|
4
|
-
import { noMore, pageDesignHistoryList, pageJson, pageJsonSnapshot, pageNo, regRoot, transformPageJson, widgetInfo } from "../design-state.mjs";
|
|
5
|
-
import { useUserOccupy } from "
|
|
6
|
-
import "
|
|
7
|
-
import {
|
|
8
|
-
import { Platform, SearchComponents, TreeHelper, t } from "@gct-paas/core";
|
|
4
|
+
import { defaultPageJson, noMore, pageDesignHistoryList, pageInfo, pageJson, pageJsonSnapshot, pageNo, regRoot, transformPageJson, widgetInfo } from "../design-state.mjs";
|
|
5
|
+
import { useUserOccupy } from "../components/useUserOccupy.mjs";
|
|
6
|
+
import { cloneDeep, isArray, isEmpty, isNil } from "lodash-es";
|
|
7
|
+
import { ContextSceneEnum, Platform, SearchComponents, TreeHelper, t } from "@gct-paas/core";
|
|
9
8
|
import { message } from "ant-design-vue";
|
|
10
9
|
//#region src/hooks/design-view/designer/useDesignSave.ts
|
|
11
10
|
/**
|
|
@@ -14,6 +13,30 @@ import { message } from "ant-design-vue";
|
|
|
14
13
|
* 管理设计器页面数据的保存、预处理和校验逻辑,
|
|
15
14
|
* 包括组件必填校验、数值范围校验、运行时 JSON 构建等。
|
|
16
15
|
*/
|
|
16
|
+
function deepFindPlugins(widgets) {
|
|
17
|
+
const items = [];
|
|
18
|
+
widgets.forEach((widget) => {
|
|
19
|
+
if (widget._plugin) items.push({
|
|
20
|
+
key: widget._plugin.key,
|
|
21
|
+
version: widget._plugin.version,
|
|
22
|
+
url: widget._plugin.url
|
|
23
|
+
});
|
|
24
|
+
if (widget.children && widget.children.length > 0) items.push(...deepFindPlugins(widget.children));
|
|
25
|
+
});
|
|
26
|
+
return items;
|
|
27
|
+
}
|
|
28
|
+
function getDefaultTxnDetailPageJson() {
|
|
29
|
+
return {
|
|
30
|
+
newDesigner: true,
|
|
31
|
+
style: {
|
|
32
|
+
paddingAll: "",
|
|
33
|
+
paddingTop: "",
|
|
34
|
+
paddingRight: "16",
|
|
35
|
+
paddingBottom: "16",
|
|
36
|
+
paddingLeft: "16"
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
17
40
|
function useDesignSave() {
|
|
18
41
|
const { cancelOccupy } = useUserOccupy();
|
|
19
42
|
/**
|
|
@@ -76,7 +99,7 @@ function useDesignSave() {
|
|
|
76
99
|
if ([SearchComponents.SearchNumberInput, SearchComponents.SearchStringNumberInput].includes(type) && props?.isRang && props?.defaultValue && Array.isArray(props?.defaultValue)) {
|
|
77
100
|
const start = props.defaultValue[0];
|
|
78
101
|
const end = props.defaultValue[1];
|
|
79
|
-
if ((start || start === 0) && (end || end === 0) && start > end) {
|
|
102
|
+
if ((start || start === 0) && (end || end === 0) && +start > +end) {
|
|
80
103
|
message.error(`【${widget.alias || widget.props.label || widget.props.fieldName || ""} ${widget.id}】${t("sys.pageDesigner.widget")} -【${t("sys.pageDesigner.prop")} - ${t("sys.pageDesigner.defaultValue")}】- ${t("sys.model.numMaxGTMin")}`);
|
|
81
104
|
return false;
|
|
82
105
|
}
|
|
@@ -90,13 +113,68 @@ function useDesignSave() {
|
|
|
90
113
|
return true;
|
|
91
114
|
}
|
|
92
115
|
/**
|
|
116
|
+
* 保存前预处理并校验单个 pageJson
|
|
117
|
+
*/
|
|
118
|
+
function preparePageJsonForSave(json) {
|
|
119
|
+
const _pageJson = transformPageJson(json, true);
|
|
120
|
+
if (validateWidgets(_pageJson.widgets) === false) return false;
|
|
121
|
+
if (_pageJson.widgets.some((n) => n.type === "data-list")) _pageJson.widgets.forEach((item) => {
|
|
122
|
+
if (item.type === "data-list" && !item.props.showFieldExp) item.props.showFieldExpVal = "";
|
|
123
|
+
});
|
|
124
|
+
if (validateWidgets(_pageJson.modals) === false) return false;
|
|
125
|
+
if (_pageJson.modals.length) _pageJson.modals.forEach((item) => {
|
|
126
|
+
if (!item.props.hasFooter) item.children = item.children.filter((n) => {
|
|
127
|
+
return n?.type !== "bottom-button-container";
|
|
128
|
+
});
|
|
129
|
+
if (item.props.hasFooter && item.children.some((n) => n?.type === "modalFooter")) item.children = item.children.filter((n) => {
|
|
130
|
+
return n?.type !== "modalFooter";
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
_pageJson.plugins = collectPlugins(_pageJson);
|
|
134
|
+
return _pageJson;
|
|
135
|
+
}
|
|
136
|
+
function collectPlugins(_pageJson) {
|
|
137
|
+
const plugins = [];
|
|
138
|
+
plugins.push(...deepFindPlugins(_pageJson.widgets));
|
|
139
|
+
if (_pageJson.modals) _pageJson.modals.forEach((modal) => {
|
|
140
|
+
if (modal.children) modal.children.forEach((item) => {
|
|
141
|
+
plugins.push(...deepFindPlugins(item.children));
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
return plugins;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* 根据 txnPageMode 解析创建页 / 详情页两份 pageJson
|
|
148
|
+
*/
|
|
149
|
+
function resolveTxnPageJsonPair() {
|
|
150
|
+
if (pageInfo.value.txnPageMode === "create") return {
|
|
151
|
+
createPageJson: pageJson,
|
|
152
|
+
detailPageJson: pageInfo.value.detailDesignerJson ? JSON.parse(pageInfo.value.detailDesignerJson) : getDefaultTxnDetailPageJson()
|
|
153
|
+
};
|
|
154
|
+
return {
|
|
155
|
+
createPageJson: pageInfo.value._designerJson ? JSON.parse(pageInfo.value._designerJson) : cloneDeep(defaultPageJson),
|
|
156
|
+
detailPageJson: pageJson
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
async function preparePagePayload(json) {
|
|
160
|
+
const prepared = preparePageJsonForSave(json);
|
|
161
|
+
if (!prepared) return false;
|
|
162
|
+
return {
|
|
163
|
+
designerJson: prepared,
|
|
164
|
+
runtimeJson: await buildRuntimeJson(prepared)
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
93
168
|
* 保存完成解除占用
|
|
94
169
|
*
|
|
95
170
|
* @param {boolean} flag 是否为保存操作(true为保存,false为恢复)
|
|
96
171
|
* @param {boolean} showSuccess 是否显示成功提示
|
|
172
|
+
* @param {string} scene 场景, 目前支持"txn"(事务) | "detail"(详情页)
|
|
97
173
|
* @returns {Promise<boolean>} 是否保存成功
|
|
98
174
|
*/
|
|
99
|
-
async function save(flag = true, showSuccess = true) {
|
|
175
|
+
async function save(flag = true, showSuccess = true, scene = "") {
|
|
176
|
+
if (scene === ContextSceneEnum.TXN) return saveTxn(flag, showSuccess);
|
|
177
|
+
if (scene === ContextSceneEnum.DETAIL) return saveDetail(flag, showSuccess);
|
|
100
178
|
const pageId = _gct.store.context.pid;
|
|
101
179
|
const _pageJson = transformPageJson(pageJson);
|
|
102
180
|
if (validateWidgets(_pageJson.widgets) === false) return false;
|
|
@@ -155,6 +233,67 @@ function useDesignSave() {
|
|
|
155
233
|
logId: (pageDesignHistoryList.value[0] ?? {}).id
|
|
156
234
|
});
|
|
157
235
|
savePageJsonSnapshot(_pageJson);
|
|
236
|
+
if (showSuccess) _gct.message.success(flag ? t("sys.saveSuccess") : t("sys.recoverSuccess"));
|
|
237
|
+
cancelOccupy();
|
|
238
|
+
noMore.value = false;
|
|
239
|
+
pageNo.value = 1;
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* 保存完成解除占用
|
|
244
|
+
*
|
|
245
|
+
* @param {boolean} flag 是否为保存操作(true为保存,false为恢复)
|
|
246
|
+
* @param {boolean} showSuccess 是否显示成功提示
|
|
247
|
+
* @returns {Promise<boolean>} 是否保存成功
|
|
248
|
+
*/
|
|
249
|
+
async function saveTxn(flag = true, showSuccess = true) {
|
|
250
|
+
const pageId = _gct.store.context.pid;
|
|
251
|
+
const { createPageJson, detailPageJson } = resolveTxnPageJsonPair();
|
|
252
|
+
const createPayload = await preparePagePayload(createPageJson);
|
|
253
|
+
if (!createPayload) return false;
|
|
254
|
+
const detailPayload = await preparePagePayload(detailPageJson);
|
|
255
|
+
if (!detailPayload) return false;
|
|
256
|
+
const { designerJson: _designerJson, runtimeJson } = createPayload;
|
|
257
|
+
const { designerJson: _detailDesignerJson, runtimeJson: detailRuntimeJson } = detailPayload;
|
|
258
|
+
pageInfo.value._designerJson = JSON.stringify(_designerJson);
|
|
259
|
+
pageInfo.value.detailDesignerJson = JSON.stringify(_detailDesignerJson);
|
|
260
|
+
await _api.apaas.transaction.putUpdateVersionByIdId({ id: pageId }, {
|
|
261
|
+
designerJson: JSON.stringify(_designerJson),
|
|
262
|
+
runtimeJson: JSON.stringify(runtimeJson),
|
|
263
|
+
detailDesignerJson: JSON.stringify(_detailDesignerJson),
|
|
264
|
+
detailRuntimeJson: JSON.stringify(detailRuntimeJson),
|
|
265
|
+
modelKey: pageInfo.value.modelKey,
|
|
266
|
+
name: pageInfo.value.name,
|
|
267
|
+
version: pageInfo.value.version,
|
|
268
|
+
default: pageInfo.value.default,
|
|
269
|
+
key: pageInfo.value.key
|
|
270
|
+
});
|
|
271
|
+
savePageJsonSnapshot(pageInfo.value.txnPageMode === "create" ? _designerJson : _detailDesignerJson);
|
|
272
|
+
if (showSuccess) _gct.message.success(flag ? "sys.saveSuccess" : "sys.recoverSuccess");
|
|
273
|
+
cancelOccupy();
|
|
274
|
+
noMore.value = false;
|
|
275
|
+
pageNo.value = 1;
|
|
276
|
+
return true;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* 保存详情页
|
|
280
|
+
* @param {boolean} flag 是否为保存操作(true为保存,false为恢复)
|
|
281
|
+
* @param {boolean} showSuccess 是否显示成功提示
|
|
282
|
+
* @returns {Promise<boolean>} 是否保存成功
|
|
283
|
+
*/
|
|
284
|
+
async function saveDetail(flag = true, showSuccess = true) {
|
|
285
|
+
const pageId = _gct.store.context.pid;
|
|
286
|
+
const createPayload = await preparePagePayload(pageJson);
|
|
287
|
+
if (!createPayload) return false;
|
|
288
|
+
const { designerJson: _designerJson, runtimeJson } = createPayload;
|
|
289
|
+
pageInfo.value._designerJson = JSON.stringify(_designerJson);
|
|
290
|
+
await _api.apaas.detailPage.putUpdateDesignerJsonId({ id: pageId }, {
|
|
291
|
+
designerJson: JSON.stringify(_designerJson),
|
|
292
|
+
runtimeJson: JSON.stringify(runtimeJson),
|
|
293
|
+
key: pageInfo.value.key,
|
|
294
|
+
name: pageInfo.value.name,
|
|
295
|
+
description: pageInfo.value.description
|
|
296
|
+
});
|
|
158
297
|
if (showSuccess) _gct.message.success(flag ? "sys.saveSuccess" : "sys.recoverSuccess");
|
|
159
298
|
cancelOccupy();
|
|
160
299
|
noMore.value = false;
|
|
@@ -172,13 +311,11 @@ function useDesignSave() {
|
|
|
172
311
|
*
|
|
173
312
|
* @returns {Promise<RuntimePageJson>} 运行时页面JSON
|
|
174
313
|
*/
|
|
175
|
-
async function buildRuntimeJson() {
|
|
314
|
+
async function buildRuntimeJson(source = pageJson) {
|
|
176
315
|
try {
|
|
177
|
-
const runtimeWidgets = TreeHelper.traverseAndBuildTree(JSON.parse(JSON.stringify(
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
const funcStr = await buildRunJs(pageJson.js);
|
|
181
|
-
const modals = pageJson.modals.map(async (modal) => {
|
|
316
|
+
const runtimeWidgets = TreeHelper.traverseAndBuildTree(JSON.parse(JSON.stringify(source.widgets)), (node) => findWidgetCallback(node));
|
|
317
|
+
const funcStr = await buildRunJs(source.js);
|
|
318
|
+
const modals = source.modals.map(async (modal) => {
|
|
182
319
|
const modalFuncStr = await buildRunJs(modal.js);
|
|
183
320
|
const runtimeWidgets = TreeHelper.traverseAndBuildTree(JSON.parse(JSON.stringify(modal.children)), (node) => findWidgetCallback(node, modal));
|
|
184
321
|
return {
|
|
@@ -197,16 +334,16 @@ async function buildRuntimeJson() {
|
|
|
197
334
|
widgets: runtimeWidgets,
|
|
198
335
|
runJs: funcStr,
|
|
199
336
|
modals: await Promise.all(modals),
|
|
200
|
-
css:
|
|
201
|
-
keepAlive:
|
|
202
|
-
globalEvents:
|
|
203
|
-
pageEvents:
|
|
204
|
-
permissions:
|
|
205
|
-
pageStyle:
|
|
206
|
-
pageConfig:
|
|
207
|
-
pageVars:
|
|
208
|
-
plugins:
|
|
209
|
-
pageLayoutMode:
|
|
337
|
+
css: source.css,
|
|
338
|
+
keepAlive: source.keepAlive,
|
|
339
|
+
globalEvents: source.globalEvents,
|
|
340
|
+
pageEvents: source.pageEvents,
|
|
341
|
+
permissions: source.permissions,
|
|
342
|
+
pageStyle: source.style,
|
|
343
|
+
pageConfig: source.pageConfig,
|
|
344
|
+
pageVars: source.pageVars,
|
|
345
|
+
plugins: source.plugins,
|
|
346
|
+
pageLayoutMode: source.pageLayoutMode
|
|
210
347
|
};
|
|
211
348
|
} catch (error) {
|
|
212
349
|
message.warn(t("sys.pageDesigner.codeError"));
|
|
@@ -392,7 +392,7 @@ export declare function useToolkit(): {
|
|
|
392
392
|
}[];
|
|
393
393
|
}[]>;
|
|
394
394
|
initToolkitWidgets: () => void;
|
|
395
|
-
changeToolkitWidgets: ({ data, modalState }: IObject) => void;
|
|
395
|
+
changeToolkitWidgets: ({ data, modalState, scene }: IObject) => void;
|
|
396
396
|
fixedToolkit: () => void;
|
|
397
397
|
setFieldToolkit: ({ modelKey, formId, childParentModelKey, }: {
|
|
398
398
|
modelKey: string;
|