zoukankan      html  css  js  c++  java
  • vue 登陆页面

    <template>
      <div>
        <el-form ref="loginForm" :model="loginForm" :rules="rules" class="loginContainer">
          <h3 class="loginTitle">系统登录</h3>
          <el-form-item prop="username">
            <el-input type="text" auto-complete="false" v-model="loginForm.username" placeholder="请输入用户名"></el-input>
          </el-form-item>
          <el-form-item prop="password">
            <el-input type="text" auto-complete="false" v-model="loginForm.password" placeholder="请输入密码"></el-input>
          </el-form-item>
          <el-form-item prop="code">
            <el-input type="text" v-model="loginForm.code" placeholder="点击图片更换验证码" style="250px; margin-right: 5px"></el-input>
            <img :src="captchaUrl" @click="updateCaptcha()">
          </el-form-item>
    
          <el-checkbox v-model="checked" class="loginRemember">记住我</el-checkbox>
          <el-button type="primary" style="100%" @click="submitLogin">登录</el-button>
        </el-form>
      </div>
    </template>
    
    <script>
      import {postRequest} from "@/utils/api";
    
      export default {
        name: "Login",
        data(){
          return{
            captchaUrl:'/captcha?time='+new Date(),
            loginForm:{
              username:'admin',
              password:'123',
              code:''
            },
            checked: true,
            rules:{
              username:[{required:true,message:'请输入用户名',trigger:'blur'}],
              password: [{required:true,message:'请输入密码',trigger:'blur'}],
              code: [{required:true,message:'请输入验证码',trigger:'blur'}]
            }
          }
        },
        methods:{
          submitLogin(){
            this.$refs.loginForm.validate((valid) => {
              if (valid) {
                // alert('submit!');
                postRequest('/login',this.loginForm).then(res=>{
                  alert(res);
                })
              } else {
                this.$message.error('错了哦,请将信息填写完整');
                return false;
              }
            });
          },
          updateCaptcha(){
            this.captchaUrl = '/captcha?time='+new Date()
          }
        }
      }
    </script>
    
    <style>
      .loginContainer{
        border-radius: 15px;
        background-clip: padding-box;
        margin: 188px auto;
        width: 358px;
        padding: 15px 35px;
        background: #fff;
        border:1px solid #eaeaea;
        box-shadow: 0 0 25px #cac6c6;
      }
    
      .loginTitle{
        text-align: center;
        margin: 8px auto 48px auto;
      }
    
      .loginRemember{
        text-align: left;
        margin: 0 0 15px 0;
      }
    
      .el-form-item__content{
        display: flex;
        align-items: center;
      }
    </style>

    api.js

    import axios from 'axios'
    import {Message} from 'element-ui'
    import router from '../router'
    
    
    //响应拦截器
    axios.interceptors.response.use(success=>{
        //业务逻辑错误
        if(success.status&& success.status == 200) {
            if(success.data.code == 500 || success.data.code ==401||success.data.code==403){
                Message.error({message:success.data.message});
                return;
            }
            if(success.data.message){
                Message.success({message:success.data.message})
            }
        }
        return success.data;
    },error => {
        if(error.response.code == 504 || error.response.code == 404){
            Message.error({message:'服务器挂起'});
        }else if(error.response.code == 403){
            Message.error({message:'权限不足,请联系管理员'});
        }else if(error.response.code== 401){
            Message.error({message:'尚未登录,请登录'})
            router.replace('/');
        }else{
            if(error.response.data.message){
                Message.error({message:error.response.data.message});
            } else {
                Message.error({message:'未知错误'});
            }
        }
        return;
    });
    
    let base = ''
    
    //传送json格式的post请求
    export const postRequest = (url,params)=>{
        return axios(
            {
                method:'post',
                url:`${base}${url}`,
                data: params,
            }
        )
    }

    vue.config.js

    let proxyObj={}
    
    proxyObj['/']={
        ws:false,
        //目标地址
        target:'http://localhost:8081',
        //发送请求头host会被设置target
        changeOrigin: true,
        pathRewrite:{
            '^/':'/'
        }
    
    
    }
    
    module.exports={
        devServer:{
            host:'localhost',
            port:8888,
            proxy: proxyObj
        }
    }

    router

    import Vue from 'vue'
    import VueRouter from 'vue-router'
    import Login from '../views/Login'
    
    Vue.use(VueRouter)
    
    const routes = [
      {
        path: '/',
        name: 'Login',
        component: Login
      }
    ]
    
    const router = new VueRouter({
      routes
    })
    
    export default router

    package

    {
      "name": "selectproject",
      "version": "0.1.0",
      "private": true,
      "scripts": {
        "serve": "vue-cli-service serve",
        "build": "vue-cli-service build"
      },
      "dependencies": {
        "axios": "^0.24.0",
        "core-js": "^3.6.5",
        "element-ui": "^2.15.6",
        "vue": "^2.6.11",
        "vue-router": "^3.2.0"
      },
      "devDependencies": {
        "@vue/cli-plugin-babel": "~4.5.0",
        "@vue/cli-plugin-router": "~4.5.0",
        "@vue/cli-service": "~4.5.0",
        "vue-template-compiler": "^2.6.11"
      },
      "browserslist": [
        "> 1%",
        "last 2 versions",
        "not dead"
      ]
    }
  • 相关阅读:
    my first aws native 19c rac ​​​​
    Geeks3D FurMark
    Best Graphics Card Benchmarking Softwares in 2020
    通过机器学习发现文本中的见解和关系
    pip intsall 遇到的各种问题
    python中利用redis构建任务队列(queue)
    fake-useragent,python爬虫伪装请求头
    如何将python3.6软件的py文件打包成exe程序
    python 时间和时间戳的转换
    Python
  • 原文地址:https://www.cnblogs.com/qing0228/p/15540588.html
Copyright © 2011-2022 走看看