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
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|