educode_sales 0.3.8 → 0.4.2
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/assets/images/educode_sales/indexlogo.png +0 -0
- data/app/assets/javascripts/educode_sales/extent/xm-select.js +8 -0
- data/app/controllers/educode_sales/businesses_controller.rb +14 -4
- data/app/controllers/educode_sales/follow_ups_controller.rb +9 -0
- 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/operation_plans_controller.rb +2 -2
- data/app/controllers/educode_sales/operation_reports_controller.rb +2 -2
- data/app/controllers/educode_sales/places_controller.rb +1 -0
- data/app/controllers/educode_sales/plans_controller.rb +2 -2
- data/app/controllers/educode_sales/sale_reports_controller.rb +2 -2
- 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 +24 -12
- 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/teacher.rb +1 -1
- data/app/models/educode_sales/teacher_follow.rb +1 -0
- data/app/views/educode_sales/activities/edit.html.erb +0 -1
- data/app/views/educode_sales/activities/index.html.erb +20 -1
- data/app/views/educode_sales/activities/show_teachers.html.erb +1 -1
- data/app/views/educode_sales/businesses/edit.html.erb +2 -2
- data/app/views/educode_sales/businesses/edit_follow_record.html.erb +43 -1
- data/app/views/educode_sales/businesses/index.html.erb +12 -5
- data/app/views/educode_sales/businesses/index.json.jbuilder +3 -0
- data/app/views/educode_sales/businesses/new_follow_record.html.erb +45 -13
- data/app/views/educode_sales/businesses/show_follow.html.erb +12 -5
- data/app/views/educode_sales/businesses/show_follow_record.html.erb +6 -0
- data/app/views/educode_sales/commons/edit.html.erb +0 -1
- data/app/views/educode_sales/commons/index.html.erb +1 -0
- data/app/views/educode_sales/home/sales_staff.json.jbuilder +9 -0
- data/app/views/educode_sales/operation_plans/_monthPlan.html.erb +2 -2
- data/app/views/educode_sales/operation_plans/_monthly.html.erb +3 -2
- data/app/views/educode_sales/operation_plans/_weekPlan.html.erb +2 -1
- data/app/views/educode_sales/operation_plans/_weekly.html.erb +4 -2
- data/app/views/educode_sales/operation_plans/edit_week.html.erb +1 -0
- data/app/views/educode_sales/operation_plans/new_month.html.erb +2 -0
- data/app/views/educode_sales/operation_reports/edit.html.erb +27 -1
- data/app/views/educode_sales/places/edit.html.erb +0 -2
- data/app/views/educode_sales/places/index.html.erb +1 -0
- data/app/views/educode_sales/places/index.json.jbuilder +3 -3
- data/app/views/educode_sales/places/new.html.erb +0 -1
- data/app/views/educode_sales/plans/_monthPlan.html.erb +2 -2
- data/app/views/educode_sales/plans/_monthly.html.erb +2 -1
- data/app/views/educode_sales/plans/_weekPlan.html.erb +2 -1
- data/app/views/educode_sales/plans/_weekly.html.erb +3 -1
- data/app/views/educode_sales/plans/new_month.html.erb +1 -0
- data/app/views/educode_sales/roles/edit.html.erb +0 -1
- data/app/views/educode_sales/roles/index.html.erb +1 -1
- data/app/views/educode_sales/sale_reports/edit.html.erb +26 -0
- data/app/views/educode_sales/sales/index.html.erb +1 -0
- data/app/views/educode_sales/sales/index.json.jbuilder +2 -2
- data/app/views/educode_sales/sales/operations.html.erb +1 -0
- data/app/views/educode_sales/sales/trends.html.erb +0 -4
- data/app/views/educode_sales/staffs/index.html.erb +1 -0
- data/app/views/educode_sales/teachers/add_courses.html.erb +0 -1
- data/app/views/educode_sales/teachers/import.html.erb +41 -0
- data/app/views/educode_sales/teachers/index.html.erb +21 -4
- data/app/views/educode_sales/teachers/index.json.jbuilder +2 -3
- data/app/views/educode_sales/teachers/new.html.erb +0 -1
- data/app/views/educode_sales/teachers/show_follow.json.jbuilder +3 -2
- data/app/views/layouts/educode_sales/login.html.erb +1 -1
- data/config/routes.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 +8 -2
@@ -55,13 +55,16 @@ module EducodeSales
|
|
55
55
|
@teachers = @teachers.where("educode_sales_teachers.name like ?", "%#{params[:q][:name]}%")
|
56
56
|
end
|
57
57
|
if params[:q].present? && params[:q][:professional_title].present?
|
58
|
-
@teachers = @teachers.where("educode_sales_teachers.professional_title
|
58
|
+
@teachers = @teachers.where("educode_sales_teachers.professional_title = ?", "#{params[:q][:professional_title]}")
|
59
59
|
end
|
60
60
|
if params[:q].present? && params[:q][:regist_at].present?
|
61
61
|
@teachers = @teachers.where("educode_sales_teachers.regist_at like ?", "%#{params[:q][:regist_at]}%")
|
62
62
|
end
|
63
63
|
if params[:q].present? && params[:q][:attitude].present?
|
64
|
-
@teachers = @teachers.where("educode_sales_teachers.attitude_id = ?", "#{params[:q][:attitude]}")
|
64
|
+
# @teachers = @teachers.where("educode_sales_teachers.attitude_id = ?", "#{params[:q][:attitude]}")
|
65
|
+
@teachers = @teachers.joins("
|
66
|
+
JOIN educode_sales_teacher_follows ON educode_sales_teachers.follow_up_id = educode_sales_teacher_follows.id
|
67
|
+
").where("educode_sales_teacher_follows.attitude_id = ?", params[:q][:attitude])
|
65
68
|
end
|
66
69
|
if params[:q].present? && params[:q][:teacher_source].present?
|
67
70
|
@teachers = @teachers.where("educode_sales_teachers.source_id = ?", "#{params[:q][:teacher_source]}")
|
@@ -82,16 +85,18 @@ module EducodeSales
|
|
82
85
|
end
|
83
86
|
if params[:q].present? && params[:q][:date].present?
|
84
87
|
date = params[:q][:date].split(" - ")
|
85
|
-
@teachers = @teachers.where("created_at > ? AND created_at < ?", date[0], date[1])
|
88
|
+
@teachers = @teachers.where("educode_sales_teachers.created_at > ? AND educode_sales_teachers.created_at < ?", date[0], date[1])
|
86
89
|
end
|
87
90
|
|
88
|
-
@teachers = @teachers.order("created_at desc").page(params[:page]).per(params[:limit])
|
91
|
+
@teachers = @teachers.order("educode_sales_teachers.created_at desc").page(params[:page]).per(params[:limit])
|
89
92
|
|
90
93
|
end
|
91
94
|
end
|
92
95
|
end
|
93
96
|
|
94
|
-
|
97
|
+
def import
|
98
|
+
render layout: false
|
99
|
+
end
|
95
100
|
|
96
101
|
def new
|
97
102
|
render layout: false
|
@@ -109,17 +114,24 @@ module EducodeSales
|
|
109
114
|
teacher.regist_at = Time.now
|
110
115
|
end
|
111
116
|
|
112
|
-
|
113
|
-
|
117
|
+
unless params[:activity_id].present?
|
118
|
+
return render json: {msg: '该教师已存在', success: false } if EducodeSales::Teacher.find_by(department_id: params[:department_id],name: params[:name])
|
119
|
+
end
|
114
120
|
|
121
|
+
if params[:activity_id].present?
|
122
|
+
if params[:user_id].present?
|
115
123
|
# 把老师添加到活动列表,提取判断下老师列表是否存在
|
116
|
-
|
117
|
-
|
118
|
-
|
124
|
+
find_teacher = Teacher.find_by(user_id: params[:user_id])
|
125
|
+
if find_teacher
|
126
|
+
teacher = find_teacher
|
127
|
+
end
|
128
|
+
else
|
129
|
+
_teacher = EducodeSales::Teacher.find_by(department_id: params[:department_id],name: params[:name])
|
130
|
+
teacher = _teacher if _teacher.present?
|
119
131
|
end
|
132
|
+
return render json: {msg: '该教师已在活动中', success: false } if teacher && teacher.activity_teachers.find_by(activity_id: params[:activity_id]).present?
|
120
133
|
end
|
121
134
|
if params[:activity_id].present?
|
122
|
-
return render json: {msg: '该教师已在活动中', success: false } if teacher.activity_teachers.find_by(activity_id: params[:activity_id]).present?
|
123
135
|
teacher.activity_teachers.build(activity_id: params[:activity_id])
|
124
136
|
end
|
125
137
|
|
@@ -268,7 +280,7 @@ module EducodeSales
|
|
268
280
|
def course_list
|
269
281
|
user = User.find_by(id: params[:user_id])
|
270
282
|
if user
|
271
|
-
@courses = Course.joins(:course_members).where(course_members: {user_id: user.id}).distinct("course_id").page(params[:page]).per(params[:limit])
|
283
|
+
@courses = Course.joins(:course_members).where(course_members: {user_id: 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").page(params[:page]).per(params[:limit])
|
272
284
|
else
|
273
285
|
@courses = Course.none
|
274
286
|
end
|
@@ -5,6 +5,7 @@ module EducodeSales
|
|
5
5
|
has_many :money_plans, dependent: :destroy
|
6
6
|
has_many :key_person
|
7
7
|
has_many :teachers, through: :key_person
|
8
|
+
has_many :assign_follow_ups, dependent: :destroy
|
8
9
|
belongs_to :staff
|
9
10
|
belongs_to :stage, class_name: 'Common'
|
10
11
|
belongs_to :clazz, class_name: 'Common'
|
@@ -37,7 +37,7 @@ module EducodeSales
|
|
37
37
|
|
38
38
|
def students_count
|
39
39
|
if user_id.present?
|
40
|
-
course_ids =
|
40
|
+
course_ids = Course.joins(:course_members).where(course_members: {user_id: 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").pluck(:course_id)
|
41
41
|
CourseMember.where(course_id: course_ids, role: "STUDENT").count
|
42
42
|
else
|
43
43
|
0
|
@@ -2,7 +2,8 @@
|
|
2
2
|
<div class="layui-btn-container">
|
3
3
|
<span class="table-label">活动列表</span>
|
4
4
|
<% if can? :create, EducodeSales::Activity %>
|
5
|
-
|
5
|
+
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="import">导入数据</button>
|
6
|
+
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add"> 添加活动</button>
|
6
7
|
<% end %>
|
7
8
|
</div>
|
8
9
|
</script>
|
@@ -84,6 +85,7 @@
|
|
84
85
|
]
|
85
86
|
],
|
86
87
|
limit: 20,
|
88
|
+
limits: [10,15,20,30,40,50,60,70,80,90],
|
87
89
|
page: true
|
88
90
|
});
|
89
91
|
|
@@ -119,6 +121,23 @@
|
|
119
121
|
layer.full(index);
|
120
122
|
});
|
121
123
|
}
|
124
|
+
else if (obj.event === 'import') { //
|
125
|
+
var content = miniPage.getHrefContent('/missions/teachers/import');
|
126
|
+
var openWH = miniPage.getOpenWidthHeight();
|
127
|
+
import_index = layer.open({
|
128
|
+
title: '导入数据',
|
129
|
+
type: 1,
|
130
|
+
shade: 0.2,
|
131
|
+
shadeClose: true,
|
132
|
+
area: ['200px', '100px'],
|
133
|
+
offset: 'auto',
|
134
|
+
closeBtn: 0,
|
135
|
+
content: content,
|
136
|
+
});
|
137
|
+
$(window).on("resize", function () {
|
138
|
+
layer.full(index);
|
139
|
+
});
|
140
|
+
}
|
122
141
|
});
|
123
142
|
|
124
143
|
table.on('tool(activities_table)', function (obj) {
|
@@ -15,7 +15,7 @@
|
|
15
15
|
{{# if (d.login) { }}
|
16
16
|
<a href="<%= base_url%>/users/{{d.login}}" class="layui-table-link" target="_blank">{{ d.name }}</a>
|
17
17
|
{{# } else {}}
|
18
|
-
<a href="
|
18
|
+
<a href="javascript:;" class="">{{ d.name }}</a>
|
19
19
|
{{# }}}
|
20
20
|
</script>
|
21
21
|
<script type="text/html" id="courses">
|
@@ -2,9 +2,9 @@
|
|
2
2
|
<div class="layui-form layuimini-form">
|
3
3
|
<div class="layui-form-item" style="padding: 25px">
|
4
4
|
<div class="layui-inline">
|
5
|
-
<label class="layui-form-label required"
|
5
|
+
<label class="layui-form-label required">商机名称</label>
|
6
6
|
<div class="layui-input-block">
|
7
|
-
<input type="text" name="name" autocomplete="off" lay-verify="required" class="layui-input"
|
7
|
+
<input type="text" name="name" autocomplete="off" lay-verify="required" class="layui-input" value="<%= @business.name %>" style="width: 300px;">
|
8
8
|
</div>
|
9
9
|
</div>
|
10
10
|
<div class="layui-inline">
|
@@ -1,3 +1,4 @@
|
|
1
|
+
<%= Gon::Base.render_data %>
|
1
2
|
<h1 class="m-t-20 text-center"><%= @follow_up.business.name %></h1>
|
2
3
|
<div class="layui-form layuimini-form">
|
3
4
|
<div class="layui-form-item" style="padding: 25px">
|
@@ -74,6 +75,12 @@
|
|
74
75
|
</div>
|
75
76
|
<span style="margin-top: 10px; float:left;">%</span>
|
76
77
|
</div>
|
78
|
+
<div class="layui-form-item">
|
79
|
+
<label class="layui-form-label">指定跟进人</label>
|
80
|
+
<div class="layui-input-inline">
|
81
|
+
<div id="edit_assign_follow" style="width: 512px;"></div>
|
82
|
+
</div>
|
83
|
+
</div>
|
77
84
|
<div class="layui-form-item layui-form-text">
|
78
85
|
<label class="layui-form-label required">商机说明</label>
|
79
86
|
<div class="layui-input-block">
|
@@ -107,10 +114,11 @@
|
|
107
114
|
</div>
|
108
115
|
|
109
116
|
<script>
|
110
|
-
layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate'], function () {
|
117
|
+
layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate', 'xmSelect'], function () {
|
111
118
|
var form = layui.form,
|
112
119
|
layer = layui.layer,
|
113
120
|
table = layui.table,
|
121
|
+
xmSelect = layui.xmSelect,
|
114
122
|
laytpl = layui.laytpl,
|
115
123
|
request = layui.request,
|
116
124
|
laydate = layui.laydate,
|
@@ -124,8 +132,42 @@
|
|
124
132
|
elem: '#reception_at_edit'
|
125
133
|
});
|
126
134
|
|
135
|
+
var sales_list = xmSelect.render({
|
136
|
+
el: '#edit_assign_follow',
|
137
|
+
remoteSearch: true,
|
138
|
+
clickClose: true,
|
139
|
+
delay: 1000,
|
140
|
+
paging: true,
|
141
|
+
pageRemote: true,
|
142
|
+
filterable: true,
|
143
|
+
remoteMethod: function (val, cb, show, pageIndex) {
|
144
|
+
$.ajax( '/missions/sales_staff', {
|
145
|
+
method: 'get',
|
146
|
+
data: {
|
147
|
+
q: val,
|
148
|
+
page: pageIndex
|
149
|
+
},
|
150
|
+
dataType: 'json',
|
151
|
+
success: function (res) {
|
152
|
+
var data = res.data;
|
153
|
+
if (res.code == 0) {
|
154
|
+
cb(res.data, res.count);
|
155
|
+
} else {
|
156
|
+
layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
|
157
|
+
}
|
158
|
+
}
|
159
|
+
})
|
160
|
+
}
|
161
|
+
})
|
162
|
+
sales_list.setValue(gon.sales)
|
163
|
+
|
127
164
|
form.render();
|
128
165
|
form.on('submit(update_follow_up)', function (data) {
|
166
|
+
var assign_follow = [];
|
167
|
+
sales_list.getValue().forEach(function(d) {
|
168
|
+
assign_follow.push(d.value);
|
169
|
+
})
|
170
|
+
data.field.assign_follow_up = assign_follow;
|
129
171
|
request.authPut("missions/follow_ups/<%= @follow_up.id%>", data.field, function (res) {
|
130
172
|
if (res.success == false) {
|
131
173
|
layer.alert(res.msg)
|
@@ -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">搜索
|
@@ -72,7 +72,14 @@
|
|
72
72
|
</script>
|
73
73
|
<script type="text/html" id="currentTableBar">
|
74
74
|
<% if can? :add_follow, EducodeSales::Business %>
|
75
|
-
|
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
|
+
{{# }}}
|
81
|
+
<% end %>
|
82
|
+
|
76
83
|
<% end %>
|
77
84
|
<% if @more %>
|
78
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>
|
@@ -201,6 +208,7 @@
|
|
201
208
|
],
|
202
209
|
|
203
210
|
limit: 20,
|
211
|
+
limits: [10,15,20,30,40,50,60,70,80,90],
|
204
212
|
page: true,
|
205
213
|
skin: 'line',
|
206
214
|
done: function (res) {
|
@@ -229,7 +237,7 @@
|
|
229
237
|
edit(id);
|
230
238
|
break;
|
231
239
|
case 'delete':
|
232
|
-
deleteBusiness(id, elem.data
|
240
|
+
deleteBusiness(id, elem.data('name'));
|
233
241
|
break;
|
234
242
|
}
|
235
243
|
}
|
@@ -292,7 +300,7 @@
|
|
292
300
|
}
|
293
301
|
|
294
302
|
function deleteBusiness(id, name) {
|
295
|
-
|
303
|
+
layer.confirm('确定删除' + name, function (index) {
|
296
304
|
request.delete('missions/businesses/' + id, {}, function (res) {
|
297
305
|
layer.close(index);
|
298
306
|
table.reload("businesses_table")
|
@@ -408,7 +416,6 @@
|
|
408
416
|
})
|
409
417
|
});
|
410
418
|
}else if (obj.event === 'add_follow') { // 监听添加操作
|
411
|
-
console.log(parent.business_id);
|
412
419
|
business_id = parent.business_id
|
413
420
|
var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + parent.id);
|
414
421
|
var openWH = miniPage.getOpenWidthHeight();
|
@@ -17,6 +17,9 @@ json.data do
|
|
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
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
|
20
23
|
end
|
21
24
|
end
|
22
25
|
json.code 0
|
@@ -1,3 +1,4 @@
|
|
1
|
+
<%= Gon::Base.render_data %>
|
1
2
|
<h1 class="m-t-20 text-center"><%= @business.name %></h1>
|
2
3
|
<div class="layui-form layuimini-form">
|
3
4
|
<div class="layui-form-item" style="padding: 25px">
|
@@ -77,6 +78,12 @@
|
|
77
78
|
<input name="divide_rate" class="layui-input" value="<%= @last_follow_up&.divide_rate%>">
|
78
79
|
</div>
|
79
80
|
<span style="margin-top: 10px; float:left;">%</span>
|
81
|
+
</div>
|
82
|
+
<div class="layui-form-item">
|
83
|
+
<label class="layui-form-label">指定跟进人</label>
|
84
|
+
<div class="layui-input-inline">
|
85
|
+
<div id="assign_follow" style="width: 512px;"></div>
|
86
|
+
</div>
|
80
87
|
</div>
|
81
88
|
<div class="layui-form-item layui-form-text">
|
82
89
|
<label class="layui-form-label required">商机说明</label>
|
@@ -110,13 +117,14 @@
|
|
110
117
|
</div>
|
111
118
|
|
112
119
|
<script>
|
113
|
-
layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate'], function () {
|
120
|
+
layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate', 'xmSelect'], function () {
|
114
121
|
var form = layui.form,
|
115
122
|
layer = layui.layer,
|
116
123
|
table = layui.table,
|
117
124
|
laytpl = layui.laytpl,
|
118
125
|
request = layui.request,
|
119
126
|
laydate = layui.laydate,
|
127
|
+
xmSelect = layui.xmSelect,
|
120
128
|
$ = layui.$;
|
121
129
|
|
122
130
|
laydate.render({
|
@@ -126,22 +134,46 @@
|
|
126
134
|
laydate.render({
|
127
135
|
elem: '#reception_at_add'
|
128
136
|
});
|
137
|
+
var sales_list = xmSelect.render({
|
138
|
+
el: '#assign_follow',
|
139
|
+
remoteSearch: true,
|
140
|
+
clickClose: true,
|
141
|
+
delay: 1000,
|
142
|
+
paging: true,
|
143
|
+
pageRemote: true,
|
144
|
+
filterable: true,
|
145
|
+
remoteMethod: function (val, cb, show, pageIndex) {
|
146
|
+
$.ajax( '/missions/sales_staff', {
|
147
|
+
method: 'get',
|
148
|
+
data: {
|
149
|
+
q: val,
|
150
|
+
page: pageIndex
|
151
|
+
},
|
152
|
+
dataType: 'json',
|
153
|
+
success: function (res) {
|
154
|
+
var data = res.data;
|
155
|
+
if (res.code == 0) {
|
156
|
+
cb(res.data, res.count);
|
157
|
+
} else {
|
158
|
+
layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
|
159
|
+
}
|
129
160
|
|
161
|
+
}
|
162
|
+
})
|
163
|
+
}
|
164
|
+
})
|
165
|
+
|
166
|
+
sales_list.setValue(gon.sales);
|
130
167
|
form.render();
|
131
168
|
|
132
169
|
form.on('submit(add_follow_up)', function (data) {
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
// layer.alert(res.msg)
|
141
|
-
// } else {
|
142
|
-
// }
|
143
|
-
// })
|
144
|
-
request.authPost("missions/follow_ups", data.field, function (res) {
|
170
|
+
var assign_follow = [];
|
171
|
+
sales_list.getValue().forEach(function(d) {
|
172
|
+
assign_follow.push(d.value);
|
173
|
+
})
|
174
|
+
data.field.assign_follow_up = assign_follow;
|
175
|
+
data.field.business_id = "<%= @business.id %>";
|
176
|
+
request.authPost("missions/follow_ups", data.field, function (res) {
|
145
177
|
if (res.success == false) {
|
146
178
|
layer.alert(res.msg)
|
147
179
|
} 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>
|
@@ -142,7 +150,7 @@
|
|
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'
|
@@ -150,6 +158,7 @@
|
|
150
158
|
]
|
151
159
|
],
|
152
160
|
limit: 20,
|
161
|
+
limits: [10,15,20,30,40,50,60,70,80,90],
|
153
162
|
page: true,
|
154
163
|
skin: 'line',
|
155
164
|
// done: function (obj, first) {
|
@@ -173,7 +182,6 @@
|
|
173
182
|
|
174
183
|
table.on('toolbar(sale_plan_follow_table)', function (obj) {
|
175
184
|
if (obj.event === 'add') { // 监听添加操作
|
176
|
-
console.log(parent.business_id);
|
177
185
|
business_id = parent.business_id
|
178
186
|
var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + parent.id);
|
179
187
|
var openWH = miniPage.getOpenWidthHeight();
|
@@ -200,7 +208,6 @@
|
|
200
208
|
var data = obj.data;
|
201
209
|
follow_up_id = obj.data.id;
|
202
210
|
if (obj.event === 'delete') {
|
203
|
-
console.log(data);
|
204
211
|
layer.confirm('确定删除ID为' + data.id + "的跟进记录", function (index) {
|
205
212
|
request.authDelete("missions/follow_ups/" + data.id, {}, function() {
|
206
213
|
obj.del();
|
@@ -65,6 +65,12 @@
|
|
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
75
|
<label class="layui-form-label">商机说明:</label>
|
70
76
|
<div class="layui-input-block" style="padding-right: 20px;">
|
@@ -129,7 +129,7 @@
|
|
129
129
|
},
|
130
130
|
{
|
131
131
|
title: '操作',
|
132
|
-
minWidth:
|
132
|
+
minWidth: 200,
|
133
133
|
toolbar: '#currentTableBar',
|
134
134
|
align: "center",
|
135
135
|
fixed: 'right'
|
@@ -138,6 +138,7 @@
|
|
138
138
|
],
|
139
139
|
|
140
140
|
limit: 20,
|
141
|
+
limits: [10,15,20,30,40,50,60,70,80,90],
|
141
142
|
page: true,
|
142
143
|
skin: 'line'
|
143
144
|
});
|
@@ -179,7 +180,6 @@
|
|
179
180
|
*/
|
180
181
|
table.on('toolbar(currentTableFilter3)', function (obj) {
|
181
182
|
if (obj.event === 'add') { // 监听添加操作
|
182
|
-
console.log("a");
|
183
183
|
var content = miniPage.getHrefContent('/missions/operation_plans/new_month');
|
184
184
|
var openWH = miniPage.getOpenWidthHeight();
|
185
185
|
monthPlanIndex = layer.open({
|
@@ -132,7 +132,7 @@
|
|
132
132
|
},
|
133
133
|
{
|
134
134
|
title: '操作',
|
135
|
-
minWidth:
|
135
|
+
minWidth: 220,
|
136
136
|
toolbar: '#monthlyTableBar',
|
137
137
|
align: "center",
|
138
138
|
fixed: 'right'
|
@@ -166,6 +166,7 @@
|
|
166
166
|
},
|
167
167
|
|
168
168
|
limit: 20,
|
169
|
+
limits: [10,15,20,30,40,50,60,70,80,90],
|
169
170
|
page: true
|
170
171
|
});
|
171
172
|
|
@@ -240,7 +241,7 @@
|
|
240
241
|
|
241
242
|
var content = miniPage.getHrefContent('/missions/operation_reports/' + data.id + '/edit');
|
242
243
|
var openWH = miniPage.getOpenWidthHeight();
|
243
|
-
|
244
|
+
from_edit_monthly = true
|
244
245
|
MonthlyIndex = layer.open({
|
245
246
|
title: '编辑',
|
246
247
|
type: 1,
|
@@ -140,7 +140,7 @@
|
|
140
140
|
},
|
141
141
|
{
|
142
142
|
title: '操作',
|
143
|
-
minWidth:
|
143
|
+
minWidth: 200,
|
144
144
|
toolbar: '#week_plan_currentTableBar',
|
145
145
|
align: "center",
|
146
146
|
fixed: 'right'
|
@@ -149,6 +149,7 @@
|
|
149
149
|
],
|
150
150
|
|
151
151
|
limit: 20,
|
152
|
+
limits: [10,15,20,30,40,50,60,70,80,90],
|
152
153
|
page: true,
|
153
154
|
skin: 'line'
|
154
155
|
});
|
@@ -133,7 +133,7 @@
|
|
133
133
|
},
|
134
134
|
{
|
135
135
|
title: '操作',
|
136
|
-
|
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
|
-
|
247
|
+
from_edit_monthly = false
|
248
|
+
WeeklyIndex = layer.open({
|
247
249
|
title: '编辑周报',
|
248
250
|
type: 1,
|
249
251
|
shade: 0.2,
|
@@ -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;
|