美食杰项目 -- 编辑个人资料(六)

news2025/7/9 18:53:11

目录

  • 前言:
  • 具体实现思路:
  • 步骤:
    • 1. 展示美食杰编辑个人资料效果
    • 2. 引入element-ui
    • 3. 代码
  • 总结:

前言:

本文给大家讲解,美食杰项目中 实现编辑个人资料页的效果,和具体代码。


具体实现思路:

  1. 在个人主页中点击编辑个人资料进入当前页
  2. 引入element-ui进行图片的上传
  3. 修改完所有信息后
  4. 点击保存会对个人资料进行更改
  5. 并跳转至个人主页

步骤:

1. 展示美食杰编辑个人资料效果

在这里插入图片描述

美食杰编辑个人资料


2. 引入element-ui

点击跳转至 element-ui 中 Upload 上传使用方法:https://element.eleme.cn/#/zh-CN/component/upload

点击跳转至 element-ui 中 MessageBox 弹框使用方法:https://element.eleme.cn/#/zh-CN/component/message-box


3. 代码

element-ui 中 Upload 上传 功能要单独封装一个组件,因为它需要在发布菜谱页面中使用
其他的在代码中写有注释,按注释理解即可,不了解的也可以在评论区里问我,或者私聊我询问

  • 修改个人资料页
<template>
  <div class="box">
    <div class="one">
      <p>修改头像</p>
      <!-- action 图片上传的地址 :imageUrl 显示图片传递到子组件 @res-url 子传父-->
      <upload-img
        action="/api/upload/?type=user"
        :imageUrl="avatar"
        @res-url="image"
        :imgMaxWidth="210"
      ></upload-img>
    </div>
    <div class="two">
      <p>修改名称</p>
      <input type="text" v-model="name" />
    </div>
    <div class="three">
      <p>个人简介</p>
      <el-input
        type="textarea"
        :rows="5"
        :cols="500"
        placeholder="请输入内容"
        v-model="sign"
        class="textarea"
        v-if="$store.getters.islogin"
      >
      </el-input>
    </div>
    <button class="btn" @click="save">保存</button>
  </div>
</template>

<script>
// 引入修改个人资料接口
import { userEdit } from "@/connector/api";
import UploadImg from "@/views/uploadImg/upload_img.vue";
export default {
  components: {
    // 子组件
    UploadImg,
  },
  data() {
    return {
      // 显示图片
      avatar: "",
      // 账号名称
      name: "",
      // 个人简介
      sign: "",
    };
  },
  // 事件监听,跳转页面时触发
  watch: {
    $route: {
      handler() {
        // 获取到内容并进行赋值
        this.avatar = this.$store.state.userInfo.avatar;
        this.name = this.$store.state.userInfo.name;
        this.sign = this.$store.state.userInfo.sign;
      },
      immediate: true,
    },
  },
  methods: {
    // 点击修改
    async save() {
      // 修改个人资料接口
      const data = await userEdit({
        avatar: this.avatar,
        name: this.name,
        sign: this.sign,
      });
      // console.log(data);
      if (data.code === 0) {
        // 跳转至个人主页
        window.location.href = "/MyHomepage";
      }
    },
    image(data) {
      // 子传父,触发的事件,改变显示的图片
      this.$nextTick(function () {
        this.avatar = data.resImgUrl;
        // console.log(this.avatar);
        this.$forceUpdate();
      });
    },
  },
};
</script>

<style lang="scss" scoped>
.box {
  width: 990px;
  background-color: #fff;
  margin: 20px auto 0;
  padding: 20px;
  div {
    display: flex;
    margin: 10px 0;
    p {
      margin-right: 20px;
    }
    .textarea {
      width: 200px;
      height: 70px;
    }
  }
  .btn {
    padding: 10px 20px;
    background-color: rgb(77, 145, 247);
    border: none;
  }
}
</style>
  • 上传图片页
<template>
  <el-upload
    class="avatar-uploader"
    :action="action"
    :show-file-list="false"
    :on-success="handleAvatarSuccess"
    :before-upload="beforeAvatarUpload"
  >
    <img
      v-if="url"
      :src="url"
      class="avatar"
      :style="{ maxWidth: imgMaxWidth + 'px' }"
    />
    <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  </el-upload>
</template>

<script>
export default {
  props: {
    // 接收父组件传递过来的事件
    action: String, // 图片上传的地址
    imageUrl: {
      // 显示的图片
      type: String,
      default: "",
    },
    imgMaxWidth: {
      //图片的宽
      type: [Number, String],
      default: "auto",
    },
    maxSize: {
      //图片格式的大小
      type: Number,
      default: 2,
    },
  },
  data() {
    return {
      // 把显示的图片赋值给 url
      url: this.imageUrl,
    };
  },
  mounted() {
    // 把显示的图片赋值给 url
    this.url = this.imageUrl;
  },
  methods: {
    // 上传成功时执行的事件
    handleAvatarSuccess(res, file) {
      // console.log(res, file);
      if (res.code === 1) {
        // 返回失败的结果
        this.$message({
          message: res.mes,
          type: "warning",
        });
        return;
      }
      // 获取上传成功后的图片地址
      this.url = URL.createObjectURL(file.raw);
      this.$emit("res-url", {
        // 子传父,触发
        // resImgUrl:res.data.url
        resImgUrl: res.data.url,
      });
    },
    // 上传文件前
    beforeAvatarUpload(file) {
      // 图片上传的格式
      const isJPG = file.type === "image/jpeg" || "image/gif";
      // 图片上传的大小
      const isLt2M = file.size / 1024 / 1024 < this.maxSize;
      // 判断
      if (!isJPG) {
        this.$message.error("上传头像图片只能是 JPG 格式!");
      }
      if (!isLt2M) {
        this.$message.error("上传头像图片大小不能超过 2MB!");
      }
      // 返回
      return isJPG && isLt2M;
    },
  },
};
</script>

<style lang="scss" scoped>
.avatar-uploader .el-upload {
  border: 1px dashed #d9d9d9;
  border-radius: 6px;
  cursor: pointer;
  position: relative;
  overflow: hidden;
}
.avatar-uploader .el-upload:hover {
  border-color: #409eff;
}
.avatar-uploader-icon {
  font-size: 28px;
  color: #8c939d;
  width: 178px;
  height: 178px;
  line-height: 178px;
  text-align: center;
}
.avatar {
  width: 178px;
  height: 178px;
  display: block;
}
</style>

总结:

以上就是 美食杰项目 中 编辑个人资料页的具体实现方法,不懂得也可以在评论区里问我或私聊我询问,以后会持续发布一些新的功能,敬请关注。
我的其他文章:https://blog.csdn.net/weixin_62897746?type=blog

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

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

相关文章

【Java面经】阿里三面被挂、幸获内推,历经5轮终于拿到口碑offer

每一个互联网人心中都有一个大厂梦&#xff0c;百度、阿里巴巴、腾讯是很多互联网人梦寐以求的地方&#xff0c;而我也不例外。但是&#xff0c;BAT等一线互联网大厂并不是想进就能够进的&#xff0c;它对人才的技术能力和学历都是有一定要求的&#xff0c;所以除了学历以外&am…

面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了

由于现在大多计算机都是多核CPU&#xff0c;多线程往往会比单线程更快&#xff0c;更能够提高并发&#xff0c;但提高并发并不意味着启动更多的线程来执行。更多的线程意味着线程创建销毁开销加大、上下文非常频繁&#xff0c;你的程序反而不能支持更高的TPS。 时间片 多任务…

Java项目:JSP员工出差请假考勤管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目为后台管理系统&#xff1b; 管理员角色包含以下功能&#xff1a; 登录,首页,考勤记录增删改查,假期申请记录增删改查,出差申请记录增删…

maven学习:maven 的入门

2.maven 的入门 到目前为止&#xff0c;我们已经大概了解并安装好了Maven&#xff0c;现在&#xff0c;我们开始创建一个最简单的Hello World项目。 2.1 在Idea创建maven项目 创建一个Maven项目也十分简单&#xff0c;选择”Create New Project" 选择”maven”选项,创…

留学推荐信如何写好个人优点和缺点?

留学推荐信是出国申请文书的重要文件之一&#xff0c;是一个从第三方&#xff08;通常是以前的导师&#xff09;从学术权威的角度对申请者的客观评价。评价的内容包括学术能力&#xff08;Academic competence&#xff09;、性格特点&#xff08;Personal characteristics&…

如何使用 MySQL 做全文检索这件事

​前言 这有朋友聊到他们的系统中要接入全文检索&#xff0c;这让我想起了很久以前为一个很古老的项目添加搜索功能的事儿。 一提到全文检索&#xff0c;我们首先就会想到搜索引擎。也就是用一个词、一段文本搜索出匹配的内容。一般这种技术都有对应的实现方式&#xff0c;ES&…

从01背包说起(上)

目录 引入 1.什么是动态规划? 2.什么是背包问题&#xff1f; 3.什么是01背包&#xff1f; 模板题 1.题面 2.思路 Ⅰ为何不可用贪心 Ⅱ状态转移方程 3.代码 下期预告 引入 1.什么是动态规划? 动态规划&#xff08;英语&#xff1a;Dynamic programming&#xff0…

MQTT,JSON,VSCODE(C语言编程环境)心得

VSCODE&#xff08;C语言编程环境&#xff09;心得 心得基于linux虚拟机和SSH方式&#xff0c;编辑基于VSCODE&#xff0c;编译基于GCC或G&#xff0c;调试基于GDB的插件&#xff0c;代码管理基于git。 安装GIT&#xff1a;sudo apt-get install git 配置GIT&#xff1a; git…

Mysql时间类型

多个timestamp 默认只对第一个timestamp自动更新时间

element-ui在项目当中的引入以及按需引入使用

目录 1.项目当中引入element-ui A.先使用npm安装 B.在main.js当中引入文件 C.在App.vue当中可以引用button相关的UI组件 2.element-ui配合脚手架按需引入 A.首先安装按需引入的插件 B.修改 .babelrc C.按需引入的好处 1.项目当中引入element-ui A.先使用npm安装 npm i …

【强化学习论文合集】ICML-2021 强化学习论文

强化学习&#xff08;Reinforcement Learning, RL&#xff09;&#xff0c;又称再励学习、评价学习或增强学习&#xff0c;是机器学习的范式和方法论之一&#xff0c;用于描述和解决智能体&#xff08;agent&#xff09;在与环境的交互过程中通过学习策略以达成回报最大化或实现…

[附源码]Python计算机毕业设计电子工厂进销存管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

哲学讨论:未来的语言模型有没有可能具备意识和主观感受?

文&#xff5c;付奶茶编&#xff5c;ZenMoore问题背景近期&#xff0c;纽约大学心智、大脑和意识研究中心的主任 David Chalmers 汇报了一场非常有思考价值的研究成果,主要是从神经科学的角度讨论了大规模语言模型&#xff08;Large Language Models&#xff0c;LLMs&#xff0…

刘强东这波操作秀

近日&#xff0c;刘强东发布京东全员信&#xff0c;信中提到&#xff1a;自2023年1月1日起&#xff0c;逐步为十几万德邦的兄弟们缴齐五险一金&#xff0c;确保每个德邦兄弟都能“老有所养&#xff0c;病有所医”&#xff0c;为兄弟们提供基础保障&#xff1b;集团拿出100亿元人…

教程四 在Go中使用Energy创建跨平台GUI - 开发者工具

介绍 本文介绍在Energy中如何使用开发者工具(dev tools) 开发者工具(dev tools) 是前端开发人员常用的&#xff0c;在开发时调式代码、接口、资源加载、CSS调整等等&#xff0c;大多数场景都会使用。 energy封装了部分繁琐的chromium使用&#xff0c;其中之一包含开发者工具…

致敬最美抗击疫情的逆行者 DIV布局大学生抗疫感动专题网页设计作业模板 疫情感动人物静态HTML网页模板下载

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

PD仿真算法中变形梯度矩阵的极分解

1.背景 PD&#xff08;Projective Dynamics&#xff09;仿真算法是一种“可并行化计算的”高效的软体形变模拟&#xff08;或成为仿真、动画&#xff09;算法&#xff0c;与传统的基于力的有限元方法不同的是&#xff0c;PD算法直接作用于顶点位置&#xff0c;通过最小化能量函…

Wireshark Lab: Ethernet and ARP v7.0

Wireshark Lab: Ethernet and ARP v7.0 实验内容戳这里 介绍部分转自乌漆WhiteMoon Ethernet 以太网 以太网在现在的有线局域网中有着支配者的地位&#xff0c;就像是因特网使得全球互联那样。其实局域网技术还有令牌环、FDDI 和 ATM 等&#xff0c;但是以太网仍然具有很多…

第十三届蓝桥杯 C++ B 组省赛 G 题———积木画(AC)

目录1.积木画1.题目描述2.输入格式3.输出格式4.样例输入5.样例输出6.样例说明7.数据范围8.原题链接2.解题思路AC_code1.积木画 1.题目描述 小明最近迷上了积木画, 有这么两种类型的积木, 分别为 III 型&#xff08;大小为 2 个单位面积) 和 LLL 型 (大小为 3 个单位面积): 同…

java面试强基(12)

什么是泛型&#xff1f;有什么作用&#xff1f; Java 泛型&#xff08;Generics&#xff09; 是 JDK 5 中引入的一个新特性。使用泛型参数&#xff0c;可以增强代码的可读性以及稳定性。 编译器可以对泛型参数进行检测&#xff0c;并且通过泛型参数可以指定传入的对象类型。…