diff --git a/assets/css/main.css b/assets/css/main.css index 1dd75f8..bb28f8a 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -3389,7 +3389,7 @@ input[type="checkbox"]:checked + span { float: left; margin: 24px 0 0 0; padding: 0 15px; - border-bottom: 1px solid #BEBEBE; + /*border-bottom: 1px solid #BEBEBE;*/ text-align: center; } @@ -6033,11 +6033,17 @@ input[type="radio"]{ .addWork, .upload2, .documentsChat a{ transition: all 0.3s; } -.changeBlock1 > a:hover, .changeBlock2 > a:hover, .addWork:hover, +.changeBlock1 > a:hover, .addWork:hover, .upload2:hover, .documentsChat a:hover{ box-shadow: 0 0 15px rgba(0, 0, 0, 0.8); -webkit-transform: scale(1.04); -moz-transform: scale(1.04); transform: scale(1.04); } +.changeBlock2 > a:hover{ + box-shadow: 0 0 15px rgba(255, 255, 255, 0.8); + -webkit-transform: scale(1.04); + -moz-transform: scale(1.04); + transform: scale(1.04); +} /*end_new*/ diff --git a/assets/js/chat.js b/assets/js/chat.js index b05cd8a..3bb7d75 100644 --- a/assets/js/chat.js +++ b/assets/js/chat.js @@ -184,38 +184,60 @@ function dialog (message, yesCallback, notCallback) { $("a[href='#tab1']").trigger('click'); } - $("#trashed-button").on('click',function(e){ - e.preventDefault(); - var trashedOrderHtml = ""; + + + $(".messageBlock").on('click','.trashedOrderBlock',function(){ + $("#chat-order-add").css("display", "none"); + $('.order-block, .trashedOrderBlock').each(function () { + $(this).removeClass('orAct'); + }); + $(this).addClass('orAct'); + var inbox = document.getElementById('message-chat-order-space'); + var docList = document.getElementById('documentOrderSpace'); + inbox.innerHTML = ''; + docList.innerHTML = ''; + var orderId = $(this).attr('data-id'); + location.hash = '#order' + orderId; + $.ajax({ - url: '/api/orders/', + url: '/api/message', type: 'GET', + data: {csrfmiddlewaretoken: csrftoken, 'order': orderId, 'team__isnull': 'true'}, dataType: 'json', - success: function(json){ - console.log(json.results); - $.each(json.results, function(i, v){ - var temp = '
' + - '

'+ v.project.name +'

' + - 'Исполнитель:

' + - '' + - 'Полное описание заказа
'; - - trashedOrderHtml += temp; + success: function (json) { + $.each(json.results, function (i, v) { + var senderName = 'Вы'; + var className = 'youChat'; + + if (v.sender.id !== userId) { + senderName = v.sender.username; + className = ''; + } + + inbox.innerHTML += '
' + + '

' + senderName + '

' + v.created + '
' + + '

' + v.text + '

'; + }); - $("#trashed-orders").html(trashedOrderHtml); - }, - error: function(e, jqxhr){ - console.log(e); + var height = inbox.scrollHeight; + inbox.scrollTop = height; } - }) + }); + + $("#order-stages").html(""); + $("#completeWork").hide(); + $("#add-form-order-note").hide(); + }); // Информация о заказе - $(".full-order-info").click('on', function (e) { + $(".messageBlock").on('click','.full-order-info', function (e) { e.preventDefault(); e.stopPropagation(); var orderId = $(this).closest('.orderBlock').attr('data-id'); + if (!orderId){ + orderId = $(this).closest('.trashedOrderBlock').attr('data-id'); + } $.ajax({ url: '/api/orders/' + orderId + '/', data: { diff --git a/assets/js/chat_customer.js b/assets/js/chat_customer.js index d614782..97779b4 100644 --- a/assets/js/chat_customer.js +++ b/assets/js/chat_customer.js @@ -408,9 +408,55 @@ $(function () { } }); + + $("#trashed-button").on('click',function(e){ + e.preventDefault(); + var state = $(this).attr('data-show'); + var trashedOrderHtml = ""; + + if (state == 'true') { + $(this).attr('data-show','false'); + $(this).text("Скрыть архивные заказы"); + + $.ajax({ + url: '/api/orders/', + type: 'GET', + dataType: 'json', + success: function (json) { + console.log(json.results); + $.each(json.results, function (i, v) { + + var temp = '
' + + '

' + v.project.name + '

' + + 'Исполнитель:'+ v.contractor_name +'

' + + '' + + 'Полное описание заказа
'; + + trashedOrderHtml += temp; + }); + $("#trashed-orders").html(trashedOrderHtml); + + }, + error: function (e, jqxhr) { + console.log(e); + } + }); + + }else { + $(this).attr('data-show','true'); + $(this).text("Показать архивные заказы"); + $("#trashed-orders").html(""); + } + + + }); + + // Для заказов все вытащить $('.order-block').on('click', function () { $("#chat-order-add").css("display", "block"); + $("#add-form-order-note").css("display", "block"); $("#formsetStage").css("display", "block"); $('.order-block').each(function () { diff --git a/chat/chat.py b/chat/chat.py index 5d1eda1..3d6ab48 100644 --- a/chat/chat.py +++ b/chat/chat.py @@ -43,17 +43,16 @@ class ChatHandler(websocket.WebSocketHandler): @gen.coroutine def approve_stages(self, data): - print(data) data['data']['chat_message'] = data['data']['msg'] self.add_message(data) - sender_id = data['data']['sender_id'] - recipent_id = data['data']['recipent_id'] - order_id = data['data'].get('order_id') - message = data['data'].get('msg', 'Этапы обновлены') - answer_type = data['format_type'] - waiters = tuple(w for c, w in self.waiters if c == recipent_id or c == sender_id) - for waiter in waiters: - waiter.write_message({'msg': message, 'order_id': order_id, 'answer_type': answer_type}) + # sender_id = data['data']['sender_id'] + # recipent_id = data['data']['recipent_id'] + # order_id = data['data'].get('order_id') + # message = data['data'].get('msg', 'Этапы обновлены') + # answer_type = data['format_type'] + # waiters = tuple(w for c, w in self.waiters if c == recipent_id or c == sender_id) + # for waiter in waiters: + # waiter.write_message({'msg': message, 'order_id': order_id, 'answer_type': answer_type}) @gen.coroutine def add_message(self, message_data): @@ -71,8 +70,10 @@ class ChatHandler(websocket.WebSocketHandler): docs_links = '' docs_attach = '' - message = html.escape(message) - message = message.replace('\n', '
') + message_type = message_data.get('message_type', None) + if not message_type: + message = html.escape(message) + message = message.replace('\n', '
') answer_type = message_data['format_type'] private_type = 'true' if not order_id and not team_id else 'false' diff --git a/chat/templates/chat_customer.html b/chat/templates/chat_customer.html index bdbdf87..629f840 100644 --- a/chat/templates/chat_customer.html +++ b/chat/templates/chat_customer.html @@ -148,17 +148,17 @@ {% endfor %}
- Показать архивные заказы + Показать архивные заказы
-

Архивные заказы

+

Архивные заказы

- +
-
+ diff --git a/projects/serializers.py b/projects/serializers.py index 3ffbe97..5266ea5 100755 --- a/projects/serializers.py +++ b/projects/serializers.py @@ -204,6 +204,7 @@ class OrderSerializer(ModelSerializer): stages = StageSerializer(many=True, read_only=True) project = ProjectSerializer(read_only=True) has_user_review = serializers.SerializerMethodField(read_only=True) + contractor_name = serializers.SerializerMethodField(read_only=True) class Meta: model = Order @@ -219,9 +220,18 @@ class OrderSerializer(ModelSerializer): 'has_user_review', 'stages', 'project', + 'contractor_name', ) - def get_has_user_review(self,obj): + def get_contractor_name(self, obj): + if obj.contractor: + return obj.contractor.get_full_name() or obj.contractor.username + elif obj.team: + return obj.team.owner.get_full_name() or obj.team.owner.username + else: + return 'Исполнитель не определен' + + def get_has_user_review(self, obj): curr_user = self.context['request'].user if curr_user.is_customer(): return curr_user.customer_reviews.filter(project=obj.project).exists() diff --git a/templates/partials/base.html b/templates/partials/base.html index 6530a3f..9211d34 100644 --- a/templates/partials/base.html +++ b/templates/partials/base.html @@ -90,7 +90,6 @@ var sock = new WebSocket(url); var intervalId; sock.onopen = function () { - //console.log("Start connect"); intervalId = setInterval(function () { sock.send('{"dummy": 1}'); }, 15000); @@ -104,7 +103,6 @@ }else if((notificationData.answer_type == 'approve_stages') || (notificationData.answer_type == 'add_message_order')){ outMessage += ""+ notificationData.msg +""; } - $.jGrowl("Вам пришло новое сообщение!
" + outMessage, { life: 15000}); }; this.add_message = function (messageData) { diff --git a/users/templates/contractor_filter.html b/users/templates/contractor_filter.html index 359e63c..8401561 100644 --- a/users/templates/contractor_filter.html +++ b/users/templates/contractor_filter.html @@ -214,7 +214,7 @@ {% endif %}
  • - + написать сообщение
  • @@ -335,7 +335,7 @@ {% endif %}
  • - + написать сообщение
  • diff --git a/users/templates/contractor_office.html b/users/templates/contractor_office.html index b6785a2..ea74d44 100644 --- a/users/templates/contractor_office.html +++ b/users/templates/contractor_office.html @@ -298,10 +298,8 @@ var $moreWorkSellsfBtn = $('.-more-work-sells-btn').first() var workSellAbsUrl = '/work_sell/' - var contractorId = - {{ contractor.pk }} - var teamId = - {{ contractor.team.pk }} + var contractorId ={{ contractor.pk }} + var teamId ={{ contractor.team.pk }} var contractorIds = [contractorId] var portfUrl = new URI('/api/portfolios/') @@ -387,11 +385,11 @@ if (res.status === 'success') { socketMain.add_message({ format_type: 'add_message_contact', - + message_type: 'invite_team', data: { sender_id: '{{ contractor.pk }}', recipent_id: String(contractor2Id), - chat_message: 'Приглашаю в группу http://{{ request.get_host }}{% url 'users:accept-team-invitation' owner_id=contractor.pk %}', + chat_message: 'Приглашаю в группу http://{{ request.get_host }}{% url 'users:accept-team-invitation' owner_id=contractor.pk %}', }, }) diff --git a/users/templates/contractor_profile.html b/users/templates/contractor_profile.html index b9564a6..a6d41c0 100644 --- a/users/templates/contractor_profile.html +++ b/users/templates/contractor_profile.html @@ -44,7 +44,7 @@ {% if contractor.pk != request.user.pk %}
  • - + написать сообщение diff --git a/users/templates/partials/customer_profile_info_block.html b/users/templates/partials/customer_profile_info_block.html index eef5778..74f1522 100644 --- a/users/templates/partials/customer_profile_info_block.html +++ b/users/templates/partials/customer_profile_info_block.html @@ -34,7 +34,7 @@
    {% if request.user.pk != customer.pk %} показать контакты - написать сообщение + написать сообщение {% else %} редактировать профиль {% endif %} diff --git a/users/templates/team_profile.html b/users/templates/team_profile.html index 5575c10..1e8652c 100644 --- a/users/templates/team_profile.html +++ b/users/templates/team_profile.html @@ -77,7 +77,7 @@
    Занят
    {% endif %} - написать сообщение + написать сообщение