diff --git a/app/panels/clnt_task_board/components/task_card.js b/app/panels/clnt_task_board/components/task_card.js
index 953a2f2..4b69c66 100644
--- a/app/panels/clnt_task_board/components/task_card.js
+++ b/app/panels/clnt_task_board/components/task_card.js
@@ -86,19 +86,18 @@ const CardActions = ({
more_vert
);
@@ -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
]);
//Генерация содержимого
diff --git a/app/panels/clnt_task_board/hooks/dict_hooks.js b/app/panels/clnt_task_board/hooks/dict_hooks.js
index 2b4ccfb..7e803b7 100644
--- a/app/panels/clnt_task_board/hooks/dict_hooks.js
+++ b/app/panels/clnt_task_board/hooks/dict_hooks.js
@@ -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;
diff --git a/app/panels/clnt_task_board/hooks/tasks_hooks.js b/app/panels/clnt_task_board/hooks/tasks_hooks.js
index 2720d6d..a6437e9 100644
--- a/app/panels/clnt_task_board/hooks/tasks_hooks.js
+++ b/app/panels/clnt_task_board/hooks/tasks_hooks.js
@@ -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,
diff --git a/app/panels/clnt_task_board/layouts.js b/app/panels/clnt_task_board/layouts.js
index 674670f..474ef56 100644
--- a/app/panels/clnt_task_board/layouts.js
+++ b/app/panels/clnt_task_board/layouts.js
@@ -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: "Удалить",
diff --git a/db/PKG_P8PANELS_CLNTTSKBRD.pck b/db/PKG_P8PANELS_CLNTTSKBRD.pck
index 3af6ce6..979b611 100644
--- a/db/PKG_P8PANELS_CLNTTSKBRD.pck
+++ b/db/PKG_P8PANELS_CLNTTSKBRD.pck
@@ -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
(