c18688506738240a70c9fb97bf428d6a.json 63 KB

1
  1. {"remainingRequest":"D:\\test\\ssi-satoken\\ui\\node_modules\\thread-loader\\dist\\cjs.js!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\\thread-loader\\dist\\cjs.js","mtime":1669864538194},{"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:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovdGVzdC9zc2ktc2F0b2tlbi91aS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vcmVnZW5lcmF0b3JSdW50aW1lLmpzIjsKaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gIkQ6L3Rlc3Qvc3NpLXNhdG9rZW4vdWkvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FzeW5jVG9HZW5lcmF0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS51bnNoaWZ0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkubWFwLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnRyaW0uanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwoKaW1wb3J0IHsgZGVib3VuY2UgfSBmcm9tICJsb2Rhc2giOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogIlJvbGUiLAogIGRpY3RzOiBbJ3N5c19ub3JtYWxfZGlzYWJsZSddLAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICB0eXBlT3B0aW9uczogW3sKICAgICAgICB2YWx1ZTogJzAnLAogICAgICAgIGxhYmVsOiAn566h55CG5ZGYJwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICcxJywKICAgICAgICBsYWJlbDogJ+S4muWKoeWRmCcKICAgICAgfV0sCiAgICAgIHN0YXR1c09wdGlvbnM6IFt7CiAgICAgICAgdmFsdWU6ICcwJywKICAgICAgICBsYWJlbDogJ+ato+W4uCcKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnMScsCiAgICAgICAgbGFiZWw6ICflgZznlKgnCiAgICAgIH1dLAogICAgICAvLyDns7vnu5/nrqHnkIblkZhlZGl0CiAgICAgIHh0Z2x5ZWRpdDogZmFsc2UsCiAgICAgIGVkaXQ6IGZhbHNlLAogICAgICBzaG93VGFibGU6IGZhbHNlLAogICAgICAvLyDpga7nvanlsYIKICAgICAgbG9hZGluZzogdHJ1ZSwKICAgICAgLy8g6YCJ5Lit5pWw57uECiAgICAgIGlkczogW10sCiAgICAgIC8vIOmdnuWNleS4quemgeeUqAogICAgICBzaW5nbGU6IHRydWUsCiAgICAgIC8vIOmdnuWkmuS4quemgeeUqAogICAgICBtdWx0aXBsZTogdHJ1ZSwKICAgICAgLy8g5pi+56S65pCc57Si5p2h5Lu2CiAgICAgIHNob3dTZWFyY2g6IGZhbHNlLAogICAgICBjdXJyZW50UGFnZTogMSwKICAgICAgcGFnZVNpemU6IDEwLAogICAgICAvLyDmgLvmnaHmlbAKICAgICAgdG90YWw6IDAsCiAgICAgIC8vIOinkuiJsuihqOagvOaVsOaNrgogICAgICByb2xlTGlzdDogW10sCiAgICAgIC8vIOW8ueWHuuWxguagh+mimAogICAgICB0aXRsZTogIiIsCiAgICAgIC8vIOaYr+WQpuaYvuekuuW8ueWHuuWxggogICAgICBvcGVuOiBmYWxzZSwKICAgICAgLy8g5piv5ZCm5pi+56S65by55Ye65bGC77yI5pWw5o2u5p2D6ZmQ77yJCiAgICAgIG9wZW5EYXRhU2NvcGU6IGZhbHNlLAogICAgICBtZW51RXhwYW5kOiBmYWxzZSwKICAgICAgbWVudU5vZGVBbGw6IGZhbHNlLAogICAgICBkZXB0RXhwYW5kOiB0cnVlLAogICAgICBkZXB0Tm9kZUFsbDogZmFsc2UsCiAgICAgIHBjT3B0aW9uczogW3sKICAgICAgICB2YWx1ZTogJ1hUR0wnLAogICAgICAgIGxhYmVsOiAnWFRHTCcKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnU0pHTCcsCiAgICAgICAgbGFiZWw6ICdTSkdMJwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICdTSEdMJywKICAgICAgICBsYWJlbDogJ1NIR0wnCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJ1lXR0wnLAogICAgICAgIGxhYmVsOiAnWVdHTCcKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnU0pZVycsCiAgICAgICAgbGFiZWw6ICdTSllXJwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICdZV1BaJywKICAgICAgICBsYWJlbDogJ1lXUFonCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJ1lXQ1onLAogICAgICAgIGxhYmVsOiAnWVdDWicKICAgICAgfV0sCiAgICAgIC8vIOaXpeacn+iMg+WbtAogICAgICBkYXRlUmFuZ2U6IFtdLAogICAgICAvLyDmlbDmja7ojIPlm7TpgInpobkKICAgICAgZGF0YVNjb3BlT3B0aW9uczogW3sKICAgICAgICB2YWx1ZTogIjEiLAogICAgICAgIGxhYmVsOiAi5YWo6YOo5pWw5o2u5p2D6ZmQIgogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICIyIiwKICAgICAgICBsYWJlbDogIuiHquWumuaVsOaNruadg+mZkCIKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAiMyIsCiAgICAgICAgbGFiZWw6ICLmnKzpg6jpl6jmlbDmja7mnYPpmZAiCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogIjQiLAogICAgICAgIGxhYmVsOiAi5pys6YOo6Zeo5Y+K5Lul5LiL5pWw5o2u5p2D6ZmQIgogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICI1IiwKICAgICAgICBsYWJlbDogIuS7heacrOS6uuaVsOaNruadg+mZkCIKICAgICAgfV0sCiAgICAgIC8vIOiPnOWNleWIl+ihqAogICAgICBtZW51T3B0aW9uczogW10sCiAgICAgIC8vIOmDqOmXqOWIl+ihqAogICAgICBkZXB0T3B0aW9uczogW10sCiAgICAgIC8vIOafpeivouWPguaVsAogICAgICBxdWVyeVBhcmFtczogewogICAgICAgIHJvbGVOYW1lOiB1bmRlZmluZWQsCiAgICAgICAgcm9sZUtleTogdW5kZWZpbmVkLAogICAgICAgIHN0YXR1czogdW5kZWZpbmVkCiAgICAgIH0sCiAgICAgIC8vIOihqOWNleWPguaVsAogICAgICBmb3JtOiB7fSwKICAgICAgZGVmYXVsdFByb3BzOiB7CiAgICAgICAgY2hpbGRyZW46ICJjaGlsZHJlbiIsCiAgICAgICAgbGFiZWw6ICJsYWJlbCIKICAgICAgfSwKICAgICAgLy8g6KGo5Y2V5qCh6aqMCiAgICAgIHJ1bGVzOiB7CiAgICAgICAgcm9sZU5hbWU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLop5LoibLlkI3np7DkuI3og73kuLrnqboiLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfV0sCiAgICAgICAgcm9sZUtleTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuadg+mZkOWtl+espuS4jeiDveS4uuepuiIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9XSwKICAgICAgICByb2xlU29ydDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuinkuiJsumhuuW6j+S4jeiDveS4uuepuiIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9XQogICAgICB9CiAgICB9OwogIH0sCiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHsKICAgIHRoaXMuZ2V0TGlzdCgpOwogIH0sCiAgbWV0aG9kczogewogICAgY2hhbmdlcGM6IGZ1bmN0aW9uIGNoYW5nZXBjKHZhbHVlKSB7CiAgICAgIHRoaXMuZ2V0TWVudVRyZWVzZWxlY3QodmFsdWUpOwogICAgfSwKICAgIC8vIOWIl+ihqOeKtuaAgeagvOW8j+WMlgogICAgdHlwZUZvcm1hdDogZnVuY3Rpb24gdHlwZUZvcm1hdChfcmVmKSB7CiAgICAgIHZhciBjZWxsVmFsdWUgPSBfcmVmLmNlbGxWYWx1ZTsKICAgICAgdmFyIGJlbG9uZ1RvID0gJ+acquefpeeahOexu+Weiyc7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy50eXBlT3B0aW9ucy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChjZWxsVmFsdWUgPT0gIjAiKSB7CiAgICAgICAgICBiZWxvbmdUbyA9ICLnrqHnkIblkZgiOwogICAgICAgIH0gZWxzZSBpZiAoY2VsbFZhbHVlID09ICIxIikgewogICAgICAgICAgYmVsb25nVG8gPSAi5Lia5Yqh5ZGYIjsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGJlbG9uZ1RvOwogICAgfSwKICAgIC8qKiDmn6Xor6Lop5LoibLliJfooaggKi9nZXRMaXN0OiBmdW5jdGlvbiBnZXRMaXN0KCkgewogICAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBzZWFyY2hQYXJhbXM7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX3RoaXMuc2hvd1NlYXJjaCA9IHRydWU7CiAgICAgICAgICAgICAgX3RoaXMueHRnbHllZGl0ID0gdHJ1ZTsKICAgICAgICAgICAgICBfdGhpcy5lZGl0ID0gdHJ1ZTsKICAgICAgICAgICAgICBfdGhpcy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICBzZWFyY2hQYXJhbXMgPSB7CiAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogX3RoaXMuY3VycmVudFBhZ2UsCiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogX3RoaXMucGFnZVNpemUsCiAgICAgICAgICAgICAgICByb2xlTmFtZTogX3RoaXMucXVlcnlQYXJhbXMucm9sZU5hbWUsCiAgICAgICAgICAgICAgICByb2xlS2V5OiBfdGhpcy5xdWVyeVBhcmFtcy5yb2xlS2V5LAogICAgICAgICAgICAgICAgc3RhdHVzOiBfdGhpcy5xdWVyeVBhcmFtcy5zdGF0dXMKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA3OwogICAgICAgICAgICAgIHJldHVybiBfdGhpcy4kYXhpb3MuZ2V0KCcvc3lzUm9sZUNvbnRyb2xsZXIvZ2V0QWxsJywgewogICAgICAgICAgICAgICAgcGFyYW1zOiBzZWFyY2hQYXJhbXMKICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgIF90aGlzLnJvbGVMaXN0ID0gcmVzLmRhdGEucmVjb3JkczsKICAgICAgICAgICAgICAgIF90aGlzLnRvdGFsID0gcmVzLmRhdGEudG90YWw7CiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEucmVjb3JkcyA9PSAnJykgewogICAgICAgICAgICAgICAgICBfdGhpcy5zaG93VGFibGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIF90aGlzLnNob3dUYWJsZSA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgICAgICAgICBfdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAvLyB0aGlzLiRtZXNzYWdlLmVycm9yKCfojrflj5bmlbDmja7lh7rplJknICsgZXJyb3IpCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBoYW5kbGVQYWdlQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVQYWdlQ2hhbmdlKF9yZWYyKSB7CiAgICAgIHZhciBjdXJyZW50UGFnZSA9IF9yZWYyLmN1cnJlbnRQYWdlLAogICAgICAgIHBhZ2VTaXplID0gX3JlZjIucGFnZVNpemU7CiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBjdXJyZW50UGFnZTsKICAgICAgdGhpcy5wYWdlU2l6ZSA9IHBhZ2VTaXplOwogICAgICB0aGlzLmdldExpc3QoKTsKICAgIH0sCiAgICAvLyDliJfooajnirbmgIHmoLzlvI/ljJYKICAgIHN0YXR1c0Zvcm1hdDogZnVuY3Rpb24gc3RhdHVzRm9ybWF0KF9yZWYzKSB7CiAgICAgIHZhciBjZWxsVmFsdWUgPSBfcmVmMy5jZWxsVmFsdWU7CiAgICAgIHZhciBiZWxvbmdUbyA9ICfmnKrnn6XnmoTnsbvlnosnOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc3RhdHVzT3B0aW9ucy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChjZWxsVmFsdWUgPT0gIjAiKSB7CiAgICAgICAgICBiZWxvbmdUbyA9ICLmraPluLgiOwogICAgICAgIH0gZWxzZSBpZiAoY2VsbFZhbHVlID09ICIxIikgewogICAgICAgICAgYmVsb25nVG8gPSAi5YGc55SoIjsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGJlbG9uZ1RvOwogICAgfSwKICAgIC8qKiDmn6Xor6Loj5zljZXmoJHnu5PmnoQgKi9nZXRNZW51VHJlZXNlbGVjdDogZnVuY3Rpb24gZ2V0TWVudVRyZWVzZWxlY3QocGMpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKCkgewogICAgICAgIHZhciBzZWFyY2hQYXJhbXM7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIHNlYXJjaFBhcmFtcyA9IHsKICAgICAgICAgICAgICAgIHBjOiBwYwogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiBfdGhpczIuJGF4aW9zLmdldCgnL3N5c01lbnVDb250cm9sbGVyL3RyZWVzZWxlY3QnLCB7CiAgICAgICAgICAgICAgICBwYXJhbXM6IHNlYXJjaFBhcmFtcwogICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgX3RoaXMyLm1lbnVPcHRpb25zID0gcmVzLmRhdGE7CiAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgICAgICAgICBfdGhpczIubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgLy8gdGhpcy4kbWVzc2FnZS5lcnJvcign6I635Y+W5pWw5o2u5Ye66ZSZJyArIGVycm9yKQogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTIpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDmiYDmnInoj5zljZXoioLngrnmlbDmja4KICAgIGdldE1lbnVBbGxDaGVja2VkS2V5czogZnVuY3Rpb24gZ2V0TWVudUFsbENoZWNrZWRLZXlzKCkgewogICAgICAvLyDnm67liY3ooqvpgInkuK3nmoToj5zljZXoioLngrkKICAgICAgdmFyIGNoZWNrZWRLZXlzID0gdGhpcy4kcmVmcy5tZW51LmdldENoZWNrZWRLZXlzKCk7CiAgICAgIC8vIOWNiumAieS4reeahOiPnOWNleiKgueCuQogICAgICB2YXIgaGFsZkNoZWNrZWRLZXlzID0gdGhpcy4kcmVmcy5tZW51LmdldEhhbGZDaGVja2VkS2V5cygpOwogICAgICBjaGVja2VkS2V5cy51bnNoaWZ0LmFwcGx5KGNoZWNrZWRLZXlzLCBoYWxmQ2hlY2tlZEtleXMpOwogICAgICByZXR1cm4gY2hlY2tlZEtleXM7CiAgICB9LAogICAgLyoqIOagueaNruinkuiJsklE5p+l6K+i6I+c5Y2V5qCR57uT5p6EICovZ2V0Um9sZU1lbnVUcmVlc2VsZWN0OiBmdW5jdGlvbiBnZXRSb2xlTWVudVRyZWVzZWxlY3Qocm9sZUlkKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICB2YXIgcGFyYW0gPSB7CiAgICAgICAgcm9sZUlkOiByb2xlSWQKICAgICAgfTsKICAgICAgdGhpcy4kYXhpb3MuZ2V0KCcvc3lzTWVudUNvbnRyb2xsZXIvcm9sZU1lbnVUcmVlc2VsZWN0JywgewogICAgICAgIHBhcmFtczogcGFyYW0KICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXMzLm1lbnVPcHRpb25zID0gcmVzLmRhdGEubWVudXM7CiAgICAgICAgcmV0dXJuIHJlcy5kYXRhOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICBfdGhpczMubG9hZGluZyA9IGZhbHNlOwogICAgICAgIC8vIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+iOt+WPluaVsOaNruWHuumUmScgKyBlcnJvcikKICAgICAgfSk7CiAgICB9LAogICAgLy8g6KeS6Imy54q25oCB5L+u5pS5CiAgICBoYW5kbGVTdGF0dXNDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZVN0YXR1c0NoYW5nZShyb3cpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIHZhciB0ZXh0ID0gcm93LnN0YXR1cyA9PT0gIjAiID8gIuWQr+eUqCIgOiAi5YGc55SoIjsKICAgICAgdGhpcy4kbW9kYWwuY29uZmlybSgn56Gu6K6k6KaBIicgKyB0ZXh0ICsgJyIiJyArIHJvdy5yb2xlTmFtZSArICci6KeS6Imy5ZCX77yfJykudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgcmV0dXJuIGNoYW5nZVJvbGVTdGF0dXMocm93LnJvbGVJZCwgcm93LnN0YXR1cyk7CiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzNC4kbW9kYWwubXNnU3VjY2Vzcyh0ZXh0ICsgIuaIkOWKnyIpOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgcm93LnN0YXR1cyA9IHJvdy5zdGF0dXMgPT09ICIwIiA/ICIxIiA6ICIwIjsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5Y+W5raI5oyJ6ZKuCiAgICBjYW5jZWw6IGZ1bmN0aW9uIGNhbmNlbCgpIHsKICAgICAgdGhpcy5tZW51T3B0aW9ucyA9IFtdOwogICAgICB0aGlzLm9wZW4gPSBmYWxzZTsKICAgICAgdGhpcy5yZXNldCgpOwogICAgfSwKICAgIC8vIOWPlua2iOaMiemSru+8iOaVsOaNruadg+mZkO+8iQogICAgY2FuY2VsRGF0YVNjb3BlOiBmdW5jdGlvbiBjYW5jZWxEYXRhU2NvcGUoKSB7CiAgICAgIHRoaXMuZGVwdE9wdGlvbnMgPSBbXTsKICAgICAgdGhpcy5vcGVuRGF0YVNjb3BlID0gZmFsc2U7CiAgICAgIHRoaXMucmVzZXQoKTsKICAgIH0sCiAgICAvLyDooajljZXph43nva4KICAgIHJlc2V0OiBmdW5jdGlvbiByZXNldCgpIHsKICAgICAgaWYgKHRoaXMuJHJlZnMubWVudSAhPSB1bmRlZmluZWQpIHsKICAgICAgICB0aGlzLiRyZWZzLm1lbnUuc2V0Q2hlY2tlZEtleXMoW10pOwogICAgICB9CiAgICAgIHRoaXMuZWRpdCA9IGZhbHNlLCB0aGlzLm1lbnVFeHBhbmQgPSBmYWxzZSwgdGhpcy5tZW51Tm9kZUFsbCA9IGZhbHNlLCB0aGlzLmRlcHRFeHBhbmQgPSB0cnVlLCB0aGlzLmRlcHROb2RlQWxsID0gZmFsc2UsIHRoaXMuZm9ybSA9IHsKICAgICAgICByb2xlSWQ6IHVuZGVmaW5lZCwKICAgICAgICByb2xlTmFtZTogdW5kZWZpbmVkLAogICAgICAgIHJvbGVLZXk6IHVuZGVmaW5lZCwKICAgICAgICByb2xlU29ydDogMCwKICAgICAgICBzdGF0dXM6ICIwIiwKICAgICAgICByb2xlVHlwZTogIjAiLAogICAgICAgIG1lbnVJZHM6IFtdLAogICAgICAgIGRlcHRJZHM6IFtdLAogICAgICAgIG1lbnVDaGVja1N0cmljdGx5OiB0cnVlLAogICAgICAgIGRlcHRDaGVja1N0cmljdGx5OiB0cnVlLAogICAgICAgIHJlbWFyazogdW5kZWZpbmVkCiAgICAgIH07CiAgICAgIHRoaXMucmVzZXRGb3JtKCJmb3JtIik7CiAgICB9LAogICAgLyoqIOaQnOe0ouaMiemSruaTjeS9nCAqLwogICAgaGFuZGxlUXVlcnk6IGRlYm91bmNlKGZ1bmN0aW9uICgpIHsKICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7CiAgICAgIHRoaXMucGFnZVNpemUgPSAxMDsKICAgICAgLy8gdGhpcy5xdWVyeVBhcmFtcy5wYWdlTnVtID0gMTsKICAgICAgdGhpcy5nZXRMaXN0KCk7CiAgICB9LCAxMDAwKSwKICAgIC8qKiDph43nva7mjInpkq7mk43kvZwgKi9yZXNldFF1ZXJ5OiBmdW5jdGlvbiByZXNldFF1ZXJ5KCkgewogICAgICB0aGlzLmRhdGVSYW5nZSA9IFtdOwogICAgICB0aGlzLnJlc2V0Rm9ybSgicXVlcnlGb3JtIik7CiAgICB9LAogICAgLy8g5aSa6YCJ5qGG6YCJ5Lit5pWw5o2uCiAgICBoYW5kbGVTZWxlY3Rpb25DaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZVNlbGVjdGlvbkNoYW5nZShzZWxlY3Rpb24pIHsKICAgICAgdGhpcy5pZHMgPSBzZWxlY3Rpb24ubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgcmV0dXJuIGl0ZW0ucm9sZUlkOwogICAgICB9KTsKICAgICAgdGhpcy5zaW5nbGUgPSBzZWxlY3Rpb24ubGVuZ3RoICE9IDE7CiAgICAgIHRoaXMubXVsdGlwbGUgPSAhc2VsZWN0aW9uLmxlbmd0aDsKICAgIH0sCiAgICAvLyDmm7TlpJrmk43kvZzop6blj5EKICAgIGhhbmRsZUNvbW1hbmQ6IGZ1bmN0aW9uIGhhbmRsZUNvbW1hbmQoY29tbWFuZCwgcm93KSB7CiAgICAgIHN3aXRjaCAoY29tbWFuZCkgewogICAgICAgIGNhc2UgImhhbmRsZUF1dGhVc2VyIjoKICAgICAgICAgIHRoaXMuaGFuZGxlQXV0aFVzZXIocm93KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICBicmVhazsKICAgICAgfQogICAgfSwKICAgIC8vIOagkeadg+mZkO+8iOWxleW8gC/mipjlj6DvvIkKICAgIGhhbmRsZUNoZWNrZWRUcmVlRXhwYW5kOiBmdW5jdGlvbiBoYW5kbGVDaGVja2VkVHJlZUV4cGFuZCh2YWx1ZSwgdHlwZSkgewogICAgICBpZiAodHlwZSA9PSAnbWVudScpIHsKICAgICAgICB2YXIgdHJlZUxpc3QgPSB0aGlzLm1lbnVPcHRpb25zOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHJlZUxpc3QubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHRoaXMuJHJlZnMubWVudS5zdG9yZS5ub2Rlc01hcFt0cmVlTGlzdFtpXS5pZF0uZXhwYW5kZWQgPSB2YWx1ZTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAnZGVwdCcpIHsKICAgICAgICB2YXIgX3RyZWVMaXN0ID0gdGhpcy5kZXB0T3B0aW9uczsKICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgX3RyZWVMaXN0Lmxlbmd0aDsgX2krKykgewogICAgICAgICAgdGhpcy4kcmVmcy5kZXB0LnN0b3JlLm5vZGVzTWFwW190cmVlTGlzdFtfaV0uaWRdLmV4cGFuZGVkID0gdmFsdWU7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgLy8g5qCR5p2D6ZmQ77yI5YWo6YCJL+WFqOS4jemAie+8iQogICAgaGFuZGxlQ2hlY2tlZFRyZWVOb2RlQWxsOiBmdW5jdGlvbiBoYW5kbGVDaGVja2VkVHJlZU5vZGVBbGwodmFsdWUsIHR5cGUpIHsKICAgICAgaWYgKHR5cGUgPT0gJ21lbnUnKSB7CiAgICAgICAgdGhpcy4kcmVmcy5tZW51LnNldENoZWNrZWROb2Rlcyh2YWx1ZSA/IHRoaXMubWVudU9wdGlvbnMgOiBbXSk7CiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAnZGVwdCcpIHsKICAgICAgICB0aGlzLiRyZWZzLmRlcHQuc2V0Q2hlY2tlZE5vZGVzKHZhbHVlID8gdGhpcy5kZXB0T3B0aW9ucyA6IFtdKTsKICAgICAgfQogICAgfSwKICAgIC8vIOagkeadg+mZkO+8iOeItuWtkOiBlOWKqO+8iQogICAgaGFuZGxlQ2hlY2tlZFRyZWVDb25uZWN0OiBmdW5jdGlvbiBoYW5kbGVDaGVja2VkVHJlZUNvbm5lY3QodmFsdWUsIHR5cGUpIHsKICAgICAgaWYgKHR5cGUgPT0gJ21lbnUnKSB7CiAgICAgICAgdGhpcy5mb3JtLm1lbnVDaGVja1N0cmljdGx5ID0gdmFsdWUgPyB0cnVlIDogZmFsc2U7CiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAnZGVwdCcpIHsKICAgICAgICB0aGlzLmZvcm0uZGVwdENoZWNrU3RyaWN0bHkgPSB2YWx1ZSA/IHRydWUgOiBmYWxzZTsKICAgICAgfQogICAgfSwKICAgIC8qKiDmlrDlop7mjInpkq7mk43kvZwgKi8KICAgIGhhbmRsZUFkZDogZGVib3VuY2UoZnVuY3Rpb24gKCkgewogICAgICB0aGlzLnJlc2V0KCk7CiAgICAgIC8vIHRoaXMuZ2V0TWVudVRyZWVzZWxlY3QoKTsKICAgICAgdGhpcy5vcGVuID0gdHJ1ZTsKICAgICAgdGhpcy50aXRsZSA9ICLmt7vliqDop5LoibIiOwogICAgICB0aGlzLmVkaXQgPSBmYWxzZTsKICAgIH0sIDUwMCksCiAgICAvKiog5L+u5pS55oyJ6ZKu5pON5L2cICovCiAgICBoYW5kbGVVcGRhdGU6IGRlYm91bmNlKCAvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMygpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CiAgICAgIHZhciBfc2VsZWN0RGF0YSwgcm9sZUlkLCBwYXJhbSwgcGFyYW0xOwogICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0MykgewogICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHsKICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgdGhpcy5yZXNldCgpOwogICAgICAgICAgICBfc2VsZWN0RGF0YSA9IHRoaXMuJHJlZnMueFRhYmxlLmdldFJhZGlvUmVjb3JkKHRydWUpOwogICAgICAgICAgICBpZiAoIShfc2VsZWN0RGF0YSA9PSBudWxsKSkgewogICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gNTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeiusOW9lSEnCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLmFicnVwdCgicmV0dXJuIik7CiAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgIHRoaXMuZWRpdCA9IHRydWU7CiAgICAgICAgICAgIHJvbGVJZCA9IF9zZWxlY3REYXRhLnJvbGVJZDsKICAgICAgICAgICAgcGFyYW0gPSB7CiAgICAgICAgICAgICAgcm9sZUlkOiByb2xlSWQKICAgICAgICAgICAgfTsKICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAxMDsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGF4aW9zLmdldCgnL3N5c1JvbGVDb250cm9sbGVyL2dldEluZm8nLCB7CiAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbQogICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMyKSB7CiAgICAgICAgICAgICAgX3RoaXM1LmZvcm0gPSByZXMyLmRhdGE7CiAgICAgICAgICAgICAgX3RoaXM1Lm9wZW4gPSB0cnVlOwogICAgICAgICAgICB9KTsKICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgIHRoaXMudGl0bGUgPSAi5L+u5pS56KeS6ImyIjsKICAgICAgICAgICAgcGFyYW0xID0gewogICAgICAgICAgICAgIHJvbGVJZDogcm9sZUlkCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMTQ7CiAgICAgICAgICAgIHJldHVybiB0aGlzLiRheGlvcy5nZXQoJy9zeXNNZW51Q29udHJvbGxlci9yb2xlTWVudVRyZWVzZWxlY3QnLCB7CiAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbTEKICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgX3RoaXM1Lm1lbnVPcHRpb25zID0gcmVzLmRhdGEubWVudXM7CiAgICAgICAgICAgICAgdmFyIGNoZWNrZWRLZXlzID0gcmVzLmRhdGEuY2hlY2tlZEtleXM7CiAgICAgICAgICAgICAgY2hlY2tlZEtleXMuZm9yRWFjaChmdW5jdGlvbiAodikgewogICAgICAgICAgICAgICAgX3RoaXM1LiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgIF90aGlzNS4kcmVmcy5tZW51LnNldENoZWNrZWQodiwgdHJ1ZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgY2FzZSAxNDoKICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpOwogICAgICAgIH0KICAgICAgfSwgX2NhbGxlZTMsIHRoaXMpOwogICAgfSkpLCAxMDAwKSwKICAgIC8qKiDpgInmi6nop5LoibLmnYPpmZDojIPlm7Top6blj5EgKi9kYXRhU2NvcGVTZWxlY3RDaGFuZ2U6IGZ1bmN0aW9uIGRhdGFTY29wZVNlbGVjdENoYW5nZSh2YWx1ZSkgewogICAgICBpZiAodmFsdWUgIT09ICcyJykgewogICAgICAgIHRoaXMuJHJlZnMuZGVwdC5zZXRDaGVja2VkS2V5cyhbXSk7CiAgICAgIH0KICAgIH0sCiAgICAvKiog5YiG6YWN55So5oi35pON5L2cICovCiAgICBoYW5kbGVBdXRoVXNlcjogZnVuY3Rpb24gaGFuZGxlQXV0aFVzZXIocm93KSB7CiAgICAgIHZhciByb2xlSWQgPSByb3cucm9sZUlkOwogICAgICB0aGlzLiRyb3V0ZXIucHVzaCgiL3N5c3RlbS9yb2xlLWF1dGgvdXNlci8iICsgcm9sZUlkKTsKICAgIH0sCiAgICAvKiog5o+Q5Lqk5oyJ6ZKuICovCiAgICBzdWJtaXRGb3JtOiBkZWJvdW5jZShmdW5jdGlvbiAoKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICB0aGlzLiRyZWZzWyJmb3JtIl0udmFsaWRhdGUoIC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWY1ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNCh2YWxpZCkgewogICAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU0JChfY29udGV4dDQpIHsKICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkgewogICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIGlmICghdmFsaWQpIHsKICAgICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSA2OwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghKF90aGlzNi5mb3JtLnJvbGVLZXkudHJpbSgpID09ICdYVEdMJykpIHsKICAgICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSA1OwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghKF90aGlzNi5mb3JtLmJ1aWx0SW4gIT0gJzAnKSkgewogICAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDU7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8g5LiN5piv5YaF572u55So5oi35YiZ5oum5oiqCiAgICAgICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICflhoXnva7op5LoibLmoIfor4ZYVEdM5LiN6IO95YaN5qyh5re75Yqg77yBJwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LmFicnVwdCgicmV0dXJuIik7CiAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgaWYgKF90aGlzNi5mb3JtLnJvbGVJZCAhPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgX3RoaXM2LmZvcm0ubWVudUlkcyA9IF90aGlzNi5nZXRNZW51QWxsQ2hlY2tlZEtleXMoKTsKICAgICAgICAgICAgICAgICAgLy8g5pu05paw5pON5L2cCiAgICAgICAgICAgICAgICAgIF90aGlzNi4kYXhpb3MucG9zdCgnL3N5c1JvbGVDb250cm9sbGVyL3VwZGF0ZVJvbGUnLCBfdGhpczYuZm9ybSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlLnN1Y2Nlc3MoJ+S/ruaUueaIkOWKnycpOwogICAgICAgICAgICAgICAgICAgIF90aGlzNi5vcGVuID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM2LnJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM2LmdldExpc3QoKTsKICAgICAgICAgICAgICAgICAgICBfdGhpczYubWVudU9wdGlvbnMgPSBbXTsKICAgICAgICAgICAgICAgICAgICBfdGhpczYubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICBfdGhpczYubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIF90aGlzNi5mb3JtLm1lbnVJZHMgPSBfdGhpczYuZ2V0TWVudUFsbENoZWNrZWRLZXlzKCk7CiAgICAgICAgICAgICAgICAgIF90aGlzNi4kYXhpb3MucG9zdCgnL3N5c1JvbGVDb250cm9sbGVyL2FkZFJvbGUnLCBfdGhpczYuZm9ybSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlLnN1Y2Nlc3MoJ+aWsOWinuaIkOWKnycpOwogICAgICAgICAgICAgICAgICAgIF90aGlzNi5vcGVuID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM2LnJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM2LmdldExpc3QoKTsKICAgICAgICAgICAgICAgICAgICBfdGhpczYubWVudU9wdGlvbnMgPSBbXTsKICAgICAgICAgICAgICAgICAgICBfdGhpczYubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICBfdGhpczYubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuc3RvcCgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9LCBfY2FsbGVlNCk7CiAgICAgICAgfSkpOwogICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gpIHsKICAgICAgICAgIHJldHVybiBfcmVmNS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICAgIH0oKSk7CiAgICB9LCAxMDAwKSwKICAgIC8qKiDmj5DkuqTmjInpkq7vvIjmlbDmja7mnYPpmZDvvIkgKi8KICAgIHN1Ym1pdERhdGFTY29wZTogZnVuY3Rpb24gc3VibWl0RGF0YVNjb3BlKCkgewogICAgICB2YXIgX3RoaXM3ID0gdGhpczsKICAgICAgaWYgKHRoaXMuZm9ybS5yb2xlSWQgIT0gdW5kZWZpbmVkKSB7CiAgICAgICAgdGhpcy5mb3JtLmRlcHRJZHMgPSB0aGlzLmdldERlcHRBbGxDaGVja2VkS2V5cygpOwogICAgICAgIGRhdGFTY29wZSh0aGlzLmZvcm0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgICBfdGhpczcuJG1vZGFsLm1zZ1N1Y2Nlc3MoIuS/ruaUueaIkOWKnyIpOwogICAgICAgICAgX3RoaXM3Lm9wZW5EYXRhU2NvcGUgPSBmYWxzZTsKICAgICAgICAgIF90aGlzNy5nZXRMaXN0KCk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCiAgICAvKiog5Yig6Zmk5oyJ6ZKu5pON5L2cICovaGFuZGxlRGVsZXRlOiBmdW5jdGlvbiBoYW5kbGVEZWxldGUoKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICB2YXIgX3NlbGVjdERhdGEgPSB0aGlzLiRyZWZzLnhUYWJsZS5nZXRSYWRpb1JlY29yZCh0cnVlKTsKICAgICAgaWYgKF9zZWxlY3REYXRhID09IG51bGwpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6norrDlvZUhJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZiAoX3NlbGVjdERhdGEucm9sZUtleSA9PSAnWFRHTCcpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywKICAgICAgICAgIG1lc3NhZ2U6ICflhoXnva7op5LoibLkuI3og73liKDpmaQhJwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLiRjb25maXJtKCfmmK/lkKbnoa7orqTliKDpmaTop5LoibI/JywgJ+aPkOekuicsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzOC5kb0RlbGV0ZShfc2VsZWN0RGF0YSk7CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHt9KTsKICAgIH0sCiAgICAvKioNCiAgICAgKiDliKDpmaTmj5DkuqQNCiAgICAgKi8KICAgIGRvRGVsZXRlOiBkZWJvdW5jZSggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgdmFyIF9yZWY2ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNShfc2VsZWN0RGF0YSkgewogICAgICAgIHZhciBfdGhpczkgPSB0aGlzOwogICAgICAgIHZhciBwYXJhbTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTUkKF9jb250ZXh0NSkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ1LnByZXYgPSBfY29udGV4dDUubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgcGFyYW0gPSB7CiAgICAgICAgICAgICAgICByb2xlSWQ6IF9zZWxlY3REYXRhLnJvbGVJZAogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiB0aGlzLiRheGlvcy5wb3N0KCcvc3lzUm9sZUNvbnRyb2xsZXIvZGVsUm9sZScsIHRoaXMuJHFzLnN0cmluZ2lmeShwYXJhbSkpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgX3RoaXM5LiRtZXNzYWdlLnN1Y2Nlc3MoJ+WIoOmZpOaIkOWKn++8gScpOwogICAgICAgICAgICAgICAgX3RoaXM5LmdldExpc3QoKTsKICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHt9KTsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NS5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTUsIHRoaXMpOwogICAgICB9KSk7CiAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gyKSB7CiAgICAgICAgcmV0dXJuIF9yZWY2LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgIH07CiAgICB9KCksIDEwMDApCiAgfQp9Ow=="},{"version":3,"names":["debounce","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","_asyncToGenerator","_regeneratorRuntime","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","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"],"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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"}]}