kidArtExpo/src/store/auth/index.js

111 lines
3.0 KiB
JavaScript
Raw Normal View History

2024-08-08 09:07:42 +00:00
import {ref,computed} from 'vue'
2024-08-07 12:00:54 +00:00
import {createGlobalState,useStorage} from '@vueuse/core'
2024-08-08 09:07:42 +00:00
import {competitionApply, loginRegister, sendCode} from '@/api/auth/index.js'
2024-08-07 12:00:54 +00:00
import {message} from "@/utils/message.js"
2024-08-08 09:07:42 +00:00
import { useRouter } from 'vue-router';
2024-08-07 12:00:54 +00:00
export const useAuth=createGlobalState(()=>{
2024-08-08 09:07:42 +00:00
const router = useRouter();
2024-08-07 12:00:54 +00:00
const token = useStorage('token', '', localStorage)
const telNum =ref('')
const code=ref('')
2024-08-08 09:07:42 +00:00
const countdown = ref(0);
const isCountingDown = ref(false);
const showTextCode=computed(()=>{
return isCountingDown.value ? `${countdown.value}s` : '获取验证码'
})
const genderOptions=ref([
{text:'男',value:'男'},
{text:'女',value:'女'}
])
const formData=ref({
name:'',
age:'',
gender:'',
works:[
{
picUrl: "", //作品图片url
workName: "", //作品名称
length: undefined, //长度
wide:undefined//宽度
}
]
})
const clickAddWorks=()=>{
formData.value.works.push({
picUrl: "", //作品图片url
workName: "", //作品名称
length: undefined, //长度
wide:undefined//宽度
})
}
const removeWorks=(index)=>{
formData.value.works.splice(index,1)
}
const clickApply=async ()=>{
const data={
...formData.value
}
const res=await competitionApply(data)
if(res.status===0){
message.success('报名成功')
}
}
let timer = null;
const clickLogin=async ()=>{
const data={
telNum:telNum.value,
code:code.value
}
const res=await loginRegister(data)
if(res.status===0){
message.success('登录成功')
token.value=res.data.token
router.push('/signup')
}
}
2024-08-07 12:00:54 +00:00
const clickSendCode=async ()=>{
2024-08-08 09:07:42 +00:00
if (isCountingDown.value) return;
if (!code.value){
message.warning('请输入验证码')
return
}
2024-08-07 12:00:54 +00:00
if (!telNum.value){
message.warning('请输入手机号')
return
}
const data={
telNum:telNum.value
}
const res=await sendCode(data)
if (res.status===0){
2024-08-08 09:07:42 +00:00
countdown.value = 60;
isCountingDown.value = true;
2024-08-07 12:00:54 +00:00
message.success('发送成功')
2024-08-08 09:07:42 +00:00
timer = setInterval(() => {
if (countdown.value > 0) {
countdown.value -= 1;
} else {
clearInterval(timer);
isCountingDown.value = false;
}
}, 1000);
2024-08-07 12:00:54 +00:00
}
}
return {
2024-08-08 09:07:42 +00:00
removeWorks,
clickAddWorks,
genderOptions,
formData,
clickApply,
clickLogin,
showTextCode,
2024-08-07 12:00:54 +00:00
code,
clickSendCode,
telNum,
token
}
})