学生管理 + 用户管理(Element版)(三)

简介: 学生管理 + 用户管理(Element版)

2.2.3 前端:页面

  • 步骤:
  • 步骤1:注册编写路由
  • 步骤2:创建注册页面
  • 步骤3:拷贝注册表单

0f30166569514962ae42f085d578fc41.png

步骤1:注册编写路由

35c25a2c6d0042d5b10975324b447ad2.png

  {
    path: '/register',
    name: '注册',
    component: () => import('../views/Register.vue')
  },

步骤2:创建注册页面

ddafd51a1d08485e8626f9110f4aac50.png

步骤3:拷贝注册表单

<template>
  <el-card class="register-card">
    <el-form ref="form" :model="user" label-width="80px" size="mini">
      <el-form-item label="用户名">
        <el-input v-model="user.username" prefix-icon="el-icon-user" placeholder="请输入用户名"></el-input>
      </el-form-item>
      <el-form-item label="密码">
        <el-input v-model="user.password" prefix-icon="el-icon-lock" show-password placeholder="请输入密码"></el-input>
      </el-form-item>
      <el-form-item label="确认密码">
        <el-input v-model="user.repassword" prefix-icon="el-icon-lock" show-password placeholder="请输入确认密码"></el-input>
      </el-form-item>
      <el-form-item label="生日">
        <el-date-picker type="date" placeholder="选择生日" v-model="user.birthday"></el-date-picker>
      </el-form-item>
      <el-form-item label="学历">
        <el-select v-model="user.edu" placeholder="请选择学历">
          <el-option label="大班" value="db"></el-option>
          <el-option label="中班" value="zb"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="性别">
        <el-radio-group v-model="user.gender">
          <el-radio label="1">男</el-radio>
          <el-radio label="0">女</el-radio>
        </el-radio-group>
      </el-form-item>
      <el-form-item label="爱好">
        <el-checkbox-group v-model="user.hobbies">
          <el-checkbox label="cy" name="type">抽烟</el-checkbox>
          <el-checkbox label="hj" name="type">喝酒</el-checkbox>
          <el-checkbox label="tt" name="type">烫头</el-checkbox>
        </el-checkbox-group>
      </el-form-item>
      <el-form-item label="婚否">
        <el-switch v-model="user.marry"></el-switch>
      </el-form-item>
      <el-form-item label="省市县">
        <el-cascader
          v-model="user.citys"
          :options="cityList"
          :props="{ expandTrigger: 'hover' }"
          ></el-cascader>
      </el-form-item>
      <el-form-item>
        <el-button type="primary">注册</el-button>
        <el-button type="info">重置</el-button>
      </el-form-item>
    </el-form>
    {{ user }}
  </el-card>
</template>
<script>
export default {
  data() {
    return {
      user: {
        hobbies: [] ,     //必须是数组
      },
      cityList: [
        {
          value: 'js',
          label: '江苏省',
          children: [
            {
              value: 'nj',
              label: '南京市',
            },
            {
              value: 'sq',
              label: '宿迁市',
              children: [
                {
                  value: 'sy',
                  label: '沭阳县',
                  children: [
                    {
                      value: 'nh',
                      label: '南湖街道',
                    },
                    {
                      value: 'mx',
                      label: '梦溪街道',
                    }
                  ]
                },
                {
                  value: 'sh',
                  label: '泗洪县',
                }
              ]
            }
          ]
        },
        {
          value: 'hb',
          label: '河北省',
        }
      ]
    }
  },
}
</script>
<style>
  .register-card {
    width: 500px;
  }
</style>

2.2.4 前端:自定义校验

  • 步骤
  • 步骤1:完成用户名普通校验(必填、长度3-6)
  • 步骤2:自定义ajax用户名校验
  • 步骤1:完成用户名普通校验(必填、长度3-6)

ce73bac313994201ac67cea68169c327.png

<template>
  <el-card class="register-card">
    <el-form ref="registerForm" :rules="registerRules" :model="user" label-width="80px" size="mini">
      <el-form-item label="用户名" prop="username">
        <el-input v-model="user.username" prefix-icon="el-icon-user" placeholder="请输入用户名"></el-input>
      </el-form-item>
      <el-form-item label="密码">
        <el-input v-model="user.password" prefix-icon="el-icon-lock" show-password placeholder="请输入密码"></el-input>
      </el-form-item>
      <el-form-item label="确认密码">
        <el-input v-model="user.repassword" prefix-icon="el-icon-lock" show-password placeholder="请输入确认密码"></el-input>
      </el-form-item>
      <el-form-item label="生日">
        <el-date-picker type="date" placeholder="选择生日" v-model="user.birthday"></el-date-picker>
      </el-form-item>
      <el-form-item label="学历">
        <el-select v-model="user.edu" placeholder="请选择学历">
          <el-option label="大班" value="db"></el-option>
          <el-option label="中班" value="zb"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="性别">
        <el-radio-group v-model="user.gender">
          <el-radio label="1">男</el-radio>
          <el-radio label="0">女</el-radio>
        </el-radio-group>
      </el-form-item>
      <el-form-item label="爱好">
        <el-checkbox-group v-model="user.hobbies">
          <el-checkbox label="cy" name="type">抽烟</el-checkbox>
          <el-checkbox label="hj" name="type">喝酒</el-checkbox>
          <el-checkbox label="tt" name="type">烫头</el-checkbox>
        </el-checkbox-group>
      </el-form-item>
      <el-form-item label="婚否">
        <el-switch v-model="user.marry"></el-switch>
      </el-form-item>
      <el-form-item label="省市县">
        <el-cascader
          v-model="user.citys"
          :options="cityList"
          :props="{ expandTrigger: 'hover' }"
          ></el-cascader>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="register">注册</el-button>
        <el-button type="info">重置</el-button>
      </el-form-item>
    </el-form>
    {{ user }}
  </el-card>
</template>
<script>
export default {
  data() {
    return {
      user: {
        hobbies: [] ,     //必须是数组
      },
      cityList: [
        {
          value: 'js',
          label: '江苏省',
          children: [
            {
              value: 'nj',
              label: '南京市',
            },
            {
              value: 'sq',
              label: '宿迁市',
              children: [
                {
                  value: 'sy',
                  label: '沭阳县',
                  children: [
                    {
                      value: 'nh',
                      label: '南湖街道',
                    },
                    {
                      value: 'mx',
                      label: '梦溪街道',
                    }
                  ]
                },
                {
                  value: 'sh',
                  label: '泗洪县',
                }
              ]
            }
          ]
        },
        {
          value: 'hb',
          label: '河北省',
        }
      ],
      registerRules: {
        username: [
          { required: true, message: '请输入用户名', trigger: 'blur' },
          { min: 3, max: 6, message: '长度在 3 到 6 个字符', trigger: 'blur' }
        ],
      },
    }
  },
  methods: {
    register() {
      this.$refs.registerForm.validate((valid) => {
        if (valid) {
          // 校验通过
        } else {
          // 没通过
          console.log('error submit!!');
          return false;
        }
      });
    }
  },
}
</script>
<style>
  .register-card {
    width: 500px;
  }
</style>

步骤2:自定义ajax用户名校验

b9aa42dcb3fb49f49b79d803ed744803.png

<template>
  <el-card class="register-card">
    <el-form ref="registerForm" :rules="registerRules" :model="user" label-width="80px" size="mini">
      <el-form-item label="用户名" prop="username">
        <el-input v-model="user.username" prefix-icon="el-icon-user" placeholder="请输入用户名"></el-input>
      </el-form-item>
      <el-form-item label="密码">
        <el-input v-model="user.password" prefix-icon="el-icon-lock" show-password placeholder="请输入密码"></el-input>
      </el-form-item>
      <el-form-item label="确认密码">
        <el-input v-model="user.repassword" prefix-icon="el-icon-lock" show-password placeholder="请输入确认密码"></el-input>
      </el-form-item>
      <el-form-item label="生日">
        <el-date-picker type="date" placeholder="选择生日" v-model="user.birthday"></el-date-picker>
      </el-form-item>
      <el-form-item label="学历">
        <el-select v-model="user.edu" placeholder="请选择学历">
          <el-option label="大班" value="db"></el-option>
          <el-option label="中班" value="zb"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="性别">
        <el-radio-group v-model="user.gender">
          <el-radio label="1">男</el-radio>
          <el-radio label="0">女</el-radio>
        </el-radio-group>
      </el-form-item>
      <el-form-item label="爱好">
        <el-checkbox-group v-model="user.hobbies">
          <el-checkbox label="cy" name="type">抽烟</el-checkbox>
          <el-checkbox label="hj" name="type">喝酒</el-checkbox>
          <el-checkbox label="tt" name="type">烫头</el-checkbox>
        </el-checkbox-group>
      </el-form-item>
      <el-form-item label="婚否">
        <el-switch v-model="user.marry"></el-switch>
      </el-form-item>
      <el-form-item label="省市县">
        <el-cascader
          v-model="user.citys"
          :options="cityList"
          :props="{ expandTrigger: 'hover' }"
          ></el-cascader>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="register">注册</el-button>
        <el-button type="info">重置</el-button>
      </el-form-item>
    </el-form>
    {{ user }}
  </el-card>
</template>
<script>
import axios from 'axios'
export default {
  data() {
    // 自定义校验器   var 函数名 = 箭头函数(规则,数据,回调函数)
    // 校验通过:callback();
    // 校验失败:callback(new Error('失败原因'));
    var validateUsername = async (rule, value, callback) => {
      // 1 发送ajax根据用户查询
      var url = `http://localhost:8888/user/check`
      let { data: baseResult } = await axios.post(url,{username: value})
      // 2 根据结果处理:20000通过,否则失败
      if(baseResult.code == 20000) {
        // 2.1 成功
        callback();
      } else {
        // 2.2 失败
        callback(new Error(baseResult.message));
      }
    };
    return {
      user: {
        hobbies: [] ,     //必须是数组
      },
      cityList: [
        {
          value: 'js',
          label: '江苏省',
          children: [
            {
              value: 'nj',
              label: '南京市',
            },
            {
              value: 'sq',
              label: '宿迁市',
              children: [
                {
                  value: 'sy',
                  label: '沭阳县',
                  children: [
                    {
                      value: 'nh',
                      label: '南湖街道',
                    },
                    {
                      value: 'mx',
                      label: '梦溪街道',
                    }
                  ]
                },
                {
                  value: 'sh',
                  label: '泗洪县',
                }
              ]
            }
          ]
        },
        {
          value: 'hb',
          label: '河北省',
        }
      ],
      registerRules: {
        username: [
          { required: true, message: '请输入用户名', trigger: 'blur' },         //内置校验:必填
          { min: 3, max: 6, message: '长度在 3 到 6 个字符', trigger: 'blur' }, //内置校验:长度
          { validator: validateUsername, trigger: 'blur' }                          //自定义校验:用户名校验 validateUsername
        ],
      },
    }
  },
  methods: {
    register() {
      this.$refs.registerForm.validate((valid) => {
        if (valid) {
          // 校验通过
        } else {
          // 没通过
          console.log('error submit!!');
          return false;
        }
      });
    }
  },
}
</script>
<style>
  .register-card {
    width: 500px;
  }
</style>

页面展示

41cfb8f57e9f4a4280698c6d7f463f42.png

96a862b10b7b49e1bd6907b275835952.png

2712bb5081b546ec9781adc8692c202d.png

e416e5c8cad24315af1d9c4209bd1171.png

f32367ce80934834ac89395e263eed11.png


相关文章
|
8月前
|
JavaScript 前端开发 数据安全/隐私保护
【vue实战项目】通用管理系统:登录页
【vue实战项目】通用管理系统:登录页
78 2
|
8月前
|
JavaScript API
【vue实战项目】通用管理系统:信息列表,信息的编辑和删除
【vue实战项目】通用管理系统:信息列表,信息的编辑和删除
71 2
|
7月前
|
监控 数据安全/隐私保护
若依修改---功能详解--权限控制,demo超级管理员,可以查看所有功能菜单,zhangsan,登录之后,仅可以查看线索的菜单,不同角色岗位,登录查看的内容不同,若依通过用户管理,角色管理,菜单管理控
若依修改---功能详解--权限控制,demo超级管理员,可以查看所有功能菜单,zhangsan,登录之后,仅可以查看线索的菜单,不同角色岗位,登录查看的内容不同,若依通过用户管理,角色管理,菜单管理控
|
9月前
|
自然语言处理 数据安全/隐私保护 开发者
wikijs的基本操作-网站配置和用户管理
wikijs的基本操作-网站配置和用户管理
|
9月前
|
JavaScript
❤❤❤常用模板❤❤❤Vue常用后台管理系统增删改查列表(表格)模板
❤❤❤常用模板❤❤❤Vue常用后台管理系统增删改查列表(表格)模板
|
存储 SQL JSON
​​Layui之用户管理实例(对数据的增删改查)
​​Layui之用户管理实例(对数据的增删改查)
121 0
Vue--element实现编辑会员功能
Vue--element实现编辑会员功能
|
JavaScript 前端开发 程序员
Vue用户管理(增删改查)功能详情(下)
Vue用户管理(增删改查)功能详情(下)
131 0
Vue用户管理(增删改查)功能详情(下)
|
JavaScript API
Vue用户管理(增删改查)功能详情(上)
Vue用户管理(增删改查)功能详情(上)
184 0
Vue用户管理(增删改查)功能详情(上)
|
JSON 前端开发 数据安全/隐私保护
学生管理 + 用户管理(Element版)(二)
学生管理 + 用户管理(Element版)
87 0
学生管理 + 用户管理(Element版)(二)