gaoluyang
2 天以前 74e6e4431b82fcd30e31f59b91bcdf2c8a5cf3f8
src/pages/login.vue
@@ -37,6 +37,9 @@
      </up-checkbox>
    </view>
  </view>
  <view class="version-wrap">
    <text class="version-text">版本号:{{ versionName }}</text>
  </view>
</template>
<script setup>
@@ -48,16 +51,22 @@
      icon: "none",
    });
  };
  import { userLoginFacotryList, updateClientId } from "@/api/login";
  import {
    userLoginFacotryList,
    updateClientId,
    getNoticeCount,
  } from "@/api/login";
  import { ref, onMounted } from "vue";
  import useUserStore from "@/store/modules/user";
  import { getWxCode } from "@/utils/geek";
  import { wxLogin } from "@/api/oauth";
  import { setToken } from "@/utils/auth";
  import View from "@/pages/procurementManagement/procurementLedger/view.vue";
  import config from "@/config";
  const userStore = useUserStore();
  const useWxLogin = ref(false); // 是否使用微信登录
  const rememberPassword = ref(false); // 记住密码
  const versionName = ref(config?.appInfo?.version || "1.0.0");
  const loginForm = ref({
    userName: "",
    password: "",
@@ -160,12 +169,55 @@
  function loginSuccess(result) {
    // 设置用户信息
    userStore.getInfo().then(res => {
      const userId = res.user.userId;
      // 获取路由权限
      userStore
        .getRouters()
        .then(() => {
          console.log("路由权限获取成功");
        })
        .catch(error => {
          console.error("获取路由权限失败:", error);
        });
      // 登录成功后,将客户端推送标识发送到服务器
      sendClientIdToServer();
      uni.switchTab({
        url: "/pages/index",
      });
      // 启动定时获取未读消息数量的定时器
      startNoticeCountTimer(userId);
      uni.switchTab({ url: "/pages/index" });
    });
  }
  // 启动定时获取未读消息数量的定时器
  function startNoticeCountTimer(userId) {
    // 立即获取一次未读消息数量
    updateNoticeCount(userId);
    // 设置定时器,每30秒获取一次
    setInterval(() => {
      updateNoticeCount(userId);
    }, 30000);
  }
  // 更新未读消息数量
  function updateNoticeCount(userId) {
    getNoticeCount(userId)
      .then(res => {
        const count = res.data || 0;
        console.log("未读消息数量:", count);
        // 更新tabbar的角标
        if (count > 0) {
          uni.setTabBarBadge({
            index: 2, // 消息标签页的索引
            text: count.toString(),
          });
        } else {
          uni.removeTabBarBadge({
            index: 2,
          });
        }
      })
      .catch(error => {
        console.error("获取未读消息数量失败:", error);
      });
  }
  // 将客户端推送标识发送到服务器
@@ -196,6 +248,35 @@
  }
  // 页面加载时检查是否有保存的密码
  onMounted(() => {
    console.log("[login-version] 开始获取登录页版本,默认值:", versionName.value);
    // #ifdef MP-WEIXIN
    try {
      const accountInfo = uni.getAccountInfoSync();
      if (accountInfo?.miniProgram?.version) {
        versionName.value = accountInfo.miniProgram.version;
        console.log("[login-version] 当前环境=MP-WEIXIN,版本=", versionName.value);
      }
    } catch (e) {
      // 获取失败时使用默认值
      console.log("[login-version] MP-WEIXIN 获取版本失败:", e);
    }
    // #endif
    // #ifdef APP-PLUS
    try {
      // @ts-ignore
      if (plus?.runtime?.version) {
        // @ts-ignore
        versionName.value = plus.runtime.version;
        console.log("[login-version] 当前环境=APP-PLUS,版本=", versionName.value);
      }
    } catch (e) {
      // 获取失败时使用默认值
      console.log("[login-version] APP-PLUS 获取版本失败:", e);
    }
    // #endif
    console.log("[login-version] 最终版本号:", versionName.value);
    loadPassword();
    getUserLoginFacotryList();
  });
@@ -299,4 +380,15 @@
      }
    }
  }
  .version-wrap {
    width: 100%;
    text-align: center;
    margin-top: 20px;
  }
  .version-text {
    font-size: 12px;
    color: #999;
  }
</style>