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 | 84 | }, |
85 | 85 | isSelectAll () { |
86 | 86 | let isSelectAll = true; |
87 | + let isAllDisabled = true; | |
87 | 88 | if (!this.data.length) isSelectAll = false; |
88 | 89 | |
89 | 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 | 98 | isSelectAll = false; |
92 | 99 | break; |
93 | 100 | } |
94 | 101 | } |
95 | 102 | |
96 | - return isSelectAll; | |
103 | + return isAllDisabled ? false : isSelectAll; | |
97 | 104 | } |
98 | 105 | }, |
99 | 106 | methods: { | ... | ... |
src/components/table/table.vue
... | ... | @@ -553,8 +553,17 @@ |
553 | 553 | this.data.forEach((row, index) => { |
554 | 554 | const newRow = deepCopy(row);// todo 直接替换 |
555 | 555 | newRow._isHover = false; |
556 | + if(newRow._disabled){ | |
557 | + newRow._isDisabled = newRow._disabled; | |
558 | + }else{ | |
559 | + newRow._isDisabled = false; | |
560 | + } | |
556 | 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 | 567 | } else { |
559 | 568 | newRow._isChecked = false; |
560 | 569 | } |
... | ... | @@ -563,12 +572,6 @@ |
563 | 572 | } else { |
564 | 573 | newRow._isHighlight = false; |
565 | 574 | } |
566 | - | |
567 | - if(newRow._disabled){ | |
568 | - newRow._isDisabled = newRow._disabled; | |
569 | - }else{ | |
570 | - newRow._isDisabled = false; | |
571 | - } | |
572 | 575 | data[index] = newRow; |
573 | 576 | }); |
574 | 577 | return data; | ... | ... |
test/routers/table.vue
... | ... | @@ -54,26 +54,29 @@ |
54 | 54 | age: 18, |
55 | 55 | address: '北京市朝阳区芍药居', |
56 | 56 | _highlight: true, |
57 | - _checked: true | |
57 | + _checked: true, | |
58 | + _disabled: false | |
58 | 59 | }, |
59 | 60 | { |
60 | 61 | name: '张小刚', |
61 | 62 | age: 25, |
62 | 63 | address: '北京市海淀区西二旗', |
63 | - _checked: true | |
64 | + _checked: false, | |
65 | + _disabled: true | |
64 | 66 | }, |
65 | 67 | { |
66 | 68 | name: '李小红', |
67 | 69 | age: 30, |
68 | 70 | address: '上海市浦东新区世纪大道', |
69 | - _checked: false, | |
71 | + _checked: true, | |
70 | 72 | _disabled: true |
71 | 73 | }, |
72 | 74 | { |
73 | 75 | name: '周小伟', |
74 | 76 | age: 26, |
75 | 77 | address: '深圳市南山区深南大道', |
76 | - _checked: true | |
78 | + _checked: true, | |
79 | + _disabled: false | |
77 | 80 | } |
78 | 81 | ] |
79 | 82 | } | ... | ... |