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 +4 -4
- data/app/controllers/educode_sales/businesses_controller.rb +19 -7
- data/app/controllers/educode_sales/follow_ups_controller.rb +1 -1
- data/app/controllers/educode_sales/key_person_controller.rb +1 -1
- data/app/controllers/educode_sales/plans_controller.rb +1 -1
- data/app/controllers/educode_sales/teachers_controller.rb +12 -0
- data/app/models/educode_sales/key_person.rb +1 -1
- data/app/views/educode_sales/businesses/edit.html.erb +13 -2
- data/app/views/educode_sales/businesses/edit_follow_record.html.erb +9 -3
- data/app/views/educode_sales/businesses/index.html.erb +154 -15
- data/app/views/educode_sales/businesses/index.json.jbuilder +1 -0
- data/app/views/educode_sales/businesses/new.html.erb +11 -1
- data/app/views/educode_sales/businesses/new_follow_record.html.erb +8 -2
- data/app/views/educode_sales/follow_ups/teachers.json.jbuilder +3 -2
- data/app/views/educode_sales/plans/new_month.html.erb +2 -2
- data/app/views/educode_sales/teachers/add_keys.html.erb +53 -8
- data/app/views/educode_sales/teachers/edit.html.erb +4 -2
- data/app/views/educode_sales/teachers/index.html.erb +119 -23
- data/app/views/educode_sales/teachers/new.html.erb +1 -0
- data/db/migrate/20211009031109_add_tel_key_peoples.rb +5 -0
- data/db/migrate/20211009063423_add_source_businesses.rb +5 -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: c5f62ecb1fb5d2f9b42761618eae0525dd789bb69fc2522c108749eacfa26f05
|
4
|
+
data.tar.gz: a0ec504c642dfe71bc8bd513140d96bc82b9de444a48945ee245bb812bc4884b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
@@ -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.
|
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?
|
@@ -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
|
-
|
20
|
-
|
21
|
-
|
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? :
|
75
|
-
|
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
|
79
|
-
|
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:
|
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
|
-
|
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
|
-
}
|
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
|
|
@@ -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(
|
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
|
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),
|
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
|
21
|
+
<label class="layui-form-label ">职务</label>
|
15
22
|
<div class="layui-input-block">
|
16
|
-
<input type="text" name="job" autocomplete="off"
|
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
|
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
|
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), {
|
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="
|
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
|
-
|
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.
|
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
|
-
|
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
|
83
|
-
|
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:
|
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 === '
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
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
|
-
|
336
|
-
|
337
|
-
|
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(
|
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) {
|
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.
|
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-
|
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
|