register.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556
  1. exports.ids = [22,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. /***/ 227:
  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__(288);
  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("50b261ce", content, true, context)
  229. };
  230. /***/ }),
  231. /***/ 287:
  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_register_vue_vue_type_style_index_0_id_42129c30_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(227);
  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_register_vue_vue_type_style_index_0_id_42129c30_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_register_vue_vue_type_style_index_0_id_42129c30_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_register_vue_vue_type_style_index_0_id_42129c30_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_register_vue_vue_type_style_index_0_id_42129c30_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  238. /***/ }),
  239. /***/ 288:
  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, ".register-container[data-v-42129c30]{flex:1}.register-container .register-box[data-v-42129c30]{padding-top:40px;padding-bottom:55px;width:880px;border:1px solid #e5e5e5}.register-container .register-box .register-title[data-v-42129c30]{font-size:24px}.register-container .register-box .form-box .register-form-item[data-v-42129c30]{margin-top:24px}.register-container .register-box .form-box .register-form-item .form-input[data-v-42129c30]{width:400px}.register-container .register-box .form-box .register-form-item .verify-code-img[data-v-42129c30]{width:100px;height:40px;margin-left:26px;background-color:red}.register-container .register-box .form-box .register-form-item .sms-btn[data-v-42129c30]{margin-left:16px;height:40px;width:120px}", ""]);
  246. // Exports
  247. module.exports = ___CSS_LOADER_EXPORT___;
  248. /***/ }),
  249. /***/ 351:
  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/register.vue?vue&type=template&id=42129c30&scoped=true&
  255. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"register-container flex-col row-center col-center"},[_vm._ssrNode("<div class=\"register-box flex-col col-center bg-white\" data-v-42129c30>","</div>",[_vm._ssrNode("<div class=\"register-title\" data-v-42129c30>注册账号</div> "),_c('el-form',{staticClass:"form-box flex-col"},[_c('div',{staticClass:"register-form-item"},[_c('el-input',{staticClass:"form-input",attrs:{"placeholder":"请输入手机号码"},model:{value:(_vm.telephone),callback:function ($$v) {_vm.telephone=$$v},expression:"telephone"}},[_c('i',{staticClass:"el-icon-user",staticStyle:{"font-size":"18px"},attrs:{"slot":"prepend"},slot:"prepend"})])],1),_vm._v(" "),(_vm.registerSetting)?_c('div',{staticClass:"register-form-item flex"},[_c('el-input',{staticClass:"form-input",staticStyle:{"width":"264px"},attrs:{"placeholder":"短信验证码"},model:{value:(_vm.smsCode),callback:function ($$v) {_vm.smsCode=$$v},expression:"smsCode"}},[_c('i',{staticClass:"el-icon-lock",staticStyle:{"font-size":"18px"},attrs:{"slot":"prepend"},slot:"prepend"})]),_vm._v(" "),_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":""},on:{"finish":function($event){_vm.canSend = true}}})],1)],1):_vm._e(),_vm._v(" "),_c('div',{staticClass:"register-form-item"},[_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),_vm._v(" "),_c('div',{staticClass:"register-form-item"},[_c('el-input',{attrs:{"placeholder":"再次输入密码","show-password":""},model:{value:(_vm.againPwd),callback:function ($$v) {_vm.againPwd=$$v},expression:"againPwd"}},[_c('i',{staticClass:"el-icon-key",staticStyle:{"font-size":"18px"},attrs:{"slot":"prepend"},slot:"prepend"})])],1),_vm._v(" "),_c('div',{staticClass:"flex row-between",staticStyle:{"margin-top":"36px"}},[_c('nuxt-link',{attrs:{"to":"/account/login"}},[_vm._v("已有账号,去登录")])],1),_vm._v(" "),_c('div',{staticClass:"m-t-20 flex-col"},[_c('el-button',{attrs:{"type":"primary"},on:{"click":_vm.registerFun}},[_vm._v("立即注册")])],1)])],2)])}
  256. var staticRenderFns = []
  257. // CONCATENATED MODULE: ./pages/account/register.vue?vue&type=template&id=42129c30&scoped=true&
  258. // EXTERNAL MODULE: ./utils/type.js
  259. var type = __webpack_require__(149);
  260. // EXTERNAL MODULE: ./components/count-down.vue + 5 modules
  261. var count_down = __webpack_require__(144);
  262. // 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/register.vue?vue&type=script&lang=js&
  263. //
  264. //
  265. //
  266. //
  267. //
  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. /* harmony default export */ var registervue_type_script_lang_js_ = ({
  345. head() {
  346. return {
  347. title: this.$store.getters.headTitle,
  348. link: [{
  349. rel: 'icon',
  350. type: 'image/x-icon',
  351. href: this.$store.getters.favicon
  352. }]
  353. };
  354. },
  355. layout: 'main',
  356. components: {
  357. CountDown: count_down["default"]
  358. },
  359. data() {
  360. return {
  361. telephone: '',
  362. smsCode: '',
  363. password: '',
  364. againPwd: '',
  365. canSend: true
  366. };
  367. },
  368. computed: {
  369. registerSetting() {
  370. return this.$store.state.config.register_setting;
  371. }
  372. },
  373. methods: {
  374. async sendSMSCode() {
  375. if (!this.canSend) {
  376. return;
  377. }
  378. let res = await this.$post('sms/send', {
  379. mobile: this.telephone,
  380. key: type["c" /* SMSType */].REGISTER
  381. });
  382. if (res.code == 1) {
  383. this.$message({
  384. message: res.msg,
  385. type: 'success'
  386. });
  387. this.canSend = false;
  388. }
  389. },
  390. async registerFun() {
  391. if (!this.telephone) {
  392. this.$message({
  393. message: '请输入手机号',
  394. type: 'error'
  395. });
  396. return;
  397. }
  398. if (this.registerSetting && !this.smsCode) {
  399. this.$message({
  400. message: '请输入短信验证码',
  401. type: 'error'
  402. });
  403. return;
  404. }
  405. if (!this.password) {
  406. this.$message({
  407. message: '请输入密码',
  408. type: 'error'
  409. });
  410. return;
  411. }
  412. if (this.password != this.againPwd) {
  413. this.$message({
  414. message: '两次密码输入不一致',
  415. type: 'error'
  416. });
  417. return;
  418. }
  419. let res = await this.$post('account/register', {
  420. mobile: this.telephone,
  421. password: this.password,
  422. code: this.smsCode,
  423. client: type["d" /* client */]
  424. });
  425. if (res.code == 1) {
  426. this.$message({
  427. message: '注册成功',
  428. type: 'success'
  429. });
  430. this.$router.replace('/account/login');
  431. }
  432. }
  433. }
  434. });
  435. // CONCATENATED MODULE: ./pages/account/register.vue?vue&type=script&lang=js&
  436. /* harmony default export */ var account_registervue_type_script_lang_js_ = (registervue_type_script_lang_js_);
  437. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  438. var componentNormalizer = __webpack_require__(1);
  439. // CONCATENATED MODULE: ./pages/account/register.vue
  440. function injectStyles (context) {
  441. var style0 = __webpack_require__(287)
  442. if (style0.__inject__) style0.__inject__(context)
  443. }
  444. /* normalize component */
  445. var component = Object(componentNormalizer["a" /* default */])(
  446. account_registervue_type_script_lang_js_,
  447. render,
  448. staticRenderFns,
  449. false,
  450. injectStyles,
  451. "42129c30",
  452. "2640ac57"
  453. )
  454. /* harmony default export */ var register = __webpack_exports__["default"] = (component.exports);
  455. /* nuxt-component-imports */
  456. installComponents(component, {CountDown: __webpack_require__(144).default})
  457. /***/ })
  458. };;
  459. //# sourceMappingURL=register.js.map