educode_sales 0.3.6 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0dad803de8e5c346726374b62fff7d15ed441d7393beb39268ae2746ab65ea3b
4
- data.tar.gz: cd2a06c5f56011854313af1a525dee5735ef238c04da6889d0bf445834fe54e3
3
+ metadata.gz: c5f62ecb1fb5d2f9b42761618eae0525dd789bb69fc2522c108749eacfa26f05
4
+ data.tar.gz: a0ec504c642dfe71bc8bd513140d96bc82b9de444a48945ee245bb812bc4884b
5
5
  SHA512:
6
- metadata.gz: f0f970f1540da457f572d3718a3b1faf9e98647b77cd72eeee88a051e67bbee56e4122291298aa17558bb23ed39b7cef20de569f9d5d2003a26a6a5aebe9dd61
7
- data.tar.gz: 620d7e7a384d8aaa2da76570ab1c471ee5d49700dd85ae68d10ea3920e836e28526021c595d87e8fb47c4c47ebcb66b43009f931ed89736fb96bd58549f39ff6
6
+ metadata.gz: d27c931c74c8ca700c4710d0b3fbd702152adbeb780de114324a07b4bca8de66cbc1b1f13fc82d11d873ec43ae2c8eb83422c98169e47c3c76f997e58c73a83a
7
+ data.tar.gz: bdd71543da8fc7cf0687374af51870da0c2950ebb10d7db232af4a58b8f26e13c1b31777b95d1c636125a8dbcc17b79317bcdcd682242080d5783604f332d155
@@ -9,6 +9,18 @@ module EducodeSales
9
9
  format.html do
10
10
  common = Common.find_by(clazz: 'staff_type', name: '销售')
11
11
  @staffs = Staff.joins(:user).where(job_type: common.id).map { |d| [d.user.real_name, d.id]}
12
+ @more = can?(:create, EducodeSales::SalePlan) || can?(:update, EducodeSales::Business) || can?(:destroy, EducodeSales::Business)
13
+ gon.menus = []
14
+ if can?(:create, EducodeSales::SalePlan)
15
+ gon.menus << { title: '添加周计划', event: 'week' }
16
+ gon.menus << { title: '添加月计划', event: 'month' }
17
+ end
18
+ if can?(:update, EducodeSales::Business)
19
+ gon.menus << { title: '编辑', event: 'edit' }
20
+ end
21
+ if can?(:destroy, EducodeSales::Business)
22
+ gon.menus << { title: '删除', event: 'delete' }
23
+ end
12
24
  end
13
25
  format.json do
14
26
  if @current_admin.is_admin?
@@ -25,7 +37,7 @@ module EducodeSales
25
37
  @businesses = Business
26
38
  end
27
39
  end
28
-
40
+
29
41
  @businesses = @businesses
30
42
  if params[:q].present? && params[:q][:name].present?
31
43
  @businesses = @businesses.where("educode_sales_businesses.name like ?", "%#{params[:q][:name]}%")
@@ -43,12 +55,12 @@ module EducodeSales
43
55
  ").where("educode_sales_follow_ups.clazz_id = ?", params[:q][:business_type])
44
56
  end
45
57
  if params[:q].present? && params[:q][:business_step].present?
46
- @businesses = @businesses.joins("
58
+ @businesses = @businesses.joins("
47
59
  JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
48
60
  ").where("educode_sales_follow_ups.stage_id = ?", params[:q][:business_step])
49
61
  end
50
62
  if params[:q].present? && params[:q][:place_id].present?
51
- @businesses = @businesses.joins("
63
+ @businesses = @businesses.joins("
52
64
  JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
53
65
  ").where("educode_sales_follow_ups.place_id = ?", params[:q][:place_id])
54
66
  end
@@ -74,12 +86,12 @@ module EducodeSales
74
86
  end
75
87
 
76
88
  @business_count = @businesses.count
77
-
89
+
78
90
  @businesses = @businesses.select("
79
91
  educode_sales_businesses.*,
80
92
  last_follow.invitation_at,
81
93
  last_follow.reception_at,
82
- last_follow.total_amount").joins("
94
+ last_follow.total_amount").joins("
83
95
  LEFT JOIN educode_sales_follow_ups AS last_follow ON educode_sales_businesses.last_follow_up_id = last_follow.id
84
96
  ").page(params[:page]).per(params[:limit])
85
97
  end
@@ -88,7 +100,7 @@ module EducodeSales
88
100
 
89
101
  def create
90
102
  department = Department.find(params[:department_id])
91
- business = @current_admin.businesses.build(name: params[:name], department_id: department.id)
103
+ business = @current_admin.businesses.build(name: params[:name], department_id: department.id, source: params[:source])
92
104
  if business.save
93
105
  render_success
94
106
  else
@@ -110,7 +122,7 @@ module EducodeSales
110
122
  def update
111
123
  business = Business.find(params[:id])
112
124
  department = Department.find(params[:department_id])
113
- if business.update(name: params[:name], department_id: department.id)
125
+ if business.update(name: params[:name], department_id: department.id, source: params[:source])
114
126
  render_success
115
127
  else
116
128
  render_failure business
@@ -151,7 +151,7 @@ module EducodeSales
151
151
  end
152
152
 
153
153
  def teacher_params
154
- params.permit(:professional_title, :job, :attitude_id, :sex, :birth_date, :remark)
154
+ params.permit(:professional_title, :job, :attitude_id, :sex, :birth_date, :remark, :tel)
155
155
  end
156
156
  end
157
157
  end
@@ -23,7 +23,7 @@ module EducodeSales
23
23
 
24
24
  private
25
25
  def key_params
26
- params.permit(:attitude_id, :sex, :birth_date, :remark)
26
+ params.permit(:attitude_id, :sex, :birth_date, :remark, :tel)
27
27
  end
28
28
  end
29
29
  end
@@ -59,7 +59,7 @@ module EducodeSales
59
59
  def create
60
60
  plan = @current_admin.sale_plans.build(plan_params)
61
61
  plan.month = params["month"] + "-1"
62
- plan.business_id = @current_admin.businesses.find(params[:business_id]).id
62
+ plan.business = @current_admin.businesses.find_by(id: params[:business_id])
63
63
  if plan.save
64
64
  render_success
65
65
  else
@@ -21,6 +21,18 @@ module EducodeSales
21
21
  def index
22
22
  respond_to do |format|
23
23
  format.html do
24
+ @more = can?(:create, EducodeSales::OperationPlan) || can?(:update, EducodeSales::Teacher) || can?(:destroy, EducodeSales::Teacher)
25
+ gon.menus = []
26
+ if can?(:create, EducodeSales::OperationPlan)
27
+ gon.menus << { title: '添加周计划', event: 'week' }
28
+ gon.menus << { title: '添加月计划', event: 'month' }
29
+ end
30
+ if can?(:update, EducodeSales::Teacher)
31
+ gon.menus << { title: '编辑', event: 'edit' }
32
+ end
33
+ if can?(:destroy, EducodeSales::Teacher)
34
+ gon.menus << { title: '删除', event: 'delete' }
35
+ end
24
36
  end
25
37
  format.json do
26
38
  if @current_admin.is_admin?
@@ -1,7 +1,7 @@
1
1
  module EducodeSales
2
2
  class KeyPerson < ApplicationRecord
3
3
  belongs_to :teacher
4
- belongs_to :attitude, class_name: 'Common'
4
+ belongs_to :attitude, class_name: 'Common', optional: true
5
5
  belongs_to :follow_up, counter_cache: true
6
6
 
7
7
  enum sex: ['男', '女']
@@ -11,6 +11,14 @@
11
11
  <label class="layui-form-label required">单位部门</label>
12
12
  <div class="layui-input-block" id="department" style="width: 300px;"></div>
13
13
  </div>
14
+ <br>
15
+ <div class="layui-inline" style="padding-top: 20px">
16
+ <label class="layui-form-label ">商机来源</label>
17
+ <input id="source" type="text" name="source" autocomplete="off" class="layui-input" value="<%=@business.source %>" style="width: 300px;" placeholder="请输入商机来源">
18
+ </div>
19
+ <div class="layui-inline" style="padding-top: 20px">
20
+ <p style="padding-left: 40px">请填写提供本商机的人名(如‘张明’);如果为非头歌用户,请增加单位信息(如‘张明,华为公司’)</p>
21
+ </div>
14
22
  <div class="layui-form-item m-t-20">
15
23
  <div class="layui-input-block">
16
24
  <button class="layui-btn layui-btn-normal" lay-submit lay-filter="edit_business">提交</button>
@@ -64,14 +72,17 @@
64
72
  } else {
65
73
  request.authPut("missions/businesses/" + parent.id, {
66
74
  department_id: department.getValue() || department_id,
67
- name: data.field.name
75
+ name: data.field.name,
76
+ source: data.field.source
68
77
  }, function (res) {
69
78
  if (res.success == false) {
70
79
  layer.alert(res.msg)
71
80
  } else {
72
81
  layer.close(parent.sindex);
73
82
  parent.layer.close(parent.layer.getFrameIndex(window.name))
74
- parent.table.reload('businesses_table')
83
+ parent.table.reload('businesses_table', {done: function() {
84
+ parent.drowpdwonRender()
85
+ }});
75
86
  }
76
87
  })
77
88
  }
@@ -16,9 +16,15 @@
16
16
  <br>
17
17
  <div class="layui-inline">
18
18
  <label class="layui-form-label required">项目类型</label>
19
- <div class="layui-input-inline">
20
- <%= select_tag "clazz_id", options_for_select(@clazz, @follow_up.clazz_id), class: 'required' %>
21
- </div>
19
+ <%if EducodeSales::FollowUp.where(business_id: @follow_up.business.id,clazz_id: EducodeSales::Common.find_by(name: "O类").id).count >= 2 %>
20
+ <div class="layui-input-inline">
21
+ <%= select_tag "clazz_id", options_for_select([['O类',EducodeSales::Common.find_by(name: "O类").id]]),:disabled => true, class: 'required' %>
22
+ </div>
23
+ <%else %>
24
+ <div class="layui-input-inline">
25
+ <%= select_tag "clazz_id", options_for_select(@clazz, @follow_up&.clazz_id), class: 'required' %>
26
+ </div>
27
+ <%end %>
22
28
  </div>
23
29
  <div class="layui-inline">
24
30
  <label class="layui-form-label required">项目阶段</label>
@@ -1,4 +1,4 @@
1
- <div class="min-height-table">
1
+ <div class="min-height-table edit-table">
2
2
  <div style="margin: 10px 10px 10px 10px">
3
3
  <form class="layui-form layui-form-pane" lay-filter="search_form">
4
4
  <div class="layui-form-item">
@@ -71,15 +71,11 @@
71
71
  </div>
72
72
  </script>
73
73
  <script type="text/html" id="currentTableBar">
74
- <% if can? :create, EducodeSales::SalePlan %>
75
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="addWeek">添加周计划</a>
76
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="addMonth">添加月计划</a>
74
+ <% if can? :add_follow, EducodeSales::Business %>
75
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
77
76
  <% end %>
78
- <% if can? :update, EducodeSales::Business %>
79
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
80
- <% end %>
81
- <% if can? :destroy, EducodeSales::SalePlan %>
82
- <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
77
+ <% if @more %>
78
+ <a class="layui-btn-xs data-count-edit more-btn" data-name={{d.name}} data-id={{d.id}}>更多<i class="layui-icon layui-icon-down layui-nav-more"></i></a>
83
79
  <% end %>
84
80
  </script>
85
81
  <script type="text/html" id="show_keys">
@@ -91,16 +87,17 @@
91
87
 
92
88
 
93
89
  <script>
94
- layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate'], function () {
90
+ layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate', 'dropdown'], function () {
95
91
  var $ = layui.jquery,
96
92
  form = layui.form,
97
93
  request = layui.request,
98
94
  miniPage = layui.miniPage,
95
+ dropdown = layui.dropdown,
99
96
  laydate = layui.laydate;
100
97
 
101
98
  laydate.render({
102
99
  elem: '#date',
103
- range: true
100
+ range: true
104
101
  });
105
102
 
106
103
  table = layui.table;
@@ -183,6 +180,11 @@
183
180
  width: 110,
184
181
  title: '渠道'
185
182
  },
183
+ {
184
+ field: 'source',
185
+ width: 110,
186
+ title: '商机来源'
187
+ },
186
188
  {
187
189
  field: 'last_follow_person',
188
190
  width: 120,
@@ -190,7 +192,7 @@
190
192
  },
191
193
  {
192
194
  title: '操作',
193
- minWidth: 300,
195
+ minWidth: 160,
194
196
  toolbar: '#currentTableBar',
195
197
  align: "center",
196
198
  fixed: 'right'
@@ -200,9 +202,105 @@
200
202
 
201
203
  limit: 20,
202
204
  page: true,
203
- skin: 'line'
205
+ skin: 'line',
206
+ done: function (res) {
207
+ drowpdwonRender()
208
+ }
209
+
204
210
  });
205
211
 
212
+ var dropmenu = gon.menus;
213
+
214
+ drowpdwonRender = function() {
215
+ dropdown.render({
216
+ elem: '.more-btn',
217
+ data: dropmenu,
218
+ click: function(data, othis){
219
+ var elem = $(this.elem);
220
+ id = elem.data('id');
221
+ switch (data.event) {
222
+ case 'week':
223
+ week(id);
224
+ break;
225
+ case 'month':
226
+ month(id);
227
+ break;
228
+ case 'edit':
229
+ edit(id);
230
+ break;
231
+ case 'delete':
232
+ deleteBusiness(id, elem.data['name']);
233
+ break;
234
+ }
235
+ }
236
+ });
237
+ }
238
+
239
+ function week(id) {
240
+ var content = miniPage.getHrefContent('/missions/plans/new_week?business_id=' + id);
241
+ var openWH = miniPage.getOpenWidthHeight();
242
+
243
+ sindex = layer.open({
244
+ title: '添加周计划',
245
+ type: 1,
246
+ shade: 0.2,
247
+ maxmin: true,
248
+ shadeClose: true,
249
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
250
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
251
+ content: content
252
+ });
253
+ $(window).on("resize", function () {
254
+ layer.full(sindex);
255
+ });
256
+ }
257
+
258
+ function edit(id) {
259
+ var content = miniPage.getHrefContent('/missions/businesses/' + id + '/edit');
260
+ var openWH = miniPage.getOpenWidthHeight();
261
+ sindex = layer.open({
262
+ title: '编辑',
263
+ type: 1,
264
+ shade: 0.2,
265
+ maxmin: true,
266
+ shadeClose: true,
267
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
268
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
269
+ content: content
270
+ });
271
+ $(window).on("resize", function () {
272
+ layer.full(sindex);
273
+ });
274
+ }
275
+
276
+ function month(id) {
277
+ var content = miniPage.getHrefContent('/missions/plans/new_month?business_id=' + id);
278
+ var openWH = miniPage.getOpenWidthHeight();
279
+ sindex = layer.open({
280
+ title: '添加月计划',
281
+ type: 1,
282
+ shade: 0.2,
283
+ maxmin: true,
284
+ shadeClose: true,
285
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
286
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
287
+ content: content
288
+ });
289
+ $(window).on("resize", function () {
290
+ layer.full(sindex);
291
+ });
292
+ }
293
+
294
+ function deleteBusiness(id, name) {
295
+ layer.confirm('确定删除' + name, function (index) {
296
+ request.delete('missions/businesses/' + id, {}, function (res) {
297
+ layer.close(index);
298
+ table.reload("businesses_table")
299
+ })
300
+ });
301
+ }
302
+
303
+
206
304
  var sort = {}, search = {};
207
305
  table.on('sort(businesses_table)', function (obj) {
208
306
  sort.field = obj.field;
@@ -265,7 +363,27 @@
265
363
  table.on('tool(businesses_table)', function (obj) {
266
364
  var data = obj.data;
267
365
  id = data.id
268
- if (obj.event === 'edit') {
366
+ if (obj.event === 'add_event') { // 监听添加操作
367
+ business_id = data.id
368
+ var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + data.id);
369
+ var openWH = miniPage.getOpenWidthHeight();
370
+ sale_plan_index = layer.open({
371
+ title: '添加商机跟进记录',
372
+ type: 1,
373
+ shade: 0.2,
374
+ maxmin: true,
375
+ shadeClose: true,
376
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
377
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
378
+ content: content,
379
+ success: function (layero, index) {
380
+ form.render('select');
381
+ }
382
+ });
383
+ $(window).on("resize", function () {
384
+ layer.full(sale_plan_index);
385
+ });
386
+ } else if (obj.event === 'edit') {
269
387
  var content = miniPage.getHrefContent('/missions/businesses/' + id + '/edit');
270
388
  var openWH = miniPage.getOpenWidthHeight();
271
389
  sindex = layer.open({
@@ -289,7 +407,28 @@
289
407
  table.reload("businesses_table")
290
408
  })
291
409
  });
292
- } else if (obj.event === 'addWeek') {
410
+ }else if (obj.event === 'add_follow') { // 监听添加操作
411
+ console.log(parent.business_id);
412
+ business_id = parent.business_id
413
+ var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + parent.id);
414
+ var openWH = miniPage.getOpenWidthHeight();
415
+ sale_plan_index = layer.open({
416
+ title: '添加商机跟进记录',
417
+ type: 1,
418
+ shade: 0.2,
419
+ maxmin: true,
420
+ shadeClose: true,
421
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
422
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
423
+ content: content,
424
+ success: function (layero, index) {
425
+ form.render('select');
426
+ }
427
+ });
428
+ $(window).on("resize", function () {
429
+ layer.full(index);
430
+ });
431
+ }else if (obj.event === 'addWeek') {
293
432
  var content = miniPage.getHrefContent('/missions/plans/new_week?business_id=' + obj.data.id);
294
433
  var openWH = miniPage.getOpenWidthHeight();
295
434
 
@@ -16,6 +16,7 @@ json.data do
16
16
  json.return_money d.return_money
17
17
  json.place d.last_follow_up&.place&.name
18
18
  json.last_follow_person d.last_follow_up.present? ? d.last_follow_up.staff.user.real_name : ''
19
+ json.source d.source
19
20
  end
20
21
  end
21
22
  json.code 0
@@ -10,6 +10,14 @@
10
10
  <label class="layui-form-label required">单位部门</label>
11
11
  <div class="layui-input-block" id="add_department" style="width: 300px;"></div>
12
12
  </div>
13
+ <br>
14
+ <div class="layui-inline" style="padding-top: 20px">
15
+ <label class="layui-form-label ">商机来源</label>
16
+ <input type="text" name="source" autocomplete="off" class="layui-input" style="width: 300px;" placeholder="请输入商机来源">
17
+ </div>
18
+ <div class="layui-inline" style="padding-top: 20px">
19
+ <p style="padding-left: 40px">请填写提供本商机的人名(如‘张明’);如果为非头歌用户,请增加单位信息(如‘张明,华为公司’)</p>
20
+ </div>
13
21
  <div class="layui-form-item m-t-20">
14
22
  <div class="layui-input-block">
15
23
  <button class="layui-btn layui-btn-normal" lay-submit lay-filter="create_business">提交</button>
@@ -62,7 +70,9 @@
62
70
  }
63
71
  request.authPost("missions/businesses", {
64
72
  department_id: add_department.getValue(),
65
- name: data.field.name
73
+ name: data.field.name,
74
+ source: data.field.source
75
+
66
76
  }, function (res) {
67
77
  if (res.success == false) {
68
78
  layer.alert(res.msg)
@@ -16,9 +16,15 @@
16
16
  <br>
17
17
  <div class="layui-inline">
18
18
  <label class="layui-form-label required">项目类型</label>
19
+ <%if @last_follow_up&.clazz&.name == "O类" %>
19
20
  <div class="layui-input-inline">
20
- <%= select_tag "clazz_id", options_for_select(@clazz, @last_follow_up&.clazz_id), class: 'required' %>
21
+ <%= select_tag "clazz_id", options_for_select([['O类',EducodeSales::Common.find_by(name: "O类").id]]),:disabled => true, class: 'required' %>
21
22
  </div>
23
+ <%else %>
24
+ <div class="layui-input-inline">
25
+ <%= select_tag "clazz_id", options_for_select(@clazz, @last_follow_up&.clazz_id), class: 'required' %>
26
+ </div>
27
+ <%end %>
22
28
  </div>
23
29
  <div class="layui-inline">
24
30
  <label class="layui-form-label required">项目阶段</label>
@@ -112,7 +118,7 @@
112
118
  request = layui.request,
113
119
  laydate = layui.laydate,
114
120
  $ = layui.$;
115
-
121
+
116
122
  laydate.render({
117
123
  elem: '#invitation_at_add'
118
124
  })
@@ -4,11 +4,12 @@ json.data do
4
4
  json.name d.teacher.name
5
5
  json.professional_title d.professional_title
6
6
  json.job d.job
7
- json.attitude_id d.attitude_id
8
- json.attitude d.attitude.name
7
+ json.attitude_id d.attitude_id.present? ? d.attitude_id : ''
8
+ json.attitude d.attitude&.name
9
9
  json.sex d.sex
10
10
  json.birth_date d.birth_date
11
11
  json.remark d.remark
12
+ json.tel d.tel
12
13
  end
13
14
  end
14
15
 
@@ -9,7 +9,7 @@
9
9
  <div class="layui-inline">
10
10
  <label class="layui-form-label required">商机</label>
11
11
  <div class="layui-input-inline">
12
- <%= select_tag "business_id", options_for_select(@businesses, @business&.id), class: 'required' %>
12
+ <%= select_tag "business_id", options_for_select(@businesses, @business&.id), {"lay-verify": "required", include_blank: true} %>
13
13
  </div>
14
14
  </div>
15
15
  <div class="layui-form-item layui-form-text">
@@ -76,7 +76,7 @@
76
76
  parent.table.reload('newmonthlyTable')
77
77
  } else if (parent.from_monthly) {
78
78
  parent.table.reload('monthlyTable')
79
- }
79
+ }
80
80
  else {
81
81
  parent.table.reload('businesses_table')
82
82
  }
@@ -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
 
@@ -75,16 +75,22 @@
75
75
  <table class="layui-hide" id="teachers_table" style="min-height: 300px;" lay-filter="teachers_table"></table>
76
76
  </div>
77
77
  <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>
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>-->
81
+ <%# 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>-->
84
+ <%# 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
+ <% if can? :add_follow, EducodeSales::Teacher %>
89
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
81
90
  <% 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>
91
+ <% if @more %>
92
+ <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
93
  <% 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
94
  </script>
89
95
  <script type="text/html" id="name">
90
96
  {{# if (d.login) { }}
@@ -112,6 +118,7 @@
112
118
  var $ = layui.jquery,
113
119
  form = layui.form,
114
120
  request = layui.request,
121
+ dropdown = layui.dropdown,
115
122
  miniPage = layui.miniPage,
116
123
  laydate = layui.laydate;
117
124
 
@@ -219,7 +226,7 @@
219
226
  },
220
227
  {
221
228
  title: '操作',
222
- minWidth: 300,
229
+ minWidth: 160,
223
230
  toolbar: '#currentTableBar',
224
231
  align: "center",
225
232
  fixed: 'right'
@@ -229,8 +236,100 @@
229
236
 
230
237
  limit: 20,
231
238
  page: true,
239
+ done: function (res) {
240
+ drowpdwonRender()
241
+ }
232
242
  });
243
+ var dropmenu = gon.menus;
244
+
245
+ drowpdwonRender = function() {
246
+ dropdown.render({
247
+ elem: '.more-btn',
248
+ data: dropmenu,
249
+ click: function(data, othis){
250
+ var elem = $(this.elem);
251
+ id = elem.data('id');
252
+ switch (data.event) {
253
+ case 'week':
254
+ week(id);
255
+ break;
256
+ case 'month':
257
+ month(id);
258
+ break;
259
+ case 'edit':
260
+ edit(id);
261
+ break;
262
+ case 'delete':
263
+ deleteBusiness(id, elem.data['name']);
264
+ break;
265
+ }
266
+ }
267
+ });
268
+ }
269
+
270
+ function week(id) {
271
+ var content = miniPage.getHrefContent('/missions/operation_plans/new_week?teacher_id=' + id);
272
+ var openWH = miniPage.getOpenWidthHeight();
273
+
274
+ teacherindex1 = layer.open({
275
+ title: '添加周计划',
276
+ type: 1,
277
+ shade: 0.2,
278
+ maxmin: true,
279
+ shadeClose: true,
280
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
281
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
282
+ content: content
283
+ });
284
+ $(window).on("resize", function () {
285
+ layer.full(sindex);
286
+ });
287
+ }
288
+
289
+ function edit(id) {
290
+ var content = miniPage.getHrefContent('/missions/teachers/' + id + '/edit');
291
+ var openWH = miniPage.getOpenWidthHeight();
292
+ sindex = layer.open({
293
+ title: '编辑',
294
+ type: 1,
295
+ shade: 0.2,
296
+ maxmin: true,
297
+ shadeClose: true,
298
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
299
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
300
+ content: content
301
+ });
302
+ $(window).on("resize", function () {
303
+ layer.full(sindex);
304
+ });
305
+ }
306
+
307
+ function month(id) {
308
+ var content = miniPage.getHrefContent('/missions/operation_plans/new_month?teacher_id=' + id);
309
+ var openWH = miniPage.getOpenWidthHeight();
310
+ teacherindex2 = layer.open({
311
+ title: '添加月计划',
312
+ type: 1,
313
+ shade: 0.2,
314
+ maxmin: true,
315
+ shadeClose: true,
316
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
317
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
318
+ content: content
319
+ });
320
+ $(window).on("resize", function () {
321
+ layer.full(sindex);
322
+ });
323
+ }
233
324
 
325
+ function deleteBusiness(id, name) {
326
+ layer.confirm('确定删除' + name, function (index) {
327
+ request.delete('missions/teachers/' + id, {}, function (res) {
328
+ layer.close(index);
329
+ table.reload("teachers_table")
330
+ })
331
+ });
332
+ }
234
333
 
235
334
  var sort = {}, search = {};
236
335
  table.on('sort(teachers_table)', function (obj) {
@@ -276,7 +375,7 @@
276
375
  * toolbar事件监听
277
376
  */
278
377
  table.on('toolbar(teachers_table)', function (obj) {
279
- if (obj.event === 'add') { // 手动添加
378
+ if (obj.event === 'add') { // 手动添加
280
379
  var content = miniPage.getHrefContent('/missions/teachers/new');
281
380
  var openWH = miniPage.getOpenWidthHeight();
282
381
  index = layer.open({
@@ -319,12 +418,12 @@
319
418
  table.on('tool(teachers_table)', function (obj) {
320
419
  var data = obj.data;
321
420
  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: '编辑',
421
+ if (obj.event === 'add_event') { // 监听添加操作
422
+ teacher_id = data.id
423
+ var content = miniPage.getHrefContent('/missions/teachers/new_follow_record?id=' + data.id);
424
+ var openWH = miniPage.getOpenWidthHeight();
425
+ sale_plan_index = layer.open({
426
+ title: '添加教师跟进记录',
328
427
  type: 1,
329
428
  shade: 0.2,
330
429
  maxmin: true,
@@ -332,16 +431,13 @@
332
431
  area: [openWH[0] + 'px', openWH[1] + 'px'],
333
432
  offset: [openWH[2] + 'px', openWH[3] + 'px'],
334
433
  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
- // },
434
+ success: function (layero, index) {
435
+ form.render('select');
436
+ }
340
437
  });
341
438
  $(window).on("resize", function () {
342
- layer.full(sindex);
439
+ layer.full(sale_plan_index);
343
440
  });
344
- return false;
345
441
  } else if (obj.event === 'delete') {
346
442
  layer.confirm('确定删除' + data.name, function (index) {
347
443
  request.delete('missions/teachers/' + data.id, {}, function (res) {
@@ -156,6 +156,7 @@
156
156
  table.reload('activities_table');
157
157
  table.reload('teachers_table');
158
158
  layer.close(parent.index)
159
+ layer.close(parent.sindex)
159
160
  }
160
161
  })
161
162
  return false;
@@ -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
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '0.3.6'
2
+ VERSION = '0.3.7'
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.3.7
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-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -325,6 +325,8 @@ files:
325
325
  - db/migrate/20210913070728_create_educode_sales_activity_teachers.rb
326
326
  - db/migrate/20210913071607_create_educode_sales_course_subjects.rb
327
327
  - db/migrate/20210915061738_add_students_count_teacher_follow_ups.rb
328
+ - db/migrate/20211009031109_add_tel_key_peoples.rb
329
+ - db/migrate/20211009063423_add_source_businesses.rb
328
330
  - lib/educode_sales.rb
329
331
  - lib/educode_sales/engine.rb
330
332
  - lib/educode_sales/version.rb