Commit 183ab50e0c0187f5bfa10d718fd4905cb6b6f85b

Authored by Aresn
Committed by GitHub
2 parents 5d05754e c52c64b6

Merge pull request #286 from GITleonine1989/master

itable添加禁用某行选中的功能
src/components/carousel/carousel.vue
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 </button> 13 </button>
14 <ul :class="dotsClasses"> 14 <ul :class="dotsClasses">
15 <template v-for="n in slides.length"> 15 <template v-for="n in slides.length">
16 - <li :class="{ [`${prefixCls}-active`]: n === currentIndex }" 16 + <li :class="[n === currentIndex ? prefixCls+'-active':'' ]"
17 @click="dotsEvent('click', n)" 17 @click="dotsEvent('click', n)"
18 @mouseover="dotsEvent('hover', n)"> 18 @mouseover="dotsEvent('hover', n)">
19 <button></button> 19 <button></button>
src/components/table/cell.vue
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 <div :class="classes"> 2 <div :class="classes">
3 <template v-if="renderType === 'index'">{{naturalIndex + 1}}</template> 3 <template v-if="renderType === 'index'">{{naturalIndex + 1}}</template>
4 <template v-if="renderType === 'selection'"> 4 <template v-if="renderType === 'selection'">
5 - <Checkbox :checked="checked" @on-change="toggleSelect"></Checkbox> 5 + <Checkbox :checked="checked" @on-change="toggleSelect" :disabled="disabled"></Checkbox>
6 </template> 6 </template>
7 <template v-if="renderType === 'normal'">{{{ row[column.key] }}}</template> 7 <template v-if="renderType === 'normal'">{{{ row[column.key] }}}</template>
8 </div> 8 </div>
@@ -19,6 +19,7 @@ @@ -19,6 +19,7 @@
19 naturalIndex: Number, // index of rebuildData 19 naturalIndex: Number, // index of rebuildData
20 index: Number, // _index of data 20 index: Number, // _index of data
21 checked: Boolean, 21 checked: Boolean,
  22 + disabled: Boolean,
22 fixed: { 23 fixed: {
23 type: [Boolean, String], 24 type: [Boolean, String],
24 default: false 25 default: false
src/components/table/table-body.vue
@@ -19,7 +19,9 @@ @@ -19,7 +19,9 @@
19 :column="column" 19 :column="column"
20 :natural-index="index" 20 :natural-index="index"
21 :index="row._index" 21 :index="row._index"
22 - :checked="rowChecked(row._index)"></Cell> 22 + :checked="rowChecked(row._index)"
  23 + :disabled="rowDisabled(row._index)"
  24 + ></Cell>
23 </td> 25 </td>
24 </tr> 26 </tr>
25 </tbody> 27 </tbody>
@@ -58,6 +60,9 @@ @@ -58,6 +60,9 @@
58 rowChecked (_index) { 60 rowChecked (_index) {
59 return this.objData[_index] && this.objData[_index]._isChecked; 61 return this.objData[_index] && this.objData[_index]._isChecked;
60 }, 62 },
  63 + rowDisabled(_index){
  64 + return this.objData[_index] && this.objData[_index]._isDisabled;
  65 + },
61 rowClsName (_index) { 66 rowClsName (_index) {
62 return this.$parent.rowClassName(this.objData[_index], _index); 67 return this.$parent.rowClassName(this.objData[_index], _index);
63 }, 68 },
src/components/table/table-head.vue
@@ -85,9 +85,8 @@ @@ -85,9 +85,8 @@
85 isSelectAll () { 85 isSelectAll () {
86 let isSelectAll = true; 86 let isSelectAll = true;
87 if (!this.data.length) isSelectAll = false; 87 if (!this.data.length) isSelectAll = false;
88 -  
89 for (let i = 0; i < this.data.length; i++) { 88 for (let i = 0; i < this.data.length; i++) {
90 - if (!this.objData[this.data[i]._index]._isChecked) { 89 + if (!this.objData[this.data[i]._index]._isChecked && !this.objData[this.data[i]._index]._isDisabled) {
91 isSelectAll = false; 90 isSelectAll = false;
92 break; 91 break;
93 } 92 }
src/components/table/table.vue
@@ -391,10 +391,21 @@ @@ -391,10 +391,21 @@
391 this.$emit('on-selection-change', selection); 391 this.$emit('on-selection-change', selection);
392 }, 392 },
393 selectAll (status) { 393 selectAll (status) {
394 - this.rebuildData.forEach((data) => {  
395 - this.objData[data._index]._isChecked = status;  
396 - });  
397 - 394 + // this.rebuildData.forEach((data) => {
  395 + // if(this.objData[data._index]._isDisabled){
  396 + // this.objData[data._index]._isChecked = false;
  397 + // }else{
  398 + // this.objData[data._index]._isChecked = status;
  399 + // }
  400 +
  401 + // });
  402 + for(const data of this.rebuildData){
  403 + if(this.objData[data._index]._isDisabled){
  404 + continue;
  405 + }else{
  406 + this.objData[data._index]._isChecked = status;
  407 + }
  408 + }
398 const selection = this.getSelection(); 409 const selection = this.getSelection();
399 if (status) { 410 if (status) {
400 this.$emit('on-select-all', selection); 411 this.$emit('on-select-all', selection);
@@ -548,8 +559,13 @@ @@ -548,8 +559,13 @@
548 this.data.forEach((row, index) => { 559 this.data.forEach((row, index) => {
549 const newRow = deepCopy(row);// todo 直接替换 560 const newRow = deepCopy(row);// todo 直接替换
550 newRow._isHover = false; 561 newRow._isHover = false;
  562 + if(newRow._disabled){
  563 + newRow._isDisabled = newRow._disabled;
  564 + }else{
  565 + newRow._isDisabled = false;
  566 + }
551 if (newRow._checked) { 567 if (newRow._checked) {
552 - newRow._isChecked = newRow._checked; 568 + newRow._isChecked = newRow._checked;
553 } else { 569 } else {
554 newRow._isChecked = false; 570 newRow._isChecked = false;
555 } 571 }
test/routers/table.vue
@@ -54,25 +54,29 @@ @@ -54,25 +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: true 71 + _checked: true,
  72 + _disabled: true
70 }, 73 },
71 { 74 {
72 name: '周小伟', 75 name: '周小伟',
73 age: 26, 76 age: 26,
74 address: '深圳市南山区深南大道', 77 address: '深圳市南山区深南大道',
75 - _checked: true 78 + _checked: false,
  79 + _disabled: false
76 } 80 }
77 ] 81 ]
78 } 82 }