Vue3.0项目实战(四)——大事件管理系统个人中心实现

news2024/11/25 0:58:36

目录

1. ChatGPT & Copilot

1.1 工具 Github Copilot 智能生成代码的使用

2. 个人中心项目实战 - 基本资料

2.1 静态结构

2.2 校验处理

2.3 封装接口,更新个人信息

3. 个人中心项目实战 - 更换头像

3.1 静态结构

3.2 选择预览图片

3.3 上传头像

4. 个人中心项目实战 - 重置密码

4.1 静态结构

4.2 校验处理

4.3 封装接口,更新密码信息

4.4 表单重置


1. ChatGPT & Copilot

两个工具:

  • ChatGPT 3.5 的使用 (4.0 使用方式一致,回答准确度更高,但付费,且每3小时,有次数限制)

    • 正常注册流程 (IP限制,手机号限制)

    • 三方整合产品

      • 推荐:https://github.com/LiLittleCat/awesome-free-chatgpt

      • 谷歌搜索:chatgpt 免费网站列表

  • 工具 Github Copilot 智能生成代码(付费,免费使用30天

1.1 工具 Github Copilot 智能生成代码的使用

① 安装步骤

  • 登录 github,试用 Copilot

  • 打开 vscode, 搜索并安装插件 Copilot

② 使用说明

  • 删除键:不接受

  • Tab键:接收

  • Ctrl + enter: 查看更多方案

说明:

  • 提高开发效率,但是还是多写多练。(免费试用30天)

2. 个人中心项目实战 - 基本资料

2.1 静态结构

<template>
  <PageContainer title="基本资料" style="height: 80%">
    <template #default>
      <el-form
        :model="formData"
        :rules="rules"
        label-width="100px"
        ref="formRef"
      >
        <el-form-item label="登录名称" prop="username">
          <el-input
            style="width: 30%"
            disabled
            v-model="formData.username"
          ></el-input>
        </el-form-item>
        <el-form-item label="用户昵称" prop="nickname">
          <el-input style="width: 30%" v-model="formData.nickname"></el-input>
        </el-form-item>
        <el-form-item label="用户邮箱" prop="email">
          <el-input style="width: 30%" v-model="formData.email"></el-input>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="onSubmit">提交修改</el-button>
        </el-form-item>
      </el-form>
    </template>
  </PageContainer>
</template>

2.2 校验处理

import { ref } from 'vue'
import { useUserStore } from '@/stores'
const rules = {
  nickname: [
    {
      required: true,
      message: '请输入用户昵称',
      trigger: 'blur'
    },
    {
      pattern: /^\S{2,10}$/,
      message: '昵称必须是2-10位的非空字符串',
      trigger: 'blur'
    }
  ],
  email: [
    {
      required: true,
      message: '请输入邮箱地址',
      trigger: 'blur'
    },
    {
      type: 'email',
      message: '邮箱格式不正确',
      trigger: ['blur', 'change']
    }
  ]
}
const userStore = useUserStore()
const userInfo = userStore.userInfo

const formData = ref({ ...userInfo })

2.3 封装接口,更新个人信息

① 封装接口

② 页面中校验后,封装调用

3. 个人中心项目实战 - 更换头像

3.1 静态结构

<template>
  <PageContainer title="更换头像" style="height: 80%">
    <template #default>
      <el-upload
        ref="uploadRef"
        class="avatar-uploader"
        :show-file-list="false"
        :on-change="onUploadFile"
        :auto-upload="false"
      >
        <img v-if="imageUrl" :src="imageUrl" class="avatar" />
        <el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
      </el-upload>
      <br />
      <el-button type="primary" :icon="Plus" @click="selectImage"
        >选择图片</el-button
      >
      <el-button type="success" :icon="Upload" @click="onSubmit"
        >上传头像</el-button
      >
    </template>
  </PageContainer>
</template>

3.2 选择预览图片

3.3 上传头像

① 封装接口

② 接口调用

③ 视图更新

  • 调用之前 pinia 里面获取用户信息的方法,存入仓库

4. 个人中心项目实战 - 重置密码

4.1 静态结构

<template>
  <PageContainer title="重置密码" style="height: 80%">
    <template #default>
      <el-form
        :model="formData"
        :rules="rules"
        label-width="100px"
        ref="formRef"
      >
        <el-form-item label="原密码" prop="old_pwd">
          <el-input
            style="width: 30%"
            v-model="formData.old_pwd"
            type="password"
          ></el-input>
        </el-form-item>
        <el-form-item label="新密码" prop="new_pwd">
          <el-input
            style="width: 30%"
            type="password"
            v-model="formData.new_pwd"
          ></el-input>
        </el-form-item>
        <el-form-item label="确认新密码" prop="re_pwd">
          <el-input
            style="width: 30%"
            type="password"
            v-model="formData.re_pwd"
          ></el-input>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="onSubmit">修改密码</el-button>
          <el-button @click="onReset">重置</el-button>
        </el-form-item>
      </el-form>
    </template>
  </PageContainer>
</template>

4.2 校验处理

const formData = ref({
  old_pwd: '',
  new_pwd: '',
  re_pwd: ''
})

// 自定义新密码校验规则函数
const checkOldSame = (rule, value, cb) => {
  if (value === formData.value.old_pwd) {
    cb(new Error('原密码和新密码不能一样。'))
  } else {
    cb()
  }
}
// 自定义再次输入新密码校验规则函数
const checkNewSame = (rule, value, cb) => {
  if (value !== formData.value.new_pwd) {
    cb(new Error('新密码和再次确认输入的密码不一致。'))
  } else {
    cb()
  }
}
// 校验规则
const rules = {
  old_pwd: [
    {
      required: true,
      message: '请输入密码',
      trigger: 'blur'
    },
    {
      pattern: /^\S{6,15}$/,
      message: '密码长度必须是6-15位的非空字符串',
      trigger: 'blur'
    }
  ],
  new_pwd: [
    { required: true, message: '请输入新密码', trigger: 'blur' },
    {
      pattern: /^\S{6,15}$/,
      message: '密码长度必须是6-15位的非空字符串',
      trigger: 'blur'
    },
    {
      validator: checkOldSame,
      trigger: 'blur'
    }
  ],
  re_pwd: [
    {
      required: true,
      message: '请再次确认新密码',
      trigger: 'blur'
    },
    {
      pattern: /^\S{6,15}$/,
      message: '密码长度必须是6-15位的非空字符串',
      trigger: 'blur'
    },
    {
      validator: checkNewSame,
      trigger: 'blur'
    }
  ]
}

4.3 封装接口,更新密码信息

① 封装接口

② 页面中调用

4.4 表单重置

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

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

相关文章

国产化数据库挑战及发展趋势

非国产数据库如Oracle、MySQL和MSSQL等在某些领域占据重要地位&#xff0c;但国产数据库的市场份额正在逐步提升&#xff0c;特别是在政策支持和市场需求的双重推动下&#xff0c;国产数据库的替代进程正在加速。 一、国产数据库市场规模 2024年中国数据库市场规模预计为543.1亿…

Excel数据清洗工具:提高数据处理效率的利器

Excel数据清洗工具&#xff1a;提高数据处理效率的利器 引言 在当今的数据驱动时代&#xff0c;数据的质量直接影响着分析结果的可靠性和有效性。然而&#xff0c;在实际工作中&#xff0c;我们常常会遇到数据中的各种问题&#xff0c;如重复记录、缺失值、格式不一致等。为了…

NISP 一级 | 3.3 网络安全防护与实践

关注这个证书的其他相关笔记&#xff1a;NISP 一级 —— 考证笔记合集-CSDN博客 0x01&#xff1a;虚拟专用网络 VPN 概述 虚拟专用网络&#xff08;Virtual Private Network&#xff0c;VPN&#xff09;是在公用网络上建立专用网络的技术。整个 VPN 网络的任意两个节点之间的连…

Python | Leetcode Python题解之第397题整数替换

题目&#xff1a; 题解&#xff1a; class Solution:def integerReplacement(self, n: int) -> int:ans 0while n ! 1:if n % 2 0:ans 1n // 2elif n % 4 1:ans 2n // 2else:if n 3:ans 2n 1else:ans 2n n // 2 1return ans

游戏领域的AI革命:从静态世界到动态玩家体验

在当今的数字化时代,游戏已经成为连接虚拟与现实世界的桥梁。开放世界游戏以其无与伦比的自由度和沉浸感吸引了无数玩家,但同时也面临着对话重复、行为可预测和互动有限等问题。本文将探讨AI技术如何通过程序化生成、动态NPC、实时行为生成以及声音与音乐等方面的应用,为游戏…

Android 知识简记 快速回顾各种知识

2.Java 基础&容器&同步&设计模式 3.Java 虚拟机&内存结构&GC&类加载&四种引用&动态代理 4.Android 基础&性能优化&Framwork 5.Android 模块化&热修复&热更新&打包&混淆&压缩 6.音视频&FFmpeg&播放器 …

创游系列开心娱乐完整组件

别人分享的一套东西&#xff0c;是个不错的娱乐源码&#xff0c;里面包含了很多小游戏。可以创建房间。 没测试自行研究吧&#xff0c;内含搭建教程。 代码免费下载&#xff1a;百度网盘

Java | Leetcode Java题解之第397题整数替换

题目&#xff1a; 题解&#xff1a; class Solution {public int integerReplacement(int n) {int ans 0;while (n ! 1) {if (n % 2 0) {ans;n / 2;} else if (n % 4 1) {ans 2;n / 2;} else {if (n 3) {ans 2;n 1;} else {ans 2;n n / 2 1;}}}return ans;} }

3D Gaussian Splatting 论文学习

概述 目前比较常见的渲染方法大致可以分为2种&#xff1a; 将场景中的物体投影到渲染平面&#xff1a;传统的渲染管线就是这种方式&#xff0c;主要针对Mesh数据&#xff0c;可以将顶点直接投影成2D的形式&#xff0c;配合光栅化、深度测试、Alpha混合等就可以得到渲染的图像…

【Java基础】——深入理解Java异常

目录 1- 什么是异常概述&#xff08;What、Why&#xff09;1-1 什么是异常(What)1-2 为什么要有异常处理机制(Why) 2- ⭐异常体系结构图-总览2-1 分类2-2 异常体系结构小结 3- 五大运行时异常3-1 NullPointerException 空指针异常3-2 ArithmeticException 算数异常3-3 ArrayInd…

HPL 源码结构分析

文件夹结构&#xff1a; $ cd /home/hipper/ex_hpl_hpcg/ $ pwd $ mkdir ./openmpi $mkdir ./openblas $mkdir ./hpl $ tree 1. 安装openmpi 1.1.1 使用Makefile下载配置编译安装 openmpi Makefile&#xff1a; all:wget https://download.open-mpi.org/release/open-m…

java spring定时任务-动态任务

cron表达式 在线生成https://cron.qqe2.com/ 6个时间刻度的话 * * * * * * 分别对应 秒 分 时 日 月 星期 &#xff1b; 7个时间刻度的话 * * * * * * * 分别对应 秒 分 时 日 月 星期 年&#xff1b;每隔5秒执行一次&#xff1a;*/5 * * * * ? 每隔1分钟执行一次&#xff1a…

AI如何辅助未来数学研究:陶哲轩的最新见解与应用展望

随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;AI在多个领域的应用已经渗透到了我们生活的方方面面。然而&#xff0c;在严谨且逻辑性极强的数学研究领域&#xff0c;AI能否真正发挥作用&#xff1f;2024年&#xff0c;著名数学家、菲尔兹奖得主陶哲轩在IM…

【Nacos】配置中心

Nacos除了注册中心和负载均衡之外&#xff0c;还是一个配置中心&#xff0c;具备配置管理的功能。 Nacos 配置中心是一种用于集中式管理应用程序配置的服务&#xff0c;它可以将应用程序的配置从代码和本地配置文件中分离出来&#xff0c;实现配置的集中管理和动态更新。通过 …

刘润《关键跃升》读书笔记7

沟通&#xff1a; 想明⽩&#xff0c;说清楚&#xff0c;能接受 团队沟通的正确⽅式可以⽤9个字来概括&#xff1a;想明⽩&#xff0c;说清楚&#xff0c;能接受 &#xff08;⻅图4-1&#xff09;想明⽩ 有时经理跟⼈沟通&#xff0c;讲完之后却⽆奈地对员⼯说&#xff0c;你怎…

远程访问电脑共享文件

远程访问电脑共享文件&#xff0c;可以通过多种方法实现&#xff0c;每种方法都有其特点和适用场景。以下是一些常见的方法及其步骤&#xff1a; 一、使用Microsoft远程桌面 启用远程桌面&#xff1a; 在目标电脑上&#xff0c;打开“开始”菜单&#xff0c;选择“设置”>“…

常见概念 -- WDM/OTN 时延

什么是时延&#xff1f; 在通信网络中&#xff0c;时延指原始数据经一台转发设备的编码等一系列处理过程后由发送端发送&#xff0c;通过传输链路传输&#xff0c;到达另一台&#xff08;目的地&#xff09;设备的接收端并解码还原为原始数据所花费的时间。网络时延主要由以下几…

多维时序 | Matlab基于TCN-Transformer+LSTM双输入神经网络时间序列预测

多维时序 | Matlab基于TCN-TransformerLSTM双输入神经网络时间序列预测 目录 多维时序 | Matlab基于TCN-TransformerLSTM双输入神经网络时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于TCN-TransformerLSTM双输入神经网络时间序列预测&#xff…

基于SpringBoot的校园自助洗衣服务管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的校园自助洗衣服务…

SAP Fiori-Vscode 环境搭建中npm报错

文章目录 前提&#xff1a; vscode 安装好了&#xff0c;node 配置完毕&#xff0c;npm环境搭建OK新建一个Fiori 初始化初始化性项目的报错&警告Q1: npm WARN config global --global, --local are deprecated. Use --locationglobal insteadQ2: npm打包出现警告&#xff0…