c7281be9df096a56e47554fb717f7fee.json 79 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":1696909835000},{"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":1697005520931},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\babel-loader\\lib\\index.js","mtime":1697005523218},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1697005520931},{"path":"D:\\test\\ssi-satoken\\ui\\node_modules\\vue-loader\\lib\\index.js","mtime":1697005524089}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:InVzZSBzdHJpY3QiOwoKdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKCJEOi90ZXN0L3NzaS1zYXRva2VuL3VpL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdC5qcyIpLmRlZmF1bHQ7Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsKICB2YWx1ZTogdHJ1ZQp9KTsKZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkudW5zaGlmdC5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkubWFwLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcudHJpbS5qcyIpOwp2YXIgX3JlZ2VuZXJhdG9yUnVudGltZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoIkQ6L3Rlc3Qvc3NpLXNhdG9rZW4vdWkvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvcmVnZW5lcmF0b3JSdW50aW1lLmpzIikpOwp2YXIgX2FzeW5jVG9HZW5lcmF0b3IyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKCJEOi90ZXN0L3NzaS1zYXRva2VuL3VpL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3IuanMiKSk7CnZhciBfbG9kYXNoID0gcmVxdWlyZSgibG9kYXNoIik7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCnZhciBfZGVmYXVsdCA9IHsKICBuYW1lOiAiUm9sZSIsCiAgZGljdHM6IFsnc3lzX25vcm1hbF9kaXNhYmxlJ10sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIHR5cGVPcHRpb25zOiBbewogICAgICAgIHZhbHVlOiAnMCcsCiAgICAgICAgbGFiZWw6ICfnrqHnkIblkZgnCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJzEnLAogICAgICAgIGxhYmVsOiAn5Lia5Yqh5ZGYJwogICAgICB9XSwKICAgICAgc3RhdHVzT3B0aW9uczogW3sKICAgICAgICB2YWx1ZTogJzAnLAogICAgICAgIGxhYmVsOiAn5q2j5bi4JwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICcxJywKICAgICAgICBsYWJlbDogJ+WBnOeUqCcKICAgICAgfV0sCiAgICAgIC8vIOezu+e7n+euoeeQhuWRmGVkaXQKICAgICAgeHRnbHllZGl0OiBmYWxzZSwKICAgICAgZWRpdDogZmFsc2UsCiAgICAgIHNob3dUYWJsZTogZmFsc2UsCiAgICAgIC8vIOmBrue9qeWxggogICAgICBsb2FkaW5nOiB0cnVlLAogICAgICAvLyDpgInkuK3mlbDnu4QKICAgICAgaWRzOiBbXSwKICAgICAgLy8g6Z2e5Y2V5Liq56aB55SoCiAgICAgIHNpbmdsZTogdHJ1ZSwKICAgICAgLy8g6Z2e5aSa5Liq56aB55SoCiAgICAgIG11bHRpcGxlOiB0cnVlLAogICAgICAvLyDmmL7npLrmkJzntKLmnaHku7YKICAgICAgc2hvd1NlYXJjaDogZmFsc2UsCiAgICAgIGN1cnJlbnRQYWdlOiAxLAogICAgICBwYWdlU2l6ZTogMTAsCiAgICAgIC8vIOaAu+adoeaVsAogICAgICB0b3RhbDogMCwKICAgICAgLy8g6KeS6Imy6KGo5qC85pWw5o2uCiAgICAgIHJvbGVMaXN0OiBbXSwKICAgICAgLy8g5by55Ye65bGC5qCH6aKYCiAgICAgIHRpdGxlOiAiIiwKICAgICAgLy8g5piv5ZCm5pi+56S65by55Ye65bGCCiAgICAgIG9wZW46IGZhbHNlLAogICAgICAvLyDmmK/lkKbmmL7npLrlvLnlh7rlsYLvvIjmlbDmja7mnYPpmZDvvIkKICAgICAgb3BlbkRhdGFTY29wZTogZmFsc2UsCiAgICAgIG1lbnVFeHBhbmQ6IGZhbHNlLAogICAgICBtZW51Tm9kZUFsbDogZmFsc2UsCiAgICAgIGRlcHRFeHBhbmQ6IHRydWUsCiAgICAgIGRlcHROb2RlQWxsOiBmYWxzZSwKICAgICAgcGNPcHRpb25zOiBbewogICAgICAgIHZhbHVlOiAnWFRHTCcsCiAgICAgICAgbGFiZWw6ICdYVEdMJwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICdTSkdMJywKICAgICAgICBsYWJlbDogJ1NKR0wnCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJ1NIR0wnLAogICAgICAgIGxhYmVsOiAnU0hHTCcKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnWVdHTCcsCiAgICAgICAgbGFiZWw6ICdZV0dMJwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICdTSllXJywKICAgICAgICBsYWJlbDogJ1NKWVcnCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJ1lXUFonLAogICAgICAgIGxhYmVsOiAnWVdQWicKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnWVdDWicsCiAgICAgICAgbGFiZWw6ICdZV0NaJwogICAgICB9XSwKICAgICAgLy8g5pel5pyf6IyD5Zu0CiAgICAgIGRhdGVSYW5nZTogW10sCiAgICAgIC8vIOaVsOaNruiMg+WbtOmAiemhuQogICAgICBkYXRhU2NvcGVPcHRpb25zOiBbewogICAgICAgIHZhbHVlOiAiMSIsCiAgICAgICAgbGFiZWw6ICLlhajpg6jmlbDmja7mnYPpmZAiCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogIjIiLAogICAgICAgIGxhYmVsOiAi6Ieq5a6a5pWw5o2u5p2D6ZmQIgogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICIzIiwKICAgICAgICBsYWJlbDogIuacrOmDqOmXqOaVsOaNruadg+mZkCIKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAiNCIsCiAgICAgICAgbGFiZWw6ICLmnKzpg6jpl6jlj4rku6XkuIvmlbDmja7mnYPpmZAiCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogIjUiLAogICAgICAgIGxhYmVsOiAi5LuF5pys5Lq65pWw5o2u5p2D6ZmQIgogICAgICB9XSwKICAgICAgLy8g6I+c5Y2V5YiX6KGoCiAgICAgIG1lbnVPcHRpb25zOiBbXSwKICAgICAgLy8g6YOo6Zeo5YiX6KGoCiAgICAgIGRlcHRPcHRpb25zOiBbXSwKICAgICAgLy8g5p+l6K+i5Y+C5pWwCiAgICAgIHF1ZXJ5UGFyYW1zOiB7CiAgICAgICAgcm9sZU5hbWU6IHVuZGVmaW5lZCwKICAgICAgICByb2xlS2V5OiB1bmRlZmluZWQsCiAgICAgICAgc3RhdHVzOiB1bmRlZmluZWQKICAgICAgfSwKICAgICAgLy8g6KGo5Y2V5Y+C5pWwCiAgICAgIGZvcm06IHt9LAogICAgICBkZWZhdWx0UHJvcHM6IHsKICAgICAgICBjaGlsZHJlbjogImNoaWxkcmVuIiwKICAgICAgICBsYWJlbDogImxhYmVsIgogICAgICB9LAogICAgICAvLyDooajljZXmoKHpqowKICAgICAgcnVsZXM6IHsKICAgICAgICByb2xlTmFtZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuinkuiJsuWQjeensOS4jeiDveS4uuepuiIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9XSwKICAgICAgICByb2xlS2V5OiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi5p2D6ZmQ5a2X56ym5LiN6IO95Li656m6IiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dLAogICAgICAgIHJvbGVTb3J0OiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6KeS6Imy6aG65bqP5LiN6IO95Li656m6IiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dCiAgICAgIH0KICAgIH07CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgdGhpcy5nZXRMaXN0KCk7CiAgfSwKICBtZXRob2RzOiB7CiAgICBjaGFuZ2VwYzogZnVuY3Rpb24gY2hhbmdlcGModmFsdWUpIHsKICAgICAgdGhpcy5nZXRNZW51VHJlZXNlbGVjdCh2YWx1ZSk7CiAgICB9LAogICAgLy8g5YiX6KGo54q25oCB5qC85byP5YyWCiAgICB0eXBlRm9ybWF0OiBmdW5jdGlvbiB0eXBlRm9ybWF0KF9yZWYpIHsKICAgICAgdmFyIGNlbGxWYWx1ZSA9IF9yZWYuY2VsbFZhbHVlOwogICAgICB2YXIgYmVsb25nVG8gPSAn5pyq55+l55qE57G75Z6LJzsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnR5cGVPcHRpb25zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKGNlbGxWYWx1ZSA9PSAiMCIpIHsKICAgICAgICAgIGJlbG9uZ1RvID0gIueuoeeQhuWRmCI7CiAgICAgICAgfSBlbHNlIGlmIChjZWxsVmFsdWUgPT0gIjEiKSB7CiAgICAgICAgICBiZWxvbmdUbyA9ICLkuJrliqHlkZgiOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gYmVsb25nVG87CiAgICB9LAogICAgLyoqIOafpeivouinkuiJsuWIl+ihqCAqL2dldExpc3Q6IGZ1bmN0aW9uIGdldExpc3QoKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgIHJldHVybiAoMCwgX2FzeW5jVG9HZW5lcmF0b3IyLmRlZmF1bHQpKCAvKiNfX1BVUkVfXyovKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBzeXNUaW1lMiwgbGsyLCBzZWFyY2hQYXJhbXMyLCBzeXNUaW1lLCBsaywgc2VhcmNoUGFyYW1zOwogICAgICAgIHJldHVybiAoMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLiRheGlvcy5nZXQoJy9zeXNQb2xpY3lDb250cm9sbGVyL2dldExpY2Vuc2VLZXknKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgIHN5c1RpbWUyID0gcmVzLmRhdGEuc3lzVGltZTsKICAgICAgICAgICAgICAgIGxrMiA9IHJlcy5kYXRhLmxrOwogICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge30pOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgc2VhcmNoUGFyYW1zMiA9IHsKICAgICAgICAgICAgICAgIHN5c1RpbWU6IHN5c1RpbWUyLAogICAgICAgICAgICAgICAgbGs6IGxrMgogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDU7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLiRheGlvcy5nZXQoJy9zeXNSb2xlQ29udHJvbGxlci9nZXRVc2VyQnlSb2xlJywgewogICAgICAgICAgICAgICAgcGFyYW1zOiBzZWFyY2hQYXJhbXMyCiAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICB2YXIgc3lzUm9sZSA9IHJlcy5kYXRhOwogICAgICAgICAgICAgICAgaWYgKHN5c1JvbGUucm9sZUtleSA9PSAnWFRHTCcpIHsKICAgICAgICAgICAgICAgICAgLy8g5LiN5piv57O757uf566h55CG5ZGY77yM6ZqQ6JeP5p+l6K+i5ZKM5L+u5pS5CiAgICAgICAgICAgICAgICAgIF90aGlzLnNob3dTZWFyY2ggPSB0cnVlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgX3RoaXMueHRnbHllZGl0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgX3RoaXMuZWRpdCA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7fSk7CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICBfdGhpcy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gODsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuJGF4aW9zLmdldCgnL3N5c1BvbGljeUNvbnRyb2xsZXIvZ2V0TGljZW5zZUtleScpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgc3lzVGltZSA9IHJlcy5kYXRhLnN5c1RpbWU7CiAgICAgICAgICAgICAgICBsayA9IHJlcy5kYXRhLmxrOwogICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge30pOwogICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgc2VhcmNoUGFyYW1zID0gewogICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IF90aGlzLmN1cnJlbnRQYWdlLAogICAgICAgICAgICAgICAgcGFnZVNpemU6IF90aGlzLnBhZ2VTaXplLAogICAgICAgICAgICAgICAgcm9sZU5hbWU6IF90aGlzLnF1ZXJ5UGFyYW1zLnJvbGVOYW1lLAogICAgICAgICAgICAgICAgcm9sZUtleTogX3RoaXMucXVlcnlQYXJhbXMucm9sZUtleSwKICAgICAgICAgICAgICAgIHN0YXR1czogX3RoaXMucXVlcnlQYXJhbXMuc3RhdHVzLAogICAgICAgICAgICAgICAgc3lzVGltZTogc3lzVGltZSwKICAgICAgICAgICAgICAgIGxrOiBsawogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDExOwogICAgICAgICAgICAgIHJldHVybiBfdGhpcy4kYXhpb3MuZ2V0KCcvc3lzUm9sZUNvbnRyb2xsZXIvZ2V0QWxsJywgewogICAgICAgICAgICAgICAgcGFyYW1zOiBzZWFyY2hQYXJhbXMKICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgIF90aGlzLnJvbGVMaXN0ID0gcmVzLmRhdGEucmVjb3JkczsKICAgICAgICAgICAgICAgIF90aGlzLnRvdGFsID0gcmVzLmRhdGEudG90YWw7CiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEucmVjb3JkcyA9PSAnJykgewogICAgICAgICAgICAgICAgICBfdGhpcy5zaG93VGFibGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIF90aGlzLnNob3dUYWJsZSA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgICAgICAgICBfdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAvLyB0aGlzLiRtZXNzYWdlLmVycm9yKCfojrflj5bmlbDmja7lh7rplJknICsgZXJyb3IpCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgaGFuZGxlUGFnZUNoYW5nZTogZnVuY3Rpb24gaGFuZGxlUGFnZUNoYW5nZShfcmVmMikgewogICAgICB2YXIgY3VycmVudFBhZ2UgPSBfcmVmMi5jdXJyZW50UGFnZSwKICAgICAgICBwYWdlU2l6ZSA9IF9yZWYyLnBhZ2VTaXplOwogICAgICB0aGlzLmN1cnJlbnRQYWdlID0gY3VycmVudFBhZ2U7CiAgICAgIHRoaXMucGFnZVNpemUgPSBwYWdlU2l6ZTsKICAgICAgdGhpcy5nZXRMaXN0KCk7CiAgICB9LAogICAgLy8g5YiX6KGo54q25oCB5qC85byP5YyWCiAgICBzdGF0dXNGb3JtYXQ6IGZ1bmN0aW9uIHN0YXR1c0Zvcm1hdChfcmVmMykgewogICAgICB2YXIgY2VsbFZhbHVlID0gX3JlZjMuY2VsbFZhbHVlOwogICAgICB2YXIgYmVsb25nVG8gPSAn5pyq55+l55qE57G75Z6LJzsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnN0YXR1c09wdGlvbnMubGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAoY2VsbFZhbHVlID09ICIwIikgewogICAgICAgICAgYmVsb25nVG8gPSAi5q2j5bi4IjsKICAgICAgICB9IGVsc2UgaWYgKGNlbGxWYWx1ZSA9PSAiMSIpIHsKICAgICAgICAgIGJlbG9uZ1RvID0gIuWBnOeUqCI7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBiZWxvbmdUbzsKICAgIH0sCiAgICAvKiog5p+l6K+i6I+c5Y2V5qCR57uT5p6EICovZ2V0TWVudVRyZWVzZWxlY3Q6IGZ1bmN0aW9uIGdldE1lbnVUcmVlc2VsZWN0KHBjKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICByZXR1cm4gKDAsIF9hc3luY1RvR2VuZXJhdG9yMi5kZWZhdWx0KSggLyojX19QVVJFX18qLygwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIoKSB7CiAgICAgICAgdmFyIHN5c1RpbWUsIGxrLCBzZWFyY2hQYXJhbXM7CiAgICAgICAgcmV0dXJuICgwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiBfdGhpczIuJGF4aW9zLmdldCgnL3N5c1BvbGljeUNvbnRyb2xsZXIvZ2V0TGljZW5zZUtleScpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgc3lzVGltZSA9IHJlcy5kYXRhLnN5c1RpbWU7CiAgICAgICAgICAgICAgICBsayA9IHJlcy5kYXRhLmxrOwogICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge30pOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgc2VhcmNoUGFyYW1zID0gewogICAgICAgICAgICAgICAgcGM6IHBjLAogICAgICAgICAgICAgICAgc3lzVGltZTogc3lzVGltZSwKICAgICAgICAgICAgICAgIGxrOiBsawogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSA1OwogICAgICAgICAgICAgIHJldHVybiBfdGhpczIuJGF4aW9zLmdldCgnL3N5c01lbnVDb250cm9sbGVyL3RyZWVzZWxlY3QnLCB7CiAgICAgICAgICAgICAgICBwYXJhbXM6IHNlYXJjaFBhcmFtcwogICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgX3RoaXMyLm1lbnVPcHRpb25zID0gcmVzLmRhdGE7CiAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgICAgICAgICBfdGhpczIubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgLy8gdGhpcy4kbWVzc2FnZS5lcnJvcign6I635Y+W5pWw5o2u5Ye66ZSZJyArIGVycm9yKQogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTIpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDmiYDmnInoj5zljZXoioLngrnmlbDmja4KICAgIGdldE1lbnVBbGxDaGVja2VkS2V5czogZnVuY3Rpb24gZ2V0TWVudUFsbENoZWNrZWRLZXlzKCkgewogICAgICAvLyDnm67liY3ooqvpgInkuK3nmoToj5zljZXoioLngrkKICAgICAgdmFyIGNoZWNrZWRLZXlzID0gdGhpcy4kcmVmcy5tZW51LmdldENoZWNrZWRLZXlzKCk7CiAgICAgIC8vIOWNiumAieS4reeahOiPnOWNleiKgueCuQogICAgICB2YXIgaGFsZkNoZWNrZWRLZXlzID0gdGhpcy4kcmVmcy5tZW51LmdldEhhbGZDaGVja2VkS2V5cygpOwogICAgICBjaGVja2VkS2V5cy51bnNoaWZ0LmFwcGx5KGNoZWNrZWRLZXlzLCBoYWxmQ2hlY2tlZEtleXMpOwogICAgICByZXR1cm4gY2hlY2tlZEtleXM7CiAgICB9LAogICAgLyoqIOagueaNruinkuiJsklE5p+l6K+i6I+c5Y2V5qCR57uT5p6EICovZ2V0Um9sZU1lbnVUcmVlc2VsZWN0OiBmdW5jdGlvbiBnZXRSb2xlTWVudVRyZWVzZWxlY3Qocm9sZUlkKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICB2YXIgcGFyYW0gPSB7CiAgICAgICAgcm9sZUlkOiByb2xlSWQKICAgICAgfTsKICAgICAgdGhpcy4kYXhpb3MuZ2V0KCcvc3lzTWVudUNvbnRyb2xsZXIvcm9sZU1lbnVUcmVlc2VsZWN0JywgewogICAgICAgIHBhcmFtczogcGFyYW0KICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXMzLm1lbnVPcHRpb25zID0gcmVzLmRhdGEubWVudXM7CiAgICAgICAgcmV0dXJuIHJlcy5kYXRhOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICBfdGhpczMubG9hZGluZyA9IGZhbHNlOwogICAgICAgIC8vIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+iOt+WPluaVsOaNruWHuumUmScgKyBlcnJvcikKICAgICAgfSk7CiAgICB9LAogICAgLy8g6KeS6Imy54q25oCB5L+u5pS5CiAgICBoYW5kbGVTdGF0dXNDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZVN0YXR1c0NoYW5nZShyb3cpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIHZhciB0ZXh0ID0gcm93LnN0YXR1cyA9PT0gIjAiID8gIuWQr+eUqCIgOiAi5YGc55SoIjsKICAgICAgdGhpcy4kbW9kYWwuY29uZmlybSgn56Gu6K6k6KaBIicgKyB0ZXh0ICsgJyIiJyArIHJvdy5yb2xlTmFtZSArICci6KeS6Imy5ZCX77yfJykudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgcmV0dXJuIGNoYW5nZVJvbGVTdGF0dXMocm93LnJvbGVJZCwgcm93LnN0YXR1cyk7CiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzNC4kbW9kYWwubXNnU3VjY2Vzcyh0ZXh0ICsgIuaIkOWKnyIpOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgcm93LnN0YXR1cyA9IHJvdy5zdGF0dXMgPT09ICIwIiA/ICIxIiA6ICIwIjsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5Y+W5raI5oyJ6ZKuCiAgICBjYW5jZWw6IGZ1bmN0aW9uIGNhbmNlbCgpIHsKICAgICAgdGhpcy5tZW51T3B0aW9ucyA9IFtdOwogICAgICB0aGlzLm9wZW4gPSBmYWxzZTsKICAgICAgdGhpcy5yZXNldCgpOwogICAgfSwKICAgIC8vIOWPlua2iOaMiemSru+8iOaVsOaNruadg+mZkO+8iQogICAgY2FuY2VsRGF0YVNjb3BlOiBmdW5jdGlvbiBjYW5jZWxEYXRhU2NvcGUoKSB7CiAgICAgIHRoaXMuZGVwdE9wdGlvbnMgPSBbXTsKICAgICAgdGhpcy5vcGVuRGF0YVNjb3BlID0gZmFsc2U7CiAgICAgIHRoaXMucmVzZXQoKTsKICAgIH0sCiAgICAvLyDooajljZXph43nva4KICAgIHJlc2V0OiBmdW5jdGlvbiByZXNldCgpIHsKICAgICAgaWYgKHRoaXMuJHJlZnMubWVudSAhPSB1bmRlZmluZWQpIHsKICAgICAgICB0aGlzLiRyZWZzLm1lbnUuc2V0Q2hlY2tlZEtleXMoW10pOwogICAgICB9CiAgICAgIHRoaXMuZWRpdCA9IGZhbHNlLCB0aGlzLm1lbnVFeHBhbmQgPSBmYWxzZSwgdGhpcy5tZW51Tm9kZUFsbCA9IGZhbHNlLCB0aGlzLmRlcHRFeHBhbmQgPSB0cnVlLCB0aGlzLmRlcHROb2RlQWxsID0gZmFsc2UsIHRoaXMuZm9ybSA9IHsKICAgICAgICByb2xlSWQ6IHVuZGVmaW5lZCwKICAgICAgICByb2xlTmFtZTogdW5kZWZpbmVkLAogICAgICAgIHJvbGVLZXk6IHVuZGVmaW5lZCwKICAgICAgICByb2xlU29ydDogMCwKICAgICAgICBzdGF0dXM6ICIwIiwKICAgICAgICByb2xlVHlwZTogIjAiLAogICAgICAgIG1lbnVJZHM6IFtdLAogICAgICAgIGRlcHRJZHM6IFtdLAogICAgICAgIG1lbnVDaGVja1N0cmljdGx5OiB0cnVlLAogICAgICAgIGRlcHRDaGVja1N0cmljdGx5OiB0cnVlLAogICAgICAgIHJlbWFyazogdW5kZWZpbmVkCiAgICAgIH07CiAgICAgIHRoaXMucmVzZXRGb3JtKCJmb3JtIik7CiAgICB9LAogICAgLyoqIOaQnOe0ouaMiemSruaTjeS9nCAqLwogICAgaGFuZGxlUXVlcnk6ICgwLCBfbG9kYXNoLmRlYm91bmNlKShmdW5jdGlvbiAoKSB7CiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxOwogICAgICB0aGlzLnBhZ2VTaXplID0gMTA7CiAgICAgIC8vIHRoaXMucXVlcnlQYXJhbXMucGFnZU51bSA9IDE7CiAgICAgIHRoaXMuZ2V0TGlzdCgpOwogICAgfSwgMTAwMCksCiAgICAvKiog6YeN572u5oyJ6ZKu5pON5L2cICovcmVzZXRRdWVyeTogZnVuY3Rpb24gcmVzZXRRdWVyeSgpIHsKICAgICAgdGhpcy5kYXRlUmFuZ2UgPSBbXTsKICAgICAgdGhpcy5yZXNldEZvcm0oInF1ZXJ5Rm9ybSIpOwogICAgfSwKICAgIC8vIOWkmumAieahhumAieS4reaVsOaNrgogICAgaGFuZGxlU2VsZWN0aW9uQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVTZWxlY3Rpb25DaGFuZ2Uoc2VsZWN0aW9uKSB7CiAgICAgIHRoaXMuaWRzID0gc2VsZWN0aW9uLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIHJldHVybiBpdGVtLnJvbGVJZDsKICAgICAgfSk7CiAgICAgIHRoaXMuc2luZ2xlID0gc2VsZWN0aW9uLmxlbmd0aCAhPSAxOwogICAgICB0aGlzLm11bHRpcGxlID0gIXNlbGVjdGlvbi5sZW5ndGg7CiAgICB9LAogICAgLy8g5pu05aSa5pON5L2c6Kem5Y+RCiAgICBoYW5kbGVDb21tYW5kOiBmdW5jdGlvbiBoYW5kbGVDb21tYW5kKGNvbW1hbmQsIHJvdykgewogICAgICBzd2l0Y2ggKGNvbW1hbmQpIHsKICAgICAgICBjYXNlICJoYW5kbGVBdXRoVXNlciI6CiAgICAgICAgICB0aGlzLmhhbmRsZUF1dGhVc2VyKHJvdyk7CiAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0sCiAgICAvLyDmoJHmnYPpmZDvvIjlsZXlvIAv5oqY5Y+g77yJCiAgICBoYW5kbGVDaGVja2VkVHJlZUV4cGFuZDogZnVuY3Rpb24gaGFuZGxlQ2hlY2tlZFRyZWVFeHBhbmQodmFsdWUsIHR5cGUpIHsKICAgICAgaWYgKHR5cGUgPT0gJ21lbnUnKSB7CiAgICAgICAgdmFyIHRyZWVMaXN0ID0gdGhpcy5tZW51T3B0aW9uczsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyZWVMaXN0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB0aGlzLiRyZWZzLm1lbnUuc3RvcmUubm9kZXNNYXBbdHJlZUxpc3RbaV0uaWRdLmV4cGFuZGVkID0gdmFsdWU7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJ2RlcHQnKSB7CiAgICAgICAgdmFyIF90cmVlTGlzdCA9IHRoaXMuZGVwdE9wdGlvbnM7CiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IF90cmVlTGlzdC5sZW5ndGg7IF9pKyspIHsKICAgICAgICAgIHRoaXMuJHJlZnMuZGVwdC5zdG9yZS5ub2Rlc01hcFtfdHJlZUxpc3RbX2ldLmlkXS5leHBhbmRlZCA9IHZhbHVlOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIC8vIOagkeadg+mZkO+8iOWFqOmAiS/lhajkuI3pgInvvIkKICAgIGhhbmRsZUNoZWNrZWRUcmVlTm9kZUFsbDogZnVuY3Rpb24gaGFuZGxlQ2hlY2tlZFRyZWVOb2RlQWxsKHZhbHVlLCB0eXBlKSB7CiAgICAgIGlmICh0eXBlID09ICdtZW51JykgewogICAgICAgIHRoaXMuJHJlZnMubWVudS5zZXRDaGVja2VkTm9kZXModmFsdWUgPyB0aGlzLm1lbnVPcHRpb25zIDogW10pOwogICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJ2RlcHQnKSB7CiAgICAgICAgdGhpcy4kcmVmcy5kZXB0LnNldENoZWNrZWROb2Rlcyh2YWx1ZSA/IHRoaXMuZGVwdE9wdGlvbnMgOiBbXSk7CiAgICAgIH0KICAgIH0sCiAgICAvLyDmoJHmnYPpmZDvvIjniLblrZDogZTliqjvvIkKICAgIGhhbmRsZUNoZWNrZWRUcmVlQ29ubmVjdDogZnVuY3Rpb24gaGFuZGxlQ2hlY2tlZFRyZWVDb25uZWN0KHZhbHVlLCB0eXBlKSB7CiAgICAgIGlmICh0eXBlID09ICdtZW51JykgewogICAgICAgIHRoaXMuZm9ybS5tZW51Q2hlY2tTdHJpY3RseSA9IHZhbHVlID8gdHJ1ZSA6IGZhbHNlOwogICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJ2RlcHQnKSB7CiAgICAgICAgdGhpcy5mb3JtLmRlcHRDaGVja1N0cmljdGx5ID0gdmFsdWUgPyB0cnVlIDogZmFsc2U7CiAgICAgIH0KICAgIH0sCiAgICAvKiog5paw5aKe5oyJ6ZKu5pON5L2cICovCiAgICBoYW5kbGVBZGQ6ICgwLCBfbG9kYXNoLmRlYm91bmNlKShmdW5jdGlvbiAoKSB7CiAgICAgIHRoaXMucmVzZXQoKTsKICAgICAgLy8gdGhpcy5nZXRNZW51VHJlZXNlbGVjdCgpOwogICAgICB0aGlzLm9wZW4gPSB0cnVlOwogICAgICB0aGlzLnRpdGxlID0gIua3u+WKoOinkuiJsiI7CiAgICAgIHRoaXMuZWRpdCA9IGZhbHNlOwogICAgfSwgNTAwKSwKICAgIC8qKiDkv67mlLnmjInpkq7mk43kvZwgKi8KICAgIGhhbmRsZVVwZGF0ZTogKDAsIF9sb2Rhc2guZGVib3VuY2UpKCAvKiNfX1BVUkVfXyovKDAsIF9hc3luY1RvR2VuZXJhdG9yMi5kZWZhdWx0KSggLyojX19QVVJFX18qLygwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICB2YXIgX3NlbGVjdERhdGEsIHN5c1RpbWUyLCBsazIsIHNlYXJjaFBhcmFtczIsIHJvbGVJZCwgc3lzVGltZSwgbGssIHBhcmFtLCBzeXNUaW1lMSwgbGsxLCBwYXJhbTE7CiAgICAgIHJldHVybiAoMCwgX3JlZ2VuZXJhdG9yUnVudGltZTIuZGVmYXVsdCkoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHsKICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgIHRoaXMucmVzZXQoKTsKICAgICAgICAgICAgX3NlbGVjdERhdGEgPSB0aGlzLiRyZWZzLnhUYWJsZS5nZXRSYWRpb1JlY29yZCh0cnVlKTsKICAgICAgICAgICAgaWYgKCEoX3NlbGVjdERhdGEgPT0gbnVsbCkpIHsKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDU7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6norrDlvZUhJwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5hYnJ1cHQoInJldHVybiIpOwogICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDc7CiAgICAgICAgICAgIHJldHVybiB0aGlzLiRheGlvcy5nZXQoJy9zeXNQb2xpY3lDb250cm9sbGVyL2dldExpY2Vuc2VLZXknKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICBzeXNUaW1lMiA9IHJlcy5kYXRhLnN5c1RpbWU7CiAgICAgICAgICAgICAgbGsyID0gcmVzLmRhdGEubGs7CiAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge30pOwogICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICBzZWFyY2hQYXJhbXMyID0gewogICAgICAgICAgICAgIHN5c1RpbWU6IHN5c1RpbWUyLAogICAgICAgICAgICAgIGxrOiBsazIKICAgICAgICAgICAgfTsKICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAxMDsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGF4aW9zLmdldCgnL3N5c1JvbGVDb250cm9sbGVyL2dldFVzZXJCeVJvbGUnLCB7CiAgICAgICAgICAgICAgcGFyYW1zOiBzZWFyY2hQYXJhbXMyCiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgIHZhciBzeXNSb2xlID0gcmVzLmRhdGE7CiAgICAgICAgICAgICAgaWYgKHN5c1JvbGUucm9sZUtleSAhPSAnWFRHTCcpIHsKICAgICAgICAgICAgICAgIF90aGlzNS54dGdseWVkaXQgPSB0cnVlOwogICAgICAgICAgICAgICAgX3RoaXM1LmVkaXQgPSB0cnVlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7fSk7CiAgICAgICAgICBjYXNlIDEwOgogICAgICAgICAgICBpZiAoX3NlbGVjdERhdGEucm9sZUtleSA9PSAnWFRHTCcgfHwgX3NlbGVjdERhdGEucm9sZUtleSA9PSAnU0pHTCcpIHsKICAgICAgICAgICAgICB0aGlzLmVkaXQgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJvbGVJZCA9IF9zZWxlY3REYXRhLnJvbGVJZDsKICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAxNDsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGF4aW9zLmdldCgnL3N5c1BvbGljeUNvbnRyb2xsZXIvZ2V0TGljZW5zZUtleScpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgIHN5c1RpbWUgPSByZXMuZGF0YS5zeXNUaW1lOwogICAgICAgICAgICAgIGxrID0gcmVzLmRhdGEubGs7CiAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge30pOwogICAgICAgICAgY2FzZSAxNDoKICAgICAgICAgICAgcGFyYW0gPSB7CiAgICAgICAgICAgICAgcm9sZUlkOiByb2xlSWQsCiAgICAgICAgICAgICAgc3lzVGltZTogc3lzVGltZSwKICAgICAgICAgICAgICBsazogbGsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAxNzsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGF4aW9zLmdldCgnL3N5c1JvbGVDb250cm9sbGVyL2dldEluZm8nLCB7CiAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbQogICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMyKSB7CiAgICAgICAgICAgICAgX3RoaXM1LmZvcm0gPSByZXMyLmRhdGE7CiAgICAgICAgICAgICAgX3RoaXM1Lm9wZW4gPSB0cnVlOwogICAgICAgICAgICB9KTsKICAgICAgICAgIGNhc2UgMTc6CiAgICAgICAgICAgIHRoaXMudGl0bGUgPSAi5L+u5pS56KeS6ImyIjsKICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAyMDsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGF4aW9zLmdldCgnL3N5c1BvbGljeUNvbnRyb2xsZXIvZ2V0TGljZW5zZUtleScpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgIHN5c1RpbWUxID0gcmVzLmRhdGEuc3lzVGltZTsKICAgICAgICAgICAgICBsazEgPSByZXMuZGF0YS5sazsKICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7fSk7CiAgICAgICAgICBjYXNlIDIwOgogICAgICAgICAgICBwYXJhbTEgPSB7CiAgICAgICAgICAgICAgcm9sZUlkOiByb2xlSWQsCiAgICAgICAgICAgICAgc3lzVGltZTogc3lzVGltZTEsCiAgICAgICAgICAgICAgbGs6IGxrMQogICAgICAgICAgICB9OwogICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDIzOwogICAgICAgICAgICByZXR1cm4gdGhpcy4kYXhpb3MuZ2V0KCcvc3lzTWVudUNvbnRyb2xsZXIvcm9sZU1lbnVUcmVlc2VsZWN0JywgewogICAgICAgICAgICAgIHBhcmFtczogcGFyYW0xCiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgIF90aGlzNS5tZW51T3B0aW9ucyA9IHJlcy5kYXRhLm1lbnVzOwogICAgICAgICAgICAgIHZhciBjaGVja2VkS2V5cyA9IHJlcy5kYXRhLmNoZWNrZWRLZXlzOwogICAgICAgICAgICAgIGNoZWNrZWRLZXlzLmZvckVhY2goZnVuY3Rpb24gKHYpIHsKICAgICAgICAgICAgICAgIF90aGlzNS4kbmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICBfdGhpczUuJHJlZnMubWVudS5zZXRDaGVja2VkKHYsIHRydWUsIGZhbHNlKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKICAgICAgICAgIGNhc2UgMjM6CiAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTsKICAgICAgICB9CiAgICAgIH0sIF9jYWxsZWUzLCB0aGlzKTsKICAgIH0pKSwgMTAwMCksCiAgICAvKiog6YCJ5oup6KeS6Imy5p2D6ZmQ6IyD5Zu06Kem5Y+RICovZGF0YVNjb3BlU2VsZWN0Q2hhbmdlOiBmdW5jdGlvbiBkYXRhU2NvcGVTZWxlY3RDaGFuZ2UodmFsdWUpIHsKICAgICAgaWYgKHZhbHVlICE9PSAnMicpIHsKICAgICAgICB0aGlzLiRyZWZzLmRlcHQuc2V0Q2hlY2tlZEtleXMoW10pOwogICAgICB9CiAgICB9LAogICAgLyoqIOWIhumFjeeUqOaIt+aTjeS9nCAqLwogICAgaGFuZGxlQXV0aFVzZXI6IGZ1bmN0aW9uIGhhbmRsZUF1dGhVc2VyKHJvdykgewogICAgICB2YXIgcm9sZUlkID0gcm93LnJvbGVJZDsKICAgICAgdGhpcy4kcm91dGVyLnB1c2goIi9zeXN0ZW0vcm9sZS1hdXRoL3VzZXIvIiArIHJvbGVJZCk7CiAgICB9LAogICAgLyoqIOaPkOS6pOaMiemSriAqLwogICAgc3VibWl0Rm9ybTogKDAsIF9sb2Rhc2guZGVib3VuY2UpKGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CiAgICAgIHRoaXMuJHJlZnNbImZvcm0iXS52YWxpZGF0ZSggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICB2YXIgX3JlZjUgPSAoMCwgX2FzeW5jVG9HZW5lcmF0b3IyLmRlZmF1bHQpKCAvKiNfX1BVUkVfXyovKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNCh2YWxpZCkgewogICAgICAgICAgdmFyIHN5c1RpbWUsIGxrOwogICAgICAgICAgcmV0dXJuICgwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkgewogICAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDQucHJldiA9IF9jb250ZXh0NC5uZXh0KSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgaWYgKCF2YWxpZCkgewogICAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDEwOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghKF90aGlzNi5mb3JtLnJvbGVLZXkudHJpbSgpID09ICdYVEdMJyB8fCBfdGhpczYuZm9ybS5yb2xlS2V5LnRyaW0oKSA9PSAnU0pHTCcpKSB7CiAgICAgICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gNTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIShfdGhpczYuZm9ybS5idWlsdEluICE9ICcwJykpIHsKICAgICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSA1OwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8vIOS4jeaYr+WGhee9rueUqOaIt+WImeaLpuaIqgogICAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgICAgICAgICBtZXNzYWdlOiAn5YaF572u6KeS6Imy5qCH6K+GWFRHTOWSjFNKR0zkuI3og73lho3mrKHmt7vliqDvvIEnCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuYWJydXB0KCJyZXR1cm4iKTsKICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDc7CiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXM2LiRheGlvcy5nZXQoJy9zeXNQb2xpY3lDb250cm9sbGVyL2dldExpY2Vuc2VLZXknKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgICAgc3lzVGltZSA9IHJlcy5kYXRhLnN5c1RpbWU7CiAgICAgICAgICAgICAgICAgIGxrID0gcmVzLmRhdGEubGs7CiAgICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHt9KTsKICAgICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgICBfdGhpczYuZm9ybS5zeXNUaW1lID0gc3lzVGltZTsKICAgICAgICAgICAgICAgIF90aGlzNi5mb3JtLmxrID0gbGs7CiAgICAgICAgICAgICAgICBpZiAoX3RoaXM2LmZvcm0ucm9sZUlkICE9IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICBfdGhpczYuZm9ybS5tZW51SWRzID0gX3RoaXM2LmdldE1lbnVBbGxDaGVja2VkS2V5cygpOwogICAgICAgICAgICAgICAgICAvLyDmm7TmlrDmk43kvZwKICAgICAgICAgICAgICAgICAgX3RoaXM2LiRheGlvcy5wb3N0KCcvc3lzUm9sZUNvbnRyb2xsZXIvdXBkYXRlUm9sZScsIF90aGlzNi5mb3JtKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlLnN1Y2Nlc3MoJ+S/ruaUueaIkOWKnycpOwogICAgICAgICAgICAgICAgICAgICAgX3RoaXM2Lm9wZW4gPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgIF90aGlzNi5yZXNldCgpOwogICAgICAgICAgICAgICAgICAgICAgX3RoaXM2LmdldExpc3QoKTsKICAgICAgICAgICAgICAgICAgICAgIF90aGlzNi5tZW51T3B0aW9ucyA9IFtdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlLmVycm9yKHJlcy5kYXRhKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgX3RoaXM2LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM2LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBfdGhpczYuZm9ybS5tZW51SWRzID0gX3RoaXM2LmdldE1lbnVBbGxDaGVja2VkS2V5cygpOwogICAgICAgICAgICAgICAgICBfdGhpczYuJGF4aW9zLnBvc3QoJy9zeXNSb2xlQ29udHJvbGxlci9hZGRSb2xlJywgX3RoaXM2LmZvcm0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2Uuc3VjY2Vzcygn5paw5aKe5oiQ5YqfJyk7CiAgICAgICAgICAgICAgICAgICAgICBfdGhpczYub3BlbiA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgX3RoaXM2LnJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICBfdGhpczYuZ2V0TGlzdCgpOwogICAgICAgICAgICAgICAgICAgICAgX3RoaXM2Lm1lbnVPcHRpb25zID0gW107CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2UuZXJyb3IocmVzLmRhdGEpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBfdGhpczYubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICBfdGhpczYubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBjYXNlIDEwOgogICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZTQpOwogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94KSB7CiAgICAgICAgICByZXR1cm4gX3JlZjUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICB9OwogICAgICB9KCkpOwogICAgfSwgMTAwMCksCiAgICAvKiog5o+Q5Lqk5oyJ6ZKu77yI5pWw5o2u5p2D6ZmQ77yJICovCiAgICBzdWJtaXREYXRhU2NvcGU6IGZ1bmN0aW9uIHN1Ym1pdERhdGFTY29wZSgpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIGlmICh0aGlzLmZvcm0ucm9sZUlkICE9IHVuZGVmaW5lZCkgewogICAgICAgIHRoaXMuZm9ybS5kZXB0SWRzID0gdGhpcy5nZXREZXB0QWxsQ2hlY2tlZEtleXMoKTsKICAgICAgICBkYXRhU2NvcGUodGhpcy5mb3JtKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgICAgX3RoaXM3LiRtb2RhbC5tc2dTdWNjZXNzKCLkv67mlLnmiJDlip8iKTsKICAgICAgICAgIF90aGlzNy5vcGVuRGF0YVNjb3BlID0gZmFsc2U7CiAgICAgICAgICBfdGhpczcuZ2V0TGlzdCgpOwogICAgICAgIH0pOwogICAgICB9CiAgICB9LAogICAgLyoqIOWIoOmZpOaMiemSruaTjeS9nCAqL2hhbmRsZURlbGV0ZTogZnVuY3Rpb24gaGFuZGxlRGVsZXRlKCkgewogICAgICB2YXIgX3RoaXM4ID0gdGhpczsKICAgICAgdmFyIF9zZWxlY3REYXRhID0gdGhpcy4kcmVmcy54VGFibGUuZ2V0UmFkaW9SZWNvcmQodHJ1ZSk7CiAgICAgIGlmIChfc2VsZWN0RGF0YSA9PSBudWxsKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup6K6w5b2VIScKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKF9zZWxlY3REYXRhLnJvbGVLZXkgPT0gJ1hUR0wnIHx8IF9zZWxlY3REYXRhLnJvbGVLZXkgPT0gJ1NKR0wnKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICBtZXNzYWdlOiAn5YaF572u6KeS6Imy5LiN6IO95Yig6ZmkIScKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhpcy4kY29uZmlybSgn5piv5ZCm56Gu6K6k5Yig6Zmk6KeS6ImyPycsICfmj5DnpLonLCB7CiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICBfdGhpczguZG9EZWxldGUoX3NlbGVjdERhdGEpOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7fSk7CiAgICB9LAogICAgLyoqDQogICAgICog5Yig6Zmk5o+Q5LqkDQogICAgICovCiAgICBkb0RlbGV0ZTogKDAsIF9sb2Rhc2guZGVib3VuY2UpKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICB2YXIgX3JlZjYgPSAoMCwgX2FzeW5jVG9HZW5lcmF0b3IyLmRlZmF1bHQpKCAvKiNfX1BVUkVfXyovKDAsIF9yZWdlbmVyYXRvclJ1bnRpbWUyLmRlZmF1bHQpKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNShfc2VsZWN0RGF0YSkgewogICAgICAgIHZhciBfdGhpczkgPSB0aGlzOwogICAgICAgIHZhciBzeXNUaW1lLCBsaywgcGFyYW07CiAgICAgICAgcmV0dXJuICgwLCBfcmVnZW5lcmF0b3JSdW50aW1lMi5kZWZhdWx0KSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTUkKF9jb250ZXh0NSkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ1LnByZXYgPSBfY29udGV4dDUubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiB0aGlzLiRheGlvcy5nZXQoJy9zeXNQb2xpY3lDb250cm9sbGVyL2dldExpY2Vuc2VLZXknKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgIHN5c1RpbWUgPSByZXMuZGF0YS5zeXNUaW1lOwogICAgICAgICAgICAgICAgbGsgPSByZXMuZGF0YS5sazsKICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHt9KTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIHBhcmFtID0gewogICAgICAgICAgICAgICAgcm9sZUlkOiBfc2VsZWN0RGF0YS5yb2xlSWQsCiAgICAgICAgICAgICAgICBzeXNUaW1lOiBzeXNUaW1lLAogICAgICAgICAgICAgICAgbGs6IGxrCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDU7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGF4aW9zLnBvc3QoJy9zeXNSb2xlQ29udHJvbGxlci9kZWxSb2xlJywgcGFyYW0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgaWYgKHJlcy5jb2RlID09IDApIHsKICAgICAgICAgICAgICAgICAgX3RoaXM5LiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsCiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ+WIoOmZpOaIkOWKnyEnCiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICBfdGhpczkuZ2V0TGlzdCgpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgX3RoaXM5LiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlcy5kYXRhCiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgICAgICAgICAgX3RoaXM5LiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ+WIoOmZpOWksei0pSEnCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIF90aGlzOS5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNSwgdGhpcyk7CiAgICAgIH0pKTsKICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeDIpIHsKICAgICAgICByZXR1cm4gX3JlZjYuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgfTsKICAgIH0oKSwgMTAwMCkKICB9Cn07CmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0Ow=="},{"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","sysTime2","lk2","searchParams2","sysTime","lk","searchParams","wrap","_callee$","_context","prev","next","$axios","get","then","res","catch","error","params","sysRole","records","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","sysTime1","lk1","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","code","success","_x","arguments","submitDataScope","_this7","getDeptAllCheckedKeys","dataScope","response","handleDelete","_this8","$confirm","confirmButtonText","cancelButtonText","doDelete","_ref6","_callee5","_this9","_callee5$","_context5","_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 label=\"状态\" prop=\"status\">-->\r\n <!-- <el-select-->\r\n <!-- v-model=\"queryParams.status\"-->\r\n <!-- placeholder=\"请选择角色状态\"-->\r\n <!-- clearable-->\r\n <!-- style=\"width: 240px\"-->\r\n <!-- >-->\r\n <!-- <el-option-->\r\n <!-- v-for=\"item in statusOptions\"-->\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=\"roleId\" title=\"角色编号\"/>-->\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-column field=\"status\" title=\"状态\" :formatter=\"statusFormat\"/>-->\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-select-->\r\n <!-- v-model=\"form.status\"-->\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 statusOptions\"-->\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 // 获取当前用户的角色\r\n let sysTime2\r\n let lk2\r\n await this.$axios.get('/sysPolicyController/getLicenseKey').then((res) => {\r\n sysTime2 = res.data.sysTime\r\n lk2 = res.data.lk\r\n }).catch((error) => {\r\n })\r\n var searchParams2 = {\r\n sysTime: sysTime2,\r\n lk: lk2\r\n }\r\n await this.$axios.get('/sysRoleController/getUserByRole', {params: searchParams2}).then((res) => {\r\n let sysRole = res.data\r\n if (sysRole.roleKey == 'XTGL') {\r\n // 不是系统管理员,隐藏查询和修改\r\n this.showSearch = true\r\n } else {\r\n this.xtglyedit = true\r\n this.edit = true\r\n }\r\n }).catch((error) => {\r\n })\r\n\r\n this.loading = true;\r\n let sysTime\r\n let lk\r\n await this.$axios.get('/sysPolicyController/getLicenseKey').then((res) => {\r\n sysTime = res.data.sysTime\r\n lk = res.data.lk\r\n }).catch((error) => {\r\n })\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 sysTime: sysTime,\r\n lk: lk\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 let sysTime\r\n let lk\r\n await this.$axios.get('/sysPolicyController/getLicenseKey').then((res) => {\r\n sysTime = res.data.sysTime\r\n lk = res.data.lk\r\n }).catch((error) => {\r\n })\r\n var searchParams = {\r\n pc: pc,\r\n sysTime: sysTime,\r\n lk: lk\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 let sysTime2\r\n let lk2\r\n await this.$axios.get('/sysPolicyController/getLicenseKey').then((res) => {\r\n sysTime2 = res.data.sysTime\r\n lk2 = res.data.lk\r\n }).catch((error) => {\r\n })\r\n var searchParams2 = {\r\n sysTime: sysTime2,\r\n lk: lk2\r\n }\r\n await this.$axios.get('/sysRoleController/getUserByRole', {params: searchParams2}).then((res) => {\r\n let sysRole = res.data\r\n if (sysRole.roleKey != 'XTGL') {\r\n this.xtglyedit = true\r\n this.edit = true\r\n }\r\n }).catch((error) => {\r\n })\r\n\r\n\r\n if (_selectData.roleKey == 'XTGL' || _selectData.roleKey == 'SJGL') {\r\n this.edit = true;\r\n }\r\n const roleId = _selectData.roleId\r\n\r\n let sysTime\r\n let lk\r\n await this.$axios.get('/sysPolicyController/getLicenseKey').then((res) => {\r\n sysTime = res.data.sysTime\r\n lk = res.data.lk\r\n }).catch((error) => {\r\n })\r\n\r\n var param = {\r\n roleId: roleId,\r\n sysTime: sysTime,\r\n lk: lk\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 let sysTime1\r\n let lk1\r\n await this.$axios.get('/sysPolicyController/getLicenseKey').then((res) => {\r\n sysTime1 = res.data.sysTime\r\n lk1 = res.data.lk\r\n }).catch((error) => {\r\n })\r\n var param1 = {\r\n roleId: roleId,\r\n sysTime: sysTime1,\r\n lk: lk1\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' || this.form.roleKey.trim() == 'SJGL') {\r\n if (this.form.builtIn != '0') {\r\n // 不是内置用户则拦截\r\n this.$message({\r\n type: 'warning',\r\n message: '内置角色标识XTGL和SJGL不能再次添加!'\r\n });\r\n return\r\n }\r\n }\r\n\r\n let sysTime\r\n let lk\r\n await this.$axios.get('/sysPolicyController/getLicenseKey').then((res) => {\r\n sysTime = res.data.sysTime\r\n lk = res.data.lk\r\n }).catch((error) => {\r\n })\r\n this.form.sysTime = sysTime\r\n this.form.lk = lk\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 if (res.code == 0) {\r\n this.$message.success('修改成功')\r\n this.open = false;\r\n this.reset();\r\n this.getList();\r\n this.menuOptions = [];\r\n }\r\n if (res.code == 1) {\r\n this.$message.error(res.data)\r\n }\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 if (res.code == 0) {\r\n this.$message.success('新增成功')\r\n this.open = false;\r\n this.reset();\r\n this.getList();\r\n this.menuOptions = [];\r\n }\r\n if (res.code == 1) {\r\n this.$message.error(res.data)\r\n }\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' || _selectData.roleKey == 'SJGL') {\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 let sysTime\r\n let lk\r\n await this.$axios.get('/sysPolicyController/getLicenseKey').then((res) => {\r\n sysTime = res.data.sysTime\r\n lk = res.data.lk\r\n }).catch((error) => {\r\n })\r\n\r\n const param = {\r\n roleId: _selectData.roleId,\r\n sysTime: sysTime,\r\n lk: lk\r\n }\r\n await this.$axios.post('/sysRoleController/delRole', param).then((res) => {\r\n if (res.code == 0) {\r\n this.$message({\r\n type: 'success',\r\n message: '删除成功!'\r\n });\r\n this.getList();\r\n } else {\r\n this.$message({\r\n type: 'error',\r\n message: res.data\r\n });\r\n }\r\n }).catch((error) => {\r\n this.$message({\r\n type: 'error',\r\n message: '删除失败!'\r\n });\r\n this.loading = false\r\n })\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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"}]}