bset-supervise

cacl timer

目前為 2024-07-25 提交的版本,檢視 最新版本

// ==UserScript==
// @name         bset-supervise
// @namespace    dagu
// @version      2024-07-25-3
// @description  cacl timer
// @author       dagu
// @match        http://jiangxi.ggjtfw.com/web/bussRecPeriodList/toPeriod*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=ggjtfw.com
// @grant        GM_addStyle
// @grant        GM_setValue
// @grant        GM_getValue
// @license      MIT
// ==/UserScript==

(async function() {
  'use strict';


  var code = async function cacl(){
    var stagemap = {
      '第一部分': 1,
      '第二部分': 2,
      '第三部分': 3,
      '第四部分': 4,
    }

    var typeTimer = {
      '模拟器Ⅱ型教学' : 0,
      '实操': 0,
      '远程教学' : 0
    }
    var typeMileage = {
      '模拟器Ⅱ型教学' : 0,
      '实操': 0
    }

    var stage = 0;

    function caclTimer(stage) {
      switch(stage){
        case 1:
        case 4:
          return '总学时:' + typeTimer['远程教学'];
        case 2:
          return '总学时:' + typeTimer['实操'];
        case 3:
          var simTime = typeTimer['模拟器Ⅱ型教学']
          var trueSimTime = simTime > 90 ? 90 : simTime
          return '总学时:' + (trueSimTime + typeTimer['实操']) + '。其中模拟器:' + simTime + ', 有效:' + trueSimTime
      }
    }

    function caclMileage(stage) {
      switch(stage){
        case 1:
        case 4:
          return '总里程:0';
        case 2:
          return '总里程:0';
        case 3:
          var simTime = typeTimer['模拟器Ⅱ型教学']
          var trueSimTime = simTime > 90 ? 90 : simTime

          // 模拟器里程比例
          var p = 20 / 90
          // 计算真实里程
          var trueMaleage = trueSimTime > 23 ? trueSimTime * p : 0;
          trueMaleage = trueMaleage.toFixed(2)
          var allMileage = parseFloat(trueMaleage) + parseFloat(typeMileage['实操'].toFixed(2))
          return '总里程:' + allMileage + '。其中模拟器:' + typeMileage['模拟器Ⅱ型教学'].toFixed(2) + ', 有效:' + trueMaleage
      }
      var simTime = typeMileage['模拟器Ⅱ型教学']
      var trueSimTime = simTime > 20 ? 20 : simTime
      return trueSimTime + typeMileage['实操']
    }

    var list = await document.querySelectorAll('.dataTables_scrollBody > table > tbody > tr')

    list.forEach(e => {
      stage = stagemap[e.children[6].innerText]
      typeTimer[e.children[15].innerText] += parseInt(e.children[12].outerText.replaceAll('分钟', '').replaceAll('未终审', '0'))
      typeMileage[e.children[15].innerText] += parseFloat(e.children[13].outerText)
    })

    var msg = caclTimer(stage) + "<br>" + caclMileage(stage)

    layer.alert(msg)
    console.log(typeTimer, typeMileage)
  }

  var script = document.createElement('script');
  script.textContent = code.toString();
  // 将script元素添加到DOM中
  document.body.appendChild(script);
  queryPageCount(50)
  function addCaclButton(){
    var div = document.getElementsByClassName("tablebtn")[0]
    console.log(div)
    div.innerHTML += '<a id="cacl" style="" class="layui-btn" onclick="cacl()">计算学时</a>';
  }

  addCaclButton()


  async function modifyRows(){
    var list = await document.querySelectorAll('.dataTables_scrollBody > table > tbody > tr')
    list.forEach(e => {
      // 高亮显示照片问题学时
      var errorTypeList = e.children[14].innerText.split(",")
      if (errorTypeList.includes('8') || errorTypeList.includes('14')) {
          e.style.backgroundColor = 'lightgray';
      }
    })
  }

  // 高亮显示照片问题行
  const targetDiv = document.querySelector('#list'); // 假设要监听的div有id为myDiv
  const observer = new MutationObserver(function(mutationsList) {
    for (let mutation of mutationsList) {
      if (mutation.type === 'childList') {
        modifyRows()
      }
    }
  });
  observer.observe(targetDiv, { childList: true });
})();