前端开发踩坑笔记(2022-11)

news2024/11/15 12:11:41

文章目录

      • 1、Mac上SourceTree更新已删除的远端分支和tag
      • 2、echarts x轴文字显示不全(解决方案)
      • 3、如何渲染多行多列的表格(非固定的行数和列数)
      • 4、umy-ui标题过长或内容过长时的处理
      • 5、dateRange的时间选择只能选择一个周
      • 6、如何将对象数组中的某一个属性提取出来成为一个新的对象数组?
      • 7、报错解决:[Vue warn]: Error in nextTick: "NotFoundError: Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node."

1、Mac上SourceTree更新已删除的远端分支和tag

问题背景:
在远端删除分支或tag之后,SourceTree上的远端分支列表和tag不会更新,这样会导致tag越来越多,要进行同步更新,进行以下操作即可:
1、获取git的安装路径,终端输入:

which git

在这里插入图片描述
2、打开SourceTree,偏好设置->自定义操作->添加
在这里插入图片描述
3、在下图片中1的位置输入git的安装路径,2的位置输入:

fetch origin --prune --prune-tags

在这里插入图片描述
4、动作->自定义操作->执行
5、重启SourceTree,发现多余的分支tag已经不存在了

2、echarts x轴文字显示不全(解决方案)

echarts有的时候遇到x轴标签过长的情况,会导致显示不全。

option = {
  xAxis: {
    type: 'category',
    data: [
      '有一点长的标签',
      '有一点点长的标签',
      '有一点点点长的标签',
      '有一点点点点长的标签',
      '有一点点点点点长的标签',
      '有一点点点点点点长的标签',
      '有一点点点点点点点长的标签',
    ]
  },
  yAxis: {
    type: 'value'
  },
  series: [
    {
      data: [820, 932, 901, 934, 1290, 1330, 1320],
      type: 'line',
      smooth: true
    }
  ]
};

在这里插入图片描述
解决方案:
1、文字旋转45度

option = {
  grid: {
    bottom: 150
  },
  xAxis: {
    type: 'category',
    data: [
      '有一点长的标签',
      '有一点点长的标签',
      '有一点点点长的标签',
      '有一点点点点长的标签',
      '有一点点点点点长的标签',
      '有一点点点点点点长的标签',
      '有一点点点点点点点长的标签'
    ],
    axisLabel: {
      //旋转角度
      rotate: 45
    }
  },
  yAxis: {
    type: 'value'
  },
  series: [
    {
      data: [820, 932, 901, 934, 1290, 1330, 1320],
      type: 'line',
      smooth: true
    }
  ]
};

在这里插入图片描述
2、文字换行

option = {
  grid: {
    bottom: 150
  },
  xAxis: {
    type: 'category',
    data: [
      '有一点长的标签',
      '有一点点长的标签',
      '有一点点点长的标签',
      '有一点点点点长的标签',
      '有一点点点点点长的标签',
      '有一点点点点点点长的标签',
      '有一点点点点点点点长的标签'
    ],
    axisLabel: {
      formatter: val =>{
        //一行字数
        const max = 4
        // 标签长度
        const valLength = val.length
        // 换行数
        const rowNum = valLength /4
        if(valLength > 1){
          let target = ''
          for(let i = 0;i < rowNum; i++){
            const start = i*max
            const end = start + max
            target += val.substring(start, end)+'\n'
          }
          return target
        }else{
          return val
        }
      }
    }
  },
  yAxis: {
    type: 'value'
  },
  series: [
    {
      data: [820, 932, 901, 934, 1290, 1330, 1320],
      type: 'line',
      smooth: true
    }
  ]
};

在这里插入图片描述

3、如何渲染多行多列的表格(非固定的行数和列数)

有这样一个需求,在前端的详情中展示非固定行数和列数的数据(行数和列数都较多),并且表格的表头也是不固定的,如下图,如何展示?
在这里插入图片描述
解决:
对于表格数据较多的情况一般不推荐使用el-table,容易造成页面卡顿。使用umy-ui中的表格

<!--
 * @Author: tongsa
 * @Description: 详情
 * @Date: 2022-09-09 09:20:04
 * @LastEditors: tongsa
 * @LastEditTime: 2022-09-13 18:01:12
-->
<template>
  <div>
    <el-tabs v-model="activeTab" @tab-click="handleClick">
      <el-tab-pane
        v-for="item in tabList"
        :key="item.label"
        :label="item.name"
        :name="item.label"
      ></el-tab-pane>
    </el-tabs>

    <ux-grid
      ref="plxTable"
      :max-height="height"
      show-overflow="tooltip"
      show-footer-overflow="tooltip"
      show-header-overflow="tooltip"
      size="mini"
    >
      <ux-table-column
        v-for="(item, i) in columns"
        :key="i"
        :resizable="item.resizable"
        :field="item.prop"
        :title="item.label"
        :fixed="item.fixed"
        align="center"
        :min-width="item.width"
      >
      </ux-table-column>
    </ux-grid>
  </div>
</template>

<script>
export default {
  props: {
    yearMonth: String,
  },
  data() {
    return {
      height: 0,
      activeTab: "null",
      details: {},
      tableData: [],
      columns: [],
      tabList: [],
    };
  },
  computed: {
    tagShows() {
      return this.$store.state.common.tagShow;
    },
  },
  watch: {
    tagShows: {
      handler(newVal, oldVal) {
        this.initFun();
        this.getData();
      },
      deep: true,
    },
  },
  created() {},
  mounted() {
    this.initFun();
    this.getData();
  },
  methods: {
  /*初始化**/
    initFun() {
      let num = 0;
      if (Number(this.tagShows) == 1) {
        num = 210;
      } else {
        num = 170;
      }
      let _height =
        document.documentElement.clientHeight || document.body.clientHeight;
      this.height = _height - num;
      window.addEventListener(
        "resize",
        () => {
          let _height =
            document.documentElement.clientHeight || document.body.clientHeight;
          this.height = _height - num; // 动态设置高度
        },
        false
      );
    },
    /*获取数据**/
    getData() {
      this.$post("data/provinceMarketClearing_detail", {
        yearMonth: this.yearMonth,
      }).then((res) => {
        if (res) {
        //接口调用结果示例如下
          this.details = res;
          let newArr = [];
          for (let i in this.details) {
            newArr.push({
              label: i,
              name: i,
            });
          }
          this.tabList = newArr;
          this.activeTab = this.tabList[0].label;
          this.datas = [];
          let details = this.details[this.activeTab];
          let obj1 = details[0]; //一级表头
          for (let k in obj1) {
            this.columns.push({
              prop: k,
              label: obj1[k],
              width: k == "0" ? 70 : 100,
              resizable: false,
              fixed: k == "0" ? "left" : "",
            });
          }
          this.tableData = details.slice(1, details.length);
          this.datas = this.tableData;
          this.$refs.plxTable.reloadData(this.datas);
        } else {
        }
      });
    },
    handleClick() {
      this.columns = [];
      let details = this.details[this.activeTab];
      this.$nextTick(() => {
        let obj1 = details[0]; //一级表头
        for (let k in obj1) {
          this.columns.push({
            prop: k,
            label: obj1[k],
            width: k == "0" ? 70 : 100,
            resizable: false,
            fixed: k == "0" ? "left" : "",
          });
        }
        this.tableData = details.slice(1, details.length);
        this.datas = this.tableData;
        this.$refs.plxTable.reloadData(this.datas);
      });
    },
  },
};
</script>

展示结果:
在这里插入图片描述
返回的res数据的基本格式为:

details: {
        8.2: [
          {
            0: "",
            1: "天津电网-售",
            2: "天津电网-售",
            3: "河北电网-售",
            4: "河北电网-售",
            5: "山西电网-售",
            6: "山西电网-售",
            7: "辽宁电网-售",
            8: "辽宁电网-售",
            9: "吉林电网-售",
            10: "吉林电网-售",
            11: "黑龙江电网-售",
            12: "黑龙江电网-售",
          },
          {
            0: "时间",
            1: "出清电量(日前)",
            2: "出清电价(日前)",
            3: "出清电量(日前)",
            4: "出清电价(日前)",
            5: "出清电量(日前)",
            6: "出清电价(日前)",
            7: "出清电量(日前)",
            8: "出清电价(日前)",
            9: "出清电量(日前)",
            10: "出清电价(日前)",
            11: "出清电量(日前)",
            12: "出清电价(日前)",
          },
          {
            0: "0:15",
            1: "0.00 ",
            2: "0.00 ",
            3: "391.50 ",
            4: "142.47  ",
            5: "391.50 ",
            6: "142.47  ",
            7: "391.50 ",
            8: "142.47  ",
            9: "391.50 ",
            10: "142.47  ",
            11: "391.50 ",
            12: "142.47  ",
          },
          {
            0: "0:30",
            1: "0.00 ",
            2: "0.00 ",
            3: "391.50 ",
            4: "142.47  ",
            5: "391.50 ",
            6: "142.47  ",
            7: "391.50 ",
            8: "142.47  ",
            9: "391.50 ",
            10: "142.47  ",
            11: "391.50 ",
            12: "142.47  ",
          },
        ],
        8.3: [
          {
            0: "",
            1: "天津电网-售",
            2: "天津电网-售",
            3: "河北电网-售",
            4: "河北电网-售",
            5: "山西电网-售",
            6: "山西电网-售",
            7: "辽宁电网-售",
            8: "辽宁电网-售",
            9: "吉林电网-售",
            10: "吉林电网-售",
            11: "黑龙江电网-售",
            12: "黑龙江电网-售",
          },
          {
            0: "时间",
            1: "出清电量(日前)",
            2: "出清电价(日前)",
            3: "出清电量(日前)",
            4: "出清电价(日前)",
            5: "出清电量(日前)",
            6: "出清电价(日前)",
            7: "出清电量(日前)",
            8: "出清电价(日前)",
            9: "出清电量(日前)",
            10: "出清电价(日前)",
            11: "出清电量(日前)",
            12: "出清电价(日前)",
          },
          {
            0: "0:15",
            1: "0.00 ",
            2: "0.00 ",
            3: "391.50 ",
            4: "142.47  ",
            5: "391.50 ",
            6: "142.47  ",
            7: "391.50 ",
            8: "142.47  ",
            9: "391.50 ",
            10: "142.47  ",
            11: "391.50 ",
            12: "142.47  ",
          },
          {
            0: "0:30",
            1: "0.00 ",
            2: "0.00 ",
            3: "391.50 ",
            4: "142.47  ",
            5: "391.50 ",
            6: "142.47  ",
            7: "391.50 ",
            8: "142.47  ",
            9: "391.50 ",
            10: "142.47  ",
            11: "391.50 ",
            12: "142.47  ",
          },
          {
            0: "0:45",
            1: "0.00 ",
            2: "0.00 ",
            3: "391.50 ",
            4: "142.47  ",
            5: "391.50 ",
            6: "142.47  ",
            7: "391.50 ",
            8: "142.47  ",
            9: "391.50 ",
            10: "142.47  ",
            11: "391.50 ",
            12: "142.47  ",
          },
          {
            0: "1:00",
            1: "0.00 ",
            2: "0.00 ",
            3: "391.50 ",
            4: "142.47  ",
            5: "391.50 ",
            6: "142.47  ",
            7: "391.50 ",
            8: "142.47  ",
            9: "391.50 ",
            10: "142.47  ",
            11: "391.50 ",
            12: "142.47  ",
          },
        ],
      },

4、umy-ui标题过长或内容过长时的处理

show-header-overflow // 标题过长,是否显示省略号 头部过长的时候展示省略号 悬浮展示标题
show-overflow // 内容过长时显示为省略号

5、dateRange的时间选择只能选择一个周

项目场景:
给后端传日期数据时要求传递的只有七天,也就是说需要限制选择,当选择了一个日期之后,就只能选择它前七天或者后七天的。

//相关界面上代码
      <el-date-picker
              v-model="createParams.reportDate"
              type="daterange"
              placeholder="请选择日期"
              :editable="false"
              value-format="yyyy-MM-dd"
              :picker-options="pickerOptions"
              style="width: 100%"
            ></el-date-picker>
//data中进行定义
pickerOptions:null
//可以在相关方法中执行
this.pickerOptions = {
            onPick(time) {
              // 如果选择了只选择了一个时间
              if (!time.maxDate) {
                let timeRange = 6 * 24 * 60 * 60 * 1000; // 7天
                _minTime = time.minDate.getTime() - timeRange; // 最小时间
                _maxTime = time.minDate.getTime() + timeRange; // 最大时间
                // 如果选了两个时间,那就清空本次范围判断数据,以备重选
              } else {
                _minTime = _maxTime = null;
              }
            },
            //将七天前和七天后的日期设置成可选择的日期,其余的日期均为不可选择
            disabledDate(time) {
              // onPick后触发
              if (_minTime && _maxTime) {
                return time.getTime() != _minTime && time.getTime() != _maxTime;
              } else {
                return false;
              }
            },
          };

6、如何将对象数组中的某一个属性提取出来成为一个新的对象数组?

从 [{ name: ‘小王’, age: ‘12’ }, { name: ‘小李’, age: ‘13’ },{ name: ‘小张’, age: ‘14’ }];到[{age: ‘12’ }, {age: ‘13’ },{ age: ‘14’ }]该如何处理?

let oldArr =
    [{ name: '小王', age: '12' },
    { name: '小李', age: '13' },
    { name: '小张', age: '14' }];
let newArr = oldArr.map((item,index)=>{
    return Object.assign({},{age: item.age})
});//newArr即为所需的

在这里插入图片描述

7、报错解决:[Vue warn]: Error in nextTick: “NotFoundError: Failed to execute ‘insertBefore’ on ‘Node’: The node before which the new node is to be inserted is not a child of this node.”

原因:
这是由于在最外层的template上面加了v-if导致的报错
解决:
在最外层加上一层空的div 上面不要写v-if条件渲染

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

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

相关文章

Servlet API 详解

目录 一、HttpServlet ① init() 方法 ② service() 方法 ③ destroy() 方法 ④ doGet()方法 ⑤ doPost()方法 ⑥ doPut/deDelete/doOptions 常见面试题&#xff1a; 请你谈谈Servlet的生命周期 二、Http请求&#xff1a;HttpServletRequest 1. 获取请求行信息 2. 获…

一个redux使用案例模板

目录 redux 纯函数和高阶函数&#xff1a; redux 开发工具使用 react-redux redux 1. 结构&#xff1a; count--index.jsx import React, { Component } from react import store from ../../redux/store import { acDecrement,acIncrement,acAsyncIncrement } from ../..…

不会向上管理的人,做不好项目经理和PMO【附具体行动清单】

在职场中&#xff0c;向上管理基本是最重要的一件事儿&#xff0c;升职涨薪奖金都离不开向上管理&#xff01;当你的向上管理做得好&#xff0c;机会都会迎面扑来。 你是不是也遇到过被领导批评时&#xff0c;感到非常委屈或愤怒&#xff0c;情绪经常被领导左右&#xff0c;那…

Three.js一学就会系列:02 画线

系列文章目录 Three.js一学就会系列&#xff1a;01 第一个3D网站 文章目录系列文章目录[Three.js一学就会系列&#xff1a;01 第一个3D网站](https://blog.csdn.net/u012551928/article/details/128205373)前言一、省略部分二、使用方法创建一个场景创建一个透视摄像机将渲染器…

详解CSS层叠上下文(解析z-index不生效的原因)

为什么会有层叠上下文 在CSS2.1规范中&#xff0c;每个盒模型的位置是三维的&#xff0c;分别是平面画布上的X轴&#xff0c;Y轴以及表示层叠的Z轴。一般情况下&#xff0c;元素在页面上沿X轴Y轴平铺&#xff0c;我们察觉不到它们在Z轴上的层叠关系。而一旦元素发生堆叠&#x…

查询网站的谷歌PR权重复杂吗?查询谷歌PR权重最简单的方法

查询网站的谷歌PR权重复杂吗&#xff1f;用对方法一点也不复杂哦! 查询谷歌PR权重最简单的方法——用网站批量查询工具。 网站批量查询工具根据网站的域名可以查询到网站的权重值、网站信息、域名信息、域名备案情况、域名是否安全&#xff0c;来作为网站数据分析的参考。 具体…

C语言基础7:结构体类型、声明、成员类型、定义、初始化、成员访问、传参

文章目录C语言基础7&#xff1a;结构体类型、声明、成员类型、定义、初始化、成员访问、传参1. 结构体类型的声明1.1 结构体的基础知识1.2 结构体的声明1.3 结构体成员的类型1.4 结构体变量的定义和初始化2. 结构体成员访问4. 结构体传参C语言基础7&#xff1a;结构体类型、声明…

SAP S4HANA MM模块后台配置详解

目录 1. 常规设置 1.1 定义国家 1.2.计量单位配置 1.3.货币设置 1.4.维护日历 1.4.1 概念及功能说明 1.4.2 业务示例 1.4.3 配置步骤 2. 企业结构 2.1 定义和分配公司 2.2 设定评估级别、定义/分配工厂 2.2.1. 概念及功能说明 2.2.1. 业务示例 2.2.2. 配置步…

java 八股文

java 八股文 java篇 java 面向对象有哪些特征 封装 多态和继承 arrayList 和 LinkedList 的区别 数据结构不同&#xff0c;一个是数组一个是链表 arrayList 适合 随机访问 读多&#xff0c;插入和删除少 LinkedList 适合插入 和删除 多&#xff0c;按次序遍历的情况 再…

数据结构实验-折半插入排序-双向冒泡排序

目录 分析&#xff1a; 折半插入排序 双向冒泡排序 折半插入排序 思想&#xff1a; 代码 运行结果 双向冒泡排序 代码 运行结果 分析&#xff1a; 折半插入排序 折半插入排序&#xff0c;折半插入排序是在直接插入的改进&#xff0c;通过折半查找得到插入位置&#xf…

java自定义类加载器来加载本地class文件,用demo来解析类加载的双亲委派机制、沙箱机制、打破双亲委派机制

1、首先将class文件放入指定本地目录下 2、编写自定义类加载器demo代码来加载class文件 /*** author WuSong* version 1.0* date 2022/12/7 12:07* description*/ public class MyClassLoaderTest {/*** 1&#xff1a;继承ClassLoader类* 2&#xff1a;重写findClass方法*/sta…

2023最新扫码连wifi-扫码挪车-聚合CPS返利多合一小程序源码

2023最新扫码连wifi-扫码挪车-聚合CPS返利多合一系统 系统特点: 目前已接入的 CPS 渠道: 充值:话费充值、电费充值、影视会员充值、会员卡券充值 本地团购:联联周边游 电商平台:京东、拼多多、唯品会、淘宝、抖音美团:外卖、闪购、酒店、到店、优选饿了么:外卖、商超 出行服务:…

高压放大器在压电驱动器的机翼除冰方法研究中的应用

实验名称&#xff1a;高压放大器基于压电驱动器的机翼除冰方法研究 研究方向&#xff1a;压电效应、多普勒激光测振 实验原理&#xff1a;多普勒激光测振仪是基于多普勒激光测振原理工作的&#xff0c;当四边固支的矩形板通过驱动器激振起来时&#xff0c;通过激光扫描铝板上的…

知识图谱-KGE-语义匹配-双线性模型(打分函数用到了双线性函数)-2012:LFM(Latent Factor Model)

【paper】 A latent factor model for highly multi-relational data 【简介】 这篇文章是法国的研究团队发表在 NIPS 2012 上的文章&#xff0c;还挂了 Antoine Bordes 的名字。文章提出了 LFM&#xff08;Latent Factor Model&#xff09;&#xff0c;主要贡献有两点&#x…

机床测头应用一:仿形加工功能,降低废品率

机床测头是一种可安装在大多数数控机床上&#xff0c;并在加工循环中自动对工件的尺寸及位置进行测量的装置&#xff0c;使用合适的测量程序&#xff0c;还可以根据测量结果实现自动刀路补偿&#xff0c;可以保证“第一件和第一百件尺寸一致”&#xff0c;是批量生产中不可缺少…

PLC程序实例三:ModBusRTU客户端编程实例与测试方法

一、需求描述 1、设备作为ModBusRTU服务端时&#xff0c;需要给出对应的测试方法&#xff0c;即 PLC 作为主站&#xff0c;设备作为从站使用&#xff08;本文编写的是PLC主站程序&#xff09; 2、业务与上一篇文章ModBusTCP网络触发业务逻辑一致&#xff0c;描述如下&#xf…

SpringCloud学习笔记 - Nacos服务注册中心 - Nacos Discovery

1. Nacos简介 Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称&#xff0c;一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集&#xff0c;帮助您…

Git实战 | 让工作更高效,搞定Git的分支管理

上一篇讲到Git的分支管理实操&#xff0c;在线合并和本地合并都进行了实操。毕竟&#xff1a;光说不练是假把式。而只练不整理&#xff0c;只能是傻把式了。分支管理到底如何进行管理呢&#xff1f; 先以GitLab上的一张经典的图打头&#xff0c;作为一个总体概览&#xff0c;也…

汇编语言程序设计期末复习

汇编期末复习 第一章 汇编语言基础知识 机器指令&#xff1a;cpu能直接识别并遵照执行的指令&#xff0c;用二进制编码表示&#xff0c;由操作码&#xff0c;操作数组成&#xff0c;编码只含二进制0或1 机器语言&#xff1a;用二进制编码组成的机器指令的集合和一组使用机器…

java swing(GUI) MySQL实现的视频播放器系统源码+运行教程

今天给大家演示一下由Java swing实现的一款简单的多媒体播放器&#xff0c;项目源码我会放在我的网站上&#xff0c;并配有视频配置教程&#xff0c;保证运行起来的。这个小播放器实现了视频、音频文件的播放、暂停、快进、快退、停止、全屏等功能&#xff0c;还有历史记录功能…