weaver-e10-builder 1.5.7 → 1.5.9

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 (142) hide show
  1. package/dist/commands/app.d.ts.map +1 -1
  2. package/dist/commands/app.js +259 -0
  3. package/dist/commands/app.js.map +1 -1
  4. package/dist/commands/form-add-detail-table.d.ts.map +1 -1
  5. package/dist/commands/form-add-detail-table.js +13 -2
  6. package/dist/commands/form-add-detail-table.js.map +1 -1
  7. package/dist/commands/form-button.d.ts.map +1 -1
  8. package/dist/commands/form-button.js +6 -4
  9. package/dist/commands/form-button.js.map +1 -1
  10. package/dist/commands/form-formula-linkage.d.ts.map +1 -1
  11. package/dist/commands/form-formula-linkage.js +4 -4
  12. package/dist/commands/form-formula-linkage.js.map +1 -1
  13. package/dist/commands/form-list-filter.d.ts +3 -0
  14. package/dist/commands/form-list-filter.d.ts.map +1 -1
  15. package/dist/commands/form-list-filter.js +88 -24
  16. package/dist/commands/form-list-filter.js.map +1 -1
  17. package/dist/commands/form-list-search-group.d.ts.map +1 -1
  18. package/dist/commands/form-list-search-group.js +54 -64
  19. package/dist/commands/form-list-search-group.js.map +1 -1
  20. package/dist/commands/form-list-stats.d.ts.map +1 -1
  21. package/dist/commands/form-list-stats.js +29 -4
  22. package/dist/commands/form-list-stats.js.map +1 -1
  23. package/dist/commands/form-list-utils.d.ts +46 -1
  24. package/dist/commands/form-list-utils.d.ts.map +1 -1
  25. package/dist/commands/form-list-utils.js +140 -47
  26. package/dist/commands/form-list-utils.js.map +1 -1
  27. package/dist/commands/form-list.d.ts.map +1 -1
  28. package/dist/commands/form-list.js +141 -71
  29. package/dist/commands/form-list.js.map +1 -1
  30. package/dist/commands/form-message.d.ts +3 -0
  31. package/dist/commands/form-message.d.ts.map +1 -0
  32. package/dist/commands/form-message.js +341 -0
  33. package/dist/commands/form-message.js.map +1 -0
  34. package/dist/commands/form-view.d.ts.map +1 -1
  35. package/dist/commands/form-view.js +31 -4
  36. package/dist/commands/form-view.js.map +1 -1
  37. package/dist/commands/matrix.d.ts.map +1 -1
  38. package/dist/commands/matrix.js +80 -42
  39. package/dist/commands/matrix.js.map +1 -1
  40. package/dist/commands/org.d.ts.map +1 -1
  41. package/dist/commands/org.js +61 -0
  42. package/dist/commands/org.js.map +1 -1
  43. package/dist/commands/role.d.ts.map +1 -1
  44. package/dist/commands/role.js +69 -9
  45. package/dist/commands/role.js.map +1 -1
  46. package/dist/commands/wf-form.d.ts.map +1 -1
  47. package/dist/commands/wf-form.js +5 -5
  48. package/dist/commands/wf-form.js.map +1 -1
  49. package/dist/index.js +2 -0
  50. package/dist/index.js.map +1 -1
  51. package/dist/services/actionflow/context_preflight.d.ts +3 -3
  52. package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
  53. package/dist/services/actionflow/context_preflight.js +45 -24
  54. package/dist/services/actionflow/context_preflight.js.map +1 -1
  55. package/dist/services/actionflow/context_provider.d.ts +7 -0
  56. package/dist/services/actionflow/context_provider.d.ts.map +1 -1
  57. package/dist/services/actionflow/context_provider.js +13 -1
  58. package/dist/services/actionflow/context_provider.js.map +1 -1
  59. package/dist/services/actionflow/formula_service.d.ts +15 -0
  60. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  61. package/dist/services/actionflow/formula_service.js +401 -57
  62. package/dist/services/actionflow/formula_service.js.map +1 -1
  63. package/dist/services/actionflow/param_group_dto.d.ts.map +1 -1
  64. package/dist/services/actionflow/param_group_dto.js +17 -3
  65. package/dist/services/actionflow/param_group_dto.js.map +1 -1
  66. package/dist/services/actionflow/param_type.d.ts +14 -0
  67. package/dist/services/actionflow/param_type.d.ts.map +1 -0
  68. package/dist/services/actionflow/param_type.js +69 -0
  69. package/dist/services/actionflow/param_type.js.map +1 -0
  70. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  71. package/dist/services/actionflow/preflight_service.js +59 -41
  72. package/dist/services/actionflow/preflight_service.js.map +1 -1
  73. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  74. package/dist/services/actionflow/workflow_compiler.js +65 -29
  75. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  76. package/dist/services/app-publish.d.ts +227 -0
  77. package/dist/services/app-publish.d.ts.map +1 -0
  78. package/dist/services/app-publish.js +403 -0
  79. package/dist/services/app-publish.js.map +1 -0
  80. package/dist/services/form-button-position.d.ts.map +1 -1
  81. package/dist/services/form-button-position.js +7 -1
  82. package/dist/services/form-button-position.js.map +1 -1
  83. package/dist/services/form-field-drop.d.ts.map +1 -1
  84. package/dist/services/form-field-drop.js +7 -0
  85. package/dist/services/form-field-drop.js.map +1 -1
  86. package/dist/services/form-formula-linkage.d.ts +24 -3
  87. package/dist/services/form-formula-linkage.d.ts.map +1 -1
  88. package/dist/services/form-formula-linkage.js +24 -5
  89. package/dist/services/form-formula-linkage.js.map +1 -1
  90. package/dist/services/form-list-search-group.d.ts +89 -0
  91. package/dist/services/form-list-search-group.d.ts.map +1 -0
  92. package/dist/services/form-list-search-group.js +260 -0
  93. package/dist/services/form-list-search-group.js.map +1 -0
  94. package/dist/services/form-list-search.d.ts +110 -0
  95. package/dist/services/form-list-search.d.ts.map +1 -0
  96. package/dist/services/form-list-search.js +231 -0
  97. package/dist/services/form-list-search.js.map +1 -0
  98. package/dist/services/form-list-stats.d.ts +21 -1
  99. package/dist/services/form-list-stats.d.ts.map +1 -1
  100. package/dist/services/form-list-stats.js +86 -12
  101. package/dist/services/form-list-stats.js.map +1 -1
  102. package/dist/services/form-message.d.ts +273 -0
  103. package/dist/services/form-message.d.ts.map +1 -0
  104. package/dist/services/form-message.js +575 -0
  105. package/dist/services/form-message.js.map +1 -0
  106. package/dist/services/form-sub-detail.d.ts.map +1 -1
  107. package/dist/services/form-sub-detail.js +5 -1
  108. package/dist/services/form-sub-detail.js.map +1 -1
  109. package/dist/services/form-view.d.ts +34 -2
  110. package/dist/services/form-view.d.ts.map +1 -1
  111. package/dist/services/form-view.js +74 -8
  112. package/dist/services/form-view.js.map +1 -1
  113. package/dist/services/matrix-fields.d.ts +42 -0
  114. package/dist/services/matrix-fields.d.ts.map +1 -0
  115. package/dist/services/matrix-fields.js +102 -0
  116. package/dist/services/matrix-fields.js.map +1 -0
  117. package/dist/services/org-browser.d.ts +60 -0
  118. package/dist/services/org-browser.d.ts.map +1 -0
  119. package/dist/services/org-browser.js +62 -0
  120. package/dist/services/org-browser.js.map +1 -0
  121. package/dist/services/quick-date-range.d.ts +22 -0
  122. package/dist/services/quick-date-range.d.ts.map +1 -0
  123. package/dist/services/quick-date-range.js +134 -0
  124. package/dist/services/quick-date-range.js.map +1 -0
  125. package/dist/services/role-member.d.ts +73 -2
  126. package/dist/services/role-member.d.ts.map +1 -1
  127. package/dist/services/role-member.js +141 -9
  128. package/dist/services/role-member.js.map +1 -1
  129. package/package.json +1 -1
  130. package/skill-docs/SKILL.md +281 -278
  131. package/skill-docs/_catalog.md +3 -0
  132. package/skill-docs/actionflows/SKILL.md +2 -1
  133. package/skill-docs/actionflows/references/components/message/InnerMQSend.md +6 -0
  134. package/skill-docs/references/app/guide-app-publish.md +92 -0
  135. package/skill-docs/references/common/guide-plan-template.md +148 -252
  136. package/skill-docs/references/common/map.md +2 -1
  137. package/skill-docs/references/common/ref-cli-commands.md +27 -8
  138. package/skill-docs/references/form/guide-form-message.md +57 -0
  139. package/skill-docs/references/form/guide-form-view.md +7 -2
  140. package/skill-docs/references/form/guide-formula-linkage.md +1 -1
  141. package/skill-docs/references/form/guide-list-stats.md +55 -2
  142. package/skill-docs/references/hrm/guide-matrix.md +30 -2
@@ -0,0 +1,260 @@
1
+ /**
2
+ * 台账「分类搜索」(`config.searchConditions.groupFilters`) 的取值与构造。
3
+ *
4
+ * **一条 groupFilter 的每一块都来自台账配置自己的回包**,不用另查字段接口:
5
+ *
6
+ * - 候选字段(含**系统字段**):`getNListConfig` 回包的 **`fieldUsage[0].fields[]`**。
7
+ * 这是我们原先取错的地方 —— 之前读的是 `tableField[].physicalField`,而 `tableField`
8
+ * 一条只有 11 个键(`uid`/`compType`/`name`/`objId`/`width`/`id`/`text`/`type`…),
9
+ * **根本没有 `physicalField`**,取出来一直是 `undefined`。
10
+ * - `groupFilter.config`:**就是 `fieldUsage` 那条记录上的 `config`,原样搬**(逐键比对零差异)。
11
+ * 业务字段那份 config 里已经带了 `dataType`(选项 `["dataOptionObj"]` / 浏览框 `["dataOption"]` /
12
+ * 日期 `["content"]`)与 `ebBackField`;系统字段那份是**空对象**。
13
+ * - 顶层几个名字:`name`/`fieldName` 取 `fieldUsage[].name`(业务字段是 `field_<id>`,
14
+ * 系统字段是语义名如 `creator`);`id`/`fieldId` 取 `fieldUsage[].id`(业务字段是雪花,
15
+ * 系统字段是 `"2"` 这类语义键)。
16
+ *
17
+ * 类型只按 `compType` 分四档,各自的 `listFilterDefaultSets` 不同(见 `buildFilterDefaultSets`)。
18
+ */
19
+ /** 选项类:分类项 = 字段自己的选项。 */
20
+ export const OPTION_COMPS = ['Select', 'RadioBox', 'CheckBox'];
21
+ /** 浏览框类:分类项 = 被引用表里的记录。 */
22
+ export const BROWSER_COMPS = ['Ebuilder', 'EBuilder', 'Browser', 'Employee', 'Department'];
23
+ /** 日期类:分类项 = 时间粒度。 */
24
+ export const DATE_COMPS = ['DateComponent', 'Date', 'DateTime'];
25
+ export const KIND_LABEL = {
26
+ option: '选项',
27
+ browser: '浏览框',
28
+ date: '日期',
29
+ system: '系统字段',
30
+ };
31
+ /** 日期可选的四种粒度,顺序即页面上的顺序。 */
32
+ export const DATE_GRANULARITIES = [
33
+ { value: 'year', name: '全年' },
34
+ { value: 'halfYear', name: '半年' },
35
+ { value: 'quarter', name: '季度' },
36
+ { value: 'month', name: '月' },
37
+ ];
38
+ /** 「全部」瓦片项的固定配置。 */
39
+ const TILE_ALL = { isChecked: false, isShow: true, showOrder: -1 };
40
+ /** 日期那条的「未分组」瓦片。 */
41
+ const TILE_NO_GROUP_DATE = { isChecked: false, isShow: true, showOrder: -1 };
42
+ /** 系统字段判据 —— 平台在字段记录里直接标了。 */
43
+ export function isSystemColumn(col) {
44
+ return String(col?.fieldClassification ?? '').toUpperCase() === 'SYSTEM';
45
+ }
46
+ /** 按 `compType` 判四档之一;认不出就报错(宁可早报,也不发一个错的 `dataType` 出去)。 */
47
+ export function resolveGroupFilterKind(col) {
48
+ if (isSystemColumn(col))
49
+ return 'system';
50
+ const comp = String(col?.compType || col?.type || '');
51
+ if (OPTION_COMPS.includes(comp))
52
+ return 'option';
53
+ if (DATE_COMPS.includes(comp))
54
+ return 'date';
55
+ if (BROWSER_COMPS.includes(comp))
56
+ return 'browser';
57
+ throw new Error(`字段「${col?.text ?? col?.id}」的类型 ${comp || '(未知)'} 不支持分类搜索。`
58
+ + `目前支持:选项类 ${OPTION_COMPS.join('/')}、浏览框类 ${BROWSER_COMPS.join('/')}、日期类 ${DATE_COMPS.join('/')},以及系统字段`);
59
+ }
60
+ export function parseShowPosition(input) {
61
+ const v = String(input ?? '1').trim();
62
+ if (v !== '0' && v !== '1')
63
+ throw new Error(`--position 只认 0(下拉样式)或 1(顶部),收到「${input}」`);
64
+ return v;
65
+ }
66
+ /** `--option-order default|field` → `optionOrderConfig` 的 `"0"` / `"1"`。 */
67
+ export function parseOptionOrder(input) {
68
+ const v = String(input ?? '').trim().toLowerCase();
69
+ if (!v)
70
+ return '0';
71
+ if (v === '0' || v === 'default' || v === '默认' || v === '默认排序')
72
+ return '0';
73
+ if (v === '1' || v === 'field' || v === '属性' || v === '按字段属性' || v === '按字段属性设置')
74
+ return '1';
75
+ throw new Error(`--option-order 只认 default(默认排序)或 field(按字段属性设置),收到「${input}」`);
76
+ }
77
+ /** `--date-granularity year,month` → 校验并归一成粒度值数组(保序、去重)。 */
78
+ export function parseDateGranularity(input) {
79
+ const raw = String(input ?? '').trim();
80
+ const all = DATE_GRANULARITIES.map((g) => g.value);
81
+ if (!raw)
82
+ return all;
83
+ const out = [];
84
+ for (const part of raw.split(/[,,\s]+/).filter(Boolean)) {
85
+ const key = part.toLowerCase();
86
+ const hit = DATE_GRANULARITIES
87
+ .find((g) => g.value.toLowerCase() === key || g.name === part);
88
+ if (!hit)
89
+ throw new Error(`认不出日期粒度「${part}」,支持 ${DATE_GRANULARITIES.map((g) => `${g.name}(${g.value})`).join(' / ')}`);
90
+ if (!out.includes(hit.value))
91
+ out.push(hit.value);
92
+ }
93
+ // 统一按页面上的固定顺序回,免得同样的集合因传参顺序不同而产出不同的数组
94
+ return out.sort((a, b) => all.indexOf(a) - all.indexOf(b));
95
+ }
96
+ /** 按选项名把 `--options` / `--default-options` 落到 valueKey 上。 */
97
+ export function resolveOptionKeys(options, names, flag) {
98
+ if (!names || names.length === 0)
99
+ return [];
100
+ const list = Array.isArray(options) ? options : [];
101
+ const out = [];
102
+ for (const name of names) {
103
+ const hits = list.filter((o) => String(o?.name ?? '') === String(name) || String(o?.valueKey ?? '') === String(name));
104
+ if (hits.length === 0) {
105
+ throw new Error(`${flag} 里的选项「${name}」不存在。现有:${list.map((o) => o?.name).filter(Boolean).join('、') || '(无)'}`);
106
+ }
107
+ if (hits.length > 1)
108
+ throw new Error(`${flag} 里的选项「${name}」匹配到多条,无法确定`);
109
+ const key = String(hits[0]?.valueKey ?? '');
110
+ if (!out.includes(key))
111
+ out.push(key);
112
+ }
113
+ return out;
114
+ }
115
+ /** 选项类字段的 `listGroupSets` = 字段选项展开。`show` 缺省=全显示。 */
116
+ export function buildOptionGroupSets(options, show, checked) {
117
+ const list = Array.isArray(options) ? options : [];
118
+ return list.map((o, i) => {
119
+ const key = String(o?.valueKey ?? i);
120
+ const name = String(o?.name ?? '');
121
+ return {
122
+ id: key,
123
+ name,
124
+ pid: '',
125
+ templateId: '',
126
+ styleConfig: '',
127
+ archive: String(o?.archive ?? '0'),
128
+ extra: String(o?.extra ?? ''),
129
+ content: name,
130
+ value: key,
131
+ optionName: name,
132
+ optionId: key,
133
+ isChecked: (checked || []).includes(key),
134
+ isShow: show && show.length ? show.includes(key) : true,
135
+ showOrder: i,
136
+ };
137
+ });
138
+ }
139
+ /** 日期类字段的 `listGroupSets` = 四种时间粒度。 */
140
+ export function buildDateGroupSets(granularity, checked) {
141
+ const shown = granularity && granularity.length ? granularity : DATE_GRANULARITIES.map((g) => g.value);
142
+ return DATE_GRANULARITIES.map((g, i) => ({
143
+ name: g.name,
144
+ value: g.value,
145
+ isChecked: (checked || []).includes(g.value),
146
+ optionName: g.name,
147
+ optionId: g.value,
148
+ isShow: shown.includes(g.value),
149
+ showOrder: i,
150
+ }));
151
+ }
152
+ /**
153
+ * 四档各自的 `listFilterDefaultSets`。
154
+ *
155
+ * 形状按类型对照页面上的抓包还原(选项、浏览框、日期各一份);键的**出现与否**也是照抄的 ——
156
+ * 比如 `enableFilter` 只出现在选项与浏览框上,`optionOrderConfig` 只出现在浏览框上,
157
+ * 日期则带 `defaultValueType` 与两个瓦片配置。
158
+ */
159
+ export function buildFilterDefaultSets(col, kind, opts = {}) {
160
+ const showCount = opts.showCount !== false ? 1 : 0;
161
+ const count = {
162
+ enableShowCountNum: showCount,
163
+ showCountNumType: 'notUpdate',
164
+ enableShowCountNumLimit: 0,
165
+ };
166
+ if (kind === 'system') {
167
+ // 系统字段那份最薄:只有四个键
168
+ return { listGroupSets: [], multiSelect: true, enableBrowserFilter: 0, showArchiveOption: '1' };
169
+ }
170
+ if (kind === 'option') {
171
+ const sets = buildOptionGroupSets(col?.config?.options, opts.optionShow, opts.optionDefault);
172
+ return {
173
+ listGroupSets: sets,
174
+ multiSelect: true,
175
+ tileOptionAllConfig: { ...TILE_ALL },
176
+ // 选项那条的「未分组」默认不显示,顺序排在所有选项之后
177
+ tileOptionNoGroupConfig: { isChecked: false, isShow: false, showOrder: sets.length },
178
+ enableFilter: 0,
179
+ ...count,
180
+ enableBrowserFilter: 0,
181
+ showArchiveOption: '1',
182
+ };
183
+ }
184
+ if (kind === 'date') {
185
+ return {
186
+ listGroupSets: buildDateGroupSets(opts.granularity),
187
+ multiSelect: true,
188
+ tileOptionAllConfig: { ...TILE_ALL },
189
+ tileOptionNoGroupConfig: { ...TILE_NO_GROUP_DATE },
190
+ ...count,
191
+ enableBrowserFilter: 0,
192
+ defaultValueType: '1',
193
+ showArchiveOption: '1',
194
+ };
195
+ }
196
+ // browser
197
+ return {
198
+ listGroupSets: [],
199
+ multiSelect: true,
200
+ enableFilter: 0,
201
+ ...count,
202
+ optionOrderConfig: opts.optionOrder ?? '0',
203
+ enableBrowserFilter: 0,
204
+ showArchiveOption: '1',
205
+ };
206
+ }
207
+ /**
208
+ * 一条分类搜索条目。
209
+ *
210
+ * `config` 与顶层名字全部**原样搬运**,只有 `expandMethod`/`showPosition`/`tabStyle` 三个是常量,
211
+ * 加上按类型算出来的 `listFilterDefaultSets`。
212
+ */
213
+ export function buildGroupFilterEntry(col, opts = {}) {
214
+ const kind = resolveGroupFilterKind(col);
215
+ const id = String(col?.id ?? '');
216
+ return {
217
+ id,
218
+ fieldId: id,
219
+ name: String(col?.name ?? `field_${id}`),
220
+ fieldName: String(col?.name ?? `field_${id}`),
221
+ compType: col?.compType,
222
+ componentKey: col?.compType,
223
+ showName: col?.text,
224
+ fieldShowName: col?.text,
225
+ text: col?.text,
226
+ config: col?.config ?? {},
227
+ expandMethod: '0',
228
+ showPosition: opts.position ?? '1',
229
+ tabStyle: 'select',
230
+ objId: col?.objId,
231
+ fieldType: col?.type,
232
+ type: col?.type,
233
+ listFilterDefaultSets: buildFilterDefaultSets(col, kind, opts),
234
+ };
235
+ }
236
+ /** 候选字段:`getNListConfig` 回包里的 `fieldUsage[0].fields[]`(含系统字段)。 */
237
+ export function extractCandidateColumns(listConfig) {
238
+ const arr = listConfig?.fieldUsage?.[0]?.fields;
239
+ return Array.isArray(arr) ? arr : [];
240
+ }
241
+ /** 按 fieldId 或字段名(`text`)找候选字段;重名报错,不猜。 */
242
+ export function resolveCandidateColumn(columns, key) {
243
+ const k = String(key ?? '').trim();
244
+ const byId = columns.filter((c) => String(c?.id ?? '') === k);
245
+ if (byId.length === 1)
246
+ return byId[0];
247
+ const byName = columns.filter((c) => String(c?.text ?? '') === k);
248
+ if (byName.length === 1)
249
+ return byName[0];
250
+ if (byName.length > 1) {
251
+ throw new Error(`字段名「${k}」匹配到 ${byName.length} 条:${byName.map((c) => `${c.text}(${c.id})`).join('、')}。请改用 fieldId`);
252
+ }
253
+ throw new Error(`台账字段里找不到「${k}」。现有:${columns.map((c) => `${c.text}(${c.id})`).join('、') || '(无)'}`);
254
+ }
255
+ /** 台账里已有的分类搜索项(按 fieldId 去重后的列表)。 */
256
+ export function listGroupFilters(listConfig) {
257
+ const arr = listConfig?.searchConditions?.groupFilters;
258
+ return Array.isArray(arr) ? arr : [];
259
+ }
260
+ //# sourceMappingURL=form-list-search-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-list-search-group.js","sourceRoot":"","sources":["../../src/services/form-list-search-group.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * 台账「搜索」的整块配置:面板设置 + 常用/快捷搜索字段 + 搜索分组。
3
+ *
4
+ * 全落在 `saveNListConfig` 的 `config.searchConditions` 里(视图级明文)。本模块只做
5
+ * **纯构造**,读写与 mConfig 由命令层负责。
6
+ *
7
+ * 字段条目的取值与分类搜索同一个来源:`getNListConfig` 回包的 **`fieldUsage[0].fields[]`**
8
+ * —— 尤其是 **`conditionType`(该字段可用的算子清单)**。旧实现把 `conditionTypeValue`
9
+ * 写死成 `'like'`,对文本字段恰好蒙对,但**浏览框的清单是 `inC/notInC/eq/notEq/isNull/isNotNull`,
10
+ * 里面没有 `like`** —— 那一直是往平台发一个非法算子。
11
+ */
12
+ /** 面板开关:面板上的项 ↔ 报文里的键与取值。 */
13
+ export interface SearchSettingDef {
14
+ key: string;
15
+ on: string;
16
+ off: string;
17
+ label: string;
18
+ }
19
+ /**
20
+ * 面板开关表。
21
+ *
22
+ * ⚠ `hideEmpty` 是**反的**:面板上「更多下拉框无字段时不显示」勾上 = `needCondition` 取 `"0"`。
23
+ * 其余都是面板开 = `"1"`。
24
+ */
25
+ export declare const SEARCH_SETTINGS: Record<string, SearchSettingDef>;
26
+ /** 显示方式:面板上是「高级搜索 / 筛选」两档,报文里 `"0"`=高级搜索、`"1"`=筛选。 */
27
+ export declare function parseSearchMode(input: string | undefined): string;
28
+ /** 字段显示位置:面板上「平铺 / 更多下拉框」,报文里 `isQuick` `"0"`=平铺、`"1"`=更多下拉框。 */
29
+ export declare function parsePosition(input: string | undefined): string;
30
+ /** 该字段可用的算子清单(来自字段元数据,不是我们编的)。 */
31
+ export declare function operatorCatalog(col: any): Array<{
32
+ id: string;
33
+ content: string;
34
+ }>;
35
+ /**
36
+ * 默认算子 = 该字段清单的**第一项**。
37
+ *
38
+ * 页面新建一条搜索字段时给的就是清单第一项(Text→`like`、浏览框→`inC`、选项→`in`)。
39
+ * 旧实现写死 `'like'`,对浏览框是非法值。
40
+ */
41
+ export declare function defaultOperator(col: any): string;
42
+ /** 搜索分组:**纯前端**(页面上新建分组不发接口),id 是 32 位 hex。 */
43
+ export interface SearchGroup {
44
+ id: string;
45
+ content: string;
46
+ order: number;
47
+ }
48
+ /** 前端那种无连字符的 32 位 hex id。`newId` 可注入以便测试确定性。 */
49
+ export declare function newSearchGroupId(newId: () => string): string;
50
+ export declare function buildSearchGroup(name: string, order: number, newId: () => string): SearchGroup;
51
+ /** 加一个分组;重名报错(页面也不允许同名)。 */
52
+ export declare function addSearchGroup(groups: SearchGroup[], name: string, newId: () => string): SearchGroup[];
53
+ /** 按名字或 id 删分组,并把引用了它的字段上的 `groupJson` 一并清掉。 */
54
+ export declare function removeSearchGroup(groups: SearchGroup[], key: string, filters: any[]): {
55
+ groups: SearchGroup[];
56
+ freedFieldIds: string[];
57
+ };
58
+ /** `groupJson` 是**字符串化的对象**(不是 id),空串=未分组。 */
59
+ export declare function parseGroupJson(v: unknown): SearchGroup | null;
60
+ export declare function groupJsonOf(g: SearchGroup | null): string;
61
+ /** 在分组表里按名字或 id 找一个。 */
62
+ export declare function resolveSearchGroup(groups: SearchGroup[], key: string): SearchGroup;
63
+ export interface SearchSettingsPatch {
64
+ searchMode?: string;
65
+ showLabel?: boolean;
66
+ relation?: boolean;
67
+ otherConds?: boolean;
68
+ collapse?: boolean;
69
+ manual?: boolean;
70
+ fixedCols?: boolean;
71
+ colCount?: number;
72
+ hideSwitch?: boolean;
73
+ hideEmpty?: boolean;
74
+ /** 快捷搜索的提示语。 */
75
+ prompt?: string;
76
+ }
77
+ /** 把面板设置并进 `searchConditions`(就地改并返回)。没传的键一个不动。 */
78
+ export declare function applySearchSettings(sc: Record<string, any>, patch: SearchSettingsPatch): Record<string, any>;
79
+ /** 读回面板设置的当前值(给 `list-search` 的查看输出用)。 */
80
+ export declare function readSearchSettings(sc: Record<string, any>): Record<string, any>;
81
+ export interface SearchFilterOptions {
82
+ /** 显示位置 `isQuick`:`"0"`平铺 / `"1"`更多下拉框。快捷筛选那条固定 `"1"`。 */
83
+ position?: string;
84
+ /** 分组(引用 `commonFilterGroups` 里的一项)。 */
85
+ group?: SearchGroup | null;
86
+ /** 显示名称,缺省取字段名。 */
87
+ showName?: string;
88
+ /** 默认值。 */
89
+ defaultType?: string;
90
+ startValue?: string;
91
+ /** 默认条件关系;缺省取该字段算子清单的第一项。 */
92
+ operator?: string;
93
+ required?: boolean;
94
+ fullMatch?: boolean;
95
+ }
96
+ /** `listFilterDefaultSets` 的底子(常用/快捷搜索那一套,和分类搜索不是一份)。 */
97
+ export declare function buildSearchFilterDefaults(col: any, opts?: SearchFilterOptions): Record<string, any>;
98
+ /**
99
+ * 一条常用/快捷搜索字段。
100
+ *
101
+ * `config`、`conditionType`、`browserParams`、`sModule` 等全部从 `fieldUsage[]` 那条**原样搬**
102
+ * —— 和分类搜索同源。`filterId` 是平台给每条搜索条件编的号,页面新建时会带上;我们留着它
103
+ * 便于「按 fieldId 找到原条目再改」。
104
+ */
105
+ export declare function buildSearchFilterEntry(col: any, existing: any, opts?: SearchFilterOptions): Record<string, any>;
106
+ /** 快捷搜索的提示语(`quickPlaceHolder.nameAlias`)。 */
107
+ export declare function buildQuickPlaceholder(text: string): {
108
+ nameAlias: string;
109
+ };
110
+ //# sourceMappingURL=form-list-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-list-search.d.ts","sourceRoot":"","sources":["../../src/services/form-list-search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,231 @@
1
+ /**
2
+ * 台账「搜索」的整块配置:面板设置 + 常用/快捷搜索字段 + 搜索分组。
3
+ *
4
+ * 全落在 `saveNListConfig` 的 `config.searchConditions` 里(视图级明文)。本模块只做
5
+ * **纯构造**,读写与 mConfig 由命令层负责。
6
+ *
7
+ * 字段条目的取值与分类搜索同一个来源:`getNListConfig` 回包的 **`fieldUsage[0].fields[]`**
8
+ * —— 尤其是 **`conditionType`(该字段可用的算子清单)**。旧实现把 `conditionTypeValue`
9
+ * 写死成 `'like'`,对文本字段恰好蒙对,但**浏览框的清单是 `inC/notInC/eq/notEq/isNull/isNotNull`,
10
+ * 里面没有 `like`** —— 那一直是往平台发一个非法算子。
11
+ */
12
+ /**
13
+ * 面板开关表。
14
+ *
15
+ * ⚠ `hideEmpty` 是**反的**:面板上「更多下拉框无字段时不显示」勾上 = `needCondition` 取 `"0"`。
16
+ * 其余都是面板开 = `"1"`。
17
+ */
18
+ export const SEARCH_SETTINGS = {
19
+ searchMode: { key: 'commonSearchType', on: '1', off: '0', label: '显示方式(1=筛选 / 0=高级搜索)' },
20
+ showLabel: { key: 'showSearchLabel', on: '1', off: '0', label: '显示字段名称' },
21
+ relation: { key: 'searchRelationEnable', on: '1', off: '0', label: '显示条件关系' },
22
+ otherConds: { key: 'needOtherCustom', on: '1', off: '0', label: '启用其他条件' },
23
+ collapse: { key: 'filterContraction', on: '1', off: '0', label: '搜索后收起面板' },
24
+ manual: { key: 'manualFilter', on: '1', off: '0', label: '手动触发筛选' },
25
+ fixedCols: { key: 'fixedCol', on: '1', off: '0', label: '样式·固定列数' },
26
+ hideSwitch: { key: 'noneOfShow', on: '1', off: '0', label: '样式·隐藏所有条件/任一条件切换' },
27
+ hideEmpty: { key: 'needCondition', on: '0', off: '1', label: '样式·更多下拉框无字段时不显示' },
28
+ };
29
+ /** 显示方式:面板上是「高级搜索 / 筛选」两档,报文里 `"0"`=高级搜索、`"1"`=筛选。 */
30
+ export function parseSearchMode(input) {
31
+ const v = String(input ?? '').trim();
32
+ if (v === '筛选')
33
+ return '1';
34
+ if (v === '高级搜索')
35
+ return '0';
36
+ throw new Error(`显示方式只认「高级搜索」或「筛选」,收到「${input}」`);
37
+ }
38
+ /** 字段显示位置:面板上「平铺 / 更多下拉框」,报文里 `isQuick` `"0"`=平铺、`"1"`=更多下拉框。 */
39
+ export function parsePosition(input) {
40
+ const v = String(input ?? '').trim();
41
+ if (!v)
42
+ return '0';
43
+ if (v === '平铺' || v === '0')
44
+ return '0';
45
+ if (v === '更多下拉框' || v === '1')
46
+ return '1';
47
+ throw new Error(`显示位置只认「平铺」或「更多下拉框」,收到「${input}」`);
48
+ }
49
+ /** 该字段可用的算子清单(来自字段元数据,不是我们编的)。 */
50
+ export function operatorCatalog(col) {
51
+ const list = Array.isArray(col?.conditionType) ? col.conditionType : [];
52
+ return list.filter((c) => c?.id).map((c) => ({ id: String(c.id), content: String(c.content ?? '') }));
53
+ }
54
+ /**
55
+ * 默认算子 = 该字段清单的**第一项**。
56
+ *
57
+ * 页面新建一条搜索字段时给的就是清单第一项(Text→`like`、浏览框→`inC`、选项→`in`)。
58
+ * 旧实现写死 `'like'`,对浏览框是非法值。
59
+ */
60
+ export function defaultOperator(col) {
61
+ const first = operatorCatalog(col)[0];
62
+ if (!first) {
63
+ throw new Error(`字段「${col?.text ?? col?.id}」没有可用的条件算子清单(conditionType 为空),无法加入搜索`);
64
+ }
65
+ return first.id;
66
+ }
67
+ /** 前端那种无连字符的 32 位 hex id。`newId` 可注入以便测试确定性。 */
68
+ export function newSearchGroupId(newId) {
69
+ return newId().replaceAll('-', '').toLowerCase();
70
+ }
71
+ export function buildSearchGroup(name, order, newId) {
72
+ return { id: newSearchGroupId(newId), content: String(name), order };
73
+ }
74
+ /** 加一个分组;重名报错(页面也不允许同名)。 */
75
+ export function addSearchGroup(groups, name, newId) {
76
+ const n = String(name).trim();
77
+ if (!n)
78
+ throw new Error('分组名不能为空');
79
+ if ((groups || []).some((g) => String(g.content) === n))
80
+ throw new Error(`搜索分组「${n}」已存在`);
81
+ const order = (groups || []).reduce((m, g) => Math.max(m, Number(g.order) || 0), 0) + 1;
82
+ return [...(groups || []), buildSearchGroup(n, order, newId)];
83
+ }
84
+ /** 按名字或 id 删分组,并把引用了它的字段上的 `groupJson` 一并清掉。 */
85
+ export function removeSearchGroup(groups, key, filters) {
86
+ const k = String(key).trim();
87
+ const hit = (groups || []).find((g) => g.id === k || g.content === k);
88
+ if (!hit)
89
+ throw new Error(`搜索分组「${key}」不存在`);
90
+ const freed = [];
91
+ for (const f of filters || []) {
92
+ if (parseGroupJson(f?.groupJson)?.id === hit.id) {
93
+ f.groupJson = '';
94
+ freed.push(String(f.fieldId ?? f.id));
95
+ }
96
+ }
97
+ return { groups: (groups || []).filter((g) => g.id !== hit.id), freedFieldIds: freed };
98
+ }
99
+ /** `groupJson` 是**字符串化的对象**(不是 id),空串=未分组。 */
100
+ export function parseGroupJson(v) {
101
+ const s = String(v ?? '').trim();
102
+ if (!s)
103
+ return null;
104
+ try {
105
+ const o = JSON.parse(s);
106
+ return o?.id ? o : null;
107
+ }
108
+ catch {
109
+ return null;
110
+ }
111
+ }
112
+ export function groupJsonOf(g) {
113
+ return g ? JSON.stringify(g) : '';
114
+ }
115
+ /** 在分组表里按名字或 id 找一个。 */
116
+ export function resolveSearchGroup(groups, key) {
117
+ const k = String(key).trim();
118
+ const hit = (groups || []).find((g) => g.id === k || g.content === k);
119
+ if (!hit) {
120
+ throw new Error(`搜索分组「${key}」不存在。现有:${(groups || []).map((g) => g.content).join('、') || '(无,先用 --add-group 加)'}`);
121
+ }
122
+ return hit;
123
+ }
124
+ /** 把面板设置并进 `searchConditions`(就地改并返回)。没传的键一个不动。 */
125
+ export function applySearchSettings(sc, patch) {
126
+ const put = (name, v) => {
127
+ const def = SEARCH_SETTINGS[name];
128
+ sc[def.key] = v ? def.on : def.off;
129
+ };
130
+ if (patch.searchMode !== undefined)
131
+ sc.commonSearchType = patch.searchMode;
132
+ if (patch.showLabel !== undefined)
133
+ put('showLabel', patch.showLabel);
134
+ if (patch.relation !== undefined)
135
+ put('relation', patch.relation);
136
+ if (patch.otherConds !== undefined)
137
+ put('otherConds', patch.otherConds);
138
+ if (patch.collapse !== undefined)
139
+ put('collapse', patch.collapse);
140
+ if (patch.manual !== undefined)
141
+ put('manual', patch.manual);
142
+ if (patch.fixedCols !== undefined)
143
+ put('fixedCols', patch.fixedCols);
144
+ if (patch.hideSwitch !== undefined)
145
+ put('hideSwitch', patch.hideSwitch);
146
+ if (patch.hideEmpty !== undefined)
147
+ put('hideEmpty', patch.hideEmpty);
148
+ if (patch.colCount !== undefined)
149
+ sc.fixedColCount = Number(patch.colCount);
150
+ if (patch.prompt !== undefined)
151
+ sc.quickPlaceHolder = { ...(sc.quickPlaceHolder || {}), nameAlias: String(patch.prompt) };
152
+ return sc;
153
+ }
154
+ /** 读回面板设置的当前值(给 `list-search` 的查看输出用)。 */
155
+ export function readSearchSettings(sc) {
156
+ const out = {};
157
+ for (const [name, def] of Object.entries(SEARCH_SETTINGS)) {
158
+ const v = sc?.[def.key];
159
+ out[name] = v === undefined ? undefined : String(v) === def.on;
160
+ }
161
+ out.colCount = sc?.fixedColCount;
162
+ out.prompt = sc?.quickPlaceHolder?.nameAlias ?? '';
163
+ return out;
164
+ }
165
+ /** `listFilterDefaultSets` 的底子(常用/快捷搜索那一套,和分类搜索不是一份)。 */
166
+ export function buildSearchFilterDefaults(col, opts = {}) {
167
+ const operator = opts.operator || defaultOperator(col);
168
+ const ids = operatorCatalog(col).map((c) => c.id);
169
+ if (!ids.includes(operator)) {
170
+ throw new Error(`算子「${operator}」不在字段「${col?.text ?? col?.id}」的可选清单里(可用:${ids.join(' / ')})`);
171
+ }
172
+ return {
173
+ optionEnable: '0',
174
+ listGroupSets: [],
175
+ listFilterSets: [],
176
+ multiSelect: true,
177
+ defaultType: opts.defaultType ?? '0',
178
+ startValue: opts.startValue ?? '',
179
+ startValueSpan: '',
180
+ startDefaultLabel: '',
181
+ endValue: '',
182
+ enableTime: '0',
183
+ conditionTypeValue: operator,
184
+ enableBrowserFilter: 0,
185
+ showArchiveOption: '1',
186
+ searchContentFullMatches: opts.fullMatch === true,
187
+ };
188
+ }
189
+ /**
190
+ * 一条常用/快捷搜索字段。
191
+ *
192
+ * `config`、`conditionType`、`browserParams`、`sModule` 等全部从 `fieldUsage[]` 那条**原样搬**
193
+ * —— 和分类搜索同源。`filterId` 是平台给每条搜索条件编的号,页面新建时会带上;我们留着它
194
+ * 便于「按 fieldId 找到原条目再改」。
195
+ */
196
+ export function buildSearchFilterEntry(col, existing, opts = {}) {
197
+ const id = String(col?.id ?? '');
198
+ const base = existing && String(existing.fieldId ?? existing.id) === id ? { ...existing } : {};
199
+ const defaults = buildSearchFilterDefaults(col, opts);
200
+ return {
201
+ ...base,
202
+ id,
203
+ fieldId: id,
204
+ name: col?.name ?? base.name ?? `field_${id}`,
205
+ fieldName: col?.name ?? base.fieldName ?? `field_${id}`,
206
+ componentKey: col?.compType ?? col?.componentKey ?? base.componentKey,
207
+ conditionType: operatorCatalog(col),
208
+ conditionTypeValue: defaults.conditionTypeValue,
209
+ config: col?.config ?? base.config ?? {},
210
+ fieldShowName: opts.showName ?? col?.text ?? base.fieldShowName,
211
+ fieldType: col?.type ?? base.fieldType,
212
+ isQuick: opts.position ?? base.isQuick ?? '0',
213
+ objId: col?.objId ?? base.objId,
214
+ showName: opts.showName ?? col?.text ?? base.showName,
215
+ text: opts.showName ?? col?.text ?? base.text,
216
+ type: col?.type ?? base.type,
217
+ options: base.options ?? [],
218
+ listFilterDefaultSets: { ...(base.listFilterDefaultSets || {}), ...defaults },
219
+ groupJson: opts.group !== undefined ? groupJsonOf(opts.group) : (base.groupJson ?? ''),
220
+ browserType: base.browserType ?? '',
221
+ browserParams: col?.browserParams ?? base.browserParams,
222
+ filterId: base.filterId,
223
+ required: opts.required === true ? 1 : base.required,
224
+ multiSelect: base.multiSelect ?? 'false',
225
+ };
226
+ }
227
+ /** 快捷搜索的提示语(`quickPlaceHolder.nameAlias`)。 */
228
+ export function buildQuickPlaceholder(text) {
229
+ return { nameAlias: String(text ?? '') };
230
+ }
231
+ //# sourceMappingURL=form-list-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-list-search.js","sourceRoot":"","sources":["../../src/services/form-list-search.ts"],"names":[],"mappings":"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"}