educode_sales 1.10.37 → 1.10.41

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: b46b08f02fd4495dc7dcbe644409b09c38fd9936ce81c574d8747eadeb935dab
4
- data.tar.gz: 874c54125a516d0631812e60fb439418cf050550dfd40166777762d4e6b48221
3
+ metadata.gz: 75f1104743151bb685cb17c27471acf756a43103c059b78fdbbc85d897008420
4
+ data.tar.gz: 1abca2361e351da1e62f2a04e1a98c72e01f953ab653d6e6fc3904294532e38e
5
5
  SHA512:
6
- metadata.gz: 6e3f554a6a434861cc05e461b6a7c9b9af265917f2fce21cc947fcf51d206de976fe8d7abe7f2684eaa075cc8f045d601535885dd0b64dbf61db7d9ae1552a8a
7
- data.tar.gz: aa3c405230daa0c34902d42a4d6e3fabfeea3b7c6be4611a4535a5dbdcf57f1921e906da9397e7fc3c1d6e0ef60985ef3bc39e632c2f0f190ef703d93c54413e
6
+ metadata.gz: b93100ae277a43e93b44ed6ba56433123a8427d44b34ec3706b09e62987698d3672b81f8322bc6fc4af43f0e4ea0b2758b71e11368b87b33d7225ca28287b0a2
7
+ data.tar.gz: 1ddb1e12b4f3102d9ad751d04fc00975cd18c765fa378f454862a73e8f2927b8cc3810ad151ae06b9d1451a26bfb2604ec730822dc63a72da23449d9fe948b17
@@ -41,6 +41,19 @@ module EducodeSales
41
41
  end
42
42
  end
43
43
 
44
+ def paginate(relation)
45
+ limit = params[:limit] || params[:per_page]
46
+ limit = (limit.to_i.zero? || limit.to_i > 100) ? 20 : limit.to_i
47
+ page = params[:page].to_i.zero? ? 1 : params[:page].to_i
48
+ offset = (page - 1) * limit
49
+
50
+ if relation.is_a?(Array)
51
+ relation[offset, limit]
52
+ else
53
+ relation.limit(limit).offset(offset)
54
+ end
55
+ end
56
+
44
57
 
45
58
 
46
59
  rescue_from CanCan::AccessDenied do |exception|
@@ -206,8 +206,8 @@ module EducodeSales
206
206
  @businesses = @businesses.order("educode_sales_businesses.created_at desc")
207
207
  end
208
208
 
209
-
210
- @businesses = @businesses.select("
209
+ if params[:page].present?
210
+ @businesses = @businesses.select("
211
211
  distinct
212
212
  educode_sales_businesses.*,
213
213
  last_follow.invitation_at,
@@ -237,8 +237,38 @@ module EducodeSales
237
237
  GROUP BY educode_sales_follow_ups.business_id
238
238
  ) AS total_follow_ups ON educode_sales_businesses.id = total_follow_ups.business_id
239
239
  ").includes(:users, last_follow_up: [:clazz, :assign_follow_ups]).page(params[:page]).per(params[:limit])
240
+ end
240
241
 
241
-
242
+ @businesses = @businesses.select("
243
+ distinct
244
+ educode_sales_businesses.*,
245
+ last_follow.invitation_at,
246
+ last_follow.budget_amount,
247
+ last_follow.o_business_deployment,
248
+ last_follow.service_time_long,
249
+ last_follow.service_end_time,
250
+ last_follow.service_start_time,
251
+ last_follow.reception_at,
252
+ last_follow.bidded_date,
253
+ last_follow.signed_date,
254
+ last_follow.year,
255
+ last_follow.created_at as latest_time,
256
+ last_follow.actual_amount,
257
+ last_follow.divide_rate,
258
+ last_follow.divide_amount,
259
+ (last_follow.total_amount - last_follow.actual_amount) as divide_money,
260
+ (last_follow.actual_amount - educode_sales_businesses.return_money) as wait_return_money,
261
+ last_follow.total_amount,
262
+ total_follow_ups.follow_ups_counts
263
+ ").joins("
264
+ LEFT JOIN educode_sales_follow_ups AS last_follow ON educode_sales_businesses.last_follow_up_id = last_follow.id AND last_follow.deleted_at IS NULL
265
+ LEFT JOIN (
266
+ SELECT COUNT(*) AS follow_ups_counts, educode_sales_follow_ups.business_id
267
+ FROM educode_sales_follow_ups
268
+ WHERE educode_sales_follow_ups.deleted_at IS NULL
269
+ GROUP BY educode_sales_follow_ups.business_id
270
+ ) AS total_follow_ups ON educode_sales_businesses.id = total_follow_ups.business_id
271
+ ").includes(:users, last_follow_up: [:clazz, :assign_follow_ups])
242
272
  end
243
273
  end
244
274
  end
@@ -44,6 +44,9 @@ module EducodeSales
44
44
  @sale_staff_arr = EducodeSales::Staff.joins(:user).where(id: sale_staff_ids).pluck("concat(users.lastname,users.firstname)", :id)
45
45
  filter = Filter.find_or_create_by(staff_id: @current_admin.id, clazz: "ideas")
46
46
  gon.filter = filter.extras || {}
47
+
48
+ #协助人
49
+ @assist_staffs = Staff.where.not(role_id: 11).includes(:user).map{ |d| {name: d.user.real_name, value: d.id}}
47
50
  end
48
51
  format.json do
49
52
  @ideas = params[:is_deleted].to_s == "true" ? Idea.deleted : Idea.not_deleted
@@ -54,14 +57,14 @@ module EducodeSales
54
57
  level = @current_admin.role.role_areas.find_by(clazz: '方案管理').try(:level)
55
58
  case level
56
59
  when '自己'
57
- idea_ids = @ideas.select { |d| Array(d.other_staff_ids).include?(@current_admin.id) || d.sale_staff_id == @current_admin.id || Array(d.assist_staff_ids).include?(@current_admin.id) || d.staff_id == @current_admin.id }.map { |d| d.id }
60
+ idea_ids = @ideas.select { |d| Array(d.other_staff_ids).include?(@current_admin.id.to_s) || d.sale_staff_id == @current_admin.id || Array(d.assist_staff_ids).include?(@current_admin.id.to_s) || d.staff_id == @current_admin.id }.map { |d| d.id }
58
61
  @ideas = @ideas.where("educode_sales_ideas.creator_id = ? OR educode_sales_ideas.id in (?)", @current_admin.id, idea_ids)
59
62
  when '区域'
60
63
  # 查看区域商机,需要排除掉其它人员手上的监管学校
61
64
  other_staff_school_id = EducodeSales::StaffSchool.where.not(staff_id: @current_admin.id).where("school_id IN (SELECT school_id FROM educode_sales_staff_schools WHERE staff_id = #{@current_admin.id}) IS NOT TRUE").distinct.pluck :school_id
62
65
 
63
66
  school_ids = School.where(province: @current_admin.areas.pluck(:name)).pluck(:id) + StaffSchool.where(staff_id: @current_admin.id).pluck(:school_id) - other_staff_school_id
64
- idea_ids = @ideas.select { |d| Array(d.other_staff_ids).include?(@current_admin.id) || d.sale_staff_id == @current_admin.id || Array(d.assist_staff_ids).include?(@current_admin.id) || d.staff_id == @current_admin.id }.map { |d| d.id }
67
+ idea_ids = @ideas.select { |d| Array(d.other_staff_ids).include?(@current_admin.id.to_s) || d.sale_staff_id == @current_admin.id || Array(d.assist_staff_ids).include?(@current_admin.id.to_s) || d.staff_id == @current_admin.id }.map { |d| d.id }
65
68
  @ideas = @ideas.left_joins(department: :school).where("schools.id in (?) OR educode_sales_ideas.creator_id = ? OR educode_sales_ideas.id in (?)", school_ids, @current_admin.id, idea_ids)
66
69
  else
67
70
  @ideas = @ideas
@@ -74,7 +77,7 @@ module EducodeSales
74
77
  @ideas = @ideas.where("educode_sales_ideas.created_at >= ? AND educode_sales_ideas.created_at <= ?", date[0] + " 00:00:00", date[1] + " 23:59:59")
75
78
  end
76
79
  if params[:q].present? && params[:q][:name].present?
77
- @ideas = @ideas.where("educode_sales_ideas.name like ?", "%#{params[:q][:name]}%")
80
+ @ideas = @ideas.joins(:business).where("educode_sales_ideas.name like ? or educode_sales_businesses.name like ?", "%#{params[:q][:name]}%", "%#{params[:q][:name]}%")
78
81
  end
79
82
  if params[:q].present? && params[:q][:school].present?
80
83
  @ideas = @ideas.left_joins(:school).where("schools.name like ?", "%#{params[:q][:school]}%")
@@ -109,7 +112,12 @@ module EducodeSales
109
112
  @ideas = @ideas.where(level: params[:q][:level])
110
113
  end
111
114
 
112
- @ideas = @ideas.page(params[:page]).per(params[:limit])
115
+ if params[:q].present? && params[:q][:assist_staffs].present?
116
+ @ideas = @ideas.select{|d| d&.assist_staff_ids.include?(params[:q][:assist_staffs])}
117
+ end
118
+ @ideas_count = @ideas.count
119
+
120
+ @ideas = paginate @ideas
113
121
  end
114
122
  end
115
123
  end
@@ -141,10 +149,11 @@ module EducodeSales
141
149
  other_staff_ids = Array(params[:other_staff_ids].to_s.split(","))
142
150
  if params[:business_id].present?
143
151
  idea.business_id = params[:business_id]
152
+ idea.school_id = idea.business&.department&.school_id
144
153
  elsif params[:school_id].present?
145
154
  idea.name = params[:project_name]
146
155
  end
147
- if params[:school_id].present?
156
+ if idea.school_id.blank?
148
157
  idea.school_id = params[:school_id]
149
158
  end
150
159
  idea.attachment_ids = attachment_ids
@@ -180,10 +189,11 @@ module EducodeSales
180
189
  # @idea.other_staff_ids = other_staff_ids
181
190
  if params[:business_id].present?
182
191
  @idea.business_id = params[:business_id]
192
+ @idea.school_id = @idea.business&.department&.school_id
183
193
  elsif params[:school_id].present?
184
194
  @idea.name = params[:project_name]
185
195
  end
186
- if params[:school_id].present?
196
+ if @idea.school_id.blank?
187
197
  @idea.school_id = params[:school_id]
188
198
  end
189
199
  check_changes
@@ -357,7 +367,7 @@ module EducodeSales
357
367
  params.permit(:name, :level, :staff_id,
358
368
  :status, :types, :model, :hardware, :project,
359
369
  :money, :end_time, :content, :department_id,
360
- :manager_name, :manager_phone, :school_name, :department_name, :attachment_id, :idea_type)
370
+ :manager_name, :manager_phone, :school_name, :department_name, :attachment_id, :idea_type, :school_id, :business_id)
361
371
  end
362
372
 
363
373
  def find_idea
@@ -18,6 +18,7 @@ module EducodeSales
18
18
  format.json do
19
19
  @money_plan_records = MoneyPlanRecord.left_joins(:money_plan_claims).group("educode_sales_money_plan_records.id").select("educode_sales_money_plan_records.*, COUNT(educode_sales_money_plan_claims.id) AS claim_num")
20
20
  if @current_admin.is_admin?
21
+ @money_plan_records = @money_plan_records
21
22
  else
22
23
  level = @current_admin.role.role_areas.find_by(clazz: '回款管理').level
23
24
  case level
@@ -79,7 +80,11 @@ module EducodeSales
79
80
  else
80
81
  @money_plan_records = @money_plan_records.order(created_at: :desc)
81
82
  end
82
- @money_plan_records = @money_plan_records.page(params[:page]).per(params[:limit])
83
+
84
+ if params[:page].present?
85
+ @money_plan_records = @money_plan_records.page(params[:page]).per(params[:limit])
86
+ end
87
+ @money_plan_records = @money_plan_records
83
88
  end
84
89
  end
85
90
  end
@@ -195,12 +200,14 @@ module EducodeSales
195
200
  key_person.save
196
201
  end
197
202
 
198
- last_follow_up.money_plans.each do |d|
199
- money = d.dup
200
- money.staff = @current_admin
201
- money.follow_up_id = follow_up.id
202
- money.save
203
- end
203
+ # last_follow_up.money_plans.each do |d|
204
+ # money = d.dup
205
+ # money.staff = @current_admin
206
+ # money.follow_up_id = follow_up.id
207
+ # money.save
208
+ # end
209
+ # 上次的回款计划的跟进也要同步到最新的跟进id,不然回款计划列表会找不到
210
+ EducodeSales::MoneyPlan.where(business_id: d.id, id: params[:money_plan_ids]).update_all(follow_up_id: follow_up.id)
204
211
 
205
212
  # 合同里签到日期全同步到最新跟进
206
213
  last_follow_up.contract_date_lists.update_all(follow_up_id: follow_up.id)
@@ -59,7 +59,11 @@ module EducodeSales
59
59
  else
60
60
  @money_plans = @money_plans.order(date_at: :desc)
61
61
  end
62
- @money_plans = @money_plans.page(params[:page]).per(params[:limit])
62
+
63
+ if params[:page].present?
64
+ @money_plans = @money_plans.page(params[:page]).per(params[:limit])
65
+ end
66
+ @money_plans = @money_plans
63
67
  end
64
68
  end
65
69
  end
@@ -537,7 +537,7 @@ module EducodeSales
537
537
  data_1_hash = {}
538
538
  data_1_total_hash = {}
539
539
  data_1.each do |d|
540
- data_1_hash[d.month] = d.count_type.round(2)
540
+ data_1_hash[d.month] = d.count_type ? d.count_type.round(2) : 0
541
541
  end
542
542
 
543
543
  last_month = 0
@@ -577,10 +577,14 @@ module EducodeSales
577
577
  last_month = month.split("-")[0]
578
578
  end
579
579
 
580
- data_3 = business.joins(last_follow_up: :money_plans).
581
- where("educode_sales_follow_ups.clazz_id != ?", x).
582
- where.not("educode_sales_money_plans.clazz!= ?", 1).
583
- where("educode_sales_money_plans.date_at >= ? AND educode_sales_money_plans.date_at <= ?", begin_at, end_at).
580
+ data_3 = EducodeSales::MoneyPlanRecord.from("(
581
+ SELECT distinct(educode_sales_money_plan_records.id), educode_sales_money_plan_records.amount, date_at
582
+ FROM educode_sales_money_plan_records
583
+ JOIN educode_sales_money_plan_claims ON educode_sales_money_plan_claims.money_plan_record_id = educode_sales_money_plan_records.id
584
+ GROUP BY educode_sales_money_plan_records.id
585
+ ) AS educode_sales_money_plan_records
586
+ ").
587
+ where("educode_sales_money_plan_records.date_at >= ? AND educode_sales_money_plan_records.date_at <= ? ", begin_at, end_at).
584
588
  select("SUM(amount) AS count_type, DATE_FORMAT(date_at, '%Y-%m') AS month").
585
589
  group("DATE_FORMAT(date_at, '%Y-%m')").
586
590
  order("DATE_FORMAT(date_at, '%Y-%m')")
@@ -692,10 +696,14 @@ module EducodeSales
692
696
  last_month = month.split("-")[0]
693
697
  end
694
698
 
695
- data_3 = EducodeSales::Business.joins(last_follow_up: :money_plans).
696
- where("educode_sales_follow_ups.clazz_id != ?", x).
697
- where.not("educode_sales_money_plans.clazz!= ?", 1).
698
- where("educode_sales_money_plans.date_at >= ? AND educode_sales_money_plans.date_at <= ?", begin_at, end_at).
699
+ data_3 = EducodeSales::MoneyPlanRecord.from("(
700
+ SELECT distinct(educode_sales_money_plan_records.id), educode_sales_money_plan_records.amount, date_at
701
+ FROM educode_sales_money_plan_records
702
+ JOIN educode_sales_money_plan_claims ON educode_sales_money_plan_claims.money_plan_record_id = educode_sales_money_plan_records.id
703
+ GROUP BY educode_sales_money_plan_records.id
704
+ ) AS educode_sales_money_plan_records
705
+ ").
706
+ where("educode_sales_money_plan_records.date_at >= ? AND educode_sales_money_plan_records.date_at <= ? ", begin_at, end_at).
699
707
  select("SUM(amount) AS count_type, DATE_FORMAT(date_at, '%Y') AS year").
700
708
  group("DATE_FORMAT(date_at, '%Y')").
701
709
  order("DATE_FORMAT(date_at, '%Y')")
@@ -838,7 +838,7 @@
838
838
  data.year = "<%= params[:year] %>";
839
839
  <% end %>
840
840
  layer.load(0, {});
841
- request.authPost("/missions/businesses/get_export_data", {
841
+ request.authPost("missions/businesses/get_export_data", {
842
842
  name: data.name,
843
843
  area: data.area,
844
844
  business_step: data.business_step,
@@ -859,7 +859,7 @@
859
859
  data = res.data
860
860
  table.exportFile(business_table.config.id,data, type);
861
861
  layer.closeAll('loading');
862
- request.get('/missions/businesses/add_export_records?type=' + type, {}, function (res) {
862
+ request.get('missions/businesses/add_export_records?type=' + type, {}, function (res) {
863
863
  })
864
864
  })
865
865
 
@@ -137,6 +137,7 @@
137
137
  <script type="text/html" id="toolbar_contract">
138
138
  <div class="layui-btn-container">
139
139
  <span class="table-label">合同列表</span>
140
+ <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="export">导出</button>
140
141
  </div>
141
142
  </script>
142
143
  <script>
@@ -189,11 +190,13 @@
189
190
 
190
191
  var business_step_list = xmSelect.render({
191
192
  el: '#contract_business_step',
193
+ name: 'contract_business_step',
192
194
  data: gon.business_step
193
195
  })
194
196
 
195
197
  var index_place_list = xmSelect.render({
196
198
  el: '#contract_index_place',
199
+ name: 'contract_index_place',
197
200
  model: {
198
201
  icon: 'hidden',
199
202
  label: {
@@ -481,7 +484,7 @@
481
484
  $(".show_item_contract").toggle()
482
485
  return false;
483
486
  });
484
- var business_table = table.render({
487
+ var contract_table = table.render({
485
488
  elem: '#contact_table',
486
489
  url: '/missions/contracts',
487
490
  autoSort: false,
@@ -519,7 +522,7 @@
519
522
  if (search['clazz']) {
520
523
  data.field['clazz'] = search['clazz']
521
524
  }
522
- search = data.field
525
+ search = data.field;
523
526
  table.reload('contact_table', {
524
527
  url: '/missions/contracts',
525
528
  page: {
@@ -543,6 +546,27 @@
543
546
  return false;
544
547
  });
545
548
 
549
+ /**
550
+ * toolbar事件监听
551
+ */
552
+ table.on('toolbar(contact_table)', function (obj) {
553
+ if (obj.event === 'export') { //导出
554
+ layer.load(0, {});
555
+ var data = form.val("search_form");
556
+ var business_step = [];
557
+ business_step_list.getValue().forEach(function(d) {
558
+ business_step.push(d.value);
559
+ });
560
+ data.business_step = business_step.toString();
561
+ request.authGet("missions/contracts?" + $.param({q:data}), {
562
+ }, function (res) {
563
+ data = res.data;
564
+ table.exportFile(contract_table.config.id, data, 'xls');
565
+ layer.closeAll('loading');
566
+ })
567
+ }
568
+ });
569
+
546
570
  table.on('tool(contact_table)', function (obj) {
547
571
  var data = obj.data;
548
572
  id = data.id
@@ -70,5 +70,7 @@ json.totalRow do
70
70
  json.follow_ups_count follow_count.to_i.to_s
71
71
  end
72
72
  json.code 0
73
- json.count @businesses.total_count
73
+ if params[:page].present?
74
+ json.count @businesses.total_count
75
+ end
74
76
  json.msg 'succcess'
@@ -67,6 +67,12 @@
67
67
  <input type="text" class="layui-input" id="school" name="school" placeholder=" - " autocomplete="off">
68
68
  </div>
69
69
  </div>
70
+ <div class="layui-inline">
71
+ <label class="layui-form-label">协助人</label>
72
+ <div class="layui-input-inline">
73
+ <div id="assist_staffs"></div>
74
+ </div>
75
+ </div>
70
76
 
71
77
  <div class="layui-inline">
72
78
  <button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
@@ -156,6 +162,15 @@
156
162
  range: true
157
163
  });
158
164
 
165
+ //协助人选择
166
+ var assist_staffs_select = xmSelect.render({
167
+ el: '#assist_staffs',
168
+ name: 'assist_staffs',
169
+ data: <%=raw @assist_staffs.to_json %>,
170
+ filterable: true,
171
+ radio: true
172
+ });
173
+
159
174
  cols_table = [
160
175
  [
161
176
  {
@@ -342,7 +357,12 @@
342
357
 
343
358
  // 监听搜索操作
344
359
  form.on('submit(search_ideas)', function (data) {
345
- search = data.field
360
+ var assist_staffs_value = [];
361
+ assist_staffs_select.getValue().forEach(function (d) {
362
+ assist_staffs_value.push(d.value)
363
+ });
364
+ data.field.assist_staffs = assist_staffs_value.toString();
365
+ search = data.field;
346
366
  table.reload('ideas_table', {
347
367
  page: {
348
368
  curr: 1
@@ -365,7 +385,8 @@
365
385
  types: "",
366
386
  level: "",
367
387
  history_type: ""
368
- })
388
+ });
389
+ assist_staffs_select.setValue([]);
369
390
  return false;
370
391
  });
371
392
  // form.on('submit(show_hide)', function (data) {
@@ -21,4 +21,4 @@ json.data do
21
21
  end
22
22
  end
23
23
  json.code 0
24
- json.count @ideas.total_count
24
+ json.count @ideas_count
@@ -5,6 +5,12 @@
5
5
  <div class="layui-row">
6
6
  <h2 style="padding-left: 25px">方案信息</h2>
7
7
  </div>
8
+ <div class="layui-col-md6" style="display: none">
9
+ <labeL class="layui-form-label">部门:</labeL>
10
+ <div class="layui-input-block">
11
+ <div id="department_id" style="width: 600px;"></div>
12
+ </div>
13
+ </div>
8
14
  <div class="layui-row" style="padding-top: 15px">
9
15
  <div class="layui-col-md6">
10
16
  <labeL class="layui-form-label">单位联系人:</labeL>
@@ -419,11 +425,11 @@
419
425
  })
420
426
  data.field.school_id = schools[0];
421
427
 
422
- var departments = [];
423
- department_list.getValue().forEach(function (d) {
424
- departments.push(d.value);
425
- })
426
- data.field.department_id = departments[0];
428
+ // var departments = [];
429
+ // department_list.getValue().forEach(function (d) {
430
+ // departments.push(d.value);
431
+ // })
432
+ // data.field.department_id = departments[0];
427
433
  var business = [];
428
434
  business_list.getValue().forEach(function (d) {
429
435
  business.push(d.value);
@@ -434,7 +440,6 @@
434
440
  data.field.assist_staff_ids = assist_staff_list.getValue('valueStr');
435
441
  data.field.other_staff_ids = other_staff_list.getValue('valueStr');
436
442
  data.field.attachment_ids = attachment_list.getValue('valueStr');
437
- data.field.school_id = school_list.getValue('valueStr');
438
443
  request.authPost("missions/ideas/", data.field, function (res) {
439
444
  if (res.success == false) {
440
445
  layer.alert(res.msg)
@@ -60,6 +60,7 @@
60
60
  <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" id="upload_money_plan_btn" style="margin-left: 20px;">批量导入回款计划</button>
61
61
  <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" style="margin-left: 20px;"
62
62
  lay-event="add_record">添加回款记录</button>
63
+ <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="export">导出</button>
63
64
  <% end %>
64
65
  </script>
65
66
 
@@ -95,9 +96,10 @@
95
96
  range: true
96
97
  });
97
98
  form.render();
98
- table.render({
99
+ var money_plan_record_table = table.render({
99
100
  elem: '#money_plan_record_table',
100
101
  url: '/missions/money_plan_records',
102
+ title: '回款记录列表',
101
103
  toolbar: '#toolbar_money_plan_record',
102
104
  defaultToolbar: ['filter'],
103
105
  totalRow:true,
@@ -174,11 +176,13 @@
174
176
  });
175
177
 
176
178
  var staff_manages_list = xmSelect.render({
177
- el: '#staff_manages',
178
- data: gon.staffs,
179
- filterable: true,
180
- radio: true,
181
- })
179
+ el: '#staff_manages',
180
+ name: 'staff_manages',
181
+ data: gon.staffs,
182
+ filterable: true,
183
+ radio: true,
184
+ });
185
+
182
186
  var sort = {},
183
187
  search = {};
184
188
  table.on('sort(money_plan_record_table)', function(obj) {
@@ -243,8 +247,17 @@
243
247
  $(window).on("resize", function() {
244
248
  layer.full(sindex);
245
249
  });
250
+ }else if(obj.event === 'export'){
251
+ layer.load(0, {});
252
+ var data = form.val("submit_form_record");
253
+ data.staff_manages = staff_manages_list.getValue('valueStr');
254
+ request.authGet("missions/money_plan_records?"+ $.param({q: data}), {}, function (res) {
255
+ data = res.data;
256
+ table.exportFile(money_plan_record_table.config.id, data, 'xls');
257
+ layer.closeAll('loading');
258
+ })
246
259
  }
247
- })
260
+ });
248
261
  table.on('tool(money_plan_record_table)', function(obj) {
249
262
  var data = obj.data;
250
263
  id = data.id;
@@ -30,4 +30,6 @@ json.data do
30
30
  end
31
31
 
32
32
  json.code 0
33
- json.count @money_plan_records.total_count
33
+ if params[:page].present?
34
+ json.count @money_plan_records.total_count
35
+ end
@@ -1,50 +1,52 @@
1
1
  <%= Gon::Base.render_data %>
2
2
  <div style="margin: 10px 10px 10px 10px" id="money_plan_list">
3
- <form class="layui-form layui-form-pane" lay-filter="search_plans">
4
- <div class="layui-form-item">
5
- <div class="layui-inline">
6
- <label class="layui-form-label">商机名称</label>
7
- <div class="layui-input-inline">
8
- <input type="text" name="business" class="layui-input">
9
- </div>
10
- </div>
11
- <div class="layui-inline">
12
- <label class="layui-form-label">客户名称</label>
13
- <div class="layui-input-inline">
14
- <input type="text" name="school" class="layui-input">
15
- </div>
16
- </div>
17
- <div class="layui-inline">
18
- <label class="layui-form-label">销售经理</label>
19
- <div class="layui-input-inline">
20
- <div id="plan_staff_manages" style="width: 190px;"></div>
21
- </div>
22
- </div>
23
- <div class="layui-inline">
24
- <label class="layui-form-label">客户类型</label>
25
- <div class="layui-input-inline">
26
- <%= select_tag "property", options_for_select(SchoolTag.where(for_missions: true).pluck(:name, :id)), { include_blank: true } %>
27
- </div>
28
- </div>
29
- <div class="layui-inline">
30
- <label class="layui-form-label" style="width: 120px">计划回款时间</label>
31
- <div class="layui-input-inline">
32
- <input type="text" name="date_at" class="layui-input" id="date">
33
- </div>
34
- </div>
35
- <div class="layui-inline">
36
- <button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
3
+ <form class="layui-form layui-form-pane" lay-filter="search_plans">
4
+ <div class="layui-form-item">
5
+ <div class="layui-inline">
6
+ <label class="layui-form-label">销售经理</label>
7
+ <div class="layui-input-inline">
8
+ <div id="plan_staff_manages" style="width: 190px;"></div>
9
+ </div>
10
+ </div>
11
+ <div class="layui-inline">
12
+ <label class="layui-form-label">商机名称</label>
13
+ <div class="layui-input-inline">
14
+ <input type="text" name="business" class="layui-input">
15
+ </div>
16
+ </div>
17
+ <div class="layui-inline">
18
+ <label class="layui-form-label">客户名称</label>
19
+ <div class="layui-input-inline">
20
+ <input type="text" name="school" class="layui-input">
21
+ </div>
22
+ </div>
23
+ <div class="layui-inline">
24
+ <label class="layui-form-label">客户类型</label>
25
+ <div class="layui-input-inline">
26
+ <%= select_tag "property", options_for_select(SchoolTag.where(for_missions: true).pluck(:name, :id)), {include_blank: true} %>
27
+ </div>
28
+ </div>
29
+ <div class="layui-inline">
30
+ <label class="layui-form-label" style="width: 120px">计划回款时间</label>
31
+ <div class="layui-input-inline">
32
+ <input type="text" name="date_at" class="layui-input" id="date">
33
+ </div>
34
+ </div>
35
+ <div class="layui-inline">
36
+ <button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
37
37
  </button>
38
- <button type="submit" class="layui-btn layui-btn-primary" id="search_bt" lay-submit lay-filter="search_teachers">搜 索
38
+ <button type="submit" class="layui-btn layui-btn-primary" id="search_bt" lay-submit lay-filter="search_teachers">搜 索
39
39
  </button>
40
- </div>
41
- </div>
42
- </form>
40
+ </div>
41
+ </div>
42
+ </form>
43
43
  </div>
44
44
  <script type="text/html" id="toolbar_money_plan">
45
+ <span class="table-label">回款计划列表</span>
45
46
  <% if can? :create, EducodeSales::MoneyPlan %>
46
47
  <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" style="margin-left: 20px;" lay-event="addMoney">添加回款计划</button>
47
- <% end %>
48
+ <% end %>
49
+ <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="export">导出</button>
48
50
  </script>
49
51
 
50
52
  <table class="layui-hide" id="money_plan_table" lay-filter="money_plan_table"></table>
@@ -82,15 +84,18 @@
82
84
 
83
85
  var staff_manages_list = xmSelect.render({
84
86
  el: '#plan_staff_manages',
87
+ name: 'plan_staff_manages',
85
88
  data: gon.staffs,
86
89
  filterable: true,
87
90
  radio: true,
88
- })
89
- table.render({
91
+ });
92
+
93
+ var money_plan_table = table.render({
90
94
  elem: '#money_plan_table',
91
95
  url: '/missions/money_plans',
92
96
  toolbar: '#toolbar_money_plan',
93
97
  defaultToolbar: ['filter'],
98
+ title: '回款计划列表',
94
99
  initSort: {
95
100
  field: 'date_at',
96
101
  type: 'desc' //排序方式 asc: 升序、desc: 降序、null: 默认排序
@@ -245,8 +250,17 @@
245
250
  $(window).on("resize", function() {
246
251
  layer.full(sindex);
247
252
  });
253
+ }else if (obj.event === 'export') {
254
+ layer.load(0, {});
255
+ var data = form.val("search_plans");
256
+ data.staff_manages = staff_manages_list.getValue('valueStr');
257
+ request.authGet("missions/money_plans?type='export'"+ $.param({q: data}), {}, function (res) {
258
+ data = res.data;
259
+ table.exportFile(money_plan_table.config.id, data, 'xls');
260
+ layer.closeAll('loading');
261
+ })
248
262
  }
249
- })
263
+ });
250
264
 
251
265
  table.on('tool(money_plan_table)', function(obj) {
252
266
  var data = obj.data;
@@ -67,4 +67,6 @@ json.data do
67
67
  end
68
68
 
69
69
  json.code 0
70
- json.count @money_plans.total_count
70
+ if params[:page].present?
71
+ json.count @money_plans.total_count
72
+ end
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '1.10.37'
2
+ VERSION = '1.10.41'
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: 1.10.37
4
+ version: 1.10.41
5
5
  platform: ruby
6
6
  authors:
7
7
  - anke1460
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-20 00:00:00.000000000 Z
11
+ date: 2023-07-22 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
@@ -758,7 +757,7 @@ homepage: https://www.educoder.net
758
757
  licenses:
759
758
  - MIT
760
759
  metadata: {}
761
- post_install_message:
760
+ post_install_message:
762
761
  rdoc_options: []
763
762
  require_paths:
764
763
  - lib
@@ -774,7 +773,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
774
773
  version: '0'
775
774
  requirements: []
776
775
  rubygems_version: 3.0.9
777
- signing_key:
776
+ signing_key:
778
777
  specification_version: 4
779
778
  summary: Summary of EducodeSales.
780
779
  test_files: []