@ddwl/ddwl-ui 1.2.2 → 1.2.3-beta.1

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 (139) hide show
  1. package/dist/index.html +1 -0
  2. package/dist/js/app.js +1 -0
  3. package/dist/js/chunk-vendors.js +17 -0
  4. package/dist/static/css/app.2ec4a629.css +1 -0
  5. package/package.json +4 -5
  6. package/src/lib/install/index.js +0 -14
  7. package/src/lib/slots/buttonGroup.vue +0 -113
  8. package/src/lib/slots/dict.vue +0 -46
  9. package/src/lib/slots/file.vue +0 -36
  10. package/src/lib/slots/icon.vue +0 -74
  11. package/src/lib/slots/index.js +0 -11
  12. package/src/lib/theme/alert.css +0 -1
  13. package/src/lib/theme/aside.css +0 -1
  14. package/src/lib/theme/autocomplete.css +0 -1
  15. package/src/lib/theme/avatar.css +0 -1
  16. package/src/lib/theme/backtop.css +0 -1
  17. package/src/lib/theme/badge.css +0 -1
  18. package/src/lib/theme/base.css +0 -1
  19. package/src/lib/theme/breadcrumb-item.css +0 -0
  20. package/src/lib/theme/breadcrumb.css +0 -1
  21. package/src/lib/theme/button-group.css +0 -0
  22. package/src/lib/theme/button.css +0 -1
  23. package/src/lib/theme/calendar.css +0 -1
  24. package/src/lib/theme/card.css +0 -1
  25. package/src/lib/theme/carousel-item.css +0 -1
  26. package/src/lib/theme/carousel.css +0 -1
  27. package/src/lib/theme/cascader-panel.css +0 -1
  28. package/src/lib/theme/cascader.css +0 -1
  29. package/src/lib/theme/checkbox-button.css +0 -0
  30. package/src/lib/theme/checkbox-group.css +0 -0
  31. package/src/lib/theme/checkbox.css +0 -1
  32. package/src/lib/theme/col.css +0 -1
  33. package/src/lib/theme/collapse-item.css +0 -0
  34. package/src/lib/theme/collapse.css +0 -1
  35. package/src/lib/theme/color-picker.css +0 -1
  36. package/src/lib/theme/container.css +0 -1
  37. package/src/lib/theme/date-picker.css +0 -1
  38. package/src/lib/theme/descriptions-item.css +0 -1
  39. package/src/lib/theme/descriptions.css +0 -1
  40. package/src/lib/theme/dialog.css +0 -1
  41. package/src/lib/theme/display.css +0 -1
  42. package/src/lib/theme/divider.css +0 -1
  43. package/src/lib/theme/drawer.css +0 -1
  44. package/src/lib/theme/dropdown-item.css +0 -0
  45. package/src/lib/theme/dropdown-menu.css +0 -0
  46. package/src/lib/theme/dropdown.css +0 -1
  47. package/src/lib/theme/empty.css +0 -1
  48. package/src/lib/theme/footer.css +0 -1
  49. package/src/lib/theme/form-item.css +0 -0
  50. package/src/lib/theme/form.css +0 -1
  51. package/src/lib/theme/header.css +0 -1
  52. package/src/lib/theme/icon.css +0 -1
  53. package/src/lib/theme/image.css +0 -1
  54. package/src/lib/theme/index.css +0 -1
  55. package/src/lib/theme/infinite-scroll.css +0 -0
  56. package/src/lib/theme/infiniteScroll.css +0 -0
  57. package/src/lib/theme/input-number.css +0 -1
  58. package/src/lib/theme/input.css +0 -1
  59. package/src/lib/theme/link.css +0 -1
  60. package/src/lib/theme/loading.css +0 -1
  61. package/src/lib/theme/main.css +0 -1
  62. package/src/lib/theme/menu-item-group.css +0 -0
  63. package/src/lib/theme/menu-item.css +0 -0
  64. package/src/lib/theme/menu.css +0 -1
  65. package/src/lib/theme/message-box.css +0 -1
  66. package/src/lib/theme/message.css +0 -1
  67. package/src/lib/theme/notification.css +0 -1
  68. package/src/lib/theme/option-group.css +0 -1
  69. package/src/lib/theme/option.css +0 -1
  70. package/src/lib/theme/page-header.css +0 -1
  71. package/src/lib/theme/pagination.css +0 -1
  72. package/src/lib/theme/popconfirm.css +0 -1
  73. package/src/lib/theme/popover.css +0 -1
  74. package/src/lib/theme/popper.css +0 -1
  75. package/src/lib/theme/progress.css +0 -1
  76. package/src/lib/theme/radio-button.css +0 -1
  77. package/src/lib/theme/radio-group.css +0 -1
  78. package/src/lib/theme/radio.css +0 -1
  79. package/src/lib/theme/rate.css +0 -1
  80. package/src/lib/theme/reset.css +0 -1
  81. package/src/lib/theme/result.css +0 -1
  82. package/src/lib/theme/row.css +0 -1
  83. package/src/lib/theme/scrollbar.css +0 -1
  84. package/src/lib/theme/select-dropdown.css +0 -1
  85. package/src/lib/theme/select.css +0 -1
  86. package/src/lib/theme/skeleton-item.css +0 -1
  87. package/src/lib/theme/skeleton.css +0 -1
  88. package/src/lib/theme/slider.css +0 -1
  89. package/src/lib/theme/spinner.css +0 -1
  90. package/src/lib/theme/step.css +0 -1
  91. package/src/lib/theme/steps.css +0 -1
  92. package/src/lib/theme/submenu.css +0 -0
  93. package/src/lib/theme/switch.css +0 -1
  94. package/src/lib/theme/tab-pane.css +0 -0
  95. package/src/lib/theme/table-column.css +0 -1
  96. package/src/lib/theme/table.css +0 -1
  97. package/src/lib/theme/tabs.css +0 -1
  98. package/src/lib/theme/tag.css +0 -1
  99. package/src/lib/theme/time-picker.css +0 -1
  100. package/src/lib/theme/time-select.css +0 -1
  101. package/src/lib/theme/timeline-item.css +0 -1
  102. package/src/lib/theme/timeline.css +0 -1
  103. package/src/lib/theme/tooltip.css +0 -1
  104. package/src/lib/theme/transfer.css +0 -1
  105. package/src/lib/theme/tree.css +0 -1
  106. package/src/lib/theme/upload.css +0 -1
  107. package/src/main.js +0 -70
  108. package/src/packages/button/index.vue +0 -36
  109. package/src/packages/checkbox-group/index.vue +0 -57
  110. package/src/packages/descriptions/index.vue +0 -124
  111. package/src/packages/dialog/index.vue +0 -172
  112. package/src/packages/dialog-confirm/index.vue +0 -99
  113. package/src/packages/drawer/index.vue +0 -136
  114. package/src/packages/file-preview/index.vue +0 -275
  115. package/src/packages/file-preview/static/audio.png +0 -0
  116. package/src/packages/file-preview/static/video.png +0 -0
  117. package/src/packages/filter-tree/index.vue +0 -292
  118. package/src/packages/form/index.vue +0 -149
  119. package/src/packages/form-item/index.vue +0 -199
  120. package/src/packages/import-file/index.vue +0 -173
  121. package/src/packages/menu/index.vue +0 -66
  122. package/src/packages/menu/menuItem.vue +0 -90
  123. package/src/packages/popconfirm/index.vue +0 -39
  124. package/src/packages/radio-group/index.vue +0 -57
  125. package/src/packages/render/index.vue +0 -14
  126. package/src/packages/search-form/index.vue +0 -257
  127. package/src/packages/search-input/index.vue +0 -68
  128. package/src/packages/search-table/index.vue +0 -93
  129. package/src/packages/select/index.vue +0 -74
  130. package/src/packages/svg-icon/index.vue +0 -43
  131. package/src/packages/table/drag.png +0 -0
  132. package/src/packages/table/index.vue +0 -453
  133. package/src/packages/upload/index.vue +0 -350
  134. package/src/utils/constant.js +0 -4
  135. package/src/utils/index.js +0 -77
  136. package/src/utils/treeLib.js +0 -190
  137. /package/{src/lib/theme/fonts/element-icons.ttf → dist/static/fonts/element-icons.f1a45d74.ttf} +0 -0
  138. /package/{src/lib/theme/fonts/element-icons.woff → dist/static/fonts/element-icons.ff18efd1.woff} +0 -0
  139. /package/{src/assets/video-play.jpeg → dist/static/img/video-play.49e933ba.jpeg} +0 -0
@@ -1,453 +0,0 @@
1
- <!-- 表格 -->
2
- <template>
3
- <div
4
- :key="key"
5
- v-loading="loading"
6
- class="d-table"
7
- :class="draggable && 'drag-query-table'"
8
- >
9
- <el-table
10
- ref="table"
11
- :row-key="rowKey"
12
- style="width: 100%"
13
- :data="list"
14
- :border="border"
15
- v-bind="$attrs"
16
- v-on="$listeners"
17
- @select="selectChange"
18
- @select-all="selectAllChange"
19
- @selection-change="selectionChange"
20
- >
21
- <el-table-column
22
- v-if="selection || asyncSelection"
23
- key="selection"
24
- type="selection"
25
- align="center"
26
- width="50"
27
- />
28
- <el-table-column
29
- v-if="index"
30
- key="index"
31
- label="序号"
32
- align="center"
33
- width="55"
34
- >
35
- <template slot-scope="scope">
36
- {{ (pageNum - 1) * pageSize + scope.$index + 1 }}
37
- </template>
38
- </el-table-column>
39
- <el-table-column
40
- v-for="column in visibleColumns"
41
- :key="column.prop"
42
- v-bind="column"
43
- v-on="$listeners"
44
- >
45
- <template slot-scope="scope">
46
- <component
47
- :is="column.component"
48
- v-if="column.component"
49
- v-bind="{ ...scope.row, ...column }"
50
- :row="scope.row"
51
- :index="scope.$index"
52
- />
53
- <column-render
54
- v-else-if="column.render"
55
- :scope="scope"
56
- :render="column.render"
57
- />
58
- <template v-else>
59
- {{ scope.row[column.prop] }}
60
- </template>
61
- </template>
62
- </el-table-column>
63
- <el-table-column
64
- v-if="draggable && rowKey"
65
- label=""
66
- width="55"
67
- align="center"
68
- >
69
- <img
70
- class="table-drag-icon"
71
- src="./drag.png"
72
- >
73
- </el-table-column>
74
- </el-table>
75
- <!-- 分页器 -->
76
- <div
77
- v-if="pagination"
78
- class="d-table-footer"
79
- >
80
- <div>
81
- <slot name="footer" />
82
- </div>
83
- <el-pagination
84
- class="pagination"
85
- :background="background"
86
- :layout="layout"
87
- :total="total"
88
- :page-sizes="pageSizes"
89
- :page-size="pageSize"
90
- :current-page="pageNum"
91
- v-bind="$attrs"
92
- @size-change="handleSizeChange"
93
- @current-change="handleCurrentChange"
94
- />
95
- </div>
96
- </div>
97
- </template>
98
-
99
- <script>
100
- import Sortable from 'sortablejs'
101
- import { cloneDeep } from 'lodash'
102
- import modules from '../../lib/slots'
103
- import ColumnRender from '../render'
104
-
105
- export default {
106
- name: 'DTable',
107
- components: { ...modules, ColumnRender },
108
- props: {
109
- data: {
110
- type: Array,
111
- default: () => []
112
- },
113
- rowKey: {
114
- type: String,
115
- default: ''
116
- },
117
- border: {
118
- type: Boolean,
119
- default: true
120
- },
121
- // request config
122
- requestConfig: {
123
- type: Object,
124
- require: false,
125
- default: () => ({
126
- api: () => {}, // 接口
127
- params: {}, // 默认参数
128
- autoRequest: true, // 是否自动请求
129
- method: null // 自定义请求方法
130
- })
131
- },
132
- layout: {
133
- type: String,
134
- default: 'total, sizes, prev, pager, next, jumper'
135
- },
136
- pageSizes: {
137
- type: Array,
138
- default: () => ([10, 20, 30, 50])
139
- },
140
- background: {
141
- type: Boolean,
142
- default: true
143
- },
144
- // 是否需要分页
145
- pagination: {
146
- default: true,
147
- type: Boolean
148
- },
149
- // 是否拖拽
150
- draggable: {
151
- default: false,
152
- type: Boolean
153
- },
154
- // 是否展示多选框
155
- selection: {
156
- default: false,
157
- type: Boolean
158
- },
159
- // 是否跨页勾选
160
- asyncSelection: {
161
- default: false,
162
- type: Boolean
163
- },
164
- // 默认勾选项,必须设置rowKey
165
- defaultCheckList: {
166
- default: () => [],
167
- type: Array
168
- },
169
- // 是否展示排序列
170
- index: {
171
- default: false,
172
- type: Boolean
173
- },
174
- // 列表项配置
175
- columns: {
176
- default: () => [],
177
- type: Array
178
- },
179
- // 开启静态分页
180
- staticPaging: {
181
- default: false,
182
- type: Boolean
183
- }
184
- },
185
- data () {
186
- return {
187
- pageSize: 10,
188
- pageNum: 1,
189
- total: 0,
190
- loading: false,
191
- checkedList: [],
192
- ids: [],
193
- key: 0,
194
- list: [],
195
- totalList: []
196
- }
197
- },
198
- computed: {
199
- visibleColumns () {
200
- return this.columns.filter(item => !item.hide)
201
- }
202
- },
203
- watch: {
204
- data: {
205
- handler (val) {
206
- if (JSON.stringify(val) === JSON.stringify(this.list)) {
207
- return
208
- }
209
- this.handleRequestData(val)
210
- if (this.draggable) {
211
- this.$nextTick(() => {
212
- this.initSortable()
213
- })
214
- }
215
- },
216
- deep: true,
217
- immediate: true
218
- },
219
- defaultCheckList: {
220
- handler () {
221
- this.handleSelectionData()
222
- },
223
- deep: true
224
- }
225
- },
226
- mounted () {
227
- if (this.draggable && !this.rowKey) {
228
- console.error('[DTable] 请设置正确的 rowKey 用于拖拽排序')
229
- }
230
-
231
- this.checkedList = this.defaultCheckList
232
- // 如果不需要分页器,每页显示条目数设置最大
233
- if (!this.pagination) {
234
- this.pageSize = 9999999
235
- }
236
- // 注册表格拖拽
237
- if (this.draggable) {
238
- this.initSortable()
239
- }
240
- // 是否开启自动请求
241
- if (!this.staticPaging && (this.requestConfig.autoRequest || this.requestConfig.autoRequest === undefined)) {
242
- this.search()
243
- }
244
- },
245
- methods: {
246
- /**
247
- * @description: 表格查询方法包装
248
- * @param {*} param 自定义查询条件
249
- */
250
- async search (param = {}) {
251
- this.loading = true
252
- try {
253
- if (param.pageNum) {
254
- this.pageNum = param.pageNum
255
- }
256
- if (param.pageSize) {
257
- this.pageSize = param.pageSize
258
- }
259
- const { total, data } = await (this.requestConfig.method || this.getData)({
260
- pageSize: this.pageSize,
261
- pageNum: this.pageNum,
262
- ...this.requestConfig.params,
263
- ...param
264
- })
265
- this.total = total
266
- this.handleRequestData(data)
267
- // eslint-disable-next-line no-empty
268
- } catch (e) {}
269
- this.loading = false
270
- },
271
- async getData (params) {
272
- const defaultParams = typeof this.requestConfig.params === 'function' ? this.requestConfig.params() : this.requestConfig.params
273
- const { data } = await this.requestConfig.api({ ...defaultParams, ...params })
274
- this.total = data.total
275
- let listData = data.list || []
276
- if (this.requestConfig.props) {
277
- if (this.requestConfig.props.list === null) {
278
- listData = data
279
- } else if (this.requestConfig.props.list) {
280
- listData = data[this.requestConfig.props.list]
281
- }
282
- }
283
- return {
284
- total: data.total,
285
- data: listData
286
- }
287
- },
288
- /**
289
- * @description: 处理表格接口获取的数据
290
- */
291
- handleRequestData (data) {
292
- if (this.staticPaging) {
293
- this.totalList = cloneDeep(data)
294
- this.total = this.totalList.length
295
- } else {
296
- this.list = cloneDeep(data)
297
- }
298
-
299
- // 静态分页
300
- if (this.staticPaging) {
301
- this.pageNum = 1
302
- this.calcStaticPageData()
303
- return
304
- }
305
-
306
- this.$emit('loaded', this.list)
307
-
308
- // 如果当前页码大于1且当前数据列表为空,自动返回上一页并查询
309
- if (this.list.length === 0 && this.pageNum > 1) {
310
- this.pageNum = this.pageNum - 1
311
- this.search()
312
- return
313
- }
314
- // 跨页勾选逻辑
315
- if (this.asyncSelection || this.selection) {
316
- this.key++
317
- this.handleSelectionData()
318
- }
319
- },
320
- /**
321
- * @description: 处理表格默认勾选
322
- */
323
- handleSelectionData () {
324
- this.checkedList = this.defaultCheckList
325
- this.$refs.table && this.$refs.table.clearSelection()
326
- if (this.checkedList.length) {
327
- const ids = this.checkedList.map(item => item[this.rowKey])
328
- const rows = this.list.filter(item => ids.includes(item[this.rowKey]))
329
- this.$nextTick(() => {
330
- rows.forEach(row => {
331
- this.$refs.table.toggleRowSelection(row, true)
332
- })
333
- })
334
- }
335
- },
336
- calcStaticPageData () {
337
- const _list = JSON.parse(JSON.stringify(this.totalList))
338
- this.list = _list.splice((this.pageNum - 1) * this.pageSize, this.pageSize)
339
- },
340
- handleSizeChange (val) {
341
- this.pageSize = val
342
- this.pageNum = 1
343
- this.staticPaging ? this.calcStaticPageData() : this.search()
344
- this.$emit('page-change', { size: this.pageSize, page: this.pageNum })
345
- },
346
- handleCurrentChange (val) {
347
- this.pageNum = val
348
- this.staticPaging ? this.calcStaticPageData() : this.search()
349
- this.$emit('page-change', { size: this.pageSize, page: this.pageNum })
350
- },
351
- /**
352
- * @description: 勾选改变事件
353
- * @param {Array} list
354
- * @return {Array}
355
- */
356
- selectChange (list, row) {
357
- if (!this.asyncSelection) {
358
- this.$emit('select-change', list)
359
- } else {
360
- if (list.some(i => i[this.rowKey] === row[this.rowKey])) {
361
- this.checkedList.push(row)
362
- } else {
363
- this.checkedList = this.checkedList.filter(item => item[this.rowKey] !== row[this.rowKey])
364
- }
365
- this.$emit('select-change', cloneDeep(this.checkedList))
366
- }
367
- },
368
- selectAllChange (list) {
369
- if (!this.asyncSelection) {
370
- this.$emit('select-change', list)
371
- } else {
372
- if (list.length) {
373
- const checkedKeys = this.checkedList.map(item => item[this.rowKey])
374
- const newData = list.filter(item => !checkedKeys.includes(item[this.rowKey]))
375
- this.checkedList = this.checkedList.concat(newData)
376
- } else {
377
- const listKeys = this.list.map(item => item[this.rowKey])
378
- this.checkedList = this.checkedList.filter(item => !listKeys.includes(item[this.rowKey]))
379
- }
380
- this.$emit('select-change', cloneDeep(this.checkedList))
381
- }
382
- },
383
-
384
- selectionChange () {},
385
- /**
386
- * @description: 清空用户的选择
387
- */
388
- clearSelection () {
389
- this.checkedList = []
390
- this.$refs.table.clearSelection()
391
- },
392
- /**
393
- * @description: 改变给定值的选中状态
394
- * @param {*} value 改变选中状态的值
395
- * @param {*} selected 是否选中
396
- */
397
- toggleAsyncSelection (value, selected = false) {
398
- this.checkedList = this.checkedList.filter(item => item[this.rowKey] !== value)
399
- const data = this.list.find(item => item[this.rowKey] === value)
400
- if (data) {
401
- this.$refs.table.toggleRowSelection(data, selected)
402
- } else {
403
- this.$emit('select-change', this.checkedList)
404
- }
405
- },
406
- /**
407
- * @description: 表格拖拽
408
- */
409
- initSortable () {
410
- const el = this.$refs.table.$el.querySelector('.el-table__body-wrapper > table > tbody')
411
- /* eslint-disable no-new */
412
- new Sortable(el, {
413
- handle: '.table-drag-icon',
414
- onEnd: (evt) => {
415
- // 拖拽后数据位置置换
416
- const data = this.list.splice(evt.oldIndex, 1)[0]
417
- this.list.splice(evt.newIndex, 0, data)
418
-
419
- this.$nextTick(() => {
420
- // 重新初始化table
421
- this.initSortable()
422
- this.handleSelectionData()
423
- this.$emit('drag-change', this.list, evt)
424
- })
425
- }
426
- })
427
- }
428
- }
429
- }
430
- </script>
431
-
432
- <style lang="scss" scoped>
433
- .d-table {
434
- display: flex;
435
- flex-direction: column;
436
- }
437
- .drag-query-table {
438
- :deep(.hover-row) {
439
- td {
440
- background-color: #fff;
441
- }
442
- }
443
- }
444
- .table-drag-icon {
445
- cursor: pointer;
446
- }
447
- .d-table-footer {
448
- display: flex;
449
- align-items: center;
450
- justify-content: space-between;
451
- margin-top: 16px;
452
- }
453
- </style>