@steedos/standard-process-approval 3.0.0-beta.8 → 3.0.0-beta.81

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 (33) hide show
  1. package/main/default/client/process.client.js +1 -5
  2. package/main/default/objectTranslations/workflow_notifications.zh-CN/workflow_notifications.zh-CN.objectTranslation.yml +1 -1
  3. package/main/default/objectTranslations/workflow_outbound_messages.zh-CN/workflow_outbound_messages.zh-CN.objectTranslation.yml +1 -1
  4. package/main/default/objects/process/approval/process_definition/buttons/copy.button.yml +58 -0
  5. package/main/default/objects/process/approval/process_definition/buttons/customize.button.yml +135 -0
  6. package/main/default/objects/process/approval/process_definition/buttons/disable.button.yml +64 -0
  7. package/main/default/objects/process/approval/process_definition/buttons/enable.button.yml +64 -0
  8. package/main/default/objects/process/approval/{process_definition.object.yml → process_definition/process_definition.object.yml} +48 -16
  9. package/main/default/objects/process/approval/process_definition.action.js +38 -55
  10. package/main/default/objects/process/approval/process_node.object.yml +58 -24
  11. package/main/default/objects/process_instance_history/buttons/approve.button.yml +0 -3
  12. package/main/default/objects/process_instance_history/buttons/reassign.button.yml +0 -3
  13. package/main/default/objects/process_instance_history/buttons/recall.button.yml +0 -4
  14. package/main/default/objects/process_instance_history/buttons/reject.button.yml +0 -3
  15. package/main/default/objects/process_instance_history/pages/process_instance_detail.page.amis.json +38 -43
  16. package/main/default/objects/workflow-actions/action_field_updates.object.yml +1 -0
  17. package/main/default/objects/workflow-actions/workflow_notifications.object.yml +1 -0
  18. package/main/default/objects/workflow-actions/workflow_outbound_messages/workflow_outbound_messages.object.yml +2 -1
  19. package/main/default/objects/workflow-actions/workflow_rule.object.yml +26 -24
  20. package/main/default/pages/process_definition_form.page.amis.json +35 -0
  21. package/main/default/pages/process_definition_form.page.yml +13 -0
  22. package/main/default/pages/process_node_form.page.amis.json +65 -0
  23. package/main/default/pages/process_node_form.page.yml +13 -0
  24. package/main/default/pages/workflow_notifications_form.page.amis.json +47 -0
  25. package/main/default/pages/workflow_notifications_form.page.yml +13 -0
  26. package/main/default/pages/workflow_rule_form.page.amis.json +55 -0
  27. package/main/default/pages/workflow_rule_form.page.yml +13 -0
  28. package/main/default/services/approval_process.service.js +70 -2
  29. package/main/default/triggers/process_definition.trigger.js +160 -10
  30. package/main/default/triggers/process_instance_history.trigger.js +8 -1
  31. package/package.json +3 -3
  32. package/main/default/client/action_field_updates.client.js +0 -155
  33. package/main/default/client/workflow_notifications.client.js +0 -74
@@ -0,0 +1,13 @@
1
+ name: workflow_rule_form
2
+ is_active: true
3
+ label: 工作流规则表单
4
+ locked: false
5
+ object_name: workflow_rule
6
+ pageAssignments:
7
+ - type: orgDefault
8
+ page: workflow_rule_form
9
+ desktop: true
10
+ mobile: true
11
+ render_engine: amis
12
+ type: form
13
+ widgets: []
@@ -1,11 +1,12 @@
1
1
  /*
2
2
  * @Author: sunhaolin@hotoa.com
3
3
  * @Date: 2022-12-14 10:26:50
4
- * @LastEditors: sunhaolin@hotoa.com
5
- * @LastEditTime: 2022-12-14 17:15:10
4
+ * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
5
+ * @LastEditTime: 2025-05-13 12:14:22
6
6
  * @Description:
7
7
  */
8
8
  const { getObjectProcessDefinition, recordSubmit } = require('@steedos/process')
9
+ const objectql = require('@steedos/objectql');
9
10
  "use strict";
10
11
  /**
11
12
  * @typedef {import('moleculer').Context} Context Moleculer's Context
@@ -89,6 +90,73 @@ module.exports = {
89
90
  }
90
91
  },
91
92
 
93
+ /**
94
+ * @api {call} copy 复制
95
+ * @apiVersion 0.0.0
96
+ * @apiName copy
97
+ * @apiGroup approval_process.service.js
98
+ * @apiBody {String} recordId 记录ID
99
+ * @apiSuccess {String} state 返回复制结果
100
+ * @apiSuccessExample {json} Success-Response:
101
+ * HTTP/1.1 200 OK
102
+ * {
103
+ * "state": "SUCCESS",
104
+ * _id: newPDID
105
+ * }
106
+ * @apiErrorExample {json} Error-Response:
107
+ * HTTP/1.1 200 OK
108
+ * {
109
+ * "state": "FAILURE",
110
+ * "error": ""
111
+ * }
112
+ */
113
+ copy: {
114
+ // 访问地址: GET /service/api/approval_process/process_definition/:recordId/copy
115
+ rest: {
116
+ method: "GET",
117
+ path: '/process_definition/:recordId/copy'
118
+ },
119
+ params: {
120
+ recordId: { type: 'string' }
121
+ },
122
+ async handler(ctx) {
123
+ try {
124
+ this.broker.logger.info('[service][approval_process]===>', 'process_definition/:recordId/copy', ctx.params.name, ctx.params.recordId)
125
+ const userSession = ctx.meta.user;
126
+ const params = ctx.params;
127
+ const recordId = params.recordId;
128
+ const pdObj = objectql.getObject('process_definition');
129
+ const pnObj = objectql.getObject('process_node');
130
+ const nowTime = new Date().getTime();
131
+ let pd = await pdObj.findOne(recordId, undefined, userSession);
132
+ delete pd._id;
133
+ pd.name = `pd_${nowTime}`; // 名称长度不能大于20个字符;名称只能包含小写字母、数字,必须以字母开头,不能以下划线字符结尾或包含两个连续的下划线字符
134
+ pd.active = false; // 批准过程已启用或者已提交过审批, 禁止添加、删除批准步骤
135
+ pd.is_system = false;
136
+ delete pd.record_permissions
137
+ let newPD = await pdObj.insert(pd);
138
+ let newPDID = newPD._id;
139
+ let pns = await pnObj.find({ filters: ['process_definition', '=', recordId] }, userSession);
140
+ for (let index = 0; index < pns.length; index++) {
141
+ let pn = pns[index];
142
+ delete pn._id;
143
+ pn.process_definition = newPDID;
144
+ pn.name = `pn_${nowTime}_${index}`;
145
+ const now = new Date();
146
+ pn.created = now;
147
+ pn.created_by = userSession.userId
148
+ pn.modified = now;
149
+ pn.modified_by = userSession.userId
150
+ pn.is_system = false;
151
+ delete pn.record_permissions
152
+ await pnObj.directInsert(pn);
153
+ }
154
+ return { state: 'SUCCESS', _id: newPDID };
155
+ } catch (error) {
156
+ return { state: 'FAILURE', error: error.message };
157
+ }
158
+ }
159
+ }
92
160
  },
93
161
 
94
162
  /**
@@ -1,21 +1,78 @@
1
- /*
2
- * @Author: baozhoutao@steedos.com
3
- * @Date: 2025-01-13 11:05:56
4
- * @LastEditors: baozhoutao@steedos.com
5
- * @LastEditTime: 2025-03-05 16:40:58
6
- * @Description:
7
- */
8
1
  const _ = require("underscore");
2
+ const { checkAPIName } = require('@steedos/objectql')
9
3
  const objectql = require('@steedos/objectql');
4
+ const register = require('@steedos/metadata-registrar');
5
+ const odataMongodb = require("@steedos/odata-v4-mongodb");
6
+
7
+ function parserFilters(filters){
8
+ if(_.isString(filters)){
9
+ filters = odataMongodb.createFilter(filters)
10
+ }
11
+ let query = {};
12
+ if(_.isArray(filters) && filters.length > 0 && _.isArray(filters[0])){
13
+ _.each(filters,function(filter){
14
+ Object.assign(query, parserFilters(filter))
15
+ })
16
+ }else if(_.isArray(filters) && filters.length > 0){
17
+ if(filters[1] && filters[1] == '='){
18
+ let key = filters[0]
19
+ let value = filters[2]
20
+ Object.assign(query, {[key]: value})
21
+ }else if(filters[1] && (filters[1] == '!=' || filters[1] == '<>')){
22
+ let key = filters[0]
23
+ let value = filters[2]
24
+ Object.assign(query, {[key]: {$ne: value}})
25
+ }else if(filters[1] && filters[1] == 'in'){
26
+ let key = filters[0]
27
+ let value = filters[2]
28
+ Object.assign(query, {[key]: {$in: value}})
29
+ }else{
30
+ _.each(filters,function(filter){
31
+ let parsedFilters = parserFilters(filter);
32
+ if(query._id && query._id.$ne && parsedFilters._id && parsedFilters._id.$ne){
33
+ parsedFilters._id.$ne = [parsedFilters._id.$ne]
34
+ parsedFilters._id.$ne = parsedFilters._id.$ne.concat(query._id.$ne);
35
+ delete query._id;
36
+ }
37
+ Object.assign(query, parsedFilters)
38
+ })
39
+ }
40
+ }else{
41
+ _.each(filters, function (v, k) {
42
+ if(_.isArray(v) && v.length > 0){
43
+ Object.assign(query, parserFilters(v))
44
+ }else{
45
+ if (k === '$and') {
46
+ Object.assign(query, parserFilters(v))
47
+ } else {
48
+ if(_.isArray(filters) && _.isObject(v)){
49
+ Object.assign(query, v)
50
+ }else{
51
+ Object.assign(query, {[k]: v})
52
+ }
53
+ }
54
+ }
55
+
56
+ })
57
+ }
58
+ return query;
59
+ }
10
60
 
11
61
  function setSpaceAndOwner(record, that){
12
62
  record['space'] = that.spaceId
13
63
  record['owner'] = that.userId
14
64
  }
15
65
 
16
- const getInternalApprovalProcesses = function(sourceApprovalProcesses, filters){
66
+ const getInternalApprovalProcesses = async function(sourceApprovalProcesses, filters){
67
+
68
+
69
+ const datasource = objectql.getDataSource('default');
70
+ const adapter = datasource.adapter
71
+ await adapter.connect()
72
+ const collection = adapter.collection('process_definition');
73
+
17
74
  delete filters.active;
18
- let dbApprovalProcesses = Creator.getCollection("process_definition").find(filters, {fields:{_id:1, name:1}}).fetch();
75
+ let dbApprovalProcesses = await collection.find(filters, {fields:{_id:1, name:1}}).toArray();
19
76
  let approvalProcesses = [];
20
77
 
21
78
  if(!filters.is_system){
@@ -32,7 +89,7 @@ const getInternalApprovalProcesses = function(sourceApprovalProcesses, filters){
32
89
 
33
90
  module.exports = {
34
91
  beforeInsert: async function () {
35
- await objectql.checkAPIName(this.object_name, 'name', this.doc.name, undefined, [['is_system','!=', true]]);
92
+ await checkAPIName(this.object_name, 'name', this.doc.name, undefined, [['is_system','!=', true]]);
36
93
 
37
94
  objectql.checkFormula(this.doc.entry_criteria, this.doc.object_name)
38
95
 
@@ -42,5 +99,98 @@ module.exports = {
42
99
  if(!this.doc.recall_record_lock){
43
100
  this.doc.recall_record_lock = 'unlock';
44
101
  }
102
+ },
103
+ beforeUpdate: async function () {
104
+ if(_.has(this.doc, 'object_name')){
105
+ var process = await objectql.getObject("process_definition").findOne(this.id);
106
+ if(process.object_name != this.doc.object_name){
107
+ throw new Error('禁止修改对象名称');
108
+ }
109
+ };
110
+ if (_.has(this.doc, 'name')) {
111
+ await checkAPIName(this.object_name, 'name', this.doc.name, this.id, [['is_system','!=', true]]);
112
+ }
113
+
114
+ objectql.checkFormula(this.doc.entry_criteria, this.doc.object_name)
115
+ },
116
+ afterFind: async function(){
117
+ let spaceId = this.spaceId;
118
+ let filters = parserFilters(this.query.filters)
119
+ let approvalProcesses = [];
120
+ if(filters.name){
121
+ approvalProcess = register.getSourceApprovalProcess(filters.name);
122
+ if(approvalProcess){
123
+ approvalProcesses.push(approvalProcess);
124
+ }
125
+ }else{
126
+ approvalProcesses = register.getSourceApprovalProcesses();
127
+ }
128
+
129
+ if (filters.object_name){
130
+ approvalProcesses = _.where(approvalProcesses, {object_name: filters.object_name});
131
+ }
132
+
133
+ approvalProcesses = await getInternalApprovalProcesses(approvalProcesses, filters);
134
+
135
+ if(approvalProcesses){
136
+ this.data.values = this.data.values.concat(approvalProcesses)
137
+ this.data.values = objectql.getSteedosSchema().metadataDriver.find(this.data.values, this.query, spaceId);
138
+ }
139
+ },
140
+ afterAggregate: async function(){
141
+ let filters = parserFilters(this.query.filters)
142
+ let approvalProcesses = [];
143
+ if(filters.name){
144
+ approvalProcess = register.getSourceApprovalProcess(filters.name);
145
+ if(approvalProcess){
146
+ approvalProcesses.push(approvalProcess);
147
+ }
148
+ }else{
149
+ approvalProcesses = register.getSourceApprovalProcesses();
150
+ }
151
+
152
+ if (filters.object_name){
153
+ approvalProcesses = _.where(approvalProcesses, {object_name: filters.object_name});
154
+ }
155
+
156
+ approvalProcesses = await getInternalApprovalProcesses(approvalProcesses, filters);
157
+
158
+ if(approvalProcesses){
159
+ this.data.values = this.data.values.concat(approvalProcesses)
160
+ }
161
+ },
162
+ afterCount: async function(){
163
+ let filters = parserFilters(this.query.filters)
164
+ let approvalProcesses = [];
165
+ if(filters.name){
166
+ approvalProcess = register.getSourceApprovalProcess(filters.name);
167
+ if(approvalProcess){
168
+ approvalProcesses.push(approvalProcess);
169
+ }
170
+ }else{
171
+ approvalProcesses = register.getSourceApprovalProcesses();
172
+ }
173
+
174
+ if (filters.object_name){
175
+ approvalProcesses = _.where(approvalProcesses, {object_name: filters.object_name});
176
+ }
177
+
178
+ approvalProcesses = await getInternalApprovalProcesses(approvalProcesses, filters);
179
+
180
+ if(approvalProcesses){
181
+ this.data.values = this.data.values + approvalProcesses.length
182
+ }
183
+ },
184
+ afterFindOne: async function(){
185
+ if(_.isEmpty(this.data.values)){
186
+ let id = this.id
187
+ if(id){
188
+ let approvalProcess = objectql.getSourceApprovalProcess(id);
189
+ if(approvalProcess){
190
+ setSpaceAndOwner(approvalProcess, this);
191
+ this.data.values = approvalProcess;
192
+ }
193
+ }
194
+ }
45
195
  }
46
196
  }
@@ -1,5 +1,12 @@
1
+ /*
2
+ * @Author: 殷亮辉 yinlianghui@hotoa.com
3
+ * @Date: 2025-04-14 09:47:57
4
+ * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
5
+ * @LastEditTime: 2025-04-29 11:24:43
6
+ */
1
7
  const _ = require("underscore");
2
8
  const auth = require("@steedos/auth");
9
+ const steedosI18n = require("@steedos/i18n");
3
10
 
4
11
  const getLng = async function(userId){
5
12
  const userSession = await auth.getSessionByUserId(userId);
@@ -8,7 +15,7 @@ const getLng = async function(userId){
8
15
 
9
16
  const getEmptyNodeTitle = async function(userId){
10
17
  let lng = await getLng(userId);
11
- return t('process_approval_empty_node_title', {}, lng);
18
+ return steedosI18n.t('process_approval_empty_node_title', {}, lng);
12
19
  }
13
20
 
14
21
  module.exports = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/standard-process-approval",
3
- "version": "3.0.0-beta.8",
3
+ "version": "3.0.0-beta.81",
4
4
  "main": "package.service.js",
5
5
  "private": false,
6
6
  "publishConfig": {
@@ -10,11 +10,11 @@
10
10
  "steedos"
11
11
  ],
12
12
  "dependencies": {
13
- "@steedos/process": "3.0.0-beta.8",
13
+ "@steedos/process": "3.0.0-beta.81",
14
14
  "nanoid": "^3.3.4"
15
15
  },
16
16
  "description": "steedos package",
17
17
  "repository": {},
18
18
  "license": "MIT",
19
- "gitHead": "723d92765db5342a374c7aacb5b835e69f77ca4b"
19
+ "gitHead": "15126b1b1de6e4cb0592f0bc55e1458cac2a1894"
20
20
  }
@@ -1,155 +0,0 @@
1
- Steedos.ProcessFieldUpdatesManager = {};
2
-
3
- Steedos.ProcessFieldUpdatesManager.changeSchema = function (doc, schema) {
4
- var objectSchema = Creator.getObjectSchema(Creator.getObject("action_field_updates"));
5
- var operation = doc.operation;
6
-
7
- var hiddenField = function (fieldName) {
8
- schema._schema[fieldName].autoform.omit = true;
9
- schema._schema[fieldName].autoform.type = 'hidden';
10
- }
11
- // var recordId = Session.get("record_id");
12
- var objectName = Session.get("object_name");
13
- var actionObjectName = Session.get("action_object_name");
14
- var actionOperation = Session.get("cmOperation");
15
- if (objectName == 'process_node') {
16
- var processDefinitionId = AutoForm.getFormValues("creatorEditForm").insertDoc.process_definition; //Creator.odata.get("process_node", recordId, "process_definition").process_definition;
17
- if(processDefinitionId){
18
- var object_name = Creator.odata.get("process_definition", processDefinitionId, "object_name").object_name;
19
- schema._schema.object_name.autoform.readonly = true;
20
- doc.object_name = object_name;
21
- }else{
22
- toastr.error(t("action_field_updates_field__error_process_node_process_definition_required"));
23
- }
24
- }
25
-
26
- if (objectName == 'process_definition') {
27
- var object_name = null;
28
- if(actionObjectName == "process_definition"){
29
- // 当前正在新建或编辑批准过程
30
- if (actionOperation == 'update') {
31
- object_name = AutoForm.getFormValues("creatorEditForm").insertDoc.object_name;
32
- } else {
33
- object_name = AutoForm.getFormValues("creatorAddForm").insertDoc.object_name;
34
- }
35
- if(!object_name){
36
- toastr.error(t("action_field_updates_field__error_process_definition_object_required"));
37
- }
38
- }else{
39
- // 当前正在新建或编辑批准过程以外其他对象,目前只有批准过程详细界面新建或编辑批准步骤
40
- if (actionOperation == 'update') {
41
- var processDefinitionId = AutoForm.getFormValues("creatorEditForm").insertDoc.process_definition;
42
- if(processDefinitionId){
43
- object_name = Creator.odata.get("process_definition", processDefinitionId, "object_name").object_name;
44
- }
45
- else{
46
- toastr.error(t("action_field_updates_field__error_process_node_process_definition_required"));
47
- }
48
- } else {
49
- var formValues = AutoForm.getFormValues("creatorAddRelatedForm");
50
- if(!formValues){
51
- // 有可能是在批准过程详细界面点击了批准步骤列表顶部的链接进入了“相关批准步骤列表界面”然后点击的右上角的新建按钮触发的
52
- formValues = AutoForm.getFormValues("creatorAddForm");
53
- }
54
- var processDefinitionId = formValues.insertDoc.process_definition;
55
- if(processDefinitionId){
56
- object_name = Creator.odata.get("process_definition", processDefinitionId, "object_name").object_name;
57
- }
58
- else{
59
- toastr.error(t("action_field_updates_field__error_process_node_process_definition_required"));
60
- }
61
- }
62
- }
63
- schema._schema.object_name.autoform.readonly = true;
64
- doc.object_name = object_name;
65
- }
66
-
67
- if (objectName == 'workflow_rule') {
68
- var object_name = null;
69
- if (actionOperation == 'update') {
70
- object_name = AutoForm.getFormValues("creatorEditForm").insertDoc.object_name //Creator.odata.get("workflow_rule", Session.get("record_id"), "object_name").object_name;
71
- } else {
72
- object_name = AutoForm.getFormValues("creatorAddForm").insertDoc.object_name
73
- }
74
- schema._schema.object_name.autoform.readonly = true;
75
- if(object_name){
76
- doc.object_name = object_name;
77
- }
78
- else{
79
- toastr.error(t("action_field_updates_field__error_workflow_rule_object_required"));
80
- }
81
- }
82
-
83
- // if(doc.process_definition){
84
- // hiddenField('process_node');
85
- // schema._schema.when.autoform.options = _.filter(objectSchema.when.autoform.options, function(option){return _.include(['final_approval','final_rejection','recall','initial_submission'], option.value)});
86
- // var pid = doc.process_definition;
87
- // if(_.isObject(pid)){
88
- // if(_.has(pid, 'ids') && pid.ids.length > 0){
89
- // pid = pid.ids[0];
90
- // }else{
91
- // pid = pid._id;
92
- // }
93
- // }
94
- // var object_name = Creator.odata.get("process_definition", pid, "object_name").object_name;
95
- // schema._schema.object_name.optionsFunction = function(){var _obj = Creator.getObject(object_name); return [{label: _obj.label, value: _obj.name, icon: _obj.icon}]}
96
- // doc.object_name = object_name;
97
- // }else{
98
- // schema._schema.process_node = objectSchema.process_node;
99
- // schema._schema.when.autoform.options = _.filter(objectSchema.when.autoform.options, function(option){return _.include(['approval','rejection'], option.value)})
100
- // }
101
-
102
- // if(doc.process_node){
103
- // hiddenField('process_definition');
104
- // var pnid = doc.process_node;
105
- // if(_.isObject(pnid)){
106
- // if(_.has(pnid, 'ids') && pnid.ids.length > 0){
107
- // pnid = pnid.ids[0];
108
- // }else{
109
- // pnid = pnid._id;
110
- // }
111
- // }
112
- // var processDefinitionId = Creator.odata.get("process_node", pnid, "process_definition").process_definition;
113
- // var object_name = Creator.odata.get("process_definition", processDefinitionId, "object_name").object_name;
114
- // schema._schema.object_name.optionsFunction = function(){var _obj = Creator.getObject(object_name); return [{label: _obj.label, value: _obj.name, icon: _obj.icon}]}
115
- // doc.object_name = object_name;
116
- // schema._schema.when.autoform.options = _.filter(objectSchema.when.autoform.options, function(option){return _.include(['approval','rejection'], option.value)})
117
- // }else{
118
- // schema._schema.process_definition = objectSchema.process_definition;
119
- // schema._schema.when.autoform.options = _.filter(objectSchema.when.autoform.options, function(option){return _.include(['final_approval','final_rejection','recall','initial_submission'], option.value)})
120
- // }
121
-
122
- if (operation === 'null') {
123
- hiddenField('formula');
124
- hiddenField('literal_value');
125
- }
126
-
127
- if (operation === 'formula') {
128
- schema._schema.formula = objectSchema.formula;
129
- hiddenField('literal_value');
130
- }
131
-
132
- if (operation === 'literal') {
133
- schema._schema.formula.autoform.type = 'hidden';
134
- var doc = doc;
135
- var mainObjectName = null;
136
- if (doc.target_object && doc.target_object != doc.object_name) {
137
- var mainObjectName = Creator.objectsByName[doc.object_name].fields[doc.target_object].reference_to;
138
- } else {
139
- mainObjectName = doc.object_name;
140
- }
141
- var object = Creator.objectsByName[mainObjectName];
142
- if (object && doc.field_name) {
143
- schema._schema.literal_value = Object.assign({}, Creator.getObjectSchema(Creator.getObject(mainObjectName))[doc.field_name], { label: schema._schema.literal_value.label });
144
- schema._schema.literal_value.autoform.disabled = false;
145
- schema._schema.literal_value.autoform.omit = false;
146
- schema._schema.literal_value.autoform.readonly = false;
147
- schema._schema.literal_value.autoform.is_wide = true;
148
- } else {
149
- schema._schema.literal_value.autoform.type = 'text';
150
- }
151
-
152
- }else{
153
- schema._schema.literal_value.optional = true;
154
- }
155
- }
@@ -1,74 +0,0 @@
1
- Steedos.WorkflowNotificationsManager = {};
2
-
3
- Steedos.WorkflowNotificationsManager.changeSchema = function (doc, schema) {
4
- var objectName = Session.get("object_name");
5
- var actionObjectName = Session.get("action_object_name");
6
- var actionOperation = Session.get("cmOperation");
7
- if (objectName == 'process_node') {
8
- var processDefinitionId = AutoForm.getFormValues("creatorEditForm").insertDoc.process_definition; //Creator.odata.get("process_node", recordId, "process_definition").process_definition;
9
- if(processDefinitionId){
10
- var object_name = Creator.odata.get("process_definition", processDefinitionId, "object_name").object_name;
11
- schema._schema.object_name.autoform.readonly = true;
12
- doc.object_name = object_name;
13
- }else{
14
- toastr.error(t("workflow_notifications_field__error_process_node_process_definition_required"));
15
- }
16
- }
17
-
18
- if (objectName == 'process_definition') {
19
- var object_name = null;
20
- if(actionObjectName == "process_definition"){
21
- // 当前正在新建或编辑批准过程
22
- if (actionOperation == 'update') {
23
- object_name = AutoForm.getFormValues("creatorEditForm").insertDoc.object_name;
24
- } else {
25
- object_name = AutoForm.getFormValues("creatorAddForm").insertDoc.object_name;
26
- }
27
- if(!object_name){
28
- toastr.error(t("workflow_notifications_field__error_process_definition_object_required"));
29
- }
30
- }else{
31
- // 当前正在新建或编辑批准过程以外其他对象,目前只有批准过程详细界面新建或编辑批准步骤
32
- if (actionOperation == 'update') {
33
- var processDefinitionId = AutoForm.getFormValues("creatorEditForm").insertDoc.process_definition;
34
- if(processDefinitionId){
35
- object_name = Creator.odata.get("process_definition", processDefinitionId, "object_name").object_name;
36
- }
37
- else{
38
- toastr.error(t("workflow_notifications_field__error_process_node_process_definition_required"));
39
- }
40
- } else {
41
- var formValues = AutoForm.getFormValues("creatorAddRelatedForm");
42
- if(!formValues){
43
- // 有可能是在批准过程详细界面点击了批准步骤列表顶部的链接进入了“相关批准步骤列表界面”然后点击的右上角的新建按钮触发的
44
- formValues = AutoForm.getFormValues("creatorAddForm");
45
- }
46
- var processDefinitionId = formValues.insertDoc.process_definition;
47
- if(processDefinitionId){
48
- object_name = Creator.odata.get("process_definition", processDefinitionId, "object_name").object_name;
49
- }
50
- else{
51
- toastr.error(t("workflow_notifications_field__error_process_node_process_definition_required"));
52
- }
53
- }
54
- }
55
- schema._schema.object_name.autoform.readonly = true;
56
- doc.object_name = object_name;
57
- }
58
-
59
- if (objectName == 'workflow_rule') {
60
- var object_name = null;
61
- if (actionOperation == 'update') {
62
- object_name = AutoForm.getFormValues("creatorEditForm").insertDoc.object_name //Creator.odata.get("workflow_rule", Session.get("record_id"), "object_name").object_name;
63
- } else {
64
- object_name = AutoForm.getFormValues("creatorAddForm").insertDoc.object_name
65
- }
66
- schema._schema.object_name.autoform.readonly = true;
67
- if(object_name){
68
- doc.object_name = object_name;
69
- }
70
- else{
71
- toastr.error(t("workflow_notifications_field__error_workflow_rule_object_required"));
72
- }
73
- }
74
- }