educode_sales 0.4.1 → 0.4.5

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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/educode_sales/1./351/224/200/345/224/256/346/264/273/345/212/250.png +0 -0
  3. data/app/assets/images/educode_sales/10./346/225/231/345/270/210/350/277/220/350/220/245.png +0 -0
  4. data/app/assets/images/educode_sales/11./346/264/273/345/212/250/350/277/220/350/220/245.png +0 -0
  5. data/app/assets/images/educode_sales/12./350/277/220/350/220/245/350/256/241/345/210/222.png +0 -0
  6. data/app/assets/images/educode_sales/13./347/263/273/347/273/237/350/256/276/347/275/256.png +0 -0
  7. data/app/assets/images/educode_sales/14./350/247/222/350/211/262/347/256/241/347/220/206.png +0 -0
  8. data/app/assets/images/educode_sales/15./344/272/272/345/221/230/347/256/241/347/220/206.png +0 -0
  9. data/app/assets/images/educode_sales/16./345/255/227/345/205/270/345/210/227/350/241/250.png +0 -0
  10. data/app/assets/images/educode_sales/2./345/270/202/345/234/272/346/200/201/345/212/277.png +0 -0
  11. data/app/assets/images/educode_sales/3./351/224/200/345/224/256/345/210/206/345/267/245.png +0 -0
  12. data/app/assets/images/educode_sales/4./345/225/206/346/234/272/347/256/241/347/220/206.png +0 -0
  13. data/app/assets/images/educode_sales/5./346/270/240/351/201/223/347/256/241/347/220/206.png +0 -0
  14. data/app/assets/images/educode_sales/6./351/224/200/345/224/256/350/256/241/345/210/222.png +0 -0
  15. data/app/assets/images/educode_sales/7./350/277/220/350/220/245/346/264/273/345/212/250.png +0 -0
  16. data/app/assets/images/educode_sales/8./350/277/220/350/220/245/346/200/201/345/212/277.png +0 -0
  17. data/app/assets/images/educode_sales/9./350/277/220/350/220/245/345/210/206/345/267/245.png +0 -0
  18. data/app/assets/images/educode_sales/a.png +0 -0
  19. data/app/assets/images/educode_sales/logo.png +0 -0
  20. data/app/controllers/educode_sales/businesses_controller.rb +21 -3
  21. data/app/controllers/educode_sales/follow_ups_controller.rb +3 -3
  22. data/app/controllers/educode_sales/operation_plans_controller.rb +1 -1
  23. data/app/controllers/educode_sales/operation_reports_controller.rb +1 -1
  24. data/app/controllers/educode_sales/places_controller.rb +1 -1
  25. data/app/controllers/educode_sales/plans_controller.rb +8 -4
  26. data/app/controllers/educode_sales/sale_reports_controller.rb +1 -1
  27. data/app/controllers/educode_sales/sale_trends_controller.rb +3 -3
  28. data/app/controllers/educode_sales/sales_controller.rb +1 -1
  29. data/app/controllers/educode_sales/teacher_follows_controller.rb +1 -1
  30. data/app/models/educode_sales/common.rb +2 -0
  31. data/app/models/educode_sales/teacher.rb +12 -19
  32. data/app/views/educode_sales/activities/index.html.erb +4 -0
  33. data/app/views/educode_sales/activities/index.json.jbuilder +6 -0
  34. data/app/views/educode_sales/businesses/edit_follow_record.html.erb +7 -8
  35. data/app/views/educode_sales/businesses/index.html.erb +46 -6
  36. data/app/views/educode_sales/businesses/index.json.jbuilder +8 -1
  37. data/app/views/educode_sales/businesses/new_follow_record.html.erb +7 -8
  38. data/app/views/educode_sales/businesses/show_follow.html.erb +10 -10
  39. data/app/views/educode_sales/businesses/show_follow.json.jbuilder +2 -2
  40. data/app/views/educode_sales/businesses/show_follow_record.html.erb +16 -4
  41. data/app/views/educode_sales/operation_plans/_monthPlan.html.erb +5 -1
  42. data/app/views/educode_sales/operation_plans/_monthly.html.erb +14 -0
  43. data/app/views/educode_sales/operation_plans/_weekPlan.html.erb +5 -1
  44. data/app/views/educode_sales/operation_plans/_weekly.html.erb +14 -0
  45. data/app/views/educode_sales/operation_plans/index.json.jbuilder +10 -2
  46. data/app/views/educode_sales/operation_plans/new_monthly.html.erb +4 -2
  47. data/app/views/educode_sales/operation_plans/new_weekly.html.erb +4 -2
  48. data/app/views/educode_sales/operation_reports/audit.html.erb +40 -13
  49. data/app/views/educode_sales/operation_reports/edit.html.erb +4 -2
  50. data/app/views/educode_sales/operation_reports/index.json.jbuilder +7 -0
  51. data/app/views/educode_sales/operation_reports/show.html.erb +46 -15
  52. data/app/views/educode_sales/places/index.html.erb +5 -0
  53. data/app/views/educode_sales/plans/_monthPlan.html.erb +3 -0
  54. data/app/views/educode_sales/plans/_monthly.html.erb +15 -0
  55. data/app/views/educode_sales/plans/_weekPlan.html.erb +3 -0
  56. data/app/views/educode_sales/plans/_weekly.html.erb +16 -0
  57. data/app/views/educode_sales/plans/index.json.jbuilder +4 -0
  58. data/app/views/educode_sales/plans/new_monthly.html.erb +4 -2
  59. data/app/views/educode_sales/plans/new_weekly.html.erb +4 -2
  60. data/app/views/educode_sales/sale_reports/audit.html.erb +40 -13
  61. data/app/views/educode_sales/sale_reports/edit.html.erb +4 -2
  62. data/app/views/educode_sales/sale_reports/index.json.jbuilder +7 -0
  63. data/app/views/educode_sales/sale_reports/show.html.erb +39 -13
  64. data/app/views/educode_sales/sales/index.html.erb +6 -0
  65. data/app/views/educode_sales/sales/index.json.jbuilder +20 -4
  66. data/app/views/educode_sales/sales/operations.html.erb +4 -0
  67. data/app/views/educode_sales/sales/operations.json.jbuilder +12 -3
  68. data/app/views/educode_sales/teachers/index.html.erb +5 -0
  69. data/app/views/educode_sales/teachers/index.json.jbuilder +12 -2
  70. data/app/views/layouts/educode_sales/application.html.erb +174 -41
  71. data/db/migrate/20211018054256_add_extras_to_commons.rb +6 -0
  72. data/db/migrate/20211022085324_add_teacher_used_to_teachers.rb +7 -0
  73. data/lib/educode_sales/version.rb +1 -1
  74. metadata +21 -2
@@ -79,30 +79,40 @@
79
79
  url: '/missions/sale_reports?clazz=month',
80
80
  toolbar: '#monthly_Toolbar',
81
81
  defaultToolbar: [],
82
+ totalRow:true,
82
83
  cols: [
83
84
  [{
84
85
  field: 'id',
85
86
  width: 60,
86
87
  title:'序号',type: 'numbers',
88
+ totalRowText:"合计",
87
89
  },
88
90
  {
89
91
  field: 'staff',
90
92
  width: 100,
91
93
  title: '姓名'
92
94
  },
95
+ {
96
+ field: 'month',
97
+ width: 100,
98
+ title: '月份'
99
+ },
93
100
  {
94
101
  field: 'finish_rate',
95
102
  width: 100,
103
+ totalRow:true,
96
104
  title: '完成率',
97
105
  },
98
106
  {
99
107
  field: 'client',
100
108
  width: 100,
109
+ totalRow:'{{ parseInt(d.TOTAL_NUMS) }}',
101
110
  title: '覆盖客户'
102
111
  },
103
112
  {
104
113
  field: 'amount',
105
114
  width: 100,
115
+ totalRow:true,
106
116
  title: '项目金额'
107
117
  },
108
118
  {
@@ -134,6 +144,11 @@
134
144
  return '<div class="star3"></div>'
135
145
  }
136
146
  },
147
+ {
148
+ field: 'created_at',
149
+ width: 300,
150
+ title: '提交时间',
151
+ },
137
152
  {
138
153
  title: '操作',
139
154
  minWidth: 220,
@@ -76,6 +76,7 @@
76
76
  elem: '#weekPlanTable',
77
77
  url: '/missions/plans?clazz=week',
78
78
  toolbar: '#weekPlanToolbar',
79
+ totalRow:true,
79
80
  defaultToolbar: [],
80
81
  cols: [
81
82
  [
@@ -83,6 +84,7 @@
83
84
  field: 'id',
84
85
  width: 80,
85
86
  title:'序号',type: 'numbers',
87
+ totalRowText: '合计'
86
88
  },
87
89
  {
88
90
  field: 'staff',
@@ -129,6 +131,7 @@
129
131
  field: 'finish_rate',
130
132
  width: 100,
131
133
  title: '完成率',
134
+ totalRow:true,
132
135
  },
133
136
  {
134
137
  field: 'updated_at',
@@ -80,31 +80,41 @@
80
80
  url: '/missions/sale_reports?clazz=week',
81
81
  toolbar: '#weeklyToolbar',
82
82
  defaultToolbar: [],
83
+ totalRow:true,
83
84
  cols: [
84
85
  [
85
86
  {
86
87
  field: 'id',
87
88
  width: 60,
88
89
  title:'序号',type: 'numbers',
90
+ totalRowText:"合计",
89
91
  },
90
92
  {
91
93
  field: 'staff',
92
94
  width: 100,
93
95
  title: '姓名'
94
96
  },
97
+ {
98
+ field: 'weekly',
99
+ width: 100,
100
+ title: '周次'
101
+ },
95
102
  {
96
103
  field: 'finish_rate',
97
104
  width: 100,
98
105
  title: '完成率',
106
+ totalRow:true,
99
107
  },
100
108
  {
101
109
  field: 'client',
102
110
  width: 100,
111
+ totalRow:'{{ parseInt(d.TOTAL_NUMS) }}',
103
112
  title: '覆盖客户'
104
113
  },
105
114
  {
106
115
  field: 'amount',
107
116
  width: 100,
117
+ totalRow:true,
108
118
  title: '项目金额'
109
119
  },
110
120
  {
@@ -135,7 +145,13 @@
135
145
  templet: function (d) {
136
146
  return '<div class="star3"></div>'
137
147
  }
148
+
138
149
  },
150
+ {
151
+ field: 'created_at',
152
+ width: 300,
153
+ title: '提交时间',
154
+ },
139
155
  {
140
156
  title: '操作',
141
157
  minWidth: 220,
@@ -15,5 +15,9 @@ json.data do
15
15
  end
16
16
  end
17
17
 
18
+ json.totalRow do
19
+ sum = @sale_plans.inject(0) { |score, i| score + i.finish_rate}
20
+ json.finish_rate ( @sale_plans.size > 0 ? (sum.to_f / @sale_plans.size).round(2).to_s : '0' ) + '%'
21
+ end
18
22
  json.code 0
19
23
  json.count @sale_plans.total_count
@@ -6,7 +6,7 @@
6
6
  <% end %>
7
7
  </div>
8
8
  </script>
9
- <form class="layui-form layui-form-pane">
9
+ <form class="layui-form layui-form-pane" style="padding-right: 20px">
10
10
  <div class="layui-form-item">
11
11
  <div class="layui-inline" style="margin:18px; font-weight: bold">
12
12
  <label>完成率:</label>
@@ -42,7 +42,9 @@
42
42
  </form>
43
43
 
44
44
  <!--表格-->
45
- <table class="layui-hide" id="newmonthlyTable" lay-filter="newmonthlyTable"></table>
45
+ <div style="padding: 20px">
46
+ <table class="layui-hide" id="newmonthlyTable" lay-filter="newmonthlyTable"></table>
47
+ </div>
46
48
  <script type="text/html" id="show_follow">
47
49
  <a href="javascript:void(0);" lay-event="show_follow" class="layui-table-link">{{ d.follow_ups_count }}</a>
48
50
  </script>
@@ -4,7 +4,7 @@
4
4
  <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add"> 添加计划</button>
5
5
  </div>
6
6
  </script>
7
- <form class="layui-form layui-form-pane">
7
+ <form class="layui-form layui-form-pane" style="padding-right: 20px">
8
8
  <div class="layui-form-item">
9
9
  <div class="layui-inline" style="margin:18px; font-weight: bold">
10
10
  <label>完成率:</label>
@@ -40,7 +40,9 @@
40
40
  </form>
41
41
 
42
42
  <!--表格-->
43
- <table class="layui-hide" id="newWeeklyTable" lay-filter="newWeeklyTable"></table>
43
+ <div style="padding: 20px">
44
+ <table class="layui-hide" id="newWeeklyTable" lay-filter="newWeeklyTable"></table>
45
+ </div>
44
46
  <script type="text/html" id="show_follow">
45
47
  <a href="javascript:void(0);" lay-event="show_follow" class="layui-table-link">{{ d.follow_ups_count }}</a>
46
48
  </script>
@@ -1,4 +1,4 @@
1
- <form class="layui-form layui-form-pane" action="">
1
+ <form class="layui-form layui-form-pane" action="" style="padding-right: 20px">
2
2
  <div class="layui-form-item">
3
3
  <div class="layui-inline" style="margin:18px; font-weight: bold">
4
4
  <label>完成率:</label>
@@ -18,36 +18,37 @@
18
18
  <div class="layui-form-item layui-form-text">
19
19
  <label class="layui-form-label">个人总结</label>
20
20
  <div class="layui-input-block">
21
- <textarea name="content" placeholder="此处填写要点:
21
+ <textarea name="content" placeholder="此处填写要点:
22
22
  1、一句话概括本周工作的主要成效和主要挫折;
23
23
  2、补充说明收获、经验;
24
- 3、补充说明需要上级解决的问题和挑战。" disabled class="layui-textarea"><%= @sale_report.content %></textarea>
24
+ 3、补充说明需要上级解决的问题和挑战。" disabled class="layui-textarea autosize"><%= @sale_report.content %></textarea>
25
25
  </div>
26
26
  </div>
27
- <div class="layui-form-item layui-form-text">
27
+ <div class="layui-form-item layui-form-text" style="margin-bottom: 0px">
28
28
  <label class="layui-form-label">大区意见</label>
29
29
  <div class="layui-input-block">
30
30
  <textarea name="level1_opinion" placeholder="给出评价、提醒、建议、办法等。"
31
- class="layui-textarea"><%= @sale_report.level1_opinion %></textarea>
31
+ class="layui-textarea autosize"><%= @sale_report.level1_opinion %></textarea>
32
32
  </div>
33
33
  </div>
34
- <div id="weekStar4"></div>
35
- <div class="layui-form-item layui-form-text">
34
+ <div id="weekStar4" style="margin-bottom: 40px"></div>
35
+ <div class="layui-form-item layui-form-text" style="margin-bottom: 0px">
36
36
  <label class="layui-form-label">总监意见</label>
37
37
  <div class="layui-input-block">
38
38
  <textarea name="level2_opinion" placeholder="给出评价、提醒、建议、办法等。"
39
- class="layui-textarea"><%= @sale_report.level2_opinion %></textarea>
39
+ class="layui-textarea autosize"><%= @sale_report.level2_opinion %></textarea>
40
40
  </div>
41
41
  </div>
42
- <div id="weekStar5"></div>
43
- <div class="layui-form-item layui-form-text">
42
+ <div id="weekStar5" style="margin-bottom: 40px"></div>
43
+ <div class="layui-form-item layui-form-text" style="margin-bottom: 0px">
44
44
  <label class="layui-form-label">副总意见</label>
45
45
  <div class="layui-input-block">
46
46
  <textarea name="level3_opinion" placeholder="给出评价、提醒、建议、办法等。"
47
- class="layui-textarea"><%= @sale_report.level3_opinion %></textarea>
47
+ class="layui-textarea autosize"><%= @sale_report.level3_opinion %></textarea>
48
48
  </div>
49
49
  </div>
50
- <div id="weekStar6"></div>
50
+ <div id="weekStar6" style="margin-bottom: 40px"></div>
51
+ <br>
51
52
  <div class="layui-inline m-t-10">
52
53
  <button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="audit_weekly_report"
53
54
  style="margin-left: 18px">提交
@@ -57,7 +58,9 @@
57
58
  </form>
58
59
 
59
60
  <!--表格-->
60
- <table class="layui-hide" id="showWeeklyTable" lay-filter="showWeeklyTable"></table>
61
+ <div style="padding: 20px">
62
+ <table class="layui-hide" id="showWeeklyTable" lay-filter="showWeeklyTable"></table>
63
+ </div>
61
64
  <script type="text/html" id="show_follow">
62
65
  <a href="javascript:void(0);" lay-event="show_follow" class="layui-table-link">{{ d.follow_ups_count }}</a>
63
66
  </script>
@@ -205,5 +208,29 @@
205
208
  ],
206
209
  page: true
207
210
  });
211
+ autosize();
212
+ function autosize(){
213
+ var text = $('.autosize');
214
+
215
+ text.each(function(){
216
+ $(this).attr('rows',1);
217
+ resize($(this));
218
+ });
219
+
220
+ text.on('input', function(){
221
+ resize($(this));
222
+ });
223
+
224
+ function resize ($text) {
225
+ $text.css('height', 'auto');
226
+ $text.css('height', $text[0].scrollHeight+'px');
227
+ }
228
+ }
208
229
  })
209
230
  </script>
231
+ <style>
232
+ .autosize {
233
+ resize: none;
234
+ overflow: hidden;
235
+ }
236
+ </style>
@@ -9,7 +9,7 @@
9
9
  {{# } }}
10
10
  </div>
11
11
  </script>
12
- <form class="layui-form layui-form-pane">
12
+ <form class="layui-form layui-form-pane" style="padding-right: 20px">
13
13
  <div class="layui-form-item">
14
14
  <div class="layui-inline" style="margin:18px; font-weight: bold">
15
15
  <label>完成率:</label>
@@ -43,7 +43,9 @@
43
43
  </form>
44
44
 
45
45
  <!--表格-->
46
- <table class="layui-hide" id="newWeeklyTable" lay-filter="newWeeklyTable"></table>
46
+ <div style="padding: 20px">
47
+ <table class="layui-hide" id="newWeeklyTable" lay-filter="newWeeklyTable"></table>
48
+ </div>
47
49
  <script type="text/html" id="show_follow">
48
50
  <a href="javascript:void(0);" lay-event="show_follow" class="layui-table-link">{{ d.follow_ups_count }}</a>
49
51
  </script>
@@ -10,8 +10,15 @@ json.data do
10
10
  json.level2_score d.level2_score || 0
11
11
  json.level3_score d.level3_score || 0
12
12
  json.updated_at d.updated_at.to_s
13
+ json.weekly d.weekly
14
+ json.created_at d.created_at.to_s
15
+ json.month d.month.strftime("%Y-%m")
13
16
  end
14
17
  end
15
18
 
19
+ json.totalRow do
20
+ sum = @sale_reports.inject(0) { |score, i| score + i.finish_rate}
21
+ json.finish_rate ( @sale_reports.size > 0 ? (sum.to_f / @sale_reports.size).round(2).to_s : '0' ) + '%'
22
+ end
16
23
  json.code 0
17
24
  json.count @sale_reports.total_count
@@ -1,4 +1,4 @@
1
- <form class="layui-form layui-form-pane" action="">
1
+ <form class="layui-form layui-form-pane" action="" style="padding-right: 20px">
2
2
  <div class="layui-form-item">
3
3
  <div class="layui-inline" style="margin:18px; font-weight: bold">
4
4
  <label>完成率:</label>
@@ -20,39 +20,41 @@
20
20
  <textarea name="desc" placeholder="此处填写要点:
21
21
  1、一句话概括本周工作的主要成效和主要挫折;
22
22
  2、补充说明收获、经验;
23
- 3、补充说明需要上级解决的问题和挑战。" disabled class="layui-textarea"><%= @sale_report.content %></textarea>
23
+ 3、补充说明需要上级解决的问题和挑战。" disabled class="layui-textarea autosize"><%= @sale_report.content %></textarea>
24
24
  </div>
25
25
  </div>
26
- <div class="layui-form-item layui-form-text">
26
+ <div class="layui-form-item layui-form-text" style="margin-bottom: 0px">
27
27
  <label class="layui-form-label">大区意见</label>
28
28
  <div class="layui-input-block">
29
29
  <textarea name="desc" placeholder="给出评价、提醒、建议、办法等。" disabled
30
- class="layui-textarea"><%= @sale_report.level1_opinion %></textarea>
30
+ class="layui-textarea autosize"><%= @sale_report.level1_opinion %></textarea>
31
31
  </div>
32
32
  </div>
33
- <div id="weekStar4"></div>
34
- <div class="layui-form-item layui-form-text">
33
+ <div id="weekStar4" style="margin-bottom: 40px"></div>
34
+ <div class="layui-form-item layui-form-text" style="margin-bottom: 0px">
35
35
  <label class="layui-form-label">总监意见</label>
36
36
  <div class="layui-input-block">
37
37
  <textarea name="desc" placeholder="给出评价、提醒、建议、办法等。" disabled
38
- class="layui-textarea"><%= @sale_report.level2_opinion %></textarea>
38
+ class="layui-textarea autosize"><%= @sale_report.level2_opinion %></textarea>
39
39
  </div>
40
40
  </div>
41
- <div id="weekStar5"></div>
42
- <div class="layui-form-item layui-form-text">
41
+ <div id="weekStar5" style="margin-bottom: 40px"></div>
42
+ <div class="layui-form-item layui-form-text" style="margin-bottom: 0px">
43
43
  <label class="layui-form-label">副总意见</label>
44
44
  <div class="layui-input-block">
45
45
  <textarea name="desc" placeholder="给出评价、提醒、建议、办法等。" disabled
46
- class="layui-textarea"><%= @sale_report.level3_opinion %></textarea>
46
+ class="layui-textarea autosize"><%= @sale_report.level3_opinion %></textarea>
47
47
  </div>
48
48
  </div>
49
- <div id="weekStar6"></div>
49
+ <div id="weekStar6" style="margin-bottom: 40px"></div>
50
50
  <br>
51
51
  </div>
52
52
  </form>
53
53
 
54
54
  <!--表格-->
55
- <table class="layui-hide" id="showWeeklyTable" lay-filter="showWeeklyTable"></table>
55
+ <div style="padding: 20px">
56
+ <table class="layui-hide" id="showWeeklyTable" lay-filter="showWeeklyTable"></table>
57
+ </div>
56
58
  <script type="text/html" id="show_follow">
57
59
  <a href="javascript:void(0);" lay-event="show_follow" class="layui-table-link">{{ d.follow_ups_count }}</a>
58
60
  </script>
@@ -166,7 +168,31 @@
166
168
  ],
167
169
  page: true
168
170
  });
169
- })
170
171
 
171
172
 
173
+ autosize();
174
+ function autosize(){
175
+ var text = $('.autosize');
176
+
177
+ text.each(function(){
178
+ $(this).attr('rows',1);
179
+ resize($(this));
180
+ });
181
+
182
+ text.on('input', function(){
183
+ resize($(this));
184
+ });
185
+
186
+ function resize ($text) {
187
+ $text.css('height', 'auto');
188
+ $text.css('height', $text[0].scrollHeight+'px');
189
+ }
190
+ }
191
+ })
172
192
  </script>
193
+ <style>
194
+ .autosize {
195
+ resize: none;
196
+ overflow: hidden;
197
+ }
198
+ </style>
@@ -26,10 +26,12 @@
26
26
  elem: '#table',
27
27
  url: '/missions/sales',
28
28
  cellMinWidth: 80,
29
+ totalRow:true,
29
30
  cols: [
30
31
  [{
31
32
  field: 'id',
32
33
  title:'序号',type: 'numbers',
34
+ totalRowText:'合计',
33
35
  width: 80
34
36
  }, {
35
37
  field: 'name',
@@ -42,19 +44,23 @@
42
44
  field: 'business_a',
43
45
  title: 'A类商机',
44
46
  templet: "#business_a",
47
+ totalRow:true,
45
48
  width: 120
46
49
  }, {
47
50
  field: 'business_b',
48
51
  title: 'B类商机',
49
52
  templet: "#business_b",
53
+ totalRow:true,
50
54
  width: 120
51
55
  }, {
52
56
  field: 'goal',
53
57
  title: '中标金额',
58
+ totalRow:true,
54
59
  width: 120
55
60
  }, {
56
61
  field: 'return_money',
57
62
  title: '回款',
63
+ totalRow:true,
58
64
  width: 120
59
65
  }
60
66
  ]
@@ -1,17 +1,33 @@
1
+ businesses_a_count = 0
2
+ businesses_b_count = 0
1
3
  json.data do
2
4
  json.array! @staffs do |d|
5
+ part_a_ids = EducodeSales::Business.where("educode_sales_businesses.last_follow_up_id is null AND staff_id = ?",d.id).ids
6
+ part_b_ids = EducodeSales::Business.where("educode_sales_businesses.last_follow_up_id is not null").joins("
7
+ JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
8
+ ").where("educode_sales_follow_ups.staff_id = ?", d.id).pluck(:business_id)
9
+ business_ids = part_a_ids + part_b_ids
10
+ @businesses = EducodeSales::Business.where(id:business_ids)
3
11
  json.id d.id
4
12
  json.name d.user.real_name
5
13
  json.role d.role&.name
6
14
  json.area d.areas.present? ? d.areas.pluck(:name).join("、") : ''
7
- json.business_a 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 = ?", @a_clazz&.id).count
8
- json.business_b 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 = ?", @b_clazz&.id).count
9
- json.goal 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 != ? AND educode_sales_follow_ups.stage_id in (?)", @x, @step_ids).sum(:total_amount).round(2)
10
- json.return_money 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 != ?", @x).sum("educode_sales_businesses.return_money").round(2)
15
+ 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
+ businesses_a_count += business_a
17
+ json.business_a business_a
18
+ 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
+ businesses_b_count += business_b
20
+ json.business_b business_b
21
+ 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
+ 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)
11
23
  json.a_clazz_id @a_clazz&.id
12
24
  json.b_clazz_id @b_clazz&.id
13
25
  end
14
26
  end
15
27
 
28
+ json.totalRow do
29
+ json.business_a businesses_a_count.to_s
30
+ json.business_b businesses_b_count.to_s
31
+ end
16
32
  json.code 0
17
33
  json.count @staffs.total_count
@@ -32,10 +32,12 @@
32
32
  elem: '#oper_table',
33
33
  url: '/missions/sales/operations',
34
34
  defaultToolbar: [],
35
+ totalRow:true,
35
36
  cols: [
36
37
  [{
37
38
  field: 'id',
38
39
  title:'序号',type: 'numbers',
40
+ totalRowText:'合计',
39
41
  width: 80
40
42
  }, {
41
43
  field: 'name',
@@ -52,11 +54,13 @@
52
54
  field: 'schools',
53
55
  title: '跟进学校',
54
56
  templet: "#school",
57
+ totalRow:true,
55
58
  width: 120
56
59
  }, {
57
60
  field: 'departments',
58
61
  title: '跟进二级学院',
59
62
  templet: "#xschool",
63
+ totalRow:true,
60
64
  width: 120
61
65
  },
62
66
  ]
@@ -1,3 +1,5 @@
1
+ departments_count = 0
2
+ schools_count = 0
1
3
  json.data do
2
4
  json.array! @staffs do |d|
3
5
  json.id d.id
@@ -5,11 +7,18 @@ json.data do
5
7
  json.role d.role&.name
6
8
  json.job_type EducodeSales::Common.job_type_name[d.job_type]
7
9
  json.area d.areas.present? ? d.areas.pluck(:name).join("、") : ''
8
- json.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
9
- json.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']
10
-
10
+ 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
+ json.departments departments
12
+ 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']
13
+ json.schools schools
14
+ departments_count += departments
15
+ schools_count += schools
11
16
  end
12
17
  end
13
18
 
19
+ json.totalRow do
20
+ json.departments departments_count.to_s
21
+ json.schools schools_count.to_s
22
+ end
14
23
  json.code 0
15
24
  json.count @staffs.total_count
@@ -139,6 +139,7 @@
139
139
  url: '/missions/teachers',
140
140
  where: {q: form.val('search_form')},
141
141
  toolbar: '#toolbarDemo',
142
+ totalRow:true,
142
143
  defaultToolbar: [],
143
144
  cols: [
144
145
  [
@@ -146,6 +147,7 @@
146
147
  field: 'id',
147
148
  width: 120,
148
149
  title:'序号',type: 'numbers',
150
+ totalRowText:'合计',
149
151
  },
150
152
  {
151
153
  field: 'name',
@@ -196,6 +198,7 @@
196
198
  field: 'teacher_follows_count',
197
199
  width: 120,
198
200
  title: '跟进情况',
201
+ totalRow:true,
199
202
  templet: "#follow"
200
203
  },
201
204
  {
@@ -206,12 +209,14 @@
206
209
  {
207
210
  field: 'students',
208
211
  width: 120,
212
+ totalRow:'{{ parseInt(d.TOTAL_NUMS) }}',
209
213
  title: '学生',
210
214
  },
211
215
  {
212
216
  field: 'courses_count',
213
217
  width: 120,
214
218
  title: '课堂',
219
+ totalRow:true,
215
220
  templet: "#class"
216
221
  },
217
222
  {
@@ -1,3 +1,5 @@
1
+ teacher_follows_count = 0
2
+ courses_counts = 0
1
3
  json.data do
2
4
  json.array! @teachers do |d|
3
5
  json.id d.id
@@ -13,12 +15,20 @@ json.data do
13
15
  json.activities_count d.activity_teachers_count
14
16
  json.source EducodeSales::Common.teacher_source_name[d.source_id]
15
17
  json.attitude d.follow_up&.attitude&.name
16
- json.courses_count d.user_id ? Course.joins(:course_members).where(course_members: {user_id: d.user_id}).where("is_delete = 0 and role != 4 and excellent = 0 and is_hidden = 0").where("start_date is null or start_date <= '#{Date.today}'").distinct(:course_id).count : 0
18
+ json.courses_count d.courses_count
17
19
  json.actives d.actives
18
20
  json.students d.students_count
19
21
  json.regist_at d.user.present? ? d.user.created_on.to_s(:date) : ''
20
- json.teacher_used d.teacher_used_of_department
22
+ json.teacher_used d.teacher_used
23
+
24
+ teacher_follows_count += d.teacher_follows_count
25
+ courses_counts += d.courses_count
21
26
  end
22
27
  end
28
+
29
+ json.totalRow do
30
+ json.teacher_follows_count teacher_follows_count.to_s
31
+ json.courses_count courses_counts.to_s
32
+ end
23
33
  json.code 0
24
34
  json.count @teachers.total_count