Commit c7315098532c3d79c98dfb1d5eded3f71ea3a54a
1 parent
87379c82
修复两个问题:
1.如果某行禁用_disabled=true,则这行的_checked,无论如何都是false,因为禁用的目的就是不能选择 2.修复某行设置_disabled=true时,全选状态判断有误的bug
Showing
3 changed files
with
26 additions
and
13 deletions
Show diff stats
src/components/table/table-head.vue
| @@ -84,16 +84,23 @@ | @@ -84,16 +84,23 @@ | ||
| 84 | }, | 84 | }, |
| 85 | isSelectAll () { | 85 | isSelectAll () { |
| 86 | let isSelectAll = true; | 86 | let isSelectAll = true; |
| 87 | + let isAllDisabled = true; | ||
| 87 | if (!this.data.length) isSelectAll = false; | 88 | if (!this.data.length) isSelectAll = false; |
| 88 | 89 | ||
| 89 | for (let i = 0; i < this.data.length; i++) { | 90 | for (let i = 0; i < this.data.length; i++) { |
| 90 | - if (!this.objData[this.data[i]._index]._isChecked) { | 91 | + if(this.objData[this.data[i]._index]._isDisabled){ |
| 92 | + isAllDisabled = isAllDisabled && true; | ||
| 93 | + continue; | ||
| 94 | + }else{ | ||
| 95 | + isAllDisabled = isAllDisabled && false; | ||
| 96 | + } | ||
| 97 | + if (!this.objData[this.data[i]._index]._isChecked ) { | ||
| 91 | isSelectAll = false; | 98 | isSelectAll = false; |
| 92 | break; | 99 | break; |
| 93 | } | 100 | } |
| 94 | } | 101 | } |
| 95 | 102 | ||
| 96 | - return isSelectAll; | 103 | + return isAllDisabled ? false : isSelectAll; |
| 97 | } | 104 | } |
| 98 | }, | 105 | }, |
| 99 | methods: { | 106 | methods: { |
src/components/table/table.vue
| @@ -553,8 +553,17 @@ | @@ -553,8 +553,17 @@ | ||
| 553 | this.data.forEach((row, index) => { | 553 | this.data.forEach((row, index) => { |
| 554 | const newRow = deepCopy(row);// todo 直接替换 | 554 | const newRow = deepCopy(row);// todo 直接替换 |
| 555 | newRow._isHover = false; | 555 | newRow._isHover = false; |
| 556 | + if(newRow._disabled){ | ||
| 557 | + newRow._isDisabled = newRow._disabled; | ||
| 558 | + }else{ | ||
| 559 | + newRow._isDisabled = false; | ||
| 560 | + } | ||
| 556 | if (newRow._checked) { | 561 | if (newRow._checked) { |
| 557 | - newRow._isChecked = newRow._checked; | 562 | + if(newRow._isDisabled){ |
| 563 | + newRow._isChecked = false; | ||
| 564 | + }else{ | ||
| 565 | + newRow._isChecked = newRow._checked; | ||
| 566 | + } | ||
| 558 | } else { | 567 | } else { |
| 559 | newRow._isChecked = false; | 568 | newRow._isChecked = false; |
| 560 | } | 569 | } |
| @@ -563,12 +572,6 @@ | @@ -563,12 +572,6 @@ | ||
| 563 | } else { | 572 | } else { |
| 564 | newRow._isHighlight = false; | 573 | newRow._isHighlight = false; |
| 565 | } | 574 | } |
| 566 | - | ||
| 567 | - if(newRow._disabled){ | ||
| 568 | - newRow._isDisabled = newRow._disabled; | ||
| 569 | - }else{ | ||
| 570 | - newRow._isDisabled = false; | ||
| 571 | - } | ||
| 572 | data[index] = newRow; | 575 | data[index] = newRow; |
| 573 | }); | 576 | }); |
| 574 | return data; | 577 | return data; |
test/routers/table.vue
| @@ -54,26 +54,29 @@ | @@ -54,26 +54,29 @@ | ||
| 54 | age: 18, | 54 | age: 18, |
| 55 | address: '北京市朝阳区芍药居', | 55 | address: '北京市朝阳区芍药居', |
| 56 | _highlight: true, | 56 | _highlight: true, |
| 57 | - _checked: true | 57 | + _checked: true, |
| 58 | + _disabled: false | ||
| 58 | }, | 59 | }, |
| 59 | { | 60 | { |
| 60 | name: '张小刚', | 61 | name: '张小刚', |
| 61 | age: 25, | 62 | age: 25, |
| 62 | address: '北京市海淀区西二旗', | 63 | address: '北京市海淀区西二旗', |
| 63 | - _checked: true | 64 | + _checked: false, |
| 65 | + _disabled: true | ||
| 64 | }, | 66 | }, |
| 65 | { | 67 | { |
| 66 | name: '李小红', | 68 | name: '李小红', |
| 67 | age: 30, | 69 | age: 30, |
| 68 | address: '上海市浦东新区世纪大道', | 70 | address: '上海市浦东新区世纪大道', |
| 69 | - _checked: false, | 71 | + _checked: true, |
| 70 | _disabled: true | 72 | _disabled: true |
| 71 | }, | 73 | }, |
| 72 | { | 74 | { |
| 73 | name: '周小伟', | 75 | name: '周小伟', |
| 74 | age: 26, | 76 | age: 26, |
| 75 | address: '深圳市南山区深南大道', | 77 | address: '深圳市南山区深南大道', |
| 76 | - _checked: true | 78 | + _checked: true, |
| 79 | + _disabled: false | ||
| 77 | } | 80 | } |
| 78 | ] | 81 | ] |
| 79 | } | 82 | } |