sh-tools 2.3.1 → 2.3.3
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/package.json +1 -1
- package/packages/utils/other.js +25 -25
package/package.json
CHANGED
package/packages/utils/other.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
import XEUtils from 'xe-utils'
|
|
2
|
+
const defaultDateFormat = {
|
|
3
|
+
date: 'yyyy-MM-dd',
|
|
4
|
+
time: 'HH:mm:ss',
|
|
5
|
+
datetime: 'yyyy-MM-dd HH:mm:ss',
|
|
6
|
+
month: 'yyyy-MM',
|
|
7
|
+
week: 'yyyy-MM-dd',
|
|
8
|
+
year: 'yyyy'
|
|
9
|
+
}
|
|
10
|
+
const endStrs = ['Id', '_id']
|
|
11
|
+
const numberTypes = ['integer', 'number', 'float']
|
|
12
|
+
const dateReplaceMap = { YYYY: 'yyyy', DD: 'dd', hh: 'HH' }
|
|
2
13
|
|
|
3
14
|
export default {
|
|
4
15
|
toDateDiffText(date) {
|
|
@@ -147,27 +158,18 @@ export default {
|
|
|
147
158
|
formatRender(value, key, rowData, renderName, renderProps, renderContext, editable) {
|
|
148
159
|
// editable: 是否对返回值进行修正 默认 否
|
|
149
160
|
let rvalue, rtext, rname
|
|
150
|
-
let { $vUtils
|
|
161
|
+
let { $vUtils } = renderContext
|
|
151
162
|
let { min, max, digits, type, multiple, split, options, format, range, nodeKey, labelField, moneyUnit, openValue, openLabel, closeValue, closeLabel, defaultValue, separator } =
|
|
152
163
|
renderProps || {}
|
|
153
|
-
let
|
|
154
|
-
date: 'yyyy-MM-dd',
|
|
155
|
-
time: 'HH:mm:ss',
|
|
156
|
-
datetime: 'yyyy-MM-dd HH:mm:ss',
|
|
157
|
-
month: 'yyyy-MM',
|
|
158
|
-
week: 'yyyy-MM-dd',
|
|
159
|
-
year: 'yyyy'
|
|
160
|
-
}
|
|
164
|
+
let field = key
|
|
161
165
|
if (renderName === '$vRowCell') {
|
|
162
|
-
|
|
166
|
+
field = rowData[key + 'field'] || key
|
|
163
167
|
rname = rowData[field + 'RenderName'] || '$vInput'
|
|
164
168
|
} else {
|
|
165
169
|
rname = renderName
|
|
166
170
|
}
|
|
167
171
|
// 对于多选获取数组类型值进行解析 赋值
|
|
168
172
|
let oriArray = []
|
|
169
|
-
// 配置公式,优先取解析后的嵌套公式
|
|
170
|
-
let formula = $vUtils.get(renderProps, `formulaMap.${key}`) || renderProps.formula
|
|
171
173
|
// 进行默认赋值 若没有任何解析原数返回
|
|
172
174
|
rvalue = value
|
|
173
175
|
if (!$vUtils.isNone(defaultValue) && $vUtils.isNone(value)) {
|
|
@@ -180,7 +182,7 @@ export default {
|
|
|
180
182
|
switch (rname) {
|
|
181
183
|
case '$vInput':
|
|
182
184
|
case '$vMoney':
|
|
183
|
-
let isNumberType = rname === '$vMoney' ||
|
|
185
|
+
let isNumberType = rname === '$vMoney' || numberTypes.includes(type)
|
|
184
186
|
if (editable && isNumberType && !$vUtils.isNone(value)) {
|
|
185
187
|
if ($vUtils.isNumber(+max) && +value > +max) {
|
|
186
188
|
value = +max
|
|
@@ -188,12 +190,9 @@ export default {
|
|
|
188
190
|
value = +min
|
|
189
191
|
}
|
|
190
192
|
}
|
|
191
|
-
|
|
192
|
-
if (formula) {
|
|
193
|
-
rvalue = $vUtils.calculate(formula, rowData)
|
|
194
|
-
} else if (!$vUtils.isNone(value) && ['integer'].includes(type)) {
|
|
193
|
+
if (!$vUtils.isNone(value) && type === 'integer') {
|
|
195
194
|
rvalue = $vUtils.toInteger(value)
|
|
196
|
-
} else if (!$vUtils.isNone(value) &&
|
|
195
|
+
} else if (!$vUtils.isNone(value) && numberTypes.includes(type)) {
|
|
197
196
|
rvalue = $vUtils.truncate(value, digits)
|
|
198
197
|
}
|
|
199
198
|
if (rname === '$vMoney' && !$vUtils.isNone(rvalue)) {
|
|
@@ -205,7 +204,7 @@ export default {
|
|
|
205
204
|
}
|
|
206
205
|
break
|
|
207
206
|
case '$vTime':
|
|
208
|
-
format = format ? format.replace(
|
|
207
|
+
format = format ? format.replace(dateReplaceMap, match => dateReplaceMap[match]) : defaultDateFormat[type]
|
|
209
208
|
if ($vUtils.isNumber(value)) value = String(value)
|
|
210
209
|
if (range && Array.isArray(value) && format) {
|
|
211
210
|
rvalue = value.map(item => $vUtils.toDateString(item || '', format))
|
|
@@ -223,15 +222,16 @@ export default {
|
|
|
223
222
|
case '$vUpload':
|
|
224
223
|
case '$vTree':
|
|
225
224
|
let prefixKey = key
|
|
226
|
-
const
|
|
227
|
-
endStrs.forEach(end => {
|
|
225
|
+
for (const end of endStrs) {
|
|
228
226
|
if (String(key).endsWith(end)) {
|
|
229
227
|
prefixKey = key.replace(end, '')
|
|
228
|
+
break
|
|
230
229
|
}
|
|
231
|
-
}
|
|
230
|
+
}
|
|
232
231
|
let isMutiple = multiple || ['$vCheckgroup', '$vUpload'].includes(rname)
|
|
233
232
|
let optionValue = 'value'
|
|
234
233
|
let optionLabel = 'label'
|
|
234
|
+
let hasOptions = options && options.length > 0
|
|
235
235
|
if (rname === '$vTree') {
|
|
236
236
|
optionValue = nodeKey || 'id'
|
|
237
237
|
if (labelField) optionLabel = labelField
|
|
@@ -243,7 +243,7 @@ export default {
|
|
|
243
243
|
oriArray = String(value).split(split)
|
|
244
244
|
}
|
|
245
245
|
oriArray = oriArray.filter(item => !$vUtils.isNone(item))
|
|
246
|
-
if (
|
|
246
|
+
if (hasOptions) {
|
|
247
247
|
let rns = oriArray.map(orv => {
|
|
248
248
|
let valueOption = options.find(option => $vUtils.isEqual(option[optionValue], orv))
|
|
249
249
|
return valueOption ? valueOption[optionLabel] : ''
|
|
@@ -254,7 +254,7 @@ export default {
|
|
|
254
254
|
}
|
|
255
255
|
rvalue = oriArray
|
|
256
256
|
} else {
|
|
257
|
-
if (
|
|
257
|
+
if (hasOptions) {
|
|
258
258
|
let valueOption = options.find(option => $vUtils.isEqual(option[optionValue], value))
|
|
259
259
|
rtext = valueOption ? valueOption[optionLabel] : ''
|
|
260
260
|
} else {
|
|
@@ -282,6 +282,6 @@ export default {
|
|
|
282
282
|
default:
|
|
283
283
|
rtext = rvalue
|
|
284
284
|
}
|
|
285
|
-
return { rvalue, rtext }
|
|
285
|
+
return { rvalue, rtext, rname }
|
|
286
286
|
}
|
|
287
287
|
}
|