wlzboy
2026-03-24 6676a35122fd9c97d1b1679c211bc8a9b97f08f2
app/pages/login.vue
@@ -21,7 +21,7 @@
          <image :src="codeUrl" @click="getCode" class="login-code-img" mode="aspectFit"></image>
        </view>
      </view>
      <view class="agreement-checkbox">
      <view class="agreement-checkbox" :class="{ 'agreement-highlight': highlightAgreement }">
        <checkbox-group @change="onAgreementChange">
          <label class="checkbox-label">
            <checkbox :checked="agreedToPolicy" value="agreed" color="#007AFF" class="round-checkbox" style="margin-top: 0;" />
@@ -47,8 +47,18 @@
          <text class="cuIcon-wechat" style="margin-right: 10rpx;"></text>
        手机号码快捷登录
        </button>
        <!-- 未同意协议时,显示普通按钮,点击后弹提示 -->
        <button 
          v-else-if="isWechat"
          v-else-if="isWechat && !agreedToPolicy"
          @click="checkAgreementBeforePhone"
          class="wechat-login-btn cu-btn block bg-green lg round"
          style="margin-top: 20rpx;">
          <text class="cuIcon-wechat" style="margin-right: 10rpx;"></text>
          手机号码快捷登录
        </button>
        <!-- 已同意协议时,显示真实授权按钮 -->
        <button
          v-else-if="isWechat && agreedToPolicy"
          open-type="getPhoneNumber" 
          @getphonenumber="onGetPhoneNumber"
          class="wechat-login-btn cu-btn block bg-green lg round"
@@ -82,6 +92,8 @@
          code: "",
          uuid: ''
        },
        // 协议区域高亮提示状态
        highlightAgreement: false,
        // 微信一键登录相关
        isWechat: false, // 是否为微信小程序环境
        wechatOpenId: '', // 微信OpenID
@@ -206,6 +218,16 @@
          this.wechatUnionId = savedUnionId // 可能为null
          this.loginByOpenId()
        }
      },
      // 未同意协议时点击手机号快捷登录的处理
      checkAgreementBeforePhone() {
        this.$modal.msgError("请先阅读并同意用户协议和隐私政策")
        // 滚动到协议区域(高亮提示)
        this.highlightAgreement = true
        setTimeout(() => {
          this.highlightAgreement = false
        }, 2000)
      },
      
      // 处理获取手机号的回调
@@ -339,6 +361,12 @@
        try {
          // 检查是否有redirect参数指定跳转页面
          let redirectUrl = this.getUrlParam("redirect");
          // 如果没有redirect参数,检查是否有保存的目标页面
          if (!redirectUrl) {
            const { getTargetUrl } = require('@/utils/auth')
            redirectUrl = getTargetUrl()
          }
          
          if (redirectUrl) {
            // 解码redirect参数
@@ -495,6 +523,22 @@
        }
      }
      
      .agreement-highlight {
        animation: highlight-shake 0.5s ease-in-out;
        background-color: #fff3cd;
        border-radius: 16rpx;
        border: 2rpx solid #ffc107;
      }
      @keyframes highlight-shake {
        0% { transform: translateX(0); }
        20% { transform: translateX(-8rpx); }
        40% { transform: translateX(8rpx); }
        60% { transform: translateX(-8rpx); }
        80% { transform: translateX(8rpx); }
        100% { transform: translateX(0); }
      }
      .agreement-checkbox {
        margin: 50rpx 0 30rpx 0;
        padding: 20rpx;