import { defineComponent, reactive, ref } from 'vue'; import styles from '../index.module.less'; import lockIcon from '../images/pwdIcon.png'; import useIcon from '../images/phoneIcon.png'; import { useMessage, NForm, NFormItem, NInput, NButton, NInputGroup, NModal, NSpace } from 'naive-ui'; import { useRoute, useRouter } from 'vue-router'; import { PageEnum } from '/src/enums/pageEnum'; import { storage } from '@/utils/storage'; import { useUserStore } from '/src/store/modules/users'; import { sendSms } from '../api'; import SendSms from './sendSms'; import { formLight } from 'naive-ui/es/form/styles'; interface FormState { username: string; password: string; grant_type: string; loginType: string; client_id: string; client_secret: string; } export default defineComponent({ name: 'codeLogin', props: { phone: { type: String, default: '' } }, emits: ['update:phone'], setup(props, { emit }) { const router = useRouter(); const route = useRoute(); const formRef = ref(); const message = useMessage(); const loading = ref(false); const autoLogin = ref(true); const showSmsClass = ref(false); const LOGIN_NAME = PageEnum.BASE_LOGIN_NAME; const userStore = useUserStore(); const formInline = reactive({ username: '', password: '', isCaptcha: true }); const isDisabledCode = ref(false); const starTimer = ref(60); const codeName = '发送短信'; const formInlineHistory = storage.get('userInfo-teacher'); if (formInlineHistory) { formInline.username = JSON.parse(formInlineHistory).username; } if (formInline.username) { if (formInline.username !== props.phone && props.phone) { formInline.username = props.phone; } else { emit('update:phone', formInline.username); } } else { if (props.phone) { formInline.username = props.phone; } } const handleSubmit = async () => { formRef.value.validate(async (errors: any) => { if (!errors) { const { username, password } = formInline; message.loading('登录中...'); loading.value = true; storage.set('userInfo-teacher', JSON.stringify({ username })); const params: FormState = { username, password, loginType: 'SMS', grant_type: 'password', client_id: 'cooleshow-teacher', client_secret: 'cooleshow-teacher' }; try { await userStore.login(params); // return; message.destroyAll(); // if (some.code == ResultEnum.SUCCESS) { // 判断是否勾选自动登录 if (autoLogin.value) { storage.set('userInfo', JSON.stringify(formInline)); } else { storage.remove('userInfo'); } // route.query?.redirect || const toPath = decodeURIComponent('/' as string); message.success('登录成功,即将进入系统'); if (route.name === LOGIN_NAME) { router.replace('/'); } else router.replace(toPath); // } else { // // message.info(some.msg || "登录失败"); // } } catch (e: any) { message.destroyAll(); loading.value = false; message.error(e.msg); console.log(e); } finally { loading.value = false; } } }); }; const sendMessage = async () => { // if (!formInline.username) { // message.error('请输入手机号'); // return; // } showSmsClass.value = true; // try { // const res = await sendSms({ // clientId: 'cooleshow-teacher', // mobile: formInline.username, // type: 'LOGIN' // }); // checkTimeOut(); // } catch (e) { // console.log(e); // } }; const checkTimeOut = () => { if (isDisabledCode.value) { return; } isDisabledCode.value = true; const tiemr = setInterval(() => { starTimer.value--; if (starTimer.value <= 0) { isDisabledCode.value = false; clearInterval(tiemr); } }, 1000); }; return () => (
{/*
酷乐秀课堂乐器
*/} { emit('update:phone', val); }}> {{ prefix: () => ( ) }} { if (e.code === 'Enter' || e.code === 'NumpadEnter') { handleSubmit(); } }}> {{ prefix: () => ( ), suffix: () => ( sendMessage()}> {isDisabledCode.value ? starTimer.value + 'S' : codeName} ) }}
{/* 记住密码 */}
立即登录
(showSmsClass.value = false)} onSendCode={() => { checkTimeOut(); }} />
); } });