Merge branch 'main' of http://git.tnsu.kz/timur.gorodetskiy/request-portal
Tests / frontend-test (push) Successful in 1m5s

This commit is contained in:
Тимур Городецкий
2026-08-11 10:39:26 +05:00
34 changed files with 2131 additions and 382 deletions
@@ -2,7 +2,7 @@
"dataListTitle": "Прием на работу — согласование",
"columns": [
{ "internalName": "TansuSiteApprover", "title": "Согласующий", "type": "User", "userSelectionMode": "PeopleOnly" },
{ "internalName": "RequestStatus", "title": "Статус", "type": "Choice", "choices": ["Черновик", "Ждёт очереди", "На согласовании", "На исполнении", "Согласовано", "Выполнено", "Отклонено", "Возвращена на доработку"] },
{ "internalName": "ApprovalStatus", "title": "Статус", "type": "Choice", "choices": ["Черновик", "Ждёт очереди", "На согласовании", "На исполнении", "Согласовано", "Выполнено", "Отклонено", "Возвращена на доработку"] },
{ "internalName": "Ticket", "title": "Заявка", "type": "Lookup", "lookupList": "Прием на работу — данные", "lookupShowField": "Title" },
{ "internalName": "Date", "title": "Дата", "type": "DateTime" },
{ "internalName": "Comment", "title": "Комментарий", "type": "Note" },
@@ -23,7 +23,7 @@ export async function loadHireRequest(itemId: number): Promise<ILoadedRequest> {
const item = (await sp.web.lists
.getByTitle(LIST_TITLE)
.items.getById(itemId)
.select(...SCALAR_FIELDS, 'Status', 'RequestUniqueCode')()) as Record<string, unknown>;
.select(...SCALAR_FIELDS, 'RequestStatus', 'RequestUniqueCode')()) as Record<string, unknown>;
const data: IFormData = { ...EMPTY_DATA };
const writable = data as unknown as Record<string, string>;
@@ -39,5 +39,5 @@ export async function loadHireRequest(itemId: number): Promise<ILoadedRequest> {
}
});
return { data, status: (item.Status as string) || '', code: (item.RequestUniqueCode as string) || '' };
return { data, status: (item.RequestStatus as string) || '', code: (item.RequestUniqueCode as string) || '' };
}
@@ -2,7 +2,7 @@
"dataListTitle": "Прием на работу — данные",
"columns": [
{ "internalName": "RequestUniqueCode", "title": "Уникальный код заявки", "type": "Text" },
{ "internalName": "Status", "title": "Статус", "type": "Choice", "choices": ["Черновик", "На согласовании", "Согласовано", "Отклонено", "Возвращена на доработку", "Выполнение", "Закрыта"] },
{ "internalName": "RequestStatus", "title": "Статус", "type": "Choice", "choices": ["Черновик", "На согласовании", "Согласовано", "Отклонено", "Возвращена на доработку", "Выполнение", "Закрыта"] },
{ "internalName": "Phone", "title": "Телефон", "type": "Text" },
{ "internalName": "HireType", "title": "Тип приёма", "type": "Choice", "choices": ["Новый сотрудник", "Вместо уволенного"] },
@@ -24,7 +24,7 @@ function buildTitle(data: IFormData): string {
/** Поля элемента списка данных из модели формы (текст/выбор/даты/числа). */
function buildItem(data: IFormData, status: string): Record<string, unknown> {
const item: Record<string, unknown> = { Title: buildTitle(data), Status: status };
const item: Record<string, unknown> = { Title: buildTitle(data), RequestStatus: status };
(Object.keys(data) as (keyof IFormData)[]).forEach((key) => {
const value = data[key];
@@ -2,7 +2,7 @@
"dataListTitle": "Организация рабочего места — согласование",
"columns": [
{ "internalName": "TansuSiteApprover", "title": "Согласующий", "type": "User", "userSelectionMode": "PeopleOnly" },
{ "internalName": "RequestStatus", "title": "Статус", "type": "Choice", "choices": ["Черновик", "Ждёт очереди", "На согласовании", "На исполнении", "Согласовано", "Выполнено", "Отклонено", "Возвращена на доработку"] },
{ "internalName": "ApprovalStatus", "title": "Статус", "type": "Choice", "choices": ["Черновик", "Ждёт очереди", "На согласовании", "На исполнении", "Согласовано", "Выполнено", "Отклонено", "Возвращена на доработку"] },
{ "internalName": "Ticket", "title": "Заявка", "type": "Lookup", "lookupList": "Организация рабочего места — данные", "lookupShowField": "Title" },
{ "internalName": "Date", "title": "Дата", "type": "DateTime" },
{ "internalName": "Comment", "title": "Комментарий", "type": "Note" },
@@ -20,7 +20,7 @@ export async function loadWorkplaceRequest(itemId: number): Promise<ILoadedReque
const item = (await getSP()
.web.lists.getByTitle(LIST_TITLE)
.items.getById(itemId)
.select(...SCALAR_FIELDS, 'NeedsEquipment', 'Status', 'RequestUniqueCode')()) as Record<string, unknown>;
.select(...SCALAR_FIELDS, 'NeedsEquipment', 'RequestStatus', 'RequestUniqueCode')()) as Record<string, unknown>;
const data: IFormData = { ...EMPTY_DATA };
const writable = data as unknown as Record<string, string>;
@@ -38,5 +38,5 @@ export async function loadWorkplaceRequest(itemId: number): Promise<ILoadedReque
data.NeedsEquipment = item.NeedsEquipment === true;
return { data, status: (item.Status as string) || '', code: (item.RequestUniqueCode as string) || '' };
return { data, status: (item.RequestStatus as string) || '', code: (item.RequestUniqueCode as string) || '' };
}
@@ -2,7 +2,7 @@
"dataListTitle": "Организация рабочего места — данные",
"columns": [
{ "internalName": "RequestUniqueCode", "title": "Уникальный код заявки", "type": "Text" },
{ "internalName": "Status", "title": "Статус", "type": "Choice", "choices": ["Черновик", "На согласовании", "Согласовано", "Отклонено", "Возвращена на доработку", "Выполнение", "Закрыта"] },
{ "internalName": "RequestStatus", "title": "Статус", "type": "Choice", "choices": ["Черновик", "На согласовании", "Согласовано", "Отклонено", "Возвращена на доработку", "Выполнение", "Закрыта"] },
{ "internalName": "FullName", "title": "Ф.И.О.", "type": "Text", "required": true },
{ "internalName": "NameLatin", "title": "Фамилия и имя (латиница)", "type": "Text" },
@@ -34,7 +34,7 @@ function buildTitle(data: IFormData): string {
/** Поля элемента списка данных из модели формы. */
function buildItem(data: IFormData, status: string, sourceHireId?: number): Record<string, unknown> {
const item: Record<string, unknown> = { Title: buildTitle(data), Status: status };
const item: Record<string, unknown> = { Title: buildTitle(data), RequestStatus: status };
(Object.keys(data) as (keyof IFormData)[]).forEach((key) => {
const value = data[key];