2021-10-22 20:00:32 +08:00
|
|
|
|
<!DOCTYPE html>
|
2021-10-22 20:52:52 +08:00
|
|
|
|
<html lang="zh_CN">
|
2021-10-22 20:00:32 +08:00
|
|
|
|
|
|
|
|
|
|
<head>
|
|
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
2022-07-16 00:43:41 +08:00
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
2021-10-22 20:00:32 +08:00
|
|
|
|
<title>干燥失重</title>
|
|
|
|
|
|
<link rel="stylesheet" href="./github.css">
|
2021-10-22 20:37:21 +08:00
|
|
|
|
<link rel="stylesheet" href="./theme.css">
|
2021-10-22 20:00:32 +08:00
|
|
|
|
<script src="./decimal.js"></script>
|
|
|
|
|
|
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
|
|
|
|
|
|
<script>
|
2021-10-22 20:03:17 +08:00
|
|
|
|
var debug = false;
|
2022-07-21 23:07:22 +08:00
|
|
|
|
var localStorageSupport = storageAvailable("localStorage");
|
2022-07-24 01:38:35 +08:00
|
|
|
|
var tip = `
|
|
|
|
|
|
<br>
|
|
|
|
|
|
操作过程:
|
|
|
|
|
|
<br>
|
|
|
|
|
|
空瓶 -> 干燥3小时 -> 冷却称重 -> 干燥1小时 -> 冷却称重(1) -> 加样(2) -> 干燥3小时 -> 冷却称重 -> 干燥1小时 -> 冷却称重(3)
|
|
|
|
|
|
<br>
|
|
|
|
|
|
<br>
|
|
|
|
|
|
记录保存功能使用方法:
|
|
|
|
|
|
<br>
|
|
|
|
|
|
保存:输入样品批号,点击保存,此时第一组及第二组输入框内的数据将被存储。
|
|
|
|
|
|
<br>
|
|
|
|
|
|
恢复:输入或选择样品批号,点击恢复,此时将读取对应数据并自动填入输入框。
|
|
|
|
|
|
<br>
|
|
|
|
|
|
删除:输入或选择样品批号,点击删除,此时将从已存储的数据中删除对应数据。
|
|
|
|
|
|
<br>
|
|
|
|
|
|
若保存、恢复、删除按钮均未显示,则表明您的浏览器不支持此功能。
|
|
|
|
|
|
`;
|
2021-10-22 20:00:32 +08:00
|
|
|
|
|
|
|
|
|
|
var decimal = Decimal.set(
|
|
|
|
|
|
{
|
|
|
|
|
|
rounding: Decimal.ROUND_HALF_EVEN,
|
|
|
|
|
|
precision: 12
|
|
|
|
|
|
}
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
$(document).ready(function () {
|
2021-10-22 21:38:48 +08:00
|
|
|
|
var input_m0l = document.getElementById("m0l");
|
|
|
|
|
|
var input_m1l = document.getElementById("m1l");
|
|
|
|
|
|
var input_m3l = document.getElementById("m3l");
|
|
|
|
|
|
var input_m0r = document.getElementById("m0r");
|
|
|
|
|
|
var input_m1r = document.getElementById("m1r");
|
|
|
|
|
|
var input_m3r = document.getElementById("m3r");
|
2021-10-22 20:00:32 +08:00
|
|
|
|
|
|
|
|
|
|
$(".msgbox").append(tip)
|
|
|
|
|
|
|
2022-07-21 23:07:22 +08:00
|
|
|
|
if (!localStorageSupport) {
|
|
|
|
|
|
$("#remove").hide();
|
|
|
|
|
|
$("#restore").hide();
|
|
|
|
|
|
$("#save").hide();
|
|
|
|
|
|
$("#lod-name").removeAttr("list");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (localStorageSupport) {
|
|
|
|
|
|
loadSavedContentsList();
|
|
|
|
|
|
}
|
2022-07-21 16:26:49 +08:00
|
|
|
|
|
2021-10-22 20:00:32 +08:00
|
|
|
|
$("#ok").click(function () {
|
2021-10-22 21:38:48 +08:00
|
|
|
|
var m0l = input_m0l.value;
|
|
|
|
|
|
var m1l = input_m1l.value;
|
|
|
|
|
|
var m3l = input_m3l.value;
|
2021-10-22 20:00:32 +08:00
|
|
|
|
|
2021-10-22 21:38:48 +08:00
|
|
|
|
var m0r = input_m0r.value;
|
|
|
|
|
|
var m1r = input_m1r.value;
|
|
|
|
|
|
var m3r = input_m3r.value;
|
2021-10-22 20:00:32 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var lod1 = lod(m0l, m1l, m3l)
|
|
|
|
|
|
var lod2 = lod(m0r, m1r, m3r)
|
|
|
|
|
|
var average = decimal.add(lod1, lod2).div(2).toString();
|
|
|
|
|
|
|
2022-07-08 00:55:20 +08:00
|
|
|
|
// 结果小于0时,使用红色字体
|
|
|
|
|
|
lod1 = (lod1 < 0) ? "<span style='color: red;'>" + lod1 + "</span>" : lod1;
|
|
|
|
|
|
lod2 = (lod2 < 0) ? "<span style='color: red;'>" + lod2 + "</span>" : lod2;
|
|
|
|
|
|
average = (average < 0) ? "<span style='color: red;'>" + average + "</span>" : average;
|
|
|
|
|
|
|
2021-10-22 21:38:48 +08:00
|
|
|
|
var msg = "<br>" +
|
2022-05-10 23:20:18 +08:00
|
|
|
|
"第一组干燥失重 = " + lod1 + "<br>" +
|
|
|
|
|
|
"第二组干燥失重 = " + lod2 + "<br>" +
|
|
|
|
|
|
"两组干燥失重平均值 = " + average + "<br>";
|
2021-10-22 21:38:48 +08:00
|
|
|
|
|
|
|
|
|
|
if (m0l != '' && m1l != '') {
|
2022-05-10 23:20:18 +08:00
|
|
|
|
msg += "第一组恒重后空瓶+样 = " + decimal.add(m0l, m1l).toString() + "<br>";
|
2021-10-22 21:38:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (m0r != '' && m1r != '') {
|
2022-05-10 23:20:18 +08:00
|
|
|
|
msg += "第二组恒重后空瓶+样 = " + decimal.add(m0r, m1r).toString() + "<br>";
|
2021-10-22 21:38:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
message(msg);
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
$("#clear").click(function () {
|
2022-07-21 23:07:22 +08:00
|
|
|
|
if (!window.confirm("所填写的数据(不包括批号)将被清空,确定?")) {
|
2022-05-10 23:20:18 +08:00
|
|
|
|
return;
|
|
|
|
|
|
}
|
2021-10-22 21:38:48 +08:00
|
|
|
|
input_m0l.value = "";
|
|
|
|
|
|
input_m1l.value = "";
|
|
|
|
|
|
input_m3l.value = "";
|
|
|
|
|
|
input_m0r.value = "";
|
|
|
|
|
|
input_m1r.value = "";
|
|
|
|
|
|
input_m3r.value = "";
|
|
|
|
|
|
|
|
|
|
|
|
message(tip);
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
$("#new_page").click(function () {
|
|
|
|
|
|
window.open(window.location.href, "_blank");
|
2021-10-22 20:00:32 +08:00
|
|
|
|
});
|
|
|
|
|
|
|
2022-07-21 23:07:22 +08:00
|
|
|
|
$("#save").click(() => {
|
|
|
|
|
|
let id = $("#lod-name").val();
|
|
|
|
|
|
if (id.length == 0) {
|
|
|
|
|
|
confirm("请输入或选择样品批号!");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2022-07-21 16:26:49 +08:00
|
|
|
|
|
2022-07-21 23:07:22 +08:00
|
|
|
|
// save data to localStorage
|
|
|
|
|
|
let m0l = input_m0l.value;
|
|
|
|
|
|
let m1l = input_m1l.value;
|
|
|
|
|
|
let m3l = input_m3l.value;
|
|
|
|
|
|
let m0r = input_m0r.value;
|
|
|
|
|
|
let m1r = input_m1r.value;
|
|
|
|
|
|
let m3r = input_m3r.value;
|
|
|
|
|
|
|
|
|
|
|
|
let lod = {
|
|
|
|
|
|
"m0l": m0l,
|
|
|
|
|
|
"m1l": m1l,
|
|
|
|
|
|
"m3l": m3l,
|
|
|
|
|
|
"m0r": m0r,
|
|
|
|
|
|
"m1r": m1r,
|
|
|
|
|
|
"m3r": m3r
|
|
|
|
|
|
};
|
|
|
|
|
|
localStorage.setItem(id, JSON.stringify(lod));
|
|
|
|
|
|
loadSavedContentsList();
|
2022-07-21 16:26:49 +08:00
|
|
|
|
});
|
|
|
|
|
|
|
2022-07-21 23:07:22 +08:00
|
|
|
|
$("#restore").click(() => {
|
|
|
|
|
|
let id = $("#lod-name").val();
|
|
|
|
|
|
if (id.length == 0) {
|
|
|
|
|
|
confirm("请输入或选择样品批号!");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
let lod = JSON.parse(localStorage.getItem(id));
|
|
|
|
|
|
input_m0l.value = lod.m0l;
|
|
|
|
|
|
input_m1l.value = lod.m1l;
|
|
|
|
|
|
input_m3l.value = lod.m3l;
|
|
|
|
|
|
input_m0r.value = lod.m0r;
|
|
|
|
|
|
input_m1r.value = lod.m1r;
|
|
|
|
|
|
input_m3r.value = lod.m3r;
|
2022-07-21 16:26:49 +08:00
|
|
|
|
});
|
|
|
|
|
|
|
2022-07-21 23:07:22 +08:00
|
|
|
|
$("#remove").click(() => {
|
2022-07-21 16:26:49 +08:00
|
|
|
|
let id = $("#lod-name").val();
|
|
|
|
|
|
if (id.length == 0) {
|
2022-07-21 23:07:22 +08:00
|
|
|
|
confirm("请输入或选择样品批号!");
|
2022-07-21 16:26:49 +08:00
|
|
|
|
return;
|
|
|
|
|
|
}
|
2022-07-21 23:07:22 +08:00
|
|
|
|
if (confirm("确认删除 " + id + " 的数据?")) {
|
|
|
|
|
|
localStorage.removeItem(id);
|
2022-07-21 16:26:49 +08:00
|
|
|
|
loadSavedContentsList();
|
2022-07-21 23:07:22 +08:00
|
|
|
|
$("#lod-name").val("");
|
2022-07-21 16:26:49 +08:00
|
|
|
|
}
|
2022-07-21 23:07:22 +08:00
|
|
|
|
});
|
2022-07-21 16:26:49 +08:00
|
|
|
|
|
2021-10-22 20:00:32 +08:00
|
|
|
|
if (debug) {
|
|
|
|
|
|
document.getElementById("m0l").value = 18.34625;
|
|
|
|
|
|
document.getElementById("m1l").value = 1.04213;
|
|
|
|
|
|
document.getElementById("m3l").value = 19.38511;
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
|
2022-07-21 16:26:49 +08:00
|
|
|
|
function loadSavedContentsList() {
|
|
|
|
|
|
// load data from localStorage to input.
|
|
|
|
|
|
let keys = [];
|
|
|
|
|
|
$("#keys").empty();
|
|
|
|
|
|
for (let i = 0; i < localStorage.length; i++) {
|
|
|
|
|
|
keys.push(localStorage.key(i));
|
|
|
|
|
|
}
|
|
|
|
|
|
keys.forEach(key => {
|
|
|
|
|
|
let option = document.createElement("option");
|
|
|
|
|
|
option.innerText = key;
|
|
|
|
|
|
$("#keys").append(option);
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-07-21 23:07:22 +08:00
|
|
|
|
// check storage available
|
|
|
|
|
|
function storageAvailable(type) {
|
|
|
|
|
|
let storage;
|
|
|
|
|
|
try {
|
|
|
|
|
|
storage = window[type];
|
|
|
|
|
|
const x = '__storage_test__';
|
|
|
|
|
|
storage.setItem(x, x);
|
|
|
|
|
|
storage.removeItem(x);
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (e) {
|
|
|
|
|
|
return e instanceof DOMException && (
|
|
|
|
|
|
// everything except Firefox
|
|
|
|
|
|
e.code === 22 ||
|
|
|
|
|
|
// Firefox
|
|
|
|
|
|
e.code === 1014 ||
|
|
|
|
|
|
// test name field too, because code might not be present
|
|
|
|
|
|
// everything except Firefox
|
|
|
|
|
|
e.name === 'QuotaExceededError' ||
|
|
|
|
|
|
// Firefox
|
|
|
|
|
|
e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&
|
|
|
|
|
|
// acknowledge QuotaExceededError only if there's something already stored
|
|
|
|
|
|
(storage && storage.length !== 0);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2021-10-22 20:00:32 +08:00
|
|
|
|
function message(msg) {
|
|
|
|
|
|
$(".msgbox").empty();
|
|
|
|
|
|
$(".msgbox").append(msg);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 计算干燥失重
|
|
|
|
|
|
* @param m0 恒重后空瓶重
|
|
|
|
|
|
* @param m1 样品重
|
|
|
|
|
|
* @param m3 干燥恒重后带样品重
|
|
|
|
|
|
* @return 干燥失重(%)
|
|
|
|
|
|
*/
|
|
|
|
|
|
function lod(m0, m1, m3) {
|
|
|
|
|
|
if (checkNull(m0, m1, m3)) {
|
|
|
|
|
|
return "0";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var a = new Decimal(m0);
|
|
|
|
|
|
var b = new Decimal(m1);
|
|
|
|
|
|
var c = new Decimal(m3);
|
|
|
|
|
|
|
|
|
|
|
|
// a + b - c / b
|
|
|
|
|
|
var d = decimal.add(a, b).minus(c);
|
|
|
|
|
|
var e = d.div(b).mul(100);
|
|
|
|
|
|
return e.toString();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function checkNull(m0, m1, m3) {
|
|
|
|
|
|
return m0 == '' || m1 == '' || m3 == '';
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
|
|
<body>
|
2022-05-10 23:20:18 +08:00
|
|
|
|
<h3>干燥失重</h3>
|
2022-07-21 16:26:49 +08:00
|
|
|
|
<input type="text" name="lod-name" id="lod-name" list="keys" placeholder="样品批号"><br><br>
|
2021-10-22 20:37:21 +08:00
|
|
|
|
|
2021-10-22 20:00:32 +08:00
|
|
|
|
<div class="one-team">
|
2022-05-10 23:20:18 +08:00
|
|
|
|
第一组<br>
|
2022-07-21 23:07:22 +08:00
|
|
|
|
<input type="number" name="m0l" id="m0l" class="one-input m0" placeholder="恒重后空瓶重(1)" inputmode="decimal"><br>
|
|
|
|
|
|
<input type="number" name="m1l" id="m1l" class="one-input m1" placeholder="样品重(2)" inputmode="decimal"><br>
|
|
|
|
|
|
<input type="number" name="m3l" id="m3l" class="one-input m3" placeholder="干燥恒重后带样品重(3)"
|
|
|
|
|
|
inputmode="decimal"><br>
|
2021-10-22 20:00:32 +08:00
|
|
|
|
<br>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="two-team">
|
2022-05-10 23:20:18 +08:00
|
|
|
|
第二组<br>
|
2022-07-21 23:07:22 +08:00
|
|
|
|
<input type="number" name="m0r" id="m0r" class="two-input m0" placeholder="恒重后空瓶重(1)" inputmode="decimal"><br>
|
|
|
|
|
|
<input type="number" name="m1r" id="m1r" class="two-input m1" placeholder="样品重(2)" inputmode="decimal"><br>
|
|
|
|
|
|
<input type="number" name="m3r" id="m3r" class="two-input m3" placeholder="干燥恒重后带样品重(3)"
|
|
|
|
|
|
inputmode="decimal"><br>
|
2021-10-22 20:00:32 +08:00
|
|
|
|
<br>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
2021-10-22 20:37:21 +08:00
|
|
|
|
<div class="buttons">
|
2021-10-22 21:38:48 +08:00
|
|
|
|
<button id="new_page">新开标签页</button>
|
|
|
|
|
|
<button id="clear">清除内容</button>
|
2022-07-24 01:38:35 +08:00
|
|
|
|
<button id="ok">计算</button><br>
|
|
|
|
|
|
|
2022-07-21 23:07:22 +08:00
|
|
|
|
<button id="remove">删除</button>
|
|
|
|
|
|
<button id="restore">恢复</button>
|
|
|
|
|
|
<button id="save">保存</button>
|
2021-10-22 20:37:21 +08:00
|
|
|
|
</div>
|
2021-10-22 20:00:32 +08:00
|
|
|
|
|
|
|
|
|
|
<div class="msgbox"></div>
|
2022-07-21 16:26:49 +08:00
|
|
|
|
<datalist id="keys"></datalist>
|
2021-10-22 20:00:32 +08:00
|
|
|
|
|
|
|
|
|
|
</body>
|
|
|
|
|
|
|
2022-05-10 23:20:18 +08:00
|
|
|
|
</html>
|