06e67eaa06627ac592061bcc048d66f1.json 48 KB

1
  1. {"remainingRequest":"C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\src\\views\\system\\role\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\src\\views\\system\\role\\index.vue","mtime":1647228900905},{"path":"C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\最新\\supervision-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgew0KICBsaXN0Um9sZSwNCiAgZ2V0Um9sZSwNCiAgZGVsUm9sZSwNCiAgYWRkUm9sZSwNCiAgdXBkYXRlUm9sZSwNCiAgZXhwb3J0Um9sZSwNCiAgZGF0YVNjb3BlLA0KICBjaGFuZ2VSb2xlU3RhdHVzLA0KfSBmcm9tICJAL2FwaS9zeXN0ZW0vcm9sZSI7DQppbXBvcnQgew0KICB0cmVlc2VsZWN0IGFzIG1lbnVUcmVlc2VsZWN0LA0KICByb2xlTWVudVRyZWVzZWxlY3QsDQp9IGZyb20gIkAvYXBpL3N5c3RlbS9tZW51IjsNCmltcG9ydCB7DQogIHRyZWVzZWxlY3QgYXMgZGVwdFRyZWVzZWxlY3QsDQogIHJvbGVEZXB0VHJlZXNlbGVjdCwNCn0gZnJvbSAiQC9hcGkvc3lzdGVtL2RlcHQiOw0KDQpleHBvcnQgZGVmYXVsdCB7DQogIG5hbWU6ICJSb2xlIiwNCiAgZGljdHM6IFsic3lzX25vcm1hbF9kaXNhYmxlIl0sDQogIGRhdGEoKSB7DQogICAgcmV0dXJuIHsNCiAgICAgIC8vIOmBrue9qeWxgg0KICAgICAgbG9hZGluZzogdHJ1ZSwNCiAgICAgIC8vIOWvvOWHuumBrue9qeWxgg0KICAgICAgZXhwb3J0TG9hZGluZzogZmFsc2UsDQogICAgICAvLyDpgInkuK3mlbDnu4QNCiAgICAgIGlkczogW10sDQogICAgICAvLyDpnZ7ljZXkuKrnpoHnlKgNCiAgICAgIHNpbmdsZTogdHJ1ZSwNCiAgICAgIC8vIOmdnuWkmuS4quemgeeUqA0KICAgICAgbXVsdGlwbGU6IHRydWUsDQogICAgICAvLyDmmL7npLrmkJzntKLmnaHku7YNCiAgICAgIHNob3dTZWFyY2g6IHRydWUsDQogICAgICAvLyDmgLvmnaHmlbANCiAgICAgIHRvdGFsOiAwLA0KICAgICAgLy8g6KeS6Imy6KGo5qC85pWw5o2uDQogICAgICByb2xlTGlzdDogW10sDQogICAgICAvLyDlvLnlh7rlsYLmoIfpopgNCiAgICAgIHRpdGxlOiAiIiwNCiAgICAgIC8vIOaYr+WQpuaYvuekuuW8ueWHuuWxgg0KICAgICAgb3BlbjogZmFsc2UsDQogICAgICAvLyDmmK/lkKbmmL7npLrlvLnlh7rlsYLvvIjmlbDmja7mnYPpmZDvvIkNCiAgICAgIG9wZW5EYXRhU2NvcGU6IGZhbHNlLA0KICAgICAgbWVudUV4cGFuZDogZmFsc2UsDQogICAgICBtZW51Tm9kZUFsbDogZmFsc2UsDQogICAgICBkZXB0RXhwYW5kOiB0cnVlLA0KICAgICAgZGVwdE5vZGVBbGw6IGZhbHNlLA0KICAgICAgLy8g5pel5pyf6IyD5Zu0DQogICAgICBkYXRlUmFuZ2U6IFtdLA0KICAgICAgLy8g5pWw5o2u6IyD5Zu06YCJ6aG5DQogICAgICBkYXRhU2NvcGVPcHRpb25zOiBbDQogICAgICAgIHsNCiAgICAgICAgICB2YWx1ZTogIjEiLA0KICAgICAgICAgIGxhYmVsOiAi5YWo6YOo5pWw5o2u5p2D6ZmQIiwNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIHZhbHVlOiAiMiIsDQogICAgICAgICAgbGFiZWw6ICLoh6rlrprmlbDmja7mnYPpmZAiLA0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgdmFsdWU6ICIzIiwNCiAgICAgICAgICBsYWJlbDogIuacrOmDqOmXqOaVsOaNruadg+mZkCIsDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICB2YWx1ZTogIjQiLA0KICAgICAgICAgIGxhYmVsOiAi5pys6YOo6Zeo5Y+K5Lul5LiL5pWw5o2u5p2D6ZmQIiwNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIHZhbHVlOiAiNSIsDQogICAgICAgICAgbGFiZWw6ICLku4XmnKzkurrmlbDmja7mnYPpmZAiLA0KICAgICAgICB9LA0KICAgICAgXSwNCiAgICAgIC8vIOiPnOWNleWIl+ihqA0KICAgICAgbWVudU9wdGlvbnM6IFtdLA0KICAgICAgLy8g6YOo6Zeo5YiX6KGoDQogICAgICBkZXB0T3B0aW9uczogW10sDQogICAgICAvLyDmn6Xor6Llj4LmlbANCiAgICAgIHF1ZXJ5UGFyYW1zOiB7DQogICAgICAgIHBhZ2VOdW06IDEsDQogICAgICAgIHBhZ2VTaXplOiAxMCwNCiAgICAgICAgcm9sZU5hbWU6IHVuZGVmaW5lZCwNCiAgICAgICAgcm9sZUtleTogdW5kZWZpbmVkLA0KICAgICAgICBzdGF0dXM6IHVuZGVmaW5lZCwNCiAgICAgIH0sDQogICAgICAvLyDooajljZXlj4LmlbANCiAgICAgIGZvcm06IHt9LA0KICAgICAgZGVmYXVsdFByb3BzOiB7DQogICAgICAgIGNoaWxkcmVuOiAiY2hpbGRyZW4iLA0KICAgICAgICBsYWJlbDogImxhYmVsIiwNCiAgICAgIH0sDQogICAgICAvLyDooajljZXmoKHpqowNCiAgICAgIHJ1bGVzOiB7DQogICAgICAgIHJvbGVOYW1lOiBbDQogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuinkuiJsuWQjeensOS4jeiDveS4uuepuiIsIHRyaWdnZXI6ICJibHVyIiB9LA0KICAgICAgICBdLA0KICAgICAgICByb2xlS2V5OiBbDQogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuadg+mZkOWtl+espuS4jeiDveS4uuepuiIsIHRyaWdnZXI6ICJibHVyIiB9LA0KICAgICAgICBdLA0KICAgICAgICByb2xlU29ydDogWw0KICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLop5LoibLpobrluo/kuI3og73kuLrnqboiLCB0cmlnZ2VyOiAiYmx1ciIgfSwNCiAgICAgICAgXSwNCiAgICAgIH0sDQogICAgfTsNCiAgfSwNCiAgY3JlYXRlZCgpIHsNCiAgICB0aGlzLmdldExpc3QoKTsNCiAgfSwNCiAgbWV0aG9kczogew0KICAgIC8qKiDmn6Xor6Lop5LoibLliJfooaggKi8NCiAgICBnZXRMaXN0KCkgew0KICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsNCiAgICAgIGxpc3RSb2xlKHRoaXMuYWRkRGF0ZVJhbmdlKHRoaXMucXVlcnlQYXJhbXMsIHRoaXMuZGF0ZVJhbmdlKSkudGhlbigNCiAgICAgICAgKHJlc3BvbnNlKSA9PiB7DQogICAgICAgICAgdGhpcy5yb2xlTGlzdCA9IHJlc3BvbnNlLnJvd3M7DQogICAgICAgICAgdGhpcy50b3RhbCA9IHJlc3BvbnNlLnRvdGFsOw0KICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOw0KICAgICAgICB9DQogICAgICApOw0KICAgIH0sDQogICAgLyoqIOafpeivouiPnOWNleagkee7k+aehCAqLw0KICAgIGdldE1lbnVUcmVlc2VsZWN0KCkgew0KICAgICAgbWVudVRyZWVzZWxlY3QoKS50aGVuKChyZXNwb25zZSkgPT4gew0KICAgICAgICB0aGlzLm1lbnVPcHRpb25zID0gcmVzcG9uc2UuZGF0YTsNCiAgICAgIH0pOw0KICAgIH0sDQogICAgLyoqIOafpeivoumDqOmXqOagkee7k+aehCAqLw0KICAgIGdldERlcHRUcmVlc2VsZWN0KCkgew0KICAgICAgZGVwdFRyZWVzZWxlY3QoKS50aGVuKChyZXNwb25zZSkgPT4gew0KICAgICAgICB0aGlzLmRlcHRPcHRpb25zID0gcmVzcG9uc2UuZGF0YTsNCiAgICAgIH0pOw0KICAgIH0sDQogICAgLy8g5omA5pyJ6I+c5Y2V6IqC54K55pWw5o2uDQogICAgZ2V0TWVudUFsbENoZWNrZWRLZXlzKCkgew0KICAgICAgLy8g55uu5YmN6KKr6YCJ5Lit55qE6I+c5Y2V6IqC54K5DQogICAgICBsZXQgY2hlY2tlZEtleXMgPSB0aGlzLiRyZWZzLm1lbnUuZ2V0Q2hlY2tlZEtleXMoKTsNCiAgICAgIC8vIOWNiumAieS4reeahOiPnOWNleiKgueCuQ0KICAgICAgbGV0IGhhbGZDaGVja2VkS2V5cyA9IHRoaXMuJHJlZnMubWVudS5nZXRIYWxmQ2hlY2tlZEtleXMoKTsNCiAgICAgIGNoZWNrZWRLZXlzLnVuc2hpZnQuYXBwbHkoY2hlY2tlZEtleXMsIGhhbGZDaGVja2VkS2V5cyk7DQogICAgICByZXR1cm4gY2hlY2tlZEtleXM7DQogICAgfSwNCiAgICAvLyDmiYDmnInpg6jpl6joioLngrnmlbDmja4NCiAgICBnZXREZXB0QWxsQ2hlY2tlZEtleXMoKSB7DQogICAgICAvLyDnm67liY3ooqvpgInkuK3nmoTpg6jpl6joioLngrkNCiAgICAgIGxldCBjaGVja2VkS2V5cyA9IHRoaXMuJHJlZnMuZGVwdC5nZXRDaGVja2VkS2V5cygpOw0KICAgICAgLy8g5Y2K6YCJ5Lit55qE6YOo6Zeo6IqC54K5DQogICAgICBsZXQgaGFsZkNoZWNrZWRLZXlzID0gdGhpcy4kcmVmcy5kZXB0LmdldEhhbGZDaGVja2VkS2V5cygpOw0KICAgICAgY2hlY2tlZEtleXMudW5zaGlmdC5hcHBseShjaGVja2VkS2V5cywgaGFsZkNoZWNrZWRLZXlzKTsNCiAgICAgIHJldHVybiBjaGVja2VkS2V5czsNCiAgICB9LA0KICAgIC8qKiDmoLnmja7op5LoibJJROafpeivouiPnOWNleagkee7k+aehCAqLw0KICAgIGdldFJvbGVNZW51VHJlZXNlbGVjdChyb2xlSWQpIHsNCiAgICAgIHJldHVybiByb2xlTWVudVRyZWVzZWxlY3Qocm9sZUlkKS50aGVuKChyZXNwb25zZSkgPT4gew0KICAgICAgICB0aGlzLm1lbnVPcHRpb25zID0gcmVzcG9uc2UubWVudXM7DQogICAgICAgIHJldHVybiByZXNwb25zZTsNCiAgICAgIH0pOw0KICAgIH0sDQogICAgLyoqIOagueaNruinkuiJsklE5p+l6K+i6YOo6Zeo5qCR57uT5p6EICovDQogICAgZ2V0Um9sZURlcHRUcmVlc2VsZWN0KHJvbGVJZCkgew0KICAgICAgcmV0dXJuIHJvbGVEZXB0VHJlZXNlbGVjdChyb2xlSWQpLnRoZW4oKHJlc3BvbnNlKSA9PiB7DQogICAgICAgIHRoaXMuZGVwdE9wdGlvbnMgPSByZXNwb25zZS5kZXB0czsNCiAgICAgICAgcmV0dXJuIHJlc3BvbnNlOw0KICAgICAgfSk7DQogICAgfSwNCiAgICAvLyDop5LoibLnirbmgIHkv67mlLkNCiAgICBoYW5kbGVTdGF0dXNDaGFuZ2Uocm93KSB7DQogICAgICBsZXQgdGV4dCA9IHJvdy5zdGF0dXMgPT09ICIwIiA/ICLlkK/nlKgiIDogIuWBnOeUqCI7DQogICAgICB0aGlzLiRtb2RhbA0KICAgICAgICAuY29uZmlybSgn56Gu6K6k6KaBIicgKyB0ZXh0ICsgJyIiJyArIHJvdy5yb2xlTmFtZSArICci6KeS6Imy5ZCX77yfJykNCiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgew0KICAgICAgICAgIHJldHVybiBjaGFuZ2VSb2xlU3RhdHVzKHJvdy5yb2xlSWQsIHJvdy5zdGF0dXMpOw0KICAgICAgICB9KQ0KICAgICAgICAudGhlbigoKSA9PiB7DQogICAgICAgICAgdGhpcy4kbW9kYWwubXNnU3VjY2Vzcyh0ZXh0ICsgIuaIkOWKnyIpOw0KICAgICAgICB9KQ0KICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkgew0KICAgICAgICAgIHJvdy5zdGF0dXMgPSByb3cuc3RhdHVzID09PSAiMCIgPyAiMSIgOiAiMCI7DQogICAgICAgIH0pOw0KICAgIH0sDQogICAgLy8g5Y+W5raI5oyJ6ZKuDQogICAgY2FuY2VsKCkgew0KICAgICAgdGhpcy5vcGVuID0gZmFsc2U7DQogICAgICB0aGlzLnJlc2V0KCk7DQogICAgfSwNCiAgICAvLyDlj5bmtojmjInpkq7vvIjmlbDmja7mnYPpmZDvvIkNCiAgICBjYW5jZWxEYXRhU2NvcGUoKSB7DQogICAgICB0aGlzLm9wZW5EYXRhU2NvcGUgPSBmYWxzZTsNCiAgICAgIHRoaXMucmVzZXQoKTsNCiAgICB9LA0KICAgIC8vIOihqOWNlemHjee9rg0KICAgIHJlc2V0KCkgew0KICAgICAgaWYgKHRoaXMuJHJlZnMubWVudSAhPSB1bmRlZmluZWQpIHsNCiAgICAgICAgdGhpcy4kcmVmcy5tZW51LnNldENoZWNrZWRLZXlzKFtdKTsNCiAgICAgIH0NCiAgICAgICh0aGlzLm1lbnVFeHBhbmQgPSBmYWxzZSksDQogICAgICAgICh0aGlzLm1lbnVOb2RlQWxsID0gZmFsc2UpLA0KICAgICAgICAodGhpcy5kZXB0RXhwYW5kID0gdHJ1ZSksDQogICAgICAgICh0aGlzLmRlcHROb2RlQWxsID0gZmFsc2UpLA0KICAgICAgICAodGhpcy5mb3JtID0gew0KICAgICAgICAgIHJvbGVJZDogdW5kZWZpbmVkLA0KICAgICAgICAgIHJvbGVOYW1lOiB1bmRlZmluZWQsDQogICAgICAgICAgcm9sZUtleTogdW5kZWZpbmVkLA0KICAgICAgICAgIHJvbGVTb3J0OiAwLA0KICAgICAgICAgIHN0YXR1czogIjAiLA0KICAgICAgICAgIG1lbnVJZHM6IFtdLA0KICAgICAgICAgIGRlcHRJZHM6IFtdLA0KICAgICAgICAgIG1lbnVDaGVja1N0cmljdGx5OiB0cnVlLA0KICAgICAgICAgIGRlcHRDaGVja1N0cmljdGx5OiB0cnVlLA0KICAgICAgICAgIHJlbWFyazogdW5kZWZpbmVkLA0KICAgICAgICB9KTsNCiAgICAgIHRoaXMucmVzZXRGb3JtKCJmb3JtIik7DQogICAgfSwNCiAgICAvKiog5pCc57Si5oyJ6ZKu5pON5L2cICovDQogICAgaGFuZGxlUXVlcnkoKSB7DQogICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2VOdW0gPSAxOw0KICAgICAgdGhpcy5nZXRMaXN0KCk7DQogICAgfSwNCiAgICAvKiog6YeN572u5oyJ6ZKu5pON5L2cICovDQogICAgcmVzZXRRdWVyeSgpIHsNCiAgICAgIHRoaXMuZGF0ZVJhbmdlID0gW107DQogICAgICB0aGlzLnJlc2V0Rm9ybSgicXVlcnlGb3JtIik7DQogICAgICB0aGlzLmhhbmRsZVF1ZXJ5KCk7DQogICAgfSwNCiAgICAvLyDlpJrpgInmoYbpgInkuK3mlbDmja4NCiAgICBoYW5kbGVTZWxlY3Rpb25DaGFuZ2Uoc2VsZWN0aW9uKSB7DQogICAgICB0aGlzLmlkcyA9IHNlbGVjdGlvbi5tYXAoKGl0ZW0pID0+IGl0ZW0ucm9sZUlkKTsNCiAgICAgIHRoaXMuc2luZ2xlID0gc2VsZWN0aW9uLmxlbmd0aCAhPSAxOw0KICAgICAgdGhpcy5tdWx0aXBsZSA9ICFzZWxlY3Rpb24ubGVuZ3RoOw0KICAgIH0sDQogICAgLy8g5pu05aSa5pON5L2c6Kem5Y+RDQogICAgaGFuZGxlQ29tbWFuZChjb21tYW5kLCByb3cpIHsNCiAgICAgIHN3aXRjaCAoY29tbWFuZCkgew0KICAgICAgICBjYXNlICJoYW5kbGVEYXRhU2NvcGUiOg0KICAgICAgICAgIHRoaXMuaGFuZGxlRGF0YVNjb3BlKHJvdyk7DQogICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgImhhbmRsZUF1dGhVc2VyIjoNCiAgICAgICAgICB0aGlzLmhhbmRsZUF1dGhVc2VyKHJvdyk7DQogICAgICAgICAgYnJlYWs7DQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgYnJlYWs7DQogICAgICB9DQogICAgfSwNCiAgICAvLyDmoJHmnYPpmZDvvIjlsZXlvIAv5oqY5Y+g77yJDQogICAgaGFuZGxlQ2hlY2tlZFRyZWVFeHBhbmQodmFsdWUsIHR5cGUpIHsNCiAgICAgIGlmICh0eXBlID09ICJtZW51Iikgew0KICAgICAgICBsZXQgdHJlZUxpc3QgPSB0aGlzLm1lbnVPcHRpb25zOw0KICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRyZWVMaXN0Lmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgdGhpcy4kcmVmcy5tZW51LnN0b3JlLm5vZGVzTWFwW3RyZWVMaXN0W2ldLmlkXS5leHBhbmRlZCA9IHZhbHVlOw0KICAgICAgICB9DQogICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gImRlcHQiKSB7DQogICAgICAgIGxldCB0cmVlTGlzdCA9IHRoaXMuZGVwdE9wdGlvbnM7DQogICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHJlZUxpc3QubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICB0aGlzLiRyZWZzLmRlcHQuc3RvcmUubm9kZXNNYXBbdHJlZUxpc3RbaV0uaWRdLmV4cGFuZGVkID0gdmFsdWU7DQogICAgICAgIH0NCiAgICAgIH0NCiAgICB9LA0KICAgIC8vIOagkeadg+mZkO+8iOWFqOmAiS/lhajkuI3pgInvvIkNCiAgICBoYW5kbGVDaGVja2VkVHJlZU5vZGVBbGwodmFsdWUsIHR5cGUpIHsNCiAgICAgIGlmICh0eXBlID09ICJtZW51Iikgew0KICAgICAgICB0aGlzLiRyZWZzLm1lbnUuc2V0Q2hlY2tlZE5vZGVzKHZhbHVlID8gdGhpcy5tZW51T3B0aW9ucyA6IFtdKTsNCiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAiZGVwdCIpIHsNCiAgICAgICAgdGhpcy4kcmVmcy5kZXB0LnNldENoZWNrZWROb2Rlcyh2YWx1ZSA/IHRoaXMuZGVwdE9wdGlvbnMgOiBbXSk7DQogICAgICB9DQogICAgfSwNCiAgICAvLyDmoJHmnYPpmZDvvIjniLblrZDogZTliqjvvIkNCiAgICBoYW5kbGVDaGVja2VkVHJlZUNvbm5lY3QodmFsdWUsIHR5cGUpIHsNCiAgICAgIGlmICh0eXBlID09ICJtZW51Iikgew0KICAgICAgICB0aGlzLmZvcm0ubWVudUNoZWNrU3RyaWN0bHkgPSB2YWx1ZSA/IHRydWUgOiBmYWxzZTsNCiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAiZGVwdCIpIHsNCiAgICAgICAgdGhpcy5mb3JtLmRlcHRDaGVja1N0cmljdGx5ID0gdmFsdWUgPyB0cnVlIDogZmFsc2U7DQogICAgICB9DQogICAgfSwNCiAgICAvKiog5paw5aKe5oyJ6ZKu5pON5L2cICovDQogICAgaGFuZGxlQWRkKCkgew0KICAgICAgdGhpcy5yZXNldCgpOw0KICAgICAgdGhpcy5nZXRNZW51VHJlZXNlbGVjdCgpOw0KICAgICAgdGhpcy5vcGVuID0gdHJ1ZTsNCiAgICAgIHRoaXMudGl0bGUgPSAi5re75Yqg6KeS6ImyIjsNCiAgICB9LA0KICAgIC8qKiDkv67mlLnmjInpkq7mk43kvZwgKi8NCiAgICBoYW5kbGVVcGRhdGUocm93KSB7DQogICAgICB0aGlzLnJlc2V0KCk7DQogICAgICBjb25zdCByb2xlSWQgPSByb3cucm9sZUlkIHx8IHRoaXMuaWRzOw0KICAgICAgY29uc3Qgcm9sZU1lbnUgPSB0aGlzLmdldFJvbGVNZW51VHJlZXNlbGVjdChyb2xlSWQpOw0KICAgICAgZ2V0Um9sZShyb2xlSWQpLnRoZW4oKHJlc3BvbnNlKSA9PiB7DQogICAgICAgIHRoaXMuZm9ybSA9IHJlc3BvbnNlLmRhdGE7DQogICAgICAgIHRoaXMub3BlbiA9IHRydWU7DQogICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHsNCiAgICAgICAgICByb2xlTWVudS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICAgIGxldCBjaGVja2VkS2V5cyA9IHJlcy5jaGVja2VkS2V5czsNCiAgICAgICAgICAgIGNoZWNrZWRLZXlzLmZvckVhY2goKHYpID0+IHsNCiAgICAgICAgICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4gew0KICAgICAgICAgICAgICAgIHRoaXMuJHJlZnMubWVudS5zZXRDaGVja2VkKHYsIHRydWUsIGZhbHNlKTsNCiAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICB9KTsNCiAgICAgICAgfSk7DQogICAgICAgIHRoaXMudGl0bGUgPSAi5L+u5pS56KeS6ImyIjsNCiAgICAgIH0pOw0KICAgIH0sDQogICAgLyoqIOmAieaLqeinkuiJsuadg+mZkOiMg+WbtOinpuWPkSAqLw0KICAgIGRhdGFTY29wZVNlbGVjdENoYW5nZSh2YWx1ZSkgew0KICAgICAgaWYgKHZhbHVlICE9PSAiMiIpIHsNCiAgICAgICAgdGhpcy4kcmVmcy5kZXB0LnNldENoZWNrZWRLZXlzKFtdKTsNCiAgICAgIH0NCiAgICB9LA0KICAgIC8qKiDliIbphY3mlbDmja7mnYPpmZDmk43kvZwgKi8NCiAgICBoYW5kbGVEYXRhU2NvcGUocm93KSB7DQogICAgICB0aGlzLnJlc2V0KCk7DQogICAgICBjb25zdCByb2xlRGVwdFRyZWVzZWxlY3QgPSB0aGlzLmdldFJvbGVEZXB0VHJlZXNlbGVjdChyb3cucm9sZUlkKTsNCiAgICAgIGdldFJvbGUocm93LnJvbGVJZCkudGhlbigocmVzcG9uc2UpID0+IHsNCiAgICAgICAgdGhpcy5mb3JtID0gcmVzcG9uc2UuZGF0YTsNCiAgICAgICAgdGhpcy5vcGVuRGF0YVNjb3BlID0gdHJ1ZTsNCiAgICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4gew0KICAgICAgICAgIHJvbGVEZXB0VHJlZXNlbGVjdC50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICAgIHRoaXMuJHJlZnMuZGVwdC5zZXRDaGVja2VkS2V5cyhyZXMuY2hlY2tlZEtleXMpOw0KICAgICAgICAgIH0pOw0KICAgICAgICB9KTsNCiAgICAgICAgdGhpcy50aXRsZSA9ICLliIbphY3mlbDmja7mnYPpmZAiOw0KICAgICAgfSk7DQogICAgfSwNCiAgICAvKiog5YiG6YWN55So5oi35pON5L2cICovDQogICAgaGFuZGxlQXV0aFVzZXI6IGZ1bmN0aW9uIChyb3cpIHsNCiAgICAgIGNvbnN0IHJvbGVJZCA9IHJvdy5yb2xlSWQ7DQogICAgICB0aGlzLiRyb3V0ZXIucHVzaCgiL3N5c3RlbS9yb2xlLWF1dGgvdXNlci8iICsgcm9sZUlkKTsNCiAgICB9LA0KICAgIC8qKiDmj5DkuqTmjInpkq4gKi8NCiAgICBzdWJtaXRGb3JtOiBmdW5jdGlvbiAoKSB7DQogICAgICB0aGlzLiRyZWZzWyJmb3JtIl0udmFsaWRhdGUoKHZhbGlkKSA9PiB7DQogICAgICAgIGlmICh2YWxpZCkgew0KICAgICAgICAgIGlmICh0aGlzLmZvcm0ucm9sZUlkICE9IHVuZGVmaW5lZCkgew0KICAgICAgICAgICAgdGhpcy5mb3JtLm1lbnVJZHMgPSB0aGlzLmdldE1lbnVBbGxDaGVja2VkS2V5cygpOw0KICAgICAgICAgICAgdXBkYXRlUm9sZSh0aGlzLmZvcm0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7DQogICAgICAgICAgICAgIHRoaXMuJG1vZGFsLm1zZ1N1Y2Nlc3MoIuS/ruaUueaIkOWKnyIpOw0KICAgICAgICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTsNCiAgICAgICAgICAgICAgdGhpcy5nZXRMaXN0KCk7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgdGhpcy5mb3JtLm1lbnVJZHMgPSB0aGlzLmdldE1lbnVBbGxDaGVja2VkS2V5cygpOw0KICAgICAgICAgICAgYWRkUm9sZSh0aGlzLmZvcm0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7DQogICAgICAgICAgICAgIHRoaXMuJG1vZGFsLm1zZ1N1Y2Nlc3MoIuaWsOWinuaIkOWKnyIpOw0KICAgICAgICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTsNCiAgICAgICAgICAgICAgdGhpcy5nZXRMaXN0KCk7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0pOw0KICAgIH0sDQogICAgLyoqIOaPkOS6pOaMiemSru+8iOaVsOaNruadg+mZkO+8iSAqLw0KICAgIHN1Ym1pdERhdGFTY29wZTogZnVuY3Rpb24gKCkgew0KICAgICAgaWYgKHRoaXMuZm9ybS5yb2xlSWQgIT0gdW5kZWZpbmVkKSB7DQogICAgICAgIHRoaXMuZm9ybS5kZXB0SWRzID0gdGhpcy5nZXREZXB0QWxsQ2hlY2tlZEtleXMoKTsNCiAgICAgICAgZGF0YVNjb3BlKHRoaXMuZm9ybSkudGhlbigocmVzcG9uc2UpID0+IHsNCiAgICAgICAgICB0aGlzLiRtb2RhbC5tc2dTdWNjZXNzKCLkv67mlLnmiJDlip8iKTsNCiAgICAgICAgICB0aGlzLm9wZW5EYXRhU2NvcGUgPSBmYWxzZTsNCiAgICAgICAgICB0aGlzLmdldExpc3QoKTsNCiAgICAgICAgfSk7DQogICAgICB9DQogICAgfSwNCiAgICAvKiog5Yig6Zmk5oyJ6ZKu5pON5L2cICovDQogICAgaGFuZGxlRGVsZXRlKHJvdykgew0KICAgICAgY29uc3Qgcm9sZUlkcyA9IHJvdy5yb2xlSWQgfHwgdGhpcy5pZHM7DQogICAgICB0aGlzLiRtb2RhbA0KICAgICAgICAuY29uZmlybSgn5piv5ZCm56Gu6K6k5Yig6Zmk6KeS6Imy57yW5Y+35Li6IicgKyByb2xlSWRzICsgJyLnmoTmlbDmja7pobnvvJ8nKQ0KICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7DQogICAgICAgICAgcmV0dXJuIGRlbFJvbGUocm9sZUlkcyk7DQogICAgICAgIH0pDQogICAgICAgIC50aGVuKCgpID0+IHsNCiAgICAgICAgICB0aGlzLmdldExpc3QoKTsNCiAgICAgICAgICB0aGlzLiRtb2RhbC5tc2dTdWNjZXNzKCLliKDpmaTmiJDlip8iKTsNCiAgICAgICAgfSkNCiAgICAgICAgLmNhdGNoKCgpID0+IHt9KTsNCiAgICB9LA0KICAgIC8qKiDlr7zlh7rmjInpkq7mk43kvZwgKi8NCiAgICBoYW5kbGVFeHBvcnQoKSB7DQogICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHRoaXMucXVlcnlQYXJhbXM7DQogICAgICB0aGlzLiRtb2RhbA0KICAgICAgICAuY29uZmlybSgi5piv5ZCm56Gu6K6k5a+85Ye65omA5pyJ55So5oi35pWw5o2u6aG577yfIikNCiAgICAgICAgLnRoZW4oKCkgPT4gew0KICAgICAgICAgIHRoaXMuZXhwb3J0TG9hZGluZyA9IHRydWU7DQogICAgICAgICAgcmV0dXJuIGV4cG9ydFJvbGUocXVlcnlQYXJhbXMpOw0KICAgICAgICB9KQ0KICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHsNCiAgICAgICAgICB0aGlzLiRkb3dubG9hZC5uYW1lKHJlc3BvbnNlLm1zZyk7DQogICAgICAgICAgdGhpcy5leHBvcnRMb2FkaW5nID0gZmFsc2U7DQogICAgICAgIH0pDQogICAgICAgIC5jYXRjaCgoKSA9PiB7fSk7DQogICAgfSwNCiAgfSwNCn07DQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/views/system/role","sourcesContent":["<template>\r\n <div class=\"app-container\">\r\n <el-form\r\n :model=\"queryParams\"\r\n ref=\"queryForm\"\r\n v-show=\"showSearch\"\r\n :inline=\"true\"\r\n >\r\n <el-form-item label=\"角色名称\" prop=\"roleName\">\r\n <el-input\r\n v-model=\"queryParams.roleName\"\r\n placeholder=\"请输入角色名称\"\r\n clearable\r\n size=\"small\"\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-input\r\n v-model=\"queryParams.roleKey\"\r\n placeholder=\"请输入权限字符\"\r\n clearable\r\n size=\"small\"\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=\"status\">\r\n <el-select\r\n v-model=\"queryParams.status\"\r\n placeholder=\"角色状态\"\r\n clearable\r\n size=\"small\"\r\n style=\"width: 240px\"\r\n >\r\n <el-option\r\n v-for=\"dict in dict.type.sys_normal_disable\"\r\n :key=\"dict.value\"\r\n :label=\"dict.label\"\r\n :value=\"dict.value\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"创建时间\">\r\n <el-date-picker\r\n v-model=\"dateRange\"\r\n size=\"small\"\r\n style=\"\r\n width: 200px;\r\n height: 36px;\r\n background: #00365f;\r\n border: 1px solid white;\r\n \"\r\n value-format=\"yyyy-MM-dd\"\r\n type=\"daterange\"\r\n range-separator=\"-\"\r\n start-placeholder=\"开始日期\"\r\n end-placeholder=\"结束日期\"\r\n ></el-date-picker>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button icon=\"el-icon-search\" size=\"btn\" @click=\"handleQuery\"\r\n >搜索</el-button\r\n >\r\n <el-button icon=\"el-icon-refresh\" size=\"btr\" @click=\"resetQuery\"\r\n >重置</el-button\r\n >\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 >新增</el-button\r\n >\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 :disabled=\"single\"\r\n @click=\"handleUpdate\"\r\n v-hasPermi=\"['system:role:edit']\"\r\n >修改</el-button\r\n >\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 :disabled=\"multiple\"\r\n @click=\"handleDelete\"\r\n v-hasPermi=\"['system:role:remove']\"\r\n >删除</el-button\r\n >\r\n </el-col>\r\n <el-col :span=\"1.5\">\r\n <el-button\r\n type=\"warning\"\r\n plain\r\n icon=\"el-icon-download\"\r\n size=\"mini\"\r\n :loading=\"exportLoading\"\r\n @click=\"handleExport\"\r\n v-hasPermi=\"['system:role:export']\"\r\n >导出</el-button\r\n >\r\n </el-col>\r\n <right-toolbar\r\n :showSearch.sync=\"showSearch\"\r\n @queryTable=\"getList\"\r\n ></right-toolbar>\r\n </el-row>\r\n\r\n <el-table\r\n v-loading=\"loading\"\r\n :data=\"roleList\"\r\n @selection-change=\"handleSelectionChange\"\r\n :header-cell-style=\"{ background: '#003C69', color: 'white' }\"\r\n >\r\n <el-table-column type=\"selection\" width=\"55\" align=\"center\" />\r\n <el-table-column label=\"角色编号\" prop=\"roleId\" width=\"120\" />\r\n <el-table-column\r\n label=\"角色名称\"\r\n prop=\"roleName\"\r\n :show-overflow-tooltip=\"true\"\r\n width=\"150\"\r\n />\r\n <el-table-column\r\n label=\"权限字符\"\r\n prop=\"roleKey\"\r\n :show-overflow-tooltip=\"true\"\r\n width=\"150\"\r\n />\r\n <el-table-column label=\"显示顺序\" prop=\"roleSort\" width=\"100\" />\r\n <el-table-column label=\"状态\" align=\"center\" width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <el-switch\r\n v-model=\"scope.row.status\"\r\n active-value=\"0\"\r\n inactive-value=\"1\"\r\n @change=\"handleStatusChange(scope.row)\"\r\n ></el-switch>\r\n </template>\r\n </el-table-column>\r\n <el-table-column\r\n label=\"创建时间\"\r\n align=\"center\"\r\n prop=\"createTime\"\r\n width=\"180\"\r\n >\r\n <template slot-scope=\"scope\">\r\n <span>{{ parseTime(scope.row.createTime) }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column\r\n label=\"操作\"\r\n align=\"center\"\r\n class-name=\"small-padding fixed-width\"\r\n >\r\n <template slot-scope=\"scope\" v-if=\"scope.row.roleId !== 1\">\r\n <el-button\r\n size=\"btu\"\r\n type=\"text\"\r\n @click=\"handleUpdate(scope.row)\"\r\n v-hasPermi=\"['system:role:edit']\"\r\n ><span class=\"edit\">修改</span></el-button\r\n >\r\n <el-button\r\n size=\"btd\"\r\n type=\"text\"\r\n @click=\"handleDelete(scope.row)\"\r\n v-hasPermi=\"['system:role:remove']\"\r\n ><span class=\"delete\">删除</span></el-button\r\n >\r\n <el-dropdown\r\n size=\"mini\"\r\n @command=\"(command) => handleCommand(command, scope.row)\"\r\n v-hasPermi=\"['system:role:edit']\"\r\n >\r\n <span class=\"more\">更多 </span>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item\r\n command=\"handleDataScope\"\r\n icon=\"el-icon-circle-check\"\r\n v-hasPermi=\"['system:role:edit']\"\r\n >数据权限</el-dropdown-item\r\n >\r\n <el-dropdown-item\r\n command=\"handleAuthUser\"\r\n icon=\"el-icon-user\"\r\n v-hasPermi=\"['system:role:edit']\"\r\n >分配用户</el-dropdown-item\r\n >\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n\r\n <pagination\r\n v-show=\"total > 0\"\r\n :total=\"total\"\r\n :page.sync=\"queryParams.pageNum\"\r\n :limit.sync=\"queryParams.pageSize\"\r\n @pagination=\"getList\"\r\n />\r\n\r\n <!-- 添加或修改角色配置对话框 -->\r\n <el-dialog\r\n :title=\"title\"\r\n :visible.sync=\"open\"\r\n width=\"700px\"\r\n style=\"\"\r\n append-to-body\r\n >\r\n <div class=\"jiben\">基本信息</div>\r\n <el-form\r\n ref=\"form\"\r\n :model=\"form\"\r\n :rules=\"rules\"\r\n label-width=\"100px\"\r\n :inline=\"true\"\r\n >\r\n <el-form-item label=\"角色名称\" prop=\"roleName\">\r\n <el-input v-model=\"form.roleName\" placeholder=\"请输入角色名称\" />\r\n </el-form-item>\r\n <el-form-item prop=\"roleKey\">\r\n <span slot=\"label\">\r\n <el-tooltip\r\n content=\"控制器中定义的权限字符,如:@PreAuthorize(`@ss.hasRole('admin')`)\"\r\n placement=\"top\"\r\n >\r\n <i class=\"el-icon-question\"></i>\r\n </el-tooltip>\r\n 权限字符\r\n </span>\r\n <el-input v-model=\"form.roleKey\" placeholder=\"请输入权限字符\" />\r\n </el-form-item>\r\n <el-form-item label=\"角色顺序\" prop=\"roleSort\">\r\n <el-input-number\r\n v-model=\"form.roleSort\"\r\n controls-position=\"right\"\r\n :min=\"0\"\r\n />\r\n </el-form-item>\r\n <el-form-item label=\"状态\">\r\n <el-radio-group v-model=\"form.status\">\r\n <el-radio\r\n v-for=\"dict in dict.type.sys_normal_disable\"\r\n :key=\"dict.value\"\r\n :label=\"dict.value\"\r\n >{{ dict.label }}</el-radio\r\n >\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item label=\"菜单权限\" >\r\n <el-checkbox\r\n v-model=\"menuExpand\"\r\n @change=\"handleCheckedTreeExpand($event, 'menu')\"\r\n >展开/折叠</el-checkbox\r\n >\r\n <el-checkbox\r\n v-model=\"menuNodeAll\"\r\n @change=\"handleCheckedTreeNodeAll($event, 'menu')\"\r\n >全选/全不选</el-checkbox\r\n >\r\n <el-checkbox\r\n v-model=\"form.menuCheckStrictly\"\r\n @change=\"handleCheckedTreeConnect($event, 'menu')\"\r\n >父子联动</el-checkbox\r\n >\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 <div class=\"jiben\">备注</div>\r\n\r\n <el-form-item label=\"\" class=\"textareas\" style=\"width: 100%\">\r\n <el-input\r\n v-model=\"form.remark\"\r\n type=\"textarea\"\r\n placeholder=\"请输入内容\"\r\n ></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\r\n :title=\"title\"\r\n :visible.sync=\"openDataScope\"\r\n width=\"700px\"\r\n append-to-body\r\n >\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\r\n v-model=\"deptExpand\"\r\n @change=\"handleCheckedTreeExpand($event, 'dept')\"\r\n >展开/折叠</el-checkbox\r\n >\r\n <el-checkbox\r\n v-model=\"deptNodeAll\"\r\n @change=\"handleCheckedTreeNodeAll($event, 'dept')\"\r\n >全选/全不选</el-checkbox\r\n >\r\n <el-checkbox\r\n v-model=\"form.deptCheckStrictly\"\r\n @change=\"handleCheckedTreeConnect($event, 'dept')\"\r\n >父子联动</el-checkbox\r\n >\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\nimport {\r\n listRole,\r\n getRole,\r\n delRole,\r\n addRole,\r\n updateRole,\r\n exportRole,\r\n dataScope,\r\n changeRoleStatus,\r\n} from \"@/api/system/role\";\r\nimport {\r\n treeselect as menuTreeselect,\r\n roleMenuTreeselect,\r\n} from \"@/api/system/menu\";\r\nimport {\r\n treeselect as deptTreeselect,\r\n roleDeptTreeselect,\r\n} from \"@/api/system/dept\";\r\n\r\nexport default {\r\n name: \"Role\",\r\n dicts: [\"sys_normal_disable\"],\r\n data() {\r\n return {\r\n // 遮罩层\r\n loading: true,\r\n // 导出遮罩层\r\n exportLoading: false,\r\n // 选中数组\r\n ids: [],\r\n // 非单个禁用\r\n single: true,\r\n // 非多个禁用\r\n multiple: true,\r\n // 显示搜索条件\r\n showSearch: true,\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 // 日期范围\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 pageNum: 1,\r\n pageSize: 10,\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 /** 查询角色列表 */\r\n getList() {\r\n this.loading = true;\r\n listRole(this.addDateRange(this.queryParams, this.dateRange)).then(\r\n (response) => {\r\n this.roleList = response.rows;\r\n this.total = response.total;\r\n this.loading = false;\r\n }\r\n );\r\n },\r\n /** 查询菜单树结构 */\r\n getMenuTreeselect() {\r\n menuTreeselect().then((response) => {\r\n this.menuOptions = response.data;\r\n });\r\n },\r\n /** 查询部门树结构 */\r\n getDeptTreeselect() {\r\n deptTreeselect().then((response) => {\r\n this.deptOptions = response.data;\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 // 所有部门节点数据\r\n getDeptAllCheckedKeys() {\r\n // 目前被选中的部门节点\r\n let checkedKeys = this.$refs.dept.getCheckedKeys();\r\n // 半选中的部门节点\r\n let halfCheckedKeys = this.$refs.dept.getHalfCheckedKeys();\r\n checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys);\r\n return checkedKeys;\r\n },\r\n /** 根据角色ID查询菜单树结构 */\r\n getRoleMenuTreeselect(roleId) {\r\n return roleMenuTreeselect(roleId).then((response) => {\r\n this.menuOptions = response.menus;\r\n return response;\r\n });\r\n },\r\n /** 根据角色ID查询部门树结构 */\r\n getRoleDeptTreeselect(roleId) {\r\n return roleDeptTreeselect(roleId).then((response) => {\r\n this.deptOptions = response.depts;\r\n return response;\r\n });\r\n },\r\n // 角色状态修改\r\n handleStatusChange(row) {\r\n let text = row.status === \"0\" ? \"启用\" : \"停用\";\r\n this.$modal\r\n .confirm('确认要\"' + text + '\"\"' + row.roleName + '\"角色吗?')\r\n .then(function () {\r\n return changeRoleStatus(row.roleId, row.status);\r\n })\r\n .then(() => {\r\n this.$modal.msgSuccess(text + \"成功\");\r\n })\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.open = false;\r\n this.reset();\r\n },\r\n // 取消按钮(数据权限)\r\n cancelDataScope() {\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.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 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() {\r\n this.queryParams.pageNum = 1;\r\n this.getList();\r\n },\r\n /** 重置按钮操作 */\r\n resetQuery() {\r\n this.dateRange = [];\r\n this.resetForm(\"queryForm\");\r\n this.handleQuery();\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 \"handleDataScope\":\r\n this.handleDataScope(row);\r\n break;\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() {\r\n this.reset();\r\n this.getMenuTreeselect();\r\n this.open = true;\r\n this.title = \"添加角色\";\r\n },\r\n /** 修改按钮操作 */\r\n handleUpdate(row) {\r\n this.reset();\r\n const roleId = row.roleId || this.ids;\r\n const roleMenu = this.getRoleMenuTreeselect(roleId);\r\n getRole(roleId).then((response) => {\r\n this.form = response.data;\r\n this.open = true;\r\n this.$nextTick(() => {\r\n roleMenu.then((res) => {\r\n let checkedKeys = res.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 });\r\n this.title = \"修改角色\";\r\n });\r\n },\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 handleDataScope(row) {\r\n this.reset();\r\n const roleDeptTreeselect = this.getRoleDeptTreeselect(row.roleId);\r\n getRole(row.roleId).then((response) => {\r\n this.form = response.data;\r\n this.openDataScope = true;\r\n this.$nextTick(() => {\r\n roleDeptTreeselect.then((res) => {\r\n this.$refs.dept.setCheckedKeys(res.checkedKeys);\r\n });\r\n });\r\n this.title = \"分配数据权限\";\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: function () {\r\n this.$refs[\"form\"].validate((valid) => {\r\n if (valid) {\r\n if (this.form.roleId != undefined) {\r\n this.form.menuIds = this.getMenuAllCheckedKeys();\r\n updateRole(this.form).then((response) => {\r\n this.$modal.msgSuccess(\"修改成功\");\r\n this.open = false;\r\n this.getList();\r\n });\r\n } else {\r\n this.form.menuIds = this.getMenuAllCheckedKeys();\r\n addRole(this.form).then((response) => {\r\n this.$modal.msgSuccess(\"新增成功\");\r\n this.open = false;\r\n this.getList();\r\n });\r\n }\r\n }\r\n });\r\n },\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(row) {\r\n const roleIds = row.roleId || this.ids;\r\n this.$modal\r\n .confirm('是否确认删除角色编号为\"' + roleIds + '\"的数据项?')\r\n .then(function () {\r\n return delRole(roleIds);\r\n })\r\n .then(() => {\r\n this.getList();\r\n this.$modal.msgSuccess(\"删除成功\");\r\n })\r\n .catch(() => {});\r\n },\r\n /** 导出按钮操作 */\r\n handleExport() {\r\n const queryParams = this.queryParams;\r\n this.$modal\r\n .confirm(\"是否确认导出所有用户数据项?\")\r\n .then(() => {\r\n this.exportLoading = true;\r\n return exportRole(queryParams);\r\n })\r\n .then((response) => {\r\n this.$download.name(response.msg);\r\n this.exportLoading = false;\r\n })\r\n .catch(() => {});\r\n },\r\n },\r\n};\r\n</script>\r\n<style scoped>\r\n/* 对话框背景颜色 */\r\n::v-deep .el-dialog {\r\n background: #004d86 !important;\r\n}\r\n::v-deep .el-textarea__inner {\r\n width: 700px;\r\n height: 104px;\r\n margin: auto !important;\r\n}\r\n::v-deep .el-dialog__header {\r\n border-bottom: 1px solid #718a9d;\r\n}\r\n::v-deep .el-dialog__title {\r\n color: #fff;\r\n font: 18px;\r\n}\r\n::v-deep .el-dialog__headerbtn .el-dialog__close {\r\n color: #fff;\r\n}\r\n::v-deep .el-form-item__label {\r\n font: 16px;\r\n color: #fff;\r\n width: 100px !important;\r\n}\r\n::v-deep .el-input__inner {\r\n /* width: 200px !important;\r\n height: 36px; */\r\n background: transparent;\r\n color: #fff;\r\n}\r\n/* 单位框背景颜色 */\r\n::v-deep .vue-treeselect__control {\r\n background: #004d86 !important;\r\n}\r\n/* 基本信息背景 */\r\n.jiben {\r\n width: 660px;\r\n height: 32px;\r\n background-image: url(../../../images/小标题底.png);\r\n margin-bottom: 25px;\r\n color: #fff;\r\n padding-left: 16px;\r\n line-height: 32px;\r\n}\r\n/*调整表单间距 */\r\n::v-deep .el-form-item__content {\r\n width: 200px;\r\n}\r\n.contents {\r\n padding: 0px 40px !important;\r\n}\r\n/* 下拉菜单 */\r\n.el-dropdown-link {\r\n cursor: pointer;\r\n color: #409eff;\r\n}\r\n.el-icon-arrow-down {\r\n font-size: 12px;\r\n}\r\n/* 刷新图标 */\r\n/* .el-icon-refresh {\r\n width: 76px;\r\n height: 36px;\r\n color: #fff;\r\n background-color: #1d96ff !important;\r\n border-radius: 4px;\r\n border: none;\r\n margin-left: 20px;\r\n font-size: 14px;\r\n} */\r\n/* 下拉菜单字体/背景颜色 */\r\n.el-select-dropdown__item.hover,\r\n.el-select-dropdown__item:hover {\r\n background-color: #004d86;\r\n color: #fff;\r\n}\r\n.el-select-dropdown__item {\r\n color: #fff;\r\n}\r\n/* 时间选择 */\r\n::v-deep .el-input--small .el-input__inner {\r\n width: 200px;\r\n height: 36px;\r\n line-height: 36px;\r\n}\r\n.el-date-editor.el-input {\r\n width: 200px;\r\n height: 36px;\r\n line-height: 36px;\r\n}\r\n::v-deep .el-date-editor.el-input .el-input__inner {\r\n height: 36px;\r\n line-height: 36px;\r\n}\r\n/* 单位框背景颜色 */\r\n::v-deep .vue-treeselect__control {\r\n background: #004d86 !important;\r\n color: #fff;\r\n}\r\n/* 单位下拉菜单选中字体颜色 */\r\n::v-deep .vue-treeselect__single-value {\r\n color: #fff !important;\r\n}\r\n/* 分页按钮 */\r\n::v-deep .el-pagination.is-background .el-pager li {\r\n background-color: #004d86;\r\n color: #fff;\r\n}\r\n::v-deep .el-pagination.is-background .btn-next {\r\n background-color: #004d86;\r\n color: #fff;\r\n}\r\n::v-deep .el-pagination.is-background .btn-prev,\r\n.el-pagination.is-background .btn-next,\r\n.el-pagination.is-background .el-pager li {\r\n background: #004d86 !important;\r\n color: #fff !important;\r\n}\r\n/* 备注输入框 */\r\n.textareas ::v-deep .el-form-item__content {\r\n width: 100%;\r\n}\r\n/* 计数器按钮 */\r\n::v-deep .el-input-number__increase {\r\n background-color: transparent !important;\r\n border: none;\r\n color: #cccccc;\r\n border-bottom: none !important;\r\n}\r\n::v-deep .el-input-number__decrease {\r\n background-color: transparent !important;\r\n border: none !important;\r\n color: #cccccc;\r\n}\r\n/* 菜单权限下拉 */\r\n::v-deep .tree-border {\r\n background: #004d86 !important;\r\n}\r\n::v-deep .el-tree {\r\n color: #fff !important;\r\n}\r\n::v-deep .el-tree-node__content:hover {\r\n background-color: #024274 !important;\r\n}\r\n.el-checkbox {\r\n color: rgb(204, 198, 198);\r\n}\r\n/* 状态 */\r\n.el-radio {\r\n color: rgb(204, 198, 198);\r\n}\r\n/* 日期背景颜色 */\r\n::v-deep .el-date-editor .el-range-input {\r\n background: #00365f;\r\n}\r\n::v-deep .el-textarea__inner {\r\n width: 600px;\r\n height: 104px;\r\n margin: auto !important;\r\n}\r\n::v-deep .el-input.is-disabled .el-input__inner {\r\n background-color: #004d86 !important;\r\n border-color: #dfe4ed;\r\n color: #C0C4CC;\r\n}\r\n</style>"]}]}