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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/educode_sales//345/256/242/346/210/267/347/256/241/347/220/206.png +0 -0
  3. data/app/controllers/educode_sales/businesses_controller.rb +4 -2
  4. data/app/controllers/educode_sales/customer_extensions_controller.rb +17 -0
  5. data/app/controllers/educode_sales/customer_follows_controller.rb +41 -0
  6. data/app/controllers/educode_sales/customers_controller.rb +204 -0
  7. data/app/controllers/educode_sales/places_controller.rb +5 -1
  8. data/app/controllers/educode_sales/roles_controller.rb +4 -1
  9. data/app/controllers/educode_sales/sale_trends_controller.rb +16 -1
  10. data/app/controllers/educode_sales/teachers_controller.rb +13 -2
  11. data/app/models/educode_sales/customer.rb +4 -0
  12. data/app/models/educode_sales/customer_extension.rb +7 -0
  13. data/app/models/educode_sales/customer_follow.rb +5 -0
  14. data/app/models/educode_sales/permission.rb +3 -2
  15. data/app/models/educode_sales/role_area.rb +1 -0
  16. data/app/views/educode_sales/businesses/_follows.html.erb +10 -4
  17. data/app/views/educode_sales/businesses/edit_follow_record.html.erb +2 -2
  18. data/app/views/educode_sales/businesses/index.html.erb +25 -18
  19. data/app/views/educode_sales/businesses/index.json.jbuilder +1 -0
  20. data/app/views/educode_sales/businesses/new.html.erb +3 -0
  21. data/app/views/educode_sales/businesses/new_follow_record.html.erb +2 -2
  22. data/app/views/educode_sales/businesses/show_follow.html.erb +7 -2
  23. data/app/views/educode_sales/businesses/show_follow.json.jbuilder +1 -0
  24. data/app/views/educode_sales/businesses/time_line.html.erb +1 -1
  25. data/app/views/educode_sales/customers/edit.html.erb +94 -0
  26. data/app/views/educode_sales/customers/edit_department.html.erb +54 -0
  27. data/app/views/educode_sales/customers/edit_follow_record.html.erb +50 -0
  28. data/app/views/educode_sales/customers/give.html.erb +51 -0
  29. data/app/views/educode_sales/customers/index.html.erb +493 -0
  30. data/app/views/educode_sales/customers/index.json.jbuilder +24 -0
  31. data/app/views/educode_sales/customers/new.html.erb +96 -0
  32. data/app/views/educode_sales/customers/new_department.html.erb +56 -0
  33. data/app/views/educode_sales/customers/new_follow_record.html.erb +54 -0
  34. data/app/views/educode_sales/customers/show_department.json.jbuilder +13 -0
  35. data/app/views/educode_sales/customers/show_follow.html.erb +442 -0
  36. data/app/views/educode_sales/customers/show_follow.json.jbuilder +13 -0
  37. data/app/views/educode_sales/customers/show_follow_record.html.erb +18 -0
  38. data/app/views/educode_sales/follow_ups/index.json.jbuilder +1 -0
  39. data/app/views/educode_sales/places/index.html.erb +64 -0
  40. data/app/views/educode_sales/places/index.json.jbuilder +1 -1
  41. data/app/views/educode_sales/roles/edit.html.erb +9 -1
  42. data/app/views/educode_sales/sale_trends/trends.html.erb +20 -0
  43. data/app/views/educode_sales/sales/index.html.erb +63 -21
  44. data/app/views/educode_sales/sales/index.json.jbuilder +32 -5
  45. data/app/views/educode_sales/teachers/index.html.erb +4 -11
  46. data/app/views/educode_sales/teachers/index.json.jbuilder +3 -3
  47. data/app/views/educode_sales/teachers/show_follow.html.erb +10 -5
  48. data/app/views/educode_sales/teachers/show_follow.json.jbuilder +1 -0
  49. data/app/views/layouts/educode_sales/application.html.erb +8 -1
  50. data/config/routes.rb +25 -0
  51. data/db/migrate/20210902064109_create_educode_sales_role_permissions.rb +15 -0
  52. data/db/migrate/20211214100803_create_customer_extensions.rb +9 -0
  53. data/db/migrate/20211215025029_create_educode_sales_customer_follows.rb +12 -0
  54. data/db/migrate/20211220102720_add_position_to_commons.rb +12 -0
  55. data/db/migrate/20211221075146_add_school_id_to_educode_sales_businesses.rb +8 -0
  56. data/lib/educode_sales/version.rb +1 -1
  57. 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="edit-table tool">
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: 200,
168
+ width: 400,
164
169
  title: '渠道',
165
170
  },
166
171
  {
@@ -18,6 +18,7 @@ json.data do
18
18
  json.money d.money_plans.where(clazz: 1).sum(:amount).round(2)
19
19
  json.is_latest d.id == @latest&.id
20
20
  json.flag d.created_at.present? ? (Time.now - d.created_at).to_f/3600 < 24 : false
21
+ json.description d.description
21
22
  end
22
23
  end
23
24
 
@@ -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=' + parent.business_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>