You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
import $store from '@/sheep/store';import $helper from '@/sheep/helper';import dayjs from 'dayjs';import { ref } from 'vue';import test from '@/sheep/helper/test.js';import AuthUtil from '@/sheep/api/member/auth';
// 打开授权弹框
export function showAuthModal(type = 'smsLogin') { const modal = $store('modal'); if (modal.auth !== '') { // 注意:延迟修改,保证下面的 closeAuthModal 先执行掉
setTimeout(() => { modal.$patch((state) => { state.auth = type; }); }, 500); closeAuthModal(); } else { modal.$patch((state) => { state.auth = type; }); }}
// 关闭授权弹框
export function closeAuthModal() { $store('modal').$patch((state) => { state.auth = ''; });}
// 打开分享弹框
export function showShareModal() { $store('modal').$patch((state) => { state.share = true; });}
// 关闭分享弹框
export function closeShareModal() { $store('modal').$patch((state) => { state.share = false; });}
// 打开快捷菜单
export function showMenuTools() { $store('modal').$patch((state) => { state.menu = true; });}
// 关闭快捷菜单
export function closeMenuTools() { $store('modal').$patch((state) => { state.menu = false; });}
// 发送短信验证码 60秒
export function getSmsCode(event, mobile) { const modalStore = $store('modal'); const lastSendTimer = modalStore.lastTimer[event]; if (typeof lastSendTimer === 'undefined') { $helper.toast('短信发送事件错误'); return; }
const duration = dayjs().unix() - lastSendTimer; const canSend = duration >= 60; if (!canSend) { $helper.toast('请稍后再试'); return; } // 只有 mobile 非空时才校验。因为部分场景(修改密码),不需要输入手机
if (mobile && !test.mobile(mobile)) { $helper.toast('手机号码格式不正确'); return; }
// 发送验证码 + 更新上次发送验证码时间
let scene = -1; switch (event) { case 'resetPassword': scene = 4; break; case 'changePassword': scene = 3; break; case 'changeMobile': scene = 2; break; case 'smsLogin': scene = 1; break; } AuthUtil.sendSmsCode(mobile, scene).then((res) => { if (res.code === 0) { modalStore.$patch((state) => { state.lastTimer[event] = dayjs().unix(); }); } });}
// 获取短信验证码倒计时 -- 60秒
export function getSmsTimer(event, mobile = '') { const modalStore = $store('modal'); const lastSendTimer = modalStore.lastTimer[event];
if (typeof lastSendTimer === 'undefined') { $helper.toast('短信发送事件错误'); return; }
const duration = ref(dayjs().unix() - lastSendTimer - 60); const canSend = duration.value >= 0;
if (canSend) { return '获取验证码'; }
if (!canSend) { setTimeout(() => { duration.value++; }, 1000); return -duration.value.toString() + ' 秒'; }}
// 记录广告弹框历史
export function saveAdvHistory(adv) { const modal = $store('modal');
modal.$patch((state) => { if (!state.advHistory.includes(adv.imgUrl)) { state.advHistory.push(adv.imgUrl); } });}
|