黑马】后台项目171集

news2025/6/9 16:18:14

将近一个月没有练习了,找到之后果然打不开出了问题

【问题】运行代码打开网页后,发现不能正常登录,一开始还以为是密码记错了,后来发现是数据库没有正常启动,phpstudy中的数据库一直是启动状态,关闭不了。

【解决办法】重启phpstudy之后发现端口占用情况,想起之前的解决办法是卸载重装,太麻烦了,这次试了一下win+r,输入services.msc,找到MySQL80,停止之后,发现PHP里面的也停止了,然后重启之后,数据库正常

1,先重启数据库

2,输入node .\app.js 链接上后台数据库

3、再打开代码,运行npm run serve

之后打开网页可以正常登录

接着171开始学习

一、实现商品内容的添加

先添加一个之前文本的校验,是否都填写完整,然后才能进入到商品内容添加界面

所以要拿到表单的验证对象,对他进行一个验证

通过this.$refs访问到表单的引用addformref,然后调用校验规则,validate

//添加商品
        add(){
            this.$refs.addFormRef.validate((valid) => {
                if (!valid) {
                    return this.$message.error('请填写必要的表单项!')
                }
                //执行添加的业务逻辑
            })

但发现现在页面里还没有整出来表格

补一下170集

二、实现富文本编译器的添加

输入win+r,运行cmd,执行vue ui命令

安装运行依赖

导入main中样式

//导入富文本编辑器
import VueQuillEditor from 'vue-quill-editor'
//导入富文本编辑器对应的样式
import 'quill/dist/quill.core.css' // import styles
import 'quill/dist/quill.snow.css' // for snow theme
import 'quill/dist/quill.bubble.css' // for bubble theme

然后进行全局注册

//将富文本编辑器注册为全局组件
Vue.use(VueQuillEditor)

然后在add.vue中进行使用这个组件

打开官方文档,找到SPA这个文件,拷贝组件名称,把组件名称放到商品内容里面

                    <el-tab-pane label="商品内容" name="4">
                        <!-- 富文本编辑器组件 -->
                        <!-- 要把输入的文本内容,通过v-model双向绑定到data之中,文本要双向绑定到添加表单身上,在addform里新增一个节点,商品的详情描述 -->
                        <!-- 商品的详情描述对应的属性字段查看API文档叫good_introduce.默认是空文本 -->
                        <quill-editor v-model="addForm.goods_introduce"></quill-editor>
                    </el-tab-pane>

                //商品的详情描述
                goods_introduce:''

给他加个最小的高度,在全局样式表中

.ql-editor{
min-height: 300px;
}

希望在编辑器的下面,放一个添加的按钮

<!-- 添加商品按钮 -->
<el-button type="primary" class="btnAdd">添加商品</el-button>

为了验证添加成功了,加一个单击事件,

<el-button type="primary" class="btnAdd" @click="add">添加商品</el-button>

只要点击按钮,触发add事件,就打印表单,看表单身上是否有商品内容的属性值

        //添加商品
        add(){
            console.log(this.addForm)

OK

继续回到171,通过表单的预校验之后,准备发起数据请求,在发起数据请求之后,需要对表单里面的数据做一层数据处理。

根据API文档发现,需要对goods_cat的数据由数组变为字符串,但若是直接用addform表单里的goods_cat更改之后会造成歧义。

所以需要进行深拷贝。

三、如何进行深拷贝

安装lodash运行依赖

在add.vue中直接引入,用_进行接受

<script>
import _ from 'lodash'
export default {
           //进行深拷贝
            const form = _.cloneDeep(this.addForm)
            form.goods_cat = form.goods_cat.join(',')
            console.log(form)
            })

这样才不会报错,成功进行转变数值

四、处理动态参数和静态属性

通过查看API文档,发现,还需要对静态属性和动态属性进行转换到attr数组中

    //处理动态参数
            this.manyTableData.forEach(item =>{
                const newInfo = {
                    attr_id:item.attr_id,
                    attr_value:item.attr_vals.join(' ')
                }
                this.addForm.attrs.push(newInfo)
            })
            //处理静态属性
            this.onlyTableData.forEach(item =>{
                const newInfo = {attr_id:item.attr_id,
                attr_value:item.attr_vals}
                this.addForm.attrs.push(newInfo)
            })

五、发送请求

 //添加商品
        add(){
            // console.log(this.addForm)
            this.$refs.addFormRef.validate( async valid => {

//发起请求,添加商品
            //商品的名称,必须是唯一的
            const {data:res} = await this.$http.post('goods',form)

            if(res.meta.status!==201){
                return this.$message.error('添加商品失败')
            }
            this.$message.success('添加商品成功!')
            this.$router.push('/goods')
            })

六,上传到码云

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

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

相关文章

这个神器,让 Python 爬虫如此简单

相信大家应该都写过爬虫&#xff0c;简单的爬虫只需要使用 requests 即可。遇到复杂的爬虫&#xff0c;就需要在程序里面加上请求头和参数信息。类似这种&#xff1a; 我们一般的步骤是&#xff0c;先到浏览器的网络请求中找到我们需要的请求&#xff0c;然后将请求头和参数信…

【运筹优化】带时间窗约束的车辆路径规划问题(VRPTW)详解 + Python 调用 Gurobi 建模求解

文章目录一、概述1.1 VRP 问题1.2 CVRP 问题1.3 VRPTW 问题二、VRPTW 的一般模型三、Python 调用 Gurobi 建模求解3.1 Solomn 数据集3.2 完整代码3.3 运行结果展示3.3.1 测试案例&#xff1a;c101.txt3.3.2 测试案例&#xff1a;r101.txt一、概述 1.1 VRP 问题 车辆路径规划问…

一场深度的IT效率革命:低代码市场加速嬗变

尽管IT技术支撑了全球的信息化浪潮&#xff0c;然而困扰行业已久的软件开发效率却难以像摩尔定律一样快速提升&#xff0c;甚至已经成为了一种瓶颈&#xff0c;在困扰着行业的继续发展。一边是码农们高喊着996的境况&#xff0c;另一边是程序员的生产力并没有用在更具价值的生产…

Qml学习——布局

最近在学习Qml&#xff0c;但对Qml的各种用法都不太熟悉&#xff0c;总是会搞忘&#xff0c;所以写几篇文章对学习过程中的遇到的东西做一个记录。 学习参考视频&#xff1a;https://www.bilibili.com/video/BV1Ay4y1W7xd?p1&vd_source0b527ff208c63f0b1150450fd7023fd8 目…

C++ 浅谈之 STL List

C 浅谈之 STL List HELLO&#xff0c;各位博友好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 这里是 C 浅谈系列&#xff0c;收录在专栏 C 语言中 &#x1f61c;&#x1f61c;&#x1f61c; 本系列阿呆将记录一些 C 语言重要的语法特性 &#x1f3c3;&am…

如何在Visual Studio、Clion、Msys2中安装和使用vcpkg

首先事情是在安装了Msys2之后&#xff0c;想在Clion中使用安装在Msys2中的vcpkg。但是折腾了很久还是无法解决。于是就折腾出了这篇文章&#xff0c;和下一篇如何在Clion使用vcpkg的文章。 不过&#xff0c;由于我电脑上已近配置好了vcpkg以及环境变量&#xff0c;要是重新删除…

【C】ASCII 的十六进制字符转文件

概述 本项目是我自己使用的 来源于用串口传文件数据到电脑进行分析的时候,需要转换成可以打开的文件 而常用的串口助手大都没有直接保存为二进制文件的功能 也完全可以当作c语言初学者的练习项目(很简单) 需求 用串口传来的文件是如下格式(ASCII字符) 需要将其转化为二进制数据…

Netty相关面试题

文章目录TCP、UDP的区别&#xff1f;同步与异步、阻塞与非阻塞的区别&#xff1f;BIO、NIO、AIO分别是什么&#xff1f;Netty跟Java NIO有什么不同&#xff0c;为什么不直接使用JDK NIO类库&#xff1f;Netty的粘包/拆包是怎么处理的&#xff0c;有哪些实现&#xff1f;说说Net…

网络安全的就业及发展前景如何?

网络空间安全专业简称“网络安全专业”&#xff0c;主要以信息构建的各种空间领域为主要研究对象&#xff0c;包括网络空间的组成、形态、安全、管理等。该专业致力于培养“互联网”时代能够支撑和引领国家网络空间安全领域的具有较强的工程实践能力&#xff0c;系统掌握网络空…

完美!终于有人把《数据结构与算法》讲透彻了(附源码笔记),复杂的问题变简单了

开篇 数据结构是计算机科学与技术专业非常重要的一门核心基础课&#xff0c;计算机科学各个领域以及各种应用软件都要使用相关的数据结构和算法。 本篇的主要目的不是提供关于数据结构和算法的定理及证明。本书采用的模式是利用不同的复杂度改善问题的解决(对于每个问题&…

Spring面试重点(一)——Spring容器

Spring容器 手写Autowired注解 /** 实现spring的Autowired注解 **/ //运行时触发 Retention(RetentionPolicy.RUNTIME) //作用于变量 Target(ElementType.FIELD) public interface Autowired {}public class UserController {Autowiredprivate UserService userService;/*** …

专家说年轻人工资低是能力不行….

我们国家的很多专家总讲究语不惊人死不休&#xff0c;同时他们还很喜欢话风高速原地调头。 最近又有一个碉堡了的专家在大放厥词&#xff0c;就在前几天的首届长白山高峰论坛上中航基金副总经理邓海清发表批评年轻人的言论&#xff0c;邓老板是这么说的&#xff1a;很多年轻人…

数据分析实战项目3:RFM用户分群

目录1、RFM模型介绍2、Excel实际RFM划分案例3、RFM案例3.1 数据加载和基本信息查看3.2 数据预处理和RFM的初始值计算3.3 RFM区间和划分和分值计算3.4 RFM计算结果保存3.4.1 保存到excel3.4.2 保存到数据库3.5 RFM计算结果可视化3.6 结果分析&#xff08;营销建议&#xff09;3.…

[docker]笔记-基础配置

1、docker启动和设置开机启动 [rootlocalhost ~]# systemctl start docker [rootlocalhost ~]# systemctl enable docker 2、更换docker镜像网站&#xff0c;默认docker镜像网站是国外网站&#xff0c;下载镜像非常慢&#xff0c;需要更换为国内网站&#xff0c;以阿里云为例…

android多渠道打包(只编译一次)

众所周知&#xff0c;android 默认工具gradle可以配置多个productFlavors&#xff0c;以此实现配置多个不同版本&#xff0c;渠道的app应用&#xff0c;笔者认为这个编译速度很慢&#xff0c;于是乎有了今天的方案。希望能抛砖引玉为大家带来不一样的思路&#xff0c;废话不多说…

基于蜣螂算法改进的DELM预测-附代码

基于蜣螂算法改进的深度极限学习机DELM的回归预测 文章目录基于蜣螂算法改进的深度极限学习机DELM的回归预测1.ELM原理2.深度极限学习机&#xff08;DELM&#xff09;原理3.蜣螂算法4.蜣螂算法改进DELM5.实验结果6.参考文献7.Matlab代码1.ELM原理 ELM基础原理请参考&#xff1…

QT基础入门【布局篇】消除控件之间的间隔

一、相关参数 layoutLeftMargin: layout内的布局距离边框左端的距离。 layoutTopMargin: layout内的布局距离边框顶端的距离。 layoutRightMargin: layout内的布局距离边框右端的距离。 layoutBottomMargin: layout内的布局距离边框底端的距离。 layoutHorizontalSpacing: layo…

【每日阅读】前端了解的HTTP协议知识(二)

HTTP 简介 HTTP 协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写,是用于从万维网&#xff08;WWW:World Wide Web &#xff09;服务器传输超文本到本地浏览器的传送协议&#xff1b; HTTP工作原理 HTTP协议工作于客户端-服务端架构上&#xf…

算法导论—近似算法

近似算法基础1. 近似算法的基本概念2. 近似算法的性能分析1. 近似算法的基本概念 很多实际应用问题都是NP-完全问题&#xff0c;这类问题很可能不存在多项式时间算法。一般而言&#xff0c;NP-完全问题可采用以下三种方式处理。 如果问题的输入规模较小&#xff0c;则可以利用…

利用IO工具包拷贝文件夹或者文件

引入依赖 <dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version> </dependency> code 拷贝文件夹 PostMapping("/findB00List") CrossOrigin public Result …