cloudcc-cli 2.2.9 → 2.3.1

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 (90) hide show
  1. package/.cloudcc-cache.json +4 -52
  2. package/.cursor/skills/cloudcc-cli-dev/BACKEND_CLASS.md +15 -1
  3. package/.cursor/skills/cloudcc-cli-dev/BACKEND_SCHEDULE.md +82 -8
  4. package/.cursor/skills/cloudcc-cli-dev/BACKEND_TRIGGER.md +13 -0
  5. package/.cursor/skills/cloudcc-cli-dev/CLI_CHEATSHEET.md +234 -77
  6. package/.cursor/skills/cloudcc-cli-dev/CUSTOM-SETTING-API.md +62 -0
  7. package/.cursor/skills/cloudcc-cli-dev/INSTALL_AND_BOOTSTRAP.md +9 -6
  8. package/.cursor/skills/cloudcc-cli-dev/OBJECTS_AND_FIELDS.md +99 -5
  9. package/.cursor/skills/cloudcc-cli-dev/REQUIREMENTS_BREAKDOWN.md +15 -0
  10. package/.cursor/skills/cloudcc-cli-dev/SKILL.md +29 -7
  11. package/.cursor/skills/cloudcc-cli-dev/STATIC-RESOURCE-API.md +60 -0
  12. package/.cursor/skills/cloudcc-cli-dev/VUE_CUSTOM_PAGE.md +216 -0
  13. package/.cursor/skills/cloudcc-cli-dev/docs//350/207/252/345/256/232/344/271/211/351/241/265/351/235/242.md +228 -0
  14. package/README.md +23 -1
  15. package/bin/index.js +7 -0
  16. package/package.json +2 -2
  17. package/src/application/delete.js +59 -0
  18. package/src/application/get.js +31 -5
  19. package/src/application/index.js +1 -0
  20. package/src/classes/delete.js +43 -0
  21. package/src/classes/detail.js +14 -7
  22. package/src/classes/index.js +7 -1
  23. package/src/customPage/create.js +139 -0
  24. package/src/customPage/delete.js +65 -0
  25. package/src/customPage/get.js +85 -0
  26. package/src/customPage/index.js +10 -0
  27. package/src/customSetting/create.js +27 -0
  28. package/src/customSetting/delete.js +26 -0
  29. package/src/customSetting/detail.js +24 -0
  30. package/src/customSetting/doc.js +196 -0
  31. package/src/customSetting/get.js +25 -0
  32. package/src/customSetting/index.js +11 -0
  33. package/src/fields/delete.js +52 -0
  34. package/src/fields/index.js +1 -0
  35. package/src/menu/create-page.js +16 -25
  36. package/src/menu/create.js +9 -3
  37. package/src/menu/delete.js +59 -0
  38. package/src/menu/get.js +56 -0
  39. package/src/menu/index.js +2 -0
  40. package/src/object/delete.js +51 -0
  41. package/src/object/index.js +1 -0
  42. package/src/plugin/detail.js +14 -6
  43. package/src/plugin/publish1.js +3 -3
  44. package/src/recordType/get.js +1 -1
  45. package/src/scheduleJob/delete.js +26 -0
  46. package/src/scheduleJob/detail.js +23 -0
  47. package/src/scheduleJob/get.js +26 -0
  48. package/src/scheduleJob/index.js +10 -0
  49. package/src/staticResource/count.js +25 -0
  50. package/src/staticResource/delete.js +26 -0
  51. package/src/staticResource/detail.js +24 -0
  52. package/src/staticResource/doc.js +106 -0
  53. package/src/staticResource/get.js +25 -0
  54. package/src/staticResource/index.js +12 -0
  55. package/src/timer/delete.js +43 -0
  56. package/src/timer/index.js +1 -0
  57. package/src/triggers/delete.js +46 -0
  58. package/src/triggers/index.js +1 -0
  59. package/test/application.cli.test.js +49 -8
  60. package/test/classes.cli.test.js +9 -3
  61. package/test/customSetting.cli.test.js +84 -0
  62. package/test/fields.cli.test.js +18 -3
  63. package/test/menu.cli.test.js +34 -4
  64. package/test/object.cli.test.js +17 -1
  65. package/test/scheduleJob.cli.test.js +52 -0
  66. package/test/staticResource.cli.test.js +78 -0
  67. package/test/timer.cli.test.js +8 -2
  68. package/test/trigger.cli.test.js +8 -2
  69. package/build/component-cc-test-001.common.js +0 -831
  70. package/build/component-cc-test-001.common.js.map +0 -1
  71. package/build/component-cc-test-001.css +0 -1
  72. package/build/component-cc-test-001.umd.js +0 -874
  73. package/build/component-cc-test-001.umd.js.map +0 -1
  74. package/build/component-cc-test-001.umd.min.js +0 -8
  75. package/build/component-cc-test-001.umd.min.js.map +0 -1
  76. package/build/demo.html +0 -1
  77. package/core.zip +0 -0
  78. package/plugins/cc-test-001/cc-test-001.vue +0 -32
  79. package/plugins/cc-test-001/components/HelloWorld.vue +0 -11
  80. package/plugins/cc-test-001/config.json +0 -6
  81. package/target/ccopenapi-0.0.4-classes.jar +0 -0
  82. package/target/ccopenapi-0.0.4.jar +0 -0
  83. package/target/maven-archiver/pom.properties +0 -3
  84. package/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +0 -20
  85. package/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +0 -19
  86. /package/{docs → .cursor/skills/cloudcc-cli-dev/docs}/CloudCC/350/207/252/345/256/232/344/271/211/347/273/204/344/273/266/344/275/277/347/224/250/350/257/264/346/230/216.md" +0 -0
  87. /package/{docs → .cursor/skills/cloudcc-cli-dev/docs}/cloudcc/345/256/232/346/227/266/344/275/234/344/270/232.md" +0 -0
  88. /package/{docs → .cursor/skills/cloudcc-cli-dev/docs}/cloudcc/345/256/232/346/227/266/347/261/273.md" +0 -0
  89. /package/{docs → .cursor/skills/cloudcc-cli-dev/docs}//350/207/252/345/256/232/344/271/211/347/261/273.md" +0 -0
  90. /package/{docs → .cursor/skills/cloudcc-cli-dev/docs}//350/247/246/345/217/221/345/231/250/347/261/273.md" +0 -0
@@ -3,10 +3,12 @@
3
3
  本篇聚焦用 `cloudcc-cli` 的 `cc` 命令完成:
4
4
 
5
5
  - 创建自定义对象(Custom Object)
6
+ - 删除自定义对象
6
7
  - 查询对象列表
7
8
  - 查询对象字段
8
9
  - 为对象创建字段(支持多字段类型)
9
- -(可选)创建菜单、创建应用(把对象挂到导航中)
10
+ - 删除字段
11
+ -(可选)创建菜单、创建应用(把对象挂到导航中)
10
12
 
11
13
  ---
12
14
 
@@ -21,14 +23,40 @@
21
23
 
22
24
  ```bash
23
25
  cc create object <projectPath> <label>
26
+ cc create object <projectPath> <label> <nameLabel>
24
27
  ```
25
28
 
26
29
  示例:
27
30
 
28
31
  ```bash
29
32
  cc create object . 客户
33
+ cc create object . 客户 customer_custom_object
30
34
  ```
31
35
 
36
+ 说明:
37
+
38
+ - `nameLabel` 可选,不传时会由工具根据 `label` 自动生成(例如 `customer_custom_object`)。
39
+
40
+ ---
41
+
42
+ ## 删除自定义对象
43
+
44
+ ### CLI 命令(项目已有实现)
45
+
46
+ ```bash
47
+ cc delete object <projectPath> <objid>
48
+ ```
49
+
50
+ 示例:
51
+
52
+ ```bash
53
+ cc delete object . 20261EF49B88F9269cVr
54
+ ```
55
+
56
+ 说明:
57
+
58
+ - `objid` 为对象 ID,可先用 `cc get object <projectPath> custom` 查询。
59
+
32
60
  ---
33
61
 
34
62
  ## 查询对象列表
@@ -36,19 +64,27 @@ cc create object . 客户
36
64
  ### CLI 命令(输出 JSON)
37
65
 
38
66
  ```bash
39
- # type 可选:standard / custom / both(默认:both)
67
+ # type 可选:standard / custom / chat / trigger / fields
68
+ # 不传 type 时返回 standard + custom
40
69
  cc get object <projectPath> [type]
70
+
71
+ # 当 type=fields 时,需要额外传对象 JSON(至少含 objprefix)
72
+ cc get object <projectPath> fields <encodedObjectJson>
41
73
  ```
42
74
 
43
75
  示例:
44
76
 
45
77
  ```bash
46
- cc get object . both
78
+ cc get object .
79
+ cc get object . custom
80
+ cc get object . fields "$(node -e 'console.log(encodeURI(JSON.stringify({objprefix:\"a01\"})))')"
47
81
  ```
48
82
 
49
83
  用途:
50
84
 
51
85
  - 获取对象 `objprefix` / 对象 `id`(后续创建字段、触发器会用到)
86
+ - `type=trigger` 时可拿到触发器创建所需的目标对象信息
87
+ - `type=fields` 时用于基于对象前缀查询字段(需额外传 encodedObjectJson,通常更建议直接使用 `cc get fields`)
52
88
 
53
89
  ---
54
90
 
@@ -94,18 +130,65 @@ cc create fields <projectPath> <fieldType> <objid> <nameLabel> [ptext|lookupObj]
94
130
 
95
131
  ---
96
132
 
133
+ ## 删除字段(Field)
134
+
135
+ ### CLI 命令(项目已有实现)
136
+
137
+ ```bash
138
+ cc delete fields <projectPath> <fieldId> <objid>
139
+ ```
140
+
141
+ 示例:
142
+
143
+ ```bash
144
+ cc delete fields . ffe2026F12B15D3sCX5R 202688F2CF34EE6vnMQ5
145
+ ```
146
+
147
+ 说明:
148
+
149
+ - 删除接口为“彻底删除”,执行前请确认该字段未被公式字段、触发器、脚本、页面布局依赖。
150
+
151
+ ---
152
+
97
153
  ## 菜单与应用(让对象可访问)
98
154
 
99
155
  ### 创建菜单(CLI)
100
156
 
101
157
  ```bash
102
- cc create menu <type> <projectPath> <resourceId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]
158
+ cc create menu object <projectPath> <objectId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]
159
+ cc create menu page <projectPath> <pageApi> <tabName> <pname> [tabStyle] [mobileimg] [cloudccservicetab] [mobileurl]
160
+ cc create menu script <projectPath> <scriptId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]
161
+ cc create menu site <projectPath> <siteId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]
103
162
  ```
104
163
 
105
164
  示例:
106
165
 
107
166
  ```bash
108
167
  cc create menu object . <objectId> "我的对象菜单"
168
+ cc create menu page . contract-assistant "合同助手" contract_assistant_menu
169
+ ```
170
+
171
+ 说明:
172
+
173
+ - `pageApi` 为自定义页面 API 名,命令内部会自动拼接为 `lightningPage`(`pageApi#lightning`)。
174
+ - `create menu page` 的 `pageType` 固定为 `customPage`,`mobileurl` 默认空字符串。
175
+ - `pname` 为菜单名称字段,必填。
176
+
177
+ ### 查询菜单(CLI)
178
+
179
+ ```bash
180
+ cc get menu <projectPath> [encodedCondJson]
181
+ ```
182
+
183
+ 说明:
184
+
185
+ - 接口若返回分组结构(如 `botlist/objectlist/objlist/pagelist/scriptlist`),CLI 会自动聚合为数组并输出。
186
+ - 聚合结果每一项会附带 `__group` 字段,表示来源分组。
187
+
188
+ ### 删除菜单(CLI)
189
+
190
+ ```bash
191
+ cc delete menu <projectPath> <tabId>
109
192
  ```
110
193
 
111
194
  ### 创建应用(CLI)
@@ -114,7 +197,18 @@ cc create menu object . <objectId> "我的对象菜单"
114
197
  cc create application <projectPath> <appName> <appCode> [menuIds]
115
198
  ```
116
199
 
200
+ ### 查询应用(CLI)
201
+
202
+ ```bash
203
+ cc get application <projectPath> [encodedCondJson]
204
+ ```
205
+
206
+ ### 删除应用(CLI)
207
+
208
+ ```bash
209
+ cc delete application <projectPath> <appId>
210
+ ```
211
+
117
212
  说明:
118
213
 
119
214
  - `menuIds`:可选,多个用逗号分隔;系统会确保默认菜单 `acf000001` 被包含。
120
-
@@ -4,6 +4,21 @@
4
4
 
5
5
  ---
6
6
 
7
+ ## 设计前阅读(先看模块文档)
8
+
9
+ 在做需求拆解与技术方案设计前,优先阅读 `docs` 目录中对应模块说明,先建立能力边界与适用场景认知,再进行选型与设计,避免组件误选。
10
+
11
+ - 自定义类:`docs/自定义类.md`
12
+ - 触发器:`docs/触发器类.md`
13
+ - 定时类:`docs/cloudcc定时类.md`
14
+ - 定时作业:`docs/cloudcc定时作业.md`
15
+ - 自定义页面:`docs/自定义页面.md`
16
+ - 自定义组件:`docs/CloudCC自定义组件使用说明.md`
17
+
18
+ 如需求涉及多个模块,按“后端能力 -> 页面能力 -> 组合方案”顺序阅读,再输出拆解结果与交付物清单。
19
+
20
+ ---
21
+
7
22
  ## 需求拆解模板(AI 必须输出)
8
23
 
9
24
  拿到需求后,先输出以下结构(缺信息则显式标注“待确认”):
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: cloudcc-cli-dev
3
- description: CloudCC CRM 二次开发 CLI 助手。用于需求拆解与方案选型,并通过 cloudcc-cli(cc 命令)创建/拉取/发布自定义对象、字段、菜单/应用、自定义类、定时器、触发器与 Vue 自定义组件等资产。用户提到 CloudCC、cloudcc-cli、cc 命令、对象/字段/触发器/定时器/自定义组件 时应优先使用。
3
+ description: CloudCC CRM 二次开发 CLI 助手。用于需求拆解与方案选型,并通过 cloudcc-cli(cc 命令)创建/拉取/发布类、定时类、定时作业、触发器、自定义组件、自定义页面、自定义设置、客户端脚本与静态资源。用户提到 CloudCC、cloudcc-cli、cc 命令、类/定时类/定时作业/触发器/自定义组件/自定义页面/自定义设置/客户端脚本/静态资源 时应优先使用。
4
4
  ---
5
5
 
6
6
  # CloudCC CLI Development Skill
@@ -10,19 +10,39 @@ description: CloudCC CRM 二次开发 CLI 助手。用于需求拆解与方案
10
10
 
11
11
  ## 工作目录
12
12
  - 在openclaw环境中,需要在agent的workspace中创建code文件夹,然后在code文件中使用cc create project xxx,创建一个模版项目。
13
+ - 每次启动这个技能,要扫描下code文件夹,查看创建的项目
13
14
 
14
15
  ## 使用方式(AI 必须遵循)
15
16
 
16
- - 先阅读 `REQUIREMENTS_BREAKDOWN.md`,输出需求拆解与交付物清单,再进入落地步骤。
17
+ - 设计实现方案时,重点阅读 `REQUIREMENTS_BREAKDOWN.md`,输出需求拆解与交付物清单,发开时可以忽略
17
18
  - 需要环境/密钥 配置时,阅读 `INSTALL_AND_BOOTSTRAP.md`。
18
19
  - 需要建模时(对象/字段/菜单/应用),阅读 `OBJECTS_AND_FIELDS.md`。
19
- - 需要后端逻辑时(类/定时器/触发器),按主题阅读:
20
+ - 需要开发后端逻辑时(类/定时器/触发器),按主题阅读:
20
21
  - `BACKEND_CLASS.md`
21
22
  - `BACKEND_SCHEDULE.md`
22
23
  - `BACKEND_TRIGGER.md`
23
- - 需要自定义组件时,阅读 `VUE_CUSTOM_COMPONENT.md`。
24
+ - 需要开发自定义组件时,阅读 `VUE_CUSTOM_COMPONENT.md`。
25
+ - 需要开发自定义页面时,阅读 `VUE_CUSTOM_PAGE.md`。
26
+ - 需要开发自定义设置时,阅读 `CUSTOM-SETTING-API.md`。
27
+ - 需要管理静态资源时,阅读 `STATIC-RESOURCE-API.md`。
28
+ - 需要开发客户端脚本时,优先阅读 `CLI_CHEATSHEET.md` 中的 `script` 命令章节。
24
29
  - 需要快速对照命令与参数时,阅读 `CLI_CHEATSHEET.md`。
25
30
 
31
+ ## 密钥配置
32
+
33
+ 密钥应配置在每个项目的 `cloudcc-cli.config.js` 文件中,不要存储在技能目录中。
34
+
35
+ 示例配置:
36
+ ```javascript
37
+ module.exports = {
38
+ "use": "junjiedemo",
39
+ "junjiedemo": {
40
+ "safetyMark": "xxx",
41
+ "CloudCCDev": "xxx"
42
+ }
43
+ }
44
+ ```
45
+
26
46
  ## 强制安全边界
27
47
 
28
48
  - 不要在输出/代码/提交中包含真实密钥(`CloudCCDev`、`safetyMark`、`secretKey`、`openSecretKey`、token
@@ -37,8 +57,10 @@ description: CloudCC CRM 二次开发 CLI 助手。用于需求拆解与方案
37
57
  - 安装与初始化:`INSTALL_AND_BOOTSTRAP.md`
38
58
  - 需求拆解与方案选择:`REQUIREMENTS_BREAKDOWN.md`
39
59
  - 自定义对象与字段:`OBJECTS_AND_FIELDS.md`
40
- - 自定义类:`BACKEND_CLASS.md`
41
- - 定时类:`BACKEND_SCHEDULE.md`
42
- - 触发器:`BACKEND_TRIGGER.md`
60
+ - 类/定时类/定时作业/触发器:`BACKEND_CLASS.md`、`BACKEND_SCHEDULE.md`、`BACKEND_TRIGGER.md`
43
61
  - Vue 自定义组件:`VUE_CUSTOM_COMPONENT.md`
62
+ - 自定义页面:`VUE_CUSTOM_PAGE.md`
63
+ - 自定义设置:`CUSTOM-SETTING-API.md`
64
+ - 静态资源:`STATIC-RESOURCE-API.md`
65
+ - 客户端脚本:`CLI_CHEATSHEET.md`(`script` 章节)
44
66
  - CLI 速查:`CLI_CHEATSHEET.md`
@@ -0,0 +1,60 @@
1
+ # 静态资源(cc 命令模式)
2
+
3
+ 本文已从“直接 API 文档”重构为“`cc` 命令优先”。
4
+
5
+ ---
6
+
7
+ ## 覆盖范围
8
+
9
+ 通过 `cc` 管理静态资源:
10
+
11
+ - 列表查询
12
+ - 详情查询
13
+ - 删除
14
+ - 容量统计
15
+ - 文档查看
16
+
17
+ ---
18
+
19
+ ## 命令速查
20
+
21
+ ```bash
22
+ # 文档
23
+ cc doc staticResource
24
+
25
+ # 列表(condition 可选)
26
+ cc get staticResource <projectPath> [encodedCondJson]
27
+
28
+ # 详情
29
+ cc detail staticResource <projectPath> <resourceId>
30
+
31
+ # 删除
32
+ cc delete staticResource <projectPath> <resourceId>
33
+
34
+ # 容量统计
35
+ cc count staticResource <projectPath> [encodedCondJson]
36
+ ```
37
+
38
+ ---
39
+
40
+ ## 参数说明
41
+
42
+ - `projectPath`:项目根目录(包含 `cloudcc-cli.config.js`)。
43
+ - `encodedCondJson`:`encodeURI(JSON.stringify({...}))` 形式条件参数。
44
+
45
+ 示例:
46
+
47
+ ```bash
48
+ cc get staticResource . "$(node -e 'console.log(encodeURI(JSON.stringify({label:\"logo\"})))')"
49
+ ```
50
+
51
+ ```bash
52
+ cc count staticResource .
53
+ ```
54
+
55
+ ---
56
+
57
+ ## 说明与边界
58
+
59
+ - 当前未封装“文件上传/更新”命令(`saveStaticResource` 涉及 `FormData` 上传文件)。
60
+ - 需要上传文件时,建议使用平台页面操作;后续可按需求补 `cc create staticResource`。
@@ -0,0 +1,216 @@
1
+ # 自定义页面(Custom Page)
2
+
3
+ ## 覆盖范围
4
+
5
+ 本篇聚焦 CloudCC 自定义页面(Custom Page)的 CLI 操作(仅 `cc` 命令):
6
+
7
+ - 创建自定义页面
8
+ - 获取页面列表
9
+ - 删除自定义页面
10
+
11
+ ---
12
+
13
+ ## 什么是自定义页面
14
+
15
+ 自定义页面是 CloudCC 平台提供的**可视化低代码页面构建工具**,基于**自定义组件**创建,通过拖拽组件的方式调整布局、配置属性,快速实现各种业务需求(仪表盘、审批流程、数据大屏等)。
16
+
17
+ > 注意:自定义页面的内容由自定义组件组成。页面本身是"容器",组件才是"内容"。
18
+ > 推荐最佳实践:**一页一组件**,画布和组件均设置 100% 宽高,复杂布局在组件内部实现。
19
+
20
+ ---
21
+
22
+ ## CLI 命令速查
23
+
24
+ > CLI 调用模式:`cc <action> <type> ...`(动作在前,类型在后)
25
+
26
+ | 操作 | 命令 |
27
+ | -------- | ---------------------------------------------------------- |
28
+ | 创建页面 | `cc create customPage <pageLabel> <pageApi> <pluginId\|compLabel\|compUniName> [projectPath]` |
29
+ | 查询列表 | `cc get customPage [pageNo] [pageSize] [projectPath]` |
30
+ | 删除页面 | `cc delete customPage <id> [projectPath]` |
31
+
32
+ ---
33
+
34
+ ## 创建自定义页面
35
+
36
+ ### 命令
37
+
38
+ ```bash
39
+ cc create customPage <pageLabel> <pageApi> <pluginId|compLabel|compUniName> [projectPath]
40
+ ```
41
+
42
+ ### 参数说明
43
+
44
+ | 参数 | 必填 | 说明 |
45
+ | -------------------------------------- | ---- | ----------------------------------------------------------------------------------- |
46
+ | `pageLabel` | 是 | 页面显示名称(中文/英文均可) |
47
+ | `pageApi` | 是 | 页面 API 名称(唯一标识,英文) |
48
+ | `pluginId\|compLabel\|compUniName` | 是 | 组件标识:可传组件 ID、组件显示名(`compLabel`)或组件唯一名(`compUniName`) |
49
+ | `projectPath` | 否 | 项目路径,默认为当前工作目录 `cwd` |
50
+
51
+ ### 示例
52
+
53
+ ```bash
54
+ # 使用组件 ID 创建
55
+ cc create customPage 销售仪表盘 salesDashboard 69bba42dda48d241327d1cf7
56
+
57
+ # 使用组件显示名(compLabel)创建
58
+ cc create customPage 销售仪表盘 salesDashboard 合同助手
59
+
60
+ # 使用组件唯一名(compUniName)创建
61
+ cc create customPage 销售仪表盘 salesDashboard component-contract-assistant
62
+
63
+ # 指定项目路径
64
+ cc create customPage 销售仪表盘 salesDashboard 69bba42dda48d241327d1cf7 /path/to/project
65
+ ```
66
+
67
+ ### 说明
68
+
69
+ - 创建成功后,控制台会输出页面 ID:`Success! Custom page created. ID: xxx`
70
+ - `cc create customPage` 会自动创建“带组件”的页面,不再是空页面
71
+
72
+ ### `create` 命令补充说明(带组件场景)
73
+
74
+ 当前 `create` 命令内部采用以下流程生成 `pageContent`:
75
+
76
+ 1. 运行 `cc create customPage ...` 后,CLI 会自动从当前组织读取可用自定义组件,并只使用自定义组件分组(`label.dev.bizType.custom`)
77
+
78
+ 2. 在该分组中按输入标识匹配组件(优先支持:`id`、`compLabel`、`compUniName`)
79
+
80
+ 3. 以匹配到组件的 `vueData` 作为 `pageContent` 模板,并做如下处理:
81
+
82
+ - 将 `vueData` 反序列化为对象(或数组元素对象)
83
+ - 保留 `renderMode`、`isLock`、`events`、`eventsOption`、`style`、`styleOption`、`componentInfo`、`propObj`、`propOption` 等结构
84
+ - 按页面实例补齐/替换基础字段:`id`、`comId`、`name`、`propObj.id`、`propObj.pageApi`
85
+ - 生成 `compList`(最小字段:`id`、`compUniName`)
86
+
87
+ > 推荐做法:一页一组件,画布与组件都使用 100% 宽高,复杂布局放到组件内部实现。
88
+
89
+ ---
90
+
91
+ ## 查询自定义页面列表
92
+
93
+ ### 命令
94
+
95
+ ```bash
96
+ cc get customPage [pageNo] [pageSize] [projectPath]
97
+ ```
98
+
99
+ ### 参数说明
100
+
101
+ | 参数 | 必填 | 默认值 | 说明 |
102
+ | ------------- | ---- | ------ | ---------------------------------- |
103
+ | `pageNo` | 否 | `1` | 当前页码 |
104
+ | `pageSize` | 否 | `20` | 每页条数 |
105
+ | `projectPath` | 否 | `cwd` | 项目路径,默认为当前工作目录 |
106
+
107
+ ### 示例
108
+
109
+ ```bash
110
+ # 获取第 1 页,每页 20 条(默认)
111
+ cc get customPage
112
+
113
+ # 获取第 2 页,每页 10 条
114
+ cc get customPage 2 10
115
+
116
+ # 指定项目路径
117
+ cc get customPage 1 20 /path/to/project
118
+ ```
119
+
120
+ ### 输出格式
121
+
122
+ ```
123
+ [1] ID: abc123 Label: 销售仪表盘 API: salesDashboard
124
+ [2] ID: def456 Label: 审批流程 API: approvalFlow
125
+ ```
126
+
127
+ ---
128
+
129
+ ## 将自定义页面挂到菜单(page 菜单)
130
+
131
+ 当你要把某个自定义页面放到导航菜单中时,需要先拿到该页面的 `pageApi`(上面列表输出中的 `API` 字段)。
132
+
133
+ ### 命令
134
+
135
+ ```bash
136
+ cc create menu page <projectPath> <pageApi> <tabName> <pname> [tabStyle] [mobileimg] [cloudccservicetab] [mobileurl]
137
+ ```
138
+
139
+ ### 关键规则
140
+
141
+ - `pageApi` 为自定义页面 API 名(例如 `avaya-callcenter`)。
142
+ - CLI 内部会自动拼接 `lightningPage = pageApi + "#lightning"`。
143
+ - `pageType` 固定为 `customPage`(无需手动传)。
144
+ - `pname` 为菜单名称(必填,建议英文/数字/下划线)。
145
+ - `mobileurl` 默认为空字符串 `""`。
146
+
147
+ ### 示例
148
+
149
+ ```bash
150
+ # 1) 先查页面,拿 API 字段
151
+ cc get customPage
152
+
153
+ # 2) 用 pageApi 创建 page 类型菜单
154
+ cc create menu page . avaya-callcenter "Avaya 呼叫中心" avaya_callcenter_menu
155
+
156
+ # 3) 查询菜单确认
157
+ cc get menu .
158
+ ```
159
+
160
+ ---
161
+
162
+ ## 删除自定义页面
163
+
164
+ ### 命令
165
+
166
+ ```bash
167
+ cc delete customPage <id> [projectPath]
168
+ ```
169
+
170
+ ### 参数说明
171
+
172
+ | 参数 | 必填 | 说明 |
173
+ | ------------- | ---- | ---------------------------------- |
174
+ | `id` | 是 | 页面 ID(从 `list` 命令中获取) |
175
+ | `projectPath` | 否 | 项目路径,默认为当前工作目录 `cwd` |
176
+
177
+ ### 示例
178
+
179
+ ```bash
180
+ # 删除 ID 为 abc123 的自定义页面
181
+ cc delete customPage abc123
182
+
183
+ # 指定项目路径
184
+ cc delete customPage abc123 /path/to/project
185
+ ```
186
+
187
+ ### 说明
188
+
189
+ - 删除成功后控制台会输出:`Success! Custom page (ID: abc123) deleted.`
190
+ - 删除仅影响**云端**记录,不影响本地任何文件
191
+
192
+ ---
193
+
194
+ ## 典型工作流
195
+
196
+ ```bash
197
+ # 1. 查询已有页面列表,记录 ID
198
+ cc get customPage
199
+
200
+ # 2. 创建新页面(获取到 ID 后在开发者控制台拖拽组件填充)
201
+ cc create customPage 销售仪表盘 salesDashboard 69bba42dda48d241327d1cf7
202
+
203
+ # 3. 删除废弃页面
204
+ cc delete customPage <id>
205
+ ```
206
+
207
+ ---
208
+
209
+ ## 注意事项
210
+
211
+ - 所有命令需要项目目录下存在 `cloudcc-cli.config.js`(或 `package.json` 中包含 `accessToken`)才能正常工作
212
+ - `pageApi` 在同一组织内必须唯一
213
+ - `cc create customPage` 当前依赖“自定义组件分组(label.dev.bizType.custom)”数据
214
+ - 目标组件必须在该分组中可匹配,且包含 `vueData` 字段
215
+
216
+ ---