@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
|
|
209
|
-
_context3.prev =
|
|
215
|
+
case 11:
|
|
216
|
+
_context3.prev = 11;
|
|
210
217
|
_context3.t0 = _context3["catch"](3);
|
|
211
218
|
console.error(_context3.t0);
|
|
212
|
-
case
|
|
219
|
+
case 14:
|
|
213
220
|
case "end":
|
|
214
221
|
return _context3.stop();
|
|
215
222
|
}
|
|
216
|
-
}, _callee3, this, [[3,
|
|
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;
|