educode_sales 0.4.8 → 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 (85) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/educode_sales//345/233/236/346/224/266/347/253/231.png +0 -0
  3. data/app/controllers/educode_sales/businesses_controller.rb +84 -5
  4. data/app/controllers/educode_sales/follow_ups_controller.rb +4 -3
  5. data/app/controllers/educode_sales/home_controller.rb +1 -1
  6. data/app/controllers/educode_sales/operation_plans_controller.rb +34 -6
  7. data/app/controllers/educode_sales/operation_reports_controller.rb +33 -3
  8. data/app/controllers/educode_sales/operations_controller.rb +1 -1
  9. data/app/controllers/educode_sales/plans_controller.rb +43 -15
  10. data/app/controllers/educode_sales/recycles_controller.rb +95 -0
  11. data/app/controllers/educode_sales/roles_controller.rb +5 -0
  12. data/app/controllers/educode_sales/sale_reports_controller.rb +34 -4
  13. data/app/controllers/educode_sales/sale_trends_controller.rb +176 -5
  14. data/app/controllers/educode_sales/sales_controller.rb +6 -2
  15. data/app/controllers/educode_sales/staffs_controller.rb +4 -4
  16. data/app/controllers/educode_sales/upload_files_controller.rb +112 -0
  17. data/app/models/concerns/deletable.rb +8 -0
  18. data/app/models/educode_sales/application_record.rb +2 -0
  19. data/app/models/educode_sales/business.rb +15 -2
  20. data/app/models/educode_sales/common.rb +6 -1
  21. data/app/models/educode_sales/follow_up.rb +4 -2
  22. data/app/models/educode_sales/recycle.rb +5 -0
  23. data/app/models/educode_sales/sale_plan.rb +3 -0
  24. data/app/models/educode_sales/sale_report.rb +2 -0
  25. data/app/views/educode_sales/businesses/edit_follow_record.html.erb +15 -0
  26. data/app/views/educode_sales/businesses/edit_plan.html.erb +2 -2
  27. data/app/views/educode_sales/businesses/file.html.erb +155 -0
  28. data/app/views/educode_sales/businesses/index.html.erb +71 -4
  29. data/app/views/educode_sales/businesses/index.json.jbuilder +3 -1
  30. data/app/views/educode_sales/businesses/new_follow_record.html.erb +22 -1
  31. data/app/views/educode_sales/businesses/show_follow.html.erb +46 -9
  32. data/app/views/educode_sales/businesses/show_follow.json.jbuilder +3 -0
  33. data/app/views/educode_sales/businesses/show_follow_record.html.erb +80 -2
  34. data/app/views/educode_sales/businesses/time_line.html.erb +62 -0
  35. data/app/views/educode_sales/businesses/upload_file.html.erb +43 -0
  36. data/app/views/educode_sales/operation_plans/_monthly.html.erb +4 -4
  37. data/app/views/educode_sales/operation_plans/_weekly.html.erb +4 -4
  38. data/app/views/educode_sales/operation_plans/index.html.erb +6 -1
  39. data/app/views/educode_sales/operation_plans/new_month.html.erb +15 -1
  40. data/app/views/educode_sales/operation_plans/new_week.html.erb +20 -5
  41. data/app/views/educode_sales/operation_reports/audit.html.erb +23 -15
  42. data/app/views/educode_sales/operation_reports/edit.html.erb +9 -9
  43. data/app/views/educode_sales/operation_reports/show.html.erb +22 -19
  44. data/app/views/educode_sales/places/index.html.erb +6 -1
  45. data/app/views/educode_sales/places/index.json.jbuilder +11 -1
  46. data/app/views/educode_sales/plans/_monthly.html.erb +4 -4
  47. data/app/views/educode_sales/plans/_weekly.html.erb +4 -4
  48. data/app/views/educode_sales/plans/index.html.erb +6 -1
  49. data/app/views/educode_sales/plans/new_monthly.html.erb +6 -6
  50. data/app/views/educode_sales/plans/new_week.html.erb +1 -1
  51. data/app/views/educode_sales/plans/new_weekly.html.erb +7 -7
  52. data/app/views/educode_sales/recycles/_business.html.erb +122 -0
  53. data/app/views/educode_sales/recycles/_monthPlan.html.erb +123 -0
  54. data/app/views/educode_sales/recycles/_monthly.html.erb +121 -0
  55. data/app/views/educode_sales/recycles/_weekPlan.html.erb +128 -0
  56. data/app/views/educode_sales/recycles/_weekly.html.erb +122 -0
  57. data/app/views/educode_sales/recycles/business.json.jbuilder +16 -0
  58. data/app/views/educode_sales/recycles/index.html.erb +58 -0
  59. data/app/views/educode_sales/recycles/monthPlan.json.jbuilder +16 -0
  60. data/app/views/educode_sales/recycles/monthly.json.jbuilder +15 -0
  61. data/app/views/educode_sales/recycles/weekPlan.json.jbuilder +16 -0
  62. data/app/views/educode_sales/recycles/weekly.json.jbuilder +15 -0
  63. data/app/views/educode_sales/roles/index.html.erb +19 -1
  64. data/app/views/educode_sales/roles/rename.html.erb +50 -0
  65. data/app/views/educode_sales/sale_reports/audit.html.erb +24 -13
  66. data/app/views/educode_sales/sale_reports/edit.html.erb +7 -7
  67. data/app/views/educode_sales/sale_reports/show.html.erb +13 -10
  68. data/app/views/educode_sales/sale_trends/trends.html.erb +228 -8
  69. data/app/views/educode_sales/sale_trends/trends.json.jbuilder +14 -0
  70. data/app/views/educode_sales/sales/index.html.erb +72 -6
  71. data/app/views/educode_sales/sales/index.json.jbuilder +35 -1
  72. data/app/views/educode_sales/sales/operations.json.jbuilder +11 -1
  73. data/app/views/educode_sales/staffs/index.html.erb +6 -1
  74. data/app/views/educode_sales/staffs/index.json.jbuilder +11 -1
  75. data/app/views/educode_sales/teachers/add_keys.html.erb +3 -3
  76. data/app/views/educode_sales/teachers/index.html.erb +7 -2
  77. data/app/views/educode_sales/teachers/new.html.erb +1 -0
  78. data/app/views/educode_sales/upload_files/index.json.jbuilder +13 -0
  79. data/app/views/layouts/educode_sales/application.html.erb +3 -0
  80. data/config/routes.rb +30 -0
  81. data/db/migrate/20210902064109_create_educode_sales_role_permissions.rb +6 -0
  82. data/db/migrate/20211102085743_add_bidded_date_educode_sales_follow_ups.rb +6 -0
  83. data/db/migrate/20211109015617_create_educode_sales_recycles.rb +25 -0
  84. data/lib/educode_sales/version.rb +1 -1
  85. metadata +26 -2
@@ -88,7 +88,7 @@
88
88
  <div class="panel layui-bg-number">
89
89
  <div class="panel-body">
90
90
  <div class="panel-title">
91
- <h5>现有商机</h5>
91
+ <h5>现有商机<a href="/missions/businesses?name=(销售态势-现有商机)" style="color: #0000FF;float: right">查看商机</a></h5>
92
92
  </div>
93
93
  <div class="panel-content y-t-10">
94
94
  <h1 class="no-margins"><%= @business_amount %>万</h1>
@@ -101,7 +101,7 @@
101
101
  <div class="panel layui-bg-number">
102
102
  <div class="panel-body">
103
103
  <div class="panel-title">
104
- <h5>已中标</h5>
104
+ <h5>已中标<a href="/missions/businesses?name=(销售态势-<%=@year %>-已中标商机)" style="color: #0000FF;float: right">查看商机</a></h5>
105
105
  </div>
106
106
  <div class="panel-content y-t-10">
107
107
  <h1 class="no-margins"><%= @goal_amount %>万</h1>
@@ -114,7 +114,7 @@
114
114
  <div class="panel layui-bg-number">
115
115
  <div class="panel-body">
116
116
  <div class="panel-title">
117
- <h5>已签单</h5>
117
+ <h5>已签单<a href="/missions/businesses?name=(销售态势-<%=@year %>-已签单商机)" style="color: #0000FF;float: right">查看商机</a></h5>
118
118
  </div>
119
119
  <div class="panel-content y-t-10">
120
120
  <h1 class="no-margins"><%= @service_amount %>万</h1>
@@ -127,7 +127,7 @@
127
127
  <div class="panel layui-bg-number">
128
128
  <div class="panel-body">
129
129
  <div class="panel-title">
130
- <h5>已回款</h5>
130
+ <h5>已回款<a href="/missions/businesses?name=(销售态势-<%=@year %>-已回款商机)" style="color: #0000FF;float: right">查看商机</a></h5>
131
131
  </div>
132
132
  <div class="panel-content y-t-10">
133
133
  <h1 class="no-margins"><%= @return_amount %>万</h1>
@@ -140,7 +140,7 @@
140
140
  <div class="panel layui-bg-number">
141
141
  <div class="panel-body">
142
142
  <div class="panel-title">
143
- <h5>A类商机</h5>
143
+ <h5>A类商机<a href="/missions/businesses?clazz_id=<%=EducodeSales::Common.find_by(extras: EducodeSales::Common::ATYPE)&.id %>" style="color: #0000FF;float: right">查看商机</a></h5>
144
144
  </div>
145
145
  <div class="panel-content y-t-10">
146
146
  <h1 class="no-margins"><%= @a_amount %>万</h1>
@@ -153,7 +153,7 @@
153
153
  <div class="panel layui-bg-number">
154
154
  <div class="panel-body">
155
155
  <div class="panel-title">
156
- <h5>B类商机</h5>
156
+ <h5>B类商机<a href="/missions/businesses?clazz_id=<%=EducodeSales::Common.find_by(extras: EducodeSales::Common::BTYPE)&.id %>" style="color: #0000FF;float: right">查看商机</a></h5>
157
157
  </div>
158
158
  <div class="panel-content y-t-10">
159
159
  <h1 class="no-margins"><%= @b_amount %>万</h1>
@@ -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>
@@ -1,15 +1,25 @@
1
+ area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
1
2
  json.data do
2
3
  json.array! @staffs do |d|
3
4
  json.id d.id
4
5
  json.name d.user.real_name
5
6
  json.role d.role&.name
6
- json.area d.areas.present? ? d.areas.pluck(:name).join("、") : ''
7
7
  json.job_type EducodeSales::Common.job_type_name[d.job_type]
8
8
  json.month d.month
9
9
  json.enabled_at d.enabled_at ? d.enabled_at.to_s(:date) : ''
10
10
  json.expired_at d.enabled_at ? "#{d.enabled_at.to_s(:date)}-#{d.expired_at.to_s(:date)}" : ''
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
11
20
  end
12
21
  end
13
22
 
23
+
14
24
  json.code 0
15
25
  json.count @staffs.total_count
@@ -116,13 +116,13 @@
116
116
  </div>
117
117
  </script>
118
118
  <script type="text/html" id="key_person_tabar">
119
- {{# if(parent.is_latest){ }}
119
+ {{# if(parent.is_latest && parent.flag){ }}
120
120
  <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">保存</a>
121
121
  <a class="layui-btn layui-btn-danger layui-btn-xs data-count-edit" lay-event="delete">删除</a>
122
122
  {{# } }}
123
123
  </script>
124
124
  <script>
125
- if(!parent.is_latest){
125
+ if(!parent.is_latest || !parent.flag){
126
126
  document.getElementById("show_follow_box").style.display="none";//隐藏
127
127
  }
128
128
  layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'laydate', 'selectInput'], function () {
@@ -144,7 +144,7 @@
144
144
  $(document).on('click','#new_teacher1',function(){
145
145
  var content = miniPage.getHrefContent('/missions/teachers/new');
146
146
  var openWH = miniPage.getOpenWidthHeight();
147
- sindex = layer.open({
147
+ teacher_uni_index = layer.open({
148
148
  id:"a",
149
149
  title: '添加老师',
150
150
  type: 1,
@@ -52,7 +52,7 @@
52
52
  </div>
53
53
 
54
54
  <div class="layui-inline">
55
- <button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
55
+ <button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
56
56
  </button>
57
57
  <button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_teachers">搜 索
58
58
  </button>
@@ -588,4 +588,9 @@
588
588
  });
589
589
 
590
590
  });
591
- </script>
591
+ </script>
592
+ <style>
593
+ .layui-table-tool-temp{
594
+ padding-right: 30px; !important;
595
+ }
596
+ </style>
@@ -156,6 +156,7 @@
156
156
  table.reload('teachers_table');
157
157
  layer.close(parent.index)
158
158
  layer.close(parent.sindex)
159
+ layer.close(parent.teacher_uni_index)
159
160
  }
160
161
  })
161
162
  return false;
@@ -0,0 +1,13 @@
1
+ json.data do
2
+ json.array! @files do |d|
3
+ json.id d.id
4
+ json.name d.filename
5
+ json.size d.filesize < 1000000 ? (d.filesize.to_f / 1000).round(2).to_s + 'KB' : (d.filesize.to_f / 1000000).round(2).to_s + 'MB'
6
+ json.created_on d.created_on.to_s
7
+ json.upload_person EducodeSales::Staff.find(d.author_id).user.real_name
8
+ json.disk_filename d.disk_filename
9
+ json.content_type d.content_type
10
+ end
11
+ end
12
+ json.code 0
13
+ json.count @files.total_count
@@ -69,6 +69,9 @@
69
69
  <% if can? :read, EducodeSales::SalePlan %>
70
70
  <dd><a href="/missions/plans" class="<%= current?('layui-this', plans_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/6.销售计划.png",size:"15"%><i style="font-size: 25px; padding-right: 15px"></i>销售计划</a></dd>
71
71
  <% end %>
72
+ <% if @current_admin.is_admin %>
73
+ <dd><a href="/missions/recycles" class="<%= current?('layui-this', recycles_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/回收站.png",size:"15"%><i style="font-size: 25px; padding-right: 15px"></i>回收站</a></dd>
74
+ <%end %>
72
75
  </dl>
73
76
  </li>
74
77
  <li class="layui-nav-item layui-nav-itemed menu-li">