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

View File

@ -142,10 +142,18 @@ export const TitleOperation: React.FC<TitleOperationProps> = ({
allowClear
style={{minWidth: '100px'}}
placeholder="任务状态"
defaultValue={data.taskState.split(",")}
defaultValue={data.taskState!=''&&data.taskState.split(",").length>0?data.taskState.split(","):[]}
onChange={(value) => {
console.log('onChange')
setTaskState(value.join(','))
console.log('onChange',{value})
if(value.length == 0){
setTaskState("")
}else {
setTaskState(value.join(','))
}
}}
onClear={()=>{
console.log('onChange,点击了清除无效果')
setTaskState("")
}}
options={taskStateList.map(item => {
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 {Calendar, dateFnsLocalizer, dayjsLocalizer, Event, SlotInfo, View} from 'react-big-calendar'
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/sass/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 TaskNameAndIcon from "@/components/TaskNameAndIcon";
import {TaskWebSelectVO} from "@/lib/task/project/definitions";
import {message} from "antd";
import {message,Modal} from "antd";
import ClickRecord from "@/components/ClickRecord";
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
* @constructor
@ -46,8 +48,9 @@ const CalShow: React.FC = () => {
start: dayjs(date).startOf('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 [searchObject,setSearchObject] =
useState<Request<TaskWebSelectVO>>({
pageSize: 9999,
@ -87,6 +90,7 @@ const CalShow: React.FC = () => {
useEffect(() => {
console.log("CalShow:useEffect:range", range)
// const searchListE = []
if (pid != null) {
// searchListE.push(
@ -109,7 +113,7 @@ const CalShow: React.FC = () => {
return () => {
clearClickTimeout()
}
}, [useContext(LocalContext), range]);
}, [state,taskTypeList,range]);
const calMessages = {
week: '周',
work_week: '工作周',
@ -121,13 +125,8 @@ const CalShow: React.FC = () => {
agenda: '日程'
}
const loadData = (searchList?: SearchObject[]) => {
if (state.length > 0) {
// searchList.push({name: 'state', value: state, operateType: "IN"})
searchObject.data.state=state
}
if (taskTypeList.length>0){
searchObject.data.taskTypeList=taskTypeList
}
searchObject.data.state=state
searchObject.data.taskTypeList=taskTypeList
searchObject.data.expectedStartTime=range.start
searchObject.data.expectedEndTime=range.end
setSearchObject({...searchObject})
@ -232,31 +231,42 @@ const CalShow: React.FC = () => {
message.error("计划双击完成,非计划双击无效果。")
return;
}
// 数据落库
commonUpdate({
updateColumnList: [{
name: '任务状态',
code: 'state',
value: 7
}],
conditionColumnList: [{
name: 'id',
code: 'id',
operateType: '=',
value: event.resource
}]
})
setEvents((prev: TaskEvent[]) => {
const existing: TaskEvent | undefined = prev.find((ev: TaskEvent) => ev.resource === event.resource);
const filtered: TaskEvent[] | undefined = prev.filter((ev: TaskEvent) => ev.resource !== event.resource);
let result: TaskEvent[] = [];
if (existing !== undefined && filtered !== undefined) {
result = [...filtered, {...existing, state: 7}];
}
let strings = state.split(",");
console.log('result', result, strings)
return result.filter((ev: TaskEvent) => !ev.state || strings.indexOf(ev.state.toString()) >= 0);
})
confirm({
title: '完成任务',
icon: <ExclamationCircleFilled />,
content: `确认要完成任务${event.name}吗?`,
onOk() {
// 数据落库
commonUpdate({
updateColumnList: [{
name: '任务状态',
code: 'state',
value: 7
}],
conditionColumnList: [{
name: 'id',
code: 'id',
operateType: '=',
value: event.resource
}]
})
setEvents((prev: TaskEvent[]) => {
const existing: TaskEvent | undefined = prev.find((ev: TaskEvent) => ev.resource === event.resource);
const filtered: TaskEvent[] | undefined = prev.filter((ev: TaskEvent) => ev.resource !== event.resource);
let result: TaskEvent[] = [];
if (existing !== undefined && filtered !== undefined) {
result = [...filtered, {...existing, state: 7}];
}
let strings = state.split(",");
console.log('result', result, strings)
return result.filter((ev: TaskEvent) => !ev.state || strings.indexOf(ev.state.toString()) >= 0);
})
},
onCancel() {
console.log('Cancel');
},
});
}, 250)
}

View File

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