educode_sales 0.5.0 → 0.5.4

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 (68) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/educode_sales//345/233/236/346/224/266/347/253/231.png +0 -0
  3. data/app/controllers/educode_sales/businesses_controller.rb +13 -6
  4. data/app/controllers/educode_sales/follow_ups_controller.rb +3 -2
  5. data/app/controllers/educode_sales/operation_plans_controller.rb +22 -2
  6. data/app/controllers/educode_sales/operation_reports_controller.rb +33 -3
  7. data/app/controllers/educode_sales/plans_controller.rb +23 -3
  8. data/app/controllers/educode_sales/recycles_controller.rb +95 -0
  9. data/app/controllers/educode_sales/roles_controller.rb +5 -0
  10. data/app/controllers/educode_sales/sale_reports_controller.rb +34 -4
  11. data/app/controllers/educode_sales/sale_trends_controller.rb +171 -0
  12. data/app/controllers/educode_sales/sales_controller.rb +4 -0
  13. data/app/controllers/educode_sales/staffs_controller.rb +4 -4
  14. data/app/controllers/educode_sales/upload_files_controller.rb +33 -26
  15. data/app/models/concerns/deletable.rb +8 -0
  16. data/app/models/educode_sales/application_record.rb +2 -0
  17. data/app/models/educode_sales/business.rb +15 -2
  18. data/app/models/educode_sales/common.rb +2 -1
  19. data/app/models/educode_sales/follow_up.rb +4 -2
  20. data/app/models/educode_sales/recycle.rb +5 -0
  21. data/app/models/educode_sales/sale_plan.rb +3 -0
  22. data/app/models/educode_sales/sale_report.rb +2 -0
  23. data/app/views/educode_sales/businesses/edit_follow_record.html.erb +3 -3
  24. data/app/views/educode_sales/businesses/edit_plan.html.erb +2 -2
  25. data/app/views/educode_sales/businesses/file.html.erb +5 -4
  26. data/app/views/educode_sales/businesses/index.html.erb +18 -3
  27. data/app/views/educode_sales/businesses/new_follow_record.html.erb +6 -2
  28. data/app/views/educode_sales/businesses/show_follow.html.erb +7 -2
  29. data/app/views/educode_sales/businesses/show_follow_record.html.erb +1 -1
  30. data/app/views/educode_sales/businesses/upload_file.html.erb +4 -4
  31. data/app/views/educode_sales/operation_plans/index.html.erb +6 -1
  32. data/app/views/educode_sales/operation_reports/audit.html.erb +14 -6
  33. data/app/views/educode_sales/operation_reports/show.html.erb +13 -10
  34. data/app/views/educode_sales/places/index.html.erb +6 -1
  35. data/app/views/educode_sales/places/index.json.jbuilder +11 -1
  36. data/app/views/educode_sales/plans/index.html.erb +6 -1
  37. data/app/views/educode_sales/recycles/_business.html.erb +122 -0
  38. data/app/views/educode_sales/recycles/_monthPlan.html.erb +123 -0
  39. data/app/views/educode_sales/recycles/_monthly.html.erb +121 -0
  40. data/app/views/educode_sales/recycles/_weekPlan.html.erb +128 -0
  41. data/app/views/educode_sales/recycles/_weekly.html.erb +122 -0
  42. data/app/views/educode_sales/recycles/business.json.jbuilder +16 -0
  43. data/app/views/educode_sales/recycles/index.html.erb +58 -0
  44. data/app/views/educode_sales/recycles/monthPlan.json.jbuilder +16 -0
  45. data/app/views/educode_sales/recycles/monthly.json.jbuilder +15 -0
  46. data/app/views/educode_sales/recycles/weekPlan.json.jbuilder +16 -0
  47. data/app/views/educode_sales/recycles/weekly.json.jbuilder +15 -0
  48. data/app/views/educode_sales/roles/index.html.erb +19 -1
  49. data/app/views/educode_sales/roles/rename.html.erb +50 -0
  50. data/app/views/educode_sales/sale_reports/audit.html.erb +17 -6
  51. data/app/views/educode_sales/sale_reports/show.html.erb +11 -8
  52. data/app/views/educode_sales/sale_trends/trends.html.erb +233 -2
  53. data/app/views/educode_sales/sale_trends/trends.json.jbuilder +14 -0
  54. data/app/views/educode_sales/sales/index.html.erb +75 -9
  55. data/app/views/educode_sales/sales/index.json.jbuilder +35 -1
  56. data/app/views/educode_sales/sales/operations.json.jbuilder +11 -1
  57. data/app/views/educode_sales/staffs/index.html.erb +6 -1
  58. data/app/views/educode_sales/staffs/index.json.jbuilder +11 -1
  59. data/app/views/educode_sales/teachers/add_keys.html.erb +3 -3
  60. data/app/views/educode_sales/teachers/index.html.erb +7 -2
  61. data/app/views/educode_sales/teachers/new.html.erb +1 -0
  62. data/app/views/educode_sales/upload_files/index.json.jbuilder +1 -1
  63. data/app/views/layouts/educode_sales/application.html.erb +3 -0
  64. data/config/routes.rb +18 -0
  65. data/db/migrate/20210902064109_create_educode_sales_role_permissions.rb +6 -0
  66. data/db/migrate/20211109015617_create_educode_sales_recycles.rb +25 -0
  67. data/lib/educode_sales/version.rb +1 -1
  68. metadata +20 -2
@@ -0,0 +1,16 @@
1
+ json.data do
2
+ json.array! @monthPlans do |d|
3
+ next if EducodeSales::SalePlan.unscoped.find(d.source_id).weekly.present?
4
+ json.id d.id
5
+ json.name EducodeSales::SalePlan.unscoped.find(d.source_id).staff.user.real_name
6
+ json.month EducodeSales::SalePlan.unscoped.find(d.source_id).month.strftime("%Y-%m")
7
+ json.weekly EducodeSales::SalePlan.unscoped.find(d.source_id).weekly
8
+ json.plan EducodeSales::SalePlan.unscoped.find(d.source_id).content
9
+ json.update_at EducodeSales::SalePlan.unscoped.find(d.source_id).updated_at.to_s
10
+ json.deleter EducodeSales::Staff.find(d.deleter_id).user.real_name
11
+ json.delete_time d.created_at.to_s
12
+ end
13
+ end
14
+
15
+ json.code 0
16
+ json.count @monthPlans.total_count
@@ -0,0 +1,15 @@
1
+ json.data do
2
+ json.array! @monthly do |d|
3
+ next if EducodeSales::SaleReport.unscoped.find(d.source_id).weekly.present?
4
+ json.id d.id
5
+ json.name EducodeSales::SaleReport.unscoped.find(d.source_id).staff.user.real_name
6
+ json.month EducodeSales::SaleReport.unscoped.find(d.source_id).month.strftime('%Y-%m')
7
+ json.plan EducodeSales::SaleReport.unscoped.find(d.source_id).content
8
+ json.update_at EducodeSales::SaleReport.unscoped.find(d.source_id).updated_at.to_s
9
+ json.deleter EducodeSales::Staff.find(d.deleter_id).user.real_name
10
+ json.delete_time d.created_at.to_s
11
+ end
12
+ end
13
+
14
+ json.code 0
15
+ json.count @monthly.total_count
@@ -0,0 +1,16 @@
1
+ json.data do
2
+ json.array! @weekPlans do |d|
3
+ next if EducodeSales::SalePlan.unscoped.find(d.source_id).weekly.nil?
4
+ json.id d.id
5
+ json.name EducodeSales::SalePlan.unscoped.find(d.source_id).staff.user.real_name
6
+ json.month EducodeSales::SalePlan.unscoped.find(d.source_id).month.strftime("%Y-%m")
7
+ json.weekly EducodeSales::SalePlan.unscoped.find(d.source_id).weekly
8
+ json.plan EducodeSales::SalePlan.unscoped.find(d.source_id).content
9
+ json.update_at EducodeSales::SalePlan.unscoped.find(d.source_id).updated_at.to_s
10
+ json.deleter EducodeSales::Staff.find(d.deleter_id).user.real_name
11
+ json.delete_time d.created_at.to_s
12
+ end
13
+ end
14
+
15
+ json.code 0
16
+ json.count @weekPlans.total_count
@@ -0,0 +1,15 @@
1
+ json.data do
2
+ json.array! @weekly do |d|
3
+ next if EducodeSales::SaleReport.unscoped.find(d.source_id).weekly.nil?
4
+ json.id d.id
5
+ json.name EducodeSales::SaleReport.unscoped.find(d.source_id).staff.user.real_name
6
+ json.weekly EducodeSales::SaleReport.unscoped.find(d.source_id).weekly
7
+ json.plan EducodeSales::SaleReport.unscoped.find(d.source_id).content
8
+ json.update_at EducodeSales::SaleReport.unscoped.find(d.source_id).updated_at.to_s
9
+ json.deleter EducodeSales::Staff.find(d.deleter_id).user.real_name
10
+ json.delete_time d.created_at.to_s
11
+ end
12
+ end
13
+
14
+ json.code 0
15
+ json.count @weekly.total_count
@@ -8,6 +8,7 @@
8
8
  </div>
9
9
  </script>
10
10
  <script type="text/html" id="role_bar">
11
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="rename">重命名</a>
11
12
  <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
12
13
  <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
13
14
  </script>
@@ -35,7 +36,6 @@
35
36
  field: 'name',
36
37
  title: '角色',
37
38
  width: 120,
38
- edit: 'text'
39
39
  }, {
40
40
  field: 'permissions',
41
41
  title: '模块浏览权限',
@@ -124,6 +124,24 @@
124
124
  layer.full(index);
125
125
  });
126
126
  return false;
127
+ }else if (obj.event === 'rename') {
128
+ id = data.id
129
+ var content = miniPage.getHrefContent('/missions/roles/rename?id='+id);
130
+ var openWH = miniPage.getOpenWidthHeight();
131
+ rename_index = layer.open({
132
+ title: '重命名',
133
+ type: 1,
134
+ shade: 0.2,
135
+ maxmin: true,
136
+ shadeClose: true,
137
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
138
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
139
+ content: content,
140
+ });
141
+ $(window).on("resize", function () {
142
+ layer.full(index);
143
+ });
144
+ return false;
127
145
  } else if (obj.event === 'delete') {
128
146
  layer.confirm('确定删除' + data.name, function (index) {
129
147
  request.delete('missions/roles/'+ data.id, {}, function(res) {
@@ -0,0 +1,50 @@
1
+ <form class="layui-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" style="line-height: 36px;">
6
+ <input type="text" name="name" id="name" required lay-verify="required" autocomplete="off"
7
+ class="layui-input" value="<%=@name %>">
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="submits">提交
12
+ </button>
13
+ </div>
14
+ </div>
15
+ </form>
16
+
17
+
18
+ <script>
19
+
20
+ layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'selectInput', 'transfer'], function () {
21
+ var form = layui.form,
22
+ layer = layui.layer,
23
+ table = layui.table,
24
+ transfer = layui.transfer,
25
+ laytpl = layui.laytpl,
26
+ request = layui.request,
27
+ $ = layui.$;
28
+
29
+ form.render();
30
+
31
+ // 当前弹出层,防止ID被覆盖
32
+ var parentIndex = layer.index;
33
+
34
+ //监听提交
35
+ form.on('submit(submits)', function (data) {
36
+ console.log(data);
37
+ request.authPut('missions/roles/' + parent.id + '/update_role/', data.field,
38
+ function(res) {
39
+ if (res.success) {
40
+ table.reload('role');
41
+ layer.close(parent.rename_index)
42
+ } else {
43
+ layer.alert(res.msg)
44
+ }
45
+
46
+ })
47
+ return false;
48
+ });
49
+ });
50
+ </script>
@@ -36,7 +36,8 @@
36
36
  3、补充说明需要上级解决的问题和挑战。" disabled class="layui-textarea autosize"><%= @sale_report.content %></textarea>
37
37
  </div>
38
38
  </div>
39
- <div class="layui-form-item layui-form-text" style="margin-bottom: 0px">
39
+ <% if can? :level1_audit, EducodeSales::SaleReport %>
40
+ <div class="layui-form-item layui-form-text" style="margin-bottom: 0px">
40
41
  <label class="layui-form-label">大区意见</label>
41
42
  <div class="layui-input-block">
42
43
  <textarea name="level1_opinion" placeholder="给出评价、提醒、建议、办法等。"
@@ -44,7 +45,10 @@
44
45
  </div>
45
46
  </div>
46
47
  <div id="weekStar4" style="margin-bottom: 40px"></div>
47
- <div class="layui-form-item layui-form-text" style="margin-bottom: 0px">
48
+ <% end %>
49
+
50
+ <% if can? :level2_audit, EducodeSales::SaleReport %>
51
+ <div class="layui-form-item layui-form-text" style="margin-bottom: 0px">
48
52
  <label class="layui-form-label">总监意见</label>
49
53
  <div class="layui-input-block">
50
54
  <textarea name="level2_opinion" placeholder="给出评价、提醒、建议、办法等。"
@@ -52,7 +56,10 @@
52
56
  </div>
53
57
  </div>
54
58
  <div id="weekStar5" style="margin-bottom: 40px"></div>
55
- <div class="layui-form-item layui-form-text" style="margin-bottom: 0px">
59
+ <% end %>
60
+
61
+ <% if can? :level3_audit, EducodeSales::SaleReport %>
62
+ <div class="layui-form-item layui-form-text" style="margin-bottom: 0px">
56
63
  <label class="layui-form-label">副总意见</label>
57
64
  <div class="layui-input-block">
58
65
  <textarea name="level3_opinion" placeholder="给出评价、提醒、建议、办法等。"
@@ -60,11 +67,15 @@
60
67
  </div>
61
68
  </div>
62
69
  <div id="weekStar6" style="margin-bottom: 40px"></div>
70
+ <% end %>
71
+
63
72
  <br>
64
73
  <div class="layui-inline m-t-10">
74
+ <% if (can? :level1_audit, EducodeSales::SaleReport) || (can? :level2_audit, EducodeSales::SaleReport) || (can? :level3_audit, EducodeSales::SaleReport) %>
65
75
  <button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="audit_weekly_report"
66
76
  style="margin-left: 18px">提交
67
77
  </button>
78
+ <% end %>
68
79
  </div>
69
80
  </div>
70
81
  </form>
@@ -89,7 +100,7 @@
89
100
  rate.render({
90
101
  elem: '#weekStar4',
91
102
  half: true,
92
- value: "<%= @sale_report.level1_score %>",
103
+ value: parseFloat("<%= @sale_report.level1_score || 0%>"),
93
104
  length: 5,
94
105
  choose: function(value){
95
106
  level1_score = value
@@ -98,7 +109,7 @@
98
109
  rate.render({
99
110
  elem: '#weekStar5',
100
111
  half: true,
101
- value: "<%= @sale_report.level2_score %>",
112
+ value: parseFloat("<%= @sale_report.level2_score || 0%>"),
102
113
  length: 5,
103
114
  choose: function(value){
104
115
  level2_score = value
@@ -107,7 +118,7 @@
107
118
  rate.render({
108
119
  elem: '#weekStar6',
109
120
  half: true,
110
- value: "<%= @sale_report.level3_score %>",
121
+ value: parseFloat("<%= @sale_report.level3_score || 0%>"),
111
122
  length: 5,
112
123
  choose: function(value){
113
124
  level3_score = value
@@ -35,6 +35,7 @@
35
35
  3、补充说明需要上级解决的问题和挑战。" disabled class="layui-textarea autosize"><%= @sale_report.content %></textarea>
36
36
  </div>
37
37
  </div>
38
+ <% if @sale_report.level1_opinion.present? || @sale_report.level1_score %>
38
39
  <div class="layui-form-item layui-form-text" style="margin-bottom: 0px">
39
40
  <label class="layui-form-label">大区意见</label>
40
41
  <div class="layui-input-block">
@@ -43,7 +44,9 @@
43
44
  </div>
44
45
  </div>
45
46
  <div id="weekStar4" style="margin-bottom: 40px"></div>
46
- <div class="layui-form-item layui-form-text" style="margin-bottom: 0px">
47
+ <%end %>
48
+ <% if @sale_report.level2_opinion.present? || @sale_report.level2_score %>
49
+ <div class="layui-form-item layui-form-text" style="margin-bottom: 0px">
47
50
  <label class="layui-form-label">总监意见</label>
48
51
  <div class="layui-input-block">
49
52
  <textarea name="desc" placeholder="给出评价、提醒、建议、办法等。" disabled
@@ -51,7 +54,9 @@
51
54
  </div>
52
55
  </div>
53
56
  <div id="weekStar5" style="margin-bottom: 40px"></div>
54
- <div class="layui-form-item layui-form-text" style="margin-bottom: 0px">
57
+ <%end %>
58
+ <% if @sale_report.level3_opinion.present? || @sale_report.level3_score %>
59
+ <div class="layui-form-item layui-form-text" style="margin-bottom: 0px">
55
60
  <label class="layui-form-label">副总意见</label>
56
61
  <div class="layui-input-block">
57
62
  <textarea name="desc" placeholder="给出评价、提醒、建议、办法等。" disabled
@@ -59,6 +64,7 @@
59
64
  </div>
60
65
  </div>
61
66
  <div id="weekStar6" style="margin-bottom: 40px"></div>
67
+ <%end %>
62
68
  <br>
63
69
  </div>
64
70
  </form>
@@ -78,22 +84,19 @@
78
84
  elem: '#weekStar4',
79
85
  half: true,
80
86
  readonly: true,
81
- value: "<%= @sale_report.level1_score %>",
82
- length: "<%= @sale_report.level1_score %>"
87
+ value: parseFloat("<%= @sale_report.level1_score || 0%>"),
83
88
  })
84
89
  rate.render({
85
90
  elem: '#weekStar5',
86
91
  half: true,
87
92
  readonly: true,
88
- value: "<%= @sale_report.level2_score %>",
89
- length: "<%= @sale_report.level2_score %>"
93
+ value: parseFloat("<%= @sale_report.level2_score || 0%> "),
90
94
  })
91
95
  rate.render({
92
96
  elem: '#weekStar6',
93
97
  half: true,
94
98
  readonly: true,
95
- value: "<%= @sale_report.level3_score %>",
96
- length: "<%= @sale_report.level3_score %>"
99
+ value: parseFloat("<%= @sale_report.level3_score || 0%>"),
97
100
  })
98
101
 
99
102
  table.on('tool(showWeeklyTable)', function (obj) {
@@ -168,12 +168,131 @@
168
168
  </div>
169
169
  </div>
170
170
  </form>
171
+ <br>
172
+ <div class="layui-tab layui-tab-card" id="商机跟进数">
173
+ <ul class="layui-tab-title">
174
+ <li class="layui-this">商机跟进数</li>
175
+ </ul>
176
+ <div class="layui-tab-content" style="padding-right: 50px">
177
+ <div class="layui-tab-item layui-show " style="padding-left: 20px">
178
+ <div style="margin: 10px 10px 10px 10px">
179
+ <form class="layui-form layui-form-pane" lay-filter="search_form">
180
+ <div class="layui-form-item">
181
+ <div class="layui-inline m-t-10">
182
+ <label class="layui-form-label">视图</label>
183
+ <div class="layui-input-inline">
184
+ <%= select_tag "follow_count_range", options_for_select([['按天','day'],['按月','month'],['按年','year']],params[:follow_count_range]), {'lay-filter': 'follow_count'}%>
185
+ </div>
186
+ </div>
187
+ <div class="layui-inline">
188
+ <label class="layui-form-label">时间范围</label>
189
+ <div class="layui-input-inline">
190
+ <input type="text" class="layui-input month layui-hide" id="date_month" name="date_month" placeholder=" - " value="<%=params[:date_month] %>" >
191
+ <input type="text" class="layui-input year layui-hide" id="date_year" name="date_year" placeholder=" - " value="<%=params[:date_year] %>">
192
+ <input type="text" class="layui-input day" id="date" name="date" placeholder=" - " value="<%=params[:date].present? ? params[:date] : (Time.now - 7.days).to_s(:date) + ' - ' + Time.now.to_s(:date) %>">
193
+ </div>
194
+ </div>
195
+ <div class="layui-inline">
196
+ <button type="submit" id="search_bt" class=" follow_count_bt layui-btn layui-btn-primary" lay-submit lay-filter="search_bussiness">确定
197
+ </button>
198
+ </div>
199
+ </div>
200
+ </form>
201
+ </div>
202
+ <canvas id="myChart" width="960" height="200"></canvas>
203
+ </div>
204
+ </div>
205
+ </div>
206
+ <br>
207
+ <br>
208
+ <div class="layui-tab layui-tab-card " id="销售额分析" lay-filter="test1">
209
+ <ul class="layui-tab-title">
210
+ <li class="layui-this">销售额分析</li>
211
+ </ul>
212
+ <div class="layui-tab-content" style="padding-right: 50px">
213
+ <div class="layui-tab-item layui-show" style="padding-left: 20px">
214
+ <div style="margin: 10px 10px 10px 10px">
215
+ <form class="layui-form layui-form-pane" lay-filter="search_form">
216
+ <div class="layui-form-item">
217
+ <div class="layui-inline m-t-10">
218
+ <label class="layui-form-label">视图</label>
219
+ <div class="layui-input-inline">
220
+ <%= select_tag "goal_count_range", options_for_select([['按月','month'],['按年','year']],params[:goal_count_range]), {'lay-filter': 'goal_count'}%>
221
+ </div>
222
+ </div>
223
+ <div class="layui-inline">
224
+ <label class="layui-form-label">时间范围</label>
225
+ <div class="layui-input-inline">
226
+ <input type="text" class="layui-input goal_month " id="goal_date_month" name="goal_date_month" placeholder=" - " value="<%=params[:goal_date_month].present? ? params[:goal_date_month] : Time.now.year.to_s + "-01" + " - " + Time.now.strftime("%Y-%m") %>">
227
+ <input type="text" class="layui-input goal_year layui-hide" id="goal_date_year" name="goal_date_year" placeholder=" - " value="<%=params[:goal_date_year] %>">
228
+ </div>
229
+ </div>
230
+ <div class="layui-inline">
231
+ <button type="submit" id="search_bt" class="follow_count_bt layui-btn layui-btn-primary" lay-submit lay-filter="search_bussiness">确定
232
+ </button>
233
+ </div>
234
+ </div>
235
+ </form>
236
+ </div>
237
+ <canvas id="myChart2" width="960" height="200"></canvas>
238
+ </div>
239
+
240
+ </div>
241
+ </div>
242
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/chart.js@2.9.1/dist/Chart.min.css">
243
+ <script src="https://cdn.jsdelivr.net/npm/chart.js@2.9.1/dist/Chart.min.js"></script>
171
244
  <script>
245
+ follow_type = "<%=@follow_count_range %>"
246
+ goal_type = "<%=@goal_count_range %>"
247
+ follow_flag = <%=params[:follow_count_range].present? %>
248
+ if(follow_flag){
249
+ window.location.href = "#商机跟进数"
250
+ }
251
+
252
+ goal_flag = <%=params[:goal_count_range].present? %>
253
+ if(goal_flag){
254
+ window.location.href = "#销售额分析"
255
+ }
172
256
  layui.use(['form', 'jquery', 'request'], function () {
173
257
  var $ = layui.jquery,
174
258
  form = layui.form,
175
259
  request = layui.request;
176
260
  var year = "<%= @year %>";
261
+ var element = layui.element;
262
+ laydate = layui.laydate;
263
+
264
+ $(document).ready(function () {
265
+ $(".follow_count_bt").click(function () {
266
+ layer.msg("图表绘制中...", {
267
+ offset:['40%','46%']
268
+ })
269
+ layer.load(0, {});
270
+ setTimeout(function () {
271
+ layer.closeAll('loading');
272
+ }, 3000);
273
+ });
274
+ });
275
+ if(follow_type == "day"){
276
+ $(".year").addClass('layui-hide')
277
+ $(".month").addClass('layui-hide')
278
+ $(".day").removeClass('layui-hide')
279
+ }else if(follow_type == "month"){
280
+ $(".year").addClass('layui-hide')
281
+ $(".month").removeClass('layui-hide')
282
+ $(".day").addClass('layui-hide')
283
+ }else {
284
+ $(".year").removeClass('layui-hide')
285
+ $(".month").addClass('layui-hide')
286
+ $(".day").addClass('layui-hide')
287
+ }
288
+
289
+ if(goal_type == "year"){
290
+ $(".goal_year").removeClass('layui-hide')
291
+ $(".goal_month").addClass('layui-hide')
292
+ }else{
293
+ $(".goal_year").addClass('layui-hide')
294
+ $(".goal_month").removeClass('layui-hide')
295
+ }
177
296
 
178
297
  function editForm(el) {
179
298
  $("#" + el + "_edit").click(function() {
@@ -205,18 +324,130 @@
205
324
  })
206
325
  }
207
326
 
327
+ // 时间选择器
328
+ laydate.render({
329
+ elem: '#date',
330
+ range: true
331
+ });
332
+ laydate.render({
333
+ type: 'week',
334
+ elem: '#date_week',
335
+ range: true
336
+ });
337
+ laydate.render({
338
+ type: 'month',
339
+ elem: '#date_month',
340
+ range: true
341
+ });
342
+ laydate.render({
343
+ type: 'year',
344
+ elem: '#date_year',
345
+ range: true
346
+ });
347
+ laydate.render({
348
+ type: 'year',
349
+ elem: '#goal_date_year',
350
+ range: true
351
+ });
352
+ laydate.render({
353
+ type: 'month',
354
+ elem: '#goal_date_month',
355
+ range: true
356
+ });
357
+
358
+
208
359
  form.on('select(year)', function(data){
209
360
  console.log(data, )
210
361
  year = data.value
211
362
  window.location.href = "/missions/sale_trends/trends?year=" + data.value
212
363
  })
213
-
364
+ form.on('select(follow_count)', function(data){
365
+ console.log(data, )
366
+ const value = data.value;
367
+ if(value == "month"){
368
+ $(".year").addClass('layui-hide')
369
+ $(".day").addClass('layui-hide')
370
+ $(".month").removeClass('layui-hide')
371
+ }else if(value == "year"){
372
+ $(".month").addClass('layui-hide')
373
+ $(".day").addClass('layui-hide')
374
+ $(".year").removeClass('layui-hide')
375
+ }else {
376
+ $(".month").addClass('layui-hide')
377
+ $(".year").addClass('layui-hide')
378
+ $(".day").removeClass('layui-hide')
379
+ }
380
+ })
381
+
382
+ form.on('select(goal_count)', function(data){
383
+ console.log(data, )
384
+ const value = data.value;
385
+ if(value == "month"){
386
+ $(".goal_year").addClass('layui-hide')
387
+ $(".goal_month").removeClass('layui-hide')
388
+ }else {
389
+ $(".goal_month").addClass('layui-hide')
390
+ $(".goal_year").removeClass('layui-hide')
391
+ }
392
+ })
393
+
214
394
  editForm("chance_money");
215
395
  editForm("ballot_money");
216
396
  editForm("sign_money");
217
397
  editForm("returned_money");
218
398
 
219
-
399
+ element.on('tab(test1)', function(){
400
+ window.location.href = "#销售额分析"
401
+ });
402
+
403
+ var ctx = document.getElementById('myChart');
404
+ var myChart = new Chart(ctx, {
405
+ type: 'line',
406
+ data: <%=raw @follow_count_data.to_json %>,
407
+ options: {
408
+ elements: {
409
+ line: {
410
+ tension: 0
411
+ }
412
+ }
413
+ }
414
+ });
415
+
416
+
417
+ var opt = {
418
+ events: false,
419
+ tooltips: {
420
+ enabled: false
421
+ },
422
+ hover: {
423
+ animationDuration: 0
424
+ },
425
+ animation: {
426
+ duration: 1,
427
+ onComplete: function () {
428
+ var chartInstance = this.chart,
429
+ ctx = chartInstance.ctx;
430
+ ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);
431
+ ctx.textAlign = 'center';
432
+ ctx.textBaseline = 'bottom';
433
+
434
+ this.data.datasets.forEach(function (dataset, i) {
435
+ var meta = chartInstance.controller.getDatasetMeta(i);
436
+ meta.data.forEach(function (bar, index) {
437
+ var data = dataset.data[index];
438
+ ctx.fillText(data, bar._model.x, bar._model.y - 5);
439
+ });
440
+ });
441
+ }
442
+ }
443
+ };
444
+
220
445
 
446
+ var ctx = document.getElementById('myChart2');
447
+ var myChart2 = new Chart(ctx, {
448
+ type: 'bar',
449
+ data: <%=raw @goal_count_data.to_json %>,
450
+ options: opt
451
+ });
221
452
  })
222
453
  </script>
@@ -0,0 +1,14 @@
1
+ my_array = [1,2,3,4,5]
2
+ json.data do
3
+ json.labels my_array
4
+ json.datasets do
5
+ json.array! [1,2] do |d|
6
+ json.label '人名'
7
+ json.backgroundColor "#fff"
8
+ json.borderColor "#36A2EB"
9
+ json.pointBackgroundColor "#36A2EB"
10
+ json.pointBorderColor "#fff"
11
+ json.data my_array
12
+ end
13
+ end
14
+ end