1. // 使用 checked_data 修改树节点的 勾选状态
    2. function renderTreeChecked(tree_data, checked_data) {
    3. for (let node of tree_data) {
    4. if (node.children) {
    5. node.checked = checkTreeCheckedAll(node.children, checked_data);
    6. renderTreeChecked(node.children, checked_data);
    7. } else {
    8. if (checked_data.includes(node.value)) {
    9. node.checked = true;
    10. } else {
    11. node.checked = false;
    12. }
    13. }
    14. }
    15. }
    16. // 检查树节点是否全选
    17. function checkTreeCheckedAll(
    18. tree_data = [],
    19. checked_data = [],
    20. checked_all = true
    21. ) {
    22. for (let node of tree_data) {
    23. if (node.children) {
    24. checked_all = checkTreeCheckedAll(node.children, checked_data);
    25. if (!checked_all) break;
    26. } else {
    27. if (!checked_data.includes(node.value)) {
    28. checked_all = false;
    29. break;
    30. }
    31. }
    32. }
    33. return checked_all;
    34. }
    35. // 获取树形结构数组全部value值
    36. function getTreeAllValue(tree_data = [], values = []) {
    37. for (let node of tree_data) {
    38. if (node.children) {
    39. getTreeAllValue(node.children, values);
    40. } else {
    41. values.push(node.value);
    42. }
    43. }
    44. return values;
    45. }