weaver-e10-builder 1.1.3 → 1.1.5

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 (177) hide show
  1. package/dist/commands/check.d.ts.map +1 -1
  2. package/dist/commands/check.js +48 -15
  3. package/dist/commands/check.js.map +1 -1
  4. package/dist/commands/designer-common.d.ts +56 -0
  5. package/dist/commands/designer-common.d.ts.map +1 -0
  6. package/dist/commands/designer-common.js +165 -0
  7. package/dist/commands/designer-common.js.map +1 -0
  8. package/dist/commands/designer-setters.d.ts +13 -0
  9. package/dist/commands/designer-setters.d.ts.map +1 -0
  10. package/dist/commands/designer-setters.js +593 -0
  11. package/dist/commands/designer-setters.js.map +1 -0
  12. package/dist/commands/designer.d.ts +17 -0
  13. package/dist/commands/designer.d.ts.map +1 -0
  14. package/dist/commands/designer.js +448 -0
  15. package/dist/commands/designer.js.map +1 -0
  16. package/dist/commands/form-add-detail-table.d.ts.map +1 -1
  17. package/dist/commands/form-add-detail-table.js +59 -0
  18. package/dist/commands/form-add-detail-table.js.map +1 -1
  19. package/dist/commands/form-association.d.ts.map +1 -1
  20. package/dist/commands/form-association.js +3 -2
  21. package/dist/commands/form-association.js.map +1 -1
  22. package/dist/commands/form-button.d.ts.map +1 -1
  23. package/dist/commands/form-button.js +86 -1
  24. package/dist/commands/form-button.js.map +1 -1
  25. package/dist/commands/form-data.d.ts.map +1 -1
  26. package/dist/commands/form-data.js +13 -1
  27. package/dist/commands/form-data.js.map +1 -1
  28. package/dist/commands/form-ebuilder-scope.js +3 -3
  29. package/dist/commands/form-ebuilder-scope.js.map +1 -1
  30. package/dist/commands/form-formula.js +4 -4
  31. package/dist/commands/form-formula.js.map +1 -1
  32. package/dist/commands/form-list-click.d.ts.map +1 -1
  33. package/dist/commands/form-list-click.js +30 -2
  34. package/dist/commands/form-list-click.js.map +1 -1
  35. package/dist/commands/form-list-filter.js +1 -1
  36. package/dist/commands/form-list-filter.js.map +1 -1
  37. package/dist/commands/form-list-hierarchy.d.ts +3 -0
  38. package/dist/commands/form-list-hierarchy.d.ts.map +1 -0
  39. package/dist/commands/form-list-hierarchy.js +133 -0
  40. package/dist/commands/form-list-hierarchy.js.map +1 -0
  41. package/dist/commands/form-list-permission.d.ts.map +1 -1
  42. package/dist/commands/form-list-permission.js +17 -3
  43. package/dist/commands/form-list-permission.js.map +1 -1
  44. package/dist/commands/form-list.d.ts.map +1 -1
  45. package/dist/commands/form-list.js +2 -0
  46. package/dist/commands/form-list.js.map +1 -1
  47. package/dist/commands/form-nlist.d.ts.map +1 -1
  48. package/dist/commands/form-nlist.js +47 -15
  49. package/dist/commands/form-nlist.js.map +1 -1
  50. package/dist/commands/form-option-template.d.ts +3 -0
  51. package/dist/commands/form-option-template.d.ts.map +1 -0
  52. package/dist/commands/form-option-template.js +291 -0
  53. package/dist/commands/form-option-template.js.map +1 -0
  54. package/dist/commands/form-permission.d.ts.map +1 -1
  55. package/dist/commands/form-permission.js +214 -2
  56. package/dist/commands/form-permission.js.map +1 -1
  57. package/dist/commands/form-view.d.ts.map +1 -1
  58. package/dist/commands/form-view.js +23 -1
  59. package/dist/commands/form-view.js.map +1 -1
  60. package/dist/commands/form.d.ts.map +1 -1
  61. package/dist/commands/form.js +259 -59
  62. package/dist/commands/form.js.map +1 -1
  63. package/dist/commands/icon.d.ts.map +1 -1
  64. package/dist/commands/icon.js +9 -13
  65. package/dist/commands/icon.js.map +1 -1
  66. package/dist/commands/menu-permission.d.ts.map +1 -1
  67. package/dist/commands/menu-permission.js +19 -12
  68. package/dist/commands/menu-permission.js.map +1 -1
  69. package/dist/commands/page.d.ts +14 -0
  70. package/dist/commands/page.d.ts.map +1 -0
  71. package/dist/commands/page.js +175 -0
  72. package/dist/commands/page.js.map +1 -0
  73. package/dist/commands/wf-form.js +1 -1
  74. package/dist/commands/wf-form.js.map +1 -1
  75. package/dist/commands/workflow-condition.js +9 -8
  76. package/dist/commands/workflow-condition.js.map +1 -1
  77. package/dist/commands/workflow-node-overtime.d.ts.map +1 -1
  78. package/dist/commands/workflow-node-overtime.js +16 -8
  79. package/dist/commands/workflow-node-overtime.js.map +1 -1
  80. package/dist/commands/workflow-node.d.ts.map +1 -1
  81. package/dist/commands/workflow-node.js +35 -5
  82. package/dist/commands/workflow-node.js.map +1 -1
  83. package/dist/commands/workflow-numbering.d.ts.map +1 -1
  84. package/dist/commands/workflow-numbering.js +63 -30
  85. package/dist/commands/workflow-numbering.js.map +1 -1
  86. package/dist/commands/workflow-operator-sign.d.ts.map +1 -1
  87. package/dist/commands/workflow-operator-sign.js +2 -1
  88. package/dist/commands/workflow-operator-sign.js.map +1 -1
  89. package/dist/commands/workflow.d.ts.map +1 -1
  90. package/dist/commands/workflow.js +78 -38
  91. package/dist/commands/workflow.js.map +1 -1
  92. package/dist/core/client.d.ts +9 -0
  93. package/dist/core/client.d.ts.map +1 -1
  94. package/dist/core/client.js +16 -1
  95. package/dist/core/client.js.map +1 -1
  96. package/dist/index.js +6 -0
  97. package/dist/index.js.map +1 -1
  98. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  99. package/dist/services/actionflow/preflight_service.js +40 -17
  100. package/dist/services/actionflow/preflight_service.js.map +1 -1
  101. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  102. package/dist/services/actionflow/workflow_compiler.js +4 -2
  103. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  104. package/dist/services/form-button-action.d.ts +17 -0
  105. package/dist/services/form-button-action.d.ts.map +1 -0
  106. package/dist/services/form-button-action.js +111 -0
  107. package/dist/services/form-button-action.js.map +1 -0
  108. package/dist/services/form-create.d.ts +15 -1
  109. package/dist/services/form-create.d.ts.map +1 -1
  110. package/dist/services/form-create.js +40 -5
  111. package/dist/services/form-create.js.map +1 -1
  112. package/dist/services/form-list-stats.d.ts.map +1 -1
  113. package/dist/services/form-list-stats.js +29 -6
  114. package/dist/services/form-list-stats.js.map +1 -1
  115. package/dist/services/form-nlist.d.ts +8 -2
  116. package/dist/services/form-nlist.d.ts.map +1 -1
  117. package/dist/services/form-nlist.js +32 -7
  118. package/dist/services/form-nlist.js.map +1 -1
  119. package/dist/services/form-sub-detail.d.ts +36 -0
  120. package/dist/services/form-sub-detail.d.ts.map +1 -0
  121. package/dist/services/form-sub-detail.js +132 -0
  122. package/dist/services/form-sub-detail.js.map +1 -0
  123. package/dist/services/form-view.d.ts +6 -0
  124. package/dist/services/form-view.d.ts.map +1 -1
  125. package/dist/services/form-view.js +24 -0
  126. package/dist/services/form-view.js.map +1 -1
  127. package/dist/services/workflow-operator.d.ts +9 -0
  128. package/dist/services/workflow-operator.d.ts.map +1 -1
  129. package/dist/services/workflow-operator.js +33 -0
  130. package/dist/services/workflow-operator.js.map +1 -1
  131. package/package.json +1 -1
  132. package/skill-docs/SKILL.md +27 -45
  133. package/skill-docs/assets/factory/chart-dimensions.json +536 -0
  134. package/skill-docs/assets/factory/example-btn-progress-collapse-configured.json +2515 -0
  135. package/skill-docs/assets/factory/example-configured-2.json +13805 -0
  136. package/skill-docs/assets/factory/example-configured.json +6735 -0
  137. package/skill-docs/assets/factory/factory-bar-stack.json +326 -0
  138. package/skill-docs/assets/factory/factory-bar.json +222 -0
  139. package/skill-docs/assets/factory/factory-bubble.json +322 -0
  140. package/skill-docs/assets/factory/factory-calendar.json +325 -0
  141. package/skill-docs/assets/factory/factory-circular.json +320 -0
  142. package/skill-docs/assets/factory/factory-collapse-panel.json +132 -0
  143. package/skill-docs/assets/factory/factory-comment.json +388 -0
  144. package/skill-docs/assets/factory/factory-count-down.json +198 -0
  145. package/skill-docs/assets/factory/factory-digital-panel.json +108 -0
  146. package/skill-docs/assets/factory/factory-eb-button.json +150 -0
  147. package/skill-docs/assets/factory/factory-fast-create.json +62 -0
  148. package/skill-docs/assets/factory/factory-gauge.json +312 -0
  149. package/skill-docs/assets/factory/factory-h-bar-stack.json +328 -0
  150. package/skill-docs/assets/factory/factory-h-bar.json +326 -0
  151. package/skill-docs/assets/factory/factory-line.json +212 -0
  152. package/skill-docs/assets/factory/factory-nav-bar.json +167 -0
  153. package/skill-docs/assets/factory/factory-nav-menu.json +144 -0
  154. package/skill-docs/assets/factory/factory-nav-panel.json +338 -0
  155. package/skill-docs/assets/factory/factory-new-tab.json +163 -0
  156. package/skill-docs/assets/factory/factory-nightingale.json +312 -0
  157. package/skill-docs/assets/factory/factory-nlist.json +112 -0
  158. package/skill-docs/assets/factory/factory-page-header.json +171 -0
  159. package/skill-docs/assets/factory/factory-picture.json +169 -0
  160. package/skill-docs/assets/factory/factory-pie.json +212 -0
  161. package/skill-docs/assets/factory/factory-progress-chart.json +162 -0
  162. package/skill-docs/assets/factory/factory-search-global.json +104 -0
  163. package/skill-docs/assets/factory/factory-slide.json +164 -0
  164. package/skill-docs/assets/factory/factory-treemap.json +322 -0
  165. package/skill-docs/assets/icons.db +0 -0
  166. package/skill-docs/references/coding/guide-page-code.md +21 -1
  167. package/skill-docs/references/coding/ref-compile-rules.md +24 -0
  168. package/skill-docs/references/common/guide-plan-template.md +219 -201
  169. package/skill-docs/references/common/ref-cli-commands.md +366 -320
  170. package/skill-docs/references/ebuilder-designer/guide-designer-components.md +110 -0
  171. package/skill-docs/references/ebuilder-designer/guide-designer-factory.md +460 -0
  172. package/skill-docs/references/ebuilder-designer/guide-designer-version.md +111 -0
  173. package/skill-docs/references/ebuilder-designer/guide-designer.md +287 -0
  174. package/skill-docs/references/form/guide-create-form.md +464 -409
  175. package/skill-docs/references/form/guide-form-button.md +82 -54
  176. package/skill-docs/references/form/guide-form-view.md +299 -284
  177. package/skill-docs/references/workflow/guide-workflow.md +59 -0
@@ -0,0 +1,593 @@
1
+ import { AuthSession } from '../core/auth.js';
2
+ import { ApiClient } from '../core/client.js';
3
+ import { fetchLayouts, saveLayouts, pickLayout, genLetterHex } from './designer-common.js';
4
+ /** 32 位随机 hex id(axisId/event/panel/comp 等机器 id;平台要求首位不能是数字)。 */
5
+ function uid() {
6
+ return genLetterHex(32);
7
+ }
8
+ /** 7 位随机 hex shortKey(图表度量/维度数据行键;平台要求首位不能是数字)。 */
9
+ function shortKey() {
10
+ return genLetterHex(7);
11
+ }
12
+ /** ds/fields 拉全字段对象(条目结构即平台原样)。 */
13
+ async function fetchFieldObjs(client, baseUrl, objId) {
14
+ const body = 'groupId=weaver-ebuilder-form-service&sourceId=' + objId +
15
+ '&sourceType=LOGIC&detailFieldsGroup=false&enableMerge=true&params=[]';
16
+ const r = await client.post(`${baseUrl}/api/ebuilder/common/ds/fields`, body, {
17
+ 'content-type': 'application/x-www-form-urlencoded',
18
+ ebbusinessid: objId,
19
+ });
20
+ const fields = r?.data?.[0]?.fields;
21
+ if (!Array.isArray(fields))
22
+ throw new Error(`读取表单字段失败: ${r?.msg || '未知错误'}`);
23
+ const map = {};
24
+ for (const f of fields) {
25
+ if (f.id)
26
+ map[String(f.id)] = f;
27
+ }
28
+ return map;
29
+ }
30
+ /** 找字段(fieldId 或名称)。 */
31
+ function findField(map, key) {
32
+ const hit = map[key] || Object.values(map).find((f) => f.text === key);
33
+ if (!hit)
34
+ throw new Error(`未找到字段「${key}」(用 form read <objId> --app-id 查 fieldId/名称)`);
35
+ return hit;
36
+ }
37
+ /** 定位 PC 端组件(type 校验可选)。 */
38
+ function findComp(layouts, compId, type) {
39
+ const lay = pickLayout(layouts, 'pc');
40
+ const comp = (lay.comps || []).find((c) => c.id === compId);
41
+ if (!comp)
42
+ throw new Error(`PC 端未找到组件 ${compId}(designer layout 查看组件 id)`);
43
+ if (type && comp.type !== type)
44
+ throw new Error(`组件类型是 ${comp.type},不是 ${type}`);
45
+ return { lay, comp };
46
+ }
47
+ /** MOBILE 端 refCompId 配对组件(存在则同改,保持两端一致)。 */
48
+ function mobileTwin(layouts, comp) {
49
+ const mob = layouts.find((l) => String(l.terminalType).toUpperCase() === 'MOBILE');
50
+ const twin = (mob?.comps || []).find((c) => c.id === comp.refCompId);
51
+ return twin || null;
52
+ }
53
+ /** 图表度量/维度条目公共修饰。 */
54
+ function decorateAxis(fieldObj, aggregator) {
55
+ const entry = JSON.parse(JSON.stringify(fieldObj));
56
+ entry.axisId = uid();
57
+ entry.shortKey = shortKey();
58
+ entry.orderType = 'DEFAULT';
59
+ if (aggregator)
60
+ entry.aggregator = aggregator;
61
+ return entry;
62
+ }
63
+ /** 页面级 dataset 绑定(chart/list 共用形态)。 */
64
+ function formDataset(objId, formName, appId, forList = false) {
65
+ const ds = {
66
+ id: objId,
67
+ text: formName,
68
+ type: 'LOGIC',
69
+ groupId: 'weaver-ebuilder-form-service',
70
+ isPhysical: true,
71
+ usage: 'all',
72
+ detailTable: false,
73
+ objType: 'physical',
74
+ module: 'ebuilder',
75
+ isFormModuleSelected: true,
76
+ };
77
+ if (forList) {
78
+ ds.appId = appId;
79
+ ds.ebuilderDataConfig = {
80
+ dataSetup: { dataSource: 'ALL', dataPermission: 'HAVE_PERMISSION_DATA', dataType: 'ALL' },
81
+ type: 'FORM',
82
+ };
83
+ }
84
+ return ds;
85
+ }
86
+ export function registerDesignerSetterCommands(program) {
87
+ const designer = program.commands.find((c) => c.name() === 'designer');
88
+ if (!designer)
89
+ return;
90
+ // ================= chart =================
91
+ const chart = designer.command('chart').description('图表组件配置(Pie/Bar/Line/Circular/BarStack/HBar/HBarStack/Nightingale/Gauge/Treemap/Bubble)');
92
+ const CHART_TYPES = ['Pie', 'Bar', 'Line', 'Circular', 'BarStack', 'HBar', 'HBarStack', 'Nightingale', 'Gauge', 'Treemap', 'Bubble'];
93
+ chart.command('dataset-set')
94
+ .description('绑图表数据源(表单)')
95
+ .argument('<pageId>', '页面 ID')
96
+ .argument('<compId>', '图表组件 ID')
97
+ .requiredOption('--obj-id <objId>', '表单 objId')
98
+ .requiredOption('--app-id <appId>', '应用 ID')
99
+ .requiredOption('--text <表单名>', '表单显示名')
100
+ .action(async (pageId, compId, o) => {
101
+ const opts = program.opts();
102
+ const auth = await AuthSession.fromOptions(opts);
103
+ if (!auth)
104
+ process.exit(1);
105
+ const client = new ApiClient(auth);
106
+ const layouts = await fetchLayouts(client, auth.getBaseUrl(), pageId);
107
+ const { comp } = findComp(layouts, compId);
108
+ if (!CHART_TYPES.includes(comp.type))
109
+ throw new Error(`组件类型是 ${comp.type},不是图表`);
110
+ comp.config.dataset = formDataset(o.objId, o.text, o.appId);
111
+ await saveLayouts(client, auth.getBaseUrl(), pageId, layouts);
112
+ console.log(`✅ 图表 ${comp.type} 数据源已绑: ${o.text}(${o.objId})`);
113
+ });
114
+ chart.command('measure-add')
115
+ .description('加度量(SUM/AVG/MAX/MIN 用 --field-id;COUNT 用 --count-records)')
116
+ .argument('<pageId>', '页面 ID')
117
+ .argument('<compId>', '图表组件 ID')
118
+ .option('--field-id <id|名>', '数字字段(SUM/AVG/MAX/MIN)')
119
+ .option('--count-records', '按记录数计数(COUNT)', false)
120
+ .option('--agg <type>', '聚合方式: SUM/AVG/MAX/MIN/COUNT', 'SUM')
121
+ .requiredOption('--text <显示名>', '度量显示名')
122
+ .action(async (pageId, compId, o) => {
123
+ const opts = program.opts();
124
+ const auth = await AuthSession.fromOptions(opts);
125
+ if (!auth)
126
+ process.exit(1);
127
+ const client = new ApiClient(auth);
128
+ const layouts = await fetchLayouts(client, auth.getBaseUrl(), pageId);
129
+ const { comp } = findComp(layouts, compId);
130
+ if (!CHART_TYPES.includes(comp.type))
131
+ throw new Error(`组件类型是 ${comp.type},不是图表`);
132
+ comp.config.measures = comp.config.measures || [];
133
+ let entry;
134
+ if (o.countRecords) {
135
+ entry = decorateAxis(findField(await fetchFieldObjs(client, auth.getBaseUrl(), String((comp.config.dataset?.id) || '')), '数据ID'));
136
+ entry.aggregator = 'COUNT';
137
+ }
138
+ else {
139
+ if (!o.fieldId) {
140
+ console.error('SUM/AVG/MAX/MIN 用 --field-id 指字段;COUNT 用 --count-records');
141
+ process.exit(1);
142
+ }
143
+ const f = findField(await fetchFieldObjs(client, auth.getBaseUrl(), String(comp.config.dataset?.id || '')), o.fieldId);
144
+ entry = decorateAxis(f, o.agg);
145
+ }
146
+ entry.text = o.text;
147
+ comp.config.measures.push(entry);
148
+ await saveLayouts(client, auth.getBaseUrl(), pageId, layouts);
149
+ console.log(`✅ 度量已加: ${entry.aggregator}(${o.text}) field=${entry.id}`);
150
+ });
151
+ chart.command('dimension-add')
152
+ .description('加维度(Select/Date/Employee/Text 字段)')
153
+ .argument('<pageId>', '页面 ID')
154
+ .argument('<compId>', '图表组件 ID')
155
+ .requiredOption('--field-id <id|名>', '维度字段')
156
+ .requiredOption('--text <显示名>', '维度显示名')
157
+ .action(async (pageId, compId, o) => {
158
+ const opts = program.opts();
159
+ const auth = await AuthSession.fromOptions(opts);
160
+ if (!auth)
161
+ process.exit(1);
162
+ const client = new ApiClient(auth);
163
+ const layouts = await fetchLayouts(client, auth.getBaseUrl(), pageId);
164
+ const { comp } = findComp(layouts, compId);
165
+ if (!CHART_TYPES.includes(comp.type))
166
+ throw new Error(`组件类型是 ${comp.type},不是图表`);
167
+ comp.config.dimensions = comp.config.dimensions || [];
168
+ const entry = decorateAxis(findField(await fetchFieldObjs(client, auth.getBaseUrl(), String(comp.config.dataset?.id || '')), o.fieldId));
169
+ entry.text = o.text;
170
+ // Date 维度平台默认按月(guide-designer-factory 实测)
171
+ if (entry.compType === 'DateComponent') {
172
+ entry.dateGroupType = 'month';
173
+ entry.format = 'yyyy-MM';
174
+ }
175
+ comp.config.dimensions.push(entry);
176
+ await saveLayouts(client, auth.getBaseUrl(), pageId, layouts);
177
+ console.log(`✅ 维度已加: ${o.text} (${entry.compType}) field=${entry.id}`);
178
+ });
179
+ chart.command('title')
180
+ .description('设图表标题')
181
+ .argument('<pageId>', '页面 ID')
182
+ .argument('<compId>', '图表组件 ID')
183
+ .requiredOption('--text <标题>', '标题文本')
184
+ .option('--enabled <on|off>', '是否启用标题', 'on')
185
+ .action(async (pageId, compId, o) => {
186
+ const opts = program.opts();
187
+ const auth = await AuthSession.fromOptions(opts);
188
+ if (!auth)
189
+ process.exit(1);
190
+ const client = new ApiClient(auth);
191
+ const layouts = await fetchLayouts(client, auth.getBaseUrl(), pageId);
192
+ const { comp } = findComp(layouts, compId);
193
+ comp.config.title = o.text;
194
+ comp.config.titleEnabled = o.enabled !== 'off';
195
+ await saveLayouts(client, auth.getBaseUrl(), pageId, layouts);
196
+ console.log(`✅ 标题已设: 「${o.text}」(${comp.type})`);
197
+ });
198
+ chart.command('height')
199
+ .description('设图表像素高度(同步全 11 种图表 config.height;auto-height 按 height÷行高换算 h)')
200
+ .argument('<pageId>', '页面 ID')
201
+ .argument('<compId>', '图表组件 ID')
202
+ .requiredOption('--px <n>', '像素高度', Number)
203
+ .action(async (pageId, compId, o) => {
204
+ const opts = program.opts();
205
+ const auth = await AuthSession.fromOptions(opts);
206
+ if (!auth)
207
+ process.exit(1);
208
+ const client = new ApiClient(auth);
209
+ const layouts = await fetchLayouts(client, auth.getBaseUrl(), pageId);
210
+ const { comp } = findComp(layouts, compId);
211
+ comp.config.height = o.px;
212
+ await saveLayouts(client, auth.getBaseUrl(), pageId, layouts);
213
+ console.log(`✅ 图表高度已设: ${o.px}px`);
214
+ });
215
+ // ================= digital-panel =================
216
+ const dp = designer.command('digital-panel').description('数字面板组件配置(KPI 指标卡)');
217
+ dp.command('panel-add')
218
+ .description('加指标卡(聚合一个数字字段)')
219
+ .argument('<pageId>', '页面 ID')
220
+ .argument('<compId>', '数字面板组件 ID')
221
+ .requiredOption('--obj-id <objId>', '表单 objId')
222
+ .requiredOption('--app-id <appId>', '应用 ID')
223
+ .requiredOption('--field-id <id|名>', '聚合字段(Number/Money)')
224
+ .option('--aggregator <type>', '聚合方式: SUM/COUNT/AVG/MAX/MIN', 'SUM')
225
+ .requiredOption('--label <标题>', '卡片标题')
226
+ .action(async (pageId, compId, o) => {
227
+ const opts = program.opts();
228
+ const auth = await AuthSession.fromOptions(opts);
229
+ if (!auth)
230
+ process.exit(1);
231
+ const client = new ApiClient(auth);
232
+ const layouts = await fetchLayouts(client, auth.getBaseUrl(), pageId);
233
+ const { comp } = findComp(layouts, compId, 'DigitalPanel');
234
+ const f = findField(await fetchFieldObjs(client, auth.getBaseUrl(), o.objId), o.fieldId);
235
+ const panel = {
236
+ ...JSON.parse(JSON.stringify(f)),
237
+ id: uid(),
238
+ statType: 'data',
239
+ dataset: formDataset(o.objId, f.fieldGroup?.name || o.label, o.appId),
240
+ aggregator: o.aggregator,
241
+ showType: 'DEFAULT',
242
+ url: '',
243
+ optionType: '',
244
+ orderType: '',
245
+ title: o.label,
246
+ text: o.label,
247
+ decimalLength: -1,
248
+ filters: {},
249
+ shortKey: '',
250
+ calculationFields: [],
251
+ lazyLoad: false,
252
+ editMark: true,
253
+ parseMark: false,
254
+ eventGroup: [[{
255
+ type: 'CLICK', name: '单击', id: uid(), disableDelete: false,
256
+ events: [{ type: 'NewPage', id: uid(), linkInfo: { openMode: '4', page: { pageType: 'LINK', pageId: '', pageName: '' }, type: 'dataList', fieldList: [] } }],
257
+ actionDesc: {},
258
+ }]],
259
+ };
260
+ comp.config.panels = comp.config.panels || [];
261
+ comp.config.panels.push(panel);
262
+ await saveLayouts(client, auth.getBaseUrl(), pageId, layouts);
263
+ console.log(`✅ 指标卡已加: ${o.label} = ${o.aggregator}(${f.text}),当前 ${comp.config.panels.length} 张卡`);
264
+ });
265
+ // ================= list =================
266
+ const list = designer.command('list').description('数据列表组件配置(NList)');
267
+ list.command('dataset-set')
268
+ .description('绑列表数据源(表单)')
269
+ .argument('<pageId>', '页面 ID')
270
+ .argument('<compId>', '列表组件 ID')
271
+ .requiredOption('--obj-id <objId>', '表单 objId')
272
+ .requiredOption('--app-id <appId>', '应用 ID')
273
+ .requiredOption('--text <表单名>', '表单显示名')
274
+ .action(async (pageId, compId, o) => {
275
+ const opts = program.opts();
276
+ const auth = await AuthSession.fromOptions(opts);
277
+ if (!auth)
278
+ process.exit(1);
279
+ const client = new ApiClient(auth);
280
+ const layouts = await fetchLayouts(client, auth.getBaseUrl(), pageId);
281
+ const { comp } = findComp(layouts, compId, 'NList');
282
+ comp.config.dataset = formDataset(o.objId, o.text, o.appId, true);
283
+ await saveLayouts(client, auth.getBaseUrl(), pageId, layouts);
284
+ console.log(`✅ 列表数据源已绑: ${o.text}(${o.objId})`);
285
+ });
286
+ list.command('field-add')
287
+ .description('加列表显示列(--type 与 --comp-type 同值传字段类型)')
288
+ .argument('<pageId>', '页面 ID')
289
+ .argument('<compId>', '列表组件 ID')
290
+ .requiredOption('--field-id <id|名>', '字段')
291
+ .requiredOption('--obj-id <objId>', '表单 objId')
292
+ .requiredOption('--text <列名>', '列显示名')
293
+ .requiredOption('--type <表单类型>', '字段类型(Text/Select/DateComponent/Money/NumberComponent/Employee)')
294
+ .requiredOption('--comp-type <表单类型>', '同 --type(平台要求两处都传)')
295
+ .option('--width <n>', '列宽', Number, 100)
296
+ .action(async (pageId, compId, o) => {
297
+ const opts = program.opts();
298
+ const auth = await AuthSession.fromOptions(opts);
299
+ if (!auth)
300
+ process.exit(1);
301
+ const client = new ApiClient(auth);
302
+ const layouts = await fetchLayouts(client, auth.getBaseUrl(), pageId);
303
+ const { comp } = findComp(layouts, compId, 'NList');
304
+ const f = findField(await fetchFieldObjs(client, auth.getBaseUrl(), o.objId), o.fieldId);
305
+ comp.config.tableField = comp.config.tableField || [];
306
+ comp.config.tableField.push({
307
+ id: f.id,
308
+ name: f.name,
309
+ objId: o.objId,
310
+ text: o.text,
311
+ mainField: true,
312
+ mainPrimaryKey: false,
313
+ uid: uid(),
314
+ type: f.type,
315
+ compType: o.compType,
316
+ width: o.width,
317
+ fieldVersion: 1,
318
+ });
319
+ await saveLayouts(client, auth.getBaseUrl(), pageId, layouts);
320
+ console.log(`✅ 列已加: ${o.text}(共 ${comp.config.tableField.length} 列)`);
321
+ });
322
+ list.command('order-add')
323
+ .description('加排序字段')
324
+ .argument('<pageId>', '页面 ID')
325
+ .argument('<compId>', '列表组件 ID')
326
+ .requiredOption('--field-id <id|名>', '排序字段')
327
+ .requiredOption('--obj-id <objId>', '表单 objId')
328
+ .option('--desc', '倒序(默认升序)', false)
329
+ .action(async (pageId, compId, o) => {
330
+ const opts = program.opts();
331
+ const auth = await AuthSession.fromOptions(opts);
332
+ if (!auth)
333
+ process.exit(1);
334
+ const client = new ApiClient(auth);
335
+ const layouts = await fetchLayouts(client, auth.getBaseUrl(), pageId);
336
+ const { comp } = findComp(layouts, compId, 'NList');
337
+ const f = findField(await fetchFieldObjs(client, auth.getBaseUrl(), o.objId), o.fieldId);
338
+ comp.config.order = comp.config.order || [];
339
+ comp.config.order.push({ fieldId: f.id, name: f.name, text: f.text, orderType: o.desc ? 'desc' : 'asc' });
340
+ await saveLayouts(client, auth.getBaseUrl(), pageId, layouts);
341
+ console.log(`✅ 排序已加: ${f.text} ${o.desc ? '降序' : '升序'}`);
342
+ });
343
+ // ================= calendar =================
344
+ const calendar = designer.command('calendar').description('日历组件配置');
345
+ calendar.command('dataset-bind')
346
+ .description('绑日历数据源(开始/结束 Date 字段 + 标题字段)')
347
+ .argument('<pageId>', '页面 ID')
348
+ .argument('<compId>', '日历组件 ID')
349
+ .requiredOption('--obj-id <objId>', '表单 objId')
350
+ .requiredOption('--app-id <appId>', '应用 ID')
351
+ .requiredOption('--text <表单名>', '表单显示名')
352
+ .requiredOption('--start <id|名>', '开始日期字段')
353
+ .requiredOption('--end <id|名>', '结束日期字段')
354
+ .requiredOption('--title-field <id|名>', '标题字段')
355
+ .action(async (pageId, compId, o) => {
356
+ const opts = program.opts();
357
+ const auth = await AuthSession.fromOptions(opts);
358
+ if (!auth)
359
+ process.exit(1);
360
+ const client = new ApiClient(auth);
361
+ const layouts = await fetchLayouts(client, auth.getBaseUrl(), pageId);
362
+ const { comp } = findComp(layouts, compId, 'Calendar');
363
+ const fields = await fetchFieldObjs(client, auth.getBaseUrl(), o.objId);
364
+ const sf = findField(fields, o.start);
365
+ const ef = findField(fields, o.end);
366
+ const tf = findField(fields, o.titleField);
367
+ comp.config.dataSetNodes = [{
368
+ id: uid(),
369
+ dataset: {
370
+ ...formDataset(o.objId, `${o.text}(ft_${Number(o.objId) + 1})`, o.appId),
371
+ appId: o.appId,
372
+ },
373
+ dataSetName: '日程',
374
+ show: true,
375
+ datasetType: 'dataset',
376
+ dataAction: {},
377
+ dataShowType: ['2', '4', '3', '5'],
378
+ baseInfo: {
379
+ titlefieldid: tf.id,
380
+ startTimeField: sf.id,
381
+ endTimeField: ef.id,
382
+ startTimeRange: 9,
383
+ endTimeRange: 18,
384
+ colorField: '',
385
+ detailInfo: '',
386
+ },
387
+ }];
388
+ comp.config.dataShowType = ['2', '4', '3', '5'];
389
+ comp.config.canCreateInterData = ['calendar', 'task', 'contactRemind'];
390
+ comp.config.canCreateDataset = true;
391
+ comp.config.baseInfo = { ...(comp.config.baseInfo || {}), use_viewModeChangeHideItem: true };
392
+ comp.config.baseInfoForMulp = { startTimeRange: 9, endTimeRange: 18 };
393
+ await saveLayouts(client, auth.getBaseUrl(), pageId, layouts);
394
+ console.log(`✅ 日历已绑: ${o.text}(${sf.text} → ${ef.text},标题=${tf.text})`);
395
+ console.log(' 提示: 事件渲染须 dataShowType 数组(已内置全视图);改字段映射用 calendar field-map。');
396
+ });
397
+ calendar.command('field-map')
398
+ .description('调日历字段映射(--end clear 做全天单日事件)')
399
+ .argument('<pageId>', '页面 ID')
400
+ .argument('<compId>', '日历组件 ID')
401
+ .option('--start <id|名>', '开始日期字段')
402
+ .option('--end <id|clear>', '结束日期字段(clear=清空→全天单日)')
403
+ .option('--title-field <id|名>', '标题字段')
404
+ .action(async (pageId, compId, o) => {
405
+ const opts = program.opts();
406
+ const auth = await AuthSession.fromOptions(opts);
407
+ if (!auth)
408
+ process.exit(1);
409
+ const client = new ApiClient(auth);
410
+ const layouts = await fetchLayouts(client, auth.getBaseUrl(), pageId);
411
+ const { comp } = findComp(layouts, compId, 'Calendar');
412
+ const node = (comp.config.dataSetNodes || [])[0];
413
+ if (!node) {
414
+ console.error('日历尚未绑数据源(先 dataset-bind)');
415
+ process.exit(1);
416
+ }
417
+ const fields = await fetchFieldObjs(client, auth.getBaseUrl(), String(node.dataset?.id || ''));
418
+ node.baseInfo = node.baseInfo || {};
419
+ if (o.start)
420
+ node.baseInfo.startTimeField = findField(fields, o.start).id;
421
+ if (o.end === 'clear')
422
+ node.baseInfo.endTimeField = '';
423
+ else if (o.end)
424
+ node.baseInfo.endTimeField = findField(fields, o.end).id;
425
+ if (o.titleField)
426
+ node.baseInfo.titlefieldid = findField(fields, o.titleField).id;
427
+ await saveLayouts(client, auth.getBaseUrl(), pageId, layouts);
428
+ console.log(`✅ 映射已更新: ${JSON.stringify(node.baseInfo)}`);
429
+ });
430
+ calendar.command('title')
431
+ .description('设日历标题')
432
+ .argument('<pageId>', '页面 ID')
433
+ .argument('<compId>', '日历组件 ID')
434
+ .requiredOption('--text <标题>', '标题文本')
435
+ .option('--enabled <on|off>', '是否启用', 'on')
436
+ .action(async (pageId, compId, o) => {
437
+ const opts = program.opts();
438
+ const auth = await AuthSession.fromOptions(opts);
439
+ if (!auth)
440
+ process.exit(1);
441
+ const client = new ApiClient(auth);
442
+ const layouts = await fetchLayouts(client, auth.getBaseUrl(), pageId);
443
+ const { comp } = findComp(layouts, compId, 'Calendar');
444
+ comp.config.title = o.text;
445
+ comp.config.titleEnabled = o.enabled !== 'off';
446
+ await saveLayouts(client, auth.getBaseUrl(), pageId, layouts);
447
+ console.log(`✅ 标题已设: 「${o.text}」`);
448
+ });
449
+ // ================= slide =================
450
+ const slide = designer.command('slide').description('幻灯片组件配置');
451
+ slide.command('pic-add')
452
+ .description('加轮播图(url 须平台资源路径,如 /build/ebdcoms/images/cover/cover_1.png)')
453
+ .argument('<pageId>', '页面 ID')
454
+ .argument('<compId>', '幻灯片组件 ID')
455
+ .requiredOption('--url <imgUrl>', '图片平台路径(本地路径浏览器不可达)')
456
+ .action(async (pageId, compId, o) => {
457
+ // Git Bash MSYS 路径转换坑:/build/... 被转成 D:/Program Files/Git/build/...
458
+ const msysMatch = o.url.match(/^[A-Za-z]:[/\\](?:Program Files[/\\]Git)?[/\\]*(\/.+)$/);
459
+ if (msysMatch)
460
+ o.url = msysMatch[1];
461
+ const opts = program.opts();
462
+ const auth = await AuthSession.fromOptions(opts);
463
+ if (!auth)
464
+ process.exit(1);
465
+ const client = new ApiClient(auth);
466
+ const layouts = await fetchLayouts(client, auth.getBaseUrl(), pageId);
467
+ const { comp } = findComp(layouts, compId, 'Slide');
468
+ comp.config.pics = comp.config.pics || [];
469
+ comp.config.pics.push({ id: uid(), type: 'assets', imgUrl: o.url });
470
+ await saveLayouts(client, auth.getBaseUrl(), pageId, layouts);
471
+ console.log(`✅ 轮播图已加: ${o.url}(共 ${comp.config.pics.length} 张)`);
472
+ });
473
+ slide.command('title')
474
+ .description('设幻灯片标题')
475
+ .argument('<pageId>', '页面 ID')
476
+ .argument('<compId>', '幻灯片组件 ID')
477
+ .requiredOption('--text <标题>', '标题文本')
478
+ .option('--enabled <on|off>', '是否启用', 'on')
479
+ .action(async (pageId, compId, o) => {
480
+ const opts = program.opts();
481
+ const auth = await AuthSession.fromOptions(opts);
482
+ if (!auth)
483
+ process.exit(1);
484
+ const client = new ApiClient(auth);
485
+ const layouts = await fetchLayouts(client, auth.getBaseUrl(), pageId);
486
+ const { comp } = findComp(layouts, compId, 'Slide');
487
+ comp.config.title = o.text;
488
+ comp.config.titleEnabled = o.enabled !== 'off';
489
+ await saveLayouts(client, auth.getBaseUrl(), pageId, layouts);
490
+ console.log(`✅ 标题已设: 「${o.text}」`);
491
+ });
492
+ // ================= nav-panel =================
493
+ const navPanel = designer.command('nav-panel').description('导航面板组件配置');
494
+ navPanel.command('menu-add')
495
+ .description('加跳页菜单项(NewPage 事件双层 eventGroup)')
496
+ .argument('<pageId>', '页面 ID')
497
+ .argument('<compId>', '导航面板组件 ID')
498
+ .requiredOption('--name <菜单名>', '菜单名称')
499
+ .requiredOption('--to-page <pageId>', '目标页面 ID')
500
+ .option('--icon <path>', '图标 path(默认 #icon-eBuilder-o)', '#icon-eBuilder-o')
501
+ .action(async (pageId, compId, o) => {
502
+ const opts = program.opts();
503
+ const auth = await AuthSession.fromOptions(opts);
504
+ if (!auth)
505
+ process.exit(1);
506
+ const client = new ApiClient(auth);
507
+ const baseUrl = auth.getBaseUrl();
508
+ const layouts = await fetchLayouts(client, baseUrl, pageId);
509
+ const { comp } = findComp(layouts, compId, 'NavPanel');
510
+ // 目标页信息(page list 同网关)
511
+ const appId = String(layouts[0]?.appId || '');
512
+ const pr = await client.get(`${baseUrl}/api/bs/ebuilder/page/list?appid=${appId}`, { ebbusinessid: appId });
513
+ const pages = Array.isArray(pr?.data) ? pr.data : (pr?.data?.records || []);
514
+ const target = pages.find((p) => String(p.id) === String(o.toPage));
515
+ if (!target) {
516
+ console.error(`目标页面不存在: ${o.toPage}(page list --app-id ${appId} 查看)`);
517
+ process.exit(1);
518
+ }
519
+ comp.config.menuConfig = comp.config.menuConfig || [];
520
+ comp.config.menuConfig.push({
521
+ id: uid().slice(0, 8),
522
+ icon: '',
523
+ name: o.name,
524
+ eventGroup: [[{
525
+ type: 'CLICK', name: '单击', id: uid(), disableDelete: false,
526
+ events: [{
527
+ id: uid(), type: 'NewPage',
528
+ linkInfo: {
529
+ page: {
530
+ pageId: String(target.id), pageType: 'PAGE', pageName: target.name,
531
+ parentId: 'pages', openMode: '4', terminalScopes: target.terminalScope || 'PC,MOBILE',
532
+ appid: appId, dsDataset: {}, belongModule: target.belongModule || 'EB_PAGE',
533
+ },
534
+ openMode: '4', winSize: '60%', params: [], name: o.name, flatToBottom: false,
535
+ icon: { path: o.icon, style: { color: '#5d9cec', fillType: 'borderColor', borderColor: '#5d9cec' } },
536
+ },
537
+ }],
538
+ actionDesc: o.name,
539
+ }]],
540
+ iconStyle: { color: '#2dc3e8', backgroundColor: 'transparent' },
541
+ show: true,
542
+ custom: false,
543
+ group: 'default_group',
544
+ numTips: false,
545
+ tipsContent: '',
546
+ descFont: { font: { color: '#999999', fontSize: '12px' } },
547
+ });
548
+ await saveLayouts(client, baseUrl, pageId, layouts);
549
+ console.log(`✅ 菜单项已加: ${o.name} → ${target.name}(共 ${comp.config.menuConfig.length} 项)`);
550
+ });
551
+ navPanel.command('menu-source-type')
552
+ .description('切菜单来源(DEFAULT=应用默认菜单树 / CUSTOM=自定义 menuConfig)')
553
+ .argument('<pageId>', '页面 ID')
554
+ .argument('<compId>', '导航面板组件 ID')
555
+ .argument('<type>', 'DEFAULT 或 CUSTOM')
556
+ .action(async (pageId, compId, type) => {
557
+ const t = type.toUpperCase();
558
+ if (!['DEFAULT', 'CUSTOM'].includes(t)) {
559
+ console.error('类型须为 DEFAULT 或 CUSTOM');
560
+ process.exit(1);
561
+ }
562
+ const opts = program.opts();
563
+ const auth = await AuthSession.fromOptions(opts);
564
+ if (!auth)
565
+ process.exit(1);
566
+ const client = new ApiClient(auth);
567
+ const layouts = await fetchLayouts(client, auth.getBaseUrl(), pageId);
568
+ const { comp } = findComp(layouts, compId, 'NavPanel');
569
+ comp.config.menuSourceType = t;
570
+ await saveLayouts(client, auth.getBaseUrl(), pageId, layouts);
571
+ console.log(`✅ 菜单来源已切: ${t}`);
572
+ });
573
+ navPanel.command('title')
574
+ .description('设导航面板标题')
575
+ .argument('<pageId>', '页面 ID')
576
+ .argument('<compId>', '导航面板组件 ID')
577
+ .requiredOption('--text <标题>', '标题文本')
578
+ .option('--enabled <on|off>', '是否启用', 'on')
579
+ .action(async (pageId, compId, o) => {
580
+ const opts = program.opts();
581
+ const auth = await AuthSession.fromOptions(opts);
582
+ if (!auth)
583
+ process.exit(1);
584
+ const client = new ApiClient(auth);
585
+ const layouts = await fetchLayouts(client, auth.getBaseUrl(), pageId);
586
+ const { comp } = findComp(layouts, compId, 'NavPanel');
587
+ comp.config.title = o.text;
588
+ comp.config.titleEnabled = o.enabled !== 'off';
589
+ await saveLayouts(client, auth.getBaseUrl(), pageId, layouts);
590
+ console.log(`✅ 标题已设: 「${o.text}」`);
591
+ });
592
+ }
593
+ //# sourceMappingURL=designer-setters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"designer-setters.js","sourceRoot":"","sources":["../../src/commands/designer-setters.ts"],"names":[],"mappings":"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"}