4145 lines
168 KiB
JavaScript
4145 lines
168 KiB
JavaScript
Vue.config.devtools = true;
|
||
|
||
Vue.component('v-select', VueSelect.VueSelect)
|
||
Vue.directive('mask', VueMask.VueMaskDirective);
|
||
|
||
// JW-style toast (стили — crm.css). Idempotent guard на случай повторной загрузки файла.
|
||
if (typeof window.jwShowCopyToast !== 'function') {
|
||
window.jwShowCopyToast = function (text) {
|
||
var container = document.getElementById('jw-toast-container');
|
||
if (!container) {
|
||
container = document.createElement('div');
|
||
container.id = 'jw-toast-container';
|
||
container.className = 'jw-toast-container';
|
||
document.body.appendChild(container);
|
||
}
|
||
var toast = document.createElement('div');
|
||
toast.className = 'jw-toast';
|
||
toast.textContent = String(text || '');
|
||
container.appendChild(toast);
|
||
void toast.offsetWidth; // reflow для transition
|
||
toast.classList.add('jw-toast-show');
|
||
setTimeout(function () {
|
||
toast.classList.remove('jw-toast-show');
|
||
setTimeout(function () {
|
||
if (toast.parentNode) toast.parentNode.removeChild(toast);
|
||
}, 250);
|
||
}, 3500);
|
||
};
|
||
}
|
||
|
||
if ($('#requisitions_list').length > 0) {
|
||
var requisitions = new Vue({
|
||
el: '#requisitions_list',
|
||
components: {
|
||
Multiselect: window.VueMultiselect.default,
|
||
vuejsDatepicker: window.vuejsDatepicker
|
||
},
|
||
name: 'requisitions_list',
|
||
data() {
|
||
|
||
return {
|
||
req: [],
|
||
isPreloader: 1,
|
||
agencyId: $('#session_agency_id').val(),
|
||
user_id: $('#userIdReq').val(),
|
||
userId: $('#session_user_id').val(),
|
||
funnel_id: $('#funnelIdClients').val(),
|
||
autosearch: [],
|
||
autosearch_id: 0,
|
||
autosearch_info: '',
|
||
autosearch_comment: '',
|
||
isList: true,
|
||
isKanban: false,
|
||
isTable: false,
|
||
view: 'list',
|
||
steps: [],
|
||
filtr: [],
|
||
page: 1,
|
||
isLoading: false,
|
||
all_pages: 1,
|
||
prevPage: 0,
|
||
ot: 0,
|
||
do: 0,
|
||
pagePagin: [],
|
||
activities: [],
|
||
activities_name: [],
|
||
totalReqs: 0,
|
||
OpenIndicator: {
|
||
render: createElement => createElement('span', { class: { 'vueToggleSpan': true } }),
|
||
},
|
||
option_contract_tag: [{ 'code': 1, 'name': 'Добавить тег' }, { 'code': 2, 'name': 'Добавить договор' }],
|
||
add_tag_contract: null,
|
||
req_id_contract_tag: 0,
|
||
prev_selectors: { 'li': null, 'ul': null },
|
||
// Состояние модалки копирования заявки. employees — серверный пререндер window.__copyEmployeesList (см. requisitions.php); фильтр в Vue (без Select2).
|
||
copyModal: {
|
||
open: false,
|
||
srcId: null,
|
||
funnels: [],
|
||
funnelId: null,
|
||
employees: [],
|
||
whoWorkId: null,
|
||
whoWorkSearch: '',
|
||
whoWorkOpen: false,
|
||
whoWorkLabel: '',
|
||
defaultWhoWorkId: null,
|
||
warnings: [],
|
||
submitting: false,
|
||
error: null,
|
||
},
|
||
}
|
||
},
|
||
computed: {
|
||
// Фильтр сотрудников по whoWorkSearch (case-insensitive).
|
||
copyFilteredEmployees: function() {
|
||
var q = (this.copyModal.whoWorkSearch || '').toLowerCase().trim();
|
||
var emps = this.copyModal.employees || [];
|
||
if (!q) return emps;
|
||
return emps.filter(function(e) {
|
||
return (e.name || '').toLowerCase().indexOf(q) !== -1;
|
||
});
|
||
}
|
||
},
|
||
watch: {
|
||
totalReqs(newVal) {
|
||
if (!newVal) {
|
||
newVal = localStorage.getItem('totalReqs')
|
||
}
|
||
this.$nextTick(() => {
|
||
const totalCount = newVal
|
||
|
||
let countValues = $('.task-count-holder .task-count:not(.task-count-percent)')
|
||
.map(function () {
|
||
return parseInt($(this).text(), 10);
|
||
})
|
||
.get()
|
||
|
||
$('.task-count-holder').each(function (index) {
|
||
const rawCount = countValues[index] || 0;
|
||
let rawPercent = (rawCount / totalCount) * 100 || 0;
|
||
const percent = Number.isInteger(rawPercent) ? rawPercent.toString() : rawPercent.toFixed(2) || 0;
|
||
const color = $(this).find('.task-count-percent').css('color') || '#00aaff';
|
||
const bg = `conic-gradient(${color} 0% ${percent}%, #dfdfdf ${percent}% 100%)`;
|
||
|
||
$(this).find('.circle-progress').css('background', bg);
|
||
$(this).find('.task-count-percent').text(percent + '%');
|
||
});
|
||
|
||
})
|
||
|
||
},
|
||
view(newVal) {
|
||
if (newVal === 'kanban') {
|
||
const totalFromSt = localStorage.getItem('totalReqs')
|
||
this.totalReqs = totalFromSt
|
||
}
|
||
|
||
},
|
||
// Watch 'copyModal.funnelId' удалён: список сотрудников не зависит от воронки, заполняется один раз из window.__copyEmployeesList.
|
||
},
|
||
methods: {
|
||
setAutosearch(reqs) {
|
||
if (!this.isEmpty(reqs)) {
|
||
setTimeout(function() { check_req_all_filter() }, 1000)
|
||
|
||
|
||
let as_req_ids = [];
|
||
Object.entries(reqs).forEach((item, index) => {
|
||
|
||
if (
|
||
(item[1].type_id == 1 || item[1].heir_type == 1) ||
|
||
(item[1].type_id == 4 || item[1].heir_type == 4)) {
|
||
as_req_ids.push(item[1].id.toString());
|
||
}
|
||
});
|
||
|
||
if (!this.isEmpty(as_req_ids)) {
|
||
|
||
axios.post('/ajax/ajax_vue_autosearch.php', {
|
||
request: 'get_filter_by_req',
|
||
user_id: this.user_id,
|
||
req_ids: as_req_ids,
|
||
}).then((response) => {
|
||
if (response.data.success) {
|
||
Object.entries(response.data.results).forEach((item, index) => {
|
||
if (!this.isEmpty(this.req['req' + item[0]])) {
|
||
this.req['req' + item[0]]['autosearch'] = item[1]['autosearch'];
|
||
this.req['req' + item[0]]['autosearch_id'] = item[1]['autosearch_id'];
|
||
this.req['req' + item[0]]['autosearch_info'] = item[1]['autosearch_info'];
|
||
this.req['req' + item[0]]['autosearch_comment'] = item[1]['autosearch_comment'];
|
||
}
|
||
});
|
||
}
|
||
}).catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
}
|
||
|
||
|
||
}
|
||
},
|
||
|
||
//Для объединения
|
||
setUnionReq(reqs){
|
||
|
||
//console.log(reqs);
|
||
if (!this.isEmpty(reqs, this.agencyId)) {
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_union_reqs',
|
||
reqs: reqs,
|
||
agency_id: this.agencyId,
|
||
user_id: this.userId
|
||
|
||
}, )
|
||
.then((response) => {
|
||
// console.log(response.data);
|
||
const union_req = response.data;
|
||
|
||
Object.entries(union_req).forEach(([reqKey, unionIds]) => {
|
||
// console.log(unionIds);
|
||
let found = false;
|
||
// Перебираем все шаги (кроме 'count' и других не-шагов)
|
||
for (const step in this.req) {
|
||
if (step === 'count' || step === 'union_req' || !this.req.hasOwnProperty(step)) continue;
|
||
|
||
if (this.req[step] && step == reqKey) {
|
||
this.$set(this.req[step], 'union_req', unionIds);
|
||
found = true;
|
||
|
||
console.log(`[setUnionReq] Updated ${reqKey} in step ${step}`);
|
||
}
|
||
if(this.req[step][reqKey])
|
||
this.$set(this.req[step][reqKey], 'union_req', unionIds);
|
||
}
|
||
|
||
if (!found) {
|
||
console.warn(`[setUnionReq] req "${reqKey}" not found in any step`);
|
||
}
|
||
});
|
||
|
||
/* Object.entries(union_req).forEach((item, index) => {
|
||
this.req[item[0]].union_req = item[1];
|
||
if(this.req.count !== undefined){
|
||
for(var step in this.req.count){
|
||
if(this.req[step][item[0]] !== undefined){
|
||
this.req[step][item[0]].union_req = item[1];
|
||
}
|
||
}
|
||
}
|
||
});*/
|
||
// console.log(this.req);
|
||
// this.steps = response.data;
|
||
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
})
|
||
}
|
||
},
|
||
|
||
open_union_req_form(reqs_id, req_id){
|
||
|
||
reqs_id.push(req_id);
|
||
if(typeof union_reqs_form == 'object'){
|
||
union_reqs_form.main_id = req_id;
|
||
union_reqs_form.is_union = 0;
|
||
union_reqs_form.openForm(reqs_id);
|
||
}
|
||
},
|
||
|
||
open_joint_req(req_id){
|
||
|
||
if(typeof union_reqs_form == 'object'){
|
||
// union_reqs_form.main_id = req_id;
|
||
union_reqs_form.is_union = 0;
|
||
}
|
||
union_reqs_form.openFormJoint(req_id);
|
||
},
|
||
|
||
//Список
|
||
getList() {
|
||
|
||
|
||
if (this.funnel_id == "all") {
|
||
this.view = "list";
|
||
|
||
}
|
||
|
||
console.log(this.view);
|
||
|
||
// console.log(this.page);
|
||
let funnel_id = $('#funnelIdClients').val();
|
||
let use_custom_funnel = $('#useCustomFunnel').val();
|
||
// get_funnels(funnel_id, 'requisitions', use_custom_funnel);
|
||
if (this.page > 1 && this.view == 'kanban') {
|
||
////////
|
||
} else {
|
||
this.req = [];
|
||
this.isPreloader = 1;
|
||
}
|
||
this.pagePagin = [];
|
||
this.ot = 0;
|
||
this.do = 0;
|
||
|
||
if (this.view == "list") {
|
||
this.isList = true;
|
||
this.isKanban = false;
|
||
this.isTable = false;
|
||
//this.view = 'list';
|
||
$('#groupClients').show();
|
||
} else if (this.view == 'kanban') {
|
||
this.isList = false;
|
||
this.isKanban = true;
|
||
this.isTable = false;
|
||
this.view = 'kanban';
|
||
this.getStepsFunnel();
|
||
this.funnel_id = $('#funnelIdClients').val();
|
||
$('#groupClients').hide();
|
||
|
||
} else if (this.view == 'table') {
|
||
this.isList = false;
|
||
this.isKanban = false;
|
||
this.isTable = true;
|
||
this.view = 'table';
|
||
$('#groupClients').hide();
|
||
}
|
||
console.log(this.isKanban);
|
||
console.log(this.filtr.order);
|
||
if(this.isKanban){
|
||
if(this.filtr.order === false || this.filtr.order == 0){
|
||
$('#sort_order_req').val(2);
|
||
}
|
||
}
|
||
|
||
//удаление вспомогательной таблицы
|
||
$("#req_table2").bootgrid("destroy");
|
||
$("#req_table2").remove();
|
||
// console.log(this.filtr);
|
||
return get_funnels(funnel_id, 'requisitions', use_custom_funnel).then(() => {
|
||
|
||
return axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_all',
|
||
user_id: this.user_id,
|
||
funnel_id: this.funnel_id,
|
||
view: this.view,
|
||
filtr: this.filtr,
|
||
page: this.page,
|
||
}, )
|
||
.then((response) => {
|
||
|
||
const totalReqsSt = localStorage.getItem('totalReqs')
|
||
if (!totalReqsSt) {
|
||
localStorage.setItem('totalReqs', this.totalReqs);
|
||
this.totalReqs = response.data.total_req
|
||
}
|
||
console.log(response.data);
|
||
if (this.view == 'kanban' && this.page > 1) {
|
||
this.req.count = response.data.req.count;
|
||
const totalFromSt = localStorage.getItem('totalReqs')
|
||
this.totalReqs = totalFromSt
|
||
//console.log(response.data);
|
||
setTimeout(() => {
|
||
for (var i in response.data.req) {
|
||
|
||
|
||
if (!isNaN(parseInt(i))) {
|
||
for (var ii in response.data.req[i]) {
|
||
if (ii.indexOf("req") > -1) {
|
||
if (!requisitions.req[i]) {
|
||
console.log('r.q is undefined');
|
||
continue
|
||
}
|
||
requisitions.$set(requisitions.req[i], ii, response.data.req[i][ii]);
|
||
}
|
||
}
|
||
} else if (i.indexOf("req") > -1) {
|
||
add_knban = true;
|
||
requisitions.$set(requisitions.req, i, response.data.req[i]);
|
||
}
|
||
}
|
||
//requisitions.totalReqs = response.data.total_req
|
||
|
||
requisitions.setAutosearch(response.data.req);
|
||
//if(this.agencyId == 5238 || this.agencyId == 4)
|
||
requisitions.setUnionReq(response.data.req);
|
||
let countValues = $('.task-count-holder .task-count:not(.task-count-percent)').map(function () {
|
||
return parseInt($(this).text(), 10);
|
||
})
|
||
.get()
|
||
|
||
$('.task-count-holder').each(function (index) {
|
||
const rawCount = countValues[index] || 0;
|
||
let rawPercent = (rawCount / parseInt(totalFromSt)) * 100 || 0;
|
||
|
||
const percent = Number.isInteger(rawPercent) ? rawPercent.toString() : rawPercent.toFixed(2) || 0;
|
||
const color = $(this).find('.task-count-percent').css('color') || '#00aaff';
|
||
const bg = `conic-gradient(${color} 0% ${percent}%, #dfdfdf ${percent}% 100%)`;
|
||
|
||
$(this).find('.circle-progress').css('background', bg);
|
||
$(this).find('.task-count-percent').text(percent + '%');
|
||
});
|
||
|
||
}, 500);
|
||
//this.totalReqs = response.data.total_req
|
||
if (this.totalReqs) {
|
||
localStorage.setItem('totalReqs', this.totalReqs);
|
||
}
|
||
|
||
} else {
|
||
|
||
this.req = response.data.req;
|
||
this.setAutosearch(response.data.req);
|
||
//if(this.agencyId == 5238 || this.agencyId == 4)
|
||
this.totalReqs = response.data.total_req
|
||
if (this.totalReqs) {
|
||
localStorage.setItem('totalReqs', this.totalReqs);
|
||
}
|
||
// if(this.agencyId == 5238 || this.agencyId == 4)
|
||
this.setUnionReq(response.data.req);
|
||
}
|
||
|
||
$('#req_filter_etap_input').html(response.data.step_filter);
|
||
this.getSelect('req_filter_etap_input', 'req_filter_etap', 'Этап', this.filtr.step);
|
||
|
||
$('#totalCountReq .text').text(response.data.total_req);
|
||
$('#totalCountReqComission .text').text(response.data.total_comission);
|
||
console.log(this.filtr);
|
||
if(this.filtr.stages.hit == 1){
|
||
$('#totalCountReqComission').hide();
|
||
} else {
|
||
$('#totalCountReqComission').show();
|
||
}
|
||
this.activities = response.data.activities;
|
||
this.activities_name = response.data.activities_name;
|
||
|
||
this.all_pages = parseInt(response.data.allPages);
|
||
if (this.all_pages > 1) {
|
||
if (this.page > 1)
|
||
this.prevPage = this.page - 1;
|
||
}
|
||
if (this.all_pages > 8) {
|
||
if (this.page > 4) {
|
||
this.ot = this.page - 3;
|
||
} else {
|
||
this.ot = 2;
|
||
}
|
||
|
||
if (this.page < this.all_pages - 4) {
|
||
this.do = this.page + 3;
|
||
} else {
|
||
this.do = this.all_pages;
|
||
}
|
||
} else {
|
||
this.ot = 2;
|
||
this.do = this.all_pages;
|
||
}
|
||
for (var i = this.ot; i < this.do; i++) {
|
||
this.pagePagin.push(i);
|
||
}
|
||
|
||
requisitions.isPreloader = 0;
|
||
if (this.view == 'kanban') {
|
||
|
||
setTimeout(function() {
|
||
kanbanOverscroll();
|
||
}, 500);
|
||
} else if (this.view == 'table') {
|
||
|
||
setTimeout(function() {
|
||
reqBootgrid();
|
||
}, 500);
|
||
}
|
||
|
||
autosearch_objs.$on('change_autosearch_counters', function(filter_id, counter) {
|
||
console.log({ filter_id, counter });
|
||
if (counter.total > 0) {
|
||
$('.fltr-objects-list[data-id="' + filter_id + '"] .counter').fadeIn();
|
||
$('.fltr-objects-list[data-id="' + filter_id + '"] .counter').text('+' + counter.match);
|
||
$('.fltr-objects-list[data-id="' + filter_id + '"] .error').addClass('with-counter');
|
||
} else {
|
||
$('.fltr-objects-list[data-id="' + filter_id + '"] .counter').fadeOut();
|
||
$('.fltr-objects-list[data-id="' + filter_id + '"] .counter').text('0');
|
||
$('.fltr-objects-list[data-id="' + filter_id + '"] .error').removeClass('with-counter');
|
||
}
|
||
});
|
||
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
});
|
||
|
||
},
|
||
|
||
get_req_id(id, is_kanban = 0){
|
||
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_req_id',
|
||
req_id: id,
|
||
user_id: this.user_id,
|
||
is_kanban: is_kanban
|
||
}, ).then((response) => {
|
||
|
||
var new_req = response.data;
|
||
|
||
for(var index in this.req){
|
||
|
||
if(this.req[index] && (index.indexOf('req') == -1 && index.indexOf('count') == -1)){
|
||
|
||
for(var index1 in this.req[index]){
|
||
if(index1 == 'req'+id){
|
||
var temp_req = this.req[index][index1];
|
||
|
||
this.req[index][index1] = new_req['req'+id];
|
||
requisitions.setUnionReq(this.req);
|
||
|
||
|
||
if(is_kanban){
|
||
|
||
let is_update = false;
|
||
if(index != new_req['req'+id].step_id) {
|
||
if(this.req[index][index1].funnel_id !=0){
|
||
delete this.req[index][index1];
|
||
is_update = true;
|
||
}
|
||
}
|
||
if(this.filtr.stages.close == 0 && temp_req.deleted == 0 && new_req['req'+id].deleted == 1){
|
||
// console.log($(`#kanban_item_li_${id}`));
|
||
$(`#kanban_item_li_${id}`).hide();
|
||
is_update = true;
|
||
}
|
||
if(temp_req.funnel_id != new_req['req'+id].funnel_id){
|
||
|
||
$(`#kanban_item_li_${id}`).hide();
|
||
is_update = true;
|
||
}
|
||
|
||
if(is_update){
|
||
|
||
requisitions.page = requisitions.page+1;
|
||
requisitions.getList();
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
} else if (index == 'req'+id){
|
||
this.req[index] = new_req['req'+id];
|
||
|
||
}
|
||
};
|
||
|
||
if(new_req.is_kanban){
|
||
for(var indexCount in this.req.count){
|
||
console.log(indexCount)
|
||
if(indexCount == new_req['req'+id].step_id){
|
||
if(this.req[indexCount]){
|
||
/** */
|
||
} else {
|
||
this.$set(this.req, indexCount, {});
|
||
}
|
||
this.$set(this.req[indexCount], 'req'+id, new_req['req'+id]);
|
||
}
|
||
}
|
||
}
|
||
|
||
}).catch(function(error) {
|
||
console.debug(error);
|
||
});
|
||
},
|
||
|
||
getSelect(id, idf, name, value) {
|
||
if ($('#' + idf).length > 0) {
|
||
|
||
$('#' + idf).fastselect().data('fastselect').destroy();
|
||
|
||
if (!this.isEmpty(value)) {
|
||
$('#' + idf).val(value);
|
||
} else {
|
||
$('#' + idf).val(null);
|
||
}
|
||
$('#' + idf).fastselect({
|
||
placeholder: name,
|
||
onItemCreate: function(item, model) {
|
||
if ($('#' + idf).find('option[value=' + model.value + ']').hasClass('bolt')) {
|
||
$(item).addClass('bolt');
|
||
}
|
||
},
|
||
onItemSelect: function(item, val) {
|
||
filtr.checkFiltr();
|
||
},
|
||
onItemDelete: function() {
|
||
filtr.checkFiltr();
|
||
}
|
||
});
|
||
}
|
||
},
|
||
|
||
//Пагинация
|
||
pagin(page) {
|
||
this.page = page;
|
||
this.getList();
|
||
},
|
||
|
||
//Пагинация
|
||
goToRequisitionsPage(event) {
|
||
if (event.keyCode === 13) {
|
||
var pageNum = $('#requisitionPageNumberInputForManualGoToPage').val();
|
||
|
||
if (pageNum) {
|
||
this.page = Number.parseInt(pageNum);
|
||
this.getList();
|
||
$('#requisitionPageNumberInputForManualGoToPage').val('');
|
||
}
|
||
}
|
||
},
|
||
|
||
//Пагинация
|
||
goToRequisitionsPageTable(event) {
|
||
if (event.keyCode === 13) {
|
||
var pageNum = $('#requisitionPageNumberInputForManualTableGoToPage').val();
|
||
|
||
if (pageNum) {
|
||
this.page = Number.parseInt(pageNum);
|
||
this.getList();
|
||
$('#requisitionPageNumberInputForManualGoToPage').val('');
|
||
}
|
||
}
|
||
},
|
||
|
||
//Для канбана этапы воронки
|
||
getStepsFunnel() {
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_step_funnel',
|
||
funnel_id: this.funnel_id,
|
||
|
||
}, )
|
||
.then((response) => {
|
||
// console.log(response.data);
|
||
this.steps = response.data;
|
||
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
},
|
||
|
||
//Получение бара воронки
|
||
getBarFunnel(reqId, adjacent_id = 0) {
|
||
if (this.req['req' + reqId]) {
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_bar_funnel',
|
||
funnel_id: this.req['req' + reqId].funnel_id,
|
||
req_id: reqId,
|
||
adjacent_id: adjacent_id,
|
||
}, )
|
||
.then((response) => {
|
||
ac.closesStep = false;
|
||
ac.is_looad = false;
|
||
ac.is_load_open = false;
|
||
ac.isOpenPrevStep = false;
|
||
var bar = response.data;
|
||
this.req['req' + reqId].steps = response.data;
|
||
if(response.data.steps){
|
||
this.req['req' + reqId].steps = response.data.steps;
|
||
}
|
||
if(response.data.funnels_adjacent){
|
||
this.req['req' + reqId].funnels_adjacent = response.data.funnels_adjacent;
|
||
this.req['req' + reqId].funnels_adjacent_text = response.data.funnels_adjacent_text;
|
||
}
|
||
if(response.data.req_deleted !== undefined){
|
||
requisitions.req['req' + reqId].deleted = response.data.req_deleted;
|
||
}
|
||
requisitions.isPreloader = 0;
|
||
console.log($('#client-history__bg').css('display'));
|
||
if ($('#client-history__bg').css('display') != 'none') {
|
||
$('#client-history__bg .crm__small-stagebar .stage').removeClass('nextStep');
|
||
$('#client-history__bg .crm__small-stagebar .stage').removeClass('active');
|
||
for (var i in bar.bar) {
|
||
$('#client-history__bg .crm__small-stagebar .stageFunnel__' + bar.bar[i].id).addClass(bar.bar[i].classF);
|
||
}
|
||
$('#client-history__bg .stagebar-title').text(bar.stage);
|
||
}
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
}
|
||
},
|
||
|
||
//Для редактирования
|
||
getReq(id) {
|
||
req_form.openReqForm();
|
||
|
||
this.getComplexRoom(id);
|
||
|
||
if (this.req[id].object_id > 0 && this.isEmpty(this.req[id].object)) {
|
||
this.getObject(this.req[id].object_id, id, 1);
|
||
} else {
|
||
req_form.setReq(requisitions.req[id]);
|
||
}
|
||
|
||
if (this.req[id].client_id > 0) {
|
||
this.getClient(this.req[id].client_id, id, 1);
|
||
//req_form.setReq(requisitions.req[id]);
|
||
} else {
|
||
req_form.setReq(requisitions.req[id]);
|
||
}
|
||
},
|
||
|
||
getComplexRoom(reqId) {
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_complex_room',
|
||
req_id: reqId
|
||
}, )
|
||
.then((response) => {
|
||
this.req[reqId].complex_status_id = response.data.complex_status_id;
|
||
this.req[reqId].complex_room_id = response.data.complex_room_id;
|
||
req_form.setReq(requisitions.req[reqId]);
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
},
|
||
|
||
//Получение объекта
|
||
getObject(object_id, reqId, forma, obj) {
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_object',
|
||
object_id: object_id
|
||
}, )
|
||
.then((response) => {
|
||
//console.log(response.data);
|
||
this.req[reqId].object = response.data;
|
||
if (forma) {
|
||
req_form.setReq(requisitions.req[reqId]);
|
||
if (obj) {
|
||
req_form.liGlobal = 4;
|
||
}
|
||
}
|
||
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
},
|
||
|
||
//Получение клиента
|
||
getClient(client_id, reqId, forma) {
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_client',
|
||
client_id: client_id
|
||
}, )
|
||
.then((response) => {
|
||
//console.log(response.data);
|
||
this.req[reqId].client = response.data;
|
||
if (forma) {
|
||
|
||
req_form.setReq(requisitions.req[reqId]);
|
||
}
|
||
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
},
|
||
|
||
//открыть/закрыть подробности
|
||
toggleClient(id) {
|
||
|
||
if (this.req[id].isMainInfo) {
|
||
this.req[id].isMainInfo = false;
|
||
} else {
|
||
|
||
if (this.req[id].object_id > 0 && this.isEmpty(this.req[id].object)) {
|
||
this.getObject(this.req[id].object_id, id);
|
||
}
|
||
|
||
if (this.req[id].client_id > 0 && this.isEmpty(this.req[id].client)) {
|
||
this.getClient(this.req[id].client_id, id);
|
||
}
|
||
this.req[id].isMainInfo = true;
|
||
}
|
||
},
|
||
|
||
initEditDealFromList(reqId) {
|
||
$.ajax({
|
||
url: '/ajax/ajax_vue_requisitions.php',
|
||
type: 'POST',
|
||
contentType: 'application/json',
|
||
data: JSON.stringify({ request: 'get_deal_by_req', req_id: reqId }),
|
||
success: function(response) {
|
||
var res = typeof response === 'string' ? JSON.parse(response) : response;
|
||
if (res.deal_id) {
|
||
window.editDeal(reqId, res.deal_id);
|
||
}
|
||
}
|
||
});
|
||
},
|
||
|
||
//показать объект
|
||
showObject(id) {
|
||
console.log(id);
|
||
req_form.openReqForm();
|
||
if (this.req['req' + id].object_id > 0 && this.isEmpty(this.req['req' + id].object)) {
|
||
this.getObject(this.req['req' + id].object_id, 'req' + id, 1, 1);
|
||
} else {
|
||
req_form.setReq(requisitions.req['req' + id]);
|
||
req_form.liGlobal = 4;
|
||
}
|
||
|
||
|
||
},
|
||
|
||
//Удаление заявки
|
||
cancelReq(id) {
|
||
if (confirm('Вы точно хотите безвозвратно удалить эту заявку?')) {
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'cancel_req',
|
||
req_id: id
|
||
}, )
|
||
.then((response) => {
|
||
this.getList();
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
}
|
||
},
|
||
|
||
//Возврат заявки
|
||
renewReq(id) {
|
||
if (confirm('Вы точно хотите восстановить эту заявку?')) {
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'renew_req',
|
||
req_id: id,
|
||
user_id: this.user_id
|
||
}, )
|
||
.then((response) => {
|
||
this.getList();
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
}
|
||
},
|
||
|
||
//возврат нескольких заявок
|
||
//Возврат заявки
|
||
renewReqs(reqs) {
|
||
var ids = [];
|
||
var all = 0;
|
||
if ($('#changeReqAllFilter').prop('checked')) {
|
||
all = 1;
|
||
if (localStorage['ids_exception_req']) {
|
||
var ids_exception_req = localStorage.getItem('ids_exception_req');
|
||
|
||
ids = JSON.parse(ids_exception_req);
|
||
}
|
||
}
|
||
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'renew_reqs',
|
||
reqs_id: reqs,
|
||
user_id: this.user_id,
|
||
all: all,
|
||
ids_exception: ids,
|
||
}, )
|
||
.then((response) => {
|
||
console.log(response.data);
|
||
this.getList();
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
|
||
},
|
||
|
||
takeFromClosedReqs(reqs) {
|
||
let ids = [];
|
||
let all = 0;
|
||
if ($('#changeReqAllFilter').prop('checked')) {
|
||
all = 1;
|
||
if (localStorage['ids_exception_req']) {
|
||
let ids_exception_req = localStorage.getItem('ids_exception_req');
|
||
|
||
ids = JSON.parse(ids_exception_req);
|
||
}
|
||
}
|
||
console.log('reqs_ids', reqs);
|
||
console.log('user_id', this.user_id);
|
||
console.log('ids_exception', ids);
|
||
console.log('all', all);
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'take_from_closed_reqs',
|
||
reqs_id: reqs,
|
||
user_id: this.user_id,
|
||
all: all,
|
||
ids_exception: ids,
|
||
}, )
|
||
.then((response) => {
|
||
console.log(response.data);
|
||
this.getList();
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
},
|
||
|
||
//Общее выделение
|
||
to_check_req_new(id) {
|
||
console.log(id);
|
||
if ($('#changeReq' + id).prop('checked')) {
|
||
$('#changeReq' + id).prop('checked', false);
|
||
$('#checked-clt' + id).removeClass('active');
|
||
if($('#changeReqAllFilter').prop('checked')){
|
||
allOnCheckId(id, 'req');
|
||
}
|
||
} else {
|
||
|
||
$('#changeReq' + id).prop('checked', true);
|
||
$('#checked-clt' + id).addClass('active');
|
||
if($('#changeReqAllFilter').prop('checked')){
|
||
allOffCheckId(id, 'req');
|
||
}
|
||
}
|
||
},
|
||
|
||
//Общая передача заявок
|
||
confirm__User_req() {
|
||
var ids = [];
|
||
|
||
var user_id = $('#confirm__user_id_req').val();
|
||
var who_work = $('#confirm__who_work_req').val();
|
||
var reqs_id = $('#confirm_reqs_id').val();
|
||
var all = 0;
|
||
if ($('#changeReqAllFilter').prop('checked')) {
|
||
all = 1;
|
||
if (localStorage['ids_exception_req']) {
|
||
var ids_exception_req = localStorage.getItem('ids_exception_req');
|
||
|
||
ids = JSON.parse(ids_exception_req);
|
||
}
|
||
}
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'confirm_reqs',
|
||
reqs_id: reqs_id,
|
||
user_id: user_id,
|
||
who_work: who_work,
|
||
all: all,
|
||
ids_exception: ids,
|
||
}, )
|
||
.then((response) => {
|
||
console.log(response.data);
|
||
closeConfirmReq();
|
||
this.getList();
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
},
|
||
|
||
//Общая смена воронок
|
||
funnelReqsConfirm() {
|
||
var ids = [];
|
||
var reqs_id = $('#funnel_reqs_id').val();
|
||
var funnel_check = $('#funnel__check_req').val();
|
||
var all = 0;
|
||
if ($('#changeReqAllFilter').prop('checked')) {
|
||
all = 1;
|
||
if (localStorage['ids_exception_req']) {
|
||
var ids_exception_req = localStorage.getItem('ids_exception_req');
|
||
|
||
ids = JSON.parse(ids_exception_req);
|
||
}
|
||
}
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'funnel_check',
|
||
reqs_id: reqs_id,
|
||
funnel_check: funnel_check,
|
||
all: all,
|
||
ids_exception: ids,
|
||
}, )
|
||
.then((response) => {
|
||
//console.log(response.data);
|
||
closeFunnelReqs();
|
||
this.getList();
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
},
|
||
|
||
//Открыть чек лист
|
||
openCheckList(funnel_id, id, type) {
|
||
funnelchecklist.open(funnel_id, id, type);
|
||
},
|
||
|
||
//Открыть добавление тегов
|
||
open_add_tag(id) {
|
||
for (var i in this.req) {
|
||
if (i != id) {
|
||
this.req[i].add_tag = false;
|
||
}
|
||
}
|
||
|
||
(this.req[id].add_tag) ? this.req[id].add_tag = false: this.req[id].add_tag = true;
|
||
this.req[id].activities_temp = this.req[id].activities;
|
||
|
||
},
|
||
|
||
//Открыть добавление тегов или договоров
|
||
open_add_tag_contract(id) {
|
||
this.req_id_contract_tag = id;
|
||
this.add_tag_contract = null;
|
||
for (var i in this.req) {
|
||
this.req[i].add_tag = false;
|
||
this.req[i].popup_tag = false;
|
||
if (i != id) {
|
||
this.req[i].add_tag_contract = false;
|
||
this.req[i].add_tag = false;
|
||
}
|
||
}
|
||
|
||
(this.req[id].add_tag_contract) ? this.req[id].add_tag_contract = false: this.req[id].add_tag_contract = true;
|
||
},
|
||
|
||
//Открыть добавление тегов или договоров
|
||
open_popup_tag(id) {
|
||
|
||
for (var i in this.req) {
|
||
this.req[i].add_tag_contract = false;
|
||
this.req[i].add_tag = false;
|
||
|
||
if (i != id) {
|
||
|
||
// this.req[i].poup_tag_contract = false;
|
||
this.req[i].popup_tag = false;
|
||
} else {
|
||
this.req[i].popup_tag = !this.req[i].popup_tag;
|
||
}
|
||
}
|
||
|
||
//(this.req[id].add_tag_contract) ? this.req[id].add_tag_contract = false: this.req[id].add_tag_contract = true;
|
||
},
|
||
|
||
//выбор договор/тег
|
||
change_contract_tag(val) {
|
||
if (val == 1) {
|
||
|
||
this.req[this.req_id_contract_tag].add_tag = true;
|
||
|
||
} else if (val == 2) {
|
||
if (typeof contract_form != "undefined") {
|
||
contract_form.parent_type = 'req';
|
||
contract_form.parent_id = this.req_id_contract_tag;
|
||
contract_form.open();
|
||
}
|
||
}
|
||
this.req[this.req_id_contract_tag].add_tag_contract = false;
|
||
},
|
||
|
||
open_form_contract(id, contract_id) {
|
||
if (typeof contract_form != "undefined") {
|
||
contract_form.parent_type = 'req';
|
||
contract_form.parent_id = id;
|
||
contract_form.id = contract_id;
|
||
contract_form.open();
|
||
}
|
||
},
|
||
|
||
//Вазврат данных из form_contract
|
||
return_contract_form(req_id) {
|
||
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_contracts',
|
||
parent_id: req_id,
|
||
type: 'req',
|
||
}, )
|
||
.then((response) => {
|
||
var res = response.data;
|
||
console.log(this.req);
|
||
console.log(req_id);
|
||
this.req[req_id].contracts = res.contracts;
|
||
this.req[req_id].contracts_name = res.contracts_name;
|
||
if (req_form.isReqForm) {
|
||
req_form.contracts = res.contracts;
|
||
}
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
|
||
},
|
||
|
||
//Сохранить теги
|
||
save_activites(id) {
|
||
var name_tag = '';
|
||
var activities_temp = [];
|
||
console.log(this.req[id].activities);
|
||
console.log(this.req[id].activities_temp);
|
||
//this.req[id].activities = this.req[id].activities_temp;
|
||
for (var i = 0; i < this.req[id].activities_temp.length; i++) {
|
||
activities_temp.push(this.activities.find(a => a.id === this.req[id].activities_temp[i]));
|
||
}
|
||
this.req[id].activities = activities_temp;
|
||
//this.req[id].activities_name = name_tag;
|
||
this.req[id].add_tag = false;
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'save_activites',
|
||
req_id: this.req[id].id,
|
||
activities: this.req[id].activities_temp,
|
||
|
||
}, )
|
||
.then((response) => {
|
||
console.log(response.data);
|
||
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
},
|
||
|
||
openCardClient(client_id) {
|
||
openClientEventsWindowNew(client_id, $('#session_to_send').val(), 0, 0, false, true);
|
||
},
|
||
|
||
//Проверка на пустоту
|
||
isEmpty(data) {
|
||
if (typeof(data) === 'object') {
|
||
if (JSON.stringify(data) === '{}' || JSON.stringify(data) === '[]') {
|
||
return true;
|
||
} else if (!data) {
|
||
return true;
|
||
}
|
||
return false;
|
||
} else if (typeof(data) === 'string') {
|
||
if (!data.trim()) {
|
||
return true;
|
||
}
|
||
return false;
|
||
} else if (typeof(data) === 'undefined') {
|
||
return true;
|
||
} else {
|
||
return false;
|
||
}
|
||
},
|
||
|
||
//Открыть панель со смежными воронками
|
||
open_stagebars_funnels(req_id){
|
||
if(this.req['req'+req_id].is_active_funnels_adjacent){
|
||
this.req['req'+req_id].is_active_funnels_adjacent = false;
|
||
} else {
|
||
this.req['req'+req_id].is_active_funnels_adjacent = true;
|
||
this.get_adjacent_funnels_req(req_id);
|
||
}
|
||
},
|
||
|
||
get_adjacent_funnels_req(req_id){
|
||
axios.post('/ajax/vue_ajax/funnel_axios_vue.php', {
|
||
request: 'get_adjacent_funnels_req',
|
||
agency_id: this.agencyId,
|
||
req_id: req_id,
|
||
|
||
})
|
||
.then((response) => {
|
||
if(typeof ac == 'object'){
|
||
ac.closesStep = false;
|
||
ac.is_looad = false;
|
||
ac.is_load_open = false;
|
||
ac.isOpenPrevStep = false;
|
||
}
|
||
console.log(response.data);
|
||
if(response.data.html){
|
||
$('#funnels_adjacent_req_'+req_id).html(response.data.html);
|
||
}
|
||
|
||
|
||
})
|
||
.catch(function(error) {
|
||
console.log(error);
|
||
});
|
||
},
|
||
|
||
//Открыть карточку объекту
|
||
openObject(object_id) {
|
||
object_card.open(object_id);
|
||
},
|
||
|
||
//Открыть редактирование параметров автопоиска
|
||
openAutoSearchFiltr(req_id, filter_id) {
|
||
autosearch_filtr.openAutoSearchFiltr(req_id, filter_id);
|
||
},
|
||
|
||
//Открыть список объектов автопоиска
|
||
showAutoSearchObjects(filter_id, event) {
|
||
autosearch_objs.openAutoSearchResults(filter_id);
|
||
},
|
||
async kanbanListScroll(event) {
|
||
const container = this.$refs.kanbanList;
|
||
const scrollTop = container.scrollTop;
|
||
const scrollHeight = container.scrollHeight;
|
||
const clientHeight = container.clientHeight;
|
||
|
||
const divUl = $(container).find('.kanban__items-list');
|
||
|
||
if(divUl){
|
||
for(let i=0; i<divUl.length; i++){
|
||
if(i < 2){
|
||
// let divLi = $(divUl[i]).find('.block_li_kanban');
|
||
$(divUl[i]).addClass('no-heigth');
|
||
let heigthLi = $(divUl[i]).find('ul').height();
|
||
$(divUl[i]).removeClass('no-heigth');
|
||
|
||
/*console.log(clientHeight+scrollTop);
|
||
console.log(heigthLi);*/
|
||
//const isScrollingDown = scrollTop > this.lastScrollTop;
|
||
//this.lastScrollTop = scrollTop;
|
||
//console.log(this.isLoading, heigthLi >=clientHeight+scrollTop-250);
|
||
if (heigthLi >=clientHeight+scrollTop-250 && !this.isLoading) {
|
||
this.isLoading = true; // Устанавливаем флаг загрузки
|
||
console.log('loading reqs li');
|
||
this.page = this.page + 1;
|
||
await this.getList();
|
||
this.isLoading = false;
|
||
|
||
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
const isScrollingDown = scrollTop > this.lastScrollTop;
|
||
this.lastScrollTop = scrollTop; // Обновляем позицию скролла
|
||
|
||
// Проверка с учетом зазора в 50 пикселей
|
||
//if(this.userId != 5238){
|
||
if (isScrollingDown && scrollTop + clientHeight >= scrollHeight - 50 && !this.isLoading) {
|
||
this.isLoading = true; // Устанавливаем флаг загрузки
|
||
console.log('loading reqs');
|
||
this.page = this.page + 1;
|
||
await this.getList();
|
||
this.isLoading = false;
|
||
}
|
||
// }
|
||
},
|
||
|
||
// Открыть модалку копирования: preview-запрос → defaults + warnings.
|
||
// Списки воронок/сотрудников приходят из window.__copyFunnelsList / window.__copyEmployeesList (server-embed в requisitions.php).
|
||
openCopyRequisitionModal: function(reqId) {
|
||
var self = this;
|
||
var preFunnels = Array.isArray(window.__copyFunnelsList) ? window.__copyFunnelsList : [];
|
||
var preEmployees = Array.isArray(window.__copyEmployeesList) ? window.__copyEmployeesList : [];
|
||
var employeesNormalized = preEmployees.map(function (e) {
|
||
return {
|
||
id: parseInt(e.id, 10),
|
||
name: e.name,
|
||
group: e.group || null,
|
||
};
|
||
});
|
||
// Полное переприсваивание copyModal — чтобы Vue точно зарегистрировал изменения всех полей.
|
||
self.copyModal = {
|
||
open: true,
|
||
srcId: reqId,
|
||
funnels: preFunnels.map(function (f) {
|
||
return { id: parseInt(f.id, 10), name: f.name };
|
||
}),
|
||
funnelId: null,
|
||
employees: employeesNormalized,
|
||
whoWorkId: null,
|
||
whoWorkSearch: '',
|
||
whoWorkOpen: false,
|
||
whoWorkLabel: '',
|
||
defaultWhoWorkId: null,
|
||
warnings: [],
|
||
submitting: false,
|
||
error: null,
|
||
};
|
||
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {request: 'copy_preview', req_id: reqId})
|
||
.then(function (res) {
|
||
if (!res.data.success) {
|
||
self.copyModal.error = res.data.error || 'Не удалось загрузить данные';
|
||
return;
|
||
}
|
||
self.copyModal.warnings = res.data.warnings || [];
|
||
// Дефолтная воронка — из исходной заявки; если недоступна юзеру — fallback на первую.
|
||
var defaultFunnelId = res.data.default_funnel_id;
|
||
var funnelMatch = self.copyModal.funnels.find(function (f) {
|
||
return parseInt(f.id, 10) === parseInt(defaultFunnelId, 10);
|
||
});
|
||
if (funnelMatch) {
|
||
self.copyModal.funnelId = parseInt(defaultFunnelId, 10);
|
||
} else if (self.copyModal.funnels.length > 0) {
|
||
self.copyModal.funnelId = self.copyModal.funnels[0].id;
|
||
} else {
|
||
self.copyModal.funnelId = null;
|
||
}
|
||
self.copyModal.defaultWhoWorkId = res.data.default_who_work_id;
|
||
// Дефолтный ответственный — из preview; иначе первая опция списка.
|
||
var defaultId = res.data.default_who_work_id;
|
||
var hasInList = employeesNormalized.some(function (e) { return e.id === parseInt(defaultId, 10); });
|
||
var chosenId = hasInList
|
||
? parseInt(defaultId, 10)
|
||
: (employeesNormalized.length > 0 ? employeesNormalized[0].id : null);
|
||
self.copyModal.whoWorkId = chosenId;
|
||
// whoWorkLabel — отображаемое имя в свернутом поле; whoWorkSearch держим пустым.
|
||
var chosenEmp = employeesNormalized.find(function (e) { return e.id === chosenId; });
|
||
self.copyModal.whoWorkLabel = chosenEmp ? chosenEmp.name : '';
|
||
self.copyModal.whoWorkSearch = '';
|
||
self.copyModal.whoWorkOpen = false;
|
||
})
|
||
.catch(function () {
|
||
self.copyModal.error = 'Сетевая ошибка';
|
||
});
|
||
},
|
||
|
||
// Выбор сотрудника. Сбрасываем whoWorkSearch — следующий раз показать полный список.
|
||
selectCopyWhoWork: function(emp) {
|
||
this.copyModal.whoWorkId = emp.id;
|
||
this.copyModal.whoWorkLabel = emp.name;
|
||
this.copyModal.whoWorkSearch = '';
|
||
this.copyModal.whoWorkOpen = false;
|
||
},
|
||
|
||
// Отправка копии: создаёт новую заявку и обновляет список.
|
||
submitCopy: function() {
|
||
var self = this;
|
||
if (self.copyModal.submitting) return;
|
||
|
||
var whoWorkId = parseInt(self.copyModal.whoWorkId, 10);
|
||
|
||
// funnel_id может быть 0 («Обычные») — проверяем именно на null/undefined.
|
||
// who_work_id может быть 0 («Всё агентство») — проверяем только NaN.
|
||
if (isNaN(whoWorkId) || self.copyModal.funnelId === null || self.copyModal.funnelId === undefined) {
|
||
self.copyModal.error = 'Заполните воронку и ответственного';
|
||
return;
|
||
}
|
||
|
||
self.copyModal.submitting = true;
|
||
self.copyModal.error = null;
|
||
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'copy',
|
||
req_id: self.copyModal.srcId,
|
||
funnel_id: self.copyModal.funnelId,
|
||
who_work_id: whoWorkId,
|
||
}).then(function (res) {
|
||
self.copyModal.submitting = false;
|
||
if (!res.data.success) {
|
||
self.copyModal.error = res.data.error || 'Не удалось создать копию';
|
||
return;
|
||
}
|
||
self.copyModal.open = false;
|
||
if (typeof window.jwShowCopyToast === 'function') {
|
||
window.jwShowCopyToast('Копия заявки создана');
|
||
}
|
||
if (typeof self.getList === 'function') self.getList();
|
||
}).catch(function () {
|
||
self.copyModal.submitting = false;
|
||
self.copyModal.error = 'Сетевая ошибка';
|
||
});
|
||
},
|
||
|
||
// Закрыть модалку копирования — никаких Select2 destroy, просто скрываем.
|
||
closeCopyModal: function() {
|
||
this.copyModal.open = false;
|
||
},
|
||
|
||
// Закрытие picker сотрудников по клику вне него (mousedown, чтобы опередить click внутри).
|
||
onCopyModalDocumentClick: function(e) {
|
||
if (!this.copyModal.whoWorkOpen) return;
|
||
var picker = this.$refs && this.$refs.copyWhoWorkPicker;
|
||
if (picker && (picker === e.target || picker.contains(e.target))) return;
|
||
this.copyModal.whoWorkOpen = false;
|
||
},
|
||
|
||
},
|
||
mounted() {
|
||
if (document.location.pathname == '/requisitions.php') {
|
||
|
||
}
|
||
document.addEventListener('mousedown', this.onCopyModalDocumentClick);
|
||
},
|
||
beforeDestroy: function() {
|
||
// Снимаем document-level слушатель, чтобы не утекал при пересборке инстанса.
|
||
document.removeEventListener('mousedown', this.onCopyModalDocumentClick);
|
||
},
|
||
created: function() {
|
||
//this.getList();
|
||
|
||
$(".clients").removeClass("hidden");
|
||
$(".kanban__rails").removeClass("hidden");
|
||
$(".crm__table").removeClass("hidden");
|
||
}
|
||
})
|
||
}
|
||
|
||
//Форма
|
||
var req_form = new Vue({
|
||
el: '#req_form',
|
||
components: {
|
||
Multiselect: window.VueMultiselect.default,
|
||
vuejsDatepicker: window.vuejsDatepicker
|
||
},
|
||
data() {
|
||
return {
|
||
user_id: $("#session_user_id").val(),
|
||
userId: $("#session_user_id").val(),
|
||
funnel_id: $('#funnelIdClients').val(),
|
||
agency_id: $('#session_agency_id').val() || null,
|
||
isReqForm: false,
|
||
isError: false,
|
||
isFilterError: false,
|
||
is_looad: false,
|
||
errorText: '',
|
||
errorFilterText: '',
|
||
liGlobal: 1,
|
||
name: '',
|
||
autosearch_filter: [],
|
||
autosearch_filter_id: null,
|
||
fio: '',
|
||
email: '',
|
||
phone: '',
|
||
opis: '',
|
||
types_req: [{
|
||
"code": 0,
|
||
"name": "",
|
||
"order": -1,
|
||
"heir": 0,
|
||
"archive": 0,
|
||
"type": "label",
|
||
}],
|
||
selectedType: 0,
|
||
steps: [],
|
||
selectedObject: 0,
|
||
isObject: false,
|
||
isClient: false,
|
||
isNew: true,
|
||
req_id: 0,
|
||
object: [],
|
||
client: [],
|
||
nums: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
|
||
isClear: true,
|
||
clientId: 0,
|
||
funnel_type: 'main',
|
||
clientName: '',
|
||
newClientName: '',
|
||
newClientPhone: '',
|
||
dopPhonesClient: '',
|
||
inputClientName: false,
|
||
inputClientPhone: false,
|
||
is_national_phone: false,
|
||
is_error_dop_phone: false,
|
||
axios_processed: false,
|
||
prep_price: '',
|
||
start_price: '',
|
||
fact_price: '',
|
||
objectId: 0,
|
||
priority: 0,
|
||
isClientForm: false,
|
||
confirm: 1,
|
||
who_work: 0,
|
||
hot: 0,
|
||
autoSearch: false,
|
||
findObject: false,
|
||
findObj: [],
|
||
OpenIndicator: {
|
||
render: createElement => createElement('span', { class: { 'vueToggleSpan': true } }),
|
||
},
|
||
noEmptyClientId: 0,
|
||
reqFields: [],
|
||
reqFieldsLinking: [],
|
||
fieldModels: [],
|
||
contracts: [],
|
||
heir: 0,
|
||
clients: [],
|
||
client_id: 0,
|
||
spinner: true,
|
||
clientSelect: null,
|
||
debounceTimer: null,
|
||
wazzap_chat_type: null,
|
||
wazzap_chat_id: null,
|
||
wazzap_channel_id: null,
|
||
wazzap_user_id: null,
|
||
wazzap_integration_id: null,
|
||
complex_room_id: null,
|
||
confirm_recommendation: null,
|
||
recommendations: [{ 'code': 1, 'name': 'Да' }, { 'code': 2, 'name': 'Нет' }],
|
||
friend_client_id: 0,
|
||
source_see: 1,
|
||
no_can_edit_hot: 0,
|
||
}
|
||
},
|
||
methods: {
|
||
|
||
//Открыть форму
|
||
openReqForm(no_clear) {
|
||
|
||
|
||
this.is_looad = false;
|
||
this.isClear = false;
|
||
if (no_clear) {
|
||
this.getClients();
|
||
} else {
|
||
this.clearReq();
|
||
}
|
||
|
||
if ( $('input[name=complex_room_id]').length) {
|
||
this.selectedType = +this.selectedType ? this.selectedType : 1;
|
||
$('#status').show()
|
||
} else {
|
||
$('#status').hide()
|
||
}
|
||
console.log(this.isNew, no_clear);
|
||
if (this.isNew && no_clear != 1) {
|
||
|
||
this.getClients();
|
||
this.getWhowork(this.user_id);
|
||
this.getActivities();
|
||
this.getObject();
|
||
this.getTypes();
|
||
this.getSources(0);
|
||
this.getPartner(0);
|
||
if ($('input[name=complex_room_id]').length) {
|
||
this.getStatuses(4);
|
||
}
|
||
|
||
if (document.location.pathname == '/requisitions.php' && $('#funnelIdClients').length > 0) {
|
||
this.funnel_id = $('#funnelIdClients').val();
|
||
|
||
this.getFunnel(this.funnel_id);
|
||
} else
|
||
if (this.funnel_id === undefined || this.funnel_id == 0 || isNaN(this.funnel_id)) {
|
||
|
||
$.post("/ajax/getFunnelFirst.php", {is_req: 1}, function(dataf) {
|
||
//console.log(dataf);
|
||
var res_funnels = JSON.parse(dataf);
|
||
req_form.funnel_id = parseInt(res_funnels.funnel_id);
|
||
req_form.getFunnel(req_form.funnel_id);
|
||
req_form.getReqFields();
|
||
})
|
||
} else {
|
||
|
||
this.getFunnel(this.funnel_id);
|
||
}
|
||
this.getReqFields();
|
||
}
|
||
|
||
|
||
$("#req_form .tabs__content").removeAttr("style");
|
||
this.isReqForm = true;
|
||
// console.log(this);
|
||
$("body").addClass("lock");
|
||
$('.jw__add-popup').removeClass('is__show');
|
||
},
|
||
|
||
setReq(req) {
|
||
this.user_id = req.who_work;
|
||
this.funnel_id = req.funnel_id;
|
||
this.getFunnel(this.funnel_id);
|
||
|
||
this.name = req.name;
|
||
this.autosearch_filter = req.autosearch.filter;
|
||
if (req.autosearch_id > 0)
|
||
this.autosearch_filter_id = req.autosearch_id;
|
||
else if (req.asfilter_id > 0)
|
||
this.autosearch_filter_id = req.asfilter_id;
|
||
else
|
||
this.autosearch_filter_id = null;
|
||
|
||
this.opis = req.description.replace(/<br>/g, "\n");
|
||
this.selectedType = req.type_id;
|
||
this.steps = req.steps;
|
||
this.isNew = false;
|
||
this.autoSearch = false;
|
||
this.autoSearchEnabled = 0;
|
||
this.req_id = req.id;
|
||
this.getReqFields();
|
||
this.liGlobal = 1;
|
||
this.who_work = req.who_work;
|
||
this.confirm = req.confirm;
|
||
this.funnel_type = req.funnel_type;
|
||
this.prep_price = '';
|
||
this.start_price = '';
|
||
this.fact_price = '';
|
||
this.heir = req.heir_type;
|
||
|
||
if (req.type_id == 4 || req.heir_type == 4) {
|
||
this.autoSearch = true;
|
||
this.findObject = true;
|
||
this.autoSearchEnabled = (this.autosearch_filter_id && req.autosearch.is_reverse == "1") ? 1 : 0;
|
||
this.objectId = req.object_id;
|
||
this.getObjectFind(this.who_work);
|
||
} else if (req.type_id == 5 || req.heir_type == 4) {
|
||
this.autoSearch = false;
|
||
this.findObject = false;
|
||
this.objectId = req.object_id;
|
||
this.getObjectFind(this.who_work);
|
||
} else if (req.type_id == 1 || req.heir_type == 1) {
|
||
this.isObject = false;
|
||
this.autoSearch = true;
|
||
this.getObject();
|
||
this.object = [];
|
||
} else {
|
||
this.autoSearch = false;
|
||
this.findObject = false;
|
||
this.isObject = true;
|
||
this.getObject(req.object_id);
|
||
this.object = req.object;
|
||
|
||
if (req.type_id == 2 || req.heir_type == 2) {
|
||
/*this.price = req.object.stoim;
|
||
this.prep_price = req.object.prep_price;
|
||
this.start_price = req.object.start_price;
|
||
this.fact_price = req.object.fact_price;*/
|
||
this.getObjPrices(req.object_id);
|
||
}
|
||
|
||
setTimeout(function() {
|
||
$('.fotorama').fotorama();
|
||
//koala_loader();
|
||
}, 500);
|
||
}
|
||
/* if(req.type_id == 1){
|
||
this.isObject = false;
|
||
}*/
|
||
|
||
this.priority = req.priority;
|
||
this.client = req.client;
|
||
this.complex_room_id = req.complex_room_id
|
||
this.confirm_recommendation = req.confirm_recommendation;
|
||
this.friend_client_id = req.friend_client_id;
|
||
this.source_see = req.source_see;
|
||
this.no_can_edit_hot = req.no_can_edit_hot;
|
||
this.getClients(req.client_id);
|
||
this.getWhowork(req.who_work);
|
||
this.getSources(req.source);
|
||
this.getPartner(req.employee_id);
|
||
|
||
if ( !$('input[name=complex_room_id]').length) {
|
||
if (!this.isEmpty(req.complex_room_id)) {
|
||
const reqForm = document.querySelector('#req_form')
|
||
if (reqForm) {
|
||
const input = document.createElement('input')
|
||
input.type = 'hidden';
|
||
input.name = 'complex_room_id';
|
||
input.value = req.complex_room_id;
|
||
|
||
reqForm.appendChild(input)
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
if ( !$('input[name=complex_room_id]').length) {
|
||
$('#status').hide()
|
||
} else {
|
||
$('#status').show()
|
||
this.getStatuses(req.complex_status_id)
|
||
}
|
||
|
||
this.hot = req.hot;
|
||
if (req.activities) {
|
||
this.getActivities(req.activities_temp);
|
||
}
|
||
this.contracts = req.contracts;
|
||
|
||
},
|
||
|
||
|
||
//Получение дополнительных полей
|
||
getReqFields() {
|
||
console.log(this.funnel_id);
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_req_fields',
|
||
agency_id: this.agency_id,
|
||
req_id: this.req_id,
|
||
funnel_id: this.funnel_id,
|
||
user_id: this.userId,
|
||
}).then((response) => {
|
||
console.log(response.data);
|
||
this.reqFields = response.data.fields;
|
||
//console.log(this.reqFields);
|
||
this.reqFieldsLinking = response.data.linking_fields;
|
||
|
||
var values = response.data.values;
|
||
for (var i = 0; i < this.reqFields.length; i++) {
|
||
|
||
this.$set(this.fieldModels, 'model_' + this.reqFields[i].id, null);
|
||
if (this.reqFields[i].is_podgroup > 0) {
|
||
for (var j = 0; j < this.reqFields[i].podgroups.length; j++) {
|
||
this.$set(this.fieldModels, 'modelp_' + this.reqFields[i].podgroups[j].id, null);
|
||
}
|
||
}
|
||
}
|
||
for (var index in this.fieldModels) {
|
||
if (index.indexOf('model') != -1) {
|
||
|
||
if (!this.isEmpty(values[index])) {
|
||
|
||
this.fieldModels[index] = JSON.parse(values[index]);
|
||
}
|
||
}
|
||
}
|
||
// console.log(this.fieldModels);
|
||
|
||
}).catch(function(error) {
|
||
console.log(error);
|
||
});
|
||
},
|
||
|
||
//Получение предварительной оценки объекта
|
||
getObjPrices(objectId) {
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_object_prices',
|
||
user_id: this.user_id,
|
||
object_id: objectId
|
||
}).then((response) => {
|
||
console.log(response.data);
|
||
if (!req_form.isEmpty(response.data.prep_price) && response.data.prep_price > 0)
|
||
req_form.prep_price = response.data.prep_price;
|
||
else
|
||
req_form.prep_price = '';
|
||
|
||
if (!req_form.isEmpty(response.data.start_price) && response.data.start_price > 0)
|
||
req_form.start_price = response.data.start_price;
|
||
else
|
||
req_form.start_price = '';
|
||
|
||
if (!req_form.isEmpty(response.data.fact_price) && response.data.fact_price > 0)
|
||
req_form.fact_price = response.data.fact_price;
|
||
else
|
||
req_form.fact_price = '';
|
||
|
||
}).catch(function(error) {
|
||
console.log(error);
|
||
});
|
||
},
|
||
|
||
//Получение списка объектов
|
||
getObject(objectId) {
|
||
//console.log(this.user_id);
|
||
$("#req-new-object-input").html('');
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_objects',
|
||
user_id: this.user_id,
|
||
}, )
|
||
.then((response) => {
|
||
|
||
$("#req-new-object-input").html(response.data);
|
||
if (objectId) {
|
||
$("#req-new-object").val(objectId);
|
||
}
|
||
$("#req-new-object").fastselect({
|
||
placeholder: 'Объекты',
|
||
onItemSelect: function(item, val) {
|
||
//console.debug(val.value);
|
||
req_form.getObjPrices(val.value);
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_client',
|
||
client_id: 0,
|
||
object_id: val.value
|
||
}, )
|
||
.then((response) => {
|
||
// console.log(response.data);
|
||
if (!req_form.isEmpty(response.data)) {
|
||
$("#req-new-client-input").html('');
|
||
req_form.client = response.data;
|
||
req_form.clientId = response.data.value;
|
||
req_form.getClients(response.data.value);
|
||
}
|
||
})
|
||
.catch(function(error) {
|
||
console.log(error);
|
||
});
|
||
/*if(!req_form.isEmpty(val.objects)){
|
||
$("#req-new-object-input").html('');
|
||
req_form.getObject(val.objects[0]);
|
||
}*/
|
||
},
|
||
});
|
||
|
||
|
||
})
|
||
.catch(function(error) {
|
||
console.log(error);
|
||
});
|
||
},
|
||
|
||
getObjectFind(who_work, obj) {
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_objects_find',
|
||
object_id: this.objectId,
|
||
}, )
|
||
.then((response) => {
|
||
console.log(response.data);
|
||
this.findObj = response.data;
|
||
if (obj) {
|
||
this.opis = "Звонок по объекту " + this.findObj['nazv'] + " " + this.findObj['adres'];
|
||
}
|
||
//this.who_work = who_work;
|
||
this.getWhowork(who_work);
|
||
})
|
||
.catch(function(error) {
|
||
console.log(error);
|
||
});
|
||
},
|
||
|
||
//Автозаполнение названия заявки на основе типа заявки и имени клиента
|
||
fillReqName(client_name) {
|
||
console.log(client_name);
|
||
let ref = this;
|
||
let reg_type = 'Заявка';
|
||
if (!this.isEmpty(client_name)) {
|
||
if (this.types_req.length > 0) {
|
||
this.types_req.forEach(function(type, index) {
|
||
if (type['code'] == ref.selectedType && ref.selectedType !== 0) {
|
||
reg_type = type['name'];
|
||
}
|
||
});
|
||
}
|
||
this.name = reg_type + ' для ' + client_name;
|
||
}
|
||
},
|
||
showClientNameInput() {
|
||
this.inputClientName = true;
|
||
this.newClientName = this.clientName;
|
||
$('.ui-tooltip.ui-widget').remove();
|
||
},
|
||
hideClientNameInput() {
|
||
this.inputClientName = false;
|
||
this.newClientName = '';
|
||
$('.ui-tooltip.ui-widget').remove();
|
||
},
|
||
changeClientName(client_id) {
|
||
|
||
let ref = this;
|
||
if (typeof client_id !== "undefined")
|
||
ref.clientId = client_id;
|
||
|
||
if (!ref.axios_processed && ref.newClientName.length > 0) {
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'change_client_name',
|
||
user_id: $("#session_user_id").val(),
|
||
new_client_name: ref.newClientName,
|
||
client_id: ref.clientId
|
||
}).then((response) => {
|
||
if (response.data.success) {
|
||
ref.clientName = ref.newClientName;
|
||
|
||
if (document.location.pathname == '/requisitions.php') {
|
||
|
||
if (requisitions.view == 'kanban') {
|
||
for (var index in requisitions.req) {
|
||
for (var index2 in requisitions.req[index]) {
|
||
if (index2 == 'req' + ref.req_id) {
|
||
requisitions.req[index][index2].fio = ref.clientName;
|
||
break;
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
ref.fillReqName(ref.clientName);
|
||
ref.client.fio = ref.clientName;
|
||
ref.inputClientName = false;
|
||
ref.newClientName = '';
|
||
req_form.getClients(ref.clientId);
|
||
req_form.getClient(ref.clientId, 1);
|
||
$('.ui-tooltip.ui-widget').remove();
|
||
}
|
||
}).catch(function(error) {
|
||
if (error)
|
||
console.debug(error);
|
||
});
|
||
}
|
||
},
|
||
|
||
showClientPhoneInput() {
|
||
|
||
this.inputClientPhone = true;
|
||
this.newClientPhone = '';
|
||
this.is_national_phone = false;
|
||
this.dopPhonesClient = this.clientSelect.phones_dop;
|
||
this.is_error_dop_phone = false;
|
||
$('.ui-tooltip.ui-widget').remove();
|
||
|
||
},
|
||
hideClientPhoneInput() {
|
||
this.inputClientPhone = false;
|
||
this.newClientPhone = '';
|
||
this.is_national_phone = false;
|
||
this.dopPhonesClient = this.clientSelect.phones_dop;
|
||
this.is_error_dop_phone = false;
|
||
$('.ui-tooltip.ui-widget').remove();
|
||
},
|
||
checkIsNationalPhone(){
|
||
|
||
this.newClientPhone = '';
|
||
},
|
||
|
||
changeClientPhone(client_id) {
|
||
this.is_error_dop_phone = false;
|
||
if (typeof client_id !== "undefined")
|
||
this.clientId = client_id;
|
||
|
||
if (!this.isEmpty(this.newClientPhone)) {
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'change_client_phone',
|
||
agency_id: this.agency_id,
|
||
new_client_phone: this.newClientPhone,
|
||
client_id: client_id
|
||
}).then((response) => {
|
||
console.log(response.data);
|
||
let dopPhones = this.newClientPhone;
|
||
$('.ui-tooltip.ui-widget').remove();
|
||
if(response.data.success == 'error'){
|
||
this.is_error_dop_phone = true;
|
||
}
|
||
|
||
if(response.data.success == 'done'){
|
||
if(this.dopPhonesClient != '') this.dopPhonesClient += ', ';
|
||
this.dopPhonesClient += dopPhones;
|
||
this.newClientPhone = '';
|
||
this.clientSelect.phones_dop = this.dopPhonesClient;
|
||
}
|
||
|
||
}).catch(function(error) {
|
||
if (error)
|
||
console.debug(error);
|
||
});
|
||
}
|
||
},
|
||
|
||
selectClientList() {
|
||
|
||
console.log(this.clientSelect);
|
||
if (!this.isEmpty(this.clientSelect)) {
|
||
|
||
req_form.clientName = this.clientSelect.fio;
|
||
req_form.inputClientName = false;
|
||
req_form.inputClientPhone = false;
|
||
req_form.clientId = this.clientSelect.id;
|
||
req_form.dopPhonesClient = this.clientSelect.phones_dop;
|
||
req_form.fillReqName(req_form.clientName);
|
||
if (!req_form.isEmpty(this.clientSelect.objects)) {
|
||
$("#req-new-object-input").html('');
|
||
req_form.getObject(this.clientSelect.objects[0]);
|
||
}
|
||
}
|
||
},
|
||
|
||
//Получение списка клиентов
|
||
getClients(clientId) {
|
||
|
||
$("#req-new-client-input").html('');
|
||
$("#req-new-client-input").html('<input type="text" id="req-new-client" data-url="/ajax/list_clients.php?req=1" data-load-once="true">');
|
||
if (clientId) {
|
||
console.log(this.client);
|
||
|
||
req_form.clientId = clientId;
|
||
req_form.clientName = this.client.fio;
|
||
// this.getClientsList(this.client.fio);
|
||
this.clientSelect = { id: clientId, color: '#000', name: this.client.text, fio: this.client.fio, phones_dop: this.client.phones_dop };
|
||
$("#req-new-client").val(clientId);
|
||
$("#req-new-client").attr('data-initial-value', JSON.stringify(this.client));
|
||
$("#req-new-client").fastselect({
|
||
placeholder: 'Клиент',
|
||
onItemSelect: function(item, val) {
|
||
//console.debug({val, item});
|
||
req_form.clientName = val.fio;
|
||
req_form.inputClientName = false;
|
||
req_form.inputClientPhone = false;
|
||
req_form.clientId = val.value;
|
||
req_form.fillReqName(req_form.clientName);
|
||
if (!req_form.isEmpty(val.objects)) {
|
||
$("#req-new-object-input").html('');
|
||
req_form.getObject(val.objects[0]);
|
||
}
|
||
},
|
||
});
|
||
} else if (this.clientId > 0) {
|
||
console.log(this.clientId);
|
||
this.getClient(this.clientId, 1);
|
||
} else {
|
||
|
||
$("#req-new-client").fastselect({
|
||
placeholder: 'Клиент',
|
||
onItemSelect: function(item, val) {
|
||
//console.debug({val, item});
|
||
req_form.clientName = val.fio;
|
||
req_form.inputClientName = false;
|
||
req_form.inputClientPhone = false;
|
||
req_form.clientId = val.value;
|
||
req_form.fillReqName(req_form.clientName);
|
||
if (!req_form.isEmpty(val.objects)) {
|
||
$("#req-new-object-input").html('');
|
||
req_form.getObject(val.objects[0]);
|
||
}
|
||
},
|
||
});
|
||
}
|
||
},
|
||
|
||
//Получение списка ответственных
|
||
getWhowork(who_work) {
|
||
|
||
if(this.funnel_type == 'adjacent'){
|
||
axios.post('/ajax/select_form_client-work-adjacent.php', {
|
||
request: 'get_who_work',
|
||
funnel_id: this.funnel_id,
|
||
user_id: this.user_id,
|
||
})
|
||
.then((response) => {
|
||
//console.log(response.data);
|
||
$('#req-new-client-work-input-div').html(response.data);
|
||
$("#req-new-client-work").val(who_work);
|
||
$('#req-new-client-work').fastselect({
|
||
placeholder: 'Ответственный',
|
||
onItemCreate: function() { $(this).find('.fstQueryInput').hide() },
|
||
});
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
} else {
|
||
|
||
if ($('#req-new-client-work').length < 1) {
|
||
axios.post('/ajax/select_form_client-work.php')
|
||
.then((response) => {
|
||
|
||
$('#req-new-client-work-input-div').html(response.data);
|
||
$("#req-new-client-work").val(who_work);
|
||
$('#req-new-client-work').fastselect({
|
||
placeholder: 'Ответственный',
|
||
onItemCreate: function() { $(this).find('.fstQueryInput').hide() },
|
||
});
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
} else {
|
||
$('#req-new-client-work').fastselect().data('fastselect').destroy();
|
||
//$('#req-new-client-work-input').html(html);
|
||
$("#req-new-client-work").val(who_work);
|
||
$('#req-new-client-work').fastselect({
|
||
placeholder: 'Ответственный',
|
||
onItemCreate: function() { $(this).find('.fstQueryInput').hide() },
|
||
});
|
||
}
|
||
}
|
||
},
|
||
|
||
//Получение списка источников
|
||
getSources(source) {
|
||
|
||
if ($('#ms-req-source').length < 1) {
|
||
axios.post('/ajax/select_form_source.php')
|
||
.then((response) => {
|
||
$('#ms-req-source-input').html(response.data);
|
||
$("#ms-req-source").val(source);
|
||
$('#ms-req-source').fastselect({
|
||
placeholder: 'Источник',
|
||
onItemCreate: function() { $(this).find('.fstQueryInput').hide() },
|
||
});
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
} else {
|
||
$('#ms-req-source').fastselect().data('fastselect').destroy();
|
||
$("#ms-req-source").val(source);
|
||
$('#ms-req-source').fastselect({
|
||
placeholder: 'Источник',
|
||
onItemCreate: function() { $(this).find('.fstQueryInput').hide() },
|
||
});
|
||
}
|
||
},
|
||
|
||
getStatuses(selectedStatus) {
|
||
if ($('#status').length) {
|
||
if ($('#ms-req-status').length < 1) {
|
||
axios.post('/ajax/select_form_status.php')
|
||
.then(response => {
|
||
$('#ms-req-status-input').html(response.data);
|
||
$("#ms-req-status").val(selectedStatus);
|
||
$('#ms-req-status').fastselect({
|
||
placeholder: 'Выберите статус',
|
||
onItemCreate: function() { $(this).find('.fstQueryInput').hide() },
|
||
});
|
||
})
|
||
} else {
|
||
$('#ms-req-status').fastselect().data('fastselect').destroy();
|
||
$("#ms-req-status").val(selectedStatus);
|
||
$('#ms-req-status').fastselect({
|
||
placeholder: 'Выберите статус',
|
||
onItemCreate: function() { $(this).find('.fstQueryInput').hide() },
|
||
});
|
||
}
|
||
}
|
||
},
|
||
|
||
//Получение партнеров
|
||
getPartner(employee_id) {
|
||
|
||
if ($('#ms-req-partner').length < 1) {
|
||
axios.post('/ajax/select_form_partner.php')
|
||
.then((response) => {
|
||
$('#ms-req-partner-input').html(response.data);
|
||
$("#ms-req-partner").val(employee_id);
|
||
$('#ms-req-partner').fastselect({
|
||
placeholder: 'Партнер',
|
||
onItemCreate: function() { $(this).find('.fstQueryInput').hide() },
|
||
});
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
} else {
|
||
$('#ms-req-partner').fastselect().data('fastselect').destroy();
|
||
$("#ms-req-partner").val(employee_id);
|
||
$('#ms-req-partner').fastselect({
|
||
placeholder: 'Партнер',
|
||
onItemCreate: function($item, itemModel) {
|
||
let partner_name = $("#ms-req-partner-input select option[value=" + itemModel.value + "]").data('partner');
|
||
itemModel.text = itemModel.text + ' <!-- ' + partner_name + ' -->';
|
||
|
||
$(this).find(".fstControls input.hidenClass").attr('type', "text");
|
||
$(this).find(".fstControls input.hidenClass").removeClass('hidenClass');
|
||
},
|
||
onItemSelect: function($item, itemModel) {
|
||
|
||
let partner_label = $("#ms-req-partner-input select option:selected").data("label");
|
||
if (partner_label)
|
||
$("#ms-req-partner-input select").closest(".inputs").find(".fstToggleBtn").text(partner_label);
|
||
|
||
$(this).find(".fstControls input.hidenClass").attr('type', "text");
|
||
$(this).find(".fstControls input.hidenClass").removeClass('hidenClass');
|
||
}
|
||
});
|
||
}
|
||
},
|
||
|
||
//Получение тегов
|
||
getActivities(tag) {
|
||
console.log(tag);
|
||
if ($('#req-new-client-activities').length < 1) {
|
||
axios.post('/ajax/select_form_activities.php')
|
||
.then((response) => {
|
||
|
||
$('#req-new-client-activities-input').html(response.data);
|
||
if (tag) {
|
||
$("#req-new-client-activities").val(tag);
|
||
} else {
|
||
$("#req-new-client-activities").val(null);
|
||
}
|
||
$('#req-new-client-activities').fastselect({
|
||
placeholder: 'Теги',
|
||
onItemCreate: function() { $(this).find('.fstQueryInput').hide() },
|
||
});
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
} else {
|
||
|
||
if (tag) {
|
||
$("#req-new-client-activities").val(tag);
|
||
} else {
|
||
$("#req-new-client-activities").val(null);
|
||
}
|
||
$('#req-new-client-activities').fastselect().data('fastselect').destroy();
|
||
$('#req-new-client-activities').fastselect({
|
||
placeholder: 'Теги',
|
||
onItemCreate: function() { $(this).find('.fstQueryInput').hide() },
|
||
});
|
||
}
|
||
},
|
||
|
||
//Получение клиента
|
||
getClient(client_id, forma) {
|
||
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_client',
|
||
client_id: client_id
|
||
}, )
|
||
.then((response) => {
|
||
console.log(response.data);
|
||
this.client = response.data;
|
||
|
||
if (forma) {
|
||
req_form.clientName = this.client.fio;
|
||
//req_form.getClientsList(req_form.client.fio);
|
||
req_form.clientSelect = { id: client_id, color: '#000', name: req_form.client.text, fio: req_form.client.fio };
|
||
|
||
$("#req-new-client-input").html('');
|
||
$("#req-new-client-input").html('<input type="text" id="req-new-client" data-url="/ajax/list_clients.php?req=1" data-load-once="true">');
|
||
|
||
$("#req-new-client").val(this.clientId);
|
||
$("#req-new-client").attr('data-initial-value', JSON.stringify(this.client));
|
||
$("#req-new-client").fastselect({
|
||
placeholder: 'Клиент',
|
||
onItemSelect: function(item, val) {
|
||
req_form.clientName = val.fio;
|
||
req_form.fillReqName(req_form.clientName);
|
||
if (!req_form.isEmpty(val.objects)) {
|
||
$("#req-new-object-input").html('');
|
||
req_form.getObject(val.objects[0]);
|
||
}
|
||
},
|
||
});
|
||
}
|
||
|
||
})
|
||
.catch(function(error) {
|
||
console.log(error);
|
||
});
|
||
},
|
||
|
||
//Получение типов заявок
|
||
getTypes() {
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_type',
|
||
agency_id: this.agency_id,
|
||
active: 1,
|
||
no_archive: 1
|
||
},
|
||
|
||
)
|
||
.then((response) => {
|
||
// console.log(response.data);
|
||
this.types_req = response.data.type;
|
||
|
||
})
|
||
.catch(function(error) {
|
||
console.log(error);
|
||
});
|
||
},
|
||
|
||
//Получение ворнки
|
||
getFunnel(funnelId) {
|
||
console.log(funnelId);
|
||
var params = {};
|
||
params.selector = 'req-new-funnel';
|
||
|
||
params.section = 'req';
|
||
|
||
$('#req-new-funnel-input').html('');
|
||
if ($('#req-new-funnel').length < 1) {
|
||
axios.post('/ajax/select_form_funnel.php', params)
|
||
.then((response) => {
|
||
|
||
$('#req-new-funnel-input').html(response.data);
|
||
$("#req-new-funnel option[value='" + funnelId + "']").prop("selected", true);
|
||
$('#req-new-funnel').fastselect({
|
||
placeholder: 'Воронка',
|
||
|
||
});
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
} else {
|
||
|
||
$('#req-new-funnel').fastselect().data('fastselect').destroy();
|
||
$("#req-new-funnel").val(funnelId);
|
||
$("#req-new-funnel option[value='" + funnelId + "']").prop("selected", true);
|
||
$('#req-new-funnel').fastselect({
|
||
placeholder: 'Воронка',
|
||
|
||
});
|
||
}
|
||
},
|
||
|
||
//Закрыть форму
|
||
closeReqform() {
|
||
this.isReqForm = false;
|
||
this.clientSelect = null;
|
||
$("body").removeClass("lock");
|
||
if ($('#client-history__bg').css('display') == 'block' && $('#send_bg_new').css('display') == 'none') {
|
||
$('#client-history__bg').css('zIndex', '99998');
|
||
}
|
||
if($('#object_card .f__modal-bg').css('display') == 'none'){
|
||
$(".chat-cian").css("zIndex", "99999");
|
||
}
|
||
|
||
$('input[name=complex_room_id]').remove()
|
||
$('#status').hide()
|
||
},
|
||
|
||
//Переключение табов
|
||
changeLiGlobal(num) {
|
||
this.liGlobal = num;
|
||
if ($('#req_form .fotorama').data('fotorama')) {
|
||
$('#req_form .fotorama').data('fotorama').destroy();
|
||
//$('#object_card .fotorama').html('');
|
||
}
|
||
if (num == 4) {
|
||
setTimeout(function() {
|
||
$('#req_form .fotorama').fotorama();
|
||
//koala_loader();
|
||
}, 500);
|
||
}
|
||
},
|
||
|
||
//Переключение priority
|
||
changePriority(num) {
|
||
if (this.priority == num) {
|
||
this.priority = 0;
|
||
} else {
|
||
this.priority = num;
|
||
}
|
||
},
|
||
|
||
getClientsList(search, loading) {
|
||
// console.log(typeof loading);
|
||
if (typeof loading == 'function') {
|
||
loading(true);
|
||
}
|
||
var search_val = '';
|
||
if (!this.isEmpty(search)) {
|
||
search_val = search;
|
||
}
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_clients_list',
|
||
search: search_val,
|
||
})
|
||
.then((response) => {
|
||
//console.log(response.data);
|
||
this.clients = response.data;
|
||
if (typeof loading == 'function') {
|
||
loading(false);
|
||
}
|
||
})
|
||
.catch(function(error) {
|
||
console.log(error);
|
||
});
|
||
},
|
||
getClientsListNew(search, loading) {
|
||
clearTimeout(this.debounceTimer);
|
||
this.debounceTimer = setTimeout(() => this.getClientsList(search, loading), 500);
|
||
|
||
},
|
||
open_form_contract(id, contract_id, index) {
|
||
//console.log(contract_id);
|
||
if (typeof contract_form != "undefined") {
|
||
contract_form.parent_type = 'req';
|
||
contract_form.parent_id = id;
|
||
contract_form.id = contract_id;
|
||
contract_form.open();
|
||
if (id == 'req0' && index >= 0) {
|
||
contract_form.number = this.contracts[index].number;
|
||
contract_form.type_contract = this.contracts[index].type;
|
||
contract_form.date_start = this.contracts[index].date_start;
|
||
contract_form.date_end = this.contracts[index].date_end;
|
||
contract_form.days_mes_end = this.contracts[index].days_mes_end;
|
||
contract_form.no_mes_end = this.contracts[index].no_mes_end;
|
||
contract_form.parent_index = index;
|
||
}
|
||
}
|
||
},
|
||
|
||
//Открыть карточку объекту
|
||
openObject(object_id) {
|
||
object_card.open(object_id);
|
||
},
|
||
|
||
//Добавить/изменить заявку
|
||
addEditReq() {
|
||
this.is_looad = true;
|
||
var agencyID = $('#agencyIdClients').val();
|
||
|
||
this.errorText = '';
|
||
this.isError = false;
|
||
if ($('#status').length && $('input[name=complex_room_id]').length) {
|
||
if (this.isEmpty($("#ms-req-status").val())) {
|
||
this.isError = true;
|
||
this.errorText += "<p>Выберите статус</p>";
|
||
$('#ms-req-status').addClass('invalid');
|
||
$('#ms-req-status').closest('.fstElement').addClass('invalid');
|
||
} else {
|
||
$('#ms-req-status').removeClass('invalid');
|
||
$('#ms-req-status').closest('.fstElement').removeClass('invalid');
|
||
}
|
||
}
|
||
|
||
if (this.isEmpty(this.name)) {
|
||
this.isError = true;
|
||
this.errorText += "<p>Введите название</p>";
|
||
$('#req_name_form').addClass('invalid');
|
||
$('#req_name_form').closest('.fstElement').addClass('invalid');
|
||
} else {
|
||
$('#req_name_form').removeClass('invalid');
|
||
$('#req_name_form').closest('.fstElement').removeClass('invalid');
|
||
}
|
||
var object_id = 0;
|
||
if (this.findObject) {
|
||
if (this.isEmpty(this.findObj) || this.isEmpty(this.findObj.id)) {
|
||
this.isError = true;
|
||
this.errorText += "<p>Выберите объект</p>";
|
||
} else {
|
||
object_id = this.findObj.id;
|
||
}
|
||
} else
|
||
if ($("#req-new-object").val() && $("#req-new-object").val() > 0) {
|
||
object_id = $("#req-new-object").val();
|
||
}
|
||
|
||
var client_id = 0;
|
||
if ($("#req-new-client").val() && $("#req-new-client").val() > 0) {
|
||
|
||
client_id = $("#req-new-client").val();
|
||
}
|
||
// console.log(this.clientSelect);
|
||
if (!this.isEmpty(this.clientSelect) && !this.isEmpty(this.clientSelect.id)) {
|
||
client_id = this.clientSelect.id;
|
||
}
|
||
//console.log(client_id);
|
||
|
||
if (client_id == 0) {
|
||
this.isError = true;
|
||
this.errorText += "<p>Выберите клиента</p>";
|
||
$('#req-new-client').addClass('invalid');
|
||
$('#req-new-client').closest('.fstElement').addClass('invalid');
|
||
} else {
|
||
$('#req-new-client').removeClass('invalid');
|
||
$('#req-new-client').closest('.fstElement').removeClass('invalid');
|
||
}
|
||
|
||
var who_work = 0;
|
||
if($("#req-new-client-work").val() > 0){
|
||
who_work = $("#req-new-client-work").val();
|
||
}
|
||
|
||
var tags = 0;
|
||
tags = $("#req-new-client-activities").val();
|
||
|
||
var confirm = this.confirm;
|
||
if (this.isNew || this.who_work == 0) {
|
||
this.who_work = this.user_id;
|
||
}
|
||
|
||
if (this.who_work != who_work) {
|
||
confirm = 0;
|
||
}
|
||
|
||
if (this.selectedType != 1 && this.heir != 1 && this.selectedType != 4 && this.heir != 4) {
|
||
this.autosearch_filter_id = 0;
|
||
}
|
||
|
||
autosearch_filtr.$once('add_edit_autosearch_filter', function(filter_id, filter) {
|
||
|
||
if (typeof filter_id !== "undefined")
|
||
this.autosearch_filter_id = filter_id;
|
||
|
||
if (typeof filter !== "undefined")
|
||
this.autosearch_filter = filter;
|
||
|
||
console.debug(filter_id);
|
||
console.debug(this.autosearch_filter_id);
|
||
console.debug(filter);
|
||
console.debug(this.autosearch_filter);
|
||
});
|
||
|
||
var id_funnel = $('#req-new-funnel').val();
|
||
var source_id = $("#ms-req-source").val();
|
||
if (agencyID == 4135 || agencyID == 7384 || agencyID == 7864 || agencyID == 13154 || agencyID == 19111 || agencyID == 22666) {
|
||
if (source_id == 0) {
|
||
this.isError = true;
|
||
this.errorText += "<p>Не выбран рекламный источник</p>";
|
||
$('#ms-req-source').addClass('invalid');
|
||
$('#ms-req-source').closest('.fstElement').addClass('invalid');
|
||
} else {
|
||
$('#ms-req-source').removeClass('invalid');
|
||
$('#ms-req-source').closest('.fstElement').removeClass('invalid');
|
||
}
|
||
}
|
||
var poles = {};
|
||
|
||
if (!this.isEmpty(this.reqFields)) {
|
||
for (var i = 0; i < this.reqFields.length; i++) {
|
||
if (!this.isEmpty(this.fieldModels['model_' + this.reqFields[i].id]) && this.fieldModels['model_' + this.reqFields[i].id]) {
|
||
|
||
if (this.reqFields[i].type == 4) {
|
||
poles['model_' + this.reqFields[i].id] = 1;
|
||
} else {
|
||
poles['model_' + this.reqFields[i].id] = this.fieldModels['model_' + this.reqFields[i].id];
|
||
}
|
||
}
|
||
if (this.reqFields[i].is_podgroup > 0) {
|
||
for (var j = 0; j < this.reqFields[i].podgroups.length; j++) {
|
||
//console.log(this.fieldModels['modelp_11']);
|
||
if (!this.isEmpty(this.fieldModels['modelp_' + this.reqFields[i].podgroups[j].id]) && this.fieldModels['modelp_' + this.reqFields[i].podgroups[j].id]) {
|
||
$('#custom_req_p' + this.reqFields[i].podgroups[j].id).removeClass('invalid');
|
||
if (this.reqFields[i].podgroups[j].type == 4) {
|
||
poles['modelp_' + this.reqFields[i].podgroups[j].id] = 1;
|
||
} else {
|
||
|
||
poles['modelp_' + this.reqFields[i].podgroups[j].id] = this.fieldModels['modelp_' + this.reqFields[i].podgroups[j].id];
|
||
}
|
||
} else {
|
||
if (this.reqFields[i].podgroups[j].is_required > 0 && this.reqFields[i].podgroups[j].id == this.fieldModels['model_' + this.reqFields[i].id]) {
|
||
this.isError = true;
|
||
this.errorText += "<p>Не заполнено поле: " + this.reqFields[i].podgroups[j].title + "</p>";
|
||
$('#custom_req_p' + this.reqFields[i].podgroups[j].id).addClass('invalid');
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
if (this.reqFields[i].is_required > 0 && this.reqFields[i].is_close_step == 0) {
|
||
//console.log(JSON.parse(this.reqFields[i].req_type));
|
||
if (this.reqFields[i].req_type==0 || JSON.parse(this.reqFields[i].req_type).indexOf(this.selectedType) != -1) {
|
||
if (this.isEmpty(this.fieldModels['model_' + this.reqFields[i].id])) {
|
||
this.isError = true;
|
||
this.errorText += "<p>Не заполнено поле: " + this.reqFields[i].title + "</p>";
|
||
$('#custom_req_' + this.reqFields[i].id).addClass('invalid');
|
||
} else {
|
||
$('#custom_req_' + this.reqFields[i].id).removeClass('invalid');
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
|
||
const apartmentId = $("input[name=complex_room_id]").val();
|
||
const statusId = $("#ms-req-status").val();
|
||
|
||
if(agencyID == 19895) {
|
||
if(id_funnel === undefined || isNaN(parseInt(id_funnel)) || parseInt(id_funnel) == 0){
|
||
this.isError = true;
|
||
this.errorText += "<p>Не выбрана воронка</p>";
|
||
}
|
||
}
|
||
|
||
if (!this.isError) {
|
||
var params = {
|
||
request: 'add_edit',
|
||
user_id: this.user_id,
|
||
req_id: this.req_id,
|
||
funnel_id: id_funnel,
|
||
name: this.name,
|
||
autosearch_filter: this.autosearch_filter,
|
||
autosearch_filter_id: this.autosearch_filter_id,
|
||
fio: this.fio,
|
||
email: this.email,
|
||
phone: this.phone,
|
||
opis: this.opis.replace(/\n/g, "<br>"),
|
||
type_id: this.selectedType,
|
||
object_id: object_id,
|
||
client_id: client_id,
|
||
priority: this.priority,
|
||
price: this.price,
|
||
prep_price: this.prep_price,
|
||
start_price: this.start_price,
|
||
fact_price: this.fact_price,
|
||
who_work: who_work,
|
||
confirm: confirm,
|
||
old_whowork: this.who_work,
|
||
hot: this.hot,
|
||
activities: tags,
|
||
// source: $("#ms-req-source").val(),
|
||
employee_id: $("#ms-req-partner").val(),
|
||
status: statusId,
|
||
complex_room_id: apartmentId,
|
||
field_models: poles,
|
||
contracts: this.contracts,
|
||
autosearch_enabled: (this.autoSearchEnabled) ? 1 : 0,
|
||
newClientName: this.newClientName,
|
||
wazzap_channel_id: this.wazzap_channel_id,
|
||
wazzap_chat_id: this.wazzap_chat_id,
|
||
wazzap_chat_type: this.wazzap_chat_type,
|
||
wazzap_integration_id: this.wazzap_integration_id,
|
||
wazzap_user_id: this.wazzap_user_id,
|
||
confirm_recommendation: this.confirm_recommendation,
|
||
friend_client_id: this.friend_client_id,
|
||
is_manual: 1
|
||
}
|
||
if(this.source_see == 1){
|
||
params.source = $("#ms-req-source").val();
|
||
}
|
||
axios.post('/ajax/ajax_vue_requisitions.php', params, )
|
||
.then((response) => {
|
||
console.log(response.data);
|
||
refreshCalendar();
|
||
var res = response.data;
|
||
if (res.error == 1001) {
|
||
this.isError = true;
|
||
this.errorText += "<p>" + res.mes + "</p>";
|
||
$('.full_modal-bg').stop().animate({ scrollTop: 0 }, '500');
|
||
} else {
|
||
|
||
let req_id = parseInt(res.req_id);
|
||
autosearch_filtr.setReqToFilter(req_id, this.autosearch_filter_id);
|
||
this.closeReqform();
|
||
|
||
if (document.location.pathname == '/requisitions.php') {
|
||
if(requisitions.view == 'kanban'){
|
||
requisitions.get_req_id(req_id, 1);
|
||
} else {
|
||
requisitions.getList();
|
||
}
|
||
}
|
||
if ($('#client-history__bg').css('display') == 'block') {
|
||
if (parseInt(this.req_id) > 0) {
|
||
openClientEventsWindowNew(0, $('#session_to_send').val(), 0, this.req_id);
|
||
}
|
||
}
|
||
if ($('#send_bg_new').css('display') == 'block') {
|
||
var data_req = $('#ms-new-client-req').val();
|
||
if (data_req != '') data_req += ",";
|
||
data_req += req_id;
|
||
|
||
req_fastselect('ms-new-client-req-input', 'ms-new-client-req', data_req);
|
||
}
|
||
|
||
requisitions_client.getList();
|
||
|
||
if (location.href.includes('complexes/#')) {
|
||
window.complexBus.$emit('apartment-status-changed', { complex_status_id: statusId, req_id: response.data.req_id })
|
||
window.complexBus.$emit('change-apartment-status', apartmentId, statusId)
|
||
window.complexBus.$emit("change-apartment-reservations", response.data.reservations);
|
||
window.complexBus.$emit("change-apartment-created-requisition", response.data.requisitions);
|
||
}
|
||
}
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
} else {
|
||
this.is_looad = false;
|
||
$('.full_modal-bg').stop().animate({ scrollTop: 0 }, '500');
|
||
}
|
||
|
||
},
|
||
|
||
//Очистка формы
|
||
clearReq() {
|
||
this.isError = false;
|
||
this.isFilterError = false;
|
||
this.errorText = '';
|
||
this.errorFilterText = '';
|
||
this.name = '';
|
||
this.autosearch_filter = [];
|
||
this.autosearch_filter_id = null;
|
||
this.liGlobal = 1;
|
||
this.fio = '';
|
||
this.email = '';
|
||
this.phone = '';
|
||
this.opis = '';
|
||
this.getTypes();
|
||
this.selectedType = 0;
|
||
this.isObject = false;
|
||
this.isNew = true;
|
||
this.req_id = 0;
|
||
this.object = [];
|
||
this.client = [];
|
||
this.isClear = true;
|
||
this.hot = 0;
|
||
this.priority = 0;
|
||
this.objectId = 0;
|
||
if (this.noEmptyClientId == 0) {
|
||
this.clientId = 0;
|
||
} else {
|
||
|
||
this.noEmptyClientId = 0;
|
||
}
|
||
this.funnel_type = 'main';
|
||
this.clientName = '';
|
||
this.newClientName = '';
|
||
this.inputClientName = false;
|
||
this.inputClientPhone = false;
|
||
this.axios_processed = false;
|
||
this.prep_price = '';
|
||
this.start_price = '';
|
||
this.fact_price = '';
|
||
this.findObj = [];
|
||
this.autoSearch = false;
|
||
this.autoSearchEnabled = false;
|
||
this.findObject = false;
|
||
this.contracts = [];
|
||
this.heir = 0;
|
||
this.confirm_recommendation = null,
|
||
this.friend_client_id = 0
|
||
},
|
||
|
||
selectType(val) {
|
||
//console.log(val);
|
||
|
||
this.findObject = false;
|
||
this.autoSearch = false;
|
||
this.autoSearchEnabled = false;
|
||
this.findObj = [];
|
||
var heir = 0;
|
||
this.heir = 0;
|
||
var temp_type = this.types_req.find((el, idx) => el.code == val);
|
||
console.info(this.types_req);
|
||
if (temp_type) {
|
||
if (temp_type.heir > 0) {
|
||
heir = temp_type.heir;
|
||
this.heir = heir;
|
||
}
|
||
}
|
||
|
||
autosearch_filtr.req_type = val;
|
||
this.is_search = 1;
|
||
this.is_reverse = 1;
|
||
|
||
if (val == 2 || heir == 2) {
|
||
this.isObject = true;
|
||
this.getObject();
|
||
} else if (val == 1 || heir == 1) {
|
||
this.isObject = false;
|
||
this.autoSearch = true;
|
||
this.findObject = false;
|
||
} else if (val == 4 || heir == 4) {
|
||
this.isObject = false;
|
||
this.findObject = true;
|
||
this.autoSearch = true;
|
||
this.autoSearchEnabled = 1;
|
||
} else if (val == 5 || heir == 5) {
|
||
this.isObject = false;
|
||
this.findObject = false;
|
||
} else {
|
||
this.isObject = true;
|
||
this.autoSearch = false;
|
||
}
|
||
|
||
this.fillReqName(this.clientName);
|
||
},
|
||
|
||
//открыть форму из объекта
|
||
openFormObj(idObj, who_work) {
|
||
this.openReqForm();
|
||
this.selectedType = 4;
|
||
this.findObject = true;
|
||
this.autoSearch = true;
|
||
this.findObject = true;
|
||
this.autoSearchEnabled = 1
|
||
this.objectId = idObj;
|
||
this.getObjectFind(who_work, idObj);
|
||
},
|
||
|
||
//Переключение горячий
|
||
toggleHot() {
|
||
if (this.hot == 0) {
|
||
this.hot = 1;
|
||
} else {
|
||
this.hot = 0;
|
||
}
|
||
},
|
||
|
||
//Открыть поиск объект
|
||
openFindObj() {
|
||
var html = '<div class="f__modal" id="modalFindObj" style="display: none; padding-bottom: 0px;">' +
|
||
'<span class="pseudo-link closer">×</span>' +
|
||
'<h3>Объекты</h3><div style="text-align:center; margin-top: 25px;"><img src="../images/rocket-spinner.svg" width="96px"></div>' +
|
||
'</div>';
|
||
$('#modalFindObj_bg').html(html).fadeIn(500);
|
||
$('#modalFindObj').toggle(10);
|
||
$("body").addClass("lock");
|
||
|
||
|
||
axios.post('/ajax/modals/findObjectsWinContent.php', {agency_id: this.agency_id})
|
||
.then((response) => {
|
||
$('#modalFindObj').html(response.data);
|
||
// $('#modalFindObj').toggle(10);
|
||
findObject();
|
||
|
||
installationComponentFindObj();
|
||
|
||
|
||
})
|
||
.catch(function(error) {
|
||
console.log(error);
|
||
});
|
||
},
|
||
|
||
//Открыть редактирование параметров автопоиска
|
||
openAutoSearchFiltr(req_id, filter_id) {
|
||
|
||
if (typeof req_id == "undefined")
|
||
req_id = this.req_id;
|
||
|
||
if (typeof filter_id == "undefined")
|
||
filter_id = this.autosearch_filter_id;
|
||
|
||
let res = this;
|
||
autosearch_filtr.openAutoSearchFiltr(req_id, filter_id);
|
||
autosearch_filtr.$once('add_edit_autosearch_filter', function(filter_id, filter) {
|
||
|
||
if (typeof filter_id !== "undefined")
|
||
res.autosearch_filter_id = filter_id;
|
||
|
||
if (typeof filter !== "undefined")
|
||
res.autosearch_filter = filter;
|
||
|
||
console.debug(filter_id);
|
||
console.debug(res.autosearch_filter_id);
|
||
console.debug(filter);
|
||
console.debug(res.autosearch_filter);
|
||
});
|
||
},
|
||
|
||
//Мини-форма редактирования параметра автопоиска
|
||
editAutoSearchParam(filter_id, param_id, event) {
|
||
/*let element = event.target;
|
||
let row = $(event.target).closest('tr[data-key="'+param_id+'"]');*/
|
||
let row = $('body').find('tr[data-key="' + param_id + '"]');
|
||
row.find('a.edit_param_btn').fadeOut();
|
||
row.find('a.delete_param_btn').fadeOut();
|
||
row.find('a.save_param_btn').fadeIn();
|
||
row.find('a.close_param_btn').fadeIn();
|
||
autosearch_filtr.editShortField(filter_id, param_id);
|
||
autosearch_filtr.$once('edit_short_field_input', function(html) {
|
||
row.find('td[data-key="value"]').html(html);
|
||
if (row.find('td[data-key="value"] select').length > 0) {
|
||
row.find('td[data-key="value"] select').fastselect();
|
||
} else if (row.find('td[data-key="value"] input.datepicker-here2').length > 0) {
|
||
row.find('td[data-key="value"] input.datepicker-here2').datepicker({
|
||
autoClose: 'true'
|
||
});
|
||
}
|
||
});
|
||
},
|
||
deleteAutoSearchParam(filter_id, param_id, event) {
|
||
let element = event.target;
|
||
let row = $(event.target).closest('tr[data-key="' + param_id + '"]');
|
||
if (confirm("Вы действительно желаете удалить параметр автопоиска?")) {
|
||
autosearch_filtr.deleteShortField(filter_id, param_id);
|
||
autosearch_filtr.$once('removed_short_field_value', function(field_id) {
|
||
if (param_id == field_id) {
|
||
row.remove();
|
||
}
|
||
});
|
||
}
|
||
},
|
||
openAutoSearchMap(filter_id, event) {
|
||
autosearch_filtr.openAutoSearchMap(filter_id, this.req_id, this.user_id);
|
||
},
|
||
saveAutoSearchParam(filter_id, param_id, event) {
|
||
let fields = [];
|
||
let values = [];
|
||
let input_id = param_id.replace('_', '-');
|
||
let row = $(event.target).closest('tr[data-key="' + param_id + '"]');
|
||
let input = row.find('#asfiltr-' + input_id + ' input, select, textarea, checkbox');
|
||
if (input.length > 0) {
|
||
input.each(function() {
|
||
let input_name = $(this).attr('name');
|
||
let input_value = $(this).val();
|
||
|
||
if ($(this).is(':checkbox')) {
|
||
input_value = ($(this).prop('checked')) ? "1" : "0";
|
||
}
|
||
|
||
if (typeof input_name !== "undefined" && typeof input_value !== "undefined") {
|
||
fields.push(input_name);
|
||
values.push(input_value);
|
||
}
|
||
console.debug({ input_name, input_value });
|
||
});
|
||
} else {
|
||
let input = $(event.target).closest('tr[data-key="' + param_id + '"]').find('#asfiltr-' + input_id);
|
||
let input_name = input.attr('name');
|
||
let input_value = input.val();
|
||
|
||
if (input.is(':checkbox')) {
|
||
input_value = (input.prop('checked')) ? "1" : "0";
|
||
}
|
||
|
||
if (typeof input_name !== "undefined" && typeof input_value !== "undefined") {
|
||
fields.push(input_name);
|
||
values.push(input_value);
|
||
}
|
||
console.debug({ input_name, input_value });
|
||
}
|
||
|
||
autosearch_filtr.saveShortField(filter_id, param_id, array_combine(fields, values));
|
||
autosearch_filtr.$once('edit_short_field_value', function(value) {
|
||
if (value !== null) {
|
||
row.find('td[data-key="value"]').data('origin', value);
|
||
row.find('td[data-key="value"]').html(value);
|
||
}
|
||
});
|
||
autosearch_filtr.$once('edit_short_field_error', function(error) {
|
||
if (error !== null) {
|
||
this.isFilterError = true;
|
||
this.errorFilterText = error;
|
||
}
|
||
});
|
||
|
||
if (document.location.pathname == '/requisitions.php') {
|
||
requisitions.getList();
|
||
}
|
||
|
||
row.find('a.save_param_btn').fadeOut();
|
||
row.find('a.close_param_btn').fadeOut();
|
||
row.find('a.edit_param_btn').fadeIn();
|
||
row.find('a.delete_param_btn').fadeIn();
|
||
},
|
||
closeAutoSearchParam(filter_id, param_id, event) {
|
||
let element = event.target;
|
||
let row = $(event.target).closest('tr[data-key="' + param_id + '"]');
|
||
row.find('a.close_param_btn').fadeOut();
|
||
row.find('a.save_param_btn').fadeOut();
|
||
row.find('a.edit_param_btn').fadeIn();
|
||
row.find('a.delete_param_btn').fadeIn();
|
||
|
||
let html = row.find('td[data-key="value"]').data('origin');
|
||
row.find('td[data-key="value"]').html(html);
|
||
},
|
||
deleteContract(index) {
|
||
if (confirm('Вы действительно хотите удалить этот договор?')) {
|
||
|
||
$('.ui-tooltip.ui-widget').remove();
|
||
if (this.req_id != 'req0') {
|
||
if (typeof contract_form != "undefined") {
|
||
contract_form.delete(this.contracts[index].id, 'req');
|
||
}
|
||
}
|
||
this.contracts.splice(index, 1);
|
||
}
|
||
|
||
},
|
||
|
||
//Поиск и сравнение
|
||
isFindValue(val1, val2){
|
||
let res = false;
|
||
|
||
if(!this.isEmpty(val2)){
|
||
if(Array.isArray(val2)){
|
||
for(let i=0; i<val2.length; i++){
|
||
if(val2[i] == val1){
|
||
res = true;
|
||
break;
|
||
}
|
||
}
|
||
} else {
|
||
if(val1 == val2){
|
||
res = true;
|
||
}
|
||
}
|
||
}
|
||
|
||
return res;
|
||
},
|
||
|
||
//Проверка на пустоту
|
||
isEmpty(data) {
|
||
if (typeof(data) === 'object') {
|
||
if (JSON.stringify(data) === '{}' || JSON.stringify(data) === '[]') {
|
||
return true;
|
||
} else if (!data) {
|
||
return true;
|
||
}
|
||
return false;
|
||
} else if (typeof(data) === 'string') {
|
||
if (!data.trim()) {
|
||
return true;
|
||
}
|
||
return false;
|
||
} else if (typeof(data) === 'undefined') {
|
||
return true;
|
||
} else {
|
||
return false;
|
||
}
|
||
},
|
||
|
||
|
||
},
|
||
|
||
mounted() {
|
||
|
||
},
|
||
created: function() {
|
||
this.getClientsList();
|
||
$("#req_form").removeClass("hidden");
|
||
$("#req_form .tabs__content").removeAttr("style");
|
||
|
||
}
|
||
})
|
||
|
||
//Фильтр
|
||
if ($('#req_filtr').length > 0) {
|
||
var filtr = new Vue({
|
||
el: '#req_filtr',
|
||
components: {
|
||
Multiselect: window.VueMultiselect.default,
|
||
vuejsDatepicker: window.vuejsDatepicker
|
||
},
|
||
data() {
|
||
|
||
return {
|
||
view: null,
|
||
viewUser: null,
|
||
user_id: $('#userIdReq').val(),
|
||
funnel_id: $('#funnelIdClients').val(),
|
||
agency_id: $('#session_agency_id').val() || null,
|
||
options: 0,
|
||
textOptions: ' опций',
|
||
reqFields: [],
|
||
fieldModels: [],
|
||
tempModel: [],
|
||
types_contract: [{ 'code': 0, 'type': '' }],
|
||
property_types: [],
|
||
filtr: {
|
||
search: "",
|
||
stages: { 'work': 1, 'hot': 0, 'close': 0, 'hit': 0, 'ahency': 0, 'confirm': 0, 'send': 0 },
|
||
confirm: 0,
|
||
send: 0,
|
||
emp: [],
|
||
type: [],
|
||
step: [],
|
||
priority: { 1: 0, 2: 0, 3: 0, 4: 0 },
|
||
object_id: $('#objectIdForReq').val() || '',
|
||
is_tasks: false,
|
||
noTasks: false,
|
||
todayTasks: false,
|
||
overTasks: false,
|
||
period: "all",
|
||
onDate: '',
|
||
offDate: '',
|
||
denial: [],
|
||
activities: [],
|
||
order: $('#sort_order_req').val(),
|
||
isPartner: false,
|
||
is_deal: false,
|
||
source: -1,
|
||
fields: {},
|
||
is_contract: false,
|
||
numder_contract: null,
|
||
onDateContract: '',
|
||
offDateContract: '',
|
||
type_contract: [],
|
||
date_closer: 10,
|
||
priceFrom: 0,
|
||
priceTo: 0,
|
||
property_type: null,
|
||
is_date_step: false,
|
||
onDateStep: '',
|
||
offDateStep: '',
|
||
total_union: null
|
||
},
|
||
OpenIndicator: {
|
||
render: createElement => createElement('span', { class: { 'vueToggleSpan': true } }),
|
||
},
|
||
}
|
||
},
|
||
methods: {
|
||
//Список
|
||
getFilter(clear) {
|
||
|
||
this.filtr = {
|
||
search: "",
|
||
stages: { 'work': 1, 'hot': 0, 'close': 0, 'hit': 0, 'ahency': 0, 'confirm': 0, 'send': 0 },
|
||
confirm: 0,
|
||
send: 0,
|
||
emp: [],
|
||
type: [],
|
||
step: [],
|
||
priority: { 1: 0, 2: 0, 3: 0, 4: 0 },
|
||
object_id: '',
|
||
is_tasks: false,
|
||
noTasks: false,
|
||
todayTasks: false,
|
||
overTasks: false,
|
||
period: "all",
|
||
onDate: '',
|
||
offDate: '',
|
||
denial: [],
|
||
activities: [],
|
||
order: $('#sort_order_req').val(),
|
||
isPartner: false,
|
||
is_deal: false,
|
||
source: -1,
|
||
fields: {},
|
||
is_contract: false,
|
||
numder_contract: null,
|
||
onDateContract: '',
|
||
offDateContract: '',
|
||
type_contract: [],
|
||
date_closer: 10,
|
||
property_type: null,
|
||
tempModel: {},
|
||
fieldModels: {},
|
||
is_date_step: false,
|
||
onDateStep: '',
|
||
offDateStep: '',
|
||
currentFilterTypesParents: {},
|
||
}
|
||
if (clear == 1) {
|
||
filtr.$set(filtr.filtr.stages, 'work', 0);
|
||
}
|
||
|
||
|
||
},
|
||
|
||
//Получение дополнительных полей
|
||
getReqFields() {
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_req_fields',
|
||
agency_id: this.agency_id,
|
||
req_id: this.req_id,
|
||
}).then((response) => {
|
||
//console.log(response.data);
|
||
this.reqFields = response.data.fields;
|
||
this.clearFields();
|
||
|
||
}).catch(function(error) {
|
||
console.log(error);
|
||
});
|
||
},
|
||
//Типы договоров
|
||
getTypesContract() {
|
||
axios.post('/ajax/ajax_vue_contract.php', {
|
||
request: 'get_types_contract',
|
||
agency_id: this.agency_id,
|
||
}, )
|
||
.then((response) => {
|
||
this.types_contract = response.data;
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
},
|
||
|
||
//Типы недвижимости
|
||
getPropertyType() {
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_property_types'
|
||
}).then((response) => {
|
||
//console.log(response.data);
|
||
this.property_types = response.data;
|
||
|
||
|
||
}).catch(function(error) {
|
||
console.log(error);
|
||
});
|
||
},
|
||
|
||
clearFields(clear) {
|
||
if (clear) {
|
||
this.tempModel = {};
|
||
}
|
||
|
||
if (this.reqFields) {
|
||
for (var i = 0; i < this.reqFields.length; i++) {
|
||
|
||
this.$set(this.fieldModels, 'model_' + this.reqFields[i].id, null);
|
||
if (this.tempModel['model_' + this.reqFields[i].id] && !this.isEmpty(this.tempModel['model_' + this.reqFields[i].id])) {
|
||
this.$set(this.fieldModels, 'model_' + this.reqFields[i].id, this.tempModel['model_' + this.reqFields[i].id]);
|
||
}
|
||
if (this.reqFields[i].is_podgroup > 0) {
|
||
for (var j = 0; j < this.reqFields[i].podgroups.length; j++) {
|
||
this.$set(this.fieldModels, 'modelp_' + this.reqFields[i].podgroups[j].id, null);
|
||
if (this.tempModel['modelp_' + this.reqFields[i].podgroups[j].id] &&
|
||
!this.isEmpty(this.tempModel['modelp_' + this.reqFields[i].podgroups[j].id])) {
|
||
this.$set(this.fieldModels, 'modelp_' + this.reqFields[i].podgroups[j].id, this.tempModel['modelp_' + this.reqFields[i].podgroups[j].id]);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
setTimeout(function() { this.tempModel = {} }, 500);
|
||
},
|
||
|
||
//Для кастомных фильтров
|
||
checkFields() {
|
||
this.filtr.fields = {};
|
||
if (!this.isEmpty(this.reqFields)) {
|
||
for (var i = 0; i < this.reqFields.length; i++) {
|
||
if (!this.isEmpty(this.fieldModels['model_' + this.reqFields[i].id]) && this.fieldModels['model_' + this.reqFields[i].id]) {
|
||
|
||
if (this.reqFields[i].type == 4) {
|
||
this.filtr.fields['model_' + this.reqFields[i].id] = 1;
|
||
} else {
|
||
this.filtr.fields['model_' + this.reqFields[i].id] = this.fieldModels['model_' + this.reqFields[i].id];
|
||
}
|
||
}
|
||
if (this.reqFields[i].is_podgroup > 0) {
|
||
for (var j = 0; j < this.reqFields[i].podgroups.length; j++) {
|
||
//console.log(this.fieldModels['modelp_11']);
|
||
if (!this.isEmpty(this.fieldModels['modelp_' + this.reqFields[i].podgroups[j].id]) && this.fieldModels['modelp_' + this.reqFields[i].podgroups[j].id]) {
|
||
if (this.reqFields[i].podgroups[j].type == 4) {
|
||
this.filtr.fields['modelp_' + this.reqFields[i].podgroups[j].id] = 1;
|
||
} else {
|
||
this.filtr.fields['modelp_' + this.reqFields[i].podgroups[j].id] = this.fieldModels['modelp_' + this.reqFields[i].podgroups[j].id];
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
this.get_option();
|
||
//this.search();
|
||
},
|
||
|
||
//Количество фильтров
|
||
get_option() {
|
||
this.options = 0;
|
||
|
||
if (!this.isEmpty(this.filtr.search)) {
|
||
this.options++;
|
||
this.textOptions = " опции";
|
||
if (this.options == 1) this.textOptions = " опция";
|
||
if (this.options > 4) this.textOptions = " опций";
|
||
}
|
||
for (var st in this.filtr.stages) {
|
||
if (this.filtr.stages[st] == 1) {
|
||
this.options++;
|
||
}
|
||
}
|
||
for (var pr in this.filtr.priority) {
|
||
if (this.filtr.priority[pr] == 1) {
|
||
this.options++;
|
||
break;
|
||
}
|
||
}
|
||
if (!this.isEmpty(this.filtr.emp)) {
|
||
this.options++;
|
||
}
|
||
if (!this.isEmpty(this.filtr.type)) {
|
||
this.options++;
|
||
}
|
||
if (!this.isEmpty(this.filtr.property_type)) {
|
||
this.options++;
|
||
}
|
||
if (!this.isEmpty(this.filtr.activities)) {
|
||
this.options++;
|
||
}
|
||
if (!this.isEmpty(this.filtr.source) && this.filtr.source > 0) {
|
||
this.options++;
|
||
}
|
||
if (!this.isEmpty(this.filtr.employee_id)) {
|
||
this.options++;
|
||
}
|
||
if (!this.isEmpty(this.filtr.denial)) {
|
||
this.options++;
|
||
}
|
||
if (!this.isEmpty(this.filtr.step)) {
|
||
this.options++;
|
||
}
|
||
if (!this.isEmpty(this.filtr.object_id)) {
|
||
this.options++;
|
||
}
|
||
if (this.filtr.is_contract) {
|
||
this.options++;
|
||
}
|
||
if (this.filtr.is_tasks) {
|
||
this.options++;
|
||
}
|
||
if (this.filtr.noTasks) {
|
||
this.options++;
|
||
}
|
||
if (this.filtr.todayTasks) {
|
||
this.options++;
|
||
}
|
||
if (this.filtr.overTasks) {
|
||
this.options++;
|
||
}
|
||
if (this.filtr.isPartner) {
|
||
this.options++;
|
||
}
|
||
if (this.filtr.is_deal) {
|
||
this.options++;
|
||
}
|
||
if (this.filtr.fields && Object.keys(this.filtr.fields).length) {
|
||
this.options++;
|
||
}
|
||
if (this.filtr.is_date_step) {
|
||
this.options++;
|
||
}
|
||
},
|
||
|
||
searchButtonClick() {
|
||
|
||
this.checkFiltr();
|
||
this.search(0);
|
||
$('.crm__filter-popup').removeClass("is__show");
|
||
|
||
},
|
||
|
||
//Поиск
|
||
search(isLupa) {
|
||
//console.log(this.filtr.stages);
|
||
console.log(requisitions.isKanban);
|
||
console.log(this.filtr.order);
|
||
//console.log($('#sort_order_req').val(2));
|
||
if(requisitions.isKanban){
|
||
if(this.filtr.order === false || this.filtr.order == 0){
|
||
$('#sort_order_req').val(2);
|
||
}
|
||
}
|
||
if (isLupa && !requisitions.isKanban) {
|
||
requisitions.funnel_id = 'all';
|
||
} else {
|
||
requisitions.funnel_id = $('#funnelIdClients').val();
|
||
}
|
||
if (this.filtr.stages.close == 0) {
|
||
$('.closed_all').show();
|
||
$('.renew_all_reqs').hide();
|
||
$('.mass_take_from_closed').hide();
|
||
$('.confirm__reqs').show();
|
||
$('.transfer_reqs_closed').hide();
|
||
} else {
|
||
$('.closed_all').hide();
|
||
$('.renew_all_reqs').hide();
|
||
$('.mass_take_from_closed').show();
|
||
$('.confirm__reqs').hide();
|
||
$('.transfer_reqs_closed').show();
|
||
}
|
||
if (this.filtr.stages.ahency == 1 || this.filtr.stages.confirm == 1) {
|
||
|
||
$('.confirm_on_reqs').show();
|
||
|
||
$('#popup__reqs .closed_all').hide();
|
||
|
||
|
||
} else {
|
||
if (this.filtr.stages.close == 0){
|
||
$('#popup__reqs .closed_all').show();
|
||
}
|
||
$('.confirm_on_reqs').hide();
|
||
}
|
||
localStorage.removeItem('req_filter');
|
||
localStorage.setItem('req_filter', JSON.stringify(this.filtr));
|
||
requisitions.filtr = this.filtr;
|
||
requisitions.view = this.view;
|
||
requisitions.page = 1;
|
||
requisitions.getList();
|
||
},
|
||
|
||
clearFiltr() {
|
||
|
||
this.options = 0;
|
||
this.getFilter(1);
|
||
localStorage.removeItem('req_filter');
|
||
//this.filtr.stages.work = 0;
|
||
//console.log(this.filtr);
|
||
this.getSelect('req_filter_emp_input', 'req_filter_emp', 'Ответственный');
|
||
this.getSelect('filter-req-type-input', 'filter-req-type', 'Тип');
|
||
this.getSelect('req_filter_etap_input', 'req_filter_etap', 'Этап');
|
||
this.getSelect('req_filter_period_input', 'req_filter_period', 'Период', 'all');
|
||
this.getSelect('req_denial_work_input', 'req_denial_work', 'Причина закрытия');
|
||
this.getSelect('req_filter_activities_input', 'req_filter_activities', 'Теги');
|
||
this.getSelect('req_filter-source_input', 'req_filter-source', 'Источники');
|
||
this.getSelect('req_filter_partner_input', 'req_filter_partner', 'Партнеры');
|
||
$('#reqOnDate').val('');
|
||
$('#reqOffDate').val('');
|
||
$('#reqDates').addClass('hidden');
|
||
|
||
this.fieldModels = {};
|
||
this.clearFields(1);
|
||
this.get_option();
|
||
this.search();
|
||
},
|
||
|
||
clearSearch() {
|
||
this.filtr.search = '';
|
||
this.get_option();
|
||
this.search();
|
||
},
|
||
|
||
checkStage(stage) {
|
||
//console.log(stage);
|
||
for (var st in this.filtr.stages) {
|
||
if (st == stage) {
|
||
if (this.filtr.stages[st] == 1) {
|
||
this.filtr.stages[st] = 0;
|
||
} else {
|
||
this.filtr.stages[st] = 1;
|
||
}
|
||
|
||
} else {
|
||
this.filtr.stages[st] = 0;
|
||
}
|
||
|
||
}
|
||
this.get_option();
|
||
//this.search();
|
||
},
|
||
|
||
//Категории
|
||
checkPriority(pr) {
|
||
if (this.filtr.priority[pr] == 1) {
|
||
this.filtr.priority[pr] = 0;
|
||
} else {
|
||
this.filtr.priority[pr] = 1;
|
||
}
|
||
this.get_option();
|
||
//this.search();
|
||
},
|
||
|
||
//Выбор id объекта
|
||
checkObjectId() {
|
||
this.get_option();
|
||
//this.search();
|
||
},
|
||
|
||
//По задачам
|
||
checkTasks() {
|
||
this.get_option();
|
||
//this.search();
|
||
},
|
||
|
||
checkFiltr() {
|
||
|
||
var denial = $('#req_denial_work').val();
|
||
this.filtr.denial = denial;
|
||
console.log(decodeURI(window.location.search));
|
||
var queryParams = parseQueryString(decodeURI(window.location.search));
|
||
var activities = $('#req_filter_activities').val();
|
||
this.filtr.activities = activities;
|
||
var source = $('#req_filter-source').val();
|
||
this.filtr.source = source;
|
||
var employee_id = $('#req_filter_partner').val();
|
||
this.filtr.employee_id = employee_id;
|
||
this.getReqFields();
|
||
var period = $('#req_filter_period').val();
|
||
|
||
if (queryParams) {
|
||
console.log(queryParams);
|
||
|
||
if (queryParams.emp !== undefined) {
|
||
this.filtr.userId = queryParams.emp;
|
||
} else if(queryParams.responsible !== undefined){
|
||
this.filtr.userId = queryParams.responsible;
|
||
}
|
||
|
||
if(queryParams.filter_emp !== undefined){
|
||
console.log(queryParams.filter_emp.replace('[\'','').replace('\']',''));
|
||
this.filtr.userId = queryParams.filter_emp.replace('[\'','').replace('\']','');
|
||
this.filtr.is_stats = 1
|
||
}
|
||
|
||
if (queryParams.filter_stage !== undefined) {
|
||
this.filtr.filter_stage = queryParams.filter_stage;
|
||
this.filtr.stages = { 'work': 0, 'hot': 0, 'close': 0, 'hit': 0, 'ahency': 0, 'confirm': 0, 'send': 0 };
|
||
if (queryParams.filter_stage == 'filter_stage_work') {
|
||
this.filtr.stages.work = 1;
|
||
this.filtr.stages.send = 1;
|
||
this.filtr.stages.confirm = 1;
|
||
}
|
||
if (queryParams.filter_stage == 'filter_stage_close') {
|
||
this.filtr.stages.close = 1;
|
||
}
|
||
if (queryParams.filter_stage == 'filter_stage_hit') {
|
||
this.filtr.stages.hit = 1;
|
||
}
|
||
}
|
||
|
||
if (queryParams.isPartner !== undefined) {
|
||
this.filtr.isPartner = 1;
|
||
}
|
||
|
||
if (queryParams.denial !== undefined) {
|
||
|
||
this.filtr.denial = [queryParams.denial];
|
||
}
|
||
|
||
if (queryParams.date_closer !== undefined) {
|
||
this.filtr.date_closer = queryParams.date_closer;
|
||
}
|
||
|
||
if (queryParams.expired_stages !== undefined) {
|
||
this.filtr.expired_stages = queryParams.expired_stages;
|
||
}
|
||
|
||
if (queryParams.source !== undefined) {
|
||
this.filtr.source = queryParams.source.split(',');
|
||
}
|
||
|
||
if (queryParams.activities !== undefined) {
|
||
this.filtr.activities = queryParams.activities.split(',');
|
||
}
|
||
|
||
if (queryParams.partner !== undefined) {
|
||
this.filtr.employee_id = queryParams.partner.split(',');
|
||
}
|
||
if (queryParams.step !== undefined) {
|
||
this.filtr.step_id = queryParams.step;
|
||
}
|
||
if (queryParams.transmitted !== undefined) {
|
||
this.filtr.transmitted = queryParams.transmitted;
|
||
}
|
||
if (queryParams.accepted !== undefined) {
|
||
this.filtr.accepted = queryParams.accepted;
|
||
}
|
||
if(period == 'period'){
|
||
if(queryParams.date_start !== undefined) {
|
||
this.filtr.date_start = queryParams.date_start;
|
||
}
|
||
if(queryParams.date_end !== undefined) {
|
||
this.filtr.date_end = queryParams.date_end;
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
var tempemp = $("#req_filter_emp").val();
|
||
var emp = [];
|
||
|
||
if(!this.isEmpty(tempemp)){
|
||
for(var i=0; i < tempemp.length; i++){
|
||
|
||
emp.push(tempemp[i].replace('I_',''));
|
||
}
|
||
}
|
||
|
||
this.filtr.emp = emp;
|
||
var types = $('#filter-req-type').val();
|
||
this.filtr.type = types;
|
||
var step = $('#req_filter_etap').val();
|
||
this.filtr.step = step;
|
||
|
||
|
||
if (period == 'period') {
|
||
$('#reqDates').removeClass('hidden');
|
||
} else {
|
||
$('#reqOnDate').val('');
|
||
$('#reqOffDate').val('');
|
||
$('#reqDates').addClass('hidden');
|
||
}
|
||
|
||
this.filtr.period = period;
|
||
var onDate = $('#reqOnDate').val();
|
||
this.filtr.onDate = onDate;
|
||
var offDate = $('#reqOffDate').val();
|
||
this.filtr.offDate = offDate;
|
||
var onDateContract = $('#contractReqOnDate').val();
|
||
this.filtr.onDateContract = onDateContract;
|
||
var offDateContract = $('#contractReqOffDate').val();
|
||
this.filtr.offDateContract = offDateContract;
|
||
this.filtr.onDateStep = $('#dateStepReqOnDate').val();
|
||
this.filtr.offDateStep = $('#dateStepReqOffDate').val();
|
||
|
||
this.tempModel = {};
|
||
if (!this.isEmpty(this.filtr.fields)) {
|
||
|
||
for (var index in this.filtr.fields) {
|
||
if (index.indexOf('model') != -1) {
|
||
this.$set(this.tempModel, index, this.filtr.fields[index]);
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
console.log(this.filtr);
|
||
|
||
this.checkFields();
|
||
this.get_option();
|
||
|
||
// Установка связей с родительскими типами
|
||
this.currentFilterTypesParents = JSON.parse($('#filter-req-type-parents').val() || '{}')
|
||
|
||
if (Object.values(this.filtr.type ?? {}).map(v => parseInt(v)).filter(
|
||
// Включаем цену только по определённым типам + дочерним от них
|
||
// 1 - Подбор объекта
|
||
// 4 - Спрос по нашему объекту
|
||
v => [1, 4].includes(v) || [1, 4].includes(this.currentFilterTypesParents[v])
|
||
).length) {
|
||
this.filtr.priceFrom = parseInt($('#filter-popup-price-from').val())
|
||
this.filtr.priceTo = parseInt($('#filter-popup-price-to').val())
|
||
}
|
||
else {
|
||
this.filtr.priceFrom = undefined
|
||
this.filtr.priceTo = undefined
|
||
}
|
||
},
|
||
|
||
getSelect(id, idf, name, value) {
|
||
if ($('#' + idf).length > 0) {
|
||
|
||
$('#' + idf).fastselect().data('fastselect').destroy();
|
||
|
||
if (!this.isEmpty(value)) {
|
||
$('#' + idf).val(value);
|
||
} else {
|
||
$('#' + idf).val(null);
|
||
}
|
||
$('#' + idf).fastselect({
|
||
placeholder: name,
|
||
onItemCreate: function(item, model) {
|
||
if ($('#' + idf).find('option[value=' + model.value + ']').hasClass('bolt')) {
|
||
$(item).addClass('bolt');
|
||
}
|
||
},
|
||
onItemSelect: function(item, val) {
|
||
filtr.checkFiltr();
|
||
},
|
||
onItemDelete: function() {
|
||
filtr.checkFiltr();
|
||
}
|
||
});
|
||
}
|
||
},
|
||
|
||
setSelectReolad() {
|
||
|
||
this.getSelect('req_filter_emp_input', 'req_filter_emp', 'Ответственный', this.filtr.emp);
|
||
|
||
this.getSelect('filter-req-type-input', 'filter-req-type', 'Тип', this.filtr.type);
|
||
|
||
this.getSelect('req_filter_activities_input', 'req_filter_activities', 'Теги', this.filtr.activities);
|
||
|
||
this.getSelect('req_filter-source_input', 'req_filter-source', 'Источники', this.filtr.source);
|
||
|
||
this.getSelect('req_filter_partner_input', 'req_filter_partner', 'Партнеры', this.filtr.employee_id);
|
||
|
||
this.getSelect('req_denial_work_input', 'req_denial_work', 'Причина закрытия', this.filtr.denial);
|
||
|
||
this.getSelect('req_filter_period_input', 'req_filter_period', 'Период', this.filtr.period);
|
||
|
||
this.getSelect('req_filter_etap_input', 'req_filter_etap', 'Этап', this.filtr.step);
|
||
|
||
if (this.filtr.period == 'period') {
|
||
$('#reqOnDate').val(this.filtr.onDate);
|
||
$('#reqOffDate').val(this.filtr.offDate);
|
||
$('#reqDates').removeClass('hidden');
|
||
}
|
||
|
||
$('#contractReqOnDate').val(this.filtr.onDateContract);
|
||
$('#contractReqOffDate').val(this.filtr.offDateContract);
|
||
|
||
$('#dateStepReqOnDate').val(this.filtr.onDateStep);
|
||
$('#dateStepReqOffDate').val(this.filtr.offDateStep);
|
||
|
||
if (!this.isEmpty(this.filtr.fields)) {
|
||
|
||
for (var index in this.filtr.fields) {
|
||
if (index.indexOf('model') != -1) {
|
||
this.$set(this.tempModel, index, this.filtr.fields[index]);
|
||
}
|
||
}
|
||
}
|
||
},
|
||
|
||
getViews(){
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_view_page',
|
||
user_id: this.user_id,
|
||
}, ).then((response) => {
|
||
console.log(response.data);
|
||
this.viewUser = response.data.view;
|
||
this.view = response.data.view;
|
||
this.search();
|
||
}).catch(function(error) {
|
||
console.error(error);
|
||
})
|
||
},
|
||
|
||
setViews(view){
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'set_view_page',
|
||
user_id: this.user_id,
|
||
view: view
|
||
}, ).then((response) => {
|
||
console.log(response.data);
|
||
|
||
}).catch(function(error) {
|
||
console.error(error);
|
||
})
|
||
if(this.view != view) {
|
||
requisitions.view = view;
|
||
requisitions.getList();
|
||
}
|
||
this.viewUser = view;
|
||
this.view = view;
|
||
},
|
||
|
||
|
||
|
||
//Проверка на пустоту
|
||
isEmpty(data) {
|
||
if (typeof(data) === 'object') {
|
||
if (JSON.stringify(data) === '{}' || JSON.stringify(data) === '[]') {
|
||
return true;
|
||
} else if (!data) {
|
||
return true;
|
||
}
|
||
return false;
|
||
} else if (typeof(data) === 'string') {
|
||
if (!data.trim()) {
|
||
return true;
|
||
}
|
||
return false;
|
||
} else if (typeof(data) === 'undefined') {
|
||
return true;
|
||
} else {
|
||
return false;
|
||
}
|
||
},
|
||
|
||
},
|
||
mounted() {
|
||
|
||
if (document.location.pathname == '/requisitions.php') {
|
||
this.getTypesContract();
|
||
this.getPropertyType();
|
||
if (document.location.search && document.location.search.indexOf("resetFilter=1") < 0) {
|
||
if (localStorage['req_filter']) {
|
||
var req_filte = localStorage.getItem('req_filter');
|
||
//console.log(req_filte);
|
||
this.filtr = JSON.parse(req_filte);
|
||
this.setSelectReolad();
|
||
}
|
||
}
|
||
this.checkFiltr();
|
||
this.getViews();
|
||
|
||
|
||
/* if (localStorage['view_req']) {
|
||
this.view = localStorage['view_req'];
|
||
}*/
|
||
} else {
|
||
localStorage.removeItem('req_filter');
|
||
|
||
}
|
||
},
|
||
created: function() {
|
||
$(".crm_req").show();
|
||
|
||
}
|
||
})
|
||
}
|
||
|
||
|
||
if ($("#client_fields").length > 0) {
|
||
|
||
var client_fields = new Vue({
|
||
el: '#client_fields',
|
||
components: {
|
||
Multiselect: window.VueMultiselect.default,
|
||
vuejsDatepicker: window.vuejsDatepicker
|
||
},
|
||
data() {
|
||
return {
|
||
agency_id: $('#session_agency_id').val() || null,
|
||
user_id: $("#session_user_id").val(),
|
||
OpenIndicator: {
|
||
render: createElement => createElement('span', { class: { 'vueToggleSpan': true } }),
|
||
},
|
||
clientFields: [],
|
||
fieldModels: [],
|
||
client_id: 0,
|
||
}
|
||
},
|
||
methods: {
|
||
//Получение дополнительных полей
|
||
getClientFields() {
|
||
axios.post('/ajax/ajax_vue_fields.php', {
|
||
request: 'get_client_fields',
|
||
agency_id: this.agency_id,
|
||
client_id: this.client_id,
|
||
user_id: this.user_id
|
||
}).then((response) => {
|
||
//console.log(response.data);
|
||
this.clientFields = response.data.fields;
|
||
var values = response.data.values;
|
||
for (var i = 0; i < this.clientFields.length; i++) {
|
||
|
||
this.$set(this.fieldModels, 'model_' + this.clientFields[i].id, null);
|
||
if (this.clientFields[i].is_podgroup > 0) {
|
||
for (var j = 0; j < this.clientFields[i].podgroups.length; j++) {
|
||
this.$set(this.fieldModels, 'modelp_' + this.clientFields[i].podgroups[j].id, null);
|
||
}
|
||
}
|
||
}
|
||
for (var index in this.fieldModels) {
|
||
if (index.indexOf('model') != -1) {
|
||
|
||
if (!this.isEmpty(values[index])) {
|
||
|
||
this.fieldModels[index] = JSON.parse(values[index]);
|
||
}
|
||
}
|
||
}
|
||
//console.log(this.fieldModels);
|
||
|
||
}).catch(function(error) {
|
||
console.log(error);
|
||
});
|
||
},
|
||
|
||
|
||
//Добавить/изменить заявку
|
||
addEditFields(poles, client_id) {
|
||
var agencyID = $('#agencyIdClients').val();
|
||
|
||
axios.post('/ajax/ajax_vue_fields.php', {
|
||
request: 'add_edit',
|
||
client_id: client_id,
|
||
field_models: poles,
|
||
},
|
||
|
||
)
|
||
.then((response) => {
|
||
refreshCalendar();
|
||
console.log(response.data);
|
||
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
},
|
||
|
||
|
||
//Очистка формы
|
||
clearField() {
|
||
this.getReqFields();
|
||
this.client_id = 0;
|
||
},
|
||
|
||
//Поиск и сравнение
|
||
isFindValue(val1, val2){
|
||
let res = false;
|
||
|
||
if(!this.isEmpty(val2)){
|
||
if(Array.isArray(val2)){
|
||
for(let i=0; i<val2.length; i++){
|
||
if(val2[i] == val1){
|
||
res = true;
|
||
break;
|
||
}
|
||
}
|
||
} else {
|
||
if(val1 == val2){
|
||
res = true;
|
||
}
|
||
}
|
||
}
|
||
|
||
return res;
|
||
},
|
||
|
||
|
||
//Проверка на пустоту
|
||
isEmpty(data) {
|
||
if (typeof(data) === 'object') {
|
||
if (JSON.stringify(data) === '{}' || JSON.stringify(data) === '[]') {
|
||
return true;
|
||
} else if (!data) {
|
||
return true;
|
||
}
|
||
return false;
|
||
} else if (typeof(data) === 'string') {
|
||
if (!data.trim()) {
|
||
return true;
|
||
}
|
||
return false;
|
||
} else if (typeof(data) === 'undefined') {
|
||
return true;
|
||
} else {
|
||
return false;
|
||
}
|
||
},
|
||
|
||
},
|
||
mounted() {
|
||
|
||
},
|
||
created: function() {
|
||
$("#client_fields").removeClass("hidden");
|
||
this.getClientFields();
|
||
|
||
}
|
||
})
|
||
|
||
}
|
||
|
||
if ($("#client_fields_filtr").length > 0) {
|
||
var client_fields_filtr = new Vue({
|
||
el: '#client_fields_filtr',
|
||
components: {
|
||
Multiselect: window.VueMultiselect.default,
|
||
vuejsDatepicker: window.vuejsDatepicker
|
||
},
|
||
data() {
|
||
return {
|
||
agency_id: $('#session_agency_id').val() || null,
|
||
OpenIndicator: {
|
||
render: createElement => createElement('span', { class: { 'vueToggleSpan': true } }),
|
||
},
|
||
clientFields: [],
|
||
fieldModels: [],
|
||
client_id: 0,
|
||
types_contract: [],
|
||
filtr: {
|
||
fields: {},
|
||
is_contract: false,
|
||
numder_contract: null,
|
||
onDateContract: '',
|
||
offDateContract: '',
|
||
type_contract: [],
|
||
},
|
||
}
|
||
},
|
||
methods: {
|
||
//Получение дополнительных полей
|
||
getClientFields() {
|
||
axios.post('/ajax/ajax_vue_fields.php', {
|
||
request: 'get_client_fields',
|
||
agency_id: this.agency_id,
|
||
client_id: this.client_id,
|
||
}).then((response) => {
|
||
//console.log(response.data);
|
||
this.clientFields = response.data.fields;
|
||
var values = response.data.values;
|
||
for (var i = 0; i < this.clientFields.length; i++) {
|
||
|
||
this.$set(this.fieldModels, 'model_' + this.clientFields[i].id, null);
|
||
if (this.clientFields[i].is_podgroup > 0) {
|
||
for (var j = 0; j < this.clientFields[i].podgroups.length; j++) {
|
||
this.$set(this.fieldModels, 'modelp_' + this.clientFields[i].podgroups[j].id, null);
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
}).catch(function(error) {
|
||
console.log(error);
|
||
});
|
||
},
|
||
|
||
//Для кастомных фильтров
|
||
checkFields() {
|
||
//console.log(this.fieldModels);
|
||
this.filtr.fields = {};
|
||
if (!this.isEmpty(this.clientFields)) {
|
||
for (var i = 0; i < this.clientFields.length; i++) {
|
||
if (!this.isEmpty(this.fieldModels['model_' + this.clientFields[i].id]) && this.fieldModels['model_' + this.clientFields[i].id]) {
|
||
|
||
if (this.clientFields[i].type == 4) {
|
||
this.filtr.fields['model_' + this.clientFields[i].id] = 1;
|
||
} else {
|
||
this.filtr.fields['model_' + this.clientFields[i].id] = this.fieldModels['model_' + this.clientFields[i].id];
|
||
}
|
||
}
|
||
if (this.clientFields[i].is_podgroup > 0) {
|
||
for (var j = 0; j < this.clientFields[i].podgroups.length; j++) {
|
||
//console.log(this.fieldModels['modelp_11']);
|
||
if (!this.isEmpty(this.fieldModels['modelp_' + this.clientFields[i].podgroups[j].id]) && this.fieldModels['modelp_' + this.clientFields[i].podgroups[j].id]) {
|
||
if (this.clientFields[i].podgroups[j].type == 4) {
|
||
this.filtr.fields['modelp_' + this.clientFields[i].podgroups[j].id] = 1;
|
||
} else {
|
||
this.filtr.fields['modelp_' + this.clientFields[i].podgroups[j].id] = this.fieldModels['modelp_' + this.clientFields[i].podgroups[j].id];
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
var onDateContract = $('#contractClientOnDate').val();
|
||
this.filtr.onDateContract = onDateContract;
|
||
var offDateContract = $('#contractClientOffDate').val();
|
||
this.filtr.offDateContract = offDateContract;
|
||
if (document.location.pathname == '/clients.php') {
|
||
show_options_search();
|
||
page_kanban = 1;
|
||
add_knban = true;
|
||
//get_list();
|
||
}
|
||
|
||
},
|
||
|
||
//Типы договоров
|
||
getTypesContract() {
|
||
axios.post('/ajax/ajax_vue_contract.php', {
|
||
request: 'get_types_contract',
|
||
agency_id: this.agency_id,
|
||
}, )
|
||
.then((response) => {
|
||
this.types_contract = response.data;
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
},
|
||
|
||
|
||
//Очистка формы
|
||
clearField() {
|
||
this.getClientFields();
|
||
this.filtr.fields = {};
|
||
this.filtr.is_contract = false;
|
||
this.filtr.numder_contract = null;
|
||
this.filtr.onDateContract = '';
|
||
this.filtr.offDateContract = '';
|
||
this.filtr.onDateStep = '';
|
||
this.filtr.offDateStep = '';
|
||
this.filtr.type_contract = [];
|
||
$('#contractClientOnDate').val('');
|
||
$('#contractClientOffDate').val('');
|
||
$('#dateStepReqOnDate').val('');
|
||
$('#dateStepReqOffDate').val('');
|
||
},
|
||
|
||
|
||
//Проверка на пустоту
|
||
isEmpty(data) {
|
||
if (typeof(data) === 'object') {
|
||
if (JSON.stringify(data) === '{}' || JSON.stringify(data) === '[]') {
|
||
return true;
|
||
} else if (!data) {
|
||
return true;
|
||
}
|
||
return false;
|
||
} else if (typeof(data) === 'string') {
|
||
if (!data.trim()) {
|
||
return true;
|
||
}
|
||
return false;
|
||
} else if (typeof(data) === 'undefined') {
|
||
return true;
|
||
} else {
|
||
return false;
|
||
}
|
||
},
|
||
|
||
},
|
||
mounted() {
|
||
|
||
},
|
||
created: function() {
|
||
$("#client_fields_filtr").removeClass("hidden");
|
||
this.getClientFields();
|
||
this.getTypesContract();
|
||
}
|
||
})
|
||
|
||
}
|
||
|
||
//Для клиентов в add_object.php
|
||
if ($('#object-new-client-input-vue').length > 0) {
|
||
var object_new_client_input_vue = new Vue({
|
||
el: '#object-new-client-input-vue',
|
||
components: {
|
||
// Multiselect: window.VueMultiselect.default,
|
||
//vuejsDatepicker: window.vuejsDatepicker
|
||
},
|
||
data() {
|
||
return {
|
||
OpenIndicator: {
|
||
render: createElement => createElement('span', { class: { 'vueToggleSpan': true } }),
|
||
},
|
||
clients: [],
|
||
client_id: 0,
|
||
spinner: true,
|
||
clientSelect: [],
|
||
debounceTimer: null,
|
||
}
|
||
},
|
||
methods: {
|
||
selectClientList() {
|
||
//console.log(selectedOption);
|
||
this.client_id = 0;
|
||
//console.log(this.clientSelect);
|
||
//bindObjReq();
|
||
if (!isEmpty(this.clientSelect)) {
|
||
this.client_id = this.clientSelect[this.clientSelect.length - 1].id;
|
||
bindObjReq(this.client_id);
|
||
this.setValueInput();
|
||
|
||
} else {
|
||
this.client_id = 0;
|
||
this.setValueInput();
|
||
}
|
||
},
|
||
|
||
setValueInput() {
|
||
var values = [];
|
||
for (var i = 0; i < this.clientSelect.length; i++) {
|
||
values.push(this.clientSelect[i].id);
|
||
|
||
}
|
||
$("#object-new-client-vue").val(JSON.stringify(values));
|
||
},
|
||
getClientsList(search, loading) {
|
||
// console.log(typeof loading);
|
||
if (typeof loading == 'function') {
|
||
loading(true);
|
||
}
|
||
var search_val = '';
|
||
if (!isEmpty(search)) {
|
||
search_val = search;
|
||
}
|
||
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_clients_list',
|
||
search: search_val,
|
||
})
|
||
.then((response) => {
|
||
// console.log(response.data);
|
||
this.clients = response.data;
|
||
if (typeof loading == 'function') {
|
||
loading(false);
|
||
}
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
},
|
||
getClientsListNew(search, loading) {
|
||
|
||
clearTimeout(this.debounceTimer);
|
||
this.debounceTimer = setTimeout(() => this.getClientsList(search, loading), 500);
|
||
|
||
},
|
||
|
||
search_client(client_id) {
|
||
// console.log(client_id);
|
||
if (parseInt(client_id) > 0) {
|
||
// $("#object-new-client-vue").val(client_id);
|
||
axios.post('/ajax/ajax_vue_requisitions.php', {
|
||
request: 'get_client',
|
||
client_id: client_id
|
||
}, )
|
||
.then((response) => {
|
||
console.log(response.data);
|
||
var this_client = response.data;
|
||
var index = this.clientSelect.length;
|
||
this.$set(this.clientSelect, index, { id: client_id, color: '#000', name: this_client.text, fio: this_client.fio });
|
||
this.setValueInput();
|
||
|
||
})
|
||
.catch(function(error) {
|
||
console.error(error);
|
||
});
|
||
}
|
||
},
|
||
|
||
checkClient() {
|
||
|
||
var clientsId = JSON.parse($("#object-new-client-vue").val());
|
||
// console.log(clientsId.length);
|
||
if (clientsId.length > 0) {
|
||
for (var i = 0; i < clientsId.length; i++) {
|
||
this.clientId = clientsId[i];
|
||
this.search_client(clientsId[i]);
|
||
}
|
||
}
|
||
|
||
}
|
||
},
|
||
|
||
mounted() {
|
||
|
||
},
|
||
created: function() {
|
||
|
||
this.getClientsList();
|
||
this.checkClient();
|
||
$("#object-new-client-input-vue").closest('.klient').removeClass("hidden");
|
||
}
|
||
})
|
||
|
||
//console.log(typeof object_new_client_input_vue);
|
||
|
||
} |