sh-view 2.6.2 → 2.6.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.
Files changed (38) hide show
  1. package/package.json +1 -1
  2. package/packages/components/global-components/sh-form/form.vue +110 -108
  3. package/packages/components/global-components/sh-form/js/useForm.js +3 -0
  4. package/packages/components/global-components/sh-form/query.vue +70 -68
  5. package/packages/components/global-components/sh-table/components/sh-column.vue +69 -69
  6. package/packages/components/global-components/sh-table/grid.vue +160 -159
  7. package/packages/components/global-components/sh-table/table.vue +218 -217
  8. package/packages/components/other-components/sh-cron-modal/mixin/cron-hooks.js +179 -177
  9. package/packages/components/other-components/sh-cron-modal/tabs/cron-day-box.vue +101 -99
  10. package/packages/components/other-components/sh-cron-modal/tabs/cron-hour-box.vue +68 -66
  11. package/packages/components/other-components/sh-cron-modal/tabs/cron-minute-box.vue +68 -66
  12. package/packages/components/other-components/sh-cron-modal/tabs/cron-month-box.vue +68 -66
  13. package/packages/components/other-components/sh-cron-modal/tabs/cron-second-box.vue +68 -66
  14. package/packages/components/other-components/sh-cron-modal/tabs/cron-week-box.vue +126 -125
  15. package/packages/components/other-components/sh-cron-modal/tabs/cron-year-box.vue +59 -57
  16. package/packages/components/other-components/sh-preview/components/sh-excel.vue +929 -927
  17. package/packages/components/other-components/sh-preview/components/sh-word.vue +78 -76
  18. package/packages/vxeTable/render/cell/vxe-render-checkbox.vue +28 -26
  19. package/packages/vxeTable/render/cell/vxe-render-checkgroup.vue +43 -42
  20. package/packages/vxeTable/render/cell/vxe-render-code.vue +36 -34
  21. package/packages/vxeTable/render/cell/vxe-render-goption.vue +104 -103
  22. package/packages/vxeTable/render/cell/vxe-render-href.vue +21 -19
  23. package/packages/vxeTable/render/cell/vxe-render-input.vue +53 -52
  24. package/packages/vxeTable/render/cell/vxe-render-money.vue +33 -31
  25. package/packages/vxeTable/render/cell/vxe-render-progress.vue +28 -26
  26. package/packages/vxeTable/render/cell/vxe-render-radio.vue +28 -26
  27. package/packages/vxeTable/render/cell/vxe-render-radiogroup.vue +43 -42
  28. package/packages/vxeTable/render/cell/vxe-render-select.vue +52 -51
  29. package/packages/vxeTable/render/cell/vxe-render-switch.vue +28 -26
  30. package/packages/vxeTable/render/cell/vxe-render-table.vue +51 -50
  31. package/packages/vxeTable/render/cell/vxe-render-textarea.vue +28 -26
  32. package/packages/vxeTable/render/cell/vxe-render-time.vue +44 -41
  33. package/packages/vxeTable/render/cell/vxe-render-tree.vue +63 -60
  34. package/packages/vxeTable/render/cell/vxe-render-upload.vue +28 -26
  35. package/packages/vxeTable/render/filters/vxe-filter-input.vue +25 -23
  36. package/packages/vxeTable/render/footer/vxe-footer-input.vue +23 -21
  37. package/packages/vxeTable/render/footer/vxe-footer-money.vue +30 -28
  38. package/packages/vxeTable/render/header/vxe-header-money.vue +31 -29
@@ -1,159 +1,160 @@
1
- <template>
2
- <div class="sh-vxe-table" :class="{ 'sh-table-ghost': tableGlobalConfig.ghost }" :style="{ height: wrapHeight }">
3
- <vxe-grid
4
- :id="id"
5
- ref="tableRef"
6
- :key="renderKey"
7
- :class="{ 'is--hasfooter': showFooter }"
8
- v-bind="tableBindConfig"
9
- :columns="tableColumns"
10
- @current-change="onCurrentChange"
11
- @radio-change="onRadioChange"
12
- @checkbox-change="onSelectionChange"
13
- @checkbox-all="onSelectionChange"
14
- @checkbox-range-end="onSelectionChange"
15
- @cell-click="onCellClick"
16
- @cell-dblclick="onCellDblClick"
17
- @header-cell-click="onHeaderCellClick"
18
- @sort-change="onSortChange"
19
- @filter-change="onFilterChange"
20
- @toggle-row-expand="onToggleRowExpand"
21
- @toggle-tree-expand="onToggleTreeExpand"
22
- @edit-closed="onEditClosed"
23
- @edit-actived="onEditActived"
24
- @scroll="onScroll"
25
- @custom="onCustom"
26
- @page-change="onPageChange"
27
- @toolbar-button-click="onToolbarButtonClick"
28
- @toolbar-tool-click="onToolbarToolClick"
29
- @option-click="handleGoptionClick">
30
- <template #form>
31
- <slot name="head"></slot>
32
- <slot name="form">
33
- <sh-query v-if="tableGlobalConfig.search" v-bind="tableQueryConfig" @submit="onFormSubmit" @reset="onFormReset" @collapsed="onFormCollapsed" @edit-closed="onFormEditClosed">
34
- <template #footLeft><slot name="formLeft"></slot></template>
35
- <template #footRight><slot name="formRight"></slot></template>
36
- </sh-query>
37
- </slot>
38
- </template>
39
- <template #toolbar>
40
- <div class="sh-table-toolbar-wrap">
41
- <div class="sh-table-toolbar-left">
42
- <div v-if="tableGlobalConfig.title" class="sh-table-toolbar-item">
43
- <h3 class="tableName">{{ tableGlobalConfig.tableName }}</h3>
44
- </div>
45
- <!--ps:全表搜索不支持反转-->
46
- <div v-if="tableGlobalConfig.globalFilter" class="sh-table-toolbar-item">
47
- <vxe-input v-model="tableFilterText" v-bind="tableFilterConfig" @blur="handleTableFilter" @clear="handleTableFilter" @search-click="handleTableFilter" />
48
- <span v-if="tableFilterData">
49
- 共搜索到 <strong>{{ tableFilterData.length }}</strong> 条数据
50
- </span>
51
- </div>
52
- <div v-if="slots.toolbarLeft" class="sh-table-toolbar-item">
53
- <slot name="toolbarLeft"></slot>
54
- </div>
55
- </div>
56
- <div class="sh-table-toolbar-right">
57
- <div v-if="slots.toolbarRight" class="sh-table-toolbar-item">
58
- <slot name="toolbarRight"></slot>
59
- </div>
60
- <div v-if="tableGlobalConfig.zoom" class="sh-table-toolbar-item">
61
- <vxe-button v-if="!tableIsFullscreen" v-ripple :size="size" icon="vxe-icon-zoom-out" @click="handleTableZoomBtn(true)">全屏</vxe-button>
62
- <vxe-button v-else v-ripple :size="size" icon="vxe-icon-zoom-in" @click="handleTableZoomBtn(false)">退出全屏</vxe-button>
63
- </div>
64
- <template v-for="(tool, toolIndex) in tableTools" :key="toolIndex">
65
- <div class="sh-table-toolbar-item">
66
- <vxe-button v-ripple :size="size" v-bind="tool" @click="handleTableTool(tool)"></vxe-button>
67
- </div>
68
- </template>
69
- </div>
70
- </div>
71
- </template>
72
- <template #pagerLeft>
73
- <div v-if="selectionRows.length" class="sh-table-footer-info">
74
- 已选择 <strong>{{ selectionRows.length }}</strong> 项
75
- </div>
76
- <slot name="pagerLeft"></slot>
77
- </template>
78
- <template #pagerRight>
79
- <slot name="pagerRight"></slot>
80
- </template>
81
- <template #empty>
82
- <sh-empty :icon="emptyIcon" :content="emptyText"></sh-empty>
83
- </template>
84
- <template v-for="slot in tableSlots" #[slot]="scope">
85
- <!-- 以之前的名字命名插槽,同时把数据原样绑定 -->
86
- <slot :name="slot" v-bind="scope"></slot>
87
- </template>
88
- </vxe-grid>
89
- <!--导入弹窗-->
90
- <importModal v-if="importBindConfig.modalConfig.modelValue" v-bind="importBindConfig" @confirm="setImportData"></importModal>
91
- </div>
92
- </template>
93
-
94
- <script>
95
- import { defineComponent, getCurrentInstance, ref } from 'vue'
96
- import './css/index.scss'
97
-
98
- import props from './js/props'
99
- import importModal from './components/importModal.vue'
100
- import useTable from './js/useTable'
101
- export default defineComponent({
102
- name: 'ShGrid',
103
- components: {
104
- importModal
105
- },
106
- props: {
107
- ...props
108
- },
109
- emits: [
110
- 'current-change',
111
- 'radio-change',
112
- 'selection-change',
113
- 'cell-click',
114
- 'cell-dblclick',
115
- 'header-cell-click',
116
- 'sort-change',
117
- 'filter-change',
118
- 'toggle-row-expand',
119
- 'toggle-tree-expand',
120
- 'edit-closed',
121
- 'edit-actived',
122
- 'scroll',
123
- 'custom',
124
- 'page-change',
125
- 'toolbar-button-click',
126
- 'toolbar-tool-click',
127
-
128
- 'form-submit',
129
- 'form-reset',
130
- 'form-edit-closed',
131
- 'form-submit-invalid',
132
- 'import-confirm',
133
- 'globaloption',
134
- 'toolbaroption'
135
- ],
136
- setup(props, context) {
137
- const { proxy } = getCurrentInstance()
138
-
139
- const useTableHooks = useTable(props, context, proxy, true)
140
-
141
- const tableIsFullscreen = ref(false) // 表格是否全屏显示状态
142
-
143
- // 表格切换全屏缩放按钮
144
- const handleTableZoomBtn = val => {
145
- tableIsFullscreen.value = val
146
- if (val) {
147
- useTableHooks.tableRef.value.zoom()
148
- } else {
149
- useTableHooks.tableRef.value.revert()
150
- }
151
- }
152
-
153
- return Object.assign({}, useTableHooks, {
154
- tableIsFullscreen,
155
- handleTableZoomBtn
156
- })
157
- }
158
- })
159
- </script>
1
+ <template>
2
+ <div class="sh-vxe-table" :class="{ 'sh-table-ghost': tableGlobalConfig.ghost }" :style="{ height: wrapHeight }">
3
+ <vxe-grid
4
+ :id="id"
5
+ ref="tableRef"
6
+ :key="renderKey"
7
+ :class="{ 'is--hasfooter': showFooter }"
8
+ v-bind="tableBindConfig"
9
+ :columns="tableColumns"
10
+ @current-change="onCurrentChange"
11
+ @radio-change="onRadioChange"
12
+ @checkbox-change="onSelectionChange"
13
+ @checkbox-all="onSelectionChange"
14
+ @checkbox-range-end="onSelectionChange"
15
+ @cell-click="onCellClick"
16
+ @cell-dblclick="onCellDblClick"
17
+ @header-cell-click="onHeaderCellClick"
18
+ @sort-change="onSortChange"
19
+ @filter-change="onFilterChange"
20
+ @toggle-row-expand="onToggleRowExpand"
21
+ @toggle-tree-expand="onToggleTreeExpand"
22
+ @edit-closed="onEditClosed"
23
+ @edit-actived="onEditActived"
24
+ @scroll="onScroll"
25
+ @custom="onCustom"
26
+ @page-change="onPageChange"
27
+ @toolbar-button-click="onToolbarButtonClick"
28
+ @toolbar-tool-click="onToolbarToolClick"
29
+ @option-click="handleGoptionClick">
30
+ <template #form>
31
+ <slot name="head"></slot>
32
+ <slot name="form">
33
+ <sh-query v-if="tableGlobalConfig.search" v-bind="tableQueryConfig" @submit="onFormSubmit" @reset="onFormReset" @collapsed="onFormCollapsed" @edit-closed="onFormEditClosed">
34
+ <template #footLeft><slot name="formLeft"></slot></template>
35
+ <template #footRight><slot name="formRight"></slot></template>
36
+ </sh-query>
37
+ </slot>
38
+ </template>
39
+ <template #toolbar>
40
+ <div class="sh-table-toolbar-wrap">
41
+ <div class="sh-table-toolbar-left">
42
+ <div v-if="tableGlobalConfig.title" class="sh-table-toolbar-item">
43
+ <h3 class="tableName">{{ tableGlobalConfig.tableName }}</h3>
44
+ </div>
45
+ <!--ps:全表搜索不支持反转-->
46
+ <div v-if="tableGlobalConfig.globalFilter" class="sh-table-toolbar-item">
47
+ <vxe-input v-model="tableFilterText" v-bind="tableFilterConfig" @blur="handleTableFilter" @clear="handleTableFilter" @search-click="handleTableFilter" />
48
+ <span v-if="tableFilterData">
49
+ 共搜索到 <strong>{{ tableFilterData.length }}</strong> 条数据
50
+ </span>
51
+ </div>
52
+ <div v-if="slots.toolbarLeft" class="sh-table-toolbar-item">
53
+ <slot name="toolbarLeft"></slot>
54
+ </div>
55
+ </div>
56
+ <div class="sh-table-toolbar-right">
57
+ <div v-if="slots.toolbarRight" class="sh-table-toolbar-item">
58
+ <slot name="toolbarRight"></slot>
59
+ </div>
60
+ <div v-if="tableGlobalConfig.zoom" class="sh-table-toolbar-item">
61
+ <vxe-button v-if="!tableIsFullscreen" v-ripple :size="size" icon="vxe-icon-zoom-out" @click="handleTableZoomBtn(true)">全屏</vxe-button>
62
+ <vxe-button v-else v-ripple :size="size" icon="vxe-icon-zoom-in" @click="handleTableZoomBtn(false)">退出全屏</vxe-button>
63
+ </div>
64
+ <template v-for="(tool, toolIndex) in tableTools" :key="toolIndex">
65
+ <div class="sh-table-toolbar-item">
66
+ <vxe-button v-ripple :size="size" v-bind="tool" @click="handleTableTool(tool)"></vxe-button>
67
+ </div>
68
+ </template>
69
+ </div>
70
+ </div>
71
+ </template>
72
+ <template #pagerLeft>
73
+ <div v-if="selectionRows.length" class="sh-table-footer-info">
74
+ 已选择 <strong>{{ selectionRows.length }}</strong> 项
75
+ </div>
76
+ <slot name="pagerLeft"></slot>
77
+ </template>
78
+ <template #pagerRight>
79
+ <slot name="pagerRight"></slot>
80
+ </template>
81
+ <template #empty>
82
+ <sh-empty :icon="emptyIcon" :content="emptyText"></sh-empty>
83
+ </template>
84
+ <template v-for="slot in tableSlots" #[slot]="scope">
85
+ <!-- 以之前的名字命名插槽,同时把数据原样绑定 -->
86
+ <slot :name="slot" v-bind="scope"></slot>
87
+ </template>
88
+ </vxe-grid>
89
+ <!--导入弹窗-->
90
+ <importModal v-if="importBindConfig.modalConfig.modelValue" v-bind="importBindConfig" @confirm="setImportData"></importModal>
91
+ </div>
92
+ </template>
93
+
94
+ <script>
95
+ import { defineComponent, getCurrentInstance, ref } from 'vue'
96
+ import './css/index.scss'
97
+
98
+ import props from './js/props'
99
+ import importModal from './components/importModal.vue'
100
+ import useTable from './js/useTable'
101
+ export default defineComponent({
102
+ name: 'ShGrid',
103
+ components: {
104
+ importModal
105
+ },
106
+ props: {
107
+ ...props
108
+ },
109
+ emits: [
110
+ 'current-change',
111
+ 'radio-change',
112
+ 'selection-change',
113
+ 'cell-click',
114
+ 'cell-dblclick',
115
+ 'header-cell-click',
116
+ 'sort-change',
117
+ 'filter-change',
118
+ 'toggle-row-expand',
119
+ 'toggle-tree-expand',
120
+ 'edit-closed',
121
+ 'edit-actived',
122
+ 'scroll',
123
+ 'custom',
124
+ 'page-change',
125
+ 'toolbar-button-click',
126
+ 'toolbar-tool-click',
127
+
128
+ 'form-submit',
129
+ 'form-reset',
130
+ 'form-edit-closed',
131
+ 'form-submit-invalid',
132
+ 'import-confirm',
133
+ 'globaloption',
134
+ 'toolbaroption'
135
+ ],
136
+ setup(props, context) {
137
+ const { proxy } = getCurrentInstance()
138
+
139
+ const useTableHooks = useTable(props, context, proxy, true)
140
+
141
+ const tableIsFullscreen = ref(false) // 表格是否全屏显示状态
142
+
143
+ // 表格切换全屏缩放按钮
144
+ const handleTableZoomBtn = val => {
145
+ tableIsFullscreen.value = val
146
+ if (val) {
147
+ useTableHooks.tableRef.value.zoom()
148
+ } else {
149
+ useTableHooks.tableRef.value.revert()
150
+ }
151
+ }
152
+
153
+ return {
154
+ ...useTableHooks,
155
+ tableIsFullscreen,
156
+ handleTableZoomBtn
157
+ }
158
+ }
159
+ })
160
+ </script>