@pisell/pisellos 2.1.3 → 2.1.4

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.
@@ -17,6 +17,23 @@ export declare class DateModule extends BaseModule implements Module, DateModule
17
17
  getDateList(): ITime[];
18
18
  setDateList(dateList: ITime[]): void;
19
19
  fetchResourceDates(params: IGetAvailableTimeListParams): Promise<any>;
20
+ /**
21
+ * 将时间向上取整到下一个10分钟整数
22
+ *
23
+ * @param time dayjs 时间对象
24
+ * @returns 向上取整后的时间字符串 (YYYY-MM-DD HH:mm 格式)
25
+ */
26
+ private roundUpToNext10Minutes;
27
+ /**
28
+ * 校正资源时间段数据
29
+ *
30
+ * 如果时间段的 start_at 早于资源的 start_time,将其同步为 start_time 的下一个10分钟整数
31
+ * 如果修正后 end_at 也早于修正后的 start_time,则删除该时间段
32
+ *
33
+ * @param resourcesData 资源数据数组
34
+ * @returns 校正后的资源数据数组
35
+ */
36
+ private correctResourceTimeSlots;
20
37
  getResourceAvailableTimeList(params: IGetAvailableTimeListParams): Promise<ITime[]>;
21
38
  clearDateRange(): void;
22
39
  storeChange(): void;
@@ -1,4 +1,6 @@
1
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2
4
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
3
5
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
6
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
@@ -21,6 +23,7 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
21
23
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
22
24
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
23
25
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
26
+ import dayjs from 'dayjs';
24
27
  import { BaseModule } from "../BaseModule";
25
28
  import { disableAllDates, generateMonthDates, handleAvailableDateByResource, handleAvailableDatesByRules } from "./utils";
26
29
  import cloneDeep from 'lodash-es/cloneDeep';
@@ -204,22 +207,107 @@ export var DateModule = /*#__PURE__*/function (_BaseModule) {
204
207
  });
205
208
  case 6:
206
209
  res = _context3.sent;
210
+ // 校正资源时间段数据
211
+ if (res !== null && res !== void 0 && res.data && Array.isArray(res.data)) {
212
+ res.data = this.correctResourceTimeSlots(res.data);
213
+ }
207
214
  return _context3.abrupt("return", res);
208
- case 10:
209
- _context3.prev = 10;
215
+ case 11:
216
+ _context3.prev = 11;
210
217
  _context3.t0 = _context3["catch"](3);
211
218
  console.error(_context3.t0);
212
- case 13:
219
+ case 14:
213
220
  case "end":
214
221
  return _context3.stop();
215
222
  }
216
- }, _callee3, this, [[3, 10]]);
223
+ }, _callee3, this, [[3, 11]]);
217
224
  }));
218
225
  function fetchResourceDates(_x4) {
219
226
  return _fetchResourceDates.apply(this, arguments);
220
227
  }
221
228
  return fetchResourceDates;
222
229
  }()
230
+ /**
231
+ * 将时间向上取整到下一个10分钟整数
232
+ *
233
+ * @param time dayjs 时间对象
234
+ * @returns 向上取整后的时间字符串 (YYYY-MM-DD HH:mm 格式)
235
+ */
236
+ }, {
237
+ key: "roundUpToNext10Minutes",
238
+ value: function roundUpToNext10Minutes(time) {
239
+ var minutes = time.minute();
240
+ var remainder = minutes % 10;
241
+ if (remainder === 0) {
242
+ // 如果已经是10分钟的整数,保持不变
243
+ return time.format('YYYY-MM-DD HH:mm');
244
+ } else {
245
+ // 向上取整到下一个10分钟
246
+ var minutesToAdd = 10 - remainder;
247
+ var roundedTime = time.add(minutesToAdd, 'minute');
248
+ return roundedTime.format('YYYY-MM-DD HH:mm');
249
+ }
250
+ }
251
+
252
+ /**
253
+ * 校正资源时间段数据
254
+ *
255
+ * 如果时间段的 start_at 早于资源的 start_time,将其同步为 start_time 的下一个10分钟整数
256
+ * 如果修正后 end_at 也早于修正后的 start_time,则删除该时间段
257
+ *
258
+ * @param resourcesData 资源数据数组
259
+ * @returns 校正后的资源数据数组
260
+ */
261
+ }, {
262
+ key: "correctResourceTimeSlots",
263
+ value: function correctResourceTimeSlots(resourcesData) {
264
+ var _this2 = this;
265
+ return resourcesData.map(function (resource) {
266
+ // 检查资源是否有 times 数组和 start_time
267
+ if (!resource.times || !Array.isArray(resource.times) || !resource.start_time) {
268
+ return resource;
269
+ }
270
+ var resourceStartTime = dayjs(resource.start_time);
271
+
272
+ // 过滤和修正时间段
273
+ var correctedTimes = resource.times.map(function (timeSlot) {
274
+ if (!timeSlot.start_at || !timeSlot.end_at) {
275
+ return timeSlot;
276
+ }
277
+ var startAt = dayjs(timeSlot.start_at);
278
+ var endAt = dayjs(timeSlot.end_at);
279
+
280
+ // 如果 start_at 早于资源的 start_time,需要修正
281
+ if (startAt.isBefore(resourceStartTime)) {
282
+ // 将 start_time 向上取整到下一个10分钟整数
283
+ var roundedStartTime = _this2.roundUpToNext10Minutes(resourceStartTime);
284
+ var roundedStartTimeDayjs = dayjs(roundedStartTime);
285
+ console.log("[DateModule] \u4FEE\u6B63\u65F6\u95F4\u6BB5\u5F00\u59CB\u65F6\u95F4: ".concat(timeSlot.start_at, " -> ").concat(roundedStartTime, " (\u8D44\u6E90ID: ").concat(resource.id, ", \u539F\u59CBstart_time: ").concat(resource.start_time, ")"));
286
+
287
+ // 将 start_at 修正为向上取整后的时间
288
+ var correctedTimeSlot = _objectSpread(_objectSpread({}, timeSlot), {}, {
289
+ start_at: roundedStartTime
290
+ });
291
+
292
+ // 检查修正后的 end_at 是否也早于修正后的 start_time
293
+ if (endAt.isBefore(roundedStartTimeDayjs)) {
294
+ console.log("[DateModule] \u65F6\u95F4\u6BB5\u65E0\u6548\uFF0C\u5C06\u88AB\u5220\u9664: ".concat(timeSlot.start_at, " - ").concat(timeSlot.end_at, " (\u8D44\u6E90ID: ").concat(resource.id, ", \u4FEE\u6B63\u540Estart_time: ").concat(roundedStartTime, ")"));
295
+ return null; // 标记为删除
296
+ }
297
+ return correctedTimeSlot;
298
+ }
299
+
300
+ // 不需要修正的时间段直接返回
301
+ return timeSlot;
302
+ }).filter(function (timeSlot) {
303
+ return timeSlot !== null;
304
+ }); // 过滤掉被删除的时间段
305
+
306
+ return _objectSpread(_objectSpread({}, resource), {}, {
307
+ times: correctedTimes
308
+ });
309
+ });
310
+ }
223
311
  }, {
224
312
  key: "getResourceAvailableTimeList",
225
313
  value: function () {
@@ -17,6 +17,23 @@ export declare class DateModule extends BaseModule implements Module, DateModule
17
17
  getDateList(): ITime[];
18
18
  setDateList(dateList: ITime[]): void;
19
19
  fetchResourceDates(params: IGetAvailableTimeListParams): Promise<any>;
20
+ /**
21
+ * 将时间向上取整到下一个10分钟整数
22
+ *
23
+ * @param time dayjs 时间对象
24
+ * @returns 向上取整后的时间字符串 (YYYY-MM-DD HH:mm 格式)
25
+ */
26
+ private roundUpToNext10Minutes;
27
+ /**
28
+ * 校正资源时间段数据
29
+ *
30
+ * 如果时间段的 start_at 早于资源的 start_time,将其同步为 start_time 的下一个10分钟整数
31
+ * 如果修正后 end_at 也早于修正后的 start_time,则删除该时间段
32
+ *
33
+ * @param resourcesData 资源数据数组
34
+ * @returns 校正后的资源数据数组
35
+ */
36
+ private correctResourceTimeSlots;
20
37
  getResourceAvailableTimeList(params: IGetAvailableTimeListParams): Promise<ITime[]>;
21
38
  clearDateRange(): void;
22
39
  storeChange(): void;
@@ -32,6 +32,7 @@ __export(Date_exports, {
32
32
  DateModule: () => DateModule
33
33
  });
34
34
  module.exports = __toCommonJS(Date_exports);
35
+ var import_dayjs = __toESM(require("dayjs"));
35
36
  var import_BaseModule = require("../BaseModule");
36
37
  var import_utils = require("./utils");
37
38
  var import_cloneDeep = __toESM(require("lodash-es/cloneDeep"));
@@ -138,11 +139,74 @@ var DateModule = class extends import_BaseModule.BaseModule {
138
139
  }, {
139
140
  useCache
140
141
  });
142
+ if ((res == null ? void 0 : res.data) && Array.isArray(res.data)) {
143
+ res.data = this.correctResourceTimeSlots(res.data);
144
+ }
141
145
  return res;
142
146
  } catch (error) {
143
147
  console.error(error);
144
148
  }
145
149
  }
150
+ /**
151
+ * 将时间向上取整到下一个10分钟整数
152
+ *
153
+ * @param time dayjs 时间对象
154
+ * @returns 向上取整后的时间字符串 (YYYY-MM-DD HH:mm 格式)
155
+ */
156
+ roundUpToNext10Minutes(time) {
157
+ const minutes = time.minute();
158
+ const remainder = minutes % 10;
159
+ if (remainder === 0) {
160
+ return time.format("YYYY-MM-DD HH:mm");
161
+ } else {
162
+ const minutesToAdd = 10 - remainder;
163
+ const roundedTime = time.add(minutesToAdd, "minute");
164
+ return roundedTime.format("YYYY-MM-DD HH:mm");
165
+ }
166
+ }
167
+ /**
168
+ * 校正资源时间段数据
169
+ *
170
+ * 如果时间段的 start_at 早于资源的 start_time,将其同步为 start_time 的下一个10分钟整数
171
+ * 如果修正后 end_at 也早于修正后的 start_time,则删除该时间段
172
+ *
173
+ * @param resourcesData 资源数据数组
174
+ * @returns 校正后的资源数据数组
175
+ */
176
+ correctResourceTimeSlots(resourcesData) {
177
+ return resourcesData.map((resource) => {
178
+ if (!resource.times || !Array.isArray(resource.times) || !resource.start_time) {
179
+ return resource;
180
+ }
181
+ const resourceStartTime = (0, import_dayjs.default)(resource.start_time);
182
+ const correctedTimes = resource.times.map((timeSlot) => {
183
+ if (!timeSlot.start_at || !timeSlot.end_at) {
184
+ return timeSlot;
185
+ }
186
+ const startAt = (0, import_dayjs.default)(timeSlot.start_at);
187
+ const endAt = (0, import_dayjs.default)(timeSlot.end_at);
188
+ if (startAt.isBefore(resourceStartTime)) {
189
+ const roundedStartTime = this.roundUpToNext10Minutes(resourceStartTime);
190
+ const roundedStartTimeDayjs = (0, import_dayjs.default)(roundedStartTime);
191
+ console.log(`[DateModule] 修正时间段开始时间: ${timeSlot.start_at} -> ${roundedStartTime} (资源ID: ${resource.id}, 原始start_time: ${resource.start_time})`);
192
+ const correctedTimeSlot = {
193
+ ...timeSlot,
194
+ start_at: roundedStartTime
195
+ };
196
+ if (endAt.isBefore(roundedStartTimeDayjs)) {
197
+ console.log(`[DateModule] 时间段无效,将被删除: ${timeSlot.start_at} - ${timeSlot.end_at} (资源ID: ${resource.id}, 修正后start_time: ${roundedStartTime})`);
198
+ return null;
199
+ }
200
+ return correctedTimeSlot;
201
+ }
202
+ return timeSlot;
203
+ }).filter((timeSlot) => timeSlot !== null);
204
+ return {
205
+ ...resource,
206
+ times: correctedTimes
207
+ };
208
+ });
209
+ }
146
210
  async getResourceAvailableTimeList(params) {
147
211
  var _a;
148
212
  const { query, rules, type } = params;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": false,
3
3
  "name": "@pisell/pisellos",
4
- "version": "2.1.3",
4
+ "version": "2.1.4",
5
5
  "description": "一个可扩展的前端模块化SDK框架,支持插件系统",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",