最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

uniapp+Vue實現(xiàn)App端用戶每日彈出簽到彈窗功能

 更新時間:2026年05月21日 10:25:52   作者:Crystal328  
用戶簽到這個功能是很多APP、小程序等都具備的,也是其成長體系中的重要環(huán)節(jié),這篇文章主要介紹了uniapp+Vue實現(xiàn)App端用戶每日彈出簽到彈窗功能的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

需求:

  • 后端提供接口返回用戶簽到信息。
  • 應(yīng)用啟動或重新展示時,若用戶未簽到,需要彈出簽到彈窗;已簽到則不彈。
  • 簽到成功后自動關(guān)閉彈窗。

思路:

  1. App.vueonShow 生命周期做全局判斷,確保在任意頁面激活時都能檢查簽到狀態(tài)。
  2. 在簽到彈窗頁 pages/checkIn/checkIn.vue 中負責(zé): 拉取簽到詳情、渲染獎勵列表、調(diào)用簽到接口并在成功后自動關(guān)閉。

實現(xiàn)步驟:

  1. 封裝接口調(diào)用方法
 // 獲取簽到信息
  getSigninInfoApi(data) {
    return http.get("/api/sign_in/info", { params: data || {} });
  },
  // 執(zhí)行簽到
  signInApi(data) {
    return http.post("/api/sign_in/sign", { data: data || {} });
  },
  1. 全局入口檢查簽到狀態(tài) (App.vue)
import { loginApi } from '@/api/login.js';

const checkSigninStatus = async () => {
  // Step 1. 檢查 token 是否存在,沒有登錄用戶不觸發(fā)簽到邏輯
  const token = uni.getStorageSync('token');
  if (!token) return;

  try {
    // Step 2. 請求簽到狀態(tài)接口
    const res = await loginApi.getSigninInfoApi({});
    if (res?.code !== 1) return; // 接口異常直接退出

    const hasSignedToday = !!res?.data?.is_signed_today;
    if (hasSignedToday) return; // 已簽到則不彈窗

    // Step 3. 打開簽到彈窗(防止重復(fù)跳轉(zhuǎn))
    const openPopup = () => {
      const pages = getCurrentPages();
      const currentPage = pages[pages.length - 1];
      if (!currentPage || currentPage.route === 'pages/checkIn/checkIn') return;

      // 輕微延遲防止路由沖突
      uni.navigateTo({
        url: '/pages/checkIn/checkIn'
      });
    };

    setTimeout(openPopup, 300);
  } catch (e) {
    console.error('檢查簽到狀態(tài)失敗:', e);
  }
};

// 在 App.vue 的 onShow 生命周期中觸發(fā)
onShow(() => {
  checkSigninStatus();
});
  1. 簽到彈窗邏輯 (pages/checkIn/checkIn.vue)
  • 頁面加載時展示簽到按鈕。
  • 點擊“簽到”后調(diào)用 loginApi.signInApi()。
  • 簽到成功后彈出提示并自動關(guān)閉彈窗。
// pages/checkIn/checkIn.vue
import { loginApi } from '@/api/login.js';

const loading = ref(false);       // 按鈕加載狀態(tài)
const isSignedToday = ref(false); // 是否已簽到

// 頁面加載時拉取簽到狀態(tài)
onShow(async () => {
  const res = await loginApi.getSigninInfoApi({});
  if (res?.code === 1) {
    isSignedToday.value = !!res.data.is_signed_today;
  }
});

// 點擊“立即簽到”按鈕
const handleSignIn = async () => {
  if (loading.value) return;
  loading.value = true;

  try {
    const res = await loginApi.signInApi({});
    if (res?.code === 1) {
      uni.showToast({
        title: '簽到成功',
        icon: 'success'
      });
      // 延遲關(guān)閉彈窗
      setTimeout(() => {
        uni.navigateBack(); // 返回上一個頁面(即關(guān)閉彈窗)
      }, 800);
    } else {
      uni.showToast({
        title: res?.msg || '簽到失敗,請稍后再試',
        icon: 'none'
      });
    }
  } catch (err) {
    console.error('簽到請求失敗:', err);
    uni.showToast({
      title: '網(wǎng)絡(luò)異常,請稍后再試',
      icon: 'none'
    });
  } finally {
    loading.value = false;
  }
};

總結(jié) 

到此這篇關(guān)于uniapp+Vue實現(xiàn)App端用戶每日彈出簽到彈窗功能的文章就介紹到這了,更多相關(guān)App端用戶每日彈出簽到彈窗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue+elementUI實現(xiàn)簡單日歷功能

    vue+elementUI實現(xiàn)簡單日歷功能

    這篇文章主要為大家詳細介紹了vue+elementUI實現(xiàn)簡單日歷功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • vue3利用store實現(xiàn)記錄滾動位置的示例

    vue3利用store實現(xiàn)記錄滾動位置的示例

    這篇文章主要介紹了vue3利用store實現(xiàn)記錄滾動位置的示例,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下
    2021-04-04
  • 3種vue路由傳參的基本模式

    3種vue路由傳參的基本模式

    這篇文章主要為大家詳細介紹了vue路由傳參的3種基本模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • vue中slot插槽的參數(shù)匯總及使用方案

    vue中slot插槽的參數(shù)匯總及使用方案

    Vue.js中的插槽(slot)是一種機制,允許你在組件的模板中預(yù)留一些位置,以便父組件可以將任意內(nèi)容插入到這些位置,這使得組件更加靈活和可復(fù)用,本文主要介紹了vue中slot插槽的參數(shù)匯總及使用方案,需要的朋友可以參考下
    2024-03-03
  • Vue3.0實現(xiàn)無限級菜單

    Vue3.0實現(xiàn)無限級菜單

    這篇文章主要為大家詳細介紹了基于Vue3.0實現(xiàn)無限級菜單,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • vue3實現(xiàn)對自定義組件自由拖動效果

    vue3實現(xiàn)對自定義組件自由拖動效果

    在數(shù)據(jù)可視化看板開發(fā)中,組件的自由拖拽功能能極大提升交互體驗,本文將基于Vue3生態(tài),從零開始解析如何實現(xiàn)一個支持自由拖拽的容器組件,感興趣的朋友一起看看吧
    2025-04-04
  • vue 獲取到數(shù)據(jù)但卻渲染不到頁面上的解決方法

    vue 獲取到數(shù)據(jù)但卻渲染不到頁面上的解決方法

    這篇文章主要介紹了vue 獲取到數(shù)據(jù)但卻渲染不到頁面上的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • vue-router的beforeRouteUpdate不觸發(fā)問題

    vue-router的beforeRouteUpdate不觸發(fā)問題

    這篇文章主要介紹了vue-router的beforeRouteUpdate不觸發(fā)問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue中插件和組件的區(qū)別點及用法總結(jié)

    vue中插件和組件的區(qū)別點及用法總結(jié)

    在本篇文章里小編給大家分享的是一篇關(guān)于vue中插件和組件的區(qū)別點及用法總結(jié)內(nèi)容,有興趣的的朋友們可以學(xué)習(xí)下。
    2021-12-12
  • 解決vue中使用less/sass及使用中遇到無效的問題

    解決vue中使用less/sass及使用中遇到無效的問題

    這篇文章主要介紹了解決vue中使用less/sass及使用中遇到無效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10

最新評論

玉山县| 崇义县| 繁峙县| 岚皋县| 农安县| 沂水县| 潮州市| 怀化市| 邹平县| 满洲里市| 苗栗县| 津南区| 浮山县| 馆陶县| 壶关县| 苗栗市| 宜宾市| 巴林左旗| 广平县| 文昌市| 长宁区| 黄平县| 吉首市| 鄂托克前旗| 梅河口市| 东方市| 呼玛县| 普安县| 即墨市| 库伦旗| 云龙县| 建德市| 柘城县| 长泰县| 通江县| 武夷山市| 康定县| 潞西市| 弥勒县| 蛟河市| 宁国市|