PageSourceSearch

https://new.dashamail.ru/assets/CatalogView-CBhjG_y1.js

js dashamail.ru collected 2026-10-03 19:14:23 UTC 20,798 bytes, 1 lines download raw bytes

1import{_ as Q}from"./icon-arrow-forward-tiny-C7crj71p.js";import{_ as ne}from"./icon-info-IikOigpB.js";import{c as X,a as q,h as ue,d as re}from"./index-YP9rWOsL.js";import{a as R}from"./index-pEJ9SCgX.js";import{s as F}from"./index-VOk7RXhm.js";import{s as de,a as ie,b as ve,c as ce,d as ee}from"./index-BjTJyF81.js";import{q as ae,aU as se,bG as i,H as N,bq as te,by as s,P as t,a5 as c,ck as d,h as w,L as e,a4 as f,ca as u,N as g,bL as Y,bi as be,bg as B,cM as C,M as z,cr as pe,bO as me,cs as _e,bA as ge}from"./ui-DOpZf8_d.js";import{_ as ye}from"./icon-info-purple-20-CEkua_ls.js";import{_ as fe}from"./icon-arrow-down-BvSg8UsP.js";import{T as ke}from"./TestModeComponent-MDvvYMZn.js";import"./index-TbN9BKk_.js";import"./index-CVXo_bn6.js";import"./index-Bxc-fC2O.js";const he={class:"assortment"},$e={key:0,class:"assortment-loading"},Ve={class:"body-s-regular neutral feed-source"},we=["href"],Ce={class:"section"},De={class:"table-scroll"},Me={class:"assortment-table feed-table"},Le={class:"body-s-regular"},Ue={class:"body-s-regular"},xe={class:"body-s-regular"},Te={class:"body-s-regular"},Re={class:"section"},Ie={class:"section-head"},Ae={key:0,class:"body-s-regular neutral"},Ee={key:0,class:"body-s-regular neutral"},Ne={class:"category-filters"},Se={key:0,class:"body-s-regular neutral"},Oe={key:1,class:"table-scroll"},Ye={class:"assortment-table categories-table"},Be={class:"body-s-regular"},Pe=["onClick"],qe=["src"],Fe={class:"align-right"},Ge={class:"body-s-regular"},He={class:"align-right"},Ke={class:"body-s-regular"},We={class:"section"},ze={class:"section-head"},je={key:0,class:"body-s-regular neutral"},Xe=["href"],Ze={key:0,class:"body-s-regular neutral"},Je={key:1,class:"body-s-regular neutral"},Qe={key:2,class:"products-scroll"},el={class:"assortment-table products-table"},ll=["href"],al={key:1,class:"body-s-regular"},sl={class:"body-s-regular"},tl=["disabled"],j=50,le=200,ol={__name:"AssortmentComponent",props:{siteId:{type:[String,Number],required:!0},catalogId:{type:[String,Number],required:!0}},setup(Z){const I=Z,A=se("showToast"),b=i(null),S=i([]),m=i([]),k=i([]),y=i(0),M=i(0),E=i(!1),h=i(null),L=i(!0),$=i(j),V=i(!1),v=i(!1),U=i(!1),x=i({}),G=N(()=>{const p=[],a=(r,D)=>{r.forEach(T=>{const o=D||!v.value&&!T.products;if(o||p.push(T),!T.children.length)return;const l=o||!(U.value||x.value[T.id]);a(T.children,l)})};return a(S.value,!1),p}),H=N(()=>$.value<le&&k.value.length>=$.value&&(!y.value||k.value.length<y.value)),K=()=>{$.value=Math.min($.value+j,le),P(!0)},P=async(p=!1)=>{try{p?V.value=!0:L.value=!0;const{data:a}=await q.post("sites/catalogAssortment",{id:I.siteId,catalog_id:I.catalogId,limit:$.value});a&&a.ok?(b.value=a.data.feed,S.value=a.data.categories||[],m.value=a.data.columns||[],k.value=a.data.offers||[],y.value=a.data.total_products||0,M.value=a.data.categories_num||0,E.value=a.data.pending===1,h.value=a.data.last_update):A("error","",(a==null?void 0:a.error)||"Не удалось загрузить ассортимент")}catch(a){console.log(a),A("error","","Не удалось загрузить ассортимент")}finally{L.value=!1,V.value=!1}},W=p=>{x.value={...x.value,[p.id]:!x.value[p.id]}};return te(P),(p,a)=>(s(),t("div",he,[L.value?(s(),t("div",$e,[c(d(F),{height:"3rem"}),c(d(F),{height:"12rem"})])):b.value?(s(),t(w,{key:1},[e("p",Ve,[a[2]||(a[2]=e("img",{draggable:"false",src:ye,alt:""},null,-1)),a[3]||(a[3]=f(" Отображаются данные с адреса ")),e("a",{href:b.value.yml_file_url,target:"_blank",rel:"noopener noreferrer",class:"link"},u(b.value.yml_file_url),9,we)]),e("div",Ce,[a[5]||(a[5]=e("p",{class:"subheader-s"},"Параметры YML-фида",-1)),e("div",De,[e("table",Me,[a[4]||(a[4]=e("thead",null,[e("tr",null,[e("th",{class:"caption neutral"},"Название магазина"),e("th",{class:"caption neutral"},"Компания"),e("th",{class:"caption neutral"},"URL магазина"),e("th",{class:"caption neutral"},"CMS платформа")])],-1)),e("tbody",null,[e("tr",null,[e("td",null,[e("span",Le,u(b.value.name||"—"),1)]),e("td",null,[e("span",Ue,u(b.value.company||"—"),1)]),e("td",null,[e("span",xe,u(b.value.shop_url||"—"),1)]),e("td",null,[e("span",Te,u(b.value.platform||"Не определена"),1)])])])])])]),e("div",Re,[e("div",Ie,[a[6]||(a[6]=e("p",{class:"subheader-s"},"Категории",-1)),E.value?g("",!0):(s(),t("p",Ae,[f(u(M.value)+" категорий, "+u(y.value)+" товаров",1),h.value?(s(),t(w,{key:0},[f(" · обновлено "+u(d(X)(h.value,!0)),1)],64)):g("",!0)]))]),E.value?(s(),t("p",Ee," Категории и количество товаров появятся после первой загрузки фида.")):(s(),t(w,{key:1},[e("div",Ne,[e("button",{onClick:a[0]||(a[0]=r=>v.value=!v.value),class:"button button-tertiary button-s body-s-medium"},u(v.value?"Скрыть категории без товаров":"Показать категории без товаров"),1),e("button",{onClick:a[1]||(a[1]=r=>
1U.value=!U.value),class:"button button-tertiary button-s body-s-medium"},u(U.value?"Свернуть подкатегории":"Развернуть подкатегории"),1)]),S.value.length===0?(s(),t("p",Se," У нас нет данных о категориях")):(s(),t("div",Oe,[e("table",Ye,[a[7]||(a[7]=e("thead",null,[e("tr",null,[e("th",{class:"caption neutral"}),e("th",{class:"caption neutral align-right"},"ID категории"),e("th",{class:"caption neutral align-right"},"Товаров в наличии")])],-1)),e("tbody",null,[(s(!0),t(w,null,Y(G.value,r=>(s(),t("tr",{key:r.id,class:"assortment-row"},[e("td",null,[e("div",{class:"category-cell",style:be({paddingLeft:r.level*24+"px"})},[e("span",Be,u(r.name),1),r.children.length&&!U.value?(s(),t("button",{key:0,onClick:D=>W(r),class:"button button-icon button-icon-tertiary chevron-button"},[e("img",{draggable:"false",src:d(fe),alt:"",class:B(["chevron",{opened:x.value[r.id]}])},null,10,qe)],8,Pe)):g("",!0)],4)]),e("td",Fe,[e("span",Ge,u(r.id),1)]),e("td",He,[e("span",Ke,u(r.products),1)])]))),128))])])]))],64))]),e("div",We,[e("div",ze,[a[9]||(a[9]=e("p",{class:"subheader-s"},"Товары",-1)),k.value.length?(s(),t("p",je,[f(" Первые "+u(k.value.length),1),y.value?(s(),t(w,{key:0},[f(" из "+u(y.value),1)],64)):g("",!0),a[8]||(a[8]=f(" — чтобы посмотреть весь ассортимент, откройте ")),e("a",{href:b.value.yml_file_url,target:"_blank",rel:"noopener noreferrer",class:"link"},"фид",8,Xe)])):g("",!0)]),b.value.available?k.value.length===0?(s(),t("p",Je," У нас нет данных о товарах в ассортименте")):(s(),t("div",Qe,[e("table",el,[e("thead",null,[e("tr",null,[a[10]||(a[10]=e("th",{class:"caption neutral"},"ID товара",-1)),(s(!0),t(w,null,Y(m.value,r=>(s(),t("th",{key:r,class:"caption neutral"},u(r),1))),128))])]),e("tbody",null,[(s(!0),t(w,null,Y(k.value,r=>(s(),t("tr",{key:r.id,class:"assortment-row"},[e("td",null,[r.url?(s(),t("a",{key:0,href:r.url,target:"_blank",rel:"noopener noreferrer",class:"link body-s-regular"},u(r.id),9,ll)):(s(),t("span",al,u(r.id),1))]),(s(!0),t(w,null,Y(m.value,D=>(s(),t("td",{key:D},[e("span",sl,u(r.values[D]),1)]))),128))]))),128))])])])):(s(),t("p",Ze," Фид сейчас недоступен по указанному адресу — товары показать не получится.")),H.value?(s(),t("button",{key:3,onClick:K,disabled:V.value,class:B([V.value?"disabled":"","button button-secondary button-s body-s-medium load-more"])},u(V.value?"Загружаем…":"Показать ещё "+j),11,tl)):g("",!0)])],64)):g("",!0)]))}},nl=ae(ol,[["__scopeId","data-v-3f3c46fb"]]),ul={class:"catalog-wrapper"},rl={class:"catalog-topbar"},dl={class:"breadcrumbs body-s-medium"},il={class:"neutral"},vl={key:0,class:"catalog-denied"},cl={key:1,class:"header-s"},bl={class:"tab-panel-content"},pl={key:0,class:"catalog-loading"},ml={key:1,class:"settings-grid"},_l={class:"card"},gl={class:"field"},yl={class:"field"},fl={class:"field"},kl={class:"field"},hl={class:"field"},$l={class:"field"},Vl=["disabled"],wl={class:"settings-column"},Cl={class:"card"},Dl={class:"status-row"},Ml={class:"body-s-regular neutral"},Ll={class:"status-row"},Ul={class:"body-s-regular neutral"},xl={class:"card"},Tl={class:"field"},Rl=["value"],Il={class:"field"},Al={key:0,class:"card-actions"},El=["disabled"],Nl={class:"dialog-form"},Sl={class:"body-s-regular"},Ol={class:"body-s-medium"},Yl={class:"dialog-actions"},Bl=["disabled"],Pl={__name:"CatalogView",setup(Z){const I=pe(),A=_e(),b=se("showToast"),S=[{value:"assortment",label:"Ассортимент каталога"},{value:"settings",label:"Настройки"}],m=i(null),k=i([]),y=i(!0),M=i(!1),E=i("write"),h=i(""),L=N(()=>E.value==="write");ge("sitesCanWrite",L);const $=i(!1),V=i(!1),v=i({originDomain:"",shop_category_id:0,currency_code:"rub",price_number_format:0,sales_rate_period:30,abandoned_period:0,yml_load_period:24}),U=[{value:1,label:"Авто"},{value:0,label:"Другое"},{value:3,label:"Здоровье и красота"},{value:28,label:"Контент"},{value:7,label:"Купоны на скидку"},{value:9,label:"Одежда, обувь, аксессуары"},{value:11,label:"Продовольственные товары"},{value:12,label:"Спорттовары и услуги"},{value:30,label:"Творчество и рукоделие"},{value:22,label:"Товары для взрослых"},{value:14,label:"Товары для детей"},{value:15,label:"Товары для дома"},{value:16,label:"Товары для животных"},{value:17,label:"Товары для отдыха и дачи"},{value:5,label:"Товары для офиса, канцелярия, книги"},{value:27,label:"Туризм"},{value:32,label:"Услуги"},{value:18,label:"Цветы и подарки"},{value:19,label:"Электронные товары"},{value:2,label:"Ювелирные изделия, бижутерия, часы"},{value:33,label:"Электроника и Гаджеты"}],x=[{value:"rub",label:"RUB ₽"},{value:"uah",label:"UAH ₴"},{value:"usd",label:"USD $"},{value:"eur",label:"EUR €"},{value:"kzt",label:"KZT ₸"},{value:"inr",label:"INR ₹"},{value:"byr",label:"BYR Br"},{value:"mdl",label:"MDL L"},{value:"gbp",label:"GBP £"},{value:"cad",label:"CAD $"},{value:"myr",label:"MYR RM"},{value:"try",label:"TRY ₺"},{value:"sek",label:"SEK kr"},{value:"twd",label:"TWD NT$"},{value:"kwd",label:"KWD KD"}],G=[{value:0,label:"1 000.50"},{value:1,label:"1.000,50"}],H=[{value:1,label:"1 день"},{value:3,label:"3 дня"},{value:7,label:"1 неделя"},{value:14,label:"2 недели"},{value:30,label:"1 месяц"},{value:60,label:"2 месяца"},{value:90,label:"3 месяца"}],K=[{value:0,label:"Без лимита"},{value:12,label:"12 часов"},{value:24,label:"1 день"},{value:72,label:"3 дня"},{value:168,label:"1 неделя"},{value:336,label:"2 недели"},{value:720,label:"1 месяц"},{value:1440,label:"2 месяца"},{value:2160,label:"3 месяца"}],P=[{value:12,label:"12 часов"},{value:24,label:"24 часа"},{value:72,label:"72 часа"}],W=N(()=>I.query.tab??"assortment"),p=N(()=>I.params.id),a=N(()=>I.params.catalogId),r=async()=>{try{y.value=!0;const{data:o}=await q.post("sites/catalogsGet",{id:p.value,catalog_id:a.value});o&&o.ok?(E.value=o.access||"write",m.value={...o.data,shop_name:re(o.data.shop_name)},k.value=o.data.domains||[],v.value={originDomain:o.data.originDomain,shop_category_id:o.data.shop_category_id,currency_code:o.data.currency_code,price_number_format:o.data.price_number_format,sales_rate_period:o.data.sales_rate_period,abandoned_period:o.data.abandoned_period,yml_load_period:o.data.yml_load_period}):o&&o.denied?M.value=!0:(b("error","",(o==null?void 0:o.error)||"Товарный каталог не найден"),A.push(`/sites/${p.value}?tab=catalogs`))}catch(o){console.log(o),M.value=!0}finally{y.value=!1}},D=async(o,l)=>{const O={id:p.value,catalog_id:a.value};o.forEach(_=>{O[_]=v.value[_]});try{h.value=l;const{data:_}=await q.post("sites/catalogsUpdate",O);_&&_.ok?(b("success","","Настройки сохранены"),await r()):b("error","",(_==null?void 0:_.error)||"Не удалось сохранить настройки")}catch(_){console.log(_),b("error","","Не удалось сохранить настройки")}finally{h.value=""}},T=async()=>{try{V.value=!0;const{data:o}=await q.post("sites/catalogsDelete",{id:p.value,catalog_id:a.value});o&&o.ok?(b("success","","Товарный каталог удалён"),A.push(`/sites/${p.value}?tab=catalogs`)):b("error","",(o==null?void 0:o.error)||"Не удалось удалить каталог")}catch(o){console.log(o),b("error","","Не удалось удалить каталог")}finally{V.value=!1}};return te(r),(o,l)=>{var _,J;const O=me("RouterLink");return s(),t("div",ul,[e("div",rl,[e("div",dl,[c(O,{to:"/sites",class:"link"},{default:C(()=>l[12]||(l[12]=[f("Список сайтов")])),_:1}),l[14]||(l[14]=e("img",{draggable:"false",src:Q,alt:""},null,-1)),c(O,{to:`/sites/${p.value}?tab=catalogs`,class:"link"},{default:C(()=>l[13]||(l[13]=[f("Товарные каталоги")])),_:1},8,["to"]),l[15]||(l[15]=e("img",{draggable:"false",src:Q,alt:""},null,-1)),e("span",il,u((_=m.value)==null?void 0:_.shop_name),1)]),M.value?g("",!0):(s(),z(ke,{key:0}))]),M.value?(s(),t("div",vl,l[16]||(l[16]=[e("img",{draggable:"false",src:ne,alt:""},null,-1),e("p",{class:"body-s-regular"},"Раздел Сайты недоступен для вашего аккаунта.",-1)]))):(s(),t(w,{key:1},[y.value?(s(),z(d(F),{key:0,height:"2rem",width:"20rem"})):(s(),t("p",cl,u((J=m.value)==null?void 0:J.shop_name),1)),c(d(de),{scrollable:"","show-navigators":!1,value:W.value},{default:C(()=>[c(d(ie),null,{default:C(()=>[(s(),t(w,null,Y(S,n=>c(d(ve),{key:n.value,value:n.value,onClick:oe=>d(A).push({query:{tab:n.value}})},{default:C(()=>[f(u(n.label),1)]),_:2},1032,["value","onClick"])),64))]),_:1}),c(d(ce),null,{default:C(()=>[c(d(ee),{value:"assortment"},{default:C(()=>[e("div",bl,[m.value?(s(),z(nl,{key:0,"site-id":p.value,"catalog-id":a.value},null,8,["site-id","catalog-id"])):g("",!0)])]),_:1}),c(d(ee),{value:"settings"},{default:C(()=>
1[y.value?(s(),t("div",pl,[c(d(F),{height:"20rem"})])):m.value?(s(),t("div",ml,[e("div",_l,[l[29]||(l[29]=e("p",{class:"subheader-s"},"Настройки ассортимента",-1)),e("div",gl,[l[17]||(l[17]=e("p",{class:"body-s-medium neutral"},"OriginDomain",-1)),c(d(R),{modelValue:v.value.originDomain,"onUpdate:modelValue":l[0]||(l[0]=n=>v.value.originDomain=n),options:k.value,class:"field-control"},null,8,["modelValue","options"]),l[18]||(l[18]=e("p",{class:"caption neutral"},"Домен, к которому привязан ассортимент товаров",-1))]),e("div",yl,[l[19]||(l[19]=e("p",{class:"body-s-medium neutral"},"Категория товаров",-1)),c(d(R),{modelValue:v.value.shop_category_id,"onUpdate:modelValue":l[1]||(l[1]=n=>v.value.shop_category_id=n),options:U,"option-label":"label","option-value":"value",class:"field-control"},null,8,["modelValue"]),l[20]||(l[20]=e("p",{class:"caption neutral"},"Для оптимизации алгоритмов специально под ваш товарный ассортимент",-1))]),e("div",fl,[l[21]||(l[21]=e("p",{class:"body-s-medium neutral"},"Валюта",-1)),c(d(R),{modelValue:v.value.currency_code,"onUpdate:modelValue":l[2]||(l[2]=n=>v.value.currency_code=n),options:x,"option-label":"label","option-value":"value",class:"field-control"},null,8,["modelValue"]),l[22]||(l[22]=e("p",{class:"caption neutral"},"Это позволит оптимизировать алгоритмы специально под ваш товарный ассортимент",-1))]),e("div",kl,[l[23]||(l[23]=e("p",{class:"body-s-medium neutral"},"Формат цены в API ответах",-1)),c(d(R),{modelValue:v.value.price_number_format,"onUpdate:modelValue":l[3]||(l[3]=n=>v.value.price_number_format=n),options:G,"option-label":"label","option-value":"value",class:"field-control"},null,8,["modelValue"]),l[24]||(l[24]=e("p",{class:"caption neutral"},"Это позволит оптимизировать алгоритмы специально под ваш товарный ассортимент",-1))]),e("div",hl,[l[25]||(l[25]=e("p",{class:"body-s-medium neutral"},"Временной интервал для расчёта популярности товаров",-1)),c(d(R),{modelValue:v.value.sales_rate_period,"onUpdate:modelValue":l[4]||(l[4]=n=>v.value.sales_rate_period=n),options:H,"option-label":"label","option-value":"value",class:"field-control"},null,8,["modelValue"]),l[26]||(l[26]=e("p",{class:"caption neutral"},"Расчёт популярных товаров производится каждую ночь в 00:00 UTC",-1))]),e("div",$l,[l[27]||(l[27]=e("p",{class:"body-s-medium neutral"},"Временной интервал для сброса содержимого корзины ",-1)),c(d(R),{modelValue:v.value.abandoned_period,"onUpdate:modelValue":l[5]||(l[5]=n=>v.value.abandoned_period=n),options:K,"option-label":"label","option-value":"value",class:"field-control"},null,8,["modelValue"]),l[28]||(l[28]=e("p",{class:"caption neutral"},"В течение какого времени товары, брошенные в корзину, актуальны",-1))]),L.value?(s(),t("button",{key:0,onClick:l[6]||(l[6]=n=>D(["originDomain","shop_category_id","currency_code","price_number_format","sales_rate_period","abandoned_period"],"assortment")),disabled:h.value==="assortment",class:B([h.value==="assortment"?"disabled":"","button button-secondary button-s body-s-medium save-button"])},"Сохранить изменения",10,Vl)):g("",!0)]),e("div",wl,[e("div",Cl,[l[32]||(l[32]=e("p",{class:"subheader-s"},"Текущий статус ассортимента",-1)),e("div",Dl,[l[30]||(l[30]=e("p",{class:"body-s-medium"},"Последняя загрузка YML-файла",-1)),e("p",Ml,u(d(X)(m.value.lastedit_time,!0)),1)]),e("div",Ll,[l[31]||(l[31]=e("p",{class:"body-s-medium"},"Следующая загрузка YML-файла",-1)),e("p",Ul,u(m.value.next_load?d(X)(m.value.next_load,!0):"—"),1)])]),e("div",xl,[l[36]||(l[36]=e("p",{class:"subheader-s"},"Настройки товарного каталога",-1)),e("div",Tl,[l[33]||(l[33]=e("p",{class:"body-s-medium neutral"},"Ссылка на YML-файл",-1)),e("input",{value:m.value.yml_file_url,type:"text",readonly:"",disabled:"",class:"input input-text input-text-s body-s-medium field-control"},null,8,Rl)]),e("div",Il,[l[34]||(l[34]=e("p",{class:"body-s-medium neutral"},"Период загрузки YML-файла",-1)),c(d(R),{modelValue:v.value.yml_load_period,"onUpdate:modelValue":l[7]||
1(l[7]=n=>v.value.yml_load_period=n),options:P,"option-label":"label","option-value":"value",class:"field-control"},null,8,["modelValue"]),l[35]||(l[35]=e("p",{class:"caption neutral"},"Выберите интервал обновления YML-файла",-1))]),L.value?(s(),t("div",Al,[e("button",{onClick:l[8]||(l[8]=n=>D(["yml_load_period"],"catalog")),disabled:h.value==="catalog",class:B([h.value==="catalog"?"disabled":"","button button-secondary button-s body-s-medium"])},"Сохранить изменения",10,El),e("button",{onClick:l[9]||(l[9]=n=>$.value=!0),class:"button button-primary danger button-s body-s-medium"},"Удалить товарный каталог")])):g("",!0)])])])):g("",!0)]),_:1})]),_:1})]),_:1},8,["value"])],64)),c(d(ue),{visible:$.value,"onUpdate:visible":l[11]||(l[11]=n=>$.value=n),modal:"",header:"Удалить товарный каталог",draggable:!1,"pt:mask:class":"backdrop-blur-sm",style:{width:"460px"}},{default:C(()=>{var n;return[e("div",Nl,[e("p",Sl,[l[37]||(l[37]=f("Вы уверены, что хотите удалить каталог ")),e("span",Ol,u((n=m.value)==null?void 0:n.shop_name),1),l[38]||(l[38]=f("? Вы потеряете все данные, а шаблоны с настроенными ссылками на товары перестанут корректно работать. "))]),e("div",Yl,[e("button",{onClick:l[10]||(l[10]=oe=>$.value=!1),class:"button button-secondary button-s body-s-medium"},"Отмена"),e("button",{onClick:T,disabled:V.value,class:B([V.value?"disabled":"","button button-primary danger button-s body-s-medium"])},"Удалить",10,Bl)])])]}),_:1},8,["visible"])])}}},la=ae(Pl,[["__scopeId","data-v-36d0a638"]]);export{la 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.