haiwei-ui 1.0.2 → 1.0.4

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 (211) hide show
  1. package/.prettierrc +6 -4
  2. package/README.md +10 -0
  3. package/package.json +1 -1
  4. package/packages/components/box/index.vue +116 -125
  5. package/packages/components/box-col/index.vue +30 -33
  6. package/packages/components/box-row/index.vue +17 -17
  7. package/packages/components/box-small/index.vue +38 -38
  8. package/packages/components/button/index.vue +29 -42
  9. package/packages/components/button-copy/index.vue +46 -62
  10. package/packages/components/button-delete/index.vue +64 -77
  11. package/packages/components/button-delete-batch/index.vue +82 -95
  12. package/packages/components/button-has/index.vue +29 -42
  13. package/packages/components/checkbox-group/index.vue +85 -85
  14. package/packages/components/color-picker/index.vue +41 -50
  15. package/packages/components/container/index.vue +8 -8
  16. package/packages/components/date-range-picker/index.vue +92 -103
  17. package/packages/components/details/index.vue +72 -79
  18. package/packages/components/dialog/index.vue +281 -294
  19. package/packages/components/drag-sort/index.vue +36 -36
  20. package/packages/components/drag-sort-dialog/index.vue +58 -58
  21. package/packages/components/drawer/index.vue +157 -166
  22. package/packages/components/enums/sex/index.vue +1 -1
  23. package/packages/components/flex/index.vue +33 -33
  24. package/packages/components/form/index.vue +123 -138
  25. package/packages/components/form-dialog/index.vue +184 -217
  26. package/packages/components/form-page/index.vue +134 -151
  27. package/packages/components/icon/index.vue +6 -6
  28. package/packages/components/icon-picker/index.vue +30 -30
  29. package/packages/components/icon-picker/panel.vue +58 -58
  30. package/packages/components/label/index.vue +22 -30
  31. package/packages/components/list/components/export/index.vue +101 -99
  32. package/packages/components/list/components/footer/index.vue +42 -51
  33. package/packages/components/list/components/header/index.vue +34 -34
  34. package/packages/components/list/components/querybar/index.vue +145 -124
  35. package/packages/components/list/components/select-column/index.vue +30 -30
  36. package/packages/components/list/components/table/index.vue +169 -188
  37. package/packages/components/list/index.vue +336 -395
  38. package/packages/components/list-agile/index.vue +145 -145
  39. package/packages/components/list-dialog/index.vue +70 -84
  40. package/packages/components/listbox/index.vue +48 -48
  41. package/packages/components/login-default/index.vue +107 -107
  42. package/packages/components/login-neon/index.vue +104 -104
  43. package/packages/components/map/index.vue +229 -229
  44. package/packages/components/map-coord-picking/index.vue +220 -219
  45. package/packages/components/map-search/index.vue +75 -72
  46. package/packages/components/scrollbar/index.vue +11 -11
  47. package/packages/components/select-whether/index.vue +30 -30
  48. package/packages/components/split/index.vue +141 -141
  49. package/packages/components/split/trigger.vue +15 -15
  50. package/packages/components/tabnav/index.vue +125 -89
  51. package/packages/components/tabs/index.vue +31 -31
  52. package/packages/components/toolbar/components/fullscreen/index.vue +10 -10
  53. package/packages/components/toolbar/components/logout/index.vue +13 -13
  54. package/packages/components/toolbar/components/skin-toggle/form.vue +59 -59
  55. package/packages/components/toolbar/components/skin-toggle/index.vue +12 -12
  56. package/packages/components/toolbar/components/userInfo/index.vue +18 -18
  57. package/packages/components/toolbar/index.vue +12 -12
  58. package/packages/components/tree-select/mixins.vue +261 -270
  59. package/packages/components/txt/index.vue +17 -17
  60. package/packages/components/update-password/index.vue +45 -57
  61. package/packages/layout.vue +18 -18
  62. package/packages/mixins/components/checkbox.vue +71 -82
  63. package/packages/mixins/components/radio.vue +69 -69
  64. package/packages/page/403/index.vue +32 -28
  65. package/packages/page/404/index.vue +32 -28
  66. package/packages/page/default/index.vue +17 -13
  67. package/packages/page/iframe/index.vue +6 -6
  68. package/packages/page/login/index.vue +9 -9
  69. package/packages/page/userInfo/index.vue +5 -5
  70. package/packages/router/index.js +1 -9
  71. package/packages/skins/pretty/components/header/components/breadcrumb/index.vue +29 -29
  72. package/packages/skins/pretty/components/header/components/theme/index.vue +22 -21
  73. package/packages/skins/pretty/components/header/index.vue +12 -12
  74. package/packages/skins/pretty/components/main/index.vue +27 -27
  75. package/packages/skins/pretty/components/menus/index.vue +28 -28
  76. package/packages/skins/pretty/components/menus/item.vue +23 -23
  77. package/packages/skins/pretty/components/sidebar/index.vue +7 -7
  78. package/packages/skins/pretty/index.vue +6 -6
  79. package/packages/skins/pretty/styles/themes/blue-light/_index.scss +2 -2
  80. package/packages/skins/pretty/styles/themes/default/_index.scss +1 -1
  81. package/packages/skins/pretty/styles/themes/green/_index.scss +2 -2
  82. package/packages/skins/pretty/styles/themes/green-light/_index.scss +2 -2
  83. package/packages/styles/_mixins.scss +24 -25
  84. package/packages/styles/animation/_index.scss +22 -23
  85. package/packages/styles/animation/breadcrumb.scss +6 -6
  86. package/packages/styles/animation/fade.scss +11 -11
  87. package/packages/styles/animation/move.scss +98 -98
  88. package/packages/styles/components/box-small/_index.scss +58 -58
  89. package/packages/styles/components/button/_index.scss +7 -7
  90. package/packages/styles/components/container/_index.scss +26 -26
  91. package/packages/styles/components/date-range-picker/_index.scss +4 -4
  92. package/packages/styles/components/details/_index.scss +66 -67
  93. package/packages/styles/components/details-dialog/_index.scss +13 -13
  94. package/packages/styles/components/drag-sort/_index.scss +20 -20
  95. package/packages/styles/components/drag-sort-dialog/_index.scss +7 -7
  96. package/packages/styles/components/flex/_index.scss +56 -56
  97. package/packages/styles/components/form-dialog/_index.scss +11 -11
  98. package/packages/styles/components/icon/_index.scss +6 -6
  99. package/packages/styles/components/label/_index.scss +245 -245
  100. package/packages/styles/components/listbox/_index.scss +47 -47
  101. package/packages/styles/components/split/_index.scss +102 -102
  102. package/packages/styles/components/toolbar/_index.scss +98 -98
  103. package/packages/styles/components/txt/_index.scss +13 -13
  104. package/packages/styles/components/upload-dialog/_index.scss +44 -44
  105. package/packages/styles/components/upload-multiple/_index.scss +19 -19
  106. package/packages/styles/components/upload-single/_index.scss +16 -16
  107. package/packages/utils/resize-event.js +3 -3
  108. package/packages/vuter/attributes.json +30 -40
  109. package/packages/vuter/tags.json +11 -27
  110. package/public/lib/font/iconfont.js +47 -1
  111. package/src/api/config.js +1 -1
  112. package/src/components/code-preview/index.vue +56 -56
  113. package/src/components/tmpl/components/attributes/index.vue +3 -3
  114. package/src/components/tmpl/components/events/index.vue +3 -3
  115. package/src/components/tmpl/components/methods/index.vue +3 -3
  116. package/src/components/tmpl/components/slots/index.vue +3 -3
  117. package/src/components/tmpl/index.vue +42 -42
  118. package/src/style/element-ui.scss +4 -4
  119. package/src/views/components/advanced/details/_index/index.vue +16 -16
  120. package/src/views/components/advanced/details/demo1/demo.vue +42 -42
  121. package/src/views/components/advanced/details/demo1/index.vue +11 -11
  122. package/src/views/components/advanced/drag-sort/_index/index.vue +16 -16
  123. package/src/views/components/advanced/drag-sort/demo1/demo.vue +18 -18
  124. package/src/views/components/advanced/drag-sort/demo1/index.vue +11 -11
  125. package/src/views/components/advanced/drag-sort-dialog/_index/index.vue +16 -16
  126. package/src/views/components/advanced/drag-sort-dialog/demo1/demo.vue +24 -24
  127. package/src/views/components/advanced/drag-sort-dialog/demo1/index.vue +11 -11
  128. package/src/views/components/advanced/list/_index/index.vue +21 -21
  129. package/src/views/components/advanced/list/demo1/demo.vue +65 -65
  130. package/src/views/components/advanced/list/demo1/index.vue +11 -11
  131. package/src/views/components/advanced/list/demo2/demo.vue +52 -52
  132. package/src/views/components/advanced/list/demo2/index.vue +11 -11
  133. package/src/views/components/advanced/list/demo4/demo.vue +28 -28
  134. package/src/views/components/advanced/list/demo4/index.vue +11 -11
  135. package/src/views/components/advanced/list-dialog/_index/index.vue +21 -21
  136. package/src/views/components/advanced/list-dialog/demo1/demo.vue +48 -48
  137. package/src/views/components/advanced/list-dialog/demo1/index.vue +11 -11
  138. package/src/views/components/advanced/listbox/_index/index.vue +19 -19
  139. package/src/views/components/advanced/listbox/demo1/demo.vue +47 -47
  140. package/src/views/components/advanced/listbox/demo1/index.vue +11 -11
  141. package/src/views/components/base/box/_index/index.vue +22 -28
  142. package/src/views/components/base/box/demo1/index.vue +11 -11
  143. package/src/views/components/base/box/demo2/index.vue +11 -11
  144. package/src/views/components/base/box/demo3/demo.vue +15 -15
  145. package/src/views/components/base/box/demo3/index.vue +11 -11
  146. package/src/views/components/base/box/demo4/demo.vue +18 -24
  147. package/src/views/components/base/box/demo4/index.vue +11 -11
  148. package/src/views/components/base/box-col/_index/index.vue +17 -17
  149. package/src/views/components/base/box-col/demo1/index.vue +11 -11
  150. package/src/views/components/base/box-row/_index/index.vue +17 -17
  151. package/src/views/components/base/box-row/demo1/index.vue +11 -11
  152. package/src/views/components/base/box-small/_index/index.vue +17 -17
  153. package/src/views/components/base/box-small/demo1/demo.vue +30 -30
  154. package/src/views/components/base/box-small/demo1/index.vue +11 -11
  155. package/src/views/components/base/button/_index/index.vue +18 -18
  156. package/src/views/components/base/button/demo1/index.vue +11 -11
  157. package/src/views/components/base/button/demo2/demo.vue +53 -48
  158. package/src/views/components/base/button/demo2/index.vue +11 -11
  159. package/src/views/components/base/container/_index/index.vue +15 -15
  160. package/src/views/components/base/dialog/_index/index.vue +20 -20
  161. package/src/views/components/base/dialog/demo1/demo.vue +37 -37
  162. package/src/views/components/base/dialog/demo1/index.vue +11 -11
  163. package/src/views/components/base/drawer/_index/index.vue +18 -18
  164. package/src/views/components/base/drawer/demo1/demo.vue +8 -8
  165. package/src/views/components/base/drawer/demo1/index.vue +11 -11
  166. package/src/views/components/base/flex/_index/index.vue +17 -17
  167. package/src/views/components/base/flex/demo1/demo.vue +6 -6
  168. package/src/views/components/base/flex/demo1/index.vue +14 -14
  169. package/src/views/components/base/label/_index/index.vue +17 -17
  170. package/src/views/components/base/label/demo1/index.vue +14 -14
  171. package/src/views/components/base/scrollbar/_index/index.vue +17 -17
  172. package/src/views/components/base/scrollbar/demo1/demo.vue +47 -47
  173. package/src/views/components/base/scrollbar/demo1/index.vue +11 -11
  174. package/src/views/components/base/split/_index/index.vue +17 -17
  175. package/src/views/components/base/split/demo1/demo.vue +6 -6
  176. package/src/views/components/base/split/demo1/index.vue +11 -11
  177. package/src/views/components/base/tabs/_index/index.vue +21 -21
  178. package/src/views/components/base/tabs/demo1/demo.vue +47 -47
  179. package/src/views/components/base/tabs/demo1/index.vue +14 -14
  180. package/src/views/components/base/txt/_index/index.vue +17 -17
  181. package/src/views/components/base/txt/demo1/index.vue +14 -14
  182. package/src/views/components/form/checkbox-group/_index/index.vue +20 -20
  183. package/src/views/components/form/checkbox-group/demo1/demo.vue +35 -35
  184. package/src/views/components/form/checkbox-group/demo1/index.vue +11 -11
  185. package/src/views/components/form/color-picker/_index/index.vue +16 -16
  186. package/src/views/components/form/color-picker/demo1/demo.vue +10 -10
  187. package/src/views/components/form/color-picker/demo1/index.vue +11 -11
  188. package/src/views/components/form/date-range-picker/_index/index.vue +17 -17
  189. package/src/views/components/form/date-range-picker/demo1/demo.vue +21 -21
  190. package/src/views/components/form/date-range-picker/demo1/index.vue +11 -11
  191. package/src/views/components/form/form/_index/index.vue +18 -18
  192. package/src/views/components/form/form/demo1/demo.vue +33 -33
  193. package/src/views/components/form/form/demo1/index.vue +11 -11
  194. package/src/views/components/form/form-dialog/_index/index.vue +18 -18
  195. package/src/views/components/form/form-dialog/demo1/demo.vue +39 -39
  196. package/src/views/components/form/form-dialog/demo1/index.vue +14 -14
  197. package/src/views/components/form/form-page/_index/index.vue +18 -18
  198. package/src/views/components/form/form-page/demo1/demo.vue +19 -19
  199. package/src/views/components/form/form-page/demo1/index.vue +11 -11
  200. package/src/views/components/form/icon-picker/_index/index.vue +18 -17
  201. package/src/views/components/form/icon-picker/demo1/demo.vue +20 -20
  202. package/src/views/components/form/icon-picker/demo1/index.vue +11 -11
  203. package/src/views/components/form/select/_index/index.vue +19 -19
  204. package/src/views/components/form/select/demo1/demo.vue +39 -39
  205. package/src/views/components/form/select/demo1/index.vue +11 -11
  206. package/src/views/components/form/select/demo2/index.vue +6 -6
  207. package/src/views/components/map/map-coord-picking/_index/index.vue +22 -22
  208. package/src/views/components/map/map-coord-picking/demo1/demo.vue +23 -23
  209. package/src/views/components/map/map-coord-picking/demo1/index.vue +11 -11
  210. package/src/views/run/index.vue +37 -37
  211. package/vue.config.js +1 -1
@@ -1,35 +1,14 @@
1
1
  <template>
2
2
  <section :class="class_" v-loading="showLoading" :element-loading-text="loadingText || loadingText_" :element-loading-background="loadingBackground" :element-loading-spinner="loadingSpinner">
3
3
  <!--header-->
4
- <query-header
5
- v-if="!noHeader"
6
- :title="title"
7
- :icon="icon"
8
- :no-fullscreen="noFullscreen"
9
- :fullscreen="fullscreen"
10
- :no-refresh="noRefresh"
11
- :export-enabled="exportOptions_.enabled && exportOptions_.btnLocation !== 'querybar'"
12
- :exportBtnCode="exportOptions_.btnCode"
13
- >
4
+ <query-header v-if="!noHeader" :title="title" :icon="icon" :no-fullscreen="noFullscreen" :fullscreen="fullscreen" :no-refresh="noRefresh" :export-enabled="exportOptions_.enabled && exportOptions_.btnLocation !== 'querybar'" :exportBtnCode="exportOptions_.btnCode">
14
5
  <template v-slot:toolbar>
15
6
  <slot name="header-toolbar" :total="total" :selection="selection" />
16
7
  </template>
17
8
  </query-header>
18
9
 
19
10
  <!--查询栏-->
20
- <querybar
21
- ref="querybar"
22
- v-if="!noQuerybar"
23
- :model="model"
24
- :rules="rules"
25
- :input-width="inputWidth"
26
- :advanced="advanced"
27
- :no-search="noSearch"
28
- :no-reset="noReset"
29
- :export-enabled="exportOptions_.enabled && exportOptions_.btnLocation === 'querybar'"
30
- :export-btn-code="exportOptions_.btnCode"
31
- @reset="onQueryBarReset"
32
- >
11
+ <querybar ref="querybar" v-if="!noQuerybar" :model="model" :rules="rules" :input-width="inputWidth" :advanced="advanced" :no-search="noSearch" :no-reset="noReset" :export-enabled="exportOptions_.enabled && exportOptions_.btnLocation === 'querybar'" :export-btn-code="exportOptions_.btnCode" @reset="onQueryBarReset">
33
12
  <template v-slot>
34
13
  <slot name="querybar" />
35
14
  </template>
@@ -42,20 +21,7 @@
42
21
  </querybar>
43
22
 
44
23
  <section class="nm-list-body">
45
- <query-table
46
- ref="table"
47
- :rows="rows"
48
- :cols="cols"
49
- :span-method="spanMethod"
50
- :selection="selection"
51
- :row-key="rowKey"
52
- :tree-props="treeProps"
53
- :default-expand-all="defaultExpandAll"
54
- :no-clear-selection="noClearSelection"
55
- :show-summary="showSummary"
56
- :sum-text="sumText"
57
- :summary-method="summaryMethod"
58
- >
24
+ <query-table ref="table" :rows="rows" :cols="cols" :span-method="spanMethod" :selection="selection" :row-key="rowKey" :tree-props="treeProps" :default-expand-all="defaultExpandAll" :no-clear-selection="noClearSelection" :show-summary="showSummary" :sum-text="sumText" :summary-method="summaryMethod">
59
25
  <!-- 多选 -->
60
26
  <el-table-column v-if="multiple" fixed="left" align="center" type="selection" width="55" />
61
27
 
@@ -73,18 +39,7 @@
73
39
 
74
40
  <!-- 自动生成列 -->
75
41
  <template v-for="(col, i) in columns">
76
- <el-table-column
77
- v-if="col.show"
78
- :key="i"
79
- :prop="col.name"
80
- :width="col.width"
81
- :sortable="col.sortable"
82
- :type="col.type"
83
- :fixed="col.fixed"
84
- :align="col.align"
85
- :header-align="col.headerAlign"
86
- :show-overflow-tooltip="col.showOverflowTooltip"
87
- >
42
+ <el-table-column v-if="col.show" :key="i" :prop="col.name" :width="col.width" :sortable="col.sortable" :type="col.type" :fixed="col.fixed" :align="col.align" :header-align="col.headerAlign" :show-overflow-tooltip="col.showOverflowTooltip">
88
43
  <!--自定义头-->
89
44
  <template v-slot:header>
90
45
  <slot :name="`col-${col.name}-header`">
@@ -114,16 +69,7 @@
114
69
  </section>
115
70
 
116
71
  <!--footer-->
117
- <query-footer
118
- v-if="!noFooter"
119
- v-model="page"
120
- :page-sizes="pageSizes"
121
- :total="total"
122
- :columns.sync="columns"
123
- :no-select-column="noSelectColumn"
124
- :no-search-button-icon="noSearchButtonIcon"
125
- :reverse="footerReverse"
126
- >
72
+ <query-footer v-if="!noFooter" v-model="page" :page-sizes="pageSizes" :total="total" :columns.sync="columns" :no-select-column="noSelectColumn" :no-search-button-icon="noSearchButtonIcon" :reverse="footerReverse">
127
73
  <slot name="footer" :total="total" :selection="selection" :data="data" />
128
74
  </query-footer>
129
75
  <slot />
@@ -133,368 +79,363 @@
133
79
  </section>
134
80
  </template>
135
81
  <script>
136
- import { mapState } from 'vuex'
137
- import def from './default.js'
138
- import QueryHeader from './components/header'
139
- import Querybar from './components/querybar'
140
- import QueryTable from './components/table'
141
- import QueryFooter from './components/footer'
142
- import QueryExport from './components/export'
82
+ import { mapState } from 'vuex'
83
+ import def from './default.js'
84
+ import QueryHeader from './components/header'
85
+ import Querybar from './components/querybar'
86
+ import QueryTable from './components/table'
87
+ import QueryFooter from './components/footer'
88
+ import QueryExport from './components/export'
143
89
 
144
- export default {
145
- name: 'List',
146
- components: { QueryHeader, Querybar, QueryTable, QueryFooter, QueryExport },
147
- data() {
148
- return {
149
- loading_: false,
150
- fullscreen: false,
151
- // 分页数据
152
- page: {
153
- index: 1,
154
- size: this.pageSizes[0],
155
- sort: []
156
- },
157
- // 数据列表
158
- rows: [],
159
- // 扩展数据
160
- data: '',
161
- // 总数量
162
- total: 0,
163
- selection: [],
164
- showExport: false,
165
- columns: []
166
- }
167
- },
168
- props: {
169
- /** 标题 */
170
- title: String,
171
- /** 图标 */
172
- icon: String,
173
- // 查询方法
174
- action: {
175
- type: Function,
176
- required: true
177
- },
178
- /** 查询表单输入框宽度 */
179
- inputWidth: String,
180
- // 模型
181
- model: Object,
182
- /** 模型验证规则 */
183
- rules: Object,
184
- /** 高级查询 */
185
- advanced: Object,
186
- // 列数组
187
- cols: {
188
- type: Array,
189
- default() {
190
- return []
191
- }
192
- },
193
- /** 多选 */
194
- multiple: Boolean,
195
- /** 显示序号 */
196
- showNo: {
197
- type: Boolean,
198
- default: true
199
- },
200
- /** 不显示操作列 */
201
- noOperation: Boolean,
202
- /** 操作列宽度 */
203
- operationWidth: [String, Number],
204
- /** 不显示选择列按钮 */
205
- noSelectColumn: Boolean,
206
- /** 不显示查询栏 */
207
- noQuerybar: Boolean,
208
- /** 不显示全屏按钮 */
209
- noFullscreen: Boolean,
210
- /** 不显示刷新按钮 */
211
- noRefresh: Boolean,
212
- /** 不显示头部 */
213
- noHeader: Boolean,
214
- /** 不显示底部 */
215
- noFooter: Boolean,
216
- /** 不包含搜索功能 */
217
- noSearch: Boolean,
218
- /** 不显示查询按钮图标 */
219
- noSearchButtonIcon: Boolean,
220
- /**不显示重置按钮 */
221
- noReset: Boolean,
222
- /** 底部反转 */
223
- footerReverse: Boolean,
224
- /** 合并行列的方法 */
225
- spanMethod: Function,
226
- /** 加载中动画 */
227
- loading: Boolean,
228
- /** 加载中文本 */
229
- loadingText: String,
230
- /** 创建后执行一次查询 */
231
- queryOnCreated: {
232
- type: Boolean,
233
- default: true
234
- },
235
- /**导出配置 */
236
- exportOptions: Object,
237
- /** 页数选择项 */
238
- pageSizes: {
239
- type: Array,
240
- default() {
241
- return [10, 15, 50, 100]
90
+ export default {
91
+ name: 'List',
92
+ components: { QueryHeader, Querybar, QueryTable, QueryFooter, QueryExport },
93
+ data() {
94
+ return {
95
+ loading_: false,
96
+ fullscreen: false,
97
+ // 分页数据
98
+ page: {
99
+ index: 1,
100
+ size: this.pageSizes[0],
101
+ sort: []
102
+ },
103
+ // 数据列表
104
+ rows: [],
105
+ // 扩展数据
106
+ data: '',
107
+ // 总数量
108
+ total: 0,
109
+ selection: [],
110
+ showExport: false,
111
+ columns: []
242
112
  }
243
113
  },
244
- /**渲染嵌套数据的配置选项 */
245
- treeProps: Object,
246
- /*行数据的 Key,用来优化 Table 的渲染;
114
+ props: {
115
+ /** 标题 */
116
+ title: String,
117
+ /** 图标 */
118
+ icon: String,
119
+ // 查询方法
120
+ action: {
121
+ type: Function,
122
+ required: true
123
+ },
124
+ /** 查询表单输入框宽度 */
125
+ inputWidth: String,
126
+ // 模型
127
+ model: Object,
128
+ /** 模型验证规则 */
129
+ rules: Object,
130
+ /** 高级查询 */
131
+ advanced: Object,
132
+ // 列数组
133
+ cols: {
134
+ type: Array,
135
+ default() {
136
+ return []
137
+ }
138
+ },
139
+ /** 多选 */
140
+ multiple: Boolean,
141
+ /** 显示序号 */
142
+ showNo: {
143
+ type: Boolean,
144
+ default: true
145
+ },
146
+ /** 不显示操作列 */
147
+ noOperation: Boolean,
148
+ /** 操作列宽度 */
149
+ operationWidth: [String, Number],
150
+ /** 不显示选择列按钮 */
151
+ noSelectColumn: Boolean,
152
+ /** 不显示查询栏 */
153
+ noQuerybar: Boolean,
154
+ /** 不显示全屏按钮 */
155
+ noFullscreen: Boolean,
156
+ /** 不显示刷新按钮 */
157
+ noRefresh: Boolean,
158
+ /** 不显示头部 */
159
+ noHeader: Boolean,
160
+ /** 不显示底部 */
161
+ noFooter: Boolean,
162
+ /** 不包含搜索功能 */
163
+ noSearch: Boolean,
164
+ /** 不显示查询按钮图标 */
165
+ noSearchButtonIcon: Boolean,
166
+ /**不显示重置按钮 */
167
+ noReset: Boolean,
168
+ /** 底部反转 */
169
+ footerReverse: Boolean,
170
+ /** 合并行列的方法 */
171
+ spanMethod: Function,
172
+ /** 加载中动画 */
173
+ loading: Boolean,
174
+ /** 加载中文本 */
175
+ loadingText: String,
176
+ /** 创建后执行一次查询 */
177
+ queryOnCreated: {
178
+ type: Boolean,
179
+ default: true
180
+ },
181
+ /**导出配置 */
182
+ exportOptions: Object,
183
+ /** 页数选择项 */
184
+ pageSizes: {
185
+ type: Array,
186
+ default() {
187
+ return [10, 15, 50, 100]
188
+ }
189
+ },
190
+ /**渲染嵌套数据的配置选项 */
191
+ treeProps: Object,
192
+ /*行数据的 Key,用来优化 Table 的渲染;
247
193
  在使用 reserve-selection 功能与显示树形数据时,该属性是必填的。
248
194
  类型为 String 时,支持多层访问:user.info.id,但不支持 user.info[0].id,此种情况请使用 Function。*/
249
- rowKey: [Function, String],
250
- /*是否懒加载子节点数据*/
251
- lazy: Boolean,
252
- /**加载子节点数据的函数,lazy 为 true 时生效,函数第二个参数包含了节点的层级信息 */
253
- load: Function,
254
- /**是否默认展开所有行,当 Table 包含展开行存在或者为树形表格时有效 */
255
- defaultExpandAll: Boolean,
256
- /**当刷新时不清空已选择数据 */
257
- noClearSelection: Boolean,
258
- /**是否显示合计行 */
259
- showSummary: Boolean,
260
- /**合计行文本 */
261
- sumText: String,
262
- /**合计行自定义逻辑方法 */
263
- summaryMethod: Function
264
- },
265
- computed: {
266
- ...mapState('app/loading', { loadingText_: 'text', loadingBackground: 'background', loadingSpinner: 'spinner' }),
267
- ...mapState('app/config', { serialNumberName: s => s.component.list.serialNumberName }),
268
- class_() {
269
- return ['nm-list', this.fontSize ? `nm-list-${this.fontSize}` : '', this.fullscreen ? 'fullscreen' : '']
270
- },
271
- showLoading() {
272
- return this.loading || this.loading_
195
+ rowKey: [Function, String],
196
+ /*是否懒加载子节点数据*/
197
+ lazy: Boolean,
198
+ /**加载子节点数据的函数,lazy 为 true 时生效,函数第二个参数包含了节点的层级信息 */
199
+ load: Function,
200
+ /**是否默认展开所有行,当 Table 包含展开行存在或者为树形表格时有效 */
201
+ defaultExpandAll: Boolean,
202
+ /**当刷新时不清空已选择数据 */
203
+ noClearSelection: Boolean,
204
+ /**是否显示合计行 */
205
+ showSummary: Boolean,
206
+ /**合计行文本 */
207
+ sumText: String,
208
+ /**合计行自定义逻辑方法 */
209
+ summaryMethod: Function
273
210
  },
274
- exportOptions_() {
275
- return this.$_.assignIn({ title: this.title }, def.exportOptions, this.exportOptions)
276
- },
277
- exportAdvancedEnabled() {
278
- return this.exportOptions_.enabled && this.exportOptions_.advanced
279
- }
280
- },
281
- methods: {
282
- /** 查询方法 */
283
- query() {
284
- if (this.$refs.querybar) {
285
- this.$refs.querybar.validate(() => {
286
- this.doQuery()
287
- })
288
- } else {
289
- this.doQuery()
211
+ computed: {
212
+ ...mapState('app/loading', { loadingText_: 'text', loadingBackground: 'background', loadingSpinner: 'spinner' }),
213
+ ...mapState('app/config', { serialNumberName: s => s.component.list.serialNumberName }),
214
+ class_() {
215
+ return ['nm-list', this.fontSize ? `nm-list-${this.fontSize}` : '', this.fullscreen ? 'fullscreen' : '']
216
+ },
217
+ showLoading() {
218
+ return this.loading || this.loading_
219
+ },
220
+ exportOptions_() {
221
+ return this.$_.assignIn({ title: this.title }, def.exportOptions, this.exportOptions)
222
+ },
223
+ exportAdvancedEnabled() {
224
+ return this.exportOptions_.enabled && this.exportOptions_.advanced
290
225
  }
291
226
  },
292
- doQuery() {
293
- if (this.loading_) {
294
- return
295
- }
227
+ methods: {
228
+ /** 查询方法 */
229
+ query() {
230
+ if (this.$refs.querybar) {
231
+ this.$refs.querybar.validate(() => {
232
+ this.doQuery()
233
+ })
234
+ } else {
235
+ this.doQuery()
236
+ }
237
+ },
238
+ doQuery() {
239
+ if (this.loading_) {
240
+ return
241
+ }
242
+ this.loading_ = true
243
+ let fullModel = Object.assign({}, this.model)
244
+ // 设置分页
245
+ fullModel.page = this.page
246
+ this.action(fullModel)
247
+ .then(data => {
248
+ this.rows = data.rows
249
+ this.total = data.total
250
+ this.data = data.data
251
+ // 回到顶部
252
+ this.$refs.table.scrollTop()
253
+ // 重新绘制布局
254
+ this.$refs.table.doLayout()
255
+ this.loading_ = false
256
+ if (this.noClearSelection) {
257
+ this.$nextTick(() => {
258
+ this.rows.forEach(m => {
259
+ if (!this.selection.every(n => n.id !== m.id)) {
260
+ this.$refs.table.toggleRowSelection(m, true)
261
+ }
262
+ })
263
+ })
264
+ }
265
+ // 查询事件
266
+ this.$emit('query', data)
267
+ })
268
+ .catch(() => {
269
+ this.loading_ = false
270
+ })
271
+ },
272
+ export_(exportModel) {
273
+ if (!exportModel.columns || exportModel.columns.length < 1) {
274
+ this._error('请选择要导出的列')
275
+ return
276
+ }
277
+ if (!this.exportOptions_.action) {
278
+ this._error('未设置导出方法')
279
+ return
280
+ }
296
281
 
297
- this.loading_ = true
298
- let fullModel = Object.assign({}, this.model)
282
+ this._openLoading('正在导出数据,请稍后...')
299
283
 
300
- // 设置分页
301
- fullModel.page = this.page
284
+ let model = Object.assign({}, this.model)
302
285
 
303
- this.action(fullModel)
304
- .then(data => {
305
- this.rows = data.rows
306
- this.total = data.total
307
- this.data = data.data
286
+ // 设置分页
287
+ model.page = this.page
288
+ //设置导出信息
289
+ model.export = exportModel
290
+ this.exportOptions_
291
+ .action(model)
292
+ .then(() => {
293
+ this._closeLoading()
294
+ })
295
+ .catch(() => {
296
+ this._closeLoading()
297
+ })
298
+ },
299
+ /** 刷新 */
300
+ refresh(goFirst) {
301
+ if (goFirst) this.page.index = 1
302
+ this.query()
303
+ },
304
+ /** 查询表单重置 */
305
+ reset() {
306
+ this.$refs.querybar.reset()
307
+ },
308
+ /** 获取序号 */
309
+ getNo(index) {
310
+ return (this.page.index - 1) * this.page.size + index + 1
311
+ },
312
+ // 重新绘制布局
313
+ doLayout() {
314
+ this.$refs.table.doLayout()
315
+ },
316
+ /** 全屏切换 */
317
+ triggerFullscreen() {
318
+ this.fullscreen ? this.closeFullscreen() : this.openFullscreen()
319
+ this.doLayout()
320
+ },
321
+ /** 开启全屏 */
322
+ openFullscreen() {
323
+ this.fullscreen = true
324
+ this.$emit('fullscreen-change', this.fullscreen)
325
+ },
326
+ /** 关闭全屏 */
327
+ closeFullscreen() {
328
+ this.fullscreen = false
329
+ this.$emit('fullscreen-change', this.fullscreen)
330
+ },
331
+ /** 切换导出对话框显示状态 */
332
+ triggerExport() {
333
+ let exp = this.exportOptions_
334
+ //未启用高级,直接执行导出操作
335
+ if (!exp.advanced) {
336
+ const { format, mode, showTitle, showCopyright, showColName, showExportDate, showExportPeople } = exp
308
337
 
309
- // 回到顶部
310
- this.$refs.table.scrollTop()
311
- // 重新绘制布局
312
- this.$refs.table.doLayout()
313
- this.loading_ = false
338
+ let model = { format, mode, showTitle, showCopyright, showColName, showExportDate, showExportPeople }
339
+ model.title = this.title
340
+ model.fileName = `${this.title}_${this.$dayjs().format('YYYYMMDDHHmmss')}`
341
+ model.columns = []
314
342
 
315
- if (this.noClearSelection) {
316
- this.$nextTick(() => {
317
- this.rows.forEach(m => {
318
- if (!this.selection.every(n => n.id !== m.id)) {
319
- this.$refs.table.toggleRowSelection(m, true)
320
- }
321
- })
322
- })
323
- }
324
- // 查询事件
325
- this.$emit('query', data)
326
- })
327
- .catch(() => {
328
- this.loading_ = false
329
- })
330
- },
331
- export_(exportModel) {
332
- if (!exportModel.columns || exportModel.columns.length < 1) {
333
- this._error('请选择要导出的列')
334
- return
335
- }
336
- if (!this.exportOptions_.action) {
337
- this._error('未设置导出方法')
338
- return
339
- }
343
+ this.columns.forEach(m => {
344
+ if (m.show) {
345
+ model.columns.push(this.listCol2ExportCol(m))
346
+ }
347
+ })
340
348
 
341
- this._openLoading('正在导出数据,请稍后...')
349
+ this.export_(model)
350
+ }
342
351
 
343
- let model = Object.assign({}, this.model)
352
+ this.showExport ? this.closeExport() : this.openExport()
353
+ },
354
+ /** 打开导出对话框 */
355
+ openExport() {
356
+ this.showExport = true
357
+ this.$emit('export-change', this.showExport)
358
+ },
359
+ closeExport() {
360
+ this.showExport = false
361
+ this.$emit('export-change', this.showExport)
362
+ },
363
+ /** 列表的列转导出的列 */
364
+ listCol2ExportCol(m) {
365
+ let col = {
366
+ name: m.name,
367
+ label: m.label,
368
+ align: m.align,
369
+ format: m.format,
370
+ width: 0
371
+ }
344
372
 
345
- // 设置分页
346
- model.page = this.page
347
- //设置导出信息
348
- model.export = exportModel
349
- this.exportOptions_
350
- .action(model)
351
- .then(() => {
352
- this._closeLoading()
353
- })
354
- .catch(() => {
355
- this._closeLoading()
356
- })
357
- },
358
- /** 刷新 */
359
- refresh(goFirst) {
360
- if (goFirst) this.page.index = 1
361
- this.query()
362
- },
363
- /** 查询表单重置 */
364
- reset() {
365
- this.$refs.querybar.reset()
366
- },
367
- /** 获取序号 */
368
- getNo(index) {
369
- return (this.page.index - 1) * this.page.size + index + 1
370
- },
371
- // 重新绘制布局
372
- doLayout() {
373
- this.$refs.table.doLayout()
374
- },
375
- /** 全屏切换 */
376
- triggerFullscreen() {
377
- this.fullscreen ? this.closeFullscreen() : this.openFullscreen()
378
- this.doLayout()
379
- },
380
- /** 开启全屏 */
381
- openFullscreen() {
382
- this.fullscreen = true
383
- this.$emit('fullscreen-change', this.fullscreen)
384
- },
385
- /** 关闭全屏 */
386
- closeFullscreen() {
387
- this.fullscreen = false
388
- this.$emit('fullscreen-change', this.fullscreen)
389
- },
390
- /** 切换导出对话框显示状态 */
391
- triggerExport() {
392
- let exp = this.exportOptions_
393
- //未启用高级,直接执行导出操作
394
- if (!exp.advanced) {
395
- const { format, mode, showTitle, showCopyright, showColName, showExportDate, showExportPeople } = exp
373
+ //设置导出专属vip配置~
374
+ if (m.export.width > 0) {
375
+ col.width = m.export.width
376
+ } else {
377
+ let w = parseInt(m.width)
378
+ if (w) col.width = w / 10 + 4 //默认取列表页中设置的宽度,该宽度与导出的Excel的列宽度比例大概10:1,所以这里进行一下转换, 转换后在+4,保可以保证有内边距,不会挤在一起
379
+ }
380
+ return col
381
+ },
382
+ /** 查询栏重置事件 */
383
+ onQueryBarReset() {
384
+ this.$refs.table.clearSort()
385
+ this.$emit('reset')
386
+ },
387
+ /** 删除行 */
388
+ removeRow(row) {
389
+ for (let i = 0; i < this.rows.length; i++) {
390
+ if (this.rows[i] === row) {
391
+ this.rows.splice(i, 1)
392
+ this.total--
393
+ break
394
+ }
395
+ }
396
+ },
397
+ /** 格式化 */
398
+ format(row, col) {
399
+ const val = row[col.name]
400
+ if (!col.format) return val
396
401
 
397
- let model = { format, mode, showTitle, showCopyright, showColName, showExportDate, showExportPeople }
398
- model.title = this.title
399
- model.fileName = `${this.title}_${this.$dayjs().format('YYYYMMDDHHmmss')}`
400
- model.columns = []
402
+ const format = col.format
401
403
 
402
- this.columns.forEach(m => {
403
- if (m.show) {
404
- model.columns.push(this.listCol2ExportCol(m))
405
- }
406
- })
404
+ //性别
405
+ if (format === 'sex') {
406
+ return val === 0 ? '男' : '女'
407
+ }
407
408
 
408
- this.export_(model)
409
- }
409
+ //日期
410
+ if (format === 'date') {
411
+ return this.$dayjs(val).format('YYYY-MM-DD')
412
+ }
410
413
 
411
- this.showExport ? this.closeExport() : this.openExport()
412
- },
413
- /** 打开导出对话框 */
414
- openExport() {
415
- this.showExport = true
416
- this.$emit('export-change', this.showExport)
417
- },
418
- closeExport() {
419
- this.showExport = false
420
- this.$emit('export-change', this.showExport)
421
- },
422
- /** 列表的列转导出的列 */
423
- listCol2ExportCol(m) {
424
- let col = {
425
- name: m.name,
426
- label: m.label,
427
- align: m.align,
428
- format: m.format,
429
- width: 0
430
- }
414
+ //自定义函数
415
+ if (typeof format === 'function') {
416
+ return format(val, row)
417
+ }
431
418
 
432
- //设置导出专属vip配置~
433
- if (m.export.width > 0) {
434
- col.width = m.export.width
435
- } else {
436
- let w = parseInt(m.width)
437
- if (w) col.width = w / 10 + 4 //默认取列表页中设置的宽度,该宽度与导出的Excel的列宽度比例大概10:1,所以这里进行一下转换, 转换后在+4,保可以保证有内边距,不会挤在一起
419
+ //日期
420
+ return this.$dayjs(val).format(col.format)
438
421
  }
439
- return col
440
- },
441
- /** 查询栏重置事件 */
442
- onQueryBarReset() {
443
- this.$refs.table.clearSort()
444
- this.$emit('reset')
445
422
  },
446
- /** 删除行 */
447
- removeRow(row) {
448
- for (let i = 0; i < this.rows.length; i++) {
449
- if (this.rows[i] === row) {
450
- this.rows.splice(i, 1)
451
- this.total--
452
- break
423
+ mounted() {
424
+ this.$nextTick(() => {
425
+ if (this.queryOnCreated) {
426
+ this.query()
453
427
  }
454
- }
428
+ })
455
429
  },
456
- /** 格式化 */
457
- format(row, col) {
458
- const val = row[col.name]
459
- if (!col.format) return val
460
-
461
- const format = col.format
462
-
463
- //性别
464
- if (format === 'sex') {
465
- return val === 0 ? '男' : '女'
466
- }
467
-
468
- //日期
469
- if (format === 'date') {
470
- return this.$dayjs(val).format('YYYY-MM-DD')
471
- }
472
-
473
- //自定义函数
474
- if (typeof format === 'function') {
475
- return format(val, row)
476
- }
477
-
478
- //日期
479
- return this.$dayjs(val).format(col.format)
480
- }
481
- },
482
- mounted() {
483
- this.$nextTick(() => {
484
- if (this.queryOnCreated) {
485
- this.query()
430
+ created() {
431
+ if (this.cols) {
432
+ this.columns = this.cols.map(col => {
433
+ return this.$_.assignIn({}, def.columnInfo, col)
434
+ })
486
435
  }
487
- })
488
- },
489
- created() {
490
- if (this.cols) {
491
- this.columns = this.cols.map(col => {
492
- return this.$_.assignIn({}, def.columnInfo, col)
493
- })
436
+ },
437
+ activated() {
438
+ this.doLayout()
494
439
  }
495
- },
496
- activated() {
497
- this.doLayout()
498
440
  }
499
- }
500
441
  </script>