feat:日历设置中文

This commit is contained in:
1708-huayu 2025-08-14 18:53:07 +08:00
parent 698ef16905
commit c69381abad
4 changed files with 65 additions and 41 deletions

View File

@ -3,9 +3,12 @@ import React, {Fragment} from "react";
import {TitleOperation} from "@/ui/task/TitleOperation"; import {TitleOperation} from "@/ui/task/TitleOperation";
import LocalContext from "@/ui/LocalContent"; import LocalContext from "@/ui/LocalContent";
import dayjs from "dayjs"; import dayjs from "dayjs";
import 'dayjs/locale/zh-cn';
import {ConfigProvider} from "antd"; import {ConfigProvider} from "antd";
import locale from "antd/locale/zh_CN";
export default function Layout({children}: { children: React.ReactNode }) { export default function Layout({children}: { children: React.ReactNode }) {
dayjs.locale('zh-cn');
const [taskState, setTaskState] = React.useState<string>('8,9,10') const [taskState, setTaskState] = React.useState<string>('8,9,10')
let expectStartTimeList = []; let expectStartTimeList = [];
expectStartTimeList.push({'name': "expectedStartTime", 'value': dayjs().subtract(7, 'day'), 'operateType': ">="}); expectStartTimeList.push({'name': "expectedStartTime", 'value': dayjs().subtract(7, 'day'), 'operateType': ">="});
@ -22,6 +25,7 @@ export default function Layout({children}: { children: React.ReactNode }) {
return ( return (
<Fragment> <Fragment>
<ConfigProvider <ConfigProvider
locale={locale}
theme={{ theme={{
components: { components: {
Table: { Table: {
@ -41,7 +45,8 @@ export default function Layout({children}: { children: React.ReactNode }) {
'expectedStartTime': expectedStartTime, 'expectedStartTime': expectedStartTime,
'refreshData': refreshDataFlag, 'refreshData': refreshDataFlag,
'taskTypeList':taskTypeList 'taskTypeList':taskTypeList
}}> }}
>
<TitleOperation setTaskState={setTaskState} setExpectedStartTime={setExpectedStartTime} <TitleOperation setTaskState={setTaskState} setExpectedStartTime={setExpectedStartTime}
setTaskTypeList={setTaskTypeList} setTaskTypeList={setTaskTypeList}
refreshData={refreshData}/> refreshData={refreshData}/>

View File

@ -142,10 +142,18 @@ export const TitleOperation: React.FC<TitleOperationProps> = ({
allowClear allowClear
style={{minWidth: '100px'}} style={{minWidth: '100px'}}
placeholder="任务状态" placeholder="任务状态"
defaultValue={data.taskState.split(",")} defaultValue={data.taskState!=''&&data.taskState.split(",").length>0?data.taskState.split(","):[]}
onChange={(value) => { onChange={(value) => {
console.log('onChange') console.log('onChange',{value})
if(value.length == 0){
setTaskState("")
}else {
setTaskState(value.join(',')) setTaskState(value.join(','))
}
}}
onClear={()=>{
console.log('onChange,点击了清除无效果')
setTaskState("")
}} }}
options={taskStateList.map(item => { options={taskStateList.map(item => {
return {label: item.name, value: item.code} return {label: item.name, value: item.code}

View File

@ -2,6 +2,7 @@
import React, {Fragment, useCallback, useContext, useEffect, useMemo, useRef, useState} from "react"; import React, {Fragment, useCallback, useContext, useEffect, useMemo, useRef, useState} from "react";
import {Calendar, dateFnsLocalizer, dayjsLocalizer, Event, SlotInfo, View} from 'react-big-calendar' import {Calendar, dateFnsLocalizer, dayjsLocalizer, Event, SlotInfo, View} from 'react-big-calendar'
import dayjs, {Dayjs} from 'dayjs' import dayjs, {Dayjs} from 'dayjs'
import 'dayjs/locale/zh-cn';
import 'react-big-calendar/lib/css/react-big-calendar.css' import 'react-big-calendar/lib/css/react-big-calendar.css'
import 'react-big-calendar/lib/sass/styles.scss' import 'react-big-calendar/lib/sass/styles.scss'
import 'react-big-calendar/lib/addons/dragAndDrop/styles.scss' import 'react-big-calendar/lib/addons/dragAndDrop/styles.scss'
@ -16,10 +17,11 @@ import {TaskEvent} from "@/lib/task/calendar/data";
import {editExpectAPI, getTaskAndScheduleRecordAPI} from "@/lib/task/calendar/service"; import {editExpectAPI, getTaskAndScheduleRecordAPI} from "@/lib/task/calendar/service";
import TaskNameAndIcon from "@/components/TaskNameAndIcon"; import TaskNameAndIcon from "@/components/TaskNameAndIcon";
import {TaskWebSelectVO} from "@/lib/task/project/definitions"; import {TaskWebSelectVO} from "@/lib/task/project/definitions";
import {message} from "antd"; import {message,Modal} from "antd";
import ClickRecord from "@/components/ClickRecord"; import ClickRecord from "@/components/ClickRecord";
import {editClickRecordRangeAPI} from "@/components/service/ScheduleTask"; import {editClickRecordRangeAPI} from "@/components/service/ScheduleTask";
import {ExclamationCircleFilled} from "@ant-design/icons";
const { confirm } = Modal;
/** /**
* https://github.com/jquense/react-big-calendar?tab=readme-ov-file * https://github.com/jquense/react-big-calendar?tab=readme-ov-file
* @constructor * @constructor
@ -46,8 +48,9 @@ const CalShow: React.FC = () => {
start: dayjs(date).startOf('week').toDate(), start: dayjs(date).startOf('week').toDate(),
end: dayjs(date).endOf('week').toDate() end: dayjs(date).endOf('week').toDate()
}); });
// const [state,setState]=useState( useContext(LocalContext).taskState)
// const [taskTypeList,setTaskTypeList] = useState(useContext(LocalContext).taskTypeList)
const {taskState:state,taskTypeList} = useContext(LocalContext); const {taskState:state,taskTypeList} = useContext(LocalContext);
const [searchObject,setSearchObject] = const [searchObject,setSearchObject] =
useState<Request<TaskWebSelectVO>>({ useState<Request<TaskWebSelectVO>>({
pageSize: 9999, pageSize: 9999,
@ -87,6 +90,7 @@ const CalShow: React.FC = () => {
useEffect(() => { useEffect(() => {
console.log("CalShow:useEffect:range", range) console.log("CalShow:useEffect:range", range)
// const searchListE = [] // const searchListE = []
if (pid != null) { if (pid != null) {
// searchListE.push( // searchListE.push(
@ -109,7 +113,7 @@ const CalShow: React.FC = () => {
return () => { return () => {
clearClickTimeout() clearClickTimeout()
} }
}, [useContext(LocalContext), range]); }, [state,taskTypeList,range]);
const calMessages = { const calMessages = {
week: '周', week: '周',
work_week: '工作周', work_week: '工作周',
@ -121,13 +125,8 @@ const CalShow: React.FC = () => {
agenda: '日程' agenda: '日程'
} }
const loadData = (searchList?: SearchObject[]) => { const loadData = (searchList?: SearchObject[]) => {
if (state.length > 0) {
// searchList.push({name: 'state', value: state, operateType: "IN"})
searchObject.data.state=state searchObject.data.state=state
}
if (taskTypeList.length>0){
searchObject.data.taskTypeList=taskTypeList searchObject.data.taskTypeList=taskTypeList
}
searchObject.data.expectedStartTime=range.start searchObject.data.expectedStartTime=range.start
searchObject.data.expectedEndTime=range.end searchObject.data.expectedEndTime=range.end
setSearchObject({...searchObject}) setSearchObject({...searchObject})
@ -232,6 +231,11 @@ const CalShow: React.FC = () => {
message.error("计划双击完成,非计划双击无效果。") message.error("计划双击完成,非计划双击无效果。")
return; return;
} }
confirm({
title: '完成任务',
icon: <ExclamationCircleFilled />,
content: `确认要完成任务${event.name}吗?`,
onOk() {
// 数据落库 // 数据落库
commonUpdate({ commonUpdate({
updateColumnList: [{ updateColumnList: [{
@ -257,6 +261,12 @@ const CalShow: React.FC = () => {
console.log('result', result, strings) console.log('result', result, strings)
return result.filter((ev: TaskEvent) => !ev.state || strings.indexOf(ev.state.toString()) >= 0); return result.filter((ev: TaskEvent) => !ev.state || strings.indexOf(ev.state.toString()) >= 0);
}) })
},
onCancel() {
console.log('Cancel');
},
});
}, 250) }, 250)
} }

View File

@ -173,7 +173,7 @@ const TreeTablePro: React.FC = (props: { joinId?: string }) => {
<Switch key={2} checkedChildren="树" unCheckedChildren="列表" checked={switchChecked} <Switch key={2} checkedChildren="树" unCheckedChildren="列表" checked={switchChecked}
onChange={(checked, event) => { onChange={(checked, event) => {
setSwitchChecked(checked); setSwitchChecked(checked);
actionRef.current?.reset?.(); actionRef.current?.reload?.();
}}/>, }}/>,
]; ];
if (switchChecked) { if (switchChecked) {
@ -239,6 +239,7 @@ const TreeTablePro: React.FC = (props: { joinId?: string }) => {
// data: searchList // data: searchList
// }) // })
// // const response = await getTaskTreeResult(request) // // const response = await getTaskTreeResult(request)
console.log({params})
const search: TaskWebSelectVO = const search: TaskWebSelectVO =
{ {
pid: pid, pid: pid,