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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sh-tools",
3
- "version": "2.3.1",
3
+ "version": "2.3.3",
4
4
  "description": "基于fetch和xe-utils二次封装,支持宏公式计算",
5
5
  "main": "packages/index.js",
6
6
  "scripts": {
@@ -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, $vxePluginNames } = renderContext
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 defaultDateFormat = {
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
- let field = rowData[key + 'field'] || key
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' || ['integer', 'number', 'float'].includes(type)
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) && ['number', 'float'].includes(type)) {
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('YYYY', 'yyyy').replace('DD', 'dd').replace('hh', 'HH') : defaultDateFormat[type]
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 endStrs = ['Id', '_id']
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 (options && options.length) {
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 (options && options.length) {
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
  }