|
@@ -1,6 +1,8 @@
|
|
|
import { createSlice, PayloadAction } from '@reduxjs/toolkit';
|
|
|
import dayjs from 'dayjs';
|
|
|
|
|
|
+export type TimeRangeType = 'today' | '7days' | 'all';
|
|
|
+
|
|
|
interface SearchState {
|
|
|
id: string;
|
|
|
name: string;
|
|
@@ -10,17 +12,19 @@ interface SearchState {
|
|
|
status: string;
|
|
|
page: number;
|
|
|
page_size: number;
|
|
|
+ timeRangeType: TimeRangeType;
|
|
|
}
|
|
|
|
|
|
const initialState: SearchState = {
|
|
|
id: '',
|
|
|
name: '',
|
|
|
acc_no: '',
|
|
|
- start_time: dayjs().format('YYYY-MM-DD'),
|
|
|
- end_time: dayjs().format('YYYY-MM-DD'),
|
|
|
+ start_time: '',
|
|
|
+ end_time: '',
|
|
|
status: 'Arrived,InProgress',
|
|
|
page: 1,
|
|
|
page_size: 10,
|
|
|
+ timeRangeType: 'all',
|
|
|
};
|
|
|
|
|
|
const searchSlice = createSlice({
|
|
@@ -51,6 +55,36 @@ const searchSlice = createSlice({
|
|
|
setPageSize: (state, action: PayloadAction<number>) => {
|
|
|
state.page_size = action.payload;
|
|
|
},
|
|
|
+ setTimeRangeType: (state, action: PayloadAction<TimeRangeType>) => {
|
|
|
+ state.timeRangeType = action.payload;
|
|
|
+
|
|
|
+ // 根据时间范围类型自动计算开始和结束时间 (RFC3339Nano格式)
|
|
|
+ const today = dayjs();
|
|
|
+
|
|
|
+ switch (action.payload) {
|
|
|
+ case 'today':
|
|
|
+ state.start_time = today
|
|
|
+ .startOf('day')
|
|
|
+ .format('YYYY-MM-DDTHH:mm:ss.SSS[+08:00]');
|
|
|
+ state.end_time = today
|
|
|
+ .endOf('day')
|
|
|
+ .format('YYYY-MM-DDTHH:mm:ss.SSS[+08:00]');
|
|
|
+ break;
|
|
|
+ case '7days':
|
|
|
+ state.start_time = today
|
|
|
+ .subtract(6, 'days')
|
|
|
+ .startOf('day')
|
|
|
+ .format('YYYY-MM-DDTHH:mm:ss.SSS[+08:00]');
|
|
|
+ state.end_time = today
|
|
|
+ .endOf('day')
|
|
|
+ .format('YYYY-MM-DDTHH:mm:ss.SSS[+08:00]');
|
|
|
+ break;
|
|
|
+ case 'all':
|
|
|
+ state.start_time = '';
|
|
|
+ state.end_time = '';
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ },
|
|
|
},
|
|
|
});
|
|
|
|
|
@@ -63,6 +97,7 @@ export const {
|
|
|
setStatus,
|
|
|
setPage,
|
|
|
setPageSize,
|
|
|
+ setTimeRangeType,
|
|
|
} = searchSlice.actions;
|
|
|
|
|
|
export default searchSlice.reducer;
|