sh-view 2.7.8 → 2.8.0

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 (121) hide show
  1. package/other.js +8 -0
  2. package/package.json +4 -3
  3. package/packages/components/index.js +35 -35
  4. package/packages/components/{global-components/sh-alert → sh-alert}/index.vue +8 -15
  5. package/packages/components/{global-components/sh-badge → sh-badge}/index.vue +6 -5
  6. package/packages/components/{global-components/sh-calendar → sh-calendar}/index.vue +167 -36
  7. package/packages/components/{global-components/sh-date → sh-date}/index.vue +37 -9
  8. package/packages/components/{global-components/sh-drawer → sh-drawer}/index.vue +49 -27
  9. package/packages/components/{global-components/sh-form → sh-form}/js/useForm.js +2 -2
  10. package/packages/components/sh-header/index.vue +260 -0
  11. package/packages/components/sh-icon/css/font/icons.scss +135 -0
  12. package/packages/components/{global-components/sh-image → sh-image}/index.vue +2 -1
  13. package/packages/components/{global-components/sh-poptip → sh-poptip}/index.vue +1 -1
  14. package/packages/components/{global-components/sh-progress → sh-progress}/index.vue +2 -18
  15. package/packages/components/{global-components/sh-table → sh-table}/css/index.scss +18 -0
  16. package/packages/components/{global-components/sh-table → sh-table}/js/tableMethods.js +12 -20
  17. package/packages/components/{global-components/sh-table → sh-table}/js/useTable.js +4 -6
  18. package/packages/components/{global-components/sh-table → sh-table}/table.vue +217 -218
  19. package/packages/components/{global-components/sh-tabs → sh-tabs}/index.vue +97 -34
  20. package/packages/components/{global-components/sh-tree → sh-tree}/components/table-tree.vue +1 -2
  21. package/packages/components/{global-components/sh-tree → sh-tree}/css/index.scss +1 -0
  22. package/packages/components/{global-components/sh-tree → sh-tree}/index.vue +228 -217
  23. package/packages/components/{global-components/sh-tree → sh-tree}/mixin/treeProps.js +1 -1
  24. package/packages/index.js +39 -39
  25. package/packages/{components/other-components → other}/sh-cron-modal/tabs/cron-week-box.vue +126 -126
  26. package/packages/{components/other-components → other}/sh-menu/index.vue +3 -0
  27. package/packages/{components/other-components → other}/sh-menu/menu-item-content.vue +3 -3
  28. package/packages/other/sh-preview/components/sh-excel.vue +163 -0
  29. package/packages/{components/other-components → other}/sh-preview/index.vue +92 -89
  30. package/packages/vxeTable/css/index.scss +31 -8
  31. package/packages/vxeTable/render/cell/vxe-render-tree.vue +70 -63
  32. package/packages/vxeTable/render/filters/vxe-filter-input.vue +26 -25
  33. package/packages/vxeTable/render/filters/vxe-filter-time.vue +26 -0
  34. package/packages/vxeTable/render/globalRenders.jsx +26 -7
  35. package/packages/vxeTable/render/mixin/filter-hooks.js +31 -13
  36. package/packages/components/global-components/sh-header/index.vue +0 -278
  37. package/packages/components/global-components/sh-icon/css/font/icons.scss +0 -135
  38. package/packages/components/other-components/sh-preview/components/sh-excel.vue +0 -929
  39. /package/packages/components/{global-components/sh-card → sh-card}/index.vue +0 -0
  40. /package/packages/components/{global-components/sh-code-editor → sh-code-editor}/index.vue +0 -0
  41. /package/packages/components/{global-components/sh-code-editor → sh-code-editor}/themes/dark.js +0 -0
  42. /package/packages/components/{global-components/sh-code-editor → sh-code-editor}/themes/dracula.js +0 -0
  43. /package/packages/components/{global-components/sh-code-editor → sh-code-editor}/themes/index.js +0 -0
  44. /package/packages/components/{global-components/sh-col → sh-col}/css/index.scss +0 -0
  45. /package/packages/components/{global-components/sh-col → sh-col}/index.vue +0 -0
  46. /package/packages/components/{global-components/sh-corner → sh-corner}/index.vue +0 -0
  47. /package/packages/components/{global-components/sh-count-to → sh-count-to}/index.vue +0 -0
  48. /package/packages/components/{global-components/sh-drawer → sh-drawer}/scrollbar.js +0 -0
  49. /package/packages/components/{global-components/sh-empty → sh-empty}/index.vue +0 -0
  50. /package/packages/components/{global-components/sh-form → sh-form}/form.vue +0 -0
  51. /package/packages/components/{global-components/sh-form → sh-form}/js/props.js +0 -0
  52. /package/packages/components/{global-components/sh-form → sh-form}/query.vue +0 -0
  53. /package/packages/components/{global-components/sh-icon → sh-icon}/css/default/icons.scss +0 -0
  54. /package/packages/components/{global-components/sh-icon → sh-icon}/css/default/ionicons.svg +0 -0
  55. /package/packages/components/{global-components/sh-icon → sh-icon}/css/default/ionicons.ttf +0 -0
  56. /package/packages/components/{global-components/sh-icon → sh-icon}/css/default/ionicons.woff +0 -0
  57. /package/packages/components/{global-components/sh-icon → sh-icon}/css/default/ionicons.woff2 +0 -0
  58. /package/packages/components/{global-components/sh-icon → sh-icon}/css/font/iconfont.js +0 -0
  59. /package/packages/components/{global-components/sh-icon → sh-icon}/css/font/iconfont.json +0 -0
  60. /package/packages/components/{global-components/sh-icon → sh-icon}/css/font/iconfont.ttf +0 -0
  61. /package/packages/components/{global-components/sh-icon → sh-icon}/css/font/iconfont.woff +0 -0
  62. /package/packages/components/{global-components/sh-icon → sh-icon}/css/font/iconfont.woff2 +0 -0
  63. /package/packages/components/{global-components/sh-icon → sh-icon}/css/index.scss +0 -0
  64. /package/packages/components/{global-components/sh-icon → sh-icon}/index.vue +0 -0
  65. /package/packages/components/{global-components/sh-list → sh-list}/index.vue +0 -0
  66. /package/packages/components/{global-components/sh-loading → sh-loading}/index.vue +0 -0
  67. /package/packages/components/{global-components/sh-modal → sh-modal}/index.vue +0 -0
  68. /package/packages/components/{global-components/sh-noticebar → sh-noticebar}/index.vue +0 -0
  69. /package/packages/components/{global-components/sh-pull-refresh → sh-pull-refresh}/index.vue +0 -0
  70. /package/packages/components/{global-components/sh-result → sh-result}/index.vue +0 -0
  71. /package/packages/components/{global-components/sh-row → sh-row}/css/index.scss +0 -0
  72. /package/packages/components/{global-components/sh-row → sh-row}/index.vue +0 -0
  73. /package/packages/components/{global-components/sh-split → sh-split}/components/trigger.vue +0 -0
  74. /package/packages/components/{global-components/sh-split → sh-split}/index.vue +0 -0
  75. /package/packages/components/{global-components/sh-table → sh-table}/components/importModal.vue +0 -0
  76. /package/packages/components/{global-components/sh-table → sh-table}/components/sh-column.vue +0 -0
  77. /package/packages/components/{global-components/sh-table → sh-table}/grid.vue +0 -0
  78. /package/packages/components/{global-components/sh-table → sh-table}/js/excel_to_json.js +0 -0
  79. /package/packages/components/{global-components/sh-table → sh-table}/js/props.js +0 -0
  80. /package/packages/components/{global-components/sh-tag → sh-tag}/index.vue +0 -0
  81. /package/packages/components/{global-components/sh-toolbar → sh-toolbar}/index.vue +0 -0
  82. /package/packages/components/{global-components/sh-upload → sh-upload}/index.vue +0 -0
  83. /package/packages/components/{global-components/sh-upload → sh-upload}/js/ajax.js +0 -0
  84. /package/packages/components/{global-components/sh-water-fall → sh-water-fall}/index.vue +0 -0
  85. /package/packages/components/{global-components/sh-water-mark → sh-water-mark}/index.vue +0 -0
  86. /package/packages/{components/other-components → other}/sh-cron-modal/components/cron-content.vue +0 -0
  87. /package/packages/{components/other-components → other}/sh-cron-modal/css/index.scss +0 -0
  88. /package/packages/{components/other-components → other}/sh-cron-modal/index.vue +0 -0
  89. /package/packages/{components/other-components → other}/sh-cron-modal/mixin/cron-emits.js +0 -0
  90. /package/packages/{components/other-components → other}/sh-cron-modal/mixin/cron-hooks.js +0 -0
  91. /package/packages/{components/other-components → other}/sh-cron-modal/mixin/cron-props.js +0 -0
  92. /package/packages/{components/other-components → other}/sh-cron-modal/tabs/cron-day-box.vue +0 -0
  93. /package/packages/{components/other-components → other}/sh-cron-modal/tabs/cron-hour-box.vue +0 -0
  94. /package/packages/{components/other-components → other}/sh-cron-modal/tabs/cron-minute-box.vue +0 -0
  95. /package/packages/{components/other-components → other}/sh-cron-modal/tabs/cron-month-box.vue +0 -0
  96. /package/packages/{components/other-components → other}/sh-cron-modal/tabs/cron-second-box.vue +0 -0
  97. /package/packages/{components/other-components → other}/sh-cron-modal/tabs/cron-year-box.vue +0 -0
  98. /package/packages/{components/other-components → other}/sh-cron-modal/utils/index.js +0 -0
  99. /package/packages/{components/other-components → other}/sh-markdown/index.vue +0 -0
  100. /package/packages/{components/other-components → other}/sh-markdown/tinymce/langs/zh-Hans.js +0 -0
  101. /package/packages/{components/other-components → other}/sh-markdown/tinymce/skins/content/default/content.css +0 -0
  102. /package/packages/{components/other-components → other}/sh-markdown/tinymce/skins/ui/oxide/content.css +0 -0
  103. /package/packages/{components/other-components → other}/sh-markdown/tinymce/skins/ui/oxide/content.inline.css +0 -0
  104. /package/packages/{components/other-components → other}/sh-markdown/tinymce/skins/ui/oxide/content.inline.min.css +0 -0
  105. /package/packages/{components/other-components → other}/sh-markdown/tinymce/skins/ui/oxide/content.min.css +0 -0
  106. /package/packages/{components/other-components → other}/sh-markdown/tinymce/skins/ui/oxide/content.mobile.css +0 -0
  107. /package/packages/{components/other-components → other}/sh-markdown/tinymce/skins/ui/oxide/content.mobile.min.css +0 -0
  108. /package/packages/{components/other-components → other}/sh-markdown/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff +0 -0
  109. /package/packages/{components/other-components → other}/sh-markdown/tinymce/skins/ui/oxide/skin.css +0 -0
  110. /package/packages/{components/other-components → other}/sh-markdown/tinymce/skins/ui/oxide/skin.min.css +0 -0
  111. /package/packages/{components/other-components → other}/sh-markdown/tinymce/skins/ui/oxide/skin.mobile.css +0 -0
  112. /package/packages/{components/other-components → other}/sh-markdown/tinymce/skins/ui/oxide/skin.mobile.min.css +0 -0
  113. /package/packages/{components/other-components → other}/sh-markdown/tinymce/skins/ui/oxide/skin.shadowdom.css +0 -0
  114. /package/packages/{components/other-components → other}/sh-markdown/tinymce/skins/ui/oxide/skin.shadowdom.min.css +0 -0
  115. /package/packages/{components/other-components → other}/sh-menu/menu-group-content.vue +0 -0
  116. /package/packages/{components/other-components → other}/sh-menu-card/index.vue +0 -0
  117. /package/packages/{components/other-components → other}/sh-menu-card/menu-box.vue +0 -0
  118. /package/packages/{components/other-components → other}/sh-preview/components/sh-word.vue +0 -0
  119. /package/packages/{components/other-components → other}/sh-preview/js/data-hook.js +0 -0
  120. /package/packages/{components/other-components → other}/sh-preview/js/data-props.js +0 -0
  121. /package/packages/{components/other-components → other}/sh-system-tip/index.vue +0 -0
@@ -1,63 +1,70 @@
1
- <template>
2
- <span class="vxe-render--inner" :class="{ 'form-render': rform, 'td-render': !rform }">
3
- <template v-if="redit || isEditAll">
4
- <span v-if="rprops.prefixText && rform" class="prefix">
5
- <vxe-button v-if="prefixButton" v-bind="psButtonConfig" @click="vxeInputPrefixClick">{{ rprops.prefixText }}</vxe-button>
6
- <span v-else @click="vxeInputPrefixClick">{{ rprops.prefixText }}</span>
7
- </span>
8
- <sh-tree v-model="renderValue" v-bind="rprops" :field="rkey" :value-data="rdata" :size="rsize" is-select @change="vxeTreeCallback"></sh-tree>
9
- <span v-if="rprops.suffixText && rform" class="suffix">
10
- <vxe-button v-if="suffixButton" v-bind="psButtonConfig" @click="vxeInputSuffixClick">{{ rprops.suffixText }}</vxe-button>
11
- <span v-else @click="vxeInputSuffixClick">{{ rprops.suffixText }}</span>
12
- </span>
13
- </template>
14
- <template v-else>
15
- <span v-html="renderText"></span>
16
- </template>
17
- </span>
18
- </template>
19
-
20
- <script>
21
- import { defineComponent, getCurrentInstance } from 'vue'
22
- import cellProps from '../mixin/cell-props'
23
- import cellHooks from '../mixin/cell-hooks'
24
- export default defineComponent({
25
- name: 'VxeRenderTree',
26
- props: cellProps,
27
- setup(props, context) {
28
- const { proxy } = getCurrentInstance()
29
- const { $vUtils } = proxy
30
- const useCell = cellHooks(props, context, proxy)
31
-
32
- // 输入框回调
33
- const vxeTreeCallback = (selectedKeys, selectedRows) => {
34
- let { valueKeys, multiple } = props.rprops
35
- if (!multiple) {
36
- selectedKeys = selectedKeys[0] || ''
37
- }
38
- if (valueKeys && selectedRows && selectedRows.length > 0) {
39
- let prefixKey = props.rkey.endsWith('Id') ? String(props.rkey).replace('Id', '') : props.rkey
40
- let valueks = Array.isArray(valueKeys) ? valueKeys : valueKeys.split(',')
41
- valueks.forEach(key => {
42
- let keySplits = key.split('=')
43
- let fromDefaultKey = String(keySplits[0]).replace(/@/gi, '').toLowerCase()
44
- let fromKey = keySplits[1] || String(keySplits[0]).replace(/@/gi, prefixKey)
45
- let fromvalue = null
46
- if (multiple) {
47
- fromvalue = selectedRows.map(item => $vUtils.get(item, fromKey) || $vUtils.get(item, fromDefaultKey))
48
- } else {
49
- fromvalue = $vUtils.get(selectedRows[0], fromKey) || $vUtils.get(selectedRows[0], fromDefaultKey)
50
- }
51
- $vUtils.set(props.rdata, fromKey, fromvalue)
52
- })
53
- }
54
- useCell.setRenderValue(selectedKeys, true)
55
- }
56
-
57
- return {
58
- ...useCell,
59
- vxeTreeCallback
60
- }
61
- }
62
- })
63
- </script>
1
+ <template>
2
+ <span class="vxe-render--inner" :class="{ 'form-render': rform, 'td-render': !rform }">
3
+ <template v-if="redit || isEditAll">
4
+ <span v-if="rprops.prefixText && rform" class="prefix">
5
+ <vxe-button v-if="prefixButton" v-bind="psButtonConfig" @click="vxeInputPrefixClick">{{ rprops.prefixText }}</vxe-button>
6
+ <span v-else @click="vxeInputPrefixClick">{{ rprops.prefixText }}</span>
7
+ </span>
8
+ <sh-tree v-model="renderValue" v-bind="rprops" :field="rkey" :value-data="rdata" :size="rsize" is-select @change="vxeTreeCallback"></sh-tree>
9
+ <span v-if="rprops.suffixText && rform" class="suffix">
10
+ <vxe-button v-if="suffixButton" v-bind="psButtonConfig" @click="vxeInputSuffixClick">{{ rprops.suffixText }}</vxe-button>
11
+ <span v-else @click="vxeInputSuffixClick">{{ rprops.suffixText }}</span>
12
+ </span>
13
+ </template>
14
+ <template v-else>
15
+ <span v-html="renderText"></span>
16
+ </template>
17
+ </span>
18
+ </template>
19
+
20
+ <script>
21
+ import { defineComponent, getCurrentInstance } from 'vue'
22
+ import cellProps from '../mixin/cell-props'
23
+ import cellHooks from '../mixin/cell-hooks'
24
+ export default defineComponent({
25
+ name: 'VxeRenderTree',
26
+ props: cellProps,
27
+ setup(props, context) {
28
+ const { proxy } = getCurrentInstance()
29
+ const { $vUtils } = proxy
30
+ const useCell = cellHooks(props, context, proxy)
31
+
32
+ // 输入框回调
33
+ const vxeTreeCallback = (selectedKeys, selectedRows) => {
34
+ let { valueKeys, multiple } = props.rprops
35
+ let rvalue = selectedKeys
36
+ if (!multiple) {
37
+ rvalue = selectedKeys[0] || ''
38
+ }
39
+ if (valueKeys && selectedRows && selectedRows.length > 0) {
40
+ let prefixKey = props.rkey
41
+ let endStrs = ['Id', '_id']
42
+ endStrs.forEach(end => {
43
+ if (props.rkey.endsWith(end)) {
44
+ prefixKey = props.rkey.replace(end, '')
45
+ }
46
+ })
47
+ let valueks = Array.isArray(valueKeys) ? valueKeys : valueKeys.split(',')
48
+ valueks.forEach(key => {
49
+ let keySplits = key.split('=')
50
+ let fromDefaultKey = String(keySplits[0]).replace(/@/gi, '').toLowerCase()
51
+ let fromKey = keySplits[1] || String(keySplits[0]).replace(/@/gi, prefixKey)
52
+ let fromvalue = null
53
+ if (multiple) {
54
+ fromvalue = selectedRows.map(item => $vUtils.get(item, fromKey) || $vUtils.get(item, fromDefaultKey))
55
+ } else {
56
+ fromvalue = $vUtils.get(selectedRows[0], fromKey) || $vUtils.get(selectedRows[0], fromDefaultKey)
57
+ }
58
+ $vUtils.set(props.rdata, fromKey, fromvalue)
59
+ })
60
+ }
61
+ useCell.setRenderValue(rvalue, true)
62
+ }
63
+
64
+ return {
65
+ ...useCell,
66
+ vxeTreeCallback
67
+ }
68
+ }
69
+ })
70
+ </script>
@@ -1,25 +1,26 @@
1
- <template>
2
- <div class="vxe-filter--wrap">
3
- <span class="vxe-filter--inner">
4
- <vxe-input v-model="renderValue.data" v-bind="rprops" :disabled="false" @input="vxeFilterCallback" />
5
- </span>
6
- </div>
7
- </template>
8
-
9
- <script>
10
- import { defineComponent, getCurrentInstance } from 'vue'
11
- import cellProps from '../mixin/cell-props'
12
- import filterHooks from '../mixin/filter-hooks'
13
- export default defineComponent({
14
- name: 'VxeFilterInput',
15
- props: cellProps,
16
- setup(props, context) {
17
- const { proxy } = getCurrentInstance()
18
- const useFilter = filterHooks(props, context, proxy)
19
-
20
- return {
21
- ...useFilter
22
- }
23
- }
24
- })
25
- </script>
1
+ <template>
2
+ <div class="vxe-filter--wrap">
3
+ <span class="vxe-filter--inner">
4
+ <vxe-input v-model="renderOption.data" v-bind="rprops" :disabled="false" @input="vxeFilterChange" />
5
+ </span>
6
+ </div>
7
+ </template>
8
+
9
+ <script>
10
+ import { defineComponent, getCurrentInstance, ref, watch } from 'vue'
11
+ import cellProps from '../mixin/cell-props'
12
+ import filterHooks from '../mixin/filter-hooks'
13
+ export default defineComponent({
14
+ name: 'VxeFilterInput',
15
+ props: cellProps,
16
+ setup(props, context) {
17
+ const { proxy } = getCurrentInstance()
18
+
19
+ const useFilter = filterHooks(props, context, proxy)
20
+
21
+ return {
22
+ ...useFilter
23
+ }
24
+ }
25
+ })
26
+ </script>
@@ -0,0 +1,26 @@
1
+ <template>
2
+ <div class="vxe-filter--wrap">
3
+ <span class="vxe-filter--inner">
4
+ <sh-date v-model="renderOption.data" v-bind="rprops" :disabled="false" @change="vxeFilterChange" />
5
+ </span>
6
+ </div>
7
+ </template>
8
+
9
+ <script>
10
+ import { defineComponent, getCurrentInstance, reactive, ref } from 'vue'
11
+ import cellProps from '../mixin/cell-props'
12
+ import filterHooks from '../mixin/filter-hooks'
13
+ export default defineComponent({
14
+ name: 'VxeFilterTime',
15
+ props: cellProps,
16
+ setup(props, context) {
17
+ const { proxy } = getCurrentInstance()
18
+
19
+ const useFilter = filterHooks(props, context, proxy)
20
+
21
+ return {
22
+ ...useFilter
23
+ }
24
+ }
25
+ })
26
+ </script>
@@ -29,6 +29,7 @@ import vxeFooterMoney from './footer/vxe-footer-money.vue'
29
29
 
30
30
  // 过滤器组件封装
31
31
  import vxeFilterInput from './filters/vxe-filter-input.vue'
32
+ import vxeFilterTime from './filters/vxe-filter-time.vue'
32
33
 
33
34
  // 渲染器通用默认配置
34
35
  let defaultPublicProps = {
@@ -54,6 +55,7 @@ let defaultProps = {
54
55
  $vHref: { disabled: true, target: '_blank' },
55
56
  $vUpload: { split: ',' },
56
57
  $vFilterInput: { placeholder: '请输入关键词' },
58
+ $vFilterTime: { range: true },
57
59
  $vTable: { size: 'mini' },
58
60
  $vCode: { placeholder: '请输入', border: true, height: '100px' },
59
61
  $vGlobalOption: { type: 'text' }
@@ -63,11 +65,6 @@ let defaultProps = {
63
65
  const getFixedProp = (renderOpts, params) => {
64
66
  let { name, props = {} } = renderOpts
65
67
  let { column, $table } = params
66
- let writeColumn = !!column
67
- if (name === '$vFilterInput') {
68
- writeColumn = false
69
- name = props.colRenderName
70
- }
71
68
  let rturnProps = Object.assign({}, defaultPublicProps, defaultProps[name], props)
72
69
  let transKeys = ['transfer', 'disabled', 'multiple', 'isLeaf', 'commafy', 'border', 'filterable', 'showWordCount', 'editable']
73
70
  transKeys.forEach(key => {
@@ -75,7 +72,7 @@ const getFixedProp = (renderOpts, params) => {
75
72
  rturnProps[key] = Boolean(+rturnProps[key])
76
73
  }
77
74
  })
78
- if (writeColumn) {
75
+ if (column) {
79
76
  column.rname = name
80
77
  column.rprops = rturnProps
81
78
  }
@@ -468,7 +465,7 @@ const filterRenders = {
468
465
  $vFilterInput: {
469
466
  renderFilter(renderOpts, params) {
470
467
  let props = getFixedProp(renderOpts, params)
471
- return [<vxeFilterInput rparams={params} rname={renderOpts.name} rprops={props.rprops} />]
468
+ return [<vxeFilterInput rparams={params} rname={renderOpts.name} rprops={props.rprops} rkey={props.rkey} />]
472
469
  },
473
470
  filterResetMethod({ options, column }) {
474
471
  options.forEach(option => {
@@ -481,6 +478,28 @@ const filterRenders = {
481
478
  let { rtext } = utils.formatRender(cellValue, property, row, rname, rprops, { $vUtils: utils })
482
479
  return String(rtext).toLowerCase().indexOf(data.toLowerCase()) > -1
483
480
  }
481
+ },
482
+ $vFilterTime: {
483
+ renderFilter(renderOpts, params) {
484
+ let props = getFixedProp(renderOpts, params)
485
+ return [<vxeFilterTime rparams={params} rname={renderOpts.name} rprops={props.rprops} rkey={props.rkey} />]
486
+ },
487
+ filterResetMethod({ options, column }) {
488
+ options.forEach(option => {
489
+ option.data = option.resetValue || []
490
+ })
491
+ },
492
+ filterMethod({ value, option, cellValue, row, column, $table }) {
493
+ const { data } = option
494
+ const { rname, rprops, property } = column
495
+ let { rtext } = utils.formatRender(cellValue, property, row, rname, rprops, { $vUtils: utils })
496
+ if (rprops.range || rprops.range === undefined) {
497
+ let startDiff = utils.getDateDiff(data[0], rtext)
498
+ let endDiff = utils.getDateDiff(rtext, data[1])
499
+ return startDiff.done && endDiff.done
500
+ }
501
+ return data === rtext
502
+ }
484
503
  }
485
504
  }
486
505
 
@@ -1,28 +1,46 @@
1
- import { computed, onBeforeMount, ref, watch } from 'vue'
1
+ import { computed, ref, watch } from 'vue'
2
2
 
3
- export default function (props, context, proxy) {
3
+ export default function (props, context, proxy, initRenderData) {
4
4
  const { $vUtils } = proxy
5
- const renderValue = ref({})
5
+
6
+ let renderOption = ref({})
6
7
 
7
8
  // 初始化
8
9
  const initData = () => {
9
10
  const { column, $panel } = props.rparams
10
11
  const option = column.filters[0]
11
- renderValue.value = option
12
- $panel.changeOption(null, Boolean(renderValue.value.data), option)
12
+ renderOption.value = option
13
+ $panel.changeOption(null, Boolean(renderOption.value.data), option)
14
+ }
15
+
16
+ // 过滤回调option
17
+ const vxeFilterChange = ({ value, $event }) => {
18
+ const { $panel } = props.rparams
19
+ $panel.changeOption(null, Boolean(renderOption.value.data), renderOption.value)
13
20
  }
14
- // 过滤回调
15
- const vxeFilterCallback = ({ value, $event }) => {
21
+
22
+ // 过滤确认
23
+ const vxeFilterConfirm = () => {
24
+ const { $panel } = props.rparams
25
+ $panel.confirmFilter()
26
+ }
27
+
28
+ // 过滤充值
29
+ const vxeFilterReset = () => {
16
30
  const { $panel } = props.rparams
17
- $panel.changeOption(null, Boolean(renderValue.value.data), renderValue.value)
31
+ $panel.resetFilter()
18
32
  }
19
33
 
20
- onBeforeMount(() => {
21
- initData()
22
- })
34
+ watch(
35
+ () => props.rkey,
36
+ () => (initRenderData ? initRenderData() : initData()),
37
+ { deep: true, immediate: true }
38
+ )
23
39
 
24
40
  return {
25
- renderValue,
26
- vxeFilterCallback
41
+ renderOption,
42
+ vxeFilterChange,
43
+ vxeFilterConfirm,
44
+ vxeFilterReset
27
45
  }
28
46
  }
@@ -1,278 +0,0 @@
1
- <template>
2
- <div class="sh-page-header" :style="styles" :class="classes">
3
- <sh-loading :loading="loading" />
4
- <div class="sh-page-header-heading">
5
- <div class="sh-page-header-heading-left">
6
- <div v-if="showback" class="sh-page-header-back">
7
- <div class="sh-page-header-back-button" @click="handleBack"><sh-icon :size="iconSize" type="ios-arrow-back" /></div>
8
- </div>
9
- <sh-icon v-if="icon" :type="icon" :size="iconSize" :color="iconColor"></sh-icon>
10
- <span v-if="title || slots.title" class="sh-page-header-heading-title" :style="{ textAlign: align, flex: align ? '1' : 'auto' }">
11
- <slot name="title">{{ title }}</slot>
12
- </span>
13
- <span v-if="subTitle || slots.subTitle" class="sh-page-header-heading-sub-title">
14
- <slot name="subTitle">{{ subTitle }}</slot>
15
- </span>
16
- <span v-if="slots.tags" class="sh-page-header-heading-tags"><slot name="tags"></slot></span>
17
- </div>
18
- <div class="sh-page-header-heading-right">
19
- <span v-if="slots.extra" class="sh-page-header-heading-extra"><slot name="extra"></slot></span>
20
- </div>
21
- </div>
22
- <div v-if="slots.default" class="sh-page-header-content" :class="{ 'no-padding': !title && !slots.title && !subTitle && !slots.subTitle && !slots.tags && !slots.extra }">
23
- <slot></slot>
24
- </div>
25
- <slot name="body"></slot>
26
- <div v-if="slots.footer" class="sh-page-header-footer"><slot name="footer"></slot></div>
27
- </div>
28
- </template>
29
-
30
- <script>
31
- import { defineComponent, computed } from 'vue'
32
- export default defineComponent({
33
- name: 'ShHeader',
34
- props: {
35
- size: {
36
- type: String,
37
- default: 'default'
38
- },
39
- color: {
40
- type: String,
41
- default: ''
42
- },
43
- theme: {
44
- type: String,
45
- default: ''
46
- },
47
- align: {
48
- type: String,
49
- default: 'left'
50
- },
51
- icon: {
52
- type: String
53
- },
54
- iconSize: {
55
- type: Number,
56
- default: 20
57
- },
58
- iconColor: {
59
- type: String
60
- },
61
- ghost: {
62
- type: Boolean
63
- },
64
- full: {
65
- type: Boolean
66
- },
67
- border: {
68
- type: Boolean
69
- },
70
- type: {
71
- type: String,
72
- default: '' // 'success', 'info', 'warning', 'error'
73
- },
74
- title: {
75
- type: String,
76
- default: ''
77
- },
78
- subTitle: {
79
- type: String,
80
- default: ''
81
- },
82
- loading: {
83
- type: Boolean
84
- },
85
- nowrap: {
86
- type: Boolean
87
- },
88
- showback: {
89
- type: Boolean
90
- }
91
- },
92
- emits: ['back'],
93
- setup(props, context) {
94
- const { emit, slots } = context
95
-
96
- const styles = computed(() => {
97
- return {
98
- backgroundColor: props.color
99
- }
100
- })
101
- const classes = computed(() => {
102
- return {
103
- 'sh-page-header-ghost': props.ghost,
104
- 'sh-page-header-full': props.full,
105
- 'sh-page-header-border': props.border,
106
- 'has-footer': slots.footer,
107
- [`sh-page-header-${props.theme}`]: props.theme,
108
- [`${props.type}`]: props.type,
109
- [`${props.size}`]: props.size,
110
- 'sh-page-header-nowrap': props.nowrap
111
- }
112
- })
113
-
114
- const handleBack = () => {
115
- emit('back')
116
- }
117
- return {
118
- styles,
119
- classes,
120
- slots,
121
- handleBack
122
- }
123
- }
124
- })
125
- </script>
126
-
127
- <style lang="scss" scoped>
128
- .sh-page-header {
129
- display: block;
130
- box-sizing: border-box;
131
- border-radius: 2px;
132
- line-height: 1.5;
133
- position: relative;
134
- padding: 0.5rem 1rem;
135
- background-color: var(--vxe-table-body-background-color);
136
- &.sh-page-header-full {
137
- padding-left: 0;
138
- padding-right: 0;
139
- }
140
- &.sh-page-header-dark {
141
- color: #fff;
142
- background: #333;
143
- }
144
- &.sh-page-header-primary {
145
- background-color: var(--vxe-primary-color);
146
- color: #fff;
147
- }
148
- &.sh-page-header-success {
149
- background-color: var(--vxe-success-color);
150
- color: #fff;
151
- }
152
- &.sh-page-header-warning {
153
- background-color: var(--vxe-warning-color);
154
- color: #fff;
155
- }
156
- &.sh-page-header-error {
157
- background-color: var(--vxe-danger-color);
158
- color: #fff;
159
- }
160
- &.sh-page-header-info {
161
- background-color: var(--vxe-info-color);
162
- color: #fff;
163
- }
164
- &.sh-page-header-ghost {
165
- background-color: transparent;
166
- }
167
- &.sh-page-header-border {
168
- border: 1px solid var(--vxe-table-border-color);
169
- }
170
- &.sh-page-header-nowrap {
171
- .sh-page-header-heading-title {
172
- white-space: nowrap;
173
- }
174
- }
175
- &.success {
176
- border-left: 4px solid var(--vxe-success-color);
177
- background-color: #edfff3;
178
- .sh-page-header-heading-title {
179
- color: var(--vxe-success-color);
180
- }
181
- }
182
- &.info {
183
- border-left: 4px solid var(--vxe-info-color);
184
- background-color: #f0faff;
185
- .sh-page-header-heading-title {
186
- color: var(--vxe-info-color);
187
- }
188
- }
189
- &.warning {
190
- border-left: 4px solid var(--vxe-warning-color);
191
- background-color: #fff9e6;
192
- .sh-page-header-heading-title {
193
- color: var(--vxe-warning-color);
194
- }
195
- }
196
- &.error {
197
- border-left: 4px solid var(--vxe-danger-color);
198
- background-color: #ffefe6;
199
- .sh-page-header-heading-title {
200
- color: var(--vxe-danger-color);
201
- }
202
- }
203
- &.large {
204
- .sh-page-header-heading-title {
205
- font-size: 1.4285rem;
206
- }
207
- }
208
- &.default {
209
- .sh-page-header-heading-title {
210
- font-size: 1.2857rem;
211
- }
212
- }
213
- &.small {
214
- .sh-page-header-heading-title {
215
- font-size: 1rem;
216
- }
217
- }
218
- &.mini {
219
- .sh-page-header-heading-title {
220
- font-size: 0.8571rem;
221
- }
222
- }
223
- .sh-page-header-heading {
224
- width: 100%;
225
- display: flex;
226
- justify-content: space-between;
227
- align-items: center;
228
- .sh-page-header-heading-left {
229
- flex: 1;
230
- display: inline-flex;
231
- justify-content: flex-start;
232
- align-items: center;
233
- .sh-page-header-back {
234
- font-size: 1.2rem;
235
- line-height: 1;
236
- margin-right: 0.5rem;
237
- .sh-page-header-back-button {
238
- color: inherit;
239
- text-decoration: none;
240
- outline: none;
241
- transition: color 0.3s;
242
- cursor: pointer;
243
- &:hover {
244
- opacity: 0.85;
245
- }
246
- }
247
- }
248
- .sh-page-header-heading-title {
249
- display: block;
250
- margin-right: 0.5rem;
251
- font-weight: 600;
252
- }
253
- i + .sh-page-header-heading-title {
254
- margin-left: 0.5rem;
255
- }
256
- .sh-page-header-heading-sub-title {
257
- margin-right: 0.5rem;
258
- color: rgba(0, 0, 0, 0.45);
259
- }
260
- .sh-page-header-heading-tags {
261
- }
262
- }
263
- .sh-page-header-heading-right {
264
- .sh-page-header-heading-extra {
265
- }
266
- }
267
- }
268
- .sh-page-header-content {
269
- margin-top: 10px;
270
- &.no-padding {
271
- padding-top: 0;
272
- }
273
- }
274
- .sh-page-header-footer {
275
- margin-top: 10px;
276
- }
277
- }
278
- </style>