Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
} else {
// 更新子节点状态
XEUtils.eachTree([row], (item, $rowIndex) => {
if (row === item || (!checkMethod || checkMethod({ row: item, $rowIndex }))) {
XEUtils.set(item, property, value)
this.handleSelectReserveRow(row, value)
}
}, treeOpts)
XEUtils.remove(treeIndeterminates, item => item === row)
}
// 如果存在父节点,更新父节点状态
let matchObj = XEUtils.findTree(afterFullData, item => item === row, treeOpts)
if (matchObj && matchObj.parent) {
let parentStatus
let vItems = checkMethod ? matchObj.items.filter((item, $rowIndex) => checkMethod({ row: item, $rowIndex })) : matchObj.items
let indeterminatesItem = XEUtils.find(matchObj.items, item => treeIndeterminates.indexOf(item) > -1)
if (indeterminatesItem) {
parentStatus = -1
} else {
let selectItems = matchObj.items.filter(item => XEUtils.get(item, property))
parentStatus = selectItems.filter(item => vItems.indexOf(item) > -1).length === vItems.length ? true : (selectItems.length || value === -1 ? -1 : false)
}
return this.handleSelectRow({ row: matchObj.parent }, parentStatus)
}
} else {
XEUtils.set(row, property, value)
this.handleSelectReserveRow(row, value)
}
} else {
if (treeConfig && !checkStrictly) {
if (value === -1) {
treeIndeterminates.push(row)
handleAllChecked (evnt) {
let { tableData, visibleColumn, mouseConfig, mouseOpts, elemStore } = this
// 在 v3.0 中废弃 mouse-config.checked
let isMouseChecked = mouseConfig && (mouseOpts.range || mouseOpts.checked)
if (isMouseChecked) {
evnt.preventDefault()
let headerListElem = elemStore['main-header-list']
let headerList = headerListElem.children
let bodyList = elemStore['main-body-list'].children
// v3.0 废弃 type=index
let column = XEUtils.find(visibleColumn, column => column.type === 'seq' || column.type === 'index') || visibleColumn[0]
let cell = headerListElem.querySelector(`.${column.id}`)
let firstTrElem = bodyList[0]
let lastTrElem = bodyList[bodyList.length - 1]
let firstCell = firstTrElem.querySelector(`.${column.id}`)
let params = {
$table: this,
rowIndex: 0,
row: tableData[0],
column: XEUtils.find(visibleColumn, column => column.property)
}
params.columnIndex = this.getColumnIndex(params.column)
params.cell = DomTools.getCell(this, params)
this.handleSelected(params, evnt)
this.handleHeaderChecked(DomTools.getRowNodes(headerList, DomTools.getCellNodeIndex(cell.nextElementSibling), DomTools.getCellNodeIndex(cell.parentNode.lastElementChild)))
this.handleIndexChecked(DomTools.getRowNodes(bodyList, DomTools.getCellNodeIndex(firstCell), DomTools.getCellNodeIndex(lastTrElem.querySelector(`.${column.id}`))))
this.handleChecked(DomTools.getRowNodes(bodyList, DomTools.getCellNodeIndex(firstCell.nextElementSibling), DomTools.getCellNodeIndex(lastTrElem.lastElementChild)))
if (isMouseChecked) {
evnt.preventDefault()
let headerListElem = elemStore['main-header-list']
let headerList = headerListElem.children
let bodyList = elemStore['main-body-list'].children
// v3.0 废弃 type=index
let column = XEUtils.find(visibleColumn, column => column.type === 'seq' || column.type === 'index') || visibleColumn[0]
let cell = headerListElem.querySelector(`.${column.id}`)
let firstTrElem = bodyList[0]
let lastTrElem = bodyList[bodyList.length - 1]
let firstCell = firstTrElem.querySelector(`.${column.id}`)
let params = {
$table: this,
rowIndex: 0,
row: tableData[0],
column: XEUtils.find(visibleColumn, column => column.property)
}
params.columnIndex = this.getColumnIndex(params.column)
params.cell = DomTools.getCell(this, params)
this.handleSelected(params, evnt)
this.handleHeaderChecked(DomTools.getRowNodes(headerList, DomTools.getCellNodeIndex(cell.nextElementSibling), DomTools.getCellNodeIndex(cell.parentNode.lastElementChild)))
this.handleIndexChecked(DomTools.getRowNodes(bodyList, DomTools.getCellNodeIndex(firstCell), DomTools.getCellNodeIndex(lastTrElem.querySelector(`.${column.id}`))))
this.handleChecked(DomTools.getRowNodes(bodyList, DomTools.getCellNodeIndex(firstCell.nextElementSibling), DomTools.getCellNodeIndex(lastTrElem.lastElementChild)))
}
},
handleIndexChecked (rowNodes) {
tableFullColumn.forEach(column => {
// 在 v3.0 中废弃 prop
let item = XEUtils.find(customColumns, item => column.property && (item.field || item.prop) === column.property)
if (item) {
if (XEUtils.isNumber(item.resizeWidth)) {
column.resizeWidth = item.resizeWidth
}
if (XEUtils.isBoolean(item.visible)) {
column.visible = item.visible
}
}
})
}
_setSelectCell (row, field) {
let { tableData, editOpts, visibleColumn } = this
if (row && field && editOpts.trigger !== 'manual') {
let column = XEUtils.find(visibleColumn, column => column.property === field)
let rowIndex = tableData.indexOf(row)
if (rowIndex > -1 && column) {
let cell = DomTools.getCell(this, { row, rowIndex, column })
let params = { row, rowIndex, column, columnIndex: visibleColumn.indexOf(column), cell }
this.handleSelected(params, {})
}
}
return this.$nextTick()
},
/**
renderCell (h, renderOpts, params, context) {
let { options, optionGroups, optionProps = {}, optionGroupProps = {} } = renderOpts
let { row, column } = params
let cellValue = XEUtils.get(row, column.property)
let selectItem
let labelProp = optionProps.label || 'label'
let valueProp = optionProps.value || 'value'
if (optionGroups) {
let groupOptions = optionGroupProps.options || 'options'
for (let index = 0; index < optionGroups.length; index++) {
selectItem = XEUtils.find(optionGroups[index][groupOptions], item => item[valueProp] === cellValue)
if (selectItem) {
break
}
}
return selectItem ? selectItem[labelProp] : cellValue
} else {
selectItem = XEUtils.find(options, item => item[valueProp] === cellValue)
return selectItem ? selectItem[labelProp] : cellValue
}
},
renderFilter (h, renderOpts, params, context) {
let { row, column } = params
let cellValue = XEUtils.get(row, column.property)
let selectItem
let labelProp = optionProps.label || 'label'
let valueProp = optionProps.value || 'value'
if (optionGroups) {
let groupOptions = optionGroupProps.options || 'options'
for (let index = 0; index < optionGroups.length; index++) {
selectItem = XEUtils.find(optionGroups[index][groupOptions], item => item[valueProp] === cellValue)
if (selectItem) {
break
}
}
return selectItem ? selectItem[labelProp] : cellValue
} else {
selectItem = XEUtils.find(options, item => item[valueProp] === cellValue)
return selectItem ? selectItem[labelProp] : cellValue
}
},
renderFilter (h, renderOpts, params, context) {
updateConf () {
let { $children } = this.$parent
let selfIndex = $children.indexOf(this)
this.$xetable = XEUtils.find($children, (comp, index) => comp && comp.refreshColumn && index > selfIndex && comp.$vnode.componentOptions.tag === 'vxe-table')
},
openCustom () {
} : (value: any) => {
let selectItem: any = XEUtils.find(options, (item: any) => item[valueProp] === value)
let cellLabel: any = selectItem ? selectItem[labelProp] : value
if (cellData && options && options.length) {
cellData[colid] = { value: cellValue, label: cellLabel }
}
return cellLabel
}).join(';'))
}
return cellText(h, XEUtils.map(props.multiple ? cellValue : [cellValue], optionGroups ? (value: any) => {
let selectItem: any
for (let index = 0; index < optionGroups.length; index++) {
selectItem = XEUtils.find(optionGroups[index][groupOptions], (item: any) => item[valueProp] === value)
if (selectItem) {
break
}
}
let cellLabel: any = selectItem ? selectItem[labelProp] : value
if (cellData && options && options.length) {
cellData[colid] = { value: cellValue, label: cellLabel }
}
return cellLabel
} : (value: any) => {
let selectItem: any = XEUtils.find(options, (item: any) => item[valueProp] === value)