educode_sales 0.9.77 → 0.9.78
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/contracts_controller.rb +19 -12
- data/app/models/educode_sales/business.rb +1 -1
- data/app/views/educode_sales/contracts/_list.html.erb +7 -7
- data/app/views/educode_sales/contracts/assign.html.erb +1 -1
- data/app/views/educode_sales/contracts/show_follow_record.html.erb +24 -24
- data/lib/educode_sales/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b22a3361ca68bbfaa0704aa28aeecb7f2906973b836971183936c3c13910fbe
|
4
|
+
data.tar.gz: 35b7435979cecacdc00bae4b28bf3112e8e6cb5a1b36cd2a8035e91fc817d36b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 18719f022f0e3d7d1d91f4f111ecd8b234b450e5244874bf21fce753220e2a7c8e0bb02341c88ac8e6d2f9a5dd4f6540d72c41b1db9f0b1a76025654b8c006d0
|
7
|
+
data.tar.gz: 5a6d3f438a743d0004351c9d2361c60b2b79da3d468a4776954fc577f263bcd784022bca5c3ba2cddb094dfba9a66be609ef7614469ba5b6b66461183f8decbe
|
@@ -17,18 +17,18 @@ module EducodeSales
|
|
17
17
|
# 项目类型
|
18
18
|
bussiness_type = EducodeSales::Business.include_types(params[:type]) || []
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
business_step = []
|
22
22
|
if params[:step]
|
23
23
|
# 项目阶段
|
24
24
|
business_step = EducodeSales::Business.include_steps(params[:step]) || []
|
25
25
|
end
|
26
|
-
|
27
|
-
|
26
|
+
|
27
|
+
|
28
28
|
gon.business_type = Common.where(clazz: 'business_type').map do |d|
|
29
29
|
{value: d.id, name: d.name, selected: bussiness_type.include?(d.extras)}
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
gon.business_step = Common.where(clazz: 'business_step', name: ['已中标', '已签单', '已验收', '回款中', '服务中', '已结束']).order("position").map do |d|
|
33
33
|
{value: d.id, name: d.name, selected: business_step.include?(d.name)}
|
34
34
|
end
|
@@ -98,7 +98,7 @@ module EducodeSales
|
|
98
98
|
if params[:q].present? && params[:q][:business_type].present?
|
99
99
|
@businesses = @businesses.where("educode_sales_businesses.clazz_id in (?)", params[:q][:business_type].split(",").map(&:to_i))
|
100
100
|
end
|
101
|
-
|
101
|
+
|
102
102
|
if params[:q].present? && params[:q][:business_step].present?
|
103
103
|
@businesses = @businesses.joins("
|
104
104
|
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
@@ -158,14 +158,14 @@ module EducodeSales
|
|
158
158
|
# 销售经理
|
159
159
|
@businesses = @businesses.joins("LEFT JOIN educode_sales_assign_follow_ups ON educode_sales_assign_follow_ups.follow_up_id = educode_sales_businesses.last_follow_up_id").
|
160
160
|
where("(educode_sales_assign_follow_ups.id IS NOT NULL AND educode_sales_assign_follow_ups.staff_id = ?) OR (educode_sales_assign_follow_ups.id IS NULL AND educode_sales_businesses.staff_id = ?)", params[:q][:sales_staff_id], params[:q][:sales_staff_id])
|
161
|
-
|
161
|
+
|
162
162
|
end
|
163
163
|
|
164
164
|
if params[:q].present? && params[:q][:after_sales_staff_id].present?
|
165
165
|
# 售后工程师
|
166
166
|
@businesses = @businesses.joins("LEFT JOIN educode_sales_assign_staffs ON educode_sales_assign_staffs.sourcable_type = 'EducodeSales::Business' AND educode_sales_assign_staffs.sourcable_id = educode_sales_businesses.id").
|
167
167
|
where("educode_sales_assign_staffs.staff_id = ?", params[:q][:after_sales_staff_id])
|
168
|
-
|
168
|
+
|
169
169
|
end
|
170
170
|
|
171
171
|
# 商机变化
|
@@ -225,6 +225,8 @@ module EducodeSales
|
|
225
225
|
common = Common.find_by(clazz: 'staff_type', name: '销售')
|
226
226
|
staffs = Staff.joins(:user).where(job_type: common.id).where.not(role_id: 11)
|
227
227
|
@staffs = staffs.map { |d| [d.user.real_name, d.id]}
|
228
|
+
role = Role.find_by(name: '售后工程师')
|
229
|
+
@after_sales_staffs = Staff.joins(:user).where(role_id: role.id).map { |d| [d.user.real_name, d.id]}
|
228
230
|
end
|
229
231
|
|
230
232
|
def new_follow_up
|
@@ -332,7 +334,7 @@ module EducodeSales
|
|
332
334
|
follow_up.staff = @current_admin
|
333
335
|
|
334
336
|
last_follow_up = @business.last_follow_up
|
335
|
-
|
337
|
+
|
336
338
|
if follow_up.save!
|
337
339
|
contract_lists = EducodeSales::ContractDateList.clazzs.invert
|
338
340
|
data.each_with_index do |s, i|
|
@@ -357,9 +359,11 @@ module EducodeSales
|
|
357
359
|
end
|
358
360
|
|
359
361
|
def assign
|
360
|
-
|
361
|
-
staffs = Staff.joins(:user).where(
|
362
|
-
|
362
|
+
role = Role.find_by( name: '售后工程师')
|
363
|
+
staffs = Staff.joins(:user).where(role_id: role.id)
|
364
|
+
business = Business.find(params[:id])
|
365
|
+
selected_staff_ids = business.assign_staffs.pluck(:staff_id)
|
366
|
+
gon.sales_staffs = staffs.map { |d| {name: d.user.real_name, value: d.id, selected: selected_staff_ids.include?(d.id) } }
|
363
367
|
render layout: false
|
364
368
|
end
|
365
369
|
|
@@ -385,9 +389,12 @@ module EducodeSales
|
|
385
389
|
|
386
390
|
def assign_staff
|
387
391
|
@business = Business.find(params[:id])
|
392
|
+
assign_staffs = []
|
388
393
|
params[:to_id].split(",").each do |i|
|
389
|
-
@business.
|
394
|
+
assign_staffs << AssignStaff.find_or_initialize_by(sourcable_id: @business.id, staff_id: i, sourcable_type: "EducodeSales::Business")
|
390
395
|
end
|
396
|
+
@business.assign_staffs = assign_staffs
|
397
|
+
@business.save
|
391
398
|
render_success
|
392
399
|
end
|
393
400
|
|
@@ -19,7 +19,7 @@ module EducodeSales
|
|
19
19
|
has_many :business_watches, dependent: :destroy
|
20
20
|
has_many :business_histories, dependent: :destroy
|
21
21
|
|
22
|
-
has_many :assign_staffs, as: :sourcable # 售后人员
|
22
|
+
has_many :assign_staffs, as: :sourcable, dependent: :destroy # 售后人员
|
23
23
|
|
24
24
|
# 关联关注
|
25
25
|
has_many :users, :class_name => 'EducodeSales::BusinessRelationShip', foreign_key: 'business_id', :dependent => :destroy
|
@@ -46,7 +46,7 @@
|
|
46
46
|
<div class="layui-inline">
|
47
47
|
<label class="layui-form-label">售后工程师</label>
|
48
48
|
<div class="layui-input-inline">
|
49
|
-
<%= select_tag "after_sales_staff_id", options_for_select(@
|
49
|
+
<%= select_tag "after_sales_staff_id", options_for_select(@after_sales_staffs, params[:staff_id]), { 'lay-filter': 'staff_id', include_blank: true , "lay-search": "" } %>
|
50
50
|
</div>
|
51
51
|
</div>
|
52
52
|
<div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
@@ -161,7 +161,7 @@
|
|
161
161
|
elem: '#date',
|
162
162
|
range: true
|
163
163
|
});
|
164
|
-
|
164
|
+
|
165
165
|
laydate.render({
|
166
166
|
elem: '#invitation_at',
|
167
167
|
range: true
|
@@ -525,7 +525,7 @@
|
|
525
525
|
},
|
526
526
|
where: {q: search, sort: sort}
|
527
527
|
}, 'data');
|
528
|
-
|
528
|
+
|
529
529
|
return false;
|
530
530
|
});
|
531
531
|
|
@@ -533,7 +533,7 @@
|
|
533
533
|
var field = data.field;
|
534
534
|
form.val('search_form', {
|
535
535
|
name: '', department: '', staff_id: '', business_type: '', business_step: '',
|
536
|
-
place_id: '', date: '', area: '', invitation_at: '', business_year: '', number: ''
|
536
|
+
place_id: '', date: '', area: '', invitation_at: '', business_year: '', number: '', o_business_deployment: '',after_sales_staff_id: ''
|
537
537
|
})
|
538
538
|
business_type_list.setValue([])
|
539
539
|
business_step_list.setValue([])
|
@@ -581,10 +581,10 @@
|
|
581
581
|
layer.full(sindex);
|
582
582
|
});
|
583
583
|
return false;
|
584
|
-
}
|
584
|
+
}
|
585
585
|
});
|
586
|
-
|
587
|
-
|
586
|
+
|
587
|
+
|
588
588
|
});
|
589
589
|
</script>
|
590
590
|
<style>
|
@@ -37,7 +37,7 @@
|
|
37
37
|
request.post('missions/contracts/' + parent.id +"/assign_staff", {to_id: staff_list_select.getValue('valueStr')}, function (res) {
|
38
38
|
layer.close(index);
|
39
39
|
layer.close(parentIndex)
|
40
|
-
|
40
|
+
parent.table.reload('contact_table')
|
41
41
|
})
|
42
42
|
});
|
43
43
|
return false;
|
@@ -2,60 +2,60 @@
|
|
2
2
|
<form class="layui-form form-value">
|
3
3
|
<div class="layui-form-item" style="padding: 10px 25px 0;">
|
4
4
|
<div class="layui-inline">
|
5
|
-
<label class="layui-form-label">单位:</label>
|
5
|
+
<label class="layui-form-label" style="width: 160px;">单位:</label>
|
6
6
|
<div class="layui-input-inline">
|
7
7
|
<%= @follow_up.business.department&.school&.name %>
|
8
8
|
</div>
|
9
9
|
</div>
|
10
10
|
<%if @follow_up.business.number.present?%>
|
11
11
|
<div class="layui-inline">
|
12
|
-
<label class="layui-form-label">编号:</label>
|
12
|
+
<label class="layui-form-label" style="width: 160px;">编号:</label>
|
13
13
|
<div class="layui-input-inline">
|
14
14
|
<%= @follow_up.business.number %>
|
15
15
|
</div>
|
16
16
|
</div>
|
17
17
|
<%end %>
|
18
18
|
<div class="layui-inline">
|
19
|
-
<label class="layui-form-label">部门:</label>
|
19
|
+
<label class="layui-form-label" style="width: 160px;">部门:</label>
|
20
20
|
<div class="layui-input-inline">
|
21
21
|
<%= @follow_up.business.department&.name %>
|
22
22
|
</div>
|
23
23
|
</div>
|
24
24
|
<br>
|
25
25
|
<div class="layui-inline">
|
26
|
-
<label class="layui-form-label">项目类型:</label>
|
26
|
+
<label class="layui-form-label" style="width: 160px;">项目类型:</label>
|
27
27
|
<div class="layui-input-inline">
|
28
28
|
<%= @follow_up.clazz.name %>
|
29
29
|
</div>
|
30
30
|
</div>
|
31
31
|
<div class="layui-inline">
|
32
|
-
<label class="layui-form-label">项目阶段:</label>
|
32
|
+
<label class="layui-form-label" style="width: 160px;">项目阶段:</label>
|
33
33
|
<div class="layui-input-inline">
|
34
34
|
<%= @follow_up.stage.name %>
|
35
35
|
</div>
|
36
36
|
</div>
|
37
37
|
<br>
|
38
38
|
<div class="layui-inline">
|
39
|
-
<label class="layui-form-label">招标时间:</label>
|
39
|
+
<label class="layui-form-label" style="width: 160px;">招标时间:</label>
|
40
40
|
<div class="layui-input-inline">
|
41
41
|
<%= @follow_up.invitation_at.to_s %>
|
42
42
|
</div>
|
43
43
|
</div>
|
44
44
|
<div class="layui-inline">
|
45
|
-
<label class="layui-form-label">中标时间:</label>
|
45
|
+
<label class="layui-form-label" style="width: 160px;">中标时间:</label>
|
46
46
|
<div class="layui-input-inline">
|
47
47
|
<%= @follow_up.bidded_date.to_s %>
|
48
48
|
</div>
|
49
49
|
</div>
|
50
50
|
<br>
|
51
51
|
<div class="layui-inline">
|
52
|
-
<label class="layui-form-label">签单时间:</label>
|
52
|
+
<label class="layui-form-label" style="width: 160px;">签单时间:</label>
|
53
53
|
<div class="layui-input-inline">
|
54
54
|
<%= @follow_up.signed_date.to_s %>
|
55
55
|
</div>
|
56
56
|
</div>
|
57
57
|
<div class="layui-inline">
|
58
|
-
<label class="layui-form-label">验收时间:</label>
|
58
|
+
<label class="layui-form-label" style="width: 160px;">验收时间:</label>
|
59
59
|
<div class="layui-input-inline">
|
60
60
|
<%= @follow_up.reception_at.to_s %>
|
61
61
|
</div>
|
@@ -64,7 +64,7 @@
|
|
64
64
|
<br>
|
65
65
|
<%if @follow_up.clazz_id == EducodeSales::Common.find_by(extras: EducodeSales::Common::OTYPE)&.id %>
|
66
66
|
<div class="layui-inline">
|
67
|
-
<label class="layui-form-label">服务期:</label>
|
67
|
+
<label class="layui-form-label" style="width: 160px;">服务期:</label>
|
68
68
|
<div class="layui-input-inline">
|
69
69
|
<%= @follow_up.service_start_time.to_s + "-" + @follow_up.service_end_time.to_s %>
|
70
70
|
</div>
|
@@ -72,7 +72,7 @@
|
|
72
72
|
<%end %>
|
73
73
|
<%if @follow_up.clazz_id == EducodeSales::Common.find_by(extras: EducodeSales::Common::OTYPE)&.id %>
|
74
74
|
<div class="layui-inline">
|
75
|
-
<label class="layui-form-label">部署类型:</label>
|
75
|
+
<label class="layui-form-label" style="width: 160px;">部署类型:</label>
|
76
76
|
<div class="layui-input-inline">
|
77
77
|
<%=@show_follow_recored_deployment%>
|
78
78
|
</div>
|
@@ -81,46 +81,46 @@
|
|
81
81
|
<br>
|
82
82
|
|
83
83
|
<div class="layui-inline">
|
84
|
-
<label class="layui-form-label">中标额:</label>
|
84
|
+
<label class="layui-form-label" style="width: 160px;">中标额:</label>
|
85
85
|
<div class="layui-input-inline">
|
86
86
|
<%= @follow_up.total_amount.to_f.round(6) %>万
|
87
87
|
</div>
|
88
88
|
</div>
|
89
89
|
<div class="layui-inline">
|
90
|
-
<label class="layui-form-label">合同额:</label>
|
90
|
+
<label class="layui-form-label" style="width: 160px;">合同额:</label>
|
91
91
|
<div class="layui-input-inline">
|
92
92
|
<%= @follow_up.actual_amount.to_f.round(6) %>万
|
93
93
|
</div>
|
94
94
|
</div>
|
95
95
|
<br>
|
96
96
|
<div class="layui-inline">
|
97
|
-
<label class="layui-form-label">渠道:</label>
|
97
|
+
<label class="layui-form-label" style="width: 160px;">渠道:</label>
|
98
98
|
<div class="layui-input-inline">
|
99
99
|
<%= @follow_up.place&.name %>
|
100
100
|
</div>
|
101
101
|
</div>
|
102
102
|
<div class="layui-inline">
|
103
|
-
<label class="layui-form-label">渠道分成:</label>
|
103
|
+
<label class="layui-form-label" style="width: 160px;">渠道分成:</label>
|
104
104
|
<div class="layui-input-inline">
|
105
105
|
<%= @follow_up.divide_amount.to_f.round(6) %>万
|
106
106
|
</div>
|
107
107
|
</div>
|
108
108
|
<br/>
|
109
109
|
<div class="layui-inline">
|
110
|
-
<label class="layui-form-label">预算金额:</label>
|
110
|
+
<label class="layui-form-label" style="width: 160px;">预算金额:</label>
|
111
111
|
<div class="layui-input-inline">
|
112
112
|
<%= @follow_up.budget_amount.to_f.round(6) %>万
|
113
113
|
</div>
|
114
114
|
</div>
|
115
115
|
<div class="layui-inline">
|
116
|
-
<label class="layui-form-label">分成比例:</label>
|
116
|
+
<label class="layui-form-label" style="width: 160px;">分成比例:</label>
|
117
117
|
<div class="layui-input-inline">
|
118
118
|
<%= @follow_up.divide_rate.to_f.round(2) %>%
|
119
119
|
</div>
|
120
120
|
</div>
|
121
121
|
<div class="layui-form-item">
|
122
122
|
<div class="layui-inline">
|
123
|
-
<label class="layui-form-label">所属年度:</label>
|
123
|
+
<label class="layui-form-label" style="width: 160px;">所属年度:</label>
|
124
124
|
<div class="layui-input-inline">
|
125
125
|
<%= @follow_up&.year %>年
|
126
126
|
</div>
|
@@ -128,13 +128,13 @@
|
|
128
128
|
</div>
|
129
129
|
<div class="layui-form-item">
|
130
130
|
<div class="layui-inline">
|
131
|
-
<label class="layui-form-label">项目资金来源:</label>
|
131
|
+
<label class="layui-form-label" style="width: 160px;">项目资金来源:</label>
|
132
132
|
<div class="layui-input-inline">
|
133
133
|
<%= @follow_up&.funding_source %>
|
134
134
|
</div>
|
135
135
|
</div>
|
136
136
|
<div class="layui-inline">
|
137
|
-
<label class="layui-form-label">签约单位:</label>
|
137
|
+
<label class="layui-form-label" style="width: 160px;">签约单位:</label>
|
138
138
|
<div class="layui-input-inline" style="width: 300px">
|
139
139
|
<%= @follow_up.signed_department&.school&.name || '' %>
|
140
140
|
</div>
|
@@ -142,24 +142,24 @@
|
|
142
142
|
</div>
|
143
143
|
<div class="layui-form-item">
|
144
144
|
<label class="layui-form-label" style="width: 150px;">售后工程师:</label>
|
145
|
-
<div class="layui-input-inline">
|
145
|
+
<div class="layui-input-inline" style="width: 350px;">
|
146
146
|
<%= @business.assign_staffs.map{|d| d.staff.user.full_name}.join("、") %>
|
147
147
|
</div>
|
148
148
|
</div>
|
149
149
|
<div class="layui-form-item layui-form-text">
|
150
|
-
<label class="layui-form-label"><%= @trend.clazz %>:</label>
|
150
|
+
<label class="layui-form-label" style="width: 160px;"><%= @trend.clazz %>:</label>
|
151
151
|
<div class="layui-input-block" style="padding-right: 20px;">
|
152
152
|
<pre><%= @trend.content %></pre>
|
153
153
|
</div>
|
154
154
|
</div>
|
155
155
|
<div class="layui-form-item layui-form-text">
|
156
|
-
<label class="layui-form-label">时间:</label>
|
156
|
+
<label class="layui-form-label" style="width: 160px;">时间:</label>
|
157
157
|
<div class="layui-input-block" style="padding-right: 20px;">
|
158
158
|
<pre><%= @follow_up.created_at.to_s %></pre>
|
159
159
|
</div>
|
160
160
|
</div>
|
161
161
|
<div class="layui-form-item layui-form-text">
|
162
|
-
<label class="layui-form-label">跟进人:</label>
|
162
|
+
<label class="layui-form-label" style="width: 160px;">跟进人:</label>
|
163
163
|
<div class="layui-input-block" style="padding-right: 20px;">
|
164
164
|
<pre><%= @follow_up.staff.user.real_name %></pre>
|
165
165
|
</div>
|
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: 0.9.
|
4
|
+
version: 0.9.78
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- anke1460
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -685,7 +685,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
685
685
|
- !ruby/object:Gem::Version
|
686
686
|
version: '0'
|
687
687
|
requirements: []
|
688
|
-
rubygems_version: 3.0.
|
688
|
+
rubygems_version: 3.0.0
|
689
689
|
signing_key:
|
690
690
|
specification_version: 4
|
691
691
|
summary: Summary of EducodeSales.
|