educode_sales 0.3.5 → 0.3.9
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 +5 -5
- data/app/assets/javascripts/educode_sales/extent/xm-select.js +8 -0
- data/app/assets/stylesheets/educode_sales/public.css +2 -1
- data/app/controllers/educode_sales/businesses_controller.rb +26 -10
- data/app/controllers/educode_sales/follow_ups_controller.rb +10 -1
- data/app/controllers/educode_sales/home_controller.rb +10 -1
- data/app/controllers/educode_sales/import_teachers_controller.rb +68 -0
- data/app/controllers/educode_sales/key_person_controller.rb +1 -1
- data/app/controllers/educode_sales/places_controller.rb +1 -0
- data/app/controllers/educode_sales/plans_controller.rb +1 -1
- data/app/controllers/educode_sales/sale_trends_controller.rb +8 -6
- data/app/controllers/educode_sales/sales_controller.rb +1 -0
- data/app/controllers/educode_sales/teachers_controller.rb +17 -5
- data/app/models/educode_sales/assign_follow_up.rb +6 -0
- data/app/models/educode_sales/follow_up.rb +1 -0
- data/app/models/educode_sales/key_person.rb +1 -1
- data/app/views/educode_sales/activities/edit.html.erb +1 -2
- data/app/views/educode_sales/activities/index.html.erb +38 -18
- data/app/views/educode_sales/activities/new.html.erb +1 -1
- data/app/views/educode_sales/activities/show_teachers.html.erb +12 -12
- data/app/views/educode_sales/businesses/edit.html.erb +15 -4
- data/app/views/educode_sales/businesses/edit_follow_record.html.erb +54 -6
- data/app/views/educode_sales/businesses/edit_plan.html.erb +4 -4
- data/app/views/educode_sales/businesses/index.html.erb +169 -23
- data/app/views/educode_sales/businesses/index.json.jbuilder +4 -0
- data/app/views/educode_sales/businesses/new.html.erb +13 -3
- data/app/views/educode_sales/businesses/new_follow_record.html.erb +53 -16
- data/app/views/educode_sales/businesses/show_follow.html.erb +25 -19
- data/app/views/educode_sales/businesses/show_follow_record.html.erb +7 -1
- data/app/views/educode_sales/businesses/show_keys.html.erb +1 -1
- data/app/views/educode_sales/commons/edit.html.erb +3 -4
- data/app/views/educode_sales/commons/index.html.erb +4 -4
- data/app/views/educode_sales/commons/new.html.erb +1 -1
- data/app/views/educode_sales/follow_ups/teachers.json.jbuilder +3 -2
- data/app/views/educode_sales/home/sales_staff.json.jbuilder +9 -0
- data/app/views/educode_sales/operation_plans/_monthPlan.html.erb +9 -9
- data/app/views/educode_sales/operation_plans/_monthly.html.erb +10 -9
- data/app/views/educode_sales/operation_plans/_weekPlan.html.erb +9 -8
- data/app/views/educode_sales/operation_plans/_weekly.html.erb +11 -9
- data/app/views/educode_sales/operation_plans/edit_month.html.erb +1 -1
- data/app/views/educode_sales/operation_plans/edit_week.html.erb +2 -1
- data/app/views/educode_sales/operation_plans/new_month.html.erb +1 -1
- data/app/views/educode_sales/operation_plans/new_monthly.html.erb +7 -7
- data/app/views/educode_sales/operation_plans/new_week.html.erb +1 -1
- data/app/views/educode_sales/operation_plans/new_weekly.html.erb +7 -7
- data/app/views/educode_sales/operation_reports/audit.html.erb +3 -3
- data/app/views/educode_sales/operation_reports/edit.html.erb +34 -8
- data/app/views/educode_sales/operation_reports/show.html.erb +6 -6
- data/app/views/educode_sales/operations/trends.html.erb +2 -2
- data/app/views/educode_sales/places/edit.html.erb +1 -3
- data/app/views/educode_sales/places/index.html.erb +6 -6
- data/app/views/educode_sales/places/index.json.jbuilder +3 -3
- data/app/views/educode_sales/places/new.html.erb +1 -2
- data/app/views/educode_sales/plans/_monthPlan.html.erb +9 -9
- data/app/views/educode_sales/plans/_monthly.html.erb +9 -8
- data/app/views/educode_sales/plans/_weekPlan.html.erb +9 -8
- data/app/views/educode_sales/plans/_weekly.html.erb +10 -8
- data/app/views/educode_sales/plans/edit_month.html.erb +1 -1
- data/app/views/educode_sales/plans/edit_week.html.erb +1 -1
- data/app/views/educode_sales/plans/edit_weekly.html.erb +7 -7
- data/app/views/educode_sales/plans/new_month.html.erb +3 -3
- data/app/views/educode_sales/plans/new_monthly.html.erb +7 -7
- data/app/views/educode_sales/plans/new_week.html.erb +1 -1
- data/app/views/educode_sales/plans/new_weekly.html.erb +7 -7
- data/app/views/educode_sales/roles/edit.html.erb +2 -3
- data/app/views/educode_sales/roles/index.html.erb +6 -7
- data/app/views/educode_sales/roles/new.html.erb +1 -1
- data/app/views/educode_sales/sale_reports/audit.html.erb +3 -3
- data/app/views/educode_sales/sale_reports/edit.html.erb +33 -7
- data/app/views/educode_sales/sale_reports/show.html.erb +2 -2
- data/app/views/educode_sales/sale_trends/trends.html.erb +2 -2
- data/app/views/educode_sales/sales/index.html.erb +4 -4
- data/app/views/educode_sales/sales/index.json.jbuilder +2 -2
- data/app/views/educode_sales/sales/operations.html.erb +4 -4
- data/app/views/educode_sales/sales/school.html.erb +1 -1
- data/app/views/educode_sales/sales/trends.html.erb +2 -6
- data/app/views/educode_sales/sales/xschool.html.erb +1 -1
- data/app/views/educode_sales/sessions/login.html.erb +2 -2
- data/app/views/educode_sales/staffs/edit.html.erb +1 -1
- data/app/views/educode_sales/staffs/index.html.erb +6 -6
- data/app/views/educode_sales/staffs/new.html.erb +2 -2
- data/app/views/educode_sales/teachers/add_courses.html.erb +4 -5
- data/app/views/educode_sales/teachers/add_event.html.erb +1 -1
- data/app/views/educode_sales/teachers/add_keys.html.erb +58 -13
- data/app/views/educode_sales/teachers/edit.html.erb +6 -4
- data/app/views/educode_sales/teachers/edit_follow_record.html.erb +1 -1
- data/app/views/educode_sales/teachers/import.html.erb +40 -0
- data/app/views/educode_sales/teachers/index.html.erb +151 -38
- data/app/views/educode_sales/teachers/new.html.erb +4 -4
- data/app/views/educode_sales/teachers/new_follow_record.html.erb +1 -1
- data/app/views/educode_sales/teachers/search_new.html.erb +1 -1
- data/app/views/educode_sales/teachers/show_class.html.erb +1 -1
- data/app/views/educode_sales/teachers/show_follow.html.erb +14 -14
- data/app/views/layouts/educode_sales/application.html.erb +14 -14
- data/config/routes.rb +5 -0
- data/db/migrate/20211009031109_add_tel_key_peoples.rb +5 -0
- data/db/migrate/20211009063423_add_source_businesses.rb +5 -0
- data/db/migrate/20211013060712_create_educode_sales_assign_follow_ups.rb +10 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +15 -8
@@ -50,7 +50,7 @@
|
|
50
50
|
<input type="text" class="layui-input" id="date" name="date" placeholder=" - ">
|
51
51
|
</div>
|
52
52
|
</div>
|
53
|
-
<div class="layui-
|
53
|
+
<div class="layui-inline">
|
54
54
|
<button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
|
55
55
|
</button>
|
56
56
|
<button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_bussiness">搜索
|
@@ -71,15 +71,18 @@
|
|
71
71
|
</div>
|
72
72
|
</script>
|
73
73
|
<script type="text/html" id="currentTableBar">
|
74
|
-
<% if can? :
|
75
|
-
|
76
|
-
|
74
|
+
<% if can? :add_follow, EducodeSales::Business %>
|
75
|
+
<% if @current_admin.is_admin %>
|
76
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
|
77
|
+
<% else %>
|
78
|
+
{{# if ( d.assign_follow_ups.length > 0 && d.assign_follow_ups.indexOf(d.current_staff_id) >=0 || (d.assign_follow_ups.length == 0) || (d.current_staff_id == d.staff_id) ) {}}
|
79
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
|
80
|
+
{{# }}}
|
77
81
|
<% end %>
|
78
|
-
|
79
|
-
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
|
82
|
+
|
80
83
|
<% end %>
|
81
|
-
<% if
|
82
|
-
|
84
|
+
<% if @more %>
|
85
|
+
<a class="layui-btn-xs data-count-edit more-btn" data-name={{d.name}} data-id={{d.id}}>更多<i class="layui-icon layui-icon-down layui-nav-more"></i></a>
|
83
86
|
<% end %>
|
84
87
|
</script>
|
85
88
|
<script type="text/html" id="show_keys">
|
@@ -91,22 +94,23 @@
|
|
91
94
|
|
92
95
|
|
93
96
|
<script>
|
94
|
-
layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate'], function () {
|
97
|
+
layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate', 'dropdown'], function () {
|
95
98
|
var $ = layui.jquery,
|
96
99
|
form = layui.form,
|
97
100
|
request = layui.request,
|
98
101
|
miniPage = layui.miniPage,
|
102
|
+
dropdown = layui.dropdown,
|
99
103
|
laydate = layui.laydate;
|
100
104
|
|
101
105
|
laydate.render({
|
102
106
|
elem: '#date',
|
103
|
-
range: true
|
107
|
+
range: true
|
104
108
|
});
|
105
109
|
|
106
110
|
table = layui.table;
|
107
111
|
table.render({
|
108
112
|
elem: '#businesses_table',
|
109
|
-
url: '/
|
113
|
+
url: '/missions/businesses',
|
110
114
|
where: {q: form.val('search_form')},
|
111
115
|
toolbar: '#bussinessBar',
|
112
116
|
defaultToolbar: [],
|
@@ -183,6 +187,11 @@
|
|
183
187
|
width: 110,
|
184
188
|
title: '渠道'
|
185
189
|
},
|
190
|
+
{
|
191
|
+
field: 'source',
|
192
|
+
width: 110,
|
193
|
+
title: '商机来源'
|
194
|
+
},
|
186
195
|
{
|
187
196
|
field: 'last_follow_person',
|
188
197
|
width: 120,
|
@@ -190,19 +199,116 @@
|
|
190
199
|
},
|
191
200
|
{
|
192
201
|
title: '操作',
|
193
|
-
minWidth:
|
202
|
+
minWidth: 170,
|
194
203
|
toolbar: '#currentTableBar',
|
195
204
|
align: "center",
|
196
205
|
fixed: 'right'
|
197
206
|
}
|
198
207
|
]
|
199
208
|
],
|
200
|
-
|
209
|
+
|
201
210
|
limit: 20,
|
211
|
+
limits: [10,15,20,30,40,50,60,70,80,90],
|
202
212
|
page: true,
|
203
|
-
skin: 'line'
|
213
|
+
skin: 'line',
|
214
|
+
done: function (res) {
|
215
|
+
drowpdwonRender()
|
216
|
+
}
|
217
|
+
|
204
218
|
});
|
205
219
|
|
220
|
+
var dropmenu = gon.menus;
|
221
|
+
|
222
|
+
drowpdwonRender = function() {
|
223
|
+
dropdown.render({
|
224
|
+
elem: '.more-btn',
|
225
|
+
data: dropmenu,
|
226
|
+
click: function(data, othis){
|
227
|
+
var elem = $(this.elem);
|
228
|
+
id = elem.data('id');
|
229
|
+
switch (data.event) {
|
230
|
+
case 'week':
|
231
|
+
week(id);
|
232
|
+
break;
|
233
|
+
case 'month':
|
234
|
+
month(id);
|
235
|
+
break;
|
236
|
+
case 'edit':
|
237
|
+
edit(id);
|
238
|
+
break;
|
239
|
+
case 'delete':
|
240
|
+
deleteBusiness(id, elem.data['name']);
|
241
|
+
break;
|
242
|
+
}
|
243
|
+
}
|
244
|
+
});
|
245
|
+
}
|
246
|
+
|
247
|
+
function week(id) {
|
248
|
+
var content = miniPage.getHrefContent('/missions/plans/new_week?business_id=' + id);
|
249
|
+
var openWH = miniPage.getOpenWidthHeight();
|
250
|
+
|
251
|
+
sindex = layer.open({
|
252
|
+
title: '添加周计划',
|
253
|
+
type: 1,
|
254
|
+
shade: 0.2,
|
255
|
+
maxmin: true,
|
256
|
+
shadeClose: true,
|
257
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
258
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
259
|
+
content: content
|
260
|
+
});
|
261
|
+
$(window).on("resize", function () {
|
262
|
+
layer.full(sindex);
|
263
|
+
});
|
264
|
+
}
|
265
|
+
|
266
|
+
function edit(id) {
|
267
|
+
var content = miniPage.getHrefContent('/missions/businesses/' + id + '/edit');
|
268
|
+
var openWH = miniPage.getOpenWidthHeight();
|
269
|
+
sindex = layer.open({
|
270
|
+
title: '编辑',
|
271
|
+
type: 1,
|
272
|
+
shade: 0.2,
|
273
|
+
maxmin: true,
|
274
|
+
shadeClose: true,
|
275
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
276
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
277
|
+
content: content
|
278
|
+
});
|
279
|
+
$(window).on("resize", function () {
|
280
|
+
layer.full(sindex);
|
281
|
+
});
|
282
|
+
}
|
283
|
+
|
284
|
+
function month(id) {
|
285
|
+
var content = miniPage.getHrefContent('/missions/plans/new_month?business_id=' + id);
|
286
|
+
var openWH = miniPage.getOpenWidthHeight();
|
287
|
+
sindex = layer.open({
|
288
|
+
title: '添加月计划',
|
289
|
+
type: 1,
|
290
|
+
shade: 0.2,
|
291
|
+
maxmin: true,
|
292
|
+
shadeClose: true,
|
293
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
294
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
295
|
+
content: content
|
296
|
+
});
|
297
|
+
$(window).on("resize", function () {
|
298
|
+
layer.full(sindex);
|
299
|
+
});
|
300
|
+
}
|
301
|
+
|
302
|
+
function deleteBusiness(id, name) {
|
303
|
+
layer.confirm('确定删除' + name, function (index) {
|
304
|
+
request.delete('missions/businesses/' + id, {}, function (res) {
|
305
|
+
layer.close(index);
|
306
|
+
table.reload("businesses_table")
|
307
|
+
})
|
308
|
+
});
|
309
|
+
}
|
310
|
+
|
311
|
+
|
206
312
|
var sort = {}, search = {};
|
207
313
|
table.on('sort(businesses_table)', function (obj) {
|
208
314
|
sort.field = obj.field;
|
@@ -240,7 +346,7 @@
|
|
240
346
|
|
241
347
|
table.on('toolbar(businesses_table)', function (obj) {
|
242
348
|
if (obj.event === 'add') { // 监听添加操作
|
243
|
-
var content = miniPage.getHrefContent('/
|
349
|
+
var content = miniPage.getHrefContent('/missions/businesses/new');
|
244
350
|
var openWH = miniPage.getOpenWidthHeight();
|
245
351
|
index = layer.open({
|
246
352
|
title: '添加商机',
|
@@ -265,8 +371,28 @@
|
|
265
371
|
table.on('tool(businesses_table)', function (obj) {
|
266
372
|
var data = obj.data;
|
267
373
|
id = data.id
|
268
|
-
|
269
|
-
|
374
|
+
if (obj.event === 'add_event') { // 监听添加操作
|
375
|
+
business_id = data.id
|
376
|
+
var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + data.id);
|
377
|
+
var openWH = miniPage.getOpenWidthHeight();
|
378
|
+
sale_plan_index = layer.open({
|
379
|
+
title: '添加商机跟进记录',
|
380
|
+
type: 1,
|
381
|
+
shade: 0.2,
|
382
|
+
maxmin: true,
|
383
|
+
shadeClose: true,
|
384
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
385
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
386
|
+
content: content,
|
387
|
+
success: function (layero, index) {
|
388
|
+
form.render('select');
|
389
|
+
}
|
390
|
+
});
|
391
|
+
$(window).on("resize", function () {
|
392
|
+
layer.full(sale_plan_index);
|
393
|
+
});
|
394
|
+
} else if (obj.event === 'edit') {
|
395
|
+
var content = miniPage.getHrefContent('/missions/businesses/' + id + '/edit');
|
270
396
|
var openWH = miniPage.getOpenWidthHeight();
|
271
397
|
sindex = layer.open({
|
272
398
|
title: '编辑',
|
@@ -284,13 +410,33 @@
|
|
284
410
|
return false;
|
285
411
|
} else if (obj.event === 'delete') {
|
286
412
|
layer.confirm('确定删除' + data.name, function (index) {
|
287
|
-
request.delete('
|
413
|
+
request.delete('missions/businesses/' + data.id, {}, function (res) {
|
288
414
|
layer.close(index);
|
289
415
|
table.reload("businesses_table")
|
290
416
|
})
|
291
417
|
});
|
292
|
-
}
|
293
|
-
|
418
|
+
}else if (obj.event === 'add_follow') { // 监听添加操作
|
419
|
+
business_id = parent.business_id
|
420
|
+
var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + parent.id);
|
421
|
+
var openWH = miniPage.getOpenWidthHeight();
|
422
|
+
sale_plan_index = layer.open({
|
423
|
+
title: '添加商机跟进记录',
|
424
|
+
type: 1,
|
425
|
+
shade: 0.2,
|
426
|
+
maxmin: true,
|
427
|
+
shadeClose: true,
|
428
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
429
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
430
|
+
content: content,
|
431
|
+
success: function (layero, index) {
|
432
|
+
form.render('select');
|
433
|
+
}
|
434
|
+
});
|
435
|
+
$(window).on("resize", function () {
|
436
|
+
layer.full(index);
|
437
|
+
});
|
438
|
+
}else if (obj.event === 'addWeek') {
|
439
|
+
var content = miniPage.getHrefContent('/missions/plans/new_week?business_id=' + obj.data.id);
|
294
440
|
var openWH = miniPage.getOpenWidthHeight();
|
295
441
|
|
296
442
|
sindex = layer.open({
|
@@ -307,7 +453,7 @@
|
|
307
453
|
layer.full(sindex);
|
308
454
|
});
|
309
455
|
} else if (obj.event === 'addMonth') {
|
310
|
-
var content = miniPage.getHrefContent('/
|
456
|
+
var content = miniPage.getHrefContent('/missions/plans/new_month?business_id=' + obj.data.id);
|
311
457
|
var openWH = miniPage.getOpenWidthHeight();
|
312
458
|
sindex = layer.open({
|
313
459
|
title: '添加月计划',
|
@@ -326,7 +472,7 @@
|
|
326
472
|
} else if (obj.event === 'show_keys') {
|
327
473
|
business_id = obj.data.id
|
328
474
|
follow_up_id = obj.data.follow_up_id;
|
329
|
-
content = miniPage.getHrefContent('/
|
475
|
+
content = miniPage.getHrefContent('/missions/businesses/show_keys');
|
330
476
|
openWH = miniPage.getOpenWidthHeight();
|
331
477
|
index = layer.open({
|
332
478
|
title: '关键人',
|
@@ -347,7 +493,7 @@
|
|
347
493
|
});
|
348
494
|
} else if (obj.event === 'show_follow') {
|
349
495
|
business_id = obj.data.id
|
350
|
-
content = miniPage.getHrefContent('/
|
496
|
+
content = miniPage.getHrefContent('/missions/businesses/show_follow?id=' + id);
|
351
497
|
openWH = miniPage.getOpenWidthHeight();
|
352
498
|
index = layer.open({
|
353
499
|
title: '商机列表/' + data.name + '的跟进记录',
|
@@ -16,6 +16,10 @@ 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
|
20
|
+
json.assign_follow_ups d.last_follow_up.present? ? d.last_follow_up.assign_follow_ups.pluck(:staff_id) : []
|
21
|
+
json.current_staff_id @current_admin.id
|
22
|
+
json.staff_id d.staff_id
|
19
23
|
end
|
20
24
|
end
|
21
25
|
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>
|
@@ -46,7 +54,7 @@
|
|
46
54
|
if (!value) {
|
47
55
|
return cb([]);
|
48
56
|
}
|
49
|
-
request.get('
|
57
|
+
request.get('missions/search?type=department&q=' + value, {}, function (res) {
|
50
58
|
return cb(res)
|
51
59
|
})
|
52
60
|
}
|
@@ -60,9 +68,11 @@
|
|
60
68
|
if (add_department.getValue() == "") {
|
61
69
|
return layer.alert("请选择单位部门")
|
62
70
|
}
|
63
|
-
request.authPost("
|
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(
|
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>
|
@@ -71,9 +77,15 @@
|
|
71
77
|
<input name="divide_rate" class="layui-input" value="<%= @last_follow_up&.divide_rate%>">
|
72
78
|
</div>
|
73
79
|
<span style="margin-top: 10px; float:left;">%</span>
|
80
|
+
</div>
|
81
|
+
<div class="layui-form-item">
|
82
|
+
<label class="layui-form-label">指定跟进人</label>
|
83
|
+
<div class="layui-input-inline">
|
84
|
+
<div id="assign_follow" style="width: 512px;"></div>
|
85
|
+
</div>
|
74
86
|
</div>
|
75
87
|
<div class="layui-form-item layui-form-text">
|
76
|
-
<label class="layui-form-label required"
|
88
|
+
<label class="layui-form-label required">商机说明</label>
|
77
89
|
<div class="layui-input-block">
|
78
90
|
<textarea name="description" lay-verify="required" placeholder="此处可以填写:
|
79
91
|
1、有无预算;
|
@@ -104,15 +116,16 @@
|
|
104
116
|
</div>
|
105
117
|
|
106
118
|
<script>
|
107
|
-
layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate'], function () {
|
119
|
+
layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate', 'xmSelect'], function () {
|
108
120
|
var form = layui.form,
|
109
121
|
layer = layui.layer,
|
110
122
|
table = layui.table,
|
111
123
|
laytpl = layui.laytpl,
|
112
124
|
request = layui.request,
|
113
125
|
laydate = layui.laydate,
|
126
|
+
xmSelect = layui.xmSelect,
|
114
127
|
$ = layui.$;
|
115
|
-
|
128
|
+
|
116
129
|
laydate.render({
|
117
130
|
elem: '#invitation_at_add'
|
118
131
|
})
|
@@ -120,22 +133,46 @@
|
|
120
133
|
laydate.render({
|
121
134
|
elem: '#reception_at_add'
|
122
135
|
});
|
136
|
+
var sales_list = xmSelect.render({
|
137
|
+
el: '#assign_follow',
|
138
|
+
remoteSearch: true,
|
139
|
+
clickClose: true,
|
140
|
+
delay: 1000,
|
141
|
+
paging: true,
|
142
|
+
pageRemote: true,
|
143
|
+
filterable: true,
|
144
|
+
remoteMethod: function (val, cb, show, pageIndex) {
|
145
|
+
$.ajax( '/missions/sales_staff', {
|
146
|
+
method: 'get',
|
147
|
+
data: {
|
148
|
+
q: val,
|
149
|
+
page: pageIndex
|
150
|
+
},
|
151
|
+
dataType: 'json',
|
152
|
+
success: function (res) {
|
153
|
+
var data = res.data;
|
154
|
+
if (res.code == 0) {
|
155
|
+
cb(res.data, res.count);
|
156
|
+
} else {
|
157
|
+
layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
|
158
|
+
}
|
159
|
+
|
160
|
+
}
|
161
|
+
})
|
162
|
+
}
|
163
|
+
})
|
164
|
+
|
123
165
|
|
124
166
|
form.render();
|
125
167
|
|
126
168
|
form.on('submit(add_follow_up)', function (data) {
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
// layer.alert(res.msg)
|
135
|
-
// } else {
|
136
|
-
// }
|
137
|
-
// })
|
138
|
-
request.authPost("educode_sales/follow_ups", data.field, function (res) {
|
169
|
+
var assign_follow = [];
|
170
|
+
sales_list.getValue().forEach(function(d) {
|
171
|
+
assign_follow.push(d.value);
|
172
|
+
})
|
173
|
+
data.field.assign_follow_up = assign_follow;
|
174
|
+
data.field.business_id = "<%= @business.id %>";
|
175
|
+
request.authPost("missions/follow_ups", data.field, function (res) {
|
139
176
|
if (res.success == false) {
|
140
177
|
layer.alert(res.msg)
|
141
178
|
} else {
|
@@ -2,7 +2,11 @@
|
|
2
2
|
<div class="layui-btn-container">
|
3
3
|
<span class="table-label">跟进记录</span>
|
4
4
|
<% if can? :add_follow, EducodeSales::Business %>
|
5
|
-
|
5
|
+
<% if @current_admin.is_admin %>
|
6
|
+
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add"> 添加跟进记录</button>
|
7
|
+
<% elsif @business.staff_id == @current_admin.id || @business.last_follow_up.nil? || @business.last_follow_up.assign_follow_ups.blank? || (@business.last_follow_up.assign_follow_ups.pluck(:staff_id).include?(@current_admin.id)) %>
|
8
|
+
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add"> 添加跟进记录</button>
|
9
|
+
<% end %>
|
6
10
|
<% end %>
|
7
11
|
</div>
|
8
12
|
</script>
|
@@ -16,7 +20,11 @@
|
|
16
20
|
<% end %>
|
17
21
|
{{# if(d.is_latest){ }}
|
18
22
|
<% if can? :update_follow, EducodeSales::Business %>
|
19
|
-
|
23
|
+
<% if @current_admin.is_admin %>
|
24
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
|
25
|
+
<% elsif @business.staff_id == @current_admin.id || @business.last_follow_up.nil? || @business.last_follow_up.assign_follow_ups.blank? || (@business.last_follow_up.assign_follow_ups.pluck(:staff_id).include?(@current_admin.id)) %>
|
26
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
|
27
|
+
<% end %>
|
20
28
|
<% end %>
|
21
29
|
<% if can? :destroy_follow, EducodeSales::Business %>
|
22
30
|
<a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
|
@@ -62,7 +70,7 @@
|
|
62
70
|
|
63
71
|
table.render({
|
64
72
|
elem: '#sale_plan_follow_table',
|
65
|
-
url: '/
|
73
|
+
url: '/missions/businesses/show_follow?id=' + parent.id ,
|
66
74
|
toolbar: '#toolbarDemo_follow',
|
67
75
|
defaultToolbar: [],
|
68
76
|
cols: [
|
@@ -142,15 +150,15 @@
|
|
142
150
|
},
|
143
151
|
{
|
144
152
|
title: '操作',
|
145
|
-
minWidth:
|
153
|
+
minWidth: 200,
|
146
154
|
toolbar: '#currentTableBar_follow',
|
147
155
|
align: "center",
|
148
156
|
fixed: 'right'
|
149
157
|
}
|
150
158
|
]
|
151
159
|
],
|
152
|
-
height: 520,
|
153
160
|
limit: 20,
|
161
|
+
limits: [10,15,20,30,40,50,60,70,80,90],
|
154
162
|
page: true,
|
155
163
|
skin: 'line',
|
156
164
|
// done: function (obj, first) {
|
@@ -174,9 +182,8 @@
|
|
174
182
|
|
175
183
|
table.on('toolbar(sale_plan_follow_table)', function (obj) {
|
176
184
|
if (obj.event === 'add') { // 监听添加操作
|
177
|
-
console.log(parent.business_id);
|
178
185
|
business_id = parent.business_id
|
179
|
-
var content = miniPage.getHrefContent('/
|
186
|
+
var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + parent.id);
|
180
187
|
var openWH = miniPage.getOpenWidthHeight();
|
181
188
|
sale_plan_index = layer.open({
|
182
189
|
title: '添加商机跟进记录',
|
@@ -201,9 +208,8 @@
|
|
201
208
|
var data = obj.data;
|
202
209
|
follow_up_id = obj.data.id;
|
203
210
|
if (obj.event === 'delete') {
|
204
|
-
console.log(data);
|
205
211
|
layer.confirm('确定删除ID为' + data.id + "的跟进记录", function (index) {
|
206
|
-
request.authDelete("
|
212
|
+
request.authDelete("missions/follow_ups/" + data.id, {}, function() {
|
207
213
|
obj.del();
|
208
214
|
layer.close(index);
|
209
215
|
table.reload("businesses_table");
|
@@ -211,7 +217,7 @@
|
|
211
217
|
})
|
212
218
|
});
|
213
219
|
} else if (obj.event === 'show') { // 监听添加操作
|
214
|
-
var content = miniPage.getHrefContent('/
|
220
|
+
var content = miniPage.getHrefContent('/missions/businesses/show_follow_record?follow_up_id=' + data.id);
|
215
221
|
var openWH = miniPage.getOpenWidthHeight();
|
216
222
|
var index = layer.open({
|
217
223
|
title: '查看商机跟进记录',
|
@@ -227,7 +233,7 @@
|
|
227
233
|
layer.full(index);
|
228
234
|
});
|
229
235
|
} else if (obj.event === 'edit') { // 监听添加操作
|
230
|
-
var content = miniPage.getHrefContent('/
|
236
|
+
var content = miniPage.getHrefContent('/missions/businesses/edit_follow_record?follow_up_id=' + data.id);
|
231
237
|
var openWH = miniPage.getOpenWidthHeight();
|
232
238
|
sale_plan_edit_open = layer.open({
|
233
239
|
title: '编辑商机跟进记录',
|
@@ -246,7 +252,7 @@
|
|
246
252
|
layer.full(sale_plan_edit_open);
|
247
253
|
});
|
248
254
|
} else if (obj.event === 'add_keys') { // 监听添加操作
|
249
|
-
content = miniPage.getHrefContent('/
|
255
|
+
content = miniPage.getHrefContent('/missions/teachers/add_keys?follow_up_id=' + obj.data.id);
|
250
256
|
openWH = miniPage.getOpenWidthHeight();
|
251
257
|
is_latest = obj.data.is_latest
|
252
258
|
keyindex = layer.open({
|
@@ -267,7 +273,7 @@
|
|
267
273
|
layer.full(keyindex);
|
268
274
|
});
|
269
275
|
} else if (obj.event === 'edit_plan') {
|
270
|
-
content = miniPage.getHrefContent('/
|
276
|
+
content = miniPage.getHrefContent('/missions/businesses/edit_plan');
|
271
277
|
openWH = miniPage.getOpenWidthHeight();
|
272
278
|
is_latest = obj.data.is_latest
|
273
279
|
plan_index = layer.open({
|
@@ -293,7 +299,7 @@
|
|
293
299
|
// 未完成计划
|
294
300
|
table.render({
|
295
301
|
elem: '#unfinish_table',
|
296
|
-
url: '/
|
302
|
+
url: '/missions/businesses/' + parent.id + "/unfinish_plans",
|
297
303
|
toolbar: '#unfinish_table_tabar',
|
298
304
|
defaultToolbar: [],
|
299
305
|
cols: [
|
@@ -371,7 +377,7 @@
|
|
371
377
|
*/
|
372
378
|
table.on('toolbar(unfinish_table)', function (obj) {
|
373
379
|
if (obj.event === 'addWeekPlan') { // 监听添加操作
|
374
|
-
var content = miniPage.getHrefContent('/
|
380
|
+
var content = miniPage.getHrefContent('/missions/plans/new_week?business_id=' + parent.id);
|
375
381
|
var openWH = miniPage.getOpenWidthHeight();
|
376
382
|
var index = layer.open({
|
377
383
|
title: '添加周计划',
|
@@ -391,7 +397,7 @@
|
|
391
397
|
layer.full(index);
|
392
398
|
});
|
393
399
|
} else if (obj.event === 'addMonthPlan') { // 监听添加操作
|
394
|
-
var content = miniPage.getHrefContent('/
|
400
|
+
var content = miniPage.getHrefContent('/missions/plans/new_month?business_id=' + parent.id)
|
395
401
|
var openWH = miniPage.getOpenWidthHeight();
|
396
402
|
var index = layer.open({
|
397
403
|
title: '添加月计划',
|
@@ -418,14 +424,14 @@
|
|
418
424
|
plan_id = data.id;
|
419
425
|
if (obj.event === 'delete') {
|
420
426
|
layer.confirm('确定删除ID为' + data.id + "的计划", function (index) {
|
421
|
-
request.authDelete("
|
427
|
+
request.authDelete("missions/plans/" + data.id, {}, function() {
|
422
428
|
obj.del();
|
423
429
|
layer.close(index);
|
424
430
|
})
|
425
431
|
|
426
432
|
});
|
427
433
|
} else if (obj.event === 'show') {
|
428
|
-
content = miniPage.getHrefContent('/
|
434
|
+
content = miniPage.getHrefContent('/missions/plans/show_week?id=' + data.id);
|
429
435
|
openWH = miniPage.getOpenWidthHeight();
|
430
436
|
index = layer.open({
|
431
437
|
title: data.week ? '查看周计划' : '查看月计划',
|
@@ -442,7 +448,7 @@
|
|
442
448
|
});
|
443
449
|
return false;
|
444
450
|
} else if (obj.event === 'edit') {
|
445
|
-
content = miniPage.getHrefContent('/
|
451
|
+
content = miniPage.getHrefContent('/missions/plans/edit_week?id=' + data.id);
|
446
452
|
openWH = miniPage.getOpenWidthHeight();
|
447
453
|
sindex = layer.open({
|
448
454
|
title: '编辑',
|
@@ -65,8 +65,14 @@
|
|
65
65
|
<%= @follow_up.divide_rate %>%
|
66
66
|
</div>
|
67
67
|
</div>
|
68
|
+
<div class="ayui-form-item">
|
69
|
+
<label class="layui-form-label" style="width: 85px;">指定跟进人:</label>
|
70
|
+
<div class="layui-input-inline">
|
71
|
+
<%= @follow_up.assign_follow_ups.map{|d| d.staff.user.full_name}.join("、") %>
|
72
|
+
</div>
|
73
|
+
</div>
|
68
74
|
<div class="layui-form-item layui-form-text">
|
69
|
-
<label class="layui-form-label"
|
75
|
+
<label class="layui-form-label">商机说明:</label>
|
70
76
|
<div class="layui-input-block" style="padding-right: 20px;">
|
71
77
|
<pre><%= @follow_up.description %></pre>
|
72
78
|
</div>
|