workflow-editor 0.9.68-dw → 0.9.68

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 (120) hide show
  1. package/lib/workflow-editor.css +1 -1
  2. package/lib/workflow-editor.umd.min.js +10 -10
  3. package/package.json +2 -2
  4. package/packages/index.js +34 -0
  5. package/packages/plugins/formValidatorUtil.js +533 -0
  6. package/packages/plugins/index.js +8 -0
  7. package/packages/workflow-editor/index.js +14 -0
  8. package/packages/workflow-editor/src/api.js +7 -0
  9. package/packages/workflow-editor/src/assets/wf-editor-icons.js +2 -0
  10. package/packages/workflow-editor/src/constant.js +8 -0
  11. package/packages/workflow-editor/src/json-object-templates/auto-task.js +70 -0
  12. package/packages/workflow-editor/src/json-object-templates/copy-task.js +72 -0
  13. package/packages/workflow-editor/src/json-object-templates/decision.js +11 -0
  14. package/packages/workflow-editor/src/json-object-templates/end.js +14 -0
  15. package/packages/workflow-editor/src/json-object-templates/fork.js +10 -0
  16. package/packages/workflow-editor/src/json-object-templates/human-decision.js +9 -0
  17. package/packages/workflow-editor/src/json-object-templates/human-task.js +199 -0
  18. package/packages/workflow-editor/src/json-object-templates/join.js +10 -0
  19. package/packages/workflow-editor/src/json-object-templates/process.js +98 -0
  20. package/packages/workflow-editor/src/json-object-templates/start.js +13 -0
  21. package/packages/workflow-editor/src/json-object-templates/subprocess.js +31 -0
  22. package/packages/workflow-editor/src/json-object-templates/transition.js +26 -0
  23. package/packages/workflow-editor/src/main/admin-save-dialog.vue +66 -0
  24. package/packages/workflow-editor/src/main/canvas.vue +483 -0
  25. package/packages/workflow-editor/src/main/context-menu.vue +132 -0
  26. package/packages/workflow-editor/src/main/icon-svg.vue +32 -0
  27. package/packages/workflow-editor/src/main/selection-region.vue +66 -0
  28. package/packages/workflow-editor/src/main/tache-history-tooltip.vue +38 -0
  29. package/packages/workflow-editor/src/main/tache-name-input.vue +19 -0
  30. package/packages/workflow-editor/src/main/tache-subprocess-history-dialog.vue +35 -0
  31. package/packages/workflow-editor/src/main/toolbox.vue +60 -0
  32. package/packages/workflow-editor/src/main/wf-history-canvas.vue +304 -0
  33. package/packages/workflow-editor/src/process-json.js +623 -0
  34. package/packages/workflow-editor/src/process-service.js +31 -0
  35. package/packages/workflow-editor/src/properties-editors/auto-task/basic-properties.vue +81 -0
  36. package/packages/workflow-editor/src/properties-editors/auto-task/permission-settings.vue +155 -0
  37. package/packages/workflow-editor/src/properties-editors/auto-task.vue +73 -0
  38. package/packages/workflow-editor/src/properties-editors/common/additional-condition-utils.js +556 -0
  39. package/packages/workflow-editor/src/properties-editors/common/additional-condition.vue +276 -0
  40. package/packages/workflow-editor/src/properties-editors/common/auto-filled-fields-utils.js +34 -0
  41. package/packages/workflow-editor/src/properties-editors/common/auto-filled-fields.vue +239 -0
  42. package/packages/workflow-editor/src/properties-editors/common/common-notice-tool.vue +67 -0
  43. package/packages/workflow-editor/src/properties-editors/common/common-user-condition.vue +241 -0
  44. package/packages/workflow-editor/src/properties-editors/common/form-fields-utils.js +23 -0
  45. package/packages/workflow-editor/src/properties-editors/common/form-fields.vue +116 -0
  46. package/packages/workflow-editor/src/properties-editors/common/i18n-input.vue +75 -0
  47. package/packages/workflow-editor/src/properties-editors/common/i18n-set-dialog.vue +125 -0
  48. package/packages/workflow-editor/src/properties-editors/common/notice-reminder.vue +72 -0
  49. package/packages/workflow-editor/src/properties-editors/common/notice.vue +101 -0
  50. package/packages/workflow-editor/src/properties-editors/common/reminder.vue +185 -0
  51. package/packages/workflow-editor/src/properties-editors/common/select-mail-template.vue +83 -0
  52. package/packages/workflow-editor/src/properties-editors/common/standard-fields.vue +65 -0
  53. package/packages/workflow-editor/src/properties-editors/common/system-role-tree-inline.vue +355 -0
  54. package/packages/workflow-editor/src/properties-editors/common/system-role-tree.vue +63 -0
  55. package/packages/workflow-editor/src/properties-editors/common/task-title.vue +148 -0
  56. package/packages/workflow-editor/src/properties-editors/common/transactor-settings.vue +275 -0
  57. package/packages/workflow-editor/src/properties-editors/common/user-selection.vue +386 -0
  58. package/packages/workflow-editor/src/properties-editors/common/value-selection-dialog.vue +209 -0
  59. package/packages/workflow-editor/src/properties-editors/common/variables.vue +135 -0
  60. package/packages/workflow-editor/src/properties-editors/copy-task/basic-properties.vue +90 -0
  61. package/packages/workflow-editor/src/properties-editors/copy-task/permission-settings.vue +155 -0
  62. package/packages/workflow-editor/src/properties-editors/copy-task.vue +94 -0
  63. package/packages/workflow-editor/src/properties-editors/decision.vue +90 -0
  64. package/packages/workflow-editor/src/properties-editors/fork.vue +72 -0
  65. package/packages/workflow-editor/src/properties-editors/human-decision.vue +44 -0
  66. package/packages/workflow-editor/src/properties-editors/human-task/additional-condition-dialog.vue +60 -0
  67. package/packages/workflow-editor/src/properties-editors/human-task/basic-properties.vue +160 -0
  68. package/packages/workflow-editor/src/properties-editors/human-task/componentsConfigUtil.js +291 -0
  69. package/packages/workflow-editor/src/properties-editors/human-task/custom-actions.vue +249 -0
  70. package/packages/workflow-editor/src/properties-editors/human-task/editable-child-field-setting.vue +392 -0
  71. package/packages/workflow-editor/src/properties-editors/human-task/editable-child-fields.vue +241 -0
  72. package/packages/workflow-editor/src/properties-editors/human-task/editable-field-selection.vue +220 -0
  73. package/packages/workflow-editor/src/properties-editors/human-task/editable-fields.vue +204 -0
  74. package/packages/workflow-editor/src/properties-editors/human-task/events.vue +59 -0
  75. package/packages/workflow-editor/src/properties-editors/human-task/permission-settings.vue +207 -0
  76. package/packages/workflow-editor/src/properties-editors/human-task/selection-conditions.vue +390 -0
  77. package/packages/workflow-editor/src/properties-editors/human-task.vue +109 -0
  78. package/packages/workflow-editor/src/properties-editors/join.vue +44 -0
  79. package/packages/workflow-editor/src/properties-editors/process/basic-properties.vue +273 -0
  80. package/packages/workflow-editor/src/properties-editors/process/events.vue +76 -0
  81. package/packages/workflow-editor/src/properties-editors/process/notice-settings.vue +60 -0
  82. package/packages/workflow-editor/src/properties-editors/process/parameter-settings.vue +95 -0
  83. package/packages/workflow-editor/src/properties-editors/process/permission-settings.vue +28 -0
  84. package/packages/workflow-editor/src/properties-editors/process/selectPage.vue +81 -0
  85. package/packages/workflow-editor/src/properties-editors/process.vue +115 -0
  86. package/packages/workflow-editor/src/properties-editors/subprocess/basic-properties.vue +199 -0
  87. package/packages/workflow-editor/src/properties-editors/subprocess/events.vue +26 -0
  88. package/packages/workflow-editor/src/properties-editors/subprocess/field-mappings.vue +206 -0
  89. package/packages/workflow-editor/src/properties-editors/subprocess/transactor-settings.vue +64 -0
  90. package/packages/workflow-editor/src/properties-editors/subprocess.vue +79 -0
  91. package/packages/workflow-editor/src/properties-editors/transition/basic-properties.vue +53 -0
  92. package/packages/workflow-editor/src/properties-editors/transition.vue +74 -0
  93. package/packages/workflow-editor/src/properties-editors/user-condition.js +183 -0
  94. package/packages/workflow-editor/src/store/getters.js +27 -0
  95. package/packages/workflow-editor/src/store/workflow-editor.js +125 -0
  96. package/packages/workflow-editor/src/taches/auto-task.vue +99 -0
  97. package/packages/workflow-editor/src/taches/common-methods.js +21 -0
  98. package/packages/workflow-editor/src/taches/copy-task.vue +99 -0
  99. package/packages/workflow-editor/src/taches/custom-task.vue +88 -0
  100. package/packages/workflow-editor/src/taches/decision.vue +102 -0
  101. package/packages/workflow-editor/src/taches/end.vue +76 -0
  102. package/packages/workflow-editor/src/taches/fork.vue +102 -0
  103. package/packages/workflow-editor/src/taches/human-decision.vue +102 -0
  104. package/packages/workflow-editor/src/taches/human-task.vue +113 -0
  105. package/packages/workflow-editor/src/taches/join.vue +91 -0
  106. package/packages/workflow-editor/src/taches/joint.vue +177 -0
  107. package/packages/workflow-editor/src/taches/start.vue +76 -0
  108. package/packages/workflow-editor/src/taches/subprocess.vue +99 -0
  109. package/packages/workflow-editor/src/taches/tache-resizer.vue +80 -0
  110. package/packages/workflow-editor/src/transitions/broken-line.vue +91 -0
  111. package/packages/workflow-editor/src/transitions/curve-line.vue +91 -0
  112. package/packages/workflow-editor/src/transitions/straight-line.vue +26 -0
  113. package/packages/workflow-editor/src/transitions/transition.vue +212 -0
  114. package/packages/workflow-editor/src/transitions/virtual-transition.vue +43 -0
  115. package/packages/workflow-editor/src/util.js +489 -0
  116. package/packages/workflow-editor/src/workflow-editor.vue +607 -0
  117. package/packages/workflow-editor/src/workflow-history.vue +153 -0
  118. package/src/i18n/i18n.js +1 -1
  119. package/src/i18n/langs/cn.js +43 -24
  120. package/src/i18n/langs/en.js +23 -7
@@ -0,0 +1,556 @@
1
+ import { getFormField, getFormFieldLabel } from './form-fields-utils'
2
+ import { getI18n } from '../../../../workflow-editor/src/util'
3
+ export const standardFields = [
4
+ {
5
+ name: '${approvalResult}',
6
+ label: getI18n().t('workflowEditor.process.approvalResults'),
7
+ orgType: 'other'
8
+ },
9
+ {
10
+ name: '${instanceCreatorName}',
11
+ label: getI18n().t('workflowEditor.process.processInitiator'),
12
+ orgType: 'user'
13
+ },
14
+ {
15
+ name: '${instanceCreatorRole}',
16
+ label: getI18n().t('workflowEditor.process.processInitiatorRole'),
17
+ orgType: 'role'
18
+ },
19
+ {
20
+ name: '${instanceCreatorDepartment}',
21
+ label: getI18n().t('workflowEditor.process.processInitiatorDepartment'),
22
+ orgType: 'department',
23
+ relatedFields: ['upstageDepartment']
24
+
25
+ },
26
+ {
27
+ name: '${superiorDepartment}',
28
+ label: getI18n().t('workflowEditor.process.processInitiatorSuperiorDepartment'),
29
+ orgType: 'department',
30
+ relatedFields: ['upstageDepartment']
31
+ },
32
+ {
33
+ name: '${instanceCreatorUpstageDepartment}',
34
+ label: getI18n().t('workflowEditor.process.processInitiatorTopDepartment'),
35
+ orgType: 'department'
36
+ },
37
+ {
38
+ name: '${instanceCreatorWorkGroup}',
39
+ label: getI18n().t('workflowEditor.process.processInitiatorWorkingGroup'),
40
+ orgType: 'workgroup'
41
+ },
42
+ {
43
+ name: '${instanceCreatorDirectSuperiorName}',
44
+ label: getI18n().t('workflowEditor.process.sponsorsImmediateSuperior'),
45
+ orgType: 'user'
46
+ },
47
+ {
48
+ name: '${instanceCreatorDeptApprover}',
49
+ label: getI18n().t('workflowEditor.process.deptApprover'),
50
+ orgType: 'user'
51
+ },
52
+ {
53
+ name: '${instanceCreatorDirectSuperiorDeptApprover}',
54
+ label: getI18n().t('workflowEditor.process.superiorDeptApprover'),
55
+ orgType: 'user'
56
+ },
57
+ {
58
+ name: '${instanceCreatorDirectSuperiorDeptLeader}',
59
+ label: getI18n().t('workflowEditor.process.superiorDeptLeader'),
60
+ orgType: 'user'
61
+ },
62
+ {
63
+ name: '${instanceCreatorDirectSuperiorDepartment}',
64
+ label: getI18n().t('workflowEditor.process.processInitiatorsDirectSuperiorDepartment'),
65
+ orgType: 'department',
66
+ relatedFields: ['upstageDepartment']
67
+ },
68
+ {
69
+ name: '${instanceCreatorDirectSuperiorRole}',
70
+ label: getI18n().t('workflowEditor.process.directSuperiorRoleOfProcessInitiator'),
71
+ orgType: 'role'
72
+ },
73
+ {
74
+ name: '${instanceCreatorDirectSuperiorWorkGroup}',
75
+ label: getI18n().t('workflowEditor.process.ProcessInitiatorsImmediateSuperiorWorkingGroup'),
76
+ orgType: 'workgroup'
77
+ },
78
+ {
79
+ name: '${currentTransactorName}',
80
+ label: getI18n().t('workflowEditor.process.nameOfCurrentHandler'),
81
+ orgType: 'user',
82
+ relatedFields: ['instanceCreatorName', 'instanceCreatorDirectSuperiorName']
83
+ },
84
+ {
85
+ name: '${currentTransactorRole}',
86
+ label: getI18n().t('workflowEditor.process.currentHandlerRole'),
87
+ orgType: 'role'
88
+ },
89
+ {
90
+ name: '${currentTransactorDepartment}',
91
+ label: getI18n().t('workflowEditor.process.currentHandlerDepartment'),
92
+ orgType: 'department',
93
+ relatedFields: ['instanceCreatorDepartment', 'superiorDepartment', 'instanceCreatorUpstageDepartment', 'instanceCreatorDirectSuperiorDepartment', 'upstageDepartment']
94
+ },
95
+ {
96
+ name: '${currentTransactorSuperiorDepartment}',
97
+ label: getI18n().t('workflowEditor.process.currentHandlerSuperiorDepartment'),
98
+ orgType: 'department',
99
+ relatedFields: ['instanceCreatorDepartment', 'superiorDepartment', 'instanceCreatorUpstageDepartment', 'instanceCreatorDirectSuperiorDepartment', 'upstageDepartment']
100
+ },
101
+ {
102
+ name: '${currentTransactorUpstageDepartment}',
103
+ label: getI18n().t('workflowEditor.process.topDepartmentOfCurrentHandler'),
104
+ orgType: 'department',
105
+ relatedFields: ['instanceCreatorDepartment', 'superiorDepartment', 'instanceCreatorUpstageDepartment', 'instanceCreatorDirectSuperiorDepartment']
106
+ },
107
+ {
108
+ name: '${currentTransactorWorkGroup}',
109
+ label: getI18n().t('workflowEditor.process.currentHandlerWorkingGroup'),
110
+ orgType: 'workgroup'
111
+ },
112
+ {
113
+ name: '${currentTransactorDirectSuperiorName}',
114
+ label: getI18n().t('workflowEditor.process.nameOfTheImmediateSuperiorOfTheCurrentHandler'),
115
+ orgType: 'user',
116
+ relatedFields: ['instanceCreatorName', 'instanceCreatorDirectSuperiorName']
117
+ },
118
+ {
119
+ name: '${currentTransactorDirectSuperiorDepartment}',
120
+ label: getI18n().t('workflowEditor.process.currentHandlerDirectSuperiorDepartment'),
121
+ orgType: 'department',
122
+ relatedFields: ['instanceCreatorDepartment', 'superiorDepartment', 'instanceCreatorUpstageDepartment', 'instanceCreatorDirectSuperiorDepartment', 'upstageDepartment']
123
+ },
124
+ {
125
+ name: '${currentTransactorDirectSuperiorRole}',
126
+ label: getI18n().t('workflowEditor.process.currentManagerDirectSuperiorRole'),
127
+ orgType: 'role'
128
+ },
129
+ {
130
+ name: '${currentTransactorDirectSuperiorWorkGroup}',
131
+ label: getI18n().t('workflowEditor.process.workingGroupDirectlyUnderTheCurrentHandler'),
132
+ orgType: 'workgroup'
133
+ },
134
+ {
135
+ name: '${upstageDepartment}',
136
+ label: getI18n().t('workflowEditor.process.topDepartments'),
137
+ orgType: 'department'
138
+ },
139
+ {
140
+ name: '${countersignatureDisagreeCount}',
141
+ label: getI18n().t('workflowEditor.process.totalNnumberOfPersonsWhoDisagreeWithTheCountersignature'),
142
+ orgType: 'other',
143
+ dataType: 'INTEGER'
144
+ },
145
+ {
146
+ name: '${countersignatureAgreeCount}',
147
+ label: getI18n().t('workflowEditor.process.totalNumberOfCountersignedAndAgreedPersonnel'),
148
+ orgType: 'other',
149
+ dataType: 'INTEGER'
150
+ },
151
+ {
152
+ name: '${countersignatureDisagreePercentage}',
153
+ label: getI18n().t('workflowEditor.process.percentageOfPersonsWhoDisagreeWithTheCountersignature'),
154
+ orgType: 'other',
155
+ dataType: 'INTEGER'
156
+ },
157
+ {
158
+ name: '${countersignatureAgreePercentage}',
159
+ label: getI18n().t('workflowEditor.process.percentageOfCountersignedAndAgreedPersonnel'),
160
+ orgType: 'other',
161
+ dataType: 'INTEGER'
162
+ },
163
+ {
164
+ name: '${abstentionPercentage}',
165
+ label: getI18n().t('workflowEditor.process.percentageOfAbstentions'),
166
+ orgType: 'other',
167
+ dataType: 'INTEGER'
168
+ },
169
+ {
170
+ name: '${againstPercentage}',
171
+ label: getI18n().t('workflowEditor.process.percentageOfVotesAgainst'),
172
+ orgType: 'other',
173
+ dataType: 'INTEGER'
174
+ },
175
+ {
176
+ name: '${favorPercentage}',
177
+ label: getI18n().t('workflowEditor.process.percentageOfAffirmativeVotes'),
178
+ orgType: 'other',
179
+ dataType: 'INTEGER'
180
+ },
181
+ {
182
+ name: '${abstentionCount}',
183
+ label: getI18n().t('workflowEditor.process.totalNumberOfAbstentions'),
184
+ orgType: 'other',
185
+ dataType: 'INTEGER'
186
+ },
187
+ {
188
+ name: '${againstCount}',
189
+ label: getI18n().t('workflowEditor.process.totalVotesAgainst'),
190
+ orgType: 'other',
191
+ dataType: 'INTEGER'
192
+ },
193
+ {
194
+ name: '${favorCount}',
195
+ label: getI18n().t('workflowEditor.process.totalNumberOfAffirmativeVotes'),
196
+ orgType: 'other',
197
+ dataType: 'INTEGER'
198
+ }
199
+
200
+ ]
201
+
202
+ export function getStandardFields() {
203
+ const result = {
204
+ value: 'standard',
205
+ label: getI18n().t('workflowEditor.process.standardFields'),
206
+ children: []
207
+ }
208
+ for (const field of standardFields) {
209
+ result.children.push({
210
+ value: field.name,
211
+ label: field.label
212
+ })
213
+ }
214
+ return result
215
+ }
216
+
217
+ export const logicOperators = {
218
+ 'condition.operator.or': getI18n().t('workflowEditor.process.perhaps'),
219
+ 'condition.operator.and': getI18n().t('workflowEditor.process.also')
220
+ }
221
+ export function isNumber(type) {
222
+ return ['NUMBER', 'DOUBLE', 'FLOAT', 'LONG', 'INTEGER', 'AMOUNT'].indexOf(type) >= 0
223
+ }
224
+ export const operatorsForNumber = [{
225
+ name: 'operator.number.gt',
226
+ label: getI18n().t('workflowEditor.process.greaterThan')
227
+ }, {
228
+ name: 'operator.number.lt',
229
+ label: getI18n().t('workflowEditor.process.lessThan')
230
+ }, {
231
+ name: 'operator.number.eq',
232
+ label: getI18n().t('workflowEditor.process.beEqualTo')
233
+ }, {
234
+ name: 'operator.number.le',
235
+ label: getI18n().t('workflowEditor.process.notGreaterThan')
236
+ }, {
237
+ name: 'operator.number.ge',
238
+ label: getI18n().t('workflowEditor.process.notLessThan')
239
+ }, {
240
+ name: 'operator.number.ne',
241
+ label: getI18n().t('workflowEditor.process.notEqualTo')
242
+ }]
243
+
244
+ export function isString(type) {
245
+ return ['STRING', 'TEXT'].indexOf(type) >= 0
246
+ }
247
+ export const operatorsForString = [{
248
+ name: 'operator.text.eq',
249
+ label: getI18n().t('workflowEditor.process.beEqualTo')
250
+ }, {
251
+ name: 'operator.text.neq',
252
+ label: getI18n().t('workflowEditor.process.notEqualTo')
253
+ }, {
254
+ name: 'operator.text.contain',
255
+ label: getI18n().t('workflowEditor.process.contain')
256
+ }, {
257
+ name: 'operator.text.contain.not',
258
+ label: getI18n().t('workflowEditor.process.notIncluded')
259
+ }, {
260
+ name: 'operator.text.is.null',
261
+ label: getI18n().t('workflowEditor.process.isNull')
262
+ }, {
263
+ name: 'operator.text.not.null',
264
+ label: getI18n().t('workflowEditor.process.isNotNull')
265
+ }]
266
+ export function isDate(type) {
267
+ return ['DATE', 'TIME'].indexOf(type) >= 0
268
+ }
269
+ export const operatorsForDate = [{
270
+ name: 'operator.date.gt',
271
+ label: getI18n().t('workflowEditor.process.laterThan')
272
+ }, {
273
+ name: 'operator.date.lt',
274
+ label: getI18n().t('workflowEditor.process.earlierThan')
275
+ }, {
276
+ name: 'operator.date.et',
277
+ label: getI18n().t('workflowEditor.process.beEqualTo')
278
+ }, {
279
+ name: 'operator.date.le',
280
+ label: getI18n().t('workflowEditor.process.noLaterThan')
281
+ }, {
282
+ name: 'operator.date.ge',
283
+ label: getI18n().t('workflowEditor.process.noEarlierThan')
284
+ }, {
285
+ name: 'operator.date.ne',
286
+ label: getI18n().t('workflowEditor.process.notEqualTo')
287
+ }]
288
+
289
+ // TEXT类型一般用于标准字段,和STRING类型区分开,支持的操作符少两个
290
+ export const operatorsForText = [
291
+ {
292
+ name: 'operator.text.eq',
293
+ label: getI18n().t('workflowEditor.process.beEqualTo')
294
+ }, {
295
+ name: 'operator.text.neq',
296
+ label: getI18n().t('workflowEditor.process.notEqualTo')
297
+ }
298
+ ]
299
+
300
+ // 是否是‘审批结果’字段
301
+ export function isApproveResult(fieldName) {
302
+ return fieldName === '${approvalResult}'
303
+ }
304
+
305
+ export const operatorsForApproveResult = [
306
+ {
307
+ name: 'operator.text.eq',
308
+ label: getI18n().t('workflowEditor.process.beEqualTo')
309
+ }
310
+ ]
311
+
312
+ export const allOperators = [
313
+ ...operatorsForNumber,
314
+ ...operatorsForDate,
315
+ ...operatorsForString,
316
+ ...operatorsForText
317
+ ]
318
+ /**
319
+ *
320
+ * @param {存放从value中解析出来的各个条件表达式} conditions
321
+ * @param {xml中存放的condition字符串} value
322
+ */
323
+ export function parseCondition(conditions, value) {
324
+ if (!value || value.length === 0) {
325
+ // 条件为空
326
+ } else {
327
+ // or,and做统一替换,方便后续按照^_^来分隔条件,避免按照or,and进行两次分隔
328
+ let tempValue = value.replace(/ condition.operator.or /g, ' condition.operator.or^_^')
329
+ tempValue = tempValue.replace(/ condition.operator.and /g, ' condition.operator.and^_^')
330
+ const values = tempValue.split('^_^')
331
+ let count = 0
332
+ for (let condition of values) {
333
+ if (condition === '') continue
334
+ // 一个条件是由6个部分组成的(按空格分隔):leftBracket(可选), key,操作符,值,右括号(可选),逻辑操作符(可选)
335
+ let leftBracket = ''
336
+ // let key = '${user}'
337
+ // let operator = 'operator.text.eq'
338
+ let key = ''
339
+ let operator = ''
340
+ let value = ''
341
+ let rightBracket = ''
342
+ let logicOperator = 'condition.operator.or'
343
+
344
+ let p = condition.indexOf('${')
345
+ // 没有左括号时,条件表达式肯定是${开头,p=0
346
+ if (p > 0) {
347
+ leftBracket = condition.substring(0, p)
348
+ }
349
+ // key从${开始到第一个空格之间的所有内容
350
+ key = condition.substring(p, condition.indexOf(' '))
351
+ // condition去掉key部分进行后续处理
352
+ condition = condition.substring(condition.indexOf(' ') + 1)
353
+ // condition去掉key后,开头部分到第一个空格之间的就是操作符了
354
+ operator = condition.substring(0, condition.indexOf(' '))
355
+ // condition进一步去掉操作符
356
+ condition = condition.substring(condition.indexOf(' ') + 1)
357
+ p = condition.indexOf(')')
358
+ if (p > 0) {
359
+ // 有右括号时,开头到第一个右括号之间的内容为值,值很可能包括空格,所以一开始不能用空格来split
360
+ value = condition.substring(0, p)
361
+ rightBracket = condition.substring(p)
362
+ // 找操作符的时候,带了一个空格来定位,后续截取的时候需要去掉这个空格
363
+ p = condition.indexOf(' condition.')
364
+ if (p > 0) {
365
+ logicOperator = condition.substring(p + 1)
366
+ }
367
+ } else {
368
+ p = condition.indexOf(' condition.')
369
+ // 没有右括号也没有逻辑符的时候,剩下的condition就是value,否则还要单独截取逻辑符
370
+ if (p > 0) {
371
+ value = condition.substring(0, p)
372
+ logicOperator = condition.substring(p + 1)
373
+ } else {
374
+ value = condition
375
+ }
376
+ }
377
+
378
+ conditions.push({
379
+ id: count,
380
+ leftBracket,
381
+ key,
382
+ operator,
383
+ value,
384
+ rightBracket,
385
+ logicOperator
386
+ })
387
+ count++
388
+ }
389
+ return count
390
+ }
391
+ }
392
+
393
+ /**
394
+ *
395
+ * @param {存放用户条件表达式} conditions
396
+ */
397
+ export function generateCondition(conditions) {
398
+ let result = ''
399
+ for (const condition of conditions) {
400
+ // 没有设置值的条件表达式直接忽略
401
+ if (condition.key.length === 0 || condition.operator === '' ||
402
+ (condition.value === '' && (condition.operator !== 'operator.text.is.null' && condition.operator !== 'operator.text.not.null'))) {
403
+ continue
404
+ }
405
+ result = result + condition.leftBracket + condition.key + ' ' +
406
+ condition.operator + ' ' + condition.value + condition.rightBracket + ' ' +
407
+ condition.logicOperator + ' '
408
+ }
409
+ const logicOr = ' condition.operator.or '
410
+ const logicAnd = ' condition.operator.and '
411
+ // 去掉结尾的and,or(没有意义)
412
+ if (result.lastIndexOf(logicOr) + logicOr.length === result.length) {
413
+ result = result.substring(0, result.lastIndexOf(logicOr))
414
+ } else if (result.lastIndexOf(logicAnd) + logicAnd.length === result.length) {
415
+ result = result.substring(0, result.lastIndexOf(logicAnd))
416
+ }
417
+ return result
418
+ }
419
+ export function getStandardField(name) {
420
+ const field = standardFields.filter(item => {
421
+ return item.name === name
422
+ })
423
+ if (field.length > 0) {
424
+ return field[0]
425
+ } else {
426
+ return null
427
+ }
428
+ }
429
+ export function getStandardFieldLabel(name) {
430
+ const field = getStandardField(name)
431
+ return field ? field.label : name
432
+ }
433
+
434
+ export function getFieldLabel(name) {
435
+ if (name.indexOf('${field[') >= 0) {
436
+ return getFormFieldLabel(name)
437
+ } else if (name.indexOf('${') >= 0) {
438
+ return getStandardFieldLabel(name)
439
+ } else {
440
+ return name.substring(0, name.indexOf('['))
441
+ }
442
+ }
443
+
444
+ export function getOperatorLabel(name) {
445
+ const operator = allOperators.filter(item => {
446
+ return item.name === name
447
+ })
448
+ if (operator.length > 0) {
449
+ return operator[0].label
450
+ } else {
451
+ return ''
452
+ }
453
+ }
454
+ export function displayCondition(conditions) {
455
+ let result = ''
456
+ for (const condition of conditions) {
457
+ if (condition.key.length === 0 || condition.operator === '' || condition.value === '' ||
458
+ typeof (condition.operator) === 'undefined' || typeof (condition.value) === 'undefined' ||
459
+ condition.operator === null || condition.value === null) continue
460
+ result = result + condition.leftBracket + getFieldLabel(condition.key) + ' ' +
461
+ getOperatorLabel(condition.operator) + ' ' + getFieldLabel(condition.value) + condition.rightBracket + ' ' +
462
+ condition.value + ' ' + logicOperators[condition.logicOperator] + ' '
463
+ }
464
+ const logicOr = ' 或者 '
465
+ const logicAnd = ' 并且 '
466
+ // 去掉结尾的and,or(没有意义)
467
+ if (result.lastIndexOf(logicOr) + logicOr.length === result.length) {
468
+ result = result.substring(0, result.lastIndexOf(logicOr))
469
+ } else if (result.lastIndexOf(logicAnd) + logicAnd.length === result.length) {
470
+ result = result.substring(0, result.lastIndexOf(logicAnd))
471
+ }
472
+ return result
473
+ }
474
+
475
+ export function formatStandardField(value) {
476
+ const field = standardFields.filter(item => {
477
+ return item.name === value
478
+ })
479
+ if (field.length > 0) {
480
+ return field[0].label
481
+ } else {
482
+ return value
483
+ }
484
+ }
485
+
486
+ export function getRelatedStandardFields(name) {
487
+ const field = standardFields.filter(item => {
488
+ return item.name === name
489
+ })
490
+ let fieldNames = []
491
+ if (field.length > 0) {
492
+ fieldNames = (field[0].relatedFields || [])
493
+ }
494
+ const result = []
495
+ standardFields.forEach(item => {
496
+ // item.name为${someName},去掉前两个字符和最后的大括号,只比较名称
497
+ if (fieldNames.indexOf(item.name.substring(2, item.name.length - 1)) >= 0) {
498
+ result.push(item)
499
+ }
500
+ })
501
+
502
+ // standardFields.map(item => {
503
+
504
+ // })
505
+ return result
506
+ }
507
+ // 获得条件流向的标准值列表 或 其它的标准值列表
508
+ export function getStandardFieldsByTacheType(isTranstion) {
509
+ if (isTranstion) {
510
+ return standardFields
511
+ }
512
+ const standardFieldResult = []
513
+ standardFields.forEach(item => {
514
+ if (!isTranstion && item.orgType !== 'other') {
515
+ // 不是流向时,不显示“审批结果”、“会签百分比”等值
516
+ standardFieldResult.push(item)
517
+ }
518
+ })
519
+ return standardFieldResult
520
+ }
521
+ // 获得条件值时,判断是否是流向的其它条件,比如:会签同意百分比、会签同意人数等等
522
+ export function isTransitionOtherField(fieldName) {
523
+ if (fieldName === '${approvalResult}') {
524
+ // ‘审批结果’的条件值是单独写的
525
+ return false
526
+ }
527
+ const field = standardFields.filter(item => {
528
+ return item.name === fieldName
529
+ })
530
+ let isOtherField = false
531
+ if (field.length > 0) {
532
+ field.forEach(item => {
533
+ if (fieldName === item.name && item.orgType === 'other') {
534
+ isOtherField = true
535
+ }
536
+ })
537
+ }
538
+ return isOtherField
539
+ }
540
+ export function getOperators(fieldName) {
541
+ const field = getFormField(fieldName) || getStandardField(fieldName)
542
+ // console.log('---getOperators---field=', field)
543
+ if (field) {
544
+ if (isNumber(field.dataType)) {
545
+ return operatorsForNumber
546
+ } else if (isDate(field.dataType)) {
547
+ return operatorsForDate
548
+ } else if (isString(field.dataType)) {
549
+ return operatorsForString
550
+ } else if (isApproveResult(fieldName)) {
551
+ return operatorsForApproveResult
552
+ } else {
553
+ return operatorsForText
554
+ }
555
+ }
556
+ }