@tachybase/plugin-workflow-approval 1.5.1 → 1.6.1
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/client/base/ApprovalPane.schema.d.ts +81 -11
- package/dist/client/common/components/ApprovalsSummary.d.ts +11 -0
- package/dist/client/common/components/SimpleTable.d.ts +24 -0
- package/dist/client/common/components/WorkflowApproval.d.ts +4 -0
- package/dist/client/common/components/index.d.ts +5 -0
- package/dist/client/common/tools/cleanAssociationIds.d.ts +9 -0
- package/dist/client/index.js +34 -70
- package/dist/client/user-interface/h5/common/approval-columns/summary.column.d.ts +7 -0
- package/dist/client/user-interface/h5/common/processSummary.d.ts +14 -0
- package/dist/client/user-interface/h5/todos/component/TabApprovalItem.d.ts +1 -1
- package/dist/common/constants.d.ts +6 -0
- package/dist/common/constants.js +14 -2
- package/dist/common/interface.d.js +15 -0
- package/dist/common/utils.d.ts +2 -0
- package/dist/common/utils.js +46 -0
- package/dist/externalVersion.js +10 -9
- package/dist/locale/en-US.json +3 -1
- package/dist/locale/zh-CN.json +2 -1
- package/dist/server/actions/approvalCarbonCopy.d.ts +1 -1
- package/dist/server/actions/approvalCarbonCopy.js +7 -7
- package/dist/server/actions/approvalRecords.d.ts +2 -2
- package/dist/server/actions/approvalRecords.js +19 -19
- package/dist/server/actions/approvals.d.ts +6 -6
- package/dist/server/actions/approvals.js +65 -82
- package/dist/server/actions/index.js +1 -1
- package/dist/server/actions/workflows.d.ts +1 -1
- package/dist/server/actions/workflows.js +3 -3
- package/dist/server/plugin.js +0 -3
- package/dist/server/tools.d.ts +4 -7
- package/dist/server/tools.js +253 -12
- package/dist/server/triggers/Approval.d.ts +3 -3
- package/dist/server/triggers/Approval.js +32 -22
- package/dist/server/utils.d.ts +2 -2
- package/dist/server/utils.js +4 -4
- package/package.json +9 -9
|
@@ -58,7 +58,9 @@ const _ApprovalTrigger = class _ApprovalTrigger extends import_module_workflow.T
|
|
|
58
58
|
return;
|
|
59
59
|
}
|
|
60
60
|
const [dataSourceName, collectionName] = (0, import_server.parseCollectionName)(approval.collectionName);
|
|
61
|
-
const
|
|
61
|
+
const dataSource = this.workflow.app.dataSourceManager.dataSources.get(dataSourceName);
|
|
62
|
+
const collection = dataSource.collectionManager.getCollection(collectionName);
|
|
63
|
+
const { repository } = collection;
|
|
62
64
|
const data = await repository.findOne({
|
|
63
65
|
filterByTk: approval.get("dataKey"),
|
|
64
66
|
appends: workflow.config.appends,
|
|
@@ -72,7 +74,10 @@ const _ApprovalTrigger = class _ApprovalTrigger extends import_module_workflow.T
|
|
|
72
74
|
applicantRoleName: approval.applicantRoleName,
|
|
73
75
|
summary: (0, import_tools.getSummary)({
|
|
74
76
|
summaryConfig: workflow.config.summary,
|
|
75
|
-
data
|
|
77
|
+
data,
|
|
78
|
+
collection,
|
|
79
|
+
// Fix: type assertion to bypass typing error
|
|
80
|
+
app: this.workflow.app
|
|
76
81
|
}),
|
|
77
82
|
collectionName: approval.collectionName
|
|
78
83
|
},
|
|
@@ -170,26 +175,26 @@ const _ApprovalTrigger = class _ApprovalTrigger extends import_module_workflow.T
|
|
|
170
175
|
await approval.update({ status }, { transaction });
|
|
171
176
|
await approvalExecution.update({ status: execution.status }, { transaction });
|
|
172
177
|
};
|
|
173
|
-
this.middleware = async (
|
|
174
|
-
if (!
|
|
178
|
+
this.middleware = async (ctx, next) => {
|
|
179
|
+
if (!ctx.action) {
|
|
175
180
|
return;
|
|
176
181
|
}
|
|
177
182
|
const {
|
|
178
183
|
resourceName,
|
|
179
184
|
actionName,
|
|
180
185
|
params: { triggerWorkflows, beforeWorkflows }
|
|
181
|
-
} =
|
|
186
|
+
} = ctx.action;
|
|
182
187
|
if (beforeWorkflows) {
|
|
183
|
-
this.collectionTriggerAction(
|
|
188
|
+
this.collectionTriggerAction(ctx, beforeWorkflows);
|
|
184
189
|
}
|
|
185
190
|
if (resourceName === "workflows" && actionName === "trigger") {
|
|
186
|
-
return this.workflowTriggerAction(
|
|
191
|
+
return this.workflowTriggerAction(ctx, next);
|
|
187
192
|
}
|
|
188
193
|
await next();
|
|
189
194
|
if (!triggerWorkflows || !["create", "update"].includes(actionName)) {
|
|
190
195
|
return;
|
|
191
196
|
}
|
|
192
|
-
this.collectionTriggerAction(
|
|
197
|
+
this.collectionTriggerAction(ctx, triggerWorkflows);
|
|
193
198
|
};
|
|
194
199
|
const { db } = workflow.app;
|
|
195
200
|
db.on("approvals.afterSave", this.triggerHandler);
|
|
@@ -197,10 +202,10 @@ const _ApprovalTrigger = class _ApprovalTrigger extends import_module_workflow.T
|
|
|
197
202
|
db.on("executions.afterUpdate", this.onExecutionUpdate);
|
|
198
203
|
workflow.app.use(this.middleware, { tag: "workflow-trigger", after: "dataSource" });
|
|
199
204
|
}
|
|
200
|
-
async workflowTriggerAction(
|
|
201
|
-
const { triggerWorkflows, values } =
|
|
205
|
+
async workflowTriggerAction(ctx, next) {
|
|
206
|
+
const { triggerWorkflows, values } = ctx.action.params;
|
|
202
207
|
if (!triggerWorkflows) {
|
|
203
|
-
return
|
|
208
|
+
return ctx.throw(400);
|
|
204
209
|
}
|
|
205
210
|
const triggers = triggerWorkflows.split(",").map((trigger) => trigger.split("!"));
|
|
206
211
|
const workflowRepo = this.workflow.db.getRepository("workflows");
|
|
@@ -212,7 +217,7 @@ const _ApprovalTrigger = class _ApprovalTrigger extends import_module_workflow.T
|
|
|
212
217
|
enabled: true
|
|
213
218
|
}
|
|
214
219
|
});
|
|
215
|
-
|
|
220
|
+
ctx.status = 202;
|
|
216
221
|
await next();
|
|
217
222
|
workflows.forEach(async (workflow) => {
|
|
218
223
|
const trigger = triggers.find((trigger2) => trigger2[0] === workflow.key);
|
|
@@ -224,7 +229,7 @@ const _ApprovalTrigger = class _ApprovalTrigger extends import_module_workflow.T
|
|
|
224
229
|
// createdBy: currentUser.id,
|
|
225
230
|
// updatedById: currentUser.id,
|
|
226
231
|
},
|
|
227
|
-
context
|
|
232
|
+
context: ctx
|
|
228
233
|
});
|
|
229
234
|
const approvalRepo = this.workflow.db.getRepository("approvals");
|
|
230
235
|
await approvalRepo.create({
|
|
@@ -239,15 +244,18 @@ const _ApprovalTrigger = class _ApprovalTrigger extends import_module_workflow.T
|
|
|
239
244
|
workflowKey: workflow.key,
|
|
240
245
|
summary: (0, import_tools.getSummary)({
|
|
241
246
|
summaryConfig: workflow.config.summary,
|
|
242
|
-
data
|
|
247
|
+
data,
|
|
248
|
+
collection: collecton,
|
|
249
|
+
// Fix: type assertion to bypass typing error
|
|
250
|
+
app: this.workflow.app
|
|
243
251
|
})
|
|
244
252
|
},
|
|
245
|
-
context
|
|
253
|
+
context: ctx
|
|
246
254
|
});
|
|
247
255
|
});
|
|
248
256
|
}
|
|
249
|
-
async collectionTriggerAction(
|
|
250
|
-
const dataSourceHeader =
|
|
257
|
+
async collectionTriggerAction(ctx, workflowList) {
|
|
258
|
+
const dataSourceHeader = ctx.get("x-data-source") || "main";
|
|
251
259
|
const approvalRepo = this.workflow.db.getRepository("approvals");
|
|
252
260
|
const triggers = workflowList.split(",").map((trigger) => trigger.split("!"));
|
|
253
261
|
const triggersKeysMap = new Map(triggers);
|
|
@@ -257,7 +265,7 @@ const _ApprovalTrigger = class _ApprovalTrigger extends import_module_workflow.T
|
|
|
257
265
|
for (const workflow of workflows) {
|
|
258
266
|
const [dataSourceName, collectionName] = (0, import_server.parseCollectionName)(workflow.config.collection);
|
|
259
267
|
const trigger = triggers.find((trigger2) => trigger2[0] === workflow.key);
|
|
260
|
-
const { body: data } =
|
|
268
|
+
const { body: data } = ctx;
|
|
261
269
|
if (!data) {
|
|
262
270
|
return;
|
|
263
271
|
}
|
|
@@ -285,7 +293,7 @@ const _ApprovalTrigger = class _ApprovalTrigger extends import_module_workflow.T
|
|
|
285
293
|
}
|
|
286
294
|
}
|
|
287
295
|
}
|
|
288
|
-
const collection =
|
|
296
|
+
const collection = ctx.tego.dataSourceManager.dataSources.get(dataSourceName).collectionManager.getCollection(collectionName);
|
|
289
297
|
if (!collection || collection.model !== payload.constructor) {
|
|
290
298
|
return;
|
|
291
299
|
}
|
|
@@ -299,13 +307,15 @@ const _ApprovalTrigger = class _ApprovalTrigger extends import_module_workflow.T
|
|
|
299
307
|
// updatedBy: currentUser.id,
|
|
300
308
|
workflowId: workflow.id,
|
|
301
309
|
workflowKey: workflow.key,
|
|
302
|
-
applicantRoleName:
|
|
310
|
+
applicantRoleName: ctx.state.currentRole,
|
|
303
311
|
summary: (0, import_tools.getSummary)({
|
|
304
312
|
summaryConfig: workflow.config.summary,
|
|
305
|
-
data: dataCurrent
|
|
313
|
+
data: dataCurrent,
|
|
314
|
+
collection,
|
|
315
|
+
app: ctx.app
|
|
306
316
|
})
|
|
307
317
|
},
|
|
308
|
-
context
|
|
318
|
+
context: ctx
|
|
309
319
|
});
|
|
310
320
|
});
|
|
311
321
|
}
|
package/dist/server/utils.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export declare function findUniqueObjects(sourceArray: any[], uniqueByArray: string[], compareByKey?: string, compareByFunc?: (a: any, b: any) => number): any[];
|
|
2
|
-
export declare function getWorkflow(
|
|
3
|
-
export declare function getWorkflowByKey(
|
|
2
|
+
export declare function getWorkflow(ctx: any, workflowId: any): Promise<any>;
|
|
3
|
+
export declare function getWorkflowByKey(ctx: any, workflowKey: any): Promise<any>;
|
package/dist/server/utils.js
CHANGED
|
@@ -35,17 +35,17 @@ function findUniqueObjects(sourceArray = [], uniqueByArray, compareByKey = "", c
|
|
|
35
35
|
result = Object.values(uniqueMap);
|
|
36
36
|
return result;
|
|
37
37
|
}
|
|
38
|
-
async function getWorkflow(
|
|
38
|
+
async function getWorkflow(ctx, workflowId) {
|
|
39
39
|
if (workflowId) {
|
|
40
|
-
return await
|
|
40
|
+
return await ctx.db.getRepository("workflows").findOne({
|
|
41
41
|
filterByTk: workflowId
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
44
|
return null;
|
|
45
45
|
}
|
|
46
|
-
async function getWorkflowByKey(
|
|
46
|
+
async function getWorkflowByKey(ctx, workflowKey) {
|
|
47
47
|
if (workflowKey) {
|
|
48
|
-
return await
|
|
48
|
+
return await ctx.db.getRepository("workflows").findOne({
|
|
49
49
|
filter: {
|
|
50
50
|
key: workflowKey,
|
|
51
51
|
enabled: true
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tachybase/plugin-workflow-approval",
|
|
3
3
|
"displayName": "Approval",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.6.1",
|
|
5
5
|
"description": "Approval base in Workflow",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"Approval",
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
],
|
|
10
10
|
"main": "dist/server/index.js",
|
|
11
11
|
"devDependencies": {
|
|
12
|
-
"@ant-design/icons": "^
|
|
13
|
-
"@tachybase/schema": "1.
|
|
14
|
-
"@tachybase/test": "1.
|
|
15
|
-
"@tego/client": "1.
|
|
16
|
-
"@tego/server": "1.
|
|
12
|
+
"@ant-design/icons": "^6.1.0",
|
|
13
|
+
"@tachybase/schema": "1.6.0-alpha.9",
|
|
14
|
+
"@tachybase/test": "1.6.0-alpha.9",
|
|
15
|
+
"@tego/client": "1.6.0-alpha.9",
|
|
16
|
+
"@tego/server": "1.6.0-alpha.9",
|
|
17
17
|
"@types/file-saver": "^2.0.7",
|
|
18
18
|
"@types/lodash": "^4.17.20",
|
|
19
19
|
"ahooks": "^3.9.0",
|
|
@@ -27,9 +27,9 @@
|
|
|
27
27
|
"react-i18next": "16.2.1",
|
|
28
28
|
"react-router-dom": "6.28.1",
|
|
29
29
|
"sequelize": "6.37.5",
|
|
30
|
-
"@tachybase/
|
|
31
|
-
"@tachybase/module-workflow": "1.
|
|
32
|
-
"@tachybase/
|
|
30
|
+
"@tachybase/client": "1.6.1",
|
|
31
|
+
"@tachybase/module-workflow": "1.6.1",
|
|
32
|
+
"@tachybase/module-ui-schema": "1.6.1"
|
|
33
33
|
},
|
|
34
34
|
"description.zh-CN": "审批系统是一个强大的BPM工具,为业务流程自动化提供基础支持,同时具备高度灵活性和可扩展性,确保审批流程的效率和合规性,助力企业释放创新潜力。",
|
|
35
35
|
"displayName.zh-CN": "审批"
|