diff --git a/src/pages/CalculatorPage.tsx b/src/pages/CalculatorPage.tsx
index 27f54a0..4110983 100644
--- a/src/pages/CalculatorPage.tsx
+++ b/src/pages/CalculatorPage.tsx
@@ -30,12 +30,12 @@ function CalculatorPage() {
// Состояния для полей формы
const [country, setCountry] = useState("russia"); // russia или belarus
- const [age, setAge] = useState("3"); // Изменено на числовое значение для упрощения расчетов
+ const [age, setAge] = useState("<3"); // Изменено на числовое значение для упрощения расчетов
const [price, setPrice] = useState("");
const [currency, setCurrency] = useState("USD Доллар США");
const [engineType, setEngineType] = useState("Бензиновый");
const [hybridType, setHybridType] = useState("Не гибрид");
- const [engineVolume, setEngineVolume] = useState("");
+ const [engineVolume, setEngineVolume] = useState("2000");
const [enginePower, setEnginePower] = useState("");
const [enginePowerUnit, setEnginePowerUnit] = useState("л.с.");
const [electricMotorPower, setElectricMotorPower] = useState("");
@@ -79,225 +79,403 @@ function CalculatorPage() {
loadCurrencyRates();
}, []);
+ // const handleCalculate = () => {
+ // const calculatorResults = document.getElementById("calculator-results");
+ // if (calculatorResults) {
+ // calculatorResults.scrollIntoView({ behavior: "smooth" });
+ // }
+ // // Получаем курс выбранной валюты
+ // const currencyCode = mapCurrencyCodeToApiCode(currency);
+ // const exchangeRate =
+ // currencyCode === "RUB" ? 1 : getCurrencyRate(currencyRates, currencyCode);
+
+ // // Конвертация цены в рубли для расчета
+ // let priceInRub = parseFloat(price) || 0;
+
+ // // Конвертация из валюты пользователя в рубли
+ // if (currencyCode !== "RUB") {
+ // priceInRub *= exchangeRate;
+ // }
+
+ // // Минимальная стоимость для расчета (устанавливается таможней)
+ // const eurRate = getCurrencyRate(currencyRates, "EUR");
+ // const minCustomValue = 8500 * eurRate; // минимальная стоимость в рублях (8500 евро)
+ // const calculationValue = Math.max(priceInRub, minCustomValue);
+
+ // let customDuty = 0;
+ // let exciseTax = 0;
+ // let vat = 0;
+ // let utilityFee = 0;
+ // let totalFees = 0;
+
+ // // Расчет для физических лиц
+ // if (calculationType === "Физ. лица") {
+ // // Коэффициент для возраста
+ // let ageCoef = 1;
+ // switch (age) {
+ // case "3": // менее 3 лет
+ // ageCoef = 0.54; // 54% от стоимости
+ // break;
+ // case "3-5": // от 3 до 5 лет
+ // ageCoef = 0.48; // 48% от стоимости
+ // break;
+ // case "5+": // более 5 лет
+ // ageCoef = 0.48; // 48% от стоимости (но не менее 2.5 евро/см3)
+ // break;
+ // default:
+ // ageCoef = 0.54;
+ // }
+
+ // // Расчет пошлины для ДВС
+ // if (engineType === "Бензиновый" || engineType === "Дизельный") {
+ // const engineVolumeNum = parseFloat(engineVolume) || 0;
+
+ // let engineVolumeCoefficient = 1.0;
+ // if (age === "3-5") {
+ // if (engineVolumeNum <= 1000) {
+ // engineVolumeCoefficient = 1.5;
+ // } else if (engineVolumeNum <= 1500) {
+ // engineVolumeCoefficient = 1.7;
+ // } else if (engineVolumeNum <= 1800) {
+ // engineVolumeCoefficient = 2.5;
+ // } else if (engineVolumeNum <= 2300) {
+ // engineVolumeCoefficient = 2.7;
+ // } else if (engineVolumeNum <= 3000) {
+ // engineVolumeCoefficient = 3.0;
+ // } else if (engineVolumeNum > 3000) {
+ // engineVolumeCoefficient = 3.6;
+ // }
+ // }
+
+ // const engineVolumeDuty = engineVolumeCoefficient * engineVolumeNum * eurRate;
+
+ // // Для авто менее 3 лет
+ // if (age === "<3") {
+ // const percentDuty = calculationValue * 0.54;
+ // customDuty = Math.max(engineVolumeDuty, percentDuty);
+ // }
+ // // Для авто 3-5 лет
+ // else if (age === "3-5") {
+ // customDuty = engineVolumeDuty;
+ // }
+ // // Для авто старше 5 лет
+ // else if (age === "5-10" || age === ">10") {
+ // const ageCoefficient = 1.3; // Например, для 5-10 лет
+ // customDuty = engineVolumeCoefficient * engineVolumeNum * eurRate * ageCoefficient;
+ // }
+
+ // // Акцизы в зависимости от мощности
+ // const enginePowerNum = parseFloat(enginePower) || 0;
+ // let powerInHP = enginePowerNum;
+
+ // if (enginePowerUnit === "кВт") {
+ // powerInHP = enginePowerNum * 1.35962;
+ // }
+
+ // let ageCoefficient = 1.0;
+ // if (age === "3-5") {
+ // ageCoefficient = 1.1;
+ // } else if (age === "5-10") {
+ // ageCoefficient = 1.3;
+ // } else if (age === ">10") {
+ // ageCoefficient = 1.5;
+ // }
+
+ // // Акцизные ставки на 2024 год (в рублях за 1 л.с.)
+ // if (powerInHP <= 90) {
+ // exciseTax = powerInHP * 0 * ageCoefficient;
+ // } else if (powerInHP <= 150) {
+ // exciseTax = powerInHP * 54 * ageCoefficient;
+ // } else if (powerInHP <= 200) {
+ // exciseTax = powerInHP * 714 * ageCoefficient;
+ // } else if (powerInHP <= 300) {
+ // exciseTax = powerInHP * 1218 * ageCoefficient;
+ // } else if (powerInHP <= 400) {
+ // exciseTax = powerInHP * 1260 * ageCoefficient;
+ // } else if (powerInHP <= 500) {
+ // exciseTax = powerInHP * 1302 * ageCoefficient;
+ // } else if (powerInHP > 500) {
+ // exciseTax = powerInHP * 1374 * ageCoefficient;
+ // }
+ // }
+
+ // // Для электромобилей
+ // else if (engineType === "Электрический") {
+ // customDuty = 0; // Пошлина 0% для электромобилей
+ // exciseTax = 0; // Акциз 0 для электромобилей
+ // }
+
+ // // Для гибридов
+ // else if (engineType === "Гибридный") {
+ // // Для гибридов применяются те же ставки, что и для ДВС
+ // const engineVolumeNum = parseFloat(engineVolume) || 0;
+
+ // if (age === "3") {
+ // customDuty = calculationValue * 0.54;
+ // } else if (age === "3-5") {
+ // customDuty = calculationValue * 0.48;
+ // } else {
+ // const dutyPerCm3 = 2.5; // евро за см3
+ // const dutyInEur = engineVolumeNum * dutyPerCm3;
+ // customDuty = dutyInEur * eurRate;
+ // customDuty = Math.max(customDuty, calculationValue * 0.48);
+ // }
+
+ // // Акциз для гибридов рассчитывается так же, как для ДВС
+ // const enginePowerNum = parseFloat(enginePower) || 0;
+ // let powerInHP = enginePowerNum;
+
+ // if (enginePowerUnit === "кВт") {
+ // powerInHP = enginePowerNum * 1.35962;
+ // }
+
+ // let ageCoefficient = 1.0;
+ // if (age === "3-5") {
+ // ageCoefficient = 1.1;
+ // } else if (age === "5-10") {
+ // ageCoefficient = 1.3;
+ // } else if (age === ">10") {
+ // ageCoefficient = 1.5;
+ // }
+
+ // if (powerInHP <= 90) {
+ // exciseTax = powerInHP * 0 * ageCoefficient;
+ // } else if (powerInHP <= 150) {
+ // exciseTax = powerInHP * 54 * ageCoefficient;
+ // } else if (powerInHP <= 200) {
+ // exciseTax = powerInHP * 714 * ageCoefficient;
+ // } else if (powerInHP <= 300) {
+ // exciseTax = powerInHP * 1218 * ageCoefficient;
+ // } else if (powerInHP <= 400) {
+ // exciseTax = powerInHP * 1260 * ageCoefficient;
+ // } else if (powerInHP <= 500) {
+ // exciseTax = powerInHP * 1302 * ageCoefficient;
+ // } else if (powerInHP > 500) {
+ // exciseTax = powerInHP * 1374 * ageCoefficient;
+ // }
+ // }
+
+ // // НДС 20% от (стоимость + пошлина + акциз)
+ // vat = (calculationValue + customDuty + exciseTax) * 0.2;
+
+ // // Утилизационный сбор
+ // if (engineType === "Электрический") {
+ // utilityFee = 3400; // Для электромобилей
+ // } else {
+ // utilityFee = enhancedPermeability ? 27000 : 3400; // Для внедорожников выше
+ // }
+ // }
+ // // Расчет для юридических лиц
+ // else {
+ // // Здесь должна быть другая логика расчета для юр.лиц
+ // // В данном примере используем упрощенный расчет, аналогичный физ.лицам
+ // customDuty = calculationValue * 0.12; // Примерная ставка для юр.лиц
+
+ // // Акцизы в зависимости от мощности
+ // const enginePowerNum = parseFloat(enginePower) || 0;
+ // let powerInHP = enginePowerNum;
+
+ // if (enginePowerUnit === "кВт") {
+ // powerInHP = enginePowerNum * 1.35962;
+ // }
+
+ // // Акцизные ставки для юр.лиц могут отличаться
+ // if (powerInHP <= 90) {
+ // exciseTax = powerInHP * 0;
+ // } else if (powerInHP <= 150) {
+ // exciseTax = powerInHP * 55;
+ // } else {
+ // exciseTax = powerInHP * 531;
+ // }
+
+ // // НДС 20%
+ // vat = (calculationValue + customDuty + exciseTax) * 0.2;
+
+ // // Утилизационный сбор для юр.лиц
+ // utilityFee = engineType === "Электрический" ? 3500 : 5000;
+ // }
+
+ // // Итоговая сумма таможенных платежей
+ // totalFees = customDuty + exciseTax + vat + utilityFee;
+
+ // // Сохраняем результаты расчетов
+ // const results = {
+ // priceInRub: priceInRub.toFixed(2),
+ // customDuty: customDuty.toFixed(2),
+ // exciseTax: exciseTax.toFixed(2),
+ // vat: vat.toFixed(2),
+ // utilityFee: utilityFee.toFixed(2),
+ // totalFees: totalFees.toFixed(2),
+ // totalWithCar: (priceInRub + totalFees).toFixed(2),
+ // };
+
+ // setCalculationResults(results);
+
+ // // После расчетов установить флаг анимации
+ // setSlideIn(true);
+
+ // // Выводим результаты также в консоль для отладки
+ // console.log({
+ // original: {
+ // price,
+ // currency,
+ // currencyRate: exchangeRate,
+ // country,
+ // age,
+ // engineType,
+ // hybridType,
+ // engineVolume,
+ // enginePower,
+ // enginePowerUnit,
+ // electricMotorPower,
+ // electricMotorPowerUnit,
+ // powerRatio,
+ // calculationType,
+ // enhancedPermeability,
+ // },
+ // calculation: results,
+ // });
+ // };
+
const handleCalculate = () => {
- const calculatorResults = document.getElementById("calculator-results");
- if (calculatorResults) {
- calculatorResults.scrollIntoView({ behavior: "smooth" });
- }
- // Получаем курс выбранной валюты
- const currencyCode = mapCurrencyCodeToApiCode(currency);
- const exchangeRate =
- currencyCode === "RUB" ? 1 : getCurrencyRate(currencyRates, currencyCode);
+ const calculatorResults = document.getElementById("calculator-results");
+ if (calculatorResults) {
+ calculatorResults.scrollIntoView({ behavior: "smooth" });
+ }
- // Конвертация цены в рубли для расчета
- let priceInRub = parseFloat(price) || 0;
+ // Получаем курс валют
+ const currencyCode = mapCurrencyCodeToApiCode(currency);
+ const exchangeRate = currencyCode === "RUB" ? 1 : getCurrencyRate(currencyRates, currencyCode);
+ const eurRate = getCurrencyRate(currencyRates, "EUR");
- // Конвертация из валюты пользователя в рубли
- if (currencyCode !== "RUB") {
- priceInRub *= exchangeRate;
+ // Конвертация цены в рубли
+ let priceInRub = parseFloat(price) || 0;
+ if (currencyCode !== "RUB") {
+ priceInRub *= exchangeRate;
+ }
+
+ // Инициализация переменных
+ let customDuty = 0;
+ let exciseTax = 0;
+ let vat = 0;
+ let utilityFee = 0;
+ let totalFees = 0;
+
+ // Расчет только для физ. лиц
+ if (calculationType === "Физ. лица") {
+ const engineVolumeNum = parseFloat(engineVolume) || 0;
+ const enginePowerNum = parseFloat(enginePower) || 0;
+ let powerInHP = enginePowerUnit === "кВт" ? enginePowerNum * 1.35962 : enginePowerNum;
+
+ // Корректировка стоимости только для авто до 3 лет
+ let calculationValue = priceInRub;
+ if (age === "<3") {
+ const minCustomValue = 8500 * eurRate;
+ calculationValue = Math.max(priceInRub, minCustomValue);
}
- // Минимальная стоимость для расчета (устанавливается таможней)
- const eurRate = getCurrencyRate(currencyRates, "EUR");
- const minCustomValue = 8500 * eurRate; // минимальная стоимость в рублях (8500 евро)
- const calculationValue = Math.max(priceInRub, minCustomValue);
-
- let customDuty = 0;
- let exciseTax = 0;
- let vat = 0;
- let utilityFee = 0;
- let totalFees = 0;
-
- // Расчет для физических лиц
- if (calculationType === "Физ. лица") {
- // Коэффициент для возраста
- let ageCoef = 1;
- switch (age) {
- case "3": // менее 3 лет
- ageCoef = 0.54; // 54% от стоимости
- break;
- case "3-5": // от 3 до 5 лет
- ageCoef = 0.48; // 48% от стоимости
- break;
- case "5+": // более 5 лет
- ageCoef = 0.48; // 48% от стоимости (но не менее 2.5 евро/см3)
- break;
- default:
- ageCoef = 0.54;
- }
-
- // Расчет пошлины для ДВС
- if (engineType === "Бензиновый" || engineType === "Дизельный") {
- const engineVolumeNum = parseFloat(engineVolume) || 0;
-
- // Для авто менее 3 лет
- if (age === "3") {
- customDuty = calculationValue * 0.54; // 54% от стоимости
- }
- // Для авто 3-5 лет
- else if (age === "3-5") {
- customDuty = calculationValue * 0.48; // 48% от стоимости
- }
- // Для авто старше 5 лет
- else {
- const dutyPerCm3 = 2.5; // евро за см3
- const dutyInEur = engineVolumeNum * dutyPerCm3;
- customDuty = dutyInEur * eurRate; // переводим в рубли по курсу евро
- // Берем максимум между процентом и фиксированной ставкой
- customDuty = Math.max(customDuty, calculationValue * 0.48);
- }
-
- // Акцизы в зависимости от мощности
- const enginePowerNum = parseFloat(enginePower) || 0;
- let powerInHP = enginePowerNum;
-
- if (enginePowerUnit === "кВт") {
- powerInHP = enginePowerNum * 1.35962;
- }
-
- // Акцизные ставки на 2024 год (в рублях за 1 л.с.)
- if (powerInHP <= 90) {
- exciseTax = powerInHP * 0;
- } else if (powerInHP <= 150) {
- exciseTax = powerInHP * 53;
- } else if (powerInHP <= 200) {
- exciseTax = powerInHP * 511;
- } else if (powerInHP <= 300) {
- exciseTax = powerInHP * 836;
- } else if (powerInHP <= 400) {
- exciseTax = powerInHP * 1425;
- } else {
- exciseTax = powerInHP * 1475;
- }
- }
-
- // Для электромобилей
- else if (engineType === "Электрический") {
- customDuty = 0; // Пошлина 0% для электромобилей
- exciseTax = 0; // Акциз 0 для электромобилей
- }
-
- // Для гибридов
- else if (engineType === "Гибридный") {
- // Для гибридов применяются те же ставки, что и для ДВС
- const engineVolumeNum = parseFloat(engineVolume) || 0;
-
- if (age === "3") {
- customDuty = calculationValue * 0.54;
- } else if (age === "3-5") {
- customDuty = calculationValue * 0.48;
- } else {
- const dutyPerCm3 = 2.5; // евро за см3
- const dutyInEur = engineVolumeNum * dutyPerCm3;
- customDuty = dutyInEur * eurRate;
- customDuty = Math.max(customDuty, calculationValue * 0.48);
- }
-
- // Акциз для гибридов рассчитывается так же, как для ДВС
- const enginePowerNum = parseFloat(enginePower) || 0;
- let powerInHP = enginePowerNum;
-
- if (enginePowerUnit === "кВт") {
- powerInHP = enginePowerNum * 1.35962;
- }
-
- if (powerInHP <= 90) {
- exciseTax = powerInHP * 0;
- } else if (powerInHP <= 150) {
- exciseTax = powerInHP * 53;
- } else if (powerInHP <= 200) {
- exciseTax = powerInHP * 511;
- } else if (powerInHP <= 300) {
- exciseTax = powerInHP * 836;
- } else if (powerInHP <= 400) {
- exciseTax = powerInHP * 1425;
- } else {
- exciseTax = powerInHP * 1475;
- }
- }
-
- // НДС 20% от (стоимость + пошлина + акциз)
- vat = (calculationValue + customDuty + exciseTax) * 0.2;
-
- // Утилизационный сбор
- if (engineType === "Электрический") {
- utilityFee = 3400; // Для электромобилей
- } else {
- utilityFee = enhancedPermeability ? 27000 : 3400; // Для внедорожников выше
- }
- }
- // Расчет для юридических лиц
+ // Расчет пошлины
+ if (engineType === "Электрический") {
+ customDuty = 0;
+ }
else {
- // Здесь должна быть другая логика расчета для юр.лиц
- // В данном примере используем упрощенный расчет, аналогичный физ.лицам
- customDuty = calculationValue * 0.12; // Примерная ставка для юр.лиц
-
- // Акцизы в зависимости от мощности
- const enginePowerNum = parseFloat(enginePower) || 0;
- let powerInHP = enginePowerNum;
-
- if (enginePowerUnit === "кВт") {
- powerInHP = enginePowerNum * 1.35962;
+ // Для ДВС и гибридов
+ if (age === "<3") {
+ const percentDuty = priceInRub * 0.54;
+ const volumeDuty = engineVolumeNum * 2.5 * eurRate;
+ customDuty = Math.max(percentDuty, volumeDuty);
+ }
+ else if (age === "3-5") {
+ // Ставки для авто 3-5 лет
+ let rate;
+ if (engineVolumeNum <= 1000) rate = 1.5;
+ else if (engineVolumeNum <= 1500) rate = 1.7;
+ else if (engineVolumeNum <= 1800) rate = 2.5;
+ else if (engineVolumeNum <= 2300) rate = 2.7;
+ else if (engineVolumeNum <= 3000) rate = 3.0;
+ else rate = 3.6;
+
+ customDuty = engineVolumeNum * rate * eurRate;
+ }
+ else {
+ // Ставки для авто старше 5 лет
+ let rate;
+ if (engineVolumeNum <= 1000) rate = 3.0;
+ else if (engineVolumeNum <= 1500) rate = 3.2;
+ else if (engineVolumeNum <= 1800) rate = 3.5;
+ else if (engineVolumeNum <= 2300) rate = 4.8;
+ else if (engineVolumeNum <= 3000) rate = 5.0;
+ else rate = 5.7;
+
+ const ageCoef = age === "5-10" ? 1.3 : 1.5;
+ customDuty = engineVolumeNum * rate * eurRate * ageCoef;
}
-
- // Акцизные ставки для юр.лиц могут отличаться
- if (powerInHP <= 90) {
- exciseTax = powerInHP * 0;
- } else if (powerInHP <= 150) {
- exciseTax = powerInHP * 55;
- } else {
- exciseTax = powerInHP * 531;
- }
-
- // НДС 20%
- vat = (calculationValue + customDuty + exciseTax) * 0.2;
-
- // Утилизационный сбор для юр.лиц
- utilityFee = engineType === "Электрический" ? 3500 : 5000;
}
- // Итоговая сумма таможенных платежей
- totalFees = customDuty + exciseTax + vat + utilityFee;
+ // Расчет акциза (только для ДВС и гибридов)
+ if (engineType !== "Электрический") {
+ let ageCoefficient = 1.0;
+ if (age === "3-5") ageCoefficient = 1.1;
+ else if (age === "5-10") ageCoefficient = 1.3;
+ else if (age === ">10") ageCoefficient = 1.5;
- // Сохраняем результаты расчетов
- const results = {
- priceInRub: priceInRub.toFixed(2),
- customDuty: customDuty.toFixed(2),
- exciseTax: exciseTax.toFixed(2),
- vat: vat.toFixed(2),
- utilityFee: utilityFee.toFixed(2),
- totalFees: totalFees.toFixed(2),
- totalWithCar: (priceInRub + totalFees).toFixed(2),
- };
+ if (powerInHP <= 90) {
+ exciseTax = 0;
+ } else if (powerInHP <= 150) {
+ exciseTax = powerInHP * 54 * ageCoefficient;
+ } else if (powerInHP <= 200) {
+ exciseTax = powerInHP * 714 * ageCoefficient;
+ } else if (powerInHP <= 300) {
+ exciseTax = powerInHP * 1218 * ageCoefficient;
+ } else if (powerInHP <= 400) {
+ exciseTax = powerInHP * 1260 * ageCoefficient;
+ } else if (powerInHP <= 500) {
+ exciseTax = powerInHP * 1302 * ageCoefficient;
+ } else {
+ exciseTax = powerInHP * 1374 * ageCoefficient;
+ }
+ }
- setCalculationResults(results);
+ // НДС 20%
+ vat = (calculationValue + customDuty + exciseTax) * 0.2;
- // После расчетов установить флаг анимации
- setSlideIn(true);
+ // Утилизационный сбор
+ utilityFee = engineType === "Электрический" ? 0 :
+ enhancedPermeability ? 27000 : 3400;
+ }
- // Выводим результаты также в консоль для отладки
- console.log({
- original: {
- price,
- currency,
- currencyRate: exchangeRate,
- country,
- age,
- engineType,
- hybridType,
- engineVolume,
- enginePower,
- enginePowerUnit,
- electricMotorPower,
- electricMotorPowerUnit,
- powerRatio,
- calculationType,
- enhancedPermeability,
- },
- calculation: results,
- });
+ // Итоговые расчеты
+ totalFees = customDuty + exciseTax + vat + utilityFee;
+
+ // Округление до целых рублей
+ const round = (value) => Math.round(value);
+
+ // Сохранение результатов
+ const results = {
+ priceInRub: round(priceInRub),
+ customDuty: round(customDuty),
+ exciseTax: round(exciseTax),
+ vat: round(vat),
+ utilityFee: round(utilityFee),
+ totalFees: round(totalFees),
+ totalWithCar: round(priceInRub + totalFees),
};
+ setCalculationResults(results);
+ setSlideIn(true);
+
+ // Логирование для отладки
+ console.log({
+ input: {
+ price, currency, age, engineType,
+ engineVolume, enginePower, enginePowerUnit,
+ calculationType, enhancedPermeability
+ },
+ calculation: results,
+ rates: { eurRate, exchangeRate }
+ });
+};
+
// Функция для получения символа валюты
const getCurrencySymbol = () => {
switch (currency) {
@@ -538,9 +716,10 @@ function CalculatorPage() {
displayEmpty
sx={selectStyles}
>
-
+
-
+
+
diff --git a/src/pages/admin/Personal.tsx b/src/pages/admin/Personal.tsx
index 15d93b1..09c0f4e 100644
--- a/src/pages/admin/Personal.tsx
+++ b/src/pages/admin/Personal.tsx
@@ -42,6 +42,7 @@ import PersonIcon from '@mui/icons-material/Person';
import BadgeIcon from '@mui/icons-material/Badge';
import WorkIcon from '@mui/icons-material/Work';
import { useAuth } from '../../context/AuthContext';
+import { useResponsive } from "../../theme/useResponsive";
import {
fetchTeam,
createTeamMember,
@@ -66,6 +67,7 @@ interface TeamResponse {
const Personal = () => {
const { token } = useAuth();
+ const { isMobile } = useResponsive();
const [staff, setStaff] = useState([]);
const [loading, setLoading] = useState(true);
const [error, setError] = useState('');
@@ -246,8 +248,8 @@ const Personal = () => {
component={Paper}
elevation={3}
sx={{
- borderRadius: 2,
- overflow: 'hidden'
+ borderRadius: isMobile ? "2vw" : "1vw",
+ overflow: isMobile ? "scroll" : "hidden"
}}
>
@@ -278,9 +280,9 @@ const Personal = () => {
src={getImageUrl(member.photo)}
alt={`${member.name} ${member.surname}`}
sx={{
- width: 56,
- height: 56,
- boxShadow: '0 2px 4px rgba(0,0,0,0.1)'
+ width: isMobile ? "15vw" : 56,
+ height: isMobile ? "15vw" : 56,
+ boxShadow: '0 0.2vw 0.4vw rgba(0,0,0,0.1)'
}}
>
{getInitials(member.name, member.surname)}
@@ -302,11 +304,13 @@ const Personal = () => {
onClick={() => handleOpenEditDialog(member)}
color="primary"
sx={{
- bgcolor: 'rgba(25, 118, 210, 0.1)',
- mr: 1,
- '&:hover': {
- bgcolor: 'rgba(25, 118, 210, 0.2)',
- }
+ color: "black",
+ "&:hover": {
+ color: "#C27664",
+ bgcolor: "transparent",
+ },
+ transition: "all 0.2s ease",
+ mr: 1
}}
>
@@ -317,10 +321,11 @@ const Personal = () => {
onClick={() => handleOpenDeleteDialog(member)}
color="error"
sx={{
- bgcolor: 'rgba(211, 47, 47, 0.1)',
- '&:hover': {
- bgcolor: 'rgba(211, 47, 47, 0.2)',
- }
+ "&:hover": {
+ color: "#C27664",
+ bgcolor: "transparent",
+ },
+ transition: "all 0.2s ease",
}}
>
@@ -336,7 +341,7 @@ const Personal = () => {
// Рендер сетки карточек
const renderGrid = () => (
-
+
{filteredStaff.map((member) => (
{
height: '100%',
display: 'flex',
flexDirection: 'column',
- borderRadius: 2,
- transition: 'transform 0.3s, box-shadow 0.3s',
- '&:hover': {
- transform: 'translateY(-5px)',
- boxShadow: '0 10px 20px rgba(0,0,0,0.1)'
+ borderRadius: isMobile ? "5vw" : "1vw",
+ transition: "transform 0.3s, box-shadow 0.3s",
+ boxShadow: "0 0.5vw 1vw rgba(0,0,0,0.15)",
+ "&:hover": {
+ transform: "translateY(-0.2vw)",
+ boxShadow: "0 0.5vw 1vw rgba(0,0,0,0.1)",
}
}}
>
@@ -364,12 +370,19 @@ const Personal = () => {
left: 0,
width: '100%',
height: '100%',
- objectFit: 'cover'
+ objectFit: 'cover',
+ userSelect: "none",
+ pointerEvents: "none",
}}
/>
-
-
+
+
{member.name} {member.surname}
@@ -380,21 +393,26 @@ const Personal = () => {
sx={{
bgcolor: '#e3f2fd',
color: '#1565c0',
- mt: 1
+ mt: 1,
+ fontSize: isMobile ? "3vw" : "inherit"
}}
/>
-
+
}
onClick={() => handleOpenEditDialog(member)}
sx={{
- color: '#1976d2',
- '&:hover': { bgcolor: 'rgba(25, 118, 210, 0.1)' }
+ color: "black",
+ "&:hover": { color: "#C27664", bgcolor: "transparent" },
+ transition: "all 0.2s ease",
+ fontFamily: "Unbounded",
+ fontWeight: "bold",
+ fontSize: isMobile ? "4.5vw" : "0.8vw",
}}
>
Изменить
@@ -404,8 +422,15 @@ const Personal = () => {
startIcon={}
onClick={() => handleOpenDeleteDialog(member)}
sx={{
- color: '#d32f2f',
- '&:hover': { bgcolor: 'rgba(211, 47, 47, 0.1)' }
+ color: "rgb(214, 74, 74)",
+ "&:hover": {
+ color: "rgba(150, 0, 0, 1)",
+ bgcolor: "transparent",
+ },
+ transition: "all 0.2s ease",
+ fontFamily: "Unbounded",
+ fontWeight: "bold",
+ fontSize: isMobile ? "4.5vw" : "0.8vw",
}}
>
Удалить
@@ -417,33 +442,57 @@ const Personal = () => {
);
+ // Общие стили для компонентов формы
+ const textFieldStyles = {
+ "& .MuiOutlinedInput-root": {
+ borderRadius: isMobile ? "5vw" : "1vw",
+ bgcolor: "white",
+ height: isMobile ? "8vw" : "4vw",
+ width: "100%",
+ border: "0.1vw solid #C27664",
+ fontFamily: "Unbounded",
+ fontSize: isMobile ? "4vw" : "1.2vw",
+ color: "#C27664",
+ mb: isMobile ? "3vw" : "0",
+ "& fieldset": {
+ border: "none",
+ },
+ },
+ };
+
return (
-
+
{/* Заголовок и кнопки управления */}
-
-
-
+
+
+
Управление персоналом
-
+