login.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { reactive, ref } from 'vue'
  2. import type { FormInstance } from 'element-plus'
  3. import { useUserStore } from '/admin/stores/modules/user'
  4. import router from '/admin/router'
  5. import { t } from '/admin/support/helper'
  6. export const useLogin = () => {
  7. const params = reactive({
  8. email: 'catch@admin.com',
  9. password: 'catchadmin',
  10. remember: false,
  11. })
  12. const loading = ref(false)
  13. const rules = reactive({
  14. email: [
  15. { required: true, message: t('login.verify.email.required'), trigger: 'blur' },
  16. { type: 'email', message: t('login.verify.email.invalid'), trigger: 'blur' },
  17. ],
  18. password: [{ required: true, message: t('login.verify.password.required'), trigger: 'blur' }],
  19. })
  20. const form = ref<FormInstance>()
  21. const submit = (loginForm: FormInstance | undefined) => {
  22. if (!loginForm) return
  23. loginForm.validate(valid => {
  24. if (valid) {
  25. loading.value = true
  26. const store = useUserStore()
  27. store
  28. .login(params)
  29. .then(() => {
  30. loading.value = false
  31. router.push({ path: '/' })
  32. })
  33. .catch(e => {
  34. loading.value = false
  35. })
  36. } else {
  37. return false
  38. }
  39. })
  40. }
  41. return {
  42. params,
  43. rules,
  44. loading,
  45. submit,
  46. form,
  47. }
  48. }