首页 > 其他分享 >vue3开发

vue3开发

时间:2024-02-27 12:55:53浏览次数:19  
标签:username const 登录 loginForm 开发 vue3 password data

主界面的模板

<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>

界面样式

 用于登录界面样式的实现以及跳转功能

标签:username,const,登录,loginForm,开发,vue3,password,data
From: https://www.cnblogs.com/xuechenhao173/p/18036653

相关文章

  • vue3前端代码
    <template><divclass="login-back"><divclass="login-container"><h2>人口信息管理系统</h2><el-formref="loginFormRef":model="loginForm":rules="loginRule......
  • VSCode+Vim 开发
    VSCode+Vim开发一、安装及配置vim插件0.安装vim拓展1.拷贝配置到settings.json中settings.json在"文件"->"首选项"->"设置"->"文本编辑器"{"vim.easymotion":true,"vim.incsearch":true,"vim.useSystemCl......
  • ## 进行开发5
    在完成的数据库操作后,自己看到别人的app都有图表,于是自己也尝试学了下安卓中的图表。刚开始学习过程有些坎坷,但学习后发现并没有自己想象的那么难,因为图表是使用第三方库进行创建的,所以自己不用再创建相关的方法,想要实现某种样式,只需要自己调用第三方库中方法,修改相关的设置属性......
  • 如何做到对扩展开发,修改关闭
    这条原则,难以理解,那是因为,”怎么样的带啊吗改动才被定义为扩展“,怎么样的代码才被定义为”修改“,怎么样才算妈祖开闭原则?修改代码就一定意味着违背开闭原则吗?等等这些问题都比较难以理解。 这条原则最有用,那是因为,扩展性是代码质量的重要的衡量标准之一。在23中经典的设计模......
  • delphi 提高unigui开发效率的两个方法
    1、编译时自己退出运行的程序。在做unigui开发时,每次编译运行时,unigui的应用都会在后台运行,每次重新编译时都必须手工在任务栏里将应用退出才行,非常麻烦,可以在项目编译的参数里加上杀进程的命令,这样每次重新编译时就会自动将旧的进程杀掉。命令参数如下:taskkill/f/im$(OUTPUT......
  • vite+vue3 打包代码混淆
    产品化最后一道防线,项目上线前打包时,前端代码混淆。和webpack相比,vite生态还是不够丰富,找个打包代码混淆插件好难,好在找到了rollup-plugin-obfuscator不废话,上代码1、安装代码混淆插件rollup-plugin-obfuscatoryarnadd--devrollup-plugin-obfuscatorjavascript-obfuscat......
  • 【用vue开发微信小程序】(uni-app)(自用,不推荐参考)
    【用vue开发微信小程序】(uni-app)(自用,不推荐参考):https://blog.csdn.net/sp_zhaoyun/article/details/126054403?spm=1001.2101.3001.6650.17&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-17-126054403-blog-130321374.235%5Ev43%......
  • Android Compose开发
    目录好处入门Composable布局其他组件列表verticalScroll延迟列表内容内边距性能修饰符偏移量requiredSize滚动添加间距SpacerButtonContext文字图片TextField重组状态提升viewmodel互相调用AndroidView项目学习其他text加一个背景paddingzIndexLaunchedEffectDisposableEffectpa......
  • 微服务架构项目开发过程中,如何让服务调用自己的服务
    背景在微服务架构项目开发过程中,经常需要调试代码,由于开发人员较多,某个服务会启动多个节点,经常出现调试的时候,程序逻辑走到别人的服务中,影响问题定位,(甚至有时候,其它同事的服务调不通,影响开发)解决方案可以通过配置feignclient指定自己的IP,如下示例:@FeignClient(value="服务......
  • 基于Rust的Tile-Based游戏开发杂记(01)导入
    什么是Tile-Based游戏?Tile-based游戏是一种使用tile(译为:瓦片,瓷砖)作为基本构建单位来设计游戏关卡、地图或其他视觉元素的游戏类型。在这样的游戏中,游戏世界的背景、地形、环境等都是由一系列预先定义好的小图片(即tiles)拼接而成的网格状结构。每个tile通常代表一个固定的尺寸区域,......