[598][@ant] fix: документ списания по центру + общий Loader + убрать выдуманный текст из записки/протокола — чище UX подтверждения

- DocumentViewerDialog: лист документа центрируется (max-width 900px), а не прижат влево на maximized-диалоге
- Loader (общий) вместо сырого q-spinner в ConfirmWriteoffDialog/SubmitToCouncilDialog и трёх Process*InfoWidget
- 1111 Служебная записка + 1107 Протокол: убраны строки «Идентификатор проекта списания» и бухпроводка Дт86/Кт10 — пользователь не просил этот текст

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
ant
2026-06-15 05:04:31 +00:00
parent 526ae1fc9e
commit b2ef59cc49
8 changed files with 31 additions and 33 deletions
@@ -142,8 +142,6 @@ th { width: 30%; }
</tbody>
</table>
<p>{% trans 'proposal_ref' %} {{ proposal_hash }}</p>
<hr />
<p>{% trans 'closing_time', decision.time %}</p>
<div class="signature">
@@ -184,7 +182,6 @@ export const translations = {
meeting_format_value: 'заочная',
agenda_subject: 'Утвердить списание {0} позиций имущества со складов кооперативных участков на общую сумму {1} (цикл от {2}) по ЦПП «Стол заказов» — поданное Заявление председателя о списании скоропорта.',
decision_writeoff_text: 'Списать {0} позиций имущества на общую сумму {1} с балансов кооперативных участков через транзит счёта 91 «Прочие доходы и расходы» с закрытием на счёт 86 Целевого финансирования программы. Движений по кошелькам пайщиков не производить.',
proposal_ref: 'Идентификатор проекта списания:',
},
}
@@ -143,10 +143,6 @@ th, td {
<p>{% trans 'confirmation' %}</p>
<p style="margin: 0px">{% trans 'proposal_ref' %} {{ proposal_hash }}</p>
<p>{% trans 'ledger_note' %}</p>
<p>{% trans 'signature' %}</p>
<p style="margin: 0px">{% trans 'chairman_of_branch', branch_name %} {{ chairman.full_name_or_short_name }}</p>
<p style="margin: 0px">{{ meta.created_at }}</p>
@@ -165,8 +161,6 @@ export const translations = {
col_reason: 'Причина',
total: 'ИТОГО',
confirmation: 'Списание произведено. Имущество физически выбыло со склада кооперативного участка и снято с учёта.',
proposal_ref: 'Идентификатор проекта списания:',
ledger_note: 'Списание оформляется бухгалтерской проводкой Дт 86 «Целевое финансирование» / Кт 10 «Материалы»; движений по кошелькам пайщиков не производится.',
signature: 'Подписано электронной подписью.',
chairman_of_branch: 'Председатель кооперативного участка «{0}»:',
},
@@ -4,6 +4,7 @@ import { useSessionStore } from 'src/entities/Session';
import { FailAlert, SuccessAlert } from 'src/shared/api';
import { DigitalDocument } from 'src/shared/lib/document';
import { BaseButton, BaseDialog } from 'src/shared/ui/base';
import { Loader } from 'src/shared/ui/Loader';
import {
getWriteoffStatementSignablePayload,
submitWriteoffDraft,
@@ -85,9 +86,7 @@ BaseDialog(
:close-on-backdrop="false",
@update:model-value="(v) => emit('update:modelValue', v)"
)
.submit-council__loading(v-if="loading")
q-spinner(color="primary", size="42px")
.t-muted Формируем Заявление
Loader(v-if="loading", text="Формируем Заявление…")
template(v-else-if="previewDoc")
.t-muted.submit-council__intro
@@ -4,6 +4,7 @@ import { useSessionStore } from 'src/entities/Session';
import { FailAlert, SuccessAlert } from 'src/shared/api';
import { DigitalDocument } from 'src/shared/lib/document';
import { BaseButton, BaseDialog } from 'src/shared/ui/base';
import { Loader } from 'src/shared/ui/Loader';
import {
confirmWriteoff,
getWriteoffServiceMemoSignablePayload,
@@ -83,9 +84,7 @@ BaseDialog(
:close-on-backdrop="false",
@update:model-value="(v) => emit('update:modelValue', v)"
)
.confirm-writeoff(v-if="loading")
q-spinner(size="24px")
span.text-grey-7 Формируем Служебную записку
Loader(v-if="loading", text="Формируем Служебную записку…")
template(v-else-if="previewDoc")
.t-muted.confirm-writeoff__intro
@@ -106,10 +105,6 @@ BaseDialog(
<style lang="scss" scoped>
.confirm-writeoff {
display: flex;
align-items: center;
gap: var(--p-3, 12px);
&__intro {
margin-bottom: var(--p-4, 16px);
}
@@ -11,11 +11,13 @@ BaseDialog(
maximized
@update:model-value='(v) => emit("update:modelValue", v)'
)
BaseDocument(
v-if='modelValue && documentAggregate'
:document-aggregate='documentAggregate'
)
.text-body2.text-grey-7(v-else) Документ недоступен
//- Документ — листом А4 по центру экрана. На широком maximized-диалоге сам
//- q-card документа растягивается во всю ширину и визуально «прижимается»
//- влево; центрируем его контейнером с ограничением по ширине.
.document-viewer__center(v-if='modelValue && documentAggregate')
BaseDocument(:document-aggregate='documentAggregate')
.document-viewer__center(v-else)
.text-body2.text-grey-7 Документ недоступен
</template>
<script setup lang="ts">
@@ -33,3 +35,17 @@ const emit = defineEmits<{
'update:modelValue': [value: boolean]
}>()
</script>
<style lang="scss" scoped>
.document-viewer__center {
display: flex;
justify-content: center;
width: 100%;
// Лист документа — ограничен по ширине и центрирован (страница А4).
:deep(> *) {
width: 100%;
max-width: 900px;
}
}
</style>
@@ -1,8 +1,6 @@
<template lang="pug">
.process-return-info
div(v-if='loading')
q-spinner(size='sm')
span.q-ml-sm.text-grey-7 Загрузка содержания заявления
Loader(v-if='loading', text='Загрузка содержания заявления…')
div(v-else-if='snapshot')
.row.q-col-gutter-md
.col-12.col-sm-6
@@ -39,6 +37,7 @@
<script lang="ts" setup>
import { computed, onMounted, ref } from 'vue'
import { useProcessStore, type IProcessSnapshot } from 'src/entities/Process'
import { Loader } from 'src/shared/ui/Loader'
interface Props {
processHash: string
@@ -1,8 +1,6 @@
<template lang="pug">
.process-supply-info
div(v-if='loading')
q-spinner(size='sm')
span.q-ml-sm.text-grey-7 Загрузка содержания заказа
Loader(v-if='loading', text='Загрузка содержания заказа…')
div(v-else-if='snapshot')
.row.q-col-gutter-md
.col-12.col-sm-6
@@ -39,6 +37,7 @@
<script lang="ts" setup>
import { computed, onMounted, ref } from 'vue'
import { useProcessStore, type IProcessSnapshot } from 'src/entities/Process'
import { Loader } from 'src/shared/ui/Loader'
interface Props {
processHash: string
@@ -1,8 +1,6 @@
<template lang="pug">
.process-writeoff-info
div(v-if='loading')
q-spinner(size='sm')
span.q-ml-sm.text-grey-7 Загрузка проекта решения
Loader(v-if='loading', text='Загрузка проекта решения…')
div(v-else-if='snapshot')
.row.q-col-gutter-md
.col-12.col-sm-6
@@ -40,6 +38,7 @@
import { computed, onMounted, ref } from 'vue'
import { useProcessStore, type IProcessSnapshot } from 'src/entities/Process'
import { formatAsset2Digits } from 'src/shared/lib/utils/formatAsset2Digits'
import { Loader } from 'src/shared/ui/Loader'
interface Props {
processHash: string