Joywork/templates/modals/export_settings.php

465 lines
24 KiB
PHP
Raw Permalink Normal View History

2026-05-22 20:21:54 +02:00
<!-- Latest compiled and minified CSS -->
<script type="text/javascript" src="/js/bootstrap.js"></script>
<script type="text/javascript" src="/js/jquery.bootgrid.js"></script>
<link rel="stylesheet" href="/css/bootstrap.css" type="text/css">
<link rel="stylesheet" href="/css/jquery.bootgrid.css" type="text/css">
<link href="/css/jquery.treegrid.css" rel="stylesheet">
<link href="/css/bootstrap-table.min.css" rel="stylesheet">
<script src="/js/jquery.treegrid.min.js"></script>
<script src="/js/bootstrap-table.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>
<style>
.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;
}
#grid td.select-cell .select-box, #grid-keep-selection td.select-cell .select-box {
display: none;
}
#object_list_table td.select-cell, #obj-stat-grid-full td.select-cell {
width: 0 !important;
}
.row-selected, .row-selected td {
background-color: #F5E4C7 !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;
}
th.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{
border-bottom: 0px !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{
margin-bottom: 0;
}
</style>
<div id="export_settings" class="hidden">
<div class="full_modal-bg" v-show="isShow">
<span class="pseudo-link closer event-modal-closer" @click="closes">
<i class="ti-close"></i>
</span>
<div class="full_modal flat__modal" v-show="isShow">
<div class="flat__inner">
<div class="flat__top">
<h2 v-html="'Настройки экспорта'"></h2>
<div class="form-block">
<div class="label">Выбрать отчет</div>
<div class="inputs" style="width: 420px;">
<v-select :components="{OpenIndicator}" @input="select_raport" transition="" class="vue_select" style="width: 400px; border: none;" :options="raports" :reduce="name => name.code" label="name" v-model="raport_id"/>
</div>
<a v-if="raport_id>0" @click="deleteRaport" href="javascript:{};" title="Удалить" class="no-border">
<span class="simple-button delete">
<i style="margin-top: 7px;top: 0;position: absolute;" class="jw-action-icon-delete"></i>
</span>
</a>
</div>
<!--<button class="booking JWbutton button" data-id="" data-FlatNum="" >Забронировать</button>-->
</div>
<div class="jW-tabs">
<ul class="tabs__caption">
<li @click="changeTab('setting')" :class="{'active': tab=='setting'}"><span>Настройки столбцов</span></li>
<li v-show="raport_id>0" @click="changeTab('funnels')" :class="{'active': tab=='funnels'}"><span>Настройки по воронкам</span></li>
<li @click="changeTab('order')" :class="{'active': tab=='order'}"><span>Отчеты</span></li>
</ul>
<div>
<div v-show="tab == 'setting'" class="tabs__content __main">
<div v-show="isPreloader == 1" style="text-align:center; margin-top: 25px;">
<img src="../images/rocket-spinner.svg" width="96px">
</div>
<div v-show="isPreloader == 0">
<div style="float:left;" class="__field_selection __div">
<h2>Столбцы постоянные</h2>
<div class="__step" @click="checkColumn('id')" :data-active="columns.id">
<p>ID заявки</p>
</div>
<div class="__step" @click="checkColumn('date')" :data-active="columns.date">
<p>Дата</p>
</div>
<div class="__step" @click="checkColumn('responsible')" :data-active="columns.responsible">
<p>Ответственный</p>
</div>
<div class="__step" @click="checkColumn('client')" :data-active="columns.client">
<p>Клиент</p>
</div>
<div class="__step" @click="checkColumn('phone')" :data-active="columns.phone">
<p>Телефон клиента</p>
</div>
<div class="__step" @click="checkColumn('email')" :data-active="columns.email">
<p>E-mail клиента</p>
</div>
<div class="__step" @click="checkColumn('name_req')" :data-active="columns.name_req">
<p>Название заявки</p>
</div>
<div class="__step" @click="checkColumn('type_req')" :data-active="columns.type_req">
<p>Тип Заявки</p>
</div>
<div class="__step" @click="checkColumn('contract_type')" :data-active="columns.contract_type">
<p>Тип договора</p>
</div>
<div class="__step" @click="checkColumn('contract_number')" :data-active="columns.contract_number">
<p>Номер договора</p>
</div>
<div class="__step" @click="checkColumn('contract_date')" :data-active="columns.contract_date">
<p>Дата договора</p>
</div>
<div class="__step" @click="checkColumn('nazv_obj')" :data-active="columns.nazv_obj">
<p>Название объекта</p>
</div>
<div class="__step" @click="checkColumn('address_obj')" :data-active="columns.address_obj">
<p>Адрес объекта</p>
</div>
<div class="__step" @click="checkColumn('price_obj')" :data-active="columns.price_obj">
<p>Цена объекта</p>
</div>
<div class="__step" @click="checkColumn('funnel')" :data-active="columns.funnel">
<p>Воронка</p>
</div>
<div class="__step" @click="checkColumn('step')" :data-active="columns.step">
<p>Этап</p>
</div>
<div class="__step" @click="checkColumn('desc')" :data-active="columns.desc">
<p>Описание</p>
</div>
<div class="__step" @click="checkColumn('events')" :data-active="columns.events">
<p>Последние задачи</p>
</div>
<div class="__step" @click="checkColumn('events_call')" :data-active="columns.events_call">
<p>Касания/Звонки</p>
</div>
<div class="__step" @click="checkColumn('tag')" :data-active="columns.tag">
<p>Теги</p>
</div>
<div class="__step sources" @click="checkColumn('source')" :data-active="columns.source">
<p>Источник</p>
</div>
<div class="__step" @click="checkColumn('partner')" :data-active="columns.partner">
<p>Партнер</p>
</div>
<div class="__step" @click="checkColumn('denial')" :data-active="columns.denial">
<p>Причина закрытия</p>
</div>
<div class="__step" @click="checkColumn('denial_comm')" :data-active="columns.denial_comm">
<p>Комментарий введенный при закрытии</p>
</div>
<div class="__step" @click="checkColumn('summa')" :data-active="columns.summa">
<p>Сумма сделки</p>
</div>
<div class="__step" @click="checkColumn('date_close')" :data-active="columns.date_close">
<p>Дата закрытия</p>
</div>
</div>
<div style="float:left;" class="__field_selection __div">
<h2>Столбцы из кастомных полей</h2>
<div class="__step" @click="checkColumnFieldAll" :data-active="castomAllChange">
<p><b>Отметить/снять все</b></p>
</div>
<template v-for="(column,idColumn) in columnsReq">
<div class="__step" @click="checkColumnField(idColumn)" :data-active="column.val">
<p>{{ column.title }}</p>
</div>
</template>
</div>
<div class="clear"></div>
</div>
</div>
<div v-show="tab == 'funnels'" class="tabs__content __main">
<div v-show="isPreloader == 1" style="text-align:center; margin-top: 25px;">
<img src="../images/rocket-spinner.svg" width="96px">
</div>
<div v-show="isPreloader == 0" id="__FUNNELS" class="__div">
<h2>Воронки</h2>
<template v-for="funnel in funnels">
<div class="__item" :data-active="funnel.is_active" @click="checkFunnelActive(funnel.id)" :data-id="funnel.id">
<p>{{ funnel.name }}</p>
</div>
<div v-show="funnel.is_active" class="__field_selection __div" :data-id="funnel.id">
<h2 style="margin:0;">Этапы и поля из "{{ funnel.name }}"</h2>
<template v-for="step in funnel.steps">
<div :data-id="step.id">
<div @click="checkFunnelStepActive(funnel.id, step.id)" class="__step" :data-active="step.is_active">
<p>{{ step.name }}</p>
</div>
<template v-for="(field, fieldIndex) in step.fields">
<div v-if="field.type === 'Текст' || field.type === 'Дата' || field.type === 'Строка'" @click="checkFunnelStepFieldActive(funnel.id, step.id, fieldIndex)" class="__field" :data-active="field.is_active">
<p>{{ field.name }}</p>
</div>
</template>
</div>
</template>
</div>
</template>
</div>
</div>
<div v-show="tab == 'order'" class="tabs__content __main">
<div class="__div">
<h2>Отчеты</h2>
<div style="margin-bottom: 15px;" v-for="raport in raport_list">
<p style="font-size:18px; float:left; margin-right: 10px;">{{ raport.name }}</p>
<a @click="editRaport(raport.id)" href="javascript:{};" title="Редактировать" class="no-border">
<span class="simple-button delete">
<i style="margin-top: 7px;" class="jw-action-icon-settings"></i>
</span>
</a>
<a @click="deleteRaport(raport.id)" href="javascript:{};" title="Удалить" class="no-border">
<span class="simple-button delete">
<i style="margin-top: 7px;" class="jw-action-icon-delete"></i>
</span>
</a>
<div class="clear"></div>
</div>
<!--<div style="text-align:center; margin-top: 25px;">
<img src="../images/rocket-spinner.svg" width="96px">
</div>-->
</div>
</div>
</div>
</div>
<div v-show="(tab == 'setting' || tab == 'funnels') && isPreloader == 0" class="flat__top">
<div class="inputs" style="float:right;margin-right: 15px;margin-bottom: 15px;">
<input v-model.trim="title_raport" placeholder="Название отчета" class="text" :class="{'invalid': error_title_raport == 1}" type="text" style="width:260px;">
</div>
<div class="clear"></div>
<button style="float:right;" @click="saveRaport" class="booking JWbutton button" data-id="" data-FlatNum="">
<span v-if="raport_id>0">Сохранить редактирование</span>
<span v-else>Cоздать отчет</span>
</button>
<button style="float:right;" @click="save" class="booking JWbutton button" data-id="" data-FlatNum="">Сохранить</button>
<div class="clear"></div>
</div>
</div>
</div>
</div>
<div class="full_modal-bg" v-show="is_modal_export">
<span class="pseudo-link closer" @click="close_modal_export"><i class="ti-close"></i></span>
<div class="full_modal edit-modal" v-show="is_modal_export">
<div class="modal-inner">
<h2>Процесс экспорта</h2>
<div class="form-block">
<div class="settings-block">
<div class="jw__NB">
<div v-show="!is_write_file" class="jw__NB__flat-list">
<div style="margin-top: 20px">
<p>Пожалуйста, подождите, идет сбор информации.</p>
<vue-simple-progress bar-color="#4caf50" :val="progress" :size="20" :text="progress + '%'"></vue-simple-progress>
</div>
</div>
<div v-show="is_write_file" class="jw__NB__flat-list">
<div style="margin-top: 20px">
<p>Пожалуйста, подождите, идет запись в файл. Запись может занять несколько минут</p>
<div style="text-align:center; margin-top: 25px;">
<img src="../images/rocket-spinner.svg" width="96px">
</div>
</div>
</div>
</div>
</div>
<div class="clear"></div>
</div>
</div>
<!--<div class="modal-submit">
<button @click="close_modal_export" type="submit">Закрыть <i class="ti-angle-right"></i></button>
</div>-->
</div>
</div>
<!--Модал отчета-->
<div class="full_modal-bg" v-show="isShowRaport">
<span class="pseudo-link closer event-modal-closer" @click="closes_raport">
<i class="ti-close"></i>
</span>
<div class="full_modal flat__modal" v-show="isShowRaport">
<div class="flat__inner">
<div class="flat__top">
<h2 v-html="title_raport"></h2>
</div>
<div class="jW-tabs">
<div>
<div class="tabs__content">
<!--<div style="text-align:center; margin-top: 25px;">
<img src="../images/rocket-spinner.svg" width="96px">
</div>-->
<div class="">
<button @click="export_req(0)" class="booking JWbutton button">Экспорт в EXCEL</button>
<!-- <button @click="show_table" class="booking JWbutton button">Показать отчет</button>-->
</div>
<div class="crm__table" id="order_export" style="display: none; background: inherit; top: 30px !important;">
</div>
<div class="clear"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript" src="/js/modals/export_settings.js?<?=filemtime($_SERVER['DOCUMENT_ROOT'].'/js/modals/export_settings.js')?>"></script>
<script type="text/javascript" src="/js/vue_scripts/export_settings_vue.js?<?=filemtime($_SERVER['DOCUMENT_ROOT'].'/js/vue_scripts/export_settings_vue.js')?>"></script>