weaver-e10-builder 1.6.11 → 1.6.12
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-browser-definition.d.ts.map +1 -1
- package/dist/commands/form-browser-definition.js +108 -7
- package/dist/commands/form-browser-definition.js.map +1 -1
- package/dist/commands/form-browser-scope-rules.d.ts +27 -0
- package/dist/commands/form-browser-scope-rules.d.ts.map +1 -0
- package/dist/commands/form-browser-scope-rules.js +141 -0
- package/dist/commands/form-browser-scope-rules.js.map +1 -0
- package/dist/commands/form-browser-scope-tree.d.ts +14 -0
- package/dist/commands/form-browser-scope-tree.d.ts.map +1 -0
- package/dist/commands/form-browser-scope-tree.js +115 -0
- package/dist/commands/form-browser-scope-tree.js.map +1 -0
- package/dist/commands/matrix-maintainer.d.ts +3 -0
- package/dist/commands/matrix-maintainer.d.ts.map +1 -0
- package/dist/commands/matrix-maintainer.js +117 -0
- package/dist/commands/matrix-maintainer.js.map +1 -0
- package/dist/commands/matrix.d.ts.map +1 -1
- package/dist/commands/matrix.js +2 -0
- package/dist/commands/matrix.js.map +1 -1
- package/dist/commands/report-validate.d.ts.map +1 -1
- package/dist/commands/report-validate.js +36 -0
- package/dist/commands/report-validate.js.map +1 -1
- package/dist/commands/role.d.ts.map +1 -1
- package/dist/commands/role.js +354 -0
- package/dist/commands/role.js.map +1 -1
- package/dist/commands/special.d.ts.map +1 -1
- package/dist/commands/special.js +67 -31
- package/dist/commands/special.js.map +1 -1
- package/dist/commands/wf-form.d.ts.map +1 -1
- package/dist/commands/wf-form.js +1 -121
- package/dist/commands/wf-form.js.map +1 -1
- package/dist/commands/workflow-layout-components.d.ts +3 -0
- package/dist/commands/workflow-layout-components.d.ts.map +1 -0
- package/dist/commands/workflow-layout-components.js +36 -0
- package/dist/commands/workflow-layout-components.js.map +1 -0
- package/dist/commands/workflow-node-batch.d.ts +3 -0
- package/dist/commands/workflow-node-batch.d.ts.map +1 -0
- package/dist/commands/workflow-node-batch.js +136 -0
- package/dist/commands/workflow-node-batch.js.map +1 -0
- package/dist/commands/workflow-node-opinion.d.ts +3 -0
- package/dist/commands/workflow-node-opinion.d.ts.map +1 -0
- package/dist/commands/workflow-node-opinion.js +51 -0
- package/dist/commands/workflow-node-opinion.js.map +1 -0
- package/dist/commands/workflow-node-reject.js +1 -1
- package/dist/commands/workflow-node-reject.js.map +1 -1
- package/dist/commands/workflow-node.d.ts.map +1 -1
- package/dist/commands/workflow-node.js +4 -3
- package/dist/commands/workflow-node.js.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/services/actionflow/components/send_message.d.ts.map +1 -1
- package/dist/services/actionflow/components/send_message.js +8 -3
- package/dist/services/actionflow/components/send_message.js.map +1 -1
- package/dist/services/actionflow/context_preflight.js +1 -1
- package/dist/services/actionflow/context_preflight.js.map +1 -1
- package/dist/services/actionflow/formula_service.d.ts +1 -0
- package/dist/services/actionflow/formula_service.d.ts.map +1 -1
- package/dist/services/actionflow/formula_service.js +107 -31
- package/dist/services/actionflow/formula_service.js.map +1 -1
- package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
- package/dist/services/actionflow/preflight_service.js +4 -1
- package/dist/services/actionflow/preflight_service.js.map +1 -1
- package/dist/services/form-layout-describe.d.ts.map +1 -1
- package/dist/services/form-layout-describe.js +3 -2
- package/dist/services/form-layout-describe.js.map +1 -1
- package/dist/services/form-layout-document.d.ts.map +1 -1
- package/dist/services/form-layout-document.js +2 -1
- package/dist/services/form-layout-document.js.map +1 -1
- package/dist/services/matrix-maintainer.d.ts +27 -0
- package/dist/services/matrix-maintainer.d.ts.map +1 -0
- package/dist/services/matrix-maintainer.js +142 -0
- package/dist/services/matrix-maintainer.js.map +1 -0
- package/dist/services/report/drill.d.ts +74 -0
- package/dist/services/report/drill.d.ts.map +1 -0
- package/dist/services/report/drill.js +259 -0
- package/dist/services/report/drill.js.map +1 -0
- package/dist/services/role-function-permission.d.ts +12 -0
- package/dist/services/role-function-permission.d.ts.map +1 -0
- package/dist/services/role-function-permission.js +46 -0
- package/dist/services/role-function-permission.js.map +1 -0
- package/dist/services/special-layout.d.ts +113 -0
- package/dist/services/special-layout.d.ts.map +1 -0
- package/dist/services/special-layout.js +178 -0
- package/dist/services/special-layout.js.map +1 -0
- package/dist/services/workflow-base-settings.d.ts +1 -10
- package/dist/services/workflow-base-settings.d.ts.map +1 -1
- package/dist/services/workflow-field-permission-route.d.ts +15 -41
- package/dist/services/workflow-field-permission-route.d.ts.map +1 -1
- package/dist/services/workflow-field-permission-route.js +23 -8
- package/dist/services/workflow-field-permission-route.js.map +1 -1
- package/dist/services/workflow-layout-components.d.ts +52 -0
- package/dist/services/workflow-layout-components.d.ts.map +1 -0
- package/dist/services/workflow-layout-components.js +66 -0
- package/dist/services/workflow-layout-components.js.map +1 -0
- package/dist/services/workflow-layout-draft.d.ts +49 -0
- package/dist/services/workflow-layout-draft.d.ts.map +1 -0
- package/dist/services/workflow-layout-draft.js +98 -0
- package/dist/services/workflow-layout-draft.js.map +1 -0
- package/dist/services/workflow-node-batch-spec.d.ts +122 -0
- package/dist/services/workflow-node-batch-spec.d.ts.map +1 -0
- package/dist/services/workflow-node-batch-spec.js +496 -0
- package/dist/services/workflow-node-batch-spec.js.map +1 -0
- package/dist/services/workflow-node-batch.d.ts +73 -0
- package/dist/services/workflow-node-batch.d.ts.map +1 -0
- package/dist/services/workflow-node-batch.js +328 -0
- package/dist/services/workflow-node-batch.js.map +1 -0
- package/dist/services/workflow-node-opinion-description.d.ts +12 -0
- package/dist/services/workflow-node-opinion-description.d.ts.map +1 -0
- package/dist/services/workflow-node-opinion-description.js +52 -0
- package/dist/services/workflow-node-opinion-description.js.map +1 -0
- package/dist/services/workflow-node-opinion-layout.d.ts +22 -0
- package/dist/services/workflow-node-opinion-layout.d.ts.map +1 -0
- package/dist/services/workflow-node-opinion-layout.js +113 -0
- package/dist/services/workflow-node-opinion-layout.js.map +1 -0
- package/dist/services/workflow-node-opinion-range.d.ts +21 -0
- package/dist/services/workflow-node-opinion-range.d.ts.map +1 -0
- package/dist/services/workflow-node-opinion-range.js +74 -0
- package/dist/services/workflow-node-opinion-range.js.map +1 -0
- package/dist/services/workflow-node-opinion.d.ts +43 -0
- package/dist/services/workflow-node-opinion.d.ts.map +1 -0
- package/dist/services/workflow-node-opinion.js +198 -0
- package/dist/services/workflow-node-opinion.js.map +1 -0
- package/dist/services/workflow-opinion-settings.d.ts +14 -0
- package/dist/services/workflow-opinion-settings.d.ts.map +1 -1
- package/dist/services/workflow-opinion-settings.js +18 -2
- package/dist/services/workflow-opinion-settings.js.map +1 -1
- package/package.json +1 -1
- package/skill-docs/SKILL.md +164 -162
- package/skill-docs/_catalog.md +3 -2
- package/skill-docs/actionflows/references/components/message/SendMessage.md +32 -30
- package/skill-docs/references/common/guide-plan-template.md +4 -1
- package/skill-docs/references/common/map.md +28 -4
- package/skill-docs/references/common/ref-cli-commands.md +14 -4
- package/skill-docs/references/form/guide-browser-definition.md +2 -219
- package/skill-docs/references/form/guide-browser-scope.md +285 -0
- package/skill-docs/references/form/guide-create-form.md +1 -1
- package/skill-docs/references/hrm/guide-matrix.md +276 -245
- package/skill-docs/references/hrm/guide-role.md +77 -0
- package/skill-docs/references/report/drilldown-report-guide.md +17 -1
- package/skill-docs/references/report/event-hreflink-guide.md +2 -0
- package/skill-docs/references/report/query-condition-api-guide.md +29 -0
- package/skill-docs/references/workflow/guide-layout-components.md +26 -0
- package/skill-docs/references/workflow/guide-node-opinion.md +58 -0
- package/skill-docs/references/workflow/guide-workflow.md +43 -0
- package/skill-docs/references/form/guide-ebuilder-scope.md +0 -82
|
@@ -852,22 +852,104 @@ function sendMessageFormulaSwitchType(formula) {
|
|
|
852
852
|
const configObject = formula?.configObject && typeof formula.configObject === 'object' ? formula.configObject : {};
|
|
853
853
|
return String(config?.switchType || configObject.switchType || '').trim().toLowerCase();
|
|
854
854
|
}
|
|
855
|
-
function
|
|
855
|
+
function sendMessageTargetType(objectType, receiver) {
|
|
856
|
+
const seclevel = receiver.seclevel;
|
|
857
|
+
const attributes = receiver.departmentAttribute ?? receiver.department_attribute;
|
|
858
|
+
const subordinate = Boolean(seclevel) && Array.isArray(attributes) && attributes.includes('subordinate');
|
|
859
|
+
const positionLevel = String(receiver.positionLevel ?? receiver.position_level ?? '');
|
|
860
|
+
const codes = {
|
|
861
|
+
resource: 1, department: subordinate ? 3 : 2, subcompany: subordinate ? 6 : 5,
|
|
862
|
+
role: 10, group: seclevel ? 14 : 1411,
|
|
863
|
+
position: positionLevel === '2' ? 13 : positionLevel === '3' ? 12 : 1311,
|
|
864
|
+
external: 110, employeeScope: 998, employeeShare: 999, employeeOrganization: 997,
|
|
865
|
+
all: 11, allExternal: 1101,
|
|
866
|
+
};
|
|
867
|
+
return codes[objectType];
|
|
868
|
+
}
|
|
869
|
+
function markSendMessageAssign(formula) {
|
|
870
|
+
let config = formula.config;
|
|
871
|
+
if (typeof config === 'string') {
|
|
872
|
+
try {
|
|
873
|
+
config = JSON.parse(config);
|
|
874
|
+
}
|
|
875
|
+
catch {
|
|
876
|
+
throw new Error('SendMessage 接收人公式 config 不是有效 JSON');
|
|
877
|
+
}
|
|
878
|
+
}
|
|
879
|
+
const result = { ...formula, config: { ...(config && typeof config === 'object' ? config : {}), switchType: 'assign' } };
|
|
880
|
+
if (formula.configObject && typeof formula.configObject === 'object')
|
|
881
|
+
result.configObject = { ...formula.configObject, switchType: 'assign' };
|
|
882
|
+
return result;
|
|
883
|
+
}
|
|
884
|
+
function validateSendMessageContextFormula(formula) {
|
|
885
|
+
if (String(formula.type || '') !== '3')
|
|
886
|
+
return;
|
|
887
|
+
let config = formula.config;
|
|
888
|
+
if (typeof config === 'string') {
|
|
889
|
+
try {
|
|
890
|
+
config = JSON.parse(config);
|
|
891
|
+
}
|
|
892
|
+
catch {
|
|
893
|
+
config = {};
|
|
894
|
+
}
|
|
895
|
+
}
|
|
896
|
+
if (!config || typeof config !== 'object')
|
|
897
|
+
config = {};
|
|
898
|
+
const missing = [
|
|
899
|
+
!String(formula.source ?? '').trim() && 'source',
|
|
900
|
+
!String(formula.frontId ?? '').trim() && 'frontId',
|
|
901
|
+
!String(config.comId ?? '').trim() && 'config.comId',
|
|
902
|
+
!String(config.comType ?? '').trim() && 'config.comType',
|
|
903
|
+
!String(config.paramKey ?? '').trim() && 'config.paramKey',
|
|
904
|
+
!String(config.fieldInfo?.tablePrimaryKey ?? '').trim() && 'config.fieldInfo.tablePrimaryKey',
|
|
905
|
+
].filter(Boolean);
|
|
906
|
+
if (missing.length)
|
|
907
|
+
throw new Error(`SendMessage 动态接收人上下文公式缺少 ${missing.join('、')};请先查询 getComponentContext 并选择真实字段`);
|
|
908
|
+
}
|
|
909
|
+
export function validateSendMessageShareList(shareList) {
|
|
910
|
+
if (!Array.isArray(shareList))
|
|
911
|
+
throw new Error('SendMessage.shareList 必须是数组');
|
|
912
|
+
for (const [index, item] of shareList.entries()) {
|
|
913
|
+
if (!item || typeof item !== 'object')
|
|
914
|
+
throw new Error(`SendMessage.shareList[${index}] 必须是对象`);
|
|
915
|
+
const objectType = String(item.objType || '');
|
|
916
|
+
const formula = item[sendMessageObjectValueField(objectType)];
|
|
917
|
+
if (!formula || typeof formula !== 'object')
|
|
918
|
+
continue;
|
|
919
|
+
const switchType = sendMessageFormulaSwitchType(formula);
|
|
920
|
+
if (String(formula.type || '') === '3' && switchType !== 'fixvalue') {
|
|
921
|
+
if (String(item.targetId ?? '') !== 'esbAssign') {
|
|
922
|
+
throw new Error(`SendMessage.shareList[${index}] 动态接收人的 targetId 必须为 esbAssign`);
|
|
923
|
+
}
|
|
924
|
+
validateSendMessageContextFormula(formula);
|
|
925
|
+
}
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
function sendMessageDynamicObjectFormula(receiver, meta, appId, eventId) {
|
|
856
929
|
const kind = String(receiver.kind || receiver.assignmentKind || '').toLowerCase();
|
|
857
930
|
const rawType = String(receiver.type || '').toLowerCase();
|
|
858
931
|
const dynamicKind = kind || (rawType === 'context' || rawType === 'reference' || rawType === 'user_reference' ? rawType : '');
|
|
859
932
|
if (!dynamicKind || dynamicKind === 'fixed')
|
|
860
933
|
return null;
|
|
861
|
-
const
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
934
|
+
const validKinds = ['context', 'reference', 'user_reference', 'system_variable', 'variable', 'constant', 'function', 'formula', 'query_result', 'transform'];
|
|
935
|
+
if (!validKinds.includes(dynamicKind))
|
|
936
|
+
throw new Error(`SendMessage 接收人动态赋值类型 '${dynamicKind}' 不支持`);
|
|
937
|
+
const key = String(receiver.paramKey || receiver.key || receiver.id || '').trim();
|
|
938
|
+
if (!key && !['function', 'query_result'].includes(dynamicKind))
|
|
939
|
+
throw new Error(`SendMessage 接收人 ${dynamicKind} 缺少字段路径或资源 ID`);
|
|
940
|
+
if (['context', 'reference', 'user_reference'].includes(dynamicKind) && !String(receiver.paramKey || receiver.key || '').trim()) {
|
|
941
|
+
throw new Error('SendMessage 动态接收人缺少 getComponentContext 返回的 paramKey');
|
|
942
|
+
}
|
|
943
|
+
const requestedSource = String(receiver.comId || receiver.source || '').trim();
|
|
944
|
+
if (['context', 'reference', 'user_reference'].includes(dynamicKind)
|
|
945
|
+
&& (!requestedSource || ['event', 'event_1', 'trigger'].includes(requestedSource)) && !eventId) {
|
|
946
|
+
throw new Error('SendMessage 动态接收人缺少真实的上游组件来源');
|
|
947
|
+
}
|
|
866
948
|
const label = String(receiver.label || receiver.name || key);
|
|
867
949
|
const formula = dynamicKind === 'system_variable'
|
|
868
950
|
? formulaSystemVar(key)
|
|
869
|
-
: buildAssignBean({ kind: dynamicKind === 'reference' || dynamicKind === 'user_reference' ? 'context' : dynamicKind, paramKey: key, label
|
|
870
|
-
return { formula };
|
|
951
|
+
: buildAssignBean({ ...receiver, kind: dynamicKind === 'reference' || dynamicKind === 'user_reference' ? 'context' : dynamicKind, ...(receiver.paramKey || receiver.key ? { paramKey: receiver.paramKey || receiver.key } : {}), label }, key, 'string', meta, appId, eventId);
|
|
952
|
+
return { formula: markSendMessageAssign(formula) };
|
|
871
953
|
}
|
|
872
954
|
export function buildShareList(receiver, meta, appId = '', eventId = '') {
|
|
873
955
|
if (!receiver || typeof receiver !== 'object')
|
|
@@ -892,24 +974,10 @@ export function buildShareList(receiver, meta, appId = '', eventId = '') {
|
|
|
892
974
|
const receiverFormulaSwitchType = receiverFormula && typeof receiverFormula === 'object'
|
|
893
975
|
? sendMessageFormulaSwitchType(receiverFormula)
|
|
894
976
|
: receiver.config ? sendMessageFormulaSwitchType(receiver) : '';
|
|
895
|
-
const
|
|
896
|
-
?
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
const targetId = switchType === 'fixvalue'
|
|
900
|
-
? String(dynamic.formula.value ?? receiver.value ?? receiver.id ?? '')
|
|
901
|
-
: 'esbAssign';
|
|
902
|
-
const entry = {
|
|
903
|
-
sourceId, permissionId: 'esb', permissionType: 1, objType: objectType,
|
|
904
|
-
// McSendMsgComponent.formatShareBean 仅在这个哨兵值下才会把 obj_id
|
|
905
|
-
// / obj_id_<objType> 反序列化为 FormulaBean 并交给 eval.getObject 求值。
|
|
906
|
-
targetId, sourceType: 1, targetType: 1, id: genSfId(),
|
|
907
|
-
[valueField]: dynamic.formula,
|
|
908
|
-
};
|
|
909
|
-
if (objectType === 'resource')
|
|
910
|
-
entry.user_type = String(receiver.userType || '1');
|
|
911
|
-
return [entry];
|
|
912
|
-
}
|
|
977
|
+
const semanticFormula = receiverFormula && typeof receiverFormula === 'object' && (receiverFormula.kind || receiverFormula.assignmentKind)
|
|
978
|
+
? receiverFormula : null;
|
|
979
|
+
const dynamic = receiverFormulaSwitchType === 'fixvalue' ? null
|
|
980
|
+
: sendMessageDynamicObjectFormula(semanticFormula || receiver, meta, appId, eventId);
|
|
913
981
|
// 前端 transMultData 会把 type=8 多选公式拆成多条 shareList;CLI 也支持
|
|
914
982
|
// 直接传 formula/formulaData,避免把前端 multipleSelect 容器原样塞进单条记录。
|
|
915
983
|
const container = receiver.formula || receiver.formulaData || receiver.objectFormula;
|
|
@@ -923,8 +991,10 @@ export function buildShareList(receiver, meta, appId = '', eventId = '') {
|
|
|
923
991
|
const pname = String(receiver.name ?? receiver.label ?? '').trim();
|
|
924
992
|
persons = pid ? [{ id: pid, name: pname }] : [];
|
|
925
993
|
}
|
|
994
|
+
if (dynamic)
|
|
995
|
+
persons = [{ formula: dynamic.formula }];
|
|
926
996
|
if (!persons.length && containerChildren.length)
|
|
927
|
-
persons = containerChildren.map((formula) => ({ formula }));
|
|
997
|
+
persons = containerChildren.map((formula) => ({ formula: sendMessageFormulaSwitchType(container) === 'assign' ? markSendMessageAssign(formula) : formula }));
|
|
928
998
|
if (!persons.length && singleFormula)
|
|
929
999
|
persons = [{ formula: singleFormula }];
|
|
930
1000
|
if (!persons.length)
|
|
@@ -948,9 +1018,15 @@ export function buildShareList(receiver, meta, appId = '', eventId = '') {
|
|
|
948
1018
|
: p && typeof p === 'object' && p.config
|
|
949
1019
|
? p : null;
|
|
950
1020
|
const suppliedSwitchType = candidateFormula ? sendMessageFormulaSwitchType(candidateFormula) : '';
|
|
1021
|
+
const semanticPerson = suppliedFormula && typeof suppliedFormula === 'object' && (suppliedFormula.kind || suppliedFormula.assignmentKind) ? suppliedFormula : p;
|
|
951
1022
|
const dynamicPerson = suppliedSwitchType === 'fixvalue'
|
|
952
|
-
? null : sendMessageDynamicObjectFormula(
|
|
953
|
-
|
|
1023
|
+
? null : sendMessageDynamicObjectFormula(semanticPerson, meta, appId, eventId);
|
|
1024
|
+
let formula = dynamicPerson?.formula || sendMessageObjectFormula(objectType, p, appId);
|
|
1025
|
+
if (!sendMessageFormulaSwitchType(formula) && ['3', '4', '5', '6', '7', '9', '10'].includes(String(formula.type || ''))) {
|
|
1026
|
+
formula = markSendMessageAssign(formula);
|
|
1027
|
+
}
|
|
1028
|
+
if (sendMessageFormulaSwitchType(formula) === 'assign')
|
|
1029
|
+
validateSendMessageContextFormula(formula);
|
|
954
1030
|
const pid = String(formula.value ?? p.value ?? p.id ?? '').trim();
|
|
955
1031
|
const pname = String(p.name ?? p.label ?? pid).trim();
|
|
956
1032
|
const formulaSwitchType = sendMessageFormulaSwitchType(formula);
|
|
@@ -963,7 +1039,7 @@ export function buildShareList(receiver, meta, appId = '', eventId = '') {
|
|
|
963
1039
|
? 'esbAssign' : (pid || String(formula.value || ''));
|
|
964
1040
|
const entry = {
|
|
965
1041
|
sourceId, permissionId: 'esb', permissionType: 1,
|
|
966
|
-
objType: objectType, targetId, sourceType: 1, targetType:
|
|
1042
|
+
objType: objectType, targetId, sourceType: 1, targetType: sendMessageTargetType(objectType, receiver), id: genSfId(),
|
|
967
1043
|
};
|
|
968
1044
|
if (objectType === 'resource')
|
|
969
1045
|
entry.user_type = userType;
|
|
@@ -1020,7 +1096,7 @@ export function buildPersonFormula(personRef, meta, appId = '', forSendMessage =
|
|
|
1020
1096
|
return formulaSystemVar('{userid}');
|
|
1021
1097
|
if (ptype === 'context' || ptype === 'user_reference') {
|
|
1022
1098
|
const ckey = String(personRef.key || personRef.paramKey || pid || '');
|
|
1023
|
-
return buildAssignBean({ kind: 'context', paramKey: ckey, label: String(personRef.label || personRef.name || ckey) }, ckey, 'string', meta, appId, String(eventId || meta._upstream_w_id || ''));
|
|
1099
|
+
return buildAssignBean({ ...personRef, kind: 'context', paramKey: ckey, label: String(personRef.label || personRef.name || ckey) }, ckey, 'string', meta, appId, String(eventId || meta._upstream_w_id || ''));
|
|
1024
1100
|
}
|
|
1025
1101
|
return formulaFixed(pid || personRef.name || '');
|
|
1026
1102
|
}
|