创新项目实训开发日志4

news2025/4/25 11:09:11

一、开发简介

核心工作内容:logo实现、注册实现、登录实现、上传gitee

工作时间:第十周

二、logo实现

1.设计logo

2.添加logo

const logoUrl = new URL('@/assets/images/logo.png', import.meta.url).href
<div class="aside-first">
   <el-image  :src="logoUrl" :fit="'scale-down'" />
</div>
.aside-first {
      @include hold(100, 10);
      @include position-center-box("row,column");
    }

三、注册实现

1.配置后端

  • 下载后端代码
  • 配置MySql数据库
  • 利用Postman测试后端功能

2.页面开发

<!--注册抽屉-->
      <el-drawer v-model="drawer" :direction="direction">

        <el-form ref="registerForm" :model="registerData" :rules="registerRules"  label-width="80px">
          <el-form-item label="手机号" prop="phone">
            <el-input v-model="registerData.phone" placeholder="请输入手机号" />
          </el-form-item>

          <el-form-item label="密码" prop="password">
            <el-input v-model="registerData.password" placeholder="请输入密码" show-password />
          </el-form-item>

          <el-form-item label="姓名" prop="name">
            <el-input v-model="registerData.name" placeholder="请输入姓名" />
          </el-form-item>

          <el-form-item>
            <el-button type="primary" @click="resister">注册</el-button>
            <el-button @click="drawer = false">取消</el-button>
          </el-form-item>
        </el-form>

      </el-drawer>

3.定义API

/**
 * @description: 用于用户的注册
 * @return {Promise<>} - 返回Promise
 */
export const registerService = (conditions) => {

    return request.post('/auth/register', conditions, {
        headers: {
            'Content-Type': 'application/json'
        }
    });
}

4.事件处理

//注册——抽屉显示
const drawer = ref(false)
//注册——抽屉方向
const direction = ref("rtl")
//注册——表单
const registerForm = ref(null)
//注册——数据
const registerData = ref({
  phone: '',
  password: '',
  name: ''
})
//校验规则——注册
const registerRules = {
  phone: [{ required: true, message: '请输入手机号', trigger: 'blur' }],
  password: [{ required: true, message: '请输入密码', trigger: 'blur' }],
  name: [{ required: true, message: '请输入姓名', trigger: 'blur' }]
}
/**
 * @description: 用于用户的注册
 * @return {Promise<>} - 提示操作的结果
 */
const register = async () => {
  // 先验证表单
  const valid = await registerForm.value.validate();

  if (valid) {
    try {
      // 调用注册服务
      const result = await registerService(registerData.value);

      // 成功后提示
      ElMessage.success('注册成功');
    } catch (error) {
      // 捕获并处理可能的错误
      console.error('注册过程中出现错误:', error);
      // ElMessage.error('注册失败,请稍后再试');
    }
  } else {
    // 如果验证失败,提示用户检查表单信息
    ElMessage.error('请检查表单信息');
  }
};

四、登录实现

1.页面开发

<template>
  <div id="background">
    <el-row id="login">

      <!--左表格-->
      <el-col :span="9" id="left">
        <div id="avatar">
          <el-avatar :size="150" :src="circleUrl" fit="cover"/>
        </div>
        <el-text id="WELCOME">WELCOME</el-text>
      </el-col>

      <!--右表格-->
      <el-col :span="15" id="right">
        <el-form ref="loginForm" size="large" autocomplete="off" :model="loginData" :rules="loginRules">


          <!--手机号-->
          <el-form-item prop="phone" id="inputPhone">
            <!-- <el-input :prefix-icon="User" placeholder="请输入手机号" v-model="registerData.phone" class="rounded-input" input-styles="border-radius: 15px;">
            </el-input> -->
            <input class="rounded-input" placeholder=" 手机号:" v-model="loginData.phone">
          </el-form-item>


          <!--密码-->
          <el-form-item prop="password" id="inputPassword">
            <!-- <el-input name="password" type="password" :prefix-icon="Lock" placeholder="请输入密码"
                v-model="registerData.password"></el-input> -->
            <input type="password" class="rounded-input" placeholder=" 密  码:" v-model="loginData.password">
          </el-form-item>

          <!--功能区块-->
          <el-form-item class="flex">
            <div class="flex">
              <button  class="registerButton" type="button" @click="drawer = true">
                注册账号
              </button>
              <el-link :underline="false" style="color: #FFFFFF;">重置密码?</el-link>
            </div>
          </el-form-item>


          <!-- 登录按钮 -->
          <el-form-item id="loginButton">
            <el-button id="button1" @click="login">立 即 登 录</el-button>
          </el-form-item>
        </el-form>
      </el-col>

      <!--注册抽屉-->
      <el-drawer v-model="drawer" :direction="direction">

        <el-form ref="registerForm" :model="registerData" :rules="registerRules"  label-width="80px">
          <el-form-item label="手机号" prop="phone">
            <el-input v-model="registerData.phone" placeholder="请输入手机号" />
          </el-form-item>

          <el-form-item label="密码" prop="password">
            <el-input v-model="registerData.password" placeholder="请输入密码" show-password />
          </el-form-item>

          <el-form-item label="姓名" prop="name">
            <el-input v-model="registerData.name" placeholder="请输入姓名" />
          </el-form-item>

          <el-form-item>
            <el-button type="primary" @click="register">注册</el-button>
            <el-button @click="drawer = false">取消</el-button>
          </el-form-item>
        </el-form>

      </el-drawer>


    </el-row>
  </div>
</template>

2.定义API

/**
 * @description: 用于用户的登录
 * @return {Promise<>} - 返回Promise
 */
export const loginService = (conditions) => {

    return request.post('/auth/login', conditions, {
        headers: {
            'Content-Type': 'application/json'
        }
    });
}

3.事件处理

/**
 * @description: 用于用户的登录
 * @return {Promise<>} - 提示操作的结果
 */
const login = async () => {
  // 先验证表单
  const valid = await loginForm.value.validate();

  if (valid) {
    try {
      // 调用登录服务
      const result = await loginService(registerData.value);
      console.log(result)
      // 成功后提示
      tokenStore.setToken(result.data);
      router.push('/home')
      ElMessage.success('登录成功');
    } catch (error) {
      // 捕获并处理可能的错误
      console.error('登录过程中出现错误:', error);
      // ElMessage.error('登录失败,请稍后再试');
    }
  } else {
    // 如果验证失败,提示用户检查表单信息
    ElMessage.error('请检查表单信息');
  }
};

五、上传gitee

1.上传logo相关

2.上传认证相关

3.将web分支并入master分支

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2342368.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

常见接口测试常见面试题(JMeter)

JMeter 是 Apache 提供的开源性能测试工具&#xff0c;主要用于对 Web 应用、REST API、数据库、FTP 等进行性能、负载和功能测试。​它支持多种协议&#xff0c;如 HTTP、HTTPS、JDBC、SOAP、FTP 等。 在一个线程组中&#xff0c;JMeter 的执行顺序通常为&#xff1a;配置元件…

计算机组成与体系结构:缓存(Cache)

目录 为什么需要 Cache&#xff1f; &#x1f9f1; Cache 的分层设计 &#x1f539; Level 1 Cache&#xff08;L1 Cache&#xff09;一级缓存 &#x1f539; Level 2 Cache&#xff08;L2 Cache&#xff09;二级缓存 &#x1f539; Level 3 Cache&#xff08;L3 Cache&am…

Flutter 在全新 Platform 和 UI 线程合并后,出现了什么大坑和变化?

Flutter 在全新 Platform 和 UI 线程合并后&#xff0c;出现了什么大坑和变化&#xff1f; 在两个月前&#xff0c;我们就聊过 3.29 上《Platform 和 UI 线程合并》的具体原因和实现方式&#xff0c;而事实上 Platform 和 UI 线程合并&#xff0c;确实为后续原生语言和 Dart 的…

stm32之GPIO函数详解和上机实验

目录 1.LED和蜂鸣器1.1 LED1.2 蜂鸣器 2.实验2.1 库函数&#xff1a;RCC和GPIO2.1.1 RCC函数1. RCC_AHBPeriphClockCmd2. RCC_APB2PeriphClockCmd3. RCC_APB1PeriphClockCmd 2.1.2 GPIO函数1. GPIO_DeInit2. GPIO_AFIODeInit3. GPIO_Init4. GPIO_StructInit5. GPIO_ReadInputDa…

用 PyQt5 和 asyncio 打造接口并发测试 GUI 工具

接口并发测试是测试工程师日常工作中的重要一环&#xff0c;而一个直观的 GUI 工具能有效提升工作效率和体验。本篇文章将带你用 PyQt5 和 asyncio 从零实现一个美观且功能实用的接口并发测试工具。 我们将实现以下功能&#xff1a; 请求方法选择器 添加了一个下拉框 QComboBo…

Qt实战之将自定义插件(minGW)显示到Qt Creator列表的方法

Qt以其强大的跨平台特性和丰富的功能&#xff0c;成为众多开发者构建图形用户界面&#xff08;GUI&#xff09;应用程序的首选框架。而在Qt开发的过程中&#xff0c;自定义插件能够极大地拓展应用程序的功能边界&#xff0c;让开发者实现各种独特的、个性化的交互效果。想象一下…

【Vue】TypeScript与Vue3集成

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Vue 文章目录 1. 前言2. 环境准备与基础搭建2.1. 安装 Node.js 与 npm/yarn/pnpm2.2. 创建 Vue3 TypeScript 项目2.2.1. 使用 Vue CLI2.2.2. 使用 Vite&#xff08;推荐&#xff09;2.2.3. 目录结构简述 3. Vue3 TS 基础语法整…

Linux之七大难命令(The Seven Difficult Commands of Linux)

Linux之七大难命令 、背景 作为Linux的初学者&#xff0c;肯定要先掌握高频使用的指令&#xff0c;这样才能让Linux的学习在短时间内事半功倍。但是&#xff0c;有些指令虽然功能强大&#xff0c;但因参数多而让初学者们很害怕&#xff0c;今天介绍Linux中高频使用&#xff0…

5.3.1 MvvmLight以及CommunityToolkit.Mvvm介绍

MvvmLight、CommunityToolkit.Mvvm是开源包,他们为实现 MVVM(Model-View-ViewModel)模式提供了一系列实用的特性和工具,能帮助开发者更高效地构建 WPF、UWP、MAUI 等应用程序。 本文介绍如下: 一、使用(旧)的MvvmLight库 其特点如下,要继承的基类是ViewModelBase;且使用…

Dbeaver 执行 SQL 语句和执行 SQL 脚本的区别

执行 SQL 语句 执行 SQL 语句对应图标&#xff1a; 适用于执行单个 SQL 的情形&#xff0c;默认是在光标处或选中的文本上执行 SQL 查询。 实际上同时选择多个 SQL 并通过该方式去执行也可能成功&#xff0c;只是有失败的风险。因此不建议使用它来同时执行多个 SQL 语句。 情况…

《Python3网络爬虫开发实战(第二版)》配套案例 spa6

Scrape | Moviehttps://spa6.scrape.center/ 请求影片列表api时&#xff0c;不仅有分页参数&#xff0c;还多了一个token&#xff0c;通过重发请求发现token有时间限制&#xff0c;所以得逆向token的生成代码。 通过xhr断点定位到接口请求位置 刷新页面或者点翻页按钮&#x…

Python基础语法:字面量,注释,关键字,标识符,变量和引用,程序执行的3大流程

目录 字面量&#xff08;数据的类型&#xff09; 字面量的含义 常见字面量类型&#xff08;6种&#xff09; 输出各类字面量&#xff08;print语句&#xff09; 注释&#xff08;单行和多行注释&#xff09; 注释的作用 单行注释和多行注释 单行注释&#xff08;ctrl/&a…

SPL 量化 获取数据

下载数据 我们将股票数据分享在百度网盘上供下载&#xff0c;每工作日更新。 目前可供下载的数据有 A 股的日 K 线数据、股票代码列表和上市公司的基本面数据 下载链接&#xff1a; 百度网盘 下载数据的文件格式为 btx&#xff0c;是 SPL 的特有二进制格式。 btx 称为集文…

Rust 学习笔记:安装 Rust

Rust 学习笔记&#xff1a;安装 Rust Rust 学习笔记&#xff1a;安装 Rust在 Windows 上安装 Rust命令行创建 Rust 项目在 Mac/Linux 上安装 Rust一些命令升级卸载cargo -hrustc -h 安装 RustRoverrust-analyzer Rust 学习笔记&#xff1a;安装 Rust 在 Windows 上安装 Rust …

编译 C++ 报错“找不到 g++ 编译器”的终极解决方案(含 Windows/Linux/macOS)

前言 在使用终端编译 C 程序时&#xff0c;报错&#xff1a; 或类似提示&#xff0c;意味着你的系统尚未正确安装或配置 g 编译器。本篇将从零手把手教你在 Windows / Linux / macOS 下安装并配置 g&#xff0c;适用于新手或 C 入门阶段的你。 什么是 g&#xff1f; g 是 GN…

html单页业务介绍源码

源码介绍 html单页业务介绍源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行 效果预览 源码免费获取 html单页业务介绍源码

单体OJ项目

单体项目版本、微服务版还需我再钻研钻研。 项目介绍 在系统前台&#xff0c;管理员可以创建、管理题目;用户可以自由搜索题目、阅读题目、编写并提交代码。 在系统后端&#xff0c;能够根据管理员设定的题目测试用例在代码沙箱 中对代码进行编译、运行、判断输出是否正确。 其…

豆包桌面版 1.47.4 可做浏览器,免安装绿色版

自己动手升级更新办法&#xff1a; 下载新版本后安装&#xff0c;把 C:\Users\用户名\AppData\Local\Doubao\Application 文件夹的文件&#xff0c;拷贝替换 DoubaoPortable\App\Doubao 文件夹的文件&#xff0c;就升级成功了。 再把安装的豆包彻底卸载就可以。 桌面版比网页版…

【MySQL】索引失效问题详解

目录 1. 最左前缀原则 2. 条件左边有函数或运算 3. 隐式类型转换 4. LIKE 模糊查询以 % 开头 5、MySQL 优化器选择全表扫描 ⭐对 in 关键字特别说明⭐ &#xff08;1&#xff09;列表太大时&#xff0c;走全表扫描了 &#xff08;2&#xff09;隐式类型转换 &#xff…

优选算法第十讲:字符串

优选算法第十讲&#xff1a;字符串 1.最长公共前缀2.最长回文子串3.二进制求和4.字符串相乘 1.最长公共前缀 2.最长回文子串 3.二进制求和 4.字符串相乘