neo-cmp-cli 1.12.8 → 1.12.10

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 (161) hide show
  1. package/README.md +204 -6
  2. package/dist/index2.js +1 -1
  3. package/dist/module/neoInitByCopy.js +1 -1
  4. package/dist/neo/env.js +1 -1
  5. package/dist/package.json.js +1 -1
  6. package/package.json +4 -1
  7. package/template/antd-custom-cmp-template/package.json +1 -1
  8. package/template/asset-manage-template/README.md +154 -0
  9. package/template/asset-manage-template/docs/README.md +244 -0
  10. package/template/asset-manage-template/neo.config.js +60 -0
  11. package/template/asset-manage-template/package.json +74 -0
  12. package/template/asset-manage-template/src/assets/img/chart.svg +1 -0
  13. package/template/asset-manage-template/src/components/README.md +3 -0
  14. package/template/asset-manage-template/src/components/assetManage__c/assetApi.ts +70 -0
  15. package/template/asset-manage-template/src/components/assetManage__c/cmps/AssetCreateModal.tsx +260 -0
  16. package/template/asset-manage-template/src/components/assetManage__c/cmps/AssetGrid.tsx +48 -0
  17. package/template/asset-manage-template/src/components/assetManage__c/cmps/AssetSidebar.tsx +74 -0
  18. package/template/asset-manage-template/src/components/assetManage__c/cmps/AssetToolbar.tsx +79 -0
  19. package/template/asset-manage-template/src/components/assetManage__c/cmps/assetDisplay.tsx +72 -0
  20. package/template/asset-manage-template/src/components/assetManage__c/constants.ts +28 -0
  21. package/template/asset-manage-template/src/components/assetManage__c/index.tsx +258 -0
  22. package/template/asset-manage-template/src/components/assetManage__c/model.ts +75 -0
  23. package/template/asset-manage-template/src/components/assetManage__c/style.scss +425 -0
  24. package/template/asset-manage-template/src/components/assetManage__c/types.ts +60 -0
  25. package/template/asset-manage-template/src/components/bidList__c/cmps/BidCard.tsx +47 -0
  26. package/template/asset-manage-template/src/components/bidList__c/constants.ts +6 -0
  27. package/template/asset-manage-template/src/components/bidList__c/formatUtils.ts +14 -0
  28. package/template/asset-manage-template/src/components/bidList__c/index.tsx +194 -0
  29. package/template/asset-manage-template/src/components/bidList__c/model.ts +57 -0
  30. package/template/asset-manage-template/src/components/bidList__c/style.scss +179 -0
  31. package/template/asset-manage-template/src/components/bidList__c/types.ts +10 -0
  32. package/template/asset-manage-template/src/components/bidPackage__c/cmps/BidPackageHeader.tsx +140 -0
  33. package/template/asset-manage-template/src/components/bidPackage__c/cmps/PackageItemTable.tsx +148 -0
  34. package/template/asset-manage-template/src/components/bidPackage__c/index.tsx +394 -0
  35. package/template/asset-manage-template/src/components/bidPackage__c/mainTableColumns.tsx +57 -0
  36. package/template/asset-manage-template/src/components/bidPackage__c/model.ts +86 -0
  37. package/template/asset-manage-template/src/components/bidPackage__c/style.scss +256 -0
  38. package/template/asset-manage-template/src/components/bidPackage__c/types.ts +35 -0
  39. package/template/asset-manage-template/src/components/bidPackage__c/utils.ts +19 -0
  40. package/template/{neo-bi-cmps → asset-manage-template}/src/utils/axiosFetcher.ts +0 -0
  41. package/template/{neo-bi-cmps → asset-manage-template}/src/utils/queryObjectData.ts +36 -0
  42. package/template/asset-manage-template/src/utils/url.ts +82 -0
  43. package/template/{neo-bi-cmps → asset-manage-template}/src/utils/xobjects.ts +0 -0
  44. package/template/asset-manage-template/tsconfig.json +40 -0
  45. package/template/echarts-custom-cmp-template/package.json +1 -1
  46. package/template/empty-custom-cmp-template/package.json +2 -2
  47. package/template/neo-custom-cmp-template/package.json +5 -2
  48. package/template/neo-custom-cmp-template/src/components/entityTable__c/index.tsx +62 -6
  49. package/template/neo-custom-cmp-template/src/utils/queryObjectData.ts +36 -0
  50. package/template/neo-custom-cmp-template/tsconfig.json +1 -2
  51. package/template/neo-h5-cmps/neo.config.js +1 -6
  52. package/template/neo-h5-cmps/package.json +7 -4
  53. package/template/neo-h5-cmps/src/utils/queryObjectData.ts +36 -0
  54. package/template/neo-h5-cmps/tsconfig.json +3 -4
  55. package/template/neo-order-cmps/package.json +2 -2
  56. package/template/neo-order-cmps/src/utils/queryObjectData.ts +36 -0
  57. package/template/neo-web-cmps/@types/neo-ui-common.d.ts +36 -0
  58. package/template/neo-web-cmps/neo.config.js +53 -0
  59. package/template/{neo-bi-cmps → neo-web-cmps}/package.json +10 -7
  60. package/template/neo-web-cmps/src/assets/img/AIBtn.gif +0 -0
  61. package/template/neo-web-cmps/src/assets/img/aiLogo.png +0 -0
  62. package/template/neo-web-cmps/src/assets/img/card-list.svg +1 -0
  63. package/template/neo-web-cmps/src/assets/img/contact-form.svg +1 -0
  64. package/template/neo-web-cmps/src/assets/img/custom-form.svg +1 -0
  65. package/template/neo-web-cmps/src/assets/img/data-list.svg +1 -0
  66. package/template/neo-web-cmps/src/assets/img/detail.svg +1 -0
  67. package/template/neo-web-cmps/src/assets/img/map.svg +1 -0
  68. package/template/neo-web-cmps/src/assets/img/search.svg +1 -0
  69. package/template/neo-web-cmps/src/components/entityGrid2__c/index.tsx +72 -0
  70. package/template/neo-web-cmps/src/components/entityGrid2__c/model.ts +195 -0
  71. package/template/neo-web-cmps/src/components/entityGrid2__c/style.scss +13 -0
  72. package/template/neo-web-cmps/src/components/entityGrid__c/index.tsx +52 -0
  73. package/template/neo-web-cmps/src/components/entityGrid__c/model.ts +195 -0
  74. package/template/neo-web-cmps/src/components/entityGrid__c/style.scss +13 -0
  75. package/template/neo-web-cmps/src/utils/axiosFetcher.ts +37 -0
  76. package/template/neo-web-cmps/src/utils/queryObjectData.ts +112 -0
  77. package/template/{develop/neo-custom-cmp-template → neo-web-cmps}/src/utils/xobjects.ts +28 -64
  78. package/template/{neo-bi-cmps → neo-web-cmps}/tsconfig.json +2 -3
  79. package/template/react-custom-cmp-template/package.json +1 -1
  80. package/template/react-ts-custom-cmp-template/package.json +1 -1
  81. package/template/vue2-custom-cmp-template/package.json +1 -1
  82. package/template/develop/BI /351/241/271/347/233/256/345/210/206/346/236/220/346/212/245/345/221/212.md" +0 -562
  83. package/template/develop/ChatPage /347/273/204/344/273/266/344/275/277/347/224/250/350/257/264/346/230/216/346/226/207/346/241/243.md" +0 -507
  84. package/template/develop/EntityGrid Web /347/273/204/344/273/266/347/232/204/350/257/246/347/273/206/345/210/206/346/236/220/346/226/207/346/241/243.md" +0 -868
  85. package/template/develop/EntityList H5 /347/273/204/344/273/266/347/232/204/350/257/246/347/273/206/345/210/206/346/236/220/346/226/207/346/241/243.md" +0 -1386
  86. package/template/develop/GlobalSearch/347/273/204/344/273/266/345/257/271/346/257/224/345/210/206/346/236/220.md +0 -866
  87. package/template/develop/Neo /344/270/255/345/217/257/347/224/250 amis /347/273/204/344/273/266.md" +0 -1490
  88. package/template/develop/cmpEventFunctions.ts +0 -257
  89. package/template/develop/cmpEvents.ts +0 -864
  90. package/template/develop/comTree/347/224/237/346/210/220/350/277/207/347/250/213/345/210/206/346/236/220.md +0 -469
  91. package/template/develop/commonModules.js +0 -55
  92. package/template/develop/components-table.md +0 -50
  93. package/template/develop/neo-custom-cmp-template/README.md +0 -48
  94. package/template/develop/neo-custom-cmp-template/docs/README.md +0 -13
  95. package/template/develop/neo-custom-cmp-template/neo.config.js +0 -121
  96. package/template/develop/neo-custom-cmp-template/package.json +0 -63
  97. package/template/develop/neo-custom-cmp-template/src/components/contactCardList/README.md +0 -65
  98. package/template/develop/neo-custom-cmp-template/src/components/contactCardList/index.tsx +0 -180
  99. package/template/develop/neo-custom-cmp-template/src/components/contactCardList/model.ts +0 -50
  100. package/template/develop/neo-custom-cmp-template/src/components/contactCardList/style.scss +0 -260
  101. package/template/develop/neo-custom-cmp-template/src/components/contactForm/README.md +0 -94
  102. package/template/develop/neo-custom-cmp-template/src/components/contactForm/index.tsx +0 -252
  103. package/template/develop/neo-custom-cmp-template/src/components/contactForm/model.ts +0 -56
  104. package/template/develop/neo-custom-cmp-template/src/components/contactForm/style.scss +0 -120
  105. package/template/develop/neo-custom-cmp-template/src/components/neoEntityGrid/README.md +0 -115
  106. package/template/develop/neo-custom-cmp-template/src/components/neoEntityGrid/index.tsx +0 -304
  107. package/template/develop/neo-custom-cmp-template/src/components/neoEntityGrid/model.ts +0 -87
  108. package/template/develop/neo-custom-cmp-template/src/components/neoEntityGrid/style.scss +0 -127
  109. package/template/develop/neo-custom-cmp-template/src/utils/axiosFetcher.ts +0 -29
  110. package/template/develop/neo-custom-cmp-template/src/utils/queryObjectData.ts +0 -39
  111. package/template/develop/neo-custom-cmp-template/tsconfig.json +0 -68
  112. package/template/develop/neo-ui-component-h5.md +0 -105
  113. package/template/develop/neo-ui-component-web-xregister.md +0 -31
  114. package/template/develop/neo-ui-component-web.md +0 -292
  115. package/template/develop/neoCmps.ts +0 -7508
  116. package/template/develop/neoGlobalSearchInput /347/273/204/344/273/266/347/232/204/350/257/246/347/273/206/345/210/206/346/236/220/346/226/207/346/241/243.md" +0 -497
  117. package/template/develop/pageSchema1.json +0 -744
  118. package/template/develop//344/272/213/344/273/266/345/212/250/344/275/234/344/277/235/345/255/230/346/265/201/347/250/213/345/210/206/346/236/220.md +0 -390
  119. package/template/develop//345/215/225/345/205/203/346/265/213/350/257/225/344/275/277/347/224/250/350/257/264/346/230/216.md +0 -1139
  120. package/template/develop//345/261/236/346/200/247/351/205/215/347/275/256/351/241/271/347/261/273/345/236/213/346/261/207/346/200/273.md +0 -558
  121. package/template/neo-bi-cmps/neo.config.js +0 -124
  122. package/template/neo-bi-cmps/src/components/targetNumber__c/README.md +0 -100
  123. package/template/neo-bi-cmps/src/components/targetNumber__c/customStyleConfig/configSchema.ts +0 -253
  124. package/template/neo-bi-cmps/src/components/targetNumber__c/customStyleConfig/index.scss +0 -76
  125. package/template/neo-bi-cmps/src/components/targetNumber__c/customStyleConfig/index.tsx +0 -148
  126. package/template/neo-bi-cmps/src/components/targetNumber__c/index.tsx +0 -440
  127. package/template/neo-bi-cmps/src/components/targetNumber__c/model.ts +0 -128
  128. package/template/neo-bi-cmps/src/components/targetNumber__c/style.scss +0 -173
  129. /package/template/{develop/neo-custom-cmp-template → asset-manage-template}/.prettierrc.js +0 -0
  130. /package/template/{neo-bi-cmps → asset-manage-template}/@types/neo-ui-common.d.ts +0 -0
  131. /package/template/{develop/neo-custom-cmp-template → asset-manage-template}/commitlint.config.js +0 -0
  132. /package/template/{develop/neo-custom-cmp-template → asset-manage-template}/public/css/base.css +0 -0
  133. /package/template/{develop/neo-custom-cmp-template → asset-manage-template}/public/scripts/app/bluebird.js +0 -0
  134. /package/template/{develop/neo-custom-cmp-template → asset-manage-template}/public/template.html +0 -0
  135. /package/template/{develop/neo-custom-cmp-template → asset-manage-template}/src/assets/css/common.scss +0 -0
  136. /package/template/{develop/neo-custom-cmp-template → asset-manage-template}/src/assets/css/mixin.scss +0 -0
  137. /package/template/{neo-bi-cmps → asset-manage-template}/src/assets/img/AIBtn.gif +0 -0
  138. /package/template/{develop/neo-custom-cmp-template → asset-manage-template}/src/assets/img/NeoCRM.jpg +0 -0
  139. /package/template/{neo-bi-cmps → asset-manage-template}/src/assets/img/aiLogo.png +0 -0
  140. /package/template/{neo-bi-cmps → asset-manage-template}/src/assets/img/card-list.svg +0 -0
  141. /package/template/{neo-bi-cmps → asset-manage-template}/src/assets/img/contact-form.svg +0 -0
  142. /package/template/{neo-bi-cmps → asset-manage-template}/src/assets/img/custom-form.svg +0 -0
  143. /package/template/{develop/neo-custom-cmp-template → asset-manage-template}/src/assets/img/custom-widget.svg +0 -0
  144. /package/template/{neo-bi-cmps → asset-manage-template}/src/assets/img/data-list.svg +0 -0
  145. /package/template/{neo-bi-cmps → asset-manage-template}/src/assets/img/detail.svg +0 -0
  146. /package/template/{develop/neo-custom-cmp-template → asset-manage-template}/src/assets/img/favicon.png +0 -0
  147. /package/template/{neo-bi-cmps → asset-manage-template}/src/assets/img/map.svg +0 -0
  148. /package/template/{neo-bi-cmps → asset-manage-template}/src/assets/img/search.svg +0 -0
  149. /package/template/{develop/neo-custom-cmp-template → asset-manage-template}/src/assets/img/table.svg +0 -0
  150. /package/template/{neo-bi-cmps → neo-web-cmps}/.prettierrc.js +0 -0
  151. /package/template/{neo-bi-cmps → neo-web-cmps}/README.md +0 -0
  152. /package/template/{neo-bi-cmps → neo-web-cmps}/commitlint.config.js +0 -0
  153. /package/template/{neo-bi-cmps → neo-web-cmps}/public/css/base.css +0 -0
  154. /package/template/{neo-bi-cmps → neo-web-cmps}/public/scripts/app/bluebird.js +0 -0
  155. /package/template/{neo-bi-cmps → neo-web-cmps}/public/template.html +0 -0
  156. /package/template/{neo-bi-cmps → neo-web-cmps}/src/assets/css/common.scss +0 -0
  157. /package/template/{neo-bi-cmps → neo-web-cmps}/src/assets/css/mixin.scss +0 -0
  158. /package/template/{neo-bi-cmps → neo-web-cmps}/src/assets/img/NeoCRM.jpg +0 -0
  159. /package/template/{neo-bi-cmps → neo-web-cmps}/src/assets/img/custom-widget.svg +0 -0
  160. /package/template/{neo-bi-cmps → neo-web-cmps}/src/assets/img/favicon.png +0 -0
  161. /package/template/{neo-bi-cmps → neo-web-cmps}/src/assets/img/table.svg +0 -0
@@ -1,469 +0,0 @@
1
- # ComTree 生成过程分析
2
-
3
- ## 一、概述
4
-
5
- ComTree 是 Neo UI 框架中元数据能力的载体,负责元数据的加载、解析,基于模型的扩展的加载、解析、合并。它是一个树形结构,每个节点都是一个 `Com` 实例,代表一个组件或布局。
6
-
7
- ## 二、核心概念
8
-
9
- ### 2.1 Com 类
10
- - `Com` 是树形节点,任何一个 com 都可以向下展开
11
- - Com 是整个元数据实现的骨架,组合 kernel 中的能力构建出立体元数据的解析执行运行时
12
- - Com 继承自 `XNode`,具备树形结构的基本能力
13
-
14
- ### 2.2 节点类型
15
- - **PageCom**: 页面级别的 Com,是整个页面的根节点
16
- - **LayoutCom**: 布局 Com,负责管理子组件的布局
17
- - **DataServiceCom**: 数据服务 Com,负责数据获取和管理
18
- - **普通 Com**: 业务组件 Com
19
-
20
- ### 2.3 生命周期阶段
21
- ```typescript
22
- enum LifePhase {
23
- INIT = 0, // 初始化
24
- ATTACHED = 1, // 已挂载到树
25
- READY = 2, // 准备就绪
26
- DETACHED = 3, // 已卸载
27
- DESTROYED = 4 // 已销毁
28
- }
29
- ```
30
-
31
- ## 三、ComTree 生成流程
32
-
33
- ### 3.1 整体流程
34
-
35
- ```
36
- 1. 页面打开请求
37
-
38
- 2. 创建 PageCom 实例
39
-
40
- 3. 创建 PageStore (数据服务)
41
-
42
- 4. Store 加载布局数据 (layoutData)
43
-
44
- 5. 调用 $expandSubTree 展开子树
45
-
46
- 6. 递归创建子 Com 节点
47
-
48
- 7. 应用扩展 (AgentCom)
49
-
50
- 8. 设置变量空间
51
-
52
- 9. 标记 ready2render = true
53
-
54
- 10. 渲染到 UI
55
- ```
56
-
57
- ### 3.2 详细步骤
58
-
59
- #### 步骤 1: 页面打开
60
-
61
- 在 `NeoRenderer` 或 `PageModelRender` 中,通过以下方式打开页面:
62
-
63
- ```typescript
64
- // packages/neo-ui-common/src/_comTreeDom/pageModelRender.tsx
65
- this.pageCom = NeoApp.openPageByPageInfo({
66
- pageKey,
67
- pageEngine,
68
- cmpType: pageKey,
69
- pageParams: queryObject
70
- })
71
- ```
72
-
73
- #### 步骤 2: 创建 PageCom 实例
74
-
75
- ```typescript
76
- // packages/neo-ui-common/src/_comTree/standard.coms/com/pageCom.ts
77
- class PageCom extends Com {
78
- constructor(comArgs: ComArgs<IPageConfig>) {
79
- super(comArgs)
80
- this[SCOPE] = { page: this } as ComScopeNode
81
- this.config = comArgs.props as IPageConfig
82
- SystemCtx.initPagePrivateScope(this)
83
- }
84
- }
85
- ```
86
-
87
- #### 步骤 3: 创建 Store
88
-
89
- 在 `Com` 构造函数中,通过 `queueMicrotask` 异步创建 Store:
90
-
91
- ```typescript
92
- // packages/neo-ui-common/src/_comTree/standard.coms/com/com.ts:294-296
93
- queueMicrotask(() => {
94
- this.$tryCreateStore()
95
- })
96
- ```
97
-
98
- PageCom 重写了 `$tryCreateStore` 方法:
99
-
100
- ```typescript
101
- // packages/neo-ui-common/src/_comTree/standard.coms/com/pageCom.ts:182-195
102
- async $tryCreateStore() {
103
- const { pageEngine, pageKey } = this.props || {}
104
- const storeCls = CmpStoreRegister.getStoreClass(this.cmpType)
105
- || CmpStoreRegister.getBasePageStoreClass()
106
- const store = new storeCls(this)
107
- this[BOUNDED].boundStore = store
108
- this[STATE].storeResolved = true
109
- await store.init()
110
- store.status = 'init'
111
- }
112
- ```
113
-
114
- #### 步骤 4: 启动数据服务
115
-
116
- 在表单页面中,通过 `dataServiceStart` 方法启动数据服务:
117
-
118
- ```typescript
119
- // packages/neo-ui-common/src/_comTree/standard.coms/com/pageCom/formPageUniCom.ts:178-246
120
- async dataServiceStart(initProps: any = {}) {
121
- // 1. 应用页面扩展
122
- await AgentComManager.applyPageAgent(this)
123
-
124
- // 2. 加载布局数据
125
- let layoutData = await this.$store.loadLayout()
126
-
127
- // 3. 权限检查
128
- let checkAccess = await this.preRenderCheck(...)
129
-
130
- // 4. 构建 ComTree
131
- if (layoutData?.layout !== null) {
132
- let cmp = layoutData.layout
133
- await this.$expandSubTree([cmp])
134
-
135
- // 5. 应用扩展
136
- this.applyAgentCom()
137
- this.setupVarSpace()
138
- this.comsReady = true
139
- }
140
- }
141
- ```
142
-
143
- #### 步骤 5: 展开子树 ($expandSubTree)
144
-
145
- 这是 ComTree 生成的核心方法:
146
-
147
- ```typescript
148
- // packages/neo-ui-common/src/_comTree/standard.coms/com/com.ts:1586-1617
149
- $expandSubTree(subCmps: ComArgs[]) {
150
- // 校验逻辑
151
- if (!subCmps || subCmps.length === 0) {
152
- this.children = []
153
- lifecycleInvoking(this, 'ready')
154
- return
155
- }
156
-
157
- // 递归展开
158
- subCmps.forEach((cmp) => {
159
- // 1. 根据 cmpType 查找对应的 Com 类
160
- let ComClass = ComFinder.getCom({ cmpType: cmp.cmpType })
161
-
162
- // 2. 创建子 Com 实例
163
- let childCom = new ComClass(cmp)
164
-
165
- // 3. 将子节点添加到当前节点
166
- this.$appendChild(childCom)
167
-
168
- // 4. 如果还有子节点,递归展开
169
- if (cmp.subCmps && cmp.subCmps.length) {
170
- childCom.$expandSubTree(cmp.subCmps)
171
- } else {
172
- // 5. 没有子节点,标记为 READY
173
- childCom.$phaseShift(LifePhase.READY, true)
174
- }
175
- })
176
-
177
- // 6. 当前节点标记为 READY
178
- lifecycleInvoking(this, 'ready')
179
- }
180
- ```
181
-
182
- #### 步骤 6: 添加子节点 ($appendChild)
183
-
184
- ```typescript
185
- // packages/neo-ui-common/src/_comTree/standard.coms/com/com.ts:1310-1335
186
- $appendChild(child: Com) {
187
- // 1. 如果存在旧关系,先解除
188
- const lastPCom = child.pCom
189
- if (lastPCom) {
190
- lastPCom.$removeChild(child)
191
- }
192
-
193
- // 2. 设计态下创建布局事件
194
- if (InnerApi.isDesignMode()) {
195
- InnerApi.autoCreateComTreeLayoutEvent(this)
196
- }
197
-
198
- // 3. 建立父子关系
199
- child.pCom = this
200
- this.children.push(child)
201
- this.$$linkComCtx(child)
202
-
203
- // 4. 重新生成 orderNo
204
- this.children.forEach((com, index) => {
205
- com.orderNo = index
206
- })
207
-
208
- // 5. 标记子节点为 ATTACHED 状态
209
- child.$phaseShift(LifePhase.ATTACHED, true)
210
- }
211
- ```
212
-
213
- #### 步骤 7: Com 实例化过程
214
-
215
- 当创建 Com 实例时,会执行以下初始化:
216
-
217
- ```typescript
218
- // packages/neo-ui-common/src/_comTree/standard.coms/com/com.ts:264-297
219
- constructor(options: ComArgs) {
220
- super(options)
221
-
222
- // 1. 存储原始数据(向后兼容)
223
- this[STATE].data = options
224
-
225
- // 2. 初始化布局
226
- this[STATE].iRegion = options.regions || this.defaultLayout()
227
- this.initLayout()
228
-
229
- // 3. 创建表达式对象
230
- this[BOUNDED].expression = new Expression({ comKId: this.keyIdentifier })
231
-
232
- // 4. 生成 UI Props
233
- this.uiProps = this.generateUiProps()
234
-
235
- // 5. 内存监控(开发环境)
236
- if (__watch_memory) {
237
- incrCmpCount(this.cmpType)
238
- fRegistry?.register(this, this.cmpType)
239
- }
240
-
241
- // 6. 异步创建 Store
242
- queueMicrotask(() => {
243
- this.$tryCreateStore()
244
- })
245
- }
246
- ```
247
-
248
- ## 四、ComFinder 组件查找机制
249
-
250
- ### 4.1 Com 注册
251
-
252
- 组件通过 `@registerCom` 装饰器注册:
253
-
254
- ```typescript
255
- // packages/neo-ui-common/src/_comTree/kernel/register/register.com.ts:174-191
256
- function registerCom(com: typeof Com) {
257
- let { _cmpType, _uiType } = com
258
- if (!_cmpType && !_uiType) {
259
- console.warn('register com failed, com must has both static properties: _cmpType and _uiType')
260
- return
261
- }
262
-
263
- // 应用装饰器
264
- ComDecorator(com)
265
-
266
- // 建立映射关系
267
- CmpTypePair.setPair(_cmpType, _uiType)
268
-
269
- // 注册到全局列表
270
- COM_DEFS.unshift({
271
- cmpType: _cmpType,
272
- uiType: _uiType,
273
- comClass: com
274
- })
275
- }
276
- ```
277
-
278
- ### 4.2 Com 查找
279
-
280
- ```typescript
281
- // 根据 cmpType 查找对应的 Com 类
282
- let ComClass = ComFinder.getCom({ cmpType: cmp.cmpType })
283
- ```
284
-
285
- ## 五、布局初始化
286
-
287
- ### 5.1 布局结构
288
-
289
- Com 可以包含布局信息(regions),布局定义了子组件的排列方式:
290
-
291
- ```typescript
292
- // packages/neo-ui-common/src/_comTree/standard.coms/com/com.ts:193-213
293
- protected initLayout() {
294
- let regions = this.regions as RegionSchema | undefined
295
- if (regions) {
296
- const { template, slots } = regions
297
- if (!template) {
298
- console.error('template is required', this)
299
- return
300
- }
301
-
302
- // 根据模板名称查找布局类
303
- const LayoutClass = XLayout.getLayout(template)
304
- if (!LayoutClass) {
305
- throw new Error(`Layout template ${regions?.template} not found`)
306
- }
307
-
308
- // 创建布局实例
309
- const layout = new LayoutClass(template)
310
- layout.existAsRegions(regions, this)
311
- if (slots) {
312
- layout.syncSlots(slots)
313
- }
314
-
315
- this[SCOPE].layout = layout
316
- this[BOUNDED].boundLayout = layout
317
- }
318
- }
319
- ```
320
-
321
- ### 5.2 布局类型
322
-
323
- - **SlotLayout**: 插槽布局,支持多个插槽(如 header, body, footer)
324
- - **FlexLayout**: 弹性布局
325
- - **GridLayout**: 网格布局
326
-
327
- ## 六、扩展机制
328
-
329
- ### 6.1 AgentCom 扩展
330
-
331
- 在 ComTree 构建完成后,会应用扩展:
332
-
333
- ```typescript
334
- // packages/neo-ui-common/src/_comTree/standard.coms/com/pageCom/formPageUniCom.ts:237
335
- this.applyAgentCom()
336
- ```
337
-
338
- 扩展可以:
339
- - 修改组件的属性(uiProps)
340
- - 扩展组件的方法(通过 AOP)
341
- - 添加新的子组件
342
-
343
- ### 6.2 扩展优先级
344
-
345
- ```typescript
346
- enum DEV_PRIORITY {
347
- SYSTEM = 1, // 系统级
348
- ISV = 2, // ISV 扩展
349
- CUSTOM = 3 // 自定义扩展
350
- }
351
- ```
352
-
353
- ## 七、变量空间
354
-
355
- ### 7.1 变量空间初始化
356
-
357
- 页面级别的变量空间在 `setupVarSpace` 中初始化:
358
-
359
- ```typescript
360
- // packages/neo-ui-common/src/_comTree/standard.coms/com/pageCom/formPageUniCom.ts:70-103
361
- setupVarSpace() {
362
- let masterCom = this.getMasterFormCom()
363
- let mainProps = masterCom.getProps()
364
-
365
- // 创建页面变量空间
366
- const pageVs = new VarSpace({
367
- key: '$page',
368
- label: '页面属性',
369
- observable: false,
370
- writable: false
371
- })
372
-
373
- // 添加页面属性
374
- pageVs.$appendLeaf('objectApiKey', { ... })
375
- pageVs.$appendLeaf('recordId', { ... })
376
- // ...
377
-
378
- // 绑定到页面
379
- VarSpaceInTree.bindPageVs(this, pageVs)
380
- }
381
- ```
382
-
383
- ### 7.2 变量作用域
384
-
385
- - **$page**: 页面级变量
386
- - **$mainForm**: 主表单变量
387
- - **$subForm**: 子表单变量
388
- - **$global**: 全局变量
389
-
390
- ## 八、渲染准备
391
-
392
- ### 8.1 ready2render 标志
393
-
394
- 当 ComTree 构建完成并准备好渲染时,会设置 `ready2render = true`:
395
-
396
- ```typescript
397
- // packages/neo-ui-common/src/_comTreeDom/baseCmp/basePage.tsx:55-58
398
- __com__.on('ready', () => {
399
- this.onReady2Render(__com__)
400
- __com__.enableRenderState() // 设置 ready2render = true
401
- })
402
- ```
403
-
404
- ### 8.2 Schema 生成
405
-
406
- ComTree 构建完成后,通过 `getJsonSchema` 生成 amis Schema:
407
-
408
- ```typescript
409
- // packages/neo-ui-common/src/_comTree/standard.coms/com/pageCom.ts:210-227
410
- getJsonSchema() {
411
- let topLayoutCom = this.getRootLayoutCom()
412
- let schema: any = {}
413
- if (topLayoutCom) {
414
- schema = topLayoutCom.getJsonSchema()
415
- } else {
416
- schema = {
417
- body: '页面配置错误,没有配置布局',
418
- type: 'wrapper',
419
- keyIdentifier: this.keyIdentifier,
420
- cmpType: 'wrapper',
421
- __com__: this
422
- }
423
- }
424
- return schema
425
- }
426
- ```
427
-
428
- ## 九、关键数据结构
429
-
430
- ### 9.1 ComArgs
431
-
432
- ```typescript
433
- type ComArgs<T = any> = {
434
- keyIdentifier: string // 唯一标识
435
- cmpType: string // 组件类型
436
- props?: T // 组件属性
437
- regions?: RegionSchema // 布局信息
438
- subCmps?: ComArgs[] // 子组件
439
- orderNo?: number // 排序号
440
- // ...
441
- }
442
- ```
443
-
444
- ### 9.2 RegionSchema
445
-
446
- ```typescript
447
- type RegionSchema = {
448
- template: string // 布局模板名称
449
- slots?: { // 插槽定义
450
- [slotName: string]: SlotArgs
451
- }
452
- cells?: object // 单元格配置
453
- config?: object // 布局配置
454
- }
455
- ```
456
-
457
- ## 十、总结
458
-
459
- ComTree 的生成是一个递归的过程:
460
-
461
- 1. **入口**: 页面打开时创建 PageCom
462
- 2. **数据加载**: Store 加载布局数据
463
- 3. **树构建**: 通过 `$expandSubTree` 递归创建子节点
464
- 4. **扩展应用**: 应用 AgentCom 扩展
465
- 5. **准备渲染**: 设置变量空间,标记 ready2render
466
- 6. **Schema 生成**: 生成 amis Schema 用于渲染
467
-
468
- 整个过程是异步的,通过 Promise 和生命周期钩子来协调各个阶段的执行顺序。
469
-
@@ -1,55 +0,0 @@
1
-
2
- /**
3
- * 自定义组件 共享出来的依赖模块
4
- * 备注:可在其他模块中通过 neoRequire 中使用
5
- */
6
- import { isPlainObject } from 'lodash';
7
- const CustomCmpCommonModules = {
8
- "entityFormC": require('/Users/liudan/neo-custom-widget/neo-cmp-cli/template/neo-custom-cmp-template/src/components/entityForm_c/index.tsx')
9
- };
10
- const CustomCmpRemoteDeps = {};
11
-
12
- // 用于添加共享的依赖模块
13
- const addNeoCommonModules = (modules) => {
14
- if (!window.__NeoCommonModules) {
15
- window.__NeoCommonModules = {}
16
- }
17
- if (isPlainObject(modules)) {
18
- const moduleIds = Object.keys(modules)
19
- moduleIds.forEach((moduleId) => {
20
- const curModule = modules[moduleId];
21
- const curCommonModule = window.__NeoCommonModules[moduleId];
22
-
23
- if (curCommonModule && Object.keys(curCommonModule).length < 3) {
24
- window.__NeoCommonModules[moduleId] = Object.assign(window.__NeoCommonModules[moduleId], curModule);
25
-
26
- // 处理模块中的特殊属性
27
- if (curModule.__esModule !== undefined) {
28
- window.__NeoCommonModules[moduleId].__esModule = curModule.__esModule;
29
- }
30
- if (curModule.default !== undefined) {
31
- window.__NeoCommonModules[moduleId].default = curModule.default;
32
- }
33
- } else {
34
- window.__NeoCommonModules[moduleId] = curModule;
35
- }
36
- })
37
- }
38
- }
39
-
40
- // 用于添加自定义组件的远程依赖组件(关联使用)
41
- const addNeoRemoteDeps = (remoteDeps) => {
42
- if (!window.__NeoCommonModules) {
43
- window.__NeoCommonModules = {}
44
- }
45
- if (!window.__NeoCommonModules.__neoRemoteDeps) {
46
- window.__NeoCommonModules.__neoRemoteDeps = {}
47
- }
48
- if (isPlainObject(remoteDeps)) {
49
- window.__NeoCommonModules.__neoRemoteDeps = Object.assign(window.__NeoCommonModules.__neoRemoteDeps, remoteDeps)
50
- }
51
- }
52
-
53
- addNeoCommonModules(CustomCmpCommonModules);
54
- addNeoRemoteDeps(CustomCmpRemoteDeps);
55
-
@@ -1,50 +0,0 @@
1
- | cmpType | label | componentCategory | targetApplication | exposedToDesigner | enableDuplicate | targetDevice | targetPage | props |
2
- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
3
- | neoLayoutRoot | 布局容器 | 容器组件 | all | false | false | all | entityFormPage | |
4
- | neoIFrame | 嵌入页面 | 容器组件 | all | true | true | web | all | 内容来源, 参数, 高度 |
5
- | formHeaderWeb | 表单头部 | 业务组件 | all | true | false | web | entityFormPage | 绑定业务对象, 是否显示, 是否可拖拽, 是否可移除, 是否显示列切换, 是否显示全屏操作 |
6
- | entityForm | 实体表单 | 业务组件 | all | true | false | all | entityFormPage | 绑定业务对象, 是否显示, 是否可拖拽, 是否可移除, 业务对象, 是否包含子表单, 是否包含文档上传, 是否启用自由布局 |
7
- | entityFormMaster | 实体主表单 | 业务组件 | all | false | false | all | entityFormPage | 绑定业务对象, 业务对象, 是否显示, 是否可拖拽, 是否可移除, 字段分组模式, 分组设置, 是否显示只读字段, 字段默认排列方式, 字段标题对齐方式, 字段显示结构 |
8
- | formItemGroup | 表单项分组 | 业务组件 | all | false | false | all | entityFormPage | 表单项分组Key, 字段配置, 是否显示, 是否可拖拽, 是否可移除, 表单项分组Label, 表单项分组LabelKey, 默认折叠 |
9
- | formItem | 表单项 | 字段组件 | all | true | false | all | entityFormPage | 绑定业务对象, 是否可拖拽, 是否可移除, 字段名称, 字段名称Key, 绑定字段, 是否必填, 是否只读, 是否显示, 输入/显示模式, 字段宽度 |
10
- | entityFormDetailTabs | 子表单标签组 | 业务组件 | all | false | false | all | entityFormPage | 绑定业务对象, 是否显示, 是否可拖拽, 是否可移除, 子表单标签页 |
11
- | entityFormDetailTab | 子表单页签 | 业务组件 | all | false | false | all | entityFormPage | 绑定业务对象, 业务对象, 是否显示, 是否可拖拽, 是否可移除, 业务类型, 字段标题对齐方式, 字段显示结构 |
12
- | entityFormDetail | 实体子表单 | 业务组件 | all | false | false | all | entityFormPage | 绑定业务对象, 绑定业务类型, 是否可拖拽, 是否可移除, 是否显示, 是否只读, 是否默认折叠, 是否显示只读字段, 字段配置, 操作设置 |
13
- | formButton | 表单按钮 | 业务组件 | all | false | true | all | entityFormPage | 按钮apiKey, 按钮名称, 是否显示, 是否可拖拽, 是否可移除, 按钮名称多语言Key, 按钮图标, 是否禁用, 按钮样式 |
14
- | formFooter | 表单底部 | 业务组件 | all | true | false | web | entityFormPage | 绑定业务对象, 是否显示, 是否可拖拽, 是否可移除, 按钮设置 |
15
- | entityFormDocUploader | 文档 | 业务组件 | all | false | false | all | entityFormPage | 是否显示, 是否可拖拽, 是否可移除, 是否必填, 最大上传个数 |
16
- | neoFlexContainer | 栅格容器 | 容器组件 | all | true | false | all | all | 是否显示, 是否可拖拽, 是否可移除, 排列方向, 栅格数量, 栅格比例, 比例设置, 是否支持折叠, 当栅格中无内容时 |
17
- | customFormItem | 自定义表单项 | 字段组件 | all | false | true | web | entityFormPage | 字段名称, 字段名称Key, 表单项apiKey, 是否可拖拽, 是否可移除, 是否显示, 是否只读, 数据类型, 字段宽度 |
18
- | neoTabContainer | 标签容器 | 容器组件 | all | true | false | web | all | 是否可拖拽, 是否可移除, 标签组设置 |
19
- | aiAgentDialogBox | Agent对话框组件 | 业务组件 | all | false | false | all | all | 是否显示, 是否可拖拽, 是否可移除 |
20
- | subAiAgentSubAgent | 子Agent组件 | 业务组件 | all | false | false | all | all | 是否显示, 是否可拖拽, 是否可移除 |
21
- | subAiAgentDialogBox | Agent对话框子组件 | 业务组件 | all | false | false | all | all | 是否显示, 是否可拖拽, 是否可移除 |
22
- | subAiAgentDialogHeader | Agent对话框子组件头部组件 | 业务组件 | all | false | false | all | all | 是否显示, 是否可拖拽, 是否可移除 |
23
- | subAiAgentDialogInput | Agent对话框子组件对话框组件 | 业务组件 | all | false | false | all | all | 是否显示, 是否可拖拽, 是否可移除 |
24
- | subAiAgentDialogFooter | Agent对话框子组件底部组件 | 业务组件 | all | false | false | all | all | 是否显示, 是否可拖拽, 是否可移除 |
25
- | contactSocialGraphContactCard | 联系人卡片 | 业务组件 | all | false | false | all | entityDetailPage, customPage | 是否显示, 是否可移除, 是否可拖拽, 标题名称, 标题名称多语言key, 展示方式, 标题ApiKey, 标签ApiKey, 标题是否展示, 总量, 卡片类型, 绑定字段数组 |
26
- | contactSocialGraphContactGraph | 联系人关系图 | 业务组件 | all | false | false | all | entityDetailPage, customPage | 是否显示, 是否可移除, 是否可拖拽, 绑定字段 |
27
- | contactSocialGraphContactInfo | 联系人基础信息 | 业务组件 | all | false | false | all | entityDetailPage, customPage | 是否显示, 是否可移除, 是否可拖拽, 是否主联系人, 最大记录数, 绑定业务对象, 绑定字段, 绑定字段数组 |
28
- | contactSocialGraphContactRelation | 联系人关系信息 | 业务组件 | all | false | false | all | entityDetailPage, customPage | 是否显示, 是否可移除, 是否可拖拽, 联系人关系, 联系人关系多语言key, 业务关系, 业务关系多语言key, 私人关系, 私人关系多语言key, 绑定业务对象, 绑定字段 |
29
- | contactSocialGraphContactRole | 联系人角色信息 | 业务组件 | all | false | false | all | entityDetailPage, customPage | 是否显示, 是否可移除, 是否可拖拽, 联系人决策信息, 联系人决策信息多语言key, 最大记录数, 绑定业务对象, 绑定字段, 绑定字段数组 |
30
- | contactSocialGraphContactList | 联系人列表 | 业务组件 | all | false | false | all | entityDetailPage, customPage | 是否显示, 是否可移除, 是否可拖拽, 展示方式, 标题是否展示, 只显示上下级 |
31
- | contactSocialGraphContactConfig | 联系人角色及关系 | 业务组件 | all | false | false | all | entityDetailPage, customPage | 是否显示, 是否可移除, 是否可拖拽 |
32
- | contactSocialGraph | 联系人作战地图 | 业务组件 | all | false | true | all | entityDetailPage, customPage | 是否显示, 是否可移除, 是否可拖拽 |
33
- | aiContractInspection | 智能合同质检 | 业务组件 | all | true | false | web | entityDetailPage | 名称, 名称Key, 是否显示, 是否只读, 是否可拖拽, 是否可移除, 绑定业务对象 |
34
- | aiObjectAnalysis | 智能数据洞察 | 业务组件 | all | true | false | web | entityDetailPage | 名称, 名称Key, 是否显示, 是否只读, 是否可拖拽, 是否可移除, 绑定业务对象 |
35
- | aiOppHealthAssessment | 商机健康度评估 | 业务组件 | all | true | false | web | entityDetailPage | 名称, 名称Key, 是否显示, 是否只读, 是否可拖拽, 是否可移除, 绑定业务对象 |
36
- | pricePicker | 价格表名称 | 业务组件 | all | true | false | all | entityFormPage | 名称, 名称Key, 绑定业务对象, 绑定字段, 是否显示, 是否只读, 是否可拖拽, 是否可移除 |
37
- | opportunityProductSummary | 商机明细汇总 | 业务组件 | all | true | false | web | entityFormPage | 名称, 名称Key, 绑定业务对象, 是否显示, 是否可拖拽, 是否可移除 |
38
- | scSkillRequires | 必备技能 | 业务组件 | all | true | false | all | entityFormPage | 必备技能, 组件名称多语言Key, 是否可拖拽, 是否可移除, 是否必填, 是否只读, 可见性 |
39
- | scScanCode | 扫码添加 | 业务组件 | all | false | false | web | entityFormPage | 扫码添加, 组件名称多语言Key, 可见性 |
40
- | territoryModelObject | 关联实体设置组件 | 业务组件 | all | true | false | web | entityDetailPage | 名称, 名称Key, 是否显示, 是否只读, 是否可拖拽, 是否可移除, 绑定业务对象 |
41
- | territoryModelConfig | 模型通用设置组件 | 业务组件 | all | true | false | web | entityDetailPage | 名称, 名称Key, 是否显示, 是否只读, 是否可拖拽, 是否可移除, 绑定业务对象 |
42
- | territoryAssignLog | 分配日志组件 | 业务组件 | all | true | false | web | entityDetailPage | 名称, 名称Key, 是否显示, 是否只读, 是否可拖拽, 是否可移除, 绑定业务对象 |
43
- | territoryBasePermission | 基础权限设置组件 | 业务组件 | all | true | false | web | entityDetailPage | 名称, 名称Key, 是否显示, 是否只读, 是否可拖拽, 是否可移除, 绑定业务对象 |
44
- | customTerritoryModelHeader | 区域模型头部组件 | 业务组件 | all | true | false | web | entityDetailPage | 名称, 名称Key, 是否显示, 是否只读, 是否可拖拽, 是否可移除, 绑定业务对象, 默认展示按钮 |
45
- | territoryTree | 区域树 | 业务组件 | all | true | false | web | entityDetailPage | 名称, 名称Key, 叶子节点字段, 父级字段, 是否显示, 是否只读, 是否可拖拽, 是否可移除, 默认展示层级, 分页条数, 绑定业务对象, 默认展示字段, 默认排序, 是否动态加载 |
46
- | detailPageBusiContainer | 详情页业务容器组件 | 业务组件 | all | true | false | web | entityDetailPage | 名称, 名称Key, 是否显示, 是否只读, 是否可拖拽, 是否可移除, 绑定业务对象 |
47
- | territoryMember | 区域成员组件 | 业务组件 | all | true | false | web | entityDetailPage | 名称, 名称Key, 是否显示, 是否只读, 是否可拖拽, 是否可移除, 绑定业务对象, 支持成员对象 |
48
- | territoryResource | 区域分配资源组件 | 业务组件 | all | true | true | web | entityDetailPage | 名称, 名称Key, 是否显示, 是否只读, 是否可拖拽, 是否可移除, 绑定业务对象, 默认展示字段, 默认排序 |
49
- | territoryAssignRule | 区域规则组件 | 业务组件 | all | true | false | web | entityDetailPage | 名称, 名称Key, 是否显示, 是否只读, 是否可拖拽, 是否可移除, 绑定业务对象 |
50
- | territoryObjectRule | 区域特殊规则组件 | 业务组件 | all | true | true | web | entityDetailPage | 名称1, 名称2, 名称1Key, 名称2Key, 是否显示, 是否只读, 是否可拖拽, 是否可移除, 绑定业务对象, 默认展示字段, 默认排序 |
@@ -1,48 +0,0 @@
1
- ### 目录说明
2
- - src: 自定义组件源码;
3
- - src/assets: 存放组件静态资源,比如 css、img等;
4
- - src/components: 存放自定义组件代码,每个自定义组件以自身名称(cmpType 数值)作为目录进行存放;
5
- - src/components/contact-form/index.tsx: 自定义组件的内容文件;
6
- - src/components/contact-form/model.ts: 自定义组件的模型文件,用于对接页面设计器;
7
- - neo.config.js: neo-cmp-cli 配置文件。
8
-
9
- ### 组件开发规范
10
- - 存放在 src/components 目录下的自定义组件,默认 index 为自定义组件源码入口文件,model.[tj]s 为自定义组件的模型文件(对接页面设计器需要);
11
- - 当 neo.config.js 中的 entry 为空或者不存在时,cli 将根据 src/components 目录下的自定义组件结构生成对应的 entry 配置(可在命令控制台查看生成的 entry 配置);
12
- - 自定义组件中可用的配置项类型 请见 [当前可用表单项](https://github.com/wibetter/neo-register/blob/master/docs/FormItemType.md);
13
- - 自定义组件最外层请设置一个唯一的 ClassName(比如 xx-cmpType-container),所有内容样式请放在该 ClassName 中,避免自定义组件样式相互干扰;
14
- - 默认开启代码规范检测(含样式内容),如需关闭,请调整 neo.config.js 相关配置;
15
- - 请使用 react 16 版本;
16
- - 支持在自定义组件中使用 Open API,详细见[使用说明](./docs/README.md)。
17
-
18
- ### 自定义组件注册器使用说明
19
- - [neo-register 使用说明](https://www.npmjs.com/package/neo-register?activeTab=readme)
20
- 备注:预览、调试(linkDebug)和构建发布时 cli 会自动创建对应的注册文件(含 neo-register 的使用),用户无需关注 neo-register。
21
-
22
- ### 开发说明
23
-
24
- 1. **安装依赖**
25
- ```bash
26
- $ npm i 或者 yarn
27
- ```
28
-
29
- 2. **preview: 组件预览模式(带热更新)**
30
- > preview模式:用于预览自定义组件内容。
31
- ```bash
32
- $ npm run preview
33
- ```
34
-
35
- 3. **linkDebug: 外链调试(在线上页面设计器端预览自定义组件)**
36
- > linkDebug模式:用于在线上页面设计器中预览和调试自定义组件。
37
- ```bash
38
- $ npm run linkDebug
39
- ```
40
-
41
- 4. **发布到对象存储服务中**
42
- > 需要确保 package.json 中的 name 值唯一,version 值不重复。
43
- ```bash
44
- $ npm run publish2oss
45
- ```
46
-
47
- ### 配置项说明(neo-cmp-cli)
48
- [请查看neo-cmp-cli](https://github.com/wibetter/neo-cmp-cli)
@@ -1,13 +0,0 @@
1
- ## Open api 文档
2
- - [Open API 简介](https://doc.xiaoshouyi.com/#/proMan/workplaceDetailApi?url=%2F%2Fconcepts%2Fapi_apiIntroduction.html&id=1405&dir=output_1757929564205)。
3
-
4
- ## Neo 自定义组件中可用的 open api 接口
5
- - [查询对象列表](https://doc.xiaoshouyi.com/#/proMan/workplaceDetailApi?url=%2F%2Fconcepts%2FpaasQueryObjectList.html&id=1405&dir=output_1757929564205&time=1758780224026): /rest/metadata/v2.0/xobjects/filter;
6
- - 查询标准对象列表: /rest/metadata/v2.0/xobjects/filter?custom=false&active=true;
7
- - 查询自定义对象列表: /rest/metadata/v2.0/xobjects/filter?custom=true&active=true;
8
- - [创建业务数据](https://doc.xiaoshouyi.com/#/proMan/workplaceDetailApi?url=%2F%2Fconcepts%2Fapi_paas_customObject_create.html&id=1405&dir=output_1757929564205&time=1758782257815): /rest/data/v2.0/xobjects/{xObjectApiKey};
9
- - [更新业务数据](https://doc.xiaoshouyi.com/#/proMan/workplaceDetailApi?url=%2F%2Fconcepts%2Fapi_paas_customObject_update.html&id=1405&dir=output_1757929564205&time=1758782321910): /rest/data/v2.0/xobjects/{xObjectApiKey}/{id};
10
- - [获取业务数据信息(单个数据)](https://doc.xiaoshouyi.com/#/proMan/workplaceDetailApi?url=%2F%2Fconcepts%2Fapi_paas_customObject_getBusinessDataInformation.html&id=1405&dir=output_1757929564205&time=1758781533725): /rest/data/v2.0/xobjects/{xObjectApiKey}/{id};
11
- - [查询接口(通用查询接口)](https://doc.xiaoshouyi.com/#/proMan/workplaceDetailApi?url=%2F%2Fconcepts%2Fapi_queryInterfaceDescription.html&id=1405&dir=output_1757929564205&time=1758784491846): /rest/data/v2/query;
12
- - [获取业务类型描述](https://doc.xiaoshouyi.com/?sso-domain=login-cd.xiaoshouyi.com#/proMan/workplaceDetailApi?url=%2F%2Fconcepts%2Fapi_paas_customObject_getBusinessTypeDescription.html&id=1405&dir=output_1757929564205&time=1758798530511): /rest/data/v2.0/xobjects/{xObjectApiKey}/busiType;
13
- - 更多可用接口见[文档](https://doc.xiaoshouyi.com/#/proMan/workplaceDetailApi?url=%2F%2Fconcepts%2Fapi_apiIntroduction.html&id=1405&dir=output_1757929564205)。