imatrix-ui 0.2.6-up → 0.2.7-up
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/index.html +13 -13
- package/lib/super-ui.css +1 -1
- package/lib/super-ui.js +2724 -1932
- package/lib/super-ui.umd.cjs +24 -24
- package/package.json +1 -1
- package/packages/IntervalSelection/index.js +6 -6
- package/packages/IntervalSelection/src/quarterScope.vue +405 -405
- package/packages/IntervalSelection/src/sectionDate.vue +475 -475
- package/packages/breadcrumb/index.js +6 -6
- package/packages/breadcrumb/src/breadcrumb.vue +81 -81
- package/packages/department-tree/index.js +6 -6
- package/packages/department-tree/src/department-tree.vue +113 -113
- package/packages/department-tree-inline/index.js +6 -6
- package/packages/department-tree-inline/src/department-multi-tree-inline.vue +472 -472
- package/packages/department-tree-inline/src/department-single-tree-inline.vue +340 -340
- package/packages/department-tree-inline/src/department-tree-inline.vue +86 -86
- package/packages/department-tree-inline/src/department-tree-service.js +344 -344
- package/packages/department-tree-inline/src/search-result.vue +235 -235
- package/packages/department-user-tree/index.js +6 -6
- package/packages/department-user-tree/src/department-user-multiple-tree.vue +129 -129
- package/packages/department-user-tree/src/department-user-single-tree.vue +94 -94
- package/packages/department-user-tree/src/department-user-tree.vue +114 -114
- package/packages/department-user-tree-inline/index.js +9 -9
- package/packages/department-user-tree-inline/src/department-user-multiple-tree-inline.vue +731 -731
- package/packages/department-user-tree-inline/src/department-user-single-tree-inline.vue +334 -334
- package/packages/department-user-tree-inline/src/department-user-tree-inline.vue +87 -87
- package/packages/department-user-tree-inline/src/department-user-tree-multi-service.js +309 -309
- package/packages/department-user-tree-inline/src/department-user-tree-single-service.js +179 -179
- package/packages/department-user-tree-inline/src/search-result.vue +273 -273
- package/packages/directives/prevent-reclick.js +22 -22
- package/packages/dynamic-source-select/index.js +6 -6
- package/packages/dynamic-source-select/src/dynamic-source-select-service.js +106 -106
- package/packages/dynamic-source-select/src/dynamic-source-select.vue +675 -675
- package/packages/dynamic-source-select/src/events.js +78 -78
- package/packages/fs-preview/index.js +6 -6
- package/packages/fs-preview/src/fs-preview.vue +287 -287
- package/packages/fs-upload/index.js +6 -6
- package/packages/fs-upload/src/fs-upload-multi.vue +443 -443
- package/packages/fs-upload/src/fs-upload-single.vue +353 -353
- package/packages/fs-upload/src/fs-upload.vue +191 -191
- package/packages/fs-upload/src/see-big-picture.vue +67 -67
- package/packages/fs-upload-list/index.js +6 -6
- package/packages/fs-upload-list/src/fs-upload-list.vue +372 -372
- package/packages/hamburger/index.js +6 -6
- package/packages/hamburger/src/hamburger.vue +40 -40
- package/packages/index.js +123 -123
- package/packages/multipart-upload/index.js +6 -6
- package/packages/multipart-upload/src/index.vue +66 -66
- package/packages/multipart-upload/src/multipart-upload-form.vue +377 -377
- package/packages/multipart-upload/src/multipart-upload-list.vue +517 -517
- package/packages/organization-input/index.js +6 -6
- package/packages/organization-input/src/organization-input.vue +583 -583
- package/packages/plugins/export-data-new.js +623 -623
- package/packages/plugins/export-data.js +431 -431
- package/packages/plugins/index.js +15 -15
- package/packages/plugins/public-method.js +47 -47
- package/packages/remove-department/index.js +6 -6
- package/packages/remove-department/src/remove-department.vue +200 -200
- package/packages/remove-department/src/remove-dept-service.js +31 -31
- package/packages/remove-user/index.js +6 -6
- package/packages/remove-user/src/remove-user-service.js +31 -31
- package/packages/remove-user/src/remove-user.vue +226 -226
- package/packages/remove-workgroup/index.js +6 -6
- package/packages/remove-workgroup/src/remove-workgroup-service.js +31 -31
- package/packages/remove-workgroup/src/remove-workgroup.vue +183 -183
- package/packages/rich-editor/index.js +7 -7
- package/packages/rich-editor/index.vue +297 -297
- package/packages/rich-editor/langs/zh-Hans.js +438 -438
- package/packages/rich-editor/viewer.vue +105 -105
- package/packages/scan-code-input/index.js +6 -6
- package/packages/scan-code-input/src/events.js +34 -34
- package/packages/scan-code-input/src/scan-code-input-colse.vue +140 -140
- package/packages/scan-code-input/src/scan-code-input.vue +132 -132
- package/packages/secret-info/index.js +7 -7
- package/packages/secret-info/index.vue +100 -100
- package/packages/super-grid/index.js +7 -7
- package/packages/super-grid/src/apis.js +1092 -1092
- package/packages/super-grid/src/columns-config.vue +427 -427
- package/packages/super-grid/src/custom-formatter.js +394 -394
- package/packages/super-grid/src/eventBus.js +2 -2
- package/packages/super-grid/src/events.js +56 -56
- package/packages/super-grid/src/formValidatorUtil.js +300 -300
- package/packages/super-grid/src/formatter.js +196 -196
- package/packages/super-grid/src/group-column.vue +99 -99
- package/packages/super-grid/src/header-context-menu.vue +82 -82
- package/packages/super-grid/src/index-column.vue +69 -69
- package/packages/super-grid/src/public-methods.js +30 -30
- package/packages/super-grid/src/row-operation.vue +193 -193
- package/packages/super-grid/src/search-button.vue +74 -74
- package/packages/super-grid/src/search-condition-input.vue +73 -73
- package/packages/super-grid/src/search-condition-list.vue +68 -68
- package/packages/super-grid/src/search-form-advancedQuery.vue +819 -819
- package/packages/super-grid/src/search-form-dialog.vue +77 -77
- package/packages/super-grid/src/search-form-item.vue +495 -495
- package/packages/super-grid/src/search-form-number.vue +111 -111
- package/packages/super-grid/src/search-form-ordinarySearch.vue +239 -239
- package/packages/super-grid/src/search-form.vue +762 -762
- package/packages/super-grid/src/search-methods.js +592 -592
- package/packages/super-grid/src/selection-column.vue +46 -46
- package/packages/super-grid/src/store.js +3 -3
- package/packages/super-grid/src/super-grid-service.js +728 -728
- package/packages/super-grid/src/super-grid.vue +3011 -3011
- package/packages/super-grid/src/utils.js +880 -880
- package/packages/super-grid/src/view-image-dialog.vue +176 -176
- package/packages/super-nine-grid/index.js +7 -7
- package/packages/super-nine-grid/src/apis.js +108 -108
- package/packages/super-nine-grid/src/custom-formatter.js +73 -73
- package/packages/super-nine-grid/src/formatter.js +134 -134
- package/packages/super-nine-grid/src/search-form-number.vue +35 -35
- package/packages/super-nine-grid/src/search-form.vue +700 -700
- package/packages/super-nine-grid/src/search-methods.js +151 -151
- package/packages/super-nine-grid/src/store.js +3 -3
- package/packages/super-nine-grid/src/super-grid-service.js +107 -107
- package/packages/svg-icon/index.js +6 -6
- package/packages/svg-icon/src/svg-icon.vue +43 -43
- package/packages/utils/date-util.js +292 -292
- package/packages/utils/dom.js +227 -227
- package/packages/utils/gogocodeTransfer.js +59 -59
- package/packages/utils/memory-cache-utils.js +117 -117
- package/packages/utils/utils.js +180 -180
- package/packages/utils/value-set.js +97 -97
- package/packages/valid-code/index.js +7 -7
- package/packages/valid-code/src/valid-code.vue +104 -104
- package/packages/workflow-button/index.js +6 -6
- package/packages/workflow-button/src/workflow-button.vue +550 -550
- package/packages/workflow-history-list/index.js +6 -6
- package/packages/workflow-history-list/src/api.js +7 -7
- package/packages/workflow-history-list/src/workflow-history-list.vue +291 -291
- package/packages/workgroup-tree/index.js +6 -6
- package/packages/workgroup-tree/src/workgroup-tree.vue +86 -86
- package/packages/workgroup-tree-inline/index.js +6 -6
- package/packages/workgroup-tree-inline/src/search-result.vue +222 -222
- package/packages/workgroup-tree-inline/src/workgroup-tree-inline.vue +516 -516
- package/packages/workgroup-tree-inline/src/workgroup-tree-service.js +93 -93
- package/packages/workgroup-user-tree/index.js +6 -6
- package/packages/workgroup-user-tree/src/workgroup-user-tree.vue +103 -103
- package/packages/workgroup-user-tree-inline/index.js +9 -9
- package/packages/workgroup-user-tree-inline/src/search-result.vue +266 -266
- package/packages/workgroup-user-tree-inline/src/workgroup-tree-inline-service.js +239 -239
- package/packages/workgroup-user-tree-inline/src/workgroup-user-tree-inline.vue +657 -657
- package/packages/year-range-picker/index.js +6 -6
- package/packages/year-range-picker/src/year-range-picker.vue +53 -53
- package/src/api/sso-service.js +172 -172
- package/src/api/tab.js +36 -36
- package/src/api/user-service.js +11 -11
- package/src/directives/permission/index.js +13 -13
- package/src/directives/permission/permission.js +20 -20
- package/src/i18n/langs/cn.js +259 -259
- package/src/i18n/langs/en.js +269 -269
- package/src/index.js +93 -93
- package/src/plugins.js +18 -18
- package/src/router/index.js +8 -26
- package/src/store/getters.js +15 -15
- package/src/store/index.js +19 -19
- package/src/store/modules/app.js +54 -54
- package/src/store/modules/tab-content.js +36 -36
- package/src/store/modules/user.js +285 -285
- package/src/utils/auth.js +61 -61
- package/src/utils/calculator/calculator-factory-wf.js +558 -558
- package/src/utils/calculator/calculator-factory.js +145 -145
- package/src/utils/calculator/calculator-util.js +166 -166
- package/src/utils/eventBus.js +2 -2
- package/src/utils/iconUtils.js +28 -28
- package/src/utils/index.js +102 -102
- package/src/utils/jump-page-utils.js +824 -824
- package/src/utils/menu.js +19 -19
- package/src/utils/permission.js +31 -31
- package/src/utils/permissionAuth.js +96 -96
- package/src/utils/range-selector.js +188 -188
- package/src/utils/request.js +269 -269
- package/src/utils/restful-interface-utils.js +57 -57
- package/src/utils/util.js +703 -703
- package/src/utils/validate.js +34 -34
- package/src/utils/watermark.js +108 -108
- package/src/utils/workflow-util.js +93 -93
- package/src/views/404.vue +248 -248
- package/src/views/dsc-component/Sidebar/Item.vue +84 -84
- package/src/views/dsc-component/Sidebar/Link.vue +38 -38
- package/src/views/dsc-component/Sidebar/SidebarItem.vue +198 -198
- package/src/views/dsc-component/Sidebar/index.vue +229 -229
- package/src/views/dsc-component/tabs/tab-content.vue +203 -203
- package/src/views/error-page/401.vue +106 -106
- package/src/views/error-page/404.vue +248 -248
- package/src/views/layout/EmptyLayout.vue +3 -3
- package/src/views/layout/Layout.vue +81 -81
- package/src/views/layout/NewLayout.vue +18 -18
- package/src/views/layout/components/AppMain.vue +39 -39
- package/src/views/layout/components/Breadcrumb/index.vue +158 -158
- package/src/views/layout/components/Menubar/Item.vue +79 -79
- package/src/views/layout/components/Menubar/Link.vue +38 -38
- package/src/views/layout/components/Menubar/index.vue +210 -210
- package/src/views/layout/components/Sidebar/Item.vue +53 -53
- package/src/views/layout/components/Sidebar/Link.vue +38 -38
- package/src/views/layout/components/Sidebar/index.vue +141 -141
- package/src/views/layout/components/iframe-page.vue +38 -38
- package/src/views/layout/components/index.js +4 -4
- package/src/views/layout/components/tabs/tab-content.vue +207 -207
- package/src/views/layout/mixin/ResizeHandler.js +41 -41
- package/src/views/layout/tab-content-iframe-index.vue +38 -38
- package/src/views/layout/tab-content-index.vue +93 -93
- package/src/views/login/authredirect.vue +10 -10
- package/src/views/login/index.vue +296 -296
- package/src/views/login/update-password.vue +243 -243
- package/src/views/redirect/index.vue +14 -14
- package/src/views/wf-history/tache-subprocess-history.vue +45 -45
|
@@ -1,145 +1,145 @@
|
|
|
1
|
-
class CalculatorFactory {
|
|
2
|
-
constructor() {
|
|
3
|
-
if (new.target === CalculatorFactory) {
|
|
4
|
-
throw new Error('抽象类不能实例化!')
|
|
5
|
-
}
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* 空IS NULL操作符时相的处理
|
|
9
|
-
* @param leftVale
|
|
10
|
-
* @param operator
|
|
11
|
-
* @return
|
|
12
|
-
*/
|
|
13
|
-
isNullValue(leftValue, operator) {
|
|
14
|
-
return (
|
|
15
|
-
(leftValue === undefined ||
|
|
16
|
-
leftValue === null ||
|
|
17
|
-
leftValue + '' === '') &&
|
|
18
|
-
operator === 'IS_NULL'
|
|
19
|
-
)
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* 空IS NOT NULL操作符时的处理
|
|
23
|
-
* @param leftVale
|
|
24
|
-
* @param operator
|
|
25
|
-
* @return true 表示给定的值不为空
|
|
26
|
-
*/
|
|
27
|
-
isNotNullValue(leftValue, operator) {
|
|
28
|
-
return (
|
|
29
|
-
leftValue !== undefined &&
|
|
30
|
-
leftValue !== null &&
|
|
31
|
-
leftValue + '' !== '' &&
|
|
32
|
-
operator === 'IS_NOT_NULL'
|
|
33
|
-
)
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* 空值时相等的处理
|
|
37
|
-
* @param leftVale
|
|
38
|
-
* @param operator
|
|
39
|
-
* @param rightValue
|
|
40
|
-
* @return
|
|
41
|
-
*/
|
|
42
|
-
isEQEmptyValue(leftVale, operator, rightValue) {
|
|
43
|
-
return (
|
|
44
|
-
(leftVale === undefined || leftVale === null || leftVale + '' === '') &&
|
|
45
|
-
(rightValue === undefined ||
|
|
46
|
-
rightValue === null ||
|
|
47
|
-
rightValue + '' === '') &&
|
|
48
|
-
(operator === 'EQ' || operator === 'CONTAIN')
|
|
49
|
-
)
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
class NumberCalculator extends CalculatorFactory {
|
|
54
|
-
constructor(leftVale, operator, rightValue) {
|
|
55
|
-
super()
|
|
56
|
-
if (this.isNotNullValue(leftVale, operator)) {
|
|
57
|
-
this.result = true
|
|
58
|
-
} else if (this.isNullValue(leftVale, operator)) {
|
|
59
|
-
this.result = true
|
|
60
|
-
} else if (this.isEQEmptyValue(leftVale, operator, rightValue)) {
|
|
61
|
-
this.result = true
|
|
62
|
-
} else if (leftVale === undefined || leftVale === null) {
|
|
63
|
-
this.result = false
|
|
64
|
-
} else {
|
|
65
|
-
const preOperand = Number(leftVale + '')
|
|
66
|
-
const value = Number(rightValue + '')
|
|
67
|
-
if (operator === 'GET') {
|
|
68
|
-
this.result = preOperand >= value
|
|
69
|
-
} else if (operator === 'LET') {
|
|
70
|
-
this.result = preOperand <= value
|
|
71
|
-
} else if (operator === 'GT') {
|
|
72
|
-
this.result = preOperand > value
|
|
73
|
-
} else if (operator === 'LT') {
|
|
74
|
-
this.result = preOperand < value
|
|
75
|
-
} else if (operator === 'NET') {
|
|
76
|
-
this.result = preOperand !== value
|
|
77
|
-
} else if (operator === 'EQ') {
|
|
78
|
-
this.result = preOperand === value
|
|
79
|
-
} else if (operator === 'IS_NULL') {
|
|
80
|
-
this.result = leftVale === undefined || leftVale === null
|
|
81
|
-
} else if (operator === 'IS_NOT_NULL') {
|
|
82
|
-
this.result = leftVale !== undefined && leftVale !== null
|
|
83
|
-
} else {
|
|
84
|
-
throw new Error(
|
|
85
|
-
'表达式不合法:' + leftVale + ' ' + operator + ' ' + rightValue
|
|
86
|
-
)
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
class TextCalculator extends CalculatorFactory {
|
|
92
|
-
constructor(leftVale, operator, rightValue) {
|
|
93
|
-
super()
|
|
94
|
-
if (this.isNullValue(leftVale, operator)) {
|
|
95
|
-
this.result = true
|
|
96
|
-
} else if (this.isEQEmptyValue(leftVale, operator, rightValue)) {
|
|
97
|
-
this.result = true
|
|
98
|
-
} else if (this.isNotNullValue(leftVale, operator)) {
|
|
99
|
-
this.result = true
|
|
100
|
-
} else if (leftVale === undefined || leftVale === null) {
|
|
101
|
-
this.result = false
|
|
102
|
-
} else {
|
|
103
|
-
if (operator === 'NET') {
|
|
104
|
-
this.result = leftVale !== rightValue
|
|
105
|
-
} else if (operator === 'EQ') {
|
|
106
|
-
this.result = leftVale === rightValue
|
|
107
|
-
} else if (operator === 'NOT_CONTAIN') {
|
|
108
|
-
this.result = !leftVale.includes(rightValue)
|
|
109
|
-
} else if (operator === 'CONTAIN') {
|
|
110
|
-
this.result = leftVale.includes(rightValue)
|
|
111
|
-
} else if (operator === 'IS_NULL') {
|
|
112
|
-
this.result =
|
|
113
|
-
leftVale === undefined || leftVale === null || leftVale === ''
|
|
114
|
-
} else if (operator === 'IS_NOT_NULL') {
|
|
115
|
-
this.result =
|
|
116
|
-
leftVale !== undefined && leftVale !== null && leftVale !== ''
|
|
117
|
-
} else {
|
|
118
|
-
throw new Error(
|
|
119
|
-
'表达式不合法:' + leftVale + ' ' + operator + ' ' + rightValue
|
|
120
|
-
)
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
export function getAbstractUserFactory(dataType) {
|
|
127
|
-
switch (dataType) {
|
|
128
|
-
case 'TEXT':
|
|
129
|
-
return TextCalculator
|
|
130
|
-
case 'DOUBLE':
|
|
131
|
-
return NumberCalculator
|
|
132
|
-
case 'FLOAT':
|
|
133
|
-
return NumberCalculator
|
|
134
|
-
case 'INTEGER':
|
|
135
|
-
return NumberCalculator
|
|
136
|
-
case 'LONG':
|
|
137
|
-
return NumberCalculator
|
|
138
|
-
case 'DATE':
|
|
139
|
-
return NumberCalculator
|
|
140
|
-
case 'TIME':
|
|
141
|
-
return NumberCalculator
|
|
142
|
-
default:
|
|
143
|
-
return TextCalculator
|
|
144
|
-
}
|
|
145
|
-
}
|
|
1
|
+
class CalculatorFactory {
|
|
2
|
+
constructor() {
|
|
3
|
+
if (new.target === CalculatorFactory) {
|
|
4
|
+
throw new Error('抽象类不能实例化!')
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* 空IS NULL操作符时相的处理
|
|
9
|
+
* @param leftVale
|
|
10
|
+
* @param operator
|
|
11
|
+
* @return
|
|
12
|
+
*/
|
|
13
|
+
isNullValue(leftValue, operator) {
|
|
14
|
+
return (
|
|
15
|
+
(leftValue === undefined ||
|
|
16
|
+
leftValue === null ||
|
|
17
|
+
leftValue + '' === '') &&
|
|
18
|
+
operator === 'IS_NULL'
|
|
19
|
+
)
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 空IS NOT NULL操作符时的处理
|
|
23
|
+
* @param leftVale
|
|
24
|
+
* @param operator
|
|
25
|
+
* @return true 表示给定的值不为空
|
|
26
|
+
*/
|
|
27
|
+
isNotNullValue(leftValue, operator) {
|
|
28
|
+
return (
|
|
29
|
+
leftValue !== undefined &&
|
|
30
|
+
leftValue !== null &&
|
|
31
|
+
leftValue + '' !== '' &&
|
|
32
|
+
operator === 'IS_NOT_NULL'
|
|
33
|
+
)
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 空值时相等的处理
|
|
37
|
+
* @param leftVale
|
|
38
|
+
* @param operator
|
|
39
|
+
* @param rightValue
|
|
40
|
+
* @return
|
|
41
|
+
*/
|
|
42
|
+
isEQEmptyValue(leftVale, operator, rightValue) {
|
|
43
|
+
return (
|
|
44
|
+
(leftVale === undefined || leftVale === null || leftVale + '' === '') &&
|
|
45
|
+
(rightValue === undefined ||
|
|
46
|
+
rightValue === null ||
|
|
47
|
+
rightValue + '' === '') &&
|
|
48
|
+
(operator === 'EQ' || operator === 'CONTAIN')
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
class NumberCalculator extends CalculatorFactory {
|
|
54
|
+
constructor(leftVale, operator, rightValue) {
|
|
55
|
+
super()
|
|
56
|
+
if (this.isNotNullValue(leftVale, operator)) {
|
|
57
|
+
this.result = true
|
|
58
|
+
} else if (this.isNullValue(leftVale, operator)) {
|
|
59
|
+
this.result = true
|
|
60
|
+
} else if (this.isEQEmptyValue(leftVale, operator, rightValue)) {
|
|
61
|
+
this.result = true
|
|
62
|
+
} else if (leftVale === undefined || leftVale === null) {
|
|
63
|
+
this.result = false
|
|
64
|
+
} else {
|
|
65
|
+
const preOperand = Number(leftVale + '')
|
|
66
|
+
const value = Number(rightValue + '')
|
|
67
|
+
if (operator === 'GET') {
|
|
68
|
+
this.result = preOperand >= value
|
|
69
|
+
} else if (operator === 'LET') {
|
|
70
|
+
this.result = preOperand <= value
|
|
71
|
+
} else if (operator === 'GT') {
|
|
72
|
+
this.result = preOperand > value
|
|
73
|
+
} else if (operator === 'LT') {
|
|
74
|
+
this.result = preOperand < value
|
|
75
|
+
} else if (operator === 'NET') {
|
|
76
|
+
this.result = preOperand !== value
|
|
77
|
+
} else if (operator === 'EQ') {
|
|
78
|
+
this.result = preOperand === value
|
|
79
|
+
} else if (operator === 'IS_NULL') {
|
|
80
|
+
this.result = leftVale === undefined || leftVale === null
|
|
81
|
+
} else if (operator === 'IS_NOT_NULL') {
|
|
82
|
+
this.result = leftVale !== undefined && leftVale !== null
|
|
83
|
+
} else {
|
|
84
|
+
throw new Error(
|
|
85
|
+
'表达式不合法:' + leftVale + ' ' + operator + ' ' + rightValue
|
|
86
|
+
)
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
class TextCalculator extends CalculatorFactory {
|
|
92
|
+
constructor(leftVale, operator, rightValue) {
|
|
93
|
+
super()
|
|
94
|
+
if (this.isNullValue(leftVale, operator)) {
|
|
95
|
+
this.result = true
|
|
96
|
+
} else if (this.isEQEmptyValue(leftVale, operator, rightValue)) {
|
|
97
|
+
this.result = true
|
|
98
|
+
} else if (this.isNotNullValue(leftVale, operator)) {
|
|
99
|
+
this.result = true
|
|
100
|
+
} else if (leftVale === undefined || leftVale === null) {
|
|
101
|
+
this.result = false
|
|
102
|
+
} else {
|
|
103
|
+
if (operator === 'NET') {
|
|
104
|
+
this.result = leftVale !== rightValue
|
|
105
|
+
} else if (operator === 'EQ') {
|
|
106
|
+
this.result = leftVale === rightValue
|
|
107
|
+
} else if (operator === 'NOT_CONTAIN') {
|
|
108
|
+
this.result = !leftVale.includes(rightValue)
|
|
109
|
+
} else if (operator === 'CONTAIN') {
|
|
110
|
+
this.result = leftVale.includes(rightValue)
|
|
111
|
+
} else if (operator === 'IS_NULL') {
|
|
112
|
+
this.result =
|
|
113
|
+
leftVale === undefined || leftVale === null || leftVale === ''
|
|
114
|
+
} else if (operator === 'IS_NOT_NULL') {
|
|
115
|
+
this.result =
|
|
116
|
+
leftVale !== undefined && leftVale !== null && leftVale !== ''
|
|
117
|
+
} else {
|
|
118
|
+
throw new Error(
|
|
119
|
+
'表达式不合法:' + leftVale + ' ' + operator + ' ' + rightValue
|
|
120
|
+
)
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export function getAbstractUserFactory(dataType) {
|
|
127
|
+
switch (dataType) {
|
|
128
|
+
case 'TEXT':
|
|
129
|
+
return TextCalculator
|
|
130
|
+
case 'DOUBLE':
|
|
131
|
+
return NumberCalculator
|
|
132
|
+
case 'FLOAT':
|
|
133
|
+
return NumberCalculator
|
|
134
|
+
case 'INTEGER':
|
|
135
|
+
return NumberCalculator
|
|
136
|
+
case 'LONG':
|
|
137
|
+
return NumberCalculator
|
|
138
|
+
case 'DATE':
|
|
139
|
+
return NumberCalculator
|
|
140
|
+
case 'TIME':
|
|
141
|
+
return NumberCalculator
|
|
142
|
+
default:
|
|
143
|
+
return TextCalculator
|
|
144
|
+
}
|
|
145
|
+
}
|
|
@@ -1,166 +1,166 @@
|
|
|
1
|
-
import { getAbstractUserFactory } from './calculator-factory'
|
|
2
|
-
import { getAbstractUserFactoryWf } from './calculator-factory-wf'
|
|
3
|
-
import { getPropValue, getEntityFieldValue } from '../util'
|
|
4
|
-
export function executeExpression(leftValue, operator, rightValue, dataType) {
|
|
5
|
-
const Calculator = getAbstractUserFactory(dataType)
|
|
6
|
-
const calculatorObj = new Calculator(leftValue, operator, rightValue)
|
|
7
|
-
return calculatorObj.result
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* 保存时,验证子表字段必填时,解析子表字段权限中的“子表条件”
|
|
12
|
-
* @param express
|
|
13
|
-
* @param upc
|
|
14
|
-
* @return
|
|
15
|
-
*/
|
|
16
|
-
export function parseSubTablePermissionCondition(
|
|
17
|
-
express,
|
|
18
|
-
dataTypeMap,
|
|
19
|
-
parentEntity,
|
|
20
|
-
subEntity,
|
|
21
|
-
additionalParamMap,
|
|
22
|
-
task,
|
|
23
|
-
contextParameterMap
|
|
24
|
-
) {
|
|
25
|
-
const expressTrueVal = 'true'
|
|
26
|
-
// ${user} operator.text.eq '吴荣[wurong]' condition.operator.and ${department} operator.text.eq 'EIT业务部' condition.operator.and ${role} operator.text.eq '普通员工'
|
|
27
|
-
if (!express) {
|
|
28
|
-
// 表示没有配置条件,则字段必填
|
|
29
|
-
return true
|
|
30
|
-
}
|
|
31
|
-
if (expressTrueVal.toLowerCase() === express.trim()) {
|
|
32
|
-
return true
|
|
33
|
-
}
|
|
34
|
-
const SQUARE_BRACKETS_LEFT = '['
|
|
35
|
-
const SQUARE_BRACKETS_RIGHT = ']'
|
|
36
|
-
const AND = '&&'
|
|
37
|
-
const OR = '||'
|
|
38
|
-
let temp = express
|
|
39
|
-
const strs = splitExpression(express)
|
|
40
|
-
console.log('分割后的原子表达式为:', strs)
|
|
41
|
-
let result = false
|
|
42
|
-
for (let i = 0; i < strs.length; i++) {
|
|
43
|
-
console.log('开始分析原子表达式:', strs[i])
|
|
44
|
-
const atomicExpress = strs[i]
|
|
45
|
-
if (atomicExpress && atomicExpress.trim()) {
|
|
46
|
-
const name = atomicExpress.substring(
|
|
47
|
-
atomicExpress.indexOf(SQUARE_BRACKETS_LEFT) +
|
|
48
|
-
SQUARE_BRACKETS_LEFT.length,
|
|
49
|
-
atomicExpress.indexOf(SQUARE_BRACKETS_RIGHT)
|
|
50
|
-
)
|
|
51
|
-
let dataType = 'TEXT'
|
|
52
|
-
|
|
53
|
-
if (dataTypeMap != null && dataTypeMap[name] != null) {
|
|
54
|
-
dataType = dataTypeMap[name]
|
|
55
|
-
}
|
|
56
|
-
result = parseFieldCondition(
|
|
57
|
-
atomicExpress,
|
|
58
|
-
dataType,
|
|
59
|
-
parentEntity,
|
|
60
|
-
subEntity,
|
|
61
|
-
additionalParamMap,
|
|
62
|
-
task,
|
|
63
|
-
contextParameterMap
|
|
64
|
-
)
|
|
65
|
-
console.log('原子表达式:', atomicExpress, '的分析结果为 ', result)
|
|
66
|
-
temp = temp.replace(atomicExpress.trim(), result + '')
|
|
67
|
-
console.log('将原子表达式替换为它的结果后:', temp)
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
temp = temp.replace(/condition.operator.and/g, AND)
|
|
71
|
-
temp = temp.replace(/condition.operator.or/g, OR)
|
|
72
|
-
if (temp.trim().endsWith(OR)) {
|
|
73
|
-
temp = temp.substring(0, temp.lastIndexOf(OR))
|
|
74
|
-
}
|
|
75
|
-
if (temp.trim().endsWith(AND)) {
|
|
76
|
-
temp = temp.substring(0, temp.lastIndexOf(AND))
|
|
77
|
-
}
|
|
78
|
-
console.log('最终该流向的表达式为:', temp)
|
|
79
|
-
// eslint-disable-next-line no-eval
|
|
80
|
-
return eval('(' + temp + ')')
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* 解析字段条件
|
|
85
|
-
* @param {*} atomicExpress
|
|
86
|
-
* @param {*} workflowCalculatorInfo
|
|
87
|
-
* @param {*} dataType
|
|
88
|
-
* @param {*} task
|
|
89
|
-
* @param {*} contextParameterMap
|
|
90
|
-
* @param {*} parentEntity 主表实体信息
|
|
91
|
-
* @param {*} entityData 子表实体信息
|
|
92
|
-
* @returns
|
|
93
|
-
*/
|
|
94
|
-
function parseFieldCondition(
|
|
95
|
-
atomicExpress,
|
|
96
|
-
dataType,
|
|
97
|
-
parentEntity,
|
|
98
|
-
subEntity,
|
|
99
|
-
additionalParamMap,
|
|
100
|
-
task,
|
|
101
|
-
contextParameterMap
|
|
102
|
-
) {
|
|
103
|
-
if (!atomicExpress) {
|
|
104
|
-
return false
|
|
105
|
-
}
|
|
106
|
-
const SQUARE_BRACKETS_LEFT = '['
|
|
107
|
-
const SQUARE_BRACKETS_RIGHT = ']'
|
|
108
|
-
// 去掉前后空格
|
|
109
|
-
atomicExpress = atomicExpress.trim()
|
|
110
|
-
const name = atomicExpress.substring(
|
|
111
|
-
atomicExpress.indexOf(SQUARE_BRACKETS_LEFT) + SQUARE_BRACKETS_LEFT.length,
|
|
112
|
-
atomicExpress.indexOf(SQUARE_BRACKETS_RIGHT)
|
|
113
|
-
)
|
|
114
|
-
// 获得 ${field[fieldName]}
|
|
115
|
-
const fieldInfo = atomicExpress.substring(0, atomicExpress.indexOf(' '))
|
|
116
|
-
const suffixInfo = atomicExpress.substring(atomicExpress.indexOf(' ') + 1)
|
|
117
|
-
const valueInfo = suffixInfo.substring(suffixInfo.indexOf(' ') + 1).trim()
|
|
118
|
-
// 解析动态参数、上下文参数、手动输入、obj.(此处表示的是主表记录)
|
|
119
|
-
const leftValue = getPropValue(
|
|
120
|
-
valueInfo,
|
|
121
|
-
parentEntity,
|
|
122
|
-
additionalParamMap,
|
|
123
|
-
contextParameterMap,
|
|
124
|
-
null,
|
|
125
|
-
subEntity,
|
|
126
|
-
task
|
|
127
|
-
)
|
|
128
|
-
if (leftValue != null) {
|
|
129
|
-
atomicExpress = atomicExpress.replace(valueInfo, leftValue.toString())
|
|
130
|
-
}
|
|
131
|
-
const value = getValue(subEntity, name)
|
|
132
|
-
if (value === undefined || value === null || value === '') {
|
|
133
|
-
if (dataType === 'DATE' || dataType === 'TIME') {
|
|
134
|
-
return false
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
console.log('对应值为:', value)
|
|
138
|
-
const CalculatorWf = getAbstractUserFactoryWf(dataType)
|
|
139
|
-
const subExpression = atomicExpress.replace(fieldInfo, value)
|
|
140
|
-
const calculatorObj = new CalculatorWf(subExpression)
|
|
141
|
-
const result = calculatorObj.result
|
|
142
|
-
console.log('判断结果为:', result)
|
|
143
|
-
return result
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
function splitExpression(express) {
|
|
147
|
-
// const workflowAnd = /condition.operator.and/g
|
|
148
|
-
// const workflowOr = /condition.operator.or/g
|
|
149
|
-
const ASTERISK_REGEX = '\\*'
|
|
150
|
-
// const PARENTHESES_LEFT = /\(/g
|
|
151
|
-
// const PARENTHESES_RIGHT = /\)/g
|
|
152
|
-
const EMPTY_STRING = ''
|
|
153
|
-
express = express.replace(/condition.operator.and/g, ASTERISK_REGEX)
|
|
154
|
-
express = express.replace(/condition.operator.or/g, ASTERISK_REGEX)
|
|
155
|
-
express = express.replace(/\(/g, EMPTY_STRING)
|
|
156
|
-
express = express.replace(/\)/g, EMPTY_STRING)
|
|
157
|
-
return express.split(ASTERISK_REGEX)
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
function getValue(entity, feildName) {
|
|
161
|
-
const value = getEntityFieldValue(entity, feildName)
|
|
162
|
-
if (value === undefined || value == null) {
|
|
163
|
-
return ''
|
|
164
|
-
}
|
|
165
|
-
return value + ''
|
|
166
|
-
}
|
|
1
|
+
import { getAbstractUserFactory } from './calculator-factory'
|
|
2
|
+
import { getAbstractUserFactoryWf } from './calculator-factory-wf'
|
|
3
|
+
import { getPropValue, getEntityFieldValue } from '../util'
|
|
4
|
+
export function executeExpression(leftValue, operator, rightValue, dataType) {
|
|
5
|
+
const Calculator = getAbstractUserFactory(dataType)
|
|
6
|
+
const calculatorObj = new Calculator(leftValue, operator, rightValue)
|
|
7
|
+
return calculatorObj.result
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* 保存时,验证子表字段必填时,解析子表字段权限中的“子表条件”
|
|
12
|
+
* @param express
|
|
13
|
+
* @param upc
|
|
14
|
+
* @return
|
|
15
|
+
*/
|
|
16
|
+
export function parseSubTablePermissionCondition(
|
|
17
|
+
express,
|
|
18
|
+
dataTypeMap,
|
|
19
|
+
parentEntity,
|
|
20
|
+
subEntity,
|
|
21
|
+
additionalParamMap,
|
|
22
|
+
task,
|
|
23
|
+
contextParameterMap
|
|
24
|
+
) {
|
|
25
|
+
const expressTrueVal = 'true'
|
|
26
|
+
// ${user} operator.text.eq '吴荣[wurong]' condition.operator.and ${department} operator.text.eq 'EIT业务部' condition.operator.and ${role} operator.text.eq '普通员工'
|
|
27
|
+
if (!express) {
|
|
28
|
+
// 表示没有配置条件,则字段必填
|
|
29
|
+
return true
|
|
30
|
+
}
|
|
31
|
+
if (expressTrueVal.toLowerCase() === express.trim()) {
|
|
32
|
+
return true
|
|
33
|
+
}
|
|
34
|
+
const SQUARE_BRACKETS_LEFT = '['
|
|
35
|
+
const SQUARE_BRACKETS_RIGHT = ']'
|
|
36
|
+
const AND = '&&'
|
|
37
|
+
const OR = '||'
|
|
38
|
+
let temp = express
|
|
39
|
+
const strs = splitExpression(express)
|
|
40
|
+
console.log('分割后的原子表达式为:', strs)
|
|
41
|
+
let result = false
|
|
42
|
+
for (let i = 0; i < strs.length; i++) {
|
|
43
|
+
console.log('开始分析原子表达式:', strs[i])
|
|
44
|
+
const atomicExpress = strs[i]
|
|
45
|
+
if (atomicExpress && atomicExpress.trim()) {
|
|
46
|
+
const name = atomicExpress.substring(
|
|
47
|
+
atomicExpress.indexOf(SQUARE_BRACKETS_LEFT) +
|
|
48
|
+
SQUARE_BRACKETS_LEFT.length,
|
|
49
|
+
atomicExpress.indexOf(SQUARE_BRACKETS_RIGHT)
|
|
50
|
+
)
|
|
51
|
+
let dataType = 'TEXT'
|
|
52
|
+
|
|
53
|
+
if (dataTypeMap != null && dataTypeMap[name] != null) {
|
|
54
|
+
dataType = dataTypeMap[name]
|
|
55
|
+
}
|
|
56
|
+
result = parseFieldCondition(
|
|
57
|
+
atomicExpress,
|
|
58
|
+
dataType,
|
|
59
|
+
parentEntity,
|
|
60
|
+
subEntity,
|
|
61
|
+
additionalParamMap,
|
|
62
|
+
task,
|
|
63
|
+
contextParameterMap
|
|
64
|
+
)
|
|
65
|
+
console.log('原子表达式:', atomicExpress, '的分析结果为 ', result)
|
|
66
|
+
temp = temp.replace(atomicExpress.trim(), result + '')
|
|
67
|
+
console.log('将原子表达式替换为它的结果后:', temp)
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
temp = temp.replace(/condition.operator.and/g, AND)
|
|
71
|
+
temp = temp.replace(/condition.operator.or/g, OR)
|
|
72
|
+
if (temp.trim().endsWith(OR)) {
|
|
73
|
+
temp = temp.substring(0, temp.lastIndexOf(OR))
|
|
74
|
+
}
|
|
75
|
+
if (temp.trim().endsWith(AND)) {
|
|
76
|
+
temp = temp.substring(0, temp.lastIndexOf(AND))
|
|
77
|
+
}
|
|
78
|
+
console.log('最终该流向的表达式为:', temp)
|
|
79
|
+
// eslint-disable-next-line no-eval
|
|
80
|
+
return eval('(' + temp + ')')
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* 解析字段条件
|
|
85
|
+
* @param {*} atomicExpress
|
|
86
|
+
* @param {*} workflowCalculatorInfo
|
|
87
|
+
* @param {*} dataType
|
|
88
|
+
* @param {*} task
|
|
89
|
+
* @param {*} contextParameterMap
|
|
90
|
+
* @param {*} parentEntity 主表实体信息
|
|
91
|
+
* @param {*} entityData 子表实体信息
|
|
92
|
+
* @returns
|
|
93
|
+
*/
|
|
94
|
+
function parseFieldCondition(
|
|
95
|
+
atomicExpress,
|
|
96
|
+
dataType,
|
|
97
|
+
parentEntity,
|
|
98
|
+
subEntity,
|
|
99
|
+
additionalParamMap,
|
|
100
|
+
task,
|
|
101
|
+
contextParameterMap
|
|
102
|
+
) {
|
|
103
|
+
if (!atomicExpress) {
|
|
104
|
+
return false
|
|
105
|
+
}
|
|
106
|
+
const SQUARE_BRACKETS_LEFT = '['
|
|
107
|
+
const SQUARE_BRACKETS_RIGHT = ']'
|
|
108
|
+
// 去掉前后空格
|
|
109
|
+
atomicExpress = atomicExpress.trim()
|
|
110
|
+
const name = atomicExpress.substring(
|
|
111
|
+
atomicExpress.indexOf(SQUARE_BRACKETS_LEFT) + SQUARE_BRACKETS_LEFT.length,
|
|
112
|
+
atomicExpress.indexOf(SQUARE_BRACKETS_RIGHT)
|
|
113
|
+
)
|
|
114
|
+
// 获得 ${field[fieldName]}
|
|
115
|
+
const fieldInfo = atomicExpress.substring(0, atomicExpress.indexOf(' '))
|
|
116
|
+
const suffixInfo = atomicExpress.substring(atomicExpress.indexOf(' ') + 1)
|
|
117
|
+
const valueInfo = suffixInfo.substring(suffixInfo.indexOf(' ') + 1).trim()
|
|
118
|
+
// 解析动态参数、上下文参数、手动输入、obj.(此处表示的是主表记录)
|
|
119
|
+
const leftValue = getPropValue(
|
|
120
|
+
valueInfo,
|
|
121
|
+
parentEntity,
|
|
122
|
+
additionalParamMap,
|
|
123
|
+
contextParameterMap,
|
|
124
|
+
null,
|
|
125
|
+
subEntity,
|
|
126
|
+
task
|
|
127
|
+
)
|
|
128
|
+
if (leftValue != null) {
|
|
129
|
+
atomicExpress = atomicExpress.replace(valueInfo, leftValue.toString())
|
|
130
|
+
}
|
|
131
|
+
const value = getValue(subEntity, name)
|
|
132
|
+
if (value === undefined || value === null || value === '') {
|
|
133
|
+
if (dataType === 'DATE' || dataType === 'TIME') {
|
|
134
|
+
return false
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
console.log('对应值为:', value)
|
|
138
|
+
const CalculatorWf = getAbstractUserFactoryWf(dataType)
|
|
139
|
+
const subExpression = atomicExpress.replace(fieldInfo, value)
|
|
140
|
+
const calculatorObj = new CalculatorWf(subExpression)
|
|
141
|
+
const result = calculatorObj.result
|
|
142
|
+
console.log('判断结果为:', result)
|
|
143
|
+
return result
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
function splitExpression(express) {
|
|
147
|
+
// const workflowAnd = /condition.operator.and/g
|
|
148
|
+
// const workflowOr = /condition.operator.or/g
|
|
149
|
+
const ASTERISK_REGEX = '\\*'
|
|
150
|
+
// const PARENTHESES_LEFT = /\(/g
|
|
151
|
+
// const PARENTHESES_RIGHT = /\)/g
|
|
152
|
+
const EMPTY_STRING = ''
|
|
153
|
+
express = express.replace(/condition.operator.and/g, ASTERISK_REGEX)
|
|
154
|
+
express = express.replace(/condition.operator.or/g, ASTERISK_REGEX)
|
|
155
|
+
express = express.replace(/\(/g, EMPTY_STRING)
|
|
156
|
+
express = express.replace(/\)/g, EMPTY_STRING)
|
|
157
|
+
return express.split(ASTERISK_REGEX)
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
function getValue(entity, feildName) {
|
|
161
|
+
const value = getEntityFieldValue(entity, feildName)
|
|
162
|
+
if (value === undefined || value == null) {
|
|
163
|
+
return ''
|
|
164
|
+
}
|
|
165
|
+
return value + ''
|
|
166
|
+
}
|
package/src/utils/eventBus.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import * as Vue from 'vue'
|
|
2
|
-
export default {}
|
|
1
|
+
import * as Vue from 'vue'
|
|
2
|
+
export default {}
|