Compare commits
No commits in common. "e218d3aa1e7a7cc02773b16a9fc2f578e5309c83" and "97ac7af85a9b5892ee069ddd0c62b2a0e0e4276b" have entirely different histories.
e218d3aa1e
...
97ac7af85a
@ -4,7 +4,7 @@ import React from 'react';
|
|||||||
import { useAuth } from '../../../../app/context/AuthProvider';
|
import { useAuth } from '../../../../app/context/AuthProvider';
|
||||||
import { DangerOutlinedButton, PrimaryButton } from '../../../../components/common/Buttons/Buttons';
|
import { DangerOutlinedButton, PrimaryButton } from '../../../../components/common/Buttons/Buttons';
|
||||||
import { DEVELOMENT_BLOCK, FUNDING_BY_DECISION } from '../../constants';
|
import { DEVELOMENT_BLOCK, FUNDING_BY_DECISION } from '../../constants';
|
||||||
import { canEditFirstTableField, isFirstTableFieldDependencySatisfied } from '../../constants/fieldAccess';
|
import { canEditFirstTableField } from '../../constants/fieldAccess';
|
||||||
|
|
||||||
const EditModal = ({ open, onClose, rowData, onSave, isSaving = false, orgUnitNames = {} }) => {
|
const EditModal = ({ open, onClose, rowData, onSave, isSaving = false, orgUnitNames = {} }) => {
|
||||||
const { user } = useAuth();
|
const { user } = useAuth();
|
||||||
@ -20,21 +20,10 @@ const EditModal = ({ open, onClose, rowData, onSave, isSaving = false, orgUnitNa
|
|||||||
let value = event.target.value;
|
let value = event.target.value;
|
||||||
if (field.valueType === 'boolean') value = value === '' ? null : value === 'true';
|
if (field.valueType === 'boolean') value = value === '' ? null : value === 'true';
|
||||||
if (field.valueType === 'number') value = value === '' ? '' : Number(value);
|
if (field.valueType === 'number') value = value === '' ? '' : Number(value);
|
||||||
|
setFormData({
|
||||||
const nextFormData = {
|
|
||||||
...formData,
|
...formData,
|
||||||
[field.key]: value,
|
[field.key]: value,
|
||||||
};
|
});
|
||||||
|
|
||||||
if (!value && field.key === 'krf_decision_date') {
|
|
||||||
nextFormData.fk_decision_date = '';
|
|
||||||
nextFormData.board_decision_date = '';
|
|
||||||
}
|
|
||||||
if (!value && field.key === 'fk_decision_date') {
|
|
||||||
nextFormData.board_decision_date = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
setFormData(nextFormData);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleSave = async () => {
|
const handleSave = async () => {
|
||||||
@ -80,10 +69,7 @@ const EditModal = ({ open, onClose, rowData, onSave, isSaving = false, orgUnitNa
|
|||||||
// Компонент для поля ввода
|
// Компонент для поля ввода
|
||||||
const renderField = (field) => {
|
const renderField = (field) => {
|
||||||
const rawValue = formData[field.key];
|
const rawValue = formData[field.key];
|
||||||
const isFieldDisabled =
|
const isFieldDisabled = field.disabled || !canEditFirstTableField(field.key, user?.role_id);
|
||||||
field.disabled ||
|
|
||||||
!canEditFirstTableField(field.key, user?.role_id) ||
|
|
||||||
!isFirstTableFieldDependencySatisfied(field.key, formData);
|
|
||||||
const fieldValue = field.valueType === 'boolean' && rawValue !== null && rawValue !== undefined
|
const fieldValue = field.valueType === 'boolean' && rawValue !== null && rawValue !== undefined
|
||||||
? String(rawValue)
|
? String(rawValue)
|
||||||
: (rawValue ?? '');
|
: (rawValue ?? '');
|
||||||
|
|||||||
@ -1,29 +1,26 @@
|
|||||||
import { ROLES_NAME_ID } from "../../../constants/constants";
|
import { ROLES_NAME_ID } from '../../../constants/constants';
|
||||||
|
|
||||||
const ADMIN_ROLES = [ROLES_NAME_ID.admin];
|
const ADMIN_ROLES = [ROLES_NAME_ID.admin];
|
||||||
const DFIP_ROLES = [ROLES_NAME_ID.admin, ROLES_NAME_ID.executor_dfip];
|
const DFIP_ROLES = [ROLES_NAME_ID.admin, ROLES_NAME_ID.executor_dfip];
|
||||||
const ALL_ROLES = [
|
const RF_ROLES = [ROLES_NAME_ID.admin, ROLES_NAME_ID.executor_rf];
|
||||||
ROLES_NAME_ID.admin,
|
|
||||||
ROLES_NAME_ID.executor_rf,
|
|
||||||
ROLES_NAME_ID.executor_dfip,
|
|
||||||
];
|
|
||||||
|
|
||||||
// Матрица доступа к полям первой таблицы.
|
// Матрица доступа к полям первой таблицы.
|
||||||
|
// Поля «авто» доступны для ручного редактирования только администратору.
|
||||||
export const FIRST_TABLE_FIELD_ACCESS = {
|
export const FIRST_TABLE_FIELD_ACCESS = {
|
||||||
name: ADMIN_ROLES,
|
name: ADMIN_ROLES,
|
||||||
org_unit_id: ADMIN_ROLES,
|
org_unit_id: ADMIN_ROLES,
|
||||||
status: DFIP_ROLES,
|
status: DFIP_ROLES,
|
||||||
technical_number: [],
|
technical_number: ADMIN_ROLES,
|
||||||
object_address: ALL_ROLES,
|
object_address: ADMIN_ROLES,
|
||||||
vsp_format: ALL_ROLES,
|
vsp_format: ADMIN_ROLES,
|
||||||
placement_type: ADMIN_ROLES,
|
placement_type: ADMIN_ROLES,
|
||||||
staff_count: ADMIN_ROLES,
|
staff_count: ADMIN_ROLES,
|
||||||
total_area: ADMIN_ROLES,
|
total_area: ADMIN_ROLES,
|
||||||
project_type: ALL_ROLES,
|
project_type: ADMIN_ROLES,
|
||||||
krf_decision_date: ALL_ROLES,
|
krf_decision_date: RF_ROLES,
|
||||||
fk_decision_date: ALL_ROLES,
|
fk_decision_date: RF_ROLES,
|
||||||
board_decision_date: ALL_ROLES,
|
board_decision_date: RF_ROLES,
|
||||||
open_relocate_close_date: ALL_ROLES,
|
open_relocate_close_date: RF_ROLES,
|
||||||
funding_by_ko_decision: DFIP_ROLES,
|
funding_by_ko_decision: DFIP_ROLES,
|
||||||
year: ADMIN_ROLES,
|
year: ADMIN_ROLES,
|
||||||
is_in_plan: DFIP_ROLES,
|
is_in_plan: DFIP_ROLES,
|
||||||
@ -35,16 +32,4 @@ export const FIRST_TABLE_FIELD_ACCESS = {
|
|||||||
reserve_to_prrs_kv: DFIP_ROLES,
|
reserve_to_prrs_kv: DFIP_ROLES,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Поле становится доступным после заполнения предыдущего этапа согласования.
|
export const canEditFirstTableField = (fieldKey, roleId) => FIRST_TABLE_FIELD_ACCESS[fieldKey]?.includes(roleId) ?? false;
|
||||||
export const FIRST_TABLE_FIELD_DEPENDENCIES = {
|
|
||||||
fk_decision_date: "krf_decision_date",
|
|
||||||
board_decision_date: "fk_decision_date",
|
|
||||||
};
|
|
||||||
|
|
||||||
export const canEditFirstTableField = (fieldKey, roleId) =>
|
|
||||||
FIRST_TABLE_FIELD_ACCESS[fieldKey]?.includes(roleId) ?? false;
|
|
||||||
|
|
||||||
export const isFirstTableFieldDependencySatisfied = (fieldKey, rowData) => {
|
|
||||||
const dependencyKey = FIRST_TABLE_FIELD_DEPENDENCIES[fieldKey];
|
|
||||||
return !dependencyKey || Boolean(rowData?.[dependencyKey]);
|
|
||||||
};
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user