2024-04-25 08:30:50 +00:00
|
|
|
|
import { OrderType, TimeRange } from "./enum";
|
2024-04-08 01:52:52 +00:00
|
|
|
|
|
2024-03-12 05:34:36 +00:00
|
|
|
|
export function formatDate(time: any, cFormat: string) {
|
|
|
|
|
const format = cFormat || "{y}-{m}-{d}";
|
|
|
|
|
const date = new Date(time);
|
2024-03-20 02:43:46 +00:00
|
|
|
|
const formatObj: any = {
|
2024-03-12 05:34:36 +00:00
|
|
|
|
//年
|
|
|
|
|
y: date.getFullYear(),
|
|
|
|
|
//月
|
|
|
|
|
m: date.getMonth() + 1,
|
|
|
|
|
//日
|
|
|
|
|
d: date.getDate(),
|
|
|
|
|
//小时
|
|
|
|
|
h: date.getHours(),
|
|
|
|
|
//分钟
|
|
|
|
|
i: date.getMinutes(),
|
|
|
|
|
//秒
|
|
|
|
|
s: date.getSeconds(),
|
|
|
|
|
//星期
|
|
|
|
|
a: date.getDay(),
|
|
|
|
|
};
|
|
|
|
|
const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
|
|
|
|
|
const value = formatObj[key];
|
|
|
|
|
// Note: getDay() returns 0 on Sunday
|
|
|
|
|
if (key === "a") {
|
|
|
|
|
//如果key是a,就是星期,格式化成一~日
|
|
|
|
|
//例如formatDate(new Date(), '{y}-{m}-{d}-{h}-{i}-{s}-{a}');
|
|
|
|
|
//会输出2021-10-29-00-00-00-五
|
|
|
|
|
//星期的value会返回0-6,['日', '一', '二', '三', '四', '五', '六'][2]代表周二
|
|
|
|
|
return ["日", "一", "二", "三", "四", "五", "六"][value];
|
|
|
|
|
}
|
|
|
|
|
//padStart用于字符串头部补全,2个字符,如果不够前面补0
|
|
|
|
|
return value.toString().padStart(2, "0");
|
|
|
|
|
});
|
|
|
|
|
return time_str;
|
|
|
|
|
}
|
2024-03-15 02:40:59 +00:00
|
|
|
|
|
|
|
|
|
export function getCurrentMonthStartAndEnd() {
|
|
|
|
|
let now = new Date();
|
|
|
|
|
let currentMonthStart = new Date(now.getFullYear(), now.getMonth(), 1);
|
|
|
|
|
let currentMonthEnd = new Date(now.getFullYear(), now.getMonth() + 1, 0);
|
|
|
|
|
|
|
|
|
|
return {
|
2024-03-20 02:43:46 +00:00
|
|
|
|
start: currentMonthStart,
|
|
|
|
|
end: currentMonthEnd,
|
2024-03-15 02:40:59 +00:00
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function getCurrentYearStartAndEnd() {
|
|
|
|
|
let now = new Date();
|
|
|
|
|
let currentYearStart = new Date(now.getFullYear(), 0, 1); // 0 代表一月
|
|
|
|
|
let currentYearEnd = (new Date(now.getFullYear() + 1, 0, 1) as any) - 1; // 下一年的一月一日减一毫秒
|
|
|
|
|
|
|
|
|
|
return {
|
2024-03-20 02:43:46 +00:00
|
|
|
|
start: currentYearStart,
|
|
|
|
|
end: currentYearEnd,
|
2024-03-15 02:40:59 +00:00
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
2024-07-15 06:15:49 +00:00
|
|
|
|
export function getCurrentWeekStartAndEnd() {
|
|
|
|
|
let startTime = getMonday("s", 0);
|
|
|
|
|
let endTime = getMonday("e", 0);
|
|
|
|
|
let time1 = new Date(getMonday("s", 0)).getTime();
|
|
|
|
|
let time2 = new Date(new Date(new Date().setHours(0, 0, 0))).getTime();
|
|
|
|
|
if (time1 > time2) {
|
|
|
|
|
startTime = getMonday("s", -1);
|
|
|
|
|
endTime = getMonday("e", -1);
|
|
|
|
|
}
|
|
|
|
|
return {
|
|
|
|
|
start: startTime,
|
|
|
|
|
end: endTime,
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getMonday(type: string, dates: number) {
|
|
|
|
|
var now = new Date();
|
|
|
|
|
var nowTime = now.getTime();
|
|
|
|
|
var day = now.getDay();
|
|
|
|
|
var longTime = 24 * 60 * 60 * 1000;
|
|
|
|
|
var n = longTime * 7 * (dates || 0);
|
|
|
|
|
let dd: any = null;
|
|
|
|
|
if (type == "s") {
|
|
|
|
|
dd = nowTime - (day - 1) * longTime + n;
|
|
|
|
|
}
|
|
|
|
|
if (type == "e") {
|
|
|
|
|
dd = nowTime + (7 - day) * longTime + n;
|
|
|
|
|
}
|
|
|
|
|
dd = new Date(dd);
|
|
|
|
|
var y = dd.getFullYear();
|
|
|
|
|
var m = dd.getMonth() + 1;
|
|
|
|
|
var d = dd.getDate();
|
|
|
|
|
m = m < 10 ? "0" + m : m;
|
|
|
|
|
d = d < 10 ? "0" + d : d;
|
|
|
|
|
return y + "-" + m + "-" + d;
|
|
|
|
|
}
|
|
|
|
|
|
2024-03-19 08:49:30 +00:00
|
|
|
|
export function deleteBaseKey(obj: any) {
|
|
|
|
|
delete obj.createTime;
|
|
|
|
|
delete obj.createUserId;
|
|
|
|
|
delete obj.createUserName;
|
|
|
|
|
delete obj.updateTime;
|
|
|
|
|
delete obj.updateUserId;
|
|
|
|
|
delete obj.updateUserName;
|
2024-03-20 02:43:46 +00:00
|
|
|
|
return obj;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function moneyFormat(num: number, decimal = 2, split = ",") {
|
|
|
|
|
/*
|
|
|
|
|
parameter:
|
|
|
|
|
num:格式化目标数字
|
|
|
|
|
decimal:保留几位小数,默认2位
|
|
|
|
|
split:千分位分隔符,默认为,
|
|
|
|
|
moneyFormat(123456789.87654321, 2, ',') // 123,456,789.88
|
|
|
|
|
*/
|
|
|
|
|
if (isFinite(num)) {
|
|
|
|
|
// num是数字
|
|
|
|
|
if (num === 0) {
|
|
|
|
|
// 为0
|
|
|
|
|
return num.toFixed(decimal);
|
|
|
|
|
} else {
|
|
|
|
|
// 非0
|
|
|
|
|
var res = "";
|
|
|
|
|
var dotIndex = String(num).indexOf(".");
|
|
|
|
|
if (dotIndex === -1) {
|
|
|
|
|
// 整数
|
|
|
|
|
if (decimal === 0) {
|
|
|
|
|
res = String(num).replace(/(\d)(?=(?:\d{3})+$)/g, `$1${split}`);
|
|
|
|
|
} else {
|
|
|
|
|
res =
|
|
|
|
|
String(num).replace(/(\d)(?=(?:\d{3})+$)/g, `$1${split}`) +
|
|
|
|
|
"." +
|
|
|
|
|
"0".repeat(decimal);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 非整数
|
|
|
|
|
// js四舍五入 Math.round():正数时4舍5入,负数时5舍6入
|
|
|
|
|
// Math.round(1.5) = 2
|
|
|
|
|
// Math.round(-1.5) = -1
|
|
|
|
|
// Math.round(-1.6) = -2
|
|
|
|
|
// 保留decimals位小数
|
|
|
|
|
const numStr = String(
|
|
|
|
|
(
|
|
|
|
|
Math.round(num * Math.pow(10, decimal)) / Math.pow(10, decimal)
|
|
|
|
|
).toFixed(decimal)
|
|
|
|
|
); // 四舍五入,然后固定保留2位小数
|
|
|
|
|
const decimals = numStr.slice(dotIndex, dotIndex + decimal + 1); // 截取小数位
|
|
|
|
|
res =
|
|
|
|
|
String(numStr.slice(0, dotIndex)).replace(
|
|
|
|
|
/(\d)(?=(?:\d{3})+$)/g,
|
|
|
|
|
`$1${split}`
|
|
|
|
|
) + decimals;
|
|
|
|
|
}
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
return "--";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 分页内容重置
|
|
|
|
|
export function pageListInit() {
|
|
|
|
|
return {
|
|
|
|
|
noMoreData: false,
|
|
|
|
|
total: 0,
|
|
|
|
|
list: [],
|
|
|
|
|
pageNum: 1,
|
|
|
|
|
pageSize: 10,
|
|
|
|
|
};
|
2024-03-19 08:49:30 +00:00
|
|
|
|
}
|
2024-03-28 02:07:15 +00:00
|
|
|
|
// 过滤掉属性值为null的
|
|
|
|
|
export function filterNullUndefined(obj: Object) {
|
2024-04-08 01:52:52 +00:00
|
|
|
|
return Object.entries(obj).reduce((acc: any, [key, value]) => {
|
|
|
|
|
if (value !== null && value !== undefined && value !== "") {
|
2024-03-28 02:07:15 +00:00
|
|
|
|
acc[key] = value;
|
|
|
|
|
}
|
|
|
|
|
return acc;
|
|
|
|
|
}, {});
|
2024-04-08 01:52:52 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function timeRange(id: number) {
|
|
|
|
|
const today = new Date();
|
|
|
|
|
const yesterday = new Date((today as any) - 24 * 60 * 60 * 1000);
|
|
|
|
|
let startTime = "";
|
|
|
|
|
let endTime = "";
|
|
|
|
|
if (id === TimeRange.Today) {
|
|
|
|
|
startTime = formatDate(today, "{y}-{m}-{d}");
|
|
|
|
|
endTime = formatDate(today, "{y}-{m}-{d}");
|
|
|
|
|
} else if (id === TimeRange.Yesterday) {
|
|
|
|
|
startTime = formatDate(yesterday, "{y}-{m}-{d}");
|
|
|
|
|
endTime = formatDate(yesterday, "{y}-{m}-{d}");
|
|
|
|
|
} else if (id === TimeRange.Month) {
|
|
|
|
|
startTime = formatDate(getCurrentMonthStartAndEnd().start, "{y}-{m}-{d}");
|
|
|
|
|
endTime = formatDate(getCurrentMonthStartAndEnd().end, "{y}-{m}-{d}");
|
|
|
|
|
} else if (id === TimeRange.Year) {
|
|
|
|
|
startTime = formatDate(getCurrentYearStartAndEnd().start, "{y}-{m}-{d}");
|
|
|
|
|
endTime = formatDate(getCurrentYearStartAndEnd().end, "{y}-{m}-{d}");
|
2024-07-15 06:15:49 +00:00
|
|
|
|
} else if (id === TimeRange.Week) {
|
|
|
|
|
startTime = formatDate(getCurrentWeekStartAndEnd().start, "{y}-{m}-{d}");
|
|
|
|
|
endTime = formatDate(getCurrentWeekStartAndEnd().end, "{y}-{m}-{d}");
|
2024-04-08 01:52:52 +00:00
|
|
|
|
}
|
|
|
|
|
return { startTime: startTime, endTime: endTime };
|
|
|
|
|
}
|
2024-04-15 02:54:05 +00:00
|
|
|
|
|
|
|
|
|
// 格式化金额
|
2024-04-23 02:47:52 +00:00
|
|
|
|
export function formatMoney(
|
|
|
|
|
number: any,
|
|
|
|
|
decimals?: any,
|
|
|
|
|
dec_point?: any,
|
|
|
|
|
thousands_sep?: any,
|
|
|
|
|
roundtag?: any
|
|
|
|
|
) {
|
|
|
|
|
/*
|
|
|
|
|
* 参数说明:
|
|
|
|
|
* number:要格式化的数字
|
|
|
|
|
* decimals:保留几位小数
|
|
|
|
|
* dec_point:小数点符号
|
|
|
|
|
* thousands_sep:千分位符号
|
|
|
|
|
* roundtag:舍入参数,默认 "ceil" 向上取,"floor"向下取,"round" 四舍五入
|
|
|
|
|
* */
|
|
|
|
|
if (!number) {
|
|
|
|
|
number = 0;
|
2024-04-15 02:54:05 +00:00
|
|
|
|
}
|
2024-04-23 02:47:52 +00:00
|
|
|
|
if (!decimals) {
|
|
|
|
|
decimals = 0; //默认保留2位小数
|
2024-04-15 02:54:05 +00:00
|
|
|
|
}
|
2024-04-23 02:47:52 +00:00
|
|
|
|
if (!dec_point) {
|
|
|
|
|
dec_point = ".";
|
2024-04-15 02:54:05 +00:00
|
|
|
|
}
|
2024-04-23 02:47:52 +00:00
|
|
|
|
if (!thousands_sep) {
|
|
|
|
|
thousands_sep = ",";
|
|
|
|
|
}
|
|
|
|
|
if (!roundtag) {
|
|
|
|
|
roundtag = "round";
|
|
|
|
|
}
|
|
|
|
|
number = (number + "").replace(/[^0-9+-Ee.]/g, "");
|
|
|
|
|
roundtag = roundtag || "ceil"; //"ceil","floor","round"
|
|
|
|
|
var n = !isFinite(+number) ? 0 : +number,
|
|
|
|
|
prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
|
|
|
|
|
sep = typeof thousands_sep === "undefined" ? "," : thousands_sep,
|
|
|
|
|
dec = typeof dec_point === "undefined" ? "." : dec_point,
|
2024-04-24 06:35:43 +00:00
|
|
|
|
s: any = "",
|
|
|
|
|
toFixedFix = function (n: any, prec: any) {
|
2024-04-23 02:47:52 +00:00
|
|
|
|
var k = Math.pow(10, prec);
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
"" +
|
|
|
|
|
parseFloat(
|
2024-04-24 06:35:43 +00:00
|
|
|
|
(Math as any)
|
|
|
|
|
[roundtag](parseFloat((n * k).toFixed(prec * 2)))
|
|
|
|
|
.toFixed(prec * 2)
|
2024-04-23 02:47:52 +00:00
|
|
|
|
) /
|
|
|
|
|
k
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
s = (prec ? toFixedFix(n, prec) : "" + Math.round(n)).split(".");
|
|
|
|
|
var re = /(-?\d+)(\d{3})/;
|
|
|
|
|
while (re.test(s[0])) {
|
|
|
|
|
s[0] = s[0].replace(re, "$1" + sep + "$2");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ((s[1] || "").length < prec) {
|
|
|
|
|
s[1] = s[1] || "";
|
|
|
|
|
s[1] += new Array(prec - s[1].length + 1).join("0");
|
2024-04-15 02:54:05 +00:00
|
|
|
|
}
|
2024-04-23 02:47:52 +00:00
|
|
|
|
return s.join(dec);
|
2024-04-15 02:54:05 +00:00
|
|
|
|
}
|
2024-04-16 01:52:13 +00:00
|
|
|
|
|
|
|
|
|
// 判断字符串中有几个.
|
2024-04-23 02:47:52 +00:00
|
|
|
|
export function countDots(str: any) {
|
2024-04-16 01:52:13 +00:00
|
|
|
|
return (str.match(/\./g) || []).length;
|
|
|
|
|
}
|
2024-07-20 03:15:39 +00:00
|
|
|
|
export function isTwoDecimalPlaces(num:any) {
|
|
|
|
|
// 转换为字符串并移除可能的符号
|
|
|
|
|
const str = num.toString().replace(/[-]+/g, '');
|
|
|
|
|
// 分割整数部分和小数部分
|
|
|
|
|
const parts = str.split('.');
|
|
|
|
|
console.log(parts)
|
|
|
|
|
// 如果小数点后有两位数字,返回true
|
|
|
|
|
return parts.length === 2 && parts[1].length > 2;
|
|
|
|
|
}
|
2024-04-24 06:35:43 +00:00
|
|
|
|
export function validateRegex(regexValue: string, value: string) {
|
|
|
|
|
const regex = new RegExp(regexValue);
|
|
|
|
|
return regex.test(value);
|
|
|
|
|
}
|
2024-04-25 08:30:50 +00:00
|
|
|
|
|
|
|
|
|
/***
|
|
|
|
|
* 收货汇总 出货汇总 单据状态获取
|
|
|
|
|
*/
|
|
|
|
|
export function getScaleStatus(type: number, value: number) {
|
|
|
|
|
if (type === OrderType.Receive) {
|
|
|
|
|
if (value === -1) {
|
|
|
|
|
return "全部";
|
|
|
|
|
} else if (value === 4) {
|
|
|
|
|
return "已支付";
|
|
|
|
|
} else if (value === 3) {
|
|
|
|
|
return "已审未付";
|
|
|
|
|
} else if (value === 2) {
|
|
|
|
|
return "未审核";
|
|
|
|
|
}
|
|
|
|
|
} else if (type === OrderType.Shipment) {
|
|
|
|
|
if (value === -1) {
|
|
|
|
|
return "全部";
|
|
|
|
|
} else if (value === 4) {
|
|
|
|
|
return "已结算";
|
|
|
|
|
} else if (value === 3) {
|
|
|
|
|
return "未结算";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-07-20 08:34:44 +00:00
|
|
|
|
|
|
|
|
|
// 判断是否是时间格式
|
|
|
|
|
export function isDateTimePicker(str: any) {
|
|
|
|
|
return str.split(' ').length === 2
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 格式化开始时间和结束时间
|
|
|
|
|
export function formatStartAndEndTime(str:string, type:string) {
|
|
|
|
|
if (type === 's') {
|
|
|
|
|
return str ? isDateTimePicker(str) ? str : (str + " 00:00:00") : ''
|
|
|
|
|
}else if (type === 'e') {
|
|
|
|
|
return str ? isDateTimePicker(str) ? str : (str + " 23:59:59") : ''
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-07-22 02:10:35 +00:00
|
|
|
|
// 两个浮点数求和
|
|
|
|
|
export function num_add(num1: number,num2: number){
|
|
|
|
|
var r1,r2,m;
|
|
|
|
|
try{
|
|
|
|
|
r1 = num1.toString().split('.')[1].length;
|
|
|
|
|
}catch(e){
|
|
|
|
|
r1 = 0;
|
|
|
|
|
}
|
|
|
|
|
try{
|
|
|
|
|
r2=num2.toString().split(".")[1].length;
|
|
|
|
|
}catch(e){
|
|
|
|
|
r2=0;
|
|
|
|
|
}
|
|
|
|
|
m=Math.pow(10,Math.max(r1,r2));
|
|
|
|
|
return Math.round(num1*m+num2*m)/m;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 两个浮点数相减
|
|
|
|
|
export function num_subtract(num1: number,num2: number){
|
|
|
|
|
var r1,r2,m,n;
|
|
|
|
|
try{
|
|
|
|
|
r1 = num1.toString().split('.')[1].length;
|
|
|
|
|
}catch(e){
|
|
|
|
|
r1 = 0;
|
|
|
|
|
}
|
|
|
|
|
try{
|
|
|
|
|
r2=num2.toString().split(".")[1].length;
|
|
|
|
|
}catch(e){
|
|
|
|
|
r2=0;
|
|
|
|
|
}
|
|
|
|
|
m=Math.pow(10,Math.max(r1,r2));
|
|
|
|
|
n=(r1>=r2)?r1:r2;
|
|
|
|
|
return Number((Math.round(num1*m-num2*m)/m).toFixed(n));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 两个浮点数相乘
|
|
|
|
|
export function num_multiply(num1: number,num2: number){
|
|
|
|
|
var m=0,s1=num1.toString(),s2=num2.toString();
|
|
|
|
|
try{m+=s1.split(".")[1].length}catch(e){};
|
|
|
|
|
try{m+=s2.split(".")[1].length}catch(e){};
|
|
|
|
|
return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 两个浮点数相除
|
|
|
|
|
export function num_divide(num1: number,num2: number){
|
|
|
|
|
var t1,t2,r1,r2;
|
|
|
|
|
try{
|
|
|
|
|
t1 = num1.toString().split('.')[1].length;
|
|
|
|
|
}catch(e){
|
|
|
|
|
t1 = 0;
|
|
|
|
|
}
|
|
|
|
|
try{
|
|
|
|
|
t2=num2.toString().split(".")[1].length;
|
|
|
|
|
}catch(e){
|
|
|
|
|
t2=0;
|
|
|
|
|
}
|
|
|
|
|
r1=Number(num1.toString().replace(".",""));
|
|
|
|
|
r2=Number(num2.toString().replace(".",""));
|
|
|
|
|
return (r1/r2)*Math.pow(10,t2-t1);
|
|
|
|
|
}
|
|
|
|
|
|