1 |
- {"remainingRequest":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/src/views/system/menu/index.vue?vue&type=script&lang=js","dependencies":[{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/src/views/system/menu/index.vue","mtime":1708395041891},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/cache-loader/dist/cjs.js","mtime":1708395146433},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/babel-loader/lib/index.js","mtime":1708395147257},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/cache-loader/dist/cjs.js","mtime":1708395146433},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/vue-loader/lib/index.js","mtime":1708395147382}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQpjb25zdCBCdWlsZGluZ3MgPSByZXF1aXJlLmNvbnRleHQoJ0AvaWNvbnMvQnVpbGRpbmdzJywgZmFsc2UsIC9cLnN2ZyQvKQ0KY29uc3QgQnVzaW5lc3MgPSByZXF1aXJlLmNvbnRleHQoJ0AvaWNvbnMvQnVzaW5lc3MnLCBmYWxzZSwgL1wuc3ZnJC8pDQpjb25zdCBEZXZpY2UgPSByZXF1aXJlLmNvbnRleHQoJ0AvaWNvbnMvRGV2aWNlJywgZmFsc2UsIC9cLnN2ZyQvKQ0KY29uc3QgRG9jdW1lbnQgPSByZXF1aXJlLmNvbnRleHQoJ0AvaWNvbnMvRG9jdW1lbnQnLCBmYWxzZSwgL1wuc3ZnJC8pDQpjb25zdCBPdGhlcnMgPSByZXF1aXJlLmNvbnRleHQoJ0AvaWNvbnMvT3RoZXJzJywgZmFsc2UsIC9cLnN2ZyQvKQ0KY29uc3Qgc3ZnID0gcmVxdWlyZS5jb250ZXh0KCdAL2ljb25zL3N2ZycsIGZhbHNlLCAvXC5zdmckLykNCmNvbnN0IFN5c3RlbSA9IHJlcXVpcmUuY29udGV4dCgnQC9pY29ucy9TeXN0ZW0nLCBmYWxzZSwgL1wuc3ZnJC8pDQpjb25zdCBVc2VyID0gcmVxdWlyZS5jb250ZXh0KCdAL2ljb25zL1VzZXInLCBmYWxzZSwgL1wuc3ZnJC8pDQpjb25zdCByZXF1aXJlQWxsID0gcmVxdWlyZUNvbnRleHQgPT4gcmVxdWlyZUNvbnRleHQua2V5cygpLm1hcChyZXF1aXJlQ29udGV4dCkNCg0KY29uc3QgVXNlckRhdGEgPSByZXF1aXJlQWxsKFVzZXIpLy/nlKjmiLcNCmNvbnN0IEJ1aWxkaW5nc0RhdGEgPSByZXF1aXJlQWxsKEJ1aWxkaW5ncykvL+W7uuetkQ0KY29uc3QgQnVzaW5lc3NEYXRhID0gcmVxdWlyZUFsbChCdXNpbmVzcykvL+WKnuWFrA0KY29uc3QgRGV2aWNlRGF0YSA9IHJlcXVpcmVBbGwoRGV2aWNlKS8v6K6+5aSHDQpjb25zdCBEb2N1bWVudERhdGEgPSByZXF1aXJlQWxsKERvY3VtZW50KS8v5paH5qGjDQpjb25zdCBTeXN0ZW1EYXRhID0gcmVxdWlyZUFsbChTeXN0ZW0pLy/ns7vnu58NCmNvbnN0IE90aGVyc0RhdGEgPSByZXF1aXJlQWxsKE90aGVycykvL+WFtuS7lg0KY29uc3Qgc3ZnRGF0YSA9IHJlcXVpcmVBbGwoc3ZnKS8v6buY6K6kDQppbXBvcnQgeyBtYXBHZXR0ZXJzIH0gZnJvbSAndnVleCcNCmltcG9ydCB7IGdldE1lbnVUcmVlLCBkZWxNZW51LCBnZXRNZW51TGlzdCwgYWRkTWVudSwgZWRpdE1lbnUsIGV4cG9ydE1lbnVFeGNlbCB9IGZyb20gJ0AvYXBpL3N5c01hbmFnZScNCmV4cG9ydCBkZWZhdWx0IHsNCiAgbmFtZTogJ2hvbWUnLA0KICBjb21wdXRlZDogew0KICAgIC4uLm1hcEdldHRlcnMoWw0KICAgICAgJ25hbWUnDQogICAgXSkNCiAgfSwNCiAgY29tcG9uZW50czogew0KICB9LA0KICBkYXRhKCkgew0KICAgIHJldHVybiB7DQogICAgICBhY3RpdmVOYW1lOiAnMScsDQogICAgICB0aXRsZURhdGE6IFsNCiAgICAgICAgew0KICAgICAgICAgIGluZGV4OiAnMScsDQogICAgICAgICAgdGl0bGU6ICfnlKjmiLcnDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICBpbmRleDogJzInLA0KICAgICAgICAgIHRpdGxlOiAn5bu6562RJw0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgaW5kZXg6ICczJywNCiAgICAgICAgICB0aXRsZTogJ+WKnuWFrCcNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIGluZGV4OiAnNCcsDQogICAgICAgICAgdGl0bGU6ICforr7lpIcnDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICBpbmRleDogJzUnLA0KICAgICAgICAgIHRpdGxlOiAn5paH5qGjJw0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgaW5kZXg6ICc2JywNCiAgICAgICAgICB0aXRsZTogJ+ezu+e7nycNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIGluZGV4OiAnNycsDQogICAgICAgICAgdGl0bGU6ICflhbbku5YnDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICBpbmRleDogJzgnLA0KICAgICAgICAgIHRpdGxlOiAn6buY6K6kJw0KICAgICAgICB9LA0KICAgICAgXSwNCiAgICAgIHN2Z0RhdGE6IFtdLA0KICAgICAgc2VhcmNoRGF0YTogew0KICAgICAgICBtZW51TmFtZTogJycsDQogICAgICAgIHN0YXR1czogJycNCiAgICAgIH0sDQogICAgICBzaG93Q2hvb3NlSWNvbjogZmFsc2UsDQogICAgICBmb3JtOiB7DQogICAgICAgIG1lbnVJZDogdW5kZWZpbmVkLA0KICAgICAgICBwYXJlbnRJZDogMCwNCiAgICAgICAgcGFyZW50TmFtZTogIiIsDQogICAgICAgIG1lbnVOYW1lOiB1bmRlZmluZWQsDQogICAgICAgIGljb246IHVuZGVmaW5lZCwNCiAgICAgICAgbWVudVR5cGU6ICJNIiwNCiAgICAgICAgb3JkZXJOdW06IHVuZGVmaW5lZCwNCiAgICAgICAgaXNGcmFtZTogIjEiLA0KICAgICAgICBpc0NhY2hlOiAiMSIsDQogICAgICAgIHZpc2libGU6ICIxIiwNCiAgICAgICAgc3RhdHVzOiAiMSINCiAgICAgIH0sDQogICAgICBhZGRNZW51Rm9ybTogew0KICAgICAgICBtZW51SWQ6IHVuZGVmaW5lZCwNCiAgICAgICAgcGFyZW50SWQ6IDAsDQogICAgICAgIHBhcmVudE5hbWU6ICIiLA0KICAgICAgICBtZW51TmFtZTogdW5kZWZpbmVkLA0KICAgICAgICBpY29uOiB1bmRlZmluZWQsDQogICAgICAgIG1lbnVUeXBlOiAiTSIsDQogICAgICAgIG9yZGVyTnVtOiB1bmRlZmluZWQsDQogICAgICAgIGlzRnJhbWU6ICIxIiwNCiAgICAgICAgaXNDYWNoZTogIjEiLA0KICAgICAgICB2aXNpYmxlOiAiMSIsDQogICAgICAgIHN0YXR1czogIjEiDQogICAgICB9LA0KICAgICAgaXNTaG9lUGFyZW50TmFtZTogZmFsc2UsDQogICAgICBwYXJlbnROYW1lOiAnJywNCiAgICAgIG9wZW46IGZhbHNlLA0KICAgICAgYWRkTWVudU9wZW46IGZhbHNlLA0KICAgICAgbWVudUxpc3Q6IFtdLA0KICAgICAgdGl0bGU6ICcnLA0KICAgICAgYWRkTWVudVRpdGxlOiAnJywNCiAgICAgIGxvYWRpbmc6IHRydWUsDQogICAgICBtZW51T3B0aW9uczogW10sDQogICAgICBzdGF0dXNPcHRpb25zOiBbDQogICAgICAgIHsNCiAgICAgICAgICBsYWJlbDogJ+WQr+eUqCcsDQogICAgICAgICAgdmFsdWU6ICcxJw0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgbGFiZWw6ICflgZznlKgnLA0KICAgICAgICAgIHZhbHVlOiAnMicNCiAgICAgICAgfQ0KICAgICAgXSwNCiAgICAgIHJ1bGVzOiB7DQogICAgICAgIHBhcmVudE5hbWU6IFt7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi6K+36YCJ5oup54i257qn6I+c5Y2VIiwgdHJpZ2dlcjogImJsdXIiIH1dLA0KICAgICAgICBwYXJlbnRJZDogW3sgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLor7fpgInmi6nniLbnuqfoj5zljZUiLCB0cmlnZ2VyOiAiYmx1ciIgfV0sDQogICAgICAgIG1lbnVOYW1lOiBbeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuiPnOWNleWQjeensOS4jeiDveS4uuepuiIsIHRyaWdnZXI6ICJibHVyIiB9XSwNCiAgICAgICAgb3JkZXJOdW06IFt7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi6I+c5Y2V6aG65bqP5LiN6IO95Li656m6IiwgdHJpZ2dlcjogImJsdXIiIH1dLA0KICAgICAgICBwYXRoOiBbeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIui3r+eUseWcsOWdgOS4jeiDveS4uuepuiIsIHRyaWdnZXI6ICJibHVyIiB9XSwNCiAgICAgICAgcGVybXM6IFt7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi5p2D6ZmQ5a2X56ym5LiN6IO95Li656m6IiwgdHJpZ2dlcjogImJsdXIiIH1dDQogICAgICB9LA0KICAgICAgYWRkUnVsZXM6IHsNCiAgICAgICAgcGFyZW50TmFtZTogW3sgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLor7fpgInmi6nniLbnuqfoj5zljZUiLCB0cmlnZ2VyOiAiYmx1ciIgfV0sDQogICAgICAgIHBhcmVudElkOiBbeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuivt+mAieaLqeeItue6p+iPnOWNlSIsIHRyaWdnZXI6ICJibHVyIiB9XSwNCiAgICAgICAgbWVudU5hbWU6IFt7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi6I+c5Y2V5ZCN56ew5LiN6IO95Li656m6IiwgdHJpZ2dlcjogImJsdXIiIH1dLA0KICAgICAgICBvcmRlck51bTogW3sgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLoj5zljZXpobrluo/kuI3og73kuLrnqboiLCB0cmlnZ2VyOiAiYmx1ciIgfV0sDQogICAgICAgIHBhdGg6IFt7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi6Lev55Sx5Zyw5Z2A5LiN6IO95Li656m6IiwgdHJpZ2dlcjogImJsdXIiIH1dLA0KICAgICAgICBwZXJtczogW3sgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLmnYPpmZDlrZfnrKbkuI3og73kuLrnqboiLCB0cmlnZ2VyOiAiYmx1ciIgfV0sICAgICAgICANCiAgICAgIH0sDQogICAgICBpY29uU2VsZWN0UmVmOiBudWxsLA0KICAgIH0NCiAgfSwNCiAgY3JlYXRlZCgpIHsNCiAgICB0aGlzLnN2Z0RhdGEgPSBbdGhpcy5oYW5kbGVBcnIoVXNlckRhdGEpLCB0aGlzLmhhbmRsZUFycihCdWlsZGluZ3NEYXRhKSwgdGhpcy5oYW5kbGVBcnIoQnVzaW5lc3NEYXRhKSwgdGhpcy5oYW5kbGVBcnIoRGV2aWNlRGF0YSksIHRoaXMuaGFuZGxlQXJyKERvY3VtZW50RGF0YSksIHRoaXMuaGFuZGxlQXJyKFN5c3RlbURhdGEpLCB0aGlzLmhhbmRsZUFycihPdGhlcnNEYXRhKSwgdGhpcy5oYW5kbGVBcnIoc3ZnRGF0YSldDQogICAgdGhpcy5nZXRNZW51TGlzdCh0aGlzLnNlYXJjaERhdGEpDQogIH0sDQogIG1ldGhvZHM6IHsNCiAgICBlZGl0U3ZnKGl0ZW1zKSB7DQogICAgICB0aGlzLmZvcm0uaWNvbiA9IGl0ZW1zDQogICAgfSwNCiAgICBhZGRTdmcoaXRlbXMpIHsNCiAgICAgIHRoaXMuYWRkTWVudUZvcm0uaWNvbiA9IGl0ZW1zDQogICAgfSwNCiAgICBoYW5kbGVBcnIoYXJyKSB7DQogICAgICBsZXQgdGVtcEFyciA9IFtdDQogICAgICBhcnIuZm9yRWFjaChpdGVtID0+IHsNCiAgICAgICAgbGV0IHN0ciA9IGl0ZW0uZGVmYXVsdC5pZC5zbGljZSg1KQ0KICAgICAgICB0ZW1wQXJyLnB1c2goc3RyKQ0KICAgICAgfSkNCiAgICAgIHJldHVybiB0ZW1wQXJyDQogICAgfSwNCiAgICBjYW5jZWwoKSB7DQogICAgICB0aGlzLmdldE1lbnVMaXN0KHRoaXMuc2VhcmNoRGF0YSkNCiAgICAgIHRoaXMub3BlbiA9IGZhbHNlDQogICAgfSwNCiAgICBlZGl0Q2FuY2VsKCkgew0KICAgICAgdGhpcy5nZXRNZW51TGlzdCh0aGlzLnNlYXJjaERhdGEpDQogICAgICB0aGlzLmFkZE1lbnVPcGVuID0gZmFsc2UNCiAgICB9LA0KICAgIGV4cG9ydEV4Y2VsKCkgew0KICAgICAgZXhwb3J0TWVudUV4Y2VsKCcvc3lzdGVtL21lbnUvZXhwb3J0JykudGhlbihyZXMgPT4gew0KICAgICAgICAvLyBjb25zdCBibG9iID0gbmV3IEJsb2IoW3Jlc10sIHsgdHlwZTogJ3RleHQvcGxhaW47Y2hhcnNldD11dGYtOCcgfSk7DQogICAgICAgIC8vIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOw0KICAgICAgICAvLyBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOw0KICAgICAgICAvLyBhLmhyZWYgPSB1cmw7DQogICAgICAgIC8vIGEuZG93bmxvYWQgPSAn6I+c5Y2V5YiX6KGoLnhsc3gnOw0KICAgICAgICAvLyBhLmNsaWNrKCk7DQogICAgICAgIC8vIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7DQoNCg0KICAgICAgICBpZiAocmVzLnR5cGUgPT0gImFwcGxpY2F0aW9uL2pzb24iKSB7DQogICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsgDQogICAgICAgICAgcmVhZGVyLnJlYWRBc1RleHQocmVzLCAndXRmLTgnKTsgDQogICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIGNvbnN0IG1zZyA9IEpTT04ucGFyc2UocmVhZGVyLnJlc3VsdCk7DQogICAgICAgICAgICBpZihtc2cuY29kZSA9PSAyMDApew0KICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3Jlc10sIHsgdHlwZTogJ3RleHQvcGxhaW47Y2hhcnNldD11dGYtOCcgfSk7DQogICAgICAgICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOw0KICAgICAgICAgICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOw0KICAgICAgICAgICAgICBhLmhyZWYgPSB1cmw7DQogICAgICAgICAgICAgIGEuZG93bmxvYWQgPSAn6I+c5Y2V5YiX6KGoLnhsc3gnOw0KICAgICAgICAgICAgICBhLmNsaWNrKCk7DQogICAgICAgICAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7DQogICAgICAgICAgICB9IGVsc2V7DQogICAgICAgICAgICAgIE1lc3NhZ2Uoew0KICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsDQogICAgICAgICAgICAgICAgbWVzc2FnZTogbXNnLm1zZw0KICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH0gICAgICANCiAgICAgICAgICB9DQogICAgICAgIH1lbHNlew0KICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbcmVzXSwgeyB0eXBlOiAndGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04JyB9KTsNCiAgICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTsNCiAgICAgICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOw0KICAgICAgICAgIGEuaHJlZiA9IHVybDsNCiAgICAgICAgICBhLmRvd25sb2FkID0gJ+iPnOWNleWIl+ihqC54bHN4JzsNCiAgICAgICAgICBhLmNsaWNrKCk7DQogICAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTsNCiAgICAgICAgfQ0KDQoNCg0KICAgICAgfSkNCiAgICB9LA0KICAgIHN1Ym1pdEZvcm0oKSB7DQogICAgICB0aGlzLiRyZWZzLmFkZE1lbnVSZWYudmFsaWRhdGUodmFsaWQgPT4gew0KICAgICAgICBpZiAodmFsaWQpIHsNCiAgICAgICAgICBhZGRNZW51KHRoaXMuYWRkTWVudUZvcm0pLnRoZW4ocmVzID0+IHsNCiAgICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHsNCiAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLA0KICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICfmt7vliqDmiJDlip/vvIEnDQogICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICB0aGlzLmdldE1lbnVMaXN0KHRoaXMuc2VhcmNoRGF0YSkNCiAgICAgICAgICAgICAgdGhpcy5hZGRNZW51T3BlbiA9IGZhbHNlDQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLA0KICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlcy5tc2cNCiAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgfSkNCiAgICAgICAgfQ0KICAgICAgfSkNCiAgICB9LA0KICAgIGVkaXRNZW51KCkgew0KICAgICAgdGhpcy4kcmVmcy5lZGl0TWVudVJlZi52YWxpZGF0ZSh2YWxpZCA9PiB7DQogICAgICAgIGlmICh2YWxpZCkgew0KICAgICAgICAgIGxldCBwYXJhbXMgPSB0aGlzLmZvcm0NCiAgICAgICAgICBlZGl0TWVudShwYXJhbXMpLnRoZW4ocmVzID0+IHsNCiAgICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHsNCiAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLA0KICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICfkv67mlLnmiJDlip/vvIEnDQogICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICB0aGlzLmdldE1lbnVMaXN0KHRoaXMuc2VhcmNoRGF0YSkNCiAgICAgICAgICAgICAgdGhpcy5vcGVuID0gZmFsc2UNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsDQogICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzLm1zZw0KICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9KQ0KICAgICAgICB9DQogICAgICB9KQ0KICAgIH0sDQogICAgaGFuZGxlVXBkYXRlKHJvdykgew0KICAgICAgdGhpcy5mb3JtLm1lbnVJZCA9IHJvdy5tZW51SWQNCiAgICAgIHRoaXMudGl0bGUgPSAi5L+u5pS56I+c5Y2VIg0KICAgICAgdGhpcy5nZXRUcmVlc2VsZWN0KCk7DQogICAgICB0aGlzLmZvcm0gPSByb3cNCiAgICAgIHRoaXMub3BlbiA9IHRydWUNCiAgICB9LA0KICAgIGdldE1lbnVMaXN0KHBhcmFtcykgew0KICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZQ0KICAgICAgZ2V0TWVudUxpc3QocGFyYW1zKS50aGVuKHJlcyA9PiB7DQogICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHsNCiAgICAgICAgICB0aGlzLm1lbnVMaXN0ID0gdGhpcy5oYW5kbGVUcmVlKHJlcy5kYXRhLCAibWVudUlkIikNCiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgICAgdHlwZTogJ2Vycm9yJywNCiAgICAgICAgICAgIG1lc3NhZ2U6IHJlcy5tc2cNCiAgICAgICAgICB9KQ0KICAgICAgICB9DQoNCiAgICAgIH0pDQogICAgfSwNCiAgICByZXNldFNlYXJjaERhdGEoKSB7DQogICAgICB0aGlzLnNlYXJjaERhdGEgPSB7DQogICAgICAgIG1lbnVOYW1lOiAnJywNCiAgICAgICAgc3RhdHVzOiAnJw0KICAgICAgfQ0KICAgICAgdGhpcy5nZXRNZW51TGlzdCh0aGlzLnNlYXJjaERhdGEpDQogICAgfSwNCiAgICBzaG93U2VsZWN0SWNvbigpIHsNCiAgICAgIHRoaXMuaWNvblNlbGVjdFJlZi5yZXNldCgpOw0KICAgICAgdGhpcy5zaG93Q2hvb3NlSWNvbiA9IHRydWU7DQogICAgfSwNCiAgICBzZWxlY3RlZChuYW1lKSB7DQogICAgICB0aGlzLmZvcm0uaWNvbiA9IG5hbWU7DQogICAgICB0aGlzLnNob3dDaG9vc2VJY29uID0gZmFsc2U7DQogICAgfSwNCiAgICBoYW5kbGVOb2RlQ2xpY2sodikgew0KICAgICAgdGhpcy5mb3JtLnBhcmVudElkID0gdi5pZA0KICAgICAgdGhpcy5mb3JtLnBhcmVudE5hbWUgPSB2LmxhYmVsDQogICAgfSwNCiAgICBoYW5kbGVBZGQocm93KSB7DQogICAgICB0aGlzLmFkZE1lbnVGb3JtID0gew0KICAgICAgICBtZW51SWQ6IHVuZGVmaW5lZCwNCiAgICAgICAgcGFyZW50SWQ6IDAsDQogICAgICAgIHBhcmVudE5hbWU6ICIiLA0KICAgICAgICBtZW51TmFtZTogdW5kZWZpbmVkLA0KICAgICAgICBpY29uOiB1bmRlZmluZWQsDQogICAgICAgIG1lbnVUeXBlOiAiTSIsDQogICAgICAgIG9yZGVyTnVtOiB1bmRlZmluZWQsDQogICAgICAgIGlzRnJhbWU6ICIxIiwNCiAgICAgICAgaXNDYWNoZTogIjEiLA0KICAgICAgICB2aXNpYmxlOiAiMSIsDQogICAgICAgIHN0YXR1czogIjEiDQogICAgICB9DQogICAgICBpZiAocm93KSB7DQogICAgICAgIHRoaXMuaXNTaG9lUGFyZW50TmFtZSA9IHRydWUNCiAgICAgICAgdGhpcy5hZGRNZW51Rm9ybS5wYXJlbnROYW1lID0gcm93Lm1lbnVOYW1lDQogICAgICAgIHRoaXMuYWRkTWVudUZvcm0ucGFyZW50SWQgPSByb3cubWVudUlkDQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLmlzU2hvZVBhcmVudE5hbWUgPSBmYWxzZQ0KICAgICAgfQ0KDQogICAgICB0aGlzLmdldFRyZWVzZWxlY3QoKTsNCiAgICAgIHRoaXMuYWRkTWVudU9wZW4gPSB0cnVlOw0KICAgICAgdGhpcy5hZGRNZW51VGl0bGUgPSAi5paw5aKe6I+c5Y2VIjsNCiAgICB9LA0KICAgIHJlc2V0KCkgew0KICAgICAgdGhpcy5mb3JtID0gew0KICAgICAgICBtZW51SWQ6IHVuZGVmaW5lZCwNCiAgICAgICAgcGFyZW50SWQ6IDAsDQogICAgICAgIG1lbnVOYW1lOiB1bmRlZmluZWQsDQogICAgICAgIGljb246IHVuZGVmaW5lZCwNCiAgICAgICAgbWVudVR5cGU6ICJNIiwNCiAgICAgICAgb3JkZXJOdW06IHVuZGVmaW5lZCwNCiAgICAgICAgaXNGcmFtZTogIjEiLA0KICAgICAgICBpc0NhY2hlOiAiMSIsDQogICAgICAgIHZpc2libGU6ICIxIiwNCiAgICAgICAgc3RhdHVzOiAiMSINCiAgICAgIH0NCiAgICB9LA0KICAgIGdldFRyZWVzZWxlY3QoKSB7DQogICAgICB0aGlzLm1lbnVPcHRpb25zID0gW107DQogICAgICBnZXRNZW51VHJlZSgpLnRoZW4ocmVzcG9uc2UgPT4gew0KICAgICAgICB0aGlzLm1lbnVPcHRpb25zID0gcmVzcG9uc2UuZGF0YQ0KICAgICAgfSkNCiAgICB9LA0KICAgIGhhbmRsZVF1ZXJ5KCkgew0KICAgICAgdGhpcy5nZXRNZW51TGlzdCh0aGlzLnNlYXJjaERhdGEpDQogICAgfSwNCiAgICBkZWxNZW51KHNjb3BlKSB7DQogICAgICB0aGlzLiRjb25maXJtKCfnoa7lrpropoHliKDpmaTlkJc/JywgJ+S/oeaBr+aPkOekuicsIHsNCiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLA0KICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywNCiAgICAgICAgdHlwZTogJ3dhcm5pbmcnDQogICAgICB9KS50aGVuKCgpID0+IHsNCiAgICAgICAgZGVsTWVudShzY29wZS5tZW51SWQpLnRoZW4ocmVzID0+IHsNCiAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLA0KICAgICAgICAgICAgICBtZXNzYWdlOiAn5Yig6Zmk5oiQ5YqfIScNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgdGhpcy5nZXRNZW51TGlzdCh0aGlzLnNlYXJjaERhdGEpDQogICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLA0KICAgICAgICAgICAgICBtZXNzYWdlOiByZXMubXNnDQogICAgICAgICAgICB9KTsNCiAgICAgICAgICB9DQogICAgICAgIH0pDQogICAgICB9KS5jYXRjaCgoKSA9PiB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2Uoew0KICAgICAgICAgIHR5cGU6ICdpbmZvJywNCiAgICAgICAgICBtZXNzYWdlOiAn5bey5Y+W5raI5Yig6ZmkJw0KICAgICAgICB9KTsNCiAgICAgIH0pDQoNCiAgICB9LA0KICAgIGhhbmRsZVRyZWUoZGF0YSwgaWQsIHBhcmVudElkLCBjaGlsZHJlbikgew0KICAgICAgbGV0IGNvbmZpZyA9IHsNCiAgICAgICAgaWQ6IGlkIHx8ICdpZCcsDQogICAgICAgIHBhcmVudElkOiBwYXJlbnRJZCB8fCAncGFyZW50SWQnLA0KICAgICAgICBjaGlsZHJlbkxpc3Q6IGNoaWxkcmVuIHx8ICdjaGlsZHJlbicNCiAgICAgIH07DQoNCiAgICAgIHZhciBjaGlsZHJlbkxpc3RNYXAgPSB7fTsNCiAgICAgIHZhciBub2RlSWRzID0ge307DQogICAgICB2YXIgdHJlZSA9IFtdOw0KDQogICAgICBmb3IgKGxldCBkIG9mIGRhdGEpIHsNCiAgICAgICAgbGV0IHBhcmVudElkID0gZFtjb25maWcucGFyZW50SWRdOw0KICAgICAgICBpZiAoY2hpbGRyZW5MaXN0TWFwW3BhcmVudElkXSA9PSBudWxsKSB7DQogICAgICAgICAgY2hpbGRyZW5MaXN0TWFwW3BhcmVudElkXSA9IFtdOw0KICAgICAgICB9DQogICAgICAgIG5vZGVJZHNbZFtjb25maWcuaWRdXSA9IGQ7DQogICAgICAgIGNoaWxkcmVuTGlzdE1hcFtwYXJlbnRJZF0ucHVzaChkKTsNCiAgICAgIH0NCg0KICAgICAgZm9yIChsZXQgZCBvZiBkYXRhKSB7DQogICAgICAgIGxldCBwYXJlbnRJZCA9IGRbY29uZmlnLnBhcmVudElkXTsNCiAgICAgICAgaWYgKG5vZGVJZHNbcGFyZW50SWRdID09IG51bGwpIHsNCiAgICAgICAgICB0cmVlLnB1c2goZCk7DQogICAgICAgIH0NCiAgICAgIH0NCg0KICAgICAgZm9yIChsZXQgdCBvZiB0cmVlKSB7DQogICAgICAgIGFkYXB0VG9DaGlsZHJlbkxpc3QodCk7DQogICAgICB9DQoNCiAgICAgIGZ1bmN0aW9uIGFkYXB0VG9DaGlsZHJlbkxpc3Qobykgew0KICAgICAgICBpZiAoY2hpbGRyZW5MaXN0TWFwW29bY29uZmlnLmlkXV0gIT09IG51bGwpIHsNCiAgICAgICAgICBvW2NvbmZpZy5jaGlsZHJlbkxpc3RdID0gY2hpbGRyZW5MaXN0TWFwW29bY29uZmlnLmlkXV07DQogICAgICAgIH0NCiAgICAgICAgaWYgKG9bY29uZmlnLmNoaWxkcmVuTGlzdF0pIHsNCiAgICAgICAgICBmb3IgKGxldCBjIG9mIG9bY29uZmlnLmNoaWxkcmVuTGlzdF0pIHsNCiAgICAgICAgICAgIGFkYXB0VG9DaGlsZHJlbkxpc3QoYyk7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQogICAgICByZXR1cm4gdHJlZTsNCiAgICB9LA0KICAgIHBhcnNlVGltZSh0aW1lLCBwYXR0ZXJuKSB7DQogICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCB8fCAhdGltZSkgew0KICAgICAgICByZXR1cm4gbnVsbA0KICAgICAgfQ0KICAgICAgY29uc3QgZm9ybWF0ID0gcGF0dGVybiB8fCAne3l9LXttfS17ZH0ge2h9OntpfTp7c30nDQogICAgICBsZXQgZGF0ZQ0KICAgICAgaWYgKHR5cGVvZiB0aW1lID09PSAnb2JqZWN0Jykgew0KICAgICAgICBkYXRlID0gdGltZQ0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgaWYgKCh0eXBlb2YgdGltZSA9PT0gJ3N0cmluZycpICYmICgvXlswLTldKyQvLnRlc3QodGltZSkpKSB7DQogICAgICAgICAgdGltZSA9IHBhcnNlSW50KHRpbWUpDQogICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRpbWUgPT09ICdzdHJpbmcnKSB7DQogICAgICAgICAgdGltZSA9IHRpbWUucmVwbGFjZShuZXcgUmVnRXhwKC8tL2dtKSwgJy8nKS5yZXBsYWNlKCdUJywgJyAnKS5yZXBsYWNlKG5ldyBSZWdFeHAoL1wuW1xkXXszfS9nbSksICcnKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoKHR5cGVvZiB0aW1lID09PSAnbnVtYmVyJykgJiYgKHRpbWUudG9TdHJpbmcoKS5sZW5ndGggPT09IDEwKSkgew0KICAgICAgICAgIHRpbWUgPSB0aW1lICogMTAwMA0KICAgICAgICB9DQogICAgICAgIGRhdGUgPSBuZXcgRGF0ZSh0aW1lKQ0KICAgICAgfQ0KICAgICAgY29uc3QgZm9ybWF0T2JqID0gew0KICAgICAgICB5OiBkYXRlLmdldEZ1bGxZZWFyKCksDQogICAgICAgIG06IGRhdGUuZ2V0TW9udGgoKSArIDEsDQogICAgICAgIGQ6IGRhdGUuZ2V0RGF0ZSgpLA0KICAgICAgICBoOiBkYXRlLmdldEhvdXJzKCksDQogICAgICAgIGk6IGRhdGUuZ2V0TWludXRlcygpLA0KICAgICAgICBzOiBkYXRlLmdldFNlY29uZHMoKSwNCiAgICAgICAgYTogZGF0ZS5nZXREYXkoKQ0KICAgICAgfQ0KICAgICAgY29uc3QgdGltZV9zdHIgPSBmb3JtYXQucmVwbGFjZSgveyh5fG18ZHxofGl8c3xhKSt9L2csIChyZXN1bHQsIGtleSkgPT4gew0KICAgICAgICBsZXQgdmFsdWUgPSBmb3JtYXRPYmpba2V5XQ0KICAgICAgICAvLyBOb3RlOiBnZXREYXkoKSByZXR1cm5zIDAgb24gU3VuZGF5DQogICAgICAgIGlmIChrZXkgPT09ICdhJykgeyByZXR1cm4gWyfml6UnLCAn5LiAJywgJ+S6jCcsICfkuIknLCAn5ZubJywgJ+S6lCcsICflha0nXVt2YWx1ZV0gfQ0KICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDAgJiYgdmFsdWUgPCAxMCkgew0KICAgICAgICAgIHZhbHVlID0gJzAnICsgdmFsdWUNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gdmFsdWUgfHwgMA0KICAgICAgfSkNCiAgICAgIHJldHVybiB0aW1lX3N0cg0KICAgIH0NCiAgfQ0KfQ0K"},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmQA;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;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;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","file":"index.vue","sourceRoot":"src/views/system/menu","sourcesContent":["<template>\r\n <div class=\"dashboard-container\">\r\n <div class=\"search-content\">\r\n <el-input clearable style=\"width: 220px;\" placeholder=\"请输入菜单名称\" v-model=\"searchData.menuName\"></el-input>\r\n <el-select style=\"width: 220px;\" clearable placeholder=\"请选择状态\" v-model=\"searchData.status\">\r\n <el-option v-for=\"item in statusOptions\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\">\r\n </el-option>\r\n </el-select>\r\n <div class=\"search-btn\">\r\n <div class=\"search\" @click=\"handleQuery\">查询</div>\r\n <div class=\"reset\" @click=\"resetSearchData()\">重置</div>\r\n </div>\r\n </div>\r\n <div class=\"table-content\">\r\n <div class=\"btn\" @click=\"handleAdd()\">\r\n <span class=\"icon font_family\"></span>\r\n 新增\r\n </div>\r\n <div class=\"btn\" @click=\"exportExcel\">\r\n <span class=\"icon font_family\"></span>\r\n <a>导出</a>\r\n </div>\r\n <el-table :indent=\"50\" v-loading=\"loading\" :data=\"menuList\" stripe ref=\"tableRef\" row-key=\"menuId\"\r\n :default-expand-all=\"false\" :tree-props=\"{ children: 'children', hasChildren: 'hasChildren' }\"\r\n highlight-current-row style=\"width: 100%;\">\r\n <el-table-column prop=\"menuName\" label=\"菜单名称\" :show-overflow-tooltip=\"true\" width=\"300\"></el-table-column>\r\n <el-table-column prop=\"icon\" label=\"图标\" align=\"center\" width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <svg-icon style=\"color: #1096DB;\" :icon-class=\"scope.row.icon\" />\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"orderNum\" label=\"排序\" width=\"60\"></el-table-column>\r\n <el-table-column prop=\"perms\" label=\"权限标识\" :show-overflow-tooltip=\"true\"></el-table-column>\r\n <el-table-column prop=\"component\" label=\"组件路径\" :show-overflow-tooltip=\"true\"></el-table-column>\r\n <el-table-column prop=\"status\" label=\"状态\" width=\"80\">\r\n <!-- <template #default=\"scope\">\r\n <dict-tag :options=\"sys_normal_disable\" :value=\"scope.row.status\" />\r\n </template> -->\r\n <template slot-scope=\"scope\">\r\n <div class=\"startUsing\" v-if=\"scope.row.status == '1'\">启用</div>\r\n <div class=\"Deactivate\" v-else>停用</div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"创建时间\" align=\"center\" prop=\"createTime\" width=\"170\">\r\n <template #default=\"scope\">\r\n <span>{{ parseTime(scope.row.createTime) }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"操作\" align=\"center\" width=\"200\" class-name=\"small-padding fixed-width\">\r\n <template #default=\"scope\">\r\n <el-button type=\"text\" style=\"color: #2866DD;\" @click=\"handleUpdate(scope.row)\"\r\n v-hasPermi=\"['system:menu:edit']\">修改</el-button>\r\n <el-divider direction=\"vertical\"></el-divider>\r\n <el-button type=\"text\" style=\"color: #2866DD;\" @click=\"handleAdd(scope.row)\">新增</el-button>\r\n <el-divider direction=\"vertical\"></el-divider>\r\n <el-button type=\"text\" style=\"color: #2866DD;\" @click=\"delMenu(scope.row)\"\r\n v-hasPermi=\"['system:menu:remove']\">删除</el-button>\r\n </template>\r\n </el-table-column>\r\n <template v-slot:empty>\r\n <svg-icon icon-class=\"search-none\" style=\"font-size: 64px;\" />\r\n <p>暂无数据</p>\r\n </template>\r\n </el-table>\r\n <!-- 修改菜单对话框 -->\r\n <el-dialog center @close=\"cancel\" :title=\"title\" v-if='this.open' :visible.sync=\"open\" width=\"636px\"\r\n :before-close=\"handleClose\" append-to-body>\r\n <div class=\"dialog_box\" style=\"height: 502px;overflow: auto;\">\r\n <el-form label-width=\"100px\" ref=\"editMenuRef\" :model=\"form\" :rules=\"rules\" label-position=\"right\">\r\n <el-form-item v-if=\"form.parentId !== 0\" label=\"上级菜单\" prop=\"parentName\" key=\"parentName\">\r\n <el-select style=\"width: 340px;\" clearable v-model=\"form.parentName\" placeholder=\"选择上级菜单\">\r\n <el-option :key=\"form.parentId\" :value=\"menuOptions.id\" :label=\"menuOptions.label\" hidden />\r\n <el-tree :data=\"menuOptions\" :props=\"defaultProps\" :node-key=\"menuOptions.id\" accordion highlight-current\r\n @node-click=\"handleNodeClick\" /></el-select>\r\n </el-form-item>\r\n <el-form-item label=\"菜单类型\" prop=\"menuType\" key=\"menuType\">\r\n <el-radio-group v-model=\"form.menuType\">\r\n <el-radio label=\"M\">目录</el-radio>\r\n <el-radio label=\"C\">菜单</el-radio>\r\n <el-radio label=\"F\">按钮</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item v-if=\"form.menuType != 'F'\" label=\"菜单图标\" prop=\"icon\">\r\n <el-popover width=\"290\" trigger=\"click\">\r\n <div class=\"svgList\">\r\n <el-tabs v-model=\"activeName\" type=\"card\">\r\n <el-tab-pane v-for=\"item in titleData\" :label=\"item.title\" :name=\"item.index\">\r\n <svg-icon style=\"display: inline-block;margin-right: 5px;\" @click=\"editSvg(items)\"\r\n v-for=\"items in svgData[item.index - 1]\" :icon-class=\"items\" />\r\n </el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n <el-input style=\"width: 340px;\" slot=\"reference\" placeholder=\"请选择菜单图标\" v-model=\"form.icon\">\r\n <template #prefix>\r\n <svg-icon v-if=\"form.icon\" :icon-class=\"form.icon\" class=\"el-input__icon\"\r\n style=\"height: 32px;width: 16px;position: relative;top: 5px;left: 5px;\" />\r\n <el-icon v-else style=\"height: 32px;width: 16px;position: relative;top: 5px;left: 5px;\">\r\n <search />\r\n </el-icon>\r\n </template></el-input>\r\n </el-popover>\r\n </el-form-item>\r\n <el-form-item label=\"菜单名称\" prop=\"menuName\" key=\"menuName\">\r\n <el-input style=\"width: 340px;\" v-model=\"form.menuName\" placeholder=\"请输入菜单名称\" />\r\n </el-form-item>\r\n <el-form-item label=\"显示排序\" prop=\"orderNum\" key=\"orderNum\">\r\n <el-input-number placeholder=\"请输入显示排序\" v-model=\"form.orderNum\" controls-position=\"right\" :step=\"1\" style=\"width: 340px;\"\r\n :min=\"1\" />\r\n </el-form-item>\r\n <el-form-item label=\"是否外链\" v-if=\"form.menuType != 'F'\" key=\"isFrame\">\r\n <el-radio-group v-model=\"form.isFrame\">\r\n <el-radio label=\"1\">是</el-radio>\r\n <el-radio label=\"2\">否</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item label=\"路由地址\" prop=\"path\" key=\"path\">\r\n <el-input style=\"width: 340px;\" v-model=\"form.path\" placeholder=\"请输入路由地址\" />\r\n </el-form-item>\r\n <el-form-item label=\"组件路径\" v-if=\"form.menuType == 'C'\" prop=\"component\" key=\"component\">\r\n <el-input style=\"width: 340px;\" v-model=\"form.component\" placeholder=\"请输入组件路径\" />\r\n </el-form-item>\r\n <el-form-item label=\"权限字符\" v-if=\"form.menuType != 'M'\" prop=\"perms\" key=\"perms\">\r\n <el-input style=\"width: 340px;\" v-model=\"form.perms\" placeholder=\"请输入权限标识\" maxlength=\"100\" />\r\n </el-form-item>\r\n <el-form-item label=\"路由参数\" v-if=\"form.menuType == 'C'\" key=\"query\">\r\n <el-input style=\"width: 340px;\" v-model=\"form.query\" placeholder=\"请输入路由参数\" maxlength=\"255\" />\r\n </el-form-item>\r\n <el-form-item label=\"是否缓存\" v-if=\"form.menuType == 'C'\" key=\"isCache\">\r\n <el-radio-group v-model=\"form.isCache\">\r\n <el-radio-button label=\"1\">缓存</el-radio-button>\r\n <el-radio-button label=\"2\">不缓存</el-radio-button>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item label=\"显示状态\" v-if=\"form.menuType != 'F'\" key=\"visible\">\r\n <el-radio-group v-model=\"form.visible\">\r\n <el-radio-button label=\"1\">显示</el-radio-button>\r\n <el-radio-button label=\"2\">隐藏</el-radio-button>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item label=\"菜单状态\" v-if=\"form.menuType != 'F'\" key=\"status\">\r\n <el-radio-group v-model=\"form.status\">\r\n <el-radio-button label=\"1\">启用</el-radio-button>\r\n <el-radio-button label=\"2\">停用</el-radio-button>\r\n </el-radio-group>\r\n </el-form-item>\r\n </el-form>\r\n </div>\r\n <template #footer>\r\n <div class=\"dialog-footer\">\r\n <div class=\"search\" @click=\"editMenu\">保 存</div>\r\n <div class=\"reset\" @click=\"cancel()\">取 消</div>\r\n </div>\r\n </template>\r\n </el-dialog>\r\n <!-- 添加菜单对话框 -->\r\n <el-dialog center :title=\"addMenuTitle\" v-if='this.addMenuOpen' :visible.sync=\"addMenuOpen\" width=\"636px\"\r\n :before-close=\"handleClose\" append-to-body>\r\n <div class=\"dialog_box\" style=\"height: 502px;overflow: auto;\">\r\n <el-form label-width=\"100px\" ref=\"addMenuRef\" :model=\"addMenuForm\" :rules=\"addRules\" label-position=\"right\">\r\n <el-form-item v-if=\"isShoeParentName\" label=\"上级菜单\" prop=\"parentName\" key=\"parentName\">\r\n <el-select style=\"width: 340px;\" :disabled=\"true\" clearable v-model=\"addMenuForm.parentName\"\r\n placeholder=\"选择上级菜单\">\r\n <el-option :key=\"addMenuForm.parentId\" :value=\"menuOptions.id\" :label=\"menuOptions.label\" hidden />\r\n <el-tree :data=\"menuOptions\" :props=\"defaultProps\" :node-key=\"menuOptions.id\" accordion highlight-current\r\n @node-click=\"handleNodeClick\" /></el-select>\r\n </el-form-item>\r\n <el-form-item label=\"菜单类型\" prop=\"menuType\" key=\"menuType\">\r\n <el-radio-group v-model=\"addMenuForm.menuType\">\r\n <el-radio label=\"M\">目录</el-radio>\r\n <el-radio label=\"C\">菜单</el-radio>\r\n <el-radio label=\"F\">按钮</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item v-if=\"addMenuForm.menuType != 'F'\" label=\"菜单图标\" prop=\"icon\">\r\n <el-popover width=\"290\" trigger=\"click\">\r\n <div class=\"svgList\">\r\n <el-tabs v-model=\"activeName\" type=\"card\">\r\n <el-tab-pane v-for=\"item in titleData\" :label=\"item.title\" :name=\"item.index\">\r\n <svg-icon style=\"display: inline-block;margin-right: 5px;\" @click=\"addSvg(items)\"\r\n v-for=\"items in svgData[item.index - 1]\" :icon-class=\"items\" />\r\n </el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n <el-input class=\"iconInput\" style=\"width: 340px;\" slot=\"reference\" v-model=\"addMenuForm.icon\" placeholder=\"请选择菜单图标\">\r\n <template #prefix>\r\n <svg-icon v-if=\"addMenuForm.icon\" :icon-class=\"addMenuForm.icon\" class=\"el-input__icon\"\r\n style=\"height: 32px;width: 16px;position: relative;top: 5px;left: 5px;\" />\r\n <el-icon v-else style=\"height: 32px;width: 16px;position: relative;top: 5px;left: 5px;\">\r\n <search />\r\n </el-icon>\r\n </template></el-input>\r\n </el-popover>\r\n </el-form-item>\r\n <el-form-item label=\"菜单名称\" prop=\"menuName\" key=\"menuName\">\r\n <el-input style=\"width: 340px;\" v-model=\"addMenuForm.menuName\" placeholder=\"请输入菜单名称\" />\r\n </el-form-item>\r\n <el-form-item label=\"显示排序\" prop=\"orderNum\" key=\"orderNum\">\r\n <el-input-number placeholder=\"请输入显示排序\" v-model=\"addMenuForm.orderNum\" controls-position=\"right\" :step=\"1\" style=\"width: 340px;\"\r\n :min=\"1\" />\r\n </el-form-item>\r\n <el-form-item v-if=\"addMenuForm.menuType != 'F'\" key=\"isFrame\">\r\n <template #label>\r\n <span>\r\n 是否外链\r\n <el-tooltip content=\"选择是外链则路由地址需要以`http(s)://`开头\" placement=\"top\">\r\n <el-icon><question-filled /></el-icon>\r\n </el-tooltip>\r\n </span>\r\n </template>\r\n <el-radio-group v-model=\"addMenuForm.isFrame\">\r\n <el-radio label=\"1\">是</el-radio>\r\n <el-radio label=\"2\">否</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item label=\"路由地址\" prop=\"path\" key=\"path\">\r\n <el-input style=\"width: 340px;\" v-model=\"addMenuForm.path\" placeholder=\"请输入路由地址\" />\r\n </el-form-item>\r\n <el-form-item label=\"组件路径\" prop=\"component\" v-if=\"addMenuForm.menuType == 'C'\" key=\"component\">\r\n <el-input style=\"width: 340px;\" v-model=\"addMenuForm.component\" placeholder=\"请输入组件路径\" />\r\n </el-form-item> \r\n <el-form-item label=\"路由参数\" v-if=\"addMenuForm.menuType !== 'F'\" key=\"query\">\r\n <el-input style=\"width: 340px;\" v-model=\"addMenuForm.query\" placeholder=\"请输入路由参数\" maxlength=\"255\" />\r\n </el-form-item>\r\n <el-form-item label=\"权限字符\" v-if=\"addMenuForm.menuType !== 'M'\" prop=\"perms\" key=\"perms\">\r\n <el-input style=\"width: 340px;\" v-model=\"addMenuForm.perms\" placeholder=\"请输入权限字符\" maxlength=\"100\" />\r\n </el-form-item> \r\n <el-form-item label=\"是否缓存\" v-if=\"addMenuForm.menuType == 'C'\" key=\"isCache\">\r\n <el-radio-group v-model=\"addMenuForm.isCache\">\r\n <el-radio-button label=\"1\">缓存</el-radio-button>\r\n <el-radio-button label=\"2\">不缓存</el-radio-button>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item label=\"显示状态\" v-if=\"addMenuForm.menuType != 'F'\" key=\"visible\">\r\n <el-radio-group v-model=\"addMenuForm.visible\">\r\n <el-radio-button label=\"1\">显示</el-radio-button>\r\n <el-radio-button label=\"2\">隐藏</el-radio-button>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item label=\"菜单状态\" v-if=\"addMenuForm.menuType != 'F'\" key=\"status\">\r\n <el-radio-group v-model=\"addMenuForm.status\">\r\n <el-radio-button label=\"1\">启用</el-radio-button>\r\n <el-radio-button label=\"2\">停用</el-radio-button>\r\n </el-radio-group>\r\n </el-form-item>\r\n </el-form>\r\n </div>\r\n <template #footer>\r\n <div class=\"c\">\r\n <div class=\"search\" @click=\"submitForm\">保 存</div>\r\n <div class=\"reset\" @click=\"editCancel()\">取 消</div>\r\n </div>\r\n </template>\r\n </el-dialog>\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nconst Buildings = require.context('@/icons/Buildings', false, /\\.svg$/)\r\nconst Business = require.context('@/icons/Business', false, /\\.svg$/)\r\nconst Device = require.context('@/icons/Device', false, /\\.svg$/)\r\nconst Document = require.context('@/icons/Document', false, /\\.svg$/)\r\nconst Others = require.context('@/icons/Others', false, /\\.svg$/)\r\nconst svg = require.context('@/icons/svg', false, /\\.svg$/)\r\nconst System = require.context('@/icons/System', false, /\\.svg$/)\r\nconst User = require.context('@/icons/User', false, /\\.svg$/)\r\nconst requireAll = requireContext => requireContext.keys().map(requireContext)\r\n\r\nconst UserData = requireAll(User)//用户\r\nconst BuildingsData = requireAll(Buildings)//建筑\r\nconst BusinessData = requireAll(Business)//办公\r\nconst DeviceData = requireAll(Device)//设备\r\nconst DocumentData = requireAll(Document)//文档\r\nconst SystemData = requireAll(System)//系统\r\nconst OthersData = requireAll(Others)//其他\r\nconst svgData = requireAll(svg)//默认\r\nimport { mapGetters } from 'vuex'\r\nimport { getMenuTree, delMenu, getMenuList, addMenu, editMenu, exportMenuExcel } from '@/api/sysManage'\r\nexport default {\r\n name: 'home',\r\n computed: {\r\n ...mapGetters([\r\n 'name'\r\n ])\r\n },\r\n components: {\r\n },\r\n data() {\r\n return {\r\n activeName: '1',\r\n titleData: [\r\n {\r\n index: '1',\r\n title: '用户'\r\n },\r\n {\r\n index: '2',\r\n title: '建筑'\r\n },\r\n {\r\n index: '3',\r\n title: '办公'\r\n },\r\n {\r\n index: '4',\r\n title: '设备'\r\n },\r\n {\r\n index: '5',\r\n title: '文档'\r\n },\r\n {\r\n index: '6',\r\n title: '系统'\r\n },\r\n {\r\n index: '7',\r\n title: '其他'\r\n },\r\n {\r\n index: '8',\r\n title: '默认'\r\n },\r\n ],\r\n svgData: [],\r\n searchData: {\r\n menuName: '',\r\n status: ''\r\n },\r\n showChooseIcon: false,\r\n form: {\r\n menuId: undefined,\r\n parentId: 0,\r\n parentName: \"\",\r\n menuName: undefined,\r\n icon: undefined,\r\n menuType: \"M\",\r\n orderNum: undefined,\r\n isFrame: \"1\",\r\n isCache: \"1\",\r\n visible: \"1\",\r\n status: \"1\"\r\n },\r\n addMenuForm: {\r\n menuId: undefined,\r\n parentId: 0,\r\n parentName: \"\",\r\n menuName: undefined,\r\n icon: undefined,\r\n menuType: \"M\",\r\n orderNum: undefined,\r\n isFrame: \"1\",\r\n isCache: \"1\",\r\n visible: \"1\",\r\n status: \"1\"\r\n },\r\n isShoeParentName: false,\r\n parentName: '',\r\n open: false,\r\n addMenuOpen: false,\r\n menuList: [],\r\n title: '',\r\n addMenuTitle: '',\r\n loading: true,\r\n menuOptions: [],\r\n statusOptions: [\r\n {\r\n label: '启用',\r\n value: '1'\r\n },\r\n {\r\n label: '停用',\r\n value: '2'\r\n }\r\n ],\r\n rules: {\r\n parentName: [{ required: true, message: \"请选择父级菜单\", trigger: \"blur\" }],\r\n parentId: [{ required: true, message: \"请选择父级菜单\", trigger: \"blur\" }],\r\n menuName: [{ required: true, message: \"菜单名称不能为空\", trigger: \"blur\" }],\r\n orderNum: [{ required: true, message: \"菜单顺序不能为空\", trigger: \"blur\" }],\r\n path: [{ required: true, message: \"路由地址不能为空\", trigger: \"blur\" }],\r\n perms: [{ required: true, message: \"权限字符不能为空\", trigger: \"blur\" }]\r\n },\r\n addRules: {\r\n parentName: [{ required: true, message: \"请选择父级菜单\", trigger: \"blur\" }],\r\n parentId: [{ required: true, message: \"请选择父级菜单\", trigger: \"blur\" }],\r\n menuName: [{ required: true, message: \"菜单名称不能为空\", trigger: \"blur\" }],\r\n orderNum: [{ required: true, message: \"菜单顺序不能为空\", trigger: \"blur\" }],\r\n path: [{ required: true, message: \"路由地址不能为空\", trigger: \"blur\" }],\r\n perms: [{ required: true, message: \"权限字符不能为空\", trigger: \"blur\" }], \r\n },\r\n iconSelectRef: null,\r\n }\r\n },\r\n created() {\r\n this.svgData = [this.handleArr(UserData), this.handleArr(BuildingsData), this.handleArr(BusinessData), this.handleArr(DeviceData), this.handleArr(DocumentData), this.handleArr(SystemData), this.handleArr(OthersData), this.handleArr(svgData)]\r\n this.getMenuList(this.searchData)\r\n },\r\n methods: {\r\n editSvg(items) {\r\n this.form.icon = items\r\n },\r\n addSvg(items) {\r\n this.addMenuForm.icon = items\r\n },\r\n handleArr(arr) {\r\n let tempArr = []\r\n arr.forEach(item => {\r\n let str = item.default.id.slice(5)\r\n tempArr.push(str)\r\n })\r\n return tempArr\r\n },\r\n cancel() {\r\n this.getMenuList(this.searchData)\r\n this.open = false\r\n },\r\n editCancel() {\r\n this.getMenuList(this.searchData)\r\n this.addMenuOpen = false\r\n },\r\n exportExcel() {\r\n exportMenuExcel('/system/menu/export').then(res => {\r\n // const blob = new Blob([res], { type: 'text/plain;charset=utf-8' });\r\n // const url = window.URL.createObjectURL(blob);\r\n // const a = document.createElement('a');\r\n // a.href = url;\r\n // a.download = '菜单列表.xlsx';\r\n // a.click();\r\n // window.URL.revokeObjectURL(url);\r\n\r\n\r\n if (res.type == \"application/json\") {\r\n const reader = new FileReader(); \r\n reader.readAsText(res, 'utf-8'); \r\n reader.onload = function () {\r\n const msg = JSON.parse(reader.result);\r\n if(msg.code == 200){\r\n const blob = new Blob([res], { type: 'text/plain;charset=utf-8' });\r\n const url = window.URL.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.href = url;\r\n a.download = '菜单列表.xlsx';\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n } else{\r\n Message({\r\n type: 'error',\r\n message: msg.msg\r\n });\r\n } \r\n }\r\n }else{\r\n const blob = new Blob([res], { type: 'text/plain;charset=utf-8' });\r\n const url = window.URL.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.href = url;\r\n a.download = '菜单列表.xlsx';\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n }\r\n\r\n\r\n\r\n })\r\n },\r\n submitForm() {\r\n this.$refs.addMenuRef.validate(valid => {\r\n if (valid) {\r\n addMenu(this.addMenuForm).then(res => {\r\n if (res.code == 200) {\r\n this.$message({\r\n type: 'success',\r\n message: '添加成功!'\r\n });\r\n this.getMenuList(this.searchData)\r\n this.addMenuOpen = false\r\n } else {\r\n this.$message({\r\n type: 'error',\r\n message: res.msg\r\n });\r\n }\r\n })\r\n }\r\n })\r\n },\r\n editMenu() {\r\n this.$refs.editMenuRef.validate(valid => {\r\n if (valid) {\r\n let params = this.form\r\n editMenu(params).then(res => {\r\n if (res.code == 200) {\r\n this.$message({\r\n type: 'success',\r\n message: '修改成功!'\r\n });\r\n this.getMenuList(this.searchData)\r\n this.open = false\r\n } else {\r\n this.$message({\r\n type: 'error',\r\n message: res.msg\r\n });\r\n }\r\n })\r\n }\r\n })\r\n },\r\n handleUpdate(row) {\r\n this.form.menuId = row.menuId\r\n this.title = \"修改菜单\"\r\n this.getTreeselect();\r\n this.form = row\r\n this.open = true\r\n },\r\n getMenuList(params) {\r\n this.loading = true\r\n getMenuList(params).then(res => {\r\n if (res.code == 200) {\r\n this.menuList = this.handleTree(res.data, \"menuId\")\r\n this.loading = false\r\n } else {\r\n this.$message({\r\n type: 'error',\r\n message: res.msg\r\n })\r\n }\r\n\r\n })\r\n },\r\n resetSearchData() {\r\n this.searchData = {\r\n menuName: '',\r\n status: ''\r\n }\r\n this.getMenuList(this.searchData)\r\n },\r\n showSelectIcon() {\r\n this.iconSelectRef.reset();\r\n this.showChooseIcon = true;\r\n },\r\n selected(name) {\r\n this.form.icon = name;\r\n this.showChooseIcon = false;\r\n },\r\n handleNodeClick(v) {\r\n this.form.parentId = v.id\r\n this.form.parentName = v.label\r\n },\r\n handleAdd(row) {\r\n this.addMenuForm = {\r\n menuId: undefined,\r\n parentId: 0,\r\n parentName: \"\",\r\n menuName: undefined,\r\n icon: undefined,\r\n menuType: \"M\",\r\n orderNum: undefined,\r\n isFrame: \"1\",\r\n isCache: \"1\",\r\n visible: \"1\",\r\n status: \"1\"\r\n }\r\n if (row) {\r\n this.isShoeParentName = true\r\n this.addMenuForm.parentName = row.menuName\r\n this.addMenuForm.parentId = row.menuId\r\n } else {\r\n this.isShoeParentName = false\r\n }\r\n\r\n this.getTreeselect();\r\n this.addMenuOpen = true;\r\n this.addMenuTitle = \"新增菜单\";\r\n },\r\n reset() {\r\n this.form = {\r\n menuId: undefined,\r\n parentId: 0,\r\n menuName: undefined,\r\n icon: undefined,\r\n menuType: \"M\",\r\n orderNum: undefined,\r\n isFrame: \"1\",\r\n isCache: \"1\",\r\n visible: \"1\",\r\n status: \"1\"\r\n }\r\n },\r\n getTreeselect() {\r\n this.menuOptions = [];\r\n getMenuTree().then(response => {\r\n this.menuOptions = response.data\r\n })\r\n },\r\n handleQuery() {\r\n this.getMenuList(this.searchData)\r\n },\r\n delMenu(scope) {\r\n this.$confirm('确定要删除吗?', '信息提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n delMenu(scope.menuId).then(res => {\r\n if (res.code == 200) {\r\n this.$message({\r\n type: 'success',\r\n message: '删除成功!'\r\n });\r\n this.getMenuList(this.searchData)\r\n } else {\r\n this.$message({\r\n type: 'error',\r\n message: res.msg\r\n });\r\n }\r\n })\r\n }).catch(() => {\r\n this.$message({\r\n type: 'info',\r\n message: '已取消删除'\r\n });\r\n })\r\n\r\n },\r\n handleTree(data, id, parentId, children) {\r\n let config = {\r\n id: id || 'id',\r\n parentId: parentId || 'parentId',\r\n childrenList: children || 'children'\r\n };\r\n\r\n var childrenListMap = {};\r\n var nodeIds = {};\r\n var tree = [];\r\n\r\n for (let d of data) {\r\n let parentId = d[config.parentId];\r\n if (childrenListMap[parentId] == null) {\r\n childrenListMap[parentId] = [];\r\n }\r\n nodeIds[d[config.id]] = d;\r\n childrenListMap[parentId].push(d);\r\n }\r\n\r\n for (let d of data) {\r\n let parentId = d[config.parentId];\r\n if (nodeIds[parentId] == null) {\r\n tree.push(d);\r\n }\r\n }\r\n\r\n for (let t of tree) {\r\n adaptToChildrenList(t);\r\n }\r\n\r\n function adaptToChildrenList(o) {\r\n if (childrenListMap[o[config.id]] !== null) {\r\n o[config.childrenList] = childrenListMap[o[config.id]];\r\n }\r\n if (o[config.childrenList]) {\r\n for (let c of o[config.childrenList]) {\r\n adaptToChildrenList(c);\r\n }\r\n }\r\n }\r\n return tree;\r\n },\r\n parseTime(time, pattern) {\r\n if (arguments.length === 0 || !time) {\r\n return null\r\n }\r\n const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'\r\n let date\r\n if (typeof time === 'object') {\r\n date = time\r\n } else {\r\n if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {\r\n time = parseInt(time)\r\n } else if (typeof time === 'string') {\r\n time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\\.[\\d]{3}/gm), '');\r\n }\r\n if ((typeof time === 'number') && (time.toString().length === 10)) {\r\n time = time * 1000\r\n }\r\n date = new Date(time)\r\n }\r\n const formatObj = {\r\n y: date.getFullYear(),\r\n m: date.getMonth() + 1,\r\n d: date.getDate(),\r\n h: date.getHours(),\r\n i: date.getMinutes(),\r\n s: date.getSeconds(),\r\n a: date.getDay()\r\n }\r\n const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\r\n let value = formatObj[key]\r\n // Note: getDay() returns 0 on Sunday\r\n if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }\r\n if (result.length > 0 && value < 10) {\r\n value = '0' + value\r\n }\r\n return value || 0\r\n })\r\n return time_str\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.dashboard {\r\n &-container {\r\n margin: 30px;\r\n }\r\n\r\n &-text {\r\n font-size: 30px;\r\n line-height: 46px;\r\n }\r\n}\r\n\r\n.dashboard-container {\r\n .search-content {\r\n width: 100%;\r\n height: 74px;\r\n background-color: #fff;\r\n display: flex;\r\n align-items: center;\r\n padding-left: 10px;\r\n\r\n .el-input {\r\n margin: 0 10px;\r\n }\r\n\r\n .el-select {\r\n margin: 0 10px;\r\n }\r\n\r\n .search-btn {\r\n display: flex;\r\n align-items: center;\r\n height: 100%;\r\n margin-left: 10px;\r\n\r\n div {\r\n // margin: 0 6px;\r\n display: inline-block;\r\n width: 80px;\r\n height: 40px;\r\n border-radius: 2px;\r\n font-size: 14px;\r\n line-height: 40px;\r\n text-align: center;\r\n }\r\n\r\n div:hover {\r\n cursor: pointer;\r\n }\r\n\r\n .search {\r\n margin-right: 10px;\r\n background-color: #2766DD;\r\n color: #F7F8FB;\r\n }\r\n\r\n .search:hover {\r\n background-color: #4D85F4;\r\n }\r\n\r\n .reset {\r\n color: #333334;\r\n border: 1px solid #D7D7D7;\r\n }\r\n\r\n .reset:hover {\r\n color: #1F9FFF;\r\n border: 1px solid #1F9FFF;\r\n }\r\n }\r\n }\r\n\r\n .table-content {\r\n margin-top: 15px;\r\n width: 100%;\r\n background-color: #fff;\r\n padding: 0 20px;\r\n\r\n .btn {\r\n margin: 15px 20px 15px 0;\r\n cursor: pointer;\r\n float: left;\r\n text-align: center;\r\n width: 98px;\r\n height: 34px;\r\n border-radius: 2px;\r\n border: 1px solid #ABC7FD;\r\n line-height: 34px;\r\n font-weight: 400;\r\n font-size: 14px;\r\n color: #2250C8;\r\n background-color: #E7EEFF;\r\n }\r\n\r\n .btn:hover {\r\n color: #FFFFFF;\r\n background-color: #2250C8;\r\n border: 1px solid #2250C8;\r\n }\r\n\r\n .btn:active {\r\n color: #FFFFFF;\r\n background-color: #194DA4;\r\n border: 1px solid #194DA4;\r\n }\r\n\r\n .startUsing {\r\n width: 54px;\r\n height: 24px;\r\n margin: 14.5px auto 0;\r\n line-height: 24px;\r\n text-align: center;\r\n font-size: 12px;\r\n color: #00974D;\r\n border-radius: 4px;\r\n background-color: #E7FAF0;\r\n border: 1px solid #BEFDDD;\r\n }\r\n\r\n .Deactivate {\r\n width: 54px;\r\n height: 24px;\r\n margin: 14.5px auto 0;\r\n line-height: 24px;\r\n text-align: center;\r\n font-size: 12px;\r\n color: #FF9933;\r\n border-radius: 4px;\r\n background-color: #FFF3E8;\r\n border: 1px solid #FDE6CF;\r\n }\r\n\r\n .operateBtn {\r\n display: flex;\r\n justify-content: center;\r\n color: #1E9FFF;\r\n\r\n div {\r\n margin: 0 5px;\r\n cursor: pointer;\r\n }\r\n }\r\n\r\n .pagination {\r\n margin: 10px 0;\r\n width: 100%;\r\n height: 20px;\r\n\r\n .el-pagination {\r\n float: right;\r\n }\r\n } \r\n }\r\n\r\n}\r\n\r\n::v-deep .el-dialog__body {\r\n padding: 20px 95px !important;\r\n}\r\n\r\n// 选中后radio文本的颜色\r\n::v-deep .el-radio__input.is-checked+.el-radio__label {\r\n color: #2766DD\r\n}\r\n\r\n/* radio选中后小圆点的颜色 */\r\n::v-deep .el-radio__input.is-checked .el-radio__inner {\r\n background: #2766DD !important;\r\n border-color: #2766DD !important;\r\n}\r\n\r\n::v-deep.el-radio-button {\r\n // margin-right: 15px;\r\n border-radius: 4px;\r\n\r\n .el-radio-button__inner {\r\n //修改按钮样式\r\n width: 120px;\r\n height: 42px;\r\n background: #F7F8FA;\r\n color: #333;\r\n border: 0 !important;\r\n }\r\n\r\n .el-radio-button__orig-radio:checked+.el-radio-button__inner {\r\n // 修改按钮激活样式\r\n color: #fff;\r\n background-color: #2766DD;\r\n border-color: #2766DD;\r\n box-shadow: -1px 0 0 0 #2766DD;\r\n }\r\n}\r\n::v-deep .el-input-number .el-input__inner{\r\n text-align: left !important;\r\n}\r\n</style>\r\n"]}]}
|