cloudcc-cli 2.2.8 → 2.3.0

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 (52) hide show
  1. package/.cloudcc-cache.json +32 -1
  2. package/.cursor/skills/cloudcc-cli-dev/BACKEND_CLASS.md +97 -0
  3. package/.cursor/skills/cloudcc-cli-dev/BACKEND_SCHEDULE.md +78 -0
  4. package/.cursor/skills/cloudcc-cli-dev/BACKEND_TRIGGER.md +137 -0
  5. package/.cursor/skills/cloudcc-cli-dev/CLI_CHEATSHEET.md +215 -0
  6. package/.cursor/skills/cloudcc-cli-dev/CUSTOM-SETTING-API.md +241 -0
  7. package/{cloudcc-cli-dev → .cursor/skills/cloudcc-cli-dev}/SKILL.md +7 -2
  8. package/.cursor/skills/cloudcc-cli-dev/VUE_CUSTOM_COMPONENT.md +151 -0
  9. package/README.md +22 -0
  10. package/bin/index.js +6 -0
  11. package/build/component-cc-test-001.common.js +831 -0
  12. package/build/component-cc-test-001.common.js.map +1 -0
  13. package/build/component-cc-test-001.css +1 -0
  14. package/build/component-cc-test-001.umd.js +874 -0
  15. package/build/component-cc-test-001.umd.js.map +1 -0
  16. package/build/component-cc-test-001.umd.min.js +8 -0
  17. package/build/component-cc-test-001.umd.min.js.map +1 -0
  18. package/build/demo.html +1 -0
  19. package/classes/CCdd/CCdd.java +22 -0
  20. package/classes/CCdd/CCddTest.java +11 -0
  21. package/classes/CCdd/config.json +1 -0
  22. package/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 +130 -0
  23. package/docs/cloudcc/345/256/232/346/227/266/344/275/234/344/270/232.md +472 -0
  24. package/docs/cloudcc/345/256/232/346/227/266/347/261/273.md +302 -0
  25. package/docs//350/207/252/345/256/232/344/271/211/347/261/273.md +258 -0
  26. package/docs//350/247/246/345/217/221/345/231/250/347/261/273.md +404 -0
  27. package/package.json +1 -1
  28. package/plugins/cc-test-001/cc-test-001.vue +32 -0
  29. package/plugins/cc-test-001/components/HelloWorld.vue +11 -0
  30. package/plugins/cc-test-001/config.json +6 -0
  31. package/schedule/CCdd/CCdd.java +11 -0
  32. package/schedule/CCdd/config.json +1 -0
  33. package/src/customPage/create.js +77 -0
  34. package/src/customPage/delete.js +65 -0
  35. package/src/customPage/get.js +85 -0
  36. package/src/customPage/index.js +10 -0
  37. package/src/customSetting/doc.js +196 -0
  38. package/src/customSetting/index.js +7 -0
  39. package/src/plugin/delete.js +91 -0
  40. package/src/plugin/doc.js +76 -0
  41. package/src/plugin/index.js +1 -0
  42. package/src/triggers/doc.js +258 -222
  43. package/src/triggers/pullList.js +3 -0
  44. package/target/classes/CCdd/CCdd.class +0 -0
  45. package/target/classes/CCdd/CCddTest.class +0 -0
  46. package/target/classes/CCdd/config.json +1 -0
  47. package/cloudcc-cli-dev/BACKEND_CODE.md +0 -114
  48. package/cloudcc-cli-dev/CLI_CHEATSHEET.md +0 -90
  49. package/cloudcc-cli-dev/VUE_CUSTOM_COMPONENT.md +0 -50
  50. /package/{cloudcc-cli-dev → .cursor/skills/cloudcc-cli-dev}/INSTALL_AND_BOOTSTRAP.md +0 -0
  51. /package/{cloudcc-cli-dev → .cursor/skills/cloudcc-cli-dev}/OBJECTS_AND_FIELDS.md +0 -0
  52. /package/{cloudcc-cli-dev → .cursor/skills/cloudcc-cli-dev}/REQUIREMENTS_BREAKDOWN.md +0 -0
@@ -0,0 +1,241 @@
1
+ # 自定义设置相关接口
2
+
3
+ ## 指导文档
4
+
5
+ 直接使用以下命令查看指导文档:
6
+
7
+ ```bash
8
+ cc doc customSetting
9
+ ```
10
+
11
+
12
+ ---
13
+
14
+ ## 查询自定义设置列表
15
+
16
+ 路径:`{服务名称}/api/customsetting/list`
17
+
18
+ 方法:POST
19
+
20
+ 接口描述:分页/查询自定义设置主列表,返回 `objList` 等。
21
+
22
+ ### 请求参数
23
+
24
+ | 参数名称 | 类型 | 是否必须 | 默认值 | 备注 |
25
+ | :--- | :--- | :--- | :--- | :--- |
26
+ | (请求体) | object | 非必须 | {} | 当前前端传空对象 |
27
+
28
+ ---
29
+
30
+ ## 新建/更新自定义设置(保存主对象)
31
+
32
+ 路径:`{服务名称}/api/customsetting/save`
33
+
34
+ 方法:POST
35
+
36
+ 接口描述:新建或编辑自定义设置主记录(标签、对象 API 名、类型、可见性、描述等)。
37
+
38
+ ### 请求参数
39
+
40
+ | 参数名称 | 类型 | 是否必须 | 默认值 | 备注 |
41
+ | :--- | :--- | :--- | :--- | :--- |
42
+ | tpSysObjectVO | object | 必须 | — | 主对象载体,见下表子字段 |
43
+
44
+ **tpSysObjectVO 子字段:**
45
+
46
+ | 参数名称 | 类型 | 是否必须 | 默认值 | 备注 |
47
+ | :--- | :--- | :--- | :--- | :--- |
48
+ | accessable | string | 视业务 | — | 可见性(如 `"2"` 表示公用等,与表单选项一致) |
49
+ | dataType | string | 视业务 | — | 设置类型:`L` 列表,`H` 层次结构 |
50
+ | id | string | 视业务 | `""` | 新建传空字符串;编辑传记录 id |
51
+ | label | string | 视业务 | — | 标签 |
52
+ | remark | string | 非必须 | — | 描述 |
53
+ | schemetableName | string | 视业务 | — | 对象名(编辑时前端通常禁用修改) |
54
+
55
+ ---
56
+
57
+ ## 编辑前回显(自定义设置主对象)
58
+
59
+ 路径:`{服务名称}/api/customsetting/modify`
60
+
61
+ 方法:POST
62
+
63
+ 接口描述:根据主记录 id 拉取表单回显数据。
64
+
65
+ ### 请求参数
66
+
67
+ | 参数名称 | 类型 | 是否必须 | 默认值 | 备注 |
68
+ | :--- | :--- | :--- | :--- | :--- |
69
+ | objid | string | 必须 | — | 记录id |
70
+
71
+ ---
72
+
73
+ ## 删除自定义设置主对象
74
+
75
+ 路径:`{服务名称}/api/customsetting/deleteobj`
76
+
77
+ 方法:POST
78
+
79
+ 接口描述:删除一条自定义设置主记录。
80
+
81
+ ### 请求参数
82
+
83
+ | 参数名称 | 类型 | 是否必须 | 默认值 | 备注 |
84
+ | :--- | :--- | :--- | :--- | :--- |
85
+ | objid | string | 必须 | — | 记录id |
86
+
87
+ ---
88
+
89
+ ## 查询自定义设置详情(含字段列表)
90
+
91
+ 路径:`{服务名称}/api/customsetting/detail`
92
+
93
+ 方法:POST
94
+
95
+ 接口描述:详情页使用,返回主对象信息及 `cusFields` 字段列表。
96
+
97
+ ### 请求参数
98
+
99
+ | 参数名称 | 类型 | 是否必须 | 默认值 | 备注 |
100
+ | :--- | :--- | :--- | :--- | :--- |
101
+ | objid | string | 必须 | — | 记录id |
102
+
103
+ ---
104
+
105
+ ## 进入字段编辑(取字段编辑所需数据)
106
+
107
+ 路径:`{服务名称}/api/customsetting/editfile`
108
+
109
+ 方法:POST
110
+
111
+ 接口描述:点击某字段「编辑」时调用,用于打开字段编辑器。
112
+
113
+ ### 请求参数
114
+
115
+ | 参数名称 | 类型 | 是否必须 | 默认值 | 备注 |
116
+ | :--- | :--- | :--- | :--- | :--- |
117
+ | queryrecordid | string | 必须 | — | 字段行 id |
118
+
119
+ ---
120
+
121
+ ## 删除自定义字段
122
+
123
+ 路径:`{服务名称}/api/customsetting/deletefield`
124
+
125
+ 方法:POST
126
+
127
+ 接口描述:在详情页删除某条自定义字段。
128
+
129
+ ### 请求参数
130
+
131
+ | 参数名称 | 类型 | 是否必须 | 默认值 | 备注 |
132
+ | :--- | :--- | :--- | :--- | :--- |
133
+ | id | string | 必须 | — | 字段行 id |
134
+ | objid | string | 必须 | — | 所属自定义设置 id |
135
+
136
+ ---
137
+
138
+
139
+ ## 自定义字段类型静态配置
140
+ > 前端静态配置,非后端接口返回)
141
+ ```json
142
+ [
143
+ {
144
+ "id": "0001",
145
+ "name": "URL",
146
+ "type": "U",
147
+ "address": "允许用户输入任何有效的网址。如果用户单击该字段,将根据用户选择的模式在浏览器的新窗口或当前窗口中打开该 URL。系统默认在浏览器的新窗口中打开该URL。"
148
+ },
149
+ {
150
+ "id": "0002",
151
+ "name": "百分比",
152
+ "type": "P",
153
+ "address": "允许用户输入百分比数字(例如,10),并自动向数字添加百分号。"
154
+ },
155
+ {
156
+ "id": "0003",
157
+ "name": "币种",
158
+ "type": "c",
159
+ "address": "币种"
160
+ },
161
+ {
162
+ "id": "0004",
163
+ "name": "电话",
164
+ "type": "H",
165
+ "address": "允许用户输入任何电话号码。自动将其转换为电话号码格式。"
166
+ },
167
+ {
168
+ "id": "0005",
169
+ "name": "电子邮件",
170
+ "type": "E",
171
+ "address": "允许用户输入电子邮件地址,对其进行验证以确保格式正确。如果对于一个联系人和潜在客户指定了此字段,则用户单击“发送电子邮件”时可以选择地址。注意,自定义电子邮件地址无法用于批量电子邮件。"
172
+ },
173
+ {
174
+ "id": "0006",
175
+ "name": "复选框",
176
+ "type": "B",
177
+ "address": "允许用户选择“真”(选取)或“假”(不选取)值。"
178
+ },
179
+ {
180
+ "id": "0007",
181
+ "name": "日期",
182
+ "type": "D",
183
+ "address": "允许用户输入日期或从弹出式日历中选择日期。"
184
+ },
185
+ {
186
+ "id": "0008",
187
+ "name": "日期和时间",
188
+ "type": "F",
189
+ "address": "允许用户输入日期和时间,或从弹出式日历中选择日期。当用户单击弹出式日历中的某个日期后,该日期和当前时间将输入到日期/时间字段。"
190
+ },
191
+ {
192
+ "id": "0009",
193
+ "name": "数字",
194
+ "type": "N",
195
+ "address": "允许用户输入任何数字。将删除前置零。"
196
+ },
197
+ {
198
+ "id": "0010",
199
+ "name": "文本",
200
+ "type": "S",
201
+ "address": "允许用户输入任何字母和数字组合。"
202
+ },
203
+ {
204
+ "id": "0011",
205
+ "name": "长文本",
206
+ "type": "X",
207
+ "address": "允许用户输入多行文本,最多可输入 4000 个字符。"
208
+ }
209
+ ]
210
+ ```
211
+
212
+ ## 保存字段(新增/编辑字段)
213
+ 路径:`{服务名称}/api/customsetting/saveField`
214
+ 方法:POST
215
+ 接口描述:在自定义设置详情页中保存字段定义(字段新建或编辑)。
216
+ ### 请求参数
217
+ | 参数名称 | 类型 | 是否必须 | 默认值 | 备注 |
218
+ | :--- | :--- | :--- | :--- | :--- |
219
+ | tpSysSchemetableVO | object | 必须 | — | 字段对象,见下方子字段表 |
220
+ | fdtype | string | 必须 | — | 字段类型代码(如 `U` 表示 URL) |
221
+ **tpSysSchemetableVO 子字段:**
222
+ | 参数名称 | 类型 | 是否必须 | 默认值 | 备注 |
223
+ | :--- | :--- | :--- | :--- | :--- |
224
+ | schemetableId | string | 必须 | — | 所属自定义设置(对象)id |
225
+ | id | string | 非必须 | — | 字段 id;编辑时传,新增可不传或传空 |
226
+ | nameLabel | string | 必须 | — | 字段显示名称(标签) |
227
+ | apiname | string | 必须 | — | 字段 API 名 |
228
+ | edittype | string | 非必须 | — | 字段编辑类型(例如 URL 打开方式 `_blank`) |
229
+ | schemefieldLength | string | 非必须 | — | 字段长度 |
230
+ | defaultValue | string | 非必须 | — | 默认值 |
231
+ | datafieldRef | string | 非必须 | — | 数据字段引用名 |
232
+ | isDeleted | string | 非必须 | `"0"` | 删除标记 |
233
+ | fieldState | string | 非必须 | `"enable"` | 字段状态 |
234
+ | iscustom | string | 非必须 | `"1"` | 是否自定义字段 |
235
+ | schemefieldType | string | 必须 | — | 字段类型代码(例如 `U`) |
236
+ | schemefieldName | string | 必须 | — | 字段物理名/存储名 |
237
+
238
+
239
+
240
+
241
+
@@ -16,7 +16,10 @@ description: CloudCC CRM 二次开发 CLI 助手。用于需求拆解与方案
16
16
  - 先阅读 `REQUIREMENTS_BREAKDOWN.md`,输出需求拆解与交付物清单,再进入落地步骤。
17
17
  - 需要环境/密钥 配置时,阅读 `INSTALL_AND_BOOTSTRAP.md`。
18
18
  - 需要建模时(对象/字段/菜单/应用),阅读 `OBJECTS_AND_FIELDS.md`。
19
- - 需要后端逻辑时(类/定时器/触发器),阅读 `BACKEND_CODE.md`。
19
+ - 需要后端逻辑时(类/定时器/触发器),按主题阅读:
20
+ - `BACKEND_CLASS.md`
21
+ - `BACKEND_SCHEDULE.md`
22
+ - `BACKEND_TRIGGER.md`
20
23
  - 需要自定义组件时,阅读 `VUE_CUSTOM_COMPONENT.md`。
21
24
  - 需要快速对照命令与参数时,阅读 `CLI_CHEATSHEET.md`。
22
25
 
@@ -34,6 +37,8 @@ description: CloudCC CRM 二次开发 CLI 助手。用于需求拆解与方案
34
37
  - 安装与初始化:`INSTALL_AND_BOOTSTRAP.md`
35
38
  - 需求拆解与方案选择:`REQUIREMENTS_BREAKDOWN.md`
36
39
  - 自定义对象与字段:`OBJECTS_AND_FIELDS.md`
37
- - 自定义类/定时器/触发器:`BACKEND_CODE.md`
40
+ - 自定义类:`BACKEND_CLASS.md`
41
+ - 定时类:`BACKEND_SCHEDULE.md`
42
+ - 触发器:`BACKEND_TRIGGER.md`
38
43
  - Vue 自定义组件:`VUE_CUSTOM_COMPONENT.md`
39
44
  - CLI 速查:`CLI_CHEATSHEET.md`
@@ -0,0 +1,151 @@
1
+ ## 覆盖范围
2
+
3
+ 本篇聚焦 CloudCC Vue2.x 自定义组件(Custom Component):
4
+
5
+ - 创建组件骨架
6
+ - 编辑与最佳实践入口
7
+ - 编译与发布到服务器
8
+
9
+ ---
10
+
11
+ ## 创建自定义组件
12
+
13
+ ### CLI 命令
14
+
15
+ ```bash
16
+ # 创建组件必须使用这个命令,在项目根目录执行(会生成到 plugins/<pluginName>/)
17
+ cc create plugin <pluginName>
18
+ ```
19
+
20
+ 创建完成后通常会生成以下结构(以 `create1` 的骨架为准):
21
+
22
+ - `plugins/<pluginName>/<pluginName>.vue`:组件入口文件(包含
23
+ `componentInfo`,并默认引入一个 `HelloWorld` 子组件)
24
+ - `plugins/<pluginName>/components/HelloWorld.vue`:示例子组件
25
+ - `plugins/<pluginName>/config.json`:组件元数据(至少包含 `component` /
26
+ `compName` / `compDesc`)
27
+
28
+ > 组件入口文件里的 `componentInfo.component`
29
+ > 需要全局唯一(用于平台识别/装载组件)。
30
+
31
+ ---
32
+
33
+ ## 发布组件
34
+
35
+ ```bash
36
+ cc publish plugin <pluginName>
37
+ ```
38
+
39
+ > 发布会执行编译/打包/上传;如果组件依赖复杂,注意依赖收集与发布策略。
40
+
41
+ ### 打包/注册策略(publish1:v1 / v2)
42
+
43
+ `publish1` 支持两种打包/注册方式,会根据组件里的 `componentInfo.buildVersion`
44
+ 选择:
45
+
46
+ - 默认(v1,`buildVersion` 不写或不等于 `"v2"`)
47
+ - 使用 `vue-custom-element` 将组件注册为 Web Component/custom element
48
+ - 注册名来自 `componentInfo.component`
49
+ - v2(设置 `componentInfo.buildVersion = "v2"`)
50
+ - 使用 `Vue.component` 的方式注册组件
51
+
52
+ 示例(在组件入口 `.vue` 的 `data()` 里配置):
53
+
54
+ ```js
55
+ componentInfo: {
56
+ component: "component-<pluginName>",
57
+ compName: "compName-<pluginName>",
58
+ compDesc: "Component description information",
59
+ // 选填:不填默认 v1;填 "v2" 则走 Vue.component 注册
60
+ buildVersion: "v2"
61
+ }
62
+ ```
63
+
64
+ ### 加载模式(loadModel:lazy / start)
65
+
66
+ `publish1` 会读取 `componentInfo.loadModel` 来决定组件加载时机:
67
+
68
+ - `lazy`:默认,进入对应页面/区域后再加载
69
+ - `start`:启动加载,在应用启动时即加载
70
+
71
+ 你可以在 `componentInfo` 中按需设置,例如:
72
+
73
+ ```js
74
+ componentInfo: {
75
+ // ...
76
+ loadModel: "start";
77
+ }
78
+ ```
79
+
80
+ ---
81
+ ## 同步(从云端拉取)
82
+
83
+ > “同步”在本仓库中对应 `pull`:把云端的自定义组件代码/配置拉到本地 `plugins/<pluginName>/`。
84
+
85
+ ### CLI 命令
86
+
87
+ ```bash
88
+ # 同步插件到本地(可传组件名或 id)
89
+ cc pull plugin <pluginNameOrId> [projectPath]
90
+ ```
91
+
92
+ 说明:
93
+
94
+ - `projectPath` 可选;不传则默认当前工作目录。
95
+ - 传组件名时:如果本地 `plugins/<pluginName>/config.json` 存在 `id`,会用 `id` 拉取;否则会把入参当作 `id` 处理。
96
+ - 拉取后会生成/更新 `plugins/<归一化后的pluginName>/config.json` 与相关文件(包含依赖文件)。
97
+ ---
98
+
99
+ ## 删除组件(云端)
100
+
101
+ > 删除只影响**云端**记录,本地 `plugins/<pluginName>/` 目录不会被删除。
102
+
103
+ ### CLI 命令
104
+
105
+ ```bash
106
+ # 传组件名(自动从本地 plugins/<pluginName>/config.json 读取 id)
107
+ cc delete plugin <pluginName> [projectPath]
108
+
109
+ # 直接传云端 ID
110
+ cc delete plugin <pluginId> [projectPath]
111
+ ```
112
+
113
+ 说明:
114
+
115
+ - 传组件名时:如果本地 `plugins/<pluginName>/config.json` 存在 `id`,会用 `id`
116
+ 删除;否则把入参当作 `id` 直接请求。
117
+ - `projectPath` 可选,不传则默认当前工作目录。
118
+ - 删除成功后控制台会打印 `Success! Plugin (ID: xxx) deleted from server.`
119
+
120
+ ---
121
+ ## 批量拉取
122
+
123
+ > 当前仓库没有直接提供 `cc pullList plugin ...` 这种“内置批量拉取”命令。
124
+
125
+ 推荐方式:先用 `get plugin` 获取线上列表(包含 `id`),再用循环批量执行 `pull plugin <id>`。
126
+
127
+ ### 步骤 1:获取线上列表
128
+
129
+ ```bash
130
+ cc get plugin <projectPath>
131
+ ```
132
+
133
+ ### 步骤 2:循环拉取(示例)
134
+
135
+ ```bash
136
+ # 批量拉取前 N 个线上组件(示例 N=5)
137
+ N=5
138
+ ids=$(cc get plugin . | node -e "const a=JSON.parse(require('fs').readFileSync(0,'utf8')); console.log(a.slice(0,${N}).map(x=>x.id).filter(Boolean).join(' '))")
139
+ for id in $ids; do
140
+ cc pull plugin "$id" .
141
+ done
142
+ ```
143
+ ---
144
+
145
+ ## 编辑要点(CLI 项目约束)
146
+
147
+ - 组件目录通常为 `plugins/<pluginName>/`
148
+ - 确保所有 `<style>` 标签带 `scoped`,避免全局样式污染
149
+ - 发布通过 `cc publish plugin <pluginName>` 执行编译与上传
150
+
151
+ ---
package/README.md CHANGED
@@ -22,6 +22,28 @@ sudo npm i -g cloudcc-cli
22
22
  }
23
23
  ```
24
24
 
25
+ # ReleaseV2.3.0
26
+
27
+ #### Release Date: 2026-3-25
28
+
29
+ #### Release Scope: Full
30
+
31
+ #### Release Content
32
+
33
+ - Optimization
34
+ - Fix class management commands
35
+
36
+ # ReleaseV2.2.9
37
+
38
+ #### Release Date: 2026-3-25
39
+
40
+ #### Release Scope: Full
41
+
42
+ #### Release Content
43
+
44
+ - Optimization
45
+ - Add delete component command
46
+
25
47
  # ReleaseV2.2.8
26
48
 
27
49
  #### Release Date: 2026-3-24
package/bin/index.js CHANGED
@@ -6,6 +6,10 @@ cc.plugin = require("../src/plugin/index")
6
6
 
7
7
  cc.classes = require("../src/classes/index")
8
8
 
9
+ cc.customSetting = require("../src/customSetting/index")
10
+
11
+ cc.customPage = require("../src/customPage/index")
12
+
9
13
  cc.schedule = require("../src/timer/index")
10
14
 
11
15
  cc.triggers = require("../src/triggers/index")
@@ -34,4 +38,6 @@ cc.menu = require("../src/menu/index")
34
38
 
35
39
  cc.application = require("../src/application/index")
36
40
 
41
+
42
+
37
43
  module.exports = cc;