32 lines
40 KiB
JavaScript
32 lines
40 KiB
JavaScript
"use strict";
|
||
/*
|
||
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
|
||
* This devtool is neither made for production nor for readable output files.
|
||
* It uses "eval()" calls to create a separate source file in the browser devtools.
|
||
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
||
* or disable the default devtool with "devtool: false".
|
||
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
||
*/
|
||
(self["webpackChunkcomplexes"] = self["webpackChunkcomplexes"] || []).push([["src_shared_utils_util_js"],{
|
||
|
||
/***/ "./src/app/store/fields.js":
|
||
/*!*********************************!*\
|
||
!*** ./src/app/store/fields.js ***!
|
||
\*********************************/
|
||
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useFieldsStore: function() { return /* binding */ useFieldsStore; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var pinia__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! pinia */ \"./node_modules/pinia/dist/pinia.mjs\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var _shared_api__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/shared/api */ \"./src/shared/api.js\");\n/* harmony import */ var vue_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-router */ \"./node_modules/vue-router/dist/vue-router.mjs\");\n\n\n\n\n\nconst useFieldsStore = (0,pinia__WEBPACK_IMPORTED_MODULE_3__.defineStore)(\"fields\", () => {\n const route = (0,vue_router__WEBPACK_IMPORTED_MODULE_4__.useRoute)();\n const decorations = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)([]);\n const paymentTypes = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)([]);\n const complexes_types = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)([]);\n const complex_suggestions = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)([]);\n const countries = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)([]);\n const metros = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)([]);\n const windowsPlacements = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)([]);\n const rf_regions = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)([]);\n const rayons = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)([]);\n const currentRegionInfo = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)({\n region_id: null,\n region_id_user: null,\n kladr: null,\n label: null\n });\n const regionsInfo = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)({\n regions: [],\n regions_list: {}\n });\n const complex_status = [];\n const builders = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)({\n list: [],\n options: []\n });\n const installmentPrograms = (0,vue__WEBPACK_IMPORTED_MODULE_1__.ref)([]);\n const fetchComplexStatuses = () => {\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getComplexStatus().then(response => {\n if (response.data) {\n complex_status.push(...response.data);\n }\n });\n };\n const refetchDecorationsList = () => {\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getDecorations().then(response => {\n decorations.splice(0);\n decorations.push(...response.data);\n });\n };\n const fetchInstallmentPrograms = async (houseId = null, complexId = null) => {\n try {\n installmentPrograms.value = [];\n let response;\n if (houseId) {\n response = await _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getInstallmentProgramsByHouseId(houseId);\n } else if (complexId) {\n response = await _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getInstallmentProgramsByComplexId(complexId);\n } else {\n response = await _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getInstallments();\n }\n if (response?.data) {\n installmentPrograms.value.push(...response.data);\n }\n } catch (e) {\n console.error('Ошибка загрузки программ рассрочек:', e);\n }\n };\n const fetchComplexSuggestions = isViewPage => _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getComplexSuggestions(isViewPage).then(response => {\n complex_suggestions.push(...response.data);\n });\n (0,vue__WEBPACK_IMPORTED_MODULE_1__.onMounted)(() => {\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getDecorations().then(response => {\n decorations.push(...response.data);\n });\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getPaymentTypes().then(response => {\n paymentTypes.push(...response.data);\n });\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getComplexTypes().then(response => {\n complexes_types.push(...response.data);\n });\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getCountry().then(response => {\n countries.push(...response.data.country);\n });\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getRFRegions().then(response => {\n const currentRegion = response.data.regions.find(region => region.code == response.data.region_id_user);\n if (currentRegion) {\n rayons.push(...currentRegion.rayons);\n }\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getMetro(response.data.region_id_user).then(metrosResponse => {\n metros.push(...metrosResponse.data);\n });\n currentRegionInfo.region_id = parseInt(response.data.region_id_user);\n currentRegionInfo.region_id_user = parseInt(response.data.region_id_user);\n regionsInfo.regions.push(...response.data.regions);\n regionsInfo.regions_list = response.data.regions_list;\n currentRegionInfo.kladr = regionsInfo.regions_list[currentRegionInfo.region_id].kladr;\n currentRegionInfo.label = regionsInfo.regions_list[currentRegionInfo.region_id].label;\n });\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getWindowsPlacements().then(response => {\n windowsPlacements.push(...response.data);\n });\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getBuilders().then(response => {\n builders.list = response.data.list;\n builders.options.push(...response.data.options);\n });\n fetchComplexSuggestions(!route.meta.isViewPage);\n fetchComplexStatuses();\n });\n const changeRegionInfoRegionId = payload => {\n currentRegionInfo.region_id = payload;\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getMetro(currentRegionInfo.region_id).then(response => {\n metros.splice(0);\n });\n };\n const metroListChanged = region_id => {\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getMetro(region_id).then(response => {\n metros.splice(0);\n metros.push(...response.data);\n });\n };\n (0,vue__WEBPACK_IMPORTED_MODULE_1__.watch)(() => route.meta.isViewPage, (newValue, prevValue) => {\n if (newValue !== prevValue) {\n fetchComplexSuggestions(!newValue);\n }\n }, {\n deep: true\n });\n return {\n decorations,\n paymentTypes,\n complexes_types,\n countries,\n rf_regions,\n rayons,\n metros,\n currentRegionInfo,\n regionsInfo,\n windowsPlacements,\n complex_suggestions,\n changeRegionInfoRegionId,\n metroListChanged,\n builders,\n complex_status,\n refetchDecorationsList,\n installmentPrograms,\n fetchInstallmentPrograms\n };\n});\n\n//# sourceURL=webpack://complexes/./src/app/store/fields.js?");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/shared/utils/util.js":
|
||
/*!**********************************!*\
|
||
!*** ./src/shared/utils/util.js ***!
|
||
\**********************************/
|
||
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ INITIAL_COMPLEX: function() { return /* binding */ INITIAL_COMPLEX; },\n/* harmony export */ adsStates: function() { return /* binding */ adsStates; },\n/* harmony export */ adsTargets: function() { return /* binding */ adsTargets; },\n/* harmony export */ avitoStateCheck: function() { return /* binding */ avitoStateCheck; },\n/* harmony export */ calculateInstallmentPrice: function() { return /* binding */ calculateInstallmentPrice; },\n/* harmony export */ cianStateCheck: function() { return /* binding */ cianStateCheck; },\n/* harmony export */ confirmpopupStyle: function() { return /* binding */ confirmpopupStyle; },\n/* harmony export */ containsNumber: function() { return /* binding */ containsNumber; },\n/* harmony export */ copyObject: function() { return /* binding */ copyObject; },\n/* harmony export */ domclickStateCheck: function() { return /* binding */ domclickStateCheck; },\n/* harmony export */ fixRoomVisible: function() { return /* binding */ fixRoomVisible; },\n/* harmony export */ formatDate: function() { return /* binding */ formatDate; },\n/* harmony export */ formatNumber: function() { return /* binding */ formatNumber; },\n/* harmony export */ generateAlphabetSequence: function() { return /* binding */ generateAlphabetSequence; },\n/* harmony export */ getConstraints: function() { return /* binding */ getConstraints; },\n/* harmony export */ getStatusText: function() { return /* binding */ getStatusText; },\n/* harmony export */ isActiveStatus: function() { return /* binding */ isActiveStatus; },\n/* harmony export */ isEmpty: function() { return /* binding */ isEmpty; },\n/* harmony export */ isErrorStatus: function() { return /* binding */ isErrorStatus; },\n/* harmony export */ isSendToAds: function() { return /* binding */ isSendToAds; },\n/* harmony export */ isWaitStatus: function() { return /* binding */ isWaitStatus; },\n/* harmony export */ join: function() { return /* binding */ join; },\n/* harmony export */ layout_futures: function() { return /* binding */ layout_futures; },\n/* harmony export */ multiSelectStyle: function() { return /* binding */ multiSelectStyle; },\n/* harmony export */ onlyStateCheck: function() { return /* binding */ onlyStateCheck; },\n/* harmony export */ photoToObjectUrl: function() { return /* binding */ photoToObjectUrl; },\n/* harmony export */ room_types: function() { return /* binding */ room_types; },\n/* harmony export */ room_types_which_has_rooms: function() { return /* binding */ room_types_which_has_rooms; },\n/* harmony export */ stateError: function() { return /* binding */ stateError; },\n/* harmony export */ stateWait: function() { return /* binding */ stateWait; },\n/* harmony export */ typeRooms: function() { return /* binding */ typeRooms; },\n/* harmony export */ yandexStateCheck: function() { return /* binding */ yandexStateCheck; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.url-search-params.delete.js */ \"./node_modules/core-js/modules/web.url-search-params.delete.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.url-search-params.has.js */ \"./node_modules/core-js/modules/web.url-search-params.has.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.url-search-params.size.js */ \"./node_modules/core-js/modules/web.url-search-params.size.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _app_store_fields__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/app/store/fields */ \"./src/app/store/fields.js\");\n\n\n\n\n\nfunction isEmpty(data) {\n if (typeof data === \"object\") {\n if (JSON.stringify(data) === \"{}\" || JSON.stringify(data) === \"[]\") {\n return true;\n } else if (!data) {\n return true;\n }\n return false;\n } else if (typeof data === \"string\") {\n if (!data.trim()) {\n return true;\n }\n return false;\n } else if (typeof data === \"undefined\") {\n return true;\n } else {\n return false;\n }\n}\nconst layout_futures = {\n none_of_the_above: \"Ничего из перечисленного\",\n studio: \"Студия\",\n european_layout: \"Европланировка\",\n available: \"Свободная\"\n};\nconst room_types = {\n apartment: 'Квартира',\n apartments: 'Апартаменты',\n parking_space: 'Машиноместо',\n office: 'Офис',\n storage_room: 'Кладовка',\n warehouse: 'Склад',\n retail_space: 'Торговое Помещение',\n commercial_space: 'Помещение свободного назначения',\n townhouse: 'Таунхаус',\n villa: 'Вилла',\n penthouse: 'Пентхаус',\n duplex: 'Дуплекс',\n cottage: 'Коттедж'\n};\nconst room_types_which_has_rooms = ['apartment', 'apartments', 'retail_space', 'commercial_space', 'townhouse', 'villa', 'penthouse', 'duplex', 'cottage'];\nconst calculateInstallmentPrice = (room, installment) => {\n const basePrice = parseFloat(room.installment_price || 0);\n const initialPayment = parseFloat(installment.initial_payment || 0) / 100 * basePrice;\n const remainingAmount = basePrice - initialPayment;\n const interestRate = parseFloat(installment.interest_rate || 0) / 100;\n const totalWithInterest = remainingAmount * (1 + interestRate);\n const total = basePrice + (interestRate > 0 ? totalWithInterest - remainingAmount : 0);\n\n // Убираем лишние нули после точки\n return parseFloat(total.toFixed(10));\n};\nlet roomids = [];\nconst fixRoomVisible = (room, filters) => {\n room.visible = true;\n const isMoreThenFive = filters.rooms.includes('5-more');\n const isSelectedStudio = filters.rooms.includes('studio');\n const isRoomCountSelected = filters.rooms.includes(String(room.rooms_count));\n const fieldsStore = (0,_app_store_fields__WEBPACK_IMPORTED_MODULE_4__.useFieldsStore)();\n if (filters.rooms.length) {\n if (filters.selectedTypes.some(type => room_types_which_has_rooms.includes(type))) {\n if (isSelectedStudio) {\n room.visible = room.layout_feature == 'studio' || isRoomCountSelected && room.layout_feature != 'studio' || isMoreThenFive && room.rooms_count >= 5;\n } else {\n room.visible = isRoomCountSelected && room.layout_feature != 'studio' || isMoreThenFive && room.rooms_count >= 5;\n }\n }\n }\n if (filters.onlyFree && room.complex_status_info.status_type !== 'available') {\n room.visible = false;\n }\n if (filters.price.min !== '') {\n if (!filters.useSquarePrice) {\n if (filters.price.min > room.total_amount) {\n room.visible = false;\n }\n } else {\n if (filters.price.min > room.total_amount / room.area) {\n room.visible = false;\n }\n }\n }\n if (filters.price.max !== '') {\n if (!filters.useSquarePrice) {\n if (filters.price.max < room.total_amount) {\n room.visible = false;\n }\n } else {\n if (filters.price.max < room.total_amount / room.area) {\n room.visible = false;\n }\n }\n }\n if (filters.square.min !== '' && filters.square.min > room.area) {\n room.visible = false;\n }\n if (filters.square.max !== '' && filters.square.max < room.area) {\n room.visible = false;\n }\n if (filters.squareKitchen.max !== '' && (!room.kitchen_area ? true : filters.squareKitchen.max < +room.kitchen_area)) {\n room.visible = false;\n }\n if (filters.squareKitchen.min !== '' && (!room.kitchen_area ? true : filters.squareKitchen.min > +room.kitchen_area)) {\n room.visible = false;\n }\n if (filters.selectedTypes.length && !filters.selectedTypes.includes(room.type)) {\n room.visible = false;\n }\n if (filters.floor.from !== '' && room.floor && parseInt(filters.floor.from) > room.floor) {\n room.visible = false;\n }\n if (filters.floor.to !== '' && room.floor && parseInt(filters.floor.to) < room.floor) {\n room.visible = false;\n }\n if (filters.selectedDecorations && filters.selectedDecorations.length && !filters.selectedDecorations.map(num => parseInt(num)).includes(room.decoration_id)) {\n room.visible = false;\n }\n if (filters.selectedWindowsPlacements && filters.selectedWindowsPlacements.length && !filters.selectedWindowsPlacements.map(num => parseInt(num)).includes(room.windows_placement_id)) {\n room.visible = false;\n }\n if (filters.number && room.number != filters.number) {\n room.visible = false;\n }\n\n // Фильтрация по способам оплаты\n if (filters.selectedPaymentTypes && filters.selectedPaymentTypes.length > 0) {\n let roomPaymentTypes = [];\n try {\n roomPaymentTypes = Array.isArray(room.payment_types) ? room.payment_types : JSON.parse(room.payment_types || '[]');\n } catch (e) {\n console.warn('Invalid payment_types JSON for room', room.id);\n roomPaymentTypes = [];\n }\n const hasPaymentMatch = filters.selectedPaymentTypes?.some(pt => roomPaymentTypes.includes(pt));\n if (!hasPaymentMatch) {\n room.visible = false;\n return;\n }\n\n // Installment-specific filters\n if (filters.selectedPaymentTypes.includes('INSTALLMENT')) {\n if (!fieldsStore.installmentPrograms?.length && !filters.selectedInstallments.length > 0 && !filters.customSelectedInstallments.length > 0) {\n room.visible = true;\n return;\n }\n const matchingInstallment = Array.isArray(room.installment_plans) && room.installment_plans.some(installment => {\n const basePrice = room.installment_price;\n const initialPaymentPercent = parseFloat(installment.initial_payment || 0);\n const actualInitialPayment = initialPaymentPercent / 100 * basePrice;\n\n // Проверка выбранных рассрочек\n if (filters.selectedInstallments?.length > 0 || filters.customSelectedInstallments.length > 0) {\n if (!filters.selectedInstallments.includes(installment.id) && !filters.customSelectedInstallments.includes(installment.id)) {\n return false;\n }\n }\n\n // Проверка суммы первоначального взноса\n if (filters.initialPayment !== '' && filters.initialPayment !== null) {\n const userInitialPayment = parseFloat(filters.initialPayment);\n if (room.installment_price <= 0 || actualInitialPayment > userInitialPayment) {\n return false;\n }\n }\n\n // Проверка срока (end_date)\n if (filters.paymentTerm !== '' && filters.paymentTerm !== null) {\n const maxPaymentTerm = parseFloat(filters.paymentTerm);\n const currentDate = new Date();\n const endDate = new Date(installment.house_installment_end_date);\n const monthsDiff = (endDate - currentDate) / (1000 * 60 * 60 * 24 * 30.44);\n if (isNaN(monthsDiff) || monthsDiff < maxPaymentTerm || monthsDiff < 0) {\n return false;\n }\n }\n\n // Проверка цены в рассрочку\n const installmentPrice = calculateInstallmentPrice(room, installment);\n if (filters.installmentPrice?.min !== '' && filters.installmentPrice?.min !== null) {\n const minPrice = parseFloat(filters.installmentPrice.min);\n if (room.installment_price < minPrice) {\n return false;\n }\n }\n if (filters.installmentPrice?.max !== '' && filters.installmentPrice?.max !== null) {\n const maxPrice = parseFloat(filters.installmentPrice.max);\n if (room.installment_price > maxPrice) {\n return false;\n }\n }\n return true;\n });\n if (!matchingInstallment) {\n room.visible = false;\n }\n }\n }\n\n //если выбрана просто площадка\n if (filters.adsTargets && filters.adsTargets.length && (!filters.adsStates || !filters.adsStates.length)) {\n //если у нас выбран домклик\n if (filters.adsTargets.map(num => parseInt(num)).includes(4) && !room.add_to_domclick_feed) {\n room.visible = false;\n }\n //если у нас выбран авито\n if (filters.adsTargets.map(num => parseInt(num)).includes(1) && !room.add_to_avito_feed) {\n room.visible = false;\n }\n //если у нас выбран циан\n if (filters.adsTargets.map(num => parseInt(num)).includes(2) && !room.add_to_cian_feed) {\n room.visible = false;\n }\n //если у нас выбран яндекс\n if (filters.adsTargets.map(num => parseInt(num)).includes(3) && !room.add_to_yandex_feed) {\n room.visible = false;\n }\n }\n //если выбран просто статус\n if (filters.adsStates && filters.adsStates.length && (!filters.adsTargets || !filters.adsTargets.length)) {\n onlyStateCheck(room, filters);\n }\n //если выбрана и площадка и статус\n if (filters.adsTargets && filters.adsTargets.length && filters.adsStates && filters.adsStates.length) {\n let visD = false;\n let visC = false;\n let visY = false;\n let visA = false;\n\n //если у нас выбран домклик\n if (filters.adsTargets.map(num => parseInt(num)).includes(4)) {\n visD = domclickStateCheck(room, filters);\n }\n //если у нас выбран авито\n if (filters.adsTargets.map(num => parseInt(num)).includes(1)) {\n visA = avitoStateCheck(room, filters);\n }\n //если у нас выбран циан\n if (filters.adsTargets.map(num => parseInt(num)).includes(2)) {\n visC = cianStateCheck(room, filters);\n }\n //если у нас выбран яндекс\n if (filters.adsTargets.map(num => parseInt(num)).includes(3)) {\n visY = yandexStateCheck(room, filters);\n }\n room.visible = !(!visD && !visD && !visC && !visY);\n }\n};\nconst stateError = room => {\n return room.add_to_domclick_feed && room.ads_domclick_error || room.add_to_avito_feed && room.ads_avito_error || room.add_to_cian_feed && room.ads_cian_error || room.add_to_yandex_feed && room.ads_yandex_error;\n};\nconst stateWait = room => {\n return room.add_to_domclick_feed && !room.ads_domclick_error && !room.ads_domclick_url || room.add_to_avito_feed && !room.ads_avito_error && !room.ads_avito_url || room.add_to_cian_feed && !room.ads_cian_error && !room.ads_cian_url || room.add_to_yandex_feed && !room.ads_yandex_error && !room.ads_yandex_url;\n};\nconst onlyStateCheck = (room, filters) => {\n //делаем наоборот, считаем, что изначально не видно\n let visible = false;\n\n //если не размещается\n if (filters.adsStates.map(num => parseInt(num)).includes(1) && !room.add_to_domclick_feed && !room.add_to_avito_feed && !room.add_to_cian_feed && !room.add_to_yandex_feed) {\n visible = true;\n }\n //если отправлен\n if (filters.adsStates.map(num => parseInt(num)).includes(2) && stateWait(room)) {\n visible = true;\n }\n //если с ошибками\n if (filters.adsStates.map(num => parseInt(num)).includes(3) && (room.add_to_domclick_feed && room.ads_domclick_error || room.add_to_avito_feed && room.ads_avito_error || room.add_to_cian_feed && room.ads_cian_error || room.add_to_yandex_feed && room.ads_yandex_error)) {\n visible = true;\n }\n //если размещается\n if (filters.adsStates.map(num => parseInt(num)).includes(4) && !stateWait(room) && !stateError(room) && (room.add_to_domclick_feed && room.ads_domclick_url || room.add_to_avito_feed && room.ads_avito_url || room.add_to_yandex_feed && room.ads_yandex_url || room.add_to_cian_feed && room.ads_cian_url)) {\n visible = true;\n }\n if (!visible) {\n room.visible = false;\n }\n};\nconst domclickStateCheck = (room, filters) => {\n //делаем наоборот, считаем, что изначально не видно\n let visible = false;\n\n //если не размещается\n if (filters.adsStates.map(num => parseInt(num)).includes(1) && !room.add_to_domclick_feed) {\n visible = true;\n }\n //если отправлен\n if (filters.adsStates.map(num => parseInt(num)).includes(2) && room.add_to_domclick_feed && !room.ads_domclick_error && !room.ads_domclick_url) {\n visible = true;\n }\n //если с ошибками\n if (filters.adsStates.map(num => parseInt(num)).includes(3) && room.ads_domclick_error) {\n visible = true;\n }\n //если размещается\n if (filters.adsStates.map(num => parseInt(num)).includes(4) && room.add_to_domclick_feed && room.ads_domclick_url) {\n visible = true;\n }\n if (!visible) {\n room.visible = false;\n }\n return visible;\n};\nconst avitoStateCheck = (room, filters) => {\n //делаем наоборот, считаем, что изначально не видно\n let visible = false;\n\n //если не размещается\n if (filters.adsStates.map(num => parseInt(num)).includes(1) && !room.add_to_avito_feed) {\n visible = true;\n }\n //если отправлен\n if (filters.adsStates.map(num => parseInt(num)).includes(2) && room.add_to_avito_feed && !room.ads_avito_error && !room.ads_avito_url) {\n visible = true;\n }\n //если с ошибками\n if (filters.adsStates.map(num => parseInt(num)).includes(3) && room.ads_avito_error) {\n visible = true;\n }\n //если размещается\n if (filters.adsStates.map(num => parseInt(num)).includes(4) && room.add_to_avito_feed && room.ads_avito_url) {\n visible = true;\n }\n if (!visible) {\n room.visible = false;\n }\n return visible;\n};\nconst cianStateCheck = (room, filters) => {\n //делаем наоборот, считаем, что изначально не видно\n let visible = false;\n\n //если не размещается\n if (filters.adsStates.map(num => parseInt(num)).includes(1) && !room.add_to_cian_feed) {\n visible = true;\n }\n //если отправлен\n if (filters.adsStates.map(num => parseInt(num)).includes(2) && room.add_to_cian_feed && !room.ads_cian_error && !room.ads_cian_url) {\n visible = true;\n }\n //если с ошибками\n if (filters.adsStates.map(num => parseInt(num)).includes(3) && room.ads_cian_error) {\n visible = true;\n }\n //если размещается\n if (filters.adsStates.map(num => parseInt(num)).includes(4) && room.add_to_cian_feed && room.ads_cian_url) {\n visible = true;\n }\n if (!visible) {\n room.visible = false;\n }\n return visible;\n};\nconst yandexStateCheck = (room, filters) => {\n //делаем наоборот, считаем, что изначально не видно\n let visible = false;\n\n //если не размещается\n if (filters.adsStates.map(num => parseInt(num)).includes(1) && !room.add_to_yandex_feed) {\n visible = true;\n }\n //если отправлен\n if (filters.adsStates.map(num => parseInt(num)).includes(2) && room.add_to_yandex_feed && !room.ads_yandex_error && !room.ads_yandex_url) {\n visible = true;\n }\n //если с ошибками\n if (filters.adsStates.map(num => parseInt(num)).includes(3) && room.ads_yandex_error) {\n visible = true;\n }\n //если размещается\n if (filters.adsStates.map(num => parseInt(num)).includes(4) && room.add_to_yandex_feed && room.ads_yandex_url) {\n visible = true;\n }\n if (!visible) {\n room.visible = false;\n }\n return visible;\n};\nconst typeRooms = [{\n name: \"Студия\",\n value: \"studio\"\n}, {\n name: \"1\",\n value: \"1\"\n}, {\n name: \"2\",\n value: \"2\"\n}, {\n name: \"3\",\n value: \"3\"\n}, {\n name: \"4\",\n value: \"4\"\n}, {\n name: \"5 и более\",\n value: \"5-more\"\n}];\nconst adsTargets = [{\n name: \"Авито\",\n value: \"1\"\n}, {\n name: \"Циан\",\n value: \"2\"\n}, {\n name: \"Яндекс\",\n value: \"3\"\n}, {\n name: \"Домклик\",\n value: \"4\"\n}];\nconst adsStates = [{\n name: \"Не размещается\",\n value: \"1\"\n}, {\n name: \"Отправлен\",\n value: \"2\"\n}, {\n name: \"С ошибками\",\n value: \"3\"\n}, {\n name: \"Размещается\",\n value: \"4\"\n}];\nconst containsNumber = str => {\n let regex = /\\d/;\n return regex.test(str);\n};\nconst isErrorStatus = apartament => {\n return apartament.add_to_domclick_feed && apartament.ads_domclick_error || apartament.add_to_avito_feed && apartament.ads_avito_error || apartament.add_to_cian_feed && apartament.ads_cian_error || apartament.add_to_yandex_feed && apartament.ads_yandex_error;\n};\nconst isWaitStatus = apartament => {\n let waitSt = false;\n if (apartament.add_to_domclick_feed && !apartament.ads_domclick_error && !apartament.ads_domclick_url) {\n waitSt = true;\n }\n if (apartament.add_to_avito_feed && !apartament.ads_avito_error && !apartament.ads_avito_url) {\n waitSt = true;\n }\n if (apartament.add_to_cian_feed && !apartament.ads_cian_error && !apartament.ads_cian_url) {\n waitSt = true;\n }\n if (apartament.add_to_yandex_feed && !apartament.ads_yandex_error && !apartament.ads_yandex_url) {\n waitSt = true;\n }\n return waitSt;\n};\nconst isSendToAds = apartament => {\n return apartament.add_to_cian_feed || apartament.add_to_avito_feed || apartament.add_to_domclick_feed || apartament.add_to_yandex_feed;\n};\nconst isActiveStatus = apartament => {\n let activeSt = false;\n if (!isWaitStatus(apartament) && !isErrorStatus(apartament)) {\n if (apartament.add_to_domclick_feed && !apartament.ads_domclick_error && apartament.ads_domclick_url) {\n activeSt = true;\n }\n if (apartament.add_to_avito_feed && !apartament.ads_avito_error && apartament.ads_avito_url) {\n activeSt = true;\n }\n if (apartament.add_to_cian_feed && !apartament.ads_cian_error && apartament.ads_cian_url) {\n activeSt = true;\n }\n if (apartament.add_to_yandex_feed && !apartament.ads_yandex_error && apartament.ads_yandex_url) {\n activeSt = true;\n }\n }\n return activeSt;\n};\nconst getStatusText = apartament => {\n let statusText = \"\";\n if (apartament.ads_domclick_error) {\n statusText = statusText + `<div>Домклик - ошибка размещения</div><h4 style='font-weight: bold;'>Ошибки размещения</h4><div style='font-size: 12px;'>` + apartament.ads_domclick_error + `</div>`;\n }\n if (apartament.ads_avito_error) {\n statusText = statusText + `<div>Авито - ошибка размещения</div><h4 style='font-weight: bold;'>Ошибки размещения</h4><div style='font-size: 12px;'>` + apartament.ads_avito_error + `</div>`;\n }\n if (apartament.ads_yandex_error) {\n statusText = statusText + `<div>Яндекс - ошибка размещения</div><h4 style='font-weight: bold;'>Ошибки размещения</h4><div style='font-size: 12px;'>` + apartament.ads_yandex_error + `</div>`;\n }\n if (apartament.ads_cian_error) {\n statusText = statusText + `<div>Циан - ошибка размещения</div><h4 style='font-weight: bold;'>Ошибки размещения</h4><div style='font-size: 12px;'>` + apartament.ads_cian_error + `</div>`;\n }\n if (apartament.add_to_domclick_feed && !apartament.ads_domclick_error && !apartament.ads_domclick_url) {\n statusText = statusText + `<div>Домклик - отправлен</div>`;\n }\n if (apartament.add_to_avito_feed && !apartament.ads_avito_error && !apartament.ads_avito_url) {\n statusText = statusText + `<div>Авито - отправлен</div>`;\n }\n if (apartament.add_to_cian_feed && !apartament.ads_cian_error && !apartament.ads_cian_url) {\n statusText = statusText + `<div>Циан - отправлен</div>`;\n }\n if (apartament.add_to_yandex_feed && !apartament.ads_yandex_error && !apartament.ads_yandex_url) {\n statusText = statusText + `<div>Яндекс - отправлен</div>`;\n }\n if (apartament.add_to_domclick_feed && !apartament.ads_domclick_error && apartament.ads_domclick_url) {\n statusText = statusText + `<div style='pointer-events: initial;'><a style='border-bottom: 1px solid;' href='` + apartament.ads_domclick_url + `' target='_blank'>Домклик</a> - размещено</div>`;\n }\n if (apartament.add_to_avito_feed && !apartament.ads_avito_error && apartament.ads_avito_url) {\n statusText = statusText + `<div style='pointer-events: initial;'><a style='border-bottom: 1px solid;' href='` + apartament.ads_avito_url + `' target='_blank'>Авито</a> - размещено</div>`;\n }\n if (apartament.add_to_cian_feed && !apartament.ads_cian_error && apartament.ads_cian_url) {\n statusText = statusText + `<div style='pointer-events: initial;'><a style='border-bottom: 1px solid;' href='` + apartament.ads_cian_url + `' target='_blank'>Циан</a> - размещено</div>`;\n }\n if (apartament.add_to_yandex_feed && !apartament.ads_yandex_error && apartament.ads_yandex_url) {\n statusText = statusText + `<div style='pointer-events: initial;'><a style='border-bottom: 1px solid;' href='` + apartament.ads_yandex_url + `' target='_blank'>Яндекс</a> - размещено</div>`;\n }\n return statusText;\n};\nconst formatNumber = number => {\n if (!number) return 0;\n let numberStr = number.toString();\n let parts = numberStr.split('.');\n let integerPart = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\n let formattedNumber = parts.length === 2 ? integerPart + '.' + parts[1] : integerPart;\n return formattedNumber;\n};\nconst join = (arr /*, separator */) => {\n var separator = arguments.length > 1 ? arguments[1] : \", \";\n return arr.filter(function (n) {\n return n;\n }).join(separator);\n};\nconst getConstraints = (kladr, label) => {\n let ids = new Array();\n if (kladr == 0 && label == 'москва и московская область') {\n ids.push({\n kladr_id: \"7700000000000\"\n });\n ids.push({\n kladr_id: \"5000000000000\"\n });\n } else if (kladr == 0 && label == 'санкт-петербург и ленинградская обл') {\n ids.push({\n kladr_id: \"7800000000000\"\n });\n ids.push({\n kladr_id: \"4700000000000\"\n });\n } else if (kladr == 0 && label == 'крым и севастополь') {\n ids.push({\n kladr_id: \"9100000000000\"\n });\n ids.push({\n kladr_id: \"9200000000000\"\n });\n } else {\n ids.push({\n kladr_id: kladr.toString()\n });\n }\n return ids;\n};\nconst INITIAL_COMPLEX = {\n id: 0,\n type: 'complex',\n name: '',\n address: {\n \"id\": null,\n \"complex_id\": null,\n \"address\": \"\",\n // \"rayon_id\": null,\n \"rayon\": null,\n \"city\": \"\",\n \"street\": \"\",\n \"korpus\": \"\",\n \"dom\": \"\",\n \"litera\": \"\",\n \"kladr_id\": \"\",\n \"latitude\": \"\",\n \"longitude\": \"\"\n },\n actions: [],\n address_line: '',\n rf_region_id: 0,\n country_id: 171,\n rf_region_rayon: '',\n rayon_id: 0,\n city: '',\n street: '',\n korpus: '',\n dom: '',\n litera: '',\n kladr_id: '',\n region_kladr_id: '',\n latitude: '',\n longitude: '',\n lines: [],\n deadline: [],\n builder_id: 0,\n images: [],\n payment_types: [],\n contract_type: '',\n housing_class_id: 0,\n first_floor: 0,\n last_floor: 0,\n number_apartments: 0,\n ceiling_height: 0,\n decoration_id: 0,\n parking: 0,\n closed_area: 0,\n protected_area: 0,\n concierge: 0,\n house_type: 0,\n house_material: 0,\n metros: [],\n infrastructure: {\n 'school': 0,\n 'kindergarten': 0,\n 'playgrounds': 0,\n 'sportsgrounds': 0,\n 'cafes': 0,\n 'shops': 0,\n 'beautysalons': 0,\n 'fitnessclub': 0,\n 'park': 0,\n 'trc': 0,\n 'commercialobjects': 0\n },\n metro: {\n 'metro_id': null,\n 'subway_time': '',\n 'subway_distance': null\n },\n dop: {\n domclick_id: null,\n title_desc: '',\n text_desc: '',\n title_desc_dop: '',\n text_desc_dop: '',\n url_video: '',\n type_video: null,\n UTP: [],\n UTP2: [],\n phone_op: '',\n phone_mobil_op: null,\n address_op: '',\n latitude_op: '',\n longitude_op: '',\n timezone_op: '',\n workdays_op: null,\n opentime_op: '',\n closetime_op: ''\n },\n cadastral_number: null,\n has_show_room: 0\n};\nconst confirmpopupStyle = {\n root: {\n class: [\"!p-3.5\"]\n },\n content: {\n class: [\"!p-0 !mb-2.5\"]\n },\n message: {\n class: [\"!m-0 !text-base !font-normal\"]\n },\n footer: {\n class: [\"!flex !flex-row-reverse !justify-center !gap-x-3 !p-0\"]\n },\n rejectButton: {\n class: [\"!px-3 !font-normal !m-0\"]\n },\n acceptButton: {\n class: [\"!px-3 !font-normal\"]\n }\n};\nconst photoToObjectUrl = url => URL.createObjectURL(url);\nconst copyObject = object => JSON.parse(JSON.stringify(object));\nconst generateAlphabetSequence = number => {\n let result = [];\n function numberToAlphabet(n) {\n let chars = [];\n while (n > 0) {\n let remainder = (n - 1) % 26;\n chars.push(String.fromCharCode(remainder + 65));\n n = Math.floor((n - 1) / 26);\n }\n return chars.reverse().join('');\n }\n for (let i = 1; i <= number; i++) {\n result.push(numberToAlphabet(i));\n }\n return result;\n};\nconst multiSelectStyle = {\n root: {\n class: ['!rounded !border !border-grey-400 !p-3 !h-max']\n },\n input: {\n class: ['!flex !flex-row !items-center !p-0 !text-sm !leading-none !text-grey-900 !mr-3']\n },\n wrapper: {\n class: ['!p-0']\n },\n item: {\n class: ['!text-sm']\n },\n label: {\n class: ['!p-0']\n },\n header: {\n class: ['custom-header']\n }\n};\nconst formatDate = utcDateStr => {\n const [datePart, timePart] = utcDateStr.split(' ');\n const [year, month, day] = datePart.split('-').map(Number);\n const [hour, minute, second] = timePart.split(':').map(Number);\n const utcDate = new Date(Date.UTC(year, month - 1, day, hour, minute, second));\n const options = {\n timeZone: 'Asia/Yerevan',\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false // 24-hour format\n };\n const formatter = new Intl.DateTimeFormat('en-US', options);\n const timeZonedDate = formatter.format(utcDate);\n return timeZonedDate;\n};\n\n//# sourceURL=webpack://complexes/./src/shared/utils/util.js?");
|
||
|
||
/***/ })
|
||
|
||
}]); |