首页 > 其他分享 >vue3前端代码

vue3前端代码

时间:2024-02-27 12:55:26浏览次数:26  
标签:username const 登录 data 前端 vue3 password loginForm 代码

<template>
    <div class="login-back">
      <div class="  login-container" >
        <h2>人口信息管理系统</h2>
        <el-form ref="loginFormRef" :model="loginForm" :rules="loginRules" label-position="top">
          <el-form-item prop="username" label="用户名">
            <el-input v-model="loginForm.username" placeholder="请输入用户名"></el-input>
          </el-form-item>
          <el-form-item prop="password" label="密码">
            <el-input type="password" v-model="loginForm.password" placeholder="请输入密码"></el-input>
          </el-form-item>
          <el-radio-group v-model="userType" >
            <el-radio label="admin">管理员登录</el-radio>
            <el-radio label="user">用户登录</el-radio>
          </el-radio-group>
          <el-form-item>
            <el-button  type="primary" @click="login">登录</el-button>
            <el-button  @click="register">注册</el-button>
          </el-form-item>
        </el-form>
      </div>
    </div>
  </template>
   
  <script setup>
  import {reactive, ref} from 'vue';
  import { useRouter } from 'vue-router';
  import axios from "axios";
  import {ElMessage} from "element-plus";
  const router = useRouter();
  const slideAnimation = ref('false');
   
   
  const userType = ref('admin');
  const imageU = ''
  const loginForm = reactive({
    username: '',
    password: '',
  });
  const loginRules = ref({     //若输入框为空,提示
    username: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
    password: [{ required: true, message: '请输入密码', trigger: 'blur' }],
  });
  const loginFormRef = ref(null);
 

 
 
  const login = () => {
    loginFormRef.value.validate(valid => {
      if (valid) {
        // 在这里进行登录逻辑处理
        if (userType.value === 'admin') {
          // 管理员登录
          adminLogin()
        } else {
          // 用户登录
          userLogin()
        }
      }
    });
  };
   
  const adminLogin = () => {
    const username = loginForm.username;
    const password = loginForm.password;
    localStorage.setItem('username', JSON.stringify(username));
     // 执行管理员登录逻辑
     console.log("Username:", loginForm.username);// 确保在调用 staff 函数之前 username 是正确的

     router.push({
        name: 'staff',
        params: {
            username: loginForm.username,  // 确保 loginForm.username 包含正确的用户名
            password: loginForm.password   // 确保 loginForm.password 包含正确的密码
        }
    });
    axios.get(`http://172.20.10.2:8080/getactor/${username}/${password}`)
        .then(response => {
          if(response.data==="没有该用户"){
            ElMessage.success('没有该用户');
          }else if(response.data==="登录成功"){
            ElMessage.success('管理员登录成功');
             router.push('/pindex');
          }else{
            ElMessage.success('用户名或密码错误');
          }
        })
        .catch(error => {
         
        });
  };
  const userLogin = () => {
    const username = loginForm.username;
    const password = loginForm.password;
    localStorage.setItem('username', JSON.stringify(username));
    console.log(username,password)
    axios.post("http://localhost:8080/stafflogin",{
                userid:username,
                password:password
            }).then(
                    result => {
                        if (result.data && result.data.data) {
                            if(result.data.data=="职员")
                            {
                                alert("用户欢迎登录")
                                router.push({
                                  name:'staff',
                              query:{
                                username:loginForm.username,
                                password:loginForm.password
                              }}
                                )
                            }
                            if(result.data.data=="职员经理")
                            {
                            alert("用户欢迎登录")
                           
                            }
                            if(result.data.data=="总经理")
                            {
                            alert("用户欢迎登录")
                            
                            }
                            if(result.data.data=="财务人员")
                            {
                            alert("用户欢迎登录")
                            }
                        } 
                    }).catch(error => {
                        alert("用户名或密码错误")
                        ElMessage.error('失败');
                        console.error(error); 
                    });
  }
  
  const register = () => {
    // 跳转到注册页面的路由逻辑
    if (userType.value === 'admin') {
      router.push('/sign')
      // 管理员登录
    } else {
      // 用户登录
      router.push('/sign')
    }
  };

  </script>
   
  <style>
  .l-title{
    margin-top: 200px;
    font-size: 30px;
    text-align: center;
    justify-content: center;
  }
  .login-back {
    display: flex;
    flex-direction: row;
    position: absolute;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    background-image: url("src/风景2.jpg");
  }
  .login-container {
    margin: 100px 0 0 600px ;
    max-width: 500px;
    height: 500px;
    padding: 40px;
    /*margin-top: 200px;*/
    /*margin-left: 1300px;*/
    border: 1px solid #ccc;
    border-radius: 4px;
    background-color: #cccccc;
    opacity: 0.9; /* 设置透明度为 50% */
  }
  .login-container h2 {
    text-align: center;
    margin-top:50px ;
    margin-bottom: 50px;
  }
  .el-form-item .el-button {
    margin-left: 50px; /* 设置按钮之间的间距 */
    margin-right: 30px;
  }
  .el-radio-group .el-radio {
    margin-left: 30px;
  }
  .login-c{
    margin: 200px 0 0 600px;
    padding: 0;
    width: 382px;
    height: 580px;
    border: 1px solid #ccc;
    border-radius: 4px;
    background-color: #cccccc;
    opacity: 0.9; /* 设置透明度为 50% */
  }
   
  </style>

  

  1. <template> 部分:

    • login-back 类:包含登录页面的整体背景样式。
    • login-container 类:包含登录表单的容器,设置了一些样式属性,如边框、圆角等。
    • el-form 组件:使用Element Plus提供的表单组件,绑定了表单数据、验证规则等。
    • el-input 组件:用于输入用户名和密码。
    • el-radio-group 组件:提供单选按钮组,用于选择用户类型(管理员或普通用户)。
    • el-button 组件:登录和注册按钮。
  2. <script setup> 部分:

    • 使用Vue 3中的script setup语法。
    • 引入了Vue、Vue Router、axios以及Element Plus的ElMessage组件。
    • 使用reactiveref创建响应式数据和引用。
    • 使用useRouter获取Vue Router 实例。
    • 定义了一些数据变量,如 userTypeloginFormloginRules 等,以及一些处理登录和注册逻辑的函数。
    • 使用axios进行登录验证,并通过Vue Router导航到相应页面。
  3. <style> 部分:

    • 设置了页面元素的样式,包括背景、登录容器、标题等。
    • 通过类名设置了一些样式属性,如边框、圆角、透明度等。

标签:username,const,登录,data,前端,vue3,password,loginForm,代码
From: https://www.cnblogs.com/xuechenhao173/p/18036655

相关文章

  • vite+vue3 打包代码混淆
    产品化最后一道防线,项目上线前打包时,前端代码混淆。和webpack相比,vite生态还是不够丰富,找个打包代码混淆插件好难,好在找到了rollup-plugin-obfuscator不废话,上代码1、安装代码混淆插件rollup-plugin-obfuscatoryarnadd--devrollup-plugin-obfuscatorjavascript-obfuscat......
  • AIO 简单代码示例
    客户端代码packagetest;importjava.net.InetSocketAddress;importjava.nio.ByteBuffer;importjava.nio.channels.AsynchronousSocketChannel;importjava.nio.channels.CompletionHandler;publicclassAIOClient{privatefinalAsynchronousSocketChannelclie......
  • 最新Union注入攻击及代码分析技术
    Union注入攻击Union注入攻击的测试地址在本书第2章。访问该网址时,页面返回的结果如图4-12所示。  图4-12  在URL后添加一个单引号,即可再次访问。如图4-13所示,页面返回的结果与id=1的结果不同。   图4-13  访问id=1and1=1,由于and1=1为真,所以页面应返回......
  • Vue3 [1] Vite + element-plus +Vue3 项目搭建、"@"别名设置
    1.环境准备node官网npm切换国内npm源镜像npmconfigsetregistryhttps://registry.npmmirror.com查看当前的镜像源npmconfiggetregistryvscode插件扩展包VueVolarextensionPack2.项目初始化本项目使用vite进行构建,vite官方中文文档参考:cn.......
  • 代码随想录算法训练营第二十九天| 491.递增子序列 46.全排列 47.全排列 II
    491.递增子序列题目链接:491.非递减子序列-力扣(LeetCode)思路:一开始一直报访问异常的错误,最后只好参考官网答案,结果竟然是因为我递归参数写错了导致程序一直出问题???(⊙︿⊙)这里去重用的是标记数组,可以用集合unordered_set,但由于本题数据范围比较小,所以我们可以用数组更加高效的......
  • Vue3学习(十九) - TreeSelect 树选择
    写在前面我知道自己现在的状态很不好,以为放个假能好好放松下心情,结果昨晚做梦还在工作,调试代码,和领导汇报工作。天呐,明明是在放假,可大脑还在考虑工作的事,我的天那,这是怎么了?Vue页面参数传递1、任务拆解页面跳转时带上当前电子书id参数ebookId新增/编辑文档时,读取电子书id......
  • 优雅使用前端枚举Enum,符合国标的那种!
    01、什么是枚举Enum?枚举Enum是在多种语言中都有的一种数据类型,用于表示一组特定相关的常量数据集合,如性别(男、女)、数据状态(可用、禁用)、垂直对齐(顶端、居中、底部)、星期等。特点是数据值固定,不会变,存储和显示的内容不同。然而在JavaScript中并没有枚举Enum类型,TypeScript算是有......
  • 【机器学习科学库】全md文档笔记:Matplotlib详细使用方法(已分享,附代码)
    本系列文章md笔记(已分享)主要讨论人工智能相关知识。主要内容包括,了解机器学习定义以及应用场景,掌握机器学习基础环境的安装和使用,掌握利用常用的科学计算库对数据进行展示、分析,学会使用jupyternotebook平台完成代码编写运行,应用Matplotlib的基本功能实现图形显示,应用Matplotlib......
  • day42 动态规划part4 代码随想录算法训练营 416. 分割等和子集
    题目:416.分割等和子集我的感悟:有点难,更快的解法用了01True和False所以更快理解难点:转化为背包问题听课笔记:代码示例:我优化了下classSolution:defcanPartition(self,nums:List[int])->bool:ifsum(nums)%2==1:returnFalse......
  • 代码随想录 | 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.0
    LeetCode:24.两两交换链表中的节点-力扣(LeetCode)思路:第一步:两两交换要考虑循环什么时候退出,当cur指针.next是null是就到尾部了,同理,链表不是奇数就是偶数,cur.next.next是空也是。第二步循环条件判断完了接下来要实现交换,如图所示,按步骤来就好,提前将1,2,3存好,接下来按图......