mirror of
https://gitee.com/xuliangzhan_admin/vxe-table.git
synced 2026-01-21 05:27:57 +08:00
修改复选框禁用时显示错误问题
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "vxe-table",
|
||||
"version": "3.4.14-beta.0",
|
||||
"version": "3.4.14-beta.1",
|
||||
"description": "一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、贼灵活的配置项、扩展接口等...",
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
|
||||
@@ -352,25 +352,23 @@ export const Cell = {
|
||||
*/
|
||||
renderCheckboxHeader (h, params) {
|
||||
const { $table, column, isHidden } = params
|
||||
const { isIndeterminate: isAllCheckboxIndeterminate, isAllCheckboxDisabled } = $table
|
||||
const { isAllSelected: isAllCheckboxSelected, isIndeterminate: isAllCheckboxIndeterminate, isAllCheckboxDisabled } = $table
|
||||
const { slots } = column
|
||||
const headerSlot = slots ? slots.header : null
|
||||
const titleSlot = slots ? slots.title : null
|
||||
const checkboxOpts = $table.checkboxOpts
|
||||
const headerTitle = column.getTitle()
|
||||
let isChecked = false
|
||||
let on
|
||||
if (!isHidden) {
|
||||
isChecked = isAllCheckboxDisabled ? false : $table.isAllSelected
|
||||
on = {
|
||||
click (evnt) {
|
||||
if (!isAllCheckboxDisabled) {
|
||||
$table.triggerCheckAllEvent(evnt, !isChecked)
|
||||
$table.triggerCheckAllEvent(evnt, !isAllCheckboxSelected)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
const checkboxParams = { ...params, checked: isChecked, disabled: isAllCheckboxDisabled, indeterminate: isAllCheckboxIndeterminate }
|
||||
const checkboxParams = { ...params, checked: isAllCheckboxSelected, disabled: isAllCheckboxDisabled, indeterminate: isAllCheckboxIndeterminate }
|
||||
if (headerSlot) {
|
||||
return renderTitleContent(h, checkboxParams, $table.callSlot(headerSlot, checkboxParams, h))
|
||||
}
|
||||
@@ -384,7 +382,7 @@ export const Cell = {
|
||||
return renderTitleContent(h, checkboxParams, [
|
||||
h('span', {
|
||||
class: ['vxe-cell--checkbox', {
|
||||
'is--checked': isChecked,
|
||||
'is--checked': isAllCheckboxSelected,
|
||||
'is--disabled': isAllCheckboxDisabled,
|
||||
'is--indeterminate': isAllCheckboxIndeterminate
|
||||
}],
|
||||
|
||||
@@ -2964,14 +2964,28 @@ const Methods = {
|
||||
const { afterFullData, selection, treeIndeterminates, checkboxOpts, treeConfig } = this
|
||||
const { checkField, halfField, checkStrictly, checkMethod } = checkboxOpts
|
||||
if (!checkStrictly) {
|
||||
const disableRows = []
|
||||
const checkRows = []
|
||||
let isAllResolve = false
|
||||
let isAllSelected = false
|
||||
let isIndeterminate = false
|
||||
if (checkField) {
|
||||
isAllSelected = afterFullData.length && afterFullData.every(
|
||||
isAllResolve = afterFullData.every(
|
||||
checkMethod
|
||||
? (row) => !checkMethod({ row }) || XEUtils.get(row, checkField)
|
||||
? (row) => {
|
||||
if (!checkMethod({ row })) {
|
||||
disableRows.push(row)
|
||||
return true
|
||||
}
|
||||
if (XEUtils.get(row, checkField)) {
|
||||
checkRows.push(row)
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
: row => XEUtils.get(row, checkField)
|
||||
)
|
||||
isAllSelected = isAllResolve && afterFullData.length !== disableRows.length
|
||||
if (treeConfig) {
|
||||
if (halfField) {
|
||||
isIndeterminate = !isAllSelected && afterFullData.some(row => XEUtils.get(row, checkField) || XEUtils.get(row, halfField) || treeIndeterminates.indexOf(row) > -1)
|
||||
@@ -2986,11 +3000,22 @@ const Methods = {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
isAllSelected = afterFullData.length && afterFullData.every(
|
||||
isAllResolve = afterFullData.every(
|
||||
checkMethod
|
||||
? (row) => !checkMethod({ row }) || selection.indexOf(row) > -1
|
||||
? (row) => {
|
||||
if (!checkMethod({ row })) {
|
||||
disableRows.push(row)
|
||||
return true
|
||||
}
|
||||
if (selection.indexOf(row) > -1) {
|
||||
checkRows.push(row)
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
: row => selection.indexOf(row) > -1
|
||||
)
|
||||
isAllSelected = isAllResolve && afterFullData.length !== disableRows.length
|
||||
if (treeConfig) {
|
||||
isIndeterminate = !isAllSelected && afterFullData.some(row => treeIndeterminates.indexOf(row) > -1 || selection.indexOf(row) > -1)
|
||||
} else {
|
||||
|
||||
@@ -170,5 +170,10 @@
|
||||
border-color: $vxe-primary-disabled-color;
|
||||
}
|
||||
}
|
||||
.vxe-checkbox--indeterminate-icon {
|
||||
&:after {
|
||||
background-color: $vxe-primary-disabled-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user