Commit c0249c52518abc807810ce048c1a6837a670d091

Authored by 王强
1 parent acaa546b

优化 工具函数-startEndTimeFormat,添加配置参数 toDay;

Showing 1 changed file with 38 additions and 22 deletions
src/utils/utils.ts
... ... @@ -2,11 +2,11 @@
2 2 * @Author: wangqiang@feewee.cn
3 3 * @Date: 2022-05-11 15:58:56
4 4 * @LastEditors: wangqiang@feewee.cn
5   - * @LastEditTime: 2023-03-22 09:49:32
  5 + * @LastEditTime: 2023-05-06 14:51:12
6 6 */
7 7  
8 8 import { checkNull } from "@/utils/validate";
9   -import moment from 'moment';
  9 +import moment from "moment";
10 10  
11 11 /* eslint no-useless-escape:0 import/prefer-default-export:0 */
12 12 const reg =
... ... @@ -84,7 +84,7 @@ export function priceToThousands(
84 84 */
85 85 export const formatNumber = (num: number, digits: number = 2): number => {
86 86 let number = priceToThousands(num, digits);
87   - if (isNumber(number = number.replace(/,/g, ""))) {
  87 + if (isNumber((number = number.replace(/,/g, "")))) {
88 88 return +number;
89 89 } else {
90 90 return 0;
... ... @@ -100,6 +100,7 @@ export function formatNumberShow(num: number | undefined | null): number | "-" {
100 100 }
101 101  
102 102 interface StartEndTimeFormatConfig {
  103 + toDay?: boolean; // 是否仅精确到天
103 104 toSecond?: boolean; // 是否精确到秒
104 105 interval?: string; // 间隔文字
105 106 }
... ... @@ -113,25 +114,40 @@ interface StartEndTimeFormatConfig {
113 114 * @param {StartEndTimeFormatConfig} config
114 115 * @return {string}
115 116 */
116   -export const startEndTimeFormat = (
117   - item: any,
118   - dateStartKey: string,
119   - dateEndKey: string,
120   - config: StartEndTimeFormatConfig = {},
121   -): string => {
122   - const { toSecond = false, interval = '至' } = config;
123   - let result: string = '';
  117 +export function startEndTimeFormat<T>(
  118 + item: T,
  119 + dateStartKey: keyof T,
  120 + dateEndKey: keyof T,
  121 + config: StartEndTimeFormatConfig = {}
  122 +): string {
  123 + const { toDay = false, toSecond = false, interval = "至" } = config;
  124 + let result: string = "";
124 125 if (!item[dateStartKey]) return result;
125   - result += item[dateStartKey] ? moment(item[dateStartKey]).format(`YYYY-MM-DD HH:mm${toSecond ? ':ss' : ''}`) : '';
  126 + result += item[dateStartKey]
  127 + ? moment(item[dateStartKey]).format(
  128 + toDay ? "YYYY-MM-DD" : `YYYY-MM-DD HH:mm${toSecond ? ":ss" : ""}`
  129 + )
  130 + : "";
126 131 if (!item[dateEndKey]) return result;
127 132 result += item[dateEndKey]
128   - ? moment(item[dateStartKey]).get('year') === moment(item[dateEndKey]).get('year')
129   - ? moment(item[dateStartKey]).get('month') === moment(item[dateEndKey]).get('month')
130   - ? moment(item[dateStartKey]).get('D') === moment(item[dateEndKey]).get('D')
131   - ? `${interval}${moment(item[dateEndKey]).format(`HH:mm${toSecond ? ':ss' : ''}`)}`
132   - : `${interval}${moment(item[dateEndKey]).format(`MM-DD HH:mm${toSecond ? ':ss' : ''}`)}`
133   - : `${interval}${moment(item[dateEndKey]).format(`MM-DD HH:mm${toSecond ? ':ss' : ''}`)}`
134   - : `${interval}${moment(item[dateEndKey]).format(`YYYY-MM-DD HH:mm${toSecond ? ':ss' : ''}`)}`
135   - : '';
136   - return result || '-';
137   -};
  133 + ? moment(item[dateStartKey]).get("year") ===
  134 + moment(item[dateEndKey]).get("year")
  135 + ? moment(item[dateStartKey]).get("month") ===
  136 + moment(item[dateEndKey]).get("month")
  137 + ? moment(item[dateStartKey]).get("D") ===
  138 + moment(item[dateEndKey]).get("D")
  139 + ? `${interval}${moment(item[dateEndKey]).format(
  140 + toDay ? "MM-DD" : `HH:mm${toSecond ? ":ss" : ""}`
  141 + )}`
  142 + : `${interval}${moment(item[dateEndKey]).format(
  143 + toDay ? "MM-DD" : `MM-DD HH:mm${toSecond ? ":ss" : ""}`
  144 + )}`
  145 + : `${interval}${moment(item[dateEndKey]).format(
  146 + toDay ? "MM-DD" : `MM-DD HH:mm${toSecond ? ":ss" : ""}`
  147 + )}`
  148 + : `${interval}${moment(item[dateEndKey]).format(
  149 + toDay ? "YYYY-MM-DD" : `YYYY-MM-DD HH:mm${toSecond ? ":ss" : ""}`
  150 + )}`
  151 + : "";
  152 + return result || "-";
  153 +}
... ...