login.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743
  1. exports.ids = [21,7];
  2. exports.modules = {
  3. /***/ 144:
  4. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5. "use strict";
  6. // ESM COMPAT FLAG
  7. __webpack_require__.r(__webpack_exports__);
  8. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/count-down.vue?vue&type=template&id=2fbaab86&
  9. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.time >= 0)?_c('div',[_c('client-only',[(_vm.isSlot)?_vm._t("default"):_c('span',[_vm._v(_vm._s(_vm.formateTime))])],2)],1):_vm._e()}
  10. var staticRenderFns = []
  11. // CONCATENATED MODULE: ./components/count-down.vue?vue&type=template&id=2fbaab86&
  12. // CONCATENATED MODULE: ./utils/parseTime.js
  13. const SECOND = 1000;
  14. const MINUTE = 60 * SECOND;
  15. const HOUR = 60 * MINUTE;
  16. const DAY = 24 * HOUR;
  17. function parseTimeData(time) {
  18. const days = Math.floor(time / DAY);
  19. const hours = sliceTwo(Math.floor(time % DAY / HOUR));
  20. const minutes = sliceTwo(Math.floor(time % HOUR / MINUTE));
  21. const seconds = sliceTwo(Math.floor(time % MINUTE / SECOND));
  22. return {
  23. days: days,
  24. hours: hours,
  25. minutes: minutes,
  26. seconds: seconds
  27. };
  28. }
  29. function sliceTwo(str) {
  30. return (0 + str.toString()).slice(-2);
  31. }
  32. function parseFormat(format, timeData) {
  33. let days = timeData.days;
  34. let hours = timeData.hours,
  35. minutes = timeData.minutes,
  36. seconds = timeData.seconds;
  37. if (format.indexOf('dd') !== -1) {
  38. format = format.replace('dd', days);
  39. }
  40. if (format.indexOf('hh') !== -1) {
  41. format = format.replace('hh', sliceTwo(hours));
  42. }
  43. if (format.indexOf('mm') !== -1) {
  44. format = format.replace('mm', sliceTwo(minutes));
  45. }
  46. if (format.indexOf('ss') !== -1) {
  47. format = format.replace('ss', sliceTwo(seconds));
  48. }
  49. return format;
  50. }
  51. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/count-down.vue?vue&type=script&lang=js&
  52. //
  53. //
  54. //
  55. //
  56. //
  57. //
  58. //
  59. //
  60. //
  61. /* harmony default export */ var count_downvue_type_script_lang_js_ = ({
  62. components: {},
  63. props: {
  64. isSlot: {
  65. type: Boolean,
  66. default: false
  67. },
  68. time: {
  69. type: Number,
  70. default: 0
  71. },
  72. format: {
  73. type: String,
  74. default: 'hh:mm:ss'
  75. },
  76. autoStart: {
  77. type: Boolean,
  78. default: true
  79. }
  80. },
  81. watch: {
  82. time: {
  83. immediate: true,
  84. handler(value) {
  85. if (value) {
  86. this.reset();
  87. }
  88. }
  89. }
  90. },
  91. data() {
  92. return {
  93. timeObj: {},
  94. formateTime: 0
  95. };
  96. },
  97. created() {},
  98. computed: {},
  99. methods: {
  100. createTimer(fn) {
  101. return setTimeout(fn, 100);
  102. },
  103. isSameSecond(time1, time2) {
  104. return Math.floor(time1) === Math.floor(time2);
  105. },
  106. start() {
  107. if (this.counting) {
  108. return;
  109. }
  110. this.counting = true;
  111. this.endTime = Date.now() + this.remain * 1000;
  112. this.setTimer();
  113. },
  114. setTimer() {
  115. this.tid = this.createTimer(() => {
  116. let remain = this.getRemain();
  117. if (!this.isSameSecond(remain, this.remain) || remain === 0) {
  118. this.setRemain(remain);
  119. }
  120. if (this.remain !== 0) {
  121. this.setTimer();
  122. }
  123. });
  124. },
  125. getRemain() {
  126. return Math.max(this.endTime - Date.now(), 0);
  127. },
  128. pause() {
  129. this.counting = false;
  130. clearTimeout(this.tid);
  131. },
  132. reset() {
  133. this.pause();
  134. this.remain = this.time;
  135. this.setRemain(this.remain);
  136. if (this.autoStart) {
  137. this.start();
  138. }
  139. },
  140. setRemain(remain) {
  141. const {
  142. format
  143. } = this;
  144. this.remain = remain;
  145. const timeData = parseTimeData(remain);
  146. this.formateTime = parseFormat(format, timeData);
  147. this.$emit('change', timeData);
  148. if (remain === 0) {
  149. this.pause();
  150. this.$emit('finish');
  151. }
  152. }
  153. }
  154. });
  155. // CONCATENATED MODULE: ./components/count-down.vue?vue&type=script&lang=js&
  156. /* harmony default export */ var components_count_downvue_type_script_lang_js_ = (count_downvue_type_script_lang_js_);
  157. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  158. var componentNormalizer = __webpack_require__(1);
  159. // CONCATENATED MODULE: ./components/count-down.vue
  160. function injectStyles (context) {
  161. }
  162. /* normalize component */
  163. var component = Object(componentNormalizer["a" /* default */])(
  164. components_count_downvue_type_script_lang_js_,
  165. render,
  166. staticRenderFns,
  167. false,
  168. injectStyles,
  169. null,
  170. "4090b4e2"
  171. )
  172. /* harmony default export */ var count_down = __webpack_exports__["default"] = (component.exports);
  173. /***/ }),
  174. /***/ 149:
  175. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  176. "use strict";
  177. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return client; });
  178. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return loginType; });
  179. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return SMSType; });
  180. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return FieldType; });
  181. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AfterSaleType; });
  182. const client = 5;
  183. const loginType = {
  184. SMS: 0,
  185. ACCOUNT: 1
  186. }; // 短信发送
  187. const SMSType = {
  188. // 注册
  189. REGISTER: 'ZCYZ',
  190. // 找回密码
  191. FINDPWD: 'ZHMM',
  192. // 登陆
  193. LOGIN: 'YZMDL',
  194. // 商家申请入驻
  195. SJSQYZ: 'SJSQYZ',
  196. // 更换手机号
  197. CHANGE_MOBILE: 'BGSJHM',
  198. // 绑定手机号
  199. BIND: 'BDSJHM'
  200. };
  201. const FieldType = {
  202. NONE: '',
  203. SEX: 'sex',
  204. NICKNAME: 'nickname',
  205. AVATAR: 'avatar',
  206. MOBILE: 'mobile'
  207. }; // 售后状态
  208. const AfterSaleType = {
  209. // 售后申请
  210. NORMAL: 'normal',
  211. // 处理中
  212. HANDLING: 'apply',
  213. // 已处理
  214. FINISH: 'finish'
  215. };
  216. /***/ }),
  217. /***/ 226:
  218. /***/ (function(module, exports, __webpack_require__) {
  219. // style-loader: Adds some css to the DOM by adding a <style> tag
  220. // load the styles
  221. var content = __webpack_require__(286);
  222. if(content.__esModule) content = content.default;
  223. if(typeof content === 'string') content = [[module.i, content, '']];
  224. if(content.locals) module.exports = content.locals;
  225. // add CSS to SSR context
  226. var add = __webpack_require__(4).default
  227. module.exports.__inject__ = function (context) {
  228. add("0c894dd8", content, true, context)
  229. };
  230. /***/ }),
  231. /***/ 285:
  232. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  233. "use strict";
  234. __webpack_require__.r(__webpack_exports__);
  235. /* harmony import */ var _node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_3_node_modules_sass_resources_loader_lib_loader_js_ref_7_oneOf_1_4_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_style_index_0_id_a0d0f46a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(226);
  236. /* harmony import */ var _node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_3_node_modules_sass_resources_loader_lib_loader_js_ref_7_oneOf_1_4_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_style_index_0_id_a0d0f46a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_3_node_modules_sass_resources_loader_lib_loader_js_ref_7_oneOf_1_4_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_style_index_0_id_a0d0f46a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
  237. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_3_node_modules_sass_resources_loader_lib_loader_js_ref_7_oneOf_1_4_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_style_index_0_id_a0d0f46a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_3_node_modules_sass_resources_loader_lib_loader_js_ref_7_oneOf_1_4_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_style_index_0_id_a0d0f46a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  238. /***/ }),
  239. /***/ 286:
  240. /***/ (function(module, exports, __webpack_require__) {
  241. // Imports
  242. var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(3);
  243. var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
  244. // Module
  245. ___CSS_LOADER_EXPORT___.push([module.i, ".login[data-v-a0d0f46a]{flex:1;background-size:cover;background-repeat:no-repeat;background-position:50%;min-width:1180px}.login .login-container[data-v-a0d0f46a]{margin:0 auto;width:1180px;height:100%;position:relative}.login .login-container .login-banner[data-v-a0d0f46a]{display:flex;align-items:center;justify-content:center;width:750px;margin-right:30px;height:440px;overflow:hidden;-webkit-animation:loadimg-data-v-a0d0f46a 2s infinite;animation:loadimg-data-v-a0d0f46a 2s infinite;transition:background-color 2s}@-webkit-keyframes loadimg-data-v-a0d0f46a{0%{background-color:#e4e4e4}50%{background-color:#f0f0f0}to{background-color:#e4e4e4}}@keyframes loadimg-data-v-a0d0f46a{0%{background-color:#e4e4e4}50%{background-color:#f0f0f0}to{background-color:#e4e4e4}}.login .login-container .login-float-form-wrap[data-v-a0d0f46a]{width:400px;height:440px}.login .login-container .login-float-form-wrap .login-box[data-v-a0d0f46a]{background-color:#fff;height:100%;display:flex;flex-direction:column;justify-content:space-between}.login .login-container .login-float-form-wrap .login-box .login-header-box[data-v-a0d0f46a]{padding-top:20px}.login .login-container .login-float-form-wrap .login-box .login-header-box .header-tabs .header-tab[data-v-a0d0f46a]{width:160px;height:35px;display:flex;flex-direction:column;align-items:center;cursor:pointer}.login .login-container .login-float-form-wrap .login-box .login-header-box .header-tabs .active-tab[data-v-a0d0f46a]{color:#ff2c3c;text-align:center}.login .login-container .login-float-form-wrap .login-box .login-header-box .header-tabs .active-tab[data-v-a0d0f46a]:after{content:\"\";height:2px;width:72px;margin-top:8px;background-color:#ff2c3c}.login .login-container .login-float-form-wrap .login-box .login-header-box .login-form-box[data-v-a0d0f46a]{padding:0 30px}.login .login-container .login-float-form-wrap .login-box .login-header-box .login-form-box .login-form-item[data-v-a0d0f46a]{margin-top:24px}.login .login-container .login-float-form-wrap .login-box .login-header-box .login-form-box .login-form-item .input-phone-num[data-v-a0d0f46a]{width:340px}.login .login-container .login-float-form-wrap .login-box .login-header-box .login-form-box .login-form-item .verify-code-img[data-v-a0d0f46a]{width:100px;height:40px;margin-left:20px;background-color:red}.login .login-container .login-float-form-wrap .login-box .login-header-box .login-form-box .login-form-item .sms-btn[data-v-a0d0f46a]{margin-left:20px;height:40px}.login .login-container .login-float-form-wrap .login-box .login-header-box .option-box[data-v-a0d0f46a]{padding:0 30px;margin-top:60px}.login .login-container .login-float-form-wrap .login-box .login-header-box .option-box[data-v-a0d0f46a] .el-checkbox{color:#888}.login .login-container .login-float-form-wrap .login-box .login-footer-box[data-v-a0d0f46a]{height:50px;padding:15px}.login .login-container .login-float-form-wrap .login-box .login-footer-box .login__other-item[data-v-a0d0f46a]{cursor:pointer}.login .login-container .login-float-form-wrap .login-box .login-footer-box .login__weixin-icon[data-v-a0d0f46a]{width:1.5em;height:1.5em;text-align:center;line-height:1.5em;border-radius:50%;background-color:#0abd5d;color:#fff}", ""]);
  246. // Exports
  247. module.exports = ___CSS_LOADER_EXPORT___;
  248. /***/ }),
  249. /***/ 350:
  250. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  251. "use strict";
  252. // ESM COMPAT FLAG
  253. __webpack_require__.r(__webpack_exports__);
  254. // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./pages/account/login.vue?vue&type=template&id=a0d0f46a&scoped=true&
  255. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"login flex col-center"},[_vm._ssrNode("<div class=\"login-container flex col-stretch\" data-v-a0d0f46a>","</div>",[_vm._ssrNode("<div class=\"login-banner\" data-v-a0d0f46a><img"+(_vm._ssrAttr("src",_vm.config.pc_login_logo))+" height=\"100%\" data-v-a0d0f46a></div> "),_vm._ssrNode("<div class=\"login-float-form-wrap\" data-v-a0d0f46a>","</div>",[_vm._ssrNode("<div class=\"login-box\" data-v-a0d0f46a>","</div>",[_vm._ssrNode("<div class=\"login-header-box\" data-v-a0d0f46a>","</div>",[_vm._ssrNode("<div class=\"header-tabs flex row-center\" data-v-a0d0f46a><div"+(_vm._ssrClass("header-tab xxl",{ 'active-tab': _vm.loginStatus == 0 }))+" data-v-a0d0f46a>\n 验证码登录\n </div> <div"+(_vm._ssrClass("header-tab xxl",{ 'active-tab': _vm.loginStatus == 1 }))+" data-v-a0d0f46a>\n 账号密码登录\n </div></div> "),_vm._ssrNode("<div"+(_vm._ssrStyle(null,null, { display: (_vm.loginStatus == 0) ? '' : 'none' }))+" data-v-a0d0f46a>","</div>",[_vm._ssrNode("<div class=\"login-form-box\" data-v-a0d0f46a>","</div>",[_vm._ssrNode("<div class=\"login-form-item\" data-v-a0d0f46a>","</div>",[_c('el-input',{staticClass:"input-phone-num",attrs:{"placeholder":"请输入手机号码"},model:{value:(_vm.telephone),callback:function ($$v) {_vm.telephone=$$v},expression:"telephone"}},[_c('el-select',{staticStyle:{"width":"100px"},attrs:{"slot":"prepend","placeholder":"请选择"},slot:"prepend",model:{value:(_vm.selectNumberType),callback:function ($$v) {_vm.selectNumberType=$$v},expression:"selectNumberType"}},[_c('el-option',{attrs:{"label":"中国+86","value":"1"}})],1)],1)],1),_vm._ssrNode(" "),_vm._ssrNode("<div class=\"login-form-item flex\" data-v-a0d0f46a>","</div>",[_c('el-input',{staticStyle:{"width":"210px"},attrs:{"placeholder":"短信验证码"},model:{value:(_vm.smsCode),callback:function ($$v) {_vm.smsCode=$$v},expression:"smsCode"}}),_vm._ssrNode(" "),_c('el-button',{staticClass:"sms-btn",on:{"click":_vm.sendSMSCode}},[(_vm.canSend)?_c('div',[_vm._v("获取验证码")]):_c('count-down',{attrs:{"time":60,"format":"ss秒","autoStart":true},on:{"finish":function($event){_vm.canSend = true}}})],1)],2)],2),_vm._ssrNode(" "),_vm._ssrNode("<div class=\"option-box flex-col\" data-v-a0d0f46a>","</div>",[_c('el-checkbox',{staticClass:"muted",model:{value:(_vm.isRemember),callback:function ($$v) {_vm.isRemember=$$v},expression:"isRemember"}},[_vm._v("记住账号")]),_vm._ssrNode(" "),_vm._ssrNode("<div class=\"m-t-20 flex-col\" data-v-a0d0f46a>","</div>",[_c('el-button',{attrs:{"type":"primary"},on:{"click":_vm.smsLogin}},[_vm._v("立即登录")])],1)],2)],2),_vm._ssrNode(" "),_vm._ssrNode("<div"+(_vm._ssrStyle(null,null, { display: (_vm.loginStatus == 1) ? '' : 'none' }))+" data-v-a0d0f46a>","</div>",[_vm._ssrNode("<div class=\"login-form-box\" data-v-a0d0f46a>","</div>",[_vm._ssrNode("<div class=\"login-form-item\" data-v-a0d0f46a>","</div>",[_c('el-input',{staticClass:"input-phone-num",attrs:{"placeholder":"请输入账号/手机号码"},model:{value:(_vm.account),callback:function ($$v) {_vm.account=$$v},expression:"account"}},[_c('i',{staticClass:"el-icon-user",staticStyle:{"font-size":"18px"},attrs:{"slot":"prepend"},slot:"prepend"})])],1),_vm._ssrNode(" "),_vm._ssrNode("<div class=\"login-form-item flex\" data-v-a0d0f46a>","</div>",[_c('el-input',{attrs:{"placeholder":"请输入密码","show-password":""},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:"password"}},[_c('i',{staticClass:"el-icon-more-outline",staticStyle:{"font-size":"18px"},attrs:{"slot":"prepend"},slot:"prepend"})])],1)],2),_vm._ssrNode(" "),_vm._ssrNode("<div class=\"option-box flex-col\" data-v-a0d0f46a>","</div>",[_vm._ssrNode("<div class=\"flex row-between\" data-v-a0d0f46a>","</div>",[_c('el-checkbox',{staticClass:"muted",model:{value:(_vm.isRemember),callback:function ($$v) {_vm.isRemember=$$v},expression:"isRemember"}},[_vm._v("记住账号")]),_vm._ssrNode(" "),_c('nuxt-link',{staticClass:"muted",attrs:{"to":"/account/forget_pwd"}},[_vm._v("忘记密码?")])],2),_vm._ssrNode(" "),_vm._ssrNode("<div class=\"m-t-20 flex-col\" data-v-a0d0f46a>","</div>",[_c('el-button',{attrs:{"type":"primary"},on:{"click":_vm.accountLogin}},[_vm._v("立即登录")])],1)],2)],2)],2),_vm._ssrNode(" "),_vm._ssrNode("<div class=\"login-footer-box flex row-between\" data-v-a0d0f46a>","</div>",[_vm._ssrNode("<div class=\"flex\" data-v-a0d0f46a><div class=\"flex login__other-item\" data-v-a0d0f46a><i class=\"\n iconfont\n icon-weixin1\n login__weixin-icon\n \" data-v-a0d0f46a></i> <div class=\"m-l-4 muted\" data-v-a0d0f46a>微信</div></div></div> "),_c('nuxt-link',{staticClass:"primary",attrs:{"to":"/account/register"}},[_vm._v("\n 注册账号\n ")])],2)],2)])],2)])}
  256. var staticRenderFns = []
  257. // CONCATENATED MODULE: ./pages/account/login.vue?vue&type=template&id=a0d0f46a&scoped=true&
  258. // EXTERNAL MODULE: ./utils/type.js
  259. var type = __webpack_require__(149);
  260. // EXTERNAL MODULE: external "js-cookie"
  261. var external_js_cookie_ = __webpack_require__(10);
  262. var external_js_cookie_default = /*#__PURE__*/__webpack_require__.n(external_js_cookie_);
  263. // EXTERNAL MODULE: external "vuex"
  264. var external_vuex_ = __webpack_require__(2);
  265. // EXTERNAL MODULE: ./components/count-down.vue + 5 modules
  266. var count_down = __webpack_require__(144);
  267. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./pages/account/login.vue?vue&type=script&lang=js&
  268. //
  269. //
  270. //
  271. //
  272. //
  273. //
  274. //
  275. //
  276. //
  277. //
  278. //
  279. //
  280. //
  281. //
  282. //
  283. //
  284. //
  285. //
  286. //
  287. //
  288. //
  289. //
  290. //
  291. //
  292. //
  293. //
  294. //
  295. //
  296. //
  297. //
  298. //
  299. //
  300. //
  301. //
  302. //
  303. //
  304. //
  305. //
  306. //
  307. //
  308. //
  309. //
  310. //
  311. //
  312. //
  313. //
  314. //
  315. //
  316. //
  317. //
  318. //
  319. //
  320. //
  321. //
  322. //
  323. //
  324. //
  325. //
  326. //
  327. //
  328. //
  329. //
  330. //
  331. //
  332. //
  333. //
  334. //
  335. //
  336. //
  337. //
  338. //
  339. //
  340. //
  341. //
  342. //
  343. //
  344. //
  345. //
  346. //
  347. //
  348. //
  349. //
  350. //
  351. //
  352. //
  353. //
  354. //
  355. //
  356. //
  357. //
  358. //
  359. //
  360. //
  361. //
  362. //
  363. //
  364. //
  365. //
  366. //
  367. //
  368. //
  369. //
  370. //
  371. //
  372. //
  373. //
  374. //
  375. //
  376. //
  377. //
  378. //
  379. //
  380. //
  381. //
  382. //
  383. //
  384. //
  385. //
  386. //
  387. //
  388. //
  389. //
  390. //
  391. //
  392. //
  393. //
  394. //
  395. //
  396. //
  397. //
  398. //
  399. //
  400. //
  401. //
  402. //
  403. //
  404. //
  405. //
  406. //
  407. //
  408. //
  409. //
  410. //
  411. //
  412. //
  413. //
  414. //
  415. //
  416. //
  417. //
  418. //
  419. //
  420. //
  421. //
  422. //
  423. //
  424. //
  425. //
  426. //
  427. //
  428. //
  429. //
  430. //
  431. //
  432. /* harmony default export */ var loginvue_type_script_lang_js_ = ({
  433. head() {
  434. return {
  435. title: this.$store.getters.headTitle,
  436. link: [{
  437. rel: 'icon',
  438. type: 'image/x-icon',
  439. href: this.$store.getters.favicon
  440. }]
  441. };
  442. },
  443. layout: 'main',
  444. components: {
  445. CountDown: count_down["default"]
  446. },
  447. data() {
  448. return {
  449. // 选择电话类型
  450. selectNumberType: '中国+86',
  451. // 账号
  452. account: '',
  453. // 密码
  454. password: '',
  455. // 电话号码
  456. telephone: '',
  457. // 图形验证码
  458. verifyCode: '',
  459. // 短信验证码
  460. smsCode: '',
  461. isRemember: true,
  462. // 短信登陆或账号登陆 0 ==》 短信 1 ==》账号
  463. loginStatus: type["e" /* loginType */].SMS,
  464. canSend: true
  465. };
  466. },
  467. computed: { ...Object(external_vuex_["mapState"])(['config'])
  468. },
  469. methods: { ...Object(external_vuex_["mapMutations"])(['setToken']),
  470. ...Object(external_vuex_["mapActions"])(['getPublicData']),
  471. changeLoginType(type) {
  472. this.loginStatus = type;
  473. this.telephone = '';
  474. this.verifyCode = '';
  475. this.smsCode = '';
  476. let jsonPaser = JSON.parse(localStorage.getItem('ACCOUNT'));
  477. let telJson = JSON.parse(localStorage.getItem('TEL'));
  478. if (jsonPaser && jsonPaser.account) {
  479. this.account = jsonPaser.account;
  480. }
  481. if (telJson && telJson.telephone) {
  482. this.telephone = telJson.telephone;
  483. }
  484. },
  485. // 前往微信登录
  486. goWechatLogin() {
  487. this.$get('account/scanCode').then(({
  488. code,
  489. msg,
  490. data
  491. }) => {
  492. if (code !== 1) throw new Error(msg);
  493. window.open(data.url, '_self');
  494. }).catch(err => {
  495. this.$message.error(err.message);
  496. });
  497. },
  498. // 微信授权登录处理
  499. handleWechatLogin(params) {
  500. this.$post('account/scanLogin', params).then(({
  501. code,
  502. msg,
  503. data
  504. }) => {
  505. if (code !== 1) throw new Error(msg);
  506. external_js_cookie_default.a.set('token', data.token, {
  507. expires: 60
  508. });
  509. this.setToken(data.token);
  510. this.$router.replace({
  511. path: external_js_cookie_default.a.get('back_url') || '/'
  512. });
  513. external_js_cookie_default.a.remove('back_url');
  514. this.getPublicData();
  515. }).catch(err => {
  516. this.$message.error(err.message);
  517. });
  518. },
  519. async sendSMSCode() {
  520. if (!this.canSend) {
  521. return;
  522. }
  523. let res = await this.$post('sms/send', {
  524. mobile: this.telephone,
  525. key: type["c" /* SMSType */].LOGIN,
  526. client: type["d" /* client */]
  527. });
  528. if (res.code == 1) {
  529. this.$message({
  530. message: res.msg,
  531. type: 'success'
  532. });
  533. this.canSend = false;
  534. }
  535. },
  536. async smsLogin() {
  537. let res = await this.$post('account/smsLogin', {
  538. mobile: this.telephone,
  539. code: this.smsCode,
  540. client: type["d" /* client */]
  541. });
  542. if (res.code == 1) {
  543. const token = res.data.token;
  544. external_js_cookie_default.a.set('token', token, {
  545. expires: 60
  546. });
  547. this.setToken(token);
  548. this.$router.replace({
  549. path: external_js_cookie_default.a.get('back_url') || '/'
  550. });
  551. external_js_cookie_default.a.remove('back_url');
  552. this.getPublicData();
  553. if (this.isRemember) {
  554. localStorage.setItem('TEL', JSON.stringify({
  555. telephone: this.telephone
  556. }));
  557. } else {
  558. localStorage.setItem('TEL', JSON.stringify({
  559. telephone: ''
  560. }));
  561. }
  562. }
  563. },
  564. async accountLogin() {
  565. let res = await this.$post('account/login', {
  566. mobile: this.account,
  567. password: this.password,
  568. client: type["d" /* client */]
  569. });
  570. if (res.code == 1) {
  571. const token = res.data.token;
  572. external_js_cookie_default.a.set('token', token, {
  573. expires: 60
  574. });
  575. this.setToken(token);
  576. this.$router.replace({
  577. path: external_js_cookie_default.a.get('back_url') || '/'
  578. });
  579. external_js_cookie_default.a.remove('back_url');
  580. this.getPublicData();
  581. if (this.isRemember) {
  582. localStorage.setItem('ACCOUNT', JSON.stringify({
  583. account: this.account
  584. }));
  585. } else {
  586. localStorage.setItem('ACCOUNT', JSON.stringify({
  587. account: ''
  588. }));
  589. }
  590. }
  591. }
  592. },
  593. created() {
  594. var _JSON$parse, _JSON$parse2, _jsonPaser$account, _telJson$telephone;
  595. // 获取URL Query参数
  596. const query = this.$route.query; // 如果存在code和state值,即为微信扫码授权后重定向至此
  597. query.code && query.state && this.handleWechatLogin({
  598. code: query.code,
  599. state: query.state
  600. }); // 获取缓存数据
  601. const jsonPaser = (_JSON$parse = JSON.parse(localStorage.getItem('ACCOUNT'))) !== null && _JSON$parse !== void 0 ? _JSON$parse : {};
  602. const telJson = (_JSON$parse2 = JSON.parse(localStorage.getItem('TEL'))) !== null && _JSON$parse2 !== void 0 ? _JSON$parse2 : {}; // 利用缓存数据初始化表单值
  603. this.account = (_jsonPaser$account = jsonPaser === null || jsonPaser === void 0 ? void 0 : jsonPaser.account) !== null && _jsonPaser$account !== void 0 ? _jsonPaser$account : '';
  604. this.telephone = (_telJson$telephone = telJson === null || telJson === void 0 ? void 0 : telJson.telephone) !== null && _telJson$telephone !== void 0 ? _telJson$telephone : '';
  605. }
  606. });
  607. // CONCATENATED MODULE: ./pages/account/login.vue?vue&type=script&lang=js&
  608. /* harmony default export */ var account_loginvue_type_script_lang_js_ = (loginvue_type_script_lang_js_);
  609. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  610. var componentNormalizer = __webpack_require__(1);
  611. // CONCATENATED MODULE: ./pages/account/login.vue
  612. function injectStyles (context) {
  613. var style0 = __webpack_require__(285)
  614. if (style0.__inject__) style0.__inject__(context)
  615. }
  616. /* normalize component */
  617. var component = Object(componentNormalizer["a" /* default */])(
  618. account_loginvue_type_script_lang_js_,
  619. render,
  620. staticRenderFns,
  621. false,
  622. injectStyles,
  623. "a0d0f46a",
  624. "54a2d336"
  625. )
  626. /* harmony default export */ var login = __webpack_exports__["default"] = (component.exports);
  627. /* nuxt-component-imports */
  628. installComponents(component, {CountDown: __webpack_require__(144).default})
  629. /***/ })
  630. };;
  631. //# sourceMappingURL=login.js.map