Добавлены настройки для удаленных изображений в конфигурацию Next.js. Удалены неиспользуемые заголовки и улучшен интерфейс компонентов панели управления и мессенджера, включая добавление новых заголовков с кнопками и сокращенных названий компаний. Оптимизированы стили и структура кода в компонентах.

This commit is contained in:
Bivekich
2025-07-17 12:26:08 +03:00
parent 44867c8aee
commit abd0df1fe7
10 changed files with 375 additions and 124 deletions

View File

@ -122,6 +122,37 @@ export function MessengerChat({ counterparty }: MessengerChatProps) {
return name.charAt(0).toUpperCase()
}
const getShortCompanyName = (fullName: string) => {
if (!fullName) return 'Полное название не указано'
// Словарь для замены полных форм на сокращенные
const legalFormReplacements: { [key: string]: string } = {
'Общество с ограниченной ответственностью': 'ООО',
'Открытое акционерное общество': 'ОАО',
'Закрытое акционерное общество': 'ЗАО',
'Публичное акционерное общество': 'ПАО',
'Непубличное акционерное общество': 'НАО',
'Акционерное общество': 'АО',
'Индивидуальный предприниматель': 'ИП',
'Товарищество с ограниченной ответственностью': 'ТОО',
'Частное предприятие': 'ЧП',
'Субъект предпринимательской деятельности': 'СПД'
}
let result = fullName
// Заменяем полные формы на сокращенные
for (const [fullForm, shortForm] of Object.entries(legalFormReplacements)) {
const regex = new RegExp(`^${fullForm}\\s+`, 'i')
if (regex.test(result)) {
result = result.replace(regex, `${shortForm} `)
break
}
}
return result
}
const getTypeLabel = (type: string) => {
switch (type) {
case 'FULFILLMENT':
@ -273,17 +304,17 @@ export function MessengerChat({ counterparty }: MessengerChatProps) {
</Avatar>
<div>
<h3 className="text-white font-medium">
{getOrganizationName(counterparty)}
</h3>
<p className="text-white/60 text-sm mb-1">
{getManagerName(counterparty)}
</p>
<div className="flex items-center space-x-2">
<div className="flex items-center space-x-3">
<h3 className="text-white font-medium">
{getOrganizationName(counterparty)}
</h3>
<Badge className={`${getTypeColor(counterparty.type)} text-xs`}>
{getTypeLabel(counterparty.type)}
</Badge>
</div>
<p className="text-white/60 text-sm">
{getShortCompanyName(counterparty.fullName || '')}
</p>
</div>
</div>

View File

@ -48,6 +48,37 @@ export function MessengerConversations({
return name.charAt(0).toUpperCase()
}
const getShortCompanyName = (fullName: string) => {
if (!fullName) return 'Полное название не указано'
// Словарь для замены полных форм на сокращенные
const legalFormReplacements: { [key: string]: string } = {
'Общество с ограниченной ответственностью': 'ООО',
'Открытое акционерное общество': 'ОАО',
'Закрытое акционерное общество': 'ЗАО',
'Публичное акционерное общество': 'ПАО',
'Непубличное акционерное общество': 'НАО',
'Акционерное общество': 'АО',
'Индивидуальный предприниматель': 'ИП',
'Товарищество с ограниченной ответственностью': 'ТОО',
'Частное предприятие': 'ЧП',
'Субъект предпринимательской деятельности': 'СПД'
}
let result = fullName
// Заменяем полные формы на сокращенные
for (const [fullForm, shortForm] of Object.entries(legalFormReplacements)) {
const regex = new RegExp(`^${fullForm}\\s+`, 'i')
if (regex.test(result)) {
result = result.replace(regex, `${shortForm} `)
break
}
}
return result
}
const getTypeLabel = (type: string) => {
switch (type) {
case 'FULFILLMENT':
@ -154,18 +185,17 @@ export function MessengerConversations({
</Avatar>
<div className="flex-1 min-w-0">
<h4 className="text-white font-medium text-sm leading-tight truncate mb-1">
{getOrganizationName(org)}
</h4>
<div className="flex items-center space-x-2 mb-2">
<Badge className={`${getTypeColor(org.type)} text-xs`}>
<div className="flex items-center justify-between mb-1">
<h4 className="text-white font-medium text-sm leading-tight truncate">
{getOrganizationName(org)}
</h4>
<Badge className={`${getTypeColor(org.type)} text-xs flex-shrink-0 ml-2`}>
{getTypeLabel(org.type)}
</Badge>
</div>
<p className="text-white/60 text-xs truncate">
{getManagerName(org)}
{getShortCompanyName(org.fullName || '')}
</p>
</div>
</div>

View File

@ -65,14 +65,6 @@ export function MessengerDashboard() {
<Sidebar />
<main className="flex-1 ml-56 px-6 py-4 overflow-hidden">
<div className="h-full w-full flex flex-col">
{/* Заголовок - фиксированная высота */}
<div className="flex items-center justify-between mb-4 flex-shrink-0">
<div>
<h1 className="text-xl font-bold text-white mb-1">Мессенджер</h1>
<p className="text-white/70 text-sm">Общение с контрагентами</p>
</div>
</div>
{/* Основной контент - сетка из 2 колонок */}
<div className="flex-1 overflow-hidden">
<div className="grid grid-cols-[350px_1fr] gap-4 h-full">