PageSourceSearch

https://m3barber.ru/assets/edit-COCaTHiJ.js

js m3barber.ru collected 2026-10-04 09:38:48 UTC 5,273 bytes, 1 lines download raw bytes

1import{a0 as s,aX as e,bA as j,aP as p,aQ as i,a8 as o,b1 as t,a9 as b,bC as w,aR as d,aW as Y,bQ as m}from"./vendor-antd-Jw8mkMM4.js";import{n as P,f as V,l as n,W as q}from"./vendor-refine-CwVNplFY.js";import{R as A}from"./index-CIEAAbGN.js";import"./vendor-calendar-D7F0Uuet.js";const S=()=>{var h,x;const{data:u}=P(),{formProps:a,saveButtonProps:f,queryResult:c}=V(),l=(h=c==null?void 0:c.data)==null?void 0:h.data,g=s.useWatch("status",a==null?void 0:a.form),{selectProps:v}=n({resource:"barbershops",optionLabel:"name",optionValue:"id",defaultValue:l==null?void 0:l.barbershop_id}),{selectProps:_}=n({resource:"users",optionLabel:r=>`${r.name} ${r.surname||""}`.trim(),optionValue:"id",filters:[{field:"role",operator:"eq",value:"barber"}],defaultValue:l==null?void 0:l.barber_id,queryOptions:{enabled:!!u&&u.role!==A.BARBER}}),{selectProps:I}=n({resource:"services",optionLabel:"name",optionValue:"id",defaultValue:l==null?void 0:l.service_id,filters:[{field:"is_active",operator:"eq",value:!0}]}),{selectProps:y}=n({resource:"users",optionLabel:r=>`${r.name} ${r.surname||""} - ${r.phone||""}`.trim(),optionValue:"id",filters:[{field:"role",operator:"eq",value:"client"}],defaultValue:l==null?void 0:l.client_id});return e.jsx(q,{saveButtonProps:f,children:e.jsxs(s,{...a,layout:"vertical",children:[(l==null?void 0:l.status)==="completed"&&e.jsx(j,{message:"Эта запись завершена. Изменения могут повлиять на отчетность.",type:"warning",showIcon:!0,style:{marginBottom:16}}),e.jsxs(p,{gutter:16,children:[e.jsx(i,{xs:24,md:12,children:e.jsxs(o,{title:"Основная информация",size:"small",style:{marginBottom:16},children:[e.jsx(s.Item,{label:"Барбершоп",name:"barbershop_id",rules:[{required:!0,message:"Выберите барбершоп"}],children:e.jsx(t,{...v,placeholder:"Выберите барбершоп"})}),e.jsx(s.Item,{label:"Барбер",name:"barber_id",rules:[{required:!0,message:"Выберите барбера"}],children:e.jsx(t,{..._,placeholder:"Выберите барбера"})}),e.jsx(s.Item,{label:"Услуга",name:"service_id",rules:[{required:!0,message:"Выберите услугу"}],children:e.jsx(t,{...I,placeholder:"Выберите услугу"})}),e.jsx(s.Item,{label:"Клиент",name:"client_id",children:e.jsx(t,{...y,placeholder:"Выберите клиента",showSearch:!0,allowClear:!0})})]})}),e.jsx(i,{xs:24,md:12,children:e.jsxs(o,{title:"Дата и время",size:"small",style:{marginBottom:16},children:[e.jsx(s.Item,{label:"Дата",name:"date",rules:[{required:!0,message:"Выберите дату"}],getValueProps:r=>({value:r?b(r):void 0}),normalize:r=>r?r.format("YYYY-MM-DD"):void 0,children:e.jsx(w,{format:"DD.MM.YYYY",style:{width:"100%"}})}),e.jsx(s.Item,{label:"Время начала",name:"start_time",rules:[{required:!0,message:"Укажите время начала"}],children:e.jsx(d,{placeholder:"14:00"})}),e.jsx(Y,{}),e.jsx(s.Item,{label:"Статус",name:"status",rules:[{required:!0}],children:e.jsxs(t,{children:[e.jsx(t.Option,{value:"new_appointment",children:"Новая запись"}),e.jsx(t.Option,{value:"pending",children:"Ожидает"}),e.jsx(t.Option,{value:"confirmed",children:"Пришел"}),e.jsx(t.Option,{value:"completed",children:"Завершена"}),e.jsx(t.Option,{value:"cancelled",children:"Отменена"}),e.jsx(t.Option,{value:"no_show",children:"Не пришел"})]})}),(((x=a==null?void 0:a.initialValues)==null?void 0:x.status)==="cancelled"||g==="cancelled")&&e.jsx(s.Item,{label:"Причина отмены",name:"cancellation_reason",children:e.jsx(d.TextArea,{rows:2,placeholder:"Укажите причину отмены"})})]})})]}),e.jsxs(p,{gutter:16,children:[e.jsx(i,{xs:24,md:12,children:e.jsxs(o,{title:"Цена и скидки",size:"small",style:{marginBottom:16},children:[e.jsx(s.Item,{label:"Базовая цена",name:"amount",tooltip:"Цена услуги",children:e.jsx(m,{min:0,style:{width:"100%"},placeholder:"0",addonAfter:"₽"})}),e.jsx(s.Item,{label:"Промокод",name:"promo_code",tooltip:"Код для применения скидки",children:e.jsx(d,{placeholder:"PROMO2024"})}),e.jsx(s.Item,{label:"Сумма скидки",name:"discount_amount",tooltip:"Будет рассчитана автоматически при применении промокода",children:e.jsx(m,{min:0,style:{width:"100%"},placeholder:"0",addonAfter:"₽",disabled:!0})}),e.jsx(s.Item,{label:"Итоговая цена",name:"final_price",tooltip:"Цена с учетом всех скидоÐ
1º",children:e.jsx(m,{min:0,style:{width:"100%"},placeholder:"0",addonAfter:"₽"})})]})}),e.jsx(i,{xs:24,md:12,children:e.jsxs(o,{title:"Дополнительная информация",size:"small",style:{marginBottom:16},children:[e.jsx(s.Item,{label:"Комментарий",name:"comment",children:e.jsx(d.TextArea,{rows:4,placeholder:"Дополнительные пожелания клиента"})}),(l==null?void 0:l.created_at)&&e.jsx(j,{message:`Создана: ${b(l.created_at).format("DD.MM.YYYY HH:mm")}`,type:"info",showIcon:!0,style:{marginTop:8}})]})})]})]})})};export{S as AppointmentEdit,S 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.