当前位置: 首页 > article >正文

vue3 ts 实现一个下载数据功能(基本功能组件)

<script lang="ts" setup>

import { ElMessage } from 'element-plus'

import { useLinenetStore } from '../pages/index/uses/linenet'

const linenetStore = useLinenetStore()

// 创建一个变量用来存储数据

interface IvehicleData {

  data: any

  timestamp: number

}

const vehicleDatas: Ref<IvehicleData[]> = ref([])

let sgin = false

// 添加数据,自动附带时间戳

function addData(newData: any) {

  const newItem: IvehicleData = {

    data: newData,

    timestamp: Date.now(),

  }

  vehicleDatas.value.push(newItem)

}

// 清理过期数据

function cleanExpiredData() {

  vehicleDatas.value = []

}

// 导出数据到本地

function exportData() {

  const dataToExport = JSON.stringify(vehicleDatas.value.map((item: any) => item.data), null, 2)

  const blob = new Blob([dataToExport], { type: 'text/json' })

  const url = URL.createObjectURL(blob)

  const a = document.createElement('a')

  a.href = url

  a.download = 'vehicleData10min.json'

  document.body.appendChild(a)

  a.click()

  document.body.removeChild(a)

  URL.revokeObjectURL(url)

}

function startClick() {

  if (sgin)

    return

  ElMessage({

    message: '导出开始!',

    type: 'success',

  })

  sgin = true

  setTimeout(() => {

    sgin = false

    exportData()

    cleanExpiredData()

    ElMessage({

      message: '导出完成!',

      type: 'success',

    })

  }, 60000) // 10min = 600000s 1min=60000s

}

watch(() => linenetStore.unityVehicles, (newVal) => {

  if (!sgin)

    return

  // 添加数据

  addData(newVal)

})

</script>

<template>

  <div

    class="text-center"

  >

    <button style="padding: 4px; cursor: pointer; font-size: 14px;" @click="startClick">

      导出数据

    </button>

  </div>

</template>


http://www.kler.cn/a/384849.html

相关文章:

  • 华为交换机Vlan划分
  • JAVA笔记 | ResponseBodyEmitter等异步流式接口快速学习
  • Swift 开发教程系列 - 第10章:泛型
  • 推荐一款基于Flash的交互式园林设计工具:Garden Planner
  • Android CCodec Codec2 (二十)C2Buffer与Codec2Buffer
  • 【Linux】Pinctrl子系统和GPIO子系统
  • python下载pdf
  • 【大数据学习 | kafka高级部分】kafka的kraft集群
  • nginx平滑重启和php-fpm平滑重启
  • qt QListWidgetItem详解
  • 计算机网络:网络层 —— 软件定义网络 SDN
  • HarmonyOS Next(鸿蒙星河版)侧载应用
  • VB中如何处理性能优化问题,如减少内存泄漏、提高执行效率等
  • 【Python】图片处理
  • 一招解决Mac没有剪切板历史记录的问题
  • Go八股(Ⅳ)***slice,string,defer***
  • scala Map训练
  • MongoDB面试专题33道解析
  • fastadmin后台列表根据所选中的行统计指定字段|fastadmin点击checkbox或反选统计某个字段的值
  • 关于git命令
  • 潮玩宇宙方块兽系统开发:可定制UI与多种游戏内嵌助力个性化体验
  • 【JAVA毕业设计】基于Vue和SpringBoot的图书馆管理系统
  • GS-SLAM论文阅读--High-Fidelity SLAM Using Gaussian Splatting
  • 设计模式之——观察者模式
  • Vue3+element-plus摘要
  • 从零学习大模型(十四)-----量化(一)