educode_sales 0.9.44 → 0.9.46
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/customers_controller.rb +76 -12
- data/app/models/educode_sales/customer_add.rb +11 -0
- data/app/views/educode_sales/customers/edit_department.html.erb +118 -0
- data/app/views/educode_sales/customers/index.html.erb +75 -4
- data/app/views/educode_sales/customers/index.json.jbuilder +3 -1
- data/app/views/educode_sales/customers/majors.json.jbuilder +10 -0
- data/app/views/educode_sales/customers/new_major.html.erb +40 -0
- data/app/views/educode_sales/customers/show_department.json.jbuilder +1 -0
- data/app/views/educode_sales/customers/show_follow.html.erb +6 -1
- data/app/views/educode_sales/staffs/edit.html.erb +2 -2
- data/config/routes.rb +6 -0
- data/db/migrate/20210902064109_create_educode_sales_role_permissions.rb +3 -0
- data/db/migrate/20230215141612_add_mobile_to_teachers.rb +5 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +9 -7
- 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: 7444b7d61d8ff5a5677b765e4d0580a49a3b425de52ffec51e0f4bce62b5d125
|
4
|
+
data.tar.gz: 2752a018874ad957014ceff871ee1ef7cb77d8ea0300c0da9a1112344c579d51
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a4e87f3e97aa8604d7656e36e044943129e6ee19414bc5a2ba2d6d5d1f8150797d9a0cd0e254693f74535cde2d1f9aa9eb27027cdb2f6dfae548c3bd1276435
|
7
|
+
data.tar.gz: 05c6ce1070251dd40fb903ef901517228ebaddaa7690d84ac94f141768e6c065c0c31b7785d0eea71dc9aacba98ff548fb699b6a595a5877056c9b2a308c84d4
|
@@ -33,6 +33,25 @@ module EducodeSales
|
|
33
33
|
render_success
|
34
34
|
end
|
35
35
|
|
36
|
+
def majors
|
37
|
+
department = Department.find(params[:id])
|
38
|
+
@majors = department.department_majors
|
39
|
+
end
|
40
|
+
|
41
|
+
def major
|
42
|
+
department = Department.find(params[:id])
|
43
|
+
major = department.department_majors.new(name: params[:name])
|
44
|
+
if major.save
|
45
|
+
render_success
|
46
|
+
else
|
47
|
+
render_failure major
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def new_major
|
52
|
+
render layout: false
|
53
|
+
end
|
54
|
+
|
36
55
|
def index
|
37
56
|
authorize! :read, Customer
|
38
57
|
respond_to do |format|
|
@@ -128,11 +147,35 @@ module EducodeSales
|
|
128
147
|
@customers = @customers.where(id: school_ids)
|
129
148
|
end
|
130
149
|
|
131
|
-
|
150
|
+
if params[:page].present?
|
151
|
+
@customers = @customers.order(id: :desc).page(params[:page]).per(params[:limit])
|
152
|
+
else
|
153
|
+
@customers = @customers.order(id: :desc)
|
154
|
+
end
|
132
155
|
end
|
133
156
|
end
|
134
157
|
end
|
135
158
|
|
159
|
+
def update_major
|
160
|
+
department = Department.find(params[:id])
|
161
|
+
major = department.department_majors.find(params[:major_id])
|
162
|
+
if major.update(name: params[:name])
|
163
|
+
render_success
|
164
|
+
else
|
165
|
+
render_failure major
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
def delete_major
|
170
|
+
department = Department.find(params[:id])
|
171
|
+
major = department.department_majors.find(params[:major_id])
|
172
|
+
if major.destroy
|
173
|
+
render_success
|
174
|
+
else
|
175
|
+
render_failure major
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
136
179
|
def give
|
137
180
|
common = Common.find_by(clazz: 'staff_type', name: '销售')
|
138
181
|
@staffs = Staff.joins(:user).where(job_type: common.id).map { |d| [d.user.real_name, d.id] }
|
@@ -213,6 +256,36 @@ module EducodeSales
|
|
213
256
|
render layout: false
|
214
257
|
end
|
215
258
|
|
259
|
+
def batch_update_school_tags
|
260
|
+
xlsx = Roo::Spreadsheet.open(params[:file])
|
261
|
+
ods = xlsx.sheet(0)
|
262
|
+
rows = ods.last_row - 1
|
263
|
+
i = 0
|
264
|
+
school_tag_hash = SchoolTag.where(for_missions: true).pluck(:name, :id).to_h
|
265
|
+
rows.times do |r| #行数
|
266
|
+
i += 1
|
267
|
+
next unless ods.row(r+1)[0]
|
268
|
+
school = School.find_by(name: ods.row(r+1)[0].to_s.strip)
|
269
|
+
school_list = EducodeSales::CustomerAdd::SCHOOL_LIST.invert
|
270
|
+
if school
|
271
|
+
property_names = ods.row(r+1)[2].to_s.strip
|
272
|
+
tags = []
|
273
|
+
if property_names
|
274
|
+
property_names.gsub("、", " ").gsub(",", " ").split(" ").each do |tag|
|
275
|
+
if school_tag_hash[tag]
|
276
|
+
tags << SchoolTagMiddle.find_or_initialize_by(school_id: school.id, school_tag_id: school_tag_hash[tag])
|
277
|
+
end
|
278
|
+
end
|
279
|
+
end
|
280
|
+
school.school_tag_middles = tags
|
281
|
+
end
|
282
|
+
end
|
283
|
+
|
284
|
+
SchoolTagMiddle.where(school_id: nil).delete_all
|
285
|
+
|
286
|
+
render json: { succcess: true}
|
287
|
+
end
|
288
|
+
|
216
289
|
def update
|
217
290
|
@school = School.find(params[:id])
|
218
291
|
ActiveRecord::Base.transaction do
|
@@ -236,20 +309,11 @@ module EducodeSales
|
|
236
309
|
#保存学校标签
|
237
310
|
|
238
311
|
keys = %w[regular_college junior_college secondary_school military_school other mid_school ele_school enterprise]
|
239
|
-
names =
|
240
|
-
"regular_college" => "本科院校",
|
241
|
-
"junior_college" => "高职院校",
|
242
|
-
"secondary_school" => "中职院校",
|
243
|
-
"military_school" => "军事院校",
|
244
|
-
"other" => "其他",
|
245
|
-
"mid_school" => "中学",
|
246
|
-
"ele_school" => "小学",
|
247
|
-
"enterprise" => "企业"
|
248
|
-
}
|
312
|
+
names = EducodeSales::CustomerAdd::SCHOOL_LIST
|
249
313
|
property.attributes.each do |key, value|
|
250
314
|
next unless key.in?(keys)
|
251
315
|
next unless value.to_s == "true"
|
252
|
-
school_tag = SchoolTag.
|
316
|
+
school_tag = SchoolTag.find_by(name: names[key], for_missions: true)
|
253
317
|
if school_tag.present?
|
254
318
|
SchoolTagMiddle.create(school_id: @school.id, school_tag_id: school_tag.id)
|
255
319
|
end
|
@@ -1,4 +1,15 @@
|
|
1
1
|
module EducodeSales
|
2
2
|
class CustomerAdd < ApplicationRecord
|
3
|
+
|
4
|
+
SCHOOL_LIST = {
|
5
|
+
"regular_college" => "本科院校",
|
6
|
+
"junior_college" => "高职院校",
|
7
|
+
"secondary_school" => "中职院校",
|
8
|
+
"military_school" => "军事院校",
|
9
|
+
"other" => "其他",
|
10
|
+
"mid_school" => "中学",
|
11
|
+
"ele_school" => "小学",
|
12
|
+
"enterprise" => "企业"
|
13
|
+
}
|
3
14
|
end
|
4
15
|
end
|
@@ -16,7 +16,24 @@
|
|
16
16
|
</div>
|
17
17
|
</div>
|
18
18
|
</form>
|
19
|
+
<div>
|
20
|
+
<table class="layui-hide" id="major_table" lay-filter="major_table"></table>
|
21
|
+
</div>
|
19
22
|
</div>
|
23
|
+
<script type="text/html" id="add_major">
|
24
|
+
<div class="layui-btn-container">
|
25
|
+
<span class="table-label">专业列表</span>
|
26
|
+
<% if can? :create_department, EducodeSales::Customer %>
|
27
|
+
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add">添加专业</button>
|
28
|
+
<% end %>
|
29
|
+
</div>
|
30
|
+
</script>
|
31
|
+
<script type="text/html" id="tab_major">
|
32
|
+
<% if can? :update_department, EducodeSales::Customer %>
|
33
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
|
34
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs layui-btn-danger data-count-delete" lay-event="del">删除</a>
|
35
|
+
<% end %>
|
36
|
+
</script>
|
20
37
|
|
21
38
|
<script>
|
22
39
|
|
@@ -50,5 +67,106 @@
|
|
50
67
|
})
|
51
68
|
return false;
|
52
69
|
});
|
70
|
+
|
71
|
+
table.render({
|
72
|
+
elem: '#major_table',
|
73
|
+
url: '/missions/customers/majors?id=' + parent.department_id ,
|
74
|
+
toolbar: '#add_major',
|
75
|
+
defaultToolbar: [],
|
76
|
+
cols: [
|
77
|
+
[
|
78
|
+
{
|
79
|
+
field: 'id',
|
80
|
+
width: 100,
|
81
|
+
title:'序号',type: 'numbers',
|
82
|
+
},
|
83
|
+
{
|
84
|
+
field: 'name',
|
85
|
+
title: '专业',
|
86
|
+
},
|
87
|
+
{
|
88
|
+
title: '操作',
|
89
|
+
width: 190,
|
90
|
+
toolbar: '#tab_major',
|
91
|
+
align: "center",
|
92
|
+
fixed: 'right'
|
93
|
+
}
|
94
|
+
]
|
95
|
+
],
|
96
|
+
});
|
97
|
+
|
98
|
+
table.on('toolbar(major_table)', function (obj) {
|
99
|
+
if (obj.event === 'add') {
|
100
|
+
department_id = parent.department_id;
|
101
|
+
var content = miniPage.getHrefContent('/missions/customers/new_major?id=' + parent.department_id);
|
102
|
+
var openWH = miniPage.getOpenWidthHeight();
|
103
|
+
new_major_index = layer.open({
|
104
|
+
title: '添加专业',
|
105
|
+
type: 1,
|
106
|
+
shade: 0.2,
|
107
|
+
maxmin: true,
|
108
|
+
shadeClose: true,
|
109
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
110
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
111
|
+
content: content,
|
112
|
+
success: function (layero, index) {
|
113
|
+
form.render('select');
|
114
|
+
}
|
115
|
+
});
|
116
|
+
$(window).on("resize", function () {
|
117
|
+
layer.full(index);
|
118
|
+
});
|
119
|
+
}
|
53
120
|
});
|
121
|
+
table.on('tool(major_table)', function (obj) {
|
122
|
+
if (obj.event == 'edit') {
|
123
|
+
var index = layer.open({
|
124
|
+
title: '修改专业名称',
|
125
|
+
closeBtn: 0,
|
126
|
+
type: 1,
|
127
|
+
area: '400px;',
|
128
|
+
id: 'LAY_layuipro',
|
129
|
+
content: '<div class="layui-form" lay-filter="edit_data" style="padding: 20px;"><input autocomplete="off" type="text" name="name" lay-verify="required" class="layui-input" value="' + obj.data.name +'"/></div>' ,
|
130
|
+
btn: ['保存', '取消'],
|
131
|
+
btn1: function(index, l) {
|
132
|
+
if (l.find("input").val().trim() == '') {
|
133
|
+
layer.msg('名称不能为空')
|
134
|
+
return false;
|
135
|
+
} else {
|
136
|
+
request.authPut("missions/customers/" + parent.department_id + "/update_major", {name: l.find("input").val().trim(), major_id: obj.data.id}, function(res) {
|
137
|
+
if (res.success == false) {
|
138
|
+
layer.alert(res.msg);
|
139
|
+
} else {
|
140
|
+
table.reload('major_table');
|
141
|
+
parent.table.reload('sale_plan_follow_table');
|
142
|
+
layer.close(index);
|
143
|
+
}
|
144
|
+
})
|
145
|
+
}
|
146
|
+
|
147
|
+
return false
|
148
|
+
},
|
149
|
+
btn2: function(index, l) {
|
150
|
+
layer.close(index)
|
151
|
+
}
|
152
|
+
});
|
153
|
+
} else if (obj.event == 'del') {
|
154
|
+
var index = layer.open({
|
155
|
+
content: '确定删除该专业 ' + obj.data.name + ' 吗',
|
156
|
+
yes: function(index, layero){
|
157
|
+
request.authDelete("missions/customers/" + parent.department_id + "/delete_major?major_id=" + obj.data.id, {}, function(res) {
|
158
|
+
if (res.success == false) {
|
159
|
+
layer.alert(res.msg)
|
160
|
+
} else {
|
161
|
+
table.reload('major_table');
|
162
|
+
parent.table.reload('sale_plan_follow_table');
|
163
|
+
layer.close(index);
|
164
|
+
}
|
165
|
+
})
|
166
|
+
}
|
167
|
+
});
|
168
|
+
}
|
169
|
+
})
|
170
|
+
|
171
|
+
});
|
54
172
|
</script>
|
@@ -45,6 +45,12 @@
|
|
45
45
|
<script type="text/html" id="toolbarDemo">
|
46
46
|
<div class="layui-btn-container">
|
47
47
|
<span class="table-label">客户列表</span>
|
48
|
+
<% if can? :export, EducodeSales::Customer %>
|
49
|
+
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="export">导出</button>
|
50
|
+
<% end %>
|
51
|
+
<% if can? :modify_school_tag, EducodeSales::Customer %>
|
52
|
+
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" id="modify_customer">批量修改客户类型</button>
|
53
|
+
<% end %>
|
48
54
|
<% if can? :create, EducodeSales::Customer %>
|
49
55
|
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add">添加客户</button>
|
50
56
|
<% end %>
|
@@ -83,10 +89,11 @@
|
|
83
89
|
|
84
90
|
|
85
91
|
<script>
|
86
|
-
layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate'], function () {
|
92
|
+
layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate', 'upload'], function () {
|
87
93
|
var $ = layui.jquery,
|
88
94
|
form = layui.form,
|
89
95
|
request = layui.request,
|
96
|
+
upload = layui.upload,
|
90
97
|
dropdown = layui.dropdown,
|
91
98
|
miniPage = layui.miniPage,
|
92
99
|
laydate = layui.laydate;
|
@@ -114,12 +121,13 @@
|
|
114
121
|
});
|
115
122
|
|
116
123
|
table = layui.table;
|
117
|
-
table.render({
|
124
|
+
var customer_table = table.render({
|
118
125
|
elem: '#customers_table',
|
119
126
|
url: '/missions/customers',
|
120
127
|
where: {q: form.val('search_teachers')},
|
121
128
|
toolbar: '#toolbarDemo',
|
122
129
|
// totalRow:true,
|
130
|
+
title: '客户列表',
|
123
131
|
defaultToolbar: ['filter'],
|
124
132
|
cols: [
|
125
133
|
[
|
@@ -186,6 +194,11 @@
|
|
186
194
|
limit: 20,
|
187
195
|
limits: [10, 15, 20, 30, 40, 50, 60, 70, 80, 90],
|
188
196
|
page: true,
|
197
|
+
done: function() {
|
198
|
+
if ($('#modify_customer').length > 0) {
|
199
|
+
uploadCustomer();
|
200
|
+
}
|
201
|
+
}
|
189
202
|
});
|
190
203
|
|
191
204
|
//监听表格复选框选择
|
@@ -349,6 +362,22 @@
|
|
349
362
|
$(window).on("resize", function () {
|
350
363
|
layer.full(index);
|
351
364
|
});
|
365
|
+
} else if (obj.event == 'export') {
|
366
|
+
layer.load(0, {});
|
367
|
+
var data = form.val("search_teachers");
|
368
|
+
var property = [];
|
369
|
+
property_list.getValue().forEach(function (d) {
|
370
|
+
property.push(d.value);
|
371
|
+
})
|
372
|
+
data.property = property.toString();
|
373
|
+
request.authGet("/missions/customers?=" + $.param({q:data}), {
|
374
|
+
}, function (res) {
|
375
|
+
data = res.data
|
376
|
+
table.exportFile(customer_table.config.id, data, 'xls');
|
377
|
+
layer.closeAll('loading');
|
378
|
+
})
|
379
|
+
} else if (obj.event == 'modify_customer') {
|
380
|
+
|
352
381
|
}
|
353
382
|
});
|
354
383
|
|
@@ -503,11 +532,53 @@
|
|
503
532
|
}
|
504
533
|
});
|
505
534
|
|
535
|
+
function uploadCustomer() {
|
536
|
+
upload.render({
|
537
|
+
elem: '#modify_customer'
|
538
|
+
,url: '/missions/customers/batch_update_school_tags'
|
539
|
+
,accept: 'file' //普通文件
|
540
|
+
,acceptMime: 'application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel,application/vnd.ms-excel'
|
541
|
+
,headers: {
|
542
|
+
'X-CSRF-Token': $('meta[name=csrf-token]').attr('content')
|
543
|
+
}
|
544
|
+
,before: function(obj){
|
545
|
+
layer.load();
|
546
|
+
}
|
547
|
+
,done: function(res){
|
548
|
+
layer.msg('导入成功');
|
549
|
+
table.reload('customers_table');
|
550
|
+
layer.closeAll('loading'); //关闭loading
|
551
|
+
}
|
552
|
+
,error: function(index, upload){
|
553
|
+
table.reload('file');
|
554
|
+
layer.closeAll('loading'); //关闭loading
|
555
|
+
layer.alert('导入失败,请检查文件格式')
|
556
|
+
layer.close(parent.import_index)
|
557
|
+
}
|
558
|
+
});
|
559
|
+
}
|
560
|
+
if ($('#modify_customer').length > 0) {
|
561
|
+
var uploadTip;
|
562
|
+
$(document).on('mouseenter', '#modify_customer', function() {
|
563
|
+
uploadTip = layer.tips("<p style='color:#000;'>" + "导入Excel文件可批量修改客户性质。表格格式:客户名称 区域 性质。格式按导出的客户列表格式导入" + "</p>",
|
564
|
+
this,
|
565
|
+
{
|
566
|
+
tips:[1,'#f2f2f2'],
|
567
|
+
time:0,
|
568
|
+
area: 'auto',
|
569
|
+
maxWidth:500
|
570
|
+
});
|
571
|
+
})
|
572
|
+
|
573
|
+
$(document).on('mouseleave', '#modify_customer', function() {
|
574
|
+
layer.close(uploadTip);
|
575
|
+
})
|
576
|
+
}
|
577
|
+
|
506
578
|
});
|
507
579
|
</script>
|
508
580
|
<style>
|
509
581
|
.layui-table-tool-temp {
|
510
|
-
|
511
|
-
!important;
|
582
|
+
padding-right: 30px; !important;
|
512
583
|
}
|
513
584
|
</style>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<div class="layuimini-main">
|
2
|
+
<form class="layui-form layuimini-form">
|
3
|
+
<div class="layui-form-item" style="padding: 25px">
|
4
|
+
<div class="layui-form-item" style="padding: 25px">
|
5
|
+
<div class="layui-inline">
|
6
|
+
<label class="layui-form-label required">专业名称</label>
|
7
|
+
<div class="layui-input-block" style="width: 300px;">
|
8
|
+
<input type="text" name="name" required lay-verify="required" autocomplete="off" placeholder="请输入" class="layui-input" >
|
9
|
+
</div>
|
10
|
+
</div>
|
11
|
+
</div>
|
12
|
+
<div class="layui-form-item" style="padding-left: 130px">
|
13
|
+
<button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="add_major_btn">提交</button>
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
</form>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<script>
|
20
|
+
layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'selectInput', 'transfer'], function () {
|
21
|
+
var form = layui.form,
|
22
|
+
request = layui.request,
|
23
|
+
$ = layui.$;
|
24
|
+
|
25
|
+
form.on('submit(add_major_btn)', function (data) {
|
26
|
+
data.field.school_id = parent.school_id
|
27
|
+
request.authPost("missions/customers/"+ parent.department_id +"/major", data.field, function (res) {
|
28
|
+
if (res.success === false) {
|
29
|
+
layer.alert(res.msg)
|
30
|
+
} else {
|
31
|
+
layer.close(parent.new_department_index); //关闭所有层
|
32
|
+
parent.table.reload('major_table');
|
33
|
+
parent.table.reload('sale_plan_follow_table');
|
34
|
+
layer.close(parent.new_major_index);
|
35
|
+
}
|
36
|
+
})
|
37
|
+
return false;
|
38
|
+
});
|
39
|
+
});
|
40
|
+
</script>
|
@@ -51,6 +51,11 @@
|
|
51
51
|
{
|
52
52
|
field: 'department',
|
53
53
|
title: '学院/部门',
|
54
|
+
width: 200,
|
55
|
+
},
|
56
|
+
{
|
57
|
+
field: 'department_major',
|
58
|
+
title: '专业',
|
54
59
|
},
|
55
60
|
{
|
56
61
|
title: '操作',
|
@@ -131,7 +136,7 @@
|
|
131
136
|
layer.full(index);
|
132
137
|
});
|
133
138
|
} else if (obj.event === 'edit') {
|
134
|
-
department_id = obj.data.id
|
139
|
+
department_id = obj.data.id;
|
135
140
|
content = miniPage.getHrefContent('/missions/customers/edit_department?id='+ obj.data.id);
|
136
141
|
openWH = miniPage.getOpenWidthHeight();
|
137
142
|
edit_index1 = layer.open({
|
@@ -13,7 +13,7 @@
|
|
13
13
|
<div class="layui-input-block">
|
14
14
|
<%= select_tag "role_id",
|
15
15
|
options_for_select(EducodeSales::Role.pluck(:name, :id),
|
16
|
-
@staff.role_id), { 'lay-filter': 'role_id' } %>
|
16
|
+
@staff.role_id), { 'lay-filter': 'role_id', include_blank: true } %>
|
17
17
|
</div>
|
18
18
|
</div>
|
19
19
|
<div class="layui-form-item">
|
@@ -21,7 +21,7 @@
|
|
21
21
|
<div class="layui-input-block">
|
22
22
|
<%= select_tag "job_type",
|
23
23
|
options_for_select(@staff_types,
|
24
|
-
@staff.job_type), { 'lay-filter': 'job_type' } %>
|
24
|
+
@staff.job_type), { 'lay-filter': 'job_type', include_blank: true } %>
|
25
25
|
</div>
|
26
26
|
</div>
|
27
27
|
<div class="layui-form-item">
|
data/config/routes.rb
CHANGED
@@ -37,6 +37,9 @@ EducodeSales::Engine.routes.draw do
|
|
37
37
|
get :new_department
|
38
38
|
get :edit_department
|
39
39
|
get :give
|
40
|
+
post :batch_update_school_tags
|
41
|
+
get :majors
|
42
|
+
get :new_major
|
40
43
|
end
|
41
44
|
|
42
45
|
member do
|
@@ -44,6 +47,9 @@ EducodeSales::Engine.routes.draw do
|
|
44
47
|
put :update_follow_up
|
45
48
|
post :create_department
|
46
49
|
put :update_department
|
50
|
+
post :major
|
51
|
+
put :update_major
|
52
|
+
delete :delete_major
|
47
53
|
end
|
48
54
|
end
|
49
55
|
|
@@ -49,6 +49,9 @@ class CreateEducodeSalesRolePermissions < ActiveRecord::Migration[5.2]
|
|
49
49
|
EducodeSales::Permission.create(name: '编辑跟进记录', subject: 'Customer', action: 'update_follow', clazz: 'customer')
|
50
50
|
EducodeSales::Permission.create(name: '删除跟进记录', subject: 'Customer', action: 'destroy_follow', clazz: 'customer')
|
51
51
|
|
52
|
+
EducodeSales::Permission.create(name: '导出', subject: 'Customer', action: 'export', clazz: 'customer')
|
53
|
+
EducodeSales::Permission.create(name: '批量导入修改客户类型', subject: 'Customer', action: 'modify_school_tag', clazz: 'customer')
|
54
|
+
|
52
55
|
|
53
56
|
EducodeSales::Permission.create(name: '查看数据', subject: 'SaleTrend', action: 'trends', clazz: 'market')
|
54
57
|
EducodeSales::Permission.create(name: '编辑目标', subject: 'SaleTrend', action: 'sale_trends', clazz: 'market')
|
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.46
|
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-02-
|
11
|
+
date: 2023-02-17 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
|
@@ -275,9 +274,11 @@ files:
|
|
275
274
|
- app/views/educode_sales/customers/give.html.erb
|
276
275
|
- app/views/educode_sales/customers/index.html.erb
|
277
276
|
- app/views/educode_sales/customers/index.json.jbuilder
|
277
|
+
- app/views/educode_sales/customers/majors.json.jbuilder
|
278
278
|
- app/views/educode_sales/customers/new.html.erb
|
279
279
|
- app/views/educode_sales/customers/new_department.html.erb
|
280
280
|
- app/views/educode_sales/customers/new_follow_record.html.erb
|
281
|
+
- app/views/educode_sales/customers/new_major.html.erb
|
281
282
|
- app/views/educode_sales/customers/show_department.json.jbuilder
|
282
283
|
- app/views/educode_sales/customers/show_follow.html.erb
|
283
284
|
- app/views/educode_sales/customers/show_follow.json.jbuilder
|
@@ -494,6 +495,7 @@ files:
|
|
494
495
|
- db/migrate/20230117144025_create_educode_sales_business_clazz_changes.rb
|
495
496
|
- db/migrate/20230206080303_create_educode_sales_staff_school_tags.rb
|
496
497
|
- db/migrate/20230209102302_create_educode_sales_staff_permissions.rb
|
498
|
+
- db/migrate/20230215141612_add_mobile_to_teachers.rb
|
497
499
|
- lib/educode_sales.rb
|
498
500
|
- lib/educode_sales/engine.rb
|
499
501
|
- lib/educode_sales/version.rb
|
@@ -502,7 +504,7 @@ homepage: https://www.educoder.net
|
|
502
504
|
licenses:
|
503
505
|
- MIT
|
504
506
|
metadata: {}
|
505
|
-
post_install_message:
|
507
|
+
post_install_message:
|
506
508
|
rdoc_options: []
|
507
509
|
require_paths:
|
508
510
|
- lib
|
@@ -517,8 +519,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
517
519
|
- !ruby/object:Gem::Version
|
518
520
|
version: '0'
|
519
521
|
requirements: []
|
520
|
-
rubygems_version: 3.0.
|
521
|
-
signing_key:
|
522
|
+
rubygems_version: 3.0.0
|
523
|
+
signing_key:
|
522
524
|
specification_version: 4
|
523
525
|
summary: Summary of EducodeSales.
|
524
526
|
test_files: []
|
Binary file
|