From dc23dd14151830101a7680a61bf253fc8d36ca85 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期日, 29 九月 2024 14:05:13 +0800 Subject: [PATCH] # --- zy-acs-flow/src/page/mission/MissionListContent.jsx | 180 --------------------------------------------- zy-acs-flow/src/page/mission/MissionShow.jsx | 40 ++++----- 2 files changed, 19 insertions(+), 201 deletions(-) diff --git a/zy-acs-flow/src/page/mission/MissionListContent.jsx b/zy-acs-flow/src/page/mission/MissionListContent.jsx index 159ca0f..c9f266c 100644 --- a/zy-acs-flow/src/page/mission/MissionListContent.jsx +++ b/zy-acs-flow/src/page/mission/MissionListContent.jsx @@ -59,30 +59,6 @@ && destinationIdx === sourceIdx) { return; } - - - // const sourceDeal = dealsByStage[sourceStage][source.index]; - // const destinationDeal = dealsByStage[destinationStage][ - // destination.index - // ] ?? { - // stage: destinationStage, - // index: undefined, // undefined if dropped after the last item - // }; - - // // compute local state change synchronously - // setDealsByStage( - // updateDealStageLocal( - // sourceDeal, - // { stage: sourceStage, index: source.index }, - // { stage: destinationStage, index: destination.index }, - // dealsByStage - // ) - // ); - - // // persist the changes - // updateDealStage(sourceDeal, destinationDeal, dataProvider).then(() => { - // refetch(); - // }); }; return ( @@ -98,160 +74,4 @@ </Box> </DragDropContext> ); -}; - -const updateDealStageLocal = ( - sourceDeal, - source, - destination, - dealsByStage -) => { - if (source.stage === destination.stage) { - // moving deal inside the same column - const column = dealsByStage[source.stage]; - column.splice(source.index, 1); - column.splice(destination.index ?? column.length + 1, 0, sourceDeal); - return { - ...dealsByStage, - [destination.stage]: column, - }; - } else { - // moving deal across columns - const sourceColumn = dealsByStage[source.stage]; - const destinationColumn = dealsByStage[destination.stage]; - sourceColumn.splice(source.index, 1); - destinationColumn.splice( - destination.index ?? destinationColumn.length + 1, - 0, - sourceDeal - ); - return { - ...dealsByStage, - [source.stage]: sourceColumn, - [destination.stage]: destinationColumn, - }; - } -}; - -const updateDealStage = async ( - source, - destination, - dataProvider -) => { - if (source.stage === destination.stage) { - // moving deal inside the same column - // Fetch all the deals in this stage (because the list may be filtered, but we need to update even non-filtered deals) - const { data: columnDeals } = await dataProvider.getList('deals', { - sort: { field: 'index', order: 'ASC' }, - pagination: { page: 1, perPage: 100 }, - filter: { stage: source.stage }, - }); - const destinationIndex = destination.index ?? columnDeals.length + 1; - - if (source.index > destinationIndex) { - // deal moved up, eg - // dest src - // <------ - // [4, 7, 23, 5] - await Promise.all([ - // for all deals between destinationIndex and source.index, increase the index - ...columnDeals - .filter( - deal => - deal.index >= destinationIndex && - deal.index < source.index - ) - .map(deal => - dataProvider.update('deals', { - id: deal.id, - data: { index: deal.index + 1 }, - previousData: deal, - }) - ), - // for the deal that was moved, update its index - dataProvider.update('deals', { - id: source.id, - data: { index: destinationIndex }, - previousData: source, - }), - ]); - } else { - // deal moved down, e.g - // src dest - // ------> - // [4, 7, 23, 5] - await Promise.all([ - // for all deals between source.index and destinationIndex, decrease the index - ...columnDeals - .filter( - deal => - deal.index <= destinationIndex && - deal.index > source.index - ) - .map(deal => - dataProvider.update('deals', { - id: deal.id, - data: { index: deal.index - 1 }, - previousData: deal, - }) - ), - // for the deal that was moved, update its index - dataProvider.update('deals', { - id: source.id, - data: { index: destinationIndex }, - previousData: source, - }), - ]); - } - } else { - // moving deal across columns - // Fetch all the deals in both stages (because the list may be filtered, but we need to update even non-filtered deals) - const [{ data: sourceDeals }, { data: destinationDeals }] = - await Promise.all([ - dataProvider.getList('deals', { - sort: { field: 'index', order: 'ASC' }, - pagination: { page: 1, perPage: 100 }, - filter: { stage: source.stage }, - }), - dataProvider.getList('deals', { - sort: { field: 'index', order: 'ASC' }, - pagination: { page: 1, perPage: 100 }, - filter: { stage: destination.stage }, - }), - ]); - const destinationIndex = - destination.index ?? destinationDeals.length + 1; - - await Promise.all([ - // decrease index on the deals after the source index in the source columns - ...sourceDeals - .filter(deal => deal.index > source.index) - .map(deal => - dataProvider.update('deals', { - id: deal.id, - data: { index: deal.index - 1 }, - previousData: deal, - }) - ), - // increase index on the deals after the destination index in the destination columns - ...destinationDeals - .filter(deal => deal.index >= destinationIndex) - .map(deal => - dataProvider.update('deals', { - id: deal.id, - data: { index: deal.index + 1 }, - previousData: deal, - }) - ), - // change the dragged deal to take the destination index and column - dataProvider.update('deals', { - id: source.id, - data: { - index: destinationIndex, - stage: destination.stage, - }, - previousData: source, - }), - ]); - } }; diff --git a/zy-acs-flow/src/page/mission/MissionShow.jsx b/zy-acs-flow/src/page/mission/MissionShow.jsx index 287d997..26e8e0e 100644 --- a/zy-acs-flow/src/page/mission/MissionShow.jsx +++ b/zy-acs-flow/src/page/mission/MissionShow.jsx @@ -32,27 +32,25 @@ }; return ( - <> - <Dialog - open={open} - onClose={handleClose} - fullWidth - maxWidth="md" - sx={{ - '& .MuiDialog-container': { - alignItems: 'flex-start', - }, - }} - > - <DialogContent sx={{ padding: 0 }}> - {!!id ? ( - <ShowBase id={id}> - <MissionShowContent handleClose={handleClose} /> - </ShowBase> - ) : null} - </DialogContent> - </Dialog> - </> + <Dialog + open={open} + onClose={handleClose} + fullWidth + maxWidth="md" + sx={{ + '& .MuiDialog-container': { + alignItems: 'flex-start', + }, + }} + > + <DialogContent sx={{ padding: 0 }}> + {!!id ? ( + <ShowBase id={id}> + <MissionShowContent handleClose={handleClose} /> + </ShowBase> + ) : null} + </DialogContent> + </Dialog> ) } -- Gitblit v1.9.1