diff --git a/app/panels/prj_jobs/lab_fact_rpt_dtl.js b/app/panels/prj_jobs/lab_fact_rpt_dtl.js index 7716c3c..f443384 100644 --- a/app/panels/prj_jobs/lab_fact_rpt_dtl.js +++ b/app/panels/prj_jobs/lab_fact_rpt_dtl.js @@ -45,7 +45,7 @@ const LabFactRptDtl = ({ periodId, title, onHide }) => { const loadFactRptDtl = useCallback(async () => { if (factRptDtl.reload) { const data = await executeStored({ - stored: "PKG_P8PANELS_PROJECTS.JB_PERIODS_LIST_FACT_RPT", + stored: "PKG_P8PANELS_PROJECTS.JB_PERIODS_FACT_RPT_LIST", args: { NJB_PERIODS: periodId, CORDERS: { VALUE: object2Base64XML(factRptDtl.orders, { arrayNodeName: "orders" }), SDATA_TYPE: SERV_DATA_TYPE_CLOB }, diff --git a/app/panels/prj_jobs/lab_plan_fot_dtl.js b/app/panels/prj_jobs/lab_plan_fot_dtl.js index 37027eb..520360b 100644 --- a/app/panels/prj_jobs/lab_plan_fot_dtl.js +++ b/app/panels/prj_jobs/lab_plan_fot_dtl.js @@ -44,7 +44,7 @@ const LabPlanFOTDtl = ({ periodId, title, onHide }) => { const loadPlanFOTDtl = useCallback(async () => { if (planFOTDtl.reload) { const data = await executeStored({ - stored: "PKG_P8PANELS_PROJECTS.JB_PERIODS_LIST_PLAN_FOT", + stored: "PKG_P8PANELS_PROJECTS.JB_PERIODS_PLAN_FOT_LIST", args: { NJB_PERIODS: periodId, CORDERS: { VALUE: object2Base64XML(planFOTDtl.orders, { arrayNodeName: "orders" }), SDATA_TYPE: SERV_DATA_TYPE_CLOB }, diff --git a/app/panels/prj_jobs/lab_plan_jobs_dtl.js b/app/panels/prj_jobs/lab_plan_jobs_dtl.js index 1c77aa7..251dd68 100644 --- a/app/panels/prj_jobs/lab_plan_jobs_dtl.js +++ b/app/panels/prj_jobs/lab_plan_jobs_dtl.js @@ -49,7 +49,7 @@ const LabPlanJobsDtl = ({ periodId, title, onHide, onProjectClick }) => { const loadPlanJobsDtl = useCallback(async () => { if (planJobsDtl.reload) { const data = await executeStored({ - stored: "PKG_P8PANELS_PROJECTS.JB_PERIODS_LIST_PLAN_JOBS", + stored: "PKG_P8PANELS_PROJECTS.JB_PERIODS_PLAN_JOBS_LIST", args: { NJB_PERIODS: periodId, CORDERS: { VALUE: object2Base64XML(planJobsDtl.orders, { arrayNodeName: "orders" }), SDATA_TYPE: SERV_DATA_TYPE_CLOB }, diff --git a/app/panels/prj_jobs/prj_jobs.js b/app/panels/prj_jobs/prj_jobs.js index f414caa..307e578 100644 --- a/app/panels/prj_jobs/prj_jobs.js +++ b/app/panels/prj_jobs/prj_jobs.js @@ -66,22 +66,12 @@ const STYLES = { PERIODS_DRAWER: { width: "1200px", flexShrink: 0, [`& .MuiDrawer-paper`]: { width: "1200px", boxSizing: "border-box" } } }; -//Единицы измерения длительности -const DURATION_MEAS = { - 0: "День", - 1: "Неделя", - 2: "Декада", - 3: "Месяц", - 4: "Квартал", - 5: "Год" -}; - //------------------------------------ //Вспомогательные функции и компоненты //------------------------------------ //Диалог параметров инициализации панели -const InitDialog = ({ dateBegin, dateFact, onOk, onCancel }) => { +const InitPrmsDialog = ({ dateBegin, dateFact, onOk, onCancel }) => { //Собственное состояние - значения с-по const [values, setValues] = useState({ dateBegin: formatDateJSONDateOnly(dateBegin), dateFact: formatDateJSONDateOnly(dateFact) }); @@ -130,13 +120,72 @@ const InitDialog = ({ dateBegin, dateFact, onOk, onCancel }) => { }; //Контроль свойств - Диалог параметров инициализации панели -InitDialog.propTypes = { +InitPrmsDialog.propTypes = { dateBegin: PropTypes.instanceOf(Date).isRequired, dateFact: PropTypes.instanceOf(Date).isRequired, onOk: PropTypes.func, onCancel: PropTypes.func }; +//Область параметров инициализации панели +const InitPrmsArea = ({ dateBegin, dateFact, durationMeasCode, labMeasCode, onClick }) => { + return ( + + + + Начало: + {formatDateRF(dateBegin)} +
+ Факт на: + {formatDateRF(dateFact)} +
+ Длительность: + {durationMeasCode} +
+ Трудоёмкость: + {labMeasCode} + + } + /> +
+ + + +
+ ); +}; + +//Контроль свойств - Область параметров инициализации панели +InitPrmsArea.propTypes = { + dateBegin: PropTypes.instanceOf(Date), + dateFact: PropTypes.instanceOf(Date), + durationMeasCode: PropTypes.string, + labMeasCode: PropTypes.string, + onClick: PropTypes.func +}; + +//Область сохранения изменений +const SaveChangesArea = ({ onClick }) => { + return ( + + + + + + ); +}; + +//Контроль свойств - Область сохранения изменений +SaveChangesArea.propTypes = { + onClick: PropTypes.func +}; + //Список проектов const ProjectsList = ({ projects = [], selectedProject, onClick } = {}) => { //Подключение к контексту сообщений @@ -210,7 +259,9 @@ const PrjJobs = () => { dateBegin: null, dateFact: null, durationMeas: null, + durationMeasCode: null, labMeas: null, + labMeasCode: null, resourceStatus: null, ident: null, projects: [], @@ -270,12 +321,12 @@ const PrjJobs = () => { //Изменение работы в графике const modifyJob = useCallback( - async (job, dateFrom, dateTo, dateBegin, dateFact, durationMeas) => { + async (job, dateFrom, dateTo) => { let data = null; try { data = await executeStored({ stored: "PKG_P8PANELS_PROJECTS.JB_JOBS_MODIFY_PERIOD", - args: { NJB_JOBS: job, DDATE_FROM: dateFrom, DDATE_TO: dateTo, DBEGIN: dateBegin, DFACT: dateFact, NDURATION_MEAS: durationMeas } + args: { NJB_JOBS: job, DDATE_FROM: dateFrom, DDATE_TO: dateTo } }); if (data?.NRESOURCE_STATUS != -1) { setState(pv => ({ ...pv, resourceStatus: data.NRESOURCE_STATUS, needSave: true })); @@ -306,8 +357,6 @@ const PrjJobs = () => { args: { DBEGIN: state.dateBegin ? state.dateBegin : null, DFACT: state.dateFact ? state.dateFact : null, - NDURATION_MEAS: state.durationMeas, - SLAB_MEAS: state.labMeas, NIDENT: state.ident } }); @@ -318,12 +367,14 @@ const PrjJobs = () => { dateBegin: new Date(data.DBEGIN), dateFact: new Date(data.DFACT), durationMeas: data.NDURATION_MEAS, - labMeas: data.SLAB_MEAS, + durationMeasCode: data.SDURATION_MEAS, + labMeas: data.NLAB_MEAS, + labMeasCode: data.SLAB_MEAS, resourceStatus: data.NRESOURCE_STATUS, ident: data.NIDENT })); } - }, [state.init, state.dateBegin, state.dateFact, state.durationMeas, state.labMeas, state.ident, executeStored]); + }, [state.init, state.dateBegin, state.dateFact, state.ident, executeStored]); //Грузим список проектов при смене идентификатора процесса useEffect(() => { @@ -377,7 +428,7 @@ const PrjJobs = () => { //Обработка измненения сроков задачи в диаграмме Гантта const handleTaskDatesChange = ({ task, start, end, isMain }) => { - if (isMain) modifyJob(task.rn, new Date(start), new Date(end), new Date(state.dateBegin), new Date(state.dateFact), state.durationMeas); + if (isMain) modifyJob(task.rn, new Date(start), new Date(end)); }; //Отработка нажатия на отображения диалога параметров инициализации панели @@ -403,7 +454,7 @@ const PrjJobs = () => { return ( {state.showInitDialog ? ( - { > {state.projectsLoaded ? ( <> - - - - Начало: - {formatDateRF(state.dateBegin)} -
- Факт на: - {formatDateRF(state.dateFact)} -
- Длительность: - {DURATION_MEAS[state.durationMeas]} -
- Трудоёмкость: - {state.labMeas} - - } - /> -
- - - -
+ {state.needSave ? ( <> - - - - - + ) : null}