2a16701c2e0954b0230e75fea2b5fc06.json 34 KB

1
  1. {"remainingRequest":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\pages\\setting\\systemMenus\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\pages\\setting\\systemMenus\\index.vue","mtime":1761185180188},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:DQppbXBvcnQgeyBtYXBTdGF0ZSB9IGZyb20gJ3Z1ZXgnOw0KaW1wb3J0IHsNCiAgZ2V0VGFibGUsDQogIG1lbnVzRGV0YWlsc0FwaSwNCiAgaXNTaG93QXBpLA0KICBlZGl0TWVudXMsDQogIGdldFJ1bGVMaXN0LA0KICBtZW51c0JhdGNoLA0KICBnZXRNZW51c1VuaXF1ZSwNCiAgbWVudXNSdWxlQ2F0ZSwNCn0gZnJvbSAnQC9hcGkvc3lzdGVtTWVudXMnOw0KaW1wb3J0IGZvcm1DcmVhdGUgZnJvbSAnQGZvcm0tY3JlYXRlL2VsZW1lbnQtdWknOw0KaW1wb3J0IG1lbnVzRnJvbSBmcm9tICcuL2NvbXBvbmVudHMvbWVudXNGcm9tJzsNCmltcG9ydCB7IGZvcm1hdEZsYXR0ZW5pbmdSb3V0ZXMsIGZpbmRGaXJzdE5vbk51bGxDaGlsZHJlbiwgZmluZEZpcnN0Tm9uTnVsbENoaWxkcmVuS2V5cyB9IGZyb20gJ0AvbGlicy9zeXN0ZW0nOw0KDQpleHBvcnQgZGVmYXVsdCB7DQogIG5hbWU6ICdzeXN0ZW1NZW51cycsDQogIGRhdGEoKSB7DQogICAgcmV0dXJuIHsNCiAgICAgIGNoaWxkcmVuOiBbXSwNCiAgICAgIGV4cGFuZGVkS2V5czogW10sDQogICAgICB0YWJjb25maWc6IHsgY2hpbGRyZW46ICdjaGlsZHJlbicsIHJlc2VydmU6IHRydWUsIGFjY29yZGlvbjogdHJ1ZSB9LA0KICAgICAgc3BpblNob3c6IGZhbHNlLA0KICAgICAgcnVsZU1vZGFsOiBmYWxzZSwNCiAgICAgIHNlYXJjaFJ1bGU6ICcnLA0KICAgICAgZ3JpZDogew0KICAgICAgICB4bDogNywNCiAgICAgICAgbGc6IDcsDQogICAgICAgIG1kOiAxMiwNCiAgICAgICAgc206IDI0LA0KICAgICAgICB4czogMjQsDQogICAgICB9LA0KICAgICAgcm9sZURhdGE6IHsNCiAgICAgICAgaXNfc2hvdzogMSwNCiAgICAgICAga2V5d29yZDogJycsDQogICAgICAgIC8vIGF1dGhfdHlwZTogMywNCiAgICAgIH0sDQogICAgICBkZWZhdWx0UHJvcHM6IHsNCiAgICAgICAgY2hpbGRyZW46ICdjaGlsZHJlbicsDQogICAgICAgIGxhYmVsOiAnbmFtZScsDQogICAgICB9LA0KICAgICAgcnVsZUNhdGVMaXN0OiBbXSwgLy/mnYPpmZDmoJENCiAgICAgIGxvYWRpbmc6IGZhbHNlLA0KICAgICAgdGFibGVEYXRhOiBbXSwNCiAgICAgIEZyb21EYXRhOiBudWxsLA0KICAgICAgaWNvbnM6ICcnLA0KICAgICAgZm9ybVZhbGlkYXRlOiB7fSwNCiAgICAgIHRpdGxlRnJvbTogJycsDQogICAgICBtb2RhbFRpdGxlU3M6ICcnLA0KICAgICAgcm91dGVUeXBlOiAnMCcsDQogICAgICBhcnJzOiBbXSwNCiAgICAgIGZvdW5kYXRpb25MaXN0OiBbXSwgLy8g5Z+656GA5o6l5Y+j5YiX6KGoDQogICAgICBvcGVuTGlzdDogW10sIC8vIOWFrOW8gOaOpeWPo+WIl+ihqA0KICAgICAgc2VsZXRSb3V0ZTogW10sIC8vIOmAieS4rei3r+eUsQ0KICAgICAgc2VsZXRSb3V0ZUlkczogW10sIC8vIOmAieS4rWlkDQogICAgICBtZW51c0lkOiAwLCAvLyDpgInkuK3liIbnsbtpZA0KICAgICAgbm9kZUtleTogMCwgLy8g6YCJ5Lit6IqC54K5DQogICAgICBvcGVuSWQ6ICcnLA0KICAgIH07DQogIH0sDQogIGNvbXBvbmVudHM6IHsgbWVudXNGcm9tLCBmb3JtQ3JlYXRlOiBmb3JtQ3JlYXRlLiRmb3JtKCkgfSwNCiAgY29tcHV0ZWQ6IHsNCiAgICAuLi5tYXBTdGF0ZSgnYWRtaW4vbGF5b3V0JywgWydpc01vYmlsZSddKSwNCiAgICBsYWJlbFdpZHRoKCkgew0KICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgPyB1bmRlZmluZWQgOiAnODBweCc7DQogICAgfSwNCiAgICBsYWJlbFBvc2l0aW9uKCkgew0KICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgPyAndG9wJyA6ICdyaWdodCc7DQogICAgfSwNCiAgfSwNCiAgbW91bnRlZCgpIHsNCiAgICB0aGlzLmdldERhdGEoKTsNCiAgfSwNCiAgbWV0aG9kczogew0KICAgIGluaXQoKSB7DQogICAgICB0aGlzLnNlYXJjaFJ1bGUgPSAnJzsNCiAgICAgIHRoaXMuc2VhcmNoUnVsZXMoKTsNCiAgICB9LA0KICAgIGFkZFJvdXRlcnMoKSB7DQogICAgICBsZXQgZGF0YSA9IHsNCiAgICAgICAgbWVudXM6IHRoaXMuc2VsZXRSb3V0ZSwNCiAgICAgIH07DQogICAgICBtZW51c0JhdGNoKGRhdGEpDQogICAgICAgIC50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICB0aGlzLmdldERhdGEoKTsNCiAgICAgICAgfSkNCiAgICAgICAgLmNhdGNoKChyZXMpID0+IHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKHJlcy5tc2cpOw0KICAgICAgICB9KTsNCiAgICB9LA0KICAgIHNlbGVjdFJ1bGUoZGF0YSkgew0KICAgICAgaWYgKHRoaXMuc2VsZXRSb3V0ZUlkcy5pbmNsdWRlcyhkYXRhLmlkKSkgew0KICAgICAgICBsZXQgaSA9IHRoaXMuc2VsZXRSb3V0ZUlkcy5maW5kSW5kZXgoKGUpID0+IGUgPT0gZGF0YS5pZCk7DQogICAgICAgIHRoaXMuc2VsZXRSb3V0ZUlkcy5zcGxpY2UoaSwgMSk7DQogICAgICAgIHRoaXMuc2VsZXRSb3V0ZS5zcGxpY2UoaSwgMSk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLnNlbGV0Um91dGVJZHMucHVzaChkYXRhLmlkKTsNCiAgICAgICAgdGhpcy5zZWxldFJvdXRlLnB1c2goew0KICAgICAgICAgIG1lbnVfbmFtZTogZGF0YS5uYW1lLA0KICAgICAgICAgIHVuaXF1ZV9hdXRoOiAnJywNCiAgICAgICAgICBhcGlfdXJsOiBkYXRhLnBhdGgsDQogICAgICAgICAgcGF0aDogdGhpcy5tZW51c0lkLA0KICAgICAgICAgIG1ldGhvZDogZGF0YS5tZXRob2QsDQogICAgICAgIH0pOw0KICAgICAgfQ0KICAgIH0sDQogICAgY2hhbmdUYWIobmFtZSkgew0KICAgICAgdGhpcy5yb3V0ZVR5cGUgPSBuYW1lOw0KICAgICAgbGV0IGluZGV4ID0gcGFyc2VJbnQobmFtZSk7DQogICAgICB0aGlzLmNoaWxkcmVuID0gdGhpcy5mb3VuZGF0aW9uTGlzdFtpbmRleF0gPyB0aGlzLmZvdW5kYXRpb25MaXN0W2luZGV4XS5jaGlsZHJlbiA6IFtdOw0KICAgICAgdGhpcy5zZWFyY2hSdWxlcygpOw0KICAgIH0sDQogICAgLy8g5pCc57Si6KeE5YiZDQogICAgc2VhcmNoUnVsZXMoKSB7DQogICAgICBpZiAodGhpcy5zZWFyY2hSdWxlLnRyaW0oKSkgew0KICAgICAgICB0aGlzLmFycnMgPSBbXTsNCiAgICAgICAgbGV0IGFyciA9IHRoaXMuZm91bmRhdGlvbkxpc3Q7DQogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgaWYgKGFycltpXS5uYW1lLmluZGV4T2YodGhpcy5zZWFyY2hSdWxlKSAhPT0gLTEpIHsNCiAgICAgICAgICAgIHRoaXMuYXJycy5wdXNoKGFycltpXS5pZCk7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLmFycnMgPSBbXTsNCiAgICAgIH0NCiAgICB9LA0KICAgIGFkZFJvdXRlKHJvdykgew0KICAgICAgdGhpcy5tZW51c0lkID0gcm93LmlkOw0KICAgICAgdGhpcy5yb3V0ZVR5cGUgPSAnMCc7DQogICAgICAvLyB0aGlzLmdldFJ1bGVMaXN0KCk7DQogICAgICBtZW51c1J1bGVDYXRlKCkudGhlbigocmVzKSA9PiB7DQogICAgICAgIHRoaXMucnVsZUNhdGVMaXN0ID0gcmVzLmRhdGE7DQogICAgICAgIHRoaXMucnVsZU1vZGFsID0gdHJ1ZTsNCiAgICAgICAgaWYgKHJlcy5kYXRhLmxlbmd0aCkgew0KICAgICAgICAgIHRoaXMuJG5leHRUaWNrKChlKSA9PiB7DQogICAgICAgICAgICB0aGlzLmV4cGFuZGVkS2V5cyA9IGZpbmRGaXJzdE5vbk51bGxDaGlsZHJlbktleXMocmVzLmRhdGFbMF0sIFtdKTsNCiAgICAgICAgICAgIHRoaXMubm9kZUtleSA9IGZpbmRGaXJzdE5vbk51bGxDaGlsZHJlbihyZXMuZGF0YSkuaWQ7DQogICAgICAgICAgICB0aGlzLiRyZWZzLnRyZWVCb3guc2V0Q3VycmVudEtleSh0aGlzLm5vZGVLZXkpOw0KICAgICAgICAgICAgdGhpcy5nZXRSdWxlTGlzdCh0aGlzLm5vZGVLZXkpOw0KICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgICB9KTsNCiAgICB9LA0KICAgIGhhbmRsZU5vZGVDbGljayhkYXRhKSB7DQogICAgICB0aGlzLmdldFJ1bGVMaXN0KGRhdGEuaWQpOw0KICAgIH0sDQogICAgbW9kYWxjaGFuZ2UoKSB7DQogICAgICB0aGlzLnNlbGV0Um91dGVJZHMgPSBbXTsNCiAgICAgIHRoaXMuc2VsZXRSb3V0ZSA9IFtdOw0KICAgIH0sDQogICAgLy8g6I635Y+W5p2D6ZmQ5YiX6KGoDQogICAgZ2V0UnVsZUxpc3QoY2F0ZV9pZCkgew0KICAgICAgZ2V0UnVsZUxpc3QoY2F0ZV9pZCkudGhlbigocmVzKSA9PiB7DQogICAgICAgIHRoaXMuZm91bmRhdGlvbkxpc3QgPSByZXMuZGF0YTsNCiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IHJlcy5kYXRhOw0KICAgICAgICB0aGlzLnNlYXJjaFJ1bGVzKCk7DQoNCiAgICAgICAgLy8gdGhpcy5vcGVuTGlzdCA9IFtdOw0KICAgICAgICAvLyB0aGlzLnNlbGV0Um91dGVJZHMgPSBbXTsNCiAgICAgICAgLy8gdGhpcy5zZWxldFJvdXRlID0gW107DQogICAgICB9KTsNCiAgICB9LA0KICAgIC8vIOS/ruaUueinhOWImeeKtuaAgQ0KICAgIG9uY2hhbmdlSXNTaG93KHJvdykgew0KICAgICAgbGV0IGRhdGEgPSB7DQogICAgICAgIGlkOiByb3cuaWQsDQogICAgICAgIGlzX3Nob3dfcGF0aDogcm93LmlzX3Nob3dfcGF0aCwNCiAgICAgICAgaXNfc2hvdzogLTEsDQogICAgICB9Ow0KICAgICAgaXNTaG93QXBpKGRhdGEpDQogICAgICAgIC50aGVuKGFzeW5jIChyZXMpID0+IHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MocmVzLm1zZyk7DQogICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ21lbnVzL2dldE1lbnVzTmF2TGlzdCcpOw0KICAgICAgICB9KQ0KICAgICAgICAuY2F0Y2goKHJlcykgPT4gew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IocmVzLm1zZyk7DQogICAgICAgIH0pOw0KICAgIH0sDQogICAgLy8g6K+35rGC5YiX6KGoDQogICAgZ2V0TGlzdCgpIHsNCiAgICAgIHRoaXMuZm9ybVZhbGlkYXRlID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy4kb3B0aW9ucy5kYXRhKCkuZm9ybVZhbGlkYXRlKTsNCiAgICAgIHRoaXMuZ2V0RGF0YSgpOw0KICAgIH0sDQoNCiAgICAvLyDmuIXpmaTooajljZXmlbDmja4NCiAgICBjbGVhckZyb20oKSB7DQogICAgICB0aGlzLmZvcm1WYWxpZGF0ZSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuJG9wdGlvbnMuZGF0YSgpLmZvcm1WYWxpZGF0ZSk7DQogICAgfSwNCiAgICAvLyDmt7vliqDlrZDoj5zljZUNCiAgICBhZGRFKHJvdywgdGl0bGUpIHsNCiAgICAgIHRoaXMuZm9ybVZhbGlkYXRlID0ge307DQogICAgICBsZXQgcGlkID0gcm93LmlkLnRvU3RyaW5nKCk7DQogICAgICBpZiAocGlkKSB7DQogICAgICAgIG1lbnVzRGV0YWlsc0FwaShyb3cuaWQpDQogICAgICAgICAgLnRoZW4oYXN5bmMgKHJlcykgPT4gew0KICAgICAgICAgICAgdGhpcy5mb3JtVmFsaWRhdGUucGF0aCA9IHJlcy5kYXRhLnBhdGg7DQogICAgICAgICAgICB0aGlzLmZvcm1WYWxpZGF0ZS5wYXRoLnB1c2gocm93LmlkKTsNCiAgICAgICAgICAgIHRoaXMuZm9ybVZhbGlkYXRlLnBpZCA9IHBpZDsNCiAgICAgICAgICAgIHRoaXMuJHJlZnMubWVudXNGcm9tLm1vZGFscyA9IHRydWU7DQogICAgICAgICAgICB0aGlzLiRyZWZzLm1lbnVzRnJvbS52YWxpZHMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGl0bGVGcm9tID0gdGl0bGU7DQogICAgICAgICAgICB0aGlzLmZvcm1WYWxpZGF0ZS5hdXRoX3R5cGUgPSAxOw0KICAgICAgICAgICAgdGhpcy5mb3JtVmFsaWRhdGUuaXNfc2hvdyA9IDA7DQogICAgICAgICAgICB0aGlzLmZvcm1WYWxpZGF0ZS5pc19zaG93X3BhdGggPSAwOw0KICAgICAgICAgIH0pDQogICAgICAgICAgLmNhdGNoKChyZXMpID0+IHsNCiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IocmVzLm1zZyk7DQogICAgICAgICAgfSk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLmZvcm1WYWxpZGF0ZS5waWQgPSBwaWQ7DQogICAgICAgIHRoaXMuJHJlZnMubWVudXNGcm9tLm1vZGFscyA9IHRydWU7DQogICAgICAgIHRoaXMuJHJlZnMubWVudXNGcm9tLnZhbGlkcyA9IGZhbHNlOw0KICAgICAgICB0aGlzLnRpdGxlRnJvbSA9IHRpdGxlOw0KICAgICAgICB0aGlzLmZvcm1WYWxpZGF0ZS5hdXRoX3R5cGUgPSAxOw0KICAgICAgICB0aGlzLmZvcm1WYWxpZGF0ZS5pc19zaG93ID0gMDsNCiAgICAgICAgdGhpcy5mb3JtVmFsaWRhdGUuaXNfc2hvd19wYXRoID0gMDsNCiAgICAgIH0NCiAgICAgIC8vIHRoaXMuZm9ybVZhbGlkYXRlLnBpZCA9IHJvdy5pZC50b1N0cmluZygpOw0KICAgICAgLy8gdGhpcy4kcmVmcy5tZW51c0Zyb20ubW9kYWxzID0gdHJ1ZTsNCiAgICAgIC8vIHRoaXMuJHJlZnMubWVudXNGcm9tLnZhbGlkcyA9IGZhbHNlOw0KICAgICAgLy8gdGhpcy50aXRsZUZyb20gPSB0aXRsZTsNCiAgICAgIC8vIHRoaXMuZm9ybVZhbGlkYXRlLmF1dGhfdHlwZSA9IDE7DQogICAgICAvLyB0aGlzLmZvcm1WYWxpZGF0ZS5pc19zaG93ID0gJzAnOw0KICAgIH0sDQogICAgLy8g5Yig6ZmkDQogICAgZGVsKHJvdywgdGl0KSB7DQogICAgICBsZXQgZGVsZnJvbURhdGEgPSB7DQogICAgICAgIHRpdGxlOiB0aXQsDQogICAgICAgIHVybDogYC9zZXR0aW5nL21lbnVzLyR7cm93LmlkfWAsDQogICAgICAgIG1ldGhvZDogJ0RFTEVURScsDQogICAgICAgIGlkczogJycsDQogICAgICB9Ow0KDQogICAgICB0aGlzLiRtb2RhbFN1cmUoZGVsZnJvbURhdGEpDQogICAgICAgIC50aGVuKChyZXMpID0+IHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MocmVzLm1zZyk7DQogICAgICAgICAgdGhpcy5nZXREYXRhKCk7DQogICAgICAgICAgdGhpcy5nZXRNZW51c1VuaXF1ZSgpOw0KICAgICAgICAgIC8vIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdtZW51cy9nZXRNZW51c05hdkxpc3QnKTsNCiAgICAgICAgfSkNCiAgICAgICAgLmNhdGNoKChyZXMpID0+IHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKHJlcy5tc2cpOw0KICAgICAgICB9KTsNCiAgICB9LA0KICAgIC8vIOinhOWImeivpuaDhQ0KICAgIG1lbnVzRGV0YWlscyhpZCkgew0KICAgICAgbWVudXNEZXRhaWxzQXBpKGlkKQ0KICAgICAgICAudGhlbihhc3luYyAocmVzKSA9PiB7DQogICAgICAgICAgdGhpcy5mb3JtVmFsaWRhdGUgPSByZXMuZGF0YTsNCiAgICAgICAgICB0aGlzLiRyZWZzLm1lbnVzRnJvbS5tb2RhbHMgPSB0cnVlOw0KICAgICAgICB9KQ0KICAgICAgICAuY2F0Y2goKHJlcykgPT4gew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IocmVzLm1zZyk7DQogICAgICAgIH0pOw0KICAgIH0sDQogICAgLy8g57yW6L6RDQogICAgZWRpdChyb3csIHRpdGxlLCBpbmRleCkgew0KICAgICAgdGhpcy5vcGVuSWQgPSByb3cuaWQ7DQogICAgICB0aGlzLmZvcm1WYWxpZGF0ZSA9IHt9Ow0KICAgICAgdGhpcy5tZW51c0RldGFpbHMocm93LmlkKTsNCiAgICAgIHRoaXMudGl0bGVGcm9tID0gdGl0bGU7DQogICAgICB0aGlzLiRyZWZzLm1lbnVzRnJvbS52YWxpZHMgPSBmYWxzZTsNCiAgICAgIHRoaXMuJHJlZnMubWVudXNGcm9tLmdldEFkZEZyb20ocm93LmlkKTsNCiAgICB9LA0KICAgIC8vIOa3u+WKoA0KICAgIG1lbnVzQWRkKHRpdGxlKSB7DQogICAgICB0aGlzLmZvcm1WYWxpZGF0ZSA9IHt9Ow0KICAgICAgdGhpcy4kcmVmcy5tZW51c0Zyb20ubW9kYWxzID0gdHJ1ZTsNCiAgICAgIHRoaXMuJHJlZnMubWVudXNGcm9tLnZhbGlkcyA9IGZhbHNlOw0KICAgICAgLy8gdGhpcy5mb3JtVmFsaWRhdGUgPSBPYmplY3QuYXNzaWduKHRoaXMuJGRhdGEsIHRoaXMuJG9wdGlvbnMuZm9ybVZhbGlkYXRlKCkpOw0KICAgICAgdGhpcy50aXRsZUZyb20gPSB0aXRsZTsNCiAgICAgIHRoaXMuZm9ybVZhbGlkYXRlLmF1dGhfdHlwZSA9IDE7DQogICAgICB0aGlzLmZvcm1WYWxpZGF0ZS5pc19zaG93ID0gMDsNCiAgICAgIHRoaXMuZm9ybVZhbGlkYXRlLmlzX3Nob3dfcGF0aCA9IDA7DQogICAgfSwNCiAgICAvLyDmlrDlop7pobXpnaLooajljZUNCiAgICAvLyBnZXRBZGRGcm9tICgpIHsNCiAgICAvLyAgICAgdGhpcy5zcGluU2hvdyA9IHRydWU7DQogICAgLy8gICAgIGFkZE1lbnVzKHRoaXMucm9sZURhdGEpLnRoZW4oYXN5bmMgcmVzID0+IHsNCiAgICAvLyAgICAgICAgIHRoaXMuRnJvbURhdGEgPSByZXMuZGF0YTsNCiAgICAvLyAgICAgICAgIHRoaXMuJHJlZnMubWVudXNGcm9tLm1vZGFscyA9IHRydWU7DQogICAgLy8gICAgICAgICB0aGlzLnNwaW5TaG93ID0gZmFsc2U7DQogICAgLy8gICAgIH0pLmNhdGNoKHJlcyA9PiB7DQogICAgLy8gICAgICAgICB0aGlzLnNwaW5TaG93ID0gZmFsc2U7DQogICAgLy8gICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKHJlcy5tc2cpOw0KICAgIC8vICAgICB9KQ0KICAgIC8vIH0sDQogICAgLy8g5YiX6KGoDQogICAgZ2V0RGF0YSgpIHsNCiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7DQogICAgICBnZXRUYWJsZSh0aGlzLnJvbGVEYXRhKQ0KICAgICAgICAudGhlbihhc3luYyAocmVzKSA9PiB7DQogICAgICAgICAgdGhpcy50YWJsZURhdGEgPSByZXMuZGF0YTsNCiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsNCiAgICAgICAgfSkNCiAgICAgICAgLmNhdGNoKChyZXMpID0+IHsNCiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKHJlcy5tc2cpOw0KICAgICAgICB9KTsNCiAgICB9LA0KICAgIGNoYW5nZU1lbnUoZGF0YSkgew0KICAgICAgdGhpcy5jaGFuZ2VEYXRhKHRoaXMudGFibGVEYXRhLCBkYXRhKTsNCiAgICAgIHRoaXMuZ2V0TWVudXNVbmlxdWUoKTsNCiAgICB9LA0KICAgIGNoYW5nZURhdGEoYXJyLCBkYXRhKSB7DQogICAgICBsZXQgYXJyS2V5ID0gT2JqZWN0LmtleXMoZGF0YSk7DQogICAgICBhcnIubWFwKChlKSA9PiB7DQogICAgICAgIGlmIChlLmlkID09IHRoaXMub3BlbklkKSB7DQogICAgICAgICAgYXJyS2V5Lm1hcCgoZWwpID0+IHsNCiAgICAgICAgICAgIGVbZWxdID0gZGF0YVtlbF07DQogICAgICAgICAgfSk7DQogICAgICAgIH0gZWxzZSBpZiAoZS5jaGlsZHJlbikgew0KICAgICAgICAgIHRoaXMuY2hhbmdlRGF0YShlLmNoaWxkcmVuLCBkYXRhKTsNCiAgICAgICAgfQ0KICAgICAgfSk7DQogICAgfSwNCiAgICBnZXRNZW51c1VuaXF1ZSgpIHsNCiAgICAgIGdldE1lbnVzVW5pcXVlKCkudGhlbigocmVzKSA9PiB7DQogICAgICAgIGxldCBkYXRhID0gcmVzLmRhdGE7DQogICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgndXNlckluZm8vdW5pcXVlQXV0aCcsIGRhdGEudW5pcXVlQXV0aCk7DQogICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgnbWVudXMvZ2V0bWVudXNOYXYnLCBkYXRhLm1lbnVzKTsNCiAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3JvdXRlc0xpc3Qvc2V0Um91dGVzTGlzdCcsIGRhdGEubWVudXMpOw0KICAgICAgICBsZXQgYXJyID0gZm9ybWF0RmxhdHRlbmluZ1JvdXRlcyh0aGlzLiRyb3V0ZXIub3B0aW9ucy5yb3V0ZXMpOw0KICAgICAgICB0aGlzLmZvcm1hdFR3b1N0YWdlUm91dGVzKGFycik7DQogICAgICAgIGxldCByb3V0ZXMgPSBmb3JtYXRGbGF0dGVuaW5nUm91dGVzKGRhdGEubWVudXMpOw0KICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoJ21lbnVzL3NldE9uZUx2Um91dGUnLCByb3V0ZXMpOw0KICAgICAgICB0aGlzLmJ1cy4kZW1pdCgncm91dGVzTGlzdENoYW5nZScpOw0KICAgICAgfSk7DQogICAgfSwNCiAgICBmb3JtYXRUd29TdGFnZVJvdXRlcyhhcnIpIHsNCiAgICAgIGlmIChhcnIubGVuZ3RoIDw9IDApIHJldHVybiBmYWxzZTsNCiAgICAgIGNvbnN0IG5ld0FyciA9IFtdOw0KICAgICAgY29uc3QgY2FjaGVMaXN0ID0gW107DQogICAgICBhcnIuZm9yRWFjaCgodikgPT4gew0KICAgICAgICBpZiAodiAmJiB2Lm1ldGEgJiYgdi5tZXRhLmtlZXBBbGl2ZSkgew0KICAgICAgICAgIG5ld0Fyci5wdXNoKHsgLi4udiB9KTsNCiAgICAgICAgICBjYWNoZUxpc3QucHVzaCh2Lm5hbWUpOw0KICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdrZWVwQWxpdmVOYW1lcy9zZXRDYWNoZUtlZXBBbGl2ZScsIGNhY2hlTGlzdCk7DQogICAgICAgIH0NCiAgICAgIH0pOw0KICAgICAgcmV0dXJuIG5ld0FycjsNCiAgICB9LA0KICAgIC8vIOWFs+mXreaMiemSrg0KICAgIGNhbmNlbCgpIHsNCiAgICAgIHRoaXMuJGVtaXQoJ29uQ2FuY2VsJyk7DQogICAgfSwNCiAgfSwNCn07DQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";AAuIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;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;;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","file":"index.vue","sourceRoot":"src/pages/setting/systemMenus","sourcesContent":["<template>\r\n <div>\r\n <el-card :bordered=\"false\" shadow=\"never\" class=\"ivu-mb-16\" :body-style=\"{ padding: 0 }\">\r\n <div class=\"padding-add\">\r\n <el-form\r\n ref=\"roleData\"\r\n :model=\"roleData\"\r\n :label-width=\"labelWidth\"\r\n :label-position=\"labelPosition\"\r\n @submit.native.prevent\r\n inline\r\n >\r\n <el-form-item label=\"按钮名称:\" prop=\"status2\" label-for=\"status2\">\r\n <el-input clearable v-model=\"roleData.keyword\" placeholder=\"请输入按钮名称\" class=\"form_content_width\" />\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button type=\"primary\" v-db-click @click=\"getData\">查询</el-button>\r\n </el-form-item>\r\n <!-- <el-row >\r\n <el-col v-bind=\"grid\">\r\n <el-button type=\"primary\" v-db-click @click=\"menusAdd('添加规则')\">添加规则 </el-button>\r\n </el-col>\r\n </el-row> -->\r\n </el-form>\r\n </div>\r\n </el-card>\r\n <el-card :bordered=\"false\" shadow=\"never\" class=\"ivu-mt\">\r\n <vxe-table\r\n :border=\"false\"\r\n class=\"vxeTable\"\r\n highlight-hover-row\r\n highlight-current-row\r\n :loading=\"loading\"\r\n ref=\"xTable\"\r\n header-row-class-name=\"false\"\r\n :tree-config=\"tabconfig\"\r\n :data=\"tableData\"\r\n row-id=\"id\"\r\n >\r\n <vxe-table-column field=\"menu_name\" tree-node title=\"按钮名称\" min-width=\"100\"></vxe-table-column>\r\n <vxe-table-column field=\"menu_path\" title=\"类型\" min-width=\"240\" tooltip=\"true\">\r\n <template v-slot=\"{ row }\">\r\n <span v-if=\"row.auth_type == 1\">菜单:{{ row.menu_path }}</span>\r\n <span v-if=\"row.auth_type == 3\">按钮</span>\r\n <span v-if=\"row.auth_type == 2\">数据权限</span>\r\n </template>\r\n </vxe-table-column>\r\n <vxe-table-column field=\"sort\" title=\"排序\" width=\"150\"></vxe-table-column>\r\n <vxe-table-column field=\"flag\" title=\"是否显示\" width=\"150\">\r\n <template v-slot=\"{ row }\">\r\n <el-switch\r\n :active-value=\"1\"\r\n :inactive-value=\"0\"\r\n v-model=\"row.is_show_path\"\r\n :value=\"row.is_show_path\"\r\n @change=\"onchangeIsShow(row)\"\r\n size=\"large\"\r\n >\r\n </el-switch>\r\n </template>\r\n </vxe-table-column>\r\n <vxe-table-column field=\"date\" title=\"操作\" align=\"center\" width=\"150\" fixed=\"right\">\r\n <template v-slot=\"{ row }\">\r\n <a v-db-click @click=\"edit(row, '编辑')\">编辑</a>\r\n </template>\r\n </vxe-table-column>\r\n </vxe-table>\r\n </el-card>\r\n <menus-from\r\n :formValidate=\"formValidate\"\r\n :titleFrom=\"titleFrom\"\r\n @getList=\"getList\"\r\n @changeMenu=\"changeMenu\"\r\n ref=\"menusFrom\"\r\n @clearFrom=\"clearFrom\"\r\n ></menus-from>\r\n <el-dialog :visible.sync=\"ruleModal\" width=\"1100px\" title=\"权限列表\" @closed=\"modalchange\">\r\n <div class=\"search-rule\">\r\n <el-alert\r\n title=\"基础接口,可多选,并且添加后不会再展示出现;删除权限后才会出现;公共接口,可多选,并且添加后会继续展示;\"\r\n ></el-alert>\r\n <el-input\r\n class=\"mr10\"\r\n v-model=\"searchRule\"\r\n placeholder=\"输入关键词搜索\"\r\n clearable\r\n style=\"width: 300px\"\r\n ref=\"search\"\r\n @on-enter=\"searchRules\"\r\n @on-clear=\"searchRules\"\r\n />\r\n <el-button type=\"primary\" v-db-click @click=\"searchRules\">搜索</el-button>\r\n <el-button v-db-click @click=\"init\">重置</el-button>\r\n </div>\r\n <div class=\"route-list\">\r\n <div class=\"tree\">\r\n <el-tree\r\n ref=\"treeBox\"\r\n :data=\"ruleCateList\"\r\n :highlight-current=\"true\"\r\n :props=\"defaultProps\"\r\n node-key=\"id\"\r\n :default-expanded-keys=\"expandedKeys\"\r\n :current-node-key=\"nodeKey\"\r\n @node-click=\"handleNodeClick\"\r\n ></el-tree>\r\n </div>\r\n <div class=\"rule\">\r\n <div\r\n class=\"rule-list\"\r\n v-show=\"!arrs.length || arrs.includes(item.id)\"\r\n :class=\"{ 'select-rule': seletRouteIds.includes(item.id) }\"\r\n v-for=\"(item, index) in children\"\r\n :key=\"index\"\r\n v-db-click\r\n @click=\"selectRule(item)\"\r\n >\r\n <div>接口名称:{{ item.name }}</div>\r\n <div>请求方式:{{ item.method }}</div>\r\n <div>接口地址:{{ item.path }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <el-tabs v-model=\"routeType\" @on-click=\"changTab\">\r\n <el-tab-pane :label=\"item.name\" :name=\"'' + index\" v-for=\"(item, index) in foundationList\" :key=\"item\"></el-tab-pane>\r\n </el-tabs> -->\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button v-db-click @click=\"ruleModal = false\">取 消</el-button>\r\n <el-button type=\"primary\" v-db-click @click=\"addRouters\">确 定</el-button>\r\n </span>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapState } from 'vuex';\r\nimport {\r\n getTable,\r\n menusDetailsApi,\r\n isShowApi,\r\n editMenus,\r\n getRuleList,\r\n menusBatch,\r\n getMenusUnique,\r\n menusRuleCate,\r\n} from '@/api/systemMenus';\r\nimport formCreate from '@form-create/element-ui';\r\nimport menusFrom from './components/menusFrom';\r\nimport { formatFlatteningRoutes, findFirstNonNullChildren, findFirstNonNullChildrenKeys } from '@/libs/system';\r\n\r\nexport default {\r\n name: 'systemMenus',\r\n data() {\r\n return {\r\n children: [],\r\n expandedKeys: [],\r\n tabconfig: { children: 'children', reserve: true, accordion: true },\r\n spinShow: false,\r\n ruleModal: false,\r\n searchRule: '',\r\n grid: {\r\n xl: 7,\r\n lg: 7,\r\n md: 12,\r\n sm: 24,\r\n xs: 24,\r\n },\r\n roleData: {\r\n is_show: 1,\r\n keyword: '',\r\n // auth_type: 3,\r\n },\r\n defaultProps: {\r\n children: 'children',\r\n label: 'name',\r\n },\r\n ruleCateList: [], //权限树\r\n loading: false,\r\n tableData: [],\r\n FromData: null,\r\n icons: '',\r\n formValidate: {},\r\n titleFrom: '',\r\n modalTitleSs: '',\r\n routeType: '0',\r\n arrs: [],\r\n foundationList: [], // 基础接口列表\r\n openList: [], // 公开接口列表\r\n seletRoute: [], // 选中路由\r\n seletRouteIds: [], // 选中id\r\n menusId: 0, // 选中分类id\r\n nodeKey: 0, // 选中节点\r\n openId: '',\r\n };\r\n },\r\n components: { menusFrom, formCreate: formCreate.$form() },\r\n computed: {\r\n ...mapState('admin/layout', ['isMobile']),\r\n labelWidth() {\r\n return this.isMobile ? undefined : '80px';\r\n },\r\n labelPosition() {\r\n return this.isMobile ? 'top' : 'right';\r\n },\r\n },\r\n mounted() {\r\n this.getData();\r\n },\r\n methods: {\r\n init() {\r\n this.searchRule = '';\r\n this.searchRules();\r\n },\r\n addRouters() {\r\n let data = {\r\n menus: this.seletRoute,\r\n };\r\n menusBatch(data)\r\n .then((res) => {\r\n this.getData();\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n selectRule(data) {\r\n if (this.seletRouteIds.includes(data.id)) {\r\n let i = this.seletRouteIds.findIndex((e) => e == data.id);\r\n this.seletRouteIds.splice(i, 1);\r\n this.seletRoute.splice(i, 1);\r\n } else {\r\n this.seletRouteIds.push(data.id);\r\n this.seletRoute.push({\r\n menu_name: data.name,\r\n unique_auth: '',\r\n api_url: data.path,\r\n path: this.menusId,\r\n method: data.method,\r\n });\r\n }\r\n },\r\n changTab(name) {\r\n this.routeType = name;\r\n let index = parseInt(name);\r\n this.children = this.foundationList[index] ? this.foundationList[index].children : [];\r\n this.searchRules();\r\n },\r\n // 搜索规则\r\n searchRules() {\r\n if (this.searchRule.trim()) {\r\n this.arrs = [];\r\n let arr = this.foundationList;\r\n for (var i = 0; i < arr.length; i++) {\r\n if (arr[i].name.indexOf(this.searchRule) !== -1) {\r\n this.arrs.push(arr[i].id);\r\n }\r\n }\r\n } else {\r\n this.arrs = [];\r\n }\r\n },\r\n addRoute(row) {\r\n this.menusId = row.id;\r\n this.routeType = '0';\r\n // this.getRuleList();\r\n menusRuleCate().then((res) => {\r\n this.ruleCateList = res.data;\r\n this.ruleModal = true;\r\n if (res.data.length) {\r\n this.$nextTick((e) => {\r\n this.expandedKeys = findFirstNonNullChildrenKeys(res.data[0], []);\r\n this.nodeKey = findFirstNonNullChildren(res.data).id;\r\n this.$refs.treeBox.setCurrentKey(this.nodeKey);\r\n this.getRuleList(this.nodeKey);\r\n });\r\n }\r\n });\r\n },\r\n handleNodeClick(data) {\r\n this.getRuleList(data.id);\r\n },\r\n modalchange() {\r\n this.seletRouteIds = [];\r\n this.seletRoute = [];\r\n },\r\n // 获取权限列表\r\n getRuleList(cate_id) {\r\n getRuleList(cate_id).then((res) => {\r\n this.foundationList = res.data;\r\n this.children = res.data;\r\n this.searchRules();\r\n\r\n // this.openList = [];\r\n // this.seletRouteIds = [];\r\n // this.seletRoute = [];\r\n });\r\n },\r\n // 修改规则状态\r\n onchangeIsShow(row) {\r\n let data = {\r\n id: row.id,\r\n is_show_path: row.is_show_path,\r\n is_show: -1,\r\n };\r\n isShowApi(data)\r\n .then(async (res) => {\r\n this.$message.success(res.msg);\r\n this.$store.dispatch('menus/getMenusNavList');\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n // 请求列表\r\n getList() {\r\n this.formValidate = Object.assign({}, this.$options.data().formValidate);\r\n this.getData();\r\n },\r\n\r\n // 清除表单数据\r\n clearFrom() {\r\n this.formValidate = Object.assign({}, this.$options.data().formValidate);\r\n },\r\n // 添加子菜单\r\n addE(row, title) {\r\n this.formValidate = {};\r\n let pid = row.id.toString();\r\n if (pid) {\r\n menusDetailsApi(row.id)\r\n .then(async (res) => {\r\n this.formValidate.path = res.data.path;\r\n this.formValidate.path.push(row.id);\r\n this.formValidate.pid = pid;\r\n this.$refs.menusFrom.modals = true;\r\n this.$refs.menusFrom.valids = false;\r\n this.titleFrom = title;\r\n this.formValidate.auth_type = 1;\r\n this.formValidate.is_show = 0;\r\n this.formValidate.is_show_path = 0;\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n });\r\n } else {\r\n this.formValidate.pid = pid;\r\n this.$refs.menusFrom.modals = true;\r\n this.$refs.menusFrom.valids = false;\r\n this.titleFrom = title;\r\n this.formValidate.auth_type = 1;\r\n this.formValidate.is_show = 0;\r\n this.formValidate.is_show_path = 0;\r\n }\r\n // this.formValidate.pid = row.id.toString();\r\n // this.$refs.menusFrom.modals = true;\r\n // this.$refs.menusFrom.valids = false;\r\n // this.titleFrom = title;\r\n // this.formValidate.auth_type = 1;\r\n // this.formValidate.is_show = '0';\r\n },\r\n // 删除\r\n del(row, tit) {\r\n let delfromData = {\r\n title: tit,\r\n url: `/setting/menus/${row.id}`,\r\n method: 'DELETE',\r\n ids: '',\r\n };\r\n\r\n this.$modalSure(delfromData)\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n this.getData();\r\n this.getMenusUnique();\r\n // this.$store.dispatch('menus/getMenusNavList');\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n // 规则详情\r\n menusDetails(id) {\r\n menusDetailsApi(id)\r\n .then(async (res) => {\r\n this.formValidate = res.data;\r\n this.$refs.menusFrom.modals = true;\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n // 编辑\r\n edit(row, title, index) {\r\n this.openId = row.id;\r\n this.formValidate = {};\r\n this.menusDetails(row.id);\r\n this.titleFrom = title;\r\n this.$refs.menusFrom.valids = false;\r\n this.$refs.menusFrom.getAddFrom(row.id);\r\n },\r\n // 添加\r\n menusAdd(title) {\r\n this.formValidate = {};\r\n this.$refs.menusFrom.modals = true;\r\n this.$refs.menusFrom.valids = false;\r\n // this.formValidate = Object.assign(this.$data, this.$options.formValidate());\r\n this.titleFrom = title;\r\n this.formValidate.auth_type = 1;\r\n this.formValidate.is_show = 0;\r\n this.formValidate.is_show_path = 0;\r\n },\r\n // 新增页面表单\r\n // getAddFrom () {\r\n // this.spinShow = true;\r\n // addMenus(this.roleData).then(async res => {\r\n // this.FromData = res.data;\r\n // this.$refs.menusFrom.modals = true;\r\n // this.spinShow = false;\r\n // }).catch(res => {\r\n // this.spinShow = false;\r\n // this.$message.error(res.msg);\r\n // })\r\n // },\r\n // 列表\r\n getData() {\r\n this.loading = true;\r\n getTable(this.roleData)\r\n .then(async (res) => {\r\n this.tableData = res.data;\r\n this.loading = false;\r\n })\r\n .catch((res) => {\r\n this.loading = false;\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n changeMenu(data) {\r\n this.changeData(this.tableData, data);\r\n this.getMenusUnique();\r\n },\r\n changeData(arr, data) {\r\n let arrKey = Object.keys(data);\r\n arr.map((e) => {\r\n if (e.id == this.openId) {\r\n arrKey.map((el) => {\r\n e[el] = data[el];\r\n });\r\n } else if (e.children) {\r\n this.changeData(e.children, data);\r\n }\r\n });\r\n },\r\n getMenusUnique() {\r\n getMenusUnique().then((res) => {\r\n let data = res.data;\r\n this.$store.commit('userInfo/uniqueAuth', data.uniqueAuth);\r\n this.$store.commit('menus/getmenusNav', data.menus);\r\n this.$store.dispatch('routesList/setRoutesList', data.menus);\r\n let arr = formatFlatteningRoutes(this.$router.options.routes);\r\n this.formatTwoStageRoutes(arr);\r\n let routes = formatFlatteningRoutes(data.menus);\r\n this.$store.commit('menus/setOneLvRoute', routes);\r\n this.bus.$emit('routesListChange');\r\n });\r\n },\r\n formatTwoStageRoutes(arr) {\r\n if (arr.length <= 0) return false;\r\n const newArr = [];\r\n const cacheList = [];\r\n arr.forEach((v) => {\r\n if (v && v.meta && v.meta.keepAlive) {\r\n newArr.push({ ...v });\r\n cacheList.push(v.name);\r\n this.$store.dispatch('keepAliveNames/setCacheKeepAlive', cacheList);\r\n }\r\n });\r\n return newArr;\r\n },\r\n // 关闭按钮\r\n cancel() {\r\n this.$emit('onCancel');\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.vxeTable {\r\n > .vxe-table--header-wrapper {\r\n background: #fff !important;\r\n }\r\n\r\n .icon {\r\n font-size: 20px;\r\n }\r\n}\r\n::v-deep .vxe-table--render-default .vxe-table--border-line {\r\n z-index: 2 !important;\r\n}\r\n.rule {\r\n display: flex;\r\n flex-wrap: wrap;\r\n overflow-y: scroll;\r\n height: max-content;\r\n max-height: 600px;\r\n flex: 1;\r\n}\r\n.tree::-webkit-scrollbar {\r\n width: 2px;\r\n background-color: #f5f5f5;\r\n}\r\n/*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/\r\n.rule::-webkit-scrollbar {\r\n width: 10px;\r\n height: 10px;\r\n background-color: #f5f5f5;\r\n}\r\n\r\n/*定义滚动条轨道 内阴影+圆角*/\r\n.rule::-webkit-scrollbar-track {\r\n border-radius: 4px;\r\n background-color: #f5f5f5;\r\n}\r\n\r\n/*定义滑块 内阴影+圆角*/\r\n.rule::-webkit-scrollbar-thumb {\r\n border-radius: 4px;\r\n background-color: #ccc;\r\n}\r\n\r\n.rule-list {\r\n background-color: #f2f2f2;\r\n width: 48.5%;\r\n height: max-content;\r\n margin: 5px;\r\n border-radius: 3px;\r\n padding: 10px;\r\n color: #333;\r\n cursor: pointer;\r\n transition: all 0.1s;\r\n}\r\n\r\n.rule-list:hover {\r\n background-color: #badbfb;\r\n}\r\n\r\n.rule-list div {\r\n white-space: nowrap;\r\n}\r\n\r\n.select-rule {\r\n background-color: #badbfb;\r\n}\r\n.route-list {\r\n display: flex;\r\n margin-top: 10px;\r\n\r\n .tree {\r\n width: 200px;\r\n overflow-y: scroll;\r\n max-height: 600px;\r\n ::v-deep .el-tree-node__children .el-tree-node .el-tree-node__content {\r\n padding-left: 14px !important;\r\n }\r\n }\r\n}\r\n</style>\r\n"]}]}