educode_sales 1.10.37 → 1.10.41

Sign up to get free protection for your applications and to get access to all the features.
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: []