educode_sales 0.9.55 → 0.9.56
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/assessments_controller.rb +12 -5
- data/app/controllers/educode_sales/businesses_controller.rb +19 -3
- data/app/models/educode_sales/assessments_setting.rb +29 -13
- data/app/views/educode_sales/assessments/_finished.html.erb +6 -6
- data/app/views/educode_sales/assessments/_setup.html.erb +294 -66
- data/app/views/educode_sales/assessments/edit.html.erb +233 -121
- data/app/views/educode_sales/assessments/index.json.jbuilder +22 -1
- data/app/views/educode_sales/assessments/new.html.erb +259 -105
- data/app/views/educode_sales/businesses/_contract.html.erb +1007 -0
- data/app/views/educode_sales/businesses/get_export_data.json.jbuilder +1 -0
- data/app/views/educode_sales/businesses/index.html.erb +58 -8
- data/app/views/educode_sales/businesses/index.json.jbuilder +2 -1
- data/app/views/educode_sales/teachers/_index.html.erb +1 -1
- data/app/views/educode_sales/teachers/edit.html.erb +0 -7
- data/app/views/educode_sales/teachers/index.json.jbuilder +2 -2
- data/app/views/educode_sales/teachers/new.html.erb +0 -6
- data/db/migrate/20230306131055_add_score_to_assessments_settings.rb +26 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +8 -7
- data/app/assets/images/educode_sales/indexlogo.png +0 -0
@@ -24,6 +24,7 @@ json.data do
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
+
json.staff_manages d.last_follow_up&.assign_follow_ups.present? ? (d.last_follow_up.assign_follow_ups.map{ |d| d.staff.user.real_name}.join("、")) : d.staff&.user&.real_name
|
27
28
|
json.divide_rate d.divide_rate
|
28
29
|
json.divide_money d.divide_amount
|
29
30
|
json.budget_amount d.budget_amount
|
@@ -2,6 +2,9 @@
|
|
2
2
|
<ul class="layui-tab-title">
|
3
3
|
<li class="layui-this follows_li">跟进动态</li>
|
4
4
|
<li class="businesses_list_li" >商机列表</li>
|
5
|
+
<% if can?(:contract_business, EducodeSales::Business) %>
|
6
|
+
<li class="businesses_contract_li" >合同管理</li>
|
7
|
+
<% end %>
|
5
8
|
</ul>
|
6
9
|
<div class="layui-tab-content">
|
7
10
|
<div class="layui-tab-item follows_div layui-show">
|
@@ -136,6 +139,11 @@
|
|
136
139
|
</div>
|
137
140
|
</div>
|
138
141
|
</div>
|
142
|
+
<% if can?(:contract_business, EducodeSales::Business) %>
|
143
|
+
<div class="layui-tab-item businesses_contract_div">
|
144
|
+
<%=render 'contract' %>
|
145
|
+
</div>
|
146
|
+
<% end %>
|
139
147
|
</div>
|
140
148
|
</div>
|
141
149
|
<script type="text/html" id="bussinessBar">
|
@@ -158,10 +166,13 @@
|
|
158
166
|
<button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right area-btn" lay-event="area">区域管理商机</button>
|
159
167
|
<% end %>
|
160
168
|
<button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right all-btn" lay-event="all"> 全部商机</button>
|
169
|
+
<% if can?(:delete_list, EducodeSales::Business) %>
|
170
|
+
<button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right delete-btn" lay-event="delete_list">删除的商机</button>
|
171
|
+
<% end %>
|
161
172
|
</div>
|
162
173
|
</script>
|
163
174
|
<script type="text/html" id="currentTableBar">
|
164
|
-
<%unless !can?(:add_follow, EducodeSales::Business) && can?(:self_add_follow, EducodeSales::Business)%>
|
175
|
+
<%unless !can?(:add_follow, EducodeSales::Business) && can?(:self_add_follow, EducodeSales::Business) %>
|
165
176
|
<% if can? :add_follow, EducodeSales::Business %>
|
166
177
|
<% if @current_admin.is_admin %>
|
167
178
|
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
|
@@ -418,6 +429,12 @@
|
|
418
429
|
title: '阶段',
|
419
430
|
hide: gon.filter.stage
|
420
431
|
},
|
432
|
+
{
|
433
|
+
field: 'staff_manages',
|
434
|
+
width: 150,
|
435
|
+
title: '销售经理',
|
436
|
+
hide: gon.filter.staff_manages
|
437
|
+
},
|
421
438
|
{
|
422
439
|
field: 'source',
|
423
440
|
width: 90,
|
@@ -590,7 +607,7 @@
|
|
590
607
|
minWidth: 220,
|
591
608
|
toolbar: '#currentTableBar',
|
592
609
|
align: "center",
|
593
|
-
fixed: 'right'
|
610
|
+
fixed: 'right'
|
594
611
|
}
|
595
612
|
]
|
596
613
|
]
|
@@ -981,6 +998,8 @@
|
|
981
998
|
$(".s-btn").addClass("selected-btn");
|
982
999
|
} else if (search['clazz'] == 'area') {
|
983
1000
|
$(".area-btn").addClass("selected-btn");
|
1001
|
+
} else if (search['clazz'] == 'delete_list') {
|
1002
|
+
$(".delete-btn").addClass("selected-btn");
|
984
1003
|
} else {
|
985
1004
|
$(".all-btn").addClass("selected-btn");
|
986
1005
|
}
|
@@ -1037,7 +1056,6 @@
|
|
1037
1056
|
})
|
1038
1057
|
});
|
1039
1058
|
}
|
1040
|
-
|
1041
1059
|
if (obj.event === 'add') { // 监听添加操作
|
1042
1060
|
var content = miniPage.getHrefContent('/missions/businesses/new');
|
1043
1061
|
var openWH = miniPage.getOpenWidthHeight();
|
@@ -1061,7 +1079,9 @@
|
|
1061
1079
|
page: {
|
1062
1080
|
curr: 1
|
1063
1081
|
},
|
1064
|
-
where: {q: search, sort: sort}
|
1082
|
+
where: {q: search, sort: sort},
|
1083
|
+
done: function(res, curr, count){
|
1084
|
+
}
|
1065
1085
|
}, 'data');
|
1066
1086
|
form.val('search_form', {
|
1067
1087
|
name: '', department: '', staff_id: '', business_type: '', business_step: '',
|
@@ -1077,7 +1097,9 @@
|
|
1077
1097
|
page: {
|
1078
1098
|
curr: 1
|
1079
1099
|
},
|
1080
|
-
where: {q: search, sort: sort}
|
1100
|
+
where: {q: search, sort: sort},
|
1101
|
+
done: function(res, curr, count){
|
1102
|
+
}
|
1081
1103
|
}, 'data');
|
1082
1104
|
form.val('search_form', {
|
1083
1105
|
name: '', department: '', staff_id: '', business_type: '', business_step: '',
|
@@ -1094,7 +1116,9 @@
|
|
1094
1116
|
page: {
|
1095
1117
|
curr: 1
|
1096
1118
|
},
|
1097
|
-
where: {q: search, sort: sort}
|
1119
|
+
where: {q: search, sort: sort},
|
1120
|
+
done: function(res, curr, count){
|
1121
|
+
}
|
1098
1122
|
}, 'data');
|
1099
1123
|
form.val('search_form', {
|
1100
1124
|
name: '', department: '', staff_id: '', business_type: '', business_step: '',
|
@@ -1111,7 +1135,9 @@
|
|
1111
1135
|
page: {
|
1112
1136
|
curr: 1
|
1113
1137
|
},
|
1114
|
-
where: {q: search, sort: sort}
|
1138
|
+
where: {q: search, sort: sort},
|
1139
|
+
done: function(res, curr, count){
|
1140
|
+
}
|
1115
1141
|
}, 'data');
|
1116
1142
|
form.val('search_form', {
|
1117
1143
|
name: '', department: '', staff_id: '', business_type: '', business_step: '',
|
@@ -1128,7 +1154,9 @@
|
|
1128
1154
|
page: {
|
1129
1155
|
curr: 1
|
1130
1156
|
},
|
1131
|
-
where: {q: search, sort: sort}
|
1157
|
+
where: {q: search, sort: sort},
|
1158
|
+
done: function(res, curr, count){
|
1159
|
+
}
|
1132
1160
|
}, 'data');
|
1133
1161
|
form.val('search_form', {
|
1134
1162
|
name: '', department: '', staff_id: '', business_type: '', business_step: '',
|
@@ -1137,6 +1165,28 @@
|
|
1137
1165
|
$(".area-btn").addClass("selected-btn");
|
1138
1166
|
return false;
|
1139
1167
|
}
|
1168
|
+
else if (obj.event === 'delete_list') {
|
1169
|
+
$(".layui-table-col-special").hide();
|
1170
|
+
search = {"clazz": "delete_list"}
|
1171
|
+
business_type_list.setValue([])
|
1172
|
+
table.reload('businesses_table', {
|
1173
|
+
url: '/missions/businesses',
|
1174
|
+
page: {
|
1175
|
+
curr: 1
|
1176
|
+
},
|
1177
|
+
where: {q: search, sort: sort}
|
1178
|
+
,done: function(res, curr, count){
|
1179
|
+
$(".layui-table-col-special").hide();
|
1180
|
+
}
|
1181
|
+
}, 'data');
|
1182
|
+
form.val('search_form', {
|
1183
|
+
name: '', department: '', staff_id: '', business_type: '', business_step: '',
|
1184
|
+
place_id: '', date: '', area: ''
|
1185
|
+
})
|
1186
|
+
$(".delete-btn").addClass("selected-btn");
|
1187
|
+
|
1188
|
+
return false;
|
1189
|
+
}
|
1140
1190
|
else if (obj.event === 'delete') {
|
1141
1191
|
var checkStatus = table.checkStatus('currentTableId'),
|
1142
1192
|
data = checkStatus.data;
|
@@ -23,7 +23,8 @@ json.data do
|
|
23
23
|
json.service_end_time d.last_follow_up&.service_start_time.to_s + "-" + d.last_follow_up&.service_end_time.to_s
|
24
24
|
json.created_at d.created_at.to_s
|
25
25
|
json.no_followup_days (d['latest_time'] ? DateTime.parse(Time.now.strftime("%Y-%m-%d")) - DateTime.parse(d['latest_time'].strftime("%Y-%m-%d")) : DateTime.parse(Time.now.strftime("%Y-%m-%d")) - DateTime.parse(d.created_at.strftime("%Y-%m-%d"))).to_i
|
26
|
-
|
26
|
+
|
27
|
+
json.staff_manages d.last_follow_up&.assign_follow_ups.present? ? (d.last_follow_up.assign_follow_ups.map{ |d| d.staff.user.real_name}.join("、")) : d.staff&.user&.real_name
|
27
28
|
json.divide_rate d.divide_rate
|
28
29
|
json.divide_money d.divide_amount.to_f.round(2)
|
29
30
|
json.budget_amount d.budget_amount.to_f.round(2) #d.follow_ups.where(stage_id: @budget_stage_ids).order("created_at desc").first&.total_amount&.round(2) || 0
|
@@ -37,13 +37,6 @@
|
|
37
37
|
</div>
|
38
38
|
</div>
|
39
39
|
<br>
|
40
|
-
<div class="layui-inline">
|
41
|
-
<label class="layui-form-label ">手机号</label>
|
42
|
-
<div class="layui-input-block" style="width: 188px;">
|
43
|
-
<input type="text" name="mobile" autocomplete="off" class="layui-input" placeholder="请输入手机号" value="<%= @teacher.mobile %>">
|
44
|
-
</div>
|
45
|
-
</div>
|
46
|
-
<br>
|
47
40
|
<div class="layui-inline">
|
48
41
|
<label class="layui-form-label required">单位部门</label>
|
49
42
|
<div class="layui-input-block" id="add_department2" style="width: 400px"></div>
|
@@ -20,9 +20,9 @@ json.data do
|
|
20
20
|
json.actives d.actives
|
21
21
|
json.experience d['experience'] || 0
|
22
22
|
json.grade d['grade'] || 0
|
23
|
-
json.mobile d.
|
23
|
+
json.mobile d.user&.phone || ''
|
24
24
|
json.students d.students_count
|
25
|
-
json.followup_at d.
|
25
|
+
json.followup_at d.follow_up&.created_at&.to_s
|
26
26
|
json.latest_time (d['latest_time'] ? DateTime.parse(Time.now.strftime("%Y-%m-%d")) - DateTime.parse(d['latest_time'].strftime("%Y-%m-%d")) : DateTime.parse(Time.now.strftime("%Y-%m-%d")) - DateTime.parse(d.created_at.strftime("%Y-%m-%d"))).to_i
|
27
27
|
|
28
28
|
json.staff_manage @staff_manages[d.department&.school&.province]&.join(",")
|
@@ -33,12 +33,6 @@
|
|
33
33
|
<%= select_tag "source_id", options_for_select(EducodeSales::Common.where(clazz: 'teacher_source').pluck(:name, :id)), { include_blank: true } %>
|
34
34
|
</div>
|
35
35
|
</div>
|
36
|
-
<div class="layui-inline">
|
37
|
-
<label class="layui-form-label ">手机号</label>
|
38
|
-
<div class="layui-input-block" style="width: 188px;">
|
39
|
-
<input type="text" name="mobile" autocomplete="off" class="layui-input" placeholder="请输入手机号">
|
40
|
-
</div>
|
41
|
-
</div>
|
42
36
|
<div class="layui-inline">
|
43
37
|
<label class="layui-form-label ">微信号</label>
|
44
38
|
<div class="layui-input-block" style="width: 188px;">
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class AddScoreToAssessmentsSettings < ActiveRecord::Migration[5.2]
|
2
|
+
def change
|
3
|
+
add_column :educode_sales_assessments_settings, :first_quarter_score, :string
|
4
|
+
add_column :educode_sales_assessments_settings, :january_score, :string
|
5
|
+
add_column :educode_sales_assessments_settings, :february_score, :string
|
6
|
+
add_column :educode_sales_assessments_settings, :march_score, :string
|
7
|
+
add_column :educode_sales_assessments_settings, :second_quarter_score, :string
|
8
|
+
add_column :educode_sales_assessments_settings, :april_score, :string
|
9
|
+
add_column :educode_sales_assessments_settings, :may_score, :string
|
10
|
+
add_column :educode_sales_assessments_settings, :june_score, :string
|
11
|
+
add_column :educode_sales_assessments_settings, :third_quarter_score, :string
|
12
|
+
add_column :educode_sales_assessments_settings, :july_score, :string
|
13
|
+
add_column :educode_sales_assessments_settings, :august_score, :string
|
14
|
+
add_column :educode_sales_assessments_settings, :september_score, :string
|
15
|
+
add_column :educode_sales_assessments_settings, :fourth_quarter_score, :string
|
16
|
+
add_column :educode_sales_assessments_settings, :october_score, :string
|
17
|
+
add_column :educode_sales_assessments_settings, :november_score, :string
|
18
|
+
add_column :educode_sales_assessments_settings, :december_score, :string
|
19
|
+
|
20
|
+
|
21
|
+
add_column :educode_sales_assessments_settings, :total_score, :string
|
22
|
+
add_column :educode_sales_assessments_settings, :cycle, :integer, default: 1
|
23
|
+
|
24
|
+
EducodeSales::Permission.find_or_create_by(name: '合同管理', subject: 'Business', action: 'contract_business', clazz: 'business', position: '15')
|
25
|
+
end
|
26
|
+
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: 0.9.
|
4
|
+
version: 0.9.56
|
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-03-
|
11
|
+
date: 2023-03-07 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
|
@@ -247,6 +246,7 @@ files:
|
|
247
246
|
- app/views/educode_sales/assessments/index.json.jbuilder
|
248
247
|
- app/views/educode_sales/assessments/new.html.erb
|
249
248
|
- app/views/educode_sales/assessments/progress.json.jbuilder
|
249
|
+
- app/views/educode_sales/businesses/_contract.html.erb
|
250
250
|
- app/views/educode_sales/businesses/_follows.html.erb
|
251
251
|
- app/views/educode_sales/businesses/daily_paper.html.erb
|
252
252
|
- app/views/educode_sales/businesses/edit.html.erb
|
@@ -554,6 +554,7 @@ files:
|
|
554
554
|
- db/migrate/20230220144737_add_clazz_id_to_business.rb
|
555
555
|
- db/migrate/20230227061043_create_educode_sales_ideas.rb
|
556
556
|
- db/migrate/20230228063555_create_educode_sales_idea_histories.rb
|
557
|
+
- db/migrate/20230306131055_add_score_to_assessments_settings.rb
|
557
558
|
- lib/educode_sales.rb
|
558
559
|
- lib/educode_sales/engine.rb
|
559
560
|
- lib/educode_sales/version.rb
|
@@ -562,7 +563,7 @@ homepage: https://www.educoder.net
|
|
562
563
|
licenses:
|
563
564
|
- MIT
|
564
565
|
metadata: {}
|
565
|
-
post_install_message:
|
566
|
+
post_install_message:
|
566
567
|
rdoc_options: []
|
567
568
|
require_paths:
|
568
569
|
- lib
|
@@ -577,8 +578,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
577
578
|
- !ruby/object:Gem::Version
|
578
579
|
version: '0'
|
579
580
|
requirements: []
|
580
|
-
rubygems_version: 3.0.
|
581
|
-
signing_key:
|
581
|
+
rubygems_version: 3.0.0
|
582
|
+
signing_key:
|
582
583
|
specification_version: 4
|
583
584
|
summary: Summary of EducodeSales.
|
584
585
|
test_files: []
|
Binary file
|