import SparkMD5 from "spark-md5"; var tool = { setCookie: function (c_name, value, expiredays, path) { var exdate = new Date(); exdate.setDate(exdate.getDate() + expiredays); document.cookie = c_name + "=" + escape(value) + (expiredays == null ? "" : ";expires=" + exdate.toGMTString()) + (path ? ";path=" + path : ""); }, getCookie: function (c_name) { if (document.cookie.length > 0) { var c_start = document.cookie.indexOf(c_name + "="); if (c_start != -1) { c_start = c_start + c_name.length + 1; var c_end = document.cookie.indexOf(";", c_start); if (c_end == -1) c_end = document.cookie.length; return unescape(document.cookie.substring(c_start, c_end)); } } return ""; }, delCookie: function (name) { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval = tool.getCookie(name); if (cval != null) document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString(); }, // 强制保留2位小数,如:2,会在2后面补上00.即2.00 toDecimal2(x) { var f; f = parseFloat(x); if (isNaN(f)) { return false; } f = Math.round(x * 100) / 100; var s = f.toString(); var rs = s.indexOf("."); if (rs < 0) { rs = s.length; s += "."; } while (s.length <= rs + 2) { s += "0"; } return s; }, }; /** * 获取一个UUID * @param len * @param radix * @returns {string} */ export function uuid(len = 32, radix = 16) { const chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""); let uuid = [], i; radix = radix || chars.length; if (len) { // Compact form for (i = 0; i < len; i++) uuid[i] = chars[0 | (Math.random() * radix)]; } else { // rfc4122, version 4 form let r; // rfc4122 requires these characters uuid[8] = uuid[13] = uuid[18] = uuid[23] = "-"; uuid[14] = "4"; // Fill in random data. At i==19 set the high bits of clock sequence as // per rfc4122, sec. 4.1.5 for (i = 0; i < 36; i++) { if (!uuid[i]) { r = 0 | (Math.random() * 16); uuid[i] = chars[i === 19 ? (r & 0x3) | 0x8 : r]; } } } return uuid.join(""); } export function getFileMd5(file, chunkSize) { return new Promise((resolve, reject) => { let blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice; let chunks = Math.ceil(file.size / chunkSize); let currentChunk = 0; let spark = new SparkMD5.ArrayBuffer(); let fileReader = new FileReader(); fileReader.onload = function (e) { spark.append(e.target.result); currentChunk++; if (currentChunk < chunks) { loadNext(); } else { const md5 = spark.end(); resolve(md5); } }; fileReader.onerror = function (e) { reject(e); }; function loadNext() { let start = currentChunk * chunkSize; let end = start + chunkSize; if (end > file.size) { end = file.size; } fileReader.readAsArrayBuffer(blobSlice.call(file, start, end)); } loadNext(); }); } export function worksDataBytool(res, value, linkList) { let arr = []; res.forEach((item) => { const obj = { baseType: item.typeField.baseType, order: 0, typeFieldId: item.typeField.id, sequenceNum: item.config ? JSON.parse(item.config).uuid : "", newDataAndFileLinkListRequest: [], }; for (let k in value) { if (item.typeField.refCode === k) { if (typeof value[k] == "object") { obj.strValue = JSON.stringify(value[k]); obj.newDataAndFileLinkListRequest = linkList; } else { obj.strValue = value[k]; } } } if (obj.strValue) { arr.push(obj); } }); return arr; } export function resultsBytool(res, value) { let obj = {}; res.forEach((item, i) => { item.sequenceNum = item.config ? JSON.parse(item.config).uuid : ""; value.forEach((e) => { if (item.sequenceNum == e.sequenceNum) { try { const val = JSON.parse(e.value); obj[item.typeField.refCode] = val; } catch (error) { obj[item.typeField.refCode] = e.value; } } }); }); return obj; } export function UpdateworksDataBytool(initData, res, value, linkList) { let arr = []; for (let i = 0; i < initData.length; i++) { const ele = initData[i]; for (let j = 0; j < res.length; j++) { const item = res[j]; if (item.sequenceNum == ele.sequenceNum) { item.refCode = ele.typeField.refCode; } } } res.forEach((item) => { const obj = { baseType: item.baseType, order: 0, id: item.id, typeFieldId: item.fieldId, sequenceNum: item.sequenceNum, setDataAndFileLinkListRequest: [], }; for (let k in value) { if (item.refCode === k) { if (typeof value[k] == "object") { obj.strValue = JSON.stringify(value[k]); obj.setDataAndFileLinkListRequest = linkList; } else { obj.strValue = value[k].toString(); } } } if (obj.strValue) { arr.push(obj); } }); return arr; } export default { ...tool, uuid, getFileMd5, worksDataBytool, UpdateworksDataBytool, resultsBytool, };