import SparkMD5 from "spark-md5"; import { getPublicImage } from "@/assets/js/middleGround/tool"; import { requestCtx } from "@/assets/js/config"; import moment from "moment"; var tool = { setCookie: function(Cname, value, expiredays, path) { var exdate = new Date(); exdate.setDate(exdate.getDate() + expiredays); document.cookie = Cname + "=" + escape(value) + (expiredays == null ? "" : ";expires=" + exdate.toGMTString()) + (path ? ";path=" + path : ""); }, getCookie: function(Cname) { if (document.cookie.length > 0) { var cStart = document.cookie.indexOf(Cname + "="); if (cStart != -1) { cStart = cStart + Cname.length + 1; var cEnd = document.cookie.indexOf(";", cStart); if (cEnd == -1) cEnd = document.cookie.length; return unescape(document.cookie.substring(cStart, cEnd)); } } 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.exceedingTheSpecifiedTime = moment(item.createDate).isBefore( currentTimestamp ); if (item.saleMethodLinks.length > 0) { let itemName = null; let itemIcon = null; // let cmsItemList = item.saleMethodLinks[0].orderSaleMethod.cmsItemList[0]; // if (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 (typeof value[k] == "object") { if (obj.refCode == "region") { obj.strValue = value[k]?.join("/"); } else { 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 (item.typeField.type == "File") { obj.newDataAndFileLinkListRequest = nrr; } } } if (obj.strValue) { arr.push(obj); } }); return arr; } export function resultsBytool(res, value) { let obj = {}; res.forEach(item => { item.sequenceNum = item.config ? JSON.parse(item.config).uuid : ""; value.forEach(e => { if (item.sequenceNum == e.sequenceNum) { try { if ( e.fileLinkList.length > 0 && obj[item.typeField.refCode] != "region" ) { for (let i = 0; i < e.fileLinkList.length; i++) { const ele = e.fileLinkList[i]; ele.url = getPublicImage(ele.file.md5); ele.name = ele.file.fileName; ele.md5 = ele.file.md5; ele.isImage = true; } obj[item.typeField.refCode] = e.fileLinkList; } else { const val = JSON.parse(e.value); if (val) { obj[item.typeField.refCode] = val; } else { obj[item.typeField.refCode] = "-"; } } } catch (error) { obj[item.typeField.refCode] = e.value ? e.value : "-"; } } }); }); return obj; } 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 }; } /** * 获取一个UUID * @param len * @param radix * @returns {string} */ export function uuid(len = 32, radix = 16) { const chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split( "" ); let uuid = []; let i = null; 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 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 getPublicFile(md5) { let src = null; if (md5) { src = requestCtx + `/file/api/ApiDownload?md5=${md5}`; } else { return ""; } return src; } export default { ...tool, uuid, getFileMd5, worksDataBytool, resultsBytool, UpdateworksDataBytool, getPublicImage, worksData, getPublicFile };