educode_sales 1.0.8 → 1.0.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 +4 -4
- data/app/controllers/educode_sales/contracts_controller.rb +3 -3
- data/app/controllers/educode_sales/money_plan_records_controller.rb +4 -0
- data/app/controllers/educode_sales/money_plans_controller.rb +21 -0
- data/app/controllers/educode_sales/teachers_controller.rb +24 -1
- data/app/models/educode_sales/staff.rb +1 -0
- data/app/models/educode_sales/teacher.rb +1 -0
- data/app/views/educode_sales/businesses/show_follow.json.jbuilder +1 -1
- data/app/views/educode_sales/money_plans/_index.html.erb +18 -1
- data/app/views/educode_sales/money_plans/edit.html.erb +80 -0
- data/app/views/educode_sales/teachers/_index.html.erb +217 -4
- data/app/views/educode_sales/teachers/assign.html.erb +43 -0
- data/app/views/educode_sales/teachers/index.json.jbuilder +5 -1
- data/app/views/layouts/educode_sales/application.html.erb +3 -0
- data/config/routes.rb +2 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 06ac69aca1c84150d19b35dd21ed944d1bad8140bc09acb1c07ecfa76af6a955
|
4
|
+
data.tar.gz: ccd9ef3f0774e1a45627f1e05ccac063f5e20ce35606ea4615706eaaa045be98
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00b7d6f4308a10d6f7cbd7e901415c4548f3f12119b72d032f91f82fd0c6d24fd273141f0728439eacde51b1851d1f15ffc1b26ed9584c089d2491d10fe8ce13
|
7
|
+
data.tar.gz: b896a8e71a2703ec4d177dc3c24c1853ec853fb9cd04560c26d3422121de6a2daa9254e6345fee19fe772dbd0c43c268c1cb6b40d03bf0d129d15a84abdb7d7c
|
@@ -348,9 +348,9 @@ module EducodeSales
|
|
348
348
|
end
|
349
349
|
|
350
350
|
end
|
351
|
-
data.each do |d|
|
352
|
-
|
353
|
-
end
|
351
|
+
# data.each do |d|
|
352
|
+
# d.select! { |d| d.delete_if{|f| f == ''}.present? }
|
353
|
+
# end
|
354
354
|
|
355
355
|
follow_up = last_follow_up.dup
|
356
356
|
|
@@ -108,6 +108,10 @@ module EducodeSales
|
|
108
108
|
claim.amount = params["amount[#{i}]"]
|
109
109
|
claim.staff = @current_admin
|
110
110
|
claim.save
|
111
|
+
business = claim.money_plan.business
|
112
|
+
if business
|
113
|
+
business.update(return_money: claim.money_plan.money_plan_claims.sum(:amount))
|
114
|
+
end
|
111
115
|
end
|
112
116
|
|
113
117
|
render_success
|
@@ -57,6 +57,22 @@ module EducodeSales
|
|
57
57
|
render layout: false
|
58
58
|
end
|
59
59
|
|
60
|
+
def edit
|
61
|
+
@money_plan = MoneyPlan.find(params[:id])
|
62
|
+
gon.business_id = @money_plan.business_id
|
63
|
+
gon.business = [{value: @money_plan.business_id.to_s, name: @money_plan.business&.name}]
|
64
|
+
render layout: false
|
65
|
+
end
|
66
|
+
|
67
|
+
def update
|
68
|
+
@money_plan = MoneyPlan.find(params[:id])
|
69
|
+
if @money_plan.update(money_plan_params)
|
70
|
+
render_success
|
71
|
+
else
|
72
|
+
render_failure @money_plan
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
60
76
|
def create
|
61
77
|
business = Business.find(params[:business_id])
|
62
78
|
data = []
|
@@ -66,5 +82,10 @@ module EducodeSales
|
|
66
82
|
render_success
|
67
83
|
end
|
68
84
|
|
85
|
+
private
|
86
|
+
def money_plan_params
|
87
|
+
params.permit(:category, :amount, :payment_clause, :date_at)
|
88
|
+
end
|
89
|
+
|
69
90
|
end
|
70
91
|
end
|
@@ -166,7 +166,8 @@ module EducodeSales
|
|
166
166
|
if params[:q].present? && params[:q][:staff_manage].present?
|
167
167
|
staff = Staff.find(params[:q][:staff_manage])
|
168
168
|
school_ids = School.where(province: staff.areas.pluck(:name)).pluck(:id)
|
169
|
-
|
169
|
+
assign_teacher_ids = EducodeSales::AssignStaff.where("educode_sales_assign_staffs.sourcable_type = 'EducodeSales::Teacher' and educode_sales_assign_staffs.staff_id = ?", params[:q][:staff_manage]).pluck(:sourcable_id)
|
170
|
+
teacher_ids = EducodeSales::Teacher.joins("JOIN departments ON educode_sales_teachers.department_id = departments.id").where("departments.school_id in (?)", school_ids).pluck(:id) + assign_teacher_ids
|
170
171
|
@teachers = @teachers.where(id: teacher_ids)
|
171
172
|
end
|
172
173
|
|
@@ -426,6 +427,28 @@ module EducodeSales
|
|
426
427
|
render layout: false
|
427
428
|
end
|
428
429
|
|
430
|
+
#获取该教师所指派生态经理
|
431
|
+
def assign
|
432
|
+
role = Role.find_by( name: '生态经理')
|
433
|
+
staffs = Staff.joins(:user).where(role_id: role.id)
|
434
|
+
teacher = Teacher.find(params[:id])
|
435
|
+
selected_staff_ids = teacher.assign_staffs.pluck(:staff_id)
|
436
|
+
gon.staff_manages = staffs.map { |d| {name: d.user.real_name, value: d.id, selected: selected_staff_ids.include?(d.id)} }
|
437
|
+
render layout: false
|
438
|
+
end
|
439
|
+
|
440
|
+
#指派生态经理
|
441
|
+
def assign_staff
|
442
|
+
@teacher = EducodeSales::Teacher.find(params[:id])
|
443
|
+
assign_staffs = []
|
444
|
+
params[:to_id].split(",").each do |i|
|
445
|
+
assign_staffs << AssignStaff.find_or_initialize_by(sourcable_id: @teacher.id, staff_id: i, sourcable_type: "EducodeSales::Teacher")
|
446
|
+
end
|
447
|
+
@teacher.assign_staffs = assign_staffs
|
448
|
+
@teacher.save
|
449
|
+
render_success
|
450
|
+
end
|
451
|
+
|
429
452
|
private
|
430
453
|
def teacher_params
|
431
454
|
params.permit(:name, :professional_title, :job, :source_id, :wechat, :mobile, :realname)
|
@@ -31,6 +31,7 @@ module EducodeSales
|
|
31
31
|
|
32
32
|
has_many :market_areas, dependent: :destroy
|
33
33
|
has_many :areas, through: :market_areas
|
34
|
+
has_many :assign_staffs, :class_name => 'EducodeSales::AssignStaff', dependent: :destroy
|
34
35
|
validates :user_id, uniqueness: { message: '已存在' }
|
35
36
|
|
36
37
|
# attr_writer :month
|
@@ -1,5 +1,6 @@
|
|
1
1
|
module EducodeSales
|
2
2
|
class Teacher < ApplicationRecord
|
3
|
+
has_many :assign_staffs, as: :sourcable, dependent: :destroy #生态经理
|
3
4
|
has_many :activity_teachers, dependent: :destroy
|
4
5
|
has_many :activities, through: :activity_teachers
|
5
6
|
has_many :teacher_follows, dependent: :destroy
|
@@ -23,7 +23,7 @@ json.data do
|
|
23
23
|
json.staff d.staff.user.real_name
|
24
24
|
json.place d.place&.name
|
25
25
|
json.money_plans_count d.money_plans_count
|
26
|
-
json.money d.money_plans.
|
26
|
+
json.money d.money_plans.sum(:amount).round(2)
|
27
27
|
json.is_latest d.id == @latest&.id
|
28
28
|
json.flag d.created_at.present? ? (Time.now - d.created_at).to_f/3600 < 24 : false
|
29
29
|
json.description d.description
|
@@ -32,6 +32,7 @@
|
|
32
32
|
<a href="<%= base_url%>/colleges/{{d.school_id}}/statistics" class="layui-table-link" target="_blank">{{ d.school }}</a>
|
33
33
|
</script>
|
34
34
|
<script type="text/html" id="currentTableBarmoney_plan">
|
35
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
|
35
36
|
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="apply">开票申请</a>
|
36
37
|
<!-- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">催款提醒</a> -->
|
37
38
|
|
@@ -125,7 +126,7 @@
|
|
125
126
|
field: 'busireceipt_state',
|
126
127
|
width: 120,
|
127
128
|
title: '开票状态',
|
128
|
-
},
|
129
|
+
}, {
|
129
130
|
field: 'created_at',
|
130
131
|
width: 170,
|
131
132
|
title: '添加计划时间',
|
@@ -228,6 +229,22 @@
|
|
228
229
|
$(window).on("resize", function() {
|
229
230
|
layer.full(sindex);
|
230
231
|
});
|
232
|
+
} else if (obj.event === 'edit') {
|
233
|
+
var content = miniPage.getHrefContent('/missions/money_plans/' + data.id + '/edit')
|
234
|
+
var openWH = miniPage.getOpenWidthHeight();
|
235
|
+
sindex = layer.open({
|
236
|
+
title: '编辑回款计划',
|
237
|
+
type: 1,
|
238
|
+
shade: 0.2,
|
239
|
+
maxmin: true,
|
240
|
+
shadeClose: true,
|
241
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
242
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
243
|
+
content: content
|
244
|
+
});
|
245
|
+
$(window).on("resize", function() {
|
246
|
+
layer.full(sindex);
|
247
|
+
});
|
231
248
|
}
|
232
249
|
});
|
233
250
|
|
@@ -0,0 +1,80 @@
|
|
1
|
+
<%= Gon::Base.render_data %>
|
2
|
+
<div style="padding:10px">
|
3
|
+
<div class="layui-form layuimini-form" lay-filter="searchform">
|
4
|
+
<div class="layui-form-item">
|
5
|
+
<label class="layui-form-label required" style="width: 80px !important;">合同名称:</label>
|
6
|
+
<div class="layui-input-inline">
|
7
|
+
<%= hidden_field_tag :id, @money_plan.id %>
|
8
|
+
<div id="business" style="line-height:38px;">
|
9
|
+
<%= @money_plan.business.name %>
|
10
|
+
</div>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
<div class="layui-form-item">
|
14
|
+
<div class="layui-inline">
|
15
|
+
<label class="layui-form-label required">回款类别:</label>
|
16
|
+
<div class="layui-input-inline">
|
17
|
+
<%= select_tag "category", options_for_select(EducodeSales::MoneyPlan.categories.keys, @money_plan.category), { 'lay-filter': 'category', 'lay-verify': "required", include_blank: true, "lay-search": "" } %>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
<div class="layui-inline">
|
21
|
+
<label class="layui-form-label required" style="width:50px;">金额:</label>
|
22
|
+
<div class="layui-input-inline">
|
23
|
+
<input type="text" name="amount" value="<%= @money_plan.amount %>" class="layui-input" lay-verify="required">
|
24
|
+
</div>
|
25
|
+
</div>
|
26
|
+
<div class="layui-inline">
|
27
|
+
<label class="layui-form-label required" style="width: 110px;">计划回款时间:</label>
|
28
|
+
<div class="layui-input-inline">
|
29
|
+
<input type="text" name="date_at" value="<%= @money_plan.date_at.to_s(:date) %>" class="layui-input" lay-verify="required" id="date_at">
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
<div class="layui-inline">
|
33
|
+
<label class="layui-form-label">付款条件:</label>
|
34
|
+
<div class="layui-input-inline">
|
35
|
+
<input type="text" name="payment_clause" value="<%= @money_plan.payment_clause %>" class="layui-input">
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
</div>
|
39
|
+
<div class="layui-form-item">
|
40
|
+
<div class="layui-input-block">
|
41
|
+
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">保存</button>
|
42
|
+
</div>
|
43
|
+
</div>
|
44
|
+
</div>
|
45
|
+
</div>
|
46
|
+
|
47
|
+
<script>
|
48
|
+
|
49
|
+
layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'laydate', 'selectInput'], function() {
|
50
|
+
var form = layui.form,
|
51
|
+
layer = layui.layer,
|
52
|
+
table = layui.table,
|
53
|
+
laydate = layui.laydate,
|
54
|
+
laytpl = layui.laytpl,
|
55
|
+
request = layui.request,
|
56
|
+
selectInput = layui.selectInput,
|
57
|
+
$ = layui.$;
|
58
|
+
form.render();
|
59
|
+
|
60
|
+
laydate.render({
|
61
|
+
elem: '#date_at',
|
62
|
+
});
|
63
|
+
|
64
|
+
|
65
|
+
var business_id = gon.business_id;
|
66
|
+
|
67
|
+
form.on('submit(saveBtn)', function(data) {
|
68
|
+
data.field.business_id = business_id;
|
69
|
+
if (data.field.business_id == '') {
|
70
|
+
layer.msg('请选择合同')
|
71
|
+
return false;
|
72
|
+
}
|
73
|
+
request.put("missions/money_plans/" + data.field.id, data.field, function(res) {
|
74
|
+
layer.close(parent.sindex)
|
75
|
+
parent.table.reload('money_plan_table')
|
76
|
+
})
|
77
|
+
return false;
|
78
|
+
});
|
79
|
+
});
|
80
|
+
</script>
|
@@ -122,6 +122,7 @@
|
|
122
122
|
<% if can? :create, EducodeSales::TeacherFollow %>
|
123
123
|
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
|
124
124
|
<% end %>
|
125
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="assign">指派生态经理</a>
|
125
126
|
<% if @more %>
|
126
127
|
<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>
|
127
128
|
<% end %>
|
@@ -396,11 +397,206 @@
|
|
396
397
|
url: '/missions/teachers',
|
397
398
|
where: {q: form.val('search_form')},
|
398
399
|
toolbar: '#toolbarDemo',
|
399
|
-
totalRow:
|
400
|
+
totalRow:true,
|
400
401
|
defaultToolbar: ['filter'],
|
401
|
-
cols:
|
402
|
+
cols: [
|
403
|
+
[
|
404
|
+
{
|
405
|
+
field: 'id',
|
406
|
+
width: 60,
|
407
|
+
title:'序号',type: 'numbers',
|
408
|
+
totalRowText:'合计',
|
409
|
+
fixed: 'left'
|
410
|
+
|
411
|
+
},
|
412
|
+
{
|
413
|
+
field: 'name',
|
414
|
+
width: 100,
|
415
|
+
title: '姓名',
|
416
|
+
fixed: 'left',
|
417
|
+
templet: "#name"
|
418
|
+
},
|
419
|
+
{
|
420
|
+
field: 'realname',
|
421
|
+
width: 100,
|
422
|
+
title: '真实姓名',
|
423
|
+
},
|
424
|
+
{
|
425
|
+
field: 'school',
|
426
|
+
width: 160,
|
427
|
+
title: '单位',
|
428
|
+
templet:'<div><span title="{{d.school}}">{{d.school}}</span></div>'
|
429
|
+
|
430
|
+
},
|
431
|
+
{
|
432
|
+
field: 'department',
|
433
|
+
width: 130,
|
434
|
+
title: '部门',
|
435
|
+
templet:'<div><span title="{{d.department}}">{{d.department}}</span></div>'
|
436
|
+
},
|
437
|
+
{
|
438
|
+
field: 'majors',
|
439
|
+
width: 160,
|
440
|
+
title: '专业',
|
441
|
+
},
|
442
|
+
{
|
443
|
+
field: 'area',
|
444
|
+
width: 80,
|
445
|
+
title: '区域',
|
446
|
+
},
|
447
|
+
{
|
448
|
+
field: 'business_count',
|
449
|
+
width: 120,
|
450
|
+
title: '单位商机数',
|
451
|
+
},
|
452
|
+
{
|
453
|
+
field: 'professional_title',
|
454
|
+
title: '职称',
|
455
|
+
width: 80,
|
456
|
+
templet: '#show_follow'
|
457
|
+
},
|
458
|
+
{
|
459
|
+
field: 'job',
|
460
|
+
width: 80,
|
461
|
+
title: '职务',
|
462
|
+
templet: '#show_keys'
|
463
|
+
|
464
|
+
},
|
465
|
+
{
|
466
|
+
field: 'source',
|
467
|
+
width: 90,
|
468
|
+
title: '来源',
|
469
|
+
},
|
470
|
+
{
|
471
|
+
field: 'attitude',
|
472
|
+
width: 60,
|
473
|
+
title: '态度',
|
474
|
+
},
|
475
|
+
{
|
476
|
+
field: 'course_subjects_count',
|
477
|
+
width: 90,
|
478
|
+
title: '课程方向',
|
479
|
+
templet: "#courses"
|
480
|
+
},
|
481
|
+
{
|
482
|
+
field: 'teacher_follows_count',
|
483
|
+
width: 90,
|
484
|
+
title: '跟进情况',
|
485
|
+
totalRow:true,
|
486
|
+
templet: "#follow"
|
487
|
+
},
|
488
|
+
{
|
489
|
+
field: 'sales_manage',
|
490
|
+
width: 160,
|
491
|
+
title: '销售经理',
|
492
|
+
},
|
493
|
+
{
|
494
|
+
field: 'staff_manage',
|
495
|
+
width: 160,
|
496
|
+
title: '生态经理',
|
497
|
+
},
|
498
|
+
{
|
499
|
+
field: 'follow_person',
|
500
|
+
width: 120,
|
501
|
+
title: '最新跟进人',
|
502
|
+
},
|
503
|
+
{
|
504
|
+
field: 'followup_at',
|
505
|
+
width: 180,
|
506
|
+
title: '最新跟进时间',
|
507
|
+
},
|
508
|
+
{
|
509
|
+
field: 'latest_time',
|
510
|
+
width: 120,
|
511
|
+
title: '无跟进天数',
|
512
|
+
sort: true,
|
513
|
+
},
|
514
|
+
{
|
515
|
+
field: 'teacher_used',
|
516
|
+
width: 120,
|
517
|
+
title: '学院渗透率',
|
518
|
+
},
|
519
|
+
{
|
520
|
+
field: 'students',
|
521
|
+
width: 60,
|
522
|
+
totalRow:'{{ parseInt(d.TOTAL_NUMS) }}',
|
523
|
+
title: '学生',
|
524
|
+
},
|
525
|
+
{
|
526
|
+
field: 'courses_count',
|
527
|
+
width: 60,
|
528
|
+
title: '课堂',
|
529
|
+
totalRow:true,
|
530
|
+
templet: "#class"
|
531
|
+
},
|
532
|
+
{
|
533
|
+
field: 'activities_count',
|
534
|
+
width: 100,
|
535
|
+
title: '参与活动',
|
536
|
+
templet: "#event"
|
537
|
+
},
|
538
|
+
{
|
539
|
+
field: 'created_on',
|
540
|
+
width: 120,
|
541
|
+
title: '注册时间',
|
542
|
+
sort: true,
|
543
|
+
},
|
544
|
+
{
|
545
|
+
field: 'last_login_on',
|
546
|
+
width: 120,
|
547
|
+
title: '最近登录',
|
548
|
+
sort: true,
|
549
|
+
},
|
550
|
+
{
|
551
|
+
field: 'created_at',
|
552
|
+
width: 120,
|
553
|
+
title: '添加时间',
|
554
|
+
sort: true,
|
555
|
+
},
|
556
|
+
{
|
557
|
+
field: 'experience',
|
558
|
+
width: 120,
|
559
|
+
title: '经验值',
|
560
|
+
sort: true,
|
561
|
+
},
|
562
|
+
{
|
563
|
+
field: 'grade',
|
564
|
+
width: 120,
|
565
|
+
title: '金币',
|
566
|
+
sort: true,
|
567
|
+
},
|
568
|
+
{
|
569
|
+
field: 'mobile',
|
570
|
+
width: 120,
|
571
|
+
title: '联系电话',
|
572
|
+
},
|
573
|
+
{
|
574
|
+
field: 'wechat',
|
575
|
+
width: 120,
|
576
|
+
title: '微信号',
|
577
|
+
},
|
578
|
+
{
|
579
|
+
field: 'teacher_assist',
|
580
|
+
width: 120,
|
581
|
+
title: '教研助理',
|
582
|
+
},
|
583
|
+
{
|
584
|
+
field: 'is_contact',
|
585
|
+
width: 120,
|
586
|
+
title: '是否联系上'
|
587
|
+
},
|
588
|
+
{
|
589
|
+
title: '操作',
|
590
|
+
minWidth: 270,
|
591
|
+
toolbar: '#currentTableBar',
|
592
|
+
align: "center",
|
593
|
+
fixed: 'right'
|
594
|
+
}
|
595
|
+
]
|
596
|
+
],
|
597
|
+
|
402
598
|
limit: 20,
|
403
|
-
|
599
|
+
limits: [10,15,20,30,40,50,60,70,80,90],
|
404
600
|
page: true,
|
405
601
|
done: function (res) {
|
406
602
|
drowpdwonRender()
|
@@ -408,7 +604,7 @@
|
|
408
604
|
});
|
409
605
|
var dropmenu = gon.menus;
|
410
606
|
|
411
|
-
drowpdwonRender = function
|
607
|
+
drowpdwonRender = function() {
|
412
608
|
dropdown.render({
|
413
609
|
elem: '.more-btn',
|
414
610
|
data: dropmenu,
|
@@ -780,6 +976,23 @@
|
|
780
976
|
$(window).on("resize", function () {
|
781
977
|
layer.full(index);
|
782
978
|
});
|
979
|
+
}else if(obj.event === 'assign'){ //指派生态经理
|
980
|
+
var content = miniPage.getHrefContent('/missions/teachers/' + id + '/assign');
|
981
|
+
var openWH = miniPage.getOpenWidthHeight();
|
982
|
+
var name = data.name;
|
983
|
+
sindex = layer.open({
|
984
|
+
title: '指派教师【' + name + "】生态经理",
|
985
|
+
type: 1,
|
986
|
+
shade: 0.2,
|
987
|
+
maxmin: true,
|
988
|
+
shadeClose: true,
|
989
|
+
area: ['600px', '300px'],
|
990
|
+
content: content
|
991
|
+
});
|
992
|
+
$(window).on("resize", function () {
|
993
|
+
layer.full(sindex);
|
994
|
+
});
|
995
|
+
return false;
|
783
996
|
}
|
784
997
|
});
|
785
998
|
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<%= Gon::Base.render_data %>
|
2
|
+
<div class="layui-form layuimini-form" style="padding:30px">
|
3
|
+
<div class="layui-form-item">
|
4
|
+
<label class="layui-form-label required">选择生态经理:</label>
|
5
|
+
<div class="layui-input-block" style="width: 300px">
|
6
|
+
<div id="staff_manage_id"></div>
|
7
|
+
</div>
|
8
|
+
</div>
|
9
|
+
<hr>
|
10
|
+
<div class="layui-form-item">
|
11
|
+
<div class="layui-input-block">
|
12
|
+
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<script>
|
18
|
+
layui.use(['form', 'table', 'upload', 'request', 'selectInput'], function () {
|
19
|
+
var form = layui.form,
|
20
|
+
layer = layui.layer,
|
21
|
+
request = layui.request,
|
22
|
+
$ = layui.$;
|
23
|
+
|
24
|
+
form.render();
|
25
|
+
staff_list_select = xmSelect.render({
|
26
|
+
el: '#staff_manage_id',
|
27
|
+
data: gon.staff_manages,
|
28
|
+
filterable: true,
|
29
|
+
radio: false,
|
30
|
+
});
|
31
|
+
var parentIndex = layer.index;
|
32
|
+
form.on('submit(saveBtn)', function () {
|
33
|
+
layer.confirm('确定指派生态经理?', function (index) {
|
34
|
+
request.post('missions/teachers/' + parent.id +"/assign_staff", {to_id: staff_list_select.getValue('valueStr')}, function () {
|
35
|
+
layer.close(index);
|
36
|
+
layer.close(parentIndex);
|
37
|
+
parent.table.reload('teachers_table')
|
38
|
+
})
|
39
|
+
});
|
40
|
+
return false;
|
41
|
+
});
|
42
|
+
});
|
43
|
+
</script>
|
@@ -25,7 +25,11 @@ json.data do
|
|
25
25
|
json.followup_at d.follow_up&.created_at&.to_s
|
26
26
|
json.latest_time (d['latest_time'] ? DateTime.parse(Time.now.strftime("%Y-%m-%d")) - DateTime.parse(d['latest_time'].strftime("%Y-%m-%d")) : DateTime.parse(Time.now.strftime("%Y-%m-%d")) - DateTime.parse(d.created_at.strftime("%Y-%m-%d"))).to_i
|
27
27
|
|
28
|
-
|
28
|
+
assign_staff_manages = []
|
29
|
+
d.assign_staffs.each do |assign|
|
30
|
+
assign_staff_manages << assign.staff&.user&.real_name
|
31
|
+
end
|
32
|
+
json.staff_manage @staff_manages[d.department&.school&.province].present? ? (@staff_manages[d.department&.school&.province] + assign_staff_manages).uniq.join(",") : assign_staff_manages
|
29
33
|
json.sales_manage @sales_manages[d.department&.school&.province]&.join(",")
|
30
34
|
|
31
35
|
if d.department_id
|
@@ -2,6 +2,7 @@
|
|
2
2
|
<html>
|
3
3
|
|
4
4
|
<head>
|
5
|
+
<title>头歌营销系统</title>
|
5
6
|
<%= csrf_meta_tags %>
|
6
7
|
<%= csp_meta_tag %>
|
7
8
|
<%= Gon::Base.render_data %>
|
@@ -16,6 +17,8 @@
|
|
16
17
|
<div class="layui-header">
|
17
18
|
<a href="/missions">
|
18
19
|
<div class="layui-bg-black layuimini-logo layui-logo" id="head_a">
|
20
|
+
<%= image_tag "educode_sales/logo.png", class: 'header-logo' %>
|
21
|
+
<span class="app-title">营销系统</span>
|
19
22
|
</div>
|
20
23
|
</a>
|
21
24
|
|
data/config/routes.rb
CHANGED
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: 1.0.
|
4
|
+
version: 1.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- anke1460
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-06-
|
11
|
+
date: 2023-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -448,6 +448,7 @@ files:
|
|
448
448
|
- app/views/educode_sales/money_plan_records/index.json.jbuilder
|
449
449
|
- app/views/educode_sales/money_plans/_index.html.erb
|
450
450
|
- app/views/educode_sales/money_plans/add.html.erb
|
451
|
+
- app/views/educode_sales/money_plans/edit.html.erb
|
451
452
|
- app/views/educode_sales/money_plans/index.json.jbuilder
|
452
453
|
- app/views/educode_sales/money_plans/list.html.erb
|
453
454
|
- app/views/educode_sales/operation_plans/_monthPlan.html.erb
|
@@ -592,6 +593,7 @@ files:
|
|
592
593
|
- app/views/educode_sales/teachers/add_courses.html.erb
|
593
594
|
- app/views/educode_sales/teachers/add_event.html.erb
|
594
595
|
- app/views/educode_sales/teachers/add_keys.html.erb
|
596
|
+
- app/views/educode_sales/teachers/assign.html.erb
|
595
597
|
- app/views/educode_sales/teachers/course_list.json.jbuilder
|
596
598
|
- app/views/educode_sales/teachers/course_subject.json.jbuilder
|
597
599
|
- app/views/educode_sales/teachers/daily_paper.html.erb
|