|
@@ -68,6 +68,7 @@
|
|
|
:default-checked-keys="checkedKeys"
|
|
|
:props="defaultProps">
|
|
|
</el-tree>
|
|
|
+ <!--没有被选中的父级在halfCheckedNodes,halfCheckedKeys属性中-->
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
<input type="hidden" v-model="form.rule" />
|
|
@@ -272,10 +273,24 @@ export default {
|
|
|
|
|
|
//4.添加 start ------------------------------------------------------------>
|
|
|
addData(){
|
|
|
- //获取选中的节点
|
|
|
+ this.form.id = this.editId;
|
|
|
+ //半选的节点
|
|
|
+ let supplement = [];
|
|
|
+ let allKeys = this.$refs.tree.getHalfCheckedNodes();
|
|
|
+ if(allKeys.length > 0){
|
|
|
+ for(let i = 0; i < allKeys.length; i++){
|
|
|
+ supplement.push(allKeys[i].id);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ console.log(supplement)
|
|
|
+ //选中的节点
|
|
|
let checkedArr = this.$refs.tree.getCheckedKeys();
|
|
|
this.form.rule = checkedArr;
|
|
|
-
|
|
|
+ console.log(checkedArr)
|
|
|
+ //合并节点
|
|
|
+ this.form.rule = [...new Set([...supplement, ...checkedArr])];
|
|
|
+ console.log(this.form.rule)
|
|
|
+ //提交数据
|
|
|
this.$refs.form.validate(valid => {
|
|
|
if (valid) {
|
|
|
this.$store.dispatch('userRole/addRole',this.form).then(res=> {
|
|
@@ -333,9 +348,24 @@ export default {
|
|
|
//提交编辑
|
|
|
editData(){
|
|
|
this.form.id = this.editId;
|
|
|
- //获取选中的节点
|
|
|
+ //半选的节点
|
|
|
+ let supplement = [];
|
|
|
+ let allKeys = this.$refs.tree.getHalfCheckedNodes();
|
|
|
+ if(allKeys.length > 0){
|
|
|
+ for(let i = 0; i < allKeys.length; i++){
|
|
|
+ supplement.push(allKeys[i].id);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ console.log(supplement)
|
|
|
+ //选中的节点
|
|
|
let checkedArr = this.$refs.tree.getCheckedKeys();
|
|
|
this.form.rule = checkedArr;
|
|
|
+ console.log(checkedArr)
|
|
|
+ //合并节点
|
|
|
+ this.form.rule = [...new Set([...supplement, ...checkedArr])];
|
|
|
+ console.log(this.form.rule)
|
|
|
+
|
|
|
+ //提交数据
|
|
|
this.$refs.form.validate(valid => {
|
|
|
if (valid) {
|
|
|
this.$store.dispatch('userRole/updateRole',this.form).then(res=> {
|
|
@@ -354,10 +384,43 @@ export default {
|
|
|
})
|
|
|
}
|
|
|
})
|
|
|
-
|
|
|
- }
|
|
|
+ },
|
|
|
//编辑 end ------------------------------------------------------------>
|
|
|
|
|
|
+ //5.tree start ------------------------------------------------------------>
|
|
|
+ checkChange(data) {
|
|
|
+ const node = this.$refs.tree.getNode(data.id);
|
|
|
+ this.setNode(node);
|
|
|
+ },
|
|
|
+ setNode(node) {
|
|
|
+ console.log(node, "node");
|
|
|
+ if (node.checked) {
|
|
|
+ //如果当前是选中checkbox,则递归设置父节点和父父节点++选中
|
|
|
+ this.setParentNode(node);
|
|
|
+ } else {
|
|
|
+ //当前是取消选中,将所有子节点都取消选中
|
|
|
+ this.setChildenNode(node);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ setParentNode(node) {
|
|
|
+ if (node.parent) {
|
|
|
+ for (const key in node) {
|
|
|
+ if (key === "parent") {
|
|
|
+ node[key].checked = true;
|
|
|
+ this.setParentNode(node[key]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ setChildenNode(node) {
|
|
|
+ let len = node.childNodes.length;
|
|
|
+ for (let i = 0; i < len; i++) {
|
|
|
+ node.childNodes[i].checked = false;
|
|
|
+ this.setChildenNode(node.childNodes[i]);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //5.tree end ------------------------------------------------------------>
|
|
|
+
|
|
|
},
|
|
|
mounted(){
|
|
|
//获取页面列表
|