sy-form-components 0.2.3 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +96 -12
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +101 -17
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -4331,26 +4331,79 @@ var TASK_STATUS_META = {
|
|
|
4331
4331
|
};
|
|
4332
4332
|
|
|
4333
4333
|
// src/core/processApi.ts
|
|
4334
|
+
var normalizeProcessTask = (value) => {
|
|
4335
|
+
const taskId = value?.taskId ?? value?.id ?? value?.task_id ?? "";
|
|
4336
|
+
return {
|
|
4337
|
+
...value,
|
|
4338
|
+
id: value?.id ?? taskId,
|
|
4339
|
+
taskId,
|
|
4340
|
+
nodeId: value?.nodeId ?? value?.node_id ?? "",
|
|
4341
|
+
nodeType: value?.nodeType ?? value?.node_type ?? "approval",
|
|
4342
|
+
nodeName: value?.nodeName ?? value?.title ?? value?.name ?? value?.nodeId ?? "\u5BA1\u6279\u8282\u70B9",
|
|
4343
|
+
status: value?.status ?? "pending",
|
|
4344
|
+
assigneeId: value?.assigneeId ?? value?.assignee
|
|
4345
|
+
};
|
|
4346
|
+
};
|
|
4347
|
+
var normalizeProcessTasks = (value) => {
|
|
4348
|
+
if (Array.isArray(value)) return value.map(normalizeProcessTask);
|
|
4349
|
+
if (!value || typeof value !== "object") return [];
|
|
4350
|
+
if (Array.isArray(value.tasks)) return value.tasks.map(normalizeProcessTask);
|
|
4351
|
+
if (Array.isArray(value.currentTasks)) return value.currentTasks.map(normalizeProcessTask);
|
|
4352
|
+
if (Array.isArray(value.list)) return value.list.map(normalizeProcessTask);
|
|
4353
|
+
if (Array.isArray(value.items)) return value.items.map(normalizeProcessTask);
|
|
4354
|
+
if (Array.isArray(value.records)) return value.records.map(normalizeProcessTask);
|
|
4355
|
+
return [];
|
|
4356
|
+
};
|
|
4357
|
+
var normalizeProcessBasic = (value) => {
|
|
4358
|
+
const raw = value ?? {};
|
|
4359
|
+
const instance = raw.instance ?? raw;
|
|
4360
|
+
const currentTask = raw.currentTask ? normalizeProcessTask(raw.currentTask) : void 0;
|
|
4361
|
+
return {
|
|
4362
|
+
...raw,
|
|
4363
|
+
instanceId: raw.instanceId ?? raw.id ?? instance.formInstanceId ?? instance.id,
|
|
4364
|
+
processStatus: raw.processStatus ?? raw.status ?? instance.processStatus ?? instance.status,
|
|
4365
|
+
formUuid: raw.formUuid ?? instance.formUuid ?? instance.definition?.formUuid,
|
|
4366
|
+
appType: raw.appType ?? instance.appType ?? instance.definition?.appType,
|
|
4367
|
+
title: raw.title ?? instance.title,
|
|
4368
|
+
originatorId: raw.originatorId ?? instance.originatorId ?? instance.startedBy,
|
|
4369
|
+
originatorName: raw.originatorName ?? instance.originatorName ?? instance.startedByName,
|
|
4370
|
+
originatorDepartment: raw.originatorDepartment ?? instance.originatorDepartment ?? instance.startedDepartmentName,
|
|
4371
|
+
createdAt: raw.createdAt ?? instance.createdAt ?? instance.startedAt,
|
|
4372
|
+
currentTask
|
|
4373
|
+
};
|
|
4374
|
+
};
|
|
4375
|
+
var normalizeApprovalPermission = (value) => {
|
|
4376
|
+
const raw = value ?? {};
|
|
4377
|
+
const currentTasks = normalizeProcessTasks(raw.currentTasks);
|
|
4378
|
+
const hasPermission = Boolean(raw.hasPermission ?? raw.isApprover ?? currentTasks.length > 0);
|
|
4379
|
+
return {
|
|
4380
|
+
...raw,
|
|
4381
|
+
hasPermission,
|
|
4382
|
+
isApprover: Boolean(raw.isApprover ?? hasPermission),
|
|
4383
|
+
canUndo: Boolean(raw.canUndo ?? raw.canWithdraw),
|
|
4384
|
+
currentTasks
|
|
4385
|
+
};
|
|
4386
|
+
};
|
|
4334
4387
|
async function getProcessBasic(request, formInstId) {
|
|
4335
4388
|
const response = await request({
|
|
4336
4389
|
url: `/workflow/instance/${formInstId}/basic`,
|
|
4337
4390
|
method: "get"
|
|
4338
4391
|
});
|
|
4339
|
-
return response.data || response.result;
|
|
4392
|
+
return normalizeProcessBasic(response.data || response.result);
|
|
4340
4393
|
}
|
|
4341
4394
|
async function getProcessProgress(request, formInstId) {
|
|
4342
4395
|
const response = await request({
|
|
4343
|
-
url: `/workflow/instance/${formInstId}`,
|
|
4396
|
+
url: `/workflow/instance/${formInstId}/all-tasks`,
|
|
4344
4397
|
method: "get"
|
|
4345
4398
|
});
|
|
4346
|
-
return response.data || response.result
|
|
4399
|
+
return normalizeProcessTasks(response.data || response.result);
|
|
4347
4400
|
}
|
|
4348
4401
|
async function checkUserApproval(request, formInstId) {
|
|
4349
4402
|
const response = await request({
|
|
4350
4403
|
url: `/workflow/instance/${formInstId}/permission`,
|
|
4351
4404
|
method: "get"
|
|
4352
4405
|
});
|
|
4353
|
-
return response.data || response.result;
|
|
4406
|
+
return normalizeApprovalPermission(response.data || response.result);
|
|
4354
4407
|
}
|
|
4355
4408
|
async function handleApproval(request, params) {
|
|
4356
4409
|
const response = await request({
|
|
@@ -5134,7 +5187,23 @@ function useFormDetail(options) {
|
|
|
5134
5187
|
}
|
|
5135
5188
|
|
|
5136
5189
|
// src/hooks/useProcessDetail.ts
|
|
5137
|
-
import { useState as useState21, useEffect as useEffect28, useCallback as useCallback8, useRef as useRef8 } from "react";
|
|
5190
|
+
import { useState as useState21, useEffect as useEffect28, useCallback as useCallback8, useRef as useRef8, useMemo as useMemo8 } from "react";
|
|
5191
|
+
var DEFAULT_APPROVAL_ACTIONS = [
|
|
5192
|
+
{ action: "agree", name: { zh_CN: "\u540C\u610F" } },
|
|
5193
|
+
{ action: "rejected", name: { zh_CN: "\u62D2\u7EDD" } }
|
|
5194
|
+
];
|
|
5195
|
+
var WITHDRAW_ACTION = { action: "withdraw", name: { zh_CN: "\u64A4\u9500" } };
|
|
5196
|
+
function mergeCurrentTask(processTask, approvalTask) {
|
|
5197
|
+
if (!approvalTask) return processTask ?? null;
|
|
5198
|
+
if (!processTask) return approvalTask;
|
|
5199
|
+
return {
|
|
5200
|
+
...processTask,
|
|
5201
|
+
...approvalTask,
|
|
5202
|
+
nodeName: processTask.nodeName || approvalTask.nodeName,
|
|
5203
|
+
title: processTask.title || approvalTask.title,
|
|
5204
|
+
actions: processTask.actions ?? approvalTask.actions
|
|
5205
|
+
};
|
|
5206
|
+
}
|
|
5138
5207
|
function useProcessDetail(options) {
|
|
5139
5208
|
const { formUuid, appType, formInstanceId, fieldIds } = options;
|
|
5140
5209
|
const { api } = useFormContext();
|
|
@@ -5147,6 +5216,7 @@ function useProcessDetail(options) {
|
|
|
5147
5216
|
const [instanceInfo, setInstanceInfo] = useState21(null);
|
|
5148
5217
|
const [isApprover, setIsApprover] = useState21(false);
|
|
5149
5218
|
const [canWithdraw, setCanWithdraw] = useState21(false);
|
|
5219
|
+
const [approvalTasks, setApprovalTasks] = useState21([]);
|
|
5150
5220
|
const [permissions, setPermissions] = useState21(null);
|
|
5151
5221
|
const [processDefinition, setProcessDefinition] = useState21(null);
|
|
5152
5222
|
const mountedRef = useRef8(true);
|
|
@@ -5156,7 +5226,10 @@ function useProcessDetail(options) {
|
|
|
5156
5226
|
mountedRef.current = false;
|
|
5157
5227
|
};
|
|
5158
5228
|
}, []);
|
|
5159
|
-
const currentTask =
|
|
5229
|
+
const currentTask = useMemo8(
|
|
5230
|
+
() => mergeCurrentTask(processInfo?.currentTask, approvalTasks[0]),
|
|
5231
|
+
[processInfo?.currentTask, approvalTasks]
|
|
5232
|
+
);
|
|
5160
5233
|
const processStatus = processInfo?.processStatus ?? null;
|
|
5161
5234
|
const isOriginatorReturn = currentTask?.nodeType === "originator_return";
|
|
5162
5235
|
const isProcessCompleted = processStatus === "completed" || processStatus === "terminated";
|
|
@@ -5167,7 +5240,14 @@ function useProcessDetail(options) {
|
|
|
5167
5240
|
isApprover,
|
|
5168
5241
|
mode
|
|
5169
5242
|
});
|
|
5170
|
-
const activeActions =
|
|
5243
|
+
const activeActions = useMemo8(() => {
|
|
5244
|
+
if (!isApprover) return [];
|
|
5245
|
+
const actions = currentTask?.actions && currentTask.actions.length > 0 ? [...currentTask.actions] : [...DEFAULT_APPROVAL_ACTIONS];
|
|
5246
|
+
if (canWithdraw && !actions.some((action) => action.action === "withdraw")) {
|
|
5247
|
+
actions.push(WITHDRAW_ACTION);
|
|
5248
|
+
}
|
|
5249
|
+
return actions;
|
|
5250
|
+
}, [isApprover, currentTask?.actions, canWithdraw]);
|
|
5171
5251
|
const loadData = useCallback8(async () => {
|
|
5172
5252
|
if (!mountedRef.current) return;
|
|
5173
5253
|
setLoading(true);
|
|
@@ -5182,6 +5262,7 @@ function useProcessDetail(options) {
|
|
|
5182
5262
|
setProcessInfo(basicResult);
|
|
5183
5263
|
setIsApprover(approvalResult?.isApprover ?? false);
|
|
5184
5264
|
setCanWithdraw(approvalResult?.canUndo ?? false);
|
|
5265
|
+
setApprovalTasks(approvalResult?.currentTasks ?? []);
|
|
5185
5266
|
setPermissions(permResult);
|
|
5186
5267
|
setInstanceInfo(formResult);
|
|
5187
5268
|
setFormData(extractFormValues(formResult, fieldIds));
|
|
@@ -5212,6 +5293,7 @@ function useProcessDetail(options) {
|
|
|
5212
5293
|
setProcessInfo(null);
|
|
5213
5294
|
setFormData(null);
|
|
5214
5295
|
setInstanceInfo(null);
|
|
5296
|
+
setApprovalTasks([]);
|
|
5215
5297
|
}
|
|
5216
5298
|
} finally {
|
|
5217
5299
|
if (mountedRef.current) {
|
|
@@ -5937,15 +6019,17 @@ var ApprovalTimeline = ({
|
|
|
5937
6019
|
showRemarks = true,
|
|
5938
6020
|
compactMode = false
|
|
5939
6021
|
}) => {
|
|
5940
|
-
|
|
6022
|
+
const taskList = Array.isArray(tasks) ? tasks : [];
|
|
6023
|
+
if (taskList.length === 0) {
|
|
5941
6024
|
return /* @__PURE__ */ jsx77("div", { className: `bg-white rounded-xl shadow-sm border border-gray-100 p-6 ${className}`, children: /* @__PURE__ */ jsx77("p", { className: "text-sm text-gray-400 text-center", children: "\u6682\u65E0\u5BA1\u6279\u8BB0\u5F55" }) });
|
|
5942
6025
|
}
|
|
5943
|
-
return /* @__PURE__ */ jsx77("div", { className: `${className}`, children:
|
|
6026
|
+
return /* @__PURE__ */ jsx77("div", { className: `${className}`, children: taskList.map((task, index) => {
|
|
6027
|
+
const taskKey = task.taskId || task.id || `${task.nodeId}-${index}`;
|
|
5944
6028
|
if (renderNode) {
|
|
5945
|
-
return /* @__PURE__ */ jsx77("div", { children: renderNode(task, index) },
|
|
6029
|
+
return /* @__PURE__ */ jsx77("div", { children: renderNode(task, index) }, taskKey);
|
|
5946
6030
|
}
|
|
5947
6031
|
const phase = getNodePhase(task);
|
|
5948
|
-
const isLast = index ===
|
|
6032
|
+
const isLast = index === taskList.length - 1;
|
|
5949
6033
|
const statusMeta = TASK_STATUS_META[task.status];
|
|
5950
6034
|
return /* @__PURE__ */ jsxs23("div", { className: "flex gap-4", children: [
|
|
5951
6035
|
/* @__PURE__ */ jsxs23("div", { className: "flex flex-col items-center", children: [
|
|
@@ -5999,7 +6083,7 @@ var ApprovalTimeline = ({
|
|
|
5999
6083
|
]
|
|
6000
6084
|
}
|
|
6001
6085
|
) })
|
|
6002
|
-
] },
|
|
6086
|
+
] }, taskKey);
|
|
6003
6087
|
}) });
|
|
6004
6088
|
};
|
|
6005
6089
|
|
|
@@ -6595,7 +6679,7 @@ var FormSubmitTemplate = ({
|
|
|
6595
6679
|
};
|
|
6596
6680
|
|
|
6597
6681
|
// src/templates/FormDetailTemplate.tsx
|
|
6598
|
-
import { useCallback as useCallback14, useMemo as
|
|
6682
|
+
import { useCallback as useCallback14, useMemo as useMemo9 } from "react";
|
|
6599
6683
|
|
|
6600
6684
|
// src/templates/PageSkeleton.tsx
|
|
6601
6685
|
import { Skeleton as Skeleton3 } from "antd";
|
|
@@ -6675,7 +6759,7 @@ var InnerDetailContent = ({
|
|
|
6675
6759
|
onDelete,
|
|
6676
6760
|
onSave
|
|
6677
6761
|
}) => {
|
|
6678
|
-
const fieldIds =
|
|
6762
|
+
const fieldIds = useMemo9(() => schema.fields.map((field) => field.fieldId), [schema.fields]);
|
|
6679
6763
|
const {
|
|
6680
6764
|
loading,
|
|
6681
6765
|
mode,
|
|
@@ -6800,7 +6884,7 @@ var FormDetailTemplate = (props) => {
|
|
|
6800
6884
|
};
|
|
6801
6885
|
|
|
6802
6886
|
// src/templates/ProcessDetailTemplate.tsx
|
|
6803
|
-
import { useCallback as useCallback15, useMemo as
|
|
6887
|
+
import { useCallback as useCallback15, useMemo as useMemo10, useRef as useRef12 } from "react";
|
|
6804
6888
|
import { Fragment as Fragment7, jsx as jsx85, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
6805
6889
|
function FormDataBridge({
|
|
6806
6890
|
formDataRef
|
|
@@ -6822,7 +6906,7 @@ var InnerProcessContent = ({
|
|
|
6822
6906
|
onActionComplete
|
|
6823
6907
|
}) => {
|
|
6824
6908
|
const formDataRef = useRef12(void 0);
|
|
6825
|
-
const fieldIds =
|
|
6909
|
+
const fieldIds = useMemo10(() => schema.fields.map((field) => field.fieldId), [schema.fields]);
|
|
6826
6910
|
const {
|
|
6827
6911
|
loading,
|
|
6828
6912
|
processInfo,
|
|
@@ -6844,7 +6928,7 @@ var InnerProcessContent = ({
|
|
|
6844
6928
|
formInstanceId,
|
|
6845
6929
|
formUuid,
|
|
6846
6930
|
appType,
|
|
6847
|
-
currentTaskId: currentTask?.taskId,
|
|
6931
|
+
currentTaskId: currentTask?.taskId ?? currentTask?.id,
|
|
6848
6932
|
onActionComplete: async (action) => {
|
|
6849
6933
|
onActionComplete?.(action);
|
|
6850
6934
|
await refreshProgress();
|