UNPKG

tree-structure-merging

Version:

```javascript npm i tree-structure-merging ```

151 lines (150 loc) 6.27 kB
let treeDate = { // 比较排序 compare: function (p) { return function (m, n) { let a = m[p]; let b = n[p]; if (a < b) { return -1; } else if (a > b) { return 1; } else { return 0; }; }; }, // 让相同数据合并并且进行排序 SameTreeData: function (data, element, sortElement = null) { let dataInfo = {}; data.forEach(item => { if (!dataInfo[item[element]]) { dataInfo[item[element]] = { [`${element}`]: item[element], children: [] } } dataInfo[item[element]].children.push(item); }); let list = Object.values(dataInfo); if (sortElement != undefined || sortElement != null || sortElement != "") { list.sort(this.compare(sortElement)); }; return (list); } }; let time = { // 获取两个日期之间还有几天 diffDays: function (date, otherDate) { return Math.ceil(Math.abs(date - otherDate) / (1000 * 60 * 60 * 24)); }, // 将日期转换成YYYY-MM-DD格式 formatYmd: function (date) { return date.toISOString().slice(0, 10); }, dateChange: function (data, str, format) { if (str === null || str === undefined || str.trim() === "") { throw Error("Give me an empty character. What do you want me to convert?"); } if (data === null || data === undefined) { throw Error(`Converted data cannot be ${Object.prototype.toString.call(data).slice(8,-1)}!`) } else if (data === "") { throw Error("Data cannot be empty!"); } else { if (Object.prototype.toString.call(data) === "[object Array]") { data.map(item => { if (item[str] === undefined) { throw Error(`Cannot find key name ${str}`); } item[str] = this.timeChange(item[str], format); if (item.chiidren) { this.dateChange(item.chiidren, str, format) } }); } else if (Object.prototype.toString.call(data) === "[object Object]") { if (data[str] === undefined) { throw Error(`Cannot find key name ${str}`); } data[str] = this.timeChange(data[str], format); } else if (Object.prototype.toString.call(data) === "[object Date]" || Object.prototype.toString.call(data) === "[object String]") { format = arguments[1]; data = this.timeChange(data, format); } return data; }; }, timeChange: function (str, format) { if (format === null || format === undefined || format.trim() === "") { throw Error("If format is empty, what do you use to do?"); }; return `${/yyyy/.test(format)?str.getFullYear():''}${/yyyy/.test(format) && /mm/.test(format)?"-":""}${/mm/.test(format)?str.getMonth()+1>=10?str.getMonth()+1:'0'+(str.getMonth()+1):""}${/mm/.test(format) && /dd/.test(format)?"-":""}${/dd/.test(format)?str.getDate()>=10?str.getDate():'0'+str.getDate():""}${/hh/.test(format) || /ff/.test(format) || /ss/.test(format)?" ":""}${/hh/.test(format)?str.getHours()>=10?str.getHours():"0"+str.getHours():""}${/hh/.test(format) && /ff/.test(format)?":":""}${/ff/.test(format)?str.getMinutes()>=10?str.getMinutes():'0'+str.getMinutes():""}${/ff/.test(format) && /ss/.test(format)?":":""}${/ss/.test(format)?str.getSeconds()>=10?str.getSeconds():"0"+str.getSeconds():""}`; } }; let Money = { // 数字金额转中文 toChineseNum: function (num) { let Bit = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", ]; let AfterBit = ["", "十", "百", "千", "万"]; num = parseInt(num); let getMoney = (temp) => { let strArr = temp.toString().split("").reverse(); let newNum = ""; for (var i = 0; i < strArr.length; i++) { newNum = (i == 0 && strArr[i] == 0 ? "" : i > 0 && strArr[i] == 0 && strArr[i - 1] == 0 ? "" : Bit[strArr[i]] + (strArr[i] == 0 ? AfterBit[0] : AfterBit[i])) + newNum; }; return newNum; }; let tenThousand = Math.floor(num / 10000); let noThousand = num % 10000; if (noThousand.toString().length < 4) { noThousand = "0" + noThousand; } return tenThousand ? getMoney(tenThousand) + "万" + getMoney(noThousand) : getMoney(num); }, // 单选计算总价与总数量 totalPrice: function (data, price, num, clicked = null) { let totalPrice = null; let totalNum = null; if (clicked === null || clicked === undefined || clicked.trim() === "") { data.map(item => { clicked = "clicked"; item[clicked] = false; }); } data.map(item => { item.count = item[price] * item[num]; if (item[clicked]) { totalPrice += item.count; totalNum += item[num]; }; }); data.totalPrice = totalPrice; data.totalNum = totalNum; return data; }, // 全选计算总价与数量 selectAll: function (data, price, num, clicked = null) { let totalPrice = null; let totalNum = null; let allClick = data.every(item => { return item[clicked] }); if (allClick) { data.map(item => { item.count = item[price] * item[num]; totalPrice += item.count; totalNum += item[num]; }); } else { totalPrice = 0; totalNum = 0; }; data.totalPrice = totalPrice; data.totalNum = totalNum; return data; } }; module.exports = { treeDate, time, Money }