| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 | import $store from '@/sheep/store';import $helper from '@/sheep/helper';import dayjs from 'dayjs';import {	ref,	computed} from 'vue';import test from '@/sheep/helper/test.js';import AuthUtil from '@/sheep/api/member/auth';import sheep from '@/sheep';import SignInApi from '@/sheep/api/member/signin';let time = 30;let timer = null;// 登录async function onSign() {	console.log("onSign")	const {		code,		data	} = await SignInApi.createSignInRecord();	if (code === 0) {		showSignUpModal(data)	}	if (timer) {		clearInterval(timer);	}	uni.setStorageSync('isRun', false);	uni.setStorageSync('isSign', true);}// 每日重置签到状态export function resetSignStatusIfNeeded() {	const today = new Date().toISOString().slice(0, 10); // 获取当前日期,格式为 YYYY-MM-DD	const lastCheckDate = uni.getStorageSync('lastCheckDate');	if (today !== lastCheckDate) {		// 如果跨天了,重置 isSign		uni.setStorageSync('isSign', false);		uni.setStorageSync('lastCheckDate', today); // 更新最后检查的日期	}}// 自动签到export function autoSign() {	resetSignStatusIfNeeded();	const isLogin = computed(() => sheep.$store('user').isLogin);	if (isLogin.value) {		// 倒计时是否在进行		// console.log("autoSign执行了")		uni.setStorageSync('isRun', true);		if (uni.getStorageSync('isRun') && !uni.getStorageSync('isSign')) {			// console.log('开始倒计时')			// 开始一个新的定时器			timer = setInterval(() => {				time--;				// console.log("time", time);				if (uni.getStorageSync('isSign') || !isLogin.value){					// console.log('已经签到了或'者已经登出了 不可以在签到')					cancelAutoSign()									}				if (time <= 0 && !uni.getStorageSync('isSign')) {					clearInterval(timer);					onSign();				}			}, 1000);		}	}}// 取消自动签到export function cancelAutoSign() {	// console.log("autoSign取消了")	if (timer) {		clearInterval(timer);	}	time = 30;	uni.setStorageSync('isRun', false);}// 打开签到弹框export function showSignUpModal(obj) {	$store('modal').$patch((state) => {		state.signUp = true;		state.signUpInfo = obj;	});}// 关闭签到弹框export function colseSignUpModal() {	$store('modal').$patch((state) => {		state.signUp = false;	});}// 打开获得积分弹窗export function showWalletModal(obj) {	$store('modal').$patch((state) => {		state.getWallet = true;		state.getWalletInfo = obj;	});}// 关闭获得积分弹窗export function colseWalletModal() {	$store('modal').$patch((state) => {		state.getWallet = false;	});}// 打开授权弹框export function showAuthModal(type = 'accountLogin', isActive = 'accountLogin') {	const modal = $store('modal');	if (modal.auth !== '') {		closeAuthModal();		setTimeout(() => {			modal.$patch((state) => {				state.auth = type;				state.isActive = isActive;			});		}, 100);	} else {		modal.$patch((state) => {			state.auth = type;			state.isActive = isActive;		});	}}// 关闭授权弹框export function closeAuthModal() {	$store('modal').$patch((state) => {		state.auth = '';	});}// 打开分享弹框export function showShareModal(spuId = 0) {	$store('modal').$patch((state) => {		state.share = true;		state.shareInfo.spuId = spuId;	});}// 关闭分享弹框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];	// console.log(lastSendTimer)	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 'changeMobileOld':			scene = 2;			break;		case 'changeMobileNew':			scene = 5;			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);		}	});}
 |