educode_sales 0.5.8 → 0.6.2
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//345/256/242/346/210/267/347/256/241/347/220/206.png +0 -0
- data/app/controllers/educode_sales/businesses_controller.rb +4 -2
- data/app/controllers/educode_sales/customer_extensions_controller.rb +17 -0
- data/app/controllers/educode_sales/customer_follows_controller.rb +41 -0
- data/app/controllers/educode_sales/customers_controller.rb +204 -0
- data/app/controllers/educode_sales/places_controller.rb +5 -1
- data/app/controllers/educode_sales/roles_controller.rb +4 -1
- data/app/controllers/educode_sales/sale_trends_controller.rb +16 -1
- data/app/controllers/educode_sales/teachers_controller.rb +13 -2
- data/app/models/educode_sales/customer.rb +4 -0
- data/app/models/educode_sales/customer_extension.rb +7 -0
- data/app/models/educode_sales/customer_follow.rb +5 -0
- data/app/models/educode_sales/permission.rb +3 -2
- data/app/models/educode_sales/role_area.rb +1 -0
- data/app/views/educode_sales/businesses/_follows.html.erb +10 -4
- data/app/views/educode_sales/businesses/edit_follow_record.html.erb +2 -2
- data/app/views/educode_sales/businesses/index.html.erb +25 -18
- data/app/views/educode_sales/businesses/index.json.jbuilder +1 -0
- data/app/views/educode_sales/businesses/new.html.erb +3 -0
- data/app/views/educode_sales/businesses/new_follow_record.html.erb +2 -2
- data/app/views/educode_sales/businesses/show_follow.html.erb +7 -2
- data/app/views/educode_sales/businesses/show_follow.json.jbuilder +1 -0
- data/app/views/educode_sales/businesses/time_line.html.erb +1 -1
- data/app/views/educode_sales/customers/edit.html.erb +94 -0
- data/app/views/educode_sales/customers/edit_department.html.erb +54 -0
- data/app/views/educode_sales/customers/edit_follow_record.html.erb +50 -0
- data/app/views/educode_sales/customers/give.html.erb +51 -0
- data/app/views/educode_sales/customers/index.html.erb +493 -0
- data/app/views/educode_sales/customers/index.json.jbuilder +24 -0
- data/app/views/educode_sales/customers/new.html.erb +96 -0
- data/app/views/educode_sales/customers/new_department.html.erb +56 -0
- data/app/views/educode_sales/customers/new_follow_record.html.erb +54 -0
- data/app/views/educode_sales/customers/show_department.json.jbuilder +13 -0
- data/app/views/educode_sales/customers/show_follow.html.erb +442 -0
- data/app/views/educode_sales/customers/show_follow.json.jbuilder +13 -0
- data/app/views/educode_sales/customers/show_follow_record.html.erb +18 -0
- data/app/views/educode_sales/follow_ups/index.json.jbuilder +1 -0
- data/app/views/educode_sales/places/index.html.erb +64 -0
- data/app/views/educode_sales/places/index.json.jbuilder +1 -1
- data/app/views/educode_sales/roles/edit.html.erb +9 -1
- data/app/views/educode_sales/sale_trends/trends.html.erb +20 -0
- data/app/views/educode_sales/sales/index.html.erb +63 -21
- data/app/views/educode_sales/sales/index.json.jbuilder +32 -5
- data/app/views/educode_sales/teachers/index.html.erb +4 -11
- data/app/views/educode_sales/teachers/index.json.jbuilder +3 -3
- data/app/views/educode_sales/teachers/show_follow.html.erb +10 -5
- data/app/views/educode_sales/teachers/show_follow.json.jbuilder +1 -0
- data/app/views/layouts/educode_sales/application.html.erb +8 -1
- data/config/routes.rb +25 -0
- data/db/migrate/20210902064109_create_educode_sales_role_permissions.rb +15 -0
- data/db/migrate/20211214100803_create_customer_extensions.rb +9 -0
- data/db/migrate/20211215025029_create_educode_sales_customer_follows.rb +12 -0
- data/db/migrate/20211220102720_add_position_to_commons.rb +12 -0
- data/db/migrate/20211221075146_add_school_id_to_educode_sales_businesses.rb +8 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +26 -2
@@ -12,7 +12,7 @@
|
|
12
12
|
<span class="table-label pull-right" style="padding-right: 20px">温馨提示:仅可以在24小时之内,编辑/删除最新的跟进记录</span>
|
13
13
|
</div>
|
14
14
|
</script>
|
15
|
-
<div class="
|
15
|
+
<div class=" tool">
|
16
16
|
<div class="z-index">
|
17
17
|
<table class="layui-hide" id="sale_plan_follow_table" lay-filter="sale_plan_follow_table"></table>
|
18
18
|
</div>
|
@@ -117,6 +117,11 @@
|
|
117
117
|
title: '回款计划',
|
118
118
|
templet: '#edit_plan'
|
119
119
|
},
|
120
|
+
{
|
121
|
+
field: 'description',
|
122
|
+
width: 120,
|
123
|
+
title: '最新进展',
|
124
|
+
},
|
120
125
|
{
|
121
126
|
field: 'invitation_at',
|
122
127
|
width: 110,
|
@@ -160,7 +165,7 @@
|
|
160
165
|
|
161
166
|
{
|
162
167
|
field: 'place',
|
163
|
-
width:
|
168
|
+
width: 400,
|
164
169
|
title: '渠道',
|
165
170
|
},
|
166
171
|
{
|
@@ -43,7 +43,7 @@
|
|
43
43
|
function demo(){
|
44
44
|
layer.closeAll()
|
45
45
|
business_id = parent.business_id
|
46
|
-
var content = miniPage.getHrefContent('/missions/businesses/show_follow?id=' +
|
46
|
+
var content = miniPage.getHrefContent('/missions/businesses/show_follow?id=' + business_id);
|
47
47
|
var openWH = miniPage.getOpenWidthHeight();
|
48
48
|
sindex = layer.open({
|
49
49
|
title: '商机列表/'+ parent.business_name +'的跟进记录',
|
@@ -0,0 +1,94 @@
|
|
1
|
+
<form class="layui-form layuimini-form " action="">
|
2
|
+
<div class="layui-form-item" style="padding: 25px">
|
3
|
+
<div class="layui-inline">
|
4
|
+
<label class="layui-form-label required">学校:</label>
|
5
|
+
<div class="layui-input-block">
|
6
|
+
<input type="text" name="name" required lay-verify="required" value="<%=@school.name %>" placeholder="请输入学校" autocomplete="off"
|
7
|
+
class="layui-input" id="inputFocus">
|
8
|
+
</div>
|
9
|
+
</div>
|
10
|
+
<br>
|
11
|
+
<div class="layui-inline">
|
12
|
+
<label class="layui-form-label required">省:</label>
|
13
|
+
<div class="layui-input-block">
|
14
|
+
<input type="text" name="province" lay-verify="required" value="<%=@school.province %>" autocomplete="off"
|
15
|
+
class="layui-input" placeholder="请输入地址" >
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
<br>
|
19
|
+
<div class="layui-inline">
|
20
|
+
<label class="layui-form-label ">市:</label>
|
21
|
+
<div class="layui-input-block">
|
22
|
+
<input type="text" name="city" value="<%=@school.city %>" autocomplete="off"
|
23
|
+
class="layui-input" placeholder="请输入地址" >
|
24
|
+
</div>
|
25
|
+
</div>
|
26
|
+
<br>
|
27
|
+
<div class="layui-inline">
|
28
|
+
<label class="layui-form-label ">地址:</label>
|
29
|
+
<div class="layui-input-block">
|
30
|
+
<input type="text" name="address" value="<%=@school.address %>" autocomplete="off"
|
31
|
+
class="layui-input" placeholder="请输入地址" >
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
<div class="layui-form-item">
|
35
|
+
<label class="layui-form-label">学校性质:</label>
|
36
|
+
<div class="layui-input-block">
|
37
|
+
<input type="checkbox" name="project_985" lay-skin="primary" value="1" <%= 'checked' if @school_property&.project_985 %> title="985工程">
|
38
|
+
<input type="checkbox" name="project_211" lay-skin="primary" value="1" <%= 'checked' if @school_property&.project_211 %> title="211工程" >
|
39
|
+
<input type="checkbox" name="regular_college" lay-skin="primary" value="1" <%= 'checked' if @school_property&.regular_college %> title="本科院校">
|
40
|
+
</div>
|
41
|
+
</div>
|
42
|
+
<div class="layui-form-item">
|
43
|
+
<div class="layui-input-block">
|
44
|
+
<input type="checkbox" name="junior_college" lay-skin="primary" value="1" <%= 'checked' if @school_property&.junior_college %> title="大专院校">
|
45
|
+
<input type="checkbox" name="secondary_school" lay-skin="primary" value="1" <%= 'checked' if @school_property&.secondary_school %> title="中专院校" >
|
46
|
+
<input type="checkbox" name="military_school" lay-skin="primary" value="1" <%= 'checked' if @school_property&.military_school %> title="军事院校">
|
47
|
+
</div>
|
48
|
+
</div>
|
49
|
+
<div class="layui-form-item">
|
50
|
+
<div class="layui-input-block">
|
51
|
+
<input type="checkbox" name="enterprise" lay-skin="primary" value="1" <%= 'checked' if @school_property&.enterprise %> title="企业">
|
52
|
+
</div>
|
53
|
+
</div>
|
54
|
+
<div class="layui-inline" style="padding-left: 30px">
|
55
|
+
<button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="data-reset-btn">提交
|
56
|
+
</button>
|
57
|
+
</div>
|
58
|
+
</div>
|
59
|
+
</form>
|
60
|
+
|
61
|
+
|
62
|
+
<script>
|
63
|
+
|
64
|
+
layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'selectInput', 'transfer'], function () {
|
65
|
+
var form = layui.form,
|
66
|
+
layer = layui.layer,
|
67
|
+
table = layui.table,
|
68
|
+
transfer = layui.transfer,
|
69
|
+
laytpl = layui.laytpl,
|
70
|
+
request = layui.request,
|
71
|
+
$ = layui.$;
|
72
|
+
|
73
|
+
form.render();
|
74
|
+
|
75
|
+
// 当前弹出层,防止ID被覆盖
|
76
|
+
var parentIndex = layer.index;
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
//监听提交
|
82
|
+
form.on('submit(data-reset-btn)', function (data) {
|
83
|
+
request.authPut("missions/customers/" + <%= @school.id %>, data.field, function (res) {
|
84
|
+
if (res.success === false) {
|
85
|
+
layer.alert(res.msg)
|
86
|
+
} else {
|
87
|
+
layer.closeAll(); //关闭所有层
|
88
|
+
table.reload('customers_table')
|
89
|
+
}
|
90
|
+
})
|
91
|
+
return false;
|
92
|
+
});
|
93
|
+
});
|
94
|
+
</script>
|
@@ -0,0 +1,54 @@
|
|
1
|
+
<div class="layuimini-main">
|
2
|
+
<form class="layui-form layuimini-form" action="">
|
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="department_name" required lay-verify="required" autocomplete="off" placeholder="请输入"
|
9
|
+
class="layui-input" id="inputFocus" value="<%=@department.name %>">
|
10
|
+
</div>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
<div class="layui-form-item" style="padding-left: 130px">
|
14
|
+
<button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="data-edit">提交
|
15
|
+
</button>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
</form>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<script>
|
22
|
+
|
23
|
+
layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'selectInput', 'transfer'], function () {
|
24
|
+
var form = layui.form,
|
25
|
+
layer = layui.layer,
|
26
|
+
table = layui.table,
|
27
|
+
transfer = layui.transfer,
|
28
|
+
laytpl = layui.laytpl,
|
29
|
+
request = layui.request,
|
30
|
+
laydate = layui.laydate,
|
31
|
+
$ = layui.$;
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
form.render();
|
36
|
+
|
37
|
+
// 当前弹出层,防止ID被覆盖
|
38
|
+
var parentIndex = layer.index;
|
39
|
+
|
40
|
+
|
41
|
+
//监听提交
|
42
|
+
form.on('submit(data-edit)', function (data) {
|
43
|
+
request.authPut("missions/customers/"+ parent.department_id +"/update_department", data.field, function (res) {
|
44
|
+
if (res.success === false) {
|
45
|
+
layer.alert(res.msg)
|
46
|
+
} else {
|
47
|
+
layer.close(parent.edit_index1);
|
48
|
+
table.reload('sale_plan_follow_table')
|
49
|
+
}
|
50
|
+
})
|
51
|
+
return false;
|
52
|
+
});
|
53
|
+
});
|
54
|
+
</script>
|
@@ -0,0 +1,50 @@
|
|
1
|
+
<h1 class="text-center" style="padding: 25px"><%=@school.name %></h1>
|
2
|
+
<form class="layui-form layuimini-form " action="">
|
3
|
+
<div class="layui-form-item layui-form-text" style="padding-right: 30px">
|
4
|
+
<label class="layui-form-label required">跟进内容</label>
|
5
|
+
<div class="layui-input-block">
|
6
|
+
<textarea name="content" placeholder="请输入跟进内容" lay-verify="required" style="height: 200px" class="layui-textarea" ><%=@follow_up.content %></textarea>
|
7
|
+
</div>
|
8
|
+
</div>
|
9
|
+
<div class="layui-form-item ">
|
10
|
+
<label class="layui-form-label">跟进部门</label>
|
11
|
+
<div class="layui-input-inline" style="width: 300px;">
|
12
|
+
<%= select_tag "department_id",options_for_select(@school.departments.pluck(:name, :id),@follow_up.department_id)%>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
<div class="layui-form-item " style="padding-left: 110px">
|
16
|
+
<button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit_follow_up">提交
|
17
|
+
</button>
|
18
|
+
</div>
|
19
|
+
</form>
|
20
|
+
<script>
|
21
|
+
layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate'], function () {
|
22
|
+
var form = layui.form,
|
23
|
+
layer = layui.layer,
|
24
|
+
table = layui.table,
|
25
|
+
laytpl = layui.laytpl,
|
26
|
+
request = layui.request,
|
27
|
+
laydate = layui.laydate,
|
28
|
+
$ = layui.$;
|
29
|
+
|
30
|
+
|
31
|
+
form.render();
|
32
|
+
|
33
|
+
form.on('submit(edit_follow_up)', function (data) {
|
34
|
+
request.authPut("missions/customer_follows/<%= @follow_up.id%>", data.field, function (res) {
|
35
|
+
if (res.success == false) {
|
36
|
+
layer.alert(res.msg)
|
37
|
+
} else {
|
38
|
+
layer.close(parent.editFollowIndex);
|
39
|
+
parent.layer.close(parent.layer.getFrameIndex(window.name))
|
40
|
+
parent.table.reload('customers_table')
|
41
|
+
parent.table.reload('unfinish_table')
|
42
|
+
}
|
43
|
+
})
|
44
|
+
|
45
|
+
|
46
|
+
return false;
|
47
|
+
});
|
48
|
+
|
49
|
+
});
|
50
|
+
</script>
|
@@ -0,0 +1,51 @@
|
|
1
|
+
<%= Gon::Base.render_data %>
|
2
|
+
<form class="layui-form " action="">
|
3
|
+
<div class="layui-form-item" style="padding: 25px">
|
4
|
+
<div class="layui-inline">
|
5
|
+
<label class="layui-form-label required">负责人</label>
|
6
|
+
<div class="layui-input-block">
|
7
|
+
<%= select_tag "staff_id", options_for_select(@staffs), { include_blank: true } %>
|
8
|
+
</div>
|
9
|
+
</div>
|
10
|
+
<div class="layui-inline" style="padding-left: 30px">
|
11
|
+
<button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="data-reset-btn">提交
|
12
|
+
</button>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
</form>
|
16
|
+
|
17
|
+
|
18
|
+
<script>
|
19
|
+
layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'selectInput', 'transfer'], function () {
|
20
|
+
var form = layui.form,
|
21
|
+
layer = layui.layer,
|
22
|
+
table = layui.table,
|
23
|
+
transfer = layui.transfer,
|
24
|
+
laytpl = layui.laytpl,
|
25
|
+
request = layui.request,
|
26
|
+
$ = layui.$;
|
27
|
+
|
28
|
+
form.render();
|
29
|
+
|
30
|
+
// 当前弹出层,防止ID被覆盖
|
31
|
+
var parentIndex = layer.index;
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
//监听提交
|
36
|
+
form.on('submit(data-reset-btn)', function (data) {
|
37
|
+
var school_ids = parent.ids
|
38
|
+
data.field['school_ids'] = school_ids;
|
39
|
+
console.log(data.field);
|
40
|
+
request.authPost("missions/customer_extensions", data.field, function (res) {
|
41
|
+
if (res.success === false) {
|
42
|
+
layer.alert(res.msg)
|
43
|
+
} else {
|
44
|
+
layer.closeAll(); //关闭所有层
|
45
|
+
table.reload('customers_table')
|
46
|
+
}
|
47
|
+
})
|
48
|
+
return false;
|
49
|
+
});
|
50
|
+
});
|
51
|
+
</script>
|