educode_sales 1.10.49 → 1.10.58
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/stylesheets/educode_sales/modules/easyeditor/easyeditor.css +1 -1
- data/app/controllers/educode_sales/application_controller.rb +10 -0
- data/app/controllers/educode_sales/business_courses_controller.rb +58 -33
- data/app/controllers/educode_sales/businesses_controller.rb +43 -7
- data/app/controllers/educode_sales/contracts_controller.rb +6 -0
- data/app/controllers/educode_sales/money_plan_records_controller.rb +6 -2
- data/app/controllers/educode_sales/money_plans_controller.rb +3 -0
- data/app/controllers/educode_sales/sale_trends_controller.rb +1 -1
- data/app/controllers/educode_sales/shixun_dectects_controller.rb +77 -16
- data/app/controllers/educode_sales/shixuns_controller.rb +65 -4
- data/app/controllers/educode_sales/subject_trends_controller.rb +99 -892
- data/app/controllers/educode_sales/subjects_controller.rb +29 -18
- data/app/helpers/educode_sales/application_helper.rb +3 -1
- data/app/helpers/educode_sales/business_courses_helper.rb +29 -6
- data/app/helpers/educode_sales/sale_trends_helper.rb +52 -52
- data/app/helpers/educode_sales/subject_helper.rb +5 -1
- data/app/models/educode_sales/business.rb +5 -5
- data/app/models/educode_sales/business_deliver_subject.rb +3 -2
- data/app/models/educode_sales/business_subject.rb +9 -3
- data/app/models/educode_sales/business_subject_shixun.rb +37 -8
- data/app/models/educode_sales/business_subject_staff.rb +1 -0
- data/app/views/educode_sales/business_courses/edit.html.erb +30 -4
- data/app/views/educode_sales/business_courses/index.html.erb +34 -12
- data/app/views/educode_sales/business_courses/index.json.jbuilder +2 -2
- data/app/views/educode_sales/business_courses/list_shixuns.html.erb +132 -64
- data/app/views/educode_sales/business_courses/list_shixuns.json.jbuilder +12 -6
- data/app/views/educode_sales/business_courses/list_subjects.html.erb +29 -34
- data/app/views/educode_sales/business_courses/list_subjects.json.jbuilder +7 -2
- data/app/views/educode_sales/business_courses/new.html.erb +45 -20
- data/app/views/educode_sales/businesses/index.html.erb +11 -9
- data/app/views/educode_sales/contracts/_list.html.erb +16 -1
- data/app/views/educode_sales/contracts/index.html.erb +5 -2
- data/app/views/educode_sales/contracts/list.js.erb +4 -1
- data/app/views/educode_sales/money_plan_records/_index.html.erb +21 -5
- data/app/views/educode_sales/money_plan_records/index.js.erb +4 -1
- data/app/views/educode_sales/money_plans/list.html.erb +6 -2
- data/app/views/educode_sales/sale_trends/_return_money_forecast.html.erb +1 -1
- data/app/views/educode_sales/sale_trends/_user_stat.html.erb +1 -1
- data/app/views/educode_sales/sale_trends/_visit_analysis.html.erb +1 -1
- data/app/views/educode_sales/sale_trends/return_money_forecast.js.erb +1 -1
- data/app/views/educode_sales/sale_trends/trends.html.erb +6 -6
- data/app/views/educode_sales/sale_trends/user_stat.js.erb +1 -1
- data/app/views/educode_sales/sale_trends/visit_analysis.js.erb +1 -1
- data/app/views/educode_sales/shixun_dectects/index.html.erb +97 -47
- data/app/views/educode_sales/shixun_dectects/index.json.jbuilder +4 -3
- data/app/views/educode_sales/shixun_dectects/markdown.html.erb +1 -1
- data/app/views/educode_sales/shixuns/edit.html.erb +35 -13
- data/app/views/educode_sales/shixuns/index.html.erb +348 -138
- data/app/views/educode_sales/shixuns/index.json.jbuilder +9 -5
- data/app/views/educode_sales/shixuns/new.html.erb +22 -12
- data/app/views/educode_sales/subject_trends/trends.html.erb +177 -575
- data/app/views/educode_sales/subjects/edit.html.erb +4 -4
- data/app/views/educode_sales/subjects/index.html.erb +50 -12
- data/app/views/educode_sales/subjects/index.json.jbuilder +3 -3
- data/app/views/educode_sales/subjects/list_shixuns.html.erb +143 -17
- data/app/views/educode_sales/subjects/list_shixuns.json.jbuilder +9 -4
- data/app/views/educode_sales/subjects/new.html.erb +4 -4
- data/app/views/layouts/educode_sales/application.html.erb +1 -1
- data/lib/educode_sales/version.rb +1 -1
- metadata +6 -7
- data/app/assets/images/educode_sales/indexlogo.png +0 -0
@@ -7,25 +7,25 @@
|
|
7
7
|
<div id="businesses_id" style="width: 50%;"></div>
|
8
8
|
</div>
|
9
9
|
</div>
|
10
|
+
<!-- <div class="layui-form-item">-->
|
11
|
+
<!-- <label class="layui-form-label" >交付单位:<span style="color: red"> *</span></label>-->
|
12
|
+
<!-- <div class="layui-input-block">-->
|
13
|
+
<!-- <div id="school_id" style="width: 50%;"></div>-->
|
14
|
+
<!-- </div>-->
|
15
|
+
<!-- </div>-->
|
10
16
|
<div class="layui-form-item">
|
11
|
-
<label class="layui-form-label" style="width:
|
17
|
+
<label class="layui-form-label" style="width: 102px">实践课程名称:<span style="color: red"> *</span></label>
|
12
18
|
<div class="layui-input-block">
|
13
|
-
<div id="
|
14
|
-
</div>
|
15
|
-
</div>
|
16
|
-
<div class="layui-form-item">
|
17
|
-
<label class="layui-form-label" style="width: 90px">实践课程名称:</label>
|
18
|
-
<div class="layui-input-block">
|
19
|
-
<div id="subject_ids" style="width: 50%"></div>
|
19
|
+
<div id="subject_ids" style="width: 49%;margin-left: 12px"></div>
|
20
20
|
</div>
|
21
21
|
</div>
|
22
22
|
|
23
|
-
<div class="layui-form-item"
|
24
|
-
<label class="layui-form-label">交付时间:</label
|
25
|
-
<div class="layui-input-block"
|
26
|
-
<input type="text" name="deliver_date" style="width: 50%;" class="layui-input" id="ID-laydate-demo" placeholder="- -"
|
27
|
-
</div
|
28
|
-
</div
|
23
|
+
<!-- <div class="layui-form-item">-->
|
24
|
+
<!-- <label class="layui-form-label">交付时间:</label>-->
|
25
|
+
<!-- <div class="layui-input-block">-->
|
26
|
+
<!-- <input type="text" name="deliver_date" style="width: 50%;" class="layui-input" id="ID-laydate-demo" placeholder="- -">-->
|
27
|
+
<!-- </div>-->
|
28
|
+
<!-- </div>-->
|
29
29
|
|
30
30
|
<div class="layui-form-item">
|
31
31
|
<label class="layui-form-label">交付状态:<span style="color: red"> *</span></label>
|
@@ -39,7 +39,7 @@
|
|
39
39
|
</div>
|
40
40
|
</div>
|
41
41
|
<div class="layui-form-item">
|
42
|
-
<label class="layui-form-label"
|
42
|
+
<label class="layui-form-label">课程经理:<span style="color: red"> *</span></label>
|
43
43
|
<div class="layui-input-block">
|
44
44
|
<div id="manage_id" style="width: 50%"></div>
|
45
45
|
</div>
|
@@ -64,9 +64,9 @@
|
|
64
64
|
// 解决form表单中select不渲染的问题
|
65
65
|
form.render();
|
66
66
|
form.render('select', 'test')
|
67
|
-
laydate.render({
|
68
|
-
|
69
|
-
});
|
67
|
+
// laydate.render({
|
68
|
+
// elem: '#ID-laydate-demo'
|
69
|
+
// });
|
70
70
|
|
71
71
|
// 交付单位
|
72
72
|
var school_id = xmSelect.render({
|
@@ -96,9 +96,9 @@
|
|
96
96
|
disabled: true,
|
97
97
|
selected: true
|
98
98
|
}]
|
99
|
-
school_id.setValue(school)
|
99
|
+
// school_id.setValue(school)
|
100
100
|
}else{
|
101
|
-
school_id.setValue([])
|
101
|
+
// school_id.setValue([])
|
102
102
|
}
|
103
103
|
|
104
104
|
},
|
@@ -180,10 +180,33 @@
|
|
180
180
|
multiple: true
|
181
181
|
})
|
182
182
|
|
183
|
+
function isNull(str){
|
184
|
+
return str === "" || str === null
|
185
|
+
}
|
186
|
+
|
183
187
|
form.on('submit(saveBtn)', function (data) {
|
188
|
+
|
184
189
|
console.log(form.val())
|
185
190
|
let new_data = form.val();
|
186
191
|
|
192
|
+
if(isNull(new_data.business_id)){
|
193
|
+
layer.msg('请选商机');
|
194
|
+
return false
|
195
|
+
}
|
196
|
+
if(isNull(new_data.subject_ids)){
|
197
|
+
layer.msg('请选实践课程');
|
198
|
+
return false
|
199
|
+
}
|
200
|
+
if(isNull(new_data.manage_id)){
|
201
|
+
layer.msg('请选课堂经理');
|
202
|
+
return false
|
203
|
+
}
|
204
|
+
if(isNull(new_data.state)){
|
205
|
+
layer.msg('请选状态');
|
206
|
+
return false
|
207
|
+
}
|
208
|
+
|
209
|
+
|
187
210
|
$.ajax('/missions/business_courses/', {
|
188
211
|
method: 'POST',
|
189
212
|
data: {
|
@@ -208,5 +231,7 @@
|
|
208
231
|
})
|
209
232
|
return false;
|
210
233
|
});
|
234
|
+
|
235
|
+
|
211
236
|
});
|
212
237
|
</script>
|
@@ -800,15 +800,13 @@
|
|
800
800
|
dropdown.render({
|
801
801
|
elem: '.export_more-btn',
|
802
802
|
data: export_dropmenu,
|
803
|
-
click: function(data
|
804
|
-
var elem = $(this.elem);
|
805
|
-
id = elem.data('id');
|
803
|
+
click: function(data){
|
806
804
|
switch (data.event) {
|
807
805
|
case 'export_csv':
|
808
|
-
export_bussiness('csv')
|
806
|
+
export_bussiness('csv');
|
809
807
|
break;
|
810
808
|
case 'export_excel':
|
811
|
-
export_bussiness('xls')
|
809
|
+
export_bussiness('xls');
|
812
810
|
break;
|
813
811
|
case 'export_records':
|
814
812
|
export_records();
|
@@ -818,17 +816,17 @@
|
|
818
816
|
|
819
817
|
}
|
820
818
|
});
|
821
|
-
}
|
819
|
+
};
|
822
820
|
function export_bussiness(type) {
|
823
821
|
var data = form.val("search_form");
|
824
822
|
var business_type = [];
|
825
823
|
business_type_list.getValue().forEach(function(d) {
|
826
824
|
business_type.push(d.value);
|
827
|
-
})
|
825
|
+
});
|
828
826
|
var business_step = [];
|
829
827
|
business_step_list.getValue().forEach(function(d) {
|
830
828
|
business_step.push(d.value);
|
831
|
-
})
|
829
|
+
});
|
832
830
|
data.place_id = index_place_list.getValue('valueStr');
|
833
831
|
data.business_type = business_type.toString();
|
834
832
|
data.business_step = business_step.toString();
|
@@ -855,8 +853,12 @@
|
|
855
853
|
year: data.year,
|
856
854
|
mine: search['clazz'] == 'me' ? true : '',
|
857
855
|
is_follow: search['clazz'] == 'followes' ? true : '',
|
856
|
+
special: search['clazz'] == 'special' ? true : '',
|
857
|
+
is_area: search['clazz'] == 'area' ? true : '',
|
858
|
+
delete_list: search['clazz'] == 'delete_list' ? true : '',
|
859
|
+
plan_year: search['clazz'] == 'plan_year' ? true : ''
|
858
860
|
}, function (res) {
|
859
|
-
data = res.data
|
861
|
+
data = res.data;
|
860
862
|
table.exportFile(business_table.config.id,data, type);
|
861
863
|
layer.closeAll('loading');
|
862
864
|
request.get('missions/businesses/add_export_records?type=' + type, {}, function (res) {
|
@@ -486,7 +486,7 @@
|
|
486
486
|
});
|
487
487
|
var contract_table = table.render({
|
488
488
|
elem: '#contact_table',
|
489
|
-
|
489
|
+
// url: '/missions/contracts',
|
490
490
|
autoSort: false,
|
491
491
|
where: {q: data},
|
492
492
|
defaultToolbar: ['filter'],
|
@@ -500,6 +500,21 @@
|
|
500
500
|
skin: 'line',
|
501
501
|
});
|
502
502
|
|
503
|
+
if (gon.bidded_date) {
|
504
|
+
table.reload('contact_table', {
|
505
|
+
url: '/missions/contracts',
|
506
|
+
where: {
|
507
|
+
q: {
|
508
|
+
bidded_date: gon.bidded_date,
|
509
|
+
}
|
510
|
+
}
|
511
|
+
});
|
512
|
+
} else {
|
513
|
+
table.reload('contact_table', {
|
514
|
+
url: '/missions/contracts'
|
515
|
+
});
|
516
|
+
}
|
517
|
+
|
503
518
|
|
504
519
|
var sort = {}, search = data;
|
505
520
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<div class="layui-tab" lay-filter="contract_tab">
|
3
3
|
<ul class="layui-tab-title">
|
4
4
|
<li class="layui-this follows_li">跟进动态</li>
|
5
|
-
<li class="contracts_list_li">合同列表</li>
|
5
|
+
<li class="contracts_list_li" lay-id="contract">合同列表</li>
|
6
6
|
<% if can? :read_sales_detail, EducodeSales::Business %>
|
7
7
|
<li class="sales_list_li">销售明细</li>
|
8
8
|
<% end %>
|
@@ -29,9 +29,9 @@
|
|
29
29
|
request = layui.request,
|
30
30
|
dropdown = layui.dropdown,
|
31
31
|
miniPage = layui.miniPage,
|
32
|
-
element = layui.element,
|
33
32
|
laydate = layui.laydate;
|
34
33
|
var laydate = layui.laydate;
|
34
|
+
element = layui.element;
|
35
35
|
|
36
36
|
|
37
37
|
|
@@ -44,6 +44,9 @@
|
|
44
44
|
}
|
45
45
|
});
|
46
46
|
|
47
|
+
<% if params[:date_at].present? %>
|
48
|
+
loadPage("/missions/contracts/list?date_at=<%= params[:date_at] %>");
|
49
|
+
<% end %>
|
47
50
|
|
48
51
|
function loadPage(url) {
|
49
52
|
var layer_index = layer.load(0, {shade: [0.1, '#fff']});
|
@@ -17,7 +17,7 @@
|
|
17
17
|
<div class="layui-inline">
|
18
18
|
<label class="layui-form-label">回款日期</label>
|
19
19
|
<div class="layui-input-inline">
|
20
|
-
<input type="text" name="date_at" class="layui-input" id="
|
20
|
+
<input type="text" name="date_at" class="layui-input" id="return_date">
|
21
21
|
</div>
|
22
22
|
</div>
|
23
23
|
<div class="layui-inline">
|
@@ -35,7 +35,7 @@
|
|
35
35
|
<div class="layui-inline">
|
36
36
|
<label class="layui-form-label required">匹配状态</label>
|
37
37
|
<div class="layui-input-inline">
|
38
|
-
<%= select_tag "state", options_for_select(['已认领', '待认领', '无对应合同', '无对应应收款']), { 'lay-filter': 'state', include_blank: true, "lay-search": "" } %>
|
38
|
+
<%= select_tag "state", options_for_select(['已认领', '待认领', '无对应合同', '无对应应收款'], params[:date_at].present? ? "已认领" : ""), { 'lay-filter': 'state', include_blank: true, "lay-search": "" } %>
|
39
39
|
</div>
|
40
40
|
</div>
|
41
41
|
<div class="layui-inline show_item">
|
@@ -92,13 +92,14 @@
|
|
92
92
|
laydate = layui.laydate;
|
93
93
|
table = layui.table;
|
94
94
|
laydate.render({
|
95
|
-
elem: '#
|
96
|
-
range: true
|
95
|
+
elem: '#return_date',
|
96
|
+
range: true,
|
97
|
+
value: gon.date
|
97
98
|
});
|
98
99
|
form.render();
|
99
100
|
var money_plan_record_table = table.render({
|
100
101
|
elem: '#money_plan_record_table',
|
101
|
-
|
102
|
+
// url: '/missions/money_plan_records',
|
102
103
|
title: '回款记录列表',
|
103
104
|
toolbar: '#toolbar_money_plan_record',
|
104
105
|
defaultToolbar: ['filter'],
|
@@ -182,6 +183,21 @@
|
|
182
183
|
filterable: true,
|
183
184
|
radio: true,
|
184
185
|
});
|
186
|
+
if (gon.date) {
|
187
|
+
table.reload('money_plan_record_table', {
|
188
|
+
url: '/missions/money_plan_records',
|
189
|
+
where: {
|
190
|
+
q: {
|
191
|
+
date_at: gon.date,
|
192
|
+
state: '已认领'
|
193
|
+
}
|
194
|
+
}
|
195
|
+
});
|
196
|
+
} else {
|
197
|
+
table.reload('money_plan_record_table', {
|
198
|
+
url: '/missions/money_plan_records'
|
199
|
+
});
|
200
|
+
}
|
185
201
|
|
186
202
|
var sort = {},
|
187
203
|
search = {};
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<ul class="layui-tab-title">
|
4
4
|
<li class="layui-this">回款计划</li>
|
5
5
|
<% if can? :record, EducodeSales::MoneyPlan %>
|
6
|
-
<li class="">回款记录</li>
|
6
|
+
<li class="" lay-id="money_record">回款记录</li>
|
7
7
|
<% end %>
|
8
8
|
<li class="">开票记录</li>
|
9
9
|
</ul>
|
@@ -29,9 +29,10 @@
|
|
29
29
|
request = layui.request,
|
30
30
|
dropdown = layui.dropdown,
|
31
31
|
miniPage = layui.miniPage,
|
32
|
-
|
32
|
+
|
33
33
|
laydate = layui.laydate;
|
34
34
|
var laydate = layui.laydate;
|
35
|
+
element = layui.element;
|
35
36
|
|
36
37
|
|
37
38
|
|
@@ -44,6 +45,9 @@
|
|
44
45
|
loadPage('/missions/invoices/apply_records')
|
45
46
|
}
|
46
47
|
});
|
48
|
+
<% if params[:date_at].present? %>
|
49
|
+
loadPage("/missions/money_plan_records?date_at=<%= params[:date_at] %>");
|
50
|
+
<% end %>
|
47
51
|
<% else %>
|
48
52
|
element.on('tab(money_plan_tab)', function(data) {
|
49
53
|
if (data.index == 1 && $("#invoice_apply").length == 0) {
|
@@ -1 +1 @@
|
|
1
|
-
$("#
|
1
|
+
$("#page_7").html("<%= j render 'return_money_forecast' %>");
|
@@ -6,9 +6,9 @@
|
|
6
6
|
<li class="">商机区域分布</li>
|
7
7
|
<li class="">销售人员跟进分析</li>
|
8
8
|
<li class="">中标预测图</li>
|
9
|
+
<li class="">回款预测图</li>
|
9
10
|
<li class="">用户分析</li>
|
10
11
|
<li class="">拜访分析</li>
|
11
|
-
<li class="">回款预测图</li>
|
12
12
|
</ul>
|
13
13
|
<div class="layui-tab-content">
|
14
14
|
<div class="layui-tab-item layui-show">
|
@@ -141,7 +141,7 @@
|
|
141
141
|
<div class="panel layui-bg-number">
|
142
142
|
<div class="panel-body">
|
143
143
|
<div class="panel-title">
|
144
|
-
<h5>已回款<a href="/missions/
|
144
|
+
<h5>已回款<a href="/missions/money_plans/list?date_at=<%= @year %>" style="color: #0000FF;float: right">查看商机</a></h5>
|
145
145
|
</div>
|
146
146
|
<div class="panel-content y-t-10">
|
147
147
|
<h1 class="no-margins"><%= @return_amount %>万</h1>
|
@@ -192,7 +192,7 @@
|
|
192
192
|
<div class="panel layui-bg-number">
|
193
193
|
<div class="panel-body">
|
194
194
|
<div class="panel-title">
|
195
|
-
<h5>应收款<a href="/missions/
|
195
|
+
<h5>应收款<a href="/missions/contracts?date_at=<%= @year %>" style="color: #0000FF;float: right">查看商机</a></h5>
|
196
196
|
</div>
|
197
197
|
<div class="panel-content y-t-10">
|
198
198
|
<h1 class="no-margins"><%= @receivable_amount.round(2) %>万</h1>
|
@@ -271,11 +271,11 @@
|
|
271
271
|
} else if (data.index == 5 && $("#tab_6").length == 0) {
|
272
272
|
loadPage('/missions/sale_trends/goal_forecast')
|
273
273
|
} else if (data.index == 6 && $("#tab_7").length == 0) {
|
274
|
-
loadPage('/missions/sale_trends/
|
274
|
+
loadPage('/missions/sale_trends/return_money_forecast')
|
275
275
|
} else if (data.index == 7 && $("#tab_8").length == 0) {
|
276
|
-
loadPage('/missions/sale_trends/
|
276
|
+
loadPage('/missions/sale_trends/user_stat')
|
277
277
|
} else if (data.index == 8 && $("#tab_9").length == 0) {
|
278
|
-
loadPage('/missions/sale_trends/
|
278
|
+
loadPage('/missions/sale_trends/visit_analysis')
|
279
279
|
}
|
280
280
|
});
|
281
281
|
|
@@ -1 +1 @@
|
|
1
|
-
$("#
|
1
|
+
$("#page_8").html("<%= j render 'user_stat' %>");
|
@@ -1 +1 @@
|
|
1
|
-
$("#
|
1
|
+
$("#page_9").html("<%= j render 'visit_analysis' %>");
|