From 6122370bbf9dd57b0217a8e8342b74a6187fd4d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A2=D0=B8=D0=BC=D1=83=D1=80=20=D0=93=D0=BE=D1=80=D0=BE?= =?UTF-8?q?=D0=B4=D0=B5=D1=86=D0=BA=D0=B8=D0=B9?= Date: Fri, 23 Oct 2026 14:27:06 +0500 Subject: [PATCH] =?UTF-8?q?feat:=20=D1=83=D0=B1=D1=80=D0=B0=D0=BD=D0=BE=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D0=B5=20=C2=AB=D0=A6=D0=B5=D0=BB=D1=8C=C2=BB?= =?UTF-8?q?=20=D0=B8=D0=B7=20=D0=B7=D0=B0=D1=8F=D0=B2=D0=BA=D0=B8=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Поле убрано из формы, модели, чтения/записи и проверки. Колонка TripPurpose убрана из манифеста; в уже созданном списке SP она остаётся с данными тестовых заявок (провизионер колонки не удаляет). Co-Authored-By: Claude Opus 5.5 (1M context) --- src/webparts/requestPortal/forms/BusinessTrip/README.md | 2 +- src/webparts/requestPortal/forms/BusinessTrip/load.ts | 2 -- src/webparts/requestPortal/forms/BusinessTrip/model.ts | 4 ---- .../requestPortal/forms/BusinessTrip/provisioning.json | 1 - .../forms/BusinessTrip/sections/RouteSection.tsx | 9 +++------ src/webparts/requestPortal/forms/BusinessTrip/submit.ts | 1 - .../requestPortal/forms/BusinessTrip/validation.ts | 1 - 7 files changed, 4 insertions(+), 16 deletions(-) diff --git a/src/webparts/requestPortal/forms/BusinessTrip/README.md b/src/webparts/requestPortal/forms/BusinessTrip/README.md index 6c45892..aa6c38f 100644 --- a/src/webparts/requestPortal/forms/BusinessTrip/README.md +++ b/src/webparts/requestPortal/forms/BusinessTrip/README.md @@ -97,7 +97,7 @@ ## Секции формы EmployeeSection (сотрудник · должность · дата подачи · командирующая организация) → RouteSection (маршрут -лентой + цель) → TasksSection (задачи) → EstimateSection (смета + итог) → +лентой; поле «Цель» убрано 10-23, колонка `TripPurpose` в SP осталась от тестовых заявок) → TasksSection (задачи) → EstimateSection (смета + итог) → ObligationSection (текст обязательства + согласие). ## Точки входа diff --git a/src/webparts/requestPortal/forms/BusinessTrip/load.ts b/src/webparts/requestPortal/forms/BusinessTrip/load.ts index 793e5fd..fac015b 100644 --- a/src/webparts/requestPortal/forms/BusinessTrip/load.ts +++ b/src/webparts/requestPortal/forms/BusinessTrip/load.ts @@ -31,7 +31,6 @@ export async function loadBusinessTripRequest(itemId: number, listId?: string): 'TripCompany', 'TripCompanyId', 'TripRouteJson', - 'TripPurpose', 'TripTasksJson', 'TripEstimateJson', 'TripObligationAccepted', @@ -52,7 +51,6 @@ export async function loadBusinessTripRequest(itemId: number, listId?: string): TripCompany: (item.TripCompany as string) || '', TripCompanyId: (item.TripCompanyId as string) || '', Route: parseRoute(item.TripRouteJson), - TripPurpose: (item.TripPurpose as string) || '', Tasks: parseTasks(item.TripTasksJson), Estimate: parseEstimate(item.TripEstimateJson), TripObligationAccepted: item.TripObligationAccepted === true diff --git a/src/webparts/requestPortal/forms/BusinessTrip/model.ts b/src/webparts/requestPortal/forms/BusinessTrip/model.ts index 9e1b401..581575d 100644 --- a/src/webparts/requestPortal/forms/BusinessTrip/model.ts +++ b/src/webparts/requestPortal/forms/BusinessTrip/model.ts @@ -272,7 +272,6 @@ export interface IFormData { TripCompanyId: string; Route: ITripRoute; - TripPurpose: string; /** Задание на командировку — список задач по порядку. */ Tasks: string[]; @@ -308,8 +307,6 @@ export interface ISectionProps { employee?: ITripEmployee; } -export const DEFAULT_PURPOSE = 'Производственная необходимость'; - /** Первая точка новой заявки. id фиксированный: у новой заявки на неё ссылаются позиции сметы. */ export const FIRST_STOP_ID = 'stop-1'; @@ -358,7 +355,6 @@ export const EMPTY_DATA: IFormData = { TripCompany: '', TripCompanyId: '', Route: EMPTY_ROUTE, - TripPurpose: DEFAULT_PURPOSE, // Новая заявка сразу показывает одну пустую строку задачи — понятнее, что заполнять. Tasks: [''], Estimate: EMPTY_ESTIMATE, diff --git a/src/webparts/requestPortal/forms/BusinessTrip/provisioning.json b/src/webparts/requestPortal/forms/BusinessTrip/provisioning.json index bba3c97..9825541 100644 --- a/src/webparts/requestPortal/forms/BusinessTrip/provisioning.json +++ b/src/webparts/requestPortal/forms/BusinessTrip/provisioning.json @@ -20,7 +20,6 @@ { "internalName": "TripStartDate", "title": "Командировка с", "type": "DateTime", "dateOnly": true }, { "internalName": "TripEndDate", "title": "Командировка по", "type": "DateTime", "dateOnly": true }, { "internalName": "TripDaysCount", "title": "Дней командировки", "type": "Number" }, - { "internalName": "TripPurpose", "title": "Цель командировки", "type": "Note" }, { "internalName": "TripTasks", "title": "Задание на командировку", "type": "Note" }, { "internalName": "TripTasksJson", "title": "Задание на командировку (JSON)", "type": "Note" }, diff --git a/src/webparts/requestPortal/forms/BusinessTrip/sections/RouteSection.tsx b/src/webparts/requestPortal/forms/BusinessTrip/sections/RouteSection.tsx index 7bedc91..056b0a6 100644 --- a/src/webparts/requestPortal/forms/BusinessTrip/sections/RouteSection.tsx +++ b/src/webparts/requestPortal/forms/BusinessTrip/sections/RouteSection.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { useEffect, useState } from 'react'; import styles from './RouteSection.module.scss'; -import { CollapseSection, FormField, TextArea, useFormReadOnly } from '../../../shared/ui'; +import { CollapseSection, useFormReadOnly } from '../../../shared/ui'; import { ISectionProps } from '../model'; import { RouteEditor } from '../components/route/RouteEditor'; import { RouteScheme } from '../components/route/RouteScheme'; @@ -9,8 +9,8 @@ import { RouteViewMode, RouteViewSwitch } from '../components/route/RouteViewSwi import { stopCardDomId } from '../components/route/RouteStopCard'; /** - * Куда и зачем: маршрут (города + объекты + даты) и цель командировки. Маршрут — - * в двух видах: «Форма» для заполнения и «Схема» для просмотра. Заявитель + * Куда едет сотрудник: маршрут (города + объекты + даты) в двух видах — «Форма» + * для заполнения и «Схема» для просмотра. Заявитель * начинает с формы (он пришёл заполнять), согласующий — со схемы (ему важнее * увидеть маршрут целиком). */ @@ -41,9 +41,6 @@ export const RouteSection: React.FC = ({ data, set, context }) => )} - -