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

|
||||

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

|
||||

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

|
||||

|
||||

|
||||
## 项目启动
|
||||
### 后端服务启动
|
||||
1. 后端启动应用需求:docker,redis,mysql8。
|
||||
|
|
|
@ -2,7 +2,7 @@ FROM openjdk:8
|
|||
WORKDIR /app
|
||||
COPY task-manager-server.jar /app/task-manager-server.jar
|
||||
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 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>
|
||||
{this.state.openModal&&<DetailModelForm
|
||||
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}
|
||||
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}
|
||||
description={this.state.operationId === OPERATION_BUTTON_TYPE.DETAIL ? '任务详情' :
|
||||
this.state.operationId === OPERATION_BUTTON_TYPE.ADD_CHILD ? '添加支线任务' :
|
||||
|
|
|
@ -274,7 +274,7 @@ const CalShow: React.FC = () => {
|
|||
|
||||
}
|
||||
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}
|
||||
reloadData={reloadData} expectedStartTime={expectedStartTime}
|
||||
expectedEndTime={expectedEndTime}/>}
|
||||
|
|
|
@ -40,8 +40,7 @@ export type DetailModelFormProps={
|
|||
export type PidSelectTree= { label: string; value: number;pid:number; children?: PidSelectTree[] }
|
||||
|
||||
export const DetailModelForm: React.FC<DetailModelFormProps> = (props) => {
|
||||
console.log("DetailModelForm:props:",props,props.itemId!=undefined&&(
|
||||
props.operationId === OPERATION_BUTTON_TYPE.DETAIL || props.operationId === OPERATION_BUTTON_TYPE.UPDATE))
|
||||
console.log("DetailModelForm:props:",props)
|
||||
const [form] = Form.useForm<DataType>();
|
||||
const [pid, setPid] = useState<number>(props.pid?props.pid:0);
|
||||
const [editFormDisable, setEditFormDisable] = useState(props.operationId === OPERATION_BUTTON_TYPE.DETAIL)
|
||||
|
@ -100,7 +99,7 @@ export const DetailModelForm: React.FC<DetailModelFormProps> = (props) => {
|
|||
props.reloadData?.();
|
||||
},
|
||||
}}
|
||||
submitter={props.itemId!==undefined&&props.itemId!=-1?{
|
||||
submitter={props.itemId!==undefined&&props.itemId!==-1?{
|
||||
render: (prop, defaultDoms) => {
|
||||
return [
|
||||
editFormDisable?<Button
|
||||
|
@ -112,7 +111,7 @@ export const DetailModelForm: React.FC<DetailModelFormProps> = (props) => {
|
|||
>
|
||||
编辑
|
||||
</Button>:undefined,
|
||||
<Popconfirm
|
||||
props.operationId === OPERATION_BUTTON_TYPE.DETAIL||props.operationId === OPERATION_BUTTON_TYPE.UPDATE?<Popconfirm
|
||||
key ='delete'
|
||||
title="删除任务"
|
||||
description="确认要删除任务?"
|
||||
|
@ -133,7 +132,7 @@ export const DetailModelForm: React.FC<DetailModelFormProps> = (props) => {
|
|||
><Button type="primary" danger>
|
||||
删除
|
||||
</Button>
|
||||
</Popconfirm>
|
||||
</Popconfirm>:undefined
|
||||
,
|
||||
...defaultDoms
|
||||
];
|
||||
|
@ -219,7 +218,7 @@ export const DetailModelForm: React.FC<DetailModelFormProps> = (props) => {
|
|||
}}
|
||||
name="pid"
|
||||
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}
|
||||
/>
|
||||
<ProFormText
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"lib": ["dom", "dom.iterable", "esnext"],
|
||||
"lib": [
|
||||
"dom",
|
||||
"dom.iterable",
|
||||
"esnext"
|
||||
],
|
||||
"allowJs": true,
|
||||
"skipLibCheck": true,
|
||||
"strict": true,
|
||||
|
@ -18,9 +22,19 @@
|
|||
}
|
||||
],
|
||||
"paths": {
|
||||
"@/*": ["./src/*"]
|
||||
"@/*": [
|
||||
"./src/*"
|
||||
]
|
||||
}
|
||||
},
|
||||
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
|
||||
"exclude": ["node_modules"]
|
||||
"include": [
|
||||
"next-env.d.ts",
|
||||
"**/*.ts",
|
||||
"**/*.tsx",
|
||||
".next/types/**/*.ts",
|
||||
"docker/out/types/**/*.ts"
|
||||
],
|
||||
"exclude": [
|
||||
"node_modules"
|
||||
]
|
||||
}
|
||||
|
|