feat:初次打包成功。
This commit is contained in:
parent
d513ebee9e
commit
e23407712f
|
@ -1,4 +1,6 @@
|
||||||
/** @type {import('next').NextConfig} */
|
/** @type {import('next').NextConfig} */
|
||||||
const nextConfig = {};
|
const nextConfig = {
|
||||||
|
output: 'export',
|
||||||
|
};
|
||||||
|
|
||||||
export default nextConfig;
|
export default nextConfig;
|
||||||
|
|
|
@ -15,6 +15,7 @@ export default function RootLayout({
|
||||||
}>) {
|
}>) {
|
||||||
return (
|
return (
|
||||||
<html>
|
<html>
|
||||||
|
<title>任务管理</title>
|
||||||
<body style={{margin: 0}}>{children}</body>
|
<body style={{margin: 0}}>{children}</body>
|
||||||
</html>
|
</html>
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,57 +1,11 @@
|
||||||
'use client'
|
'use client'
|
||||||
import AcmeLogo from '@/app/ui/acme-logo';
|
|
||||||
import { ArrowRightIcon } from '@heroicons/react/24/outline';
|
|
||||||
import Link from 'next/link';
|
|
||||||
import Image from 'next/image';
|
|
||||||
import {useRouter} from "next/navigation";
|
import {useRouter} from "next/navigation";
|
||||||
|
|
||||||
|
|
||||||
export default function Home() {
|
export default function Home() {
|
||||||
const { replace } = useRouter();
|
const { replace } = useRouter();
|
||||||
replace("/task/project")
|
replace("/task/four")
|
||||||
return (
|
return (
|
||||||
|
|
||||||
<main className="flex min-h-screen flex-col p-6">
|
<main className="flex min-h-screen flex-col p-6">
|
||||||
{/*<div className="flex h-20 shrink-0 items-end rounded-lg bg-blue-500 p-4 md:h-52">*/}
|
|
||||||
{/* <AcmeLogo/>*/}
|
|
||||||
{/*</div>*/}
|
|
||||||
{/*<div className="mt-4 flex grow flex-col gap-4 md:flex-row">*/}
|
|
||||||
{/* <div className="flex flex-col justify-center gap-6 rounded-lg bg-gray-50 px-6 py-10 md:w-2/5 md:px-20">*/}
|
|
||||||
{/* <p*/}
|
|
||||||
{/* className={`text-xl text-gray-800 md:text-3xl md:leading-normal`}*/}
|
|
||||||
{/* >*/}
|
|
||||||
{/* <strong>Welcome to Acme.</strong> This is the example for the{' '}*/}
|
|
||||||
{/* <a href="https://nextjs.org/learn/" className="text-blue-500">*/}
|
|
||||||
{/* Next.js Learn Course*/}
|
|
||||||
{/* </a>*/}
|
|
||||||
{/* , brought to you by Vercel.*/}
|
|
||||||
{/* </p>*/}
|
|
||||||
{/* <Link*/}
|
|
||||||
{/* href="/login"*/}
|
|
||||||
{/* className="flex items-center gap-5 self-start rounded-lg bg-blue-500 px-6 py-3 text-sm font-medium text-white transition-colors hover:bg-blue-400 md:text-base"*/}
|
|
||||||
{/* >*/}
|
|
||||||
{/* <span>Log in</span>*/}
|
|
||||||
{/* /!*<ArrowRightIcon className="w-5 md:w-6"/>*!/*/}
|
|
||||||
{/* </Link>*/}
|
|
||||||
{/* </div>*/}
|
|
||||||
{/* <div className="flex items-center justify-center p-6 md:w-3/5 md:px-28 md:py-12">*/}
|
|
||||||
{/* /!* Add Hero Images Here *!/*/}
|
|
||||||
{/* <Image*/}
|
|
||||||
{/* src="/hero-desktop.png"*/}
|
|
||||||
{/* width={1000}*/}
|
|
||||||
{/* height={760}*/}
|
|
||||||
{/* alt="Screenshots of the dashboard project showing desktop version"*/}
|
|
||||||
{/* className="hidden md:block"*/}
|
|
||||||
{/* />*/}
|
|
||||||
{/* <Image*/}
|
|
||||||
{/* src="/hero-mobile.png"*/}
|
|
||||||
{/* width={560}*/}
|
|
||||||
{/* height={620}*/}
|
|
||||||
{/* alt="Screenshot of the dashboard project showing mobile version"*/}
|
|
||||||
{/* className="block md:hidden"*/}
|
|
||||||
{/* />*/}
|
|
||||||
{/* </div>*/}
|
|
||||||
{/*</div>*/}
|
|
||||||
</main>
|
</main>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,22 @@ import {getTaskTreeResult, taskStateList} from "@/app/lib/task/project/data";
|
||||||
import {DataType, ResponseVO, ResultPage} from "@/app/lib/definitions";
|
import {DataType, ResponseVO, ResultPage} from "@/app/lib/definitions";
|
||||||
|
|
||||||
export default function Layout({children}: { children: React.ReactNode }) {
|
export default function Layout({children}: { children: React.ReactNode }) {
|
||||||
|
const [resultDataTypeList, setResultDataTypeList] = useState<DataType[]>([]);
|
||||||
|
const refreshDate = (): void => {
|
||||||
|
getTaskTreeResult(JSON.stringify({
|
||||||
|
pageSize:1000,
|
||||||
|
pageNumber:1,
|
||||||
|
data: leftUp
|
||||||
|
})).then((result: ResponseVO<ResultPage<DataType>>) => {
|
||||||
|
if (result.status.success) {
|
||||||
|
// recursionActionChild(result.data.content);
|
||||||
|
result.data.content.forEach(dataType=>{
|
||||||
|
dataType.state=taskStateList.find(taskState=>taskState.code===dataType.state+'')?.name
|
||||||
|
})
|
||||||
|
setResultDataTypeList(result.data.content)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
const divWidth = document.getElementById('tenUp').offsetWidth;
|
const divWidth = document.getElementById('tenUp').offsetWidth;
|
||||||
|
@ -40,23 +55,6 @@ export default function Layout({children}: { children: React.ReactNode }) {
|
||||||
leftUp.push(...parse);
|
leftUp.push(...parse);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const [resultDataTypeList, setResultDataTypeList] = useState<DataType[]>([]);
|
|
||||||
const refreshDate = (): void => {
|
|
||||||
getTaskTreeResult(JSON.stringify({
|
|
||||||
pageSize:1000,
|
|
||||||
pageNumber:1,
|
|
||||||
data: leftUp
|
|
||||||
})).then((result: ResponseVO<ResultPage<DataType>>) => {
|
|
||||||
if (result.status.success) {
|
|
||||||
// recursionActionChild(result.data.content);
|
|
||||||
result.data.content.forEach(dataType=>{
|
|
||||||
dataType.state=taskStateList.find(taskState=>taskState.code===dataType.state+'')?.name
|
|
||||||
})
|
|
||||||
setResultDataTypeList(result.data.content)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div className='firstRow' style={{display: 'flex'}}>
|
<div className='firstRow' style={{display: 'flex'}}>
|
||||||
|
|
|
@ -13,9 +13,11 @@ export default function Layout({children}: { children: React.ReactNode }) {
|
||||||
expectStartTimeList.push({'name': "expectedStartTime", 'value': dayjs().add(7, 'day'), 'operateType': "<"})
|
expectStartTimeList.push({'name': "expectedStartTime", 'value': dayjs().add(7, 'day'), 'operateType': "<"})
|
||||||
const [expectedStartTime, setExpectedStartTime] = React.useState<string>(JSON.stringify(expectStartTimeList))
|
const [expectedStartTime, setExpectedStartTime] = React.useState<string>(JSON.stringify(expectStartTimeList))
|
||||||
const [refreshDataFlag, setRefreshDataFlag] = React.useState<boolean>(true)
|
const [refreshDataFlag, setRefreshDataFlag] = React.useState<boolean>(true)
|
||||||
|
|
||||||
function refreshData() {
|
function refreshData() {
|
||||||
setRefreshDataFlag(!refreshDataFlag)
|
setRefreshDataFlag(!refreshDataFlag)
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('taskState,expectedStartTime,refreshDataFlag', taskState, expectedStartTime, refreshDataFlag)
|
console.log('taskState,expectedStartTime,refreshDataFlag', taskState, expectedStartTime, refreshDataFlag)
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
|
@ -29,12 +31,16 @@ export default function Layout({children}: { children: React.ReactNode }) {
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<LocalContext.Provider value={{'taskState':taskState,'expectedStartTime':expectedStartTime,'refreshData':refreshDataFlag}}>
|
<LocalContext.Provider value={{
|
||||||
<TitleOperation setTaskState={setTaskState} setExpectedStartTime={setExpectedStartTime} refreshData={refreshData}/>
|
'taskState': taskState,
|
||||||
|
'expectedStartTime': expectedStartTime,
|
||||||
|
'refreshData': refreshDataFlag
|
||||||
|
}}>
|
||||||
|
<TitleOperation setTaskState={setTaskState} setExpectedStartTime={setExpectedStartTime}
|
||||||
|
refreshData={refreshData}/>
|
||||||
{children}
|
{children}
|
||||||
</LocalContext.Provider>
|
</LocalContext.Provider>
|
||||||
</ConfigProvider>
|
</ConfigProvider>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,8 +18,6 @@ import {DetailModelForm} from "@/app/ui/task/project/DetailModelForm";
|
||||||
import OperationButton from "@/app/ui/task/OperationButton";
|
import OperationButton from "@/app/ui/task/OperationButton";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const TreeTablePro: React.FC = () => {
|
const TreeTablePro: React.FC = () => {
|
||||||
const actionRef = useRef<ActionType>();
|
const actionRef = useRef<ActionType>();
|
||||||
const formRef = useRef<ProFormInstance>();
|
const formRef = useRef<ProFormInstance>();
|
||||||
|
@ -30,11 +28,13 @@ const TreeTablePro: React.FC = () => {
|
||||||
const { RangePicker } = DatePicker;
|
const { RangePicker } = DatePicker;
|
||||||
const columns: ProColumns<DataType>[] = [
|
const columns: ProColumns<DataType>[] = [
|
||||||
{
|
{
|
||||||
|
key:'code',
|
||||||
title: '任务编码',
|
title: '任务编码',
|
||||||
dataIndex: 'code',
|
dataIndex: 'code',
|
||||||
width: '10%',
|
width: '10%',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
key: 'name',
|
||||||
title: '任务名称',
|
title: '任务名称',
|
||||||
dataIndex: 'name',
|
dataIndex: 'name',
|
||||||
width: '15%',
|
width: '15%',
|
||||||
|
@ -51,10 +51,12 @@ const TreeTablePro: React.FC = () => {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
key: 'description',
|
||||||
title: '任务描述',
|
title: '任务描述',
|
||||||
dataIndex: 'description',
|
dataIndex: 'description',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
key: 'priority',
|
||||||
title: '任务优先级',
|
title: '任务优先级',
|
||||||
dataIndex: 'priority',
|
dataIndex: 'priority',
|
||||||
order:2,
|
order:2,
|
||||||
|
@ -83,8 +85,8 @@ const TreeTablePro: React.FC = () => {
|
||||||
}
|
}
|
||||||
</Space>
|
</Space>
|
||||||
),
|
),
|
||||||
},
|
}, {
|
||||||
{
|
key: 'state',
|
||||||
title: '任务状态',
|
title: '任务状态',
|
||||||
dataIndex: 'state',
|
dataIndex: 'state',
|
||||||
valueType: 'select',
|
valueType: 'select',
|
||||||
|
@ -95,47 +97,33 @@ const TreeTablePro: React.FC = () => {
|
||||||
mode:"tags",
|
mode:"tags",
|
||||||
options: taskStateList.map(item => {
|
options: taskStateList.map(item => {
|
||||||
return {label: item.name, value: item.code}
|
return {label: item.name, value: item.code}
|
||||||
})
|
}),
|
||||||
},
|
},
|
||||||
// renderFormItem: (_, { defaultRender }) => {
|
}, {
|
||||||
// return defaultRender(_);
|
key: 'expectedStartTime',
|
||||||
// },
|
|
||||||
// render: (_, record) => (
|
|
||||||
// <Space>
|
|
||||||
// {
|
|
||||||
// <Tag color={taskStateList.find(item => item.code === record.state?.toString())?.color}
|
|
||||||
// key={taskStateList.find(item => item.code === record.state?.toString())?.code}>
|
|
||||||
// {taskStateList.find(item => item.code === record.state?.toString())?.name}
|
|
||||||
// </Tag>
|
|
||||||
// }
|
|
||||||
// </Space>
|
|
||||||
// ),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '期望开始时间',
|
title: '期望开始时间',
|
||||||
dataIndex: 'expectedStartTime',
|
dataIndex: 'expectedStartTime',
|
||||||
valueType: 'date',
|
valueType: 'date',
|
||||||
order:1,
|
order:1,
|
||||||
renderFormItem:()=><RangePicker allowEmpty={[true,true]}/>
|
renderFormItem:()=><RangePicker allowEmpty={[true,true]}/>
|
||||||
},
|
}, {
|
||||||
{
|
key:'expectedEndTime',
|
||||||
title: '期望结束时间',
|
title: '期望结束时间',
|
||||||
dataIndex: 'expectedEndTime',
|
dataIndex: 'expectedEndTime',
|
||||||
valueType: 'date',
|
valueType: 'date',
|
||||||
},
|
}, {
|
||||||
{
|
key: 'actualStartTime',
|
||||||
title: '实际开始时间',
|
title: '实际开始时间',
|
||||||
dataIndex: 'actualStartTime',
|
dataIndex: 'actualStartTime',
|
||||||
valueType: 'date',
|
valueType: 'date',
|
||||||
},
|
}, {
|
||||||
{
|
key: 'actualEndTime',
|
||||||
title: '期望结束时间',
|
title: '期望结束时间',
|
||||||
dataIndex: 'actualEndTime',
|
dataIndex: 'actualEndTime',
|
||||||
valueType: 'date',
|
valueType: 'date',
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
title: '操作',
|
|
||||||
key: 'option',
|
key: 'option',
|
||||||
|
title: '操作',
|
||||||
valueType: 'option',
|
valueType: 'option',
|
||||||
render: (_, record) => <OperationButton itemId={record.id} pid={record.pid} pPid={record.pPid} refreshDate={()=>{
|
render: (_, record) => <OperationButton itemId={record.id} pid={record.pid} pPid={record.pPid} refreshDate={()=>{
|
||||||
actionRef.current?.reload( false);
|
actionRef.current?.reload( false);
|
||||||
|
@ -143,10 +131,10 @@ const TreeTablePro: React.FC = () => {
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
let toolBarRenderList = [
|
let toolBarRenderList = [
|
||||||
<DetailModelForm operationId={OPERATION_BUTTON_TYPE.ADD} description='添加主线任务' reloadData={()=>{
|
<DetailModelForm key={1} operationId={OPERATION_BUTTON_TYPE.ADD} description='添加主线任务' reloadData={()=>{
|
||||||
actionRef.current?.reload( false);
|
actionRef.current?.reload( false);
|
||||||
}}/>,
|
}}/>,
|
||||||
<Switch checkedChildren="树" unCheckedChildren="列表" checked={switchChecked}
|
<Switch key={2} checkedChildren="树" unCheckedChildren="列表" checked={switchChecked}
|
||||||
onChange={(checked, event) => {setSwitchChecked(checked);actionRef.current?.reset?.();}} />,
|
onChange={(checked, event) => {setSwitchChecked(checked);actionRef.current?.reset?.();}} />,
|
||||||
];
|
];
|
||||||
if (switchChecked){
|
if (switchChecked){
|
||||||
|
|
Loading…
Reference in New Issue