educode_sales 0.3.6 → 0.4.0
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/assets/stylesheets/educode_sales/public.css +2 -1
- data/app/controllers/educode_sales/businesses_controller.rb +33 -11
- 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 +35 -11
- 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/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 +32 -11
- data/app/views/educode_sales/activities/show_teachers.html.erb +1 -1
- data/app/views/educode_sales/businesses/edit.html.erb +15 -4
- data/app/views/educode_sales/businesses/edit_follow_record.html.erb +52 -4
- data/app/views/educode_sales/businesses/index.html.erb +160 -14
- data/app/views/educode_sales/businesses/index.json.jbuilder +4 -0
- data/app/views/educode_sales/businesses/new.html.erb +11 -1
- data/app/views/educode_sales/businesses/new_follow_record.html.erb +53 -15
- 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/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 +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 +3 -2
- 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/add_keys.html.erb +53 -8
- data/app/views/educode_sales/teachers/edit.html.erb +4 -2
- data/app/views/educode_sales/teachers/import.html.erb +41 -0
- data/app/views/educode_sales/teachers/index.html.erb +140 -27
- data/app/views/educode_sales/teachers/index.json.jbuilder +2 -1
- data/app/views/educode_sales/teachers/new.html.erb +1 -1
- data/app/views/layouts/educode_sales/login.html.erb +1 -1
- 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 +10 -2
@@ -177,7 +177,6 @@
|
|
177
177
|
}
|
178
178
|
})
|
179
179
|
$("#" + el).blur(function () {
|
180
|
-
console.log(this.value)
|
181
180
|
if (this.value == '') {
|
182
181
|
layer.msg("不能为空")
|
183
182
|
} else {
|
@@ -185,13 +184,11 @@
|
|
185
184
|
data[el] = this.value;
|
186
185
|
var self = this;
|
187
186
|
data['year'] = year;
|
188
|
-
console.log(data, $("#years").value, year)
|
189
187
|
request.post( '/missions/sales/sale_trends',
|
190
188
|
data,
|
191
189
|
function(res) {
|
192
190
|
$("#" + el + "_field").addClass("layui-hide");
|
193
191
|
$("#" + el + "_value").removeClass("layui-hide");
|
194
|
-
console.log(self.value)
|
195
192
|
$("#" + el + "_value")[0].innerText = self.value + "万";
|
196
193
|
}
|
197
194
|
)
|
@@ -200,7 +197,6 @@
|
|
200
197
|
}
|
201
198
|
|
202
199
|
form.on('select(year)', function(data){
|
203
|
-
console.log(data, )
|
204
200
|
year = data.value
|
205
201
|
window.location.href = "/missions/sales/trends?year=" + data.value
|
206
202
|
})
|
@@ -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
|
|
@@ -0,0 +1,41 @@
|
|
1
|
+
<div style="padding-left: 50px">
|
2
|
+
<button type="button" class="layui-btn" id="test3"><i class="layui-icon"></i>选择文件</button>
|
3
|
+
</div>
|
4
|
+
<script>
|
5
|
+
layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'selectInput'], function () {
|
6
|
+
var form = layui.form,
|
7
|
+
layer = layui.layer,
|
8
|
+
table = layui.table,
|
9
|
+
laytpl = layui.laytpl,
|
10
|
+
upload = layui.upload,
|
11
|
+
request = layui.request,
|
12
|
+
$ = layui.$;
|
13
|
+
selectInput = layui.selectInput;
|
14
|
+
|
15
|
+
form.render();
|
16
|
+
|
17
|
+
//指定允许上传的文件类型
|
18
|
+
upload.render({
|
19
|
+
elem: '#test3'
|
20
|
+
,url: '/missions/import_teachers' //此处配置你自己的上传接口即可
|
21
|
+
,accept: 'file', //普通文件
|
22
|
+
headers: {
|
23
|
+
'X-CSRF-Token': $('meta[name=csrf-token]').attr('content')
|
24
|
+
}
|
25
|
+
,before: function(obj){ //obj参数包含的信息,跟 choose回调完全一致,可参见上文。
|
26
|
+
layer.load(); //上传loading
|
27
|
+
}
|
28
|
+
,done: function(res){
|
29
|
+
layer.msg('导入成功');
|
30
|
+
table.reload('teachers_table');
|
31
|
+
table.reload('activities_table');
|
32
|
+
layer.close(parent.import_index)
|
33
|
+
layer.closeAll('loading'); //关闭loading
|
34
|
+
}
|
35
|
+
,error: function(index, upload){
|
36
|
+
layer.closeAll('loading'); //关闭loading
|
37
|
+
layer.alert('导入失败,请检查文件格式')
|
38
|
+
}
|
39
|
+
});
|
40
|
+
});
|
41
|
+
</script>
|
@@ -65,26 +65,33 @@
|
|
65
65
|
<div class="layui-btn-container">
|
66
66
|
<span class="table-label">教师列表</span>
|
67
67
|
<% if can? :create, EducodeSales::Teacher %>
|
68
|
-
|
69
|
-
|
68
|
+
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="import">导入数据</button>
|
69
|
+
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add">添加</button>
|
70
|
+
<% end %>
|
70
71
|
<!-- <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="search_new"> 搜索添加 -->
|
71
72
|
</button>
|
72
73
|
</div>
|
73
74
|
</script>
|
74
|
-
<div class="
|
75
|
+
<div class="">
|
75
76
|
<table class="layui-hide" id="teachers_table" style="min-height: 300px;" lay-filter="teachers_table"></table>
|
76
77
|
</div>
|
77
78
|
<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
|
79
|
+
<%# if can? :create, EducodeSales::OperationPlan %>
|
80
|
+
<!-- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="addWeek">添加周计划</a>-->
|
81
|
+
<!-- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="addMonth">添加月计划</a>-->
|
82
|
+
<%# end %>
|
83
|
+
<%# if can? :update, EducodeSales::Teacher %>
|
84
|
+
<!-- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>-->
|
85
|
+
<%# end %>
|
86
|
+
<%# if can? :destroy, EducodeSales::Teacher %>
|
87
|
+
<!-- <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>-->
|
88
|
+
<%# end %>
|
89
|
+
<% if can? :add_follow, EducodeSales::Teacher %>
|
90
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
|
81
91
|
<% end %>
|
82
|
-
<% if
|
83
|
-
|
92
|
+
<% if @more %>
|
93
|
+
<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
94
|
<% 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
95
|
</script>
|
89
96
|
<script type="text/html" id="name">
|
90
97
|
{{# if (d.login) { }}
|
@@ -112,6 +119,7 @@
|
|
112
119
|
var $ = layui.jquery,
|
113
120
|
form = layui.form,
|
114
121
|
request = layui.request,
|
122
|
+
dropdown = layui.dropdown,
|
115
123
|
miniPage = layui.miniPage,
|
116
124
|
laydate = layui.laydate;
|
117
125
|
|
@@ -219,7 +227,7 @@
|
|
219
227
|
},
|
220
228
|
{
|
221
229
|
title: '操作',
|
222
|
-
minWidth:
|
230
|
+
minWidth: 170,
|
223
231
|
toolbar: '#currentTableBar',
|
224
232
|
align: "center",
|
225
233
|
fixed: 'right'
|
@@ -228,9 +236,102 @@
|
|
228
236
|
],
|
229
237
|
|
230
238
|
limit: 20,
|
239
|
+
limits: [10,15,20,30,40,50,60,70,80,90],
|
231
240
|
page: true,
|
241
|
+
done: function (res) {
|
242
|
+
drowpdwonRender()
|
243
|
+
}
|
232
244
|
});
|
245
|
+
var dropmenu = gon.menus;
|
246
|
+
|
247
|
+
drowpdwonRender = function() {
|
248
|
+
dropdown.render({
|
249
|
+
elem: '.more-btn',
|
250
|
+
data: dropmenu,
|
251
|
+
click: function(data, othis){
|
252
|
+
var elem = $(this.elem);
|
253
|
+
id = elem.data('id');
|
254
|
+
switch (data.event) {
|
255
|
+
case 'week':
|
256
|
+
week(id);
|
257
|
+
break;
|
258
|
+
case 'month':
|
259
|
+
month(id);
|
260
|
+
break;
|
261
|
+
case 'edit':
|
262
|
+
edit(id);
|
263
|
+
break;
|
264
|
+
case 'delete':
|
265
|
+
deleteBusiness(id, elem.data('name'));
|
266
|
+
break;
|
267
|
+
}
|
268
|
+
}
|
269
|
+
});
|
270
|
+
}
|
271
|
+
|
272
|
+
function week(id) {
|
273
|
+
var content = miniPage.getHrefContent('/missions/operation_plans/new_week?teacher_id=' + id);
|
274
|
+
var openWH = miniPage.getOpenWidthHeight();
|
275
|
+
|
276
|
+
teacherindex1 = layer.open({
|
277
|
+
title: '添加周计划',
|
278
|
+
type: 1,
|
279
|
+
shade: 0.2,
|
280
|
+
maxmin: true,
|
281
|
+
shadeClose: true,
|
282
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
283
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
284
|
+
content: content
|
285
|
+
});
|
286
|
+
$(window).on("resize", function () {
|
287
|
+
layer.full(sindex);
|
288
|
+
});
|
289
|
+
}
|
290
|
+
|
291
|
+
function edit(id) {
|
292
|
+
var content = miniPage.getHrefContent('/missions/teachers/' + id + '/edit');
|
293
|
+
var openWH = miniPage.getOpenWidthHeight();
|
294
|
+
sindex = layer.open({
|
295
|
+
title: '编辑',
|
296
|
+
type: 1,
|
297
|
+
shade: 0.2,
|
298
|
+
maxmin: true,
|
299
|
+
shadeClose: true,
|
300
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
301
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
302
|
+
content: content
|
303
|
+
});
|
304
|
+
$(window).on("resize", function () {
|
305
|
+
layer.full(sindex);
|
306
|
+
});
|
307
|
+
}
|
308
|
+
|
309
|
+
function month(id) {
|
310
|
+
var content = miniPage.getHrefContent('/missions/operation_plans/new_month?teacher_id=' + id);
|
311
|
+
var openWH = miniPage.getOpenWidthHeight();
|
312
|
+
teacherindex2 = layer.open({
|
313
|
+
title: '添加月计划',
|
314
|
+
type: 1,
|
315
|
+
shade: 0.2,
|
316
|
+
maxmin: true,
|
317
|
+
shadeClose: true,
|
318
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
319
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
320
|
+
content: content
|
321
|
+
});
|
322
|
+
$(window).on("resize", function () {
|
323
|
+
layer.full(sindex);
|
324
|
+
});
|
325
|
+
}
|
233
326
|
|
327
|
+
function deleteBusiness(id, name) {
|
328
|
+
layer.confirm('确定删除' + name, function (index) {
|
329
|
+
request.delete('missions/teachers/' + id, {}, function (res) {
|
330
|
+
layer.close(index);
|
331
|
+
table.reload("teachers_table")
|
332
|
+
})
|
333
|
+
});
|
334
|
+
}
|
234
335
|
|
235
336
|
var sort = {}, search = {};
|
236
337
|
table.on('sort(teachers_table)', function (obj) {
|
@@ -248,7 +349,6 @@
|
|
248
349
|
// 监听搜索操作
|
249
350
|
form.on('submit(search_teachers)', function (data) {
|
250
351
|
search = data.field
|
251
|
-
console.log(search);
|
252
352
|
table.reload('teachers_table', {
|
253
353
|
page: {
|
254
354
|
curr: 1
|
@@ -276,7 +376,7 @@
|
|
276
376
|
* toolbar事件监听
|
277
377
|
*/
|
278
378
|
table.on('toolbar(teachers_table)', function (obj) {
|
279
|
-
if (obj.event === 'add') {
|
379
|
+
if (obj.event === 'add') { // 手动添加
|
280
380
|
var content = miniPage.getHrefContent('/missions/teachers/new');
|
281
381
|
var openWH = miniPage.getOpenWidthHeight();
|
282
382
|
index = layer.open({
|
@@ -292,6 +392,22 @@
|
|
292
392
|
$(window).on("resize", function () {
|
293
393
|
layer.full(index);
|
294
394
|
});
|
395
|
+
}else if (obj.event === 'import') { //
|
396
|
+
var content = miniPage.getHrefContent('/missions/teachers/import');
|
397
|
+
var openWH = miniPage.getOpenWidthHeight();
|
398
|
+
import_index = layer.open({
|
399
|
+
title: '导入数据',
|
400
|
+
type: 1,
|
401
|
+
shade: 0.2,
|
402
|
+
shadeClose: true,
|
403
|
+
area: ['200px', '100px'],
|
404
|
+
offset: 'auto',
|
405
|
+
closeBtn: 0,
|
406
|
+
content: content,
|
407
|
+
});
|
408
|
+
$(window).on("resize", function () {
|
409
|
+
layer.full(index);
|
410
|
+
});
|
295
411
|
} else if (obj.event === 'search_new') { // 搜索添加
|
296
412
|
content = miniPage.getHrefContent('/missions/teachers/search_new');
|
297
413
|
openWH = miniPage.getOpenWidthHeight();
|
@@ -319,12 +435,12 @@
|
|
319
435
|
table.on('tool(teachers_table)', function (obj) {
|
320
436
|
var data = obj.data;
|
321
437
|
id = data.id
|
322
|
-
if (obj.event === '
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
title: '
|
438
|
+
if (obj.event === 'add_event') { // 监听添加操作
|
439
|
+
teacher_id = data.id
|
440
|
+
var content = miniPage.getHrefContent('/missions/teachers/new_follow_record?id=' + data.id);
|
441
|
+
var openWH = miniPage.getOpenWidthHeight();
|
442
|
+
sale_plan_index = layer.open({
|
443
|
+
title: '添加教师跟进记录',
|
328
444
|
type: 1,
|
329
445
|
shade: 0.2,
|
330
446
|
maxmin: true,
|
@@ -332,16 +448,13 @@
|
|
332
448
|
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
333
449
|
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
334
450
|
content: content,
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
// $("#edit_dep").val(data.dep);
|
339
|
-
// },
|
451
|
+
success: function (layero, index) {
|
452
|
+
form.render('select');
|
453
|
+
}
|
340
454
|
});
|
341
455
|
$(window).on("resize", function () {
|
342
|
-
layer.full(
|
456
|
+
layer.full(sale_plan_index);
|
343
457
|
});
|
344
|
-
return false;
|
345
458
|
} else if (obj.event === 'delete') {
|
346
459
|
layer.confirm('确定删除' + data.name, function (index) {
|
347
460
|
request.delete('missions/teachers/' + data.id, {}, function (res) {
|
@@ -13,7 +13,8 @@ json.data do
|
|
13
13
|
json.activities_count d.activity_teachers_count
|
14
14
|
json.source EducodeSales::Common.teacher_source_name[d.source_id]
|
15
15
|
# a_id = EducodeSales::TeacherFollow.order(created_at: :desc).find_by(teacher_id: d.id).present? ? EducodeSales::TeacherFollow.order(created_at: :desc).find_by(teacher_id: d.id).attitude_id : 73
|
16
|
-
json.attitude EducodeSales::TeacherFollow.find_by(teacher_id: d.id).present? ? EducodeSales::Common.find(EducodeSales::TeacherFollow.order(created_at: :desc).find_by(teacher_id: d.id).attitude_id).name : ''
|
16
|
+
# json.attitude EducodeSales::TeacherFollow.find_by(teacher_id: d.id).present? ? EducodeSales::Common.find(EducodeSales::TeacherFollow.order(created_at: :desc).find_by(teacher_id: d.id).attitude_id).name : ''
|
17
|
+
json.attitude d.follow_up&.attitude&.name
|
17
18
|
json.courses_count d.user_id ? Course.joins(:course_members).where(course_members: {user_id: d.user_id}).distinct("course_id").count : 0
|
18
19
|
json.actives d.actives
|
19
20
|
json.students d.students_count
|
@@ -81,7 +81,6 @@
|
|
81
81
|
return cb([]);
|
82
82
|
}
|
83
83
|
request.get('missions/search_edu_teacher?q=' + value, {}, function (res) {
|
84
|
-
console.log(res);
|
85
84
|
return cb(res)
|
86
85
|
})
|
87
86
|
}
|
@@ -156,6 +155,7 @@
|
|
156
155
|
table.reload('activities_table');
|
157
156
|
table.reload('teachers_table');
|
158
157
|
layer.close(parent.index)
|
158
|
+
layer.close(parent.sindex)
|
159
159
|
}
|
160
160
|
})
|
161
161
|
return false;
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<title><%= @title || '头歌营销系统' %></title>
|
6
6
|
<%= csrf_meta_tags %>
|
7
7
|
<%= csp_meta_tag %>
|
8
|
-
<%= favicon_link_tag "educode_sales/
|
8
|
+
<%= favicon_link_tag "educode_sales/logo.png" %>
|
9
9
|
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
|
10
10
|
<%= stylesheet_link_tag "educode_sales/application", media: "all" %>
|
11
11
|
<%= javascript_include_tag "educode_sales/application" %>
|
data/config/routes.rb
CHANGED
@@ -9,6 +9,7 @@ EducodeSales::Engine.routes.draw do
|
|
9
9
|
get :search_edu_teacher,to: "home#search_edu_teacher"
|
10
10
|
get :search, to: "home#search"
|
11
11
|
get :no_permission, to: "home#no_permission"
|
12
|
+
get :sales_staff, to: "home#sales_staff"
|
12
13
|
|
13
14
|
resources :sessions do
|
14
15
|
end
|
@@ -110,8 +111,12 @@ EducodeSales::Engine.routes.draw do
|
|
110
111
|
end
|
111
112
|
end
|
112
113
|
|
114
|
+
|
115
|
+
resources :import_teachers
|
116
|
+
|
113
117
|
resources :teachers do
|
114
118
|
collection do
|
119
|
+
get :import
|
115
120
|
get :add_keys
|
116
121
|
get :search_new
|
117
122
|
get :add_courses
|
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.
|
4
|
+
version: 0.4.0
|
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-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -96,6 +96,7 @@ files:
|
|
96
96
|
- app/assets/javascripts/educode_sales/extent/miniPage.js
|
97
97
|
- app/assets/javascripts/educode_sales/extent/request.js
|
98
98
|
- app/assets/javascripts/educode_sales/extent/select_input.js
|
99
|
+
- app/assets/javascripts/educode_sales/extent/xm-select.js
|
99
100
|
- app/assets/javascripts/educode_sales/layui.js
|
100
101
|
- app/assets/stylesheets/educode_sales/app.css
|
101
102
|
- app/assets/stylesheets/educode_sales/application.css
|
@@ -120,6 +121,7 @@ files:
|
|
120
121
|
- app/controllers/educode_sales/commons_controller.rb
|
121
122
|
- app/controllers/educode_sales/follow_ups_controller.rb
|
122
123
|
- app/controllers/educode_sales/home_controller.rb
|
124
|
+
- app/controllers/educode_sales/import_teachers_controller.rb
|
123
125
|
- app/controllers/educode_sales/key_person_controller.rb
|
124
126
|
- app/controllers/educode_sales/operation_plans_controller.rb
|
125
127
|
- app/controllers/educode_sales/operation_reports_controller.rb
|
@@ -146,6 +148,7 @@ files:
|
|
146
148
|
- app/models/educode_sales/activity.rb
|
147
149
|
- app/models/educode_sales/activity_teacher.rb
|
148
150
|
- app/models/educode_sales/application_record.rb
|
151
|
+
- app/models/educode_sales/assign_follow_up.rb
|
149
152
|
- app/models/educode_sales/business.rb
|
150
153
|
- app/models/educode_sales/common.rb
|
151
154
|
- app/models/educode_sales/course_subject.rb
|
@@ -194,6 +197,7 @@ files:
|
|
194
197
|
- app/views/educode_sales/follow_ups/teachers.json.jbuilder
|
195
198
|
- app/views/educode_sales/home/index.html.erb
|
196
199
|
- app/views/educode_sales/home/no_permission.html.erb
|
200
|
+
- app/views/educode_sales/home/sales_staff.json.jbuilder
|
197
201
|
- app/views/educode_sales/home/search.json.jbuilder
|
198
202
|
- app/views/educode_sales/home/search_edu_teacher.json.jbuilder
|
199
203
|
- app/views/educode_sales/home/search_teacher.json.jbuilder
|
@@ -285,6 +289,7 @@ files:
|
|
285
289
|
- app/views/educode_sales/teachers/course_subject.json.jbuilder
|
286
290
|
- app/views/educode_sales/teachers/edit.html.erb
|
287
291
|
- app/views/educode_sales/teachers/edit_follow_record.html.erb
|
292
|
+
- app/views/educode_sales/teachers/import.html.erb
|
288
293
|
- app/views/educode_sales/teachers/index.html.erb
|
289
294
|
- app/views/educode_sales/teachers/index.json.jbuilder
|
290
295
|
- app/views/educode_sales/teachers/new.html.erb
|
@@ -325,6 +330,9 @@ files:
|
|
325
330
|
- db/migrate/20210913070728_create_educode_sales_activity_teachers.rb
|
326
331
|
- db/migrate/20210913071607_create_educode_sales_course_subjects.rb
|
327
332
|
- db/migrate/20210915061738_add_students_count_teacher_follow_ups.rb
|
333
|
+
- db/migrate/20211009031109_add_tel_key_peoples.rb
|
334
|
+
- db/migrate/20211009063423_add_source_businesses.rb
|
335
|
+
- db/migrate/20211013060712_create_educode_sales_assign_follow_ups.rb
|
328
336
|
- lib/educode_sales.rb
|
329
337
|
- lib/educode_sales/engine.rb
|
330
338
|
- lib/educode_sales/version.rb
|