educode_sales 0.9.23 → 0.9.25
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 +72 -127
- data/app/controllers/educode_sales/sale_trends_controller.rb +1 -1
- data/app/models/educode_sales/business.rb +17 -0
- data/app/views/educode_sales/businesses/_follows.html.erb +9 -9
- data/app/views/educode_sales/businesses/daily_paper.html.erb +2 -2
- data/app/views/educode_sales/businesses/index.html.erb +83 -36
- data/app/views/educode_sales/businesses/index.json.jbuilder +2 -6
- data/app/views/educode_sales/sale_trends/_business_followup_analysis.html.erb +44 -4
- data/app/views/educode_sales/sale_trends/trends.html.erb +9 -9
- data/app/views/layouts/educode_sales/application.html.erb +3 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +6 -7
- data/app/assets/images/educode_sales/indexlogo.png +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7326e12d52dc97f7f251f63b033f3c470591be1100f6f9bd06ab057e9a21bd14
|
4
|
+
data.tar.gz: 80817718f3efdcb1a247095f468123ad1111d996dffe3f858cd6b29aab0f52ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4430c0f16dac2deda9e833d7962020fd8727a60d43b3823b631ac7cc5196d40c0bbd66b8170ac114e6cdf5dc197978f3674dfe2d5dad720963baefce8537f76a
|
7
|
+
data.tar.gz: 34fb199238d1d1181e1b07fb8f2e00371e271aa9cc3689af2a916dbeb089f9a2624a0c14140de4cbc550d9faa04a03525db1c9407e9b5d3ae439e8d8152946f9
|
@@ -16,13 +16,42 @@ module EducodeSales
|
|
16
16
|
gon.menus = []
|
17
17
|
gon.export_menus = []
|
18
18
|
gon.place = params[:place_id].present? ? [{ value: params[:place_id], name: EducodeSales::Place.find(params[:place_id]).name }] : []
|
19
|
+
|
20
|
+
bussiness_type = []
|
21
|
+
if params[:type]
|
22
|
+
# 项目类型
|
23
|
+
bussiness_type = EducodeSales::Business.include_types(params[:type]) || []
|
24
|
+
end
|
25
|
+
|
26
|
+
business_step = []
|
27
|
+
if params[:step]
|
28
|
+
# 项目阶段
|
29
|
+
business_step = EducodeSales::Business.include_steps(params[:step]) || []
|
30
|
+
end
|
31
|
+
|
32
|
+
if params[:business_year].present? && params[:business_year] != '全部'
|
33
|
+
gon.business_year = params[:business_year]
|
34
|
+
end
|
35
|
+
|
36
|
+
if params[:bidded_date_year].present? && params[:bidded_date_year] != '全部'
|
37
|
+
gon.bidded_date = Time.new(params[:bidded_date_year]).strftime("%Y-%m-%d") + " - " + Time.new(params[:bidded_date_year]).end_of_year.strftime("%Y-%m-%d")
|
38
|
+
end
|
39
|
+
|
40
|
+
if params[:signed_date_year].present? && params[:signed_date_year] != '全部'
|
41
|
+
gon.signed_date = Time.new(params[:signed_date_year]).strftime("%Y-%m-%d") + " - " + Time.new(params[:signed_date_year]).end_of_year.strftime("%Y-%m-%d")
|
42
|
+
end
|
43
|
+
|
44
|
+
if params[:date_at].present? && params[:date_at] != '全部'
|
45
|
+
# 回款时间
|
46
|
+
gon.date_at = Time.new(params[:date_at]).strftime("%Y-%m-%d") + " - " + Time.new(params[:date_at]).end_of_year.strftime("%Y-%m-%d")
|
47
|
+
end
|
48
|
+
|
19
49
|
gon.business_type = Common.where(clazz: 'business_type').map do |d|
|
20
|
-
{value: d.id, name: d.name}
|
50
|
+
{value: d.id, name: d.name, selected: bussiness_type.include?(d.extras)}
|
21
51
|
end
|
22
52
|
|
23
|
-
gon.type = params[:clazz_id].present? ? [{ value: params[:clazz_id], name: Common.find(params[:clazz_id]).name }] : []
|
24
53
|
gon.business_step = Common.where(clazz: 'business_step').order("position").map do |d|
|
25
|
-
{value: d.id, name: d.name}
|
54
|
+
{value: d.id, name: d.name, selected: business_step.include?(d.name)}
|
26
55
|
end
|
27
56
|
|
28
57
|
if can?(:create, EducodeSales::SalePlan)
|
@@ -81,81 +110,34 @@ module EducodeSales
|
|
81
110
|
@year = params[:q][:name].split("-")[1].present? ? params[:q][:name].split("-")[1] : ''
|
82
111
|
end
|
83
112
|
|
84
|
-
@budget_stage_ids = Common.where(clazz: '商机阶段', name: ['初步接洽', '准备方案','已交方案', '已立项']).pluck(:id)
|
85
|
-
|
86
|
-
if params[:q].present? && params[:q][:name].present? && params[:q][:name] == "(销售态势-" + @year + "-现有商机)"
|
87
|
-
ids = Common.where(extras: %w[a_class b_class c_class d_class e_class o_class]).pluck(:id)
|
88
|
-
if @year == '全部'
|
89
|
-
@businesses = @businesses.joins("
|
90
|
-
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
91
|
-
").where("educode_sales_follow_ups.clazz_id in (?)",ids)
|
92
|
-
else
|
93
|
-
@businesses = @businesses.joins("
|
94
|
-
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
95
|
-
").where("educode_sales_follow_ups.clazz_id in (?)",ids).where("educode_sales_follow_ups.year = ?",@year)
|
96
|
-
end
|
97
|
-
|
98
|
-
end
|
99
|
-
|
100
|
-
if params[:q].present? && params[:q][:name].present? && params[:q][:name] == "(销售态势-" + @year + "-已中标商机)"
|
101
|
-
stage_ids = Common.where(clazz: '商机阶段', name: ['已中标','已签单','已验收','回款中', '服务中','已结束']).pluck(:id)
|
102
|
-
if @year == '全部'
|
103
|
-
@businesses = @businesses.joins("
|
104
|
-
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
105
|
-
").where("educode_sales_follow_ups.stage_id IN (?)",stage_ids)
|
106
|
-
else
|
107
|
-
@businesses = @businesses.joins("
|
108
|
-
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
109
|
-
").where("educode_sales_follow_ups.bidded_date > ? AND educode_sales_follow_ups.bidded_date < ? AND educode_sales_follow_ups.stage_id IN (?)", "#{@year}-01-01", "#{@year}-12-31", stage_ids)
|
110
|
-
end
|
113
|
+
# @budget_stage_ids = Common.where(clazz: '商机阶段', name: ['初步接洽', '准备方案','已交方案', '已立项']).pluck(:id)
|
111
114
|
|
112
|
-
end
|
113
115
|
|
114
|
-
if params[:q]
|
115
|
-
|
116
|
-
|
117
|
-
@businesses = @businesses.joins("
|
118
|
-
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
119
|
-
").where("educode_sales_follow_ups.stage_id IN (?)",s_stage_ids)
|
120
|
-
else
|
121
|
-
@businesses = @businesses.joins("
|
116
|
+
if params[:q] && params[:q][:signed_date].present?
|
117
|
+
date = params[:q][:signed_date].split(" - ")
|
118
|
+
@businesses = @businesses.joins("
|
122
119
|
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
123
|
-
").where("educode_sales_follow_ups.signed_date
|
124
|
-
end
|
120
|
+
").where("educode_sales_follow_ups.signed_date >= ? AND educode_sales_follow_ups.signed_date <= ?", date[0], date[1])
|
125
121
|
end
|
126
122
|
|
127
|
-
if params[:q]
|
123
|
+
if params[:q]&& params[:q][:date_at].present?
|
124
|
+
date = params[:q][:date_at].split(" - ")
|
128
125
|
x_id = Common.find_by(extras: EducodeSales::Common::XTYPE)&.id
|
129
|
-
|
130
|
-
year_over_time = "#{@year}-12-31 23:59:59"
|
131
|
-
money_plan_clazz = 1
|
132
|
-
if @year == '全部'
|
133
|
-
@businesses = @businesses.joins(follow_ups: :money_plans).where("educode_sales_follow_ups.clazz_id != ?", x_id).where.not("educode_sales_money_plans.clazz!= ?", money_plan_clazz).distinct
|
134
|
-
else
|
135
|
-
@businesses = @businesses.joins(follow_ups: :money_plans).where("educode_sales_follow_ups.clazz_id != ?", x_id).where.not("educode_sales_money_plans.clazz!= ?", money_plan_clazz).where("educode_sales_money_plans.date_at >= ? AND educode_sales_money_plans.date_at <= ? ", year_time, year_over_time).distinct
|
136
|
-
end
|
126
|
+
@businesses = @businesses.joins(follow_ups: :money_plans).where("educode_sales_follow_ups.clazz_id != ?", x_id).where.not("educode_sales_money_plans.clazz!= 1").where("educode_sales_money_plans.date_at >= ? AND educode_sales_money_plans.date_at <= ? ", date[0] + " 00:00:00", date[1] + " 23:59:59").distinct
|
137
127
|
end
|
138
128
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
").where("educode_sales_follow_ups.stage_id IN (?)", stage_ids)
|
145
|
-
else
|
146
|
-
@businesses = @businesses.joins("
|
147
|
-
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
148
|
-
").where("educode_sales_follow_ups.bidded_date <= ? AND educode_sales_follow_ups.stage_id IN (?)", "#{@year}-12-31", stage_ids)
|
149
|
-
end
|
150
|
-
|
129
|
+
if params[:q] && params[:q][:bidded_date].present?
|
130
|
+
date = params[:q][:bidded_date].split(" - ")
|
131
|
+
@businesses = @businesses.joins("
|
132
|
+
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
133
|
+
").where("educode_sales_follow_ups.bidded_date >= ? AND educode_sales_follow_ups.bidded_date <= ?", date[0], date[1])
|
151
134
|
end
|
152
135
|
|
153
|
-
|
154
136
|
if params[:q].present? && params[:q][:all].present?
|
155
137
|
@businesses = @businesses
|
156
138
|
end
|
157
139
|
|
158
|
-
if params[:q].present? && params[:q][:name].present?
|
140
|
+
if params[:q].present? && params[:q][:name].present?
|
159
141
|
@businesses = @businesses.where("educode_sales_businesses.name like ?", "%#{params[:q][:name]}%")
|
160
142
|
end
|
161
143
|
if params[:q].present? && params[:q][:department].present?
|
@@ -191,6 +173,12 @@ module EducodeSales
|
|
191
173
|
").where("educode_sales_follow_ups.year = ?", params[:q][:business_year])
|
192
174
|
end
|
193
175
|
|
176
|
+
if params[:q].present? && params[:q][:o_business_deployment].present?
|
177
|
+
@businesses = @businesses.joins("
|
178
|
+
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
179
|
+
").where("educode_sales_follow_ups.o_business_deployment = ?", params[:q][:o_business_deployment])
|
180
|
+
end
|
181
|
+
|
194
182
|
if params[:q].present? && params[:q][:area].present?
|
195
183
|
p = EducodeSales::Common.find(params[:q][:area]).name
|
196
184
|
if @current_admin.is_admin?
|
@@ -257,6 +245,7 @@ module EducodeSales
|
|
257
245
|
educode_sales_businesses.*,
|
258
246
|
last_follow.invitation_at,
|
259
247
|
last_follow.budget_amount,
|
248
|
+
last_follow.o_business_deployment,
|
260
249
|
last_follow.service_time_long,
|
261
250
|
last_follow.service_end_time,
|
262
251
|
last_follow.service_start_time,
|
@@ -294,12 +283,12 @@ module EducodeSales
|
|
294
283
|
JOIN educode_sales_businesses ON educode_sales_businesses.id = educode_sales_follow_ups.business_id
|
295
284
|
JOIN educode_sales_follow_ups AS last_up ON last_up.id = educode_sales_businesses.last_follow_up_id
|
296
285
|
").where("educode_sales_businesses.staff_id = ? AND educode_sales_follow_ups.staff_id = ? AND last_up.clazz_id IN (?) AND last_up.staff_id = #{@current_admin.id}", @current_admin.id, @current_admin.id, ab)
|
297
|
-
|
286
|
+
|
298
287
|
|
299
288
|
@month = business.where("educode_sales_follow_ups.created_at >= ?", Time.now.beginning_of_month).count("DISTINCT(educode_sales_follow_ups.business_id)")
|
300
289
|
@quarter = business.where("educode_sales_follow_ups.created_at >= ?", Time.now.beginning_of_quarter).count("DISTINCT(educode_sales_follow_ups.business_id)")
|
301
290
|
@year = business.where("educode_sales_follow_ups.created_at >= ?", Time.now.beginning_of_year).count("DISTINCT(educode_sales_follow_ups.business_id)")
|
302
|
-
|
291
|
+
|
303
292
|
render layout: false
|
304
293
|
end
|
305
294
|
|
@@ -503,74 +492,30 @@ module EducodeSales
|
|
503
492
|
end
|
504
493
|
end
|
505
494
|
|
506
|
-
if params[:
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
if params[:name].present? && params[:name] == "(销售态势-" + @year + "-现有商机)"
|
511
|
-
ids = Common.where(extras: %w[a_class b_class c_class d_class e_class o_class]).pluck(:id)
|
512
|
-
if @year == '全部'
|
513
|
-
@businesses = @businesses.joins("
|
514
|
-
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
515
|
-
").where("educode_sales_follow_ups.clazz_id in (?)",ids)
|
516
|
-
else
|
517
|
-
@businesses = @businesses.joins("
|
518
|
-
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
519
|
-
").where("educode_sales_follow_ups.clazz_id in (?)",ids).where("educode_sales_follow_ups.year = ?",@year)
|
520
|
-
end
|
521
|
-
|
522
|
-
end
|
523
|
-
|
524
|
-
if params[:name].present? && params[:name] == "(销售态势-" + @year + "-已中标商机)"
|
525
|
-
stage_ids = Common.where(clazz: '商机阶段', name: ['已中标','已签单','已验收','回款中', '服务中','已结束']).pluck(:id)
|
526
|
-
if @year == '全部'
|
527
|
-
@businesses = @businesses.joins("
|
528
|
-
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
529
|
-
").where("educode_sales_follow_ups.stage_id IN (?)",stage_ids)
|
530
|
-
else
|
531
|
-
@businesses = @businesses.joins("
|
495
|
+
if params[:signed_date].present?
|
496
|
+
date = params[:signed_date].split(" - ")
|
497
|
+
@businesses = @businesses.joins("
|
532
498
|
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
533
|
-
").where("educode_sales_follow_ups.
|
534
|
-
end
|
535
|
-
|
499
|
+
").where("educode_sales_follow_ups.signed_date >= ? AND educode_sales_follow_ups.signed_date <= ?", date[0], date[1])
|
536
500
|
end
|
537
501
|
|
538
|
-
if params[:
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
543
|
-
").where("educode_sales_follow_ups.stage_id IN (?)",stage_ids)
|
544
|
-
else
|
545
|
-
@businesses = @businesses.joins("
|
546
|
-
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
547
|
-
").where("educode_sales_follow_ups.bidded_date <= ? AND educode_sales_follow_ups.stage_id IN (?)", "#{@year}-12-31", stage_ids)
|
548
|
-
end
|
549
|
-
|
502
|
+
if params[:date_at].present?
|
503
|
+
date = params[:date_at].split(" - ")
|
504
|
+
x_id = Common.find_by(extras: EducodeSales::Common::XTYPE)&.id
|
505
|
+
@businesses = @businesses.joins(follow_ups: :money_plans).where("educode_sales_follow_ups.clazz_id != ?", x_id).where.not("educode_sales_money_plans.clazz!= 1").where("educode_sales_money_plans.date_at >= ? AND educode_sales_money_plans.date_at <= ? ", date[0] + " 00:00:00", date[1] + " 23:59:59").distinct
|
550
506
|
end
|
551
507
|
|
552
|
-
if params[:
|
553
|
-
|
554
|
-
|
555
|
-
@businesses = @businesses.joins("
|
556
|
-
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
557
|
-
").where("educode_sales_follow_ups.stage_id IN (?)",s_stage_ids)
|
558
|
-
else
|
559
|
-
@businesses = @businesses.joins("
|
508
|
+
if params[:bidded_date].present?
|
509
|
+
date = params[:bidded_date].split(" - ")
|
510
|
+
@businesses = @businesses.joins("
|
560
511
|
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
561
|
-
").where("educode_sales_follow_ups.
|
562
|
-
end
|
512
|
+
").where("educode_sales_follow_ups.bidded_date >= ? AND educode_sales_follow_ups.bidded_date <= ?", date[0], date[1])
|
563
513
|
end
|
564
514
|
|
565
|
-
if params[:
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
if @year == '全部'
|
570
|
-
@businesses = @businesses.joins(follow_ups: :money_plans).where("educode_sales_follow_ups.clazz_id != ?", x_id).where.not("educode_sales_money_plans.clazz!= ?", 1).distinct
|
571
|
-
else
|
572
|
-
@businesses = @businesses.joins(follow_ups: :money_plans).where("educode_sales_follow_ups.clazz_id != ?", x_id).where.not("educode_sales_money_plans.clazz!= ?", 1).where("educode_sales_money_plans.date_at >= ? AND educode_sales_money_plans.date_at <= ? ", year_time, year_over_time).distinct
|
573
|
-
end
|
515
|
+
if params[:business_year].present?
|
516
|
+
@businesses = @businesses.joins("
|
517
|
+
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
518
|
+
").where("educode_sales_follow_ups.year = ?", params[:business_year])
|
574
519
|
end
|
575
520
|
|
576
521
|
if params[:all].present?
|
@@ -589,7 +534,7 @@ module EducodeSales
|
|
589
534
|
end
|
590
535
|
|
591
536
|
@businesses = @businesses
|
592
|
-
if params[:name].present? && params[:name] != "(销售态势-" + @year + "-已中标商机)" && params[:name] != "(销售态势-" + @year + "-已签单商机)" && params[:name] != "(销售态势-" + @year + "-已回款商机)" && params[:name] != "(销售态势-" + @year + "-现有商机)"&& params[:name] != "(销售态势-" + @year + "-应收款商机)"
|
537
|
+
if params[:name].present? # && params[:name] != "(销售态势-" + @year + "-已中标商机)" && params[:name] != "(销售态势-" + @year + "-已签单商机)" && params[:name] != "(销售态势-" + @year + "-已回款商机)" && params[:name] != "(销售态势-" + @year + "-现有商机)"&& params[:name] != "(销售态势-" + @year + "-应收款商机)"
|
593
538
|
@businesses = @businesses.where("educode_sales_businesses.name like ?", "%#{params[:name]}%")
|
594
539
|
end
|
595
540
|
if params[:department].present?
|
@@ -57,7 +57,7 @@ module EducodeSales
|
|
57
57
|
# @former_return_amount = Business.joins(last_follow_up: :money_plans).where("educode_sales_follow_ups.clazz_id != ?", x).where.not("educode_sales_money_plans.clazz!= ?", 1).where("educode_sales_money_plans.date_at <= ? ", year_over_time).sum(:amount).round(2)
|
58
58
|
# @receivable_amount = @former_goal_amount - @former_return_amount
|
59
59
|
|
60
|
-
@receivable_amount = Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", x).where("educode_sales_follow_ups.bidded_date <= ? AND educode_sales_follow_ups.stage_id IN (?)", "#{@year}-12-31", stage_ids).select("(SUM(educode_sales_follow_ups.actual_amount) - SUM(educode_sales_businesses.return_money)) AS num")
|
60
|
+
@receivable_amount = Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", x).where("educode_sales_follow_ups.bidded_date >= ? AND educode_sales_follow_ups.bidded_date <= ? AND educode_sales_follow_ups.stage_id IN (?)", "#{@year}-01-01", "#{@year}-12-31", stage_ids).select("(SUM(educode_sales_follow_ups.actual_amount) - SUM(educode_sales_businesses.return_money)) AS num")
|
61
61
|
@receivable_amount = @receivable_amount.present? && @receivable_amount[0]['num'] ? @receivable_amount[0]['num'].round(2) : 0
|
62
62
|
|
63
63
|
a = Common.where(clazz: '商机类型', name: Common.find_by(extras: EducodeSales::Common::ATYPE)&.name).pluck(:id)
|
@@ -25,5 +25,22 @@ module EducodeSales
|
|
25
25
|
self.follow_ups.update_all(deleted_at: Time.now)
|
26
26
|
EducodeSales::Recycle.create(source: self, deleter_id: user_id)
|
27
27
|
end
|
28
|
+
|
29
|
+
|
30
|
+
def self.include_types(type)
|
31
|
+
{
|
32
|
+
'1' => %w[a_class b_class c_class d_class e_class o_class],
|
33
|
+
'a' => ['a_class'],
|
34
|
+
'b' => ['b_class'],
|
35
|
+
}[type]
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.include_steps(type)
|
39
|
+
{
|
40
|
+
'已中标' => ['已中标','已签单','已验收','回款中', '服务中','已结束'],
|
41
|
+
'已签单' => ['已签单','已验收','回款中', '服务中','已结束'],
|
42
|
+
'应收款' => ['已中标','已签单','已验收','回款中', '服务中','已结束']
|
43
|
+
}[type]
|
44
|
+
end
|
28
45
|
end
|
29
46
|
end
|
@@ -195,15 +195,15 @@
|
|
195
195
|
},
|
196
196
|
where: {q: search, sort: sort}
|
197
197
|
}, 'data');
|
198
|
-
table.reload('businesses_table', {
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
}, 'data');
|
204
|
-
form.val('search_form', {
|
205
|
-
|
206
|
-
})
|
198
|
+
// table.reload('businesses_table', {
|
199
|
+
// page: {
|
200
|
+
// curr: 1
|
201
|
+
// },
|
202
|
+
// where: {q: search, sort: sort}
|
203
|
+
// }, 'data');
|
204
|
+
// form.val('search_form', {
|
205
|
+
// name: data.field.name, department: data.field.department, staff_id: data.field.staff_id, area: data.field.area , description: data.field.description
|
206
|
+
// })
|
207
207
|
return false;
|
208
208
|
});
|
209
209
|
|
@@ -19,8 +19,8 @@
|
|
19
19
|
<% text += "二、本月已组织会议 \n\n"%>
|
20
20
|
<% text += "三、客户跟进情况 \n"%>
|
21
21
|
<% @followups.each_with_index do |d, i| %>
|
22
|
-
<% text += "#{i+1}
|
23
|
-
<p><%= i+1
|
22
|
+
<% text += "#{i+1}、#{d.business&.department&.school&.name}--**商机:#{d.description}\n" %>
|
23
|
+
<p><%= i+1 %>、<%= d.business&.department&.school&.name %>--**商机:<%= d.description%></p>
|
24
24
|
<% end %>
|
25
25
|
|
26
26
|
<% text += "\n四、需要协助支持事宜 \n\n"%>
|
@@ -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="name" class="layui-input" value="
|
20
|
+
<input type="text" name="name" class="layui-input" value="">
|
21
21
|
<input type="text" style="display: none" name="place_id" class="layui-input" value="<%=params[:place_id] %>">
|
22
22
|
</div>
|
23
23
|
</div>
|
@@ -33,52 +33,75 @@
|
|
33
33
|
<%= select_tag "staff_id", options_for_select(@staffs, params[:staff_id]), { 'lay-filter': 'staff_id', include_blank: true } %>
|
34
34
|
</div>
|
35
35
|
</div>
|
36
|
-
<div class="layui-inline show_item" style="display:none;">
|
36
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
37
37
|
<label class="layui-form-label">项目类型</label>
|
38
38
|
<div class="layui-input-inline">
|
39
39
|
<div id="business_type" style="width: 190px;"></div>
|
40
40
|
</div>
|
41
41
|
</div>
|
42
|
-
<div class="layui-inline show_item" style="display:none;">
|
42
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
43
43
|
<label class="layui-form-label">项目阶段</label>
|
44
44
|
<div class="layui-input-inline">
|
45
45
|
<div id="business_step" style="width: 190px;"></div>
|
46
46
|
</div>
|
47
47
|
</div>
|
48
|
-
<div class="layui-inline show_item" style="display:none;">
|
48
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
49
49
|
<label class="layui-form-label">渠道名称</label>
|
50
50
|
<div class="layui-input-inline">
|
51
51
|
<div id="index_place" style="width: 190px;"></div>
|
52
52
|
</div>
|
53
53
|
</div>
|
54
|
-
<div class="layui-inline show_item" style="display:none;">
|
54
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
55
55
|
<label class="layui-form-label">区域</label>
|
56
56
|
<div class="layui-input-inline">
|
57
57
|
<%= select_tag "area", options_for_select(EducodeSales::Common.where(clazz: 'area').pluck(:name, :id)), { include_blank: true } %>
|
58
58
|
</div>
|
59
59
|
</div>
|
60
|
-
<div class="layui-inline show_item" style="display:none;">
|
60
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
61
61
|
<label class="layui-form-label">所属年度</label>
|
62
62
|
<div class="layui-input-inline">
|
63
63
|
<%= select_tag "business_year", options_for_select((2015..Time.now.year).to_a.reverse, params[:business_year]), { include_blank: true } %>
|
64
64
|
</div>
|
65
65
|
</div>
|
66
|
-
<div class="layui-inline show_item" style="display:none;">
|
67
|
-
<label class="layui-form-label"
|
66
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
67
|
+
<label class="layui-form-label">招标时间</label>
|
68
68
|
<div class="layui-input-inline">
|
69
|
-
<input type="text" class="layui-input" id="
|
69
|
+
<input type="text" class="layui-input" id="invitation_at" name="invitation_at" placeholder=" - " autocomplete="off">
|
70
70
|
</div>
|
71
71
|
</div>
|
72
|
-
<div class="layui-inline show_item" style="display:none;">
|
73
|
-
<label class="layui-form-label"
|
72
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
73
|
+
<label class="layui-form-label">中标时间</label>
|
74
74
|
<div class="layui-input-inline">
|
75
|
-
<input type="text" class="layui-input" id="
|
75
|
+
<input type="text" class="layui-input" id="bidded_date" name="bidded_date" placeholder=" - " autocomplete="off">
|
76
|
+
</div>
|
77
|
+
</div>
|
78
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
79
|
+
<label class="layui-form-label">签单时间</label>
|
80
|
+
<div class="layui-input-inline">
|
81
|
+
<input type="text" class="layui-input" id="signed_date" name="signed_date" placeholder=" - " autocomplete="off">
|
82
|
+
</div>
|
83
|
+
</div>
|
84
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
85
|
+
<label class="layui-form-label">回款时间</label>
|
86
|
+
<div class="layui-input-inline">
|
87
|
+
<input type="text" class="layui-input" id="date_at" name="date_at" placeholder=" - " autocomplete="off">
|
88
|
+
</div>
|
89
|
+
</div>
|
90
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
91
|
+
<label class="layui-form-label">创建时间</label>
|
92
|
+
<div class="layui-input-inline">
|
93
|
+
<input type="text" class="layui-input" id="date" name="date" placeholder=" - " autocomplete="off">
|
76
94
|
</div>
|
77
95
|
</div>
|
78
|
-
<div class="layui-inline show_item" style="display:none;">
|
79
|
-
<label class="layui-form-label"
|
96
|
+
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
97
|
+
<label class="layui-form-label">部署类型</label>
|
80
98
|
<div class="layui-input-inline">
|
81
|
-
<
|
99
|
+
<select name="o_business_deployment">
|
100
|
+
<option value=""></option>
|
101
|
+
<option value="1">公有云</option>
|
102
|
+
<option value="2">私有云</option>
|
103
|
+
<option value="3">混合云</option>
|
104
|
+
</select>
|
82
105
|
</div>
|
83
106
|
</div>
|
84
107
|
<div class="layui-inline">
|
@@ -182,14 +205,33 @@
|
|
182
205
|
laydate = layui.laydate;
|
183
206
|
var openWH = miniPage.getOpenWidthHeight();
|
184
207
|
laydate.render({
|
185
|
-
|
186
|
-
|
208
|
+
elem: '#date',
|
209
|
+
range: true
|
187
210
|
});
|
188
211
|
laydate.render({
|
189
|
-
|
190
|
-
|
212
|
+
elem: '#invitation_at',
|
213
|
+
range: true
|
191
214
|
});
|
192
215
|
|
216
|
+
laydate.render({
|
217
|
+
elem: '#bidded_date',
|
218
|
+
range: true,
|
219
|
+
value: gon.bidded_date
|
220
|
+
});
|
221
|
+
laydate.render({
|
222
|
+
elem: '#signed_date',
|
223
|
+
range: true,
|
224
|
+
value: gon.signed_date
|
225
|
+
});
|
226
|
+
|
227
|
+
laydate.render({
|
228
|
+
elem: '#date_at',
|
229
|
+
range: true,
|
230
|
+
value: gon.date_at
|
231
|
+
});
|
232
|
+
|
233
|
+
|
234
|
+
|
193
235
|
// $('#businesses_table_wraper .layui-table-body').on('scroll', function(e) {
|
194
236
|
// var leftPx = $(e.target).scrollLeft(); //获取表格body,滚动条距离左边的长度
|
195
237
|
// var left = 'translateX(-' + leftPx + 'px)';
|
@@ -197,7 +239,7 @@
|
|
197
239
|
// });
|
198
240
|
|
199
241
|
var is_show =
|
200
|
-
<%=params[:name].present? || params[:
|
242
|
+
<%=params[:name].present? || params[:type].present? || params[:place_id].present? || params[:school].present? %>
|
201
243
|
if (is_show) {
|
202
244
|
$('.follows_li').removeClass('layui-this');
|
203
245
|
$('.follows_div').removeClass('layui-show');
|
@@ -209,7 +251,7 @@
|
|
209
251
|
el: '#business_type',
|
210
252
|
data: gon.business_type
|
211
253
|
})
|
212
|
-
|
254
|
+
|
213
255
|
var business_step_list = xmSelect.render({
|
214
256
|
el: '#business_step',
|
215
257
|
data: gon.business_step
|
@@ -261,8 +303,9 @@
|
|
261
303
|
|
262
304
|
|
263
305
|
var data = form.val("search_form");
|
264
|
-
data.
|
265
|
-
|
306
|
+
data.business_year = gon.business_year;
|
307
|
+
data.business_type = business_type_list.getValue('valueStr')
|
308
|
+
data.business_step = business_step_list.getValue('valueStr');
|
266
309
|
|
267
310
|
table = layui.table;
|
268
311
|
var cols_table = [
|
@@ -508,6 +551,7 @@
|
|
508
551
|
var business_table = table.render({
|
509
552
|
elem: '#businesses_table',
|
510
553
|
url: '/missions/businesses',
|
554
|
+
autoSort: false,
|
511
555
|
where: {q: data},
|
512
556
|
toolbar: '#bussinessBar',
|
513
557
|
defaultToolbar: ['filter'],
|
@@ -653,6 +697,10 @@
|
|
653
697
|
place_id: data.place_id,
|
654
698
|
select: data.select,
|
655
699
|
staff_id: data.staff_id,
|
700
|
+
signed_date: data.signed_date,
|
701
|
+
date_at: data.date_at,
|
702
|
+
bidded_date: data.bidded_date,
|
703
|
+
business_year: data.business_year,
|
656
704
|
mine: search['clazz'] == 'me' ? true : '',
|
657
705
|
is_follow: search['clazz'] == 'followes' ? true : '',
|
658
706
|
}, function (res) {
|
@@ -821,11 +869,10 @@
|
|
821
869
|
|
822
870
|
|
823
871
|
|
824
|
-
var sort = {}, search =
|
825
|
-
|
826
|
-
search.name = "<%= params[:name] %>";
|
827
|
-
<% end %>
|
872
|
+
var sort = {}, search = data;
|
873
|
+
|
828
874
|
table.on('sort(businesses_table)', function (obj) {
|
875
|
+
var data = form.val("search_form");
|
829
876
|
sort.field = obj.field;
|
830
877
|
sort.order = obj.type;
|
831
878
|
table.reload('businesses_table', {
|
@@ -862,15 +909,15 @@
|
|
862
909
|
},
|
863
910
|
where: {q: search, sort: sort}
|
864
911
|
}, 'data');
|
865
|
-
table.reload('teachers_table', {
|
866
|
-
|
867
|
-
|
868
|
-
|
869
|
-
|
870
|
-
}, 'data');
|
871
|
-
form.val('search_follows', {
|
872
|
-
|
873
|
-
})
|
912
|
+
// table.reload('teachers_table', {
|
913
|
+
// page: {
|
914
|
+
// curr: 1
|
915
|
+
// },
|
916
|
+
// where: {q: search, sort: sort}
|
917
|
+
// }, 'data');
|
918
|
+
// form.val('search_follows', {
|
919
|
+
// name: data.field.name, department: data.field.department, staff_id: data.field.staff_id, area: data.field.area
|
920
|
+
// })
|
874
921
|
if (search['clazz'] == 'me') {
|
875
922
|
$(".my-btn").addClass("selected-btn");
|
876
923
|
} else if (search['clazz'] == 'followes') {
|
@@ -19,13 +19,9 @@ json.data do
|
|
19
19
|
json.reception_at d.last_follow_up&.reception_at.to_s
|
20
20
|
json.bidded_date d.last_follow_up&.bidded_date.to_s
|
21
21
|
json.signed_date d.last_follow_up&.signed_date.to_s
|
22
|
+
json.o_business_deployment EducodeSales::FollowUp::BUSINESS_DEPLOYMENT[1..-1].to_h.invert[d.last_follow_up&.o_business_deployment]
|
22
23
|
json.service_end_time d.last_follow_up&.service_start_time.to_s + "-" + d.last_follow_up&.service_end_time.to_s
|
23
|
-
|
24
|
-
if d.last_follow_up&.o_business_deployment == m[1]
|
25
|
-
json.o_business_deployment m[0]
|
26
|
-
break
|
27
|
-
end
|
28
|
-
end
|
24
|
+
|
29
25
|
json.divide_rate d.divide_rate
|
30
26
|
json.divide_money d.divide_amount
|
31
27
|
json.budget_amount d.budget_amount #d.follow_ups.where(stage_id: @budget_stage_ids).order("created_at desc").first&.total_amount&.round(2) || 0
|
@@ -25,15 +25,20 @@
|
|
25
25
|
</form>
|
26
26
|
</div>
|
27
27
|
<canvas id="myChart" width="960" height="400"></canvas>
|
28
|
+
<div class="two-header" style="margin-top: 30px;">
|
29
|
+
<table id="followup_table" lay-filter="followup_table"></table>
|
30
|
+
</div>
|
28
31
|
</div>
|
29
32
|
</div>
|
30
33
|
<script>
|
31
|
-
layui.use(['form', 'jquery', 'request', 'element'], function () {
|
32
|
-
|
34
|
+
layui.use(['form', 'jquery', 'request', 'element', 'table'], function () {
|
35
|
+
var table = layui.table,
|
36
|
+
form = layui.form;
|
37
|
+
chart_data = <%=raw @follow_count_data.to_json %>;
|
33
38
|
var ctx = document.getElementById('myChart');
|
34
39
|
myChart = new Chart(ctx, {
|
35
40
|
type: 'line',
|
36
|
-
data:
|
41
|
+
data: chart_data,
|
37
42
|
options: {
|
38
43
|
elements: {
|
39
44
|
line: {
|
@@ -42,12 +47,46 @@
|
|
42
47
|
}
|
43
48
|
}
|
44
49
|
});
|
50
|
+
|
51
|
+
|
45
52
|
form.render();
|
53
|
+
|
54
|
+
function renderTable(chart_data) {
|
55
|
+
var labels = [];
|
56
|
+
fields = [
|
57
|
+
{field: 'col0', title: '姓名', width:100}
|
58
|
+
];
|
59
|
+
chart_data.labels.forEach(function(d, i) {
|
60
|
+
labels.push(d);
|
61
|
+
fields.push({title: d.split("(").join("<br/>").replace(")", ""), field: 'col' + (i + 1), width:160, align: 'center'})
|
62
|
+
})
|
63
|
+
var table_data = [];
|
64
|
+
chart_data.datasets.forEach(function(d, i) {
|
65
|
+
var value = {}
|
66
|
+
value['col0'] = d.label;
|
67
|
+
d.data.forEach(function(v, i1) {
|
68
|
+
value['col' + (i1 + 1)] = v;
|
69
|
+
})
|
70
|
+
table_data.push(value);
|
71
|
+
})
|
72
|
+
table.render({
|
73
|
+
elem: '#followup_table',
|
74
|
+
height: 312,
|
75
|
+
url: '',
|
76
|
+
limit: 30,
|
77
|
+
page: true,
|
78
|
+
data: table_data,
|
79
|
+
cols: [fields]
|
80
|
+
});
|
81
|
+
}
|
82
|
+
|
83
|
+
renderTable(chart_data);
|
46
84
|
laydate.render({
|
47
85
|
elem: '#date',
|
48
86
|
range: true
|
49
87
|
});
|
50
88
|
|
89
|
+
|
51
90
|
laydate.render({
|
52
91
|
elem: '#date_week',
|
53
92
|
range: true
|
@@ -101,7 +140,8 @@
|
|
101
140
|
} else {
|
102
141
|
myChart.data.datasets = res.data.datasets;
|
103
142
|
myChart.data.labels = res.data.labels;
|
104
|
-
myChart.update()
|
143
|
+
myChart.update();
|
144
|
+
renderTable(res.data);
|
105
145
|
}
|
106
146
|
}
|
107
147
|
});
|
@@ -98,7 +98,7 @@
|
|
98
98
|
<div class="panel layui-bg-number">
|
99
99
|
<div class="panel-body">
|
100
100
|
<div class="panel-title">
|
101
|
-
<h5>现有商机<a href="/missions/businesses?name=(销售态势-<%=@year %>-现有商机)" style="color: #0000FF;float: right">查看商机</a></h5>
|
101
|
+
<h5>现有商机<a href="/missions/businesses?name=(销售态势-<%=@year %>-现有商机)&type=1&business_year=<%= @year %>" style="color: #0000FF;float: right">查看商机</a></h5>
|
102
102
|
</div>
|
103
103
|
<div class="panel-content y-t-10">
|
104
104
|
<h1 class="no-margins"><%= @business_amount.round(2) %>万</h1>
|
@@ -111,7 +111,7 @@
|
|
111
111
|
<div class="panel layui-bg-number">
|
112
112
|
<div class="panel-body">
|
113
113
|
<div class="panel-title">
|
114
|
-
<h5>已中标(总额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已中标商机)" style="color: #0000FF;float: right">查看商机</a></h5>
|
114
|
+
<h5>已中标(总额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已中标商机)&step=已中标&bidded_date_year=<%= @year %>" style="color: #0000FF;float: right">查看商机</a></h5>
|
115
115
|
</div>
|
116
116
|
<div class="panel-content y-t-10">
|
117
117
|
<h1 class="no-margins"><%= @goal_amount %>万</h1>
|
@@ -124,7 +124,7 @@
|
|
124
124
|
<div class="panel layui-bg-number">
|
125
125
|
<div class="panel-body">
|
126
126
|
<div class="panel-title">
|
127
|
-
<h5>已签单(总额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已签单商机)" style="color: #0000FF;float: right">查看商机</a></h5>
|
127
|
+
<h5>已签单(总额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已签单商机)&step=已签单&signed_date_year=<%= @year %>" style="color: #0000FF;float: right">查看商机</a></h5>
|
128
128
|
</div>
|
129
129
|
<div class="panel-content y-t-10">
|
130
130
|
<h1 class="no-margins"><%= @service_amount %>万</h1>
|
@@ -137,7 +137,7 @@
|
|
137
137
|
<div class="panel layui-bg-number">
|
138
138
|
<div class="panel-body">
|
139
139
|
<div class="panel-title">
|
140
|
-
<h5>已回款<a href="/missions/businesses?name=(销售态势-<%=@year %>-已回款商机)" style="color: #0000FF;float: right">查看商机</a></h5>
|
140
|
+
<h5>已回款<a href="/missions/businesses?name=(销售态势-<%=@year %>-已回款商机)&date_at=<%= @year %>" style="color: #0000FF;float: right">查看商机</a></h5>
|
141
141
|
</div>
|
142
142
|
<div class="panel-content y-t-10">
|
143
143
|
<h1 class="no-margins"><%= @return_amount %>万</h1>
|
@@ -150,7 +150,7 @@
|
|
150
150
|
<div class="panel layui-bg-number">
|
151
151
|
<div class="panel-body">
|
152
152
|
<div class="panel-title">
|
153
|
-
<h5>A类商机<a href="/missions/businesses?
|
153
|
+
<h5>A类商机<a href="/missions/businesses?type=a&business_year=<%= @year %>" style="color: #0000FF;float: right">查看商机</a></h5>
|
154
154
|
</div>
|
155
155
|
<div class="panel-content y-t-10">
|
156
156
|
<h1 class="no-margins"><%= @a_amount %>万</h1>
|
@@ -162,7 +162,7 @@
|
|
162
162
|
<div class="panel layui-bg-number">
|
163
163
|
<div class="panel-body">
|
164
164
|
<div class="panel-title">
|
165
|
-
<h5>已中标(合同额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已中标商机)" style="color: #0000FF;float: right">查看商机</a></h5>
|
165
|
+
<h5>已中标(合同额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已中标商机)&step=已中标&bidded_date_year=<%= @year %>" style="color: #0000FF;float: right">查看商机</a></h5>
|
166
166
|
</div>
|
167
167
|
<div class="panel-content y-t-10">
|
168
168
|
<h1 class="no-margins"><%= @actual_goal_amount %>万</h1>
|
@@ -175,7 +175,7 @@
|
|
175
175
|
<div class="panel layui-bg-number">
|
176
176
|
<div class="panel-body">
|
177
177
|
<div class="panel-title">
|
178
|
-
<h5>已签单(合同额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已签单商机)" style="color: #0000FF;float: right">查看商机</a></h5>
|
178
|
+
<h5>已签单(合同额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已签单商机)&step=已签单&signed_date_year=<%= @year %>" style="color: #0000FF;float: right">查看商机</a></h5>
|
179
179
|
</div>
|
180
180
|
<div class="panel-content y-t-10">
|
181
181
|
<h1 class="no-margins"><%= @actual_service_amount %>万</h1>
|
@@ -188,7 +188,7 @@
|
|
188
188
|
<div class="panel layui-bg-number">
|
189
189
|
<div class="panel-body">
|
190
190
|
<div class="panel-title">
|
191
|
-
<h5>应收款<a href="/missions/businesses?name=(销售态势-<%=@year %>-应收款商机)" style="color: #0000FF;float: right">查看商机</a></h5>
|
191
|
+
<h5>应收款<a href="/missions/businesses?name=(销售态势-<%=@year %>-应收款商机)&step=应收款&bidded_date_year=<%= @year %>" style="color: #0000FF;float: right">查看商机</a></h5>
|
192
192
|
</div>
|
193
193
|
<div class="panel-content y-t-10">
|
194
194
|
<h1 class="no-margins"><%= @receivable_amount.round(2) %>万</h1>
|
@@ -201,7 +201,7 @@
|
|
201
201
|
<div class="panel layui-bg-number">
|
202
202
|
<div class="panel-body">
|
203
203
|
<div class="panel-title">
|
204
|
-
<h5>B类商机<a href="/missions/businesses?
|
204
|
+
<h5>B类商机<a href="/missions/businesses?type=b&business_year=<%= @year %>" style="color: #0000FF;float: right">查看商机</a></h5>
|
205
205
|
</div>
|
206
206
|
<div class="panel-content y-t-10">
|
207
207
|
<h1 class="no-margins"><%= @b_amount %>万</h1>
|
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.25
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- anke1460
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-12-
|
11
|
+
date: 2022-12-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -105,7 +105,6 @@ files:
|
|
105
105
|
- app/assets/images/educode_sales/icon-login.png
|
106
106
|
- app/assets/images/educode_sales/icon.png
|
107
107
|
- app/assets/images/educode_sales/indexLogo.png
|
108
|
-
- app/assets/images/educode_sales/indexlogo.png
|
109
108
|
- app/assets/images/educode_sales/loading-0.gif
|
110
109
|
- app/assets/images/educode_sales/loading-1.gif
|
111
110
|
- app/assets/images/educode_sales/loading-2.gif
|
@@ -489,7 +488,7 @@ homepage: https://www.educoder.net
|
|
489
488
|
licenses:
|
490
489
|
- MIT
|
491
490
|
metadata: {}
|
492
|
-
post_install_message:
|
491
|
+
post_install_message:
|
493
492
|
rdoc_options: []
|
494
493
|
require_paths:
|
495
494
|
- lib
|
@@ -504,8 +503,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
504
503
|
- !ruby/object:Gem::Version
|
505
504
|
version: '0'
|
506
505
|
requirements: []
|
507
|
-
rubygems_version: 3.0.
|
508
|
-
signing_key:
|
506
|
+
rubygems_version: 3.0.0
|
507
|
+
signing_key:
|
509
508
|
specification_version: 4
|
510
509
|
summary: Summary of EducodeSales.
|
511
510
|
test_files: []
|
Binary file
|