feat: added status next in que and changed forms state machine
This commit is contained in:
@@ -3,6 +3,7 @@ import styles from './approval.module.scss';
|
||||
import { Icon } from '../../ui';
|
||||
import { IUseMatrixEditor } from '../useMatrixEditor';
|
||||
import { ISiteUser } from '../models/ISiteUser';
|
||||
import { StatusBadge } from './StatusBadge';
|
||||
import { UserPicker } from './UserPicker';
|
||||
|
||||
export interface IApprovalMatrixProps {
|
||||
@@ -53,7 +54,7 @@ export const ApprovalMatrix: React.FC<IApprovalMatrixProps> = ({
|
||||
<tr key={i}>
|
||||
<td>{r.who}</td>
|
||||
<td>{r.position}</td>
|
||||
<td>{r.status}</td>
|
||||
<td>{r.status && r.status !== '—' ? <StatusBadge status={r.status} /> : '—'}</td>
|
||||
<td>{r.date}</td>
|
||||
{editable && (
|
||||
<td className={styles.matrixActions}>
|
||||
|
||||
@@ -74,8 +74,10 @@ export const DecisionPanel: React.FC<IDecisionPanelProps> = ({ service, requestI
|
||||
|
||||
const isExecution = phase === APPROVAL_PHASE.execution;
|
||||
|
||||
if (checking) {
|
||||
return <div className={styles.state}>Проверяем вашу очередь…</div>;
|
||||
// Пока проверяем очередь или если действий нет (не твоя очередь / заявка
|
||||
// обработана / тебя нет в маршруте) — панель не показываем вовсе.
|
||||
if (checking || rowId === undefined) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (resultStatus) {
|
||||
@@ -89,14 +91,6 @@ export const DecisionPanel: React.FC<IDecisionPanelProps> = ({ service, requestI
|
||||
);
|
||||
}
|
||||
|
||||
if (rowId === undefined) {
|
||||
return (
|
||||
<div className={styles.panel}>
|
||||
<Alert variant="warn">Сейчас не ваша очередь, либо заявка уже обработана.</Alert>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
// Фаза исполнения: одно действие «Выполнено» (без обязательного комментария),
|
||||
// строка помечается как «Согласовано» → computeRequestStatus переведёт заявку в
|
||||
// «Выполнение»/«Закрыта».
|
||||
@@ -114,7 +108,7 @@ export const DecisionPanel: React.FC<IDecisionPanelProps> = ({ service, requestI
|
||||
/>
|
||||
</FormField>
|
||||
<div className={styles.actions}>
|
||||
<Button variant="accent" disabled={submitting} onClick={() => decide('approve')}>
|
||||
<Button variant="accent" disabled={submitting} onClick={() => decide('execute')}>
|
||||
<Icon name="check" size="sm" />
|
||||
Выполнено
|
||||
</Button>
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
color: $gray-700;
|
||||
}
|
||||
|
||||
.queued {
|
||||
background: $gray-100;
|
||||
color: $gray-500;
|
||||
}
|
||||
|
||||
.onApproval {
|
||||
background: $blue-50;
|
||||
color: $blue-600;
|
||||
|
||||
@@ -5,8 +5,11 @@ import { REQUEST_STATUS } from '../models/statuses';
|
||||
// Цвет бейджа по статусу заявки. Неизвестный статус → нейтральный (как черновик).
|
||||
const VARIANT: Record<string, string> = {
|
||||
[REQUEST_STATUS.draft]: styles.draft,
|
||||
[REQUEST_STATUS.queued]: styles.queued,
|
||||
[REQUEST_STATUS.onApproval]: styles.onApproval,
|
||||
[REQUEST_STATUS.onExecution]: styles.onApproval, // активный шаг — как «на согласовании»
|
||||
[REQUEST_STATUS.approved]: styles.approved,
|
||||
[REQUEST_STATUS.executed]: styles.approved, // выполнено — как «согласовано» (зелёный)
|
||||
[REQUEST_STATUS.rejected]: styles.rejected,
|
||||
[REQUEST_STATUS.returned]: styles.returned,
|
||||
[REQUEST_STATUS.execution]: styles.execution,
|
||||
|
||||
Reference in New Issue
Block a user