educode_sales 0.3.6 → 0.4.0

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 (71) 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/assets/stylesheets/educode_sales/public.css +2 -1
  5. data/app/controllers/educode_sales/businesses_controller.rb +33 -11
  6. data/app/controllers/educode_sales/follow_ups_controller.rb +10 -1
  7. data/app/controllers/educode_sales/home_controller.rb +10 -1
  8. data/app/controllers/educode_sales/import_teachers_controller.rb +68 -0
  9. data/app/controllers/educode_sales/key_person_controller.rb +1 -1
  10. data/app/controllers/educode_sales/places_controller.rb +1 -0
  11. data/app/controllers/educode_sales/plans_controller.rb +1 -1
  12. data/app/controllers/educode_sales/sale_trends_controller.rb +8 -6
  13. data/app/controllers/educode_sales/sales_controller.rb +1 -0
  14. data/app/controllers/educode_sales/teachers_controller.rb +35 -11
  15. data/app/models/educode_sales/assign_follow_up.rb +6 -0
  16. data/app/models/educode_sales/follow_up.rb +1 -0
  17. data/app/models/educode_sales/key_person.rb +1 -1
  18. data/app/models/educode_sales/teacher_follow.rb +1 -0
  19. data/app/views/educode_sales/activities/edit.html.erb +0 -1
  20. data/app/views/educode_sales/activities/index.html.erb +32 -11
  21. data/app/views/educode_sales/activities/show_teachers.html.erb +1 -1
  22. data/app/views/educode_sales/businesses/edit.html.erb +15 -4
  23. data/app/views/educode_sales/businesses/edit_follow_record.html.erb +52 -4
  24. data/app/views/educode_sales/businesses/index.html.erb +160 -14
  25. data/app/views/educode_sales/businesses/index.json.jbuilder +4 -0
  26. data/app/views/educode_sales/businesses/new.html.erb +11 -1
  27. data/app/views/educode_sales/businesses/new_follow_record.html.erb +53 -15
  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/follow_ups/teachers.json.jbuilder +3 -2
  33. data/app/views/educode_sales/home/sales_staff.json.jbuilder +9 -0
  34. data/app/views/educode_sales/operation_plans/_monthPlan.html.erb +2 -2
  35. data/app/views/educode_sales/operation_plans/_monthly.html.erb +3 -2
  36. data/app/views/educode_sales/operation_plans/_weekPlan.html.erb +2 -1
  37. data/app/views/educode_sales/operation_plans/_weekly.html.erb +4 -2
  38. data/app/views/educode_sales/operation_plans/edit_week.html.erb +1 -0
  39. data/app/views/educode_sales/operation_plans/new_month.html.erb +2 -0
  40. data/app/views/educode_sales/operation_reports/edit.html.erb +27 -1
  41. data/app/views/educode_sales/places/edit.html.erb +0 -2
  42. data/app/views/educode_sales/places/index.html.erb +1 -0
  43. data/app/views/educode_sales/places/index.json.jbuilder +3 -3
  44. data/app/views/educode_sales/places/new.html.erb +0 -1
  45. data/app/views/educode_sales/plans/_monthPlan.html.erb +2 -2
  46. data/app/views/educode_sales/plans/_monthly.html.erb +2 -1
  47. data/app/views/educode_sales/plans/_weekPlan.html.erb +2 -1
  48. data/app/views/educode_sales/plans/_weekly.html.erb +3 -1
  49. data/app/views/educode_sales/plans/new_month.html.erb +3 -2
  50. data/app/views/educode_sales/roles/edit.html.erb +0 -1
  51. data/app/views/educode_sales/roles/index.html.erb +1 -1
  52. data/app/views/educode_sales/sale_reports/edit.html.erb +26 -0
  53. data/app/views/educode_sales/sales/index.html.erb +1 -0
  54. data/app/views/educode_sales/sales/index.json.jbuilder +2 -2
  55. data/app/views/educode_sales/sales/operations.html.erb +1 -0
  56. data/app/views/educode_sales/sales/trends.html.erb +0 -4
  57. data/app/views/educode_sales/staffs/index.html.erb +1 -0
  58. data/app/views/educode_sales/teachers/add_courses.html.erb +0 -1
  59. data/app/views/educode_sales/teachers/add_keys.html.erb +53 -8
  60. data/app/views/educode_sales/teachers/edit.html.erb +4 -2
  61. data/app/views/educode_sales/teachers/import.html.erb +41 -0
  62. data/app/views/educode_sales/teachers/index.html.erb +140 -27
  63. data/app/views/educode_sales/teachers/index.json.jbuilder +2 -1
  64. data/app/views/educode_sales/teachers/new.html.erb +1 -1
  65. data/app/views/layouts/educode_sales/login.html.erb +1 -1
  66. data/config/routes.rb +5 -0
  67. data/db/migrate/20211009031109_add_tel_key_peoples.rb +5 -0
  68. data/db/migrate/20211009063423_add_source_businesses.rb +5 -0
  69. data/db/migrate/20211013060712_create_educode_sales_assign_follow_ups.rb +10 -0
  70. data/lib/educode_sales/version.rb +1 -1
  71. metadata +10 -2
@@ -177,7 +177,6 @@
177
177
  }
178
178
  })
179
179
  $("#" + el).blur(function () {
180
- console.log(this.value)
181
180
  if (this.value == '') {
182
181
  layer.msg("不能为空")
183
182
  } else {
@@ -185,13 +184,11 @@
185
184
  data[el] = this.value;
186
185
  var self = this;
187
186
  data['year'] = year;
188
- console.log(data, $("#years").value, year)
189
187
  request.post( '/missions/sales/sale_trends',
190
188
  data,
191
189
  function(res) {
192
190
  $("#" + el + "_field").addClass("layui-hide");
193
191
  $("#" + el + "_value").removeClass("layui-hide");
194
- console.log(self.value)
195
192
  $("#" + el + "_value")[0].innerText = self.value + "万";
196
193
  }
197
194
  )
@@ -200,7 +197,6 @@
200
197
  }
201
198
 
202
199
  form.on('select(year)', function(data){
203
- console.log(data, )
204
200
  year = data.value
205
201
  window.location.href = "/missions/sales/trends?year=" + data.value
206
202
  })
@@ -73,6 +73,7 @@
73
73
  ]
74
74
  ],
75
75
  limit: 20,
76
+ limits: [10,15,20,30,40,50,60,70,80,90],
76
77
  page: true,
77
78
  skin: 'line'
78
79
  });
@@ -48,7 +48,6 @@
48
48
 
49
49
  //监听提交
50
50
  form.on('submit(add_course)', function (data) {
51
- console.log(data.field)
52
51
  request.authPost('missions/teachers/'+parent.teacher_id +'/create_course', data.field, function (res) {
53
52
  if (res.success == false) {
54
53
  layer.alert(res.msg)
@@ -4,21 +4,28 @@
4
4
  <fieldset class="table-search-fieldset">
5
5
  <legend>添加关键人</legend>
6
6
  <div class="layui-form-item">
7
+ <div class="layui-input-inline" style="width: 610px;">
7
8
  <label class="layui-form-label required">姓名</label>
8
9
  <div class="layui-input-block">
9
10
  <div class="" id="teacher"></div>
10
11
  </div>
12
+ </div>
13
+ <div class="layui-input-inline" style="width: 610px;" id="professional_title_div">
14
+ <p style="padding-top: 6px">关键人未在头歌主站注册时,请先将关键人添加到教师运营列表。
15
+ <a style="color: #0000FF" href="javascript:void(0);" id="new_teacher1" >添加老师</a>
16
+ </p>
17
+ </div>
11
18
  </div>
12
19
  <div class="layui-form-item">
13
20
  <div class="layui-input-inline" style="width: 300px;">
14
- <label class="layui-form-label required">职务</label>
21
+ <label class="layui-form-label ">职务</label>
15
22
  <div class="layui-input-block">
16
- <input type="text" name="job" autocomplete="off" lay-verify="required" lay-reqtext="职务不能为空"
23
+ <input type="text" name="job" autocomplete="off"
17
24
  placeholder="请输入职务" class="layui-input" id="add_job" value="<%= @person&.job %>">
18
25
  </div>
19
26
  </div>
20
27
  <div class="layui-input-inline" style="width: 300px;" id="professional_title_div">
21
- <label class="layui-form-label required">职称</label>
28
+ <label class="layui-form-label ">职称</label>
22
29
  <div class="layui-input-block">
23
30
  <%= select_tag "professional_title", options_for_select(['教授', '研究员', '副教授', '副研究员', '讲师', '助理研究员', '助理教授'], @person&.professional_title), class: 'required' %>
24
31
  </div>
@@ -32,18 +39,27 @@
32
39
  </div>
33
40
  </div>
34
41
  <div class="layui-input-inline" style="width: 300px;">
35
- <label class="layui-form-label required">态度</label>
42
+ <label class="layui-form-label ">态度</label>
36
43
  <div class="layui-input-block">
37
- <%= select_tag "attitude_id", options_for_select(@attitudes, @person&.attitude_id), {"lay-verify": "required", include_blank: true} %>
44
+ <%= select_tag "attitude_id", options_for_select(@attitudes, @person&.attitude_id), {include_blank: true} %>
38
45
  </div>
39
46
  </div>
40
47
  </div>
41
- <div class="llayui-form-item">
48
+ <div class="layui-form-item">
49
+ <div class="layui-input-inline" style="width: 300px;">
42
50
  <label class="layui-form-label">生日</label>
43
51
  <div class="layui-input-block" style="width: 190px;">
44
52
  <input type="text" class="layui-input" name="birth_date" autocomplete="off" value="<%= @person&.birth_date %>"
45
53
  id="birth" placeholder="请选择生日">
46
54
  </div>
55
+ </div>
56
+ <div class="layui-input-inline" style="width: 300px;">
57
+ <label class="layui-form-label ">联系方式</label>
58
+ <div class="layui-input-block">
59
+ <input type="text" class="layui-input" name="tel" autocomplete="off" value=""
60
+ id="tel" placeholder="请输入联系方式">
61
+ </div>
62
+ </div>
47
63
  </div>
48
64
  <div class="layui-form-item layui-form-text m-t-20">
49
65
  <label class="layui-form-label">其它信息</label>
@@ -70,8 +86,10 @@
70
86
  <select name="attitude_id" lay-filter="select_attitude_id">
71
87
  {{# layui.each(gon.attitudes, function(i, data) { }}
72
88
  {{# if (data[1] == d.attitude_id) { }}
89
+ <option value=""></option>
73
90
  <option value="{{data[1]}}" selected="{{data[0]}}">{{data[0]}}</option>
74
91
  {{# } else { }}
92
+ <option value=""></option>
75
93
  <option value="{{data[1]}}">{{data[0]}}</option>
76
94
  {{# }}}
77
95
 
@@ -113,7 +131,8 @@
113
131
  table = layui.table,
114
132
  laytpl = layui.laytpl,
115
133
  laydate = layui.laydate,
116
- request = layui.request,
134
+ miniPage = layui.miniPage,
135
+ request = layui.request,
117
136
  selectInput = layui.selectInput,
118
137
  $ = layui.$;
119
138
 
@@ -122,6 +141,25 @@
122
141
  elem: '#birth'
123
142
  })
124
143
 
144
+ $(document).on('click','#new_teacher1',function(){
145
+ var content = miniPage.getHrefContent('/missions/teachers/new');
146
+ var openWH = miniPage.getOpenWidthHeight();
147
+ sindex = layer.open({
148
+ id:"a",
149
+ title: '添加老师',
150
+ type: 1,
151
+ shade: 0.2,
152
+ maxmin: true,
153
+ shadeClose: true,
154
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
155
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
156
+ content: content,
157
+ });
158
+ $(window).on("resize", function () {
159
+ layer.full(sindex);
160
+ });
161
+ });
162
+
125
163
  var user_input = selectInput.render({
126
164
  elem: '#teacher',
127
165
  name: 'name', // 渲染的input的name值
@@ -181,7 +219,8 @@
181
219
  'birth_date': '',
182
220
  'sex': '',
183
221
  'attitude_id': '',
184
- 'remark': ''
222
+ 'remark': '',
223
+ 'tel': ''
185
224
  })
186
225
  }
187
226
  })
@@ -227,6 +266,12 @@
227
266
  templet:function (d) {
228
267
  return '<input type="text" class="layui-input layui-input-date" value="'+ (d.birth_date || '') +'" autocomplete="off">'
229
268
  }
269
+ }, {
270
+ field: 'tel',
271
+ width: 200,
272
+ title: '联系方式',
273
+ edit: true
274
+ }, {
230
275
  }, {
231
276
  field: 'remark',
232
277
  width: 200,
@@ -127,13 +127,15 @@
127
127
  }
128
128
  data.field.department_id = department_id;
129
129
  data.field.user_id = user_id;
130
- request.authPut("missions/teachers/"+ parent.teacher_id, data.field, function (res) {
130
+ request.authPut("missions/teachers/"+ parent.id, data.field, function (res) {
131
131
  if (res.success == false) {
132
132
  layer.alert(res.msg)
133
133
  } else {
134
134
  layer.close(parent.sindex);
135
135
  parent.layer.close(parent.layer.getFrameIndex(window.name))
136
- parent.table.reload('teachers_table')
136
+ parent.table.reload('teachers_table', {done: function() {
137
+ parent.drowpdwonRender()
138
+ }});
137
139
  }
138
140
  })
139
141
 
@@ -0,0 +1,41 @@
1
+ <div style="padding-left: 50px">
2
+ <button type="button" class="layui-btn" id="test3"><i class="layui-icon"></i>选择文件</button>
3
+ </div>
4
+ <script>
5
+ layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'selectInput'], function () {
6
+ var form = layui.form,
7
+ layer = layui.layer,
8
+ table = layui.table,
9
+ laytpl = layui.laytpl,
10
+ upload = layui.upload,
11
+ request = layui.request,
12
+ $ = layui.$;
13
+ selectInput = layui.selectInput;
14
+
15
+ form.render();
16
+
17
+ //指定允许上传的文件类型
18
+ upload.render({
19
+ elem: '#test3'
20
+ ,url: '/missions/import_teachers' //此处配置你自己的上传接口即可
21
+ ,accept: 'file', //普通文件
22
+ headers: {
23
+ 'X-CSRF-Token': $('meta[name=csrf-token]').attr('content')
24
+ }
25
+ ,before: function(obj){ //obj参数包含的信息,跟 choose回调完全一致,可参见上文。
26
+ layer.load(); //上传loading
27
+ }
28
+ ,done: function(res){
29
+ layer.msg('导入成功');
30
+ table.reload('teachers_table');
31
+ table.reload('activities_table');
32
+ layer.close(parent.import_index)
33
+ layer.closeAll('loading'); //关闭loading
34
+ }
35
+ ,error: function(index, upload){
36
+ layer.closeAll('loading'); //关闭loading
37
+ layer.alert('导入失败,请检查文件格式')
38
+ }
39
+ });
40
+ });
41
+ </script>
@@ -65,26 +65,33 @@
65
65
  <div class="layui-btn-container">
66
66
  <span class="table-label">教师列表</span>
67
67
  <% if can? :create, EducodeSales::Teacher %>
68
- <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add">添加</button>
69
- <% end %>
68
+ <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="import">导入数据</button>
69
+ <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add">添加</button>
70
+ <% end %>
70
71
  <!-- <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="search_new"> 搜索添加 -->
71
72
  </button>
72
73
  </div>
73
74
  </script>
74
- <div class="edit-table">
75
+ <div class="">
75
76
  <table class="layui-hide" id="teachers_table" style="min-height: 300px;" lay-filter="teachers_table"></table>
76
77
  </div>
77
78
  <script type="text/html" id="currentTableBar">
78
- <% if can? :create, EducodeSales::OperationPlan %>
79
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="addWeek">添加周计划</a>
80
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="addMonth">添加月计划</a>
79
+ <%# if can? :create, EducodeSales::OperationPlan %>
80
+ <!-- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="addWeek">添加周计划</a>-->
81
+ <!-- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="addMonth">添加月计划</a>-->
82
+ <%# end %>
83
+ <%# if can? :update, EducodeSales::Teacher %>
84
+ <!-- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>-->
85
+ <%# end %>
86
+ <%# if can? :destroy, EducodeSales::Teacher %>
87
+ <!-- <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>-->
88
+ <%# end %>
89
+ <% if can? :add_follow, EducodeSales::Teacher %>
90
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
81
91
  <% end %>
82
- <% if can? :update, EducodeSales::Teacher %>
83
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
92
+ <% if @more %>
93
+ <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>
84
94
  <% end %>
85
- <% if can? :destroy, EducodeSales::Teacher %>
86
- <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
87
- <% end %>
88
95
  </script>
89
96
  <script type="text/html" id="name">
90
97
  {{# if (d.login) { }}
@@ -112,6 +119,7 @@
112
119
  var $ = layui.jquery,
113
120
  form = layui.form,
114
121
  request = layui.request,
122
+ dropdown = layui.dropdown,
115
123
  miniPage = layui.miniPage,
116
124
  laydate = layui.laydate;
117
125
 
@@ -219,7 +227,7 @@
219
227
  },
220
228
  {
221
229
  title: '操作',
222
- minWidth: 300,
230
+ minWidth: 170,
223
231
  toolbar: '#currentTableBar',
224
232
  align: "center",
225
233
  fixed: 'right'
@@ -228,9 +236,102 @@
228
236
  ],
229
237
 
230
238
  limit: 20,
239
+ limits: [10,15,20,30,40,50,60,70,80,90],
231
240
  page: true,
241
+ done: function (res) {
242
+ drowpdwonRender()
243
+ }
232
244
  });
245
+ var dropmenu = gon.menus;
246
+
247
+ drowpdwonRender = function() {
248
+ dropdown.render({
249
+ elem: '.more-btn',
250
+ data: dropmenu,
251
+ click: function(data, othis){
252
+ var elem = $(this.elem);
253
+ id = elem.data('id');
254
+ switch (data.event) {
255
+ case 'week':
256
+ week(id);
257
+ break;
258
+ case 'month':
259
+ month(id);
260
+ break;
261
+ case 'edit':
262
+ edit(id);
263
+ break;
264
+ case 'delete':
265
+ deleteBusiness(id, elem.data('name'));
266
+ break;
267
+ }
268
+ }
269
+ });
270
+ }
271
+
272
+ function week(id) {
273
+ var content = miniPage.getHrefContent('/missions/operation_plans/new_week?teacher_id=' + id);
274
+ var openWH = miniPage.getOpenWidthHeight();
275
+
276
+ teacherindex1 = layer.open({
277
+ title: '添加周计划',
278
+ type: 1,
279
+ shade: 0.2,
280
+ maxmin: true,
281
+ shadeClose: true,
282
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
283
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
284
+ content: content
285
+ });
286
+ $(window).on("resize", function () {
287
+ layer.full(sindex);
288
+ });
289
+ }
290
+
291
+ function edit(id) {
292
+ var content = miniPage.getHrefContent('/missions/teachers/' + id + '/edit');
293
+ var openWH = miniPage.getOpenWidthHeight();
294
+ sindex = layer.open({
295
+ title: '编辑',
296
+ type: 1,
297
+ shade: 0.2,
298
+ maxmin: true,
299
+ shadeClose: true,
300
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
301
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
302
+ content: content
303
+ });
304
+ $(window).on("resize", function () {
305
+ layer.full(sindex);
306
+ });
307
+ }
308
+
309
+ function month(id) {
310
+ var content = miniPage.getHrefContent('/missions/operation_plans/new_month?teacher_id=' + id);
311
+ var openWH = miniPage.getOpenWidthHeight();
312
+ teacherindex2 = layer.open({
313
+ title: '添加月计划',
314
+ type: 1,
315
+ shade: 0.2,
316
+ maxmin: true,
317
+ shadeClose: true,
318
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
319
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
320
+ content: content
321
+ });
322
+ $(window).on("resize", function () {
323
+ layer.full(sindex);
324
+ });
325
+ }
233
326
 
327
+ function deleteBusiness(id, name) {
328
+ layer.confirm('确定删除' + name, function (index) {
329
+ request.delete('missions/teachers/' + id, {}, function (res) {
330
+ layer.close(index);
331
+ table.reload("teachers_table")
332
+ })
333
+ });
334
+ }
234
335
 
235
336
  var sort = {}, search = {};
236
337
  table.on('sort(teachers_table)', function (obj) {
@@ -248,7 +349,6 @@
248
349
  // 监听搜索操作
249
350
  form.on('submit(search_teachers)', function (data) {
250
351
  search = data.field
251
- console.log(search);
252
352
  table.reload('teachers_table', {
253
353
  page: {
254
354
  curr: 1
@@ -276,7 +376,7 @@
276
376
  * toolbar事件监听
277
377
  */
278
378
  table.on('toolbar(teachers_table)', function (obj) {
279
- if (obj.event === 'add') { // 手动添加
379
+ if (obj.event === 'add') { // 手动添加
280
380
  var content = miniPage.getHrefContent('/missions/teachers/new');
281
381
  var openWH = miniPage.getOpenWidthHeight();
282
382
  index = layer.open({
@@ -292,6 +392,22 @@
292
392
  $(window).on("resize", function () {
293
393
  layer.full(index);
294
394
  });
395
+ }else if (obj.event === 'import') { //
396
+ var content = miniPage.getHrefContent('/missions/teachers/import');
397
+ var openWH = miniPage.getOpenWidthHeight();
398
+ import_index = layer.open({
399
+ title: '导入数据',
400
+ type: 1,
401
+ shade: 0.2,
402
+ shadeClose: true,
403
+ area: ['200px', '100px'],
404
+ offset: 'auto',
405
+ closeBtn: 0,
406
+ content: content,
407
+ });
408
+ $(window).on("resize", function () {
409
+ layer.full(index);
410
+ });
295
411
  } else if (obj.event === 'search_new') { // 搜索添加
296
412
  content = miniPage.getHrefContent('/missions/teachers/search_new');
297
413
  openWH = miniPage.getOpenWidthHeight();
@@ -319,12 +435,12 @@
319
435
  table.on('tool(teachers_table)', function (obj) {
320
436
  var data = obj.data;
321
437
  id = data.id
322
- if (obj.event === 'edit') { //编辑
323
- content = miniPage.getHrefContent('/missions/teachers/' + id + '/edit');
324
- openWH = miniPage.getOpenWidthHeight();
325
- teacher_id = id;
326
- sindex = layer.open({
327
- title: '编辑',
438
+ if (obj.event === 'add_event') { // 监听添加操作
439
+ teacher_id = data.id
440
+ var content = miniPage.getHrefContent('/missions/teachers/new_follow_record?id=' + data.id);
441
+ var openWH = miniPage.getOpenWidthHeight();
442
+ sale_plan_index = layer.open({
443
+ title: '添加教师跟进记录',
328
444
  type: 1,
329
445
  shade: 0.2,
330
446
  maxmin: true,
@@ -332,16 +448,13 @@
332
448
  area: [openWH[0] + 'px', openWH[1] + 'px'],
333
449
  offset: [openWH[2] + 'px', openWH[3] + 'px'],
334
450
  content: content,
335
- // success: function (layero, index) {
336
- // $("#edit_username").val(data.username);
337
- // $("#edit_company").val(data.company);
338
- // $("#edit_dep").val(data.dep);
339
- // },
451
+ success: function (layero, index) {
452
+ form.render('select');
453
+ }
340
454
  });
341
455
  $(window).on("resize", function () {
342
- layer.full(sindex);
456
+ layer.full(sale_plan_index);
343
457
  });
344
- return false;
345
458
  } else if (obj.event === 'delete') {
346
459
  layer.confirm('确定删除' + data.name, function (index) {
347
460
  request.delete('missions/teachers/' + data.id, {}, function (res) {
@@ -13,7 +13,8 @@ json.data do
13
13
  json.activities_count d.activity_teachers_count
14
14
  json.source EducodeSales::Common.teacher_source_name[d.source_id]
15
15
  # a_id = EducodeSales::TeacherFollow.order(created_at: :desc).find_by(teacher_id: d.id).present? ? EducodeSales::TeacherFollow.order(created_at: :desc).find_by(teacher_id: d.id).attitude_id : 73
16
- json.attitude EducodeSales::TeacherFollow.find_by(teacher_id: d.id).present? ? EducodeSales::Common.find(EducodeSales::TeacherFollow.order(created_at: :desc).find_by(teacher_id: d.id).attitude_id).name : ''
16
+ # json.attitude EducodeSales::TeacherFollow.find_by(teacher_id: d.id).present? ? EducodeSales::Common.find(EducodeSales::TeacherFollow.order(created_at: :desc).find_by(teacher_id: d.id).attitude_id).name : ''
17
+ json.attitude d.follow_up&.attitude&.name
17
18
  json.courses_count d.user_id ? Course.joins(:course_members).where(course_members: {user_id: d.user_id}).distinct("course_id").count : 0
18
19
  json.actives d.actives
19
20
  json.students d.students_count
@@ -81,7 +81,6 @@
81
81
  return cb([]);
82
82
  }
83
83
  request.get('missions/search_edu_teacher?q=' + value, {}, function (res) {
84
- console.log(res);
85
84
  return cb(res)
86
85
  })
87
86
  }
@@ -156,6 +155,7 @@
156
155
  table.reload('activities_table');
157
156
  table.reload('teachers_table');
158
157
  layer.close(parent.index)
158
+ layer.close(parent.sindex)
159
159
  }
160
160
  })
161
161
  return false;
@@ -5,7 +5,7 @@
5
5
  <title><%= @title || '头歌营销系统' %></title>
6
6
  <%= csrf_meta_tags %>
7
7
  <%= csp_meta_tag %>
8
- <%= favicon_link_tag "educode_sales/favicon.ico" %>
8
+ <%= favicon_link_tag "educode_sales/logo.png" %>
9
9
  <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
10
10
  <%= stylesheet_link_tag "educode_sales/application", media: "all" %>
11
11
  <%= javascript_include_tag "educode_sales/application" %>
data/config/routes.rb CHANGED
@@ -9,6 +9,7 @@ EducodeSales::Engine.routes.draw do
9
9
  get :search_edu_teacher,to: "home#search_edu_teacher"
10
10
  get :search, to: "home#search"
11
11
  get :no_permission, to: "home#no_permission"
12
+ get :sales_staff, to: "home#sales_staff"
12
13
 
13
14
  resources :sessions do
14
15
  end
@@ -110,8 +111,12 @@ EducodeSales::Engine.routes.draw do
110
111
  end
111
112
  end
112
113
 
114
+
115
+ resources :import_teachers
116
+
113
117
  resources :teachers do
114
118
  collection do
119
+ get :import
115
120
  get :add_keys
116
121
  get :search_new
117
122
  get :add_courses
@@ -0,0 +1,5 @@
1
+ class AddTelKeyPeoples < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_column :educode_sales_key_people, :tel, :string
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddSourceBusinesses < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_column :educode_sales_businesses, :source, :string
4
+ end
5
+ end
@@ -0,0 +1,10 @@
1
+ class CreateEducodeSalesAssignFollowUps < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :educode_sales_assign_follow_ups do |t|
4
+ t.references :staff
5
+ t.references :follow_up
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '0.3.6'
2
+ VERSION = '0.4.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: educode_sales
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - anke1460
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-08 00:00:00.000000000 Z
11
+ date: 2021-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -96,6 +96,7 @@ files:
96
96
  - app/assets/javascripts/educode_sales/extent/miniPage.js
97
97
  - app/assets/javascripts/educode_sales/extent/request.js
98
98
  - app/assets/javascripts/educode_sales/extent/select_input.js
99
+ - app/assets/javascripts/educode_sales/extent/xm-select.js
99
100
  - app/assets/javascripts/educode_sales/layui.js
100
101
  - app/assets/stylesheets/educode_sales/app.css
101
102
  - app/assets/stylesheets/educode_sales/application.css
@@ -120,6 +121,7 @@ files:
120
121
  - app/controllers/educode_sales/commons_controller.rb
121
122
  - app/controllers/educode_sales/follow_ups_controller.rb
122
123
  - app/controllers/educode_sales/home_controller.rb
124
+ - app/controllers/educode_sales/import_teachers_controller.rb
123
125
  - app/controllers/educode_sales/key_person_controller.rb
124
126
  - app/controllers/educode_sales/operation_plans_controller.rb
125
127
  - app/controllers/educode_sales/operation_reports_controller.rb
@@ -146,6 +148,7 @@ files:
146
148
  - app/models/educode_sales/activity.rb
147
149
  - app/models/educode_sales/activity_teacher.rb
148
150
  - app/models/educode_sales/application_record.rb
151
+ - app/models/educode_sales/assign_follow_up.rb
149
152
  - app/models/educode_sales/business.rb
150
153
  - app/models/educode_sales/common.rb
151
154
  - app/models/educode_sales/course_subject.rb
@@ -194,6 +197,7 @@ files:
194
197
  - app/views/educode_sales/follow_ups/teachers.json.jbuilder
195
198
  - app/views/educode_sales/home/index.html.erb
196
199
  - app/views/educode_sales/home/no_permission.html.erb
200
+ - app/views/educode_sales/home/sales_staff.json.jbuilder
197
201
  - app/views/educode_sales/home/search.json.jbuilder
198
202
  - app/views/educode_sales/home/search_edu_teacher.json.jbuilder
199
203
  - app/views/educode_sales/home/search_teacher.json.jbuilder
@@ -285,6 +289,7 @@ files:
285
289
  - app/views/educode_sales/teachers/course_subject.json.jbuilder
286
290
  - app/views/educode_sales/teachers/edit.html.erb
287
291
  - app/views/educode_sales/teachers/edit_follow_record.html.erb
292
+ - app/views/educode_sales/teachers/import.html.erb
288
293
  - app/views/educode_sales/teachers/index.html.erb
289
294
  - app/views/educode_sales/teachers/index.json.jbuilder
290
295
  - app/views/educode_sales/teachers/new.html.erb
@@ -325,6 +330,9 @@ files:
325
330
  - db/migrate/20210913070728_create_educode_sales_activity_teachers.rb
326
331
  - db/migrate/20210913071607_create_educode_sales_course_subjects.rb
327
332
  - db/migrate/20210915061738_add_students_count_teacher_follow_ups.rb
333
+ - db/migrate/20211009031109_add_tel_key_peoples.rb
334
+ - db/migrate/20211009063423_add_source_businesses.rb
335
+ - db/migrate/20211013060712_create_educode_sales_assign_follow_ups.rb
328
336
  - lib/educode_sales.rb
329
337
  - lib/educode_sales/engine.rb
330
338
  - lib/educode_sales/version.rb