编辑商品按钮显示商品对应数据
创始人
2025-05-28 20:42:21
0次
  1. 同用户管理,权限管理等之前各个模块的编辑功能不同,因为商品具有很多可编辑的选项,所以选择像添加商品一样,单独放在一个组件中Edit.vue 。
  2. 不过相比于添加商品,还需要传递一下这个商品的id值。
  3. 布局与添加商品一致(下文省略解释布局),只是需要发送请求,将后台返回的数据渲染到组件中

初步设置
设置路由规则
传递商品id到Edit.vue
router/index.js中:

 { path: '/goods/edit/:id', component: Edit }
1
Edit.vue中:

 data () {
    return {
      // 传递过来的 商品id
      id: this.$route.params.id
    }
  }
List.vue中:

 // 点击编辑按钮,跳转到编辑页面
    editById (id) {
      this.$router.push('/goods/edit/' + id)
    }
2. 获取数据
1. 查询商品信息
async getGoodsInfo () {
      const { data: res } = await this.$http.get('goods/' + this.id)

      if (res.meta.status !== 200) {
        return this.$message.error('获取商品信息失败!')
      }
      this.editForm = res.data
      this.$message.success('获取商品信息成功!')
    }
2. 获取商品分类数据
// 获取所有商品分类数据
    async getCateList () {
      const { data: res } = await this.$http.get('categories')
      if (res.meta.status !== 200) {
        return this.$message.error('获取商品分类数据失败!')
      }
      this.cateList = res.data
    }
3. 获取商品参数列表和静态属性
// 当切换tab页签时触发的函数
    async tabClicked () {
      // console.log(this.activeIndex)
      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('获取动态参数列表失败!')
        }

        console.log(res.data)

        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('获取静态属性列表失败!')
        }

        console.log(res.data)

        this.onlyTableData = res.data
      }
    }
3. 关于数据和图片的回显
1. 级联选择器数据回显
在getGoodsInfo ()这个函数中加入以下代码:

// 设置级联选择器绑定值
      const tempList = res.data.goods_cat.split(',') // 这一步只是转化成了['1','3','6']
      //每个数组成员都是字符,而不是数字
      // 这里必须重新赋值为空数组,再赋值,否则v-model不能实现默认值回显
      this.editForm.goods_cat = []
      tempList.forEach(item => {
      // item - 0是把数据类型转换为数字,以与cateList 数据类型一致,否则不能正确回显默认值
        this.editForm.goods_cat.push(item - 0)
      })
功能实现:

2. 点击编辑后图片回显
查询文档得知有一个属性file-list:


则进行绑定:

 
     
            :action="uploadURL"
      :on-preview="handlePreview"
      :on-remove="handleRemove"
      list-type="picture"
      :headers="headerObj"
      :file-list="uploadedList"
      :on-success="handleSuccess">
      点击上传
     
   

最后,在getGoodsInfo ()这个函数中,循环editForm.pics中的每一项,把带有name和url属性的对象push到data节点下的picList:

// 将已上传的图片放入列表
this.editForm.pics.forEach(item => {
        const obj =
      {
        name: item.pics_id + '.jpg',
        url: item.pics_sma_url
      }
        this.uploadedList.push(obj)
      })
查阅了官方文档发现,有name属性,才能够点击到图片名字,从而有预览效果

4. 编辑完成后点击提交按钮
文档里面是不需要传递分类id的,但是通过请求得到的信息“该商品未设置分类”,推测需要传递商品的分类id,并且类型是一个包括每一级分类,且用逗号“,”分割的字符串

// 点击修改商品按钮
    edit () {
      this.$refs.editFormRef.validate(async valid => {
        if (!valid) {
          return this.$message.error('请填写必要的表单项!')
        }
        const form = _.cloneDeep(this.editForm)
        form.goods_cat = form.goods_cat.join(',')
      //  console.log(form)

        const { data: res } = await this.$http.put('goods/' + form.goods_id, form)
        if (res.meta.status !== 200) {
          return this.$message.error('修改商品失败!')
        }
        this.$message.success('修改商品成功!')
        this.$router.push('/goods')
      })
    }
编辑功能其实还差商品参数和静态属性还没完全弄好,经过了很久的尝试之后,我猜测后台有一些不周全的地方

如果一个商品是新添加的,那么我根据id查询得到的商品信息的参数/属性是以 空格 为分隔符的字符串
而如果是数据库中本来就存在的商品,我点击编辑按钮,通过id查询得到的信息的参数/属性 是以 逗号","为分隔符的字符串
加上我对elementui使用不熟练,目前,还无法完全实现这个功能,等日后有时间再进行完善。目前的进度,是能够做到成功修改商品基本信息,商品图片,商品描述三个部分。

Edit.vue完整代码如下:

相关内容

热门资讯

今日头条!牵手跑胡子透视挂功能... 今日头条!牵手跑胡子透视挂功能插件,牵手跑胡子总是是有透视挂插件今日头条!牵手跑胡子透视挂功能插件,...
教程辅助!和棋生财透视挂功能神... 教程辅助!和棋生财透视挂功能神器,和棋生财好像有透视挂神器1、教程辅助!和棋生财透视挂功能神器,和棋...
一分钟揭秘!天天乐清麻将开挂功... 一分钟揭秘!天天乐清麻将开挂功能app,天天乐清麻将其实有开挂app1)天天乐清麻将免费钻石:进一步...
我来教大家!趣味棋牌开挂功能插... 我来教大家!趣味棋牌开挂功能插件,趣味棋牌其实真的有开挂插件1、在趣味棋牌插件功能辅助器技巧中,中转...
总算明白!点我棋牌辅助功能神器... 总算明白!点我棋牌辅助功能神器,点我棋牌其实存在有辅助神器1、点我棋牌有没有辅助教程、点我棋牌有透视...
重大通报!游游棋牌开挂功能攻略... 重大通报!游游棋牌开挂功能攻略,游游棋牌都是真的是有开挂攻略一、游游棋牌可以开透视的定义与意义1、游...
必看攻略!丫丫衡阳字牌3开挂功... 必看攻略!丫丫衡阳字牌3开挂功能脚本,丫丫衡阳字牌3一贯存在有开挂脚本1、用户打开应用后不用登录就可...
揭秘关于!禾盛辅助器功能插件,... 揭秘关于!禾盛辅助器功能插件,禾盛其实是真的有辅助器插件揭秘关于!禾盛辅助器功能插件,禾盛其实是真的...
免费测试版!中至赣州辅助器功能... 免费测试版!中至赣州辅助器功能方法,中至赣州其实真的是有辅助器方法1、中至赣州有没有辅助教程、中至赣...
重大发现!玩吧透视功能教程,玩... 重大发现!玩吧透视功能教程,玩吧一贯真的是有透视教程1、超多福利:超高返利,海量正版游戏,玩吧免费透...