educode_sales 1.10.26 → 1.10.28
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 +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
|