fix:backup
|
@ -6,16 +6,18 @@
|
||||||
1. 层级展示任务
|
1. 层级展示任务
|
||||||
2. 可在操作中四象线展示子任务
|
2. 可在操作中四象线展示子任务
|
||||||
|
|
||||||

|

|
||||||
## 四象线
|
## 四象线
|
||||||
1. 向上重要
|
1. 向上重要
|
||||||
2. 向左紧急
|
2. 向左紧急
|
||||||
|
|
||||||

|

|
||||||
## 日历
|
## 日历
|
||||||
1. 月,周,日展示
|
1. 月,周,日展示
|
||||||
2. 只有期望开始时间和期望结束时间都填写的时候才会在日历中展示
|
2. 只有期望开始时间和期望结束时间都填写的时候才会在日历中展示
|
||||||
3.
|

|
||||||
|

|
||||||
|

|
||||||
## 项目启动
|
## 项目启动
|
||||||
### 后端服务启动
|
### 后端服务启动
|
||||||
1. 后端启动应用需求:docker,redis,mysql8。
|
1. 后端启动应用需求:docker,redis,mysql8。
|
||||||
|
|
|
@ -2,7 +2,7 @@ FROM openjdk:8
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY task-manager-server.jar /app/task-manager-server.jar
|
COPY task-manager-server.jar /app/task-manager-server.jar
|
||||||
EXPOSE 8090
|
EXPOSE 8090
|
||||||
CMD ["java", "-jar", "task-manager-server.jar"]
|
CMD ["java", "-jar", "task-manager-server.jar","--spring.profiles.active=docker"]
|
||||||
# 指定文件名 当前路径
|
# 指定文件名 当前路径
|
||||||
# docker build -t task-manager-server -f Dockerfile-server .
|
# docker build -t task-manager-server -f Dockerfile-server .
|
||||||
# docker run -d -p 8090:8090 --restart unless-stopped -v ./hosts:/etc/hosts --name task-manager-server task-manager-server
|
# docker run -d -p 8090:8090 --restart unless-stopped -v ./hosts:/etc/hosts --name task-manager-server task-manager-server
|
||||||
|
|
After Width: | Height: | Size: 236 KiB |
Before Width: | Height: | Size: 176 KiB After Width: | Height: | Size: 176 KiB |
After Width: | Height: | Size: 107 KiB |
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 118 KiB |
After Width: | Height: | Size: 230 KiB |
|
@ -132,9 +132,9 @@ class OperationButton extends React.Component<OperationButtonProps, OperationMod
|
||||||
</Dropdown>
|
</Dropdown>
|
||||||
{this.state.openModal&&<DetailModelForm
|
{this.state.openModal&&<DetailModelForm
|
||||||
haveButton={false}
|
haveButton={false}
|
||||||
itemId={this.props.itemId}
|
itemId={this.state.operationId === OPERATION_BUTTON_TYPE.UPDATE||this.state.operationId === OPERATION_BUTTON_TYPE.DETAIL?this.props.itemId:undefined}
|
||||||
pPid={this.props.pPid}
|
pPid={this.props.pPid}
|
||||||
pid={this.state.operationId === OPERATION_BUTTON_TYPE.ADD_CHILD ?this.props.itemId:this.props.pid}
|
pid={this.state.operationId === OPERATION_BUTTON_TYPE.ADD_CHILD ?this.props.itemId:undefined}
|
||||||
operationId={this.state.operationId}
|
operationId={this.state.operationId}
|
||||||
description={this.state.operationId === OPERATION_BUTTON_TYPE.DETAIL ? '任务详情' :
|
description={this.state.operationId === OPERATION_BUTTON_TYPE.DETAIL ? '任务详情' :
|
||||||
this.state.operationId === OPERATION_BUTTON_TYPE.ADD_CHILD ? '添加支线任务' :
|
this.state.operationId === OPERATION_BUTTON_TYPE.ADD_CHILD ? '添加支线任务' :
|
||||||
|
|
|
@ -274,7 +274,7 @@ const CalShow: React.FC = () => {
|
||||||
|
|
||||||
}
|
}
|
||||||
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}
|
||||||
reloadData={reloadData} expectedStartTime={expectedStartTime}
|
reloadData={reloadData} expectedStartTime={expectedStartTime}
|
||||||
expectedEndTime={expectedEndTime}/>}
|
expectedEndTime={expectedEndTime}/>}
|
||||||
|
|
|
@ -40,8 +40,7 @@ export type DetailModelFormProps={
|
||||||
export type PidSelectTree= { label: string; value: number;pid:number; children?: PidSelectTree[] }
|
export type PidSelectTree= { label: string; value: number;pid:number; children?: PidSelectTree[] }
|
||||||
|
|
||||||
export const DetailModelForm: React.FC<DetailModelFormProps> = (props) => {
|
export const DetailModelForm: React.FC<DetailModelFormProps> = (props) => {
|
||||||
console.log("DetailModelForm:props:",props,props.itemId!=undefined&&(
|
console.log("DetailModelForm:props:",props)
|
||||||
props.operationId === OPERATION_BUTTON_TYPE.DETAIL || props.operationId === OPERATION_BUTTON_TYPE.UPDATE))
|
|
||||||
const [form] = Form.useForm<DataType>();
|
const [form] = Form.useForm<DataType>();
|
||||||
const [pid, setPid] = useState<number>(props.pid?props.pid:0);
|
const [pid, setPid] = useState<number>(props.pid?props.pid:0);
|
||||||
const [editFormDisable, setEditFormDisable] = useState(props.operationId === OPERATION_BUTTON_TYPE.DETAIL)
|
const [editFormDisable, setEditFormDisable] = useState(props.operationId === OPERATION_BUTTON_TYPE.DETAIL)
|
||||||
|
@ -100,7 +99,7 @@ export const DetailModelForm: React.FC<DetailModelFormProps> = (props) => {
|
||||||
props.reloadData?.();
|
props.reloadData?.();
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
submitter={props.itemId!==undefined&&props.itemId!=-1?{
|
submitter={props.itemId!==undefined&&props.itemId!==-1?{
|
||||||
render: (prop, defaultDoms) => {
|
render: (prop, defaultDoms) => {
|
||||||
return [
|
return [
|
||||||
editFormDisable?<Button
|
editFormDisable?<Button
|
||||||
|
@ -112,7 +111,7 @@ export const DetailModelForm: React.FC<DetailModelFormProps> = (props) => {
|
||||||
>
|
>
|
||||||
编辑
|
编辑
|
||||||
</Button>:undefined,
|
</Button>:undefined,
|
||||||
<Popconfirm
|
props.operationId === OPERATION_BUTTON_TYPE.DETAIL||props.operationId === OPERATION_BUTTON_TYPE.UPDATE?<Popconfirm
|
||||||
key ='delete'
|
key ='delete'
|
||||||
title="删除任务"
|
title="删除任务"
|
||||||
description="确认要删除任务?"
|
description="确认要删除任务?"
|
||||||
|
@ -133,7 +132,7 @@ export const DetailModelForm: React.FC<DetailModelFormProps> = (props) => {
|
||||||
><Button type="primary" danger>
|
><Button type="primary" danger>
|
||||||
删除
|
删除
|
||||||
</Button>
|
</Button>
|
||||||
</Popconfirm>
|
</Popconfirm>:undefined
|
||||||
,
|
,
|
||||||
...defaultDoms
|
...defaultDoms
|
||||||
];
|
];
|
||||||
|
@ -219,7 +218,7 @@ export const DetailModelForm: React.FC<DetailModelFormProps> = (props) => {
|
||||||
}}
|
}}
|
||||||
name="pid"
|
name="pid"
|
||||||
label="父级任务"
|
label="父级任务"
|
||||||
fieldProps={{onSelect: (e,node) => {console.log('onSelect',e,node);setPid(node.pid)}}}
|
fieldProps={{onSelect: (e,node) => {console.log('onSelect',e,node);setPid(e)}}}
|
||||||
disabled ={editFormDisable}
|
disabled ={editFormDisable}
|
||||||
/>
|
/>
|
||||||
<ProFormText
|
<ProFormText
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"lib": ["dom", "dom.iterable", "esnext"],
|
"lib": [
|
||||||
|
"dom",
|
||||||
|
"dom.iterable",
|
||||||
|
"esnext"
|
||||||
|
],
|
||||||
"allowJs": true,
|
"allowJs": true,
|
||||||
"skipLibCheck": true,
|
"skipLibCheck": true,
|
||||||
"strict": true,
|
"strict": true,
|
||||||
|
@ -18,9 +22,19 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"paths": {
|
"paths": {
|
||||||
"@/*": ["./src/*"]
|
"@/*": [
|
||||||
|
"./src/*"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
|
"include": [
|
||||||
"exclude": ["node_modules"]
|
"next-env.d.ts",
|
||||||
|
"**/*.ts",
|
||||||
|
"**/*.tsx",
|
||||||
|
".next/types/**/*.ts",
|
||||||
|
"docker/out/types/**/*.ts"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"node_modules"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|