educode_sales 0.5.3 → 0.5.7

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 (36) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/educode_sales/businesses_controller.rb +3 -0
  3. data/app/controllers/educode_sales/follow_ups_controller.rb +57 -0
  4. data/app/controllers/educode_sales/home_controller.rb +11 -0
  5. data/app/controllers/educode_sales/sale_trends_controller.rb +108 -84
  6. data/app/controllers/educode_sales/teachers_controller.rb +36 -14
  7. data/app/controllers/educode_sales/upload_files_controller.rb +3 -3
  8. data/app/models/educode_sales/teacher.rb +2 -1
  9. data/app/models/educode_sales/teacher_assign_follow.rb +6 -0
  10. data/app/views/educode_sales/activities/index.html.erb +4 -5
  11. data/app/views/educode_sales/activities/show_teachers.html.erb +1 -1
  12. data/app/views/educode_sales/businesses/_follows.html.erb +233 -0
  13. data/app/views/educode_sales/businesses/edit_follow_record.html.erb +59 -9
  14. data/app/views/educode_sales/businesses/file.html.erb +2 -4
  15. data/app/views/educode_sales/businesses/index.html.erb +137 -62
  16. data/app/views/educode_sales/businesses/index.json.jbuilder +1 -0
  17. data/app/views/educode_sales/businesses/new_follow_record.html.erb +58 -7
  18. data/app/views/educode_sales/businesses/show_follow.html.erb +9 -9
  19. data/app/views/educode_sales/businesses/show_follow_record.html.erb +1 -1
  20. data/app/views/educode_sales/businesses/time_line.html.erb +1 -1
  21. data/app/views/educode_sales/follow_ups/index.json.jbuilder +19 -0
  22. data/app/views/educode_sales/home/sales_place.json.jbuilder +9 -0
  23. data/app/views/educode_sales/places/index.html.erb +14 -4
  24. data/app/views/educode_sales/places/index.json.jbuilder +7 -1
  25. data/app/views/educode_sales/recycles/index.html.erb +1 -1
  26. data/app/views/educode_sales/sale_trends/trends.html.erb +56 -20
  27. data/app/views/educode_sales/sales/operations.html.erb +3 -1
  28. data/app/views/educode_sales/teachers/course_list.json.jbuilder +1 -1
  29. data/app/views/educode_sales/teachers/edit.html.erb +53 -7
  30. data/app/views/educode_sales/teachers/index.html.erb +36 -2
  31. data/app/views/educode_sales/teachers/index.json.jbuilder +4 -1
  32. data/app/views/educode_sales/teachers/new.html.erb +55 -17
  33. data/config/routes.rb +1 -0
  34. data/db/migrate/20211201023750_create_educode_sales_teacher_assign_follows.rb +11 -0
  35. data/lib/educode_sales/version.rb +1 -1
  36. metadata +7 -2
@@ -83,14 +83,14 @@
83
83
  </div>
84
84
  </div>
85
85
  <br>
86
- <div class="layui-inline">
86
+ <div class="layui-inline new_place_select">
87
87
  <label class="layui-form-label">渠道</label>
88
- <div class="layui-input-inline">
89
- <%= select_tag "place_id", options_for_select(@places, @last_follow_up&.place_id), include_blank: true %>
88
+ <div class="layui-input-inline" style="z-index: 101">
89
+ <div id="place" style="width: 190px;"></div>
90
90
  </div>
91
91
  </div>
92
92
  <div class="layui-inline">
93
- <label class="layui-form-label">渠道分成</label>
93
+ <label class="layui-form-label">渠道分成(万)</label>
94
94
  <div class="layui-input-inline">
95
95
  <input name="divide_amount" class="layui-input" value="<%= @last_follow_up&.divide_amount%>">
96
96
  </div>
@@ -182,18 +182,63 @@
182
182
  })
183
183
  }
184
184
  })
185
+ var place_list = xmSelect.render({
186
+ el: '#place',
187
+ remoteSearch: true,
188
+ model: {
189
+ icon: 'hidden',
190
+ label: {
191
+ type: 'text',
192
+ text: {
193
+ //左边拼接的字符
194
+ left: '',
195
+ //右边拼接的字符
196
+ right: '',
197
+ //中间的分隔符
198
+ separator: ', ',
199
+ },
200
+ }
201
+ },
202
+ clickClose: true,
203
+ delay: 1000,
204
+ paging: true,
205
+ radio: true,
206
+ pageRemote: true,
207
+ filterable: true,
208
+ remoteMethod: function (val, cb, show, pageIndex) {
209
+ $.ajax( '/missions/sales_place', {
210
+ method: 'get',
211
+ data: {
212
+ q: val,
213
+ page: pageIndex
214
+ },
215
+ dataType: 'json',
216
+ success: function (res) {
217
+ var data = res.data;
218
+ if (res.code == 0) {
219
+ cb(res.data, res.count);
220
+ } else {
221
+ layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
222
+ }
223
+
224
+ }
225
+ })
226
+ }
227
+ })
185
228
 
186
229
  sales_list.setValue(gon.sales);
230
+ place_list.setValue(gon.place);
187
231
  form.render();
188
232
 
189
233
  form.on('submit(add_follow_up)', function (data) {
190
- var assign_follow = [];
234
+ var assign_follow = [];
191
235
  sales_list.getValue().forEach(function(d) {
192
236
  assign_follow.push(d.value);
193
237
  })
194
238
  data.field.assign_follow_up = assign_follow;
195
239
  data.field.business_id = "<%= @business.id %>";
196
- request.authPost("missions/follow_ups", data.field, function (res) {
240
+ data.field.place_id = place_list.getValue('valueStr');
241
+ request.authPost("missions/follow_ups", data.field, function (res) {
197
242
  if (res.success == false) {
198
243
  layer.alert(res.msg)
199
244
  } else {
@@ -201,6 +246,7 @@
201
246
  parent.layer.close(parent.layer.getFrameIndex(window.name))
202
247
  parent.table.reload('sale_plan_follow_table')
203
248
  parent.table.reload('businesses_table')
249
+ parent.table.reload('teachers_table')
204
250
  }
205
251
  })
206
252
 
@@ -209,4 +255,9 @@
209
255
  });
210
256
 
211
257
  });
212
- </script>
258
+ </script>
259
+ <style>
260
+ .new_place_select xm-select > .xm-body{
261
+ width: 300px; !important;
262
+ }
263
+ </style>
@@ -74,7 +74,7 @@
74
74
 
75
75
  table.render({
76
76
  elem: '#sale_plan_follow_table',
77
- url: '/missions/businesses/show_follow?id=' + parent.id ,
77
+ url: '/missions/businesses/show_follow?id=' + parent.business_id ,
78
78
  toolbar: '#toolbarDemo_follow',
79
79
  defaultToolbar: ['filter'],
80
80
  cols: [
@@ -198,7 +198,7 @@
198
198
  table.on('toolbar(sale_plan_follow_table)', function (obj) {
199
199
  if (obj.event === 'add') { // 监听添加操作
200
200
  business_id = parent.business_id
201
- var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + parent.id);
201
+ var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + parent.business_id);
202
202
  var openWH = miniPage.getOpenWidthHeight();
203
203
  sale_plan_index = layer.open({
204
204
  title: '添加商机跟进记录',
@@ -220,7 +220,7 @@
220
220
  layer.closeAll()
221
221
  business_id = parent.business_id
222
222
  business_name = parent.business_name
223
- var content = miniPage.getHrefContent('/missions/businesses/time_line?business_id=' + id);
223
+ var content = miniPage.getHrefContent('/missions/businesses/time_line?business_id=' + parent.business_id);
224
224
  var openWH = miniPage.getOpenWidthHeight();
225
225
  sindex = layer.open({
226
226
  title: '商机列表/'+ parent.business_name +'的跟进时间线',
@@ -248,6 +248,7 @@
248
248
  layer.close(index);
249
249
  table.reload("businesses_table");
250
250
  table.reload("sale_plan_follow_table");
251
+ table.reload('teachers_table')
251
252
  })
252
253
  });
253
254
  } else if (obj.event === 'show') { // 监听添加操作
@@ -335,34 +336,33 @@
335
336
  // 未完成计划
336
337
  table.render({
337
338
  elem: '#unfinish_table',
338
- url: '/missions/businesses/' + parent.id + "/unfinish_plans",
339
+ url: '/missions/businesses/' + parent.business_id + "/unfinish_plans",
339
340
  toolbar: '#unfinish_table_tabar',
340
341
  defaultToolbar: [],
341
342
  cols: [
342
343
  [
343
344
  {
344
345
  field: 'id',
345
- width: 80,
346
+ width: 60,
346
347
  title:'序号',type: 'numbers',
347
348
  },
348
349
  {
349
350
  field: 'staff',
350
- width: 140,
351
+ width: 100,
351
352
  title: '姓名'
352
353
  },
353
354
  {
354
355
  field: 'month',
355
- width: 120,
356
+ width: 100,
356
357
  title: '月份',
357
358
  },
358
359
  {
359
360
  field: 'weekly',
360
- width: 120,
361
+ width: 100,
361
362
  title: '周次'
362
363
  },
363
364
  {
364
365
  field: 'content',
365
- width: 300,
366
366
  title: '计划内容'
367
367
  },
368
368
  {
@@ -75,7 +75,7 @@
75
75
  <div class="layui-inline">
76
76
  <label class="layui-form-label">渠道分成:</label>
77
77
  <div class="layui-input-inline">
78
- <%= @follow_up.divide_amount %>
78
+ <%= @follow_up.divide_amount %>万
79
79
  </div>
80
80
  </div>
81
81
  <div class="ayui-form-item">
@@ -43,7 +43,7 @@
43
43
  function demo(){
44
44
  layer.closeAll()
45
45
  business_id = parent.business_id
46
- var content = miniPage.getHrefContent('/missions/businesses/show_follow?id=' + id);
46
+ var content = miniPage.getHrefContent('/missions/businesses/show_follow?id=' + parent.business_id);
47
47
  var openWH = miniPage.getOpenWidthHeight();
48
48
  sindex = layer.open({
49
49
  title: '商机列表/'+ parent.business_name +'的跟进记录',
@@ -0,0 +1,19 @@
1
+ json.data do
2
+ json.array! @follow_ups do |d|
3
+ json.id d.id
4
+ json.clazz d.clazz.name
5
+ json.stage d.stage.name
6
+ json.staff d.staff.user.real_name
7
+ json.description d.description
8
+ json.advise d.advise
9
+ json.created_at d.created_at.to_s
10
+ json.business d.business.name
11
+ json.business_id d.business.id
12
+ teacher_ids = d.key_person.pluck(:teacher_id)
13
+ json.key_people EducodeSales::Teacher.where(id: teacher_ids).pluck(:name).join('、')
14
+
15
+ end
16
+ end
17
+
18
+ json.code 0
19
+ json.count @follow_ups.total_count
@@ -0,0 +1,9 @@
1
+ json.data do
2
+ json.array! @places do |d|
3
+ json.value d.id
4
+ json.name d.name
5
+ end
6
+ end
7
+ json.count (@places.total_count/10 + 1)
8
+ json.code 0
9
+ json.msg "success"
@@ -17,6 +17,11 @@
17
17
  <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
18
18
  <% end %>
19
19
  </script>
20
+ <script type="text/html" id="business_a">
21
+ <div class="layui-text">
22
+ <a href="/missions/businesses?place_id={{d.id}}">{{d.businesses_count}}</a>
23
+ </div>
24
+ </script>
20
25
 
21
26
  <script type="text/html" id="showchance">
22
27
  <a href="/missions/businesses" class="layui-table-link">{{ d.chance }}</a>
@@ -56,20 +61,25 @@
56
61
  {
57
62
  field: 'businesses_count',
58
63
  width: 120,
59
- totalRow:'{{ parseInt(d.TOTAL_NUMS) }}',
60
- title: '商机'
64
+ totalRow: true,
65
+ sort: true,
66
+ title: '商机',
67
+ templet: "#business_a",
68
+
61
69
  },
62
70
  {
63
71
  field: 'amount',
64
72
  width: 120,
65
73
  totalRow:true,
66
- title: '中标'
74
+ sort: true,
75
+ title: '中标金额'
67
76
  },
68
77
  {
69
78
  field: 'return_mount',
70
79
  width: 120,
71
80
  totalRow:true,
72
- title: '回款',
81
+ sort: true,
82
+ title: '回款金额',
73
83
  },
74
84
  {
75
85
  title: '操作',
@@ -1,3 +1,4 @@
1
+ all_businesses_count = 0
1
2
  area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
2
3
  json.data do
3
4
  json.array! @places do |d|
@@ -13,11 +14,16 @@ json.data do
13
14
  else
14
15
  json.area_id ''
15
16
  end
16
- json.businesses_count EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", @x).where("educode_sales_follow_ups.place_id = #{d.id}").count
17
+ business_count = EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", @x).where("educode_sales_follow_ups.place_id = #{d.id}").count
18
+ json.businesses_count business_count
19
+ all_businesses_count += business_count
17
20
  json.amount EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", @x).where("educode_sales_follow_ups.place_id = #{d.id} AND educode_sales_follow_ups.stage_id IN (?)", @stage_ids).sum(:profit_amount).round(2)
18
21
  json.return_mount EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", @x).where("educode_sales_follow_ups.place_id = #{d.id}").sum(:return_money).round(2)
19
22
  end
20
23
  end
21
24
 
25
+ json.totalRow do
26
+ json.businesses_count all_businesses_count.to_s
27
+ end
22
28
  json.code 0
23
29
  json.count @places.total_count
@@ -1,6 +1,6 @@
1
1
  <div class="layui-tab" lay-filter="sale_tab">
2
2
  <ul class="layui-tab-title">
3
- <li class="layui-this" data="business">商机列表</li>
3
+ <li class="layui-this" data="business">商机</li>
4
4
  <li data="week">周计划</li>
5
5
  <li data="weekly">周报</li>
6
6
  <li data="month">月计划</li>
@@ -101,7 +101,7 @@
101
101
  <div class="panel layui-bg-number">
102
102
  <div class="panel-body">
103
103
  <div class="panel-title">
104
- <h5>已中标<a href="/missions/businesses?name=(销售态势-<%=@year %>-已中标商机)" style="color: #0000FF;float: right">查看商机</a></h5>
104
+ <h5>已中标(总额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已中标商机)" style="color: #0000FF;float: right">查看商机</a></h5>
105
105
  </div>
106
106
  <div class="panel-content y-t-10">
107
107
  <h1 class="no-margins"><%= @goal_amount %>万</h1>
@@ -114,7 +114,7 @@
114
114
  <div class="panel layui-bg-number">
115
115
  <div class="panel-body">
116
116
  <div class="panel-title">
117
- <h5>已签单<a href="/missions/businesses?name=(销售态势-<%=@year %>-已签单商机)" style="color: #0000FF;float: right">查看商机</a></h5>
117
+ <h5>已签单(总额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已签单商机)" style="color: #0000FF;float: right">查看商机</a></h5>
118
118
  </div>
119
119
  <div class="panel-content y-t-10">
120
120
  <h1 class="no-margins"><%= @service_amount %>万</h1>
@@ -148,6 +148,32 @@
148
148
  </div>
149
149
  </div>
150
150
  </div>
151
+ <div class="layui-col-xs3">
152
+ <div class="panel layui-bg-number">
153
+ <div class="panel-body">
154
+ <div class="panel-title">
155
+ <h5>已中标(合同额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已中标商机)" style="color: #0000FF;float: right">查看商机</a></h5>
156
+ </div>
157
+ <div class="panel-content y-t-10">
158
+ <h1 class="no-margins"><%= @actual_goal_amount %>万</h1>
159
+ </div>
160
+ </div>
161
+ </div>
162
+ </div>
163
+
164
+ <div class="layui-col-xs3">
165
+ <div class="panel layui-bg-number">
166
+ <div class="panel-body">
167
+ <div class="panel-title">
168
+ <h5>已签单(合同额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已签单商机)" style="color: #0000FF;float: right">查看商机</a></h5>
169
+ </div>
170
+ <div class="panel-content y-t-10">
171
+ <h1 class="no-margins"><%= @actual_service_amount %>万</h1>
172
+ </div>
173
+ </div>
174
+ </div>
175
+ </div>
176
+
151
177
  <div class="layui-row layui-col-space30" >
152
178
  <div class="layui-col-xs3">
153
179
  <div class="panel layui-bg-number">
@@ -181,7 +207,7 @@
181
207
  <div class="layui-inline m-t-10">
182
208
  <label class="layui-form-label">视图</label>
183
209
  <div class="layui-input-inline">
184
- <%= select_tag "follow_count_range", options_for_select([['按天','day'],['按月','month'],['按年','year']],params[:follow_count_range]), {'lay-filter': 'follow_count'}%>
210
+ <%= select_tag "follow_count_range", options_for_select([['按天','day'],['按周','week'],['按月','month'],['按年','year']],params[:follow_count_range] || 'week'), {'lay-filter': 'follow_count'}%>
185
211
  </div>
186
212
  </div>
187
213
  <div class="layui-inline">
@@ -189,7 +215,8 @@
189
215
  <div class="layui-input-inline">
190
216
  <input type="text" class="layui-input month layui-hide" id="date_month" name="date_month" placeholder=" - " value="<%=params[:date_month] %>" >
191
217
  <input type="text" class="layui-input year layui-hide" id="date_year" name="date_year" placeholder=" - " value="<%=params[:date_year] %>">
192
- <input type="text" class="layui-input day" id="date" name="date" placeholder=" - " value="<%=params[:date] %>">
218
+ <input type="text" class="layui-input week " id="date_week" name="date_week" placeholder=" - " value="<%=params[:date_week].present? ? params[:date_week] : (Time.now - 30.days).beginning_of_week.to_s(:date) + ' - ' + Time.now.end_of_week.to_s(:date) %>">
219
+ <input type="text" class="layui-input day layui-hide" id="date" name="date" placeholder=" - " value="<%=params[:date] %>">
193
220
  </div>
194
221
  </div>
195
222
  <div class="layui-inline">
@@ -214,6 +241,12 @@
214
241
  <div style="margin: 10px 10px 10px 10px">
215
242
  <form class="layui-form layui-form-pane" lay-filter="search_form">
216
243
  <div class="layui-form-item">
244
+ <div class="layui-inline m-t-10">
245
+ <label class="layui-form-label">维度</label>
246
+ <div class="layui-input-inline">
247
+ <%= select_tag "count_type", options_for_select([['按合同额统计','actual_amount'],['按总额统计','total_amount']],params[:count_type]), {'lay-filter': 'count_type'}%>
248
+ </div>
249
+ </div>
217
250
  <div class="layui-inline m-t-10">
218
251
  <label class="layui-form-label">视图</label>
219
252
  <div class="layui-input-inline">
@@ -223,7 +256,7 @@
223
256
  <div class="layui-inline">
224
257
  <label class="layui-form-label">时间范围</label>
225
258
  <div class="layui-input-inline">
226
- <input type="text" class="layui-input goal_month " id="goal_date_month" name="goal_date_month" placeholder=" - " value="<%=params[:goal_date_month] %>">
259
+ <input type="text" class="layui-input goal_month " id="goal_date_month" name="goal_date_month" placeholder=" - " value="<%=params[:goal_date_month].present? ? params[:goal_date_month] : Time.now.year.to_s + "-01" + " - " + Time.now.strftime("%Y-%m") %>">
227
260
  <input type="text" class="layui-input goal_year layui-hide" id="goal_date_year" name="goal_date_year" placeholder=" - " value="<%=params[:goal_date_year] %>">
228
261
  </div>
229
262
  </div>
@@ -264,27 +297,34 @@
264
297
  $(document).ready(function () {
265
298
  $(".follow_count_bt").click(function () {
266
299
  layer.msg("图表绘制中...", {
267
- time: 0, //不自动关闭
268
300
  offset:['40%','46%']
269
301
  })
270
302
  layer.load(0, {});
271
303
  setTimeout(function () {
272
304
  layer.closeAll('loading');
273
- }, 10000);
305
+ }, 3000);
274
306
  });
275
307
  });
276
308
  if(follow_type == "day"){
277
309
  $(".year").addClass('layui-hide')
278
310
  $(".month").addClass('layui-hide')
311
+ $(".week").addClass('layui-hide')
279
312
  $(".day").removeClass('layui-hide')
280
313
  }else if(follow_type == "month"){
281
314
  $(".year").addClass('layui-hide')
315
+ $(".week").addClass('layui-hide')
282
316
  $(".month").removeClass('layui-hide')
283
317
  $(".day").addClass('layui-hide')
318
+ }else if(follow_type == "week"){
319
+ $(".year").addClass('layui-hide')
320
+ $(".day").addClass('layui-hide')
321
+ $(".week").removeClass('layui-hide')
322
+ $(".month").addClass('layui-hide')
284
323
  }else {
285
324
  $(".year").removeClass('layui-hide')
286
325
  $(".month").addClass('layui-hide')
287
326
  $(".day").addClass('layui-hide')
327
+ $(".week").addClass('layui-hide')
288
328
  }
289
329
 
290
330
  if(goal_type == "year"){
@@ -328,43 +368,30 @@
328
368
  // 时间选择器
329
369
  laydate.render({
330
370
  elem: '#date',
331
- min: -15
332
- ,max: 0,
333
371
  range: true
334
372
  });
335
373
  laydate.render({
336
- type: 'week',
337
374
  elem: '#date_week',
338
- min: -90
339
- ,max: 0,
340
375
  range: true
341
376
  });
342
377
  laydate.render({
343
378
  type: 'month',
344
379
  elem: '#date_month',
345
- min: -365
346
- ,max: 0,
347
380
  range: true
348
381
  });
349
382
  laydate.render({
350
383
  type: 'year',
351
384
  elem: '#date_year',
352
- min: -3660
353
- ,max: 0,
354
385
  range: true
355
386
  });
356
387
  laydate.render({
357
388
  type: 'year',
358
389
  elem: '#goal_date_year',
359
- min: -3660
360
- ,max: 0,
361
390
  range: true
362
391
  });
363
392
  laydate.render({
364
393
  type: 'month',
365
394
  elem: '#goal_date_month',
366
- min: -365
367
- ,max: 0,
368
395
  range: true
369
396
  });
370
397
 
@@ -380,15 +407,24 @@
380
407
  if(value == "month"){
381
408
  $(".year").addClass('layui-hide')
382
409
  $(".day").addClass('layui-hide')
410
+ $(".week").addClass('layui-hide')
383
411
  $(".month").removeClass('layui-hide')
384
412
  }else if(value == "year"){
385
413
  $(".month").addClass('layui-hide')
386
414
  $(".day").addClass('layui-hide')
415
+ $(".week").addClass('layui-hide')
387
416
  $(".year").removeClass('layui-hide')
417
+ }else if(value == "week"){
418
+ $(".month").addClass('layui-hide')
419
+ $(".day").addClass('layui-hide')
420
+ $(".week").removeClass('layui-hide')
421
+ $(".year").addClass('layui-hide')
388
422
  }else {
389
423
  $(".month").addClass('layui-hide')
390
424
  $(".year").addClass('layui-hide')
391
425
  $(".day").removeClass('layui-hide')
426
+ $(".week").addClass('layui-hide')
427
+
392
428
  }
393
429
  })
394
430
 
@@ -51,13 +51,15 @@
51
51
  title: '跟进学校',
52
52
  templet: "#school",
53
53
  totalRow:true,
54
+ sort: true,
54
55
  width: 120
55
56
  }, {
56
57
  field: 'departments',
57
58
  title: '跟进二级学院',
58
59
  templet: "#xschool",
59
60
  totalRow:true,
60
- width: 120
61
+ sort: true,
62
+ width: 170
61
63
  },
62
64
  ]
63
65
  ],
@@ -19,5 +19,5 @@ json.data do
19
19
  end
20
20
  end
21
21
  json.code 0
22
- json.count @courses.total_count
22
+ json.count @courses.present? ? @courses.total_count : 0
23
23
  json.msg 'succcess'
@@ -9,36 +9,48 @@
9
9
  </div>
10
10
  </div>
11
11
  <div class="layui-inline">
12
- <label class="layui-form-label required">职称</label>
12
+ <label class="layui-form-label ">职称</label>
13
13
  <div class="layui-input-block">
14
14
  <%= select_tag "professional_title", options_for_select(['教授', '研究员', '副教授', '副研究员', '讲师', '助理研究员', '助理教授'], @teacher.professional_title), { include_blank: true } %>
15
15
  </div>
16
16
  </div>
17
17
  <br>
18
18
  <div class="layui-inline">
19
- <label class="layui-form-label required">职务</label>
19
+ <label class="layui-form-label ">职务</label>
20
20
  <div class="layui-input-block">
21
- <input type="text" name="job" autocomplete="off" lay-verify="required"
21
+ <input type="text" name="job" autocomplete="off"
22
22
  class="layui-input" placeholder="请输入" value="<%= @teacher.job %>">
23
23
  </div>
24
24
  </div>
25
25
  <div class="layui-inline">
26
- <label class="layui-form-label required">来源</label>
26
+ <label class="layui-form-label ">来源</label>
27
27
  <div class="layui-input-block">
28
28
  <%= select_tag "source_id", options_for_select(EducodeSales::Common.where(clazz: 'teacher_source').pluck(:name, :id), @teacher.source_id), { include_blank: true } %>
29
29
  </div>
30
30
  </div>
31
31
  <br>
32
+ <div class="layui-inline">
33
+ <label class="layui-form-label ">微信号</label>
34
+ <div class="layui-input-block">
35
+ <input type="text" name="wechat" autocomplete="off"
36
+ class="layui-input" placeholder="请输入" value="<%= @teacher.wechat %>">
37
+ </div>
38
+ </div>
39
+ <br>
32
40
  <div class="layui-inline">
33
41
  <label class="layui-form-label required">单位部门</label>
34
42
  <div class="layui-input-block" id="add_department2" style="width: 400px"></div>
35
- <!-- <input type="text" name="edit_school" autocomplete="off" lay-verify="required"-->
36
- <!-- class="layui-input" placeholder="请输入" value="<%#= Department.find_by(id: @teacher.department_id).name %>-<%#= School.find_by(id: Department.find_by(id: @teacher.department_id).school_id).name %>">-->
37
43
  </div>
38
44
  <br>
45
+ <div class="layui-form-item">
46
+ <label class="layui-form-label">教研助理</label>
47
+ <div class="layui-input-inline">
48
+ <div id="edit_teacher_assist" style="width: 400px;"></div>
49
+ </div>
50
+ </div>
39
51
  <div class="layui-inline">
40
52
  <label class="layui-form-label">平台账号</label>
41
- <div class="layui-input-block" id="user_search" style="width: 300px;"></div>
53
+ <div class="layui-input-block" id="user_search" style="width: 400px;"></div>
42
54
  </div>
43
55
  <div class="layui-form-item m-t-20">
44
56
  <div class="layui-input-block">
@@ -60,6 +72,35 @@
60
72
 
61
73
  form.render();
62
74
 
75
+ var edit_teacher_assist_list = xmSelect.render({
76
+ el: '#edit_teacher_assist',
77
+ remoteSearch: true,
78
+ clickClose: true,
79
+ delay: 1000,
80
+ paging: true,
81
+ pageRemote: true,
82
+ filterable: true,
83
+ remoteMethod: function (val, cb, show, pageIndex) {
84
+ $.ajax( '/missions/sales_staff?teacher_assist=true', {
85
+ method: 'get',
86
+ data: {
87
+ q: val,
88
+ page: pageIndex
89
+ },
90
+ dataType: 'json',
91
+ success: function (res) {
92
+ var data = res.data;
93
+ if (res.code == 0) {
94
+ cb(res.data, res.count);
95
+ } else {
96
+ layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
97
+ }
98
+ }
99
+ })
100
+ }
101
+ })
102
+ edit_teacher_assist_list.setValue(gon.teacher_assist)
103
+
63
104
  var add_department = selectInput.render({
64
105
  elem: '#add_department2',
65
106
  name: 'department', // 渲染的input的name值
@@ -125,6 +166,11 @@
125
166
  if (department_id == '') {
126
167
  return layer.alert("请选择单位部门")
127
168
  }
169
+ var assign_follow = [];
170
+ edit_teacher_assist_list.getValue().forEach(function(d) {
171
+ assign_follow.push(d.value);
172
+ })
173
+ data.field.teacher_assist = assign_follow;
128
174
  data.field.department_id = department_id;
129
175
  data.field.user_id = user_id;
130
176
  request.authPut("missions/teachers/"+ parent.id, data.field, function (res) {