educode_sales 0.7.7 → 0.8.1

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 (32) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/educode_sales/application_controller.rb +24 -0
  3. data/app/controllers/educode_sales/assessments_controller.rb +151 -285
  4. data/app/controllers/educode_sales/businesses_controller.rb +68 -2
  5. data/app/controllers/educode_sales/customers_controller.rb +0 -3
  6. data/app/helpers/educode_sales/application_helper.rb +3 -3
  7. data/app/models/educode_sales/business.rb +8 -0
  8. data/app/models/educode_sales/business_relation_ship.rb +6 -0
  9. data/app/models/educode_sales/customer_follow.rb +1 -0
  10. data/app/models/educode_sales/filter.rb +18 -0
  11. data/app/models/educode_sales/follow_up.rb +2 -0
  12. data/app/models/educode_sales/role_area.rb +1 -1
  13. data/app/views/educode_sales/assessments/_progress.html.erb +7 -4
  14. data/app/views/educode_sales/assessments/_setup.html.erb +115 -13
  15. data/app/views/educode_sales/assessments/edit.html.erb +47 -54
  16. data/app/views/educode_sales/assessments/index.html.erb +1 -2
  17. data/app/views/educode_sales/assessments/index.json.jbuilder +1 -1
  18. data/app/views/educode_sales/assessments/new.html.erb +148 -111
  19. data/app/views/educode_sales/assessments/progress.json.jbuilder +2 -198
  20. data/app/views/educode_sales/businesses/following_businesses.jbuilder +44 -0
  21. data/app/views/educode_sales/businesses/index.html.erb +175 -27
  22. data/app/views/educode_sales/businesses/index.json.jbuilder +1 -0
  23. data/app/views/educode_sales/businesses/new_follow_record.html.erb +1 -1
  24. data/app/views/educode_sales/plans/edit_month.html.erb +1 -1
  25. data/app/views/layouts/educode_sales/application.html.erb +2 -2
  26. data/config/routes.rb +4 -0
  27. data/db/migrate/20220419103842_add_column_timestamps_to_assessments_settings.rb +9 -0
  28. data/db/migrate/20220420071909_create_educode_sales_business_relation_ships.rb +10 -0
  29. data/db/migrate/20220507020149_create_filter.rb +10 -0
  30. data/db/migrate/20220507091959_change_educode_sales_filter_column_length.rb +5 -0
  31. data/lib/educode_sales/version.rb +1 -1
  32. metadata +9 -2
@@ -0,0 +1,44 @@
1
+ follow_up_ids = EducodeSales::AssignFollowUp.where(staff_id: @current_admin.id).pluck(:follow_up_id)
2
+ follow_count = 0
3
+ json.data do
4
+ json.array! @businesses do |d|
5
+ json.id d.id
6
+ json.name d.name
7
+ json.department d.department.name
8
+ json.school d.department.school.name
9
+ json.school_id d.department.school.id
10
+ follow_ups_count = d.follow_ups.where(deleted_at: nil).size
11
+ json.follow_ups_count follow_ups_count
12
+ follow_count += follow_ups_count
13
+ json.follow_up_id d.last_follow_up_id
14
+ json.clazz d.last_follow_up&.clazz&.name || ""
15
+ json.stage d.last_follow_up&.stage&.name
16
+ json.invitation_at d.last_follow_up&.invitation_at.to_s
17
+ json.reception_at d.last_follow_up&.reception_at.to_s
18
+ json.bidded_date d.last_follow_up&.bidded_date.to_s
19
+ json.signed_date d.last_follow_up&.signed_date.to_s
20
+ json.service_end_time d.last_follow_up&.service_start_time.to_s + "-" + d.last_follow_up&.service_end_time.to_s
21
+ json.year d.last_follow_up&.year.to_s
22
+ json.total_amount d.last_follow_up&.total_amount
23
+ json.actual_amount d.last_follow_up&.actual_amount
24
+ json.return_money d.return_money
25
+ json.wait_return_money d.wait_return_money.to_f.round(2)
26
+ json.return_money_days d.last_follow_up&.reception_at.present? && d.last_follow_up.money_plans.where(clazz: '实际回款').present? ? (d.last_follow_up.money_plans.where(clazz: '实际回款').order(created_at: :asc).first.date_at.to_s(:date).to_date - d.last_follow_up&.reception_at).to_i : ''
27
+ json.place d.last_follow_up&.place&.name
28
+ json.last_follow_person d.last_follow_up.present? ? d.last_follow_up.staff.user.real_name : EducodeSales::Staff.find(d.staff_id).user.real_name
29
+ json.source d.source
30
+ json.assign_follow_ups d.last_follow_up.present? ? d.last_follow_up.assign_follow_ups.pluck(:staff_id) : []
31
+ json.current_staff_id @current_admin.id
32
+ json.staff_id d.staff_id
33
+ json.latest_time d.last_follow_up.present? ? d.last_follow_up.created_at.to_s : ''
34
+ json.self_flag (d.staff_id == @current_admin.id) || (d.last_follow_up_id.in? follow_up_ids)
35
+ json.followed d.users.where(user_id:@current_admin.user.id).first ? 1 : 0
36
+ end
37
+ end
38
+
39
+ json.totalRow do
40
+ json.follow_ups_count follow_count.to_i.to_s
41
+ end
42
+ json.code 0
43
+ json.count @businesses.size
44
+ json.msg 'succcess'
@@ -100,6 +100,7 @@
100
100
  <% if can? :create, EducodeSales::Business %>
101
101
  <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add"> 添加商机</button>
102
102
  <% end %>
103
+ <button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right" lay-event="followes"> 我的关注</button>
103
104
  <button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right" lay-event="mine"> 我的商机</button>
104
105
  <button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right" lay-event="all"> 全部商机</button>
105
106
  </div>
@@ -138,9 +139,14 @@
138
139
  {{# }}}
139
140
  <% end %>
140
141
  <% if @more %>
141
- <a class="layui-btn-xs data-count-edit more-btn" data-name={{d.name}} data-id={{d.id}}>更多<i class="layui-icon layui-icon-down layui-nav-more"></i></a>
142
+ {{# if(d.followed==0){}}
143
+ <a class="layui-btn-xs data-count-edit more-btn more-btn1" data-name={{d.name}} data-id={{d.id}}>更多<i class="layui-icon layui-icon-down layui-nav-more"></i></a>
144
+ {{# }else{}}
145
+ <a class="layui-btn-xs data-count-edit more-btn more-btn2" data-name={{d.name}} data-id={{d.id}}>更多<i class="layui-icon layui-icon-down layui-nav-more"></i></a>
146
+ {{# }}}
142
147
  <% end %>
143
148
  </script>
149
+
144
150
  <script type="text/html" id="show_keys">
145
151
  <a href="javascript:void(0);" lay-event="show_keys" class="layui-table-link">{{ d.teachers_count }}</a>
146
152
  </script>
@@ -151,10 +157,13 @@
151
157
  <a href="<%= base_url%>/colleges/{{d.school_id}}/statistics" class="layui-table-link" target="_blank">{{ d.school
152
158
  }}</a>
153
159
  </script>
160
+ <script type="text/html" id="follows">
161
+ <a href="<%= base_url%>/colleges/{{d.school_id}}/statistics" class="layui-table-link" target="_blank">kkkkk</a>
162
+ </script>
154
163
 
155
164
 
156
165
  <script>
157
- layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate', 'dropdown'], function () {
166
+ layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate', 'dropdown','laytpl'], function () {
158
167
  var $ = layui.jquery,
159
168
  form = layui.form,
160
169
  request = layui.request,
@@ -252,8 +261,8 @@
252
261
  elem: '#businesses_table',
253
262
  url: '/missions/businesses',
254
263
  where: {q: data},
255
- defaultToolbar: ['filter'],
256
264
  toolbar: '#bussinessBar',
265
+ defaultToolbar: ['filter'],
257
266
  title: '商机数据表',
258
267
  totalRow: true,//开启合并行
259
268
  cols: [
@@ -270,19 +279,22 @@
270
279
  width: 170,
271
280
  title: '商机名称',
272
281
  templet: '<div><span title="{{d.name}}">{{d.name}}</span></div>',
273
- fixed: 'left'
282
+ fixed: 'left',
283
+ hide: gon.business_filter.name
274
284
  },
275
285
  {
276
286
  field: 'school',
277
287
  width: 150,
278
288
  title: '单位',
279
- templet: '#school_name'
289
+ templet: '#school_name',
290
+ hide: gon.business_filter.school
280
291
  },
281
292
  {
282
293
  field: 'department',
283
294
  width: 150,
284
295
  title: '部门',
285
- templet: '<div><span title="{{d.department}}">{{d.department}}</span></div>'
296
+ templet: '<div><span title="{{d.department}}">{{d.department}}</span></div>',
297
+ hide: gon.business_filter.department
286
298
  },
287
299
  {
288
300
  field: 'follow_ups_count',
@@ -290,6 +302,7 @@
290
302
  width: 60,
291
303
  templet: '#show_follow',
292
304
  totalRow: true,
305
+ hide: gon.business_filter.name
293
306
  },
294
307
  // {
295
308
  // field: 'teachers_count',
@@ -301,109 +314,142 @@
301
314
  field: 'clazz',
302
315
  width: 80,
303
316
  title: '类型',
304
- templet: '<div><span title="{{d.clazz}}">{{d.clazz}}</span></div>'
317
+ templet: '<div><span title="{{d.clazz}}">{{d.clazz}}</span></div>',
318
+ hide: gon.business_filter.name
305
319
  },
306
320
  {
307
321
  field: 'stage',
308
322
  width: 90,
309
- title: '阶段'
323
+ title: '阶段',
324
+ hide: gon.business_filter.name
310
325
  },
311
326
  {
312
327
  field: 'source',
313
328
  width: 90,
314
- title: '商机来源'
329
+ title: '商机来源',
330
+ hide: gon.business_filter.source
315
331
  },
316
332
  {
317
333
  field: 'last_follow_person',
318
334
  width: 100,
319
- title: '最新跟进人'
335
+ title: '最新跟进人',
336
+ hide: gon.business_filter.last_follow_person
320
337
  },
321
338
  {
322
339
  field: 'latest_time',
323
340
  width: 200,
324
341
  title: '最新跟进时间',
325
- sort: true
342
+ sort: true,
343
+ hide: gon.business_filter.latest_time
326
344
  },
327
345
  {
328
346
  field: 'invitation_at',
329
347
  width: 105,
330
348
  title: '招标时间',
331
- sort: true
349
+ sort: true,
350
+ hide: gon.business_filter.invitation_at
332
351
  },
333
352
  {
334
353
  field: 'bidded_date',
335
354
  width: 105,
336
355
  title: '中标时间',
337
- sort: true
356
+ sort: true,
357
+ hide: gon.business_filter.bidded_date
338
358
  },
339
359
  {
340
360
  field: 'signed_date',
341
361
  width: 105,
342
362
  title: '签单时间',
343
- sort: true
363
+ sort: true,
364
+ hide: gon.business_filter.signed_date
344
365
  },
345
366
  {
346
367
  field: 'reception_at',
347
368
  width: 105,
348
369
  title: '验收时间',
349
- sort: true
370
+ sort: true,
371
+ hide: gon.business_filter.reception_at
350
372
  },
351
373
  {
352
374
  field: 'service_end_time',
353
375
  width: 200,
354
376
  title: '服务期',
355
- sort: true
377
+ sort: true,
378
+ hide: gon.business_filter.service_end_time
356
379
  },
357
380
  {
358
381
  field: 'total_amount',
359
382
  width: 100,
360
383
  title: '总额',
361
384
  totalRow: true,
362
- sort: true
385
+ sort: true,
386
+ hide: gon.business_filter.total_amount
363
387
  },
364
388
  {
365
389
  field: 'actual_amount',
366
390
  width: 100,
367
391
  title: '合同额',
368
392
  totalRow: true,
369
- sort: true
393
+ sort: true,
394
+ hide: gon.business_filter.actual_amount
370
395
  },
371
396
  {
372
397
  field: 'return_money',
373
398
  width: 100,
374
399
  title: '回款',
375
400
  sort: true,
376
- totalRow: true
401
+ totalRow: true,
402
+ hide: gon.business_filter.return_money
377
403
  },
378
404
  {
379
405
  field: 'wait_return_money',
380
406
  width: 100,
381
407
  title: '待回款',
382
408
  sort: true,
383
- totalRow: true
409
+ totalRow: true,
410
+ hide: gon.business_filter.wait_return_money
384
411
  },
385
412
  {
386
413
  field: 'return_money_days',
387
414
  width: 150,
388
415
  title: '首次回款周期(天)',
416
+ hide: gon.business_filter.return_money_days
389
417
  },
390
418
  {
391
419
  field: 'place',
392
420
  width: 160,
393
421
  title: '渠道',
422
+ hide: gon.business_filter.place
394
423
  },
395
424
  {
396
425
  field: 'year',
397
426
  width: 105,
398
427
  title: '所属年度',
399
- sort: true
428
+ sort: true,
429
+ hide: gon.business_filter.year
400
430
  },
431
+ {
432
+ field: 'followed',
433
+ templet:function(d){
434
+ if (d.followed==1){
435
+
436
+ return '<i class="layui-icon" style="color: goldenrod">&#xe658;</i> '
437
+ }
438
+
439
+ else return ''
440
+ },
441
+ width: 105,
442
+ title: '关注',
443
+ align: "center",
444
+ hide: gon.business_filter.followed
445
+
446
+ },
401
447
  {
402
448
  title: '操作',
403
449
  minWidth: 220,
404
450
  toolbar: '#currentTableBar',
405
451
  align: "center",
406
- fixed: 'right'
452
+ fixed: 'right',
407
453
  }
408
454
  ]
409
455
  ],
@@ -422,15 +468,18 @@
422
468
  });
423
469
 
424
470
  var dropmenu = gon.menus;
471
+ var dropmenu2=JSON.parse(JSON.stringify(dropmenu));
425
472
  var export_dropmenu = gon.export_menus;
473
+ dropmenu2[dropmenu2.findIndex(function (elem){return elem.title.includes("关注")})].title="取消关注";
426
474
 
427
475
  drowpdwonRender = function() {
428
476
  dropdown.render({
429
- elem: '.more-btn',
430
- data: dropmenu,
477
+ elem: '.more-btn1',
478
+ data: dropmenu,//dropmenu,
431
479
  click: function(data, othis){
432
480
  var elem = $(this.elem);
433
481
  id = elem.data('id');
482
+
434
483
  switch (data.event) {
435
484
  case 'week':
436
485
  week(id);
@@ -450,9 +499,44 @@
450
499
  case 'delete':
451
500
  deleteBusiness(id, elem.data('name'));
452
501
  break;
502
+ case 'following':
503
+ following(id);
504
+ break;
453
505
  }
454
506
  }
455
507
  });
508
+ dropdown.render({
509
+ elem: '.more-btn2',
510
+ data: dropmenu2,//dropmenu,
511
+ click: function(data, othis){
512
+ var elem = $(this.elem);
513
+ id = elem.data('id');
514
+
515
+ switch (data.event) {
516
+ case 'week':
517
+ week(id);
518
+ break;
519
+ case 'month':
520
+ month(id);
521
+ break;
522
+ case 'edit':
523
+ edit(id);
524
+ break;
525
+ case 'file':
526
+ file(id, elem.data('name'));
527
+ break;
528
+ case 'time_line':
529
+ time_line(id, elem.data('name'));
530
+ break;
531
+ case 'delete':
532
+ deleteBusiness(id, elem.data('name'));
533
+ break;
534
+ case 'following':
535
+ following(id);
536
+ break;
537
+ }
538
+ }
539
+ });
456
540
  }
457
541
 
458
542
  export_drowpdwonRender = function() {
@@ -585,6 +669,41 @@
585
669
  layer.full(sindex);
586
670
  });
587
671
  }
672
+ function following(id) {
673
+ $.ajax({
674
+ type: "get",
675
+ dataType: "json",
676
+ url: '/missions/businesses/followed',
677
+ data: {business_id:id},
678
+ success: function (data) {
679
+ layer.open({
680
+ title:'关注',
681
+ content:data.msg,
682
+ btn: ['确认', '取消'],
683
+ yes:function (){
684
+ $.ajax({
685
+ type: "post",
686
+ dataType: "json",
687
+ url: '/missions/businesses/following',
688
+ data: {business_id:id},
689
+ success: function (da) {
690
+
691
+ layer.msg(da.msg,{icon: da.code==200? 1:2})
692
+ table.reload("businesses_table")
693
+
694
+ },
695
+ error:function (da){
696
+ alert('请求错误')
697
+ }
698
+ });
699
+ }
700
+ })
701
+ },
702
+ error:function (data){
703
+ alert('请求错误')
704
+ }
705
+ });
706
+ }
588
707
 
589
708
  function edit(id) {
590
709
  var content = miniPage.getHrefContent('/missions/businesses/' + id + '/edit');
@@ -662,7 +781,7 @@
662
781
  layer.confirm('确定删除' + name, function (index) {
663
782
  request.delete('missions/businesses/' + id, {}, function (res) {
664
783
  layer.close(index);
665
- table.reload("businesses_table")
784
+ table.reload("businesses_table",{url: '/missions/businesses'})
666
785
  })
667
786
  });
668
787
  }
@@ -674,6 +793,7 @@
674
793
  sort.field = obj.field;
675
794
  sort.order = obj.type;
676
795
  table.reload('businesses_table', {
796
+ url: '/missions/businesses',
677
797
  initSort: obj,
678
798
  where: {
679
799
  sort: sort,
@@ -698,12 +818,14 @@
698
818
  search = data.field
699
819
  console.log(search);
700
820
  table.reload('businesses_table', {
821
+ url: '/missions/businesses',
701
822
  page: {
702
823
  curr: 1
703
824
  },
704
825
  where: {q: search, sort: sort}
705
826
  }, 'data');
706
827
  table.reload('teachers_table', {
828
+ url: '/missions/businesses',
707
829
  page: {
708
830
  curr: 1
709
831
  },
@@ -734,6 +856,17 @@
734
856
  });
735
857
 
736
858
  table.on('toolbar(businesses_table)', function (obj) {
859
+ switch (obj.event) {
860
+ case 'LAYTABLE_COLS':
861
+ layui.form.on('checkbox(LAY_TABLE_TOOL_COLS)', function(obj) {
862
+ var value = obj.elem.checked
863
+ var name = obj.elem.attributes[1].value
864
+ console.log(obj.elem.attributes.name);
865
+ request.get('missions/filter?type=businesses_list&name='+name+'&hidden='+value,{},function (res){})
866
+ });
867
+ }
868
+
869
+
737
870
  if (obj.event === 'add') { // 监听添加操作
738
871
  var content = miniPage.getHrefContent('/missions/businesses/new');
739
872
  var openWH = miniPage.getOpenWidthHeight();
@@ -753,6 +886,21 @@
753
886
  } else if (obj.event === 'all') {
754
887
  search = {"all":"1"}
755
888
  table.reload('businesses_table', {
889
+ url: '/missions/businesses',
890
+ page: {
891
+ curr: 1
892
+ },
893
+ where: {q: search, sort: sort}
894
+ }, 'data');
895
+ form.val('search_form', {
896
+ name: '', department: '', staff_id: '', business_type: '', business_step: '',
897
+ place_id: '', date: '', area: ''
898
+ })
899
+ return false;
900
+ } else if (obj.event === 'followes') {
901
+ search = {"all":"1"}
902
+ table.reload('businesses_table', {
903
+ url: '/missions/businesses/following_businesses',
756
904
  page: {
757
905
  curr: 1
758
906
  },
@@ -767,6 +915,7 @@
767
915
  else if (obj.event === 'mine') {
768
916
  search = {"mine":"1"}
769
917
  table.reload('businesses_table', {
918
+ url: '/missions/businesses',
770
919
  page: {
771
920
  curr: 1
772
921
  },
@@ -829,7 +978,7 @@
829
978
  layer.confirm('确定删除' + data.name, function (index) {
830
979
  request.delete('missions/businesses/' + data.id, {}, function (res) {
831
980
  layer.close(index);
832
- table.reload("businesses_table")
981
+ table.reload("businesses_table",{url: '/missions/businesses',})
833
982
  })
834
983
  });
835
984
  }else if (obj.event === 'add_follow') { // 监听添加操作
@@ -929,7 +1078,6 @@
929
1078
  });
930
1079
  }
931
1080
  });
932
-
933
1081
  });
934
1082
  </script>
935
1083
  <style>
@@ -32,6 +32,7 @@ json.data do
32
32
  json.staff_id d.staff_id
33
33
  json.latest_time d.last_follow_up.present? ? d.last_follow_up.created_at.to_s : ''
34
34
  json.self_flag (d.staff_id == @current_admin.id) || (d.last_follow_up_id.in? follow_up_ids)
35
+ json.followed d.users.where(user_id:@current_admin.user.id).first ? 1 : 0
35
36
  end
36
37
  end
37
38
 
@@ -71,7 +71,7 @@
71
71
  <div class="layui-inline service_show layui-hide">
72
72
  <label class="layui-form-label required">服务期</label>
73
73
  <div class="layui-input-inline">
74
- <input type="text" class="layui-input required" id="service_time" name="service_time" placeholder=" - " autocomplete="off" value=<%= (@last_follow_up&.service_start_time.present? && @last_follow_up&.service_end_time.present?) ? (@last_follow_up.service_start_time.to_s + "-" + @last_follow_up.service_end_time.to_s) : '' %>>
74
+ <input type="text" class="layui-input required" id="service_time" name="service_time" placeholder=" - " autocomplete="off" value="<%= (@last_follow_up&.service_start_time.present? && @last_follow_up&.service_end_time.present?) ? (@last_follow_up.service_start_time.to_s + " - " + @last_follow_up.service_end_time.to_s) : '' %>">
75
75
  </div>
76
76
  </div>
77
77
  <br class="service_show layui-hide">
@@ -38,7 +38,7 @@
38
38
  layui.use(['form', 'table', 'laytpl', 'request', 'laydate'], function () {
39
39
  var form = layui.form,
40
40
  layer = layui.layer,
41
- laydate = layui.laydate
41
+ laydate = layui.laydate,
42
42
  table = layui.table,
43
43
  request = layui.request,
44
44
  $ = layui.$;
@@ -31,7 +31,7 @@
31
31
  </li>
32
32
  </ul>
33
33
  <ul class="layui-nav layui-layout-right">
34
- <li class="layui-nav-item layui-hide layui-show-md-inline-block" id="logout">
34
+ <li class="layui-nav-item layui-show-md-inline-block" id="logout">
35
35
  <a href="javascript:;">
36
36
  <%= image_tag "/images/#{url_to_avatar(@current_admin.user)}", class: 'layui-nav-img' %>
37
37
  <%= @current_admin.user.real_name %>
@@ -81,7 +81,7 @@
81
81
  <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>
82
82
  <% end %>
83
83
  <% if can?(:show, EducodeSales::AssessmentsSetting) || can?(:show_result, EducodeSales::AssessmentsSetting) %>
84
- <!-- <dd><a href="/missions/assessments" class="<%#= current?('layui-this', assessments_path) %>"><i style="padding-right: 35px"></i><%#= image_tag "educode_sales/assessment.png",size:"15"%><i style="font-size: 25px; padding-right: 15px"></i>绩效考核</a></dd>-->
84
+ <dd><a href="/missions/assessments" class="<%= current?('layui-this', assessments_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/assessment.png",size:"15"%><i style="font-size: 25px; padding-right: 15px"></i>绩效考核</a></dd>
85
85
  <% end %>
86
86
  <% if can? :sales, EducodeSales::Staff %>
87
87
  <dd><a href="/missions/sales" class="<%= current?('layui-this', sales_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/3.销售分工.png",size:"15"%><i style="font-size: 25px; padding-right: 15px"></i>销售分工</a>
data/config/routes.rb CHANGED
@@ -13,6 +13,7 @@ EducodeSales::Engine.routes.draw do
13
13
  get :sales_staff, to: "home#sales_staff"
14
14
  get :sales_place, to: "home#sales_place"
15
15
  get :staff_schools, to: "home#staff_schools"
16
+ get :filter, to: "application#filter"
16
17
 
17
18
 
18
19
  resources :sessions do
@@ -85,6 +86,7 @@ EducodeSales::Engine.routes.draw do
85
86
 
86
87
  resources :businesses do
87
88
  collection do
89
+ post :following
88
90
  get :export_records
89
91
  post :get_export_data
90
92
  get :add_export_records
@@ -98,6 +100,8 @@ EducodeSales::Engine.routes.draw do
98
100
  get :file
99
101
  get :time_line
100
102
  get :upload_file
103
+ get :following_businesses
104
+ get :followed
101
105
  end
102
106
 
103
107
  member do
@@ -0,0 +1,9 @@
1
+ class AddColumnTimestampsToAssessmentsSettings < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_timestamps :educode_sales_assessments_settings
4
+ end
5
+ # def change_table
6
+ # add_timestamps(:assessments_settings)
7
+ # end
8
+ end
9
+
@@ -0,0 +1,10 @@
1
+ class CreateEducodeSalesBusinessRelationShips < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :educode_sales_business_relation_ships do |t|
4
+ t.integer :user_id
5
+ t.integer :business_id
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ class CreateFilter < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :educode_sales_filters do |t|
4
+ t.string :filter_type
5
+ t.references :staff
6
+ t.string :filter_data
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ class ChangeEducodeSalesFilterColumnLength < ActiveRecord::Migration[5.2]
2
+ def change
3
+ change_column :educode_sales_filters, :filter_data, :text
4
+ end
5
+ end
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '0.7.7'
2
+ VERSION = '0.8.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: educode_sales
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.7
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - anke1460
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-21 00:00:00.000000000 Z
11
+ date: 2022-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -186,12 +186,14 @@ files:
186
186
  - app/models/educode_sales/assign_follow_up.rb
187
187
  - app/models/educode_sales/business.rb
188
188
  - app/models/educode_sales/business_export_record.rb
189
+ - app/models/educode_sales/business_relation_ship.rb
189
190
  - app/models/educode_sales/common.rb
190
191
  - app/models/educode_sales/course_subject.rb
191
192
  - app/models/educode_sales/customer.rb
192
193
  - app/models/educode_sales/customer_add.rb
193
194
  - app/models/educode_sales/customer_extension.rb
194
195
  - app/models/educode_sales/customer_follow.rb
196
+ - app/models/educode_sales/filter.rb
195
197
  - app/models/educode_sales/follow_up.rb
196
198
  - app/models/educode_sales/key_person.rb
197
199
  - app/models/educode_sales/market_area.rb
@@ -235,6 +237,7 @@ files:
235
237
  - app/views/educode_sales/businesses/export_records.html.erb
236
238
  - app/views/educode_sales/businesses/export_records.json.jbuilder
237
239
  - app/views/educode_sales/businesses/file.html.erb
240
+ - app/views/educode_sales/businesses/following_businesses.jbuilder
238
241
  - app/views/educode_sales/businesses/get_export_data.json.jbuilder
239
242
  - app/views/educode_sales/businesses/index.html.erb
240
243
  - app/views/educode_sales/businesses/index.json.jbuilder
@@ -449,6 +452,10 @@ files:
449
452
  - db/migrate/20220411021641_add_new_column_assessments_settings.rb
450
453
  - db/migrate/20220413090940_add_september_progress_to_assessment_settings.rb
451
454
  - db/migrate/20220418033025_add_staff_id_to_sets.rb
455
+ - db/migrate/20220419103842_add_column_timestamps_to_assessments_settings.rb
456
+ - db/migrate/20220420071909_create_educode_sales_business_relation_ships.rb
457
+ - db/migrate/20220507020149_create_filter.rb
458
+ - db/migrate/20220507091959_change_educode_sales_filter_column_length.rb
452
459
  - lib/educode_sales.rb
453
460
  - lib/educode_sales/engine.rb
454
461
  - lib/educode_sales/version.rb