sh-view 1.7.5 → 2.0.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 (206) hide show
  1. package/.eslintrc.js +20 -21
  2. package/package.json +10 -10
  3. package/packages/assets/css/animated.scss +167 -2
  4. package/packages/assets/css/loader.scss +42 -42
  5. package/packages/assets/css/main.scss +41 -21
  6. package/packages/assets/css/theme.scss +83 -44
  7. package/packages/components/global-components/sh-alert/index.vue +173 -0
  8. package/packages/components/global-components/sh-badge/index.vue +227 -0
  9. package/packages/components/global-components/sh-card/index.vue +140 -122
  10. package/packages/components/global-components/sh-code-editor/index.vue +260 -260
  11. package/packages/components/global-components/sh-col/css/index.scss +76 -0
  12. package/packages/components/global-components/sh-col/index.vue +83 -0
  13. package/packages/components/global-components/sh-corner/index.vue +1 -9
  14. package/packages/components/global-components/sh-count-to/index.vue +102 -46
  15. package/packages/components/global-components/sh-date/index.vue +40 -0
  16. package/packages/components/global-components/sh-drawer/index.vue +518 -0
  17. package/packages/components/global-components/sh-drawer/scrollbar.js +76 -0
  18. package/packages/components/global-components/sh-empty/index.vue +43 -43
  19. package/packages/components/global-components/{sh-vxe-form → sh-form}/css/index.scss +6 -6
  20. package/packages/components/global-components/{sh-vxe-form → sh-form}/index.vue +114 -115
  21. package/packages/components/global-components/sh-form/js/methods.js +146 -0
  22. package/packages/components/global-components/{sh-vxe-form → sh-form}/mixin/defaultData.js +32 -33
  23. package/packages/components/global-components/sh-header/index.vue +293 -269
  24. package/packages/components/global-components/sh-icon/css/default/fonts/ionicons.svg +870 -0
  25. package/packages/components/global-components/sh-icon/css/default/fonts/ionicons.ttf +0 -0
  26. package/packages/components/global-components/sh-icon/css/default/fonts/ionicons.woff +0 -0
  27. package/packages/components/global-components/sh-icon/css/default/fonts/ionicons.woff2 +0 -0
  28. package/packages/components/global-components/sh-icon/css/default/icons.scss +2583 -0
  29. package/packages/components/global-components/sh-icon/css/default/index.scss +27 -0
  30. package/packages/components/global-components/sh-icon/css/font/fonts/iconfont.js +1 -0
  31. package/packages/components/global-components/sh-icon/css/font/fonts/iconfont.json +247 -0
  32. package/packages/components/global-components/sh-icon/css/font/fonts/iconfont.ttf +0 -0
  33. package/packages/components/global-components/sh-icon/css/font/fonts/iconfont.woff +0 -0
  34. package/packages/components/global-components/sh-icon/css/font/fonts/iconfont.woff2 +0 -0
  35. package/packages/components/global-components/sh-icon/css/font/icons.scss +135 -0
  36. package/packages/components/global-components/sh-icon/css/font/index.scss +16 -0
  37. package/packages/components/global-components/sh-icon/icon-default.vue +32 -0
  38. package/packages/components/global-components/sh-icon/{icons.vue → icon-font.vue} +32 -32
  39. package/packages/components/global-components/sh-icon/index.vue +28 -27
  40. package/packages/components/global-components/sh-image/index.vue +123 -0
  41. package/packages/components/global-components/sh-list/index.vue +141 -0
  42. package/packages/components/global-components/sh-loading/index.vue +49 -42
  43. package/packages/components/global-components/{sh-vxe-modal → sh-modal}/index.vue +209 -209
  44. package/packages/components/global-components/sh-noticebar/index.vue +201 -201
  45. package/packages/components/global-components/sh-poptip/index.vue +479 -0
  46. package/packages/components/global-components/sh-poptip/popper.js +115 -0
  47. package/packages/components/global-components/sh-progress/index.vue +290 -0
  48. package/packages/components/global-components/sh-pull-refresh/index.vue +290 -290
  49. package/packages/components/global-components/{sh-vxe-query → sh-query}/index.vue +317 -286
  50. package/packages/components/global-components/sh-result/index.vue +110 -88
  51. package/packages/components/global-components/sh-row/css/index.scss +21 -0
  52. package/packages/components/global-components/sh-row/index.vue +63 -0
  53. package/packages/components/global-components/sh-split/components/trigger.vue +33 -0
  54. package/packages/components/global-components/sh-split/index.vue +334 -0
  55. package/packages/components/global-components/sh-table/components/importModal.vue +351 -0
  56. package/packages/components/global-components/{sh-vxe-table → sh-table}/css/index.scss +4 -22
  57. package/packages/components/global-components/{sh-vxe-table → sh-table}/index.vue +329 -351
  58. package/packages/components/global-components/{sh-vxe-table → sh-table}/js/methods.js +91 -153
  59. package/packages/components/global-components/{sh-vxe-table → sh-table}/js/props.js +304 -313
  60. package/packages/components/global-components/{sh-vxe-table → sh-table}/mixin/defaultData.js +94 -116
  61. package/packages/components/global-components/sh-tabs/index.vue +315 -0
  62. package/packages/components/global-components/sh-tag/index.vue +163 -0
  63. package/packages/components/global-components/{sh-vxe-toolbar → sh-toolbar}/index.vue +177 -172
  64. package/packages/components/global-components/sh-tree/components/table-tree.vue +280 -0
  65. package/packages/components/global-components/sh-tree/css/index.scss +54 -0
  66. package/packages/components/global-components/sh-tree/index.vue +195 -0
  67. package/packages/components/global-components/sh-tree/mixin/treeProps.js +124 -0
  68. package/packages/components/global-components/sh-upload/index.vue +278 -418
  69. package/packages/components/global-components/sh-upload/js/ajax.js +80 -0
  70. package/packages/components/global-components/sh-upload/js/mixin.js +257 -0
  71. package/packages/components/global-components/sh-water-fall/index.vue +87 -87
  72. package/packages/components/index.js +85 -59
  73. package/packages/components/other-components/sh-cron-modal/css/index.scss +2 -2
  74. package/packages/components/other-components/sh-menu-card/index.vue +224 -224
  75. package/packages/css/index.js +4 -6
  76. package/packages/directive/index.js +19 -19
  77. package/packages/directive/module/click-out.js +14 -0
  78. package/packages/directive/module/draggable.js +42 -42
  79. package/packages/directive/module/line-clamp.js +22 -0
  80. package/packages/directive/module/prevent-click.js +18 -0
  81. package/packages/directive/module/resize.js +19 -0
  82. package/packages/directive/module/ripple.js +166 -0
  83. package/packages/index.js +39 -40
  84. package/packages/utils/transfer-queue.js +12 -0
  85. package/packages/vxeTable/css/index.scss +12 -98
  86. package/packages/vxeTable/css/variable.scss +7 -265
  87. package/packages/vxeTable/index.js +184 -184
  88. package/packages/vxeTable/plugins/export.js +450 -0
  89. package/packages/vxeTable/render/cell/vxe-render-checkgroup.vue +36 -36
  90. package/packages/vxeTable/render/cell/vxe-render-goption.vue +94 -93
  91. package/packages/vxeTable/render/cell/vxe-render-img.vue +21 -28
  92. package/packages/vxeTable/render/cell/vxe-render-input.vue +51 -51
  93. package/packages/vxeTable/render/cell/vxe-render-progress.vue +19 -19
  94. package/packages/vxeTable/render/cell/vxe-render-radiogroup.vue +36 -36
  95. package/packages/vxeTable/render/cell/vxe-render-select.vue +36 -36
  96. package/packages/vxeTable/render/cell/vxe-render-tree.vue +59 -59
  97. package/packages/vxeTable/render/globalRenders.jsx +498 -491
  98. package/packages/assets/icons/demo.css +0 -539
  99. package/packages/assets/icons/iconfont.css +0 -415
  100. package/packages/assets/icons/iconfont.js +0 -1
  101. package/packages/assets/icons/iconfont.json +0 -709
  102. package/packages/assets/icons/iconfont.ttf +0 -0
  103. package/packages/assets/icons/iconfont.woff +0 -0
  104. package/packages/assets/icons/iconfont.woff2 +0 -0
  105. package/packages/assets/img/image-error.png +0 -0
  106. package/packages/assets/img/square-image.png +0 -0
  107. package/packages/components/global-components/sh-iv-form/components/iv-group-item.vue +0 -57
  108. package/packages/components/global-components/sh-iv-form/components/iv-single-item.vue +0 -76
  109. package/packages/components/global-components/sh-iv-form/index.vue +0 -255
  110. package/packages/components/global-components/sh-layout/index.vue +0 -142
  111. package/packages/components/global-components/sh-upload/components/u-img.vue +0 -63
  112. package/packages/components/global-components/sh-upload/components/u-list.vue +0 -100
  113. package/packages/components/global-components/sh-vxe-form/js/methods.js +0 -170
  114. package/packages/components/global-components/sh-vxe-list/index.vue +0 -129
  115. package/packages/components/global-components/sh-vxe-table/components/importModal.vue +0 -377
  116. package/packages/components/global-components/sh-vxe-tree/components/table-tree.vue +0 -233
  117. package/packages/components/global-components/sh-vxe-tree/css/index.scss +0 -20
  118. package/packages/components/global-components/sh-vxe-tree/index.vue +0 -85
  119. package/packages/components/global-components/sh-vxe-tree/js/props.js +0 -120
  120. package/packages/components/global-components/sh-vxe-tree/js/treeMethods.js +0 -169
  121. package/packages/components/global-components/sh-vxe-tree/mixin/defaultData.js +0 -54
  122. package/packages/components/global-components/sh-vxe-tree/vxe-direct-tree.vue +0 -203
  123. package/packages/components/global-components/sh-vxe-tree/vxe-select-tree.vue +0 -291
  124. package/packages/components/other-components/sh-markdown/tinymce/langs/ar.js +0 -7
  125. package/packages/components/other-components/sh-markdown/tinymce/langs/az.js +0 -7
  126. package/packages/components/other-components/sh-markdown/tinymce/langs/bg_BG.js +0 -7
  127. package/packages/components/other-components/sh-markdown/tinymce/langs/bn_BD.js +0 -7
  128. package/packages/components/other-components/sh-markdown/tinymce/langs/ca.js +0 -7
  129. package/packages/components/other-components/sh-markdown/tinymce/langs/cs.js +0 -7
  130. package/packages/components/other-components/sh-markdown/tinymce/langs/cy.js +0 -7
  131. package/packages/components/other-components/sh-markdown/tinymce/langs/da.js +0 -7
  132. package/packages/components/other-components/sh-markdown/tinymce/langs/de.js +0 -7
  133. package/packages/components/other-components/sh-markdown/tinymce/langs/dv.js +0 -7
  134. package/packages/components/other-components/sh-markdown/tinymce/langs/el.js +0 -7
  135. package/packages/components/other-components/sh-markdown/tinymce/langs/eo.js +0 -7
  136. package/packages/components/other-components/sh-markdown/tinymce/langs/es.js +0 -7
  137. package/packages/components/other-components/sh-markdown/tinymce/langs/es_MX.js +0 -7
  138. package/packages/components/other-components/sh-markdown/tinymce/langs/et.js +0 -7
  139. package/packages/components/other-components/sh-markdown/tinymce/langs/eu.js +0 -7
  140. package/packages/components/other-components/sh-markdown/tinymce/langs/fa.js +0 -7
  141. package/packages/components/other-components/sh-markdown/tinymce/langs/fi.js +0 -7
  142. package/packages/components/other-components/sh-markdown/tinymce/langs/fr_FR.js +0 -7
  143. package/packages/components/other-components/sh-markdown/tinymce/langs/ga.js +0 -7
  144. package/packages/components/other-components/sh-markdown/tinymce/langs/gl.js +0 -7
  145. package/packages/components/other-components/sh-markdown/tinymce/langs/he_IL.js +0 -7
  146. package/packages/components/other-components/sh-markdown/tinymce/langs/hi.js +0 -7
  147. package/packages/components/other-components/sh-markdown/tinymce/langs/hr.js +0 -7
  148. package/packages/components/other-components/sh-markdown/tinymce/langs/hu_HU.js +0 -7
  149. package/packages/components/other-components/sh-markdown/tinymce/langs/hy.js +0 -7
  150. package/packages/components/other-components/sh-markdown/tinymce/langs/id.js +0 -7
  151. package/packages/components/other-components/sh-markdown/tinymce/langs/is_IS.js +0 -7
  152. package/packages/components/other-components/sh-markdown/tinymce/langs/it.js +0 -7
  153. package/packages/components/other-components/sh-markdown/tinymce/langs/ja.js +0 -7
  154. package/packages/components/other-components/sh-markdown/tinymce/langs/kab.js +0 -7
  155. package/packages/components/other-components/sh-markdown/tinymce/langs/kk.js +0 -7
  156. package/packages/components/other-components/sh-markdown/tinymce/langs/ko_KR.js +0 -7
  157. package/packages/components/other-components/sh-markdown/tinymce/langs/ku.js +0 -7
  158. package/packages/components/other-components/sh-markdown/tinymce/langs/lt.js +0 -7
  159. package/packages/components/other-components/sh-markdown/tinymce/langs/lv.js +0 -7
  160. package/packages/components/other-components/sh-markdown/tinymce/langs/nb_NO.js +0 -7
  161. package/packages/components/other-components/sh-markdown/tinymce/langs/ne.js +0 -7
  162. package/packages/components/other-components/sh-markdown/tinymce/langs/nl.js +0 -7
  163. package/packages/components/other-components/sh-markdown/tinymce/langs/nl_BE.js +0 -7
  164. package/packages/components/other-components/sh-markdown/tinymce/langs/oc.js +0 -7
  165. package/packages/components/other-components/sh-markdown/tinymce/langs/pl.js +0 -7
  166. package/packages/components/other-components/sh-markdown/tinymce/langs/pt_BR.js +0 -7
  167. package/packages/components/other-components/sh-markdown/tinymce/langs/ro.js +0 -7
  168. package/packages/components/other-components/sh-markdown/tinymce/langs/ru.js +0 -7
  169. package/packages/components/other-components/sh-markdown/tinymce/langs/sk.js +0 -7
  170. package/packages/components/other-components/sh-markdown/tinymce/langs/sl_SI.js +0 -7
  171. package/packages/components/other-components/sh-markdown/tinymce/langs/sq.js +0 -7
  172. package/packages/components/other-components/sh-markdown/tinymce/langs/sr.js +0 -7
  173. package/packages/components/other-components/sh-markdown/tinymce/langs/sv_SE.js +0 -7
  174. package/packages/components/other-components/sh-markdown/tinymce/langs/ta.js +0 -7
  175. package/packages/components/other-components/sh-markdown/tinymce/langs/tg.js +0 -7
  176. package/packages/components/other-components/sh-markdown/tinymce/langs/th_TH.js +0 -7
  177. package/packages/components/other-components/sh-markdown/tinymce/langs/tr.js +0 -7
  178. package/packages/components/other-components/sh-markdown/tinymce/langs/ug.js +0 -7
  179. package/packages/components/other-components/sh-markdown/tinymce/langs/uk.js +0 -7
  180. package/packages/components/other-components/sh-markdown/tinymce/langs/vi.js +0 -7
  181. package/packages/components/other-components/sh-markdown/tinymce/skins/content/dark/content.css +0 -72
  182. package/packages/components/other-components/sh-markdown/tinymce/skins/content/dark/content.min.css +0 -7
  183. package/packages/components/other-components/sh-markdown/tinymce/skins/content/default/content.min.css +0 -7
  184. package/packages/components/other-components/sh-markdown/tinymce/skins/content/document/content.css +0 -72
  185. package/packages/components/other-components/sh-markdown/tinymce/skins/content/document/content.min.css +0 -7
  186. package/packages/components/other-components/sh-markdown/tinymce/skins/content/writer/content.css +0 -68
  187. package/packages/components/other-components/sh-markdown/tinymce/skins/content/writer/content.min.css +0 -7
  188. package/packages/components/other-components/sh-markdown/tinymce/skins/ui/oxide-dark/content.css +0 -714
  189. package/packages/components/other-components/sh-markdown/tinymce/skins/ui/oxide-dark/content.inline.css +0 -726
  190. package/packages/components/other-components/sh-markdown/tinymce/skins/ui/oxide-dark/content.inline.min.css +0 -7
  191. package/packages/components/other-components/sh-markdown/tinymce/skins/ui/oxide-dark/content.min.css +0 -7
  192. package/packages/components/other-components/sh-markdown/tinymce/skins/ui/oxide-dark/content.mobile.css +0 -29
  193. package/packages/components/other-components/sh-markdown/tinymce/skins/ui/oxide-dark/content.mobile.min.css +0 -7
  194. package/packages/components/other-components/sh-markdown/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff +0 -0
  195. package/packages/components/other-components/sh-markdown/tinymce/skins/ui/oxide-dark/skin.css +0 -3047
  196. package/packages/components/other-components/sh-markdown/tinymce/skins/ui/oxide-dark/skin.min.css +0 -7
  197. package/packages/components/other-components/sh-markdown/tinymce/skins/ui/oxide-dark/skin.mobile.css +0 -673
  198. package/packages/components/other-components/sh-markdown/tinymce/skins/ui/oxide-dark/skin.mobile.min.css +0 -7
  199. package/packages/components/other-components/sh-markdown/tinymce/skins/ui/oxide-dark/skin.shadowdom.css +0 -37
  200. package/packages/components/other-components/sh-markdown/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css +0 -7
  201. package/packages/directive/directives.js +0 -27
  202. package/packages/iview/css/index.scss +0 -32
  203. package/packages/iview/index.js +0 -25
  204. /package/packages/components/global-components/{sh-vxe-form → sh-form}/components/form-item.vue +0 -0
  205. /package/packages/components/global-components/{sh-vxe-form → sh-form}/js/props.js +0 -0
  206. /package/packages/components/global-components/{sh-vxe-table → sh-table}/js/excel_to_json.js +0 -0
@@ -1,233 +0,0 @@
1
- <template>
2
- <vxe-grid
3
- ref="vxeTreeTable"
4
- v-bind="tableConfigIn"
5
- :class="{ 'sh-vxe-tree-table': true, 'is--hidecheck': globalConfig.checkHide }"
6
- :height="height"
7
- :size="size"
8
- :loading="loading"
9
- :columns="tableColumns"
10
- :data="filterData || tableData"
11
- :row-config="rowConfigIn"
12
- :radio-config="radioConfigIn"
13
- :checkbox-config="checkboxConfigIn"
14
- :pager-config="pagerConfigIn"
15
- :tree-config="treeConfigIn"
16
- @radio-change="onRadioChange"
17
- @checkbox-change="onSelectionChange"
18
- @checkbox-all="onSelectionChange"
19
- @checkbox-range-end="onSelectionChange">
20
- <template #treeNodeCell="scoped">
21
- <span>{{ getTreeNodeCellContent(scoped) }}</span>
22
- </template>
23
- <template #empty>
24
- <sh-empty :no-data-icon="parentProps.noDataIcon" :no-data-text="parentProps.noDataText"></sh-empty>
25
- </template>
26
- </vxe-grid>
27
- </template>
28
-
29
- <script>
30
- import defaultData from '../mixin/defaultData'
31
- export default {
32
- name: 'TableTree',
33
- props: {
34
- parentProps: {
35
- type: Object,
36
- default() {
37
- return {}
38
- }
39
- },
40
- loading: {
41
- type: Boolean
42
- },
43
- height: {
44
- type: [Number, String],
45
- default: 'auto'
46
- },
47
- filterText: {
48
- type: String
49
- },
50
- size: {
51
- type: String,
52
- default: 'medium' // medium / small / mini
53
- },
54
- globalConfig: {
55
- type: Object,
56
- default() {
57
- return {}
58
- }
59
- },
60
- tableData: {
61
- type: Array,
62
- default() {
63
- return []
64
- }
65
- },
66
- selectedKeys: {
67
- type: Array,
68
- default() {
69
- return []
70
- }
71
- }
72
- },
73
- emits: ['select'],
74
- data() {
75
- return {
76
- ...defaultData,
77
- filterData: null,
78
- filterChangeDebounce: this.$vUtils.debounce(this.handleMyTableFilter, 500)
79
- }
80
- },
81
- computed: {
82
- multiple() {
83
- return this.parentProps.multiple || false
84
- },
85
- tableConfigIn() {
86
- return Object.assign({ showHeader: !!(this.globalConfig.hasAll && this.multiple) }, this.tableConfigDefault, this.globalConfig.tableConfig)
87
- },
88
- pagerConfigIn() {
89
- return Object.assign({ enabled: false }, this.globalConfig.pagerConfig)
90
- },
91
- rowConfigIn() {
92
- return Object.assign({ isCurrent: false }, this.tableConfigIn.rowConfig, { keyField: this.parentProps.nodeKey })
93
- },
94
- radioConfigIn() {
95
- return Object.assign({ labelField: this.parentProps.labelField, checkRowKey: this.selectedKeys[0], checkMethod: this.tableCheckMethods }, this.globalConfig.radioConfig)
96
- },
97
- checkboxConfigIn() {
98
- return Object.assign({ labelField: this.parentProps.labelField, checkRowKeys: this.selectedKeys, checkMethod: this.tableCheckMethods }, this.globalConfig.checkboxConfig)
99
- },
100
- treeConfigIn() {
101
- return Object.assign({ rowField: this.parentProps.nodeKey, transform: this.globalConfig.transform }, this.globalConfig.treeConfig)
102
- },
103
- tableColumns() {
104
- let { globalConfig, multiple, checkboxConfigIn, radioConfigIn, parentProps } = this
105
- let defaultColumn = {
106
- field: multiple ? checkboxConfigIn.labelField : radioConfigIn.labelField,
107
- title: parentProps.labelTitle || (multiple ? '全部' : ''),
108
- type: parentProps.disabled ? 'html' : multiple ? 'checkbox' : 'radio',
109
- treeNode: true,
110
- width: globalConfig.columns ? globalConfig?.defaultWidth || 150 : '100%',
111
- slots: { default: 'treeNodeCell' }
112
- }
113
- return [defaultColumn].concat(globalConfig.columns || [])
114
- }
115
- },
116
- watch: {
117
- selectedKeys: {
118
- handler(newvalue, oldValue) {},
119
- deep: true
120
- },
121
- filterText: {
122
- handler(newvalue, oldValue) {
123
- this.filterChangeDebounce(newvalue)
124
- },
125
- deep: true,
126
- immediate: true
127
- }
128
- },
129
- created() {},
130
- mounted() {
131
- this.initMounted()
132
- },
133
- beforeUnmount() {},
134
- methods: {
135
- tableRef() {
136
- return this.$refs.vxeTreeTable
137
- },
138
- initMounted() {
139
- this.initSelection()
140
- },
141
- initSelection() {
142
- const that = this
143
- let nodeKey = that.parentProps.nodeKey || 'id'
144
- setTimeout(() => {
145
- if (that.selectedKeys && that.selectedKeys.length > 0) {
146
- that.tableRef().scrollToRow({ [nodeKey]: that.selectedKeys[0] })
147
- }
148
- })
149
- },
150
- // 单选框变化
151
- onRadioChange(obj) {
152
- const that = this
153
- let nodeKey = that.parentProps.nodeKey || 'id'
154
- let { newValue } = obj
155
- let selectedKeys = []
156
- if (newValue && (newValue[nodeKey] || newValue[nodeKey] === 0)) {
157
- selectedKeys.push(newValue[nodeKey])
158
- }
159
- that.treeSelectedChange(selectedKeys, newValue ? [newValue] : [], obj)
160
- },
161
- // 复选框变化
162
- onSelectionChange(obj) {
163
- const that = this
164
- let nodeKey = that.parentProps.nodeKey || 'id'
165
- let { records = [] } = obj
166
- let selectedKeys = []
167
- if (Array.isArray(records) && records.length > 0) {
168
- records.forEach(item => {
169
- selectedKeys.push(item[nodeKey])
170
- })
171
- }
172
- that.treeSelectedChange(selectedKeys, records, obj)
173
- },
174
- // 全局搜索过滤事件
175
- handleMyTableFilter(text) {
176
- const that = this
177
- let filterText = that.$vUtils.toValueString(text).trim().toLowerCase()
178
- let filterData = null
179
- if (filterText) {
180
- const searchProps = [{ rkey: that.parentProps.labelField, format: that.parentProps.labelFormat }]
181
- let tableColumnsAll = that.tableRef().getColumns()
182
- tableColumnsAll.forEach(col => {
183
- let renderObj = col.cellRender || col.editRender || col.itemRender
184
- let noSearchArr = ['$vGlobalOption', '$vImg', '$vCheckbox', '$vRadio', '$vUpload', '$vCode', 'seq', 'checkbox', 'radio']
185
- if (col.property && renderObj && renderObj.name && !noSearchArr.includes(renderObj.name) && !noSearchArr.includes(col.type)) {
186
- searchProps.push({ rkey: col.property, rname: renderObj.name, rprops: Object.assign({}, renderObj.props, col.rprops) })
187
- }
188
- })
189
- filterData = that.$vUtils.searchTree(that.tableData, row => {
190
- return searchProps.some(item => {
191
- let cellValue = item.format ? that.$vUtils.format(item.format, row) : that.$vUtils.get(row, item.rkey)
192
- if (that.$vxePluginNames.expendRenders && that.$vxePluginNames.expendRenders.includes(item.rname)) {
193
- let { rtext } = that.$vUtils.formatRender(cellValue, item.rkey, row, item.rname, item.rprops, that)
194
- return String(rtext).toLowerCase().indexOf(filterText) > -1
195
- }
196
- return that.$vUtils.trim(cellValue).toLowerCase().indexOf(filterText) > -1
197
- })
198
- })
199
- }
200
- if (that.filterData === null && !filterText) {
201
- return
202
- }
203
- that.filterData = filterData
204
- if (filterData && filterData.length > 0) {
205
- that.tableRef().setTreeExpand(filterData[0], true)
206
- }
207
- },
208
- // 获取选中的数据
209
- getSelectionData() {
210
- return this.tableRef().getCheckboxRecords()
211
- },
212
- // 树变化提交
213
- async treeSelectedChange(selectedKeys, selectedRows, obj) {
214
- this.$emit('select', selectedKeys, selectedRows, obj)
215
- },
216
- tableCheckMethods({ row }) {
217
- if (this.parentProps.isLeaf && !this.parentProps.multiple) {
218
- return +row.isleaf === 1 || +row.isLeaf === 1
219
- }
220
- return true
221
- },
222
- getTreeNodeCellContent({ row, column }) {
223
- let { labelFormat, field } = this.parentProps
224
- if (labelFormat) {
225
- return this.$vUtils.format(labelFormat, row)
226
- }
227
- return this.$vUtils.get(row, column.property)
228
- }
229
- }
230
- }
231
- </script>
232
-
233
- <style lang="scss" scoped></style>
@@ -1,20 +0,0 @@
1
- .sh-vxe-tree{
2
- position: relative;
3
- width: 100%;
4
- .vxe-input{
5
- width: 100%;
6
- }
7
- }
8
-
9
- .sh-vxe-tree-table{
10
- .is--disabled.vxe-radio, .vxe-table--render-default .is--disabled.vxe-cell--radio,
11
- .is--disabled.vxe-checkbox, .vxe-table--render-default .is--disabled.vxe-cell--checkbox{
12
- color: inherit;
13
- }
14
- }
15
-
16
- .sh-vxe-tree-result{
17
- position: relative;
18
- top: 50%;
19
- transform: translateY(-60%);
20
- }
@@ -1,85 +0,0 @@
1
- <template>
2
- <div class="sh-vxe-tree" :style="{ height: shVxeTableHeight }">
3
- <component
4
- :is="curCompunent"
5
- ref="vxe-tree-child"
6
- v-bind="$props"
7
- :selected-keys="selectedKeys"
8
- :global-config="treeGlobalConfig"
9
- @change="treeSelectedChange"
10
- @focus="treeSelectedFocus"
11
- @blur="treeSelectedBlur"></component>
12
- </div>
13
- </template>
14
-
15
- <script>
16
- import vxeDirectTree from './vxe-direct-tree.vue'
17
- import vxeSelectTree from './vxe-select-tree.vue'
18
- import props from './js/props'
19
- export default {
20
- name: 'ShTree',
21
- components: {
22
- vxeDirectTree,
23
- vxeSelectTree
24
- },
25
- props: {
26
- ...props
27
- },
28
- emits: ['update:modelValue', 'change', 'focus', 'blur'],
29
- data() {
30
- return {
31
- selectedKeys: [],
32
- selectionData: []
33
- }
34
- },
35
- computed: {
36
- curCompunent() {
37
- return this.isSelect ? 'vxeSelectTree' : 'vxeDirectTree'
38
- },
39
- shVxeTableHeight() {
40
- return this.height === '100%' || this.height === 'auto' ? '100%' : 'auto'
41
- },
42
- treeGlobalConfig() {
43
- return Object.assign({ treeFilter: true, initServer: !this.isSelect }, this.globalConfig)
44
- }
45
- },
46
- watch: {
47
- modelValue: {
48
- handler(newvalue, oldValue) {
49
- this.selectedKeys = newvalue
50
- },
51
- deep: true,
52
- immediate: true
53
- }
54
- },
55
- created() {},
56
- mounted() {},
57
- methods: {
58
- // 初始化
59
- initCreated() {},
60
- // 树节点获取焦点事件
61
- treeSelectedFocus() {
62
- this.$emit('focus', this.selectedKeys || [], this.selectionData || [])
63
- },
64
- // 树节点选择变换事件
65
- treeSelectedChange(selectedKeys, selectedRows, obj) {
66
- this.selectedKeys = selectedKeys
67
- this.selectionData = selectedRows
68
- this.$emit('update:modelValue', selectedKeys, selectedRows, obj)
69
- this.$emit('change', selectedKeys, selectedRows, obj)
70
- },
71
- // 树收起下拉回调blur方法
72
- treeSelectedBlur(obj) {
73
- this.$emit('blur', this.selectedKeys || [], this.selectionData || [])
74
- },
75
- // 获取选中数据
76
- getSelectionData() {
77
- return this.selectionData
78
- }
79
- }
80
- }
81
- </script>
82
-
83
- <style lang="scss">
84
- @import 'css/index.scss';
85
- </style>
@@ -1,120 +0,0 @@
1
- export default {
2
- modelValue: {
3
- type: Array,
4
- default() {
5
- return []
6
- }
7
- },
8
- height: {
9
- type: [Number, String],
10
- default: 'auto'
11
- },
12
- nodeKey: {
13
- type: String,
14
- default: 'id'
15
- },
16
- valueKeys: {
17
- type: Array
18
- },
19
- valueData: {
20
- type: Object,
21
- default() {
22
- return {}
23
- }
24
- },
25
- format: {
26
- type: String
27
- },
28
- field: {
29
- type: String
30
- },
31
- isSelect: {
32
- type: Boolean
33
- },
34
- isLeaf: {
35
- type: Boolean
36
- },
37
- disabled: {
38
- type: Boolean
39
- },
40
- level: {
41
- type: Number,
42
- default: -1
43
- },
44
- split: {
45
- type: String,
46
- default: ','
47
- },
48
- size: {
49
- type: String,
50
- default: 'small' // medium / small / mini
51
- },
52
- placeholder: {
53
- type: String,
54
- default: '请选择'
55
- },
56
- labelField: {
57
- type: String,
58
- default: 'label'
59
- },
60
- labelFormat: {
61
- type: String,
62
- default: ''
63
- },
64
- labelTitle: {
65
- type: String
66
- },
67
- filterText: {
68
- type: String
69
- },
70
- loading: {
71
- type: Boolean
72
- },
73
- multiple: {
74
- type: Boolean
75
- },
76
- globalConfig: {
77
- type: Object,
78
- default() {
79
- return {}
80
- }
81
- },
82
- treeColumns: {
83
- type: Array,
84
- default() {
85
- return []
86
- }
87
- },
88
- options: {
89
- type: Array,
90
- default() {
91
- return []
92
- }
93
- },
94
- serverCache: {
95
- // 请求数据是否缓存,不缓存则每次下拉重新加载
96
- type: Boolean,
97
- default: true
98
- },
99
- serverConfig: {
100
- type: Object,
101
- default() {
102
- return {
103
- type: 'post',
104
- url: ''
105
- }
106
- }
107
- },
108
- serverParams: {
109
- type: Object,
110
- default() {
111
- return {}
112
- }
113
- },
114
- parseParams: {
115
- type: Function,
116
- default() {
117
- return {}
118
- }
119
- }
120
- }
@@ -1,169 +0,0 @@
1
- const shMethods = {
2
- // 加载初始化
3
- initMounted() {
4
- if (this.globalConfig?.initServer) {
5
- // 初始化获取服务配置数据
6
- this.getServerConfigDataSourse()
7
- }
8
- },
9
- // 初始化赋值
10
- initValue(value = []) {
11
- let { valueData, options, multiple, format, field, split, labelField, treeData, $vUtils } = this
12
- let treeSelectValue, treeSelectedData
13
- try {
14
- if (value && Array.isArray(value) && value.length > 0 && treeData && treeData.length > 0) {
15
- let selectRows = this.getSelectRowsByValue(value)
16
- let selectValues = selectRows.map(item => item[labelField])
17
- if (format) {
18
- let prefixKey = field.endsWith('Id') ? String(field).replace('Id', '') : field
19
- let dataformat = format.replace(/@/gi, prefixKey)
20
- if (multiple) {
21
- let formatKeys = $vUtils.getFormatKeys(dataformat)
22
- // 首先构建回显数据源,防止formayKeys值不全导致索引错乱
23
- let formatSourceList = Array.from(new Array(value.length), (item, itemIndex) => {
24
- let result = { [field]: value[itemIndex] }
25
- formatKeys.forEach(key => {
26
- result[key] = $vUtils.get(valueData, `${key}[${itemIndex}]`)
27
- })
28
- return result
29
- })
30
- selectValues = formatSourceList.map(item => $vUtils.format(dataformat, item))
31
- } else {
32
- selectValues = [$vUtils.format(dataformat, valueData)]
33
- }
34
- }
35
- treeSelectValue = selectValues.join(split)
36
- treeSelectedData = selectRows
37
- } else {
38
- treeSelectValue = ''
39
- treeSelectedData = []
40
- }
41
- } catch (e) {
42
- console.warn('初始化树值失败!')
43
- }
44
- this.treeSelectValue = treeSelectValue
45
- this.treeSelectedData = treeSelectedData
46
- },
47
- // 树节点选择变换事件
48
- treeSelectedChange(selectedKeys, selectedRows, obj) {
49
- let emitFlag = true
50
- let { labelField, split, multiple } = this
51
- if (selectedRows && Array.isArray(selectedRows) && selectedRows.length > 0) {
52
- let selectLabels = []
53
- selectedRows.forEach(item => {
54
- selectLabels.push(item[labelField])
55
- })
56
- this.treeSelectValue = selectLabels.join(split)
57
- } else {
58
- this.treeSelectValue = ''
59
- }
60
- this.treeSelectedData = selectedRows
61
- if (!emitFlag) {
62
- return
63
- }
64
- this.$emit('change', selectedKeys, selectedRows, obj)
65
- if (this.$refs.vxeTreeSelect && !multiple && obj.$table) {
66
- this.vxeTreePullHide()
67
- }
68
- },
69
- // 获取请求配置数据
70
- async getServerConfigDataSourse() {
71
- const { serverConfig, serverParams, parseParams, queryCacheParams, serverCache, valueData, globalConfig, multiple, nodeKey, labelField, $vUtils, $http } = this
72
- if (!serverConfig.url) {
73
- this.treeServerComplate = true
74
- return
75
- }
76
- let params = $vUtils.clone(serverParams, true)
77
- if (parseParams && typeof parseParams === 'function') {
78
- params = parseParams(params)
79
- }
80
- Object.keys(params).forEach(key => {
81
- if ($vUtils.getFormatKeys(params[key]).length > 0) {
82
- params[key] = $vUtils.format(params[key], valueData)
83
- }
84
- })
85
- if (!$vUtils.isEqual(queryCacheParams, params)) {
86
- this.treeServerComplate = false
87
- }
88
- if (serverCache && this.treeServerComplate) {
89
- return
90
- }
91
- this.queryErrorText = null
92
- this.queryCacheParams = params
93
- this.treeLoading = true
94
- let reqOptions = {
95
- baseURL: serverConfig.baseURL
96
- }
97
- try {
98
- let method = serverConfig?.type ? serverConfig.type.toLowerCase() : 'post'
99
- let treeRes = await $http[method](serverConfig.url, params, reqOptions)
100
- if (treeRes && [10000, 100000].includes(+treeRes.code)) {
101
- let treeAllNode = globalConfig?.hasAll && !multiple ? [{ [nodeKey]: 0, [labelField]: '全部', isleaf: 1, code: '' }] : []
102
- let treeData = treeAllNode.concat(treeRes.data)
103
- if (globalConfig.transform) {
104
- treeData = $vUtils.toTreeArray(treeData, { clear: true })
105
- }
106
- this.treeData = treeData
107
- } else {
108
- throw new Error(`树节点信息获取失败:${treeRes?.message}`)
109
- }
110
- } catch (e) {
111
- this.queryErrorText = e.message || e
112
- }
113
- this.treeLoading = false
114
- this.treeServerComplate = true
115
- }
116
- }
117
-
118
- const toolMethods = {
119
- // 根据选中子级查找父级
120
- getParentByChild(key, childKey = 'children', childNode, datas, resultArr = []) {
121
- let allLineData = this.getDataJsonToLine(key, childKey, datas)
122
- let curNode = allLineData.find(item => item[key] === childNode[key])
123
- let findParentNodes = function (curNode, alldata, result = []) {
124
- alldata.forEach(al => {
125
- if (curNode['pid'] === al[key]) {
126
- result.push(al)
127
- if (al['pid']) {
128
- findParentNodes(al, alldata, result)
129
- }
130
- }
131
- })
132
- return result
133
- }
134
- return findParentNodes(curNode, allLineData)
135
- },
136
- // 将复杂结构Tree转为平行结构
137
- getDataJsonToLine(key = 'id', childKey = 'children', datas = [], resultArr = [], parentNode) {
138
- let copyData = JSON.parse(JSON.stringify(datas))
139
- copyData.forEach(item => {
140
- resultArr.push(item)
141
- if (item[childKey] && Array.isArray(item[childKey]) && item[childKey].length > 0) {
142
- this.getDataJsonToLine(key, childKey, item[childKey], resultArr, item)
143
- }
144
- if (parentNode) {
145
- item['pid'] = parentNode[key]
146
- }
147
- // if (item[childKey]) delete item[childKey]
148
- })
149
- return resultArr
150
- },
151
- // 根据选中值返回选中节点信息
152
- getSelectRowsByValue(value) {
153
- const that = this
154
- let childKey = (that.globalConfig.treeConfig && that.globalConfig.treeConfig.childrenField) || 'children'
155
- let records = this.getDataJsonToLine(that.nodeKey, childKey, that.treeData)
156
- let selectRows = []
157
- records.forEach(node => {
158
- if (node[that.nodeKey] && value.includes(node[that.nodeKey])) {
159
- selectRows.push(node)
160
- }
161
- })
162
- return selectRows
163
- }
164
- }
165
-
166
- export default {
167
- ...shMethods,
168
- ...toolMethods
169
- }
@@ -1,54 +0,0 @@
1
- export default {
2
- // 输入框全局配置
3
- inputConfigDefault: {
4
- clearable: true,
5
- controls: false,
6
- transfer: false,
7
- suffixIcon: 'vxe-icon-caret-down'
8
- },
9
- // 过滤框全局配置
10
- filterInputConfigDefault: {
11
- prefixIcon: 'vxe-icon-search',
12
- placeholder: '搜索',
13
- clearable: true,
14
- controls: false,
15
- transfer: true
16
- },
17
- // 下拉框全局配置
18
- selectConfigDefault: {
19
- placement: 'bottom',
20
- destroyOnClose: true,
21
- transfer: true,
22
- treeFilter: true
23
- },
24
- // 树组件表格全局配置
25
- tableConfigDefault: {
26
- autoResize: true,
27
- syncResize: true,
28
- stripe: false,
29
- size: 'small', // medium / small / mini
30
- border: 'inner',
31
- showFooter: false,
32
- showOverflow: true,
33
- pagerConfig: false,
34
- resizeConfig: {
35
- refreshDelay: 50
36
- },
37
- columnConfig: {
38
- width: 120
39
- },
40
- scrollX: {
41
- enabled: true,
42
- gt: 20
43
- },
44
- scrollY: {
45
- enabled: true,
46
- gt: 20
47
- }
48
- },
49
- // 扩展展示配置
50
- showConfigDefault: {
51
- showParent: false,
52
- split: '/'
53
- }
54
- }