罗广辉
2026-05-15 e3c2cd23253f3501be7d31e03955fbb6f4aa3556
src/pages/login/index.vue
@@ -11,8 +11,14 @@
      <image :src="passwordSvg" />
      <input
        v-model="loginForm.password"
        type="password"
        type="text"
        :password="showPassword"
        placeholder="请输入密码"
      />
      <image
        class="pass-word-icon"
        :src="passwordTriggerIcon"
        @click="showPassWord"
      />
    </div>
    <div class="remember-password">
@@ -30,6 +36,14 @@
    <button class="login-btn" :style="[inputStyle]" @tap="submit">登录</button>
    <image class="lowerRightCorner" :src="droneSvg" />
    <!-- #ifdef MP-WEIXIN -->
    <GetPrivacy
      ref="privacyComponent"
      position="center"
      @allowPrivacy="allowPrivacy"
    />
    <!-- #endif -->
  </view>
</template>
@@ -38,7 +52,9 @@
import md5 from "js-md5";
import { loginByUsername } from "@/api/user/index.js";
import { useUserStore } from "@/store/index.js";
// #ifdef MP-WEIXIN
import GetPrivacy from "@/components/GetPrivacy.vue";
// #endif
import { HOME_PATH, LOGIN_PATH, removeQueryString } from "@/router";
import { onMounted } from "vue";
@@ -46,6 +62,8 @@
const usernameSvg = getAssetsImage("/images/login/username.png");
const passwordSvg = getAssetsImage("/images/login/password.png");
const logoSvg = getAssetsImage("/images/login/logo.png");
const passwordShow = getAssetsImage("/images/password-show.png");
const passwordHide = getAssetsImage("/images/password-hide.png");
const userStore = useUserStore();
const loginForm = ref({
@@ -132,6 +150,16 @@
  }
}
const showPassword = ref(true);
const showPassWord = () => {
  showPassword.value = !showPassword.value;
};
const passwordTriggerIcon = computed(() => {
  return showPassword.value ? passwordHide : passwordShow;
});
// 从本地存储加载记住的密码
onMounted(() => {
  const savedUserInfo = uni.getStorageSync("rememberedUser");
@@ -147,6 +175,28 @@
    redirect = decodeURIComponent(options.redirect);
  }
});
// #ifdef MP-WEIXIN
const allowPrivacy = () => {
  // 同意隐私协议触发事件,有些接口需要同意授权后才能执行,比如获取手机号授权接口,可以在同意隐私协议后,再执行授权获取手机号接口,如果不需要可以不添加该方法
  console.log("同意隐私授权");
};
const privacyComponent = ref(null);
// onShow(() =>{
//   wx.getPrivacySetting({
//     success: res => {
//       console.log(res)
//       if (!res.needAuthorization) {
//         privacyComponent?.value?.closePrivacy()
//         // 查询授权,针对有tab切换的页面,可以在onshow中查询隐私授权状态,判断在tab切换后是否需要关闭授权弹框
//         console.log('已经同意隐私授权,不需要再次授权')
//       }
//     },
//     fail: () => {},
//     complete: () => {}
//   })
// })
// #endif
</script>
<style lang="scss" scoped>
@@ -203,10 +253,16 @@
      margin-right: 12rpx;
    }
    .pass-word-icon {
      margin-left: 12rpx;
      margin-right: 0;
    }
    :deep(uni-input) {
      height: 40rpx;
      line-height: 40rpx;
      width: 80%;
      width: 0;
      flex: 1;
      margin-top: 20rpx;
      padding: 0 !important;
    }
@@ -214,7 +270,8 @@
    :deep(input) {
      height: 40rpx;
      line-height: 40rpx;
      width: 80%;
      width: 0;
      flex: 1;
      margin-top: 20rpx;
      padding: 0 !important;
      margin: 0 !important;