educode_sales 0.7.6 → 0.7.9

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 (30) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/educode_sales/top_page.png +0 -0
  3. data/app/controllers/educode_sales/assessments_controller.rb +139 -282
  4. data/app/controllers/educode_sales/businesses_controller.rb +59 -1
  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/follow_up.rb +2 -0
  11. data/app/models/educode_sales/role_area.rb +1 -1
  12. data/app/views/educode_sales/assessments/_progress.html.erb +7 -4
  13. data/app/views/educode_sales/assessments/_setup.html.erb +54 -10
  14. data/app/views/educode_sales/assessments/edit.html.erb +47 -54
  15. data/app/views/educode_sales/assessments/index.html.erb +1 -2
  16. data/app/views/educode_sales/assessments/index.json.jbuilder +1 -1
  17. data/app/views/educode_sales/assessments/new.html.erb +148 -111
  18. data/app/views/educode_sales/assessments/progress.json.jbuilder +2 -198
  19. data/app/views/educode_sales/businesses/following_businesses.jbuilder +44 -0
  20. data/app/views/educode_sales/businesses/index.html.erb +122 -6
  21. data/app/views/educode_sales/businesses/index.json.jbuilder +1 -0
  22. data/app/views/educode_sales/businesses/new_follow_record.html.erb +1 -1
  23. data/app/views/educode_sales/home/index.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 +1 -1
  26. data/config/routes.rb +3 -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/lib/educode_sales/version.rb +1 -1
  30. metadata +7 -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,
@@ -398,6 +407,21 @@
398
407
  title: '所属年度',
399
408
  sort: true
400
409
  },
410
+ {
411
+ field: 'followed',
412
+ templet:function(d){
413
+ if (d.followed==1){
414
+
415
+ return '<i class="layui-icon" style="color: goldenrod">&#xe658;</i> '
416
+ }
417
+
418
+ else return ''
419
+ },
420
+ width: 105,
421
+ title: '关注',
422
+ align: "center"
423
+
424
+ },
401
425
  {
402
426
  title: '操作',
403
427
  minWidth: 220,
@@ -422,15 +446,18 @@
422
446
  });
423
447
 
424
448
  var dropmenu = gon.menus;
449
+ var dropmenu2=JSON.parse(JSON.stringify(dropmenu));
425
450
  var export_dropmenu = gon.export_menus;
451
+ dropmenu2[dropmenu2.findIndex(function (elem){return elem.title.includes("关注")})].title="取消关注";
426
452
 
427
453
  drowpdwonRender = function() {
428
454
  dropdown.render({
429
- elem: '.more-btn',
430
- data: dropmenu,
455
+ elem: '.more-btn1',
456
+ data: dropmenu,//dropmenu,
431
457
  click: function(data, othis){
432
458
  var elem = $(this.elem);
433
459
  id = elem.data('id');
460
+
434
461
  switch (data.event) {
435
462
  case 'week':
436
463
  week(id);
@@ -450,9 +477,44 @@
450
477
  case 'delete':
451
478
  deleteBusiness(id, elem.data('name'));
452
479
  break;
480
+ case 'following':
481
+ following(id);
482
+ break;
453
483
  }
454
484
  }
455
485
  });
486
+ dropdown.render({
487
+ elem: '.more-btn2',
488
+ data: dropmenu2,//dropmenu,
489
+ click: function(data, othis){
490
+ var elem = $(this.elem);
491
+ id = elem.data('id');
492
+
493
+ switch (data.event) {
494
+ case 'week':
495
+ week(id);
496
+ break;
497
+ case 'month':
498
+ month(id);
499
+ break;
500
+ case 'edit':
501
+ edit(id);
502
+ break;
503
+ case 'file':
504
+ file(id, elem.data('name'));
505
+ break;
506
+ case 'time_line':
507
+ time_line(id, elem.data('name'));
508
+ break;
509
+ case 'delete':
510
+ deleteBusiness(id, elem.data('name'));
511
+ break;
512
+ case 'following':
513
+ following(id);
514
+ break;
515
+ }
516
+ }
517
+ });
456
518
  }
457
519
 
458
520
  export_drowpdwonRender = function() {
@@ -585,6 +647,41 @@
585
647
  layer.full(sindex);
586
648
  });
587
649
  }
650
+ function following(id) {
651
+ $.ajax({
652
+ type: "get",
653
+ dataType: "json",
654
+ url: '/missions/businesses/followed',
655
+ data: {business_id:id},
656
+ success: function (data) {
657
+ layer.open({
658
+ title:'关注',
659
+ content:data.msg,
660
+ btn: ['确认', '取消'],
661
+ yes:function (){
662
+ $.ajax({
663
+ type: "post",
664
+ dataType: "json",
665
+ url: '/missions/businesses/following',
666
+ data: {business_id:id},
667
+ success: function (da) {
668
+
669
+ layer.msg(da.msg,{icon: da.code==200? 1:2})
670
+ table.reload("businesses_table")
671
+
672
+ },
673
+ error:function (da){
674
+ alert('请求错误')
675
+ }
676
+ });
677
+ }
678
+ })
679
+ },
680
+ error:function (data){
681
+ alert('请求错误')
682
+ }
683
+ });
684
+ }
588
685
 
589
686
  function edit(id) {
590
687
  var content = miniPage.getHrefContent('/missions/businesses/' + id + '/edit');
@@ -662,7 +759,7 @@
662
759
  layer.confirm('确定删除' + name, function (index) {
663
760
  request.delete('missions/businesses/' + id, {}, function (res) {
664
761
  layer.close(index);
665
- table.reload("businesses_table")
762
+ table.reload("businesses_table",{url: '/missions/businesses'})
666
763
  })
667
764
  });
668
765
  }
@@ -674,6 +771,7 @@
674
771
  sort.field = obj.field;
675
772
  sort.order = obj.type;
676
773
  table.reload('businesses_table', {
774
+ url: '/missions/businesses',
677
775
  initSort: obj,
678
776
  where: {
679
777
  sort: sort,
@@ -698,12 +796,14 @@
698
796
  search = data.field
699
797
  console.log(search);
700
798
  table.reload('businesses_table', {
799
+ url: '/missions/businesses',
701
800
  page: {
702
801
  curr: 1
703
802
  },
704
803
  where: {q: search, sort: sort}
705
804
  }, 'data');
706
805
  table.reload('teachers_table', {
806
+ url: '/missions/businesses',
707
807
  page: {
708
808
  curr: 1
709
809
  },
@@ -753,6 +853,21 @@
753
853
  } else if (obj.event === 'all') {
754
854
  search = {"all":"1"}
755
855
  table.reload('businesses_table', {
856
+ url: '/missions/businesses',
857
+ page: {
858
+ curr: 1
859
+ },
860
+ where: {q: search, sort: sort}
861
+ }, 'data');
862
+ form.val('search_form', {
863
+ name: '', department: '', staff_id: '', business_type: '', business_step: '',
864
+ place_id: '', date: '', area: ''
865
+ })
866
+ return false;
867
+ } else if (obj.event === 'followes') {
868
+ search = {"all":"1"}
869
+ table.reload('businesses_table', {
870
+ url: '/missions/businesses/following_businesses',
756
871
  page: {
757
872
  curr: 1
758
873
  },
@@ -767,6 +882,7 @@
767
882
  else if (obj.event === 'mine') {
768
883
  search = {"mine":"1"}
769
884
  table.reload('businesses_table', {
885
+ url: '/missions/businesses',
770
886
  page: {
771
887
  curr: 1
772
888
  },
@@ -829,7 +945,7 @@
829
945
  layer.confirm('确定删除' + data.name, function (index) {
830
946
  request.delete('missions/businesses/' + data.id, {}, function (res) {
831
947
  layer.close(index);
832
- table.reload("businesses_table")
948
+ table.reload("businesses_table",{url: '/missions/businesses',})
833
949
  })
834
950
  });
835
951
  }else if (obj.event === 'add_follow') { // 监听添加操作
@@ -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">
@@ -1 +1 @@
1
- <div style="text-align:center;"><%= image_tag "educode_sales/indexLogo.png", width: "900" %></div>
1
+ <div style="text-align:center;"><%= image_tag "educode_sales/top_page.png", width: "900" %></div>
@@ -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 %>
data/config/routes.rb CHANGED
@@ -85,6 +85,7 @@ EducodeSales::Engine.routes.draw do
85
85
 
86
86
  resources :businesses do
87
87
  collection do
88
+ post :following
88
89
  get :export_records
89
90
  post :get_export_data
90
91
  get :add_export_records
@@ -98,6 +99,8 @@ EducodeSales::Engine.routes.draw do
98
99
  get :file
99
100
  get :time_line
100
101
  get :upload_file
102
+ get :following_businesses
103
+ get :followed
101
104
  end
102
105
 
103
106
  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
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '0.7.6'
2
+ VERSION = '0.7.9'
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.6
4
+ version: 0.7.9
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-18 00:00:00.000000000 Z
11
+ date: 2022-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -112,6 +112,7 @@ files:
112
112
  - app/assets/images/educode_sales/loginbg.png
113
113
  - app/assets/images/educode_sales/logo.png
114
114
  - app/assets/images/educode_sales/money_plans.png
115
+ - app/assets/images/educode_sales/top_page.png
115
116
  - app/assets/images/educode_sales/回收站.png
116
117
  - app/assets/images/educode_sales/客户管理.png
117
118
  - app/assets/javascripts/educode_sales/application.js
@@ -185,6 +186,7 @@ files:
185
186
  - app/models/educode_sales/assign_follow_up.rb
186
187
  - app/models/educode_sales/business.rb
187
188
  - app/models/educode_sales/business_export_record.rb
189
+ - app/models/educode_sales/business_relation_ship.rb
188
190
  - app/models/educode_sales/common.rb
189
191
  - app/models/educode_sales/course_subject.rb
190
192
  - app/models/educode_sales/customer.rb
@@ -234,6 +236,7 @@ files:
234
236
  - app/views/educode_sales/businesses/export_records.html.erb
235
237
  - app/views/educode_sales/businesses/export_records.json.jbuilder
236
238
  - app/views/educode_sales/businesses/file.html.erb
239
+ - app/views/educode_sales/businesses/following_businesses.jbuilder
237
240
  - app/views/educode_sales/businesses/get_export_data.json.jbuilder
238
241
  - app/views/educode_sales/businesses/index.html.erb
239
242
  - app/views/educode_sales/businesses/index.json.jbuilder
@@ -448,6 +451,8 @@ files:
448
451
  - db/migrate/20220411021641_add_new_column_assessments_settings.rb
449
452
  - db/migrate/20220413090940_add_september_progress_to_assessment_settings.rb
450
453
  - db/migrate/20220418033025_add_staff_id_to_sets.rb
454
+ - db/migrate/20220419103842_add_column_timestamps_to_assessments_settings.rb
455
+ - db/migrate/20220420071909_create_educode_sales_business_relation_ships.rb
451
456
  - lib/educode_sales.rb
452
457
  - lib/educode_sales/engine.rb
453
458
  - lib/educode_sales/version.rb