475 lines
11 KiB
JavaScript
475 lines
11 KiB
JavaScript
import {
|
||
ruleLengthValue,
|
||
ruleEmailValue,
|
||
ruleMaxLength,
|
||
ruleNotValue,
|
||
ruleDateValue,
|
||
ruleOptionalFields,
|
||
} from "@/shared/utils/rulesInputs";
|
||
|
||
export const baseDataForm = [
|
||
{
|
||
dataLabel: "Личные данные",
|
||
dataKey: "personalData",
|
||
fields: [
|
||
{
|
||
key: "last_name",
|
||
label: "Фамилия",
|
||
type: "text",
|
||
},
|
||
{
|
||
key: "first_name",
|
||
label: "Имя",
|
||
type: "text",
|
||
},
|
||
{
|
||
key: "patronymic",
|
||
label: "Отчество",
|
||
type: "text",
|
||
},
|
||
{
|
||
key: "gender",
|
||
label: "Пол",
|
||
type: "select",
|
||
},
|
||
{
|
||
key: "birth_date",
|
||
label: "Дата рождения",
|
||
type: "date",
|
||
},
|
||
{
|
||
key: "photo",
|
||
label: "Фото",
|
||
type: "avatar",
|
||
},
|
||
],
|
||
},
|
||
{
|
||
dataLabel: "Адрес регистрации",
|
||
dataKey: "registrationAddress",
|
||
fields: [
|
||
{
|
||
key: "region",
|
||
label: "Регион",
|
||
type: "text",
|
||
},
|
||
{
|
||
key: "city",
|
||
label: "Город",
|
||
type: "text",
|
||
},
|
||
{
|
||
key: "street",
|
||
label: "Улица",
|
||
type: "text",
|
||
},
|
||
{
|
||
key: "house_number",
|
||
label: "Дом",
|
||
type: "text",
|
||
rules: [(val) => !/^[\W0]/.test(val)],
|
||
error:
|
||
"Номер дома должен начинатся не с нуля и только с цифробуквенного символа",
|
||
},
|
||
{
|
||
key: "apartment_number",
|
||
label: "Квартира",
|
||
type: "text",
|
||
rules: [(val) => !/^[\W0]/.test(val)],
|
||
error:
|
||
"Номер квартиры должен начинатся не с нуля и только с цифробуквенного символа",
|
||
},
|
||
],
|
||
},
|
||
{
|
||
dataLabel: "Адрес проживания",
|
||
dataKey: "residenceAddress",
|
||
fields: [
|
||
{
|
||
key: "region",
|
||
label: "Регион",
|
||
type: "text",
|
||
},
|
||
{
|
||
key: "city",
|
||
label: "Город",
|
||
type: "text",
|
||
},
|
||
{
|
||
key: "street",
|
||
label: "Улица",
|
||
type: "text",
|
||
},
|
||
{
|
||
key: "house_number",
|
||
label: "Дом",
|
||
type: "text",
|
||
rules: [(val) => !/^[\W0]/.test(val)],
|
||
error:
|
||
"Номер дома должен начинатся не с нуля и только с цифробуквенного символа",
|
||
},
|
||
{
|
||
key: "apartment_number",
|
||
label: "Квартира",
|
||
type: "text",
|
||
rules: [(val) => !/^[\W0]/.test(val)],
|
||
error:
|
||
"Номер квартиры должен начинатся не с нуля и только с цифробуквенного символа",
|
||
},
|
||
],
|
||
},
|
||
];
|
||
|
||
export const errorMap = {
|
||
house_number: {
|
||
title: "Дом",
|
||
error:
|
||
"Номер дома должен начинатся не с нуля и только с цифробуквенного символа",
|
||
},
|
||
apartment_number: {
|
||
title: "Квартира",
|
||
error:
|
||
"Номер квартиры должен начинатся не с нуля и только с цифробуквенного символа",
|
||
},
|
||
};
|
||
|
||
export const mapNetworks = {
|
||
VK: {
|
||
title: "VK",
|
||
icon: "app:icon-vk",
|
||
network: "VK",
|
||
},
|
||
TELEGRAM: {
|
||
title: "Telegram",
|
||
icon: "app:icon-tg",
|
||
network: "TELEGRAM",
|
||
},
|
||
GMAIL: {
|
||
title: "Gmail",
|
||
icon: "app:icon-google",
|
||
network: "GMAIL",
|
||
},
|
||
SLACK: {
|
||
title: "Slack",
|
||
icon: "app:icon-slack",
|
||
network: "SLACK",
|
||
markerLink: "slack",
|
||
},
|
||
DISCORD: {
|
||
title: "Discord",
|
||
icon: "app:icon-discord",
|
||
network: "DISCORD",
|
||
},
|
||
VIBER: {
|
||
title: "Viber",
|
||
icon: "wifi_calling_3",
|
||
network: "VIBER",
|
||
},
|
||
WHATS_APP: {
|
||
title: "WhatsApp",
|
||
icon: "call",
|
||
network: "WHATS_APP",
|
||
},
|
||
};
|
||
|
||
export const contactsDataForm = {
|
||
phones: {
|
||
title: "Телефон",
|
||
fieldName: "Телефон",
|
||
error:
|
||
"Не корректно введен номер телефона. Номер телефона должен состоять из 10 цифр (без учета +7)",
|
||
kind: "PHONE",
|
||
rules: [(val) => ruleLengthValue(val, 18)],
|
||
inputMask: "+7 (###) ###-##-##",
|
||
},
|
||
emails: {
|
||
title: "Почта",
|
||
fieldName: "Email",
|
||
error:
|
||
"Не корректно введен адрес почты. Почта должна содержать локальное имя, знак @ и имя домена",
|
||
rules: [(val) => ruleEmailValue(val)],
|
||
kind: "EMAIL",
|
||
},
|
||
networks: {
|
||
title: "Социальные сети",
|
||
fieldName: "Соцсеть",
|
||
error: "Отсутсвует ссылка соцсети",
|
||
rules: [(val) => ruleNotValue(val)],
|
||
kind: "TELEGRAM",
|
||
},
|
||
};
|
||
|
||
export const allergiesConfig = {
|
||
name: {
|
||
title: "Аллерген",
|
||
rules: [(val) => ruleMaxLength(val, 100)],
|
||
error:
|
||
"Некорректно введен аллерген. Значение должно быть больше 1 и меньше 50 символов",
|
||
},
|
||
title: {
|
||
title: "Проявление аллергии",
|
||
rules: [(val) => ruleMaxLength(val, 100)],
|
||
error:
|
||
"Некорректно введено проявление аллергии. Значение должно быть больше 1 и меньше 100 символов",
|
||
},
|
||
};
|
||
|
||
export const genderOptions = [
|
||
{
|
||
id: "MALE",
|
||
label: "Мужской",
|
||
},
|
||
{
|
||
id: "WOMEN",
|
||
label: "Женский",
|
||
},
|
||
];
|
||
|
||
export const headerMenuItem = [
|
||
{
|
||
title: "Общая информация",
|
||
id: "basic",
|
||
component: "MedicalBaseInfo",
|
||
},
|
||
{
|
||
title: "Журнал посещений",
|
||
id: "session-log",
|
||
component: "SessionLog",
|
||
},
|
||
{
|
||
title: "Планы лечения",
|
||
id: "treatment-plans",
|
||
component: "TreatmentPlans",
|
||
},
|
||
{
|
||
title: "Статистика",
|
||
id: "statistics",
|
||
component: "Statistics",
|
||
},
|
||
{
|
||
title: "История контактов",
|
||
id: "contact-history",
|
||
component: "ContactHistory",
|
||
},
|
||
];
|
||
|
||
export const baseInfoMenu = [
|
||
{
|
||
title: "Основные данные",
|
||
id: "basic-data",
|
||
component: "MedicalBasicDataWrapper",
|
||
},
|
||
{
|
||
title: "Протоколы первичного осмотра",
|
||
id: "protocols",
|
||
component: "Protocols",
|
||
},
|
||
{
|
||
title: "Доверенное лицо",
|
||
id: "trusted-person",
|
||
component: "TrustedPerson",
|
||
},
|
||
{
|
||
title: "Аллергии",
|
||
id: "allergies",
|
||
component: "MedicalAllergiesWrapper",
|
||
},
|
||
{
|
||
title: "Состояние здоровья",
|
||
id: "health-status",
|
||
component: "HealthStatus",
|
||
},
|
||
{
|
||
title: "История болезней",
|
||
id: "medical-history",
|
||
component: "MedicalHistory",
|
||
},
|
||
{
|
||
title: "Зубная формула",
|
||
id: "dental-formula",
|
||
component: "DentalFormula",
|
||
},
|
||
];
|
||
|
||
export const baseInsuranceForm = [
|
||
{
|
||
insuranceLabel: "ОМС",
|
||
insuranceKey: "insuranceOMS",
|
||
fields: [
|
||
{
|
||
key: "series",
|
||
label: "Серия",
|
||
type: "text",
|
||
inputMask: "####",
|
||
},
|
||
{
|
||
key: "number",
|
||
label: "Номер",
|
||
type: "text",
|
||
inputMask: "####-####-####",
|
||
},
|
||
{
|
||
key: "photo",
|
||
label: "Фото ОМС",
|
||
type: "avatar",
|
||
},
|
||
],
|
||
},
|
||
{
|
||
insuranceLabel: "ДМС",
|
||
insuranceKey: "insuranceDMS",
|
||
fields: [
|
||
{
|
||
key: "series",
|
||
label: "Серия",
|
||
type: "text",
|
||
inputMask: "####",
|
||
},
|
||
{
|
||
key: "number",
|
||
label: "Номер",
|
||
type: "text",
|
||
inputMask: "####-####-####",
|
||
},
|
||
{
|
||
key: "photo",
|
||
label: "Фото ДМС",
|
||
type: "avatar",
|
||
},
|
||
],
|
||
},
|
||
{
|
||
insuranceLabel: "Категория льготы",
|
||
insuranceKey: "benefit",
|
||
discount: "discount",
|
||
fields: [
|
||
{
|
||
key: "name",
|
||
label: "Категория",
|
||
type: "select",
|
||
},
|
||
{
|
||
key: "photo",
|
||
label: "Документы",
|
||
type: "avatar",
|
||
},
|
||
],
|
||
},
|
||
];
|
||
export const routesDictionary = {
|
||
"/clients": "Клиенты",
|
||
"/calendar": "Календарь",
|
||
"/medical-card": "Медкарта",
|
||
};
|
||
|
||
export const documentForm = [
|
||
{
|
||
dataLabel: "Паспорт",
|
||
dataKey: "passport",
|
||
fields: [
|
||
{
|
||
key: "series",
|
||
label: "Серия",
|
||
type: "text",
|
||
inputMask: "####",
|
||
errorMessage: {
|
||
title: "Ошибка валидации",
|
||
message: "Серия паспорта менее 4 цифр или не заполнена",
|
||
},
|
||
rules: (val) => ruleLengthValue(val, 4),
|
||
},
|
||
{
|
||
key: "number",
|
||
label: "Номер",
|
||
type: "text",
|
||
inputMask: "######",
|
||
errorMessage: {
|
||
title: "Ошибка валидации",
|
||
message: "Номер паспорта менее 6 цифр или не заполнен",
|
||
},
|
||
rules: (val) => ruleLengthValue(val, 6),
|
||
},
|
||
{
|
||
key: "issued_by_org",
|
||
label: "Кем выдан",
|
||
type: "text",
|
||
errorMessage: {
|
||
title: "Ошибка валидации",
|
||
message: "Поле 'Кем выдан' не заполнено",
|
||
},
|
||
rules: (val) => ruleNotValue(val),
|
||
},
|
||
{
|
||
key: "issued_by_org_code",
|
||
label: "Код подраздел.",
|
||
type: "text",
|
||
inputMask: "###-###",
|
||
errorMessage: {
|
||
title: "Ошибка валидации",
|
||
message: "Код подразделения менее 6 цифр или не заполнен",
|
||
},
|
||
rules: (val) => ruleLengthValue(val, 7),
|
||
},
|
||
{
|
||
key: "issued_by_date",
|
||
label: "Дата выдачи",
|
||
type: "date",
|
||
rules: (val) => ruleDateValue(val),
|
||
errorMessage: {
|
||
title: "Ошибка валидации",
|
||
message: "Дата выдачи паспорта позднее текущего дня",
|
||
},
|
||
},
|
||
{
|
||
key: "photo",
|
||
label: "Фото паспорта",
|
||
type: "photo",
|
||
},
|
||
],
|
||
},
|
||
{
|
||
dataLabel: "СНИЛС",
|
||
dataKey: "insurance_number",
|
||
fields: [
|
||
{
|
||
key: "insurance_number",
|
||
label: "Номер СНИЛС",
|
||
type: "text",
|
||
inputMask: "###-###-### ##",
|
||
errorMessage: {
|
||
title: "Ошибка валидации",
|
||
message: "СНИЛС содержит менее 11 цифр",
|
||
},
|
||
rules: (val) => ruleOptionalFields(val, 14),
|
||
},
|
||
{
|
||
key: "photo_insurance_number",
|
||
label: "Фото СНИЛС",
|
||
type: "photo",
|
||
},
|
||
],
|
||
},
|
||
{
|
||
dataLabel: "ИНН",
|
||
dataKey: "tax_identification_number",
|
||
fields: [
|
||
{
|
||
key: "tax_identification_number",
|
||
label: "Номер ИНН",
|
||
type: "text",
|
||
inputMask: "############",
|
||
errorMessage: {
|
||
title: "Ошибка валидации",
|
||
message: "ИНН содержит менее 12 цифр",
|
||
},
|
||
rules: (val) => ruleOptionalFields(val, 12),
|
||
},
|
||
{
|
||
key: "photo_tax_identification_number",
|
||
label: "Фото ИНН",
|
||
type: "photo",
|
||
},
|
||
],
|
||
},
|
||
];
|