wlzboy
2025-10-26 ed209eeb52e8d778ab2b3e8c86a3e63a924e53ec
app/pages/login.vue
@@ -1,9 +1,9 @@
<template>
  <view class="normal-login-container">
  <scroll-view class="normal-login-container" scroll-y="true">
    <view class="logo-content align-center justify-center flex">
      <image style="width: 100rpx;height: 100rpx;" :src="globalConfig.appInfo.logo" mode="widthFix">
      </image>
      <text class="title">若依移动端登录</text>
      <text class="title">民航调度系统</text>
    </view>
    <view class="login-form-content">
      <view class="input-item flex align-center">
@@ -14,28 +14,25 @@
        <view class="iconfont icon-password icon"></view>
        <input v-model="loginForm.password" type="password" class="input" placeholder="请输入密码" maxlength="20" />
      </view>
      <view class="input-item flex align-center" style="width: 60%;margin: 0px;" v-if="captchaEnabled">
      <view class="input-item flex align-center captcha-container" v-if="captchaEnabled">
        <view class="iconfont icon-code icon"></view>
        <input v-model="loginForm.code" type="number" class="input" placeholder="请输入验证码" maxlength="4" />
        <view class="login-code"> 
          <image :src="codeUrl" @click="getCode" class="login-code-img"></image>
          <image :src="codeUrl" @click="getCode" class="login-code-img" mode="aspectFit"></image>
        </view>
      </view>
      <view class="action-btn">
        <button @click="handleLogin" class="login-btn cu-btn block bg-blue lg round">登录</button>
      </view>
      <view class="reg text-center" v-if="register">
        <text class="text-grey1">没有账号?</text>
        <text @click="handleUserRegister" class="text-blue">立即注册</text>
      </view>
      <view class="xieyi text-center">
        <text class="text-grey1">登录即代表同意</text>
        <text @click="handleUserAgrement" class="text-blue">《用户协议》</text>
        <text @click="handlePrivacy" class="text-blue">《隐私协议》</text>
        <text @click.stop="handleUserAgrement" class="text-blue agreement-link">《用户协议》</text>
        <text class="text-grey1">和</text>
        <text @click.stop="handlePrivacy" class="text-blue agreement-link">《隐私协议》</text>
      </view>
    </view>
  </view>
  </scroll-view>
</template>
<script>
@@ -50,8 +47,8 @@
        register: false,
        globalConfig: getApp().globalData.config,
        loginForm: {
          username: "admin",
          password: "admin123",
          username: "",
          password: "",
          code: "",
          uuid: ''
        }
@@ -67,13 +64,11 @@
      },
      // 隐私协议
      handlePrivacy() {
        let site = this.globalConfig.appInfo.agreements[0]
        this.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`)
        this.$tab.navigateTo('/pages/mine/privacy-policy/index')
      },
      // 用户协议
      handleUserAgrement() {
        let site = this.globalConfig.appInfo.agreements[1]
        this.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`)
        this.$tab.navigateTo('/pages/mine/user-agreement/index')
      },
      // 获取图形验证码
      getCode() {
@@ -127,6 +122,24 @@
  .normal-login-container {
    width: 100%;
    min-height: 100vh;
    // 隐藏滚动条但保持滚动功能
    ::-webkit-scrollbar {
      display: none;
      width: 0 !important;
      height: 0 !important;
      background: transparent;
    }
    // Firefox滚动条隐藏
    * {
      scrollbar-width: none; /* Firefox */
    }
    // IE/Edge滚动条隐藏
    * {
      -ms-overflow-style: none; /* IE 10+ */
    }
    .logo-content {
      width: 100%;
@@ -158,45 +171,97 @@
        .icon {
          font-size: 38rpx;
          margin-left: 10px;
          color: #999;
        }
        .input {
          margin-left: 20rpx;
          width: 100%;
          font-size: 14px;
          line-height: 20px;
          text-align: left;
          padding-left: 15px;
          height: 45px;
          background: none;
        }
      }
      .captcha-container {
        width: 100%;
        margin: 20px auto;
        background-color: #f5f6f7;
        height: 45px;
        border-radius: 20px;
        padding-right: 10rpx;
        box-sizing: border-box;
        .icon {
          font-size: 38rpx;
          margin-left: 10px;
        }
        .input {
          margin-left: 20rpx;
          width: 60%;
          height: 45px;
          background: none;
        }
        .login-code {
          width: 30%;
          height: 45px;
          margin-left: 10rpx;
          border-left: 1px solid #e0e0e0;
          display: flex;
          align-items: center;
          justify-content: center;
          .login-code-img {
            max-width: 100%;
            max-height: 45px;
            object-fit: contain;
            cursor: pointer;
          }
        }
      }
      .login-btn {
        margin-top: 40px;
        height: 45px;
      .action-btn {
        margin: 40rpx 0;
        .login-btn {
          height: 90rpx;
          font-size: 32rpx;
        }
      }
      .reg {
        margin-top: 15px;
        margin: 20rpx 0;
        .text-grey1 {
          color: #888;
        }
        .text-blue {
          margin: 0 10rpx;
          color: #007AFF;
        }
      }
      
      .xieyi {
        color: #333;
        margin-top: 20px;
      }
      .login-code {
        height: 38px;
        float: right;
        .login-code-img {
          height: 38px;
          position: absolute;
          margin-left: 10px;
          width: 200rpx;
        margin: 50rpx 0 30rpx 0;
        padding: 20rpx 0;
        line-height: 2;
        .text-grey1 {
          color: #888;
          font-size: 24rpx;
        }
        .agreement-link {
          color: #007AFF;
          font-size: 24rpx;
          padding: 10rpx 8rpx;
          margin: 0 5rpx;
          display: inline-block;
          position: relative;
          z-index: 10;
        }
      }
    }
  }
</style>
</style>