educode_sales 0.3.5 → 0.3.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 (100) hide show
  1. checksums.yaml +5 -5
  2. data/app/assets/javascripts/educode_sales/extent/xm-select.js +8 -0
  3. data/app/assets/stylesheets/educode_sales/public.css +2 -1
  4. data/app/controllers/educode_sales/businesses_controller.rb +26 -10
  5. data/app/controllers/educode_sales/follow_ups_controller.rb +10 -1
  6. data/app/controllers/educode_sales/home_controller.rb +10 -1
  7. data/app/controllers/educode_sales/import_teachers_controller.rb +68 -0
  8. data/app/controllers/educode_sales/key_person_controller.rb +1 -1
  9. data/app/controllers/educode_sales/places_controller.rb +1 -0
  10. data/app/controllers/educode_sales/plans_controller.rb +1 -1
  11. data/app/controllers/educode_sales/sale_trends_controller.rb +8 -6
  12. data/app/controllers/educode_sales/sales_controller.rb +1 -0
  13. data/app/controllers/educode_sales/teachers_controller.rb +17 -5
  14. data/app/models/educode_sales/assign_follow_up.rb +6 -0
  15. data/app/models/educode_sales/follow_up.rb +1 -0
  16. data/app/models/educode_sales/key_person.rb +1 -1
  17. data/app/views/educode_sales/activities/edit.html.erb +1 -2
  18. data/app/views/educode_sales/activities/index.html.erb +38 -18
  19. data/app/views/educode_sales/activities/new.html.erb +1 -1
  20. data/app/views/educode_sales/activities/show_teachers.html.erb +12 -12
  21. data/app/views/educode_sales/businesses/edit.html.erb +15 -4
  22. data/app/views/educode_sales/businesses/edit_follow_record.html.erb +54 -6
  23. data/app/views/educode_sales/businesses/edit_plan.html.erb +4 -4
  24. data/app/views/educode_sales/businesses/index.html.erb +169 -23
  25. data/app/views/educode_sales/businesses/index.json.jbuilder +4 -0
  26. data/app/views/educode_sales/businesses/new.html.erb +13 -3
  27. data/app/views/educode_sales/businesses/new_follow_record.html.erb +53 -16
  28. data/app/views/educode_sales/businesses/show_follow.html.erb +25 -19
  29. data/app/views/educode_sales/businesses/show_follow_record.html.erb +7 -1
  30. data/app/views/educode_sales/businesses/show_keys.html.erb +1 -1
  31. data/app/views/educode_sales/commons/edit.html.erb +3 -4
  32. data/app/views/educode_sales/commons/index.html.erb +4 -4
  33. data/app/views/educode_sales/commons/new.html.erb +1 -1
  34. data/app/views/educode_sales/follow_ups/teachers.json.jbuilder +3 -2
  35. data/app/views/educode_sales/home/sales_staff.json.jbuilder +9 -0
  36. data/app/views/educode_sales/operation_plans/_monthPlan.html.erb +9 -9
  37. data/app/views/educode_sales/operation_plans/_monthly.html.erb +10 -9
  38. data/app/views/educode_sales/operation_plans/_weekPlan.html.erb +9 -8
  39. data/app/views/educode_sales/operation_plans/_weekly.html.erb +11 -9
  40. data/app/views/educode_sales/operation_plans/edit_month.html.erb +1 -1
  41. data/app/views/educode_sales/operation_plans/edit_week.html.erb +2 -1
  42. data/app/views/educode_sales/operation_plans/new_month.html.erb +1 -1
  43. data/app/views/educode_sales/operation_plans/new_monthly.html.erb +7 -7
  44. data/app/views/educode_sales/operation_plans/new_week.html.erb +1 -1
  45. data/app/views/educode_sales/operation_plans/new_weekly.html.erb +7 -7
  46. data/app/views/educode_sales/operation_reports/audit.html.erb +3 -3
  47. data/app/views/educode_sales/operation_reports/edit.html.erb +34 -8
  48. data/app/views/educode_sales/operation_reports/show.html.erb +6 -6
  49. data/app/views/educode_sales/operations/trends.html.erb +2 -2
  50. data/app/views/educode_sales/places/edit.html.erb +1 -3
  51. data/app/views/educode_sales/places/index.html.erb +6 -6
  52. data/app/views/educode_sales/places/index.json.jbuilder +3 -3
  53. data/app/views/educode_sales/places/new.html.erb +1 -2
  54. data/app/views/educode_sales/plans/_monthPlan.html.erb +9 -9
  55. data/app/views/educode_sales/plans/_monthly.html.erb +9 -8
  56. data/app/views/educode_sales/plans/_weekPlan.html.erb +9 -8
  57. data/app/views/educode_sales/plans/_weekly.html.erb +10 -8
  58. data/app/views/educode_sales/plans/edit_month.html.erb +1 -1
  59. data/app/views/educode_sales/plans/edit_week.html.erb +1 -1
  60. data/app/views/educode_sales/plans/edit_weekly.html.erb +7 -7
  61. data/app/views/educode_sales/plans/new_month.html.erb +3 -3
  62. data/app/views/educode_sales/plans/new_monthly.html.erb +7 -7
  63. data/app/views/educode_sales/plans/new_week.html.erb +1 -1
  64. data/app/views/educode_sales/plans/new_weekly.html.erb +7 -7
  65. data/app/views/educode_sales/roles/edit.html.erb +2 -3
  66. data/app/views/educode_sales/roles/index.html.erb +6 -7
  67. data/app/views/educode_sales/roles/new.html.erb +1 -1
  68. data/app/views/educode_sales/sale_reports/audit.html.erb +3 -3
  69. data/app/views/educode_sales/sale_reports/edit.html.erb +33 -7
  70. data/app/views/educode_sales/sale_reports/show.html.erb +2 -2
  71. data/app/views/educode_sales/sale_trends/trends.html.erb +2 -2
  72. data/app/views/educode_sales/sales/index.html.erb +4 -4
  73. data/app/views/educode_sales/sales/index.json.jbuilder +2 -2
  74. data/app/views/educode_sales/sales/operations.html.erb +4 -4
  75. data/app/views/educode_sales/sales/school.html.erb +1 -1
  76. data/app/views/educode_sales/sales/trends.html.erb +2 -6
  77. data/app/views/educode_sales/sales/xschool.html.erb +1 -1
  78. data/app/views/educode_sales/sessions/login.html.erb +2 -2
  79. data/app/views/educode_sales/staffs/edit.html.erb +1 -1
  80. data/app/views/educode_sales/staffs/index.html.erb +6 -6
  81. data/app/views/educode_sales/staffs/new.html.erb +2 -2
  82. data/app/views/educode_sales/teachers/add_courses.html.erb +4 -5
  83. data/app/views/educode_sales/teachers/add_event.html.erb +1 -1
  84. data/app/views/educode_sales/teachers/add_keys.html.erb +58 -13
  85. data/app/views/educode_sales/teachers/edit.html.erb +6 -4
  86. data/app/views/educode_sales/teachers/edit_follow_record.html.erb +1 -1
  87. data/app/views/educode_sales/teachers/import.html.erb +40 -0
  88. data/app/views/educode_sales/teachers/index.html.erb +151 -38
  89. data/app/views/educode_sales/teachers/new.html.erb +4 -4
  90. data/app/views/educode_sales/teachers/new_follow_record.html.erb +1 -1
  91. data/app/views/educode_sales/teachers/search_new.html.erb +1 -1
  92. data/app/views/educode_sales/teachers/show_class.html.erb +1 -1
  93. data/app/views/educode_sales/teachers/show_follow.html.erb +14 -14
  94. data/app/views/layouts/educode_sales/application.html.erb +14 -14
  95. data/config/routes.rb +5 -0
  96. data/db/migrate/20211009031109_add_tel_key_peoples.rb +5 -0
  97. data/db/migrate/20211009063423_add_source_businesses.rb +5 -0
  98. data/db/migrate/20211013060712_create_educode_sales_assign_follow_ups.rb +10 -0
  99. data/lib/educode_sales/version.rb +1 -1
  100. metadata +15 -8
@@ -50,7 +50,7 @@
50
50
  <input type="text" class="layui-input" id="date" name="date" placeholder=" - ">
51
51
  </div>
52
52
  </div>
53
- <div class="layui-form-item m-t-10">
53
+ <div class="layui-inline">
54
54
  <button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
55
55
  </button>
56
56
  <button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_bussiness">搜索
@@ -71,15 +71,18 @@
71
71
  </div>
72
72
  </script>
73
73
  <script type="text/html" id="currentTableBar">
74
- <% if can? :create, EducodeSales::SalePlan %>
75
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="addWeek">添加周计划</a>
76
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="addMonth">添加月计划</a>
74
+ <% if can? :add_follow, EducodeSales::Business %>
75
+ <% if @current_admin.is_admin %>
76
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
77
+ <% else %>
78
+ {{# if ( d.assign_follow_ups.length > 0 && d.assign_follow_ups.indexOf(d.current_staff_id) >=0 || (d.assign_follow_ups.length == 0) || (d.current_staff_id == d.staff_id) ) {}}
79
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
80
+ {{# }}}
77
81
  <% end %>
78
- <% if can? :update, EducodeSales::Business %>
79
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
82
+
80
83
  <% end %>
81
- <% if can? :destroy, EducodeSales::SalePlan %>
82
- <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
84
+ <% if @more %>
85
+ <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>
83
86
  <% end %>
84
87
  </script>
85
88
  <script type="text/html" id="show_keys">
@@ -91,22 +94,23 @@
91
94
 
92
95
 
93
96
  <script>
94
- layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate'], function () {
97
+ layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate', 'dropdown'], function () {
95
98
  var $ = layui.jquery,
96
99
  form = layui.form,
97
100
  request = layui.request,
98
101
  miniPage = layui.miniPage,
102
+ dropdown = layui.dropdown,
99
103
  laydate = layui.laydate;
100
104
 
101
105
  laydate.render({
102
106
  elem: '#date',
103
- range: true
107
+ range: true
104
108
  });
105
109
 
106
110
  table = layui.table;
107
111
  table.render({
108
112
  elem: '#businesses_table',
109
- url: '/educode_sales/businesses',
113
+ url: '/missions/businesses',
110
114
  where: {q: form.val('search_form')},
111
115
  toolbar: '#bussinessBar',
112
116
  defaultToolbar: [],
@@ -183,6 +187,11 @@
183
187
  width: 110,
184
188
  title: '渠道'
185
189
  },
190
+ {
191
+ field: 'source',
192
+ width: 110,
193
+ title: '商机来源'
194
+ },
186
195
  {
187
196
  field: 'last_follow_person',
188
197
  width: 120,
@@ -190,19 +199,116 @@
190
199
  },
191
200
  {
192
201
  title: '操作',
193
- minWidth: 300,
202
+ minWidth: 170,
194
203
  toolbar: '#currentTableBar',
195
204
  align: "center",
196
205
  fixed: 'right'
197
206
  }
198
207
  ]
199
208
  ],
200
- height: 600,
209
+
201
210
  limit: 20,
211
+ limits: [10,15,20,30,40,50,60,70,80,90],
202
212
  page: true,
203
- skin: 'line'
213
+ skin: 'line',
214
+ done: function (res) {
215
+ drowpdwonRender()
216
+ }
217
+
204
218
  });
205
219
 
220
+ var dropmenu = gon.menus;
221
+
222
+ drowpdwonRender = function() {
223
+ dropdown.render({
224
+ elem: '.more-btn',
225
+ data: dropmenu,
226
+ click: function(data, othis){
227
+ var elem = $(this.elem);
228
+ id = elem.data('id');
229
+ switch (data.event) {
230
+ case 'week':
231
+ week(id);
232
+ break;
233
+ case 'month':
234
+ month(id);
235
+ break;
236
+ case 'edit':
237
+ edit(id);
238
+ break;
239
+ case 'delete':
240
+ deleteBusiness(id, elem.data['name']);
241
+ break;
242
+ }
243
+ }
244
+ });
245
+ }
246
+
247
+ function week(id) {
248
+ var content = miniPage.getHrefContent('/missions/plans/new_week?business_id=' + id);
249
+ var openWH = miniPage.getOpenWidthHeight();
250
+
251
+ sindex = layer.open({
252
+ title: '添加周计划',
253
+ type: 1,
254
+ shade: 0.2,
255
+ maxmin: true,
256
+ shadeClose: true,
257
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
258
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
259
+ content: content
260
+ });
261
+ $(window).on("resize", function () {
262
+ layer.full(sindex);
263
+ });
264
+ }
265
+
266
+ function edit(id) {
267
+ var content = miniPage.getHrefContent('/missions/businesses/' + id + '/edit');
268
+ var openWH = miniPage.getOpenWidthHeight();
269
+ sindex = layer.open({
270
+ title: '编辑',
271
+ type: 1,
272
+ shade: 0.2,
273
+ maxmin: true,
274
+ shadeClose: true,
275
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
276
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
277
+ content: content
278
+ });
279
+ $(window).on("resize", function () {
280
+ layer.full(sindex);
281
+ });
282
+ }
283
+
284
+ function month(id) {
285
+ var content = miniPage.getHrefContent('/missions/plans/new_month?business_id=' + id);
286
+ var openWH = miniPage.getOpenWidthHeight();
287
+ sindex = layer.open({
288
+ title: '添加月计划',
289
+ type: 1,
290
+ shade: 0.2,
291
+ maxmin: true,
292
+ shadeClose: true,
293
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
294
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
295
+ content: content
296
+ });
297
+ $(window).on("resize", function () {
298
+ layer.full(sindex);
299
+ });
300
+ }
301
+
302
+ function deleteBusiness(id, name) {
303
+ layer.confirm('确定删除' + name, function (index) {
304
+ request.delete('missions/businesses/' + id, {}, function (res) {
305
+ layer.close(index);
306
+ table.reload("businesses_table")
307
+ })
308
+ });
309
+ }
310
+
311
+
206
312
  var sort = {}, search = {};
207
313
  table.on('sort(businesses_table)', function (obj) {
208
314
  sort.field = obj.field;
@@ -240,7 +346,7 @@
240
346
 
241
347
  table.on('toolbar(businesses_table)', function (obj) {
242
348
  if (obj.event === 'add') { // 监听添加操作
243
- var content = miniPage.getHrefContent('/educode_sales/businesses/new');
349
+ var content = miniPage.getHrefContent('/missions/businesses/new');
244
350
  var openWH = miniPage.getOpenWidthHeight();
245
351
  index = layer.open({
246
352
  title: '添加商机',
@@ -265,8 +371,28 @@
265
371
  table.on('tool(businesses_table)', function (obj) {
266
372
  var data = obj.data;
267
373
  id = data.id
268
- if (obj.event === 'edit') {
269
- var content = miniPage.getHrefContent('/educode_sales/businesses/' + id + '/edit');
374
+ if (obj.event === 'add_event') { // 监听添加操作
375
+ business_id = data.id
376
+ var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + data.id);
377
+ var openWH = miniPage.getOpenWidthHeight();
378
+ sale_plan_index = layer.open({
379
+ title: '添加商机跟进记录',
380
+ type: 1,
381
+ shade: 0.2,
382
+ maxmin: true,
383
+ shadeClose: true,
384
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
385
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
386
+ content: content,
387
+ success: function (layero, index) {
388
+ form.render('select');
389
+ }
390
+ });
391
+ $(window).on("resize", function () {
392
+ layer.full(sale_plan_index);
393
+ });
394
+ } else if (obj.event === 'edit') {
395
+ var content = miniPage.getHrefContent('/missions/businesses/' + id + '/edit');
270
396
  var openWH = miniPage.getOpenWidthHeight();
271
397
  sindex = layer.open({
272
398
  title: '编辑',
@@ -284,13 +410,33 @@
284
410
  return false;
285
411
  } else if (obj.event === 'delete') {
286
412
  layer.confirm('确定删除' + data.name, function (index) {
287
- request.delete('educode_sales/businesses/' + data.id, {}, function (res) {
413
+ request.delete('missions/businesses/' + data.id, {}, function (res) {
288
414
  layer.close(index);
289
415
  table.reload("businesses_table")
290
416
  })
291
417
  });
292
- } else if (obj.event === 'addWeek') {
293
- var content = miniPage.getHrefContent('/educode_sales/plans/new_week?business_id=' + obj.data.id);
418
+ }else if (obj.event === 'add_follow') { // 监听添加操作
419
+ business_id = parent.business_id
420
+ var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + parent.id);
421
+ var openWH = miniPage.getOpenWidthHeight();
422
+ sale_plan_index = layer.open({
423
+ title: '添加商机跟进记录',
424
+ type: 1,
425
+ shade: 0.2,
426
+ maxmin: true,
427
+ shadeClose: true,
428
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
429
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
430
+ content: content,
431
+ success: function (layero, index) {
432
+ form.render('select');
433
+ }
434
+ });
435
+ $(window).on("resize", function () {
436
+ layer.full(index);
437
+ });
438
+ }else if (obj.event === 'addWeek') {
439
+ var content = miniPage.getHrefContent('/missions/plans/new_week?business_id=' + obj.data.id);
294
440
  var openWH = miniPage.getOpenWidthHeight();
295
441
 
296
442
  sindex = layer.open({
@@ -307,7 +453,7 @@
307
453
  layer.full(sindex);
308
454
  });
309
455
  } else if (obj.event === 'addMonth') {
310
- var content = miniPage.getHrefContent('/educode_sales/plans/new_month?business_id=' + obj.data.id);
456
+ var content = miniPage.getHrefContent('/missions/plans/new_month?business_id=' + obj.data.id);
311
457
  var openWH = miniPage.getOpenWidthHeight();
312
458
  sindex = layer.open({
313
459
  title: '添加月计划',
@@ -326,7 +472,7 @@
326
472
  } else if (obj.event === 'show_keys') {
327
473
  business_id = obj.data.id
328
474
  follow_up_id = obj.data.follow_up_id;
329
- content = miniPage.getHrefContent('/educode_sales/businesses/show_keys');
475
+ content = miniPage.getHrefContent('/missions/businesses/show_keys');
330
476
  openWH = miniPage.getOpenWidthHeight();
331
477
  index = layer.open({
332
478
  title: '关键人',
@@ -347,7 +493,7 @@
347
493
  });
348
494
  } else if (obj.event === 'show_follow') {
349
495
  business_id = obj.data.id
350
- content = miniPage.getHrefContent('/educode_sales/businesses/show_follow?id=' + id);
496
+ content = miniPage.getHrefContent('/missions/businesses/show_follow?id=' + id);
351
497
  openWH = miniPage.getOpenWidthHeight();
352
498
  index = layer.open({
353
499
  title: '商机列表/' + data.name + '的跟进记录',
@@ -16,6 +16,10 @@ json.data do
16
16
  json.return_money d.return_money
17
17
  json.place d.last_follow_up&.place&.name
18
18
  json.last_follow_person d.last_follow_up.present? ? d.last_follow_up.staff.user.real_name : ''
19
+ json.source d.source
20
+ json.assign_follow_ups d.last_follow_up.present? ? d.last_follow_up.assign_follow_ups.pluck(:staff_id) : []
21
+ json.current_staff_id @current_admin.id
22
+ json.staff_id d.staff_id
19
23
  end
20
24
  end
21
25
  json.code 0
@@ -10,6 +10,14 @@
10
10
  <label class="layui-form-label required">单位部门</label>
11
11
  <div class="layui-input-block" id="add_department" style="width: 300px;"></div>
12
12
  </div>
13
+ <br>
14
+ <div class="layui-inline" style="padding-top: 20px">
15
+ <label class="layui-form-label ">商机来源</label>
16
+ <input type="text" name="source" autocomplete="off" class="layui-input" style="width: 300px;" placeholder="请输入商机来源">
17
+ </div>
18
+ <div class="layui-inline" style="padding-top: 20px">
19
+ <p style="padding-left: 40px">请填写提供本商机的人名(如‘张明’);如果为非头歌用户,请增加单位信息(如‘张明,华为公司’)</p>
20
+ </div>
13
21
  <div class="layui-form-item m-t-20">
14
22
  <div class="layui-input-block">
15
23
  <button class="layui-btn layui-btn-normal" lay-submit lay-filter="create_business">提交</button>
@@ -46,7 +54,7 @@
46
54
  if (!value) {
47
55
  return cb([]);
48
56
  }
49
- request.get('educode_sales/search?type=department&q=' + value, {}, function (res) {
57
+ request.get('missions/search?type=department&q=' + value, {}, function (res) {
50
58
  return cb(res)
51
59
  })
52
60
  }
@@ -60,9 +68,11 @@
60
68
  if (add_department.getValue() == "") {
61
69
  return layer.alert("请选择单位部门")
62
70
  }
63
- request.authPost("educode_sales/businesses", {
71
+ request.authPost("missions/businesses", {
64
72
  department_id: add_department.getValue(),
65
- name: data.field.name
73
+ name: data.field.name,
74
+ source: data.field.source
75
+
66
76
  }, function (res) {
67
77
  if (res.success == false) {
68
78
  layer.alert(res.msg)
@@ -16,9 +16,15 @@
16
16
  <br>
17
17
  <div class="layui-inline">
18
18
  <label class="layui-form-label required">项目类型</label>
19
+ <%if @last_follow_up&.clazz&.name == "O类" %>
19
20
  <div class="layui-input-inline">
20
- <%= select_tag "clazz_id", options_for_select(@clazz, @last_follow_up&.clazz_id), class: 'required' %>
21
+ <%= select_tag "clazz_id", options_for_select([['O类',EducodeSales::Common.find_by(name: "O类").id]]),:disabled => true, class: 'required' %>
21
22
  </div>
23
+ <%else %>
24
+ <div class="layui-input-inline">
25
+ <%= select_tag "clazz_id", options_for_select(@clazz, @last_follow_up&.clazz_id), class: 'required' %>
26
+ </div>
27
+ <%end %>
22
28
  </div>
23
29
  <div class="layui-inline">
24
30
  <label class="layui-form-label required">项目阶段</label>
@@ -71,9 +77,15 @@
71
77
  <input name="divide_rate" class="layui-input" value="<%= @last_follow_up&.divide_rate%>">
72
78
  </div>
73
79
  <span style="margin-top: 10px; float:left;">%</span>
80
+ </div>
81
+ <div class="layui-form-item">
82
+ <label class="layui-form-label">指定跟进人</label>
83
+ <div class="layui-input-inline">
84
+ <div id="assign_follow" style="width: 512px;"></div>
85
+ </div>
74
86
  </div>
75
87
  <div class="layui-form-item layui-form-text">
76
- <label class="layui-form-label required">自我小结</label>
88
+ <label class="layui-form-label required">商机说明</label>
77
89
  <div class="layui-input-block">
78
90
  <textarea name="description" lay-verify="required" placeholder="此处可以填写:
79
91
  1、有无预算;
@@ -104,15 +116,16 @@
104
116
  </div>
105
117
 
106
118
  <script>
107
- layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate'], function () {
119
+ layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate', 'xmSelect'], function () {
108
120
  var form = layui.form,
109
121
  layer = layui.layer,
110
122
  table = layui.table,
111
123
  laytpl = layui.laytpl,
112
124
  request = layui.request,
113
125
  laydate = layui.laydate,
126
+ xmSelect = layui.xmSelect,
114
127
  $ = layui.$;
115
-
128
+
116
129
  laydate.render({
117
130
  elem: '#invitation_at_add'
118
131
  })
@@ -120,22 +133,46 @@
120
133
  laydate.render({
121
134
  elem: '#reception_at_add'
122
135
  });
136
+ var sales_list = xmSelect.render({
137
+ el: '#assign_follow',
138
+ remoteSearch: true,
139
+ clickClose: true,
140
+ delay: 1000,
141
+ paging: true,
142
+ pageRemote: true,
143
+ filterable: true,
144
+ remoteMethod: function (val, cb, show, pageIndex) {
145
+ $.ajax( '/missions/sales_staff', {
146
+ method: 'get',
147
+ data: {
148
+ q: val,
149
+ page: pageIndex
150
+ },
151
+ dataType: 'json',
152
+ success: function (res) {
153
+ var data = res.data;
154
+ if (res.code == 0) {
155
+ cb(res.data, res.count);
156
+ } else {
157
+ layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
158
+ }
159
+
160
+ }
161
+ })
162
+ }
163
+ })
164
+
123
165
 
124
166
  form.render();
125
167
 
126
168
  form.on('submit(add_follow_up)', function (data) {
127
- console.log(data);
128
- data.field.business_id = "<%= @business.id %>";
129
- console.log(data.field.business_id);
130
- // request.authPut("educode_sales/businesses/" + data.field.business_id +"/updateMoney/", {
131
- // return_money: 0
132
- // }, function (res) {
133
- // if (res.success == false) {
134
- // layer.alert(res.msg)
135
- // } else {
136
- // }
137
- // })
138
- request.authPost("educode_sales/follow_ups", data.field, function (res) {
169
+ var assign_follow = [];
170
+ sales_list.getValue().forEach(function(d) {
171
+ assign_follow.push(d.value);
172
+ })
173
+ data.field.assign_follow_up = assign_follow;
174
+ data.field.business_id = "<%= @business.id %>";
175
+ request.authPost("missions/follow_ups", data.field, function (res) {
139
176
  if (res.success == false) {
140
177
  layer.alert(res.msg)
141
178
  } else {
@@ -2,7 +2,11 @@
2
2
  <div class="layui-btn-container">
3
3
  <span class="table-label">跟进记录</span>
4
4
  <% if can? :add_follow, EducodeSales::Business %>
5
- <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add"> 添加跟进记录</button>
5
+ <% if @current_admin.is_admin %>
6
+ <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add"> 添加跟进记录</button>
7
+ <% elsif @business.staff_id == @current_admin.id || @business.last_follow_up.nil? || @business.last_follow_up.assign_follow_ups.blank? || (@business.last_follow_up.assign_follow_ups.pluck(:staff_id).include?(@current_admin.id)) %>
8
+ <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add"> 添加跟进记录</button>
9
+ <% end %>
6
10
  <% end %>
7
11
  </div>
8
12
  </script>
@@ -16,7 +20,11 @@
16
20
  <% end %>
17
21
  {{# if(d.is_latest){ }}
18
22
  <% if can? :update_follow, EducodeSales::Business %>
19
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
23
+ <% if @current_admin.is_admin %>
24
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
25
+ <% elsif @business.staff_id == @current_admin.id || @business.last_follow_up.nil? || @business.last_follow_up.assign_follow_ups.blank? || (@business.last_follow_up.assign_follow_ups.pluck(:staff_id).include?(@current_admin.id)) %>
26
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
27
+ <% end %>
20
28
  <% end %>
21
29
  <% if can? :destroy_follow, EducodeSales::Business %>
22
30
  <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
@@ -62,7 +70,7 @@
62
70
 
63
71
  table.render({
64
72
  elem: '#sale_plan_follow_table',
65
- url: '/educode_sales/businesses/show_follow?id=' + parent.id ,
73
+ url: '/missions/businesses/show_follow?id=' + parent.id ,
66
74
  toolbar: '#toolbarDemo_follow',
67
75
  defaultToolbar: [],
68
76
  cols: [
@@ -142,15 +150,15 @@
142
150
  },
143
151
  {
144
152
  title: '操作',
145
- minWidth: 250,
153
+ minWidth: 200,
146
154
  toolbar: '#currentTableBar_follow',
147
155
  align: "center",
148
156
  fixed: 'right'
149
157
  }
150
158
  ]
151
159
  ],
152
- height: 520,
153
160
  limit: 20,
161
+ limits: [10,15,20,30,40,50,60,70,80,90],
154
162
  page: true,
155
163
  skin: 'line',
156
164
  // done: function (obj, first) {
@@ -174,9 +182,8 @@
174
182
 
175
183
  table.on('toolbar(sale_plan_follow_table)', function (obj) {
176
184
  if (obj.event === 'add') { // 监听添加操作
177
- console.log(parent.business_id);
178
185
  business_id = parent.business_id
179
- var content = miniPage.getHrefContent('/educode_sales/businesses/new_follow_record?id=' + parent.id);
186
+ var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + parent.id);
180
187
  var openWH = miniPage.getOpenWidthHeight();
181
188
  sale_plan_index = layer.open({
182
189
  title: '添加商机跟进记录',
@@ -201,9 +208,8 @@
201
208
  var data = obj.data;
202
209
  follow_up_id = obj.data.id;
203
210
  if (obj.event === 'delete') {
204
- console.log(data);
205
211
  layer.confirm('确定删除ID为' + data.id + "的跟进记录", function (index) {
206
- request.authDelete("educode_sales/follow_ups/" + data.id, {}, function() {
212
+ request.authDelete("missions/follow_ups/" + data.id, {}, function() {
207
213
  obj.del();
208
214
  layer.close(index);
209
215
  table.reload("businesses_table");
@@ -211,7 +217,7 @@
211
217
  })
212
218
  });
213
219
  } else if (obj.event === 'show') { // 监听添加操作
214
- var content = miniPage.getHrefContent('/educode_sales/businesses/show_follow_record?follow_up_id=' + data.id);
220
+ var content = miniPage.getHrefContent('/missions/businesses/show_follow_record?follow_up_id=' + data.id);
215
221
  var openWH = miniPage.getOpenWidthHeight();
216
222
  var index = layer.open({
217
223
  title: '查看商机跟进记录',
@@ -227,7 +233,7 @@
227
233
  layer.full(index);
228
234
  });
229
235
  } else if (obj.event === 'edit') { // 监听添加操作
230
- var content = miniPage.getHrefContent('/educode_sales/businesses/edit_follow_record?follow_up_id=' + data.id);
236
+ var content = miniPage.getHrefContent('/missions/businesses/edit_follow_record?follow_up_id=' + data.id);
231
237
  var openWH = miniPage.getOpenWidthHeight();
232
238
  sale_plan_edit_open = layer.open({
233
239
  title: '编辑商机跟进记录',
@@ -246,7 +252,7 @@
246
252
  layer.full(sale_plan_edit_open);
247
253
  });
248
254
  } else if (obj.event === 'add_keys') { // 监听添加操作
249
- content = miniPage.getHrefContent('/educode_sales/teachers/add_keys?follow_up_id=' + obj.data.id);
255
+ content = miniPage.getHrefContent('/missions/teachers/add_keys?follow_up_id=' + obj.data.id);
250
256
  openWH = miniPage.getOpenWidthHeight();
251
257
  is_latest = obj.data.is_latest
252
258
  keyindex = layer.open({
@@ -267,7 +273,7 @@
267
273
  layer.full(keyindex);
268
274
  });
269
275
  } else if (obj.event === 'edit_plan') {
270
- content = miniPage.getHrefContent('/educode_sales/businesses/edit_plan');
276
+ content = miniPage.getHrefContent('/missions/businesses/edit_plan');
271
277
  openWH = miniPage.getOpenWidthHeight();
272
278
  is_latest = obj.data.is_latest
273
279
  plan_index = layer.open({
@@ -293,7 +299,7 @@
293
299
  // 未完成计划
294
300
  table.render({
295
301
  elem: '#unfinish_table',
296
- url: '/educode_sales/businesses/' + parent.id + "/unfinish_plans",
302
+ url: '/missions/businesses/' + parent.id + "/unfinish_plans",
297
303
  toolbar: '#unfinish_table_tabar',
298
304
  defaultToolbar: [],
299
305
  cols: [
@@ -371,7 +377,7 @@
371
377
  */
372
378
  table.on('toolbar(unfinish_table)', function (obj) {
373
379
  if (obj.event === 'addWeekPlan') { // 监听添加操作
374
- var content = miniPage.getHrefContent('/educode_sales/plans/new_week?business_id=' + parent.id);
380
+ var content = miniPage.getHrefContent('/missions/plans/new_week?business_id=' + parent.id);
375
381
  var openWH = miniPage.getOpenWidthHeight();
376
382
  var index = layer.open({
377
383
  title: '添加周计划',
@@ -391,7 +397,7 @@
391
397
  layer.full(index);
392
398
  });
393
399
  } else if (obj.event === 'addMonthPlan') { // 监听添加操作
394
- var content = miniPage.getHrefContent('/educode_sales/plans/new_month?business_id=' + parent.id)
400
+ var content = miniPage.getHrefContent('/missions/plans/new_month?business_id=' + parent.id)
395
401
  var openWH = miniPage.getOpenWidthHeight();
396
402
  var index = layer.open({
397
403
  title: '添加月计划',
@@ -418,14 +424,14 @@
418
424
  plan_id = data.id;
419
425
  if (obj.event === 'delete') {
420
426
  layer.confirm('确定删除ID为' + data.id + "的计划", function (index) {
421
- request.authDelete("educode_sales/plans/" + data.id, {}, function() {
427
+ request.authDelete("missions/plans/" + data.id, {}, function() {
422
428
  obj.del();
423
429
  layer.close(index);
424
430
  })
425
431
 
426
432
  });
427
433
  } else if (obj.event === 'show') {
428
- content = miniPage.getHrefContent('/educode_sales/plans/show_week?id=' + data.id);
434
+ content = miniPage.getHrefContent('/missions/plans/show_week?id=' + data.id);
429
435
  openWH = miniPage.getOpenWidthHeight();
430
436
  index = layer.open({
431
437
  title: data.week ? '查看周计划' : '查看月计划',
@@ -442,7 +448,7 @@
442
448
  });
443
449
  return false;
444
450
  } else if (obj.event === 'edit') {
445
- content = miniPage.getHrefContent('/educode_sales/plans/edit_week?id=' + data.id);
451
+ content = miniPage.getHrefContent('/missions/plans/edit_week?id=' + data.id);
446
452
  openWH = miniPage.getOpenWidthHeight();
447
453
  sindex = layer.open({
448
454
  title: '编辑',
@@ -65,8 +65,14 @@
65
65
  <%= @follow_up.divide_rate %>%
66
66
  </div>
67
67
  </div>
68
+ <div class="ayui-form-item">
69
+ <label class="layui-form-label" style="width: 85px;">指定跟进人:</label>
70
+ <div class="layui-input-inline">
71
+ <%= @follow_up.assign_follow_ups.map{|d| d.staff.user.full_name}.join("、") %>
72
+ </div>
73
+ </div>
68
74
  <div class="layui-form-item layui-form-text">
69
- <label class="layui-form-label">自我小结:</label>
75
+ <label class="layui-form-label">商机说明:</label>
70
76
  <div class="layui-input-block" style="padding-right: 20px;">
71
77
  <pre><%= @follow_up.description %></pre>
72
78
  </div>
@@ -4,7 +4,7 @@
4
4
  var table = layui.table
5
5
  table.render({
6
6
  elem: '#keyTable',
7
- url: '/educode_sales/follow_ups/' + parent.follow_up_id + "/teachers",
7
+ url: '/missions/follow_ups/' + parent.follow_up_id + "/teachers",
8
8
  defaultToolbar: [],
9
9
  cols: [
10
10
  [