Skip to content

Commit e253f04

Browse files
authored
Merge pull request #177 from CosSalt/master
bugfix and optimize
2 parents 066d5e5 + 8107099 commit e253f04

File tree

4 files changed

+30
-15
lines changed

4 files changed

+30
-15
lines changed

demo/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33
"version": "0.1.0",
44
"private": true,
55
"scripts": {
6+
"start": "vue-cli-service serve",
67
"serve": "vue-cli-service serve",
78
"build": "vue-cli-service build",
89
"lint": "vue-cli-service lint"
910
},
1011
"dependencies": {
1112
"vue": "^2.5.17",
12-
"vue-tree-halower": "^1.7.2"
13+
"vue-tree-halower": "^1.8.1"
1314
},
1415
"devDependencies": {
1516
"@vue/cli-plugin-babel": "^3.0.1",

demo/yarn.lock

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6121,6 +6121,9 @@ schema-utils@1.0.0, schema-utils@^1.0.0:
61216121
schema-utils@^0.4.0, schema-utils@^0.4.2, schema-utils@^0.4.4, schema-utils@^0.4.5:
61226122
version "0.4.7"
61236123
resolved "http://registry.npm.taobao.org/schema-utils/download/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187"
6124+
dependencies:
6125+
ajv "^6.1.0"
6126+
ajv-keywords "^3.1.0"
61246127

61256128
select-hose@^2.0.0:
61266129
version "2.0.0"
@@ -7008,9 +7011,10 @@ vue-template-es2015-compiler@^1.6.0:
70087011
version "1.6.0"
70097012
resolved "http://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.6.0.tgz#dc42697133302ce3017524356a6c61b7b69b4a18"
70107013

7011-
vue-tree-halower@^1.6.1:
7012-
version "1.6.1"
7013-
resolved "http://registry.npm.taobao.org/vue-tree-halower/download/vue-tree-halower-1.6.1.tgz#00ce725c68c74b96523fdf5d38b1f6b5f7a74eb5"
7014+
vue-tree-halower@^1.8.1:
7015+
version "1.8.1"
7016+
resolved "https://registry.yarnpkg.com/vue-tree-halower/-/vue-tree-halower-1.8.1.tgz#813d3de1f6f7bc8a87fc514b2c3ffd8334bdc159"
7017+
integrity sha512-bMM3nF80aLpwMwxnKObJLLert/EozvSOQeOCHZsOKGItlH5vzmqo3sLWikPTdF8tmF1cLZYi1phUuC2IJXOjvg==
70147018
dependencies:
70157019
vue "^2.4.4"
70167020

src/components/tree.vue

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -106,15 +106,15 @@ export default {
106106
}
107107
},
108108
parentCheckedHandle(parentNode, checked, halfcheck = false) {
109-
if (!parentNode || parentNode.chkDisabled || !!parentNode.checked === checked ) return false;
110-
let [someBortherNodeChecked, allBortherNodeChecked] = [checked, checked];
109+
if (!parentNode || parentNode.chkDisabled ) return false;
110+
let someBortherNodeChecked = checked, allBortherNodeChecked = checked;
111111
const childNodes = parentNode.children
112112
if (checked) {
113-
allBortherNodeChecked = childNodes.every(
114-
child => child.checked && !child.halfcheck
115-
);
113+
allBortherNodeChecked = childNodes.every(child => child.checked);
116114
} else {
117-
someBortherNodeChecked = childNodes.some(child => child.checked);
115+
someBortherNodeChecked = childNodes.some(({ checked, halfcheck: itemHalfCheck }) => {
116+
return checked || ( halfcheck && itemHalfCheck)
117+
});
118118
}
119119
if (halfcheck) {
120120
// all / some / none
@@ -127,8 +127,7 @@ export default {
127127
} else if (nodeHalfcheck) {
128128
return false;
129129
}
130-
const parentChecked = checked || nodeHalfcheck;
131-
this.$set(parentNode, "checked", parentChecked);
130+
this.$set(parentNode, "checked", allBortherNodeChecked);
132131
} else {
133132
this.$set(parentNode, "checked", allBortherNodeChecked);
134133
}

src/components/treeLi.vue

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,16 @@
99
></span>
1010
<span
1111
v-if="multiple && !item.nocheck"
12-
:class="[item.checked ? (item.halfcheck ? 'box-halfchecked' : 'box-checked') : 'box-unchecked', 'inputCheck']"
12+
class='inputCheck'
13+
:class="spanInputClass"
1314
>
1415
<input
1516
:disabled="item.chkDisabled"
1617
:class="['check', item.chkDisabled ? 'chkDisabled' : '']"
1718
v-if="multiple"
1819
type="checkbox"
1920
@change="changeNodeCheckStatus(item, $event)"
20-
:checked="item.checked"
21+
:checked="checkboxChecked"
2122
>
2223
</span>
2324
<loading v-if="item.loading && item.expanded"/>
@@ -166,12 +167,22 @@ export default {
166167
},
167168
position() {
168169
return { level: this.level, index: this.index };
170+
},
171+
checkboxChecked() {
172+
const { checked, halfcheck } = this.item
173+
return checked || halfcheck
174+
},
175+
spanInputClass () {
176+
const { checked, halfcheck } = this.item
177+
return checked ? 'box-checked' : halfcheck ? 'box-halfchecked' : 'box-unchecked'
169178
}
170179
},
171180
watch: {
172181
"item.checked": {
173182
handler() {
174-
this.checkedChange();
183+
if(!this.scoped) {
184+
this.checkedChange();
185+
}
175186
},
176187
immediate: true
177188
},

0 commit comments

Comments
 (0)