{"version":3,"sources":["webpack:///./src/api/monitoring.js","webpack:///./src/components/common/Astral/Button/style.module.scss?fcf7","webpack:///./src/api/user.js","webpack:///./src/store/modules/user.js","webpack:///./src/store/modules/dicts.js","webpack:///./src/store/index.js","webpack:///./src/utils/http.js","webpack:///./src/components/common/Astral/Input/style.module.scss?786a","webpack:///./src/components/common/Astral/Input/Input.vue?29cf","webpack:///src/components/common/Astral/Input/Input.vue","webpack:///./src/components/common/Astral/Input/Input.vue?b622","webpack:///./src/components/common/Astral/Input/Input.vue","webpack:///./src/detail.js","webpack:///./src/utils/str.js","webpack:///./src/api/recovery.js","webpack:///./src/pages.common.js","webpack:///./src/utils/obj.js","webpack:///./src/utils/router.js","webpack:///./src/components/Monitoring/Monitoring.common.js","webpack:///./src/components/common/Astral/EventBus/eventBus.js","webpack:///./src/components/common/Astral/Modal/Modal.vue?5506","webpack:///src/components/common/Astral/Modal/Modal.vue","webpack:///./src/components/common/Astral/Modal/Modal.vue?4ae2","webpack:///./src/components/common/Astral/Modal/Modal.vue","webpack:///./src/components/common/Astral/Button/Button.vue?8b21","webpack:///src/components/common/Astral/Button/Button.vue","webpack:///./src/components/common/Astral/Button/Button.vue?2390","webpack:///./src/components/common/Astral/Button/Button.vue","webpack:///./src/components/common/Astral/Modal/style.module.scss?4aa9","webpack:///./src/order.js","webpack:///./src/config/index.js","webpack:///./src/monitoringOpen.js","webpack:///./src/api/order.js","webpack:///./src/components/common/Astral/Styles/form.module.scss?4bff","webpack:///./src/utils/converter.js"],"names":["loadRegs","p","u","urlConcat","API_TENDER","httpGet","id","key","resp","r","map","a","Id","hasChildren","HasChildren","name","Name","ts","filter","re","forEach","aa","parent","push","Promise","all","getReg","reg","window","sessionStorage","getItem","length","setItem","JSON","stringify","parse","getPlaces","data","loadDicts","Marketplaces","label","child","children","c","PurchaseMethods","CurrencyCodes","getDicts","dicts","suggestCompany","term","responseData","x","inn","Inn","kpp","Kpp","innKpp","InnKpp","parseFilterFromUrl","url","httpPost","ttl","module","exports","getUserInfo","authToken","token","hasLicense","API_ORDER","userInfo","HasLicens","HasLicense","SET_STATE","defaultState","anonymous","authorized","store","namespaced","state","mutations","payload","actions","update","commit","then","places","loadingPlaces","regs","loadingRegs","cities","loadingCities","purchaseMethods","loadingPurchaseMethods","currencyCodes","loadingCurrencyCodes","sections","loadingSections","okpd2","loadingOkpd2","flatTree","dictSections","lazilyPlaces","rawData","lv12","kv","frmData","Code","level","Level","ParentCode","item","itm","hasValue","po","undefined","flatDict","lazilyRegs","dispatch","lazilyPurchaseMethods","lazilySections","lazilyCurrencyCodes","lazilyOkpd2","getOkpd2Json","STORAGE_KEY","Vue","use","Vuex","Store","modules","user","plugins","createPersistedState","paths","getState","storageStateJson","storageState","Cookie","COOKIE_AUTH_TOKEN","DEV_AUTH_TOKEN","setState","nextDicts","existsAnyDict","indexOf","dict","storageDicts","nextState","nextStateJson","watch","value","oldValue","immediate","mapDicts","args","fields","Array","isArray","Object","values","arg","toUpperCase","slice","mapState","instance","axios","create","timeout","Cache","me","this","now","Date","getTime","get","val","obj","expires","del","oldval","put","cache","httpCache","action","paramsSerializer","qs","indices","allowDots","params","noCache","options","headers","body","withCredentials","post","mode","relativeUri","autoSlash","substring","fullUrl","render","_vm","_h","$createElement","_c","_self","class","style","input","error","inputError","attrs","type","placeholder","domProps","on","$event","$emit","target","staticRenderFns","components","props","String","default","required","Boolean","component","Meta","config","h","$mount","notEmptyString","str","concat","seporate","items","any","i","concatTitle","title","ending","concatEnding","where","uniqueName","names","objectKeys","index","nextName","toString","v","sendEmailForRecovery","changePassword","productionTip","VueRouter","VModal","componentName","VTooltip","router","flt","array","prntKey","k","pk","toArray","keys","objectOrArray","ifObject","ifArray","toCustomKeys","modifier","b","replace","m","toLowerCase","customKeys","o","res","nextKey","old","camelKeys","lowerKeys","lowerArray","lowerCaseObjectArray","uuidv4","Math","random","allowDotsParse","split","current","last","max","j","path","endPath","allowDotsSerialize","serialize","ks","trg","nstKeys","nstKey","nstVal","newKey","def","splice","routerReplace","nextPath","currentRoute","fullPath","query","eqal","history","jsonNewQuery","jsonQuery","dateFormat","date","d","pad","getDate","getMonth","y","getFullYear","treeToString","vl","parents","join","getLocalDate","dateStr","dt","addTimeZone","prsDt","ary","t","getWordsArray","keywordsParam","keywordsListParam","keywordsList","stringTreeParce","itms","keyParents","organizationLevels","fullTitleAblative","dictOrganizationLevels","reduce","getOrganizationLevelById","organizationLevelsIdToCode","levelId","find","salesChannels","getSalesChannels","getFilterFromUrl","searchPage","OPEN_MONITORING_SEARCH_URL_PATH_ENDING","urlSearch","location","search","urlPrepare","queryString","parseUrl","queryObject","searchText","searchForm","searchform","showMore","organizationlevels","isSmallAndAverageBusiness","issmallandaveragebusiness","OrganizationLevels","console","log","salesChannel","saleschannel","keywords","keywordslist","excludeKeywordsList","excludekeywords","excludekeywordslist","documentSearchEnabled","toBoolean","documentsearchenabled","universalRegion","universalregion","deliveryregion","region","some","organizationsTags","organizationstags","e","customerinn","match","applicationEndDateFrom","applicationenddatefrom","applicationEndDateTo","applicationenddateto","combinedTradeRegistrationNumber","traderegistrationnumber","tradenumber","tenderid","currencyCode","currencycode","datePublishedFrom","datepublishedfrom","datePublishedTo","datepublishedto","excludeKeywords","hasApplications","hasapplications","hasPrepayment","hasprepayment","isAvailableApplicationsWithoutSignature","isavailableapplicationswithoutsignature","marketPlaceIds","marketplaceids","maxApplicationGuarantee","maxapplicationguarantee","maxContractGuarantee","maxcontractguarantee","maxPrice","maxprice","minApplicationGuarantee","minapplicationguarantee","minContractGuarantee","mincontractguarantee","minPrice","minprice","filtername","openAdditionalParams","organizer","organizername","period","purchasemethods","saveToHistory","sectionIds","sectionids","kwrds","trim","parseFilterFromUrlPath","f","mapFilterToFilterUrl","tradeRegistrationNumber","tradeNumber","keywordsIsArray","OrganizerInn","cleanForm","urlParam","newQuery","isFilterEmpty","filterInput","deleteMspAndPrepayment","assign","header","pageDescription","pageTitle","total","sortKey","breadCrumbs","filterEmpty","getCanonicalPath","searchFilter","paging","regionsFlat","searchPath","defaultSearchPage","seoFilter","getSeoSearchUrlRoute","canonicalPath","routePart","Abbreviation","isOnlyTendersSelected","element","Number","hasPurchaseMethods","sort","cyrillToLatin","marketPlaceName","convertOrganizationLevels","DEBUG","pathname","pathArray","pathParams","pathArrayItem","decodeURI","parseData","Header","PageTitle","PageDescription","BreadCrumbs","Filter","SalesChannel","SectionIds","deliveryRegion","DeliveryRegions","Key","UniversalRegions","DeliveryCities","Sort","Okpd2","IsSmallAndAverageBusiness","HasPrepayment","OrganizationsTags","Keywords","setFilterToUrl","constructor","arrru","arren","text","spaceReplacement","replaceCommas","RegExp","getArray","mapFilterFromFilterApi","organizerInfo","customerInfo","organizerInn","organizerName","customerInn","customerName","coreRegion","nextFilter","color","backgroundColor","colorNumber","maxOrdersCount","publicationDatePeriod","firstSearch","pageSettings","page_size","page_index","sorting_field","sorting_direction","response","isSuccess","result","tenders","tndr","getCounters","counters","eventBus","modalAstral","clickOutSide","containerClassList","modalAstralClose","_v","modalAstralHeader","_t","modalAstralHeaderSmall","modalAstralBody","modalAstralFooter","size","computed","classList","methods","el","$el","styleList","process","API_CHECK_LIST","PAGE_LOGIN","PAGE_REGISTER","PAGE_TARIFFS","PAGE_ORDER","PAGE_ORDER_LIST","PAGE_MONITORING","PAGE_SEARCH","PAGE_GOTO_TENDER","PAGE_TENDER","ROOT_PAGE","USE_CREDENTIALS","MONITORING_SEARCH_PAGE_COUNT_LIMIT","TENDER_DETAILS_URI_PREFIX","IS_ASTRAL","setTimeout","setOrderIsViewed","OrderId","Token","getFilters","cancelExpiredOrders","getTendersByTags","status","tagIds","isFirstLoad","isLoadFromTr","lastVisibleOrderId","filterType","Status","TagIds","IsFirstLoad","IsLoadFromTr","LastVisibleOrderID","FilterType","getTender","TenderId","getTenderAnalytics","snippetCodeToName","sc","mapSnippetsFromTender","tender","highlight","contents","itemsHighlights","itemshighlights","foundInContents","tenderitems","foundincontents","nextHighlight","vls","hglt","number","nameEnding","content","source","linkText","link","getSnippets","tagId","Result","Tenders","setOrderInWork","setOrderCancelled","setOrderCompleted","setOrderDeleted","reason","Reason","recoveryToWork","getOrderByTenderId","tenderId","createManualOrder","getEtpLink","marketPlaceId","organizationLevel","purchaseMethod","registrationNumber","MarketPlaceId","TenderOrganizationLevel","PurchaseMethod","setEtpLinkViewMode","etpLinkId","setFilter","filterData","securityToken","removeFilter","SecurityToken","isSubcontract","regions","regionsKeysObjects","parseKey","prepareRegions","deliveryCity","nextAa","filter_settings","isPersonal","keywords_list","exclude_keywords_list","universal_region","delivery_city","delivery_region","is_doc_search","purchase_methods","getArrayFromString","min_price","max_price","currency_code","min_application_guarantee","max_application_guarantee","min_contract_guarantee","max_contract_guarantee","prepayment","has_applications","organization_levels","isApplicationWithoutSignatureAllowed","isNullFalse","section_ids","is_msp","publish_date_from","publish_date_to","aplication_end_date_from","aplication_end_date_to","sales_channels","publication_date_period","organizer_info","customer_info","page_settings","getFiltersWithStats","param","filters","searchHistory","IsSuccess","Filters","TendersCount","SearchItems","getSearchHistory","getColorsForFilters","getDayAverageTendersCountAndSumForFilter","filterId","logView","logDownload","getTagsByOrderId","orderId","toMoney","nStr","range","parseFloat","toFixed","x1","x2","rgx","test","dhms","cd","ch","cm","cs","floor","s","round","n","wordDay","getCorrect","ending1","ending2","ending5","getOrganizationLevelText","parseDate","ms","isNaN","levels","separator","stringFromArray","tryParse","len","currencyCodeToText","code","posibleNull","txt"],"mappings":"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","file":"js/chunk-common.4000906b.js","sourcesContent":["import { httpGet, urlConcat, httpPost } from '@/utils/http'\nimport { API_TENDER } from '@/config'\n\nlet reg = null;\nconst loadRegs = async (p) => {\n let u = urlConcat(API_TENDER, \"/common/GetRegionsStructure\");\n let resp = await httpGet(u, { id: p && p.key });\n\n let r = resp.map(a => ({ key: a.Id, hasChildren: a.HasChildren, name: a.Name }));\n\n let ts = r.filter(a => a.hasChildren).map(async a => {\n let re = await loadRegs(a);\n\n re.forEach(aa => {aa.parent = a.key; r.push(aa);});\n });\n\n await Promise.all(ts);\n return r;\n};\n\nexport async function getReg() {\n let reg = window.sessionStorage.getItem('monitoring.reg');\n if (!reg || reg.length === 0) {\n reg = await loadRegs();\n window.sessionStorage.setItem('monitoring.reg', JSON.stringify(reg));\n }\n else {\n reg = JSON.parse(reg);\n }\n\n return reg;\n}\n\nexport async function getPlaces() {\n let u = urlConcat(API_TENDER, \"/common/GetRegionsStructureV2\");\n let data = await httpGet(u);\n return data;\n}\n\nconst loadOkpd2 = async (p) => {\n let u = \"http://stable-dnn.otc.ru/tenders/common/GetOkpd2sStructure\";\n let resp = await httpGet(u, { id: p && p.key });\n\n let r = resp.map(a => ({ key: a.Id, hasChildren: a.HasChildren, name: `${a.Id} ${a.Name}` }));\n\n let hasChildren = r.filter(a => a && a.hasChildren);\n\n if (hasChildren && hasChildren.length > 0) {\n for (let i = 0; i < hasChildren.length; i++) {\n let a = hasChildren[i];\n let re = await loadOkpd2(a);\n a.child = re;\n }\n }\n\n return r;\n};\n\nexport async function getOkpd2sStructure() {\n let okpd2 = window.sessionStorage.getItem('monitoring.okpd2');\n\n if (!okpd2 || okpd2.length === 0) {\n okpd2 = await loadOkpd2();\n window.sessionStorage.setItem('monitoring.okpd2', JSON.stringify(okpd2));\n }\n else {\n okpd2 = JSON.parse(okpd2);\n }\n\n return okpd2;\n}\n\nconst loadDicts = async () => {\n let u = urlConcat(API_TENDER, \"/api/order/GetMonitoringDictionaries\");\n let resp = await httpGet(u);\n\n let r = resp.Marketplaces.map(a => ({ key: a.id, name: a.label, child: a.children.map(c => ({ key: c.id, name: c.label })) || null }));\n\n if (resp.PurchaseMethods && resp.PurchaseMethods['1000']) {\n delete resp.PurchaseMethods['1000'];\n }\n\n let data = {\n \"currencyCodes\": resp.CurrencyCodes,\n \"dictSections\": [...r],\n \"purchaseMethods\": resp.PurchaseMethods\n };\n\n return data;\n};\nexport async function getDicts() {\n let dicts = window.sessionStorage.getItem('monitoring.dicts');\n if (!dicts || dicts.length === 0) {\n dicts = await loadDicts();\n window.sessionStorage.setItem('monitoring.dicts', JSON.stringify(dicts));\n }\n else {\n dicts = JSON.parse(dicts);\n }\n\n return dicts;\n}\n\nexport async function suggestCompany(term) {\n const responseData = await httpGet(urlConcat(API_TENDER, '/Search/OrganizationAutocomplete'), { term });\n\n return responseData.map(function(x){\n return {\n id: x.Id,\n name: x.Name,\n inn: x.Inn,\n kpp: x.Kpp,\n innKpp: x.InnKpp\n };\n });\n}\n\nconst loadOrgNames = async () => {\n return await httpGet(urlConcat(API_TENDER, \"/common/GetOrganizationNames\"));\n};\n\nexport async function getOrgNames() {\n let result = window.sessionStorage.getItem('monitoring.orgnames');\n\n if (!result || result.length === 0) {\n result = await loadOrgNames();\n window.sessionStorage.setItem('monitoring.orgnames', JSON.stringify(result));\n }\n\n return result;\n}\n\nexport async function parseFilterFromUrl(url) {\n return await httpPost(urlConcat(API_TENDER, '/seo/parseurl'), { url }, {ttl: 1000 * 60 * 60});\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"button-f37\",\"buttonLg\":\"button_lg-99b\",\"buttonMid\":\"button_mid-5b9\",\"buttonSm\":\"button_sm-9e0\"};","import { httpPost, urlConcat } from '@/utils/http'\nimport {API_ORDER} from '@/config'\n\nexport async function getUserInfo(authToken) {\n let token = authToken;\n let data = { hasLicense: false, };\n\n if (token) {\n let userInfo = await httpPost(urlConcat(API_ORDER, '/api/order/GetUserInfo'), { token });\n if (userInfo) data.hasLicense = userInfo.HasLicens || userInfo.HasLicense;\n }\n\n return data;\n}\n","import {getUserInfo} from '@/api/user'\n\nconst SET_STATE = 'SET_STATE';\n\nconst defaultState = {\n anonymous: true, // не авторизованный пользователь\n authorized: false, // авторизованный пользователь\n authToken: null, // токен авторизации\n hasLicense: false, // есть лицензия\n};\n\nconst store = {\n namespaced: true,\n state: defaultState,\n mutations: {\n [SET_STATE] (state, payload) {\n if (!payload) state = defaultState;\n else for (let key in payload) state[key] = payload[key];\n\n state.anonymous = !state.authToken;\n state.authorized = !!state.authToken;\n }\n },\n actions: {\n async update({ state, commit }, {authToken}) {\n let token = authToken || state.authToken;\n\n commit(SET_STATE, {authToken});\n\n if (token) {\n return getUserInfo(token).then(data => {\n commit(SET_STATE, {hasLicense: data.hasLicense, authToken})\n });\n } else {\n commit(SET_STATE, {hasLicense: false, authToken})\n }\n }\n }\n};\n\nexport default store;\n","import {getDicts, getPlaces} from '@/api/monitoring'\nimport {getOkpd2Json} from '@/api/order';\nimport {flatTree, flatDict, hasValue} from '@/utils/obj'\n\nconst SET_STATE = 'SET_STATE';\n\n/*places: {\n _root_: [],\n _levels_: { 1: [], 2: [], 3: [], },\n \"12\": { name: 'Чебоксары', parent: '1', child: [] }\n },*/\n\nconst defaultState = {\n // все уровни субьектов\n places: null,\n loadingPlaces: false,\n\n // регионы\n regs: null,\n loadingRegs: false,\n\n // города\n cities: null,\n loadingCities: false,\n\n // способы закупки\n purchaseMethods: null,\n loadingPurchaseMethods: false,\n\n // валюты\n currencyCodes: null,\n loadingCurrencyCodes: false,\n\n // площадки по категориям\n sections: null,\n loadingSections: false,\n\n // ОКПД2\n okpd2: null,\n loadingOkpd2: false\n};\n\n// 3 справочника грузятся 1 запросом\nasync function loadDicts({ state, commit }) {\n // игнорируем если справочники уже загружены или загружаются\n if (state.purchaseMethods || state.sections || state.currencyCodes) return;\n if (state.loadingPurchaseMethods || state.loadingSections || state.loadingCurrencyCodes) return;\n\n commit(SET_STATE, { loadingPurchaseMethods: true, loadingSections: true, loadingCurrencyCodes: true, });\n\n let data = await getDicts();\n\n if (state.purchaseMethods || state.sections || state.currencyCodes) return;\n commit(SET_STATE, {\n loadingPurchaseMethods: false,\n purchaseMethods: data.purchaseMethods,\n\n loadingSections: false,\n sections: flatTree(data.dictSections),\n\n loadingCurrencyCodes: false,\n currencyCodes: data.currencyCodes\n })\n}\n\nconst store = {\n namespaced: true,\n state: defaultState,\n mutations: {\n [SET_STATE] (state, payload) {\n for (let key in payload)\n state[key] = payload[key];\n }\n },\n actions: {\n async lazilyPlaces({ state, commit }) {\n if (state.loadingPlaces) return;\n if (state.places) return;\n commit(SET_STATE, {loadingPlaces: true, loadingRegs: true});\n\n let rawData = await getPlaces();\n\n let lv12 = [];\n let kv = {};\n let frmData = [];\n for (let a of rawData) {\n let key = a.Code;\n let level = a.Level;\n let name = a.Name;\n let parent = a.ParentCode;\n\n if (key == '7700000000000' && level == 3) continue;\n else if (key == '7800000000000' && level == 3) continue;\n else if (key == '9200000000000' && level == 3) continue;\n\n let item = { key: JSON.stringify({ key, level }), name, parent, level };\n\n if (kv[key]) {\n if (kv[key].level > item.level) {\n kv[key] = item;\n }\n } else {\n kv[key] = item;\n }\n\n frmData.push(item);\n\n if (level === 1 || level === 2) {\n lv12.push({key, name, parent, level});\n }\n }\n\n for (let itm of frmData) {\n if (!hasValue(itm.parent)) continue;\n\n let po = kv[itm.parent];\n if (!po) itm.parent = undefined;\n else itm.parent = JSON.stringify({ key: itm.parent, level: po.level });\n }\n\n let places = flatDict(frmData);\n let regs = flatDict(lv12);\n\n commit(SET_STATE, {places, regs, loadingPlaces: false, loadingRegs: false})\n },\n async lazilyRegs({ dispatch }) {\n await dispatch('lazilyPlaces');\n },\n async lazilyPurchaseMethods({ state, commit }) {\n await loadDicts({ state, commit });\n },\n async lazilySections({ state, commit }) {\n await loadDicts({ state, commit });\n },\n async lazilyCurrencyCodes({ state, commit }) {\n await loadDicts({ state, commit });\n },\n async lazilyOkpd2({ state, commit }) {\n if (state.okpd2 || state.loadingOkpd2) return;\n commit(SET_STATE, {loadingOkpd2: true});\n let data = flatTree(await getOkpd2Json());\n commit(SET_STATE, {okpd2: data, loadingOkpd2: false})\n },\n }\n};\n\nexport default store;\n","import Vue from 'vue'\nimport Vuex, {mapState} from 'vuex'\nimport user from './modules/user'\nimport dicts from './modules/dicts'\nimport createPersistedState from 'vuex-persistedstate'\nimport * as Cookie from 'js-cookie'\nimport {COOKIE_AUTH_TOKEN, DEV_AUTH_TOKEN} from '@/config'\n\n//import localStore from 'store';\n\nexport const STORAGE_KEY = 'vuex';\n\n\nVue.use(Vuex);\n\nconst store = new Vuex.Store({\n modules: {\n user,\n dicts\n },\n plugins: [createPersistedState({\n key: STORAGE_KEY,\n paths: ['dicts',],\n getState: (key) => {\n let storageStateJson = window.sessionStorage.getItem(key);\n let storageState = storageStateJson && JSON.parse(storageStateJson) || null;\n\n let state = storageState || {};\n\n let authToken = Cookie.get(COOKIE_AUTH_TOKEN);\n if (DEV_AUTH_TOKEN) authToken = DEV_AUTH_TOKEN;\n\n state.user = {...state.user, authToken};\n\n return state;\n },\n setState: (key, state) => {\n let nextDicts = {};\n let existsAnyDict = false;\n if (state && state.dicts) {\n for (let key in state.dicts) {\n if (!key || key.indexOf('loading') >= 0) continue;\n let dict = state.dicts[key];\n if (!dict) continue;\n\n nextDicts[key] = dict;\n existsAnyDict = true;\n }\n }\n\n if (existsAnyDict) {\n let storageStateJson = window.sessionStorage.getItem(key);\n let storageState = storageStateJson && JSON.parse(storageStateJson) || null;\n let storageDicts = storageState && storageState.dicts || {};\n\n let nextState = {dicts: {...storageDicts, ...nextDicts}};\n let nextStateJson = JSON.stringify(nextState);\n if (storageStateJson !== nextStateJson) window.sessionStorage.setItem(key, JSON.stringify(nextState))\n }\n },\n })],\n});\n\nstore.watch((state) => state.user.authToken, async (value, oldValue) => {\n store.dispatch('user/update', {authToken: value});\n}, { immediate: true });\n\n\nexport const mapDicts = (args) => {\n if (args && typeof args == 'object') {\n let fields;\n\n if (Array.isArray(args)) fields = args;\n else fields = Object.values(args);\n\n // поля типа \"loading...\" не являются справочничами, методы для их загрузки вызывать не нужно\n fields = fields.filter(a => a && a.indexOf('loading') < 0);\n\n // вызываем методы для ленивой загрузки словарей\n fields.forEach(arg => store.dispatch('dicts/lazily' + arg[0].toUpperCase() + arg.slice(1)));\n }\n\n return mapState('dicts', args);\n};\n\n// быстрый доступ к токену авторизации\nexport function authToken() {\n if (!store || !store.state || !store.state.user) return null;\n return store.state.user.authToken;\n}\n\nexport default store;\n","import axios from 'axios';\nimport qs from 'qs';\n\nconst instance = axios.create({\n timeout: 300000,\n});\n\nfunction Cache(ttl) {\n let me = this;\n\n me.now = function() { return (new Date()).getTime() };\n me.ttl = ttl || 0;\n me.data = {};\n\n me.get = function(key) {\n let val = null;\n let obj = me.data[key];\n if(obj) {\n val = obj.val;\n if(me.now() >= obj.expires) {\n val = null;\n delete me.data[key]\n }\n }\n return val\n };\n\n me.del = function(key) {\n let oldval = me.get(key);\n delete me.data[key];\n return oldval\n };\n\n me.put = function(key, val, ttl) {\n if(ttl === undefined) {\n ttl = me.ttl;\n }\n let oldval = me.del(key);\n if(val !== null)\n me.data[ key ] = { expires: me.now() + ttl, val: val };\n return oldval\n }\n}\n\nlet cache = new Cache(5 * 1000);\n\nexport function httpCache(key, action, ttl) {\n if (typeof key === 'object')\n key = JSON.stringify(key, function(key, value) { return value == null ? undefined : value; });\n\n let value = cache.get(key);\n if (value) return value;\n\n value = action();\n cache.put(key, value, ttl);\n\n return value;\n}\n\n\nconst paramsSerializer = p => qs.stringify(p, {indices: false, allowDots: true});\n\nexport async function httpGet(url, params, {authToken, noCache = false} = {}) {\n let options = {params: params, paramsSerializer};\n if (noCache) options.headers = {...options.headers, 'Pragma': 'no-cache'};\n if (authToken) options.headers = {...options.headers, 'Authorization': 'Bearer ' + authToken};\n\n return (await instance.get(url, options)).data;\n}\n\nexport async function httpPut(url, body) {\n return (await instance.put(url, body)).data;\n}\n\nexport async function httpPost(url, body, {headers, withCredentials, ttl} = {}) {\n let data = await httpCache(\n {url, body},\n () => instance.post(url, body, {headers, withCredentials, mode: 'no-cors',}).then(a => a && a.data || null),\n ttl);\n\n return data;\n}\n\nexport async function httpPath(url, body, headers) {\n return (await instance.patch(url, body, {headers})).data;\n}\n\nexport async function httpDelete(url, params, headers) {\n return (await instance.delete(url, {params: params, paramsSerializer, headers})).data;\n}\n\nexport function urlConcat(url, relativeUri, {autoSlash = true} = {}) {\n if (autoSlash && relativeUri && url) {\n if (relativeUri[0] !== '/' && url[url.length - 1] !== '/')\n relativeUri = \"/\" + relativeUri;\n else if (relativeUri[0] === '/' && url[url.length - 1] === '/')\n relativeUri = relativeUri.substring(1);\n }\n\n let fullUrl = url + relativeUri;\n return fullUrl;\n}\n\nfunction uuidv4() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n}\n\n// ВАЖНО! данный метод возвращает НЕ Promise\n// не подходит для отработки длинных цепочек then/catch\n// и преднозначен для простой обработки ответа\n\n// обработчик вызывается только для последнего отправленного запроса\nexport function httpDebounce(request) {\n let key = uuidv4();\n\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n let requestId = uuidv4();\n key = requestId;\n\n let prms = request(a1, a2, a3, a4, a5, a6, a7, a8, a9);\n\n let callback = {\n payload: null,\n state: null,\n id: requestId,\n\n t: null,\n then: function (t) {\n const {state, id, payload} = this;\n if (state === 'then' && id === key) t(payload);\n\n this.t = t;\n return this;\n },\n c: null,\n catch: function (c) {\n const {state, id, payload} = this;\n if (state === 'catch' && id === key) c(payload);\n\n this.c = c;\n return this;\n },\n f: null,\n finally: function (f) {\n const {state, id} = this;\n if (state && id === key) f();\n\n this.f = f;\n return this;\n },\n };\n\n\n if (prms) {\n prms.then(data => {\n callback.state = 'then';\n callback.payload = data;\n\n if (key === requestId) {\n if (callback.t) callback.t(data);\n }\n }).catch(e => {\n callback.state = 'catch';\n callback.payload = e;\n\n if (key === requestId) {\n if (callback.c) callback.c(e);\n }\n }).finally(() => {\n if (key === requestId) {\n if (callback.f) callback.f();\n }\n });\n }\n\n return callback;\n };\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"input\":\"input-2b8\",\"inputError\":\"input__error-a9e\"};","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('input',{class:[_vm.style.input, _vm.error ? _vm.style.inputError : ''],attrs:{\"type\":_vm.type,\"placeholder\":_vm.placeholder},domProps:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event.target.value)}}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Input.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Input.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Input.vue?vue&type=template&id=7b91e680&\"\nimport script from \"./Input.vue?vue&type=script&lang=js&\"\nexport * from \"./Input.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport config from '@/pages.common'\nimport Meta from 'vue-meta'\n\nVue.use(Meta);\n\nnew Vue({\n ...config,\n components: { 'Detail': () => import ('@/components/Detail') },\n render: h => h('Detail'),\n}).$mount('#Detail');\n","export function isEmpty(value) {\n return !hasValue(value);\n}\n\nexport function hasValue(value) {\n if (value === null) return false;\n if (value === undefined) return false;\n if (value === '') return false;\n\n if (value === 0) return true;\n if (value) return true;\n\n return false;\n}\n\nexport function notEmptyString(str) {\n return (typeof str === 'string' || str instanceof String) && str.length > 0;\n}\n\nexport function concat(seporate, items) {\n if (!items) return '';\n\n let value = '';\n\n let any = false;\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (!hasValue(item)) continue;\n\n if (!any) {\n value += item;\n any = true;\n }\n else {\n value += seporate + item;\n }\n\n any = true;\n }\n\n return value;\n}\n\n\nexport function concatTitle(title, value, ending) {\n if (hasValue(value)) {\n if (ending) {\n return concatEnding(title + value, ending);\n } else {\n return title + value;\n }\n }\n\n\n return '';\n}\n\nexport function concatEnding(value, ending, where) {\n if (hasValue(value)) {\n if (where) {\n if (where(value)) {\n return value + ending;\n } else {\n return value;\n }\n } else {\n return value + ending;\n }\n }\n\n return '';\n}\n\nexport function concatWithSeparator(stringArray, separator) {\n let result = '';\n\n if (Array.isArray(stringArray) && stringArray.length > 0){\n stringArray.forEach(function (item) {\n if (item){\n result += (result.length > 0 ? separator : '') + item;\n }\n });\n }\n\n return result;\n}\n\nexport function uniqueName(name, names) {\n if (!hasValue(name)) return null;\n if (!hasValue(names)) return name;\n\n let objectKeys = {};\n names.forEach(a => objectKeys[a] = true);\n\n let index = 0;\n let nextName = name;\n while (objectKeys[nextName]) {\n index++;\n nextName = name + \" \" + index;\n }\n\n return nextName;\n}\n\nexport function toString(v) {\n if (!hasValue(v)) return null;\n if (typeof v === 'object') return JSON.stringify(v);\n return v.toString();\n}","import { httpGet, urlConcat, httpPost } from '@/utils/http'\nimport { API_TENDER } from '@/config'\n\nexport async function sendEmailForRecovery(data) {\n const url = urlConcat(API_TENDER, '/recovery/Forgot');\n return await httpPost(url, data, {withCredentials: true});\n}\n\nexport async function changePassword(data) {\n const url = urlConcat(API_TENDER, '/recovery/ChangePassword');\n return await httpPost(url, data, {withCredentials: true});\n}","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport VModal from 'vue-js-modal'\nimport VTooltip from 'v-tooltip'\nimport setState from 'vue-setstate'\nimport store from '@/store'\n\nVue.config.productionTip = false;\nVue.use(VueRouter);\nVue.use(VModal, { componentName: \"modal\" });\nVue.use(VTooltip);\nVue.use(setState);\n\nconst router = new VueRouter({\n mode: 'history'\n});\n\nconst config = {\n store,\n router\n};\n\nexport default config;\n","export function flatTree(v) {\n if (typeof v === 'object' && !Array.isArray(v))\n return v;\n\n let flt = (array, kv, prntKey, po) => {\n if (!kv) kv = {};\n if (!array || array.length <= 0) return kv;\n array.forEach(a => {\n if (!a) return;\n\n let key;\n if (hasValue(a.key)) key = a.key;\n else if (hasValue(a.id)) key = a.id;\n\n let child = a['child'];\n let value = {};\n for (let k in a) if (k !== 'child' && k !== 'key' && k !== 'id' && k !== 'hasChildren')\n value[k] = a[k];\n\n kv[key] = value;\n\n value['parent'] = hasValue(prntKey) ? prntKey : value['parent'];\n if (!hasValue(value['parent'])) {\n if (!kv['root']) kv['root'] = [];\n kv['root'].push(key);\n }\n\n if (po) {\n if (!po['child']) po['child'] = [];\n po['child'].push(key);\n }\n\n if (child && child.length > 0) {\n flt(child, kv, key, value);\n }\n });\n\n return kv;\n };\n\n let obj = flt(v);\n return obj;\n}\n\nexport function flatDict(v) {\n if (typeof v === 'object' && !Array.isArray(v))\n return v;\n\n let kv = {};\n let array = v;\n if (!array || array.length <= 0) return kv;\n array.forEach(a => {\n if (!a || a.key === a.parent) return;\n\n let key;\n if (hasValue(a.key)) key = a.key;\n else if (hasValue(a.id)) key = a.id;\n\n let value = kv[key] || (kv[key] = {});\n for (let k in a) if (k !== 'child' && k !== 'key' && k !== 'id' && k !== 'hasChildren')\n value[k] = a[k];\n\n let pk = value['parent'];\n if (!hasValue(pk)) {\n if (!kv['root']) kv['root'] = [];\n kv['root'].push(key);\n } else {\n let po = kv[pk] || (kv[pk] = {});\n if (!po['child']) po['child'] = [];\n po['child'].push(key);\n }\n });\n\n return kv;\n}\n\nexport function toObj(array, getKey, getValue) {\n if (!array || array.length <= 0) return {};\n let obj = {};\n for (let i = 0; i < array.length; i++) {\n let item = array[i];\n if (!item) continue;\n let key;\n if (getKey) key = getKey(item);\n else key = item.key;\n\n if (!key) continue;\n let value;\n if (getValue) value = getValue(item);\n else value = item.value;\n\n obj[key] = value;\n }\n\n return obj;\n}\n\nexport function toArray(obj, map) {\n if (!obj) return [];\n\n if (Array.isArray(obj)) {\n let array = obj;\n if (!map) return array;\n else return array.map(map);\n }\n\n if (typeof obj !== 'object') {\n return [obj];\n }\n\n let keys = Object.keys(obj);\n let array = [];\n for (let i = 0; i < keys.length; i++) {\n let key = keys[i];\n let v = obj[key];\n\n if (map) {\n let item = map(obj);\n if (item) array.push(item);\n } else {\n array.push({key: key, value: v});\n }\n }\n\n return array;\n}\n\n\n//--//\nfunction objectOrArray(val, ifObject, ifArray) {\n if (!val) return val;\n\n if (typeof val === 'object') {\n if (Array.isArray(val)) {\n return ifArray(val);\n } else {\n return ifObject(val);\n }\n }\n\n return val;\n}\n\nfunction toCustomKeys(str, modifier) {\n if (!str) return '';\n if (!modifier) modifier = (b) => b;\n\n return String(str)\n .replace(/^[^A-Za-z0-9]*|[^A-Za-z0-9]*$/g, '')\n .replace(/[^A-Za-z0-9]+/g, '$')\n .replace(/([a-z])([A-Z])/g, (m, a, b) => `${a}$${b}`)\n .toLowerCase()\n .replace(/(\\$)(\\w)/g, (m, a, b) => modifier(b));\n}\n\nexport function customKeys(obj, modifier) {\n if (!obj) return null;\n\n let target = objectOrArray(obj, (o) => {\n const res = {};\n for (const key in o) {\n let val = o[key];\n\n val = objectOrArray(val,\n (v) => customKeys(v, modifier),\n (v) => v.map(a => customKeys(a, modifier))\n );\n\n let nextKey = toCustomKeys(key, modifier);\n\n let old = res[nextKey];\n if (old && typeof old === 'object' && typeof val === 'object') {\n res[nextKey] = {...old, ...val};\n } else {\n res[nextKey] = val;\n }\n }\n\n return res;\n },\n (o) => {\n let res = o.map(a => customKeys(a, modifier));\n return res;\n });\n\n return target;\n}\n\nexport function camelKeys(obj) {\n return customKeys(obj, (b) => hasValue(b) ? b.toUpperCase() : b);\n}\n\nexport function lowerKeys(obj) {\n return customKeys(obj, (b) => b);\n}\n\nexport function lowerArray(array)\n{\n if (array && array.length > 0){\n for (let i = 0; i < array.length; i++){\n if (typeof(array[i]) === 'string'){\n array[i] = array[i].toLowerCase();\n }\n }\n }\n}\n\nexport function lowerCaseObjectArray(array){\n if (!array) return;\n\n for (let i = 0; i < array.length; i++)\n {\n let keys = Object.keys(array[i]);\n\n for (let k = 0; k < keys.length; k++) {\n let key = keys[k];\n if (typeof(array[i][key]) === 'string'){\n array[i][key] = array[i][key].toLowerCase();\n }\n }\n }\n}\n\nexport function uuidv4() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n}\n\n\nexport function allowDotsParse (obj) {\n let keys = Object.keys(obj);\n let target = {};\n for (let i = 0; i < keys.length; i++) {\n let key = keys[i];\n\n if (key.indexOf('.') === -1) {\n target[key] = obj[key];\n } else {\n let paths = key.split('.');\n\n let current = target;\n let last = null;\n let max = paths.length - 1;\n for (let j = 0; j < max; j++) {\n let path = paths[j];\n last = current[path];\n if (!last) {\n last = {};\n }\n\n current[path] = last;\n current = last;\n }\n\n let endPath = paths[paths.length - 1];\n last[endPath] = obj[key];\n }\n }\n\n return target;\n}\n\nexport function allowDotsSerialize (obj) {\n if (!obj) return obj;\n\n let serialize = (v) => {\n let any = false;\n let current = v;\n do {\n any = false;\n\n let ks = Object.keys(current);\n let trg = {};\n\n for (let i = 0; i < ks.length; i++) {\n let key = ks[i];\n let val = current[key];\n\n if (val && typeof val === 'object' && !Array.isArray(val)) {\n let nstKeys = Object.keys(val);\n for (let j = 0; j < nstKeys.length; j++) {\n let nstKey = nstKeys[j];\n let nstVal = val[nstKey];\n\n let newKey = key + '.' + nstKey;\n trg[newKey] = nstVal;\n\n if (typeof nstVal === 'object' && !Array.isArray(val))\n any = true;\n }\n } else {\n trg[key] = val;\n }\n }\n\n current = trg;\n } while (any);\n\n return current;\n };\n\n let target = serialize(obj);\n return target;\n}\n\n\nexport function hasValue(value) {\n if (value === null) return false;\n if (value === undefined) return false;\n if (value === '') return false;\n if (value === 0) return true;\n if (typeof value === 'object' && Array.isArray(value) && value.length <= 0) return false;\n\n if (value) return true;\n return false;\n}\n\nexport function clearEmpty(obj) {\n if (!obj) return;\n\n let trg = {};\n let keys = Object.keys(obj);\n\n for (let i = 0; i < keys.length; i++) {\n let key = keys[i];\n let val = obj[key];\n\n if (!hasValue(val)) continue;\n\n trg[key] = val;\n }\n\n return trg;\n}\n\nexport function get(v, path, map, def) {\n if (v === null || v === undefined) return v;\n\n if (path && typeof path === 'string') path = path.split('.');\n if (!map) map = (v) => v;\n\n if (path && path.length > 0) {\n let key = path[0];\n\n if (typeof v === 'object') {\n if (path.length > 1) return get(v[key], path.splice(0,1), map);\n else return v[key] !== null && v[key] !== undefined ? map(v[key]) : def !== undefined ? def : v[key];\n }\n } else {\n return v !== null && v !== undefined ? map(v) : def !== undefined ? def : v;\n }\n\n return undefined;\n}\n","export function routerReplace(router, options) {\n if (typeof options == \"string\") {\n let nextPath = router.currentRoute.fullPath.toLowerCase();\n if (router.currentRoute.fullPath !== nextPath)\n router.replace(nextPath);\n\n } else {\n const { path, query } = options;\n\n let eqal = false;\n if (router.history.current.path === path) {\n let jsonNewQuery = JSON.stringify(query);\n let jsonQuery = JSON.stringify(router.history.current.query);\n if (jsonNewQuery === jsonQuery)\n eqal = true;\n }\n\n if (!eqal) router.replace({ path, query });\n }\n}\n","import {allowDotsParse, allowDotsSerialize, camelKeys, clearEmpty, hasValue, lowerKeys, lowerArray, lowerCaseObjectArray} from '@/utils/obj'\nimport queryString from 'query-string'\nimport {addTimeZone, pad, toBoolean, convertOrganizationLevels} from '@/utils/converter';\nimport { parseFilterFromUrl } from '@/api/monitoring';\nimport {httpCache, urlConcat} from '@/utils/http';\nimport { DEBUG } from '@/config';\nimport { routerReplace } from '@/utils/router';\n\nfunction toArray(v) {\n if (!hasValue(v)) return v;\n if (Array.isArray(v)) return v;\n\n return [v];\n}\n\nfunction dateFormat(date) {\n if (!(date instanceof Date)) {\n return null;\n }\n\n const d = pad(date.getDate()),\n m = pad(date.getMonth() + 1),\n y = pad(date.getFullYear(), 4);\n\n return `${y}-${m}-${d}`;\n}\n\nfunction treeToString (vl) {\n if (!vl || vl.length <= 0) return null;\n let str = vl.map(a => `${a.key}|${a.parents && a.parents.join(';') || ''}`).join(',');\n return str;\n}\n\nfunction getLocalDate (dateStr) {\n if (!dateStr || dateStr == '') {\n return null;\n }\n\n let dt = addTimeZone(dateStr);\n\n return new Date(dt);\n}\n\nfunction prsDt(v) {\n if (!v) return v;\n let ary = v.split(' ');\n if (ary && ary.length > 0) {\n let t = ary[0];\n return getLocalDate(t);\n }\n}\n\nfunction getWordsArray (keywordsParam, keywordsListParam) {\n let keywordsList = [];\n\n if (keywordsParam) {\n if (Array.isArray(keywordsParam))\n keywordsList = keywordsList.concat(keywordsParam);\n else\n keywordsList = keywordsList.concat(keywordsParam.split(','));\n }\n\n if (keywordsListParam)\n keywordsList = keywordsList.concat(keywordsListParam);\n\n return keywordsList;\n}\n\nfunction stringTreeParce (vl) {\n if (!vl) return;\n let itms = vl.split(',').map(a => {\n let keyParents = a.split('|');\n let key = keyParents && keyParents.length > 0 && keyParents[0];\n let parents = keyParents && keyParents.length > 1 && keyParents[1] && keyParents[1].split(';') || null;\n\n return {key, parents};\n });\n\n return itms;\n}\n\nconst organizationLevels = [\n { id: '2', name: 'Fz223', title: '223 ФЗ', fullTitleAblative: '223 Федеральным Законом' },\n { id: '3', name: 'Commercial', title: 'коммерческие' },\n { id: '4', name: 'Fz44', title: '44 ФЗ', fullTitleAblative: '44 Федеральным Законом' },\n { id: '5', name: 'Pprf615', title: '615 ПП', fullTitleAblative: '615 Постановлением Правительства' }\n];\n\nconst dictOrganizationLevels = organizationLevels.reduce((r, a) => { r[a.id] = a; return r; },{});\n\nexport function getOrganizationLevelById(id) {\n if (id == null) return null;\n if (typeof id !== 'string') id = id.toString();\n\n return dictOrganizationLevels[id];\n}\n\nexport function getOrganizationLevels() {\n return organizationLevels;\n}\n\nexport function organizationLevelsIdToCode(levelId) {\n return organizationLevels.find(i => i.id === levelId) || levelId;\n}\n\nexport function getOrganizationLevel(level) {\n return organizationLevels.find(i=>i.name.toUpperCase() === level.toUpperCase()) || level;\n}\n\nconst salesChannels = [\n { id: 1, name: 'tenders-search', title: 'Тендеры' },\n { id: 2, name: 'plans', title: 'Плановые закупки' },\n { id: 3, name: 'subcontracts', title: 'Субподряды и субпоставки' }\n];\n\nexport function getSalesChannels() {\n return salesChannels;\n}\n\nimport {OPEN_MONITORING_SEARCH_URL_PATH_ENDING} from '@/config'\nexport async function getFilterFromUrl(searchPage) {\n if (!searchPage) searchPage = OPEN_MONITORING_SEARCH_URL_PATH_ENDING;\n\n try {\n let urlSearch = window.location.search;\n if (urlSearch) {\n let urlPrepare = queryString.parseUrl(urlSearch);\n if (urlPrepare) {\n let query = urlPrepare.query;\n if (query) {\n let queryObject = allowDotsParse(urlPrepare.query);\n queryObject = lowerKeys(queryObject);\n\n if (queryObject) {\n let searchText = queryObject.query;\n\n let searchForm = queryObject.searchform || {};\n\n let showMore = searchText === '' && searchForm.organizationlevels === '';\n\n let organizationLevels = null;\n let isSmallAndAverageBusiness = null;\n\n if (searchForm || searchText || organizationLevels || isSmallAndAverageBusiness) {\n if (!searchForm) searchForm = {};\n\n isSmallAndAverageBusiness = searchForm.issmallandaveragebusiness && searchForm.issmallandaveragebusiness === 'true';\n\n if (searchForm.organizationlevels) {\n if (!Array.isArray(searchForm.organizationlevels)) {\n organizationLevels = searchForm.organizationlevels !== 'Small' ? [searchForm.organizationlevels] : null;\n isSmallAndAverageBusiness = searchForm.organizationlevels === 'Small' || isSmallAndAverageBusiness;\n\n } else if (searchForm.OrganizationLevels.length) {\n organizationLevels = searchForm.organizationlevels;\n }\n }\n\n if (organizationLevels) {\n organizationLevels = organizationLevels.map(a => {\n if (a == '2') return 'Fz223';\n if (a == '4') return 'Fz44';\n if (a == '5') return 'Pprf615';\n if (a == '3') return 'Commercial';\n\n return a;\n });\n }\n\n console.log(searchForm);\n console.log(organizationLevels);\n\n let salesChannel = null;\n if (searchForm.saleschannel && !Array.isArray(searchForm.saleschannel)) {\n salesChannel = [searchForm.saleschannel];\n }\n else {\n salesChannel = searchForm.saleschannel;\n }\n\n let keywordsList = getWordsArray(searchForm.keywords, searchForm.keywordslist);\n if (searchText && !keywordsList) keywordsList = [searchText];\n if (searchText && keywordsList) keywordsList.push(searchText);\n let excludeKeywordsList = getWordsArray(searchForm.excludekeywords, searchForm.excludekeywordslist);\n\n let documentSearchEnabled = toBoolean(searchForm.documentsearchenabled);\n if (documentSearchEnabled === null) documentSearchEnabled = true;\n\n let universalRegion = stringTreeParce(searchForm.universalregion || searchForm.deliveryregion || searchForm.region || null)\n\n if (universalRegion) universalRegion = universalRegion.map(a => {\n if (a.key.length <= 2)\n return {key: JSON.stringify({key: a.key, level: 1})};\n\n if (a.parents && a.parents.some(aa => aa.length > 2))\n return {key: JSON.stringify({key: a.key, level: 3})};\n\n return {key: JSON.stringify({key: a.key, level: 2})};\n });\n\n let organizationsTags = [];\n\n try {\n if (searchForm.organizationstags) {\n organizationsTags = JSON.parse(searchForm.organizationstags);\n }\n } catch (e) {\n console.log(e);\n /*ignore*/\n }\n\n try {\n if (searchForm.customerinn) {\n searchForm.customerinn\n .split(',')\n .map(innKpp => innKpp.match(/^([0-9]+)((_|\\|)([0-9]*))?$/))\n .forEach(m => {\n if (m) {\n organizationsTags.push({ inn: m[1], kpp: m[4] });\n }\n });\n }\n } catch (e) {\n console.log(e);\n /*ignore*/\n }\n\n let okpd2 = (searchForm.okpd2) ? searchForm.okpd2.toUpperCase() : null;\n\n let filter = {};\n filter.applicationEndDateFrom = prsDt(searchForm.applicationenddatefrom);\n filter.applicationEndDateTo = prsDt(searchForm.applicationenddateto);\n filter.combinedTradeRegistrationNumber = searchForm.traderegistrationnumber || searchForm.tradenumber || searchForm.tenderid;\n filter.currencyCode = searchForm.currencycode; // \"-\" поумолчанию\n filter.datePublishedFrom = prsDt(searchForm.datepublishedfrom);\n filter.datePublishedTo = prsDt(searchForm.datepublishedto);\n filter.universalRegion = universalRegion;\n filter.documentSearchEnabled = documentSearchEnabled;\n filter.excludeKeywords = excludeKeywordsList;\n filter.hasApplications = toBoolean(searchForm.hasapplications);\n filter.hasPrepayment = toBoolean(searchForm.hasprepayment);\n filter.isAvailableApplicationsWithoutSignature = searchForm.isavailableapplicationswithoutsignature;\n filter.isSmallAndAverageBusiness = toBoolean(isSmallAndAverageBusiness);\n filter.keywords = keywordsList;\n filter.marketPlaceIds = searchForm.marketplaceids;\n filter.maxApplicationGuarantee = searchForm.maxapplicationguarantee;\n filter.maxContractGuarantee = searchForm.maxcontractguarantee;\n filter.maxPrice = searchForm.maxprice;\n filter.minApplicationGuarantee = searchForm.minapplicationguarantee;\n filter.minContractGuarantee = searchForm.mincontractguarantee;\n filter.minPrice = searchForm.minprice;\n filter.name = queryObject.filtername || 'Мониторинг';\n filter.okpd2 = stringTreeParce(okpd2);\n filter.openAdditionalParams = showMore;\n filter.organizationLevels = organizationLevels && organizationLevels.filter(a => a);\n filter.organizationsTags = organizationsTags;\n filter.organizer = searchForm.organizername && [searchForm.organizername]; //!!!!\n filter.period = searchForm.period || 4; //4 - все, 2 - за день, 3 - за неделю\n filter.purchaseMethods = toArray(searchForm.purchasemethods);\n filter.saveToHistory = false;\n filter.salesChannel = salesChannel;\n filter.sectionIds = toArray(searchForm.sectionids);\n filter.state = searchForm.state;\n\n let kwrds = filter.keywords;\n if (kwrds) filter.keywords = kwrds.map(a => a.replace(/[\"']/g, '').replace(/ ~\\d*/g, '').trim());\n\n let f = await parseFilterFromUrlPath(filter, searchPage);\n return f;\n }\n }\n }\n }\n }\n\n let f = await parseFilterFromUrlPath({}, searchPage);\n return f;\n\n } catch (e) {\n console.log(e);\n /*ignore*/\n }\n}\n\nexport function mapFilterToFilterUrl(value, query)\n{\n if (!value) return;\n\n if (!query) query = {};\n\n let tradeRegistrationNumber = value.combinedTradeRegistrationNumber && value.combinedTradeRegistrationNumber.length === 19 ? value.combinedTradeRegistrationNumber : '';\n let tradeNumber = value.combinedTradeRegistrationNumber && value.combinedTradeRegistrationNumber.length < 19 ? value.combinedTradeRegistrationNumber : '';\n let universalRegion = value && value.universalRegion && (value.universalRegion.map(aa => aa.key.indexOf('{') >= 0 ? ({...aa, key: JSON.parse(aa.key).key, parent: aa.parent && JSON.parse(aa.parent).key || null, parents: aa.parents && aa.parents.map(parent => JSON.parse(parent).key) || null}) : aa)) || null;\n\n let a = value;\n\n const keywordsIsArray = Array.isArray(a.keywords) && a.keywords.length > 1;\n\n lowerArray(a.keywords);\n lowerArray(a.excludeKeywords);\n lowerCaseObjectArray(a.organizationsTags)\n\n let searchForm = {\n state: a.state,\n keywords: !keywordsIsArray && a.keywords || null,\n keywordslist: keywordsIsArray && a.keywords || null,\n applicationenddatefrom: dateFormat(a.applicationEndDateFrom),\n applicationenddateto: dateFormat(a.applicationEndDateTo),\n currencycode: a.currencyCode,\n customerinn: null,\n datepublishedfrom: dateFormat(a.datePublishedFrom),\n datepublishedto: dateFormat(a.datePublishedTo),\n deliveryregion: null,\n documentsearchenabled: a.documentSearchEnabled,\n excludekeywords: a.excludeKeywords,\n hasapplications: a.hasApplications,\n hasprepayment: a.hasPrepayment,\n isavailableapplicationswithoutsignature: a.isAvailableApplicationsWithoutSignature,\n issmallandaveragebusiness: a.isSmallAndAverageBusiness,\n marketplaceids: a.marketPlaceIds,\n maxapplicationguarantee: a.maxApplicationGuarantee,\n maxcontractguarantee: a.maxContractGuarantee,\n maxprice: a.maxPrice,\n minapplicationguarantee: a.minApplicationGuarantee,\n mincontractguarantee: a.minContractGuarantee,\n minprice: a.minPrice,\n okpd2: treeToString(a.okpd2),\n organizationlevels: a.organizationLevels,\n organizationstags: a.organizationsTags && JSON.stringify(a.organizationsTags),\n OrganizerInn: null,\n period: a.period,\n purchasemethods: a.purchaseMethods,\n region: treeToString(universalRegion),\n sectionids: a.sectionIds,\n tenderid: null,\n tradenumber: tradeNumber,\n traderegistrationnumber: tradeRegistrationNumber,\n universalregion: null,\n saleschannel: a.salesChannel\n };\n\n // searchForm = clearEmpty(searchForm);\n\n let cleanForm = {};\n\n for (let key in searchForm) {\n if (searchForm[key]) {\n cleanForm[key] = searchForm[key];\n }\n }\n\n let urlParam = allowDotsSerialize({ searchform: cleanForm});\n let newQuery = {...query, ...urlParam};\n\n return newQuery;\n}\n\nfunction isFilterEmpty(filterInput, deleteMspAndPrepayment) {\n let filter = {};\n Object.assign(filter, filterInput)\n delete (filter.header);\n delete (filter.pageDescription);\n delete (filter.pageTitle);\n delete (filter.saveToHistory);\n delete (filter.total);\n delete (filter.period);\n delete (filter.sortKey);\n delete (filter.breadCrumbs);\n delete (filter.name);\n delete (filter.openAdditionalParams);\n\n if(deleteMspAndPrepayment === true) {\n filter.isSmallAndAverageBusiness = null;\n filter.hasPrepayment = null;\n }\n\n let filterEmpty = true;\n //Удаляем дефолтовые свойство.\n if(filter.state === 0 || filter.state === 1 || filter.state === 2) {\n delete (filter.state);\n }\n if(filter.documentSearchEnabled === true) {\n delete (filter.documentSearchEnabled);\n }\n\n for(let key in filter) {\n if (filter[key] != null && (!Array.isArray(filter[key]) || (Array.isArray(filter[key]) && filter[key].length > 0))) {\n filterEmpty = false;\n break;\n }\n }\n\n return filterEmpty;\n}\n\nexport function getCanonicalPath(searchFilter, paging, dicts, regionsFlat, searchPath, defaultSearchPage)\n{\n let seoFilter = getSeoSearchUrlRoute(searchFilter, paging, dicts, regionsFlat, searchPath, defaultSearchPage);\n\n return seoFilter.canonicalPath;\n}\n\nexport function getSeoSearchUrlRoute(searchFilter, paging, dicts, regionsFlat, searchPath, defaultSearchPage) {\n let routePart = '';\n let filter = {};\n Object.assign(filter, searchFilter);\n\n let purchaseMethods =\n [\n {\n Abbreviation: \"auction\",\n PurchaseMethods : [4, 6, 27]\n },\n {\n Abbreviation: \"price-request\",\n PurchaseMethods: [3, 9, 10, 15, 26, 23, 22]\n },\n {\n Abbreviation: \"proposal-request\",\n PurchaseMethods: [ 1, 5, 8, 17, 14]\n },\n {\n Abbreviation: \"tender-purchase\",\n PurchaseMethods: [ 2, 7, 16, 24, 18, 21]\n }\n ];\n\n let isOnlyTendersSelected = false;\n\n if (filter.salesChannel && filter.salesChannel.length === 1) {\n const salesChannel = salesChannels.find(function(element){\n if (element.id === Number(filter.salesChannel[0]))\n {\n return element;\n }\n });\n\n let hasPurchaseMethods = false;\n\n if (salesChannel) {\n isOnlyTendersSelected = filter.salesChannel[0] == salesChannels[0].id;\n\n if(isOnlyTendersSelected && filter.purchaseMethods) {\n for (let i = 0; i < purchaseMethods.length; i++)\n {\n if(purchaseMethods[i].PurchaseMethods.sort().toString() === filter.purchaseMethods.sort().toString())\n {\n routePart = routePart + '/' + purchaseMethods[i].Abbreviation;\n hasPurchaseMethods = true;\n filter.purchaseMethods = null;\n isOnlyTendersSelected = false;\n break;\n }\n }\n /*\n if(!hasPurchaseMethods) {\n routePart = routePart + defaultSearchPage;\n }\n */\n }\n\n if(!hasPurchaseMethods) {\n //Только тендеры и сортировка по релевантности.\n if (isOnlyTendersSelected && paging && paging.sort && paging.sort.key === 1) {\n routePart = routePart + '/purchases';\n } else {\n routePart = routePart + '/' + salesChannel.name;\n }\n }\n\n filter.salesChannel = null;\n }\n }\n else {\n routePart = routePart + defaultSearchPage;\n }\n\n //let newQuery = mapFilterToFilterUrl(searchFilter, query);\n if (filter.keywords && filter.keywords.length == 1 && (filter.keywords.some(a => a.indexOf('\"') < 0 && filter.keywords.some(a => a.indexOf(\"'\") < 0)))) {\n routePart = routePart + '/' + cyrillToLatin(filter.keywords.join('_'), '-');\n\n filter.keywords = null;\n isOnlyTendersSelected = false;\n }\n\n if (filter.sectionIds && filter.sectionIds.length === 1) {\n let marketPlaceName = dicts.sections[filter.sectionIds[0]].name;\n routePart = routePart + '/' + cyrillToLatin(marketPlaceName, '-');\n filter.sectionIds = null;\n isOnlyTendersSelected = false;\n }\n\n if (filter.organizationLevels && filter.organizationLevels.length == 1) {\n routePart = routePart + '/' + convertOrganizationLevels(filter.organizationLevels).join('_');\n filter.organizationLevels = null;\n isOnlyTendersSelected = false;\n }\n\n /*\n if (filter.deliveryRegion && filter.deliveryRegion.length === 1) {\n routePart = routePart + '/' + cyrillToLatin(regionsFlat[filter.deliveryRegion[0].key].name, '_');\n filter.deliveryRegion = null;\n }\n */\n\n if (filter.universalRegion && filter.universalRegion.length === 1) {\n\n let region = regionsFlat[filter.universalRegion[0].key];\n if(region) {\n routePart = routePart + '/' + cyrillToLatin(regionsFlat[filter.universalRegion[0].key].name, '-');\n filter.universalRegion = null;\n isOnlyTendersSelected = false;\n }\n }\n\n if (filter.organizationsTags && filter.organizationsTags.length === 1) {\n routePart = routePart + '/' + cyrillToLatin(filter.organizationsTags[0].name, '-', true);\n filter.organizationsTags = null;\n isOnlyTendersSelected = false;\n }\n\n if (filter.okpd2 && filter.okpd2.length === 1 && filter.okpd2[0].key && filter.okpd2[0].key.match(/[\\d.]+/)) {\n routePart = routePart + '/' + filter.okpd2[0].key.replace(' ', '_');\n filter.okpd2 = null;\n isOnlyTendersSelected = false;\n }\n\n let filterEmpty = isFilterEmpty(filter, true);\n\n if (filterEmpty && isOnlyTendersSelected && filter.isSmallAndAverageBusiness) {\n routePart = routePart + '/msp';\n filter.isSmallAndAverageBusiness = null;\n isOnlyTendersSelected = false;\n }\n\n if (filterEmpty && isOnlyTendersSelected && filter.hasPrepayment) {\n routePart = routePart + '/prepayment';\n filter.hasPrepayment = null;\n isOnlyTendersSelected = false;\n }\n\n filterEmpty = isFilterEmpty(filter);\n\n routePart = routePart.toLowerCase();\n \n if (DEBUG){\n routePart = routePart.replace(defaultSearchPage.toLowerCase(), defaultSearchPage);\n }\n\n return filterEmpty\n ? { path: urlConcat(searchPath, routePart), canonicalPath: urlConcat(searchPath, routePart) }\n : { path: urlConcat(searchPath, defaultSearchPage), canonicalPath: urlConcat(searchPath, routePart), filter: searchFilter }\n}\n\nasync function parseFilterFromUrlPath(filter, searchPage) {\n if (typeof searchPage === \"string\") searchPage = {[searchPage.toLowerCase().replace('/', '')]: true};\n else if (searchPage) searchPage = searchPage.map(a => a.toLowerCase()).reduce((r, a) => {r[a] = true; return r;}, {});\n\n let path = window.location.pathname.toLowerCase();\n\n let pathArray = path.split('/').filter(a => a);\n let pathParams = [];\n let any = false;\n for (let pathArrayItem of pathArray) {\n if (!any) {\n if (searchPage[pathArrayItem.toLowerCase()]) {\n any = true;\n }\n } else {\n pathParams.push(pathArrayItem);\n }\n }\n\n if (!any) {\n pathParams = pathArray;\n }\n\n path = '/' + pathParams.join('/');\n path = decodeURI(path);\n\n let parseData = null;\n\n // хак для заголовка при переходе с главной\n if ((path && path.length > 0 && path !== '/' && path != ' ') || !filter.keywords || filter.keywords.length === 0) {\n parseData = await parseFilterFromUrl(path);\n }\n else {\n parseData = await parseFilterFromUrl(filter.keywords.join('_'));\n }\n\n if (parseData) {\n filter.header = parseData.Header;\n filter.pageTitle = parseData.PageTitle;\n filter.pageDescription = parseData.PageDescription;\n filter.breadCrumbs = parseData.BreadCrumbs;\n\n if (parseData.Filter) {\n if (!filter.purchaseMethods && parseData.Filter.PurchaseMethods) {\n filter.purchaseMethods = parseData.Filter.PurchaseMethods;\n }\n\n if (!filter.salesChannel && parseData.Filter.SalesChannel) {\n filter.salesChannel = parseData.Filter.SalesChannel;\n }\n\n if (!filter.sectionIds && parseData.Filter.SectionIds) {\n filter.sectionIds = parseData.Filter.SectionIds;\n }\n\n if (!filter.organizationLevels && parseData.Filter.OrganizationLevels) {\n filter.organizationLevels = parseData.Filter.OrganizationLevels;\n }\n\n if (!filter.deliveryRegion && parseData.Filter.DeliveryRegions) {\n filter.deliveryRegion = parseData.Filter.DeliveryRegions\n .map(i => {\n return {key: i.Key}\n });\n }\n\n if (!filter.universalRegion) {\n if (parseData.Filter.UniversalRegions) {\n filter.universalRegion = parseData.Filter.UniversalRegions\n .map(i => {\n let level = i.Level;\n let key = i.Key;\n\n if (!level) {\n if (key && key.length <= 2) level = 1;\n else level = 2;\n }\n\n return {key: JSON.stringify({key, level})};\n });\n }\n\n if (parseData.Filter.DeliveryCities) {\n if (!filter.universalRegion) filter.universalRegion = [];\n\n parseData.Filter.DeliveryCities\n .map(i => ({key: JSON.stringify({key: i.Key, level: i.Level || 3})}))\n .forEach(a => filter.universalRegion.push(a));\n }\n }\n\n if(parseData.Filter.Sort) {\n filter.sortKey = parseData.Filter.Sort;\n }\n\n if (!filter.okpd2 && parseData.Filter.Okpd2) {\n filter.okpd2 = parseData.Filter.Okpd2\n .map(i => {\n return {key: i.Key}\n });\n }\n\n if (!filter.isSmallAndAverageBusiness && parseData.Filter.IsSmallAndAverageBusiness) {\n filter.isSmallAndAverageBusiness = true;\n }\n\n if (!filter.hasPrepayment && parseData.Filter.HasPrepayment) {\n filter.hasPrepayment = true;\n }\n\n if (!filter.organizationsTags && parseData.Filter.OrganizationsTags) {\n filter.organizationsTags =\n parseData.Filter.OrganizationsTags\n .map(i => {\n return {id: i.Id, inn: i.Inn, innKpp: i.InnKpp, kpp: i.Kpp, name: i.Name};\n });\n }\n\n if ((!filter.keywords || !filter.keywords.length) && parseData.Filter.Keywords && parseData.Filter.Keywords != 'мониторинг') {\n filter.keywords = parseData.Filter.Keywords;\n }\n }\n }\n\n return filter;\n}\n\nexport function setFilterToUrl(router, value, paging, dicts, regionsFlat, searchPath, defaultSearchPage) {\n let query = router.query || {};\n let seoFilter = getSeoSearchUrlRoute(value, paging, dicts, regionsFlat, searchPath, defaultSearchPage);\n\n if (!seoFilter.filter\n || (Object.keys(seoFilter.filter).length === 0\n && seoFilter.filter.constructor === Object)) {\n routerReplace(router, { path: seoFilter.path });\n return { newQuery: null, canonicalPath: \"\" };\n }\n else {\n let newQuery = mapFilterToFilterUrl(seoFilter.filter, query);\n\n routerReplace(router, { path: seoFilter.path, query: newQuery });\n\n if (!DEBUG){\n routerReplace(router, router.currentRoute.fullPath.toLowerCase());\n }\n\n return { newQuery: newQuery, canonicalPath: seoFilter.canonicalPath };\n }\n}\n\nconst purchaseMethodIdToNameArray = [\n { id: '1', name: 'ProposalRequest', title: 'Запросы предложений' },\n { id: '2', name: 'TenderPurchase', title: 'Конкурсы' },\n { id: '3', name: 'PriceRequest', title: 'Запросы цен\\\\котировок' },\n { id: '4', name: 'Auction', title: 'Аукционы' }\n];\n\nexport function getSeoPurchaseMethods() {\n return purchaseMethodIdToNameArray;\n}\n\nexport function getPurchaseMethodById(purchaseMethodId) {\n return purchaseMethodIdToNameArray.find(i => i.id === purchaseMethodId);\n}\n\nexport function getPurchaseMethodByName(purchaseMethodName) {\n return purchaseMethodIdToNameArray.find(i => i.name.toUpperCase() === purchaseMethodName.toUpperCase());\n}\n\nconst arrru = ['Я', 'я', 'Ю', 'ю', 'Щ', 'щ', 'Ч', 'ч', 'Ш', 'ш', 'Ж', 'ж', 'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Э', 'э', 'Е', 'е', 'Ё', 'ё', 'З', 'з', 'И', 'и', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н', 'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ф', 'ф', 'Х', 'х', 'Ц', 'ц', 'Ы', 'ы', 'ь', 'Ь', 'ъ', 'Ъ', \"[^A-Za-z0-9-' ]\"];\nconst arren = ['Ya', 'ya', 'Yu', 'yu', 'Sch', 'sch', 'Ch', 'ch', 'Sh', 'sh', 'Zh', 'zh', 'A', 'a', 'B', 'b', 'V', 'v', 'G', 'g', 'D', 'd', 'E\\'', 'e\\'', 'E', 'e', 'Yo', 'yo', 'Z', 'z', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'F', 'f', 'H', 'h', 'C', 'c', 'Y', 'y', '\\'', '\\'', '\\'\\'', '\\'\\'', ''];\n\nexport function cyrillToLatin(text, spaceReplacement, replaceCommas) {\n for (let i = 0; i < arrru.length; i++) {\n let reg = new RegExp(arrru[i], \"g\");\n text = text.replace(reg, arren[i]);\n }\n\n /*\n if(text && replaceCommas === true){\n text = text.replace(/\"/g, '');\n }\n */\n\n return spaceReplacement\n ? text.split(' ').join(spaceReplacement)\n : text;\n}\n\nfunction latinToCyrill(text) {\n for (let i = 0; i < arren.length; i++) {\n var reg = new RegExp(arren[i], \"g\");\n text = text.replace(reg, arrru[i]);\n }\n return text;\n}\n\nfunction getArray(str) {\n let r = [];\n\n if(Array.isArray(str)) r = str;\n else if(str && typeof str === \"string\" ) r = str.split(',');\n\n return r;\n}\n\nexport function mapFilterFromFilterApi(a) {\n a = camelKeys(a);\n\n let keywordsList = getWordsArray(a.keywords, a.keywordsList);\n let excludeKeywordsList = getWordsArray(a.excludeKeywords, a.excludeKeywordsList);\n\n let stringTreeParce = (vl) => {\n if (!vl) return;\n let itms = vl.split(',').map(a => {\n let keyParents = a.split('|');\n let key = keyParents && keyParents.length > 0 && keyParents[0];\n let parents = keyParents && keyParents.length > 1 && keyParents[1] && keyParents[1].split(';') || null;\n\n return {key, parents};\n });\n\n return itms;\n };\n\n let organizerInfo;\n if (a.organizerInn || a.organizerName) {\n organizerInfo = [{innKpp: a.organizerInn, name: a.organizerName}];\n }\n\n let customerInfo;\n if (a.customerInn || a.customerName) {\n customerInfo = [{innKpp: a.customerInn, name: a.customerName}];\n }\n\n let universalRegion = null;\n let deliveryRegion = null;\n\n let coreRegion = stringTreeParce(a.universalRegion || a.deliveryRegion || a.region || null);\n if (coreRegion) coreRegion = coreRegion.map(x => {\n if (x.key.length <= 2)\n return {key: JSON.stringify({key: x.key, level: 1})};\n\n if (x.parents && x.parents.some(aa => aa.length > 2))\n {\n let parents = [];\n let level = 3;\n x.parents.forEach(function(p){\n parents.push(JSON.stringify({key: p, level: --level}));\n });\n return {key: JSON.stringify({key: x.key, level: 3}), level: 3, parents: parents};\n }\n return {key: JSON.stringify({key: x.key, level: 2})};\n });\n\n if (a.salesChannels[0] === 3){\n deliveryRegion = coreRegion;\n }\n else {\n universalRegion = coreRegion;\n deliveryRegion = stringTreeParce(a.deliveryRegion);\n }\n\n let nextFilter = {\n id: a.id,\n name: a.name,\n total: a.total,\n keywords: keywordsList,\n excludeKeywords: excludeKeywordsList,\n datePublishedFrom: getLocalDate(a.datePublishedFrom),\n datePublishedTo: getLocalDate(a.datePublishedTo),\n minPrice: a.minPrice,\n maxPrice: a.maxPrice,\n minContractGuarantee: a.minContractGuarantee,\n maxContractGuarantee: a.maxContractGuarantee,\n minApplicationGuarantee: a.minApplicationGuarantee,\n maxApplicationGuarantee: a.maxApplicationGuarantee,\n documentSearchEnabled: a.documentSearchEnabled,\n organizer: a.organizerName && [a.organizerName], //!!!!\n organizationsTags: a.organizationsTags,\n organizationLevels: getArray(a.organizationLevels),//a.OrganizationLevels && a.OrganizationLevels, \"Fz44,Fz223\" +\n currencyCode: a.currencyCode || null, // \"-\" поумолчанию\n period: a.period || 4, //4 - все, 2 - за день, 3 - за неделю\n deliveryRegion: deliveryRegion,\n region: stringTreeParce(a.region),\n universalRegion: universalRegion,\n state: a.state,\n hasPrepayment: a.hasPrepayment,\n hasApplications: a.hasApplications,\n okpd2: stringTreeParce(a.okpd2),\n sectionIds: getArray(a.sectionIds),//+\n combinedTradeRegistrationNumber: null,\n color: { backgroundColor: a.colorNumber },\n marketPlaceIds: getArray(a.marketPlaceIds), //+\n purchaseMethods: getArray(a.purchaseMethods),//+\n applicationEndDateFrom: getLocalDate(a.applicationEndDateFrom),\n applicationEndDateTo: getLocalDate(a.applicationEndDateTo),\n isSmallAndAverageBusiness: a.isSmallAndAverageBusiness,\n isAvailableApplicationsWithoutSignature: a.isAvailableApplicationsWithoutSignature,\n maxOrdersCount: a.maxOrdersCount,\n publicationDatePeriod: a.publicationDatePeriod,\n organizerInfo,\n customerInfo\n };\n\n return nextFilter;\n}\n\nimport {search, getCounters} from '@/api/order';\n// первый запрос со страницы мониторинга, его занчения попадают в cache http запросов\n// для ускорения работы страницы стоит вызвать его как можно раньше, пусть себе фигачит паралели пока гругится основная страница\nexport async function firstSearch({state, saveToHistory = false} = {}) {\n let filter = await getFilterFromUrl();\n if (filter && filter.documentSearchEnabled == null) filter.documentSearchEnabled = true;\n if (filter) {\n filter.state = state;\n filter.saveToHistory = saveToHistory;\n }\n\n const pageSettings = { page_size: 20, page_index: 1, sorting_field: \"DatePublished\", sorting_direction: \"Desc\" };\n let response = camelKeys(await search(filter, pageSettings));\n\n let items = response.isSuccess && response.result.tenders || [];\n let params = items.map((tndr) => {\n let salesChannel = tndr.salesChannel;\n let key = tndr.id;\n\n return {id: key, salesChannel};\n });\n\n let counters = await getCounters(params);\n\n return {\n filter,\n items,\n counters\n }\n}\n","import Vue from 'vue'\n\nexport default () => {\n window.eventBus = new Vue();\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.style.modalAstral,on:{\"mousedown\":_vm.clickOutSide}},[_c('div',{class:_vm.containerClassList},[_c('span',{class:_vm.style.modalAstralClose,on:{\"click\":function($event){return _vm.$emit('close')}}},[_vm._v(\"×\")]),_c('div',{class:_vm.style.modalAstralHeader},[_c('h3',[_vm._t(\"header\")],2)]),_c('div',{class:_vm.style.modalAstralHeaderSmall},[_vm._t(\"headerSmall\")],2),_c('div',{class:_vm.style.modalAstralBody},[_vm._t(\"default\")],2),_c('div',{class:_vm.style.modalAstralFooter},[_vm._t(\"footer\")],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Modal.vue?vue&type=template&id=517d5058&\"\nimport script from \"./Modal.vue?vue&type=script&lang=js&\"\nexport * from \"./Modal.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{class:_vm.styleList,attrs:{\"type\":_vm.type},on:{\"click\":function($event){return _vm.$emit('click')}}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Button.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Button.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Button.vue?vue&type=template&id=af3f9edc&\"\nimport script from \"./Button.vue?vue&type=script&lang=js&\"\nexport * from \"./Button.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modalAstral\":\"modal-astral-eca\",\"modalAstralContainer\":\"modal-astral__container-0f1\",\"modalAstralContainerSm\":\"modal-astral__container_sm-e06\",\"modalAstralContainerMid\":\"modal-astral__container_mid-838\",\"modalAstralContainerLg\":\"modal-astral__container_lg-ef7\",\"modalAstralHeader\":\"modal-astral__header-4ff\",\"modalAstralHeaderSmall\":\"modal-astral__header-small-c4b\",\"modalAstralBody\":\"modal-astral__body-ac5\",\"modalAstralFooter\":\"modal-astral__footer-a22\",\"modalAstralClose\":\"modal-astral__close-604\"};","import Vue from 'vue'\nimport config from '@/pages.common'\n\nnew Vue({\n ...config,\n components: { 'Order': () => import ('@/components/Order') },\n render: h => h('Order'),\n}).$mount('#AppOrder');\n","//адрес токена авторизации в cookie\nexport const COOKIE_AUTH_TOKEN = process.env.VUE_APP_AUTH_TOKEN;\n\n//api\nexport const API_CHECK_LIST = process.env.VUE_APP_CHECK_LIST_HOST;\nexport const API_TENDER = process.env.VUE_APP_TENDER_HOST;\nexport const API_ORDER = process.env.VUE_APP_ORDER_HOST;\nexport const API_IMPORT = process.env.VUE_APP_API_IMPORT;\n\n//pages\nexport const PAGE_LOGIN = process.env.VUE_APP_LOGIN_URL;\nexport const PAGE_REGISTER = process.env.VUE_APP_REGISTER_URL;\nexport const PAGE_TARIFFS = process.env.VUE_APP_TARIFFS_URL;\nexport const PAGE_ORDER = process.env.VUE_APP_ORDER_URL;\nexport const PAGE_ORDER_LIST = process.env.VUE_APP_ORDER_LIST_URL;\nexport const PAGE_MONITORING = process.env.VUE_APP_PAGE_MONITORING;\nexport const PAGE_SEARCH = process.env.VUE_APP_SEARCH_PAGE;\nexport const PAGE_GOTO_TENDER = process.env.VUE_APP_GOTO_TENDER_URL;\nexport const PAGE_TENDER = process.env.VUE_APP_TENDER_URL;\nexport const ROOT_PAGE = process.env.VUE_APP_ROOT_PAGE;\n\n//тестовый токен авторизации, существует только если проект собирается в режиме отладки\nexport const DEBUG = process.env.NODE_ENV == 'development';\nexport const DEV_AUTH_TOKEN = process.env.VUE_APP_DEV_TOKEN;\n\n//??\nexport const FORMS_COOKIE = process.env.VUE_APP_FORMS_COOKIE;\nexport const USE_CREDENTIALS = process.env.VUE_APP_USE_CREDENTIALS;\n\n//кол-во отображаемых при поиске элементов на странице мониторинга\nexport const MONITORING_SEARCH_PAGE_COUNT_LIMIT = process.env.VUE_APP_MONITORING_SEARCH_PAGE_COUNT_LIMIT;\n\n// префикс урлов страниц с деталями тендера, плана, субподряда и пр.\nexport const TENDER_DETAILS_URI_PREFIX = process.env.VUE_APP_TENDER_DETAILS_URI_PREFIX;\n\nexport const OPEN_MONITORING_SEARCH_URL_PATH_ENDING = JSON.parse(process.env.VUE_APP_OPEN_MONITORING_SEARCH_URL_PATH_ENDING);\n\n//astral\nexport const IS_ASTRAL = process.env.VUE_APP_IS_ASTRAL;\n","import Vue from 'vue'\nimport config from '@/pages.common'\nimport Meta from 'vue-meta'\n\nimport {firstSearch} from '@/components/Monitoring/Monitoring.common';\nsetTimeout(() => firstSearch({state: 1}), 0);\n\nVue.use(Meta);\n\nnew Vue({\n ...config,\n components: { 'MonitoringOpen': () => import ('@/components/MonitoringOpen') },\n render: h => h('MonitoringOpen')\n}).$mount('#MonitoringOpen');\n","import { httpGet, httpPost, urlConcat } from '@/utils/http'\nimport {getArrayFromString, treeToString, isNullFalse, convertOrganizationLevels, parseKey} from \"@/utils/converter\";\nimport { concat, concatEnding, concatTitle } from \"@/utils/str\";\nimport {camelKeys, lowerKeys, toArray} from \"@/utils/obj\";\nimport {authToken} from '@/store';\nimport { API_ORDER, API_TENDER, USE_CREDENTIALS} from '@/config'\n\nexport async function setOrderIsViewed(id) {\n return await httpPost(urlConcat(API_ORDER, '/api/order/SetOrderIsViewed'), {\n OrderId: id,\n Token : authToken()\n });\n}\n\nexport async function getFilters() {\n return await httpPost(urlConcat(API_ORDER, '/api/order/GetFilters'), {\n Token: authToken()\n });\n}\n\nexport async function cancelExpiredOrders() {\n return await httpPost(urlConcat(API_ORDER, '/api/order/CancelExpiredOrders'), {\n Token: authToken()\n });\n}\n\nexport async function getTendersByTags(status, tagIds, isFirstLoad, isLoadFromTr, lastVisibleOrderId, filterType) {\n return await httpPost(urlConcat(API_ORDER, '/api/order/GetTendersByTags'), {\n Status: status,\n TagIds: tagIds,\n IsFirstLoad: isFirstLoad,\n IsLoadFromTr: isLoadFromTr,\n LastVisibleOrderID: lastVisibleOrderId,\n FilterType: filterType,\n Token: authToken()\n });\n}\n\nexport async function getTender(id) {\n let data = await httpPost(urlConcat(API_ORDER, '/api/order/GetTender'), {\n TenderId: id,\n Token: authToken()\n });\n\n return data;\n}\n\nexport async function getTenderAnalytics(id) {\n return await httpPost(urlConcat(API_ORDER, '/api/order/GetTenderAnalytics'), {\n TenderId: id,\n Token: authToken()\n });\n}\n\nfunction snippetCodeToName(k, sc) {\n let name = k;\n if (k === 'tradename') name = sc === 2 ? 'Наименование плана' : 'Наименование тендера';\n else if (k === 'itemsitemname' || k === 'items.itemName') name = sc === 2 ? 'Закупаемая продукция' : 'Позиция лота';\n else if (k === 'lotname') name = sc === 2 ? 'Наименование позиции плана' : 'Наименование лота';\n else if (k === 'kladrdeliveryregionname') name = 'В адресе поставки';\n else if (k === 'kladrregionname') name = 'В адресе заказчика';\n else if (k === 'itemsitemokpd2name') name = 'Код ОКПД2';\n\n return name;\n}\n\nexport function mapSnippetsFromTender(tender) {\n if (!tender) return [];\n\n if (Array.isArray(tender))\n if (tender.length > 0) tender = tender[0];\n else return [];\n\n tender = lowerKeys(tender);\n let highlight = tender.highlight;\n let contents = tender.contents;\n let itemsHighlights = tender.itemshighlights;\n let tenderItems = tender.tenderitems;\n let foundInContents = tender.foundincontents;\n let salesChannel = tender.saleschannel;\n\n let nextHighlight = [];\n\n if (highlight) {\n let keys = Object.keys(highlight);\n keys.forEach(k => {\n let vls = highlight[k];\n if (vls && vls.length > 0) {\n vls.forEach(vl => {\n let name = snippetCodeToName(k, salesChannel);\n nextHighlight.push({name, text: vl, key: k});\n })\n }\n });\n }\n\n if (itemsHighlights && itemsHighlights.length > 0) {\n itemsHighlights.forEach(item => {\n let index = item.index;\n let hglt = item.highlight;\n if (hglt) {\n let keys = Object.keys(hglt);\n\n keys.forEach(k => {\n let name = snippetCodeToName(k, salesChannel);\n if (k === 'itemsitemokpd2name') {\n let number = null;\n if (index >= 0) number = `${index + 1}`;\n name = concat(' ', ['В коде ОКПД2', concatTitle(salesChannel === 2 ? 'объекта закупки ' : 'позиции лота ', number)]);\n }\n else if (k === 'itemsitemname') {\n let nameEnding = `${index + 1}`;\n name = concatEnding(name, concatTitle(' ', nameEnding));\n }\n\n let vls = hglt[k];\n if (vls && vls.length > 0) {\n vls.forEach(vl => {\n nextHighlight.push({name, text: vl, key: k});\n })\n }\n })\n }\n })\n }\n\n //подсказки по документам должны идти последними\n if (contents && contents.length > 0) {\n contents.forEach(content => {\n if (content) {\n let source = content.source;\n\n let name = source.name;\n let url = source.url;\n let text = null;\n\n //FoundInContents\n if (content && content.highlight && content.highlight.contents && content.highlight.contents.length > 0) {\n text = content.highlight.contents;\n\n nextHighlight.push({name: 'Документ', text, linkText: name, link: url});\n } else {\n if (foundInContents) {\n if (tender.state === 3)\n text = \"Документы тендера. В связи с тем, что тендер является архивным, отсутствует возможность отображения найденного совпадения. Скачайте документы для более подробного ознакомления.\";\n else\n text = \"Документы тендера. Отсутствует возможность отобразить найденные совпадения. Скачайте документы для более подробного ознакомления.\";\n\n nextHighlight.push({name: 'Документ', text, linkText: name, link: url});\n }\n }\n }\n });\n }\n\n return nextHighlight;\n}\n\nexport async function getSnippets({id, keywordsList, tagId}) {\n if (!(keywordsList && keywordsList.length > 0 || tagId) || !id) return null;\n\n let url = urlConcat(API_ORDER, '/api/order/Search');\n\n let body = {\n \"filter_settings\": {\n \"keywords_list\": keywordsList,\n \"id\": id,\n \"tag_id\": tagId,\n \"is_doc_search\": true\n },\n \"securityToken\": authToken()\n };\n\n let data = await httpPost(url, body);\n if (data && data.Result && data.Result.Tenders && data.Result.Tenders.length > 0) {\n let highlight = mapSnippetsFromTender(data.Result.Tenders);\n return highlight;\n }\n\n return null;\n}\n\nexport async function setOrderInWork(id) {\n await httpPost(urlConcat(API_ORDER, \"/api/order/SetOrderInWork\"), {\n OrderId: id,\n Token: authToken()\n });\n}\n\nexport async function setOrderCancelled(id) {\n await httpPost(urlConcat(API_ORDER, \"/api/order/SetOrderCancelled\"), {\n OrderId: id,\n Token: authToken()\n });\n}\n\nexport async function setOrderCompleted(id) {\n await httpPost(urlConcat(API_ORDER, \"/api/order/SetOrderCompleted\"), {\n OrderId: id,\n Token: authToken()\n });\n}\n\nexport async function setOrderDeleted(id, reason) {\n await httpPost(urlConcat(API_ORDER, \"/api/order/SetOrderCancelled\"), {\n OrderId: id,\n Reason: reason,\n Token: authToken()\n });\n}\n\nexport async function recoveryToWork(id) {\n await httpPost(urlConcat(API_ORDER, \"/api/order/RecoveryToWork\"), {\n OrderId: id,\n Token: authToken()\n });\n}\n\nexport async function getOrderByTenderId(tenderId, salesChannel) {\n return await httpPost(urlConcat(API_ORDER, '/api/order/GetOrderByTenderId'), {\n TenderId: tenderId,\n SalesChannel: salesChannel,\n Token: authToken()\n });\n}\n\nexport async function createManualOrder(tenderId, salesChannel) {\n return await httpPost(urlConcat(API_ORDER, '/api/order/CreateManualOrder'), {\n TenderId: tenderId,\n SalesChannel: salesChannel,\n Token: authToken()\n });\n}\n\nexport async function getEtpLink(marketPlaceId, organizationLevel, purchaseMethod, registrationNumber) {\n let data = await httpPost(urlConcat(API_ORDER, \"/api/order/GetEtpHelpLink\"), {\n MarketPlaceId: marketPlaceId,\n TenderOrganizationLevel: organizationLevel,\n PurchaseMethod: purchaseMethod,\n Number: registrationNumber,\n Token: authToken()\n });\n\n return data;\n}\n\nexport async function setEtpLinkViewMode(etpLinkId) {\n await httpPost(urlConcat(API_ORDER, \"/api/order/setEtpLinkViewMode\"), {\n Id: etpLinkId,\n Token: authToken()\n });\n}\n\nexport async function setFilter(filter) {\n let color = filter && filter.color && filter.color.backgroundColor;\n let maxOrdersCount = filter && filter.maxOrdersCount;\n let filterData = {...filter, colorNumber: color, maxOrdersCount: maxOrdersCount, securityToken : authToken()};\n if (!filterData.name) filterData.name = 'Новый мониторинг';\n\n return httpPost(urlConcat(API_ORDER, \"/api/order/SetFilter\"), filterData);\n}\n\nexport async function removeFilter(tagId) {\n await httpPost(urlConcat(API_ORDER, \"/api/order/RemoveFilter\"), {\n Id: tagId,\n SecurityToken: authToken()\n });\n}\n\nexport async function getCounters(params) {\n if (!params || params.length <= 0) return null;\n\n let url = urlConcat(API_ORDER, '/api/order/GetCounters2');\n let data = await httpPost(url, params);\n\n data = camelKeys(data);\n return data;\n}\n\nexport async function search(filter, pageSettings, salesChannel) {\n if (!filter) return [];\n if (!filter.currencyCode) filter.currencyCode = null;\n\n filter = {...filter};\n\n pageSettings = {\n sorting_field: 'DatePublished',\n sorting_direction: 'Desc',\n page_size: 20,\n page_index: 1,\n ...pageSettings,\n };\n\n const isSubcontract = salesChannel === 3;\n\n let regions = isSubcontract ? filter.deliveryRegion : filter.universalRegion;\n let regionsKeysObjects = regions && regions.map(parseKey);\n let prepareRegions = regionsKeysObjects && treeToString(regionsKeysObjects.filter(a => a.level !== 3)) || null;\n\n\n let universalRegion = null;\n let deliveryRegion = null;\n if (isSubcontract) deliveryRegion = prepareRegions;\n else universalRegion = prepareRegions;\n\n let deliveryCity = regionsKeysObjects && treeToString(regionsKeysObjects.filter(a => a.level === 3)) || null;\n\n\n let organizerInfo = filter.organizerInfo;\n if (organizerInfo && organizerInfo.length <= 0) organizerInfo = null;\n if (organizerInfo && organizerInfo.length > 0) organizerInfo = organizerInfo.map(a => a.innKpp).find(a => a);\n\n let customerInfo = filter.customerInfo;\n if (customerInfo && customerInfo.length <= 0) customerInfo = null;\n if (customerInfo && customerInfo.length > 0) customerInfo = customerInfo.map(a => a.innKpp).find(a => a);\n\n\n let organizationsTags = filter.organizationsTags;\n if (organizationsTags && organizationsTags.length > 0) {\n organizationsTags = organizationsTags.map(aa => {\n let nextAa = {};\n\n if (aa.id) nextAa.id = aa.id.trim();\n if (aa.inn) nextAa.inn = aa.inn.trim();\n if (aa.innKpp) nextAa.innKpp = aa.innKpp.trim().replace(/\\s+/g, '_');\n if (aa.kpp) nextAa.kpp = aa.kpp.trim();\n if (aa.name) nextAa.name = aa.name.trim();\n\n return nextAa;\n });\n }\n\n let body = {\n filter_settings: {\n //id: filter.id,\n isPersonal: true,\n state: filter.state,\n keywords_list: filter.keywords,\n exclude_keywords_list: filter.excludeKeywords,\n universal_region: universalRegion,\n delivery_city: deliveryCity,\n delivery_region: deliveryRegion,\n okpd2: treeToString(filter.okpd2),\n is_doc_search: filter.documentSearchEnabled,\n purchase_methods: getArrayFromString(filter.purchaseMethods),\n min_price: filter.minPrice,\n max_price: filter.maxPrice,\n currency_code: filter.currencyCode,\n min_application_guarantee: filter.minApplicationGuarantee,\n max_application_guarantee: filter.maxApplicationGuarantee,\n min_contract_guarantee: filter.minContractGuarantee,\n max_contract_guarantee: filter.maxContractGuarantee,\n prepayment: filter.hasPrepayment,\n has_applications: filter.hasApplications,\n organization_levels: getArrayFromString(filter.organizationLevels),\n isApplicationWithoutSignatureAllowed: isNullFalse(filter.isAvailableApplicationsWithoutSignature),\n section_ids: filter.sectionIds,\n //customer_info: null,\n //organizer_info: null,\n organizationsTags,\n is_msp: filter.isSmallAndAverageBusiness,\n publish_date_from: filter.datePublishedFrom,\n publish_date_to: filter.datePublishedTo,\n aplication_end_date_from: filter.applicationEndDateFrom,\n aplication_end_date_to: filter.applicationEndDateTo,\n //trade_number: null, не надо\n //tender_id: null, не надо\n //trade_registration_number: null, не надо\n combinedTradeRegistrationNumber: filter.combinedTradeRegistrationNumber,\n sales_channels: toArray(filter.salesChannel),\n publication_date_period: filter.publicationDatePeriod,\n organizer_info: organizerInfo,\n customer_info: customerInfo,\n region: treeToString(filter.region),\n },\n page_settings: pageSettings,\n securityToken: authToken(),\n saveToHistory: filter.saveToHistory,\n };\n\n return await httpPost(urlConcat(API_ORDER, '/api/order/Search'), body, {withCredentials: USE_CREDENTIALS});\n}\n\nexport async function getFiltersWithStats(salesChannel) {\n let token = authToken();\n if (token){\n let data = await httpGet(urlConcat(API_ORDER, '/api/order/GetUserSearchInfo'),\n {\n param: {\n salesChannels: toArray(salesChannel),\n securityToken: token\n },\n }\n );\n\n let result = {\n filters: [],\n searchHistory: []\n };\n\n if (data && data.IsSuccess){\n data.Filters.forEach(function (item) {\n result.filters.push({...item.Filter, total: item.TendersCount});\n });\n\n data.SearchItems.forEach(function (item) {\n result.searchHistory.push({id: item.Id, name: item.Keywords, keywords: [item.Keywords]});\n });\n }\n\n return result;\n }\n\n return [];\n}\n\nexport async function getSearchHistory(salesChannel) {\n let token = authToken();\n if (token){\n let data = await httpGet(urlConcat(API_ORDER, '/api/order/GetSearchHistory'),\n {\n param: {\n salesChannels: toArray(salesChannel),\n securityToken: token\n },\n }\n );\n\n data = camelKeys(data);\n return data;\n }\n\n return [];\n}\n\nexport async function getColorsForFilters() {\n let data = await httpGet(urlConcat(API_ORDER, \"/api/order/GetColorsForFilters\"), {\n SecurityToken: authToken()\n });\n\n return data;\n}\n\nexport async function getDayAverageTendersCountAndSumForFilter(filterId) {\n let data = await httpGet(urlConcat(API_ORDER, \"/api/order/GetDayAverageTendersCountAndSumForFilter\"), {\n Id: filterId,\n SecurityToken: authToken()\n });\n\n return data;\n}\n\nexport async function getOkpd2Json() {\n let data = await httpGet(urlConcat(API_ORDER, \"/api/order/GetOkpd2Json\"));\n return data;\n}\n\nexport async function logView(tenderId) {\n let params = {tenderId: tenderId, securityToken: authToken()};\n let data = await httpPost(urlConcat(API_ORDER, \"/api/order/LogView\"), params);\n return data;\n}\n\nexport async function logDownload(id, salesChannel) {\n let params = {id: id, salesChannel: salesChannel, securityToken: authToken()};\n let data = await httpPost(urlConcat(API_ORDER, \"/api/order/LogDownloadFile2\"), params);\n return data;\n}\n\nexport async function getTagsByOrderId(orderId) {\n let body = {OrderId: orderId, Token: authToken()};\n let data = await httpPost(urlConcat(API_ORDER, \"/api/order/GetTagsByOrderId\"), body);\n return data;\n}\n\nexport default {\n setOrderIsViewed,\n getFilters,\n cancelExpiredOrders,\n getTendersByTags,\n getTender,\n getTenderAnalytics,\n setOrderInWork,\n setOrderCancelled,\n setOrderCompleted,\n setOrderDeleted,\n recoveryToWork,\n getOrderByTenderId,\n createManualOrder,\n getEtpLink,\n setEtpLinkViewMode,\n setFilter,\n removeFilter,\n search,\n getFiltersWithStats,\n getColorsForFilters,\n getDayAverageTendersCountAndSumForFilter,\n getOkpd2Json,\n logView,\n logDownload,\n getSnippets,\n getTagsByOrderId,\n getCounters\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"formGroupControls\":\"form__group-controls-a8c\",\"formBlocked\":\"form_blocked-c7f\",\"formGroupControlsHorizontal\":\"form__group-controls_horizontal-777\",\"formGroupControlsVertical\":\"form__group-controls_vertical-210\",\"formControl\":\"form__control-f82\",\"formGroupError\":\"form__group-error-87c\",\"error\":\"error-2e5\"};","export function toMoney(nStr, range = 2)\n{\n if (nStr !== 0 && !nStr) return;\n\n let type = typeof nStr;\n if (type === \"string\")\n nStr = nStr.replace(',', '.');\n\n nStr = parseFloat(nStr).toFixed(range);\n\n nStr += '';\n let x = nStr.split('.');\n let x1 = x[0];\n let x2 = x.length > 1 ? ',' + x[1] : '';\n const rgx = /(\\d+)(\\d{3})/;\n while (rgx.test(x1)) {\n x1 = x1.replace(rgx, '$1' + '\\u00A0' + '$2');\n }\n return x1 + x2;\n}\n\nexport function dhms(t){\n let cd = 24 * 60 * 60 * 1000,\n ch = 60 * 60 * 1000,\n cm = 60 * 1000,\n cs = 1000,\n\n d = Math.floor(t / cd),\n h = Math.floor( (t - d * cd) / ch),\n m = Math.floor( (t - d * cd - h * ch) / cm),\n s = Math.round( (t - d * cd - h * ch - m * cm) / cs),\n\n pad = function(n){ return n < 10 ? '0' + n : n; };\n\n if( s === 60 ){\n m++;\n s = 0;\n }\n if( m === 60 ){\n h++;\n m = 0;\n }\n if( h === 24 ){\n d++;\n h = 0;\n }\n\n if (d <= 0)\n return `${pad(h)}:${pad(m)}:${pad(s)}`;\n\n let wordDay = getCorrect(d, 'день', 'дня', 'дней');\n return `${d} ${wordDay} ${pad(h)}:${pad(m)}:${pad(s)}`;\n}\n\nexport function getCorrect(number, ending1, ending2, ending5)\n{\n if (!ending1) ending1 = '';\n if (!ending2) ending2 = '';\n if (!ending5) ending5 = '';\n\n if (!number) number = 0;\n\n if (number === 0)\n return ending5;\n\n number = number % 100;\n if (number >= 11 && number <= 19)\n return ending5;\n\n let i = number % 10;\n switch (i)\n {\n case 1:\n return ending1;\n case 2:\n case 3:\n case 4:\n return ending2;\n default:\n return ending5;\n }\n}\n\nexport function to00(number) {\n number = parseInt(number, 10);\n if (number <= 9)\n return `0${number}`;\n\n if (number === 0)\n return `0${number}`;\n\n if (!number)\n return '';\n\n return number.toString();\n}\n\n\nexport function getOrganizationLevelText(value) {\n switch (value) {\n case 2: return '223-ФЗ';\n case 3: return 'Коммерческие';\n case 4: return '44-ФЗ';\n case 5: return '615-ППРФ';\n case 6: return 'Закупки малого объема';\n }\n\n return null;\n}\n\nexport function parseDate(str) {\n let ms = Date.parse(str);\n\n return !isNaN(ms) && new Date(ms) || null;\n}\n\nexport function addTimeZone(date) {\n let dt = date;\n\n if (!dt) return null;\n\n if (dt.indexOf('T') !== -1)\n if (dt.indexOf('Z') === -1 && dt.indexOf('+') === -1)\n dt = dt + 'Z';\n\n return dt;\n}\n\nexport function isNullFalse(val) {\n if(val == null){\n return false;\n }\n return val;\n}\n\nexport function convertOrganizationLevels(levels) {\n if(levels && levels.length > 0)\n {\n let result = [];\n\n levels.forEach (function (item) {\n switch (item) {\n case 'Fz223':\n result.push('223-fz');\n break;\n case 'Commercial':\n result.push('Commercial');\n break;\n case 'Fz44':\n result.push('44-fz');\n break;\n case 'Pprf615':\n result.push('615-pp');\n break;\n default:\n result.push(item);\n }\n });\n\n return result;\n }\n else\n {\n return levels;\n }\n}\n\nexport function getArrayFromString(value, separator = \",\") {\n if (value === null || value === undefined) return null;\n if (typeof value === 'object' && Array.isArray(value)) return value;\n\n return value.split(separator);\n}\n\nexport function getIntArrayFromString(value, separator = \",\") {\n if (value === null || value === undefined) return null;\n if (typeof value === 'object' && Array.isArray(value)) return value;\n\n let strings = value.split(separator);\n let result = [];\n\n strings.forEach(function (item) {\n result.push(item * 1);\n });\n\n return result;\n}\n\nexport function stringFromArray(value, separator = \",\"){\n if (value === null || value === undefined) return null;\n if (typeof value !== 'object' && !Array.isArray(value)) return value;\n\n if (typeof value === 'object' && Array.isArray(value)) {\n value = value.map(a => {\n if (typeof a === 'object') return a.key;\n else return a;\n });\n }\n\n return value.join(separator);\n}\n\nexport function parseKey(a) {\n if (a && a.key && a.key.indexOf('{') >= 0) {\n return JSON.parse(a.key);\n } else {\n return {key: a.key};\n }\n}\n\nexport function tryParse(str) {\n if (str && str.indexOf('{') >= 0) {\n return JSON.parse(str).key;\n } else {\n return str;\n }\n}\n\nexport function treeToString (vl) {\n if (!vl || vl.length <= 0) return null;\n let str = vl.map(a => `${parseKey(a).key}|${a.parents && a.parents.map(tryParse).join(';') || ''}`).join(',');\n return str;\n}\n\nexport function stringTreeParce (vl) {\n if (!vl) return;\n let itms = vl.split(',').map(a => {\n let keyParents = a.split('|');\n let key = keyParents && keyParents.length > 0 && keyParents[0];\n let parents = keyParents && keyParents.length > 1 && keyParents[1] && keyParents[1].split(';') || null;\n\n return {key, parents};\n });\n\n return itms;\n}\n\nexport function pad(val, len) {\n val = String(val);\n len = len || 2;\n while (val.length < len) {\n val = '0' + val;\n }\n return val;\n}\n\nexport function dateFormat(date) {\n if (!(date instanceof Date)) {\n return null;\n }\n\n const d = pad(date.getDate()),\n m = pad(date.getMonth() + 1),\n y = pad(date.getFullYear(), 4);\n\n return `${d}.${m}.${y}`;\n}\n\nexport function currencyCodeToText(code) {\n if (code == 643) return \"₽\";\n else if (code == 36) return \"AUD\";\n else if (code == 986) return \"BRL\";\n else if (code == 933) return \"BYN\";\n else if (code == 124) return \"CAD\";\n else if (code == 756) return \"CHF\";\n else if (code == 156) return \"CNY\";\n else if (code == 978) return \"EUR\";\n else if (code == 826) return \"GBP\";\n else if (code == 348) return \"HUF\";\n else if (code == 356) return \"INR\";\n else if (code == 392) return \"JPY\";\n else if (code == 398) return \"KZT\";\n else if (code == 752) return \"SEK\";\n else if (code == 702) return \"SGD\";\n else if (code == 980) return \"UAH\";\n else if (code == 840) return \"USD\";\n else if (code == 860) return \"UZS\";\n else if (code == 710) return \"ZAR\";\n\n return null;\n}\n\n\nexport function toBoolean(v, posibleNull = true) {\n if (v === true) return true;\n if (v === false) return false;\n if (v === 0) return false;\n if (v === 1) return true;\n\n if (posibleNull && v === null) return null;\n if (posibleNull && v === undefined) return null;\n\n if (v === null || v === undefined) return false;\n\n if (typeof v === 'string') {\n if (posibleNull && v === '') return null;\n\n let txt = v.toLowerCase();\n\n if (txt === 'true') return true;\n if (txt === 'false') return false;\n\n if (txt === '1') return true;\n if (txt === '0') return false;\n\n if (txt === 'да') return true;\n if (txt === 'нет') return false;\n\n if (txt === 'yes') return true;\n if (txt === 'no') return false;\n\n if (txt === 'y') return true;\n if (txt === 'n') return false;\n\n if (posibleNull && txt === 'null') return null;\n if (posibleNull && txt === 'undefined') return null;\n }\n\n return !!v;\n}\n"],"sourceRoot":""}