openxiangda 1.0.59 → 1.0.61
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/package.json +1 -1
- package/templates/openxiangda-react-spa/src/pages/defaults/DataRoutePage.tsx +25 -7
- package/templates/openxiangda-react-spa/src/pages/defaults/FilePreviewRoutePage.tsx +22 -7
- package/templates/openxiangda-react-spa/src/pages/defaults/FormRoutePage.tsx +45 -15
- package/templates/openxiangda-react-spa/src/runtime/default-page-overrides.tsx +35 -0
package/package.json
CHANGED
|
@@ -1,17 +1,35 @@
|
|
|
1
1
|
import { useParams } from "react-router-dom";
|
|
2
2
|
import { DataManagementList } from "openxiangda";
|
|
3
|
+
import {
|
|
4
|
+
defaultPageOverrides,
|
|
5
|
+
resolveDefaultPageOverride,
|
|
6
|
+
} from "@/runtime/default-page-overrides";
|
|
3
7
|
|
|
4
8
|
export function DataRoutePage() {
|
|
5
9
|
const { appType = "", formUuid = "" } = useParams();
|
|
10
|
+
const Override = resolveDefaultPageOverride(defaultPageOverrides, "data-manage-list", formUuid);
|
|
11
|
+
const defaultNode = (
|
|
12
|
+
<DataManagementList
|
|
13
|
+
appType={appType}
|
|
14
|
+
detailBasePath={`/view/${appType}/admin/forms/${formUuid}`}
|
|
15
|
+
formUuid={formUuid}
|
|
16
|
+
fullHeight={false}
|
|
17
|
+
title="数据列表"
|
|
18
|
+
/>
|
|
19
|
+
);
|
|
20
|
+
|
|
6
21
|
return (
|
|
7
22
|
<div className="ox-panel overflow-hidden">
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
23
|
+
{Override ? (
|
|
24
|
+
<Override
|
|
25
|
+
appType={appType}
|
|
26
|
+
defaultNode={defaultNode}
|
|
27
|
+
formUuid={formUuid}
|
|
28
|
+
kind="data-manage-list"
|
|
29
|
+
/>
|
|
30
|
+
) : (
|
|
31
|
+
defaultNode
|
|
32
|
+
)}
|
|
15
33
|
</div>
|
|
16
34
|
);
|
|
17
35
|
}
|
|
@@ -1,14 +1,29 @@
|
|
|
1
|
+
import {
|
|
2
|
+
defaultPageOverrides,
|
|
3
|
+
resolveDefaultPageOverride,
|
|
4
|
+
} from "@/runtime/default-page-overrides";
|
|
5
|
+
|
|
1
6
|
export function FilePreviewRoutePage() {
|
|
2
7
|
const ticket = new URLSearchParams(window.location.search).get("ticket") || "";
|
|
8
|
+
const appType = process.env.OPENXIANGDA_APP_TYPE || process.env.APP_TYPE || "";
|
|
9
|
+
const Override = resolveDefaultPageOverride(defaultPageOverrides, "file-preview");
|
|
10
|
+
const defaultNode = (
|
|
11
|
+
<section className="ox-panel mx-auto max-w-4xl p-6">
|
|
12
|
+
<h1 className="text-lg font-semibold text-slate-950">文件预览</h1>
|
|
13
|
+
<p className="mt-2 text-sm text-slate-500">ticket: {ticket || "未提供"}</p>
|
|
14
|
+
<div className="mt-6 rounded-md border border-dashed border-slate-300 bg-slate-50 p-8 text-center text-sm text-slate-500">
|
|
15
|
+
文件预览组件将在平台文件元数据接口稳定后接入。
|
|
16
|
+
</div>
|
|
17
|
+
</section>
|
|
18
|
+
);
|
|
19
|
+
|
|
3
20
|
return (
|
|
4
21
|
<main className="min-h-screen bg-[#f6f7f9] p-5">
|
|
5
|
-
|
|
6
|
-
<
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
</div>
|
|
11
|
-
</section>
|
|
22
|
+
{Override ? (
|
|
23
|
+
<Override appType={appType} defaultNode={defaultNode} kind="file-preview" />
|
|
24
|
+
) : (
|
|
25
|
+
defaultNode
|
|
26
|
+
)}
|
|
12
27
|
</main>
|
|
13
28
|
);
|
|
14
29
|
}
|
|
@@ -3,6 +3,11 @@ import { useNavigate, useParams } from "react-router-dom";
|
|
|
3
3
|
import { StandardFormPage } from "openxiangda";
|
|
4
4
|
import { normalizeRuntimeFormSchema } from "openxiangda/runtime";
|
|
5
5
|
import { useOpenXiangda } from "openxiangda/runtime/react";
|
|
6
|
+
import {
|
|
7
|
+
defaultPageOverrides,
|
|
8
|
+
resolveDefaultPageOverride,
|
|
9
|
+
type DefaultPageKind,
|
|
10
|
+
} from "@/runtime/default-page-overrides";
|
|
6
11
|
|
|
7
12
|
type Mode = "submit" | "detail" | "process";
|
|
8
13
|
|
|
@@ -45,24 +50,49 @@ export function FormRoutePage({ mode }: { mode: Mode }) {
|
|
|
45
50
|
|
|
46
51
|
const formType = String(schema?.template?.formType || schema?.formMeta?.formType || "").toLowerCase();
|
|
47
52
|
const isProcessForm = mode === "process" || formType === "process" || formType === "flow";
|
|
48
|
-
const pageMode =
|
|
53
|
+
const pageMode = mode === "process" ? "process" : mode === "detail" ? "detail" : "submit";
|
|
54
|
+
const overrideKind: DefaultPageKind =
|
|
55
|
+
pageMode === "process"
|
|
56
|
+
? "process-detail"
|
|
57
|
+
: pageMode === "detail"
|
|
58
|
+
? isProcessForm
|
|
59
|
+
? "process-detail"
|
|
60
|
+
: "form-detail"
|
|
61
|
+
: isProcessForm
|
|
62
|
+
? "process-submit"
|
|
63
|
+
: "form-submit";
|
|
64
|
+
const Override = resolveDefaultPageOverride(defaultPageOverrides, overrideKind, formUuid);
|
|
65
|
+
const defaultNode = (
|
|
66
|
+
<StandardFormPage
|
|
67
|
+
appType={appType}
|
|
68
|
+
formInstanceId={formInstId}
|
|
69
|
+
formUuid={formUuid}
|
|
70
|
+
mode={pageMode}
|
|
71
|
+
onSubmitSuccess={id =>
|
|
72
|
+
navigate(
|
|
73
|
+
isProcessForm
|
|
74
|
+
? `/view/${appType}/admin/process/${formUuid}/${id}`
|
|
75
|
+
: `/view/${appType}/admin/forms/${formUuid}/${id}`,
|
|
76
|
+
)
|
|
77
|
+
}
|
|
78
|
+
schema={schema}
|
|
79
|
+
/>
|
|
80
|
+
);
|
|
49
81
|
|
|
50
82
|
return (
|
|
51
83
|
<div className="ox-panel p-5">
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
schema={schema}
|
|
65
|
-
/>
|
|
84
|
+
{Override ? (
|
|
85
|
+
<Override
|
|
86
|
+
appType={appType}
|
|
87
|
+
defaultNode={defaultNode}
|
|
88
|
+
formInstId={formInstId}
|
|
89
|
+
formUuid={formUuid}
|
|
90
|
+
kind={overrideKind}
|
|
91
|
+
schema={schema}
|
|
92
|
+
/>
|
|
93
|
+
) : (
|
|
94
|
+
defaultNode
|
|
95
|
+
)}
|
|
66
96
|
</div>
|
|
67
97
|
);
|
|
68
98
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ComponentType, ReactNode } from "react";
|
|
2
|
+
|
|
3
|
+
export type DefaultPageKind =
|
|
4
|
+
| "form-submit"
|
|
5
|
+
| "process-submit"
|
|
6
|
+
| "form-detail"
|
|
7
|
+
| "process-detail"
|
|
8
|
+
| "data-manage-list"
|
|
9
|
+
| "file-preview";
|
|
10
|
+
|
|
11
|
+
export interface DefaultPageOverrideProps {
|
|
12
|
+
kind: DefaultPageKind;
|
|
13
|
+
appType: string;
|
|
14
|
+
formUuid?: string;
|
|
15
|
+
formInstId?: string;
|
|
16
|
+
schema?: any;
|
|
17
|
+
defaultNode: ReactNode;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export type DefaultPageOverrideComponent = ComponentType<DefaultPageOverrideProps>;
|
|
21
|
+
|
|
22
|
+
export type DefaultPageOverrides = Partial<
|
|
23
|
+
Record<DefaultPageKind, Record<string, DefaultPageOverrideComponent | undefined>>
|
|
24
|
+
>;
|
|
25
|
+
|
|
26
|
+
export const defaultPageOverrides: DefaultPageOverrides = {};
|
|
27
|
+
|
|
28
|
+
export function resolveDefaultPageOverride(
|
|
29
|
+
overrides: DefaultPageOverrides,
|
|
30
|
+
kind: DefaultPageKind,
|
|
31
|
+
formUuid?: string,
|
|
32
|
+
) {
|
|
33
|
+
const byKind = overrides[kind] || {};
|
|
34
|
+
return (formUuid && byKind[formUuid]) || byKind["*"];
|
|
35
|
+
}
|