jiaxing.zhou

fix(roleConfig): 修复角色配置菜单选择后未保存的问题

- 在选择菜单后通过 $nextTick 设置选中节点并更新合并后的选中数据
- 在菜单变更时使用合并后的选中节点数据
- 优化了初始加载时的选中节点处理逻辑
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
33 </Formitem> 33 </Formitem>
34 </el-form> 34 </el-form>
35 <el-tree 35 <el-tree
36 + ref="tree"
36 class="menuTree" 37 class="menuTree"
37 v-else 38 v-else
38 :data="treeData" 39 :data="treeData"
...@@ -221,7 +222,7 @@ export default { ...@@ -221,7 +222,7 @@ export default {
221 } 222 }
222 }); 223 });
223 } else if (this.type == "menuChange") { 224 } else if (this.type == "menuChange") {
224 - obj.menuId = this.treeCheckData; 225 + obj.menuId = this.treeCheckData; // 使用合并后的选中节点
225 obj.roleId = this.formData.roleId; 226 obj.roleId = this.formData.roleId;
226 this.menuChangeapi(obj); 227 this.menuChangeapi(obj);
227 } 228 }
...@@ -298,7 +299,11 @@ export default { ...@@ -298,7 +299,11 @@ export default {
298 .then((res) => { 299 .then((res) => {
299 if (res.code === "200") { 300 if (res.code === "200") {
300 this.checkedKeys = res.data.filter(item => item.isBinding && (item.parentMenuId!=0 ) ).map(item => item.menuId); 301 this.checkedKeys = res.data.filter(item => item.isBinding && (item.parentMenuId!=0 ) ).map(item => item.menuId);
301 - console.log(this.checkedKeys); 302 + //console.log('初始 checkedKeys:', this.checkedKeys);
303 + this.$nextTick(() => {
304 + this.$refs.tree.setCheckedKeys(this.checkedKeys);
305 + this.updateTreeCheckData();
306 + });
302 } else { 307 } else {
303 this.alertWarningMsg(res.message); 308 this.alertWarningMsg(res.message);
304 } 309 }
...@@ -308,6 +313,13 @@ export default { ...@@ -308,6 +313,13 @@ export default {
308 }); 313 });
309 } 314 }
310 }, 315 },
316 + //加载选中的节点及半选中的父节点
317 + updateTreeCheckData() {
318 + const checkedKeys = this.$refs.tree.getCheckedKeys();
319 + const halfCheckedKeys = this.$refs.tree.getHalfCheckedKeys();
320 + this.treeCheckData = checkedKeys.concat(halfCheckedKeys);
321 + //console.log('合并后的 treeCheckData:', this.treeCheckData);
322 + },
311 323
312 }, 324 },
313 }; 325 };
......