2021-03-16

项目-登录

1.启动后台项目

进入 vue-api-server 目录,运行如下命令,进行恢复安装

npm install

创建导入数据库后运行以下命令启动项目后台

node app.js

2.项目初始化

2.1码云创建仓库

创建仓库 shop-vue

并且把项目上传到仓库 以免电脑出问题丢失项目

在这里插入图片描述

2.2 本地创建项目

执行如下命令,在本地创建项目(建议目录中不要有中文),按照提示一步步操作

vue create vue-shop

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.3 将本地项目推送到远程仓库

在这里插入图片描述

按照上面说明,进行本地操作

  • 本地 vue-shop 目录下新建 README.md ,可以使用 touch 命令,或者手动创建
  • 添加 README.md 到暂存区 git add README.md
  • 提交更改 git commit -m 'first commit
  • 添加对应的远程仓库 git remote add origin … ,注意要使用自己的地址,别用我的地址
  • 推送本地仓库到远程仓库 git push -u origin master

3.配置element-ui

先安装

npm i element-ui -S

在main.js中引入:

import Element from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(Element)

4.实现登录功能

创建新分支login,在新分支上进行开发

git checkout -b login

git branch

安装less-loader

npm install less less-loader --save-dev

5.页面代码

登录主页面代码:

<template>
  <div class="login-container">
    <div class="login-box">
      <!-- 网站logo -->
      <div class="logo-box">
        <img src="./image/22.jpg" alt />
      </div>
      <!-- 表单 -->
      <el-form ref="form" :model="loginForm" class="loginForm" :rules="rules">
        <el-form-item prop="username">
          <el-input
            v-model="loginForm.username"
            placeholder="输入用户名"
            prefix-icon="el-icon-user-solid"
          ></el-input>
        </el-form-item>
        <el-form-item prop="password">
          <el-input
            v-model="loginForm.password"
            placeholder="输入密码"
            prefix-icon="el-icon-view"
          ></el-input>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="submitForm('form')">登录</el-button>
          <el-button type="info">重置</el-button>
        </el-form-item>
      </el-form>
    </div>
  </div>
</template>
<script>
export default {
  data () {
    return {
      loginForm: {
        username: '',
        password: ''
      },
      rules: {
        username: [
          { required: true, message: '用户名不能为空', trigger: 'blur' },
          { min: 3, max: 6, message: '长度在 3 到 6 个字符', trigger: 'blur' }
        ],
        password: [
          { required: true, message: '密码不能为空', trigger: 'blur' },
          { min: 6, max: 12, message: '长度在 6 到 12 个字符', trigger: 'blur' }
        ]
      }
    }
  },
  methods: {
    async submitForm (form) {
      try {
        await this.$refs.form.validate()
        // 验证通过继续执行登录逻辑
        const res = await this.$http.post('login', this.loginForm)

        const { status, msg } = res.data.meta
        if (status === 400) {
          console.log(msg)
          return false
        }
        localStorage.setItem('token', res.data.data.token)
        this.$router.push('home')
      } catch (err) {
        console.log(err)
      }
      // this.$refs.form.validate(valid => {
      //   console.log(valid)
      //   if (valid === false) {
      //     console.log('验证失败')
      //     return false
      //   }
      //   // console.log(this.$http)

      //   this.$http.post('login', this.loginForm).then(res => {
      //     const status = res.data.meta.status
      //     if (status === 400) {
      //       // 登陆失败 显示错误
      //       console.log(res.data.meta.msg)
      //     } else {
      //       localStorage.setItem('token', res.data.data.token)
      //     }
      //   })
      // })
    }
  }
}
</script>
<style lang="less" scoped>
.login-container {
  background-color: #303133;
  height: 100%;
  .login-box {
    width: 450px;
    height: 310px;
    background-color: #fff;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    border-radius: 5px;
    .logo-box {
      position: absolute;
      width: 150px;
      height: 150px;
      left: 50%;
      transform: translate(-50%, -50%);
      border-radius: 50%;
      background: #fff;
      padding: 5px;
      box-shadow: 0 0 10px #eee;
      img {
        width: 100%;
        height: 100%;
        border-radius: 50%;
      }
    }
    .loginForm {
      position: absolute;
      top: 120px;
      width: 100%;
      padding: 0 20px;
      box-sizing: border-box;
      text-align: center;
    }
  }
}
</style>

登录成功页面:

<template>
  <div class="home">
    this is home
    <el-button type="info" @click="logout"> 退出 </el-button>
  </div>
</template>
<script>
export default {
  methods: {
    logout () {
      window.sessionStorage.clear()
      this.$router.push('/login')
    }
  }

}
</script>
<style lang="less" scoped>
</style>

路由:

import Vue from 'vue'
import VueRouter from 'vue-router'
// 下面导入的是login目录下的index.vue 可省略
import Login from '../views/login/index.vue'
import Home from '..//views/Home/index.vue'

Vue.use(VueRouter)

const routes = [
  {
    path: '/login',
    name: 'Login',
    component: Login
  },
  {
    path: '/home',
    name: 'Home',
    component: Home
  }
]

const router = new VueRouter({
  routes
})

export default router

6.运行截图

登陆页面:

在这里插入图片描述

登陆成功:

在这里插入图片描述

2021-03-26 20:54:33,596 - Model - INFO - Epoch 1 (1/200): 2021-03-26 20:57:40,380 - Model - INFO - Train Instance Accuracy: 0.571037 2021-03-26 20:58:16,623 - Model - INFO - Test Instance Accuracy: 0.718528, Class Accuracy: 0.627357 2021-03-26 20:58:16,623 - Model - INFO - Best Instance Accuracy: 0.718528, Class Accuracy: 0.627357 2021-03-26 20:58:16,623 - Model - INFO - Save model... 2021-03-26 20:58:16,623 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 2021-03-26 20:58:16,698 - Model - INFO - Epoch 2 (2/200): 2021-03-26 21:01:26,685 - Model - INFO - Train Instance Accuracy: 0.727947 2021-03-26 21:02:03,642 - Model - INFO - Test Instance Accuracy: 0.790858, Class Accuracy: 0.702316 2021-03-26 21:02:03,642 - Model - INFO - Best Instance Accuracy: 0.790858, Class Accuracy: 0.702316 2021-03-26 21:02:03,642 - Model - INFO - Save model... 2021-03-26 21:02:03,643 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 2021-03-26 21:02:03,746 - Model - INFO - Epoch 3 (3/200): 2021-03-26 21:05:15,349 - Model - INFO - Train Instance Accuracy: 0.781606 2021-03-26 21:05:51,538 - Model - INFO - Test Instance Accuracy: 0.803641, Class Accuracy: 0.738575 2021-03-26 21:05:51,538 - Model - INFO - Best Instance Accuracy: 0.803641, Class Accuracy: 0.738575 2021-03-26 21:05:51,539 - Model - INFO - Save model... 2021-03-26 21:05:51,539 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 我有类似于这样的一段txt文件,请你帮我写一段代码来可视化这些训练结果
02-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值