数组对象根据条件删除某一字段数据、自定义组装数组对象数据、引入侧边模态框滚动内部内容不应滚动底层页面、自定义列表循环生成的按钮切换实时更新视图this.$set的正确使用、div横向滚动条位置放上面

1、数组对象根据条件删除某一字段数据js逻辑:

for (let i = this.singDataList.length - 1; i >= 0; i -= 1) {
              if (this.singDataList[i].num === undefined) {
                this.singDataList.splice(i, 1)
              }
            }

2、自定义组装数组对象数据

              this.ids = []
              const idd = resp.payload.lastList
              idd.forEach((item) => {
                this.ids.push({ id: item.code, name: item.name })
              })
              this.patStandList.push({
                nameId: 3,
                name: '指标趋势',
                standardItemList: this.arrayUnique2(this.ids, 'id')
              })


arrayUnique2(arr, name) {
      const hash = {}
      return arr.reduce((item, next) => {
        hash[next[name]] ? '' : hash[next[name]] = true && item.push(next)
        return item
      }, [])
    },

3、引入侧边模态框滚动内部内容不应滚动底层页面

vue项目main.js文件注册全局方法

//main.js
Vue.prototype.noScroll = function () {
  const mo = (e) => {
    e.preventDefault()
  }
  document.getElementsByTagName('html')[0].style.overflow = 'hidden'
  document.addEventListener('touchmove', mo, false)
}
Vue.prototype.canScroll = function () {
  const mo = (e) => {
    e.preventDefault()
  }
  document.getElementsByTagName('html')[0].style.overflow = ''
  document.removeEventListener('touchmove', mo, false)
}

//detail.vue组件页面相应watch监听调用
detectionFlag代表控制模态框显隐的字段

watch: {
    'detectionFlag'(e) {
      if (e) {
        this.noScroll()
      } else {
        this.canScroll()
      }
    }
  },

4、自定义列表循环生成的按钮切换实时更新视图this.$set的正确使用

<template v-slot:[`item.delFlag`]="{ item, index }">
            <div style="display: flex; align-items: center">
              <v-btn
                text
                style="padding: 0; padding-right: 32px"
                color="#0B41CD"
                v-if="item.delFlag"
                @click="rzGroupEdit(item, index)"
                :disabled="!getLimit('SYSTEM_MANAGE_DICT_EDIT')"
              >
                编辑
              </v-btn>
              <v-btn
                text
                style="padding: 0; padding-right: 32px"
                color="#0B41CD"
                v-if="!item.delFlag"
                @click="rzGroupSave(item, index)"
              >
                保存
              </v-btn>
            </div>
          </template>

rzGroupEdit(item, index) {
      const editChange = this.tableDataList[index]
      editChange.delFlag = false
      this.$set(this.tableDataList, index, editChange)
    },
async rzGroupSave(item, index) {
      this.newValidNum = item.extendParams.validNum
      this.newValidNumType = item.extendParams.validNumType
      this.newVal = item.val
      if (!/^[1-9]\d*$/.test(this.newValidNum)) {
        this.$message.error('输入框内只能输入数字,不能为小数、不能小等于0')
        return
      }
      const saveChange = this.tableDataList[index]
      saveChange.delFlag = true
      this.$set(this.tableDataList, index, saveChange)
      await this.itemSaveSubmit()
    },

5、自定义div横向滚动条位置放上面

.infoRitTable {  //父级div
      width: 100%;
      overflow: auto;
      display: flex;
      transform: scaleY(-1);  //关键代码
}
.selfTableAll {  //子级div
        min-width: 160px;
        width: 100%;
        display: flex;
        align-items: center;
        flex-direction: column;
        background: #fff;
        transform: scaleY(-1); //关键代码
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值