黑马VUE电商管理后台笔记记录

电商后台项目遇到的问题

1、.eslintrc.js 中 ‘@vue/standard’ 需要删掉或者注释掉
2、不能直接在 vue ui 里面安装 less-loader和less依赖,因为版本问题,最好是安装低版本
npm install less-loader@4.1.0 -D`
npm install less@3.9.0 -D
3、element-ui 是按需导入的,因此需要在 plugins 文件夹下的 element.js 导入
4、引入 iconfont 出现问题

https://www.cnblogs.com/eddina/p/9552713.html

比如我这里就在 iconfont.css 文件加了一个 /src/assets/fonts/ 就生效了并且也没有报错

5、之前一直不清楚表单的ref属性,百度后发现 :ref 绑定控件,$refs 获取控件
6、很神奇的是!!后台的vue_api_server之前postman测试不成功,但是重新删除依赖包并且npm i 之后就好了
7、一个需要注意的逻辑
// 1. 将登录成功之后的 token,保存到客户端的 sessionStorage 中  因为sessionStorage是在会话期间进行存储,不能是localStorage
//   1.1 项目中出了登录之外的其他API接口,必须在登录之后才能访问
//   1.2 token 只应在当前网站打开期间生效,所以将 token 保存在 sessionStorage 中
        window.sessionStorage.setItem('token', res.data.token)
// 2. 通过编程式导航跳转到后台主页,路由地址是 /home
        this.$router.push('/home')
8、处理项目中ESlint语法报错问题 ESlint语法规范实际上就是将双引号改为单引号,将分号去掉

创建.prettierrc文件,将以下代码贴上去

{
  "semi":false,
  "singleQuote":true
}

9、这里有一个问题:引入Submenu组件后,最新的elementui组件库是,但是我引入就不生效,改为就正常显示了

10、引入图标的语法是 统一前缀el-icon

11、弹框dialog不显示,原本使用的是v-model 但是没绑定 改为 :visible.sync=“dialogVisible” 就对了 有可能是版本问题

12、ref指的是表单的引用

13、在Roles.vue文件中,使用了递归的方法去获取所有的三级列表,这说明在前端中算法的确很重要

14、接口文档怎么看呢 例如 roles/:roleId/rights 中的**:roleId**代表这是一个参数变量

15、在新建组件的时候,总是运行会出现错误,如下所示

Failed to mount component: template or render function not defined.

但是自己会好,注意vue那些保存了

16、树形的表格显示,需要自己安装插件,去vue面板,安装依赖vue-table-with-tree-grid,具体用法点击详情可以查看代码示例以及官方文档API

17、使用 组件的时候出现了级联选择器过长的情况处理看该网址https://blog.csdn.net/qq_40788998/article/details/105250084

另外的2个问题可以看自己的博客!https://blog.csdn.net/weixin_44478371?spm=1019.2139.3001.5343

18、如果用了封装组件的话,比如element,这个时候使用按键修饰符需要加上.native

例如@keyup.enter="handleInputConfirm(scope.row)"就不会生效,需要使用@keyup.enter.native=“handleInputConfirm(scope.row)”

19、后面{}内是请求体

const { data: res } = await this.$http.put(`
     categories/${this.cateId}/attributes/${this.editForm.attr_id},
     { attr_name: this.editForm.attr_name, attr_sel: this.activeName }
)

vue项目中$http的get请求需要加params请求参数

 this.$http.get('orders', { params: this.queryInfo })

20、在main.js全局定义一个格式化时间的过滤器

// 全局定义一个格式化时间的过滤器*
Vue.filter('dateFormat', function(*originVal*) {
 const dt = new Date(*originVal*)
 const y = dt.getFullYear()
 const m = (dt.getMonth() + 1 + '').padStart(2, '0')
 const d = (dt.getDate() + '').padStart(2, '0')
 const hh = (dt.getHours() + '').padStart(2, '0')
 const mm = (dt.getMinutes() + '').padStart(2, '0')
 const ss = (dt.getSeconds() + '').padStart(2, '0')
 return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
})

调用

<el-table-column label="创建时间"
             prop="add_time"
             width="140px">
     <template slot-scope="scope">{{scope.row.add_time | dateFormat}}</template>
     </el-table-column>

21、使用upload组件上传图片时有个问题,一是action是后台请求路径的全称,二是根据main.js拦截器的要求要配置header属性,否则图片不会上传成功

// 图片上传的headers请求头对象*
   headerObj: {
    Authorization:window.sessionStorage.getItem('token'),
   },

22、富文本编辑器

按照视频里的来做,富文本编辑器没有生效;之后很奇怪一下子生效了,有可能是main.js没保存好??不过我新加了一个依赖项quill 之后把quill卸载也没有什么改变 可能这就是代码的神奇之处吧

安装vue-quill-editor依赖项

// 导入富文本编辑器
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)
<quill-editor v-model="addForm.goods_introduce"></quill-editor>

23、在添加商品表单, 需要对goods_cat做数组转字符串的处理,因为这个和级联选择器做了动态绑定,所以不能直接使用this.addForm.goods_cat=this.addForm.goods_cat.join(’,’)

这里需要用到***深拷贝*** 安装依赖lodash

在Add.vue文件下

import _ from 'lodash'
// lodash cloneDeep(obj)
const form = _.cloneDeep(this.addForm)
form.goods_cat = this.addForm.goods_cat.join(',')

24 、表格加索引列 直接

<el-table-column type="index"></el-table-column>

25、做快递物流那里接口失效了,需要自己写一个固定数据

在这里插入图片描述

timeline那里src文件改一下 是item.vue 直接复制过来的是item(1).vue

时间线怎么做呢???

a、将timeline和timeline-item两个文件夹直接复制到plugins

b、在element.js挂载组件

import {Timeline,TimelineItem} from 'element-ui'
Vue.use(Timeline)
Vue.use(TimelineItem)

c、在相应的vue文件的中导入样式,例如:

26、echarts的使用

安装echarts依赖包

// 1.导入 echarts
import * as echarts from 'echarts'
<!-- 2.为ECharts准备一个具备大小(宽高)的Dom -->*
<div id="main" style="width: 750px;height:400px;"></div>
// 在vue文件中,要把这些放在mounted函数中,原因如下:
// 执行到mounted  此时页面上的元素已经被渲染完毕了!
async mounted() {
  // 3.基于准备好的dom,初始化echarts实例
  var myChart = echarts.init(document.getElementById('main'))
}
// 4.准备数据和配置项
var option = {
        title: {
          text: 'ECharts 入门示例'
        },
        tooltip: {},
        legend: {
          data: ['销量']
        },
        xAxis: {
          data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
        },
        yAxis: {},
        series: [
          {
            name: '销量',
            type: 'bar',
            data: [5, 20, 36, 10, 10, 20]
          }
        ]
      };
 // 5.展示数据
 myChart.setOption(option)

这里用到了***lodash深拷贝***,同23中的引用方式,目的是合并两个对象

import _ from 'lodash'
// merge是lodash本身提供的
const result = _.merge(res.data, this.options)

https://echarts.apache.org/handbook/zh/get-started/#%E7%BB%98%E5%88%B6%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%E5%9B%BE%E8%A1%A8

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值