Compare commits

..

2 Commits

Author SHA1 Message Date
Тимур Городецкий 3a8d10a7f5 fix(ct): подсказки поиска в диалоге замены не обрезаются
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-03 15:09:54 +05:00
Тимур Городецкий 1e367f5fcc fix(ct): фиксируем порядок согласующих (order0) в SP при отправке
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-03 15:03:19 +05:00
3 changed files with 13 additions and 2 deletions
@@ -199,6 +199,14 @@
overflow-y: auto; overflow-y: auto;
} }
// Модификатор для списка внутри диалога (замена согласующего): absolute-подсказки
// обрезались телом диалога (overflow-y: auto). В потоке список раздвигает диалог,
// а при длинном списке скроллится внутри него.
.suggestionsInline {
position: static;
box-shadow: none;
}
.suggestionItem { .suggestionItem {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@@ -334,7 +334,7 @@ export const Step4Approval: React.FC<Props> = (props) => {
/> />
</FormField> </FormField>
{a.replaceDialog.suggestions.length > 0 && !a.replaceDialog.selected && ( {a.replaceDialog.suggestions.length > 0 && !a.replaceDialog.selected && (
<ul className={styles.suggestions}> <ul className={`${styles.suggestions} ${styles.suggestionsInline}`}>
{a.replaceDialog.suggestions.map((s) => ( {a.replaceDialog.suggestions.map((s) => (
<li <li
key={s.spId} key={s.spId}
@@ -577,6 +577,9 @@ export class CtService {
for (const m of chain) { for (const m of chain) {
if (!m.spApprovalId) continue; if (!m.spApprovalId) continue;
const status = m.role === "Инициатор" ? "Рекомендую" : "На согласовании"; const status = m.role === "Инициатор" ? "Рекомендую" : "На согласовании";
// Пишем order0 = позиция участника у инициатора. Удаление/добавление согласующих
// пересчитывает порядок только локально; здесь фиксируем его в SP, иначе согласующий
// при свежей загрузке (сортировка по order0) увидит другой порядок и не ту очередь.
const res = await this.http.fetch( const res = await this.http.fetch(
this._liById(LISTS.APPROVAL_CHAIN, m.spApprovalId), this._liById(LISTS.APPROVAL_CHAIN, m.spApprovalId),
SPHttpClient.configurations.v1, SPHttpClient.configurations.v1,
@@ -587,7 +590,7 @@ export class CtService {
"IF-MATCH": "*", "IF-MATCH": "*",
"X-HTTP-Method": "MERGE", "X-HTTP-Method": "MERGE",
}, },
body: JSON.stringify({ status }), body: JSON.stringify({ status, order0: m.order, Title: String(m.order) }),
}, },
); );
if (!res.ok) if (!res.ok)