weaver-e10-builder 1.6.12 → 1.6.13
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.
- package/dist/cli-register.d.ts +22 -0
- package/dist/cli-register.d.ts.map +1 -0
- package/dist/cli-register.js +340 -0
- package/dist/cli-register.js.map +1 -0
- package/dist/commands/form-list-columns.d.ts.map +1 -1
- package/dist/commands/form-list-columns.js +85 -3
- package/dist/commands/form-list-columns.js.map +1 -1
- package/dist/commands/form-list-config.d.ts +9 -0
- package/dist/commands/form-list-config.d.ts.map +1 -0
- package/dist/commands/form-list-config.js +113 -0
- package/dist/commands/form-list-config.js.map +1 -0
- package/dist/commands/form-list-filter.d.ts.map +1 -1
- package/dist/commands/form-list-filter.js +231 -3
- package/dist/commands/form-list-filter.js.map +1 -1
- package/dist/commands/form-nlist.d.ts.map +1 -1
- package/dist/commands/form-nlist.js +48 -1
- package/dist/commands/form-nlist.js.map +1 -1
- package/dist/index.js +19 -213
- package/dist/index.js.map +1 -1
- package/dist/services/actionflow/build_workflow_draft.d.ts.map +1 -1
- package/dist/services/actionflow/build_workflow_draft.js +8 -0
- package/dist/services/actionflow/build_workflow_draft.js.map +1 -1
- package/dist/services/actionflow/calendar_mapper.d.ts.map +1 -1
- package/dist/services/actionflow/calendar_mapper.js +7 -4
- package/dist/services/actionflow/calendar_mapper.js.map +1 -1
- package/dist/services/actionflow/component_registry.d.ts.map +1 -1
- package/dist/services/actionflow/component_registry.js +18 -2
- package/dist/services/actionflow/component_registry.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_delete.js +1 -1
- package/dist/services/actionflow/components/action_eb_delete.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_update.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_update.js +2 -1
- package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
- package/dist/services/actionflow/components/approve_create.d.ts.map +1 -1
- package/dist/services/actionflow/components/approve_create.js +4 -3
- package/dist/services/actionflow/components/approve_create.js.map +1 -1
- package/dist/services/actionflow/components/document_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/document_actions.js +15 -48
- package/dist/services/actionflow/components/document_actions.js.map +1 -1
- package/dist/services/actionflow/components/enquiry_form.d.ts +0 -7
- package/dist/services/actionflow/components/enquiry_form.d.ts.map +1 -1
- package/dist/services/actionflow/components/enquiry_form.js +10 -54
- package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
- package/dist/services/actionflow/components/form_data_builder.d.ts +2 -0
- package/dist/services/actionflow/components/form_data_builder.d.ts.map +1 -1
- package/dist/services/actionflow/components/form_data_builder.js +35 -0
- package/dist/services/actionflow/components/form_data_builder.js.map +1 -1
- package/dist/services/actionflow/components/inner_mq_send.d.ts.map +1 -1
- package/dist/services/actionflow/components/inner_mq_send.js +8 -2
- package/dist/services/actionflow/components/inner_mq_send.js.map +1 -1
- package/dist/services/actionflow/components/send_message.d.ts.map +1 -1
- package/dist/services/actionflow/components/send_message.js +52 -1
- package/dist/services/actionflow/components/send_message.js.map +1 -1
- package/dist/services/actionflow/components/serverless_action.d.ts.map +1 -1
- package/dist/services/actionflow/components/serverless_action.js +39 -0
- package/dist/services/actionflow/components/serverless_action.js.map +1 -1
- package/dist/services/actionflow/components/simple_scheduler.d.ts.map +1 -1
- package/dist/services/actionflow/components/simple_scheduler.js +46 -12
- package/dist/services/actionflow/components/simple_scheduler.js.map +1 -1
- package/dist/services/actionflow/components/time_batch_trigger.js +4 -3
- package/dist/services/actionflow/components/time_batch_trigger.js.map +1 -1
- package/dist/services/actionflow/context_preflight.js +4 -4
- package/dist/services/actionflow/context_preflight.js.map +1 -1
- package/dist/services/actionflow/form_source.d.ts +2 -0
- package/dist/services/actionflow/form_source.d.ts.map +1 -1
- package/dist/services/actionflow/form_source.js +45 -10
- package/dist/services/actionflow/form_source.js.map +1 -1
- package/dist/services/actionflow/formula_service.d.ts.map +1 -1
- package/dist/services/actionflow/formula_service.js +23 -5
- package/dist/services/actionflow/formula_service.js.map +1 -1
- package/dist/services/actionflow/param_mapping_basis.d.ts +3 -0
- package/dist/services/actionflow/param_mapping_basis.d.ts.map +1 -0
- package/dist/services/actionflow/param_mapping_basis.js +61 -0
- package/dist/services/actionflow/param_mapping_basis.js.map +1 -0
- package/dist/services/actionflow/preflight_service.d.ts +2 -0
- package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
- package/dist/services/actionflow/preflight_service.js +69 -34
- package/dist/services/actionflow/preflight_service.js.map +1 -1
- package/dist/services/actionflow/runtime_metadata.d.ts +1 -0
- package/dist/services/actionflow/runtime_metadata.d.ts.map +1 -1
- package/dist/services/actionflow/runtime_metadata.js +3 -0
- package/dist/services/actionflow/runtime_metadata.js.map +1 -1
- package/dist/services/actionflow/trigger_common.d.ts.map +1 -1
- package/dist/services/actionflow/trigger_common.js +4 -7
- package/dist/services/actionflow/trigger_common.js.map +1 -1
- package/dist/services/actionflow/update_service.d.ts +6 -0
- package/dist/services/actionflow/update_service.d.ts.map +1 -1
- package/dist/services/actionflow/update_service.js +6 -38
- package/dist/services/actionflow/update_service.js.map +1 -1
- package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/workflow_compiler.js +7 -7
- package/dist/services/actionflow/workflow_compiler.js.map +1 -1
- package/dist/services/actionflow/workflow_request_level.d.ts +3 -0
- package/dist/services/actionflow/workflow_request_level.d.ts.map +1 -0
- package/dist/services/actionflow/workflow_request_level.js +11 -0
- package/dist/services/actionflow/workflow_request_level.js.map +1 -0
- package/dist/services/form-list-columns.d.ts +11 -0
- package/dist/services/form-list-columns.d.ts.map +1 -1
- package/dist/services/form-list-columns.js +10 -0
- package/dist/services/form-list-columns.js.map +1 -1
- package/dist/services/form-list-config.d.ts +58 -0
- package/dist/services/form-list-config.d.ts.map +1 -0
- package/dist/services/form-list-config.js +140 -0
- package/dist/services/form-list-config.js.map +1 -0
- package/dist/services/form-list-fields.d.ts +36 -0
- package/dist/services/form-list-fields.d.ts.map +1 -0
- package/dist/services/form-list-fields.js +182 -0
- package/dist/services/form-list-fields.js.map +1 -0
- package/dist/services/form-list-filter-http.d.ts +60 -0
- package/dist/services/form-list-filter-http.d.ts.map +1 -0
- package/dist/services/form-list-filter-http.js +137 -0
- package/dist/services/form-list-filter-http.js.map +1 -0
- package/dist/services/form-list-filter-sql.d.ts +74 -0
- package/dist/services/form-list-filter-sql.d.ts.map +1 -0
- package/dist/services/form-list-filter-sql.js +206 -0
- package/dist/services/form-list-filter-sql.js.map +1 -0
- package/dist/services/form-nlist.d.ts +25 -0
- package/dist/services/form-nlist.d.ts.map +1 -1
- package/dist/services/form-nlist.js +223 -0
- package/dist/services/form-nlist.js.map +1 -1
- package/dist/services/form-view.d.ts +3 -3
- package/dist/services/form-view.d.ts.map +1 -1
- package/dist/services/form-view.js +26 -12
- package/dist/services/form-view.js.map +1 -1
- package/dist/services/workflow-function-management.d.ts +1 -1
- package/package.json +1 -1
- package/skill-docs/SKILL.md +4 -4
- package/skill-docs/actionflows/references/components/ebuilder/DateTrigger.md +32 -32
- package/skill-docs/actionflows/references/components/ebuilder/EnquiryForm.md +3 -1
- package/skill-docs/actionflows/references/components/ebuilder/TimeBatchTrigger.md +19 -19
- package/skill-docs/references/common/ref-cli-commands.md +9 -4
- package/skill-docs/references/form/guide-form-view.md +201 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { ApiClient } from '../core/client.js';
|
|
2
|
+
type Client = Pick<ApiClient, 'get' | 'post'>;
|
|
3
|
+
/**
|
|
4
|
+
* 视图数据条件 —— 自定义接口(`filter.type = "http"`)。
|
|
5
|
+
*
|
|
6
|
+
* 形状来自 2026-11-04 真机保存报文:
|
|
7
|
+
* ```json
|
|
8
|
+
* {"type":"http","isNewFilter":true,"version":1,
|
|
9
|
+
* "data":{"method":"GET","contentType":"multipart/form-data","condition":"","formDw":true,
|
|
10
|
+
* "sourceId":"<objId>","sqlContent":"","url":"https://…",
|
|
11
|
+
* "urlParams":[{"name":"a","value":"1"}],
|
|
12
|
+
* "headers":[{"name":"x-test","value":"hello"}],
|
|
13
|
+
* "payload":"{\"\"}",
|
|
14
|
+
* "formData":[{"name":"body","value":"bbooddyy"}]}}
|
|
15
|
+
* ```
|
|
16
|
+
* 同时 `config.rootStr = "自定义接口"`,PC 与移动端写同一份。
|
|
17
|
+
*
|
|
18
|
+
* 说明:抓包里 `condition` 是切模式前留下的数据集 ID;这里写成空串(http 模式不读它),
|
|
19
|
+
* 回读只断言我们实际写入的键,平台若回填其它值不算失败。
|
|
20
|
+
*/
|
|
21
|
+
export declare const HTTP_METHODS: readonly ["GET", "POST", "PUT", "DELETE", "PATCH"];
|
|
22
|
+
export interface NameValue {
|
|
23
|
+
name: string;
|
|
24
|
+
value: string;
|
|
25
|
+
}
|
|
26
|
+
export interface HttpConditionSpec {
|
|
27
|
+
method: string;
|
|
28
|
+
url: string;
|
|
29
|
+
contentType?: string;
|
|
30
|
+
params?: NameValue[];
|
|
31
|
+
headers?: NameValue[];
|
|
32
|
+
formData?: NameValue[];
|
|
33
|
+
/** Body → JSON 编辑器的原始字符串 */
|
|
34
|
+
payload?: string;
|
|
35
|
+
/** 「变量值为空时不参与过滤」:开 → filterIsNull=false;关 → true;不给沿用 */
|
|
36
|
+
ignoreEmpty?: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface SetHttpConditionOptions {
|
|
39
|
+
pcOnly?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface HttpConditionInfo {
|
|
42
|
+
active: boolean;
|
|
43
|
+
method?: string;
|
|
44
|
+
url?: string;
|
|
45
|
+
contentType?: string;
|
|
46
|
+
params?: NameValue[];
|
|
47
|
+
headers?: NameValue[];
|
|
48
|
+
formData?: NameValue[];
|
|
49
|
+
payload?: string;
|
|
50
|
+
filterIsNull?: boolean;
|
|
51
|
+
}
|
|
52
|
+
export declare function setHttpCondition(client: Client, baseUrl: string, appId: string, objId: string, listId: string, spec: HttpConditionSpec, options?: SetHttpConditionOptions): Promise<{
|
|
53
|
+
success: boolean;
|
|
54
|
+
filter: Record<string, any>;
|
|
55
|
+
filterIsNull: boolean;
|
|
56
|
+
warnings: string[];
|
|
57
|
+
}>;
|
|
58
|
+
export declare function getHttpCondition(client: Client, baseUrl: string, appId: string, objId: string, listId: string): Promise<HttpConditionInfo>;
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=form-list-filter-http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-list-filter-http.d.ts","sourceRoot":"","sources":["../../src/services/form-list-filter-http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;AAE9C;;;;;;;;;;;;;;;;;GAiBG;AAEH,eAAO,MAAM,YAAY,oDAAqD,CAAC;AAE/E,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AA+BD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,EACvB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA8DvG;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC,CAgB5B"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { readViewConfig } from './form-list-config.js';
|
|
2
|
+
/**
|
|
3
|
+
* 视图数据条件 —— 自定义接口(`filter.type = "http"`)。
|
|
4
|
+
*
|
|
5
|
+
* 形状来自 2026-11-04 真机保存报文:
|
|
6
|
+
* ```json
|
|
7
|
+
* {"type":"http","isNewFilter":true,"version":1,
|
|
8
|
+
* "data":{"method":"GET","contentType":"multipart/form-data","condition":"","formDw":true,
|
|
9
|
+
* "sourceId":"<objId>","sqlContent":"","url":"https://…",
|
|
10
|
+
* "urlParams":[{"name":"a","value":"1"}],
|
|
11
|
+
* "headers":[{"name":"x-test","value":"hello"}],
|
|
12
|
+
* "payload":"{\"\"}",
|
|
13
|
+
* "formData":[{"name":"body","value":"bbooddyy"}]}}
|
|
14
|
+
* ```
|
|
15
|
+
* 同时 `config.rootStr = "自定义接口"`,PC 与移动端写同一份。
|
|
16
|
+
*
|
|
17
|
+
* 说明:抓包里 `condition` 是切模式前留下的数据集 ID;这里写成空串(http 模式不读它),
|
|
18
|
+
* 回读只断言我们实际写入的键,平台若回填其它值不算失败。
|
|
19
|
+
*/
|
|
20
|
+
export const HTTP_METHODS = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'];
|
|
21
|
+
function requireData(response, operation) {
|
|
22
|
+
if (response?.code && response.code !== 200)
|
|
23
|
+
throw new Error(`${operation}失败: ${response.msg || response.code}`);
|
|
24
|
+
if (response?.status === false || response?.fail === true)
|
|
25
|
+
throw new Error(`${operation}失败: ${response?.msg || '平台未确认成功'}`);
|
|
26
|
+
if (!response?.data)
|
|
27
|
+
throw new Error(`${operation}失败: 返回结构无效`);
|
|
28
|
+
return response.data;
|
|
29
|
+
}
|
|
30
|
+
function normalizePairs(pairs, label) {
|
|
31
|
+
if (!pairs)
|
|
32
|
+
return [];
|
|
33
|
+
const seen = new Set();
|
|
34
|
+
return pairs.map((pair) => {
|
|
35
|
+
const name = String(pair.name || '').trim();
|
|
36
|
+
if (!name)
|
|
37
|
+
throw new Error(`${label}里有空参数名`);
|
|
38
|
+
if (seen.has(name))
|
|
39
|
+
throw new Error(`${label}参数名重复:${name}`);
|
|
40
|
+
seen.add(name);
|
|
41
|
+
return { name, value: String(pair.value ?? '') };
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function auditUrl(url) {
|
|
45
|
+
const warnings = [];
|
|
46
|
+
if (!url.trim())
|
|
47
|
+
throw new Error('--url 不能为空');
|
|
48
|
+
if (url !== url.trim())
|
|
49
|
+
warnings.push('URL 首尾有空白字符,平台会原样保存,可能导致请求失败(已按原样写入)');
|
|
50
|
+
const trimmed = url.trim();
|
|
51
|
+
if (!/^https?:\/\//i.test(trimmed))
|
|
52
|
+
warnings.push('URL 不是 http(s) 开头,确认是否漏了协议');
|
|
53
|
+
if (trimmed.includes(' '))
|
|
54
|
+
warnings.push('URL 中间含空格,确认是否粘贴时混入了换行/空格');
|
|
55
|
+
return warnings;
|
|
56
|
+
}
|
|
57
|
+
export async function setHttpCondition(client, baseUrl, appId, objId, listId, spec, options = {}) {
|
|
58
|
+
const method = String(spec.method || '').toUpperCase();
|
|
59
|
+
if (!HTTP_METHODS.includes(method)) {
|
|
60
|
+
throw new Error(`--method 只支持 ${HTTP_METHODS.join(' / ')}`);
|
|
61
|
+
}
|
|
62
|
+
const warnings = auditUrl(spec.url);
|
|
63
|
+
const urlParams = normalizePairs(spec.params, 'Params');
|
|
64
|
+
const headers = normalizePairs(spec.headers, 'Headers');
|
|
65
|
+
const formData = normalizePairs(spec.formData, 'Body/formData');
|
|
66
|
+
const pc = await readViewConfig(client, baseUrl, appId, listId, 'pc');
|
|
67
|
+
const pcObjId = String(pc.objId ?? pc.dataset?.id ?? '');
|
|
68
|
+
if (pcObjId && pcObjId !== objId)
|
|
69
|
+
throw new Error(`视图不属于目标表单:配置 objId=${pcObjId},传入=${objId}`);
|
|
70
|
+
if (pc.dataset?.appId && String(pc.dataset.appId) !== appId)
|
|
71
|
+
throw new Error('视图不属于指定应用');
|
|
72
|
+
let mobile;
|
|
73
|
+
try {
|
|
74
|
+
mobile = await readViewConfig(client, baseUrl, appId, listId, 'mobile');
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
if (!options.pcOnly)
|
|
78
|
+
throw error;
|
|
79
|
+
mobile = {};
|
|
80
|
+
}
|
|
81
|
+
const filter = {
|
|
82
|
+
type: 'http',
|
|
83
|
+
isNewFilter: true,
|
|
84
|
+
version: 1,
|
|
85
|
+
data: {
|
|
86
|
+
method,
|
|
87
|
+
contentType: spec.contentType || 'multipart/form-data',
|
|
88
|
+
condition: '',
|
|
89
|
+
formDw: true,
|
|
90
|
+
sourceId: objId,
|
|
91
|
+
sqlContent: '',
|
|
92
|
+
url: spec.url,
|
|
93
|
+
urlParams,
|
|
94
|
+
headers,
|
|
95
|
+
payload: spec.payload ?? '{"":""}',
|
|
96
|
+
formData,
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
const currentIsNull = pc.filterIsNull === undefined ? true : pc.filterIsNull;
|
|
100
|
+
const filterIsNull = spec.ignoreEmpty === undefined ? currentIsNull : !spec.ignoreEmpty;
|
|
101
|
+
const nextPc = { ...pc, filter, filterIsNull, rootStr: '自定义接口' };
|
|
102
|
+
const nextMobile = { ...mobile, filter: structuredClone(filter), filterIsNull, rootStr: '自定义接口' };
|
|
103
|
+
const save = await client.post(`${baseUrl}/api/bs/ebuilder/form/list/saveNListConfig?apid=${appId}`, {
|
|
104
|
+
listId,
|
|
105
|
+
appId,
|
|
106
|
+
terminalType: 'PC',
|
|
107
|
+
config: nextPc,
|
|
108
|
+
mConfig: nextMobile,
|
|
109
|
+
});
|
|
110
|
+
if (save?.code !== 200 || save?.status === false || save?.fail === true) {
|
|
111
|
+
throw new Error(`保存自定义接口条件失败: ${save?.msg || '平台未确认成功'}`);
|
|
112
|
+
}
|
|
113
|
+
const after = await readViewConfig(client, baseUrl, appId, listId, 'pc');
|
|
114
|
+
if (after.filter?.type !== 'http' || String(after.filter?.data?.url ?? '') !== spec.url) {
|
|
115
|
+
throw new Error('已保存,但视图条件回读不一致:期望 http + 相同 URL');
|
|
116
|
+
}
|
|
117
|
+
return { success: true, filter: after.filter, filterIsNull, warnings };
|
|
118
|
+
}
|
|
119
|
+
export async function getHttpCondition(client, baseUrl, appId, objId, listId) {
|
|
120
|
+
const pc = await readViewConfig(client, baseUrl, appId, listId, 'pc');
|
|
121
|
+
const filter = pc.filter;
|
|
122
|
+
if (!filter || filter.type !== 'http')
|
|
123
|
+
return { active: false };
|
|
124
|
+
const data = filter.data || {};
|
|
125
|
+
return {
|
|
126
|
+
active: true,
|
|
127
|
+
method: data.method,
|
|
128
|
+
url: data.url,
|
|
129
|
+
contentType: data.contentType,
|
|
130
|
+
params: Array.isArray(data.urlParams) ? data.urlParams : [],
|
|
131
|
+
headers: Array.isArray(data.headers) ? data.headers : [],
|
|
132
|
+
formData: Array.isArray(data.formData) ? data.formData : [],
|
|
133
|
+
payload: data.payload,
|
|
134
|
+
filterIsNull: pc.filterIsNull,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=form-list-filter-http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-list-filter-http.js","sourceRoot":"","sources":["../../src/services/form-list-filter-http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { ApiClient } from '../core/client.js';
|
|
2
|
+
type Client = Pick<ApiClient, 'get' | 'post'>;
|
|
3
|
+
/**
|
|
4
|
+
* 视图数据条件 —— SQL 条件(`filter.type = "sql_where"`)。
|
|
5
|
+
*
|
|
6
|
+
* 平台不是把 SQL 存在视图里,而是:
|
|
7
|
+
* 1. `POST /api/dw/directConn/addDataset` 建一个 `sqlfragments` 数据集(多库 SQL 都在这里);
|
|
8
|
+
* 2. 视图 `config.filter` 只记数据集 ID:`{type:"sql_where", data:{condition:<datasetId>, formDw:true, sourceId:<objId>}}`,
|
|
9
|
+
* 同时 `config.rootStr = "SQL"`。
|
|
10
|
+
*
|
|
11
|
+
* 上面的形状全部来自 2026-11-04 真机抓包 + 回读(数据集读回是明文 SQL,`getByDatasetId`)。
|
|
12
|
+
* 多库键名取自平台前端 `dw` bundle 的常量表(8 种全有)。
|
|
13
|
+
*/
|
|
14
|
+
/** 平台 `sourceSql` 的键(顺序即 UI 顺序)。 */
|
|
15
|
+
export declare const SQL_DIALECTS: {
|
|
16
|
+
alias: string[];
|
|
17
|
+
key: string;
|
|
18
|
+
label: string;
|
|
19
|
+
}[];
|
|
20
|
+
export declare function dialectKey(name: string): string;
|
|
21
|
+
export declare function dialectLabel(key: string): string;
|
|
22
|
+
export interface SqlConditionSpec {
|
|
23
|
+
/** 基础 SQL(平台 `sqlQuery.sql`);不传时取第一条方言 SQL */
|
|
24
|
+
base?: string;
|
|
25
|
+
/** 平台键(mysqlSql/oracleSql/...)→ SQL 文本 */
|
|
26
|
+
dialects: {
|
|
27
|
+
key: string;
|
|
28
|
+
sql: string;
|
|
29
|
+
}[];
|
|
30
|
+
}
|
|
31
|
+
/** 解析 `--sql @file.json`:`{"base":"...","mysql":"...","oracle":"..."}`。 */
|
|
32
|
+
export declare function parseSqlFile(json: any): SqlConditionSpec;
|
|
33
|
+
/** 简单自检:花括号配对 + 别名提示(只告警不阻断,平台的语法以实际执行结果为准)。 */
|
|
34
|
+
export declare function auditSql(sql: string, where: string): string[];
|
|
35
|
+
export interface SetSqlConditionResult {
|
|
36
|
+
success: boolean;
|
|
37
|
+
listId: string;
|
|
38
|
+
datasetId: string;
|
|
39
|
+
base: string;
|
|
40
|
+
dialects: {
|
|
41
|
+
key: string;
|
|
42
|
+
label: string;
|
|
43
|
+
sql: string;
|
|
44
|
+
}[];
|
|
45
|
+
warnings: string[];
|
|
46
|
+
}
|
|
47
|
+
export interface SetSqlConditionOptions {
|
|
48
|
+
pcOnly?: boolean;
|
|
49
|
+
/** 直接绑定已存在的数据集(不新建);用于改回之前那份 SQL 条件 */
|
|
50
|
+
datasetId?: string;
|
|
51
|
+
/**
|
|
52
|
+
* 「变量值为空时不参与过滤」。
|
|
53
|
+
* 2026-11-04 抓包(同一视图、只改这个开关,其余字段逐字节相同):
|
|
54
|
+
* 开关关闭 → `filterIsNull: true`
|
|
55
|
+
* 开关打开 → `filterIsNull: false`
|
|
56
|
+
* 不传则沿用视图现有值。
|
|
57
|
+
*/
|
|
58
|
+
ignoreEmpty?: boolean;
|
|
59
|
+
}
|
|
60
|
+
export declare function setSqlCondition(client: Client, baseUrl: string, appId: string, objId: string, listId: string, spec: SqlConditionSpec, options?: SetSqlConditionOptions): Promise<SetSqlConditionResult>;
|
|
61
|
+
export interface SqlConditionInfo {
|
|
62
|
+
active: boolean;
|
|
63
|
+
datasetId?: string;
|
|
64
|
+
base?: string;
|
|
65
|
+
dialects?: {
|
|
66
|
+
key: string;
|
|
67
|
+
label: string;
|
|
68
|
+
sql: string;
|
|
69
|
+
}[];
|
|
70
|
+
}
|
|
71
|
+
/** 读取视图上的 SQL 条件(视图 filter + 数据集正文)。 */
|
|
72
|
+
export declare function getSqlCondition(client: Client, baseUrl: string, appId: string, objId: string, listId: string): Promise<SqlConditionInfo>;
|
|
73
|
+
export {};
|
|
74
|
+
//# sourceMappingURL=form-list-filter-sql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-list-filter-sql.d.ts","sourceRoot":"","sources":["../../src/services/form-list-filter-sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;AAE9C;;;;;;;;;;GAUG;AAEH,oCAAoC;AACpC,eAAO,MAAM,YAAY,EAAE;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EASzE,CAAC;AAKF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1C;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,gBAAgB,CAWxD;AAED,gDAAgD;AAChD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAO7D;AAWD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACxD,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,gBAAgB,EACtB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAoGhC;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1D;AAED,wCAAwC;AACxC,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC,CAwB3B"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { readViewConfig } from './form-list-config.js';
|
|
2
|
+
/**
|
|
3
|
+
* 视图数据条件 —— SQL 条件(`filter.type = "sql_where"`)。
|
|
4
|
+
*
|
|
5
|
+
* 平台不是把 SQL 存在视图里,而是:
|
|
6
|
+
* 1. `POST /api/dw/directConn/addDataset` 建一个 `sqlfragments` 数据集(多库 SQL 都在这里);
|
|
7
|
+
* 2. 视图 `config.filter` 只记数据集 ID:`{type:"sql_where", data:{condition:<datasetId>, formDw:true, sourceId:<objId>}}`,
|
|
8
|
+
* 同时 `config.rootStr = "SQL"`。
|
|
9
|
+
*
|
|
10
|
+
* 上面的形状全部来自 2026-11-04 真机抓包 + 回读(数据集读回是明文 SQL,`getByDatasetId`)。
|
|
11
|
+
* 多库键名取自平台前端 `dw` bundle 的常量表(8 种全有)。
|
|
12
|
+
*/
|
|
13
|
+
/** 平台 `sourceSql` 的键(顺序即 UI 顺序)。 */
|
|
14
|
+
export const SQL_DIALECTS = [
|
|
15
|
+
{ alias: ['mysql'], key: 'mysqlSql', label: 'Mysql' },
|
|
16
|
+
{ alias: ['oracle'], key: 'oracleSql', label: 'Oracle' },
|
|
17
|
+
{ alias: ['sqlserver', 'sqlServer'], key: 'sqlserverSql', label: 'Sqlserver' },
|
|
18
|
+
{ alias: ['pg', 'postgresql', 'postgres'], key: 'pgSql', label: 'PostgreSQL' },
|
|
19
|
+
{ alias: ['dm', 'dameng'], key: 'dmSql', label: '达梦数据库' },
|
|
20
|
+
{ alias: ['kingbase', 'kingBase'], key: 'kingBaseSql', label: '人大金仓数据库' },
|
|
21
|
+
{ alias: ['st', 'shentong'], key: 'stSql', label: '神通数据库' },
|
|
22
|
+
{ alias: ['oceanbase', 'oceanbaseMysql'], key: 'oceanbaseMysql', label: 'oceanbaseMysql' },
|
|
23
|
+
];
|
|
24
|
+
const ALIAS_TO_KEY = new Map(SQL_DIALECTS.flatMap((d) => d.alias.map((a) => [a.toLowerCase(), d.key])));
|
|
25
|
+
const KEY_TO_LABEL = new Map(SQL_DIALECTS.map((d) => [d.key, d.label]));
|
|
26
|
+
export function dialectKey(name) {
|
|
27
|
+
const key = ALIAS_TO_KEY.get(name.trim().toLowerCase());
|
|
28
|
+
if (!key) {
|
|
29
|
+
throw new Error(`未知数据库类型「${name}」。可用:${SQL_DIALECTS.map((d) => d.alias[0]).join(' / ')}`);
|
|
30
|
+
}
|
|
31
|
+
return key;
|
|
32
|
+
}
|
|
33
|
+
export function dialectLabel(key) {
|
|
34
|
+
return KEY_TO_LABEL.get(key) || key;
|
|
35
|
+
}
|
|
36
|
+
/** 解析 `--sql @file.json`:`{"base":"...","mysql":"...","oracle":"..."}`。 */
|
|
37
|
+
export function parseSqlFile(json) {
|
|
38
|
+
if (!json || typeof json !== 'object' || Array.isArray(json))
|
|
39
|
+
throw new Error('SQL 配置必须是对象');
|
|
40
|
+
const dialects = [];
|
|
41
|
+
let base = '';
|
|
42
|
+
for (const [name, value] of Object.entries(json)) {
|
|
43
|
+
if (typeof value !== 'string' || !value.trim())
|
|
44
|
+
throw new Error(`SQL 配置项 ${name} 必须是非空字符串`);
|
|
45
|
+
if (name === 'base') {
|
|
46
|
+
base = value.trim();
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
dialects.push({ key: dialectKey(name), sql: value.trim() });
|
|
50
|
+
}
|
|
51
|
+
if (!dialects.length)
|
|
52
|
+
throw new Error('至少要给一种数据库的 SQL(键名如 mysql / oracle / pg)');
|
|
53
|
+
return { base: base || dialects[0].sql, dialects };
|
|
54
|
+
}
|
|
55
|
+
/** 简单自检:花括号配对 + 别名提示(只告警不阻断,平台的语法以实际执行结果为准)。 */
|
|
56
|
+
export function auditSql(sql, where) {
|
|
57
|
+
const warnings = [];
|
|
58
|
+
const open = (sql.match(/\{/g) || []).length;
|
|
59
|
+
const close = (sql.match(/\}/g) || []).length;
|
|
60
|
+
if (open !== close)
|
|
61
|
+
warnings.push(`${where}:{ } 数量不配对(${open} 个 { / ${close} 个 })`);
|
|
62
|
+
if (!/\bt1\./i.test(sql) && !/\bd1\./i.test(sql))
|
|
63
|
+
warnings.push(`${where}:没有出现 t1./d1. 别名,确认是否只用了常量条件`);
|
|
64
|
+
return warnings;
|
|
65
|
+
}
|
|
66
|
+
function requireData(response, operation) {
|
|
67
|
+
if (response?.code && response.code !== 200)
|
|
68
|
+
throw new Error(`${operation}失败: ${response.msg || response.code}`);
|
|
69
|
+
if (response?.status === false || response?.fail === true)
|
|
70
|
+
throw new Error(`${operation}失败: ${response?.msg || '平台未确认成功'}`);
|
|
71
|
+
if (!response?.data)
|
|
72
|
+
throw new Error(`${operation}失败: 返回结构无效`);
|
|
73
|
+
return response.data;
|
|
74
|
+
}
|
|
75
|
+
const DATASET_HEADERS = { ebbusinessid: '10000000000000000', enabletrans: '0' };
|
|
76
|
+
export async function setSqlCondition(client, baseUrl, appId, objId, listId, spec, options = {}) {
|
|
77
|
+
if (!options.datasetId && !spec.dialects.length)
|
|
78
|
+
throw new Error('至少要给一种数据库的 SQL');
|
|
79
|
+
const warnings = [];
|
|
80
|
+
if (!options.datasetId) {
|
|
81
|
+
warnings.push(...auditSql(spec.base || '', '基础SQL'));
|
|
82
|
+
for (const d of spec.dialects)
|
|
83
|
+
warnings.push(...auditSql(d.sql, dialectLabel(d.key)));
|
|
84
|
+
}
|
|
85
|
+
// 1) 校验视图归属(顺便拿到整份 PC 配置,后面只在它上面改 filter)
|
|
86
|
+
const pc = await readViewConfig(client, baseUrl, appId, listId, 'pc');
|
|
87
|
+
const pcObjId = String(pc.objId ?? pc.dataset?.id ?? '');
|
|
88
|
+
if (pcObjId && pcObjId !== objId)
|
|
89
|
+
throw new Error(`视图不属于目标表单:配置 objId=${pcObjId},传入=${objId}`);
|
|
90
|
+
if (pc.dataset?.appId && String(pc.dataset.appId) !== appId)
|
|
91
|
+
throw new Error('视图不属于指定应用');
|
|
92
|
+
let mobile;
|
|
93
|
+
try {
|
|
94
|
+
mobile = await readViewConfig(client, baseUrl, appId, listId, 'mobile');
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
if (!options.pcOnly)
|
|
98
|
+
throw error;
|
|
99
|
+
mobile = {};
|
|
100
|
+
}
|
|
101
|
+
// 2) 建数据集(明文即可;平台自己加密存储);给 --dataset-id 时直接复用
|
|
102
|
+
let datasetId = String(options.datasetId || '');
|
|
103
|
+
if (!datasetId) {
|
|
104
|
+
const sourceSql = {};
|
|
105
|
+
for (const d of spec.dialects)
|
|
106
|
+
sourceSql[d.key] = d.sql;
|
|
107
|
+
const created = requireData(await client.post(`${baseUrl}/api/dw/directConn/addDataset`, {
|
|
108
|
+
dataSetConn: { id: '', selectDbName: '', selectDbSchema: '' },
|
|
109
|
+
dataset: {
|
|
110
|
+
sqlQuery: {
|
|
111
|
+
showAllTeams: true,
|
|
112
|
+
sql: spec.base || spec.dialects[0].sql,
|
|
113
|
+
viewType: 'sqlfragments',
|
|
114
|
+
fields: [],
|
|
115
|
+
fieldAlias: [],
|
|
116
|
+
sourceSql,
|
|
117
|
+
sourceDBTypeList: spec.dialects.map((d) => d.key),
|
|
118
|
+
},
|
|
119
|
+
module: 'ebuilder/designer',
|
|
120
|
+
type: 'sqlfragments',
|
|
121
|
+
name: `ebuilder/designer${Date.now()}`,
|
|
122
|
+
},
|
|
123
|
+
}, DATASET_HEADERS), '创建 SQL 数据集');
|
|
124
|
+
datasetId = String(created.id || created.dataset?.id || '');
|
|
125
|
+
if (!datasetId)
|
|
126
|
+
throw new Error('创建 SQL 数据集失败:响应里没有数据集 ID');
|
|
127
|
+
}
|
|
128
|
+
// 3) 视图绑定:filter 只记数据集 ID,PC 与移动端一致
|
|
129
|
+
const filter = {
|
|
130
|
+
type: 'sql_where',
|
|
131
|
+
isNewFilter: true,
|
|
132
|
+
version: 1,
|
|
133
|
+
data: { condition: datasetId, formDw: true, sourceId: objId },
|
|
134
|
+
};
|
|
135
|
+
const currentIsNull = pc.filterIsNull === undefined ? true : pc.filterIsNull;
|
|
136
|
+
const filterIsNull = options.ignoreEmpty === undefined
|
|
137
|
+
? currentIsNull
|
|
138
|
+
: options.ignoreEmpty === false; // 开关开 → false;开关关 → true(见 options 注释里的抓包对照)
|
|
139
|
+
const nextPc = { ...pc, filter, filterIsNull, rootStr: 'SQL' };
|
|
140
|
+
const nextMobile = { ...mobile, filter: structuredClone(filter), filterIsNull, rootStr: 'SQL' };
|
|
141
|
+
const save = await client.post(`${baseUrl}/api/bs/ebuilder/form/list/saveNListConfig?apid=${appId}`, {
|
|
142
|
+
listId,
|
|
143
|
+
appId,
|
|
144
|
+
terminalType: 'PC',
|
|
145
|
+
config: nextPc,
|
|
146
|
+
mConfig: nextMobile,
|
|
147
|
+
});
|
|
148
|
+
if (save?.code !== 200 || save?.status === false || save?.fail === true) {
|
|
149
|
+
throw new Error(`保存视图 SQL 条件失败: ${save?.msg || '平台未确认成功'}(数据集 ${datasetId} 已创建)`);
|
|
150
|
+
}
|
|
151
|
+
// 4) 回读断言
|
|
152
|
+
const after = await readViewConfig(client, baseUrl, appId, listId, 'pc');
|
|
153
|
+
if (after.filter?.type !== 'sql_where' || String(after.filter?.data?.condition || '') !== datasetId) {
|
|
154
|
+
throw new Error(`已保存,但视图条件回读不一致:期望 sql_where/${datasetId}`);
|
|
155
|
+
}
|
|
156
|
+
if (options.datasetId) {
|
|
157
|
+
const info = await getSqlCondition(client, baseUrl, appId, objId, listId);
|
|
158
|
+
return {
|
|
159
|
+
success: true,
|
|
160
|
+
listId,
|
|
161
|
+
datasetId,
|
|
162
|
+
base: info.base || '',
|
|
163
|
+
dialects: info.dialects || [],
|
|
164
|
+
warnings,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
return {
|
|
168
|
+
success: true,
|
|
169
|
+
listId,
|
|
170
|
+
datasetId,
|
|
171
|
+
base: spec.base || spec.dialects[0].sql,
|
|
172
|
+
dialects: spec.dialects.map((d) => ({ key: d.key, label: dialectLabel(d.key), sql: d.sql })),
|
|
173
|
+
warnings,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
/** 读取视图上的 SQL 条件(视图 filter + 数据集正文)。 */
|
|
177
|
+
export async function getSqlCondition(client, baseUrl, appId, objId, listId) {
|
|
178
|
+
const pc = await readViewConfig(client, baseUrl, appId, listId, 'pc');
|
|
179
|
+
const filter = pc.filter;
|
|
180
|
+
if (!filter || filter.type !== 'sql_where')
|
|
181
|
+
return { active: false };
|
|
182
|
+
const datasetId = String(filter?.data?.condition || '');
|
|
183
|
+
if (!datasetId)
|
|
184
|
+
return { active: true };
|
|
185
|
+
const data = requireData(await client.post(`${baseUrl}/api/dw/directConn/getByDatasetId`, { datasetId }, DATASET_HEADERS), '读取 SQL 数据集');
|
|
186
|
+
let parsed = data.dataset?.sql ?? {};
|
|
187
|
+
if (typeof parsed === 'string') {
|
|
188
|
+
try {
|
|
189
|
+
parsed = JSON.parse(parsed);
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
parsed = {};
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
const sourceSql = parsed?.sourceSql || {};
|
|
196
|
+
const keys = Array.isArray(parsed?.sourceDBTypeList) && parsed.sourceDBTypeList.length
|
|
197
|
+
? parsed.sourceDBTypeList
|
|
198
|
+
: Object.keys(sourceSql);
|
|
199
|
+
return {
|
|
200
|
+
active: true,
|
|
201
|
+
datasetId,
|
|
202
|
+
base: typeof parsed?.sql === 'string' ? parsed.sql : '',
|
|
203
|
+
dialects: keys.map((key) => ({ key, label: dialectLabel(key), sql: String(sourceSql[key] ?? '') })),
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=form-list-filter-sql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-list-filter-sql.js","sourceRoot":"","sources":["../../src/services/form-list-filter-sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,4 +46,29 @@ export declare function saveNListConfig(client: ApiClient, baseUrl: string, appI
|
|
|
46
46
|
msg?: string;
|
|
47
47
|
mobileSynced?: boolean;
|
|
48
48
|
}>;
|
|
49
|
+
/** 读取 PC 端 NList 配置;读不到直接报错(增量命令没有 PC 配置就无从下手)。 */
|
|
50
|
+
export declare function readPcNListConfig(client: ApiClient, baseUrl: string, appId: string, listId: string): Promise<Record<string, any>>;
|
|
51
|
+
/**
|
|
52
|
+
* 构造单个业务字段的 listField 项与 cardLayout 字段配置。
|
|
53
|
+
* 与 `buildNListConfig` 里的非自定义分支保持同一套键;增量命令复用它,避免两处走样。
|
|
54
|
+
*/
|
|
55
|
+
export declare function buildNListFieldEntry(field: any, objId: string, uid: string, text?: string): {
|
|
56
|
+
item: Record<string, any>;
|
|
57
|
+
fieldConfig: Record<string, any>;
|
|
58
|
+
};
|
|
59
|
+
export interface NListFieldChangeOptions {
|
|
60
|
+
formId?: string;
|
|
61
|
+
}
|
|
62
|
+
export interface NListFieldChangeResult {
|
|
63
|
+
success: boolean;
|
|
64
|
+
listId: string;
|
|
65
|
+
changed: string[];
|
|
66
|
+
unchanged: boolean;
|
|
67
|
+
mobileSynced?: boolean;
|
|
68
|
+
warnings: string[];
|
|
69
|
+
}
|
|
70
|
+
/** 往列表式/卡片视图追加显示字段(新字段各占一行;已有字段与布局原样保留)。 */
|
|
71
|
+
export declare function addNListDisplayFields(client: ApiClient, baseUrl: string, objId: string, appId: string, listId: string, fieldIds: string[], options?: NListFieldChangeOptions): Promise<NListFieldChangeResult>;
|
|
72
|
+
/** 从列表式/卡片视图移除显示字段(同时清 listField 与 cardLayout 网格)。 */
|
|
73
|
+
export declare function removeNListDisplayFields(client: ApiClient, baseUrl: string, objId: string, appId: string, listId: string, fieldIds: string[], options?: NListFieldChangeOptions): Promise<NListFieldChangeResult>;
|
|
49
74
|
//# sourceMappingURL=form-nlist.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-nlist.d.ts","sourceRoot":"","sources":["../../src/services/form-nlist.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,oBAAoB;AACpB,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,EAAE,CAAC;AAEnD,eAAe;AACf,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,qBAAqB;AACrB,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAkED,wBAAwB;AACxB,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAC1C,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA+LhF;AAED,gDAAgD;AAChD,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA2D7C;AAED,uEAAuE;AACvE,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAQrC;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GACxC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA2BrE"}
|
|
1
|
+
{"version":3,"file":"form-nlist.d.ts","sourceRoot":"","sources":["../../src/services/form-nlist.ts"],"names":[],"mappings":"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"}
|