feat:时间设置
This commit is contained in:
parent
8ab2e8d69c
commit
5848dd2d04
|
@ -8,6 +8,7 @@
|
|||
"name": "assistant-todo",
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"@ant-design/pro-components": "^2.7.1",
|
||||
"@heroicons/react": "^2.0.18",
|
||||
"@tailwindcss/forms": "^0.5.7",
|
||||
"antd": "^5.16.1",
|
||||
|
@ -110,6 +111,276 @@
|
|||
"resolved": "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz",
|
||||
"integrity": "sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA=="
|
||||
},
|
||||
"node_modules/@ant-design/pro-card": {
|
||||
"version": "2.6.1",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-card/-/pro-card-2.6.1.tgz",
|
||||
"integrity": "sha512-LiZwTUFHNU8t7bJsp51DnSmuct2uY2WHxl+dMcWCpsW2V6KRPws4raGo96SDMPfGjwbF0YrMZhR9yO7qmI5nag==",
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^5.0.0",
|
||||
"@ant-design/pro-provider": "2.14.1",
|
||||
"@ant-design/pro-utils": "2.15.7",
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"classnames": "^2.3.2",
|
||||
"omit.js": "^2.0.2",
|
||||
"rc-resize-observer": "^1.0.0",
|
||||
"rc-util": "^5.4.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"react": ">=17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-components": {
|
||||
"version": "2.7.1",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-components/-/pro-components-2.7.1.tgz",
|
||||
"integrity": "sha512-9e1BCrDNZ4NZXt7sY9eotVOFa506Pnwhsg9alRWfAzn36IpLt0o9/VllBSAR3WeGaUn452vEEOWJTsCVW4Jq4w==",
|
||||
"dependencies": {
|
||||
"@ant-design/pro-card": "2.6.1",
|
||||
"@ant-design/pro-descriptions": "2.5.37",
|
||||
"@ant-design/pro-field": "2.14.10",
|
||||
"@ant-design/pro-form": "2.26.0",
|
||||
"@ant-design/pro-layout": "7.19.1",
|
||||
"@ant-design/pro-list": "2.5.52",
|
||||
"@ant-design/pro-provider": "2.14.1",
|
||||
"@ant-design/pro-skeleton": "2.1.11",
|
||||
"@ant-design/pro-table": "3.15.3",
|
||||
"@ant-design/pro-utils": "2.15.7",
|
||||
"@babel/runtime": "^7.16.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"react": ">=17.0.0",
|
||||
"react-dom": ">=17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-descriptions": {
|
||||
"version": "2.5.37",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-descriptions/-/pro-descriptions-2.5.37.tgz",
|
||||
"integrity": "sha512-YaMs0IGQ39n8jMDUQjhpWW6uZMDktgxAAYwUE9s1tF2XK/ySQSdfylsGvMHZFKqWPRnOqNFIYQ1kAcDLIO9KXQ==",
|
||||
"dependencies": {
|
||||
"@ant-design/pro-field": "2.14.10",
|
||||
"@ant-design/pro-form": "2.26.0",
|
||||
"@ant-design/pro-skeleton": "2.1.11",
|
||||
"@ant-design/pro-utils": "2.15.7",
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"rc-resize-observer": "^0.2.3",
|
||||
"rc-util": "^5.0.6"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"react": ">=17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-descriptions/node_modules/rc-resize-observer": {
|
||||
"version": "0.2.6",
|
||||
"resolved": "https://registry.npmmirror.com/rc-resize-observer/-/rc-resize-observer-0.2.6.tgz",
|
||||
"integrity": "sha512-YX6nYnd6fk7zbuvT6oSDMKiZjyngjHoy+fz+vL3Tez38d/G5iGdaDJa2yE7345G6sc4Mm1IGRUIwclvltddhmA==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.1",
|
||||
"classnames": "^2.2.1",
|
||||
"rc-util": "^5.0.0",
|
||||
"resize-observer-polyfill": "^1.5.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=16.9.0",
|
||||
"react-dom": ">=16.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-field": {
|
||||
"version": "2.14.10",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-field/-/pro-field-2.14.10.tgz",
|
||||
"integrity": "sha512-Q5JIfZJheQKbxgpX29xNwQgsP+fA9WYD4ov5QBLBn1ePUqOreXOQK4cLMBPxxD5MOMULihzHoKi3JOBmuyBCUw==",
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^5.0.0",
|
||||
"@ant-design/pro-provider": "2.14.1",
|
||||
"@ant-design/pro-utils": "2.15.7",
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"@chenshuai2144/sketch-color": "^1.0.8",
|
||||
"classnames": "^2.3.2",
|
||||
"dayjs": "^1.11.10",
|
||||
"lodash.tonumber": "^4.0.3",
|
||||
"omit.js": "^2.0.2",
|
||||
"rc-util": "^5.4.0",
|
||||
"swr": "^2.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"react": ">=17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-form": {
|
||||
"version": "2.26.0",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-form/-/pro-form-2.26.0.tgz",
|
||||
"integrity": "sha512-K542iiEM0mS/U2iaBHhJjsNinsquy4ZSSfoz6dRdFg6OQEU6+qxx7SpvXpVAGk+CtTxDTmd6u0EKlyVl6shK5Q==",
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^5.0.0",
|
||||
"@ant-design/pro-field": "2.14.10",
|
||||
"@ant-design/pro-provider": "2.14.1",
|
||||
"@ant-design/pro-utils": "2.15.7",
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"@chenshuai2144/sketch-color": "^1.0.7",
|
||||
"@umijs/use-params": "^1.0.9",
|
||||
"classnames": "^2.3.2",
|
||||
"dayjs": "^1.11.10",
|
||||
"lodash.merge": "^4.6.2",
|
||||
"omit.js": "^2.0.2",
|
||||
"rc-resize-observer": "^1.1.0",
|
||||
"rc-util": "^5.0.6"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@types/lodash.merge": "^4.6.7",
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"rc-field-form": "^1.22.0",
|
||||
"react": ">=17.0.0",
|
||||
"react-dom": ">=17.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@types/lodash.merge": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-layout": {
|
||||
"version": "7.19.1",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-layout/-/pro-layout-7.19.1.tgz",
|
||||
"integrity": "sha512-JquPxUMFuEZ0kAgs75ECsRFEgygmXawk/oAvEvKNuNTavrUyU/8EJHN+oAETjKdhtsst0Wp5MJKQqPZAcQdYnA==",
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^5.0.0",
|
||||
"@ant-design/pro-provider": "2.14.1",
|
||||
"@ant-design/pro-utils": "2.15.7",
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"@umijs/route-utils": "^4.0.0",
|
||||
"@umijs/use-params": "^1.0.9",
|
||||
"classnames": "^2.3.2",
|
||||
"lodash.merge": "^4.6.2",
|
||||
"omit.js": "^2.0.2",
|
||||
"path-to-regexp": "2.4.0",
|
||||
"rc-resize-observer": "^1.1.0",
|
||||
"rc-util": "^5.0.6",
|
||||
"swr": "^2.0.0",
|
||||
"warning": "^4.0.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"react": ">=17.0.0",
|
||||
"react-dom": ">=17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-list": {
|
||||
"version": "2.5.52",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-list/-/pro-list-2.5.52.tgz",
|
||||
"integrity": "sha512-Ndro8YKubSQxFDJ3ZTMU9esZJAjye9TqKMLd768ST86nWvSeDrm8A0oUIKtyMgvnbzsh7YXj4JgexGUNJJPaGg==",
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^5.0.0",
|
||||
"@ant-design/pro-card": "2.6.1",
|
||||
"@ant-design/pro-field": "2.14.10",
|
||||
"@ant-design/pro-table": "3.15.3",
|
||||
"@ant-design/pro-utils": "2.15.7",
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"classnames": "^2.3.2",
|
||||
"dayjs": "^1.11.10",
|
||||
"rc-resize-observer": "^1.0.0",
|
||||
"rc-util": "^4.19.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"react": ">=17.0.0",
|
||||
"react-dom": ">=17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-list/node_modules/rc-util": {
|
||||
"version": "4.21.1",
|
||||
"resolved": "https://registry.npmmirror.com/rc-util/-/rc-util-4.21.1.tgz",
|
||||
"integrity": "sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg==",
|
||||
"dependencies": {
|
||||
"add-dom-event-listener": "^1.1.0",
|
||||
"prop-types": "^15.5.10",
|
||||
"react-is": "^16.12.0",
|
||||
"react-lifecycles-compat": "^3.0.4",
|
||||
"shallowequal": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-provider": {
|
||||
"version": "2.14.1",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-provider/-/pro-provider-2.14.1.tgz",
|
||||
"integrity": "sha512-N8hTUNJc7dtIjj79ZFviielizo15nOUyjrmz9Ll0Mn68Btne2FLpf8cKHsUMdA+yLDW9oM0ExcqIWJOKyx0nUg==",
|
||||
"dependencies": {
|
||||
"@ant-design/cssinjs": "^1.11.1",
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"@ctrl/tinycolor": "^3.4.0",
|
||||
"rc-util": "^5.0.1",
|
||||
"swr": "^2.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"react": ">=17.0.0",
|
||||
"react-dom": ">=17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-skeleton": {
|
||||
"version": "2.1.11",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-skeleton/-/pro-skeleton-2.1.11.tgz",
|
||||
"integrity": "sha512-a1drmZSDXHFexFniN1YD7PgYiWvhdBAM9OwzSOO3eXPAltAg2cGcaVBlFmweShN+dupO220RN+6aaLUv3G9B2Q==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"react": ">=17.0.0",
|
||||
"react-dom": ">=17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-table": {
|
||||
"version": "3.15.3",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-table/-/pro-table-3.15.3.tgz",
|
||||
"integrity": "sha512-85LMPOsE8vqnKO0/C/r1fLBMhG5jfBUzSlzO7dtDKNzgR3FIeIdOBm49rtoKJ3sHdf3HV3sFazHkOUv9aXQ6Bg==",
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^5.0.0",
|
||||
"@ant-design/pro-card": "2.6.1",
|
||||
"@ant-design/pro-field": "2.14.10",
|
||||
"@ant-design/pro-form": "2.26.0",
|
||||
"@ant-design/pro-provider": "2.14.1",
|
||||
"@ant-design/pro-utils": "2.15.7",
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"@dnd-kit/core": "^6.0.8",
|
||||
"@dnd-kit/modifiers": "^6.0.1",
|
||||
"@dnd-kit/sortable": "^7.0.2",
|
||||
"@dnd-kit/utilities": "^3.2.1",
|
||||
"classnames": "^2.3.2",
|
||||
"dayjs": "^1.11.10",
|
||||
"lodash.merge": "^4.6.2",
|
||||
"omit.js": "^2.0.2",
|
||||
"rc-resize-observer": "^1.0.0",
|
||||
"rc-util": "^5.0.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"rc-field-form": "^1.22.0",
|
||||
"react": ">=17.0.0",
|
||||
"react-dom": ">=17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/pro-utils": {
|
||||
"version": "2.15.7",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/pro-utils/-/pro-utils-2.15.7.tgz",
|
||||
"integrity": "sha512-VMK1mkb9St4OoEoekW0qUqkKK632XOGjBZusKjlfP9WPwv+MP8bPAB2jOH89JoY8SIQ87Zod6lMgWLMJX3qbOw==",
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^5.0.0",
|
||||
"@ant-design/pro-provider": "2.14.1",
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"classnames": "^2.3.2",
|
||||
"dayjs": "^1.11.10",
|
||||
"lodash.merge": "^4.6.2",
|
||||
"rc-util": "^5.0.6",
|
||||
"safe-stable-stringify": "^2.4.3",
|
||||
"swr": "^2.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"antd": "^4.24.15 || ^5.11.2",
|
||||
"react": ">=17.0.0",
|
||||
"react-dom": ">=17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/react-slick": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/@ant-design/react-slick/-/react-slick-1.1.2.tgz",
|
||||
|
@ -582,6 +853,18 @@
|
|||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@chenshuai2144/sketch-color": {
|
||||
"version": "1.0.9",
|
||||
"resolved": "https://registry.npmmirror.com/@chenshuai2144/sketch-color/-/sketch-color-1.0.9.tgz",
|
||||
"integrity": "sha512-obzSy26cb7Pm7OprWyVpgMpIlrZpZ0B7vbrU0RMbvRg0YAI890S5Xy02Aj1Nhl4+KTbi1lVYHt6HQP8Hm9s+1w==",
|
||||
"dependencies": {
|
||||
"reactcss": "^1.2.3",
|
||||
"tinycolor2": "^1.4.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=16.12.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ctrl/tinycolor": {
|
||||
"version": "3.6.1",
|
||||
"resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
|
||||
|
@ -590,6 +873,68 @@
|
|||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@dnd-kit/accessibility": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/@dnd-kit/accessibility/-/accessibility-3.1.0.tgz",
|
||||
"integrity": "sha512-ea7IkhKvlJUv9iSHJOnxinBcoOI3ppGnnL+VDJ75O45Nss6HtZd8IdN8touXPDtASfeI2T2LImb8VOZcL47wjQ==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=16.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@dnd-kit/core": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/@dnd-kit/core/-/core-6.1.0.tgz",
|
||||
"integrity": "sha512-J3cQBClB4TVxwGo3KEjssGEXNJqGVWx17aRTZ1ob0FliR5IjYgTxl5YJbKTzA6IzrtelotH19v6y7uoIRUZPSg==",
|
||||
"dependencies": {
|
||||
"@dnd-kit/accessibility": "^3.1.0",
|
||||
"@dnd-kit/utilities": "^3.2.2",
|
||||
"tslib": "^2.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=16.8.0",
|
||||
"react-dom": ">=16.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@dnd-kit/modifiers": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/@dnd-kit/modifiers/-/modifiers-6.0.1.tgz",
|
||||
"integrity": "sha512-rbxcsg3HhzlcMHVHWDuh9LCjpOVAgqbV78wLGI8tziXY3+qcMQ61qVXIvNKQFuhj75dSfD+o+PYZQ/NUk2A23A==",
|
||||
"dependencies": {
|
||||
"@dnd-kit/utilities": "^3.2.1",
|
||||
"tslib": "^2.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@dnd-kit/core": "^6.0.6",
|
||||
"react": ">=16.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@dnd-kit/sortable": {
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/@dnd-kit/sortable/-/sortable-7.0.2.tgz",
|
||||
"integrity": "sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==",
|
||||
"dependencies": {
|
||||
"@dnd-kit/utilities": "^3.2.0",
|
||||
"tslib": "^2.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@dnd-kit/core": "^6.0.7",
|
||||
"react": ">=16.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@dnd-kit/utilities": {
|
||||
"version": "3.2.2",
|
||||
"resolved": "https://registry.npmmirror.com/@dnd-kit/utilities/-/utilities-3.2.2.tgz",
|
||||
"integrity": "sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=16.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@emotion/hash": {
|
||||
"version": "0.8.0",
|
||||
"resolved": "https://registry.npmmirror.com/@emotion/hash/-/hash-0.8.0.tgz",
|
||||
|
@ -1407,6 +1752,19 @@
|
|||
"node": "^16.0.0 || >=18.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@umijs/route-utils": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/@umijs/route-utils/-/route-utils-4.0.1.tgz",
|
||||
"integrity": "sha512-+1ixf1BTOLuH+ORb4x8vYMPeIt38n9q0fJDwhv9nSxrV46mxbLF0nmELIo9CKQB2gHfuC4+hww6xejJ6VYnBHQ=="
|
||||
},
|
||||
"node_modules/@umijs/use-params": {
|
||||
"version": "1.0.9",
|
||||
"resolved": "https://registry.npmmirror.com/@umijs/use-params/-/use-params-1.0.9.tgz",
|
||||
"integrity": "sha512-QlN0RJSBVQBwLRNxbxjQ5qzqYIGn+K7USppMoIOVlf7fxXHsnQZ2bEsa6Pm74bt6DVQxpUE8HqvdStn6Y9FV1w==",
|
||||
"peerDependencies": {
|
||||
"react": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@ungap/structured-clone": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
|
||||
|
@ -1484,6 +1842,14 @@
|
|||
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/add-dom-event-listener": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz",
|
||||
"integrity": "sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw==",
|
||||
"dependencies": {
|
||||
"object-assign": "4.x"
|
||||
}
|
||||
},
|
||||
"node_modules/ajv": {
|
||||
"version": "6.12.6",
|
||||
"resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
|
||||
|
@ -4238,14 +4604,17 @@
|
|||
"node_modules/lodash": {
|
||||
"version": "4.17.21",
|
||||
"resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
|
||||
"dev": true
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||
},
|
||||
"node_modules/lodash.merge": {
|
||||
"version": "4.6.2",
|
||||
"resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz",
|
||||
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
|
||||
},
|
||||
"node_modules/lodash.tonumber": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/lodash.tonumber/-/lodash.tonumber-4.0.3.tgz",
|
||||
"integrity": "sha512-SY0SwuPOHRwKcCNTdsntPYb+Zddz5mDUIVFABzRMqmAiL41pMeyoQFGxYAw5zdc9NnH4pbJqiqqp5ckfxa+zSA=="
|
||||
},
|
||||
"node_modules/loose-envify": {
|
||||
"version": "1.4.0",
|
||||
|
@ -4572,6 +4941,11 @@
|
|||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/omit.js": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/omit.js/-/omit.js-2.0.2.tgz",
|
||||
"integrity": "sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg=="
|
||||
},
|
||||
"node_modules/once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
|
||||
|
@ -4701,6 +5075,11 @@
|
|||
"node": ">=16 || 14 >=14.17"
|
||||
}
|
||||
},
|
||||
"node_modules/path-to-regexp": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-2.4.0.tgz",
|
||||
"integrity": "sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w=="
|
||||
},
|
||||
"node_modules/path-type": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz",
|
||||
|
@ -4978,7 +5357,6 @@
|
|||
"version": "15.8.1",
|
||||
"resolved": "https://registry.npmmirror.com/prop-types/-/prop-types-15.8.1.tgz",
|
||||
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"loose-envify": "^1.4.0",
|
||||
"object-assign": "^4.1.1",
|
||||
|
@ -5615,8 +5993,20 @@
|
|||
"node_modules/react-is": {
|
||||
"version": "16.13.1",
|
||||
"resolved": "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz",
|
||||
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
|
||||
},
|
||||
"node_modules/react-lifecycles-compat": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
|
||||
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
|
||||
},
|
||||
"node_modules/reactcss": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmmirror.com/reactcss/-/reactcss-1.2.3.tgz",
|
||||
"integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==",
|
||||
"dependencies": {
|
||||
"lodash": "^4.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/read-cache": {
|
||||
"version": "1.0.0",
|
||||
|
@ -5909,6 +6299,14 @@
|
|||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/safe-stable-stringify": {
|
||||
"version": "2.4.3",
|
||||
"resolved": "https://registry.npmmirror.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz",
|
||||
"integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==",
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/scheduler": {
|
||||
"version": "0.23.0",
|
||||
"resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.23.0.tgz",
|
||||
|
@ -5984,6 +6382,11 @@
|
|||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/shallowequal": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/shallowequal/-/shallowequal-1.1.0.tgz",
|
||||
"integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
|
||||
},
|
||||
"node_modules/shebang-command": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
|
||||
|
@ -6363,6 +6766,18 @@
|
|||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/swr": {
|
||||
"version": "2.2.5",
|
||||
"resolved": "https://registry.npmmirror.com/swr/-/swr-2.2.5.tgz",
|
||||
"integrity": "sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==",
|
||||
"dependencies": {
|
||||
"client-only": "^0.0.1",
|
||||
"use-sync-external-store": "^1.2.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^16.11.0 || ^17.0.0 || ^18.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/synckit": {
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmmirror.com/synckit/-/synckit-0.9.0.tgz",
|
||||
|
@ -6454,6 +6869,11 @@
|
|||
"node": ">=12.22"
|
||||
}
|
||||
},
|
||||
"node_modules/tinycolor2": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmmirror.com/tinycolor2/-/tinycolor2-1.6.0.tgz",
|
||||
"integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="
|
||||
},
|
||||
"node_modules/to-fast-properties": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
|
||||
|
@ -6675,6 +7095,14 @@
|
|||
"punycode": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/use-sync-external-store": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
|
||||
"integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
|
||||
"peerDependencies": {
|
||||
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
|
@ -6690,6 +7118,14 @@
|
|||
"spdx-expression-parse": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/warning": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz",
|
||||
"integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
|
||||
"dependencies": {
|
||||
"loose-envify": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/which": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
"lint": "next lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ant-design/pro-components": "^2.7.1",
|
||||
"@heroicons/react": "^2.0.18",
|
||||
"@tailwindcss/forms": "^0.5.7",
|
||||
"antd": "^5.16.1",
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
export const DATE_TIME='yyyy-MM-dd HH:mm:ss'
|
|
@ -1,4 +1,5 @@
|
|||
import React from "react";
|
||||
import {Dayjs} from "dayjs";
|
||||
|
||||
export type Invoice = {
|
||||
id: string;
|
||||
|
@ -40,8 +41,10 @@ export type DataType ={
|
|||
action?:React.ReactNode;
|
||||
expectedStartTime?:Date;
|
||||
expectedEndTime?:Date;
|
||||
expectedTimeRange?:(string|Dayjs)[];
|
||||
actualStartTime?:Date;
|
||||
actualEndTime?:Date;
|
||||
actualTimeRange?:(string|Dayjs)[]
|
||||
children: DataType[]|undefined;
|
||||
}
|
||||
export type DictType={
|
||||
|
|
|
@ -136,33 +136,6 @@ export const taskPriorityList: DictType[] = [
|
|||
color: 'green'
|
||||
}
|
||||
]
|
||||
export const TASK_PRIORITY_LIST: DictType[] = [
|
||||
{
|
||||
id: 0,
|
||||
code: '0',
|
||||
name: '重要紧急',
|
||||
order: 0,
|
||||
color: 'red'
|
||||
}, {
|
||||
id: 1,
|
||||
code: '1',
|
||||
name: '重要不紧急',
|
||||
order: 1,
|
||||
color: 'yellow'
|
||||
}, {
|
||||
id: 2,
|
||||
code: '2',
|
||||
name: '不重要紧急',
|
||||
order: 2,
|
||||
color: 'gary'
|
||||
}, {
|
||||
id: 3,
|
||||
code: '3',
|
||||
name: '不重要不紧急',
|
||||
order: 3,
|
||||
color: 'green'
|
||||
}
|
||||
]
|
||||
// 0,暂存,1,提交,2,审核,3通过4拒绝5排期中,6进行中,7完成,8bug修复,9修复完成,10确认,11,上线运行
|
||||
export const taskStateList: DictType[] = [
|
||||
{
|
||||
|
|
|
@ -1,12 +1,69 @@
|
|||
'use client'
|
||||
import SideNav from '@/app/ui/dashboard/sidenav';
|
||||
import TreeTable from "@/app/ui/task/project/TreeTable";
|
||||
import '@/app/ui/task/four/index.modules.css'
|
||||
import {useEffect} from "react";
|
||||
|
||||
export default function Layout({children}: { children: React.ReactNode }) {
|
||||
// useEffect(() => {
|
||||
// // @ts-ignore
|
||||
// const divWidth = document.getElementById('myDiv').offsetWidth;
|
||||
// // @ts-ignore
|
||||
// document.getElementById('mySpan').style.fontSize = divWidth + 'px';
|
||||
// }, []); // 这里的空数组表示只在组件挂载时执行一次
|
||||
//
|
||||
// return (
|
||||
// <>
|
||||
// <div id="myDiv" style={{width: '200px'}}>
|
||||
// Content
|
||||
// </div>
|
||||
// <span id="mySpan">Content</span>
|
||||
// </>
|
||||
// )
|
||||
|
||||
useEffect(() => {
|
||||
// @ts-ignore
|
||||
const divWidth = document.getElementById('tenUp').offsetWidth;
|
||||
// @ts-ignore
|
||||
document.getElementById('upUp').style.fontSize = divWidth + 'px';
|
||||
// @ts-ignore
|
||||
document.getElementById('upDown').style.fontSize = divWidth + 'px';
|
||||
// @ts-ignore
|
||||
const divHeight = document.getElementById('left').offsetHeight;
|
||||
// @ts-ignore
|
||||
document.getElementById('tenLeft').style.fontSize = divHeight/6*4 + 'px';
|
||||
}, []);
|
||||
|
||||
export default function Layout({ children }: { children: React.ReactNode }) {
|
||||
return (
|
||||
<div className="flex h-screen flex-col md:flex-row md:overflow-hidden">
|
||||
<div className="w-full flex-none md:w-64">
|
||||
<SideNav />
|
||||
<div>
|
||||
<div className='firstRow' style={{display: 'flex'}}>
|
||||
<div className='leftUp'>
|
||||
<TreeTable/>
|
||||
</div>
|
||||
|
||||
<div id='tenUp' className='up'>
|
||||
<span id='upUp'>向上重要</span>
|
||||
</div>
|
||||
|
||||
<div className='rightUp'>
|
||||
<TreeTable/>
|
||||
</div>
|
||||
</div>
|
||||
<div id='left' className='left'>
|
||||
<span id='tenLeft' style={{fontSize:'1vh'}}>←向左紧急←向左紧急←向左←向左紧急←向左紧急←向左紧急</span>
|
||||
</div>
|
||||
<div className='secondRow' style={{display: 'flex'}}>
|
||||
<div className='leftDown'>
|
||||
<TreeTable/>
|
||||
</div>
|
||||
<div className='up'>
|
||||
<span id='upDown'>向上重要</span>
|
||||
</div>
|
||||
{/*<div style={{float:'left',width:'48%',height: '48vh',background:"gray"}}>{children}</div>*/}
|
||||
<div className='rightDown'>
|
||||
<TreeTable/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex-grow p-6 md:overflow-y-auto md:p-12">{children}</div>
|
||||
</div>
|
||||
);
|
||||
}
|
|
@ -1,7 +1,12 @@
|
|||
import SideNav from '@/app/ui/dashboard/sidenav';
|
||||
'use client'
|
||||
import React from "react";
|
||||
import {TitleOperation} from "@/app/ui/task/TitleOperation";
|
||||
|
||||
export default function Layout({children}: { children: React.ReactNode }) {
|
||||
|
||||
export default function Layout({ children }: { children: React.ReactNode }) {
|
||||
return (
|
||||
<div>{children}</div>
|
||||
<div>
|
||||
<TitleOperation/>
|
||||
{children}</div>
|
||||
);
|
||||
}
|
|
@ -1,10 +1,11 @@
|
|||
import TreeTable from "@/app/ui/task/project/TreeTable";
|
||||
import TreeTablePro from "@/app/ui/task/project/TreeTablePro";
|
||||
|
||||
const Page: React.FC = () => {
|
||||
|
||||
return (
|
||||
<>
|
||||
<TreeTable/>
|
||||
<TreeTablePro/>
|
||||
{/*<TreeTable/>*/}
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
div{
|
||||
overflow: auto;
|
||||
}
|
||||
.leftUp{
|
||||
width: 49%;
|
||||
height: 45vh;
|
||||
background: red;
|
||||
}
|
||||
.up{
|
||||
width: 2%;
|
||||
height: 45vh;
|
||||
background: dodgerblue;
|
||||
}
|
||||
.rightUp{
|
||||
width: 49%;
|
||||
height: 45vh;
|
||||
background: yellow;
|
||||
}
|
||||
.left{
|
||||
width: 100%;
|
||||
height: 4vh;
|
||||
background: dodgerblue;
|
||||
overflow: hidden;
|
||||
}
|
||||
.leftDown{
|
||||
width: 49%;
|
||||
height: 45vh;
|
||||
background: gray;
|
||||
}
|
||||
.rightDown{
|
||||
/*float: right;*/
|
||||
width: 49%;
|
||||
height: 45vh;
|
||||
background: green;
|
||||
}
|
||||
|
||||
/*#tenLeft {*/
|
||||
/* display: inline-block;*/
|
||||
/* animation: scroll 10s linear infinite; !* 控制滚动速度和循环 *!*/
|
||||
/*}*/
|
||||
|
||||
/*@keyframes scroll {*/
|
||||
/* 0% { transform: translateX(0); } !* 开始位置 *!*/
|
||||
/* 100% { transform: translateX(-100%); } !* 结束位置 *!*/
|
||||
/*}*/
|
|
@ -1,5 +1,6 @@
|
|||
'use client'
|
||||
import React, {useEffect, useState} from 'react';
|
||||
import '@/app/ui/task/project/detailForm.modules.css'
|
||||
import {PlusOutlined} from '@ant-design/icons';
|
||||
import {
|
||||
Button,
|
||||
|
@ -28,6 +29,7 @@ import {
|
|||
updateTask
|
||||
} from "@/app/lib/task/project/data";
|
||||
import {DataType, DictType} from "@/app/lib/definitions";
|
||||
import {DATE_TIME} from "@/app/lib/constants";
|
||||
|
||||
export interface DetailFormProps {
|
||||
itemId: number,
|
||||
|
@ -43,7 +45,7 @@ export const DetailForm: React.FC<DetailFormProps> = (props) => {
|
|||
const {RangePicker} = DatePicker;
|
||||
const {TextArea} = Input;
|
||||
// const [taskMessage,setTaskMessage]=useState<any>({name:"useState没效果吗,是这样的"});
|
||||
let taskMessage;
|
||||
// let taskMessage;
|
||||
useEffect(() => {
|
||||
if (props.operationId === OPERATION_BUTTON_TYPE.DETAIL||props.operationId === OPERATION_BUTTON_TYPE.UPDATE) {
|
||||
getTask(props.itemId).then(task => {
|
||||
|
@ -52,6 +54,10 @@ export const DetailForm: React.FC<DetailFormProps> = (props) => {
|
|||
// setTaskMessage(task.data)
|
||||
task.data.state=taskStateList.find(taskState=>taskState.code===task.data.state?.toString())?.name;
|
||||
task.data.priority=taskPriorityList.find(taskPriority=>taskPriority.code===task.data.priority?.toString())?.name;
|
||||
task.data.actualTimeRange = [task.data.expectedStartTime?dayjs(task.data.expectedStartTime,DATE_TIME):'',
|
||||
task.data.expectedEndTime?dayjs(task.data.expectedEndTime,DATE_TIME):''];
|
||||
task.data.expectedTimeRange = [task.data.actualStartTime?dayjs(task.data.actualStartTime,DATE_TIME):'',
|
||||
task.data.actualEndTime?dayjs(task.data.actualEndTime,DATE_TIME):''];
|
||||
form.setFieldsValue(task.data)
|
||||
}else{
|
||||
message.error(task.status.message);
|
||||
|
@ -108,20 +114,20 @@ export const DetailForm: React.FC<DetailFormProps> = (props) => {
|
|||
type: values.type,
|
||||
children: []
|
||||
}
|
||||
if (values.expectedStartTime) {
|
||||
if (values.expectedStartTime[0]) {
|
||||
request.expectedStartTime = values.expectedStartTime[0]
|
||||
if (values.expectedTimeRange) {
|
||||
if (values.expectedTimeRange[0]) {
|
||||
request.expectedStartTime = values.expectedTimeRange[0]
|
||||
}
|
||||
if (values.expectedStartTime[1]) {
|
||||
request.expectedEndTime = values.expectedStartTime[1]
|
||||
if (values.expectedTimeRange[1]) {
|
||||
request.expectedEndTime = values.expectedTimeRange[1]
|
||||
}
|
||||
}
|
||||
if (values.actualStartTime) {
|
||||
if (values.actualStartTime[0]) {
|
||||
request.actualStartTime = values.actualStartTime[0]
|
||||
if (values.actualTimeRange) {
|
||||
if (values.actualTimeRange[0]) {
|
||||
request.actualStartTime = values.actualTimeRange[0]
|
||||
}
|
||||
if (values.actualStartTime[1]) {
|
||||
request.actualEndTime = values.actualStartTime[1]
|
||||
if (values.actualTimeRange[1]) {
|
||||
request.actualEndTime = values.actualTimeRange[1]
|
||||
}
|
||||
}
|
||||
if (props.operationId===OPERATION_BUTTON_TYPE.ADD_CHILD){
|
||||
|
@ -164,12 +170,12 @@ export const DetailForm: React.FC<DetailFormProps> = (props) => {
|
|||
{/*</Checkbox>*/}
|
||||
<Form
|
||||
labelCol={{span: 4}}
|
||||
wrapperCol={{span: 14}}
|
||||
wrapperCol={{span: 18}}
|
||||
layout="horizontal"
|
||||
disabled={componentDisabled}
|
||||
size='large'
|
||||
onFinish={onFinish}
|
||||
initialValues={taskMessage}
|
||||
// initialValues={taskMessage}
|
||||
form={form}
|
||||
// style={{maxWidth: '70%'}}
|
||||
>
|
||||
|
@ -215,7 +221,7 @@ export const DetailForm: React.FC<DetailFormProps> = (props) => {
|
|||
</Select>
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item<DataType> name={['expectedStartTime']} label="期望">
|
||||
<Form.Item<DataType> name={['expectedTimeRange']} label="期望">
|
||||
<RangePicker
|
||||
disabledDate={disabledDate}
|
||||
disabledTime={disabledRangeTime}
|
||||
|
@ -228,7 +234,7 @@ export const DetailForm: React.FC<DetailFormProps> = (props) => {
|
|||
// format="YYYY-MM-DD HH:mm:ss"
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item<DataType> name='actualStartTime' label="实际">
|
||||
<Form.Item<DataType> name='actualTimeRange' label="实际">
|
||||
<RangePicker
|
||||
disabledDate={disabledDate}
|
||||
disabledTime={disabledRangeTime}
|
||||
|
|
|
@ -3,6 +3,7 @@ import {Button, Dropdown, MenuProps, message, Modal, Popconfirm, Space} from "an
|
|||
import {DownOutlined, QuestionCircleOutlined} from "@ant-design/icons";
|
||||
import {DetailForm} from "@/app/ui/task/project/DetailForm";
|
||||
import {deleteTask, OPERATION_BUTTON_TYPE} from "@/app/lib/task/project/data";
|
||||
import Link from "next/link";
|
||||
|
||||
export interface OperationButtonProps {
|
||||
itemId: number,
|
||||
|
@ -91,7 +92,7 @@ class OperationButton extends React.Component<OperationButtonProps, OperationMod
|
|||
},
|
||||
{
|
||||
key: OPERATION_BUTTON_TYPE.SHOW_FOUR,
|
||||
label: <a>四象限显示子任务</a>,
|
||||
label: <Link href={`/task/four`} >四象限显示子任务</Link>,
|
||||
}
|
||||
];
|
||||
return <Fragment>
|
||||
|
|
|
@ -2,9 +2,10 @@
|
|||
import React, {useEffect, useState} from 'react';
|
||||
import {Button, ColorPicker, Dropdown, MenuProps, Space, Switch, Table} from 'antd';
|
||||
import type { TableColumnsType, TableProps } from 'antd';
|
||||
import {taskPriorityList, taskStateList,TASK_PRIORITY_LIST, taskTreeResult} from "@/app/lib/task/project/data";
|
||||
import {taskPriorityList, taskStateList, taskTreeResult} from "@/app/lib/task/project/data";
|
||||
import {DataType, ResponseVO, ResultPage} from "@/app/lib/definitions";
|
||||
import {DownOutlined} from "@ant-design/icons";
|
||||
import { useSearchParams, usePathname, useRouter } from 'next/navigation';
|
||||
import OperationButton from "@/app/ui/task/project/OperationButton";
|
||||
|
||||
type TableRowSelection<T> = TableProps<T>['rowSelection'];
|
||||
|
@ -65,12 +66,10 @@ const rowSelection: TableRowSelection<DataType> = {
|
|||
};
|
||||
|
||||
const TreeTable: React.FC = () => {
|
||||
console.log("TreeTable: React.FC ",TASK_PRIORITY_LIST,taskPriorityList)
|
||||
function recursionActionChild(children:DataType[]){
|
||||
if (children.length===0){
|
||||
return;
|
||||
}
|
||||
console.log("TreeTable: React.FC :recursionActionChild",TASK_PRIORITY_LIST,taskPriorityList)
|
||||
for (let item of children) {
|
||||
item.key=item.id;
|
||||
item.action=(<OperationButton itemId={item.id} pid={item.pid} pPid={item.pPid} refreshDate={refreshDate}/>)
|
||||
|
@ -103,10 +102,7 @@ const TreeTable: React.FC = () => {
|
|||
{/*<Space align="center" style={{ marginBottom: 16 }}>*/}
|
||||
{/* CheckStrictly: <Switch checked={checkStrictly} onChange={setCheckStrictly} />*/}
|
||||
{/*</Space>*/}
|
||||
<Button type="primary">添加主线任务</Button>
|
||||
<Button type="primary">列表显示</Button>
|
||||
<Button type="primary">四象限显示</Button>
|
||||
<ColorPicker defaultValue="#1677ff" showText/>
|
||||
{/*<ColorPicker defaultValue="#1677ff" showText/>*/}
|
||||
<Table
|
||||
columns={columns}
|
||||
// rowSelection={{ ...rowSelection, checkStrictly}}
|
||||
|
|
|
@ -0,0 +1,221 @@
|
|||
'use client'
|
||||
import { EllipsisOutlined, PlusOutlined } from '@ant-design/icons';
|
||||
import type { ActionType, ProColumns } from '@ant-design/pro-components';
|
||||
import { ProTable, TableDropdown } from '@ant-design/pro-components';
|
||||
import { Button, Dropdown, Space, Tag } from 'antd';
|
||||
import React, { useRef } from 'react';
|
||||
import {DataType} from "@/app/lib/definitions";
|
||||
import {taskPriorityList, taskStateList, taskTreeResult} from "@/app/lib/task/project/data";
|
||||
const columns: ProColumns<DataType>[] = [
|
||||
{
|
||||
title: '任务编码',
|
||||
dataIndex: 'code',
|
||||
// valueType: 'indexBorder',
|
||||
width: '10%',
|
||||
},
|
||||
{
|
||||
title: '任务名称',
|
||||
dataIndex: 'name',
|
||||
width: '15%',
|
||||
copyable: true,
|
||||
ellipsis: true,
|
||||
tooltip: '标题过长会自动收缩',
|
||||
formItemProps: {
|
||||
rules: [
|
||||
{
|
||||
required: true,
|
||||
message: '此项为必填项',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '任务描述',
|
||||
dataIndex: 'description',
|
||||
},
|
||||
{
|
||||
disable: true,
|
||||
title: '任务状态',
|
||||
dataIndex: 'state',
|
||||
filters: true,
|
||||
onFilter: true,
|
||||
ellipsis: true,
|
||||
valueType: 'select',
|
||||
fieldProps:{options:taskStateList.map(item => {return {label: item.name,value: item.code}})},
|
||||
},
|
||||
{
|
||||
disable: true,
|
||||
title: '优先级',
|
||||
dataIndex: 'priority',
|
||||
valueType: 'select',
|
||||
fieldProps:{options:taskPriorityList.map(item => {return {label: item.name,value: item.code}})},
|
||||
render: (_, record) => (
|
||||
<Space>
|
||||
{
|
||||
<Tag color={taskPriorityList.find(item=> item.code===record.priority?.toString())?.color}
|
||||
key={taskPriorityList.find(item=> item.code===record.priority?.toString())?.code}>
|
||||
{taskPriorityList.find(item=> item.code===record.priority?.toString())?.name}
|
||||
</Tag>
|
||||
}
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: '期望开始时间',
|
||||
dataIndex: 'expectedStartTime',
|
||||
valueType: 'date',
|
||||
hideInTable: true,
|
||||
search: {
|
||||
transform: (value) => {
|
||||
return {
|
||||
startTime: value,
|
||||
};
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// {
|
||||
// title: '创建时间',
|
||||
// dataIndex: 'created_at',
|
||||
// valueType: 'dateRange',
|
||||
// hideInTable: true,
|
||||
// search: {
|
||||
// transform: (value) => {
|
||||
// return {
|
||||
// startTime: value[0],
|
||||
// endTime: value[1],
|
||||
// };
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// {
|
||||
// title: '操作',
|
||||
// valueType: 'option',
|
||||
// key: 'option',
|
||||
// render: (text, record, _, action) => [
|
||||
// <a
|
||||
// key="editable"
|
||||
// onClick={() => {
|
||||
// action?.startEditable?.(record.id);
|
||||
// }}
|
||||
// >
|
||||
// 编辑
|
||||
// </a>,
|
||||
// <a href={record.url} target="_blank" rel="noopener noreferrer" key="view">
|
||||
// 查看
|
||||
// </a>,
|
||||
// <TableDropdown
|
||||
// key="actionGroup"
|
||||
// onSelect={() => action?.reload()}
|
||||
// menus={[
|
||||
// { key: 'copy', name: '复制' },
|
||||
// { key: 'delete', name: '删除' },
|
||||
// ]}
|
||||
// />,
|
||||
// ],
|
||||
// },
|
||||
];
|
||||
|
||||
const TreeTablePro: React.FC = () => {
|
||||
const actionRef = useRef<ActionType>();
|
||||
return (
|
||||
<ProTable<DataType>
|
||||
columns={columns}
|
||||
actionRef={actionRef}
|
||||
cardBordered
|
||||
request={async (params, sort, filter) => {
|
||||
console.log(sort, filter);
|
||||
// await waitTime(2000);
|
||||
// return axios.post<{
|
||||
// data: GithubIssueItem[];
|
||||
// }>('https://proapi.azurewebsites.net/github/issues', {
|
||||
// params,
|
||||
// });
|
||||
const response = await taskTreeResult()
|
||||
// axios.post('https://proapi.azurewebsites.net/github/issues', {
|
||||
// params,
|
||||
// });
|
||||
return {
|
||||
data:response.data.content,
|
||||
success: response.status.success,
|
||||
}
|
||||
// return response.data;
|
||||
}}
|
||||
editable={{
|
||||
type: 'multiple',
|
||||
}}
|
||||
columnsState={{
|
||||
persistenceKey: 'pro-table-singe-demos',
|
||||
persistenceType: 'localStorage',
|
||||
defaultValue: {
|
||||
option: { fixed: 'right', disable: true },
|
||||
},
|
||||
onChange(value) {
|
||||
console.log('value: ', value);
|
||||
},
|
||||
}}
|
||||
rowKey="id"
|
||||
search={{
|
||||
labelWidth: 'auto',
|
||||
}}
|
||||
options={{
|
||||
setting: {
|
||||
listsHeight: 400,
|
||||
},
|
||||
}}
|
||||
form={{
|
||||
// 由于配置了 transform,提交的参与与定义的不同这里需要转化一下
|
||||
syncToUrl: (values, type) => {
|
||||
if (type === 'get') {
|
||||
return {
|
||||
...values,
|
||||
created_at: [values.startTime, values.endTime],
|
||||
};
|
||||
}
|
||||
return values;
|
||||
},
|
||||
}}
|
||||
pagination={{
|
||||
pageSize: 5,
|
||||
onChange: (page) => console.log(page),
|
||||
}}
|
||||
dateFormatter="string"
|
||||
headerTitle="任务管理"
|
||||
toolBarRender={() => [
|
||||
<Button
|
||||
key="button"
|
||||
icon={<PlusOutlined />}
|
||||
onClick={() => {
|
||||
actionRef.current?.reload();
|
||||
}}
|
||||
type="primary"
|
||||
>
|
||||
新建
|
||||
</Button>,
|
||||
// <Dropdown
|
||||
// key="menu"
|
||||
// menu={{
|
||||
// items: [
|
||||
// {
|
||||
// label: '1st item',
|
||||
// key: '1',
|
||||
// },
|
||||
// {
|
||||
// label: '2nd item',
|
||||
// key: '1',
|
||||
// },
|
||||
// {
|
||||
// label: '3rd item',
|
||||
// key: '1',
|
||||
// },
|
||||
// ],
|
||||
// }}
|
||||
// >
|
||||
// <Button>
|
||||
// <EllipsisOutlined />
|
||||
// </Button>
|
||||
// </Dropdown>,
|
||||
]}></ProTable>
|
||||
);
|
||||
};
|
||||
export default TreeTablePro
|
|
@ -0,0 +1,3 @@
|
|||
.ant-picker-range-separator{
|
||||
width: 60px;
|
||||
}
|
Loading…
Reference in New Issue