import SparkMD5 from "spark-md5"; var tool = { secondToTime(second) { var minute = Math.floor(second / 60); var sec = second % 60; var time; if (second < 60) { time = second + '"'; } else { time = sec === 0 ? minute + "'" : minute + "'" + sec + '"'; } return time; }, 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; }, formateTime(date) { var newDate = new Date(+new Date(date) + 8 * 3600 * 1000) .toISOString() .replace(/T/g, " ") .replace(/\.[\d]{3}Z/, ""); var time = new Date(newDate); return time.getTime(); } }; //处理表单提交数据 export function worksData(res) { let arr = []; for (let i = 0; i < res.length; i++) { const item = res[i]; if (item.typeField) { if (item.typeField.config) { item.typeField.options = JSON.parse(item.typeField.config).option; } arr.push(item.typeField); } } return arr; } export function worksDataBytool(res, value, linkList) { let arr = []; let nrr = []; if (linkList && linkList.length > 0) { linkList.forEach((e) => nrr.push({ linkProtectType: e.linkProtectType, linkType: e.linkType, md5: e.md5 }) ); } 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 (item.typeField.type == "File") { try { obj.strValue = JSON.stringify(value[k].map((citem) => citem.md5)); } catch (error) { obj.strValue = ""; } obj.newDataAndFileLinkListRequest = nrr; } else { if (typeof value[k] == "object") { obj.strValue = JSON.stringify(value[k]); } else { if (obj.baseType === "String") { obj.strValue = value[k] + ""; } else if (obj.baseType === "Text") { obj.textValue = value[k] + ""; } else { obj.strValue = value[k] + ""; } } } } } // if (obj.strValue || obj.textValue) { arr.push(obj); // } }); return arr; } export function UpdateworksDataBytool(initData, res, value, linkList) { let arr = []; let newArr = []; 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; } } } initData.forEach((citem) => { const updateOldData = res.find((f) => f.sequenceNum == citem.sequenceNum); if (updateOldData) { const obj = { baseType: citem.typeField.baseType, order: 0, id: updateOldData.id, typeFieldId: citem.typeField.id, sequenceNum: citem.sequenceNum, setDataAndFileLinkListRequest: [] }; for (let k in value) { if (citem.typeField.refCode === k) { if (typeof value[k] == "object" && k != "region") { obj.strValue = JSON.stringify(linkList); obj.setDataAndFileLinkListRequest = linkList; } else if (typeof value[k] == "object" && k == "region") { obj.strValue = value[k]?.join("/"); obj.setDataAndFileLinkListRequest = [{ area: value[k] }]; } else { obj.strValue = value[k].toString(); } } } if (obj.strValue) { arr.push(obj); } } else { const newObj = { baseType: citem.typeField.baseType, order: 0, typeFieldId: citem.typeField.id, sequenceNum: citem.sequenceNum, setDataAndFileLinkListRequest: [] }; for (let k in value) { if (citem.typeField.refCode === k) { if (typeof value[k] == "object") { newObj.strValue = JSON.stringify(linkList); newObj.setDataAndFileLinkListRequest = linkList; } else { newObj.strValue = value[k].toString(); } } } if (newObj.strValue) { newArr.push(newObj); } } }); return { updateData: arr, newData: newArr }; } export function download(url) { const iframe = document.createElement("iframe"); iframe.setAttribute("hidden", "hidden"); document.body.appendChild(iframe); iframe.onload = () => { if (iframe) { iframe.setAttribute("src", "about:blank"); } }; iframe.setAttribute("src", url); } /** * 获取一个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 getParentNodeByClassName(element, className) { if (element && element.classList.contains(className)) { return element; } else { return getParentNodeByClassName(element.parentNode, className); } } export default { ...tool, uuid, getFileMd5, worksDataBytool, UpdateworksDataBytool, worksData, getParentNodeByClassName // parseHtml, };