educode_sales 0.9.11 → 0.9.12
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/sale_trends_controller.rb +25 -16
- data/app/views/educode_sales/activities/edit.html.erb +2 -2
- data/app/views/educode_sales/activities/new.html.erb +2 -2
- data/app/views/educode_sales/businesses/_follows.html.erb +3 -3
- data/app/views/educode_sales/businesses/index.html.erb +31 -16
- data/app/views/educode_sales/businesses/index.json.jbuilder +1 -1
- data/app/views/educode_sales/customers/index.html.erb +1 -1
- data/app/views/educode_sales/money_plans/index.html.erb +2 -2
- data/app/views/educode_sales/places/edit.html.erb +1 -1
- data/app/views/educode_sales/places/index.html.erb +1 -1
- data/app/views/educode_sales/places/new.html.erb +1 -1
- data/app/views/educode_sales/sale_trends/_business_area.html.erb +6 -0
- data/app/views/educode_sales/staffs/index.html.erb +1 -1
- data/app/views/educode_sales/teachers/index.html.erb +2 -2
- data/lib/educode_sales/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 518dc2f8c5a04be4e9865d17425ef4e3f51624fef4994db928233361ec5a9ac9
|
4
|
+
data.tar.gz: 1366d52aaac7c5ac23c4c495a61a46445ac5b99984dcdb2bede6f77bf7307f1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bcd5a2e3f17724446da729dd715201550ad4b8719ec68238ad39ce87ca2b37d1fb2f993cdbae4ec7e71e2a8afa80958e08d469150f3a229ea8394f83d8def798
|
7
|
+
data.tar.gz: 4ba4ac0b4b3ba8d62b53152d6d58056245e07b6e32305aa1b8bc77dca6e05f5b53f2a7f510db69fab4dc26017a43245e6f615c3f5512297ee29dbd950c8dce6e
|
@@ -81,6 +81,8 @@ module EducodeSales
|
|
81
81
|
@year = params[:q][:name].split("-")[1].present? ? params[:q][:name].split("-")[1] : ''
|
82
82
|
end
|
83
83
|
|
84
|
+
@budget_stage_ids = Common.where(clazz: '商机阶段', name: ['初步接洽', '准备方案','已交方案', '已立项']).pluck(:id)
|
85
|
+
|
84
86
|
if params[:q].present? && params[:q][:name].present? && params[:q][:name] == "(销售态势-" + @year + "-现有商机)"
|
85
87
|
ids = Common.where(extras: %w[a_class b_class c_class d_class e_class o_class]).pluck(:id)
|
86
88
|
if @year == '全部'
|
@@ -11,7 +11,7 @@ module EducodeSales
|
|
11
11
|
x = Common.find_by(extras: EducodeSales::Common::XTYPE)&.id
|
12
12
|
o = Common.find_by(extras: EducodeSales::Common::OTYPE)&.id
|
13
13
|
if (@year == '全部')
|
14
|
-
@business_amount = Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", x).sum(:total_amount).round(2)
|
14
|
+
@business_amount = Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ? AND educode_sales_follow_ups.clazz_id != ?", x, o).sum(:total_amount).round(2)
|
15
15
|
stage_ids = Common.where(clazz: '商机阶段', name: ['已中标', '已签单', '已验收', '回款中', '服务中', '已结束']).pluck(:id)
|
16
16
|
# 中标总金额, 已回款总金额
|
17
17
|
total_return = Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", x).where("educode_sales_follow_ups.stage_id IN (?)", stage_ids).select("sum(total_amount) AS total, sum(educode_sales_businesses.return_money) AS return_money")
|
@@ -34,7 +34,7 @@ module EducodeSales
|
|
34
34
|
year_over_time = "#{@year}-12-31 23:59:59"
|
35
35
|
|
36
36
|
@sale_trend = SaleTrend.find_or_create_by(year: @year)
|
37
|
-
@business_amount = Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", x).where("educode_sales_follow_ups.year = ?", @year).sum(:total_amount).round(2)
|
37
|
+
@business_amount = Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ? AND educode_sales_follow_ups.clazz_id != ?", x, o).where("educode_sales_follow_ups.year = ?", @year).sum(:total_amount).round(2)
|
38
38
|
stage_ids = Common.where(clazz: '商机阶段', name: ['已中标', '已签单', '已验收', '回款中', '服务中', '已结束']).pluck(:id)
|
39
39
|
|
40
40
|
# 中标总金额, 已回款总金额
|
@@ -214,20 +214,25 @@ module EducodeSales
|
|
214
214
|
end
|
215
215
|
format.js do
|
216
216
|
x = EducodeSales::Common.find_by(extras: EducodeSales::Common::XTYPE)&.id
|
217
|
+
o = Common.find_by(extras: EducodeSales::Common::OTYPE)&.id
|
217
218
|
provinces = EducodeSales::Common.where(clazz: 'area').pluck(:name)
|
218
219
|
if params[:business_count_type] == 'money' || params[:business_count_type].blank?
|
220
|
+
data = provinces.map { |province|
|
221
|
+
if params[:business_type].blank?
|
222
|
+
Business.joins(:last_follow_up).where("educode_sales_businesses.department_id in (?)", School.joins(:departments).where(province: province).pluck("departments.id")).where("educode_sales_follow_ups.clazz_id != ? AND educode_sales_follow_ups.clazz_id != ?", x, o).sum(:total_amount).round(2)
|
223
|
+
else
|
224
|
+
Business.joins(:last_follow_up).where("educode_sales_businesses.department_id in (?)", School.joins(:departments).where(province: province).pluck("departments.id")).where("educode_sales_follow_ups.clazz_id = ?", params[:business_type]).sum(:total_amount).round(2)
|
225
|
+
end
|
226
|
+
}
|
227
|
+
if params[:sort_by].present?
|
228
|
+
data.sort! { |a, b| params[:sort_by] == 'asc' ? a <=> b : b <=> a }
|
229
|
+
end
|
219
230
|
@business_data = {
|
220
231
|
labels: provinces,
|
221
232
|
datasets: [
|
222
233
|
{
|
223
234
|
label: "商机总额",
|
224
|
-
data:
|
225
|
-
if params[:business_type].blank?
|
226
|
-
Business.joins(:last_follow_up).where("educode_sales_businesses.department_id in (?)", School.joins(:departments).where(province: province).pluck("departments.id")).where("educode_sales_follow_ups.clazz_id != ?", x).sum(:total_amount).round(2)
|
227
|
-
else
|
228
|
-
Business.joins(:last_follow_up).where("educode_sales_businesses.department_id in (?)", School.joins(:departments).where(province: province).pluck("departments.id")).where("educode_sales_follow_ups.clazz_id = ?", params[:business_type]).sum(:total_amount).round(2)
|
229
|
-
end
|
230
|
-
},
|
235
|
+
data: data,
|
231
236
|
backgroundColor: SaleTrend::COLORS[0],
|
232
237
|
borderColor: SaleTrend::COLORS[0],
|
233
238
|
borderWidth: 1
|
@@ -235,18 +240,22 @@ module EducodeSales
|
|
235
240
|
]
|
236
241
|
}
|
237
242
|
else
|
243
|
+
data = provinces.map { |province|
|
244
|
+
if params[:business_type].blank?
|
245
|
+
Business.joins(:last_follow_up).where("educode_sales_businesses.department_id in (?)", School.joins(:departments).where(province: province).pluck("departments.id")).where("educode_sales_follow_ups.clazz_id != ? AND educode_sales_follow_ups.clazz_id != ?", x, o).count
|
246
|
+
else
|
247
|
+
Business.joins(:last_follow_up).where("educode_sales_businesses.department_id in (?)", School.joins(:departments).where(province: province).pluck("departments.id")).where("educode_sales_follow_ups.clazz_id = ?", params[:business_type]).count
|
248
|
+
end
|
249
|
+
}
|
250
|
+
if params[:sort_by].present?
|
251
|
+
data.sort! { |a, b| params[:sort_by] == 'asc' ? a <=> b : b <=> a }
|
252
|
+
end
|
238
253
|
@business_data = {
|
239
254
|
labels: provinces,
|
240
255
|
datasets: [
|
241
256
|
{
|
242
257
|
label: "商机数量",
|
243
|
-
data:
|
244
|
-
if params[:business_type].blank?
|
245
|
-
Business.joins(:last_follow_up).where("educode_sales_businesses.department_id in (?)", School.joins(:departments).where(province: province).pluck("departments.id")).where("educode_sales_follow_ups.clazz_id != ?", x).count
|
246
|
-
else
|
247
|
-
Business.joins(:last_follow_up).where("educode_sales_businesses.department_id in (?)", School.joins(:departments).where(province: province).pluck("departments.id")).where("educode_sales_follow_ups.clazz_id = ?", params[:business_type]).count
|
248
|
-
end
|
249
|
-
},
|
258
|
+
data: data,
|
250
259
|
backgroundColor: SaleTrend::COLORS[0],
|
251
260
|
borderColor: SaleTrend::COLORS[0],
|
252
261
|
borderWidth: 1
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<div class="layui-inline">
|
6
6
|
<label class="layui-form-label required">活动名称</label>
|
7
7
|
<div class="layui-input-block">
|
8
|
-
<input type="text" name="name" required lay-verify="required"
|
8
|
+
<input type="text" name="name" required lay-verify="required"
|
9
9
|
class="layui-input" value="<%= @activity.name %>">
|
10
10
|
</div>
|
11
11
|
</div>
|
@@ -19,7 +19,7 @@
|
|
19
19
|
<div class="layui-inline">
|
20
20
|
<label class="layui-form-label required">活动天数</label>
|
21
21
|
<div class="layui-input-block">
|
22
|
-
<input type="text" name="days" required lay-verify="required"
|
22
|
+
<input type="text" name="days" required lay-verify="required"
|
23
23
|
class="layui-input" value="<%= @activity.days %>">
|
24
24
|
</div>
|
25
25
|
</div>
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<div class="layui-inline">
|
6
6
|
<label class="layui-form-label required">活动名称</label>
|
7
7
|
<div class="layui-input-block">
|
8
|
-
<input type="text" name="name" required lay-verify="required"
|
8
|
+
<input type="text" name="name" required lay-verify="required" placeholder="请输入"
|
9
9
|
class="layui-input" id="inputFocus">
|
10
10
|
</div>
|
11
11
|
</div>
|
@@ -18,7 +18,7 @@
|
|
18
18
|
<div class="layui-inline">
|
19
19
|
<label class="layui-form-label required">活动天数</label>
|
20
20
|
<div class="layui-input-block">
|
21
|
-
<input type="text" name="days" required lay-verify="required"
|
21
|
+
<input type="text" name="days" required lay-verify="required"
|
22
22
|
class="layui-input">
|
23
23
|
</div>
|
24
24
|
</div>
|
@@ -4,13 +4,13 @@
|
|
4
4
|
<div class="layui-inline">
|
5
5
|
<label class="layui-form-label">所属商机</label>
|
6
6
|
<div class="layui-input-inline">
|
7
|
-
<input type="text" name="name"
|
7
|
+
<input type="text" name="name" class="layui-input">
|
8
8
|
</div>
|
9
9
|
</div>
|
10
10
|
<div class="layui-inline">
|
11
11
|
<label class="layui-form-label">单位</label>
|
12
12
|
<div class="layui-input-inline">
|
13
|
-
<input type="text" name="department"
|
13
|
+
<input type="text" name="department" class="layui-input">
|
14
14
|
</div>
|
15
15
|
</div>
|
16
16
|
<div class="layui-inline">
|
@@ -34,7 +34,7 @@
|
|
34
34
|
<div class="layui-inline">
|
35
35
|
<label class="layui-form-label">最新进展</label>
|
36
36
|
<div class="layui-input-inline">
|
37
|
-
<input type="text" name="description"
|
37
|
+
<input type="text" name="description" class="layui-input">
|
38
38
|
</div>
|
39
39
|
</div>
|
40
40
|
|
@@ -17,14 +17,14 @@
|
|
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="name"
|
21
|
-
<input type="text" style="display: none" name="place_id"
|
20
|
+
<input type="text" name="name" class="layui-input" value="<%=params[:name] %>">
|
21
|
+
<input type="text" style="display: none" name="place_id" class="layui-input" value="<%=params[:place_id] %>">
|
22
22
|
</div>
|
23
23
|
</div>
|
24
24
|
<div class="layui-inline">
|
25
25
|
<label class="layui-form-label">单位</label>
|
26
26
|
<div class="layui-input-inline">
|
27
|
-
<input type="text" name="department"
|
27
|
+
<input type="text" name="department" value="<%=params[:school] %>" class="layui-input">
|
28
28
|
</div>
|
29
29
|
</div>
|
30
30
|
<div class="layui-inline">
|
@@ -92,7 +92,9 @@
|
|
92
92
|
</div>
|
93
93
|
</form>
|
94
94
|
</div>
|
95
|
-
<
|
95
|
+
<div id="businesses_table_wraper">
|
96
|
+
<table class="layui-hide" id="businesses_table" lay-filter="businesses_table"></table>
|
97
|
+
</div>
|
96
98
|
</div>
|
97
99
|
</div>
|
98
100
|
</div>
|
@@ -178,7 +180,7 @@
|
|
178
180
|
miniPage = layui.miniPage,
|
179
181
|
dropdown = layui.dropdown,
|
180
182
|
laydate = layui.laydate;
|
181
|
-
|
183
|
+
var openWH = miniPage.getOpenWidthHeight();
|
182
184
|
laydate.render({
|
183
185
|
elem: '#date',
|
184
186
|
range: true
|
@@ -188,12 +190,10 @@
|
|
188
190
|
range: true
|
189
191
|
});
|
190
192
|
|
191
|
-
//
|
192
|
-
//
|
193
|
-
//
|
194
|
-
//
|
195
|
-
// $(document).ready(function () {
|
196
|
-
// window.onload = hn;
|
193
|
+
// $('#businesses_table_wraper .layui-table-body').on('scroll', function(e) {
|
194
|
+
// var leftPx = $(e.target).scrollLeft(); //获取表格body,滚动条距离左边的长度
|
195
|
+
// var left = 'translateX(-' + leftPx + 'px)';
|
196
|
+
// $('#businesses_table_wraper .layui-table-header .layui-table').css('transform', left); //设置表格header的内容反向(-)移动
|
197
197
|
// });
|
198
198
|
|
199
199
|
var is_show =
|
@@ -262,7 +262,7 @@
|
|
262
262
|
|
263
263
|
var data = form.val("search_form");
|
264
264
|
data.business_type = "<%=params[:clazz_id] %>";
|
265
|
-
|
265
|
+
|
266
266
|
|
267
267
|
table = layui.table;
|
268
268
|
var cols_table = [
|
@@ -375,6 +375,13 @@
|
|
375
375
|
sort: true,
|
376
376
|
hide: gon.filter.bidded_date
|
377
377
|
},
|
378
|
+
{
|
379
|
+
field: 'budget_money',
|
380
|
+
width: 105,
|
381
|
+
title: '预算金额',
|
382
|
+
sort: true,
|
383
|
+
hide: gon.filter.budget_money
|
384
|
+
},
|
378
385
|
{
|
379
386
|
field: 'signed_date',
|
380
387
|
width: 105,
|
@@ -498,10 +505,18 @@
|
|
498
505
|
limits: [10,15,20,30,40,50,60,70,80,90],
|
499
506
|
page: true,
|
500
507
|
skin: 'line',
|
501
|
-
done: function (res) {
|
502
|
-
|
503
|
-
|
504
|
-
export_drowpdwonRender()
|
508
|
+
done: function (res, curr, coun) {
|
509
|
+
exportData=res.data;
|
510
|
+
drowpdwonRender();
|
511
|
+
export_drowpdwonRender();
|
512
|
+
// let headerTop = $('.layui-table-header').offset().top; //获取表格头到文档顶部的距离
|
513
|
+
// $(".layuimini-content-page").scroll(function () {
|
514
|
+
// if ((headerTop - $(".layuimini-content-page").scrollTop()) < -185) { //超过了
|
515
|
+
// $('#businesses_table_wraper .layui-table-header').addClass('table-header-fixed'); //添加样式,固定住表头
|
516
|
+
// } else { //没超过
|
517
|
+
// $('#businesses_table_wraper .layui-table-header').removeClass('table-header-fixed'); //移除样式
|
518
|
+
// }
|
519
|
+
// });
|
505
520
|
}
|
506
521
|
});
|
507
522
|
|
@@ -26,7 +26,7 @@ json.data do
|
|
26
26
|
break
|
27
27
|
end
|
28
28
|
end
|
29
|
-
|
29
|
+
json.budget_money d.follow_ups.where(stage_id: @budget_stage_ids).order("created_at desc").first&.total_amount&.round(2) || 0
|
30
30
|
json.area d.department.school.province
|
31
31
|
school_property = d.department.school.school_property
|
32
32
|
property = []
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<div class="layui-inline">
|
5
5
|
<label class="layui-form-label">客户名称</label>
|
6
6
|
<div class="layui-input-inline">
|
7
|
-
<input type="text" name="name"
|
7
|
+
<input type="text" name="name" class="layui-input">
|
8
8
|
</div>
|
9
9
|
</div>
|
10
10
|
<div class="layui-inline">
|
@@ -4,13 +4,13 @@
|
|
4
4
|
<div class="layui-inline">
|
5
5
|
<label class="layui-form-label">所属商机</label>
|
6
6
|
<div class="layui-input-inline">
|
7
|
-
<input type="text" name="business"
|
7
|
+
<input type="text" name="business" class="layui-input">
|
8
8
|
</div>
|
9
9
|
</div>
|
10
10
|
<div class="layui-inline">
|
11
11
|
<label class="layui-form-label">单位</label>
|
12
12
|
<div class="layui-input-inline">
|
13
|
-
<input type="text" name="school"
|
13
|
+
<input type="text" name="school" class="layui-input">
|
14
14
|
</div>
|
15
15
|
</div>
|
16
16
|
<div class="layui-inline">
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<div class="layui-inline">
|
5
5
|
<label class="layui-form-label required">渠道名称</label>
|
6
6
|
<div class="layui-input-block" style="line-height: 36px;">
|
7
|
-
<input type="text" name="name" id="name" required lay-verify="required"
|
7
|
+
<input type="text" name="name" id="name" required lay-verify="required"
|
8
8
|
class="layui-input" value="<%= @place.name %>">
|
9
9
|
<%#= text_field_tag(:name, @place.name) %>
|
10
10
|
</div>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<div class="layui-inline">
|
5
5
|
<label class="layui-form-label">渠道名称</label>
|
6
6
|
<div class="layui-input-inline">
|
7
|
-
<input type="text" name="name"
|
7
|
+
<input type="text" name="name" class="layui-input">
|
8
8
|
</div>
|
9
9
|
</div>
|
10
10
|
<div class="layui-inline">
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<div class="layui-inline">
|
5
5
|
<label class="layui-form-label required">渠道名称</label>
|
6
6
|
<div class="layui-input-block">
|
7
|
-
<input type="text" name="name" required lay-verify="required"
|
7
|
+
<input type="text" name="name" required lay-verify="required"
|
8
8
|
class="layui-input" id="inputFocus">
|
9
9
|
</div>
|
10
10
|
</div>
|
@@ -15,6 +15,12 @@
|
|
15
15
|
<%= select_tag "business_type", options_for_select(EducodeSales::Common.where(clazz: 'business_type').where.not(extras: "x_class").pluck(:name, :id), params[:business_type]), { 'lay-filter': 'clazz_id', include_blank: true } %>
|
16
16
|
</div>
|
17
17
|
</div>
|
18
|
+
<div class="layui-inline m-t-10">
|
19
|
+
<label class="layui-form-label">顺序</label>
|
20
|
+
<div class="layui-input-inline">
|
21
|
+
<%= select_tag "sort_by", options_for_select([['', ''], ['升序', 'asc'], ['降序', 'desc']], params[:sort_by]), { include_blank: true } %>
|
22
|
+
</div>
|
23
|
+
</div>
|
18
24
|
<div class="layui-inline">
|
19
25
|
<button type="button" id="search_bt" class="business_bt layui-btn layui-btn-primary" lay-submit lay-filter="business_area">确定
|
20
26
|
</button>
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<div class="layui-inline">
|
11
11
|
<label class="layui-form-label">用户名</label>
|
12
12
|
<div class="layui-input-inline large-select">
|
13
|
-
<input type="text" class="layui-input" id="name"
|
13
|
+
<input type="text" class="layui-input" id="name" name="name">
|
14
14
|
</div>
|
15
15
|
</div>
|
16
16
|
<div class="layui-inline">
|
@@ -4,13 +4,13 @@
|
|
4
4
|
<div class="layui-inline">
|
5
5
|
<label class="layui-form-label">教师姓名</label>
|
6
6
|
<div class="layui-input-inline">
|
7
|
-
<input type="text" name="name"
|
7
|
+
<input type="text" name="name" class="layui-input">
|
8
8
|
</div>
|
9
9
|
</div>
|
10
10
|
<div class="layui-inline">
|
11
11
|
<label class="layui-form-label">单位</label>
|
12
12
|
<div class="layui-input-inline">
|
13
|
-
<input type="text" name="school"
|
13
|
+
<input type="text" name="school" class="layui-input">
|
14
14
|
</div>
|
15
15
|
</div>
|
16
16
|
<div class="layui-inline">
|
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.9.
|
4
|
+
version: 0.9.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- anke1460
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-10-
|
11
|
+
date: 2022-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|