@ebuilding/biz-form 2.0.0

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.
Files changed (100) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +0 -0
  3. package/advanced/index.d.ts +1 -0
  4. package/advanced/src/index.module.d.ts +8 -0
  5. package/advanced/src/main/index.d.ts +29 -0
  6. package/advanced/src/public_api.d.ts +2 -0
  7. package/basic/index.d.ts +1 -0
  8. package/basic/src/basic.d.ts +53 -0
  9. package/basic/src/basic.drawer.d.ts +30 -0
  10. package/basic/src/default/index.d.ts +27 -0
  11. package/basic/src/index.module.d.ts +9 -0
  12. package/basic/src/main/index.d.ts +32 -0
  13. package/basic/src/public_api.d.ts +3 -0
  14. package/custom/index.d.ts +1 -0
  15. package/custom/src/default/index.d.ts +30 -0
  16. package/custom/src/index.module.d.ts +9 -0
  17. package/custom/src/main/index.d.ts +27 -0
  18. package/custom/src/public_api.d.ts +3 -0
  19. package/design/index.d.ts +1 -0
  20. package/design/src/default/index.d.ts +25 -0
  21. package/design/src/index.module.d.ts +8 -0
  22. package/design/src/public_api.d.ts +2 -0
  23. package/empInfo/index.d.ts +1 -0
  24. package/empInfo/src/children/index.d.ts +28 -0
  25. package/empInfo/src/default/index.d.ts +34 -0
  26. package/empInfo/src/index.module.d.ts +9 -0
  27. package/empInfo/src/public_api.d.ts +2 -0
  28. package/empInfo/src/service.d.ts +14 -0
  29. package/fesm2022/advanced.mjs +114 -0
  30. package/fesm2022/advanced.mjs.map +1 -0
  31. package/fesm2022/basic.mjs +431 -0
  32. package/fesm2022/basic.mjs.map +1 -0
  33. package/fesm2022/custom.mjs +156 -0
  34. package/fesm2022/custom.mjs.map +1 -0
  35. package/fesm2022/design.mjs +109 -0
  36. package/fesm2022/design.mjs.map +1 -0
  37. package/fesm2022/ebuilding-biz-form.mjs +7 -0
  38. package/fesm2022/ebuilding-biz-form.mjs.map +1 -0
  39. package/fesm2022/empInfo.mjs +273 -0
  40. package/fesm2022/empInfo.mjs.map +1 -0
  41. package/fesm2022/history.mjs +119 -0
  42. package/fesm2022/history.mjs.map +1 -0
  43. package/fesm2022/page.mjs +200 -0
  44. package/fesm2022/page.mjs.map +1 -0
  45. package/fesm2022/preview.mjs +317 -0
  46. package/fesm2022/preview.mjs.map +1 -0
  47. package/fesm2022/rule.mjs +204 -0
  48. package/fesm2022/rule.mjs.map +1 -0
  49. package/fesm2022/service.mjs +813 -0
  50. package/fesm2022/service.mjs.map +1 -0
  51. package/fesm2022/srv.basic.default.mjs +48 -0
  52. package/fesm2022/srv.basic.default.mjs.map +1 -0
  53. package/fesm2022/srv.basic.drawer.mjs +70 -0
  54. package/fesm2022/srv.basic.drawer.mjs.map +1 -0
  55. package/fesm2022/srv.basic.flow.mjs +353 -0
  56. package/fesm2022/srv.basic.flow.mjs.map +1 -0
  57. package/fesm2022/srv.basic.mjs +813 -0
  58. package/fesm2022/srv.basic.mjs.map +1 -0
  59. package/fesm2022/srv.default.service.mjs +186 -0
  60. package/fesm2022/srv.default.service.mjs.map +1 -0
  61. package/fesm2022/srv.form.default.service.mjs +224 -0
  62. package/fesm2022/srv.form.default.service.mjs.map +1 -0
  63. package/fesm2022/srv.form.service.mjs +502 -0
  64. package/fesm2022/srv.form.service.mjs.map +1 -0
  65. package/fesm2022/srv.form.workflow.mjs +573 -0
  66. package/fesm2022/srv.form.workflow.mjs.map +1 -0
  67. package/fesm2022/srv.form2.service.mjs +238 -0
  68. package/fesm2022/srv.form2.service.mjs.map +1 -0
  69. package/fesm2022/srv.formGroup.service.mjs +242 -0
  70. package/fesm2022/srv.formGroup.service.mjs.map +1 -0
  71. package/history/index.d.ts +1 -0
  72. package/history/src/default/index.d.ts +34 -0
  73. package/history/src/index.module.d.ts +8 -0
  74. package/history/src/public_api.d.ts +2 -0
  75. package/index.d.ts +2 -0
  76. package/package.json +100 -0
  77. package/page/index.d.ts +1 -0
  78. package/page/src/default/index.d.ts +35 -0
  79. package/page/src/index.module.d.ts +8 -0
  80. package/page/src/public_api.d.ts +2 -0
  81. package/preview/index.d.ts +1 -0
  82. package/preview/src/default/index.d.ts +37 -0
  83. package/preview/src/index.module.d.ts +9 -0
  84. package/preview/src/main/index.d.ts +38 -0
  85. package/preview/src/public_api.d.ts +3 -0
  86. package/rule/index.d.ts +1 -0
  87. package/rule/src/default/index.d.ts +39 -0
  88. package/rule/src/index.module.d.ts +8 -0
  89. package/rule/src/public_api.d.ts +2 -0
  90. package/service/basic/index.d.ts +166 -0
  91. package/service/basic.default/index.d.ts +25 -0
  92. package/service/basic.drawer/index.d.ts +36 -0
  93. package/service/basic.flow/index.d.ts +103 -0
  94. package/service/default.service/index.d.ts +59 -0
  95. package/service/form.default.service/index.d.ts +45 -0
  96. package/service/form.service/index.d.ts +77 -0
  97. package/service/form.workflow/index.d.ts +139 -0
  98. package/service/form2.service/index.d.ts +51 -0
  99. package/service/formGroup.service/index.d.ts +52 -0
  100. package/service/index.d.ts +1 -0
@@ -0,0 +1,573 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Directive } from '@angular/core';
3
+ import { ModuleAPI, globalKey } from '@ebuilding/base/shared.var/shared.constant';
4
+ import { BasicService } from '@ebuilding/biz-form/service/basic';
5
+ import _ from 'lodash';
6
+ import { zip, of } from 'rxjs';
7
+ import * as i1 from '@delon/theme';
8
+ import * as i2 from '@ebuilding/base/shared.srv/deon.util';
9
+ import * as i3 from '@ebuilding/base/shared.srv/deon2.util';
10
+ import * as i4 from '@kre-form/core';
11
+ import * as i5 from '@ebuilding/base/shared.srv/global.event';
12
+ import * as i6 from 'ng-zorro-antd/message';
13
+ import * as i7 from 'ng-zorro-antd/modal';
14
+ import * as i8 from '@ebuilding/base/shared.srv/base-dialog.service';
15
+ import * as i9 from '@ebuilding/base/shared.srv/commApi.service';
16
+
17
+ class WorkFlowFormService extends BasicService {
18
+ http;
19
+ utilService;
20
+ resetService;
21
+ deonFormBuilder;
22
+ globalSrv;
23
+ msg;
24
+ modal;
25
+ dialogService;
26
+ commAPISrv;
27
+ /**
28
+ * 流程类型:APPLY、DRAFT
29
+ */
30
+ workFlowType = null;
31
+ /**
32
+ * 流程数据
33
+ */
34
+ workFlowData = null;
35
+ /**
36
+ * 流程操作按钮
37
+ */
38
+ workFlowButton = [];
39
+ /**
40
+ * 流程审批记录
41
+ */
42
+ workFlowHistory = [];
43
+ /**
44
+ * 待处理流程ID
45
+ */
46
+ waitingId = null;
47
+ appoveDesc = '';
48
+ ccEmpData = [];
49
+ ccEmpNames = null;
50
+ constructor(http, utilService, resetService, deonFormBuilder, globalSrv, msg, modal, dialogService, commAPISrv) {
51
+ super(http, utilService, resetService, deonFormBuilder, globalSrv, msg, modal, dialogService, commAPISrv);
52
+ this.http = http;
53
+ this.utilService = utilService;
54
+ this.resetService = resetService;
55
+ this.deonFormBuilder = deonFormBuilder;
56
+ this.globalSrv = globalSrv;
57
+ this.msg = msg;
58
+ this.modal = modal;
59
+ this.dialogService = dialogService;
60
+ this.commAPISrv = commAPISrv;
61
+ }
62
+ /**
63
+ * 组装配置
64
+ */
65
+ getPageConfig() {
66
+ new Promise((resolve) => {
67
+ zip(this.getDesign(), this.getRole(), this.getDropDown(), this.getFromModel(), this.getFromDefaultModel(), this.getFromRuleData(), this.getApprovalButton(), this.getApprovalHistory(), this.getCcData()).subscribe(([design, role, drop, d, m, r, resButton, resHistory, cc]) => {
68
+ let roleData = null;
69
+ let dropData = null;
70
+ let formData = null;
71
+ let formDefaultData = null;
72
+ let ruleData = null;
73
+ if (design && design.success && design.result) {
74
+ this.designData = design.result;
75
+ }
76
+ if (role && role.success && role.result) {
77
+ roleData = role.result;
78
+ if (this.workFlowType == 'VIEW_ME' || this.workFlowType == 'VIEW_APPROVED') {
79
+ if (roleData == null || Object.keys(roleData).length == 0) {
80
+ if (_.get(this.designData, 'basic.json')) {
81
+ roleData = this.utilService.getFieldKeysData(_.get(this.designData, 'basic.json'));
82
+ }
83
+ }
84
+ Object.keys(roleData).forEach((key) => {
85
+ roleData[key]['read'] = true;
86
+ });
87
+ this.resetFieldRole(roleData);
88
+ }
89
+ }
90
+ if (drop && drop.success && drop.result) {
91
+ dropData = drop.result;
92
+ }
93
+ if (d && d.success && d.result) {
94
+ formData = d.result;
95
+ }
96
+ if (m && m.success && m.result) {
97
+ formDefaultData = m.result;
98
+ }
99
+ if (r && r.success && r.result) {
100
+ ruleData = r.result;
101
+ }
102
+ /**
103
+ * 操作按钮
104
+ */
105
+ if (resButton && resButton.success && resButton.result) {
106
+ this.workFlowButton = resButton.result;
107
+ }
108
+ /**
109
+ * 操作记录
110
+ */
111
+ if (resHistory && resHistory.result && resHistory.result) {
112
+ this.workFlowHistory = resHistory.result.map((item) => {
113
+ let status = 'waiting';
114
+ if (item.endTime) {
115
+ status = 'approved';
116
+ }
117
+ item['status'] = status;
118
+ return item;
119
+ });
120
+ }
121
+ this.initPageModel();
122
+ if (_.get(this.designData, 'basic.json')) {
123
+ this.initPageForm(this.designData, roleData, dropData, formData, formDefaultData, ruleData);
124
+ }
125
+ if (cc && cc.result && cc.result.length > 0) {
126
+ this.ccEmpData = cc.result;
127
+ this.ccEmpNames = cc.result
128
+ .map((item) => {
129
+ return item.name;
130
+ })
131
+ .join('、');
132
+ }
133
+ this.pageConfigAfter();
134
+ this.loading = false;
135
+ }, () => {
136
+ this.loading = false;
137
+ }, () => {
138
+ this.loading = false;
139
+ resolve();
140
+ });
141
+ });
142
+ }
143
+ resetFieldRole(roleData) { }
144
+ /**
145
+ * 1、获取设计
146
+ * @returns
147
+ */
148
+ getDesign() {
149
+ return this.http.post(`${ModuleAPI.workflow}/workflow/form/config`, {
150
+ formId: this.config.formId,
151
+ });
152
+ }
153
+ /**
154
+ * 2、获取配置-业务角色
155
+ * @returns
156
+ */
157
+ getRole() {
158
+ let params = {
159
+ designId: this.config.designId,
160
+ versionId: this.config.versionId,
161
+ nodeId: this.config.nodeId,
162
+ type: this.workFlowType,
163
+ };
164
+ switch (this.workFlowType) {
165
+ case 'DRAFT':
166
+ case 'BACKED':
167
+ params['type'] = 'APPLY';
168
+ break;
169
+ default:
170
+ params['type'] = this.workFlowType;
171
+ break;
172
+ }
173
+ return this.http.post(`${ModuleAPI.workflow}/workflow/form/role`, params);
174
+ }
175
+ /**
176
+ * 3、获取配置-下拉选项
177
+ * @returns
178
+ */
179
+ getDropDown() {
180
+ let apiName = this.commAPISrv.getFormDropDown('user', this.config.formId);
181
+ return this.http.post(`${apiName}`);
182
+ }
183
+ /*
184
+ 4、获取配置-表单数据(编辑、查看)
185
+ */
186
+ getFromModel() {
187
+ if (this.config?.dataId) {
188
+ return this.http.post(`${ModuleAPI.workflow}/workflow/form/model`, {
189
+ formId: this.config.formId,
190
+ dataId: this.config.dataId,
191
+ });
192
+ }
193
+ else {
194
+ return of(null);
195
+ }
196
+ }
197
+ /*
198
+ 5、获取配置-表单默认值
199
+ */
200
+ getFromDefaultModel() {
201
+ if (this.workFlowType == 'APPLY' && this.config.formId) {
202
+ return this.http.post(`${ModuleAPI.workflow}/workflow/form/defaultValue/${this.config.formId}`);
203
+ }
204
+ else {
205
+ return of(null);
206
+ }
207
+ }
208
+ /**
209
+ * 6、获取配置-表单规则
210
+ * @returns
211
+ */
212
+ getFromRuleData() {
213
+ if (this.config.formId) {
214
+ return this.http.post(`${ModuleAPI.rule}/rule/form/listByForm/${this.config.formId}`);
215
+ }
216
+ else {
217
+ return of(null);
218
+ }
219
+ }
220
+ /**
221
+ * 7、获取配置-操作按钮
222
+ * @returns
223
+ */
224
+ getApprovalButton() {
225
+ if (this.config?.type == 'VIEW') {
226
+ return of(null);
227
+ }
228
+ else {
229
+ return this.http.post(`${ModuleAPI.workflow}/workflow/user/listButton`, {
230
+ designId: this.config.designId,
231
+ versionId: this.config.versionId,
232
+ nodeId: this.config.nodeId,
233
+ });
234
+ }
235
+ }
236
+ /**
237
+ * 8、获取配置-审批记录
238
+ * @returns
239
+ */
240
+ getApprovalHistory() {
241
+ if (this.config?.applyId && this.config?.historyShow != false) {
242
+ return this.http.post(`${ModuleAPI.workflow}/workflow/user/listHistory/${this.config.applyId}`);
243
+ }
244
+ else {
245
+ return of(null);
246
+ }
247
+ }
248
+ /**
249
+ * 8、获取配置-抄送人
250
+ * @returns
251
+ */
252
+ getCcData() {
253
+ if (this.config?.dataId && this.config?.loadCC == true) {
254
+ return this.http.post(`${ModuleAPI.workflow}/workflow/form/getCCValue/${this.config.dataId}`);
255
+ }
256
+ else {
257
+ return of(null);
258
+ }
259
+ }
260
+ workflowPreEvent(type, buttonId) {
261
+ this.loading = true;
262
+ this.http
263
+ .post(`${ModuleAPI.rule}/rule/run/eventFormRule`, {
264
+ buttonId: buttonId,
265
+ dataId: this.config.dataId,
266
+ formId: this.config.formId,
267
+ sourceId: this.config.versionId,
268
+ sourceType: 'WORKFLOW_BUTTON',
269
+ requestJson: this.model,
270
+ })
271
+ .subscribe((res) => {
272
+ if (res && res.success == true) {
273
+ if (res.result) {
274
+ switch (res.result.eventResult) {
275
+ case 'NONE':
276
+ this.workflowPreEventSend(type);
277
+ break;
278
+ case 'TIPS':
279
+ if (res.result.tips) {
280
+ this.msg.error(res.result.tips);
281
+ }
282
+ else {
283
+ this.msg.error('表单不符合要求');
284
+ }
285
+ this.loading = false;
286
+ break;
287
+ case 'CONFIRM':
288
+ this.modal.confirm({
289
+ nzTitle: '提示',
290
+ nzContent: `${res.result.tips}`,
291
+ nzOnOk: () => {
292
+ this.workflowPreEventSend(type);
293
+ },
294
+ });
295
+ break;
296
+ }
297
+ }
298
+ else {
299
+ this.workflowPreEventSend(type);
300
+ }
301
+ }
302
+ else {
303
+ this.loading = false;
304
+ }
305
+ }, () => {
306
+ this.loading = false;
307
+ });
308
+ }
309
+ workflowPreEventSend(type) {
310
+ switch (type) {
311
+ case 'APPLY':
312
+ this.runSendApply();
313
+ break;
314
+ case 'BACKED':
315
+ this.runSendBackApply();
316
+ break;
317
+ default:
318
+ this.loading = false;
319
+ break;
320
+ }
321
+ }
322
+ /**
323
+ * 发起申请
324
+ * @param type
325
+ * @param button
326
+ * @returns
327
+ */
328
+ btnSendApply(type, button) {
329
+ if (!this.form.valid) {
330
+ this.msg.warning('请检查表单填写的合法性!');
331
+ return;
332
+ }
333
+ this.modal.confirm({
334
+ nzTitle: '提示',
335
+ nzContent: `您确定需要发起申请吗?`,
336
+ nzOnOk: () => {
337
+ if (button?.isRule) {
338
+ this.workflowPreEvent(type, button?.id);
339
+ }
340
+ else {
341
+ this.runSendApply();
342
+ }
343
+ },
344
+ });
345
+ }
346
+ /**
347
+ * 重新发起申请
348
+ * @param type
349
+ * @param button
350
+ * @returns
351
+ */
352
+ btnSendBacked(type, button) {
353
+ if (!this.form.valid) {
354
+ this.msg.warning('请检查表单填写的合法性!');
355
+ return;
356
+ }
357
+ this.modal.confirm({
358
+ nzTitle: '提示',
359
+ nzContent: `您确定需要发起申请吗?`,
360
+ nzOnOk: () => {
361
+ if (button?.isRule) {
362
+ this.workflowPreEvent(type, button.id);
363
+ }
364
+ else {
365
+ this.runSendBackApply();
366
+ }
367
+ },
368
+ });
369
+ }
370
+ runSendApply() {
371
+ this.loading = true;
372
+ this.http
373
+ .post(`${ModuleAPI.workflow}/workflow/business/start`, {
374
+ designId: this.config.designId,
375
+ versionId: this.config.versionId,
376
+ applyId: this.config.applyId,
377
+ data: this.model,
378
+ listCC: this.ccEmpData,
379
+ })
380
+ .subscribe((res) => {
381
+ if (res.success) {
382
+ this.msg.success('操作成功!');
383
+ this.globalSrv.notifyDataChanged(globalKey.wrokflow_apply, { rd: Math.random() });
384
+ this.globalSrv.notifyDataChanged(globalKey.wrokflow_backed, { rd: Math.random() });
385
+ this.globalSrv.notifyDataChanged(globalKey.workflow_cnt, { rd: Math.random() });
386
+ this.bttonSaveAfter();
387
+ }
388
+ this.loading = false;
389
+ });
390
+ }
391
+ runSendBackApply() {
392
+ this.loading = true;
393
+ this.http
394
+ .post(`${ModuleAPI.workflow}/workflow/business/startBack`, {
395
+ designId: this.config.designId,
396
+ versionId: this.config.versionId,
397
+ applyId: this.config.applyId,
398
+ instanceId: this.config.instanceId,
399
+ waitingId: this.config.waitingId,
400
+ data: this.model,
401
+ listCC: this.ccEmpData,
402
+ })
403
+ .subscribe((res) => {
404
+ if (res.success) {
405
+ this.msg.success('操作成功!');
406
+ this.globalSrv.notifyDataChanged(globalKey.wrokflow_backed, { rd: Math.random() });
407
+ this.globalSrv.notifyDataChanged(globalKey.wrokflow_apply, { rd: Math.random() });
408
+ this.globalSrv.notifyDataChanged(globalKey.workflow_cnt, { rd: Math.random() });
409
+ this.bttonSaveAfter();
410
+ }
411
+ this.loading = false;
412
+ });
413
+ }
414
+ /**
415
+ * 流程-撤回
416
+ */
417
+ btnSendWithdraw() {
418
+ this.modal.confirm({
419
+ nzTitle: '提示',
420
+ nzContent: `您确定撤回该申请吗?`,
421
+ nzOnOk: () => {
422
+ this.loading = true;
423
+ this.http.post(`${ModuleAPI.workflow}/workflow/business/withdraw/${this.config.applyId}`).subscribe((res) => {
424
+ if (res.success) {
425
+ this.msg.success('操作成功!');
426
+ this.globalSrv.notifyDataChanged(globalKey.wrokflow_apply, { rd: Math.random() });
427
+ this.globalSrv.notifyDataChanged(globalKey.workflow_cnt, { rd: Math.random() });
428
+ this.bttonSaveAfter();
429
+ }
430
+ this.loading = false;
431
+ });
432
+ },
433
+ });
434
+ }
435
+ /**
436
+ * 流程-同意
437
+ */
438
+ btnSendApproved(button) {
439
+ let postData = {
440
+ waitingId: this.waitingId,
441
+ desc: this.appoveDesc,
442
+ data: this.model,
443
+ listCC: this.ccEmpData,
444
+ };
445
+ this.modal.confirm({
446
+ nzTitle: '提示',
447
+ nzContent: `您确定同意该申请吗?`,
448
+ nzOnOk: () => {
449
+ this.loading = true;
450
+ this.http.post(`${ModuleAPI.workflow}/workflow/business/approve`, postData).subscribe((res) => {
451
+ if (res.success) {
452
+ this.msg.success('审批成功!');
453
+ this.globalSrv.notifyDataChanged(globalKey.wrokflow_waiting, { rd: Math.random() });
454
+ this.globalSrv.notifyDataChanged(globalKey.workflow_cnt, { rd: Math.random() });
455
+ this.bttonSaveAfter();
456
+ }
457
+ this.loading = false;
458
+ });
459
+ },
460
+ });
461
+ }
462
+ /**
463
+ * 流程-回退
464
+ */
465
+ btnSendReBack(button) {
466
+ let postData = {
467
+ waitingId: this.waitingId,
468
+ desc: this.appoveDesc,
469
+ data: this.model,
470
+ listCC: this.ccEmpData,
471
+ };
472
+ this.modal.confirm({
473
+ nzTitle: '提醒',
474
+ nzContent: `您确定回退该申请吗?`,
475
+ nzOnOk: () => {
476
+ this.loading = true;
477
+ this.http.post(`${ModuleAPI.workflow}/workflow/business/sendBack`, postData).subscribe((res) => {
478
+ if (res.success) {
479
+ this.msg.success('操作成功');
480
+ this.globalSrv.notifyDataChanged(globalKey.wrokflow_waiting, { rd: Math.random() });
481
+ this.globalSrv.notifyDataChanged(globalKey.workflow_cnt, { rd: Math.random() });
482
+ this.bttonSaveAfter();
483
+ }
484
+ this.loading = false;
485
+ });
486
+ },
487
+ });
488
+ }
489
+ /**
490
+ * 流程-拒绝
491
+ */
492
+ btnSendReject(button) {
493
+ let postData = {
494
+ waitingId: this.waitingId,
495
+ desc: this.appoveDesc,
496
+ data: this.model,
497
+ listCC: this.ccEmpData,
498
+ };
499
+ this.modal.confirm({
500
+ nzTitle: '提醒',
501
+ nzContent: `您确定拒绝该申请吗?`,
502
+ nzOnOk: () => {
503
+ this.loading = true;
504
+ this.http.post(`${ModuleAPI.workflow}/workflow/business/reject`, postData).subscribe((res) => {
505
+ if (res.success) {
506
+ this.msg.success('操作成功');
507
+ this.globalSrv.notifyDataChanged(globalKey.wrokflow_waiting, { rd: Math.random() });
508
+ this.globalSrv.notifyDataChanged(globalKey.workflow_cnt, { rd: Math.random() });
509
+ this.bttonSaveAfter();
510
+ }
511
+ this.loading = false;
512
+ });
513
+ },
514
+ });
515
+ }
516
+ /**
517
+ * 流程-终止
518
+ */
519
+ btnSendStop(button) {
520
+ let postData = {
521
+ waitingId: this.waitingId,
522
+ desc: this.appoveDesc,
523
+ data: this.model,
524
+ listCC: this.ccEmpData,
525
+ };
526
+ this.modal.confirm({
527
+ nzTitle: '您确定终止该申请吗',
528
+ nzContent: `终止后流程会自动结束,该操作不可逆,是否继续?`,
529
+ nzOnOk: () => {
530
+ this.loading = true;
531
+ this.http.post(`${ModuleAPI.workflow}/workflow/business/stop`, postData).subscribe((res) => {
532
+ if (res.success) {
533
+ this.msg.success('操作成功');
534
+ this.globalSrv.notifyDataChanged(globalKey.wrokflow_waiting, { rd: Math.random() });
535
+ this.globalSrv.notifyDataChanged(globalKey.workflow_cnt, { rd: Math.random() });
536
+ this.bttonSaveAfter();
537
+ }
538
+ this.loading = false;
539
+ });
540
+ },
541
+ });
542
+ }
543
+ bttonSaveAfter() { }
544
+ openSelectEmp() {
545
+ this.selectEmp('multiple', this.ccEmpData, this, (res) => {
546
+ this.ccEmpData = res;
547
+ this.ccEmpNames = null;
548
+ if (res && res.length > 0) {
549
+ this.ccEmpNames = res
550
+ .map((item) => {
551
+ return item.name;
552
+ })
553
+ .join('、');
554
+ }
555
+ });
556
+ }
557
+ btnCCDelete() {
558
+ this.ccEmpData = [];
559
+ this.ccEmpNames = null;
560
+ }
561
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WorkFlowFormService, deps: [{ token: i1._HttpClient }, { token: i2.DeonFormUtilService }, { token: i3.DeonFormResetService }, { token: i4.FormlyFormBuilder }, { token: i5.GramGlobalService }, { token: i6.NzMessageService }, { token: i7.NzModalService }, { token: i8.GramBaseDialogService }, { token: i9.CommAPIService }], target: i0.ɵɵFactoryTarget.Directive });
562
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: WorkFlowFormService, isStandalone: true, usesInheritance: true, ngImport: i0 });
563
+ }
564
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WorkFlowFormService, decorators: [{
565
+ type: Directive
566
+ }], ctorParameters: () => [{ type: i1._HttpClient }, { type: i2.DeonFormUtilService }, { type: i3.DeonFormResetService }, { type: i4.FormlyFormBuilder }, { type: i5.GramGlobalService }, { type: i6.NzMessageService }, { type: i7.NzModalService }, { type: i8.GramBaseDialogService }, { type: i9.CommAPIService }] });
567
+
568
+ /**
569
+ * Generated bundle index. Do not edit.
570
+ */
571
+
572
+ export { WorkFlowFormService };
573
+ //# sourceMappingURL=srv.form.workflow.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"srv.form.workflow.mjs","sources":["../../../../packages/biz-form/service/form.workflow/index.ts","../../../../packages/biz-form/service/form.workflow/srv.form.workflow.ts"],"sourcesContent":["import { Directive } from '@angular/core';\r\nimport { _HttpClient } from '@delon/theme';\r\nimport { FormlyFormBuilder } from '@kre-form/core';\r\nimport { NzMessageService } from 'ng-zorro-antd/message';\r\nimport { NzModalService } from 'ng-zorro-antd/modal';\r\n\r\nimport { DeonFormUtilService } from '@ebuilding/base/shared.srv/deon.util';\r\nimport { DeonFormResetService } from '@ebuilding/base/shared.srv/deon2.util';\r\nimport { GramBaseDialogService } from '@ebuilding/base/shared.srv/base-dialog.service';\r\nimport { GramGlobalService } from '@ebuilding/base/shared.srv/global.event';\r\nimport { CommAPIService } from '@ebuilding/base/shared.srv/commApi.service';\r\n\r\nimport { ModuleAPI, globalKey } from '@ebuilding/base/shared.var/shared.constant';\r\nimport { BasicService } from '@ebuilding/biz-form/service/basic';\r\n\r\nimport _ from 'lodash';\r\nimport { of, zip } from 'rxjs';\r\n\r\nexport interface IData {\r\n designId?: any; //流程ID\r\n versionId?: string; //版本ID\r\n nodeId?: string; //节点ID\r\n formId?: any; //表单ID\r\n dataId?: any; //实体存储表ID\r\n applyId?: any; //申请记录表ID\r\n}\r\n\r\n@Directive()\r\nexport abstract class WorkFlowFormService extends BasicService {\r\n /**\r\n * 流程类型:APPLY、DRAFT\r\n */\r\n workFlowType: any = null;\r\n /**\r\n * 流程数据\r\n */\r\n workFlowData: any = null;\r\n /**\r\n * 流程操作按钮\r\n */\r\n workFlowButton: any[] = [];\r\n /**\r\n * 流程审批记录\r\n */\r\n workFlowHistory: any[] = [];\r\n\r\n /**\r\n * 待处理流程ID\r\n */\r\n waitingId: any = null;\r\n\r\n appoveDesc: any = '';\r\n\r\n ccEmpData: any[] = [];\r\n ccEmpNames: any = null;\r\n\r\n constructor(\r\n public override http: _HttpClient,\r\n public override utilService: DeonFormUtilService,\r\n public override resetService: DeonFormResetService,\r\n public override deonFormBuilder: FormlyFormBuilder,\r\n public override globalSrv: GramGlobalService,\r\n public override msg: NzMessageService,\r\n public override modal: NzModalService,\r\n public override dialogService: GramBaseDialogService,\r\n public override commAPISrv: CommAPIService,\r\n ) {\r\n super(http, utilService, resetService, deonFormBuilder, globalSrv, msg, modal, dialogService, commAPISrv);\r\n }\r\n\r\n /**\r\n * 组装配置\r\n */\r\n override getPageConfig() {\r\n new Promise((resolve: any) => {\r\n zip(\r\n this.getDesign(),\r\n this.getRole(),\r\n this.getDropDown(),\r\n this.getFromModel(),\r\n this.getFromDefaultModel(),\r\n this.getFromRuleData(),\r\n this.getApprovalButton(),\r\n this.getApprovalHistory(),\r\n this.getCcData(),\r\n ).subscribe(\r\n ([design, role, drop, d, m, r, resButton, resHistory, cc]) => {\r\n let roleData: any = null;\r\n let dropData: any = null;\r\n let formData: any = null;\r\n let formDefaultData: any = null;\r\n let ruleData: any = null;\r\n\r\n if (design!! && design.success && design.result!!) {\r\n this.designData = design.result;\r\n }\r\n\r\n if (role && role.success && role.result) {\r\n roleData = role.result;\r\n if (this.workFlowType == 'VIEW_ME' || this.workFlowType == 'VIEW_APPROVED') {\r\n if (roleData == null || Object.keys(roleData).length == 0) {\r\n if (_.get(this.designData, 'basic.json')) {\r\n roleData = this.utilService.getFieldKeysData(_.get(this.designData, 'basic.json'));\r\n }\r\n }\r\n Object.keys(roleData).forEach((key: any) => {\r\n roleData[key]['read'] = true;\r\n });\r\n this.resetFieldRole(roleData);\r\n }\r\n }\r\n\r\n if (drop!! && drop.success && drop.result!!) {\r\n dropData = drop.result;\r\n }\r\n\r\n if (d!! && d.success && d.result!!) {\r\n formData = d.result;\r\n }\r\n\r\n if (m!! && m.success && m.result!!) {\r\n formDefaultData = m.result;\r\n }\r\n\r\n if (r!! && r.success && r.result!!) {\r\n ruleData = r.result;\r\n }\r\n\r\n /**\r\n * 操作按钮\r\n */\r\n if (resButton!! && resButton.success && resButton.result!!) {\r\n this.workFlowButton = resButton.result;\r\n }\r\n\r\n /**\r\n * 操作记录\r\n */\r\n if (resHistory!! && resHistory.result && resHistory.result!!) {\r\n this.workFlowHistory = resHistory.result.map((item: any) => {\r\n let status = 'waiting';\r\n if (item.endTime!!) {\r\n status = 'approved';\r\n }\r\n item['status'] = status;\r\n return item;\r\n });\r\n }\r\n\r\n this.initPageModel();\r\n if (_.get(this.designData, 'basic.json')!!) {\r\n this.initPageForm(this.designData, roleData, dropData, formData, formDefaultData, ruleData);\r\n }\r\n\r\n if (cc!! && cc.result!! && cc.result.length > 0) {\r\n this.ccEmpData = cc.result;\r\n this.ccEmpNames = cc.result\r\n .map((item: any) => {\r\n return item.name;\r\n })\r\n .join('、');\r\n }\r\n this.pageConfigAfter();\r\n this.loading = false;\r\n },\r\n () => {\r\n this.loading = false;\r\n },\r\n () => {\r\n this.loading = false;\r\n resolve();\r\n },\r\n );\r\n });\r\n }\r\n\r\n resetFieldRole(roleData: any) { }\r\n\r\n /**\r\n * 1、获取设计\r\n * @returns\r\n */\r\n override getDesign() {\r\n return this.http.post(`${ModuleAPI.workflow}/workflow/form/config`, {\r\n formId: this.config.formId,\r\n });\r\n }\r\n\r\n /**\r\n * 2、获取配置-业务角色\r\n * @returns\r\n */\r\n override getRole() {\r\n let params: any = {\r\n designId: this.config.designId,\r\n versionId: this.config.versionId,\r\n nodeId: this.config.nodeId,\r\n type: this.workFlowType,\r\n };\r\n switch (this.workFlowType) {\r\n case 'DRAFT':\r\n case 'BACKED':\r\n params['type'] = 'APPLY';\r\n break;\r\n default:\r\n params['type'] = this.workFlowType;\r\n break;\r\n }\r\n return this.http.post(`${ModuleAPI.workflow}/workflow/form/role`, params);\r\n }\r\n\r\n /**\r\n * 3、获取配置-下拉选项\r\n * @returns\r\n */\r\n override getDropDown() {\r\n let apiName: any = this.commAPISrv.getFormDropDown('user', this.config.formId);\r\n return this.http.post(`${apiName}`);\r\n }\r\n\r\n /*\r\n 4、获取配置-表单数据(编辑、查看)\r\n */\r\n override getFromModel() {\r\n if (this.config?.dataId!!) {\r\n return this.http.post(`${ModuleAPI.workflow}/workflow/form/model`, {\r\n formId: this.config.formId,\r\n dataId: this.config.dataId,\r\n });\r\n } else {\r\n return of(null);\r\n }\r\n }\r\n\r\n /*\r\n 5、获取配置-表单默认值\r\n */\r\n override getFromDefaultModel() {\r\n if (this.workFlowType == 'APPLY' && this.config.formId!!) {\r\n return this.http.post(`${ModuleAPI.workflow}/workflow/form/defaultValue/${this.config.formId}`);\r\n } else {\r\n return of(null);\r\n }\r\n }\r\n\r\n /**\r\n * 6、获取配置-表单规则\r\n * @returns\r\n */\r\n override getFromRuleData() {\r\n if (this.config.formId!!) {\r\n return this.http.post(`${ModuleAPI.rule}/rule/form/listByForm/${this.config.formId}`);\r\n } else {\r\n return of(null);\r\n }\r\n }\r\n\r\n /**\r\n * 7、获取配置-操作按钮\r\n * @returns\r\n */\r\n getApprovalButton() {\r\n if (this.config?.type == 'VIEW') {\r\n return of(null);\r\n } else {\r\n return this.http.post(`${ModuleAPI.workflow}/workflow/user/listButton`, {\r\n designId: this.config.designId,\r\n versionId: this.config.versionId,\r\n nodeId: this.config.nodeId,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * 8、获取配置-审批记录\r\n * @returns\r\n */\r\n getApprovalHistory() {\r\n if (this.config?.applyId && this.config?.historyShow != false) {\r\n return this.http.post(`${ModuleAPI.workflow}/workflow/user/listHistory/${this.config.applyId}`);\r\n } else {\r\n return of(null);\r\n }\r\n }\r\n\r\n /**\r\n * 8、获取配置-抄送人\r\n * @returns\r\n */\r\n getCcData() {\r\n if (this.config?.dataId!! && this.config?.loadCC == true) {\r\n return this.http.post(`${ModuleAPI.workflow}/workflow/form/getCCValue/${this.config.dataId}`);\r\n } else {\r\n return of(null);\r\n }\r\n }\r\n\r\n workflowPreEvent(type: any, buttonId: any) {\r\n this.loading = true;\r\n this.http\r\n .post(`${ModuleAPI.rule}/rule/run/eventFormRule`, {\r\n buttonId: buttonId,\r\n dataId: this.config.dataId,\r\n formId: this.config.formId,\r\n sourceId: this.config.versionId,\r\n sourceType: 'WORKFLOW_BUTTON',\r\n requestJson: this.model,\r\n })\r\n .subscribe(\r\n (res: any) => {\r\n if (res && res.success == true) {\r\n if (res.result!!) {\r\n switch (res.result.eventResult) {\r\n case 'NONE':\r\n this.workflowPreEventSend(type);\r\n break;\r\n case 'TIPS':\r\n if (res.result.tips!!) {\r\n this.msg.error(res.result.tips);\r\n } else {\r\n this.msg.error('表单不符合要求');\r\n }\r\n this.loading = false;\r\n break;\r\n case 'CONFIRM':\r\n this.modal.confirm({\r\n nzTitle: '提示',\r\n nzContent: `${res.result.tips}`,\r\n nzOnOk: () => {\r\n this.workflowPreEventSend(type);\r\n },\r\n });\r\n break;\r\n }\r\n } else {\r\n this.workflowPreEventSend(type);\r\n }\r\n } else {\r\n this.loading = false;\r\n }\r\n },\r\n () => {\r\n this.loading = false;\r\n },\r\n );\r\n }\r\n\r\n workflowPreEventSend(type: any) {\r\n switch (type) {\r\n case 'APPLY':\r\n this.runSendApply();\r\n break;\r\n case 'BACKED':\r\n this.runSendBackApply();\r\n break;\r\n default:\r\n this.loading = false;\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * 发起申请\r\n * @param type\r\n * @param button\r\n * @returns\r\n */\r\n btnSendApply(type: any, button: any) {\r\n if (!this.form.valid) {\r\n this.msg.warning('请检查表单填写的合法性!');\r\n return;\r\n }\r\n this.modal.confirm({\r\n nzTitle: '提示',\r\n nzContent: `您确定需要发起申请吗?`,\r\n nzOnOk: () => {\r\n if (button?.isRule) {\r\n this.workflowPreEvent(type, button?.id);\r\n } else {\r\n this.runSendApply();\r\n }\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * 重新发起申请\r\n * @param type\r\n * @param button\r\n * @returns\r\n */\r\n btnSendBacked(type: any, button: any) {\r\n if (!this.form.valid) {\r\n this.msg.warning('请检查表单填写的合法性!');\r\n return;\r\n }\r\n this.modal.confirm({\r\n nzTitle: '提示',\r\n nzContent: `您确定需要发起申请吗?`,\r\n nzOnOk: () => {\r\n if (button?.isRule) {\r\n this.workflowPreEvent(type, button.id);\r\n } else {\r\n this.runSendBackApply();\r\n }\r\n },\r\n });\r\n }\r\n\r\n runSendApply() {\r\n this.loading = true;\r\n this.http\r\n .post(`${ModuleAPI.workflow}/workflow/business/start`, {\r\n designId: this.config.designId,\r\n versionId: this.config.versionId,\r\n applyId: this.config.applyId,\r\n data: this.model,\r\n listCC: this.ccEmpData,\r\n })\r\n .subscribe((res: any) => {\r\n if (res.success) {\r\n this.msg.success('操作成功!');\r\n this.globalSrv.notifyDataChanged(globalKey.wrokflow_apply, { rd: Math.random() });\r\n this.globalSrv.notifyDataChanged(globalKey.wrokflow_backed, { rd: Math.random() });\r\n this.globalSrv.notifyDataChanged(globalKey.workflow_cnt, { rd: Math.random() });\r\n this.bttonSaveAfter();\r\n }\r\n this.loading = false;\r\n });\r\n }\r\n\r\n runSendBackApply() {\r\n this.loading = true;\r\n this.http\r\n .post(`${ModuleAPI.workflow}/workflow/business/startBack`, {\r\n designId: this.config.designId,\r\n versionId: this.config.versionId,\r\n applyId: this.config.applyId,\r\n instanceId: this.config.instanceId,\r\n waitingId: this.config.waitingId,\r\n data: this.model,\r\n listCC: this.ccEmpData,\r\n })\r\n .subscribe((res: any) => {\r\n if (res.success) {\r\n this.msg.success('操作成功!');\r\n this.globalSrv.notifyDataChanged(globalKey.wrokflow_backed, { rd: Math.random() });\r\n this.globalSrv.notifyDataChanged(globalKey.wrokflow_apply, { rd: Math.random() });\r\n this.globalSrv.notifyDataChanged(globalKey.workflow_cnt, { rd: Math.random() });\r\n this.bttonSaveAfter();\r\n }\r\n this.loading = false;\r\n });\r\n }\r\n\r\n /**\r\n * 流程-撤回\r\n */\r\n btnSendWithdraw() {\r\n this.modal.confirm({\r\n nzTitle: '提示',\r\n nzContent: `您确定撤回该申请吗?`,\r\n nzOnOk: () => {\r\n this.loading = true;\r\n this.http.post(`${ModuleAPI.workflow}/workflow/business/withdraw/${this.config.applyId}`).subscribe((res: any) => {\r\n if (res.success) {\r\n this.msg.success('操作成功!');\r\n this.globalSrv.notifyDataChanged(globalKey.wrokflow_apply, { rd: Math.random() });\r\n this.globalSrv.notifyDataChanged(globalKey.workflow_cnt, { rd: Math.random() });\r\n this.bttonSaveAfter();\r\n }\r\n this.loading = false;\r\n });\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * 流程-同意\r\n */\r\n btnSendApproved(button: any) {\r\n let postData: any = {\r\n waitingId: this.waitingId,\r\n desc: this.appoveDesc,\r\n data: this.model,\r\n listCC: this.ccEmpData,\r\n };\r\n\r\n this.modal.confirm({\r\n nzTitle: '提示',\r\n nzContent: `您确定同意该申请吗?`,\r\n nzOnOk: () => {\r\n this.loading = true;\r\n this.http.post(`${ModuleAPI.workflow}/workflow/business/approve`, postData).subscribe((res: any) => {\r\n if (res.success) {\r\n this.msg.success('审批成功!');\r\n this.globalSrv.notifyDataChanged(globalKey.wrokflow_waiting, { rd: Math.random() });\r\n this.globalSrv.notifyDataChanged(globalKey.workflow_cnt, { rd: Math.random() });\r\n this.bttonSaveAfter();\r\n }\r\n this.loading = false;\r\n });\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * 流程-回退\r\n */\r\n btnSendReBack(button: any) {\r\n let postData: any = {\r\n waitingId: this.waitingId,\r\n desc: this.appoveDesc,\r\n data: this.model,\r\n listCC: this.ccEmpData,\r\n };\r\n this.modal.confirm({\r\n nzTitle: '提醒',\r\n nzContent: `您确定回退该申请吗?`,\r\n nzOnOk: () => {\r\n this.loading = true;\r\n this.http.post(`${ModuleAPI.workflow}/workflow/business/sendBack`, postData).subscribe((res: any) => {\r\n if (res.success) {\r\n this.msg.success('操作成功');\r\n this.globalSrv.notifyDataChanged(globalKey.wrokflow_waiting, { rd: Math.random() });\r\n this.globalSrv.notifyDataChanged(globalKey.workflow_cnt, { rd: Math.random() });\r\n this.bttonSaveAfter();\r\n }\r\n this.loading = false;\r\n });\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * 流程-拒绝\r\n */\r\n btnSendReject(button: any) {\r\n let postData: any = {\r\n waitingId: this.waitingId,\r\n desc: this.appoveDesc,\r\n data: this.model,\r\n listCC: this.ccEmpData,\r\n };\r\n this.modal.confirm({\r\n nzTitle: '提醒',\r\n nzContent: `您确定拒绝该申请吗?`,\r\n nzOnOk: () => {\r\n this.loading = true;\r\n this.http.post(`${ModuleAPI.workflow}/workflow/business/reject`, postData).subscribe((res: any) => {\r\n if (res.success) {\r\n this.msg.success('操作成功');\r\n this.globalSrv.notifyDataChanged(globalKey.wrokflow_waiting, { rd: Math.random() });\r\n this.globalSrv.notifyDataChanged(globalKey.workflow_cnt, { rd: Math.random() });\r\n this.bttonSaveAfter();\r\n }\r\n this.loading = false;\r\n });\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * 流程-终止\r\n */\r\n btnSendStop(button: any) {\r\n let postData: any = {\r\n waitingId: this.waitingId,\r\n desc: this.appoveDesc,\r\n data: this.model,\r\n listCC: this.ccEmpData,\r\n };\r\n this.modal.confirm({\r\n nzTitle: '您确定终止该申请吗',\r\n nzContent: `终止后流程会自动结束,该操作不可逆,是否继续?`,\r\n nzOnOk: () => {\r\n this.loading = true;\r\n this.http.post(`${ModuleAPI.workflow}/workflow/business/stop`, postData).subscribe((res: any) => {\r\n if (res.success) {\r\n this.msg.success('操作成功');\r\n this.globalSrv.notifyDataChanged(globalKey.wrokflow_waiting, { rd: Math.random() });\r\n this.globalSrv.notifyDataChanged(globalKey.workflow_cnt, { rd: Math.random() });\r\n this.bttonSaveAfter();\r\n }\r\n this.loading = false;\r\n });\r\n },\r\n });\r\n }\r\n\r\n bttonSaveAfter() { }\r\n\r\n openSelectEmp() {\r\n this.selectEmp('multiple', this.ccEmpData, this, (res: any) => {\r\n this.ccEmpData = res;\r\n this.ccEmpNames = null;\r\n if (res!! && res.length > 0) {\r\n this.ccEmpNames = res\r\n .map((item: any) => {\r\n return item.name;\r\n })\r\n .join('、');\r\n }\r\n });\r\n }\r\n\r\n btnCCDelete() {\r\n this.ccEmpData = [];\r\n this.ccEmpNames = null;\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}