educode_sales 1.10.26 → 1.10.28
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/businesses_controller.rb +8 -1
- data/app/controllers/educode_sales/follow_ups_controller.rb +1 -1
- data/app/controllers/educode_sales/ideas_controller.rb +15 -0
- data/app/models/educode_sales/idea.rb +13 -1
- data/app/models/educode_sales/idea_follow.rb +7 -0
- data/app/views/educode_sales/businesses/index.html.erb +58 -0
- data/app/views/educode_sales/businesses/index.json.jbuilder +5 -0
- data/app/views/educode_sales/businesses/key_person.html.erb +5 -0
- data/app/views/educode_sales/businesses/new_follow_record.html.erb +56 -6
- data/app/views/educode_sales/businesses/show_follow_record.html.erb +40 -2
- data/app/views/educode_sales/ideas/new.html.erb +1 -1
- data/app/views/educode_sales/ideas/new_follow_up.html.erb +45 -8
- data/app/views/educode_sales/teachers/add_keys.html.erb +0 -1
- data/db/migrate/20230704124921_add_plan_a_date_to_follow_ups.rb +9 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +6 -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: 7918ebb9f76467d371b5f760a001bcd5fa91f78cac3149882bedd2506add6251
|
4
|
+
data.tar.gz: 5225695183f80422067b3dbad8b0b3e7edd9ab0acaf08fc9261b970f8254f163
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 81319e099aeff24c0df0be5a6f7f6f408e5a2c2c053476788b954d29ca00b1719cb921f250afd9516e0efca9f081dcc3cbfb86dd4a08fc6ba12edc53ce7b0747
|
7
|
+
data.tar.gz: da33b752f9b61b100f995c28377e0a1f8d38e5a375ba62302b9a2ed6b401f8a6d4547c8f3e17d8c474c935314a97b2bc896b6fbd6ffbdb4a87c6be418e841170
|
@@ -115,7 +115,7 @@ module EducodeSales
|
|
115
115
|
end
|
116
116
|
end
|
117
117
|
format.json do
|
118
|
-
if params[:q] && (params[:q][:clazz] == 'area' || params[:q][:clazz] == 'special' || params[:q][:clazz] == 'delete_list')
|
118
|
+
if params[:q] && (params[:q][:clazz] == 'area' || params[:q][:clazz] == 'special' || params[:q][:clazz] == 'delete_list' || params[:q][:clazz] == 'plan_year')
|
119
119
|
if params[:q][:clazz] == 'special'
|
120
120
|
school_ids = []
|
121
121
|
# 专项商机
|
@@ -132,6 +132,8 @@ module EducodeSales
|
|
132
132
|
@businesses = Business.joins("JOIN departments AS dp ON educode_sales_businesses.department_id = dp.id").where("dp.school_id in (?)", school_ids)
|
133
133
|
elsif params[:q][:clazz] == 'delete_list'
|
134
134
|
@businesses = Business.unscoped.where(state_id: [1, 3])
|
135
|
+
elsif params[:q][:clazz] == 'plan_year'
|
136
|
+
@businesses = Business.joins(:last_follow_up).where("educode_sales_follow_ups.plan_a_date > :year OR educode_sales_follow_ups.plan_return_date > :year OR educode_sales_follow_ups.invitation_at > :year", year: Time.now.beginning_of_year)
|
135
137
|
end
|
136
138
|
else
|
137
139
|
if @current_admin.is_admin?
|
@@ -390,6 +392,11 @@ module EducodeSales
|
|
390
392
|
@businesses = @businesses.select("
|
391
393
|
distinct
|
392
394
|
educode_sales_businesses.*,
|
395
|
+
last_follow.plan_a_date,
|
396
|
+
last_follow.plan_a_money,
|
397
|
+
last_follow.invitation_money,
|
398
|
+
last_follow.plan_return_date,
|
399
|
+
last_follow.plan_return_money,
|
393
400
|
last_follow.invitation_at,
|
394
401
|
last_follow.budget_amount,
|
395
402
|
last_follow.o_business_deployment,
|
@@ -409,7 +409,7 @@ module EducodeSales
|
|
409
409
|
end
|
410
410
|
|
411
411
|
def follow_up_params
|
412
|
-
params.permit(:clazz_id, :stage_id, :invitation_at, :reception_at, :total_amount, :actual_amount, :divide_amount, :divide_rate, :budget_amount, :description, :advise, :place_id, :bidded_date, :signed_date, :year, :o_business_deployment, :deploy_time, :rival)
|
412
|
+
params.permit(:clazz_id, :stage_id, :invitation_at, :reception_at, :total_amount, :actual_amount, :divide_amount, :divide_rate, :budget_amount, :description, :advise, :place_id, :bidded_date, :signed_date, :year, :o_business_deployment, :deploy_time, :rival, :plan_a_date, :plan_a_money, :invitation_money, :plan_return_date, :plan_return_money)
|
413
413
|
end
|
414
414
|
|
415
415
|
# 更新部门和部门下老师用户的状态
|
@@ -142,9 +142,16 @@ module EducodeSales
|
|
142
142
|
idea.department_id = idea.business&.department_id
|
143
143
|
end
|
144
144
|
idea.attachment_ids = attachment_ids
|
145
|
+
|
145
146
|
# idea.assist_staff_ids = assist_staff_ids
|
146
147
|
# idea.other_staff_ids = other_staff_ids
|
147
148
|
idea.save
|
149
|
+
attachment_ids.each do |a|
|
150
|
+
attachment = Attachment.find_by_id(a)
|
151
|
+
attachment.container_id = idea.id
|
152
|
+
attachment.container_type = 'EducodeSales::Idea'
|
153
|
+
attachment.save
|
154
|
+
end
|
148
155
|
render_success
|
149
156
|
end
|
150
157
|
|
@@ -264,6 +271,14 @@ module EducodeSales
|
|
264
271
|
if follow_up.save
|
265
272
|
idea.last_idea_follow_id = follow_up.id
|
266
273
|
idea.save
|
274
|
+
attachment_ids = Array(params[:attachment_ids].to_s.split(","))
|
275
|
+
attachment_ids.each do |a|
|
276
|
+
attachment = Attachment.find_by_id(a)
|
277
|
+
attachment.container_id = idea.id
|
278
|
+
attachment.container_type = 'EducodeSales::Idea'
|
279
|
+
attachment.description = follow_up.id.to_s
|
280
|
+
attachment.save
|
281
|
+
end
|
267
282
|
render_success
|
268
283
|
else
|
269
284
|
render_failure follow_up
|
@@ -25,7 +25,7 @@ module EducodeSales
|
|
25
25
|
enum model: %w[本地版 线上版 混合版]
|
26
26
|
enum idea_type: %w[建设方案 申报论证 市场调研 课程建设 报价清单 交流汇报 招标参数 资质申报 产品手册 宣传海报 课题论文 投标支持 其他类]
|
27
27
|
|
28
|
-
serialize :assist_staff_ids,Array
|
28
|
+
serialize :assist_staff_ids, Array
|
29
29
|
serialize :attachment_ids, Array
|
30
30
|
serialize :other_staff_ids, Array
|
31
31
|
|
@@ -35,6 +35,18 @@ module EducodeSales
|
|
35
35
|
self.update(deleted_at: nil, deleter_id: nil, is_deleted: false)
|
36
36
|
end
|
37
37
|
|
38
|
+
def sync_data
|
39
|
+
# {"content"=>"123", "idea_id"=>15, "school_id"=>nil, "money"=>123.0, "advise"=>"123", "sale_staff_id"=>8, "idea_staff_id"=>12, "staff_id"=>2, "comment"=>nil, "created_at"=>Mon, 01 May 2023 11:12:48 CST +08:00, "updated_at"=>Mon, 01 Ma023 11:14:06 CST +08:00}
|
40
|
+
# {"school_id"=>38739, "name"=>"java项目", "level"=>"高", "staff_id"=>24,"types"=>"低定制", "model"=>"本地版", "hardware"=>111.011, "project"=>333.011, "money"=>222.01, "creator_id"=>2, "end_time"=>Sat, 08 Apr 2023, "history_type"=>n"=>"4441111", "deleter_id"=>nil, "is_deleted"=>false, "deleted_at"=>nil, "department_id"=>35794, "manager_name"=>"王旭11111", "manager_phone"=>"131011111111111", "history_record"=>nil, "created_at"=>Thu, 23 Mar 2023 11:27:22 CST +08:00, "updated_at"=>Tue, 04 Jul 20217:57:32 CST +08:00, "school_name"=>"湖南科技大学1111", "department_name"=>"计算机科学与技术11111", "sale_staff_id"=>53, "idea_staff_id"=>nil, "assist_staff_ids"=>["10"], "attachment_id"=>nil, "attachment_ids"=>["4390068"], "idea_type"=>"建设方案", "other_staff_ids" "12", "13", "14", "16", "17", "18"], "idea_follows_count"=>2, "last_idea_follow_id"=>11, "advise"=>"123123", "business_id"=>nil}
|
41
|
+
|
42
|
+
last_follow = self.idea_follows.order(created_at: :desc).first
|
43
|
+
if last_follow
|
44
|
+
self.update(status: last_follow.status, last_idea_follow_id: last_follow.id, staff_id: last_follow.idea_staff_id, sale_staff_id: last_follow.sale_staff_id)
|
45
|
+
else
|
46
|
+
self.update(last_idea_follow_id: nil)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
38
50
|
def assist_staffs
|
39
51
|
Staff.where(id: self.assist_staff_ids)
|
40
52
|
end
|
@@ -170,6 +170,7 @@
|
|
170
170
|
<% if can?(:audit_business, EducodeSales::Business) %>
|
171
171
|
<button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right delete-btn" lay-event="delete_list">审核商机</button>
|
172
172
|
<% end %>
|
173
|
+
<button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right plan_year" lay-event="plan_year">本年计划</button>
|
173
174
|
</div>
|
174
175
|
</script>
|
175
176
|
<script type="text/html" id="delete_bar">
|
@@ -522,6 +523,20 @@
|
|
522
523
|
sort: true,
|
523
524
|
hide: gon.filter.latest_time
|
524
525
|
},
|
526
|
+
{
|
527
|
+
field: 'plan_a_date',
|
528
|
+
width: 150,
|
529
|
+
title:'计划A类时间',
|
530
|
+
sort: true,
|
531
|
+
hide: gon.filter.plan_a_date
|
532
|
+
},
|
533
|
+
{
|
534
|
+
field: 'plan_a_money',
|
535
|
+
width: 150,
|
536
|
+
title: '计划A类金额',
|
537
|
+
sort: true,
|
538
|
+
hide: gon.filter.plan_a_money
|
539
|
+
},
|
525
540
|
{
|
526
541
|
field: 'invitation_at',
|
527
542
|
width: 150,
|
@@ -529,6 +544,13 @@
|
|
529
544
|
sort: true,
|
530
545
|
hide: gon.filter.invitation_at
|
531
546
|
},
|
547
|
+
{
|
548
|
+
field: 'invitation_money',
|
549
|
+
width: 150,
|
550
|
+
title: '计划投标金额',
|
551
|
+
sort: true,
|
552
|
+
hide: gon.filter.invitation_money
|
553
|
+
},
|
532
554
|
{
|
533
555
|
field: 'bidded_date',
|
534
556
|
width: 105,
|
@@ -536,6 +558,20 @@
|
|
536
558
|
sort: true,
|
537
559
|
hide: gon.filter.bidded_date
|
538
560
|
},
|
561
|
+
{
|
562
|
+
field: 'plan_return_date',
|
563
|
+
width: 135,
|
564
|
+
title: '计划回款时间',
|
565
|
+
sort: true,
|
566
|
+
hide: gon.filter.plan_return_date
|
567
|
+
},
|
568
|
+
{
|
569
|
+
field: 'plan_return_money',
|
570
|
+
width: 135,
|
571
|
+
title: '计划回款金额',
|
572
|
+
sort: true,
|
573
|
+
hide: gon.filter.plan_return_money
|
574
|
+
},
|
539
575
|
{
|
540
576
|
field: 'budget_amount',
|
541
577
|
width: 105,
|
@@ -1067,6 +1103,8 @@
|
|
1067
1103
|
$(".area-btn").addClass("selected-btn");
|
1068
1104
|
} else if (search['clazz'] == 'delete_list') {
|
1069
1105
|
$(".delete-btn").addClass("selected-btn");
|
1106
|
+
} else if (search['clazz'] == 'plan_year') {
|
1107
|
+
$(".plan_year").addClass("selected-btn");
|
1070
1108
|
} else {
|
1071
1109
|
$(".all-btn").addClass("selected-btn");
|
1072
1110
|
}
|
@@ -1249,6 +1287,26 @@
|
|
1249
1287
|
|
1250
1288
|
return false;
|
1251
1289
|
}
|
1290
|
+
else if (obj.event === 'plan_year') {
|
1291
|
+
search = {"clazz": "plan_year"}
|
1292
|
+
business_type_list.setValue([])
|
1293
|
+
table.reload('businesses_table', {
|
1294
|
+
url: '/missions/businesses',
|
1295
|
+
cols: cols_table,
|
1296
|
+
page: {
|
1297
|
+
curr: 1
|
1298
|
+
},
|
1299
|
+
where: {q: search, sort: sort}
|
1300
|
+
}, 'data');
|
1301
|
+
|
1302
|
+
form.val('search_form', {
|
1303
|
+
name: '', department: '', staff_id: '', business_type: '', business_step: '',
|
1304
|
+
place_id: '', date: '', area: ''
|
1305
|
+
})
|
1306
|
+
$(".plan_year").addClass("selected-btn");
|
1307
|
+
|
1308
|
+
return false;
|
1309
|
+
}
|
1252
1310
|
else if (obj.event === 'delete') {
|
1253
1311
|
var checkStatus = table.checkStatus('currentTableId'),
|
1254
1312
|
data = checkStatus.data;
|
@@ -76,6 +76,11 @@ json.data do
|
|
76
76
|
json.self_flag (d.staff_id == @current_admin.id) || (d.last_follow_up_id.in? follow_up_ids)
|
77
77
|
json.followed d.users.pluck(:user_id).include?(@current_admin.user.id) ? 1 : 0 # d.users.where(user_id:@current_admin.user.id).first ? 1 : 0
|
78
78
|
json.p_deploy_time d.p_deploy_time
|
79
|
+
json.plan_a_date d.last_follow_up&.plan_a_date&.to_s
|
80
|
+
json.plan_a_money d.last_follow_up&.plan_a_money&.round(6)
|
81
|
+
json.invitation_money d.last_follow_up&.invitation_money&.to_s
|
82
|
+
json.plan_return_date d.last_follow_up&.plan_return_date&.to_s
|
83
|
+
json.plan_return_money d.last_follow_up&.plan_return_money&.round(6)
|
79
84
|
end
|
80
85
|
end
|
81
86
|
|
@@ -37,6 +37,21 @@
|
|
37
37
|
<%= select_tag "stage_id", options_for_select(@stages, @last_follow_up&.stage_id), { 'lay-filter': 'stage_id', class: 'required', } %>
|
38
38
|
</div>
|
39
39
|
</div>
|
40
|
+
</br>
|
41
|
+
<div class="layui-inline">
|
42
|
+
<label class="layui-form-label">计划A类时间</label>
|
43
|
+
<div class="layui-input-inline">
|
44
|
+
<input type="text" class="layui-input" name="plan_a_date" autocomplete="off" id="plan_a_date"
|
45
|
+
value="<%= @last_follow_up&.plan_a_date %>"
|
46
|
+
placeholder="请选择日期">
|
47
|
+
</div>
|
48
|
+
</div>
|
49
|
+
<div class="layui-inline">
|
50
|
+
<label class="layui-form-label">计划A类金额(万)</label>
|
51
|
+
<div class="layui-input-inline">
|
52
|
+
<input name="plan_a_money" class="layui-input" value="<%= @last_follow_up&.plan_a_money.to_f.round(6) %>">
|
53
|
+
</div>
|
54
|
+
</div>
|
40
55
|
<br>
|
41
56
|
<div class="layui-inline">
|
42
57
|
<label class="layui-form-label">计划投标时间</label>
|
@@ -46,14 +61,29 @@
|
|
46
61
|
placeholder="请选择日期">
|
47
62
|
</div>
|
48
63
|
</div>
|
49
|
-
|
50
|
-
<label class="layui-form-label"
|
64
|
+
<div class="layui-inline">
|
65
|
+
<label class="layui-form-label">计划投标金额(万)</label>
|
51
66
|
<div class="layui-input-inline">
|
52
|
-
<input
|
53
|
-
value="<%= @last_follow_up&.bidded_date %>"
|
54
|
-
placeholder="请选择日期">
|
67
|
+
<input name="invitation_money" class="layui-input" value="<%= @last_follow_up&.invitation_money.to_f.round(6) %>">
|
55
68
|
</div>
|
56
69
|
</div>
|
70
|
+
</br>
|
71
|
+
<div class="layui-inline">
|
72
|
+
<label class="layui-form-label">计划回款时间</label>
|
73
|
+
<div class="layui-input-inline">
|
74
|
+
<input type="text" class="layui-input" name="plan_return_date" autocomplete="off" id="plan_return_date"
|
75
|
+
value="<%= @last_follow_up&.plan_return_date %>"
|
76
|
+
placeholder="请选择日期">
|
77
|
+
</div>
|
78
|
+
</div>
|
79
|
+
<div class="layui-inline">
|
80
|
+
<label class="layui-form-label">计划回款金额(万)</label>
|
81
|
+
<div class="layui-input-inline">
|
82
|
+
<input name="plan_return_money" class="layui-input" value="<%= @last_follow_up&.plan_return_money.to_f.round(6) %>">
|
83
|
+
</div>
|
84
|
+
</div>
|
85
|
+
|
86
|
+
|
57
87
|
<br>
|
58
88
|
<!--
|
59
89
|
<div class="layui-inline">
|
@@ -88,6 +118,14 @@
|
|
88
118
|
</div> -->
|
89
119
|
|
90
120
|
<br class="service_show layui-hide">
|
121
|
+
<div class="layui-inline">
|
122
|
+
<label class="layui-form-label">中标时间</label>
|
123
|
+
<div class="layui-input-inline">
|
124
|
+
<input type="text" class="layui-input" name="bidded_date" autocomplete="off" id="invitation_at_add"
|
125
|
+
value="<%= @last_follow_up&.bidded_date %>"
|
126
|
+
placeholder="请选择日期">
|
127
|
+
</div>
|
128
|
+
</div>
|
91
129
|
<div class="layui-inline">
|
92
130
|
<label class="layui-form-label">中标额(万)</label>
|
93
131
|
<div class="layui-input-inline">
|
@@ -247,6 +285,14 @@
|
|
247
285
|
laydate.render({
|
248
286
|
elem: '#reception_at_add'
|
249
287
|
});
|
288
|
+
|
289
|
+
laydate.render({
|
290
|
+
elem: '#plan_a_date'
|
291
|
+
})
|
292
|
+
|
293
|
+
laydate.render({
|
294
|
+
elem: '#plan_return_date'
|
295
|
+
})
|
250
296
|
var sales_list = xmSelect.render({
|
251
297
|
el: '#assign_follow',
|
252
298
|
remoteSearch: true,
|
@@ -358,6 +404,10 @@
|
|
358
404
|
<style>
|
359
405
|
.new_place_select xm-select > .xm-body {
|
360
406
|
width: 300px;
|
361
|
-
|
407
|
+
!important;
|
408
|
+
}
|
409
|
+
|
410
|
+
.layui-form-label {
|
411
|
+
width: 120px;
|
362
412
|
}
|
363
413
|
</style>
|
@@ -35,6 +35,19 @@
|
|
35
35
|
</div>
|
36
36
|
</div>
|
37
37
|
<br>
|
38
|
+
<div class="layui-inline">
|
39
|
+
<label class="layui-form-label">计划A类时间:</label>
|
40
|
+
<div class="layui-input-inline">
|
41
|
+
<%= @follow_up.plan_a_date.to_s %>
|
42
|
+
</div>
|
43
|
+
</div>
|
44
|
+
<div class="layui-inline">
|
45
|
+
<label class="layui-form-label">计划A类金额:</label>
|
46
|
+
<div class="layui-input-inline">
|
47
|
+
<%= @follow_up.plan_a_money&.round(6) %>
|
48
|
+
</div>
|
49
|
+
</div>
|
50
|
+
</br>
|
38
51
|
<div class="layui-inline">
|
39
52
|
<label class="layui-form-label">计划投标时间:</label>
|
40
53
|
<div class="layui-input-inline">
|
@@ -42,9 +55,22 @@
|
|
42
55
|
</div>
|
43
56
|
</div>
|
44
57
|
<div class="layui-inline">
|
45
|
-
<label class="layui-form-label"
|
58
|
+
<label class="layui-form-label">计划投标金额:</label>
|
46
59
|
<div class="layui-input-inline">
|
47
|
-
<%= @follow_up.
|
60
|
+
<%= @follow_up.invitation_money&.round(6) %>
|
61
|
+
</div>
|
62
|
+
</div>
|
63
|
+
</br>
|
64
|
+
<div class="layui-inline">
|
65
|
+
<label class="layui-form-label">计划回款时间:</label>
|
66
|
+
<div class="layui-input-inline">
|
67
|
+
<%= @follow_up.plan_return_date.to_s %>
|
68
|
+
</div>
|
69
|
+
</div>
|
70
|
+
<div class="layui-inline">
|
71
|
+
<label class="layui-form-label">计划回款金额:</label>
|
72
|
+
<div class="layui-input-inline">
|
73
|
+
<%= @follow_up.plan_return_money&.round(6) %>
|
48
74
|
</div>
|
49
75
|
</div>
|
50
76
|
<br>
|
@@ -86,6 +112,12 @@
|
|
86
112
|
<%= @follow_up.total_amount.to_f.round(6) %>万
|
87
113
|
</div>
|
88
114
|
</div>
|
115
|
+
<div class="layui-inline">
|
116
|
+
<label class="layui-form-label">中标时间:</label>
|
117
|
+
<div class="layui-input-inline">
|
118
|
+
<%= @follow_up.bidded_date.to_s %>
|
119
|
+
</div>
|
120
|
+
</div>
|
89
121
|
<div class="layui-inline">
|
90
122
|
<label class="layui-form-label">合同额:</label>
|
91
123
|
<div class="layui-input-inline">
|
@@ -222,3 +254,9 @@
|
|
222
254
|
});
|
223
255
|
}
|
224
256
|
</script>
|
257
|
+
<style>
|
258
|
+
|
259
|
+
.layui-form-label {
|
260
|
+
width: 120px;
|
261
|
+
}
|
262
|
+
</style>
|
@@ -145,7 +145,7 @@
|
|
145
145
|
<textarea name="content" placeholder="需求说明" class="layui-textarea"><%= @idea&.content.to_s %></textarea>
|
146
146
|
</div>
|
147
147
|
</div>
|
148
|
-
<div class="layui-row" style="padding-top: 15px
|
148
|
+
<div class="layui-row" style="padding-top: 15px">
|
149
149
|
<div class="layui-col-md6">
|
150
150
|
<labeL class="layui-form-label">方案材料:</labeL>
|
151
151
|
<div class="layui-btn-container">
|
@@ -44,6 +44,20 @@
|
|
44
44
|
<textarea name="content" placeholder="团队建议" class="layui-textarea"><%= @idea_follow&.content.to_s %></textarea>
|
45
45
|
</div>
|
46
46
|
</div>
|
47
|
+
<div class="layui-row" style="padding-top: 15px">
|
48
|
+
<div class="layui-col-md6">
|
49
|
+
<labeL class="layui-form-label">材料:</labeL>
|
50
|
+
<div class="layui-btn-container">
|
51
|
+
<button type="button" class="layui-btn layui-btn-normal" id="test8">选择文件</button>
|
52
|
+
</div>
|
53
|
+
</div>
|
54
|
+
<div class="layui-col-md6">
|
55
|
+
<labeL class="layui-form-label">文件:</labeL>
|
56
|
+
<div class="layui-input-block">
|
57
|
+
<div id="attachment_ids_f"></div>
|
58
|
+
</div>
|
59
|
+
</div>
|
60
|
+
</div>
|
47
61
|
<div class="layui-row" style="padding-top: 30px; float: left">
|
48
62
|
<div class="layui-input-block">
|
49
63
|
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn_follow">确认保存</button>
|
@@ -56,18 +70,34 @@
|
|
56
70
|
|
57
71
|
|
58
72
|
<script>
|
59
|
-
layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate'], function () {
|
73
|
+
layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate', 'upload'], function () {
|
60
74
|
var form = layui.form,
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
75
|
+
layer = layui.layer,
|
76
|
+
table = layui.table,
|
77
|
+
laytpl = layui.laytpl,
|
78
|
+
request = layui.request,
|
79
|
+
laydate = layui.laydate,
|
80
|
+
upload = layui.upload,
|
81
|
+
$ = layui.$;
|
67
82
|
|
68
83
|
form.render();
|
69
84
|
|
70
|
-
|
85
|
+
upload.render({
|
86
|
+
elem: '#test8'
|
87
|
+
, url: '/missions/upload_files' //此处配置你自己的上传接口即可
|
88
|
+
, auto: true
|
89
|
+
, accept: 'file' //普通文件
|
90
|
+
, bindAction: '#test9'
|
91
|
+
, done: function (res) {
|
92
|
+
layer.msg('上传成功');
|
93
|
+
// $("#attachment_id").val(res.attachment_id)
|
94
|
+
// $("#filename").val(res.filename)
|
95
|
+
a = attachment_list_f.getValue()
|
96
|
+
b = [{name: res.filename, value: res.attachment_id}]
|
97
|
+
c = a.concat(b)
|
98
|
+
attachment_list_f.setValue(c)
|
99
|
+
}
|
100
|
+
});
|
71
101
|
var staff_list = xmSelect.render({
|
72
102
|
el: '#new_idea_staff_id',
|
73
103
|
data: gon.staffs,
|
@@ -80,6 +110,12 @@
|
|
80
110
|
filterable: true,
|
81
111
|
radio: true,
|
82
112
|
})
|
113
|
+
var attachment_list_f = xmSelect.render({
|
114
|
+
el: '#attachment_ids_f',
|
115
|
+
data: [],
|
116
|
+
filterable: true,
|
117
|
+
multiple: true
|
118
|
+
})
|
83
119
|
|
84
120
|
|
85
121
|
//监听提交
|
@@ -87,6 +123,7 @@
|
|
87
123
|
data.field.idea_id = "<%= @idea.id %>";
|
88
124
|
data.field.idea_staff_id = staff_list.getValue('valueStr');
|
89
125
|
data.field.sale_staff_id = sale_staff_list.getValue('valueStr');
|
126
|
+
data.field.attachment_ids = attachment_list_f.getValue('valueStr');
|
90
127
|
request.authPost("missions/ideas/" + data.field.idea_id + "/follow_up", data.field, function (res) {
|
91
128
|
if (res.success == false) {
|
92
129
|
layer.alert(res.msg)
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class AddPlanADateToFollowUps < ActiveRecord::Migration[5.2]
|
2
|
+
def change
|
3
|
+
add_column :educode_sales_follow_ups, :plan_a_date, :date, comment: '计划a类时间'
|
4
|
+
add_column :educode_sales_follow_ups, :plan_a_money, :double, comment: '计划a类金额'
|
5
|
+
add_column :educode_sales_follow_ups, :invitation_money, :double, comment: '计划投标金额'
|
6
|
+
add_column :educode_sales_follow_ups, :plan_return_date, :date, comment: '计划回款时间'
|
7
|
+
add_column :educode_sales_follow_ups, :plan_return_money, :double, comment: '计划回款金额'
|
8
|
+
end
|
9
|
+
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.
|
4
|
+
version: 1.10.28
|
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-05 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
|
@@ -745,6 +744,7 @@ files:
|
|
745
744
|
- db/migrate/20230614141628_create_educode_sales_follow_up_tags.rb
|
746
745
|
- db/migrate/20230614142145_create_educode_sales_watch_follow_ups.rb
|
747
746
|
- db/migrate/20230629130033_add_clazz_to_money_plans.rb
|
747
|
+
- db/migrate/20230704124921_add_plan_a_date_to_follow_ups.rb
|
748
748
|
- lib/educode_sales.rb
|
749
749
|
- lib/educode_sales/engine.rb
|
750
750
|
- lib/educode_sales/version.rb
|
@@ -753,7 +753,7 @@ homepage: https://www.educoder.net
|
|
753
753
|
licenses:
|
754
754
|
- MIT
|
755
755
|
metadata: {}
|
756
|
-
post_install_message:
|
756
|
+
post_install_message:
|
757
757
|
rdoc_options: []
|
758
758
|
require_paths:
|
759
759
|
- lib
|
@@ -769,7 +769,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
769
769
|
version: '0'
|
770
770
|
requirements: []
|
771
771
|
rubygems_version: 3.0.9
|
772
|
-
signing_key:
|
772
|
+
signing_key:
|
773
773
|
specification_version: 4
|
774
774
|
summary: Summary of EducodeSales.
|
775
775
|
test_files: []
|
Binary file
|