element el-date-picker type=“datetimerange“

刚写完结果需求变更了。封装的时间组件重新做。结合eacharts 。
直接上代码了

在这里插入图片描述
在这里插入图片描述
日期选择组件封装

<template>
  <section class="warning-container">
    <header class="query-head">
      <el-form :inline="true" class="query-form">
        <div>
          <el-form-item label="日期选择" label-width="120px">
            <el-date-picker
              v-model="daterangeBizOccurDate"
              type="datetimerange"
              :clearable="true"
              class="changeInput"
              style="width: 360px"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
              :picker-options="pickerOptions"
              @change="onLoad"
            > </el-date-picker>
          </el-form-item>
          <el-form-item label=" " label-width="30px">
            <span style="color: #aaa">提示:最多可查询7天数据</span>
          </el-form-item>
        </div>
      </el-form>
    </header>
  </section>
</template>

<script>

export default {
  props: {},
  data () {
    return {
      daterangeBizOccurDate: [],
      maxDate: new Date(),
      selectData: '',
      pickerOptions: {
        disabledDate: (time) => {
          if (this.selectData) {
            const maxDurationTem = 6 * 24 * 3600 * 1000
            return time.getTime() > this.maxDate
              || time.getTime() > this.selectData + maxDurationTem
              || time.getTime() < this.selectData - maxDurationTem
          } else {
            return time.getTime() > this.maxDate
          }
        },
        onPick: ({ maxDate, minDate }) => {
          this.selectData = minDate.getTime()
          if (maxDate) {
            // 第二次点击日期选择器,选好初始时间和结束时间后,解除禁用限制
            this.selectData = ''
          }
        }
      }
    }
  },
  watch: {},
  mounted () {
    this.defaultDate()
  },
  methods: {
    defaultDate (){
      let sTime = window.$dayjs().format('YYYY-MM-DD 00:00:00')
      let eTime = window.$dayjs().format('YYYY-MM-DD 23:59:59')
      this.daterangeBizOccurDate = [new Date(sTime), new Date(eTime)]
    },
    onLoad (val) {
      this.daterangeBizOccurDate = [window.$dayjs(val[0]).format('YYYY-MM-DD HH:mm:ss'),  window.$dayjs(val[1]).format('YYYY-MM-DD HH:mm:ss')]
      this.$emit('selectDay7', val)
    }
  }
}
</script>

<style lang="scss" scoped>
::v-deep {
  .el-date-editor .el-range-separator {
    width: 8%;
  }

  .el-table {
    min-height: 200px;

    .el-table__cell {
      padding: 0;
      height: 48px;

      .cell {
        line-height: 26px;
      }
    }

    &.zmj-el-table::before {
      height: 1px;
    }
  }

  .el-form-item__label {
    color: #fff;
  }

  .el-pagination {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    padding: 30px 0;

    .el-pagination__total,
    .el-pagination__jump {
      color: #fff;
    }

    button, .el-pager li {
      background: #031e3c;
      color: #fff;

      &.active {
        background: #1e4966;
      }
    }

    button:disabled {
      color: #999;
    }
    .el-input .el-input__inner {
      height: 28px;
    }
  }

  .el-select.query-select {
    width: 345px;
  }

  .el-tag.el-tag--info {
    background-color: #1A293A;
    border-color: #43576F;
    color: #fff;

    & > .el-tag__close {
      color: #8B929B;
      background-color: #1A293A;
    }
  }
}

.warning-container {
  // width: 83vw;
  margin-top:-35px;
  // margin-left: 200px;
  // padding-top: 36px;

  .warning-table-wrap {
    width: 100%;
    overflow: hidden;
  }

  .warning-type {
    padding: 2px 8px;
    border-radius: 3px;

    &.type1 {
      background: #39131D;
      border: 1px solid #FF757A;
      color: #FF757A;
    }

    &.type2 {
      background: #4B4510;
      border: 1px solid #FFE395;
      color: #FFE395;
    }

    &.type3 {
      background: #122E58;
      border: 1px solid #A2C7FF;
      color: #A2C7FF;
    }

    &.type4 {
      background: #125853;
      border: 1px solid #A2FFEC;
      color: #A2FFEC;
    }
  }
}
.query-form {
  display: flex;
  justify-content: space-between;

  ::v-deep {
    .el-form-item:nth-of-type(1) {
      .el-select.query-select {
        width: 420px;
      }
    }
  }
  ::v-deep{
  .el-input__inner .el-range-input{
      background-color: #061729;
      color: #FFFFFF;
    }
  }
  .changeInput {
    input{
      width: 140px;
    }
  }
  // .changeInput .el-date-range-picker__time-header .el-date-range-picker__editors-wrap .el-date-range-picker__time-picker-wrap ::v-deep .el-input {
  //   width: 140px !important;
  // }
}
</style>

折线图处理,这里没有放封装的折线。只放了折线的处理。
Historicalline.js

	import { xAxisTime } from './xAxisTime.js'
export const shearerOptions = (data, params, dataInfos) => {
  // console.log(data, params, dataInfos, 'data, params, dataInfos');
  if (data?.length) {
    let options = {}
    options.tooltip = {
      trigger: 'axis',
      axisPointer: {
        type: 'shadow'
      },
      formatter: function (data) {
        return `
          <div style='text-align:left;overflow:hidden;'>
            <span>时间: ${data[0].data[0]}</span><br />
            <span>数值: ${data[0].data[1]}</span><br />
          </div>
        `
      }
    },
    options.xAxis=[{
      type: 'category',
      axisTick: {
        show: false
      },
      boundaryGap: false,
      axisLine: { onZero: false },
      ...xAxisTime2(params)
    }],
    options.grid={
      left: '50',
      right: '50',
      top: '10',
      bottom: '50'
    }
    options.dataZoom = [
      {
        type: 'inside'
      },
      {
        type: 'slider',
        show: false
      }
    ]
    options.yAxis=[{
      type: 'value',
      splitLine: false,
      axisLine: {
        show: true
      },
      axisLabel: {
        show: true,
        color: '#838C95',
        fontSize: 12
      }
    }]
    options.series= [
      {
        name: '',
        type: 'line',
        symbol: 'none',
        color: '#579AFF',
        data: data[0]?.map(item => {
          return [item.time, item.value, item.time]
        })
      }
    ]
    return options
  } else {
    return {
      title: {
        left: 'center',
        top: 'center',
        text: '暂无数据!',
        textStyle: {
          fontWeight: 'normal',
          color: '#999',
          fontSize: 16
        }
      }
    }
  }
}

xAxisTime.js

export const xAxisTime = (data) => {
  let min, max
  const startDate = data?.startTime || data?.startDate
  const endDate = data?.endTime || data?.endDate
  if ( typeof startDate  === 'string' && startDate.length>10){
    min = window.$dayjs(startDate).valueOf()
    max = window.$dayjs(endDate).valueOf()
  } else {
    min = window.$dayjs(`${startDate} 00:00:00`).valueOf()
    max = window.$dayjs(`${startDate} 23:59:59`).valueOf()
  }
  return {
    type: 'time',
    min: min,
    max: max,
    interval: 3600000 * 4,
    axisLabel: {
      color: '#838C95',
      show: true,
      showMinLabel: true,
      // 最后一个显示
      showMaxLabel: true,
      // formatter (value) {
      //   if (window.$dayjs(value).format('YYYY-MM-DD HH:mm:ss') === startDate) {
      //     return '      00:00'
      //   } else if (window.$dayjs(value).format('YYYY-MM-DD HH:mm:ss') === endDate) {
      //     // 最后一个刻度
      //     return '24:00      '
      //   } else {
      //     return window.$dayjs(value).format('HH:mm')
      //   }
      // }

      formatter (value) {
        // console.log(window.$dayjs(value).format('YYYY-MM-DD HH:mm:ss').replace(' ', '\n'), 'uuuu');
        return window.$dayjs(value).format('MM/DD HH:mm:ss').replace(' ', '\n')
      }
    }
  }
}

完成。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【华为 ICT HCIA eNSP 习题汇总】——题目集8

1、在VRP平台下&#xff0c;关于各个协议的外部优先级的描述&#xff0c;正确的是&#xff08;&#xff09;。 A、OSPF路由的外部优先级是15 B、IS-IS路由的外部优先级是10 C、静态路由的外部优先级是60 D、BGP路由的外部优先级是20 考点&#xff1a;路由技术原理 解析&#xf…

普通相机标定——核心函数编写

准备工作 在前面的章节中我们完成了如下操作: 打开电脑摄像头采集标定图像编写基础功能函数,实现获取文件名、删除文件等操作 现在我们已经完成了标定图像的采集,如下图所示;接下来就要完成相机的内参标定了。 我们在编程实现中会调用OpenCV中的findChessbo…

Django 为应用定制化admin独立后台

定制后界面 在应用目录下找到admin.py并进行编辑 from django.contrib.admin import AdminSite from .models import Question,Choiceclass PollsAdminSite(AdminSite):site_header"Admin-site-header"site_title"admin-site-title"index_title"admi…

SpringBoot-yml文件的配置与读取

配置 值前边必须要有空格&#xff0c;作为分隔符 使用空格作为缩进表示层级关系&#xff0c;相同的层级左侧对齐 获取 使用Value(”${键名}”) 使用ConfigurationProperties(prefix "前缀") 1.前缀要与yml配置文件中的前缀一致 2.实体类的字段名与配置文件中的键名一…

[GXYCTF2019]BabySQli1

单引号闭合&#xff0c;列数为三列&#xff0c;但是没有期待的1 2 3回显&#xff0c;而是显示wrong pass。 尝试报错注入时发现过滤了圆括号&#xff0c;网上搜索似乎也没找到能绕过使用圆括号的方法&#xff0c;那么按以往爆库爆表爆字段的方法似乎无法使用了 在响应报文找到一…

拓展全球市场:静态代理IP成为跨境电商战略的关键工具

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

【SpringBoot】springboot常用注解

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; SpringBoot ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 结语 我的其他博客 前言 Spring Boot作为一个轻量级、快速开发的框架&#xff0c;提供了丰富的注解来简化配置和加速开发。…

深度学习如何弄懂那些难懂的数学公式?是否需要学习数学?

经过1~2年的学习&#xff0c;我觉得还是需要数学有一定认识&#xff0c;重新捡起高等数学、概率与数理、线代等这几本&#xff0c;起码基本微分方程、求导、对数、最小损失等等还是会用到。 下面给出几个链接&#xff0c;可以用于平时充电学习。 知乎上的&#xff1a; 机器学…

你对 TypeScript 中枚举类型的理解?应用场景?

文章目录 一、是什么二、使用数字枚举字符串枚举异构枚举本质 三、应用场景参考文献 一、是什么 枚举是一个被命名的整型常数的集合&#xff0c;用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型 通俗来说&#xff0c;枚举就是一个对象的所有可能…

python环境安装sklearn及报错解决

安装 如刚开始安装&#xff0c;还未遇到问题请直接从重新安装库开始看&#xff0c;如果遇到报错&#xff0c;从问题开始看 问题 python安装sklearn报错 &#xff0c;报错信息如下 File "<stdin>", line 1pip install scikit-learn^ SyntaxError: invalid s…

【方法论】费曼学习方法

费曼学习方法是由诺贝尔物理学奖得主理查德费曼提出的一种学习方法。这种方法强调通过将所学的知识以自己的方式解释给别人来提高学习效果。 费曼学习方法的步骤如下&#xff1a; 选择一个概念&#xff1a;选择一个要学习的概念或主题。 理解和学习&#xff1a;用自己的方式学…

Redis数据结构与底层实现揭秘

在高并发的系统开发中&#xff0c;缓存和高效的数据存储机制对于提升应用性能至关重要。Redis&#xff0c;作为其中的佼佼者&#xff0c;以其卓越的性能和丰富的数据结构赢得了开发者的青睐。本文将深入探讨Redis的数据结构及其底层实现&#xff0c;带领读者走进这个高性能数据…

3ds Max宣传片怎么提升渲染速度?从硬件升级到云渲染,全面提升你的渲染速度!

在3ds Max中&#xff0c;渲染是一项耗时的任务&#xff0c;尤其是对于大型场景和复杂的动画。然而&#xff0c;通过一些优化策略和技巧&#xff0c;你可以显著加速渲染过程。以下是一些建议和技巧&#xff0c;帮助你提高3ds Max的渲染速度&#xff1a; 1.升级硬件&#xff1a; …

element+vue 之 v-limit 按钮操作权限

1.新建一个permission.js文件 import store from /storeexport default {inserted: function (el, binding) {const { perms: limits } store.state.userconst { value: params } bindingif (!limits.length) returnif (params && Array.isArray(params)) {if (!limi…

C++20 协程原理与应用

协程 要想了解协程&#xff0c;最好先搞清楚进程&#xff0c;线程&#xff0c;这样才能将三者区分开来&#xff01; 进程 vs 线程 vs 协程 进程线程协程切换者操作系统操作系统用户&#xff08;编程者&#xff09;切换时机根据操作系统自己的切换策略&#xff0c;用户不感知根…

惠友小课堂】拇外翻常见的几个误区,来看看你中了几个?

拇外翻作为常见的足部畸形&#xff0c;在日常生活中困扰着许多人。歪脚趾不仅外观不好看&#xff0c;还会出现疼痛、影响行走运动。但大多数人对于拇外翻的认识都不足常常落入认知误区&#xff0c;快来看看你中了几个&#xff1f; 误区一 Q 我都没穿过高跟鞋&#xff0c;怎么也…

宝塔面板SRS音视频TRC服务器启动失败

首先&#xff0c;查找原因 1.先看srs服务在哪 find / -type f -name srs 2>/dev/null运行结果&#xff1a; /var/lib/docker/overlay2/5347867cc0ffed43f1ae24eba609637bfa3cc7cf5f8c660976d2286fa6a88d2b/diff/usr/local/srs/objs/srs /var/lib/docker/overlay2/5347867…

安装vue devtools及常见问题

vue devtools 下载百度网盘下载极简插件下载github下载 安装常见问题 下载 以下三种方式选择一种即可。 百度网盘下载 下载链接&#xff1a;https://pan.baidu.com/s/1ktNIarB-zXz2ij0pda6IQw?pwdv6d3 推荐方式。网盘中包含vue2和vue3的devtools安装工具&#xff0c;根据项目…

机器学习_常见算法比较模型效果(LR、KNN、SVM、NB、DT、RF、XGB、LGB、CAT)

文章目录 KNNSVM朴素贝叶斯决策树随机森林 KNN “近朱者赤&#xff0c;近墨者黑”可以说是 KNN 的工作原理。 整个计算过程分为三步&#xff1a; 计算待分类物体与其他物体之间的距离&#xff1b;统计距离最近的 K 个邻居&#xff1b;对于 K 个最近的邻居&#xff0c;它们属于…

Java工程师的你,真的不想了解一下《JVM垃圾回收详解》吗?(重点)

Java工程师的你,真的不想了解一下《JVM垃圾回收详解》吗?(重点) 文章目录 Java工程师的你,真的不想了解一下《JVM垃圾回收详解》吗?(重点)前言堆空间的基本结构内存分配和回收原则对象优先在 Eden 区分配大对象直接进入老年代长期存活的对象将进入老年代主要进行 gc 的…