import SparkMD5 from "spark-md5";
import { getPublicImage } from "@/assets/js/middleGround/tool.js";
// import moment from "moment";
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 setOrderList(res) {
// // 获取当前年份的开始时间
// let currentTimestamp = moment().startOf("year");
// let arr = [];
// for (let i = 0; i < res.length; i++) {
// const item = res[i];
// // 发票状态为审核中或者审核失败,将item选中状态设置选中。
// // UI控制禁用(显示的效果为 选中并且禁用)
// if (item.invoiceInfo) {
// item.checked = true;
// } else {
// item.checked = false;
// }
// // 判断是否超出申请发票的日期
// item.exceedingTheSpecifiedTime = moment(item.createDate).isBefore(
// currentTimestamp
// );
// if (item.saleMethodLinks.length > 0) {
// let itemName = null;
// let itemIcon = null;
// let cmsItemList = null;
// try {
// cmsItemList = item.saleMethodLinks[0].orderSaleMethod.cmsItemList[0];
// } catch (error) {
// cmsItemList = null;
// }
// if (cmsItemList && cmsItemList.icon) {
// itemName = cmsItemList.name;
// itemIcon = cmsItemList.icon;
// } else {
// itemName = item.saleMethodLinks[0].orderSaleMethod.product.name;
// itemIcon = item.saleMethodLinks[0].orderSaleMethod.product.icon;
// }
// item.saleMethodLinks[0].title = itemName;
// item.saleMethodLinks[0].icon = getPublicImage(itemIcon);
// } else {
// const itemIcon = require("@/assets/images/bookCity/place_img.png");
// const saleMethodLink = [];
// const obj = {
// icon: itemIcon,
// orderSaleMethod: {
// price: item.payPrice,
// },
// };
// saleMethodLink.push(obj);
// item.saleMethodLinks = saleMethodLink;
// }
// if (item.state == "Success") {
// item.CustomState = "支付成功";
// }
// if (item.state == "Cancel") {
// item.CustomState = "取消支付";
// }
// if (item.state == "WaitPay") {
// item.CustomState = "等待支付";
// }
// if (item.state == "WaitDeliver") {
// item.CustomState = "正在支付";
// }
// arr.push(item);
// }
// return arr;
// }
//处理表单提交数据
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 function realFormatSecond(time) {
// let duration = parseInt(time);
// let minute = parseInt(duration / 60);
// let sec = (duration % 60) + "";
// let isM0 = ":";
// if (minute == 0) {
// minute = "00";
// } else if (minute < 10) {
// minute = "0" + minute;
// }
// if (sec.length == 1) {
// sec = "0" + sec;
// }
// return minute + isM0 + sec;
// }
// export function parseHtml(content) {
// const tagReg =
// /<\/?div[^>]*>|<\/?span[^>]*>|<\/?table[^>]*>|<\/?th[^>]*>|<\/?thead>|<\/?tbody>|<\/?tr>|<\/?td[^>]*>|
]*>|<\/?p[^>]*>|<\/?sub>|<\/?sup>|<\/?font[^>]*>|
]*>|<\/?a[^>]*>|\n|\\n/gi;
// const escapeReg =
// /&(lt|gt|le|ge|nbsp|amp|quot|times|Alpha|Beta|Gamma|Delta|Epsilon|Zeta|Eta|Theta|Iota|Kappa|Lambda|MU|NU|Xi|Omicron|Pi|Rho|Sigma|Tau|Upsilon|Phi|Chi|Psi|Omega|alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigmaf|sigma|tau|upsilon|phi|chi|psi|omega|thetasym|upsih|piv|circ|tilde|ndash|permil|lsquo|rsquo|ldquo|rdquo|prime);/gi;
// const escapeElements = {
// lt: "<",
// gt: ">",
// le: "≤",
// ge: "≥",
// nbsp: " ",
// amp: "&",
// quot: '""',
// times: "×",
// Alpha: "Α",
// Beta: "Β",
// Gamma: "Γ",
// Delta: "Δ",
// Epsilon: "Ε",
// Zeta: "Ζ",
// Eta: "Η",
// Theta: "Θ",
// Iota: "Ι",
// Kappa: "Κ",
// Lambda: "Λ",
// Mu: "Μ",
// Nu: "Ν",
// Xi: "Ξ",
// Omicron: "Ο",
// Pi: "Π",
// Rho: "Ρ",
// Sigma: "Σ",
// Tau: "Τ",
// Upsilon: "Υ",
// Phi: "Φ",
// Chi: "Χ",
// Psi: "Ψ",
// Omega: "Ω",
// alpha: "α",
// beta: "β",
// gamma: "γ",
// delta: "δ",
// epsilon: "ε",
// zeta: "ζ",
// eta: "η",
// theta: "θ",
// iota: "ι",
// kappa: "κ",
// lambda: "λ",
// mu: "μ",
// nu: "ν",
// xi: "ξ",
// omicron: "ο",
// pi: "π",
// rho: "ρ",
// sigmaf: "ς",
// sigma: "σ",
// tau: "τ",
// upsilon: "υ",
// phi: "φ",
// chi: "χ",
// psi: "ψ",
// omega: "ω",
// thetasym: "ϑ",
// upsih: "ϒ",
// piv: "ϖ",
// circ: "ˆ",
// tilde: "˜",
// ndash: "–",
// permil: "‰",
// lsquo: "‘",
// rsquo: "’",
// ldquo: "“",
// rdquo: "”",
// prime: "′",
// };
// const contentWithoutTag = content.replace(tagReg, "");
// const contentWithOnlyOneSpace = contentWithoutTag.replace(/ {2,}/g, " ");
// return contentWithOnlyOneSpace.replace(
// escapeReg,
// (all, t) => escapeElements[t]
// );
// }
export default {
...tool,
uuid,
getFileMd5,
worksDataBytool,
UpdateworksDataBytool,
getPublicImage,
worksData,
getParentNodeByClassName
// parseHtml,
};