ЦИТК-994 - панель "Доски задач", добавлено действие "Переместить" для карточек событий

This commit is contained in:
Dollerino 2025-10-30 18:06:00 +03:00
parent 18dac12396
commit 30eb94bfa6
4 changed files with 70 additions and 24 deletions

View File

@ -86,19 +86,18 @@ const CardActions = ({
<Icon>more_vert</Icon>
</IconButton>
<Menu id={`${taskRn}_menu`} anchorEl={cardActions.anchorMenuMethods} open={cardActions.openMethods} onClose={onMethodsMenuClose}>
{menuItems.map(action => {
if (action.visible)
return (
<MenuItem
sx={action.delimiter ? STYLES.MENU_ITEM_DELIMITER : {}}
key={`${taskRn}_${action.method}`}
onClick={() => handleActionClick(action)}
>
<Icon>{action.icon}</Icon>
<Typography pl={1}>{action.name}</Typography>
</MenuItem>
);
})}
{menuItems.map(action =>
action.visible ? (
<MenuItem
sx={action.delimiter ? STYLES.MENU_ITEM_DELIMITER : {}}
key={`${taskRn}_${action.method}`}
onClick={() => handleActionClick(action)}
>
<Icon>{action.icon}</Icon>
<Typography pl={1}>{action.name}</Typography>
</MenuItem>
) : null
)}
</Menu>
</Box>
);
@ -132,7 +131,7 @@ const TaskCard = ({ task, index, onTasksReload, colorRule, pointSettings, onOpen
const [menuItems, setMenuItems] = useState([]);
//Вспомогательные функции открытия раздела
const { handleClientEventsOpen, handleClientEventsNotesOpen, handleFileLinksOpen } = useDictionary();
const { handleClientEventsOpen, handleClientEventsNotesOpen, handleFileLinksOpen, handleCatalogTreeOpen } = useDictionary();
//Состояние вспомогательных функций событий
const { handleTaskStateChange, handleTaskSend } = useTasksFunctions();
@ -182,8 +181,21 @@ const TaskCard = ({ task, index, onTasksReload, colorRule, pointSettings, onOpen
[executeStored]
);
//При перемещении в каталог
const handleTaskMove = useCallback(
async ({ nEvent, nCrn, onReload }) => {
await executeStored({
stored: "PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_MOVE",
args: { NCLNEVENTS: nEvent, NCRN: nCrn }
});
//Если требуется перезагрузить данные
onReload ? onReload() : null;
},
[executeStored]
);
//По нажатию действия "Направить"
const handleSendAction = useCallback(
const handleTaskSendAction = useCallback(
async ({ nEvent, onReload, onNoteOpen }) => {
//Выполняем направление события
handleTaskSend({ nEvent, onReload, onNoteOpen });
@ -246,7 +258,7 @@ const TaskCard = ({ task, index, onTasksReload, colorRule, pointSettings, onOpen
);
//По нажатию действия "Перейти"
const handleStateChangeAction = useCallback(
const handleTaskStateChangeAction = useCallback(
async ({ nEvent, onReload, onNoteOpen }) => {
//Выполняем изменения статуса события
handleTaskStateChange({ nEvent, onReload, onNoteOpen });
@ -254,6 +266,26 @@ const TaskCard = ({ task, index, onTasksReload, colorRule, pointSettings, onOpen
[handleTaskStateChange]
);
//По нажатию действия "Переместить"
const handleTaskMoveAction = useCallback(
async ({ nEvent, onReload }) => {
//Открываем выбор записи из раздела "Каталоги иерархии"
handleCatalogTreeOpen({
sUnitName: "ClientEvents",
nRn: task.nCrn,
callBack: res => {
//Выполняем перемещение события
handleTaskMove({
nEvent,
nCrn: res.outParameters.out_RN,
onReload
});
}
});
},
[handleCatalogTreeOpen, handleTaskMove, task.nCrn]
);
//При изменении ссылок в меню действий (для того, чтобы ссылка на объект менялась при реальной необходимости)
useEffect(() => {
//Устанавливаем список меню
@ -262,22 +294,24 @@ const TaskCard = ({ task, index, onTasksReload, colorRule, pointSettings, onOpen
handleTaskEditAction,
handleTaskEditClientAction,
handleTaskDeleteAction,
handleStateChangeAction,
handleTaskStateChangeAction,
handleTaskReturnAction,
handleSendAction,
handleTaskSendAction,
handleEventNotesOpenAction,
handleTaskFileLinksOpenAction
handleTaskFileLinksOpenAction,
handleTaskMoveAction
)
);
}, [
handleEventNotesOpenAction,
handleTaskFileLinksOpenAction,
handleSendAction,
handleStateChangeAction,
handleTaskSendAction,
handleTaskStateChangeAction,
handleTaskDeleteAction,
handleTaskEditAction,
handleTaskEditClientAction,
handleTaskReturnAction
handleTaskReturnAction,
handleTaskMoveAction
]);
//Генерация содержимого

View File

@ -57,7 +57,8 @@ const useDictionary = () => {
showMethod: "main",
inputParameters: [
{ name: "in_DOCNAME", value: prms.sUnitName },
{ name: "in_NAME", value: prms.sName }
{ name: "in_NAME", value: prms.sName },
{ name: "in_RN", value: prms.nRn }
],
callBack: res => {
res.success ? prms.callBack(res) : null;

View File

@ -325,6 +325,7 @@ const useTasks = (filterValues, ordersValues) => {
name: task.SPREF_NUMB,
nRn: task.NRN,
sCrn: "",
nCrn: task.NCRN,
sPrefix: task.SEVPREF,
sNumber: task.SEVNUMB,
sType: task.SEVTYPE_CODE,

View File

@ -205,7 +205,7 @@ export const convertFilterValuesToArray = filterValues => {
};
//Формирование массива действий карточки события
export const makeCardActionsArray = (onEdit, onEditClient, onDelete, onStateChange, onReturn, onSend, onNotesOpen, onFileLinksOpen) => {
export const makeCardActionsArray = (onEdit, onEditClient, onDelete, onStateChange, onReturn, onSend, onNotesOpen, onFileLinksOpen, onMove) => {
//Формируем список действий карточки
return [
{
@ -228,6 +228,16 @@ export const makeCardActionsArray = (onEdit, onEditClient, onDelete, onStateChan
needAccountsReload: false,
func: onEditClient
},
{
method: "MOVE",
name: "Переместить",
icon: "drive_file_move",
visible: true,
delimiter: false,
tasksReload: true,
needAccountsReload: false,
func: onMove
},
{
method: "DELETE",
name: "Удалить",