openxiangda-cli 2.0.0-alpha.12 → 2.0.0-alpha.120

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.
Files changed (271) hide show
  1. package/README.md +13 -14
  2. package/bin/run.js +79 -1
  3. package/dist/base.d.ts +40 -5
  4. package/dist/base.d.ts.map +1 -1
  5. package/dist/base.js +123 -10
  6. package/dist/base.js.map +1 -1
  7. package/dist/commands/accept.d.ts +25 -0
  8. package/dist/commands/accept.d.ts.map +1 -0
  9. package/dist/commands/accept.js +21 -0
  10. package/dist/commands/accept.js.map +1 -0
  11. package/dist/commands/cancel.d.ts +16 -1
  12. package/dist/commands/cancel.d.ts.map +1 -1
  13. package/dist/commands/cancel.js +1 -1
  14. package/dist/commands/cancel.js.map +1 -1
  15. package/dist/commands/check.d.ts +17 -1
  16. package/dist/commands/check.d.ts.map +1 -1
  17. package/dist/commands/check.js +15 -3
  18. package/dist/commands/check.js.map +1 -1
  19. package/dist/commands/create.d.ts +25 -0
  20. package/dist/commands/create.d.ts.map +1 -0
  21. package/dist/commands/create.js +101 -0
  22. package/dist/commands/create.js.map +1 -0
  23. package/dist/commands/deploy.d.ts +21 -8
  24. package/dist/commands/deploy.d.ts.map +1 -1
  25. package/dist/commands/deploy.js +29 -16
  26. package/dist/commands/deploy.js.map +1 -1
  27. package/dist/commands/dev.d.ts +18 -1
  28. package/dist/commands/dev.d.ts.map +1 -1
  29. package/dist/commands/dev.js +24 -3
  30. package/dist/commands/dev.js.map +1 -1
  31. package/dist/commands/login.d.ts +26 -0
  32. package/dist/commands/login.d.ts.map +1 -0
  33. package/dist/commands/login.js +73 -0
  34. package/dist/commands/login.js.map +1 -0
  35. package/dist/commands/logs.d.ts +17 -2
  36. package/dist/commands/logs.d.ts.map +1 -1
  37. package/dist/commands/logs.js +2 -2
  38. package/dist/commands/logs.js.map +1 -1
  39. package/dist/commands/retry.d.ts +16 -1
  40. package/dist/commands/retry.d.ts.map +1 -1
  41. package/dist/commands/retry.js +5 -2
  42. package/dist/commands/retry.js.map +1 -1
  43. package/dist/commands/rollback.d.ts +17 -4
  44. package/dist/commands/rollback.d.ts.map +1 -1
  45. package/dist/commands/rollback.js +11 -4
  46. package/dist/commands/rollback.js.map +1 -1
  47. package/dist/commands/skill.d.ts +28 -0
  48. package/dist/commands/skill.d.ts.map +1 -0
  49. package/dist/commands/skill.js +43 -0
  50. package/dist/commands/skill.js.map +1 -0
  51. package/dist/commands/spec.d.ts +36 -0
  52. package/dist/commands/spec.d.ts.map +1 -0
  53. package/dist/commands/spec.js +117 -0
  54. package/dist/commands/spec.js.map +1 -0
  55. package/dist/commands/start.d.ts +25 -0
  56. package/dist/commands/start.d.ts.map +1 -0
  57. package/dist/commands/start.js +18 -0
  58. package/dist/commands/start.js.map +1 -0
  59. package/dist/commands/status.d.ts +16 -1
  60. package/dist/commands/status.d.ts.map +1 -1
  61. package/dist/commands/status.js +1 -1
  62. package/dist/commands/status.js.map +1 -1
  63. package/dist/commands/stop.d.ts +25 -0
  64. package/dist/commands/stop.d.ts.map +1 -0
  65. package/dist/commands/stop.js +18 -0
  66. package/dist/commands/stop.js.map +1 -0
  67. package/dist/create-workspace.d.ts +31 -0
  68. package/dist/create-workspace.d.ts.map +1 -0
  69. package/dist/create-workspace.js +273 -0
  70. package/dist/create-workspace.js.map +1 -0
  71. package/dist/toolchain-capsule.d.ts +4 -0
  72. package/dist/toolchain-capsule.d.ts.map +1 -0
  73. package/dist/toolchain-capsule.js +116 -0
  74. package/dist/toolchain-capsule.js.map +1 -0
  75. package/package.json +16 -9
  76. package/template/.dockerignore +23 -0
  77. package/template/.env.example +3 -0
  78. package/template/AGENTS.md +25 -0
  79. package/template/README.md +43 -0
  80. package/template/_gitignore +14 -0
  81. package/template/apps/server/Dockerfile +20 -0
  82. package/template/apps/server/package.json +27 -0
  83. package/template/apps/server/src/app.module.ts +43 -0
  84. package/template/apps/server/src/main.ts +5 -0
  85. package/template/apps/server/test/smoke.test.ts +16 -0
  86. package/template/apps/server/tsconfig.json +9 -0
  87. package/template/apps/web/data-api-live.e2e.html +15 -0
  88. package/template/apps/web/e2e/client-fixture.ts +5 -0
  89. package/template/apps/web/e2e/data-api-live-fixture.tsx +162 -0
  90. package/template/apps/web/e2e/data-api-live.spec.ts +144 -0
  91. package/template/apps/web/e2e/field-protocol-fixture.tsx +347 -0
  92. package/template/apps/web/e2e/field-protocol.spec.ts +195 -0
  93. package/template/apps/web/e2e/resource-experience-fixture.tsx +380 -0
  94. package/template/apps/web/e2e/resources.spec.ts +478 -0
  95. package/template/apps/web/e2e/workflow-experience-fixture.tsx +144 -0
  96. package/template/apps/web/e2e/workflow.spec.ts +576 -0
  97. package/template/apps/web/field-protocol.e2e.html +15 -0
  98. package/template/apps/web/index.html +12 -0
  99. package/template/apps/web/package.json +32 -0
  100. package/template/apps/web/playwright.config.ts +47 -0
  101. package/template/apps/web/resource-experience.e2e.html +15 -0
  102. package/template/apps/web/scripts/check.mjs +43 -0
  103. package/template/apps/web/scripts/verify-build.mjs +6 -0
  104. package/template/apps/web/src/main.tsx +41 -0
  105. package/template/apps/web/test/contracts.test.ts +149 -0
  106. package/template/apps/web/test/loopback.test.ts +62 -0
  107. package/template/apps/web/tsconfig.json +12 -0
  108. package/template/apps/web/vite.config.ts +40 -0
  109. package/template/apps/web/workflow-experience.e2e.html +15 -0
  110. package/template/appspec/app.md +36 -0
  111. package/template/openxiangda.config.ts +34 -0
  112. package/template/package.json +28 -0
  113. package/template/packages/contracts/package.json +23 -0
  114. package/template/packages/contracts/src/generated.ts +135 -0
  115. package/template/packages/contracts/src/index.ts +1 -0
  116. package/template/packages/contracts/tsconfig.json +9 -0
  117. package/template/pnpm-workspace.yaml +7 -0
  118. package/template/scripts/verify-template-budget.mjs +49 -0
  119. package/template/tsconfig.base.json +13 -0
  120. package/dist/commands/app/create.d.ts +0 -15
  121. package/dist/commands/app/create.d.ts.map +0 -1
  122. package/dist/commands/app/create.js +0 -42
  123. package/dist/commands/app/create.js.map +0 -1
  124. package/dist/commands/app/info.d.ts +0 -9
  125. package/dist/commands/app/info.d.ts.map +0 -1
  126. package/dist/commands/app/info.js +0 -10
  127. package/dist/commands/app/info.js.map +0 -1
  128. package/dist/commands/app/link.d.ts +0 -10
  129. package/dist/commands/app/link.d.ts.map +0 -1
  130. package/dist/commands/app/link.js +0 -16
  131. package/dist/commands/app/link.js.map +0 -1
  132. package/dist/commands/app/provision.d.ts +0 -9
  133. package/dist/commands/app/provision.d.ts.map +0 -1
  134. package/dist/commands/app/provision.js +0 -10
  135. package/dist/commands/app/provision.js.map +0 -1
  136. package/dist/commands/auth/login.d.ts +0 -10
  137. package/dist/commands/auth/login.d.ts.map +0 -1
  138. package/dist/commands/auth/login.js +0 -34
  139. package/dist/commands/auth/login.js.map +0 -1
  140. package/dist/commands/auth/logout.d.ts +0 -6
  141. package/dist/commands/auth/logout.d.ts.map +0 -1
  142. package/dist/commands/auth/logout.js +0 -10
  143. package/dist/commands/auth/logout.js.map +0 -1
  144. package/dist/commands/auth/status.d.ts +0 -6
  145. package/dist/commands/auth/status.d.ts.map +0 -1
  146. package/dist/commands/auth/status.js +0 -19
  147. package/dist/commands/auth/status.js.map +0 -1
  148. package/dist/commands/build.d.ts +0 -11
  149. package/dist/commands/build.d.ts.map +0 -1
  150. package/dist/commands/build.js +0 -23
  151. package/dist/commands/build.js.map +0 -1
  152. package/dist/commands/doctor.d.ts +0 -9
  153. package/dist/commands/doctor.d.ts.map +0 -1
  154. package/dist/commands/doctor.js +0 -7
  155. package/dist/commands/doctor.js.map +0 -1
  156. package/dist/commands/event/delivery/list.d.ts +0 -10
  157. package/dist/commands/event/delivery/list.d.ts.map +0 -1
  158. package/dist/commands/event/delivery/list.js +0 -14
  159. package/dist/commands/event/delivery/list.js.map +0 -1
  160. package/dist/commands/event/delivery/replay.d.ts +0 -13
  161. package/dist/commands/event/delivery/replay.d.ts.map +0 -1
  162. package/dist/commands/event/delivery/replay.js +0 -16
  163. package/dist/commands/event/delivery/replay.js.map +0 -1
  164. package/dist/commands/event/subscription/list.d.ts +0 -9
  165. package/dist/commands/event/subscription/list.d.ts.map +0 -1
  166. package/dist/commands/event/subscription/list.js +0 -10
  167. package/dist/commands/event/subscription/list.js.map +0 -1
  168. package/dist/commands/event/subscription/rotate-secret.d.ts +0 -15
  169. package/dist/commands/event/subscription/rotate-secret.d.ts.map +0 -1
  170. package/dist/commands/event/subscription/rotate-secret.js +0 -33
  171. package/dist/commands/event/subscription/rotate-secret.js.map +0 -1
  172. package/dist/commands/event/subscription/status.d.ts +0 -14
  173. package/dist/commands/event/subscription/status.d.ts.map +0 -1
  174. package/dist/commands/event/subscription/status.js +0 -19
  175. package/dist/commands/event/subscription/status.js.map +0 -1
  176. package/dist/commands/event/timer/list.d.ts +0 -9
  177. package/dist/commands/event/timer/list.d.ts.map +0 -1
  178. package/dist/commands/event/timer/list.js +0 -10
  179. package/dist/commands/event/timer/list.js.map +0 -1
  180. package/dist/commands/event/timer/status.d.ts +0 -14
  181. package/dist/commands/event/timer/status.d.ts.map +0 -1
  182. package/dist/commands/event/timer/status.js +0 -19
  183. package/dist/commands/event/timer/status.js.map +0 -1
  184. package/dist/commands/generate.d.ts +0 -10
  185. package/dist/commands/generate.d.ts.map +0 -1
  186. package/dist/commands/generate.js +0 -8
  187. package/dist/commands/generate.js.map +0 -1
  188. package/dist/commands/oauth/audit/list.d.ts +0 -12
  189. package/dist/commands/oauth/audit/list.d.ts.map +0 -1
  190. package/dist/commands/oauth/audit/list.js +0 -20
  191. package/dist/commands/oauth/audit/list.js.map +0 -1
  192. package/dist/commands/oauth/client/create.d.ts +0 -13
  193. package/dist/commands/oauth/client/create.d.ts.map +0 -1
  194. package/dist/commands/oauth/client/create.js +0 -34
  195. package/dist/commands/oauth/client/create.js.map +0 -1
  196. package/dist/commands/oauth/client/list.d.ts +0 -9
  197. package/dist/commands/oauth/client/list.d.ts.map +0 -1
  198. package/dist/commands/oauth/client/list.js +0 -10
  199. package/dist/commands/oauth/client/list.js.map +0 -1
  200. package/dist/commands/oauth/client/revoke.d.ts +0 -12
  201. package/dist/commands/oauth/client/revoke.d.ts.map +0 -1
  202. package/dist/commands/oauth/client/revoke.js +0 -12
  203. package/dist/commands/oauth/client/revoke.js.map +0 -1
  204. package/dist/commands/oauth/client/rotate.d.ts +0 -13
  205. package/dist/commands/oauth/client/rotate.d.ts.map +0 -1
  206. package/dist/commands/oauth/client/rotate.js +0 -20
  207. package/dist/commands/oauth/client/rotate.js.map +0 -1
  208. package/dist/commands/oauth/client/update.d.ts +0 -15
  209. package/dist/commands/oauth/client/update.d.ts.map +0 -1
  210. package/dist/commands/oauth/client/update.js +0 -23
  211. package/dist/commands/oauth/client/update.js.map +0 -1
  212. package/dist/commands/oauth/runtime/rotate.d.ts +0 -12
  213. package/dist/commands/oauth/runtime/rotate.d.ts.map +0 -1
  214. package/dist/commands/oauth/runtime/rotate.js +0 -31
  215. package/dist/commands/oauth/runtime/rotate.js.map +0 -1
  216. package/dist/commands/oauth/runtime/status.d.ts +0 -10
  217. package/dist/commands/oauth/runtime/status.d.ts.map +0 -1
  218. package/dist/commands/oauth/runtime/status.js +0 -17
  219. package/dist/commands/oauth/runtime/status.js.map +0 -1
  220. package/dist/commands/promote.d.ts +0 -13
  221. package/dist/commands/promote.d.ts.map +0 -1
  222. package/dist/commands/promote.js +0 -9
  223. package/dist/commands/promote.js.map +0 -1
  224. package/dist/commands/secret/audit/list.d.ts +0 -14
  225. package/dist/commands/secret/audit/list.d.ts.map +0 -1
  226. package/dist/commands/secret/audit/list.js +0 -16
  227. package/dist/commands/secret/audit/list.js.map +0 -1
  228. package/dist/commands/secret/create.d.ts +0 -18
  229. package/dist/commands/secret/create.d.ts.map +0 -1
  230. package/dist/commands/secret/create.js +0 -33
  231. package/dist/commands/secret/create.js.map +0 -1
  232. package/dist/commands/secret/delete.d.ts +0 -15
  233. package/dist/commands/secret/delete.d.ts.map +0 -1
  234. package/dist/commands/secret/delete.js +0 -20
  235. package/dist/commands/secret/delete.js.map +0 -1
  236. package/dist/commands/secret/list.d.ts +0 -10
  237. package/dist/commands/secret/list.d.ts.map +0 -1
  238. package/dist/commands/secret/list.js +0 -14
  239. package/dist/commands/secret/list.js.map +0 -1
  240. package/dist/commands/secret/rotate.d.ts +0 -18
  241. package/dist/commands/secret/rotate.d.ts.map +0 -1
  242. package/dist/commands/secret/rotate.js +0 -30
  243. package/dist/commands/secret/rotate.js.map +0 -1
  244. package/dist/commands/secret/update.d.ts +0 -17
  245. package/dist/commands/secret/update.d.ts.map +0 -1
  246. package/dist/commands/secret/update.js +0 -37
  247. package/dist/commands/secret/update.js.map +0 -1
  248. package/dist/commands/skill/install.d.ts +0 -11
  249. package/dist/commands/skill/install.d.ts.map +0 -1
  250. package/dist/commands/skill/install.js +0 -52
  251. package/dist/commands/skill/install.js.map +0 -1
  252. package/dist/commands/skill/validate.d.ts +0 -9
  253. package/dist/commands/skill/validate.d.ts.map +0 -1
  254. package/dist/commands/skill/validate.js +0 -32
  255. package/dist/commands/skill/validate.js.map +0 -1
  256. package/dist/commands/test.d.ts +0 -9
  257. package/dist/commands/test.d.ts.map +0 -1
  258. package/dist/commands/test.js +0 -7
  259. package/dist/commands/test.js.map +0 -1
  260. package/dist/commands/workflow/provider/list.d.ts +0 -10
  261. package/dist/commands/workflow/provider/list.d.ts.map +0 -1
  262. package/dist/commands/workflow/provider/list.js +0 -14
  263. package/dist/commands/workflow/provider/list.js.map +0 -1
  264. package/dist/commands/workflow/provider/rotate.d.ts +0 -15
  265. package/dist/commands/workflow/provider/rotate.d.ts.map +0 -1
  266. package/dist/commands/workflow/provider/rotate.js +0 -24
  267. package/dist/commands/workflow/provider/rotate.js.map +0 -1
  268. package/dist/secret-value.d.ts +0 -5
  269. package/dist/secret-value.d.ts.map +0 -1
  270. package/dist/secret-value.js +0 -15
  271. package/dist/secret-value.js.map +0 -1
@@ -0,0 +1,380 @@
1
+ import React from 'react';
2
+ import ReactDOM from 'react-dom/client';
3
+ import { Button, Typography } from 'antd';
4
+ import {
5
+ defineApplicationContributions,
6
+ OpenXiangdaApplication,
7
+ } from 'openxiangda/react';
8
+ import type { DataFieldSurface, DataResourceSurface } from 'openxiangda/core';
9
+ import 'openxiangda/react/styles.css';
10
+
11
+ const field = (
12
+ label: string,
13
+ type: DataFieldSurface['type'] = 'text.short',
14
+ widget: DataFieldSurface['widget'] = 'text',
15
+ extra: Partial<DataFieldSurface> = {}
16
+ ): DataFieldSurface => ({
17
+ label,
18
+ type,
19
+ widget,
20
+ readCapabilities: [],
21
+ createCapabilities: [],
22
+ updateCapabilities: [],
23
+ ...extra,
24
+ });
25
+
26
+ const fields: DataResourceSurface['fields'] = {
27
+ description: field('栏目说明', 'text.long', 'textarea', {
28
+ section: '栏目设置',
29
+ }),
30
+ status: field('状态', 'option.single', 'select', {
31
+ options: [
32
+ { label: '启用', value: 'enabled' },
33
+ { label: '停用', value: 'disabled' },
34
+ ],
35
+ section: '栏目设置',
36
+ }),
37
+ name: field('栏目名称', 'text.short', 'text', { section: '栏目设置' }),
38
+ code: field('栏目编码', 'text.short', 'text', { section: '栏目设置' }),
39
+ contentType: field('内容类型', 'option.single', 'select', {
40
+ options: [
41
+ { label: '文章', value: 'article' },
42
+ { label: '图集', value: 'gallery' },
43
+ ],
44
+ section: '栏目设置',
45
+ }),
46
+ manager: field('栏目管理员', 'user.single', 'directory-user', {
47
+ section: '管理信息',
48
+ }),
49
+ facility: field('配套设施', 'option.multiple', 'multi-select', {
50
+ options: [
51
+ { label: '投影仪', value: 'projector' },
52
+ { label: '白板', value: 'whiteboard' },
53
+ ],
54
+ section: '管理信息',
55
+ }),
56
+ openingDay: field('开放星期', 'option.single', 'select', {
57
+ options: [
58
+ { label: '工作日', value: 'weekday' },
59
+ { label: '周末', value: 'weekend' },
60
+ ],
61
+ section: '管理信息',
62
+ }),
63
+ };
64
+
65
+ const surface: DataResourceSurface = {
66
+ mutationOwner: 'native',
67
+ generated: {
68
+ list: true,
69
+ detail: true,
70
+ create: true,
71
+ update: true,
72
+ delete: true,
73
+ },
74
+ fields,
75
+ list: {
76
+ defaultPageSize: 20,
77
+ searchableFields: ['name', 'code'],
78
+ filterFields: ['contentType', 'status', 'manager', 'facility', 'openingDay'],
79
+ defaultSort: { field: 'code', order: 'asc' },
80
+ },
81
+ form: {
82
+ layout: 'sections',
83
+ fieldOrder: [
84
+ 'code',
85
+ 'name',
86
+ 'contentType',
87
+ 'description',
88
+ 'status',
89
+ 'manager',
90
+ 'facility',
91
+ 'openingDay',
92
+ ],
93
+ },
94
+ detail: {
95
+ layout: 'sections',
96
+ fieldOrder: [
97
+ 'code',
98
+ 'name',
99
+ 'contentType',
100
+ 'description',
101
+ 'status',
102
+ 'manager',
103
+ 'facility',
104
+ 'openingDay',
105
+ ],
106
+ },
107
+ mobile: { enabled: true },
108
+ };
109
+
110
+ const names = [
111
+ '内容栏目',
112
+ '内容文章',
113
+ '内容专题',
114
+ '会员档案',
115
+ '门户轮播',
116
+ '工会小组',
117
+ '场地预约',
118
+ '场地不可用时段',
119
+ '场地档案',
120
+ '通知公告',
121
+ '活动报名',
122
+ '资料下载',
123
+ ];
124
+ const resourceDefinitions = Object.fromEntries(
125
+ names.map((name, index) => {
126
+ const code = `resource-${String(index + 1).padStart(2, '0')}`;
127
+ return [
128
+ code,
129
+ {
130
+ code,
131
+ name,
132
+ capabilities: {
133
+ read: `app:openxiangda-application:data:${code}:read`,
134
+ create: `app:openxiangda-application:data:${code}:create`,
135
+ update: `app:openxiangda-application:data:${code}:update`,
136
+ delete: `app:openxiangda-application:data:${code}:delete`,
137
+ },
138
+ surface,
139
+ },
140
+ ];
141
+ })
142
+ );
143
+
144
+ function ContentOperationsPage() {
145
+ return <Typography.Title level={2}>内容业务操作</Typography.Title>;
146
+ }
147
+
148
+ function ResourcePortalPage() {
149
+ return <Typography.Title level={2}>用户端内容门户</Typography.Title>;
150
+ }
151
+
152
+ const applicationContributions = defineApplicationContributions(
153
+ {
154
+ contentOperations: {
155
+ code: 'content-operations',
156
+ path: '/admin/operations/content',
157
+ label: '内容业务操作',
158
+ surface: 'admin',
159
+ capability: 'app:openxiangda-application:operations:read',
160
+ tabPersistence: 'session',
161
+ keepAlive: 'none',
162
+ },
163
+ resourcePortal: {
164
+ code: 'resource-portal',
165
+ path: '/resource-01',
166
+ label: '用户端内容门户',
167
+ surface: 'user',
168
+ tabPersistence: 'session',
169
+ keepAlive: 'none',
170
+ },
171
+ } as const,
172
+ {
173
+ pages: {
174
+ contentOperations: ContentOperationsPage,
175
+ resourcePortal: ResourcePortalPage,
176
+ },
177
+ resources: {
178
+ 'resource-01': {
179
+ toolbar: [
180
+ {
181
+ code: 'publish-selected',
182
+ label: '发布选中栏目',
183
+ capability: 'app:openxiangda-application:operations:read',
184
+ render: ({ selectedRecords }) => (
185
+ <Button>发布选中栏目({selectedRecords.length})</Button>
186
+ ),
187
+ },
188
+ ],
189
+ },
190
+ },
191
+ },
192
+ );
193
+
194
+ if (location.pathname.endsWith('/resource-experience.e2e.html')) {
195
+ history.replaceState({}, '', '/admin/resources/resource-01');
196
+ }
197
+
198
+ ReactDOM.createRoot(document.getElementById('root')!).render(
199
+ <React.StrictMode>
200
+ <OpenXiangdaApplication
201
+ appCode="openxiangda-application"
202
+ appName="资源体验验收"
203
+ adminNavigation={[
204
+ {
205
+ code: 'resources',
206
+ label: '数据管理',
207
+ icon: 'database',
208
+ order: 0,
209
+ items: [
210
+ { pageCode: 'resource:resource-01:list', label: '内容栏目', order: 0 },
211
+ { pageCode: 'resource:resource-02:list', label: '内容文章', order: 1 },
212
+ { pageCode: 'resource:resource-03:list', label: '内容专题', order: 2 },
213
+ { pageCode: 'resource:resource-04:list', label: '会员档案', order: 3 },
214
+ { pageCode: 'resource:resource-05:list', label: '门户轮播', order: 4 },
215
+ { pageCode: 'resource:resource-06:list', label: '工会小组', order: 5 },
216
+ { pageCode: 'resource:resource-07:list', label: '场地预约', order: 6 },
217
+ {
218
+ pageCode: 'resource:resource-08:list',
219
+ label: '场地不可用时段',
220
+ order: 7,
221
+ },
222
+ { pageCode: 'resource:resource-09:list', label: '场地档案', order: 8 },
223
+ { pageCode: 'resource:resource-10:list', label: '通知公告', order: 9 },
224
+ { pageCode: 'resource:resource-11:list', label: '活动报名', order: 10 },
225
+ { pageCode: 'resource:resource-12:list', label: '资料下载', order: 11 },
226
+ { pageCode: 'operation:content-operations', order: 12 },
227
+ ],
228
+ },
229
+ ]}
230
+ adminPages={[
231
+ {
232
+ code: 'resource:resource-01:list',
233
+ kind: 'resource-list',
234
+ path: '/admin/resources/resource-01',
235
+ label: '资源 01',
236
+ navigationEligible: true,
237
+ capability: resourceDefinitions['resource-01'].capabilities.read,
238
+ resourceCode: 'resource-01',
239
+ },
240
+ {
241
+ code: 'resource:resource-01:detail',
242
+ kind: 'resource-detail',
243
+ path: '/admin/resources/resource-01/:id',
244
+ label: '资源 01 详情',
245
+ navigationEligible: false,
246
+ capability: resourceDefinitions['resource-01'].capabilities.read,
247
+ resourceCode: 'resource-01',
248
+ },
249
+ {
250
+ code: 'resource:resource-01:create',
251
+ kind: 'resource-create',
252
+ path: '/admin/resources/resource-01/new',
253
+ label: '新增资源 01',
254
+ navigationEligible: false,
255
+ capability: resourceDefinitions['resource-01'].capabilities.create,
256
+ resourceCode: 'resource-01',
257
+ },
258
+ {
259
+ code: 'resource:resource-01:update',
260
+ kind: 'resource-update',
261
+ path: '/admin/resources/resource-01/:id/edit',
262
+ label: '编辑资源 01',
263
+ navigationEligible: false,
264
+ capability: resourceDefinitions['resource-01'].capabilities.update,
265
+ resourceCode: 'resource-01',
266
+ },
267
+ {
268
+ code: 'resource:resource-02:list',
269
+ kind: 'resource-list',
270
+ path: '/admin/resources/resource-02',
271
+ label: '内容文章',
272
+ navigationEligible: true,
273
+ capability: resourceDefinitions['resource-02'].capabilities.read,
274
+ resourceCode: 'resource-02',
275
+ },
276
+ {
277
+ code: 'resource:resource-03:list',
278
+ kind: 'resource-list',
279
+ path: '/admin/resources/resource-03',
280
+ label: '内容专题',
281
+ navigationEligible: true,
282
+ capability: resourceDefinitions['resource-03'].capabilities.read,
283
+ resourceCode: 'resource-03',
284
+ },
285
+ {
286
+ code: 'resource:resource-04:list',
287
+ kind: 'resource-list',
288
+ path: '/admin/resources/resource-04',
289
+ label: '会员档案',
290
+ navigationEligible: true,
291
+ capability: resourceDefinitions['resource-04'].capabilities.read,
292
+ resourceCode: 'resource-04',
293
+ },
294
+ {
295
+ code: 'resource:resource-05:list',
296
+ kind: 'resource-list',
297
+ path: '/admin/resources/resource-05',
298
+ label: '门户轮播',
299
+ navigationEligible: true,
300
+ capability: resourceDefinitions['resource-05'].capabilities.read,
301
+ resourceCode: 'resource-05',
302
+ },
303
+ {
304
+ code: 'resource:resource-06:list',
305
+ kind: 'resource-list',
306
+ path: '/admin/resources/resource-06',
307
+ label: '工会小组',
308
+ navigationEligible: true,
309
+ capability: resourceDefinitions['resource-06'].capabilities.read,
310
+ resourceCode: 'resource-06',
311
+ },
312
+ {
313
+ code: 'resource:resource-07:list',
314
+ kind: 'resource-list',
315
+ path: '/admin/resources/resource-07',
316
+ label: '场地预约',
317
+ navigationEligible: true,
318
+ capability: resourceDefinitions['resource-07'].capabilities.read,
319
+ resourceCode: 'resource-07',
320
+ },
321
+ {
322
+ code: 'resource:resource-08:list',
323
+ kind: 'resource-list',
324
+ path: '/admin/resources/resource-08',
325
+ label: '场地不可用时段',
326
+ navigationEligible: true,
327
+ capability: resourceDefinitions['resource-08'].capabilities.read,
328
+ resourceCode: 'resource-08',
329
+ },
330
+ {
331
+ code: 'resource:resource-09:list',
332
+ kind: 'resource-list',
333
+ path: '/admin/resources/resource-09',
334
+ label: '场地档案',
335
+ navigationEligible: true,
336
+ capability: resourceDefinitions['resource-09'].capabilities.read,
337
+ resourceCode: 'resource-09',
338
+ },
339
+ {
340
+ code: 'resource:resource-10:list',
341
+ kind: 'resource-list',
342
+ path: '/admin/resources/resource-10',
343
+ label: '通知公告',
344
+ navigationEligible: true,
345
+ capability: resourceDefinitions['resource-10'].capabilities.read,
346
+ resourceCode: 'resource-10',
347
+ },
348
+ {
349
+ code: 'resource:resource-11:list',
350
+ kind: 'resource-list',
351
+ path: '/admin/resources/resource-11',
352
+ label: '活动报名',
353
+ navigationEligible: true,
354
+ capability: resourceDefinitions['resource-11'].capabilities.read,
355
+ resourceCode: 'resource-11',
356
+ },
357
+ {
358
+ code: 'resource:resource-12:list',
359
+ kind: 'resource-list',
360
+ path: '/admin/resources/resource-12',
361
+ label: '资料下载',
362
+ navigationEligible: true,
363
+ capability: resourceDefinitions['resource-12'].capabilities.read,
364
+ resourceCode: 'resource-12',
365
+ },
366
+ {
367
+ code: 'operation:content-operations',
368
+ kind: 'operation',
369
+ path: '/admin/operations/content',
370
+ label: '内容业务操作',
371
+ navigationEligible: true,
372
+ capability: 'app:openxiangda-application:operations:read',
373
+ routeCode: 'content-operations',
374
+ },
375
+ ]}
376
+ contributions={applicationContributions}
377
+ resourceDefinitions={resourceDefinitions}
378
+ />
379
+ </React.StrictMode>
380
+ );