SOURCE

console 命令行工具 X clear

                    
>
console
var input = document.querySelector("#file");
var btn = document.querySelector("#btn");
var res = document.querySelector("#result");
var filterFhrs = [];
var textareaEl = document.querySelectorAll("textarea")

var urlTextareaEl = textareaEl[0]
var dataTextareaEl = textareaEl[1]

btn.addEventListener("click", () => {
    var fileUrl = urlTextareaEl.value
    if (fileUrl.length !== 0) {
        getMonitorData(fileUrl, (object) => {
            getFilterFhrsStr(object);
        });

    } else {
        if (input.files.length < 1) {
            alert("请上传文件或者输入文件链接");
        } else {
            var file = input.files[0];
            var object = getFileObject(file, (object) => {
                getFilterFhrsStr(object);
            });
        }
    }


});

function getFilterFhrsStr(object) {
    filterFhrs = object.filterFhrs;
    res.innerHTML = "当前文件 recordId : " + object.recordId;
    var filterFhrsStr = filterFhrs.join(",");
    dataTextareaEl.value = filterFhrsStr;
}

var inputEl = document.querySelector("input")
var fhr100ResultDiv = document.getElementById("fhr100Result")

var fhr100Result = [];
var isPop = false;

var formEl = document.querySelector("form")
formEl.onreset = function (event) {
    console.log("发生了重置事件")
    // event.preventDefault()
    fhr100Result = [];
    isPop = false;
}

formEl.onsubmit = function (event) {
    console.log("发生了提交事件")

    event.preventDefault()

    if (isPop) {
        fhr100Result = [];
        isPop = false;
    }

    //大数组切割
    // console.log(filterFhrs);
    var resultItems = split_array(filterFhrs, 4);
    // console.log(resultItems.length);

    //一共过滤多少数据才提示的
    var data = []
    // console.log("resultItems.length")

    console.log(resultItems.length)
    // console.log("111")

    for (let index = 0; index < resultItems.length; index++) {
        const element = resultItems[index];
        if (!isPop) {
            fhr100(element);
        } else {
            // data = items.splice(0,(index-1) * 4);
            console.log(index);
            var minute = parseInt((index) / 60);
            var second = (index) % 60;
            // console.log(minute);
            // console.log(second);
            fhr100ResultDiv.innerHTML = `<h3>存在fhr100弹框,详见控制台 时间为: ${formatPadLeft(minute)}:${formatPadLeft(second)}</h3><br/>`

            return
        }
    }
}

function fhr100(arr) {
    //获取数组最大值
    var max = Math.max(...arr)

    if (fhr100Result.length > 0) {
        if (max < 100) {//max < 100
            fhr100Result = [...fhr100Result, ...arr]
        } else {//max >= 100
            fhr100Result = []
        }
    } else {
        if (max < 100) {
            fhr100Result = [...fhr100Result, ...arr]
        }
    }
    console.log(fhr100Result)

    if (fhr100Result.length == 240) {//60 * 1 * 4
        if (!isPop) {
            isPop = true
            // fhr100ResultDiv.innerHTML = "<h3>存在fhr100弹框,详见控制台</h3><br/>"
            // fhr100ResultDiv.innerHTML = fhr100Result

        }
    }
}

//数组切割
function split_array(arr, len) {
    var a_len = arr.length;
    var result = [];
    for (var i = 0; i < a_len; i += len) {
        result.push(arr.slice(i, i + len));
    }
    return result;
}

function formatPadLeft(content, count, padStr) {
    count = count || 2
    padStr = padStr || "0"

    content = String(content)
    return content.padStart(count, padStr)
}


//获取监测数据
const BASE_URL = 'http://192.168.99.110:8080/getData';
async function getMonitorData(zip_URL, callblack) {
    try {
        let data = new FormData();
        data.append('dataUrl', zip_URL);
        const res = await axios.post(BASE_URL, data);
        callblack(res.data.data)
    } catch (e) {
        alert(e)
        console.error(e);
    }
};


//加密
function encrypted(data) {
  var key = CryptoJS.enc.Utf8.parse('shinssonshinsson');
  var iv = CryptoJS.enc.Utf8.parse('0');

  var srcs = JSON.stringify(data);

  var encrypted = CryptoJS.AES.encrypt(srcs, key, {
    iv: iv,
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.ZeroPadding
  });  //Crypto
  return encrypted.toString();
}


//解密
function decrypt(encrypt) {
  var key = CryptoJS.enc.Utf8.parse('shinssonshinsson');
  var iv = CryptoJS.enc.Utf8.parse('0');
  var decrypted = CryptoJS.AES.decrypt(encrypt, key, {
    iv: iv,
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.ZeroPadding
  });
  var str = decrypted.toString(CryptoJS.enc.Utf8);

  //特殊字符处理
  var items = str.split('"}')
  items.pop()
  var newStr = items.join('"}')
  return newStr + '"}'
}

function getFileObject(file,canblck) {
  JSZip.loadAsync(file).then((res) => {
    res.forEach((ele, obj) => {
      if (!obj.dir) {//判断是否为文件
        // 压缩包内文件名称
        let fileName = obj.name;
        //压缩包内文件大小
        let unsize = obj._data.uncompressedSize / 1024;
        let fileSize = unsize.toFixed(2) + "KB";
        //下载操作
        let base = res.file(obj.name).async('blob');
        base.then(rr => {
          if (window.FileReader) {
            let reader = new FileReader();
            reader.readAsText(rr);
            reader.onload = function () {
              var data = reader.result;

              var dec = decrypt(data.toString())
              canblck(JSON.parse(dec));
            };
            reader.onerror = function () {
              console.log('读取失败');
              console.log(reader.error);
            }

          } else {
            console.log('你的浏览器不支持读取文件');
          }

        })
      }
    })
  })
}

<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
    <title>连续1分钟fhr低于100弹框</title>
</head>

<body>
	<h3>文件链接:</h3>
	<textarea name="" id="contarea" cols="40" rows="4"></textarea>
    <br />
    <input type="file" id="file" />
    <button id="btn">数据解析</button>
    <div class="result" id="result">
    </div>
    <br />


    <form action="/abc">


      <textarea name="" id="contarea" cols="30" rows="10"></textarea>
      <br />
      <br />
      <button type="reset">重置</button>
      <button type="submit">提交</button>
      <h2>
        运行结果:
      </h2>

      <div id="fhr100Result">
      </div>

    </form>

</body>


</html>

本项目引用的自定义外部资源