|
|
|
@ -108,7 +108,7 @@ |
|
|
|
<p>Заказы</p> |
|
|
|
<p>Заказы</p> |
|
|
|
{% for order in orders %} |
|
|
|
{% for order in orders %} |
|
|
|
<div class="orderBlock box-sizing order-block" |
|
|
|
<div class="orderBlock box-sizing order-block" |
|
|
|
data-recipent-id="{{ order.project.customer.pk }}" data-id="{{ order.id }}"> |
|
|
|
id="orderBlock{{ order.id }}" data-recipent-id="{{ order.project.customer.pk }}" data-id="{{ order.id }}"> |
|
|
|
<span class="dimovChat"></span> |
|
|
|
<span class="dimovChat"></span> |
|
|
|
<p class="titleOB">{{ order }}</p> |
|
|
|
<p class="titleOB">{{ order }}</p> |
|
|
|
<div class="hideOBB"> |
|
|
|
<div class="hideOBB"> |
|
|
|
@ -147,16 +147,17 @@ |
|
|
|
<div class="stepssBlock box-sizing disTab"> |
|
|
|
<div class="stepssBlock box-sizing disTab"> |
|
|
|
<p class="titleStepss">1 / Согласование условий</p> |
|
|
|
<p class="titleStepss">1 / Согласование условий</p> |
|
|
|
<p class="textStepss"> |
|
|
|
<p class="textStepss"> |
|
|
|
Обсуджение задания и условий выполнения работы. Подтверждение заказа исполнителем. |
|
|
|
Обсуджение задания и условий выполнения работы. |
|
|
|
|
|
|
|
Подтверждение заказа исполнителем. |
|
|
|
</p> |
|
|
|
</p> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div id="order-stages"></div> |
|
|
|
<div id="order-stages"></div> |
|
|
|
|
|
|
|
|
|
|
|
<div class="stepssBlock box-sizing disTab"> |
|
|
|
<div class="stepssBlock box-sizing disTab" id="reserveSpace" style="display:none;"> |
|
|
|
<p class="titleStepss">2 / Резервирование</p> |
|
|
|
<p class="titleStepss">2 / Резервирование</p> |
|
|
|
<p class="textStepss"> |
|
|
|
<p class="textStepss"> |
|
|
|
Резервирование заказчиком суммы оплаты по заказ. Деньги перечисляются и хранятся на |
|
|
|
Резервирование заказчиком суммы оплаты по заказ. |
|
|
|
сайте. |
|
|
|
Деньги перечисляются и хранятся на сайте. |
|
|
|
</p> |
|
|
|
</p> |
|
|
|
<ul class="stages-paid"></ul> |
|
|
|
<ul class="stages-paid"></ul> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@ -293,6 +294,7 @@ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var url = '/work_sell/basic/'; |
|
|
|
var url = '/work_sell/basic/'; |
|
|
|
|
|
|
|
//Загрузка документов |
|
|
|
$('#upload-document-team').fileupload({ |
|
|
|
$('#upload-document-team').fileupload({ |
|
|
|
url: url, |
|
|
|
url: url, |
|
|
|
crossDomain: false, |
|
|
|
crossDomain: false, |
|
|
|
@ -325,12 +327,11 @@ |
|
|
|
}).prop('disabled', !$.support.fileInput) |
|
|
|
}).prop('disabled', !$.support.fileInput) |
|
|
|
.parent().addClass($.support.fileInput ? undefined : 'disabled'); |
|
|
|
.parent().addClass($.support.fileInput ? undefined : 'disabled'); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Согласование этапов |
|
|
|
$("#order-stages").on('click', "#approve-stages", function (e) { |
|
|
|
$("#order-stages").on('click', "#approve-stages", function (e) { |
|
|
|
e.preventDefault(); |
|
|
|
e.preventDefault(); |
|
|
|
$(".stage-block-approve").each(function () { |
|
|
|
$(".stage-block-approve").each(function () { |
|
|
|
var stageId = $(this).attr('data-id'); |
|
|
|
var stageId = $(this).attr('data-id'); |
|
|
|
|
|
|
|
|
|
|
|
$.ajax({ |
|
|
|
$.ajax({ |
|
|
|
url: '/api/stages/' + stageId + '/', |
|
|
|
url: '/api/stages/' + stageId + '/', |
|
|
|
type: 'PATCH', |
|
|
|
type: 'PATCH', |
|
|
|
@ -341,6 +342,7 @@ |
|
|
|
dataType: 'json', |
|
|
|
dataType: 'json', |
|
|
|
success: function (json) { |
|
|
|
success: function (json) { |
|
|
|
console.log(json); |
|
|
|
console.log(json); |
|
|
|
|
|
|
|
|
|
|
|
}, |
|
|
|
}, |
|
|
|
error: function (e) { |
|
|
|
error: function (e) { |
|
|
|
console.log('error'); |
|
|
|
console.log('error'); |
|
|
|
@ -349,6 +351,18 @@ |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
var orderId = $(this).attr('data-order-id'); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
socket.send_stages_approve({ |
|
|
|
|
|
|
|
"format_type": "approve_stages", |
|
|
|
|
|
|
|
"data": { |
|
|
|
|
|
|
|
"sender_id": $(this).attr('data-sender-id'), |
|
|
|
|
|
|
|
"recipent_id": $(this).attr('data-recipent-id'), |
|
|
|
|
|
|
|
"order_id": orderId, |
|
|
|
|
|
|
|
"msg": "Исполнитель согласовал этапы для заказа " + orderId, |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
$(".team-chat-user").on('click', function (e) { |
|
|
|
$(".team-chat-user").on('click', function (e) { |
|
|
|
@ -449,57 +463,80 @@ |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
$.ajax({ |
|
|
|
$.ajax({ |
|
|
|
url: '/api/stages/', |
|
|
|
url:'/api/orders/' + orderId + '/', |
|
|
|
type: 'GET', |
|
|
|
type: 'GET', |
|
|
|
data: {csrfmiddlewaretoken: csrftoken, 'order': orderId}, |
|
|
|
data:{csrfmiddlewaretoken: csrftoken}, |
|
|
|
dataType: 'json', |
|
|
|
dataType: 'json', |
|
|
|
success: function (json) { |
|
|
|
|
|
|
|
console.log(json.results); |
|
|
|
}).then(function(data){ |
|
|
|
var htmlInbox = ""; |
|
|
|
var htmlInbox = ""; |
|
|
|
var stagesReservedHtml = ""; |
|
|
|
var stagesReservedHtml = ""; |
|
|
|
var stagesPaidProcess = []; |
|
|
|
var stagesPaidProcess = []; |
|
|
|
if (json.results.length > 0) { |
|
|
|
var stagesInWork = []; |
|
|
|
|
|
|
|
var stagesResults = data.stages; |
|
|
|
$.each(json.results, function (i, v) { |
|
|
|
var statusNotAgreed = false; |
|
|
|
|
|
|
|
if (stagesResults.length > 0) { |
|
|
|
|
|
|
|
$.each(stagesResults, function (i, v) { |
|
|
|
|
|
|
|
if(v.status == "not_agreed"){ |
|
|
|
|
|
|
|
statusNotAgreed = true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if(!data.secure){ |
|
|
|
|
|
|
|
if(v.status == "in_process"){ |
|
|
|
|
|
|
|
stagesInWork.push(v); |
|
|
|
|
|
|
|
|
|
|
|
if ((v.status == "in_process") && (v.is_paid)){ |
|
|
|
} |
|
|
|
|
|
|
|
} else if ((v.status == "in_process") && (v.is_paid)){ |
|
|
|
stagesPaidProcess.push(v); |
|
|
|
stagesPaidProcess.push(v); |
|
|
|
|
|
|
|
stagesInWork.push(v); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (v.is_paid) { |
|
|
|
if (v.is_paid) { |
|
|
|
stagesReservedHtml += '<li class="reserved">Сумма за этап ' + v.pos + '.Зарезервирована.</li>'; |
|
|
|
stagesReservedHtml += '<li class="reserved">Сумма за этап ' + v.pos + '.Зарезервирована.</li>'; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
stagesReservedHtml += '<li class="unreserved">Сумма за этап ' + v.pos + '.Не зарезервирована.</li>'; |
|
|
|
stagesReservedHtml += '<li class="unreserved">Сумма за этап ' + v.pos + '.Не зарезервирована.</li>'; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
htmlInbox += '<div data-id="' + v.id + '" class="numberStepp box-sizing stage-block-approve"><div class="insetNumStepp">' + |
|
|
|
htmlInbox += '<div data-id="' + v.id + '" class="numberStepp box-sizing stage-block-approve"><div class="insetNumStepp">' + |
|
|
|
'<p class="titleNumStepp"><span>Этап ' + v.pos + '</span>' + v.name + '</p>' + |
|
|
|
'<p class="titleNumStepp"><span>Этап ' + v.pos + '</span>' + v.name + '</p>' + |
|
|
|
'<p class="textNumStepp">Результаты этапа:' + v.result + '</p><div>' + |
|
|
|
'<p class="textNumStepp">Результаты этапа:' + v.result + '</p><div>' + |
|
|
|
'<p>' + v.term + '</p><span>' + v.cost + '<i class="fa fa-rub"></i></span></div></div></div>'; |
|
|
|
'<p>' + v.term + '</p><span>' + v.cost + '<i class="fa fa-rub"></i></span></div></div></div>'; |
|
|
|
}); |
|
|
|
}); |
|
|
|
htmlInbox += '<div class="textAreaBlock2 FFD box-sizing disTab"><a id="approve-stages" href="#">согласовать</a></div>'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (statusNotAgreed) { |
|
|
|
|
|
|
|
htmlInbox += '<div class="textAreaBlock2 FFD box-sizing disTab">' + |
|
|
|
|
|
|
|
'<a id="approve-stages" data-sender-id="{{ request.user.pk }}" data-recipent-id="' + recipentId + '"' + |
|
|
|
|
|
|
|
' data-order-id="' + orderId + '" href="#">согласовать</a></div>'; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$("#order-stages").html(htmlInbox); |
|
|
|
$("#order-stages").html(htmlInbox); |
|
|
|
$(".stages-paid").html(stagesReservedHtml); |
|
|
|
$(".stages-paid").html(stagesReservedHtml); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (stagesInWork.length > 0){ |
|
|
|
if (stagesPaidProcess.length > 0){ |
|
|
|
|
|
|
|
$("#completeWork").show(); |
|
|
|
$("#completeWork").show(); |
|
|
|
var stage = stagesPaidProcess[0]; |
|
|
|
var stage = stagesInWork[0]; |
|
|
|
var stageWork = '<p>В работе '+ stage.name +'</p> ' + |
|
|
|
var stageWork = '<p>В работе '+ stage.name +'</p> ' + |
|
|
|
'<p>Результат этапа : '+ stage.result +'</p>' + |
|
|
|
'<p>Результат этапа : '+ stage.result +'</p>' + |
|
|
|
'<p>Срок сдачи 25.08.2016 <b>' + stage.cost + 'р.</b></p>' + |
|
|
|
'<p>Срок сдачи '+ stage.term +' <b>' + stage.cost + 'р.</b></p>'; |
|
|
|
'<a href="#" class="closeStage" data-stage-id="'+ stage.id +'">Завершить этап</a>' + |
|
|
|
|
|
|
|
'<a href="#">Обратитьсяв арбитраж</a>'; |
|
|
|
if(!stage.close_contractor){ |
|
|
|
|
|
|
|
stageWork += '<a href="#" class="closeStage" data-sender-id="{{ request.user.pk }}" data-recipent-id="'+ recipentId+'"' + |
|
|
|
|
|
|
|
' data-order-id="'+ data.id +'" data-stage-id="'+ stage.id +'">Завершить этап</a>'; |
|
|
|
|
|
|
|
}else{ |
|
|
|
|
|
|
|
stageWork += '<p>Этап ожидает завершения статуса от заказчика</p>'; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
stageWork += '<a href="#">Обратитьсяв арбитраж</a>'; |
|
|
|
$("#stagesWork").html(stageWork); |
|
|
|
$("#stagesWork").html(stageWork); |
|
|
|
}else{ |
|
|
|
}else{ |
|
|
|
$("#completeWork").hide(); |
|
|
|
$("#completeWork").hide(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Добавить заметку. |
|
|
|
$('#add-note-button').on('click', function (e) { |
|
|
|
$('#add-note-button').on('click', function (e) { |
|
|
|
e.preventDefault(); |
|
|
|
e.preventDefault(); |
|
|
|
$.ajax({ |
|
|
|
$.ajax({ |
|
|
|
@ -525,6 +562,7 @@ |
|
|
|
$('#tab2').on('click','.closeStage', function(e){ |
|
|
|
$('#tab2').on('click','.closeStage', function(e){ |
|
|
|
e.preventDefault(); |
|
|
|
e.preventDefault(); |
|
|
|
var stageId = $(this).attr('data-stage-id'); |
|
|
|
var stageId = $(this).attr('data-stage-id'); |
|
|
|
|
|
|
|
var _this = $(this); |
|
|
|
$.ajax({ |
|
|
|
$.ajax({ |
|
|
|
url: '/api/stages/' + stageId + '/', |
|
|
|
url: '/api/stages/' + stageId + '/', |
|
|
|
type: 'PATCH', |
|
|
|
type: 'PATCH', |
|
|
|
@ -534,7 +572,17 @@ |
|
|
|
data: "close_contractor=True", |
|
|
|
data: "close_contractor=True", |
|
|
|
dataType: 'json', |
|
|
|
dataType: 'json', |
|
|
|
success: function (json) { |
|
|
|
success: function (json) { |
|
|
|
alert(json); |
|
|
|
|
|
|
|
|
|
|
|
socket.send_stages_approve({ |
|
|
|
|
|
|
|
"format_type": "approve_stages", |
|
|
|
|
|
|
|
"data": { |
|
|
|
|
|
|
|
"sender_id": _this.attr('data-sender-id'), |
|
|
|
|
|
|
|
"recipent_id": _this.attr('data-recipent-id'), |
|
|
|
|
|
|
|
"order_id": _this.attr('data-order-id'), |
|
|
|
|
|
|
|
"msg": "Исполнитель завершил этап " + json.name, |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
console.log(json); |
|
|
|
console.log(json); |
|
|
|
}, |
|
|
|
}, |
|
|
|
error: function (e) { |
|
|
|
error: function (e) { |
|
|
|
|