educode_sales 1.10.59 → 1.10.71

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/educode_sales/application.js +1 -0
  3. data/app/assets/javascripts/educode_sales/functions.js +24 -0
  4. data/app/controllers/educode_sales/application_controller.rb +11 -3
  5. data/app/controllers/educode_sales/business_courses_controller.rb +19 -8
  6. data/app/controllers/educode_sales/follow_ups_controller.rb +4 -0
  7. data/app/controllers/educode_sales/plans_controller.rb +448 -124
  8. data/app/controllers/educode_sales/shixuns_controller.rb +20 -10
  9. data/app/controllers/educode_sales/subjects_controller.rb +10 -6
  10. data/app/controllers/educode_sales/teacher_follows_controller.rb +4 -0
  11. data/app/controllers/educode_sales/teachers_controller.rb +3 -0
  12. data/app/models/educode_sales/business.rb +5 -5
  13. data/app/models/educode_sales/sales_target.rb +10 -0
  14. data/app/models/educode_sales/sales_target_log.rb +11 -0
  15. data/app/views/educode_sales/business_courses/index.html.erb +1 -1
  16. data/app/views/educode_sales/business_courses/new.html.erb +2 -2
  17. data/app/views/educode_sales/businesses/_follows.html.erb +107 -100
  18. data/app/views/educode_sales/businesses/index.html.erb +6 -3
  19. data/app/views/educode_sales/businesses/index.json.jbuilder +2 -2
  20. data/app/views/educode_sales/businesses/show_follow.json.jbuilder +1 -1
  21. data/app/views/educode_sales/contracts/_follows.html.erb +75 -69
  22. data/app/views/educode_sales/contracts/_list.html.erb +283 -249
  23. data/app/views/educode_sales/contracts/index.json.jbuilder +1 -1
  24. data/app/views/educode_sales/follow_ups/index.json.jbuilder +1 -1
  25. data/app/views/educode_sales/plans/_year_execute.html.erb +294 -159
  26. data/app/views/educode_sales/plans/_year_target.html.erb +330 -215
  27. data/app/views/educode_sales/plans/index.html.erb +3 -4
  28. data/app/views/educode_sales/plans/staff_year_business.html.erb +96 -0
  29. data/app/views/educode_sales/plans/staff_year_business.json.jbuilder +22 -0
  30. data/app/views/educode_sales/plans/staff_year_target.json.jbuilder +35 -0
  31. data/app/views/educode_sales/plans/staff_year_target_log.html.erb +62 -0
  32. data/app/views/educode_sales/plans/staff_year_target_log.json.jbuilder +34 -0
  33. data/app/views/educode_sales/plans/years_all_target.json.jbuilder +5 -4
  34. data/app/views/educode_sales/sales_details/_index.html.erb +6 -3
  35. data/app/views/educode_sales/shixun_dectects/markdown.html.erb +40 -1
  36. data/app/views/educode_sales/shixuns/index.html.erb +106 -97
  37. data/app/views/educode_sales/shixuns/new.html.erb +2 -2
  38. data/app/views/educode_sales/staffs/index.json.jbuilder +1 -1
  39. data/app/views/educode_sales/subjects/index.html.erb +1 -1
  40. data/app/views/educode_sales/subjects/new.html.erb +2 -2
  41. data/app/views/educode_sales/teachers/_follows.html.erb +24 -17
  42. data/app/views/educode_sales/teachers/_index.html.erb +6 -0
  43. data/app/views/layouts/educode_sales/application.html.erb +6 -3
  44. data/config/environments/development.rb +16 -0
  45. data/config/routes.rb +7 -0
  46. data/db/migrate/20230729085359_create_educode_sales_sales_target_histories.rb +1 -1
  47. data/lib/educode_sales/version.rb +1 -1
  48. metadata +11 -2
@@ -3,10 +3,12 @@
3
3
  margin-bottom: 10px;
4
4
  margin-right: 10px;
5
5
  }
6
- .markdown_list img{
6
+
7
+ .markdown_list img {
7
8
  max-width: 500px;
8
9
  }
9
- .layui-table-cell{
10
+
11
+ .layui-table-cell {
10
12
  height: auto !important;
11
13
  width: auto;
12
14
  white-space: normal;
@@ -23,60 +25,70 @@
23
25
  <div class="layui-tab-content">
24
26
  <div>
25
27
  <form class="layui-form layui-form-pane" lay-filter="search_form">
26
- <div>
27
- <div class="layui-inline show_item_contract inner_div">
28
- <label class="layui-form-label">项目级别</label>
29
- <div class="layui-input-inline">
30
- <%= select_tag "level", options_for_select(
31
- [["全部", 0], ["不明确", 1], ["重要紧急", 2], ["重要不紧急", 3],
32
- ["不重要紧急", 4], ["不重要不紧急", 5]], selected: 0
33
- ), { include_blank: true } %>
34
- </div>
28
+ <div class="layui-inline show_item_contract inner_div">
29
+ <label class="layui-form-label">项目级别</label>
30
+ <div class="layui-input-inline">
31
+ <%= select_tag "level", options_for_select(
32
+ [["全部", 0], ["不明确", 1], ["重要紧急", 2], ["重要不紧急", 3],
33
+ ["不重要紧急", 4], ["不重要不紧急", 5]], selected: 0
34
+ ), { include_blank: true } %>
35
35
  </div>
36
- <div class="layui-inline show_item_contract borders inner_div">
37
- <label class="layui-form-label">项目状态</label>
38
- <div class="layui-input-inline">
39
- <%= select_tag "status", options_for_select(
40
- [["全部", 0], ["待建设", 1], ["建设中", 3],
41
- ["审核中", 4], ["返修中", 5], ["已内部发布", 6], ["已公开发布", 7],
42
- ["已付费用",8],["审核通过",9]], selected: 0
43
- ), { include_blank: true } %>
44
- </div>
36
+ </div>
37
+ <div class="layui-inline show_item_contract borders inner_div">
38
+ <label class="layui-form-label">项目状态</label>
39
+ <div class="layui-input-inline">
40
+ <%= select_tag "status", options_for_select(
41
+ [["全部", 0], ["待建设", 1], ["建设中", 3],
42
+ ["审核中", 4], ["返修中", 5], ["已内部发布", 6], ["已公开发布", 7],
43
+ ["已付费用", 8], ["审核通过", 9]], selected: 0
44
+ ), { include_blank: true } %>
45
45
  </div>
46
- <div class="layui-inline inner_div">
47
- <label class="layui-form-label">交付时间</label>
48
- <div class="layui-inline" id="ID-laydate-range">
49
- <input type="text" class="layui-input" name="time" id="ID-laydate-demo" placeholder="yyyy-MM-dd">
50
- </div>
46
+ </div>
47
+ <div class="layui-inline inner_div">
48
+ <label class="layui-form-label" style="width: 130px">项目类型</label>
49
+ <div class="layui-input-inline">
50
+ <%= select_tag "shixun_type", options_for_select(
51
+ [["全部", 0], ["实践项目", 1], ["非实践项目", 2]], selected: 0
52
+ ), { include_blank: true } %>
51
53
  </div>
54
+ </div>
52
55
 
53
- <!-- <div class="layui-inline inner_div">-->
54
- <!-- <label class="layui-form-label">商机名称</label>-->
55
- <!-- <div class="layui-inline" id="ID-laydate-range">-->
56
- <!-- <input type="text" class="layui-input" name="business_name" id="business_name">-->
57
- <!-- </div>-->
58
- <!-- </div>-->
56
+ <!-- <div class="layui-inline inner_div">-->
57
+ <!-- <label class="layui-form-label">商机名称</label>-->
58
+ <!-- <div class="layui-inline" id="ID-laydate-range">-->
59
+ <!-- <input type="text" class="layui-input" name="business_name" id="business_name">-->
60
+ <!-- </div>-->
61
+ <!-- </div>-->
62
+ <div class="layui-inline borders inner_div">
63
+ <label class="layui-form-label" style="width: 120px">项目名称</label>
64
+ <div class="layui-input-inline">
65
+ <input type="text" class="layui-input" name="shixun_name">
66
+ </div>
59
67
  </div>
60
- <div>
61
- <div class="layui-inline borders inner_div">
62
- <label class="layui-form-label" style="width: 120px">项目名称</label>
63
- <div class="layui-input-inline">
64
- <input type="text" class="layui-input" name="shixun_name">
65
- </div>
68
+ <div class="layui-inline borders inner_div">
69
+ <label class="layui-form-label" style="width: 130px">实践课程名称</label>
70
+ <div class="layui-input-inline">
71
+ <input type="text" class="layui-input" name="subject_name">
66
72
  </div>
67
- <div class="layui-inline borders inner_div">
68
- <label class="layui-form-label" style="width: 130px">实践课程名称</label>
69
- <div class="layui-input-inline">
70
- <input type="text" class="layui-input" name="subject_name">
71
- </div>
73
+ </div>
74
+ <div class="layui-inline borders inner_div">
75
+ <label class="layui-form-label">交付时间</label>
76
+ <div class="layui-inline" id="ID-laydate-range">
77
+ <input type="text" class="layui-input" name="time" id="ID-laydate-demo" placeholder="yyyy-MM-dd">
72
78
  </div>
73
- <div class="layui-inline borders inner_div">
74
- <button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
75
- </button>
76
- <button type="submit" id="search_bt" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_contract">搜索
77
- </button>
79
+ </div>
80
+ <div class="layui-inline borders inner_div">
81
+ <label class="layui-form-label" style="width: 130px">制作完成时间</label>
82
+ <div class="layui-inline" id="ID-laydate-range">
83
+ <input type="text" class="layui-input" name="deliver_date" id="ID-laydate-demo_2" placeholder="yyyy-MM-dd">
78
84
  </div>
79
85
  </div>
86
+ <div class="layui-inline borders inner_div">
87
+ <button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
88
+ </button>
89
+ <button type="submit" id="search_bt" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_contract">搜索
90
+ </button>
91
+ </div>
80
92
  </form>
81
93
  </div>
82
94
 
@@ -150,16 +162,16 @@
150
162
 
151
163
  <script type="text/html" id="shixun_name_t">
152
164
  {{# if(d.s_identifier !== null && d.s_identifier !== ''){ }}
153
- <a target='_blank' style='color: #1E9FFF' href='<%=@url %>/shixuns/{{=d.s_identifier}}/challenges'>{{=d.shixun_name}}</a>
165
+ <a target='_blank' style='color: #1E9FFF' href='<%= @url %>/shixuns/{{=d.s_identifier}}/challenges'>{{=d.shixun_name}}</a>
154
166
  {{# } else { }}
155
167
  <a target='_blank' style='color: #1E9FFF' href='{{=d.link}}'>{{=d.shixun_name}}</a>
156
168
  {{# } }}
157
169
  </script>
158
170
  <script type="text/html" id="subject_name_t">
159
171
  {{# if(d.subject_name !== '--'){ }}
160
- <a target='_blank' style='color: #1E9FFF' href='<%=@url %>/paths/{{=d.subjects_identifier}}'>{{=d.subject_name}}</a>
172
+ <a target='_blank' style='color: #1E9FFF' href='<%= @url %>/paths/{{=d.subjects_identifier}}'>{{=d.subject_name}}</a>
161
173
  {{# } else { }}
162
- <a style='color: #1E9FFF' >{{=d.subject_name}}</a>
174
+ <a style='color: #1E9FFF'>{{=d.subject_name}}</a>
163
175
  {{# } }}
164
176
  </script>
165
177
  <script src="/markdown/marked.min.js" type="text/javascript" charset="utf-8"></script>
@@ -182,9 +194,10 @@
182
194
  // 输出结果
183
195
  return `<div lay-event="show_markdown"><p>${firstTenChars}</p> ${imageTag}</div>`
184
196
  }
197
+
185
198
  layui.config({
186
199
  base: '/markdown/mods/' //存放layui拓展模块的目录位置
187
- }).use(['form', 'table', 'miniPage', 'element', 'laydate', 'dropdown', 'jquery','easyeditor'], function () {
200
+ }).use(['form', 'table', 'miniPage', 'element', 'laydate', 'dropdown', 'jquery', 'easyeditor'], function () {
188
201
  var laydate = layui.laydate,
189
202
  easyeditor = layui.easyeditor,
190
203
  element = layui.element,
@@ -198,6 +211,10 @@
198
211
  elem: '#ID-laydate-demo',
199
212
  range: true
200
213
  });
214
+ laydate.render({
215
+ elem: '#ID-laydate-demo_2',
216
+ range: true
217
+ });
201
218
 
202
219
 
203
220
  var cols_table = [
@@ -235,8 +252,8 @@
235
252
  title: '项目类型',
236
253
  width: 150,
237
254
  align: 'center',
238
- templet: (d)=>{
239
- return d.type === 1? "实践项目":"非实践项目"
255
+ templet: (d) => {
256
+ return d.type === 1 ? "实践项目" : "非实践项目"
240
257
  },
241
258
  hide: gon.filter.type
242
259
  },
@@ -283,8 +300,8 @@
283
300
  title: '审核反馈',
284
301
  width: 150,
285
302
  align: 'center',
286
- templet: (d)=>{
287
- if(d.dectect_feedback){
303
+ templet: (d) => {
304
+ if (d.dectect_feedback) {
288
305
  return extractFirstTenCharsAndImage(d.dectect_feedback)
289
306
  }
290
307
  return ''
@@ -300,18 +317,11 @@
300
317
  },
301
318
  {
302
319
  field: 'shixun_manages',
303
- title: '课程组长',
320
+ title: '项目负责人',
304
321
  width: 150,
305
322
  align: 'center',
306
323
  hide: gon.filter.shixun_manages
307
324
  },
308
- {
309
- field: 'max_manage',
310
- title: '课程组主管',
311
- width: 150,
312
- align: 'center',
313
- hide: gon.filter.max_manage
314
- },
315
325
  {
316
326
  field: 'shixun_staff',
317
327
  title: '销售',
@@ -363,8 +373,8 @@
363
373
  title: '项目类型',
364
374
  width: 150,
365
375
  align: 'center',
366
- templet: (d)=>{
367
- return d.type === 1? "实践项目":"非实践项目"
376
+ templet: (d) => {
377
+ return d.type === 1 ? "实践项目" : "非实践项目"
368
378
  },
369
379
  hide: gon.filter.type
370
380
  },
@@ -411,8 +421,8 @@
411
421
  title: '审核反馈',
412
422
  width: 150,
413
423
  align: 'center',
414
- templet: (d)=>{
415
- if(d.dectect_feedback){
424
+ templet: (d) => {
425
+ if (d.dectect_feedback) {
416
426
  return extractFirstTenCharsAndImage(d.dectect_feedback)
417
427
  }
418
428
  return ''
@@ -428,18 +438,11 @@
428
438
  },
429
439
  {
430
440
  field: 'shixun_manages',
431
- title: '课程组长',
441
+ title: '项目负责人',
432
442
  width: 150,
433
443
  align: 'center',
434
444
  hide: gon.filter.shixun_manages
435
445
  },
436
- {
437
- field: 'max_manage',
438
- title: '课程组主管',
439
- width: 150,
440
- align: 'center',
441
- hide: gon.filter.max_manage
442
- },
443
446
  {
444
447
  field: 'shixun_staff',
445
448
  title: '销售',
@@ -458,13 +461,19 @@
458
461
  var data = form.val("search_form");
459
462
  // 默认管培
460
463
  data.category = gon.category
461
- localStorage.setItem("is_admin-<%=session[:admin_id] %>",gon.is_admin)
464
+ localStorage.setItem("is_admin-<%=session[:admin_id] %>", gon.is_admin)
462
465
  element.tabChange("shixun_nav", gon.category);
463
466
  console.log("is_admin-<%=session[:admin_id] %>")
464
467
  console.log(gon.is_admin)
465
- if (gon.is_admin && data.category == 3 ){
468
+ if (gon.is_admin && data.category == 3) {
466
469
  console.log("admin")
467
- money_cols_table[0].splice(8, 0, {field: 'money',title: '金额',width: 150, align: 'center',hide: gon.filter.money })
470
+ money_cols_table[0].splice(8, 0, {
471
+ field: 'money',
472
+ title: '金额',
473
+ width: 150,
474
+ align: 'center',
475
+ hide: gon.filter.money
476
+ })
468
477
  // console.log(demo)
469
478
  }
470
479
 
@@ -484,7 +493,7 @@
484
493
  limits: [10, 15, 20, 30, 40, 50, 60, 70, 80, 90],
485
494
  page: true,
486
495
  skin: 'line',
487
- done:function (res, curr, count){
496
+ done: function (res, curr, count) {
488
497
  tableDataCount = count;
489
498
  }
490
499
  });
@@ -497,7 +506,7 @@
497
506
  page: {
498
507
  curr: 1
499
508
  },
500
- where: {q: {category:category}}
509
+ where: {q: {category: category}}
501
510
  }, 'data');
502
511
  form.render()
503
512
  return false;
@@ -572,8 +581,8 @@
572
581
  }
573
582
  })
574
583
  return false
575
- }else if(obj.event === 'show_markdown'){
576
- if(data.dectect_feedback !== '--'){
584
+ } else if (obj.event === 'show_markdown') {
585
+ if (data.dectect_feedback !== '--') {
577
586
  var text = `<div class="markdown_list" style="margin: 50px" >` + data.dectect_feedback + `</div>`
578
587
  layer.open({
579
588
  type: 1,
@@ -643,18 +652,18 @@
643
652
  dataType: 'Json'
644
653
  })
645
654
  });
646
- }else if(obj.event === 'list'){
647
- table.reload('shixuns_table',{
655
+ } else if (obj.event === 'list') {
656
+ table.reload('shixuns_table', {
648
657
  page: 1,
649
- limit:tableDataCount, //加载所有数据
650
- done:function (){
658
+ limit: tableDataCount, //加载所有数据
659
+ done: function () {
651
660
  //导出所有数据
652
- table.exportFile("shixuns_table",false,"xls");
661
+ table.exportFile("shixuns_table", false, "xls");
653
662
  //恢复数据分页显示
654
- table.reload('shixuns_table',{
663
+ table.reload('shixuns_table', {
655
664
  page: 1,
656
- limit:20,
657
- done:function (res, curr, count){
665
+ limit: 20,
666
+ done: function (res, curr, count) {
658
667
  tableDataCount = count;
659
668
  }
660
669
  })
@@ -671,7 +680,7 @@
671
680
  $("#category_" + i).click(function () {
672
681
  $(".layui-form")[0].reset();
673
682
  data.category = i
674
- localStorage.setItem("category",i)
683
+ localStorage.setItem("category", i)
675
684
  table.reload('shixuns_table', {
676
685
  page: {
677
686
  curr: 1
@@ -686,19 +695,19 @@
686
695
  $("#category_" + i).click(function () {
687
696
  $(".layui-form")[0].reset();
688
697
  data.category = i
689
- localStorage.setItem("category",i)
698
+ localStorage.setItem("category", i)
690
699
 
691
700
  var flag = true
692
- for(let i = 0; i < money_cols_table[0].length; i ++){
693
- if(money_cols_table[0][i].field === "money"){
701
+ for (let i = 0; i < money_cols_table[0].length; i++) {
702
+ if (money_cols_table[0][i].field === "money") {
694
703
  flag = false
695
704
  break
696
705
  }
697
706
  }
698
707
 
699
708
  var is_admin = localStorage.getItem("is_admin-<%=session[:admin_id] %>")
700
- if (flag && is_admin !== 'false' && data.category == 3 ){
701
- hash = {field: 'money',title: '金额',width: 150, align: 'center',hide: gon.filter.money }
709
+ if (flag && is_admin !== 'false' && data.category == 3) {
710
+ hash = {field: 'money', title: '金额', width: 150, align: 'center', hide: gon.filter.money}
702
711
  money_cols_table[0].splice(8, 0, hash)
703
712
  }
704
713
  table.reload('shixuns_table', {
@@ -707,7 +716,7 @@
707
716
  },
708
717
  cols: money_cols_table,
709
718
  where: {q: data},
710
- done:function (res, curr, count){
719
+ done: function (res, curr, count) {
711
720
  tableDataCount = count;
712
721
  }
713
722
  })
@@ -82,9 +82,9 @@
82
82
  </div>
83
83
  </div>
84
84
  <div class="layui-form-item">
85
- <label class="layui-form-label">课程组长:<span style="color: red"> *</span></label>
85
+ <label class="layui-form-label" style="width: 96px">项目负责人:<span style="color: red"> *</span></label>
86
86
  <div class="layui-input-block">
87
- <div id="manage_id" style="width: 50%;"></div>
87
+ <div id="manage_id" style="width: 49%;margin-left: 12px"></div>
88
88
  </div>
89
89
  </div>
90
90
  <div class="layui-form-item">
@@ -2,7 +2,7 @@ area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
2
2
  json.data do
3
3
  json.array! @staffs do |d|
4
4
  json.id d.id
5
- json.user_name d.user.real_name
5
+ json.user_name d.user&.real_name
6
6
  json.name d.name
7
7
  json.role d.role&.name
8
8
  json.schools d.staff_schools.map(&:school).map(&:name).join("、")
@@ -142,7 +142,7 @@
142
142
  },
143
143
  {
144
144
  field: 'mange_name',
145
- title: '课程经理',
145
+ title: '课程组组长',
146
146
  align: 'center',
147
147
  minWidth: 100,
148
148
  },
@@ -20,9 +20,9 @@
20
20
  </div>
21
21
  </div>
22
22
  <div class="layui-form-item">
23
- <label class="layui-form-label">课程经理:<span style="color: red"> *</span></label>
23
+ <label class="layui-form-label" style="width: 96px">课程组组长:<span style="color: red"> *</span></label>
24
24
  <div class="layui-input-block">
25
- <div id="manage_id" style="width: 50%"></div>
25
+ <div id="manage_id" style="width: 49%;margin-left: 12px"></div>
26
26
  </div>
27
27
  </div>
28
28
 
@@ -2,47 +2,53 @@
2
2
  <form class="layui-form layui-form-pane" lay-filter="search_follows">
3
3
  <div class="layui-form-item">
4
4
  <div class="layui-inline">
5
- <label class="layui-form-label">教师姓名</label>
5
+ <label class="layui-form-label" style="width: 130px">教师姓名</label>
6
6
  <div class="layui-input-inline">
7
7
  <input type="text" name="name" class="layui-input">
8
8
  </div>
9
9
  </div>
10
10
  <div class="layui-inline">
11
- <label class="layui-form-label">单位</label>
11
+ <label class="layui-form-label" style="width: 130px">单位</label>
12
12
  <div class="layui-input-inline">
13
13
  <input type="text" name="department" class="layui-input">
14
14
  </div>
15
15
  </div>
16
16
  <div class="layui-inline">
17
- <label class="layui-form-label">生态经理</label>
17
+ <label class="layui-form-label" style="width: 130px">生态经理</label>
18
18
  <div class="layui-input-inline">
19
19
  <%= select_tag "staff_id", options_for_select(@staff_manage, params[:staff_id]), { 'lay-filter': 'staff_id', include_blank: true } %>
20
20
  </div>
21
21
  </div>
22
22
  <div class="layui-inline">
23
- <label class="layui-form-label">区域</label>
23
+ <label class="layui-form-label" style="width: 130px">区域</label>
24
24
  <div class="layui-input-inline">
25
25
  <%= select_tag "area", options_for_select(EducodeSales::Common.where(clazz: 'area').pluck(:name, :id)), { include_blank: true } %>
26
26
  </div>
27
27
  </div>
28
28
  <div class="layui-inline">
29
- <label class="layui-form-label">跟进时间</label>
29
+ <label class="layui-form-label" style="width: 130px">跟进时间</label>
30
30
  <div class="layui-input-inline">
31
31
  <input type="text" class="layui-input" id="follows_date" name="follows_date" autocomplete="off" placeholder=" - ">
32
32
  </div>
33
33
  </div>
34
34
  <div class="layui-inline">
35
- <label class="layui-form-label">最新进展</label>
35
+ <label class="layui-form-label" style="width: 130px">最新进展</label>
36
36
  <div class="layui-input-inline">
37
37
  <input type="text" name="description" class="layui-input">
38
38
  </div>
39
39
  </div>
40
40
  <div class="layui-inline">
41
- <label class="layui-form-label">态度</label>
41
+ <label class="layui-form-label" style="width: 130px">态度</label>
42
42
  <div class="layui-input-inline">
43
43
  <%= select_tag "attitude_id",options_for_select(EducodeSales::Common.where(clazz: "teacher_attitude").pluck(:name, :id)), {include_blank: true }%>
44
44
  </div>
45
45
  </div>
46
+ <div class="layui-inline">
47
+ <label class="layui-form-label" style="width: 130px">最新跟进人</label>
48
+ <div class="layui-input-inline">
49
+ <input type="text" name="staff" class="layui-input">
50
+ </div>
51
+ </div>
46
52
 
47
53
  <div class="layui-inline">
48
54
  <button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_follows_search">重置
@@ -202,16 +208,17 @@
202
208
  });
203
209
 
204
210
  form.on('submit(reset_follows_search)', function (data) {
205
- var field = data.field;
206
- form.val('search_follows', {
207
- area: "",
208
- follows_date: "",
209
- name: "",
210
- department: "",
211
- description: "",
212
- staff_id: ""
213
- })
214
- return false;
211
+ var field = data.field;
212
+ form.val('search_follows', {
213
+ area: "",
214
+ follows_date: "",
215
+ name: "",
216
+ department: "",
217
+ description: "",
218
+ staff_id: "",
219
+ staff: ""
220
+ });
221
+ return false;
215
222
  });
216
223
 
217
224
  table.on('toolbar(teacher_follows_table)', function(obj){
@@ -19,6 +19,12 @@
19
19
  <input type="text" name="school" class="layui-input">
20
20
  </div>
21
21
  </div>
22
+ <div class="layui-inline">
23
+ <label class="layui-form-label">职务</label>
24
+ <div class="layui-input-inline">
25
+ <input type="text" name="job" class="layui-input">
26
+ </div>
27
+ </div>
22
28
  <div class="layui-inline">
23
29
  <label class="layui-form-label">职称</label>
24
30
  <div class="layui-input-inline">
@@ -226,6 +226,9 @@
226
226
  can?(:subject, EducodeSales::BusinessDeliverSubject) ||
227
227
  can?(:business, EducodeSales::BusinessDeliverSubject) ||
228
228
  can?(:status, EducodeSales::BusinessDeliverSubject) ||
229
+ can?(:all_business, EducodeSales::BusinessDeliverSubject) ||
230
+ can?(:all_subject, EducodeSales::BusinessDeliverSubject) ||
231
+ can?(:all_shixun, EducodeSales::BusinessDeliverSubject) ||
229
232
  @current_admin.is_admin %>
230
233
  <li class="layui-nav-item layui-nav-itemed menu-li">
231
234
  <a class href="javascript:;"><b><%= image_tag "educode_sales/5.渠道管理.png", size: "15" %>
@@ -236,17 +239,17 @@
236
239
  <a href="/missions/subject_trends/trends" class="<%= current?('layui-this', trends_subject_trends_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/7.运营活动.png", size: "15" %>
237
240
  <i style="font-size: 25px; padding-right: 15px"></i>课程态势</a></dd>
238
241
  <%end %>
239
- <% if can?(:business, EducodeSales::BusinessDeliverSubject) %>
242
+ <% if can?(:business, EducodeSales::BusinessDeliverSubject) || can?(:all_business, EducodeSales::BusinessDeliverSubject) %>
240
243
  <dd>
241
244
  <a href="/missions/business_courses" class="<%= current?('layui-this', business_courses_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/2.市场态势.png", size: "15" %>
242
245
  <i style="font-size: 25px; padding-right: 15px"></i>商机交付课程</a></dd>
243
246
  <%end %>
244
- <% if can?(:subject, EducodeSales::BusinessDeliverSubject) %>
247
+ <% if can?(:subject, EducodeSales::BusinessDeliverSubject) || can?(:all_subject, EducodeSales::BusinessDeliverSubject) %>
245
248
  <dd>
246
249
  <a href="/missions/subjects" class="<%= current?('layui-this', subjects_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/2.市场态势.png", size: "15" %>
247
250
  <i style="font-size: 25px; padding-right: 15px"></i>实践课程管理</a></dd>
248
251
  <%end %>
249
- <% if can?(:shixun, EducodeSales::BusinessDeliverSubject) %>
252
+ <% if can?(:shixun, EducodeSales::BusinessDeliverSubject) || can?(:all_shixun, EducodeSales::BusinessDeliverSubject) %>
250
253
  <dd>
251
254
  <a href="/missions/shixuns" class="<%= current?('layui-this', shixuns_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/2.市场态势.png", size: "15" %>
252
255
  <i style="font-size: 25px; padding-right: 15px"></i>实践项目管理</a></dd>
@@ -0,0 +1,16 @@
1
+ # config/environments/development.rb
2
+
3
+ Rails.application.configure do
4
+ # 开启调试模式
5
+ config.consider_all_requests_local = true
6
+
7
+ # 关闭缓存
8
+ config.cache_classes = false
9
+ config.action_controller.perform_caching = false
10
+
11
+ # 显示错误页
12
+ config.action_dispatch.show_exceptions = true
13
+
14
+ # 其他开发环境配置...
15
+ end
16
+
data/config/routes.rb CHANGED
@@ -272,10 +272,17 @@ EducodeSales::Engine.routes.draw do
272
272
  get :years_all_target
273
273
  post :cal_finish_amount
274
274
  post :add_year_target
275
+ post :save_staff_year_target
276
+ get :staff_year_target
277
+ get :staff_year_target_log
278
+ get :staff_year_business
279
+
275
280
  end
276
281
  member do
277
282
  delete :delete_business_info
278
283
  put :update_year_target
284
+ put :save_staff_year_target
285
+ put :audit_staff_year_target
279
286
  end
280
287
  end
281
288
 
@@ -27,7 +27,7 @@ class CreateEducodeSalesSalesTargetHistories < ActiveRecord::Migration[5.2]
27
27
  t.float :target_6, :limit => 53
28
28
  t.float :m_target_6, :limit => 53
29
29
  t.float :target_7, :limit => 53
30
- t.float :m_target_7, :limit => 53
30
+ t.float :m_target_7, :limit => 53i
31
31
  t.float :target_8, :limit => 53
32
32
  t.float :m_target_8, :limit => 53
33
33
  t.float :target_9, :limit => 53
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '1.10.59'
2
+ VERSION = '1.10.71'
3
3
  end