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 { DangerOutlinedButton, PrimaryButton } from '../../../../components/common/Buttons/Buttons';
|
||||
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 { user } = useAuth();
|
||||
@ -20,21 +20,10 @@ const EditModal = ({ open, onClose, rowData, onSave, isSaving = false, orgUnitNa
|
||||
let value = event.target.value;
|
||||
if (field.valueType === 'boolean') value = value === '' ? null : value === 'true';
|
||||
if (field.valueType === 'number') value = value === '' ? '' : Number(value);
|
||||
|
||||
const nextFormData = {
|
||||
setFormData({
|
||||
...formData,
|
||||
[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 () => {
|
||||
@ -80,10 +69,7 @@ const EditModal = ({ open, onClose, rowData, onSave, isSaving = false, orgUnitNa
|
||||
// Компонент для поля ввода
|
||||
const renderField = (field) => {
|
||||
const rawValue = formData[field.key];
|
||||
const isFieldDisabled =
|
||||
field.disabled ||
|
||||
!canEditFirstTableField(field.key, user?.role_id) ||
|
||||
!isFirstTableFieldDependencySatisfied(field.key, formData);
|
||||
const isFieldDisabled = field.disabled || !canEditFirstTableField(field.key, user?.role_id);
|
||||
const fieldValue = field.valueType === 'boolean' && rawValue !== null && rawValue !== undefined
|
||||
? String(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 DFIP_ROLES = [ROLES_NAME_ID.admin, ROLES_NAME_ID.executor_dfip];
|
||||
const ALL_ROLES = [
|
||||
ROLES_NAME_ID.admin,
|
||||
ROLES_NAME_ID.executor_rf,
|
||||
ROLES_NAME_ID.executor_dfip,
|
||||
];
|
||||
const RF_ROLES = [ROLES_NAME_ID.admin, ROLES_NAME_ID.executor_rf];
|
||||
|
||||
// Матрица доступа к полям первой таблицы.
|
||||
// Поля «авто» доступны для ручного редактирования только администратору.
|
||||
export const FIRST_TABLE_FIELD_ACCESS = {
|
||||
name: ADMIN_ROLES,
|
||||
org_unit_id: ADMIN_ROLES,
|
||||
status: DFIP_ROLES,
|
||||
technical_number: [],
|
||||
object_address: ALL_ROLES,
|
||||
vsp_format: ALL_ROLES,
|
||||
technical_number: ADMIN_ROLES,
|
||||
object_address: ADMIN_ROLES,
|
||||
vsp_format: ADMIN_ROLES,
|
||||
placement_type: ADMIN_ROLES,
|
||||
staff_count: ADMIN_ROLES,
|
||||
total_area: ADMIN_ROLES,
|
||||
project_type: ALL_ROLES,
|
||||
krf_decision_date: ALL_ROLES,
|
||||
fk_decision_date: ALL_ROLES,
|
||||
board_decision_date: ALL_ROLES,
|
||||
open_relocate_close_date: ALL_ROLES,
|
||||
project_type: ADMIN_ROLES,
|
||||
krf_decision_date: RF_ROLES,
|
||||
fk_decision_date: RF_ROLES,
|
||||
board_decision_date: RF_ROLES,
|
||||
open_relocate_close_date: RF_ROLES,
|
||||
funding_by_ko_decision: DFIP_ROLES,
|
||||
year: ADMIN_ROLES,
|
||||
is_in_plan: DFIP_ROLES,
|
||||
@ -35,16 +32,4 @@ export const FIRST_TABLE_FIELD_ACCESS = {
|
||||
reserve_to_prrs_kv: DFIP_ROLES,
|
||||
};
|
||||
|
||||
// Поле становится доступным после заполнения предыдущего этапа согласования.
|
||||
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]);
|
||||
};
|
||||
export const canEditFirstTableField = (fieldKey, roleId) => FIRST_TABLE_FIELD_ACCESS[fieldKey]?.includes(roleId) ?? false;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user