@steedos-labs/plugin-workflow 3.0.8 → 3.0.10

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.
@@ -16,6 +16,7 @@ window.SteedosWorkflow.InstanceTask = {
16
16
  fields.forEach(function (field) {
17
17
  if (field.is_list_display) {
18
18
  crudDataFilter = crudDataFilter + `
19
+ if (data.display !== 'split'){
19
20
  crud.columns.push({
20
21
  "name": "instance__expand.values.${field.code}",
21
22
  "label": "${field.name || field.code}",
@@ -25,6 +26,7 @@ window.SteedosWorkflow.InstanceTask = {
25
26
  "static": true,
26
27
  "options": null
27
28
  });\r\n
29
+ }\r\n
28
30
  `;
29
31
  }
30
32
  })
@@ -85,6 +87,7 @@ window.SteedosWorkflow.Instance = {
85
87
  fields.forEach(function (field) {
86
88
  if (field.is_list_display) {
87
89
  crudDataFilter = crudDataFilter + `
90
+ if (data.display !== 'split'){
88
91
  crud.columns.push({
89
92
  "name": "instance__expand.values.${field.code}",
90
93
  "label": "${field.name || field.code}",
@@ -94,6 +97,7 @@ window.SteedosWorkflow.Instance = {
94
97
  "static": true,
95
98
  "options": null
96
99
  });\r\n
100
+ }\r\n
97
101
  `;
98
102
  }
99
103
  })
@@ -36,17 +36,18 @@ window.waitForThing(window, 'socket').then(()=>{
36
36
  });
37
37
  })
38
38
  }
39
-
39
+ let isFirstRun = true;
40
40
  socket.on(SocketEvents.badgeChange, (data)=>{
41
41
  window.postMessage({ type: "page.dataProvider.setData", data: { badges: data }}, "*")
42
42
  const shouldReloadView = () => {
43
43
  const pathname = window.location.pathname;
44
44
  return pathname.endsWith(`/instances`) || pathname.includes(`/instances/view`) || pathname.includes(`/instances/grid`) || pathname.endsWith(`/instance_tasks`) || pathname.includes(`/instance_tasks/view`) || pathname.includes(`/instance_tasks/grid`);
45
45
  };
46
- if (shouldReloadView()) {
46
+ if (isFirstRun === false && shouldReloadView()) {
47
47
  window.$(".list-view-btn-reload").click()
48
48
  window.$(".instance-nav-reload").click()
49
49
  }
50
+ isFirstRun = false;
50
51
  });
51
52
 
52
53
  socket.on(SocketEvents.instanceRecordChange, (data)=>{
@@ -77,3 +77,17 @@ permission_set:
77
77
  unreadable_fields: []
78
78
  uneditable_fields: []
79
79
  unrelated_objects: []
80
+ organization_admin:
81
+ allowCreate: true
82
+ allowDelete: true
83
+ allowEdit: true
84
+ allowRead: true
85
+ modifyAllRecords: false
86
+ viewAllRecords: false
87
+ modifyCompanyRecords: true
88
+ viewCompanyRecords: true
89
+ disabled_list_views: []
90
+ disabled_actions: []
91
+ unreadable_fields: []
92
+ uneditable_fields: []
93
+ unrelated_objects: []
@@ -48,6 +48,20 @@ permission_set:
48
48
  modifyAllRecords: true
49
49
  viewAllRecords: true
50
50
  workflow_admin:
51
+ allowCreate: true
52
+ allowDelete: true
53
+ allowEdit: true
54
+ allowRead: true
55
+ modifyAllRecords: false
56
+ viewAllRecords: false
57
+ modifyCompanyRecords: true
58
+ viewCompanyRecords: true
59
+ disabled_list_views: []
60
+ disabled_actions: []
61
+ unreadable_fields: []
62
+ uneditable_fields: []
63
+ unrelated_objects: []
64
+ organization_admin:
51
65
  allowCreate: true
52
66
  allowDelete: true
53
67
  allowEdit: true
@@ -919,7 +919,21 @@ permission_set:
919
919
  viewAllRecords: true
920
920
  workflow_admin:
921
921
  allowCreate: true
922
- allowDelete: false
922
+ allowDelete: true
923
+ allowEdit: true
924
+ allowRead: true
925
+ modifyAllRecords: false
926
+ viewAllRecords: false
927
+ modifyCompanyRecords: true
928
+ viewCompanyRecords: true
929
+ disabled_list_views: []
930
+ disabled_actions: []
931
+ unreadable_fields: []
932
+ uneditable_fields: []
933
+ unrelated_objects: []
934
+ organization_admin:
935
+ allowCreate: true
936
+ allowDelete: true
923
937
  allowEdit: true
924
938
  allowRead: true
925
939
  modifyAllRecords: false
@@ -336,7 +336,7 @@ permission_set:
336
336
  modifyAllRecords: true
337
337
  viewAllRecords: true
338
338
  workflow_admin:
339
- allowCreate: false
339
+ allowCreate: true
340
340
  allowDelete: false
341
341
  allowEdit: true
342
342
  allowRead: true
@@ -349,3 +349,12 @@ permission_set:
349
349
  unreadable_fields: []
350
350
  uneditable_fields: []
351
351
  unrelated_objects: []
352
+ organization_admin:
353
+ allowCreate: true
354
+ allowDelete: false
355
+ allowEdit: true
356
+ allowRead: true
357
+ modifyAllRecords: false
358
+ viewAllRecords: false
359
+ modifyCompanyRecords: true
360
+ viewCompanyRecords: true
@@ -78,8 +78,12 @@ permission_set:
78
78
  viewAllRecords: false
79
79
  modifyCompanyRecords: true
80
80
  viewCompanyRecords: true
81
- disabled_list_views: []
82
- disabled_actions: []
83
- unreadable_fields: []
84
- uneditable_fields: []
85
- unrelated_objects: []
81
+ organization_admin:
82
+ allowCreate: true
83
+ allowDelete: true
84
+ allowEdit: true
85
+ allowRead: true
86
+ modifyAllRecords: false
87
+ viewAllRecords: false
88
+ modifyCompanyRecords: true
89
+ viewCompanyRecords: true
@@ -65,8 +65,12 @@ amis_schema: |-
65
65
  {
66
66
  "actionType": "wait",
67
67
  "args": {
68
- "time": 2000
68
+ "time": 100
69
69
  }
70
+ },
71
+ {
72
+ "actionType": "custom",
73
+ "script":"window.$('.list-view-btn-reload').click()"
70
74
  }
71
75
  ]
72
76
  }
@@ -278,6 +278,23 @@ permission_set:
278
278
  unreadable_fields: []
279
279
  uneditable_fields: []
280
280
  unrelated_objects: []
281
+ organization_admin:
282
+ allowCreate: false
283
+ allowDelete: false
284
+ allowEdit: false
285
+ allowRead: true
286
+ modifyAllRecords: false
287
+ viewAllRecords: false
288
+ modifyCompanyRecords: false
289
+ viewCompanyRecords: true
290
+ allowCreateListViews: false
291
+ disabled_list_views:
292
+ - inbox
293
+ - outbox
294
+ disabled_actions: []
295
+ unreadable_fields: []
296
+ uneditable_fields: []
297
+ unrelated_objects: []
281
298
  actions:
282
299
  view_instance:
283
300
  label: View Instance
@@ -70,3 +70,21 @@ permission_set:
70
70
  allowRead: true
71
71
  modifyAllRecords: false
72
72
  viewAllRecords: false
73
+ workflow_admin:
74
+ allowCreate: true
75
+ allowDelete: true
76
+ allowEdit: true
77
+ allowRead: true
78
+ modifyAllRecords: false
79
+ viewAllRecords: false
80
+ modifyCompanyRecords: true
81
+ viewCompanyRecords: true
82
+ organization_admin:
83
+ allowCreate: true
84
+ allowDelete: true
85
+ allowEdit: true
86
+ allowRead: true
87
+ modifyAllRecords: false
88
+ viewAllRecords: false
89
+ modifyCompanyRecords: true
90
+ viewCompanyRecords: true
@@ -54,8 +54,12 @@ permission_set:
54
54
  viewAllRecords: false
55
55
  modifyCompanyRecords: true
56
56
  viewCompanyRecords: true
57
- disabled_list_views: []
58
- disabled_actions: []
59
- unreadable_fields: []
60
- uneditable_fields: []
61
- unrelated_objects: []
57
+ organization_admin:
58
+ allowCreate: true
59
+ allowDelete: true
60
+ allowEdit: true
61
+ allowRead: true
62
+ modifyAllRecords: false
63
+ viewAllRecords: false
64
+ modifyCompanyRecords: true
65
+ viewCompanyRecords: true
@@ -202,7 +202,7 @@
202
202
  "listName": "completed",
203
203
  "rebuildOn": "${flowId || categoryId}",
204
204
  "adaptor": "//在列表上加流程表单字段时,group和user需要特殊处理\nif (api.body.self.listName == \"monitor\") {\n _.each(payload.data.rows, function (item, index) {\n if (item.values) {\n const form_fields = api.body.self.form_fields;\n _.each(item.values, function (field, field_code) {\n const form_field = _.find(form_fields, { code: field_code });\n if (form_field && form_field.type == \"group\") {\n if (form_field.is_multiselect) {\n item.values[field_code] = field && field.length > 0 ? _.map(field, 'fullname').toString() : \"\";\n } else {\n item.values[field_code] = field ? field.fullname : \"\";\n }\n } else if (form_field && form_field.type == \"user\") {\n if (form_field.is_multiselect) {\n item.values[field_code] = field && field.length > 0 ? _.map(field, 'name').toString() : \"\";\n } else {\n item.values[field_code] = field ? field.name : \"\";\n }\n }\n })\n }\n })\n}\n",
205
- "crudDataFilter": "if (data && data.flowId && (data.listName == 'inbox' || 'monitor') && window.innerWidth > 768) {\r\n var api = {\r\n url: \"${context.rootUrl}/graphql\",\r\n method: \"post\",\r\n dataType: \"json\",\r\n data: {\r\n \"query\": '{flow: flows__findOne(id:\"' + data.flowId + '\"){form__expand{current}}}'\r\n },\r\n headers: {\r\n Authorization:\r\n \"Bearer ${context.tenantId},${context.authToken}\",\r\n },\r\n };\r\n return env.fetcher(api).then((result) => {\r\n if (result.data && result.data.flow && result.data.flow.form__expand.current.fields && result.data.flow.form__expand.current.fields.length > 0) {\r\n let fields = result.data.flow.form__expand.current.fields;\r\n fields.forEach(function (field) {\r\n if (field.is_list_display) {\r\n crud.columns.push({\r\n \"name\": \"values.\" + field.code,\r\n \"label\": field.name || field.code,\r\n \"width\": \"unset\",\r\n \"type\": \"text\",\r\n \"className\": \" whitespace-nowrap\",\r\n \"static\": true,\r\n \"options\": null\r\n });\r\n }\r\n })\r\n let schemaApiService = data._scoped.parent.getComponentById(\"instances_list_service\");\r\n schemaApiService && schemaApiService.setData({ form_fields: fields, isFlowDataDone: true });\r\n // crud.api.sendOn = \"this.isFlowDataDone\";\r\n }\r\n return crud;\r\n });\r\n} else {\r\n let schemaApiService = data._scoped.parent.getComponentById(\"instances_list_service\");\r\n schemaApiService && schemaApiService.setData({ isFlowDataDone: true });\r\n // crud.api.sendOn = \"this.isFlowDataDone\";\r\n return crud;\r\n}\r\n"
205
+ "crudDataFilter": "if (data && data.flowId && (data.listName == 'inbox' || 'monitor') && window.innerWidth > 768) {\r\n var api = {\r\n url: \"${context.rootUrl}/graphql\",\r\n method: \"post\",\r\n dataType: \"json\",\r\n data: {\r\n \"query\": '{flow: flows__findOne(id:\"' + data.flowId + '\"){form__expand{current}}}'\r\n },\r\n headers: {\r\n Authorization:\r\n \"Bearer ${context.tenantId},${context.authToken}\",\r\n },\r\n };\r\n return env.fetcher(api).then((result) => {\r\n if (result.data && result.data.flow && result.data.flow.form__expand.current.fields && result.data.flow.form__expand.current.fields.length > 0) {\r\n let fields = result.data.flow.form__expand.current.fields;\r\n fields.forEach(function (field) {\r\n if (field.is_list_display && data.display !== 'split') {\r\n crud.columns.push({\r\n \"name\": \"values.\" + field.code,\r\n \"label\": field.name || field.code,\r\n \"width\": \"unset\",\r\n \"type\": \"text\",\r\n \"className\": \" whitespace-nowrap\",\r\n \"static\": true,\r\n \"options\": null\r\n });\r\n }\r\n })\r\n let schemaApiService = data._scoped.parent.getComponentById(\"instances_list_service\");\r\n schemaApiService && schemaApiService.setData({ form_fields: fields, isFlowDataDone: true });\r\n // crud.api.sendOn = \"this.isFlowDataDone\";\r\n }\r\n return crud;\r\n });\r\n} else {\r\n let schemaApiService = data._scoped.parent.getComponentById(\"instances_list_service\");\r\n schemaApiService && schemaApiService.setData({ isFlowDataDone: true });\r\n // crud.api.sendOn = \"this.isFlowDataDone\";\r\n return crud;\r\n}\r\n"
206
206
  },
207
207
  {
208
208
  "type": "service",
@@ -537,8 +537,12 @@ router.put('/am/flows', async function (req, res) {
537
537
  }
538
538
  });
539
539
  updateObj.$set.category = form['category'];
540
-
541
- await objectql.getObject('flows').update(flowId, {...updateObj.$set, $push: updateObj.$push || {}})
540
+ const updateData = { ...updateObj.$set };
541
+ if (updateObj.$push) {
542
+ updateData.$push = updateObj.$push;
543
+ }
544
+ await objectql.getObject('flows').update(flowId, updateData);
545
+ console.log('update', flowId, 'end');
542
546
  updatedFlows.push(await flowCollection.findOne({_id: flowId}));
543
547
  }
544
548
 
@@ -13,9 +13,9 @@ permissions:
13
13
  permission_set: customer
14
14
  - permission: 'off'
15
15
  permission_set: supplier
16
- - permission: 'off'
16
+ - permission: 'on'
17
17
  permission_set: organization_admin
18
- - permission: 'off'
18
+ - permission: 'on'
19
19
  permission_set: workflow_admin
20
20
  type: object
21
21
  object: categories
@@ -13,9 +13,9 @@ permissions:
13
13
  permission_set: customer
14
14
  - permission: 'off'
15
15
  permission_set: supplier
16
- - permission: 'off'
16
+ - permission: 'on'
17
17
  permission_set: organization_admin
18
- - permission: 'off'
18
+ - permission: 'on'
19
19
  permission_set: workflow_admin
20
20
  type: object
21
21
  object: flow_roles
@@ -13,9 +13,9 @@ permissions:
13
13
  permission_set: customer
14
14
  - permission: 'off'
15
15
  permission_set: supplier
16
- - permission: 'off'
16
+ - permission: 'on'
17
17
  permission_set: organization_admin
18
- - permission: 'off'
18
+ - permission: 'on'
19
19
  permission_set: workflow_admin
20
20
  type: object
21
21
  object: flows
@@ -13,9 +13,9 @@ permissions:
13
13
  permission_set: customer
14
14
  - permission: 'off'
15
15
  permission_set: supplier
16
- - permission: 'off'
16
+ - permission: 'on'
17
17
  permission_set: organization_admin
18
- - permission: 'off'
18
+ - permission: 'on'
19
19
  permission_set: workflow_admin
20
20
  type: object
21
21
  object: instance_number_rules
@@ -13,9 +13,9 @@ permissions:
13
13
  permission_set: customer
14
14
  - permission: 'off'
15
15
  permission_set: supplier
16
- - permission: 'off'
16
+ - permission: 'on'
17
17
  permission_set: organization_admin
18
- - permission: 'off'
18
+ - permission: 'on'
19
19
  permission_set: workflow_admin
20
20
  type: object
21
21
  object: process_delegation_rules
@@ -13,9 +13,9 @@ permissions:
13
13
  permission_set: customer
14
14
  - permission: 'off'
15
15
  permission_set: supplier
16
- - permission: 'off'
16
+ - permission: 'on'
17
17
  permission_set: organization_admin
18
- - permission: 'off'
18
+ - permission: 'on'
19
19
  permission_set: workflow_admin
20
20
  type: object
21
21
  object: space_user_signs
@@ -199,7 +199,8 @@ function transformFormFields(amisField) {
199
199
  is_searchable: _.includes(amisField.className, "is_searchable"),
200
200
  visibleOn: amisField.visibleOn,
201
201
  requiredOn: amisField.requiredOn,
202
- description: amisField.description
202
+ description: amisField.description,
203
+ _amisField: amisField
203
204
  }
204
205
 
205
206
  // console.log('formFieldsItem', formFieldsItem)
@@ -563,6 +564,19 @@ module.exports = {
563
564
  await desingerManager.checkSpaceUserBeforeUpdate(spaceId, userId, roles);
564
565
  // 更新表单
565
566
  await desingerManager.updateForm(this.id, form, updatedForms, updatedFlows, userId);
567
+
568
+ const flows = await objectql.getObject('flows').directFind({
569
+ filters: ['form', '=', this.id],
570
+ fields: ['_id']
571
+ });
572
+
573
+ for (const flow of flows) {
574
+ await objectql.getObject('flows').directUpdate(flow._id, {
575
+ modified: new Date(),
576
+ modified_by: userId
577
+ })
578
+ }
579
+
566
580
  }
567
581
 
568
582
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos-labs/plugin-workflow",
3
- "version": "3.0.8",
3
+ "version": "3.0.10",
4
4
  "main": "package.service.js",
5
5
  "license": "MIT",
6
6
  "scripts": {