1 line
22 KiB
JSON
1 line
22 KiB
JSON
{"remainingRequest":"G:\\project\\smart-power-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!G:\\project\\smart-power-ui\\src\\components\\Tree\\src\\tree-node.vue?vue&type=script&lang=js&","dependencies":[{"path":"G:\\project\\smart-power-ui\\src\\components\\Tree\\src\\tree-node.vue","mtime":1613705053784},{"path":"G:\\project\\smart-power-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1591751767036},{"path":"G:\\project\\smart-power-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":1610504270305},{"path":"G:\\project\\smart-power-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1591751767036},{"path":"G:\\project\\smart-power-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":1610504274351}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCBFbENvbGxhcHNlVHJhbnNpdGlvbiBmcm9tICdlbGVtZW50LXVpL3NyYy90cmFuc2l0aW9ucy9jb2xsYXBzZS10cmFuc2l0aW9uJzsKaW1wb3J0IEVsQ2hlY2tib3ggZnJvbSAnZWxlbWVudC11aS9wYWNrYWdlcy9jaGVja2JveCc7CmltcG9ydCBFbFBvcG92ZXIgZnJvbSAnZWxlbWVudC11aS9wYWNrYWdlcy9wb3BvdmVyJzsKaW1wb3J0IGVtaXR0ZXIgZnJvbSAnZWxlbWVudC11aS9zcmMvbWl4aW5zL2VtaXR0ZXInOwppbXBvcnQgeyBnZXROb2RlS2V5IH0gZnJvbSAnLi9tb2RlbC91dGlsJzsKCmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnRWxUcmVlTm9kZScsCgogIGNvbXBvbmVudE5hbWU6ICdFbFRyZWVOb2RlJywKCiAgbWl4aW5zOiBbZW1pdHRlcl0sCgogIHByb3BzOiB7CiAgICBub2RlOiB7CiAgICAgIGRlZmF1bHQoKSB7CiAgICAgICAgcmV0dXJuIHt9OwogICAgICB9CiAgICB9LAogICAgcHJvcHM6IHt9LAogICAgcmVuZGVyQ29udGVudDogRnVuY3Rpb24sCiAgICByZW5kZXJBZnRlckV4cGFuZDogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiB0cnVlCiAgICB9LAogICAgc2hvd0NoZWNrYm94OiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9CiAgfSwKCiAgY29tcG9uZW50czogewogICAgRWxDb2xsYXBzZVRyYW5zaXRpb24sCiAgICBFbFBvcG92ZXIsCiAgICBFbENoZWNrYm94LAogICAgTm9kZUNvbnRlbnQ6IHsKICAgICAgcHJvcHM6IHsKICAgICAgICBub2RlOiB7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgIH0KICAgICAgfSwKICAgICAgcmVuZGVyKGgpIHsKICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLiRwYXJlbnQ7CiAgICAgICAgY29uc3QgdHJlZSA9IHBhcmVudC50cmVlOwogICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGU7CiAgICAgICAgY29uc3QgeyBkYXRhLCBzdG9yZSB9ID0gbm9kZTsKICAgICAgICByZXR1cm4gKAogICAgICAgICAgcGFyZW50LnJlbmRlckNvbnRlbnQKICAgICAgICAgICAgPyBwYXJlbnQucmVuZGVyQ29udGVudC5jYWxsKHBhcmVudC5fcmVuZGVyUHJveHksIGgsIHsgX3NlbGY6IHRyZWUuJHZub2RlLmNvbnRleHQsIG5vZGUsIGRhdGEsIHN0b3JlIH0pCiAgICAgICAgICAgIDogdHJlZS4kc2NvcGVkU2xvdHMuZGVmYXVsdAogICAgICAgICAgICAgID8gdHJlZS4kc2NvcGVkU2xvdHMuZGVmYXVsdCh7IG5vZGUsIGRhdGEgfSkKICAgICAgICAgICAgICA6IDxzcGFuIGNsYXNzPSJlbC10cmVlLW5vZGVfX2xhYmVsIj57IG5vZGUubGFiZWwgfTwvc3Bhbj4KICAgICAgICApOwogICAgICB9CiAgICB9CiAgfSwKCiAgZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIHRyZWU6IG51bGwsCiAgICAgIGV4cGFuZGVkOiBmYWxzZSwKICAgICAgY2hpbGROb2RlUmVuZGVyZWQ6IGZhbHNlLAogICAgICBvbGRDaGVja2VkOiBudWxsLAogICAgICBvbGRJbmRldGVybWluYXRlOiBudWxsLAogICAgICB2aXNpYmxlOiBmYWxzZSwKICAgICAgZXY6IG51bGwsCiAgICAgIGNoZWNrVmFsdWU6ICcnCiAgICB9OwogIH0sCgogIHdhdGNoOiB7CiAgICAnbm9kZS5pbmRldGVybWluYXRlJyh2YWwpIHsKICAgICAgdGhpcy5oYW5kbGVTZWxlY3RDaGFuZ2UodGhpcy5ub2RlLmNoZWNrZWQsIHZhbCk7CiAgICB9LAoKICAgICdub2RlLmNoZWNrZWQnKHZhbCkgewogICAgICB0aGlzLmhhbmRsZVNlbGVjdENoYW5nZSh2YWwsIHRoaXMubm9kZS5pbmRldGVybWluYXRlKTsKICAgIH0sCgogICAgJ25vZGUuZXhwYW5kZWQnKHZhbCkgewogICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB0aGlzLmV4cGFuZGVkID0gdmFsKTsKICAgICAgaWYgKHZhbCkgewogICAgICAgIHRoaXMuY2hpbGROb2RlUmVuZGVyZWQgPSB0cnVlOwogICAgICB9CiAgICB9CiAgfSwKCiAgbWV0aG9kczogewogICAgcG9wb3ZlckhpZGVyKCkgewogICAgICB0aGlzLnZpc2libGUgPSBmYWxzZQogICAgfSwKICAgIGdldE5vZGVLZXkobm9kZSkgewogICAgICByZXR1cm4gZ2V0Tm9kZUtleSh0aGlzLnRyZWUubm9kZUtleSwgbm9kZS5kYXRhKTsKICAgIH0sCgogICAgaGFuZGxlU2VsZWN0Q2hhbmdlKGNoZWNrZWQsIGluZGV0ZXJtaW5hdGUpIHsKICAgICAgaWYgKHRoaXMub2xkQ2hlY2tlZCAhPT0gY2hlY2tlZCAmJiB0aGlzLm9sZEluZGV0ZXJtaW5hdGUgIT09IGluZGV0ZXJtaW5hdGUpIHsKICAgICAgICB0aGlzLnRyZWUuJGVtaXQoJ2NoZWNrLWNoYW5nZScsIHRoaXMubm9kZS5kYXRhLCBjaGVja2VkLCBpbmRldGVybWluYXRlKTsKICAgICAgfQogICAgICB0aGlzLm9sZENoZWNrZWQgPSBjaGVja2VkOwogICAgICB0aGlzLmluZGV0ZXJtaW5hdGUgPSBpbmRldGVybWluYXRlOwogICAgfSwKCiAgICBoYW5kbGVDbGljaygpIHsKICAgICAgY29uc3Qgc3RvcmUgPSB0aGlzLnRyZWUuc3RvcmU7CiAgICAgIHN0b3JlLnNldEN1cnJlbnROb2RlKHRoaXMubm9kZSk7CiAgICAgIHRoaXMudHJlZS4kZW1pdCgnY3VycmVudC1jaGFuZ2UnLCBzdG9yZS5jdXJyZW50Tm9kZSA/IHN0b3JlLmN1cnJlbnROb2RlLmRhdGEgOiBudWxsLCBzdG9yZS5jdXJyZW50Tm9kZSk7CiAgICAgIHRoaXMudHJlZS5jdXJyZW50Tm9kZSA9IHRoaXM7CiAgICAgIGlmICh0aGlzLnRyZWUuZXhwYW5kT25DbGlja05vZGUpIHsKICAgICAgICB0aGlzLmhhbmRsZUV4cGFuZEljb25DbGljaygpOwogICAgICB9CiAgICAgIGlmICh0aGlzLnRyZWUuY2hlY2tPbkNsaWNrTm9kZSAmJiAhdGhpcy5ub2RlLmRpc2FibGVkKSB7CiAgICAgICAgdGhpcy5oYW5kbGVDaGVja0NoYW5nZShudWxsLCB7CiAgICAgICAgICB0YXJnZXQ6IHsgY2hlY2tlZDogIXRoaXMubm9kZS5jaGVja2VkIH0KICAgICAgICB9KTsKICAgICAgfQogICAgICB0aGlzLnRyZWUuJGVtaXQoJ25vZGUtY2xpY2snLCB0aGlzLm5vZGUuZGF0YSwgdGhpcy5ub2RlLCB0aGlzKTsKICAgIH0sCgogICAgaGFuZGxlQ29udGV4dE1lbnUoZXZlbnQpIHsKICAgICAgaWYgKHRoaXMudHJlZS5fZXZlbnRzWydub2RlLWNvbnRleHRtZW51J10gJiYgdGhpcy50cmVlLl9ldmVudHNbJ25vZGUtY29udGV4dG1lbnUnXS5sZW5ndGggPiAwKSB7CiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgfQogICAgICB0aGlzLnRyZWUuJGVtaXQoJ25vZGUtY29udGV4dG1lbnUnLCBldmVudCwgdGhpcy5ub2RlLmRhdGEsIHRoaXMubm9kZSwgdGhpcyk7CiAgICB9LAoKICAgIGhhbmRsZUV4cGFuZEljb25DbGljaygpIHsKICAgICAgaWYgKHRoaXMubm9kZS5pc0xlYWYpIHJldHVybjsKICAgICAgaWYgKHRoaXMuZXhwYW5kZWQpIHsKICAgICAgICB0aGlzLnRyZWUuJGVtaXQoJ25vZGUtY29sbGFwc2UnLCB0aGlzLm5vZGUuZGF0YSwgdGhpcy5ub2RlLCB0aGlzKTsKICAgICAgICB0aGlzLm5vZGUuY29sbGFwc2UoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLm5vZGUuZXhwYW5kKCk7CiAgICAgICAgdGhpcy50cmVlLiRlbWl0KCdub2RlLWV4cGFuZCcsIHRoaXMubm9kZS5kYXRhLCB0aGlzLm5vZGUsIHRoaXMpOwogICAgICB9CiAgICB9LAogICAgLy8g5by556qX5YWz6Zet55qE5pa55rOVCiAgICBjbG9zZVBvcG92ZXIoKSB7CiAgICAgIHRoaXMubm9kZS5jaGVja2VkID0gIXRoaXMubm9kZS5jaGVja2VkCiAgICAgIHRoaXMudHJlZS4kZW1pdCgnaGlkUG9wb3ZlcicsIHRoaXMubm9kZS5kYXRhLmlkKQogICAgICB0aGlzLnZpc2libGUgPSBmYWxzZQogICAgfSwKICAgIC8vIOS7hemAieaLqeiHquW3seiKgueCuQogICAgaHlicmlkKCkgewogICAgICB0aGlzLmV4dHN0KCdoeWJyaWQnLCB0aGlzLmNoZWNrVmFsdWUpCiAgICAgIHRoaXMudHJlZS4kZW1pdCgnaGlkUG9wb3ZlcicsIHRoaXMubm9kZS5kYXRhLmlkKQogICAgICB0aGlzLnZpc2libGUgPSBmYWxzZQogICAgfSwKICAgIGV4dHN0KHR5cGUsIGNoZWNrVmFsdWUpIHsKICAgICAgdGhpcy5ub2RlLnNldENoZWNrZWQodGhpcy5ldi50YXJnZXQuY2hlY2tlZCwgIXRoaXMudHJlZS5jaGVja1N0cmljdGx5KTsKICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4gewogICAgICAgIGNvbnN0IHN0b3JlID0gdGhpcy50cmVlLnN0b3JlOwogICAgICAgIHRoaXMudHJlZS4kZW1pdCgnY2hlY2snLCB0aGlzLm5vZGUuZGF0YSwgewogICAgICAgICAgY2hlY2tlZE5vZGVzOiBzdG9yZS5nZXRDaGVja2VkTm9kZXMoKSwKICAgICAgICAgIGNoZWNrZWRLZXlzOiBzdG9yZS5nZXRDaGVja2VkS2V5cygpLAogICAgICAgICAgaGFsZkNoZWNrZWROb2Rlczogc3RvcmUuZ2V0SGFsZkNoZWNrZWROb2RlcygpLAogICAgICAgICAgaGFsZkNoZWNrZWRLZXlzOiBzdG9yZS5nZXRIYWxmQ2hlY2tlZEtleXMoKSwKICAgICAgICB9LCB0eXBlLCBjaGVja1ZhbHVlKTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g6YCJ5oup6Ieq5bex5Lul5Y+K5Lul5LiL5omA5pyJ6IqC54K5CiAgICBub2RlQ2hpbGQoKSB7CiAgICAgdGhpcy5leHRzdCgnbm9kZUNoaWxkJywgdGhpcy5jaGVja1ZhbHVlKQogICAgIHRoaXMudHJlZS4kZW1pdCgnaGlkUG9wb3ZlcicsIHRoaXMubm9kZS5kYXRhLmlkKQogICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlCiAgICB9LAoKICAgIGhhbmRsZUNoZWNrQ2hhbmdlKHZhbHVlLCBldikgewogICAgICB0aGlzLnRyZWUuJGVtaXQoJ29wZW5Qb3BvdmVyJywgdGhpcy5ub2RlLmRhdGEuaWQpCiAgICAgIHRoaXMuY2hlY2tWYWx1ZSA9IHZhbHVlCiAgICAgIHRoaXMudmlzaWJsZSA9IHRydWUKICAgICAgdGhpcy5ldiA9IGV2CiAgICB9LAoKICAgIGhhbmRsZUNoaWxkTm9kZUV4cGFuZChub2RlRGF0YSwgbm9kZSwgaW5zdGFuY2UpIHsKICAgICAgdGhpcy5icm9hZGNhc3QoJ0VsVHJlZU5vZGUnLCAndHJlZS1ub2RlLWV4cGFuZCcsIG5vZGUpOwogICAgICB0aGlzLnRyZWUuJGVtaXQoJ25vZGUtZXhwYW5kJywgbm9kZURhdGEsIG5vZGUsIGluc3RhbmNlKTsKICAgIH0sCgogICAgaGFuZGxlRHJhZ1N0YXJ0KGV2ZW50KSB7CiAgICAgIGlmICghdGhpcy50cmVlLmRyYWdnYWJsZSkgcmV0dXJuOwogICAgICB0aGlzLnRyZWUuJGVtaXQoJ3RyZWUtbm9kZS1kcmFnLXN0YXJ0JywgZXZlbnQsIHRoaXMpOwogICAgfSwKCiAgICBoYW5kbGVEcmFnT3ZlcihldmVudCkgewogICAgICBpZiAoIXRoaXMudHJlZS5kcmFnZ2FibGUpIHJldHVybjsKICAgICAgdGhpcy50cmVlLiRlbWl0KCd0cmVlLW5vZGUtZHJhZy1vdmVyJywgZXZlbnQsIHRoaXMpOwogICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgfSwKCiAgICBoYW5kbGVEcm9wKGV2ZW50KSB7CiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICB9LAoKICAgIGhhbmRsZURyYWdFbmQoZXZlbnQpIHsKICAgICAgaWYgKCF0aGlzLnRyZWUuZHJhZ2dhYmxlKSByZXR1cm47CiAgICAgIHRoaXMudHJlZS4kZW1pdCgndHJlZS1ub2RlLWRyYWctZW5kJywgZXZlbnQsIHRoaXMpOwogICAgfQogIH0sCiAgY3JlYXRlZCgpIHsKICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuJHBhcmVudDsKCiAgICBpZiAocGFyZW50LmlzVHJlZSkgewogICAgICB0aGlzLnRyZWUgPSBwYXJlbnQ7CiAgICB9IGVsc2UgewogICAgICB0aGlzLnRyZWUgPSBwYXJlbnQudHJlZTsKICAgIH0KCiAgICBjb25zdCB0cmVlID0gdGhpcy50cmVlOwogICAgaWYgKCF0cmVlKSB7CiAgICAgIGNvbnNvbGUud2FybignQ2FuIG5vdCBmaW5kIG5vZGVcJ3MgdHJlZS4nKTsKICAgIH0KCiAgICBjb25zdCBwcm9wcyA9IHRyZWUucHJvcHMgfHwge307CiAgICBjb25zdCBjaGlsZHJlbktleSA9IHByb3BzWydjaGlsZHJlbiddIHx8ICdjaGlsZHJlbic7CgogICAgdGhpcy4kd2F0Y2goYG5vZGUuZGF0YS4ke2NoaWxkcmVuS2V5fWAsICgpID0+IHsKICAgICAgdGhpcy5ub2RlLnVwZGF0ZUNoaWxkcmVuKCk7CiAgICB9KTsKCiAgICBpZiAodGhpcy5ub2RlLmV4cGFuZGVkKSB7CiAgICAgIHRoaXMuZXhwYW5kZWQgPSB0cnVlOwogICAgICB0aGlzLmNoaWxkTm9kZVJlbmRlcmVkID0gdHJ1ZTsKICAgIH0KCiAgICBpZih0aGlzLnRyZWUuYWNjb3JkaW9uKSB7CiAgICAgIHRoaXMuJG9uKCd0cmVlLW5vZGUtZXhwYW5kJywgbm9kZSA9PiB7CiAgICAgICAgaWYodGhpcy5ub2RlICE9PSBub2RlKSB7CiAgICAgICAgICB0aGlzLm5vZGUuY29sbGFwc2UoKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfQogIH0KfTsK"},{"version":3,"sources":["tree-node.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"tree-node.vue","sourceRoot":"src/components/Tree/src","sourcesContent":["<template>\r\n <div\r\n class=\"el-tree-node\"\r\n @click.stop=\"handleClick\"\r\n @contextmenu=\"($event) => this.handleContextMenu($event)\"\r\n v-show=\"node.visible\"\r\n :class=\"{\r\n 'is-expanded': expanded,\r\n 'is-current': node.isCurrent,\r\n 'is-hidden': !node.visible,\r\n 'is-focusable': !node.disabled,\r\n 'is-checked': !node.disabled && node.checked\r\n }\"\r\n role=\"treeitem\"\r\n tabindex=\"-1\"\r\n :aria-expanded=\"expanded\"\r\n :aria-disabled=\"node.disabled\"\r\n :aria-checked=\"node.checked\"\r\n :draggable=\"tree.draggable\"\r\n @dragstart.stop=\"handleDragStart\"\r\n @dragover.stop=\"handleDragOver\"\r\n @dragend.stop=\"handleDragEnd\"\r\n @drop.stop=\"handleDrop\"\r\n ref=\"node\"\r\n >\r\n <div class=\"el-tree-node__content\"\r\n :style=\"{ 'padding-left': (node.level - 1) * tree.indent + 'px' }\">\r\n <span\r\n @click.stop=\"handleExpandIconClick\"\r\n :class=\"[\r\n { 'is-leaf': node.isLeaf, expanded: !node.isLeaf && expanded },\r\n 'el-tree-node__expand-icon',\r\n tree.iconClass ? tree.iconClass : 'el-icon-caret-right'\r\n ]\"\r\n >\r\n </span>\r\n <el-popover\r\n placement=\"top\"\r\n width=\"300\"\r\n trigger=\"manual\"\r\n offset=\"-20\"\r\n popper-class=\"popper-block\"\r\n v-model=\"visible\">\r\n <el-button icon=\"el-icon-close\" @click=\"closePopover\" type=\"text\" style=\" position: absolute; right: 6px; top: -3px;\" class=\"popover-close-icon\" ></el-button>\r\n <span class=\"popover-info-span\">\r\n 请问您将对数据做如下操作?<br>\r\n 《仅限此级》: 只操作当前数据。</br>\r\n 《所有子级》: 自己以及所有子级别数据。\r\n </span>\r\n\r\n <div style=\"text-align: right; margin: 0; display: flex; width: 100%;margin-top: 5px;\">\r\n <span class=\"popover-bottom-span\" @click=\"hybrid\">仅限此级</span>\r\n <span class=\"popover-bottom-span\" @click=\"nodeChild\">所有子级</span>\r\n </div>\r\n\r\n <el-checkbox\r\n style=\"margin-right: 5px; line-height: 6px;\"\r\n slot=\"reference\"\r\n v-if=\"showCheckbox\"\r\n v-model=\"node.checked\"\r\n :indeterminate=\"node.indeterminate\"\r\n :disabled=\"!!node.disabled\"\r\n @click.native.stop\r\n @change=\"handleCheckChange\"\r\n >\r\n </el-checkbox>\r\n </el-popover>\r\n <span\r\n v-if=\"node.loading\"\r\n class=\"el-tree-node__loading-icon el-icon-loading\">\r\n </span>\r\n <node-content :node=\"node\"></node-content>\r\n </div>\r\n <el-collapse-transition>\r\n <div\r\n class=\"el-tree-node__children\"\r\n v-if=\"!renderAfterExpand || childNodeRendered\"\r\n v-show=\"expanded\"\r\n role=\"group\"\r\n :aria-expanded=\"expanded\"\r\n >\r\n <el-tree-node\r\n :render-content=\"renderContent\"\r\n v-for=\"child in node.childNodes\"\r\n :render-after-expand=\"renderAfterExpand\"\r\n :show-checkbox=\"showCheckbox\"\r\n :key=\"getNodeKey(child)\"\r\n :node=\"child\"\r\n @node-expand=\"handleChildNodeExpand\">\r\n </el-tree-node>\r\n </div>\r\n </el-collapse-transition>\r\n </div>\r\n</template>\r\n\r\n<script >\r\n import ElCollapseTransition from 'element-ui/src/transitions/collapse-transition';\r\n import ElCheckbox from 'element-ui/packages/checkbox';\r\n import ElPopover from 'element-ui/packages/popover';\r\n import emitter from 'element-ui/src/mixins/emitter';\r\n import { getNodeKey } from './model/util';\r\n\r\n export default {\r\n name: 'ElTreeNode',\r\n\r\n componentName: 'ElTreeNode',\r\n\r\n mixins: [emitter],\r\n\r\n props: {\r\n node: {\r\n default() {\r\n return {};\r\n }\r\n },\r\n props: {},\r\n renderContent: Function,\r\n renderAfterExpand: {\r\n type: Boolean,\r\n default: true\r\n },\r\n showCheckbox: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n\r\n components: {\r\n ElCollapseTransition,\r\n ElPopover,\r\n ElCheckbox,\r\n NodeContent: {\r\n props: {\r\n node: {\r\n required: true\r\n }\r\n },\r\n render(h) {\r\n const parent = this.$parent;\r\n const tree = parent.tree;\r\n const node = this.node;\r\n const { data, store } = node;\r\n return (\r\n parent.renderContent\r\n ? parent.renderContent.call(parent._renderProxy, h, { _self: tree.$vnode.context, node, data, store })\r\n : tree.$scopedSlots.default\r\n ? tree.$scopedSlots.default({ node, data })\r\n : <span class=\"el-tree-node__label\">{ node.label }</span>\r\n );\r\n }\r\n }\r\n },\r\n\r\n data() {\r\n return {\r\n tree: null,\r\n expanded: false,\r\n childNodeRendered: false,\r\n oldChecked: null,\r\n oldIndeterminate: null,\r\n visible: false,\r\n ev: null,\r\n checkValue: ''\r\n };\r\n },\r\n\r\n watch: {\r\n 'node.indeterminate'(val) {\r\n this.handleSelectChange(this.node.checked, val);\r\n },\r\n\r\n 'node.checked'(val) {\r\n this.handleSelectChange(val, this.node.indeterminate);\r\n },\r\n\r\n 'node.expanded'(val) {\r\n this.$nextTick(() => this.expanded = val);\r\n if (val) {\r\n this.childNodeRendered = true;\r\n }\r\n }\r\n },\r\n\r\n methods: {\r\n popoverHider() {\r\n this.visible = false\r\n },\r\n getNodeKey(node) {\r\n return getNodeKey(this.tree.nodeKey, node.data);\r\n },\r\n\r\n handleSelectChange(checked, indeterminate) {\r\n if (this.oldChecked !== checked && this.oldIndeterminate !== indeterminate) {\r\n this.tree.$emit('check-change', this.node.data, checked, indeterminate);\r\n }\r\n this.oldChecked = checked;\r\n this.indeterminate = indeterminate;\r\n },\r\n\r\n handleClick() {\r\n const store = this.tree.store;\r\n store.setCurrentNode(this.node);\r\n this.tree.$emit('current-change', store.currentNode ? store.currentNode.data : null, store.currentNode);\r\n this.tree.currentNode = this;\r\n if (this.tree.expandOnClickNode) {\r\n this.handleExpandIconClick();\r\n }\r\n if (this.tree.checkOnClickNode && !this.node.disabled) {\r\n this.handleCheckChange(null, {\r\n target: { checked: !this.node.checked }\r\n });\r\n }\r\n this.tree.$emit('node-click', this.node.data, this.node, this);\r\n },\r\n\r\n handleContextMenu(event) {\r\n if (this.tree._events['node-contextmenu'] && this.tree._events['node-contextmenu'].length > 0) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n this.tree.$emit('node-contextmenu', event, this.node.data, this.node, this);\r\n },\r\n\r\n handleExpandIconClick() {\r\n if (this.node.isLeaf) return;\r\n if (this.expanded) {\r\n this.tree.$emit('node-collapse', this.node.data, this.node, this);\r\n this.node.collapse();\r\n } else {\r\n this.node.expand();\r\n this.tree.$emit('node-expand', this.node.data, this.node, this);\r\n }\r\n },\r\n // 弹窗关闭的方法\r\n closePopover() {\r\n this.node.checked = !this.node.checked\r\n this.tree.$emit('hidPopover', this.node.data.id)\r\n this.visible = false\r\n },\r\n // 仅选择自己节点\r\n hybrid() {\r\n this.extst('hybrid', this.checkValue)\r\n this.tree.$emit('hidPopover', this.node.data.id)\r\n this.visible = false\r\n },\r\n extst(type, checkValue) {\r\n this.node.setChecked(this.ev.target.checked, !this.tree.checkStrictly);\r\n this.$nextTick(() => {\r\n const store = this.tree.store;\r\n this.tree.$emit('check', this.node.data, {\r\n checkedNodes: store.getCheckedNodes(),\r\n checkedKeys: store.getCheckedKeys(),\r\n halfCheckedNodes: store.getHalfCheckedNodes(),\r\n halfCheckedKeys: store.getHalfCheckedKeys(),\r\n }, type, checkValue);\r\n });\r\n },\r\n // 选择自己以及以下所有节点\r\n nodeChild() {\r\n this.extst('nodeChild', this.checkValue)\r\n this.tree.$emit('hidPopover', this.node.data.id)\r\n this.visible = false\r\n },\r\n\r\n handleCheckChange(value, ev) {\r\n this.tree.$emit('openPopover', this.node.data.id)\r\n this.checkValue = value\r\n this.visible = true\r\n this.ev = ev\r\n },\r\n\r\n handleChildNodeExpand(nodeData, node, instance) {\r\n this.broadcast('ElTreeNode', 'tree-node-expand', node);\r\n this.tree.$emit('node-expand', nodeData, node, instance);\r\n },\r\n\r\n handleDragStart(event) {\r\n if (!this.tree.draggable) return;\r\n this.tree.$emit('tree-node-drag-start', event, this);\r\n },\r\n\r\n handleDragOver(event) {\r\n if (!this.tree.draggable) return;\r\n this.tree.$emit('tree-node-drag-over', event, this);\r\n event.preventDefault();\r\n },\r\n\r\n handleDrop(event) {\r\n event.preventDefault();\r\n },\r\n\r\n handleDragEnd(event) {\r\n if (!this.tree.draggable) return;\r\n this.tree.$emit('tree-node-drag-end', event, this);\r\n }\r\n },\r\n created() {\r\n const parent = this.$parent;\r\n\r\n if (parent.isTree) {\r\n this.tree = parent;\r\n } else {\r\n this.tree = parent.tree;\r\n }\r\n\r\n const tree = this.tree;\r\n if (!tree) {\r\n console.warn('Can not find node\\'s tree.');\r\n }\r\n\r\n const props = tree.props || {};\r\n const childrenKey = props['children'] || 'children';\r\n\r\n this.$watch(`node.data.${childrenKey}`, () => {\r\n this.node.updateChildren();\r\n });\r\n\r\n if (this.node.expanded) {\r\n this.expanded = true;\r\n this.childNodeRendered = true;\r\n }\r\n\r\n if(this.tree.accordion) {\r\n this.$on('tree-node-expand', node => {\r\n if(this.node !== node) {\r\n this.node.collapse();\r\n }\r\n });\r\n }\r\n }\r\n };\r\n</script>\r\n<style lang=\"scss\">\r\n .popover-bottom-span {\r\n color: #409eff;\r\n display: block;\r\n width: 50%;\r\n text-align: center;\r\n height: 25px;\r\n line-height: 25px;\r\n background: #f9f8f8;\r\n cursor: default;\r\n font-size: 12px\r\n }\r\n .popover-bottom-span:hover {\r\n background: #409eff;\r\n color: #fff;\r\n }\r\n .popover-info-span {\r\n display: block;\r\n height: 65px;\r\n font-size: 13px;\r\n width: 100%;\r\n /* background-color: #f8f6f6; */\r\n padding: 4px;\r\n }\r\n .popover-close-icon {}\r\n .el-tree-node__content {\r\n line-height: 0px;\r\n }\r\n</style>\r\n"]}]} |