sh-view 2.9.8 → 2.9.11

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 (34) hide show
  1. package/package.json +11 -11
  2. package/packages/components/index.js +1 -7
  3. package/packages/components/sh-calendar/index.vue +2 -2
  4. package/packages/components/sh-date/index.vue +1 -1
  5. package/packages/components/sh-form/js/useForm.js +10 -3
  6. package/packages/components/sh-table/components/importModal.vue +7 -7
  7. package/packages/components/sh-table/grid.vue +1 -2
  8. package/packages/components/sh-table/js/props.js +7 -3
  9. package/packages/components/sh-table/js/tableMethods.js +42 -3
  10. package/packages/components/sh-table/js/useTable.js +38 -35
  11. package/packages/components/sh-table/table.vue +1 -2
  12. package/packages/components/sh-tree/components/table-tree.vue +49 -109
  13. package/packages/components/sh-tree/index.vue +127 -38
  14. package/packages/css/theme.scss +4 -0
  15. package/packages/index.js +0 -1
  16. package/packages/vxeTable/css/index.scss +18 -24
  17. package/packages/vxeTable/index.js +81 -49
  18. package/packages/vxeTable/render/cell/vxe-render-checkgroup.vue +4 -4
  19. package/packages/vxeTable/render/cell/vxe-render-goption.vue +3 -3
  20. package/packages/vxeTable/render/cell/vxe-render-img.vue +6 -2
  21. package/packages/vxeTable/render/cell/vxe-render-input.vue +2 -2
  22. package/packages/vxeTable/render/cell/vxe-render-money.vue +19 -3
  23. package/packages/vxeTable/render/cell/vxe-render-radiogroup.vue +4 -4
  24. package/packages/vxeTable/render/cell/vxe-render-select.vue +2 -2
  25. package/packages/vxeTable/render/cell/vxe-render-table.vue +7 -6
  26. package/packages/vxeTable/render/cell/vxe-render-time.vue +3 -3
  27. package/packages/vxeTable/render/cell/vxe-render-tree.vue +1 -1
  28. package/packages/vxeTable/render/footer/vxe-footer-input.vue +13 -3
  29. package/packages/vxeTable/render/footer/vxe-footer-money.vue +13 -3
  30. package/packages/vxeTable/render/globalRenders.jsx +73 -205
  31. package/packages/vxeTable/render/header/vxe-header-money.vue +1 -1
  32. package/packages/vxeTable/render/mixin/cell-hooks.js +47 -53
  33. package/packages/vxeTable/render/mixin/cell-props.js +2 -10
  34. package/packages/vxeTable/render/mixin/filter-hooks.js +3 -0
@@ -6,33 +6,42 @@ export default function (props, context, proxy) {
6
6
  const renderValue = ref(null)
7
7
  const renderText = ref('')
8
8
 
9
- const rsize = computed(() => props.rprops.size || props.rparams.$table?.props?.size || props.rparams.$form?.props?.size)
10
- const rform = computed(() => !!props.rparams.$form)
11
- const reditmode = computed(() => props.rparams.$table?.props?.editConfig?.mode)
12
- const isEditAll = computed(() => {
13
- return props.rparams.$table?.props?.editConfig?.enabled && reditmode.value === 'all' && props.rparams.column.editRender
9
+ const mprops = computed(() => {
10
+ let { $grid, $table } = props.rparams
11
+ const contextAttrs = $grid?.context.attrs || $table?.context.attrs || {}
12
+ return contextAttrs.moneyConfig || {}
14
13
  })
14
+
15
+ const rform = computed(() => !!props.rparams.$form)
16
+ const rkey = computed(() => (rform.value ? props.rparams.property : props.rparams.column.property))
17
+ const rname = computed(() => props.roptions.name)
18
+ const rprops = computed(() => Object.assign({}, props.roptions.props, mprops.value))
19
+ const rdata = computed(() => (rform.value ? props.rparams.data : props.rparams.row))
20
+ const rsize = computed(() => rprops.value.size || (rform.value ? props.rparams.$form.props.size : props.rparams.$table.props.size))
21
+
22
+ const reditmode = computed(() => props.rparams.$table.props.editConfig.mode)
23
+ const isEditAll = computed(() => props.rparams.$table.props.editConfig.enabled && reditmode.value === 'all' && props.rparams.column.editRender)
15
24
  const billGroups = computed(() => {
16
- let { billStart = '分', billEnd = '亿' } = props.rprops
25
+ let { billStart = '分', billEnd = '亿' } = rprops.value
17
26
  let startIndex = $vTableSetup.cnGroups.findIndex(cn => cn.fullText === billEnd)
18
27
  let endIndex = $vTableSetup.cnGroups.findIndex(cn => cn.fullText === billStart)
19
28
  return $vTableSetup.cnGroups.slice(startIndex, endIndex + 1)
20
29
  })
21
30
  const psButtonConfig = computed(() => {
22
- return { disabled: props.rprops.disabled, size: props.rsize, status: 'primary' }
31
+ return { disabled: rprops.value.disabled, size: rsize.value, status: 'primary' }
23
32
  })
24
- const prefixButton = computed(() => props.rprops.prefixType?.toLowerCase() === 'button')
25
- const suffixButton = computed(() => props.rprops.suffixType?.toLowerCase() === 'button')
33
+ const prefixButton = computed(() => String(rprops.value.prefixType).toLowerCase() === 'button')
34
+ const suffixButton = computed(() => String(rprops.value.suffixType).toLowerCase() === 'button')
26
35
 
27
36
  // 初始化数据
28
37
  const initData = () => {
29
- let keyValue = $vUtils.get(props.rdata, props.rkey)
38
+ let keyValue = $vUtils.get(rdata.value, rkey.value)
30
39
  formatValueFun(keyValue)
31
40
  }
32
41
 
33
42
  // 输入框前缀点击事件
34
43
  const vxeInputPrefixClick = () => {
35
- if (props.rprops.disabled) return
44
+ if (rprops.value.disabled) return
36
45
  if (rform.value) {
37
46
  let { $form } = props.rparams
38
47
  $form.context.emit('prefix-click', props.rparams)
@@ -40,7 +49,7 @@ export default function (props, context, proxy) {
40
49
  }
41
50
  // 输入框后缀点击事件
42
51
  const vxeInputSuffixClick = () => {
43
- if (props.rprops.disabled) return
52
+ if (rprops.value.disabled) return
44
53
  if (rform.value) {
45
54
  let { $form } = props.rparams
46
55
  $form.context.emit('suffix-click', props.rparams)
@@ -65,48 +74,29 @@ export default function (props, context, proxy) {
65
74
  setRenderValue(value)
66
75
  }
67
76
  // 回调赋值
68
- const setRenderValue = (value, isCall) => {
69
- let cellValue = value || renderValue.value
70
- if (!isCall) {
71
- if (['$vMoney'].includes(props.rname) && !$vUtils.isNone(cellValue)) {
72
- if (props.rprops.commafy) cellValue = String(cellValue).replace(',', '')
73
- cellValue = $vUtils.multiply(cellValue, props.rprops.moneyUnit || 1)
74
- }
75
- let { rvalue, rtext } = formatValueFun(cellValue, true)
76
- cellValue = rvalue
77
- }
78
- $vUtils.set(props.rdata, props.rkey, cellValue)
77
+ const setRenderValue = value => {
78
+ let cellValue = !$vUtils.isNone(value) ? value : renderValue.value
79
+ let { rvalue, rtext } = $vUtils.formatRender(cellValue, rkey.value, rdata.value, rname.value, rprops.value, proxy, true)
80
+ $vUtils.set(rdata.value, rkey.value, rvalue)
81
+ renderValue.value = rvalue
82
+ renderText.value = rtext
79
83
  if (rform.value) {
80
84
  let { $form } = props.rparams
81
85
  $form.context.emit('edit-closed', props.rparams)
82
86
  }
83
87
  }
84
88
  // 格式化值formatValue
85
- const formatValueFun = (value, editable) => {
89
+ const formatValueFun = value => {
90
+ let cellValue = value
91
+ let cellProps = rprops.value
86
92
  if (props.rparams.type === 'footer') {
87
93
  const { items, itemIndex } = props.rparams
88
- const { moneyUnit, digits, type, commafy } = props.rprops
89
- let footerText = items[itemIndex]
90
- if (props.rname === '$vMoney') footerText = $vUtils.truncate($vUtils.divide(items[itemIndex], moneyUnit), digits)
91
- else if (!$vUtils.isNone(footerText) && ['integer'].includes(type)) footerText = $vUtils.toInteger(footerText)
92
- else if (!$vUtils.isNone(footerText) && ['number', 'float'].includes(type)) footerText = $vUtils.truncate(footerText, digits)
93
- if (!$vUtils.isNone(footerText) && commafy) footerText = $vUtils.commafy(footerText, { digits })
94
- renderValue.value = items[itemIndex]
95
- renderText.value = footerText
96
- return
97
- }
98
- const { rvalue, rtext } = $vUtils.formatRender(value, props.rkey, props.rdata, props.rname, props.rprops, proxy, editable)
99
- if (props.rname === '$vMoney' && !props.rprops.bill && props.rprops.bill !== '0') {
100
- renderValue.value = rtext
101
- } else {
102
- renderValue.value = rvalue
94
+ cellValue = items[itemIndex]
95
+ cellProps = Object.assign({}, rprops.value, { formula: null, formulaMap: null })
103
96
  }
104
- if (props.rname === '$vTime' && props.rprops.range && Array.isArray(rtext) && rtext.length > 0) {
105
- renderText.value = `${rtext[0] || ''}${props.rprops.separator}${rtext[1] || ''}`
106
- } else {
107
- renderText.value = rtext
108
- }
109
- return { rvalue, rtext }
97
+ const { rvalue, rtext } = $vUtils.formatRender(cellValue, rkey.value, rdata.value, rname.value, cellProps, proxy, false)
98
+ renderValue.value = rvalue
99
+ renderText.value = rtext
110
100
  }
111
101
  const getBillClass = bil => {
112
102
  return { basic: bil.fullText === '元', commafy: ['千', '百万', '十亿', '兆'].includes(bil.fullText) }
@@ -120,27 +110,31 @@ export default function (props, context, proxy) {
120
110
  }
121
111
 
122
112
  watch(
123
- () => props.rdata,
113
+ () => rdata.value,
124
114
  () => {
125
- let keyValue = $vUtils.get(props.rdata, props.rkey)
126
- let keyFormula = $vUtils.get(props.rprops, 'formula')
127
- if (keyValue && $vUtils.isEqual(keyValue, renderValue.value) && !keyFormula) return
128
115
  initData()
129
116
  },
130
117
  { deep: true, immediate: true }
131
118
  )
132
119
  watch(
133
- () => props.rprops,
134
- () => {
135
- initData()
120
+ () => mprops.value.moneyUnit,
121
+ (nv, ov) => {
122
+ if (['$vMoney'].includes(rname.value) && !$vUtils.isEqual(nv, ov)) {
123
+ initData()
124
+ }
136
125
  }
137
126
  )
138
127
 
139
128
  return {
140
129
  renderValue,
141
130
  renderText,
142
- rsize,
143
131
  rform,
132
+ rkey,
133
+ rname,
134
+ rprops,
135
+ rdata,
136
+ rsize,
137
+ mprops,
144
138
  isEditAll,
145
139
  billGroups,
146
140
  psButtonConfig,
@@ -1,20 +1,12 @@
1
1
  export default {
2
2
  redit: { type: Boolean },
3
- rkey: { type: String },
4
- rname: { type: String },
5
- rdata: {
6
- type: Object,
7
- default() {
8
- return {}
9
- }
10
- },
11
- rprops: {
3
+ rparams: {
12
4
  type: Object,
13
5
  default() {
14
6
  return {}
15
7
  }
16
8
  },
17
- rparams: {
9
+ roptions: {
18
10
  type: Object,
19
11
  default() {
20
12
  return {}
@@ -5,6 +5,8 @@ export default function (props, context, proxy, initRenderData) {
5
5
 
6
6
  let renderOption = ref({})
7
7
 
8
+ const rprops = computed(() => Object.assign({}, props.roptions.props))
9
+
8
10
  // 初始化
9
11
  const initData = () => {
10
12
  const { column, $panel } = props.rparams
@@ -38,6 +40,7 @@ export default function (props, context, proxy, initRenderData) {
38
40
  )
39
41
 
40
42
  return {
43
+ rprops,
41
44
  renderOption,
42
45
  vxeFilterChange,
43
46
  vxeFilterConfirm,