PageSourceSearch

https://proobruch.ru/assets/OlympiadModerationPage-CulR5nOB.js

js proobruch.ru collected 2026-10-09 22:39:02 UTC 3,697 bytes, 1 lines download raw bytes

1import{l as f,A as k,r as u,j as e,q as P,B as s,$ as C,at as T,aJ as M,ab as p,S as R,aP as Y,M as w,T as I,I as b}from"./vendor-0v--kTIY.js";import{c as v,u as A}from"./useOlympiadsAdmin-CTj9Ct9e.js";import{E as D}from"./EmptyState-IisV-vpT.js";import{P as E,a as $}from"./index-D44GA20K.js";import"./useOlympiads-DtsBdqFz.js";const H=()=>{const g=f(),{message:m}=k.useApp(),{data:n,isLoading:j,error:x,refetch:h}=v(!0),r=A(),[o,i]=u.useState(null),[c,l]=u.useState(""),y=a=>r.mutate({id:a,targetStatus:"PUBLISHED"}),S=()=>{const a=c.trim();if(!a){m.error("Укажите причину отклонения, чтобы автор понял, что исправить");return}o!=null&&r.mutate({id:o,targetStatus:"DRAFT",rejectionReason:a},{onSuccess:t=>{t.success&&(i(null),l(""))}})};return e.jsxs(E,{children:[e.jsx($,{title:"Модерация олимпиад",subtitle:e.jsx(e.Fragment,{children:"Здесь собраны олимпиады, отправленные администраторами на проверку. Одобрите олимпиаду, чтобы опубликовать её, или отклоните с указанием причины — автор доработает и отправит снова."})}),x&&e.jsx(P,{type:"error",message:"Не удалось загрузить список олимпиад на модерации",description:"Похоже, пропала связь с сервером. Нажмите «Попробовать снова» или обновите страницу через минуту.",showIcon:!0,style:{marginBottom:16},action:e.jsx(s,{onClick:()=>h(),children:"Попробовать снова"})}),j?e.jsx(C,{children:e.jsx(T,{active:!0,paragraph:{rows:6},title:!1})}):n&&n.length>0?e.jsx(M,{rowKey:"id",dataSource:n,pagination:{pageSize:20},columns:[{title:"Название",dataIndex:"title",key:"title"},{title:"Предмет",key:"subject",render:(a,t)=>{var d;return((d=t.subject)==null?void 0:d.name)??"—"}},{title:"Классы",key:"grades",render:(a,t)=>`${t.gradeFrom}–${t.gradeTo}`},{title:"Регистрация и оплата",key:"reg",render:(a,t)=>`${p(t.registrationStart).format("DD.MM.YYYY")} — ${p(t.registrationEnd).format("DD.MM.YYYY")}`},{title:"Действия",key:"actions",render:(a,t)=>e.jsxs(R,{wrap:!0,children:[e.jsx(s,{onClick:()=>g(`/admin/olympiads/${t.id}/edit`),children:"Открыть"}),e.jsx(Y,{title:"Одобрить и опубликовать?",description:"Олимпиада станет видна всем пользователям.",okText:"Опубликовать",cancelText:"Отмена",onConfirm:()=>y(t.id),children:e.jsx(s,{type:"primary",loading:r.isPending,children:"Одобрить"})}),e.jsx(s,{danger:!0,onClick:()=>{i(t.id),l("")},children:"Отклонить"})]})}]}):e.jsx(D,{title:"Нет олимпиад, ожидающих модерации",description:"Здесь появятся олимпиады, отправленные на проверку."}),e.jsxs(w,{title:"Отклонить олимпиаду",open:o!=null,onOk:S,onCancel:()=>i(null),okText:"Отклонить",cancelText:"Отмена",okButtonProps:{danger:!0,loading:r.isPending},children:[e.jsx(I.Paragraph,{type:"secondary",children:"Опишите, что нужно исправить. Автор увидит эту причину и сможет доработать олимпиаду."}),e.jsx(b.TextArea,{rows:4,value:c,onChange:a=>l(a.target.value),placeholder:"Например: уточните даты этапов и добавьте положение об олимпиаде",maxLength:1e3,showCount:!0})]})]})};export{H as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.