educode_sales 0.1.0 → 0.1.1

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 (56) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/educode_sales/activities_controller.rb +7 -1
  3. data/app/controllers/educode_sales/application_controller.rb +0 -1
  4. data/app/controllers/educode_sales/businesses_controller.rb +3 -2
  5. data/app/controllers/educode_sales/operation_plans_controller.rb +155 -0
  6. data/app/controllers/educode_sales/operation_reports_controller.rb +125 -0
  7. data/app/controllers/educode_sales/places_controller.rb +1 -0
  8. data/app/controllers/educode_sales/plans_controller.rb +3 -1
  9. data/app/controllers/educode_sales/sale_reports_controller.rb +2 -1
  10. data/app/controllers/educode_sales/sales_controller.rb +4 -1
  11. data/app/controllers/educode_sales/teacher_follows_controller.rb +6 -0
  12. data/app/controllers/educode_sales/teachers_controller.rb +17 -5
  13. data/app/models/ability.rb +4 -1
  14. data/app/models/educode_sales/common.rb +1 -0
  15. data/app/models/educode_sales/staff.rb +2 -0
  16. data/app/views/educode_sales/activities/index.html.erb +17 -8
  17. data/app/views/educode_sales/businesses/index.html.erb +136 -140
  18. data/app/views/educode_sales/businesses/show_follow.html.erb +18 -3
  19. data/app/views/educode_sales/operation_plans/_monthPlan.html.erb +60 -76
  20. data/app/views/educode_sales/operation_plans/_monthly.html.erb +116 -95
  21. data/app/views/educode_sales/operation_plans/_weekPlan.html.erb +73 -74
  22. data/app/views/educode_sales/operation_plans/_weekly.html.erb +108 -86
  23. data/app/views/educode_sales/operation_plans/edit_month.html.erb +35 -32
  24. data/app/views/educode_sales/operation_plans/edit_week.html.erb +40 -39
  25. data/app/views/educode_sales/operation_plans/index.json.jbuilder +19 -0
  26. data/app/views/educode_sales/operation_plans/my_month.json.jbuilder +18 -0
  27. data/app/views/educode_sales/operation_plans/my_week.json.jbuilder +19 -0
  28. data/app/views/educode_sales/operation_plans/new_month.html.erb +5 -10
  29. data/app/views/educode_sales/operation_plans/new_monthly.html.erb +27 -43
  30. data/app/views/educode_sales/operation_plans/new_week.html.erb +7 -7
  31. data/app/views/educode_sales/operation_plans/new_weekly.html.erb +46 -53
  32. data/app/views/educode_sales/operation_plans/show_month.html.erb +4 -10
  33. data/app/views/educode_sales/operation_plans/show_week.html.erb +20 -25
  34. data/app/views/educode_sales/operation_plans/show_weekly.html.erb +6 -6
  35. data/app/views/educode_sales/operation_reports/audit.html.erb +214 -0
  36. data/app/views/educode_sales/operation_reports/edit.html.erb +237 -0
  37. data/app/views/educode_sales/operation_reports/index.json.jbuilder +17 -0
  38. data/app/views/educode_sales/operation_reports/plans.json.jbuilder +19 -0
  39. data/app/views/educode_sales/operation_reports/show.html.erb +139 -0
  40. data/app/views/educode_sales/operations/trends.html.erb +8 -0
  41. data/app/views/educode_sales/places/index.html.erb +6 -0
  42. data/app/views/educode_sales/plans/_monthPlan.html.erb +8 -0
  43. data/app/views/educode_sales/plans/_monthly.html.erb +8 -0
  44. data/app/views/educode_sales/plans/_weekPlan.html.erb +10 -3
  45. data/app/views/educode_sales/plans/_weekly.html.erb +8 -0
  46. data/app/views/educode_sales/plans/audit_weekly.html.erb +6 -0
  47. data/app/views/educode_sales/plans/edit_monthly.html.erb +8 -0
  48. data/app/views/educode_sales/plans/edit_weekly.html.erb +8 -0
  49. data/app/views/educode_sales/plans/new_monthly.html.erb +8 -0
  50. data/app/views/educode_sales/plans/new_weekly.html.erb +7 -1
  51. data/app/views/educode_sales/sale_trends/trends.html.erb +8 -0
  52. data/app/views/educode_sales/teachers/index.html.erb +3 -5
  53. data/app/views/layouts/educode_sales/application.html.erb +23 -2
  54. data/config/routes.rb +11 -4
  55. data/lib/educode_sales/version.rb +1 -1
  56. metadata +14 -5
@@ -3,58 +3,61 @@
3
3
  <div class="layui-inline">
4
4
  <label class="layui-form-label">月份</label>
5
5
  <div class="layui-input-inline">
6
- <select name="quiz">
7
- <option value="">请选择月份</option>
8
- <option value="010">北京</option>
9
- <option value="021">上海</option>
10
- <option value="0571">杭州</option>
11
- </select>
6
+ <%= select_tag "month", options_for_select(@months, @sale_plan.month.strftime("%Y-%m")), class: 'required' %>
12
7
  </div>
13
8
  </div>
14
9
  <div class="layui-inline">
15
10
  <label class="layui-form-label">教师</label>
16
11
  <div class="layui-input-inline">
17
- <select name="quiz" id="edit_chance3">
18
- <option value="">请选择</option>
19
- <option value="010">北京</option>
20
- <option value="021">上海</option>
21
- <option value="0571">杭州</option>
22
- <option value="人工智能实验室建设1">人工智能实验室建设1</option>
23
- </select>
12
+ <%#= select_tag "teacher_id", options_for_select(@teachers, @sale_plan.teacher_id), class: 'required' %>
13
+ <%= select_tag "teacher_id", options_for_select(@teachers), class: 'required' %>
14
+
24
15
  </div>
25
16
  </div>
26
17
  <div class="layui-form-item layui-form-text">
27
18
  <label class="layui-form-label">计划内容</label>
28
19
  <div class="layui-input-block">
29
- <textarea name="desc" id="edit_plan3" placeholder="简要填写具体的营销计划,例如:
20
+ <textarea name="content" placeholder="简要填写具体的营销计划,例如:
30
21
  1、推动xx老师用起来;
31
22
  2、与xx老师介绍一下我们的方案;
32
- 3、与xx领导深度沟通一下,以获取到关键建设规划信息等等。" class="layui-textarea"></textarea>
23
+ 3、与xx领导深度沟通一下,以获取到关键建设规划信息等等。" class="layui-textarea"><%= @sale_plan.content %></textarea>
33
24
  </div>
34
25
  </div>
35
26
  <div class="layui-inline">
36
27
  <label class="layui-form-label">完成率</label>
37
28
  <div class="layui-input-inline">
38
- <select name="quiz" id="edit_rate3">
39
- <option value="0%">0%</option>
40
- <option value="10%">10%</option>
41
- <option value="20%">20%</option>
42
- <option value="30%">30%</option>
43
- <option value="40%">40%</option>
44
- <option value="50%">50%</option>
45
- <option value="60%">60%</option>
46
- <option value="70%">70%</option>
47
- <option value="80%">80%</option>
48
- <option value="90%">90%</option>
49
- <option value="1001%">1001%</option>
50
- </select>
29
+ <%= select_tag "finish_rate", options_for_select(@finish_rates, @sale_plan.finish_rate) %>
51
30
  </div>
52
31
  </div>
53
32
  <div class="layui-inline">
54
- <button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="data-reset-btn">提交
55
- </button>
56
- <button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="data-search-btn">取消
33
+ <button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="update_sale_plan">提交
57
34
  </button>
58
35
  </div>
59
36
  </div>
60
- </form>
37
+ </form>
38
+
39
+
40
+ <script>
41
+ layui.use(['form', 'table', 'laytpl', 'request'], function () {
42
+ var form = layui.form,
43
+ layer = layui.layer,
44
+ table = layui.table,
45
+ request = layui.request,
46
+ $ = layui.$;
47
+
48
+ form.render();
49
+
50
+ form.on('submit(update_sale_plan)', function (data) {
51
+ console.log(data.field);
52
+ request.authPut("educode_sales/operation_plans/"+ <%= @sale_plan.id %> , data.field, function (res) {
53
+ if (res.success == false) {
54
+ layer.alert(res.msg)
55
+ } else {
56
+ layer.closeAll()
57
+ table.reload('monthPlanTable')
58
+ }
59
+ })
60
+ return false;
61
+ });
62
+ });
63
+ </script>
@@ -3,70 +3,71 @@
3
3
  <div class="layui-inline">
4
4
  <label class="layui-form-label">月份</label>
5
5
  <div class="layui-input-inline">
6
- <select name="quiz">
7
- <option value="">请选择月份</option>
8
- <option value="010">北京</option>
9
- <option value="021">上海</option>
10
- <option value="0571">杭州</option>
11
- </select>
6
+ <%= select_tag "month", options_for_select(@months, @sale_plan.month.strftime("%Y-%m")), class: 'required' %>
12
7
  </div>
13
8
  </div>
9
+ <% if @sale_plan.weekly.present? %>
14
10
  <div class="layui-inline">
15
11
  <label class="layui-form-label">周次</label>
16
12
  <div class="layui-input-inline">
17
- <select name="quiz" id="edit_week1">
18
- <option value="">请选择周</option>
19
- <option value="010">北京</option>
20
- <option value="021">上海</option>
21
- <option value="0571">杭州</option>
22
- <option value="2021-33周">2021-33周</option>
23
- </select>
13
+ <%= select_tag "weekly", options_for_select(@weeks, @sale_plan.weekly), class: 'required' %>
24
14
  </div>
25
15
  </div>
16
+ <% end %>
17
+
26
18
  <div class="layui-inline">
27
19
  <label class="layui-form-label">教师</label>
28
20
  <div class="layui-input-inline">
29
- <select name="quiz" id="edit_chance1">
30
- <option value="">请选择</option>
31
- <option value="010">北京</option>
32
- <option value="021">上海</option>
33
- <option value="0571">杭州</option>
34
- <option value="人工智能实验室建设">人工智能实验室建设</option>
35
- </select>
21
+ <%#= select_tag "teacher_id", options_for_select(@teachers, @sale_plan.teacher_id), class: 'required' %>
22
+ <%= select_tag "teacher_id", options_for_select(@teachers), class: 'required' %>
23
+
36
24
  </div>
37
25
  </div>
38
26
  <div class="layui-form-item layui-form-text">
39
27
  <label class="layui-form-label">计划内容</label>
40
28
  <div class="layui-input-block">
41
- <textarea name="desc" id="edit_plan1" placeholder="简要填写具体的营销计划,例如:
29
+ <textarea name="content" placeholder="简要填写具体的营销计划,例如:
42
30
  1、推动xx老师用起来;
43
31
  2、与xx老师介绍一下我们的方案;
44
- 3、与xx领导深度沟通一下,以获取到关键建设规划信息等等。" class="layui-textarea"></textarea>
32
+ 3、与xx领导深度沟通一下,以获取到关键建设规划信息等等。" class="layui-textarea"><%= @sale_plan.content %></textarea>
45
33
  </div>
46
34
  </div>
47
35
  <div class="layui-inline">
48
36
  <label class="layui-form-label">完成率</label>
49
37
  <div class="layui-input-inline">
50
- <select name="quiz" id="edit_rate1">
51
- <option value="0%">0%</option>
52
- <option value="10%">10%</option>
53
- <option value="20%">20%</option>
54
- <option value="30%">30%</option>
55
- <option value="40%">40%</option>
56
- <option value="50%">50%</option>
57
- <option value="60%">60%</option>
58
- <option value="70%">70%</option>
59
- <option value="80%">80%</option>
60
- <option value="90%">90%</option>
61
- <option value="100%">100%</option>
62
- </select>
38
+ <%= select_tag "finish_rate", options_for_select(@finish_rates, @sale_plan.finish_rate) %>
63
39
  </div>
64
40
  </div>
65
41
  <div class="layui-inline">
66
- <button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="data-reset-btn">提交
67
- </button>
68
- <button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="data-search-btn">取消
42
+ <button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="update_sale_plan">提交
69
43
  </button>
70
44
  </div>
71
45
  </div>
72
- </form>
46
+ </form>
47
+
48
+
49
+ <script>
50
+ layui.use(['form', 'table', 'laytpl', 'request'], function () {
51
+ var form = layui.form,
52
+ layer = layui.layer,
53
+ table = layui.table,
54
+ request = layui.request,
55
+ $ = layui.$;
56
+
57
+ form.render();
58
+
59
+ form.on('submit(update_sale_plan)', function (data) {
60
+ console.log(data.field);
61
+ request.authPut("educode_sales/operation_plans/"+ <%= @sale_plan.id %> , data.field, function (res) {
62
+ if (res.success == false) {
63
+ layer.alert(res.msg)
64
+ } else {
65
+ layer.close(parent.sindex);
66
+ table.reload('weekPlanTable')
67
+ table.reload('newWeeklyTable')
68
+ }
69
+ })
70
+ return false;
71
+ });
72
+ });
73
+ </script>
@@ -0,0 +1,19 @@
1
+ json.data do
2
+ json.array! @sale_plans do |d|
3
+ json.id d.id
4
+ json.staff d.staff.user.real_name
5
+ json.teacher_name d.teacher.name
6
+ json.department d.teacher.department&.name
7
+ json.school d.teacher.department&.school&.name
8
+ json.month d.month.strftime("%Y-%m")
9
+ json.week d.weekly
10
+ # json.teacher_id d.teacher_id
11
+ json.content d.content.truncate(30)
12
+ # json.follow_ups_count d.teacher.follow_ups_count
13
+ json.rate "#{d.finish_rate}%"
14
+ json.updated_at d.updated_at.to_s
15
+ end
16
+ end
17
+
18
+ json.code 0
19
+ json.count @sale_plans.count
@@ -0,0 +1,18 @@
1
+ json.data do
2
+ json.array! @sale_plans do |d|
3
+ json.id d.id
4
+ json.staff d.staff.user.real_name
5
+ json.teacher_name d.teacher.name
6
+ json.department d.teacher.department&.name
7
+ json.school d.teacher.department&.school&.name
8
+ json.month d.month.strftime("%Y-%m")
9
+ # json.teacher_id d.teacher_id
10
+ json.content d.content.truncate(30)
11
+ # json.follow_ups_count d.teacher.follow_ups_count
12
+ json.rate "#{d.finish_rate}%"
13
+ json.updated_at d.updated_at.to_s
14
+ end
15
+ end
16
+
17
+ json.code 0
18
+ json.count @sale_plans.count
@@ -0,0 +1,19 @@
1
+ json.data do
2
+ json.array! @sale_plans do |d|
3
+ json.id d.id
4
+ json.staff d.staff.user.real_name
5
+ json.teacher_name d.teacher.name
6
+ json.department d.teacher.department&.name
7
+ json.school d.teacher.department&.school&.name
8
+ json.month d.month.strftime("%Y-%m")
9
+ json.week d.weekly
10
+ # json.teacher_id d.teacher_id
11
+ json.content d.content.truncate(30)
12
+ # json.follow_ups_count d.teacher.follow_ups_count
13
+ json.rate "#{d.finish_rate}%"
14
+ json.updated_at d.updated_at.to_s
15
+ end
16
+ end
17
+
18
+ json.code 0
19
+ json.count @sale_plans.count
@@ -3,13 +3,13 @@
3
3
  <div class="layui-inline">
4
4
  <label class="layui-form-label required">月份</label>
5
5
  <div class="layui-input-inline">
6
- <%#= select_tag "month", options_for_select([Time.now.strftime("%Y-%m"), Time.now.months_ago(1).strftime("%Y-%m")]), class: 'required' %>
6
+ <%= select_tag "month", options_for_select([Time.now.strftime("%Y-%m"), Time.now.months_ago(1).strftime("%Y-%m")]), class: 'required' %>
7
7
  </div>
8
8
  </div>
9
9
  <div class="layui-inline">
10
10
  <label class="layui-form-label required">教师</label>
11
11
  <div class="layui-input-inline">
12
- <%#= select_tag "business_id", options_for_select(@businesses), class: 'required' %>
12
+ <%= select_tag "teacher_id", options_for_select(@teachers), {"lay-verify": "required", include_blank: true} %>
13
13
  </div>
14
14
  </div>
15
15
  <div class="layui-form-item layui-form-text">
@@ -24,7 +24,7 @@
24
24
  <div class="layui-inline">
25
25
  <label class="layui-form-label">完成率</label>
26
26
  <div class="layui-input-inline">
27
- <select name="quiz">
27
+ <select name="finish_rate">
28
28
  <option value="0">0%</option>
29
29
  <option value="10">10%</option>
30
30
  <option value="20">20%</option>
@@ -63,17 +63,12 @@
63
63
  if (res.success == false) {
64
64
  layer.alert(res.msg)
65
65
  } else {
66
- layer.close(parent.sindex);
67
- parent.layer.close(parent.layer.getFrameIndex(window.name))
68
- parent.table.reload('businesses_table')
66
+ layer.closeAll()
67
+ table.reload('monthPlanTable')
69
68
  }
70
69
  })
71
70
  return false;
72
71
  });
73
72
 
74
- form.on('submit(cancel_add_week)', function (data) {
75
- layer.closeAll();
76
- return false;
77
- });
78
73
  });
79
74
  </script>
@@ -8,49 +8,27 @@
8
8
  <div class="layui-form-item">
9
9
  <div class="layui-inline" style="margin:18px; font-weight: bold">
10
10
  <label>完成率:</label>
11
- <span>80%</span>
11
+ <span><%= @rate %></span>
12
+ <%= hidden_field_tag 'finish_rate', @rate, {id: 'monthly_rate_hide'} %>
12
13
  </div>
13
14
  <div class="layui-inline" style="margin:18px; font-weight: bold">
14
15
  <label style="margin-left: 100px">运营教师:</label>
15
- <span>5</span>
16
+ <span><%= @departments_count%></span>
17
+ <%= hidden_field_tag 'client', @departments_count, {id: 'monthly_client_hide'} %>
16
18
  </div>
17
19
  </div>
18
20
  <div class="layui-form-item" style="margin-left: 18px">
19
21
  <div class="layui-form-item layui-form-text">
20
22
  <label class="layui-form-label">个人总结</label>
21
23
  <div class="layui-input-block">
22
- <textarea name="desc" placeholder="此处填写要点:
24
+ <textarea name="content" placeholder="此处填写要点:
23
25
  1、一句话概括本周工作的主要成效和主要挫折;
24
26
  2、补充说明收获、经验;
25
27
  3、补充说明需要上级解决的问题和挑战。" class="layui-textarea"></textarea>
26
28
  </div>
27
29
  </div>
28
- <div class="layui-form-item layui-form-text">
29
- <label class="layui-form-label">大区意见</label>
30
- <div class="layui-input-block">
31
- <textarea name="desc" placeholder="给出评价、提醒、建议、办法等。" class="layui-textarea"></textarea>
32
- </div>
33
- </div>
34
- <div id="weekStar4"></div>
35
- <div class="layui-form-item layui-form-text">
36
- <label class="layui-form-label">总监意见</label>
37
- <div class="layui-input-block">
38
- <textarea name="desc" placeholder="给出评价、提醒、建议、办法等。" class="layui-textarea"></textarea>
39
- </div>
40
- </div>
41
- <div id="weekStar5"></div>
42
- <div class="layui-form-item layui-form-text">
43
- <label class="layui-form-label">副总意见</label>
44
- <div class="layui-input-block">
45
- <textarea name="desc" placeholder="给出评价、提醒、建议、办法等。" class="layui-textarea"></textarea>
46
- </div>
47
- </div>
48
- <div id="weekStar6"></div>
49
- <br>
50
30
  <div class="layui-inline">
51
- <button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="data-reset-btn" style="margin-left: 18px">提交
52
- </button>
53
- <button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="data-search-btn">取消
31
+ <button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="add_monthly_report" style="margin-left: 18px">提交
54
32
  </button>
55
33
  </div>
56
34
  </div>
@@ -67,21 +45,26 @@
67
45
 
68
46
  <script>
69
47
  layui.use(['rate', 'table'], function () {
70
- var rate = layui.rate;
71
- table = layui.table
72
- rate.render({
73
- elem: '#weekStar4'
74
- , half: true
75
- })
76
- rate.render({
77
- elem: '#weekStar5'
78
- , half: true
79
- })
80
- rate.render({
81
- elem: '#weekStar6'
82
- , half: true
83
- })
84
- })
48
+ var rate = layui.rate,
49
+ form = layui.form,
50
+ $ = layui.jquery,
51
+ miniPage = layui.miniPage,
52
+ request = layui.request;
53
+ table = layui.table;
54
+
55
+ form.on('submit(add_monthly_report)', function (data) {
56
+ data.field.month = true;
57
+ request.authPost("educode_sales/operation_reports", data.field, function (res) {
58
+ if (res.success == false) {
59
+ layer.alert(res.msg)
60
+ } else {
61
+ // layer.closeAll();
62
+ parent.table.reload('monthlyTable');
63
+ layer.alert('添加成功')
64
+ }
65
+ })
66
+ return false;
67
+ });
85
68
 
86
69
 
87
70
  table.render({
@@ -167,6 +150,7 @@
167
150
  page: true,
168
151
  skin: 'line'
169
152
  });
153
+ })
170
154
  </script>
171
155
  <style>
172
156
  .layui-form-item {
@@ -3,19 +3,21 @@
3
3
  <div class="layui-inline">
4
4
  <label class="layui-form-label required">月份</label>
5
5
  <div class="layui-input-inline">
6
- <%#= select_tag "month", options_for_select([Time.now.strftime("%Y-%m"), Time.now.months_ago(1).strftime("%Y-%m")]), class: 'required' %>
6
+ <%= select_tag "month", options_for_select([Time.now.strftime("%Y-%m"), Time.now.months_ago(1).strftime("%Y-%m")]), class: 'required' %>
7
7
  </div>
8
8
  </div>
9
9
  <div class="layui-inline">
10
10
  <label class="layui-form-label required">周次</label>
11
11
  <div class="layui-input-inline">
12
- <%#= select_tag "weekly", options_for_select(@weeks), class: 'required' %>
12
+ <%= select_tag "weekly", options_for_select(@weeks), class: 'required' %>
13
13
  </div>
14
14
  </div>
15
15
  <div class="layui-inline">
16
16
  <label class="layui-form-label required">教师</label>
17
17
  <div class="layui-input-inline">
18
- <%#= select_tag "business_id", options_for_select(@businesses), class: 'required' %>
18
+
19
+ <%#= select_tag "teacher_id", options_for_select(@teachers, @teacher&.id), {"lay-verify": "required", include_blank: true} %>
20
+ <%= select_tag "teacher_id", options_for_select(@teachers), {"lay-verify": "required", include_blank: true} %>
19
21
  </div>
20
22
  </div>
21
23
  <div class="layui-form-item layui-form-text">
@@ -62,16 +64,14 @@
62
64
 
63
65
  form.render();
64
66
 
65
- var parentIndex = layer.index;
66
67
 
67
68
  form.on('submit(add_week_plan)', function (data) {
68
69
  request.authPost("educode_sales/operation_plans", data.field, function (res) {
69
70
  if (res.success == false) {
70
71
  layer.alert(res.msg)
71
72
  } else {
72
- layer.close(parent.sindex);
73
- parent.layer.close(parent.layer.getFrameIndex(window.name))
74
- parent.table.reload('businesses_table')
73
+ layer.closeAll()
74
+ table.reload('weekPlanTable')
75
75
  }
76
76
  })
77
77
  return false;