educode_sales 0.5.1 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/educode_sales/businesses_controller.rb +4 -1
  3. data/app/controllers/educode_sales/follow_ups_controller.rb +2 -1
  4. data/app/controllers/educode_sales/operation_plans_controller.rb +22 -2
  5. data/app/controllers/educode_sales/operation_reports_controller.rb +33 -3
  6. data/app/controllers/educode_sales/plans_controller.rb +22 -2
  7. data/app/controllers/educode_sales/roles_controller.rb +5 -0
  8. data/app/controllers/educode_sales/sale_reports_controller.rb +33 -3
  9. data/app/controllers/educode_sales/sale_trends_controller.rb +171 -0
  10. data/app/controllers/educode_sales/sales_controller.rb +4 -0
  11. data/app/controllers/educode_sales/upload_files_controller.rb +10 -3
  12. data/app/models/educode_sales/common.rb +2 -1
  13. data/app/views/educode_sales/businesses/file.html.erb +5 -4
  14. data/app/views/educode_sales/businesses/index.html.erb +6 -1
  15. data/app/views/educode_sales/businesses/new_follow_record.html.erb +1 -1
  16. data/app/views/educode_sales/operation_plans/index.html.erb +6 -1
  17. data/app/views/educode_sales/operation_reports/audit.html.erb +5 -3
  18. data/app/views/educode_sales/operation_reports/show.html.erb +4 -7
  19. data/app/views/educode_sales/places/index.html.erb +6 -1
  20. data/app/views/educode_sales/places/index.json.jbuilder +11 -1
  21. data/app/views/educode_sales/plans/index.html.erb +6 -1
  22. data/app/views/educode_sales/roles/index.html.erb +19 -1
  23. data/app/views/educode_sales/roles/rename.html.erb +50 -0
  24. data/app/views/educode_sales/sale_reports/audit.html.erb +5 -3
  25. data/app/views/educode_sales/sale_reports/show.html.erb +3 -6
  26. data/app/views/educode_sales/sale_trends/trends.html.erb +222 -2
  27. data/app/views/educode_sales/sale_trends/trends.json.jbuilder +14 -0
  28. data/app/views/educode_sales/sales/index.html.erb +72 -6
  29. data/app/views/educode_sales/sales/index.json.jbuilder +35 -1
  30. data/app/views/educode_sales/sales/operations.json.jbuilder +11 -1
  31. data/app/views/educode_sales/staffs/index.html.erb +6 -1
  32. data/app/views/educode_sales/staffs/index.json.jbuilder +11 -1
  33. data/app/views/educode_sales/teachers/add_keys.html.erb +1 -1
  34. data/app/views/educode_sales/teachers/index.html.erb +6 -1
  35. data/app/views/educode_sales/teachers/new.html.erb +1 -0
  36. data/config/routes.rb +3 -0
  37. data/lib/educode_sales/version.rb +1 -1
  38. metadata +4 -2
@@ -1,8 +1,18 @@
1
+ area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
1
2
  json.data do
2
3
  json.array! @places do |d|
3
4
  json.id d.id
4
5
  json.name d.name
5
- json.area_id d.areas.present? ? d.areas.pluck(:name).join("、") : ''
6
+ # json.area_id d.areas.present? ? d.areas.pluck(:name).join("、") : ''
7
+ if d.areas.present?
8
+ if d.areas.ids.sort.to_s == area_ids
9
+ json.area_id '全国'
10
+ else
11
+ json.area_id d.areas.pluck(:name).join("、")
12
+ end
13
+ else
14
+ json.area_id ''
15
+ end
6
16
  json.businesses_count EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", @x).where("educode_sales_follow_ups.place_id = #{d.id}").count
7
17
  json.amount EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", @x).where("educode_sales_follow_ups.place_id = #{d.id} AND educode_sales_follow_ups.stage_id IN (?)", @stage_ids).sum(:profit_amount).round(2)
8
18
  json.return_mount EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", @x).where("educode_sales_follow_ups.place_id = #{d.id}").sum(:return_money).round(2)
@@ -51,4 +51,9 @@
51
51
 
52
52
  })
53
53
  })
54
- </script>
54
+ </script>
55
+ <style>
56
+ .layui-table-tool-temp{
57
+ padding-right: 30px; !important;
58
+ }
59
+ </style>
@@ -8,6 +8,7 @@
8
8
  </div>
9
9
  </script>
10
10
  <script type="text/html" id="role_bar">
11
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="rename">重命名</a>
11
12
  <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
12
13
  <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
13
14
  </script>
@@ -35,7 +36,6 @@
35
36
  field: 'name',
36
37
  title: '角色',
37
38
  width: 120,
38
- edit: 'text'
39
39
  }, {
40
40
  field: 'permissions',
41
41
  title: '模块浏览权限',
@@ -124,6 +124,24 @@
124
124
  layer.full(index);
125
125
  });
126
126
  return false;
127
+ }else if (obj.event === 'rename') {
128
+ id = data.id
129
+ var content = miniPage.getHrefContent('/missions/roles/rename?id='+id);
130
+ var openWH = miniPage.getOpenWidthHeight();
131
+ rename_index = layer.open({
132
+ title: '重命名',
133
+ type: 1,
134
+ shade: 0.2,
135
+ maxmin: true,
136
+ shadeClose: true,
137
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
138
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
139
+ content: content,
140
+ });
141
+ $(window).on("resize", function () {
142
+ layer.full(index);
143
+ });
144
+ return false;
127
145
  } else if (obj.event === 'delete') {
128
146
  layer.confirm('确定删除' + data.name, function (index) {
129
147
  request.delete('missions/roles/'+ data.id, {}, function(res) {
@@ -0,0 +1,50 @@
1
+ <form class="layui-form " action="">
2
+ <div class="layui-form-item" style="padding: 25px">
3
+ <div class="layui-inline">
4
+ <label class="layui-form-label required">角色名称</label>
5
+ <div class="layui-input-block" style="line-height: 36px;">
6
+ <input type="text" name="name" id="name" required lay-verify="required" autocomplete="off"
7
+ class="layui-input" value="<%=@name %>">
8
+ </div>
9
+ </div>
10
+ <div class="layui-inline" style="padding-left: 30px">
11
+ <button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="submits">提交
12
+ </button>
13
+ </div>
14
+ </div>
15
+ </form>
16
+
17
+
18
+ <script>
19
+
20
+ layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'selectInput', 'transfer'], function () {
21
+ var form = layui.form,
22
+ layer = layui.layer,
23
+ table = layui.table,
24
+ transfer = layui.transfer,
25
+ laytpl = layui.laytpl,
26
+ request = layui.request,
27
+ $ = layui.$;
28
+
29
+ form.render();
30
+
31
+ // 当前弹出层,防止ID被覆盖
32
+ var parentIndex = layer.index;
33
+
34
+ //监听提交
35
+ form.on('submit(submits)', function (data) {
36
+ console.log(data);
37
+ request.authPut('missions/roles/' + parent.id + '/update_role/', data.field,
38
+ function(res) {
39
+ if (res.success) {
40
+ table.reload('role');
41
+ layer.close(parent.rename_index)
42
+ } else {
43
+ layer.alert(res.msg)
44
+ }
45
+
46
+ })
47
+ return false;
48
+ });
49
+ });
50
+ </script>
@@ -71,9 +71,11 @@
71
71
 
72
72
  <br>
73
73
  <div class="layui-inline m-t-10">
74
+ <% if (can? :level1_audit, EducodeSales::SaleReport) || (can? :level2_audit, EducodeSales::SaleReport) || (can? :level3_audit, EducodeSales::SaleReport) %>
74
75
  <button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="audit_weekly_report"
75
76
  style="margin-left: 18px">提交
76
77
  </button>
78
+ <% end %>
77
79
  </div>
78
80
  </div>
79
81
  </form>
@@ -98,7 +100,7 @@
98
100
  rate.render({
99
101
  elem: '#weekStar4',
100
102
  half: true,
101
- value: "<%= @sale_report.level1_score %>",
103
+ value: parseFloat("<%= @sale_report.level1_score || 0%>"),
102
104
  length: 5,
103
105
  choose: function(value){
104
106
  level1_score = value
@@ -107,7 +109,7 @@
107
109
  rate.render({
108
110
  elem: '#weekStar5',
109
111
  half: true,
110
- value: "<%= @sale_report.level2_score %>",
112
+ value: parseFloat("<%= @sale_report.level2_score || 0%>"),
111
113
  length: 5,
112
114
  choose: function(value){
113
115
  level2_score = value
@@ -116,7 +118,7 @@
116
118
  rate.render({
117
119
  elem: '#weekStar6',
118
120
  half: true,
119
- value: "<%= @sale_report.level3_score %>",
121
+ value: parseFloat("<%= @sale_report.level3_score || 0%>"),
120
122
  length: 5,
121
123
  choose: function(value){
122
124
  level3_score = value
@@ -84,22 +84,19 @@
84
84
  elem: '#weekStar4',
85
85
  half: true,
86
86
  readonly: true,
87
- value: "<%= @sale_report.level1_score %>",
88
- length: "<%= @sale_report.level1_score %>"
87
+ value: parseFloat("<%= @sale_report.level1_score || 0%>"),
89
88
  })
90
89
  rate.render({
91
90
  elem: '#weekStar5',
92
91
  half: true,
93
92
  readonly: true,
94
- value: "<%= @sale_report.level2_score %>",
95
- length: "<%= @sale_report.level2_score %>"
93
+ value: parseFloat("<%= @sale_report.level2_score || 0%> "),
96
94
  })
97
95
  rate.render({
98
96
  elem: '#weekStar6',
99
97
  half: true,
100
98
  readonly: true,
101
- value: "<%= @sale_report.level3_score %>",
102
- length: "<%= @sale_report.level3_score %>"
99
+ value: parseFloat("<%= @sale_report.level3_score || 0%>"),
103
100
  })
104
101
 
105
102
  table.on('tool(showWeeklyTable)', function (obj) {
@@ -168,12 +168,130 @@
168
168
  </div>
169
169
  </div>
170
170
  </form>
171
+ <br>
172
+ <div class="layui-tab layui-tab-card" id="商机跟进数">
173
+ <ul class="layui-tab-title">
174
+ <li class="layui-this">商机跟进数</li>
175
+ </ul>
176
+ <div class="layui-tab-content" style="padding-right: 50px">
177
+ <div class="layui-tab-item layui-show " style="padding-left: 20px">
178
+ <div style="margin: 10px 10px 10px 10px">
179
+ <form class="layui-form layui-form-pane" lay-filter="search_form">
180
+ <div class="layui-form-item">
181
+ <div class="layui-inline m-t-10">
182
+ <label class="layui-form-label">视图</label>
183
+ <div class="layui-input-inline">
184
+ <%= select_tag "follow_count_range", options_for_select([['按天','day'],['按月','month'],['按年','year']],params[:follow_count_range]), {'lay-filter': 'follow_count'}%>
185
+ </div>
186
+ </div>
187
+ <div class="layui-inline">
188
+ <label class="layui-form-label">时间范围</label>
189
+ <div class="layui-input-inline">
190
+ <input type="text" class="layui-input month layui-hide" id="date_month" name="date_month" placeholder=" - " value="<%=params[:date_month] %>" >
191
+ <input type="text" class="layui-input year layui-hide" id="date_year" name="date_year" placeholder=" - " value="<%=params[:date_year] %>">
192
+ <input type="text" class="layui-input day" id="date" name="date" placeholder=" - " value="<%=params[:date] %>">
193
+ </div>
194
+ </div>
195
+ <div class="layui-inline">
196
+ <button type="submit" id="search_bt" class=" follow_count_bt layui-btn layui-btn-primary" lay-submit lay-filter="search_bussiness">确定
197
+ </button>
198
+ </div>
199
+ </div>
200
+ </form>
201
+ </div>
202
+ <canvas id="myChart" width="960" height="200"></canvas>
203
+ </div>
204
+ </div>
205
+ </div>
206
+ <div class="layui-tab layui-tab-card " id="销售额分析" lay-filter="test1">
207
+ <ul class="layui-tab-title">
208
+ <li class="layui-this">销售额分析</li>
209
+ </ul>
210
+ <div class="layui-tab-content" style="padding-right: 50px">
211
+ <div class="layui-tab-item layui-show" style="padding-left: 20px">
212
+ <div style="margin: 10px 10px 10px 10px">
213
+ <form class="layui-form layui-form-pane" lay-filter="search_form">
214
+ <div class="layui-form-item">
215
+ <div class="layui-inline m-t-10">
216
+ <label class="layui-form-label">视图</label>
217
+ <div class="layui-input-inline">
218
+ <%= select_tag "goal_count_range", options_for_select([['按月','month'],['按年','year']],params[:goal_count_range]), {'lay-filter': 'goal_count'}%>
219
+ </div>
220
+ </div>
221
+ <div class="layui-inline">
222
+ <label class="layui-form-label">时间范围</label>
223
+ <div class="layui-input-inline">
224
+ <input type="text" class="layui-input goal_month " id="goal_date_month" name="goal_date_month" placeholder=" - " value="<%=params[:goal_date_month] %>">
225
+ <input type="text" class="layui-input goal_year layui-hide" id="goal_date_year" name="goal_date_year" placeholder=" - " value="<%=params[:goal_date_year] %>">
226
+ </div>
227
+ </div>
228
+ <div class="layui-inline">
229
+ <button type="submit" id="search_bt" class="follow_count_bt layui-btn layui-btn-primary" lay-submit lay-filter="search_bussiness">确定
230
+ </button>
231
+ </div>
232
+ </div>
233
+ </form>
234
+ </div>
235
+ <canvas id="myChart2" width="960" height="200"></canvas>
236
+ </div>
237
+
238
+ </div>
239
+ </div>
240
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/chart.js@2.9.1/dist/Chart.min.css">
241
+ <script src="https://cdn.jsdelivr.net/npm/chart.js@2.9.1/dist/Chart.min.js"></script>
171
242
  <script>
243
+ follow_type = "<%=@follow_count_range %>"
244
+ goal_type = "<%=@goal_count_range %>"
245
+ follow_flag = <%=params[:follow_count_range].present? %>
246
+ if(follow_flag){
247
+ window.location.href = "#商机跟进数"
248
+ }
249
+
250
+ goal_flag = <%=params[:goal_count_range].present? %>
251
+ if(goal_flag){
252
+ window.location.href = "#销售额分析"
253
+ }
172
254
  layui.use(['form', 'jquery', 'request'], function () {
173
255
  var $ = layui.jquery,
174
256
  form = layui.form,
175
257
  request = layui.request;
176
258
  var year = "<%= @year %>";
259
+ var element = layui.element;
260
+ laydate = layui.laydate;
261
+
262
+ $(document).ready(function () {
263
+ $(".follow_count_bt").click(function () {
264
+ layer.msg("图表绘制中...", {
265
+ time: 0, //不自动关闭
266
+ offset:['40%','46%']
267
+ })
268
+ layer.load(0, {});
269
+ setTimeout(function () {
270
+ layer.closeAll('loading');
271
+ }, 10000);
272
+ });
273
+ });
274
+ if(follow_type == "day"){
275
+ $(".year").addClass('layui-hide')
276
+ $(".month").addClass('layui-hide')
277
+ $(".day").removeClass('layui-hide')
278
+ }else if(follow_type == "month"){
279
+ $(".year").addClass('layui-hide')
280
+ $(".month").removeClass('layui-hide')
281
+ $(".day").addClass('layui-hide')
282
+ }else {
283
+ $(".year").removeClass('layui-hide')
284
+ $(".month").addClass('layui-hide')
285
+ $(".day").addClass('layui-hide')
286
+ }
287
+
288
+ if(goal_type == "year"){
289
+ $(".goal_year").removeClass('layui-hide')
290
+ $(".goal_month").addClass('layui-hide')
291
+ }else{
292
+ $(".goal_year").addClass('layui-hide')
293
+ $(".goal_month").removeClass('layui-hide')
294
+ }
177
295
 
178
296
  function editForm(el) {
179
297
  $("#" + el + "_edit").click(function() {
@@ -205,18 +323,120 @@
205
323
  })
206
324
  }
207
325
 
326
+ // 时间选择器
327
+ laydate.render({
328
+ elem: '#date',
329
+ min: -15
330
+ ,max: 15,
331
+ range: true
332
+ });
333
+ laydate.render({
334
+ type: 'week',
335
+ elem: '#date_week',
336
+ min: -90
337
+ ,max: 0,
338
+ range: true
339
+ });
340
+ laydate.render({
341
+ type: 'month',
342
+ elem: '#date_month',
343
+ min: -365
344
+ ,max: 0,
345
+ range: true
346
+ });
347
+ laydate.render({
348
+ type: 'year',
349
+ elem: '#date_year',
350
+ min: -3660
351
+ ,max: 366,
352
+ range: true
353
+ });
354
+ laydate.render({
355
+ type: 'year',
356
+ elem: '#goal_date_year',
357
+ min: -3660
358
+ ,max: 366,
359
+ range: true
360
+ });
361
+ laydate.render({
362
+ type: 'month',
363
+ elem: '#goal_date_month',
364
+ min: -365
365
+ ,max: 0,
366
+ range: true
367
+ });
368
+
369
+
208
370
  form.on('select(year)', function(data){
209
371
  console.log(data, )
210
372
  year = data.value
211
373
  window.location.href = "/missions/sale_trends/trends?year=" + data.value
212
374
  })
213
-
375
+ form.on('select(follow_count)', function(data){
376
+ console.log(data, )
377
+ const value = data.value;
378
+ if(value == "month"){
379
+ $(".year").addClass('layui-hide')
380
+ $(".day").addClass('layui-hide')
381
+ $(".month").removeClass('layui-hide')
382
+ }else if(value == "year"){
383
+ $(".month").addClass('layui-hide')
384
+ $(".day").addClass('layui-hide')
385
+ $(".year").removeClass('layui-hide')
386
+ }else {
387
+ $(".month").addClass('layui-hide')
388
+ $(".year").addClass('layui-hide')
389
+ $(".day").removeClass('layui-hide')
390
+ }
391
+ })
392
+
393
+ form.on('select(goal_count)', function(data){
394
+ console.log(data, )
395
+ const value = data.value;
396
+ if(value == "month"){
397
+ $(".goal_year").addClass('layui-hide')
398
+ $(".goal_month").removeClass('layui-hide')
399
+ }else {
400
+ $(".goal_month").addClass('layui-hide')
401
+ $(".goal_year").removeClass('layui-hide')
402
+ }
403
+ })
404
+
214
405
  editForm("chance_money");
215
406
  editForm("ballot_money");
216
407
  editForm("sign_money");
217
408
  editForm("returned_money");
218
409
 
219
-
410
+ element.on('tab(test1)', function(){
411
+ window.location.href = "#销售额分析"
412
+ });
220
413
 
414
+ var ctx = document.getElementById('myChart');
415
+ var myChart = new Chart(ctx, {
416
+ type: 'line',
417
+ data: <%=raw @follow_count_data.to_json %>,
418
+ options: {
419
+ elements: {
420
+ line: {
421
+ tension: 0
422
+ }
423
+ }
424
+ }
425
+ });
426
+
427
+ var ctx = document.getElementById('myChart2');
428
+ var myChart2 = new Chart(ctx, {
429
+ type: 'bar',
430
+ data: <%=raw @goal_count_data.to_json %>,
431
+ options: {
432
+ scales: {
433
+ yAxes: [{
434
+ ticks: {
435
+ beginAtZero:true
436
+ }
437
+ }]
438
+ }
439
+ }
440
+ });
221
441
  })
222
442
  </script>
@@ -0,0 +1,14 @@
1
+ my_array = [1,2,3,4,5]
2
+ json.data do
3
+ json.labels my_array
4
+ json.datasets do
5
+ json.array! [1,2] do |d|
6
+ json.label '人名'
7
+ json.backgroundColor "#fff"
8
+ json.borderColor "#36A2EB"
9
+ json.pointBackgroundColor "#36A2EB"
10
+ json.pointBorderColor "#fff"
11
+ json.data my_array
12
+ end
13
+ end
14
+ end
@@ -1,7 +1,7 @@
1
1
  <div class="section">
2
2
  <h4><span>销售人员列表</span></h4>
3
3
  <hr>
4
- <table class="layui-hide" id="table"></table>
4
+ <table class="layui-hide" id="table" lay-filter="table" ></table>
5
5
  </div>
6
6
  <script type="text/html" id="toolbarDemo">
7
7
  <div class="layui-btn-container">
@@ -18,6 +18,26 @@
18
18
  <a href="/missions/businesses?clazz_id={{d.b_clazz_id}}&staff_id={{d.id}}">{{d.business_b}}</a>
19
19
  </div>
20
20
  </script>
21
+ <script type="text/html" id="business_c">
22
+ <div class="layui-text">
23
+ <a href="/missions/businesses?clazz_id={{d.c_clazz_id}}&staff_id={{d.id}}">{{d.business_c}}</a>
24
+ </div>
25
+ </script>
26
+ <script type="text/html" id="business_d">
27
+ <div class="layui-text">
28
+ <a href="/missions/businesses?clazz_id={{d.d_clazz_id}}&staff_id={{d.id}}">{{d.business_d}}</a>
29
+ </div>
30
+ </script>
31
+ <script type="text/html" id="business_e">
32
+ <div class="layui-text">
33
+ <a href="/missions/businesses?clazz_id={{d.e_clazz_id}}&staff_id={{d.id}}">{{d.business_e}}</a>
34
+ </div>
35
+ </script>
36
+ <script type="text/html" id="business_o">
37
+ <div class="layui-text">
38
+ <a href="/missions/businesses?clazz_id={{d.o_clazz_id}}&staff_id={{d.id}}">{{d.business_o}}</a>
39
+ </div>
40
+ </script>
21
41
  <script>
22
42
  layui.use('table', function () {
23
43
  var table = layui.table;
@@ -45,22 +65,53 @@
45
65
  title: 'A类商机',
46
66
  templet: "#business_a",
47
67
  totalRow:true,
68
+ sort:true,
48
69
  width: 120
49
- }, {
70
+ },
71
+ {
50
72
  field: 'business_b',
51
73
  title: 'B类商机',
52
74
  templet: "#business_b",
53
- totalRow:true,
75
+ totalRow:true,sort:true,
54
76
  width: 120
55
- }, {
77
+ },
78
+ {
79
+ field: 'business_c',
80
+ title: 'C类商机',
81
+ templet: "#business_c",
82
+ totalRow:true,sort:true,
83
+ width: 120
84
+ },
85
+ {
86
+ field: 'business_d',
87
+ title: 'D类商机',
88
+ templet: "#business_d",
89
+ totalRow:true,sort:true,
90
+ width: 120
91
+ },
92
+ {
93
+ field: 'business_e',
94
+ title: 'E类商机',
95
+ templet: "#business_e",
96
+ totalRow:true,sort:true,
97
+ width: 120
98
+ },
99
+ {
100
+ field: 'business_o',
101
+ title: 'O类商机',
102
+ templet: "#business_o",
103
+ totalRow:true,sort:true,
104
+ width: 120
105
+ },
106
+ {
56
107
  field: 'goal',
57
108
  title: '中标金额',
58
- totalRow:true,
109
+ totalRow:true,sort:true,
59
110
  width: 120
60
111
  }, {
61
112
  field: 'return_money',
62
113
  title: '回款',
63
- totalRow:true,
114
+ totalRow:true,sort:true,
64
115
  width: 120
65
116
  }
66
117
  ]
@@ -69,5 +120,20 @@
69
120
  limits: [10,15,20,30,40,50,60,70,80,90],
70
121
  page: true
71
122
  });
123
+
124
+ // var sort = {}, search = {};
125
+ // table.on('sort(table)', function (obj) {
126
+ // sort.field = obj.field;
127
+ // sort.order = obj.type;
128
+ // table.reload('table', {
129
+ // initSort: obj,
130
+ // where: {
131
+ // sort: sort,
132
+ // q: search
133
+ // }
134
+ // });
135
+ // })
136
+
137
+
72
138
  });
73
139
  </script>
@@ -1,5 +1,10 @@
1
1
  businesses_a_count = 0
2
2
  businesses_b_count = 0
3
+ businesses_c_count = 0
4
+ businesses_d_count = 0
5
+ businesses_e_count = 0
6
+ businesses_o_count = 0
7
+ area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
3
8
  json.data do
4
9
  json.array! @staffs do |d|
5
10
  part_a_ids = EducodeSales::Business.where("educode_sales_businesses.last_follow_up_id is null AND staff_id = ?",d.id).ids
@@ -11,23 +16,52 @@ json.data do
11
16
  json.id d.id
12
17
  json.name d.user.real_name
13
18
  json.role d.role&.name
14
- json.area d.areas.present? ? d.areas.pluck(:name).join("、") : ''
19
+ # json.area d.areas.present? ? d.areas.pluck(:name).join("、") : ''
20
+ if d.areas.present?
21
+ if d.areas.ids.sort.to_s == area_ids
22
+ json.area '全国'
23
+ else
24
+ json.area d.areas.pluck(:name).join("、")
25
+ end
26
+ else
27
+ json.area ''
28
+ end
15
29
  business_a = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @a_clazz&.id).count
16
30
  businesses_a_count += business_a
17
31
  json.business_a business_a
18
32
  business_b = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @b_clazz&.id).count
19
33
  businesses_b_count += business_b
20
34
  json.business_b business_b
35
+ business_c = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @c_clazz&.id).count
36
+ businesses_c_count += business_c
37
+ json.business_c business_c
38
+ business_d = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @d_clazz&.id).count
39
+ businesses_d_count += business_d
40
+ json.business_d business_b
41
+ business_e = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @e_clazz&.id).count
42
+ businesses_e_count += business_e
43
+ json.business_e business_b
44
+ business_o = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @o_clazz&.id).count
45
+ businesses_o_count += business_o
46
+ json.business_o business_o
21
47
  json.goal @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id != ? AND educode_sales_follow_ups.stage_id in (?)", @x, @step_ids).sum(:total_amount).round(2)
22
48
  json.return_money @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id != ?", @x).sum("educode_sales_businesses.return_money").round(2)
23
49
  json.a_clazz_id @a_clazz&.id
24
50
  json.b_clazz_id @b_clazz&.id
51
+ json.c_clazz_id @c_clazz&.id
52
+ json.d_clazz_id @d_clazz&.id
53
+ json.e_clazz_id @e_clazz&.id
54
+ json.o_clazz_id @o_clazz&.id
25
55
  end
26
56
  end
27
57
 
28
58
  json.totalRow do
29
59
  json.business_a businesses_a_count.to_s
30
60
  json.business_b businesses_b_count.to_s
61
+ json.business_c businesses_c_count.to_s
62
+ json.business_d businesses_d_count.to_s
63
+ json.business_e businesses_e_count.to_s
64
+ json.business_o businesses_o_count.to_s
31
65
  end
32
66
  json.code 0
33
67
  json.count @staffs.total_count
@@ -1,12 +1,22 @@
1
1
  departments_count = 0
2
2
  schools_count = 0
3
+ area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
3
4
  json.data do
4
5
  json.array! @staffs do |d|
5
6
  json.id d.id
6
7
  json.name d.user.real_name
7
8
  json.role d.role&.name
8
9
  json.job_type EducodeSales::Common.job_type_name[d.job_type]
9
- json.area d.areas.present? ? d.areas.pluck(:name).join("、") : ''
10
+ # json.area d.areas.present? ? d.areas.pluck(:name).join("、") : ''
11
+ if d.areas.present?
12
+ if d.areas.ids.sort.to_s == area_ids
13
+ json.area '全国'
14
+ else
15
+ json.area d.areas.pluck(:name).join("、")
16
+ end
17
+ else
18
+ json.area ''
19
+ end
10
20
  departments = EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.staff_id = #{d.id}").select("COUNT(educode_sales_follow_ups.staff_id) AS count")[0]&.send('count') + EducodeSales::Teacher.joins(:follow_up).where("educode_sales_teacher_follows.staff_id = #{d.id}").select("COUNT(educode_sales_teacher_follows.staff_id) AS count")[0]&.send('count') || 0
11
21
  json.departments departments
12
22
  schools = EducodeSales::Business.joins(:last_follow_up, :department).where("educode_sales_follow_ups.staff_id = #{d.id}").select("COUNT(distinct(departments.school_id)) AS count")[0]['count'] + EducodeSales::Teacher.joins(:follow_up, :department).where("educode_sales_teacher_follows.staff_id = #{d.id}").select("COUNT(distinct(departments.school_id)) AS count")[0]['count']
@@ -137,4 +137,9 @@
137
137
  });
138
138
 
139
139
  });
140
- </script>
140
+ </script>
141
+ <style>
142
+ .layui-table-tool-temp{
143
+ padding-right: 0px; !important;
144
+ }
145
+ </style>