vue+element实现登录预验证和重置信息

        <el-form-item>
          <el-button type="primary" size="small" @click="login">登录</el-button>
          <el-button type="info" size="small" @click="resetLogin">重置</el-button>
        </el-form-item>

关于element里两个方法的解释

 有了token值 才可实现页面的跳转

//存入token值 没有接口        
window.sessionStorage.setItem("token",123)
this.$router.push('/home')


//有接口
window.sessionStorage.setItem("token",res.data.token)
this.$router.push('/home')

<template>
  <div class="login">
    <div class="login_box">
      <!-- 頭像區域 -->
      <div class="img_box">
        <img :src="imgUrl" alt="" srcset="" />
      </div>
      <!-- 表單區域 -->
      <el-form
        label-width="80px"
        class="login_form"
        ref="loginFrom"
        :model="loginFrom"
        :rules="loginRules"
        hide-required-asterisk="true"
      >
        <el-form-item label="用户名" prop="userName">
          <el-input
            v-model.trim="loginFrom.userName"
            prefix-icon="el-icon-user"
          ></el-input>
        </el-form-item>
        <el-form-item label="密码" prop="password">
          <el-input
            v-model.trim="loginFrom.password"
            prefix-icon="el-icon-goods"
            type="password"
          ></el-input>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" size="small" @click="login">登录</el-button>
          <el-button type="info" size="small" @click="resetLogin">重置</el-button>
        </el-form-item>
      </el-form>
    </div>
  </div>
</template>
<script>
import imgPath from "@/assets/logo.png";
export default {
  data() {
    return {
      //   imgUrl: require('@/assets/logo.png'), 插入图片
      imgUrl: imgPath,
      //登录表单的数据绑定对象
      loginFrom: {
        userName: "",
        password: "",
      },
      //登录表单的路由规则
      loginRules: {
          userName: [
            { required: true, message: "用户名不能为空", trigger: "blur" },
          ],
          password: [
            { required: true, message: "密码s不能为空", trigger: "blur" },
            { min: 3, max: 12, message: '长度在 3 到 12 个字符', trigger: 'blur' }
          ],
      }
    };
  },
  methods: {
      //登录
      login(){
        this.$refs.loginFrom.validate(valid=>{  //表单登录前的预验证 满足路由rules里的条件 返回布尔值
        console.log(!valid);
        if (!valid) return; //!valid取反 不满足条件意味false 为false就返回
        window.sessionStorage.setItem("token",123)  //没有接口 存的假token
        this.$router.push('/home') //有了token 才可实现跳转
        })
      },
      //重置按钮
      resetLogin(){
        this.$refs.loginFrom.resetFields();   //清除信息
      }
  },
};
</script>
<style scoped>
.login {
  height: 100vh;
  width: 100%;
  background-color: #2b4b6b;
}
.login_box {
  width: 450px;
  height: 300px;
  background-color: #fff;
  border-radius: 3px;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}
.img_box {
  height: 130px;
  width: 130px;
  border: 2px solid #eee;
  border-radius: 50%;
  position: absolute;
  left: 50%;
  transform: translate(-50%, -50%);
  background-color: #fff;
  box-shadow: 0 0 0 2px #ddd;
}
.img_box img {
  width: 100%;
  height: 100%;
  border-radius: 50%;
  padding: 2px;
}
.login_form {
  position: absolute;
  top: 30%;
  left: 10%;
}
</style>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的用`Vue`和`Element UI`实现的增删改查页面的代码: ```html <template> <div> <el-form :model="form" :rules="rules" ref="form" label-width="100px"> <el-form-item label="姓名" prop="name"> <el-input v-model="form.name"></el-input> </el-form-item> <el-form-item label="年龄" prop="age"> <el-input v-model.number="form.age"></el-input> </el-form-item> <el-form-item label="性别" prop="gender"> <el-radio-group v-model="form.gender"> <el-radio :label="1">男</el-radio> <el-radio :label="2">女</el-radio> </el-radio-group> </el-form-item> <el-form-item label="地址" prop="address"> <el-input v-model="form.address"></el-input> </el-form-item> <el-form-item label="电话" prop="phone"> <el-input v-model.number="form.phone"></el-input> </el-form-item> </el-form> <el-button type="primary" @click="submitForm">提交</el-button> <el-button type="danger" @click="resetForm">重置</el-button> <el-table :data="tableData" style="width: 100%"> <el-table-column label="姓名" prop="name"></el-table-column> <el-table-column label="年龄" prop="age"></el-table-column> <el-table-column label="性别" prop="gender"></el-table-column> <el-table-column label="地址" prop="address"></el-table-column> <el-table-column label="电话" prop="phone"></el-table-column> <el-table-column label="操作"> <template slot-scope="scope"> <el-button type="primary" size="mini" @click="editItem(scope.$index, scope.row)">编辑</el-button> <el-button type="danger" size="mini" @click="deleteItem(scope.$index, scope.row)">删除</el-button> </template> </el-table-column> </el-table> <el-dialog :visible.sync="dialogVisible" title="编辑" :close-on-click-modal="false"> <el-form :model="editForm" :rules="rules" ref="editForm" label-width="100px"> <el-form-item label="姓名" prop="name"> <el-input v-model="editForm.name"></el-input> </el-form-item> <el-form-item label="年龄" prop="age"> <el-input v-model.number="editForm.age"></el-input> </el-form-item> <el-form-item label="性别" prop="gender"> <el-radio-group v-model="editForm.gender"> <el-radio :label="1">男</el-radio> <el-radio :label="2">女</el-radio> </el-radio-group> </el-form-item> <el-form-item label="地址" prop="address"> <el-input v-model="editForm.address"></el-input> </el-form-item> <el-form-item label="电话" prop="phone"> <el-input v-model.number="editForm.phone"></el-input> </el-form-item> </el-form> <span slot="footer" class="dialog-footer"> <el-button @click="dialogVisible = false">取 消</el-button> <el-button type="primary" @click="updateItem">确 定</el-button> </span> </el-dialog> </div> </template> <script> export default { data() { return { form: { name: '', age: '', gender: '', address: '', phone: '', }, rules: { name: [ { required: true, message: '请输入姓名', trigger: 'blur' }, { min: 2, max: 10, message: '长度在 2 到 10 个字符', trigger: 'blur' } ], age: [ { required: true, message: '请输入年龄', trigger: 'blur' }, { type: 'number', message: '年龄必须为数字', trigger: 'blur' } ], gender: [ { required: true, message: '请选择性别', trigger: 'change' } ], address: [ { required: true, message: '请输入地址', trigger: 'blur' } ], phone: [ { required: true, message: '请输入电话', trigger: 'blur' }, { type: 'number', message: '电话必须为数字', trigger: 'blur' } ] }, tableData: [ { name: '张三', age: 18, gender: '男', address: '北京市', phone: 1234567890 }, { name: '李四', age: 20, gender: '女', address: '上海市', phone: 1357924680 } ], dialogVisible: false, editForm: { name: '', age: '', gender: '', address: '', phone: '', }, editIndex: -1 } }, methods: { submitForm() { this.$refs.form.validate((valid) => { if (valid) { this.tableData.push(this.form); this.$message({ message: '提交成功', type: 'success' }); this.resetForm(); } else { this.$message.error('表单验证失败!'); } }); }, resetForm() { this.$refs.form.resetFields(); }, editItem(index, row) { this.editIndex = index; this.editForm = Object.assign({}, row); this.dialogVisible = true; }, updateItem() { this.$refs.editForm.validate((valid) => { if (valid) { this.tableData.splice(this.editIndex, 1, this.editForm); this.dialogVisible = false; this.$message({ message: '修改成功', type: 'success' }); } else { this.$message.error('表单验证失败!'); } }); }, deleteItem(index, row) { this.$confirm(`确定删除 ${row.name} 吗?`, '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { this.tableData.splice(index, 1); this.$message({ message: '删除成功', type: 'success' }); }).catch(() => { // 取消删除操作 }); } } } </script> ``` 以上代码实现了一个简单的增删改查页面,包括表单验证、表格展示、弹窗编辑等功能。你可以根据需要修改代码,适应自己的业务需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值