{
confirmButtonText: ‘确认删除’,
cancelButtonText: ‘取消’,
type: ‘warning’
}
).catch(err => err)
//如果用户点击确认,则confirmResult 为’confirm’
//如果用户点击取消, 则confirmResult获取的就是catch的错误消息’cancel’
if (confirmResult != ‘confirm’) {
return this.$message.info(‘已经取消删除’)
}
//没有取消就是要删除,发送请求完成删除
const {data:res} = await this. h t t p . d e l e t e ( ‘ g o o d s / http.delete(`goods/ http.delete(‘goods/{goods_id}`)
if (res.meta.status !== 200) {
return this.$message.error(‘删除商品失败’)
}
this.$message.success(‘删除商品成功’)
this.getGoodsList()
}
4.添加商品
A.添加编程式导航
在List.vue中添加编程式导航,并创建添加商品路由组件及规则
//在List.vue中添加编程式导航
<el-button type=“primary” @click=“goAddPage”>添加商品
goAddPage(){
this.$router.push(‘/goods/add’)
}
在router.js中引入goods/Add.vue,并添加路由规则
import GoodAdd from ‘./components/goods/Add.vue’
path: ‘/home’, component: Home, redirect: ‘/welcome’, children: [
{ path: “/welcome”, component: Welcome },
{ path: “/users”, component: Users },
{ path: “/rights”, component: Rights },
{ path: “/roles”, component: Roles },
{ path: “/categories”, component: Cate },
{ path: “/params”, component: Params },
{ path: “/goods”, component: GoodList },
{ path: “/goods/add”, component: GoodAdd }
]
B.布局Add.vue组件
布局过程中需要使用Steps组件,在element.js中引入并注册该组件,并在global.css中给组件设置全局样式
import {Steps,Step} from ‘element-ui’
Vue.use(Step)
Vue.use(Steps)
//global.css
.el-steps{
margin:15px 0;
}
.el-step__title{
font-size: 13px;
}
然后再在Add.vue中进行页面布局
添加商品
首页
商品管理
添加商品
<el-cascader expandTrigger=‘hover’ v-model=“addForm.goods_cat” :options=“cateList” :props=“cateProps” @change=“handleChange” clearable>
C.添加tab栏切换验证
也就是说不输入某些内容,无法切换到别的tab栏
//首先给tabs添加tab切换前事件
…
//再到methods编写事件函数beforeTabLeave
beforeTabLeave(activeName,oldActiveName){
//在tab栏切换之前触发,两个形参为切换前,后的tab栏name
if(oldActiveName === ‘0’){
//在第一个标签页的时候
if(this.addForm.goods_cat.length !== 3){
this.$message.error(‘请选择商品的分类’)
return false
}else if(this.addForm.goods_name.trim() === ‘’){
this.$message.error(‘请输入商品名称’)
return false
}else if(this.addForm.goods_price.trim() === ‘0’){
this.$message.error(‘请输入商品价格’)
return false
}else if(this.addForm.goods_weight.trim() === ‘0’){
this.$message.error(‘请输入商品重量’)
return false
}else if(this.addForm.goods_number.trim() === ‘0’){
this.$message.error(‘请输入商品数量’)
return false
}
}
}
D.展示信息
展示商品参数信息,商品属性信息
在商品参数信息展示中使用的el-checkbox,el-checkbox-group组件,打开element.js引入组件并注册组件
//在用户点击tab栏时触发事件
<el-tabs v-model=“activeIndex” :tab-position=“‘left’” :before-leave=“beforeTabLeave” @tab-click=“tabClicked”>
…
//在参数信息,商品属性面板中添加循环生成结构的代码
//在data数据中添加保存动态参数和静态属性的数组
export default {
data() {
return {
…
//动态参数列表
manyTableData: [],
//静态属性列表
onlyTableData:[]
}
},methods: {
…
async tabClicked() {
//当用户点击切换tab栏时触发
if (this.activeIndex === ‘1’) {
//发送请求获取动态参数
const { data: res } = await this.$http.get(
categories/${this.cateId}/attributes
,
{ params: { sel: ‘many’ } }
)
if (res.meta.status !== 200) {
return this.$message.error(‘获取动态参数列表失败’)
}
//将attr_vals字符串转换为数组
res.data.forEach(item => {
item.attr_vals =
item.attr_vals.length === 0 ? [] : item.attr_vals.split(’ ')
})
this.manyTableData = res.data
} else if (this.activeIndex === ‘2’) {
//发送请求获取静态属性
const { data: res } = await this.$http.get(
categories/${this.cateId}/attributes
,
{ params: { sel: ‘only’ } }
)
if (res.meta.status !== 200) {
return this.$message.error(‘获取静态属性列表失败’)
}
this.onlyTableData = res.data
}
}
},
//添加 计算属性获取三级分类
computed: {
cateId() {
if (this.addForm.goods_cat.length === 3) {
return this.addForm.goods_cat[2]
}
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
ES6
-
列举常用的ES6特性:
-
箭头函数需要注意哪些地方?
-
let、const、var
-
拓展:var方式定义的变量有什么样的bug?
-
Set数据结构
-
拓展:数组去重的方法
-
箭头函数this的指向。
-
手写ES6 class继承。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
微信小程序
-
简单描述一下微信小程序的相关文件类型?
-
你是怎么封装微信小程序的数据请求?
-
有哪些参数传值的方法?
-
你使用过哪些方法,来提高微信小程序的应用速度?
-
小程序和原生App哪个好?
-
简述微信小程序原理?
-
分析微信小程序的优劣势
-
怎么解决小程序的异步请求问题?
其他知识点面试
-
webpack的原理
-
webpack的loader和plugin的区别?
-
怎么使用webpack对项目进行优化?
-
防抖、节流
-
浏览器的缓存机制
-
描述一下二叉树, 并说明二叉树的几种遍历方式?
-
项目类问题
-
笔试编程题:
最后
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
微信小程序
-
简单描述一下微信小程序的相关文件类型?
-
你是怎么封装微信小程序的数据请求?
-
有哪些参数传值的方法?
-
你使用过哪些方法,来提高微信小程序的应用速度?
-
小程序和原生App哪个好?
-
简述微信小程序原理?
-
分析微信小程序的优劣势
-
怎么解决小程序的异步请求问题?
其他知识点面试
-
webpack的原理
-
webpack的loader和plugin的区别?
-
怎么使用webpack对项目进行优化?
-
防抖、节流
-
浏览器的缓存机制
-
描述一下二叉树, 并说明二叉树的几种遍历方式?
-
项目类问题
-
笔试编程题:
最后
技术栈比较搭,基本用过的东西都是一模一样的。快手终面喜欢问智力题,校招也是终面问智力题,大家要准备一下一些经典智力题。如果排列组合、概率论这些基础忘了,建议回去补一下。