educode_sales 0.6.4 → 0.6.8

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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/educode_sales/activities_controller.rb +0 -2
  3. data/app/controllers/educode_sales/businesses_controller.rb +103 -47
  4. data/app/controllers/educode_sales/money_plans_controller.rb +8 -7
  5. data/app/controllers/educode_sales/sale_trends_controller.rb +105 -18
  6. data/app/controllers/educode_sales/staffs_controller.rb +19 -0
  7. data/app/controllers/educode_sales/teacher_follows_controller.rb +1 -93
  8. data/app/models/educode_sales/business_export_record.rb +5 -0
  9. data/app/views/educode_sales/activities/index.html.erb +7 -1
  10. data/app/views/educode_sales/activities/new.html.erb +1 -1
  11. data/app/views/educode_sales/businesses/edit_follow_record.html.erb +13 -4
  12. data/app/views/educode_sales/businesses/edit_plan.html.erb +5 -2
  13. data/app/views/educode_sales/businesses/export_records.html.erb +53 -0
  14. data/app/views/educode_sales/businesses/export_records.json.jbuilder +11 -0
  15. data/app/views/educode_sales/businesses/file.html.erb +8 -4
  16. data/app/views/educode_sales/businesses/index.html.erb +119 -16
  17. data/app/views/educode_sales/businesses/index.json.jbuilder +37 -7
  18. data/app/views/educode_sales/businesses/new_follow_record.html.erb +10 -5
  19. data/app/views/educode_sales/commons/index.html.erb +7 -1
  20. data/app/views/educode_sales/customers/edit.html.erb +3 -0
  21. data/app/views/educode_sales/customers/edit_follow_record.html.erb +1 -1
  22. data/app/views/educode_sales/customers/new.html.erb +3 -0
  23. data/app/views/educode_sales/customers/new_follow_record.html.erb +1 -1
  24. data/app/views/educode_sales/customers/show_follow.html.erb +1 -1
  25. data/app/views/educode_sales/money_plans/index.html.erb +47 -8
  26. data/app/views/educode_sales/money_plans/index.json.jbuilder +2 -1
  27. data/app/views/educode_sales/places/index.html.erb +16 -2
  28. data/app/views/educode_sales/places/index.json.jbuilder +3 -1
  29. data/app/views/educode_sales/recycles/business.json.jbuilder +2 -2
  30. data/app/views/educode_sales/roles/index.html.erb +7 -1
  31. data/app/views/educode_sales/sale_trends/trends.html.erb +96 -44
  32. data/app/views/educode_sales/sale_trends/trends.json.jbuilder +2 -1
  33. data/app/views/educode_sales/sales/index.json.jbuilder +2 -2
  34. data/app/views/educode_sales/staffs/index.html.erb +68 -2
  35. data/app/views/educode_sales/teachers/index.html.erb +15 -7
  36. data/app/views/layouts/educode_sales/application.html.erb +6 -1
  37. data/config/routes.rb +2 -0
  38. data/db/migrate/20210902064109_create_educode_sales_role_permissions.rb +7 -0
  39. data/db/migrate/20220121060006_create_educode_sales_business_export_records.rb +10 -0
  40. data/lib/educode_sales/version.rb +1 -1
  41. metadata +6 -2
@@ -69,25 +69,29 @@
69
69
  <div class="layui-input-inline">
70
70
  <input name="total_amount" type="number" class="layui-input" value="<%= @follow_up.total_amount %>">
71
71
  </div>
72
- </div>
72
+ 客户采购支出的费用。总额的生命历程:1.在最初阶段,是商机的预算总额;2.在挂网阶段,是项目的挂网预算总额;3.在中标阶段,是项目的中标总额。 </div>
73
+ <br>
73
74
  <div class="layui-inline">
74
75
  <label class="layui-form-label">合同额(万)</label>
75
76
  <div class="layui-input-inline">
76
77
  <input name="actual_amount" type="number" class="layui-input" placeholder="本单位的签单金额" value="<%= @follow_up.actual_amount %>">
77
78
  </div>
79
+ 客户签给头歌的费用。合同额的生命历程:1.在中标之前,合同额都是0;2.在中标之后,实际与头歌签合同的金额。
78
80
  </div>
79
81
  <br>
80
82
  <div class="layui-inline place_select">
81
83
  <label class="layui-form-label">渠道</label>
82
- <div class="layui-input-inline" style="z-index: 101">
84
+ <div class="layui-input-inline" style="">
83
85
  <div id="edit_place" style="width: 190px;"></div>
84
86
  </div>
85
87
  </div>
88
+ <br>
86
89
  <div class="layui-inline">
87
90
  <label class="layui-form-label">渠道分成(万)</label>
88
91
  <div class="layui-input-inline">
89
92
  <input name="divide_amount" class="layui-input" value="<%= @follow_up.divide_amount%>">
90
93
  </div>
94
+ 总额里,渠道拿到的部分。
91
95
  </div>
92
96
  <div class="layui-form-item">
93
97
  <div class="layui-inline">
@@ -95,14 +99,19 @@
95
99
  <div class="layui-input-inline">
96
100
  <input type="text" class="layui-input" name="year" lay-verify="required" autocomplete="off" id="edit_year"
97
101
  value="<%= @follow_up&.year%>"
98
- placeholder="请选择年度"> </div>
102
+ placeholder="请选择年度">
103
+ </div>
99
104
  </div>
100
105
  </div>
101
106
  <div class="layui-form-item">
102
107
  <label class="layui-form-label">指定跟进人</label>
103
- <div class="layui-input-inline">
108
+ <div class="layui-input-inline" style="">
104
109
  <div id="edit_assign_follow" style="width: 512px;"></div>
105
110
  </div>
111
+ <div class="layui-inline" style="padding: 9px 15px;z-index: -1">
112
+ <label class="layui-form-label" style="padding-left: 220px"></label>
113
+ 指定跟进人和商机创建者,同时拥有对该商机的管理权限
114
+ </div>
106
115
  </div>
107
116
  <div class="layui-form-item layui-form-text">
108
117
  <label class="layui-form-label required">最新进展</label>
@@ -12,12 +12,15 @@
12
12
  </div>
13
13
  </div>
14
14
  <div class="layui-input-inline" style="width: 300px;">
15
- <label class="layui-form-label required">回款金额(万)</label>
15
+ <label class="layui-form-label required">回款金额</label>
16
16
  <div class="layui-input-block">
17
17
  <input type="number" name="amount" autocomplete="off" lay-verify="required" lay-reqtext="回款金额不能为空"
18
18
  placeholder="请输入回款金额" value="" class="layui-input" id="return_money_amount">
19
19
  </div>
20
20
  </div>
21
+ <div class="layui-input-inline" style="width: 0;!important;">
22
+ <label class="layui-form-label" style="padding-left: 0;width: 10px;!important;">万</label>
23
+ </div>
21
24
  <div class="layui-input-inline" style="width: 300px;" id="professional_title_div">
22
25
  <label class="layui-form-label required">状态</label>
23
26
  <div class="layui-input-block">
@@ -115,7 +118,7 @@
115
118
  }, {
116
119
  field: 'amount',
117
120
  width: 200,
118
- title: '回款金额',
121
+ title: '回款金额(万)',
119
122
  edit: true
120
123
  }, {
121
124
  field: 'clazz',
@@ -0,0 +1,53 @@
1
+ <script type="text/html" id="activity_toolbar">
2
+ <div class="layui-btn-container">
3
+ <span class="table-label">导出记录</span>
4
+ </div>
5
+ </script>
6
+ <div class="min-height-table">
7
+ <table class="layui-hide" id="activities_table" lay-filter="activities_table"></table>
8
+ </div>
9
+
10
+ <script type="text/html" id="currentTableBar">
11
+ </script>
12
+
13
+ <script>
14
+ layui.use(['form', 'table', 'miniPage', 'element', 'request'], function () {
15
+ var $ = layui.jquery,
16
+ form = layui.form,
17
+ table = layui.table,
18
+ request = layui.request,
19
+ miniPage = layui.miniPage;
20
+
21
+ table.render({
22
+ elem: '#activities_table',
23
+ url: '/missions/businesses/export_records',
24
+ toolbar: '#activity_toolbar',
25
+ defaultToolbar: [],
26
+ cols: [
27
+ [
28
+ {
29
+ field: 'id',
30
+ title:'序号',type: 'numbers',
31
+ },
32
+ {
33
+ field: 'name',
34
+ title: '文件名',
35
+ },
36
+ {
37
+ field: 'staff',
38
+ title: '导出人',
39
+ },
40
+ {
41
+ field: 'created_at',
42
+ title: '导出时间',
43
+ },
44
+ ]
45
+ ],
46
+ limit: 20,
47
+ limits: [10,15,20,30,40,50,60,70,80,90],
48
+ page: true
49
+ });
50
+
51
+
52
+ });
53
+ </script>
@@ -0,0 +1,11 @@
1
+ json.data do
2
+ json.array! @records do |d|
3
+ json.id d.id
4
+ json.name d.name
5
+ json.staff d.staff&.user&.real_name
6
+ json.created_at d.created_at.to_s
7
+ end
8
+ end
9
+ json.code 0
10
+ json.count @records.total_count
11
+ json.msg 'succcess'
@@ -2,9 +2,9 @@
2
2
  <script type="text/html" id="toolbarDemo">
3
3
  <div class="layui-btn-container">
4
4
  <span class="table-label">附件信息</span>
5
- <%# if can? :create, EducodeSales::file %>
5
+ <% if can? :upload_file, EducodeSales::Business %>
6
6
  <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="upload_file">上传文件</button>
7
- <%# end %>
7
+ <% end %>
8
8
  </div>
9
9
  </script>
10
10
 
@@ -12,8 +12,12 @@
12
12
 
13
13
  <script type="text/html" id="currentTableBar_file">
14
14
  <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="preview">预览</a>
15
- <a href="/missions/upload_files/download?id={{d.id}}" class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="download">下载</a>
16
- <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
15
+ <% if can? :download_file, EducodeSales::Business %>
16
+ <a href="/missions/upload_files/download?id={{d.id}}" class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="download">下载</a>
17
+ <% end %>
18
+ <% if can? :delete_file, EducodeSales::Business %>
19
+ <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
20
+ <% end %>
17
21
  </script>
18
22
 
19
23
  <script type="text/html" id="showchance">
@@ -33,34 +33,40 @@
33
33
  <%= select_tag "staff_id", options_for_select(@staffs, params[:staff_id]), { 'lay-filter': 'staff_id', include_blank: true } %>
34
34
  </div>
35
35
  </div>
36
- <div class="layui-inline">
36
+ <div class="layui-inline show_item" style="display:none;">
37
37
  <label class="layui-form-label">项目类型</label>
38
38
  <div class="layui-input-inline">
39
- <%= select_tag "business_type", options_for_select(EducodeSales::Common.where(clazz: 'business_type').pluck(:name, :id), params[:clazz_id]), { 'lay-filter': 'clazz_id', include_blank: true } %>
39
+ <div id="business_type" style="width: 190px;"></div>
40
40
  </div>
41
41
  </div>
42
- <div class="layui-inline">
42
+ <div class="layui-inline show_item" style="display:none;">
43
43
  <label class="layui-form-label">项目阶段</label>
44
44
  <div class="layui-input-inline">
45
- <%= select_tag "business_step", options_for_select(EducodeSales::Common.where(clazz: 'business_step').pluck(:name, :id)), { include_blank: true } %>
45
+ <div id="business_step" style="width: 190px;"></div>
46
46
  </div>
47
47
  </div>
48
- <div class="layui-inline">
48
+ <div class="layui-inline show_item" style="display:none;">
49
49
  <label class="layui-form-label">渠道名称</label>
50
50
  <div class="layui-input-inline">
51
51
  <div id="index_place" style="width: 190px;"></div>
52
52
  </div>
53
53
  </div>
54
- <div class="layui-inline">
54
+ <div class="layui-inline show_item" style="display:none;">
55
55
  <label class="layui-form-label">区域</label>
56
56
  <div class="layui-input-inline">
57
57
  <%= select_tag "area", options_for_select(EducodeSales::Common.where(clazz: 'area').pluck(:name, :id)), { include_blank: true } %>
58
58
  </div>
59
59
  </div>
60
- <div class="layui-inline">
60
+ <div class="layui-inline show_item" style="display:none;">
61
61
  <label class="layui-form-label">创建时间</label>
62
62
  <div class="layui-input-inline">
63
- <input type="text" class="layui-input" id="date" name="date" placeholder=" - ">
63
+ <input type="text" class="layui-input" id="date" name="date" placeholder=" - " autocomplete="off">
64
+ </div>
65
+ </div>
66
+ <div class="layui-inline show_item" style="display:none;">
67
+ <label class="layui-form-label">招标时间</label>
68
+ <div class="layui-input-inline">
69
+ <input type="text" class="layui-input" id="invitation_at" name="invitation_at" placeholder=" - " autocomplete="off">
64
70
  </div>
65
71
  </div>
66
72
  <div class="layui-inline">
@@ -68,6 +74,8 @@
68
74
  </button>
69
75
  <button type="submit" id="search_bt" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_bussiness">搜索
70
76
  </button>
77
+ <a style="padding-left: 20px;color: #0000FF" href="javascript:;" type="submit" class="" lay-submit lay-filter="show_hide">高级搜索
78
+ </a>
71
79
  </div>
72
80
  </div>
73
81
  </form>
@@ -80,6 +88,7 @@
80
88
  <script type="text/html" id="bussinessBar">
81
89
  <div class="layui-btn-container">
82
90
  <span class="table-label">商机列表</span>
91
+ <a class="layui-btn-xs data-count-edit export_more-btn pull-right" style="color: #0000FF;" data-name="export" data-id="export">导出<i class="layui-icon layui-icon-down layui-nav-more"></i></a>
83
92
  <% if can? :create, EducodeSales::Business %>
84
93
  <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add"> 添加商机</button>
85
94
  <% end %>
@@ -126,6 +135,10 @@
126
135
  elem: '#date',
127
136
  range: true
128
137
  });
138
+ laydate.render({
139
+ elem: '#invitation_at',
140
+ range: true
141
+ });
129
142
 
130
143
  var is_show = <%=params[:name].present? || params[:clazz_id].present? || params[:place_id].present? || params[:school].present? %>
131
144
  if(is_show){
@@ -135,6 +148,15 @@
135
148
  $('.businesses_list_div').addClass('layui-show');
136
149
  }
137
150
 
151
+ var business_type_list = xmSelect.render({
152
+ el: '#business_type',
153
+ data: gon.business_type
154
+ })
155
+ business_type_list.setValue(gon.type)
156
+ var business_step_list = xmSelect.render({
157
+ el: '#business_step',
158
+ data: gon.business_step
159
+ })
138
160
  var index_place_list = xmSelect.render({
139
161
  el: '#index_place',
140
162
  model: {
@@ -182,17 +204,14 @@
182
204
 
183
205
 
184
206
  table = layui.table;
185
- table.render({
207
+ var business_table = table.render({
186
208
  elem: '#businesses_table',
187
209
  url: '/missions/businesses',
188
210
  where: {q: form.val('search_form')},
189
211
  defaultToolbar: ['filter'],
190
212
  toolbar: '#bussinessBar',
213
+ title: '商机数据表',
191
214
  totalRow: true,//开启合并行
192
- initSort: {
193
- field: 'latest_time' //排序字段,对应 cols 设定的各字段名
194
- ,type: 'desc' //排序方式 asc: 升序、desc: 降序、null: 默认排序
195
- },
196
215
  cols: [
197
216
  [
198
217
  {
@@ -304,6 +323,18 @@
304
323
  sort: true,
305
324
  totalRow: true
306
325
  },
326
+ {
327
+ field: 'wait_return_money',
328
+ width: 100,
329
+ title: '待回款',
330
+ sort: true,
331
+ totalRow: true
332
+ },
333
+ {
334
+ field: 'return_money_days',
335
+ width: 120,
336
+ title: '首次回款周期(天)',
337
+ },
307
338
  {
308
339
  field: 'place',
309
340
  width: 160,
@@ -324,12 +355,16 @@
324
355
  page: true,
325
356
  skin: 'line',
326
357
  done: function (res) {
327
- drowpdwonRender()
358
+ exportData=res.data1;
359
+ console.log(exportData);
360
+ drowpdwonRender()
361
+ export_drowpdwonRender()
328
362
  }
329
363
 
330
364
  });
331
365
 
332
366
  var dropmenu = gon.menus;
367
+ var export_dropmenu = gon.export_menus;
333
368
 
334
369
  drowpdwonRender = function() {
335
370
  dropdown.render({
@@ -362,6 +397,56 @@
362
397
  });
363
398
  }
364
399
 
400
+ export_drowpdwonRender = function() {
401
+ dropdown.render({
402
+ elem: '.export_more-btn',
403
+ data: export_dropmenu,
404
+ click: function(data, othis){
405
+ var elem = $(this.elem);
406
+ id = elem.data('id');
407
+ switch (data.event) {
408
+ case 'export_csv':
409
+ export_csv();
410
+ break;
411
+ case 'export_excel':
412
+ export_excel();
413
+ break;
414
+ case 'export_records':
415
+ export_records();
416
+ break;
417
+ }
418
+ }
419
+ });
420
+ }
421
+
422
+ function export_csv() {
423
+ table.exportFile(business_table.config.id,exportData, 'csv');
424
+ request.get('/missions/businesses/add_export_records?type=csv', {}, function (res) {
425
+ })
426
+ }
427
+ function export_excel() {
428
+ table.exportFile(business_table.config.id,exportData, 'xls');
429
+ request.get('/missions/businesses/add_export_records?type=excel', {}, function (res) {
430
+ })
431
+ }
432
+ function export_records() {
433
+ var content = miniPage.getHrefContent('/missions/businesses/export_records')
434
+ var openWH = miniPage.getOpenWidthHeight();
435
+ sindex = layer.open({
436
+ title: '·',
437
+ type: 1,
438
+ shade: 0.2,
439
+ maxmin: true,
440
+ shadeClose: true,
441
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
442
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
443
+ content: content
444
+ });
445
+ $(window).on("resize", function () {
446
+ layer.full(sindex);
447
+ });
448
+ }
449
+
365
450
  function week(id) {
366
451
  var content = miniPage.getHrefContent('/missions/plans/new_week?business_id=' + id);
367
452
  var openWH = miniPage.getOpenWidthHeight();
@@ -485,7 +570,17 @@
485
570
 
486
571
  // 监听搜索操作
487
572
  form.on('submit(search_bussiness)', function (data) {
573
+ var business_type = [];
574
+ business_type_list.getValue().forEach(function(d) {
575
+ business_type.push(d.value);
576
+ })
577
+ var business_step = [];
578
+ business_step_list.getValue().forEach(function(d) {
579
+ business_step.push(d.value);
580
+ })
488
581
  data.field.place_id = index_place_list.getValue('valueStr');
582
+ data.field.business_type = business_type.toString();
583
+ data.field.business_step = business_step.toString();
489
584
  search = data.field
490
585
  console.log(search);
491
586
  table.reload('businesses_table', {
@@ -507,13 +602,21 @@
507
602
  return false;
508
603
  });
509
604
 
605
+ form.on('submit(show_hide)', function (data) {
606
+ $(".show_item").toggle()
607
+ return false;
608
+ });
510
609
  form.on('submit(reset_business_search)', function (data) {
511
610
  var field = data.field;
512
611
  form.val('search_form', {
513
612
  name: '', department: '', staff_id: '', business_type: '', business_step: '',
514
- place_id: '', date: '', area: ''
613
+ place_id: '', date: '', area: '', invitation_at: ''
515
614
  })
516
- return false;
615
+ business_type_list.setValue([])
616
+ business_step_list.setValue([])
617
+ index_place_list.setValue([])
618
+
619
+ return false;
517
620
  });
518
621
 
519
622
  table.on('toolbar(businesses_table)', function (obj) {
@@ -1,4 +1,4 @@
1
- follow_ups_count = 0
1
+ follow_count = 0
2
2
  json.data do
3
3
  json.array! @businesses do |d|
4
4
  json.id d.id
@@ -6,11 +6,10 @@ json.data do
6
6
  json.department d.department.name
7
7
  json.school d.department.school.name
8
8
  json.school_id d.department.school.id
9
- json.follow_ups_count d.follow_ups_count
10
- follow_ups_count += d.follow_ups_count
9
+ follow_ups_count = d.follow_ups.where(deleted_at: nil).size
10
+ json.follow_ups_count follow_ups_count
11
+ follow_count += follow_ups_count
11
12
  json.follow_up_id d.last_follow_up_id
12
- # json.teachers_count d.follow_ups.sum(:key_people_count)
13
- # json.teachers_count EducodeSales::FollowUp.order(created_at: :desc).find_by(business_id: d.id).present? ? EducodeSales::FollowUp.order(created_at: :desc).find_by(business_id: d.id).key_people_count : 0
14
13
  json.clazz d.last_follow_up&.clazz&.name || ""
15
14
  json.stage d.last_follow_up&.stage&.name
16
15
  json.invitation_at d.last_follow_up&.invitation_at.to_s
@@ -20,18 +19,49 @@ json.data do
20
19
  json.total_amount d.last_follow_up&.total_amount
21
20
  json.actual_amount d.last_follow_up&.actual_amount
22
21
  json.return_money d.return_money
22
+ json.wait_return_money d.wait_return_money.to_i.round(2)
23
+ 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 : ''
23
24
  json.place d.last_follow_up&.place&.name
24
25
  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
25
26
  json.source d.source
26
27
  json.assign_follow_ups d.last_follow_up.present? ? d.last_follow_up.assign_follow_ups.pluck(:staff_id) : []
27
28
  json.current_staff_id @current_admin.id
28
29
  json.staff_id d.staff_id
29
- json.latest_time d.last_follow_up.present? ? d.last_follow_up.created_at.to_s : d.created_at.to_s
30
+ json.latest_time d.last_follow_up.present? ? d.last_follow_up.created_at.to_s : ''
31
+ end
32
+ end
33
+ json.data1 do
34
+ json.array! @businesses_exports do |d|
35
+ json.id d.id
36
+ json.name d.name
37
+ json.department d.department.name
38
+ json.school d.department.school.name
39
+ json.school_id d.department.school.id
40
+ json.follow_ups_count d.follow_ups.where(deleted_at: nil).size
41
+ json.follow_up_id d.last_follow_up_id
42
+ json.clazz d.last_follow_up&.clazz&.name || ""
43
+ json.stage d.last_follow_up&.stage&.name
44
+ json.invitation_at d.last_follow_up&.invitation_at.to_s
45
+ json.reception_at d.last_follow_up&.reception_at.to_s
46
+ json.bidded_date d.last_follow_up&.bidded_date.to_s
47
+ json.signed_date d.last_follow_up&.signed_date.to_s
48
+ json.total_amount d.last_follow_up&.total_amount
49
+ json.actual_amount d.last_follow_up&.actual_amount
50
+ json.return_money d.return_money
51
+ json.wait_return_money d.wait_return_money.to_i.round(2)
52
+ 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 : ''
53
+ json.place d.last_follow_up&.place&.name
54
+ 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
55
+ json.source d.source
56
+ json.assign_follow_ups d.last_follow_up.present? ? d.last_follow_up.assign_follow_ups.pluck(:staff_id) : []
57
+ json.current_staff_id @current_admin.id
58
+ json.staff_id d.staff_id
59
+ json.latest_time d.last_follow_up.present? ? d.last_follow_up.created_at.to_s : ''
30
60
  end
31
61
  end
32
62
 
33
63
  json.totalRow do
34
- json.follow_ups_count follow_ups_count.to_s
64
+ json.follow_ups_count follow_count.to_i.to_s
35
65
  end
36
66
  json.code 0
37
67
  json.count @businesses.total_count
@@ -74,26 +74,30 @@
74
74
  <input name="total_amount" type="number" class="layui-input" autocomplete="off"
75
75
  value="<%= @last_follow_up&.total_amount%>">
76
76
  </div>
77
- </div>
77
+ 客户采购支出的费用。总额的生命历程:1.在最初阶段,是商机的预算总额;2.在挂网阶段,是项目的挂网预算总额;3.在中标阶段,是项目的中标总额。 </div>
78
+ <br>
78
79
  <div class="layui-inline">
79
80
  <label class="layui-form-label">合同额(万)</label>
80
81
  <div class="layui-input-inline">
81
82
  <input name="actual_amount" type="number" class="layui-input" autocomplete="off" placeholder="本单位的签单金额"
82
83
  value="<%= @last_follow_up&.actual_amount%>">
83
84
  </div>
85
+ 客户签给头歌的费用。合同额的生命历程:1.在中标之前,合同额都是0;2.在中标之后,实际与头歌签合同的金额。
84
86
  </div>
85
87
  <br>
86
88
  <div class="layui-inline new_place_select">
87
89
  <label class="layui-form-label">渠道</label>
88
- <div class="layui-input-inline" style="z-index: 101">
90
+ <div class="layui-input-inline" style="">
89
91
  <div id="place" style="width: 190px;"></div>
90
92
  </div>
91
93
  </div>
94
+ <br>
92
95
  <div class="layui-inline">
93
96
  <label class="layui-form-label">渠道分成(万)</label>
94
97
  <div class="layui-input-inline">
95
98
  <input name="divide_amount" class="layui-input" value="<%= @last_follow_up&.divide_amount%>">
96
99
  </div>
100
+ 总额里,渠道拿到的部分。
97
101
  </div>
98
102
  <div class="layui-form-item">
99
103
  <div class="layui-inline">
@@ -106,10 +110,10 @@
106
110
  </div>
107
111
  <div class="layui-form-item">
108
112
  <label class="layui-form-label">指定跟进人</label>
109
- <div class="layui-input-inline" style="z-index: 100">
113
+ <div class="layui-input-inline" style="">
110
114
  <div id="assign_follow" style="width: 512px;"></div>
111
115
  </div>
112
- <div class="layui-inline" style="padding: 9px 15px">
116
+ <div class="layui-inline" style="padding: 9px 15px;z-index: -1;">
113
117
  <label class="layui-form-label" style="padding-left: 220px"></label>
114
118
  指定跟进人和商机创建者,同时拥有对该商机的管理权限
115
119
  </div>
@@ -139,7 +143,7 @@
139
143
  </div>
140
144
  <div class="layui-form-item m-t-20">
141
145
  <div class="layui-input-block">
142
- <button class="layui-btn layui-btn-normal" lay-submit lay-filter="add_follow_up">提交</button>
146
+ <button class="layui-btn layui-btn-normal submit-btn" lay-submit lay-filter="add_follow_up">提交</button>
143
147
  </div>
144
148
  </div>
145
149
  </div>
@@ -244,6 +248,7 @@
244
248
  form.render();
245
249
 
246
250
  form.on('submit(add_follow_up)', function (data) {
251
+ $(".submit-btn").addClass("layui-hide");
247
252
  var assign_follow = [];
248
253
  sales_list.getValue().forEach(function(d) {
249
254
  assign_follow.push(d.value);
@@ -129,4 +129,10 @@
129
129
  });
130
130
 
131
131
  });
132
- </script>
132
+ </script>
133
+ <style>
134
+ .layui-table-tool-temp{
135
+ padding-right: 0px; !important;
136
+ }
137
+
138
+ </style>
@@ -767,4 +767,7 @@
767
767
  .layui-form .city_input .city {
768
768
  display: block;
769
769
  }
770
+ .layui-edge{
771
+ display: none;!important;
772
+ }
770
773
  </style>
@@ -12,7 +12,7 @@
12
12
  <%= select_tag "department_id",options_for_select(@school.departments.pluck(:name, :id),@follow_up.department_id)%>
13
13
  </div>
14
14
  </div>
15
- <div class="layui-form-item " style="padding-left: 110px">
15
+ <div class="layui-form-item " style="padding-left: 150px">
16
16
  <button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit_follow_up">提交
17
17
  </button>
18
18
  </div>
@@ -769,4 +769,7 @@
769
769
  .layui-form .city_input .city {
770
770
  display: block;
771
771
  }
772
+ .layui-edge{
773
+ display: none;!important;
774
+ }
772
775
  </style>
@@ -12,7 +12,7 @@
12
12
  <%= select_tag "department_id",options_for_select(@school.departments.pluck(:name, :id)), { include_blank: true}%>
13
13
  </div>
14
14
  </div>
15
- <div class="layui-form-item " style="padding-left: 110px">
15
+ <div class="layui-form-item " style="padding-left: 150px">
16
16
  <button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="add_follow_up">提交
17
17
  </button>
18
18
  </div>
@@ -393,7 +393,7 @@
393
393
  content = miniPage.getHrefContent('/missions/customers/edit_follow_record?id=' + data.id);
394
394
  openWH = miniPage.getOpenWidthHeight();
395
395
  editFollowIndex = layer.open({
396
- title: '编辑',
396
+ title: '编辑跟进记录',
397
397
  type: 1,
398
398
  shade: 0.2,
399
399
  maxmin: true,