销售人员数据统计

sso
cxt 5 years ago
parent a968fe1e4c
commit c0b7273126

@ -3,19 +3,11 @@ $(document).on('turbolinks:load', function() {
// ============= 添加销售人员 ============== // ============= 添加销售人员 ==============
var $addMemberModal = $('.admin-add-salesman-channel-user-modal'); var $addMemberModal = $('.admin-add-salesman-channel-user-modal');
var searchscForm = $(".saleman-channel-list-form .search-form");
var scFormUrl = searchscForm.data('data-search-form-url');
var $addMemberForm = $addMemberModal.find('.admin-add-salesman-channel-user-form'); var $addMemberForm = $addMemberModal.find('.admin-add-salesman-channel-user-form');
var $memberSelect = $addMemberModal.find('.salesman-channel-user-select'); var $memberSelect = $addMemberModal.find('.salesman-channel-user-select');
var $salesmanIdInput = $('.salesman-channel-list-form').find(".btn-primary"); var $form = $addMemberModal.find('form.admin-add-salesman-user-form');
var $start_time = $('#start_time');
var $end_time = $('#end_time');
$addMemberModal.on('show.bs.modal', function(event){ $addMemberModal.on('show.bs.modal', function(event){
var $link = $(event.relatedTarget);
// var salesmanId = $link.data('salesman_id');
// $salesmanIdInput.val(salesmanId);
$memberSelect.select2('val', ' '); $memberSelect.select2('val', ' ');
}); });
@ -52,12 +44,12 @@ $(document).on('turbolinks:load', function() {
// var salesmanId = $salesmanIdInput.val(); // var salesmanId = $salesmanIdInput.val();
var memberIds = $memberSelect.val(); var memberIds = $memberSelect.val();
if (memberIds && memberIds.length > 0) { if (memberIds && memberIds.length > 0) {
alert(start_time); var url = $form.data('url');
$.ajax({ $.ajax({
method: 'POST', method: 'POST',
dataType: 'json', dataType: 'json',
url: '/admins/salesman_channels/batch_add', url: url,
data: { salesman_id: $salesmanIdInput.data("salesman-id"), school_ids: memberIds }, data: $form.serialize(),
success: function(){ success: function(){
$.notify({ message: '创建成功' }); $.notify({ message: '创建成功' });
$addMemberModal.modal('hide'); $addMemberModal.modal('hide');
@ -68,7 +60,7 @@ $(document).on('turbolinks:load', function() {
}, },
error: function(res){ error: function(res){
var data = res.responseJSON; var data = res.responseJSON;
$form.find('.error').html(data.message); $addMemberForm.find('.error').html(data.message);
} }
}); });
} else { } else {
@ -76,6 +68,16 @@ $(document).on('turbolinks:load', function() {
} }
}); });
// 搜索
var searchscForm = $(".saleman-channel-list-form .search-form");
// 清空
searchscForm.on('click', '.clear-btn', function () {
searchscForm.find('.start_date').val('');
searchscForm.find('.end_date').val('').trigger('change');
searchscForm.find('input[name="keyword"]').val('');
});
// 时间跨度 // 时间跨度
var baseOptions = { var baseOptions = {
autoclose: true, autoclose: true,
@ -102,8 +104,8 @@ $(document).on('turbolinks:load', function() {
}); });
var submitForm = function(){ var submitForm = function(){
var url = searchscForm.data('search-form-url');
var form = searchscForm; var form = searchscForm;
var url = "/admins/salesman_channels";
$.ajax({ $.ajax({
url: url, url: url,
data: form.serialize(), data: form.serialize(),

@ -2,10 +2,12 @@ class Admins::SalesmanChannelsController < Admins::BaseController
before_action :set_salesman before_action :set_salesman
def index def index
@channels = SalesmanChannel.all @channels = @salesman.salesman_channels
@start_time = params[:start_time] if params[:keyword].present?
@end_time = params[:end_time] || Time.now @channels = @channels.joins(:school).where("schools.name like ?", "%#{params[:keyword]}%")
@keyword = params[:keyword] end
@start_time = params[:start_date]
@end_time = params[:end_date].blank? ? Time.now : params[:end_date]
end end
def batch_add def batch_add
@ -17,6 +19,8 @@ class Admins::SalesmanChannelsController < Admins::BaseController
@salesman.salesman_channels.create!(school_id: school.id) @salesman.salesman_channels.create!(school_id: school.id)
end end
render_ok render_ok
rescue Exception => ex
render_error(ex.message)
end end
def destroy def destroy

@ -6,22 +6,20 @@ class SalesmanChannel < ApplicationRecord
school.name school.name
end end
def teacher_count(start_time, end_time, keyword) def teacher_count(start_time, end_time)
UserExtension.joins(:school).where("schools.name like '%#{keyword}%' and user_extensions.identity=0 UserExtension.where("identity = 0 and school_id = #{school_id} and created_at between '#{start_time}' and '#{end_time}'").count
and user_extensions.created_at between '#{start_time}' and '#{end_time}'").count
# UserExtension.where(school_id: school_id).where(query).count # UserExtension.where(school_id: school_id).where(query).count
end end
def student_count(start_time, end_time, keyword) def student_count(start_time, end_time)
UserExtension.joins(:school).where("schools.name like '%#{keyword}%' and user_extensions.identity=1 UserExtension.where("identity = 1 and school_id = #{school_id} and created_at between '#{start_time}' and '#{end_time}'").count
and user_extensions.created_at between '#{start_time}' and '#{end_time}'").count
end end
def course_count(start_time, end_time, keyword) def course_count(start_time, end_time)
Course.joins(:school).where("schools.name like '%#{keyword}%' and courses.created_at between '#{start_time}' and '#{end_time}'").count Course.where("school_id = #{school_id} and courses.created_at between '#{start_time}' and '#{end_time}'").count
end end
def shixuns_count(start_time, end_time, keyword) def shixuns_count(start_time, end_time)
ShixunMember.joins("join user_extensions on user_extensions.user_id = shixun_members.user_id and shixun_members.created_at between '#{start_time}' and '#{end_time}'") ShixunMember.joins("join user_extensions on user_extensions.user_id = shixun_members.user_id and shixun_members.created_at between '#{start_time}' and '#{end_time}'")
.where(user_extensions: {school_id: school_id}).pluck(:shixun_id).uniq.count .where(user_extensions: {school_id: school_id}).pluck(:shixun_id).uniq.count
end end

@ -7,13 +7,13 @@
<% end %> <% end %>
<div class="box search-form-container saleman-channel-list-form"> <div class="box search-form-container saleman-channel-list-form">
<form class="form-inline search-form d-flex" data-search-form-url="<%= admins_salesman_channels_path %>"> <form class="form-inline search-form d-flex" data-search-form-url="<%= admins_salesman_channels_path(salesman_id: @salesman.id) %>">
<div class="time-select"> <div class="time-select">
<div class="form-group grow-date-container"> <div class="form-group grow-date-container">
<div class="input-group input-daterange grow-date-input-daterange"> <div class="input-group input-daterange grow-date-input-daterange">
<%= text_field_tag :start_date, params[:start_date], class: 'form-control start-date mx-0', placeholder: '开始时间' %> <%= text_field_tag :start_date, params[:start_date], class: 'form-control start-date mx-0', placeholder: '开始时间' %>
<div class="input-group-prepend"><span class="input-group-text">到</span></div> <div class="input-group-prepend"><span class="input-group-text">到</span></div>
<%= text_field_tag :end_date, params[:start_date], class: 'form-control end-date mx-0', placeholder: '结束时间' %> <%= text_field_tag :end_date, params[:end_date], class: 'form-control end-date mx-0', placeholder: '结束时间' %>
</div> </div>
</div> </div>
@ -21,9 +21,10 @@
<%= text_field_tag :keyword, params[:keyword], placeholder: 'ID/单位名称检索', class: 'form-control mx-3 search-input' %> <%= text_field_tag :keyword, params[:keyword], placeholder: 'ID/单位名称检索', class: 'form-control mx-3 search-input' %>
<%= javascript_void_link '搜索', class: 'btn btn-primary search-btn', target: '' %> <%= javascript_void_link '搜索', class: 'btn btn-primary search-btn', target: '' %>
<input type="reset" class="btn btn-secondary clear-btn ml-3" value="清空"/>
</form> </form>
<div class="flex-12"> <div class="flex-12">
<%= javascript_void_link '新增渠道', class: 'btn btn-primary', data: {salesman_id: @salesman.id, toggle: 'modal', target: '.admin-add-salesman-channel-user-modal' } %> <%= javascript_void_link '新增渠道', class: 'btn btn-primary', data: {toggle: 'modal', target: '.admin-add-salesman-channel-user-modal' } %>
</div> </div>
</div> </div>

@ -8,13 +8,12 @@
</button> </button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<form class="admin-add-salesman-user-form"> <form class="admin-add-salesman-user-form" data-url="<%= batch_add_admins_salesman_channels_path(salesman_id: @salesman.id) %>">
<%= hidden_field_tag(:salesman_id, nil) %>
<div class="form-group d-flex"> <div class="form-group d-flex">
<label class="col-form-label">单位:</label> <label class="col-form-label">单位:</label>
<div class="d-flex flex-column-reverse w-75"> <div class="d-flex flex-column-reverse w-75">
<select id="user_ids" name="user_ids" class="form-control salesman-channel-user-select"></select> <select id="school_ids" name="school_ids[]" class="form-control salesman-channel-user-select"></select>
</div> </div>
</div> </div>

@ -19,16 +19,16 @@
<span><%= channel.school_name %></span> <span><%= channel.school_name %></span>
</td> </td>
<td class="text-left"> <td class="text-left">
<span><%= channel.teacher_count(@start_time, @end_time, @keyword) %></span> <span><%= channel.teacher_count(@start_time, @end_time) %></span>
</td> </td>
<td class="text-left"> <td class="text-left">
<span><%= channel.student_count(@start_time, @end_time, @keyword) %></span> <span><%= channel.student_count(@start_time, @end_time) %></span>
</td> </td>
<td> <td>
<%= channel.course_count(@start_time, @end_time, @keyword) %> <%= channel.course_count(@start_time, @end_time) %>
</td> </td>
<td> <td>
<%= channel.shixuns_count(@start_time, @end_time, @keyword) %> <%= channel.shixuns_count(@start_time, @end_time) %>
</td> </td>
<td> <td>
<%= delete_link '删除', admins_salesman_channel_path(channel, salesman_id: channel.salesman_id, element: ".salesman-channel-item-#{channel.id}"), class: 'delete-salesman-action' %> <%= delete_link '删除', admins_salesman_channel_path(channel, salesman_id: channel.salesman_id, element: ".salesman-channel-item-#{channel.id}"), class: 'delete-salesman-action' %>

@ -88,14 +88,14 @@
</li> </li>
<li> <li>
<%= sidebar_item_group('#running_data', '运营数据', icon: 'bar-chart') do %> <%= sidebar_item_group('#running-data', '运营数据', icon: 'bar-chart') do %>
<li><%= sidebar_item(admins_salesmans_path, '销售数据列表', icon: 'columns', controller: 'admins-salesman') %></li> <li><%= sidebar_item(admins_salesmans_path, '销售数据列表', icon: 'columns', controller: 'admins-salesmans') %></li>
<% end %> <% end %>
</li> </li>
<li> <li>
<%= sidebar_item_group('#other-submenu', '其他', icon: 'list-alt') do %> <%= sidebar_item_group('#other-submenu', '其他', icon: 'list-alt') do %>
<li><%= sidebar_item(admins_repertoires_path, '技术体系', icon: 'sitemap', controller: 'admins-repertoire') %></li> <li><%= sidebar_item(admins_repertoires_path, '技术体系', icon: 'sitemap', controller: 'admins-repertoires') %></li>
<% end %> <% end %>
</li> </li>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save