vue3-实战-06-管理后台-品牌管理模块开发

2023-10-28

目录

1-品牌列表

1.1-需求图

1.2-定义接口和数据类型

1.3-请求接口和渲染数据

2-新增和修改品牌

2.1-需求原型分析

2.2-dialog开发

2.3-请求接口封装

2.4-图片上传组件开发

2.5-新增-修改品牌信息

3-删除品牌

4-表单校验


      在开发品牌管理之前,我们先将mock接口数据替换为真实的服务器接口数据,然后将登录-获取用户信息-退出登录 ts定义修改完善。

用户模块ts类型定义:src\api\user\type.ts

1-品牌列表

1.1-需求图

我们开发之前先看需求原型

       从原型上看,我们需要一个使用到elemnet-plusel-card组件,顶部有个按钮添加品牌,我们需要使用到el-button组件,中间有个表格,我们需要使用到el-table组件;底部是分页,我们需要使用到分页组件el-pagination

       然后我们分析业务,我们在页面加载的时候,我们需要请求服务器,获取列表页面的数据,当然我们开始获取的是第一页的数据,然后渲染在table表格中。

1.2-定义接口和数据类型

我们在src\api\product\trademark\type.ts文件中定义数据类型;

export interface ResponseData {
  code: number
  message: string
  ok: boolean
}

//已有的品牌的ts数据类型
export interface TradeMark {
  id?: number
  tmName: string
  logoUrl: string
}

//包含全部品牌数据的ts类型
export type Records = TradeMark[]

//获取的已有全部品牌的数据ts类型
export interface TradeMarkResponseData extends ResponseData {
  data: {
    records: Records
    total: number
    size: number
    current: number
    searchCount: boolean
    pages: number
  }
}

1.3-请求接口和渲染数据

我们需要定义请求的数据类型和接受服务器返回的数据类型,

渲染请求返回的数据:

 表格组件:用于展示已有得平台数据 
table:---border:可以设置表格纵向是否有边框
table-column:---label:某一个列表 ---width:设置这列宽度 ---align:设置这一列对齐方式    
table-column:默认展示数据用div 如果我们需要显示我们自己的结构,就需要使用到插槽

分页器组件pagination 说明:
v-model:current-page:设置分页器当前页码;其中v-model实现了双向绑定
v-model:page-size:设置每一个展示数据条数
page-sizes:用于设置下拉菜单数据
background:设置分页器按钮的背景颜色
layout:可以设置分页器六个子组件布局调整

2-新增和修改品牌

2.1-需求原型分析

       当我们点击新增品牌的时候,我们需要弹框,用到el-dialog组件,组件里面有个表单,一个是输入框input,另外一个是上传文件组件,我们使用el-upload,使用el-form组件,新增品牌的时候,表单元素内容都是空,编辑的时候我们需要回显 表单内容。下面有个取消和确定按钮,我们需要使用具名插槽来实现。
       首先我们需要一个属性dialogFormVisible来控制dialog的显示和隐藏,然后我们需要判断到底是新增还是修改,因为dialog的标题不一样。

2.2-dialog开发

对话框组件dialog说明:
v-model:属性用户控制对话框的显示与隐藏的 true显示 false隐藏
title:设置对话框左上角标题

2.3-请求接口封装

     我们需要封装新增和修改的请求接口,新增和修改接口请求参数一样,唯一的区别是有没有id,有id就是修改,没有就是新增,我们可以将其封装到一个方法里面。 

2.4-图片上传组件开发

       在我们提交新增或者编辑的数据调用服务端的新增和编辑接口之前,我们需要先解决图片上传接口相关问题,我们点击组件,调用服务器端文件上传接口,获取到我们需要的图片链接,然后才可以提交新增或者编辑接口需要的接口参数。

 action:请求服务器地址,这里需要加上/api,否则不会请求服务器;
on-success:图片上传成功的回调;
before-upload:图片上传服务器之前的回调;

//上传图片组件->上传图片之前触发的钩子函数
const beforeAvatarUpload: UploadProps['beforeUpload'] = (rawFile) => {
    //钩子是在图片上传成功之前触发,上传文件之前可以约束文件类型与大小
    //要求:上传文件格式png|jpg|gif 4M
    if (rawFile.type == 'image/png' || rawFile.type == 'image/jpeg' || rawFile.type == 'image/gif') {
        if (rawFile.size / 1024 / 1024 < 4) {
            return true;
        } else {
            ElMessage({
                type: 'error',
                message: '上传文件大小小于4M'
            })
            return false;
        }
    } else {
        ElMessage({
            type: 'error',
            message: "上传文件格式务必PNG|JPG|GIF"
        })
        return false;
    }
}

//图片上传成功钩子
const handleAvatarSuccess: UploadProps['onSuccess'] = (response, uploadFile) => {
    //response:即为当前这次上传图片post请求服务器返回的数据
    //收集上传图片的地址,添加一个新的品牌的时候带给服务器
    trademarkParams.logoUrl = response.data;

}

2.5-新增-修改品牌信息

       当我们点击确定的时候,我们需要把我们收集到的数据提交给服务器,调用相关接口来实现新增或者修改。点击确定后,我们的业务逻辑除了需要发送请求,还需要关闭对话框。

首先,当我们点击添加品牌信息按钮时,我们需要显示对话框,还需要清除收集的数据(因为上一次用户可能先点击编辑其他品牌,如果不清除,这里会显示上次的信息)

       我们点击编辑的时候,我们显示对话框,还需要将列表数据的属性赋值给收集对象进行回显;Object.assign方法可以将属性的值赋值给另外一个对象。

 

点击取消或者确定按钮逻辑:

3-删除品牌

       当我们点击删除按钮的时候,我们需要弹框提示用户是否需要删除当前品牌信息,需要用到el-popconfirm组件;当用户点击确定后,我们调用服务端接口删除该品牌信息。注意,如果当前页数据只有一条,删除后,需要将当前页码减去1;否则停留在当前页面,再次获取列表接口,请求数据。

<el-table-column label="品牌操作">
                    <template #="{ row, $index }">
                        <el-button type="primary" size="small" icon="Edit" @click="updateTrademark(row)"></el-button>
                        <el-popconfirm :title="`您确定要删除${row.tmName}?`" width="250px" icon="Delete"
                            @confirm='removeTradeMark(row.id)'>
                            <template #reference>
                                <el-button type="primary" size="small" icon="Delete"></el-button>
                            </template>
                        </el-popconfirm>
                    </template>
                </el-table-column>

4-表单校验

       我们在新增和编辑的时候,需要对表单数据进行校验,校验成功了才可以提交请求服务器。点击新增品牌的时候,我们需要清除校验,然后点击确定后,我们需要校验信息。同理编辑的时候也是类似的逻辑。

//获取el-form组件实例
let formRef = ref();

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue3-实战-06-管理后台-品牌管理模块开发 的相关文章

随机推荐

  • 操作系统知识整理——Linux下进程的内存布局以及brk()、sbrk()函数探究

    文章目录 前言 一 内存堆栈模型 二 系统栈和用户栈 三 函数调用时的内存栈分配 四 brk sbrk 用法详解 前言 本篇文章是自己在学习xv6操作系统内核时 发现自己对进程在内存中的布局知识点上还是有一些混淆不清 所以在这里做一些补充整
  • 华为OD机试 - 解密犯罪时间(Java)

    题目描述 警察在侦破一个案件时 得到了线人给出的可能犯罪时间 形如 HH MM 表示的时刻 根据警察和线人的约定 为了隐蔽 该时间是修改过的 解密规则为 利用当前出现过的数字 构造下一个距离当前时间最近的时刻 则该时间为可能的犯罪时间 每个
  • 正确使用cocoaPods 在OC中集成Charts第三方库

    之前的看到的都是错误的 正确的步骤如下 1 安装cocoaPods 2 新建一个OC工程 3 pod init 到 vi Podfile Uncomment the next line to define a global platform
  • MySQL主从、集群模式简单介绍

    目录 1 主从模式 Replication 2 集群模式 3 主从模式部署注意事项 主从模式 集群模式 都是在一个项目中使用多个mysql节点进行存储和读取数据 当单机模式部署 不满足安全性 高可用 高并发等需求的时候 就需要考虑主从模式或
  • 超详细的Git使用教程(图文)

    一 Git概述 1 1 Git历史 Git 诞生于一个极富纷争大举创新的年代 Linux 内核开源项目有着为数众多的参与者 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上 1991 2002年间 到 2002 年
  • leecode-寻找重复数字

    题目 题目 分析 哇哦 原来vector可以这样初始化 学到了 不初始化会直接报错嘞 代码 class Solution public int findDuplicate vector
  • 企业微信使用高德地图获取定位报错:INVALID_USER_SCODE(无效用户代码)

    解决方案 1 在html头部放你创建的高德安全密钥 2 完整代码如下
  • JAVA高级知识点整理

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 String字符串类 String 可变字符串 StringBuilder 可变字符串与String之间的转换 RunTime类 概述 特点 使用 Data类
  • apache beam入门之程序入口——PipelineOption

    前置章节apache beam入门宝典之初次使用 从第一章里我们看到最开始需要生成1个PipelineOption 然后才能生成1个Pipeline 而这个所谓的option用处是将可以将程序输入的args数组转成1个PipelineOpt
  • 【基于python实现UI自动化】3.0 selenium - webdriver常见8大元素定位

    python UI自动化之selenium元素定位 1 0 selenium工具介绍 2 0 selenium环境搭建 3 0 selenium元素定位 selenium常见8大元素定位 通过ID定位 通过class name定位 通过na
  • [开发过程]<c#上位机>关于.net6

    水下机器人 c 上位机 根据官方文档进行学习开发 1 了解 net6 简而言之 就是稳定强悍 跨设备 简单上手 资源丰富 强 Announcing NET 6 The Fastest NET Yet NET Blog NET 6 is no
  • java类的参考文献,太完整了!

    一面 先是问了问项目 然后就开始问一些问题 1 每个请求耗时100ms 机器的配置是4核8G 问要达到10000TPS需要多少台机器 没答上来 问了问是IO密集型还是CPU密集型 然后面试官说我想得太复杂了 2 怎么实现网页的自动跳转 答3
  • 将json文件解析存储到MySQL数据库

    PostMapping test public Object test RequestParam file MultipartFile file 将JSON解析为Java对象也称为从JSON反序列化Java对象 ObjectMapper o
  • Spring Cloud 2.x之整合工作流Activiti

    工作流在项目中非常常用 这里先来看两张图 第一张 第二张 对以上两张图进行说明 假设这两张图就是华谊兄弟的请假流程图 图的组成部分 人物 范冰冰 冯小刚 王中军 事件 动作 请假 批准 不批准 工作流 Workflow 就是 业务过程的部分
  • LLVM 环境搭建

    LLVM相关 环境搭建 PC VMware Workstation 下载 https www vmware com go getworkstation win KEY ZC3WK AFXEK 488JP A7MQX XL8YF 可自行网上查
  • Vue中使用qrcode实现渲染生成二维码中间添加自定义logo-demo

    效果 安装 npm i qrcode 使用 import QRCode from qrcode 具体生成过程
  • Mac OS X下Maven的安装与配置

    Mac OS X 安装Maven 下载 Maven 并解压到某个目录 例如 Users robbie apache maven 3 3 3 打开Terminal 输入以下命令 设置Maven classpath vi bash profil
  • 小程序打开速度慢是服务器原因吗,网页打开速度慢的原因以及解决方法

    现在大多数企业都会选择做自己的官方网站 网站的作用更像一张互联网上的企业名片 客户能否选择你 在于网站的质量 网站质量的好与坏 主要取决于网站的流量 而影响网站流量最核心的因素就是网站打开速度 那么今天就来给大家分享一下 网页打开速度慢的原
  • CTFHUB-布尔盲注

    布尔盲注 页面回显的结果只有两种 true 和 false true false 常用函数 count x 返回统计的数量 length str 返回str字符串的长度 ascii str 返回字符串str的最左面字符的ASCII代码值 s
  • vue3-实战-06-管理后台-品牌管理模块开发

    目录 1 品牌列表 1 1 需求图 1 2 定义接口和数据类型 1 3 请求接口和渲染数据 2 新增和修改品牌 2 1 需求原型分析 2 2 dialog开发 2 3 请求接口封装 2 4 图片上传组件开发 2 5 新增 修改品牌信息 3