function login() { return Vue.component('login', function (resolve, reject) { axios.get("/login.html").then(function (response) { resolve({ template: response.data, data() { return { name: 'login' }; }, mounted: function () { console.log('mounted:login'); weui.form.checkIfBlur('#form', this.regexp); }, computed: { regexp: function () { return { regexp: { userName: /^[^\s]+/, password: /^[^\s]+$/ } }; }, user: function () { return this.$store.user; } }, methods: { submit: function () { weui.form.validate('#form', function (error) { if (!error) { var loading = weui.loading('提交中...'); var form = $("#form"); var url = form.attr('action'); var data = form.serializeJSON(); axios.post(url, data).then(function (response) { token = response.data.accessToken; localStorage.setItem("accessToken", token); refreshToken = response.data.refreshToken; localStorage.setItem("refreshToken", refreshToken); router.push('/'); }).catch(function (error) { console.log(error.response); var data = error.response.data; var key = error.response.data.key; if (key) { $("[name='" + key + "']").parents('.weui-cell').addClass('weui-cell_warn'); } weui.topTips(data.message, { duration: 3000 }); }).finally(function () { loading.hide(); }); } else { console.log(error); } }, this.regexp); } } }) }); }); }