educode_sales 0.4.8 → 0.5.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//345/233/236/346/224/266/347/253/231.png +0 -0
- data/app/controllers/educode_sales/businesses_controller.rb +84 -5
- data/app/controllers/educode_sales/follow_ups_controller.rb +4 -3
- data/app/controllers/educode_sales/home_controller.rb +1 -1
- data/app/controllers/educode_sales/operation_plans_controller.rb +34 -6
- data/app/controllers/educode_sales/operation_reports_controller.rb +33 -3
- data/app/controllers/educode_sales/operations_controller.rb +1 -1
- data/app/controllers/educode_sales/plans_controller.rb +43 -15
- data/app/controllers/educode_sales/recycles_controller.rb +95 -0
- data/app/controllers/educode_sales/roles_controller.rb +5 -0
- data/app/controllers/educode_sales/sale_reports_controller.rb +34 -4
- data/app/controllers/educode_sales/sale_trends_controller.rb +176 -5
- data/app/controllers/educode_sales/sales_controller.rb +6 -2
- data/app/controllers/educode_sales/staffs_controller.rb +4 -4
- data/app/controllers/educode_sales/upload_files_controller.rb +112 -0
- data/app/models/concerns/deletable.rb +8 -0
- data/app/models/educode_sales/application_record.rb +2 -0
- data/app/models/educode_sales/business.rb +15 -2
- data/app/models/educode_sales/common.rb +6 -1
- data/app/models/educode_sales/follow_up.rb +4 -2
- data/app/models/educode_sales/recycle.rb +5 -0
- data/app/models/educode_sales/sale_plan.rb +3 -0
- data/app/models/educode_sales/sale_report.rb +2 -0
- data/app/views/educode_sales/businesses/edit_follow_record.html.erb +15 -0
- data/app/views/educode_sales/businesses/edit_plan.html.erb +2 -2
- data/app/views/educode_sales/businesses/file.html.erb +155 -0
- data/app/views/educode_sales/businesses/index.html.erb +71 -4
- data/app/views/educode_sales/businesses/index.json.jbuilder +3 -1
- data/app/views/educode_sales/businesses/new_follow_record.html.erb +22 -1
- data/app/views/educode_sales/businesses/show_follow.html.erb +46 -9
- data/app/views/educode_sales/businesses/show_follow.json.jbuilder +3 -0
- data/app/views/educode_sales/businesses/show_follow_record.html.erb +80 -2
- data/app/views/educode_sales/businesses/time_line.html.erb +62 -0
- data/app/views/educode_sales/businesses/upload_file.html.erb +43 -0
- data/app/views/educode_sales/operation_plans/_monthly.html.erb +4 -4
- data/app/views/educode_sales/operation_plans/_weekly.html.erb +4 -4
- data/app/views/educode_sales/operation_plans/index.html.erb +6 -1
- data/app/views/educode_sales/operation_plans/new_month.html.erb +15 -1
- data/app/views/educode_sales/operation_plans/new_week.html.erb +20 -5
- data/app/views/educode_sales/operation_reports/audit.html.erb +23 -15
- data/app/views/educode_sales/operation_reports/edit.html.erb +9 -9
- data/app/views/educode_sales/operation_reports/show.html.erb +22 -19
- data/app/views/educode_sales/places/index.html.erb +6 -1
- data/app/views/educode_sales/places/index.json.jbuilder +11 -1
- data/app/views/educode_sales/plans/_monthly.html.erb +4 -4
- data/app/views/educode_sales/plans/_weekly.html.erb +4 -4
- data/app/views/educode_sales/plans/index.html.erb +6 -1
- data/app/views/educode_sales/plans/new_monthly.html.erb +6 -6
- data/app/views/educode_sales/plans/new_week.html.erb +1 -1
- data/app/views/educode_sales/plans/new_weekly.html.erb +7 -7
- data/app/views/educode_sales/recycles/_business.html.erb +122 -0
- data/app/views/educode_sales/recycles/_monthPlan.html.erb +123 -0
- data/app/views/educode_sales/recycles/_monthly.html.erb +121 -0
- data/app/views/educode_sales/recycles/_weekPlan.html.erb +128 -0
- data/app/views/educode_sales/recycles/_weekly.html.erb +122 -0
- data/app/views/educode_sales/recycles/business.json.jbuilder +16 -0
- data/app/views/educode_sales/recycles/index.html.erb +58 -0
- data/app/views/educode_sales/recycles/monthPlan.json.jbuilder +16 -0
- data/app/views/educode_sales/recycles/monthly.json.jbuilder +15 -0
- data/app/views/educode_sales/recycles/weekPlan.json.jbuilder +16 -0
- data/app/views/educode_sales/recycles/weekly.json.jbuilder +15 -0
- data/app/views/educode_sales/roles/index.html.erb +19 -1
- data/app/views/educode_sales/roles/rename.html.erb +50 -0
- data/app/views/educode_sales/sale_reports/audit.html.erb +24 -13
- data/app/views/educode_sales/sale_reports/edit.html.erb +7 -7
- data/app/views/educode_sales/sale_reports/show.html.erb +13 -10
- data/app/views/educode_sales/sale_trends/trends.html.erb +228 -8
- data/app/views/educode_sales/sale_trends/trends.json.jbuilder +14 -0
- data/app/views/educode_sales/sales/index.html.erb +72 -6
- data/app/views/educode_sales/sales/index.json.jbuilder +35 -1
- data/app/views/educode_sales/sales/operations.json.jbuilder +11 -1
- data/app/views/educode_sales/staffs/index.html.erb +6 -1
- data/app/views/educode_sales/staffs/index.json.jbuilder +11 -1
- data/app/views/educode_sales/teachers/add_keys.html.erb +3 -3
- data/app/views/educode_sales/teachers/index.html.erb +7 -2
- data/app/views/educode_sales/teachers/new.html.erb +1 -0
- data/app/views/educode_sales/upload_files/index.json.jbuilder +13 -0
- data/app/views/layouts/educode_sales/application.html.erb +3 -0
- data/config/routes.rb +30 -0
- data/db/migrate/20210902064109_create_educode_sales_role_permissions.rb +6 -0
- data/db/migrate/20211102085743_add_bidded_date_educode_sales_follow_ups.rb +6 -0
- data/db/migrate/20211109015617_create_educode_sales_recycles.rb +25 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +26 -2
@@ -88,7 +88,7 @@
|
|
88
88
|
<div class="panel layui-bg-number">
|
89
89
|
<div class="panel-body">
|
90
90
|
<div class="panel-title">
|
91
|
-
<h5
|
91
|
+
<h5>现有商机<a href="/missions/businesses?name=(销售态势-现有商机)" style="color: #0000FF;float: right">查看商机</a></h5>
|
92
92
|
</div>
|
93
93
|
<div class="panel-content y-t-10">
|
94
94
|
<h1 class="no-margins"><%= @business_amount %>万</h1>
|
@@ -101,7 +101,7 @@
|
|
101
101
|
<div class="panel layui-bg-number">
|
102
102
|
<div class="panel-body">
|
103
103
|
<div class="panel-title">
|
104
|
-
<h5
|
104
|
+
<h5>已中标<a href="/missions/businesses?name=(销售态势-<%=@year %>-已中标商机)" style="color: #0000FF;float: right">查看商机</a></h5>
|
105
105
|
</div>
|
106
106
|
<div class="panel-content y-t-10">
|
107
107
|
<h1 class="no-margins"><%= @goal_amount %>万</h1>
|
@@ -114,7 +114,7 @@
|
|
114
114
|
<div class="panel layui-bg-number">
|
115
115
|
<div class="panel-body">
|
116
116
|
<div class="panel-title">
|
117
|
-
<h5
|
117
|
+
<h5>已签单<a href="/missions/businesses?name=(销售态势-<%=@year %>-已签单商机)" style="color: #0000FF;float: right">查看商机</a></h5>
|
118
118
|
</div>
|
119
119
|
<div class="panel-content y-t-10">
|
120
120
|
<h1 class="no-margins"><%= @service_amount %>万</h1>
|
@@ -127,7 +127,7 @@
|
|
127
127
|
<div class="panel layui-bg-number">
|
128
128
|
<div class="panel-body">
|
129
129
|
<div class="panel-title">
|
130
|
-
<h5
|
130
|
+
<h5>已回款<a href="/missions/businesses?name=(销售态势-<%=@year %>-已回款商机)" style="color: #0000FF;float: right">查看商机</a></h5>
|
131
131
|
</div>
|
132
132
|
<div class="panel-content y-t-10">
|
133
133
|
<h1 class="no-margins"><%= @return_amount %>万</h1>
|
@@ -140,7 +140,7 @@
|
|
140
140
|
<div class="panel layui-bg-number">
|
141
141
|
<div class="panel-body">
|
142
142
|
<div class="panel-title">
|
143
|
-
<h5>A
|
143
|
+
<h5>A类商机<a href="/missions/businesses?clazz_id=<%=EducodeSales::Common.find_by(extras: EducodeSales::Common::ATYPE)&.id %>" style="color: #0000FF;float: right">查看商机</a></h5>
|
144
144
|
</div>
|
145
145
|
<div class="panel-content y-t-10">
|
146
146
|
<h1 class="no-margins"><%= @a_amount %>万</h1>
|
@@ -153,7 +153,7 @@
|
|
153
153
|
<div class="panel layui-bg-number">
|
154
154
|
<div class="panel-body">
|
155
155
|
<div class="panel-title">
|
156
|
-
<h5>B
|
156
|
+
<h5>B类商机<a href="/missions/businesses?clazz_id=<%=EducodeSales::Common.find_by(extras: EducodeSales::Common::BTYPE)&.id %>" style="color: #0000FF;float: right">查看商机</a></h5>
|
157
157
|
</div>
|
158
158
|
<div class="panel-content y-t-10">
|
159
159
|
<h1 class="no-margins"><%= @b_amount %>万</h1>
|
@@ -168,12 +168,130 @@
|
|
168
168
|
</div>
|
169
169
|
</div>
|
170
170
|
</form>
|
171
|
+
<br>
|
172
|
+
<div class="layui-tab layui-tab-card" id="商机跟进数">
|
173
|
+
<ul class="layui-tab-title">
|
174
|
+
<li class="layui-this">商机跟进数</li>
|
175
|
+
</ul>
|
176
|
+
<div class="layui-tab-content" style="padding-right: 50px">
|
177
|
+
<div class="layui-tab-item layui-show " style="padding-left: 20px">
|
178
|
+
<div style="margin: 10px 10px 10px 10px">
|
179
|
+
<form class="layui-form layui-form-pane" lay-filter="search_form">
|
180
|
+
<div class="layui-form-item">
|
181
|
+
<div class="layui-inline m-t-10">
|
182
|
+
<label class="layui-form-label">视图</label>
|
183
|
+
<div class="layui-input-inline">
|
184
|
+
<%= select_tag "follow_count_range", options_for_select([['按天','day'],['按月','month'],['按年','year']],params[:follow_count_range]), {'lay-filter': 'follow_count'}%>
|
185
|
+
</div>
|
186
|
+
</div>
|
187
|
+
<div class="layui-inline">
|
188
|
+
<label class="layui-form-label">时间范围</label>
|
189
|
+
<div class="layui-input-inline">
|
190
|
+
<input type="text" class="layui-input month layui-hide" id="date_month" name="date_month" placeholder=" - " value="<%=params[:date_month] %>" >
|
191
|
+
<input type="text" class="layui-input year layui-hide" id="date_year" name="date_year" placeholder=" - " value="<%=params[:date_year] %>">
|
192
|
+
<input type="text" class="layui-input day" id="date" name="date" placeholder=" - " value="<%=params[:date] %>">
|
193
|
+
</div>
|
194
|
+
</div>
|
195
|
+
<div class="layui-inline">
|
196
|
+
<button type="submit" id="search_bt" class=" follow_count_bt layui-btn layui-btn-primary" lay-submit lay-filter="search_bussiness">确定
|
197
|
+
</button>
|
198
|
+
</div>
|
199
|
+
</div>
|
200
|
+
</form>
|
201
|
+
</div>
|
202
|
+
<canvas id="myChart" width="960" height="200"></canvas>
|
203
|
+
</div>
|
204
|
+
</div>
|
205
|
+
</div>
|
206
|
+
<div class="layui-tab layui-tab-card " id="销售额分析" lay-filter="test1">
|
207
|
+
<ul class="layui-tab-title">
|
208
|
+
<li class="layui-this">销售额分析</li>
|
209
|
+
</ul>
|
210
|
+
<div class="layui-tab-content" style="padding-right: 50px">
|
211
|
+
<div class="layui-tab-item layui-show" style="padding-left: 20px">
|
212
|
+
<div style="margin: 10px 10px 10px 10px">
|
213
|
+
<form class="layui-form layui-form-pane" lay-filter="search_form">
|
214
|
+
<div class="layui-form-item">
|
215
|
+
<div class="layui-inline m-t-10">
|
216
|
+
<label class="layui-form-label">视图</label>
|
217
|
+
<div class="layui-input-inline">
|
218
|
+
<%= select_tag "goal_count_range", options_for_select([['按月','month'],['按年','year']],params[:goal_count_range]), {'lay-filter': 'goal_count'}%>
|
219
|
+
</div>
|
220
|
+
</div>
|
221
|
+
<div class="layui-inline">
|
222
|
+
<label class="layui-form-label">时间范围</label>
|
223
|
+
<div class="layui-input-inline">
|
224
|
+
<input type="text" class="layui-input goal_month " id="goal_date_month" name="goal_date_month" placeholder=" - " value="<%=params[:goal_date_month] %>">
|
225
|
+
<input type="text" class="layui-input goal_year layui-hide" id="goal_date_year" name="goal_date_year" placeholder=" - " value="<%=params[:goal_date_year] %>">
|
226
|
+
</div>
|
227
|
+
</div>
|
228
|
+
<div class="layui-inline">
|
229
|
+
<button type="submit" id="search_bt" class="follow_count_bt layui-btn layui-btn-primary" lay-submit lay-filter="search_bussiness">确定
|
230
|
+
</button>
|
231
|
+
</div>
|
232
|
+
</div>
|
233
|
+
</form>
|
234
|
+
</div>
|
235
|
+
<canvas id="myChart2" width="960" height="200"></canvas>
|
236
|
+
</div>
|
237
|
+
|
238
|
+
</div>
|
239
|
+
</div>
|
240
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/chart.js@2.9.1/dist/Chart.min.css">
|
241
|
+
<script src="https://cdn.jsdelivr.net/npm/chart.js@2.9.1/dist/Chart.min.js"></script>
|
171
242
|
<script>
|
243
|
+
follow_type = "<%=@follow_count_range %>"
|
244
|
+
goal_type = "<%=@goal_count_range %>"
|
245
|
+
follow_flag = <%=params[:follow_count_range].present? %>
|
246
|
+
if(follow_flag){
|
247
|
+
window.location.href = "#商机跟进数"
|
248
|
+
}
|
249
|
+
|
250
|
+
goal_flag = <%=params[:goal_count_range].present? %>
|
251
|
+
if(goal_flag){
|
252
|
+
window.location.href = "#销售额分析"
|
253
|
+
}
|
172
254
|
layui.use(['form', 'jquery', 'request'], function () {
|
173
255
|
var $ = layui.jquery,
|
174
256
|
form = layui.form,
|
175
257
|
request = layui.request;
|
176
258
|
var year = "<%= @year %>";
|
259
|
+
var element = layui.element;
|
260
|
+
laydate = layui.laydate;
|
261
|
+
|
262
|
+
$(document).ready(function () {
|
263
|
+
$(".follow_count_bt").click(function () {
|
264
|
+
layer.msg("图表绘制中...", {
|
265
|
+
time: 0, //不自动关闭
|
266
|
+
offset:['40%','46%']
|
267
|
+
})
|
268
|
+
layer.load(0, {});
|
269
|
+
setTimeout(function () {
|
270
|
+
layer.closeAll('loading');
|
271
|
+
}, 10000);
|
272
|
+
});
|
273
|
+
});
|
274
|
+
if(follow_type == "day"){
|
275
|
+
$(".year").addClass('layui-hide')
|
276
|
+
$(".month").addClass('layui-hide')
|
277
|
+
$(".day").removeClass('layui-hide')
|
278
|
+
}else if(follow_type == "month"){
|
279
|
+
$(".year").addClass('layui-hide')
|
280
|
+
$(".month").removeClass('layui-hide')
|
281
|
+
$(".day").addClass('layui-hide')
|
282
|
+
}else {
|
283
|
+
$(".year").removeClass('layui-hide')
|
284
|
+
$(".month").addClass('layui-hide')
|
285
|
+
$(".day").addClass('layui-hide')
|
286
|
+
}
|
287
|
+
|
288
|
+
if(goal_type == "year"){
|
289
|
+
$(".goal_year").removeClass('layui-hide')
|
290
|
+
$(".goal_month").addClass('layui-hide')
|
291
|
+
}else{
|
292
|
+
$(".goal_year").addClass('layui-hide')
|
293
|
+
$(".goal_month").removeClass('layui-hide')
|
294
|
+
}
|
177
295
|
|
178
296
|
function editForm(el) {
|
179
297
|
$("#" + el + "_edit").click(function() {
|
@@ -205,18 +323,120 @@
|
|
205
323
|
})
|
206
324
|
}
|
207
325
|
|
326
|
+
// 时间选择器
|
327
|
+
laydate.render({
|
328
|
+
elem: '#date',
|
329
|
+
min: -15
|
330
|
+
,max: 15,
|
331
|
+
range: true
|
332
|
+
});
|
333
|
+
laydate.render({
|
334
|
+
type: 'week',
|
335
|
+
elem: '#date_week',
|
336
|
+
min: -90
|
337
|
+
,max: 0,
|
338
|
+
range: true
|
339
|
+
});
|
340
|
+
laydate.render({
|
341
|
+
type: 'month',
|
342
|
+
elem: '#date_month',
|
343
|
+
min: -365
|
344
|
+
,max: 0,
|
345
|
+
range: true
|
346
|
+
});
|
347
|
+
laydate.render({
|
348
|
+
type: 'year',
|
349
|
+
elem: '#date_year',
|
350
|
+
min: -3660
|
351
|
+
,max: 366,
|
352
|
+
range: true
|
353
|
+
});
|
354
|
+
laydate.render({
|
355
|
+
type: 'year',
|
356
|
+
elem: '#goal_date_year',
|
357
|
+
min: -3660
|
358
|
+
,max: 366,
|
359
|
+
range: true
|
360
|
+
});
|
361
|
+
laydate.render({
|
362
|
+
type: 'month',
|
363
|
+
elem: '#goal_date_month',
|
364
|
+
min: -365
|
365
|
+
,max: 0,
|
366
|
+
range: true
|
367
|
+
});
|
368
|
+
|
369
|
+
|
208
370
|
form.on('select(year)', function(data){
|
209
371
|
console.log(data, )
|
210
372
|
year = data.value
|
211
373
|
window.location.href = "/missions/sale_trends/trends?year=" + data.value
|
212
374
|
})
|
213
|
-
|
375
|
+
form.on('select(follow_count)', function(data){
|
376
|
+
console.log(data, )
|
377
|
+
const value = data.value;
|
378
|
+
if(value == "month"){
|
379
|
+
$(".year").addClass('layui-hide')
|
380
|
+
$(".day").addClass('layui-hide')
|
381
|
+
$(".month").removeClass('layui-hide')
|
382
|
+
}else if(value == "year"){
|
383
|
+
$(".month").addClass('layui-hide')
|
384
|
+
$(".day").addClass('layui-hide')
|
385
|
+
$(".year").removeClass('layui-hide')
|
386
|
+
}else {
|
387
|
+
$(".month").addClass('layui-hide')
|
388
|
+
$(".year").addClass('layui-hide')
|
389
|
+
$(".day").removeClass('layui-hide')
|
390
|
+
}
|
391
|
+
})
|
392
|
+
|
393
|
+
form.on('select(goal_count)', function(data){
|
394
|
+
console.log(data, )
|
395
|
+
const value = data.value;
|
396
|
+
if(value == "month"){
|
397
|
+
$(".goal_year").addClass('layui-hide')
|
398
|
+
$(".goal_month").removeClass('layui-hide')
|
399
|
+
}else {
|
400
|
+
$(".goal_month").addClass('layui-hide')
|
401
|
+
$(".goal_year").removeClass('layui-hide')
|
402
|
+
}
|
403
|
+
})
|
404
|
+
|
214
405
|
editForm("chance_money");
|
215
406
|
editForm("ballot_money");
|
216
407
|
editForm("sign_money");
|
217
408
|
editForm("returned_money");
|
218
409
|
|
219
|
-
|
410
|
+
element.on('tab(test1)', function(){
|
411
|
+
window.location.href = "#销售额分析"
|
412
|
+
});
|
220
413
|
|
414
|
+
var ctx = document.getElementById('myChart');
|
415
|
+
var myChart = new Chart(ctx, {
|
416
|
+
type: 'line',
|
417
|
+
data: <%=raw @follow_count_data.to_json %>,
|
418
|
+
options: {
|
419
|
+
elements: {
|
420
|
+
line: {
|
421
|
+
tension: 0
|
422
|
+
}
|
423
|
+
}
|
424
|
+
}
|
425
|
+
});
|
426
|
+
|
427
|
+
var ctx = document.getElementById('myChart2');
|
428
|
+
var myChart2 = new Chart(ctx, {
|
429
|
+
type: 'bar',
|
430
|
+
data: <%=raw @goal_count_data.to_json %>,
|
431
|
+
options: {
|
432
|
+
scales: {
|
433
|
+
yAxes: [{
|
434
|
+
ticks: {
|
435
|
+
beginAtZero:true
|
436
|
+
}
|
437
|
+
}]
|
438
|
+
}
|
439
|
+
}
|
440
|
+
});
|
221
441
|
})
|
222
442
|
</script>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
my_array = [1,2,3,4,5]
|
2
|
+
json.data do
|
3
|
+
json.labels my_array
|
4
|
+
json.datasets do
|
5
|
+
json.array! [1,2] do |d|
|
6
|
+
json.label '人名'
|
7
|
+
json.backgroundColor "#fff"
|
8
|
+
json.borderColor "#36A2EB"
|
9
|
+
json.pointBackgroundColor "#36A2EB"
|
10
|
+
json.pointBorderColor "#fff"
|
11
|
+
json.data my_array
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<div class="section">
|
2
2
|
<h4><span>销售人员列表</span></h4>
|
3
3
|
<hr>
|
4
|
-
<table class="layui-hide" id="table"></table>
|
4
|
+
<table class="layui-hide" id="table" lay-filter="table" ></table>
|
5
5
|
</div>
|
6
6
|
<script type="text/html" id="toolbarDemo">
|
7
7
|
<div class="layui-btn-container">
|
@@ -18,6 +18,26 @@
|
|
18
18
|
<a href="/missions/businesses?clazz_id={{d.b_clazz_id}}&staff_id={{d.id}}">{{d.business_b}}</a>
|
19
19
|
</div>
|
20
20
|
</script>
|
21
|
+
<script type="text/html" id="business_c">
|
22
|
+
<div class="layui-text">
|
23
|
+
<a href="/missions/businesses?clazz_id={{d.c_clazz_id}}&staff_id={{d.id}}">{{d.business_c}}</a>
|
24
|
+
</div>
|
25
|
+
</script>
|
26
|
+
<script type="text/html" id="business_d">
|
27
|
+
<div class="layui-text">
|
28
|
+
<a href="/missions/businesses?clazz_id={{d.d_clazz_id}}&staff_id={{d.id}}">{{d.business_d}}</a>
|
29
|
+
</div>
|
30
|
+
</script>
|
31
|
+
<script type="text/html" id="business_e">
|
32
|
+
<div class="layui-text">
|
33
|
+
<a href="/missions/businesses?clazz_id={{d.e_clazz_id}}&staff_id={{d.id}}">{{d.business_e}}</a>
|
34
|
+
</div>
|
35
|
+
</script>
|
36
|
+
<script type="text/html" id="business_o">
|
37
|
+
<div class="layui-text">
|
38
|
+
<a href="/missions/businesses?clazz_id={{d.o_clazz_id}}&staff_id={{d.id}}">{{d.business_o}}</a>
|
39
|
+
</div>
|
40
|
+
</script>
|
21
41
|
<script>
|
22
42
|
layui.use('table', function () {
|
23
43
|
var table = layui.table;
|
@@ -45,22 +65,53 @@
|
|
45
65
|
title: 'A类商机',
|
46
66
|
templet: "#business_a",
|
47
67
|
totalRow:true,
|
68
|
+
sort:true,
|
48
69
|
width: 120
|
49
|
-
},
|
70
|
+
},
|
71
|
+
{
|
50
72
|
field: 'business_b',
|
51
73
|
title: 'B类商机',
|
52
74
|
templet: "#business_b",
|
53
|
-
totalRow:true,
|
75
|
+
totalRow:true,sort:true,
|
54
76
|
width: 120
|
55
|
-
},
|
77
|
+
},
|
78
|
+
{
|
79
|
+
field: 'business_c',
|
80
|
+
title: 'C类商机',
|
81
|
+
templet: "#business_c",
|
82
|
+
totalRow:true,sort:true,
|
83
|
+
width: 120
|
84
|
+
},
|
85
|
+
{
|
86
|
+
field: 'business_d',
|
87
|
+
title: 'D类商机',
|
88
|
+
templet: "#business_d",
|
89
|
+
totalRow:true,sort:true,
|
90
|
+
width: 120
|
91
|
+
},
|
92
|
+
{
|
93
|
+
field: 'business_e',
|
94
|
+
title: 'E类商机',
|
95
|
+
templet: "#business_e",
|
96
|
+
totalRow:true,sort:true,
|
97
|
+
width: 120
|
98
|
+
},
|
99
|
+
{
|
100
|
+
field: 'business_o',
|
101
|
+
title: 'O类商机',
|
102
|
+
templet: "#business_o",
|
103
|
+
totalRow:true,sort:true,
|
104
|
+
width: 120
|
105
|
+
},
|
106
|
+
{
|
56
107
|
field: 'goal',
|
57
108
|
title: '中标金额',
|
58
|
-
totalRow:true,
|
109
|
+
totalRow:true,sort:true,
|
59
110
|
width: 120
|
60
111
|
}, {
|
61
112
|
field: 'return_money',
|
62
113
|
title: '回款',
|
63
|
-
totalRow:true,
|
114
|
+
totalRow:true,sort:true,
|
64
115
|
width: 120
|
65
116
|
}
|
66
117
|
]
|
@@ -69,5 +120,20 @@
|
|
69
120
|
limits: [10,15,20,30,40,50,60,70,80,90],
|
70
121
|
page: true
|
71
122
|
});
|
123
|
+
|
124
|
+
// var sort = {}, search = {};
|
125
|
+
// table.on('sort(table)', function (obj) {
|
126
|
+
// sort.field = obj.field;
|
127
|
+
// sort.order = obj.type;
|
128
|
+
// table.reload('table', {
|
129
|
+
// initSort: obj,
|
130
|
+
// where: {
|
131
|
+
// sort: sort,
|
132
|
+
// q: search
|
133
|
+
// }
|
134
|
+
// });
|
135
|
+
// })
|
136
|
+
|
137
|
+
|
72
138
|
});
|
73
139
|
</script>
|
@@ -1,5 +1,10 @@
|
|
1
1
|
businesses_a_count = 0
|
2
2
|
businesses_b_count = 0
|
3
|
+
businesses_c_count = 0
|
4
|
+
businesses_d_count = 0
|
5
|
+
businesses_e_count = 0
|
6
|
+
businesses_o_count = 0
|
7
|
+
area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
|
3
8
|
json.data do
|
4
9
|
json.array! @staffs do |d|
|
5
10
|
part_a_ids = EducodeSales::Business.where("educode_sales_businesses.last_follow_up_id is null AND staff_id = ?",d.id).ids
|
@@ -11,23 +16,52 @@ json.data do
|
|
11
16
|
json.id d.id
|
12
17
|
json.name d.user.real_name
|
13
18
|
json.role d.role&.name
|
14
|
-
json.area d.areas.present? ? d.areas.pluck(:name).join("、") : ''
|
19
|
+
# json.area d.areas.present? ? d.areas.pluck(:name).join("、") : ''
|
20
|
+
if d.areas.present?
|
21
|
+
if d.areas.ids.sort.to_s == area_ids
|
22
|
+
json.area '全国'
|
23
|
+
else
|
24
|
+
json.area d.areas.pluck(:name).join("、")
|
25
|
+
end
|
26
|
+
else
|
27
|
+
json.area ''
|
28
|
+
end
|
15
29
|
business_a = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @a_clazz&.id).count
|
16
30
|
businesses_a_count += business_a
|
17
31
|
json.business_a business_a
|
18
32
|
business_b = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @b_clazz&.id).count
|
19
33
|
businesses_b_count += business_b
|
20
34
|
json.business_b business_b
|
35
|
+
business_c = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @c_clazz&.id).count
|
36
|
+
businesses_c_count += business_c
|
37
|
+
json.business_c business_c
|
38
|
+
business_d = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @d_clazz&.id).count
|
39
|
+
businesses_d_count += business_d
|
40
|
+
json.business_d business_b
|
41
|
+
business_e = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @e_clazz&.id).count
|
42
|
+
businesses_e_count += business_e
|
43
|
+
json.business_e business_b
|
44
|
+
business_o = @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id = ?", @o_clazz&.id).count
|
45
|
+
businesses_o_count += business_o
|
46
|
+
json.business_o business_o
|
21
47
|
json.goal @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id != ? AND educode_sales_follow_ups.stage_id in (?)", @x, @step_ids).sum(:total_amount).round(2)
|
22
48
|
json.return_money @businesses.joins("JOIN educode_sales_follow_ups on educode_sales_follow_ups.id = educode_sales_businesses.last_follow_up_id").where("educode_sales_follow_ups.clazz_id != ?", @x).sum("educode_sales_businesses.return_money").round(2)
|
23
49
|
json.a_clazz_id @a_clazz&.id
|
24
50
|
json.b_clazz_id @b_clazz&.id
|
51
|
+
json.c_clazz_id @c_clazz&.id
|
52
|
+
json.d_clazz_id @d_clazz&.id
|
53
|
+
json.e_clazz_id @e_clazz&.id
|
54
|
+
json.o_clazz_id @o_clazz&.id
|
25
55
|
end
|
26
56
|
end
|
27
57
|
|
28
58
|
json.totalRow do
|
29
59
|
json.business_a businesses_a_count.to_s
|
30
60
|
json.business_b businesses_b_count.to_s
|
61
|
+
json.business_c businesses_c_count.to_s
|
62
|
+
json.business_d businesses_d_count.to_s
|
63
|
+
json.business_e businesses_e_count.to_s
|
64
|
+
json.business_o businesses_o_count.to_s
|
31
65
|
end
|
32
66
|
json.code 0
|
33
67
|
json.count @staffs.total_count
|
@@ -1,12 +1,22 @@
|
|
1
1
|
departments_count = 0
|
2
2
|
schools_count = 0
|
3
|
+
area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
|
3
4
|
json.data do
|
4
5
|
json.array! @staffs do |d|
|
5
6
|
json.id d.id
|
6
7
|
json.name d.user.real_name
|
7
8
|
json.role d.role&.name
|
8
9
|
json.job_type EducodeSales::Common.job_type_name[d.job_type]
|
9
|
-
json.area d.areas.present? ? d.areas.pluck(:name).join("、") : ''
|
10
|
+
# json.area d.areas.present? ? d.areas.pluck(:name).join("、") : ''
|
11
|
+
if d.areas.present?
|
12
|
+
if d.areas.ids.sort.to_s == area_ids
|
13
|
+
json.area '全国'
|
14
|
+
else
|
15
|
+
json.area d.areas.pluck(:name).join("、")
|
16
|
+
end
|
17
|
+
else
|
18
|
+
json.area ''
|
19
|
+
end
|
10
20
|
departments = EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.staff_id = #{d.id}").select("COUNT(educode_sales_follow_ups.staff_id) AS count")[0]&.send('count') + EducodeSales::Teacher.joins(:follow_up).where("educode_sales_teacher_follows.staff_id = #{d.id}").select("COUNT(educode_sales_teacher_follows.staff_id) AS count")[0]&.send('count') || 0
|
11
21
|
json.departments departments
|
12
22
|
schools = EducodeSales::Business.joins(:last_follow_up, :department).where("educode_sales_follow_ups.staff_id = #{d.id}").select("COUNT(distinct(departments.school_id)) AS count")[0]['count'] + EducodeSales::Teacher.joins(:follow_up, :department).where("educode_sales_teacher_follows.staff_id = #{d.id}").select("COUNT(distinct(departments.school_id)) AS count")[0]['count']
|
@@ -1,15 +1,25 @@
|
|
1
|
+
area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
|
1
2
|
json.data do
|
2
3
|
json.array! @staffs do |d|
|
3
4
|
json.id d.id
|
4
5
|
json.name d.user.real_name
|
5
6
|
json.role d.role&.name
|
6
|
-
json.area d.areas.present? ? d.areas.pluck(:name).join("、") : ''
|
7
7
|
json.job_type EducodeSales::Common.job_type_name[d.job_type]
|
8
8
|
json.month d.month
|
9
9
|
json.enabled_at d.enabled_at ? d.enabled_at.to_s(:date) : ''
|
10
10
|
json.expired_at d.enabled_at ? "#{d.enabled_at.to_s(:date)}-#{d.expired_at.to_s(:date)}" : ''
|
11
|
+
if d.areas.present?
|
12
|
+
if d.areas.ids.sort.to_s == area_ids
|
13
|
+
json.area '全国'
|
14
|
+
else
|
15
|
+
json.area d.areas.pluck(:name).join("、")
|
16
|
+
end
|
17
|
+
else
|
18
|
+
json.area ''
|
19
|
+
end
|
11
20
|
end
|
12
21
|
end
|
13
22
|
|
23
|
+
|
14
24
|
json.code 0
|
15
25
|
json.count @staffs.total_count
|
@@ -116,13 +116,13 @@
|
|
116
116
|
</div>
|
117
117
|
</script>
|
118
118
|
<script type="text/html" id="key_person_tabar">
|
119
|
-
{{# if(parent.is_latest){ }}
|
119
|
+
{{# if(parent.is_latest && parent.flag){ }}
|
120
120
|
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">保存</a>
|
121
121
|
<a class="layui-btn layui-btn-danger layui-btn-xs data-count-edit" lay-event="delete">删除</a>
|
122
122
|
{{# } }}
|
123
123
|
</script>
|
124
124
|
<script>
|
125
|
-
if(!parent.is_latest){
|
125
|
+
if(!parent.is_latest || !parent.flag){
|
126
126
|
document.getElementById("show_follow_box").style.display="none";//隐藏
|
127
127
|
}
|
128
128
|
layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'laydate', 'selectInput'], function () {
|
@@ -144,7 +144,7 @@
|
|
144
144
|
$(document).on('click','#new_teacher1',function(){
|
145
145
|
var content = miniPage.getHrefContent('/missions/teachers/new');
|
146
146
|
var openWH = miniPage.getOpenWidthHeight();
|
147
|
-
|
147
|
+
teacher_uni_index = layer.open({
|
148
148
|
id:"a",
|
149
149
|
title: '添加老师',
|
150
150
|
type: 1,
|
@@ -52,7 +52,7 @@
|
|
52
52
|
</div>
|
53
53
|
|
54
54
|
<div class="layui-inline">
|
55
|
-
<button type="
|
55
|
+
<button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
|
56
56
|
</button>
|
57
57
|
<button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_teachers">搜 索
|
58
58
|
</button>
|
@@ -588,4 +588,9 @@
|
|
588
588
|
});
|
589
589
|
|
590
590
|
});
|
591
|
-
</script>
|
591
|
+
</script>
|
592
|
+
<style>
|
593
|
+
.layui-table-tool-temp{
|
594
|
+
padding-right: 30px; !important;
|
595
|
+
}
|
596
|
+
</style>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
json.data do
|
2
|
+
json.array! @files do |d|
|
3
|
+
json.id d.id
|
4
|
+
json.name d.filename
|
5
|
+
json.size d.filesize < 1000000 ? (d.filesize.to_f / 1000).round(2).to_s + 'KB' : (d.filesize.to_f / 1000000).round(2).to_s + 'MB'
|
6
|
+
json.created_on d.created_on.to_s
|
7
|
+
json.upload_person EducodeSales::Staff.find(d.author_id).user.real_name
|
8
|
+
json.disk_filename d.disk_filename
|
9
|
+
json.content_type d.content_type
|
10
|
+
end
|
11
|
+
end
|
12
|
+
json.code 0
|
13
|
+
json.count @files.total_count
|
@@ -69,6 +69,9 @@
|
|
69
69
|
<% if can? :read, EducodeSales::SalePlan %>
|
70
70
|
<dd><a href="/missions/plans" class="<%= current?('layui-this', plans_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/6.销售计划.png",size:"15"%><i style="font-size: 25px; padding-right: 15px"></i>销售计划</a></dd>
|
71
71
|
<% end %>
|
72
|
+
<% if @current_admin.is_admin %>
|
73
|
+
<dd><a href="/missions/recycles" class="<%= current?('layui-this', recycles_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/回收站.png",size:"15"%><i style="font-size: 25px; padding-right: 15px"></i>回收站</a></dd>
|
74
|
+
<%end %>
|
72
75
|
</dl>
|
73
76
|
</li>
|
74
77
|
<li class="layui-nav-item layui-nav-itemed menu-li">
|