| 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\\account\\login\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\pages\\account\\login\\index.vue","mtime":1761185180068},{"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:DQppbXBvcnQgeyBBY2NvdW50TG9naW4sIGxvZ2luSW5mb0FwaSB9IGZyb20gJ0AvYXBpL2FjY291bnQnOw0KaW1wb3J0IHsgZ2V0V29ya2VybWFuVXJsIH0gZnJvbSAnQC9hcGkva2VmdSc7DQppbXBvcnQgeyBzZXRDb29raWVzIH0gZnJvbSAnQC9saWJzL3V0aWwnOw0KaW1wb3J0ICdAL2Fzc2V0cy9qcy9jYW52YXMtbmVzdC5taW4nOw0KaW1wb3J0IFZlcmlmeSBmcm9tICdAL2NvbXBvbmVudHMvdmVyaWZpdGlvbi9WZXJpZnknOw0KaW1wb3J0IHsgUHJldkxvYWRpbmcgfSBmcm9tICdAL3V0aWxzL2xvYWRpbmcuanMnOw0KaW1wb3J0IHsgZm9ybWF0RmxhdHRlbmluZ1JvdXRlcywgZmluZEZpcnN0Tm9uTnVsbENoaWxkcmVuIH0gZnJvbSAnQC9saWJzL3N5c3RlbSc7DQppbXBvcnQgeyBMb2NhbCB9IGZyb20gJ0AvdXRpbHMvc3RvcmFnZS5qcyc7DQoNCmV4cG9ydCBkZWZhdWx0IHsNCiAgY29tcG9uZW50czogew0KICAgIFZlcmlmeSwNCiAgfSwNCiAgZGF0YSgpIHsNCiAgICByZXR1cm4gew0KICAgICAgZnVsbFdpZHRoOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgsDQogICAgICBzd2lwZXJPcHRpb246IHsNCiAgICAgICAgcGFnaW5hdGlvbjogJy5zd2lwZXItcGFnaW5hdGlvbicsDQogICAgICAgIGF1dG9wbGF5OiB0cnVlLA0KICAgICAgfSwNCiAgICAgIGxvYWRpbmc6IGZhbHNlLA0KICAgICAgaXNTaG93OiBmYWxzZSwNCiAgICAgIGltZ2NvZGU6ICcnLA0KICAgICAgZm9ybUlubGluZTogew0KICAgICAgICB1c2VybmFtZTogJycsDQogICAgICAgIHBhc3N3b3JkOiAnJywNCiAgICAgIH0sDQogICAgICBydWxlSW5saW5lOiB7DQogICAgICAgIHVzZXJuYW1lOiBbeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogJ+ivt+i+k+WFpeeUqOaIt+WQjScsIHRyaWdnZXI6ICdibHVyJyB9XSwNCiAgICAgICAgcGFzc3dvcmQ6IFt7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAn6K+36L6T5YWl5a+G56CBJywgdHJpZ2dlcjogJ2JsdXInIH1dLA0KICAgICAgfSwNCiAgICAgIGxvZ2luX2NhcHRjaGE6IDAsDQogICAgICBsb2dpbl9sb2dvOiAnJywNCiAgICAgIHN3aXBlckxpc3Q6IFtdLA0KICAgICAgZGVmYXVsdFN3aXBlckxpc3Q6IHJlcXVpcmUoJ0AvYXNzZXRzL2ltYWdlcy9zdy5wbmcnKSwNCiAgICAgIGtleTogJycsDQogICAgICBjb3B5cmlnaHQ6ICcnLA0KICAgICAgdmVyc2lvbjogJycsDQogICAgICB0aW1lcjogbnVsbCwNCiAgICB9Ow0KICB9LA0KICBjcmVhdGVkKCkgew0KICAgIGRvY3VtZW50Lm9ua2V5ZG93biA9IChlKSA9PiB7DQogICAgICBpZiAodGhpcy4kcm91dGUubmFtZSA9PT0gJ2xvZ2luJyAmJiAoZS5rZXlDb2RlID09PSAxMyB8fCBlLndoaWNoID09PSAxMykpIHsNCiAgICAgICAgdGhpcy5oYW5kbGVTdWJtaXQoJ2Zvcm1JbmxpbmUnKTsNCiAgICAgIH0NCiAgICB9Ow0KICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmhhbmRsZVJlc2l6ZSk7DQogIH0sDQogIG1vdW50ZWQoKSB7DQogICAgdGhpcy4kbmV4dFRpY2soKCkgPT4gew0KICAgICAgdGhpcy5oYW5kbGVSZXNpemUoKTsNCiAgICAgIHRoaXMuc3dpcGVyRGF0YSgpOw0KICAgIH0pOw0KICB9LA0KICBiZWZvcmVEZXN0cm95KCkgew0KICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmhhbmRsZVJlc2l6ZSk7DQogICAgZG9jdW1lbnQub25rZXlkb3duID0gbnVsbDsNCiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnY2FudmFzJylbMF07DQogICAgaWYgKGNhbnZhcykgY2FudmFzLnJlbW92ZUF0dHJpYnV0ZSgnY2xhc3MnLCAnaW5kZXhfYmcnKTsNCiAgfSwNCiAgbWV0aG9kczogew0KICAgIHN3aXBlckRhdGEoKSB7DQogICAgICBsb2dpbkluZm9BcGkoKQ0KICAgICAgICAudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgY29uc3QgZGF0YSA9IHJlcy5kYXRhIHx8IHt9Ow0KICAgICAgICAgIGRvY3VtZW50LnRpdGxlID0gYCR7ZGF0YS5zaXRlX25hbWV9IC0g55m75b2VYDsNCiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQURNSU5fVElUTEUnLCBkYXRhLnNpdGVfbmFtZSB8fCAnJyk7DQogICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCdzZXRBZG1pblRpdGxlJywgZGF0YS5zaXRlX25hbWUpOw0KICAgICAgICAgIHRoaXMubG9naW5fbG9nbyA9IGRhdGEubG9naW5fbG9nbyB8fCByZXF1aXJlKCdAL2Fzc2V0cy9pbWFnZXMvbG9nby5wbmcnKTsNCiAgICAgICAgICB0aGlzLnN3aXBlckxpc3QgPSBkYXRhLnNsaWRlICYmIGRhdGEuc2xpZGUubGVuZ3RoID8gZGF0YS5zbGlkZSA6IFt7IHNsaWRlOiB0aGlzLmRlZmF1bHRTd2lwZXJMaXN0IH1dOw0KICAgICAgICAgIHRoaXMua2V5ID0gZGF0YS5rZXk7DQogICAgICAgICAgdGhpcy5jb3B5cmlnaHQgPSBkYXRhLmNvcHlyaWdodDsNCiAgICAgICAgICB0aGlzLnZlcnNpb24gPSBkYXRhLnZlcnNpb247DQogICAgICAgICAgdGhpcy5sb2dpbl9jYXB0Y2hhID0gZGF0YS5sb2dpbl9jYXB0Y2hhOw0KICAgICAgICB9KQ0KICAgICAgICAuY2F0Y2goKGVycikgPT4gew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZXJyKTsNCiAgICAgICAgICB0aGlzLmxvZ2luX2xvZ28gPSByZXF1aXJlKCdAL2Fzc2V0cy9pbWFnZXMvbG9nby5wbmcnKTsNCiAgICAgICAgICB0aGlzLnN3aXBlckxpc3QgPSBbeyBzbGlkZTogdGhpcy5kZWZhdWx0U3dpcGVyTGlzdCB9XTsNCiAgICAgICAgfSk7DQogICAgfSwNCiAgICBzdWNjZXNzKHBhcmFtcykgew0KICAgICAgdGhpcy5jbG9zZU1vZGVsKHBhcmFtcyk7DQogICAgfSwNCiAgICBjbG9zZU1vZGVsKHBhcmFtcykgew0KICAgICAgdGhpcy5pc1Nob3cgPSBmYWxzZTsNCiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7DQogICAgICBBY2NvdW50TG9naW4oew0KICAgICAgICBhY2NvdW50OiB0aGlzLmZvcm1JbmxpbmUudXNlcm5hbWUsDQogICAgICAgIHB3ZDogdGhpcy5mb3JtSW5saW5lLnBhc3N3b3JkLA0KICAgICAgICBrZXk6IHRoaXMua2V5LA0KICAgICAgICBjYXB0Y2hhVHlwZTogJ2Jsb2NrUHV6emxlJywNCiAgICAgICAgY2FwdGNoYVZlcmlmaWNhdGlvbjogcGFyYW1zID8gcGFyYW1zLmNhcHRjaGFWZXJpZmljYXRpb24gOiAnJywNCiAgICAgIH0pDQogICAgICAgIC50aGVuKGFzeW5jIChyZXMpID0+IHsNCiAgICAgICAgICBjb25zdCBkYXRhID0gcmVzLmRhdGE7DQogICAgICAgICAgY29uc3QgZXhwaXJlcyA9IHRoaXMuZ2V0RXhwaXJlc1RpbWUoZGF0YS5leHBpcmVzX3RpbWUpOw0KICAgICAgICAgIHNldENvb2tpZXMoJ3V1aWQnLCBkYXRhLnVzZXJfaW5mby5pZCwgZXhwaXJlcyk7DQogICAgICAgICAgc2V0Q29va2llcygndG9rZW4nLCBkYXRhLnRva2VuLCBleHBpcmVzKTsNCiAgICAgICAgICBzZXRDb29raWVzKCdleHBpcmVzX3RpbWUnLCBkYXRhLmV4cGlyZXNfdGltZSwgZXhwaXJlcyk7DQogICAgICAgICAgTG9jYWwuc2V0KCdQRVJNSVNTSU9OUycsIGRhdGEuc2l0ZV9mdW5jKTsNCiAgICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoJ3VzZXJJbmZvL3VuaXF1ZUF1dGgnLCBkYXRhLnVuaXF1ZV9hdXRoKTsNCiAgICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoJ3VzZXJJbmZvL3VzZXJJbmZvJywgZGF0YS51c2VyX2luZm8pOw0KICAgICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgnbWVudXMvc2V0b3Blbk1lbnVzJywgW10pOw0KICAgICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgnbWVudXMvZ2V0bWVudXNOYXYnLCBkYXRhLm1lbnVzKTsNCiAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgncm91dGVzTGlzdC9zZXRSb3V0ZXNMaXN0JywgZGF0YS5tZW51cyk7DQogICAgICAgICAgY29uc3QgYXJyID0gZm9ybWF0RmxhdHRlbmluZ1JvdXRlcyh0aGlzLiRyb3V0ZXIub3B0aW9ucy5yb3V0ZXMpOw0KICAgICAgICAgIHRoaXMuZm9ybWF0VHdvU3RhZ2VSb3V0ZXMoYXJyKTsNCiAgICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoJ21lbnVzL3NldE9uZUx2TWVudXMnLCBhcnIpOw0KICAgICAgICAgIGNvbnN0IHJvdXRlcyA9IGZvcm1hdEZsYXR0ZW5pbmdSb3V0ZXMoZGF0YS5tZW51cyk7DQogICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCdtZW51cy9zZXRPbmVMdlJvdXRlJywgcm91dGVzKTsNCiAgICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoJ3VzZXJJbmZvL25hbWUnLCBkYXRhLnVzZXJfaW5mby5hY2NvdW50KTsNCiAgICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoJ3VzZXJJbmZvL2F2YXRhcicsIGRhdGEudXNlcl9pbmZvLmhlYWRfcGljKTsNCiAgICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoJ3VzZXJJbmZvL2FjY2VzcycsIGRhdGEudW5pcXVlX2F1dGgpOw0KICAgICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgndXNlckluZm8vbG9nbycsIGRhdGEubG9nbyk7DQogICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCd1c2VySW5mby9sb2dvU21hbGwnLCBkYXRhLmxvZ29fc3F1YXJlKTsNCiAgICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoJ3VzZXJJbmZvL3ZlcnNpb24nLCBkYXRhLnZlcnNpb24pOw0KICAgICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgndXNlckluZm8vbmV3T3JkZXJBdWRpb0xpbmsnLCBkYXRhLm5ld09yZGVyQXVkaW9MaW5rKTsNCiAgICAgICAgICB0aGlzLmxvZ2luX2NhcHRjaGEgPSAwOw0KICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICBpZiAoZGF0YS5xdWV1ZSA9PT0gZmFsc2UpIHsNCiAgICAgICAgICAgICAgdGhpcy4kbm90aWZ5Lndhcm5pbmcoew0KICAgICAgICAgICAgICAgIHRpdGxlOiAn5rip6aao5o+Q56S6JywNCiAgICAgICAgICAgICAgICBkYW5nZXJvdXNseVVzZUhUTUxTdHJpbmc6IHRydWUsDQogICAgICAgICAgICAgICAgbWVzc2FnZToNCiAgICAgICAgICAgICAgICAgICfmgqjnmoTjgJDmtojmga/pmJ/liJfjgJHmnKrlvIDlkK/vvIzmsqHmnInlvIDlkK/kvJrlr7zoh7TlvILmraXku7vliqHml6Dms5XmiafooYzjgILor7flsL3lv6vmiafooYzlkb3ku6TlvIDlkK/vvIHvvIE8YSBocmVmPSJodHRwczovL2RvYy5jcm1lYi5jb20vc2luZ2xlL3Y1NC8xMzY2NyIgdGFyZ2V0PSJfYmxhbmsiPueCueWHu+afpeeci+W8gOWQr+aWueazlTwvYT4nLA0KICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwMCwNCiAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoZGF0YS50aW1lciA9PT0gZmFsc2UpIHsNCiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7DQogICAgICAgICAgICAgICAgdGhpcy4kbm90aWZ5Lndhcm5pbmcoew0KICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmuKnppqjmj5DnpLonLA0KICAgICAgICAgICAgICAgICAgZGFuZ2Vyb3VzbHlVc2VIVE1MU3RyaW5nOiB0cnVlLA0KICAgICAgICAgICAgICAgICAgbWVzc2FnZToNCiAgICAgICAgICAgICAgICAgICAgJ+aCqOeahOOAkOWumuaXtuS7u+WKoeOAkeacquW8gOWQr++8jOayoeacieW8gOWQr+S8muWvvOiHtOiHquWKqOaUtui0p+OAgeacquaUr+S7mOiHquWKqOWPlua2iOiuouWNleOAgeiuouWNleiHquWKqOWlveivhOOAgeaLvOWbouWIsOacn+mAgOasvuetieS7u+WKoeaXoOazleato+W4uOaJp+ihjOOAguivt+WwveW/q+aJp+ihjOWRveS7pOW8gOWQr++8ge+8gTxhIGhyZWY9Imh0dHBzOi8vZG9jLmNybWViLmNvbS9zaW5nbGUvdjU0LzEzNjY3IiB0YXJnZXQ9Il9ibGFuayI+54K55Ye75p+l55yL5byA5ZCv5pa55rOVPC9hPicsDQogICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMzAwMDAsDQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgIH0sIDApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdGhpcy5jaGVja1NvY2tldCgpOw0KICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9DQogICAgICAgICAgUHJldkxvYWRpbmcuc3RhcnQoKTsNCiAgICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7DQogICAgICAgICAgICBwYXRoOiBkYXRhLm1lbnVzLmxlbmd0aCA/IGZpbmRGaXJzdE5vbk51bGxDaGlsZHJlbihkYXRhLm1lbnVzKS5wYXRoIDogdGhpcy4kcm91dGVQcm9TdHIgKyAnLycsDQogICAgICAgICAgfSk7DQogICAgICAgIH0pDQogICAgICAgIC5jYXRjaCgocmVzKSA9PiB7DQogICAgICAgICAgY29uc3QgZGF0YSA9IHJlcyB8fCB7fTsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKGRhdGEubXNnIHx8ICfnmbvlvZXlpLHotKUnKTsNCiAgICAgICAgICBpZiAocmVzICYmIHJlcy5kYXRhKSB0aGlzLmxvZ2luX2NhcHRjaGEgPSByZXMuZGF0YS5sb2dpbl9jYXB0Y2hhOw0KICAgICAgICB9KQ0KICAgICAgICAuZmluYWxseSgoKSA9PiB7DQogICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7DQogICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsNCiAgICAgICAgICB9LCAxMDAwKTsNCiAgICAgICAgfSk7DQogICAgfSwNCiAgICBmb3JtYXRUd29TdGFnZVJvdXRlcyhhcnIpIHsNCiAgICAgIGlmICghYXJyLmxlbmd0aCkgcmV0dXJuIGZhbHNlOw0KICAgICAgY29uc3QgY2FjaGVMaXN0ID0gW107DQogICAgICBhcnIuZm9yRWFjaCgodikgPT4gew0KICAgICAgICBpZiAodiAmJiB2Lm1ldGEgJiYgdi5tZXRhLmtlZXBBbGl2ZSkgew0KICAgICAgICAgIGNhY2hlTGlzdC5wdXNoKHYubmFtZSk7DQogICAgICAgIH0NCiAgICAgIH0pOw0KICAgICAgaWYgKGNhY2hlTGlzdC5sZW5ndGgpIHsNCiAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2tlZXBBbGl2ZU5hbWVzL3NldENhY2hlS2VlcEFsaXZlJywgY2FjaGVMaXN0KTsNCiAgICAgIH0NCiAgICB9LA0KICAgIGNoZWNrU29ja2V0KCkgew0KICAgICAgZ2V0V29ya2VybWFuVXJsKCkudGhlbigocmVzKSA9PiB7DQogICAgICAgIGNvbnN0IHVybCA9IHJlcy5kYXRhLmFkbWluOw0KICAgICAgICBsZXQgaXNOb3RpY2UgPSBmYWxzZTsNCiAgICAgICAgY29uc3Qgc29ja2V0ID0gbmV3IHdpbmRvdy5XZWJTb2NrZXQodXJsKTsNCiAgICAgICAgc29ja2V0Lm9ub3BlbiA9ICgpID0+IHsNCiAgICAgICAgICBpc05vdGljZSA9IHRydWU7DQogICAgICAgICAgc29ja2V0LmNsb3NlKCk7DQogICAgICAgIH07DQogICAgICAgIHNvY2tldC5vbmVycm9yID0gc29ja2V0Lm9uY2xvc2UgPSAoKSA9PiB7DQogICAgICAgICAgaWYgKCFpc05vdGljZSkgew0KICAgICAgICAgICAgaXNOb3RpY2UgPSB0cnVlOw0KICAgICAgICAgICAgdGhpcy4kbm90aWZ5Lndhcm5pbmcoew0KICAgICAgICAgICAgICB0aXRsZTogJ+a4qemmqOaPkOekuicsDQogICAgICAgICAgICAgIG1lc3NhZ2U6DQogICAgICAgICAgICAgICAgJ+aCqOeahOOAkOmVv+i/nuaOpeOAkeacquW8gOWQr++8jOayoeacieW8gOWQr+S8muWvvOiHtOezu+e7n+m7mOiupOWuouacjeaXoOazleS9v+eUqCzlkI7lj7DorqLljZXpgJrnn6Xml6Dms5XmlLbliLDjgILor7flsL3lv6vmiafooYzlkb3ku6TlvIDlkK/vvIHvvIE8YSBocmVmPSJodHRwczovL2RvYy5jcm1lYi5jb20vc2luZ2xlL3Y1NC8xMzY2NyIgdGFyZ2V0PSJfYmxhbmsiPueCueWHu+afpeeci+W8gOWQr+aWueazlTwvYT4nLA0KICAgICAgICAgICAgICBkYW5nZXJvdXNseVVzZUhUTUxTdHJpbmc6IHRydWUsDQogICAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwMCwNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgIH0NCiAgICAgICAgfTsNCiAgICAgIH0pOw0KICAgIH0sDQogICAgZ2V0RXhwaXJlc1RpbWUoZXhwaXJlc1RpbWUpIHsNCiAgICAgIGNvbnN0IG5vd1RpbWVOdW0gPSBNYXRoLnJvdW5kKERhdGUubm93KCkgLyAxMDAwKTsNCiAgICAgIGNvbnN0IGV4cGlyZXNUaW1lTnVtID0gZXhwaXJlc1RpbWUgLSBub3dUaW1lTnVtOw0KICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoZXhwaXJlc1RpbWVOdW0gLyA2MCAvIDYwIC8gMjQpOw0KICAgIH0sDQogICAgY2xvc2VmYWlsKCkgew0KICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcign5qCh6aqM6ZSZ6K+vJyk7DQogICAgfSwNCiAgICBoYW5kbGVSZXNpemUoKSB7DQogICAgICB0aGlzLmZ1bGxXaWR0aCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDsNCiAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdjYW52YXMnKVswXTsNCiAgICAgIGlmIChjYW52YXMpIHsNCiAgICAgICAgaWYgKHRoaXMuZnVsbFdpZHRoIDwgNzY4KSB7DQogICAgICAgICAgY2FudmFzLnJlbW92ZUF0dHJpYnV0ZSgnY2xhc3MnLCAnaW5kZXhfYmcnKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICBjYW52YXMuY2xhc3NOYW1lID0gJ2luZGV4X2JnJzsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0sDQogICAgaGFuZGxlU3VibWl0KG5hbWUpIHsNCiAgICAgIHRoaXMuJHJlZnNbbmFtZV0udmFsaWRhdGUoKHZhbGlkKSA9PiB7DQogICAgICAgIGlmICh2YWxpZCkgew0KICAgICAgICAgIGlmICh0aGlzLmxvZ2luX2NhcHRjaGEgPT09IDEpIHsNCiAgICAgICAgICAgIHRoaXMuJHJlZnMudmVyaWZ5LnNob3coKTsNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgdGhpcy5jbG9zZU1vZGVsKCk7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9KTsNCiAgICB9LA0KICB9LA0KfTsNCg=="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";AA6EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/pages/account/login","sourcesContent":["<template>\r\n <div class=\"page-account\">\r\n <div class=\"container\" :class=\"[fullWidth > 768 ? 'containerSamll' : 'containerBig']\">\r\n <swiper :options=\"swiperOption\" class=\"swiperPross\" v-if=\"fullWidth > 768\">\r\n <swiper-slide class=\"swiperPic\" v-for=\"(item, index) in swiperList\" :key=\"index\">\r\n <img :src=\"item.slide\" alt=\"\" />\r\n </swiper-slide>\r\n <div class=\"swiper-pagination\" slot=\"pagination\"></div>\r\n </swiper>\r\n <div class=\"index_from page-account-container from-wh\">\r\n <div class=\"page-account-top\">\r\n <div class=\"page-account-top-logo\">\r\n <img :src=\"login_logo\" alt=\"logo\" style=\"width: 100%; height: 74px\" />\r\n </div>\r\n </div>\r\n <el-form ref=\"formInline\" :model=\"formInline\" :rules=\"ruleInline\" @keyup.enter=\"handleSubmit('formInline')\">\r\n <el-form-item prop=\"username\">\r\n <el-input\r\n type=\"text\"\r\n v-model=\"formInline.username\"\r\n prefix=\"ios-contact-outline\"\r\n placeholder=\"请输入用户名\"\r\n size=\"large\"\r\n />\r\n </el-form-item>\r\n <el-form-item prop=\"password\">\r\n <el-input\r\n type=\"password\"\r\n v-model=\"formInline.password\"\r\n prefix=\"ios-lock-outline\"\r\n placeholder=\"请输入密码\"\r\n size=\"large\"\r\n show-password\r\n />\r\n </el-form-item>\r\n <!-- <el-form-item prop=\"code\">\r\n <div class=\"code\">\r\n <el-input\r\n type=\"text\"\r\n v-model=\"formInline.code\"\r\n prefix=\"ios-keypad-outline\"\r\n placeholder=\"请输入验证码\"\r\n size=\"large\"\r\n />\r\n <img :src=\"imgcode\" class=\"pictrue\" v-db-click @click=\"captchas\" />\r\n </div>\r\n </el-form-item> -->\r\n <el-form-item class=\"pt10\">\r\n <el-button\r\n type=\"primary\"\r\n :loading=\"loading\"\r\n size=\"large\"\r\n v-db-click\r\n @click=\"handleSubmit('formInline')\"\r\n class=\"btn\"\r\n >登录</el-button\r\n >\r\n </el-form-item>\r\n </el-form>\r\n </div>\r\n </div>\r\n\r\n <Verify\r\n @success=\"success\"\r\n captchaType=\"blockPuzzle\"\r\n :imgSize=\"{ width: '330px', height: '155px' }\"\r\n ref=\"verify\"\r\n ></Verify>\r\n <div class=\"footer\">\r\n <div class=\"pull-right\" v-if=\"copyright\">{{ copyright }}</div>\r\n <div class=\"pull-right\" v-else>\r\n Copyright © 2014-2025 <a href=\"https://www.crmeb.com\" target=\"_blank\">{{ version }}</a>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\nimport { AccountLogin, loginInfoApi } from '@/api/account';\r\nimport { getWorkermanUrl } from '@/api/kefu';\r\nimport { setCookies } from '@/libs/util';\r\nimport '@/assets/js/canvas-nest.min';\r\nimport Verify from '@/components/verifition/Verify';\r\nimport { PrevLoading } from '@/utils/loading.js';\r\nimport { formatFlatteningRoutes, findFirstNonNullChildren } from '@/libs/system';\r\nimport { Local } from '@/utils/storage.js';\r\n\r\nexport default {\r\n components: {\r\n Verify,\r\n },\r\n data() {\r\n return {\r\n fullWidth: document.documentElement.clientWidth,\r\n swiperOption: {\r\n pagination: '.swiper-pagination',\r\n autoplay: true,\r\n },\r\n loading: false,\r\n isShow: false,\r\n imgcode: '',\r\n formInline: {\r\n username: '',\r\n password: '',\r\n },\r\n ruleInline: {\r\n username: [{ required: true, message: '请输入用户名', trigger: 'blur' }],\r\n password: [{ required: true, message: '请输入密码', trigger: 'blur' }],\r\n },\r\n login_captcha: 0,\r\n login_logo: '',\r\n swiperList: [],\r\n defaultSwiperList: require('@/assets/images/sw.png'),\r\n key: '',\r\n copyright: '',\r\n version: '',\r\n timer: null,\r\n };\r\n },\r\n created() {\r\n document.onkeydown = (e) => {\r\n if (this.$route.name === 'login' && (e.keyCode === 13 || e.which === 13)) {\r\n this.handleSubmit('formInline');\r\n }\r\n };\r\n window.addEventListener('resize', this.handleResize);\r\n },\r\n mounted() {\r\n this.$nextTick(() => {\r\n this.handleResize();\r\n this.swiperData();\r\n });\r\n },\r\n beforeDestroy() {\r\n window.removeEventListener('resize', this.handleResize);\r\n document.onkeydown = null;\r\n const canvas = document.getElementsByTagName('canvas')[0];\r\n if (canvas) canvas.removeAttribute('class', 'index_bg');\r\n },\r\n methods: {\r\n swiperData() {\r\n loginInfoApi()\r\n .then((res) => {\r\n const data = res.data || {};\r\n document.title = `${data.site_name} - 登录`;\r\n localStorage.setItem('ADMIN_TITLE', data.site_name || '');\r\n this.$store.commit('setAdminTitle', data.site_name);\r\n this.login_logo = data.login_logo || require('@/assets/images/logo.png');\r\n this.swiperList = data.slide && data.slide.length ? data.slide : [{ slide: this.defaultSwiperList }];\r\n this.key = data.key;\r\n this.copyright = data.copyright;\r\n this.version = data.version;\r\n this.login_captcha = data.login_captcha;\r\n })\r\n .catch((err) => {\r\n this.$message.error(err);\r\n this.login_logo = require('@/assets/images/logo.png');\r\n this.swiperList = [{ slide: this.defaultSwiperList }];\r\n });\r\n },\r\n success(params) {\r\n this.closeModel(params);\r\n },\r\n closeModel(params) {\r\n this.isShow = false;\r\n this.loading = true;\r\n AccountLogin({\r\n account: this.formInline.username,\r\n pwd: this.formInline.password,\r\n key: this.key,\r\n captchaType: 'blockPuzzle',\r\n captchaVerification: params ? params.captchaVerification : '',\r\n })\r\n .then(async (res) => {\r\n const data = res.data;\r\n const expires = this.getExpiresTime(data.expires_time);\r\n setCookies('uuid', data.user_info.id, expires);\r\n setCookies('token', data.token, expires);\r\n setCookies('expires_time', data.expires_time, expires);\r\n Local.set('PERMISSIONS', data.site_func);\r\n this.$store.commit('userInfo/uniqueAuth', data.unique_auth);\r\n this.$store.commit('userInfo/userInfo', data.user_info);\r\n this.$store.commit('menus/setopenMenus', []);\r\n this.$store.commit('menus/getmenusNav', data.menus);\r\n this.$store.dispatch('routesList/setRoutesList', data.menus);\r\n const arr = formatFlatteningRoutes(this.$router.options.routes);\r\n this.formatTwoStageRoutes(arr);\r\n this.$store.commit('menus/setOneLvMenus', arr);\r\n const routes = formatFlatteningRoutes(data.menus);\r\n this.$store.commit('menus/setOneLvRoute', routes);\r\n this.$store.commit('userInfo/name', data.user_info.account);\r\n this.$store.commit('userInfo/avatar', data.user_info.head_pic);\r\n this.$store.commit('userInfo/access', data.unique_auth);\r\n this.$store.commit('userInfo/logo', data.logo);\r\n this.$store.commit('userInfo/logoSmall', data.logo_square);\r\n this.$store.commit('userInfo/version', data.version);\r\n this.$store.commit('userInfo/newOrderAudioLink', data.newOrderAudioLink);\r\n this.login_captcha = 0;\r\n try {\r\n if (data.queue === false) {\r\n this.$notify.warning({\r\n title: '温馨提示',\r\n dangerouslyUseHTMLString: true,\r\n message:\r\n '您的【消息队列】未开启,没有开启会导致异步任务无法执行。请尽快执行命令开启!!<a href=\"https://doc.crmeb.com/single/v54/13667\" target=\"_blank\">点击查看开启方法</a>',\r\n duration: 30000,\r\n });\r\n }\r\n if (data.timer === false) {\r\n setTimeout(() => {\r\n this.$notify.warning({\r\n title: '温馨提示',\r\n dangerouslyUseHTMLString: true,\r\n message:\r\n '您的【定时任务】未开启,没有开启会导致自动收货、未支付自动取消订单、订单自动好评、拼团到期退款等任务无法正常执行。请尽快执行命令开启!!<a href=\"https://doc.crmeb.com/single/v54/13667\" target=\"_blank\">点击查看开启方法</a>',\r\n duration: 30000,\r\n });\r\n }, 0);\r\n }\r\n this.checkSocket();\r\n } catch (e) {}\r\n PrevLoading.start();\r\n this.$router.push({\r\n path: data.menus.length ? findFirstNonNullChildren(data.menus).path : this.$routeProStr + '/',\r\n });\r\n })\r\n .catch((res) => {\r\n const data = res || {};\r\n this.$message.error(data.msg || '登录失败');\r\n if (res && res.data) this.login_captcha = res.data.login_captcha;\r\n })\r\n .finally(() => {\r\n setTimeout(() => {\r\n this.loading = false;\r\n }, 1000);\r\n });\r\n },\r\n formatTwoStageRoutes(arr) {\r\n if (!arr.length) return false;\r\n const cacheList = [];\r\n arr.forEach((v) => {\r\n if (v && v.meta && v.meta.keepAlive) {\r\n cacheList.push(v.name);\r\n }\r\n });\r\n if (cacheList.length) {\r\n this.$store.dispatch('keepAliveNames/setCacheKeepAlive', cacheList);\r\n }\r\n },\r\n checkSocket() {\r\n getWorkermanUrl().then((res) => {\r\n const url = res.data.admin;\r\n let isNotice = false;\r\n const socket = new window.WebSocket(url);\r\n socket.onopen = () => {\r\n isNotice = true;\r\n socket.close();\r\n };\r\n socket.onerror = socket.onclose = () => {\r\n if (!isNotice) {\r\n isNotice = true;\r\n this.$notify.warning({\r\n title: '温馨提示',\r\n message:\r\n '您的【长连接】未开启,没有开启会导致系统默认客服无法使用,后台订单通知无法收到。请尽快执行命令开启!!<a href=\"https://doc.crmeb.com/single/v54/13667\" target=\"_blank\">点击查看开启方法</a>',\r\n dangerouslyUseHTMLString: true,\r\n duration: 30000,\r\n });\r\n }\r\n };\r\n });\r\n },\r\n getExpiresTime(expiresTime) {\r\n const nowTimeNum = Math.round(Date.now() / 1000);\r\n const expiresTimeNum = expiresTime - nowTimeNum;\r\n return parseFloat(expiresTimeNum / 60 / 60 / 24);\r\n },\r\n closefail() {\r\n this.$message.error('校验错误');\r\n },\r\n handleResize() {\r\n this.fullWidth = document.documentElement.clientWidth;\r\n const canvas = document.getElementsByTagName('canvas')[0];\r\n if (canvas) {\r\n if (this.fullWidth < 768) {\r\n canvas.removeAttribute('class', 'index_bg');\r\n } else {\r\n canvas.className = 'index_bg';\r\n }\r\n }\r\n },\r\n handleSubmit(name) {\r\n this.$refs[name].validate((valid) => {\r\n if (valid) {\r\n if (this.login_captcha === 1) {\r\n this.$refs.verify.show();\r\n } else {\r\n this.closeModel();\r\n }\r\n }\r\n });\r\n },\r\n },\r\n};\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n.page-account {\r\n display: flex;\r\n width: 100%;\r\n background-image: url('../../../assets/images/bg.jpg');\r\n background-size: cover;\r\n background-position: center;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n height: 100vh;\r\n overflow: auto;\r\n}\r\n.page-account .code {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n.page-account .code .pictrue {\r\n height: 40px;\r\n}\r\n.swiperPross {\r\n border-radius: 12px 0px 0px 12px;\r\n}\r\n.swiperPross,\r\n.swiperPic,\r\n.swiperPic img {\r\n width: 510px;\r\n height: 100%;\r\n}\r\n.swiperPic img {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n.container {\r\n height: 400px !important;\r\n padding: 0 !important;\r\n border-radius: 12px;\r\n z-index: 1;\r\n display: flex;\r\n}\r\n.containerSamll {\r\n /* width: 56% !important; */\r\n background: #fff !important;\r\n}\r\n.containerBig {\r\n width: auto !important;\r\n background: #f7f7f7 !important;\r\n}\r\n.index_from {\r\n padding: 32px 40px 32px 40px;\r\n height: 400px;\r\n box-sizing: border-box;\r\n}\r\n.page-account-top {\r\n padding: 20px 0 24px 0 !important;\r\n box-sizing: border-box !important;\r\n display: flex;\r\n justify-content: center;\r\n}\r\n.page-account-container {\r\n border-radius: 0px 6px 6px 0px;\r\n}\r\n.btn {\r\n width: 100%;\r\n background: linear-gradient(90deg, rgba(25, 180, 241, 1) 0%, rgba(14, 115, 232, 1) 100%) !important;\r\n}\r\n.captchaBox {\r\n width: 310px;\r\n}\r\n\r\ninput {\r\n display: block;\r\n width: 290px;\r\n line-height: 40px;\r\n margin: 10px 0;\r\n padding: 0 10px;\r\n outline: none;\r\n border: 1px solid #c8cccf;\r\n border-radius: 4px;\r\n color: #6a6f77;\r\n}\r\n\r\n#msg {\r\n width: 100%;\r\n line-height: 40px;\r\n font-size: 14px;\r\n text-align: center;\r\n}\r\n\r\na:link,\r\na:visited,\r\na:hover,\r\na:active {\r\n margin-left: 100px;\r\n color: #0366d6;\r\n}\r\n.index_from ::v-deep .ivu-input-large {\r\n font-size: 14px !important;\r\n}\r\n.from-wh {\r\n width: 400px;\r\n}\r\n.pull-right {\r\n float: right !important;\r\n}\r\n::v-deep .el-button--primary {\r\n border: none;\r\n}\r\n::v-deep .el-button {\r\n padding: 13px 20px !important;\r\n}\r\n.pull-right {\r\n float: right !important;\r\n color: #666;\r\n}\r\n.pull-right a {\r\n margin-left: 0;\r\n color: #666;\r\n}\r\n.footer {\r\n position: fixed;\r\n bottom: 0;\r\n width: 100%;\r\n left: 0;\r\n margin: 0;\r\n background: rgba(255, 255, 255, 0.8);\r\n border-top: 1px solid #e7eaec;\r\n overflow: hidden;\r\n padding: 10px 20px;\r\n height: 36px;\r\n line-height: 18px;\r\n z-index: 999;\r\n}\r\n</style>\r\n"]}]}
|