educode_sales 0.3.7 → 0.4.1

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 (68) 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 +14 -4
  6. data/app/controllers/educode_sales/follow_ups_controller.rb +9 -0
  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/operation_plans_controller.rb +1 -1
  10. data/app/controllers/educode_sales/operation_reports_controller.rb +1 -1
  11. data/app/controllers/educode_sales/places_controller.rb +1 -0
  12. data/app/controllers/educode_sales/plans_controller.rb +1 -1
  13. data/app/controllers/educode_sales/sale_reports_controller.rb +1 -1
  14. data/app/controllers/educode_sales/sale_trends_controller.rb +8 -6
  15. data/app/controllers/educode_sales/sales_controller.rb +1 -0
  16. data/app/controllers/educode_sales/teachers_controller.rb +24 -12
  17. data/app/models/educode_sales/assign_follow_up.rb +6 -0
  18. data/app/models/educode_sales/follow_up.rb +1 -0
  19. data/app/models/educode_sales/teacher.rb +1 -1
  20. data/app/models/educode_sales/teacher_follow.rb +1 -0
  21. data/app/views/educode_sales/activities/edit.html.erb +0 -1
  22. data/app/views/educode_sales/activities/index.html.erb +32 -11
  23. data/app/views/educode_sales/activities/show_teachers.html.erb +1 -1
  24. data/app/views/educode_sales/businesses/edit.html.erb +2 -2
  25. data/app/views/educode_sales/businesses/edit_follow_record.html.erb +43 -1
  26. data/app/views/educode_sales/businesses/index.html.erb +14 -7
  27. data/app/views/educode_sales/businesses/index.json.jbuilder +3 -0
  28. data/app/views/educode_sales/businesses/new_follow_record.html.erb +45 -13
  29. data/app/views/educode_sales/businesses/show_follow.html.erb +12 -5
  30. data/app/views/educode_sales/businesses/show_follow_record.html.erb +6 -0
  31. data/app/views/educode_sales/commons/edit.html.erb +0 -1
  32. data/app/views/educode_sales/commons/index.html.erb +1 -0
  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 +1 -0
  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/import.html.erb +41 -0
  60. data/app/views/educode_sales/teachers/index.html.erb +23 -6
  61. data/app/views/educode_sales/teachers/index.json.jbuilder +2 -3
  62. data/app/views/educode_sales/teachers/new.html.erb +0 -1
  63. data/app/views/educode_sales/teachers/show_follow.json.jbuilder +3 -2
  64. data/app/views/layouts/educode_sales/login.html.erb +1 -1
  65. data/config/routes.rb +5 -0
  66. data/db/migrate/20211013060712_create_educode_sales_assign_follow_ups.rb +10 -0
  67. data/lib/educode_sales/version.rb +1 -1
  68. metadata +8 -2
@@ -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;
@@ -1,7 +1,12 @@
1
1
  <script type="text/html" id="newWeeklyToolbar">
2
2
  <div class="layui-btn-container">
3
+ {{# if(parent.from_edit_monthly){ }}
4
+ <span class="table-label">本月计划列表</span>
5
+ <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add_month"> 添加计划</button>
6
+ {{# } else { }}
3
7
  <span class="table-label">本周计划列表</span>
4
8
  <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add"> 添加计划</button>
9
+ {{# } }}
5
10
  </div>
6
11
  </script>
7
12
  <form class="layui-form layui-form-pane">
@@ -162,6 +167,27 @@
162
167
  $(window).on("resize", function () {
163
168
  layer.full(sindex);
164
169
  });
170
+ }else if (obj.event === 'add_month') { // 监听添加操作
171
+ from_weekly = true;
172
+ var content = miniPage.getHrefContent('/missions/operation_plans/new_month');
173
+ var openWH = miniPage.getOpenWidthHeight();
174
+ sindex = layer.open({
175
+ title: '添加计划',
176
+ type: 1,
177
+ shade: 0.2,
178
+ maxmin: true,
179
+ shadeClose: true,
180
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
181
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
182
+ content: content,
183
+ success: function (layero, index) {
184
+ // 重新渲染弹层中的下拉选择框select
185
+ form.render('select');
186
+ }
187
+ });
188
+ $(window).on("resize", function () {
189
+ layer.full(sindex);
190
+ });
165
191
  }
166
192
  });
167
193
  table.on('tool(newWeeklyTable)', function (obj) {
@@ -196,7 +222,7 @@
196
222
  from_sales = true;
197
223
  content = miniPage.getHrefContent('/missions/operation_plans/edit_week?id=' + id);
198
224
  openWH = miniPage.getOpenWidthHeight();
199
- sindex = layer.open({
225
+ edit_week_index = layer.open({
200
226
  title: '编辑',
201
227
  type: 1,
202
228
  shade: 0.2,
@@ -75,9 +75,7 @@
75
75
  return false;
76
76
  }
77
77
  data.field['area_ids'] = area_ids;
78
- console.log(data.field);
79
78
  request.authPut("missions/places/" + data.field.id, data.field, function (res) {
80
- console.log(res.success == false)
81
79
  if (res.success == false) {
82
80
  layer.alert(res.msg)
83
81
  } else {
@@ -75,6 +75,7 @@
75
75
  ]
76
76
  ],
77
77
  limit: 20,
78
+ limits: [10,15,20,30,40,50,60,70,80,90],
78
79
  page: true
79
80
  });
80
81
 
@@ -3,9 +3,9 @@ json.data do
3
3
  json.id d.id
4
4
  json.name d.name
5
5
  json.area_id d.areas.present? ? d.areas.pluck(:name).join("、") : ''
6
- json.businesses_count EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.place_id = #{d.id}").count
7
- json.amount EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.place_id = #{d.id} AND educode_sales_follow_ups.stage_id IN (?)", @stage_ids).sum(:profit_amount).round(2)
8
- json.return_mount EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.place_id = #{d.id}").sum(:return_money)
6
+ 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
7
+ 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)
8
+ 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)
9
9
  end
10
10
  end
11
11
 
@@ -63,7 +63,6 @@
63
63
  return false;
64
64
  }
65
65
  data.field['area_ids'] = area_ids;
66
- console.log(data.field);
67
66
  request.authPost("missions/places", data.field, function (res) {
68
67
  if (res.success === false) {
69
68
  layer.alert(res.msg)
@@ -133,7 +133,7 @@
133
133
  },
134
134
  {
135
135
  title: '操作',
136
- minWidth: 280,
136
+ minWidth: 200,
137
137
  toolbar: '#week_plan_currentTableBar',
138
138
  align: "center",
139
139
  fixed: 'right'
@@ -142,6 +142,7 @@
142
142
  ],
143
143
 
144
144
  limit: 20,
145
+ limits: [10,15,20,30,40,50,60,70,80,90],
145
146
  page: true,
146
147
  });
147
148
 
@@ -258,7 +259,6 @@
258
259
  });
259
260
  } else if (obj.event === 'delete') {
260
261
  layer.confirm('确定删除' + data.id, function (index) {
261
- console.log("aaaaa");
262
262
  request.delete('missions/plans/' + data.id, {}, function (res) {
263
263
  layer.close(index);
264
264
  table.reload("monthPlanTable")
@@ -136,7 +136,7 @@
136
136
  },
137
137
  {
138
138
  title: '操作',
139
- width: 300,
139
+ minWidth: 220,
140
140
  toolbar: '#currentmonthlyTableBar',
141
141
  align: "center",
142
142
  fixed: 'right'
@@ -171,6 +171,7 @@
171
171
  },
172
172
 
173
173
  limit: 20,
174
+ limits: [10,15,20,30,40,50,60,70,80,90],
174
175
  page: true
175
176
  });
176
177
 
@@ -138,7 +138,7 @@
138
138
  },
139
139
  {
140
140
  title: '操作',
141
- minWidth: 280,
141
+ minWidth: 200,
142
142
  toolbar: '#week_plan_currentTableBar',
143
143
  align: "center",
144
144
  fixed: 'right'
@@ -147,6 +147,7 @@
147
147
  ],
148
148
 
149
149
  limit: 20,
150
+ limits: [10,15,20,30,40,50,60,70,80,90],
150
151
  page: true,
151
152
  skin: 'line'
152
153
  });
@@ -138,7 +138,7 @@
138
138
  },
139
139
  {
140
140
  title: '操作',
141
- minWidth: 300,
141
+ minWidth: 220,
142
142
  toolbar: '#currentWeeklyTableBar',
143
143
  align: "center",
144
144
  fixed: 'right'
@@ -172,6 +172,7 @@
172
172
  },
173
173
 
174
174
  limit: 20,
175
+ limits: [10,15,20,30,40,50,60,70,80,90],
175
176
  page: true
176
177
  });
177
178
 
@@ -243,6 +244,7 @@
243
244
  if (obj.event === 'edit') {
244
245
  var content = miniPage.getHrefContent('/missions/sale_reports/' + data.id + "/edit");
245
246
  var openWH = miniPage.getOpenWidthHeight();
247
+ from_edit_monthly = false
246
248
  sindex = layer.open({
247
249
  title: '编辑周报',
248
250
  type: 1,
@@ -80,6 +80,7 @@
80
80
  else {
81
81
  parent.table.reload('businesses_table')
82
82
  }
83
+ parent.table.reload('newWeeklyTable')
83
84
  }
84
85
  })
85
86
  return false;
@@ -101,7 +101,6 @@
101
101
  return false;
102
102
  })
103
103
  form.on('submit(data)', function (data) {
104
- console.log('data', data)
105
104
  Rails.ajax({
106
105
  url: '/missions/roles/'+ parent.role_id + "/view",
107
106
  type: 'PUT',
@@ -48,6 +48,7 @@
48
48
  }]
49
49
  ],
50
50
  limit: 20,
51
+ limits: [10,15,20,30,40,50,60,70,80,90],
51
52
  page: true
52
53
  })
53
54
 
@@ -60,7 +61,6 @@
60
61
  var value = obj.value //得到修改后的值
61
62
  ,data = obj.data //得到所在行所有键值
62
63
  ,field = obj.field; //得到字段
63
- console.log(obj.data);
64
64
  request.authPut('missions/roles/' + data.id + '/update_role/', data,
65
65
  function(res) {
66
66
  if (res.success) {
@@ -1,7 +1,12 @@
1
1
  <script type="text/html" id="newWeeklyToolbar">
2
2
  <div class="layui-btn-container">
3
+ {{# if(parent.from_edit_monthly){ }}
4
+ <span class="table-label">本月计划列表</span>
5
+ <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add_month"> 添加计划</button>
6
+ {{# } else { }}
3
7
  <span class="table-label">本周计划列表</span>
4
8
  <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add"> 添加计划</button>
9
+ {{# } }}
5
10
  </div>
6
11
  </script>
7
12
  <form class="layui-form layui-form-pane">
@@ -168,6 +173,27 @@
168
173
  $(window).on("resize", function () {
169
174
  layer.full(sindex);
170
175
  });
176
+ }else if (obj.event === 'add_month') { // 监听添加操作
177
+ from_weekly = true;
178
+ var content = miniPage.getHrefContent('/missions/plans/new_month');
179
+ var openWH = miniPage.getOpenWidthHeight();
180
+ sindex = layer.open({
181
+ title: '添加计划',
182
+ type: 1,
183
+ shade: 0.2,
184
+ maxmin: true,
185
+ shadeClose: true,
186
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
187
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
188
+ content: content,
189
+ success: function (layero, index) {
190
+ // 重新渲染弹层中的下拉选择框select
191
+ form.render('select');
192
+ }
193
+ });
194
+ $(window).on("resize", function () {
195
+ layer.full(sindex);
196
+ });
171
197
  }
172
198
  });
173
199
  table.on('tool(newWeeklyTable)', function (obj) {
@@ -60,6 +60,7 @@
60
60
  ]
61
61
  ],
62
62
  limit: 20,
63
+ limits: [10,15,20,30,40,50,60,70,80,90],
63
64
  page: true
64
65
  });
65
66
  });
@@ -6,8 +6,8 @@ json.data do
6
6
  json.area d.areas.present? ? d.areas.pluck(:name).join("、") : ''
7
7
  json.business_a d.businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @a_clazz&.id).count
8
8
  json.business_b d.businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @b_clazz&.id).count
9
- json.goal d.businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.stage_id in (?)", @step_ids).sum(:total_amount).round(2)
10
- json.return_money d.businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").sum("educode_sales_businesses.return_money")
9
+ json.goal d.businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id != ? AND educode_sales_follow_ups.stage_id in (?)", @x, @step_ids).sum(:total_amount).round(2)
10
+ json.return_money d.businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id != ?", @x).sum("educode_sales_businesses.return_money").round(2)
11
11
  json.a_clazz_id @a_clazz&.id
12
12
  json.b_clazz_id @b_clazz&.id
13
13
  end
@@ -62,6 +62,7 @@
62
62
  ]
63
63
  ],
64
64
  limit: 20,
65
+ limits: [10,15,20,30,40,50,60,70,80,90],
65
66
  page: true
66
67
  });
67
68
 
@@ -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)
@@ -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,13 +65,14 @@
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">
@@ -226,7 +227,7 @@
226
227
  },
227
228
  {
228
229
  title: '操作',
229
- minWidth: 160,
230
+ minWidth: 170,
230
231
  toolbar: '#currentTableBar',
231
232
  align: "center",
232
233
  fixed: 'right'
@@ -235,6 +236,7 @@
235
236
  ],
236
237
 
237
238
  limit: 20,
239
+ limits: [10,15,20,30,40,50,60,70,80,90],
238
240
  page: true,
239
241
  done: function (res) {
240
242
  drowpdwonRender()
@@ -260,7 +262,7 @@
260
262
  edit(id);
261
263
  break;
262
264
  case 'delete':
263
- deleteBusiness(id, elem.data['name']);
265
+ deleteBusiness(id, elem.data('name'));
264
266
  break;
265
267
  }
266
268
  }
@@ -347,7 +349,6 @@
347
349
  // 监听搜索操作
348
350
  form.on('submit(search_teachers)', function (data) {
349
351
  search = data.field
350
- console.log(search);
351
352
  table.reload('teachers_table', {
352
353
  page: {
353
354
  curr: 1
@@ -391,6 +392,22 @@
391
392
  $(window).on("resize", function () {
392
393
  layer.full(index);
393
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
+ });
394
411
  } else if (obj.event === 'search_new') { // 搜索添加
395
412
  content = miniPage.getHrefContent('/missions/teachers/search_new');
396
413
  openWH = miniPage.getOpenWidthHeight();
@@ -12,9 +12,8 @@ json.data do
12
12
  json.teacher_follows_count d.teacher_follows_count
13
13
  json.activities_count d.activity_teachers_count
14
14
  json.source EducodeSales::Common.teacher_source_name[d.source_id]
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 : ''
17
- json.courses_count d.user_id ? Course.joins(:course_members).where(course_members: {user_id: d.user_id}).distinct("course_id").count : 0
15
+ json.attitude d.follow_up&.attitude&.name
16
+ json.courses_count d.user_id ? Course.joins(:course_members).where(course_members: {user_id: d.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).count : 0
18
17
  json.actives d.actives
19
18
  json.students d.students_count
20
19
  json.regist_at d.user.present? ? d.user.created_on.to_s(:date) : ''
@@ -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
  }
@@ -8,8 +8,9 @@ json.data do
8
8
  json.course_build EducodeSales::Common.find_by(id: d.course_build_id).name
9
9
  json.contact EducodeSales::Common.find_by(id: d.follow_id).name
10
10
  json.staff d.staff.user.real_name
11
- json.students_count d.students_count
12
- json.courses_count Course.joins(:course_members).where(course_members: {user_id: d.teacher&.user_id}).distinct("course_id").count
11
+ json.students_count d.teacher&.students_count
12
+ # json.courses_count Course.joins(:course_members).where(course_members: {user_id: d.teacher&.user_id}).distinct("course_id").count
13
+ json.courses_count Course.joins(:course_members).where(course_members: {user_id: d.teacher&.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).count
13
14
  json.evaluates_count d.evaluates_count
14
15
  json.course_shixuns_count d.course_shixuns_count
15
16
  json.shixuns_count d.shixuns_count
@@ -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,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.7'
2
+ VERSION = '0.4.1'
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.7
4
+ version: 0.4.1
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-09 00:00:00.000000000 Z
11
+ date: 2021-10-16 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
@@ -327,6 +332,7 @@ files:
327
332
  - db/migrate/20210915061738_add_students_count_teacher_follow_ups.rb
328
333
  - db/migrate/20211009031109_add_tel_key_peoples.rb
329
334
  - db/migrate/20211009063423_add_source_businesses.rb
335
+ - db/migrate/20211013060712_create_educode_sales_assign_follow_ups.rb
330
336
  - lib/educode_sales.rb
331
337
  - lib/educode_sales/engine.rb
332
338
  - lib/educode_sales/version.rb