vue——>Login.vue & Register.vue

Login.vue 原始版

<template>
  <div>
      <!-- 弹框提示 -->
      <el-button type="primary" @click="dialogFormVisible = true">登 陆</el-button>
      <el-dialog  :visible.sync="dialogFormVisible">
        <!-- 登陆表单区域 -->
        <el-form ref="loginFormRef" :model="formLogin" status-icon
                 :rules="loginFormRules"
                 class="demo-ruleForm" size="medium">
          <!-- 表单项 -->
          <el-form-item label="手机号" prop="mobile">
            <el-input v-model="formLogin.mobile" autocomplete="off" placeholder="请输入手机号"></el-input>
          </el-form-item>
          <el-form-item label="密码" prop="password">
            <el-input type="password" v-model="formLogin.password" autocomplete="off" placeholder="请输入密码"></el-input>
          </el-form-item>
        </el-form>

        <div slot="footer" class="dialog-footer">
          <el-button type="primary" @click="resetLoginForm">重 置</el-button>
          <el-button type="danger" @click="dialogFormVisible = false">取 消</el-button>
          <el-button type="success" @click="LoginClick">登 陆</el-button>
        </div>
      </el-dialog>
  </div>
</template>

<script>

export default {
   
    name: 'Login',
    data () {
   

      // 验证手机号
      let validateMobile = (rule,value,callback) => {
   
        // 手机号格式: 正则表达式
        let reg = /^1[3456789]\d{9}$/;
        if (value === '') {
   
          callback(new Error('请输入手机号'));
        } else if (!reg.test(value)) {
   
          callback(new Error('手机号格式有误'));
        } else {
   
          callback()
        }
      };

      return {
   
        // 提交数据
        formLogin: {
   
          mobile: "",
          username: "",
          password: "",
        },
        // 这是表单的验证规则对象
        loginFormRules: {
   
          // 验证用户名是否合法
          username: [
            {
    required: true, message: '请输入登陆名称', trigger:'blur'},
            {
    min: 3,max: 10, message: '长度在 3 到 10 个字符',trigger:'blur'}
          ],
          // 验证密码是否合法
          password: [
            {
    required: true, message: '请输入登陆密码', trigger:'blur'},
            {
    min: 6,max: 15, message: '长度在 6 到 15个字符', trigger: 'blur'}
          ],
          // 验证手机号
          mobile: [
            {
    validator: validateMobile, trigger: 'blur'}
          ]
        },
        dialogFormVisible: false,
      }
    },

    methods: {
   

      // 点击重置按钮,重置登陆表单
      resetLoginForm () {
   
        this.$refs.loginFormRef.resetFields()
      },

      // 登陆
      LoginClick (){
   
        this.$refs.loginFormRef.validate(async valid =>{
   
          if (!valid) return;
          // 登陆模块
          const {
   data: res} = await this.$http.post('login',this.formLogin)
          if (res.meta.status !== 200) return this.$message.error('登陆失败!')
          this.$message.success('登陆成功')
          // 1. 登陆成功后,将token保存到浏览器的 sessionStorage中
          window.sessionStorage.setItem('token',res.data.token)
          // 2. 通过编程式导航跳转到后台主页
          await this.$router.push('/article')
        });
      }
    }
}

</script>

<style scoped>

</style>

Login.vue 改良版

<template>
  <div>
      <!-- 弹框提示 -->
      <el-button class="login" type="primary" @click="dialogFormVisible = true">登 陆</el-button>
      <el-dialog  :visible.sync="dialogFormVisible">
        <!-- 登陆表单区域 -->
        <el-form ref="loginFormRef" :model="formLogin" status-icon
                 :rules="loginFormRules"
                 class="demo-ruleForm" size="medium">
          <!-- 表单项 -->
          <el-form-item prop="mobile">
            <el-input v-model="formLogin.mobile" autocomplete="off" placeholder="请输入手机号"></el-input>
          </el-form-item>
          <el-form-item prop="password">
            <el-input type="password" v-model="formLogin.password" autocomplete="off" placeholder="请输入密码"></el-input>
          </el-form-item>
        </el-form>

        <div slot="footer" class="dialog-footer">
          <el-button type="primary" @click="resetLoginForm">重 置</el-button>
          <el-button type="danger" @click="dialogFormVisible = false">取 消</el-button>
          
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个基本的 Vue.js 登录和注册页面组件编完整的示例。 首先,我们需要创建两个组件:`Login.vue` 和 `Register.vue`。 `Login.vue` 组件模板代码如下: ```html <template> <div> <h2>Login</h2> <form> <div> <label>Username:</label> <input type="text" v-model="username" required> </div> <div> <label>Password:</label> <input type="password" v-model="password" required> </div> <button @click.prevent="login()">Login</button> </form> </div> </template> <script> export default { data() { return { username: '', password: '', } }, methods: { login() { // 进行登录操作 } } } </script> ``` `Register.vue` 组件模板代码如下: ```html <template> <div> <h2>Register</h2> <form> <div> <label>Username:</label> <input type="text" v-model="username" required> </div> <div> <label>Password:</label> <input type="password" v-model="password" required> </div> <button @click.prevent="register()">Register</button> </form> </div> </template> <script> export default { data() { return { username: '', password: '', } }, methods: { register() { // 进行注册操作 } } } </script> ``` 接下来,我们需要在主应用程序中使用这些组件。 ```html <template> <div> <router-link to="/login">Login</router-link> <router-link to="/register">Register</router-link> <router-view></router-view> </div> </template> <script> import Login from './views/Login.vue' import Register from './views/Register.vue' export default { components: { Login, Register, }, } </script> ``` 在这个示例中,我们使用了 Vue Router 来处理路由。我们使用 `<router-link>` 组件来创建链接,使用 `<router-view>` 组件来显示当前路由的组件。 最后,我们需要在路由器中定义这些路由: ```javascript import Vue from 'vue' import Router from 'vue-router' import Login from './views/Login.vue' import Register from './views/Register.vue' Vue.use(Router) export default new Router({ routes: [ { path: '/login', component: Login, }, { path: '/register', component: Register, }, ], }) ``` 现在,我们已经创建了一个基本的 Vue.js 登录和注册页面组件,可以通过路由访问它们。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值