f38892f8bffbfb265b0457521294b986.json 64 KB

1
  1. {"remainingRequest":"D:\\test\\ssi-satoken\\ui\\node_modules\\babel-loader\\lib\\index.js!D:\\test\\ssi-satoken\\ui\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\test\\ssi-satoken\\ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\test\\ssi-satoken\\ui\\src\\views\\sysManager\\roleManager\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\test\\ssi-satoken\\ui\\src\\views\\sysManager\\roleManager\\index.vue","mtime":1697529593689},{"path":"D:\\test\\ssi-satoken\\ui\\babel.config.js","mtime":1696909835000},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1669864538178},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\babel-loader\\lib\\index.js","mtime":1669864538095},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1669864538178},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\vue-loader\\lib\\index.js","mtime":1697679531049}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:InVzZSBzdHJpY3QiOwoKdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKCJEOi90ZXN0L3NzaS1zYXRva2VuL3VpL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdC5qcyIpLmRlZmF1bHQ7Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsKICB2YWx1ZTogdHJ1ZQp9KTsKZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkudW5zaGlmdC5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkubWFwLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcudHJpbS5qcyIpOwp2YXIgX3JlZ2VuZXJhdG9yUnVudGltZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoIkQ6L3Rlc3Qvc3NpLXNhdG9rZW4vdWkvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvcmVnZW5lcmF0b3JSdW50aW1lLmpzIikpOwp2YXIgX2FzeW5jVG9HZW5lcmF0b3IyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKCJEOi90ZXN0L3NzaS1zYXRva2VuL3VpL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3IuanMiKSk7CnZhciBfbG9kYXNoID0gcmVxdWlyZSgibG9kYXNoIik7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCnZhciBfZGVmYXVsdCA9IHsKICBuYW1lOiAiUm9sZSIsCiAgZGljdHM6IFsnc3lzX25vcm1hbF9kaXNhYmxlJ10sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIHR5cGVPcHRpb25zOiBbewogICAgICAgIHZhbHVlOiAnMCcsCiAgICAgICAgbGFiZWw6ICfnrqHnkIblkZgnCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJzEnLAogICAgICAgIGxhYmVsOiAn5Lia5Yqh5ZGYJwogICAgICB9XSwKICAgICAgc3RhdHVzT3B0aW9uczogW3sKICAgICAgICB2YWx1ZTogJzAnLAogICAgICAgIGxhYmVsOiAn5q2j5bi4JwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICcxJywKICAgICAgICBsYWJlbDogJ+WBnOeUqCcKICAgICAgfV0sCiAgICAgIC8vIOezu+e7n+euoeeQhuWRmGVkaXQKICAgICAgeHRnbHllZGl0OiBmYWxzZSwKICAgICAgZWRpdDogZmFsc2UsCiAgICAgIHNob3dUYWJsZTogZmFsc2UsCiAgICAgIC8vIOmBrue9qeWxggogICAgICBsb2FkaW5nOiB0cnVlLAogICAgICAvLyDpgInkuK3mlbDnu4QKICAgICAgaWRzOiBbXSwKICAgICAgLy8g6Z2e5Y2V5Liq56aB55SoCiAgICAgIHNpbmdsZTogdHJ1ZSwKICAgICAgLy8g6Z2e5aSa5Liq56aB55SoCiAgICAgIG11bHRpcGxlOiB0cnVlLAogICAgICAvLyDmmL7npLrmkJzntKLmnaHku7YKICAgICAgc2hvd1NlYXJjaDogZmFsc2UsCiAgICAgIGN1cnJlbnRQYWdlOiAxLAogICAgICBwYWdlU2l6ZTogMTAsCiAgICAgIC8vIOaAu+adoeaVsAogICAgICB0b3RhbDogMCwKICAgICAgLy8g6KeS6Imy6KGo5qC85pWw5o2uCiAgICAgIHJvbGVMaXN0OiBbXSwKICAgICAgLy8g5by55Ye65bGC5qCH6aKYCiAgICAgIHRpdGxlOiAiIiwKICAgICAgLy8g5piv5ZCm5pi+56S65by55Ye65bGCCiAgICAgIG9wZW46IGZhbHNlLAogICAgICAvLyDmmK/lkKbmmL7npLrlvLnlh7rlsYLvvIjmlbDmja7mnYPpmZDvvIkKICAgICAgb3BlbkRhdGFTY29wZTogZmFsc2UsCiAgICAgIG1lbnVFeHBhbmQ6IGZhbHNlLAogICAgICBtZW51Tm9kZUFsbDogZmFsc2UsCiAgICAgIGRlcHRFeHBhbmQ6IHRydWUsCiAgICAgIGRlcHROb2RlQWxsOiBmYWxzZSwKICAgICAgcGNPcHRpb25zOiBbewogICAgICAgIHZhbHVlOiAnWFRHTCcsCiAgICAgICAgbGFiZWw6ICdYVEdMJwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICdTSkdMJywKICAgICAgICBsYWJlbDogJ1NKR0wnCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJ1NIR0wnLAogICAgICAgIGxhYmVsOiAnU0hHTCcKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnWVdHTCcsCiAgICAgICAgbGFiZWw6ICdZV0dMJwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICdTSllXJywKICAgICAgICBsYWJlbDogJ1NKWVcnCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJ1lXUFonLAogICAgICAgIGxhYmVsOiAnWVdQWicKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnWVdDWicsCiAgICAgICAgbGFiZWw6ICdZV0NaJwogICAgICB9XSwKICAgICAgLy8g5pel5pyf6IyD5Zu0CiAgICAgIGRhdGVSYW5nZTogW10sCiAgICAgIC8vIOaVsOaNruiMg+WbtOmAiemhuQogICAgICBkYXRhU2NvcGVPcHRpb25zOiBbewogICAgICAgIHZhbHVlOiAiMSIsCiAgICAgICAgbGFiZWw6ICLlhajpg6jmlbDmja7mnYPpmZAiCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogIjIiLAogICAgICAgIGxhYmVsOiAi6Ieq5a6a5pWw5o2u5p2D6ZmQIgogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICIzIiwKICAgICAgICBsYWJlbDogIuacrOmDqOmXqOaVsOaNruadg+mZkCIKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAiNCIsCiAgICAgICAgbGFiZWw6ICLmnKzpg6jpl6jlj4rku6XkuIvmlbDmja7mnYPpmZAiCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogIjUiLAogICAgICAgIGxhYmVsOiAi5LuF5pys5Lq65pWw5o2u5p2D6ZmQIgogICAgICB9XSwKICAgICAgLy8g6I+c5Y2V5YiX6KGoCiAgICAgIG1lbnVPcHRpb25zOiBbXSwKICAgICAgLy8g6YOo6Zeo5YiX6KGoCiAgICAgIGRlcHRPcHRpb25zOiBbXSwKICAgICAgLy8g5p+l6K+i5Y+C5pWwCiAgICAgIHF1ZXJ5UGFyYW1zOiB7CiAgICAgICAgcm9sZU5hbWU6IHVuZGVmaW5lZCwKICAgICAgICByb2xlS2V5OiB1bmRlZmluZWQsCiAgICAgICAgc3RhdHVzOiB1bmRlZmluZWQKICAgICAgfSwKICAgICAgLy8g6KGo5Y2V5Y+C5pWwCiAgICAgIGZvcm06IHt9LAogICAgICBkZWZhdWx0UHJvcHM6IHsKICAgICAgICBjaGlsZHJlbjogImNoaWxkcmVuIiwKICAgICAgICBsYWJlbDogImxhYmVsIgogICAgICB9LAogICAgICAvLyDooajljZXmoKHpqowKICAgICAgcnVsZXM6IHsKICAgICAgICByb2xlTmFtZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuinkuiJsuWQjeensOS4jeiDveS4uuepuiIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9XSwKICAgICAgICByb2xlS2V5OiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi5p2D6ZmQ5a2X56ym5LiN6IO95Li656m6IiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dLAogICAgICAgIHJvbGVTb3J0OiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6KeS6Imy6aG65bqP5LiN6IO95Li656m6IiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dCiAgICAgIH0KICAgIH07CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgdGhpcy5nZXRMaXN0KCk7CiAgfSwKICBtZXRob2RzOiB7CiAgICBjaGFuZ2VwYzogZnVuY3Rpb24gY2hhbmdlcGModmFsdWUpIHsKICAgICAgdGhpcy5nZXRNZW51VHJlZXNlbGVjdCh2YWx1ZSk7CiAgICB9LAogICAgLy8g5YiX6KGo54q25oCB5qC85byP5YyWCiAgICB0eXBlRm9ybWF0OiBmdW5jdGlvbiB0eXBlRm9ybWF0KF9yZWYpIHsKICAgICAgdmFyIGNlbGxWYWx1ZSA9IF9yZWYuY2VsbFZhbHVlOwogICAgICB2YXIgYmVsb25nVG8gPSAn5pyq55+l55qE57G75Z6LJzsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnR5cGVPcHRpb25zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKGNlbGxWYWx1ZSA9PSAiMCIpIHsKICAgICAgICAgIGJlbG9uZ1RvID0gIueuoeeQhuWRmCI7CiAgICAgICAgfSBlbHNlIGlmIChjZWxsVmFsdWUgPT0gIjEiKSB7CiAgICAgICAgICBiZWxvbmdUbyA9ICLkuJrliqHlkZgiOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gYmVsb25nVG87CiAgICB9LAogICAgLyoqIOafpeivouinkuiJsuWIl+ihqCAqL2dldExpc3Q6IGZ1bmN0aW9uIGdldExpc3QoKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgIHJldHVybiAoMCwgX2FzeW5jVG9HZW5lcmF0b3IyLmRlZmF1bHQpKCAvKiNfX1BVUkVfXyovKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBzZWFyY2hQYXJhbXM7CiAgICAgICAgcmV0dXJuICgwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfdGhpcy5zaG93U2VhcmNoID0gdHJ1ZTsKICAgICAgICAgICAgICBfdGhpcy54dGdseWVkaXQgPSB0cnVlOwogICAgICAgICAgICAgIF90aGlzLmVkaXQgPSB0cnVlOwogICAgICAgICAgICAgIF90aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgIHNlYXJjaFBhcmFtcyA9IHsKICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBfdGhpcy5jdXJyZW50UGFnZSwKICAgICAgICAgICAgICAgIHBhZ2VTaXplOiBfdGhpcy5wYWdlU2l6ZSwKICAgICAgICAgICAgICAgIHJvbGVOYW1lOiBfdGhpcy5xdWVyeVBhcmFtcy5yb2xlTmFtZSwKICAgICAgICAgICAgICAgIHJvbGVLZXk6IF90aGlzLnF1ZXJ5UGFyYW1zLnJvbGVLZXksCiAgICAgICAgICAgICAgICBzdGF0dXM6IF90aGlzLnF1ZXJ5UGFyYW1zLnN0YXR1cwogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDc7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLiRheGlvcy5nZXQoJy9zeXNSb2xlQ29udHJvbGxlci9nZXRBbGwnLCB7CiAgICAgICAgICAgICAgICBwYXJhbXM6IHNlYXJjaFBhcmFtcwogICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgX3RoaXMucm9sZUxpc3QgPSByZXMuZGF0YS5yZWNvcmRzOwogICAgICAgICAgICAgICAgX3RoaXMudG90YWwgPSByZXMuZGF0YS50b3RhbDsKICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5yZWNvcmRzID09ICcnKSB7CiAgICAgICAgICAgICAgICAgIF90aGlzLnNob3dUYWJsZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgX3RoaXMuc2hvd1RhYmxlID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF90aGlzLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgIF90aGlzLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgIC8vIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+iOt+WPluaVsOaNruWHuumUmScgKyBlcnJvcikKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGhhbmRsZVBhZ2VDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZVBhZ2VDaGFuZ2UoX3JlZjIpIHsKICAgICAgdmFyIGN1cnJlbnRQYWdlID0gX3JlZjIuY3VycmVudFBhZ2UsCiAgICAgICAgcGFnZVNpemUgPSBfcmVmMi5wYWdlU2l6ZTsKICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IGN1cnJlbnRQYWdlOwogICAgICB0aGlzLnBhZ2VTaXplID0gcGFnZVNpemU7CiAgICAgIHRoaXMuZ2V0TGlzdCgpOwogICAgfSwKICAgIC8vIOWIl+ihqOeKtuaAgeagvOW8j+WMlgogICAgc3RhdHVzRm9ybWF0OiBmdW5jdGlvbiBzdGF0dXNGb3JtYXQoX3JlZjMpIHsKICAgICAgdmFyIGNlbGxWYWx1ZSA9IF9yZWYzLmNlbGxWYWx1ZTsKICAgICAgdmFyIGJlbG9uZ1RvID0gJ+acquefpeeahOexu+Weiyc7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zdGF0dXNPcHRpb25zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKGNlbGxWYWx1ZSA9PSAiMCIpIHsKICAgICAgICAgIGJlbG9uZ1RvID0gIuato+W4uCI7CiAgICAgICAgfSBlbHNlIGlmIChjZWxsVmFsdWUgPT0gIjEiKSB7CiAgICAgICAgICBiZWxvbmdUbyA9ICLlgZznlKgiOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gYmVsb25nVG87CiAgICB9LAogICAgLyoqIOafpeivouiPnOWNleagkee7k+aehCAqL2dldE1lbnVUcmVlc2VsZWN0OiBmdW5jdGlvbiBnZXRNZW51VHJlZXNlbGVjdChwYykgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgcmV0dXJuICgwLCBfYXN5bmNUb0dlbmVyYXRvcjIuZGVmYXVsdCkoIC8qI19fUFVSRV9fKi8oMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKCkgewogICAgICAgIHZhciBzZWFyY2hQYXJhbXM7CiAgICAgICAgcmV0dXJuICgwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgc2VhcmNoUGFyYW1zID0gewogICAgICAgICAgICAgICAgcGM6IHBjCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDM7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMi4kYXhpb3MuZ2V0KCcvc3lzTWVudUNvbnRyb2xsZXIvdHJlZXNlbGVjdCcsIHsKICAgICAgICAgICAgICAgIHBhcmFtczogc2VhcmNoUGFyYW1zCiAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICBfdGhpczIubWVudU9wdGlvbnMgPSByZXMuZGF0YTsKICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgIF90aGlzMi5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAvLyB0aGlzLiRtZXNzYWdlLmVycm9yKCfojrflj5bmlbDmja7lh7rplJknICsgZXJyb3IpCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMik7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOaJgOacieiPnOWNleiKgueCueaVsOaNrgogICAgZ2V0TWVudUFsbENoZWNrZWRLZXlzOiBmdW5jdGlvbiBnZXRNZW51QWxsQ2hlY2tlZEtleXMoKSB7CiAgICAgIC8vIOebruWJjeiiq+mAieS4reeahOiPnOWNleiKgueCuQogICAgICB2YXIgY2hlY2tlZEtleXMgPSB0aGlzLiRyZWZzLm1lbnUuZ2V0Q2hlY2tlZEtleXMoKTsKICAgICAgLy8g5Y2K6YCJ5Lit55qE6I+c5Y2V6IqC54K5CiAgICAgIHZhciBoYWxmQ2hlY2tlZEtleXMgPSB0aGlzLiRyZWZzLm1lbnUuZ2V0SGFsZkNoZWNrZWRLZXlzKCk7CiAgICAgIGNoZWNrZWRLZXlzLnVuc2hpZnQuYXBwbHkoY2hlY2tlZEtleXMsIGhhbGZDaGVja2VkS2V5cyk7CiAgICAgIHJldHVybiBjaGVja2VkS2V5czsKICAgIH0sCiAgICAvKiog5qC55o2u6KeS6ImySUTmn6Xor6Loj5zljZXmoJHnu5PmnoQgKi9nZXRSb2xlTWVudVRyZWVzZWxlY3Q6IGZ1bmN0aW9uIGdldFJvbGVNZW51VHJlZXNlbGVjdChyb2xlSWQpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIHZhciBwYXJhbSA9IHsKICAgICAgICByb2xlSWQ6IHJvbGVJZAogICAgICB9OwogICAgICB0aGlzLiRheGlvcy5nZXQoJy9zeXNNZW51Q29udHJvbGxlci9yb2xlTWVudVRyZWVzZWxlY3QnLCB7CiAgICAgICAgcGFyYW1zOiBwYXJhbQogICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBfdGhpczMubWVudU9wdGlvbnMgPSByZXMuZGF0YS5tZW51czsKICAgICAgICByZXR1cm4gcmVzLmRhdGE7CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIF90aGlzMy5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgLy8gdGhpcy4kbWVzc2FnZS5lcnJvcign6I635Y+W5pWw5o2u5Ye66ZSZJyArIGVycm9yKQogICAgICB9KTsKICAgIH0sCiAgICAvLyDop5LoibLnirbmgIHkv67mlLkKICAgIGhhbmRsZVN0YXR1c0NoYW5nZTogZnVuY3Rpb24gaGFuZGxlU3RhdHVzQ2hhbmdlKHJvdykgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgdmFyIHRleHQgPSByb3cuc3RhdHVzID09PSAiMCIgPyAi5ZCv55SoIiA6ICLlgZznlKgiOwogICAgICB0aGlzLiRtb2RhbC5jb25maXJtKCfnoa7orqTopoEiJyArIHRleHQgKyAnIiInICsgcm93LnJvbGVOYW1lICsgJyLop5LoibLlkJfvvJ8nKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gY2hhbmdlUm9sZVN0YXR1cyhyb3cucm9sZUlkLCByb3cuc3RhdHVzKTsKICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXM0LiRtb2RhbC5tc2dTdWNjZXNzKHRleHQgKyAi5oiQ5YqfIik7CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHsKICAgICAgICByb3cuc3RhdHVzID0gcm93LnN0YXR1cyA9PT0gIjAiID8gIjEiIDogIjAiOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDlj5bmtojmjInpkq4KICAgIGNhbmNlbDogZnVuY3Rpb24gY2FuY2VsKCkgewogICAgICB0aGlzLm1lbnVPcHRpb25zID0gW107CiAgICAgIHRoaXMub3BlbiA9IGZhbHNlOwogICAgICB0aGlzLnJlc2V0KCk7CiAgICB9LAogICAgLy8g5Y+W5raI5oyJ6ZKu77yI5pWw5o2u5p2D6ZmQ77yJCiAgICBjYW5jZWxEYXRhU2NvcGU6IGZ1bmN0aW9uIGNhbmNlbERhdGFTY29wZSgpIHsKICAgICAgdGhpcy5kZXB0T3B0aW9ucyA9IFtdOwogICAgICB0aGlzLm9wZW5EYXRhU2NvcGUgPSBmYWxzZTsKICAgICAgdGhpcy5yZXNldCgpOwogICAgfSwKICAgIC8vIOihqOWNlemHjee9rgogICAgcmVzZXQ6IGZ1bmN0aW9uIHJlc2V0KCkgewogICAgICBpZiAodGhpcy4kcmVmcy5tZW51ICE9IHVuZGVmaW5lZCkgewogICAgICAgIHRoaXMuJHJlZnMubWVudS5zZXRDaGVja2VkS2V5cyhbXSk7CiAgICAgIH0KICAgICAgdGhpcy5lZGl0ID0gZmFsc2UsIHRoaXMubWVudUV4cGFuZCA9IGZhbHNlLCB0aGlzLm1lbnVOb2RlQWxsID0gZmFsc2UsIHRoaXMuZGVwdEV4cGFuZCA9IHRydWUsIHRoaXMuZGVwdE5vZGVBbGwgPSBmYWxzZSwgdGhpcy5mb3JtID0gewogICAgICAgIHJvbGVJZDogdW5kZWZpbmVkLAogICAgICAgIHJvbGVOYW1lOiB1bmRlZmluZWQsCiAgICAgICAgcm9sZUtleTogdW5kZWZpbmVkLAogICAgICAgIHJvbGVTb3J0OiAwLAogICAgICAgIHN0YXR1czogIjAiLAogICAgICAgIHJvbGVUeXBlOiAiMCIsCiAgICAgICAgbWVudUlkczogW10sCiAgICAgICAgZGVwdElkczogW10sCiAgICAgICAgbWVudUNoZWNrU3RyaWN0bHk6IHRydWUsCiAgICAgICAgZGVwdENoZWNrU3RyaWN0bHk6IHRydWUsCiAgICAgICAgcmVtYXJrOiB1bmRlZmluZWQKICAgICAgfTsKICAgICAgdGhpcy5yZXNldEZvcm0oImZvcm0iKTsKICAgIH0sCiAgICAvKiog5pCc57Si5oyJ6ZKu5pON5L2cICovCiAgICBoYW5kbGVRdWVyeTogKDAsIF9sb2Rhc2guZGVib3VuY2UpKGZ1bmN0aW9uICgpIHsKICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7CiAgICAgIHRoaXMucGFnZVNpemUgPSAxMDsKICAgICAgLy8gdGhpcy5xdWVyeVBhcmFtcy5wYWdlTnVtID0gMTsKICAgICAgdGhpcy5nZXRMaXN0KCk7CiAgICB9LCAxMDAwKSwKICAgIC8qKiDph43nva7mjInpkq7mk43kvZwgKi9yZXNldFF1ZXJ5OiBmdW5jdGlvbiByZXNldFF1ZXJ5KCkgewogICAgICB0aGlzLmRhdGVSYW5nZSA9IFtdOwogICAgICB0aGlzLnJlc2V0Rm9ybSgicXVlcnlGb3JtIik7CiAgICB9LAogICAgLy8g5aSa6YCJ5qGG6YCJ5Lit5pWw5o2uCiAgICBoYW5kbGVTZWxlY3Rpb25DaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZVNlbGVjdGlvbkNoYW5nZShzZWxlY3Rpb24pIHsKICAgICAgdGhpcy5pZHMgPSBzZWxlY3Rpb24ubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgcmV0dXJuIGl0ZW0ucm9sZUlkOwogICAgICB9KTsKICAgICAgdGhpcy5zaW5nbGUgPSBzZWxlY3Rpb24ubGVuZ3RoICE9IDE7CiAgICAgIHRoaXMubXVsdGlwbGUgPSAhc2VsZWN0aW9uLmxlbmd0aDsKICAgIH0sCiAgICAvLyDmm7TlpJrmk43kvZzop6blj5EKICAgIGhhbmRsZUNvbW1hbmQ6IGZ1bmN0aW9uIGhhbmRsZUNvbW1hbmQoY29tbWFuZCwgcm93KSB7CiAgICAgIHN3aXRjaCAoY29tbWFuZCkgewogICAgICAgIGNhc2UgImhhbmRsZUF1dGhVc2VyIjoKICAgICAgICAgIHRoaXMuaGFuZGxlQXV0aFVzZXIocm93KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICBicmVhazsKICAgICAgfQogICAgfSwKICAgIC8vIOagkeadg+mZkO+8iOWxleW8gC/mipjlj6DvvIkKICAgIGhhbmRsZUNoZWNrZWRUcmVlRXhwYW5kOiBmdW5jdGlvbiBoYW5kbGVDaGVja2VkVHJlZUV4cGFuZCh2YWx1ZSwgdHlwZSkgewogICAgICBpZiAodHlwZSA9PSAnbWVudScpIHsKICAgICAgICB2YXIgdHJlZUxpc3QgPSB0aGlzLm1lbnVPcHRpb25zOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHJlZUxpc3QubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHRoaXMuJHJlZnMubWVudS5zdG9yZS5ub2Rlc01hcFt0cmVlTGlzdFtpXS5pZF0uZXhwYW5kZWQgPSB2YWx1ZTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAnZGVwdCcpIHsKICAgICAgICB2YXIgX3RyZWVMaXN0ID0gdGhpcy5kZXB0T3B0aW9uczsKICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgX3RyZWVMaXN0Lmxlbmd0aDsgX2krKykgewogICAgICAgICAgdGhpcy4kcmVmcy5kZXB0LnN0b3JlLm5vZGVzTWFwW190cmVlTGlzdFtfaV0uaWRdLmV4cGFuZGVkID0gdmFsdWU7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgLy8g5qCR5p2D6ZmQ77yI5YWo6YCJL+WFqOS4jemAie+8iQogICAgaGFuZGxlQ2hlY2tlZFRyZWVOb2RlQWxsOiBmdW5jdGlvbiBoYW5kbGVDaGVja2VkVHJlZU5vZGVBbGwodmFsdWUsIHR5cGUpIHsKICAgICAgaWYgKHR5cGUgPT0gJ21lbnUnKSB7CiAgICAgICAgdGhpcy4kcmVmcy5tZW51LnNldENoZWNrZWROb2Rlcyh2YWx1ZSA/IHRoaXMubWVudU9wdGlvbnMgOiBbXSk7CiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAnZGVwdCcpIHsKICAgICAgICB0aGlzLiRyZWZzLmRlcHQuc2V0Q2hlY2tlZE5vZGVzKHZhbHVlID8gdGhpcy5kZXB0T3B0aW9ucyA6IFtdKTsKICAgICAgfQogICAgfSwKICAgIC8vIOagkeadg+mZkO+8iOeItuWtkOiBlOWKqO+8iQogICAgaGFuZGxlQ2hlY2tlZFRyZWVDb25uZWN0OiBmdW5jdGlvbiBoYW5kbGVDaGVja2VkVHJlZUNvbm5lY3QodmFsdWUsIHR5cGUpIHsKICAgICAgaWYgKHR5cGUgPT0gJ21lbnUnKSB7CiAgICAgICAgdGhpcy5mb3JtLm1lbnVDaGVja1N0cmljdGx5ID0gdmFsdWUgPyB0cnVlIDogZmFsc2U7CiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAnZGVwdCcpIHsKICAgICAgICB0aGlzLmZvcm0uZGVwdENoZWNrU3RyaWN0bHkgPSB2YWx1ZSA/IHRydWUgOiBmYWxzZTsKICAgICAgfQogICAgfSwKICAgIC8qKiDmlrDlop7mjInpkq7mk43kvZwgKi8KICAgIGhhbmRsZUFkZDogKDAsIF9sb2Rhc2guZGVib3VuY2UpKGZ1bmN0aW9uICgpIHsKICAgICAgdGhpcy5yZXNldCgpOwogICAgICAvLyB0aGlzLmdldE1lbnVUcmVlc2VsZWN0KCk7CiAgICAgIHRoaXMub3BlbiA9IHRydWU7CiAgICAgIHRoaXMudGl0bGUgPSAi5re75Yqg6KeS6ImyIjsKICAgICAgdGhpcy5lZGl0ID0gZmFsc2U7CiAgICB9LCA1MDApLAogICAgLyoqIOS/ruaUueaMiemSruaTjeS9nCAqLwogICAgaGFuZGxlVXBkYXRlOiAoMCwgX2xvZGFzaC5kZWJvdW5jZSkoIC8qI19fUFVSRV9fKi8oMCwgX2FzeW5jVG9HZW5lcmF0b3IyLmRlZmF1bHQpKCAvKiNfX1BVUkVfXyovKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMygpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CiAgICAgIHZhciBfc2VsZWN0RGF0YSwgcm9sZUlkLCBwYXJhbSwgcGFyYW0xOwogICAgICByZXR1cm4gKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7CiAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkgewogICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICB0aGlzLnJlc2V0KCk7CiAgICAgICAgICAgIF9zZWxlY3REYXRhID0gdGhpcy4kcmVmcy54VGFibGUuZ2V0UmFkaW9SZWNvcmQodHJ1ZSk7CiAgICAgICAgICAgIGlmICghKF9zZWxlY3REYXRhID09IG51bGwpKSB7CiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA1OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup6K6w5b2VIScKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuYWJydXB0KCJyZXR1cm4iKTsKICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgdGhpcy5lZGl0ID0gdHJ1ZTsKICAgICAgICAgICAgcm9sZUlkID0gX3NlbGVjdERhdGEucm9sZUlkOwogICAgICAgICAgICBwYXJhbSA9IHsKICAgICAgICAgICAgICByb2xlSWQ6IHJvbGVJZAogICAgICAgICAgICB9OwogICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDEwOwogICAgICAgICAgICByZXR1cm4gdGhpcy4kYXhpb3MuZ2V0KCcvc3lzUm9sZUNvbnRyb2xsZXIvZ2V0SW5mbycsIHsKICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtCiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlczIpIHsKICAgICAgICAgICAgICBfdGhpczUuZm9ybSA9IHJlczIuZGF0YTsKICAgICAgICAgICAgICBfdGhpczUub3BlbiA9IHRydWU7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgY2FzZSAxMDoKICAgICAgICAgICAgdGhpcy50aXRsZSA9ICLkv67mlLnop5LoibIiOwogICAgICAgICAgICBwYXJhbTEgPSB7CiAgICAgICAgICAgICAgcm9sZUlkOiByb2xlSWQKICAgICAgICAgICAgfTsKICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAxNDsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGF4aW9zLmdldCgnL3N5c01lbnVDb250cm9sbGVyL3JvbGVNZW51VHJlZXNlbGVjdCcsIHsKICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtMQogICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICBfdGhpczUubWVudU9wdGlvbnMgPSByZXMuZGF0YS5tZW51czsKICAgICAgICAgICAgICB2YXIgY2hlY2tlZEtleXMgPSByZXMuZGF0YS5jaGVja2VkS2V5czsKICAgICAgICAgICAgICBjaGVja2VkS2V5cy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7CiAgICAgICAgICAgICAgICBfdGhpczUuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgX3RoaXM1LiRyZWZzLm1lbnUuc2V0Q2hlY2tlZCh2LCB0cnVlLCBmYWxzZSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7CiAgICAgICAgfQogICAgICB9LCBfY2FsbGVlMywgdGhpcyk7CiAgICB9KSksIDEwMDApLAogICAgLyoqIOmAieaLqeinkuiJsuadg+mZkOiMg+WbtOinpuWPkSAqL2RhdGFTY29wZVNlbGVjdENoYW5nZTogZnVuY3Rpb24gZGF0YVNjb3BlU2VsZWN0Q2hhbmdlKHZhbHVlKSB7CiAgICAgIGlmICh2YWx1ZSAhPT0gJzInKSB7CiAgICAgICAgdGhpcy4kcmVmcy5kZXB0LnNldENoZWNrZWRLZXlzKFtdKTsKICAgICAgfQogICAgfSwKICAgIC8qKiDliIbphY3nlKjmiLfmk43kvZwgKi8KICAgIGhhbmRsZUF1dGhVc2VyOiBmdW5jdGlvbiBoYW5kbGVBdXRoVXNlcihyb3cpIHsKICAgICAgdmFyIHJvbGVJZCA9IHJvdy5yb2xlSWQ7CiAgICAgIHRoaXMuJHJvdXRlci5wdXNoKCIvc3lzdGVtL3JvbGUtYXV0aC91c2VyLyIgKyByb2xlSWQpOwogICAgfSwKICAgIC8qKiDmj5DkuqTmjInpkq4gKi8KICAgIHN1Ym1pdEZvcm06ICgwLCBfbG9kYXNoLmRlYm91bmNlKShmdW5jdGlvbiAoKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICB0aGlzLiRyZWZzWyJmb3JtIl0udmFsaWRhdGUoIC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWY1ID0gKDAsIF9hc3luY1RvR2VuZXJhdG9yMi5kZWZhdWx0KSggLyojX19QVVJFX18qLygwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQodmFsaWQpIHsKICAgICAgICAgIHJldHVybiAoMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU0JChfY29udGV4dDQpIHsKICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkgewogICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIGlmICghdmFsaWQpIHsKICAgICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSA2OwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghKF90aGlzNi5mb3JtLnJvbGVLZXkudHJpbSgpID09ICdYVEdMJykpIHsKICAgICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSA1OwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghKF90aGlzNi5mb3JtLmJ1aWx0SW4gIT0gJzAnKSkgewogICAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDU7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8g5LiN5piv5YaF572u55So5oi35YiZ5oum5oiqCiAgICAgICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICflhoXnva7op5LoibLmoIfor4ZYVEdM5LiN6IO95YaN5qyh5re75Yqg77yBJwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LmFicnVwdCgicmV0dXJuIik7CiAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgaWYgKF90aGlzNi5mb3JtLnJvbGVJZCAhPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgX3RoaXM2LmZvcm0ubWVudUlkcyA9IF90aGlzNi5nZXRNZW51QWxsQ2hlY2tlZEtleXMoKTsKICAgICAgICAgICAgICAgICAgLy8g5pu05paw5pON5L2cCiAgICAgICAgICAgICAgICAgIF90aGlzNi4kYXhpb3MucG9zdCgnL3N5c1JvbGVDb250cm9sbGVyL3VwZGF0ZVJvbGUnLCBfdGhpczYuZm9ybSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlLnN1Y2Nlc3MoJ+S/ruaUueaIkOWKnycpOwogICAgICAgICAgICAgICAgICAgIF90aGlzNi5vcGVuID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM2LnJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM2LmdldExpc3QoKTsKICAgICAgICAgICAgICAgICAgICBfdGhpczYubWVudU9wdGlvbnMgPSBbXTsKICAgICAgICAgICAgICAgICAgICBfdGhpczYubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICBfdGhpczYubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIF90aGlzNi5mb3JtLm1lbnVJZHMgPSBfdGhpczYuZ2V0TWVudUFsbENoZWNrZWRLZXlzKCk7CiAgICAgICAgICAgICAgICAgIF90aGlzNi4kYXhpb3MucG9zdCgnL3N5c1JvbGVDb250cm9sbGVyL2FkZFJvbGUnLCBfdGhpczYuZm9ybSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlLnN1Y2Nlc3MoJ+aWsOWinuaIkOWKnycpOwogICAgICAgICAgICAgICAgICAgIF90aGlzNi5vcGVuID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM2LnJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM2LmdldExpc3QoKTsKICAgICAgICAgICAgICAgICAgICBfdGhpczYubWVudU9wdGlvbnMgPSBbXTsKICAgICAgICAgICAgICAgICAgICBfdGhpczYubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICBfdGhpczYubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuc3RvcCgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9LCBfY2FsbGVlNCk7CiAgICAgICAgfSkpOwogICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gpIHsKICAgICAgICAgIHJldHVybiBfcmVmNS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICAgIH0oKSk7CiAgICB9LCAxMDAwKSwKICAgIC8qKiDmj5DkuqTmjInpkq7vvIjmlbDmja7mnYPpmZDvvIkgKi8KICAgIHN1Ym1pdERhdGFTY29wZTogZnVuY3Rpb24gc3VibWl0RGF0YVNjb3BlKCkgewogICAgICB2YXIgX3RoaXM3ID0gdGhpczsKICAgICAgaWYgKHRoaXMuZm9ybS5yb2xlSWQgIT0gdW5kZWZpbmVkKSB7CiAgICAgICAgdGhpcy5mb3JtLmRlcHRJZHMgPSB0aGlzLmdldERlcHRBbGxDaGVja2VkS2V5cygpOwogICAgICAgIGRhdGFTY29wZSh0aGlzLmZvcm0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgICBfdGhpczcuJG1vZGFsLm1zZ1N1Y2Nlc3MoIuS/ruaUueaIkOWKnyIpOwogICAgICAgICAgX3RoaXM3Lm9wZW5EYXRhU2NvcGUgPSBmYWxzZTsKICAgICAgICAgIF90aGlzNy5nZXRMaXN0KCk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCiAgICAvKiog5Yig6Zmk5oyJ6ZKu5pON5L2cICovaGFuZGxlRGVsZXRlOiBmdW5jdGlvbiBoYW5kbGVEZWxldGUoKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICB2YXIgX3NlbGVjdERhdGEgPSB0aGlzLiRyZWZzLnhUYWJsZS5nZXRSYWRpb1JlY29yZCh0cnVlKTsKICAgICAgaWYgKF9zZWxlY3REYXRhID09IG51bGwpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6norrDlvZUhJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZiAoX3NlbGVjdERhdGEucm9sZUtleSA9PSAnWFRHTCcpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICflhoXnva7op5LoibLkuI3og73liKDpmaQhJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLiRjb25maXJtKCfmmK/lkKbnoa7orqTliKDpmaTop5LoibI/JywgJ+aPkOekuicsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzOC5kb0RlbGV0ZShfc2VsZWN0RGF0YSk7CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHt9KTsKICAgIH0sCiAgICAvKioNCiAgICAgKiDliKDpmaTmj5DkuqQNCiAgICAgKi8KICAgIGRvRGVsZXRlOiAoMCwgX2xvZGFzaC5kZWJvdW5jZSkoIC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgIHZhciBfcmVmNiA9ICgwLCBfYXN5bmNUb0dlbmVyYXRvcjIuZGVmYXVsdCkoIC8qI19fUFVSRV9fKi8oMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KF9zZWxlY3REYXRhKSB7CiAgICAgICAgdmFyIF90aGlzOSA9IHRoaXM7CiAgICAgICAgdmFyIHBhcmFtOwogICAgICAgIHJldHVybiAoMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU1JChfY29udGV4dDUpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NS5wcmV2ID0gX2NvbnRleHQ1Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIHBhcmFtID0gewogICAgICAgICAgICAgICAgcm9sZUlkOiBfc2VsZWN0RGF0YS5yb2xlSWQKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMzsKICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kYXhpb3MucG9zdCgnL3N5c1JvbGVDb250cm9sbGVyL2RlbFJvbGUnLCB0aGlzLiRxcy5zdHJpbmdpZnkocGFyYW0pKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgIF90aGlzOS4kbWVzc2FnZS5zdWNjZXNzKCfliKDpmaTmiJDlip/vvIEnKTsKICAgICAgICAgICAgICAgIF90aGlzOS5nZXRMaXN0KCk7CiAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7fSk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU1LCB0aGlzKTsKICAgICAgfSkpOwogICAgICByZXR1cm4gZnVuY3Rpb24gKF94MikgewogICAgICAgIHJldHVybiBfcmVmNi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICB9OwogICAgfSgpLCAxMDAwKQogIH0KfTsKZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7"},{"version":3,"names":["_lodash","require","name","dicts","data","typeOptions","value","label","statusOptions","xtglyedit","edit","showTable","loading","ids","single","multiple","showSearch","currentPage","pageSize","total","roleList","title","open","openDataScope","menuExpand","menuNodeAll","deptExpand","deptNodeAll","pcOptions","dateRange","dataScopeOptions","menuOptions","deptOptions","queryParams","roleName","undefined","roleKey","status","form","defaultProps","children","rules","required","message","trigger","roleSort","created","getList","methods","changepc","getMenuTreeselect","typeFormat","_ref","cellValue","belongTo","i","length","_this","_asyncToGenerator2","default","_regeneratorRuntime2","mark","_callee","searchParams","wrap","_callee$","_context","prev","next","$axios","get","params","then","res","records","catch","error","stop","handlePageChange","_ref2","statusFormat","_ref3","pc","_this2","_callee2","_callee2$","_context2","getMenuAllCheckedKeys","checkedKeys","$refs","menu","getCheckedKeys","halfCheckedKeys","getHalfCheckedKeys","unshift","apply","getRoleMenuTreeselect","roleId","_this3","param","menus","handleStatusChange","row","_this4","text","$modal","confirm","changeRoleStatus","msgSuccess","cancel","reset","cancelDataScope","setCheckedKeys","roleType","menuIds","deptIds","menuCheckStrictly","deptCheckStrictly","remark","resetForm","handleQuery","debounce","resetQuery","handleSelectionChange","selection","map","item","handleCommand","command","handleAuthUser","handleCheckedTreeExpand","type","treeList","store","nodesMap","id","expanded","dept","handleCheckedTreeNodeAll","setCheckedNodes","handleCheckedTreeConnect","handleAdd","handleUpdate","_callee3","_this5","_selectData","param1","_callee3$","_context3","xTable","getRadioRecord","$message","abrupt","res2","forEach","v","$nextTick","setChecked","dataScopeSelectChange","$router","push","submitForm","_this6","validate","_ref5","_callee4","valid","_callee4$","_context4","trim","builtIn","post","success","_x","arguments","submitDataScope","_this7","getDeptAllCheckedKeys","dataScope","response","handleDelete","_this8","$confirm","confirmButtonText","cancelButtonText","doDelete","_ref6","_callee5","_this9","_callee5$","_context5","$qs","stringify","_x2","exports","_default"],"sources":["src/views/sysManager/roleManager/index.vue"],"sourcesContent":["<template>\r\n <div class=\"app-container\">\r\n <el-form :model=\"queryParams\" ref=\"queryForm\" size=\"small\" :inline=\"true\" v-show=\"showSearch\">\r\n <el-form-item label=\"角色名称\" prop=\"roleName\">\r\n <el-input\r\n maxlength=\"15\"\r\n v-model=\"queryParams.roleName\"\r\n placeholder=\"请输入角色名称\"\r\n clearable\r\n style=\"width: 240px\"\r\n @keyup.enter.native=\"handleQuery\"\r\n />\r\n </el-form-item>\r\n <el-form-item label=\"字符标识\" prop=\"roleKey\">\r\n <el-select\r\n v-model=\"queryParams.roleKey\"\r\n placeholder=\"请选择字符标识\"\r\n >\r\n <el-option\r\n v-for=\"item in pcOptions\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\">\r\n </el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button type=\"primary\" icon=\"el-icon-search\" size=\"mini\" @click=\"handleQuery\">搜索</el-button>\r\n <el-button icon=\"el-icon-refresh\" size=\"mini\" @click=\"resetQuery\">重置</el-button>\r\n </el-form-item>\r\n </el-form>\r\n\r\n <el-row :gutter=\"10\" class=\"mb8\">\r\n <el-col :span=\"1.5\">\r\n <el-button\r\n type=\"primary\"\r\n plain\r\n icon=\"el-icon-plus\"\r\n size=\"mini\"\r\n @click=\"handleAdd\"\r\n v-hasPermi=\"['system:role:add']\"\r\n >新增\r\n </el-button>\r\n </el-col>\r\n <el-col :span=\"1.5\">\r\n <el-button\r\n type=\"success\"\r\n plain\r\n icon=\"el-icon-edit\"\r\n size=\"mini\"\r\n @click=\"handleUpdate\"\r\n v-hasPermi=\"['system:role:edit']\"\r\n >修改\r\n </el-button>\r\n </el-col>\r\n <el-col :span=\"1.5\">\r\n <el-button\r\n type=\"danger\"\r\n plain\r\n icon=\"el-icon-delete\"\r\n size=\"mini\"\r\n @click=\"handleDelete\"\r\n v-hasPermi=\"['system:role:remove']\"\r\n >删除\r\n </el-button>\r\n </el-col>\r\n </el-row>\r\n <div style=\"padding-top: 10px\">\r\n <vxe-table\r\n ref=\"xTable\"\r\n align=\"center\"\r\n :loading=\"loading\"\r\n class=\"mytable-style\"\r\n auto-resize\r\n border\r\n resizable\r\n export-config\r\n highlight-current-row\r\n show-overflow\r\n max-height=\"700\"\r\n :data=\"roleList\"\r\n :radio-config=\"{trigger: 'row'}\"\r\n >\r\n <vxe-column type=\"radio\" width=\"60\"/>\r\n <vxe-table-column field=\"roleName\" title=\"角色名称\"/>\r\n <vxe-table-column field=\"roleType\" title=\"类型\" :formatter=\"typeFormat\"/>\r\n <vxe-table-column field=\"roleKey\" title=\"字符标识\"/>\r\n <vxe-table-column field=\"roleSort\" title=\"显示顺序\"/>\r\n </vxe-table>\r\n <vxe-pager\r\n v-show=\"showTable\"\r\n perfect\r\n :current-page.sync=\"currentPage\"\r\n :page-size.sync=\"pageSize\"\r\n :total=\"total\"\r\n :page-sizes=\"[10,50,100]\"\r\n :layouts=\"['PrevJump', 'PrevPage','JumpNumber', 'NextPage', 'NextJump', 'Sizes', 'FullJump', 'Total']\"\r\n @page-change=\"handlePageChange\"\r\n >\r\n </vxe-pager>\r\n </div>\r\n <!-- 添加或修改角色配置对话框 -->\r\n <el-dialog :title=\"title\" :visible.sync=\"open\" width=\"500px\" append-to-body>\r\n <el-form ref=\"form\" :model=\"form\" :rules=\"rules\" label-width=\"100px\">\r\n <el-form-item label=\"角色名称\" prop=\"roleName\">\r\n <el-input v-model=\"form.roleName\" maxlength=\"15\" placeholder=\"请输入角色名称\" :disabled=\"edit\"/>\r\n </el-form-item>\r\n <el-form-item label=\"字符标识\" prop=\"roleKey\" :disabled=\"xtglyedit\">\r\n <el-select\r\n @change=\"changepc\"\r\n v-model=\"form.roleKey\"\r\n placeholder=\"请选择字符标识\"\r\n :disabled=\"edit\"\r\n >\r\n <el-option\r\n v-for=\"item in pcOptions\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\">\r\n </el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"角色顺序\" prop=\"roleSort\">\r\n <el-input-number v-model=\"form.roleSort\" controls-position=\"right\" :min=\"0\" :disabled=\"edit\"/>\r\n </el-form-item>\r\n <el-form-item label=\"类型\">\r\n <el-select\r\n v-model=\"form.roleType\"\r\n placeholder=\"请选择角色类型\"\r\n clearable\r\n style=\"width: 240px\"\r\n :disabled=\"edit\"\r\n >\r\n <el-option\r\n v-for=\"item in typeOptions\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\">\r\n </el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"菜单权限\">\r\n <el-checkbox v-model=\"menuExpand\" @change=\"handleCheckedTreeExpand($event, 'menu')\">展开/折叠</el-checkbox>\r\n <el-checkbox v-model=\"menuNodeAll\" @change=\"handleCheckedTreeNodeAll($event, 'menu')\">全选/全不选</el-checkbox>\r\n <el-checkbox v-model=\"form.menuCheckStrictly\" @change=\"handleCheckedTreeConnect($event, 'menu')\">父子联动\r\n </el-checkbox>\r\n <el-tree\r\n class=\"tree-border\"\r\n :data=\"menuOptions\"\r\n show-checkbox\r\n ref=\"menu\"\r\n node-key=\"id\"\r\n :check-strictly=\"!form.menuCheckStrictly\"\r\n empty-text=\"无数据,请选择字符标识!\"\r\n :props=\"defaultProps\"\r\n ></el-tree>\r\n </el-form-item>\r\n <el-form-item label=\"备注\">\r\n <el-input v-model=\"form.remark\" type=\"textarea\" placeholder=\"请输入内容\" :disabled=\"edit\"></el-input>\r\n </el-form-item>\r\n </el-form>\r\n <div slot=\"footer\" class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"submitForm\">确 定</el-button>\r\n <el-button @click=\"cancel\">取 消</el-button>\r\n </div>\r\n </el-dialog>\r\n\r\n <!-- 分配角色数据权限对话框 -->\r\n <el-dialog :title=\"title\" :visible.sync=\"openDataScope\" width=\"500px\" append-to-body>\r\n <el-form :model=\"form\" label-width=\"80px\">\r\n <el-form-item label=\"角色名称\">\r\n <el-input v-model=\"form.roleName\" :disabled=\"true\"/>\r\n </el-form-item>\r\n <el-form-item label=\"权限字符\">\r\n <el-input v-model=\"form.roleKey\" :disabled=\"true\"/>\r\n </el-form-item>\r\n <el-form-item label=\"权限范围\">\r\n <el-select v-model=\"form.dataScope\" @change=\"dataScopeSelectChange\">\r\n <el-option\r\n v-for=\"item in dataScopeOptions\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n ></el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"数据权限\" v-show=\"form.dataScope == 2\">\r\n <el-checkbox v-model=\"deptExpand\" @change=\"handleCheckedTreeExpand($event, 'dept')\">展开/折叠</el-checkbox>\r\n <el-checkbox v-model=\"deptNodeAll\" @change=\"handleCheckedTreeNodeAll($event, 'dept')\">全选/全不选</el-checkbox>\r\n <el-checkbox v-model=\"form.deptCheckStrictly\" @change=\"handleCheckedTreeConnect($event, 'dept')\">父子联动\r\n </el-checkbox>\r\n <el-tree\r\n class=\"tree-border\"\r\n :data=\"deptOptions\"\r\n show-checkbox\r\n default-expand-all\r\n ref=\"dept\"\r\n node-key=\"id\"\r\n :check-strictly=\"!form.deptCheckStrictly\"\r\n empty-text=\"加载中,请稍候\"\r\n :props=\"defaultProps\"\r\n ></el-tree>\r\n </el-form-item>\r\n </el-form>\r\n <div slot=\"footer\" class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"submitDataScope\">确 定</el-button>\r\n <el-button @click=\"cancelDataScope\">取 消</el-button>\r\n </div>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n\r\nimport {debounce} from \"lodash\";\r\n\r\nexport default {\r\n name: \"Role\",\r\n dicts: ['sys_normal_disable'],\r\n data() {\r\n return {\r\n typeOptions: [\r\n {value: '0', label: '管理员'},\r\n {value: '1', label: '业务员'}\r\n ],\r\n statusOptions: [\r\n {value: '0', label: '正常'},\r\n {value: '1', label: '停用'}\r\n ],\r\n // 系统管理员edit\r\n xtglyedit: false,\r\n edit: false,\r\n showTable: false,\r\n // 遮罩层\r\n loading: true,\r\n // 选中数组\r\n ids: [],\r\n // 非单个禁用\r\n single: true,\r\n // 非多个禁用\r\n multiple: true,\r\n // 显示搜索条件\r\n showSearch: false,\r\n currentPage: 1,\r\n pageSize: 10,\r\n // 总条数\r\n total: 0,\r\n // 角色表格数据\r\n roleList: [],\r\n // 弹出层标题\r\n title: \"\",\r\n // 是否显示弹出层\r\n open: false,\r\n // 是否显示弹出层(数据权限)\r\n openDataScope: false,\r\n menuExpand: false,\r\n menuNodeAll: false,\r\n deptExpand: true,\r\n deptNodeAll: false,\r\n pcOptions: [\r\n {value: 'XTGL', label: 'XTGL'},\r\n {value: 'SJGL', label: 'SJGL'},\r\n {value: 'SHGL', label: 'SHGL'},\r\n {value: 'YWGL', label: 'YWGL'},\r\n {value: 'SJYW', label: 'SJYW'},\r\n {value: 'YWPZ', label: 'YWPZ'},\r\n {value: 'YWCZ', label: 'YWCZ'}\r\n ],\r\n // 日期范围\r\n dateRange: [],\r\n // 数据范围选项\r\n dataScopeOptions: [\r\n {\r\n value: \"1\",\r\n label: \"全部数据权限\"\r\n },\r\n {\r\n value: \"2\",\r\n label: \"自定数据权限\"\r\n },\r\n {\r\n value: \"3\",\r\n label: \"本部门数据权限\"\r\n },\r\n {\r\n value: \"4\",\r\n label: \"本部门及以下数据权限\"\r\n },\r\n {\r\n value: \"5\",\r\n label: \"仅本人数据权限\"\r\n }\r\n ],\r\n // 菜单列表\r\n menuOptions: [],\r\n // 部门列表\r\n deptOptions: [],\r\n // 查询参数\r\n queryParams: {\r\n roleName: undefined,\r\n roleKey: undefined,\r\n status: undefined\r\n },\r\n // 表单参数\r\n form: {},\r\n defaultProps: {\r\n children: \"children\",\r\n label: \"label\"\r\n },\r\n // 表单校验\r\n rules: {\r\n roleName: [\r\n {required: true, message: \"角色名称不能为空\", trigger: \"blur\"}\r\n ],\r\n roleKey: [\r\n {required: true, message: \"权限字符不能为空\", trigger: \"blur\"}\r\n ],\r\n roleSort: [\r\n {required: true, message: \"角色顺序不能为空\", trigger: \"blur\"}\r\n ]\r\n }\r\n };\r\n },\r\n created() {\r\n this.getList();\r\n },\r\n methods: {\r\n changepc(value) {\r\n this.getMenuTreeselect(value);\r\n },\r\n // 列表状态格式化\r\n typeFormat({cellValue}) {\r\n let belongTo = '未知的类型'\r\n for (let i = 0; i < this.typeOptions.length; i++) {\r\n if (cellValue == \"0\") {\r\n belongTo = \"管理员\"\r\n } else if (cellValue == \"1\") {\r\n belongTo = \"业务员\"\r\n }\r\n }\r\n return belongTo\r\n },\r\n /** 查询角色列表 */\r\n async getList() {\r\n this.showSearch = true\r\n this.xtglyedit = true\r\n this.edit = true\r\n\r\n this.loading = true;\r\n var searchParams = {\r\n currentPage: this.currentPage,\r\n pageSize: this.pageSize,\r\n roleName: this.queryParams.roleName,\r\n roleKey: this.queryParams.roleKey,\r\n status: this.queryParams.status\r\n }\r\n await this.$axios.get('/sysRoleController/getAll',\r\n {params: searchParams}).then((res) => {\r\n this.roleList = res.data.records\r\n this.total = res.data.total\r\n if (res.data.records == '') {\r\n this.showTable = false\r\n } else {\r\n this.showTable = true\r\n }\r\n this.loading = false\r\n }).catch((error) => {\r\n this.loading = false\r\n // this.$message.error('获取数据出错' + error)\r\n })\r\n },\r\n handlePageChange({currentPage, pageSize}) {\r\n this.currentPage = currentPage\r\n this.pageSize = pageSize\r\n this.getList()\r\n },\r\n // 列表状态格式化\r\n statusFormat({cellValue}) {\r\n let belongTo = '未知的类型'\r\n for (let i = 0; i < this.statusOptions.length; i++) {\r\n if (cellValue == \"0\") {\r\n belongTo = \"正常\"\r\n } else if (cellValue == \"1\") {\r\n belongTo = \"停用\"\r\n }\r\n }\r\n return belongTo\r\n },\r\n /** 查询菜单树结构 */\r\n async getMenuTreeselect(pc) {\r\n var searchParams = {\r\n pc: pc\r\n }\r\n await this.$axios.get('/sysMenuController/treeselect',\r\n {params: searchParams}).then((res) => {\r\n this.menuOptions = res.data\r\n }).catch((error) => {\r\n this.loading = false\r\n // this.$message.error('获取数据出错' + error)\r\n })\r\n },\r\n // 所有菜单节点数据\r\n getMenuAllCheckedKeys() {\r\n // 目前被选中的菜单节点\r\n let checkedKeys = this.$refs.menu.getCheckedKeys();\r\n // 半选中的菜单节点\r\n let halfCheckedKeys = this.$refs.menu.getHalfCheckedKeys();\r\n checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys);\r\n return checkedKeys;\r\n },\r\n /** 根据角色ID查询菜单树结构 */\r\n getRoleMenuTreeselect(roleId) {\r\n var param = {\r\n roleId: roleId\r\n }\r\n this.$axios.get('/sysMenuController/roleMenuTreeselect',\r\n {params: param}).then((res) => {\r\n this.menuOptions = res.data.menus;\r\n return res.data\r\n }).catch((error) => {\r\n this.loading = false\r\n // this.$message.error('获取数据出错' + error)\r\n })\r\n },\r\n // 角色状态修改\r\n handleStatusChange(row) {\r\n let text = row.status === \"0\" ? \"启用\" : \"停用\";\r\n this.$modal.confirm('确认要\"' + text + '\"\"' + row.roleName + '\"角色吗?').then(function () {\r\n return changeRoleStatus(row.roleId, row.status);\r\n }).then(() => {\r\n this.$modal.msgSuccess(text + \"成功\");\r\n }).catch(function () {\r\n row.status = row.status === \"0\" ? \"1\" : \"0\";\r\n });\r\n },\r\n // 取消按钮\r\n cancel() {\r\n this.menuOptions = [];\r\n this.open = false;\r\n this.reset();\r\n },\r\n // 取消按钮(数据权限)\r\n cancelDataScope() {\r\n this.deptOptions = [];\r\n this.openDataScope = false;\r\n this.reset();\r\n },\r\n // 表单重置\r\n reset() {\r\n if (this.$refs.menu != undefined) {\r\n this.$refs.menu.setCheckedKeys([]);\r\n }\r\n this.edit = false,\r\n this.menuExpand = false,\r\n this.menuNodeAll = false,\r\n this.deptExpand = true,\r\n this.deptNodeAll = false,\r\n this.form = {\r\n roleId: undefined,\r\n roleName: undefined,\r\n roleKey: undefined,\r\n roleSort: 0,\r\n status: \"0\",\r\n roleType: \"0\",\r\n menuIds: [],\r\n deptIds: [],\r\n menuCheckStrictly: true,\r\n deptCheckStrictly: true,\r\n remark: undefined\r\n };\r\n this.resetForm(\"form\");\r\n },\r\n /** 搜索按钮操作 */\r\n handleQuery: debounce(function () {\r\n this.currentPage = 1\r\n this.pageSize = 10\r\n // this.queryParams.pageNum = 1;\r\n this.getList();\r\n }, 1000),\r\n /** 重置按钮操作 */\r\n resetQuery() {\r\n this.dateRange = [];\r\n this.resetForm(\"queryForm\");\r\n },\r\n // 多选框选中数据\r\n handleSelectionChange(selection) {\r\n this.ids = selection.map(item => item.roleId)\r\n this.single = selection.length != 1\r\n this.multiple = !selection.length\r\n },\r\n // 更多操作触发\r\n handleCommand(command, row) {\r\n switch (command) {\r\n case \"handleAuthUser\":\r\n this.handleAuthUser(row);\r\n break;\r\n default:\r\n break;\r\n }\r\n },\r\n // 树权限(展开/折叠)\r\n handleCheckedTreeExpand(value, type) {\r\n if (type == 'menu') {\r\n let treeList = this.menuOptions;\r\n for (let i = 0; i < treeList.length; i++) {\r\n this.$refs.menu.store.nodesMap[treeList[i].id].expanded = value;\r\n }\r\n } else if (type == 'dept') {\r\n let treeList = this.deptOptions;\r\n for (let i = 0; i < treeList.length; i++) {\r\n this.$refs.dept.store.nodesMap[treeList[i].id].expanded = value;\r\n }\r\n }\r\n },\r\n // 树权限(全选/全不选)\r\n handleCheckedTreeNodeAll(value, type) {\r\n if (type == 'menu') {\r\n this.$refs.menu.setCheckedNodes(value ? this.menuOptions : []);\r\n } else if (type == 'dept') {\r\n this.$refs.dept.setCheckedNodes(value ? this.deptOptions : []);\r\n }\r\n },\r\n // 树权限(父子联动)\r\n handleCheckedTreeConnect(value, type) {\r\n if (type == 'menu') {\r\n this.form.menuCheckStrictly = value ? true : false;\r\n } else if (type == 'dept') {\r\n this.form.deptCheckStrictly = value ? true : false;\r\n }\r\n },\r\n /** 新增按钮操作 */\r\n handleAdd: debounce(function () {\r\n this.reset();\r\n // this.getMenuTreeselect();\r\n this.open = true;\r\n this.title = \"添加角色\";\r\n this.edit = false;\r\n }, 500),\r\n /** 修改按钮操作 */\r\n handleUpdate: debounce(async function () {\r\n this.reset();\r\n const _selectData = this.$refs.xTable.getRadioRecord(true)\r\n if (_selectData == null) {\r\n this.$message({\r\n type: 'warning',\r\n message: '请选择记录!'\r\n });\r\n return\r\n }\r\n\r\n\r\n this.edit = true;\r\n const roleId = _selectData.roleId\r\n var param = {\r\n roleId: roleId\r\n }\r\n await this.$axios.get('/sysRoleController/getInfo',\r\n {params: param}).then((res2) => {\r\n this.form = res2.data;\r\n this.open = true;\r\n })\r\n this.title = \"修改角色\";\r\n\r\n var param1 = {\r\n roleId: roleId\r\n }\r\n\r\n await this.$axios.get('/sysMenuController/roleMenuTreeselect',\r\n {params: param1}).then((res) => {\r\n this.menuOptions = res.data.menus;\r\n let checkedKeys = res.data.checkedKeys\r\n checkedKeys.forEach((v) => {\r\n this.$nextTick(() => {\r\n this.$refs.menu.setChecked(v, true, false);\r\n })\r\n })\r\n })\r\n }, 1000),\r\n /** 选择角色权限范围触发 */\r\n dataScopeSelectChange(value) {\r\n if (value !== '2') {\r\n this.$refs.dept.setCheckedKeys([]);\r\n }\r\n },\r\n /** 分配用户操作 */\r\n handleAuthUser: function (row) {\r\n const roleId = row.roleId;\r\n this.$router.push(\"/system/role-auth/user/\" + roleId);\r\n },\r\n /** 提交按钮 */\r\n submitForm: debounce(function () {\r\n this.$refs[\"form\"].validate(async valid => {\r\n if (valid) {\r\n if (this.form.roleKey.trim() == 'XTGL') {\r\n if (this.form.builtIn != '0') {\r\n // 不是内置用户则拦截\r\n this.$message({\r\n type: 'warning',\r\n message: '内置角色标识XTGL不能再次添加!'\r\n });\r\n return\r\n }\r\n }\r\n\r\n if (this.form.roleId != undefined) {\r\n this.form.menuIds = this.getMenuAllCheckedKeys();\r\n // 更新操作\r\n this.$axios.post('/sysRoleController/updateRole', this.form).then((res) => {\r\n this.$message.success('修改成功')\r\n this.open = false;\r\n this.reset();\r\n this.getList();\r\n this.menuOptions = [];\r\n this.loading = false\r\n }).catch((error) => {\r\n this.loading = false\r\n })\r\n } else {\r\n this.form.menuIds = this.getMenuAllCheckedKeys();\r\n this.$axios.post('/sysRoleController/addRole', this.form).then((res) => {\r\n this.$message.success('新增成功')\r\n this.open = false;\r\n this.reset();\r\n this.getList();\r\n this.menuOptions = [];\r\n this.loading = false\r\n }).catch((error) => {\r\n this.loading = false\r\n })\r\n }\r\n }\r\n });\r\n }, 1000),\r\n /** 提交按钮(数据权限) */\r\n submitDataScope: function () {\r\n if (this.form.roleId != undefined) {\r\n this.form.deptIds = this.getDeptAllCheckedKeys();\r\n dataScope(this.form).then(response => {\r\n this.$modal.msgSuccess(\"修改成功\");\r\n this.openDataScope = false;\r\n this.getList();\r\n });\r\n }\r\n },\r\n /** 删除按钮操作 */\r\n handleDelete() {\r\n const _selectData = this.$refs.xTable.getRadioRecord(true)\r\n if (_selectData == null) {\r\n this.$message({\r\n type: 'warning',\r\n message: '请选择记录!'\r\n });\r\n return\r\n }\r\n\r\n if (_selectData.roleKey == 'XTGL') {\r\n this.$message({\r\n type: 'warning',\r\n message: '内置角色不能删除!'\r\n });\r\n return\r\n }\r\n\r\n this.$confirm('是否确认删除角色?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n this.doDelete(_selectData)\r\n }).catch(() => {\r\n });\r\n },\r\n /**\r\n * 删除提交\r\n */\r\n doDelete: debounce(async function (_selectData) {\r\n\r\n const param = {\r\n roleId: _selectData.roleId\r\n }\r\n await this.$axios.post('/sysRoleController/delRole', this.$qs.stringify(param)).then((res) => {\r\n this.$message.success('删除成功!')\r\n this.getList();\r\n }).catch((error) => {\r\n })\r\n this.loading = false\r\n }, 1000)\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n/* tree border */\r\n.tree-border {\r\n margin-top: 5px;\r\n border: 1px solid #e5e6e7;\r\n background: #FFFFFF none;\r\n border-radius: 4px;\r\n}\r\n</style>\r\n"],"mappings":"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"}]}