ЦИТК-994 - панель "Доски задач", добавлено действие "Переместить" для карточек событий
Reviewed-on: #38
This commit is contained in:
commit
ea83eba5b5
@ -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
|
||||
]);
|
||||
|
||||
//Генерация содержимого
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -197,7 +197,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 [
|
||||
{
|
||||
@ -220,6 +220,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: "Удалить",
|
||||
|
||||
@ -113,6 +113,13 @@ create or replace package PKG_P8PANELS_CLNTTSKBRD as
|
||||
SNOTE in varchar2 := null -- Примечание (при наличии)
|
||||
);
|
||||
|
||||
/* Перемещение события */
|
||||
procedure CLNEVENTS_MOVE
|
||||
(
|
||||
NCLNEVENTS in number, -- Рег. номер события
|
||||
NCRN in number -- Рег. номер каталога-получателя
|
||||
);
|
||||
|
||||
/* Переадресация события */
|
||||
procedure CLNEVENTS_SEND
|
||||
(
|
||||
@ -1936,6 +1943,18 @@ create or replace package body PKG_P8PANELS_CLNTTSKBRD as
|
||||
P_EXCEPTION(0, PKG_STATE.SQL_ERRM());
|
||||
end CLNEVENTS_STATE_CHANGE;
|
||||
|
||||
/* Перемещение события */
|
||||
procedure CLNEVENTS_MOVE
|
||||
(
|
||||
NCLNEVENTS in number, -- Рег. номер события
|
||||
NCRN in number -- Рег. номер каталога-получателя
|
||||
)
|
||||
is
|
||||
begin
|
||||
/* Перемещение события в другой каталог */
|
||||
P_DOCUMENT_MOVE(SUNITCODE => 'ClientEvents', NDOCUMENT => NCLNEVENTS, NTARGET => NCRN);
|
||||
end CLNEVENTS_MOVE;
|
||||
|
||||
/* Переадресация события */
|
||||
procedure CLNEVENTS_SEND
|
||||
(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user