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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c58fda9ebef8022559880649de7e90de9c0b5537ccab09a2bdf1900bea0373a1
4
- data.tar.gz: cea666fa1f5c0939b3ad387cf023faf9a27169495d607ce32918208c0562f326
3
+ metadata.gz: 7326e12d52dc97f7f251f63b033f3c470591be1100f6f9bd06ab057e9a21bd14
4
+ data.tar.gz: 80817718f3efdcb1a247095f468123ad1111d996dffe3f858cd6b29aab0f52ad
5
5
  SHA512:
6
- metadata.gz: '0905e5bc74bb514316f7e053e54768ae633f42591929d627033acab86bdc180ad7c660b1df276104be4f99fda43d9d21f37c58170b973a22e65e9285077e681a'
7
- data.tar.gz: 489498f262416a5a5ce3eed6327796116d705299eac68a08600d0ab6b2a3bfcfbe708214a921c3aa7cc6f1cf383ea11f7d69df774d7a3581d4ce6db97150f43b
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].present? && params[:q][:name].present? && params[:q][:name] == "(销售态势-" + @year + "-已签单商机)"
115
- s_stage_ids = Common.where(clazz: '商机阶段', name: ['已签单','已验收','回款中', '服务中','已结束']).pluck(:id)
116
- if @year == '全部'
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 > ? AND educode_sales_follow_ups.signed_date < ? AND educode_sales_follow_ups.stage_id IN (?)", "#{@year}-01-01", "#{@year}-12-31", s_stage_ids)
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].present? && params[:q][:name].present? && params[:q][:name] == "(销售态势-" + @year + "-已回款商机)"
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
- year_time = "#{@year}-01-01 00:00:00"
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
- if params[:q].present? && params[:q][:name].present? && params[:q][:name] == "(销售态势-" + @year + "-应收款商机)"
140
- stage_ids = Common.where(clazz: '商机阶段', name: ['已中标','已签单','已验收','回款中', '服务中','已结束']).pluck(:id)
141
- if @year == '全部'
142
- @businesses = @businesses.joins("
143
- JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
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? && params[:q][:name] != "(销售态势-" + @year + "-已中标商机)" && params[:q][:name] != "(销售态势-" + @year + "-已签单商机)" && params[:q][:name] != "(销售态势-" + @year + "-已回款商机)" && params[:q][:name] != "(销售态势-" + @year + "-现有商机)" && params[:q][:name] != "(销售态势-" + @year + "-应收款商机)"
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[:name].present?
507
- @year = params[:name].split("-")[1].present? ? params[:name].split("-")[1] : ''
508
- end
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.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)
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[:name].present? && params[:name] == "(销售态势-" + @year + "-应收款商机)"
539
- stage_ids = Common.where(clazz: '商机阶段', name: ['已中标','已签单','已验收','回款中', '服务中','已结束']).pluck(:id)
540
- if @year == '全部'
541
- @businesses = @businesses.joins("
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[:name].present? && params[:name] == "(销售态势-" + @year + "-已签单商机)"
553
- s_stage_ids = Common.where(clazz: '商机阶段', name: ['已签单','已验收','回款中', '服务中','已结束']).pluck(:id)
554
- if @year == '全部'
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.signed_date > ? AND educode_sales_follow_ups.signed_date < ? AND educode_sales_follow_ups.stage_id IN (?)", "#{@year}-01-01", "#{@year}-12-31", s_stage_ids)
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[:name].present? && params[:name] == "(销售态势-" + @year + "-已回款商机)"
566
- x_id = Common.find_by(extras: EducodeSales::Common::XTYPE)&.id
567
- year_time = "#{@year}-01-01 00:00:00"
568
- year_over_time = "#{@year}-12-31 23:59:59"
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
- 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
- })
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}、**学校--**商机:#{d .description}\n" %>
23
- <p><%= i+1 %>、**学校--**商机:<%= d .description%></p>
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="<%=params[:name] %>">
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">创建时间</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="date" name="date" placeholder=" - " autocomplete="off">
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">招标时间</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="invitation_at" name="invitation_at" placeholder=" - " autocomplete="off">
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">编号</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
- <input type="text" class="layui-input" id="number" name="number" placeholder=" - " autocomplete="off">
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
- elem: '#date',
186
- range: true
208
+ elem: '#date',
209
+ range: true
187
210
  });
188
211
  laydate.render({
189
- elem: '#invitation_at',
190
- range: true
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[:clazz_id].present? || params[:place_id].present? || params[:school].present? %>
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
- business_type_list.setValue(gon.type)
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.business_type = "<%=params[:clazz_id] %>";
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
- <% if params[:name].present? %>
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
- page: {
867
- curr: 1
868
- },
869
- where: {q: search, sort: sort}
870
- }, 'data');
871
- form.val('search_follows', {
872
- name: data.field.name, department: data.field.department, staff_id: data.field.staff_id, area: data.field.area
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
- EducodeSales::FollowUp::BUSINESS_DEPLOYMENT[1..-1].each do |m|
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
- form = layui.form;
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: <%=raw @follow_count_data.to_json %>,
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?clazz_id=<%=EducodeSales::Common.find_by(extras: EducodeSales::Common::ATYPE)&.id %>" style="color: #0000FF;float: right">查看商机</a></h5>
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?clazz_id=<%=EducodeSales::Common.find_by(extras: EducodeSales::Common::BTYPE)&.id %>" style="color: #0000FF;float: right">查看商机</a></h5>
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>
@@ -297,4 +297,7 @@
297
297
  .ul-down .layui-icon-down{
298
298
  display: none;!important;
299
299
  }
300
+ .two-header thead .layui-table-cell {
301
+ height: auto;
302
+ }
300
303
  </style>
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '0.9.23'
2
+ VERSION = '0.9.25'
3
3
  end
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.23
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-02 00:00:00.000000000 Z
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.9
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: []