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 +4 -4
- data/app/controllers/educode_sales/application_controller.rb +13 -0
- data/app/controllers/educode_sales/contracts_controller.rb +33 -3
- data/app/controllers/educode_sales/ideas_controller.rb +17 -7
- data/app/controllers/educode_sales/money_plan_records_controller.rb +14 -7
- data/app/controllers/educode_sales/money_plans_controller.rb +5 -1
- data/app/controllers/educode_sales/sale_trends_controller.rb +17 -9
- data/app/views/educode_sales/businesses/index.html.erb +2 -2
- data/app/views/educode_sales/contracts/_list.html.erb +26 -2
- data/app/views/educode_sales/contracts/index.json.jbuilder +3 -1
- data/app/views/educode_sales/ideas/_index.html.erb +23 -2
- data/app/views/educode_sales/ideas/index.json.jbuilder +1 -1
- data/app/views/educode_sales/ideas/new.html.erb +11 -6
- data/app/views/educode_sales/money_plan_records/_index.html.erb +20 -7
- data/app/views/educode_sales/money_plan_records/index.json.jbuilder +3 -1
- data/app/views/educode_sales/money_plans/_index.html.erb +56 -42
- data/app/views/educode_sales/money_plans/index.json.jbuilder +3 -1
- data/lib/educode_sales/version.rb +1 -1
- metadata +5 -6
- data/app/assets/images/educode_sales/indexlogo.png +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75f1104743151bb685cb17c27471acf756a43103c059b78fdbbc85d897008420
|
4
|
+
data.tar.gz: 1abca2361e351da1e62f2a04e1a98c72e01f953ab653d6e6fc3904294532e38e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
-
|
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
|
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
|
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
|
-
|
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
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
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
|
-
|
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 =
|
581
|
-
|
582
|
-
|
583
|
-
|
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::
|
696
|
-
|
697
|
-
|
698
|
-
|
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("
|
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('
|
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
|
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
|
@@ -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
|
-
|
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) {
|
@@ -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
|
-
|
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
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
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;
|
@@ -1,50 +1,52 @@
|
|
1
1
|
<%= Gon::Base.render_data %>
|
2
2
|
<div style="margin: 10px 10px 10px 10px" id="money_plan_list">
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
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
|
-
|
38
|
+
<button type="submit" class="layui-btn layui-btn-primary" id="search_bt" lay-submit lay-filter="search_teachers">搜 索
|
39
39
|
</button>
|
40
|
-
|
41
|
-
|
42
|
-
|
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
|
-
|
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
|
-
|
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;
|
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.
|
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-
|
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: []
|
Binary file
|