@10yun/cv-mobile-ui 0.5.42 → 0.5.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@10yun/cv-mobile-ui",
3
- "version": "0.5.42",
3
+ "version": "0.5.44",
4
4
  "description": "十云cvjs移动端ui,适用uniapp",
5
5
  "author": "10yun",
6
6
  "license": "Apache-2.0",
@@ -3,7 +3,7 @@
3
3
  </template>
4
4
  <script>
5
5
  export default {
6
- name: 'CcGgIcons',
6
+ name: 'cvSvgs',
7
7
  emits: ['click'],
8
8
  props: {
9
9
  type: {
@@ -1,53 +1,96 @@
1
- /**
2
- * 判断是否在日期范围内
3
- * @param {*} monthStr
4
- * @param {*} startDateStr
5
- * @param {*} endDateStr
6
- * @returns
7
- */
8
- export function cc_date_in_scope(checkDateStr, startDateStr, endDateStr) {
9
- const checkDate = new Date(checkDateStr);
10
- // 将日期字符串转换为日期对象
11
- const startDate = new Date(startDateStr);
12
- const endDate = new Date(endDateStr);
13
- // NaN 防御
14
- if (isNaN(checkDate) || isNaN(startDate) || isNaN(endDate)) {
15
- return false;
16
- }
17
-
18
- return checkDate >= startDate && checkDate <= endDate;
1
+ function parseDateSafe(str) {
2
+ if (str instanceof Date) return str;
3
+ if (typeof str !== 'string') return new Date(str);
4
+ // 标准化各种时间格式:
5
+ // - 替换空格为 T
6
+ // - 替换 / 为 -
7
+ const normalized = str.trim().replace(/\//g, '-').replace(' ', 'T');
8
+ const date = new Date(normalized);
9
+ return isNaN(date) ? new Date(str) : date;
19
10
  }
11
+
20
12
  /**
21
- * 判断某个月是否完全在指定时间范围内
22
- * @param {string} monthStr - 如 "2025-07"
13
+ * 判断某个时间(年/月/日/时分秒)是否完全包含在范围内
14
+ * @param {string|Date} inputStr
15
+ * - 可为 "2020"、"2020-07"、"2020-07-25"、"2020-07-25 12:00:00"
23
16
  * @param {string|Date} startDateStr - 开始时间
24
17
  * @param {string|Date} endDateStr - 结束时间
25
18
  * @returns {boolean}
26
19
  */
27
- export function cc_month_in_scope(monthStr, startDateStr, endDateStr) {
28
- const [year, month] = monthStr.split('-').map(Number);
29
- const monthStart = new Date(year, month - 1, 1, 0, 0, 0);
30
- const monthEnd = new Date(year, month, 0, 23, 59, 59); // 当月最后一天
20
+ export function cc_date_time_in_scope(inputStr, startDateStr, endDateStr) {
21
+ const startDate = parseDateSafe(startDateStr);
22
+ const endDate = parseDateSafe(endDateStr);
23
+ if (isNaN(startDate) || isNaN(endDate)) {
24
+ return false;
25
+ }
26
+ let inputStart, inputEnd;
31
27
 
32
- const startDate = new Date(startDateStr);
33
- const endDate = new Date(endDateStr);
28
+ if (typeof inputStr === 'string') {
29
+ if (/^\d{4}$/.test(inputStr)) {
30
+ // 年份:整年
31
+ inputStart = new Date(`${inputStr}-01-01T00:00:00`);
32
+ inputEnd = new Date(`${inputStr}-12-31T23:59:59`);
33
+ } else if (/^\d{4}-\d{2}$/.test(inputStr)) {
34
+ // 月份:整月
35
+ const [year, month] = inputStr.split('-').map(Number);
36
+ inputStart = new Date(year, month - 1, 1, 0, 0, 0);
37
+ inputEnd = new Date(year, month, 0, 23, 59, 59);
38
+ } else if (/^\d{4}-\d{2}-\d{2}$/.test(inputStr)) {
39
+ // 日期:整天
40
+ inputStart = new Date(`${inputStr}T00:00:00`);
41
+ inputEnd = new Date(`${inputStr}T23:59:59`);
42
+ } else {
43
+ // 时间点
44
+ const point = new Date(inputStr);
45
+ if (isNaN(point)) return false;
46
+ inputStart = point;
47
+ inputEnd = point;
48
+ }
49
+ } else if (inputStr instanceof Date) {
50
+ inputStart = inputStr;
51
+ inputEnd = inputStr;
52
+ } else {
53
+ return false;
54
+ }
34
55
 
35
- return monthStart >= startDate && monthEnd <= endDate;
56
+ return inputStart >= startDate && inputEnd <= endDate;
36
57
  }
37
58
  /**
38
59
  * 判断某个月是否与指定时间范围有交集
39
- * @param {string} monthStr - 如 "2025-07"
60
+ * @param {string|Date} inputStr
61
+ * - 可为 "2020"、"2020-07"、"2020-07-25"、"2020-07-25 12:00:00"
40
62
  * @param {string|Date} startDateStr - 开始时间
41
63
  * @param {string|Date} endDateStr - 结束时间
42
64
  * @returns {boolean}
43
65
  */
44
- export function cc_month_overlap_scope(monthStr, startDateStr, endDateStr) {
45
- const [year, month] = monthStr.split('-').map(Number);
46
- const monthStart = new Date(year, month - 1, 1, 0, 0, 0);
47
- const monthEnd = new Date(year, month, 0, 23, 59, 59);
48
66
 
49
- const startDate = new Date(startDateStr);
50
- const endDate = new Date(endDateStr);
67
+ function cc_date_time_overlap_scope(inputStr, startDateStr, endDateStr) {
68
+ const startDate = parseDateSafe(startDateStr);
69
+ const endDate = parseDateSafe(endDateStr);
70
+ if (isNaN(startDate) || isNaN(endDate)) {
71
+ return false;
72
+ }
73
+ let inputStart, inputEnd;
51
74
 
52
- return monthEnd >= startDate && monthStart <= endDate;
75
+ if (/^\d{4}$/.test(inputStr)) {
76
+ // 年份:2025 → 2025-01-01 ~ 2025-12-31 23:59:59
77
+ inputStart = new Date(`${inputStr}-01-01T00:00:00`);
78
+ inputEnd = new Date(`${inputStr}-12-31T23:59:59`);
79
+ } else if (/^\d{4}-\d{2}$/.test(inputStr)) {
80
+ // 月份:2025-07 → 2025-07-01 ~ 2025-07-31
81
+ const [year, month] = inputStr.split('-').map(Number);
82
+ inputStart = new Date(year, month - 1, 1, 0, 0, 0);
83
+ inputEnd = new Date(year, month, 0, 23, 59, 59); // 当月最后一天
84
+ } else if (/^\d{4}-\d{2}-\d{2}$/.test(inputStr)) {
85
+ // 日期:2025-07-25 → 当天整天
86
+ inputStart = new Date(`${inputStr}T00:00:00`);
87
+ inputEnd = new Date(`${inputStr}T23:59:59`);
88
+ } else {
89
+ // 其他格式:默认作为精确时间点
90
+ const point = new Date(inputStr);
91
+ if (isNaN(point)) return false;
92
+ inputStart = point;
93
+ inputEnd = point;
94
+ }
95
+ return inputEnd >= startDate && inputStart <= endDate;
53
96
  }