feat:协作计划按钮处理
This commit is contained in:
parent
354fb92d28
commit
e1a40a8980
|
@ -1,7 +1,7 @@
|
|||
import {unstable_noStore as noStore} from 'next/cache';
|
||||
import {AxiosResponse} from "axios";
|
||||
import {httpReq} from "@/utils/axiosReq";
|
||||
import {DataType, DictType, Request, ResponseVO, ResultPage} from "@/lib/definitions";
|
||||
import {DataType, DictType, Request, ResponseVO, ResultPage, TaskMessage} from "@/lib/definitions";
|
||||
import {TaskWebSelectVO} from "@/lib/task/project/definitions";
|
||||
|
||||
export async function getTaskTreeResult(requestParam: string): Promise<ResponseVO<ResultPage<DataType>>> {
|
||||
|
@ -52,12 +52,20 @@ export async function getTask(id: string): Promise<ResponseVO<DataType>> {
|
|||
return response.data;
|
||||
}
|
||||
|
||||
export async function addTask(task: DataType): Promise<ResponseVO<string>> {
|
||||
export function addTask(task: DataType): Promise<AxiosResponse<ResponseVO<TaskMessage>>> {
|
||||
noStore();
|
||||
// 使用 Axios 发送 POST 请求添加数据
|
||||
const response: AxiosResponse<ResponseVO<string>> = await httpReq.post(process.env.NEXT_PUBLIC_TODO_REQUEST_URL + '/task', task);
|
||||
// 从响应中提取数据并返回
|
||||
return response.data;
|
||||
switch(task.taskType){
|
||||
// 常规任务
|
||||
case '0':return httpReq.post(process.env.NEXT_PUBLIC_TODO_REQUEST_URL + '/V2/task', task);
|
||||
// 团队任务
|
||||
case '1':return httpReq.post(process.env.NEXT_PUBLIC_TODO_REQUEST_URL + '/V2/task', task);
|
||||
// 顺序
|
||||
case '2':return httpReq.post(process.env.NEXT_PUBLIC_TODO_REQUEST_URL + '/task/step/sort', task);
|
||||
// 周期
|
||||
case '3':return httpReq.post(process.env.NEXT_PUBLIC_TODO_REQUEST_URL + '/task/schedule', task);
|
||||
default:throw new Error("创建任务必选任务类型");
|
||||
}
|
||||
}
|
||||
|
||||
export async function updateTask(task: DataType): Promise<ResponseVO<string>> {
|
||||
|
|
|
@ -268,6 +268,7 @@ const CalShow: React.FC = () => {
|
|||
{open && <DetailModelForm operationId={operationId} description={description} open={open} haveButton={false}
|
||||
itemId={itemId}
|
||||
reloadData={reloadData} expectedStartTime={expectedStartTime}
|
||||
closeOpen={()=>setOpen(false)}
|
||||
expectedEndTime={expectedEndTime}/>}
|
||||
<DragAndDropCalendar
|
||||
// 本地设置
|
||||
|
|
|
@ -35,6 +35,7 @@ export type DetailModelFormProps = {
|
|||
open: boolean,
|
||||
// 使用按钮操作
|
||||
haveButton: boolean,
|
||||
closeOpen?: () => void,
|
||||
expectedStartTime?: Dayjs,
|
||||
expectedEndTime?: Dayjs,
|
||||
// 重新加载数据
|
||||
|
@ -44,14 +45,12 @@ export type PidSelectTree = { label: string; value: string; pid: string; childre
|
|||
|
||||
export const DetailModelForm: React.FC<DetailModelFormProps> = (props) => {
|
||||
console.log("DetailModelForm:props:", props)
|
||||
const [closeButton,setCloseButton] =useState(false)
|
||||
const [form] = Form.useForm<DataType>();
|
||||
const [requestTask, setRequestTask] = useState<DataType>()
|
||||
const [editFormDisable, setEditFormDisable] = useState(props.operationId === OPERATION_BUTTON_TYPE.DETAIL)
|
||||
// 团队第一层 pid必须为0
|
||||
const [taskType, setTaskType] = useState('0')
|
||||
useEffect(() => {
|
||||
setCloseButton(false)
|
||||
if (props.itemId != undefined && (
|
||||
props.operationId === OPERATION_BUTTON_TYPE.DETAIL || props.operationId === OPERATION_BUTTON_TYPE.UPDATE)) {
|
||||
getTask(props.itemId).then(task => {
|
||||
|
@ -106,7 +105,7 @@ export const DetailModelForm: React.FC<DetailModelFormProps> = (props) => {
|
|||
return (
|
||||
<ModalForm<DataType>
|
||||
title={props.description}
|
||||
open={props.open && !props.haveButton&&!closeButton}
|
||||
open={props.open && !props.haveButton}
|
||||
trigger={props.haveButton ?
|
||||
<Button type="primary">
|
||||
<PlusOutlined/>
|
||||
|
@ -115,22 +114,16 @@ export const DetailModelForm: React.FC<DetailModelFormProps> = (props) => {
|
|||
}
|
||||
form={form}
|
||||
autoFocusFirstInput
|
||||
onOpenChange={(state)=>{
|
||||
console.log("state",{state})
|
||||
if(!state) {
|
||||
setCloseButton(state)
|
||||
}
|
||||
}}
|
||||
modalProps={{
|
||||
destroyOnClose: true,
|
||||
onCancel: () => {
|
||||
console.log('run');
|
||||
props.reloadData?.();
|
||||
},
|
||||
}}
|
||||
readonly={editFormDisable}
|
||||
submitter={props.itemId !== undefined && props.itemId !== '-1' ? {
|
||||
render: (prop, defaultDoms) => {
|
||||
prop.resetButtonProps
|
||||
console.log("submitter render: ", {prop})
|
||||
let result = [
|
||||
editFormDisable ? <Button
|
||||
key="edit"
|
||||
|
@ -138,9 +131,7 @@ export const DetailModelForm: React.FC<DetailModelFormProps> = (props) => {
|
|||
// props.submit();
|
||||
setEditFormDisable(false)
|
||||
}}
|
||||
>
|
||||
编辑
|
||||
</Button> : undefined,
|
||||
>编辑</Button> : undefined,
|
||||
props.operationId === OPERATION_BUTTON_TYPE.DETAIL || props.operationId === OPERATION_BUTTON_TYPE.UPDATE ?
|
||||
<Popconfirm
|
||||
key='delete'
|
||||
|
@ -161,25 +152,46 @@ export const DetailModelForm: React.FC<DetailModelFormProps> = (props) => {
|
|||
}
|
||||
}}
|
||||
>
|
||||
<Button type="primary" danger>
|
||||
<Button type="primary" key="delete" danger>
|
||||
删除
|
||||
</Button>
|
||||
</Popconfirm> : undefined
|
||||
,
|
||||
requestTask&&requestTask.id?<DiaryOption taskId={requestTask.id} taskName={requestTask.name}/>:undefined,
|
||||
</Popconfirm> : undefined,
|
||||
requestTask && requestTask.id ?
|
||||
<DiaryOption key="diary" taskId={requestTask.id} taskName={requestTask.name}/> : undefined,
|
||||
]
|
||||
|
||||
// 非新增或者编辑状态不展示
|
||||
if (!editFormDisable) {
|
||||
result.push(...defaultDoms)
|
||||
} else {
|
||||
result.push(<Button type="primary" onClick={()=>setCloseButton(true)}>
|
||||
关闭
|
||||
</Button>)
|
||||
result.push(<Button type="primary" key="join"
|
||||
onClick={() => props.closeOpen?.()}>邀请小伙伴加入</Button>)
|
||||
result.push(<Button type="primary" key="close"
|
||||
onClick={() => props.closeOpen?.()}>关闭</Button>)
|
||||
}
|
||||
return result;
|
||||
},
|
||||
} : undefined}
|
||||
} : {
|
||||
render: (prop, defaultDoms) => {
|
||||
console.log("submitter render: ", {prop}, {props},{taskType},{defaultDoms})
|
||||
// if ( prop.searchConfig) {
|
||||
// if (taskType == '1') {
|
||||
// prop.searchConfig.submitText = "创建团队"
|
||||
// }else {
|
||||
// prop.searchConfig.submitText = "确认"
|
||||
// }
|
||||
// }
|
||||
// return defaultDoms;
|
||||
const result = defaultDoms.filter(defaultButton=>defaultButton.key=='rest');
|
||||
result.push(<Button type="primary" key="create-team" onClick={() => form.submit()}>{taskType=='1'?"创建团队":"确认"}
|
||||
</Button>)
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
onFinish={async (values) => {
|
||||
{/* onFinish 返回true关闭窗口,范湖false不关闭窗口 */
|
||||
}
|
||||
console.log('Received values of form: ', values, {...requestTask, ...values});
|
||||
if (requestTask) {
|
||||
const {sortNo} = requestTask;
|
||||
|
@ -231,16 +243,16 @@ export const DetailModelForm: React.FC<DetailModelFormProps> = (props) => {
|
|||
} else {
|
||||
await addTask(values).then(response => {
|
||||
console.log('response', response)
|
||||
if (response.status.success) {
|
||||
message.success("添加任务成功:" + response.data)
|
||||
if (response.data.status.success) {
|
||||
message.success(`添加计划${response.data.data.name}成功`)
|
||||
// 树任务重新刷新
|
||||
// 四象限任务重新刷新
|
||||
// 如果可以直接更新列表而不请求。。。。。。
|
||||
console.log('props.reloadData?.()', props.reloadData)
|
||||
result = (taskType!='1')
|
||||
props.reloadData?.()
|
||||
result = true
|
||||
} else {
|
||||
message.error(response.status.message)
|
||||
message.error(response.data.status.message)
|
||||
result = false
|
||||
}
|
||||
}
|
||||
|
@ -259,7 +271,7 @@ export const DetailModelForm: React.FC<DetailModelFormProps> = (props) => {
|
|||
width="sm"
|
||||
name="taskType"
|
||||
label="任务类型"
|
||||
initialValue='0'
|
||||
initialValue={taskType}
|
||||
disabled={editFormDisable}
|
||||
onChange={(value: string, option) => {
|
||||
setTaskType(value)
|
||||
|
@ -330,52 +342,48 @@ export const DetailModelForm: React.FC<DetailModelFormProps> = (props) => {
|
|||
/>
|
||||
</ProForm.Group>
|
||||
<ProFormTextArea
|
||||
// width="md"
|
||||
width="xl"
|
||||
name="description"
|
||||
label="任务描述"
|
||||
// tooltip="最长为 24 位"
|
||||
tooltip="最长255个字"
|
||||
placeholder="请输入任务描述"
|
||||
disabled={editFormDisable}
|
||||
/>
|
||||
|
||||
<ProForm.Group>
|
||||
<ProFormSelect
|
||||
request={async () => taskPriorityList.map(taskState => {
|
||||
return {
|
||||
'label': taskState.name,
|
||||
'value': taskState.code
|
||||
request={async () =>
|
||||
taskPriorityList.map
|
||||
(
|
||||
taskState => {
|
||||
return {'label': taskState.name, 'value': taskState.code}
|
||||
}
|
||||
)
|
||||
}
|
||||
})}
|
||||
width="sm"
|
||||
name="priority"
|
||||
label="任务优先级"
|
||||
initialValue='3'
|
||||
disabled={editFormDisable}
|
||||
rules={[
|
||||
{
|
||||
required: true,
|
||||
message: "请选择计划优先级"
|
||||
}
|
||||
]}
|
||||
rules={[{required: true, message: "请选择计划优先级"}]}
|
||||
/>
|
||||
<ProFormSelect
|
||||
width="sm"
|
||||
options={taskStateList.map(taskState => {
|
||||
return {
|
||||
'label': taskState.name,
|
||||
'value': taskState.code
|
||||
}
|
||||
return {'label': taskState.name, 'value': taskState.code}
|
||||
})}
|
||||
name="state"
|
||||
label="任务状态"
|
||||
initialValue='8'
|
||||
disabled={editFormDisable}
|
||||
rules={[
|
||||
rules={
|
||||
[
|
||||
{
|
||||
required: true,
|
||||
message: "请选择计划状态"
|
||||
}
|
||||
]}
|
||||
]
|
||||
}
|
||||
/>
|
||||
</ProForm.Group>
|
||||
|
||||
|
|
Loading…
Reference in New Issue