feat:设置查询范围

This commit is contained in:
shixiaohua 2024-05-31 14:00:16 +08:00
parent f208fc593a
commit 6cca06d4be
1 changed files with 41 additions and 11 deletions

View File

@ -25,7 +25,7 @@ const localizer = dayjsLocalizer(dayjs)
const DragAndDropCalendar = withDragAndDrop(Calendar) const DragAndDropCalendar = withDragAndDrop(Calendar)
const CalShow: React.FC = () => { const CalShow: React.FC = () => {
dayjs.locale('zh-cn') dayjs.locale('zh-cn')
const [view, setView] = useState<View>('month'); const [view, setView] = useState<View>('week');
const [date, setDate] = useState<Date>(new Date()); const [date, setDate] = useState<Date>(new Date());
const clickRef = useRef<number|undefined|null>(null) const clickRef = useRef<number|undefined|null>(null)
// 展示在页面的任务,默认获取当前月的信息。 // 展示在页面的任务,默认获取当前月的信息。
@ -36,6 +36,10 @@ const CalShow: React.FC = () => {
const [itemId, setItemId] = useState(-1); const [itemId, setItemId] = useState(-1);
const [expectedStartTime, setExpectedStartTime] = useState<Dayjs>(); const [expectedStartTime, setExpectedStartTime] = useState<Dayjs>();
const [expectedEndTime, setExpectedEndTime] = useState<Dayjs>(); const [expectedEndTime, setExpectedEndTime] = useState<Dayjs>();
const [range, setRange] = useState<{start: Date; end: Date}>({
start: dayjs(date).startOf('week').toDate(),
end: dayjs(date).endOf('week').toDate()
});
let state: string = useContext(LocalContext).taskState let state: string = useContext(LocalContext).taskState
const handleViewChange = (newView: View) => { const handleViewChange = (newView: View) => {
@ -56,12 +60,13 @@ const CalShow: React.FC = () => {
operateType: "TREE" operateType: "TREE"
}); });
} }
searchList.push({name: "expectedStartTime", value: dayjs(newDate).startOf('month'), operateType: ">="}) searchList.push({name: "expectedStartTime", value: range.start, operateType: ">="})
searchList.push({name: 'expectedStartTime', value: dayjs(newDate).endOf('month'), operateType: "<="}) searchList.push({name: 'expectedStartTime', value: range.end, operateType: "<="})
loadData(searchList); loadData(searchList);
}; };
useEffect(() => { useEffect(() => {
console.log("CalShow:useEffect:range",range)
const searchListE = [] const searchListE = []
if (pid != null) { if (pid != null) {
searchListE.push({name: "pid", value: pid, operateType: "="}, { searchListE.push({name: "pid", value: pid, operateType: "="}, {
@ -70,13 +75,8 @@ const CalShow: React.FC = () => {
operateType: "TREE" operateType: "TREE"
}); });
} }
if (view === 'month') { searchListE.push({name: 'expectedStartTime', value: range.start, operateType: ">="})
searchListE.push({name: 'expectedStartTime', value: dayjs(date).startOf('month'), operateType: ">="}) searchListE.push({name: 'expectedStartTime', value: range.end, operateType: "<="})
searchListE.push({name: 'expectedStartTime', value: dayjs(date).endOf('month'), operateType: "<="})
} else {
searchListE.push({name: 'expectedStartTime', value: dayjs(date).startOf('week'), operateType: ">="})
searchListE.push({name: 'expectedStartTime', value: dayjs(date).endOf('week'), operateType: "<="})
}
loadData(searchListE); loadData(searchListE);
/** /**
* What Is This? * What Is This?
@ -243,6 +243,36 @@ const CalShow: React.FC = () => {
}), }),
[setEvents] [setEvents]
) )
const rangeChange = (rangeLet: Date[]|{ start: Date; end: Date })=>{
console.log("rangeChange:",rangeLet)
// view 为天的时候类型为数组index:0为当天
if (view==="day"&&Array.isArray(rangeLet)) {
if (range.start.valueOf()>rangeLet[0].valueOf()){
setRange({...range,start:rangeLet[0]})
}else if (range.end.valueOf()<rangeLet[0].valueOf()){
setRange({...range,end:rangeLet[0]})
}
}
// 为周的时候类型为数组,周一到周日七天
if (view==="week"&&Array.isArray(rangeLet)){
if (range.start.valueOf()>rangeLet[0].valueOf()){
setRange({...range,start:rangeLet[0]})
}
if (range.end.valueOf()<rangeLet[6].valueOf()){
setRange({...range,end:rangeLet[6]})
}
}
// 为周的时候类型为对象
if (view==="month"&& rangeLet && !Array.isArray(rangeLet)){
if (range.start.valueOf()>rangeLet.start.valueOf()){
setRange({...range,start:rangeLet.start})
}
if (range.end.valueOf()<rangeLet.end.valueOf()){
setRange({...range,end:rangeLet.end})
}
}
}
return <div className="App" style={{height: '90vh'}}> return <div className="App" style={{height: '90vh'}}>
{open&&<DetailModelForm operationId={operationId} description={description} open={open} haveButton={false} {open&&<DetailModelForm operationId={operationId} description={description} open={open} haveButton={false}
itemId={itemId} pid={pid?Number(pid):0} itemId={itemId} pid={pid?Number(pid):0}
@ -259,7 +289,7 @@ const CalShow: React.FC = () => {
view={view} view={view}
// 界面改变 // 界面改变
onView={handleViewChange} onView={handleViewChange}
// onRangeChange={rangeChange} onRangeChange={rangeChange}
// 时间 // 时间
date={date} date={date}
// 条目信息改变 // 条目信息改变