@bchr/bchr-front-lib 0.4.5 → 0.5.2
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/lib/base/layout/ActionButton.js +705 -0
- package/lib/base/utils/Arrays.js +37 -0
- package/lib/base/utils/CNKits.js +227 -0
- package/lib/base/utils/CharReplaceUtils.js +111 -0
- package/lib/base/utils/DES24JS.js +58 -0
- package/lib/base/utils/DateTimes.js +163 -0
- package/lib/base/utils/FormDatas.js +109 -0
- package/lib/base/utils/LangTypes.js +173 -0
- package/lib/base/utils/Objects.js +60 -0
- package/lib/base/utils/Randoms.js +146 -0
- package/lib/base/utils/Strings.js +152 -0
- package/lib/base/utils/TreeDataUtils.js +165 -0
- package/lib/base/utils/Values.js +181 -0
- package/lib/base/utils/index.js +45 -0
- package/lib/services/http.js +486 -0
- package/lib/style/ExtCustomKendo.less +1063 -935
- package/package.json +5 -2
- package/src/base/layout/ActionButton.js +628 -0
- package/src/base/utils/Arrays.js +29 -0
- package/src/base/utils/CNKits.js +236 -0
- package/src/base/utils/CharReplaceUtils.js +99 -0
- package/src/base/utils/DES24JS.js +54 -0
- package/src/base/utils/DateTimes.js +136 -0
- package/src/base/utils/FormDatas.js +103 -0
- package/src/base/utils/LangTypes.js +202 -0
- package/src/base/utils/Objects.js +48 -0
- package/src/base/utils/Randoms.js +142 -0
- package/src/base/utils/Strings.js +146 -0
- package/src/base/utils/TreeDataUtils.js +128 -0
- package/src/base/utils/Values.js +196 -0
- package/src/base/utils/index.js +15 -0
- package/src/services/http.js +460 -0
- package/src/style/ExtCustomKendo.less +1063 -935
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import moment from "moment";
|
|
2
|
+
import Decimal from "decimal.js";
|
|
3
|
+
import lodash from "lodash";
|
|
4
|
+
|
|
5
|
+
const LangTypes = {
|
|
6
|
+
|
|
7
|
+
asStringValue(rawValue) {
|
|
8
|
+
if (rawValue === null || rawValue === void 0) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
if (lodash.isString(rawValue)) {
|
|
13
|
+
return rawValue.toString();
|
|
14
|
+
}
|
|
15
|
+
else if (lodash.isNumber(rawValue)) {
|
|
16
|
+
return rawValue.toString();
|
|
17
|
+
}
|
|
18
|
+
else if (lodash.isBoolean(rawValue)) {
|
|
19
|
+
return rawValue.toString();
|
|
20
|
+
}
|
|
21
|
+
else if (lodash.isDate(rawValue)) {
|
|
22
|
+
return moment(rawValue).format("YYYY-MM-DD HH:mm:ss");
|
|
23
|
+
}
|
|
24
|
+
else if (lodash.isFunction(rawValue.isValid) && lodash.isFunction(rawValue.toDate)) {
|
|
25
|
+
if (rawValue.isValid() === true) {
|
|
26
|
+
return moment(rawValue.toDate()).format("YYYY-MM-DD HH:mm:ss");
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
else if (lodash.isPlainObject(rawValue) && Object.prototype.hasOwnProperty.call(rawValue, "value")) {
|
|
30
|
+
return this.asStringValue(rawValue.value);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
throw new Error("For type safe convert, " + rawValue + " cannot convert to String value.");
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
asBooleanValue(rawValue) {
|
|
37
|
+
if (rawValue === null || rawValue === void 0) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
else if (lodash.isBoolean(rawValue)) {
|
|
41
|
+
return rawValue;
|
|
42
|
+
}
|
|
43
|
+
else if (lodash.isString(rawValue)) {
|
|
44
|
+
let lowercaseValue = rawValue.toLowerCase();
|
|
45
|
+
return (lowercaseValue === "y" || lowercaseValue === "yes"
|
|
46
|
+
|| lowercaseValue === "true" || lowercaseValue === "t"
|
|
47
|
+
|| lowercaseValue === "1" || lowercaseValue === "是"
|
|
48
|
+
|| lowercaseValue === "ok" || lowercaseValue === "on"
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
else if (lodash.isNumber(rawValue)) {
|
|
52
|
+
return Boolean(rawValue)
|
|
53
|
+
}
|
|
54
|
+
else if (lodash.isPlainObject(rawValue) && Object.prototype.hasOwnProperty.call(rawValue, "value")) {
|
|
55
|
+
return this.asBooleanValue(rawValue.value);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
throw new Error("For type safe convert, " + rawValue + " cannot convert to Boolean value.");
|
|
59
|
+
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
asNumberValue(rawValue) {
|
|
63
|
+
if (rawValue === null || rawValue === void 0) {
|
|
64
|
+
return 0;
|
|
65
|
+
}
|
|
66
|
+
else if (lodash.isNumber(rawValue)) {
|
|
67
|
+
return rawValue;
|
|
68
|
+
}
|
|
69
|
+
else if (lodash.isBoolean(rawValue)) {
|
|
70
|
+
return rawValue ? 1 : 0;
|
|
71
|
+
}
|
|
72
|
+
else if (lodash.isString(rawValue)) {
|
|
73
|
+
let _rawValue = rawValue.replaceAll(",", "").replaceAll(' ', '');
|
|
74
|
+
try {
|
|
75
|
+
let decimalValue = new Decimal(_rawValue);
|
|
76
|
+
return decimalValue.toNumber();
|
|
77
|
+
}
|
|
78
|
+
catch (e) {
|
|
79
|
+
// do nothing
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else if (lodash.isDate(rawValue)) {
|
|
83
|
+
return rawValue.getTime();
|
|
84
|
+
}
|
|
85
|
+
else if (lodash.isFunction(rawValue.isValid) && lodash.isFunction(rawValue.toDate)) {
|
|
86
|
+
if (rawValue.isValid() === true) {
|
|
87
|
+
return rawValue.toDate().getTime();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else if (lodash.isPlainObject(rawValue) && Object.prototype.hasOwnProperty.call(rawValue, "value")) {
|
|
91
|
+
return this.asNumberValue(rawValue.value);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
throw new Error("For type safe convert, " + rawValue + " cannot convert to Number value.");
|
|
95
|
+
},
|
|
96
|
+
|
|
97
|
+
asIntegerValue(rawValue) {
|
|
98
|
+
if (rawValue === null || rawValue === void 0) {
|
|
99
|
+
return 0;
|
|
100
|
+
}
|
|
101
|
+
else if (lodash.isInteger(rawValue)) {
|
|
102
|
+
return rawValue;
|
|
103
|
+
}
|
|
104
|
+
else if (lodash.isBoolean(rawValue)) {
|
|
105
|
+
return rawValue ? 1 : 0;
|
|
106
|
+
}
|
|
107
|
+
else if (lodash.isString(rawValue)) {
|
|
108
|
+
let _rawValue = rawValue.replaceAll(",", "").replaceAll(' ', '');
|
|
109
|
+
try {
|
|
110
|
+
let decimalValue = new Decimal(_rawValue);
|
|
111
|
+
if (decimalValue.isInteger()) {
|
|
112
|
+
return decimalValue.toNumber();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch (e) {
|
|
116
|
+
// do nothing
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
else if (lodash.isDate(rawValue)) {
|
|
120
|
+
return rawValue.getTime();
|
|
121
|
+
}
|
|
122
|
+
else if (lodash.isFunction(rawValue.isValid) && lodash.isFunction(rawValue.toDate)) {
|
|
123
|
+
if (rawValue.isValid() === true) {
|
|
124
|
+
return rawValue.toDate().getTime();
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
else if (lodash.isPlainObject(rawValue) && Object.prototype.hasOwnProperty.call(rawValue, "value")) {
|
|
128
|
+
return this.asIntegerValue(rawValue.value);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
throw new Error("For type safe convert, " + rawValue + " cannot convert to Integer value.");
|
|
132
|
+
},
|
|
133
|
+
|
|
134
|
+
asDateValue(rawValue) {
|
|
135
|
+
if (rawValue === null || rawValue === void 0) {
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
else if (lodash.isInteger(rawValue)) {
|
|
139
|
+
return new Date(rawValue);
|
|
140
|
+
}
|
|
141
|
+
else if (lodash.isString(rawValue)) {
|
|
142
|
+
let day = moment(rawValue)
|
|
143
|
+
if (day.isValid()) {
|
|
144
|
+
return day.toDate();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
else if (lodash.isDate(rawValue)) {
|
|
148
|
+
return rawValue;
|
|
149
|
+
}
|
|
150
|
+
else if (lodash.isFunction(rawValue.isValid) && lodash.isFunction(rawValue.toDate)) {
|
|
151
|
+
if (rawValue.isValid() === true) {
|
|
152
|
+
return rawValue.toDate();
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else if (lodash.isPlainObject(rawValue) && Object.prototype.hasOwnProperty.call(rawValue, "value")) {
|
|
156
|
+
return this.asDateValue(rawValue.value);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
throw new Error("For type safe convert, " + rawValue + " cannot convert to Date value.");
|
|
160
|
+
},
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* used for Framework model data type check
|
|
164
|
+
*/
|
|
165
|
+
isBooleanType(typeExpression) {
|
|
166
|
+
return (typeExpression === Boolean || typeExpression?.toLowerCase() === "boolean" || typeExpression?.toLowerCase() === "bool");
|
|
167
|
+
},
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* used for Framework model data type check
|
|
171
|
+
*/
|
|
172
|
+
isStringType(typeExpression) {
|
|
173
|
+
return (typeExpression === null || typeExpression === void 0
|
|
174
|
+
|| typeExpression === String || typeExpression?.toLowerCase() === "string"
|
|
175
|
+
|| typeExpression === ""
|
|
176
|
+
);
|
|
177
|
+
},
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* used for Framework model data type check
|
|
181
|
+
*/
|
|
182
|
+
isDateType(typeExpression) {
|
|
183
|
+
return (typeExpression === Date || typeExpression?.toLowerCase() === "date");
|
|
184
|
+
},
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* used for Framework model data type check
|
|
188
|
+
*/
|
|
189
|
+
isNumberType(typeExpression) {
|
|
190
|
+
return (typeExpression === Number || typeExpression?.toLowerCase() === "number");
|
|
191
|
+
},
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* used for Framework model data type check
|
|
195
|
+
*/
|
|
196
|
+
isObjectType(typeExpression) {
|
|
197
|
+
return (typeExpression === Object || typeExpression?.toLowerCase() === "object");
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
export default LangTypes;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import lodash from "lodash";
|
|
2
|
+
|
|
3
|
+
const genGetterAndReadonlySetter = function (plainObject) {
|
|
4
|
+
|
|
5
|
+
let retObject = {};
|
|
6
|
+
|
|
7
|
+
for (let attrName in plainObject) {
|
|
8
|
+
Object.defineProperty(retObject, attrName, {
|
|
9
|
+
get: function () {
|
|
10
|
+
return plainObject[attrName];
|
|
11
|
+
},
|
|
12
|
+
set: function (x) {
|
|
13
|
+
throw new Error("Cannot Set value for readonly attribute");
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return retObject;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const isPromise = function(value){
|
|
22
|
+
return lodash.isObject(value) && lodash.isFunction(value.then) && lodash.isFunction(value.catch) && lodash.isFunction(value.finally);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const toStdPromise = function(thenableObject) {
|
|
26
|
+
if (lodash.isFunction(thenableObject.then)) {
|
|
27
|
+
return Promise.resolve(thenableObject);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
throw new Error("Not thenable Object, cannot convert to Standard Promise.");
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const clone = function(value) {
|
|
34
|
+
if (value === null || value === void 0) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return lodash.cloneDeep(value);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const Objects = {
|
|
42
|
+
genGetterAndReadonlySetter,
|
|
43
|
+
clone,
|
|
44
|
+
isPromise,
|
|
45
|
+
toStdPromise
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export default Objects
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import lodash from "lodash";
|
|
2
|
+
import uuid from 'react-uuid';
|
|
3
|
+
|
|
4
|
+
const NUMBERS = "0123456789";
|
|
5
|
+
const ALPHABETS= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
6
|
+
const LOWER_CASE_ALPHABETS= "abcdefghijklmnopqrstuvwxyz";
|
|
7
|
+
const UPPER_CASE_ALPHABETS= "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
8
|
+
const CHARS = ALPHABETS + NUMBERS
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
const Randoms = {
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Gen the value between the min integer Value and max integer Value.
|
|
15
|
+
* when only supply one parameter, the parameter as the max Integer Value.
|
|
16
|
+
* @param minValue
|
|
17
|
+
* @param maxValue
|
|
18
|
+
* @returns {number}
|
|
19
|
+
*/
|
|
20
|
+
randomInt: function(minValue, maxValue) {
|
|
21
|
+
let minIntegerValue = 0;
|
|
22
|
+
let maxIntegerValue = Number.MAX_SAFE_INTEGER;
|
|
23
|
+
|
|
24
|
+
if (lodash.isInteger(minValue) && lodash.isInteger(maxValue) && maxValue > minValue) {
|
|
25
|
+
minIntegerValue = minValue;
|
|
26
|
+
maxIntegerValue = maxValue;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (lodash.isInteger(minValue) && arguments.length == 1) {
|
|
30
|
+
if (minValue > 0) {
|
|
31
|
+
minIntegerValue = 0;
|
|
32
|
+
maxIntegerValue = minValue;
|
|
33
|
+
}
|
|
34
|
+
else if (minValue < 0) {
|
|
35
|
+
minIntegerValue = minValue;
|
|
36
|
+
maxIntegerValue = 0;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return Math.floor(Math.random() * (maxIntegerValue - minIntegerValue + 1)) + minIntegerValue;
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* @param genStrLength
|
|
45
|
+
* @returns {string}
|
|
46
|
+
*/
|
|
47
|
+
randomString: function(genStrLength) {
|
|
48
|
+
if (!lodash.isInteger(genStrLength)) {
|
|
49
|
+
throw new Error("Invalid string length for generate random String.");
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
let genString = "";
|
|
53
|
+
let charsArrayLength = CHARS.length;
|
|
54
|
+
for (let i = 0; i < genStrLength; i++) {
|
|
55
|
+
let number = this.randomInt(charsArrayLength - 1);
|
|
56
|
+
genString = genString + CHARS.charAt(number);
|
|
57
|
+
}
|
|
58
|
+
return genString;
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
randomAlphabets: function(genStrLength) {
|
|
62
|
+
if (!lodash.isInteger(genStrLength)) {
|
|
63
|
+
throw new Error("Invalid string length for generate random Alphabets.");
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
let genString = "";
|
|
67
|
+
let charsArrayLength = ALPHABETS.length;
|
|
68
|
+
for (let i = 0; i < genStrLength; i++) {
|
|
69
|
+
let number = this.randomInt(charsArrayLength - 1);
|
|
70
|
+
genString = genString + ALPHABETS.charAt(number);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return genString;
|
|
74
|
+
},
|
|
75
|
+
|
|
76
|
+
randomLowercaseAlphabets: function(genStrLength) {
|
|
77
|
+
if (!lodash.isInteger(genStrLength)) {
|
|
78
|
+
throw new Error("Invalid string length for generate random uppercase Alphabets.");
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
let genString = "";
|
|
82
|
+
let charsArrayLength = LOWER_CASE_ALPHABETS.length;
|
|
83
|
+
for (let i = 0; i < genStrLength; i++) {
|
|
84
|
+
let number = this.randomInt(charsArrayLength - 1);
|
|
85
|
+
genString = genString + LOWER_CASE_ALPHABETS.charAt(number);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return genString;
|
|
89
|
+
},
|
|
90
|
+
|
|
91
|
+
randomUppercaseAlphabets: function(genStrLength) {
|
|
92
|
+
if (!lodash.isInteger(genStrLength)) {
|
|
93
|
+
throw new Error("Invalid string length for generate random lowercase Alphabets.");
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
let genString = "";
|
|
97
|
+
let charsArrayLength = UPPER_CASE_ALPHABETS.length;
|
|
98
|
+
for (let i = 0; i < genStrLength; i++) {
|
|
99
|
+
let number = this.randomInt(charsArrayLength - 1);
|
|
100
|
+
genString = genString + UPPER_CASE_ALPHABETS.charAt(number);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return genString;
|
|
104
|
+
},
|
|
105
|
+
|
|
106
|
+
randomStringsIn: function(scopedStrings, genStrLength) {
|
|
107
|
+
if (!lodash.isString(scopedStrings) ) {
|
|
108
|
+
throw new Error("Invalid scopedStrings for generate random strings.");
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (scopedStrings.length < 1) {
|
|
112
|
+
throw new Error("Invalid scopedStrings for generate random strings.");
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (!lodash.isInteger(genStrLength)) {
|
|
116
|
+
throw new Error("Invalid string length for generate random lowercase Alphabets.");
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
let genString = "";
|
|
120
|
+
let charsArrayLength = scopedStrings.length;
|
|
121
|
+
for (let i = 0; i < genStrLength; i++) {
|
|
122
|
+
let number = this.randomInt(charsArrayLength - 1);
|
|
123
|
+
genString = genString + scopedStrings.charAt(number);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return genString;
|
|
127
|
+
},
|
|
128
|
+
|
|
129
|
+
uuid: function() {
|
|
130
|
+
return uuid();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export {
|
|
135
|
+
NUMBERS,
|
|
136
|
+
ALPHABETS,
|
|
137
|
+
LOWER_CASE_ALPHABETS,
|
|
138
|
+
UPPER_CASE_ALPHABETS,
|
|
139
|
+
CHARS
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export default Randoms;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import lodash from "lodash";
|
|
2
|
+
import LangTypes from "./LangTypes"
|
|
3
|
+
|
|
4
|
+
const isWhitespace = function(c) {
|
|
5
|
+
if (c === null || c === void 0) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
let stringAfterTrim = c.trim();
|
|
10
|
+
return !(stringAfterTrim === c)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const Strings = {
|
|
14
|
+
isBlankString(value) {
|
|
15
|
+
if (value === null || value === void 0) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
if (lodash.isString(value)) {
|
|
20
|
+
for (let i = 0, len = value.length; i < len; i++) {
|
|
21
|
+
let str = value.charAt(i);
|
|
22
|
+
if (!isWhitespace(str)) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return false;
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
isNotBlankString(value) {
|
|
33
|
+
if (value === null || value === void 0) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (lodash.isString(value)) {
|
|
38
|
+
return !this.isBlankString(value);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return false;
|
|
42
|
+
},
|
|
43
|
+
|
|
44
|
+
removeBlankStrings(value) {
|
|
45
|
+
if (value === null || value === void 0) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (!lodash.isString(value)) {
|
|
50
|
+
throw new Error("Invalid value [" + value + "] for Strings#removeBlankStrings");
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
let lastString = "";
|
|
54
|
+
for (let i = 0, len = value.length; i < len; i++) {
|
|
55
|
+
let str = value.charAt(i);
|
|
56
|
+
if (!isWhitespace(str)) {
|
|
57
|
+
lastString = lastString + str;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return lastString;
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
isEmail(value) {
|
|
65
|
+
if (!lodash.isString(value)) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return new RegExp(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|.(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/)
|
|
70
|
+
.test(value);
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* 检测密码强度
|
|
75
|
+
* @param password {string}
|
|
76
|
+
* 密码
|
|
77
|
+
* @param minLength
|
|
78
|
+
* 最小长度 默认8位,最小4位;
|
|
79
|
+
* @returns
|
|
80
|
+
* 强度等级: [0,1,2,3,4]
|
|
81
|
+
*/
|
|
82
|
+
checkPasswordStrength(password, minLength = 8) {
|
|
83
|
+
let level = 0;
|
|
84
|
+
|
|
85
|
+
if (password === null || password === void 0) {
|
|
86
|
+
return level;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (minLength < 4) {
|
|
90
|
+
minLength = 4;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
let _password = LangTypes.asStringValue(password);
|
|
94
|
+
|
|
95
|
+
if (_password.length < minLength) {
|
|
96
|
+
return level
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (/[0-9]/.test(_password)) {
|
|
100
|
+
level++
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (/[a-z]/.test(_password)) {
|
|
104
|
+
level++
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
if (/[A-Z]/.test(_password)) {
|
|
108
|
+
level++
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (/\W/.test(_password)) {
|
|
112
|
+
level++
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return level
|
|
116
|
+
},
|
|
117
|
+
|
|
118
|
+
isUppercase(str) {
|
|
119
|
+
if (str === null || str === void 0) {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (lodash.isString(str)) {
|
|
124
|
+
return str === str.toUpperCase();
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return false;
|
|
128
|
+
},
|
|
129
|
+
|
|
130
|
+
isLowercase(str) {
|
|
131
|
+
if (str === null || str === void 0) {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (lodash.isString(str)) {
|
|
136
|
+
return str === str.toLowerCase();
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return false;
|
|
140
|
+
|
|
141
|
+
},
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
export default Strings;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import {Values} from "./index";
|
|
2
|
+
|
|
3
|
+
const convertList2TreeNodeList = function (list, parent_pk) {
|
|
4
|
+
let nodes = [];
|
|
5
|
+
if (!list || list.length < 1) {
|
|
6
|
+
return nodes;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
let trees = list.filter(item => item.parent_pk === parent_pk);
|
|
10
|
+
if (!trees || trees.length < 1) {
|
|
11
|
+
return nodes;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
for (let i = 0; i < trees.length; i++) {
|
|
15
|
+
let tree = trees[i];
|
|
16
|
+
let children = convertList2TreeNodeList(list, tree.pk);
|
|
17
|
+
let node = {
|
|
18
|
+
...tree,
|
|
19
|
+
children: [],
|
|
20
|
+
label: tree.name,
|
|
21
|
+
value: tree.pk,
|
|
22
|
+
key: "" + tree.pk,
|
|
23
|
+
option: tree
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
if (tree.renderLabel && typeof tree.renderLabel === 'function') {
|
|
27
|
+
node.label = tree.renderLabel(tree.name, tree);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (!children || children.length < 1) {
|
|
31
|
+
nodes.push(node);
|
|
32
|
+
} else {
|
|
33
|
+
node.children = children;
|
|
34
|
+
nodes.push(node)
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return nodes;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const convertTreeNode2List = function (list, treeItem, treeIndex, treeList) {
|
|
42
|
+
if (treeList[treeIndex] && Values.isNotEmptyArray(treeList[treeIndex].children)) {
|
|
43
|
+
convertTreeNode2List(list, treeList[treeIndex].children[0], 0, treeList[treeIndex].children);
|
|
44
|
+
}
|
|
45
|
+
let bHasChildItem = list.findIndex(item => treeItem && item.pk === treeItem.pk);
|
|
46
|
+
if (bHasChildItem === -1) {
|
|
47
|
+
list.push({...treeItem});
|
|
48
|
+
}
|
|
49
|
+
if (treeIndex === treeList.length - 1) {
|
|
50
|
+
} else {
|
|
51
|
+
treeIndex++;
|
|
52
|
+
convertTreeNode2List(list, treeList[treeIndex], treeIndex, treeList);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const setTreeNodeSelectedByPk = function(treeViewData, treeNodePKAttrName, pkValue) {
|
|
57
|
+
if (!treeViewData || treeViewData.length == 0) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
for (let treeNodeItem of treeViewData) {
|
|
62
|
+
if (treeNodeItem[treeNodePKAttrName] == pkValue) {
|
|
63
|
+
treeNodeItem.selected = true;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
treeNodeItem.selected = false;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (treeNodeItem.children && treeNodeItem.children.length > 0)
|
|
70
|
+
{
|
|
71
|
+
setTreeNodeSelectedByPk(treeNodeItem.children, treeNodePKAttrName, pkValue);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const convertList2GroupList = (list, iskey, isCodeKey) => {
|
|
77
|
+
let moth = [],
|
|
78
|
+
flag = 0;
|
|
79
|
+
|
|
80
|
+
let item = {
|
|
81
|
+
title: '',
|
|
82
|
+
children: ''
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
for (let i = 0; i < list.length; i++) {
|
|
86
|
+
let az = '';
|
|
87
|
+
for (let j = 0; j < moth.length; j++) {
|
|
88
|
+
if (moth[j].title_code === list[i][iskey]) {
|
|
89
|
+
flag = 1;
|
|
90
|
+
az = j;
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (flag === 1) {
|
|
95
|
+
let ab = moth[az];
|
|
96
|
+
ab.children.push(list[i]);
|
|
97
|
+
flag = 0;
|
|
98
|
+
|
|
99
|
+
} else if (flag === 0 && list[i][iskey] !== null) {
|
|
100
|
+
item = {};
|
|
101
|
+
item.key = i + 1;
|
|
102
|
+
item.extra_code = list[i][isCodeKey];
|
|
103
|
+
item.title_code = list[i][iskey];
|
|
104
|
+
item.title = list[i][iskey];
|
|
105
|
+
item.children = [];
|
|
106
|
+
item.children.push(list[i]);
|
|
107
|
+
moth.push(item);
|
|
108
|
+
} else if (flag === 0 && (!list[i][iskey] || list[i][iskey] === null)) {
|
|
109
|
+
item = {};
|
|
110
|
+
item.key = i + 1;
|
|
111
|
+
item.extra_code = list[i][isCodeKey];
|
|
112
|
+
item.title_code = null;
|
|
113
|
+
item.title = "其他";
|
|
114
|
+
item.children = [];
|
|
115
|
+
item.children.push(list[i]);
|
|
116
|
+
moth.push(item);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return moth;
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
export {
|
|
124
|
+
convertList2TreeNodeList,
|
|
125
|
+
convertTreeNode2List,
|
|
126
|
+
convertList2GroupList,
|
|
127
|
+
setTreeNodeSelectedByPk
|
|
128
|
+
}
|