educode_sales 1.10.30 → 1.10.31
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/assets/images/educode_sales/indexlogo.png +0 -0
- data/app/controllers/educode_sales/contracts_controller.rb +17 -0
- data/app/controllers/educode_sales/money_plans_controller.rb +20 -0
- data/app/views/educode_sales/contracts/_list.html.erb +31 -1
- data/app/views/educode_sales/ideas/_index.html.erb +6 -2
- data/app/views/educode_sales/money_plans/_index.html.erb +33 -3
- data/app/views/educode_sales/money_plans/index.json.jbuilder +6 -0
- data/app/views/educode_sales/teachers/_index.html.erb +3 -1
- data/lib/educode_sales/version.rb +1 -1
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c50f4a81ef08d88a240f765076b16084ce5bba548f47b95b6d39fd925415194e
|
4
|
+
data.tar.gz: 63383b652e3dde1d55bb984050643cb10f9f496d343bd2ee5713de1c5815823f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 37b0e90d7eb6706824767e754501cd3c41531ef6d5fbf506e0808d5fc7714a61f1b4fe6cf86328ca2dc5f116dc646031d74bf3b58ac52642f0ecc98f37414edc
|
7
|
+
data.tar.gz: 61ff8dba4f84ce8ab9c91d4914edbacd0bfc666245b395e20356c4c493c060baf5cfa2e4fb574c9c19e3a2c8866da471d1bcd06a8eb24dc8ca2535e39acd4cd6
|
Binary file
|
@@ -77,6 +77,23 @@ module EducodeSales
|
|
77
77
|
@businesses = @businesses.joins(follow_ups: :money_plans).where("educode_sales_follow_ups.clazz_id != ?", x_id).where.not("educode_sales_money_plans.clazz!= 1").where("educode_sales_money_plans.date_at >= ? AND educode_sales_money_plans.date_at <= ? ", date[0] + " 00:00:00", date[1] + " 23:59:59").distinct
|
78
78
|
end
|
79
79
|
|
80
|
+
if params[:q].present? && params[:q][:property].present?
|
81
|
+
# 客户类型
|
82
|
+
@businesses = @businesses.joins(department: [school: :school_tags]).where("school_tags.id = ?", params[:q][:property])
|
83
|
+
end
|
84
|
+
|
85
|
+
if params[:q] && params[:q][:reception_at].present?
|
86
|
+
date = params[:q][:reception_at].split(" - ")
|
87
|
+
@businesses = @businesses.joins("
|
88
|
+
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
89
|
+
").where("educode_sales_follow_ups.reception_at >= ? AND educode_sales_follow_ups.reception_at <= ?", date[0], date[1])
|
90
|
+
end
|
91
|
+
|
92
|
+
if params[:q] && params[:q][:p_deploy_time].present?
|
93
|
+
date = params[:q][:p_deploy_time].split(" - ")
|
94
|
+
@businesses = @businesses.where("p_deploy_time >= ? AND p_deploy_time <= ?", date[0], date[1])
|
95
|
+
end
|
96
|
+
|
80
97
|
if params[:q] && params[:q][:bidded_date].present?
|
81
98
|
date = params[:q][:bidded_date].split(" - ")
|
82
99
|
@businesses = @businesses.joins("
|
@@ -29,6 +29,14 @@ module EducodeSales
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
+
if params[:q].present? && params[:q][:staff_manages].present?
|
33
|
+
# 销售经理
|
34
|
+
@money_plans = @money_plans.joins(:business).joins("
|
35
|
+
LEFT JOIN educode_sales_follow_ups AS last_follow_up ON educode_sales_businesses.last_follow_up_id = last_follow_up.id AND last_follow_up.deleted_at IS NULL
|
36
|
+
LEFT JOIN educode_sales_assign_follow_ups ON educode_sales_assign_follow_ups.follow_up_id = last_follow_up.id").
|
37
|
+
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][:staff_manages], params[:q][:staff_manages])
|
38
|
+
end
|
39
|
+
|
32
40
|
if params[:q].present? && params[:q][:business].present?
|
33
41
|
@money_plans = @money_plans.where("educode_sales_businesses.name like ?", "%#{params[:q][:business]}%")
|
34
42
|
end
|
@@ -36,6 +44,16 @@ module EducodeSales
|
|
36
44
|
@money_plans = @money_plans.joins(business: :school).where("schools.name like ?", "%#{params[:q][:school]}%")
|
37
45
|
end
|
38
46
|
|
47
|
+
if params[:q].present? && params[:q][:property].present?
|
48
|
+
# 客户类型
|
49
|
+
@money_plans = @money_plans.joins(business: [department: [school: :school_tags]]).where("school_tags.id = ?", params[:q][:property])
|
50
|
+
end
|
51
|
+
|
52
|
+
if params[:q] && params[:q][:date_at].present?
|
53
|
+
date = params[:q][:date_at].split(" - ")
|
54
|
+
@money_plans = @money_plans.where("date_at >= ? AND date_at <= ?", date[0], date[1])
|
55
|
+
end
|
56
|
+
|
39
57
|
if params[:sort].present? && params[:sort][:field]
|
40
58
|
@money_plans = @money_plans.order("#{params[:sort][:field]} #{params[:sort][:order]}")
|
41
59
|
else
|
@@ -53,6 +71,8 @@ module EducodeSales
|
|
53
71
|
format.html do
|
54
72
|
common = Common.find_by(clazz: 'staff_type', name: '销售')
|
55
73
|
@staffs = Staff.joins(:user).where(job_type: common.id).map { |d| [d.user.real_name, d.id]}
|
74
|
+
|
75
|
+
gon.staffs = Staff.joins(:user).where(job_type: common.id).map { |d| {name: d.user.real_name, value: d.id } }
|
56
76
|
gon.edit_money_plan = can?(:update, EducodeSales::MoneyPlan)
|
57
77
|
gon.edit_money_plan_self = can?(:update_self, EducodeSales::MoneyPlan)
|
58
78
|
gon.staff_id = @current_admin.id
|
@@ -87,6 +87,24 @@
|
|
87
87
|
</select>
|
88
88
|
</div>
|
89
89
|
</div>
|
90
|
+
<div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
91
|
+
<label class="layui-form-label">客户类型</label>
|
92
|
+
<div class="layui-input-inline">
|
93
|
+
<%= select_tag "property", options_for_select(SchoolTag.where(for_missions: true).pluck(:name, :id)), { include_blank: true } %>
|
94
|
+
</div>
|
95
|
+
</div>
|
96
|
+
<div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
97
|
+
<label class="layui-form-label">验收时间</label>
|
98
|
+
<div class="layui-input-inline">
|
99
|
+
<input type="text" class="layui-input" id="reception_at" name="reception_at" placeholder=" - " autocomplete="off">
|
100
|
+
</div>
|
101
|
+
</div>
|
102
|
+
<div class="layui-inline show_item_contract" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
103
|
+
<label class="layui-form-label">部署时间</label>
|
104
|
+
<div class="layui-input-inline">
|
105
|
+
<input type="text" class="layui-input" id="p_deploy_time" name="p_deploy_time" placeholder=" - " autocomplete="off">
|
106
|
+
</div>
|
107
|
+
</div>
|
90
108
|
<div class="layui-inline">
|
91
109
|
<button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
|
92
110
|
</button>
|
@@ -110,7 +128,9 @@
|
|
110
128
|
<% if can? :assign_contract, EducodeSales::Business %>
|
111
129
|
<a class="layui-btn layui-btn-default layui-btn-xs data-count-edit" lay-event="assign">指派售后</a>
|
112
130
|
<% end %>
|
113
|
-
|
131
|
+
<% if can? :new_sales_detail, EducodeSales::Business %>
|
132
|
+
<a class="layui-btn layui-btn-default layui-btn-xs data-count-edit" lay-event="add_sales">添加销售明细</a>
|
133
|
+
<% end %>
|
114
134
|
|
115
135
|
</script>
|
116
136
|
|
@@ -139,6 +159,16 @@
|
|
139
159
|
range: true
|
140
160
|
});
|
141
161
|
|
162
|
+
laydate.render({
|
163
|
+
elem: '#reception_at',
|
164
|
+
range: true
|
165
|
+
});
|
166
|
+
|
167
|
+
laydate.render({
|
168
|
+
elem: '#p_deploy_time',
|
169
|
+
range: true
|
170
|
+
});
|
171
|
+
|
142
172
|
laydate.render({
|
143
173
|
elem: '#bidded_date',
|
144
174
|
range: true,
|
@@ -102,8 +102,12 @@
|
|
102
102
|
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="idea_recycle_s">恢复</a>
|
103
103
|
<% end %>
|
104
104
|
{{# }else{}}
|
105
|
-
|
106
|
-
|
105
|
+
<% if can? :assign, EducodeSales::Idea %>
|
106
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="assign">指派协作人</a>
|
107
|
+
<%end %>
|
108
|
+
<% if can? :assign_sale_staff, EducodeSales::Idea %>
|
109
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="assign_sale_staff">指派方案经理</a>
|
110
|
+
<% end %>
|
107
111
|
<% if can? :add_follow, EducodeSales::Idea %>
|
108
112
|
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-add_follow" lay-event="add_follows">添加跟进</a>
|
109
113
|
<% end %>
|
@@ -14,6 +14,24 @@
|
|
14
14
|
<input type="text" name="school" class="layui-input">
|
15
15
|
</div>
|
16
16
|
</div>
|
17
|
+
<div class="layui-inline">
|
18
|
+
<label class="layui-form-label">销售经理</label>
|
19
|
+
<div class="layui-input-inline">
|
20
|
+
<div id="plan_staff_manages" style="width: 190px;"></div>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
<div class="layui-inline">
|
24
|
+
<label class="layui-form-label">客户类型</label>
|
25
|
+
<div class="layui-input-inline">
|
26
|
+
<%= select_tag "property", options_for_select(SchoolTag.where(for_missions: true).pluck(:name, :id)), { include_blank: true } %>
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
<div class="layui-inline">
|
30
|
+
<label class="layui-form-label" style="width: 120px">计划回款时间</label>
|
31
|
+
<div class="layui-input-inline">
|
32
|
+
<input type="text" name="date_at" class="layui-input" id="date">
|
33
|
+
</div>
|
34
|
+
</div>
|
17
35
|
<div class="layui-inline">
|
18
36
|
<button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
|
19
37
|
</button>
|
@@ -47,10 +65,11 @@
|
|
47
65
|
</script>
|
48
66
|
|
49
67
|
<script>
|
50
|
-
layui.use(['form', 'table', 'miniPage', 'element', 'request'], function() {
|
68
|
+
layui.use(['form', 'table', 'miniPage', 'element', 'request', 'xmSelect'], function() {
|
51
69
|
var $ = layui.jquery,
|
52
70
|
form = layui.form,
|
53
71
|
request = layui.request,
|
72
|
+
xmSelect = layui.xmSelect,
|
54
73
|
miniPage = layui.miniPage;
|
55
74
|
laydate = layui.laydate;
|
56
75
|
table = layui.table;
|
@@ -61,7 +80,12 @@
|
|
61
80
|
});
|
62
81
|
|
63
82
|
|
64
|
-
|
83
|
+
var staff_manages_list = xmSelect.render({
|
84
|
+
el: '#plan_staff_manages',
|
85
|
+
data: gon.staffs,
|
86
|
+
filterable: true,
|
87
|
+
radio: true,
|
88
|
+
})
|
65
89
|
table.render({
|
66
90
|
elem: '#money_plan_table',
|
67
91
|
url: '/missions/money_plans',
|
@@ -89,6 +113,11 @@
|
|
89
113
|
field: 'school',
|
90
114
|
width: 180,
|
91
115
|
title: '客户名称'
|
116
|
+
},
|
117
|
+
{
|
118
|
+
field: 'property',
|
119
|
+
width: 150,
|
120
|
+
title: '客户类型',
|
92
121
|
}, {
|
93
122
|
field: 'staff_manages',
|
94
123
|
width: 120,
|
@@ -176,7 +205,8 @@
|
|
176
205
|
|
177
206
|
// 监听搜索操作
|
178
207
|
form.on('submit(search_teachers)', function(data) {
|
179
|
-
search = data.field
|
208
|
+
search = data.field;
|
209
|
+
search.staff_manages = staff_manages_list.getValue('valueStr');
|
180
210
|
table.reload('money_plan_table', {
|
181
211
|
page: {
|
182
212
|
curr: 1
|
@@ -34,6 +34,12 @@ json.data do
|
|
34
34
|
end
|
35
35
|
json.claim_num d['claim_num']
|
36
36
|
|
37
|
+
if d.business.department&.school
|
38
|
+
json.property d.business.department.school.school_tags.where(for_missions: true).pluck(:name).join("、")
|
39
|
+
else
|
40
|
+
json.property ''
|
41
|
+
end
|
42
|
+
|
37
43
|
json.return_money (d['return_money'] || 0).round(6)
|
38
44
|
json.residue_money ((d.amount - d['return_money'].to_f) > 0 ? d.amount - d['return_money'].to_f : 0).round(6)
|
39
45
|
if d['claim_num'] > 0
|
@@ -122,7 +122,9 @@
|
|
122
122
|
<% if can? :create, EducodeSales::TeacherFollow %>
|
123
123
|
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
|
124
124
|
<% end %>
|
125
|
-
|
125
|
+
<% if can? :assign, EducodeSales::Teacher %>
|
126
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="assign">指派生态经理</a>
|
127
|
+
<% end %>
|
126
128
|
<% if @more %>
|
127
129
|
<a class="layui-btn-xs data-count-edit more-btn" data-name={{d.name}} data-id={{d.id}}>更多<i class="layui-icon layui-icon-down layui-nav-more"></i></a>
|
128
130
|
<% 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.31
|
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-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -105,6 +105,7 @@ 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
|
108
109
|
- app/assets/images/educode_sales/loading-0.gif
|
109
110
|
- app/assets/images/educode_sales/loading-1.gif
|
110
111
|
- app/assets/images/educode_sales/loading-2.gif
|
@@ -757,7 +758,7 @@ homepage: https://www.educoder.net
|
|
757
758
|
licenses:
|
758
759
|
- MIT
|
759
760
|
metadata: {}
|
760
|
-
post_install_message:
|
761
|
+
post_install_message:
|
761
762
|
rdoc_options: []
|
762
763
|
require_paths:
|
763
764
|
- lib
|
@@ -773,7 +774,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
773
774
|
version: '0'
|
774
775
|
requirements: []
|
775
776
|
rubygems_version: 3.0.9
|
776
|
-
signing_key:
|
777
|
+
signing_key:
|
777
778
|
specification_version: 4
|
778
779
|
summary: Summary of EducodeSales.
|
779
780
|
test_files: []
|