Ver Fonte

feat:登录界面

jianghaili há 3 semanas atrás
pai
commit
db5db0bf0b
2 ficheiros alterados com 282 adições e 2 exclusões
  1. 3 2
      components/nav-bar/index.vue
  2. 279 0
      pages/my/jobApplicant/loginInput.vue

+ 3 - 2
components/nav-bar/index.vue

@@ -1,9 +1,9 @@
 <template>
   <view class="nav-bar">
     <view class="go-back">
-      <u-icon name="arrow-left" color="#fff" size="32" @click="goBack"></u-icon>
+      <u-icon name="arrow-left" :color="color" size="32" @click="goBack"></u-icon>
     </view>
-    <view class="nav-title">
+    <view class="nav-title" :style="{color:color}">
       {{ title }}
     </view>
   </view>
@@ -19,6 +19,7 @@ export default {
   },
   props: {
     title: "",
+    color:''
   },
 };
 </script>

+ 279 - 0
pages/my/jobApplicant/loginInput.vue

@@ -0,0 +1,279 @@
+<template>
+  <view class="login-container">
+    <navBar title="登录" color="#000" />
+    <view class="login-content">
+      <!-- 标题 -->
+      <view class="login-header">
+        <view text="登录" size="36rpx" color="#333" bold></view>
+      </view>
+
+      <!-- 表单区域 -->
+      <view class="login-form">
+        <!-- 手机号码输入 -->
+        <view class="form-item">
+          <view class="item-label"> 手机号码 </view>
+          <u-input
+            placeholder="请输入登录的手机号码"
+            v-model="phoneNumber"
+            clearable
+            class="custom-input"
+            :customStyle="{ padding: '8rpx 24rpx ' }"
+          >
+            <template #prefix>
+              <u-icon name="phone" size="36rpx" color="#999" marginRight="20rpx"></u-icon>
+            </template>
+          </u-input>
+        </view>
+
+        <!-- 密码输入 -->
+        <view class="form-item">
+          <view class="item-label"> 登录密码 </view>
+          <u-input
+            placeholder="请输入密码"
+            v-model="password"
+            clearable
+            type="password"
+            class="custom-input"
+            :customStyle="{ padding: '8rpx 24rpx ' }"
+          >
+            <template #prefix>
+              <u-icon name="lock" size="36rpx" color="#999" marginRight="20rpx"></u-icon>
+            </template>
+          </u-input>
+          <!-- 忘记密码 -->
+          <view class="forgot-password">
+            <view @click="forgotPassword">忘记密码</view>
+          </view>
+        </view>
+
+        <!-- 登录按钮 -->
+        <u-button
+          type="primary"
+          @click="handleLogin"
+          :customStyle="{
+            marginTop: '80rpx',
+            height: '90rpx',
+            fontSize: '32rpx',
+            borderRadius: '100rpx',
+          }"
+          :disabled="!canLogin"
+          >登录</u-button
+        >
+
+        <!-- 注册链接 -->
+        <view class="register-section">
+          <view @click="goToRegister">注册</view>
+        </view>
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+import navBar from "@/components/nav-bar/index.vue";
+export default {
+  data() {
+    return {
+      phoneNumber: "", // 手机号码
+      password: "", // 密码
+    };
+  },
+  components: {
+    navBar,
+  },
+  computed: {
+    // 判断是否可以登录
+    canLogin() {
+      return this.phoneNumber.length >= 11 && this.password.length >= 6;
+    },
+  },
+  methods: {
+    // 处理登录
+    handleLogin() {
+      if (!this.validateForm()) {
+        return;
+      }
+
+      uni.showLoading({
+        title: "登录中...",
+      });
+
+      // 模拟登录请求
+      setTimeout(() => {
+        uni.hideLoading();
+        uni.showToast({
+          title: "登录成功",
+          icon: "success",
+        });
+
+        // 登录成功后的操作,比如跳转到首页
+        setTimeout(() => {
+          uni.switchTab({
+            url: "/pages/index/index",
+          });
+        }, 1500);
+      }, 2000);
+    },
+
+    // 表单验证
+    validateForm() {
+      if (!this.phoneNumber) {
+        uni.showToast({
+          title: "请输入手机号码",
+          icon: "none",
+        });
+        return false;
+      }
+
+      if (!/^1[3-9]\d{9}$/.test(this.phoneNumber)) {
+        uni.showToast({
+          title: "请输入正确的手机号码",
+          icon: "none",
+        });
+        return false;
+      }
+
+      if (!this.password) {
+        uni.showToast({
+          title: "请输入密码",
+          icon: "none",
+        });
+        return false;
+      }
+
+      if (this.password.length < 6) {
+        uni.showToast({
+          title: "密码长度不能少于6位",
+          icon: "none",
+        });
+        return false;
+      }
+
+      return true;
+    },
+
+    // 忘记密码
+    forgotPassword() {
+      uni.navigateTo({
+        url: "/pages/forgot-password/forgot-password",
+      });
+    },
+
+    // 跳转到注册页面
+    goToRegister() {
+      uni.navigateTo({
+        url: "/pages/register/register",
+      });
+    },
+
+    // 微信登录
+    wechatLogin() {
+      uni.showToast({
+        title: "微信登录",
+        icon: "none",
+      });
+    },
+
+    // QQ登录
+    qqLogin() {
+      uni.showToast({
+        title: "QQ登录",
+        icon: "none",
+      });
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.login-container {
+  background: #fff;
+  position: absolute;
+  left: 0;
+  right: 0;
+  top: 0;
+  bottom: 0;
+  .login-content {
+    padding: 32rpx;
+    box-sizing: border-box;
+  }
+}
+
+.login-header {
+  text-align: center;
+  margin-bottom: 100rpx;
+  margin-top: 60rpx;
+}
+
+.login-form {
+}
+
+.form-item {
+  margin-bottom: 32rpx;
+}
+
+.item-label {
+  color: rgba(18, 26, 44, 1);
+  font-family: Roboto;
+  font-size: 32rpx;
+  font-weight: 400;
+  line-height: 51.2rpx;
+  letter-spacing: 0px;
+  text-align: left;
+  padding-bottom: 6rpx;
+}
+
+.custom-input {
+  box-sizing: border-box;
+  border: 2rpx solid rgba(158, 161, 168, 1);
+  border-radius: 24rpx;
+  background: rgba(255, 255, 255, 1);
+  padding: 8rpx 24rpx !important;
+}
+
+.forgot-password {
+  text-align: left;
+  margin-top: 8rpx;
+  color: rgba(102, 112, 133, 1);
+  font-family: Inter;
+  font-size: 24rpx;
+  font-weight: 400;
+  line-height: 40rpx;
+}
+
+.register-section {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  margin-top: 32rpx;
+  color: #016bf6;
+
+  font-family: Inter;
+  font-size: 12px;
+  font-weight: 400;
+  line-height: 20px;
+  letter-spacing: 0%;
+  text-align: right;
+  text-decoration-line: underline;
+}
+
+.other-login {
+  margin-top: 100rpx;
+}
+
+.divider-line {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  margin-bottom: 60rpx;
+}
+
+.line {
+  flex: 1;
+  height: 1rpx;
+  background: #e0e0e0;
+}
+::v-deep .u-input {
+  text-align: left !important;
+}
+</style>