educode_sales 0.3.8 → 0.4.2

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 (67) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/educode_sales/indexlogo.png +0 -0
  3. data/app/assets/javascripts/educode_sales/extent/xm-select.js +8 -0
  4. data/app/controllers/educode_sales/businesses_controller.rb +14 -4
  5. data/app/controllers/educode_sales/follow_ups_controller.rb +9 -0
  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/operation_plans_controller.rb +2 -2
  9. data/app/controllers/educode_sales/operation_reports_controller.rb +2 -2
  10. data/app/controllers/educode_sales/places_controller.rb +1 -0
  11. data/app/controllers/educode_sales/plans_controller.rb +2 -2
  12. data/app/controllers/educode_sales/sale_reports_controller.rb +2 -2
  13. data/app/controllers/educode_sales/sale_trends_controller.rb +8 -6
  14. data/app/controllers/educode_sales/sales_controller.rb +1 -0
  15. data/app/controllers/educode_sales/teachers_controller.rb +24 -12
  16. data/app/models/educode_sales/assign_follow_up.rb +6 -0
  17. data/app/models/educode_sales/follow_up.rb +1 -0
  18. data/app/models/educode_sales/teacher.rb +1 -1
  19. data/app/models/educode_sales/teacher_follow.rb +1 -0
  20. data/app/views/educode_sales/activities/edit.html.erb +0 -1
  21. data/app/views/educode_sales/activities/index.html.erb +20 -1
  22. data/app/views/educode_sales/activities/show_teachers.html.erb +1 -1
  23. data/app/views/educode_sales/businesses/edit.html.erb +2 -2
  24. data/app/views/educode_sales/businesses/edit_follow_record.html.erb +43 -1
  25. data/app/views/educode_sales/businesses/index.html.erb +12 -5
  26. data/app/views/educode_sales/businesses/index.json.jbuilder +3 -0
  27. data/app/views/educode_sales/businesses/new_follow_record.html.erb +45 -13
  28. data/app/views/educode_sales/businesses/show_follow.html.erb +12 -5
  29. data/app/views/educode_sales/businesses/show_follow_record.html.erb +6 -0
  30. data/app/views/educode_sales/commons/edit.html.erb +0 -1
  31. data/app/views/educode_sales/commons/index.html.erb +1 -0
  32. data/app/views/educode_sales/home/sales_staff.json.jbuilder +9 -0
  33. data/app/views/educode_sales/operation_plans/_monthPlan.html.erb +2 -2
  34. data/app/views/educode_sales/operation_plans/_monthly.html.erb +3 -2
  35. data/app/views/educode_sales/operation_plans/_weekPlan.html.erb +2 -1
  36. data/app/views/educode_sales/operation_plans/_weekly.html.erb +4 -2
  37. data/app/views/educode_sales/operation_plans/edit_week.html.erb +1 -0
  38. data/app/views/educode_sales/operation_plans/new_month.html.erb +2 -0
  39. data/app/views/educode_sales/operation_reports/edit.html.erb +27 -1
  40. data/app/views/educode_sales/places/edit.html.erb +0 -2
  41. data/app/views/educode_sales/places/index.html.erb +1 -0
  42. data/app/views/educode_sales/places/index.json.jbuilder +3 -3
  43. data/app/views/educode_sales/places/new.html.erb +0 -1
  44. data/app/views/educode_sales/plans/_monthPlan.html.erb +2 -2
  45. data/app/views/educode_sales/plans/_monthly.html.erb +2 -1
  46. data/app/views/educode_sales/plans/_weekPlan.html.erb +2 -1
  47. data/app/views/educode_sales/plans/_weekly.html.erb +3 -1
  48. data/app/views/educode_sales/plans/new_month.html.erb +1 -0
  49. data/app/views/educode_sales/roles/edit.html.erb +0 -1
  50. data/app/views/educode_sales/roles/index.html.erb +1 -1
  51. data/app/views/educode_sales/sale_reports/edit.html.erb +26 -0
  52. data/app/views/educode_sales/sales/index.html.erb +1 -0
  53. data/app/views/educode_sales/sales/index.json.jbuilder +2 -2
  54. data/app/views/educode_sales/sales/operations.html.erb +1 -0
  55. data/app/views/educode_sales/sales/trends.html.erb +0 -4
  56. data/app/views/educode_sales/staffs/index.html.erb +1 -0
  57. data/app/views/educode_sales/teachers/add_courses.html.erb +0 -1
  58. data/app/views/educode_sales/teachers/import.html.erb +41 -0
  59. data/app/views/educode_sales/teachers/index.html.erb +21 -4
  60. data/app/views/educode_sales/teachers/index.json.jbuilder +2 -3
  61. data/app/views/educode_sales/teachers/new.html.erb +0 -1
  62. data/app/views/educode_sales/teachers/show_follow.json.jbuilder +3 -2
  63. data/app/views/layouts/educode_sales/login.html.erb +1 -1
  64. data/config/routes.rb +5 -0
  65. data/db/migrate/20211013060712_create_educode_sales_assign_follow_ups.rb +10 -0
  66. data/lib/educode_sales/version.rb +1 -1
  67. metadata +8 -2
@@ -55,13 +55,16 @@ module EducodeSales
55
55
  @teachers = @teachers.where("educode_sales_teachers.name like ?", "%#{params[:q][:name]}%")
56
56
  end
57
57
  if params[:q].present? && params[:q][:professional_title].present?
58
- @teachers = @teachers.where("educode_sales_teachers.professional_title like ?", "%#{params[:q][:professional_title]}%")
58
+ @teachers = @teachers.where("educode_sales_teachers.professional_title = ?", "#{params[:q][:professional_title]}")
59
59
  end
60
60
  if params[:q].present? && params[:q][:regist_at].present?
61
61
  @teachers = @teachers.where("educode_sales_teachers.regist_at like ?", "%#{params[:q][:regist_at]}%")
62
62
  end
63
63
  if params[:q].present? && params[:q][:attitude].present?
64
- @teachers = @teachers.where("educode_sales_teachers.attitude_id = ?", "#{params[:q][:attitude]}")
64
+ # @teachers = @teachers.where("educode_sales_teachers.attitude_id = ?", "#{params[:q][:attitude]}")
65
+ @teachers = @teachers.joins("
66
+ JOIN educode_sales_teacher_follows ON educode_sales_teachers.follow_up_id = educode_sales_teacher_follows.id
67
+ ").where("educode_sales_teacher_follows.attitude_id = ?", params[:q][:attitude])
65
68
  end
66
69
  if params[:q].present? && params[:q][:teacher_source].present?
67
70
  @teachers = @teachers.where("educode_sales_teachers.source_id = ?", "#{params[:q][:teacher_source]}")
@@ -82,16 +85,18 @@ module EducodeSales
82
85
  end
83
86
  if params[:q].present? && params[:q][:date].present?
84
87
  date = params[:q][:date].split(" - ")
85
- @teachers = @teachers.where("created_at > ? AND created_at < ?", date[0], date[1])
88
+ @teachers = @teachers.where("educode_sales_teachers.created_at > ? AND educode_sales_teachers.created_at < ?", date[0], date[1])
86
89
  end
87
90
 
88
- @teachers = @teachers.order("created_at desc").page(params[:page]).per(params[:limit])
91
+ @teachers = @teachers.order("educode_sales_teachers.created_at desc").page(params[:page]).per(params[:limit])
89
92
 
90
93
  end
91
94
  end
92
95
  end
93
96
 
94
-
97
+ def import
98
+ render layout: false
99
+ end
95
100
 
96
101
  def new
97
102
  render layout: false
@@ -109,17 +114,24 @@ module EducodeSales
109
114
  teacher.regist_at = Time.now
110
115
  end
111
116
 
112
- if params[:activity_id].present? && params[:user_id].present?
113
- @teacher_id = EducodeSales::Teacher.find_by(name: params[:name]).id
117
+ unless params[:activity_id].present?
118
+ return render json: {msg: '该教师已存在', success: false } if EducodeSales::Teacher.find_by(department_id: params[:department_id],name: params[:name])
119
+ end
114
120
 
121
+ if params[:activity_id].present?
122
+ if params[:user_id].present?
115
123
  # 把老师添加到活动列表,提取判断下老师列表是否存在
116
- find_teacher = Teacher.find_by(user_id: params[:user_id])
117
- if find_teacher
118
- teacher = find_teacher
124
+ find_teacher = Teacher.find_by(user_id: params[:user_id])
125
+ if find_teacher
126
+ teacher = find_teacher
127
+ end
128
+ else
129
+ _teacher = EducodeSales::Teacher.find_by(department_id: params[:department_id],name: params[:name])
130
+ teacher = _teacher if _teacher.present?
119
131
  end
132
+ return render json: {msg: '该教师已在活动中', success: false } if teacher && teacher.activity_teachers.find_by(activity_id: params[:activity_id]).present?
120
133
  end
121
134
  if params[:activity_id].present?
122
- return render json: {msg: '该教师已在活动中', success: false } if teacher.activity_teachers.find_by(activity_id: params[:activity_id]).present?
123
135
  teacher.activity_teachers.build(activity_id: params[:activity_id])
124
136
  end
125
137
 
@@ -268,7 +280,7 @@ module EducodeSales
268
280
  def course_list
269
281
  user = User.find_by(id: params[:user_id])
270
282
  if user
271
- @courses = Course.joins(:course_members).where(course_members: {user_id: user.id}).distinct("course_id").page(params[:page]).per(params[:limit])
283
+ @courses = Course.joins(:course_members).where(course_members: {user_id: user.id}).where("is_delete = 0 and role != 4 and excellent = 0 and is_hidden = 0").where("start_date is null or start_date <= '#{Date.today}'").distinct("course_id").page(params[:page]).per(params[:limit])
272
284
  else
273
285
  @courses = Course.none
274
286
  end
@@ -0,0 +1,6 @@
1
+ module EducodeSales
2
+ class AssignFollowUp < ApplicationRecord
3
+ belongs_to :staff
4
+ belongs_to :follow_up
5
+ end
6
+ end
@@ -5,6 +5,7 @@ module EducodeSales
5
5
  has_many :money_plans, dependent: :destroy
6
6
  has_many :key_person
7
7
  has_many :teachers, through: :key_person
8
+ has_many :assign_follow_ups, dependent: :destroy
8
9
  belongs_to :staff
9
10
  belongs_to :stage, class_name: 'Common'
10
11
  belongs_to :clazz, class_name: 'Common'
@@ -37,7 +37,7 @@ module EducodeSales
37
37
 
38
38
  def students_count
39
39
  if user_id.present?
40
- course_ids = CourseMember.where.not(role: "STUDENT").where(user_id: user_id).pluck(:course_id)
40
+ course_ids = Course.joins(:course_members).where(course_members: {user_id: user_id}).where("is_delete = 0 and role != 4 and excellent = 0 and is_hidden = 0").where("start_date is null or start_date <= '#{Date.today}'").distinct("course_id").pluck(:course_id)
41
41
  CourseMember.where(course_id: course_ids, role: "STUDENT").count
42
42
  else
43
43
  0
@@ -2,5 +2,6 @@ module EducodeSales
2
2
  class TeacherFollow < ApplicationRecord
3
3
  belongs_to :teacher, counter_cache: true
4
4
  belongs_to :staff
5
+ belongs_to :attitude, class_name: 'Common'
5
6
  end
6
7
  end
@@ -67,7 +67,6 @@
67
67
 
68
68
  //监听提交
69
69
  form.on('submit(data-reset-btn)', function (data) {
70
- console.log(data.field);
71
70
  request.authPut("missions/activities/" + <%= @activity.id %>, data.field, function (res) {
72
71
  if (res.success === false) {
73
72
  layer.alert(res.msg)
@@ -2,7 +2,8 @@
2
2
  <div class="layui-btn-container">
3
3
  <span class="table-label">活动列表</span>
4
4
  <% if can? :create, EducodeSales::Activity %>
5
- <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add"> 添加活动</button>
5
+ <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="import">导入数据</button>
6
+ <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add"> 添加活动</button>
6
7
  <% end %>
7
8
  </div>
8
9
  </script>
@@ -84,6 +85,7 @@
84
85
  ]
85
86
  ],
86
87
  limit: 20,
88
+ limits: [10,15,20,30,40,50,60,70,80,90],
87
89
  page: true
88
90
  });
89
91
 
@@ -119,6 +121,23 @@
119
121
  layer.full(index);
120
122
  });
121
123
  }
124
+ else if (obj.event === 'import') { //
125
+ var content = miniPage.getHrefContent('/missions/teachers/import');
126
+ var openWH = miniPage.getOpenWidthHeight();
127
+ import_index = layer.open({
128
+ title: '导入数据',
129
+ type: 1,
130
+ shade: 0.2,
131
+ shadeClose: true,
132
+ area: ['200px', '100px'],
133
+ offset: 'auto',
134
+ closeBtn: 0,
135
+ content: content,
136
+ });
137
+ $(window).on("resize", function () {
138
+ layer.full(index);
139
+ });
140
+ }
122
141
  });
123
142
 
124
143
  table.on('tool(activities_table)', function (obj) {
@@ -15,7 +15,7 @@
15
15
  {{# if (d.login) { }}
16
16
  <a href="<%= base_url%>/users/{{d.login}}" class="layui-table-link" target="_blank">{{ d.name }}</a>
17
17
  {{# } else {}}
18
- <a href="<%= base_url%>/users/{{d.login}}" class="">{{ d.name }}</a>
18
+ <a href="javascript:;" class="">{{ d.name }}</a>
19
19
  {{# }}}
20
20
  </script>
21
21
  <script type="text/html" id="courses">
@@ -2,9 +2,9 @@
2
2
  <div class="layui-form layuimini-form">
3
3
  <div class="layui-form-item" style="padding: 25px">
4
4
  <div class="layui-inline">
5
- <label class="layui-form-label required">名称</label>
5
+ <label class="layui-form-label required">商机名称</label>
6
6
  <div class="layui-input-block">
7
- <input type="text" name="name" autocomplete="off" lay-verify="required" class="layui-input" value="<%= @business.name %>">
7
+ <input type="text" name="name" autocomplete="off" lay-verify="required" class="layui-input" value="<%= @business.name %>" style="width: 300px;">
8
8
  </div>
9
9
  </div>
10
10
  <div class="layui-inline">
@@ -1,3 +1,4 @@
1
+ <%= Gon::Base.render_data %>
1
2
  <h1 class="m-t-20 text-center"><%= @follow_up.business.name %></h1>
2
3
  <div class="layui-form layuimini-form">
3
4
  <div class="layui-form-item" style="padding: 25px">
@@ -74,6 +75,12 @@
74
75
  </div>
75
76
  <span style="margin-top: 10px; float:left;">%</span>
76
77
  </div>
78
+ <div class="layui-form-item">
79
+ <label class="layui-form-label">指定跟进人</label>
80
+ <div class="layui-input-inline">
81
+ <div id="edit_assign_follow" style="width: 512px;"></div>
82
+ </div>
83
+ </div>
77
84
  <div class="layui-form-item layui-form-text">
78
85
  <label class="layui-form-label required">商机说明</label>
79
86
  <div class="layui-input-block">
@@ -107,10 +114,11 @@
107
114
  </div>
108
115
 
109
116
  <script>
110
- layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate'], function () {
117
+ layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate', 'xmSelect'], function () {
111
118
  var form = layui.form,
112
119
  layer = layui.layer,
113
120
  table = layui.table,
121
+ xmSelect = layui.xmSelect,
114
122
  laytpl = layui.laytpl,
115
123
  request = layui.request,
116
124
  laydate = layui.laydate,
@@ -124,8 +132,42 @@
124
132
  elem: '#reception_at_edit'
125
133
  });
126
134
 
135
+ var sales_list = xmSelect.render({
136
+ el: '#edit_assign_follow',
137
+ remoteSearch: true,
138
+ clickClose: true,
139
+ delay: 1000,
140
+ paging: true,
141
+ pageRemote: true,
142
+ filterable: true,
143
+ remoteMethod: function (val, cb, show, pageIndex) {
144
+ $.ajax( '/missions/sales_staff', {
145
+ method: 'get',
146
+ data: {
147
+ q: val,
148
+ page: pageIndex
149
+ },
150
+ dataType: 'json',
151
+ success: function (res) {
152
+ var data = res.data;
153
+ if (res.code == 0) {
154
+ cb(res.data, res.count);
155
+ } else {
156
+ layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
157
+ }
158
+ }
159
+ })
160
+ }
161
+ })
162
+ sales_list.setValue(gon.sales)
163
+
127
164
  form.render();
128
165
  form.on('submit(update_follow_up)', function (data) {
166
+ var assign_follow = [];
167
+ sales_list.getValue().forEach(function(d) {
168
+ assign_follow.push(d.value);
169
+ })
170
+ data.field.assign_follow_up = assign_follow;
129
171
  request.authPut("missions/follow_ups/<%= @follow_up.id%>", data.field, function (res) {
130
172
  if (res.success == false) {
131
173
  layer.alert(res.msg)
@@ -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">搜索
@@ -72,7 +72,14 @@
72
72
  </script>
73
73
  <script type="text/html" id="currentTableBar">
74
74
  <% if can? :add_follow, EducodeSales::Business %>
75
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
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
+ {{# }}}
81
+ <% end %>
82
+
76
83
  <% end %>
77
84
  <% if @more %>
78
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>
@@ -201,6 +208,7 @@
201
208
  ],
202
209
 
203
210
  limit: 20,
211
+ limits: [10,15,20,30,40,50,60,70,80,90],
204
212
  page: true,
205
213
  skin: 'line',
206
214
  done: function (res) {
@@ -229,7 +237,7 @@
229
237
  edit(id);
230
238
  break;
231
239
  case 'delete':
232
- deleteBusiness(id, elem.data['name']);
240
+ deleteBusiness(id, elem.data('name'));
233
241
  break;
234
242
  }
235
243
  }
@@ -292,7 +300,7 @@
292
300
  }
293
301
 
294
302
  function deleteBusiness(id, name) {
295
- layer.confirm('确定删除' + name, function (index) {
303
+ layer.confirm('确定删除' + name, function (index) {
296
304
  request.delete('missions/businesses/' + id, {}, function (res) {
297
305
  layer.close(index);
298
306
  table.reload("businesses_table")
@@ -408,7 +416,6 @@
408
416
  })
409
417
  });
410
418
  }else if (obj.event === 'add_follow') { // 监听添加操作
411
- console.log(parent.business_id);
412
419
  business_id = parent.business_id
413
420
  var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + parent.id);
414
421
  var openWH = miniPage.getOpenWidthHeight();
@@ -17,6 +17,9 @@ json.data do
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
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
20
23
  end
21
24
  end
22
25
  json.code 0
@@ -1,3 +1,4 @@
1
+ <%= Gon::Base.render_data %>
1
2
  <h1 class="m-t-20 text-center"><%= @business.name %></h1>
2
3
  <div class="layui-form layuimini-form">
3
4
  <div class="layui-form-item" style="padding: 25px">
@@ -77,6 +78,12 @@
77
78
  <input name="divide_rate" class="layui-input" value="<%= @last_follow_up&.divide_rate%>">
78
79
  </div>
79
80
  <span style="margin-top: 10px; float:left;">%</span>
81
+ </div>
82
+ <div class="layui-form-item">
83
+ <label class="layui-form-label">指定跟进人</label>
84
+ <div class="layui-input-inline">
85
+ <div id="assign_follow" style="width: 512px;"></div>
86
+ </div>
80
87
  </div>
81
88
  <div class="layui-form-item layui-form-text">
82
89
  <label class="layui-form-label required">商机说明</label>
@@ -110,13 +117,14 @@
110
117
  </div>
111
118
 
112
119
  <script>
113
- layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate'], function () {
120
+ layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate', 'xmSelect'], function () {
114
121
  var form = layui.form,
115
122
  layer = layui.layer,
116
123
  table = layui.table,
117
124
  laytpl = layui.laytpl,
118
125
  request = layui.request,
119
126
  laydate = layui.laydate,
127
+ xmSelect = layui.xmSelect,
120
128
  $ = layui.$;
121
129
 
122
130
  laydate.render({
@@ -126,22 +134,46 @@
126
134
  laydate.render({
127
135
  elem: '#reception_at_add'
128
136
  });
137
+ var sales_list = xmSelect.render({
138
+ el: '#assign_follow',
139
+ remoteSearch: true,
140
+ clickClose: true,
141
+ delay: 1000,
142
+ paging: true,
143
+ pageRemote: true,
144
+ filterable: true,
145
+ remoteMethod: function (val, cb, show, pageIndex) {
146
+ $.ajax( '/missions/sales_staff', {
147
+ method: 'get',
148
+ data: {
149
+ q: val,
150
+ page: pageIndex
151
+ },
152
+ dataType: 'json',
153
+ success: function (res) {
154
+ var data = res.data;
155
+ if (res.code == 0) {
156
+ cb(res.data, res.count);
157
+ } else {
158
+ layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
159
+ }
129
160
 
161
+ }
162
+ })
163
+ }
164
+ })
165
+
166
+ sales_list.setValue(gon.sales);
130
167
  form.render();
131
168
 
132
169
  form.on('submit(add_follow_up)', function (data) {
133
- console.log(data);
134
- data.field.business_id = "<%= @business.id %>";
135
- console.log(data.field.business_id);
136
- // request.authPut("missions/businesses/" + data.field.business_id +"/updateMoney/", {
137
- // return_money: 0
138
- // }, function (res) {
139
- // if (res.success == false) {
140
- // layer.alert(res.msg)
141
- // } else {
142
- // }
143
- // })
144
- request.authPost("missions/follow_ups", data.field, function (res) {
170
+ var assign_follow = [];
171
+ sales_list.getValue().forEach(function(d) {
172
+ assign_follow.push(d.value);
173
+ })
174
+ data.field.assign_follow_up = assign_follow;
175
+ data.field.business_id = "<%= @business.id %>";
176
+ request.authPost("missions/follow_ups", data.field, function (res) {
145
177
  if (res.success == false) {
146
178
  layer.alert(res.msg)
147
179
  } 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>
@@ -142,7 +150,7 @@
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'
@@ -150,6 +158,7 @@
150
158
  ]
151
159
  ],
152
160
  limit: 20,
161
+ limits: [10,15,20,30,40,50,60,70,80,90],
153
162
  page: true,
154
163
  skin: 'line',
155
164
  // done: function (obj, first) {
@@ -173,7 +182,6 @@
173
182
 
174
183
  table.on('toolbar(sale_plan_follow_table)', function (obj) {
175
184
  if (obj.event === 'add') { // 监听添加操作
176
- console.log(parent.business_id);
177
185
  business_id = parent.business_id
178
186
  var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + parent.id);
179
187
  var openWH = miniPage.getOpenWidthHeight();
@@ -200,7 +208,6 @@
200
208
  var data = obj.data;
201
209
  follow_up_id = obj.data.id;
202
210
  if (obj.event === 'delete') {
203
- console.log(data);
204
211
  layer.confirm('确定删除ID为' + data.id + "的跟进记录", function (index) {
205
212
  request.authDelete("missions/follow_ups/" + data.id, {}, function() {
206
213
  obj.del();
@@ -65,6 +65,12 @@
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
75
  <label class="layui-form-label">商机说明:</label>
70
76
  <div class="layui-input-block" style="padding-right: 20px;">
@@ -50,7 +50,6 @@
50
50
  form.on('submit(saveBtn)', function(data) {
51
51
 
52
52
  request.authPost("missions/commons", data.field, function(res) {
53
- console.log(res.success == false)
54
53
  if (res.success == false) {
55
54
  layer.alert(res.msg)
56
55
  } else {
@@ -50,6 +50,7 @@
50
50
  ]
51
51
  ],
52
52
  limit: 20,
53
+ limits: [10,15,20,30,40,50,60,70,80,90],
53
54
  page: true,
54
55
  skin: 'line'
55
56
  });
@@ -0,0 +1,9 @@
1
+ json.data do
2
+ json.array! @staffs do |d|
3
+ json.value d.id
4
+ json.name d.user.full_name
5
+ end
6
+ end
7
+ json.count (@staffs.total_count/10 + 1)
8
+ json.code 0
9
+ json.msg "success"
@@ -129,7 +129,7 @@
129
129
  },
130
130
  {
131
131
  title: '操作',
132
- minWidth: 300,
132
+ minWidth: 200,
133
133
  toolbar: '#currentTableBar',
134
134
  align: "center",
135
135
  fixed: 'right'
@@ -138,6 +138,7 @@
138
138
  ],
139
139
 
140
140
  limit: 20,
141
+ limits: [10,15,20,30,40,50,60,70,80,90],
141
142
  page: true,
142
143
  skin: 'line'
143
144
  });
@@ -179,7 +180,6 @@
179
180
  */
180
181
  table.on('toolbar(currentTableFilter3)', function (obj) {
181
182
  if (obj.event === 'add') { // 监听添加操作
182
- console.log("a");
183
183
  var content = miniPage.getHrefContent('/missions/operation_plans/new_month');
184
184
  var openWH = miniPage.getOpenWidthHeight();
185
185
  monthPlanIndex = layer.open({
@@ -132,7 +132,7 @@
132
132
  },
133
133
  {
134
134
  title: '操作',
135
- minWidth: 350,
135
+ minWidth: 220,
136
136
  toolbar: '#monthlyTableBar',
137
137
  align: "center",
138
138
  fixed: 'right'
@@ -166,6 +166,7 @@
166
166
  },
167
167
 
168
168
  limit: 20,
169
+ limits: [10,15,20,30,40,50,60,70,80,90],
169
170
  page: true
170
171
  });
171
172
 
@@ -240,7 +241,7 @@
240
241
 
241
242
  var content = miniPage.getHrefContent('/missions/operation_reports/' + data.id + '/edit');
242
243
  var openWH = miniPage.getOpenWidthHeight();
243
-
244
+ from_edit_monthly = true
244
245
  MonthlyIndex = layer.open({
245
246
  title: '编辑',
246
247
  type: 1,
@@ -140,7 +140,7 @@
140
140
  },
141
141
  {
142
142
  title: '操作',
143
- minWidth: 280,
143
+ minWidth: 200,
144
144
  toolbar: '#week_plan_currentTableBar',
145
145
  align: "center",
146
146
  fixed: 'right'
@@ -149,6 +149,7 @@
149
149
  ],
150
150
 
151
151
  limit: 20,
152
+ limits: [10,15,20,30,40,50,60,70,80,90],
152
153
  page: true,
153
154
  skin: 'line'
154
155
  });
@@ -133,7 +133,7 @@
133
133
  },
134
134
  {
135
135
  title: '操作',
136
- width: 300,
136
+ minWidth: 220,
137
137
  toolbar: '#currentWeekTableBar',
138
138
  align: "center",
139
139
  fixed: 'right'
@@ -167,6 +167,7 @@
167
167
  },
168
168
 
169
169
  limit: 20,
170
+ limits: [10,15,20,30,40,50,60,70,80,90],
170
171
  page: true,
171
172
  });
172
173
 
@@ -243,7 +244,8 @@
243
244
  if (obj.event === 'edit') {
244
245
  var content = miniPage.getHrefContent('/missions/operation_reports/' + data.id + '/edit')
245
246
  var openWH = miniPage.getOpenWidthHeight();
246
- WeeklyIndex = layer.open({
247
+ from_edit_monthly = false
248
+ WeeklyIndex = layer.open({
247
249
  title: '编辑周报',
248
250
  type: 1,
249
251
  shade: 0.2,
@@ -70,6 +70,7 @@
70
70
  } else {
71
71
  layer.close(parent.index10)
72
72
  layer.close(parent.editWeek_index)
73
+ layer.close(parent.edit_week_index)
73
74
  table.reload('weekPlanTable1')
74
75
  table.reload('newWeeklyTable')
75
76
  table.reload('unfinish_table')
@@ -73,8 +73,10 @@
73
73
  layer.close(parent.new_monthly_index)
74
74
  layer.close(parent.monthPlanIndex)
75
75
  layer.close(parent.teacherindex2)
76
+ layer.close(parent.sindex)
76
77
  table.reload('monthPlanTable')
77
78
  table.reload("newMonthlyTable")
79
+ table.reload("newWeeklyTable")
78
80
  }
79
81
  })
80
82
  return false;