weaver-e10-builder 1.5.14 → 1.5.16
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/commands/form-add-detail-table.d.ts.map +1 -1
- package/dist/commands/form-add-detail-table.js +37 -17
- package/dist/commands/form-add-detail-table.js.map +1 -1
- package/dist/commands/form-list-custom.d.ts +5 -0
- package/dist/commands/form-list-custom.d.ts.map +1 -0
- package/dist/commands/form-list-custom.js +24 -0
- package/dist/commands/form-list-custom.js.map +1 -0
- package/dist/commands/form-list-search-group.d.ts.map +1 -1
- package/dist/commands/form-list-search-group.js +101 -7
- package/dist/commands/form-list-search-group.js.map +1 -1
- package/dist/commands/form-list.d.ts.map +1 -1
- package/dist/commands/form-list.js +45 -1
- package/dist/commands/form-list.js.map +1 -1
- package/dist/commands/form-permission.d.ts.map +1 -1
- package/dist/commands/form-permission.js +10 -8
- package/dist/commands/form-permission.js.map +1 -1
- package/dist/commands/form.d.ts.map +1 -1
- package/dist/commands/form.js +54 -5
- package/dist/commands/form.js.map +1 -1
- package/dist/commands/menu.d.ts.map +1 -1
- package/dist/commands/menu.js +98 -1
- package/dist/commands/menu.js.map +1 -1
- package/dist/commands/report-cell.d.ts +3 -0
- package/dist/commands/report-cell.d.ts.map +1 -0
- package/dist/commands/report-cell.js +365 -0
- package/dist/commands/report-cell.js.map +1 -0
- package/dist/commands/wf-form.d.ts +2 -0
- package/dist/commands/wf-form.d.ts.map +1 -1
- package/dist/commands/wf-form.js +10 -9
- package/dist/commands/wf-form.js.map +1 -1
- package/dist/commands/workflow-base-command.d.ts +4 -0
- package/dist/commands/workflow-base-command.d.ts.map +1 -0
- package/dist/commands/workflow-base-command.js +6 -0
- package/dist/commands/workflow-base-command.js.map +1 -0
- package/dist/commands/workflow-base-settings.d.ts.map +1 -1
- package/dist/commands/workflow-base-settings.js +4 -1
- package/dist/commands/workflow-base-settings.js.map +1 -1
- package/dist/commands/workflow-basic-info.d.ts +5 -0
- package/dist/commands/workflow-basic-info.d.ts.map +1 -0
- package/dist/commands/workflow-basic-info.js +47 -0
- package/dist/commands/workflow-basic-info.js.map +1 -0
- package/dist/commands/workflow-create-workflow.d.ts.map +1 -1
- package/dist/commands/workflow-create-workflow.js +49 -83
- package/dist/commands/workflow-create-workflow.js.map +1 -1
- package/dist/commands/workflow-function-settings.d.ts +3 -0
- package/dist/commands/workflow-function-settings.d.ts.map +1 -0
- package/dist/commands/workflow-function-settings.js +48 -0
- package/dist/commands/workflow-function-settings.js.map +1 -0
- package/dist/commands/workflow-setting.d.ts.map +1 -1
- package/dist/commands/workflow-setting.js +137 -406
- package/dist/commands/workflow-setting.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +19 -37
- package/dist/commands/workflow.js.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/services/form-field-build.d.ts +13 -0
- package/dist/services/form-field-build.d.ts.map +1 -1
- package/dist/services/form-field-build.js +18 -0
- package/dist/services/form-field-build.js.map +1 -1
- package/dist/services/form-field-dataset.d.ts +101 -0
- package/dist/services/form-field-dataset.d.ts.map +1 -0
- package/dist/services/form-field-dataset.js +180 -0
- package/dist/services/form-field-dataset.js.map +1 -0
- package/dist/services/form-field-template.d.ts +15 -10
- package/dist/services/form-field-template.d.ts.map +1 -1
- package/dist/services/form-field-template.js +30 -15
- package/dist/services/form-field-template.js.map +1 -1
- package/dist/services/form-layout-insert.d.ts +22 -0
- package/dist/services/form-layout-insert.d.ts.map +1 -1
- package/dist/services/form-layout-insert.js +88 -8
- package/dist/services/form-layout-insert.js.map +1 -1
- package/dist/services/form-list-search-custom.d.ts +25 -0
- package/dist/services/form-list-search-custom.d.ts.map +1 -0
- package/dist/services/form-list-search-custom.js +98 -0
- package/dist/services/form-list-search-custom.js.map +1 -0
- package/dist/services/form-list-search-group.d.ts +36 -2
- package/dist/services/form-list-search-group.d.ts.map +1 -1
- package/dist/services/form-list-search-group.js +89 -10
- package/dist/services/form-list-search-group.js.map +1 -1
- package/dist/services/form-list-search.d.ts +1 -0
- package/dist/services/form-list-search.d.ts.map +1 -1
- package/dist/services/form-list-search.js +5 -2
- package/dist/services/form-list-search.js.map +1 -1
- package/dist/services/form-permission-archive.d.ts +15 -2
- package/dist/services/form-permission-archive.d.ts.map +1 -1
- package/dist/services/form-permission-archive.js +22 -3
- package/dist/services/form-permission-archive.js.map +1 -1
- package/dist/services/form-physical-table.d.ts +17 -0
- package/dist/services/form-physical-table.d.ts.map +1 -1
- package/dist/services/form-physical-table.js +19 -0
- package/dist/services/form-physical-table.js.map +1 -1
- package/dist/services/form-sub-detail.d.ts +11 -0
- package/dist/services/form-sub-detail.d.ts.map +1 -1
- package/dist/services/form-sub-detail.js +23 -0
- package/dist/services/form-sub-detail.js.map +1 -1
- package/dist/services/menu-catalog.d.ts +11 -0
- package/dist/services/menu-catalog.d.ts.map +1 -1
- package/dist/services/menu-catalog.js +32 -0
- package/dist/services/menu-catalog.js.map +1 -1
- package/dist/services/report/cell-edit.d.ts +53 -0
- package/dist/services/report/cell-edit.d.ts.map +1 -0
- package/dist/services/report/cell-edit.js +137 -0
- package/dist/services/report/cell-edit.js.map +1 -0
- package/dist/services/report/cell-event.d.ts +28 -0
- package/dist/services/report/cell-event.d.ts.map +1 -0
- package/dist/services/report/cell-event.js +71 -0
- package/dist/services/report/cell-event.js.map +1 -0
- package/dist/services/report/cell-filter.d.ts +46 -0
- package/dist/services/report/cell-filter.d.ts.map +1 -0
- package/dist/services/report/cell-filter.js +153 -0
- package/dist/services/report/cell-filter.js.map +1 -0
- package/dist/services/workflow-basic-info.d.ts +27 -0
- package/dist/services/workflow-basic-info.d.ts.map +1 -0
- package/dist/services/workflow-basic-info.js +170 -0
- package/dist/services/workflow-basic-info.js.map +1 -0
- package/dist/services/workflow-function-management.d.ts +1 -1
- package/dist/services/workflow-function-settings.d.ts +32 -0
- package/dist/services/workflow-function-settings.d.ts.map +1 -0
- package/dist/services/workflow-function-settings.js +199 -0
- package/dist/services/workflow-function-settings.js.map +1 -0
- package/dist/services/workflow-sign-file-settings.d.ts +16 -0
- package/dist/services/workflow-sign-file-settings.d.ts.map +1 -0
- package/dist/services/workflow-sign-file-settings.js +80 -0
- package/dist/services/workflow-sign-file-settings.js.map +1 -0
- package/dist/services/workflow-submit-confirm.d.ts +14 -0
- package/dist/services/workflow-submit-confirm.d.ts.map +1 -0
- package/dist/services/workflow-submit-confirm.js +29 -0
- package/dist/services/workflow-submit-confirm.js.map +1 -0
- package/dist/services/workflow-tab-config.d.ts +3 -3
- package/dist/services/workflow-tab-config.d.ts.map +1 -1
- package/dist/services/workflow-tab-config.js +14 -12
- package/dist/services/workflow-tab-config.js.map +1 -1
- package/dist/services/workflow-tabs-editor.d.ts +28 -0
- package/dist/services/workflow-tabs-editor.d.ts.map +1 -0
- package/dist/services/workflow-tabs-editor.js +130 -0
- package/dist/services/workflow-tabs-editor.js.map +1 -0
- package/dist/services/workflow-watermark-template.d.ts +8 -0
- package/dist/services/workflow-watermark-template.d.ts.map +1 -0
- package/dist/services/workflow-watermark-template.js +78 -0
- package/dist/services/workflow-watermark-template.js.map +1 -0
- package/package.json +1 -1
- package/skill-docs/SKILL.md +4 -4
- package/skill-docs/_catalog.md +106 -104
- package/skill-docs/references/common/ref-cli-commands.md +696 -689
- package/skill-docs/references/form/guide-form-archive-permission.md +5 -2
- package/skill-docs/references/form/guide-form-layout-incremental.md +6 -4
- package/skill-docs/references/form/guide-form-view.md +423 -374
- package/skill-docs/references/form/ref-form-fields.md +1 -1
- package/skill-docs/references/report/cross-dataset-filter-guide.md +33 -19
- package/skill-docs/references/report/event-hreflink-guide.md +30 -0
- package/skill-docs/references/report/ref-report-commands.md +14 -0
- package/skill-docs/references/report/report-designer-feature-map.md +2 -2
- package/skill-docs/references/workflow/guide-base-auth-share-remind.md +126 -126
- package/skill-docs/references/workflow/guide-function-settings.md +112 -0
- package/skill-docs/references/workflow/guide-workflow.md +87 -8
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { BaseSettings, formOf, normalized, wire, verify, keys, P } from './workflow-base-settings.js';
|
|
2
|
+
import { id } from './workflow-function-management.js';
|
|
3
|
+
export const pathSignFields = ['signShowOrder', 'signShowSrcList', 'viewRelateSign', 'viewForwardSign', 'allowSignRelate', 'relateRangeSelect', 'relateMatterRangeBrowser', 'allowSignUpload', 'uploadCatalogBrowser', 'allowSignLocation', 'allowSignEmoticon', 'allowSignAt', 'informHrmRange'];
|
|
4
|
+
export const fileFields = ['createDelete', 'asyncDelete'];
|
|
5
|
+
export class SignFileSettings extends BaseSettings {
|
|
6
|
+
async readSettings(kind, w) {
|
|
7
|
+
const r = await this.get(`${P}/${kind === 'sign' ? 'pathSet/signconfig/getPathSignConfigForm' : 'file/getFileConfigForm'}`, { workflowId: id(w) });
|
|
8
|
+
return formOf(kind === 'sign' ? r.pathSignConfig : r);
|
|
9
|
+
}
|
|
10
|
+
async candidates(w, k) {
|
|
11
|
+
if (!['relateMatterRangeBrowser', 'uploadCatalogBrowser'].includes(k))
|
|
12
|
+
throw Error('无效候选字段');
|
|
13
|
+
const f = await this.readSettings('sign', w), b = f.items[k]?.browserBean;
|
|
14
|
+
if (!b)
|
|
15
|
+
throw Error('当前环境未开放该设置');
|
|
16
|
+
const expected = k === 'uploadCatalogBrowser' ? ['doc', 'folder'] : ['bcw', 'relevanceScopeItemBrowser'];
|
|
17
|
+
if (b.module !== expected[0] || b.type !== expected[1])
|
|
18
|
+
throw Error('不支持的浏览器');
|
|
19
|
+
return this.post(`/api/${b.module}/common/browser/data/${b.type}`, { ...b.commonParams, ...b.dataParams, current: 1, pageNo: 1, pageSize: 100 });
|
|
20
|
+
}
|
|
21
|
+
async selection(form, k, values) {
|
|
22
|
+
if (!Array.isArray(values) || values.some(v => typeof v !== 'string' || !v))
|
|
23
|
+
throw Error(`${k} 需要字符串 ID 数组`);
|
|
24
|
+
const b = form.items[k]?.browserBean;
|
|
25
|
+
const expected = k === 'uploadCatalogBrowser' ? ['doc', 'folder'] : ['bcw', 'relevanceScopeItemBrowser'];
|
|
26
|
+
if (!b || b.module !== expected[0] || b.type !== expected[1])
|
|
27
|
+
throw Error(`${k} 当前环境未返回支持的浏览器`);
|
|
28
|
+
if (k === 'uploadCatalogBrowser' && values.length > 1)
|
|
29
|
+
throw Error('附件上传目录只能选择一个');
|
|
30
|
+
if (new Set(values).size !== values.length)
|
|
31
|
+
throw Error(`${k} 重复 ID`);
|
|
32
|
+
if (!values.length)
|
|
33
|
+
return [];
|
|
34
|
+
const d = k === 'relateMatterRangeBrowser' ? await this.post(`/api/${b.module}/common/browser/data/${b.type}`, { ...b.commonParams, ...b.dataParams, current: 1, pageNo: 1, pageSize: 100 }) : await this.post(`/api/${b.module}/common/browser/destData/${b.type}`, { ...b.commonParams, ...b.destDataParams, selectIds: values.join(','), browserMultiple: !!b.multiple });
|
|
35
|
+
const rows = Array.isArray(d) ? d : Array.isArray(d?.data) ? d.data : d?.id ? [d] : undefined;
|
|
36
|
+
if (k === 'relateMatterRangeBrowser' && d.total !== undefined && Number(d.total) > (rows?.length ?? 0))
|
|
37
|
+
throw Error('事项类型候选不完整,停止写入');
|
|
38
|
+
if (!Array.isArray(rows))
|
|
39
|
+
throw Error(`${k} 无法验证浏览对象,返回字段:${Object.keys(d ?? {}).join(',')}`);
|
|
40
|
+
return values.map(v => { const hits = rows.filter(r => String(r.id) === v && !r.isDelete && !r.disabled && !r.disabledCheck); if (hits.length !== 1)
|
|
41
|
+
throw Error(`${k} 未找到唯一有效 ID:${v}`); return { ...hits[0], id: v, content: hits[0].content ?? hits[0].name }; });
|
|
42
|
+
}
|
|
43
|
+
async updateSettings(kind, w, patch) {
|
|
44
|
+
const allowed = kind === 'sign' ? pathSignFields : fileFields;
|
|
45
|
+
keys(patch, allowed);
|
|
46
|
+
const form = await this.readSettings(kind, w), before = normalized(form), nextPatch = { ...patch };
|
|
47
|
+
const browsers = {};
|
|
48
|
+
for (const k of ['relateMatterRangeBrowser', 'uploadCatalogBrowser'])
|
|
49
|
+
if (k in nextPatch) {
|
|
50
|
+
const item = form.items[k];
|
|
51
|
+
if (!item || item.disabled || item.disable || item.readOnly)
|
|
52
|
+
throw Error(`${k} 当前不可编辑`);
|
|
53
|
+
browsers[k] = await this.selection(form, k, nextPatch[k]);
|
|
54
|
+
delete nextPatch[k];
|
|
55
|
+
}
|
|
56
|
+
const next = { ...await this.patch(form, nextPatch, allowed), ...browsers };
|
|
57
|
+
if (kind === 'sign' && ('relateRangeSelect' in patch || 'relateMatterRangeBrowser' in patch)) {
|
|
58
|
+
if (next.relateRangeSelect === '1' && !next.relateMatterRangeBrowser?.length)
|
|
59
|
+
throw Error('选择关联范围时必须指定非空 --relate-items');
|
|
60
|
+
if (next.relateRangeSelect === '0' && patch.relateMatterRangeBrowser?.length)
|
|
61
|
+
throw Error('指定事项类型须设置 --relate-range 1');
|
|
62
|
+
}
|
|
63
|
+
const payload = { ...wire(form, next), workflowId: id(w) };
|
|
64
|
+
if (kind === 'sign') {
|
|
65
|
+
// Same fixed compatibility field as frontend doSaveEvent; not a PC/mobile display API.
|
|
66
|
+
payload.signOrder = 0;
|
|
67
|
+
if ('uploadCatalogBrowser' in next)
|
|
68
|
+
payload.uploadCatalog = next.uploadCatalogBrowser?.[0]?.id ?? '0';
|
|
69
|
+
}
|
|
70
|
+
const result = await this.post(`${P}/${kind === 'sign' ? 'pathSet/signconfig/savePathSignConfig' : 'file/saveFileConfigForm'}`, payload);
|
|
71
|
+
if (kind === 'file' && result !== true)
|
|
72
|
+
throw Error('附件设置保存业务失败');
|
|
73
|
+
if (kind === 'sign' && (!result || !(Number(result.row) > 0)))
|
|
74
|
+
throw Error('签字设置保存业务失败');
|
|
75
|
+
const after = normalized(await this.readSettings(kind, w));
|
|
76
|
+
verify(next, after, allowed);
|
|
77
|
+
return { workflowId: w, before, after, verified: true };
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=workflow-sign-file-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-sign-file-settings.js","sourceRoot":"","sources":["../../src/services/workflow-sign-file-settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BaseSettings } from './workflow-base-settings.js';
|
|
2
|
+
import { type Config } from './workflow-function-management.js';
|
|
3
|
+
export declare const submitFields: string[];
|
|
4
|
+
export declare const showNodeLabels: Record<string, string>;
|
|
5
|
+
export declare class SubmitConfirmSettings extends BaseSettings {
|
|
6
|
+
read(workflowId: string): Promise<import("./workflow-function-management.js").Form>;
|
|
7
|
+
update(workflowId: string, patch: Config): Promise<{
|
|
8
|
+
workflowId: string;
|
|
9
|
+
before: Config;
|
|
10
|
+
after: Config;
|
|
11
|
+
verified: boolean;
|
|
12
|
+
}>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=workflow-submit-confirm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-submit-confirm.d.ts","sourceRoot":"","sources":["../../src/services/workflow-submit-confirm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA6C,MAAM,6BAA6B,CAAC;AACtG,OAAO,EAAM,KAAK,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAEpE,eAAO,MAAM,YAAY,UAAgF,CAAC;AAC1G,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAyD,CAAC;AAC5G,qBAAa,qBAAsB,SAAQ,YAAY;IAC/C,IAAI,CAAC,UAAU,EAAE,MAAM;IAGvB,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;;;;;;CAiB/C"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { BaseSettings, P, formOf, normalized, wire, verify, keys } from './workflow-base-settings.js';
|
|
2
|
+
import { id } from './workflow-function-management.js';
|
|
3
|
+
export const submitFields = ['confirm', 'nodeRange', 'nodeRangeBrowser', 'showCcOperator', 'showNodeWay'];
|
|
4
|
+
export const showNodeLabels = { '0': '显示所有节点', '1': '仅显示下一节点', '2': '仅显示会流转到达的节点' };
|
|
5
|
+
export class SubmitConfirmSettings extends BaseSettings {
|
|
6
|
+
async read(workflowId) {
|
|
7
|
+
return formOf(await this.get(`${P}/baseSet/getSubmitSetForm`, { workflowId: id(workflowId) }));
|
|
8
|
+
}
|
|
9
|
+
async update(workflowId, patch) {
|
|
10
|
+
keys(patch, submitFields);
|
|
11
|
+
const form = await this.read(workflowId), before = normalized(form);
|
|
12
|
+
const next = await this.patch(form, patch, submitFields);
|
|
13
|
+
if ('nodeRange' in patch || 'nodeRangeBrowser' in patch) {
|
|
14
|
+
if (String(next.nodeRange) === '0') {
|
|
15
|
+
if (patch.nodeRangeBrowser?.length)
|
|
16
|
+
throw Error('全部节点不能同时指定节点;请选择 --node-range 1 或 2');
|
|
17
|
+
next.nodeRangeBrowser = [];
|
|
18
|
+
}
|
|
19
|
+
else if (!next.nodeRangeBrowser?.length) {
|
|
20
|
+
throw Error('选择/排除节点时节点列表不能为空,请传 --nodes');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
await this.post(`${P}/baseSet/saveSubmitSetForm`, { ...wire(form, next), workflowId: id(workflowId) });
|
|
24
|
+
const after = normalized(await this.read(workflowId));
|
|
25
|
+
verify(next, after, submitFields);
|
|
26
|
+
return { workflowId, before, after, verified: true };
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=workflow-submit-confirm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-submit-confirm.js","sourceRoot":"","sources":["../../src/services/workflow-submit-confirm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACtG,OAAO,EAAE,EAAE,EAAe,MAAM,mCAAmC,CAAC;AAEpE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;AAC1G,MAAM,CAAC,MAAM,cAAc,GAA2B,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC;AAC5G,MAAM,OAAO,qBAAsB,SAAQ,YAAY;IACrD,KAAK,CAAC,IAAI,CAAC,UAAkB;QAC3B,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,2BAA2B,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IACjG,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAE,KAAa;QAC5C,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QACzD,IAAI,WAAW,IAAI,KAAK,IAAI,kBAAkB,IAAI,KAAK,EAAE,CAAC;YACxD,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;gBACnC,IAAI,KAAK,CAAC,gBAAgB,EAAE,MAAM;oBAAE,MAAM,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBACvF,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;YAC7B,CAAC;iBAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;gBAC1C,MAAM,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACvG,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QAClC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACvD,CAAC;CACF"}
|
|
@@ -16,6 +16,7 @@ export interface TabConfig {
|
|
|
16
16
|
orderId: number;
|
|
17
17
|
raw: Record<string, any>;
|
|
18
18
|
}
|
|
19
|
+
export declare function toTab(raw: any): TabConfig;
|
|
19
20
|
/** 展示名:有自定义名用自定义名 */
|
|
20
21
|
export declare function tabLabel(t: TabConfig): string;
|
|
21
22
|
export declare function getTabConfig(client: ApiClient, baseUrl: string, workflowId: string): Promise<TabConfig[]>;
|
|
@@ -45,10 +46,9 @@ export declare function applyTabPatch(tabs: TabConfig[], patch: TabPatch): {
|
|
|
45
46
|
changed: string[];
|
|
46
47
|
};
|
|
47
48
|
/**
|
|
48
|
-
*
|
|
49
|
+
* 保存完整列表以保持全局排序;后端会按当前列表位置重设顺序,省略行并不删除。
|
|
49
50
|
*
|
|
50
|
-
* 从包装字段重建报文:GET 回来是布尔、写出去要数字;`orderId`
|
|
51
|
-
* (GET 给显示序 1..8,存储用的是 10,20,… 给自定义页签留插空)。
|
|
51
|
+
* 从包装字段重建报文:GET 回来是布尔、写出去要数字;`orderId` 按列表顺序提交,后端按 i+1 重设。
|
|
52
52
|
*/
|
|
53
53
|
export declare function saveTabConfig(client: ApiClient, baseUrl: string, workflowId: string, tabs: TabConfig[]): Promise<void>;
|
|
54
54
|
//# sourceMappingURL=workflow-tab-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-tab-config.d.ts","sourceRoot":"","sources":["../../src/services/workflow-tab-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAwBnD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,aAAa,EAAE,MAAM,CAAC;IACtB,sBAAsB;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC1B;
|
|
1
|
+
{"version":3,"file":"workflow-tab-config.d.ts","sourceRoot":"","sources":["../../src/services/workflow-tab-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAwBnD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,aAAa,EAAE,MAAM,CAAC;IACtB,sBAAsB;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC1B;AAID,wBAAgB,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,CAczC;AAED,qBAAqB;AACrB,wBAAgB,QAAQ,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAE7C;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GACrD,OAAO,CAAC,SAAS,EAAE,CAAC,CAUtB;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAQ7E;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAEpD;AAED,MAAM,WAAW,QAAQ;IACvB,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,+CAA+C;AAC/C,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAqC1G;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GACxE,OAAO,CAAC,IAAI,CAAC,CAqBf"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* |---|---|---|
|
|
11
11
|
* | 集合键 | `tabList` | `list` |
|
|
12
12
|
* | 各开关 | `true/false` | `1/0` |
|
|
13
|
-
* | `orderId` | `1..8`(显示序) | `
|
|
13
|
+
* | `orderId` | `1..8`(显示序) | `1..N`(后端按列表顺序重设) |
|
|
14
14
|
* | `isGlobal` | 无 | `0` |
|
|
15
15
|
*
|
|
16
16
|
* 页签集合**随流程类型变**:EB 流程只有流程表单/流程图/流程状态/共享/主流程/子流程/平行流程/外部流程;
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
*/
|
|
20
20
|
const BASE = '/api/bs/workflow/pathdef';
|
|
21
21
|
const asBool = (v) => v === true || v === 1 || v === '1';
|
|
22
|
-
function toTab(raw) {
|
|
22
|
+
export function toTab(raw) {
|
|
23
23
|
return {
|
|
24
24
|
id: String(raw?.id ?? ''),
|
|
25
25
|
tabName: String(raw?.tabName ?? ''),
|
|
@@ -57,10 +57,13 @@ export async function getTabConfig(client, baseUrl, workflowId) {
|
|
|
57
57
|
export function findTab(tabs, ref) {
|
|
58
58
|
const s = String(ref);
|
|
59
59
|
const n = Number(s);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
const exact = tabs.find(t => t.id === s);
|
|
61
|
+
if (exact)
|
|
62
|
+
return exact;
|
|
63
|
+
const matches = tabs.filter(t => (Number.isInteger(n) && t.flowPageTabId === n) || t.tabName === s || t.customName === s);
|
|
64
|
+
if (matches.length > 1)
|
|
65
|
+
throw Error(`页签引用有歧义:${ref},请使用页签 ID`);
|
|
66
|
+
return matches[0];
|
|
64
67
|
}
|
|
65
68
|
export function tabNames(tabs) {
|
|
66
69
|
return tabs.map((t) => `${tabLabel(t)}(${t.flowPageTabId})`);
|
|
@@ -107,13 +110,12 @@ export function applyTabPatch(tabs, patch) {
|
|
|
107
110
|
return { next, changed };
|
|
108
111
|
}
|
|
109
112
|
/**
|
|
110
|
-
*
|
|
113
|
+
* 保存完整列表以保持全局排序;后端会按当前列表位置重设顺序,省略行并不删除。
|
|
111
114
|
*
|
|
112
|
-
* 从包装字段重建报文:GET 回来是布尔、写出去要数字;`orderId`
|
|
113
|
-
* (GET 给显示序 1..8,存储用的是 10,20,… 给自定义页签留插空)。
|
|
115
|
+
* 从包装字段重建报文:GET 回来是布尔、写出去要数字;`orderId` 按列表顺序提交,后端按 i+1 重设。
|
|
114
116
|
*/
|
|
115
117
|
export async function saveTabConfig(client, baseUrl, workflowId, tabs) {
|
|
116
|
-
const list = tabs.map((t) => ({
|
|
118
|
+
const list = tabs.map((t, index) => ({
|
|
117
119
|
...t.raw,
|
|
118
120
|
id: t.id,
|
|
119
121
|
tabName: t.tabName,
|
|
@@ -124,13 +126,13 @@ export async function saveTabConfig(client, baseUrl, workflowId, tabs) {
|
|
|
124
126
|
showInMobile: t.showInMobile ? 1 : 0,
|
|
125
127
|
showInMobileMenu: t.showInMobileMenu ? 1 : 0,
|
|
126
128
|
defOpen: t.defOpen ? 1 : 0,
|
|
127
|
-
orderId:
|
|
129
|
+
orderId: index + 1,
|
|
128
130
|
isGlobal: 0,
|
|
129
131
|
}));
|
|
130
132
|
const res = await client.post(`${baseUrl}${BASE}/pathSet/tabconfig/saveTabConfigData`, {
|
|
131
133
|
list, workflowId, global: false,
|
|
132
134
|
});
|
|
133
|
-
if (res?.code !== 200 || res?.status === false) {
|
|
135
|
+
if (res?.code !== 200 || res?.status === false || Number(res?.data) <= 0) {
|
|
134
136
|
throw new Error(`保存详情页页签失败: ${res?.msg || '未知错误'}`);
|
|
135
137
|
}
|
|
136
138
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-tab-config.js","sourceRoot":"","sources":["../../src/services/workflow-tab-config.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,IAAI,GAAG,0BAA0B,CAAC;AAoBxC,MAAM,MAAM,GAAG,CAAC,CAAU,EAAW,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC;AAE3E,
|
|
1
|
+
{"version":3,"file":"workflow-tab-config.js","sourceRoot":"","sources":["../../src/services/workflow-tab-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { ApiClient } from '../core/client.js';
|
|
2
|
+
import { type TabConfig, type TabPatch } from './workflow-tab-config.js';
|
|
3
|
+
export interface TabsEdit extends TabPatch {
|
|
4
|
+
create?: boolean;
|
|
5
|
+
tab?: string;
|
|
6
|
+
name?: string;
|
|
7
|
+
pcUrl?: string;
|
|
8
|
+
mobileUrl?: string;
|
|
9
|
+
order?: string[];
|
|
10
|
+
delete?: string;
|
|
11
|
+
locales?: Record<string, string>;
|
|
12
|
+
}
|
|
13
|
+
export declare function checkDisabled(before: TabConfig[], next: TabConfig[]): void;
|
|
14
|
+
export declare function getTabLocales(client: ApiClient, base: string, tabId: string): Promise<any>;
|
|
15
|
+
export declare function editTabs(client: ApiClient, base: string, w: string, o: TabsEdit): Promise<{
|
|
16
|
+
workflowId: string;
|
|
17
|
+
deleted: string;
|
|
18
|
+
verified: boolean;
|
|
19
|
+
tabs: TabConfig[];
|
|
20
|
+
created?: undefined;
|
|
21
|
+
} | {
|
|
22
|
+
workflowId: string;
|
|
23
|
+
created: string | undefined;
|
|
24
|
+
verified: boolean;
|
|
25
|
+
tabs: TabConfig[];
|
|
26
|
+
deleted?: undefined;
|
|
27
|
+
}>;
|
|
28
|
+
//# sourceMappingURL=workflow-tabs-editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-tabs-editor.d.ts","sourceRoot":"","sources":["../../src/services/workflow-tabs-editor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAA8D,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGrI,MAAM,WAAW,QAAS,SAAQ,QAAQ;IAAG,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC;CAAE;AAIrM,wBAAgB,aAAa,CAAC,MAAM,EAAC,SAAS,EAAE,EAAC,IAAI,EAAC,SAAS,EAAE,QAAqS;AAMtW,wBAAsB,aAAa,CAAC,MAAM,EAAC,SAAS,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,gBAA+H;AAE5M,wBAAsB,QAAQ,CAAC,MAAM,EAAC,SAAS,EAAC,IAAI,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,QAAQ;;;;;;;;;;;;GAiC9E"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { getTabConfig, saveTabConfig, applyTabPatch, findTab, toTab } from './workflow-tab-config.js';
|
|
2
|
+
const P = '/api/bs/workflow/pathdef/pathSet/tabconfig';
|
|
3
|
+
const M = '/api/bs/workflow/pathdef/multilang';
|
|
4
|
+
function data(r) { if (r?.code !== 200 || r.status === false || r.data === false || r.data?.success === false)
|
|
5
|
+
throw Error(r?.msg || '页签接口失败'); return r.data; }
|
|
6
|
+
function target(tabs, ref) { const t = findTab(tabs, ref); if (!t)
|
|
7
|
+
throw Error(`未找到页签 ${ref}`); return t; }
|
|
8
|
+
function url(v, mobile = false) { if (typeof v !== 'string' || (!(mobile && v === '') && !/^(\/[^/]|\/$|https?:\/\/)/.test(v)))
|
|
9
|
+
throw Error('地址必须为 / 开头的内部地址或 http(s) 地址;移动地址可为空'); }
|
|
10
|
+
export function checkDisabled(before, next) { for (const t of next) {
|
|
11
|
+
const old = before.find(x => x.id === t.id);
|
|
12
|
+
if (!old)
|
|
13
|
+
continue;
|
|
14
|
+
for (const [flag, key] of [['pcPutAsh', 'showInPc'], ['mobilePutAsh', 'showInMobile'], ['mobileMenuPutAsh', 'showInMobileMenu']])
|
|
15
|
+
if (old.raw[flag] && old[key] !== t[key])
|
|
16
|
+
throw Error(`页签 ${t.id} 的 ${key} 被平台禁用,不能修改`);
|
|
17
|
+
} }
|
|
18
|
+
function checkReadback(next, after) {
|
|
19
|
+
if (next.map(t => t.id).join(',') !== after.map(t => t.id).join(','))
|
|
20
|
+
throw Error('保存已发出,页签列表或顺序回读不一致');
|
|
21
|
+
for (const t of next) {
|
|
22
|
+
const a = target(after, t.id);
|
|
23
|
+
for (const k of ['customName', 'showInPc', 'showInMobile', 'showInMobileMenu', 'defOpen'])
|
|
24
|
+
if (t[k] !== a[k])
|
|
25
|
+
throw Error(`保存已发出,${t.id}.${k} 回读不一致`);
|
|
26
|
+
if (t.flowPageTabType === '1')
|
|
27
|
+
for (const k of ['pcUrl', 'mobileUrl'])
|
|
28
|
+
if (String(t.raw.customTabConfig?.[k] ?? '') !== String(a.raw.customTabConfig?.[k] ?? ''))
|
|
29
|
+
throw Error(`保存已发出,${t.id}.${k} 回读不一致`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export async function getTabLocales(client, base, tabId) { return data(await client.post(base + M + '/getMultilangData', { tablefield: 'wfp_flowpage_tabconfig.custom_name', targetId: tabId })); }
|
|
33
|
+
function localeRows(d) { const rows = d.usernamePerLangs ?? d.tableData ?? d.data; if (!Array.isArray(rows))
|
|
34
|
+
throw Error('多语言返回结构不支持,停止写入'); return rows; }
|
|
35
|
+
export async function editTabs(client, base, w, o) {
|
|
36
|
+
const before = await getTabConfig(client, base, w);
|
|
37
|
+
let next = before.map(t => ({ ...t, raw: structuredClone(t.raw) }));
|
|
38
|
+
if (o.create && o.tab)
|
|
39
|
+
throw Error('--create 与 --tab 不能同时使用');
|
|
40
|
+
if (o.delete) {
|
|
41
|
+
if (Object.keys(o).some(k => k !== 'delete' && o[k] !== undefined))
|
|
42
|
+
throw Error('--delete 须单独使用');
|
|
43
|
+
const t = target(before, o.delete);
|
|
44
|
+
if (t.flowPageTabType !== '1')
|
|
45
|
+
throw Error('只能删除自定义地址页签');
|
|
46
|
+
data(await client.get(base + P + '/deleteCustomTab?tabConfigIds=' + encodeURIComponent(t.id)));
|
|
47
|
+
const after = await getTabConfig(client, base, w);
|
|
48
|
+
checkReadback(before.filter(x => x.id !== t.id), after);
|
|
49
|
+
return { workflowId: w, deleted: t.id, verified: true, tabs: after };
|
|
50
|
+
}
|
|
51
|
+
if (o.pcUrl !== undefined)
|
|
52
|
+
url(o.pcUrl);
|
|
53
|
+
if (o.mobileUrl !== undefined)
|
|
54
|
+
url(o.mobileUrl, true);
|
|
55
|
+
if ((o.name !== undefined || o.pcUrl !== undefined || o.mobileUrl !== undefined || o.locales !== undefined) && !o.create && !o.tab)
|
|
56
|
+
throw Error('修改名称/地址/多语言必须指定 --tab');
|
|
57
|
+
if (o.locales !== undefined && (!o.locales || Array.isArray(o.locales) || typeof o.locales !== 'object' || !Object.keys(o.locales).length || Object.values(o.locales).some(v => typeof v !== 'string')))
|
|
58
|
+
throw Error('--locales 必须是语言 ID/语言代码到字符串的非空 JSON 对象');
|
|
59
|
+
let edited = o.tab ? target(next, o.tab) : undefined;
|
|
60
|
+
if (o.create) {
|
|
61
|
+
if (!o.name?.trim() || !o.pcUrl)
|
|
62
|
+
throw Error('新增自定义页签需要 --name 和 --pc-url');
|
|
63
|
+
const ids = data(await client.get(base + P + '/getCustomTabParam?num=1'))?.customTabIds;
|
|
64
|
+
if (!Array.isArray(ids) || ids.length !== 1 || typeof ids[0] !== 'string' || !/^\d+$/.test(ids[0]))
|
|
65
|
+
throw Error('未返回有效新页签 ID');
|
|
66
|
+
const form = data(await client.get(base + P + '/getTabCustomLinkForm?tabConfigId=' + ids[0]));
|
|
67
|
+
if (!form?.data || !('pcUrl' in form.data) || !('mobileUrl' in form.data))
|
|
68
|
+
throw Error('未返回地址默认值');
|
|
69
|
+
// Frontend addNewTab defaults; ID API provides no switch defaults. See docs/contracts/workflow-tabs-set.md.
|
|
70
|
+
edited = toTab({ id: ids[0], tabName: '自定义', flowPageTabType: '1', defOpen: 0, showInPc: 0, showInMobile: 0, showInMobileMenu: 0, mobileMenuPutAsh: true, pcPutAsh: false, mobilePutAsh: false, customNameOtherParams: { isSetLocale: false }, wfpMultilangCommonParamMap: {}, workflowId: w, customTabConfig: form.data, orderId: next.length + 1 });
|
|
71
|
+
next.push(edited);
|
|
72
|
+
}
|
|
73
|
+
if (edited) {
|
|
74
|
+
if (o.name !== undefined) {
|
|
75
|
+
edited.customName = o.name;
|
|
76
|
+
edited.raw.wfpMultilangCommonParamMap = {};
|
|
77
|
+
}
|
|
78
|
+
if (o.pcUrl !== undefined || o.mobileUrl !== undefined) {
|
|
79
|
+
if (edited.flowPageTabType !== '1')
|
|
80
|
+
throw Error('仅自定义地址页签可修改 URL');
|
|
81
|
+
const form = data(await client.get(base + P + '/getTabCustomLinkForm?tabConfigId=' + edited.id));
|
|
82
|
+
if (!form?.data)
|
|
83
|
+
throw Error('缺少地址配置');
|
|
84
|
+
edited.raw.customTabConfig = { ...form.data, ...edited.raw.customTabConfig, ...(o.pcUrl !== undefined ? { pcUrl: o.pcUrl } : {}), ...(o.mobileUrl !== undefined ? { mobileUrl: o.mobileUrl } : {}) };
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
let localeData, mergedLocales;
|
|
88
|
+
if (o.locales && edited) {
|
|
89
|
+
localeData = await getTabLocales(client, base, edited.id);
|
|
90
|
+
mergedLocales = structuredClone(localeRows(localeData));
|
|
91
|
+
for (const [ref, value] of Object.entries(o.locales)) {
|
|
92
|
+
const hits = mergedLocales.filter(r => String(r.langid) === ref || r.langtype === ref);
|
|
93
|
+
if (hits.length !== 1)
|
|
94
|
+
throw Error(`未找到唯一语言 ${ref}`);
|
|
95
|
+
hits[0].value = value;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
next = applyTabPatch(next, o).next;
|
|
99
|
+
if (o.order) {
|
|
100
|
+
const order = o.order.map(ref => target(next, ref));
|
|
101
|
+
if (order.length !== next.length || new Set(order.map(t => t.id)).size !== next.length)
|
|
102
|
+
throw Error('--order 必须包含全部页签,每项恰好一次');
|
|
103
|
+
next = order;
|
|
104
|
+
}
|
|
105
|
+
checkDisabled([...before, ...(o.create && edited ? [edited] : [])], next);
|
|
106
|
+
await saveTabConfig(client, base, w, next);
|
|
107
|
+
let after = await getTabConfig(client, base, w);
|
|
108
|
+
checkReadback(next, after);
|
|
109
|
+
if (mergedLocales && edited) {
|
|
110
|
+
// A normal name save can update the current-language row. Re-read before merging translations.
|
|
111
|
+
localeData = await getTabLocales(client, base, edited.id);
|
|
112
|
+
mergedLocales = structuredClone(localeRows(localeData));
|
|
113
|
+
for (const [ref, value] of Object.entries(o.locales)) {
|
|
114
|
+
const hits = mergedLocales.filter(r => String(r.langid) === ref || r.langtype === ref);
|
|
115
|
+
if (hits.length !== 1)
|
|
116
|
+
throw Error(`保存后语言列表发生变化:${ref}`);
|
|
117
|
+
hits[0].value = value;
|
|
118
|
+
}
|
|
119
|
+
data(await client.post(base + M + '/saveMultilangData', { tablefield: 'wfp_flowpage_tabconfig.custom_name', targetId: edited.id, needRecodInputValue: true, inputValue: o.name ?? localeData.inputValue ?? edited.customName, tableData: mergedLocales }));
|
|
120
|
+
const read = localeRows(await getTabLocales(client, base, edited.id));
|
|
121
|
+
for (const row of mergedLocales) {
|
|
122
|
+
const r = read.find(x => String(x.langid) === String(row.langid));
|
|
123
|
+
if (!r || r.value !== row.value)
|
|
124
|
+
throw Error('多语言保存已发出,回读不一致');
|
|
125
|
+
}
|
|
126
|
+
after = await getTabConfig(client, base, w);
|
|
127
|
+
}
|
|
128
|
+
return { workflowId: w, created: o.create ? edited?.id : undefined, verified: true, tabs: after };
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=workflow-tabs-editor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-tabs-editor.js","sourceRoot":"","sources":["../../src/services/workflow-tabs-editor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type Field = {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
};
|
|
5
|
+
/** Compile only explicitly supplied content; style-only patches retain both stored templates. */
|
|
6
|
+
export declare function compileWatermark(p: Record<string, any>, fields: Field[]): Record<string, any>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=workflow-watermark-template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-watermark-template.d.ts","sourceRoot":"","sources":["../../src/services/workflow-watermark-template.ts"],"names":[],"mappings":"AACA,KAAK,KAAK,GAAC;IAAC,EAAE,EAAC,MAAM,CAAC;IAAA,IAAI,EAAC,MAAM,CAAA;CAAC,CAAC;AAEnC,iGAAiG;AACjG,wBAAgB,gBAAgB,CAAC,CAAC,EAAC,MAAM,CAAC,MAAM,EAAC,GAAG,CAAC,EAAC,MAAM,EAAC,KAAK,EAAE,uBA6CnE"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { DOMParser } from '@xmldom/xmldom';
|
|
2
|
+
const escape = (s) => s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
|
3
|
+
/** Compile only explicitly supplied content; style-only patches retain both stored templates. */
|
|
4
|
+
export function compileWatermark(p, fields) {
|
|
5
|
+
const has = (k) => Object.prototype.hasOwnProperty.call(p, k);
|
|
6
|
+
if (!['textTemplate', 'wmText', 'wmOriginText'].some(has))
|
|
7
|
+
return p;
|
|
8
|
+
const lookup = (key) => { const rows = fields.filter(f => String(f.id) === key || f.name === key); if (rows.length !== 1)
|
|
9
|
+
throw Error(`水印变量未匹配唯一有效字段:${key}`); return rows[0]; };
|
|
10
|
+
const validate = (text) => {
|
|
11
|
+
if (!text.trim())
|
|
12
|
+
throw Error('水印模板不能为空');
|
|
13
|
+
if (/\[-?\d+\]|\{\{|\}\}/.test(text))
|
|
14
|
+
throw Error('水印不能使用邮件占位符或未解析变量;使用 textTemplate 的 {{名称}} 或 wmText 的 $ID');
|
|
15
|
+
for (const m of text.matchAll(/\$(-?\d+)/g))
|
|
16
|
+
lookup(m[1]);
|
|
17
|
+
if (text.replace(/\$-?\d+/g, '').includes('$'))
|
|
18
|
+
throw Error('无效水印变量语法:$ 后必须是有效变量 ID');
|
|
19
|
+
return text;
|
|
20
|
+
};
|
|
21
|
+
let text, html;
|
|
22
|
+
if (has('textTemplate')) {
|
|
23
|
+
if (has('wmText') || has('wmOriginText'))
|
|
24
|
+
throw Error('textTemplate 不可与原始模板同时指定');
|
|
25
|
+
if (typeof p.textTemplate !== 'string')
|
|
26
|
+
throw Error('textTemplate 必须为字符串');
|
|
27
|
+
text = p.textTemplate.replace(/\{\{([^{}]+)\}\}/g, (_m, key) => '$' + lookup(key).id);
|
|
28
|
+
}
|
|
29
|
+
else if (has('wmText')) {
|
|
30
|
+
if (typeof p.wmText !== 'string')
|
|
31
|
+
throw Error('wmText 必须为字符串');
|
|
32
|
+
text = p.wmText;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
throw Error('不能仅修改 wmOriginText;请提供 textTemplate 或 wmText,并同步校验回显模板');
|
|
36
|
+
}
|
|
37
|
+
validate(text);
|
|
38
|
+
html = '<p>' + text.split(/(\$-?\d+)/g).map(part => {
|
|
39
|
+
if (/^\$-?\d+$/.test(part)) {
|
|
40
|
+
const f = lookup(part.slice(1));
|
|
41
|
+
return `<span pluginname="watermarksetting" contenteditable="false" data-id="${f.id}">${escape(f.name)}</span>`;
|
|
42
|
+
}
|
|
43
|
+
return escape(part).replace(/\n/g, '<br/>');
|
|
44
|
+
}).join('') + '</p>';
|
|
45
|
+
if (has('wmOriginText')) {
|
|
46
|
+
if (typeof p.wmOriginText !== 'string')
|
|
47
|
+
throw Error('wmOriginText 必须为字符串');
|
|
48
|
+
let invalid = false;
|
|
49
|
+
const doc = new DOMParser({ errorHandler: { warning: () => { invalid = true; }, error: () => { invalid = true; }, fatalError: () => { invalid = true; } } }).parseFromString('<root>' + p.wmOriginText + '</root>', 'text/xml');
|
|
50
|
+
const walk = (node) => {
|
|
51
|
+
if (node.nodeType === 3)
|
|
52
|
+
return node.data;
|
|
53
|
+
if (node.nodeType !== 1)
|
|
54
|
+
return '';
|
|
55
|
+
if (['script', 'style'].includes(node.tagName))
|
|
56
|
+
throw Error('回显模板不允许 script/style');
|
|
57
|
+
if (node.hasAttribute('data-id')) {
|
|
58
|
+
const f = lookup(node.getAttribute('data-id'));
|
|
59
|
+
if (node.tagName !== 'span' || node.getAttribute('pluginname') !== 'watermarksetting')
|
|
60
|
+
throw Error('变量必须是 watermarksetting span');
|
|
61
|
+
return '$' + f.id;
|
|
62
|
+
}
|
|
63
|
+
if (node.tagName === 'br')
|
|
64
|
+
return '\n';
|
|
65
|
+
let out = '';
|
|
66
|
+
for (let c = node.firstChild; c; c = c.nextSibling)
|
|
67
|
+
out += walk(c);
|
|
68
|
+
return out + (node.tagName === 'p' ? '\n' : '');
|
|
69
|
+
};
|
|
70
|
+
const actual = walk(doc.documentElement).replace(/\n$/, '');
|
|
71
|
+
if (invalid || actual !== text)
|
|
72
|
+
throw Error('wmText 与 wmOriginText 内容/变量顺序不一致或 HTML 格式无效');
|
|
73
|
+
html = p.wmOriginText;
|
|
74
|
+
}
|
|
75
|
+
const { textTemplate, ...rest } = p;
|
|
76
|
+
return { ...rest, wmText: text, wmOriginText: html };
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=workflow-watermark-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-watermark-template.js","sourceRoot":"","sources":["../../src/services/workflow-watermark-template.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/skill-docs/SKILL.md
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
name: weaver-e10-builder
|
|
3
3
|
display_name: 泛微E10智能搭建Skill
|
|
4
4
|
display_name_en: E10 Builder
|
|
5
|
-
description: 泛微E10智能搭建skill v2(通用版),辅助编写泛微Ebuilder自定义应用,对应CLI版本1.5.
|
|
6
|
-
description_zh: 泛微Ebuilder低代码应用智能搭建工具 v2(通用版),辅助编写自定义应用(表单/流程/列表/动作流/权限/分组/编号等),与 e10-cli 配套使用,当前对应 CLI 版本 1.5.
|
|
7
|
-
description_en: E10 Ebuilder low-code app builder skill v2 (general) — helps build Weaver E10 custom apps (forms/workflows/lists/actionflows/permissions/groups/numbering) via e10-cli, currently paired with CLI 1.5.
|
|
5
|
+
description: 泛微E10智能搭建skill v2(通用版),辅助编写泛微Ebuilder自定义应用,对应CLI版本1.5.16
|
|
6
|
+
description_zh: 泛微Ebuilder低代码应用智能搭建工具 v2(通用版),辅助编写自定义应用(表单/流程/列表/动作流/权限/分组/编号等),与 e10-cli 配套使用,当前对应 CLI 版本 1.5.16。
|
|
7
|
+
description_en: E10 Ebuilder low-code app builder skill v2 (general) — helps build Weaver E10 custom apps (forms/workflows/lists/actionflows/permissions/groups/numbering) via e10-cli, currently paired with CLI 1.5.16.
|
|
8
8
|
category: coding
|
|
9
|
-
version: 1.5.
|
|
9
|
+
version: 1.5.16
|
|
10
10
|
author: 泛微网络科技股份有限公司
|
|
11
11
|
auto: true
|
|
12
12
|
---
|