自来水发票系统管理前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

163 lines
5.0 KiB

<style lang="less">
@import './login.less';
</style>
<template>
<div class="login" @keydown.enter="handleSubmit">
<div class="login-con">
<Card icon="md-log-in" title="欢迎使用本系统" :bordered="false">
<div class="form-con">
<Form ref="loginForm" :model="form" :rules="rules">
<FormItem prop="username">
<Input v-model="form.username" placeholder="请输入账号">
<span slot="prepend">
<!-- <Icon :size="16" type="ios-person"></Icon> -->
账号
</span>
</Input>
</FormItem>
<FormItem prop="password">
<Input type="password" v-model="form.password" placeholder="请输入密码">
<span slot="prepend">
<!-- <Icon :size="14" type="md-lock"></Icon> -->
密码
</span>
</Input>
</FormItem>
<FormItem class="margin-bottom-15">
<Button type="primary" long :loading="loading" @click="handleSubmit">登录</Button>
</FormItem>
</Form>
</div>
</Card>
</div>
</div>
</template>
<script>
import { mapActions } from 'vuex'
import { filterAsyncRouter } from '@/libs/router-utils'
export default {
data () {
return {
form: {
username: '',
password: ''
},
rules: {
username: [
{ required: true, message: '账号不能为空', trigger: 'blur' }
],
password: [
{ required: true, message: '密码不能为空', trigger: 'blur' }
]
},
loading: false
}
},
created () {
let p = this.$route.params.loginType
let q = this.$route.query
if (p) {
this.$Spin.show()
let vm = this
switch (p) {
case 'qq':
loginByQQ(q).then(response => {
vm.$Spin.hide()
vm.$store.commit('setUserInfo', response.data.data)
vm.$store.commit('setToken', response.data.data.apiAuth)
vm.$store.commit('updateMenuList', filterAsyncRouter(response.data.data.menu))
sessionStorage.setItem('dynamicRouter', JSON.stringify(response.data.data.menu))
sessionStorage.setItem('ApiAdmin_AppInfo', '管理员')
vm.$router.push({
name: 'home'
})
})
break
case 'wx':
wx(q).then(response => {
vm.$Spin.hide()
vm.$store.commit('setUserInfo', response.data.data)
vm.$store.commit('setToken', response.data.data.apiAuth)
vm.$store.commit('updateMenuList', filterAsyncRouter(response.data.data.menu))
sessionStorage.setItem('dynamicRouter', JSON.stringify(response.data.data.menu))
sessionStorage.setItem('ApiAdmin_AppInfo', '管理员')
vm.$router.push({
name: 'home'
})
})
break
default :
this.$Spin.hide()
break
}
}
},
methods: {
...mapActions([
'handleLogin'
]),
handleSubmit () {
let vm = this
let username = vm.form.username
let password = vm.form.password
vm.$refs.loginForm.validate((valid) => {
if (valid) {
vm.loading = true
vm.handleLogin({ username, password }).then(() => {
sessionStorage.setItem('ApiAdmin_AppInfo', '管理员')
vm.$router.push({
name: 'home'
})
vm.loading = false
}).catch(() => {
vm.loading = false
})
}
})
},
qqLogin () {
getQQCode().then(response => {
window.location.href = 'https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=' +
response.data.data.appId + '&redirect_uri=' + response.data.data.redirectUri +
'&response_type=code&state=' + response.data.data.state
})
},
wxLoginBak () {
let vm = this
vm.wxQrModel = true
getQr().then(function (response) {
vm.wxQrUrl = response.data.data.qrUrl
let checkWx = setInterval(function () {
checkWxLogin({ state: response.data.data.state }).then(res => {
if (res.data.code === 1) {
vm.$store.commit('setUserInfo', res.data.data)
vm.$store.commit('setToken', res.data.data.apiAuth)
vm.$Message.success(res.data.msg)
vm.$router.push({
name: 'home'
})
clearInterval(checkWx)
}
}).catch(() => {
clearInterval(checkWx)
})
}, 3000)
})
},
wxLogin () {
getWxCode().then(response => {
window.location.href = 'https://open.weixin.qq.com/connect/qrconnect?appid=' +
response.data.data.appId + '&redirect_uri=' + response.data.data.redirectUri +
'&response_type=code&scope=snsapi_login&state=' + response.data.data.state + '#wechat_redirect'
})
}
}
}
</script>