拖拽-可设置最小宽度

This commit is contained in:
zyn
2023-02-07 13:39:30 +08:00
parent f9d4148fc9
commit d1590420cb
3 changed files with 155 additions and 78 deletions
+42 -11
View File
@@ -5,9 +5,10 @@ const events = {
move: 'mousemove',
stop: 'mouseup'
}
let tableAll = []
let tableAll = [] // 单个页面存放多个表格的columns
var columnsAll = []
var columnsKey = ''
let minColumn = [] // 存放设置最小宽的列及宽度
const DragHandler = {
name: 'nio-drag-handler',
//获取混入的方法(重新设置表头宽度)
@@ -86,9 +87,10 @@ const DragHandler = {
return h('div', { class: 'nio-drag-handler', on: { mousedown: this.handleMouseDown } }, [line])
}
}
const ResizeHeaderOne = function(val, name) {
const ResizeHeaderOne = function(val, name ,minWidths) {
columnsAll = val
columnsKey = name
minColumn = minWidths
if(tableAll.indexOf(val) === -1){
tableAll.push(val)
}
@@ -96,16 +98,44 @@ const ResizeHeaderOne = function(val, name) {
const { key, column, ...restProps } = props
let col = {}
// 处理多级表头
col = getRenderCoL(key, val)
// col = getRenderCoL(key, val)
col = getRenderCoL(key, columnsAll)
let content = [].concat(children)
console.log(col)
if (col) {
const handlerVNode = h(DragHandler, {
props: {
width: col.width,
minWidth: Math.min(col.width, 100),
column: col
let handlerVNode;
if(minColumn && minColumn.length>0){
// 存放所有需要手动设置最小宽度的列的dataIndex
let colsdataIndex = []
minColumn.forEach((item)=>{
colsdataIndex.push(item[0].dataIndex)
handlerVNode = h(DragHandler, {
props: {
width: col.width,
minWidth: Math.min(item[1]),
column: JSON.parse(JSON.stringify(item[0]))
}
}, [])
})
// 不需要手动设置最小宽度的列
if(colsdataIndex.indexOf(col.dataIndex) === -1){
handlerVNode = h(DragHandler, {
props: {
width: col.width,
minWidth: Math.min(col.width, 100),
column: col
}
}, [])
}
}, [])
}else{
handlerVNode = h(DragHandler, {
props: {
width: col.width,
minWidth: Math.min(col.width, 100),
column: col
}
}, [])
}
content = content.concat(
handlerVNode
)
@@ -119,10 +149,11 @@ const ResizeHeaderOne = function(val, name) {
}
export const ResizeHeader = {
methods: {
drag(columns, name) {
drag(columns, name ,minWidths) {
return {
header: {
cell: ResizeHeaderOne(columns, name)
// minWidths : 最小宽度 => [[需要设置的列,最小宽],[需要设置的列,最小宽],...]
cell: ResizeHeaderOne(columns, name,minWidths)
}
}
}