// Серверное время
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 = 'Найдено совпадений ' + 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 = $('