educode_sales 0.5.5 → 0.5.6
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 +2 -0
- data/app/controllers/educode_sales/follow_ups_controller.rb +57 -0
- data/app/controllers/educode_sales/home_controller.rb +11 -0
- data/app/controllers/educode_sales/sale_trends_controller.rb +1 -2
- data/app/controllers/educode_sales/teachers_controller.rb +35 -14
- data/app/models/educode_sales/teacher.rb +2 -1
- data/app/models/educode_sales/teacher_assign_follow.rb +6 -0
- data/app/views/educode_sales/activities/index.html.erb +4 -5
- data/app/views/educode_sales/activities/show_teachers.html.erb +1 -1
- data/app/views/educode_sales/businesses/_follows.html.erb +233 -0
- data/app/views/educode_sales/businesses/edit_follow_record.html.erb +48 -4
- data/app/views/educode_sales/businesses/index.html.erb +130 -62
- data/app/views/educode_sales/businesses/new_follow_record.html.erb +49 -4
- data/app/views/educode_sales/businesses/show_follow.html.erb +4 -4
- data/app/views/educode_sales/businesses/time_line.html.erb +1 -1
- data/app/views/educode_sales/follow_ups/index.json.jbuilder +19 -0
- data/app/views/educode_sales/home/sales_place.json.jbuilder +9 -0
- data/app/views/educode_sales/recycles/index.html.erb +1 -1
- data/app/views/educode_sales/sale_trends/trends.html.erb +2 -2
- data/app/views/educode_sales/sales/operations.html.erb +2 -0
- data/app/views/educode_sales/teachers/course_list.json.jbuilder +1 -1
- data/app/views/educode_sales/teachers/edit.html.erb +53 -7
- data/app/views/educode_sales/teachers/index.html.erb +35 -1
- data/app/views/educode_sales/teachers/index.json.jbuilder +4 -1
- data/app/views/educode_sales/teachers/new.html.erb +55 -17
- data/config/routes.rb +1 -0
- data/db/migrate/20211201023750_create_educode_sales_teacher_assign_follows.rb +11 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +7 -2
@@ -1,66 +1,80 @@
|
|
1
|
-
<div class="
|
2
|
-
<
|
3
|
-
<
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
1
|
+
<div class="layui-tab" lay-filter="operation_tab">
|
2
|
+
<ul class="layui-tab-title">
|
3
|
+
<li class="layui-this follows_li">跟进动态</li>
|
4
|
+
<li class="businesses_list_li" >商机列表</li>
|
5
|
+
</ul>
|
6
|
+
<div class="layui-tab-content">
|
7
|
+
<div class="layui-tab-item follows_div layui-show">
|
8
|
+
<!-- 跟进动态-->
|
9
|
+
<%=render 'follows' %>
|
10
|
+
</div>
|
11
|
+
<div class="layui-tab-item businesses_list_div">
|
12
|
+
<!--商机列表-->
|
13
|
+
<div class="min-height-table">
|
14
|
+
<div style="margin: 10px 10px 10px 10px">
|
15
|
+
<form class="layui-form layui-form-pane" lay-filter="search_form">
|
16
|
+
<div class="layui-form-item">
|
17
|
+
<div class="layui-inline">
|
18
|
+
<label class="layui-form-label">商机名称</label>
|
19
|
+
<div class="layui-input-inline">
|
20
|
+
<input type="text" name="name" autocomplete="off" class="layui-input" value="<%=params[:name] %>">
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
<div class="layui-inline">
|
24
|
+
<label class="layui-form-label">单位</label>
|
25
|
+
<div class="layui-input-inline">
|
26
|
+
<input type="text" name="department" autocomplete="off" class="layui-input">
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
<div class="layui-inline">
|
30
|
+
<label class="layui-form-label">销售人员</label>
|
31
|
+
<div class="layui-input-inline">
|
32
|
+
<%= select_tag "staff_id", options_for_select(@staffs, params[:staff_id]), { 'lay-filter': 'staff_id', include_blank: true } %>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
<div class="layui-inline">
|
36
|
+
<label class="layui-form-label">项目类型</label>
|
37
|
+
<div class="layui-input-inline">
|
38
|
+
<%= select_tag "business_type", options_for_select(EducodeSales::Common.where(clazz: 'business_type').pluck(:name, :id), params[:clazz_id]), { 'lay-filter': 'clazz_id', include_blank: true } %>
|
39
|
+
</div>
|
40
|
+
</div>
|
41
|
+
<div class="layui-inline m-t-10">
|
42
|
+
<label class="layui-form-label">项目阶段</label>
|
43
|
+
<div class="layui-input-inline">
|
44
|
+
<%= select_tag "business_step", options_for_select(EducodeSales::Common.where(clazz: 'business_step').pluck(:name, :id)), { include_blank: true } %>
|
45
|
+
</div>
|
46
|
+
</div>
|
47
|
+
<div class="layui-inline">
|
48
|
+
<label class="layui-form-label">渠道名称</label>
|
49
|
+
<div class="layui-input-inline">
|
50
|
+
<div id="index_place" style="width: 190px;"></div>
|
51
|
+
</div>
|
52
|
+
</div>
|
53
|
+
<div class="layui-inline">
|
54
|
+
<label class="layui-form-label">区域</label>
|
55
|
+
<div class="layui-input-inline">
|
56
|
+
<%= select_tag "area", options_for_select(EducodeSales::Common.where(clazz: 'area').pluck(:name, :id)), { include_blank: true } %>
|
57
|
+
</div>
|
58
|
+
</div>
|
59
|
+
<div class="layui-inline">
|
60
|
+
<label class="layui-form-label">起止时间</label>
|
61
|
+
<div class="layui-input-inline">
|
62
|
+
<input type="text" class="layui-input" id="date" name="date" placeholder=" - ">
|
63
|
+
</div>
|
64
|
+
</div>
|
65
|
+
<div class="layui-inline">
|
66
|
+
<button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
|
67
|
+
</button>
|
68
|
+
<button type="submit" id="search_bt" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_bussiness">搜索
|
69
|
+
</button>
|
70
|
+
</div>
|
71
|
+
</div>
|
72
|
+
</form>
|
58
73
|
</div>
|
74
|
+
<table class="layui-hide" id="businesses_table" lay-filter="businesses_table"></table>
|
59
75
|
</div>
|
60
|
-
</
|
76
|
+
</div>
|
61
77
|
</div>
|
62
|
-
|
63
|
-
<table class="layui-hide" id="businesses_table" lay-filter="businesses_table"></table>
|
64
78
|
</div>
|
65
79
|
<script type="text/html" id="bussinessBar">
|
66
80
|
<div class="layui-btn-container">
|
@@ -109,6 +123,59 @@
|
|
109
123
|
range: true
|
110
124
|
});
|
111
125
|
|
126
|
+
var is_show = <%=params[:name].present? || params[:clazz_id].present? %>
|
127
|
+
if(is_show){
|
128
|
+
$('.follows_li').removeClass('layui-this');
|
129
|
+
$('.follows_div').removeClass('layui-show');
|
130
|
+
$('.businesses_list_li').addClass('layui-this');
|
131
|
+
$('.businesses_list_div').addClass('layui-show');
|
132
|
+
}
|
133
|
+
|
134
|
+
var index_place_list = xmSelect.render({
|
135
|
+
el: '#index_place',
|
136
|
+
model: {
|
137
|
+
icon: 'hidden',
|
138
|
+
label: {
|
139
|
+
type: 'text',
|
140
|
+
text: {
|
141
|
+
//左边拼接的字符
|
142
|
+
left: '',
|
143
|
+
//右边拼接的字符
|
144
|
+
right: '',
|
145
|
+
//中间的分隔符
|
146
|
+
separator: ', ',
|
147
|
+
},
|
148
|
+
}
|
149
|
+
},
|
150
|
+
remoteSearch: true,
|
151
|
+
clickClose: true,
|
152
|
+
delay: 1000,
|
153
|
+
paging: true,
|
154
|
+
radio: true,
|
155
|
+
pageRemote: true,
|
156
|
+
filterable: true,
|
157
|
+
remoteMethod: function (val, cb, show, pageIndex) {
|
158
|
+
$.ajax( '/missions/sales_place', {
|
159
|
+
method: 'get',
|
160
|
+
data: {
|
161
|
+
q: val,
|
162
|
+
page: pageIndex
|
163
|
+
},
|
164
|
+
dataType: 'json',
|
165
|
+
success: function (res) {
|
166
|
+
var data = res.data;
|
167
|
+
if (res.code == 0) {
|
168
|
+
cb(res.data, res.count);
|
169
|
+
} else {
|
170
|
+
layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
|
171
|
+
}
|
172
|
+
|
173
|
+
}
|
174
|
+
})
|
175
|
+
}
|
176
|
+
})
|
177
|
+
|
178
|
+
|
112
179
|
table = layui.table;
|
113
180
|
table.render({
|
114
181
|
elem: '#businesses_table',
|
@@ -210,7 +277,7 @@
|
|
210
277
|
},
|
211
278
|
{
|
212
279
|
field: 'place',
|
213
|
-
width:
|
280
|
+
width: 160,
|
214
281
|
title: '渠道'
|
215
282
|
},
|
216
283
|
{
|
@@ -403,7 +470,8 @@
|
|
403
470
|
|
404
471
|
// 监听搜索操作
|
405
472
|
form.on('submit(search_bussiness)', function (data) {
|
406
|
-
|
473
|
+
data.field.place_id = index_place_list.getValue('valueStr');
|
474
|
+
search = data.field
|
407
475
|
console.log(search);
|
408
476
|
table.reload('businesses_table', {
|
409
477
|
page: {
|
@@ -85,8 +85,8 @@
|
|
85
85
|
<br>
|
86
86
|
<div class="layui-inline">
|
87
87
|
<label class="layui-form-label">渠道</label>
|
88
|
-
<div class="layui-input-inline">
|
89
|
-
|
88
|
+
<div class="layui-input-inline" style="z-index: 101">
|
89
|
+
<div id="place" style="width: 190px;"></div>
|
90
90
|
</div>
|
91
91
|
</div>
|
92
92
|
<div class="layui-inline">
|
@@ -182,18 +182,63 @@
|
|
182
182
|
})
|
183
183
|
}
|
184
184
|
})
|
185
|
+
var place_list = xmSelect.render({
|
186
|
+
el: '#place',
|
187
|
+
remoteSearch: true,
|
188
|
+
model: {
|
189
|
+
icon: 'hidden',
|
190
|
+
label: {
|
191
|
+
type: 'text',
|
192
|
+
text: {
|
193
|
+
//左边拼接的字符
|
194
|
+
left: '',
|
195
|
+
//右边拼接的字符
|
196
|
+
right: '',
|
197
|
+
//中间的分隔符
|
198
|
+
separator: ', ',
|
199
|
+
},
|
200
|
+
}
|
201
|
+
},
|
202
|
+
clickClose: true,
|
203
|
+
delay: 1000,
|
204
|
+
paging: true,
|
205
|
+
radio: true,
|
206
|
+
pageRemote: true,
|
207
|
+
filterable: true,
|
208
|
+
remoteMethod: function (val, cb, show, pageIndex) {
|
209
|
+
$.ajax( '/missions/sales_place', {
|
210
|
+
method: 'get',
|
211
|
+
data: {
|
212
|
+
q: val,
|
213
|
+
page: pageIndex
|
214
|
+
},
|
215
|
+
dataType: 'json',
|
216
|
+
success: function (res) {
|
217
|
+
var data = res.data;
|
218
|
+
if (res.code == 0) {
|
219
|
+
cb(res.data, res.count);
|
220
|
+
} else {
|
221
|
+
layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
|
222
|
+
}
|
223
|
+
|
224
|
+
}
|
225
|
+
})
|
226
|
+
}
|
227
|
+
})
|
185
228
|
|
186
229
|
sales_list.setValue(gon.sales);
|
230
|
+
place_list.setValue(gon.place);
|
187
231
|
form.render();
|
188
232
|
|
189
233
|
form.on('submit(add_follow_up)', function (data) {
|
190
|
-
|
234
|
+
var assign_follow = [];
|
191
235
|
sales_list.getValue().forEach(function(d) {
|
192
236
|
assign_follow.push(d.value);
|
193
237
|
})
|
194
238
|
data.field.assign_follow_up = assign_follow;
|
195
239
|
data.field.business_id = "<%= @business.id %>";
|
196
|
-
|
240
|
+
data.field.place_id = place_list.getValue('valueStr');
|
241
|
+
request.authPost("missions/follow_ups", data.field, function (res) {
|
197
242
|
if (res.success == false) {
|
198
243
|
layer.alert(res.msg)
|
199
244
|
} else {
|
@@ -74,7 +74,7 @@
|
|
74
74
|
|
75
75
|
table.render({
|
76
76
|
elem: '#sale_plan_follow_table',
|
77
|
-
url: '/missions/businesses/show_follow?id=' + parent.
|
77
|
+
url: '/missions/businesses/show_follow?id=' + parent.business_id ,
|
78
78
|
toolbar: '#toolbarDemo_follow',
|
79
79
|
defaultToolbar: ['filter'],
|
80
80
|
cols: [
|
@@ -198,7 +198,7 @@
|
|
198
198
|
table.on('toolbar(sale_plan_follow_table)', function (obj) {
|
199
199
|
if (obj.event === 'add') { // 监听添加操作
|
200
200
|
business_id = parent.business_id
|
201
|
-
var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + parent.
|
201
|
+
var content = miniPage.getHrefContent('/missions/businesses/new_follow_record?id=' + parent.business_id);
|
202
202
|
var openWH = miniPage.getOpenWidthHeight();
|
203
203
|
sale_plan_index = layer.open({
|
204
204
|
title: '添加商机跟进记录',
|
@@ -220,7 +220,7 @@
|
|
220
220
|
layer.closeAll()
|
221
221
|
business_id = parent.business_id
|
222
222
|
business_name = parent.business_name
|
223
|
-
var content = miniPage.getHrefContent('/missions/businesses/time_line?business_id=' +
|
223
|
+
var content = miniPage.getHrefContent('/missions/businesses/time_line?business_id=' + parent.business_id);
|
224
224
|
var openWH = miniPage.getOpenWidthHeight();
|
225
225
|
sindex = layer.open({
|
226
226
|
title: '商机列表/'+ parent.business_name +'的跟进时间线',
|
@@ -335,7 +335,7 @@
|
|
335
335
|
// 未完成计划
|
336
336
|
table.render({
|
337
337
|
elem: '#unfinish_table',
|
338
|
-
url: '/missions/businesses/' + parent.
|
338
|
+
url: '/missions/businesses/' + parent.business_id + "/unfinish_plans",
|
339
339
|
toolbar: '#unfinish_table_tabar',
|
340
340
|
defaultToolbar: [],
|
341
341
|
cols: [
|
@@ -43,7 +43,7 @@
|
|
43
43
|
function demo(){
|
44
44
|
layer.closeAll()
|
45
45
|
business_id = parent.business_id
|
46
|
-
var content = miniPage.getHrefContent('/missions/businesses/show_follow?id=' +
|
46
|
+
var content = miniPage.getHrefContent('/missions/businesses/show_follow?id=' + parent.business_id);
|
47
47
|
var openWH = miniPage.getOpenWidthHeight();
|
48
48
|
sindex = layer.open({
|
49
49
|
title: '商机列表/'+ parent.business_name +'的跟进记录',
|
@@ -0,0 +1,19 @@
|
|
1
|
+
json.data do
|
2
|
+
json.array! @follow_ups do |d|
|
3
|
+
json.id d.id
|
4
|
+
json.clazz d.clazz.name
|
5
|
+
json.stage d.stage.name
|
6
|
+
json.staff d.staff.user.real_name
|
7
|
+
json.description d.description
|
8
|
+
json.advise d.advise
|
9
|
+
json.created_at d.created_at.to_s
|
10
|
+
json.business d.business.name
|
11
|
+
json.business_id d.business.id
|
12
|
+
teacher_ids = d.key_person.pluck(:teacher_id)
|
13
|
+
json.key_people EducodeSales::Teacher.where(id: teacher_ids).pluck(:name).join('、')
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
json.code 0
|
19
|
+
json.count @follow_ups.total_count
|
@@ -207,7 +207,7 @@
|
|
207
207
|
<div class="layui-inline m-t-10">
|
208
208
|
<label class="layui-form-label">视图</label>
|
209
209
|
<div class="layui-input-inline">
|
210
|
-
<%= select_tag "follow_count_range", options_for_select([['
|
210
|
+
<%= select_tag "follow_count_range", options_for_select([['按天','day'],['按周','week'],['按月','month'],['按年','year']],params[:follow_count_range] || 'week'), {'lay-filter': 'follow_count'}%>
|
211
211
|
</div>
|
212
212
|
</div>
|
213
213
|
<div class="layui-inline">
|
@@ -215,7 +215,7 @@
|
|
215
215
|
<div class="layui-input-inline">
|
216
216
|
<input type="text" class="layui-input month layui-hide" id="date_month" name="date_month" placeholder=" - " value="<%=params[:date_month] %>" >
|
217
217
|
<input type="text" class="layui-input year layui-hide" id="date_year" name="date_year" placeholder=" - " value="<%=params[:date_year] %>">
|
218
|
-
<input type="text" class="layui-input week " id="date_week" name="date_week" placeholder=" - " value="<%=params[:date_week].present? ? params[:date_week] : (Time.now - 30.days).to_s(:date) + ' - ' + Time.now.to_s(:date) %>">
|
218
|
+
<input type="text" class="layui-input week " id="date_week" name="date_week" placeholder=" - " value="<%=params[:date_week].present? ? params[:date_week] : (Time.now - 30.days).beginning_of_week.to_s(:date) + ' - ' + Time.now.end_of_week.to_s(:date) %>">
|
219
219
|
<input type="text" class="layui-input day layui-hide" id="date" name="date" placeholder=" - " value="<%=params[:date] %>">
|
220
220
|
</div>
|
221
221
|
</div>
|
@@ -9,36 +9,48 @@
|
|
9
9
|
</div>
|
10
10
|
</div>
|
11
11
|
<div class="layui-inline">
|
12
|
-
<label class="layui-form-label
|
12
|
+
<label class="layui-form-label ">职称</label>
|
13
13
|
<div class="layui-input-block">
|
14
14
|
<%= select_tag "professional_title", options_for_select(['教授', '研究员', '副教授', '副研究员', '讲师', '助理研究员', '助理教授'], @teacher.professional_title), { include_blank: true } %>
|
15
15
|
</div>
|
16
16
|
</div>
|
17
17
|
<br>
|
18
18
|
<div class="layui-inline">
|
19
|
-
<label class="layui-form-label
|
19
|
+
<label class="layui-form-label ">职务</label>
|
20
20
|
<div class="layui-input-block">
|
21
|
-
<input type="text" name="job" autocomplete="off"
|
21
|
+
<input type="text" name="job" autocomplete="off"
|
22
22
|
class="layui-input" placeholder="请输入" value="<%= @teacher.job %>">
|
23
23
|
</div>
|
24
24
|
</div>
|
25
25
|
<div class="layui-inline">
|
26
|
-
<label class="layui-form-label
|
26
|
+
<label class="layui-form-label ">来源</label>
|
27
27
|
<div class="layui-input-block">
|
28
28
|
<%= select_tag "source_id", options_for_select(EducodeSales::Common.where(clazz: 'teacher_source').pluck(:name, :id), @teacher.source_id), { include_blank: true } %>
|
29
29
|
</div>
|
30
30
|
</div>
|
31
31
|
<br>
|
32
|
+
<div class="layui-inline">
|
33
|
+
<label class="layui-form-label ">微信号</label>
|
34
|
+
<div class="layui-input-block">
|
35
|
+
<input type="text" name="wechat" autocomplete="off"
|
36
|
+
class="layui-input" placeholder="请输入" value="<%= @teacher.wechat %>">
|
37
|
+
</div>
|
38
|
+
</div>
|
39
|
+
<br>
|
32
40
|
<div class="layui-inline">
|
33
41
|
<label class="layui-form-label required">单位部门</label>
|
34
42
|
<div class="layui-input-block" id="add_department2" style="width: 400px"></div>
|
35
|
-
<!-- <input type="text" name="edit_school" autocomplete="off" lay-verify="required"-->
|
36
|
-
<!-- class="layui-input" placeholder="请输入" value="<%#= Department.find_by(id: @teacher.department_id).name %>-<%#= School.find_by(id: Department.find_by(id: @teacher.department_id).school_id).name %>">-->
|
37
43
|
</div>
|
38
44
|
<br>
|
45
|
+
<div class="layui-form-item">
|
46
|
+
<label class="layui-form-label">教研助理</label>
|
47
|
+
<div class="layui-input-inline">
|
48
|
+
<div id="edit_teacher_assist" style="width: 400px;"></div>
|
49
|
+
</div>
|
50
|
+
</div>
|
39
51
|
<div class="layui-inline">
|
40
52
|
<label class="layui-form-label">平台账号</label>
|
41
|
-
<div class="layui-input-block" id="user_search" style="width:
|
53
|
+
<div class="layui-input-block" id="user_search" style="width: 400px;"></div>
|
42
54
|
</div>
|
43
55
|
<div class="layui-form-item m-t-20">
|
44
56
|
<div class="layui-input-block">
|
@@ -60,6 +72,35 @@
|
|
60
72
|
|
61
73
|
form.render();
|
62
74
|
|
75
|
+
var edit_teacher_assist_list = xmSelect.render({
|
76
|
+
el: '#edit_teacher_assist',
|
77
|
+
remoteSearch: true,
|
78
|
+
clickClose: true,
|
79
|
+
delay: 1000,
|
80
|
+
paging: true,
|
81
|
+
pageRemote: true,
|
82
|
+
filterable: true,
|
83
|
+
remoteMethod: function (val, cb, show, pageIndex) {
|
84
|
+
$.ajax( '/missions/sales_staff?teacher_assist=true', {
|
85
|
+
method: 'get',
|
86
|
+
data: {
|
87
|
+
q: val,
|
88
|
+
page: pageIndex
|
89
|
+
},
|
90
|
+
dataType: 'json',
|
91
|
+
success: function (res) {
|
92
|
+
var data = res.data;
|
93
|
+
if (res.code == 0) {
|
94
|
+
cb(res.data, res.count);
|
95
|
+
} else {
|
96
|
+
layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
|
97
|
+
}
|
98
|
+
}
|
99
|
+
})
|
100
|
+
}
|
101
|
+
})
|
102
|
+
edit_teacher_assist_list.setValue(gon.teacher_assist)
|
103
|
+
|
63
104
|
var add_department = selectInput.render({
|
64
105
|
elem: '#add_department2',
|
65
106
|
name: 'department', // 渲染的input的name值
|
@@ -125,6 +166,11 @@
|
|
125
166
|
if (department_id == '') {
|
126
167
|
return layer.alert("请选择单位部门")
|
127
168
|
}
|
169
|
+
var assign_follow = [];
|
170
|
+
edit_teacher_assist_list.getValue().forEach(function(d) {
|
171
|
+
assign_follow.push(d.value);
|
172
|
+
})
|
173
|
+
data.field.teacher_assist = assign_follow;
|
128
174
|
data.field.department_id = department_id;
|
129
175
|
data.field.user_id = user_id;
|
130
176
|
request.authPut("missions/teachers/"+ parent.id, data.field, function (res) {
|
@@ -38,6 +38,12 @@
|
|
38
38
|
<input type="text" class="layui-input" id="time" placeholder="请选择时间" autocomplete="off" name="regist_at">
|
39
39
|
</div>
|
40
40
|
</div>
|
41
|
+
<div class="layui-inline">
|
42
|
+
<label class="layui-form-label">注册状态</label>
|
43
|
+
<div class="layui-input-inline">
|
44
|
+
<%= select_tag "status", options_for_select([["已注册","1"],["未注册","0"]]), { include_blank: true } %>
|
45
|
+
</div>
|
46
|
+
</div>
|
41
47
|
<div class="layui-inline">
|
42
48
|
<label class="layui-form-label">区域</label>
|
43
49
|
<div class="layui-input-inline">
|
@@ -50,6 +56,12 @@
|
|
50
56
|
<input type="text" class="layui-input" id="date" name="date" autocomplete="off" placeholder=" - ">
|
51
57
|
</div>
|
52
58
|
</div>
|
59
|
+
<div class="layui-inline">
|
60
|
+
<label class="layui-form-label">教研助理</label>
|
61
|
+
<div class="layui-input-inline">
|
62
|
+
<%= select_tag "assist", options_for_select(@staffs, params[:assist]), { 'lay-filter': 'assist', include_blank: true } %>
|
63
|
+
</div>
|
64
|
+
</div>
|
53
65
|
|
54
66
|
<div class="layui-inline">
|
55
67
|
<button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
|
@@ -66,7 +78,7 @@
|
|
66
78
|
<span class="table-label">教师列表</span>
|
67
79
|
<% if can? :create, EducodeSales::Teacher %>
|
68
80
|
<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"
|
81
|
+
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add">添加老师</button>
|
70
82
|
<% end %>
|
71
83
|
<!-- <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="search_new"> 搜索添加 -->
|
72
84
|
</button>
|
@@ -230,6 +242,26 @@
|
|
230
242
|
width: 120,
|
231
243
|
title: '注册时间',
|
232
244
|
},
|
245
|
+
{
|
246
|
+
field: 'last_login_on',
|
247
|
+
width: 120,
|
248
|
+
title: '最近登录',
|
249
|
+
},
|
250
|
+
{
|
251
|
+
field: 'created_at',
|
252
|
+
width: 120,
|
253
|
+
title: '添加时间',
|
254
|
+
},
|
255
|
+
{
|
256
|
+
field: 'wechat',
|
257
|
+
width: 120,
|
258
|
+
title: '微信号',
|
259
|
+
},
|
260
|
+
{
|
261
|
+
field: 'teacher_assist',
|
262
|
+
width: 120,
|
263
|
+
title: '教研助理',
|
264
|
+
},
|
233
265
|
{
|
234
266
|
title: '操作',
|
235
267
|
minWidth: 170,
|
@@ -372,7 +404,9 @@
|
|
372
404
|
name: "",
|
373
405
|
professional_title: "",
|
374
406
|
regist_at: "",
|
407
|
+
status: "",
|
375
408
|
school: "",
|
409
|
+
assist: "",
|
376
410
|
teacher_source: ""
|
377
411
|
})
|
378
412
|
return false;
|
@@ -19,8 +19,11 @@ json.data do
|
|
19
19
|
json.actives d.actives
|
20
20
|
json.students d.students_count
|
21
21
|
json.regist_at d.user.present? ? d.user.created_on.to_s(:date) : ''
|
22
|
+
json.last_login_on (d.user.present? && d.user.last_login_on.present?) ? d.user.last_login_on.to_s(:date) : ''
|
22
23
|
json.teacher_used d.teacher_used
|
23
|
-
|
24
|
+
json.wechat d.wechat
|
25
|
+
json.created_at d.created_at.to_s(:date)
|
26
|
+
json.teacher_assist d.teacher_assign_follows.map{|t| t.staff.user.real_name}.join(',')
|
24
27
|
teacher_follows_count += d.teacher_follows_count
|
25
28
|
courses_counts += d.courses_count
|
26
29
|
end
|