// Серверное время var server_time = 1747616298; // Базовый URL https://brigadirka.ru или http://dev.brigadirka.ru var base_url = "http://dev.brigadirka.ru"; var work_base_url = 'https://brigadirka.ru'; // Протокол (ws, wss) и домен (dev., www.) для websocket // Должны получить wss://brigadirka.ru или ws://dev.brigadirka.ru var user_id_encrypted = 'ATKTjjnIp7UzM'; var ws_base_url = "ws://dev.brigadirka.ru"; var socet_url = ws_base_url + ':3333/?partner_id=&user_id=' + user_id_encrypted; //console.log(user_id_encrypted); //console.log(socet_url); $(document).ready(function(){ var base_url = location.origin; // Ресайз окна $(window).resize(function () { adjustScreenSize(); }); // Подстройка элементов интерфейса function adjustScreenSize(){ // console.log('adjustScreenSize'); // Сортировать позиции в смете с пом перетаскиванию мышью доступно только на больших экранах let sortable_item2smeta = $('.item2smeta-list .sortable-rows'); let width = $(document).width(); // Активируем стили экрана if ( width < 900 ){ // Активируем стили малого экрана localStorage['screen_size'] = 'screen-small'; $('.screen-small').show(); $('.screen-big').hide(); $('.dialog-form').css('width', '350px'); $('.task-menu-container').css('flex-wrap', 'nowrap'); $('.task-menu-container .tab').css('cursor', 'w-resize'); // $('.bar-main').css('height', 'calc(100% - 48px /* Шапка */'); // Меню в карточке заказа $('.bar-task-menu').css('flex-wrap', 'nowrap'); // Блок приостановленных сервисов $('.paused-service-list').css('background-image', 'none'); // Сортировать позиции в смете с пом перетаскиванию мышью доступно только на больших экранах sortable_item2smeta.removeClass('sortable-rows').addClass('block-sortable-rows'); // Высота блока с Календарём $('.page-calendar .bar-calendar').css('height', '350px'); // Карточка товара - аватар товара $('.item-form .bar-item-avatar').hide(); } else { // Активируем стили большого экрана localStorage['screen_size'] = 'screen-big'; $('.screen-small').hide(); $('.screen-big').show(); $('.dialog-form').css('width', '500px'); $('.task-menu-container').css('flex-wrap', 'wrap'); $('.task-menu-container .tab').css('cursor', 'pointer'); // // $('.bar-main').css('height', 'calc(100% - 48px /* Шапка */ - 35px /* Футер */'); // $('.bar-main').css('height', 'calc(100% - 48px /* Шапка */'); // Меню в карточке заказа $('.bar-task-menu').css('flex-wrap', 'wrap'); // Блок приостановленных сервисов $('.paused-service-list').css('background-image', 'url(/img/visual/sleeping-worker-web.jpg)'); // Сортировать позиции в смете с пом перетаскиванию мышью доступно только на больших экранах sortable_item2smeta.removeClass('block-sortable-rows').addClass('sortable-rows'); // Высота блока с Календарём $('.page-calendar .bar-calendar').css('height', '100%'); // Карточка товара - аватар товара $('.item-form .bar-item-avatar').show(); } // Индикатор-лоадер $('.loader').center(); // Главное меню if ( $(document).width() >= 1430 ){ // См. CSS media! $('.bar-menu').css('max-height', '100%').show(); } else { $('.bar-menu').css('max-height', 'calc(100% - 50px)').hide(); } // Сервисная панель if ( $(document).width() >= 1250 ){ // См. CSS media! $('.bar-service').css('max-height', '100%').show(); } else { $('.bar-service').css('max-height', 'calc(100% - 50px)').hide(); } } // Функция сна JS скрипта function sleep(milliseconds) { const date = Date.now(); let currentDate = null; do { currentDate = Date.now(); } while (currentDate - date < milliseconds); } // Нажатие клавиши $(document).keydown(function(e) { // Нажатие клавиши Esc - закрытие окон if ( e.keyCode === 27 ) { if ( $('.act-close-category-selector').is(':visible') ) { $('.act-close-category-selector').click(); } else if ( $('.act-close-sign-agreement-form').is(':visible') ) { $('.act-close-sign-agreement-form').click(); } else if ( $('.act-close-partner-form').is(':visible') ) { $('.act-close-partner-form').click(); } else if ( $('.act-close-tender-form').is(':visible') ) { $('.act-close-tender-form').click(); } else if ( $('.act-close-choose-actor-form').is(':visible') ) { $('.act-close-choose-actor-form').click(); } else if ( $('.act-close-task-state-form').is(':visible') ) { $('.act-close-task-state-form').click(); } else if ( $('.act-close-event-form').is(':visible') ) { $('.act-close-event-form').click(); } else if ( $('.act-close-salary-form').is(':visible') ) { $('.act-close-salary-form').click(); } else if ( $('.act-close-payment-form').is(':visible') ) { $('.act-close-payment-form').click(); } else if ( $('.act-close-dadata-form').is(':visible') ) { $('.act-close-dadata-form').click(); } else if ( $('.act-close-source-form').is(':visible') ) { $('.act-close-source-form').click(); } else if ( $('.act-close-invoice-form').is(':visible') ) { $('.act-close-invoice-form').click(); } else if ( $('.act-close-payway-form').is(':visible') ) { $('.act-close-payway-form').click(); } else if ( $('.act-close-claim-form').is(':visible') ) { $('.act-close-claim-form').click(); } else if ( $('.act-close-contact-form').is(':visible') ) { $('.act-close-contact-form').click(); } else if ( $('.act-close-user-info').is(':visible') ) { $('.act-close-user-info').click(); } else if ( $('.act-close-store-form').is(':visible') ) { $('.act-close-store-form').click(); } else if ( $('.act-close-avatar-form').is(':visible') ) { $('.act-close-avatar-form').click(); } else if ( $('.act-close-phone-form').is(':visible') ) { $('.act-close-phone-form').click(); } else if ( $('.act-close-message-form').is(':visible') ) { $('.act-close-message-form').click(); } else if ( $('.act-close-date-period-selector').is(':visible') ) { $('.act-close-date-period-selector').click(); } else if ( $('.act-clear-task-filter').is(':visible') ) { $('.act-clear-task-filter').click(); } else if ( $('.act-close-history-filter').is(':visible') ) { $('.act-close-history-filter').click(); } else if ( $('.act-close-item2smeta-form').is(':visible') ) { $('.act-close-item2smeta-form').click(); } else if ( $('.act-close-slave2master_item-form').is(':visible') ) { $('.act-close-slave2master_item-form').click(); } else if ( $('.act-close-smeta-editor').is(':visible') ) { $('.act-close-smeta-editor').click(); } else if ( $('.act-close-margin2salary-form').is(':visible') ) { $('.act-close-margin2salary-form').click(); } else if ( $('.act-close-photo-form').is(':visible') ) { $('.act-close-photo-form').click(); } else if ( $('.act-close-upload-photo-form').is(':visible') ) { $('.act-close-upload-photo-form').click(); } else if ( $('.act-close-photo-viewer-form').is(':visible') ) { $('.act-close-photo-viewer-form').click(); } else if ( $('.act-close-task').is(':visible') ) { $('.page-task-form .bar-header .act-close-task').click(); } else if ( $('.act-close-calendar').is(':visible') ) { $('.act-close-calendar').click(); } else if ( $('.act-close-p2p-form').is(':visible') ) { $('.act-close-p2p-form').click(); } else if ( $('.act-close-actor').is(':visible') ) { $('.act-close-actor').click(); } else if ( $('.act-close-user').is(':visible') ) { $('.act-close-user').click(); } else if ( $('.act-close-slave-item-form').is(':visible') ) { $('.act-close-slave-item-form').click(); } else if ( $('.act-close-select-slave-item-form').is(':visible') ) { $('.act-close-select-slave-item-form').click(); } else if ( $('.act-close-item-form').is(':visible') ) { $('.act-close-item-form').click(); } else if ( $('.act-close-igroup-form').is(':visible') ) { $('.act-close-igroup-form').click(); } else if ( $('.act-close-agroup-form').is(':visible') ) { $('.act-close-agroup-form').click(); } else if ( $('.act-close-trademark-form').is(':visible') ) { $('.act-close-trademark-form').click(); } else if ( $('.act-close-trip2salary-form').is(':visible') ) { $('.act-close-trip2salary-form').click(); } else if ( $('.act-close-trip-form').is(':visible') ) { $('.act-close-trip-form').click(); } else if ( $('.act-close-vehicle-form').is(':visible') ) { $('.act-close-vehicle-form').click(); } else if ( $('.act-close-itemflow-editor').is(':visible') ) { $('.act-close-itemflow-editor').click(); } else if ( $('.act-close-smeta-itemflow-form').is(':visible') ) { $('.act-close-smeta-itemflow-form').click(); } } // Нажатие по Enter - ввод данных if ( e.keyCode === 13 ) { // Поиск товара при работе со складом if ( $('.itemflow-editor .i-search-catalog').is(':focus') ) { $('.itemflow-editor .act-search-catalog').click(); } // Поиск заказчика при создании заказа else if ( $('.page-task-form .i-customer-search-keywords').is(':focus') ) { $('.page-task-form .act-search-customer').click(); } // Поиск заказа для маршрута else if ( $('.page-logist .i-agreement_num').is(':focus') ) { $('.page-logist .act-search-task').click(); } // Поиск по заказам else if ( $('.page-task-list .i-search-task').is(':focus') ) { $('.page-task-list .act-search-tasks').click(); } // Поиск по платежам else if ( $('.page-finance .i-search-payment').is(':focus') ) { $('.page-finance .act-search-payment').click(); } // Поиск по начислениям ЗП else if ( $('.page-salary .i-search-salary').is(':focus') ) { $('.page-salary .act-search-salary').click(); } // Ввод кода из СМС при логине else if ( $('.bar-login_code .i-login_code').is(':focus') ) { $('.bar-login_code .act-put-login_code').click(); } // Поиск реквизитов в форме DaData // else if ( $('.dadata-form .i-dadata-search-keywords').is(':focus') ) { $('.dadata-form .act-dadata-search-keywords').click(); } // Поиск по каталогу else { $('.smeta-editor .act-search-catalog').click(); } } }); function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); }// Периодический опрос сервера var ask_need_login = 5000; // Период = 5 сек setTimeout(function run() { askNeedLogout(); setTimeout(run, ask_need_login); }, ask_need_login); // Нужен ли экстренный выход из приложения и блокировка входа данного партнёра - Опрос сервера function askNeedLogout(){ // Есть ли авторизация пользователя? if (!($('.bar-user').attr('data-user_id') > 0)) return; $.ajax({ url: base_url + '/handler/login/ask-need-logout.php', cache: false, type: "POST", data: {}, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ var data = $.parseJSON(json); if (data.nlo == 1) { // Нажатие кнопки "Выход" $('.act-logout').click(); } } }); } // Показать блок с отображением текущего состояния блокировки и // кнопку для блокировки - разблокировки function showBarBlockLogin(){ $('.loader').show(); $.ajax({ url: base_url + '/handler/login/get-bar-block-login.php', cache: false, type: "POST", data: {}, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-block-login .bar-block-login').html(data); // Клик на кнопку - блокировать или заблокировать $('.page-block-login .act-block-login').click(function(){ doBlockUnblockLogin( $(this).attr('data-block-login') ); }); } }); } // Обновить страницу $('.page-block-login .act-reload-block-login-page').click(function(){ showBarBlockLogin(); }); // Блокировать-разблокировать логин пользователей у партнера function doBlockUnblockLogin( v_block_login ){ var z_msg = ''; if ( v_block_login == 1 ){ z_msg = 'Вход в систему будет заблокирован. Продолжить?'; } else { z_msg = 'Снять блокировку входа в систему?'; } if ( !confirm( z_msg ) ) { return; } $('.loader').show(); $.ajax({ url: base_url + '/handler/login/do-block-unblock-login.php', cache: false, type: "POST", data: { block_login: v_block_login }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); showBarBlockLogin(); } }); } // Клик - переход раздел, как будто бы кликнули на пункт меню function clickMenuItem( v_data_page ){ $('.bar-main .bar-menu .menu-item[data-page="' + v_data_page + '"]').click(); } // Клик - показать / скрыть главное меню $('.act-show-main-menu').click(function(){ $('.bar-menu').toggle(); return false; }); // Показать - спрятать всплывающее меню при клике на кнопку $('.bar-show-popup-menu').click(function(){ $('.bar-menu').toggle(); return false; }); // Показать - спрятать всплывющую сервисную панель при клике на кнопку $('.bar-show-popup-service').click(function(){ $('.bar-service').toggle(); }); // Клик по пункту из меню. Спрятать всплывающее меню $('.bar-menu .menu-item[data-page], .bar-menu .submenu-item[data-page], .act-add-task, body').click(function(){ if ( $(document).width() < 1430 ){ // См. CSS media! $('.bar-menu').hide(); } }); // Пункты меню при наведении на строку $('.bar-main .bar-menu .menu-item').hover( function(){ $(this).find('i.material-icons, .rubznak').css('opacity', '1.0'); }, function(){ $(this).find('i.material-icons, .rubznak').css('opacity', '0.3'); } ); // Закрыть / раскрыть пункы составного меню $('.bar-main .bar-menu .menu-item.parent-menu').click(function(){ $(this).parent().find('.submenu-item').toggle(); return false; }); // Нажатие на кнопки главного меню $('.bar-main .bar-menu .menu-item[data-page], .bar-main .bar-menu .submenu-item[data-page]').click(function(){ // Активируем выбранный пункт меню $('.bar-main .bar-menu .menu-item, .bar-main .bar-menu .submenu-item').removeClass('on'); $(this).addClass('on'); // Активируем выбранную страницу var page = $(this).attr('data-page'); localStorage['work_mode'] = page; localStorage['assign_mode'] = 'CALENDAR'; // Очищаем везде ключевые строки поиска localStorage.removeItem('search_task_keywords'); $('.page-task-list .i-search-task').val(''); localStorage.removeItem('search_payment_keywords'); $('.page-finance .i-search-payment').val(''); localStorage.removeItem('search_salary_keywords'); $('.page-salary .i-search-salary').val(''); // console.log('page=', page); switch (page) { case 'task-list': localStorage['task_page_num'] = 1; localStorage['work_task_scroll_top'] = 0; // Клик на ранее сохранённый этап if (localStorage['work_stage_id'] == null || localStorage['work_stage_id'] == '') { localStorage['work_stage_id'] = $('.page-task-list .stage-container .bigtab:first-child').attr('data-stage_id'); }; $('.page-task-list .stage-container.bigtab[data-stage_id = ' + localStorage['work_stage_id'] + ']').click(); break; case 'tender-list': localStorage['tender_page_num'] = 1; localStorage['tender_task_scroll_top'] = 0; break; case 'event_list': localStorage['event_page_num'] = 1; break; case 'message': localStorage['message_page_num'] = 1; localStorage['work_message_scroll_top'] = 0; break; case 'payment': localStorage['payment_page_num'] = 1; localStorage['work_payment_scroll_top'] = 0; localStorage['invoice_page_num'] = 1; localStorage['invoice_scroll_top'] = 0; break; case 'customer-list': localStorage['customer_list_page_num'] = 1; localStorage['work_customer_list_scroll_top'] = 0; localStorage.removeItem('customer_list_date_begin'); $('.page-customer-list .i-date_begin').val(''); localStorage.removeItem('customer_list_date_end'); $('.page-customer-list .i-date_end').val(''); break; case 'portfolio': localStorage['portfolio_page_num'] = 1; localStorage['portfolio_scroll_top'] = 0; break; case 'history': localStorage['history_page_num'] = 1; break; case 'salary': localStorage['salary_page_num'] = 1; break; case 'sms-list': localStorage['sms_page_num'] = 1; break; case 'claim_list': localStorage['claim_page_num'] = 1; break; case 'account': localStorage['account_payment_page_num'] = 1; break; case 'phone': localStorage['phone_page_num'] = 1; break; case 'phone': localStorage['phone_page_num'] = 1; break; case 'dadata': localStorage['phone_page_num'] = 1; break; case 'partner_list': localStorage['partner_page_num'] = 1; break; case 'monitor': showMonitor(); break; } switch (page) { case 'dadata': showDadataForm( 'GENERAL', null ); break; default: showPage(page); break; } }); // Активация страницы function showPage(page){ $('.bar-pages .page').hide(); $('.bar-pages .page-' + page ).show(); // Как исключение switch ( page ){ case 'payment': case 'invoice': $('.bar-pages .page-finance' ).show(); break; } switch ( page ) { case 'homepage': reloadHomepagePage(); break; case 'task-list': // Выбираем текущий этап ... if ( localStorage['work_stage_id'] > 0 ) { // или по ID var tab = $('.page-task-list .bigtabs-stages .bigtab[data-stage_id="' + localStorage['work_stage_id'] + '"]'); } else { // или по Алиасу var tab = $('.page-task-list .bigtabs-stages .bigtab[data-stage_alias="' + (localStorage['view_mode']).toUpperCase() + '"]'); } // clickStageTab(tab); reloadTaskPage(); break; case 'task-form': switch (localStorage['task_mode']){ case "request": // Заявки $('.page-task-form .act-cancel-task').html('Отменить заявку'); $('.page-task-form .act-delete-task').html('Удалить заявку'); break; case "task": // Заказы $('.page-task-form .act-cancel-task').html('Отменить заказ'); $('.page-task-form .act-delete-task').html('Удалить заказ'); break; } $('.task-menu-container').css('left', '0px'); $('.page-task-form .task-form').show(); break; case 'tender-list': reloadTenderListPage(); break; case 'event-list': reloadEventListPage(); break; case 'claim-list': reloadClaimListPage(); break; case 'partner-list': showPartnerList(); break; case 'calendar': // Активируем этап для назначения исполнителей if (localStorage['assign_stage_id'] > 0) { var tab = $('.page-calendar .bar-stages .bigtab[data-stage_id="' + localStorage['assign_stage_id'] + '"]'); } else { // Активируем первый этап из всех возможных var tab = $('.page-calendar .bar-stages .bigtab:first-child'); } clickAssignStageTab(tab); break; case 'message': reloadMessagePage(); break; case 'invoice': localStorage.removeItem('filter_payuser_id'); localStorage.removeItem('filter_payuser_type'); showFinanceTab('invoice-list'); break; case 'payment': localStorage.removeItem('filter_payuser_id'); localStorage.removeItem('filter_payuser_type'); showFinanceTab('payment-list'); break; case 'customer-list': localStorage.removeItem('filter_customer_list_date_begin'); localStorage.removeItem('filter_customer_list_date_end'); // Выбираем текущий этап ... if ( localStorage['work_stage_id'] > 0 ) { // или по ID var tab = $('.page-customer-list .bigtabs-stages .bigtab[data-stage_id="' + localStorage['work_stage_id'] + '"]'); } else { // или по Алиасу var tab = $('.page-customer-list .bigtabs-stages .bigtab[data-stage_alias="' + (localStorage['view_mode']).toUpperCase() + '"]'); } clickCustomerListStageTab(tab); break; case 'portfolio': showPortfolioTab('portfolio-list'); break; case 'salary': localStorage.removeItem('filter_salary_user_id'); localStorage.removeItem('filter_salary_actor_id'); // Фильтр по сотруднику при показе всех Зарплат reloadSalaryPage(); break; case 'logist': showLogist('trip'); break; case 'store': showStoreTab('items-on-store'); break; case 'workday': showWorkday(); break; case 'actor-list': //showActorList( localStorage['settings_actor_id'] ); var z_actor_blocked = $(this).attr('data-actor_blocked'); localStorage['actor_blocked'] = 0; // Показать Работающих сотрудников showActorList('actors'); break; case 'history': showHistory(); break; case 'catalog': localStorage.removeItem('keyword_search_catalog'); showCatalog('items'); break; case 'sms': reloadSMSPage(); break; case 'adv-list': localStorage.removeItem('adv_page_num'); reloadAdvListPage(); break; case 'report': /* if (localStorage['report'] == '' || localStorage['report'] == null) { localStorage['report'] = 'login-log'; } showReport( localStorage['report'] ); if (localStorage['report'] != '' && localStorage['report'] != null) { showReport( localStorage['report'] ); } */ break; case 'settings': // Переходим на страницу Профиль $('.page-settings .tabs-settings .tab[data-tab="profile"]').click(); $('.settings-menu-container').css('left', '0px'); break; case 'affiliate-program': // Переходим на страницу Условия программы $('.page-affiliate-program .tabs-affiliate-program .tab[data-tab="regulation"]').click(); break; case 'account': // Переходим на страницу Тариф и Баланс showAccountTab('balance-account-payment-list'); break; case 'phone': showPhonePage(); break; case 'weather': showTotalWeather(); break; case 'trash': showTrash(); break; case 'block-login': showBarBlockLogin(); break; } } // Объявления статические для сайтов function showAds(v_site){ // console.log('showAds=' + v_site); // var z_copy_domain = 'copy.brigadirka.ru'; // if ( window.location.host == z_copy_domain ) { $('.ads').html(''); $.ajax({ url: base_url + '/handler/ads/get-ads.php', cache: false, type: "POST", data: { site: v_site }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ if ( data.length > 0 ){ $('.' + v_site + '-ads').html(data).css('padding', '10px').show(); } else { $('.' + v_site + '-ads').hide(); } } }); // } }// Выравнивание модального окна по центру (function($){ $.fn.extend({ center: function () { return this.each(function() { var top = ($(window).height() - $(this).outerHeight()) / 2; var left = ($(window).width() - $(this).outerWidth()) / 2; $(this).css({position:'absolute', margin:0, top: (top > 0 ? top : 0)+'px', left: (left > 0 ? left : 0)+'px'}); }); } }); })(jQuery); function number_format(number, decimals, dec_point, thousands_sep) { /* number - исходное число decimals - количество знаков после разделителя dec_point - символ разделителя thousands_sep - разделитель тысячных */ number = (number + '').replace(/[^0-9+\-Ee.]/g, ''); var n = !isFinite(+number) ? 0 : +number, prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, dec = (typeof dec_point === 'undefined') ? '.' : dec_point, s = '', toFixedFix = function(n, prec) { var k = Math.pow(10, prec); return '' + (Math.round(n * k) / k) .toFixed(prec); }; // Fix for IE parseFloat(0.55).toFixed(0) = 0; s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.'); if (s[0].length > 3) { s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep); } if ((s[1] || '').length < prec) { s[1] = s[1] || ''; s[1] += new Array(prec - s[1].length + 1) .join('0'); } return s.join(dec); } function dayofweek(number, format) { var result = ''; switch (format){ case 'rus2': switch(number){ case 0: result = 'вс'; break; case 1: result = 'пн'; break; case 2: result = 'вт'; break; case 3: result = 'ср'; break; case 4: result = 'чт'; break; case 5: result = 'пт'; break; case 6: result = 'сб'; break; } break; default: result = ''; } return result; }function axhr_send(v_attach_file, v_task_id) { if ( v_attach_file ) { $('.loader').show(); $('.page-task-form').css('opacity', '0.5'); $('.page-task-form .attach-response').html(''); axhr.onreadystatechange = function(){ if (axhr.readyState == 4) { $('.loader').hide(); $('.page-task-form').css('opacity', '1.0'); console.log(axhr); var json = axhr.responseText; console.log('json=' + json); var data = $.parseJSON(json); console.log('data=' + data); $('.page-task-form .attach-response').html( data.message ); $('.page-task-form .attach-response').attr('data-type', ((data.result < 0)? 'res-error' : 'res-ok')).show(); showTaskHeader( v_task_id ); showAttachList( v_task_id, false ); //showCalendar(); //showTaskList(); } } axhr.open("POST", "/handler/attach/upload-attach.php"); axhr.setRequestHeader("Cache-Control", "no-cache"); axhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); axhr.setRequestHeader("X-File-Name", encodeURI(v_attach_file.name)); axhr.setRequestHeader("X-Task-ID", v_task_id); axhr.send(v_attach_file); } } var axhr = new XMLHttpRequest(); if (axhr && window.File) { var attach_file = null; $('#axhr_field').change(function(e){ attach_file = this.files[0]; e.preventDefault(); axhr_send(attach_file, $('.page-task-form .d-task_id').val() ); }); } // Клик Добавить аттач $('.page-task-form .act-add-attach').click(function() { $('#axhr_field').click(); }); // Показать список аттачей по задаче function showAttachList(v_task_id, v_cleanup) { if (v_cleanup) { $('.page-task-form .attach-list').html(''); } $('.loader').show(); $.ajax({ url: base_url + '/handler/attach/get-attach-list.php', type: "POST", data: { task_id: v_task_id }, cache: false, statusCode: { 401: function() { document.location.href = base_url;} }, success: function(data){ $('.loader').hide(); $('.page-task-form .attach-list').html(data); if (data != '') { $('.page-task-form .bar-attach').show(); } else { $('.page-task-form .bar-attach').hide(); } // Настройка READONLY if ( $('.page-task-form .d-readonly').css('display') == 'block' ){ $('.attach-list .act-delete-attach').hide(); } else { $('.attach-list .act-delete-attach').show(); } // Клик - Удалить аттач $('.page-task-form .attach-list .act-delete-attach').click(function () { if ( confirm('Удалить файл?') ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/attach/delete-attach.php', type: "POST", data: { attach_id: $(this).parent().parent().parent().attr('data-attach_id') }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); $('.page-task-form .attach-response').html( data.message ).attr('data-type', ((data.result < 0)? 'res-error' : 'res-ok')).show(); showTaskHeader( v_task_id ); showAttachList( v_task_id, false ); showTaskList(localStorage['work_stage_id'], localStorage['search_task_keywords']); } }); } }); } }); } // Показать список документов по задаче function showDocumentList(v_task_id, v_cleanup) { if (v_cleanup) { $('.page-task-form .document-list').html(''); } $('.loader').show(); $.ajax({ url: base_url + '/handler/get-document-form.php', type: "POST", data: { task_id: v_task_id }, cache: false, statusCode: { 401: function() { document.location.href = base_url;} }, success: function(data){ $('.loader').hide(); // console.log(data); $('.page-task-form .document-list').html(data); if (data != '') { $('.page-task-form .bar-document').show(); } else { $('.page-task-form .bar-document').hide(); } } }); }// Показать окно Выбора пользователя $('.act-show-select-user-form').click(function(){ $('.select-user-form .user-list').html('Загрузка...'); if ( !$('.select-user-form').is(':visible') ) { // Показываем кнопку, т.к. ее видимость используется в работе глобального Esc $('.act-close-select-user-form').show(); // Показать форму $('.loader').show(); $.ajax({ url: base_url + '/handler/users/get-user-list.php', type: "POST", data: {}, cache: false, statusCode: { 401: function() { document.location.href = base_url;} }, success: function(data){ $('.loader').hide(); $('.select-user-form .user-list').html(data); $('.select-user-form').show().center(); // Отобразить кнопки действий при наведении на строку $('.select-user-form .user-list div[data-user_id]').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Смена пользователя $('.select-user-form .user-row').click(function(){ $('.act-close-select-user-form').click(); $('.loader').show(); $.ajax({ url: base_url + '/handler/login/change-user.php', type: "POST", data: { user_id: $(this).attr('data-user_id'), }, cache: false, statusCode: { 401: function() { document.location.href = base_url;} }, success: function(json){ $('.loader').hide(); //console.log(json); data = $.parseJSON(json); if (data.result == 10) { window.location = data.message + '/?site=system'; } } }); }); } }); $('.select-user-form').show().center(); } else { // Скрыть кнопку, т.к. ее видимость используется в работе глобального Esc $('.act-close-select-user-form').hide(); // Скрыть форму $('.select-user-form').hide(); } }); // Переходим в раздел Настройки (Профиль) $('.act-show-settings-page').click(function(){ showPage('settings'); }); // Закрыть селектор пользователя $('.act-close-select-user-form').click(function(){ // Скрываем кнопку, т.к. ее видимость используется в работе глобального Esc $(this).hide(); $('.select-user-form').hide(); }); $('.bar-login').show(); $('.bar-welcome').hide(); // Клик на значок: Переключить Избранное function setFavorite( v_entity_type, v_entity_id, v_value, v_caller ){ $('.loader').show(); $('.page-task-list').css('opacity', '0.5'); $.ajax({ url: base_url + '/handler/users/set-favorite.php', cache: false, type: "POST", data: { entity_id: v_entity_id, entity_type: v_entity_type, value: v_value }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); switch (v_entity_type){ case 'TASK': switch (v_caller){ case 'TASK-FORM': showTaskHeader( v_entity_id ); break; case 'TASK-LIST': showTaskList(); break; } break; } } }); }var z_digitNoAction = false; if (localStorage.getItem('last_success_phone') == null) { localStorage['last_success_phone'] = ''; } // Переключить вкладку $('.bar-login .tab').click(function(){ $('.bar-login .response').html('').attr('data-type', '').hide(); $('.bar-login .tab').removeClass('on'); $('.bar-login .tabcard').hide(); var tab_name = $(this).attr('data-tab'); $('.bar-login .tab[data-tab=' + tab_name + ']').addClass('on'); $('.bar-login .tabcard[data-tab=' + tab_name + ']').show(); }); // Клик - Подключиться к системе $('.bar-login .act-join').click(function(){ window.location.href = "/welcome/join/"; }); // Видимость пароля $('.act-show-password').click(function(){ ipass = $('.bar-login .i-password'); sv_val = ipass.val(); if ( ipass.attr('type') == 'password' ) { ipass.attr('type', 'text'); } else { ipass.attr('type', 'password'); } ipass.val(sv_val); }); $('.bar-login form').on('submit', function(){ event.preventDefault(); }); // Проверка раскладки клавиатуры function checkIsEnglishKeyboard(ob,e){ let reg = /\d|\w|[\.\$@\*\\\/\+\-\^\!\(\)\[\]\~\%\&\=\?\>\<\{\}\"\'\,\:\;\_]/g; a = e.key.match(reg); if (a == null){ alert('Переключите клавиатуру на английский язык!'); ob.val('').focus(); return false; } return true; } // Проверка поля Пароль на раскладку клавиатуры $('.bar-login .i-password').keydown(function(e){ if (!checkIsEnglishKeyboard($(this),e)){ return false; } }); // Обработка фокусировки поля номеров телефона при логине $('.bar-login .phone-digit').bind("focus", function() { this.value = ''; }); // Обработка нажатия клавиши Backspace для поля номеров телефона при логине // input.addEventListener('keydown', function(event) { $('.bar-login .phone-digit').keydown(function(e){ // Нажатие клавиши Backspace if (e.key === "Backspace" || e.keyCode === 8) { // Переход на предыдущее поле if ( $(this).hasClass('i-user_digit2') ) { $('.bar-login-password .i-user_digit1').focus(); } if ( $(this).hasClass('i-user_digit3') ) { $('.bar-login-password .i-user_digit2').focus(); } if ( $(this).hasClass('i-user_digit4') ) { $('.bar-login-password .i-user_digit3').focus(); } if ( $(this).hasClass('i-user_digit5') ) { $('.bar-login-password .i-user_digit4').focus(); } if ( $(this).hasClass('i-user_digit6') ) { $('.bar-login-password .i-user_digit5').focus(); } if ( $(this).hasClass('i-user_digit7') ) { $('.bar-login-password .i-user_digit6').focus(); } if ( $(this).hasClass('i-user_digit8') ) { $('.bar-login-password .i-user_digit7').focus(); } if ( $(this).hasClass('i-user_digit9') ) { $('.bar-login-password .i-user_digit8').focus(); } if ( $(this).hasClass('i-user_digit10') ) { $('.bar-login-password .i-user_digit9').focus(); } } }); $('.bar-login').keydown(function(e){ // Нажатие клавиши Enter if (e.key === "Enter" || e.keyCode === 13) { // Переход на предыдущее поле $('.bar-login .act-login').click(); } }); // Обработка ввода в поля номеров телефона при логине $('.bar-login .phone-digit').bind("change keyup", function() { if (!$(this).is(":focus")) { return; } if(z_digitNoAction) { return; } let str; let last_char_ind; // Ввод только цифры в номер телефона при логине str = this.value; if (str.match(/[^0-9]/g)) { str = str.replace(/[^0-9]/g, ''); } if (str.length > 1) { last_char_ind = str.length - 1; str = str[last_char_ind]; } this.value = str; // Переход на следующее поле if (str.length == 1){ if ( $(this).hasClass('i-user_digit1') ) { $('.bar-login-password .i-user_digit2').val('').focus(); } if ( $(this).hasClass('i-user_digit2') ) { $('.bar-login-password .i-user_digit3').val('').focus(); } if ( $(this).hasClass('i-user_digit3') ) { $('.bar-login-password .i-user_digit4').val('').focus(); } if ( $(this).hasClass('i-user_digit4') ) { $('.bar-login-password .i-user_digit5').val('').focus(); } if ( $(this).hasClass('i-user_digit5') ) { $('.bar-login-password .i-user_digit6').val('').focus(); } if ( $(this).hasClass('i-user_digit6') ) { $('.bar-login-password .i-user_digit7').val('').focus(); } if ( $(this).hasClass('i-user_digit7') ) { $('.bar-login-password .i-user_digit8').val('').focus(); } if ( $(this).hasClass('i-user_digit8') ) { $('.bar-login-password .i-user_digit9').val('').focus(); } if ( $(this).hasClass('i-user_digit9') ) { $('.bar-login-password .i-user_digit10').val('').focus(); } if ( $(this).hasClass('i-user_digit10') ) { $('.bar-login-password .i-password').val('').focus(); } } }); // Очистить поля ввода цифр Телефона, Телефона-Логина и Пароля function clearLoginForm(){ for (let i = 1; i < 11; i++) { $('.bar-login .bar-login-password .i-user_digit' + i).val(''); } $('.bar-login .i-user_key').val(''); $('.bar-login .i-password').val(''); $('.bar-login .i-login_code').val(''); // Фокусируем switch ( $('.bar-login .d-mode').val() ){ case 'PHONE_DIGIT': $('.bar-login-password .i-user_digit1').focus(); break; case 'USER_KEY': $('.bar-login-password .i-user_key').focus(); break; } } // Очистить поля ввода цифр Телефона, Телефона-Логина и Пароля $('.bar-login .act-clear-phone-digit').click(function(){ clearLoginForm(); }); // Переключиться на поле ввода Телефона-Логина $('.bar-login .act-switch-to-user_key').click(function(){ adjustLoginForm('USER_KEY'); }); // Переключиться на поле ввода Цифры телефона $('.bar-login .act-switch-to-phone_digit').click(function(){ adjustLoginForm('PHONE_DIGIT'); }); // Авторизация в "Бригадирку в офисе" успешно завершена function completeLogin(data){ // Сохраняем в локальном хранилище // ID партнёра sessionStorage['partner_id'] = data.partner_id; switch ($('.bar-login .d-mode').val()){ case 'PHONE_DIGIT': // Номер телефона от последнего успешного входа let z_last_success_phone = getPhoneFromDigits(); localStorage['last_success_phone'] = z_last_success_phone; break; case 'USER_KEY': localStorage['last_success_phone'] = ''; break; } // Отображаем параметры партнера и пользователя $('.bar-user .date_today').html(data.today_str).css('color', data.today_color); $('.bar-user .partner_name').html(data.partner_name); $('.bar-user .actor_title').html(data.actor_title); $('.bar-user .actor_name').html(data.actor_name); // Аватар $('.bar-user .avatar-div').hide(); $('.bar-user .avatar-img').hide(); if (data.actor_avatar != ''){ $('.bar-user .avatar-img').attr( 'src', work_base_url + '/data/actor/' + data.partner_id + '/' + data.actor_avatar + '?' + Math.random() ).show(); } else { $('.bar-user .avatar-div').show() } // Скрываем объявление $('.bar-login .login-adv').hide(); // Отображаем галерею $('.bar-login .bar-login_code').hide(); $('.bar-login .bar-login-password').hide(); $('.bar-login .response').html('').hide(); $('.bar-input-login').hide(); $('.trademark-slogan').hide(); loadNextArtwork(); $('body').trigger('mousemove'); // генерируем ложное событие, для запуска скрипта } function getPhoneFromDigits(){ let z_phone = '+7'; for (let i = 1; i < 11; i++) { z_phone = z_phone + $('.bar-login-password .i-user_digit' + i).val(); } return z_phone; } function adjustLoginForm(v_mode){ switch (v_mode) { case 'PHONE_DIGIT': $('.bar-login .bar-login-password').show(); $('.bar-login .bar-phone-digit').show(); $('.bar-login .bar-user_key').hide(); $('.bar-login .bar-login_code').hide(); // Пытаемся предзаполнить поле из локального хранилища браузера let z_last_success_phone = localStorage['last_success_phone']; z_digitNoAction = true; if (z_last_success_phone != '') { $('.phone-digit.i-user_digit1').val(z_last_success_phone[2]); $('.phone-digit.i-user_digit2').val(z_last_success_phone[3]); $('.phone-digit.i-user_digit3').val(z_last_success_phone[4]); $('.phone-digit.i-user_digit4').val(z_last_success_phone[5]); $('.phone-digit.i-user_digit5').val(z_last_success_phone[6]); $('.phone-digit.i-user_digit6').val(z_last_success_phone[7]); $('.phone-digit.i-user_digit7').val(z_last_success_phone[8]); $('.phone-digit.i-user_digit8').val(z_last_success_phone[9]); $('.phone-digit.i-user_digit9').val(z_last_success_phone[10]); $('.phone-digit.i-user_digit10').val(z_last_success_phone[11]); $('.bar-login-password .i-password').focus(); } else { // Очищаем форму clearLoginForm(); $('.bar-login .i-user_digit1').focus(); } z_digitNoAction = false; break; case 'USER_KEY': $('.bar-login .bar-login-password').show(); $('.bar-login .bar-phone-digit').hide(); $('.bar-login .bar-user_key').show(); $('.bar-login .bar-login_code').hide(); let z_user_key = getPhoneFromDigits(); z_user_key = (z_user_key == '+7')? '' : z_user_key; // Очищаем форму clearLoginForm(); $('.bar-login .i-user_key').val( z_user_key ).focus(); break; case 'LOGIN_CODE': $('.bar-login .bar-login-password').hide(); $('.bar-login .bar-phone-digit').hide(); $('.bar-login .bar-user_key').hide(); $('.bar-login .bar-login_code').show(); // Очищаем форму clearLoginForm(); $('.bar-login .i-login_code').focus(); break; } // Значения режима формы $('.bar-login .d-mode').val(v_mode); } // Нажатие кнопки "Вход" во вкладке Бригадирка в офисе $('.bar-login div[data-tab="web-office"] .act-login').click(function(){ if ( !$(this).is(":visible") ) { return; } $('.loader').show(); $('.bar-login .response').html('').hide(); $('.bar-user').hide(); // Ключ аккаунта (телефон, логин) let z_user_key; switch ( $('.bar-login .d-mode').val() ){ case 'PHONE_DIGIT': z_user_key = getPhoneFromDigits(); break; case 'USER_KEY': z_user_key = $('.bar-login-password .i-user_key').val(); break; } $.ajax({ url: base_url + '/handler/login/do-login.php', type: "POST", data: { user_key: z_user_key, password: $('.bar-login .i-password').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); $('.bar-login .response').html('').hide(); var data = $.parseJSON(json); if ( parseInt(data.result) < 0) { // Ошибка $('.bar-login .response').attr('data-type', 'res-error'); $('.bar-login .response').html(data.message).show(); } else if (data.result == 11) { // Выслан СМС, подготовить форму под прием кода доступа $('.bar-login .response').attr('data-type', 'res-ok'); $('.bar-login .response').html(data.message).show(); adjustLoginForm('LOGIN_CODE'); } else { // Авторизация успешно завершена completeLogin(data); } } }); }); // Нажатие кнопки Продолжить в Художественной Галерее (завершить вход в систему) $('.bar-user .act-complete-login').click(function(){ window.location = base_url + '/?site=system'; }); // Нажатие Логотипа Бригадирки $('.bar-login .trademark-name, .bar-login .act-close-login').click(function(){ document.location.href = base_url; }); // Нажатие кнопки выслать Код доступа $('.bar-login div[data-tab="web-office"] .act-put-login_code').click(function(){ $('.loader').show(); $('.bar-login .response').html('').hide(); $.ajax({ url: base_url + '/handler/login/check-login_code.php', type: "POST", data: { login_code: $('.bar-login .i-login_code').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url;} }, success: function(json){ $('.loader').hide(); data = $.parseJSON(json); if ( parseInt(data.result) < 0 ) { // Ошибка $('.bar-login .response').html(data.message).attr('data-type', 'res-error').show(); } else if (data.result == 12) { // Авторизация успешно завершена completeLogin(data); } } }); }); /* // Нажатие кнопки выслать Дополнительный Логин $('.bar-login div[data-tab="web-office"] .act-put-login_add').click(function(){ $('.loader').show(); $('.bar-login .response').html('').hide(); $.ajax({ url: base_url + '/handler/login/check-login_add.php', type: "POST", data: { login_add: $('.bar-login .i-login_add').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url;} }, success: function(json){ $('.loader').hide(); data = $.parseJSON(json); if ( parseInt(data.result) < 0 ) { // Ошибка $('.bar-login .response').html(data.message).attr('data-type', 'res-error').show(); } else if (data.result == 12) { $('.bar-login .bar-login_code').hide(); $('.bar-login .response').html('').hide(); // Авторизация завершена, переход в рабочий режим window.location = data.location; } } }); }); */ // ЛИЧНЫЙ КАБИНЕТ /* function showLoginForm(){ if ( !$('form').is('.form-login') ) return; $('.lk .i-login-phone_customer').val(''); } */ // Нажатие кнопки "Вход" во вкладке Личный кабинет клиента $('.bar-login div[data-tab="web-lk"] .act-login').click(function(){ if ( !$(this).is(":visible") ) { return; } do_login( 'phone_agreement', $('.bar-login .i-login-agreement_num').val(), $('.bar-login .i-login-phone_customer').val() ); }); // Авторизация в Личном кабинете клиента function do_login( v_action, v_agreement_num, v_phone_customer ){ $('.bar-login .response').html('').attr('data-type', '').hide(); $.ajax({ url: base_url + '/lk/handler/do-login.php', cache: false, type: "POST", data: { // здесь session_id - не нужен! т.к. выполняется новая авторизация action: v_action, agreement_num: v_agreement_num, phone_customer: v_phone_customer }, statusCode: { 401: function() { loadLK();} }, success: function(json){ var data = $.parseJSON(json); if (data.result < 0) { // Ошибка авторизации sessionStorage.setItem('lk_brigadirka_session_id', ''); $('.bar-login .response').html(data.message).attr('data-type', 'res-error').show(); switch (data.result){ case -1: $('.bar-login .i-login-phone_customer').focus(); break; case -2: $('.bar-login .i-login-agreement_num').focus(); break; } } else { // Авторизация успешная sessionStorage['partner_id'] = data.partner_id; sessionStorage['lk_brigadirka_session_id'] = data.session_id; sessionStorage['lk_brigadirka_task_id'] = data.task_id; $('.bar-login .response').html('').hide(); // Сохраняем в локальном хранилище номер телефона от последнего успешного входа // !!!!!!!!!!!!!! ЛК клиента ЛК клиента ЛК клиента ЛК клиента ЛК клиента ЛК клиента // !!!!!!!!!!!!!! ЛК клиента ЛК клиента ЛК клиента ЛК клиента ЛК клиента ЛК клиента // !!!!!!!!!!!!!! ЛК клиента ЛК клиента ЛК клиента ЛК клиента ЛК клиента ЛК клиента // Авторизация завершена, переход в рабочий режим window.location = data.location; loadLK(); } } }); } // Действие по входе // Красное объявление showAds('login'); $('.loader').center(); // Фокусируем форму входа if ( $('div').is('.bar-login') ) { $('.bar-welcome').hide(); $('.loader').hide(); // Нажатие на вкладку "Бригадирка в офисе" $('.bar-login div[data-tab="web-office"]').click(); adjustLoginForm('PHONE_DIGIT'); // Проверка наличия в урле параметра lk и переход на вкладку ЛК при наличии var url_string = window.location.href; var url = new URL(url_string); var url_search = url.search; if (url_search.indexOf('lk') != -1) { // Переключить вкладку на Личный кабинет var tab = $('.bar-login .tab[data-tab="web-lk"]'); tab.click(); }; // Фокус вызывается внутри adjustLoginForm('PHONE_DIGIT') // $('.bar-login .i-user_digit10').click(); // $('.bar-login .i-user_digit1').focus(); }; // Выход function logOut(){ console.log('Logout...'); $.ajax({ url: base_url + '/handler/login/logout.php', type: "POST", cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(){ sessionStorage.removeItem('partner_id'); window.location = '/'; } }); } // Нажатие кнопки "Выход" $('.act-logout').click(function(){ logOut(); }); // Выход по неактивности let idleTimer = null; let counterTimer = null; let isIdle = false; // состояние простоя let idleWarning = 1000 * 60 * 10; // время ожидания, 10 мин // Исключение: для p15 делаем время ожидания 2 часа, а не 10 мин if ( sessionStorage['partner_id'] == 15 ) { idleWarning = 1000 * 60 * 60 * 2; // время ожидания, 2 часа } let idleCountdown = 30; // время обратного отсчёта, сек let counter = idleCountdown; $(document).bind('mousemove keydown scroll', function(){ if ( !(sessionStorage['partner_id'] > 0) ) { return; } if ( isIdle ) { // Действия на возвращение пользователя $('.logout-form').hide(); isIdle = false; } clearTimeout(idleTimer); clearInterval(counterTimer); counter = idleCountdown; idleTimer = setTimeout(function(){ // Действия на отсутствие пользователя isIdle = true; $('.logout-form .response') .html('Чтобы продолжить работу,
просто подвиньте мышь') .css('font-size', '16px') .css('color', 'green'); $('.logout-form .counter').html(counter); $('.logout-form').show().center(); counter = idleCountdown; // Обратный отчёт по 1 сек counterTimer = setInterval(function(){ counter--; $('.logout-form .counter').html(counter); console.log('counter=' + counter + ', isIdle=' + isIdle); // Выход if (counter == 0){ $('.logout-form .response') .html('Всё, выхожу!..') .css('font-size', '22px') .css('color', 'red'); clearInterval(counterTimer); logOut(); } }, 1000); }, idleWarning); }); $('body').trigger('mousemove'); // генерируем ложное событие, для запуска скрипта // Показать страницу списка партнёров function showPartnerList(){ $('.loader').show(); $('.page-partner-list .partner-list').css('opacity', '0.5'); $.ajax({ url: base_url + '/handler/partner/get-partner-list.php', cache: false, type: "POST", data: { // type: 'task', page_num: localStorage['partner_page_num'], partner_status: localStorage['partner_status'], scope: localStorage['partner_scope'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-partner-list .partner-list').css('opacity', '1.0'); $('.page-partner-list .partner-list').html( data ); // Наведение на строку $('.page-partner-list .partner-list .partner-row').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Клик на строку: Активировать строку $('.page-partner-list .partner-row').click(function(){ $('.page-partner-list .partner-row').removeClass('selected'); $(this).addClass('selected'); }); // Двойной клик на строку: Редактировать партнёра $('.page-partner-list .partner-row').dblclick(function(){ $(this).click(); $(this).find('.act-edit-partner').click(); }); $('.page-partner-list .act-edit-partner').click(function(){ let v_partner_id = $(this).parents('.partner-row').first().attr('data-partner_id'); // console.log(v_partner_id); showPartnerForm( v_partner_id ); }); // Кликнуть по Должники партнёры $('.page-partner-list .act-show-scope-debt').click(function(){ localStorage['partner_scope'] = 'DEBT'; showPartnerList(); }); // Кликнуть по Все партнёры $('.page-partner-list .act-show-scope-all').click(function(){ localStorage['partner_scope'] = 'ALL'; showPartnerList(); }); // Останов-запуск всех сервисов партнёра $('.act-put-partner-service').click(function(){ let v_partner_id = $(this).parents('.partner-row').first().attr('data-partner_id'); $('.loader').show(); $.ajax({ url: base_url + '/handler/partner/put-partner-service-status.php', cache: false, type: "POST", data: { partner_id: v_partner_id, status: $(this).attr('data-status') }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); showPartnerList(); } }); }); // Показать полный всех сотрудников партнёра $('.act-show-actor-list-total').click(function(){ $(this).parent().css('display', 'none'); $(this).parent().parent().find('.actor-list-total').css('display', 'flex');; }); // Выбор страницы в пагинаторе $('.page-partner-list .paginator i').click(function(){ localStorage['partner_page_num'] = $(this).html(); showPartnerList(); }); // Нажатие на кнопу выбора статуса $('.page-partner-list .select-status').click(function(){ localStorage['partner_status'] = $(this).attr('data-status'); showPartnerList(); }); } }); } // Обновить страницу $('.page-partner-list .act-reload-partner-page').click(function(){ showPartnerList(); }); // Показать ЛК партнёра $('.partner-form .act-show-partner-lk').click(function(){ let z_partner_id = $(this).closest('.partner-form').children('.d-partner_id').val(); showPartnerLK(z_partner_id); }); // Показать ЛК партнёра function showPartnerLK(v_partner_id){ let z_user_key = '+7903'; let z_password = '' + v_partner_id; window.open('https://brigadirka.ru/?site=login', '_blank'); /* $('.loader').show(); $.ajax({ url: 'https://brigadirka.ru/handler/login/do-login.php?126', type: "GET", dataType: 'json', data: { user_key: z_user_key, password: z_password }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); if (data.result == 10) { window.open('https://brigadirka.ru/?site=system', '_blank'); } } }); */ } // ---------------------------------------------------------------------------------------------- // Переходим в разде Настройки (Партнёр, Компания) $('.act-show-settings-page-partner-tab').click(function(){ showPage('settings'); $('.page-settings .tabs-settings .tab[data-tab="partner"]').click(); }); // Форма партнёра: активируем выбранный пункт меню $('.partner-form .tab').click(function(){ let v_tab = $(this).attr('data-tab'); showPartnerFormTab(v_tab, false); }); // Активация таба и его карточки для редактора сметы function showPartnerFormTab(v_tab, v_refresh){ // $('.partner-form .response').html(''); // Активируем выбранный пункт меню $('.partner-form .tab').removeClass('on'); $('.partner-form .tab[data-tab="' + v_tab + '"]').addClass('on'); // Активируем карточку выбранного таба $('.partner-form .tabcard').hide(); $('.partner-form .tabcard[data-tab="' + v_tab + '"]').show(); // console.log('showSmetaEditorTab v_tab=' + v_tab); switch (v_tab){ // Основное case 'summary': // $('.partner-form .smeta_descr-elements').show(); // $('.partner-form .act-show-smeta_descr').hide(); break; // Полюдье case 'poludie': // let v_smeta_id = $('.partner-form .d-smeta_id').val(); // if (v_refresh) { showItem2SmetaList( v_smeta_id ); } // localStorage.removeItem('search_catalog_keywords'); break; } $('.partner-form').center(); } // Форма Партнера: Сохранить партнёра $('.partner-form .act-put-partner').click(function(){ $('.loader').show(); $('.partner-form .response').html('').hide(); let v_partner_id = $(this).parents('.partner-form').first().find('.d-partner_id').val(); //console.log('partner_todolist = ' + $('.partner-form .i-partner_todolist').val() ); $.ajax({ url: base_url + '/handler/partner/put-partner.php', type: "POST", dataType: 'json', data: { action: 'edit', partner_id: v_partner_id, todolist: $('.partner-form .i-partner_todolist').val(), status: $('.partner-form .act-change-status').html() // Текущее состояние статуса в форме }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); // console.log('data.result=' + data.result); if (data.result < 0) { // Обработка ошибок при сохранении партнёра /* $('.store-form .response').html(data.message).attr('data-type', 'res-error').show(); switch (data.result){ case -1: // Введите название партнёра $('.page-settings .i-partner_name').css('background-color', 'red').animate({ backgroundColor: "white" }, 900 ); break; } */ } else { // Успешное сохранение партнёра $('.partner-form .response').html('Сохранено').attr('data-type', 'res-ok').show(); $('.page-partner-list .act-reload-partner-page').click(); } } }); }); // Показать форму Партнёра function showPartnerForm( v_partner_id ) { $('.partner-form .response').hide(); $('.partner-form .act-change-status').css('background-color', 'white').html(''); $('.partner-form .page-title').html(''); $('.partner-form .d-descr').html(''); $('.partner-form .d-amount-tariff').html('(не расчитано)'); $('.partner-form .d-remark-tariff').html(''); $('.partner-form .referal-list').html(''); $('.partner-form .d-amount-service').html('(не расчитано)'); $('.partner-form .d-remark-service').html(''); $('.partner-form .d-total_data_size') .html('') .attr('data-total_data_size_mb', ''); $('.partner-form .act-show-partner-lk').html('ЛК ' + v_partner_id); // Редактирование партнёра $('.loader').show(); $('.partner-form').css('opacity', '0.5'); // console.log('v_partner_id=' + v_partner_id); $.ajax({ url: base_url + '/handler/partner/get-partner.php', cache: false, type: "POST", dataType: 'json', data: { partner_id: v_partner_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ //$('.loader').hide(); $('.partner-form').css('opacity', '1.0'); // console.log(data); // console.log(data.partner.tariff_name); $('.partner-form .act-close-partner-form').show(); $('.partner-form .d-partner_id').val(data.partner.id); $('.partner-form .d-tariff_name').html(data.partner.tariff_name); $('.partner-form .d-tariff_date').html(data.partner.tariff_date_ddmmyyyy); $('.partner-form .d-actor_count').html(data.partner.actor_count); $('.partner-form .d-descr').html(data.partner.descr); $('.partner-form .i-partner_todolist').val(data.partner.todolist); $('.partner-form .d-total_data_size') .html(data.partner.total_data_size_formated) .attr('data-total_data_size_mb', data.partner.total_data_size_mb); let z_title = data.partner.id_vc3 + ' ' + data.partner.name; $('.partner-form .page-title').html(z_title); $('.partner-form .act-change-status').css('background-color', data.partner.status_color).html(data.partner.status); // Выбираем вкладку summary $('.partner-form .tab[data-tab="summary"]').click(); // Получаем список рефералов по партнёру $.ajax({ url: base_url + '/handler/referal/get-referal-list.php', cache: false, type: "POST", data: { mode: 'partner', partner_id: v_partner_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.partner-form .referal-list').html(data); $( '.partner-form' ).show().center(); $( '.partner-form .i-partner_todolist' ).focus(); } }); } }); } // Рассчитать новый тариф по актуальным показателям $('.partner-form .act-update-tariff').click(function(){ if (confirm('Будет расчитан и, возможно, изменён тариф. Продолжить?')) { let z_partner_id = $('.partner-form .d-partner_id').val(); // Редактирование партнёра $('.loader').show(); // console.log('v_partner_id=' + v_partner_id); $.ajax({ url: base_url + '/handler/account/update-tariff.php', cache: false, type: "POST", dataType: 'json', data: { partner_id: z_partner_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); // console.log(data); // console.log(data.partner.tariff_name); $('.partner-form .d-partner_id').val(data.partner.v_partner_id); $('.partner-form .d-tariff_name').html(data.partner.v_tariff_name); $('.partner-form .d-tariff_date').html(data.partner.v_tariff_date_ddmmyyyy); } }); } }); // Рассчитать начисления по тарифу $('.partner-form .act-calc-amount-tariff').click(function(){ if (confirm('Будет рассчитан и добавлен ежемесячный платёж по тарифу. Продолжить?')) { let z_partner_id = $('.partner-form .d-partner_id').val(); // Редактирование партнёра $('.loader').show(); // console.log('v_partner_id=' + v_partner_id); $('.partner-form .d-amount-tariff').html(''); $('.partner-form .d-remark-tariff').html(''); $.ajax({ url: base_url + '/handler/account/calc-amount-tariff.php', cache: false, type: "POST", dataType: 'json', data: { partner_id: z_partner_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); // console.log(data); // console.log(data.partner.tariff_name); $('.partner-form .d-amount-tariff').html(data.partner.v_amount_tariff + ' ₽'); $('.partner-form .d-remark-tariff').html(data.partner.v_remark_tariff); } }); } }); // Рассчитать начисления по сервисам $('.partner-form .act-calc-amount-service').click(function(){ if (confirm('Будет расчитан и добавлен ежемесячный платёж по тарифу. Продолжить?')) { let z_partner_id = $('.partner-form .d-partner_id').val(); let z_total_data_size_mb = $('.partner-form .d-total_data_size').attr('data-total_data_size_mb'); // Редактирование партнёра $('.loader').show(); // console.log('v_partner_id=' + v_partner_id); $('.partner-form .d-amount-service').html(''); $('.partner-form .d-remark-service').html(''); $.ajax({ url: base_url + '/handler/account/calc-amount-service.php', cache: false, type: "POST", dataType: 'json', data: { partner_id: z_partner_id, total_data_size_mb: z_total_data_size_mb }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); // console.log(data); // console.log(data.partner.tariff_name); $('.partner-form .d-amount-service').html(data.partner.v_amount_service + ' ₽'); $('.partner-form .d-remark-service').html(data.partner.v_remark_service); } }); } }); // Изменить статус партнёра $('.partner-form .act-change-status').click(function(){ let v_partner_id = $('.partner-form .d-partner_id').val(); $('.loader').show(); $.ajax({ url: base_url + '/handler/partner/put-partner.php', cache: false, type: "POST", dataType: 'json', data: { action: 'set_status', partner_id: v_partner_id, status: $(this).html() }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); // console.log(data); $('.partner-form .act-change-status').css('background-color', data.new_status_color).html(data.new_status); } }); }); // Закрыть форму партнёра $('.partner-form .act-close-partner-form').click(function(){ $('.partner-form').hide(); $('.partner-form .act-close-partner-form').hide(); });// Обновить список $('.page-task-list .act-refresh-task-list').click(function(){ showTaskList(); }); // Фильтр группировка: по дням $('.page-task-list .act-view-mode-day').click(function(){ localStorage['view_mode_date'] = 'VIEW_DAY'; reloadTaskPage(); }); // Фильтр группировка: по месяцам $('.page-task-list .act-view-mode-month').click(function(){ localStorage['view_mode_date'] = 'VIEW_MONTH'; reloadTaskPage(); }); // Фильтр статус этапа: в работе $('.page-task-list .act-view-stage-inwork').click(function(){ localStorage['view_stage_status'] = 'VIEW_STAGE_INWORK'; localStorage['filter_task_finish'] = 0; reloadTaskPage(); }); // Фильтр статус этапа: сделано $('.page-task-list .act-view-stage-done').click(function(){ localStorage['view_stage_status'] = 'VIEW_STAGE_DONE'; localStorage['filter_task_finish'] = 1; reloadTaskPage(); }); function reloadTaskPage() { // Настройка отображения фильтра месяц / день $('.page-task-list .act-view-mode-month, .page-task-list .act-view-mode-day').removeClass('active').css('color', '#5590cc'); switch ( localStorage['view_mode_date'] ){ case 'VIEW_DAY': $('.page-task-list .act-view-mode-day').addClass('active').css('color', 'red'); break; case 'VIEW_MONTH': $('.page-task-list .act-view-mode-month').addClass('active').css('color', 'red'); break; } // Настройка отображения статуса этапа: в работе / сделано $('.page-task-list .act-view-stage-inwork, .page-task-list .act-view-stage-done').removeClass('active').css('color', '#5590cc'); switch ( localStorage['view_stage_status'] ){ case 'VIEW_STAGE_INWORK': $('.page-task-list .act-view-stage-inwork').addClass('active').css('color', 'red'); break; case 'VIEW_STAGE_DONE': $('.page-task-list .act-view-stage-done').addClass('active').css('color', 'red'); break; } // Настройка фильтра Заявка-Заказа-Все $('.page-task-list .i-filter-task-mode').val( localStorage['filter_task_mode'] ); // Настройка фильтра Архив $('.page-task-list .i-filter-task-archive').val( localStorage['filter_task_archive'] ); // Настройка фильтра ТМ $('.page-task-list .i-filter-trademark').val( localStorage['filter_trademark'] ); // Настройка фильтра Источника $('.page-task-list .i-filter-source').val( localStorage['filter_source'] ); // Настройка фильтра Договор подписан $('.page-task-list .i-filter-is_agreement_signed').val( localStorage['filter_is_agreement_signed'] ); /* // Настройка отображения выбора селектора завершения $('.page-task-list .i-select-task-finish').val( localStorage['filter_task_finish'] ); */ // Загружаем список showTaskList(); } // Свайп горизонтального меню списка этапов для смартфонов $('.stage-container').swipe( { swipeStatus:function(event, phase, direction, distance, duration, fingerCount, fingerData, currentDirection) { if (phase=="start"){ // сработает в начале swipe } if (phase=="end"){ //сработает через 20 пикселей то число которое выбрали в threshold if (direction == 'left') { console.log('ВЛЕВО ' + distance); $('.page-task-list .stage-container').animate({ left: '-=250px', // смещение позиционированного элемента }, 'linear'); // скорость анимации } if (direction == 'right') { console.log('ВПРАВО ' + distance); $('.page-task-list .stage-container').animate({ left: '+=250px', // смещение позиционированного элемента }, 'linear'); // скорость анимации } } }, triggerOnTouchEnd:false, threshold:20 // сработает через 20 пикселей }); // Свайп горизонтального меню вкладок карточки заказа $('.task-menu-container').swipe( { swipeStatus:function(event, phase, direction, distance, duration, fingerCount, fingerData, currentDirection) { if (phase=="start"){ // сработает в начале swipe } if (phase=="end"){ //сработает через 20 пикселей то число которое выбрали в threshold if (direction == 'left') { console.log('ВЛЕВО ' + distance); $('.page-task-form .task-menu-container').animate({ left: '-=300px', // смещение позиционированного элемента }, 'linear'); // скорость анимации } if (direction == 'right') { console.log('ВПРАВО ' + distance); $('.page-task-form .task-menu-container').animate({ left: '+=300px', // смещение позиционированного элемента }, 'linear'); // скорость анимации } } }, triggerOnTouchEnd:false, threshold:20 // сработает через 20 пикселей }); // Выбор этапа и подгрузка списка заказов по нему $('.page-task-list .bigtabs-stages .bigtab').click(function(){ clickStageTab( $(this) ); toggleTaskHeader(localStorage['task_header_state']); }); // Показать фильтр $('.page-task-list .act-show-task-filter').click(function(){ localStorage['view_task_filter'] = 1; $('.page-task-list .bar-view-control').hide(); $('.page-task-list .bar-filter').show(); adjustTaskListHeight(); }); // Показать вкладки слева $('.page-task-list .act-slide-stages-left').click(function(){ $('.page-task-list .stage-container').animate({ left: '+=100px', // смещение позиционированного элемента }, 'linear'); // скорость анимации }); // Показать вкладки справа $('.page-task-list .act-slide-stages-right').click(function(){ $('.page-task-list .stage-container').animate({ left: '-=100px', // смещение позиционированного элемента }, 'linear'); // скорость анимации }); // Нажатие на кнопку - Добавить заявку $('.act-add-task').click(function(){ showAddTaskForm(); }); // Форма - Добавить новую заявку function showAddTaskForm(){ /* 07.11.2023 YM вызывает ошибку, не может найти, отключил // YM ym(74673553,'reachGoal','showAddTaskForm();'); */ // console.log('showAddTaskForm'); // Активируем этап ЗАЯВКИ localStorage['work_stage_alias'] = 'PRE'; localStorage['work_stage_id'] = localStorage['stage_pre_id']; localStorage['work_stage_name'] = localStorage['stage_pre_name']; localStorage['view_mode'] = 'request'; toggleTaskHeader('close'); showTaskForm(null, 'main'); $('.page-task-form .d-tab-request-info').html(''); $('.page-task-form .bar-request-data').hide(); event.stopPropagation(); } function adjustTaskListPage(){ // Загрузка списка сотрудников и их групп $('.page-task-list .bar-filter .agroup-actor-selector').load( '/handler/get-agroup-actor-selector.php', function(){ $('.page-task-list .i-filter-agroup_actor_id').change(function(){ localStorage['task_page_num'] = 1; showTaskList(); }); }); } // Показать этап заказа. Процедура только для заказов function clickStageTab(tab){ $('.page-task-list .bigtabs-stages .bigtab, .page-task-form .bigtabs-stages .bigtab').removeClass('on'); tab.addClass('on'); // Пагинатор списка заказов устанавливаем на 1 страницу localStorage['task_page_num'] = 1; localStorage['work_stage_id'] = tab.attr('data-stage_id'); localStorage['work_stage_alias'] = tab.attr('data-stage_alias'); localStorage['work_stage_name'] = tab.html(); $('.bar-stage-tips div[data-stage-tip]').hide(); // $('.page-task-list .act-add-task').hide(); $('.page-task-list .bar-search-task').hide(); switch ( localStorage['work_stage_alias'] ){ case 'SEARCH': localStorage['view_mode'] = 'last'; // В Поиске ставим по умолчанию этот алиас localStorage['task_sort_param'] = 'agreement_date'; $('.page-task-list .bar-select-task-finish').hide(); localStorage['filter_task_finish'] = ''; localStorage['filter_task_archive'] = ''; $('.page-task-list .i-search-task').val( localStorage['search_task_keywords'] ); var tab_name = 'ПОИСК'; $('.bar-stage-tips div[data-stage-tip="search"]').show(); $('.page-task-list .bar-search-task').show(); // Фокусируем поисковую строку $('.page-task-list .i-search-task').focus(); break; case 'FAVORITE': localStorage['view_mode'] = 'favorite'; localStorage['task_sort_param'] = 'agreement_date'; $('.page-task-list .bar-select-task-finish').hide(); localStorage['filter_task_finish'] = ''; localStorage['filter_task_archive'] = ''; var tab_name = 'ИЗБРАННЫЕ'; //$('.page-task-list .bar-stage-tips div[data-stage-tip="favorite"]').show(); break; case 'PRE': localStorage['view_mode'] = 'request'; localStorage['task_sort_param'] = 'stage_wdate'; $('.page-task-list .bar-select-task-finish').show(); var tab_name = 'ЗАЯВКИ'; $('.page-task-list .bar-stage-tips div[data-stage-tip="request"]').show(); // $('.page-task-list .act-add-task').show(); break; case 'PAUSE': localStorage['view_mode'] = 'pause'; localStorage['task_sort_param'] = 'pause_date'; $('.page-task-list .bar-select-task-finish').hide(); localStorage['filter_task_finish'] = ''; localStorage['filter_task_archive'] = ''; var tab_name = 'ОТЛОЖЕНО'; $('.page-task-list .bar-stage-tips div[data-stage-tip="pause"]').show(); break; case 'CANCEL': localStorage['view_mode'] = 'cancel'; localStorage['task_sort_param'] = 'cancel_date'; $('.page-task-list .bar-select-task-finish').hide(); localStorage['filter_task_finish'] = ''; localStorage['filter_task_archive'] = ''; var tab_name = 'ОТМЕНА'; $('.page-task-list .bar-stage-tips div[data-stage-tip="cancel"]').show(); break; case 'ARCHIVE': localStorage['view_mode'] = 'archive'; localStorage['task_sort_param'] = 'archive_date'; $('.page-task-list .bar-select-task-finish').hide(); localStorage['filter_task_finish'] = ''; localStorage['filter_task_archive'] = '1'; var tab_name = 'АРХИВ'; $('.page-task-list .bar-stage-tips div[data-stage-tip="archive"]').show(); break; default: localStorage['view_mode'] = 'task'; localStorage['task_sort_param'] = 'stage_wdate'; localStorage['filter_task_archive'] = '0'; $('.page-task-list .bar-select-task-finish').show(); var tab_name = ''; if ( localStorage['work_stage_alias'] == 'NEW' ) { tab_name = tab_name + ' НОВЫЕ'; } else { var stage_name = (localStorage['work_stage_name'].length > 0 && localStorage['work_stage_name'] != "undefined" )? ' ' + localStorage['work_stage_name'] : ''; // console.log('stage_name='+ stage_name); // console.log('tab_name='+ tab_name); tab_name = tab_name + stage_name; } $('.page-task-list .bar-stage-tips div[data-stage-tip="task"]').show(); break; } $('.page-task-list .page-title').html( tab_name ); // Обновляем список заказов reloadTaskPage(); } // Показать объект в Яндексе $('.page-task-form .act-show-yandex-object-point').click(function(evt){ var z_object_address = $('.page-task-form .i-object_address').val(); if ( z_object_address == '' ) { alert('Для отображения на карте укажите полный Адрес объекта!'); return; } showYandexPoint(evt, z_object_address); }); // Расщепить координаты, введенные одной строкой "Широта, Долгота" в поле "Широта" $('.page-task-form .act-split-coord').click(function() { var coord_str = $('.page-task-form .i-object_lat').val(); var arr = coord_str.split(','); var z_object_lat = arr[0].trim(); var z_object_lng = arr[1].trim(); //console.log(z_object_lat); //console.log(z_object_lng); $('.page-task-form .i-object_lat').val(z_object_lat); $('.page-task-form .i-object_lng').val(z_object_lng); }); // Показать объект в Яндексе function showYandexPoint(evt, z_address){ var z_href = 'https://yandex.ru/maps/?text=' + z_address + '&l=map'; evt.preventDefault(); window.open(z_href, '_blank'); } /* // Выбор в селекте фильтра завершения этапов у заказов $('.page-task-list .i-select-task-finish').change(function(){ localStorage['filter_task_finish'] = $('.page-task-list .i-select-task-finish option:selected').attr('value'); localStorage['task_page_num'] = 1; showTaskList(); }); */ // Выбор в селекте фильтра завершения этапов у заказов $('.page-task-list .i-filter-task-mode').change(function(){ localStorage['filter_task_mode'] = $('.page-task-list .i-filter-task-mode option:selected').attr('value'); localStorage['task_page_num'] = 1; showTaskList(); }); // Выбор в селекте фильтра завершения этапов у заказов $('.page-task-list .i-filter-task-archive').change(function(){ localStorage['filter_task_archive'] = $('.page-task-list .i-filter-task-archive option:selected').attr('value'); localStorage['task_page_num'] = 1; showTaskList(); }); // Выбор в селекте фильтра Источник $('.page-task-list .i-filter-source').change(function(){ localStorage['filter_source'] = $('.page-task-list .i-filter-source option:selected').attr('value'); localStorage['task_page_num'] = 1; showTaskList(); }); // Выбор в селекте фильтра Договор подписан $('.page-task-list .i-filter-is_agreement_signed').change(function(){ localStorage['filter_is_agreement_signed'] = $('.page-task-list .i-filter-is_agreement_signed option:selected').attr('value'); localStorage['task_page_num'] = 1; showTaskList(); }); // Выбор в селекте фильтра ТМ $('.page-task-list .i-filter-trademark').change(function(){ localStorage['filter_trademark'] = $('.page-task-list .i-filter-trademark option:selected').attr('value'); localStorage['task_page_num'] = 1; showTaskList(); }); // Нажать кнопку Поиск в списке заказов $('.page-task-list .act-search-tasks').click(function(){ localStorage['search_task_keywords'] = $('.page-task-list .i-search-task').val(); reloadTaskPage(); }); // Настройка высоты СПИСКА ЗАКАЗОВ function adjustTaskListHeight(){ var div_stages_height = $('.page-task-list .bar-stages').css('height'); var div_title_height = $('.page-task-list .bar-title').css('height'); // var div_view_control_height = ( $('.page-task-list .bar-view-control').is(":visible") )? $('.page-task-list .bar-view-control').css('height') : '0px'; var div_filter_height = ( $('.page-task-list .bar-filter').is(":visible") )? $('.page-task-list .bar-filter').css('height') : '0px'; var div_search_height = ( $('.page-task-list .bar-search-task').is(":visible") )? $('.page-task-list .bar-search-task').css('height') : '0px'; var summa = ' - ' + div_stages_height + ' - ' + div_title_height + //' - ' + div_view_control_height + ' - ' + div_filter_height + ' - ' + div_search_height; $('.page-task-list .bar-body').css( 'height', 'calc(100%' + summa + ')' ); } // Настройка высоты ЗАКАЗА function adjustTaskFormHeight() { var div_agreement_height = $('.page-task-form .bar-header .bar-task_agreement').parent().css('height'); div_agreement_height = ( $('.page-task-form .bar-header .bar-task_agreement').is(':visible') )? div_agreement_height : '0px'; // console.log('div_agreement_height=' + div_agreement_height); var div_task_info_height = $('.page-task-form .bar-header.bar-task_info').css('height'); div_task_info_height = ( $('.page-task-form .bar-header.bar-task_info').is(':visible') )? div_task_info_height : '0px'; // console.log('div_task_info_height=' + div_task_info_height); var div_finstat_height = $('.page-task-form .bar-header.bar-finance-summary').css('height'); div_finstat_height = ( $('.page-task-form .bar-header.bar-finance-summary').is(':visible') )? div_finstat_height : '0px'; // console.log('div_finstat_height=' + div_finstat_height); var div_task_descr_height = $('.page-task-form .bar-header.bar-task_descr').css('height'); div_task_descr_height = ( $('.page-task-form .bar-header.bar-task_descr').is(':visible') )? div_task_descr_height : '0px'; // console.log('div_task_descr_height=' + div_task_descr_height); var div_task_tabs_height = $('.page-task-form .bar-header.tabs').css('height'); div_task_tabs_height = ( $('.page-task-form .bar-header.tabs').is(':visible') )? div_task_tabs_height : '0px'; // console.log('div_task_tabs_height=' + div_task_tabs_height); // console.log( 'summa = ' + summa ); var summa = ' - ' + div_agreement_height + ' - ' + div_finstat_height + ' - ' + div_task_info_height + ' - ' + div_task_descr_height + ' - ' + div_task_tabs_height; // console.log( 'summa = ' + summa ); $('.page-task-form .bar-body').css( 'height', 'calc(100%' + summa + ' )' ); } function json2array(json){ var result = []; var keys = Object.keys(json); keys.forEach(function(key){ result.push(json[key]); }); return result; } // График списка заказов function showTaskListChart(){ // Отображаем бесхозные заказы showOwnerlessTaskList(); if ( localStorage['chart'] == 1 ){ var strJSON = $('.page-task-list .chart-json').html(); objJSON = JSON.parse(strJSON); var chart_arr = []; for (var idate in objJSON){ chart_arr.push([idate, objJSON[idate]]); } chart_arr.reverse(); var data = new google.visualization.DataTable(); data.addColumn('string', 'дата'); data.addColumn('number', 'Заказы'); data.addRows(chart_arr); var options = { title: '', vAxis: {title: 'Заказы, шт.'}, isStacked: true }; var chart = new google.visualization.SteppedAreaChart( document.getElementById('task-list-chart') ); chart.draw(data, options); } } // Список адресов объектов по их номеру $('.page-task-form .act-p55-search-address-by-object-num').click(function(){ showObjectAddressList( $('.page-task-form .i-object_num').val() ); }); // Список адресов объектов по их номеру function showObjectAddressList(v_object_num){ $('.page-task-form .address-list').html(''); // console.log('showObjectAddressList' + v_object_num); $('.loader').show(); $('.page-task-form .act-p55-add-new-task').hide(); $('.page-task-form .bar-object-address-list').html('').hide(); $('.page-task-form .bar-object-address').hide(); $('.page-task-form .i-object_address').val(''); $.ajax({ url: base_url + '/handler/task/get-object-address-list.php', cache: false, type: "POST", data: { object_num: v_object_num }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-task-form .bar-object-address-list').html(data).show(); // Клик на строку с адресом $('.page-task-form .act-select-object-address').click(function(){ address = $(this).html(); $('.page-task-form .bar-object-address').show(); $('.page-task-form .i-object_address').val(address).focus(); $('.page-task-form .act-p55-add-new-task').show(); }); // Клик на строку ввести новое значение $('.page-task-form .act-blank-object-address').click(function(){ let address = ''; $('.page-task-form .bar-object-address').show(); $('.page-task-form .i-object_address').val(address).focus(); $('.page-task-form .act-p55-add-new-task').show(); }); } }); } // Создать новый заказ для p055 заказ по номеру ОБ и его адресу $('.page-task-form .act-p55-add-new-task').click(function(){ let object_num = $('.page-task-form .bar-object-search .i-object_num').val(); let object_address = $('.page-task-form .bar-object-search .i-object_address').val(); if (object_address == ''){ alert('Введите адрес объекта!'); return; } addNewTask_p55( object_num, object_address ); }); // Создать новый заказ для p055 заказ по номеру ОБ и его адресу function addNewTask_p55( v_object_num, v_object_address ){ $('.loader').show(); $.ajax({ url: base_url + '/handler/task/put-task.php', cache: false, type: "POST", dataType: 'json', data: { 'action': 'add-p55', 'object_num': v_object_num, 'object_address': v_object_address }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); let z_task_id = data.task_id; // Отображаем форму заказа showTaskForm( z_task_id, 'main' ); } }); } // Список бесхозных заказов function showOwnerlessTaskList(){ $('.loader').show(); $('.page-task-list .ownerless-task-list').html('
Загрузка...
'); $.ajax({ url: base_url + '/handler/task/get-ownerless-task-list.php', cache: false, type: "POST", data: {}, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-task-list .ownerless-task-list').html(data); // Клик на строку бесхозного заказа $('.page-task-list .ownerless-task-list .task-row').click(function(){ if ( confirm('Назначить вас ответственным по заказу?') ){ // Запоминаем заказ var z_task_id = $(this).attr('data-task_id'); localStorage['work_task_id'] = z_task_id; // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-task-list .bar-body').scrollTop(); localStorage['work_task_scroll_top'] = z_scrollTop; // Запоминаем рабочий режим для корректного возврата потом localStorage['work_mode'] = 'task-list'; // Привязываем заказ bindOwnerlessTask(z_task_id); } }); } }); } // Список заказов function showTaskList(){ var v_view_mode = localStorage['view_mode']; var v_view_filter = localStorage['view_task_filter']; var v_stage_alias = $('.page-task-list .bigtabs-stages .bigtab.on').attr('data-stage_alias'); var v_stage_name = localStorage['work_stage_name']; var v_finish = localStorage['filter_task_finish']; var v_is_agreement_signed = localStorage['filter_is_agreement_signed']; var v_actor_id = $('.page-task-list .bar-filter .i-filter-agroup_actor_id option:selected').attr('data-actor_id'); var v_agroup_id = $('.page-task-list .bar-filter .i-filter-agroup_actor_id option:selected').attr('data-agroup_id'); var v_category_id = $('.page-task-list .bar-filter .category_id .d-category_id').val(); var v_photo = $('.page-task-list .bar-filter .i-filter-photo').val(); var v_attach = $('.page-task-list .bar-filter .i-filter-attach').val(); var v_date_period = $('.page-task-list .bar-filter .d-filter-agreement_date').attr('data-period'); switch ( v_view_mode ) { case 'search': var v_stage_id = null; var v_keywords = localStorage['search_task_keywords']; break; default: var v_stage_id = localStorage['work_stage_id']; var v_keywords = null; break; } // Показ фильтра с параметрами if ( v_view_filter == 1 ){ $('.page-task-list .bar-filter').show(); } else { $('.page-task-list .bar-filter').hide(); } // График по настройкам if ( localStorage['chart'] == 1 ){ $('.task-list-chart').show(); } else { $('.task-list-chart').hide(); } // Подгружаем топик помощи showHelperTopic( $('.page-task-list .helper') ); // Проверка корректности даты начала периода var date_begin = ''; var m = $('.page-task-list .i-date_begin').val(); if (m != '') { if ( !moment( m, "DD.MM.YYYY").isValid() ) { //$('.page-task-list .i-date_begin').focus(); alert('Недопустимое значение даты!'); return; } else { date_begin = moment( m, "DD.MM.YYYY").format('YYYY-MM-DD'); } } var v_date_begin = date_begin; // Проверка корректности даты конца периода var date_end = ''; var m = $('.page-task-list .i-date_end').val(); if (m != '') { if ( !moment( m, "DD.MM.YYYY").isValid() ) { //$('.page-task-list .i-date_end').focus(); alert('Недопустимое значение даты!'); return; } else { date_end = moment( m, "DD.MM.YYYY").format('YYYY-MM-DD'); } } var v_date_end = date_end; $('.loader').show(); $('.page-task-list .task-list-chart').html('
Загрузка...
'); $('.page-task-list').css('opacity', '0.5'); // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-task-list .bar-body').scrollTop(); localStorage['work_task_scroll_top'] = z_scrollTop; $.ajax({ url: base_url + '/handler/task/get-task-list.php', cache: false, type: "POST", data: { view_mode: v_view_mode, view_mode_date: localStorage['view_mode_date'], filter_task_mode: localStorage['filter_task_mode'], filter_task_archive: localStorage['filter_task_archive'], filter_trademark_id: localStorage['filter_trademark'], filter_source_id: localStorage['filter_source'], filter_is_agreement_signed: localStorage['filter_is_agreement_signed'], stage_id: v_stage_id, stage_alias: v_stage_alias, stage_name: v_stage_name, keywords: v_keywords, task_page_num: localStorage['task_page_num'], actor_id: v_actor_id, agroup_id: v_agroup_id, category_id: v_category_id, photo: v_photo, show_descr_in_task_list: localStorage['show_descr_in_task_list'], show_photo_in_task_list: localStorage['show_photo_in_task_list'], attach: v_attach, task_cdate_ago: localStorage['task_cdate_ago'], date_period: v_date_period, date_begin: v_date_begin, date_end: v_date_end, finish: v_finish, sort_param: localStorage['task_sort_param'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-task-list').css('opacity', '1'); $('.page-task-list .task-list').html(data); // График по настройкам if ( localStorage['chart'] == 1 ){ $('.task-list-chart').show(); } else { $('.task-list-chart').hide(); } adjustScreenSize(); // Подстраиваем высоту блоков adjustTaskListHeight(); // Восстанавливаем прокрутку списка $('.page-task-list .bar-body').scrollTop( localStorage['work_task_scroll_top'] ); // Строим график по полученным данным if ( localStorage['chart'] == 1 ){ google.charts.setOnLoadCallback( showTaskListChart ); } if ( localStorage['view_mode'] == 'last' ){ localStorage['view_mode'] = 'search'; } // Подстраиваем высоту блоков adjustTaskListHeight(); // Восстанавливаем прокрутку списка $('.page-task-list .bar-body').scrollTop( localStorage['work_task_scroll_top'] ); // Нажатие на кнопку - Добавить заказ $('.page-task-list .act-add-task').click(function(){ showAddTaskForm(); }); // Заказ в Избранное / из Избранного $('.page-task-list .act-set-favorite').click(function(){ event.stopPropagation(); // Запоминаем заказ var z_task_id = $(this).parent().parent().parent().parent().attr('data-task_id'); // console.log('z_task_id=' + z_task_id); setFavorite( 'TASK', z_task_id, $(this).attr('data-value'), 'TASK-LIST' ); }); // Фильтр статус этапа: сделано $('.page-task-list .act_in_list-view-stage-done').click(function(){ $('.page-task-list .act-view-stage-done').click(); }); // **************** Телефон ********************************* // Кнопка номера телефона - обработка наведения $('.page-task-list .act-show-phone-form').hover( function(){ phoneNumberOverIn( $(this) ) }, function(){ phoneNumberOverOut( $(this) ) } ); // Кнопка номера телефона - Нажатие на кнопку $('.page-task-list .act-show-phone-form').click(function(){ event.stopPropagation(); showPhoneForm( $(this).attr('data-phone') ); }); // Отобразить при наведении на строку $('.page-task-list .task-list .task-row[data-task_id]').hover( function(){ //$(this).find('td i.act-ico'). css('visibility', 'visible'); $(this).addClass('over'); }, function(){ //$(this).find('td i.act-ico').css('visibility', 'hidden'); $(this).removeClass('over'); } ); function doBeforeLeaveTaskList(v_task_id){ // Запоминаем заказ localStorage['work_task_id'] = v_task_id; // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-task-list .bar-body').scrollTop(); localStorage['work_task_scroll_top'] = z_scrollTop; // Запоминаем рабочий режим для корректного возврата потом localStorage['work_mode'] = 'task-list'; // При показе карточки делаем настройку "шапка заказа расхлопнута" toggleTaskHeader('open'); } // Клик на строку заказа $('.page-task-list .task-list .task-row').click(function(){ // ID заказа, актуального при покидании var z_task_id = $(this).attr('data-task_id'); // Подготовка списка задач перед как покинуть doBeforeLeaveTaskList(z_task_id); // Отображаем форму заказа showTaskForm( z_task_id, 'main' ); event.stopPropagation(); }); // Нажатие на кнопку: Показать карточку заказа - вкладка Документы $('.page-task-list .act-show-finance-tab').click(function(){ // ID заказа, актуального при покидании let z_task_id = $(this).closest('.task-row').attr('data-task_id'); // Подготовка списка задач перед как покинуть doBeforeLeaveTaskList(z_task_id); // Показать карточку заказа - вкладка Документы showTaskForm(z_task_id, 'document'); event.stopPropagation(); }); // Нажатие на кнопку: Показать карточку заказа - вкладка Этапы $('.page-task-list .bar-stages-info').click(function(){ // ID заказа, актуального при покидании let z_task_id = $(this).closest('.task-row').attr('data-task_id'); // Подготовка списка задач перед как покинуть doBeforeLeaveTaskList(z_task_id); // Показать карточку заказа - вкладка Документы showTaskForm(z_task_id, 'stage'); event.stopPropagation(); }); // Нажатие на кнопку: Показать карточку заказа - вкладка Финансы $('.page-task-list .bar-finstat').click(function(){ // ID заказа, актуального при покидании let z_task_id = $(this).closest('.task-row').attr('data-task_id'); // Подготовка списка задач перед как покинуть doBeforeLeaveTaskList(z_task_id); // Показать карточку заказа - вкладка Документы showTaskForm(z_task_id, 'finance'); event.stopPropagation(); }); // Нажатие на кнопку: Показать карточку заказа - вкладка Фото $('.page-task-list img.tiny').click(function(){ // ID заказа, актуального при покидании let z_task_id = $(this).closest('.task-row').attr('data-task_id'); // Подготовка списка задач перед как покинуть doBeforeLeaveTaskList(z_task_id); // Показать карточку заказа - вкладка Документы showTaskForm(z_task_id, 'photo'); event.stopPropagation(); }); // Выбор страницы в пагинаторе $('.page-task-list .paginator i').click(function(){ localStorage['task_page_num'] = $(this).html(); showTaskList(); }); // Нажатие на выбор сортировки $('.page-task-list .task-sort-param').change(function(){ localStorage['task_sort_param'] = $(this).val(); localStorage['task_page_num'] = 1; showTaskList(); }); // Пытаемся восстановить контекст - выбрать рабочий заказ if ( localStorage['work_task_id'] > 0 ) { $('.page-task-list .task-list table tr[data-task_id = ' + localStorage['work_task_id'] + ']').click(); } // Ограничение по времени в главном списке заказов $('.page-task-list .i-task_cdate_ago').change(function(){ localStorage['task_cdate_ago'] = $(this).val(); showTaskList(); }); } }); } function renderTaskAttn( v_attn ){ // Отображение признака Внимание if ( v_attn == 1 ){ $('.page-task-form .bar-attn').addClass('on').attr('data-attn', '1').attr('title', 'Убрать признак Внимание!'); } else { $('.page-task-form .bar-attn').removeClass('on').attr('data-attn', '0').attr('title', 'Установить признак Внимание!'); } }; // Признак Внимание - Нажатие на бар $('.page-task-form .bar-attn').click(function(){ if ( $('.page-task-form .bar-attn').attr('data-attn') == 1 ){ var z_new_attn = 0; } else { var z_new_attn = 1; } var z_task_id = $('.page-task-form .d-task_id').val(); $('.loader').show(); $.ajax({ url: base_url + '/handler/task/put-task.php', cache: false, type: "POST", data: { 'action': 'attn', 'task_id': z_task_id, 'attn': z_new_attn }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ // console.log(json); var data = $.parseJSON(json); // console.log(data); $('.loader').hide(); showTaskHeader( z_task_id ); } }); }); $('.page-task-form .bar-document_type').show(); // Изменили значение типа документа $('.page-task-form .i-document_type').change(function(){ $('.page-task-form .bar-document-attr').show(); }); // Открыть карточку заказа function showTaskForm(v_task_id, v_tab) { // console.log('-----------showTaskForm-------------'); // console.log('v_task_id=', v_task_id); // console.log('v_tab=', v_tab); var z_phone_mask = '+7 (999) 999-9999'; $('.page-task-form .d-task_id').val(v_task_id); // Показываем кнопку, т.к. ее видимость используется в работе глобального Esc $('.page-task-form .act-close-task').show(); // Поля в шапке заказа очищаем $('.page-task-form .act-refresh-task-form').hide(); $('.page-task-form .actors-avatar-list').html('').hide(); $('.page-task-form .d-request_num').val(''); $('.page-task-form .d-request_num_display').html(''); $('.page-task-form .d-request_date_display').html(''); $('.page-task-form .d-agreement_num').val(''); $('.page-task-form .d-agreement_num_display').html(''); $('.page-task-form .d-agreement_date_display').html(''); $('.page-task-form .d-pause').hide(); $('.page-task-form .d-cancel').hide(); $('.page-task-form .d-readonly').hide(); $('.page-task-form .d-archive').hide(); $('.page-task-form .d-payment-nal').hide(); $('.page-task-form .d-payment-beznal').hide(); $('.page-task-form .act-show-sign-agreement-form').hide; $('.page-task-form .d-task_descr').css('color', 'silver').html('Загрузка...'); $('.page-task-form .i-task_descr').val(''); $('.page-task-form .bar-task_descr-display').show(); $('.page-task-form .bar-task_descr-editor').hide(); $('.page-task-form .act-show-yandex-object-point').hide(); $('.page-task-form .bar-geo').hide(); if (v_task_id != null) { // Логируем доступ к объекту logAccess( 'TASK', v_task_id, v_tab ); } switch (v_tab) { // Данные по заказу case 'main': $('.page-task-form .d-partner_id').val(''); $('.page-task-form .d-task_id').val(''); $('.page-task-form .d-customer_id').val(''); $('.page-task-form .d-object_id').val(''); renderTaskAttn( 0 ); $('.page-task-form .i-customer_name').val(''); $('.page-task-form .i-customer_phone').val(''); $('.page-task-form .i-customer_email').val(''); $('.page-task-form .i-object_address').val(''); $('.page-task-form .i-object_howtoget').val(''); $('.page-task-form .i-object_lat').val(''); $('.page-task-form .i-object_lng').val(''); $('.page-task-form .i-object_kadastr_number').val(''); $('.page-task-form .i-customer_remark').val(''); $('.page-task-form .bar-customer_remark').hide(); $('.page-task-form .i-partner_remark').val(''); $('.page-task-form .bar-partner_remark').hide(); $('.page-task-form .bar-contact-list').hide(); $('.page-task-form .bar-login-param').hide(); $('.page-task-form .bar-pass-task').hide(); // Документы физлица $('.page-task-form .bar-fizik').hide(); $('.page-task-form .bar-document_type').hide(); $('.page-task-form .bar-document-attr').hide(); $('.page-task-form .i-document_type').val(''); $('.page-task-form .i-document_number').val(''); $('.page-task-form .i-document_note').val(''); $('.page-task-form .i-registration_address').val(''); // Реквизиты компании $('.page-task-form .d-company_id').val(''); $('.page-task-form .bar-yurik').hide(); $('.page-task-form .bar-company_attr').hide(); $('.page-task-form .i-company_full_name').val(''); $('.page-task-form .i-company_yur_address').val(''); $('.page-task-form .i-company_fiz_address').val(''); $('.page-task-form .i-company_inn').val(''); $('.page-task-form .i-company_kpp').val(''); $('.page-task-form .i-company_ogrn').val(''); $('.page-task-form .i-company_rasch_schet').val(''); $('.page-task-form .i-company_korr_schet').val(''); $('.page-task-form .i-company_bik').val(''); $('.page-task-form .i-company_bank_name').val(''); $('.page-task-form .i-company_director').val(''); $('.page-task-form .i-amount_agreement').val(''); $('.page-task-form .i-amount_prepayment').val(''); $('.page-task-form .i-param_int_1').val(''); $('.page-task-form .i-param_varchar_1').val(''); $('.page-task-form .response').html(''); // console.log('1'); $('.page-task-form .comment-response').html(''); $('.page-task-form .category-selector').hide(); $('.page-task-form .bar-category').hide(); $('.page-task-form .act-show-yandex-object-point').hide(); $('.page-task-form .bar-geo').hide(); $('.page-task-form .bar-task-else').hide(); // Элементы для READONLY статуса - сброс $('.page-task-form .i-agreement_date').removeClass('readonly').removeAttr('readonly'); $('.page-task-form .i-workdone_date').removeClass('readonly').removeAttr('readonly'); $('.page-task-form .i-customer_name').removeClass('readonly').removeAttr('readonly'); $('.page-task-form .i-customer_phone').removeClass('readonly').removeAttr('readonly'); $('.page-task-form .i-customer_email').removeClass('readonly').removeAttr('readonly'); $('.page-task-form .i-object_address').removeClass('readonly').removeAttr('readonly'); $('.page-task-form .i-object_howtoget').removeClass('readonly').removeAttr('readonly'); $('.page-task-form .i-object_lat').removeClass('readonly').removeAttr('readonly'); $('.page-task-form .i-object_lng').removeClass('readonly').removeAttr('readonly'); $('.page-task-form .i-object_kadastr_number').removeClass('readonly').removeAttr('readonly'); $('.page-task-form .i-customer_remark').removeClass('readonly').removeAttr('readonly'); $('.page-task-form .i-amount_agreement').removeClass('readonly').removeAttr('readonly'); $('.page-task-form .i-amount_prepayment').removeClass('readonly').removeAttr('readonly'); $('.page-task-form .i-param_int_1').removeClass('readonly').removeAttr('readonly'); $('.page-task-form .i-param_varchar_1').removeClass('readonly').removeAttr('readonly'); $('.page-task-form .chk-workdone').attr('checked', false); //$('.page-task-form .i-request_num').val(''); //$('.page-task-form .i-request_date').val(''); $('.page-task-form .i-agreement_num').val(''); $('.page-task-form .d-agreement_num').val(''); $('.page-task-form .i-agreement_date').val(''); // Редактор даты Договора $('.page-task-form .act-edit-agreement_date').hide(); $('.page-task-form .bar-input-agreement_date').hide(); $('.page-task-form .act-put-agreement_date').hide(); //$('.page-task-form .i-agreement_date').mask('99.99.2099'); $('.page-task-form .i-workdone_date').val(''); // $('.page-task-form .i-workdone_date').mask('99.99.2099'); if (v_task_id != null) { /* ???????????????????? // Вышестоящий заказ для данного субподрядного $('.page-task-form .bar-master-task').show(); showSubcontract( v_task_id ); */ // Передача заказа компании-партнёру $('.page-task-form .bar-pass-task').show(); // Редактирование существующего заказа $('.page-task-form .d-task-action').val('edit'); $('.page-task-form .d-task_id').val( v_task_id ); $('.page-task-form .bar-task_info').show(); $('.page-task-form .bar-finance-summary').show(); $('.page-task-form .bar-task_descr').show(); // Реквизиты компании $('.page-task-form .bar-company_attr').show(); // Контактные лица $('.page-task-form .bar-contact-list').show(); showContactList( v_task_id ); // Торговые марки $('.page-task-form .bar-add-task-trademark').hide(); $('.page-task-form .bar-edit-task-trademark').show(); $('.page-task-form .bar-edit-task-trademark .d-trademark_name').val(''); //$('.page-task-form .bar-task_info').show(); // Отказаться от поля 29.04.2019 // $('.page-task-form .i-creator_id').parent().hide(); $('.page-task-form .bar-comment').show(); // Форма поиска заказчика $('.page-task-form .bar-customer-search').hide(); $('.page-task-form .bar-object-search').hide(); $('.page-task-form .bar-task-param').show(); /* if (localStorage['view_mode'] == 'request' ) { $('.page-task-form .i-agreement_num').parent().hide(); $('.page-task-form .i-agreement_date').parent().hide() $('.page-task-form .i-amount_agreement').parent().css('float', 'left');; } else { ПОТРЕБУЕТ ПЕРЕДЕЛКИ ПОТРЕБУЕТ ПЕРЕДЕЛКИ ПОТРЕБУЕТ ПЕРЕДЕЛКИ ПОТРЕБУЕТ ПЕРЕДЕЛКИ ПОТРЕБУЕТ ПЕРЕДЕЛКИ */ //$('.page-task-form .i-agreement_num').parent().show(); //$('.page-task-form .i-agreement_date').parent().show(); //} $('.page-task-form .tab').show(); $('.loader').show(); $.ajax({ url: base_url + '/handler/task/get-task.php', cache: false, type: "POST", data: { task_id: v_task_id, stage_id: localStorage['work_stage_id'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); data = $.parseJSON(json); // console.log(data); // Элементы по ОТЛОЖЕНО if ( data.task.pause == 1) { $('.page-task-form .d-pause').show(); $('.page-task-form .act-pause-task').hide(); $('.page-task-form .act-resume-task').show(); } else { $('.page-task-form .d-pause').hide(); $('.page-task-form .act-pause-task').show(); $('.page-task-form .act-resume-task').hide(); } // Элементы по ОТМЕНА if ( data.task.cancel == 1) { $('.page-task-form .d-cancel').show(); //$('.page-task-form .act-cancel-task').hide(); $('.page-task-form .act-show-task-state-form').hide(); $('.page-task-form .act-restore-task').show(); } else { $('.page-task-form .d-cancel').hide(); //$('.page-task-form .act-cancel-task').show(); $('.page-task-form .act-show-task-state-form').show(); $('.page-task-form .act-restore-task').hide(); } // Элементы по АРХИВ if ( data.task.archive == 1) { $('.page-task-form .d-archive').show(); $('.page-task-form .act-archive-task').hide(); $('.page-task-form .act-unarchive-task').show(); } else { $('.page-task-form .d-archive').hide(); $('.page-task-form .act-archive-task').show(); $('.page-task-form .act-unarchive-task').hide(); } // Элемент УДАЛИТЬ $('.page-task-form .act-delete-task').show(); // Торговая марка var tm = ( data.task.trademark_short_name != null )? ' ' + data.task.trademark_short_name : ''; if ( data.task.request_num != null ){ var s = '
Заявка' + tm + ' ' + data.task.request_num + '
 '; s = s + '
от 
'; s = s + '
' + data.task.request_date_ddmmyyyy + '
'; $('.page-task-form .d-tab-request-info').html(s); $('.page-task-form .bar-request-data').show(); } else { $('.page-task-form .bar-request-data').hide(); } if ( data.task.agreement_num != null ){ var tm = ( data.task.trademark_short_name != null )? ' ' + data.task.trademark_short_name : ''; var s = '
Договор' + tm + ' ' + data.task.agreement_num + '
 '; s = s + '
от 
'; s = s + '
' + data.task.agreement_date_ddmmyyyy + '
'; $('.page-task-form .d-tab-agreement-info').show().html(s); $('.page-task-form .bar-agreement-data').show(); // Редактор даты Договора $('.page-task-form .act-edit-agreement_date').show(); $('.page-task-form .bar-input-agreement_date').hide(); $('.page-task-form .act-put-agreement_date').hide(); } else { $('.page-task-form .bar-agreement-data').hide(); $('.page-task-form .d-tab-agreement-info').hide().html(''); } $('.page-task-form .d-partner_id').val(data.task.partner_id); $('.page-task-form .d-customer_id').val(data.task.customer_id); $('.page-task-form .d-object_id').val(data.task.object_id); //$('.page-task-form .i-request_num').val(data.task.request_num); //$('.page-task-form .i-request_date').val(data.task.request_date); $('.page-task-form .i-agreement_num').val(data.task.agreement_num); $('.page-task-form .d-agreement_num').val(data.task.agreement_num); $('.page-task-form .i-agreement_date').val(data.task.agreement_date); $('.page-task-form .i-workdone_date').val(data.task.workdone_date); // Традиционный баг с выставлением чека, шаманим, чтобы проставить чек... $('.page-task-form .chk-workdone').attr('checked', false); if ( data.task.workdone == 1 ){ $('.page-task-form .chk-workdone').click(); } // Реквизиты в документах $('.page-task-form .select-partner_details_id').val( data.task.partner_details_id ); if ( data.task.partner_details_id > 0 ){ localStorage['partner_details_id'] = data.task.partner_details_id; } else { localStorage.removeItem('partner_details_id'); // Пробуем установить первые в списке var z_first_partner_details_id = $('.page-task-form .select-partner_details_id option:first').val(); $('.page-task-form .select-partner_details_id').val( z_first_partner_details_id ).change(); } // Параметы логина в ЛК клиента $('.page-task-form .bar-login-param .d-login-agreement_customer').html(data.task.agreement_num); $('.page-task-form .bar-login-param .d-login-phone_customer').html( data.task.customer_phone_nochar ); $('.page-task-form .bar-login-param').show(); // Торговая марка $('.page-task-form .i-trademark_id').val(data.task.trademark_id); $('.page-task-form .d-trademark_name').val(data.task.trademark_name); $('.page-task-form .bar-edit-task-trademark .d-trademark_name').val(data.task.trademark_name); // Источник заказа $('.page-task-form .select-source_id').val(data.task.source_id); if (data.task.customer_remark != "" && data.task.customer_remark != null) { $('.page-task-form .i-customer_remark').val(data.task.customer_remark); $('.page-task-form .bar-customer_remark').show(); } if (data.task.partner_remark != "" && data.task.partner_remark != null) { $('.page-task-form .i-partner_remark').val(data.task.partner_remark); $('.page-task-form .bar-partner_remark').show(); } $('.page-task-form .i-customer_name').val(data.task.customer_name); $('.page-task-form .i-customer_email').val(data.task.customer_email); /* if (data.task.customer_phone != "" && data.task.customer_phone != null) { $('.page-task-form .i-customer_phone.mask-phone').unmask(z_phone_mask).val(data.task.customer_phone); } else { $('.page-task-form .i-customer_phone.mask-phone').mask(z_phone_mask); } */ if (data.task.customer_phone != "" && data.task.customer_phone != null) { $('.page-task-form .i-customer_phone').val(data.task.customer_phone); } switch (data.task.customer_type){ case 'FIZIK': $('.page-task-form input[name="customer_type"][value="FIZIK"]').click(); $('.page-task-form .d-company_id').val(''); $('.page-task-form .bar-document_type').show(); $('.page-task-form .i-document_type').val(data.task.document_type).show(); if ( data.task.document_type != "" && data.task.document_type != null ){ $('.page-task-form .bar-document-attr').show(); } else { $('.page-task-form .bar-document-attr').hide(); } $('.page-task-form .i-document_number').val(data.task.document_number); $('.page-task-form .i-document_note').val(data.task.document_note); $('.page-task-form .i-registration_address').val(data.task.registration_address); break; case 'YURIK': $('.page-task-form input[name="customer_type"][value="YURIK"]').click(); $('.page-task-form .d-company_id').val(data.task.company_id); $('.page-task-form .i-company_full_name').val(data.task.company_full_name); $('.page-task-form .i-company_yur_address').val(data.task.company_yur_address); $('.page-task-form .i-company_fiz_address').val(data.task.company_fiz_address); $('.page-task-form .i-company_inn').val(data.task.company_inn); $('.page-task-form .i-company_kpp').val(data.task.company_kpp); $('.page-task-form .i-company_ogrn').val(data.task.company_ogrn); $('.page-task-form .i-company_rasch_schet').val(data.task.company_rasch_schet); $('.page-task-form .i-company_korr_schet').val(data.task.company_korr_schet); $('.page-task-form .i-company_bik').val(data.task.company_bik); $('.page-task-form .i-company_bank_name').val(data.task.company_bank_name); $('.page-task-form .i-company_director').val(data.task.company_director); break; } $('.page-task-form .i-object_address').val(data.task.object_address); $('.page-task-form .i-object_howtoget').val(data.task.object_howtoget); $('.page-task-form .i-object_lat').val(data.task.object_lat); $('.page-task-form .i-object_lng').val(data.task.object_lng); $('.page-task-form .i-object_kadastr_number').val(data.task.object_kadastr_number); $('.page-task-form .i-amount_agreement').val(data.task.amount_agreement); $('.page-task-form .i-amount_prepayment').val(data.task.amount_prepayment); $('.page-task-form .i-param_int_1').val(data.task.param_int_1); $('.page-task-form .i-param_varchar_1').val(data.task.param_varchar_1); $('.page-task-form .act-show-yandex-object-point').show(); // Модуль geo $('.page-task-form .bar-geo').show(); // Модуль прочее $('.page-task-form .bar-task-else').show(); // Настройка READONLY в зависимости от завершённого этапа var z_readonly = false; if (data.task.stage_finish == 1 && $('.page-task-form .d-supress_readonly').val() == 0){ var z_readonly = true; $('.page-task-form .i-workdone_date').addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form .i-customer_name').addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form .i-customer_phone').addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form .i-customer_email').addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form .i-object_address').addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form .i-object_howtoget').addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form .i-object_lat').addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form .i-object_lng').addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form .i-object_kadastr_number').addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form .i-customer_remark').addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form .i-amount_agreement').addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form .i-amount_prepayment').addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form .i-param_int_1').addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form .i-param_varchar_1').addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form .i-document_type').addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form .i-document_number').addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form .i-document_note').addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form .i-registration_address').addClass('readonly').attr('readonly', 'readonly'); } if ( data.task.subcontract == '1' ){ // Заказ субподрядный $('.page-task-form .bar-master-task').show(); showSubcontract(v_task_id); } else { // Заказ НЕ субподрядный, может содержать в себе другие заказы $('.page-task-form .bar-master-task').hide(); } showPage('task-form'); showTaskTab(v_tab); showTaskHeader(v_task_id); drawCategory('.page-task-form', data.task.category_id, '#' + data.task.category_color_rgb, data.task.category_name); showCommentList(v_task_id, true); // Регистрация ASK погоды showTaskWeather(v_task_id, true); // Разрешаем обновить $('.page-task-form .act-refresh-task-form').show(); } }); toggleTaskHeader(localStorage['task_header_state']); $('.page-task-form .toggle-task-header').show(); } else { // Добавление новой заявки $('.page-task-form .d-task-action').val('add'); $('.page-task-form .bar-object-address-list').html('').hide(); $('.page-task-form .bar-object-address').hide(); $('.page-task-form .i-object_address').val(''); $('.page-task-form .i-object_num').val(''); $('.page-task-form .bar-task_info').hide(); $('.page-task-form .bar-finance-summary').hide(); $('.page-task-form .bar-task_descr').hide(); $('.page-task-form .bar-request-data').hide(); $('.page-task-form .bar-agreement-data').hide(); // Субподряд $('.page-task-form .bar-master-task').hide(); // Элементы по ОТЛОЖЕНО $('.page-task-form .d-pause').hide(); $('.page-task-form .act-pause-task').hide(); $('.page-task-form .act-resume-task').hide(); // Элементы по ОТМЕНА $('.page-task-form .d-cancel').hide(); //$('.page-task-form .act-cancel-task').hide(); $('.page-task-form .act-show-task-state-form').hide(); $('.page-task-form .act-restore-task').hide(); // Элементы по АРХИВ $('.page-task-form .d-archive').hide(); $('.page-task-form .act-archive-task').hide(); $('.page-task-form .act-unarchive-task').hide(); // Элементы по НАЛИЧНАЯ / БЕЗНАЛИЧНАЯ $('.page-task-form .d-payment-nal').hide(); $('.page-task-form .d-payment-beznal').hide(); // Элемент УДАЛИТЬ $('.page-task-form .act-delete-task').hide(); // Торговые марки $('.page-task-form .bar-add-task-trademark').show(); $('.page-task-form .i-trademark_id').val( $('.page-task-form .select-trademark_id').val() ); $('.page-task-form .bar-edit-task-trademark').hide(); $('.page-task-form .bar-edit-task-trademark .d-trademark_name').val(''); // Выбор ТМ в выпадающем списке $('.page-task-form .select-trademark_id').change( function() { $('.page-task-form .i-trademark_id').val( $(this).val() ); }); // Источник заказа $('.page-task-form .select-source_id').val(''); //$('.page-task-form .i-agreement_date').val( moment().format('YYYY-MM-DD') ); $('.page-task-form .i-agreement_date').val(''); $('.page-task-form .d-task_id').val(''); // Форма поиска заказчика $('.page-task-form .i-customer-search-keywords').val(''); $('.page-task-form .bar-customer-search').show(); $('.page-task-form .bar-customer-search-param').show(); $('.page-task-form .bar-object-search').show(); $('.page-task-form .bar-new-customer-note').hide(); $('.page-task-form .act-add-new-customer').hide(); $('.page-task-form .customer-search-result-list').hide(); $('.page-task-form .customer-search-result-detail').hide(); $('.page-task-form .bar-task-param').hide(); //SearchCustomer(); // $('.page-task-form .bar-task_info').hide(); $('.page-task-form .i-customer_phone.mask-phone').val('').mask(z_phone_mask); $('.page-task-form .chk-workdone').attr('checked', false); // Статус заказа drawCategory('.page-task-form', null, null, null); // Отказаться от поля 29.04.2019 // $('.page-task-form .i-creator_id').parent().show(); // Скрываем поля документа $('.page-task-form .bar-document_type').hide(); $('.page-task-form .bar-document-attr').hide(); $('.page-task-form .act-show-yandex-object-point').hide(); // Модуль geo $('.page-task-form .bar-geo').hide(); // Модуль прочее $('.page-task-form .bar-task-else').hide(); $('.page-task-form .bar-comment').hide(); $('.page-task-form .tab').hide(); $('.page-task-form .tab[data-tab="main"]').show(); showPage('task-form'); showTaskTab(v_tab); showTaskHeader(null); adjustTaskFormHeight(); $('.page-task-form .page-title').html('Новая заявка'); $('.page-task-form .i-customer-search-keywords').focus(); toggleTaskHeader(localStorage['task_header_state']); $('.page-task-form .toggle-task-header').hide(); } break; // вкладка ЭТАПЫ case 'stage': $('.page-task-form .d-task_id').val( v_task_id ); if (v_task_id != null) { $('.loader').show(); // console.log('123'); $.ajax({ url: base_url + '/handler/task/get-task.php', cache: false, type: "POST", data: { task_id: v_task_id, stage_id: localStorage['work_stage_id'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); data = $.parseJSON(json); // Статус заказа drawCategory('.page-task-form', data.task.category_id, '#' + data.task.category_color_rgb, data.task.category_name); } }); } else { // NOTHING } // Действия showTaskEventList( v_task_id ); $('.loader').show(); // Список этапов $.ajax({ url: base_url + '/handler/stage/get-stage-control.php', cache: false, type: "POST", data: { task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-task-form .stage-control').html( data ); // Разрешаем обновить $('.page-task-form .act-refresh-task-form').show(); // Кнопка номера телефона - обработка наведения $('.page-task-form [data-tab="stage"] .act-show-phone-form').hover( function(){ phoneNumberOverIn( $(this) ) }, function(){ phoneNumberOverOut( $(this) ) } ); // Кнопка номера телефона - Нажатие на кнопку $('.page-task-form [data-tab="stage"] .act-show-phone-form').click(function(){ showPhoneForm( $(this).attr('data-phone') ); }); // Нажатие на кнопку - удалить назначение $('.page-task-form .act-unassign').click(function(){ deleteAssign( $(this).attr('data-assign_id'), v_task_id, $(this).attr('data-stage_id'), $(this).attr('data-actor_id') ); }); // Нажатие на кнопку - показать / скрыть список Сотрудников для Назначить (без даты) $('.page-task-form .act-show-actor-for-assign').click(function(){ var elem = $(this).parent().parent().find('.avail-actor-list[data-stage_id="' + $(this).parent().attr('data-stage_id') + '"]'); if ( elem.css('display') == 'none'){ elem.show('fast'); } else { elem.hide('fast'); } }); // Нажатие на кнопку - назначить (без даты) $('.page-task-form .act-assign').click(function(){ addAssign( null, v_task_id, $(this).attr('data-stage_id'), $(this).attr('data-actor_id'), null ); }); // Нажатие на кнопку - РЕЗЕРВ даты $('.page-task-form .act-reserv-on-date').click(function() { localStorage['assign_task_id'] = v_task_id; var reserv_stage_id = $(this).parent().attr('data-stage_id'); localStorage['assign_stage_id'] = reserv_stage_id; localStorage['assign_mode'] = 'RESERV_ON_DATE'; var page_title = 'РЕЗЕРВ даты'; /* для ' + $('.page-task-form .page-title').html(); */ $('.page-calendar .page-title').html( page_title ); $('.page-calendar .calendar-detail').html(''); showPage('calendar'); }); // Нажатие на кнопку - Назначить исполнителя на дату $('.page-task-form .act-actor-on-date').click(function() { localStorage['assign_task_id'] = v_task_id; var assign_stage_id = $(this).parent().attr('data-stage_id'); localStorage['assign_stage_id'] = assign_stage_id; localStorage['assign_mode'] = 'ACTOR_ON_DATE'; var page_title = 'Выбрать дату'; /* + $('.page-task-form .page-title').html()*/; $('.page-calendar .page-title').html( page_title ); $('.page-calendar .calendar-detail').html(''); showPage('calendar'); }); // Завершить текущий этап $('.page-task-form .act-finish-stage').click(function(){ finishStage( v_task_id, $(this).parent().attr('data-stage_id'), $(this).parent().attr('data-stage_text') ); }); // Нажатие на кнопку - "Не сделано" $('.page-task-form .act-cancel-finish').click(function(){ if (!confirm('Вернуть к Не сделано?')) return; editAssign( $(this).attr('data-assign_id'), 'A' ); }); showPage('task-form'); showTaskTab(v_tab); showTaskHeader(v_task_id); } }); break; case 'message': $('.page-task-form .d-task_id').val( v_task_id ); $('.page-task-form .message-form').hide(); showTaskMessageList( v_task_id ); // Разрешаем обновить $('.page-task-form .act-refresh-task-form').show(); showPage('task-form'); showTaskTab(v_tab); showTaskHeader(v_task_id); break; case 'document': showPage('task-form'); showTaskTab(v_tab); showTaskHeader(v_task_id); reloadBarAgreementSign(v_task_id); reloadDocumentList(); // Разрешаем обновить $('.page-task-form .act-refresh-task-form').show(); break; case 'photo': $('.page-task-form .d-task_id').val( v_task_id ); $('.page-task-form .photo-response').html(''); $('.page-task-form .act-add-photo').show(); $('.upload-photo-form').hide(); // Разрешаем обновить $('.page-task-form .act-refresh-task-form').show(); reloadPhotoList( v_task_id ); showPage('task-form'); showTaskTab(v_tab); showTaskHeader(v_task_id); break; case 'attach': $('.page-task-form .d-task_id').val( v_task_id ); $('.page-task-form .attach-response').html(''); $('.page-task-form .act-add-attach').show(); // Разрешаем обновить $('.page-task-form .act-refresh-task-form').show(); showPage('task-form'); showTaskTab(v_tab); showTaskHeader(v_task_id); showAttachList(v_task_id, true); break; case 'finance': $('.page-task-form .d-task_id').val( v_task_id ); // Разрешаем обновить $('.page-task-form .act-refresh-task-form').show(); reloadTaskFinanceTab(v_task_id); showTaskHeader(v_task_id); break; case 'salary': $('.page-task-form .d-task_id').val( v_task_id ); // Разрешаем обновить $('.page-task-form .act-refresh-task-form').show(); reloadTaskSalaryTab(v_task_id); showTaskHeader(v_task_id); break; case 'smeta': $('.page-task-form .d-task_id').val( v_task_id ); reloadSmetaList( v_task_id ); // Разрешаем обновить $('.page-task-form .act-refresh-task-form').show(); showPage('task-form'); showTaskTab(v_tab); showTaskHeader(v_task_id); break; case 'claim': $('.page-task-form .d-task_id').val( v_task_id ); $('.upload-photo-form').hide(); // Разрешаем обновить $('.page-task-form .act-refresh-task-form').show(); showPage('task-form'); showTaskTab(v_tab); showTaskHeader(v_task_id); $('.tabcard[data-tab="claim"] .tab[data-subtab="claim"]').click(); break; case 'delivery': $('.page-task-form .delivery-control').html('Загрузка...'); $('.page-task-form .d-task_id').val( v_task_id ); showPage('task-form'); showTaskTab(v_tab); showTaskHeader(v_task_id); showTaskDeliveryTab(v_task_id); // Разрешаем обновить $('.page-task-form .act-refresh-task-form').show(); break; case 'tender': $('.page-task-form .tender-control').html('Загрузка...'); $('.page-task-form .d-task_id').val( v_task_id ); showPage('task-form'); showTaskTab(v_tab); showTaskHeader(v_task_id); showTaskTenderTab(v_task_id); // Разрешаем обновить $('.page-task-form .act-refresh-task-form').show(); break; case 'trip-list': $('.page-task-form .d-task_id').val( v_task_id ); showTaskTripList( v_task_id ) // Разрешаем обновить $('.page-task-form .act-refresh-task-form').show(); showPage('task-form'); showTaskTab(v_tab); showTaskHeader(v_task_id); break; case 'history': $('.page-task-form .d-task_id').val( v_task_id ); $('.page-task-form .history-list').html('Загрузка...'); $('.loader').show(); $.ajax({ url: base_url + '/handler/history/get-history.php', cache: false, type: "POST", data: { action: 'task', keywords: null, filter_actor_id: null, filter_sys_action_id: null, task_id: v_task_id, date_period: null, date_begin: null, date_end: null, page_num: 1 }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-task-form .history-list').html(data); // Отобразить кнопки действий при наведении на строку $('.page-task-form .tabcard[data-tab="history"] tr.sys_action_row').hover( function(){ $(this).css('background', '#FFC'); }, function(){ $(this).css('background', '#fff'); } ); // Разрешаем обновить $('.page-task-form .act-refresh-task-form').show(); showPage('task-form'); showTaskTab(v_tab); showTaskHeader(v_task_id); } }); break; case 'lk': $('.page-task-form .d-task_id').val( v_task_id ); $('.page-task-form .bar-no-lk').hide(); $('.page-task-form .bar-no-lk .message').html('Загрузка...'); $('.page-task-form .device-selector').hide(); $('.page-task-form .bar-device').hide(); $('.page-task-form .act-show-lk-in-new-window').hide(); showPage('task-form'); showTaskTab(v_tab); showTaskHeader(v_task_id); // Список контактов $('.loader').show(); $.ajax({ url: base_url + '/handler/lk/get-contact-list.php', cache: false, type: "POST", data: { task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data_contact){ $('.loader').hide(); $('.page-task-form .contact-list').html(data_contact); } }); // Личные кабинеты $('.loader').show(); $.ajax({ url: base_url + '/handler/task/get-task.php', cache: false, type: "POST", data: { task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); var z_lk_access_code = ''; var z_message = ''; $('.page-task-form .d-lk-href').attr('href', 'https://brigadirka.ru/lk/'); if ( data.task.task_mode == "REQUEST" ){ z_lk_access_code = "IS_NOT_TASK"; z_message = 'Личный кабинет доступен только для Заказов, но не для Заявок.
Переведите Заявку в Заказ.'; } else if ( data.task.task_mode == "TASK" && data.task.customer_phone == null ) { z_lk_access_code = "IS_NO_PHONE"; z_message = 'Вход в Личный кабинет заказчика происходит по Номеру договора и Телефону заказчика.
Укажите номер телефона заказчика.'; } else { z_lk_access_code = "OK"; } if ( z_lk_access_code != "OK" ) { $('.page-task-form .device-selector').hide(); $('.page-task-form .bar-device').hide(); $('.page-task-form .act-show-lk-in-new-window').hide(); $('.page-task-form .bar-no-lk').show(); $('.page-task-form .bar-no-lk .message').html( z_message ); // Запрещаем обновить $('.page-task-form .act-refresh-task-form').hide(); } else { $('.page-task-form .device-selector').show(); $('.page-task-form .bar-device').show(); $('.page-task-form .act-show-lk-in-new-window').show(); $('.page-task-form .bar-no-lk').hide(); $('.page-task-form .bar-no-lk .message').html(''); // Разрешаем обновить $('.page-task-form .act-refresh-task-form').show(); authorizeLK( 'PHONE_AGREEMENT', data.task.customer_phone, data.task.agreement_num, function(){ showLKMode('lk-phone'); // Активируем режим просмотра со смартфона }); } } }); break; case 'rate': $('.page-task-form .bar-rate').html('Загрузка...'); $('.page-task-form .d-task_id').val( v_task_id ); showPage('task-form'); showTaskTab(v_tab); showTaskHeader(v_task_id); // Оценка работы $('.loader').show(); $.ajax({ url: base_url + '/handler/rate/get-rate-info.php', cache: false, type: "POST", data: { task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data_rate){ $('.loader').hide(); $('.page-task-form .bar-rate').html(data_rate); // Разрешаем обновить $('.page-task-form .act-refresh-task-form').show(); } }); break; case 'portfolio': $('.page-task-form .bar-portfolio').html('Загрузка...'); $('.page-task-form .d-task_id').val( v_task_id ); showPage('task-form'); showTaskTab(v_tab); showTaskHeader(v_task_id); showTaskPortfolio(v_task_id); // Разрешаем обновить $('.page-task-form .act-refresh-task-form').show(); break; // Субподряды case 'subcontract': $('.loader').show(); $.ajax({ url: base_url + '/handler/task/get-task.php', cache: false, type: "POST", data: { task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); // console.log(json); data = $.parseJSON(json); // console.log(data); showSubcontractList(v_task_id); } }); showPage('task-form'); showTaskTab(v_tab); showTaskHeader(v_task_id); // Разрешаем обновить $('.page-task-form .act-refresh-task-form').show(); break; case 'weather': $('.page-task-form .bar-weather').html('Загрузка...'); $('.page-task-form .d-task_id').val( v_task_id ); showPage('task-form'); showTaskTab(v_tab); showTaskHeader(v_task_id); showTaskWeather(v_task_id, false); // Разрешаем обновить $('.page-task-form .act-refresh-task-form').show(); break; } // swicth } function toggleTaskHeader(state){ // console.log('toggleTaskHeader=' + state); switch (state){ case 'open': localStorage['task_header_state'] = 'open'; $('.page-task-form .bar-task_info, .page-task-form .bar-task_descr, .page-task-form .bar-finance-summary').show(); $('.page-task-form .toggle-task-header').html('keyboard_arrow_up').attr('title', 'Схлопнуть шапку заказа'); break; case 'close': localStorage['task_header_state'] = 'close'; $('.page-task-form .bar-task_info, .page-task-form .bar-task_descr, .page-task-form .bar-finance-summary').hide(); $('.page-task-form .toggle-task-header').html('keyboard_arrow_down').attr('title', 'Расхлопнуть шапку заказа'); break; } // Подстраиваем высоту блоков adjustTaskFormHeight(); } $('.page-task-form .toggle-task-header').click(function(){ let new_state = (localStorage['task_header_state'] == 'open')? 'close' : 'open'; toggleTaskHeader(new_state); }); // Получение данных для шапки заказа над табами function showTaskHeader(v_task_id){ $('.page-task-form .page-title').html('Загрузка....'); if (v_task_id != null) { // console.log('Существующая заявка'); $('.loader').show(); $.ajax({ url: base_url + '/handler/task/get-task.php', cache: false, type: "POST", data: { task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ // Зачитываем блок со списком аватаров сотрудников $('.page-task-form .actors-avatar-list').load( base_url + '/handler/task/get-actor4task-list.php?task_id=' + v_task_id + '').show(); $('.loader').hide(); var data = $.parseJSON(json); if (data.task.subcontract == 1){ // Заказ субподрядный $('.page-task-form .tab[data-tab="main"]').html('ЗАКАЗ-СУБПОДРЯД'); $('.page-task-form .tab[data-tab="subcontract"]').hide(''); } else { // Заказ НЕ субподрядный $('.page-task-form .tab[data-tab="main"]').html('ЗАКАЗ'); $('.page-task-form .tab[data-tab="subcontract"]').show(''); } renderTaskHeader( data.task.task_id, data.task.task_mode, data.task.trademark_name, data.task.trademark_short_name, data.task.request_num, data.task.request_date_ddmmyyyy, data.task.agreement_num, data.task.agreement_date_ddmmyyyy, data.task.pause, data.task.cancel, data.task.amount_agreement, data.task.amount_prepayment, data.task.amount_customer_ack_remain, data.task.paid, data.task.archive, data.task.task_descr, false, // ЗАМЕНИТЬ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! READONLY вычисляется в jQuery, поэтому нет простого способа вычитать из базы data.task.object_address, data.task.object_lat, data.task.object_lng, data.task.object_latlng_ico, data.task.customer_name, data.task.customer_phone, data.task.photo_count, data.task.document_count, data.task.attach_count, data.task.payments_total, data.task.payments_wait_ack, data.task.active_smeta_count, data.task.attn, data.task.subcontract, data.task.ask_subcontract_count, data.task.subcontract_count, data.task.tender_count, data.task.active_stage_count, data.task.amount_store, data.task.profit_absolute, data.task.profit_persent, data.task.cost_price, data.task.is_portfolio, data.task.portfolio_photo_count, data.task.is_beznal, data.task.claim_count, data.task.delivery_type, data.task.partner_details_name, data.task.favorite_id, data.task.salary_count ); // Статус заказа drawCategory('.page-task-form', data.task.category_id, '#' + data.task.category_color_rgb, data.task.category_name); } }); } else { // console.log('Новая заявка'); // Шапка новой заявки renderTaskHeader( null, // data.task.task_id 'REQUEST', // data.task.task_mode null, // data.task.trademark_name null, // data.task.trademark_short_name, null, // data.task.request_num null, // data.task.request_date_ddmmyyyy null, // data.task.agreement_num null, // data.task.agreement_date_ddmmyyyy 0, // data.task.pause 0, // data.task.cancel 0, // data.task.amount_agreement 0, // data.task.amount_prepayment 0, // data.task.amount_customer_ack_remain 0, // data.task.paid 0, // data.task.archive null, // data.task.task_descr 0, // READONLY null, // data.task.object_address null, // data.task.object_lat, null, // data.task.object_lng, null, // data.task.object_latlng_ico, null, // data.task.customer_name null, // data.task.customer_phone null, // data.task.photo_count null, // data.task.document_count null, // data.task.attach_count null, // data.task.payments_total null, // data.task.payments_wait_ack null, // data.task.active_smeta_count null, // data.task.attn null, // data.task.subcontract null, // data.task.ask_subcontract null, // data.task.subcontract null, // data.task.subcontract null, // data.task.active_stage_count null, // data.task.amount_store null, // data.task.profit_absolute null, // data.task.profit_persent null, // data.task.cost_price null, // data.is_portfolio null, // data.portfolio_photo_count null, // data.task.is_beznal null, // data.task.claim_count null, // data.task.delivery_type null, // data.task.partner_details_name -1, // data.task.favorite_id = -1 для нового создаваемого заказа, null // data.task.salary_count ); // Статус заказа drawCategory('.page-task-form', null, null, null); } } // Прорисовка шапки заказа над табами function renderTaskHeader( v_task_id, v_task_mode, v_trademark_name, v_trademark_short_name, v_request_num, v_request_date_ddmmyyyy, v_agreement_num, v_agreement_date_ddmmyyyy, v_pause, v_cancel, v_amount_agreement, v_amount_prepayment, v_amount_customer_ack_remain, v_paid, v_archive, v_task_descr, v_readonly, v_object_address, v_object_lat, v_object_lng, v_object_latlng_ico, v_customer_name, v_customer_phone, v_photo_count, v_document_count, v_attach_count, v_payments_total, v_payments_wait_ack, v_active_smeta_count, v_attn, v_subcontract, v_ask_subcontract_count, v_subcontract_count, v_tender_count, v_active_stage_count, v_amount_store, v_profit_absolute, v_profit_persent, v_cost_price, v_is_portfolio, v_portfolio_photo_count, v_is_beznal, v_claim_count, v_delivery_type, v_partner_details_name, v_favorite_id, v_salary_count ){ let width = $(document).width(); v_trademark_short_name = ( v_trademark_short_name != null )? v_trademark_short_name : ''; if ( v_task_id != null ){ //$('.page-task-form .bar-task_info .act-show-phone-form').show(); $('.page-task-form .tabs').show(); $('.page-task-form .tab').show(); } else { //$('.page-task-form .bar-task_info .act-show-phone-form').hide(); $('.page-task-form .tabs').hide(); $('.page-task-form .tab').hide(); } let tmdiv = ( v_trademark_name != null )? '
' + v_trademark_short_name + '
' : ''; let s = ''; if ( v_task_mode == 'REQUEST' ) { v_request_num = (v_request_num != null)? v_request_num : ''; s = s + '
Заявка
'; s = s + tmdiv; s = s + '
' + v_request_num + '
'; s = s + '
от ' + v_request_date_ddmmyyyy + '
'; } else { v_agreement_num = (v_agreement_num != null)? v_agreement_num : ''; s = s + '
Договор
'; s = s + tmdiv; s = s + '
' + v_agreement_num + '
'; s = s + '
от ' + v_agreement_date_ddmmyyyy + '
'; } $('.page-task-form .page-title').html(s); // Отображение Статуса и признака Внимание if ( v_task_id != null ){ $('.page-task-form .bar-attn').show(); $('.page-task-form .bar-category').show(); } else { $('.page-task-form .bar-attn').hide(); $('.page-task-form .bar-category').hide(); } // Отображение отложенной задачи if ( v_pause == 1) { $('.page-task-form .d-pause').show(); } else { $('.page-task-form .d-pause').hide(); } // Отображение отменённой задачи if ( v_cancel == 1) { $('.page-task-form .d-cancel').show(); $('.page-task-form .stamp-cancel').show(); } else { $('.page-task-form .d-cancel').hide(); $('.page-task-form .stamp-cancel').hide(); } // Отображение оплаченной клиентом задачи if ( v_paid == 1) { $('.page-task-form .stamp-paid').show(); } else { $('.page-task-form .stamp-paid').hide(); } // Элементы по НАЛИЧНАЯ / БЕЗНАЛИЧНАЯ switch (v_is_beznal){ case null: $('.d-payment-nal').hide(); $('.d-payment-beznal').hide(); break; case 0: $('.d-payment-nal').show(); $('.d-payment-beznal').hide(); break; case 1: $('.d-payment-nal').hide(); $('.d-payment-beznal').show(); break; } // Видимость панели финансовой статистики if ( ( ( v_amount_agreement != '' ) || ( v_amount_prepayment != '' ) || ( v_amount_customer_ack_remain != '' ) || ( v_amount_store != '' && v_amount_store != null ) || ( v_cost_price != '' && v_cost_price != null ) || ( v_profit_absolute != '' && v_profit_absolute != null ) || ( v_profit_persent != '' && v_profit_persent != null ) ) && (localStorage['task_header_state'] != 'close') ){ $('.page-task-form .bar-finance-summary').show(); } else { $('.page-task-form .bar-finance-summary').hide(); } // Сумма по Договору if ( v_amount_agreement != '' ) { $('.page-task-form .bar-finance-summary .amount_agreement').html('Сумма по Договору
' + v_amount_agreement + '₽'); } else { $('.page-task-form .bar-finance-summary .amount_agreement').html(''); } // Сумма Предоплаты if ( v_amount_prepayment != '' ) { $('.page-task-form .bar-finance-summary .amount_prepayment').html('Сумма Предоплаты
' + v_amount_prepayment + '₽'); } else { $('.page-task-form .bar-finance-summary .amount_prepayment').html(''); } // Отображение суммы ожидаемой от клиента if ( v_amount_customer_ack_remain != '' ) { $('.page-task-form .bar-finance-summary .amount_customer_ack_remain').html('Долг клиента
' + v_amount_customer_ack_remain + '₽'); } else { $('.page-task-form .bar-finance-summary .amount_customer_ack_remain').html(''); } // Себестоимость if ( v_cost_price != '' && v_cost_price != null ) { $('.page-task-form .bar-finance-summary .cost_price').html('Себестоимость
' + v_cost_price + '₽'); } else { $('.page-task-form .bar-finance-summary .cost_price').html(''); } // Наценка абс if ( v_profit_absolute != '' && v_profit_absolute != null ) { $('.page-task-form .bar-finance-summary .profit-absolute').html('Наценка
' + v_profit_absolute + '₽'); } else { $('.page-task-form .bar-finance-summary .profit-absolute').html(''); } // Наценка % if ( v_profit_persent != '' && v_profit_persent != null ) { $('.page-task-form .bar-finance-summary .profit-persent').html(v_profit_persent + '%'); } else { $('.page-task-form .bar-finance-summary .profit-persent').html(''); } // Отображение архивной задачи if ( v_archive == 1) { $('.page-task-form .d-archive').show(); } else { $('.page-task-form .d-archive').hide(); } // Настройка READONLY в зависимости от завершённого этапа if (v_readonly) { $('.page-task-form .d-readonly').show(); } else { $('.page-task-form .d-readonly').hide(); } // Заказчик if (v_customer_name != null) { $('.page-task-form .d-customer_name').html( v_customer_name ); } else { $('.page-task-form .d-customer_name').html( '' ); } // Телефон if (v_customer_phone != null) { $('.page-task-form .bar-task_info .act-show-phone-form').attr( 'data-phone', v_customer_phone ).show(); $('.page-task-form .bar-task_info .act-show-phone-form .d-customer_phone').html( v_customer_phone ); } else { $('.page-task-form .bar-task_info .act-show-phone-form').attr( 'data-phone', '' ).hide(); $('.page-task-form .bar-task_info .act-show-phone-form .d-customer_phone').html( '' ); } // Кнопка номера телефона - обработка наведения $('.page-task-form .bar-header .act-show-phone-form').hover( function(){ phoneNumberOverIn( $(this) ) }, function(){ phoneNumberOverOut( $(this) ) } ); // Адрес // console.log('v_object_address=' + v_object_address); if (v_object_address != null) { $('.page-task-form .d-object_address').html( v_object_address ).css('color', '#505050'); } else { $('.page-task-form .d-object_address').html( 'Адрес не указан' ).css('color', 'silver'); } // Иконка гео $('.page-task-form .d-object_latlng').html( v_object_latlng_ico ); // Реквизиты if (v_partner_details_name != null) { $('.page-task-form .partner_details_name').html( 'Реквизиты
' + v_partner_details_name ); } else { $('.page-task-form .partner_details_name').html( '' ); } v_partner_details_name = ( v_partner_details_name != null )? v_partner_details_name : ''; // Описание заказа $('.page-task-form .bar-task_descr-display').show(); $('.page-task-form .bar-task_descr-editor').hide(); if ( v_task_descr != null ) { // Описание имеется $('.page-task-form .d-task_descr').html(v_task_descr).css('color', 'red'); $('.page-task-form .i-task_descr').val(v_task_descr); } else { // Описание отсутствует $('.page-task-form .d-task_descr').html('Введите описание заказа...').css('color', 'silver'); $('.page-task-form .i-task_descr').val(''); } // Индикатор количества активных этапов на табе var ind = $('.page-task-form .tabs .tab[data-tab="stage"] .indicator'); if ( v_active_stage_count > 0 ){ ind.show().html( v_active_stage_count ); //.css('background-color', 'yellow').css('color', 'black'); } else { ind.hide().html(''); } // Индикатор количества фото на табе if ( v_photo_count > 0 ){ $('.page-task-form .tabs .tab[data-tab="photo"] .indicator').show().html( v_photo_count ); } else { $('.page-task-form .tabs .tab[data-tab="photo"] .indicator').hide().html(''); } // Индикатор количества начислений зп на табе if ( v_salary_count > 0 ){ $('.page-task-form .tabs .tab[data-tab="salary"] .indicator').show().html( v_salary_count ); } else { $('.page-task-form .tabs .tab[data-tab="salary"] .indicator').hide().html(''); } // Индикатор количества документов на табе if ( v_document_count > 0 ){ $('.page-task-form .tabs .tab[data-tab="document"] .indicator').show().html( v_document_count ); } else { $('.page-task-form .tabs .tab[data-tab="document"] .indicator').hide().html(''); } // Индикатор количества файлов-аттачей на табе if ( v_attach_count > 0 ){ $('.page-task-form .tabs .tab[data-tab="attach"] .indicator').show().html( v_attach_count ); } else { $('.page-task-form .tabs .tab[data-tab="attach"] .indicator').hide().html(''); } // Индикатор количества платежей на табе ind = $('.page-task-form .tabs .tab[data-tab="finance"] .indicator'); if ( v_payments_total > 0 ){ ind.show().html( v_payments_total ); // Фон индикатора по наличию неподтвержденных платежей if ( v_payments_wait_ack > 0) { ind.css('background-color', 'yellow').css('color', 'black'); } else { ind.css('background-color', '#24a00c').css('color', 'white'); } } else { ind.hide().html(''); } // Индикатор количества смет (не архивных) на табе if ( v_active_smeta_count > 0 ){ $('.page-task-form .tabs .tab[data-tab="smeta"] .indicator').show().html( v_active_smeta_count ); } else { $('.page-task-form .tabs .tab[data-tab="smeta"] .indicator').hide().html(''); } // Признак Внимание! renderTaskAttn( v_attn ); // Отображение метки задачи-субподряда в шапке if ( v_subcontract == 1) { $('.page-task-form .d-subcontract').show(); } else { $('.page-task-form .d-subcontract').hide(); } // Индикатор количества тендеров на табе if ( v_tender_count > 0 ){ $('.page-task-form .tabs .tab[data-tab="tender"] .indicator').show().html( v_tender_count ); } else { $('.page-task-form .tabs .tab[data-tab="tender"] .indicator').hide().html(''); } /* ind = $('.page-task-form .tabs .tab[data-tab="tender"] .indicator'); if ( v_ask_subcontract_count > 0 || v_subcontract_count > 0 ){ ind.show().html( parseInt(v_ask_subcontract_count) + parseInt(v_subcontract_count) ); // Фон индикатора if ( parseInt(v_ask_subcontract_count) > 0) { ind.css('background-color', 'yellow').css('color', 'black'); } else { ind.css('background-color', '#24a00c').css('color', 'white'); } } else { ind.hide().html(''); } */ // Индикатор количества портфолио фото на табе ind = $('.page-task-form .tabs .tab[data-tab="portfolio"] .indicator'); if ( v_is_portfolio == 1 ){ ind.show().html( parseInt(v_portfolio_photo_count) ).css('background-color', '#24a00c').css('color', 'white'); } else { ind.hide().html(''); } // Индикатор количества рекламаций на табе ind = $('.page-task-form .tabs .tab[data-tab="claim"] .indicator'); if ( v_claim_count > 0 ){ ind.show().html( v_claim_count ); } else { ind.hide().html(''); } // Индикатор доставки на табе ind = $('.page-task-form .tabs .tab[data-tab="delivery"] .indicator'); if ( v_delivery_type == 'DELIVERY' ){ ind.show().html( 'д' ); } else { ind.hide().html(''); } // Признак Избранное if ( v_favorite_id != null ) { if ( v_favorite_id != -1 ) { $('.page-task-form .act-set-favorite').html('favorite').css('color', 'orange').attr('title', 'Убрать из Избранного').attr('data-value', 'false').show(); } else { $('.page-task-form .act-set-favorite').hide(); } } else { $('.page-task-form .act-set-favorite').html('favorite_border').css('color', 'silver').attr('title', 'Добавить в Избранное').attr('data-value', 'true').show(); } // Подстраиваем высоту блоков adjustTaskFormHeight(); } // Редактор даты Договора $('.page-task-form .act-edit-agreement_date').click(function(){ $(this).hide(); $('.page-task-form .d-agreement_date_ddmmyyyy').hide(); $('.page-task-form .bar-input-agreement_date').show().focus(); $('.page-task-form .act-put-agreement_date').show(); }); // Сохранить новую Дату договора $('.page-task-form .act-put-agreement_date').click(function(){ // Проверка корректности даты Договора var agreement_date = ''; var m = $('.page-task-form .i-agreement_date').val(); // console.log(m); if ( (m == '') || ( !moment( m, "YYYY-MM-DD").isValid() ) ) { $('.page-task-form .i-agreement_date').focus(); alert('Недопустимое значение даты!'); return; } else { agreement_date = m; } var z_task_id = $('.page-task-form .d-task_id').val(); $('.loader').show(); $.ajax({ url: base_url + '/handler/task/put-task.php', cache: false, type: "POST", data: { 'action': 'agreement_date', 'task_id': z_task_id, 'agreement_date': agreement_date }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); // Отображаем форму заказа showTaskForm( z_task_id, 'main' ); // Отображаем шапку showTaskHeader( z_task_id ); } }); }); // Кнопка номера телефона - обработка наведения $('page-task-form .act-show-phone-form').hover( function(){ phoneNumberOverIn( $(this) ) }, function(){ phoneNumberOverOut( $(this) ) } ); // Нажатие на кнопку - Телефон в шапке заказа $('.page-task-form .act-show-phone-form').click(function(){ showPhoneForm( $(this).attr('data-phone') ); }); // Очистить фильтр заказов $('.act-clear-task-filter').click(function(){ localStorage['view_task_filter'] = 0; $('.page-task-list .bar-filter').hide(''); $('.page-task-list .bar-view-control').show(); adjustTaskListHeight(); $('.page-task-list .d-filter-agreement_date').attr('data-period', '').html('не задана'); $('.page-task-list .bar-filter .category_id .d-category_id').val( null ); $('.page-task-list .i-filter-agroup_actor_id').val(''); $('.page-task-list .i-filter-photo').val(''); $('.page-task-list .i-filter-attach').val(''); $('.page-task-list .i-filter-trademark').val(''); localStorage['filter_trademark'] = ''; $('.page-task-list .i-filter-source').val(''); localStorage['filter_source'] = ''; $('.page-task-list .i-filter-is_agreement_signed').val(''); localStorage['filer_is_agreement_signed'] = ''; $('.page-task-list .i-filter-task-mode').val(''); localStorage['filter_task_mode'] = ''; $('.page-task-list .i-filter-task-archive').val(''); localStorage['filter_task_archive'] = ''; $('.page-task-list .i-select-task-finish').val(''); localStorage['filter_task_finish'] = ''; $('.page-task-list .i-date_begin').val(''); $('.page-task-list .i-date_end').val(''); $('.page-task-list .i-search-task').val(''); localStorage.removeItem('search_task_keywords'); drawCategory('.page-task-list', null, null, null); localStorage['task_page_num'] = 1; showTaskList(); }); // Клик по чеку Показать описания $('.page-task-list .chk-show-descr').click(function(){ localStorage['show_descr_in_task_list'] = ( $(this).prop('checked') )? 1 : 0; showTaskList(); }); // Клик по чеку Показать фото $('.page-task-list .chk-show-photo').click(function(){ localStorage['show_photo_in_task_list'] = ( $(this).prop('checked') )? 1 : 0; showTaskList(); }); // Показать селектор стутусов в фильтре списка заказов $('.page-task-list .category_id').click(function(){ $('.page-task-list .category-selector').show(); // Показываем кнопку, т.к. ее видимость используется в работе глобального Esc $('.page-task-list .act-close-category-selector').show(); }); // Показать селектор статусов в карточке заказа $('.page-task-form .category_id').click(function(){ $('.page-task-form .category-selector').show(); // Показываем кнопку, т.к. ее видимость используется в работе глобального Esc $('.page-task-form .act-close-category-selector').show(); }); // Выбор статуса в селекторе в фильтре списка заказов $('.page-task-list .category-selector div[data-category_id]').click(function(){ drawCategory ( '.page-task-list', $(this).attr('data-category_id'), $(this).find('div.color-box').css('background-color'), $(this).find('div.category-name').html() ); localStorage['task_page_num'] = 1; showTaskList(); }); // Выбор статуса в селекторе в карточке заказа $('.page-task-form .category-selector div[data-category_id]').click(function(){ var z_category_id = $(this).attr('data-category_id'); // console.log('z_category_id'); drawCategory ( '.page-task-form', z_category_id, $(this).find('div.color-box').css('background-color'), $(this).find('div.category-name').html() ); var z_task_id = $('.page-task-form .d-task_id').val(); $('.loader').show(); $.ajax({ url: base_url + '/handler/task/put-task.php', cache: false, type: "POST", data: { 'action': 'category', 'task_id': z_task_id, 'category_id': z_category_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ // console.log(json); var data = $.parseJSON(json); // console.log(data); $('.loader').hide(); showTaskHeader( z_task_id ); } }); }); function drawCategory(v_selector, v_category_id, v_category_color_rgb, v_category_name) { //console.log('v_category_name = ' + v_category_name); $(v_selector + ' .category_id .d-category_id').val( v_category_id ); if ( v_category_id > 0 ){ $(v_selector + ' .category_id .color-box').show().css('background-color', v_category_color_rgb ); $(v_selector + ' .category_id .category-name').html(v_category_name).show(); } else if ( v_category_id == -1 ) { $(v_selector + ' .category_id .color-box').hide(); $(v_selector + ' .category_id .category-name').html('без статуса').show(); } else { $(v_selector + ' .category_id .color-box').hide(); //console.log( 'v_selector=' + v_selector ); var z_caption = (v_selector == '.page-task-list')? "(все)" : "без статуса"; $(v_selector + ' .category_id .category-name').html( z_caption ).show(); } $(v_selector + ' .category-selector').hide(); } // Фильтр списка заказов: // Выбор значения в списке исполнителей, Выбор значения признака фото заказов, Выбор значения признака файлов заказов $('.page-task-list .i-filter-actor_id, .page-task-list .i-filter-photo, .page-task-list .i-filter-attach').change(function(){ localStorage['task_page_num'] = 1; showTaskList(); }); // Фильтр списка заказов: // Выбор для фильтра Даты договора значения периода в селекторе $('.page-task-list .bar-filter .date-period-selector a').click(function(){ $('.page-task-list .d-filter-agreement_date').attr('data-period', $(this).attr('data-value') ).html( $(this).html() ); $('.page-task-list .bar-filter .i-date_begin').val(''); $('.page-task-list .bar-filter .i-date_end').val(''); $('.page-task-list .bar-filter .date-period-selector').hide(); localStorage['task_page_num'] = 1; showTaskList(); }); // Фильтр списка заказов: // Задание в фильтре Даты договора начала и конца периода в селекторе явно $('.page-task-list .act-set-period').click(function(){ var date1 = ''; if ( $('.page-task-list .bar-filter .i-date_begin').val() != '' ){ date1 = $('.page-task-list .bar-filter .i-date_begin').val(); } var date2 = ''; if ( $('.page-task-list .bar-filter .i-date_end').val() != '' ){ date2 = $('.page-task-list .bar-filter .i-date_end').val(); } $('.page-task-list .d-filter-agreement_date').attr('data-period', '').html( date1 + ' / ' + date2 ); $('.page-task-list .bar-filter .d-filter-agreement_date').attr('data-period', ''); $('.page-task-list .bar-filter .date-period-selector').hide(); localStorage['task_page_num'] = 1; showTaskList(); }); // Активация таба и его карточки для формы заказа function showTaskTab(v_tab){ $('.page-task-form .response').html(''); // Активируем выбранный пункт меню $('.page-task-form .tab').removeClass('on'); $('.page-task-form .tab[data-tab="' + v_tab + '"]').addClass('on'); // Активируем карточку выбранного таба $('.page-task-form .tabcard').hide(); $('.page-task-form .tabcard[data-tab="' + v_tab + '"]').show(); // console.log('task v_tab = ' + v_tab ); } // Нажатие на таб в карточке заказа $('.page-task-form .bar-task-menu .tab').click(function(){ let z_task_id = $('.page-task-form .d-task_id').val(); // Активируем карточку выбранного таба showTaskForm(z_task_id, $(this).attr('data-tab') ); }); // Обновить списки на странице заказа $('.page-task-form .act-refresh-task-form').click(function(){ if ($('.page-task-form .d-task_id').val() != undefined){ showTaskForm($('.page-task-form .d-task_id').val(), $('.page-task-form .tab.on').attr('data-tab')); } }); // Заказ в Избранное / из Избранного $('.page-task-form .act-set-favorite').click(function(){ var z_task_id = $('.page-task-form .d-task_id').val(); setFavorite( 'TASK', z_task_id, $(this).attr('data-value'), 'TASK-FORM' ); }); // Закрыть выбор цвета в фильтре списка заказов и в карточке заказа $('.act-close-category-selector').click(function(){ // Скрываем кнопку, т.к. ее видимость используется в работе глобального Esc $(this).hide(); $('.category-selector').hide(); }); // Показать селектор даты договора $('.page-task-list .bar-filter .d-filter-agreement_date').click(function(){ $('.page-task-list .date-period-selector').show(); $('.page-task-list .act-close-date-period-selector').show() }); // Закрыть селектор даты договора фильтра заказов $('.page-task-list .bar-filter .act-close-date-period-selector').click(function(){ // Скрываем кнопку, т.к. ее видимость используется в работе глобального Esc $(this).hide(); $('.page-task-list .date-period-selector').hide(); }); // Закрыть страницу заказа $('.page-task-form .act-close-task').click(function(){ // Скрываем кнопку, т.к. ее видимость используется в работе глобального Esc $(this).hide(); // Восстанавливаем вызывающий контекст showPage( localStorage['work_mode'] ); }); // Нажатие на кнопку - Отложить заказ $('.page-task-form .act-pause-task').click(function(){ pauseTask( $('.page-task-form .d-task_id').val() ); }); // Нажатие на кнопку - Вернуть заказ из отложенных $('.page-task-form .act-resume-task').click(function(){ resumeTask( $('.page-task-form .d-task_id').val() ); }); // Нажатие на кнопку - Показать форму состояния заказа для его отмены $('.page-task-form .act-show-task-state-form[data-action="cancel"]').click(function(){ let z_task_id = $('.page-task-form .d-task_id').val(); showTaskStateForm( z_task_id, 'cancel' ); }); // Нажатие на кнопку - Вернуть заказ из отменённых $('.page-task-form .act-restore-task').click(function(){ restoreTask( $('.page-task-form .d-task_id').val() ); }); // Нажатие на кнопку - Заказ в АРХИВ $('.page-task-form .act-archive-task').click(function(){ archiveTask( $('.page-task-form .d-task_id').val() ); }); // Нажатие на кнопку - Вернуть из АРХИВ $('.page-task-form .act-unarchive-task').click(function(){ unarchiveTask( $('.page-task-form .d-task_id').val() ); }); // Нажатие на кнопку - Удалить заказ $('.page-task-form .act-delete-task').click(function(){ deleteTask( $('.page-task-form .d-task_id').val() ); }); // Сохранить форму добавления / редактирования заказа $('.page-task-form .act-put-task').click(function(){ $('.page-task-form .response').html(''); // console.log('3'); var agreement_num = $('.page-task-form .i-agreement_num').val(); var workdone = ($('.page-task-form .chk-workdone').is(':checked'))? 1 : 0; var z_action = $('.page-task-form .d-task-action').val(); var agreement_date = $('.page-task-form .i-agreement_date').val(); // Проверка корректности даты Акта выполненных работ var workdone_date = ''; var m = $('.page-task-form .i-workdone_date').val(); if (m != '') { if ( !moment( m, "YYYY-MM-DD").isValid() ) { $('.page-task-form .i-workdone_date').focus(); alert('Недопустимое значение даты!'); return; } else { workdone_date = m; } } var z_task_id = $('.page-task-form .d-task_id').val(); if ( $('.page-task-form input[name="customer_type"][value="YURIK"]').prop("checked") ){ var z_customer_type = 'YURIK'; var z_customer_node = 'bar-yurik'; } else { var z_customer_type = 'FIZIK'; var z_customer_node = 'bar-fizik'; } $('.loader').show(); $.ajax({ url: base_url + '/handler/task/put-task.php', cache: false, type: "POST", data: { 'action': z_action, 'task_mode': localStorage['task_mode'], 'trademark_id': $('.page-task-form .i-trademark_id').val(), 'source_id': $('.page-task-form .select-source_id').val(), 'task_id': z_task_id, 'customer_id': $('.page-task-form .d-customer_id').val(), 'object_id': $('.page-task-form .d-object_id').val(), 'agreement_num': agreement_num, 'agreement_date': agreement_date, 'document_type': $('.page-task-form .i-document_type').val(), 'document_number': $('.page-task-form .i-document_number').val(), 'document_note': $('.page-task-form .i-document_note').val(), 'registration_address': $('.page-task-form .i-registration_address').val(), 'workdone': workdone, 'workdone_date': workdone_date, 'task_descr': $('.page-task-form .d-task_descr').val(), 'customer_remark': $('.page-task-form .i-customer_remark').val(), 'partner_remark': $('.page-task-form .i-partner_remark').val(), 'amount_agreement': $('.page-task-form .i-amount_agreement').val(), 'amount_prepayment': $('.page-task-form .i-amount_prepayment').val(), 'param_int_1': $('.page-task-form .i-param_int_1').val(), 'param_varchar_1': $('.page-task-form .i-param_varchar_1').val(), 'customer_name': $('.page-task-form .' + z_customer_node + ' .i-customer_name').val(), 'customer_phone': $('.page-task-form .' + z_customer_node + ' .i-customer_phone').val(), 'customer_email': $('.page-task-form .' + z_customer_node + ' .i-customer_email').val(), 'customer_type': z_customer_type, 'company_id': $('.page-task-form .d-company_id').val(), 'company_full_name': $('.page-task-form .i-company_full_name').val(), 'company_yur_address': $('.page-task-form .i-company_yur_address').val(), 'company_fiz_address': $('.page-task-form .i-company_fiz_address').val(), 'company_inn': $('.page-task-form .i-company_inn').val(), 'company_kpp': $('.page-task-form .i-company_kpp').val(), 'company_ogrn': $('.page-task-form .i-company_ogrn').val(), 'company_rasch_schet': $('.page-task-form .i-company_rasch_schet').val(), 'company_korr_schet': $('.page-task-form .i-company_korr_schet').val(), 'company_bik': $('.page-task-form .i-company_bik').val(), 'company_bank_name': $('.page-task-form .i-company_bank_name').val(), 'company_director': $('.page-task-form .i-company_director').val(), 'object_address': $('.page-task-form .bar-task-param .i-object_address').val(), 'object_howtoget': $('.page-task-form .bar-task-param .i-object_howtoget').val(), 'object_lat': $('.page-task-form .bar-task-param .i-object_lat').val(), 'object_lng': $('.page-task-form .bar-task-param .i-object_lng').val(), 'object_kadastr_number': $('.page-task-form .bar-task-param .i-object_kadastr_number').val(), // Отказаться от поля 29.04.2019 // 'creator_id': $('.page-task-form .i-creator_id').val(), 'stage_id': localStorage['work_stage_id'], 'call_id': $('.page-task-form .d-call_id').val() }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ // console.log(json); var data = $.parseJSON(json); // console.log(data); $('.loader').hide(); // Результат $('.page-task-form .response').html( data.message ).attr('data-type', ((data.result < 0)? 'res-error' : 'res-ok')).show(); if (data.result >= 0){ switch (z_action){ case 'add': // При добавлении заказа - полностью обновляем форму, чтобы прорисовать табы $('.page-task-form .d-task_id').val( data.task_id ); $('.page-task-form .d-company_id').val( data.company_id ); $('.page-task-form .act-refresh-task-form').click(); // Возвращаться будем на список заказов localStorage['work_mode'] = 'task-list'; // Обновить список телефонных звонков, при необходимости if ( $('.page-task-form .d-call_id').val() != '' ) { showCallMode(); } break; case 'edit': // Отображаем шапку showTaskHeader( z_task_id ); // Отображаем форму заказа // showTaskForm( z_task_id, 'main' ); // showPage('task-form'); break; } } } }); }); // Нажатие на кнопку - открыть редактор Описания заказа $('.page-task-form .act-edit-task_descr').click(function(){ $('.page-task-form .bar-task_descr-editor').show(); $('.page-task-form .bar-task_descr-display').hide(); $('.page-task-form .i-task_descr').focus(); }); // Нажатие на кнопку - Сохранить Описание заказа $('.page-task-form .act-put-task_descr').click(function(){ let z_task_id = $('.page-task-form .d-task_id').val(); putTaskDescription( z_task_id ); }); // Нажатие на кнопку - Отменить редактирование Описания заказа $('.page-task-form .act-cancel-task_descr').click(function(){ let z_task_id = $('.page-task-form .d-task_id').val(); showTaskHeader( z_task_id ); }); // Описание заказа в шапке function putTaskDescription( v_task_id ){ $('.loader').show(); $.ajax({ url: base_url + '/handler/task/put-task.php', cache: false, type: "POST", data: { 'action': 'description', 'task_id': v_task_id, 'description': $('.page-task-form .i-task_descr').val() }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); showTaskHeader( v_task_id ); } }); } // Заказ в ОТЛОЖЕНО function pauseTask(v_task_id) { if (!confirm('Отложить заказ? Заказ потом можно вернуть из отложенных.')) return; $('.loader').show(); $.ajax({ url: base_url + '/handler/task/put-task.php', cache: false, type: "POST", data: { 'action': 'pause', 'task_id': v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ var data = $.parseJSON(json); switch (data.result){ case 0: $('.loader').hide(); // Отображаем форму заказа showTaskForm( v_task_id, 'main' ); break; } } }); } // Вернуть из ОТЛОЖЕНО function resumeTask(v_task_id) { if (!confirm('Вернуть заказ из отложенных?')) return; $('.loader').show(); $.ajax({ url: base_url + '/handler/task/put-task.php', cache: false, type: "POST", data: { 'action': 'resume', 'task_id': v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ var data = $.parseJSON(json); switch (data.result){ case 0: $('.loader').hide(); // Отображаем форму заказа showTaskForm( v_task_id, 'main' ); break; } } }); } // Заказ в ОТМЕНА // Перенесён в task-state.js // Вернуть из ОТМЕНА function restoreTask(v_task_id) { if (!confirm('Вернуть заказ из отменённых?')) return; $('.loader').show(); $.ajax({ url: base_url + '/handler/task/put-task.php', cache: false, type: "POST", data: { 'action': 'restore', 'task_id': v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ var data = $.parseJSON(json); switch (data.result){ case 0: $('.loader').hide(); // Отображаем форму заказа showTaskForm( v_task_id, 'main' ); break; } } }); } // Заказ в АРХИВ function archiveTask(v_task_id) { if (!confirm('Поместить заказ в АРХИВ ? Потом можно вернуть из АРХИВа.')) return; $('.loader').show(); $.ajax({ url: base_url + '/handler/task/put-task.php', cache: false, type: "POST", data: { 'action': 'archive', 'task_id': v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ var data = $.parseJSON(json); switch (data.result){ case 0: $('.loader').hide(); // Отображаем форму заказа showTaskForm( v_task_id, 'main' ); break; } } }); } // Вернуть из АРХИВ function unarchiveTask(v_task_id) { if (!confirm('Вернуть заказ из АРХИВа?')) return; $('.loader').show(); $.ajax({ url: base_url + '/handler/task/put-task.php', cache: false, type: "POST", data: { 'action': 'unarchive', 'task_id': v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ var data = $.parseJSON(json); switch (data.result){ case 0: $('.loader').hide(); // Отображаем форму заказа showTaskForm( v_task_id, 'main' ); break; } } }); } // Удалить заказ function deleteTask(v_task_id) { if (!confirm('Удалить заказ в корзину? (в течение следующих 6 месяцев заказ можно восстановить из раздела Сервис -> Корзина)')) return; $('.loader').show(); $.ajax({ url: base_url + '/handler/task/put-task.php', cache: false, type: "POST", data: { 'action': 'delete', 'task_id': v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ var data = $.parseJSON(json); switch (data.result){ case 0: showPage( localStorage['work_mode']); showTaskList(); $('.loader').hide(); break; } } }); } // Привязать бесхозный заказ function bindOwnerlessTask(v_task_id){ $('.loader').show(); $.ajax({ url: base_url + '/handler/task/put-task.php', cache: false, type: "POST", data: { 'action': 'bind-ownerless-task', 'task_id': v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); // Отображаем форму заказа showTaskForm( v_task_id, 'stage' ); // Отображаем шапку showTaskHeader( v_task_id ); } }); } //-------------------------------------------------------------- // Тендеры ЗАКАЗ / РАБОТА //-------------------------------------------------------------- // Активируем выбранный пункт меню $('.tender-form .tab').click(function(){ let v_tab = $(this).attr('data-tab'); showTenderFormTab(v_tab); }); // Загрузка страницы Заказ-Тендер function showTaskTenderTab(){ let v_task_id = $('.page-task-form .d-task_id').val(); $('.page-task-form .bar-tender-control').html('Загрузка...'); $('.loader').show(); $.ajax({ url: base_url + '/handler/tender/get-task-tender-control.php', cache: false, type: "POST", data: { task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-task-form .bar-tender-control').html(data); showTaskHeader(v_task_id); // Показать форму тендера $('.page-task-form .act-show-tender-form').click(function(){ let v_tender_id = $(this).parent().attr('data-tender_id'); // console.log('v_tender_id ' + v_tender_id); showTenderForm(v_tender_id, null); // null - показать вкладку, соотв статусу тендера }); // Добавить Тендер ЗАКАЗ к заказу $('.page-task-form .act-add-tender_task').click(function(){ let v_task_id = $('.page-task-form .d-task_id').val(); // console.log('act-add-tender_task ' + v_task_id); addTender('task', v_task_id); }); /* // Закрыть страницу заказа $('.page-task-form .act-close-task').click(function(){ // Скрываем кнопку, т.к. ее видимость используется в работе глобального Esc $(this).hide(); // Восстанавливаем вызывающий контекст // showPage( localStorage['work_mode'] ); }); */ } }); } // Создать новый тендер function addTender(v_lot_type, v_lot_id){ $('.loader').show(); // console.log('putTender'); $.ajax({ url: base_url + '/handler/tender/put-tender.php', cache: false, type: "POST", dataType: 'json', data: { action: 'add', lot_type : v_lot_type, lot_id: v_lot_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); showTaskTenderTab(); } }); } // Активируем выбранный пункт меню $('.tender-form .act-put-tender').click(function(){ let v_tender_id = $('.tender-form .d-tender_id').val(); saveTender(v_tender_id); }); // Сохранить существующий тендер из Формы тендера function saveTender(v_tender_id){ $('.loader').show(); // console.log('putTender'); $('.tender-form .response').html('').hide(); let z_lot_location = $('.tender-form .i-lot_location').val(); let z_date_start_yyyymmdd = $('.tender-form .i-date_start').val(); let z_time_start_hhmi = $('.tender-form .i-time_start').val(); let z_start_amount = $('.tender-form .i-start_amount').val(); let z_step_amount = $('.tender-form .i-step_amount ').val(); let z_fee_persent = $('.tender-form .i-fee_persent').val(); let z_fee_amount = $('.tender-form .i-fee_amount').attr('data-fee_amount'); console.log('i-fee_amount=' + z_fee_amount); $.ajax({ url: base_url + '/handler/tender/put-tender.php', cache: false, type: "POST", dataType: 'json', data: { action: 'save', tender_id: v_tender_id, lot_type: 'task', lot_location: z_lot_location, date_start_yyyymmdd: z_date_start_yyyymmdd, time_start_hhmi: z_time_start_hhmi, start_amount: z_start_amount, step_amount: z_step_amount, fee_persent: z_fee_persent, fee_amount: z_fee_amount }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.tender-form .response').html('').hide(); switch (data.result){ case 0: $('.tender-form .response').html( data.message ).attr('data-type', 'res-ok').show(); break; default: $('.tender-form .response').html( data.message ).attr('data-type', 'res-error').show(); break; } } }); } // Открыть / Показать форму тендера function showTenderForm(v_tender_id, v_tab){ $('.loader').show(); // console.log('showTenderForm'); $('.tender-form .d-tender_id').val(v_tender_id); $('.tender-form .d-lot_type_display').html(''); $('.tender-form .i-lot_descr').html(''); $('.tender-form .d-amount_smeta').html(''); $('.tender-form .d-tender_type').html('').attr('title', ''); $('.tender-form .d-tender_name').html(''); $.ajax({ url: base_url + '/handler/tender/get-tender.php', cache: false, type: "POST", dataType: 'json', data: { tender_id : v_tender_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); // Тип тендера - иконка switch (data.tender.type){ case 'up': $('.tender-form .d-tender_type') .html('upload_2') .attr('title', 'Тип тендера: КТО БОЛЬШЕ?'); break; case 'down': $('.tender-form .d-tender_type') .html('download_2') .attr('title', 'Тип тендера: КТО МЕНЬШЕ?'); break; } // Тип лота $('.tender-form .d-lot_type_display').html(data.tender.lot_type_display); $('.tender-form .d-tender_name').html(data.tender.name); let z_status_title = null; let z_status_color = null; // Статус: new - новый тендер, настраивается организатором; active - идут торги; finished - торги завершены, расчёт итогов; archive - тендер в архиве; cancel - отменённый тендер switch (data.tender.status){ case 'new': if (v_tab == null) {v_tab = 'descr';} z_status_title = 'НАСТРОЙКА'; z_status_color = 'orange'; break; case 'active': if (v_tab == null) {v_tab = 'trade';} z_status_title = 'ИДУТ ТОРГИ'; z_status_color = 'green'; break; case 'finished': if (v_tab == null) {v_tab = 'winner';} z_status_title = 'ТОРГИ ЗАВЕРШЕНЫ, РАСЧЁТ ИТОГОВ'; z_status_color = 'brown'; break; case 'archive': if (v_tab == null) {v_tab = 'winner';} z_status_title = 'ТЕНДЕР в АРХИВЕ'; z_status_color = 'grey'; break; } // console.log(z_status_title); $('.tender-form .d-status_title').html(z_status_title).css('color', z_status_color); // Приглашение if (data.tender.invite_count > 0){ $('.tender-form .d-invite_info').html(data.tender.invite_count + ' компан.').css('color', 'green'); } else if (data.tender.invite_count == 0) { $('.tender-form .d-invite_info').html('не разослано').css('color', 'red'); } // Участников (приняли приглашение) let z_member_count_color = null; if (data.tender.member_count > 0){ z_member_count_color = 'green'; } else if (data.tender.member_count == 0) { z_member_count_color = 'red'; } $('.tender-form .d-ack_member').html(data.tender.member_count + ' компан.').css('color', z_member_count_color); // Поля $('.tender-form .i-date_start').val(data.tender.dt_start_yyyymmdd); $('.tender-form .i-time_start').val(data.tender.dt_start_hhmiss); $('.tender-form .i-start_amount ').val(data.tender.start_amount); $('.tender-form .i-step_amount ').val(data.tender.step_amount); $('.tender-form .i-fee_persent').val(data.tender.fee_persent).attr('data-fee_persent', data.tender.fee_persent); $('.tender-form .i-fee_amount').val( number_format(data.tender.fee_amount, '2', '.', ' ') ).attr('data-fee_amount', data.tender.fee_amount); $('.tender-form .i-lot_descr').html(data.tender.lot_descr); $('.tender-form .d-lot_location').html(data.tender.lot_location); $('.tender-form .i-lot_location').val(data.tender.lot_location); $('.tender-form .d-amount_smeta').html(data.tender.amount_smeta_dispay); // Активация таба формы тендера showTenderFormTab(v_tab); } }); } // Форма тендера: Обновить отчисления function updateTenderFee(){ // Отчисления - расчёт только по fee_persent let start_amount = parseFloat( $('.tender-form .i-start_amount').val().replace(/ /gi, '') ); // console.log('start_amount=' + start_amount); let fee_persent = parseFloat( $('.tender-form .i-fee_persent').val().replace(/ /gi, '') ); // console.log('fee_persent=' + fee_persent); $('.tender-form .i-fee_persent').attr('data-fee_persent', fee_persent); let fee_amount = start_amount * fee_persent / 100; // console.log('fee_amount=' + fee_amount); $('.tender-form .i-fee_amount').val( number_format(fee_amount, '2', '.', ' ') ).attr('data-fee_amount', fee_amount); } // Форма Тендера: Расчет изменений наценке в процентах $('.tender-form .i-fee_persent') .keyup(function(){ updateTenderFee(); }) .change(function(){ updateTenderFee(); }); // Кнопка обновить $('.tender-form .act-refresh').click(function(){ // Очищаем поиск по каталогу //localStorage.removeItem('search_catalog_keywords'); let z_tender_id = $('.tender-form .d-tender_id').val(); // Обновляем вкладку let v_tab = $('.tender-form .tabs .tab.on').attr('data-tab'); console.log('v_tab=', v_tab); showTenderForm(z_tender_id, v_tab); }); // Активация таба формы тендера function showTenderFormTab(v_tab){ let z_tender_id = $('.tender-form .d-tender_id').val(); // Активируем выбранный пункт меню $('.tender-form .tab').removeClass('on'); $('.tender-form .tab[data-tab="' + v_tab + '"]').addClass('on'); // Активируем карточку выбранного таба $('.tender-form .tabcard').hide(); $('.tender-form .tabcard[data-tab="' + v_tab + '"]').show(); // console.log('showSmetaEditorTab v_tab=' + v_tab); // Обработка данных, специфичных для вкладки // console.log('v_tab=', v_tab); switch (v_tab){ case 'member': // Вкладка Участники $.ajax({ url: base_url + '/handler/tender/get-member-list.php', cache: false, type: "POST", data: { tender_id : z_tender_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.tender-form .member-list').html(data); $('.tender-form').center().show(); } }); break; } $('.tender-form').center().show(); // $('.tender-form .i-.........................').focus(); } // Закрыть форму тендера $('.tender-form .act-close-tender-form').click(function(){ $('.tender-form').hide(); });// Нажатие на кнопку - Показать форму состояния заказа для его отмены function showTaskStateForm( v_task_id, v_action ){ $('.task-state-form .d-task_id').val( v_task_id ); $('.task-state-form .d-action').val( v_action ); // = cancel | pause switch (v_action){ case 'cancel': $('.task-state-form .bar-cancel').show(); $('.task-state-form .bar-pause').hide(); break; case 'pause': $('.task-state-form .bar-pause').show(); $('.task-state-form .bar-cancel').hide(); break; } $('.task-state-form .response').attr('data-type', '').html('').hide(); $('.task-state-form .i-cancel-reason, .task-state-form .i-pause-reason').val(''); $('.task-state-form').show().center(); } // Закрыть форму состояния заказа $('.task-state-form .act-close-task-state-form').click(function(){ $('.task-state-form').hide(); }); // Заказ в ОТМЕНА function cancelTask(v_task_id) { $('.loader').show(); $.ajax({ url: base_url + '/handler/task/put-task.php', cache: false, type: "POST", dataType: 'json', data: { action: 'cancel', task_id: v_task_id, reason: $('.bar-cancel .i-cancel-reason').val() }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.task-state-form .bar-cancel .response').html('').hide(); if ( parseInt(data.result) < 0 ) { // Ошибка $('.task-state-form .bar-cancel .response') .attr('data-type', 'res-error') .html(data.message) .show(); } else { // Все ок, отменено успешно $('.task-state-form').hide(); // Отображаем форму заказа showTaskForm( v_task_id, 'main' ); } } }); } // Нажатие на кнопку - Отменить заказ $('.task-state-form .act-cancel-task').click(function(){ cancelTask( $('.task-state-form .d-task_id').val() ); });// Завершить текущий этап function finishStage( v_task_id, v_stage_id, v_stage_text ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/stage/finish-stage.php', cache: false, type: "POST", data: { 'task_id': v_task_id, 'stage_id': v_stage_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); // console.log(json); var data = $.parseJSON(json); switch (data.result){ case 0: showPage('task-form'); showTaskForm( $('.page-task-form .d-task_id').val(), 'stage' ); break; case -1: alert('Нельзя завершить ' + v_stage_text + '! Назначьте сотрудника на следующий этап.'); break; } } }); }// Назначить исполнителя или создать резерв на дату function addAssign( v_assign_id, v_task_id, v_stage_id, v_actor_id, v_wdate ){ // Новое назначение Резерва или Сотрудника из Карточки заказа $('.loader').show(); $.ajax({ url: base_url + '/handler/assign/put-assign.php', cache: false, type: "POST", data: { action: 'add', task_id: v_task_id, actor_id: v_actor_id, stage_id: v_stage_id, wdate: v_wdate }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ //console.log(json); $('.loader').hide(); var data = $.parseJSON(json); switch (data.result){ case 0: showPage('task-form'); showTaskForm( $('.page-task-form .d-task_id').val(), 'stage' ); break; } } }); } // Переместить дату существующего резерва в Календаре function shiftDateAssign(v_assign_id, v_task_id, v_wdate){ $('.loader').show(); $.ajax({ url: base_url + '/handler/assign/put-assign.php', cache: false, type: "POST", data: { action: 'shift_date', task_id: v_task_id, assign_id: v_assign_id, wdate: v_wdate }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); //console.log(json); var data = $.parseJSON(json); switch (data.result){ case 0: // Закрыть верхнюю панель $('.act-close-shift-date').click(); // Показать Календарь showPage('calendar'); break; } } }); } // Редактировать назначение function editAssign(v_assign_id, v_status) { $('.loader').show(); $.ajax({ url: base_url + '/handler/assign/put-assign.php', cache: false, type: "POST", data: { action: 'edit', assign_id: v_assign_id, status: v_status }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ //console.log(json); var data = $.parseJSON(json); switch (data.result){ case 0: showPage('task-form'); showTaskForm( $('.page-task-form .d-task_id').val(), 'stage' ); $('.loader').hide(); break; } } }); } // Удалить назначение function deleteAssign( v_assign_id, v_task_id, v_stage_id, v_actor_id ) { var txt = ( v_actor_id > 0 )? 'сотрудника' : 'резерв'; if (!confirm('Снять ' + txt + '?')) return; $('.loader').show(); $.ajax({ url: base_url + '/handler/assign/put-assign.php', cache: false, type: "POST", data: { action: 'delete', assign_id: v_assign_id, task_id: v_task_id, stage_id: v_stage_id, actor_id: v_actor_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ //console.log(json); $('.loader').hide(); var data = $.parseJSON(json); switch (data.result){ case 0: showPage('task-form'); showTaskForm( $('.page-task-form .d-task_id').val(), 'stage' ); break; case -1: $txt = ( v_actor_id > 0 )? "Сотрудника" : "Резерв"; alert($txt + ' может снять только Администратор!'); break; case -2: $txt = ( v_actor_id > 0 )? "Сотрудника" : "Резерв"; alert('Нельзя снять единственного сотрудника по заказу!'); break; } } }); }var min_search_keywords_length = 3; $('.page-task-form .i-customer-search-keywords').keyup(function(){ SearchCustomer(); }); // Добавить нового заказчика, Поиск не выполнять $('.page-task-form .act-add-new-customer, .page-task-form .act-add-new-customer-const').click(function(){ $('.page-task-form .bar-customer-search').hide(); $('.page-task-form .bar-task-param').show(); $('.page-task-form .i-customer_name').val( $('.page-task-form .i-customer-search-keywords').val() ).focus(); $('.page-task-form .i-choose-customer_type input[value="FIZIK"]').click(); }); // Клик - выбор типа клиента: физик или юрик $('.page-task-form .i-choose-customer_type input').click(function(){ switch ( $(this).prop("checked", true).val() ){ case 'FIZIK': $('.page-task-form .bar-yurik').hide(); $('.page-task-form .bar-fizik').show(); break; case 'YURIK': $('.page-task-form .bar-yurik').show(); $('.page-task-form .bar-fizik').hide(); break; } }); // Открыть форму выбора существующего заказчика $('.page-task-form .act-select-customer').click(function(){ $('.page-task-form .bar-customer-search-result').hide(); $('.page-task-form .bar-customer-search').show(); $('.page-task-form .i-customer-search-keywords').val('').focus(); SearchCustomer(); }); function showCustomerDetail(v_customer_id){ $('.page-task-form .customer-search-result-detail').html('').hide(); $('.loader').show(); $.ajax({ url: base_url + '/handler/customer/get-customer-detail.php', cache: false, type: "POST", data: { customer_id: v_customer_id, keywords: $('.page-task-form .i-customer-search-keywords').val() }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-task-form .bar-customer-search').show(); $('.page-task-form .bar-customer-search-param').hide(); $('.page-task-form .bar-new-customer-note').hide(); $('.page-task-form .act-add-new-customer').hide(); $('.page-task-form .customer-search-result-list').hide(); $('.page-task-form .customer-search-result-detail').html( data ).show(); // Выбрать заказчика и адрес из Дитэйла, заполнив форму новой Заявки $('.page-task-form .act-set-customer').click(function(){ event.stopPropagation(); $('.page-task-form .d-customer_id').val( $('.page-task-form .customer-search-result-detail .d-customer_id').val() ); $('.page-task-form .i-customer_name').val( $('.page-task-form .customer-search-result-detail .d-customer_name').val() ).addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form .i-customer_phone').val( $('.page-task-form .customer-search-result-detail .d-customer_phone').val() ).addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form .i-customer_email').val( $('.page-task-form .customer-search-result-detail .d-customer_email').val() ).addClass('readonly').attr('readonly', 'readonly'); // Выбрать Физлицо или Юрлицо if ( $('.page-task-form .d-customer_type').val() == 'FIZIK' ){ $('.page-task-form input[name="customer_type"][value="FIZIK"]').prop("checked", true).addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form input[name="customer_type"][value="FIZIK"]').click(); } if ( $('.page-task-form .d-customer_type').val() == 'YURIK' ){ $('.page-task-form input[name="customer_type"][value="YURIK"]').prop("checked", true).addClass('readonly').attr('readonly', 'readonly'); $('.page-task-form input[name="customer_type"][value="YURIK"]').click(); } $('.page-task-form .d-object_id').val( $(this).parent().parent().attr('data-object_id') ); $('.page-task-form .i-object_address').val( $(this).parent().parent().attr('data-object_address') ); $('.page-task-form .bar-task-param').show(); $('.page-task-form .bar-customer-search').hide(); $('.page-task-form .bar-customer-search-param').hide(); $('.page-task-form .customer-search-result-detail').hide(''); }); // Отменить выбор заказчика из Дитэйла, показать список найденного $('.page-task-form .act-cancel-set-customer').click(function(){ $('.page-task-form .bar-customer-search-param').show(); $('.page-task-form .bar-customer-search').show(); $('.page-task-form .customer-search-result-detail').html('').hide(); $('.page-task-form .customer-search-result-list').show(); $('.page-task-form .bar-new-customer-note').show(); $('.page-task-form .act-add-new-customer').show(); }); } }); } // Поиск заказчиков по поисковым параметрам function SearchCustomer(){ if (( $('.page-task-form .i-customer-search-keywords').val() ).length < min_search_keywords_length){ //$('.page-task-form . ').addClass(color-red').html('Введите в поисковую строку не менее 3 символов!'); $('.page-task-form .customer-search-result-detail').html('').hide(); $('.page-task-form .customer-search-result-list').hide(); return; } //console.log('search-customer.php'); $('.page-task-form .customer-search-result-detail').html(''); $('.page-task-form .bar-customer-search-result').show(); $('.page-task-form .customer-search-result-listresult').hide(); $('.loader').show(); $.ajax({ url: base_url + '/handler/customer/search-customer.php', cache: false, type: "POST", data: { keywords: $('.page-task-form .i-customer-search-keywords').val() }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-task-form .customer-search-result-list').html( data ).show(); $('.page-task-form .customer-search-result-detail').html(''); $('.page-task-form .bar-new-customer-note').show(); $('.page-task-form .act-add-new-customer').show(); $('.page-task-form .i-customer-search-keywords').focus(); // Отобразить кнопки действий при наведении на строку $('.page-task-form .customer-search-result-list tr[data-customer_id]').hover( function(){ $('.page-task-form .customer-search-result-list tr').removeClass('over'); $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Клик на строку в результатах поиска $('.page-task-form .customer-search-result-list tr[data-customer_id]').click(function(){ // Подсветка выбранного заказчика $('.page-task-form .customer-search-result-list tr').removeClass('selected'); $(this).addClass('selected'); showCustomerDetail( $(this).attr('data-customer_id') ); }); } }); } // Обновить данные раздела Клиенты $('.page-customer-list .act-reload-customer-list-page').click(function(){ localStorage['customer_list_page_num'] = 1; reloadCustomerListPage(); }); // Фильтр по дням $('.page-customer-list .act-view-mode-day').click(function(){ localStorage['view_mode_date'] = 'VIEW_DAY'; reloadCustomerListPage(); }); // Фильтр по месяцам $('.page-customer-list .act-view-mode-month').click(function(){ localStorage['view_mode_date'] = 'VIEW_MONTH'; reloadCustomerListPage(); }); // Клик - обновить страницу в разделе Все клиенты function reloadCustomerListPage() { // Настройка отображения фильтра месяц-день $('.page-customer-list .act-view-mode-month, .page-customer-list .act-view-mode-day').removeClass('active'); switch (localStorage['view_mode_date']){ case 'VIEW_DAY': $('.page-customer-list .act-view-mode-day').addClass('active'); break; case 'VIEW_MONTH': $('.page-customer-list .act-view-mode-month').addClass('active'); break; } // $('.page-customer-list .act-show-customer-note').show(); // $('.page-customer-list .bar-new-customer-note').hide(); showCustomerList(); } // Список Все клиенты function showCustomerList(){ var z_elem = $('.page-customer-list .customer-list'); var z_customer_list_page_num = localStorage['customer_list_page_num']; // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-customer-list .bar-body').scrollTop(); localStorage['work_customer_list_scroll_top'] = z_scrollTop; z_elem.html('').css('opacity', '0.5'); $('.loader').show(); $.ajax({ url: base_url + '/handler/customer/get-customer-list.php', cache: false, type: "POST", data: { view_mode_date: localStorage['view_mode_date'], stage_id: localStorage['work_stage_id'], customer_list_page_num: z_customer_list_page_num, date_begin: localStorage['customer_list_date_begin'], date_end: localStorage['customer_list_date_end'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ z_elem.css('opacity', '1'); $('.loader').hide(); z_elem.html(data); adjustCustomerListHeight(); // Восстанавливаем прокрутку списка $('.page-customer-list .bar-body').scrollTop( localStorage['work_customer_list_scroll_top'] ); /* // Клик на ссылку скачивания CSV-отчета $('.page-customer-list .bar-body .act-download-customer-report').click(function(){ $.ajax({ url: base_url + '/docs/3/08-csv.php', cache: false, type: "POST", data: { stage_id: localStorage['work_stage_id'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ alert('123'); } }); }); */ // Формирование ссылки на CSV файл для МЗ $('.page-customer-list .bar-body .act-download-customer-report').parent().attr( 'href', '/docs/3/08-csv.php?stage_id=' + localStorage['work_stage_id'] + '&stage_name=' + localStorage['work_stage_name'] + '&date_begin=' + localStorage['customer_list_date_begin'] + '&date_end=' + localStorage['customer_list_date_end'] ); // Все клиенты, выбор страницы в пагинаторе $('.page-customer-list .paginator i').click(function(){ localStorage['customer_list_page_num'] = $(this).html(); showCustomerList(); }); // Наведение на строку z_elem.find('.customer-row').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Кнопка номера телефона - обработка наведения $('.page-customer-list .act-show-phone-form').hover( function(){ phoneNumberOverIn( $(this) ) }, function(){ phoneNumberOverOut( $(this) ) } ); // Кнопка номера телефона - Нажатие на кнопку $('.page-customer-list .act-show-phone-form').click(function(){ event.stopPropagation(); showPhoneForm( $(this).attr('data-phone') ); }); // Клик на строку: Активировать строку z_elem.find('.customer-row').click(function(){ z_elem.find('.customer-row .ext-row').css('display', 'none'); z_elem.find('.customer-row').removeClass('selected'); $(this).addClass('selected'); $(this).find('.ext-row').css('display', 'flex'); }); // Клик на иконку заказа: Показать карточку заказа - вкладка Клиента (основная) z_elem.find('.customer-row .act-show-task-main').click(function(){ var z_task_id = $(this).parent().parent().parent().attr('data-task_id'); // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-customer-list .bar-body').scrollTop(); localStorage['work_customer_list_scroll_top'] = z_scrollTop; // Показать карточку заказа - вкладка ЗАКАЗ showTaskForm(z_task_id , 'main'); }); } }); } // Настройка высоты страницы function adjustCustomerListHeight(){ var div_bar_stages_height = $('.page-customer-list .bar-stages').css('height'); var div_header_height = $('.page-customer-list .bar-header').css('height'); var summa = ' - ' + div_header_height + ' - ' + div_bar_stages_height; console.log('summa = ' + summa); $('.page-customer-list .bar-body').css( 'height', 'calc(100%' + summa + ')' ); } // Изменение даты начала периода в фильтра $('.page-customer-list .i-date_begin').change(function(){ localStorage['customer_list_date_begin'] = $(this).val(); }); // Изменение даты конца периода в фильтра $('.page-customer-list .i-date_end').change(function(){ localStorage['customer_list_date_end'] = $(this).val(); }); // Выбор этапа и подгрузка списка клиентов по нему $('.page-customer-list .bigtabs-stages .bigtab').click(function(){ clickCustomerListStageTab( $(this) ); }); // Показать этап у клиентов. function clickCustomerListStageTab(tab){ $('.page-customer-list .bigtabs-stages .bigtab').removeClass('on'); tab.addClass('on'); localStorage['work_stage_id'] = tab.attr('data-stage_id'); localStorage['work_stage_alias'] = tab.attr('data-stage_alias'); localStorage['work_stage_name'] = tab.html(); localStorage['filter_task_archive'] = '1'; var tab_name = 'Клиенты'; if ( localStorage['work_stage_alias'] == 'NEW' ) { tab_name = tab_name + ' НОВЫЕ'; } else { tab_name = tab_name + ' ' + localStorage['work_stage_name']; } $('.page-customer-list .bar-stage-tips div[data-stage-tip="task"]').show(); $('.page-customer-list .page-title').html( tab_name ); // Обновляем список клиентов showCustomerList(); }// Модуль доступа к системе DaData.ru для автоматического заполнения реквизитов клиентов const dadata_min_search_keywords_length = 5; const dadata_user_key = '06e9e01c99cb7b8c079e83574c857da72fa97229'; const dadata_count = 10; // Клик - открыть окно DaData $('.act-show-dadata-form').click(function(){ let z_customer_id = $('.page-task-form .d-customer_id').val(); showDadataForm( 'CUSTOMER', z_customer_id ); }); function showDadataForm( v_mode, v_customer_id ){ $('.dadata-form .d-dadata-mode').val( v_mode ); $('.dadata-form .d-customer_id').val( v_customer_id ); // Отображаем форму $('.dadata-form').show().center(); $('.dadata-form .dadata-list').html('').css('background-color', '#f0f0f0'); $('.dadata-form .i-dadata-search-keywords').val('').keyup().focus(); return; } // Закрыть форму DaData $('.dadata-form .act-close-dadata-form').click(function(){ $('.dadata-form').hide(); }); // Обработка ввода символа в поисковую строку с клавиатуры $('.dadata-form .i-dadata-search-keywords').keyup(function(){ // Кнопка Искать let srch = $('.dadata-form .act-dadata-search-keywords'); if ( $(this).val().length < dadata_min_search_keywords_length ) { srch.css( 'pointer-events', 'none' ).addClass( 'inactive' ); } else { srch.css( 'pointer-events', 'auto' ).removeClass( 'inactive' ); } }); // Клик - поиск в сервисе DaData $('.dadata-form .act-dadata-search-keywords').click(function(){ SearchDadata( $('.dadata-form .i-dadata-search-keywords').val() ); }); async function SearchDadata( v_keywords ){ $('.dadata-form .dadata-list').css('background-color', '#f0f0f0').html(''); $('.loader').show(); let url = "https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/party"; var options = { method: "POST", mode: "cors", headers: { "Content-Type": "application/json", "Accept": "application/json", "Authorization": "Token " + dadata_user_key }, body: JSON.stringify({ query: v_keywords, type: 'LEGAL', count: dadata_count }) } let response = await fetch(url, options); if (response.ok) { $('.loader').hide(); let data = await response.json(); let len = Object.keys(data.suggestions).length; if ( len > 0 ){ $('.dadata-form .dadata-list') .css('background-color', 'white') .html('
Найдено совпадений ' + len + ' шт. Выберите результат или повторите поиск:
'); } else { $('.dadata-form .dadata-list') .css('background-color', 'white') .html('
Реквизиты не найдены
Измените поисковую строку, повторите поиск
'); return; } let reslist = ''; for ( let k in data.suggestions ) { let z_dadata_type = data.suggestions[k].data.type; // console.log(data.suggestions[k]); // Наименование let z_dadata_name = ''; let z_dadata_name_ext = ''; if ( data.suggestions[k].value == undefined ){ z_dadata_name = ''; z_dadata_name_ext = ''; } else { z_dadata_name = data.suggestions[k].value; z_dadata_name_ext = '' + z_dadata_name + ''; } // Наименование полное let z_dadata_full_name = ''; let z_dadata_full_name_ext = ''; if ( data.suggestions[k].data.name.full_with_opf == undefined ){ z_dadata_full_name = ''; z_dadata_full_name_ext = ''; } else { z_dadata_full_name = data.suggestions[k].data.name.full_with_opf; z_dadata_full_name_ext = '' + z_dadata_full_name + ''; } // Должность let z_company_management_post = ''; let z_company_management_post_ext = ''; if ( data.suggestions[k].data.management == undefined || data.suggestions[k].data.management.post == undefined ){ z_company_management_post = ''; } else { z_company_management_post = data.suggestions[k].data.management.post; } // Имя руководителя let z_company_management_name = ''; let z_company_management_name_ext = ''; if ( data.suggestions[k].data.management == undefined || data.suggestions[k].data.management.name == undefined ){ z_company_management_name = ''; } else { z_company_management_name = data.suggestions[k].data.management.name; } // Руководитель: должность и имя let z_company_director = ''; let z_company_director_ext = ''; if (z_company_management_post != '' || z_company_management_name != ''){ z_company_director = z_company_management_post + ' ' + z_company_management_name; z_company_director_ext = ', руководитель ' + z_company_director + ''; } else { let z_company_director = ''; let z_company_director_ext = ''; } // Адрес let z_company_address = ''; let z_company_address_ext = ''; if ( data.suggestions[k].data.address.unrestricted_value == undefined ){ z_company_address = ''; z_company_address_ext = ''; } else { z_company_address = data.suggestions[k].data.address.unrestricted_value; z_company_address_ext = ', адрес ' + z_company_address + ''; } // ИНН let z_dadata_inn = ''; let z_dadata_inn_ext = ''; if ( data.suggestions[k].data.inn == undefined ){ z_dadata_inn = ''; z_dadata_inn_ext = ', ИНН -'; } else { z_dadata_inn = data.suggestions[k].data.inn; z_dadata_inn_ext = ', ИНН ' + z_dadata_inn + ''; } // КПП let z_dadata_kpp = ''; let z_dadata_kpp_ext = ''; if (data.suggestions[k].data.kpp == undefined){ z_dadata_kpp = ''; z_dadata_kpp_ext = ', КПП -'; } else { z_dadata_kpp = data.suggestions[k].data.kpp; z_dadata_kpp_ext = ', КПП ' + z_dadata_kpp + ''; } // ОГРН let z_dadata_ogrn = ''; let z_dadata_ogrn_ext = ''; if (data.suggestions[k].data.ogrn == undefined){ z_dadata_ogrn = ''; z_dadata_ogrn_ext = ', ОГРН -'; } else { z_dadata_ogrn = data.suggestions[k].data.ogrn; z_dadata_ogrn_ext = ', ОГРН ' + z_dadata_ogrn + ''; } // Phone let z_dadata_phone = ''; let z_dadata_phone_ext = ''; if (data.suggestions[k].data.phones == undefined){ z_dadata_phone = ''; z_dadata_phone_ext = ', тел. -'; } else { z_dadata_phone = data.suggestions[k].data.phones; z_dadata_phone_ext = ', тел. ' + z_dadata_phone + ''; } // E-mail let z_dadata_email = ''; let z_dadata_email_ext = ''; if (data.suggestions[k].data.emails == undefined){ z_dadata_email = ''; z_dadata_email_ext = ', e-mail -'; } else { z_dadata_email = data.suggestions[k].data.emails; z_dadata_email_ext = ', e-mail ' + z_dadata_email + ''; } reslist = reslist + '
' + '
' + z_dadata_name_ext + '
' + '
' + '' + z_dadata_full_name + '' + z_dadata_inn_ext + z_dadata_kpp_ext + z_dadata_ogrn_ext + // ', ОКПО ' + data.suggestions[k].data.okpo + '' + z_dadata_phone_ext + z_dadata_email_ext + z_company_director_ext + z_company_address_ext + '
' + '
'; } $('.dadata-form .dadata-list').html( $('.dadata-form .dadata-list').html() + reslist ); $('.dadata-form').center(); $('.dadata-list-row').click(function(){ selectDetails( $(this) ); }); } else { alert('error', response.status); } } // Копирование 1 параметра с анимацией function copyDetailsParam( v_details_row, z_name_from, z_name_to ){ $( '.task-form .' + z_name_to ) .val( v_details_row.attr( z_name_from ).replaceAll('^', '"') ) .css('background-color', 'yellow') .animate({ backgroundColor: 'white' }, 1000 ); } // Выбранную в списке строку с реквизитами копируем в карточку клиента function selectDetails( v_details_row ){ copyDetailsParam(v_details_row, 'data-customer_name', 'i-customer_name'); // Не правим: copyDetailsParam(v_details_row, 'data-customer_phone', 'i-customer_phone'); // Не правим: copyDetailsParam(v_details_row, 'data-customer_email', 'i-customer_email'); copyDetailsParam(v_details_row, 'data-company_full_name', 'i-company_full_name'); copyDetailsParam(v_details_row, 'data-company_yur_address', 'i-company_yur_address'); copyDetailsParam(v_details_row, 'data-company_fiz_address', 'i-company_fiz_address'); copyDetailsParam(v_details_row, 'data-company_director', 'i-company_director'); copyDetailsParam(v_details_row, 'data-company_inn', 'i-company_inn'); copyDetailsParam(v_details_row, 'data-company_kpp', 'i-company_kpp'); copyDetailsParam(v_details_row, 'data-company_ogrn', 'i-company_ogrn'); $('.dadata-form').hide('fast'); }// Настройка высоты КАЛЕНДАРЯ function adjustCalendarHeight(){ var div_stages_height = $('.page-calendar .bar-stages').css('height'); var div_title_height = $('.page-calendar .bar-title').css('height'); var summa = ' - ' + div_stages_height + ' - ' + div_title_height; $('.page-calendar .bar-body').css( 'height', 'calc(100%' + summa + ')' ); } // Обновить список $('.page-calendar .act-refresh-calendar').click(function(){ showCalendar(); }); // Выбор этапа и подгрузка списка заказов по нему $('.page-calendar .bigtabs-stages .bigtab').click(function(){ clickAssignStageTab( $(this) ); }); // Календарь: выбор этапа и подгрузка Календаря по нему function clickAssignStageTab(tab){ $('.page-calendar .bigtabs-stages .bigtab').removeClass('on'); tab.addClass('on'); localStorage['assign_stage_id'] = tab.attr('data-stage_id'); localStorage['assign_stage_name'] = tab.html(); localStorage['assign_actor_id'] = null; // Поднастраиваем элементы страницы switch (localStorage['assign_mode']){ case 'ACTOR_ON_DATE': $('.page-calendar .act-close-calendar').show(); break; case 'RESERV_ON_DATE': $('.page-calendar .act-close-calendar').show(); break; case 'CALENDAR': var z_assign_stage_name = ( localStorage['assign_stage_name'] != 'undefined' )? localStorage['assign_stage_name'] : ''; $('.page-calendar .page-title').html( 'Календарь работ ' + z_assign_stage_name ); $('.page-calendar .act-close-calendar').hide(); break; } // Обновляем список showCalendar(); } // При изменении начальной даты в календаре $('.page-calendar .i-wdate_begin').change( function(){ if ( $('.page-calendar .i-wdate_begin').val() != '' ){ localStorage['wdate_begin'] = $('.page-calendar .i-wdate_begin').val(); showCalendar(); } else { $(this).val( moment().add(-2, 'days').format('YYYY-MM-DD') ); } }); // Календарь function showCalendar(){ var v_stage_id = localStorage['assign_stage_id']; var v_actor_id = localStorage['assign_actor_id']; // Показываем кнопку в режимах выбора. Также видимость кнопки используется в работе глобального Esc if ( localStorage['assign_mode'] != 'CALENDAR' ) { $('.page-calendar .act-close-calendar').show(); } $('.page-calendar .i-wdate_begin').val( localStorage['wdate_begin'] ); localStorage['wdate_end'] = moment( localStorage['wdate_begin'] ).add(1, 'months').format('YYYY-MM-DD'); $('.page-calendar .i-wdate_end').val( localStorage['wdate_end'] ); if (v_stage_id == null) return; $('.loader').show(); $('.page-calendar .calendar, .page-calendar .calendar-detail').html('Загрузка...'); $('.page-calendar').css('opacity', '0.5'); $.ajax({ url: base_url + '/handler/calendar/get-calendar.php', cache: false, type: "POST", data: { stage_id: v_stage_id, actor_id: v_actor_id, wdate_begin: localStorage['wdate_begin'], wdate_end: localStorage['wdate_end'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-calendar').css('opacity', '1'); $('.page-calendar .calendar').html(data); $('.page-calendar .calendar-detail').html(''); // Настройка высоты блока adjustCalendarHeight(); // Клик по строке даты в календаре - показываем дитэйл $('.page-calendar .date-row').click(function(){ var wdate = $(this).attr('data-wdate'); localStorage['work_date'] = wdate; // Новый временный фрагмент, сделан 24.06.2020 по просьбе МЗ // При клике на строку с датой - НЕ показывать дитэйл по дате if ( $(this).attr('data-mz_dealer_flag') == 1 ){ return; } showCalendarDetail(wdate, $(this).attr('data-remain_assign_count') ); // Подсветка выбранной даты $('.page-calendar .date-row').removeClass('selected'); $(this).addClass('selected'); }); // Отобразить при наведении на строку $('.page-calendar .date-row').hover( function(){ //$(this).find('td i.act-ico').css('visibility', 'visible'); $(this).addClass('over'); }, function(){ //$(this).find('td i.act-ico').css('visibility', 'hidden'); $(this).removeClass('over'); } ); // Пытаемся восстановить контекст - выбрать рабочий товар $('.page-catalog .item-list tr[data-item_id = ' + localStorage['work_item_id'] + ']').click(); // Пытаемся восстановить контекст - выбрать рабочую дату if (localStorage['work_date'] != '') { $('.page-calendar .date-row[data-wdate = ' + localStorage['work_date'] + ']').click(); } } }); } // Показать дитэйл по заказу function showCalendarDetail(v_wdate, v_remain_assign_count) { if (!$('div').is('.page-calendar .calendar-detail')) return; $('.page-calendar .calendar-detail').html('
Загрузка...
'); $('.page-calendar .calendar-detail .avail-actor-list').hide().html(''); $('.loader').show(); $.ajax({ url: base_url + '/handler/calendar/get-calendar-detail.php', cache: false, type: "POST", data: { mode: localStorage['assign_mode'], wdate: v_wdate, stage_id: localStorage['assign_stage_id'], remain_assign_count: v_remain_assign_count, partner_details_id: localStorage['partner_details_id'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); // console.log(data); $('.page-calendar .calendar-detail').html(data); $('.page-calendar .calendar-detail .stage_name').html( localStorage['assign_stage_name'] ); // Поднастраиваем элементы страницы if (localStorage['assign_mode'] == 'ACTOR_ON_DATE'){ $('.page-calendar .act-reserv-on-date').hide(); } else if (localStorage['assign_mode'] == 'RESERV_ON_DATE'){ $('.page-calendar .act-reserv-on-date').show(); } else { $('.page-calendar .act-reserv-on-date').hide(); } // Настройка высоты блока adjustCalendarHeight(); // Кнопка номера телефона - обработка наведения $('.page-calendar .calendar-detail .act-show-phone-form').hover( function(){ phoneNumberOverIn( $(this) ) }, function(){ phoneNumberOverOut( $(this) ) } ); // Кнопка номера телефона - Нажатие на кнопку $('.page-calendar .calendar-detail .act-show-phone-form').click(function(){ showPhoneForm( $(this).attr('data-phone') ); }); // Ссылка "Показать документы" $('.page-calendar .calendar-detail .act-show-document-list').click(function(){ $(this).parent().parent().parent().parent().find('.bar-doc-list').toggle(); }); // Нажатие на кнопку - добавить новый резерв на дату или переместить дату существующего резерва $('.page-calendar .calendar-detail .act-reserv-on-date').click(function(){ if ( localStorage['assign_id_to_shift_date'] > 0 ) { // Переместить дату существующего резерва shiftDateAssign( localStorage['assign_id_to_shift_date'], localStorage['assign_task_id'], v_wdate); } else { // Добавить новый резерв addAssign( null, localStorage['assign_task_id'], localStorage['assign_stage_id'], null, v_wdate); } }); // Нажатие на кнопку - Назначить сотрудника на дату $('.page-calendar .calendar-detail .act-actor-on-date').click(function(){ addAssign( null, localStorage['assign_task_id'], localStorage['assign_stage_id'], $(this).attr('data-actor_id'), v_wdate); }); // Снять сотрудника $('.page-calendar .calendar-detail .act-unassign').click(function(){ var z_actor_id = $(this).attr('data-actor_id'); var txt = ( z_actor_id > 0 )? 'сотрудника' : 'резерв'; if (!confirm('Снять ' + txt + '?')) return; $('.loader').show(); var z_task_id = $(this).attr('data-task_id'); var z_stage_id = localStorage['assign_stage_id']; var z_assign_id = $(this).attr('data-assign_id'); $.ajax({ url: base_url + '/handler/assign/put-assign.php', cache: false, type: "POST", data: { action: 'delete', assign_id: z_assign_id, task_id: z_task_id, stage_id: z_stage_id, actor_id: z_actor_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); switch (data.result){ case 0: // Обновляем весь каленедарь $('.page-calendar .act-refresh-calendar').click(); break; case -1: alert('Этот резерв может снять только Администратор!'); break; } } }); }); // Запомнить назначение для выбора другой даты для Резерва $('.act-shift-date').click(function(){ // Панелька вверху окна var z_assign_id = $(this).attr('data-assign_id'); localStorage['assign_id_to_shift_date'] = z_assign_id; $('.current-action .current-action-text').html('Выберите в Календаре новую дату и нажмите кнопку "Сделать РЕЗЕРВ".'); $('.current-action').css('display', 'flex'); // Переходим в режим - резерв даты localStorage['assign_mode'] = 'RESERV_ON_DATE'; localStorage['assign_task_id'] = $(this).attr('data-task_id'); localStorage['assign_stage_id'] = $(this).attr('data-stage_id'); $('.page-calendar .act-refresh-calendar').click(); }); // Нажатие на кнопку - показать сотрудников, кого можно назначить по заказу $('.page-calendar .act-show-actor-for-assign').click(function(){ var elem = $(this); var z_task_id = $(this).attr('data-task_id'); var z_stage_id = localStorage['assign_stage_id']; if ( $('.page-calendar .calendar-detail .avail-actor-list[data-task_id="' + z_task_id + '"]').css('display') == 'none'){ console.log('act-show-actor-for-assign 3'); $('.loader').show(); $.ajax({ url: base_url + '/handler/calendar/get-actor-on-stage-date-list.php', cache: false, type: "POST", data: { task_id: z_task_id, stage_id: z_stage_id, date: v_wdate }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-calendar .calendar-detail .avail-actor-list[data-task_id="' + z_task_id + '"]').html(data).show('fast'); // Назначить сотрудника $('.page-calendar .calendar-detail .act-assign').click(function(){ $('.loader').show(); $.ajax({ url: base_url + '/handler/assign/put-assign.php', cache: false, type: "POST", data: { action: 'add', task_id: z_task_id, stage_id: z_stage_id, wdate: v_wdate, actor_id: $(this).attr('data-actor_id') }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); if ( data.result >= 0 ) { // Обновляем весь календарь $('.page-calendar .act-refresh-calendar').click(); } } }); }); } }); } else { $('.page-calendar .calendar-detail .avail-actor-list[data-task_id="' + z_task_id + '"]').hide('fast').html(''); } }); // Нажатие на кнопку - показать карточку заказа $('.page-calendar .act-show-task-main').click(function(){ showTaskForm( $(this).parent().parent().parent().parent().attr('data-task_id'), 'stage'); }); // Показать неработающих сотрудников в Календаре $('.page-calendar .act-show-bar-no-work').click(function(){ $('.page-calendar .bar-no-work').show(); $(this).hide(); }); /* Убрано за ненадобностью // Нажатие на кнопку - Отправить СМС выбранному сотруднику о назначенном заказе $('.page-calendar .act-gen-sms-action-5').click(function(){ genSMSAction5( $(this).parent().attr('data-task_id'), $(this).parent().attr('data-actor_id'), v_wdate, localStorage['assign_stage_id'] ); }); // Нажатие на кнопку - Отправить СМС всем сотрудникам о назначенных заказах $('.page-calendar .act-gen-sms-action-5-everybody').click(function(){ if (confirm("Известить по СМС всех сотрудников о назначенных на них заказах?")) { $('.page-calendar .act-gen-sms-action-5').click(); // Цикл по всем видимым кнопкам } }); */ } }); } // Отмена выбора другой даты в Календаре $('.act-close-shift-date').click(function(){ localStorage.removeItem('assign_id_to_shift_date'); $('.current-action .current-action-text').html(''); $('.current-action').hide(); // Переходим в режим - обычный Календарь localStorage['assign_mode'] = 'CALENDAR'; $('.page-calendar .act-refresh-calendar').click(); }); /* function genSMSAction5( v_task_id, v_actor_id, v_wdate, v_stage_id ){ $('.loader').show(); $.ajax({ url: base_url + '/handler/gen-sms-action-5.php', cache: false, type: "POST", data: { task_id: v_task_id, actor_id: v_actor_id, wdate: v_wdate, stage_id: v_stage_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); console.log(json); var data = $.parseJSON(json); var elem = $('.page-calendar .sms-action-5[data-task_id="' + v_task_id + '"][data-actor_id="' + v_actor_id + '"]'); if ( data.result >= 0 ) { elem.find('.response').html( data.message ).attr('data-type', 'res-ok').show(); elem.find('.act-gen-sms-action-5').hide(); } else { elem.find('.response').html( data.message ).attr('data-type', 'res-error').show(); } } }); } */ // Закрыть страницу календаря - выбор даты $('.page-calendar .act-close-calendar').click(function(){ // Скрываем кнопку, т.к. ее видимость используется в работе глобального Esc $(this).hide(); localStorage['assign_mode'] == ''; showPage('task-form'); });// Ввод только цифр и точки в поле класса money $('body').on('input', '.money', function(){ this.value = this.value.replace(/[^0-9\.\-]/g, ''); }); // Переходим в разде Настройки (Финансы) $('.act-show-settings-page-finance-tab').click(function(){ showPage('settings'); $('.page-settings .tabs-settings .tab[data-tab="finance"]').click(); }); // Рендер Долга клиента function renderCustomerDebt(v_amount_customer_ack_remain, v_debt){ // Сумма долга клиента if ( v_amount_customer_ack_remain != null ) { $('.page-task-form .bar-debt .d-amount_customer_ack_remain').html( v_amount_customer_ack_remain ); if ( v_amount_customer_ack_remain != 0 ){ $('.page-task-form .bar-debt').show(); } else { $('.page-task-form .bar-debt').hide(); } } // Игнорировать долг клиента if ( v_debt == 1 ) { $('.page-task-form .chk-ignore_debt').prop('checked', true); $('.page-task-form .bar-debt .d-amount_customer_ack_remain').css('color', 'silver').css('text-decoration', 'line-through'); $('.page-task-form .bar-debt .d-amount_customer_ack_remain').parent().css('color', 'silver'); } else { $('.page-task-form .chk-ignore_debt').prop('checked', false); $('.page-task-form .bar-debt .d-amount_customer_ack_remain').css('color', 'red').css('text-decoration', 'none'); $('.page-task-form .bar-debt .d-amount_customer_ack_remain').parent().css('color', 'red'); } } // Сохранить Сумму по Договору $('.page-task-form .bar-finance-control .act-put-amount_agreement').click(function(){ var v_amount_agreement = $('.page-task-form .bar-finance-control .i-amount_agreement').val(); var v_amount_prepayment = $('.page-task-form .bar-finance-control .i-amount_prepayment').val(); var v_task_id = $('.page-task-form .d-task_id').val(); if ( confirm('Изменить сумму по Договору?') ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/task/put-task.php', cache: false, type: "POST", data: { 'action': 'amount_agreement', 'task_id': v_task_id, 'amount_agreement': v_amount_agreement, 'amount_prepayment': v_amount_prepayment }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); showTaskHeader( v_task_id ); reloadTaskFinanceTab( v_task_id ); // Показать форму для отправки СМС клиенту, файл message.js showSendSMSForm(3); } }); } }); // Обновить данные во вкладке Задача > Финансы function reloadTaskFinanceTab(v_task_id) { $('.loader').show(); $('.payment-form .act-close-payment-form').click(); $.ajax({ url: base_url + '/handler/finance/get-task-finance.php', cache: false, type: "POST", data: { task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ // console.log(json); var data = $.parseJSON(json); //console.log(data); // Сумма по Договору $('.page-task-form .bar-finance-control .i-amount_agreement').val(data.task.amount_agreement); // Сумма по Предоплаты $('.page-task-form .bar-finance-control .i-amount_prepayment').val(data.task.amount_prepayment); // Долг клиента renderCustomerDebt( data.task.amount_customer_ack_remain, data.task.ignore_debt ); // Статистика $('.page-task-form .d-amount_customer_ack').html(data.task.amount_customer_ack); $('.page-task-form .d-amount_customer_total').html(data.task.amount_customer_total); $('.page-task-form .d-amount_actor_ack').html(data.task.amount_actor_ack); $('.page-task-form .d-amount_actor_total').html(data.task.amount_actor_total); $('.page-task-form .d-amount_cashbox_ack').html(data.task.amount_cashbox_ack); $('.page-task-form .d-amount_cashbox_total').html(data.task.amount_cashbox_total); // Индикатор неподтвержденных платежей var z_ack_count = data.task.payments_wait_ack; if (z_ack_count > 0) { $('.page-task-form .bar-payments_wait_ack .d-payments_wait_ack').html( z_ack_count ); $('.page-task-form .bar-payments_wait_ack').show(); } else { $('.page-task-form .bar-payments_wait_ack').hide(); } // Клиент как Плательщик $('.payment-form select.i-payer_id option[data-payer_type="C"]').html('клиент ' + data.task.customer_name).attr('selected', 'selected').attr('value', data.task.customer_id); // console.log('payer data.task.customer_id=', data.task.customer_id); // Клиент как Получатель $('.payment-form select.i-payee_id option[data-payee_type="C"]').html('клиент ' + data.task.customer_name).attr('selected', 'selected').attr('value', data.task.customer_id); // console.log('payee data.task.customer_id=', data.task.customer_id); $('.payment-form select.i-payway_id option:first').attr('selected', 'selected'); // Получаем список счетов по текущему Заказу $.ajax({ url: base_url + '/handler/finance/get-invoice-list.php', cache: false, type: "POST", data: { action: 'task', task_id: v_task_id, partner_details_id: localStorage['partner_details_id'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-task-form .invoice-list').html(data); // Наведение на строку $('.page-task-form .invoice-list .invoice-row').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Клик на строку: Активировать строку $('.page-task-form .invoice-list .invoice-row').click(function(){ $('.page-task-form .invoice-list .invoice-row').removeClass('selected'); $('.page-task-form .invoice-list .invoice-row .ext-row').css('display', 'none'); $(this).addClass('selected'); $(this).find('.ext-row').css('display', 'flex'); }); // Выслать счёт $('.act-show-send-invoice-form').click(function(){ var z_invoice_id = $(this).parent().parent().parent().attr('data-invoice_id'); var z_task_id = $(this).parent().parent().parent().attr('data-task_id'); showSendInvoiceForm(z_task_id, z_invoice_id); }); // Открыть форму редактирования счёта в карточке заказа $('.act-show-edit-invoice-form').click(function(){ var z_invoice_id = $(this).parent().parent().parent().attr('data-invoice_id'); showInvoiceForm('.page-task-form', v_task_id, z_invoice_id, 'edit'); }); // Открыть форму повторения счета в общем списке счетов $('.act-show-repeat-invoice-form').click(function(){ var z_invoice_id = $(this).parent().parent().parent().parent().attr('data-invoice_id'); // console.log( "z_invoice_id=" + z_invoice_id ); showInvoiceForm('.page-task-form', v_task_id, z_invoice_id, 'repeat'); }); // Удаляем счёт $('.page-task-form .invoice-list .act-delete-invoice').click(function(){ deleteInvoice( $(this).parent().parent().parent().attr('data-invoice_id'), v_task_id ); }); // Открыть форму нового счета в Заказе $('.page-task-form .act-show-new-invoice-form').click(function(){ var z_task_id = $('.page-task-form .d-task_id').val(); showInvoiceForm('.page-task-form', z_task_id, null, 'add'); }); showPage('task-form'); showTaskTab('finance'); } }); // Получаем список платежей по заказу $.ajax({ url: base_url + '/handler/finance/get-payment-list.php', cache: false, type: "POST", data: { action: 'task', task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-task-form .payment-list').html(data); // console.log('/handler/finance/get-payment-list.php'); // Наведение на строку $('.payment-list .payment-row').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Клик на строку: Активировать строку $('.page-task-form .payment-list .payment-row').click(function(){ $('.page-task-form .payment-list .payment-row').removeClass('selected'); $('.page-task-form .payment-list .payment-row .ext-row').css('display', 'none'); $(this).addClass('selected'); $(this).find('.ext-row').css('display', 'flex'); }); // Подтверждаем платёж в карточке заказа $('.page-task-form .payment-list .act-ack-payment').click(function(){ let z_payment_id = $(this).parent().parent().parent().parent().parent().attr('data-payment_id'); doAckPayment( z_payment_id, 'R', v_task_id ); }); // Открыть форму редактирования платежа в карточке заказа $('.act-show-edit-payment-form').click(function(){ let z_payment_id = $(this).parent().parent().parent().parent().parent().attr('data-payment_id'); showPaymentForm('.page-task-form', v_task_id, z_payment_id, 'edit'); }); // Открыть форму повторения платежа в карточке заказа $('.act-show-repeat-payment-form').click(function(){ let z_payment_id = $(this).parent().parent().parent().parent().parent().attr('data-payment_id'); // console.log('z_payment_id=' + z_payment_id); showPaymentForm('.page-task-form', v_task_id, z_payment_id, 'repeat'); }); // Удаляем платёж в карточке заказа $('.page-task-form .payment-list .act-delete-payment').click(function(){ let z_payment_id = $(this).parent().parent().parent().parent().parent().attr('data-payment_id'); deletePayment( z_payment_id, v_task_id ); }); // Открыть форму нового платежа в карточке заказа $('.page-task-form .act-show-new-payment-form').click(function(){ var z_task_id = $('.page-task-form .d-task_id').val(); showPaymentForm('.page-task-form', z_task_id, null, 'add'); }); showPage('task-form'); showTaskTab('finance'); } }); // Получаем список зарплат по заказу $.ajax({ url: base_url + '/handler/salary/get-salary-list.php', cache: false, type: "POST", data: { action: 'task', task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-task-form .salary-list').html(data); // Наведение на строку $('.page-task-form .salary-list .salary-row').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Клик на строку: Активировать строку $('.page-task-form .salary-list .salary-row').click(function(){ $('.page-task-form .salary-list .salary-row').removeClass('selected'); $('.page-task-form .salary-list .salary-row .ext-row').css('display', 'none'); $(this).addClass('selected'); $(this).find('.ext-row').css('display', 'flex'); }); // Открыть форму редактирования начисления зп в карточке заказа $('.act-show-edit-salary-form').click(function(){ var z_salary_id = $(this).parent().parent().parent().attr('data-salary_id'); showSalaryForm('.page-task-form', v_task_id, z_salary_id, 'edit'); }); // Удаляем начисление зп $('.page-task-form .salary-list .act-delete-salary').click(function(){ deleteSalary( $(this).parent().parent().parent().attr('data-salary_id'), v_task_id ); }); // Открыть форму нового начисления зп в Заказе $('.page-task-form .act-show-new-salary-form').click(function(){ var z_task_id = $('.page-task-form .d-task_id').val(); showTaskSalaryForm('.page-task-form', z_task_id, null, 'add'); }); showPage('task-form'); showTaskTab('finance'); } }); $('.page-task-form .bar-finance-control .i-amount_agreement').focus(); } }); } // Переключение Игнорировать задолженность клиента $('.page-task-form .chk-ignore_debt').click( function(){ var ignore_debt = ($('.page-task-form .chk-ignore_debt').is(':checked'))? 1 : 0; ignoreDebt( ignore_debt ); renderCustomerDebt( null, ignore_debt ); }); // Игнорировать задолженность клиента function ignoreDebt( v_ignore_debt ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/task/put-task.php', cache: false, type: "POST", data: { 'action': 'ignore_debt', 'task_id': $('.page-task-form .d-task_id').val(), 'ignore_debt': v_ignore_debt }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ //console.log(json); var data = $.parseJSON(json); //console.log(data); switch (data.result){ case 0: $('.loader').hide(); break; } } }); } // Платежи все: Нажатие на таб (Платежи и Статистика) $('.page-finance .tabs .tab').click(function(){ // Активируем карточку выбранного таба showFinanceTab( $(this).attr('data-tab') ); }); // Платежи все: Активация таба (Платежи и Статистика) function showFinanceTab(v_tab){ // Активируем выбранный пункт меню $('.page-finance .bar-header .tab').removeClass('on'); $('.page-finance .bar-header .tab[data-tab="' + v_tab + '"]').addClass('on'); // Активируем карточку выбранного таба $('.page-finance .tabcard').hide(); $('.page-finance .tabcard[data-tab="' + v_tab + '"]').show(); switch (v_tab){ // Список счетов case 'invoice-list': localStorage['work_mode'] = 'invoice'; break; // Список платежей case 'payment-list': localStorage['work_mode'] = 'payment'; break; } showFinancePage(v_tab); } // Обновить данные на странице Финансы function showFinancePage(v_tab) { $('.payment-form .act-close-payment-form').click(); // Если не задано, берем текущую if (v_tab == null) { v_tab = $('.page-finance .tabs .tab.on').attr('data-tab'); } switch (v_tab){ // Список счетов case 'invoice-list': showTotalInvoiceList(); break; // Список платежей case 'payment-list': adjustScreenSize(); showPayuserInfo(); showTotalPaymentList(); break; // Статистика платежей case 'finstat-total': showTotalFinstat(); break; } } // Показать данные текущего пользователя или, если для админа или уполномоченного, выбор среди всех плательщиков function showPayuserInfo(){ $('.loader').show(); $('.page-finance .bar-body').css('opacity', '0.5'); $.ajax({ url: base_url + '/handler/finance/get-payuser-info.php', cache: false, type: "POST", data: { // Фильтр будет работать только для админов и уполномоченных, для остальных игнорируется filter_payuser_id: localStorage['filter_payuser_id'], filter_payuser_type: localStorage['filter_payuser_type'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-finance .payuser-info').html(data); $('.page-finance .bar-body').css('opacity', '1'); // Строим график по полученным данным google.charts.setOnLoadCallback( showCashboxChart ); // Наведение на строку $('.page-finance .payuser-list div[data-payuser_id], .page-finance .cashbox-list div[data-payuser_id]').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Сброс фильтра по плательщику $('.page-finance .act-cancel-payment-filter').click(function(){ localStorage.removeItem('filter_payuser_id'); localStorage.removeItem('filter_payuser_type'); showTotalPaymentList(); }); // Клик на строку $('.page-finance .payuser-list div[data-payuser_id], .page-finance .cashbox-list div[data-payuser_id]').click(function(){ // Подсветка выбранного плательщика $('.page-finance .payuser-list div[data-payuser_id], .page-finance .cashbox-list div[data-payuser_id]').removeClass('selected'); $(this).addClass('selected'); localStorage['filter_payuser_id'] = $(this).attr('data-payuser_id'); localStorage['filter_payuser_type'] = $(this).attr('data-payuser_type'); showTotalPaymentList(); }); } }); } // Показать список всех счетов function showTotalInvoiceList(){ // Настройка отображения фильтра месяц-день $('.page-finance .act-view-mode-day, .page-finance .act-view-mode-month, .page-finance .act-view-mode-year').removeClass('active').css('color', 'gray'); switch (localStorage['view_mode_date']) { case 'VIEW_DAY': $('.page-finance .act-view-mode-day').addClass('active').css('color', 'red'); break; case 'VIEW_MONTH': $('.page-finance .act-view-mode-month').addClass('active').css('color', 'red'); break; case 'VIEW_YEAR': $('.page-finance .act-view-mode-year').addClass('active').css('color', 'red'); break; } /* // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-finance .bar-body').scrollTop(); localStorage['invoice_scroll_top'] = z_scrollTop; */ $('.page-finance .bar-body').css('opacity', '0.5'); $('.loader').show(); $.ajax({ url: base_url + '/handler/finance/get-invoice-list.php', cache: false, type: "POST", data: { action: 'general', invoice_page_num: localStorage['invoice_page_num'], view_mode_date: localStorage['view_mode_date'], partner_details_id: localStorage['partner_details_id'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.page-finance .bar-body').css('opacity', '1'); $('.loader').hide(); $('.page-finance .invoice-list').html(data); adjustFinanceHeight(); // Восстанавливаем прокрутку списка $('.page-finance .bar-body').scrollTop( localStorage['work_invoice_scroll_top'] ); // Наведение на строку $('.page-finance .invoice-list .invoice-row').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Выбор страницы в пагинаторе $('.page-finance .paginator i').click(function(){ localStorage['invoice_page_num'] = $(this).html(); showFinancePage('invoice-list'); }); // Клик на строку: Активировать строку $('.page-finance .invoice-list .invoice-row').click(function(){ $('.page-finance .invoice-list .invoice-row').removeClass('selected'); $('.page-finance .invoice-list .invoice-row .ext-row').css('display', 'none'); $(this).addClass('selected'); $(this).find('.ext-row').css('display', 'flex'); }); // Клик на иконку заказа: Показать карточку заказа - вкладка Финансы $('.page-finance .invoice-list .invoice-row .act-show-task-finance').click(function(){ var z_task_id = $(this).parent().parent().parent().attr('data-task_id'); if (z_task_id > 0){ // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-finance .bar-body').scrollTop(); localStorage['invoice_scroll_top'] = z_scrollTop; // Показать карточку заказа - вкладка Финансы showTaskForm(z_task_id , 'finance'); } }); // Выслать счёт в общем списке счетов $('.act-show-send-invoice-form').click(function(){ var z_invoice_id = $(this).parent().parent().parent().attr('data-invoice_id'); var z_task_id = $(this).parent().parent().parent().attr('data-task_id'); showSendInvoiceForm(z_task_id, z_invoice_id); }); // Открыть форму редактирования счета в общем списке счетов $('.act-show-edit-invoice-form').click(function(){ // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-finance .bar-body').scrollTop(); localStorage['work_invoice_scroll_top'] = z_scrollTop; var z_invoice_id = $(this).parent().parent().parent().attr('data-invoice_id'); var z_task_id = $(this).parent().parent().parent().attr('data-task_id'); showInvoiceForm('.page-finance', z_task_id, z_invoice_id, 'edit'); }); // Открыть форму повторения счета в общем списке счетов $('.act-show-repeat-invoice-form').click(function(){ // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-finance .bar-body').scrollTop(); localStorage['work_invoice_scroll_top'] = z_scrollTop; var z_invoice_id = $(this).parent().parent().parent().attr('data-invoice_id'); var z_task_id = $(this).parent().parent().parent().attr('data-task_id'); showInvoiceForm('.page-finance', z_task_id, z_invoice_id, 'repeat'); }); // Удаляем счёт $('.page-finance .invoice-list .act-delete-invoice').click(function(){ // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-finance .bar-body').scrollTop(); localStorage['work_invoice_scroll_top'] = z_scrollTop; // Удаляем платёж deleteInvoice( $(this).parent().parent().parent().attr('data-invoice_id'), null ); }); } }); } // Показать список всех платежей function showTotalPaymentList(){ // Настройка отображения фильтра месяц-день $('.page-finance .act-view-mode-day, .page-finance .act-view-mode-month, .page-finance .act-view-mode-year').removeClass('active').css('color', 'gray'); switch (localStorage['view_mode_date']) { case 'VIEW_DAY': $('.page-finance .act-view-mode-day').addClass('active').css('color', 'red'); break; case 'VIEW_MONTH': $('.page-finance .act-view-mode-month').addClass('active').css('color', 'red'); break; case 'VIEW_YEAR': $('.page-finance .act-view-mode-year').addClass('active').css('color', 'red'); break; } // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-finance .bar-body').scrollTop(); localStorage['work_payment_scroll_top'] = z_scrollTop; $('.page-finance .bar-body').css('opacity', '0.5'); $('.loader').show(); $.ajax({ url: base_url + '/handler/finance/get-payment-list.php', cache: false, type: "POST", data: { action: 'general', filter_payuser_id: localStorage['filter_payuser_id'], filter_payuser_type: localStorage['filter_payuser_type'], keywords: localStorage['search_payment_keywords'], payment_page_num: localStorage['payment_page_num'], view_mode_date: localStorage['view_mode_date'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.page-finance .bar-body').css('opacity', '1'); $('.loader').hide(); $('.page-finance .payment-list').html(data); adjustFinanceHeight(); // Восстанавливаем прокрутку списка $('.page-finance .bar-body').scrollTop( localStorage['work_payment_scroll_top'] ); // Наведение на строку $('.page-finance .payment-list .payment-row').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); /* // Обновляем ссылку для будущего формирования отчета CSV var filter_payuser_id = (localStorage['filter_payuser_id'] == null)? '' : localStorage['filter_payuser_id']; var filter_payuser_type = (localStorage['filter_payuser_type'] == null)? '' : localStorage['filter_payuser_type']; var keywords = (localStorage['search_payment_keywords'] == null)? '' : localStorage['search_payment_keywords']; $('.act-get-payment-list-csv').attr('href', '/handler/finance/get-payment-list-csv.php?filter_payuser_id=' + filter_payuser_id + '&filter_payuser_type=' + filter_payuser_type + '&keywords=' + keywords); */ // Выбор страницы в пагинаторе $('.page-finance .paginator i').click(function(){ localStorage['payment_page_num'] = $(this).html(); showFinancePage('payment-list'); }); // Клик на строку: Активировать строку $('.page-finance .payment-list .payment-row').click(function(){ $('.page-finance .payment-list .payment-row').removeClass('selected'); $('.page-finance .payment-list .payment-row .ext-row').css('display', 'none'); $(this).addClass('selected'); $(this).find('.ext-row').css('display', 'flex'); }); // Открыть форму нового платежа в общем Списке платежей $('.page-finance .act-show-new-payment-form').click(function(){ var z_task_id = null; showPaymentForm('.page-finance', z_task_id, null, 'add'); }); // Подтверждаем платёж в общем списке платежей $('.page-finance .payment-list .act-ack-payment').click(function(){ // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-finance .bar-body').scrollTop(); localStorage['work_payment_scroll_top'] = z_scrollTop; // Подтверждаем платёж var z_payment_id = $(this).parent().parent().parent().parent().parent().attr('data-payment_id'); doAckPayment( z_payment_id, 'R', null ); }); // Клик на иконку заказа: Показать карточку заказа в общем списке платежей $('.page-finance .payment-list .payment-row .act-show-task-finance').click(function(){ var z_task_id = $(this).parent().parent().parent().parent().parent().attr('data-task_id'); if (z_task_id > 0){ // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-finance .bar-body').scrollTop(); localStorage['work_payment_scroll_top'] = z_scrollTop; // Показать карточку заказа - вкладка Финансы showTaskForm(z_task_id , 'finance'); } }); // Открыть форму редактирования платежа в общем списке платежей $('.act-show-edit-payment-form').click(function(){ // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-finance .bar-body').scrollTop(); localStorage['work_payment_scroll_top'] = z_scrollTop; let z_payment_id = $(this).parent().parent().parent().parent().parent().attr('data-payment_id'); var z_task_id = $(this).parent().parent().parent().parent().parent().attr('data-task_id'); showPaymentForm('.page-finance', z_task_id, z_payment_id, 'edit'); }); // Открыть форму повторения платежа в общем списке платежей $('.act-show-repeat-payment-form').click(function(){ // Запоминаем положение прокрутки списка let z_scrollTop = $('.page-finance .bar-body').scrollTop(); localStorage['work_payment_scroll_top'] = z_scrollTop; let z_payment_id = $(this).parent().parent().parent().parent().parent().attr('data-payment_id'); let z_task_id = $(this).parent().parent().parent().attr('data-task_id'); showPaymentForm('.page-finance', z_task_id, z_payment_id, 'repeat'); }); // Удаляем платёж в общем списке платежей $('.page-finance .payment-list .act-delete-payment').click(function(){ // Запоминаем положение прокрутки списка let z_scrollTop = $('.page-finance .bar-body').scrollTop(); localStorage['work_payment_scroll_top'] = z_scrollTop; // Удаляем платёж let z_payment_id = $(this).parent().parent().parent().parent().parent().attr('data-payment_id'); deletePayment( z_payment_id, null ); }); } }); } // Настройка высоты страницы function adjustFinanceHeight(){ var div_header_height = $('.page-finance .bar-header').css('height'); var div_header_height_tabs = $('.page-finance .bar-header.tabs').css('height'); var summa = ' - ' + div_header_height + ' - ' + div_header_height_tabs; // console.log('summa = ' + summa); $('.page-finance .bar-body').css( 'height', 'calc(100%' + summa + ')' ); } /* Фильтр платежей, НЕ СДЕЛАНО, НАБРОСОК // Показать фильтр платежей $('.page-finance .act-show-payment-filter').click(function(){ $('.page-finance .act-close-payment-filter').show(); $('.page-finance .bar-filter').show(); $(this).hide(); //adjustTaskListHeight(); //$('.page-finance .i-search-payment').focus(); }); // Сбросить фильтр платежей $('.act-clear-task-filter').click(function(){ $('.page-finance .bar-filter .i-filter-agroup_actor_id option[value=""]').attr('selected', 'selected').val(''); $('.page-finance .bar-filter .d-filter-agreement_date').attr('data-period', '').html('не задана'); $('.page-finance .bar-filter .i-date_begin').val(''); $('.page-finance .bar-filter .i-date_end').val(''); $('.page-finance .i-search-task').val(''); localStorage.removeItem('search_task_keywords'); drawCategory('.page-finance', null, null, null); localStorage['task_page_num'] = 1; showTaskList(); }); // Сбросить и закрыть фильтр платежей $('.page-finance .act-close-payment-filter').click(function(){ $('.page-finance .bar-filter').hide(); $('.act-show-payment-filter').show(); $(this).hide(); //$('.act-clear-task-filter').click(); // Сбросить фильтр заказов }); */ // Круговая диаграмма по Счетам function showCashboxChart(){ var strJSON = $('.page-finance .chart-json').html(); objJSON = JSON.parse(strJSON); var chart_arr = []; for (var idate in objJSON){ chart_arr.push([idate, objJSON[idate]]); } //chart_arr.reverse(); var data = new google.visualization.DataTable(); data.addColumn('string', 'дата'); data.addColumn('number', 'Заказы'); data.addRows(chart_arr); console.log(data); var options = { title: 'Счета', pieHole: 0.4, is3D: true, }; var chart = new google.visualization.PieChart( document.getElementById('cashbox-chart') ); chart.draw(data, options); } // Показать глобальную статистику по платежам function showTotalFinstat(){ // Настройка отображения фильтра месяц-день $('.page-finance .act-view-mode-day, .page-finance .act-view-mode-month, .page-finance .act-view-mode-year').removeClass('active').css('color', 'gray'); switch (localStorage['view_mode_date']) { case 'VIEW_DAY': $('.page-finance .act-view-mode-day').addClass('active').css('color', 'red'); break; case 'VIEW_MONTH': $('.page-finance .act-view-mode-month').addClass('active').css('color', 'red'); break; case 'VIEW_YEAR': $('.page-finance .act-view-mode-year').addClass('active').css('color', 'red'); break; } $('.page-finance .bar-body').css('opacity', '0.5'); $('.loader').show(); $.ajax({ url: base_url + '/handler/finance/get-finstat-total.php', cache: false, type: "POST", data: { view_mode_date: localStorage['view_mode_date'], shift_date_begin: -5, shift_date_end: 0 }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.page-finance .finstat-total').html(data); $('.page-finance .bar-body').css('opacity', '1.0'); $('.loader').hide(); // Отобразить при наведении на строку $('.page-finance .finstat-total div[data-payuser_id]').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Клик по строке группы - Показать или скрыть сотрудников в группе $('.page-finance .finstat-total div.agroup-row').click(function(){ var agroup_id = $(this).attr('data-agroup_id'); $('.page-finance .finstat-total .payuser-row[data-agroup_id="' + agroup_id + '"]').toggle(); }); } }); } // Подтвердить платёж function doAckPayment( v_payment_id, v_ack, v_task_id ){ if (confirm('Подтвердить платёж?')) { $('.loader').show(); $.ajax({ url: base_url + '/handler/finance/ack-payment.php', cache: false, type: "POST", data: { 'payment_id': v_payment_id, 'ack': v_ack }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); switch (data.result){ case 0: if (v_task_id != null) { showTaskHeader( v_task_id ); reloadTaskFinanceTab( v_task_id ); } else { showFinancePage(null); } // Озвучка события checkAndPlaySound(); // Отправляем СМС клиенту о поступившем от него платеже if ( data.payer_type == 'C' ) { // Тип = Клиент var z_amount = number_format(data.amount, 0, '', ''); var z_agreement_num = (!data.agreement_num)? data.agreement_num : ''; var z_message = data.trademark_name + ': По заказу ' + z_agreement_num + ' поступила оплата ' + z_amount + ' руб'; $('.loader').show(); $.ajax({ url: base_url + '/handler/sms/put-sms.php', cache: false, type: "POST", data: { task_id: data.task_id, message: z_message, sms_type: 6, // СМС клиенту о поступившем от него платеже author_type: 'S', author_id: null, receiver_type: 'C', receiver_id: data.payer_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); } }); } break; } } }); } } // Обновить страницу Финансы $('.page-finance .act-reload-finance').click(function(){ showFinancePage(null); }); function showInvoiceForm( v_sender, v_task_id, v_invoice_id, v_action ) { $( '.invoice-form .d-task_id' ).val( v_task_id ); $( '.invoice-form .i-amount' ).val('') $( '.invoice-form .i-remark' ).val(''); $( '.invoice-form .i-invoice_date' ).val(''); $( '.invoice-form .response' ).hide(); $('.invoice-form .d-sender').val( v_sender ); $('.invoice-form .d-task_id').val( v_task_id ); $( '.invoice-form .d-action' ).val( v_action ); switch (v_action){ case 'edit': case 'repeat': if (v_action == 'edit') { // Редактирование платежа $( '.invoice-form .d-invoice_id ' ).val( v_invoice_id ); $( '.invoice-form h1' ).html('Редактировать счёт'); } else { // Повторить платеж $( '.invoice-form .d-invoice_id ' ).val( '' ); $( '.invoice-form .i-invoice_date' ).val( moment().format('YYYY-MM-DD') ); $( '.invoice-form h1' ).html('Повторно создать счёт'); } // Зачитываем текущий счёт $('.loader').show(); $( '.invoice-form' ).css('opacity', '0.5'); $.ajax({ url: base_url + '/handler/finance/get-invoice.php', cache: false, type: "POST", data: { 'invoice_id': v_invoice_id, partner_details_id: localStorage['partner_details_id'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); $( '.invoice-form' ).css('opacity', '1.0'); var data = $.parseJSON(json); $( '.invoice-form .i-amount' ).val(data.invoice.amount); $( '.invoice-form .i-remark' ).val(data.invoice.remark); if (v_action == 'edit') { $( '.invoice-form .i-invoice_date' ).val(data.invoice.invoice_date); } } }); break; case 'add': // Новый счёт $( '.invoice-form .d-invoice_id' ).val( null ); $( '.invoice-form h1' ).html('Новый счёт'); $( '.invoice-form .i-invoice_date' ).val( moment().format('YYYY-MM-DD') ); var debt = $( '.page-task-form .d-amount_customer_ack_remain' ).html(); //console.log(debt); $( '.invoice-form .i-amount' ).val( debt ); break; } $( '.invoice-form' ).show().center(); $( '.invoice-form .i-amount' ).focus(); } function showPaymentForm( v_sender, v_task_id, v_payment_id, v_action ) { $('.payment-form .bar-amount').show(); $('.payment-form .bar-paydate').show(); $('.payment-form .bar-payer').show(); $('.payment-form .bar-payee').show(); $('.payment-form .bar-payway').show(); $('.payment-form .bar-remark').show(); $('.payment-form .bar-ext-payment-fields').hide(); $( '.payment-form .d-task_id' ).val( v_task_id ); $( '.payment-form .i-amount' ).val('') $( '.payment-form .i-remark' ).val(''); $( '.payment-form .i-payer_id' ).val(''); $( '.payment-form .i-payee_id' ).val(''); $( '.payment-form .i-payway_id' ).val(''); $( '.payment-form .i-payway_id').val( $( '.payment-form .i-payway_id option:first').attr('value') ); $( '.payment-form .response' ).hide(); $('.payment-form .d-sender').val( v_sender ); $('.payment-form .d-task_id').val( v_task_id ); $('.payment-form .d-salary_ids').val( v_payment_id ); $( '.payment-form .d-action' ).val( v_action ); switch (v_action){ case 'edit': case 'repeat': if (v_action == 'edit') { // Редактирование платежа $( '.payment-form .d-payment_id ' ).val( v_payment_id ); $( '.payment-form h1' ).html('Редактировать платёж'); } else { // Повторить платеж $( '.payment-form .d-payment_id ' ).val( '' ); $( '.payment-form .i-paydate' ).val( moment().format('YYYY-MM-DD') ); $( '.payment-form h1' ).html('Повторить платёж'); } var z_selector = '.payment-form .i-payer_id option'; $( z_selector ).removeAttr('selected'); var z_selector = '.payment-form .i-payee_id option'; $( z_selector ).removeAttr('selected'); if (v_sender == '.page-finance'){ $( '.payment-form .i-payer_id option.payer_customer[data-payer_type="C"]' ).html('заказчик'); $( '.payment-form .i-payee_id option.payer_customer[data-payee_type="C"]' ).html('заказчик'); } // Зачитываем текущий платёж $('.loader').show(); $( '.payment-form' ).css('opacity', '0.5'); $.ajax({ url: base_url + '/handler/finance/get-payment.php', cache: false, type: "POST", data: { 'payment_id': v_payment_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); $( '.payment-form' ).css('opacity', '1.0'); var data = $.parseJSON(json); if ( data.payment.task_id > 0 ){ // Показываем Отправителя и Получателя $( '.payment-form .i-payer_id option.payer_customer' ).show(); $( '.payment-form .i-payee_id option.payee_customer' ).show(); } else { // Не показываем Отправителя и Получателя $( '.payment-form .i-payer_id option.payer_customer' ).hide(); $( '.payment-form .i-payee_id option.payee_customer' ).hide(); } // Доп поле в платеже (картинка платежа) if ( v_action == 'edit' && data.payment.doc_img != '' ){ $( '.payment-form .i-doc_img').val(data.payment.doc_img); $( '.payment-form .bar-ext-payment-fields').show(); $( '.payment-form .act-show-bar-ext-payment-fields').hide(); } else { $( '.payment-form .i-doc_img').val(''); $( '.payment-form .bar-ext-payment-fields').hide(); $( '.payment-form .act-show-bar-ext-payment-fields').show(); } $( '.payment-form .i-amount' ).val(data.payment.amount); $( '.payment-form .i-remark' ).val(data.payment.remark); $( '.payment-form .i-payway_id' ).val(data.payment.payway_id); if (v_action == 'edit') { $( '.payment-form .i-paydate' ).val(data.payment.paydate); } if (v_sender == '.page-finance'){ if (data.payment.payer_type == 'C') $( '.payment-form .i-payer_id option.payer_customer[data-payer_type]' ).attr('value', data.payment.payer_id); if (data.payment.payee_type == 'C') $( '.payment-form .i-payee_id option.payer_customer[data-payee_type]' ).attr('value', data.payment.payee_id); } var z_selector = '.payment-form .i-payer_id option[value="' + data.payment.payer_id + '"][data-payer_type="' + data.payment.payer_type + '"]'; $( z_selector ).attr('selected', ''); var z_selector = '.payment-form .i-payee_id option[value="' + data.payment.payee_id + '"][data-payee_type="' + data.payment.payee_type + '"]'; $( z_selector ).attr('selected', ''); $( '.payment-form .i-payer_id' ).val(data.payment.payer_id); $( '.payment-form .i-payee_id' ).val(data.payment.payee_id); } }); break; case 'add': // Новый платеж $( '.payment-form .d-payment_id' ).val( null ); $( '.payment-form h1' ).html('Новый платёж'); $( '.payment-form .i-paydate' ).val( moment().format('YYYY-MM-DD') ); // Доп поле в платеже (картинка платежа) $( '.payment-form .i-doc_img').val(''); $( '.payment-form .bar-ext-payment-fields').hide(); $( '.payment-form .act-show-bar-ext-payment-fields').show(); if (v_sender == '.page-task-form'){ // Показываем Отправителя и Получателя $( '.payment-form .i-payer_id option.payer_customer' ).show(); $( '.payment-form .i-payee_id option.payee_customer' ).show(); } else { // Не показываем Отправителя и Получателя $( '.payment-form .i-payer_id option.payer_customer' ).hide(); $( '.payment-form .i-payee_id option.payee_customer' ).hide(); } break; } $( '.payment-form' ).show().center(); $( '.payment-form .i-amount' ).focus(); } // Открыть сообщение о вводе счета в общем Списке счетов $('.page-finance .act-show-invoice-form').click(function(){ $('.bar-new-invoice-note').show(); $('.act-show-invoice-form').hide(); }); // Закрыть форму счета $('.invoice-form .act-close-invoice-form').click(function(){ $('.invoice-form').hide(); }); // Закрыть форму платежа $('.payment-form .act-close-payment-form').click(function(){ $('.payment-form').hide(); }); $('.page-finance .act-view-mode-day').click(function(){ localStorage['view_mode_date'] = 'VIEW_DAY'; showFinancePage(null); }); $('.page-finance .act-view-mode-month').click(function(){ localStorage['view_mode_date'] = 'VIEW_MONTH'; showFinancePage(null); }); $('.page-finance .act-view-mode-year').click(function(){ localStorage['view_mode_date'] = 'VIEW_YEAR'; showFinancePage(null); }); // Сохранить данные в форме счёта и закрыть форму function putInvoice(){ let z_sender = $('.invoice-form .d-sender').val(); let z_task_id = $('.invoice-form .d-task_id').val(); $('.invoice-form .response').html('').attr('data-type', '').hide(); // Проверка корректности даты let invoice_date = ''; let m = $('.invoice-form .i-invoice_date').val(); if (m != '') { if ( !moment( m, "YYYY-MM-DD").isValid() ) { $('.page-task-form .i-invoice_date').focus(); alert('Недопустимое значение даты!'); return; } else { invoice_date = m; } } $('.loader').show(); $.ajax({ url: base_url + '/handler/finance/put-invoice.php', cache: false, type: "POST", data: { action: $('.invoice-form .d-action').val(), invoice_id: $('.invoice-form .d-invoice_id').val(), task_id: z_task_id, invoice_date: invoice_date, amount: $('.invoice-form .i-amount').val(), remark: $('.invoice-form .i-remark').val() }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); if (data.result < 0) { $('.invoice-form .response').html(data.message).attr('data-type', 'res-error').show(); switch (data.result){ case "-1": $('.invoice-form .i-amount').focus(); break; case "-2": $('.invoice-form .i-amount').focus(); break; case "-3": $('.invoice-form .i-invoice_date').focus(); break; } } else { switch (z_sender){ case ".page-task-form": reloadTaskFinanceTab( z_task_id ); break; case ".page-finance": var tab = $('.page-finance .tabs .tab.on').attr('data-tab'); showFinancePage(null); break; } $('.invoice-form .act-close-invoice-form').click(); } } }); } // Сохранить данные в форме платежа и закрыть форму function putPayment(){ var z_sender = $('.payment-form .d-sender').val(); var z_task_id = $('.payment-form .d-task_id').val(); var z_salary_ids = $('.payment-form .d-salary_ids').val(); $('.payment-form .response').html('').attr('data-type', '').hide(); // Проверка корректности даты var paydate = ''; var m = $('.payment-form .i-paydate').val(); if (m != '') { if ( !moment( m, "YYYY-MM-DD").isValid() ) { $('.page-task-form .i-paydate').focus(); alert('Недопустимое значение даты!'); return; } else { paydate = m; } } var z_payer = $('.payment-form .i-payer_id option:selected'); var z_payee = $('.payment-form .i-payee_id option:selected'); if ( ( z_payer.val() == z_payee.val() ) && ( z_payer.attr('data-payer_type') == z_payee.attr('data-payee_type') ) ) { alert('Плательщик и Получатель платежа не должны один и тем же!'); return; } $('.loader').show(); $.ajax({ url: base_url + '/handler/finance/put-payment.php', cache: false, type: "POST", data: { action: $('.payment-form .d-action').val(), payment_id: $('.payment-form .d-payment_id').val(), task_id: z_task_id, paydate: paydate, amount: $('.payment-form .i-amount').val(), payer_id: z_payer.val(), payer_type: z_payer.attr('data-payer_type'), payee_id: z_payee.val(), payee_type: z_payee.attr('data-payee_type'), payway_id: $('.payment-form .i-payway_id option:selected').val(), remark: $('.payment-form .i-remark').val(), salary_ids: z_salary_ids, doc_img: $('.payment-form .i-doc_img').val() }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); if (data.result < 0) { $('.payment-form .response').html(data.message).attr('data-type', 'res-error').show(); switch (data.result){ case "-1": $('.payment-form .i-amount').focus(); break; case "-2": $('.payment-form .i-amount').focus(); break; case "-3": $('.payment-form .i-paydate').focus(); break; } } else { switch (z_sender){ case ".page-task-form": showTaskHeader( z_task_id ); reloadTaskFinanceTab( z_task_id ); break; case ".page-finance": var tab = $('.page-finance .tabs .tab.on').attr('data-tab'); showFinancePage(null); break; case ".page-salary": reloadSalaryPage(); break; } $('.payment-form .act-close-payment-form').click(); } } }); } // Сохранить данные в форме счёта и закрыть форму $('.act-put-invoice').click(function(){ putInvoice(); }); // Сохранить данные в форме платежа и закрыть форму $('.act-put-payment').click(function(){ putPayment(); }); // Показать доп поля в форме $('.act-show-bar-ext-payment-fields').click(function(){ $('.payment-form .bar-ext-payment-fields').show(); $('.payment-form .i-doc_img').focus(); $(this).hide(); $('.payment-form').center(); }); // Показать в форме только поля, относящиеся к Online платежу $('.act-show-online-fields').click(function(){ $('.payment-form .bar-amount').show(); $('.payment-form .bar-paydate').hide(); $('.payment-form .bar-payer').hide(); $('.payment-form .bar-payee').show(); $('.payment-form .bar-payway').hide(); $('.payment-form .bar-remark').hide(); $('.payment-form .bar-ext-payment-fields').hide(); $('.payment-form').center(); $('.payment-form .d-action').val('online'); $('.payment-form .i-amount').focus(); }); // Выслать счет // Примечание: временно совершается НЕ отправка, а лишь коррекция статуса с NEW на SENT function showSendInvoiceForm(v_task_id, v_invoice_id){ if (confirm('Отметить счёт как "Отправлено клиенту"?')) { $('.loader').show(); $.ajax({ url: base_url + '/handler/finance/send-invoice.php', cache: false, type: "POST", data: { invoice_id: v_invoice_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ var data = $.parseJSON(json); //console.log(data.result); switch (data.result){ case 0: $('.loader').hide(); if (v_task_id != null) { reloadTaskFinanceTab( v_task_id ); } else { var tab = $('.page-finance .tabs .tab.on').attr('data-tab'); showFinancePage(null); } break; } } }); } } // Удалить счет function deleteInvoice( v_invoice_id, v_task_id ){ if (confirm('Удалить счёт?')) { $('.loader').show(); $.ajax({ url: base_url + '/handler/finance/put-invoice.php', cache: false, type: "POST", data: { action: 'delete', invoice_id: v_invoice_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ var data = $.parseJSON(json); //console.log(data.result); switch (data.result){ case 0: $('.loader').hide(); if (v_task_id != null) { reloadTaskFinanceTab( v_task_id ); } else { var tab = $('.page-finance .tabs .tab.on').attr('data-tab'); showFinancePage(null); } break; } } }); } } // Удалить платёж function deletePayment( v_payment_id, v_task_id ){ if (confirm('Удалить платёж?')) { $('.loader').show(); $.ajax({ url: base_url + '/handler/finance/delete-payment.php', cache: false, type: "POST", data: { 'payment_id': v_payment_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ var data = $.parseJSON(json); //console.log(data.result); switch (data.result){ case 0: $('.loader').hide(); if (v_task_id != null) { showTaskHeader( v_task_id ); reloadTaskFinanceTab( v_task_id ); } else { var tab = $('.page-finance .tabs .tab.on').attr('data-tab'); showFinancePage(null); } break; } } }); } }// Обновить данные на странице ЗАРПЛАТА function reloadSalaryPage() { // Настройка отображения фильтра месяц-день $('.page-salary .act-view-mode-month, .page-salary .act-view-mode-day').removeClass('active').css('color', 'gray'); switch (localStorage['view_mode_date']){ case 'VIEW_DAY': $('.page-salary .act-view-mode-day').addClass('active').css('color', 'red'); break; case 'VIEW_MONTH': $('.page-salary .act-view-mode-month').addClass('active').css('color', 'red'); break; } $('.loader').show(); $('.act-close-payment-form').click(); $.ajax({ url: base_url + '/handler/salary/get-salary-stat.php', cache: false, type: "POST", data: { view_mode_date: localStorage['view_mode_date'], filter_salary_actor_id: localStorage['filter_salary_actor_id'], begin: -12, end: 0 }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-salary .salary-stat').html(data); // Видимость кнопки Сбросить фильт по сотруднику if (localStorage['filter_salary_actor_id'] == undefined){ $('.act-cancel-salary-filter').hide(); } // Клик - Фильтровать зп по сотруднику $('.act-filter-salary-actor').click(function(){ localStorage['salary_page_num'] = 1; // выбрать первую страницу в листалке let z_filter_salary_actor_id = $(this).parent().parent().attr('data-actor_id'); localStorage['filter_salary_actor_id'] = z_filter_salary_actor_id; reloadSalaryPage(); $('.act-cancel-salary-filter').show(); }); // Клик - Сбросить фильтрацию зп по сотруднику $('.page-salary .act-cancel-salary-filter').click(function(){ localStorage['salary_page_num'] = 1; // выбрать первую страницу в листалке localStorage.removeItem('filter_salary_actor_id'); // console.log('filter_salary_actor_id=' + localStorage['filter_salary_actor_id']); reloadSalaryPage(); }); /* // Черновик // Клик - открыть пункт меню $('.act-click-menu-item').click(function(){ clickMenuItem( $(this).attr('data-menu-item') ); }); $('.page-finance .act-filter-payuser').click(function(){ localStorage['payment_page_num'] = 1; localStorage['filter_payuser_id'] = $(this).attr('data-payuser_id'); reloadFinancePage(); }); $('.page-finance .act-filter-payuser[data-payuser_id = "' + localStorage['filter_payuser_id'] + '"]').addClass('selected'); */ } }); showSalaryList(); } function showSalaryList(){ // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-salary .bar-body').scrollTop(); localStorage['work_salary_scroll_top'] = z_scrollTop; $('.page-salary .bar-body').css('opacity', '0.5'); $('.loader').show(); // console.log('filter_salary_actor_id = ' + localStorage['filter_salary_actor_id']); $.ajax({ url: base_url + '/handler/salary/get-salary-list.php', cache: false, type: "POST", data: { action: 'general', filter_salary_user_id: localStorage['filter_salary_user_id'], filter_salary_actor_id: localStorage['filter_salary_actor_id'], keywords: localStorage['search_salary_keywords'], salary_page_num: localStorage['salary_page_num'], view_mode_date: localStorage['view_mode_date'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-salary .salary-list').html(data); // Восстанавливаем прокрутку списка $('.page-salary .bar-body').scrollTop( localStorage['work_salary_scroll_top'] ).css('opacity', '1.0'); adjustSalaryHeight(); // Клик на строку: Активировать строку $('.page-salary .salary-list .salary-row').click(function(){ $('.salary-list .salary-row').removeClass('selected'); $(this).addClass('selected'); }); // Наведение на строку $('.page-salary .salary-list .salary-row').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Обновляем ссылку для будущего формирования отчета CSV var filter_payuser_id = (localStorage['filter_payuser_id'] == null)? '' : localStorage['filter_payuser_id']; var filter_payuser_type = (localStorage['filter_payuser_type'] == null)? '' : localStorage['filter_payuser_type']; var keywords = (localStorage['search_payment_keywords'] == null)? '' : localStorage['search_payment_keywords']; $('.act-get-payment-list-csv').attr('href', '/handler/get-payment-list-csv.php?filter_payuser_id=' + filter_payuser_id + '&filter_payuser_type=' + filter_payuser_type + '&keywords=' + keywords); // Выбор страницы в пагинаторе $('.page-salary .paginator i').click(function(){ localStorage['salary_page_num'] = $(this).html(); reloadSalaryPage(); }); // Поставить или снять отметку для работы формы платежа по начислению $('.page-salary .salary-list .act-check-salary').click(function(){ if ( $(this).parent().hasClass('bg-yellow') ){ // Ставим отметку для платежа $(this).parent().removeClass('bg-yellow'); $(this).parent().addClass('bg-orange'); refreshSalary2PaymentForm(); $('.payment-form .i-payee_id').val( $(this).parent().parent().parent().parent().attr('data-actor_id') ); } else if ( $(this).parent().hasClass('bg-orange') ){ // Снимаем пометку для платежа $(this).parent().removeClass('bg-orange'); $(this).parent().addClass('bg-yellow'); refreshSalary2PaymentForm(); } }); // Нажатие на кнопку: Показать карточку заказа - вкладка Зарплата $('.page-salary .salary-list .act-show-task-salary').click(function(){ let z_task_id = $(this).closest('.salary-row').attr('data-task_id'); showTaskForm(z_task_id, 'salary'); }); // Двойной клик по строке: Редактируем начисление $('.page-salary .salary-list .salary-row').dblclick(function(){ // console.log('Редактируем начисление DBL'); $(this).find('.act-show-edit-salary-form').click(); }); // Редактируем начисление $('.page-salary .salary-list .act-show-edit-salary-form').click(function(){ let z_salary_id = $(this).closest('.salary-row').attr('data-salary_id'); let z_task_id = $(this).closest('.salary-row').attr('data-task_id'); // console.log('Редактируем начисление EDT ' + z_salary_id); showSalaryForm( 'edit', 'total-salary-list', z_salary_id, z_task_id ); }); // Удаляем начисление $('.page-salary .salary-list .act-delete-salary').click(function(){ let z_salary_id = $(this).closest('.salary-row').attr('data-salary_id'); deleteSalary( 'total-salary-list', z_salary_id ); }); } }); } // Настройка высоты страницы function adjustSalaryHeight(){ var div_header_height = $('.page-salary .bar-header').css('height'); var summa = ' - ' + div_header_height; $('.page-salary .bar-body').css( 'height', 'calc(100%' + summa + ')' ); } // Обновить страницу Зарплата $('.page-salary .act-reload-salary').click(function(){ reloadSalaryPage(); }); // Открыть форму начисления зп - ощая функция для добавления и редактирования function showSalaryForm( v_action, v_sender, v_salary_id, v_task_id ){ $('.salary-form .response').html('').hide(); $('.salary-form .action' ).val(v_action); $('.salary-form .sender' ).val(v_sender); $('.salary-form .task_id' ).val(v_task_id); $('.salary-form .i-date' ).val(''); localStorage.removeItem('salary_actor_id'); // При открытии формы добавления / редактирования начисления зп первым делом вычитываем список сотрудников по задаче $('.salary-form .i-actor').html('Загрузка...'); $('.loader').show(); $.ajax({ url: base_url + '/handler/task/get-actor4task-selector.php', cache: false, type: "POST", data: { task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.salary-form .i-actor').html(data); localStorage['salary_actor_id'] = $('.salary-form .i-actor select').val(); // При выборе сотрудника в списке $('.salary-form .i-actor select').change(function() { localStorage['salary_actor_id'] = $(this).val(); }); switch ( v_action ){ case 'add': $('.salary-form h1').html('Начислить зарплату'); $('.salary-form .act-put-salary').html('Начислить зарплату'); $('.salary-form .i-remark').val(''); // При добавлении начисления устанавливаем дату текущей $('.salary-form .i-date').val( moment().format('YYYY-MM-DD') ); // Открываем форму $('.salary-form').show().center(); $('.salary-form .i-amount').val('').focus(); break; case 'edit': $('.salary-form h1').html('Редактировать начисление'); $('.salary-form .act-put-salary').html('Сохранить'); // Зачитываем редактируемое начисление $('.loader').show(); $.ajax({ url: base_url + '/handler/salary/get-task-salary.php', cache: false, type: "POST", dataType: 'json', data: { salary_id: v_salary_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.salary-form .d-salary_id').val(data.salary.id); $('.salary-form .i-amount').val(data.salary.amount); $('.salary-form .i-remark').val(data.salary.remark); $('.salary-form .i-date').val(data.salary.date); $('.salary-form .i-actor select').val(data.salary.actor_id).change(); // Открываем форму $('.salary-form').show().center(); $('.salary-form .i-amount').focus(); } }); break; } } }); } // Открыть форму начисления - карточке Заказа, для ДОБАВЛЕНИЯ нового $('.page-task-form .act-show-salary-form').click(function(){ let z_task_id = $(this).closest('.page-task-form').find('.d-task_id').val(); // console.log('z_task_id=' + z_task_id); showSalaryForm('add', 'task-salary-tab', null, z_task_id); $(this).hide(); }); // Закрыть форму начисления в карточке Заказа и в разделе Зарплата $('.act-close-salary-form').click(function(){ $('.salary-form').hide(); $('.act-show-salary-form').show(); localStorage.removeItem('salary_actor_id'); }); function refreshSalary2PaymentForm(){ if ( $('.page-salary .salary-list .bg-orange').length > 0 ) { // Показать форму платежа if ( !$('.payment-form').is(':visible') ) { showPaymentForm('.page-salary', null, null, 'add'); // Заполним поля по умолчанию $('.payment-form .i-remark').val('Заработная плата'); } // Пересчёт суммы var amount = 0; $('.page-salary .salary-list .bg-orange').each(function(i){ amount = amount + parseFloat( $(this).parent().parent().parent().attr('data-amount') ); }); $('.payment-form .i-amount').val(amount); // Список ID начислений зп через запятую для последующей их привязки к платежу var z_salary_ids = ''; $('.page-salary .salary-list .bg-orange').each(function(i){ z_salary_ids = z_salary_ids + ',' + $(this).parent().parent().parent().attr('data-salary_id'); }); z_salary_ids = z_salary_ids.substring(1); $('.payment-form .d-salary_ids').val( z_salary_ids ); $('.payment-form .d-sender').val( '.page-salary' ); $('.payment-form .d-task_id').val( null ); } else { // Скрыть форму платежа $('.payment-form').hide(); } } // Фильтр по дням $('.page-salary .act-view-mode-day').click(function(){ localStorage['view_mode_date'] = 'VIEW_DAY'; reloadSalaryPage(); }); // Фильтр по месяцам $('.page-salary .act-view-mode-month').click(function(){ localStorage['view_mode_date'] = 'VIEW_MONTH'; reloadSalaryPage(); }); /* 25.04.2023 Пока не делаем // Раздел Зарплата: Сохранить данные в форме начисления и закрыть форму $('.page-salary .salary-form .act-put-salary').click(function(){ putSalary('total-salary-list', null, null ); }); */ // Вкладка ЗАРПЛАТА в заказе: Сохранить данные в форме начисления и закрыть форму $('.salary-form .act-put-salary').click(function(){ let z_action = $('.salary-form .action').val(); let z_task_id = $('.salary-form .task_id').val(); let z_sender = $('.salary-form .sender').val(); putSalary( z_sender, z_task_id, '' ) }); // Сохранить данные в форме начисления и закрыть форму function putSalary( sender, v_task_id, v_smeta_id ){ $('.salary-form .response').html('').hide(); // Проверка корректности даты var salary_date = ''; var m = $('.salary-form .i-date').val(); // console.log(m); if (m != '') { if ( !moment( m, "YYYY-MM-DD").isValid() ) { $('.salary-form .i-date').focus(); alert('Недопустимое значение даты!'); return; } else { salary_date = m; } } let z_actor_id = localStorage['salary_actor_id']; // console.log(z_actor_id); $('.loader').show(); $.ajax({ url: base_url + '/handler/salary/put-salary.php', cache: false, type: "POST", data: { 'salary_id': $('.salary-form .d-salary_id').val(), 'action': $('.salary-form .action').val(), 'task_id': v_task_id, 'smeta_id': v_smeta_id, 'date': salary_date, 'amount': $('.salary-form .i-amount').val(), 'actor_id': z_actor_id, 'actor_name_ext': $('.salary-form .i-actor select option:selected').text(), 'remark': $('.salary-form .i-remark').val() }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); if (data.result < 0) { $('.salary-form .response').html(data.message).attr('data-type', 'res-error').show(); switch (data.result){ case "-1": case "-2": $(' .salary-form .i-amount') .css('background-color', 'red') .animate({ backgroundColor: "white" }, 1000 ) .focus(); break; case "-3": $('.salary-form .i-date') .css('background-color', 'red') .animate({ backgroundColor: "white" }, 1000 ) .focus(); break; case "-4": $('.salary-form .s-actor_id') .css('background-color', 'red') .animate({ backgroundColor: "white" }, 1000 ) .focus(); break; } } else { console.log('sender=' + sender); switch (sender){ case 'total-salary-list': reloadSalaryPage(); break; case 'task-salary-tab': reloadTaskSalaryTab( v_task_id ); break; case 'task-finance-tab': reloadTaskFinanceTab( v_task_id ); break; } $('.act-close-salary-form').click(); } } }); } // Удалить начисление function deleteSalary( v_sender, v_salary_id ){ if (confirm('Удалить начисление заработной платы?')) { $('.loader').show(); console.log('v_salary_id=' + v_salary_id); console.log('v_sender=' + v_sender); $.ajax({ url: base_url + '/handler/salary/put-salary.php', cache: false, type: "POST", data: { action: 'delete', salary_id: v_salary_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ var data = $.parseJSON(json); // console.log(data.result); switch (data.result){ case 0: $('.loader').hide(); switch (v_sender){ case 'total-salary-list': reloadSalaryPage();; break; case 'task-salary-tab': reloadTaskSalaryTab( data.task_id ); break; case 'task-finance-tab': reloadTaskFinanceTab( data.task_id ); break; } break; } } }); } } // Обновить данные во вкладке Задача > Зарплата function reloadTaskSalaryTab(v_task_id) { $('.loader').show(); $('.salary-form .act-close-payment-form').click(); // Получаем список зарплат по заказу $.ajax({ url: base_url + '/handler/salary/get-salary-list.php', cache: false, type: "POST", data: { action: 'task', task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ // console.log(data); $('.loader').hide(); $('.page-task-form .salary-list').html(data); showPage('task-form'); showTaskTab('salary'); // Клик - открыть пункт меню. Используется для работы ссылки на раздел Зарплата $('.act-click-menu-item').click(function(){ clickMenuItem( $(this).attr('data-menu-item') ); }); // Наведение на строку $('.page-task-form .salary-list .salary-row').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Клик на строку: Активировать строку $('.page-task-form .salary-list .salary-row').click(function(){ $('.page-task-form .salary-list .salary-row').removeClass('selected'); $(this).addClass('selected'); }); // Двойной клик по строке: Редактируем начисление $('.page-task-form .salary-list .salary-row').dblclick(function(){ // OK console.log('Редактируем начисление DBL'); $(this).find('.act-show-edit-salary-form').click(); }); // Редактируем начисление $('.page-task-form .salary-list .act-show-edit-salary-form').click(function(){ let z_salary_id = $(this).closest('.salary-row').attr('data-salary_id'); let z_task_id = $(this).closest('.salary-row').attr('data-task_id'); // OK console.log('Редактируем начисление EDT ' + z_salary_id); showSalaryForm( 'edit', 'task-salary-tab', z_salary_id, z_task_id ); }); // Удаляем начисление зп $('.page-task-form .salary-list .act-delete-salary').click(function(){ let z_salary_id = $(this).closest('.salary-row').attr('data-salary_id'); deleteSalary( 'task-salary-tab', z_salary_id ); }); } }); }// Обновить список этапов $('.page-settings .act-refresh-stage-list').click(function(){ showStageList( ); }); // Отобразить индикатор состояния звука function showSoundState(){ if (localStorage['sound'] == 1){ var ico = 'volume_up'; var title = 'Звук включён
Выключить звук'; } else { var ico = 'volume_off'; var title = 'Звук выключён
Включить звук'; } $('.act-ico.act-switch-sound').html(ico); $('.act-link.act-switch-sound').html(title) } // Отобразить индикатор состояния погоды function showWeatherState(){ if (localStorage['weather'] == 1){ var ico = 'umbrella'; var title = 'Погода отображается
Выключить отображение'; } else { var ico = 'umbrella'; var title = 'Погода не отображается
Включить отображение'; } $('.act-ico.act-switch-weather').html(ico); $('.act-link.act-switch-weather').html(title) } // Отображать ли графики function showChartState(){ if (localStorage['chart'] == 1){ var ico = 'show_chart'; var title = 'Графики отображаются
Выключить отображение'; } else { var ico = 'show_chart'; var title = 'Графики не отображаются
Включить отображение'; } $('.act-ico.act-switch-chart').html(ico); $('.act-link.act-switch-chart').html(title) } // Переключить индикатор состояния звука $('.act-switch-sound').click(function(){ localStorage['sound'] = 1 - localStorage['sound']; showSoundState(); }); // Переключить индикатор состояния погоды $('.act-switch-weather').click(function(){ localStorage['weather'] = 1 - localStorage['weather']; showWeatherState(); }); // Переключить индикатор графиков $('.act-switch-chart').click(function(){ localStorage['chart'] = 1 - localStorage['chart']; showChartState(); }); // Выбор раздела для настроек $('.page-settings .tabs-settings .tab').click(function(){ // Активируем выбранный пункт меню $('.page-settings .tabs-settings .tab').removeClass('on'); $(this).addClass('on'); // Активируем карточку выбранного таба var tab = $(this).attr('data-tab'); $('.page-settings .tabcard').hide(); $('.page-settings .tabcard[data-tab="' + tab + '"]').show(); reloadSettingsPage(tab); }); // Загрузка профиля пользователя function reloadProfile(){ var z_phone_mask = '+7 (999) 999-9999'; showSoundState(); showWeatherState(); $('.page-settings .d-actor_title').html('Загрузка...'); $('.page-settings .d-actor_name').html(''); $('.page-settings .bar-profile .d-phone').html( 'Загрузка...' ); $('.page-settings .bar-profile .d-phone_ext').html( '' ); // Обновить профиль $('.loader').show(); $.ajax({ url: base_url + '/handler/actor/get-actor.php', cache: false, type: 'POST', dataType: 'json', data: { actor_id: $('.page-settings bar-profile').attr('data-actor_id'), src: 'ACTOR' }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); // Отображение в шапке // Должность let actor_title = ''; actor_title = ( data.actor.actor_title == '' || data.actor.actor_title == null )? '' : data.actor.actor_title; $('.page-settings .actor_title').html(actor_title); // Имя let actor_name = ''; actor_name = ( data.actor.actor_name == '' || data.actor.actor_name == null )? '' : data.actor.actor_name; $('.page-settings .actor_name').html(actor_name); $('.page-settings .bar-profile .d-phone').html( data.actor.actor_phone ).mask(z_phone_mask); if ( data.actor.actor_phone_ext != null ){ var actor_phone_ext = ' доб.' + data.actor.actor_phone_ext; } else { var actor_phone_ext = ''; } $('.page-settings .bar-profile .d-phone_ext').html( actor_phone_ext ); if (data.actor.actor_avatar != "" && data.actor.actor_avatar != null){ $('.page-settings .bar-profile img.i-avatar').attr( 'src', data.actor.avatar_url ).attr('title', data.actor.actor_name).show(); } else { $('.page-settings .bar-profile img.i-avatar').attr( 'src', data.actor.avatar_url ).css('background', '#CCC').css('border', 'none').attr('title', 'Нет фото').show(); } } }); } $('.settings-menu-container').swipe( { swipeStatus:function(event, phase, direction, distance, duration, fingerCount, fingerData, currentDirection) { if (phase=="start"){ // сработает в начале swipe } if (phase=="end"){ //сработает через 20 пикселей то число которое выбрали в threshold if (direction == 'left') { console.log('ВЛЕВО ' + distance); $('.page-settings .settings-menu-container').animate({ left: '-=300px', // смещение позиционированного элемента }, 'linear'); // скорость анимации } if (direction == 'right') { console.log('ВПРАВО ' + distance); $('.page-settings .settings-menu-container').animate({ left: '+=300px', // смещение позиционированного элемента }, 'linear'); // скорость анимации } } }, triggerOnTouchEnd:false, threshold:20 // сработает через 20 пикселей }); // Обновить вкладку выбранных настроек function reloadSettingsPage(tab){ switch (tab){ case "profile": reloadProfile(); break; case "main": reloadMainSettings(); break; case "stages": showStageList(); break; case "task": $('.page-settings .bar-put-task-list-settings').html('').hide(); showTrademarkList(); showSourceList(); showCategoryList(); break; case "store": showStoreList(); showSettingsDelivery(); break; case "p2p": reloadp2pTab(); showp2pList(); break; case "finance": showCashboxList(); showPaywayList(); showCurrencySelector(); break; } } function showCurrencySelector(){ // 19.11.2024 - отложил разработку // $('.page-settings .currency-list').val() }; // Обновить страницу Настройки $('.page-settings .act-reload-settings').click(function(){ var tab = $('.page-settings .tab.on').attr('data-tab'); reloadSettingsPage( tab ); }); // Сохранить настройки по заказам $('.page-settings .act-put-task-list-settings').click(function(){ // Период главного списка заказов localStorage['task_cdate_ago'] = $('.page-settings .i-task_cdate_ago').val(); $('.page-settings .bar-put-task-list-settings').html('Сохранено').show(); }); // Основные настройки function reloadMainSettings(){ } //-------------------------------------------------------------- // Этапы //-------------------------------------------------------------- // Список этапов function showStageList(){ $('.act-close-stage').click(); // Закрыть форму $('.page-settings .store-list').html('Загрузка списка этапов...'); $('.loader').show(); $.ajax({ url: base_url + '/handler/stage/get-stage-list.php', cache: false, type: "POST", data: { }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-settings .stage-list').html(data); } }); } //-------------------------------------------------------------- // Торговые марки //-------------------------------------------------------------- // Список торговых марок function showTrademarkList(){ $('.page-settings .trademark-list').html('Загрузка списка торговых марок...'); $('.loader').show(); $.ajax({ url: base_url + '/handler/trademark/get-trademark-list.php', cache: false, type: "POST", data: { }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-settings .trademark-list').html(data); // Отобразить кнопки действий при наведении на строку $('.page-settings .trademark-list tr').hover( function(){ $(this).find('td i.act-ico').css('visibility', 'visible'); $(this).addClass('over'); }, function(){ $(this).find('td i.act-ico').css('visibility', 'hidden'); $(this).removeClass('over'); } ); // Нажатие на кнопку: Показать форму редактирования $('.page-settings .trademark-list .act-edit-trademark').click(function(){ var row = $(this).parent().parent(); showTrademarkForm( row.attr('data-trademark_id') ); //var xpos = row.position().left - 22; //var ypos = row.position().top - 29; //$('.page-settings .trademark-form').css('left', xpos + 'px').css('top', ypos + 'px'); }); // Двойной клик на строку: то же что и кликнуть на кнопке "Редактировать торговую марку" $('.page-settings .trademark-list tr[data-trademark_id]').dblclick(function(){ $(this).find('.act-edit-trademark').click(); }); } }); } // Показать форму Торговой марки для добавления новой $('.page-settings .act-add-trademark').click(function(){ showTrademarkForm( null ); $(this).hide(); }); // Показать форму редактирования Торговой марки function showTrademarkForm( v_trademark_id ){ $('.page-settings .trademark-form .response').hide(); $('.page-settings .trademark-form input').val(''); $('.page-settings .trademark-form textarea').html(''); $('.page-settings .trademark-form .bar-actor-list').show(); $('.page-settings .trademark-form .actor-avatar-list').html('Загрузка...').show(); $('.page-settings .trademark-form .act-show-choose-actor-form').hide(); var z_phone_mask = '+7 (999) 999-9999'; if ( v_trademark_id != null ) { $('.page-settings .trademark-form').attr('data-action', 'edit' ); $('.loader').show(); $.ajax({ url: base_url + '/handler/trademark/get-trademark.php', cache: false, type: "POST", data: { trademark_id: v_trademark_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); //console.log(json); data = $.parseJSON(json); //console.log(data); $('.page-settings .trademark-form .d-trademark_id').val( data.trademark.trademark_id ); $('.page-settings .trademark-form .i-trademark_name').val( data.trademark.trademark_name ); $('.page-settings .trademark-form .i-trademark_short_name').val( data.trademark.trademark_short_name ); $('.page-settings .trademark-form .i-trademark_sms_sender_name').val( data.trademark.trademark_sms_sender_name ); $('.page-settings .trademark-form .i-trademark_phone').val( data.trademark.trademark_phone ).mask(z_phone_mask); //$('.page-settings .trademark-form .i-trademark_sorting').val( data.trademark.trademark_sorting ); //$('.page-settings .trademark-form .i-trademark_warranty').val( data.trademark.trademark_warranty ); //$('.page-settings .trademark-form .bar-trademark-sorting').show(); $('.page-settings .trademark-form .act-delete-trademark').show(); $('.page-settings .trademark-form .bar-actor-list').show(); showAvatarActorList( v_trademark_id ); } }); } else { // Добавить новую ТМ $('.page-settings .trademark-form').attr('data-action', 'add' ); $('.page-settings .trademark-form .d-trademark_id').val(''); $('.page-settings .trademark-form .i-trademark_name').val(''); $('.page-settings .trademark-form .i-trademark_short_name').val(''); $('.page-settings .trademark-form .i-trademark_sms_sender_name').val(''); $('.page-settings .trademark-form .i-trademark_phone').val('').mask(z_phone_mask); //$('.page-settings .trademark-form .i-trademark_sorting').val(''); //$('.page-settings .trademark-form .i-trademark_warranty').val(''); //$('.page-settings .trademark-form .bar-trademark-sorting').hide(); $('.page-settings .trademark-form .act-delete-trademark').hide(); $('.page-settings .trademark-form .bar-actor-list').hide(); } $('.page-settings .trademark-form').show().center(); $('.page-settings .trademark-form .act-close-trademark-form').show(); $('.page-settings .act-show-trademark-form').hide(); $('.page-settings .trademark-form .i-trademark_name').focus(); } // Отображаем список аватаров пользователей по торговой марке function showAvatarActorList( v_trademark_id ){ $('.loader').show(); $('.page-settings .trademark-form .act-show-choose-actor-form').show(); $.ajax({ url: base_url + '/handler/trademark/get-actor-list.php', cache: false, type: "POST", data: { trademark_id: v_trademark_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); // console.log(data); $('.page-settings .trademark-form .actor-avatar-list').html( data ); } }); } // Открыть форму выбора сотрудников $('.page-settings .trademark-form .act-show-choose-actor-form').click(function(){ let z_mode = 'TRADEMARK'; let z_trademark_id = $('.trademark-form .d-trademark_id').val(); showChooseActorForm( z_mode, z_trademark_id ); }); // Закрыть форму торговой марки $('.page-settings .trademark-form .act-close-trademark-form').click(function(){ $('.page-settings .trademark-form').hide(); $(this).hide(); $('.page-settings .act-add-trademark').show(); }); // Сохранить форму добавления / редактирования Торговой марки $('.page-settings .trademark-form .act-put-trademark').click(function(){ $('.loader').show(); $('.page-settings .trademark-form .response').html('').hide(); $.ajax({ url: base_url + '/handler/trademark/put-trademark.php', type: "POST", data: { action: $('.page-settings .trademark-form').attr('data-action'), trademark_id: $('.page-settings .trademark-form .d-trademark_id').val(), trademark_name: $('.page-settings .trademark-form .i-trademark_name').val(), trademark_short_name: $('.page-settings .trademark-form .i-trademark_short_name').val(), trademark_sms_sender_name: $('.page-settings .trademark-form .i-trademark_sms_sender_name').val(), trademark_phone: $('.page-settings .trademark-form .i-trademark_phone').val(), //trademark_warranty: $('.page-settings .trademark-form .i-trademark_warranty').val(), //trademark_sorting: $('.page-settings .trademark-form .i-trademark_sorting').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); // console.log(json); if (data.result < 0) { $('.page-settings .trademark-form .response').html(data.message).attr('data-type', 'res-error').show(); } else { $('.page-settings .trademark-form .act-close-trademark-form').click(); // adjustTrademark(); // Впоследстии сделать подгрузку нового значения во все места, где используется список ТМ showTrademarkList(); } } }); }); // Удалить ТМ $('.page-settings .trademark-form .act-delete-trademark').click(function () { if ( confirm('Удалить торговую марку без возможности восстановления?') ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/trademark/put-trademark.php', type: "POST", data: { action: 'delete', trademark_id: $('.page-settings .trademark-form .d-trademark_id').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); if (data.result < 0) { $('.page-settings .trademark-form .response').html(data.message).attr('data-type', 'res-error').show(); } else { $('.page-settings .trademark-form .act-close-trademark-form').click(); // adjustTrademark(); // Впоследствии сделать подгрузку нового значения во все места, где используется список ТМ showTrademarkList(); } } }); } });//-------------------------------------------------------------- // Источники заказов //-------------------------------------------------------------- // Список function showSourceList(){ $('.page-settings .source-list').html('Загрузка...'); $('.loader').show(); $.ajax({ url: base_url + '/handler/source/get-source-list.php', cache: false, type: "POST", data: { }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-settings .source-list').html(data); // Отобразить кнопки действий при наведении на строку $('.page-settings .source-list tr').hover( function(){ $(this).find('td i.act-ico').css('visibility', 'visible'); $(this).css('background', '#FFC'); }, function(){ $(this).find('td i.act-ico').css('visibility', 'hidden'); $(this).css('background', 'white'); } ); // Нажатие на кнопку: Показать форму редактирования $('.page-settings .source-list .act-edit-source').click(function(){ var row = $(this).parent().parent(); showSourceForm( row.attr('data-source_id') ); }); // Двойной клик на строку: то же что и кликнуть на кнопке "Редактировать торговую марку" $('.page-settings .source-list tr[data-source_id]').dblclick(function(){ $(this).find('.act-edit-source').click(); }); } }); } // Показать форму Источников для добавления нового $('.page-settings .act-show-source-form').click(function(){ showSourceForm( null ); $(this).hide(); }); // Показать форму редактирования Источника function showSourceForm( v_source_id ){ $('.source-form .response').hide(); $('.source-form input').val(''); if ( v_source_id != null ) { $('.source-form').attr('data-action', 'edit' ); $('.loader').show(); $.ajax({ url: base_url + '/handler/source/get-source.php', cache: false, type: "POST", dataType: "json", data: { source_id: v_source_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); //console.log(data); $('.source-form .d-source_id').val( data.source.source_id ); $('.source-form .i-source_name').val( data.source.source_name ); $('.source-form .i-source_sorting').val( data.source.source_sorting ); // $('.source-form .act-delete-source').show(); } }); } else { // Добавить источник $('.source-form').attr('data-action', 'add' ); $('.source-form .d-source_id').val(''); $('.source-form .i-source_name').val(''); $('.source-form .i-source_sorting').val(''); // $('.source-form .act-delete-source').hide(); } $('.source-form').show().center(); $('.source-form .act-close-source-form').show(); $('.act-show-source-form').hide(); $('.source-form .i-source_name').focus(); } // Закрыть форму Источника $('.source-form .act-close-source-form').click(function(){ $('.source-form').hide(); $(this).hide(); $('.act-show-source-form').show(); }); // Сохранить форму добавления / редактирования Источника заказа $('.source-form .act-put-source').click(function(){ $('.source-form .response').html('').hide(); $('.loader').show(); $.ajax({ url: base_url + '/handler/source/put-source.php', type: "POST", dataType: "json", data: { action: $('.source-form').attr('data-action'), source_id: $('.source-form .d-source_id').val(), source_name: $('.source-form .i-source_name').val(), source_sorting: $('.source-form .i-source_sorting').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( data ){ // console.log(data); $('.loader').hide(); if (data.result < 0) { $('.source-form .response').html(data.message).attr('data-type', 'res-error').show(); switch (data.result){ case -1: $('.source-form .i-source_name').css('background-color', 'red').animate({ backgroundColor: "white" }, 1000 ).focus(); break; } } else { $('.source-form .act-close-source-form').click(); // adjustSource(); // Впоследствии сделать подгрузку нового значения во все места, где используется список источников showSourceList(); } } }); }); // Удалить Источник $('.source-form .act-delete-source').click(function () { if ( !confirm('Удалить источник заказа без возможности восстановления?') ) return; // Удаляем $('.source-form .response').html('').hide(); $('.loader').show(); $.ajax({ url: base_url + '/handler/source/put-source.php', type: "POST", dataType: "json", data: { action: 'delete', source_id: $('.source-form .d-source_id').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( data ){ $('.loader').hide(); if (data.result < 0) { $('.source-form .response').html(data.message).attr('data-type', 'res-error').show(); } else { $('.source-form .act-close-source-form').click(); // adjustSource(); // Впоследствии сделать подгрузку нового значения во все места, где используется список источников showSourceList(); } } }); });function showChooseActorForm( v_mode, v_entity_id ){ $('.choose-actor-form .d-mode').val(v_mode); $('.choose-actor-form .d-trademark_id, .choose-actor-form .d-event_id').val(''); switch (v_mode){ case 'TRADEMARK': $('.choose-actor-form .d-trademark_id').val( v_entity_id ); break; case 'EVENT': $('.choose-actor-form .d-event_id').val( v_entity_id ); break; } $('.choose-actor-form').show(); $('.bar-choose-actor-form').center(); $('.choose-actor-form .act-close-choose-actor-form').show(); // Загрузка списка сотрудников для выбора showChooseActorList(); } // Загрузка списка сотрудников для выбора function showChooseActorList() { $('.choose-actor-form .actor-list').html('Загрузка...'); $('.loader').show(); $.ajax({ url: base_url + '/handler/choose-actor/get-actor-list-for-choose-actor.php', cache: false, type: "POST", data: { }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.choose-actor-form .actor-list').html(data); // Отобразить фон при наведении мышкой на строку $('.choose-actor-form .actor-row').hover( function(){ // $(this).css('background-color', '#ffc'); $(this).addClass('over'); }, function(){ // $(this).css('background-color', 'inherit'); $(this).removeClass('over'); } ); // При клике на строку переключаем чек по ней $('.choose-actor-form .actor-row').click(function(){ let chk = $(this).find('input[type="checkbox"]'); if ( chk.is(':checked') ){ chk.prop('checked', false); $(this).removeClass('on'); } else { chk.prop('checked', true); $(this).addClass('on'); } event.stopPropagation(); }); } }); } // Сохранить новый список сотрудников $('.choose-actor-form .act-put-actor2entity').click(function(){ // Формируем список ID сотрудников через запятую let z_actor_list = ''; let z_actor_id = ''; $('.choose-actor-form .actor-row input:checked').each( function( index ){ z_actor_id = $(this).parent().parent().attr('data-actor_id'); z_actor_list = z_actor_list + ',' + z_actor_id; }); z_actor_list = z_actor_list.substring(1); // Отбрасываем лидирующую запятую switch ( $('.choose-actor-form .d-mode').val() ) { case 'EVENT': // Передача списка сотрудников в форму event-form $('.event-form .d-actor_ids').val( z_actor_list ); // Перестроим список сотрудников в форме События showActor2EntityList( z_actor_list ); // Закрыть окно Выбора сотрудника $('.choose-actor-form .act-close-choose-actor-form').click(); break; case 'TRADEMARK': // Сохранение списка сотрудников для торговой марки let z_trademark_id = $('.choose-actor-form .d-trademark_id').val(); $('.loader').show(); $.ajax({ url: base_url + '/handler/choose-actor/put-trademark2actor.php', cache: false, type: "POST", data: { trademark_id: z_trademark_id, actor_list: z_actor_list }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(){ $('.loader').hide(); // Обновить список аватаров showAvatarActorList( z_trademark_id ); // Закрыть окно Выбора сотрудника $('.choose-actor-form .act-close-choose-actor-form').click(); } }); break; } }); // Закрыть окно Выбора сотрудника $('.choose-actor-form .act-close-choose-actor-form').click(function(){ $('.choose-actor-form').hide(); $(this).hide(); });// Активация таба function showActorListTab(v_tab){ // Активируем выбранный пункт меню $('.page-actor-list .bar-header .tab').removeClass('on'); $('.page-actor-list .bar-header .tab[data-tab="' + v_tab + '"]').addClass('on'); // console.log('v_tab=' + v_tab); // Активируем карточку выбранного таба $('.page-actor-list .tabcard').hide(); $('.page-actor-list .tabcard[data-tab="' + v_tab + '"]').show(); } // Нажатие на таб $('.page-actor-list .tab').click(function(){ // Активируем карточку выбранного таба showActorList( $(this).attr('data-tab') ); // console.log($(this).attr('data-tab')); }); // Обновить список сотрудников $('.page-actor-list .act-refresh-actor-list').click(function(){ showActorList( $('.page-actor-list .tab.on').attr('data-tab') ); }); function adjustActorFormPage( v_agroup_id ){ // Высота bar-body let h1 = $('.page-actor-form .bar-header').css('height'); // console.log('h1=' + h1); $('.page-actor-form .bar-body').css('height', ' calc(100% - ' + h1 + ') '); // Загрузка списка групп сотрудников $('.page-actor-form .actor-form .agroup-selector').load( '/handler/actor/get-agroup-selector.php', function(){ $('.page-actor-form .actor-form .agroup-selector select').css('width', '100%').css('box-sizing', 'border-box'); if (v_agroup_id > 0){ $('.page-actor-form .actor-form .i-agroup_id').val(v_agroup_id); } }); } // Показать страницу выбранного подраздела ( Сотрудники, Группы, Права ) function showActorList( v_tab ){ $('.loader').show(); var z_actor_blocked = localStorage['actor_blocked']; // Закрыть формы редактирования Группы, если ещё открыта $('.act-close-agroup-form').click(); switch (v_tab){ // Сотрудники case 'actors': $.ajax({ url: base_url + '/handler/actor/get-actor-list.php', cache: false, type: "POST", data: { actor_blocked: z_actor_blocked }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-actor-list .tabcard[data-tab="actors"]').html(data); // Открыть страницу сотрудника для добавления нового $('.page-actor-list .act-show-actor-form').click(function(){ showActorForm( null, 'actor' ); }); // Активация кнопки Копировать сотрудника из буфера обмена btn = $('.page-actor-list .act-paste-actor-from-clipboard'); if ( $('.actor-clipboard').attr('data-actor_id') > 0 ){ btn.show(); } else { btn.hide(); } // Клик на строку $('.page-actor-list .actor-list div[data-actor_id]').click(function(){ // Запоминаем сотрудника var actor_id = $(this).attr('data-actor_id'); localStorage['settings_actor_id'] = actor_id; // Подсветка выбранного сотрудника $('.page-actor-list .actor-list div').removeClass('selected'); $(this).addClass('selected'); }); // Пытаемся восстановить контекст - выбрать сотрудника if (localStorage['settings_actor_id'] > 0) { //console.log(localStorage['settings_actor_id']); $('.page-actor-list .actor-list div[data-actor_id = ' + localStorage['settings_actor_id'] + ']').click(); } // Отобразить кнопки действий при наведении на строку $('.page-actor-list .actor-list div[data-actor_id]').hover( function(){ $(this).find('div.actions .act-ico').css('visibility', 'visible'); $(this).addClass('over'); }, function(){ $(this).find('div.actions .act-ico').css('visibility', 'hidden'); $(this).removeClass('over'); } ); // Нажатие на кнопку: Показать форму редактирования $('.page-actor-list .actor-list .act-edit-actor').click(function(){ var row = $(this).parent().parent().parent(); // Подсветка выбранного сотрудника row.click(); // Открываем форму и позиционируем её showActorForm( row.attr('data-actor_id'), 'actor' ); }); // Двойной клик на строку: то же что и кликнуть на кнопке "Редактировать сотрудника" $('.page-actor-list .actor-list div[data-actor_id]').dblclick(function(){ // Подсветка выбранного сотрудника $(this).click(); // Редактировать сотрудника $(this).find('.act-edit-actor').click(); }); // Нажатие на кнопку: Скопировать сотрудника в буфер обмена $('.page-actor-list .actor-list .act-copy-actor-to-clipboard').click(function(){ var row = $(this).parent().parent().parent(); var z_actor_id = row.attr('data-actor_id'); var z_actor_label = (row.find('.actor_title').html() + ' ' + row.find('.actor_name').html()).trim(); copyActorToClipboard(z_actor_id, z_actor_label); }); // Клик по строке группы - Показать или скрыть сотрудников в группе $('.page-actor-list div.agroup-row').click(function(){ var agroup_id = $(this).attr('data-agroup_id'); $('.page-actor-list .actor-row[data-agroup_id="' + agroup_id + '"]').toggle(); }); // Показать всех сотрудников в группе $('.page-actor-list .act-expand-agroups').click(function(){ $('.page-actor-list .actor-row').show(); }); // Скрыть всех сотрудников в группе $('.page-actor-list .act-collapse-agroups').click(function(){ $('.page-actor-list .actor-row').hide(); }); // Выбор фильтра по блокировке $('.page-actor-list .actor-list-filter .tab').click(function(){ var z_actor_blocked = $(this).attr('data-actor_blocked'); localStorage['actor_blocked'] = z_actor_blocked; showActorList(v_tab); }); // Нажатие на кнопку: Создать нового сотрудника как копию из буфера обмена $('.page-actor-list .act-paste-actor-from-clipboard').click(function(){ pasteActorFromClipboard(); }); // Кнопка номера телефона - обработка наведения $('.page-actor-list .act-show-phone-form').hover( function(){ phoneNumberOverIn( $(this) ) }, function(){ phoneNumberOverOut( $(this) ) } ); // Кнопка номера телефона - Нажатие на кнопку $('.page-actor-list .act-show-phone-form').click(function(){ showPhoneForm( $(this).attr('data-phone') ); }); showActorListTab(v_tab); adjustScreenSize(); } }); break; // Активность сотрудников на эапах case 'actor-activity': showActorActivityStat(); showActorListTab(v_tab); break; // Рабочие дни case 'workday': showWorkday(); showActorListTab(v_tab); break; // Группы сотрудников case 'agroups': $.ajax({ url: base_url + '/handler/actor/get-agroup-list.php', cache: false, type: "POST", data: { }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-actor-list .tabcard[data-tab="agroups"]').html(data); // Отобразить кнопки действий при наведении на строку $('.page-actor-list .agroup-list div[data-agroup_id]').hover( function(){ $(this).find('div.act-ico').css('visibility', 'visible'); $(this).css('background', '#FFC'); }, function(){ $(this).find('div.act-ico').css('visibility', 'hidden'); $(this).css('background', '#fff'); } ); // Нажатие на кнопку: Показать форму редактирования $('.page-actor-list .agroup-list .act-show-agroup-form').click(function(){ var row = $(this).parent().parent(); showAGroupForm( row.attr('data-agroup_id')); }); // Двойной клик на строку: то же что и кликнуть на кнопке "Редактировать группу" $('.page-actor-list .agroup-list div[data-agroup_id]').dblclick(function(){ $(this).find('.act-show-agroup-form').click(); }); // Открыть форму группы для добавления новой $('.page-actor-list .act-show-new-agroup-form').click(function(){ showAGroupForm( null ); }); showActorListTab(v_tab); adjustScreenSize(); } }); break; // Список прав всех пользователей case 'access': $.ajax({ url: base_url + '/handler/access/get-access-list.php', cache: false, type: "POST", data: { user_id: null }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-actor-list .tabcard[data-tab="access"] .access-list').html(data); $('.page-actor-list .tabcard[data-tab="access"]').show(); // Отобразить при наведении на строку $('.page-actor-list .tabcard[data-tab="access"] .access-list .action-row').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Клик - выбрать действие в списке $('.page-actor-list .tabcard[data-tab="access"] .access-list .action-row').click( function(){ $('.page-actor-list .tabcard[data-tab="access"] .access-list .action-row').removeClass('selected'); $(this).addClass('selected'); showUserToActionList( $(this).attr('data-action_id'), $(this).attr('data-action_name') ); }); showUserToActionList( null, null ); showActorListTab(v_tab); adjustScreenSize(); } }); break; } } // Отобразить список пользователей для выбранного действия function showUserToActionList( v_selected_action_id, v_selected_action_name ){ $('.loader').show(); $.ajax({ url: base_url + '/handler/access/get-user2action-list.php', cache: false, type: "POST", data: { selected_action_id: v_selected_action_id, selected_action_name: v_selected_action_name }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-actor-list .tabcard[data-tab="access"] .user-list').html(data).animate({scrollTop:0}, 800); adjustScreenSize(); // Отобразить при наведении на строку $('.page-actor-list .tabcard[data-tab="access"] .user-list .user-row').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Клик на чек пользоваля в списке $('.page-actor-list .tabcard[data-tab="access"] .user-list .user-row input').click(function(){ $('.loader').show(); // Состояние ПОСЛЕ клика var z_action = ( $(this).is(':checked') )? 'add' : 'remove'; $.ajax({ url: base_url + '/handler/access/put-access.php', cache: false, type: "POST", data: { action: z_action, action_id: $(this).attr('data-action_id'), user_id: $(this).attr('data-user_id') }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); showUserToActionList( v_selected_action_id, v_selected_action_name ); } }); }); } }); } function copyActorToClipboard( v_actor_id, v_actor_title ){ // Удалить сотрудника из буфера, если уже имеется if ( $('.actor-clipboard').attr('data-actor_id').length > 0) { $('.actor-clipboard').hide(200); } // Поместить сотрудника в буфер $('.actor-clipboard') .attr('data-actor_id', v_actor_id) .attr('data-actor_title', v_actor_title) .attr('title', 'Сотрудник ' + v_actor_title) .show(200); // Показать кнопку вставки из буфера $('.page-actor-list .act-paste-actor-from-clipboard').show().attr('title', 'Добавить копию ' + v_actor_title); }; function pasteActorFromClipboard () { if ( $('.actor-clipboard').attr('data-actor_id').length > 0) { var v_actor_id = $('.actor-clipboard').attr('data-actor_id'); if ( confirm( 'Добавить копию сотрудника ' + $('.actor-clipboard').attr('data-actor_title') + '?') ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/actor/copy-actor.php', cache: false, type: "POST", data: { template_actor_id: v_actor_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); localStorage['settings_actor_id'] = v_actor_id; showActorList( $('.page-actor-list .tab.on').attr('data-tab') ); } }); } } else { alert('Буфер обмена пуст!'); } } // Этапы, закрепленные за сотрудником function showStage2ActorList(v_actor_id) { // Отображаем список закрепленных этапов $('.loader').show(); $.ajax({ url: base_url + '/handler/stage/get-stage2actor-list.php', cache: false, type: "POST", data: { actor_id: v_actor_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-actor-form .i-stage-list').html(data); } }); } // Отобразить форму редактирования группы, загрузить в неё данные function showAGroupForm( v_agroup_id ){ $('.agroup-form').hide(); $('.agroup-form .act-close-agroup-form').show(); $('.agroup-form .response').html('').attr('data-type', '').hide(); //console.log('v_agroup_id2=' + v_agroup_id); if (v_agroup_id != null) { $('.agroup-form').attr('data-action', 'edit'); $('.agroup-form .d-agroup_id').val( v_agroup_id ); // Зачитываем из базы данные по группе сотрудников $('.loader').show(); $.ajax({ url: base_url + '/handler/actor/get-agroup.php', type: "POST", data: { agroup_id: v_agroup_id }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); let data = $.parseJSON(json); // console.log(json); $('.agroup-form h1').html('Редактировать группу'); $('.agroup-form .i-agroup_name').val(data.agroup.agroup_name); $('.agroup-form .i-agroup_priority').val(data.agroup.agroup_priority); // Настройка аммортизации $('.agroup-form .chk-agroup_equ_amort_enable').attr('checked', false); if ( data.agroup.agroup_equ_amort_enable == 1 ) { $('.agroup-form .chk-agroup_equ_amort_enable').click(); } } }); $('.act-delete-agroup').show(); } else { $('.agroup-form').attr('data-action', 'add'); $('.agroup-form h1').html('Добавить группу'); $('.agroup-form .d-agroup_id').val(''); $('.agroup-form .i-agroup_name').val(''); $('.agroup-form .i-agroup_priority').val('0'); $('.agroup-form .chk-agroup_equ_amort_enable').attr('checked', false); $('.act-delete-agroup').hide(); } $('.agroup-form').show().center(); $('.agroup-form .i-agroup_name').focus(); } // Закрыть форму Группы $('.agroup-form .act-close-agroup-form').click(function(){ $(this).hide(); $('.agroup-form').hide(); $('.page-actor-list .act-show-agroup-actor-form').show(); }); // Сохранить форму добавления / редактирования Группы сотрудников $('.agroup-form .act-put-agroup').click(function(){ $('.loader').show(); $('.agroup-form .response').html('').hide(); $.ajax({ url: base_url + '/handler/actor/put-agroup.php', type: "POST", data: { action: $('.agroup-form').attr('data-action'), agroup_id: $('.agroup-form .d-agroup_id').val(), agroup_name: $('.agroup-form .i-agroup_name').val(), agroup_priority: $('.agroup-form .i-agroup_priority').val(), agroup_equ_amort_enable: $('.agroup-form .chk-agroup_equ_amort_enable').is(':checked') // 0 или 1 }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); // console.log(json); if (data.result < 0) { $('.agroup-form .response').html(data.message).attr('data-type', 'res-error').show(); } else { $('.agroup-form .act-close-agroup-form').click(); adjustActorFormPage(null); adjustTaskListPage(); showActorList('agroups'); } } }); }); // Удалить группу сотрудников $('.agroup-form .act-delete-agroup').click(function () { if ( confirm('Удалить группу без возможности восстановления?') ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/actor/put-agroup.php', type: "POST", data: { action: 'delete', agroup_id: $('.agroup-form .d-agroup_id').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); if (data.result < 0) { $('.agroup-form .response').html(data.message).attr('data-type', 'res-error').show(); } else { $('.agroup-form .act-close-agroup-form').click(); adjustActorFormPage(null); adjustTaskListPage(); showActorList('agroups'); } } }); } }); function showActorForm( v_actor_id, v_tab ) { if (!$('div').is('.page-actor-form')) return; var z_phone_mask = '+7 (999) 999-9999'; // Показываем кнопку, т.к. ее видимость используется в работе глобального Esc $('.page-actor-form .act-close-actor').show(); switch (v_tab) { case 'actor': $('.page-actor-form .actor-form div.i-stage-list').html('
Загрузка...
'); // Очищаем поля $('.page-actor-form .actor-form .i-birthday' ).val( '' ); $('.page-actor-form .actor-form .chk-use_workday').attr('checked', false); $('.page-actor-form .actor-form .chk-equ_amort_enable').attr('checked', false); $('.page-actor-form .actor-form img.i-avatar').attr('src', '').hide(); $('.page-actor-form .actor-form .response').html('').hide(); if (v_actor_id != null) { // Редактирование существующего сотрудника $('.page-actor-form .actor-form .d-actor-action').val('edit'); $('.page-actor-form .d-actor_id').val( v_actor_id ); $('.page-actor-form .act-delete-actor').show(); $('.page-actor-form .tab').show(); // Аватарка $('.page-actor-form .act-show-avatar-form').attr('data-actor_id', v_actor_id); $('.loader').show(); $.ajax({ url: base_url + '/handler/actor/get-actor.php', cache: false, type: 'POST', dataType: 'json', data: { actor_id: v_actor_id, src: 'ACTOR' }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); // Отображение в шапке var title = ''; title = (data.actor.actor_title == '' || data.actor.actor_title == null )? '' : data.actor.actor_title + '
'; title = title + ( ( data.actor.actor_name == '' || data.actor.actor_name == null )? '' : data.actor.actor_name ); $('.page-actor-form .page-title').html(title); $('.page-actor-form .actor-form .i-title').val( data.actor.actor_title ); $('.page-actor-form .actor-form .i-name').val( data.actor.actor_name ); $('.page-actor-form .actor-form .i-birthday' ).val( data.actor.actor_birthday ); $('.page-actor-form .actor-form .i-phone').val( data.actor.actor_phone ).mask(z_phone_mask); $('.page-actor-form .actor-form .i-phone_ext').val( data.actor.actor_phone_ext ); $('.page-actor-form .actor-form .i-email').val( data.actor.actor_email ); // Перенесено: $('.page-actor-form .actor-form .i-agroup_id').val( data.actor.agroup_id ); $('.page-actor-form .actor-form .i-remark').val( data.actor.actor_remark ); if (data.actor.actor_avatar != "" && data.actor.actor_avatar != null){ $('.page-actor-form img.i-avatar').attr( 'src', work_base_url + data.actor.url_avatar + '?' + Math.random() ).attr('title', data.actor.actor_name).show(); } else { $('.page-actor-form img.i-avatar').attr( 'src', work_base_url + '/data/actor/nophoto80x80.png' ).css('background', '#CCC').css('border', 'none').attr('title', 'Нет фото').show(); } // Использовать календарь рабочих дней if ( data.actor.actor_use_workday == '1' ){ $('.page-actor-form .actor-form input.chk-use_workday').click(); } // Амортизация у сотрудника (свой ли инструмент) if ( data.actor.agroup_equ_amort_enable == 'o1' ){ $('.page-actor-form .bar-equ_amort_enable').show(); // Амортизация у сотрудника (свой ли инструмент) if ( data.actor.actor_equ_amort_enable == '1' ){ $('.page-actor-form .chk-equ_amort_enable').click(); } } else { $('.page-actor-form .bar-equ_amort_enable').hide(); } // Уволенные (заблокированные) сотрудники if ( data.actor.actor_blocked == 1) { $('.page-actor-form .d-blocked').show(); $('.page-actor-form .act-dismiss-actor').hide(); $('.page-actor-form .act-restore-actor').show(); } else { $('.page-actor-form .d-blocked').hide(); $('.page-actor-form .act-dismiss-actor').show(); $('.page-actor-form .act-restore-actor').hide(); } ajustActor(); showPage('actor-form'); showActorTab(v_tab); showStage2ActorList(v_actor_id); adjustActorFormPage(data.actor.agroup_id); $('.page-actor-form .actor-form .i-name').focus(); } }); } else { // Добавление нового сотрудника $('.page-actor-form .page-title').html('Новый сотрудник'); $('.page-actor-form .d-actor_id').val(''); $('.page-actor-form .actor-form input').val(''); $('.page-actor-form .actor-form textarea').val(''); $('.page-actor-form .actor-form .d-actor-action').val('add'); $('.page-actor-form .bar-password .act-link').hide(); $('.page-actor-form .bar-password .caption').html('Пароль').show(); $('.page-actor-form .bar-password .i-password').val('').show(); $('.page-actor-form .d-blocked').hide(); $('.page-actor-form .act-dismiss-actor').hide(); $('.page-actor-form .act-restore-actor').hide(); $('.page-actor-form .act-delete-actor').hide(); $('.page-actor-form .tab').hide(); $('.page-actor-form .tab[data-tab="actor"]').show(); $('.page-actor-form img.i-avatar').attr('src', work_base_url + '/data/actor/nophoto80x80.png').css('background', '#CCC').css('border', 'none').attr('title', 'Нет фото').show(); ajustActor(); showPage('actor-form'); showActorTab(v_tab); showStage2ActorList(v_actor_id); } break; case 'user': $('.page-actor-form .user-none').hide(); $('.page-actor-form .user-blocked').hide(); $('.page-actor-form .user-active').hide(); // Очищаем поля $('.page-actor-form .user-form .i-login').val(''); $('.page-actor-form .user-form .d-phone').val(''); $('.page-actor-form .user-form .i-password').val(''); $('.page-actor-form .user-form .i-ip_security').val(''); $('.page-actor-form .user-form .chk-admin').attr('checked', false); $('.page-actor-form .user-form .chk-need-login_code').attr('checked', false); $('.page-actor-form .user-form .chk-avatar_visible').attr('checked', false); $('.page-actor-form .user-form .chk-actor_list_access').attr('checked', false); $('.page-actor-form .user-form .chk-receive_call').attr('checked', false); $('.page-actor-form .user-form .act-block-user').hide(); $('.page-actor-form .user-form .response').html('').hide(); // Делаем в систему запрос и отображаем либо пользователя, либо сообщение о его отсутствии $('.loader').show(); $.ajax({ url: base_url + '/handler/actor/get-actor.php', cache: false, type: 'POST', dataType: 'json', data: { actor_id: v_actor_id, src: 'USER' }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); var title = ''; title = (data.actor.actor_title == '' || data.actor.actor_title == null )? '' : data.actor.actor_title + '
'; title = title + ( ( data.actor.actor_name == '' || data.actor.actor_name == null )? '' : data.actor.actor_name ); $('.page-actor-form .page-title').html(title); // Уволенные (заблокированные) сотрудники if ( data.actor.actor_blocked == 1 ) { $('.page-actor-form .d-blocked').show(); } else { $('.page-actor-form .d-blocked').hide(); } if (data.actor.user_id != null) { // Аккаунт уже существует, редактирование существующего аккаунта $('.page-actor-form .user-form .d-user-action').val('edit'); $('.page-actor-form .d-user_id').val( data.actor.user_id ); $('.page-actor-form .user-form .i-login').val( data.actor.user_login ); $('.page-actor-form .user-form .d-phone').html( data.actor.actor_phone ); $('.page-actor-form .user-form .i-ip_security').val( data.actor.user_ip_security ); $('.page-actor-form .act-block-user').show(); if (data.actor.user_blocked == 1) { // Аккаунт заблокирован $('.page-actor-form .user-none').hide(); $('.page-actor-form .user-blocked').show(); $('.page-actor-form .user-active').hide(); } else { // Аккаунт активный $('.page-actor-form .user-none').hide(); $('.page-actor-form .user-blocked').hide(); $('.page-actor-form .user-active').show(); // Администратор if ( data.actor.user_admin == 1 ){ $('.page-actor-form input.chk-admin').click(); } // Видимость списка сотрудников if ( data.actor.user_actor_list_access == 1 ){ $('.page-actor-form .chk-actor_list_access').click(); } // Подтвержать вход кодом из СМС if ( data.actor.user_need_login_code == 1 ){ $('.page-actor-form input.chk-need-login_code').click(); } // Видимость аватаров if ( data.actor.user_avatar_visible == 1 ){ $('.page-actor-form input.chk-avatar_visible').click(); } // Видимость входящих звонков if ( data.actor.user_receive_call == 1 ){ $('.page-actor-form .user-form .chk-receive_call').click(); } // Поле ввода пароля $('.page-actor-form .bar-password .act-link').show(); $('.page-actor-form .bar-password .caption').html('Новый пароль').hide(); $('.page-actor-form .bar-password .i-password').hide();//.val(''); // Открыть поле ввода пароля $('.page-actor-form .bar-password .act-link').click(function() { $(this).hide(); $('.page-actor-form .bar-password .caption').show(); $('.page-actor-form .bar-password .i-password').show(); }); // Режим приема телефонных звонков ajustCallStatus(data.actor.call_status); } } else { // Аккаунт отсутствует $('.page-actor-form .user-form .d-user-action').val('add'); $('.page-actor-form .user-none').show(); $('.page-actor-form .user-blocked').hide(); $('.page-actor-form .user-active').hide(); } ajustUser(); showUser2ActorList(data.actor.user_id); showAccessList(data.actor.user_id); } }); showPage('actor-form'); showActorTab(v_tab); break; case "lk": $('.page-actor-form .lk-form .chk-visible_to_customer').attr('checked', false); $('.page-actor-form .lk-form .response').html('').hide(); ajustActor(); if (v_actor_id != null) { $('.loader').show(); $.ajax({ url: base_url + '/handler/actor/get-actor.php', cache: false, type: 'POST', dataType: 'json', data: { actor_id: v_actor_id, src: 'ACTOR' }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-actor-form .lk-form .i-name_customer').val( data.actor.actor_name_customer ); $('.page-actor-form .lk-form .i-title_customer').val( data.actor.actor_title_customer ); $('.page-actor-form .lk-form .i-phone_customer').val( data.actor.actor_phone_customer ).mask(z_phone_mask); // Видимость сотрудника для Заказчика в Списке контактов по заказу if ( data.actor.actor_visible_to_customer == '1' ){ $('.page-actor-form .chk-visible_to_customer').click(); } } }); } showPage('actor-form'); showActorTab(v_tab); break; } // swicth } $('.page-actor-form .chk-visible_to_customer').click(function(){ ajustActor(); }); // Клик по Статусу телефонии в Сотрудниках $('.page-actor-form .bar-call-status .call-status').click(function(){ switch ( $(this).attr('data-status') ){ case 'off': var new_status = 'on'; break; case 'on': var new_status = 'paused'; break; case 'paused': var new_status = 'off'; break; } // Изменяем статус в базе $('.loader').show(); $('.page-actor-form .user-form').css('opacity', '0.5'); $.ajax({ url: base_url + '/handler/actor/put-user.php', cache: false, type: "POST", data: { action: 'call-status', user_id: $('.page-actor-form .d-user_id').val(), status: new_status }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.page-actor-form .user-form').css('opacity', '1.0'); $('.loader').hide(); // Меняем отображение индикатора ajustCallStatus(new_status); } }); }); // Страница - Сотрудник, вкладка Пользователь, установка режима телефона function ajustCallStatus(v_call_status){ //console.log('ajustCallStatus'); $('.page-actor-form .bar-call-status .call-status').hide(); $('.page-actor-form .bar-call-status .call-status[data-status="' + v_call_status + '"]').show(); // НЕ НУЖНО ПРОВЕРИТЬ showPrivateCallStatus(v_call_status); } // Подстройка отображения блока function ajustActor(){ if ($('.page-actor-form .chk-visible_to_customer').is(':checked') == 1){ // По умолчанию присваиваем внутренние ФИО if ( $('.page-actor-form .i-name_customer').val() == '' ){ $('.page-actor-form .i-name_customer').val( $('.page-actor-form .i-name').val() ); } // По умолчанию присваиваем внутреннюю Должность if ( $('.page-actor-form .i-title_customer').val() == '' ){ $('.page-actor-form .i-title_customer').val( $('.page-actor-form .i-title').val() ); } // По умолчанию присваиваем внутренний Телефон if ( $('.page-actor-form .i-phone_customer').val() == '' ){ $('.page-actor-form .i-phone_customer').val( $('.page-actor-form .i-phone').val() ); } $('.page-actor-form .bar-actor_to_customer').show(); } else { $('.page-actor-form .bar-actor_to_customer').hide(); $('.page-actor-form .i-name_customer').val(''); $('.page-actor-form .i-title_customer').val(''); $('.page-actor-form .i-phone_customer').val(''); } } $('.page-actor-form .chk-admin').click(function(){ ajustUser(); }); // Подстройка пользователя function ajustUser(){ // Подстройка отображения блока if ($('.page-actor-form .chk-admin').is(':checked') == 1){ // Админ $('.page-actor-form .bar-access-user2actor').hide(); $('.page-actor-form .bar-actor-list-access').hide(); $('.page-actor-form .bar-avatar-visible').hide(); } else { // Не Админ $('.page-actor-form .bar-access-user2actor').show(); $('.page-actor-form .bar-actor-list-access').show(); $('.page-actor-form .bar-avatar-visible').show(); } $('.loader').show(); $('.loader').hide(); } // Пользователь может выполнять работу сотрудников function showUser2ActorList(v_user_id) { $('.page-actor-form .i-user2actor-list').html('
Загрузка...
'); $('.loader').show(); $.ajax({ url: base_url + '/handler/actor/get-user2actor-list.php', cache: false, type: "POST", data: { user_id: v_user_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-actor-form .i-user2actor-list').html(data); // Чекаем сотрудника - владельца аккаунта var actor_id = $('.page-actor-form .d-actor_id').val(); $('.page-actor-form #chk-actor_id_' + actor_id ).attr('checked', true).attr('disabled', ''); $('.page-actor-form label[for="chk-actor_id_' + actor_id + '"]' ).addClass('font-gray'); } }); } // Обновить страницу сотрудника $('.page-actor-form .bar-header .act-refresh-actor-form').click(function(){ showActorForm($('.page-actor-form .d-actor_id').val(), $('.page-actor-form .tab.on').attr('data-tab')); }); // Активация таба и его карточки для формы сотрудника function showActorTab(v_tab){ // Активируем выбранный пункт меню $('.page-actor-form .tab').removeClass('on'); $('.page-actor-form .tab[data-tab="' + v_tab + '"]').addClass('on'); // Активируем карточку выбранного таба $('.page-actor-form .tabcard').hide(); $('.page-actor-form .tabcard[data-tab="' + v_tab + '"]').show(); } // Нажатие на таб в карточке сотрудника $('.page-actor-form .tab').click(function(){ var actor_id = $('.page-actor-form .d-actor_id').val(); // Активируем карточку выбранного таба showActorForm(actor_id, $(this).attr('data-tab') ); }); // Закрыть форму сотрудника $('.page-actor-form .act-close-actor').click(function(){ // Скрываем кнопку, т.к. ее видимость используется в работе глобального Esc $(this).hide(); showPage('actor-list'); // Обновить список сотрудников в сервисной панели showActorMode(); }); // Уволить сотрудника $('.page-actor-form .act-dismiss-actor').click(function(){ dismissRestoreActor( $('.page-actor-form .d-actor_id').val(), 1); }); // Восстановить сотрудника $('.page-actor-form .act-restore-actor').click(function(){ dismissRestoreActor($('.page-actor-form .d-actor_id').val(), 0); }); // Уволить / Восстановить сотрудника function dismissRestoreActor( v_actor_id, v_action ) { $('.page-actor-form .actor-form .response').html('').attr('data-type', '').hide(); let confirm_text; let response_text; let action_name; switch (v_action){ case 1: confirm_text = 'Уволить сотрудника?'; response_text = 'Сотрудник уволен'; action_name = 'dismiss'; break; case 0: confirm_text = 'Восстановить сотрудника?'; response_text = 'Сотрудник восстановлен'; action_name = 'restore'; break; } if (!confirm( confirm_text )) return; $('.loader').show(); $.ajax({ url: base_url + '/handler/actor/put-actor.php', cache: false, type: "POST", data: { 'action': action_name, 'actor_id': v_actor_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); if (data.result < 0) { $('.page-actor-form .actor-form .response').html(data.message).attr('data-type', 'res-error').show(); } else { $('.page-actor-form .actor-form .response').html(data.message).attr('data-type', 'res-ok').show(); // Обновить список сотрудников в сервисной панели showActorMode(); } } }); } // Сохранить сотрудника $('.page-actor-form .act-put-actor').click(function(){ var response_actor = $('.page-actor-form .actor-form .response'); response_actor.html('').hide(); var response_user = $('.page-actor-form .user-form .response'); response_user.html('').hide(); var response_lk = $('.page-actor-form .lk-form .response'); response_lk.html('').hide(); var use_workday = ($('.page-actor-form .actor-form .chk-use_workday').is(':checked'))? 1 : 0; var visible_to_customer = ($('.page-actor-form .lk-form .chk-visible_to_customer').is(':checked'))? 1 : 0; var equ_amort_enable = ($('.page-actor-form .actor-form .chk-equ_amort_enable').is(':checked'))? 1 : 0; var stages = ''; $('.page-actor-form .actor-form .i-stage-list input[data-stage_id]').each(function(){ stages = stages + ( ($(this).is(':checked'))? ',' + $(this).attr('data-stage_id') : '' ); }); stages = stages.substr(1); // Отбрасываем лидирующую запятую // Проверка корректности даты рождения var m = $('.page-actor-form .i-birthday').val(); var z_birthday = null; if (m != '') { if ( !moment( m, "YYYY-MM-DD").isValid() ) { $('.page-actor-form .i-birthday').focus(); alert('Недопустимое значение даты рождения!'); return; } else { z_birthday = m; } } $('.loader').show(); $.ajax({ url: base_url + '/handler/actor/put-actor.php', cache: false, type: "POST", data: { 'action': $('.page-actor-form .actor-form .d-actor-action').val(), 'actor_id': $('.page-actor-form .d-actor_id').val(), 'use_workday': use_workday, 'visible_to_customer': visible_to_customer, 'stages': stages, 'title': $('.page-actor-form .actor-form .i-title').val().toLowerCase(), 'title_customer': $('.page-actor-form .lk-form .i-title_customer').val().toLowerCase(), 'agroup_id': $('.page-actor-form .actor-form .i-agroup_id option:selected').val(), 'name': $('.page-actor-form .actor-form .i-name').val(), 'name_customer': $('.page-actor-form .lk-form .i-name_customer').val(), 'birthday': z_birthday, 'phone': $('.page-actor-form .actor-form .i-phone').val(), 'phone_ext': $('.page-actor-form .actor-form .i-phone_ext').val(), 'phone_customer': $('.page-actor-form .lk-form .i-phone_customer').val(), 'email': $('.page-actor-form .actor-form .i-email').val(), 'remark': $('.page-actor-form .actor-form .i-remark').val(), 'equ_amort_enable': equ_amort_enable, }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); if (data.result < 0) { response_actor.html(data.message).attr('data-type', 'res-error').show(); response_user.html(data.message).attr('data-type', 'res-error').show(); response_lk.html(data.message).attr('data-type', 'res-error').show(); switch (data.result){ case "-1": $('.page-actor-form .actor-form .i-name').focus(); break; } } else if (data.result == 0) { localStorage['settings_actor_id'] = data.actor_id; response_actor.html(data.message).attr('data-type', 'res-ok').show(); response_user.html(data.message).attr('data-type', 'res-ok').show(); response_lk.html(data.message).attr('data-type', 'res-ok').show(); // Обновить список сотрудников в сервисной панели showActorMode(); // Обновить карточку сотрудника $('.page-actor-form .bar-header .act-refresh-actor-form').click(); } } }); }); // Показать форму для нового аккаунта $('.page-actor-form .act-show-user-form').click(function(){ $('.page-actor-form .user-none').hide(); $('.page-actor-form .user-blocked').hide(); $('.page-actor-form .user-active').show(); }); // Блокировать аккаунт $('.page-actor-form .act-block-user').click(function(){ blockUnblockUser( $('.page-actor-form .d-user_id').val(), 1); }); // Восстановить аккаунт $('.page-actor-form .act-unblock-user').click(function(){ blockUnblockUser($('.page-actor-form .d-user_id').val(), 0); }); // Блокировать / Восстановить аккаунт function blockUnblockUser( v_user_id, v_action ) { switch (v_action){ case 1: var text = 'Закрыть доступ?'; var action_name = 'block'; break; case 0: var text = 'Восстановить доступ?'; var action_name = 'unblock'; break; } if (!confirm( text )) return; $('.loader').show(); $.ajax({ url: base_url + '/handler/actor/put-user.php', cache: false, type: "POST", data: { 'action': action_name, 'user_id': v_user_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ var data = $.parseJSON(json); switch (data.result){ case 0: $('.loader').hide(); showActorForm( $('.page-actor-form .d-actor_id').val() , 'user'); break; } } }); } // Сохранить аккаунт $('.page-actor-form .act-put-user').click(function(){ var response = $('.page-actor-form .user-form .response'); response.html('').hide(); var admin = ($('.page-actor-form .user-form .chk-admin').is(':checked'))? 1 : 0; var need_login_code = ($('.page-actor-form .user-form .chk-need-login_code').is(':checked'))? 1 : 0; var avatar_visible = ($('.page-actor-form .user-form .chk-avatar_visible').is(':checked'))? 1 : 0; var actor_list_access = ($('.page-actor-form .user-form .chk-actor_list_access').is(':checked'))? 1 : 0; var receive_call = ($('.page-actor-form .user-form .chk-receive_call').is(':checked'))? 1 : 0; var user2actor = ''; $('.page-actor-form .user-form .i-user2actor-list input[data-actor_id]').each(function(){ user2actor = user2actor + ( ($(this).is(':checked'))? ',' + $(this).attr('data-actor_id') : '' ); }); user2actor = user2actor.substr(1); // Отбрасываем лидирующую запятую var access = ''; $('.page-actor-form .user-form .i-access-list input[data-action_id]').each(function(){ access = access + ( ($(this).is(':checked'))? ',' + $(this).attr('data-action_id') : '' ); }); access = access.substr(1); // Отбрасываем лидирующую запятую var z_password = null; if ( !$('.page-actor-form .user-form input.i-password').is(':hidden') ){ z_password = $('.page-actor-form .user-form input.i-password').val(); } $('.loader').show(); $.ajax({ url: base_url + '/handler/actor/put-user.php', cache: false, type: "POST", data: { 'action': $('.page-actor-form .user-form .d-user-action').val(), 'user_id': $('.page-actor-form .d-user_id').val(), 'admin': admin, 'need_login_code': need_login_code, 'avatar_visible': avatar_visible, 'user2actor': user2actor, 'access': access, 'login': $('.page-actor-form .user-form input.i-login').val(), 'password': z_password, 'receive_call': receive_call, 'ip_security': $('.page-actor-form .user-form .i-ip_security').val(), 'actor_id': $('.page-actor-form .d-actor_id').val(), 'actor_list_access': actor_list_access }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); if (data.result < 0) { response.html(data.message).attr('data-type', 'res-error').show(); switch (data.result){ case "-1": $('.page-actor-form .user-form .i-login').focus(); break; case "-2": $('.page-actor-form .user-form .i-password').focus(); break; } } else if (data.result == 0) { // showActorForm( $('.page-actor-form .d-actor_id').val() , 'user'); // localStorage['settings_actor_id'] = data.actor_id; response.html(data.message).attr('data-type', 'res-ok').show(); // Показать форму для отправки СМС клиенту, файл message.js if ( data.use_password ){ showSendSMSForm(17); } } } }); }); // Список Заказов $('.page-task-list .act-search-task').click(function(){ searchTask( $('.page-task-list .i-search-task').val() ); }); function searchTask(v_keywords){ //console.log('searchTask=' + v_keywords); localStorage['search_task_keywords'] = v_keywords; localStorage['task_page_num'] = 1; // Выполняем поиск по всем этапам var z_work_stage_id = null; // вместо этого localStorage['work_stage_id'] // Выполняем поиск по строке поиска var z_task_keywords = localStorage['search_task_keywords']; showTaskList( z_work_stage_id, z_task_keywords ); } // Платежи $('.page-finance .act-search-payment').click(function(){ searchPayment( $('.page-finance .i-search-payment').val() ); }); function searchPayment(v_keywords){ localStorage['search_payment_keywords'] = v_keywords; reloadFinancePage(); } // История $('.page-history .act-search-history').click(function(){ searchHistory( $('.page-history .i-search-history').val() ); }); function searchHistory(v_keywords){ localStorage['search_history_keywords'] = v_keywords; showHistory(); }// При перезагрузке страницы параметры сбрасываются в исходные localStorage['workday_shiftdate_begin'] = -2; localStorage['workday_shiftdate_end'] = 20; // Календарь рабочих дней function showWorkday(){ $('.loader').show(); $.ajax({ url: base_url + '/handler/work/get-workday.php', cache: false, type: "POST", data: { begin: localStorage['workday_shiftdate_begin'], end: localStorage['workday_shiftdate_end'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-actor-list .tabcard[data-tab="workday"]').html(data); adjustScreenSize(); var shiftdate = 7; // Показать прошлые дни $('.page-actor-list .act-show-past').click(function(){ localStorage['workday_shiftdate_begin'] = localStorage['workday_shiftdate_begin'] * 1 - shiftdate; localStorage['workday_shiftdate_end'] = localStorage['workday_shiftdate_end'] * 1 - shiftdate; showWorkday(); }); // Показать будущие дни $('.page-actor-list .act-show-future').click(function(){ localStorage['workday_shiftdate_begin'] = localStorage['workday_shiftdate_begin'] * 1 + shiftdate; localStorage['workday_shiftdate_end'] = localStorage['workday_shiftdate_end'] * 1 + shiftdate; showWorkday(); }); // Клик на ячейке - переключение состояния рабочего дня $('.workday-grid td.set-workday').click(function(){ var elem = $(this); $('.loader').show(); // Новое значение статуса (по кругу) switch ( $(this).attr('data-state') ) { case '': var z_state = 1; break; case '0': var z_state = 1; break; case '1': var z_state = 2; break; case '2': var z_state = 0; break; } $.ajax({ url: base_url + '/handler/work/set-workday-state.php', cache: false, type: "POST", data: { actor_id: $(this).attr('data-actor_id'), date: $(this).attr('data-date'), state: z_state }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); console.log(data); elem.attr('data-state', data.state); } }); }); } }); }// При перезагрузке страницы параметры сбрасываются в исходные localStorage['actor_activity_shiftdate_begin'] = -7; localStorage['actor_activity_shiftdate_begin'] = 7; // Активность сотрудников на этапах function showActorActivityStat(){ $('.loader').show(); $.ajax({ url: base_url + '/handler/actor-activity/get-actor-activity-stat.php', cache: false, type: "POST", data: { // stage_id: ......, begin: localStorage['actor_activity_shiftdate_begin'], end: localStorage['actor_activity_shiftdate_end'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-actor-list .tabcard[data-tab="actor-activity"] .bar-actor-activity').html(data); //adjustScreenSize(); /* var shiftdate = 7; // Показать прошлые дни $('.page-actor-list .act-show-past').click(function(){ localStorage['workday_shiftdate_begin'] = localStorage['workday_shiftdate_begin'] * 1 - shiftdate; localStorage['workday_shiftdate_end'] = localStorage['workday_shiftdate_end'] * 1 - shiftdate; showWorkday(); }); // Показать будущие дни $('.page-actor-list .act-show-future').click(function(){ localStorage['workday_shiftdate_begin'] = localStorage['workday_shiftdate_begin'] * 1 + shiftdate; localStorage['workday_shiftdate_end'] = localStorage['workday_shiftdate_end'] * 1 + shiftdate; showWorkday(); }); */ } }); }// Нажатие на ссылку отчета $('.page-report .report-items a').click(function(){ localStorage['report'] = $(this).attr('data-report'); localStorage.removeItem('report_date_begin'); localStorage.removeItem('report_date_end'); $('.page-report .report-result').hide(); showReport(localStorage['report']); }); // Обновить отчёт $('.page-report .act-reload-report').click(function(){ showReport(localStorage['report']); }); // Активация отчета function showReport(v_report){ // Активируем выбранный пункт меню $('.page-report .report-items a').removeClass('active'); $('.page-report .report-items a[data-report="' + v_report + '"]').addClass('active'); $('.page-report .report-content').css('opacity', '0.5'); $('.loader').show(); $.ajax({ url: base_url + '/handler/report/get-report.php', cache: false, type: "POST", data: { report: localStorage['report'], report_date_begin: localStorage['report_date_begin'], report_date_end: localStorage['report_date_end'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.page-report .report-content').css('opacity', '1'); $('.loader').hide(); adjustReportHeight(); $('.page-report .report-content').html(data); $('.page-report .i-report_date_begin').val( localStorage['report_date_begin'] ); $('.page-report .i-report_date_end').val( localStorage['report_date_end'] ); // При изменении начальной даты в календаре $('.page-report .i-report_date_begin').change( function(){ localStorage['report_date_begin'] = $('.page-report .i-report_date_begin').val(); $('.page-report .report-result').hide(); }); // При изменении конечной даты в календаре $('.page-report .i-report_date_end').change( function(){ localStorage['report_date_end'] = $('.page-report .i-report_date_end').val(); $('.page-report .report-result').hide(); }); // Нажатие на кнопку: Показать карточку заказа - вкладка Финансы $('.page-report .act-set-filter').click(function(){ if ( $('.page-report .i-report_date_begin').val() == '' || $('.page-report .i-report_date_end').val() == '' ){ alert('Укажите даты для отчёта!'); } else { showReport(v_report); } }); // Нажатие на кнопку: Показать карточку заказа - вкладка Финансы $('.page-report .report-content .act-show-task-finance').click(function(){ // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-report .bar-body').scrollTop(); localStorage['work_report_scroll_top'] = z_scrollTop; var z_task_id = $(this).parent().parent().attr('data-task_id'); showTaskForm( z_task_id, 'finance'); }); // Наведение на строку $('.page-report .report-row').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Клик на строку: Активировать строку $('.page-report .report-row').click(function(){ $('.page-report .report-row').removeClass('selected'); //$('.page-task-form .payment-list .payment-row .ext-row').css('display', 'none'); $(this).addClass('selected'); //$(this).find('.ext-row').css('display', 'flex'); }); } }); } // Настройка высоты страницы function adjustReportHeight(){ var div_header_height = $('.page-report .bar-header').css('height'); var summa = ' - ' + div_header_height; $('.page-report .bar-body').css( 'height', 'calc(100%' + summa + ')' ); }// Обновить список $('.page-history .act-refresh-history').click(function(){ showHistory(); }); // Список событий function showHistory(){ if (!$('div').is('.history-list')) return; // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-history .bar-body').scrollTop(); localStorage['work_history_scroll_top'] = z_scrollTop; $('.page-history .bar-body').css('opacity', '0.5'); $('.loader').show(); // Настройка отображения фильтра месяц-день $('.page-history .act-view-mode-month, .page-history .act-view-mode-day').removeClass('active').css('color', '#5590cc'); switch (localStorage['view_mode_date']){ case 'VIEW_DAY': $('.page-history .act-view-mode-day').addClass('active').css('color', 'red'); break; case 'VIEW_MONTH': $('.page-history .act-view-mode-month').addClass('active').css('color', 'red'); break; } // Проверка корректности даты начала периода var date_begin = ''; var m = $('.page-history .i-date_begin').val(); if (m != '') { if ( !moment( m, "DD.MM.YYYY").isValid() ) { $('.page-history .i-date_begin').focus(); alert('Недопустимое значение даты!'); return; } else { date_begin = moment( m, "DD.MM.YYYY").format('YYYY-MM-DD'); } } // Проверка корректности даты конца периода var date_end = ''; var m = $('.page-history .i-date_end').val(); if (m != '') { if ( !moment( m, "DD.MM.YYYY").isValid() ) { $('.page-history .i-date_end').focus(); alert('Недопустимое значение даты!'); return; } else { date_end = moment( m, "DD.MM.YYYY").format('YYYY-MM-DD'); } } $.ajax({ url: base_url + '/handler/history/get-history.php', cache: false, type: "POST", data: { action: 'general', keywords: localStorage['search_history_keywords'], filter_actor_id: $('.page-history .bar-filter .i-filter-actor_id option:selected').val(), filter_sys_action_id: $('.page-history .bar-filter .i-filter-sys_action_id option:selected').val(), task_id: null, date_period: $('.page-history .bar-filter .d-filter-date').attr('data-period'), date_begin: date_begin, date_end: date_end, page_num: localStorage['history_page_num'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.page-history .history-list').html(data); adjustHistoryHeight(); // Восстанавливаем прокрутку списка $('.page-history .bar-body').scrollTop( localStorage['work_history_scroll_top'] ).css('opacity', '1.0'); $('.loader').hide(); // Отобразить кнопки действий при наведении на строку $('.page-history .trash-list tr.sys_action_row').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Нажатие в списке на кнопку: Показать карточку заказа $('.page-history .act-edit-task').click(function(){ var task_id = $(this).parent().parent().parent().parent().attr('data-task_id'); localStorage['work_task_id'] = task_id; showTaskForm( task_id, 'history' ); }); // Клик на строку $('.page-history tr.sys_action_row').click(function(){ // Подсветка выбранного события в Истории $('.page-history tr.sys_action_row').removeClass('selected'); $(this).addClass('selected'); }); // Двойной клик по строкам таблицы заказов - открываем карточку заказа $('.page-history tr.sys_action_row').dblclick(function(){ var task_id = $(this).attr('data-task_id'); localStorage['work_task_id'] = task_id; showTaskForm( task_id, 'history' ); }); // Выбор страницы в пагинаторе $('.page-history .paginator i').click(function(){ localStorage['history_page_num'] = $(this).html(); showHistory(); }); } }); } // Настройка высоты страницы function adjustHistoryHeight(){ var div_header_height = $('.page-history .bar-header').css('height'); var summa = ' - ' + div_header_height; $('.page-history .bar-body').css( 'height', 'calc(100%' + summa + ')' ); } // Фильтр по дням $('.page-history .act-view-mode-day').click(function(){ localStorage['view_mode_date'] = 'VIEW_DAY'; showHistory(); }); // Фильтр по месяцам $('.page-history .act-view-mode-month').click(function(){ localStorage['view_mode_date'] = 'VIEW_MONTH'; showHistory(); }); // Обновить страницу Истории $('.page-history .act-reload-history').click(function(){ showHistory(); }); // Показать фильтр по истории $('.page-history .act-show-history-filter').click(function(){ $('.page-history .bar-filter').show(); $(this).hide(); $('.page-history .act-close-history-filter').show(); $('.page-history .bar-body').css('height', 'calc(100% - 120px)'); }); // Сбросить фильтр $('.act-clear-history-filter').click(function(){ $('.page-history .bar-filter .i-filter-actor_id option[value=""]').attr('selected', 'selected'); $('.page-history .bar-filter .d-filter-date').attr('data-period', '').html('не задана'); $('.page-history .bar-filter .i-date_begin').val(''); $('.page-history .bar-filter .i-date_end').val(''); // drawCategory('.page-task-list', null, null, null); localStorage['history_page_num'] = 1; showHistory(); }); // Сбросить и закрыть фильтр событий $('.act-close-history-filter').click(function(){ $('.page-history .bar-filter').hide(); $('.page-history .act-show-history-filter').show(); $(this).hide(); $('.act-clear-history-filter').click(); $('.page-history .bar-body').css('height', 'calc(100% - 51px)'); }); // Показать селектор даты событий $('.page-history .bar-filter .d-filter-date').click(function(){ $('.page-history .date-period-selector').show(); $('.page-history .act-close-date-period-selector').show() }); // Закрыть селектор даты событий $('.page-history .bar-filter .act-close-date-period-selector').click(function(){ // Скрываем кнопку, т.к. ее видимость используется в работе глобального Esc $(this).hide(); $('.page-history .date-period-selector').hide(); }); // Фильтр списка событий: выбор сотрудника $('.page-history .i-filter-actor_id').change(function(){ localStorage['history_page_num'] = 1; showHistory(); }); // Фильтр списка событий: выбор Даты события значения периода в селекторе $('.page-history .bar-filter .date-period-selector a').click(function(){ $('.page-history .d-filter-date').attr('data-period', $(this).attr('data-value') ).html( $(this).html() ); $('.page-history .bar-filter .i-date_begin').val(''); $('.page-history .bar-filter .i-date_end').val(''); $('.page-history .bar-filter .date-period-selector').hide(); localStorage['history_page_num'] = 1; showHistory(); }); // Фильтр списка событий: задание Даты начала и конца периода в селекторе явно $('.page-history .act-set-period').click(function(){ var date1 = ''; if ( $('.page-history .bar-filter .i-date_begin').val() != '' ){ date1 = $('.page-history .bar-filter .i-date_begin').val(); } var date2 = ''; if ( $('.page-history .bar-filter .i-date_end').val() != '' ){ date2 = $('.page-history .bar-filter .i-date_end').val(); } $('.page-history .d-filter-date').attr('data-period', '').html( date1 + ' / ' + date2 ); $('.page-history .bar-filter .d-filter-date').attr('data-period', ''); $('.page-history .bar-filter .date-period-selector').hide(); localStorage['history_page_num'] = 1; showHistory(); }); // Фильтр списка событий: выбор действия в истории $('.page-history .i-filter-sys_action_id').change(function(){ localStorage['history_page_num'] = 1; showHistory(); });// Активация таба function showCatalogTab(v_tab){ // Активируем выбранный пункт меню $('.page-catalog .bar-header .tab').removeClass('on'); $('.page-catalog .bar-header .tab[data-tab="' + v_tab + '"]').addClass('on'); // Активируем карточку выбранного таба $('.page-catalog .tabcard').hide(); $('.page-catalog .tabcard[data-tab="' + v_tab + '"]').show(); } // Нажатие на таб $('.page-catalog .tab').click(function(){ // Активируем карточку выбранного таба showCatalog( $(this).attr('data-tab') ); }); // Обновить каталог $('.page-catalog .act-refresh-catalog').click(function(){ showCatalog( $('.page-catalog .tab.on').attr('data-tab') ); }); // Активация режима меню function showCatalog( v_tab ){ $('.loader').show(); // Закрыть формы редактирования Товара и Группы, если те ещё открыты $('.page-catalog .item-form').hide(); $('.page-catalog .igroup-form').hide(); var v_cat = localStorage['catalog_cat']; switch (v_tab){ // Группы каталога case 'igroups': $('.page-catalog .tabcard[data-tab="igroups"]'); $.ajax({ url: base_url + '/handler/catalog/get-igroup-isubgroup-list.php', cache: false, type: "POST", data: { }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-catalog .tabcard[data-tab="igroups"]').html(data); adjustScreenSize(); // Отобразить при наведении на строку $('.page-catalog .igroup-isubgroup-list tr').hover( function(){ $(this).find('.act-show-actions').css('visibility', 'visible'); $(this).addClass('over'); }, function(){ $(this).find('.act-show-actions').css('visibility', 'hidden'); $(this).removeClass('over'); } ); // Открыть форму группы для добавления новой $('.page-catalog .act-show-new-igroup-form').click(function(){ showIGroupForm( null, 'igroup' ); }); // Открыть форму подгруппы для добавления новой $('.page-catalog .act-show-new-isubgroup-form').click(function(){ showIGroupForm( null, 'isubgroup' ); }); // Нажатие на кнопку: Показать форму редактирования Группы или Подгруппы $('.page-catalog .igroup-isubgroup-list .act-show-igroup-form, .page-catalog .igroup-isubgroup-list .act-show-isubgroup-form').click(function(){ var row = $(this).parent().parent().parent(); var type = row.attr('data-type'); showIGroupForm( row.attr('data-' + type + '_id'), type); }); // Двойной клик на строку: то же что и кликнуть на кнопке "Редактировать группу" $('.page-catalog .igroup-isubgroup-list tr[data-igroup_id]').dblclick(function(){ $(this).find('.act-show-igroup-form,.act-show-isubgroup-form').click(); }); showCatalogTab(v_tab); } }); break; // Каталог товаров и услуг case 'items': $('.page-catalog .tabcard[data-tab="items"]'); $.ajax({ url: base_url + '/handler/catalog/get-item-list.php', cache: false, type: "POST", data: { cat: v_cat, keyword: localStorage['keyword_search_catalog'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-catalog .tabcard[data-tab="items"]').html(data); adjustScreenSize(); // Восстановать строку поиска $('.page-catalog .tabcard[data-tab="items"] .i-search-item-in-catalog').val( localStorage['keyword_search_catalog'] ); // Клик "Добавить товар" - показать форму редактирования товара $('.page-catalog .tabcard[data-tab="items"] .btn.act-show-item-form').click(function(){ showItemForm( null, 'item-form' ); }); // Клик "Искать" - выполнить поиск по ключевому слову $('.page-catalog .tabcard[data-tab="items"] .act-search-item-in-catalog').click(function(){ var keyword = $('.page-catalog .tabcard[data-tab="items"] .i-search-item-in-catalog').val(); localStorage['keyword_search_catalog'] = keyword; $('.page-catalog .act-refresh-catalog').click(); }); // Очистить фильтр каталога. Каталог не перегружаем. $('.page-catalog .tabcard[data-tab="items"] .act-clear-global-catalog-filter').click(function(){ $('.page-catalog .tabcard[data-tab="items"] .i-search-item-in-catalog').val(''); localStorage.removeItem('keyword_search_catalog'); }); // Клик на строку $('.page-catalog .item-list div[data-item_id]').click(function(){ // Запоминаем товар var item_id = $(this).attr('data-item_id'); localStorage['work_item_id'] = item_id; var igroup_id = $(this).attr('data-igroup_id'); localStorage['work_igroup_id'] = igroup_id; var isubgroup_id = $(this).attr('data-isubgroup_id'); localStorage['work_isubgroup_id'] = isubgroup_id; // Подсветка выбранного товара $('.page-catalog .item-list div[data-item_id]').removeClass('selected'); $(this).addClass('selected'); }); // Отобразить при наведении на строку $('.page-catalog .item-list div[data-item_id]').hover( function(){ $(this).find('i.act-ico').css('visibility', 'visible'); $(this).addClass('over'); }, function(){ $(this).find('i.act-ico').css('visibility', 'hidden'); $(this).removeClass('over'); } ); // Нажатие на кнопку: Показать форму редактирования $('.page-catalog .item-list .act-show-item-form').click(function(){ var row = $(this).parent().parent().parent(); // Подсветка выбранного товара row.click(); // Открываем форму showItemForm( row.attr('data-item_id'), 'item-form' ); }); // Двойной клик на строку: то же что и кликнуть на кнопке "Редактировать товар" $('.page-catalog .item-list div[data-item_id]').dblclick(function(){ // Подсветка выбранного товара $(this).click(); // Редактировать товар $(this).find('.act-show-item-form').click(); }); // Нажатие на кнопку: Скопировать товар в буфер обмена $('.page-catalog .item-list .act-copy-item-to-clipboard').click(function(){ var row = $(this).parent().parent().parent(); var z_item_id = row.attr('data-item_id'); var z_item_label = row.find('.item_name').html(); copyItemToClipboard(z_item_id, z_item_label); }); // Клик по строке группы - Показать или скрыть товары в группе $('.page-catalog .igroup').click(function(){ var igroup_id = $(this).attr('data-igroup_id'); $('.page-catalog .item-row[data-igroup_id="' + igroup_id + '"]').toggle(); }); // Клик по строке подгруппы - Показать или скрыть товары в подгруппе $('.page-catalog .isubgroup').click(function(){ var isubgroup_id = $(this).attr('data-isubgroup_id'); $('.page-catalog .item-row[data-isubgroup_id="' + isubgroup_id + '"]').toggle(); }); // Раскрыть все группы $('.page-catalog .act-expand-igroups').click(function(){ $('.page-catalog .item-list .item-row').show(); }); // Схлопнуть все группы $('.page-catalog .act-collapse-igroups').click(function(){ $('.page-catalog .item-list .item-row').hide(); }); // Выбор фильтра по статусам $('.page-catalog .catalog-cat-filter .tab').click(function(){ var z_cat = $(this).attr('data-cat'); localStorage['catalog_cat'] = z_cat; showCatalog(v_tab); }); showCatalogTab(v_tab); restoreCatalogContex(); } }); break; } } // Пытаемся восстановить контекст - выбрать рабочий товар function restoreCatalogContex(){ if (localStorage['work_igroup_id'] > 0) { var igroup_row = $('.page-catalog .item-list div[data-igroup_id = ' + localStorage['work_igroup_id'] + ']'); $('.page-catalog .item-row[data-igroup_id="' + localStorage['work_igroup_id'] + '"]').toggle(); } if (localStorage['work_isubgroup_id'] > 0) { var isubgroup_row = $('.page-catalog .item-list div[data-isubgroup_id = ' + localStorage['work_isubgroup_id'] + ']'); $('.page-catalog .item-row[data-isubgroup_id="' + localStorage['work_isubgroup_id'] + '"]').toggle(); } if (localStorage['work_item_id'] > 0) { var item_row = $('.page-catalog .item-list div[data-item_id = ' + localStorage['work_item_id'] + ']'); item_row.click(); } } function copyItemToClipboard( v_item_id, v_item_title ){ // Удалить товар из буфера, если уже имеется if ( $('.item-clipboard').attr('data-item_id').length > 0) { $('.item-clipboard').hide(200); } // Поместить товар в буфер $('.item-clipboard') .attr('data-item_id', v_item_id) .attr('title', 'Товар в буфере обмена: ' + v_item_title) .show(200); }; function pasteSlaveFromClipboard ( v_item_id ) { if ( $('.item-clipboard').attr('data-item_id').length > 0) { if ( confirm('Скопировать комплектующие из товара, находящегося в буфере обмена?') ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/catalog/copy-slave-items.php', cache: false, type: "POST", data: { item_id: v_item_id, template_item_id: $('.item-clipboard').attr('data-item_id') }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); showItemForm( v_item_id, 'item-type' ); } }); } } else { alert('Буфер обмена пуст!'); } } // Отобразить форму редактирования Группы или Подгруппы, загрузить в неё данные function showIGroupForm( v_igroup_id, v_type ){ $('.page-catalog .igroup-form').hide(); $('.page-catalog .igroup-form .act-close-igroup-form').show(); $('.page-catalog .igroup-form .response').html('').attr('data-type', '').hide(); // Сброс отображения $('.page-catalog .igroup-form h1').html('Загрузка...'); $('.page-catalog .igroup-form .i-igroup_name').val(''); $('.page-catalog .igroup-form .i-igroup_priority').val(''); $('.page-catalog .igroup-form .bar-igroup_parent_id').hide(); $('.page-catalog .igroup-form .d-igroup_type').val(v_type); if (v_igroup_id != null) { // Редактировать существующую группу или подгруппу $('.page-catalog .igroup-form').attr('data-action', 'edit'); $('.page-catalog .igroup-form .d-igroup_id').val( v_igroup_id ); // Зачитываем параметры редактируемой группы $('.loader').show(); $.ajax({ url: base_url + '/handler/catalog/get-igroup.php', type: "POST", data: { igroup_id: v_igroup_id }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); switch (v_type){ // Группа case 'igroup': var title = "Редактировать группу товаров"; $('.page-catalog .igroup-form .bar-igroup_parent_id').hide(); $('.page-catalog .igroup-form .i-igroup_parent_id').val(''); break; // Подгруппа case 'isubgroup': var title = "Редактировать подгруппу товаров"; $('.page-catalog .igroup-form .bar-igroup_parent_id').show(); // Загрузка списка групп товаров // v_igroup_id - ID подгруппы, для него будем находить parent_id $('.page-catalog .igroup-form .selector-igroup_parent_id'). load( '/handler/catalog/get-igroup-selector.php?level=1', function() { // Позиционируем текущее значение parent_id $('.page-catalog .igroup-form .i-igroup_parent_id').val(data.parent_id); }); break; } $('.page-catalog .igroup-form h1').html(title); $('.page-catalog .igroup-form .i-igroup_name').val(data.name); $('.page-catalog .igroup-form .i-igroup_priority').val(data.priority); } }); $('.page-catalog .igroup-form .act-delete-igroup').show(); } else { // Добавить новую группу или подгруппу $('.page-catalog .igroup-form').attr('data-action', 'add'); switch (v_type){ case 'igroup': var title = "Добавить группу товаров"; $('.page-catalog .igroup-form .bar-igroup_parent_id').hide(); break; case 'isubgroup': var title = "Добавить подгруппу товаров"; $('.page-catalog .igroup-form .bar-igroup_parent_id').show(); // Загрузка списка групп товаров $('.page-catalog .igroup-form .selector-igroup_parent_id').load( '/handler/catalog/get-igroup-selector.php?level=1' ); break; } $('.page-catalog .igroup-form h1').html(title); $('.page-catalog .igroup-form .d-igroup_id').val(''); $('.page-catalog .igroup-form .i-igroup_name').val(''); $('.page-catalog .igroup-form .i-igroup_priority').val('0'); $('.page-catalog .igroup-form .act-delete-igroup').hide(); } $('.page-catalog .igroup-form').show().center(); $('.page-catalog .igroup-form .i-igroup_name').focus(); } // Закрыть форму Группы $('.page-catalog .act-close-igroup-form').click(function(){ $(this).hide(); $('.page-catalog .igroup-form').hide(); $('.page-catalog .act-show-igroup-item-form').show(); }); // Сохранить форму добавления / редактирования Группы $('.page-catalog .igroup-form .act-put-igroup').click(function(){ $('.loader').show(); $('.page-catalog .igroup-form .response').html('').hide(); $.ajax({ url: base_url + '/handler/catalog/put-igroup.php', type: "POST", data: { action: $('.page-catalog .igroup-form').attr('data-action'), igroup_id: $('.page-catalog .igroup-form .d-igroup_id').val(), igroup_name: $('.page-catalog .igroup-form .i-igroup_name').val(), igroup_parent_id: $('.page-catalog .igroup-form .i-igroup_parent_id').val(), igroup_priority: $('.page-catalog .igroup-form .i-igroup_priority').val(), igroup_type: $('.page-catalog .igroup-form .d-igroup_type').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); if (data.result < 0) { $('.page-catalog .igroup-form .response').html(data.message).attr('data-type', 'res-error').show(); } else { $('.page-catalog .igroup-form .act-close-igroup-form').click(); adjustCatalogPage(); showCatalog('igroups'); } } }); }); // Удалить группу $('.page-catalog .igroup-form .act-delete-igroup').click(function () { if ( confirm('Удалить группу без возможности восстановления?') ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/catalog/put-igroup.php', type: "POST", data: { action: 'delete', igroup_id: $('.page-catalog .igroup-form .d-igroup_id').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); if (data.result < 0) { $('.page-catalog .igroup-form .response').html(data.message).attr('data-type', 'res-error').show(); } else { $('.page-catalog .igroup-form .act-close-igroup-form').click(); adjustCatalogPage(); showCatalog('igroups'); } } }); } }); function adjustCatalogPage(){ // Загрузка списка групп и подгрупп товаров $('.page-catalog .item-form .i-igroup_id').load( '/handler/catalog/get-igroup-selector.php' ); } // Активация таба и его карточки для формы товара function showItemFormTab(v_tab){ // Активируем выбранный пункт меню $('.page-catalog .item-form .tab').removeClass('on'); $('.page-catalog .item-form .tab[data-tab="' + v_tab + '"]').addClass('on'); // Активируем карточку выбранного таба $('.page-catalog .item-form .tabcard').hide(); $('.page-catalog .item-form .tabcard[data-tab="' + v_tab + '"]').show(); } // Нажатие на таб в карточке товара $('.page-catalog .item-form .tab').click(function(){ let z_item_id = $('.page-catalog .item-form .d-item_id').val(); // Активируем карточку выбранного таба showItemForm( z_item_id, $(this).attr('data-tab') ); }); // Нажатие на ссылку - показать фото $('.item-form .act-show-tab-iphoto').click(function(){ // Активируем карточку выбранного таба showItemFormTab('iphoto'); }); // Отобразить форму редактирования товара, загрузить в неё данные function showItemForm( v_item_id, v_tab ){ // Сбрасываем флажок требование обновить список if ( $('.page-catalog .act-close-item-form').is(':visible') ){ $('.page-catalog .item-form .d-need-refresh-list').val('0'); } $('.page-catalog .act-close-item-form').show(); $('.page-catalog .item-form .response').html('').attr('data-type', '').hide(); if ( v_item_id != null ) { // Зачитываем параметры редактируемого товара $('.loader').show(); $.ajax({ url: base_url + '/handler/catalog/get-item.php', type: "POST", data: { item_id: v_item_id }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); // Редактирование существующего товара $('.page-catalog .item-form .tabs').show(); $('.page-catalog .item-form').attr('data-action', 'edit'); $('.page-catalog .item-form .d-item_id').val( v_item_id ); $('.page-catalog .item-form .act-delete-item').show(); $('.page-catalog .item-form .bar-type').hide(); // Название товара $('.page-catalog .item-form .item-article').html(data.item_article_formated); $('.page-catalog .item-form h1.page-title').html('Редактирование товара'); switch (v_tab){ case 'item-form': $('.page-catalog .item-form .act-show-select-igroup_id').show(); $('.page-catalog .item-form .bar-display-igroup_id').show(); // ??? $('.page-catalog .item-form .bar-select-igroup_id').hide(); $('.page-catalog .item-form .bar-article').show(); // Название товара $('.page-catalog .item-form .i-item_name').val(data.item_name).focus(); // Размерность $('.page-catalog .item-form .i-measure').val(data.item_measure); // Артикул $('.page-catalog .item-form .i-article').val(data.item_article); // Группа и подгруппа var z_igroup_id = data.igroup_id; var z_isubgroup_id = data.isubgroup_id; var z_ig_id = (z_isubgroup_id != null)? z_isubgroup_id : z_igroup_id; $('.page-catalog .item-form .i-igroup_id').val(z_ig_id); $('.page-catalog .item-form .bar-display-igroup-isubgroup').show(); var z_group_name = data.igroup_name; z_group_name = (z_group_name == '')? '(не задана)' : z_group_name; $('.page-catalog .item-form .d-igroup_name').val(z_group_name); var z_subgroup_name = data.isubgroup_name; z_subgroup_name = (z_subgroup_name == '')? '(не задана)' : z_subgroup_name; $('.page-catalog .item-form .d-isubgroup_name').val(z_subgroup_name); $('.page-catalog .item-form').center(); // Кнопки управлением Архивом var z_archive_text = (data.item_archive == 0)? "Отправить в архив" : "Восстановить из архива"; $('.page-catalog .act-archive-item').show(); $('.page-catalog .act-archive-item').attr('data-archive', data.item_archive).html( z_archive_text ); showItemFormTab(v_tab); break; case 'item-type': showItemType( data ); showItemFormTab(v_tab); break; case 'iphoto': reloadIPhotoList( v_item_id ); showItemFormTab(v_tab); break; } $('.page-catalog .item-form').show().center(); } }); } else { // Создание нового товара $('.page-catalog .item-form .tabs').show(); $('.page-catalog .item-form').attr('data-action', 'edit'); $('.page-catalog .item-form .d-item_id').val( v_item_id ); $('.page-catalog .item-form .act-delete-item').show(); $('.page-catalog .item-form .bar-type').hide(); $('.page-catalog .item-form .tabs').hide(); $('.page-catalog .item-form').attr('data-action', 'add'); $('.page-catalog .item-form .d-item_id').val(''); $('.page-catalog .item-form .i-item_name').val(''); $('.page-catalog .item-form h1.page-title').html('Новый товар'); $('.page-catalog .item-form .i-measure').val(''); $('.page-catalog .item-form .bar-display-igroup-isubgroup').hide(); // Артикул товара $('.page-catalog .item-form .bar-article').hide(); $('.page-catalog .item-form .i-article').val(''); // $('.page-catalog .item-form .bar-price-client').hide(); $('.page-catalog .item-form .i-price1').val(''); $('.page-catalog .item-form .i-price_work').val(''); $('.page-catalog .item-form .i-price_equ_amort').val(''); // $('.page-catalog .item-form .bar-price-store').hide(); $('.page-catalog .item-form .i-price_store').val(''); // Отключаем признак Архивного товара $('.page-catalog .item-form .act-archive-item').attr('data-archive', ''); $('.page-catalog .act-archive-item').html('').hide(); $('.page-catalog .act-delete-item').hide(); // Переход в режим выбора группы и подгруппы $('.page-catalog .item-form .act-show-select-igroup_id').click(); $('.page-catalog .item-form').show().center(); showItemFormTab('item-form'); $('.page-catalog .item-form .i-item_name').focus(); } } // Расчет изменений по Цене закупки $('.page-catalog .item-form .i-price_store') .keyup(function(){ updateItemForm('PRICE_STORE'); }) .change(function(){ updateItemForm('PRICE_STORE'); }); // Расчет изменений по Наценке $('.page-catalog .item-form .i-profit_persent') .keyup(function(){ updateItemForm('PROFIT_PERSENT'); }) .change(function(){ updateItemForm('PROFIT_PERSENT'); }); // Расчет изменений по Цене продажи $('.page-catalog .item-form .i-price1') .keyup(function(){ updateItemForm('PRICE1'); }) .change(function(){ updateItemForm('PRICE1'); }); // Прорисовка по значению поля FIXED function adjustItemFormFixed( v_fixed_alias ){ console.log( 'v_fixed_alias = ' + v_fixed_alias ); // Тип товара var z_type = $('.page-catalog .item-form .d-item_type').val( ); switch ( z_type ){ case 'SIMPLE': var elem = $('.page-catalog .item-form .bar-type[data-item_type="SIMPLE"]'); break; case 'COMPLEX': var elem = $('.page-catalog .item-form .bar-type[data-item_type="COMPLEX"]'); break; case 'COMPONENT': var elem = $('.page-catalog .item-form .bar-type[data-item_type="COMPONENT"]'); break; } // По умолчанию фиксируем Цену продажи v_fixed_alias = ( v_fixed_alias == null || v_fixed_alias == '')? 'PRICE1' : v_fixed_alias; elem.attr('data-fixed', v_fixed_alias); switch ( v_fixed_alias ){ case 'PRICE1': // Редактируем Цену продажи, при пересчётах она будет фиксированной elem.find('.i-price1').removeClass('readonly').attr('readonly', false); elem.find('.i-profit_persent').addClass('readonly').attr('readonly', true); $('.edit-profit_persent').css( 'visibility', 'visible' ); $('.edit-price1').css( 'visibility', 'hidden' ); elem.find('.i-price1').focus(); break; case 'PROFIT_PERSENT': // Редактируем Наценку, при пересчётах она будет фиксированной elem.find('.i-profit_persent').removeClass('readonly').attr('readonly', false); elem.find('.i-price1').addClass('readonly').attr('readonly', true ); $('.edit-profit_persent').css( 'visibility', 'hidden' ); $('.edit-price1').css( 'visibility', 'visible' ); elem.find('.i-profit_persent').focus(); break; } } // Обновить данные в форме Товара function updateItemForm(v_field){ $('.page-catalog .item-form .response').html('').hide(); var z_type = $('.page-catalog .item-form .d-item_type').val( ); switch ( z_type ){ case 'SIMPLE': var elem = $('.page-catalog .item-form .bar-type[data-item_type="SIMPLE"]'); break; case 'COMPLEX': var elem = $('.page-catalog .item-form .bar-type[data-item_type="COMPLEX"]'); break; case 'COMPONENT': var elem = $('.page-catalog .item-form .bar-type[data-item_type="COMPONENT"]'); break; } if ( z_type == 'SIMPLE' || z_type == 'COMPLEX' || z_type == 'COMPONENT' ) { var str = elem.find('.i-price_store').val(); var item_price_store = parseFloat( str.replace(/ /gi, '') ); if ( z_type == 'COMPLEX' || z_type == 'SIMPLE' ) { var str = elem.find('.i-profit_persent').val(); var item_profit_persent = parseFloat( str.replace(/ /gi, '') ); var str = elem.find('.i-price1').val(); var item_price1 = parseFloat( str.replace(/ /gi, '') ); if ( z_type == 'COMPLEX') { var str = elem.find('.i-price_work').val(); var item_price_work = parseFloat( str.replace(/ /gi, '') ); var str = elem.find('.i-price_equ_amort').val(); var item_price_equ_amort = parseFloat( str.replace(/ /gi, '') ); } } switch ( v_field ) { case 'PRICE_STORE': // Редактируем Цену закуп, фикс Наценка, вычисляем Цену продажи case 'PROFIT_PERSENT': // Редактируем Наценку, фикс Цена закуп, вычисляем Цену продажи var item_price1 = item_price_store + ( item_price_store * item_profit_persent / 100 ); if ( !isNaN(item_price1) ) { elem.find('.i-price1').val( number_format(item_price1, '2', '.', ' ') ); } else { elem.find('.i-price1').val( null ); } console.log('call adjustItemFormFixed from PROFIT_PERSENT'); adjustItemFormFixed('PROFIT_PERSENT'); break; case 'PRICE1': // Редактируем Цену продажи, фикс Цена закуп, вычисляем Наценку var item_profit_persent = (( item_price1 - item_price_store ) / item_price_store ) * 100; if ( !isNaN(item_profit_persent) ) { elem.find('.i-profit_persent').val( number_format(item_profit_persent, '1', '.', ' ') ); } else { elem.find('.i-profit_persent').val( null ); } console.log('call adjustItemFormFixed from PRICE1'); adjustItemFormFixed('PRICE1'); break; } } } $('.edit-profit_persent').click( function(){ adjustItemFormFixed( 'PROFIT_PERSENT' ); }); $('.edit-price1').click( function(){ adjustItemFormFixed( 'PRICE1' ); }); // Расчет изменений в Комплектующем товаре по закупочной цене и по количеству $('.page-catalog .slave-item-form .i-price_store, .page-catalog .slave-item-form .i-count') .keyup(function(){ updateSlaveItemForm(); }) .change(function(){ updateSlaveItemForm(); }); // Отобразить форму редактирования комплектующего товара, загрузить в неё данные function showSlaveItemForm( v_master_item_id, v_slave_item_id ){ $('.page-catalog .act-close-slave-item-form').show(); $('.page-catalog .slave-item-form .response').html('').attr('data-type', '').hide(); // Редактирование комплектующего товара $('.page-catalog .slave-item-form .d-master_item_id').val( v_master_item_id ); $('.page-catalog .slave-item-form .d-slave_item_id').val( v_slave_item_id ); // Зачитываем параметры редактируемого товара $('.loader').show(); $.ajax({ url: base_url + '/handler/catalog/get-slave-item.php', type: "POST", data: { master_item_id: v_master_item_id, slave_item_id: v_slave_item_id }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); // Название товара $('.page-catalog .slave-item-form h1.page-title').html(data.item_name); // Цена закупочная $('.page-catalog .slave-item-form .i-price_store').val(data.item_price_store).focus(); // Количество $('.page-catalog .slave-item-form .i-count').val(data.slave2master_count); // Стоимость updateSlaveItemForm(); $('.page-catalog .slave-item-form').center().show(); } }); } // Обновить данные в форме Комплектующего товара function updateSlaveItemForm(){ var str = $('.page-catalog .slave-item-form .i-price_store').val(); var item_price_store = parseFloat( str.replace(/ /gi, '') ); var str = $('.page-catalog .slave-item-form .i-count'); var item_count = parseFloat( str.val().replace(/ /gi, '') ); var item_total_price_store = item_price_store * item_count; if ( !isNaN(item_total_price_store) ) { $('.page-catalog .slave-item-form .i-total-price_store').val( number_format(item_total_price_store, '2', '.', ' ') ); } else { $('.page-catalog .slave-item-form .i-total-price_store').val( null ); } } // Отобразить тип редактирования товара (вторая вкладка Назначение и Цены) function showItemType( v_item_data ){ // v_type_alias = null(CHOOSE) | SIMPLE | COMPLEX | COMPONENT var v_type_alias = ( v_item_data.item_type == null || v_item_data.item_type == '')? 'CHOOSE' : v_item_data.item_type; $('.page-catalog .item-form .d-item_type').val( v_type_alias ); $('.page-catalog .item-form .bar-type').hide(); $('.page-catalog .item-form .bar-type[data-item_type="' + v_type_alias +'"]').show(); switch ( v_type_alias ) { case 'CHOOSE': case 'SIMPLE': // Показать только Цену продажи или же также и Цену закупки и Наценки if ( v_item_data.item_price_store > 0 ) { $('.page-catalog .item-form .bar-store-anons').hide(); $('.page-catalog .item-form .bar-store').show(); $('.page-catalog .item-form .i-price_store').val( v_item_data.item_price_store ); } else { $('.page-catalog .item-form .bar-store-anons').show(); $('.page-catalog .item-form .bar-store').hide(); } $('.page-catalog .item-form .i-price1').val( v_item_data.item_price1 ); updateItemForm('PRICE1'); $('.page-catalog .item-form .i-price1').focus(); break; case 'COMPLEX': // Отобразить список комплектующих $('.loader').show(); $.ajax({ url: base_url + '/handler/catalog/get-slave-item-list.php', type: "POST", data: { item_id: v_item_data.item_id }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( data ){ $('.loader').hide(); var elem = $('.page-catalog .item-form .bar-type[data-item_type="COMPLEX"] .slave-item-list'); elem.html(data); elem.find('.act-show-slave-item-form').hide(); $('.page-catalog .item-form').center(); $('.page-catalog .item-form .i-price_store').val( number_format(v_item_data.item_price_store, '2', '.', ' ') ); $('.page-catalog .item-form .i-profit_persent').val( number_format(v_item_data.item_profit_persent, '2', '.', ' ') ); $('.page-catalog .item-form .i-price1').val( number_format(v_item_data.item_price1, '2', '.', ' ') ); updateItemForm( v_item_data.item_fixed ); // = PRICE1 | PROFIT_PERSENT console.log( ' showItemType: v_item_data = ' + v_item_data) ; console.log( ' showItemType: v_item_data.fixed = ' + v_item_data.item_fixed ); adjustItemFormFixed( v_item_data.item_fixed ); // Отобразить при наведении на строку elem.find('tr').hover( function(){ $(this).find('.act-show-slave-item-form').show(); $(this).addClass('over'); }, function(){ $(this).find('.act-show-slave-item-form').hide(); $(this).removeClass('over'); } ); // Клик на кнопку - Показать форму комплектующего товара $('.page-catalog .act-show-slave-item-form').click(function(){ var v_master_item_id = v_item_data.item_id; var v_slave_item_id = $(this).parent().parent().attr('data-item_id'); showSlaveItemForm( v_master_item_id, v_slave_item_id ); }); // Двойной клик на строку: то же что и кликнуть на кнопке "Редактировать компл товар" $('.page-catalog .slave-item-list tr[data-item_id]').dblclick(function(){ // Подсветка выбранного товара $(this).click(); // Редактировать товар $(this).find('.act-show-slave-item-form').click(); }); // Показать форму выбора комплектующего товара $('.page-catalog .act-show-select-slave-item-form').click(function(){ showSelectSlaveItemForm( v_item_data.item_id ); }); $('.page-catalog .act-paste-slave-from-clipboard').click(function(){ pasteSlaveFromClipboard( v_item_data.item_id ); }); } }); $('.page-catalog .item-form .bar-type[data-item_type="COMPLEX"] .i-price_work').val( v_item_data.item_price_work ); $('.page-catalog .item-form .bar-type[data-item_type="COMPLEX"] .i-price_equ_amort').val( v_item_data.item_price_equ_amort ); $('.page-catalog .item-form .bar-type[data-item_type="COMPLEX"] .i-price1').focus(); break; case 'COMPONENT': $('.page-catalog .item-form .i-price_store').val( v_item_data.item_price_store ).focus(); updateItemForm('PRICE_STORE'); $('.page-catalog .item-form .i-price1').val(''); break; } } // Показать форму выбора типа товара function showSelectSlaveItemForm( v_master_item_id ){ $('.page-catalog .act-close-select-slave-item-form').show(); // Редактирование комплектующего товара $('.page-catalog .select-slave-item-form .d-master_item_id').val( v_master_item_id ); var item_name = $('.page-catalog .item-form .page-title').html(); $('.page-catalog .select-slave-item-form .master_item_name').html( item_name ); // Зачитываем параметры редактируемого товара $('.loader').show(); $.ajax({ url: base_url + '/handler/catalog/get-slave-catalog.php', type: "POST", data: { master_item_id: v_master_item_id }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( data ){ $('.loader').hide(); $('.page-catalog .select-slave-item-form .slave-catalog').html( data ); $('.page-catalog .select-slave-item-form').center().show(); // Клик по чеку товарной строки var chk = $('.page-catalog .select-slave-item-form .slave-catalog .chk-item'); chk.click(function(){ var z_row = $(this).parent().parent(); //console.log( 'is:checked=' + $(this).is(':checked') ); // Состояние ПОСЛЕ клика var z_action = ( $(this).is(':checked') )? 'slave_bind' : 'slave_unbind'; //console.log('z_action=' + z_action); var z_master_item_id = $('.page-catalog .select-slave-item-form .d-master_item_id').val(); //console.log('z_master_item_id=' + z_master_item_id); var z_slave_item_id = z_row.attr('data-item_id'); //console.log('z_slave_item_id=' + z_slave_item_id); var z_bind_id = z_row.attr('data-bind_id'); // Инвертируем признак $('.loader').show(); $.ajax({ url: base_url + '/handler/catalog/put-item.php', type: "POST", data: { action: z_action, master_item_id: z_master_item_id, slave_item_id: z_slave_item_id, bind_id: z_bind_id }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); if (data.result == 0) { switch (z_action){ case 'slave_bind': $(this).prop('checked', true); z_row.attr('data-bind_id', data.bind_id); break; case 'slave_unbind': $(this).prop('checked', false); z_row.attr('data-bind_id', ''); break; } } } }); }); // Клик по строке группы - Показать или скрыть товары в группе $('.page-catalog .select-slave-item-form .slave-catalog tr.igroup').click(function(){ var igroup_id = $(this).attr('data-igroup_id'); $('.page-catalog .select-slave-item-form .slave-catalog .item-row[data-igroup_id="' + igroup_id + '"]').toggle(); }); // Показать все товары в группе $('.page-catalog .select-slave-item-form .slave-catalog tr .act-expand-igroups').click(function(){ $('.page-catalog .select-slave-item-form .slave-catalog .item-row').show(); }); // Скрыть все товары в группе $('.page-catalog .select-slave-item-form .slave-catalog tr .act-collapse-igroups').click(function(){ $('.page-catalog .select-slave-item-form .slave-catalog .item-row').hide(); }); // Схлопываем после загрузки $('.page-catalog .select-slave-item-form .slave-catalog tr .act-collapse-igroups').click(); } }); } // Открыть форму выбора типа товара $('.page-catalog .item-form .act-choose-type').click(function () { $('.page-catalog .item-form .bar-type').hide('fast'); $('.page-catalog .item-form .bar-type[data-item_type="CHOOSE"]').show('fast'); }); // Показать закупочную цену $('.page-catalog .item-form .act-show-bar-store').click(function(){ $('.page-catalog .item-form .bar-store-anons').hide(); $('.page-catalog .item-form .bar-store').show(); }); // Кнопка обновить $('.item-form .act-refresh-tab').click(function(){ // Обновляем вкладку КАТАЛОГ let v_item_id = $(this).parent().parent().find('.d-item_id').val(); let v_tab = $(this).parent().find('.tab.on').attr('data-tab'); showItemForm( v_item_id, v_tab ); }); // Сохранить форму добавления / редактирования товара $('.page-catalog .item-form .tabcard[data-tab="item-form"] .act-put-item').click(function(){ $('.loader').show(); $('.page-catalog .item-form .response').html('').hide(); // var z_cat_client = ($('.page-catalog .item-form .chk-cat_client').is(':checked'))? 1 : 0; // var z_cat_store = ($('.page-catalog .item-form .chk-cat_store').is(':checked'))? 1 : 0; // if ( (z_cat_store == 1) && ($('.page-catalog .item-form .i-price_store').val() == '') ) { // } $.ajax({ url: base_url + '/handler/catalog/put-item.php', type: "POST", data: { action: $('.page-catalog .item-form').attr('data-action'), item_id: $('.page-catalog .item-form .d-item_id').val(), item_name: $('.page-catalog .item-form .i-item_name').val(), measure: $('.page-catalog .item-form .i-measure').val(), article: $('.page-catalog .item-form .i-article').val(), igroup_id: $('.page-catalog .item-form .i-igroup_id option:selected').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); if (data.result < 0) { // Ошибка сохранения товара $('.page-catalog .item-form .response').html(data.message).attr('data-type', 'res-error').show(); } else { $('.page-catalog .item-form .d-need-refresh-list').val('1'); // Сообщение о сохранении $('.page-catalog .item-form .response').html(data.message).attr('data-type', 'res-ok').show(); // Открываем форму товара в режиме выбора типа при добавлении нового товара if ( $('.page-catalog .item-form').attr('data-action') == 'add' ){ showItemForm( data.item_id, 'item-type' ); } } } }); }); // Преобразовать тип товара $('.page-catalog .item-form div[data-set-item_type]').click(function(){ $('.loader').show(); var v_type = $(this).attr('data-set-item_type'); $.ajax({ url: base_url + '/handler/catalog/put-item.php', type: "POST", data: { action: 'type', item_id: $('.page-catalog .item-form .d-item_id').val(), type: v_type }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); $('.page-catalog .item-form .d-need-refresh-list').val('1'); $('.page-catalog .item-form .tab[data-tab="item-type"]').click(); //showCatalog('items'); } }); }); // Клик - Сохранить цены товара (для трех типов) $('.page-catalog .item-form .bar-type[data-item_type] .act-put-item-type').click(function(){ var v_type = $('.page-catalog .item-form .d-item_type').val( ); switch ( v_type ){ case 'SIMPLE': var z_price1 = parseFloat( $('.page-catalog .item-form .bar-type[data-item_type="SIMPLE"] .i-price1').val().replace(/ /gi, '') ); var z_price_store = parseFloat( $('.page-catalog .item-form .bar-type[data-item_type="SIMPLE"] .i-price_store').val().replace(/ /gi, '') ); var z_profit_persent = parseFloat( $('.page-catalog .item-form .bar-type[data-item_type="SIMPLE"] .i-profit_persent').val().replace(/ /gi, '') ); var z_price_work = null; var z_price_equ_amort = null; var z_fixed = $('.page-catalog .item-form .bar-type[data-item_type="SIMPLE"]').attr('data-fixed'); break; case 'COMPLEX': var z_price1 = parseFloat( $('.page-catalog .item-form .bar-type[data-item_type="COMPLEX"] .i-price1').val().replace(/ /gi, '') ); var z_price_store = parseFloat( $('.page-catalog .item-form .bar-type[data-item_type="COMPLEX"] .i-price_store').val().replace(/ /gi, '') ); var z_profit_persent = parseFloat( $('.page-catalog .item-form .bar-type[data-item_type="COMPLEX"] .i-profit_persent').val().replace(/ /gi, '') ); var z_price_work = parseFloat( $('.page-catalog .item-form .bar-type[data-item_type="COMPLEX"] .i-price_work').val().replace(/ /gi, '') ); var z_price_equ_amort = parseFloat( $('.page-catalog .item-form .bar-type[data-item_type="COMPLEX"] .i-price_equ_amort').val().replace(/ /gi, '') ); var z_fixed = $('.page-catalog .item-form .bar-type[data-item_type="COMPLEX"]').attr('data-fixed'); break; case 'COMPONENT': var z_price1 = null; var z_price_store = parseFloat( $('.page-catalog .item-form .bar-type[data-item_type="COMPONENT"] .i-price_store').val().replace(/ /gi, '') ); var z_profit_persent = null; var z_price_work = null; var z_price_equ_amort = null; var z_fixed = $('.page-catalog .item-form .bar-type[data-item_type="COMPONENT"]').attr('data-fixed'); break; } $('.loader').hide(); $.ajax({ url: base_url + '/handler/catalog/put-item.php', type: "POST", data: { action: 'price', item_id: $('.page-catalog .item-form .d-item_id').val(), type: $('.page-catalog .item-form .d-item_type').val(), price1: z_price1, profit_persent: z_profit_persent, price_store: z_price_store, price_work: z_price_work, price_equ_amort: z_price_equ_amort, fixed: z_fixed }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); if (data.result < 0) { // Ошибка сохранения товара $('.page-catalog .item-form .response').html(data.message).attr('data-type', 'res-error').show(); switch (data.result){ case -10: $('.page-catalog .item-form .i-price1').focus(); break; case -11: $('.page-catalog .item-form .i-price_store').focus(); break; case -12: $('.page-catalog .item-form .i-price_work').focus(); break; case -13: $('.page-catalog .item-form .i-price_equ_amort').focus(); break; } } else { $('.page-catalog .item-form .d-need-refresh-list').val('1'); $('.page-catalog .item-form .response').html(data.message).attr('data-type', 'res-ok').show(); } } }); }); // Сохранить форму редактирования комплектующего товара $('.page-catalog .slave-item-form .act-put-item').click(function(){ $('.loader').show(); $('.page-catalog .slave-item-form .response').html('').hide(); let z_master_item_id = $('.page-catalog .slave-item-form .d-master_item_id').val(); let z_slave_item_id = $('.page-catalog .slave-item-form .d-slave_item_id').val(); $.ajax({ url: base_url + '/handler/catalog/put-item.php', type: "POST", data: { action: 'slave_edit', master_item_id: z_master_item_id, slave_item_id: z_slave_item_id, price_store: $('.page-catalog .slave-item-form .i-price_store').val(), value: $('.page-catalog .slave-item-form .i-count').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); if (data.result < 0) { // Ошибка сохранения товара $('.page-catalog .item-form .response').html(data.message).attr('data-type', 'res-error').show(); } else { $('.page-catalog .item-form .d-need-refresh-list').val('1'); // Сообщение о сохранении $('.page-catalog .slave-item-form .response').html(data.message).attr('data-type', 'res-ok').show(); // Открываем форму товара в режиме выбора типа при добавлении нового товара showItemForm( z_master_item_id, 'item-type' ); } } }); }); // Перейти в режим выбора группы и подгруппы товара $('.page-catalog .item-form .act-show-select-igroup_id').click(function(){ $(this).hide(); $('.page-catalog .item-form .bar-select-igroup_id').show(); //$('.page-catalog .item-form .bar-display-igroup_id').hide(); }); $(this).find('.act-show-slave-item-form').click(); // Исключить комплектующий товар из составного товара $('.page-catalog .slave-item-form .act-remove-slave-item').click(function(){ $('.page-catalog .slave-item-form .response').html('').hide(); var v_master_item_id = $('.page-catalog .slave-item-form .d-master_item_id').val(); var v_slave_item_id = $('.page-catalog .slave-item-form .d-slave_item_id').val(); if ( confirm('Исключить комплектующий из составного товара?') ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/catalog/put-item.php', type: "POST", data: { action: 'slave_unbind', master_item_id: v_master_item_id, slave_item_id: v_slave_item_id }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); $('.page-catalog .item-form .d-need-refresh-list').val('1'); $('.page-catalog .slave-item-form .act-close-slave-item-form').click(); } }); } }); // Закрыть форму Товара $('.page-catalog .item-form .act-close-item-form').click(function(){ $(this).hide(); $('.page-catalog .item-form').hide(); $('.page-catalog .act-show-igroup-item-form').show(); // Обновить при необходимости список товаров if ( $('.page-catalog .item-form .d-need-refresh-list').val() == 1 ){ showCatalog('items'); } }); // Закрыть форму Комплектующего Товара $('.page-catalog .slave-item-form .act-close-slave-item-form').click(function(){ $(this).hide(); $('.page-catalog .slave-item-form').hide(); var z_master_item_id = $('.page-catalog .slave-item-form .d-master_item_id').val(); showItemForm( z_master_item_id, 'item-type' ); }); // Закрыть форму выбора Комплектующих Товаров $('.page-catalog .select-slave-item-form .act-close-select-slave-item-form').click(function(){ $(this).hide(); $('.page-catalog .select-slave-item-form').hide(); var z_master_item_id = $('.page-catalog .select-slave-item-form .d-master_item_id').val(); showItemForm( z_master_item_id, 'item-type' ); }); // Удалить товар $('.page-catalog .item-form .act-delete-item').click(function () { if ( confirm('Удалить товар / услугу без возможности восстановления?') ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/catalog/put-item.php', type: "POST", data: { action: 'delete', item_id: $('.page-catalog .item-form .d-item_id').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); $('.page-catalog .item-form .d-need-refresh-list').val('1'); $('.page-catalog .item-form .act-close-item-form').click(); } }); } }); // Поместить товар в архив / Восстановить из архива $('.page-catalog .item-form .act-archive-item').click(function () { if ( $(this).attr('data-archive') == '0' ){ var msg = "Отправить товар в архив?"; var z_archive = 1; } else { var msg = "Восстановать товар из архива?"; var z_archive = 0; } if ( confirm(msg) ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/catalog/put-item.php', type: "POST", data: { action: 'archive', archive: z_archive, item_id: $('.page-catalog .item-form .d-item_id').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); $('.page-catalog .item-form .d-need-refresh-list').val('1'); $('.page-catalog .item-form .act-close-item-form').click(); } }); } }); function showChooseItemForm(v_sender){ $('.choose-item-form').show(); $('.choose-item-form .act-close-choose-item-form').show(); $('.choose-item-form .d-sender').val( v_sender ); // Очищаем поиск по каталогу localStorage.removeItem('search_choose_item_keywords'); $('.choose-item-form .i-search-item').val('').attr('placeholder', 'Поиск товара в каталоге...'); // Загрузка списка товаров для выбора товара showChooseItemList(); //$('.choose-item-form').center(); } // Загрузка списка товаров для выбора товара function showChooseItemList() { var item_list = $('.choose-item-form .item-list'); var z_keywords = localStorage['search_choose_item_keywords']; // Чтение из хранилища var z_sender = $('.choose-item-form .d-sender').val(); item_list.html('Загрузка...'); $('.loader').show(); $.ajax({ url: base_url + '/handler/choose-item/get-item-list-for-choose-item.php', cache: false, type: "POST", data: { sender: z_sender, cat: 'STORE', keywords: z_keywords }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); item_list.html(data); // При загрузке схлопываем все товары до групп //$('.choose-item-form .item-row[data-igroup_id').hide(); // Отобразить фон при наведении мышкой на строку $('.choose-item-form .item-row').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Клик на строку $('.choose-item-form .item-row').click(function(){ $('.choose-item-form .item-row').removeClass('selected'); $(this).addClass('selected'); }); // Двойной клик на строку: Выбрать товар $('.choose-item-form .item-list tr[data-item_id]').dblclick(function(){ console.log('123123123'); // Подсветка выбранного товара $(this).click(); // Выбрать товар var z_item_id = $(this).attr('data-item_id'); chooseItem( z_item_id ); }); /* // Нажатие на кнопку: Скопировать товар в буфер обмена $('.choose-item-form .item-list .act-copy-item-to-clipboard').click(function(){ var row = $(this).parent().parent().parent(); var z_item_id = row.attr('data-item_id'); var z_item_label = row.find('.item_name').html(); copyItemToClipboard(z_item_id, z_item_label); }); */ // Клик по строке группы - Показать или скрыть товары в группе (схлопнуть / расхлопнуть) $('.choose-item-form tr .igroup').click(function(){ var igroup_id = $(this).parent().attr('data-igroup_id'); $('.choose-item-form .item-row[data-igroup_id="' + igroup_id + '"]').toggle(); }); // Клик по строке подгруппы - Показать или скрыть товары в подгруппе $('.choose-item-form tr .isubgroup').click(function(){ var isubgroup_id = $(this).parent().attr('data-isubgroup_id'); $('.choose-item-form .item-row[data-isubgroup_id="' + isubgroup_id + '"]').toggle(); }); } }); } // Показать все товары в группе (расхлопнуть всё) $('.choose-item-form .act-expand-igroups').click(function(){ $('.choose-item-form .item-row').show(); }); // Скрыть все товары в группе (схлопнуть всё) $('.choose-item-form .act-collapse-igroups').click(function(){ $('.choose-item-form .item-row').hide(); }); // Выбрать товар в строке, закрыть окно function chooseItem( v_item_id ) { switch( $('.choose-item-form .d-sender').val() ){ case 'SMETA_ITEMFLOW': // Добавить товар в списание по смете, см. smeta.js addItemToSmetaItemflow( v_item_id ); break; } // Закрыть окно Выбора товара $('.choose-item-form .act-close-choose-item-form').click(); } // Закрыть окно Выбора товара $('.choose-item-form .act-close-choose-item-form').click(function(){ $('.choose-item-form').hide(); $(this).hide(); }); // Получение фокуса строкой поиска $('.choose-item-form .i-search-item').focusin(function(){ $(this).css('color', '#222').val(''); }); // Потеря фокуса строкой поиска $('.choose-item-form .i-search-item').focusout(function(){ $(this).css('color', '#b0b0b0'); }); // Вызов Поиска в каталоге по Enter $(document).bind('keypress', function(e) { if( (e.keyCode == 13) & ( $('.choose-item-form .i-search-item').is(':focus') ) ){ $('.choose-item-form .act-search-item').trigger('click'); } }); // Выполнить поиск товара $('.choose-item-form .act-search-item').click(function(){ var z_keywords = $.trim( $('.choose-item-form .i-search-item').val() ); console.log(z_keywords); if ( z_keywords.length > 0 ) { localStorage['search_choose_item_keywords'] = z_keywords; } else { localStorage.removeItem('search_choose_item_keywords'); } showChooseItemList(); });// Клик на строку со сметой. Внутри - Отобразить подробности (дитэйл) данной сметы function clickSmetaRow( v_smeta_id ){ $('.page-task-form .act-duplicate-smeta').show(); localStorage['smeta_id'] = v_smeta_id; reloadSmetaDetail( v_smeta_id ); // Выделить в списке кликнутую смету $('.page-task-form .bar-smeta-list .smeta-row').removeClass('selected'); $('.page-task-form .bar-smeta-list .smeta-row[data-smeta_id=' + v_smeta_id + ']').addClass('selected'); } // Двойной клик на строку со сметой - открыть редактор сметы. Внутри - Отобразить подробности (дитэйл) данной сметы. function dblClickSmetaRow( v_smeta_id ){ // Клик одинарный на строку со сметой clickSmetaRow( v_smeta_id ); // Показать редактор смет $('.page-task-form .smeta-row[data-smeta_id="' + v_smeta_id + '"] .act-edit-smeta').click(); } // Карточка товара - таб Сметы: Показать список смет по заказу function reloadSmetaList ( v_task_id ){ $('.page-task-form .tabcard[data-tab="smeta"] .bar-smeta-list').html('Загрузка...'); $('.page-task-form .tabcard[data-tab="smeta"] .bar-smeta-detail').html(''); $('.loader').show(); $.ajax({ url: base_url + '/handler/smeta/get-smeta-list.php', cache: false, type: "POST", data: { task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-task-form .tabcard[data-tab="smeta"] .bar-smeta-list').html(data); $('.page-task-form .act-duplicate-smeta').hide(); // Клик по строке со сметой $('.page-task-form .bar-smeta-list .smeta-row').click(function() { let z_smeta_id = $(this).attr('data-smeta_id'); // console.log('Клик z_smeta_id=' + z_smeta_id); clickSmetaRow( z_smeta_id ); }); // Двойной клик по строке со сметой $('.page-task-form .bar-smeta-list .smeta-row').dblclick(function() { let z_smeta_id = $(this).attr('data-smeta_id'); // console.log('Двойной Клик z_smeta_id=' + z_smeta_id); dblClickSmetaRow( z_smeta_id ); }); // Если количество активных смет = 1, то сразу же кликаем по ней if ( $('.page-task-form .bar-smeta-list .smeta-row[data-archive="0"]').length == 1 ){ $('.page-task-form .bar-smeta-list .smeta-row[data-archive="0"]').first().click(); } // Добавить смету $('.page-task-form .act-add-smeta').click(function () { addSmeta( v_task_id ); }); // Дублировать смету $('.page-task-form .act-duplicate-smeta').click(function () { let z_smeta_id = $('.page-task-form .bar-smeta-list .smeta-row.selected').attr('data-smeta_id'); // console.log('duplicateSmeta z_smeta_id=' + z_smeta_id); duplicateSmeta( v_task_id, z_smeta_id ); }); // Показать Архивные сметы $('.page-task-form .act-show-archive-smeta').click(function(){ $(this).hide(); $('.page-task-form .bar-smeta-list div[data-archive="1"]').show(); }); // Сохранить новое значение Суммы по Договору для заказа (равное сумме по сметам клиентским активным) $('.page-task-form .tabcard[data-tab="smeta"] .act-put-amount_agreement').click(function(){ putAmountAgreementAsSmetaSum( v_task_id ); // Показать форму для отправки СМС клиенту, файл message.js showSendSMSForm(3); }); // Удалить (заблокировать) смету $('.page-task-form .act-delete-smeta').click(function () { let z_task_id = $('.page-task-form .d-task_id').val(); let z_smeta_id = $(this).parent().parent().parent().attr('data-smeta_id'); // console.log('deleteSmeta z_smeta_id=' + z_smeta_id); deleteSmeta( z_task_id, z_smeta_id ); }); // Архивировать / восстановить смету $('.page-task-form .act-archive-smeta').click(function () { let z_task_id = $('.page-task-form .d-task_id').val(); let z_smeta_id = $(this).attr('data-smeta_id'); // console.log('archiveSmeta z_smeta_id=' + z_smeta_id + ', z_task_id=' + z_task_id); archiveSmeta( z_task_id, z_smeta_id, $(this).attr('data-archive') ); }); // Показать форму списания товаров по смете $('.page-task-form .act-show-smeta-itemflow-form').click(function(){ let z_smeta_id = $(this).parent().parent().parent().attr('data-smeta_id'); // console.log('showSmetaItemflowForm z_smeta_id=' + z_smeta_id); showSmetaItemflowForm( z_smeta_id ); }); // Показать редактор смет $('.page-task-form .act-edit-smeta').click(function(){ let z_task_id = $('.page-task-form .d-task_id').val(); let z_smeta_row = $(this).parent().parent().parent(); let z_smeta_id = z_smeta_row.attr('data-smeta_id'); let z_smeta_name = z_smeta_row.find('.smeta_name').html(); let z_smeta_descr = z_smeta_row.find('.smeta_descr').html(); let z_smeta_create_info = z_smeta_row.find('.smeta_create_info').html(); let z_smeta_type_code = $('.bar-smeta-detail .smeta_type').attr('data-type_code'); let z_customer_name = $('.page-task-form .d-customer_name').html(); let z_object_address = $('.page-task-form .d-object_address').html(); let z_customer_phone = $('.page-task-form .act-show-phone-form').attr('data-phone'); // console.log('z_customer_phone = ' + z_customer_phone); showSmetaEditor( z_task_id, z_smeta_id, z_smeta_name, z_smeta_type_code, z_smeta_descr, z_smeta_create_info, z_customer_name, z_object_address, z_customer_phone ); }); // Сортировка строк сметы путём перетаскивания мышью 1 let fixHelper = function(e, ui) { ui.children().each(function() { $(this).width($(this).width()); }); return ui; }; // Сортировка строк сметы путём перетаскивания мышью 2 $('.page-task-form .bar-smeta-list .sortable-rows').sortable({ helper: fixHelper, revert: 100, opacity: 0.9, placeholder: 'sortable-empty-space', stop: function (event, ui) { // Построение переменной sorting_str - ноовый порядок ID смет в заказе через запятую, например: "143461,143463,143462" let sorting_str = ''; let rows_in_list = $('.page-task-form .bar-smeta-list .sortable-rows .smeta-row').length; $('.page-task-form .bar-smeta-list .sortable-rows .smeta-row').each(function (index, elem){ sorting_str = sorting_str + ',' + $(elem).attr('data-smeta_id'); }); sorting_str = sorting_str.substring(1); putSmetaPositionsInTask( v_task_id, sorting_str ); } }); } }); } // Вкладка СМЕТЫ в заказе: Сохранить новый порядок смет после перетаскивания function putSmetaPositionsInTask( v_task_id, v_smeta_order ){ // console.log('putSmetaPositionsInTask: v_task_id=' + v_task_id + ' v_smeta_order=' + v_smeta_order); if ( v_task_id == null || v_smeta_order == null ){ return; } $('.loader').show(); $.ajax({ url: base_url + '/handler/smeta/put-smeta.php', cache: false, type: "POST", data: { action: 'smeta-order', task_id: v_task_id, smeta_order: v_smeta_order }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); } }); } // Карточка товара - таб Сметы: Показать дитэйл по смете (при выборе сметы в списке смет) function reloadSmetaDetail ( v_smeta_id ){ $('.page-task-form .tabcard[data-tab="smeta"] .bar-smeta-detail').html('Загрузка...'); $('.loader').show(); var z_task_id = $('.page-task-form .d-task_id').val(); $.ajax({ url: base_url + '/handler/smeta/get-smeta-detail.php', cache: false, type: "POST", data: { task_id: z_task_id, smeta_id: v_smeta_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-task-form .bar-smeta-detail').html(data); adjustScreenSize(); $('.margin2salary-form .i-remark').val( 'Заказ ' + $('.page-task-form .i-agreement_num').val() + ' от ' + $('.page-task-form .i-agreement_date').val() + ' ' + $('.page-task-form .i-object_address').val() ); /* // Пролистать до SmetaDetail - НЕ РАБОТАЕТ let smeta_name = $('.page-task-form .tabcard[data-tab="smeta"] .smeta_name'); console.log('smeta_name.offset().top = ' + smeta_name.offset().top); smeta_name.offset().top = -200; smeta_name.animate({ scrollHeight: 200 }, { duration: 2000, // по умолчанию «400» easing: "linear" // по умолчанию «swing» }); return false; */ /* // Показать редактор смет $('.page-task-form .act-edit-smeta').click(function(){ var z_smeta_name = $('.bar-smeta-detail .smeta_name').html(); var z_smeta_type_code = $('.bar-smeta-detail .smeta_type').attr('data-type_code'); var z_smeta_descr = $('.bar-smeta-detail .smeta_descr').html(); var z_smeta_create_user = $('.bar-smeta-detail .smeta_create_user').html(); var z_smeta_cdate = $('.bar-smeta-detail .smeta_cdate').html(); var z_customer_name = $('.page-task-form .d-customer_name').html(); var z_object_address = $('.page-task-form .d-object_address').html(); var z_customer_phone = $('.page-task-form .act-show-phone-form').attr('data-phone'); // console.log('z_customer_phone = ' + z_customer_phone); showSmetaEditor( z_task_id, v_smeta_id, z_smeta_name, z_smeta_type_code, z_smeta_descr, z_smeta_create_user, z_smeta_cdate, z_customer_name, z_object_address, z_customer_phone ); }); // Удалить (заблокировать) смету $('.page-task-form .act-delete-smeta').click(function () { deleteSmeta( z_task_id, v_smeta_id ); }); // Архивировать / восстановить смету $('.page-task-form .act-archive-smeta').click(function () { archiveSmeta( z_task_id, v_smeta_id, $(this).attr('data-archive') ); }); */ // Кнопка - Показать форму начисления зарплаты по наценке $('.act-show-margin2salary-form').click(function(){ $('.margin2salary-form .i-date').val( moment().format('YYYY-MM-DD') ); $('.margin2salary-form .act-close-margin2salary-form').show(); //Обновляем список сотрудников в форме начисления зарплаты $('.margin2salary-form .margin2salary-actors').html( $('.margin2salary-actors-data').html() ); //Обновляем суммы $('.margin2salary-form .d-salary_sum_display').html( $('.d-salary_sum_display_data').val() ); $('.margin2salary-form .i-amount').val( $('.d-margin_to_salary_display_data').val() ); // Отрываем форму $('.margin2salary-form').show().center(); }); // Клик по строке в смете $('.page-task-form .bar-smeta-detail .item-row').click(function(){ $('.page-task-form .bar-smeta-detail .item-row').removeClass('selected'); $(this).addClass('selected'); }); // Отобразить фон при наведении мышкой на строку $('.page-task-form .bar-smeta-detail .item-row').hover( function(){ var z_item_id = $(this).attr('data-item_id'); $(this).addClass('over'); //$(this).parent().find('tr[data-item_id=' + z_item_id + ']').css('background', '#FFC'); }, function(){ var z_item_id = $(this).attr('data-item_id'); $(this).removeClass('over'); //$(this).parent().find('tr[data-item_id=' + z_item_id + ']').css('background', '#FFF'); } ); /* // Кнопка - Показать форму списания товаров по смете $('.act-show-smeta-itemflow-form').click(function(){ showSmetaItemflowForm( v_smeta_id ); }); */ // Кнопка - сделать Расход товара по смете $('.act-do-smeta-itemflow').click(function(){ var z_store_id = $('.smeta-itemflow-form .i-store_id').val(); doSmetaItemflow( v_smeta_id, z_store_id ); }); // Открыть окно выбора дополнительного товара для списания $('.act-show-choose-item-form').click(function(){ showChooseItemForm('SMETA_ITEMFLOW'); }); // Выбор склада в селекторе $('.smeta-itemflow-form .i-store_id').change(function(){ reloadItemListForSmetaItemflow(); }); } }); } // Карточка товара - таб Сметы: Добавить смету function addSmeta(v_task_id){ $('.loader').show(); $.ajax({ url: base_url + '/handler/smeta/put-smeta.php', type: "POST", data: { action: 'add', task_id: v_task_id }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); //console.log(data); localStorage['smeta_id'] = data.smeta_id; showTaskForm(v_task_id, 'smeta'); } }); } // Карточка товара - таб Сметы: Дублировать существующую смету function duplicateSmeta(v_task_id, v_smeta_id){ $('.loader').show(); $.ajax({ url: base_url + '/handler/smeta/put-smeta.php', type: "POST", data: { action: 'duplicate', task_id: v_task_id, smeta_id: v_smeta_id }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); //console.log(data); localStorage['smeta_id'] = data.smeta_id; showTaskForm(v_task_id, 'smeta'); } }); } // Карточка товара - таб Сметы: Архивировать и восстановить смету function archiveSmeta ( v_task_id, v_smeta_id, v_archive){ if (v_archive == 1){ if ( !confirm('Отправить смету в архив? Действие обратимо, смету из архива всегда можно восстановить.') ) return; var z_archive = 1; } else { if ( !confirm('Восстановить смету из архива?') ) return; var z_archive = 0; } $('.loader').show(); $.ajax({ url: base_url + '/handler/smeta/put-smeta.php', type: "POST", data: { task_id : v_task_id, action: 'archive', archive: z_archive, smeta_id: v_smeta_id }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); $('.page-task-form .tabcard[data-tab="smeta"] .bar-smeta-detail').html(''); reloadSmetaList( $('.page-task-form .d-task_id').val() ); } }); } // Карточка товара - таб Сметы: Удалить смету из списка function deleteSmeta ( v_task_id, v_smeta_id ){ if ( confirm('Удалить смету без возможности восстановления?') ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/smeta/put-smeta.php', type: "POST", data: { task_id : v_task_id, action: 'delete', smeta_id: v_smeta_id }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); showTaskHeader( v_task_id ); reloadSmetaList( $('.page-task-form .d-task_id').val() ); } }); } } // Карточка товара - таб Сметы: Сохранить новое значение Суммы по Договору для заказа (равное сумме по сметам клиентским активным) function putAmountAgreementAsSmetaSum( v_task_id ){ var v_amount_agreement = $('.act-put-amount_agreement').attr('data-amount_agreement'); if ( confirm('Изменить сумму по Договору?') ) { $('.loader').show(); //console.log($('.act-put-amount_agreement').attr('data-amount_agreement')); $.ajax({ url: base_url + '/handler/task/put-task.php', cache: false, type: "POST", data: { 'action': 'amount_agreement', 'task_id': v_task_id, 'amount_agreement': v_amount_agreement }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); reloadSmetaList( v_task_id ); } }); } } // Закрыть форму расщепления всех составных товаров в смете // ФОРМА НЕ ИСПОЛЬЗУЕТСЯ $('.smeta-editor .act-close-slave2master_item-form').click(function(){ $('.smeta-editor .slave2master_item-form').hide(); $(this).hide(); });// Активируем выбранный пункт меню $('.smeta-editor .tab').click(function(){ let v_tab = $(this).attr('data-tab'); showSmetaEditorTab(v_tab, false); }); // Активация таба и его карточки для редактора сметы function showSmetaEditorTab(v_tab, v_refresh){ // $('.smeta-editor .response').html(''); // Активируем выбранный пункт меню $('.smeta-editor .tab').removeClass('on'); $('.smeta-editor .tab[data-tab="' + v_tab + '"]').addClass('on'); // Активируем карточку выбранного таба $('.smeta-editor .tabcard').hide(); $('.smeta-editor .tabcard[data-tab="' + v_tab + '"]').show(); // console.log('showSmetaEditorTab v_tab=' + v_tab); $('.smeta-editor .bar-swap-divs').css('direction', localStorage['smeta_editor_swap_direction']); switch (v_tab){ // Смета case 'smeta-summary': /* if (v_smeta_descr == ''){ $('.smeta-editor .smeta_descr-elements').hide(); $('.smeta-editor .act-show-smeta_descr').show(); } else { $('.smeta-editor .smeta_descr-elements').show(); $('.smeta-editor .act-show-smeta_descr').hide(); } */ $('.smeta-editor .smeta_descr-elements').show(); $('.smeta-editor .act-show-smeta_descr').hide(); break; // Позиции в смете case 'item2smeta-list': let v_smeta_id = $('.smeta-editor .d-smeta_id').val(); // Показать позиции сметы if (v_refresh) { showItem2SmetaList( v_smeta_id ); } break; // Каталог case 'catalog': // Очищаем поиск по каталогу localStorage.removeItem('search_catalog_keywords'); $('.smeta-editor .i-search-catalog').val(''); // Показать каталог v_smeta_type_code = 'CLIENT'; // Неккорректный ФИКС! if (v_refresh) { showSmetaCatalog( v_smeta_type_code, 'NONE' ); } break; case 'item2smeta-list-catalog': let v_smeta_id2 = $('.smeta-editor .d-smeta_id').val(); // Показать позиции сметы if (v_refresh) { showItem2SmetaList( v_smeta_id2 ); } // Очищаем поиск по каталогу localStorage.removeItem('search_catalog_keywords'); $('.smeta-editor .i-search-catalog').val(''); // Показать каталог v_smeta_type_code = 'CLIENT'; // Неккорректный ФИКС! if (v_refresh) { showSmetaCatalog( v_smeta_type_code, 'NONE' ); } break; } $('.smeta-editor .bar-smeta-editor').center(); // console.log('task v_tab = ' + v_tab ); } // Редактор сметы: Открыть редактор сметы и загрузить в него данные function showSmetaEditor( v_task_id, v_smeta_id, v_smeta_name, v_smeta_type_code, v_smeta_descr, v_smeta_create_user, v_smeta_cdate, v_customer_name, v_object_address, v_customer_phone ){ $('.loader').show(); $.ajax({ url: base_url + '/handler/smeta/is-smeta-editable.php', cache: false, type: "POST", data: { smeta_id: v_smeta_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.smeta-editor .d-task_id').val( v_task_id ); $('.smeta-editor .d-smeta_id').val( v_smeta_id ); $('.smeta-editor .i-smeta_name').val( v_smeta_name ); $('.smeta-editor .bar-smeta-editor h1').html( 'Редактор сметы: ' + v_smeta_name ); v_smeta_type_code = 'CLIENT'; // Неккорректный ФИКС! $('.smeta-editor .i-smeta_type').val( v_smeta_type_code ); $('.smeta-editor .i-smeta_descr').val( v_smeta_descr ); $('.smeta-editor .d-smeta_create_user').html( v_smeta_create_user ); $('.smeta-editor .d-smeta_cdate').html( v_smeta_cdate ); $('.smeta-editor .d-customer_name').html( v_customer_name ); $('.smeta-editor .d-object_address').html( v_object_address ); $('.smeta-editor .d-customer_phone').html( v_customer_phone ); // Активируем первую вкладку summary $('.smeta-editor .tab[data-subtab="smeta-summary"]').click(); // Закрываем окно редактора позиции $('.smeta-editor .act-close-item2smeta-form').click(); // Поисковая строка $('.smeta-editor .i-search-catalog').val(''); localStorage.removeItem('search_catalog_keywords'); // Показать окно Редактор сметы $('.smeta-editor .act-close-smeta-editor').show(); $('.smeta-editor').show(); // Активируем вкладки с прогрузкой данных из базы - true showSmetaEditorTab('catalog', true); showSmetaEditorTab('item2smeta-list', true); // Активируем вкладку в зависимости от ширины окна let width = $(document).width(); if ( width < 900 ){ // console.log('<900'); showSmetaEditorTab('item2smeta-list', false); } else { // console.log('>900'); showSmetaEditorTab('item2smeta-list-catalog', false); } // Доступная высота окна const z_win_height = window.innerHeight - 20; $('.smeta-editor .bar-smeta-editor').css('height', z_win_height + 'px').center(); } }); } // Редактор сметы: Закрыть редактор сметы $('.smeta-editor .act-close-smeta-editor').click(function(){ $('.smeta-editor').hide(); $(this).hide(); // Перегружаем список, т.к. статистика могла измениться reloadSmetaList( $('.page-task-form .d-task_id').val() ); }); // Поменять панели местами $('.smeta-editor .act-swap-item2smeta-list-catalog').click(function(){ localStorage['smeta_editor_swap_direction'] = ( localStorage['smeta_editor_swap_direction'] == 'ltr' )? 'rtl' : 'ltr'; $('.smeta-editor .bar-swap-divs').css('direction', localStorage['smeta_editor_swap_direction']); }); // Поменять вид редактора: поля <-> таблица $('.smeta-editor .act-switch-smeta_editor_view').click(function(){ localStorage['smeta_editor_view'] = ( localStorage['smeta_editor_view'] == 'TABLE' )? 'FIELDS' : 'TABLE'; let z_smeta_type_code = 'CLIENT'; // Некорректный ФИКС! $('.smeta-editor .i-search-catalog').val(''); // Активируем вкладки с прогрузкой данных из базы - true showSmetaEditorTab('catalog', true); showSmetaEditorTab('item2smeta-list', true); // Активируем вкладку в зависимости от ширины окна let width = $(document).width(); if ( width < 900 ){ // console.log('<900'); showSmetaEditorTab('item2smeta-list', false); } else { // console.log('>900'); showSmetaEditorTab('item2smeta-list-catalog', false); } }); // Кнопка обновить $('.smeta-editor .act-refresh-tab').click(function(){ // Очищаем поиск по каталогу localStorage.removeItem('search_catalog_keywords'); // Обновляем вкладку КАТАЛОГ let v_tab = $(this).parent().find('.tab.on').attr('data-tab'); showSmetaEditorTab(v_tab, true); }); // Редактор сметы: Показать каталог товаров для выбора. Переделать на форму CHOOSE_ITEM function showSmetaCatalog( v_smeta_type_code, v_search_mode ){ $('.smeta-editor .catalog').html('
Загрузка...
'); let z_keywords; switch (v_search_mode){ case 'SEARCH': z_keywords = localStorage['search_catalog_keywords']; // Чтение из хранилища break; case 'NONE': z_keywords = ''; break; } // console.log('v_smeta_type_code=' + v_smeta_type_code); // console.log('z_keywords=' + z_keywords); $('.loader').show(); $.ajax({ url: base_url + '/handler/smeta/get-smeta-catalog.php', cache: false, type: "POST", data: { smeta_type: v_smeta_type_code, search_catalog_keywords: z_keywords, smeta_editor_view: localStorage['smeta_editor_view'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); // для отладки // data = '
'; $('.smeta-editor .catalog').html(data); $('.smeta-editor .i-search-catalog').val( localStorage['search_catalog_keywords'] ).focus(); // Поисковая строка и расхлопывание каталога if ( z_keywords.length > 0 ){ // Показать все товары в группах // $('.smeta-editor .act-expand-groups').click(); -- почему-то не срабатывает $('.smeta-editor .item-row').show(); } // Отобразить фон и цены при наведении мышкой на строку $('.smeta-editor .item-row').hover( function(){ $(this).css('background', '#FFC'); $(this).css('background', '#5cb85c').css('color', '#fff'); $(this).css('cursor', 'pointer'); }, function(){ $(this).css('background', '#fff').css('color', 'inherit'); $(this).css('cursor', 'inherit'); } ); // Отобразить фон для цены при наведении мышкой на строку $('.smeta-editor .item-row .price[data-active="1"]').hover( function(){ // $(this).css('background', '#090').css('color', '#fff').css('cursor', 'pointer'); $(this).css('cursor', 'pointer'); }, function(){ // $(this).css('background', 'inherit').css('color', 'inherit').css('cursor', 'inherit'); $(this).css('cursor', 'inherit'); } ); // Редактор сметы: Получение фокуса строкой поиска $('.smeta-editor .i-search-catalog').focusin(function(){ $(this).css('color', 'black'); }); // Редактор сметы: Потеря фокуса строкой поиска $('.smeta-editor .i-search-catalog').focusout(function(){ $(this).css('color', '#b0b0b0'); }); // Редактор сметы: Вызов Поиска в каталоге по Enter $(document).bind('keypress', function(e) { if ( $('.smeta-editor .i-search-catalog').is(':focus') ) { if( e.keyCode == 13 ){ event.stopPropagation(); $('.smeta-editor .act-search-catalog').click(); } } }); // Редактор сметы: Выполнить поиск товара $('.smeta-editor .act-search-catalog').click(function(){ // Активная вкладка let z_active_tab = $('.smeta-editor .tabs .tab.on').attr('data-tab'); // Ищем поисковую фразы на активной вкладке let z_keywords = $.trim( $('.smeta-editor .tabcard[data-tab="' + z_active_tab + '"] .i-search-catalog').val() ); if ( z_keywords == 'Поиск товара в каталоге' ) { z_keywords = ''; } // console.log('z_keywords=' + z_keywords); // Проверяем, имеется ли поисковая фраза на любой из вкладок if ( z_keywords.length > 0 ) { let v_smeta_type_code = 'CLIENT'; localStorage['search_catalog_keywords'] = z_keywords; showSmetaCatalog( v_smeta_type_code, 'SEARCH' ); } else { localStorage.removeItem('search_catalog_keywords'); alert('Для поиска в каталоге введите поисковую фразу!'); $('.smeta-editor .i-search-catalog').focus(); event.stopPropagation(); } }); // Показать каталог (для поиска заново) $('.smeta-editor .act-show-smeta-catalog').click(function(){ let v_smeta_type_code = 'CLIENT'; // Некорректный ФИКС! $('.smeta-editor .i-search-catalog').val( localStorage['search_catalog_keywords'] ).focus(); showSmetaCatalog( v_smeta_type_code, 'NONE' ); }); // Перейти в Каталог для редактирования $('.smeta-editor .act-show-total-catalog').click(function(){ $('.smeta-editor').hide(); $('.bar-main .bar-menu .menu-item[data-page="catalog"]').click(); }); // Клик по строке группы - Показать или скрыть товары в группе $('.smeta-editor .igroup-row').click(function(){ var group_id = $(this).attr('data-group_id'); // console.log('group_id=' + group_id); $('.smeta-editor .item-row[data-group_id="' + group_id + '"]').toggle(); }); // Клик по строке подгруппы - Показать или скрыть товары в группе $('.smeta-editor .isubgroup-row').click(function(){ var subgroup_id = $(this).attr('data-subgroup_id'); // console.log('subgroup_id=' + subgroup_id); if ( !(subgroup_id == '') ) { $('.smeta-editor .item-row[data-subgroup_id="' + subgroup_id + '"]').toggle(); } }); // Показать все товары в группе $('.smeta-editor .act-expand-groups').click(function(){ $('.smeta-editor .item-row').show(); }); // Скрыть все товары в группе $('.smeta-editor .act-collapse-groups').click(function(){ $('.smeta-editor .item-row').hide(); }); // Добавить новую позицию из каталога $('.smeta-editor .item-row').click(function(){ // $('.smeta-editor .price').click(function(){ // Если несколько цен в каталоге, то кликаем на ценовую колонку let item_id = $(this).attr('data-item_id'); let item_article = $(this).attr('data-item_article'); let item_name = $(this).find('.item_name').attr('data-item_name'); let measure = $(this).find('.measure').html(); let price = $(this).find('.price').attr('data-price'); showItem2SmetaForm( 'add', null, item_id, item_article, item_name, null, measure, price, '1', null, null ); }); } }); } // Редактор сметы: Показать поле комментария $('.smeta-editor .act-show-smeta_descr').click(function(){ $(this).hide(); $('.smeta-editor .smeta_descr-elements').show().focus(); }); // Редактор сметы: В смете цветом выделяем все позиции, подлежащие расщеплению $('.smeta-editor .act-split-master2slave_item-form').hover( function(){ $('.smeta-editor tr[data-master_item="1"]').css('background-color', '#ffc'); }, function(){ $('.smeta-editor tr[data-master_item="1"]').css('background-color', '#fff'); } ); /* // Редактор сметы: Расщепить составные товары в смете $('.smeta-editor .act-split-master2slave_item-form').click(function(){ if (confirm('Расщепить составные товары на комплектующие?\rВнимание! Обратное действие невозможно!')) { var z_smeta_id = $('.smeta-editor .d-smeta_id').val(); $('.loader').show(); $.ajax({ url: base_url + '/handler/split-master2slave-item.php', cache: false, type: "POST", data: { task_id: $('.smeta-editor .d-task_id').val(), smeta_id: z_smeta_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); showItem2SmetaList( z_smeta_id ); } }); } }); */ // Редактор сметы: Показать товары по смете function showItem2SmetaList( v_smeta_id ){ $('.smeta-editor .smeta-response').html('').hide(); $('.smeta-editor .item2smeta-list').html('
Загрузка...
'); $('.loader').show(); $.ajax({ url: base_url + '/handler/smeta/get-item2smeta-list.php', cache: false, type: "POST", data: { task_id: $('.page-task-form .d-task_id').val(), smeta_id: v_smeta_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); // console.log(data); $('.smeta-editor .item2smeta-list').html(data); $('.smeta-editor .amount_display').html( number_format( $('.smeta-editor .d-amount').val() , '2', '.', ' ') ); var margin_sum = $('.smeta-editor .d-margin').val(); adjustScreenSize(); $('.smeta-editor .act-show-item-catalog').click(function(){ showSmetaEditorTab('catalog', false); }); // Сортировка строк сметы путём перетаскивания мышью var fixHelper = function(e, ui) { ui.children().each(function() { $(this).width($(this).width()); }); return ui; }; $('.item2smeta-list .sortable-rows').sortable({ helper: fixHelper, revert: 100, opacity: 0.9, placeholder: 'sortable-empty-space', stop: function (event, ui) { let sorting_str = ''; /* let order = $('.item2smeta-list .sortable-rows').sortable("toArray", {attribute: 'data-item2smeta_id'}); for (let sorting = 0; sorting < order.length; sorting++) { sorting_str = sorting_str + ',' + order[sorting]; } sorting_str = sorting_str.substring(1); 13.03.2024 Метод toArray перестал работать, сортировка перестала работать, пользователи негодуют... Пришлось делать закат солнца вручную, см. ниже */ let rows_in_list = $('.item2smeta-list .sortable-rows .item2smeta-row').length / 2; $('.item2smeta-list .sortable-rows .item2smeta-row').each(function (index, elem){ if (index + 1 > rows_in_list){ sorting_str = sorting_str + ',' + $(elem).attr('data-item_id'); } }); sorting_str = sorting_str.substring(1); putItemPositionsInSmeta( v_smeta_id, sorting_str ); } }); // console.log('margin_sum=' + margin_sum); if (isNaN(margin_sum) || margin_sum == ''){ $('.smeta-editor .bar-margin').hide(); } else { $('.smeta-editor .bar-margin').show(); } $('.smeta-editor .margin_display').html( number_format( margin_sum, '2', '.', ' ') ); // Видимость кнопки Расщепить let has_master_items = $('.smeta-editor .d-has_master_items').val(); // console.log(has_master_items); if (has_master_items == '1'){ $('.smeta-editor .act-split-master2slave_item-form').show(); } else { $('.smeta-editor .act-split-master2slave_item-form').hide(); } // Отобразить фон и кнопки действий при наведении мышкой на строку $('.smeta-editor .item2smeta-row').hover( function(){ let z_item_id = $(this).attr('data-item_id'); $(this).find('div i.act-ico').css('visibility', 'visible'); $(this).css('background', '#FFC'); $(this).parent().find('div[data-item_id=' + z_item_id + ']').css('background', '#FFC'); }, function(){ let z_item_id = $(this).attr('data-item_id'); $(this).find('div i.act-ico').css('visibility', 'hidden'); $(this).css('background', '#FFF'); $(this).parent().find('div[data-item_id=' + z_item_id + ']').css('background', '#FFF'); } ); // Редактирование уже добавленной позиции $('.smeta-editor .item2smeta-list .act-show-item2smeta-form').click(function(){ // console.log('act-show-item2smeta-form click'); let row = $(this).parent().parent(); let item2smeta_id = row.attr('data-item2smeta_id'); let item_id = row.attr('data-item_id'); let item_article = row.attr('data-item_article'); let item_name = row.find('.item_name').html(); let note = row.find('.note').html(); let measure = row.find('.measure').html(); let price = row.find('.price').attr('data-price'); let value = row.find('.value').html(); let margin = row.find('.margin').attr('data-margin'); let hidden = row.attr('data-hidden'); // console.log('Редактирование уже добавленной позиции'); ОК showItem2SmetaForm( 'edit', item2smeta_id, item_id, item_article, item_name, note, measure, price, value, margin, hidden ); }); $('.smeta-editor .item2smeta-row').dblclick(function(){ $(this).find('.act-show-item2smeta-form').click(); }); // Удаление позиции из сметы $('.smeta-editor .act-delete-item2smeta').click(function(){ deleteItem2Smeta( $(this).parent().parent().attr('data-item2smeta_id') ); }); // Позицию сместить в списке вверх $('.smeta-editor .act-move-item-up').click(function(){ let item2smeta_row_1 = $(this).parent().parent(); let item2smeta_row_2 = $(this).parent().parent().prev('.item2smeta-row'); // console.log('1:data-item2smeta_id=' + item2smeta_row_1.attr('data-item2smeta_id')); // console.log('2:data-item2smeta_id=' + item2smeta_row_2.attr('data-item2smeta_id')); swapItem2SmetaPosition( v_smeta_id, item2smeta_row_1.attr('data-item2smeta_id'), item2smeta_row_2.attr('data-item2smeta_id') ); }); // Позицию сместить в списке вниз $('.smeta-editor .act-move-item-down').click(function(){ let item2smeta_row_1 = $(this).parent().parent(); let item2smeta_row_2 = $(this).parent().parent().next('.item2smeta-row'); swapItem2SmetaPosition( v_smeta_id, item2smeta_row_1.attr('data-item2smeta_id'), item2smeta_row_2.attr('data-item2smeta_id') ); }); } }); } // Редактор сметы: Позицию сместить в списке вверх или вниз function swapItem2SmetaPosition( v_smeta_id, v_item2smeta_id_1, v_item2smeta_id_2 ){ if ( v_item2smeta_id_1 == null || v_item2smeta_id_2 == null ){ return; } $('.loader').show(); $.ajax({ url: base_url + '/handler/smeta/swap-item2smeta-position.php', cache: false, type: "POST", data: { smeta_id: v_smeta_id, item2smeta_id_1: v_item2smeta_id_1, item2smeta_id_2: v_item2smeta_id_2 }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); showItem2SmetaList( data.smeta_id ); } }); } // Редактор сметы: Сохранить новый порядок позиций в смете после перетаскивания function putItemPositionsInSmeta( v_smeta_id, v_items_order ){ // console.log('putItemPositionsInSmeta: v_smeta_id=' + v_smeta_id + ' v_items_order=' + v_items_order); // if ( v_smeta_id == null || v_items_order == null ){ return; } $('.loader').show(); $.ajax({ url: base_url + '/handler/smeta/put-smeta.php', cache: false, type: "POST", data: { action: 'items-order', smeta_id: v_smeta_id, items_order: v_items_order }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); } }); } // Редактор сметы: Удалить позицию в смете function deleteItem2Smeta( v_item2smeta_id ){ if (!confirm('Удалить позицию в смете?')) return; $('.loader').show(); $.ajax({ url: base_url + '/handler/smeta/put-item2smeta.php', cache: false, type: "POST", data: { action: 'delete', item2smeta_id: v_item2smeta_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); // console.log(data); showItem2SmetaList(data.smeta_id); } }); } // Сохранить атрибуты сметы и закрыть Редактор сметы $('.act-save-smeta').click(function(){ $('.smeta-editor .smeta-response').html('').hide(); $('.loader').show(); var z_task_id = $('.page-task-form .d-task_id').val(); var z_smeta_id = $('.smeta-editor .d-smeta_id').val(); $.ajax({ url: base_url + '/handler/smeta/put-smeta.php', type: "POST", data: { task_id : z_task_id, action: 'edit', smeta_id: z_smeta_id, name: $('.smeta-editor .i-smeta_name').val(), type: $('.smeta-editor .i-smeta_type').val(), descr: $('.smeta-editor .i-smeta_descr').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); // console.log(data); switch (data.result){ case 0: $('.smeta-editor .bar-smeta-editor h1').html( 'Редактор сметы: ' + $('.smeta-editor .i-smeta_name').val() ); $('.smeta-editor .smeta-response').html( data.message ).attr('data-type', 'res-ok').show(); break; case -1: $('.smeta-editor .smeta-response').html( data.message ).attr('data-type', 'res-error').show(); break; } } }); });// Форма добавления / редактирования товара в смету: Открыть function showItem2SmetaForm( v_action, v_item2smeta_id, v_item_id, v_item_article, v_item_name, v_note, v_measure, v_price, v_value, v_margin, v_hidden ){ console.log('v_price=' + v_price); switch (v_action){ case 'add': $('.act-put-item2smeta').html('Добавить'); break; case 'edit': $('.act-put-item2smeta').html('Сохранить'); break; } $('.item2smeta-form .d-action').val( v_action ); $('.item2smeta-form .d-item2smeta_id').val( v_item2smeta_id ); $('.item2smeta-form .d-item_id').val( v_item_id ); $('.item2smeta-form .d-item_article').html( v_item_article ); $('.item2smeta-form .d-item_name').html( v_item_name ); $('.item2smeta-form .i-measure').val( v_measure ); $('.item2smeta-form .i-price').attr('data-price', v_price).val( number_format(v_price, '2', '.', ' ') ); $('.item2smeta-form .i-value').val( v_value ); $('.item2smeta-form .i-note').val( v_note ); $('.item2smeta-form .chk-hidden').attr('checked', false); if (v_hidden == '1'){ $('.item2smeta-form .chk-hidden').click(); } if ( v_margin != '' ){ $('.item2smeta-form .i-margin').attr('data-margin', v_margin).val( number_format(v_margin, '2', '.', ' ') ); } else { $('.item2smeta-form .i-margin').attr('data-margin', '').val( null ); } updateItem2SmetaForm('margin'); $('.act-close-item2smeta-form').show(); $('.item2smeta-form').show().center(); } // Форма добавления / редактирования товара в смету: Закрыть $('.item2smeta-form .act-close-item2smeta-form').click(function(){ // Для малых экранов Редактор сметы переключаем на вкладку Позиции if (localStorage['screen_size'] == 'screen-small') { showSmetaEditorTab('item2smeta-list', true); } $('.item2smeta-form').hide(); $(this).hide(); }); // Открыть комментарий на редактирование $('.item2smeta-form .act-show-note').click(function(){ $('.item2smeta-form .act-show-note').hide(); $('.item2smeta-form .note-elements').show().focus(); }); // Форма добавления / редактирования товара в смету: Обновить function updateItem2SmetaForm(v_base_param){ // Цена var price = parseFloat( $('.item2smeta-form .i-price').val().replace(/ /gi, '') ); $('.item2smeta-form .i-price').attr('data-price', price); // Стоимость var amount = parseFloat( $('.item2smeta-form .i-price').attr('data-price') ) * parseFloat( $('.item2smeta-form .i-value').val() ); // Смета $('.item2smeta-form .i-smeta_id').load( base_url + '/handler/smeta/options-smeta-list.php?task_id=' + $('.smeta-editor .d-task_id').val() + '&smeta_id=' + $('.smeta-editor .d-smeta_id').val() ); if ( !isNaN(amount) ) { $('.item2smeta-form .i-amount').val( number_format(amount, '2', '.', ' ') ); } else { $('.item2smeta-form .i-amount').val( null ); } // Комментарий var note = $('.item2smeta-form .i-note').val(); if (note == ''){ $('.item2smeta-form .note-elements').hide(); $('.item2smeta-form .act-show-note').show(); } else { $('.item2smeta-form .note-elements').show(); $('.item2smeta-form .act-show-note').hide(); } //console.log('amount = ' + amount); //console.log('margin=' + $('.item2smeta-form .i-margin').val()); //console.log('margin_persent=' + $('.item2smeta-form .i-margin_persent').val()); // Наценка if (!isNaN(amount) && v_base_param == 'margin' && $('.item2smeta-form .i-margin').val() != '') { //console.log($('.item2smeta-form .i-margin').val()); var margin = parseFloat( $('.item2smeta-form .i-margin').val().replace(/ /gi, '') ); $('.item2smeta-form .i-margin').attr('data-margin', margin); var margin_persent = parseFloat( $('.item2smeta-form .i-margin').attr('data-margin') ) * 100 / amount; if ( !isNaN(margin_persent) ) { $('.item2smeta-form .i-margin_persent').val( number_format(margin_persent, '1', '.', ' ') ); } else { $('.item2smeta-form .i-margin_persent').val( null ) } } else if (!isNaN(amount) && v_base_param == 'margin_persent' && $('.item2smeta-form .i-margin_persent').val() != '') { //console.log($('.item2smeta-form .i-margin_persent').val()); var margin_persent = parseFloat( $('.item2smeta-form .i-margin_persent').val().replace(/ /gi, '') ); $('.item2smeta-form .i-margin_persent').attr('data-margin_persent', margin_persent); var margin = parseFloat( $('.item2smeta-form .i-margin_persent').attr('data-margin_persent') ) * amount / 100; if ( !isNaN(margin) ) { $('.item2smeta-form .i-margin').val( number_format(margin, '2', '.', ' ') ); } else { $('.item2smeta-form .i-margin').val( null ) } } else { $('.item2smeta-form .i-margin').val( null ).attr('data-margin', ''); $('.item2smeta-form .i-margin_persent').val( null ).attr('data-margin_persent', ''); } } // Форма добавления / редактирования товара в смету: Расчет изменений по абс. значению наценки $('.item2smeta-form .i-margin') .keyup(function(){ updateItem2SmetaForm('margin'); }) .change(function(){ updateItem2SmetaForm('margin'); }); // Форма добавления / редактирования товара в смету: Расчет изменений наценке в процентах $('.item2smeta-form .i-price, .item2smeta-form .i-value, .item2smeta-form .i-margin_persent') .keyup(function(){ updateItem2SmetaForm('margin_persent'); }) .change(function(){ updateItem2SmetaForm('margin_persent'); }); // Форма добавления / редактирования товара в смету: Добавить товар, закрыть форму $('.act-put-item2smeta').click(function(){ putItem2Smeta(); $('.act-close-item2smeta-form').click(); }); // Форма добавления / редактирования товара в смету: Добавить товар function putItem2Smeta(){ $('.loader').show(); var z_action = $('.item2smeta-form .d-action').val(); var z_item2smeta_id = $('.item2smeta-form .d-item2smeta_id').val(); var z_asis_smeta_id = $('.bar-smeta-editor .d-smeta_id').val() var z_tobe_smeta_id = $('.item2smeta-form .i-smeta_id option:selected').attr('value'); // console.log('z_asis_smeta_id=' + z_asis_smeta_id); // console.log('z_tobe_smeta_id=' + z_tobe_smeta_id); var z_price = $('.item2smeta-form .i-price').val().replace(' ', ''); var z_margin = $('.item2smeta-form .i-margin').val().replace(' ', ''); var z_hidden = ($('.item2smeta-form .chk-hidden').is(':checked'))? 1 : 0; $.ajax({ url: base_url + '/handler/smeta/put-item2smeta.php', cache: false, type: "POST", data: { action: z_action, item2smeta_id: z_item2smeta_id, smeta_id: z_tobe_smeta_id, item_id: $('.item2smeta-form .d-item_id').val(), price: z_price, value: $('.item2smeta-form .i-value').val(), note: $('.item2smeta-form .i-note').val(), margin: z_margin, hidden : z_hidden }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); showItem2SmetaList( z_asis_smeta_id ); } }); };// Много кода лежит в smeta.js - вынести сюда по возможности // Начислить заработную плату function putMarginToSalary ( v_task_id, v_smeta_id, v_actor_id, v_date, v_amount, v_remark ){ // Проверка корректности даты if (v_date != '') { if ( !moment( v_date, "YYYY-MM-DD").isValid() ) { $('.margin2salary-form .i-date').focus(); alert('Недопустимое значение даты!'); return; } } else { alert('Введите дату!'); return; } // console.log(v_amount); if ( confirm('Начислить сотруднику заработную плату?') ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/put-salary.php', type: "POST", data: { action: 'add', task_id : v_task_id, smeta_id: v_smeta_id, actor_id: v_actor_id, amount: v_amount, date: v_date, remark: v_remark }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); reloadSmetaDetail( v_smeta_id ); $('.margin2salary-form .act-close-margin2salary-form').click(); } }); } } // Кнопка - Закрыть форму начисления зарплаты по наценке $('.margin2salary-form .act-close-margin2salary-form').click(function(){ $('.margin2salary-form .act-close-margin2salary-form').hide(); $('.margin2salary-form').hide(); }); // Кнопка - Начислить заработную плату по наценкам $('.margin2salary-form .act-margin-to-salary').click(function(){ //$(this).hide(); //console.log($('.margin2salary-form .i-amount').val()); //console.log( $('.margin2salary-form .i-amount').val().replace(/ /gi, '')); var z_amount = parseFloat( $('.margin2salary-form .i-amount').val().replace(/ /gi, '') ); //console.log(v_amount); var z_task_id = $('.page-task-form .d-task_id').val(); var z_smeta_id = $('.page-task-form .bar-smeta-detail .d-smeta_id').val(); putMarginToSalary( z_task_id, z_smeta_id, $('.margin2salary-form .i-actor_id').val(), $('.margin2salary-form .i-date').val(), z_amount, $('.margin2salary-form .i-remark').val() ); });// Показать форму списания товаров по смете function showSmetaItemflowForm( v_smeta_id ){ // Вход параметры var z_store_id = $('.smeta-itemflow-form .i-store_id').val(); console.log(v_smeta_id); console.log(z_store_id); $('.smeta-itemflow-form .d-smeta_id').val( v_smeta_id ); $('.smeta-itemflow-form .d-add_item_ids').val(''); $('.smeta-itemflow-form').show(); $('.smeta-itemflow-form .act-close-smeta-itemflow-form').show(); // Показать кнопку Закрыть $('.smeta-itemflow-form .response').html('').hide(); reloadItemListForSmetaItemflow(); } // Кнопка - Закрыть форму списания товара по смете $('.smeta-itemflow-form .act-close-smeta-itemflow-form').click(function(){ $('.smeta-itemflow-form').hide(); $(this).hide(); }); // Загрузка списка товаров для списания по смете function reloadItemListForSmetaItemflow() { // Вход параметры var z_smeta_id = $('.smeta-itemflow-form .d-smeta_id').val(); var z_store_id = $('.smeta-itemflow-form .i-store_id').val(); var z_add_item_ids = $('.smeta-itemflow-form .d-add_item_ids').val(); // Список элемент var z_item_list = $('.smeta-itemflow-form .item-list-for-smeta-itemflow'); $('.loader').show(); z_item_list.html('Загрузка списка товаров...'); $.ajax({ url: base_url + '/handler/smeta-itemflow/get-item-list-for-smeta-itemflow.php', cache: false, type: "POST", data: { smeta_id: z_smeta_id, store_id: z_store_id, add_item_ids: z_add_item_ids }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); z_item_list.html(data); // Изненить количество товара в списке для списывания z_item_list.find('.itemflow-value') .keyup(function(){ updateItemflowParam(this); }) .change(function(){ updateItemflowParam(this); }) ; } }); } // В строке по товару на списание - корректировка количества и отображения function updateItemflowParam( elem ){ var after_val = parseFloat( $(elem).parent().parent().find('.avalible_store_value').html().replace(/ /gi, '') ) - parseFloat( $(elem).val() ); $(elem).parent().parent().find('.after_itemflow_store_value').html( after_val ).removeClass('color-red').removeClass('color-green').addClass('color-violet'); } // Добавить товар в списание по смете function addItemToSmetaItemflow( v_item_id ){ // Добавить ID нового товара в строку хранения ADD - спереди через запятую var elem = $('.smeta-itemflow-form .d-add_item_ids'); var z_add_item_ids = elem.val(); z_add_item_ids = v_item_id + ( (z_add_item_ids == '')? '' : ',' + z_add_item_ids ); elem.val( z_add_item_ids ); // Перерисовать список товаров по смете для списания reloadItemListForSmetaItemflow(); } // Списать со склада по смете складской товар function doSmetaItemflow( v_smeta_id, v_store_id ){ // Проверка if ( !confirm('Списать товар со склада?') ) { return; } $('.smeta-itemflow-form .smeta-itemflow-response').html('').hide(); // Формируем корректирующую строку (ID товара - новое кол-во на списание) var z_correct_string = ''; $('.smeta-itemflow-form .item-list-for-smeta-itemflow .itemflow-value').each(function () { var val = ( $(this).val() == '' )? '0' : $(this).val(); z_correct_string = z_correct_string + ',{"item_id":' + $(this).attr('data-item_id') + ', "value":' + val + '}'; }); // Удаляем лидирующую запятую z_correct_string = '{"items":[' + z_correct_string.substring(1) + ']}'; //console.log( 'z_correct_string = ' + z_correct_string ); $('.loader').show(); $.ajax({ url: base_url + '/handler/smeta-itemflow/do-smeta-itemflow.php', cache: false, type: "POST", data: { store_id: v_store_id, smeta_id: v_smeta_id, correct_string: z_correct_string }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); $('.smeta-itemflow-form .response').html( data.message ).attr('data-type', ((data.result < 0)? 'res-error' : 'res-ok')).show(); reloadItemListForSmetaItemflow(); } }); }// Переходим в разде Настройки (Склады) $('.act-show-settings-page-store-tab').click(function(){ showPage('settings'); $('.page-settings .tabs-settings .tab[data-tab="store"]').click(); }); // Настройки: Список складов function showStoreList(){ $('.page-settings .store-list').html('Загрузка списка складов...'); $('.loader').show(); $.ajax({ url: base_url + '/handler/store/get-store-list.php', cache: false, type: "POST", data: {}, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-settings .store-list').html(data); // Отобразить кнопки действий при наведении на строку $('.page-settings .store-list tr[data-store_id]').hover( function(){ $(this).find('td .act-ico').css('visibility', 'visible'); $(this).addClass('over'); }, function(){ $(this).find('td .act-ico').css('visibility', 'hidden'); $(this).removeClass('over'); } ); // Нажатие на кнопку: Показать форму редактирования $('.page-settings .store-list .act-edit-store').click(function(){ var row = $(this).parent().parent(); showStoreForm( row.attr('data-store_id') ); }); // Двойной клик на строку: то же что и кликнуть на кнопке "Редактировать склад" $('.page-settings .store-list tr[data-store_id]').dblclick(function(){ $(this).find('.act-edit-store').click(); }); } }); } // Показать объект в Яндексе $('.store-form .act-show-yandex-object-point').click(function(evt){ var z_store_address = $('.store-form .i-store_address').val(); if ( z_store_address == '' ) { alert('Для отображения на карте укажите полный Адрес склада!'); return; } showYandexPoint(evt, z_store_address); }); // Расщепить координаты, введенные одной строкой "Широта, Долгота" в поле "Широта" $('.store-form .act-split-coord').click(function() { var coord_str = $('.store-form .i-store_lat').val(); var arr = coord_str.split(','); var z_store_lat = arr[0].trim(); var z_store_lng = arr[1].trim(); $('.store-form .i-store_lat').val(z_store_lat); $('.store-form .i-store_lng').val(z_store_lng); }); // Настройки: Показать форму Склада для добавления нового $('.page-settings .act-add-store').click(function(){ showStoreForm( null, 0 ); $(this).hide(); }); // Настройки: Показать форму редактирования Склада function showStoreForm( v_store_id ){ $('.store-form input').val(''); $('.store-form textarea').html(''); $('.store-form .response').html('').hide(); if ( v_store_id != null ) { // Редактирование Склада $('.store-form h1').html('Редактирование склада'); $('.store-form').attr('data-action', 'edit' ); $('.store-form .bar-item_count').show(); $('.loader').show(); $.ajax({ url: base_url + '/handler/store/get-store.php', cache: false, type: "POST", data: { store_id: v_store_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); //console.log(json); data = $.parseJSON(json); // console.log(data); $('.store-form .act-delete-store').show(); $('.store-form .d-store_id').val( data.store.store_id ); $('.store-form .i-store_name').val( data.store.store_name ); $('.store-form .i-store_address').val( data.store.store_address ); $('.store-form .i-store_lat').val( data.store.store_lat ); $('.store-form .i-store_lng').val( data.store.store_lng ); $('.store-form .i-item_count').val( data.store.item_count ); } }); } else { // Добавление Склада $('.store-form h1').html('Добавление склада'); $('.store-form').attr('data-action', 'add' ); $('.store-form .d-store_id').val(''); $('.store-form .i-store_name').val(''); $('.store-form .i-store_address').val(''); $('.store-form .i-store_lat').val(''); $('.store-form .i-store_lng').val(''); $('.store-form .bar-item_count').hide(); $('.store-form .act-delete-store').hide(); } $('.store-form').show().center(); $('.act-show-store-form').hide(); $('.act-close-store-form').show(); $('.store-form .i-store_name').focus(); } // Настройки: Закрыть форму Склада $('.act-close-store-form').click(function(){ $('.store-form').hide(); $('.act-add-store').show(); $('.act-close-store-form').hide(); }); // Настройки: Сохранить форму добавления / редактирования Склада $('.store-form .act-put-store').click(function(){ $('.loader').show(); $('.store-form .response').html('').hide(); $.ajax({ url: base_url + '/handler/store/put-store.php', type: "POST", data: { action: $('.store-form').attr('data-action'), store_id: $('.store-form .d-store_id').val(), store_name: $('.store-form .i-store_name').val(), store_address: $('.store-form .i-store_address').val(), store_lat: $('.store-form .i-store_lat').val(), store_lng: $('.store-form .i-store_lng').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); // console.log(json); if (data.result < 0) { // Обработка ошибок при сохранении склада $('.store-form .response').html(data.message).attr('data-type', 'res-error').show(); switch (data.result){ case -1: // Введите название склада $('.store-form .i-store_name').css('background-color', 'red').animate({ backgroundColor: "white" }, 900 ); break; case -2: // Введите адрес склада $('.store-form .i-store_address').css('background-color', 'red').animate({ backgroundColor: "white" }, 900 ); break; } } else { // Успешное сохранение склада $('.store-form .act-close-store-form').click(); showStoreList(); } } }); }); // Настройки: Удалить Склад $('.store-form .act-delete-store').click(function(){ if ( $('.i-item_count').val() > 0 ){ alert('Чтобы удалить склад, сперва удалите все товары с него!'); } else { $('.store-form .response').html('').hide(); if ( confirm( 'Удалить склад ' + $('.store-form .i-store_name').val() + '?') ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/store/put-store.php', type: "POST", data: { action: 'delete', store_id: $('.store-form .d-store_id').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); // console.log(json); if (data.result < 0) { $('.store-form .response').html(data.message).attr('data-type', 'res-error').show(); } else { $('.store-form .act-close-store-form').click(); showStoreList(); } } }); } } }); // Склады: Активация таба (Товары на складах и Приходы и расходы) function showStoreTab(v_tab){ // Активируем выбранный пункт меню $('.page-store .bar-store-menu.bar-header .tab').removeClass('on'); $('.page-store .bar-store-menu.bar-header .tab[data-tab="' + v_tab + '"]').addClass('on'); // Активируем карточку выбранного таба $('.page-store .tabcard').hide(); $('.page-store .tabcard[data-tab="' + v_tab + '"]').show(); showStorePage(v_tab, true); } // Склады: Нажатие на таб (Товары на складах и Приходы и расходы) $('.page-store .bar-store-menu.tabs .tab').click(function(){ // Активируем карточку выбранного таба showStoreTab( $(this).attr('data-tab') ); }); // Склады: Обновить текущую вкладку "Товары на складе" или "Приход или расход" $('.page-store .act-reload-store').click(function(){ showStorePage( $('.page-store .tabs .tab.on').attr('data-tab'), true ); }); // Склады: Показать закладку в разделе function showStorePage( v_tab, v_close_forms ){ if (v_close_forms) { // Закрыть Itemflow форму редактирования, если открыта $('.page-store .act-close-itemflow-form').click(); } switch (v_tab){ // Товары на складах case 'items-on-store': if ( $('.page-store .bar-store-list').length > 0 ){ showItemsOnStore(); } break; // Приход-Расход case 'itemflow-list': // Настройка отображения фильтра месяц-день $('.page-store .act-view-mode-month, .page-store .act-view-mode-day').removeClass('active'); switch (localStorage['view_mode_date']){ case 'VIEW_DAY': $('.page-store .act-view-mode-day').addClass('active'); break; case 'VIEW_MONTH': $('.page-store .act-view-mode-month').addClass('active'); break; } // Приходы-Расходы if ( $('.page-store .items-on-store').length > 0 ){ showItemflowList(); } break; } } // Нажатие на таб выбора склада $('.bar-store-list .tab[data-store_id]').click(function(){ localStorage['store_id'] = $(this).attr('data-store_id'); $('.bar-store-list .tab[data-store_id]').removeClass('on'); $(this).addClass('on'); var v_tab = $('.page-store .bar-store-menu .tab.on').attr('data-tab'); console.log('v_tab = ' + v_tab); showStorePage( v_tab, true ); }); // Фильтр по дням $('.page-store .act-view-mode-day').click(function(){ localStorage['view_mode_date'] = 'VIEW_DAY'; showStorePage( $('.page-store .tabs .tab.on').attr('data-tab'), true ); }); // Фильтр по месяцам $('.page-store .act-view-mode-month').click(function(){ localStorage['view_mode_date'] = 'VIEW_MONTH'; showStorePage( $('.page-store .tabs .tab.on').attr('data-tab'), true ); }); // Список товаров на складах function showItemsOnStore(){ var v_store_id = localStorage['store_id']; $('.loader').show(); $.ajax({ url: base_url + '/handler/store/get-items-on-store.php', cache: false, type: "POST", data: { store_id: v_store_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); //console.log(data); $('.page-store .items-on-store').html(data); // Отобразить при наведении на строку $('.page-store .items-on-store tr[data-item_id]').hover( function(){ var z_item_id = $(this).attr('data-item_id'); $(this).addClass('over'); $(this).find('.act-show-actions').css('visibility', 'visible'); }, function(){ var z_item_id = $(this).attr('data-item_id'); $(this).removeClass('over'); $(this).find('.act-show-actions').css('visibility', 'hidden'); } ); // Нажатие на кнопку: Показать Информацию по товару на складах $('.page-store .items-on-store .act-show-item-on-store-info').click(function(){ var row = $(this).parent().parent().parent(); showItemOnStoreInfo( row.attr('data-item_id')); }); // Клик на строку $('.page-store .items-on-store tr[data-item_id]').click(function(){ // Подсветка выбранного товара $('.page-store .items-on-store tr').removeClass('selected'); $(this).addClass('selected'); }); // Двойной клик на строку: Показать Историю товара на складах $('.page-store .items-on-store tr[data-item_id]').dblclick(function(){ $(this).find('.act-show-item-on-store-info').click(); }); } }); } // Отобразить Информацию по товару function showItemOnStoreInfo( v_item_id ){ $('.page-store .act-close-item-on-store-info').show(); $('.page-store .item-on-store-info').show(); $('.page-store .item-on-store-info h1').html('...'); $('.page-store .item-on-store-info .d-article').html(''); $('.page-store .item-on-store-info .item-on-stores-stat').html(''); $('.page-store .item-on-store-info .item-on-stores-history').html(''); $('.loader').show(); $.ajax({ url: base_url + '/handler/store/get-item-on-stores-info.php', type: "POST", data: { item_id: v_item_id }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); if (data.result == 0) { $('.page-store .item-on-store-info h1').html(data.item_name); $('.page-store .item-on-store-info .d-article').html(data.article); $('.page-store .item-on-store-info .item-on-stores-stat').html(data.item_on_store_stat); $('.page-store .item-on-store-info .item-on-stores-history').html(data.item_on_store_history); } } }); } // Закрыть Информацию по товару $('.page-store .act-close-item-on-store-info').click(function(){ $(this).hide(); $('.page-store .item-on-store-info').hide(); }); // Список приходов-расходов на складе function showItemflowList(){ var v_store_id = localStorage['store_id']; $('.loader').show(); $.ajax({ url: base_url + '/handler/itemflow/get-itemflow-list.php', cache: false, type: "POST", data: { store_id: v_store_id, view_mode_date: localStorage['view_mode_date'], itemflow_page_num: localStorage['itemflow_page_num'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); //console.log(data); $('.page-store .itemflow-list').html(data); // Выбор страницы в пагинаторе $('.page-store .paginator i').click(function(){ localStorage['itemflow_page_num'] = $(this).html(); showStorePage( 'itemflow-list', true ); }); // Отобразить при наведении на строку $('.page-store .itemflow-list tr[data-item_id]').hover( function(){ $(this).find('.actions .act-ico').css('visibility', 'visible'); $(this).addClass('over'); }, function(){ $(this).find('.actions .act-ico').css('visibility', 'hidden'); $(this).removeClass('over'); } ); // Удалить приход-расход и уменьшить на это же количество товара на складе, куда ранее был выполнен приход-расход $('.page-store .itemflow-list .act-delete-itemflow').click(function(){ // Запрос на действие if ( !confirm('Внимание! Приход-расход товара будет удалён. На складе, на который ранее был выполнен приход или расход, также будет изменено количество данного товара. Продожить?') ){ return; } // Удаляем и корректируем остаток на складе $('.loader').show(); $.ajax({ url: base_url + '/handler/store/delete-itemflow.php', cache: false, type: "POST", data: { itemflow_id: $(this).parent().parent().attr('data-itemflow_id') }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); showItemflowList(); } }); }); } }); }// Подгрузка из библиотеки в HTML страницы текста подсказки function showHelperTopic(elem){ var z_topic_id = elem.attr('data-topic_id'); var z_body = $('.helper-data div.topic[data-topic_id="' + z_topic_id +'"] div.body' ).html(); elem.find('.body').html( z_body ); var z_hidden = $('.helper-data div.topic[data-topic_id="' + z_topic_id +'"]' ).attr('data-hidden'); if (z_hidden == "0") { elem.show(); elem.hide(); // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! } else { elem.hide(); } } // Скрыть подсказку $('.act-hide-helper').click(function(){ $(this).parent().hide(); }); // Скрыть подсказку и больше не показывать $('.act-hide-helper-const').click(function(){ $(this).parent().hide(); // Запись в базу данных и в HTML-блок со всеми топиками HelperData $('.loader').show(); var z_topic_id = $(this).parent().attr('data-topic_id'); $.ajax({ url: base_url + '/handler/set-helper.php', cache: false, type: "POST", data: { topic: z_topic_id, hidden: 1 }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); } }); }); // Клик на кнопке - Показать подсказку $('.act-show-helper').click(function(){ var topic_id = $(this).attr('data-topic_id'); $('.helper[data-topic_id="' + topic_id + '"]').show(); });// Обновить данные $('.page-sms .act-reload-sms').click(function(){ reloadSMSPage(); }); function reloadSMSPage(){ // Настройка отображения фильтра месяц-день $('.page-sms .act-view-mode-month, .page-sms .act-view-mode-day').removeClass('active').css('color', '#5590cc'); switch (localStorage['view_mode_date']){ case 'VIEW_DAY': $('.page-sms .act-view-mode-day').addClass('active').css('color', 'red'); break; case 'VIEW_MONTH': $('.page-sms .act-view-mode-month').addClass('active').css('color', 'red'); break; } getPutSMSUseOnLogin(null); showSMSStat(); showSMSList(); } function getSMSPilotBalance(){ api_key = 'X3AV0959D7L4ZR3Y85MCJD2DA2XKAPJT81P82909YO97B3873909UW9YB7597042'; $.ajax({ url: 'https://smspilot.ru/api.php', cache: false, type: "GET", data: { balance: 'rur', apikey: api_key }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ console.log(data); $('.page-monitor .smspilot-balance').html(data); } }); } function getPutSMSUseOnLogin( v_sms_use_on_login ){ // $('.page-sms .sms-use-on-login').html(''); $.ajax({ url: base_url + '/handler/sms/get-put-sms-use-on-login.php', cache: false, type: "POST", data: { sms_use_on_login: v_sms_use_on_login }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.page-sms .sms-use-on-login').html(data); // Клик на кнопку - остановить или возобновить использование СМС при авторизации $('.page-sms .act-sms-use-on-login').click(function(){ getPutSMSUseOnLogin( $(this).attr('data-command') ); }); } }); } function showSMSStat(){ $('.page-sms .bar-body').css('opacity', '0.5'); $('.loader').show(); $.ajax({ url: base_url + '/handler/sms/get-sms-stat.php', cache: false, type: "POST", data: { view_mode_date: localStorage['view_mode_date'], }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.page-sms .sms-stat').html(data); $('.page-sms .bar-body').css('opacity', '1.0'); $('.loader').hide(); } }); } function showSMSList(){ // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-sms .bar-body').scrollTop(); localStorage['work_sms_scroll_top'] = z_scrollTop; $('.loader').show(); $('.page-sms').css('opacity', '0.5'); $.ajax({ url: base_url + '/handler/sms/get-sms-list.php', cache: false, type: "POST", data: { view_mode_date: localStorage['view_mode_date'], sms_page_num: localStorage['sms_page_num'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-sms').css('opacity', '1.0'); $('.page-sms .sms-list').html(data); adjustSMSListHeight(); // Восстанавливаем прокрутку списка $('.page-sms .bar-body').scrollTop( localStorage['work_sms_scroll_top'] ); // Выбор страницы в пагинаторе $('.page-sms .paginator i').click(function(){ localStorage['sms_page_num'] = $(this).html(); showSMSList(); }); // Нажатие на кнопку: Показать карточку заказа - вкладка Сообщения $('.page-sms .sms-list .act-show-task-message').click(function(){ showTaskForm( $(this).parent().parent().attr('data-task_id'), 'message'); }); // Нажатие на кнопку: Повторная отправка СМС $('.page-sms .sms-list .act-repeat-send-sms').click(function(){ var z_sms_id = $(this).parent().parent().parent().attr('data-sms_id'); // console.log('z_sms_id=' + z_sms_id); repeatSendSMS( z_sms_id ); }); } }); } // Настройка высоты страницы function adjustSMSListHeight(){ var div_header_height = $('.page-sms .bar-header').css('height'); var summa = ' - ' + div_header_height; $('.page-sms .bar-body').css( 'height', 'calc(100%' + summa + ')' ); } // Повторная отправка СМС function repeatSendSMS( v_sms_id ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/sms/repeat-send-sms.php', cache: false, type: "POST", data: { sms_id: v_sms_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); showSMSList(); } }); } // Фильтр по дням $('.page-sms .act-view-mode-day').click(function(){ localStorage['view_mode_date'] = 'VIEW_DAY'; reloadSMSPage(); }); // Фильтр по месяцам $('.page-sms .act-view-mode-month').click(function(){ localStorage['view_mode_date'] = 'VIEW_MONTH'; reloadSMSPage(); }); // Отправить СМС $('.message-form .bar-sms .act-send-sms').click(function(){ $('.message-form .bar-sms .response').html('').hide(); var v_task_id = $('.page-task-form .d-task_id').val(); $('.loader').show(); $.ajax({ url: base_url + '/handler/sms/put-sms.php', cache: false, type: "POST", data: { task_id: v_task_id, message: $('.message-form .bar-sms .bar-sms-sender .message').html(), sms_type: $('.message-form .bar-sms .d-sms_type').val(), author_type: $('.message-form .bar-sms .d-author_type').val(), author_id: $('.message-form .bar-sms .d-author_id').val(), receiver_type: $('.message-form .bar-sms .d-receiver_type').val(), receiver_id: $('.message-form .bar-sms .d-receiver_id').val() // Пока что только для заказчиков }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); // console.log(data); if (data.result < 0) { $('.message-form .bar-sms .response').html(data.message).attr('data-type', 'res-error').show(); } else { $('.message-form .act-close-message-form').click(); showTaskMessageList( v_task_id ); $('.act-reload-sms').click(); } } }); }); // Звуковые настройки var sound_data_path = '/data/sound/'; var sound_file_ext = '.mp3'; // Периодический опрос сервера var sound_period = 10000; // Период = 10 сек setTimeout(function run() { // Проверка и воспроизведенеие звуков checkAndPlaySound(); setTimeout(run, sound_period); }, sound_period); // Восроизвести звук при наличии его в очереди function checkAndPlaySound (){ // Есть ли авторизация пользователя? if (!($('.bar-user').attr('data-user_id') > 0)) return; // Зачитываем данные $.ajax({ url: base_url + '/handler/sound/get-sound-list.php', cache: false, type: "POST", dataType: 'json', data: {}, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ // Массив звуков на воспроизведение // console.log(data); if ( (data.sound != null) && ( data.sound.length > 0 ) && ( localStorage['sound'] == 1 ) ){ // Последовательное воспроизведение звуков var current = 0; var player = document.getElementById('player'); player.src = sound_data_path + data.sound[current] + sound_file_ext; player.onended = function() { current++; if ( current >= data.sound.length ) { return; } player.src = sound_data_path + data.sound[current] + sound_file_ext; player.play(); } } } }); } /* Для теста - звук при клике на названии партнера $('.bar-partner_name').click(function(){ checkAndPlaySound(); }); */// Клик Добавить комментарий $('.page-task-form .act-show-comment-form').click(function() { $('.page-task-form .act-show-comment-form').hide(); $('.page-task-form .comment-form').show(); $('.page-task-form .comment-form .i-comment').val('').focus(); }); $('.page-task-form .act-close-comment-form').click(function() { $('.page-task-form .act-show-comment-form').show(); $('.page-task-form .comment-form').hide(); }); // Показать список комментариев по задаче function showCommentList(v_task_id, v_cleanup) { if (v_cleanup) { $('.page-task-form .comment-list').html('Загрузка...'); } $('.loader').show(); console.log('.page-task-form .comment-list 1'); $.ajax({ url: base_url + '/handler/message/get-comment-list.php', type: "POST", data: { task_id: v_task_id }, cache: false, statusCode: { 401: function() { document.location.href = base_url;} }, success: function(data){ $('.loader').hide(); $('.page-task-form .comment-list').html(data); console.log('.page-task-form .comment-list 2'); // Отобразить кнопки действий при наведении на строку $('.message-list tr[data-message_id]').hover( function(){ console.log('visibility-visible'); $(this).find('.act-ico').css('visibility', 'visible'); $(this).addClass('over'); }, function(){ console.log('visibility-hidden'); $(this).find('.act-ico').css('visibility', 'hidden'); $(this).removeClass('over'); } ); } }); } // Сохранить комментарий $('.page-task-form .act-post-comment').click(function(){ var v_task_id = $('.page-task-form .d-task_id').val(); $('.loader').show(); $.ajax({ url: base_url + '/handler/message/put-comment.php', cache: false, type: "POST", data: { 'action': 'add', 'task_id': v_task_id, 'body': $('.page-task-form .comment-form .i-comment').val() }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); // console.log(data); if (data.result < 0) { $('.page-task-form .comment-form .comment-response').html(data.message).attr('data-type', 'res-error').show(); switch (data.result){ case "-1": $('.page-task-form .comment-form .i-comment').focus(); break; } } else { showCommentList(v_task_id, false); $('.page-task-form .comment-form .act-close-comment-form').click(); } } }); });// Обновить данные раздела Сообщения $('.page-message .act-reload-message-page').click(function(){ reloadMessagePage(); }); // Фильтр по дням $('.page-message .act-view-mode-day').click(function(){ localStorage['view_mode_date'] = 'VIEW_DAY'; reloadMessagePage(); }); // Фильтр по месяцам $('.page-message .act-view-mode-month').click(function(){ localStorage['view_mode_date'] = 'VIEW_MONTH'; reloadMessagePage(); }); function reloadMessagePage() { // Настройка отображения фильтра месяц-день $('.page-message .act-view-mode-month, .page-message .act-view-mode-day').removeClass('active'); switch (localStorage['view_mode_date']){ case 'VIEW_DAY': $('.page-message .act-view-mode-day').addClass('active'); break; case 'VIEW_MONTH': $('.page-message .act-view-mode-month').addClass('active'); break; } showTotalMessageList(); adjustMessageListHeight(); } // Настройка высоты страницы function adjustMessageListHeight(){ var div_header_height = $('.page-message .bar-header').css('height'); var summa = ' - ' + div_header_height; $('.page-message .bar-body').css( 'height', 'calc(100%' + summa + ')' ); } // Показать плеер function showAudioPlayer( act_show_player ){ act_show_player.hide(); var player = act_show_player.parent().find('audio'); player.show(); //console.log( player.attr('src') ); } function showTotalMessageList(){ $('.loader').show(); $('.page-message .message-list').html('Загрузка...'); $('.page-message').css('opacity', '0.5'); $.ajax({ url: base_url + '/handler/message/get-message-list.php', cache: false, type: "POST", data: { action: 'total', view_mode_date: localStorage['view_mode_date'], message_page_num: localStorage['message_page_num'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.page-message').css('opacity', '1'); $('.loader').hide(); $('.page-message .message-list').html(data); // Восстанавливаем прокрутку списка $('.page-message .bar-body').scrollTop( localStorage['work_message_scroll_top'] ); // Отобразить кнопки действий при наведении на строку $('.page-message .message-list tr[data-message_id]').hover( function(){ $(this).find('.act-ico').css('visibility', 'visible'); $(this).addClass('over'); // $(this).css('background', '#FFC'); }, function(){ $(this).find('.act-ico').css('visibility', 'hidden'); $(this).removeClass('over'); // $(this).css('background', '#fff'); } ); // Выбор страницы в пагинаторе $('.page-message .paginator i').click(function(){ localStorage['message_page_num'] = $(this).html(); showTotalMessageList(); }); // Нажатие на кнопку: Показать карточку заказа - вкладка Сообщения $('.page-message .message-list .act-show-task-message').click(function(){ // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-message .bar-body').scrollTop(); localStorage['work_message_scroll_top'] = z_scrollTop; // Показать карточку заказа - вкладка Сообщения showTaskForm( $(this).parent().parent().parent().attr('data-task_id'), 'message'); }); // Нажатие на кнопку: Удалить комментарий - вкладка Сообщения $('.page-message .message-list .act-delete-message').click(function(){ // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-message .bar-body').scrollTop(); localStorage['work_message_scroll_top'] = z_scrollTop; // Удалить коммменатрий - вкладка Сообщения var v_task_id = $(this).parent().parent().parent().attr('data-task_id'); var v_message_id = $(this).parent().parent().parent().attr('data-message_id'); deleteComment( v_task_id, v_message_id, 'TotalMessageList'); }); // Двойной клик по строке: Показать карточку заказа - вкладка Сообщения $('.page-message .message-list tr[data-task_id]').dblclick(function(){ // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-message .bar-body').scrollTop(); localStorage['work_message_scroll_top'] = z_scrollTop; // Показать карточку заказа - вкладка Сообщения if ( $(this).attr('data-task_id') != "" ) { showTaskForm( $(this).attr('data-task_id'), 'message'); } }); // При клике Показать плеер $('.act-show-audio').click(function(){ showAudioPlayer($(this)); }); } }); } function showTaskMessageList( v_task_id ){ $('.page-task-form .tabcard[data-tab="message"] .message-list').html('Загрузка...'); $('.loader').show(); $.ajax({ url: base_url + '/handler/message/get-message-list.php', cache: false, type: "POST", data: { action: 'task', task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-task-form .tabcard[data-tab="message"] .message-list').html(data); // Отобразить кнопки действий при наведении на строку $('.page-task-form .tabcard[data-tab="message"] tr[data-message_id]').hover( function(){ $(this).find('.act-ico').css('visibility', 'visible'); $(this).addClass('over'); }, function(){ $(this).find('.act-ico').css('visibility', 'hidden'); $(this).removeClass('over'); } ); // Нажатие на кнопку: Удалить комментарий - список всех Сообщений $('.page-task-form .message-list .act-delete-message').click(function(){ // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-message .bar-body').scrollTop(); localStorage['work_message_scroll_top'] = z_scrollTop; // Удалить коммменатрий - вкладка Сообщения var v_message_id = $(this).parent().parent().parent().attr('data-message_id'); deleteComment( v_task_id, v_message_id, 'TaskMessageList'); }); // При клике Показать плеер $('.act-show-audio').click(function(){ showAudioPlayer($(this)); }); } }); } // Удалить комментарий, суть - заблокировать function deleteComment( v_task_id, v_comment_id, v_sender ){ if (!confirm('Удалить комментарий?')) { return; } $('.loader').show(); $.ajax({ url: base_url + '/handler/message/put-comment.php', cache: false, type: "POST", datatype: 'json', data: { 'action': 'delete', 'comment_id': v_comment_id, }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); switch (v_sender){ case 'TotalMessageList': showTotalMessageList() break; case 'TaskMessageList': showTaskMessageList( v_task_id ) break; } } }); } // Закрыть форму сообщения $('.message-form .act-close-message-form').click(function(){ $('.message-form').hide(); }); // Показать форму нового сообщения (комментарий / смс) $('.page-task-form .act-show-message-form').click(function(){ $('.message-form').show(); switch ( $(this).attr('data-source') ){ case 'COMMENT': $('.message-form .bar-sms').hide(); $('.message-form .bar-comment').show(); $('.message-form').show().center(); $('.message-form .bar-comment .response').html('').hide(); $('.message-form .chk-to-customer').attr('checked', false); $('.message-form .bar-comment .i-comment').val('').focus(); break; case 'SMS': $('.message-form .bar-comment').hide(); $('.message-form .bar-sms').show(); $('.message-form').show().center(); $('.message-form .bar-sms .sms_template_list').parent().show(); $('.message-form .bar-sms .bar-sms-sender').hide(); var agreement_num = $('.page-task-form .i-agreement_num').val(); var v_task_id = $('.page-task-form .d-task_id').val(); $('.loader').show(); $.ajax({ url: base_url + '/handler/sms/get-sms-template-list.php', cache: false, type: "POST", data: { 'task_id': v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( data ){ $('.loader').hide(); $('.message-form .bar-sms .sms_template_list').html( data ); // Клик на строке - одном из вариантов СМС $('.message-form .bar-sms .sms').click(function(){ $('.message-form .bar-sms .sms').removeClass('selected'); $(this).addClass('selected'); $('.message-form .bar-sms .sms_template_list').parent().hide(); var customer_phone = $('.page-task-form .i-customer_phone').val(); var customer_name = $('.page-task-form .i-customer_name').val(); if (customer_phone != '') { $('.message-form .bar-sms .act-send-sms').show(); var receiver_text = '
' + customer_phone + '
' + customer_name + '
' } else { $('.message-form .bar-sms .act-send-sms').hide(); var receiver_text = '
Номер телефона не задан
'; } var sms_text = $(this).html(); var sms_stat_color = ( (sms_text.length) <= 70 )? 'color-green' : 'color-red'; var sms_stat_text = 'СМС содержит ' + sms_text.length + ' знака(ов)'; $('.message-form .bar-sms .d-sms_type').val( $(this).attr('data-sms_type') ); $('.message-form .bar-sms .d-receiver_type').val( $(this).attr('data-receiver_type') ); $('.message-form .bar-sms .d-receiver_id').val( $(this).attr('data-receiver_id') ); $('.message-form .bar-sms .bar-sms-sender .receiver_text').html( receiver_text ); $('.message-form .bar-sms .bar-sms-sender .message').html( sms_text ); $('.message-form .bar-sms .bar-sms-sender .single-sms-stat').html( sms_stat_text ); $('.message-form .bar-sms .bar-sms-sender').show(); }); } }); break; } }); // Показать форму отправки СМС. Используется форма message-form function showSendSMSForm( v_sms_type ) { switch ( v_sms_type ){ case 3: // Вычитываем из БД Стоимость заказа $('.loader').show(); $.ajax({ url: base_url + '/handler/finance/get-task-finance.php', cache: false, type: "POST", data: { task_id: $('.page-task-form .d-task_id').val() }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); // console.log(json); var data = $.parseJSON(json); // Сумма по Договору var amount_agreement = data.task.amount_agreement; //console.log('amount_agreement = ' + amount_agreement); // Показать форму Сообщения для отправки СМС $('.message-form .bar-comment').hide(); $('.message-form .bar-sms .sms_template_list').parent().hide(); $('.message-form .bar-sms').show(); $('.message-form').show().center(); var v_task_id = $('.page-task-form .d-task_id').val(); var trademark_name = $('.page-task-form .d-trademark_name').val(); var agreement_num = $('.page-task-form .d-agreement_num').val(); var customer_phone = $('.page-task-form .i-customer_phone').val(); var customer_name = $('.page-task-form .i-customer_name').val(); var receiver_type = 'C'; // Отправляем клиенту if (customer_phone != '') { $('.message-form .bar-sms .act-send-sms').show(); var receiver_text = '
' + customer_phone + '
' + customer_name + '
'; } else { $('.message-form .bar-sms .act-send-sms').hide(); var receiver_text = '
Номер телефона не задан
'; } switch ( v_sms_type ){ case 3: // "{TM}. Стоимость по Вашему заказу ххх руб" var sms_text = trademark_name + ': Стоимость по Вашему заказу ' + amount_agreement + ' руб'; break; } var sms_stat_color = ( (sms_text.length) <= 70 )? 'color-green' : 'color-red'; var sms_stat_text = 'СМС содержит ' + sms_text.length + ' знака(ов)'; $('.message-form .bar-sms .d-sms_type').val( v_sms_type ); $('.message-form .bar-sms .bar-sms-sender .receiver_text').html( receiver_text ); $('.message-form .bar-sms .bar-sms-sender .message').html( sms_text ); $('.message-form .bar-sms .bar-sms-sender .single-sms-stat').html( sms_stat_text ); $('.message-form .bar-sms .bar-sms-sender .d-receiver_type').val( receiver_type ); $('.message-form .bar-sms .bar-sms-sender .d-receiver_id').val( $('.task-form .d-customer_id').val() ); $('.message-form .bar-sms .bar-sms-sender').show(); } }); break; // СМС с телефоном и паролем case 17: // Показать форму Сообщения для отправки СМС $('.message-form .bar-comment').hide(); $('.message-form .bar-sms .sms_template_list').parent().hide(); $('.message-form .bar-sms').show(); $('.message-form').show().center(); let receiver_phone = $('.page-actor-form .user-active .d-phone').html().trim(); let receiver_name = $('.page-actor-form .actor-form .i-name').val(); let user_pass = $('.page-actor-form .user-form .i-password').val().trim(); let partner_name = $('.bar-top .bar-partner_name').html().trim(); let receiver_text = '
' + receiver_phone + '
' + receiver_name + '
'; var receiver_type = 'A'; // Отправляем сотруднику let sms_text = partner_name + ': ваш вход в Бригадирку (https://brigadirka.ru) телефон ' + receiver_phone + ' пароль ' + user_pass; let sms_stat_color = ( (sms_text.length) <= 70 )? 'color-green' : 'color-red'; var sms_stat_text = 'СМС содержит ' + sms_text.length + ' знака(ов)'; $('.message-form .bar-sms .d-sms_type').val( v_sms_type ); $('.message-form .bar-sms .bar-sms-sender .receiver_text').html( receiver_text ); $('.message-form .bar-sms .bar-sms-sender .message').html( sms_text ); $('.message-form .bar-sms .bar-sms-sender .single-sms-stat').html( sms_stat_text ); $('.message-form .bar-sms .bar-sms-sender .d-receiver_type').val( receiver_type ); $('.message-form .bar-sms .bar-sms-sender .d-receiver_id').val( $('.page-actor-form .d-actor_id').val() ); $('.message-form .bar-sms .bar-sms-sender').show(); break; } } // Отправить системную СМС $('.system-sms-list .act-send-sms').click(function(){ var z_action_id = $(this).parent().attr('data-sms-action_id'); console.log('z_action_id=' + z_action_id); showSendSystemSMSForm( z_action_id ); }); // 01.01.2023 Показать форму отправки системных СМС. Используется форма message-form function showSendSystemSMSForm( v_sms_action_id ) { // Показать форму Сообщения для отправки СМС $('.message-form .bar-comment').hide(); $('.message-form .bar-sms .sms_template_list').parent().hide(); $('.message-form .bar-sms').show(); $('.message-form').show().center(); var receiver_id = $('.system-sms-list .d-owner_id').val(); var receiver_name = $('.system-sms-list .d-owner_name').val(); var receiver_phone = $('.system-sms-list .d-owner_phone').val(); if (receiver_phone != '') { $('.message-form .bar-sms .act-send-sms').show(); var receiver_text = '
' + receiver_phone + '
' + receiver_name + '
'; } else { $('.message-form .bar-sms .act-send-sms').hide(); var receiver_text = '
Номер телефона не задан
'; } // console.log('v_sms_action_id=' + v_sms_action_id); var sms_text = $('.system-sms-list div[data-sms-action_id="' + v_sms_action_id + '"] .sms_text').html(); var sms_stat_color = ( (sms_text.length) <= 70 )? 'color-green' : 'color-red'; var sms_stat_text = 'СМС содержит ' + sms_text.length + ' знака(ов)'; $('.message-form .bar-sms .d-sms_type').val( v_sms_action_id ); $('.message-form .bar-sms .bar-sms-sender .receiver_text').html( receiver_text ); $('.message-form .bar-sms .bar-sms-sender .message').html( sms_text ); $('.message-form .bar-sms .bar-sms-sender .single-sms-stat').html( sms_stat_text ); $('.message-form .bar-sms .bar-sms-sender .d-author_type').val('S'); $('.message-form .bar-sms .bar-sms-sender .d-author_id').val( null ); $('.message-form .bar-sms .bar-sms-sender .d-receiver_type').val('A'); // Владелец компании - сотрудник тип A $('.message-form .bar-sms .bar-sms-sender .d-receiver_id').val( receiver_id ); $('.message-form .bar-sms .bar-sms-sender').show(); } // Сохранить комментарий $('.message-form .act-put-comment2').click(function(){ $('.message-form .bar-comment .response').html('').hide(); var v_to_customer = ($('.message-form .chk-to-customer').is(':checked'))? 1 : 0; var v_task_id = $('.page-task-form .d-task_id').val(); $('.loader').show(); $.ajax({ url: base_url + '/handler/message/put-comment.php', cache: false, type: "POST", data: { 'action': 'add', 'task_id': v_task_id, 'to_customer': v_to_customer, 'body': $('.message-form .bar-comment .i-comment').val() }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); console.log(data); if (data.result < 0) { $('.message-form .bar-comment .response').html(data.message).attr('data-type', 'res-error').show(); switch (data.result){ case "-1": $('.message-form .bar-comment .i-comment').focus(); break; } } else { showTaskMessageList( v_task_id ); $('.message-form .act-close-message-form').click(); } } }); });// Карточка заказа - таб Документы: Показать список документов по заказу function reloadDocumentList (){ $('.page-task-form .tabcard[data-tab="document"] .document-list').html('Загрузка...'); $('.loader').show(); $.ajax({ url: base_url + '/handler/document/get-document-list.php', cache: false, type: "POST", data: { task_id: $('.page-task-form .d-task_id').val(), partner_details_id: localStorage['partner_details_id'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-task-form .tabcard[data-tab="document"] .document-list').html(data); // Наведение на превьюшку - Отобразить кнопки действий при наведении $('.page-task-form .document-list .document-thumb').hover( function(){ $(this).find('.act-delete-document').css('visibility', 'visible'); }, function(){ $(this).find('.act-delete-document').css('visibility', 'hidden'); } ); // Клик - Удалить фото $('.page-task-form .document-list .act-delete-document').click(function(){ var v_document_id = $(this).parent().parent().attr('data-document_id'); deletePhoto ( v_document_id ); }); } }); } // Выбор Реквизитов в выпадающем списке $('.page-task-form .select-partner_details_id').change( function() { var z_partner_details_id = $(this).val(); // console.log('change to ' + z_partner_details_id); localStorage['partner_details_id'] = z_partner_details_id; // Сохраняем значение в базе var z_task_id = $('.page-task-form .d-task_id').val(); $('.loader').show(); $.ajax({ url: base_url + '/handler/task/put-task.php', cache: false, dataType: 'json', type: "POST", data: { 'action': 'partner_details_id', 'task_id': z_task_id, 'partner_details_id': z_partner_details_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ // console.log(data); $('.loader').hide(); showTaskHeader( z_task_id ); reloadDocumentList(); } }); }); // Показать форму подписания договора $('.page-task-form .act-show-sign-agreement-form').click(function(){ let v_task_id = $('.page-task-form .d-task_id').val(); showSignAgreementForm( v_task_id, 'act-show-sign-agreement-form' ); }); // Показать форму подписания договора function showSignAgreementForm( v_task_id, v_sender ){ $('.sign-agreement-form .d-task_id').val( v_task_id ); $('.sign-agreement-form .bar-sign-agreement').hide(); $('.sign-agreement-form .bar-bar-request-info').hide(); $('.sign-agreement-form .bar-bar-agreement-info').hide(); $('.sign-agreement-form .bar-congratulation').hide(); $('.sign-agreement-form .d-trademark_name').html(''); $('.sign-agreement-form .d-request_num').html(''); $('.sign-agreement-form .d-request_date').html(''); $('.sign-agreement-form .d-agreement_num').html(''); $('.sign-agreement-form .d-agreement_date').html(''); $('.sign-agreement-form .i-agreement_date').val( moment().format('YYYY-MM-DD') ); $('.loader').show(); $.ajax({ url: base_url + '/handler/task/get-task.php', dataType: 'json', cache: false, type: "POST", data: { task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); if (data.task.agreement_date !== null) { $('.sign-agreement-form .i-agreement_date').val( data.task.agreement_date ); } else { $('.sign-agreement-form .i-agreement_date').val( moment().format('YYYY-MM-DD') ); } $('.sign-agreement-form .d-trademark_name').html(data.task.trademark_short_name); $('.sign-agreement-form .d-request_num').html(data.task.request_num); // $('.sign-agreement-form .d-request_date').html(data.task.request_date_ddmmyyyy); if (data.task.mode == 'TASK'){ $('.sign-agreement-form .bar-agreement-info').show(); $('.sign-agreement-form .d-agreement_num').html(data.task.agreement_num); $('.sign-agreement-form .d-agreement_date').html(data.task.agreement_date_ddmmyyyy); } else { $('.sign-agreement-form .bar-agreement-info').hide(); $('.sign-agreement-form .d-agreement_date').html(data.task.agreement_date_ddmmyyyy); } if (data.task.is_agreement_signed == 1){ switch (v_sender){ case 'act-show-sign-agreement-form': $('.sign-agreement-form h1').html('Договор уже подписан'); $('.sign-agreement-form .bar-congratulation').hide(); break; case 'do-sign-agreement': $('.sign-agreement-form h1').html('Договор подписан'); $('.sign-agreement-form .bar-congratulation').show(); $('.sign-agreement-form .bar-agreement-info').show(); $('.sign-agreement-form .d-agreement_num').html(data.task.agreement_num); break; } } else { $('.sign-agreement-form h1').html('Подписать договор'); $('.sign-agreement-form .bar-sign-agreement').show(); } $('.sign-agreement-form').show().center(); } }); } // В карточке ЗАКАЗа в табе ДОКУМЕНТЫ обновить бар над список документов function reloadBarAgreementSign(v_task_id){ $('.page-task-form .bar-is_agreement_signed').hide(); $('.loader').show(); $.ajax({ url: base_url + '/handler/task/get-task.php', dataType: 'json', cache: false, type: "POST", data: { task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-task-form .bar-is_agreement_signed').show(); // Признак подписанного договора if (data.task.is_agreement_signed == 1){ $('.page-task-form .bar-is_agreement_signed .bar-ico').css('color', 'green'); $('.page-task-form .bar-is_agreement_signed .title') .html('подписан
' + data.task.agreement_date_ddmmyyyy) .css('color', 'green'); $('.page-task-form .act-show-sign-agreement-form').hide(); } else { $('.page-task-form .bar-is_agreement_signed .bar-ico').css('color', 'silver'); $('.page-task-form .bar-is_agreement_signed .title') .html('НЕ подписан') .css('color', 'silver'); $('.page-task-form .act-show-sign-agreement-form').show(); } } }); } // Закрыть форму подписания договора $('.sign-agreement-form .act-close-sign-agreement-form').click(function(){ $('.sign-agreement-form').hide(); }); // Подписать договор $('.sign-agreement-form .act-sign-agreement').click(function(){ signAgreement(); }); // Подписать договор function signAgreement(){ if (!confirm('Вы действительно хотите подписать договор?')){ return; } let z_task_id = $('.sign-agreement-form .d-task_id').val(); // Проверка корректности даты let z_agreement_date = ''; let m = $('.sign-agreement-form .i-agreement_date').val(); if (m != '') { if ( !moment( m, "YYYY-MM-DD").isValid() ) { $('.sign-agreement-form .i-agreement_date').focus(); alert('Недопустимое значение даты!'); return; } else { z_agreement_date = m; } } $('.loader').show(); $.ajax({ url: base_url + '/handler/task/do-sign-agreement.php', cache: false, dataType: 'json', type: "POST", data: { task_id: z_task_id, agreement_date: z_agreement_date }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); showSignAgreementForm( z_task_id, 'do-sign-agreement' ); reloadBarAgreementSign(); $('.page-task-form .act-refresh-task-form').click(); } }); }// ----------------------- Добавить фото ------------------------------------- // Клик по кнопке в форме - Выбрать фото $('.upload-photo-form .i-photo-list').click(function(){ // Очищаем респонс $('.upload-photo-form .response').html(''); // Вызываем открытие окна для выбора файла //$input = $('.upload-photo-form .i-photo').click(); }); // Клик по кнопке в форме - Добавить фото по этапу $('.upload-photo-form .i-photo-list').click(function(){ // Очищаем ранее выбранные файлы $(this).val(''); // Очищаем респонс $('.upload-photo-form .response').html(''); // Далее открытие файлового менеджера происходит по клику самостоятельно }); // Файлы в файловом менеджере выбраны, пробуем загрузить по очереди $('.upload-photo-form .i-photo-list').change(function(e){ let photo_file_list = this.files; //console.log('photo_file_list=' + photo_file_list); e.preventDefault(); let v_sender = $('.upload-photo-form .d-sender').val(); let v_task_id = $('.upload-photo-form .d-task_id').val(); let v_claim_id = $('.upload-photo-form .d-claim_id').val(); let v_item_id = $('.upload-photo-form .d-item_id').val(); let v_stage_id; // ID рекламации if ( v_claim_id > 0 ){ // Для фоток - рекламаций всегда присваиваем псевдо этап = -2 v_stage_id = -2; } else { v_stage_id = $('.upload-photo-form .select-stage_id').val(); } // Загружаем файлы по очереди for( i = 0; i < photo_file_list.length; i++ ) { loadPhoto( v_sender, photo_file_list[i], v_task_id, v_stage_id, v_claim_id, v_item_id ); } }); // Загрузка одного фото function loadPhoto( v_sender, photo_file, v_task_id, v_stage_id, v_claim_id, v_item_id ) { let z_photo_type; if ( photo_file ) { $('.loader').show(); switch ( v_sender ){ case 'task-form-photo': z_photo_type = 'TASK'; $('.task-form').css('opacity', '0.5'); break; case 'task-form-claim': case 'task-claim-list': z_photo_type = 'TASK'; $('.task-form').css('opacity', '0.5'); break; case 'item-form-photo': z_photo_type = 'ITEM'; $('.item-form').css('opacity', '0.5'); break; } var formData = new FormData(); formData.append( 'photo_type', z_photo_type ); formData.append( 'task_id', v_task_id ); formData.append( 'stage_id', v_stage_id); formData.append( 'claim_id', v_claim_id ); formData.append( 'item_id', v_item_id ); formData.append( 'file', photo_file ); $.ajax({ type: "POST", url: "/handler/photo/upload-photo.php?" + Math.random(), cache: false, contentType: false, processData: false, data: formData, dataType : 'json', success: function(data){ $('.loader').hide(); $('.task-form').css('opacity', '1.0'); $('.item-form').css('opacity', '1.0'); //console.log(data.result); if ( data.result == 0 ){ // Закрыть фото форму $('.upload-photo-form .act-close-upload-photo-form').click(); // console.log('v_sender = ' + v_sender); // Обновить списки switch ( v_sender ){ case 'task-form-photo': showTaskHeader( v_task_id ); prev_msg = $('.task-form .tabcard[data-tab="photo"] .response').html(); new_msg_text = data.message; new_msg_class = (data.result < 0)? 'color-red' : 'color-green'; new_msg = '
' + new_msg_text + '
'; $('.task-form .tabcard[data-tab="photo"] .response').html( prev_msg + new_msg ).show(); // Форма заказа, таб Фото reloadPhotoList( v_task_id ); break; case 'task-form-claim': case 'task-claim-list': // Форма заказа, таб Рекламации reloadClaimList( v_claim_id_id ); break; case 'item-form-photo': prev_msg = $('.item-form .tabcard[data-tab="iphoto"] .response').html(); new_msg_text = data.message; new_msg_class = (data.result < 0)? 'color-red' : 'color-green'; new_msg = '
' + new_msg_text + '
'; $('.item-form .tabcard[data-tab="iphoto"] .response').html( prev_msg + new_msg ).show(); // Форма товара, таб Фото reloadIPhotoList( v_item_id ); break; } } } }); } }// Карточка заказа - таб Фото: Показать список фотографий по заказу function reloadPhotoList ( v_task_id ){ //if ( $('.page-task-form .tabcard[data-tab="photo"] .photo-list').html() == '' ){ // $('.page-task-form .tabcard[data-tab="photo"] .photo-list').html('Загрузка...'); //} $('.page-task-form .tabcard[data-tab="photo"] .photo-list').html('Загрузка...'); $('.loader').show(); $.ajax({ url: base_url + '/handler/photo/get-photo-list.php', cache: false, type: "POST", data: { task_id: v_task_id, type: 'TASK' }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-task-form .tabcard[data-tab="photo"] .photo-list').html(data); // Наведение на превьюшку - Отобразить кнопки действий при наведении $('.page-task-form .photo-list .photo-thumb').hover( function(){ $(this).find('.act-delete-photo').css('visibility', 'visible'); }, function(){ $(this).find('.act-delete-photo').css('visibility', 'hidden'); } ); // Клик - Показать выбранное фото в просмотрщике $('.page-task-form .act-show-photo').click(function(){ var v_current_photo_id = $(this).parent().attr('data-photo_id'); var v_photo_ids = $(this).parent().parent().parent().find('.photo_ids').val(); showPhoto(v_current_photo_id, v_photo_ids, true, 'page-task-form'); }); // Клик - Удалить фото $('.page-task-form .photo-list .act-delete-photo').click(function(){ var v_photo_id = $(this).parent().parent().attr('data-photo_id'); deletePhoto( 'task-form-photo', v_photo_id ); }); } }); } // Показать форму добавления фото по ЗАКАЗУ $('.page-task-form .show-upload-photo-form').click(function(){ // Отправитель - Форма заказа, таб Фото $('.upload-photo-form .d-sender').val( 'task-form-photo' ); // Этап ID var z_stage_id = localStorage['work_stage_id']; if ( !(z_stage_id > 0) ){ z_stage_id = $('.stage-container .bigtab[data-stage_id]:first-child').attr('data-stage_id'); } $('.upload-photo-form .select-stage_id').val(z_stage_id); $('.upload-photo-form .bar-select-stage_id').show(); // Заказ ID var z_task_id = $('.page-task-form .d-task_id').val(); $('.upload-photo-form .d-task_id').val( z_task_id ); // Рекламация ID $('.upload-photo-form .d-claim_id').val(''); $('.upload-photo-form .bar-claim-label').hide(); // Интерфейсная часть $('.page-task-form .tabcard[data-tab="photo"] .response').html('').hide(); $('.upload-photo-form .response').html('').hide(); // Очищаем ранее выбранные файлы $('.upload-photo-form .i-photo-list').val(''); // Показываем форму $('.upload-photo-form .act-close-upload-photo-form').show(); $('.upload-photo-form').show().center(); }); // Закрыть форму добавления фото $('.upload-photo-form .act-close-upload-photo-form').click(function(){ $('.upload-photo-form').hide(); $('.upload-photo-form .act-close-upload-photo-form').hide(); }); // Удалить фото function deletePhoto ( v_sender, v_photo_id ){ $('.task-form .tabcard[data-tab="photo"] .response').html('').hide(); $('.item-form .tabcard[data-tab="iphoto"] .response').html('').hide(); if ( confirm('Удалить фото без возможности восстановления?') ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/photo/put-photo.php', type: "POST", dataType : 'json', data: { photo_id: v_photo_id, action: 'delete' }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( data ){ $('.loader').hide(); let new_msg_text = data.message; let new_msg = '
' + new_msg_text + '
'; // Обновить списки // console.log('v_sender=' + v_sender); switch ( v_sender ){ case 'task-form-photo': // Форма заказа, таб Фото $('.task-form .tabcard[data-tab="photo"] .response').html( new_msg ).show(); var z_task_id = $('.page-task-form .d-task_id').val(); reloadPhotoList( z_task_id ); showTaskHeader( z_task_id ); break; case 'task-claim-list': // Форма заказа, таб Рекламации var z_task_id = $('.page-task-form .d-task_id').val(); showClaimList( 'task-claim-list', z_task_id ) break; case 'item-form-photo': // Редактор товара, таб Фото $('.item-form .tabcard[data-tab="iphoto"] .response').html( new_msg ).show(); var z_item_id = $('.item-form .d-item_id').val(); reloadIPhotoList( z_item_id ); break; case 'photo-viewer-form': var z_task_id = $('.page-task-form .d-task_id').val(); reloadPhotoList( z_task_id ); showClaimList( 'task-claim-list', z_task_id ); $('.photo-viewer-form .act-close-photo-viewer-form').click(); break; } } }); } } // Поворот изображения function rotatePhoto ( v_photo_id, v_angle ){ $('.loader').show(); $.ajax({ url: base_url + '/handler/photo/put-photo.php', cache: false, type: "POST", data: { action: 'rotate', photo_id: v_photo_id, angle: v_angle }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var z_current_photo_id = $('.photo-viewer-form').attr('data-current-photo_id'); var z_photo_ids = $('.photo-viewer-form').attr( 'data-photo_ids'); showPhoto( z_current_photo_id, z_photo_ids, false, 'photo-viewer-form' ); adjustPhotoViewer(); $('.photo-viewer-form').attr('data-need-photo-refresh', '1'); $('.page-task-form .act-refresh-task-form').click(); } }); } // Карточка товара - таб Фото: Показать список фотографий по заказу function reloadIPhotoList ( v_item_id ){ if ( $('.item-form .tabcard[data-tab="iphoto"] .iphoto-list').html() == '' ){ $('.item-form .tabcard[data-tab="iphoto"] .iphoto-list').html('Загрузка...'); } $('.loader').show(); $.ajax({ url: base_url + '/handler/iphoto/get-iphoto-list.php', cache: false, type: "POST", data: { item_id: v_item_id, type: 'CATALOG' }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.item-form .tabcard[data-tab="iphoto"] .photo-list').html(data); // Наведение на превьюшку - Отобразить кнопки действий при наведении $('.item-form .photo-list .photo-thumb').hover( function(){ $(this).find('.act-delete-photo, .act-set-avatar').css('visibility', 'visible'); }, function(){ $(this).find('.act-delete-photo, .act-set-avatar').css('visibility', 'hidden'); } ); // Клик - Показать выбранное фото в просмотрщике $('.item-form .act-show-photo').click(function(){ var v_current_photo_id = $(this).parent().attr('data-photo_id'); var v_photo_ids = $(this).parent().parent().parent().find('.photo_ids').val(); showPhoto( v_current_photo_id, v_photo_ids, true, 'item-form' ); }); // Клик - Удалить фото $('.item-form .act-delete-photo').click(function(){ var v_photo_id = $(this).parent().parent().attr('data-photo_id'); deletePhoto ( 'item-form-photo', v_photo_id ); }); } }); } // Показать форму добавления фото по ТОВАРУ $('.item-form .show-upload-iphoto-form').click(function(){ // Отправитель - Форма товара, таб Фото $('.upload-photo-form .d-sender').val( 'item-form-photo' ); // Скрываем Этап ID $('.upload-photo-form .select-stage_id').val(null); $('.upload-photo-form .bar-select-stage_id').hide(); // Скрываем Рекламация ID $('.upload-photo-form .bar-claim-label').hide(); // Активируем Товар ID var z_item_id = $('.item-form .d-item_id').val(); $('.upload-photo-form .d-item_id').val( z_item_id ); // Интерфейсная часть $('.item-form .tabcard[data-tab="iphoto"] .response').html('').hide(); $('.upload-photo-form .response').html('').hide(); // Очищаем ранее выбранные файлы $('.upload-photo-form .i-photo-list').val(''); $('.upload-photo-form .act-close-upload-photo-form').show(); // Показываем форму $('.upload-photo-form').show().center(); }); // Закрыть форму добавления фото $('.upload-photo-form .act-close-upload-photo-form').click(function(){ $('.upload-photo-form').hide(); $('.upload-photo-form .act-close-upload-photo-form').hide(); });// Показать фото в просмотрщике function showPhoto( v_current_photo_id, v_photo_ids, v_clear, v_sender ){ $('.photo-viewer-form .d-sender').val(v_sender); $('.photo-viewer-form') .attr( 'data-current-photo_id', v_current_photo_id ) .attr( 'data-photo_ids', v_photo_ids ); if ( v_clear ) { $('.photo-viewer-form .current_photo').attr('src', ''); } $('.photo-viewer-form').attr('data-need-photo-refresh', '0'); $('.photo-viewer-form .act-close-photo-viewer-form').show(); $('.loader').show(); $.ajax({ url: base_url + '/handler/photo/get-photo.php', cache: false, type: "POST", data: { photo_id: v_current_photo_id, photo_ids: v_photo_ids }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); let data = $.parseJSON(json); let rnd = Math.random(); $('.photo-viewer-form .current_photo').attr( 'src', data.full_path + '?' + rnd ); $('.photo-viewer-form .current_photo').parent().attr('href', data.full_path + '?' + rnd ); $('.photo-viewer-form .d-title').html( data.photo.task_name ); $('.photo-viewer-form .d-author_data').html( data.photo.author_title + ' ' + data.photo.author_name ); $('.photo-viewer-form') .attr( 'data-current-photo_id', v_current_photo_id ) .show().center(); $('.photo-viewer-form .d-date').html( data.photo.cdate_ddmmyyyy ); $('.photo-viewer-form .d-time').html( data.photo.cdate_hhmi ); $('.photo-viewer-form .d-photo_num').html( 'фото ' + data.photo_num + ' из ' + data.photo_count ); // Видимость кнопки "Предыдущее фото" if (data.prev_photo_id != null){ $('.photo-viewer-form .photo-selector.prev').attr('data-photo_id', data.prev_photo_id).show(); } else { $('.photo-viewer-form .photo-selector.prev').attr('data-photo_id', '').hide(); } // Видимость кнопки "Следущее фото" if (data.next_photo_id != null){ $('.photo-viewer-form .photo-selector.next').attr('data-photo_id', data.next_photo_id).show(); } else { $('.photo-viewer-form .photo-selector.next').attr('data-photo_id', '').hide(); } adjustPhotoViewer(); } }); } // 23.12.2023 УБРАНО Листание фото в просмотрщике с помощью колесика мыши /* $('.photo-viewer-form').mousewheel( function(e){ if ( e.originalEvent.wheelDelta > 0 ) { $('.photo-viewer-form .photo-selector.prev').click(); } else{ $('.photo-viewer-form .photo-selector.next').click(); } }); */ // Клик - Показать предыдущее или следующее фото в просмотрщике $('.photo-viewer-form .photo-selector.prev, .photo-viewer-form .photo-selector.next').click(function(){ let z_current_photo_id = $(this).attr('data-photo_id'); let z_photo_ids = $('.photo-viewer-form').attr( 'data-photo_ids'); showPhoto( z_current_photo_id, z_photo_ids, false, 'photo-viewer-form' ); }); // Клик - Повернуть фото в просмотрщике против часовой стрелки $('.photo-viewer-form .act-rotate-photo-left-90').click(function(){ let v_photo_id = $(this).parent().parent().parent().attr('data-current-photo_id'); rotatePhoto(v_photo_id, 90); }); // Клик - Повернуть фото в просмотрщике по часовой стрелке $('.photo-viewer-form .act-rotate-photo-right-90').click(function(){ let v_photo_id = $(this).parent().parent().parent().attr('data-current-photo_id'); rotatePhoto(v_photo_id, -90); }); // Клик - Удалить фото в просмотрщике $('.photo-viewer-form .bar-act-list .act-delete-photo').click(function(){ let v_photo_id = $(this).parent().parent().parent().attr('data-current-photo_id'); deletePhoto('photo-viewer-form', v_photo_id); }); // Клик - Показать исходное фото в новой вкладе просмотрщика $('.photo-viewer-form .act-show-photo-in-new-tab').click(function(){ let v_photo_src = $(this).parent().parent().find('.current_photo').attr('src'); window.open(v_photo_src, '_blank').focus(); }); $(window).resize(function() { adjustPhotoViewer(); }); // Настройка размеров элементов function adjustPhotoViewer(){ let div_header_height = $('.photo-viewer-form .photo-viewer-header').css('height'); let div_header_body = $('.photo-viewer-form').css('height') + ' - ' + div_header_height; $('.photo-viewer-form .photo-viewer-body').css('height', 'calc(' + div_header_body + ')'); } // Закрыть форму фото-просмотрщика $('.act-close-photo-viewer-form').click(function(){ // Обновляем текущую страницу заказа if ( $('.photo-viewer-form').attr('data-need-photo-refresh') == '1' ){ $('.page-task-form .act-refresh-task-form').click(); $('.photo-viewer-form').attr('data-need-photo-refresh', '0'); $('.page-task-form .act-refresh-task-form').click(); } $('.photo-viewer-form').hide(); $('.photo-viewer-form .act-close-photo-viewer-form').hide(); });// ----------------------- Добавить фото по этапу ------------------------------------- // Клик по кнопке в форме - Добавить фото по этапу $('.api-demo-page-task-form .photo-form .act-add-photo').click(function(){ // Очищаем респонс $('.api-demo-page-task-form .photo-form .response').html(''); // Вызываем открытие окна для выбора файла $input = $('.api-demo-page-task-form .photo-form .i-photo').click(); }); var demo_axhr = new XMLHttpRequest(); if (demo_axhr && window.File) { $('.api-demo-page-task-form .photo-form .i-photo').change(function(e){ //var photo_file_list = this.files; var photo_file = this.files[0]; e.preventDefault(); var v_task_id = $('.api-demo-page-task-form .d-task_id').val(); var v_stage_id = $('.api-demo-page-task-form .photo-form .select-stage_id').val(); demoLoadFile( photo_file, v_task_id, v_stage_id ); }); } // Загрузка фото function demoLoadFile(photo_file, v_task_id, v_stage_id) { if ( photo_file ) { $('.loader').show(); $('.api-demo-page-task-form').css('opacity', '0.5'); demo_axhr.onreadystatechange = function(){ if (demo_axhr.readyState == 4) { $('.loader').hide(); $('.api-demo-page-task-form').css('opacity', '1.0'); var json = demo_axhr.responseText; var data = $.parseJSON(json); $('.api-demo-page-task-form .response').html( data.message ); $('.api-demo-page-task-form .response').attr('data-type', ((data.result < 0)? 'res-error' : 'res-ok')).show(); } } demo_axhr.open( "POST", "/api/handler/photo/upload-photo.php?" + Math.random() ); demo_axhr.setRequestHeader("Cache-Control", "no-cache"); demo_axhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); demo_axhr.setRequestHeader("X-File-Name", encodeURI(photo_file.name)); demo_axhr.setRequestHeader("X-Task-ID", v_task_id); demo_axhr.setRequestHeader("X-Stage-ID", v_stage_id); demo_axhr.send( photo_file ); } } // Показать форму редактора Аватара function showAvatarForm ( v_actor_id, v_caller ){ // Очищаем $('.avatar-form .d-work-avatar').attr('src', '').attr('display', 'none'); $('.avatar-form .response').html(''); $('.avatar-form .bar-std-avatars .avatar').css('border', 'none').attr('data-selected', '0'); adjustAvatarForm('open'); $('.avatar-form .d-caller').val(v_caller); $('.avatar-form .bar-std-avatar-actions').hide(); $('.avatar-form .bar-self-avatar-hint').show(); $('.avatar-form .bar-std-avatars').show(); $('.avatar-form .bar-open-avatar').show(); if ( v_actor_id == null ) { exit; } $('.avatar-form .d-actor_id').val( v_actor_id ); $('.loader').show(); // Зачитываем данные по Сотруднику $.ajax({ url: base_url + '/handler/actor/get-actor.php', cache: false, type: "POST", dataType: 'json', data: { actor_id: v_actor_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); // Показать кнопку "Закрыть" $('.avatar-form .act-close-avatar-form').show(); // ФИО $('.avatar-form h1').html( data.actor.actor_name ); // Загрузить текущий аватар if ( data.actor.actor_avatar != null ){ $('.avatar-form .d-work-avatar').attr('src', work_base_url + data.actor.url_avatar).attr('display', 'block'); } else { $('.avatar-form .d-work-avatar').attr('src', '').attr('display', 'none'); } // Показать форму Аватара $('.avatar-form').show().center().css('opacity', 1.0).css('top', 20); } }); } // Клик - Показать форму редактора Аватара $('.act-show-avatar-form').click(function(){ var z_actor_id = $(this).attr('data-actor_id'); var z_caller = $(this).attr('data-caller'); showAvatarForm ( z_actor_id, z_caller ); }); // Клик по кнопке в форме - Выбрать фото $('.avatar-form .act-select-avatar').click(function(){ // Очищаем респонс $('.avatar-form .response').html(''); $('.avatar-form .response').html(''); // Вызываем открытие окна для выбора файла $('.avatar-form .i-work-avatar').val('').click(); }); // Файл в файловом менеджере выбран, пробуем загрузить $('.avatar-form .i-work-avatar').change(function(e){ let avatar_file_list = this.files; e.preventDefault(); let v_actor_id = $('.avatar-form .d-actor_id').val(); // Загружаем файл loadAvatar( avatar_file_list[0], v_actor_id ); }); // Загрузка одного фото function loadAvatar( avatar_file, v_actor_id ){ if ( avatar_file ) { $('.loader').show(); $('.avatar-form').css('opacity', '0.5'); $('.avatar-form .d-work-avatar').attr('display', 'none'); let formData = new FormData(); formData.append( 'actor_id', v_actor_id ); formData.append( 'file', avatar_file ); $.ajax({ type: "POST", url: "/handler/avatar/upload-avatar.php?" + Math.random(), cache: false, contentType: false, processData: false, data: formData, dataType : 'json', success: function(data){ $('.loader').hide(); $('.avatar-form').css('opacity', '1.0'); //console.log(data.result); if ( data.result < 0 ){ var msg_class = 'color-red'; } else { var msg_class = 'color-green'; $('.avatar-form .d-work-avatar').attr('src', work_base_url + data.url_work_avatar).show(); // Кнопки // Сразу после открытия новой картинки вызываем инструмент обрезки в квадрат $('.avatar-form .act-ico[data-action="pick-fragment-avatar"]').click(); // Прячем стандартные аватары $('.avatar-form .bar-std-avatars').hide(); } var msg_text = data.message; var msg = '
' + msg_text + '
'; $('.avatar-form .response').html(msg).show(); //$('.avatar-form').center(); } }); } } // Клик по кнопкам обработки 1) Зеркалировать, 2) Яркость +/-, 3) Контраст +/-, // затем отрисовать результат $('.avatar-form .act-ico').click(function(){ if ( !( $(this).attr('data-action') == 'rotate90cw-avatar' || $(this).attr('data-action') == 'rotate90ccw-avatar' || $(this).attr('data-action') == 'flip-avatar' || $(this).attr('data-action') == 'brightness-remove' || $(this).attr('data-action') == 'brightness-add' || $(this).attr('data-action') == 'contrast-remove' || $(this).attr('data-action') == 'contrast-add' )) { return; } let z_action = $(this).attr('data-action'); let z_actor_id = $('.avatar-form .d-actor_id').val(); // Очищаем респонс $('.avatar-form .response').html(''); $('.loader').show(); // Вызываем обработчик сохранения $.ajax({ url: base_url + '/handler/avatar/handle-avatar.php', cache: false, type: "POST", dataType: 'json', data: { actor_id: z_actor_id, action: z_action, url_work_avatar: $('.avatar-form .d-work-avatar').attr('src') }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.avatar-form .d-work-avatar').attr('src', work_base_url + data.url_work_avatar).show(); } }); $('.loader').hide(); }); function adjustAvatarForm(z_mode){ switch (z_mode){ case 'open': $('.avatar-form .bar-self-avatar-hint').html('
или
Загрузите своё фото, обрежьте и сохраните:
').show(); $('.avatar-form .bar-open-avatar').show(); $('.avatar-form .bar-act-list').hide(); $('.avatar-form .bar-crop-list').hide(); break; case 'crop': $('.avatar-form .bar-self-avatar-hint').html('Выберите нужный фрагмент').show(); $('.avatar-form .bar-open-avatar').hide(); $('.avatar-form .bar-act-list').hide(); $('.avatar-form .bar-crop-list').show(); break; case 'tune': $('.avatar-form .bar-self-avatar-hint').html('При необходимости, доработайте фото. Сохраните').show(); $('.avatar-form .bar-open-avatar').hide(); $('.avatar-form .bar-act-list').show(); $('.avatar-form .bar-crop-list').hide(); break; } } // Клик по кнопке в форме - Вызвать инструмент для выделения фрагмента фото для последующей обрезки $('.avatar-form .act-ico[data-action="pick-fragment-avatar"]').click(function(){ adjustAvatarForm('crop'); $('#jcrop-avatar').rcrop({ // full-size crop area full: false, // min / max size of crop area minSize: [80, 80], maxSize: [null, null], // выделить все изображение при открытии // full: true, // preserve the original radio preserveAspectRatio : true, // generate an input with crop data inputs: true, // prefix to input inputsPrefix : '', // grid style crop area grid: true }); }); // Клик по кнопке Отправить координаты фрагмента на сервер, там он обрежется, затем отрисовать результат $( '.avatar-form .crop-avatar').click(function(){ let z_action = 'crop-avatar'; let z_actor_id = $('.avatar-form .d-actor_id').val(); // Границы выделенного фрагмента let values = $('#jcrop-avatar').rcrop('getValues'); let fragment_x = values.x; let fragment_y = values.y; let fragment_width = values.width; let fragment_height = values.height; // Очищаем респонс $('.avatar-form .response').html(''); $('.loader').show(); // Вызываем обработчик сохранения $.ajax({ url: base_url + '/handler/avatar/handle-avatar.php', cache: false, type: "POST", dataType: 'json', data: { actor_id: z_actor_id, action: z_action, url_work_avatar: $('.avatar-form .d-work-avatar').attr('src'), x: fragment_x, y: fragment_y, width: fragment_width, height: fragment_height }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.avatar-form .d-work-avatar').attr('src', work_base_url + data.url_work_avatar).show(); // Переходим в режим доработки фото и сохранения $('#jcrop-avatar').rcrop('destroy'); adjustAvatarForm('tune'); } }); $('.loader').hide(); }); /* Операция убрана как лишняя, 2023 // Клик по кнопке в форме - Отменить отображение инструмента выделения фрагмента // Выходим из режима CROP $('.avatar-form .act-ico[data-action="cancel-crop-avatar"]').click(function(){ $('#jcrop-avatar').rcrop('destroy'); adjustAvatarForm('open'); }); */ // Клик по кнопке в форме - Сохранить аватар, тип SELF $('.avatar-form .btn.act-save-self-avatar').click(function(){ var z_actor_id = $('.avatar-form .d-actor_id').val(); // Очищаем респонс $('.avatar-form .response').html(''); $('.loader').show(); // Вызываем обработчик сохранения $.ajax({ url: base_url + '/handler/avatar/save-self-avatar.php', cache: false, type: "POST", dataType: 'json', data: { actor_id: z_actor_id, url_work_avatar: $('.avatar-form .d-work-avatar').attr('src') // actor_type: 'SELF' }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); if ( data.result == 0 ){ let photo_src = work_base_url + data.url_avatar + '?' + Math.random(); // console.log('photo_src = ' + photo_src); switch ( $('.avatar-form .d-caller').val() ){ case 'actor': // Обновить аватарку в карточке сотрудника $('.page-actor-form .i-avatar').attr('src', photo_src); $('.bar-service .act-refresh-actor').click(); break; case 'profile': // Обновить аватарку в портфолио $('.page-settings .i-avatar').attr('src', photo_src ); $('.bar-top .bar-user .avatar').attr('src', photo_src ); $('.bar-service .act-refresh-actor').click(); break; } // Закрыть фото форму closeAvatarForm(); } } }); }); // Клик по стандартному аватару $('.avatar-form .bar-std-avatars .avatar').click(function(){ // Рамка у элемента $('.avatar-form .bar-std-avatars .avatar').css('border', 'none').attr('data-selected', '0'); $(this).css('border', '2px solid orange').attr('data-selected', '1');; let std_avatar_id = $(this).attr('data-std_avatar_id'); let std_avatar_fullname = $(this).attr('src'); $('.avatar-form .d-work-avatar').attr('src', std_avatar_fullname).show(); $('.avatar-form .bar-std-avatar-actions').show(); $('.avatar-form .bar-self-avatar-hint').hide(); $('.avatar-form .bar-open-avatar').hide(); }); // Клик - сохранить стандартное лого $('.avatar-form .btn.act-save-std-avatar').click(function(){ let z_std_avatar_id = $('.avatar-form .bar-std-avatars .avatar[data-selected="1"]').attr('data-std_avatar_id'); let z_actor_id = $('.avatar-form .d-actor_id').val(); // Очищаем респонс $('.avatar-form .response').html(''); $('.loader').show(); console.log('z_std_avatar_id=' + z_std_avatar_id); // Вызываем обработчик сохранения $.ajax({ url: base_url + '/handler/avatar/save-std-avatar.php', cache: false, type: "POST", dataType: 'json', data: { actor_id: z_actor_id, std_avatar_id: z_std_avatar_id // actor_type: 'STD' }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); let photo_src = work_base_url + data.url_avatar; console.log('photo_src = ' + photo_src); if ( data.result == 0 ){ switch ( $('.avatar-form .d-caller').val() ){ case 'actor': // Обновить аватарку в карточке сотрудника $('.page-actor-form .i-avatar').attr('src', photo_src); $('.bar-service .act-refresh-actor').click(); break; case 'profile': // Обновить аватарку в портфолио $('.page-settings .i-avatar').attr('src', photo_src ); $('.bar-top .bar-user .avatar').attr('src', photo_src ); $('.bar-service .act-refresh-actor').click(); break; } // Закрыть фото форму closeAvatarForm(); } } }); }); // Закрыть форму аватара $('.avatar-form .act-close-avatar-form').click(function(){ closeAvatarForm(); }); // Закрыть форму аватара function closeAvatarForm(){ // Чистим форму $('.avatar-form .response').html(''); $('.avatar-form h1').html(''); $('.avatar-form .d-work-avatar').attr('src', '').attr('display', 'none'); // Закрываем форму $('.avatar-form .act-close-avatar-form').hide(); $('.avatar-form').hide(); } // Создание сокета для приема пуш-нотификаций от АТС Манго // socet_url - настройка в script.js.inc var socket = new WebSocket(socet_url); socket.onmessage = function(event) { showCallMode(); }; function phoneNumberOverIn(elem){ elem.css('background', 'green') elem.find('.act-ico').css('color', 'white'); elem.find('.phone_number').css('color', 'white'); } function phoneNumberOverOut(elem){ elem.css('background', 'inherit') var font_color = elem.attr('data-color'); // восстанавливаем цвет из атрибута elem.find('.act-ico').css('color', font_color); elem.find('.phone_number').css('color', font_color); } // Показать индикатор приема звонков в шапке function showPrivateCallStatus(){ if ( !$('.bar-top').length ) { return; } $('.loader').show(); $.ajax({ url: base_url + '/handler/get-actor.php', cache: false, type: "POST", data: { // Внутри get-actor.php будет определен текущий Сотрудник }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); data = $.parseJSON(json); // Режим приема телефонных звонков в шапке ajustPrivateCallStatus( data.actor.call_status); ajustPrivatePhoneList( data.actor.actor_phone, data.actor.actor_phone_ext, data.actor.actor_phone_customer ); } }); } // Отображение в шапке индиктора персонального Статуса телефонии function ajustPrivateCallStatus(v_call_status){ $('.bar-top .private-call-status').hide(); if (v_call_status == 'on' || v_call_status == 'paused'){ $('.bar-top .private-call-status[data-status="' + v_call_status + '"]').show(); } } // Отображение в шапке телефонных настроек пользователя function ajustPrivatePhoneList(v_phone, v_phone_ext, v_phone_customer){ var private_phone_list = ""; private_phone_list = (v_phone != null)? 'мобил. ' + v_phone + "" : ""; private_phone_list = private_phone_list + ( (v_phone_ext != null)? '
АТС доб. ' + v_phone_ext + "" : "" ); private_phone_list = private_phone_list + ( (v_phone_customer != null)? '
клиент ' + v_phone_customer + "" : "" ); $('.private-phone-list').html( private_phone_list ); } // Клик в шапке по персональному Статусу телефонии $('.bar-top .private-call-status').click(function(){ switch ( $(this).attr('data-status') ){ case 'on': var new_status = 'paused'; break; case 'paused': var new_status = 'on'; break; } // Изменяем статус в базе $('.loader').show(); $.ajax({ url: base_url + '/handler/put-user.php', cache: false, type: "POST", data: { action: 'call-status', user_id: null, status: new_status }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); // Меняем отображение индикатора ajustPrivateCallStatus(new_status); } }); }); // Показать форму дозвона - Экранный Телефон function showPhoneForm ( v_phone ){ if ( v_phone == null ) { exit; } $('.loader').show(); // Зачитываем данные по телефонному номеру $.ajax({ url: base_url + '/handler/phone/decode-abonent.php', cache: false, type: "POST", data: { phone: v_phone, phone_ext: null }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); // Показать кнопку "Закрыть" $('.phone-form .act-close-phone-form').show(); // Номер телефона $('.phone-form .phone_to').html( data.abonent.v_formated_phone ); // Телефонная трубка $('.phone-form .act-call-phone').show().css('opacity', 1.0); // Поля $('.phone-form .title').html( data.abonent.v_abonent_title ); $('.phone-form .name').html( data.abonent.v_abonent_name ); $('.phone-form .address').html( data.abonent.v_object_address ); // Показать форму телефона $('.phone-form').show().css('opacity', 1.0).center(); } }); } // Набрать номер $('.phone-form .act-call-phone').click(function(){ // Скрыть Телефонную трубку $(this).fadeTo('fast', 0, function(){ $(this).hide(); } ); // Скрыть окно формы телефона $('.phone-form').fadeTo('slow', 0, function(){ $(this).hide(); } ); // Выполняем соединение $('.loader').show(); $.ajax({ url: base_url + '/handler/phone/ats-mango-call.php', cache: false, type: "POST", data: { 'phone_to': $('.phone-form .phone_to').html() }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); } }); }); // Закрыть форму телефона - вызов $('.phone-form .act-close-phone-form').click(function(){ closePhoneForm(); }); // Закрыть форму телефона function closePhoneForm(){ $('.phone-form .act-close-phone-form').hide(); $('.phone-form').hide(); } // Показать страницу Звонки function showPhonePage(){ // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-phone .bar-body').scrollTop(); localStorage['phone_scroll_top'] = z_scrollTop; $('.page-phone .bar-body').css('opacity', '0.5'); $('.loader').show(); // Настройка отображения фильтра месяц-день $('.page-phone .act-view-mode-month, .page-phone .act-view-mode-day').removeClass('active'); switch (localStorage['view_mode_date']){ case 'VIEW_DAY': $('.page-phone .act-view-mode-day').addClass('active'); break; case 'VIEW_MONTH': $('.page-phone .act-view-mode-month').addClass('active'); break; } $.ajax({ url: base_url + '/handler/message/get-message-list.php', cache: false, type: "POST", data: { action: 'phone-total', view_mode_date: localStorage['view_mode_date'], phone_page_num: localStorage['phone_page_num'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-phone .bar-body').css('opacity', '1.0'); $('.page-phone .bar-phone').html( data ); // Выбор страницы в пагинаторе $('.page-phone .paginator i').click(function(){ localStorage['phone_page_num'] = $(this).html(); showPhonePage(); }); // При клике Показать плеер $('.act-show-audio').click(function(){ showAudioPlayer($(this)); }); } }); } // Обновить страницу $('.page-phone .act-reload-phone-page').click(function(){ showPhonePage(); }); // Фильтр по дням $('.page-phone .act-view-mode-day').click(function(){ localStorage['view_mode_date'] = 'VIEW_DAY'; showPhonePage(); }); // Фильтр по месяцам $('.page-phone .act-view-mode-month').click(function(){ localStorage['view_mode_date'] = 'VIEW_MONTH'; showPhonePage(); }); // Скопировать номер телефона $('.phone-form .act-copy-phone').click(function(){ let z_response = $('.phone-form .d-phone-response'); z_response.html('').hide(); $('.loader').show(); let z_phone = $('.phone-form .phone_to').html(); navigator.clipboard.writeText(z_phone) .then(() => { z_response.show().css('font', 'green').html('Скопировано'); $('.loader').hide(); }) .catch(error => { z_response.show().css('color', 'red').html('Не скопировано');; $('.loader').hide(); }); });// Показать дитэйл по смете function reloadWarranty ( v_task_id ){ $('.page-task-form .warranty-response').html('').hide(); $('.page-task-form .i-warranty').val( 'Загрузка...' ); $('.loader').show(); $.ajax({ url: base_url + '/handler/task/get-task.php', cache: false, type: "POST", data: { task_id: v_task_id, }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); var warranty = ( data.task.warranty != null )? data.task.warranty : ''; $('.page-task-form .i-warranty').val( warranty ); } }); } // Сохранить Гарантию $('.page-task-form .act-put-warranty').click(function(){ $('.page-task-form .warranty-response').html('').hide(); $('.loader').show(); $.ajax({ url: base_url + '/handler/task/put-task.php', cache: false, type: "POST", data: { 'action': 'warranty', 'task_id': $('.page-task-form .d-task_id').val(), 'warranty': $('.page-task-form .i-warranty').val() }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); $('.page-task-form .warranty-response').html( data.message ).attr('data-type', ((data.result < 0)? 'res-error' : 'res-ok')).show(); } }); });// Активация таба function showLogistTab(v_tab){ // Активируем выбранный пункт меню $('.page-logist .bar-header .tab').removeClass('on'); $('.page-logist .bar-header .tab[data-tab="' + v_tab + '"]').addClass('on'); // Активируем карточку выбранного таба $('.page-logist .tabcard').hide(); $('.page-logist .tabcard[data-tab="' + v_tab + '"]').show(); } // Нажатие на таб $('.page-logist .tab').click(function(){ // Активируем карточку выбранного таба showLogist( $(this).attr('data-tab'), true ); }); // Обновить $('.page-logist .act-reload-logist').click(function(){ showLogist( $('.page-logist .tab.on').attr('data-tab'), true ); }); // Активация режима меню function showLogist( v_tab, v_close_forms ){ if (v_close_forms) { // Закрыть формы редактирования Рейса или Машины, если те ещё открыты $('.page-logist .act-close-trip-form').click(); $('.page-logist .act-close-vehicle-form').click(); } switch (v_tab){ // Рейсы case 'trip': // Настройка отображения фильтра месяц-день $('.page-logist .act-view-mode-month, .page-logist .act-view-mode-day').removeClass('active').css('color', '#5590cc');; switch (localStorage['view_mode_date']){ case 'VIEW_DAY': $('.page-logist .act-view-mode-day').addClass('active').css('color', 'red'); break; case 'VIEW_MONTH': $('.page-logist .act-view-mode-month').addClass('active').css('color', 'red'); break; } showTotalTripList(); showTripStat(); break; // Автомобили case 'vehicle': showVehicleList(); break; } }// Открыть форму рейса для добавления нового $('.page-logist .act-add-trip').click(function(){ showTripForm( null ); $(this).hide(); }); // Статистика по рейсам function showTripStat() { $('.loader').show(); $.ajax({ url: base_url + '/handler/logist/get-trip-stat.php', cache: false, type: "POST", data: { view_mode_date: localStorage['view_mode_date'], begin: -6, end: 0 }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-logist .tabcard[data-tab="trip"] .trip-stat').html(data); } }); } // Список всех рейсов function showTotalTripList() { $('.loader').show(); $.ajax({ url: base_url + '/handler/logist/get-trip-list.php', cache: false, type: "POST", data: { view_mode_date: localStorage['view_mode_date'], trip_page_num: localStorage['trip_page_num'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-logist .tabcard[data-tab="trip"] .trip-list').html(data); // Выбор страницы в пагинаторе $('.page-logist .paginator i').click(function(){ localStorage['trip_page_num'] = $(this).html(); showTotalTripList(); }); // Клик на строку $('.page-logist .trip-list .trip-row').click(function(){ $('.page-logist .trip-list .trip-row .ext-row').css('display', 'none'); // Запоминаем рейс var trip_id = $(this).attr('data-trip_id'); localStorage['trip_id'] = trip_id; // Подсветка выбранного рейса $('.page-logist .trip-list .trip-row').removeClass('selected'); $(this).addClass('selected'); $(this).find('.ext-row').css('display', 'flex'); }); // Пытаемся восстановить контекст - выбрать рабочий рейс if (localStorage['trip_id'] > 0) { $('.page-logist .trip-list tr[data-trip_id = ' + localStorage['trip_id'] + ']').click(); } // Нажатие на кнопку: Показать форму редактирования $('.page-logist .trip-list .act-edit-trip').click(function(){ var elem = $(this).parent().parent().parent(); // Подсветка выбранного рейса elem.click(); // Открываем форму и позиционируем её showTripForm( elem.attr('data-trip_id') ); }); // Двойной клик на строку: то же что и кликнуть на кнопке "Редактировать рейс" $('.page-logist .trip-list tr[data-trip_id]').dblclick(function(){ // Подсветка выбранного рейса $(this).click(); // Редактировать рейс $(this).find('.act-edit-trip').click(); }); // Удалить рейс $('.trip-list .act-delete-trip').click(function () { var z_trip_id = $(this).parent().parent().parent().attr('data-trip_id'); deleteTrip( z_trip_id ); }); showLogistTab('trip'); } }); } // Список рейсов по заказу function showTaskTripList( v_task_id ) { $('.loader').show(); $('.page-task-form .trip-list').html('Ждите...'); $.ajax({ url: base_url + '/handler/logist/get-trip-list.php', cache: false, type: "POST", data: { task_id: v_task_id, view_mode_date: localStorage['view_mode_date'], trip_page_num: localStorage['trip_page_num'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-task-form .trip-list').html(data); // Клик на строку $('.page-task-form .trip-list tr[data-trip_id]').click(function(){ // Запоминаем рейс var trip_id = $(this).attr('data-trip_id'); localStorage['trip_id'] = trip_id; // Подсветка выбранного рейса $('.page-logist table.trip-list tr').removeClass('selected'); $(this).addClass('selected'); }); // Пытаемся восстановить контекст - выбрать рабочий рейс if (localStorage['trip_id'] > 0) { // console.log(localStorage['trip_id']); $('.page-task-form .trip-list tr[data-trip_id = ' + localStorage['trip_id'] + ']').click(); } // Отобразить кнопки действий при наведении на строку $('.page-task-form .trip-list tr[data-trip_id]').hover( function(){ $(this).find('div i.act-ico').css('visibility', 'visible'); $(this).addClass('over'); }, function(){ $(this).find('div i.act-ico').css('visibility', 'hidden'); $(this).removeClass('over'); } ); // Нажатие на кнопку: Показать форму редактирования $('.page-task-form .trip-list .act-edit-trip').click(function(){ var row = $(this).parent().parent(); // Подсветка выбранного рейса row.click(); // Открываем форму и позиционируем её showTripForm( row.attr('data-trip_id') ); }); // Двойной клик на строку: то же что и кликнуть на кнопке "Редактировать рейс" $('.page-task-form .trip-list tr[data-trip_id]').dblclick(function(){ // Подсветка выбранного рейса $(this).click(); // Редактировать рейс $(this).find('.act-edit-trip').click(); }); // showLogistTab('trip'); } }); } // Отобразить форму редактирования рейса, загрузить в неё данные function showTripForm( v_trip_id ) { $('.trip-form').hide(); $('.trip2salary-form .act-close-trip2salary-form').click(); $('.trip-form .act-close-trip-form').show(); $('.trip-form .bar-search-task').hide(); $('.trip-form .bar-task4trip-list').hide(); $('.trip-form .bar-add-point').hide(); $('.trip-form .response').html('').attr('data-type', '').hide(); $('.trip-form .bar-show-point-form').show(); $('.trip-form .point-list').html(''); $('.trip-form .i-cost1km').val(''); $('.trip-form .i-cost').val(''); if (v_trip_id != null) { $('.trip-form').attr('data-action', 'edit'); $('.trip-form .d-trip_id').val( v_trip_id ); $('.trip-form h1').html( 'Редактировать рейс' ); $('.loader').show(); $.ajax({ url: base_url + '/handler/logist/get-trip.php', cache: false, type: "POST", data: { trip_id: v_trip_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); //console.log(json); data = $.parseJSON(json); //console.log(data); $('.trip-form .d-trip_id').val(data.trip.trip_id); var z_wdate = data.trip.wdate; $('.trip-form .i-wdate').val( z_wdate ); var z_trip_number = data.trip.trip_number; $('.trip-form .i-trip_number').val(z_trip_number); var z_vehicle_id = data.trip.vehicle_id; $('.trip-form .i-vehicle_id').val(z_vehicle_id); if (data.trip.odometer_begin != null){ var z_odometer_begin = number_format(data.trip.odometer_begin, 0, '', ''); } else { var z_odometer_begin = ''; } $('.trip-form .i-odometer_begin').val(z_odometer_begin); // $('.trip-form .i-odometer_begin').focus(); if (data.trip.odometer_end != null){ var z_odometer_end = number_format(data.trip.odometer_end, 0, '', ''); } else { var z_odometer_end = ''; } $('.trip-form .i-odometer_end').val(z_odometer_end); if (data.trip.distance != null){ var z_distance = number_format(data.trip.distance, 0, '', ''); } else { var z_distance = ''; } $('.trip-form .i-distance').val(z_distance); if (data.trip.cost != null){ var z_cost = number_format(data.trip.cost, 2, '.', ''); } else { var z_cost = ''; } $('.trip-form .i-cost').val(z_cost); //console.log('data.trip.salary_sum=' + data.trip.salary_sum); reloadTrip2Salary(v_trip_id, data.trip.cost, data.trip.salary_sum); $('.trip-form .act-put-trip').html('Сохранить').attr('title', 'Сохранить рейс'); $('.page-logist .act-delete-trip').show(); $('.trip-form .bar-point-list').show(); reloadPointList(v_trip_id); updateTripForm(); $('.trip-form').show().center(); } }); } else { $('.trip-form').attr('data-action', 'add'); $('.trip-form .d-trip_id').val(''); $('.trip-form h1').html( 'Новый рейс' ); $('.trip-form .i-vehicle_id').val(''); $('.trip-form .i-trip_number').val('автоматически'); $('.trip-form .i-wdate').val( moment().format('YYYY-MM-DD') ); $('.trip-form .i-odometer_begin').val(''); $('.trip-form .i-odometer_end').val(''); $('.trip-form .i-distance').val(''); $('.trip-form .act-put-trip').html('Создать рейс').attr('title', 'Создать новый рейс'); $('.page-logist .act-delete-trip').hide(); $('.trip-form .bar-point-list').hide(); updateTripForm(); $('.trip-form').show().center(); } } function updateTripForm(){ // Пересчёт пробега по показаниям одометра var odometer_begin = parseFloat( $('.trip-form .i-odometer_begin').val() ); var odometer_end = parseFloat( $('.trip-form .i-odometer_end').val() ); if ( !isNaN(odometer_begin) && !isNaN(odometer_end) ){ var distance = odometer_end - odometer_begin; if (distance > 0) { $('.trip-form .i-distance').val(distance); } } // Стоимость 1 км для выбранного автомобиля var cost1km = $('.trip-form .vehicle-selector .i-vehicle_id option:selected').attr('data-cost1km'); $('.trip-form .i-cost1km').val( cost1km ); // Стоимость рейса var cost = parseFloat( $('.trip-form .i-cost').val() ); var distance = parseFloat( $('.trip-form .i-distance').val() ); var cost1km = parseFloat( $('.trip-form .i-cost1km').val() ); if ( !isNaN(cost) ){ $('.trip-form .bar-cost').show(); $('.trip-form .act-set-cost').show(); } else { $('.trip-form .bar-cost').hide(); $('.trip-form .act-set-cost').hide(); } // Настройка полей ввода if ( !isNaN(distance) && !isNaN(cost1km) ){ var cost_actual = distance * cost1km; if ( cost_actual != cost ) { $('.trip-form .i-cost_actual').val( number_format(cost_actual, 2, '.', '') ); $('.trip-form .bar-cost_actual').show(); } else { $('.trip-form .i-cost_actual').val(''); $('.trip-form .bar-cost_actual').hide(); } } else { $('.trip-form .i-cost_actual').val(''); $('.trip-form .bar-cost_actual').hide(); } } $('.trip-form .i-odometer_begin, .trip-form .i-odometer_end, .trip-form .i-distance') .keyup(function(){ updateTripForm(); }) .change(function(){ updateTripForm(); }); // Присвоить стоимость рейса из поля актуальная стоимость рейса $('.trip-form .act-set-cost').click( function () { var cost = $('.trip-form .i-cost_actual').val(); $('.trip-form .i-cost').val( cost ); updateTripForm(); } ); // Показать форму поиска заказа для точки маршрута $('.trip-form .act-show-point-form').click(function(){ $('.trip-form .bar-show-point-form').hide(); $('.trip-form .bar-search-task').show(); $('.trip-form .bar-task4trip-list').hide(); $('.trip-form .bar-add-point').hide(); $('.trip-form .search-response').hide(); $('.trip-form .i-agreement_num').val('').focus(); }); // Показать форму выбора из нераспределенных заказов $('.trip-form .act-show-task4trip-form').click(function(){ $('.trip-form .bar-show-point-form').hide(); $('.trip-form .bar-search-task').hide(); $('.trip-form .bar-task4trip-list').show(); $('.trip-form .i-task4trip-remark').val(''); // Загрузка списка нераспределенных заказов $('.trip-form .task4trip-list').load( '/handler/logist/get-task4trip-list.php' , function () { $('.trip-form .task4trip-list tr:first-child').addClass('selected'); // Клик на строку $('.trip-form .task4trip-list tr[data-task_id]').click(function(){ // Подсветка выбранного заказа $('.trip-form .task4trip-list tr').removeClass('selected'); $(this).addClass('selected'); }); // Отобразить при наведении на строку $('.task4trip-list tr[data-task_id]').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Добавить заказ в маршрут $('.trip-form .act-add-task4trip').click( function(){ var z_task_id = $('.trip-form .task4trip-list tr.selected').attr('data-task_id'); var z_trip_id = $('.trip-form .d-trip_id').val(); var z_remark = $('.trip-form .i-task4trip-remark').val(); addTask2Trip (z_trip_id, z_task_id, z_remark); } ); $('.trip-form .act-cancel-add-task4trip').click( function(){ $('.trip-form .act-cancel-add-point').click(); } ); } ); $('.trip-form .bar-add-point').hide(); $('.trip-form .search-response').hide(); }); // Поиск заказа по его номеру $('.trip-form .act-search-task').click(function(){ $('.trip-form .search-response').html('').hide(); $('.loader').show(); var searchbtn = $(this); searchbtn.addClass('disable'); $.ajax({ url: base_url + '/handler/task/search-task-agreement_num.php', type: "POST", data: { agreement_num: $('.trip-form .i-agreement_num').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); searchbtn.removeClass('disable'); var data = $.parseJSON(json); if (data.result > 0) { // Заказ найден $('.trip-form .d-task_id').val( data.task_id ); $('.trip-form .i-agreement_num').val( data.agreement_num ); $('.trip-form .bar-search-task').hide(); $('.trip-form .point-descr').html( 'Найден заказ: ' + data.agreement_num + ' от ' + data.agreement_date_ddmmyyyy + ': ' + data.object_address + ', ' + data.customer_name ).show(); $('.trip-form .bar-add-point').show(); $('.trip-form .i-point-remark').val('').focus(); } else { // Заказ не найден $('.trip-form .search-response').html('Заказ не найден!').show().css('color', 'red'); } } }); }); // Добавление точки маршрута $('.trip-form .act-add-point').click(function() { var z_trip_id = $('.trip-form .d-trip_id').val(); var z_task_id = $('.trip-form .d-task_id').val(); var z_remark = $('.trip-form .i-point-remark').val(); addTask2Trip (z_trip_id, z_task_id, z_remark); }); function addTask2Trip (v_trip_id, v_task_id, v_remark){ $('.loader').show(); $('.trip-form .add-response').html('').hide(); $.ajax({ url: base_url + '/handler/logist/put-point.php', type: "POST", data: { action: 'add', trip_id: v_trip_id, task_id: v_task_id, point_remark: v_remark }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); reloadPointList(v_trip_id); $('.trip-form .act-cancel-add-point').click(); showTotalTripList(); } }); } // Отмена добавления точки маршрута $('.trip-form .act-cancel-add-point').click(function () { $('.trip-form .bar-show-point-form').show(); $('.trip-form .bar-search-task').hide(); $('.trip-form .bar-task4trip-list').hide(); $('.trip-form .bar-add-point').hide(); $('.trip-form .point-descr').html('').hide(); $('.trip-form .search-response').hide(); $('.trip-form .i-agreement_num').val('').focus(); }); // Сохранить форму добавления / редактирования рейса $('.trip-form .act-put-trip').click(function(){ $('.loader').show(); $('.trip-form .response').html('').hide(); // Проверка корректности даты var wdate = ''; var m = $('.trip-form .i-wdate').val(); if (m != '') { if ( !moment( m, "YYYY-MM-DD").isValid() ) { $('.trip-form .i-wdate').focus(); alert('Недопустимое значение даты!'); return; } else { wdate = m; } } var z_action = $('.trip-form').attr('data-action'); var z_cost = ''; if ( $('.trip-form .i-cost').val() != ''){ z_cost = $('.trip-form .i-cost').val(); } else if ( $('.trip-form .i-cost_actual').val() != ''){ z_cost = $('.trip-form .i-cost_actual').val(); } $.ajax({ url: base_url + '/handler/logist/put-trip.php', type: "POST", data: { action: z_action, trip_id: $('.trip-form .d-trip_id').val(), vehicle_id: $('.trip-form .i-vehicle_id').val(), wdate: wdate, odometer_begin: $('.trip-form .i-odometer_begin').val(), odometer_end: $('.trip-form .i-odometer_end').val(), distance: $('.trip-form .i-distance').val(), cost: z_cost }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); if (data.result < 0) { $('.trip-form .response').html(data.message).attr('data-type', 'res-error').show(); } else { switch (z_action){ case 'add': // Переводим форму в режим редактироания $('.trip-form').attr('data-action', 'edit'); $('.trip-form .act-put-trip').html('Сохранить'); $('.trip-form .d-trip_id').val(data.trip_id); $('.trip-form .i-trip_number').val(data.trip_number); showLogist('trip', false); $('.trip-form .bar-point-list').show(); reloadPointList(data.trip_id); break; case 'edit': $('.trip-form .act-close-trip-form').click(); showLogist('trip', true); break; } } } }); }); function deleteTrip (v_trip_id) { if ( confirm('Удалить рейс без возможности восстановления?') ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/logist/put-trip.php', type: "POST", data: { action: 'delete', trip_id: v_trip_id }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); if (data.result < 0) { $('.trip-form .response').html(data.message).attr('data-type', 'res-error').show(); } else { $('.trip-form .act-close-trip-form').click(); showLogist('trip', true); } } }); } } // Закрыть форму рейса $('.act-close-trip-form').click(function(){ $(this).hide(); $('.trip-form').hide(); $('.page-logist .act-add-trip').show(); }); // Фильтр по дням $('.page-logist .act-view-mode-day').click(function(){ localStorage['view_mode_date'] = 'VIEW_DAY'; showLogist('trip', true); }); // Фильтр по месяцам $('.page-logist .act-view-mode-month').click(function(){ localStorage['view_mode_date'] = 'VIEW_MONTH'; showLogist('trip', true); }); // Загрузка блока начисления в зарплату function reloadTrip2Salary(v_trip_id, v_cost, v_salary_sum) { $('.loader').show(); $.ajax({ url: base_url + '/handler/logist/get-trip2salary.php', cache: false, type: "POST", data: { trip_id: v_trip_id, cost: v_cost, salary_sum: v_salary_sum }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.trip-form .trip2salary').html(data); $('.trip2salary-form .i-remark').val( 'Рейс ' + $('.trip-form .i-trip_number').val() + ' от ' + moment( $('.trip-form .i-wdate').val() ).format('DD.MM.YYYY') ); // Кнопка - Показать форму начисления зарплаты по рейсу $('.act-show-trip2salary-form').unbind('click'); $('.act-show-trip2salary-form').click(function(){ $('.trip2salary-form .i-date').val( moment().format('YYYY-MM-DD') ); $('.trip2salary-form .act-close-trip2salary-form').show(); $('.trip2salary-form .bar-actor_id').html( $('.sv-salary-actor-list').html() ); $('.trip2salary-form .i-trip2salary_amount').val( $('.sv-trip2salary_amount').val() ); $('.trip2salary-form .d-salary_sum_display').html( $('.sv-salary_sum_display').val() ); $('.trip2salary-form').show().center(); }); // Кнопка - Начислить заработную плату по рейсу $('.trip2salary-form .act-trip2salary').unbind('click'); $('.trip2salary-form .act-trip2salary').click(function(){ var v_trip2salary_amount = parseFloat( $('.trip2salary-form .i-trip2salary_amount').val().replace(/ /gi, '') ); putTripToSalary( v_trip_id, $('.trip2salary-form .i-actor_id').val(), $('.trip2salary-form .i-date').val(), v_trip2salary_amount, $('.trip2salary-form .i-remark').val() ); }); } }); } // Кнопка - Закрыть форму начисления зарплаты по рейсу $('.trip2salary-form .act-close-trip2salary-form').click(function(){ $('.trip2salary-form .act-close-trip2salary-form').hide(); $('.trip2salary-form').hide(); }); // Начислить заработную плату function putTripToSalary ( v_trip_id, v_actor_id, v_date, v_amount, v_remark ){ // Проверка корректности даты if (v_date != '') { if ( !moment( v_date, "YYYY-MM-DD").isValid() ) { $('.margin2salary-form .i-date').focus(); alert('Недопустимое значение даты!'); return; } } else { alert('Введите дату!'); return; } if ( confirm('Начислить сотруднику заработную плату?') ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/salary/put-salary.php', type: "POST", data: { action: 'add', trip_id : v_trip_id, actor_id: v_actor_id, amount: v_amount, date: v_date, remark: v_remark }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); showTripForm( v_trip_id ); showTotalTripList(); } }); } } // Загрузка списка точек маршрута function reloadPointList(v_trip_id) { $('.loader').show(); $.ajax({ url: base_url + '/handler/logist/get-point-list.php', cache: false, type: "POST", data: { trip_id: v_trip_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.trip-form .point-list').html(data); $('.trip-form').show().center(); // Удалить точку $('.trip-form .point-list .act-delete-point').click(function(){ deletePoint( $(this).parent().parent().attr('data-point_id'), v_trip_id ); }); // Отобразить кнопки действий при наведении на строку $('.page-logist .point-list tr[data-point_id]').hover( function(){ $(this).find('.act-delete-point').css('visibility', 'visible'); $(this).css('background', '#FFC'); }, function(){ $(this).find('.act-delete-point').css('visibility', 'hidden'); $(this).css('background', '#fff'); } ); } }); } // Удалить точку маршрута function deletePoint( v_point_id, v_trip_id ){ if (confirm('Удалить точку маршрута?')) { $('.loader').show(); $.ajax({ url: base_url + '/handler/logist/put-point.php', cache: false, type: "POST", data: { action: 'delete', point_id: v_point_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); reloadPointList( v_trip_id ); } }); } }// Открыть форму автомобиля для добавления нового $('.page-logist .act-add-vehicle').click(function(){ showVehicleForm( null ); $(this).hide(); }); function showVehicleList() { $('.loader').show(); $.ajax({ url: base_url + '/handler/logist/get-vehicle-list.php', cache: false, type: "POST", data: { }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-logist .vehicle-list').html(data); // Отобразить кнопки действий при наведении на строку $('.page-logist .vehicle-list tr').hover( function(){ $(this).find('td i.act-ico').css('visibility', 'visible'); $(this).css('background', '#FFC'); }, function(){ $(this).find('td i.act-ico').css('visibility', 'hidden'); $(this).css('background', '#fff'); } ); // Нажатие на кнопку: Показать форму редактирования $('.page-logist .vehicle-list .act-show-vehicle-form').click(function(){ var row = $(this).parent().parent(); showVehicleForm( row.attr('data-vehicle_id') ); }); // Двойной клик на строку: то же что и кликнуть на кнопке "Редактировать автомобиль" $('.page-logist .vehicle-list tr[data-vehicle_id]').dblclick(function(){ $(this).find('.act-show-vehicle-form').click(); }); showLogistTab('vehicle'); } }); } function adjustLogistPage(){ // Загрузка списка автомобилей $('.trip-form .vehicle-selector').load( '/handler/logist/get-vehicle-selector.php' , function(){ $('.trip-form .vehicle-selector .i-vehicle_id').change(function(){ updateTripForm(); }); } ); } // Загрузка списка сотрудников, закрепленных за автомобилем function reloadActor2VehicleList(v_vehicle_id) { $('.page-logist .vehicle-form .actor2vehicle-list').show().html('Загрузка...'); $('.page-logist .vehicle-form .bar-actor2vehicle-list').show(); $('.loader').show(); $.ajax({ url: base_url + '/handler/logist/get-actor2vehicle-list.php', cache: false, type: "POST", data: { vehicle_id: v_vehicle_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-logist .vehicle-form .actor2vehicle-list').html(data); // Удалить привязку сотрудника $('.page-logist .vehicle-form .actor2vehicle-list .act-delete-actor2vehicle').click(function(){ deleteActor2Vehicle( $(this).parent().parent().attr('data-actor2vehicle_id'), v_vehicle_id ); }); // Отобразить кнопки действий при наведении на строку $('.page-logist .actor2vehicle-list tr[data-actor2vehicle_id]').hover( function(){ $(this).find('.act-delete-actor2vehicle').css('visibility', 'visible'); $(this).css('background', '#FFC'); }, function(){ $(this).find('.act-delete-actor2vehicle').css('visibility', 'hidden'); $(this).css('background', '#fff'); } ); } }); } // Удалить закрепление сотрудника function deleteActor2Vehicle( v_actor2vehicle_id, v_vehicle_id ){ if (confirm('Открепить сотрудника?')) { $('.loader').show(); $.ajax({ url: base_url + '/handler/logist/put-actor2vehicle.php', cache: false, type: "POST", data: { action: 'delete', actor2vehicle_id: v_actor2vehicle_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); reloadActor2VehicleList( v_vehicle_id ); } }); } } function adjustVehicleForm(){ // Загрузка списка сотрудников и их групп $('.page-logist .vehicle-form .agroup-actor-selector').load( '/handler/logist/get-agroup-actor-selector.php'); $('.page-logist .vehicle-form').center(); } // Отобразить форму редактирования автомобиля, загрузить в неё данные function showVehicleForm( v_vehicle_id ){ $('.page-logist .vehicle-form').hide(); $('.page-logist .act-close-vehicle-form').show(); $('.page-logist .vehicle-form .response').html('').attr('data-type', '').hide(); if (v_vehicle_id != null) { $('.page-logist .vehicle-form').attr('data-action', 'edit'); $('.page-logist .vehicle-form .d-vehicle_id').val( v_vehicle_id ); var z_tr = $('.page-logist .vehicle-list tr[data-vehicle_id="' + v_vehicle_id + '"]'); var z_vehicle_name = z_tr.find('td.vehicle-name').html(); $('.page-logist .vehicle-form .i-vehicle_name').val(z_vehicle_name); var z_vehicle_number = z_tr.find('td div').attr('data-vehicle_number'); $('.page-logist .vehicle-form .i-vehicle_number').val(z_vehicle_number); var z_cost1km = z_tr.find('td.cost1km').html(); $('.page-logist .vehicle-form .i-cost1km').val(z_cost1km); $('.page-logist .vehicle-form .bar-actor2vehicle-list').show(); $('.page-logist .vehicle-form .bar-show-add-actor2vehicle').show(); $('.page-logist .act-delete-vehicle').show(); $('.page-logist .vehicle-form .act-put-vehicle').html('Сохранить').attr('title', 'Сохранить автомобиль'); reloadActor2VehicleList(v_vehicle_id); } else { $('.page-logist .vehicle-form').attr('data-action', 'add'); $('.page-logist .vehicle-form .d-vehicle_id').val(''); $('.page-logist .vehicle-form .i-vehicle_name').val(''); $('.page-logist .vehicle-form .i-vehicle_number').val(''); $('.page-logist .vehicle-form .i-cost1km').val(''); $('.page-logist .vehicle-form .bar-actor2vehicle-list').hide(); $('.page-logist .vehicle-form .actor2vehicle-list').hide(); $('.page-logist .vehicle-form .act-put-vehicle').html('Сохранить').attr('title', 'Сохранить'); $('.page-logist .vehicle-form .act-delete-vehicle').hide(); } $('.page-logist .vehicle-form .bar-add-actor2vehicle').hide(); $('.page-logist .vehicle-form').show().center(); $('.page-logist .vehicle-form .i-vehicle_name').focus(); } // Закрыть форму автомобиля $('.page-logist .act-close-vehicle-form').click(function(){ $(this).hide(); $('.page-logist .vehicle-form').hide(); $('.page-logist .act-add-vehicle').show(); }); // Сохранить форму добавления / редактирования автомобиля $('.page-logist .vehicle-form .act-put-vehicle').click(function(){ $('.loader').show(); $('.page-logist .vehicle-form .response').html('').hide(); var z_action = $('.page-logist .vehicle-form').attr('data-action'); $.ajax({ url: base_url + '/handler/logist/put-vehicle.php', type: "POST", data: { action: z_action, vehicle_id: $('.page-logist .vehicle-form .d-vehicle_id').val(), vehicle_name: $('.page-logist .vehicle-form .i-vehicle_name').val(), vehicle_number: $('.page-logist .vehicle-form .i-vehicle_number').val(), cost1km: $('.page-logist .vehicle-form .i-cost1km').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); if (data.result < 0) { $('.page-logist .vehicle-form .response').html(data.message).attr('data-type', 'res-error').show(); } else { $('.page-logist .vehicle-form .act-close-vehicle-form').click(); adjustLogistPage(); showLogist('vehicle', true); switch (z_action){ case 'add': // Переводим форму в режим редактироания $('.page-logist .vehicle-form').attr('data-action', 'edit'); $('.page-logist .vehicle-form .act-put-vehicle').html('Сохранить'); $('.page-logist .vehicle-form .d-vehicle_id').val(data.vehicle_id); $('.page-logist .vehicle-form .i-vehicle_name').val(data.vehicle_name); $('.page-logist .vehicle-form .i-vehicle_number').val(data.vehicle_number); $('.page-logist .vehicle-form .i-cost1km').val(data.cost1km); showLogist('vehicle', false); $('.page-logist .vehicle-form .bar-actor2vehicle-list').show(); reloadActor2VehicleList(data.vehicle_id); break; case 'edit': $('.page-logist .vehicle-form .act-close-vehicle-form').click(); showLogist('vehicle', true); break; } } } }); }); // Показать форму добавления ответственного за автомобиль сотрудника $('.page-logist .vehicle-form .act-show-add-actor2vehicle').click(function(){ $('.page-logist .vehicle-form .bar-show-add-actor2vehicle').hide(); $('.page-logist .vehicle-form .bar-add-actor2vehicle').show(); adjustVehicleForm(); $('.page-logist .vehicle-form .agroup-actor-selector').val('').focus(); }); // Добавление к автомобилю закрепленного сотрудника $('.page-logist .vehicle-form .act-add-actor2vehicle').click(function() { $('.loader').show(); var z_vehicle_id = $('.page-logist .vehicle-form .d-vehicle_id').val(); $.ajax({ url: base_url + '/handler/logist/put-actor2vehicle.php', type: "POST", data: { action: 'add', vehicle_id: z_vehicle_id, actor_id: $('.page-logist .vehicle-form .agroup-actor-selector option:selected').attr('data-actor_id') }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); $('.page-logist .vehicle-form .act-cancel-add-actor2vehicle').click(); reloadActor2VehicleList(z_vehicle_id); showVehicleList(); } }); }); // Отмена добавления к автомобилю закрепленного сотрудника $('.page-logist .vehicle-form .act-cancel-add-actor2vehicle').click(function () { $('.page-logist .vehicle-form .bar-show-add-actor2vehicle').show(); $('.page-logist .vehicle-form .bar-show-actor2vehicle-form').hide(); $('.page-logist .vehicle-form .bar-add-actor2vehicle').hide(); }); // Удалить автомобиль $('.page-logist .vehicle-form .act-delete-vehicle').click(function () { if ( confirm('Удалить автомобиль без возможности восстановления?') ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/logist/put-vehicle.php', type: "POST", data: { action: 'delete', vehicle_id: $('.page-logist .vehicle-form .d-vehicle_id').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); var data = $.parseJSON(json); if (data.result < 0) { $('.page-logist .vehicle-form .response').html(data.message).attr('data-type', 'res-error').show(); } else { $('.page-logist .vehicle-form .act-close-vehicle-form').click(); adjustLogistPage(); showLogist('vehicle', true); } } }); } }); // Загрузка страницы Заказ-Доставка function showTaskDeliveryTab(){ var v_task_id = $('.page-task-form .d-task_id').val(); $('.loader').show(); $.ajax({ url: base_url + '/handler/delivery/get-task-delivery-control.php', cache: false, type: "POST", data: { task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-task-form .bar-delivery-control').html(data); // Вызвать Расчет доставки в случае изменения полей $('.page-task-form .i-trip_count, .page-task-form .i-distance') .keyup(function(){ calcDeliveryCost( v_task_id ); }) .change(function(){ calcDeliveryCost( v_task_id ); }); // Добавить Доставку к заказу $('.page-task-form .act-add-delivery').click(function(){ putTaskDelivery(v_task_id, 'add'); }); // Построить маршрут в Яндексе $('.page-task-form .act-show-yandex-route').click(function(evt){ showYandexRoute(evt); }); // Сохранить Доставку $('.page-task-form .act-save-delivery').click(function(){ putTaskDelivery(v_task_id, 'save'); }); $('.page-task-form .tabcard[data-tab="delivery"] .i-delivery_cost_client').change(function(){ let z_delivery_cost_client = parseFloat( $(this).val() ); $('.page-task-form .tabcard[data-tab="delivery"] .d-delivery_cost_client').val(z_delivery_cost_client); }); $('.page-task-form .tabcard[data-tab="delivery"] .i-delivery_cost_actor').change(function(){ let z_delivery_cost_actor = parseFloat( $(this).val() ); $('.page-task-form .tabcard[data-tab="delivery"] .d-delivery_cost_actor').val(z_delivery_cost_actor); }); /* // Рассчитать стоимость Доставки $('.page-task-form .act-calc-delivery_amount').click(function(){ calcDeliveryCost( v_task_id ); }); */ /* // Удалить Доставку из Заказа $('.page-task-form .act-remove-delivery').click(function(){ putTaskDelivery(v_task_id, 'remove'); }); */ // Закрыть страницу заказа $('.page-task-form .act-close-task').click(function(){ // Скрываем кнопку, т.к. ее видимость используется в работе глобального Esc $(this).hide(); // Восстанавливаем вызывающий контекст showPage( localStorage['work_mode'] ); }); } }); } // Построить маршрут в Яндексе function showYandexRoute(evt){ var z_from_lat = $('.page-task-form .select-store_id option:selected').attr('lat'); var z_from_lng = $('.page-task-form .select-store_id option:selected').attr('lng'); if (z_from_lat == '' || z_from_lng == '') { alert('Для прокладки маршрута в Настройках складов укажите Широту и Долготу выбранного склада!'); return; } var z_object_lat = $('.page-task-form .d-object_lat').val(); var z_object_lng = $('.page-task-form .d-object_lng').val(); if (z_object_lat == '' || z_object_lng == '') { alert('Для прокладки маршрута укажите Широту и Долготу объекта!'); return; } // Внимание! Для новых складов координаты нач точки маршрута вычитывать из базы!!!!! var z_href = 'https://yandex.ru/maps/?rtext=' + z_from_lat + ',' + z_from_lng + '~' + z_object_lat + ',' + z_object_lng + '&rtt=auto&l=map,trf'; evt.preventDefault(); window.open(z_href, '_blank'); } function calcDeliveryCost( v_task_id ){ let z_distance = parseFloat( $('.page-task-form .tabcard[data-tab="delivery"] .i-distance').val() ); let z_trip_count = parseInt( $('.page-task-form .tabcard[data-tab="delivery"] .i-trip_count').val() ); let z_delivery_price_client = parseFloat( $('.page-task-form .tabcard[data-tab="delivery"] .d-delivery_price_client').val() ); let z_delivery_price_actor = parseFloat( $('.page-task-form .tabcard[data-tab="delivery"] .d-delivery_price_actor').val() ); let z_min_delivery_cost_client = z_trip_count * parseFloat( $('.page-task-form .tabcard[data-tab="delivery"] .d-min_delivery_cost_1_trip_client').val() ); let z_min_delivery_cost_actor = z_trip_count * parseFloat( $('.page-task-form .tabcard[data-tab="delivery"] .d-min_delivery_cost_1_trip_actor').val() ); // Стоимость Доставки Клиент if (!isNaN(z_distance) && z_distance != ''){ let z_delivery_cost_client = z_distance * z_trip_count * z_delivery_price_client; // Корректировка мин стоимости if ( z_delivery_cost_client < z_min_delivery_cost_client ){ z_delivery_cost_client = z_min_delivery_cost_client; } $('.page-task-form .tabcard[data-tab="delivery"] .d-delivery_cost_client').val(z_delivery_cost_client); $('.page-task-form .tabcard[data-tab="delivery"] .i-delivery_cost_client').val( number_format( z_delivery_cost_client, '2', '.', ' ') ); } else { $('.page-task-form .tabcard[data-tab="delivery"] .i-delivery_cost_client').val(''); } // Стоимость Доставки Сотрудник if (!isNaN(z_distance) && z_distance != ''){ var z_delivery_cost_actor = z_distance * z_trip_count * z_delivery_price_actor; // Корректировка мин стоимости if ( z_delivery_cost_actor < z_min_delivery_cost_actor ){ z_delivery_cost_actor = z_min_delivery_cost_actor; } $('.page-task-form .tabcard[data-tab="delivery"] .d-delivery_cost_actor').val(z_delivery_cost_actor); $('.page-task-form .tabcard[data-tab="delivery"] .i-delivery_cost_actor').val( number_format( z_delivery_cost_actor, '2', '.', ' ') ); } else { $('.page-task-form .tabcard[data-tab="delivery"] .i-delivery_cost_actor').val(''); } } // Сохранить Доставку в заказе function putTaskDelivery(v_task_id, v_action){ // Проверка корректности числа рейсов let z_trip_count = $('.page-task-form .tabcard[data-tab="delivery"] .i-trip_count').val(); if (z_trip_count < 1 || z_trip_count > 10){ alert('Ошибка! Допустимое количество рейсов - 1...10'); $('.page-task-form .tabcard[data-tab="delivery"] .i-trip_count') .css('background-color', 'red') .animate({ backgroundColor: "white" }, 1000 ) .val('1') .focus(); return; } // Сохраняем доставку $('.loader').show(); $.ajax({ url: base_url + '/handler/delivery/put-tast-delivery.php', cache: false, type: "POST", data: { action: v_action, task_id: v_task_id, store_id: $('.page-task-form .tabcard[data-tab="delivery"] .select-store_id').val(), trip_count: $('.page-task-form .tabcard[data-tab="delivery"] .i-trip_count').val(), // direction_id: $('.page-task-form .tabcard[data-tab="delivery"] .select-direction_id').val(), distance: $('.page-task-form .tabcard[data-tab="delivery"] .i-distance').val(), cost_client: $('.page-task-form .tabcard[data-tab="delivery"] .d-delivery_cost_client').val(), cost_actor: $('.page-task-form .tabcard[data-tab="delivery"] .d-delivery_cost_actor').val() }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); showTaskDeliveryTab(v_task_id); } }); } // Сохранить Доставку в настройках $('.page-settings .act-put-delivery-settings').click(function(){ putSettingsDelivery( ); }); // Сохранить Доставку в настройках function putSettingsDelivery(){ $('.loader').show(); $('.page-settings .delivery-response').html('').hide(); $.ajax({ url: base_url + '/handler/delivery/put-settings-delivery.php', cache: false, type: "POST", dataType: 'json', data: { delivery_cost1km_client: $('.page-settings .i-1km_delivery_cost_client').val(), min_delivery_cost_client: $('.page-settings .i-min_delivery_cost_client').val() }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); if (data.result < 0) { $('.page-settings .response').html(data.message).attr('data-type', 'res-error').show(); } else { $('.page-settings .response').html(data.message).attr('data-type', 'res-ok').show(); } } }); } // Загрузка страницы Настройка-Доставка function showSettingsDelivery(){ $('.loader').show(); $('.page-settings .response').html('').hide(); $.ajax({ url: base_url + '/handler/delivery/get-settings-delivery.php', cache: false, type: "POST", dataType: "json", data: { }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-settings .i-1km_delivery_cost_client').val( data.delivery_cost1km_client ); $('.page-settings .i-min_delivery_cost_client').val( data.min_delivery_cost_1_trip_client ); } }); }// Клик - Открыть редактор Прихода-Расхода $('.page-store .act-show-itemflow-editor').click(function(){ showItemflowEditor(); }); // Открытие редактора Прихода-Расхода function showItemflowEditor(){ $('.itemflow-editor .catalog').html(''); $('.itemflow-editor .response').html('').hide(); $('.itemflow-editor .act-show-note').show(); $('.itemflow-editor .bar-note').hide(); $('.itemflow-editor .i-note').val(''); $('.itemflow-editor .d-item_id').val(''); $('.itemflow-editor .i-item_name').val(''); $('.itemflow-editor .i-value').val(''); $('.itemflow-editor .i-store_id').val( localStorage['store_id'] ); $('.itemflow-editor .bar-itemflow-params').hide(''); $('.itemflow-editor .bar-catalog').show(''); // Очищаем поиск по каталогу localStorage.removeItem('search_catalog_keywords'); $('.itemflow-editor .i-search-catalog').val('').attr('placeholder', 'Поиск товара в каталоге...'); // Показать каталог showItemflowCatalog(); adjustItemflowEditor(null); $('.itemflow-editor .act-close-itemflow-editor').show(); $('.itemflow-editor').show(); } // Поднастройка редактора Прихода-Расхода function adjustItemflowEditor(v_item_id){ if (v_item_id != null) { $('.loader').show(); $.ajax({ url: base_url + '/handler/store/get-item-on-stores-info.php', cache: false, type: "POST", data: { item_id: v_item_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); console.log( data.item_on_store_list_for_selector ); $('.itemflow-editor .i-store_id').html( data.item_on_store_list_for_selector ); } }); } else { return; } } // Закрыть редактор Прихода-Расхода $('.itemflow-editor .act-close-itemflow-editor').click(function(){ $('.itemflow-editor').hide(); $(this).hide(); // Обновить список товаров на складах для актуализации $('.page-store .act-reload-store').click(); }); // Показать в редакторе Прихода-Расходоа каталог товаров для склада function showItemflowCatalog() { $('.itemflow-editor .catalog').html('Загрузка...'); var z_keywords = localStorage['search_catalog_keywords']; // Чтение из хранилища $('.loader').show(); $.ajax({ url: base_url + '/handler/itemflow/get-itemflow-catalog.php', cache: false, type: "POST", data: { search_catalog_keywords: z_keywords }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.itemflow-editor .catalog').html(data); // Отобразить фон и цены при наведении мышкой на строку $('.itemflow-editor tr.item-row').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Клик по строке группы - Показать или скрыть товары в группе $('.itemflow-editor tr.igroup-row').click(function(){ var group_id = $(this).attr('data-group_id'); console.log('group_id=' + group_id); $('.itemflow-editor .item-row[data-group_id="' + group_id + '"]').toggle(); }); // Клик по строке подгруппы - Показать или скрыть товары в подгруппе $('.itemflow-editor tr.isubgroup-row').click(function(){ var subgroup_id = $(this).attr('data-subgroup_id'); console.log('subgroup_id=' + subgroup_id); $('.itemflow-editor .item-row[data-subgroup_id="' + subgroup_id + '"]').toggle(); }); // Показать все товары в группе $('.itemflow-editor tr .act-expand-groups').click(function(){ $('.itemflow-editor .item-row').show(); }); if ( typeof z_keywords !== 'undefined' ){ // Показать все товары в группах $('.itemflow-editor tr .act-expand-groups').click(); } // Скрыть все товары в группе $('.itemflow-editor tr .act-collapse-groups').click(function(){ $('.itemflow-editor .item-row').hide(); }); // Клик по строке складского каталога - Добавить новую позицию из каталога $('.itemflow-editor .catalog tr[data-item_id]').click(function(){ $('.itemflow-editor .bar-itemflow-params').show(''); $('.itemflow-editor .bar-catalog').hide(''); $('.itemflow-editor tr.item-row').removeClass('selected'); $(this).addClass('selected'); var item_id = $(this).attr('data-item_id'); var item_name = $(this).find('.item_name').attr('data-item_name'); var measure = $(this).find('.measure').html(); $('.itemflow-editor .d-item_id').val( item_id ); $('.itemflow-editor .i-item_name').val( item_name ); $('.itemflow-editor .i-measure').val( measure ); $('.itemflow-editor .i-value').val( '' ); /* // Анимация: заполняемые поля $('.itemflow-editor .i-item_name').css('background-color', 'yellow').animate({ backgroundColor: "#f0f0f0" }, 900 ); $('.itemflow-editor .i-measure').css('background-color', 'yellow').animate({ backgroundColor: "#f0f0f0" }, 900 ); */ adjustItemflowEditor( item_id ); $('.itemflow-editor .i-value').focus(); }); } }); } // Показать поле комментария в Редакторе Прихода-Расхода $('.itemflow-editor .act-show-note').click(function(){ $(this).hide(); $('.itemflow-editor .bar-note').show(); $('.itemflow-editor .bar-note .i-note').focus(); }); // Выполнить поиск товара $('.itemflow-editor .act-search-catalog').click(function(){ var z_keywords = $.trim( $('.itemflow-editor .i-search-catalog').val() ); console.log(z_keywords); if ( z_keywords.length > 0 ) { localStorage['search_catalog_keywords'] = $('.itemflow-editor .i-search-catalog').val(); } else { localStorage.removeItem('search_catalog_keywords'); } showItemflowCatalog(); }); // Добавить на склад приход-расход и закрыть редактор $('.itemflow-editor .act-put-itemflow').click(function(){ $('.loader').show(); $('.itemflow-editor .response').html('').hide(); $.ajax({ url: base_url + '/handler/itemflow/put-itemflow.php', cache: false, type: "POST", data: { action: 'add', only_check: 1, // Признак только проверка item_id: $('.itemflow-editor .d-item_id').val(), value: $('.itemflow-editor .i-value').val(), note: $('.itemflow-editor .i-note').val(), store_id: $('.itemflow-editor .i-store_id').val() }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); var do_itemflow = false; if (data.result < 0) { //console.log(data); $('.itemflow-editor .response').html(data.message).attr('data-type', 'res-error').show().hide('fade', {}, 5000); switch (data.result){ case -1: // Укажите товар $('.itemflow-editor .i-item_name').css('background-color', 'red').animate({ backgroundColor: "#f0f0f0" }, 900 ); break; case -2: // Укажите количество товара $('.itemflow-editor .i-value').focus().css('background-color', 'red').animate({ backgroundColor: "white" }, 900 ); break; case -3: // Укажите склад $('.itemflow-editor .i-store_id').focus().css('background-color', 'red').animate({ backgroundColor: "white" }, 900 ); break; case -4: // Указанное количество товара приведет к отрицательному кол-ву на складе if ( confirm('Внимание! На складе будет отрицательное количество товара! Продожить?') ){ do_itemflow = true; } break; } } else { // Всё ок, будем делать приход-расход товара do_itemflow = true; } if (do_itemflow) { // Делаем реальный приход-расход товара $('.loader').show(); $('.itemflow-editor .response').html('').hide(); $.ajax({ url: base_url + '/handler/itemflow/put-itemflow.php', cache: false, type: "POST", data: { action: 'add', only_check: 0, // Признак только проверка item_id: $('.itemflow-editor .d-item_id').val(), value: $('.itemflow-editor .i-value').val(), note: $('.itemflow-editor .i-note').val(), store_id: $('.itemflow-editor .i-store_id').val() }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); // Закрыть редактор Прихода-Расхода $('.itemflow-editor .act-close-itemflow-editor').click(); } }); } } }); });// Активация таба function showLKMode( mode ){ // Активируем выбранный пункт меню $('.page-task-form .device-selector .tab').removeClass('on'); $('.page-task-form .device-selector .tab[data-mode="' + mode + '"]').addClass('on'); // Активируем карточку выбранного таба $('.page-task-form .bar-device .tabcard').hide(); $('.page-task-form .bar-device .tabcard[data-mode="' + mode + '"]').show(); // Сбрасываем верстку на всех устройствах $('.page-task-form .bar-device .device-workspace').html(''); // Задаем верстку только на выбранном устройстве var lk_code = '' + '' + '' + '
' ; $('.page-task-form .bar-device .device-workspace[data-mode="' + mode + '"]').html( lk_code ); } // Нажатие на таб $('.page-task-form .device-selector .tab').click(function(){ // Активируем Личный кабинет для указанного устройства с его прорисовкой showLKMode( $(this).attr('data-mode') ); }); // Авторизация в ЛК function authorizeLK( v_way, v_phone, v_agreement_num, callback ){ switch (v_way){ // по № Договора и № телефона case 'PHONE_AGREEMENT': //do_login( 'phone_agreement', v_phone, v_agreement_num ); $.ajax({ url: base_url + '/lk/handler/do-login.php', cache: false, type: "POST", data: { // здесь session_id - не нужен! т.к. выполняется новая авторизация action: 'phone_agreement', phone_customer: v_phone, agreement_num: v_agreement_num }, statusCode: { 401: function() { loadLK();} }, success: function(json){ var data = $.parseJSON(json); if (data.result < 0) { // Ошибка авторизации sessionStorage.setItem('lk_brigadirka_session_id', ''); } else { // Авторизация успешная sessionStorage['lk_brigadirka_session_id'] = data.session_id; sessionStorage['lk_brigadirka_task_id'] = data.task_id; //loadLK(); callback(); } } }); break; } } // Показать ЛК в отдельном окне $('.page-task-form .act-show-lk-in-new-window').click(function(){ var url = $(this).attr('data-url'); var win = window.open( url, '_blank' ); win.focus(); }); // Обновить данные раздела Запланированные события $('.page-event-list .act-reload-event-list-page').click(function(){ reloadEventListPage(); }); // Фильтр по дням $('.page-event-list .act-view-mode-day').click(function(){ localStorage['view_mode_date'] = 'VIEW_DAY'; reloadEventListPage(); }); // Фильтр по месяцам $('.page-event-list .act-view-mode-month').click(function(){ localStorage['view_mode_date'] = 'VIEW_MONTH'; reloadEventListPage(); }); // Нажатие на таб статуса $('.page-event-list .status-container .bigtab[data-status]').click(function(){ let z_status = $(this).attr('data-status'); showEventStatusTab( z_status ); }); // Фильтр по статусу задачи function showEventStatusTab( v_status ){ // Активируем выбранный пункт меню $('.page-event-list .status-container .bigtab').removeClass('on'); $('.page-event-list .status-container .bigtab[data-status="' + v_status + '"]').addClass('on'); localStorage['event_page_num'] = 1; localStorage['event_status'] = v_status; showEventList('total-event-list'); } // График списка событий function showEventListChart(){ if ( localStorage['chart'] == 1 ){ var strJSON = $('.page-event-list .chart-json').html(); objJSON = JSON.parse(strJSON); var chart_arr = []; for (var idate in objJSON){ chart_arr.push([idate, objJSON[idate]]); } // chart_arr.reverse(); var data = new google.visualization.DataTable(); data.addColumn('string', 'дата'); data.addColumn('number', 'Сделать'); data.addRows(chart_arr); var options = { title: '', vAxis: {title: 'Сделать, шт.'}, isStacked: true }; var chart = new google.visualization.SteppedAreaChart( document.getElementById('event-list-chart') ); chart.draw(data, options); } } // Клик - обновить стартовую страницу function reloadEventListPage() { // Настройка отображения фильтра месяц-день $('.page-event-list .act-view-mode-month, .page-event-list .act-view-mode-day').removeClass('active').css('color', '#5590cc'); switch (localStorage['view_mode_date']){ case 'VIEW_DAY': $('.page-event-list .act-view-mode-day').addClass('active').css('color', 'red'); break; case 'VIEW_MONTH': $('.page-event-list .act-view-mode-month').addClass('active').css('color', 'red'); break; } $('.page-event-list .act-show-event-form').show(); $('.page-event-list .bar-new-event-note').hide(); showEventList('total-event-list'); } // Список событий на начальной странице или в разделе Сделать function showEventList( v_location ){ let z_elem; let z_event_page_num; let z_scrollTop; let z_claim_status; switch ( v_location ) { case 'current-event-list': // на начальной странице z_elem = $('.page-homepage .current-event-list'); z_event_page_num = 1; z_event_status = 'PLAN'; // Запоминаем положение прокрутки списка z_scrollTop = $('.page-homepage .bar-body').scrollTop(); localStorage['work_homepage_scroll_top'] = z_scrollTop; break; case 'total-event-list': // в разделе Сделать z_elem = $('.page-event-list .total-event-list'); z_event_page_num = localStorage['event_page_num']; z_event_status = localStorage['event_status']; // Запоминаем положение прокрутки списка z_scrollTop = $('.page-event-list .bar-body').scrollTop(); localStorage['work_event_list_scroll_top'] = z_scrollTop; break; } // График по настройкам if ( localStorage['chart'] == 1 ){ $('.event-list-chart').show(); } else { $('.event-list-chart').hide(); } z_elem.css('opacity', '0.5'); $('.loader').show(); $('.page-event-list .event-list-chart').html('Загрузка...'); $.ajax({ url: base_url + '/handler/event/get-event-list.php', cache: false, type: "POST", data: { action: v_location, view_mode_date: localStorage['view_mode_date'], event_status: z_event_status, event_page_num: z_event_page_num }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ z_elem.css('opacity', '1'); $('.loader').hide(); z_elem.html(data); // Клик - открыть пункт меню $('.act-click-menu-item').click(function(){ clickMenuItem( $(this).attr('data-menu-item') ); }); // График по настройкам if ( localStorage['chart'] == 1 ){ $('.event-list-chart').show(); } else { $('.event-list-chart').hide(); } adjustScreenSize(); adjustEventListHeight( v_location ); // Восстанавливаем прокрутку списка switch ( v_location ) { case 'current-event-list': $('.page-homepage .bar-body').scrollTop( localStorage['work_homepage_scroll_top'] ); break; case 'total-event-list': $('.page-event-list .bar-body').scrollTop( localStorage['work_event_list_scroll_top'] ); break; } // Строим график по полученным данным if ( localStorage['chart'] == 1 ){ google.charts.setOnLoadCallback( showEventListChart ); } // Наведение на строку z_elem.find('.event-row').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Клик на строку z_elem.find('.event-row').click(function(){ // Активировать строку z_elem.find('.event-row').removeClass('selected'); $('.' + v_location + ' .event-row .ext-row').css('display', 'none'); $(this).addClass('selected'); $(this).find('.ext-row').css('display', 'flex'); // z_elem.find('.event-row').attr('title', 'Кликните еще раз для перехода в заказ'); }); /* z_elem.find('.event-row').click(function(){ if ( $(this).hasClass('selected') ){ // Переход в заказ //$(this).find('.act-show-task-stage').click(); - флудит, stopPropagation не помогает var z_task_id = $(this).attr('data-task_id'); if (z_task_id > 0){ // Запоминаем положение прокрутки списка var z_scrollTop = $('.bar-body').scrollTop(); localStorage['work_event_scroll_top'] = z_scrollTop; // Показать карточку заказа - вкладка Этапы showTaskForm(z_task_id , 'stage'); } } else { // Активировать строку z_elem.find('.event-row').removeClass('selected'); $('.' + v_location + ' .event-row .ext-row').css('display', 'none'); $(this).addClass('selected'); $(this).find('.ext-row').css('display', 'flex'); z_elem.find('.event-row').attr('title', 'Кликните еще раз для перехода в заказ'); } }); */ // Кнопка номера телефона - обработка наведения z_elem.find('.act-show-phone-form').hover( function(){ phoneNumberOverIn( $(this) ) }, function(){ phoneNumberOverOut( $(this) ) } ); // Кнопка номера телефона - Нажатие на кнопку z_elem.find('.act-show-phone-form').click(function(){ showPhoneForm( $(this).attr('data-phone') ); }); // Клик на иконку заказа: Показать карточку заказа - вкладка ЭТАПЫ z_elem.find('.event-row .act-show-task-stage').click(function(){ event.stopPropagation(); var z_task_id = $(this).parent().parent().parent().parent().parent().attr('data-task_id'); if (z_task_id > 0){ // Запоминаем положение прокрутки списка var z_scrollTop = $('.bar-body').scrollTop(); localStorage['work_event_scroll_top'] = z_scrollTop; // Показать карточку заказа - вкладка Этапы showTaskForm(z_task_id , 'stage'); } }); // Кнопка СДЕЛАНО на странице НАЧАЛО z_elem.find('.act-done-event').click(function(){ event.stopPropagation(); var z_task_id = $(this).parent().parent().parent().parent().parent().attr('data-task_id'); var z_event_id = $(this).parent().parent().parent().parent().parent().attr('data-event_id'); showEventForm(z_task_id, z_event_id, 'DONE'); }); // Удаляем задачу z_elem.find('.act-delete-event').click(function(){ var z_task_id = $(this).parent().parent().parent().parent().parent().attr('data-task_id'); var z_event_id = $(this).parent().parent().parent().parent().parent().attr('data-event_id'); deleteEvent( z_event_id, z_task_id, v_location ); }); } }); } // Настройка высоты страницы function adjustEventListHeight( v_location ){ switch ( v_location ) { case 'current-event-list': // на начальной странице var z_elem = $('.page-homepage'); break; case 'total-event-list': // в разделе Сделать var z_elem = $('.page-event-list'); break; } var div_header_height = $(z_elem).find('.bar-header').css('height'); var summa = ' - ' + div_header_height; $(z_elem).find('.bar-body').css( 'height', 'calc(100%' + summa + ')' ); } // Список событий в заказе function showTaskEventList( v_task_id ){ let z_elem = $('.page-task-form .task-event-list'); z_elem.css('opacity', '0.5'); $('.loader').show(); $.ajax({ url: base_url + '/handler/event/get-event-list.php', cache: false, type: "POST", data: { action: 'task-event-list', view_mode_date: localStorage['view_mode_date'], event_page_num: 1, task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ z_elem.css('opacity', '1'); $('.loader').hide(); z_elem.html(data).css('opacity', '1'); // Наведение на строку z_elem.find('.event-row').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Клик на строку: Активировать строку z_elem.find('.event-row' ).click(function(){ z_elem.find('.event-row').removeClass('selected'); $('.task-event-list .event-row .ext-row').css('display', 'none'); $(this).addClass('selected'); $(this).find('.ext-row').css('display', 'flex'); }); // Кнопка номера телефона - обработка наведения z_elem.find('.act-show-phone-form').hover( function(){ phoneNumberOverIn( $(this) ) }, function(){ phoneNumberOverOut( $(this) ) } ); // Кнопка номера телефона - Нажатие на кнопку z_elem.find('.act-show-phone-form').click(function(){ showPhoneForm( $(this).attr('data-phone') ); }); // Кнопка СДЕЛАНО в Заказе z_elem.find('.act-done-event').click(function(){ var z_task_id = $(this).parent().parent().parent().parent().attr('data-task_id'); var z_event_id = $(this).parent().parent().parent().parent().parent().attr('data-event_id'); showEventForm(z_task_id, z_event_id, 'DONE'); }); // Удаляем задачу в Заказе z_elem.find('.act-delete-event').click(function(){ var z_event_id = $(this).parent().parent().parent().parent().parent().attr('data-event_id'); var z_task_id = $(this).parent().parent().parent().parent().parent().attr('data-task_id'); deleteEvent( z_event_id, z_task_id, 'task-event-list' ); }); } }); } // Открыть форму выбора сотрудников $('.event-form .act-show-choose-actor-form').click(function(){ let z_mode = 'EVENT'; let z_event_id = $('.event-form .d-event_id').val(); showChooseActorForm( z_mode, z_event_id ); }); // Показать список сотрудников по событию function showActor2EntityList( v_actor_ids ){ $('.event-form .actor2event-list').html('Загрузка...'); $('.loader').show(); $.ajax({ url: base_url + '/handler/event/get-actor2entity-list.php', cache: false, type: "POST", data: { actor_ids: v_actor_ids }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.event-form .actor2event-list').html(data); // Наведение на превьюшку - Отобразить кнопку Удалить при наведении $('.event-form .actor2event-list .bar-actor2event').hover( function(){ $(this).find('.act-delete-actor2event').css('visibility', 'visible'); $(this).find('.avatar.hide-on-over').css('visibility', 'hidden'); }, function(){ $(this).find('.act-delete-actor2event').css('visibility', 'hidden'); $(this).find('.avatar.hide-on-over').css('visibility', 'visible'); } ); // Клик - Убрать сотрудника $('.event-form .actor2event-list .act-delete-actor2event').click(function(){ // Удаляем ноду с аватаром и кнопкой $(this).parent().parent().remove(); // Формируем список ID сотрудников через запятую let z_event_type = $('.event-form .d-event_type').val(); let z_actor_list = ''; let z_actor_id = ''; $('.event-form div[data-event_type="' + z_event_type + '"] .actor2event-list .bar-actor2event').each( function( index ){ z_actor_id = $(this).attr('data-actor_id'); z_actor_list = z_actor_list + ',' + z_actor_id; }); z_actor_list = z_actor_list.substring(1); // Отбрасываем лидирующую запятую // $('.event-form .d-actor_ids').val( z_actor_list ); }); } }); } // Показать форму нового события БЕЗ привязки к заказу $('.page-homepage .act-show-event-form, .page-event-list .act-show-event-form').click(function(){ showEventForm(null, null, 'PLAN'); }); // Показать форму нового события для заказа $('.page-task-form .act-show-event-form').click(function(){ let v_task_id = $('.page-task-form .d-task_id').val(); showEventForm(v_task_id, null, 'PLAN'); }); // Показать форму события function showEventForm(v_task_id, v_event_id, v_status){ $('.event-form .response').html('').attr('data-type', '').hide(); $('.event-form .act-show-choose-actor-form').show(); // $('.event-form .d-actor_ids').val(''); if (v_event_id != null){ // Редактирование существующего события $('.event-form h1').html('Отчёт о выполнении'); $('.loader').show(); $.ajax({ url: base_url + '/handler/event/get-event.php', cache: false, type: "POST", data: { event_id: v_event_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function( json ){ $('.loader').hide(); let data = $.parseJSON(json); $('.event-form .d-task_id').val( data.task_id ); $('.event-form .d-event_id').val( data.event_id ); // $('.event-form .d-actor_ids').val( data.actor_ids ); $('.event-form .act-done-event').attr( 'data-task_id', data.task_id ).attr( 'data-event_id', data.event_id ); // Видимость панели Клиент if ( $('.event-form .d-task_id').val() > 0 ){ $('.event-form .bar-customer2event').show(); $('.event-form .bar-pointer').show(); // $('.event-form .d-customer_phone').html( data.customer_phone ); // $('.event-form .i-phone').val( data.customer_phone ); $('.event-form .d-customer_name').html( data.customer_name ); $('.event-form .d-object_address').html( data.object_address ); } else { $('.event-form .bar-customer2event').hide(); $('.event-form .bar-pointer').hide(); } // 25.04.2023 Не сделано редактирование напоминания по СМС data.event_notify_morning $('.event-form div[data-event_type]').hide(); $('.event-form .d-event_type').val( data.event_type ); switch (data.event_type){ case 'PHONECALL': $('.event-form div[data-event_type="PHONECALL"]').show(); $('.event-form .i-phone').val( data.customer_phone ); // Вставляем клиентский номер телефона $('.event-form div[data-event_type="PHONECALL"] .i-descr').focus(); break; case 'MEETING': $('.event-form div[data-event_type="MEETING"]').show(); $('.event-form div[data-event_type="MEETING"] .i-descr').focus(); break; case 'GENERAL': $('.event-form div[data-event_type="GENERAL"]').show(); $('.event-form div[data-event_type="GENERAL"] .i-descr').focus(); break; } $('.event-form').show().center(); showActor2EntityList( data.actor_ids ); switch (v_status){ case 'PLAN': $('.event-form .bar-plan').show(); $('.event-form .i-date').val( moment().format('YYYY-MM-DD') ); $('.event-form .i-time').val(''); $('.event-form .i-descr, .event-form .i-location').val(''); $('.event-form div[data-event_type="' + data.event_type + '"] .i-descr').focus(); $('.event-form .bar-done').hide(); break; case 'DONE': $('.event-form .bar-plan').hide(); $('.event-form .bar-done').show(); // console.log('data.event_type=' + data.event_type); $('.event-form div[data-event_type="' + data.event_type + '"] .i-result').val('').focus(); break; } } }); } else { // Создание нового события $('.event-form h1').html('Запланировать...'); $('.event-form .d-task_id').val( v_task_id ); $('.event-form .d-event_id').val(''); let z_actor_ids = ''; // Для нового события список сотрудников пустой, // но с сервера все-равно вернётся 1 сотрудник, равный текущему пользователю - автору события // $('.event-form .d-actor_ids').val(''); // Видимость панели Клиент if ( v_task_id > 0 ){ $('.event-form .bar-customer2event').show(); $('.event-form .bar-pointer').show(); let z_customer_name = $('.page-task-form .d-customer_name').html(); if ( z_customer_name != '' ) { $('.event-form .d-customer_name').html( z_customer_name ); } let z_customer_phone = $('.page-task-form .act-show-phone-form').attr('data-phone'); if ( z_customer_phone != '' ) { // $('.event-form .d-customer_phone').html( z_customer_phone ); $('.event-form .i-phone').val( z_customer_phone ); } let z_object_address = $('.page-task-form .d-object_address').html(); if ( z_object_address != '' ) { $('.event-form .d-object_address').html( z_object_address ); } } else { $('.event-form .bar-customer2event').hide(); $('.event-form .bar-pointer').hide(); } $('.event-form .i-notify_morning').prop('checked', false); $('.event-form div[data-event_type]').hide(); $('.event-form div[data-event_type="CHOOSE"]').show(); $('.event-form .bar-plan').show(); $('.event-form .i-date').val( moment().format('YYYY-MM-DD') ); $('.event-form .i-time').val(''); $('.event-form .i-descr, .event-form .i-location').val(''); showActor2EntityList( z_actor_ids ); $('.event-form .bar-done').hide(); $('.event-form').show().center(); } } // Нажатие кнопки СДЕЛАНА задача $('.event-form .act-done-event').click(function(){ let z_task_id = $(this).attr('data-task_id'); let z_event_id = $(this).attr('data-event_id'); let z_result = $(this).parent().find('.i-result').val(); doneEvent(z_task_id, z_event_id, z_result); }); // Задать статус события function doneEvent(v_task_id, v_event_id, v_result){ $('.loader').show(); $.ajax({ url: base_url + '/handler/event/put-event.php', cache: false, type: "POST", data: { action: 'status', task_id: v_task_id, event_id: v_event_id, result: v_result, status: 'DONE' }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); if (data.result < 0) { $('.event-form .response').html(data.message).attr('data-type', 'res-error').show(); switch (data.result){ case -3: $('.event-form .i-result').focus(); break; } } else { showEventList( 'total-event-list' ); showEventList( 'current-event-list' ); showTaskEventList( v_task_id ); $('.event-form .act-close-event-form').click(); } } }); } // Выбор типа события $('.event-form div[data-event_type="CHOOSE"] div[data-set-event_type]').click(function(){ $('div[data-event_type]').hide(); let elem = $(this).attr('data-set-event_type'); $('.event-form .d-event_type').val( elem ); switch (elem){ case 'PHONECALL': $('.event-form div[data-event_type="PHONECALL"]').show(); $('.event-form div[data-event_type="PHONECALL"] .i-descr').focus(); break; case 'MEETING': $('.event-form div[data-event_type="MEETING"]').show(); $('.event-form div[data-event_type="MEETING"] .i-descr').focus(); break; case 'GENERAL': $('.event-form div[data-event_type="GENERAL"]').show(); $('.event-form div[data-event_type="GENERAL"] .i-descr').focus(); break; } $('.event-form').center(); }); // Закрыть форму события $('.event-form .act-close-event-form').click(function(){ $('.event-form').hide(); }); // Сохранить событие $('.event-form .act-put-event').click(function(){ putEvent(); }); // Сохранить событие function putEvent(){ // Для событий всех типов одинаковый код let z_event_type = $('.event-form .d-event_type').val(); let z_task_id = $('.event-form .d-task_id').val(); let z_event_id = $('.event-form .d-event_id').val(); let z_actor_id = ''; let z_actor_ids = ''; let elem; // Проверка корректности даты elem = $('.event-form div[data-event_type="' + z_event_type + '"] .i-date'); let z_event_date = elem.val(); if ( z_event_date == '' ) { alert('Укажите дату!'); elem.css('background-color', 'red').animate({ backgroundColor: "white" }, 1000 ).focus(); return; } if ( !moment( z_event_date, "YYYY-MM-DD").isValid() ) { alert('Недопустимое значение даты!'); elem.css('background-color', 'red').animate({ backgroundColor: "white" }, 1000 ).focus(); return; } // Проверка корректности времени elem = $('.event-form div[data-event_type="' + z_event_type + '"] .i-time'); let z_event_time = elem.val(); if ( ( z_event_time != '' ) && ( !moment( z_event_time, "hh:mi").isValid() ) ) { alert('Недопустимое значение времени!'); elem.css('background-color', 'red').animate({ backgroundColor: "white" }, 1000 ).focus(); return; } // Проверка заполненности телефона на вкладке Сделать звонок let z_phone; if (z_event_type == "PHONECALL"){ elem = $('.event-form div[data-event_type="PHONECALL"] .i-phone'); z_phone = elem.val(); if ( !z_phone.length > 0) { alert('Укажите номер телефона!'); elem.css('background-color', 'red').animate({ backgroundColor: "white" }, 1000 ).focus(); return; } } // Проверка заполненности описания elem = $('.event-form div[data-event_type="' + z_event_type + '"] .i-descr'); let z_event_descr = elem.val(); let z_msg; switch (z_event_type){ case 'PHONECALL': z_msg = 'Укажите цель звонка!'; break; case 'MEETING': z_msg = 'Укажите цель встречи!'; break; case 'GENERAL': z_msg = 'Укажите что нужно сделать!'; break; } // console.log('z_event_descr=' + z_event_descr); if ( !z_event_descr.length > 0) { alert(z_msg); elem.css('background-color', 'red').animate({ backgroundColor: "white" }, 1000 ).focus(); return; } // Проверка наличия привязанных к событию сотрудников let z_actor_count = $('.event-form div[data-event_type="' + z_event_type + '"] .actor2event-list .bar-actor2event').length; elem = $('.event-form div[data-event_type="' + z_event_type + '"] .actor2event-list'); if (z_actor_count == 0){ alert('Назначьте сотрудников на событие!'); elem.css('background-color', 'red').animate({ backgroundColor: "white" }, 1000 ).focus(); return; } // Формируем список ID сотрудников через запятую $('.event-form div[data-event_type="' + z_event_type + '"] .actor2event-list .bar-actor2event').each( function( index ){ z_actor_id = $(this).attr('data-actor_id'); z_actor_ids = z_actor_ids + ',' + z_actor_id; }); z_actor_ids = z_actor_ids.substring(1); // Отбрасываем лидирующую запятую $('.loader').show(); $.ajax({ url: base_url + '/handler/event/put-event.php', cache: false, type: "POST", data: { action: 'add', type: z_event_type, task_id: z_task_id, actor_ids: z_actor_ids, date: z_event_date, time: z_event_time, phone: z_phone, descr: $('.event-form div[data-event_type="' + z_event_type + '"] .i-descr').val(), location: $('.event-form div[data-event_type="' + z_event_type + '"] .i-location').val(), notify_morning: $('.event-form div[data-event_type="' + z_event_type + '"] .i-notify_morning').is(':checked') }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); // Обновляем списки задач showTaskEventList( z_task_id ); showEventList( 'total-event-list' ); showEventList( 'current-event-list' ); $('.event-form .act-close-event-form').click(); } }); } // Удалить задачу function deleteEvent( v_event_id, v_task_id, v_location ){ // console.log('v_event_id=' + v_event_id); // console.log('v_task_id=' + v_task_id); if (confirm('Удалить задачу?')) { $('.loader').show(); $.ajax({ url: base_url + '/handler/event/put-event.php', cache: false, type: "POST", data: { action: 'delete', 'event_id': v_event_id, task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ var data = $.parseJSON(json); //console.log(data.result); switch (data.result){ case 0: $('.loader').hide(); if (v_location == 'task-event-list') { showTaskEventList( v_task_id ); } else { showEventList( v_location ); } break; } } }); } }// Клиентское время var client_date = new Date; // console.log('client_date=' + client_date); // Пересчет и прорисовка даты и времени setTimeout(function current_time(){ // console.log(server_time); var difference = 0; if (server_time && client_date){ difference = server_time - Math.round(client_date.getTime()/1000); } var current_client_time = new Date().getTime(); var real_time = Math.round(current_client_time/1000) + difference; var mom = moment(real_time * 1000); var display_time = '
' + mom.format('DD.MM.YYYY') + ' ' + dayofweek(Number(mom.format('e')), 'rus2') + '
' + mom.format('HH:mm:ss') + '
'; $('.bar-clock').html(display_time); setTimeout(current_time, 1000); // Проверка наличия интернета 1 раз в сек и включение системного объявления в случае его отсутствия if (!navigator.onLine) { $('.system-adv').css('padding', '10px 20px').html('Отсутстует подключение к интернету!').show(); } else { $('.system-adv').css('padding', '0').html('').show(); } }, 1000);// Логируем доступ к объекту function logAccess( v_object_type, v_object_id, v_content ){ $('.loader').show(); $.ajax({ url: base_url + '/handler/access/log-object-access.php', cache: false, type: "POST", data: { object_type: v_object_type, object_id: v_object_id, content: v_content }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); } }); } // Загрузка списка прав доступа function showAccessList(v_user_id) { $('.page-actor-form .i-access-list').html('
Загрузка...
'); $('.loader').show(); $.ajax({ url: base_url + '/handler/access/get-access-list.php', cache: false, type: "POST", data: { user_id: v_user_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-actor-form .i-access-list').html(data); } }); }//-------------------------------------------------------------- // Партнёры p2p //-------------------------------------------------------------- // Список партнёров function showp2pList(){ $('.page-settings .p2p-list').html('Загрузка списка парнёров...'); $('.loader').show(); $.ajax({ url: base_url + '/handler/p2p/get-p2p-list.php', cache: false, type: "POST", data: { }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-settings .p2p-list').html(data); // Отобразить кнопки действий при наведении на строку $('.page-settings .p2p-list .row').hover( function(){ $(this).find('i.act-ico').css('visibility', 'visible'); $(this).css('background', '#FFC'); }, function(){ $(this).find('i.act-ico').css('visibility', 'hidden'); $(this).css('background', 'white'); } ); /* // Нажатие на кнопку: Показать форму редактирования $('.page-settings .p2p-list .act-edit-p2p').click(function(){ var row = $(this).parent().parent(); console.log( row.attr('data-p2p_id') ); showp2pForm( row.attr('data-p2p_id') ); }); // Двойной клик на строку: то же что и кликнуть на кнопке "Редактировать партнёра" $('.page-settings .p2p-list div[data-p2p_id]').dblclick(function(){ $(this).find('.act-edit-p2p').click(); }); */ // Исключить партнёра $('.page-settings .p2p-list .act-remove-p2p').click(function () { removep2p( $(this).parent().parent().attr('data-p2p_id') ); }); } }); } // Показать форму партнёра для добавления новой $('.page-settings .act-show-new-p2p').click(function(){ showp2pForm( null ); $(this).hide(); }); // Показать в Настройках существующего партнёра function reloadp2pTab(){ $('.loader').show(); $.ajax({ url: base_url + '/handler/p2p/get-p2p.php', cache: false, type: "POST", data: { }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); //console.log(json); data = $.parseJSON(json); console.log(data); $('.page-settings .tabcard[data-tab="p2p"] .partner_name').html(data.p2p.p2p_name); $('.page-settings .tabcard[data-tab="p2p"] .partner_code').html(data.p2p.p2p_code); } }); } // Создать новый Код партнёра $('.page-settings .tabcard[data-tab="p2p"] .act-renew-p2p-code').click(function(){ $('.loader').show(); $.ajax({ url: base_url + '/handler/p2p/renew-p2p-code.php', cache: false, type: "POST", dataType: 'json', data: { }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); // Обновить инфо на вкладке reloadp2pTab(); } }); }); // Показать форму редактирования партнёра function showp2pForm( v_p2p_id ){ $('.page-settings .p2p-form .title').html('Загрузка...'); $('.page-settings .p2p-form .d-p2p_descr').html(''); $('.page-settings .p2p-form .bar-p2p').hide(); $('.page-settings .p2p-form .bar-new-p2p').hide(); $('.page-settings .p2p-form .response').html('').hide(); if ( v_p2p_id != null ) { /* // Показать существующего партнёра // ВНИМАНИЕ! Этот кусок отключен, т.к. пока что нет потребности в редактировании. Появиться - включить. $('.page-settings .p2p-form').attr('data-action', 'edit' ); $('.loader').show(); $.ajax({ url: base_url + '/handler/p2p/get-p2p.php', cache: false, type: "POST", data: { p2p_id: v_p2p_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); //console.log(json); data = $.parseJSON(json); console.log(data); $('.page-settings .p2p-form .d-p2p_id').val( data.p2p.p2p_id ); $('.page-settings .p2p-form .title').html( 'Партнёр ' + data.p2p.p2p_name ); $('.page-settings .p2p-form .d-p2p_descr').html( data.p2p.p2p_descr ); $('.page-settings .p2p-form .bar-p2p').show(); $('.page-settings .p2p-form').show('fast'); } }); */ } else { // Добавить нового партнёра $('.page-settings .p2p-form').attr('data-action', 'add' ); $('.page-settings .p2p-form .d-p2p_id').val(''); $('.page-settings .p2p-form .title').html('Добавить партнёра'); $('.page-settings .p2p-form .bar-new-p2p').show() $('.page-settings .p2p-form').show('fast'); $('.page-settings .p2p-form .i-p2p_code').val('').focus(); } $('.page-settings .act-show-p2p-form').hide(); $('.page-settings .p2p-form .act-close-p2p-form').show(); } // Закрыть форму партнёра $('.page-settings .p2p-form .act-close-p2p-form').click(function(){ $('.page-settings .p2p-form').hide(); $(this).hide(); $('.page-settings .act-show-new-p2p').show(); }); // Добавить партнёра $('.page-settings .p2p-form .act-add-p2p').click(function(){ $('.page-settings .p2p-form .response').html('').hide(); $('.loader').show(); $.ajax({ url: base_url + '/handler/p2p/put-p2p.php', type: "POST", dataType: 'json', data: { action: 'add', p2p_code: $('.page-settings .p2p-form .i-p2p_code').val() }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); if (data.result < 0) { $('.page-settings .p2p-form .response').html(data.message).attr('data-type', 'res-error').show(); } else { $('.page-settings .p2p-form .act-close-p2p-form').click(); showp2pList(); } } }); }); // Исключить партнёра function removep2p( v_p2p_id ){ if ( confirm('Исключить компанию из числа Ваших партнёров?') ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/p2p/put-p2p.php', type: "POST", dataType: 'json', data: { action: 'remove', p2p_id: v_p2p_id }, cache: false, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); if (data.result == 0) { showp2pList(); } } }); } } // Скопировать код партнёра $('.page-settings .act-copy-partner-code').click(function(){ let z_response = $('.page-settings .d-partner_code-response'); z_response.html('').hide(); $('.loader').show(); let z_partner_code = $('.page-settings .partner_code').html(); // let text = document.getElementById("inputText"); // console.log('z_partner_code=' + z_partner_code); // console.log(navigator); // console.log(navigator.clipboard); navigator.clipboard.writeText(z_partner_code) .then(() => { z_response.show().css('font', 'green').html('Скопировано'); $('.loader').hide(); }) .catch(error => { z_response.show().css('color', 'red').html('Не скопировано');; $('.loader').hide(); }); }); //-------------------------------------------------------------- // Субподряды //-------------------------------------------------------------- // Список Субподрядов по заказу function showSubcontractList( v_task_id ){ $('.page-task-form .subcontract-list').html('Загрузка списка cубподрядов по заказу...'); $('.loader').show(); $.ajax({ url: base_url + '/handler/p2p/get-subcontract-list.php', cache: false, type: "POST", data: { task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-task-form .subcontract-list').html(data); //$('.page-task-form .subcontract-list .act-ico').css('visibility', 'hidden'); // Отобразить кнопки действий при наведении на строку $('.page-task-form .subcontract-list .row').hover( function(){ //$(this).find('.act-ico').css('visibility', 'visible'); $(this).css('background', '#FFC'); }, function(){ //$(this).find('.act-ico').css('visibility', 'hidden'); $(this).css('background', 'white'); } ); // Нажатие на кнопку: Показать форму добавления субподряда $('.page-task-form .subcontract-list .act-show-new-subcontract-form').click(function () { showSubcontractForm(null); }); // Отозвать предложение Субподряда (отменить) $('.page-task-form .subcontract-list .act-revoke-subcontract').click(function(){ revokeSubcontract( $(this).parent().parent().attr('data-subcontract_id') ); }); /* // Нажатие на кнопку: Показать форму редактирования субподряда $('.page-task-form .subcontract-list .act-edit-subcontract').click(function(){ var row = $(this).parent().parent(); console.log( row.attr('data-p2p_id') ); showp2pForm( row.attr('data-p2p_id') ); //var xpos = row.position().left - 22; //var ypos = row.position().top - 29; //$('.page-settings .p2p-form').css('left', xpos + 'px').css('top', ypos + 'px'); }); */ /* // Двойной клик на строку: то же что и кликнуть на кнопке "Редактировать Субподрядчика" $('.page-settings .p2p-list div[data-p2p_id]').dblclick(function(){ $(this).find('.act-edit-p2p').click(); }); // Исключить Субподрядчика $('.page-settings .p2p-list .act-remove-p2p').click(function () { removep2p( $(this).parent().parent().attr('data-p2p_id') ); }); */ } }); } // Показать вкладку Субподряд на странице Заказа function showSubcontract( v_task_id ){ $('.page-task-form .bar-master-task .slave-task-status').hide(); $('.loader').show(); $.ajax({ url: base_url + '/handler/p2p/get-subcontract.php', cache: false, type: "POST", data: { task_id: v_task_id // ID заказа - головного для данного субподряда }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); //console.log(json); data = $.parseJSON(json); //console.log(data); $('.page-task-form .bar-master-task .slave-task-status') .html( data.subcontract.subcontract_status_text ) .attr('data-status', data.subcontract.subcontract_status_class) .show(); switch ( data.subcontract.subcontract_status_class ){ case 'ask': $('.page-task-form .act-accept-subcontract').show(); $('.page-task-form .act-deny-subcontract').show(); break; case 'subcontract': case 'deny': $('.page-task-form .act-accept-subcontract').hide(); $('.page-task-form .act-deny-subcontract').hide(); break; } $('.page-task-form .bar-master-task .d-subcontract_id').val( data.subcontract.subcontract_id ); $('.page-task-form .bar-master-task .master-partner_name').html( data.subcontract.master_partner_name ); $('.page-task-form .bar-master-task .master-partner_name').html( data.subcontract.master_partner_name ); $('.page-task-form .bar-master-task .master-task-agreement').html( data.subcontract.master_task_agreement ); $('.page-task-form .bar-master-task .slave-task-descr').html( data.subcontract.subcontract_descr ); $('.page-task-form .bar-master-task .slave-task-period').html( data.subcontract.date_period ); $('.page-task-form .bar-master-task .slave-offer_amount').html( data.subcontract.offer_amount_formated ); } }); } // Показать форму редактирования Субподряда function showSubcontractForm( v_subcontract_id ){ $('.page-task-form .act-show-new-subcontract').hide(); $('.page-task-form .subcontract-form .title').html('Загрузка...'); $('.page-task-form .subcontract-form .bar-general').show(); $('.page-task-form .subcontract-form .bar-no-p2p').hide(); $('.page-task-form .subcontract-form .response').html('').hide(); $('.page-task-form .subcontract-form .i-select_subcontract_id').val(''); $('.page-task-form .subcontract-form .i-descr').val(''); $('.page-task-form .subcontract-form .i-date_begin').val( moment().format('YYYY-MM-DD') ); $('.page-task-form .subcontract-form .i-date_end').val( moment().format('YYYY-MM-DD') ); $('.page-task-form .subcontract-form .i-offer_amount').val(''); $('.page-task-form .subcontract-form .i-remark').val(''); $('.page-task-form .subcontract-form .act-close-subcontract-form').show(); $('.page-task-form .subcontract-form .select-subcontract_id').html(''); if ( v_subcontract_id != null ) { // Редактировать существующий Субподряд $('.page-task-form .subcontract-form').attr('data-action', 'edit' ); $('.page-task-form .subcontract-form .d-subcontract_id').val( v_subcontract_id ); $('.page-task-form .subcontract-form .title').html('Редактировать субподряд'); /* // Показать существующего Субподрядчика // ВНИМАНИЕ! Этот кусок отключен, т.к. пока что нет потребности в редактировании. Появиться - включить. $('.page-settings .subcontract-form').attr('data-action', 'edit' ); $('.loader').show(); $.ajax({ url: base_url + '/handler/p2p/get-subcontract.php', cache: false, type: "POST", data: { subcontract_id: v_subcontract_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); //console.log(json); data = $.parseJSON(json); console.log(data); $('.page-settings .subcontract-form .d-subcontract_id').val( data.subcontract.subcontract_id ); $('.page-settings .subcontract-form .title').html( 'Субподрядчик ' + data.subcontract.subcontract_name ); $('.page-settings .subcontract-form .d-subcontract_descr').html( data.subcontract.subcontract_descr ); $('.page-settings .subcontract-form .bar-subcontract').show(); $('.page-settings .subcontract-form').show('fast'); } }); */ } else { // Добавить новый Субподряд $('.page-task-form .subcontract-form').attr('data-action', 'add' ); $('.page-task-form .subcontract-form .d-subcontract_id').val(''); $('.page-task-form .subcontract-form .no-p2p').hide(); $('.page-task-form .subcontract-form .title').html('Добавить субподряд'); // Попытка загрузки списка субподрядчиков $('.loader').show(); $.ajax({ url: base_url + '/handler/p2p/get-p2p-list-json.php', cache: false, type: "POST", data: { }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); //console.log(json); data = $.parseJSON(json); //console.log(data); var su = $.parseJSON( data['data'] ); if (su.p2ps.length > 0){ var aoption = ''; for ( var i = 0; i < su.p2ps.length; i++ ) { var p2p = su.p2ps[i]; aoption = aoption + ''; } console.log(aoption); $('.page-task-form .subcontract-form .select-p2p_id').html( aoption ); } else { $('.page-task-form .subcontract-form .bar-general').hide(); $('.page-task-form .subcontract-form .bar-no-p2p').show(); } $('.page-task-form .subcontract-form').show().center(); $('.page-task-form .subcontract-form .i-descr').focus(); } }); } } // Закрыть форму Субподряда $('.page-task-form .subcontract-form .act-close-subcontract-form').click(function(){ $('.page-task-form .subcontract-form').hide(); $(this).hide(); $('.page-task-form .act-show-new-subcontract').show(); }); // Отправить запрос на новый Субподряд $('.page-task-form .subcontract-form .act-ask-subcontract').click(function(){ $('.page-task-form .subcontract-form .response').html('').hide(); $('.loader').show(); var z_task_id = $('.page-task-form .d-task_id').val(); $.ajax({ url: base_url + '/handler/p2p/put-subcontract.php', cache: false, type: "POST", data: { action: 'ask', master_task_id: z_task_id, slave_partner_id: $('.page-task-form .subcontract-form .select-p2p_id').val(), descr: $('.page-task-form .subcontract-form .i-descr').val(), date_begin: $('.page-task-form .subcontract-form .i-date_begin').val(), date_end: $('.page-task-form .subcontract-form .i-date_end').val(), offer_amount: $('.page-task-form .subcontract-form .i-offer_amount').val() }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); //console.log(json); data = $.parseJSON(json); //console.log(data); if (data.result < 0) { $('.page-task-form .subcontract-form .response').html(data.message).attr('data-type', 'res-error').show(); switch (data.result){ case -1: $('.page-task-form .subcontract-form .select-p2p_id').focus(); break; case -2: $('.page-task-form .subcontract-form .i-descr').focus(); break; case -3: $('.page-task-form .subcontract-form .i-offer_amount').focus(); break; } } else { showSubcontractList( z_task_id ); showTaskHeader( z_task_id ); $('.page-task-form .subcontract-form .act-close-subcontract-form').click(); } } }); }); // Отозвать предложение Субподряда (отменить) function revokeSubcontract( v_subcontract_id ){ var z_task_id = $('.page-task-form .d-task_id').val(); if ( confirm('Отменить предложение субподряда?') ) { $('.loader').show(); $.ajax({ url: base_url + '/handler/p2p/put-subcontract.php', cache: false, type: "POST", data: { action: 'revoke', subcontract_id: v_subcontract_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); //console.log(json); data = $.parseJSON(json); //console.log(data); if (data.result == 0) { showSubcontractList( z_task_id ); showTaskHeader( z_task_id ); } } }); } } // Принять предложение нового Субподряда $('.page-task-form .bar-master-task .act-accept-subcontract').click(function(){ if ( confirm('Принять предложение нового Субподряда?') ) { var z_task_id = $('.page-task-form .d-task_id').val(); var z_subcontract_id = $('.page-task-form .bar-master-task .d-subcontract_id').val(); $('.loader').show(); $.ajax({ url: base_url + '/handler/p2p/put-subcontract.php', cache: false, type: "POST", data: { action: 'accept', subcontract_id: z_subcontract_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); //console.log(json); data = $.parseJSON(json); //console.log(data); if (data.result == 0) { showSubcontract( z_task_id ) showTaskHeader( z_task_id ); } } }); } });// Обновить список $('.page-portfolio .act-reload-portfolio').click(function(){ reloadPortfolioPage(); }); function reloadPortfolioPage() { // Настройка отображения фильтра месяц-день $('.page-portfolio .act-view-mode-month, .page-portfolio .act-view-mode-day').removeClass('active').css('color', '#5590cc'); switch ( localStorage['view_mode_date'] ){ case 'VIEW_DAY': $('.page-portfolio .act-view-mode-day').addClass('active').css('color', 'red'); break; case 'VIEW_MONTH': $('.page-portfolio .act-view-mode-month').addClass('active').css('color', 'red'); break; } switch ( $('.page-portfolio .tabs .tab.on').attr('data-tab') ){ case 'portfolio-list': // Загружаем список Портфолио showPortfolioList(); showTaskListForPortfolio(); break; case 'portfolio-map': // Загружаем данные по карте showPortfolioMap(); break; case 'portfolio-stat': // Загружаем статистику Портфолио showPortfolioStat(); break; } } // Показать сообщение о необходимости перейти к списку заказов $('.page-portfolio .act-show-new-portfolio-note').click(function(){ $(this).hide(); $('.bar-new-portfolio-note').show(); }); // Наши работы все: Нажатие на таб (Список и Карта) $('.page-portfolio .tabs .tab').click(function(){ // Активируем карточку выбранного таба showPortfolioTab( $(this).attr('data-tab') ); }); // Наши работы все: Активация таба (Список и Карта) function showPortfolioTab(v_tab){ // Активируем выбранный пункт меню $('.page-portfolio .bar-header .tab').removeClass('on'); $('.page-portfolio .bar-header .tab[data-tab="' + v_tab + '"]').addClass('on'); // Активируем карточку выбранного таба $('.page-portfolio .tabcard').hide(); $('.page-portfolio .tabcard[data-tab="' + v_tab + '"]').show(); showPortfolioPage(v_tab); } // Обновить данные на странице Портфолио function showPortfolioPage(v_tab) { // Если не задано, берем текущую if (v_tab == null) { v_tab = $('.page-portfolio .tabs .tab.on').attr('data-tab'); } switch (v_tab){ // Список Портфолио case 'portfolio-list': $('.act-show-new-portfolio-note').show(); $('.bar-new-portfolio-note').hide(); showPortfolioList(); showTaskListForPortfolio(); break; // Карта портфолио case 'portfolio-map': showPortfolioMap(); break; // Статистика Портфолио case 'portfolio-stat': showPortfolioStat(); break; } } // Показать общий список Заказы-кандидаты на Наши работы function showTaskListForPortfolio(){ $('.loader').show(); $('.page-portfolio .task-list-for-portfolio').html('Загрузка...'); $('.page-portfolio').css('opacity', '0.5'); $.ajax({ url: base_url + '/handler/portfolio/get-task-list-for-portfolio.php', cache: false, type: "POST", data: {}, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-portfolio').css('opacity', '1'); $('.page-portfolio .task-list-for-portfolio').html(data); adjustPortfolioHeight(); // Восстанавливаем прокрутку списка scroll = parseInt(localStorage['portfolio_scroll_top']); $('.page-portfolio .bar-body').scrollTop( scroll ); // Наведение на строку кандидата на портфолио $('.task-for-portfolio-row').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Клик на строку кандидата на портфолио $('.task-for-portfolio-row').click(function(){ // Запоминаем заказ var z_task_id = $(this).attr('data-task_id'); localStorage['work_task_id'] = z_task_id; // Запоминаем рабочий режим для корректного возврата потом localStorage['work_mode'] = 'portfolio'; // Отображаем форму заказа, вкладка Наши работы showTaskForm( z_task_id, 'portfolio' ); }); } }); } // Показать общий список Наши работы function showPortfolioList(){ $('.loader').show(); $('.page-portfolio .portfolio-list').html('Загрузка...'); $('.page-portfolio').css('opacity', '0.5'); $.ajax({ url: base_url + '/handler/portfolio/get-portfolio-list.php', cache: false, type: "POST", data: { view_mode_date: localStorage['view_mode_date'], portfolio_page_num: localStorage['portfolio_page_num'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-portfolio').css('opacity', '1'); $('.page-portfolio .portfolio-list').html(data); adjustPortfolioHeight(); // Стоп клика у превьюшек фото $('.page-portfolio .portfolio-row img.tiny').click(function( event ) { event.stopPropagation(); }); // Отобразить при наведении на строку $('.page-portfolio .portfolio-list .portfolio-row[data-portfolio_id]').hover( function(){ $(this).addClass('over'); }, function(){ $(this).removeClass('over'); } ); // Клик на строку портфолио $('.page-portfolio .portfolio-list .portfolio-row').click(function(){ // Запоминаем заказ var z_task_id = $(this).attr('data-task_id'); localStorage['work_task_id'] = z_task_id; // Запоминаем положение прокрутки списка var z_scrollTop = $('.page-portfolio .bar-body').scrollTop(); localStorage['portfolio_scroll_top'] = z_scrollTop; // Запоминаем рабочий режим для корректного возврата потом localStorage['work_mode'] = 'portfolio'; // Отображаем форму заказа, вкладка Наши работы showTaskForm( z_task_id, 'portfolio' ); }); // Выбор страницы в пагинаторе $('.page-portfolio .paginator i').click(function(){ localStorage['portfolio_page_num'] = $(this).html(); showPortfolioList(); }); } }); } // Показать статистику Наши работы function showPortfolioStat(){ $('.loader').show(); $('.page-portfolio .portfolio-stat').html('Загрузка...'); $('.page-portfolio').css('opacity', '0.5'); $.ajax({ url: base_url + '/handler/portfolio/get-portfolio-stat.php', cache: false, type: "POST", data: { view_mode_date: localStorage['view_mode_date'] }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-portfolio').css('opacity', '1'); $('.page-portfolio .portfolio-stat').html(data); adjustPortfolioHeight(); } }); } // Настройка высоты страницы function adjustPortfolioHeight(){ var div_header_height = $('.page-portfolio .bar-header.bar-title').css('height'); var div_header_height_tabs = $('.page-portfolio .bar-header.tabs').css('height'); var summa = ' - ' + div_header_height + ' - ' + div_header_height_tabs; $('.page-portfolio .bar-body').css( 'height', 'calc(100%' + summa + ')' ); } // Фильтр по дням $('.page-portfolio .act-view-mode-day').click(function(){ localStorage['view_mode_date'] = 'VIEW_DAY'; reloadPortfolioPage(); }); // Фильтр по месяцам $('.page-portfolio .act-view-mode-month').click(function(){ localStorage['view_mode_date'] = 'VIEW_MONTH'; reloadPortfolioPage(); }); // Показать владку Наши работы в Заказе function showTaskPortfolio(v_task_id){ $('.loader').show(); $('.page-portfolio .task-list-for-portfolio').html('Загрузка...'); $('.page-portfolio').css('opacity', '0.5'); $.ajax({ url: base_url + '/handler/portfolio/get-task-portfolio.php', cache: false, type: "POST", data: { task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); $('.page-portfolio').css('opacity', '1.0'); $('.page-task-form .bar-portfolio').html(data, // Прогружаем фото портфолио reloadTaskPorfolioPhotoList ( v_task_id ) ); // Создать описание портфолио по товарам в смете заказа $('.page-task-form .act-get-portfolio_descr').click(function(){ genPortfolioData(v_task_id); }); // Выбрана новая Категория для Портфолио $('.page-task-form .select-portfolio_category').change(function(){ changePortfolioCategory(v_task_id); }); // Скопировать Адрес в Местонахождение $('.page-task-form .act-get-portfolio_location').click(function(){ setPortfolioLocation(); }); // Добавить заказ в Портфолио $('.page-task-form .act-add-portfolio').click(function(){ putPortfolio(v_task_id, 'add'); }); // Сохранить портфолио $('.page-task-form .act-save-portfolio').click(function(){ putPortfolio(v_task_id, 'save'); }); // Удалить заказ из Портфолио $('.page-task-form .act-remove-portfolio').click(function(){ putPortfolio(v_task_id, 'remove'); }); // Закрыть страницу заказа $('.page-task-form .act-do-close-task').click(function(){ // Скрываем кнопку, т.к. ее видимость используется в работе глобального Esc $(this).hide(); // Восстанавливаем вызывающий контекст showPage( localStorage['work_mode'] ); }); } }); } // Скопировать Адрес в Местонахождение function setPortfolioLocation(){ if ( $('.page-task-form .bar-portfolio .i-location').val() != '' ){ if ( !confirm('Существующее местоположение будет удалено и заменено новым. Продолжить?') ){ return; } } var address = $('.page-task-form .bar-header .d-object_address').html(); $('.page-task-form .bar-portfolio .i-location').val( address ); } // Выбрана новая Категория для Портфолио function changePortfolioCategory(v_task_id){ var z_color = $('.page-task-form .select-portfolio_category option:selected').attr('data-color'); $('.page-task-form .bar-portfolio img.portfolio-marker').attr( 'src', '/img/yandex-location/' + z_color + '.png' ); } // Автоматическое создание описания по товарам в смете заказа function genPortfolioData(v_task_id){ if ( $('.page-task-form .bar-portfolio .i-descr').val() != '' ){ if ( !confirm('Существующее описание будет удалено и заменено новым. Продолжить?') ){ return; } } $('.loader').show(); $.ajax({ url: base_url + '/handler/portfolio/get-portfolio-data.php', cache: false, type: "POST", data: { task_id: v_task_id }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(json){ $('.loader').hide(); var data = $.parseJSON(json); $('.page-task-form .bar-portfolio .i-descr').val( data.descr ); } }); } function putPortfolio(v_task_id, v_action){ $('.loader').show(); $.ajax({ url: base_url + '/handler/portfolio/put-portfolio.php', cache: false, type: "POST", data: { action: v_action, task_id: v_task_id, category_id: $('.page-task-form .tabcard[data-tab="portfolio"] .select-portfolio_category').val(), descr: $('.page-task-form .tabcard[data-tab="portfolio"] .i-descr').val(), location: $('.page-task-form .tabcard[data-tab="portfolio"] .i-location').val() }, statusCode: { 401: function() { document.location.href = base_url; } }, success: function(data){ $('.loader').hide(); showTaskPortfolio(v_task_id); } }); } // Скопировать в буфер обмена строку function copyText(elem) { var $tmp = $('