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
|
};
|