...略
<el-button round color="#626aef" class="w-[250px] " type="primary" :loading="loading" @click="onSubmit">登录</el-button>
...略
<script setup>
import { ref, reactive } from 'vue'
import { login,getinfo } from '~/api/manager'
import { useRouter } from 'vue-router'
import { setToken } from '~/composables/auth'
import { toast } from '~/composables/util'
const router = useRouter()
// do not use same name with ref
const form = reactive({
username: '',
password: '',
})
// 定义验证规则
const rules = {
username: [
{
required: true,
message: '用户名不能为空',
trigger: 'blur',
},
],
password: [
{
required: true,
message: '密码不能为空',
trigger: 'blur',
},
]
}
// 点击登录验证
const formRef = ref(null)
const loading = ref(false)
const onSubmit = () => {
formRef.value.validate((valid) => {
if (!valid) {
console.log('error')
}
// 加载按钮动画
loading.value = true
login(form.username, form.password).then(res=> {
// 存储 token
setToken(res.token)
// 消息提示
toast('登录成功')
// 测试携带 Token 访问自己个人信息
getinfo().then(res2=>{
console.log(res2)
})
// 跳转到后台
router.push('/')
})
.finally(()=> {
loading.value = false
})
})
}
</script>