2326 lines
135 KiB
PHP
2326 lines
135 KiB
PHP
|
|
<?php
|
|||
|
|
|
|||
|
|
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
|||
|
|
if(!$_SESSION['id']) { header("location:index.php"); die("Доступ запрещён!");}
|
|||
|
|
$get = clearInputData($_GET);
|
|||
|
|
|
|||
|
|
require($_SERVER['DOCUMENT_ROOT']."/templates/new-header.php");
|
|||
|
|
|
|||
|
|
$user_view = null;
|
|||
|
|
$idAgentForView = null;
|
|||
|
|
$idManagerForView = null;
|
|||
|
|
|
|||
|
|
unset($_SESSION['filter_partner']);
|
|||
|
|
unset($_SESSION['order']);
|
|||
|
|
unset($_SESSION['of_objects']);
|
|||
|
|
unset($_SESSION['isPartner']);
|
|||
|
|
unset($_SESSION['todayTasks']);
|
|||
|
|
unset($_SESSION['overTasks']);
|
|||
|
|
unset($_SESSION['filter_stage_work']);
|
|||
|
|
unset($_SESSION['filter_stage_hot']);
|
|||
|
|
unset($_SESSION['filter_stage_close']);
|
|||
|
|
unset($_SESSION['filter_stage_hit']);
|
|||
|
|
unset($_SESSION['filter_confirm']);
|
|||
|
|
unset($_SESSION['filter_stage_send']);
|
|||
|
|
unset($_SESSION['filter_work_ahency']);
|
|||
|
|
|
|||
|
|
|
|||
|
|
?>
|
|||
|
|
|
|||
|
|
<script type="text/javascript" src="/js/vue-multiselect.min.js"></script>
|
|||
|
|
<script type="text/javascript" src="/js/vue-simple-progress.min.js"></script>
|
|||
|
|
<script type="text/javascript" src="/js/vuejs-datepicker.min.js"></script>
|
|||
|
|
<script src="/js/locale/translations/ru.js"></script>
|
|||
|
|
<script type="text/javascript" src="/js/bootstrap.js"></script>
|
|||
|
|
<script type="text/javascript" src="/js/jquery.bootgrid.js"></script>
|
|||
|
|
<link rel="stylesheet" href="/css/vue-multiselect.min.css">
|
|||
|
|
<link rel="stylesheet" href="/css/funnel.css?v=<?=filemtime($_SERVER['DOCUMENT_ROOT'].'/css/funnel.css')?>">
|
|||
|
|
<link rel="stylesheet" href="/css/all.min.css">
|
|||
|
|
<link rel="stylesheet" href="/css/bootstrap.css" type="text/css">
|
|||
|
|
<link rel="stylesheet" href="/css/jquery.bootgrid.css" type="text/css">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<style>
|
|||
|
|
#obj-stat-grid-full-header .dropdown-menu li:nth-child(1),
|
|||
|
|
#obj-stat-grid-full-header .dropdown-menu li:nth-child(6),
|
|||
|
|
#obj-stat-grid-full-header .dropdown-menu li:nth-child(18) {
|
|||
|
|
display: none;
|
|||
|
|
}
|
|||
|
|
.datepicker-filter{
|
|||
|
|
width: 70px;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
.grid_table{
|
|||
|
|
overflow: auto;
|
|||
|
|
}
|
|||
|
|
.grid_table.table_old table{
|
|||
|
|
width: 2800px;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
.grid_table .bootgrid-table{
|
|||
|
|
display: unset;
|
|||
|
|
}
|
|||
|
|
.first_column{
|
|||
|
|
position: absolute;
|
|||
|
|
background: white;
|
|||
|
|
padding: 18px 0 0 30px;
|
|||
|
|
overflow: hidden;
|
|||
|
|
margin: 64px 0 0 20px;
|
|||
|
|
z-index: 1;
|
|||
|
|
}
|
|||
|
|
.first_column table{
|
|||
|
|
width: 300px;
|
|||
|
|
margin-bottom: 0;
|
|||
|
|
}
|
|||
|
|
#object_list_table td.select-cell .select-box, #obj-stat-grid-full td.select-cell .select-box {
|
|||
|
|
display: none;
|
|||
|
|
}
|
|||
|
|
.row-selected, .row-selected td {
|
|||
|
|
background-color: #bae1bc !important;
|
|||
|
|
}
|
|||
|
|
</style>
|
|||
|
|
|
|||
|
|
<script type="text/javascript" src="/js/vue-select.js?v=21"></script>
|
|||
|
|
|
|||
|
|
<link rel="stylesheet" href="/css/vue-select.css?v=21">
|
|||
|
|
|
|||
|
|
<div class="content-right">
|
|||
|
|
<div class="inner">
|
|||
|
|
<div class="main-title">
|
|||
|
|
<input type="hidden" value="<?= $_SESSION['id']; ?>" id="session_user_id" />
|
|||
|
|
<input type="hidden" value="<?= $_SESSION['agency_id']; ?>" id="session_agency_id" />
|
|||
|
|
<input type="hidden" value="<?= $_SESSION['users_admin']; ?>" id="session_user_admin" />
|
|||
|
|
<input type="hidden" value="<?= $_SESSION['to_send']; ?>" id="session_to_send" />
|
|||
|
|
<h1>Кабинет</h1>
|
|||
|
|
</div>
|
|||
|
|
<div class="jw__page__tabs">
|
|||
|
|
<a href="javascript:{}" data-tab="dashboard" class="tab selected">
|
|||
|
|
<span>Рабочий стол</span>
|
|||
|
|
<!--<i class="jw__tab__counter" id="activeObj">3</i>-->
|
|||
|
|
</a>
|
|||
|
|
<a href="javascript:{}" data-tab="tasks" class="tab">
|
|||
|
|
<span>Задачи</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
<a href="javascript:{}" data-tab="stats" class="tab">
|
|||
|
|
<span>Статистика</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
<a id="__SHOW_TABLE_LIST" href="javascript:{}" class="__tab" style="display:none;">
|
|||
|
|
<span>Сохранённые таблицы</span>
|
|||
|
|
</a>
|
|||
|
|
<div id="__TABLE_LIST">
|
|||
|
|
<p id="__TABLE_LIST_CLOSE" style=""></p>
|
|||
|
|
<div>
|
|||
|
|
<p data-table-id="0">Стандартная</p>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
<a href="/new-stat-table.php" class="__tab tab__new-object" style="padding-left:32px;display:none;">
|
|||
|
|
<i class="ti-plus"></i>
|
|||
|
|
<span>Новая таблица</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
<!--<a href="javascript:{}" data-tab="tasks_objects" class="tab">
|
|||
|
|
<span>Задачи объекты</span>
|
|||
|
|
</a>-->
|
|||
|
|
|
|||
|
|
<a href="javascript:{}" data-tab="stats_objects" class="tab">
|
|||
|
|
<span>Статистика объекты</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
<?php
|
|||
|
|
$see_telephony = false;
|
|||
|
|
|
|||
|
|
$sql_see = "SELECT id FROM `agency_mango` WHERE agency_id={$user->agencyId}
|
|||
|
|
union SELECT id FROM `agency_megafon` WHERE agency_id={$user->agencyId} or agency_id_chaild={$user->agencyId}
|
|||
|
|
union SELECT id FROM `agency_tele2` WHERE agency_id={$user->agencyId}
|
|||
|
|
union SELECT id FROM `agency_alloincognito` WHERE agency_id={$user->agencyId}
|
|||
|
|
";
|
|||
|
|
|
|||
|
|
$q_see = mysql_query($sql_see);
|
|||
|
|
if(mysql_num_rows($q_see) > 0){
|
|||
|
|
$see_telephony = true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if($_SESSION['id'] == 5238){
|
|||
|
|
$see_telephony = true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if($see_telephony) { ?>
|
|||
|
|
<a href="javascript:{}" data-tab="telephony" class="tab">
|
|||
|
|
<span>Телефония</span>
|
|||
|
|
</a>
|
|||
|
|
<?php } ?>
|
|||
|
|
<style>
|
|||
|
|
#__TABLE_LIST {
|
|||
|
|
display: none;
|
|||
|
|
padding: 25px 20px 15px;
|
|||
|
|
position: absolute;
|
|||
|
|
top: 63px;
|
|||
|
|
left: 404px;
|
|||
|
|
background: #fff;
|
|||
|
|
width: fit-content;
|
|||
|
|
height: fit-content;
|
|||
|
|
box-shadow: 0 2px 7px rgba(0, 0, 0, 0.13);
|
|||
|
|
z-index: 7
|
|||
|
|
}
|
|||
|
|
#__TABLE_LIST_CLOSE {
|
|||
|
|
position: absolute;
|
|||
|
|
top: 7px;
|
|||
|
|
right: 7px;
|
|||
|
|
font-size: 16px;
|
|||
|
|
cursor: pointer;
|
|||
|
|
|
|||
|
|
font-family: 'themify';
|
|||
|
|
speak: none;
|
|||
|
|
font-style: normal;
|
|||
|
|
font-weight: normal;
|
|||
|
|
font-variant: normal;
|
|||
|
|
text-transform: none;
|
|||
|
|
line-height: 1;
|
|||
|
|
-webkit-font-smoothing: antialiased;
|
|||
|
|
-moz-osx-font-smoothing: grayscale;
|
|||
|
|
}
|
|||
|
|
#__TABLE_LIST_CLOSE::before {
|
|||
|
|
content: "\e646";
|
|||
|
|
}
|
|||
|
|
#__TABLE_LIST div {
|
|||
|
|
padding: 6px 0;
|
|||
|
|
max-width: 300px;
|
|||
|
|
}
|
|||
|
|
#__TABLE_LIST div > p {
|
|||
|
|
cursor: pointer;
|
|||
|
|
font-size: 17px;
|
|||
|
|
}
|
|||
|
|
#__TABLE_LIST div > p:hover {
|
|||
|
|
text-decoration: underline;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
.jw__page__tabs .__tab {
|
|||
|
|
font-size: 16px;
|
|||
|
|
}
|
|||
|
|
.jw__page__tabs .__tab {
|
|||
|
|
position: relative;
|
|||
|
|
display: inline-block;
|
|||
|
|
padding: 19px 0 23px;
|
|||
|
|
margin-right: 40px;
|
|||
|
|
cursor: pointer;
|
|||
|
|
border: 0;
|
|||
|
|
font-size: 17px;
|
|||
|
|
}
|
|||
|
|
.jw__page__tabs .__tab span {
|
|||
|
|
border-bottom: 1px solid #bdbdbd;
|
|||
|
|
font-size: 16px;
|
|||
|
|
}
|
|||
|
|
.__tab.tab__new-object i {
|
|||
|
|
position: absolute;
|
|||
|
|
left: 0;
|
|||
|
|
top: 50%;
|
|||
|
|
margin-top: -12px;
|
|||
|
|
font-size: 24px;
|
|||
|
|
color: #4CAF50;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.grid_table.table_old .btn-group,.grid_table.table_old .btn-group-vertical{
|
|||
|
|
display: inline-flex !important;
|
|||
|
|
}
|
|||
|
|
</style>
|
|||
|
|
</div>
|
|||
|
|
<div class="crm new">
|
|||
|
|
<div class="crm__filters" style="z-index: 7">
|
|||
|
|
<div class="crm__filters-inner">
|
|||
|
|
<div class="search-query">
|
|||
|
|
<div class="search-query-item">
|
|||
|
|
<span>0 опций</span>
|
|||
|
|
<i class="ti-close"></i>
|
|||
|
|
</div>
|
|||
|
|
<!--<div class="search-query-item">
|
|||
|
|
<span>Я</span>
|
|||
|
|
<i class="ti-close"></i>
|
|||
|
|
</div>-->
|
|||
|
|
</div>
|
|||
|
|
<div class="search-filter">
|
|||
|
|
<input type="text" tabindex="1" value="" name="" placeholder="Фильтр" class="search-filter__filter" id="" autocomplete="off">
|
|||
|
|
<div class="search-filter__icons">
|
|||
|
|
<i class="ti-search" title="Искать"></i>
|
|||
|
|
<i class="ti-close" title="Очистить"></i>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="crm__new-task hidden">
|
|||
|
|
<button class="jw__g-button" id="jw__add-task">Задача</button>
|
|||
|
|
</div>
|
|||
|
|
<!-- <div class="crm__new-event hidden">
|
|||
|
|
<button class="jw__g-button" id="jw__add-event">Событие</button>
|
|||
|
|
</div>-->
|
|||
|
|
<div id="export_stat_client" style="margin-left: 20px; margin-top: 3px; display:none;" class="crm__new-client">
|
|||
|
|
<a href="javascript:{}" class="jw__g-button">Экспорт в Excel</a>
|
|||
|
|
</div>
|
|||
|
|
<div class="view-changer">
|
|||
|
|
|
|||
|
|
<div class="view-charts <?=(!isset($_SESSION['table'])) ? 'active' : ''?>">
|
|||
|
|
|
|||
|
|
<a href="javascript:{}">
|
|||
|
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" viewBox="0 0 476.3 476.3" style="enable-background:new 0 0 476.3 476.3;" xml:space="preserve">
|
|||
|
|
<g>
|
|||
|
|
<g>
|
|||
|
|
<path d="M411.75,250.2h-185.6V64.6c0-7.5-6-13.5-13.5-13.5c-117.2,0-212.6,95.4-212.6,212.6s95.4,212.6,212.6,212.6 s212.6-95.4,212.6-212.6C425.25,256.3,419.15,250.2,411.75,250.2z M212.65,449.3c-102.3,0-185.6-83.3-185.6-185.6 c0-97.8,76-178.2,172.1-185.1v185.1c0,7.5,6,13.5,13.5,13.5h185.1C390.85,373.3,310.45,449.3,212.65,449.3z" fill="#757575"/>
|
|||
|
|
<path d="M476.25,211.9c-0.2-51.6-19.1-101.3-53.2-140C382.65,26.2,324.65,0,263.65,0c-7.5,0-13.5,6-13.5,13.5v199.1 c0,7.5,6,13.5,13.5,13.5h199.1l0,0c7.5,0,13.5-6,13.5-13.5C476.25,212.4,476.25,212.2,476.25,211.9z M277.15,199.2V27.6 c48.2,3.5,93.4,25.8,125.6,62.3c27,30.5,43,68.9,46,109.3H277.15z" fill="#757575"/>
|
|||
|
|
</g>
|
|||
|
|
</g>
|
|||
|
|
<g>
|
|||
|
|
</g>
|
|||
|
|
<g>
|
|||
|
|
</g>
|
|||
|
|
<g>
|
|||
|
|
</g>
|
|||
|
|
<g>
|
|||
|
|
</g>
|
|||
|
|
<g>
|
|||
|
|
</g>
|
|||
|
|
<g>
|
|||
|
|
</g>
|
|||
|
|
<g>
|
|||
|
|
</g>
|
|||
|
|
<g>
|
|||
|
|
</g>
|
|||
|
|
<g>
|
|||
|
|
</g>
|
|||
|
|
<g>
|
|||
|
|
</g>
|
|||
|
|
<g>
|
|||
|
|
</g>
|
|||
|
|
<g>
|
|||
|
|
</g>
|
|||
|
|
<g>
|
|||
|
|
</g>
|
|||
|
|
<g>
|
|||
|
|
</g>
|
|||
|
|
<g>
|
|||
|
|
</g>
|
|||
|
|
</svg>
|
|||
|
|
<span>График</span>
|
|||
|
|
</a>
|
|||
|
|
</div>
|
|||
|
|
<div class="view-table <?=(isset($_SESSION['table'])) ? 'active' : ''?>">
|
|||
|
|
<a href="javascript:{}">
|
|||
|
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 512 512" xml:space="preserve"><g><g><path d="M0,96v128h128V96H0z M112,208H16v-96h96V208z" fill="#757575"/></g></g><g><g><path d="M192,96v128h128V96H192z M304,208h-96v-96h96V208z" fill="#757575"/></g></g><g><g><path d="M384,96v128h128V96H384z M496,208h-96v-96h96V208z" fill="#757575"/></g></g><g><g><path d="M0,288v128h128V288H0z M112,400H16v-96h96V400z" fill="#757575"/></g></g><g><g><path d="M192,288v128h128V288H192z M304,400h-96v-96h96V400z" fill="#757575"/></g></g><g><g><path d="M384,288v128h128V288H384z M496,400h-96v-96h96V400z" fill="#757575"/></g></g></svg>
|
|||
|
|
<span>Таблица</span>
|
|||
|
|
</a>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
<div class="crm__filter-popup">
|
|||
|
|
<span class="pseudo-link closer"><i class="ti-close"></i></span>
|
|||
|
|
<div class="filter-popup-items">
|
|||
|
|
|
|||
|
|
<div class="filter-popup__left">
|
|||
|
|
<div id="filter_task" class="hidden">
|
|||
|
|
<div class="filter-popup-type active" id="all_tasks">
|
|||
|
|
<a href="javascript:{}"><span>Все задачи</span></a>
|
|||
|
|
</div>
|
|||
|
|
<div class="filter-popup-type" id="open_tasks">
|
|||
|
|
<a href="javascript:{}"><span>Открытые</span></a>
|
|||
|
|
</div>
|
|||
|
|
<div class="filter-popup-type" id="overdue_tasks">
|
|||
|
|
<a href="javascript:{}"><span>Просроченные</span></a>
|
|||
|
|
</div>
|
|||
|
|
<div class="filter-popup-type" id="completed_tasks">
|
|||
|
|
<a href="javascript:{}"><span>Выполненные</span></a>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<?php
|
|||
|
|
$period = '30days';
|
|||
|
|
if(isset($_GET['period'])){
|
|||
|
|
$period = $_GET['period'];
|
|||
|
|
}
|
|||
|
|
?>
|
|||
|
|
<div id="filter_time">
|
|||
|
|
<div class="filter-popup-type period<?=($period=='today') ? ' active' : ''?>" id="today">
|
|||
|
|
<a href="javascript:{}"><span>Сегодня</span></a>
|
|||
|
|
</div>
|
|||
|
|
<div class="filter-popup-type period<?=($period=='week') ? ' active' : ''?>" id="week">
|
|||
|
|
<a href="javascript:{}"><span>Неделя</span></a>
|
|||
|
|
</div>
|
|||
|
|
<div class="filter-popup-type period<?=($period=='month') ? ' active' : ''?>" id="month">
|
|||
|
|
<a href="javascript:{}"><span>Месяц</span></a>
|
|||
|
|
</div>
|
|||
|
|
<div class="filter-popup-type period<?=($period=='30days') ? ' active' : ''?>" id="30days">
|
|||
|
|
<a href="javascript:{}"><span>Последние 30 дней</span></a>
|
|||
|
|
</div>
|
|||
|
|
<div class="filter-popup-type period<?=($period=='quarter') ? ' active' : ''?>" id="quarter">
|
|||
|
|
<a href="javascript:{}"><span>Квартал</span></a>
|
|||
|
|
</div>
|
|||
|
|
<div class="filter-popup-type period<?=($period=='90days') ? ' active' : ''?>" id="90days">
|
|||
|
|
<a href="javascript:{}"><span>Последние 90 дней</span></a>
|
|||
|
|
</div>
|
|||
|
|
<div class="filter-popup-type period<?=($period=='year') ? ' active' : ''?>" id="year">
|
|||
|
|
<a href="javascript:{}"><span>Год</span></a>
|
|||
|
|
</div>
|
|||
|
|
<div class="filter-popup-type period<?=($period=='all') ? ' active' : ''?>" id="all">
|
|||
|
|
<a href="javascript:{}"><span>Все время</span></a>
|
|||
|
|
</div>
|
|||
|
|
<div class="filter-popup-type period<?=($period=='dates') ? ' active' : ''?>" style="padding: 0px;" id="dates">
|
|||
|
|
<a style="padding: 0 35px 16px;" href="javascript:{}"><span>Период</span></a>
|
|||
|
|
<div id="dates_period" style="padding: 0 5px 16px;">
|
|||
|
|
с <input type="text" id="onDate" class="text datepicker-filter" value="">
|
|||
|
|
по <input type="text" id="offDate" class="text datepicker-filter" value="">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="filter-popup__right">
|
|||
|
|
<div class="filter-popup-header-inputs">
|
|||
|
|
<h3 style="display:inline-flex;">Параметры</h3>
|
|||
|
|
<button class="top-line__button button-fl-right" onclick="get_sourse_filter();$('.crm__filter-popup').removeClass('is__show');" type="button" style="margin-right: 50px;font-size: 14px;font-weight: normal;padding: 5px 13px;margin-top: -3px;">Применить</button>
|
|||
|
|
</div>
|
|||
|
|
<div class="filter-popup-input charts-type-input">
|
|||
|
|
<div class="crm__filter-input clientreq">
|
|||
|
|
<select id="filter-clientreq">
|
|||
|
|
|
|||
|
|
<option value="0">Клиенты</option>
|
|||
|
|
<option value="1">Заявки</option>
|
|||
|
|
|
|||
|
|
</select>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<?php
|
|||
|
|
$id_select = 'ms-crm-charts-work';
|
|||
|
|
$id_select_input = '';
|
|||
|
|
$showBlocked = true;
|
|||
|
|
// if($_SESSION['id'] == 5238 || $_SESSION['id'] == 5455){
|
|||
|
|
require($_SERVER['DOCUMENT_ROOT']."/templates/filter_emp.php");
|
|||
|
|
|
|||
|
|
?>
|
|||
|
|
|
|||
|
|
<div class="filter-popup-input charts-type-input">
|
|||
|
|
<div class="crm__filter-input">
|
|||
|
|
<select id="filter-charts-type" multiple>
|
|||
|
|
<?php
|
|||
|
|
if ($user->agencyId == 12482 && !in_array("Кадастр",$WORK_TYPES)){
|
|||
|
|
$WORK_TYPES[] = "Кадастр";
|
|||
|
|
$WORK_TYPES[] = "Соискатель";
|
|||
|
|
}
|
|||
|
|
if ($user->agencyId == 12061 && !in_array("Партнёр",$WORK_TYPES)){
|
|||
|
|
$WORK_TYPES[] = "Партнёр";
|
|||
|
|
}
|
|||
|
|
foreach($WORK_TYPES as $key => $val){
|
|||
|
|
if($key > 0){
|
|||
|
|
?>
|
|||
|
|
<option data-op="<?=$key?>" value="<?=$val?>"><?=$val?></option>
|
|||
|
|
<?php
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
?>
|
|||
|
|
</select>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="filter-popup-input charts-activities-input">
|
|||
|
|
<div class="crm__filter-input">
|
|||
|
|
<select id="filter_charts_activities" multiple="">
|
|||
|
|
<?php
|
|||
|
|
|
|||
|
|
$sql_adv = "SELECT * FROM `activities` WHERE `user_id` = '".$user->id."' or `manager_id` = '".$user->id."'";
|
|||
|
|
if($user->id_manager){
|
|||
|
|
$sql_adv .= " or `manager_id` = '".$user->id_manager."' or `user_id` = '".$user->id_manager."'";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if($user -> agencyId){
|
|||
|
|
$sql_adv .= " or `manager_id` = '".$user -> agencyId."' or `user_id` = '".$user -> agencyId."'";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$sql_adv .= ' order by `name`';
|
|||
|
|
$q_adv = mysql_query($sql_adv);
|
|||
|
|
$rows_adv = mysql_num_rows($q_adv);
|
|||
|
|
if($rows_adv > 0){
|
|||
|
|
while($r_adv = mysql_fetch_assoc($q_adv)){
|
|||
|
|
?>
|
|||
|
|
<option value="<?=$r_adv['id']?>"><?=$r_adv['name']?></option>
|
|||
|
|
<?php
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
?>
|
|||
|
|
|
|||
|
|
</select>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="filter-popup-input charts-objects-type-input">
|
|||
|
|
<div class="crm__filter-input">
|
|||
|
|
<select id="filter-charts-objects-type" multiple>
|
|||
|
|
<option data-op="1" value="1к_кв">1к.кв.</option>
|
|||
|
|
<option data-op="2" value="2к_кв">2к.кв.</option>
|
|||
|
|
<option data-op="3" value="3к_кв">3к.кв.</option>
|
|||
|
|
<option data-op="4" value="4к_кв">4к.кв.</option>
|
|||
|
|
<option data-op="5" value="5к_кв">5к.кв.</option>
|
|||
|
|
<option data-op="6" value="6к_кв">6к.кв.</option>
|
|||
|
|
<option data-op="7" value="7к_кв">7к.кв.</option>
|
|||
|
|
<option data-op="8" value="8к_кв">8к.кв.</option>
|
|||
|
|
<option data-op="9" value="9к_кв">9к.кв.</option>
|
|||
|
|
<option data-op="10" value="Более_9_комнат">Более 9 комнат</option>
|
|||
|
|
<option data-op="16" value="Студия">Студия</option>
|
|||
|
|
<option data-op="11" value="Комната">Комната</option>
|
|||
|
|
<option data-op="12" value="Дом">Дом</option>
|
|||
|
|
<option data-op="13" value="Помещение">Помещение</option>
|
|||
|
|
<option data-op="14" value="Часть__дома">Часть дома</option>
|
|||
|
|
<option data-op="15" value="Комплекс__домов">Комплекс домов</option>
|
|||
|
|
<option data-op="17" value="Апартаменты">Апартаменты</option>
|
|||
|
|
<option data-op="18" value="Земельный__участок">Земельный участок</option>
|
|||
|
|
</select>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="filter-popup-input charts-role-input">
|
|||
|
|
<div class="crm__filter-input">
|
|||
|
|
<select id="filter_charts_rol" multiple="multiple">
|
|||
|
|
<?php
|
|||
|
|
if($user->agencyId == 7911){
|
|||
|
|
$ROLES_CLIENTS[] = "Страхование";
|
|||
|
|
$ROLES_CLIENTS[] = "Путевки";
|
|||
|
|
$ROLES_CLIENTS[] = "Юр.услуги";
|
|||
|
|
} else if ($user->agencyId == 12482 && !in_array("Заказчик",$ROLES_CLIENTS)){
|
|||
|
|
$ROLES_CLIENTS[] = "Заказчик";
|
|||
|
|
} else if ($user->agencyId == 12061 && !in_array("Другое",$ROLES_CLIENTS)){
|
|||
|
|
$ROLES_CLIENTS[] = "Другое";
|
|||
|
|
}
|
|||
|
|
foreach($ROLES_CLIENTS as $key => $val){
|
|||
|
|
if($key > 0) {
|
|||
|
|
?>
|
|||
|
|
<option data-op="<?=$key?>" value="<?=$val?>"><?=$val?></option>
|
|||
|
|
<?php
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
?>
|
|||
|
|
</select>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="filter-popup-input charts-source-input">
|
|||
|
|
<div class="crm__filter-input">
|
|||
|
|
<select id="filter_charts_source" multiple="">
|
|||
|
|
<option value="10000"<?=in_array(10000, $arr_source) ? ' selected' : ''?>>Объекты нашей компании</option>
|
|||
|
|
<?php
|
|||
|
|
$arr_source = array();
|
|||
|
|
if(isset($_GET['id_agent'])) unset($_SESSION['filter_source']);
|
|||
|
|
/* if(isset($_SESSION['filter_source'])){
|
|||
|
|
$arr_source = json_decode(html_entity_decode($_SESSION['filter_source']), ENT_QUOTES);
|
|||
|
|
}*/
|
|||
|
|
$sql_adv = "SELECT * FROM `advertising_sources` WHERE `user_id` = '".$user->id."' or `manager_id` = '".$user->id."'";
|
|||
|
|
if($user->id_manager){
|
|||
|
|
$sql_adv .= " or `manager_id` = '".$user->id_manager."' or `user_id` = '".$user->id_manager."'";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if($user -> agencyId){
|
|||
|
|
$sql_adv .= " or `manager_id` = '".$user -> agencyId."' or `user_id` = '".$user -> agencyId."'";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$sql_adv .= ' order by source';
|
|||
|
|
$q_adv = mysql_query($sql_adv);
|
|||
|
|
$rows_adv = mysql_num_rows($q_adv);
|
|||
|
|
if($rows_adv > 0){
|
|||
|
|
while($r_adv = mysql_fetch_assoc($q_adv)){
|
|||
|
|
?>
|
|||
|
|
<option value="<?=$r_adv['id']?>"<?=in_array($r_adv['id'], $arr_source) ? ' selected' : ''?>><?=$r_adv['source']?></option>
|
|||
|
|
<?php
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
?>
|
|||
|
|
<option value="0"<?=in_array(0, $arr_source) ? ' selected' : ''?>>Источник не выбран</option>
|
|||
|
|
</select>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="filter-popup-input charts-partner-input">
|
|||
|
|
<div class="crm__filter-input">
|
|||
|
|
<select id="filter_charts_partner" multiple="">
|
|||
|
|
<?php $partners = new Partners();
|
|||
|
|
$partners_list = $partners->getPartners(true, false, true);
|
|||
|
|
|
|||
|
|
$sel_employees = [];
|
|||
|
|
/*if (isset($_SESSION['filter_partner']))
|
|||
|
|
$sel_employees = json_decode(html_entity_decode($_SESSION['filter_partner']), ENT_QUOTES);*/
|
|||
|
|
|
|||
|
|
foreach ($partners_list as $partner) { ?>
|
|||
|
|
<optgroup label="<?= $partner['name']; ?>">
|
|||
|
|
<option value="all_<?= $partner['id']; ?>"<?= in_array('all_' . $partner['id'], $sel_employees) ? ' selected' : '' ?> data-label="<?= $partner['name'] . " (все сотрудники)"; ?>">
|
|||
|
|
Все сотрудники партнёра
|
|||
|
|
</option>
|
|||
|
|
<?php $employees_list = $partners->getEmployees($partner['id'], true, false, true); ?>
|
|||
|
|
<?php foreach ($employees_list as $employee) {
|
|||
|
|
if ($partner['id'] == $employee['partner_id']) { ?>
|
|||
|
|
<option value="<?= $employee['id']; ?>"<?= in_array($employee['id'], $sel_employees) ? ' selected' : '' ?> data-label="<?= $partner['name'] . " (" . $employee['name'] . (($employee['position']) ? ", " . mb_strtolower($employee['position'], "UTF-8") : ""). ")"; ?>">
|
|||
|
|
<?= $employee['name'] . (($employee['position']) ? ", " . mb_strtolower($employee['position'], "UTF-8") : ""); ?>
|
|||
|
|
</option>
|
|||
|
|
<?php }
|
|||
|
|
} ?>
|
|||
|
|
</optgroup>
|
|||
|
|
<?php
|
|||
|
|
} ?>
|
|||
|
|
<!-- optgroup>
|
|||
|
|
<option value="0"< ?= in_array(0, $partners) ? ' selected' : '' ? >>Без привязки к партнёру</option>
|
|||
|
|
</optgroup -->
|
|||
|
|
</select>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="filter-popup-input charts-funnel-input">
|
|||
|
|
<div id="filter_charts_funnel-input" class="crm__filter-input">
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="filter-priority1" title="Категория клиентов">
|
|||
|
|
<svg x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve" width="24px" height="24px" class="">
|
|||
|
|
<ellipse cx="256" cy="256" rx="240" ry="240" class="priority1"/></svg>
|
|||
|
|
</div>
|
|||
|
|
<div class="filter-priority2" title="Категория клиентов">
|
|||
|
|
<svg x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve" width="24px" height="24px" class="">
|
|||
|
|
<ellipse cx="256" cy="256" rx="240" ry="240" class="priority2"/></svg>
|
|||
|
|
</div>
|
|||
|
|
<div class="filter-priority3" title="Категория клиентов">
|
|||
|
|
<svg x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve" width="24px" height="24px" class="">
|
|||
|
|
<ellipse cx="256" cy="256" rx="240" ry="240" class="priority3"/></svg>
|
|||
|
|
</div>
|
|||
|
|
<div class="filter-priority4" title="Категория клиентов">
|
|||
|
|
<svg x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve" width="24px" height="24px" class="">
|
|||
|
|
<ellipse cx="256" cy="256" rx="240" ry="240" class="priority4"/></svg>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div id="date_tasks" class="">
|
|||
|
|
<div class="filter-popup-input" style="margin-bottom: 30px;">
|
|||
|
|
<div class="checkbox">
|
|||
|
|
<input name="date_tasks" id="date_no_closer" value="11" type="radio" checked="">
|
|||
|
|
<label for="date_no_closer">По дате создания</label>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="filter-popup-input">
|
|||
|
|
<div class="checkbox">
|
|||
|
|
<input name="date_tasks" id="date_closer" value="10" type="radio"> <label for="date_closer">По дате закрытия</label>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<div class="crm__tasks hidden">
|
|||
|
|
<script type="text/javascript" src="/js/moment.min.js"></script>
|
|||
|
|
<script type="text/javascript" src="/js/calendar.js"></script>
|
|||
|
|
<script type="text/javascript" src="/js/calendar-ru.js"></script>
|
|||
|
|
|
|||
|
|
<div id='calendar'></div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="crm__tasks_objects hidden">
|
|||
|
|
|
|||
|
|
<div id='calendar_object'></div>
|
|||
|
|
</div>
|
|||
|
|
<div class="crm__dashboard hidden">
|
|||
|
|
<div class="crm__widget dashboard__widget widget33 widget-colored dashboard-work">
|
|||
|
|
<a href="">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Клиентов в работе</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="widget-number"><img src="../images/rocket-spinner.svg" width="50px">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</a>
|
|||
|
|
</div>
|
|||
|
|
<!-- если нет текущих задач не выводим класс widget-colored dashboard-tasks и убираем ссылку-->
|
|||
|
|
<div class="crm__widget dashboard__widget widget33 widget-colored dashboard-tasks">
|
|||
|
|
<a href="javascript:{}" onclick="showCalendar('open_tasks', 'client');">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Открытые задачи по клиентам</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="widget-number"><img src="../images/rocket-spinner.svg" width="50px">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</a>
|
|||
|
|
</div>
|
|||
|
|
<!-- если нет просроченных задач не выводим класс widget-colored dashboard-overdue-tasks и убираем ссылку -->
|
|||
|
|
<div class="crm__widget dashboard__widget widget33" id="dashboard_overdue_tasks">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Задач просрочено по клиентам</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="widget-number"><img src="../images/rocket-spinner.svg" width="50px">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<div class="crm__widget dashboard__widget widget33" id="expired_stages_clients">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Клиенты с просроченными этапами</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="widget-number"><img src="../images/rocket-spinner.svg" width="50px">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="crm__widget dashboard__widget widget33 widget-colored requisitions">
|
|||
|
|
<a href="">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Заявок в работе</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="widget-number"><img src="../images/rocket-spinner.svg" width="50px">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</a>
|
|||
|
|
</div>
|
|||
|
|
<div class="crm__widget dashboard__widget widget33 widget-colored open-tasks-requisitions">
|
|||
|
|
<a href="javascript:{}" onclick="showCalendar('open_tasks', 'req');">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Открытые задачи по заявкам</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="widget-number">
|
|||
|
|
<img src="../images/rocket-spinner.svg" width="50px">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</a>
|
|||
|
|
</div>
|
|||
|
|
<div class="crm__widget dashboard__widget widget33 widget-colored" id="expired-tasks-requisitions">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Задач просрочено по заявкам</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="widget-number"><img src="../images/rocket-spinner.svg" width="50px">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="crm__widget dashboard__widget widget33" id="expired_stages_requisitions">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Заявки с просроченными этапами</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="widget-number"><img src="../images/rocket-spinner.svg" width="50px">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="crm__widget dashboard__widget widget33 widget-colored objects">
|
|||
|
|
<a href="/my-objects.php">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Объекты всего</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="widget-number"><img src="../images/rocket-spinner.svg" width="50px">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</a>
|
|||
|
|
</div>
|
|||
|
|
<div class="crm__widget dashboard__widget widget33 widget-colored objects-advert">
|
|||
|
|
<a href="<?=(($user->agency) || ($menuPermissions && $menuPermissions['menu_ads'] == 1)) ? '/agency-objects.php' : 'javascript:{}'?>" <?=(($user->agency) || ($menuPermissions && $menuPermissions['menu_ads'] != 1)) ? 'onclick="show_no_all_objects_page()"' : ''?>>
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Объекты в рекламе</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="widget-number"><img src="../images/rocket-spinner.svg" width="50px">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</a>
|
|||
|
|
</div>
|
|||
|
|
<div class="crm__widget dashboard__widget widget33 widget-colored open-tasks-objects">
|
|||
|
|
<a href="javascript:{}" onclick="showCalendar('open_tasks', 'object');">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Открытые задачи по объектам</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="widget-number"><img src="../images/rocket-spinner.svg" width="50px">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</a>
|
|||
|
|
</div>
|
|||
|
|
<div class="crm__widget dashboard__widget widget33" id="expired_tasks_objects">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Задач просрочено по объектам</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="widget-number"><img src="../images/rocket-spinner.svg" width="50px">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="crm__widget dashboard__widget widget33 widget-colored successful-clients">
|
|||
|
|
<a href="/clients.php">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Успешные клиенты</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="widget-number"><img src="../images/rocket-spinner.svg" width="50px">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</a>
|
|||
|
|
</div>
|
|||
|
|
<div class="crm__widget dashboard__widget widget33 widget-colored closed-clients">
|
|||
|
|
<a href="/clients.php">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Закрытые клиенты</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="widget-number"><img src="../images/rocket-spinner.svg" width="50px">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</a>
|
|||
|
|
</div>
|
|||
|
|
<div class="crm__widget dashboard__widget widget33 widget-colored successful-requisitions">
|
|||
|
|
<a href="/requisitions.php">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Успешные заявки</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="widget-number"><img src="../images/rocket-spinner.svg" width="50px">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</a>
|
|||
|
|
</div>
|
|||
|
|
<div class="crm__widget dashboard__widget widget33 widget-colored closed-requisitions">
|
|||
|
|
<a href="/requisitions.php">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Закрытые заявки</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="widget-number"><img src="../images/rocket-spinner.svg" width="50px">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</a>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="crm__widget widget100">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">План продаж</div>
|
|||
|
|
<div class="view-table-sales_plan">
|
|||
|
|
<a href="javascript:{}">
|
|||
|
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 512 512" xml:space="preserve"><g><g><path d="M0,96v128h128V96H0z M112,208H16v-96h96V208z" fill="#757575"></path></g></g><g><g><path d="M192,96v128h128V96H192z M304,208h-96v-96h96V208z" fill="#757575"></path></g></g><g><g><path d="M384,96v128h128V96H384z M496,208h-96v-96h96V208z" fill="#757575"></path></g></g><g><g><path d="M0,288v128h128V288H0z M112,400H16v-96h96V400z" fill="#757575"></path></g></g><g><g><path d="M192,288v128h128V288H192z M304,400h-96v-96h96V400z" fill="#757575"></path></g></g><g><g><path d="M384,288v128h128V288H384z M496,400h-96v-96h96V400z" fill="#757575"></path></g></g></svg>
|
|||
|
|
<span>Таблица</span>
|
|||
|
|
</a>
|
|||
|
|
</div>
|
|||
|
|
<div class="clear"></div>
|
|||
|
|
</div>
|
|||
|
|
<div class="crm__target work-target" id="widget_sales_plan">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="crm__stats_objects hidden">
|
|||
|
|
<!-- <div class="first_column" style="padding: 15px 0 0 30px;">
|
|||
|
|
|
|||
|
|
<table id="obj-stat-grid" style="width:300px" class="table table-condensed table-hover table-striped bootgrid-table" aria-busy="false">
|
|||
|
|
|
|||
|
|
</table>
|
|||
|
|
</div> -->
|
|||
|
|
<div id="stats_sources_list-obj-stat-grid" class="grid_table table_old">
|
|||
|
|
<?php
|
|||
|
|
$sql = 'SELECT item_list FROM `reclame_table` WHERE id_user='.$_SESSION['id']. ' AND id_table=10';
|
|||
|
|
$reSql = mysql_query($sql);
|
|||
|
|
$res = mysql_fetch_assoc($reSql);
|
|||
|
|
$resList = $res['item_list'];
|
|||
|
|
?>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
let columnsShow = '<?= $resList ? $resList : null; ?>';
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<?php require_once('ajax/getGridTableStatisticsObjects.php'); ?>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="crm__stats hidden">
|
|||
|
|
<div class="crm__widget widget50 funnel_widget">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head" style="padding-bottom: 0px;">
|
|||
|
|
<div style="float:left;" class="widget-title">Воронка продаж</div>
|
|||
|
|
<div class="view-table-funnel">
|
|||
|
|
<a href="javascript:{}">
|
|||
|
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 512 512" xml:space="preserve"><g><g><path d="M0,96v128h128V96H0z M112,208H16v-96h96V208z" fill="#757575"/></g></g><g><g><path d="M192,96v128h128V96H192z M304,208h-96v-96h96V208z" fill="#757575"/></g></g><g><g><path d="M384,96v128h128V96H384z M496,208h-96v-96h96V208z" fill="#757575"/></g></g><g><g><path d="M0,288v128h128V288H0z M112,400H16v-96h96V400z" fill="#757575"/></g></g><g><g><path d="M192,288v128h128V288H192z M304,400h-96v-96h96V400z" fill="#757575"/></g></g><g><g><path d="M384,288v128h128V288H384z M496,400h-96v-96h96V400z" fill="#757575"/></g></g></svg>
|
|||
|
|
<span>Таблица</span>
|
|||
|
|
</a>
|
|||
|
|
</div>
|
|||
|
|
<div class="clear"></div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div id="widgetSalesFunnel">
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
<div id="widgetSalesFunnelTotal"></div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="crm__widget widget50 sources_widget">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head" style="padding-bottom: 0px;">
|
|||
|
|
<div style="float:left;" class="widget-title">Клиенты по рекламным источникам/партнёрам</div>
|
|||
|
|
<div class="view-table-funnel">
|
|||
|
|
<a href="javascript:{}">
|
|||
|
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 512 512" xml:space="preserve"><g><g><path d="M0,96v128h128V96H0z M112,208H16v-96h96V208z" fill="#757575"/></g></g><g><g><path d="M192,96v128h128V96H192z M304,208h-96v-96h96V208z" fill="#757575"/></g></g><g><g><path d="M384,96v128h128V96H384z M496,208h-96v-96h96V208z" fill="#757575"/></g></g><g><g><path d="M0,288v128h128V288H0z M112,400H16v-96h96V400z" fill="#757575"/></g></g><g><g><path d="M192,288v128h128V288H192z M304,400h-96v-96h96V400z" fill="#757575"/></g></g><g><g><path d="M384,288v128h128V288H384z M496,400h-96v-96h96V400z" fill="#757575"/></g></g></svg>
|
|||
|
|
<span>Таблица</span>
|
|||
|
|
</a>
|
|||
|
|
</div>
|
|||
|
|
<div class="clear"></div>
|
|||
|
|
</div>
|
|||
|
|
<div id="widgetClientsSources"></div>
|
|||
|
|
<div id="widgetSalesSourcesTotal"></div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="crm__widget widget33 widget-colored stats-conversion">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Конверсия</div>
|
|||
|
|
</div>
|
|||
|
|
<!--
|
|||
|
|
конверсия = количество сделок / количество клиентов в работе (с учетом фильтров)
|
|||
|
|
-->
|
|||
|
|
<div class="widget-number">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="crm__widget widget66 widget-colored">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Конверсия во времени</div>
|
|||
|
|
</div>
|
|||
|
|
<!--
|
|||
|
|
конверсия = количество сделок / количество клиентов в работе (с учетом фильтров)
|
|||
|
|
-->
|
|||
|
|
<div id="widgetConversion"></div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="crm__widget widget100">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Сумма сделок</div>
|
|||
|
|
</div>
|
|||
|
|
<!--
|
|||
|
|
= сумма всех сделок (с учетом фильтров)
|
|||
|
|
-->
|
|||
|
|
<div class="widget-number">
|
|||
|
|
<span id="summas_sdelok"></span><span class="rub">p</span>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="crm__widget widget100">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Количество клиентов у сотрудника всего</div>
|
|||
|
|
</div>
|
|||
|
|
<div id="widgetClientsQuantity"></div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="crm__widget widget100">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Количество добавленных клиентов сотрудником</div>
|
|||
|
|
</div>
|
|||
|
|
<div id="widgetClientsQuantityAdd"></div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="crm__widget widget50">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Клиенты по группам менеджеров</div>
|
|||
|
|
</div>
|
|||
|
|
<div id="widgetClientsQuantityByManagers"></div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="crm__widget widget50">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Сделки по группам менеджеров</div>
|
|||
|
|
</div>
|
|||
|
|
<div id="widgetDealsQuantityByManagers"></div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="crm__widget widget100">
|
|||
|
|
<div class="widget-inner">
|
|||
|
|
<div class="widget-head">
|
|||
|
|
<div class="widget-title">Активность</div>
|
|||
|
|
</div>
|
|||
|
|
<div id="widgetActivity"></div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="crm__table hidden">
|
|||
|
|
|
|||
|
|
<?php
|
|||
|
|
$sql_d = "SELECT * FROM denial_work WHERE (agency_id = 0 or agency_id={$user->agencyId})";
|
|||
|
|
if($user->agencyId == 19895){
|
|||
|
|
$sql_d = "SELECT * FROM denial_work WHERE agency_id={$user->agencyId} AND del = 0";
|
|||
|
|
}
|
|||
|
|
$q_d = mysql_query($sql_d);
|
|||
|
|
$row_d = mysql_num_rows($q_d);
|
|||
|
|
$denials = array();
|
|||
|
|
|
|||
|
|
while($r_d = mysql_fetch_assoc($q_d)){
|
|||
|
|
$denials[] = $r_d;
|
|||
|
|
}
|
|||
|
|
?>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<div class="grid_table new_table clients_table">
|
|||
|
|
<div class="buttons-toolbar" style="padding-top: 15px"></div>
|
|||
|
|
<div id="grid-keep-selection-new-fixed" class="bootstrap-table bootstrap4" style="display:none; position:absolute;z-index: 5;">
|
|||
|
|
<div class="fixed-table-container fixed-height" style="border-bottom: 0;">
|
|||
|
|
<table style="border-bottom: 0px;" class="table table-bordered table-hover">
|
|||
|
|
<thead style="border-bottom: 0px;"></thead>
|
|||
|
|
|
|||
|
|
</table>
|
|||
|
|
</div>
|
|||
|
|
<div class="fixed-table-body">
|
|||
|
|
<table class="table table-bordered table-hover">
|
|||
|
|
<tbody>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<table
|
|||
|
|
id="grid-keep-selection-new"
|
|||
|
|
class="table"
|
|||
|
|
data-locale="ru-RU"
|
|||
|
|
data-height="650"
|
|||
|
|
data-show-refresh="true"
|
|||
|
|
data-show-columns="true"
|
|||
|
|
data-buttons-toolbar=".buttons-toolbar"
|
|||
|
|
data-ajax="ajaxRequestMain"
|
|||
|
|
data-loading-template="loadingTemplate"
|
|||
|
|
data-show-footer="true"
|
|||
|
|
data-fixed-scroll="true"
|
|||
|
|
>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th data-field="fio" data-switchable="false" data-cell-style="cellStyle" data-class="table_white active_in_footer_fio" rowspan="2" data-width="300" data-identifier="true" data-footer-formatter="Итого">ФИО</th>
|
|||
|
|
<th data-field="work" data-cell-style="cellStyle" data-class="table_white active_in_footer_work" data-sortable="true" data-sorter="linkSorter" data-footer-formatter="footerPriceFormatter" rowspan="2">Было в работе за период</th>
|
|||
|
|
<th data-field="work_do" data-cell-style="cellStyle" data-class="table_white active_in_footer_work_do" data-sortable="true" data-sorter="linkSorter" data-footer-formatter="footerPriceFormatter" rowspan="2">Было в работе к началу периода</th>
|
|||
|
|
<th data-field="work_add" data-cell-style="cellStyle" data-class="table_white active_in_footer_work_add" data-sortable="true" data-sorter="linkSorter" data-footer-formatter="footerPriceFormatter" rowspan="2">Было создано за период</th>
|
|||
|
|
<th data-field="work_left" data-cell-style="cellStyle" data-class="table_white active_in_footer_work_left" data-sortable="true" data-sorter="linkSorter" data-footer-formatter="footerPriceFormatter" rowspan="2">Осталось в работе к концу периода</th>
|
|||
|
|
<th data-field="work_droup" data-cell-style="cellStyle" data-class="table_white active_in_footer_work_droup" data-sortable="true" data-sorter="linkSorter" data-footer-formatter="footerPriceFormatter" rowspan="2">Совместные клиенты</th>
|
|||
|
|
<th data-field="closet" colspan="<?=($row_d+1)?>" data-cell-style="cellStyle" data-class="table_white inactive_in_footer_closet_<?=($row_d+1)?>">Закрытие</th>
|
|||
|
|
<th data-field="presintation" rowspan="2" data-cell-style="cellStyle" data-class="table_white active_in_footer_presintation" data-sortable="true" data-sorter="linkSorter" data-footer-formatter="footerPriceFormatter" data-type="numeric">Количество отправленных презентаций</th>
|
|||
|
|
<th data-field="objects" data-cell-style="cellStyle" data-class="table_white active_in_footer_objects" data-sortable="true" data-sorter="linkSorter" data-footer-formatter="footerPriceFormatter" rowspan="2">Обращений по объекту</th>
|
|||
|
|
<th data-field="meet" data-cell-style="cellStyle" data-class="table_white active_in_footer_meet" data-sortable="true" data-sorter="linkSorter" data-footer-formatter="footerPriceFormatter" rowspan="2" >Встречи с клиентом</th>
|
|||
|
|
<th data-field="tasks" data-cell-style="cellStyle" data-class="table_white active_in_footer_tasks" colspan="4">Задачи</th>
|
|||
|
|
<th data-field="summa" data-cell-style="cellStyle" data-class="table_white active_in_footer_summa" data-sortable="true" data-sorter="linkSorter" data-footer-formatter="priceBySlashFormaterrForSources" rowspan="2">Сделок количество/сумма</th>
|
|||
|
|
<th data-field="conversion" data-cell-style="cellStyle" data-class="table_white active_in_footer_conversion" data-sortable="true" data-sorter="linkSorter" data-footer-formatter="" rowspan="2">Конверсия в сделку</th>
|
|||
|
|
<th data-field="conversion_del" data-cell-style="cellStyle" data-class="table_white active_in_footer_conversion_del" data-sortable="true" data-sorter="linkSorter" data-footer-formatter="" rowspan="2">Конверсия по отказам</th>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<?php
|
|||
|
|
foreach ($denials as $denial){ ?>
|
|||
|
|
<th data-field="denial_<?=$denial['id']?>" data-cell-style="cellStyle" data-class="table_white active_in_footer_denial_<?=$denial['id']?>" data-sortable="true" data-sorter="linkSorter" data-footer-formatter="footerPriceFormatter"><?=$denial['name']?></th>
|
|||
|
|
<?php } ?>
|
|||
|
|
<th data-field="denial_0" data-cell-style="cellStyle" data-class="table_white active_in_footer_denial_0" data-sortable="true" data-sorter="linkSorter" data-footer-formatter="footerPriceFormatter" data-podcheck="closet">Другие причины</th>
|
|||
|
|
<th data-field="task" data-cell-style="cellStyle" data-class="table_white active_in_footer_task" data-sortable="true" data-sorter="linkSorter" data-footer-formatter="footerPriceFormatter">Всего</th>
|
|||
|
|
<th data-field="task_new" data-cell-style="cellStyle" data-class="table_white active_in_footer_task_new" data-sortable="true" data-sorter="linkSorter" data-footer-formatter="footerPriceFormatter">Запланированных</th>
|
|||
|
|
<th data-field="task_old" data-cell-style="cellStyle" data-class="table_white active_in_footer_task_old" data-sortable="true" data-sorter="linkSorter" data-footer-formatter="footerPriceFormatter">Просроченных</th>
|
|||
|
|
<th data-field="task_slung" data-cell-style="cellStyle" data-class="table_white active_in_footer_task_slung" data-sortable="true" data-sorter="linkSorter" data-footer-formatter="footerPriceFormatter">Выполненные</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
</table>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="grid_table new_table requisitions_table hidden">
|
|||
|
|
<div class="buttons-toolbar" style="padding-top: 15px"></div>
|
|||
|
|
<div id="grid-keep-selection-req-fixed" class="bootstrap-table bootstrap4" style="display:none; position:absolute;z-index: 5;">
|
|||
|
|
<div class="fixed-table-container fixed-height" style="border-bottom: 0;">
|
|||
|
|
<table style="border-bottom: 0px;" class="table table-bordered table-hover">
|
|||
|
|
<thead style="border-bottom: 0px;"></thead>
|
|||
|
|
|
|||
|
|
</table>
|
|||
|
|
</div>
|
|||
|
|
<div class="fixed-table-body">
|
|||
|
|
<table class="table table-bordered table-hover">
|
|||
|
|
<tbody>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<table id="grid-keep-selection-req" class="table"
|
|||
|
|
data-locale="ru-RU"
|
|||
|
|
data-height="650"
|
|||
|
|
data-show-refresh="true"
|
|||
|
|
data-show-columns="true"
|
|||
|
|
data-buttons-toolbar=".buttons-toolbar"
|
|||
|
|
data-ajax="ajaxRequestMain"
|
|||
|
|
data-loading-template="loadingTemplate" >
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th data-field="fio" data-switchable="false" data-cell-style="cellStyle" data-class="table_white" rowspan="2" data-width="300" data-identifier="true">ФИО</th>
|
|||
|
|
<th data-field="work" data-cell-style="cellStyle" data-class="table_white" rowspan="2">Было в работе за период</th>
|
|||
|
|
<th data-field="work_do" data-cell-style="cellStyle" data-class="table_white" rowspan="2">Было в работе к началу периода</th>
|
|||
|
|
<th data-field="work_add" data-cell-style="cellStyle" data-class="table_white" rowspan="2">Было создано за период</th>
|
|||
|
|
<th data-field="work_left" data-cell-style="cellStyle" data-class="table_white" rowspan="2">Осталось в работе к концу периода</th>
|
|||
|
|
<th data-field="work_droup" data-cell-style="cellStyle" data-class="table_white" rowspan="2">Совместные клиенты</th>
|
|||
|
|
<th colspan="<?=($row_d+1)?>" data-cell-style="cellStyle" data-class="table_white" data-field="closet" >Закрытие</th>
|
|||
|
|
|
|||
|
|
<th data-field="avtocheck" data-cell-style="cellStyle" data-class="table_white" rowspan="2" >Автоподбор</th>
|
|||
|
|
<th data-field="tasks" data-cell-style="cellStyle" data-class="table_white" colspan="4">Задачи</th>
|
|||
|
|
<th data-field="summa" data-cell-style="cellStyle" data-class="table_white" rowspan="2">Сделок количество/сумма</th>
|
|||
|
|
<th data-field="conversion" data-cell-style="cellStyle" data-class="table_white" rowspan="2">Конверсия в сделку</th>
|
|||
|
|
<th data-field="conversion_del" data-cell-style="cellStyle" data-class="table_white" rowspan="2">Конверсия по отказам</th>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<?php
|
|||
|
|
foreach ($denials as $denial){ ?>
|
|||
|
|
<th data-cell-style="cellStyle" data-class="table_white" data-field="denial_<?=$denial['id']?>"><?=$denial['name']?></th>
|
|||
|
|
<?php } ?>
|
|||
|
|
<th data-cell-style="cellStyle" data-class="table_white" data-field="denial_0" data-podcheck="closet">Другие причины</th>
|
|||
|
|
<th data-field="task" data-cell-style="cellStyle" data-class="table_white">Всего</th>
|
|||
|
|
<th data-field="task_new" data-cell-style="cellStyle" data-class="table_white">Запланированных</th>
|
|||
|
|
<th data-field="task_old" data-cell-style="cellStyle" data-class="table_white">Просроченных</th>
|
|||
|
|
<th data-field="task_slung" data-cell-style="cellStyle" data-class="table_white">Выполненные</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
</table>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="__stat_table" style="display:none">
|
|||
|
|
<div style="display:flex;justify-content:space-between;align-items:center;padding:0 0 20px;">
|
|||
|
|
<div style="display:flex;justify-content:space-between;width:200px;">
|
|||
|
|
<p id="__EDIT_TABLE" class="__button">Редактировать</p>
|
|||
|
|
<p id="__DELETE_TABLE" class="__button">Удалить</p>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div id="__STAT_TABLE" class="__table">
|
|||
|
|
<div class="__cont">
|
|||
|
|
<div class="__header">
|
|||
|
|
<div style="width:250px;border: 1px solid #fff;">
|
|||
|
|
<p>ФИО</p>
|
|||
|
|
</div>
|
|||
|
|
<div id="__STAT_TABLE_COLUUMN">
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="__body">
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<style>
|
|||
|
|
.__stat_table, .telephony_table {
|
|||
|
|
margin: 30px 20px;
|
|||
|
|
padding: 18px 30px 20px;
|
|||
|
|
background: #fff;
|
|||
|
|
border-radius: 4px;
|
|||
|
|
box-shadow: 0 2px 7px rgba(0, 0, 0, 0.13);
|
|||
|
|
}
|
|||
|
|
.__button {
|
|||
|
|
font-size: 17px;
|
|||
|
|
cursor: pointer;
|
|||
|
|
color: rgb(42, 42, 42);
|
|||
|
|
}
|
|||
|
|
.__button:hover {
|
|||
|
|
text-decoration: underline;
|
|||
|
|
color: rgb(0, 0, 0);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#__STAT_TABLE {
|
|||
|
|
overflow-x: scroll;
|
|||
|
|
max-width: 100%;
|
|||
|
|
}
|
|||
|
|
#__STAT_TABLE .__header {
|
|||
|
|
display: flex;
|
|||
|
|
flex-wrap: wrap;
|
|||
|
|
background: rgb(67, 160, 71);
|
|||
|
|
}
|
|||
|
|
#__STAT_TABLE .__header div {
|
|||
|
|
display: flex;
|
|||
|
|
flex-wrap: wrap;
|
|||
|
|
justify-content: center;
|
|||
|
|
align-items: center;
|
|||
|
|
}
|
|||
|
|
#__STAT_TABLE .__header p {
|
|||
|
|
color: #fff;
|
|||
|
|
font-size: 14px;
|
|||
|
|
padding: 10px 8px 10px 3px;
|
|||
|
|
overflow: hidden;
|
|||
|
|
text-align: center;
|
|||
|
|
cursor: default;
|
|||
|
|
}
|
|||
|
|
#__STAT_TABLE .__header .__border {
|
|||
|
|
border: 1px solid #fff;
|
|||
|
|
overflow-y: scroll;
|
|||
|
|
width: 102px;
|
|||
|
|
height: 39px;
|
|||
|
|
}
|
|||
|
|
#__STAT_TABLE .__header .__border::-webkit-scrollbar {
|
|||
|
|
width: 4px;
|
|||
|
|
height: 4px;
|
|||
|
|
}
|
|||
|
|
#__STAT_TABLE .__header .__border::-webkit-scrollbar-thumb {
|
|||
|
|
border-radius: 2px;
|
|||
|
|
background-color: #d1d1d1;
|
|||
|
|
}
|
|||
|
|
.__row {
|
|||
|
|
display: flex;
|
|||
|
|
flex-wrap: wrap;
|
|||
|
|
border-bottom: 1px solid #a2a2a2;
|
|||
|
|
}
|
|||
|
|
.__row p {
|
|||
|
|
cursor: default;
|
|||
|
|
width: 102px;
|
|||
|
|
overflow: hidden;
|
|||
|
|
height: 27px;
|
|||
|
|
padding: 5px 0 5px 5px;
|
|||
|
|
line-height: 1.36;
|
|||
|
|
}
|
|||
|
|
/* .crm__telofony th {
|
|||
|
|
font-weight: bold;
|
|||
|
|
background: rgb(67,160,71);
|
|||
|
|
}
|
|||
|
|
#app_telofony .bootgrid-table th:hover, #app_telofony .bootgrid-table th:active {
|
|||
|
|
background: #328436 !important
|
|||
|
|
}
|
|||
|
|
#app_telofony .column-header-anchor {
|
|||
|
|
text-decoration: none;
|
|||
|
|
border-bottom: unset;
|
|||
|
|
}*/
|
|||
|
|
.connect{
|
|||
|
|
margin-right: 10px;
|
|||
|
|
color: #388E3C;
|
|||
|
|
}
|
|||
|
|
.connect_no{
|
|||
|
|
margin-right: 10px;
|
|||
|
|
color: #e2574c;
|
|||
|
|
}
|
|||
|
|
.record_play{
|
|||
|
|
color: #388E3C;
|
|||
|
|
text-decoration: none;
|
|||
|
|
border-bottom: unset;
|
|||
|
|
}
|
|||
|
|
.record_play .fa-pause{
|
|||
|
|
display: none;
|
|||
|
|
}
|
|||
|
|
.record_play.play{
|
|||
|
|
color: #4c6ef5;
|
|||
|
|
}
|
|||
|
|
.record_play.play .fa-play{
|
|||
|
|
display: none;
|
|||
|
|
}
|
|||
|
|
.record_play.play .fa-pause{
|
|||
|
|
display: block;
|
|||
|
|
}
|
|||
|
|
.vue_select{
|
|||
|
|
width: 250px;
|
|||
|
|
}
|
|||
|
|
.crm__telofony .inputs{
|
|||
|
|
display: inline-flex;
|
|||
|
|
}
|
|||
|
|
.crm__telofony .inputs input, .crm__telofony .input_call input{
|
|||
|
|
width: 100px;
|
|||
|
|
padding: 5px 2% 7px;
|
|||
|
|
font-family: "Lato";
|
|||
|
|
background: none;
|
|||
|
|
box-shadow: none;
|
|||
|
|
border: 1px solid #e0e0e0;
|
|||
|
|
margin: 10px 10px 0px 0px;
|
|||
|
|
}
|
|||
|
|
.crm__telofony .input_call input{
|
|||
|
|
width: 200px;
|
|||
|
|
margin: 0px;
|
|||
|
|
margin-bottom: 20px;
|
|||
|
|
}
|
|||
|
|
#app_telofony.hidden{
|
|||
|
|
display: none !important;
|
|||
|
|
}
|
|||
|
|
#app_telofony .table{
|
|||
|
|
margin-right: 100px;
|
|||
|
|
}
|
|||
|
|
</style>
|
|||
|
|
|
|||
|
|
<link rel="stylesheet" href="/js/vue_scripts/telephony_stat/css/style.min.css?_v=20240125174618">
|
|||
|
|
<input type="hidden" id="SesAgencyId" value="<?=$user->agencyId?>">
|
|||
|
|
<div class="crm__telephony hidden">
|
|||
|
|
<div class="app hidden " id="app_telofony">
|
|||
|
|
<div class="lw-container">
|
|||
|
|
<h2 class="app-title">Статистика звонков</h2>
|
|||
|
|
|
|||
|
|
<div class="filters app-filters">
|
|||
|
|
<div class="filters__row">
|
|||
|
|
<sp-dropdown :options="period" :value="selectedPeriod" @selected="selectedPeriod = $event, change_period($event)" title="Период" class="filters__period"></sp-dropdown>
|
|||
|
|
<div class="filters__date">
|
|||
|
|
<div class="filters__date-icon">
|
|||
|
|
<svg width="18" height="19" viewBox="0 0 18 19" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|||
|
|
<g clip-path="url(#clip0_1_405)">
|
|||
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.4375 14H9.5625V15.125H8.4375V14ZM8.4375 16.25H9.5625C10.1835 16.25 10.6875 15.746 10.6875 15.125V14C10.6875 13.379 10.1835 12.875 9.5625 12.875H8.4375C7.8165 12.875 7.3125 13.379 7.3125 14V15.125C7.3125 15.746 7.8165 16.25 8.4375 16.25ZM3.9375 14H5.0625V15.125H3.9375V14ZM3.9375 16.25H5.0625C5.6835 16.25 6.1875 15.746 6.1875 15.125V14C6.1875 13.379 5.6835 12.875 5.0625 12.875H3.9375C3.3165 12.875 2.8125 13.379 2.8125 14V15.125C2.8125 15.746 3.3165 16.25 3.9375 16.25ZM8.4375 9.5H9.5625V10.625H8.4375V9.5ZM8.4375 11.75H9.5625C10.1835 11.75 10.6875 11.246 10.6875 10.625V9.5C10.6875 8.879 10.1835 8.375 9.5625 8.375H8.4375C7.8165 8.375 7.3125 8.879 7.3125 9.5V10.625C7.3125 11.246 7.8165 11.75 8.4375 11.75ZM3.9375 9.5H5.0625V10.625H3.9375V9.5ZM3.9375 11.75H5.0625C5.6835 11.75 6.1875 11.246 6.1875 10.625V9.5C6.1875 8.879 5.6835 8.375 5.0625 8.375H3.9375C3.3165 8.375 2.8125 8.879 2.8125 9.5V10.625C2.8125 11.246 3.3165 11.75 3.9375 11.75ZM16.3125 5H1.6875V3.875C1.6875 3.254 2.1915 2.75 2.8125 2.75H5.0625V3.3125C5.0625 3.62356 5.31394 3.875 5.625 3.875C5.93606 3.875 6.1875 3.62356 6.1875 3.3125V2.75H11.8125V3.3125C11.8125 3.62356 12.0639 3.875 12.375 3.875C12.6861 3.875 12.9375 3.62356 12.9375 3.3125V2.75H15.1875C15.8085 2.75 16.3125 3.254 16.3125 3.875V5ZM16.3125 16.25C16.3125 16.871 15.8085 17.375 15.1875 17.375H2.8125C2.1915 17.375 1.6875 16.871 1.6875 16.25V6.125H16.3125V16.25ZM15.1875 1.625H12.9375V1.0625C12.9375 0.752 12.6861 0.5 12.375 0.5C12.0639 0.5 11.8125 0.752 11.8125 1.0625V1.625H6.1875V1.0625C6.1875 0.752 5.93606 0.5 5.625 0.5C5.31394 0.5 5.0625 0.752 5.0625 1.0625V1.625H2.8125C1.56994 1.625 0.5625 2.63244 0.5625 3.875V16.25C0.5625 17.4926 1.56994 18.5 2.8125 18.5H15.1875C16.4301 18.5 17.4375 17.4926 17.4375 16.25V3.875C17.4375 2.63244 16.4301 1.625 15.1875 1.625ZM12.9375 9.5H14.0625V10.625H12.9375V9.5ZM12.9375 11.75H14.0625C14.6835 11.75 15.1875 11.246 15.1875 10.625V9.5C15.1875 8.879 14.6835 8.375 14.0625 8.375H12.9375C12.3165 8.375 11.8125 8.879 11.8125 9.5V10.625C11.8125 11.246 12.3165 11.75 12.9375 11.75ZM12.9375 14H14.0625V15.125H12.9375V14ZM12.9375 16.25H14.0625C14.6835 16.25 15.1875 15.746 15.1875 15.125V14C15.1875 13.379 14.6835 12.875 14.0625 12.875H12.9375C12.3165 12.875 11.8125 13.379 11.8125 14V15.125C11.8125 15.746 12.3165 16.25 12.9375 16.25Z" fill="#9E9E9E"/>
|
|||
|
|
</g>
|
|||
|
|
<defs>
|
|||
|
|
<clipPath id="clip0_1_405">
|
|||
|
|
<rect width="18" height="18" fill="white" transform="translate(0 0.5)"/>
|
|||
|
|
</clipPath>
|
|||
|
|
</defs>
|
|||
|
|
</svg>
|
|||
|
|
</div>
|
|||
|
|
<date-picker
|
|||
|
|
v-model="state.date_from"
|
|||
|
|
:language="datePickerLang"
|
|||
|
|
:format="customFormatter"
|
|||
|
|
:monday-first="true"
|
|||
|
|
input-class="datepicker-input"
|
|||
|
|
wrapper-class="datepicker"
|
|||
|
|
calendar-class="datepicker-calendar"
|
|||
|
|
></date-picker>
|
|||
|
|
</div>
|
|||
|
|
<div class="filters__date">
|
|||
|
|
<div class="filters__date-icon">
|
|||
|
|
<svg width="18" height="19" viewBox="0 0 18 19" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|||
|
|
<g clip-path="url(#clip0_1_405)">
|
|||
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.4375 14H9.5625V15.125H8.4375V14ZM8.4375 16.25H9.5625C10.1835 16.25 10.6875 15.746 10.6875 15.125V14C10.6875 13.379 10.1835 12.875 9.5625 12.875H8.4375C7.8165 12.875 7.3125 13.379 7.3125 14V15.125C7.3125 15.746 7.8165 16.25 8.4375 16.25ZM3.9375 14H5.0625V15.125H3.9375V14ZM3.9375 16.25H5.0625C5.6835 16.25 6.1875 15.746 6.1875 15.125V14C6.1875 13.379 5.6835 12.875 5.0625 12.875H3.9375C3.3165 12.875 2.8125 13.379 2.8125 14V15.125C2.8125 15.746 3.3165 16.25 3.9375 16.25ZM8.4375 9.5H9.5625V10.625H8.4375V9.5ZM8.4375 11.75H9.5625C10.1835 11.75 10.6875 11.246 10.6875 10.625V9.5C10.6875 8.879 10.1835 8.375 9.5625 8.375H8.4375C7.8165 8.375 7.3125 8.879 7.3125 9.5V10.625C7.3125 11.246 7.8165 11.75 8.4375 11.75ZM3.9375 9.5H5.0625V10.625H3.9375V9.5ZM3.9375 11.75H5.0625C5.6835 11.75 6.1875 11.246 6.1875 10.625V9.5C6.1875 8.879 5.6835 8.375 5.0625 8.375H3.9375C3.3165 8.375 2.8125 8.879 2.8125 9.5V10.625C2.8125 11.246 3.3165 11.75 3.9375 11.75ZM16.3125 5H1.6875V3.875C1.6875 3.254 2.1915 2.75 2.8125 2.75H5.0625V3.3125C5.0625 3.62356 5.31394 3.875 5.625 3.875C5.93606 3.875 6.1875 3.62356 6.1875 3.3125V2.75H11.8125V3.3125C11.8125 3.62356 12.0639 3.875 12.375 3.875C12.6861 3.875 12.9375 3.62356 12.9375 3.3125V2.75H15.1875C15.8085 2.75 16.3125 3.254 16.3125 3.875V5ZM16.3125 16.25C16.3125 16.871 15.8085 17.375 15.1875 17.375H2.8125C2.1915 17.375 1.6875 16.871 1.6875 16.25V6.125H16.3125V16.25ZM15.1875 1.625H12.9375V1.0625C12.9375 0.752 12.6861 0.5 12.375 0.5C12.0639 0.5 11.8125 0.752 11.8125 1.0625V1.625H6.1875V1.0625C6.1875 0.752 5.93606 0.5 5.625 0.5C5.31394 0.5 5.0625 0.752 5.0625 1.0625V1.625H2.8125C1.56994 1.625 0.5625 2.63244 0.5625 3.875V16.25C0.5625 17.4926 1.56994 18.5 2.8125 18.5H15.1875C16.4301 18.5 17.4375 17.4926 17.4375 16.25V3.875C17.4375 2.63244 16.4301 1.625 15.1875 1.625ZM12.9375 9.5H14.0625V10.625H12.9375V9.5ZM12.9375 11.75H14.0625C14.6835 11.75 15.1875 11.246 15.1875 10.625V9.5C15.1875 8.879 14.6835 8.375 14.0625 8.375H12.9375C12.3165 8.375 11.8125 8.879 11.8125 9.5V10.625C11.8125 11.246 12.3165 11.75 12.9375 11.75ZM12.9375 14H14.0625V15.125H12.9375V14ZM12.9375 16.25H14.0625C14.6835 16.25 15.1875 15.746 15.1875 15.125V14C15.1875 13.379 14.6835 12.875 14.0625 12.875H12.9375C12.3165 12.875 11.8125 13.379 11.8125 14V15.125C11.8125 15.746 12.3165 16.25 12.9375 16.25Z" fill="#9E9E9E"/>
|
|||
|
|
</g>
|
|||
|
|
<defs>
|
|||
|
|
<clipPath id="clip0_1_405">
|
|||
|
|
<rect width="18" height="18" fill="white" transform="translate(0 0.5)"/>
|
|||
|
|
</clipPath>
|
|||
|
|
</defs>
|
|||
|
|
</svg>
|
|||
|
|
</div>
|
|||
|
|
<date-picker
|
|||
|
|
v-model="state.date_to"
|
|||
|
|
:language="datePickerLang"
|
|||
|
|
:format="customFormatter"
|
|||
|
|
:monday-first="true"
|
|||
|
|
input-class="datepicker-input"
|
|||
|
|
wrapper-class="datepicker"
|
|||
|
|
calendar-class="datepicker-calendar"
|
|||
|
|
></date-picker>
|
|||
|
|
</div>
|
|||
|
|
<sp-checkbox title="Запись звонка" positionlabel="left" id="333" v-model="is_call_record" class="filters__record" @check="is_call_record = $event"></sp-checkbox>
|
|||
|
|
</div>
|
|||
|
|
<div class="filters__row">
|
|||
|
|
<sp-dropdown
|
|||
|
|
:options="users"
|
|||
|
|
:value="selectedUser"
|
|||
|
|
:is-search="true"
|
|||
|
|
@selected="selectedUser = $event"
|
|||
|
|
title="Ответственный"
|
|||
|
|
class="filters__responsible"
|
|||
|
|
></sp-dropdown>
|
|||
|
|
<sp-input :value="call_number" title="Номер, на который был звонок" @input="call_number = $event"></sp-input>
|
|||
|
|
<sp-input :value="in_call_number" title="Телефон, кто звонил" @input="in_call_number = $event"></sp-input>
|
|||
|
|
<sp-dropdown :options="in_out" :value="selectedIn_out" @selected="selectedIn_out = $event" title="Входящие / исходящие" class="filters__incoming"></sp-dropdown>
|
|||
|
|
<sp-dropdown :options="duration" :value="selectedDuration" @selected="selectedDuration = $event" title="Длительность" class="filters__duration">
|
|||
|
|
<!--<div class="sp-duration-container">
|
|||
|
|
<div class="sp-duration-inputs-container">
|
|||
|
|
<sp-input min="0" type="number" :no-pattern="true" v-model="durationFrom" title="От"></sp-input>
|
|||
|
|
<sp-input min="0" type="number" :no-pattern="true" v-model="durationTo" title="До"></sp-input>
|
|||
|
|
</div>
|
|||
|
|
<div class="sp-duration-radio-container">
|
|||
|
|
<div class="sp-input-radio">
|
|||
|
|
<input type="radio" id="seconds" value="seconds" v-model="durationUnit" />
|
|||
|
|
<label class="sp-input__label" for="seconds">сек</label>
|
|||
|
|
</div>
|
|||
|
|
<div class="sp-input-radio">
|
|||
|
|
<input type="radio" id="minutes" value="minutes" v-model="durationUnit" />
|
|||
|
|
<label class="sp-input__label" for="minutes">мин</label>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>-->
|
|||
|
|
</sp-dropdown>
|
|||
|
|
<sp-dropdown :options="status" :value="selectedStatus" @selected="selectedStatus = $event" title="Статус" class="filters__status"></sp-dropdown>
|
|||
|
|
<sp-dropdown v-if="agencyId == 7384"
|
|||
|
|
:is-search="true"
|
|||
|
|
:options="sourceArr"
|
|||
|
|
:value="source"
|
|||
|
|
@selected="source = $event"
|
|||
|
|
title="Источник"
|
|||
|
|
class="filters__status">
|
|||
|
|
</sp-dropdown>
|
|||
|
|
</div>
|
|||
|
|
<div class="filters__row">
|
|||
|
|
<button class="button button--primary" @click="get_new_telephone">Показать</button>
|
|||
|
|
<button class="button button--grey" @click="exportExcel">Экспорт в Exsel</button>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="main-content">
|
|||
|
|
<div class="main-content__head">
|
|||
|
|
<span class="main-content__title">Результат поиска:</span>
|
|||
|
|
<span class="main-content__tag">Найдено {{total}} звонков</span>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div v-if="!isEmpty(list)" class="main-content__table">
|
|||
|
|
<div
|
|||
|
|
class="table"
|
|||
|
|
|
|||
|
|
>
|
|||
|
|
<!--
|
|||
|
|
ref="table"
|
|||
|
|
@mousedown="onMouseDownHandler($event)"
|
|||
|
|
@mouseenter="onMouseEnterHandler($event)"
|
|||
|
|
@mouseup="onMouseUpHandler($event)"
|
|||
|
|
@mousemove="onMouseMoveHandler($event)"
|
|||
|
|
@mouseleave="onMouseLeaveHandler($event)"
|
|||
|
|
-->
|
|||
|
|
|
|||
|
|
<div class="table__wrapper" ref="tableWrapper">
|
|||
|
|
<div class="table__head">
|
|||
|
|
<div class="table__row" :class="{'dop__column': isDopColumn}">
|
|||
|
|
<div class="table__col" v-for="field in fields" :key="field.name">{{ field.title }}</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="table__body">
|
|||
|
|
<div class="table__row" :class="{'dop__column': isDopColumn}" v-for="item in list" >
|
|||
|
|
<div class="table__col" v-for="col in fields" :key="col.name">
|
|||
|
|
<template v-if="col.name === 'start'">{{ item.start }}</template>
|
|||
|
|
<template v-else-if="col.name === 'from_number'">
|
|||
|
|
<span v-html="item.from_number"></span>
|
|||
|
|
</template>
|
|||
|
|
<template v-else-if="col.name === 'entry_id'">
|
|||
|
|
<span v-html="item.entry_id"></span>
|
|||
|
|
</template>
|
|||
|
|
<template v-else-if="col.name === 'to_number'">
|
|||
|
|
<span v-html="item.to_number"></span>
|
|||
|
|
</template>
|
|||
|
|
<template v-else-if="col.name === 'soure'">
|
|||
|
|
<span v-html="item.source"></span>
|
|||
|
|
</template>
|
|||
|
|
<template v-else-if="col.name === 'connect'">
|
|||
|
|
<svg v-if="item.answer>0" width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|||
|
|
<path d="M16.5336 13.14C16.0419 12.7277 13.1586 10.9018 12.6793 10.9856C12.4543 11.0256 12.2822 11.2174 11.8215 11.7669C11.6085 12.0374 11.3745 12.2908 11.1217 12.5246C10.6587 12.4128 10.2105 12.2466 9.78638 12.0296C8.12322 11.2199 6.77961 9.87589 5.97038 8.2125C5.75338 7.78841 5.58723 7.34018 5.47538 6.87712C5.70922 6.62439 5.96256 6.39042 6.23306 6.17738C6.78206 5.71669 6.97444 5.54569 7.01438 5.31956C7.09819 4.83919 5.27063 1.95694 4.86 1.46531C4.68788 1.26169 4.5315 1.125 4.33125 1.125C3.75075 1.125 1.125 4.37175 1.125 4.7925C1.125 4.82681 1.18125 8.20688 5.45006 12.5499C9.79313 16.8188 13.1732 16.875 13.2075 16.875C13.6283 16.875 16.875 14.2492 16.875 13.6687C16.875 13.4685 16.7383 13.3121 16.5336 13.14Z" fill="#4CAF50"/>
|
|||
|
|
<path d="M12.9375 8.4375H14.0625C14.0612 7.24444 13.5866 6.10062 12.743 5.257C11.8994 4.41338 10.7556 3.93884 9.5625 3.9375V5.0625C10.4573 5.06339 11.3153 5.41926 11.948 6.052C12.5807 6.68474 12.9366 7.54267 12.9375 8.4375Z" fill="#4CAF50"/>
|
|||
|
|
<path d="M15.75 8.4375H16.875C16.8728 6.49879 16.1016 4.64012 14.7308 3.26925C13.3599 1.89837 11.5012 1.12723 9.5625 1.125V2.25C11.2029 2.25194 12.7756 2.90445 13.9356 4.06441C15.0955 5.22438 15.7481 6.79707 15.75 8.4375Z" fill="#4CAF50"/>
|
|||
|
|
</svg>
|
|||
|
|
<svg v-else width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|||
|
|
<path d="M16.5336 13.14C16.0419 12.7277 13.1586 10.9018 12.6793 10.9856C12.4543 11.0256 12.2822 11.2174 11.8215 11.7669C11.6085 12.0374 11.3745 12.2908 11.1217 12.5246C10.6587 12.4128 10.2105 12.2466 9.78638 12.0296C8.12322 11.2199 6.77961 9.87589 5.97038 8.2125C5.75338 7.78841 5.58723 7.34018 5.47538 6.87712C5.70922 6.62439 5.96256 6.39042 6.23306 6.17738C6.78206 5.71669 6.97444 5.54569 7.01438 5.31956C7.09819 4.83919 5.27063 1.95694 4.86 1.46531C4.68788 1.26169 4.5315 1.125 4.33125 1.125C3.75075 1.125 1.125 4.37175 1.125 4.7925C1.125 4.82681 1.18125 8.20688 5.45006 12.5499C9.79313 16.8188 13.1732 16.875 13.2075 16.875C13.6283 16.875 16.875 14.2492 16.875 13.6687C16.875 13.4685 16.7383 13.3121 16.5336 13.14Z" fill="#FF3838"/>
|
|||
|
|
<path d="M10.5227 8.2727L12.6562 6.13914L14.7898 8.2727L15.5852 7.47733L13.4516 5.34376L15.5852 3.2102L14.7898 2.41483L12.6562 4.54839L10.5227 2.41483L9.72729 3.2102L11.8609 5.34376L9.72729 7.47733L10.5227 8.2727Z" fill="#FF3838"/>
|
|||
|
|
</svg>
|
|||
|
|
<span v-html="item.connect"></span>
|
|||
|
|
</template>
|
|||
|
|
<template v-else-if="col.name === 'time'">
|
|||
|
|
<span v-html="item.time"></span>
|
|||
|
|
</template>
|
|||
|
|
<template v-else-if="col.name === 'records'">
|
|||
|
|
<div class="row" style="position: relative;">
|
|||
|
|
<template v-for="rec in item.records">
|
|||
|
|
<button class="play-button" @click="play_record(rec)">
|
|||
|
|
<svg class="play-button" width="19" height="18" viewBox="0 0 19 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|||
|
|
<path class="play-button" d="M3.9163 2.00154C3.41895 1.97107 3.00008 2.39684 3 2.93294V15.0659C3.0001 15.7595 3.67842 16.2105 4.25485 15.9002L15.5211 9.83377C15.8146 9.67563 16 9.35267 16 8.99941C16 8.64616 15.8146 8.32319 15.5211 8.16506L4.25485 2.09858C4.14931 2.04178 4.03411 2.00876 3.9163 2.00154Z" fill="#4CAF50"/>
|
|||
|
|
</svg>
|
|||
|
|
</button>
|
|||
|
|
<a :href="myAudio[rec].src" target="_blank" :download="'Запись звонка '+item.start+'.mp3'">
|
|||
|
|
<svg width="19" height="18" viewBox="0 0 19 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|||
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.37225 2.11425C7.25 2.35425 7.25 2.66925 7.25 3.3V8.25H6.35225C5.69 8.25 5.3585 8.25 5.20175 8.382C5.13449 8.43854 5.08141 8.51005 5.04676 8.5908C5.01212 8.67155 4.99687 8.75929 5.00225 8.847C5.015 9.0525 5.24375 9.29175 5.7005 9.771L8.849 13.0717C9.0755 13.3102 9.18875 13.4288 9.3215 13.473C9.43733 13.5118 9.56267 13.5118 9.6785 13.473C9.81125 13.4288 9.9245 13.3102 10.151 13.0717L13.2995 9.77175C13.757 9.29175 13.985 9.05175 13.997 8.847C14.0025 8.75936 13.9873 8.67165 13.9528 8.59091C13.9183 8.51016 13.8654 8.43861 13.7983 8.382C13.6415 8.25 13.3108 8.25 12.6478 8.25H11.75V3.3C11.75 2.67 11.75 2.355 11.627 2.11425C11.5193 1.90249 11.3473 1.73027 11.1357 1.62225C10.8958 1.5 10.5808 1.5 9.95 1.5H9.05C8.42 1.5 8.105 1.5 7.86425 1.62225C7.65238 1.73014 7.48014 1.90238 7.37225 2.11425ZM4.25 15.75C4.25 15.9489 4.32902 16.1397 4.46967 16.2803C4.61032 16.421 4.80109 16.5 5 16.5H14C14.1989 16.5 14.3897 16.421 14.5303 16.2803C14.671 16.1397 14.75 15.9489 14.75 15.75C14.75 15.5511 14.671 15.3603 14.5303 15.2197C14.3897 15.079 14.1989 15 14 15H5C4.80109 15 4.61032 15.079 4.46967 15.2197C4.32902 15.3603 4.25 15.5511 4.25 15.75Z" fill="#4CAF50"/>
|
|||
|
|
</svg>
|
|||
|
|
</a>
|
|||
|
|
<audio :src="myAudio[rec].src" controls style="pointer-events: auto; display: none; position: absolute;">
|
|||
|
|
<source :src="myAudio[rec].src">
|
|||
|
|
|
|||
|
|
<p>Ваш браузер не поддерживает аудио</p>
|
|||
|
|
|
|||
|
|
<a :href="myAudio[rec].src">Запись разговора</a>,
|
|||
|
|
|
|||
|
|
</audio>
|
|||
|
|
<!--<audio :src="myAudio[rec].src" controls style="pointer-events: auto; display: none; position: absolute;"></audio>-->
|
|||
|
|
|
|||
|
|
</template>
|
|||
|
|
</div>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<template v-else-if="col.name === 'type'">
|
|||
|
|
<span v-html="item.type"></span>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<!--
|
|||
|
|
|
|||
|
|
<template v-else-if="col.name === 'duration'" v-html="item.duration"></template>
|
|||
|
|
<template v-else-if="col.name === 'record'" v-html="item.record">
|
|||
|
|
<div class="row">
|
|||
|
|
<button>
|
|||
|
|
<svg width="19" height="18" viewBox="0 0 19 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|||
|
|
<path d="M3.9163 2.00154C3.41895 1.97107 3.00008 2.39684 3 2.93294V15.0659C3.0001 15.7595 3.67842 16.2105 4.25485 15.9002L15.5211 9.83377C15.8146 9.67563 16 9.35267 16 8.99941C16 8.64616 15.8146 8.32319 15.5211 8.16506L4.25485 2.09858C4.14931 2.04178 4.03411 2.00876 3.9163 2.00154Z" fill="#4CAF50"/>
|
|||
|
|
</svg>
|
|||
|
|
</button>
|
|||
|
|
<a href="#" download>
|
|||
|
|
<svg width="19" height="18" viewBox="0 0 19 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|||
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.37225 2.11425C7.25 2.35425 7.25 2.66925 7.25 3.3V8.25H6.35225C5.69 8.25 5.3585 8.25 5.20175 8.382C5.13449 8.43854 5.08141 8.51005 5.04676 8.5908C5.01212 8.67155 4.99687 8.75929 5.00225 8.847C5.015 9.0525 5.24375 9.29175 5.7005 9.771L8.849 13.0717C9.0755 13.3102 9.18875 13.4288 9.3215 13.473C9.43733 13.5118 9.56267 13.5118 9.6785 13.473C9.81125 13.4288 9.9245 13.3102 10.151 13.0717L13.2995 9.77175C13.757 9.29175 13.985 9.05175 13.997 8.847C14.0025 8.75936 13.9873 8.67165 13.9528 8.59091C13.9183 8.51016 13.8654 8.43861 13.7983 8.382C13.6415 8.25 13.3108 8.25 12.6478 8.25H11.75V3.3C11.75 2.67 11.75 2.355 11.627 2.11425C11.5193 1.90249 11.3473 1.73027 11.1357 1.62225C10.8958 1.5 10.5808 1.5 9.95 1.5H9.05C8.42 1.5 8.105 1.5 7.86425 1.62225C7.65238 1.73014 7.48014 1.90238 7.37225 2.11425ZM4.25 15.75C4.25 15.9489 4.32902 16.1397 4.46967 16.2803C4.61032 16.421 4.80109 16.5 5 16.5H14C14.1989 16.5 14.3897 16.421 14.5303 16.2803C14.671 16.1397 14.75 15.9489 14.75 15.75C14.75 15.5511 14.671 15.3603 14.5303 15.2197C14.3897 15.079 14.1989 15 14 15H5C4.80109 15 4.61032 15.079 4.46967 15.2197C4.32902 15.3603 4.25 15.5511 4.25 15.75Z" fill="#4CAF50"/>
|
|||
|
|
</svg>
|
|||
|
|
</a>
|
|||
|
|
</div>
|
|||
|
|
</template>-->
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="main-content__footer">
|
|||
|
|
<div style="display:flex;justify-content:space-between;width:200px;">
|
|||
|
|
<button v-if="!isNewPage && !isTotal" @click="next_page()" class="button button--primary">Показать ещё {{ limit }}</button>
|
|||
|
|
<span v-if="isNewPage" class="main-content__tag">Подождите...</span>
|
|||
|
|
|
|||
|
|
<span v-if="isTotal" class="main-content__tag">Показаны все возможные результаты</span>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<script src="/js/v-mask.min.js"></script>
|
|||
|
|
<script src="/js/vuejs-paginate.js"></script>
|
|||
|
|
<script src="/js/vuetable-2.js"></script>
|
|||
|
|
<!--<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.30.1/moment.min.js?_v=20240125195023"></script>
|
|||
|
|
<script src="https://unpkg.com/vue-select@latest?_v=20240125195023"></script>
|
|||
|
|
<script src="https://unpkg.com/vuejs-datepicker?_v=20240125195023"></script>
|
|||
|
|
<script src="https://cdn.jsdelivr.net/npm/v-mask/dist/v-mask.min.js?_v=20240125195023"></script>
|
|||
|
|
<script src="/js/vuejs-paginate.js"></script>
|
|||
|
|
<script src="/js/vuetable-2.js"></script>-->
|
|||
|
|
<script src="/js/vue_scripts/telephony_stat/js/main.js?_v=20260317162844"></script>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<script src="/js/amcharts/amcharts.js"></script>
|
|||
|
|
<script src="/js/amcharts/funnel.js"></script>
|
|||
|
|
<script src="/js/amcharts/pie.js"></script>
|
|||
|
|
<script src="/js/amcharts/serial.js"></script>
|
|||
|
|
<script src="/js/amcharts/ru.js"></script>
|
|||
|
|
|
|||
|
|
<script src="/js/amcharts/export.min.js"></script>
|
|||
|
|
<link rel="stylesheet" href="/js/amcharts/export.css" type="text/css" media="all" />
|
|||
|
|
<script src="/js/amcharts/none.js"></script>
|
|||
|
|
|
|||
|
|
<script type="text/javascript" src="/js/jquery.multiselect.js"></script>
|
|||
|
|
|
|||
|
|
<?php if($get['add'] or $error_add) echo '<script>$(document).ready(function() {$("#add_client").trigger("click");})</script>'; ?>
|
|||
|
|
</div>
|
|||
|
|
<div class="object-content__preloader" style="<?= ($get['hide_form']) ? 'display: block;' : 'display: none;'; ?>">
|
|||
|
|
<img src="../images/rocket-spinner.svg" width="96px">
|
|||
|
|
</div>
|
|||
|
|
<div class="content-bottom">
|
|||
|
|
<div class="copyrights" style="border-top: 0;">
|
|||
|
|
<div class="text-logo">
|
|||
|
|
<span>Joy<span class="green">Work</span>, 2025</span>
|
|||
|
|
</div>
|
|||
|
|
<p title="Текущая версия">v. 3.1.1</p>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<script>
|
|||
|
|
let __currTableId = 0;
|
|||
|
|
__b();
|
|||
|
|
$('body').on('click','#__TABLE_LIST_CLOSE', function () {
|
|||
|
|
$('#__TABLE_LIST').css('display', 'none');
|
|||
|
|
});
|
|||
|
|
function __b() {
|
|||
|
|
var xhr = new XMLHttpRequest();
|
|||
|
|
xhr.open('POST', '/ajax/getStatTableList.php', true);
|
|||
|
|
xhr.onreadystatechange = function () {
|
|||
|
|
if (this.readyState != 4) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
if (this.status == 200) {
|
|||
|
|
let html = $('#__TABLE_LIST').html();
|
|||
|
|
let r = JSON.parse(this.responseText);
|
|||
|
|
for (let i = 0; i < r.length; i++) {
|
|||
|
|
html += '<div><p data-table-id="' + r[i].id + '">' + r[i].name + '</p></div>';
|
|||
|
|
}
|
|||
|
|
$('#__TABLE_LIST').html(html);
|
|||
|
|
|
|||
|
|
$('#__TABLE_LIST div p').click(function (e) {
|
|||
|
|
$('#__TABLE_LIST').css('display', 'none');
|
|||
|
|
let tableId = Number($(e.target).attr('data-table-id'));
|
|||
|
|
__currTableId = tableId;
|
|||
|
|
if (tableId) {
|
|||
|
|
$('.crm__table').addClass('hidden');
|
|||
|
|
$('.__stat_table').css('display', 'block');
|
|||
|
|
__buildStatTable(tableId);
|
|||
|
|
} else {
|
|||
|
|
$('.crm__table').removeClass('hidden');
|
|||
|
|
$('.__stat_table').css('display', 'none');
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
xhr.send();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
$('#__SHOW_TABLE_LIST').click(function () {
|
|||
|
|
$('#__TABLE_LIST').css('display', 'block');
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
$('#__DELETE_TABLE').click(function () {
|
|||
|
|
let result = confirm('Вы уверены, что хотите удалить таблицу?');
|
|||
|
|
if (!result) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
var fo = new FormData();
|
|||
|
|
fo.append('table_id', __currTableId);
|
|||
|
|
|
|||
|
|
let xhr = new XMLHttpRequest();
|
|||
|
|
xhr.open('POST', '/ajax/deleteStatTable.php', true);
|
|||
|
|
xhr.onreadystatechange = function () {
|
|||
|
|
if (this.readyState != 4) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
if (this.status == 200) {
|
|||
|
|
window.location.reload(false);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
xhr.send(fo);
|
|||
|
|
});
|
|||
|
|
$('#__EDIT_TABLE').click(function () {
|
|||
|
|
if (__currTableId) {
|
|||
|
|
window.location.href = 'https://joywork.ru/editStatTable.php?table_id=' + __currTableId;
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
$('body').click(function (event) {
|
|||
|
|
__a();
|
|||
|
|
|
|||
|
|
|
|||
|
|
if ($('[data-tab="telephony"].selected').length && !event.target.classList.contains('play-button')) {
|
|||
|
|
$('#app_telofony .table__wrapper audio').each((el, item) => {
|
|||
|
|
$(item).css("display", "none");
|
|||
|
|
$(item)[0].pause()
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
/* setInterval(function () {
|
|||
|
|
__a();
|
|||
|
|
}, 250);*/
|
|||
|
|
function __a() {
|
|||
|
|
if ($('[data-tab="stats"].selected').length && $('.crm__filters-inner .view-table.active').length) {
|
|||
|
|
$('.__tab').css('display', 'inline-block');
|
|||
|
|
} else {
|
|||
|
|
$('.__tab').css('display', 'none');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$('#__TABLE_LIST_CLOSE').click(function () {
|
|||
|
|
$('#__TABLE_LIST').css('display', 'none');
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function __buildStatTable(tableId) {
|
|||
|
|
//console.log(tableId);
|
|||
|
|
var fo = new FormData();
|
|||
|
|
fo.append('table_id', tableId);
|
|||
|
|
|
|||
|
|
var xhr = new XMLHttpRequest();
|
|||
|
|
xhr.open('POST', '/ajax/getStatTable.php', true);
|
|||
|
|
xhr.onreadystatechange = function () {
|
|||
|
|
if (this.readyState != 4) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
if (this.status == 200) {
|
|||
|
|
//console.log(this.responseText);
|
|||
|
|
let data = JSON.parse(this.responseText);
|
|||
|
|
|
|||
|
|
data_stat_arr = data;
|
|||
|
|
let addSteps = data.table.json_add;
|
|||
|
|
|
|||
|
|
|
|||
|
|
for (let i = 0; i < data.clients.length; i++) {
|
|||
|
|
for (let j = 0; j < data.clients[i].events.length; j++) {
|
|||
|
|
data.clients[i].events[j].create_date = data.clients[i].events[j].create_date.split(' ')[0];
|
|||
|
|
data.clients[i].events[j].comment = data.clients[i].events[j].comment.substr(6);
|
|||
|
|
data.clients[i].events[j].comment = data.clients[i].events[j].comment.substr(0, data.clients[i].events[j].comment.length - 4);
|
|||
|
|
data.clients[i].events[j].comment = data.clients[i].events[j].comment.split('</p><p><b>');
|
|||
|
|
for (let k = 0; k < data.clients[i].events[j].comment.length; k++) {
|
|||
|
|
data.clients[i].events[j].comment[k] = data.clients[i].events[j].comment[k].split('</b>: ');
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
data.clients[i].steps = [];
|
|||
|
|
for (let j = 0; j < data.clients[i].eventsClients.length; j++) {
|
|||
|
|
let qwe = data.clients[i].eventsClients[j].dop_text.split('«');
|
|||
|
|
|
|||
|
|
|
|||
|
|
data.clients[i].steps[qwe[qwe.length-1].split('»')[0]] = {
|
|||
|
|
date: data.clients[i].eventsClients[j].date.split(' ')[0],
|
|||
|
|
user: data.clients[i].eventsClients[j].user,
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
let __html = '';
|
|||
|
|
|
|||
|
|
for (let i = 0; i < data.clients.length; i++) {
|
|||
|
|
let rows = 1;
|
|||
|
|
let html = '';
|
|||
|
|
html += '<p style="width:250px;">' + data.clients[i].fio + '</p>';
|
|||
|
|
|
|||
|
|
if (addSteps.email) {
|
|||
|
|
html +='<p title="' + data.clients[i].email + '">' + data.clients[i].email + '</p>';
|
|||
|
|
}
|
|||
|
|
if (addSteps.phone) {
|
|||
|
|
html +='<p title=' + data.clients[i].phone + '>' + data.clients[i].phone + '</p>';
|
|||
|
|
}
|
|||
|
|
if (addSteps.client_type) {
|
|||
|
|
let __a01 = null;
|
|||
|
|
if(data.clients[i].work_type){
|
|||
|
|
__a01 = JSON.parse(data.clients[i].work_type.replace(/"/g,'"'));
|
|||
|
|
}
|
|||
|
|
if (!__a01) {
|
|||
|
|
html+='<p></p>';
|
|||
|
|
} else {
|
|||
|
|
if (rows < __a01.length) {
|
|||
|
|
rows = __a01.length;
|
|||
|
|
}
|
|||
|
|
let __a01_text = '';
|
|||
|
|
let __a01_title = '';
|
|||
|
|
for (let j = 0; j < __a01.length; j++) {
|
|||
|
|
__a01_text += __a01[j] + '<br>';
|
|||
|
|
__a01_title += __a01[j];
|
|||
|
|
}
|
|||
|
|
html +='<p style="height:' + (__a01.length * 17 + 10) + 'px;" title="' + __a01_title + '">' + __a01_text + '</p>';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (addSteps.client_role) {
|
|||
|
|
let __a02 = null;
|
|||
|
|
if(data.clients[i].role){
|
|||
|
|
__a02 = JSON.parse(data.clients[i].role.replace(/"/g,'"'));
|
|||
|
|
}
|
|||
|
|
if (!__a02) {
|
|||
|
|
html+='<p></p>';
|
|||
|
|
} else {
|
|||
|
|
if (rows < __a02.length) {
|
|||
|
|
rows = __a02.length;
|
|||
|
|
}
|
|||
|
|
let __a02_text = '';
|
|||
|
|
let __a02_title = '';
|
|||
|
|
for (let j = 0; j < __a02.length; j++) {
|
|||
|
|
__a02_text += __a02[j] + '<br>';
|
|||
|
|
__a02_title += __a02[j];
|
|||
|
|
}
|
|||
|
|
html +='<p style="height:' + (__a02.length * 17 + 10) + 'px;" title="' + __a02_title + '">' + __a02_text + '</p>';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (addSteps.property_type) {
|
|||
|
|
let __a03 = null;
|
|||
|
|
if(data.clients[i].type){
|
|||
|
|
__a03 = JSON.parse(data.clients[i].type.replace(/"/g,'"'));
|
|||
|
|
}
|
|||
|
|
if (!__a03) {
|
|||
|
|
html+='<p></p>';
|
|||
|
|
} else {
|
|||
|
|
if (rows < __a03.length) {
|
|||
|
|
rows = __a03.length;
|
|||
|
|
}
|
|||
|
|
let __a03_text = '';
|
|||
|
|
let __a03_title = '';
|
|||
|
|
for (let j = 0; j < __a03.length; j++) {
|
|||
|
|
__a03_text += __a03[j] + '<br>';
|
|||
|
|
__a03_title += __a03[j];
|
|||
|
|
}
|
|||
|
|
html +='<p style="height:' + (__a03.length * 17 + 10) + 'px;" title="' + __a03_title.replace(/\_/g,'') + '">' + __a03_text.replace(/\_/g,'') + '</p>';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (addSteps.objects) {
|
|||
|
|
if (rows < data.clients[i].objectsInfo.length) {
|
|||
|
|
rows = data.clients[i].objectsInfo.length;
|
|||
|
|
}
|
|||
|
|
let __a04_text = '';
|
|||
|
|
let __a04_title = '';
|
|||
|
|
for (let j = 0; j < data.clients[i].objectsInfo.length; j++) {
|
|||
|
|
__a04_text += data.clients[i].objectsInfo[j].nazv + '; ' + data.clients[i].objectsInfo[j].adres + '<br>';
|
|||
|
|
__a04_title += data.clients[i].objectsInfo[j].nazv + '; ' + data.clients[i].objectsInfo[j].adres + '; ';
|
|||
|
|
}
|
|||
|
|
html +='<p style="height:' + (data.clients[i].objectsInfo.length * 17 + 10) + 'px;" title="' + __a04_title + '">' + __a04_text + '</p>';
|
|||
|
|
let __a04_text_p = '';
|
|||
|
|
let __a04_title_p = '';
|
|||
|
|
for (let j = 0; j < data.clients[i].objectsInfo.length; j++) {
|
|||
|
|
__a04_text_p += data.clients[i].objectsInfo[j].stoim + '<br>';
|
|||
|
|
__a04_title_p += data.clients[i].objectsInfo[j].stoim + '; ';
|
|||
|
|
}
|
|||
|
|
html +='<p style="height:' + (data.clients[i].objectsInfo.length * 17 + 10) + 'px;" title="' + __a04_title_p + '">' + __a04_text_p + '</p>';
|
|||
|
|
}
|
|||
|
|
if (addSteps.budget) {
|
|||
|
|
html +='<p title="' + data.clients[i].budget + '">' + data.clients[i].budget + '</p>';
|
|||
|
|
}
|
|||
|
|
if (addSteps.description) {
|
|||
|
|
html +='<p title="' + data.clients[i].opis.replace(/\<br\>/gi, ' ') + '">' + data.clients[i].opis.replace(/\<br\>/gi, ' ') + '</p>';
|
|||
|
|
}
|
|||
|
|
if (addSteps.responsible) {
|
|||
|
|
html +='<p title="' + data.clients[i].agent + '">' + data.clients[i].agent + '</p>';
|
|||
|
|
}
|
|||
|
|
if (addSteps.source) {
|
|||
|
|
html +='<p title="' + data.clients[i].source + '">' + data.clients[i].source + '</p>';
|
|||
|
|
}
|
|||
|
|
if (addSteps.curr) {
|
|||
|
|
if (data.clients[i].eventsClients.length !== 0) {
|
|||
|
|
let arr1 = data.clients[i].eventsClients[data.clients[i].eventsClients.length - 1].dop_text.split('«');
|
|||
|
|
let text2 = arr1[arr1.length - 1].split('»')[0];
|
|||
|
|
html +='<p title="' + text2 + '">' + text2 + '</p>';
|
|||
|
|
} else {
|
|||
|
|
html +='<p title="Новый">Новый</p>';
|
|||
|
|
}
|
|||
|
|
//if (data.clients[i].events.length === 0) {
|
|||
|
|
// let arr1 = data.clients[i].eventsClients[data.clients[i].eventsClients.length - 1].dop_text.split('«');
|
|||
|
|
// let text2 = arr1[arr1.length - 1].split('»')[0];
|
|||
|
|
// html +='<p title="' + text2 + '">' + text2 + '</p>';
|
|||
|
|
//} else {
|
|||
|
|
// html +='<p title="' + data.clients[i].events[data.clients[i].events.length - 1].name + '">'
|
|||
|
|
// + data.clients[i].events[data.clients[i].events.length - 1].name + '</p>';
|
|||
|
|
//}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for (let t = 0; t < data.table.json_funnel.length; t++) {
|
|||
|
|
let funnelSteps = data.table.json_funnel[t].steps;
|
|||
|
|
for (let j = 0; j < funnelSteps.length; j++) {
|
|||
|
|
for (let k = 0; k < data.clients[i].events.length; k++) {
|
|||
|
|
if (funnelSteps[j].name === data.clients[i].events[k].name) {
|
|||
|
|
|
|||
|
|
if (funnelSteps[j].self == 1) {
|
|||
|
|
|
|||
|
|
let steps_date = '';
|
|||
|
|
let steps_user = '';
|
|||
|
|
let steps_doers = '';
|
|||
|
|
|
|||
|
|
for (var d = 0; d < data.clients[i].doersEvent.length; d++ ){
|
|||
|
|
|
|||
|
|
if(data.clients[i].doersEvent[d].step_id == funnelSteps[j].id){
|
|||
|
|
if(steps_doers == '') steps_doers += data.clients[i].doersEvent[d].user_work;
|
|||
|
|
steps_doers += ', '+data.clients[i].doersEvent[d].doer;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
for (let key in data.clients[i].steps) {
|
|||
|
|
if (funnelSteps[j].name === key) {
|
|||
|
|
steps_date = data.clients[i].steps[key].date;
|
|||
|
|
steps_user = data.clients[i].steps[key].user;
|
|||
|
|
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (steps_date === '') {
|
|||
|
|
steps_date = data.clients[i].events[k].create_date;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(steps_doers === ''){
|
|||
|
|
steps_doers = data.clients[i].agent_main;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
html +='<p>' + steps_date + '</p>';
|
|||
|
|
html +='<p title="' + steps_user + '">' + steps_user + '</p>';
|
|||
|
|
html +='<p title="' + steps_doers + '">' + steps_doers + '</p>';
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for (let l = 0; l < funnelSteps[j].fields.length; l++) {
|
|||
|
|
for (let m = 0; m < data.clients[i].events[k].comment.length; m++) {
|
|||
|
|
if (funnelSteps[j].fields[l] === data.clients[i].events[k].comment[m][0]) {
|
|||
|
|
html +='<p title="' + data.clients[i].events[k].comment[m][1].replace(/\<br\>/gi, ' ') + '">' + data.clients[i].events[k].comment[m][1].replace(/\<br\>/gi, ' ') + '</p>';
|
|||
|
|
break;
|
|||
|
|
} if (m === data.clients[i].events[k].comment.length - 1) {
|
|||
|
|
html +='<p></p>';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
} else if (k === data.clients[i].events.length - 1) {
|
|||
|
|
|
|||
|
|
if (funnelSteps[j].self == 1) {
|
|||
|
|
|
|||
|
|
let steps_date = '';
|
|||
|
|
let steps_user = '';
|
|||
|
|
let steps_doers = '';
|
|||
|
|
for (let key in data.clients[i].steps) {
|
|||
|
|
if (funnelSteps[j].name === key) {
|
|||
|
|
steps_date = data.clients[i].steps[key].date;
|
|||
|
|
steps_user = data.clients[i].steps[key].user;
|
|||
|
|
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//console.log(data.clients[i].doersEvent);
|
|||
|
|
|
|||
|
|
for (var d = 0; d < data.clients[i].doersEvent.length; d++ ){
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(data.clients[i].doersEvent[d].step_id == funnelSteps[j].id){
|
|||
|
|
if(steps_doers == '') steps_doers += data.clients[i].doersEvent[d].user_work;
|
|||
|
|
steps_doers += ', '+data.clients[i].doersEvent[d].doer;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (steps_date === '' && steps_user !== '') {
|
|||
|
|
steps_date = data.clients[i].events[k].create_date;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (j === 0 && steps_user === '') {
|
|||
|
|
steps_user = data.clients[i].agentadd;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(steps_user !== '' && steps_doers === ''){
|
|||
|
|
steps_doers = data.clients[i].agent_main;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
html +='<p>' + steps_date + '</p>';
|
|||
|
|
html +='<p title="' + steps_user + '">' + steps_user + '</p>';
|
|||
|
|
html +='<p title="' + steps_doers + '">' + steps_doers + '</p>';
|
|||
|
|
}
|
|||
|
|
for (let l = 0; l < funnelSteps[j].fields.length; l++) {
|
|||
|
|
html +='<p unk></p>';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
__html += '<div class="__row" style="height:' + (rows * 17 + 10) + 'px;">' + html + '</div>';
|
|||
|
|
}
|
|||
|
|
$('#__STAT_TABLE .__body').html(__html);
|
|||
|
|
|
|||
|
|
|
|||
|
|
let html = '';
|
|||
|
|
let tableWidth = 250;
|
|||
|
|
|
|||
|
|
if (addSteps.email) {
|
|||
|
|
html += '<div class="__border" style="height:100%;"><p>email</p></div>';
|
|||
|
|
tableWidth +=102;
|
|||
|
|
}
|
|||
|
|
if (addSteps.phone) {
|
|||
|
|
html += '<div class="__border" style="height:100%;"><p>Телефон</p></div>';
|
|||
|
|
tableWidth +=102;
|
|||
|
|
}
|
|||
|
|
if (addSteps.client_type) {
|
|||
|
|
html += '<div class="__border" style="height:100%;"><p>Тип клиента</p></div>';
|
|||
|
|
tableWidth +=102;
|
|||
|
|
}
|
|||
|
|
if (addSteps.client_role) {
|
|||
|
|
html += '<div class="__border" style="height:100%;"><p>Роль клиента</p></div>';
|
|||
|
|
tableWidth +=102;
|
|||
|
|
}
|
|||
|
|
if (addSteps.property_type) {
|
|||
|
|
html += '<div class="__border" style="height:100%;"><p>Тип недвижимости</p></div>';
|
|||
|
|
tableWidth +=102;
|
|||
|
|
}
|
|||
|
|
if (addSteps.objects) {
|
|||
|
|
html += '<div class="__border" style="height:100%;"><p>Объекты</p></div>';
|
|||
|
|
tableWidth +=102;
|
|||
|
|
html += '<div class="__border" style="height:100%;"><p>Цены объектов</p></div>';
|
|||
|
|
tableWidth +=102;
|
|||
|
|
}
|
|||
|
|
if (addSteps.budget) {
|
|||
|
|
html += '<div class="__border" style="height:100%;"><p>Бюджет</p></div>';
|
|||
|
|
tableWidth +=102;
|
|||
|
|
}
|
|||
|
|
if (addSteps.description) {
|
|||
|
|
html += '<div class="__border" style="height:100%;"><p>Описание</p></div>';
|
|||
|
|
tableWidth +=102;
|
|||
|
|
}
|
|||
|
|
if (addSteps.responsible) {
|
|||
|
|
html += '<div class="__border" style="height:100%;"><p>Ответственный</p></div>';
|
|||
|
|
tableWidth +=102;
|
|||
|
|
}
|
|||
|
|
if (addSteps.source) {
|
|||
|
|
html += '<div class="__border" style="height:100%;"><p>Источник</p></div>';
|
|||
|
|
tableWidth +=102;
|
|||
|
|
}
|
|||
|
|
if (addSteps.curr) {
|
|||
|
|
html += '<div class="__border" style="height:100%;"><p>Текущий этап</p></div>';
|
|||
|
|
tableWidth +=102;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for (let t = 0; t < data.table.json_funnel.length; t++) {
|
|||
|
|
let funnelSteps = data.table.json_funnel[t].steps;
|
|||
|
|
|
|||
|
|
for (let i = 0; i < funnelSteps.length; i++) {
|
|||
|
|
let step = funnelSteps[i];
|
|||
|
|
let fieldsCount = 0;
|
|||
|
|
let htmlBlock = '';
|
|||
|
|
|
|||
|
|
if (step.self) {
|
|||
|
|
fieldsCount += 3;
|
|||
|
|
htmlBlock += '<div class="__border"><p>Дата</p></div>';
|
|||
|
|
htmlBlock += '<div class="__border"><p>Менеджер</p></div>';
|
|||
|
|
htmlBlock += '<div class="__border"><p>Ответственные</p></div>';
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for (let j = 0; j < step.fields.length; j++) {
|
|||
|
|
fieldsCount++;
|
|||
|
|
htmlBlock += '<div class="__border"><p>' + step.fields[j] + '</p></div>';
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
let width = fieldsCount * 102;
|
|||
|
|
tableWidth += width;
|
|||
|
|
htmlBlock = '<div style="width:' + width + 'px;"><div class="__border" style="width:' + width
|
|||
|
|
+ 'px;"><p>' + step.name + '</p></div>' + htmlBlock + '</div>';
|
|||
|
|
html += htmlBlock;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
$('#__STAT_TABLE_COLUUMN').html(html);
|
|||
|
|
|
|||
|
|
$('#__STAT_TABLE .__header').css('width', tableWidth + 'px');
|
|||
|
|
$('#__STAT_TABLE .__body').css('width', tableWidth + 'px');
|
|||
|
|
|
|||
|
|
$('#__STAT_TABLE .__row').on('click', function() {
|
|||
|
|
$('#__STAT_TABLE .__row').removeClass("row-selected");
|
|||
|
|
$(this).addClass('row-selected');
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
xhr.send(fo);
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<!--<script type="text/javascript" src="/js/telephony_vue.js?v=<?=filemtime($_SERVER['DOCUMENT_ROOT'].'/js/telephony_vue.js')?>"></script>-->
|
|||
|
|
|
|||
|
|
<style>
|
|||
|
|
.pagination {
|
|||
|
|
display: -ms-flexbox;
|
|||
|
|
display: flex;
|
|||
|
|
padding-left: 0;
|
|||
|
|
list-style: none;
|
|||
|
|
border-radius: .25rem;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.page-link {
|
|||
|
|
position: relative;
|
|||
|
|
display: block;
|
|||
|
|
padding: .5rem .75rem;
|
|||
|
|
margin-left: -1px;
|
|||
|
|
line-height: 1.25;
|
|||
|
|
color: rgb(67,160,71);
|
|||
|
|
background-color: #fff;
|
|||
|
|
border: 1px solid #dee2e6 !important;
|
|||
|
|
}
|
|||
|
|
.page-link:hover {
|
|||
|
|
z-index: 2;
|
|||
|
|
|
|||
|
|
text-decoration: underline !important;
|
|||
|
|
color: #4CAF50 !important;
|
|||
|
|
border: 1px solid #4CAF50 !important;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.page-item.active .page-link {
|
|||
|
|
z-index: 3;
|
|||
|
|
color: #fff;
|
|||
|
|
background-color: #4CAF50;
|
|||
|
|
border-color: #4CAF50;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
.page-item:first-child .page-link {
|
|||
|
|
margin-left: 0;
|
|||
|
|
border-top-left-radius: .25rem;
|
|||
|
|
border-bottom-left-radius: .25rem;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.page-item:last-child .page-link {
|
|||
|
|
border-top-right-radius: .25rem;
|
|||
|
|
border-bottom-right-radius: .25rem;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
.page-item.disabled .page-link {
|
|||
|
|
color: #4CAF50;
|
|||
|
|
pointer-events: none;
|
|||
|
|
|
|||
|
|
cursor: auto;
|
|||
|
|
background-color: #fff;
|
|||
|
|
border-color: #4CAF50;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.fixed-table-pagination{
|
|||
|
|
padding: 7px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
.float-left {
|
|||
|
|
float: left!important;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#object_list_table-header{
|
|||
|
|
margin: 0;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
#export_stat_obj a:hover ,
|
|||
|
|
#export_stat_funnel a:hover,
|
|||
|
|
#export_stat_sources a:hover,
|
|||
|
|
#export_sales_plan a:hover{
|
|||
|
|
color: #237ef7 !important;
|
|||
|
|
border-color: #3a8efa !important;
|
|||
|
|
border-bottom: 1px solid #3a8efa !important;
|
|||
|
|
}
|
|||
|
|
.float-right {
|
|||
|
|
float: right !important;
|
|||
|
|
}
|
|||
|
|
.buttons-toolbar .btn-group, .buttons-toolbar .btn-group-vertical
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
position: relative;
|
|||
|
|
display: inline;
|
|||
|
|
vertical-align: middle;
|
|||
|
|
margin: 0px 10px 10px 0px;
|
|||
|
|
}
|
|||
|
|
.dropdown-menu {
|
|||
|
|
position: absolute;
|
|||
|
|
top: 100%;
|
|||
|
|
z-index: 1000;
|
|||
|
|
display: none;
|
|||
|
|
float: left;
|
|||
|
|
min-width: 10rem;
|
|||
|
|
padding: .5rem 0;
|
|||
|
|
margin: .125rem 0 0;
|
|||
|
|
font-size: 1rem;
|
|||
|
|
color: #212529;
|
|||
|
|
text-align: left;
|
|||
|
|
list-style: none;
|
|||
|
|
background-color: #fff;
|
|||
|
|
background-clip: padding-box;
|
|||
|
|
border: 1px solid rgba(0,0,0,.15);
|
|||
|
|
border-radius: .25rem;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.dropdown-item {
|
|||
|
|
display: block;
|
|||
|
|
width: 100%;
|
|||
|
|
padding: .25rem 1.5rem;
|
|||
|
|
clear: both;
|
|||
|
|
font-weight: 400;
|
|||
|
|
color: #212529;
|
|||
|
|
text-align: inherit;
|
|||
|
|
white-space: nowrap;
|
|||
|
|
background-color: transparent;
|
|||
|
|
border: 0;
|
|||
|
|
}
|
|||
|
|
.table_white{
|
|||
|
|
color: #fff;
|
|||
|
|
white-space: nowrap;
|
|||
|
|
}
|
|||
|
|
/* #table-funnel-keep-selection, #table-sources-keep-selection{
|
|||
|
|
display: block;
|
|||
|
|
width: 100%;
|
|||
|
|
border-bottom: none;
|
|||
|
|
border-right: none;
|
|||
|
|
border-left: none;
|
|||
|
|
}*/
|
|||
|
|
|
|||
|
|
|
|||
|
|
#table-sources-keep-selection-fixed .bootstrap-table .fixed-table-container.fixed-height,
|
|||
|
|
#table-sales_plan_list-selection-fixed .bootstrap-table .fixed-table-container.fixed-height{
|
|||
|
|
border-bottom: 0px !important;
|
|||
|
|
}
|
|||
|
|
#table-sales_plan_list-selection a:hover{
|
|||
|
|
border-bottom: none !important;
|
|||
|
|
}
|
|||
|
|
.fixed-table-loading{
|
|||
|
|
width: 100% !important;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.bootstrap-table .fixed-table-container.fixed-height .fixed-table-border{
|
|||
|
|
border-left: 1px solid #fff !important;
|
|||
|
|
border-right: 1px solid #fff !important;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.itemSource{
|
|||
|
|
width: 300px;
|
|||
|
|
display: block;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.itemSource span{
|
|||
|
|
white-space: nowrap;
|
|||
|
|
overflow: hidden;
|
|||
|
|
padding: 5px;
|
|||
|
|
text-overflow: ellipsis;
|
|||
|
|
display: block;
|
|||
|
|
}
|
|||
|
|
.treegrid-indent, .treegrid-expander{
|
|||
|
|
float: left;
|
|||
|
|
margin-top: 5px;
|
|||
|
|
}
|
|||
|
|
#table-sources-keep-selection-fixed table, #table-sales_plan_list-selection-fixed table {
|
|||
|
|
margin-bottom: 0;
|
|||
|
|
}
|
|||
|
|
.statsObjectsFooter{
|
|||
|
|
color:#fff !important;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.statsObjectsFooter:hover{
|
|||
|
|
color:#fff !important;
|
|||
|
|
}
|
|||
|
|
</style>
|
|||
|
|
<!-- Latest compiled and minified CSS -->
|
|||
|
|
<link href="/css/jquery.treegrid.css" rel="stylesheet">
|
|||
|
|
|
|||
|
|
<link href="/css/bootstrap-table.min.css" rel="stylesheet">
|
|||
|
|
<!--<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.24.0/dist/extensions/fixed-columns/bootstrap-table-fixed-columns.min.css">-->
|
|||
|
|
|
|||
|
|
<script src="/js/jquery.treegrid.min.js"></script>
|
|||
|
|
<script src="/js/bootstrap-table.min.js"></script>
|
|||
|
|
<!--<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.24.0/dist/extensions/fixed-columns/bootstrap-table-fixed-columns.min.js"></script>-->
|
|||
|
|
<script src="/js/bootstrap-table-treegrid.min.js"></script>
|
|||
|
|
<script src="/js/bootstrap-table-locale-all.min.js"></script>
|
|||
|
|
<script type="text/javascript" src="/js/libs/js-xlsx/xlsx.core.min.js"></script>
|
|||
|
|
<script type="text/javascript" src="/js/libs/FileSaver/FileSaver.min.js"></script>
|
|||
|
|
<script src="/js/tableExport.js"></script>
|
|||
|
|
<script type="text/javascript" src="/js/dragscroll.min.js"></script>
|
|||
|
|
|
|||
|
|
<div class="full_modal-bg clients" id="stats_objects_list__bg" style="display: none; margin-bottom: 0; z-index: 99987">
|
|||
|
|
<span class="pseudo-link closer"><i class="ti-close"></i></span>
|
|||
|
|
<input type="hidden" id="obj_table_stat_user_id" value=""/>
|
|||
|
|
<input type="hidden" id="obj_table_stat_type" value=""/>
|
|||
|
|
|
|||
|
|
<div class="full_modal history__modal" id="stats_objects_list" style="display: none; background: inherit; top: 30px !important; height: 92%;">
|
|||
|
|
<div class="object-content__preloader">
|
|||
|
|
<img src="../images/rocket-spinner.svg" width="96px">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="full_modal-bg" id="stats_funnel_list__bg" style="display: none; margin-bottom: 0;">
|
|||
|
|
<span class="pseudo-link closer"><i class="ti-close"></i></span>
|
|||
|
|
<div class="full_modal history__modal crm__table" id="stats_funnel_list" style="display: none; background: inherit; top: 30px !important;">
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="full_modal-bg" id="stats_sources_list__bg" style="display: none; margin-bottom: 0;">
|
|||
|
|
<span class="pseudo-link closer"><i class="ti-close"></i></span>
|
|||
|
|
<div class="full_modal history__modal crm__table" id="stats_sources_list" style="display: none; background: inherit; top: 30px !important;">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<!--План продаж-->
|
|||
|
|
<div class="full_modal-bg" id="sales_plan_list__bg" style="display: none; margin-bottom: 0;">
|
|||
|
|
<span class="pseudo-link closer"><i class="ti-close"></i></span>
|
|||
|
|
<div class="full_modal history__modal crm__table" id="sales_plan_list" style="display: none; background: inherit; top: 30px !important;">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<?php require($_SERVER['DOCUMENT_ROOT']."/templates/footer.php"); ?>
|
|||
|
|
<script type="text/javascript" src="/js/crm_vue.js?v=<?=filemtime($_SERVER['DOCUMENT_ROOT'].'/js/crm_vue.js')?>"></script>
|
|||
|
|
<script type="text/javascript" src="/js/clients_vue.js?v=<?=filemtime($_SERVER['DOCUMENT_ROOT'].'/js/clients_vue.js')?>"></script>
|
|||
|
|
|
|||
|
|
<?php
|
|||
|
|
// Статистика объекты
|
|||
|
|
$sqlObj = 'SELECT item_list FROM `reclame_table` WHERE id_user='.$_SESSION['id']. ' AND id_table=4';
|
|||
|
|
$reSqlObj = mysql_query($sqlObj);
|
|||
|
|
$resObj = mysql_fetch_assoc($reSqlObj);
|
|||
|
|
$resListObj = $resObj['item_list'];
|
|||
|
|
|
|||
|
|
|
|||
|
|
$sql = 'SELECT item_list FROM `reclame_table` WHERE id_user='.$_SESSION['id']. ' AND id_table=3';
|
|||
|
|
$reSql = mysql_query($sql);
|
|||
|
|
$res = mysql_fetch_assoc($reSql);
|
|||
|
|
$resList = $res['item_list'];
|
|||
|
|
|
|||
|
|
?>
|
|||
|
|
<script>
|
|||
|
|
// $('.clients_table .keep-open .dropdown-menu input').on('click', function(e) {
|
|||
|
|
// e.preventDefault();
|
|||
|
|
// $("#obj-stat-grid-full").bootgrid("reload");
|
|||
|
|
// })
|
|||
|
|
// getEventListeners($('.clients_table .keep-open .dropdown-menu label'))
|
|||
|
|
$(document).ready(function() {
|
|||
|
|
// $( "#obj-stat-grid-full" ).wrap( "<div class='object_list_table_scroll'></div>" );
|
|||
|
|
|
|||
|
|
let arr = '<?=$resList?>';
|
|||
|
|
//console.log(arr);
|
|||
|
|
var arrayOfStrings = arr.split(',');
|
|||
|
|
if(arr) {
|
|||
|
|
|
|||
|
|
$('.clients_table .keep-open .dropdown-menu input').each(function(){
|
|||
|
|
arr.includes($(this).attr('data-field')) ? '' : $(this).trigger('click');
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
$('.clients_table .keep-open .dropdown-menu').append(`<li class="save"><a id="saveTable">Сохранить</a></li>`);
|
|||
|
|
|
|||
|
|
$('#saveTable').on('click', function() {
|
|||
|
|
let arr = [];
|
|||
|
|
let idUser = <?= $_SESSION['id'];?>;
|
|||
|
|
$('.clients_table .keep-open .dropdown-menu input').each(function(){
|
|||
|
|
$(this).is(':checked') ? arr.push($(this).attr('data-field')) : '';
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
$.ajax({
|
|||
|
|
url:"/ajax/getReclameTable.php",
|
|||
|
|
method: 'get',
|
|||
|
|
dataType: 'html',
|
|||
|
|
data: {arrPunkt: arr, idTable: 3, idUser: idUser},
|
|||
|
|
success: function(data) {}
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
|
|||
|
|
// Статистика объекты
|
|||
|
|
|
|||
|
|
let arrObj = '<?=$resListObj?>';
|
|||
|
|
var arrayOfStringsObj = arrObj.split(',');
|
|||
|
|
if(arrObj) {
|
|||
|
|
|
|||
|
|
$('.actionBar .dropdown-menu input').each(function(){
|
|||
|
|
arrObj.includes($(this).attr('name')) ? '' : $(this).trigger('click');
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
$(' .actionBar .btn-group > .btn-group:last-child ul.dropdown-menu').append(`<li class="save"><a id="saveTableObj">Сохранить</a></li>`);
|
|||
|
|
$('#saveTableObj').on('click', function() {
|
|||
|
|
let arr = [];
|
|||
|
|
let idUser = <?= $_SESSION['id'];?>;
|
|||
|
|
$('.actionBar .dropdown-menu input').each(function(){
|
|||
|
|
$(this).is(':checked') ? arr.push($(this).attr('name')) : '';
|
|||
|
|
})
|
|||
|
|
$.ajax({
|
|||
|
|
url:"/ajax/getReclameTable.php",
|
|||
|
|
method: 'get',
|
|||
|
|
dataType: 'html',
|
|||
|
|
data: {arrPunkt: arr, idTable: 4, idUser: idUser},
|
|||
|
|
success: function(data) {
|
|||
|
|
console.log(data);
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
|
|||
|
|
// $(document).on('click', function(e) {
|
|||
|
|
// console.log(e.target);
|
|||
|
|
// });
|
|||
|
|
|
|||
|
|
// console.log($(window).find('.keep-open .dropdown-menu'));
|
|||
|
|
|
|||
|
|
});
|
|||
|
|
function resList() {
|
|||
|
|
let res = '<?=$resList?>';
|
|||
|
|
return res;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function clickInput(_this) {
|
|||
|
|
//console.log(_this.closest('#stats_funnel_list').length);
|
|||
|
|
if(_this.closest('.full_modal').css('display') != 'none') {
|
|||
|
|
_this.trigger('click');
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<link rel="stylesheet" href="/css/lw-charts.css" type="text/css">
|
|||
|
|
|
|||
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.46/moment-timezone-with-data.min.js"></script>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|