lw-cdp-ui 1.2.22 → 1.2.23

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.
@@ -4,6 +4,7 @@ import dayjs from 'dayjs'
4
4
 
5
5
  export default {
6
6
  name: 'lwTable',
7
+
7
8
  // 组件属性定义
8
9
  props: {
9
10
  refName: { type: String, default: 'multipleTableRef' }, // 表格ref名称
@@ -26,7 +27,7 @@ export default {
26
27
  isSetting: { type: Boolean, default: false }, // 是否启用设置功能
27
28
  saveKey: { type: String, default: '' }, // 保存设置的键名
28
29
  orderPage: { type: Boolean, default: false }, // 是否为订单页面
29
- tableSize: { type: String, default: 'large' }, // 表格大小
30
+ tableSize: { type: String, default: 'large' }, // 表格大小
30
31
  loading: { type: Boolean, default: false }, // 加载状态
31
32
  rowSelection: { type: Boolean, default: false }, // 是否可选择行
32
33
  selectedKeys: { type: Array }, // 选中的键值数组
@@ -40,16 +41,14 @@ export default {
40
41
  setup(props, context) {
41
42
  // 表格引用
42
43
  const multipleTable = ref()
43
-
44
+
44
45
  // 获取全局实例
45
- const {
46
- proxy: { $bus, $tool }
47
- } = getCurrentInstance()
46
+ const { proxy: { $bus, $tool } } = getCurrentInstance()
48
47
 
49
48
  // 全屏相关状态
50
49
  const { isFullscreen, toggle: toggleFullScreen } = useFullscreen()
51
50
 
52
- // 响应式状态数据
51
+ // 响应式状态
53
52
  const state = reactive({
54
53
  dialogVisible: false, // 对话框可见性
55
54
  tableSettingTitle: '选择字段', // 表格设置标题
@@ -91,14 +90,13 @@ export default {
91
90
 
92
91
  // 组件挂载前
93
92
  onBeforeMount(async () => {
94
- // 监听窗口大小变化,处理全屏状态
93
+ // 监听窗口大小变化
95
94
  window.addEventListener('resize', () => {
96
- let isFull =
97
- document.mozFullScreen ||
98
- document.fullScreen ||
99
- document.webkitIsFullScreen ||
100
- document.webkitRequestFullScreen ||
101
- document.mozRequestFullScreen ||
95
+ let isFull = document.mozFullScreen ||
96
+ document.fullScreen ||
97
+ document.webkitIsFullScreen ||
98
+ document.webkitRequestFullScreen ||
99
+ document.mozRequestFullScreen ||
102
100
  document.msFullscreenEnabled
103
101
  if (isFull === undefined) {
104
102
  isFull = false
@@ -110,213 +108,93 @@ export default {
110
108
  })
111
109
 
112
110
  // 监听表格列变化
113
- watch(
114
- () => props.tableColumns,
115
- (newVal) => {
116
- filterData()
117
- },
118
- { deep: true, immediate: true }
119
- )
111
+ watch(() => props.tableColumns, (newVal) => {
112
+ filterData()
113
+ }, { deep: true, immediate: true })
120
114
 
121
- // 选择相关的响应式引用
115
+ // 选择相关的响应式引用
122
116
  const selectedKeysForm = ref([])
123
117
  const selectGoodsDatas = ref([])
124
118
  const selectAllGoods = ref([])
125
119
 
126
120
  // 监听表格数据变化
127
- watch(
128
- () => props.tableData,
129
- (newVal) => {
130
- // 合并并去重数据
131
- const allArr = [...newVal, ...selectAllGoods.value]
132
- const allObj = {}
133
- const newAllArr = allArr.reduce((cur, next) => {
134
- allObj[next[props.rowKey]] ? '' : (allObj[next[props.rowKey]] = true && cur.push(next))
135
- return cur
136
- }, [])
137
- selectAllGoods.value = newAllArr || []
138
- },
139
- { deep: true, immediate: true }
140
- )
121
+ watch(() => props.tableData, (newVal) => {
122
+ // 合并并去重数据
123
+ const allArr = [...newVal, ...selectAllGoods.value]
124
+ const allObj = {}
125
+ const newAllArr = allArr.reduce((cur, next) => {
126
+ allObj[next[props.rowKey]] ? '' : (allObj[next[props.rowKey]] = true && cur.push(next))
127
+ return cur
128
+ }, [])
129
+ selectAllGoods.value = newAllArr || []
130
+ }, { deep: true, immediate: true })
141
131
 
142
132
  // 监听选中键变化
143
- watch(
144
- () => props.selectedKeys,
145
- (newVal) => {
146
- selectedKeysForm.value = newVal
147
- selectGoodsDatas.value = []
148
-
149
- if (selectAllGoods.value.length && !!newVal) {
150
- // 过滤并合并选中数据
151
- const data = selectAllGoods.value.filter((item) => {
152
- return newVal.includes(item[props.rowKey])
153
- })
154
- const arr = [...data, ...selectGoodsDatas.value]
155
- const obj = {}
156
- const newArr = arr.reduce((cur, next) => {
157
- obj[next[props.rowKey]] ? '' : (obj[next[props.rowKey]] = true && cur.push(next))
158
- return cur
159
- }, [])
160
- selectGoodsDatas.value = newArr || []
161
- context.emit('update:selectDatas', newArr)
162
- }
163
- },
164
- { deep: true, immediate: true }
165
- )
133
+ watch(() => props.selectedKeys, (newVal) => {
134
+ selectedKeysForm.value = newVal
135
+ selectGoodsDatas.value = []
136
+
137
+ if (selectAllGoods.value.length && !!newVal) {
138
+ // 过滤并合并选中数据
139
+ const data = selectAllGoods.value.filter((item) => {
140
+ return newVal.includes(item[props.rowKey])
141
+ })
142
+ const arr = [...data, ...selectGoodsDatas.value]
143
+ const obj = {}
144
+ const newArr = arr.reduce((cur, next) => {
145
+ obj[next[props.rowKey]] ? '' : (obj[next[props.rowKey]] = true && cur.push(next))
146
+ return cur
147
+ }, [])
148
+ selectGoodsDatas.value = newArr || []
149
+ context.emit('update:selectDatas', newArr)
150
+ }
151
+ }, { deep: true, immediate: true })
166
152
 
167
- // 拖拽处理函数
153
+ // 表格功能方法
168
154
  const handleChange = (currentData) => {
169
155
  context.emit('draggable', currentData)
170
156
  }
171
157
 
172
- // 选择变化处理函数
173
158
  const handleSelectionChange = (val) => {
174
159
  context.emit('multipleSelection', val)
175
160
  }
176
161
 
177
- // 当前项变化处理函数
178
162
  const handleCurrentChange = (val) => {
179
163
  context.emit('currentChange', val)
180
164
  }
181
165
 
182
- // 分页大小变化处理函数
183
166
  const sizeChange = (val) => {
184
167
  props.searchParams.size = val
185
168
  context.emit('getTableData')
186
169
  }
187
170
 
188
- // 页码变化处理函数
189
171
  const currentChange = (page) => {
190
172
  props.searchParams.page = page - 1
191
173
  context.emit('getTableData', props.searchParams.page)
192
174
  }
193
175
 
194
- // 刷新处理函数
195
176
  const refresh = () => {
196
177
  currentChange(1)
197
178
  }
198
179
 
199
- // 切换行选择状态
180
+ // 表格行选择方法
200
181
  const toggleRowChange = (row, status) => {
201
182
  multipleTable.value.toggleRowSelection(row, status)
202
183
  }
203
184
 
204
- // 清除表格选择
205
- const clearTableSelection = (row, status) => {
185
+ const clearTableSelection = () => {
206
186
  multipleTable.value.clearSelection()
207
187
  }
208
188
 
209
- // 允许拖拽放置判断
210
- const allowDrop = (draggingNode, dropNode, type) => {
211
- return type !== 'inner'
212
- }
213
-
214
- // 允许拖拽判断
215
- const allowDrag = (draggingNode) => {
216
- return draggingNode.data.label.indexOf('Level three 3-1-1') === -1
217
- }
218
-
219
- // 表格设置处理函数
220
- const tableSetting = () => {
221
- state.tableSettingTitle = '选择字段'
222
- state.dialogVisible = true
223
- }
224
-
225
- // 下一步处理函数
226
- const next = () => {
227
- if (state.checkedList.length === 0) {
228
- Message.error('选择字段不可以为空!')
229
- return
230
- }
231
- state.tableSettingTitle = '排序'
232
-
233
- state.treeData = []
234
- let num = 0
235
- let list = JSON.parse(JSON.stringify(state.checkedList))
236
- list.forEach((item, index) => {
237
- props.tableHeader.forEach((it) => {
238
- if (item === it.label) {
239
- let obj = {
240
- label: item,
241
- children: [],
242
- index: index,
243
- fixed: it.fixed ? it.fixed : ''
244
- }
245
- state.treeData.push(obj)
246
- if (it.fixed === 'left') {
247
- num++
248
- } else if (it.fixed === 'right') {
249
- state.endFixed = true
250
- }
251
- }
252
- })
253
-
254
- state.num = num
255
- })
256
- }
257
-
258
- // 上一步处理函数
259
- const prev = () => {
260
- state.tableSettingTitle = '选择字段'
261
- }
262
-
263
- // 表头确认处理函数
264
- const tableHeaderConfirm = () => {
265
- if ((state.num > 2 && state.endFixed) || (state.num > 3 && !state.endFixed)) {
266
- Message.error('固定列最多只能选择3列!')
267
- return
268
- }
269
- state.tableHeaderList = []
270
- state.treeData.forEach((item, index) => {
271
- if (state.num > 0 && state.num > index) {
272
- item.fixed = 'left'
273
- } else if (state.endFixed && index === state.treeData.length - 1) {
274
- item.fixed = 'right'
275
- } else {
276
- item.fixed = ''
277
- }
278
- state.tableHeaderList.push(item)
279
- })
280
- state.dialogVisible = false
281
- let obj = {
282
- userId: 1,
283
- json: state.tableHeaderList
284
- }
285
- localStorage.setItem('userTable', JSON.stringify(obj))
286
- }
287
-
288
- // 下载处理函数
289
- const download = (url) => {
290
- let fileUrl =
291
- (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test') && location.hostname !== 'localhost'
292
- ? location.origin + url
293
- : 'http://dev.yihai.lianwei.com.cn' + url
294
- window.open(fileUrl, '_blank')
295
- }
296
-
297
- // 排序变化处理函数
298
- const sortChange = ({ column, prop, order }) => {
299
- props.searchParams.sortField = prop?.split(',')[0]
300
- props.searchParams.sortType = order
301
- const data = { ...props.searchParams }
302
- context.emit('getTableData', data)
303
- }
304
-
305
- // 获取表头处理函数
306
- const getHeader = (header) => {
307
- context.emit('getHeader', header)
308
- }
309
-
310
- // 选择处理函数
189
+ // 表格设置相关方法
311
190
  const handleSelect = (v) => {
312
191
  state.tableSize = v
313
192
  }
314
193
 
315
- // 全选处理函数
316
194
  const checkAll = (selected) => {
317
195
  if (selected) {
318
196
  state.tableHeaders = JSON.parse(JSON.stringify(props.tableColumns))
319
- state.tableHeaders.forEach((item, index) => {
197
+ state.tableHeaders.forEach((item) => {
320
198
  if (!item.key) {
321
199
  item.key = $tool.getUUID()
322
200
  }
@@ -332,19 +210,18 @@ export default {
332
210
  })
333
211
  }
334
212
 
335
- // 树形选择处理函数
336
213
  const treeCheck = () => {
337
214
  let list = state.treeData.filter((t) => state.checkedKeys.includes(t.key))
338
215
  state.tableHeaders = list
339
216
  }
340
217
 
341
- // 表格全屏切换处理函数
218
+ // 全屏切换
342
219
  const tableToggleFullScreen = () => {
343
220
  $bus.$emit('tableFullScreen', !isFullscreen.value)
344
221
  toggleFullScreen()
345
222
  }
346
223
 
347
- // 固定列数量变化处理函数
224
+ // 固定列设置
348
225
  const fixNumChange = () => {
349
226
  let num = state.fixNum
350
227
  if (num > 0) {
@@ -363,33 +240,7 @@ export default {
363
240
  }
364
241
  }
365
242
 
366
- // 设置全选处理函数
367
- const setSelectAll = (status) => {
368
- multipleTable.value.selectAll(status)
369
- context.emit('update:selectedKeys', status ? props.tableData.map((item) => item.id) : [])
370
- }
371
-
372
- // 设置选择处理函数
373
- const setSelect = (rowKey, status) => {
374
- multipleTable.value.select(rowKey, status)
375
- const selectedKeys = [...props.selectedKeys]
376
- context.emit('update:selectedKeys', status ? selectedKeys.push(rowKey) : selectedKeys.filter((item) => item !== rowKey))
377
- }
378
-
379
- // 全选处理函数
380
- const selectAll = (status) => {
381
- context.emit('update:selectedKeys', status ? props.tableData.map((item) => item[props.rowKey]) : [])
382
- }
383
-
384
- // 选择处理函数
385
- const select = (rowKeys, rowKey, record) => {
386
- context.emit('update:selectedKeys', rowKeys)
387
- }
388
-
389
- // 列宽变化处理函数
390
- const changeColWidth = (newWidth, oldWidth, { property }) => {}
391
-
392
- // 权限检查函数
243
+ // 权限检查
393
244
  const checkAuth = (auth) => {
394
245
  const data = JSON.parse(localStorage.getItem('userAuthInfo'))
395
246
  const { menus, authorities } = data
@@ -402,12 +253,11 @@ export default {
402
253
  return false
403
254
  }
404
255
 
405
- // 操作过滤函数
256
+ // 操作按钮过滤
406
257
  const filterOperations = (operations, row) => {
407
258
  return operations.filter((o) => (!o?.isShow || o.isShow(row)) && checkAuth(o.auth))
408
259
  }
409
260
 
410
- // 返回所有需要暴露的属性和方法
411
261
  return {
412
262
  ...toRefs(state),
413
263
  checkAuth,
@@ -420,30 +270,16 @@ export default {
420
270
  sizeChange,
421
271
  currentChange,
422
272
  multipleTable,
423
- allowDrop,
424
- allowDrag,
425
- tableSetting,
426
- next,
427
- prev,
428
- tableHeaderConfirm,
429
273
  toggleRowChange,
430
274
  clearTableSelection,
431
- download,
432
- sortChange,
433
- getHeader,
434
275
  handleSelect,
435
276
  checkAll,
436
277
  tableToggleFullScreen,
437
278
  isFullscreen,
438
279
  treeCheck,
439
280
  fixNumChange,
440
- setSelectAll,
441
- setSelect,
442
281
  selectedKeysForm,
443
- selectGoodsDatas,
444
- selectAll,
445
- select,
446
- changeColWidth
282
+ selectGoodsDatas
447
283
  }
448
284
  }
449
285
  }