1 |
- {"remainingRequest":"D:\\test\\ssi-satoken\\ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\test\\ssi-satoken\\ui\\src\\views\\sysManager\\userManager\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\test\\ssi-satoken\\ui\\src\\views\\sysManager\\userManager\\index.vue","mtime":1697615040526},{"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:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQge2RlYm91bmNlfSBmcm9tICdsb2Rhc2gnDQppbXBvcnQge3VzZXJpbmZvRGVjcnlwdH0gZnJvbSAiQC91dGlscy9zbXV0aWwiOw0KDQpleHBvcnQgZGVmYXVsdCB7DQogIG5hbWU6ICJVc2VyIiwNCiAgZGF0YSgpIHsNCiAgICByZXR1cm4gew0KICAgICAgcGlja2VyT3B0aW9uczp7DQogICAgICAgIGRpc2FibGVkRGF0ZSh0aW1lKXsNCiAgICAgICAgICByZXR1cm4gdGltZS5nZXRUaW1lKCk8RGF0ZS5ub3coKS04LjY0ZTcNCiAgICAgICAgfQ0KICAgICAgfSwNCiAgICAgIHN5c1JvbGU6JycsDQogICAgICBpZDogdW5kZWZpbmVkLA0KICAgICAgdXNlcm5hbWU6IHVuZGVmaW5lZCwNCiAgICAgIG5pY2tuYW1lOiB1bmRlZmluZWQsDQogICAgICBpZGNhcmQ6IHVuZGVmaW5lZCwNCiAgICAgIHBob25lbnVtYmVyOiB1bmRlZmluZWQsDQogICAgICBtYWlsYm94OiB1bmRlZmluZWQsDQogICAgICBzdGF0dXM6ICIwIiwNCiAgICAgIHVzZXJ0eXBlOiAiMCIsDQogICAgICByZW1hcms6IHVuZGVmaW5lZCwNCiAgICAgIGV4cERhdGU6IHVuZGVmaW5lZCwNCiAgICAgIC8vIOinkuiJsuihqOagvOaVsOaNrg0KICAgICAganN1c2VyaWQ6ICcnLA0KICAgICAgcm9sZUxpc3Q6IFtdLA0KICAgICAganN1c2VybmFtZTogJycsDQogICAgICBqc25pY2tuYW1lOiAnJywNCiAgICAgIHVzZXJSb2xlSWQ6ICcnLA0KICAgICAganN1c2VydHlwZTogJycsDQogICAgICBzdGF0dXNPcHRpb25zOiBbDQogICAgICAgIHt2YWx1ZTogJzAnLCBsYWJlbDogJ+ato+W4uCd9LA0KICAgICAgICB7dmFsdWU6ICcxJywgbGFiZWw6ICfplIHlrponfSwNCiAgICAgICAge3ZhbHVlOiAnMicsIGxhYmVsOiAn5rOo6ZSAJ30NCiAgICAgIF0sDQogICAgICB0eXBlT3B0aW9uczogWw0KICAgICAgICB7dmFsdWU6ICcwJywgbGFiZWw6ICfnrqHnkIblkZgnfSwNCiAgICAgICAge3ZhbHVlOiAnMScsIGxhYmVsOiAn5Lia5Yqh55So5oi3J30NCiAgICAgIF0sDQogICAgICAvLyDpga7nvanlsYINCiAgICAgIGxvYWRpbmc6IHRydWUsDQogICAgICBzaG93VGFibGU6IHRydWUsDQogICAgICAvLyDpgInkuK3mlbDnu4QNCiAgICAgIGlkczogW10sDQogICAgICAvLyDpnZ7ljZXkuKrnpoHnlKgNCiAgICAgIHNpbmdsZTogdHJ1ZSwNCiAgICAgIC8vIOmdnuWkmuS4quemgeeUqA0KICAgICAgbXVsdGlwbGU6IHRydWUsDQogICAgICBjdXJyZW50UGFnZTogMSwNCiAgICAgIHBhZ2VTaXplOiAxMCwNCiAgICAgIC8vIOaAu+adoeaVsA0KICAgICAgdG90YWw6IDAsDQogICAgICAvLyDnlKjmiLfooajmoLzmlbDmja4NCiAgICAgIHVzZXJMaXN0OiBbXSwNCiAgICAgIGxvY2t0aXRsZToi6Ym05Yir5pON5L2cIiwNCiAgICAgIC8vIOW8ueWHuuWxguagh+mimA0KICAgICAgdGl0bGU6ICIiLA0KICAgICAgLy8g6KeS6Imy5YiG6YWN5by55Ye65bGC5qCH6aKYDQogICAgICBqc3RpdGxlOiAiIiwNCiAgICAgIC8vIOaYr+WQpuaYvuekuuW8ueWHuuWxgg0KICAgICAgb3BlbjogZmFsc2UsDQogICAgICBsb2Nrb3BlbjpmYWxzZSwNCiAgICAgIC8vIOinkuiJsuaYr+WQpuaYvuekuuW8ueWHuuWxgg0KICAgICAganNvcGVuOiBmYWxzZSwNCiAgICAgIC8vIOm7mOiupOWvhueggQ0KICAgICAgaW5pdFBhc3N3b3JkOiB1bmRlZmluZWQsDQogICAgICAvLyDop5LoibLpgInpobkNCiAgICAgIHJvbGVPcHRpb25zOiBbXSwNCiAgICAgIC8vIOihqOWNleWPguaVsA0KICAgICAgZm9ybToge30sDQogICAgICBsb2NrZm9ybTp7fSwNCiAgICAgIC8vIOafpeivouWPguaVsA0KICAgICAgcXVlcnlQYXJhbXM6IHsNCiAgICAgICAgdXNlcm5hbWU6IHVuZGVmaW5lZCwNCiAgICAgICAgcGhvbmVudW1iZXI6IHVuZGVmaW5lZCwNCiAgICAgICAgc3RhdHVzOiB1bmRlZmluZWQNCiAgICAgIH0sDQogICAgICBtZW51RXhwYW5kOiBmYWxzZSwNCiAgICAgIC8vIOiPnOWNleWIl+ihqA0KICAgICAgbWVudU9wdGlvbnM6IFtdLA0KICAgICAgZGVmYXVsdFByb3BzOiB7DQogICAgICAgIGNoaWxkcmVuOiAiY2hpbGRyZW4iLA0KICAgICAgICBsYWJlbDogImxhYmVsIg0KICAgICAgfSwNCiAgICAgIGVkaXQ6IGZhbHNlLA0KICAgICAgLy8g6KGo5Y2V5qCh6aqMDQogICAgICBydWxlczogew0KICAgICAgICB1c2VybmFtZTogWw0KICAgICAgICAgIHtyZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIueUqOaIt+i0puWPt+S4jeiDveS4uuepuiIsIHRyaWdnZXI6ICJibHVyIn0sDQogICAgICAgICAge21pbjogNSwgbWF4OiAyMCwgbWVzc2FnZTogJ+eUqOaIt+i0puWPt+mVv+W6puW/hemhu+S7i+S6jiA1IOWSjCAyMCDkuYvpl7QnLCB0cmlnZ2VyOiAnYmx1cid9DQogICAgICAgIF0sDQogICAgICAgIG5pY2tuYW1lOiBbDQogICAgICAgICAge3JlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi55So5oi35aeT5ZCN5LiN6IO95Li656m6IiwgdHJpZ2dlcjogImJsdXIifSwNCiAgICAgICAgICB7bWluOiAyLCBtYXg6IDMwLCBtZXNzYWdlOiAn55So5oi35aeT5ZCN6ZW/5bqm5b+F6aG75LuL5LqOIDIg5ZKMIDMwIOS5i+mXtCcsIHRyaWdnZXI6ICdibHVyJ30NCiAgICAgICAgXSwNCiAgICAgICAgaWRjYXJkOiBbDQogICAgICAgICAge3JlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi6Lqr5Lu96K+B5Y+356CB5LiN6IO95Li656m6IiwgdHJpZ2dlcjogImJsdXIifSwNCiAgICAgICAgICB7bWluOiAxNSwgbWF4OiAxOCwgbWVzc2FnZTogJ+i6q+S7veivgeWPt+ivt+i+k+WFpTE15L2N5oiW6ICFMTjkvY0nLCB0cmlnZ2VyOiAnYmx1cid9DQogICAgICAgIF0sDQogICAgICAgIG1haWxib3g6IFsNCiAgICAgICAgICB7cmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLpgq7nrrHkuI3og73kuLrnqboiLCB0cmlnZ2VyOiAiYmx1ciJ9LA0KICAgICAgICAgIHt0eXBlOiAiZW1haWwiLCBtZXNzYWdlOiAi6K+36L6T5YWl5q2j56Gu55qE6YKu566x5Zyw5Z2AIiwgdHJpZ2dlcjogWyJibHVyIiwgImNoYW5nZSJdfQ0KICAgICAgICBdLA0KICAgICAgICBwaG9uZW51bWJlcjogWw0KICAgICAgICAgIHtyZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuaJi+acuuWPt+eggeS4jeiDveS4uuepuiIsIHRyaWdnZXI6ICJibHVyIn0sDQogICAgICAgICAge3BhdHRlcm46IC9eMVszfDR8NXw2fDd8OHw5XVswLTldXGR7OH0kLywgbWVzc2FnZTogIuivt+i+k+WFpeato+ehrueahOaJi+acuuWPt+eggSIsIHRyaWdnZXI6ICJibHVyIn0NCiAgICAgICAgXSwNCiAgICAgICAgcGFzc3dvcmQ6IFsNCiAgICAgICAgICB7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi5a+G56CB5LiN6IO95Li656m6IiwgdHJpZ2dlcjogImJsdXIiIH0sDQogICAgICAgICAgeyBtaW46IDgsIG1heDogMjAsIG1lc3NhZ2U6ICLplb/luqblnKggOCDliLAgMjAg5Liq5a2X56ymIiwgdHJpZ2dlcjogImJsdXIiIH0NCiAgICAgICAgXSwNCiAgICAgIH0NCiAgICB9Ow0KICB9LA0KICB3YXRjaDoge30sDQogIGNyZWF0ZWQoKSB7DQogICAgdGhpcy5nZXRMaXN0KCkNCiAgfSwNCiAgbWV0aG9kczogew0KICAgIC8vIOagkeadg+mZkO+8iOWxleW8gC/mipjlj6DvvIkNCiAgICBoYW5kbGVDaGVja2VkVHJlZUV4cGFuZCh2YWx1ZSwgdHlwZSkgew0KICAgICAgaWYgKHR5cGUgPT0gJ21lbnUnKSB7DQogICAgICAgIGxldCB0cmVlTGlzdCA9IHRoaXMubWVudU9wdGlvbnM7DQogICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHJlZUxpc3QubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICB0aGlzLiRyZWZzLm1lbnUuc3RvcmUubm9kZXNNYXBbdHJlZUxpc3RbaV0uaWRdLmV4cGFuZGVkID0gdmFsdWU7DQogICAgICAgIH0NCiAgICAgIH0NCiAgICB9LA0KDQogICAgc2V0Um93Q2xhc3Moe3Jvdywgcm93SW5kZXh9KXsNCiAgICAgIGlmKHJvdy5zaWduc3RyID09PSAnMScpew0KICAgICAgICByZXR1cm4gImJhY2tncm91bmQ6ICNGRkVGRDUiOw0KICAgICAgfQ0KICAgIH0sDQogICAgLy8g5rOo6ZSA5pON5L2cDQogICAgaGFuZGxlTG9nT2ZmKCl7DQogICAgICBsZXQgX3NlbGVjdERhdGEgPSB0aGlzLiRyZWZzLnVzZXJUYWJsZS5nZXRSYWRpb1JlY29yZCh0cnVlKQ0KICAgICAgaWYgKF9zZWxlY3REYXRhID09IG51bGwpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6norrDlvZUhJw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQogICAgICBpZiAoX3NlbGVjdERhdGEuaWQgPT0gMSkgew0KICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICB0eXBlOiAnd2FybmluZycsDQogICAgICAgICAgbWVzc2FnZTogJ+WGhee9rueUqOaIt+S4jeiDveazqOmUgCEnDQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCiAgICAgIGlmIChfc2VsZWN0RGF0YS5zdGF0dXMgPT0gMikgew0KICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICB0eXBlOiAnd2FybmluZycsDQogICAgICAgICAgbWVzc2FnZTogJ+W3suazqOmUgOeahOi0puWPt+S4jeiDveWGjeasoeazqOmUgCEnDQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCiAgICAgIHRoaXMuJHByb21wdCgn6K+36L6T5YWl55m75b2V5a+G56CBJywgJ+mJtOWIq+aTjeS9nCcsIHsNCiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLA0KICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywNCiAgICAgICAgaW5wdXRUeXBlOiAncGFzc3dvcmQnLA0KICAgICAgICAvLyBjdXN0b21DbGFzczonbm8tYXV0b2ZpbGwtcHdkJywNCiAgICAgICAgaW5wdXRWYWxpZGF0b3I6ICh2YWwpID0+IHsNCiAgICAgICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbC5sZW5ndGggPCAxIHx8IHZhbC5sZW5ndGggPiAyMCkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgaW5wdXRFcnJvck1lc3NhZ2U6ICfkuI3og73kuLrnqbos5pyA5aSa5Y+v5b2V5YWlMjDkuKrlrZfnrKYnLA0KICAgICAgICBiZWZvcmVDbG9zZShhY3Rpb24sIGluc3RhbmNlLCBkb25lKSB7DQogICAgICAgICAgaWYgKGFjdGlvbiA9PT0gImNvbmZpcm0iKSB7DQogICAgICAgICAgICBpbnN0YW5jZS4kcmVmc1siY29uZmlybSJdLiRlbC5vbmNsaWNrID0gKGZ1bmN0aW9uIChlKSB7DQogICAgICAgICAgICAgIGUgPSBlIHx8IHdpbmRvdy5ldmVudDsNCiAgICAgICAgICAgICAgaWYgKGUuZGV0YWlsICE9IDApIHsNCiAgICAgICAgICAgICAgICBkb25lKCk7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pKCk7DQogICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGRvbmUoKTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0pLnRoZW4oYXN5bmMgKHt2YWx1ZX0pID0+IHsNCiAgICAgICAgdGhpcy5kb0xvZ29mZihfc2VsZWN0RGF0YSwgdmFsdWUpDQogICAgICB9KS5jYXRjaCgoZSkgPT4gew0KICAgICAgfSkNCiAgICB9LA0KICAgIC8qKg0KICAgICAqIOazqOmUgOaPkOS6pA0KICAgICAqLw0KICAgIGRvTG9nb2ZmOiBkZWJvdW5jZShhc3luYyBmdW5jdGlvbiAoX3NlbGVjdERhdGEsIGFnYWluUHdkKSB7DQogICAgICBjb25zdCBwYXJhbSA9IHsNCiAgICAgICAgaWQ6IF9zZWxlY3REYXRhLmlkDQogICAgICB9DQogICAgICBhd2FpdCB0aGlzLiRheGlvcy5wb3N0KCcvc3lzVXNlckNvbnRyb2xsZXIvbG9nT2ZmVXNlcj9hZ2FpblB3ZD0nK2FnYWluUHdkLCB0aGlzLiRxcy5zdHJpbmdpZnkocGFyYW0pKS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+azqOmUgOaIkOWKn++8gScpDQogICAgICAgICAgdGhpcy5nZXRMaXN0KCk7DQogICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHsNCiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2UNCiAgICAgIH0pDQogICAgfSwgNTAwKSwNCiAgICAvLyDliJfooajnirbmgIHmoLzlvI/ljJYNCiAgICBzdGF0dXNGb3JtYXQoe2NlbGxWYWx1ZX0pIHsNCiAgICAgIGxldCBiZWxvbmdUbyA9ICfmnKrnn6XnmoTnsbvlnosnDQogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3RhdHVzT3B0aW9ucy5sZW5ndGg7IGkrKykgew0KICAgICAgICBpZiAoY2VsbFZhbHVlID09ICIwIikgew0KICAgICAgICAgIGJlbG9uZ1RvID0gIuato+W4uCINCiAgICAgICAgfSBlbHNlIGlmIChjZWxsVmFsdWUgPT0gIjEiKSB7DQogICAgICAgICAgYmVsb25nVG8gPSAi6ZSB5a6aIg0KICAgICAgICB9IGVsc2UgaWYgKGNlbGxWYWx1ZSA9PSAiMiIpIHsNCiAgICAgICAgICBiZWxvbmdUbyA9ICLms6jplIAiDQogICAgICAgIH0NCiAgICAgIH0NCiAgICAgIHJldHVybiBiZWxvbmdUbw0KICAgIH0sDQogICAgLy8g5YiX6KGo54q25oCB5qC85byP5YyWDQogICAgc2ZzaCh7Y2VsbFZhbHVlfSkgew0KICAgICAgbGV0IGJlbG9uZ1RvID0gJ+WQpicNCiAgICAgIGlmIChjZWxsVmFsdWUgPT0gIjEiKSB7DQogICAgICAgIGJlbG9uZ1RvID0gIuaYryINCiAgICAgIH0NCiAgICAgIHJldHVybiBiZWxvbmdUbw0KICAgIH0sDQogICAgLy8g5YiX6KGo54q25oCB5qC85byP5YyWDQogICAgdHlwZUZvcm1hdCh7Y2VsbFZhbHVlfSkgew0KICAgICAgbGV0IGJlbG9uZ1RvID0gJ+acquefpeeahOexu+WeiycNCiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50eXBlT3B0aW9ucy5sZW5ndGg7IGkrKykgew0KICAgICAgICBpZiAoY2VsbFZhbHVlID09ICIwIikgew0KICAgICAgICAgIGJlbG9uZ1RvID0gIueuoeeQhuWRmCINCiAgICAgICAgfSBlbHNlIGlmIChjZWxsVmFsdWUgPT0gIjEiKSB7DQogICAgICAgICAgYmVsb25nVG8gPSAi5Lia5Yqh55So5oi3Ig0KICAgICAgICB9DQogICAgICB9DQogICAgICByZXR1cm4gYmVsb25nVG8NCiAgICB9LA0KICAgIC8qKiDmkJzntKLmjInpkq7mk43kvZwgKi8NCiAgICBoYW5kbGVRdWVyeTogZGVib3VuY2UoZnVuY3Rpb24gKCkgew0KICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDENCiAgICAgIHRoaXMucGFnZVNpemUgPSAxMA0KICAgICAgdGhpcy5nZXRMaXN0KCkNCiAgICB9LCAxMDAwKSwNCiAgICAvKiog5p+l6K+i55So5oi35YiX6KGoICovDQogICAgYXN5bmMgZ2V0TGlzdCgpIHsNCiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7DQogICAgICB2YXIgc2VhcmNoUGFyYW1zID0gew0KICAgICAgICBjdXJyZW50UGFnZTogdGhpcy5jdXJyZW50UGFnZSwNCiAgICAgICAgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsDQogICAgICAgIHVzZXJuYW1lOiB0aGlzLnF1ZXJ5UGFyYW1zLnVzZXJuYW1lLA0KICAgICAgICBwaG9uZW51bWJlcjogdGhpcy5xdWVyeVBhcmFtcy5waG9uZW51bWJlciwNCiAgICAgICAgc3RhdHVzOiB0aGlzLnF1ZXJ5UGFyYW1zLnN0YXR1cw0KICAgICAgfQ0KICAgICAgYXdhaXQgdGhpcy4kYXhpb3MuZ2V0KCcvc3lzVXNlckNvbnRyb2xsZXIvZ2V0QWxsJywNCiAgICAgICAge3BhcmFtczogc2VhcmNoUGFyYW1zfSkudGhlbigocmVzKSA9PiB7DQogICAgICAgIHRoaXMudXNlckxpc3QgPSByZXMuZGF0YQ0KICAgICAgICB0aGlzLnRvdGFsID0gcmVzLmRhdGEubGVuZ3RoDQoNCiAgICAgICAgaWYgKHJlcy5kYXRhLnJlY29yZHMgPT0gJycpIHsNCiAgICAgICAgICB0aGlzLnNob3dUYWJsZSA9IGZhbHNlDQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgdGhpcy5zaG93VGFibGUgPSB0cnVlDQogICAgICAgIH0NCiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2UNCiAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4gew0KICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsNCiAgICAgICAgLy8gdGhpcy4kbWVzc2FnZS5lcnJvcihlcnJvcikNCiAgICAgIH0pDQogICAgfSwNCiAgICAvLyDnlKjmiLfnirbmgIHkv67mlLkNCiAgICBoYW5kbGVTdGF0dXNDaGFuZ2Uocm93KSB7DQogICAgICBsZXQgdGV4dCA9IHJvdy5zdGF0dXMgPT09ICIwIiA/ICLlkK/nlKgiIDogIuWBnOeUqCI7DQogICAgICB0aGlzLiRtb2RhbC5jb25maXJtKCfnoa7orqTopoEiJyArIHRleHQgKyAnIiInICsgcm93LnVzZXJOYW1lICsgJyLnlKjmiLflkJfvvJ8nKS50aGVuKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgcmV0dXJuIGNoYW5nZVVzZXJTdGF0dXMocm93LnVzZXJJZCwgcm93LnN0YXR1cyk7DQogICAgICB9KS50aGVuKCgpID0+IHsNCiAgICAgICAgdGhpcy4kbW9kYWwubXNnU3VjY2Vzcyh0ZXh0ICsgIuaIkOWKnyIpOw0KICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkgew0KICAgICAgICByb3cuc3RhdHVzID0gcm93LnN0YXR1cyA9PT0gIjAiID8gIjEiIDogIjAiOw0KICAgICAgfSk7DQogICAgfSwNCiAgICAvLyDlj5bmtojmjInpkq4NCiAgICBjYW5jZWwoKSB7DQogICAgICB0aGlzLmdldExpc3QoKQ0KICAgICAgdGhpcy5vcGVuID0gZmFsc2U7DQogICAgICB0aGlzLnJlc2V0KCk7DQogICAgfSwNCiAgICAvLyDop5LoibLlj5bmtojmjInpkq4NCiAgICBqc2NhbmNlbCgpIHsNCiAgICAgIHRoaXMuanNvcGVuID0gZmFsc2U7DQogICAgICB0aGlzLnVzZXJSb2xlSWQgPSAnJw0KICAgICAgdGhpcy5tZW51T3B0aW9ucz1bXQ0KICAgIH0sDQogICAgLy8g6KGo5Y2V6YeN572uDQogICAgcmVzZXQoKSB7DQogICAgICB0aGlzLmVkaXQgPSBmYWxzZTsNCiAgICAgIHRoaXMuZm9ybSA9IHsNCiAgICAgICAgaWQ6IHVuZGVmaW5lZCwNCiAgICAgICAgdXNlcm5hbWU6IHVuZGVmaW5lZCwNCiAgICAgICAgbmlja25hbWU6IHVuZGVmaW5lZCwNCiAgICAgICAgaWRjYXJkOiB1bmRlZmluZWQsDQogICAgICAgIHBob25lbnVtYmVyOiB1bmRlZmluZWQsDQogICAgICAgIG1haWxib3g6IHVuZGVmaW5lZCwNCiAgICAgICAgc3RhdHVzOiAiMCIsDQogICAgICAgIHVzZXJ0eXBlOiAiMCIsDQogICAgICAgIHJlbWFyazogdW5kZWZpbmVkLA0KICAgICAgICBleHBEYXRlOiB1bmRlZmluZWQNCiAgICAgIH07DQoNCiAgICAgIGlmICh0aGlzLiRyZWZzWyJmb3JtIl0pIHsNCiAgICAgICAgdGhpcy4kcmVmc1siZm9ybSJdLmNsZWFyVmFsaWRhdGUoKTsNCiAgICAgIH0NCiAgICB9LA0KICAgIC8qKiDph43nva7mjInpkq7mk43kvZwgKi8NCiAgICByZXNldFF1ZXJ5KCkgew0KICAgICAgdGhpcy5yZXNldEZvcm0oInF1ZXJ5Rm9ybSIpOw0KICAgIH0sDQogICAgLyoqIOaWsOWinuaMiemSruaTjeS9nCAqLw0KICAgIGhhbmRsZUFkZCgpIHsNCiAgICAgIHRoaXMucmVzZXQoKTsNCiAgICAgIHRoaXMuZWRpdCA9IGZhbHNlOw0KICAgICAgdGhpcy5vcGVuID0gdHJ1ZTsNCiAgICAgIHRoaXMudGl0bGUgPSAi5re75Yqg55So5oi3IjsNCiAgICAgIC8vIHRoaXMuZm9ybS5wYXNzd29yZCA9IHRoaXMuaW5pdFBhc3N3b3JkOw0KICAgIH0sDQogICAgLyoqIOaPkOS6pOaMiemSriAqLw0KICAgIHN1Ym1pdEZvcm06IGRlYm91bmNlKGZ1bmN0aW9uICgpIHsNCiAgICAgIHRoaXMuJHJlZnNbImZvcm0iXS52YWxpZGF0ZShhc3luYyB2YWxpZCA9PiB7DQogICAgICAgIGlmICh2YWxpZCkgew0KICAgICAgICAgIGlmICh0aGlzLmZvcm0uaWQgIT0gdW5kZWZpbmVkKSB7DQogICAgICAgICAgICB0aGlzLiRwcm9tcHQoJ+ivt+i+k+WFpeeZu+W9leWvhueggScsICfpibTliKvmk43kvZwnLCB7DQogICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywNCiAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsDQogICAgICAgICAgICAgIGlucHV0VHlwZTogJ3Bhc3N3b3JkJywNCiAgICAgICAgICAgICAgLy8gY3VzdG9tQ2xhc3M6J25vLWF1dG9maWxsLXB3ZCcsDQogICAgICAgICAgICAgIGlucHV0VmFsaWRhdG9yOiAodmFsKSA9PiB7DQogICAgICAgICAgICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwubGVuZ3RoIDwgMSB8fCB2YWwubGVuZ3RoID4gMjApIHsNCiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgIGlucHV0RXJyb3JNZXNzYWdlOiAn5LiN6IO95Li656m6LOacgOWkmuWPr+W9leWFpTIw5Liq5a2X56ymJywNCiAgICAgICAgICAgICAgYmVmb3JlQ2xvc2UoYWN0aW9uLCBpbnN0YW5jZSwgZG9uZSkgew0KICAgICAgICAgICAgICAgIGlmIChhY3Rpb24gPT09ICJjb25maXJtIikgew0KICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuJHJlZnNbImNvbmZpcm0iXS4kZWwub25jbGljayA9IChmdW5jdGlvbiAoZSkgew0KICAgICAgICAgICAgICAgICAgICBlID0gZSB8fCB3aW5kb3cuZXZlbnQ7DQogICAgICAgICAgICAgICAgICAgIGlmIChlLmRldGFpbCAhPSAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICB9KSgpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICBkb25lKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KS50aGVuKGFzeW5jICh7dmFsdWV9KSA9PiB7DQogICAgICAgICAgICAgIC8vIOabtOaWsOaTjeS9nA0KICAgICAgICAgICAgICBhd2FpdCB0aGlzLiRheGlvcy5wb3N0KCcvc3lzVXNlckNvbnRyb2xsZXIvdXBkYXRlVXNlcj9hZ2FpblB3ZD0nK3ZhbHVlLCB0aGlzLmZvcm0pLnRoZW4oKHJlcykgPT4gew0KICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygn5L+u5pS555So5oi35oiQ5YqfJykNCiAgICAgICAgICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTsNCiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7DQogICAgICAgICAgICAgICAgdGhpcy5nZXRMaXN0KCk7DQogICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2UNCiAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2UNCiAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgIH0pLmNhdGNoKChlKSA9PiB7DQogICAgICAgICAgICB9KQ0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB0aGlzLiRwcm9tcHQoJ+ivt+i+k+WFpeeZu+W9leWvhueggScsICfpibTliKvmk43kvZwnLCB7DQogICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywNCiAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsDQogICAgICAgICAgICAgIGlucHV0VHlwZTogJ3Bhc3N3b3JkJywNCiAgICAgICAgICAgICAgLy8gY3VzdG9tQ2xhc3M6J25vLWF1dG9maWxsLXB3ZCcsDQogICAgICAgICAgICAgIGlucHV0VmFsaWRhdG9yOiAodmFsKSA9PiB7DQogICAgICAgICAgICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwubGVuZ3RoIDwgMSB8fCB2YWwubGVuZ3RoID4gMjApIHsNCiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgIGlucHV0RXJyb3JNZXNzYWdlOiAn5LiN6IO95Li656m6LOacgOWkmuWPr+W9leWFpTIw5Liq5a2X56ymJywNCiAgICAgICAgICAgICAgYmVmb3JlQ2xvc2UoYWN0aW9uLCBpbnN0YW5jZSwgZG9uZSkgew0KICAgICAgICAgICAgICAgIGlmIChhY3Rpb24gPT09ICJjb25maXJtIikgew0KICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuJHJlZnNbImNvbmZpcm0iXS4kZWwub25jbGljayA9IChmdW5jdGlvbiAoZSkgew0KICAgICAgICAgICAgICAgICAgICBlID0gZSB8fCB3aW5kb3cuZXZlbnQ7DQogICAgICAgICAgICAgICAgICAgIGlmIChlLmRldGFpbCAhPSAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICB9KSgpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICBkb25lKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KS50aGVuKGFzeW5jICh7dmFsdWV9KSA9PiB7DQogICAgICAgICAgICAgIC8vIOaWsOWinuaTjeS9nA0KICAgICAgICAgICAgICBhd2FpdCB0aGlzLiRheGlvcy5wb3N0KCcvc3lzVXNlckNvbnRyb2xsZXIvYWRkVXNlcj9hZ2FpblB3ZD0nK3ZhbHVlLCB0aGlzLmZvcm0pLnRoZW4oKHJlcykgPT4gew0KICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygn5re75Yqg55So5oi35oiQ5YqfJykNCiAgICAgICAgICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTsNCiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7DQogICAgICAgICAgICAgICAgdGhpcy5nZXRMaXN0KCk7DQogICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2UNCiAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICAgICAgICAgICAgLy8gdGhpcy4kbWVzc2FnZS5lcnJvcihlcnJvcikNCiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZQ0KICAgICAgICAgICAgICB9KQ0KICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHsNCiAgICAgICAgICAgIH0pDQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9KTsNCiAgICB9LCAxMDAwKSwNCiAgICAvKiog5L+u5pS55oyJ6ZKu5pON5L2cICovDQogICAgaGFuZGxlVXBkYXRlKCkgew0KICAgICAgdGhpcy5yZXNldCgpOw0KICAgICAgbGV0IF9zZWxlY3REYXRhID0gdGhpcy4kcmVmcy51c2VyVGFibGUuZ2V0UmFkaW9SZWNvcmQodHJ1ZSkNCiAgICAgIGlmIChfc2VsZWN0RGF0YSA9PSBudWxsKSB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywNCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup6K6w5b2VIScNCiAgICAgICAgfSk7DQogICAgICAgIHJldHVybg0KICAgICAgfQ0KICAgICAgaWYgKF9zZWxlY3REYXRhLmlkID09IDEpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICflhoXnva7nlKjmiLfkuI3og73kv67mlLkhJw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQogICAgICBpZiAoX3NlbGVjdERhdGEuc3RhdHVzID09IDIpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICfms6jplIDnmoTotKblj7fkuI3og73mk43kvZwhJw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQogICAgICBfc2VsZWN0RGF0YS5wYXNzd29yZCA9ICcnDQogICAgICB0aGlzLmZvcm0gPSBfc2VsZWN0RGF0YTsNCiAgICAgIHRoaXMub3BlbiA9IHRydWU7DQogICAgICB0aGlzLnRpdGxlID0gIuS/ruaUueeUqOaItyI7DQogICAgICB0aGlzLmVkaXQgPSB0cnVlOw0KICAgIH0sDQoNCiAgICAvLyDlj5bmtojmjInpkq4NCiAgICBsb2NrZm9ybWNhbmNlbCgpIHsNCiAgICAgIHRoaXMubG9ja29wZW4gPSBmYWxzZTsNCiAgICAgIHRoaXMubG9ja2Zvcm0gPSB7fQ0KICAgIH0sDQogICAgc3VibG9ja2Zvcm0oKXsNCiAgICAgIGlmICh0aGlzLmxvY2tmb3JtLmV4cERhdGU9PW51bGwgfHwgdGhpcy5sb2NrZm9ybS5leHBEYXRlPT11bmRlZmluZWQpew0KICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICB0eXBlOiAnd2FybmluZycsDQogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeaIquatouaXpeacnyEnDQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCiAgICAgIGlmICh0aGlzLmxvY2tmb3JtLnBhc3N3b3JkPT1udWxsIHx8IHRoaXMubG9ja2Zvcm0ucGFzc3dvcmQ9PXVuZGVmaW5lZCl7DQogICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJywNCiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWl55m75b2V5a+G56CBIScNCiAgICAgICAgfSk7DQogICAgICAgIHJldHVybg0KICAgICAgfQ0KICAgICAgY29uc3QgX3NlbGVjdERhdGEgPSB0aGlzLiRyZWZzLnVzZXJUYWJsZS5nZXRSYWRpb1JlY29yZCh0cnVlKQ0KICAgICAgdGhpcy5kb1JlbG9jayhfc2VsZWN0RGF0YSwgdGhpcy5sb2NrZm9ybS5wYXNzd29yZCx0aGlzLmxvY2tmb3JtLmV4cERhdGUpDQogICAgfSwNCiAgICAvKiog6Kej6ZSB5oyJ6ZKu5pON5L2cICovDQogICAgaGFuZGxlUmVsb2NrKCkgew0KICAgICAgY29uc3QgX3NlbGVjdERhdGEgPSB0aGlzLiRyZWZzLnVzZXJUYWJsZS5nZXRSYWRpb1JlY29yZCh0cnVlKQ0KICAgICAgaWYgKF9zZWxlY3REYXRhID09IG51bGwpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6norrDlvZUhJw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQogICAgICBpZiAoX3NlbGVjdERhdGEuc3RhdHVzID09IDIpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICfms6jplIDnmoTotKblj7fkuI3og73mk43kvZwhJw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQogICAgICBpZiAoX3NlbGVjdERhdGEuc3RhdHVzICE9PSAnMScpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICflj6rog73lr7njgJDplIHlrprjgJHnirbmgIHnmoTov5vooYzop6PplIEhJw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQogICAgICB0aGlzLmRvUmVsb2NrKF9zZWxlY3REYXRhKQ0KICAgIH0sDQogICAgLyoqDQogICAgICog6Kej6ZSB5o+Q5LqkDQogICAgICovDQogICAgZG9SZWxvY2s6IGRlYm91bmNlKGFzeW5jIGZ1bmN0aW9uIChfc2VsZWN0RGF0YSkgew0KICAgICAgY29uc3QgcGFyYW0gPSB7DQogICAgICAgIGlkOiBfc2VsZWN0RGF0YS5pZA0KICAgICAgfQ0KICAgICAgYXdhaXQgdGhpcy4kYXhpb3MucG9zdCgnL3N5c1VzZXJDb250cm9sbGVyL3JlbG9ja1VzZXInLCB0aGlzLiRxcy5zdHJpbmdpZnkocGFyYW0pKS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCfop6PplIHmiJDlip8nKQ0KICAgICAgICB0aGlzLmdldExpc3QoKTsNCiAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4gew0KICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZQ0KICAgICAgfSkNCiAgICB9LCAxMDAwKSwNCg0KICAgIC8qKg0KICAgICAqIOinkuiJsuexu+Wei+aUueWPmOaXtuabtOaUueadg+mZkOWIl+ihqA0KICAgICAqIEBwYXJhbSByb3dSb2xlSWQNCiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx1bmtub3duPn0NCiAgICAgKi8NCiAgICBnZXRNZW51KHJvd1JvbGVJZCl7DQogICAgICBjb25zdCBhID0gdGhpcy4kYXhpb3MNCiAgICAgIGNvbnN0IF90aGlzID0gdGhpcw0KICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsNCiAgICAgICAgdmFyIHBhcmFtMSA9IHsNCiAgICAgICAgICByb2xlSWQ6IHJvd1JvbGVJZA0KICAgICAgICB9DQogICAgICAgIGF3YWl0IGEuZ2V0KCcvc3lzTWVudUNvbnRyb2xsZXIvcm9sZU1lbnVUcmVlc2VsZWN0Rm9yVXNlcicsDQogICAgICAgICAgICB7cGFyYW1zOiBwYXJhbTF9KS50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICBfdGhpcy5tZW51T3B0aW9ucyA9IHJlcy5kYXRhLm1lbnVzOw0KICAgICAgICB9KQ0KICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICAgIGNvbnNvbGUuZXJyb3IoJ+iOt+WPlueUqOaIt+inkuiJsuWHuumUmScgKyBlcnJvcikNCiAgICAgIH0pDQogICAgfSwNCiAgICBnZXRVc2VyUm9sZSh1c2VyaWQpIHsNCiAgICAgIGNvbnN0IGEgPSB0aGlzLiRheGlvcw0KICAgICAgY29uc3QgX3RoaXMgPSB0aGlzDQogICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgew0KICAgICAgICB2YXIgdXNlclJvbGVQYXJhbXMgPSB7DQogICAgICAgICAgdXNlcklkOiB1c2VyaWQNCiAgICAgICAgfQ0KICAgICAgICBhd2FpdCBhLmdldCgnL3N5c1VzZXJDb250cm9sbGVyL2dldFVzZXJSb2xlJywNCiAgICAgICAgICAgIHtwYXJhbXM6IHVzZXJSb2xlUGFyYW1zfSkudGhlbihyZXMgPT4gew0KDQogICAgICAgIGlmIChyZXMuZGF0YT09dW5kZWZpbmVkKXsNCiAgICAgICAgICBfdGhpcy51c2VyUm9sZUlkID0gJycNCiAgICAgICAgfQ0KICAgICAgICBlbHNlew0KICAgICAgICAgIF90aGlzLnVzZXJSb2xlSWQgPSByZXMuZGF0YS5yb2xlSWQNCiAgICAgICAgfQ0KICAgICAgICAgIC8vIOi/lOWbnnVzZXJSb2xl5a+56LGhDQogICAgICAgICAgcmVzb2x2ZShyZXMuZGF0YSkNCiAgICAgICAgfSkNCiAgICAgICAgaWYgKF90aGlzLnVzZXJSb2xlSWQhPScnKXsNCiAgICAgICAgICB2YXIgcGFyYW0xID0gew0KICAgICAgICAgICAgcm9sZUlkOiBfdGhpcy51c2VyUm9sZUlkDQogICAgICAgICAgfQ0KDQogICAgICAgICAgYXdhaXQgYS5nZXQoJy9zeXNNZW51Q29udHJvbGxlci9yb2xlTWVudVRyZWVzZWxlY3RGb3JVc2VyJywNCiAgICAgICAgICAgICAge3BhcmFtczogcGFyYW0xfSkudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgICBfdGhpcy5tZW51T3B0aW9ucyA9IHJlcy5kYXRhLm1lbnVzOw0KICAgICAgICAgIH0pDQogICAgICAgIH0NCg0KICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICAgIGNvbnNvbGUuZXJyb3IoJ+iOt+WPlueUqOaIt+inkuiJsuWHuumUmScgKyBlcnJvcikNCiAgICAgIH0pDQogICAgfSwNCiAgICBnZXRSb2xlQnlUeXBlKHVzZXJ0eXBlKSB7DQogICAgICAvLyDmoLnmja7nlKjmiLfnsbvlnovojrflj5bop5LoibLliJfooagNCiAgICAgIGNvbnN0IGEgPSB0aGlzLiRheGlvcw0KICAgICAgbGV0IF90aGlzID0gdGhpcw0KICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsNCiAgICAgICAgdmFyIHNlYXJjaFBhcmFtcyA9IHsNCiAgICAgICAgICB1c2VydHlwZTogdXNlcnR5cGUNCiAgICAgICAgfQ0KICAgICAgICBhd2FpdCBhLmdldCgnL3N5c1JvbGVDb250cm9sbGVyL2dldFJvbGVCeVR5cGUnLA0KICAgICAgICAgICAge3BhcmFtczogc2VhcmNoUGFyYW1zfSkudGhlbihyZXMgPT4gew0KICAgICAgICAgICAgLy8g6L+U5Zue6KeS6Imy5YiX6KGoDQogICAgICAgICAgICBfdGhpcy5yb2xlTGlzdCA9IHJlcy5kYXRhDQogICAgICAgICAgICByZXNvbHZlKHJlcy5kYXRhKQ0KICAgICAgICB9KQ0KICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlDQogICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZXJyb3IpDQogICAgICB9KQ0KICAgIH0sDQogICAgLyoqIOWIhumFjeinkuiJsuaTjeS9nCAqLw0KICAgIGhhbmRsZUF1dGhSb2xlOiBkZWJvdW5jZShmdW5jdGlvbiAocm93KSB7DQogICAgICBpZiAocm93LnN0YXR1cyA9PSAnMicpIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLA0KICAgICAgICAgIG1lc3NhZ2U6ICfms6jplIDnmoTotKblj7fkuI3og73mk43kvZwhJw0KICAgICAgICB9KTsNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQoNCiAgICAgIHRoaXMuanN1c2VyaWQgPSByb3cuaWQNCiAgICAgIHRoaXMuanN1c2VybmFtZSA9IHJvdy51c2VybmFtZQ0KICAgICAgdGhpcy5qc25pY2tuYW1lID0gcm93Lm5pY2tuYW1lDQoNCiAgICAgIHRoaXMuZ2V0Um9sZUJ5VHlwZShyb3cudXNlcnR5cGUpDQogICAgICB0aGlzLmdldFVzZXJSb2xlKHRoaXMuanN1c2VyaWQpDQogICAgICB0aGlzLmpzb3BlbiA9IHRydWU7DQogICAgICB0aGlzLnRpdGxlID0gIuWIhumFjeinkuiJsiI7DQogICAgfSwgMTAwMCksDQoNCiAgICAvKiog6KeS6Imy5YiG6YWN5o+Q5Lqk5oyJ6ZKuICovDQogICAganNzdWJtaXRGb3JtOiBkZWJvdW5jZShhc3luYyBmdW5jdGlvbiAoKSB7DQogICAgICBpZiAodGhpcy51c2VyUm9sZUlkIT0nJyl7DQogICAgICAgIHRoaXMuJHByb21wdCgn6K+36L6T5YWl55m75b2V5a+G56CBJywgJ+mJtOWIq+aTjeS9nCcsIHsNCiAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsDQogICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsDQogICAgICAgICAgaW5wdXRUeXBlOiAncGFzc3dvcmQnLA0KICAgICAgICAgIC8vIGN1c3RvbUNsYXNzOiduby1hdXRvZmlsbC1wd2QnLA0KICAgICAgICAgIGlucHV0VmFsaWRhdG9yOiAodmFsKSA9PiB7DQogICAgICAgICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbC5sZW5ndGggPCAxIHx8IHZhbC5sZW5ndGggPiAyMCkgew0KICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgICAgfSwNCiAgICAgICAgICBpbnB1dEVycm9yTWVzc2FnZTogJ+S4jeiDveS4uuepuizmnIDlpJrlj6/lvZXlhaUyMOS4quWtl+espicsDQogICAgICAgICAgYmVmb3JlQ2xvc2UoYWN0aW9uLCBpbnN0YW5jZSwgZG9uZSkgew0KICAgICAgICAgICAgaWYgKGFjdGlvbiA9PT0gImNvbmZpcm0iKSB7DQogICAgICAgICAgICAgIGluc3RhbmNlLiRyZWZzWyJjb25maXJtIl0uJGVsLm9uY2xpY2sgPSAoZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgICAgICAgICBlID0gZSB8fCB3aW5kb3cuZXZlbnQ7DQogICAgICAgICAgICAgICAgaWYgKGUuZGV0YWlsICE9IDApIHsNCiAgICAgICAgICAgICAgICAgIGRvbmUoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIH0pKCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICBkb25lKCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB9KS50aGVuKGFzeW5jICh7dmFsdWV9KSA9PiB7DQogICAgICAgICAgLy8g5o+Q5Lqk5ZCO5Y+w6KeS6Imy5YiG6YWNDQogICAgICAgICAgY29uc3QgcGFyYW0gPSB7DQogICAgICAgICAgICB1c2VySWQ6IHRoaXMuanN1c2VyaWQsDQogICAgICAgICAgICByb2xlSWQ6IHRoaXMudXNlclJvbGVJZA0KICAgICAgICAgIH0NCiAgICAgICAgICBjb25zb2xlLmxvZyhwYXJhbSkNCiAgICAgICAgICBhd2FpdCB0aGlzLiRheGlvcy5wb3N0KCcvc3lzVXNlckNvbnRyb2xsZXIvYXV0aFJvbGU/YWdhaW5Qd2Q9Jyt2YWx1ZSwgdGhpcy4kcXMuc3RyaW5naWZ5KHBhcmFtKSkudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLA0KICAgICAgICAgICAgICBtZXNzYWdlOiAn5o6I5p2D5oiQ5YqfJw0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB0aGlzLmpzY2FuY2VsKCkNCiAgICAgICAgICAgIHRoaXMuZ2V0TGlzdCgpDQogICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZQ0KICAgICAgICAgIH0pDQogICAgICAgIH0pLmNhdGNoKChlKSA9PiB7DQogICAgICAgIH0pDQogICAgICB9DQogICAgICBlbHNlew0KICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICB0eXBlOiAnZXJyb3InLA0KICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6nop5LoibLnsbvlnosnDQogICAgICAgIH0pOw0KICAgICAgfQ0KICAgIH0sIDEwMDApDQogIH0NCn07DQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkTA;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;;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;;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;;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;;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;;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;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","file":"index.vue","sourceRoot":"src/views/sysManager/userManager","sourcesContent":["<template>\r\n <div class=\"app-container\">\r\n <el-row :gutter=\"24\">\r\n <!--用户数据-->\r\n <el-col :span=\"24\" :xs=\"24\">\r\n <el-form :model=\"queryParams\" ref=\"queryForm\" size=\"small\" :inline=\"true\" label-width=\"68px\">\r\n <el-form-item label=\"用户账号\" prop=\"username\">\r\n <el-input\r\n maxlength=\"20\"\r\n v-model=\"queryParams.username\"\r\n placeholder=\"请输入用户账号\"\r\n clearable\r\n style=\"width: 240px\"\r\n />\r\n </el-form-item>\r\n <el-form-item label=\"手机号码\" prop=\"phonenumber\">\r\n <el-input\r\n maxlength=\"11\"\r\n v-model=\"queryParams.phonenumber\"\r\n placeholder=\"请输入手机号码\"\r\n clearable\r\n style=\"width: 240px\"\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 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 <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:user: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:user: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:user:remove']\"-->\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=\"handleLogOff\"\r\n v-hasPermi=\"['system:user:logoff']\"\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-unlock\"\r\n size=\"mini\"\r\n @click=\"handleRelock\"\r\n v-hasPermi=\"['system:user:relock']\"\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 :row-style=\"setRowClass\"\r\n ref=\"userTable\"\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 highlight-current-row\r\n show-overflow\r\n max-height=\"700\"\r\n :radio-config=\"{trigger: 'row'}\"\r\n :data=\"userList.slice((currentPage-1)*pageSize,currentPage*pageSize)\"\r\n >\r\n <vxe-column type=\"radio\" width=\"60\"/>\r\n <vxe-table-column field=\"username\" title=\"用户账号\"/>\r\n <vxe-table-column field=\"nickname\" title=\"用户姓名\"/>\r\n <vxe-table-column field=\"idcard\" title=\"身份证号码\"/>\r\n <vxe-table-column field=\"mailbox\" title=\"用户邮箱\"/>\r\n <vxe-table-column field=\"phonenumber\" title=\"手机号码\"/>\r\n <vxe-table-column field=\"status\" title=\"用户状态\" :formatter=\"statusFormat\"/>\r\n <vxe-table-column title=\"操作\" width=\"320\">\r\n <template slot-scope=\"scope\">\r\n <el-button\r\n v-if=\"scope.row.id !== 1\"\r\n size=\"mini\"\r\n type=\"text\"\r\n icon=\"el-icon-circle-check\"\r\n @click=\"handleAuthRole(scope.row)\"\r\n v-hasPermi=\"['system:user:role']\"\r\n >分配角色\r\n </el-button>\r\n </template>\r\n </vxe-table-column>\r\n </vxe-table>\r\n\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 >\r\n </vxe-pager>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n\r\n <!-- 添加或修改用户配置对话框 -->\r\n <el-dialog :title=\"title\" :visible.sync=\"open\" width=\"750px\" append-to-body>\r\n <el-form ref=\"form\" :model=\"form\" :rules=\"rules\" width=\"730px\" label-width=\"100px\">\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"用户账号\" prop=\"username\">\r\n <el-input id=\"un\" ref=\"un\" style=\"width: 220px\" v-model=\"form.username\" placeholder=\"请输入用户账号\"\r\n maxlength=\"20\" :disabled=\"edit\"/>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"密码\" prop=\"password\">\r\n <el-input style=\"width: 220px\" v-model=\"form.password\" placeholder=\"请输入密码\" type=\"password\" show-password/>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n<!-- <el-form-item label=\"用户类型\">-->\r\n<!-- <el-select style=\"width: 220px\" v-model=\"form.usertype\" placeholder=\"请选择类型\" :disabled=\"edit\">-->\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=\"身份证号码\" prop=\"idcard\">\r\n <el-input style=\"width: 220px\" v-model=\"form.idcard\" placeholder=\"请输入身份证号码\" maxlength=\"18\" :disabled=\"edit\"/>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"用户姓名\" prop=\"nickname\">\r\n <el-input style=\"width: 220px\" v-model=\"form.nickname\" placeholder=\"请输入用户姓名\" maxlength=\"30\"/>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"手机号码\" prop=\"phonenumber\">\r\n <el-input style=\"width: 220px\" v-model=\"form.phonenumber\" placeholder=\"请输入手机号码\" maxlength=\"11\"/>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"用户邮箱\" prop=\"mailbox\">\r\n <el-input style=\"width: 220px\" v-model=\"form.mailbox\" placeholder=\"请输入邮箱\" maxlength=\"50\"/>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\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=\"locktitle\" :visible.sync=\"lockopen\" width=\"430px\" append-to-body>\r\n <el-form ref=\"lockform\" :model=\"lockform\" width=\"430px\" label-width=\"120px\">\r\n <font size=\"3\" color=\"red\">解锁临时账号,需要重置账号截止日期!</font>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"账号截止日期\">\r\n <el-date-picker\r\n style=\"width: 220px\"\r\n value-format=\"yyyy-MM-dd\"\r\n v-model=\"lockform.expDate\"\r\n type=\"date\"\r\n placeholder=\"请选择账号截止日期\"\r\n :picker-options=\"pickerOptions\">\r\n </el-date-picker>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"输入登录密码\">\r\n <el-input\r\n style=\"width: 220px\"\r\n v-model=\"lockform.password\"\r\n type=\"password\"\r\n auto-complete=\"off\"\r\n placeholder=\"密码\"\r\n maxlength=\"20\"\r\n />\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n <div slot=\"footer\" class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"sublockform\">确 定</el-button>\r\n <el-button @click=\"lockformcancel\">取 消</el-button>\r\n </div>\r\n </el-dialog>\r\n\r\n <!-- 分配角色对话框 -->\r\n <el-dialog :title=\"jstitle\" :visible.sync=\"jsopen\" width=\"650px\" append-to-body>\r\n <el-form width=\"630px\" label-width=\"80px\">\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"用户账号\">\r\n <el-input style=\"width: 220px\" v-model=\"jsusername\"\r\n maxlength=\"20\" :disabled=\"true\"/>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"用户姓名\">\r\n <el-input style=\"width: 220px\" v-model=\"jsnickname\" maxlength=\"30\" :disabled=\"true\"/>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"角色类型\" style=\"width: 100px\">\r\n <el-select style=\"width: 220px\" v-model=\"userRoleId\" placeholder=\"请选择类型\" :disabled=\"edit\" @change=\"getMenu(userRoleId)\">\r\n <el-option\r\n v-for=\"item in roleList\"\r\n :key=\"item.roleId\"\r\n :label=\"item.roleName\"\r\n :value=\"item.roleId\"\r\n ></el-option>\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"菜单权限\">\r\n <el-checkbox v-model=\"menuExpand\" @change=\"handleCheckedTreeExpand($event, 'menu')\">展开/折叠</el-checkbox>\r\n <el-tree\r\n class=\"tree-border\"\r\n :data=\"menuOptions\"\r\n ref=\"menu\"\r\n node-key=\"id\"\r\n empty-text=\"无数据,请选择角色类型!\"\r\n :props=\"defaultProps\"\r\n ></el-tree>\r\n </el-form-item>\r\n\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n\r\n <div slot=\"footer\" class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"jssubmitForm\">确 定</el-button>\r\n <el-button @click=\"jscancel\">取 消</el-button>\r\n </div>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport {debounce} from 'lodash'\r\nimport {userinfoDecrypt} from \"@/utils/smutil\";\r\n\r\nexport default {\r\n name: \"User\",\r\n data() {\r\n return {\r\n pickerOptions:{\r\n disabledDate(time){\r\n return time.getTime()<Date.now()-8.64e7\r\n }\r\n },\r\n sysRole:'',\r\n id: undefined,\r\n username: undefined,\r\n nickname: undefined,\r\n idcard: undefined,\r\n phonenumber: undefined,\r\n mailbox: undefined,\r\n status: \"0\",\r\n usertype: \"0\",\r\n remark: undefined,\r\n expDate: undefined,\r\n // 角色表格数据\r\n jsuserid: '',\r\n roleList: [],\r\n jsusername: '',\r\n jsnickname: '',\r\n userRoleId: '',\r\n jsusertype: '',\r\n statusOptions: [\r\n {value: '0', label: '正常'},\r\n {value: '1', label: '锁定'},\r\n {value: '2', label: '注销'}\r\n ],\r\n typeOptions: [\r\n {value: '0', label: '管理员'},\r\n {value: '1', label: '业务用户'}\r\n ],\r\n // 遮罩层\r\n loading: true,\r\n showTable: true,\r\n // 选中数组\r\n ids: [],\r\n // 非单个禁用\r\n single: true,\r\n // 非多个禁用\r\n multiple: true,\r\n currentPage: 1,\r\n pageSize: 10,\r\n // 总条数\r\n total: 0,\r\n // 用户表格数据\r\n userList: [],\r\n locktitle:\"鉴别操作\",\r\n // 弹出层标题\r\n title: \"\",\r\n // 角色分配弹出层标题\r\n jstitle: \"\",\r\n // 是否显示弹出层\r\n open: false,\r\n lockopen:false,\r\n // 角色是否显示弹出层\r\n jsopen: false,\r\n // 默认密码\r\n initPassword: undefined,\r\n // 角色选项\r\n roleOptions: [],\r\n // 表单参数\r\n form: {},\r\n lockform:{},\r\n // 查询参数\r\n queryParams: {\r\n username: undefined,\r\n phonenumber: undefined,\r\n status: undefined\r\n },\r\n menuExpand: false,\r\n // 菜单列表\r\n menuOptions: [],\r\n defaultProps: {\r\n children: \"children\",\r\n label: \"label\"\r\n },\r\n edit: false,\r\n // 表单校验\r\n rules: {\r\n username: [\r\n {required: true, message: \"用户账号不能为空\", trigger: \"blur\"},\r\n {min: 5, max: 20, message: '用户账号长度必须介于 5 和 20 之间', trigger: 'blur'}\r\n ],\r\n nickname: [\r\n {required: true, message: \"用户姓名不能为空\", trigger: \"blur\"},\r\n {min: 2, max: 30, message: '用户姓名长度必须介于 2 和 30 之间', trigger: 'blur'}\r\n ],\r\n idcard: [\r\n {required: true, message: \"身份证号码不能为空\", trigger: \"blur\"},\r\n {min: 15, max: 18, message: '身份证号请输入15位或者18位', trigger: 'blur'}\r\n ],\r\n mailbox: [\r\n {required: true, message: \"邮箱不能为空\", trigger: \"blur\"},\r\n {type: \"email\", message: \"请输入正确的邮箱地址\", trigger: [\"blur\", \"change\"]}\r\n ],\r\n phonenumber: [\r\n {required: true, message: \"手机号码不能为空\", trigger: \"blur\"},\r\n {pattern: /^1[3|4|5|6|7|8|9][0-9]\\d{8}$/, message: \"请输入正确的手机号码\", trigger: \"blur\"}\r\n ],\r\n password: [\r\n { required: true, message: \"密码不能为空\", trigger: \"blur\" },\r\n { min: 8, max: 20, message: \"长度在 8 到 20 个字符\", trigger: \"blur\" }\r\n ],\r\n }\r\n };\r\n },\r\n watch: {},\r\n created() {\r\n this.getList()\r\n },\r\n methods: {\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 }\r\n },\r\n\r\n setRowClass({row, rowIndex}){\r\n if(row.signstr === '1'){\r\n return \"background: #FFEFD5\";\r\n }\r\n },\r\n // 注销操作\r\n handleLogOff(){\r\n let _selectData = this.$refs.userTable.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 if (_selectData.id == 1) {\r\n this.$message({\r\n type: 'warning',\r\n message: '内置用户不能注销!'\r\n });\r\n return\r\n }\r\n if (_selectData.status == 2) {\r\n this.$message({\r\n type: 'warning',\r\n message: '已注销的账号不能再次注销!'\r\n });\r\n return\r\n }\r\n this.$prompt('请输入登录密码', '鉴别操作', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n inputType: 'password',\r\n // customClass:'no-autofill-pwd',\r\n inputValidator: (val) => {\r\n if (val === null || val.length < 1 || val.length > 20) {\r\n return false;\r\n }\r\n },\r\n inputErrorMessage: '不能为空,最多可录入20个字符',\r\n beforeClose(action, instance, done) {\r\n if (action === \"confirm\") {\r\n instance.$refs[\"confirm\"].$el.onclick = (function (e) {\r\n e = e || window.event;\r\n if (e.detail != 0) {\r\n done();\r\n }\r\n })();\r\n } else {\r\n done();\r\n }\r\n }\r\n }).then(async ({value}) => {\r\n this.doLogoff(_selectData, value)\r\n }).catch((e) => {\r\n })\r\n },\r\n /**\r\n * 注销提交\r\n */\r\n doLogoff: debounce(async function (_selectData, againPwd) {\r\n const param = {\r\n id: _selectData.id\r\n }\r\n await this.$axios.post('/sysUserController/logOffUser?againPwd='+againPwd, this.$qs.stringify(param)).then((res) => {\r\n this.$message.success('注销成功!')\r\n this.getList();\r\n }).catch((error) => {\r\n this.loading = false\r\n })\r\n }, 500),\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 } else if (cellValue == \"2\") {\r\n belongTo = \"注销\"\r\n }\r\n }\r\n return belongTo\r\n },\r\n // 列表状态格式化\r\n sfsh({cellValue}) {\r\n let belongTo = '否'\r\n if (cellValue == \"1\") {\r\n belongTo = \"是\"\r\n }\r\n return belongTo\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 handleQuery: debounce(function () {\r\n this.currentPage = 1\r\n this.pageSize = 10\r\n this.getList()\r\n }, 1000),\r\n /** 查询用户列表 */\r\n async getList() {\r\n this.loading = true;\r\n var searchParams = {\r\n currentPage: this.currentPage,\r\n pageSize: this.pageSize,\r\n username: this.queryParams.username,\r\n phonenumber: this.queryParams.phonenumber,\r\n status: this.queryParams.status\r\n }\r\n await this.$axios.get('/sysUserController/getAll',\r\n {params: searchParams}).then((res) => {\r\n this.userList = res.data\r\n this.total = res.data.length\r\n\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 // 用户状态修改\r\n handleStatusChange(row) {\r\n let text = row.status === \"0\" ? \"启用\" : \"停用\";\r\n this.$modal.confirm('确认要\"' + text + '\"\"' + row.userName + '\"用户吗?').then(function () {\r\n return changeUserStatus(row.userId, 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.getList()\r\n this.open = false;\r\n this.reset();\r\n },\r\n // 角色取消按钮\r\n jscancel() {\r\n this.jsopen = false;\r\n this.userRoleId = ''\r\n this.menuOptions=[]\r\n },\r\n // 表单重置\r\n reset() {\r\n this.edit = false;\r\n this.form = {\r\n id: undefined,\r\n username: undefined,\r\n nickname: undefined,\r\n idcard: undefined,\r\n phonenumber: undefined,\r\n mailbox: undefined,\r\n status: \"0\",\r\n usertype: \"0\",\r\n remark: undefined,\r\n expDate: undefined\r\n };\r\n\r\n if (this.$refs[\"form\"]) {\r\n this.$refs[\"form\"].clearValidate();\r\n }\r\n },\r\n /** 重置按钮操作 */\r\n resetQuery() {\r\n this.resetForm(\"queryForm\");\r\n },\r\n /** 新增按钮操作 */\r\n handleAdd() {\r\n this.reset();\r\n this.edit = false;\r\n this.open = true;\r\n this.title = \"添加用户\";\r\n // this.form.password = this.initPassword;\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.id != undefined) {\r\n this.$prompt('请输入登录密码', '鉴别操作', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n inputType: 'password',\r\n // customClass:'no-autofill-pwd',\r\n inputValidator: (val) => {\r\n if (val === null || val.length < 1 || val.length > 20) {\r\n return false;\r\n }\r\n },\r\n inputErrorMessage: '不能为空,最多可录入20个字符',\r\n beforeClose(action, instance, done) {\r\n if (action === \"confirm\") {\r\n instance.$refs[\"confirm\"].$el.onclick = (function (e) {\r\n e = e || window.event;\r\n if (e.detail != 0) {\r\n done();\r\n }\r\n })();\r\n } else {\r\n done();\r\n }\r\n }\r\n }).then(async ({value}) => {\r\n // 更新操作\r\n await this.$axios.post('/sysUserController/updateUser?againPwd='+value, 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.loading = false\r\n }).catch((error) => {\r\n this.loading = false\r\n })\r\n }).catch((e) => {\r\n })\r\n } else {\r\n this.$prompt('请输入登录密码', '鉴别操作', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n inputType: 'password',\r\n // customClass:'no-autofill-pwd',\r\n inputValidator: (val) => {\r\n if (val === null || val.length < 1 || val.length > 20) {\r\n return false;\r\n }\r\n },\r\n inputErrorMessage: '不能为空,最多可录入20个字符',\r\n beforeClose(action, instance, done) {\r\n if (action === \"confirm\") {\r\n instance.$refs[\"confirm\"].$el.onclick = (function (e) {\r\n e = e || window.event;\r\n if (e.detail != 0) {\r\n done();\r\n }\r\n })();\r\n } else {\r\n done();\r\n }\r\n }\r\n }).then(async ({value}) => {\r\n // 新增操作\r\n await this.$axios.post('/sysUserController/addUser?againPwd='+value, 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.loading = false\r\n }).catch((error) => {\r\n // this.$message.error(error)\r\n this.loading = false\r\n })\r\n }).catch((e) => {\r\n })\r\n }\r\n }\r\n });\r\n }, 1000),\r\n /** 修改按钮操作 */\r\n handleUpdate() {\r\n this.reset();\r\n let _selectData = this.$refs.userTable.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 if (_selectData.id == 1) {\r\n this.$message({\r\n type: 'warning',\r\n message: '内置用户不能修改!'\r\n });\r\n return\r\n }\r\n if (_selectData.status == 2) {\r\n this.$message({\r\n type: 'warning',\r\n message: '注销的账号不能操作!'\r\n });\r\n return\r\n }\r\n _selectData.password = ''\r\n this.form = _selectData;\r\n this.open = true;\r\n this.title = \"修改用户\";\r\n this.edit = true;\r\n },\r\n\r\n // 取消按钮\r\n lockformcancel() {\r\n this.lockopen = false;\r\n this.lockform = {}\r\n },\r\n sublockform(){\r\n if (this.lockform.expDate==null || this.lockform.expDate==undefined){\r\n this.$message({\r\n type: 'warning',\r\n message: '请选择截止日期!'\r\n });\r\n return\r\n }\r\n if (this.lockform.password==null || this.lockform.password==undefined){\r\n this.$message({\r\n type: 'warning',\r\n message: '请输入登录密码!'\r\n });\r\n return\r\n }\r\n const _selectData = this.$refs.userTable.getRadioRecord(true)\r\n this.doRelock(_selectData, this.lockform.password,this.lockform.expDate)\r\n },\r\n /** 解锁按钮操作 */\r\n handleRelock() {\r\n const _selectData = this.$refs.userTable.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 if (_selectData.status == 2) {\r\n this.$message({\r\n type: 'warning',\r\n message: '注销的账号不能操作!'\r\n });\r\n return\r\n }\r\n if (_selectData.status !== '1') {\r\n this.$message({\r\n type: 'warning',\r\n message: '只能对【锁定】状态的进行解锁!'\r\n });\r\n return\r\n }\r\n this.doRelock(_selectData)\r\n },\r\n /**\r\n * 解锁提交\r\n */\r\n doRelock: debounce(async function (_selectData) {\r\n const param = {\r\n id: _selectData.id\r\n }\r\n await this.$axios.post('/sysUserController/relockUser', this.$qs.stringify(param)).then((res) => {\r\n this.$message.success('解锁成功')\r\n this.getList();\r\n }).catch((error) => {\r\n this.loading = false\r\n })\r\n }, 1000),\r\n\r\n /**\r\n * 角色类型改变时更改权限列表\r\n * @param rowRoleId\r\n * @returns {Promise<unknown>}\r\n */\r\n getMenu(rowRoleId){\r\n const a = this.$axios\r\n const _this = this\r\n return new Promise(async function (resolve, reject) {\r\n var param1 = {\r\n roleId: rowRoleId\r\n }\r\n await a.get('/sysMenuController/roleMenuTreeselectForUser',\r\n {params: param1}).then((res) => {\r\n _this.menuOptions = res.data.menus;\r\n })\r\n }).catch((error) => {\r\n console.error('获取用户角色出错' + error)\r\n })\r\n },\r\n getUserRole(userid) {\r\n const a = this.$axios\r\n const _this = this\r\n return new Promise(async function (resolve, reject) {\r\n var userRoleParams = {\r\n userId: userid\r\n }\r\n await a.get('/sysUserController/getUserRole',\r\n {params: userRoleParams}).then(res => {\r\n\r\n if (res.data==undefined){\r\n _this.userRoleId = ''\r\n }\r\n else{\r\n _this.userRoleId = res.data.roleId\r\n }\r\n // 返回userRole对象\r\n resolve(res.data)\r\n })\r\n if (_this.userRoleId!=''){\r\n var param1 = {\r\n roleId: _this.userRoleId\r\n }\r\n\r\n await a.get('/sysMenuController/roleMenuTreeselectForUser',\r\n {params: param1}).then((res) => {\r\n _this.menuOptions = res.data.menus;\r\n })\r\n }\r\n\r\n }).catch((error) => {\r\n console.error('获取用户角色出错' + error)\r\n })\r\n },\r\n getRoleByType(usertype) {\r\n // 根据用户类型获取角色列表\r\n const a = this.$axios\r\n let _this = this\r\n return new Promise(async function (resolve, reject) {\r\n var searchParams = {\r\n usertype: usertype\r\n }\r\n await a.get('/sysRoleController/getRoleByType',\r\n {params: searchParams}).then(res => {\r\n // 返回角色列表\r\n _this.roleList = res.data\r\n resolve(res.data)\r\n })\r\n }).catch((error) => {\r\n this.loading = false\r\n this.$message.error(error)\r\n })\r\n },\r\n /** 分配角色操作 */\r\n handleAuthRole: debounce(function (row) {\r\n if (row.status == '2') {\r\n this.$message({\r\n type: 'warning',\r\n message: '注销的账号不能操作!'\r\n });\r\n return\r\n }\r\n\r\n this.jsuserid = row.id\r\n this.jsusername = row.username\r\n this.jsnickname = row.nickname\r\n\r\n this.getRoleByType(row.usertype)\r\n this.getUserRole(this.jsuserid)\r\n this.jsopen = true;\r\n this.title = \"分配角色\";\r\n }, 1000),\r\n\r\n /** 角色分配提交按钮 */\r\n jssubmitForm: debounce(async function () {\r\n if (this.userRoleId!=''){\r\n this.$prompt('请输入登录密码', '鉴别操作', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n inputType: 'password',\r\n // customClass:'no-autofill-pwd',\r\n inputValidator: (val) => {\r\n if (val === null || val.length < 1 || val.length > 20) {\r\n return false;\r\n }\r\n },\r\n inputErrorMessage: '不能为空,最多可录入20个字符',\r\n beforeClose(action, instance, done) {\r\n if (action === \"confirm\") {\r\n instance.$refs[\"confirm\"].$el.onclick = (function (e) {\r\n e = e || window.event;\r\n if (e.detail != 0) {\r\n done();\r\n }\r\n })();\r\n } else {\r\n done();\r\n }\r\n }\r\n }).then(async ({value}) => {\r\n // 提交后台角色分配\r\n const param = {\r\n userId: this.jsuserid,\r\n roleId: this.userRoleId\r\n }\r\n console.log(param)\r\n await this.$axios.post('/sysUserController/authRole?againPwd='+value, this.$qs.stringify(param)).then((res) => {\r\n this.$message({\r\n type: 'success',\r\n message: '授权成功'\r\n });\r\n this.jscancel()\r\n this.getList()\r\n }).catch((error) => {\r\n this.loading = false\r\n })\r\n }).catch((e) => {\r\n })\r\n }\r\n else{\r\n this.$message({\r\n type: 'error',\r\n message: '请选择角色类型'\r\n });\r\n }\r\n }, 1000)\r\n }\r\n};\r\n</script>\r\n"]}]}
|