educode_sales 0.4.9 → 0.5.3

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 (73) 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 +27 -13
  4. data/app/controllers/educode_sales/follow_ups_controller.rb +3 -2
  5. data/app/controllers/educode_sales/operation_plans_controller.rb +23 -2
  6. data/app/controllers/educode_sales/operation_reports_controller.rb +33 -3
  7. data/app/controllers/educode_sales/plans_controller.rb +28 -7
  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 +40 -27
  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_plan.html.erb +2 -2
  24. data/app/views/educode_sales/businesses/file.html.erb +30 -15
  25. data/app/views/educode_sales/businesses/index.html.erb +20 -7
  26. data/app/views/educode_sales/businesses/new_follow_record.html.erb +5 -1
  27. data/app/views/educode_sales/businesses/show_follow.html.erb +8 -2
  28. data/app/views/educode_sales/businesses/show_follow.json.jbuilder +1 -0
  29. data/app/views/educode_sales/businesses/show_follow_record.html.erb +1 -1
  30. data/app/views/educode_sales/businesses/time_line.html.erb +5 -1
  31. data/app/views/educode_sales/businesses/upload_file.html.erb +4 -4
  32. data/app/views/educode_sales/operation_plans/index.html.erb +6 -1
  33. data/app/views/educode_sales/operation_plans/new_week.html.erb +1 -1
  34. data/app/views/educode_sales/operation_reports/audit.html.erb +14 -6
  35. data/app/views/educode_sales/operation_reports/show.html.erb +13 -10
  36. data/app/views/educode_sales/places/index.html.erb +6 -1
  37. data/app/views/educode_sales/places/index.json.jbuilder +11 -1
  38. data/app/views/educode_sales/plans/index.html.erb +6 -1
  39. data/app/views/educode_sales/plans/new_monthly.html.erb +6 -6
  40. data/app/views/educode_sales/plans/new_week.html.erb +1 -1
  41. data/app/views/educode_sales/plans/new_weekly.html.erb +7 -7
  42. data/app/views/educode_sales/recycles/_business.html.erb +122 -0
  43. data/app/views/educode_sales/recycles/_monthPlan.html.erb +123 -0
  44. data/app/views/educode_sales/recycles/_monthly.html.erb +121 -0
  45. data/app/views/educode_sales/recycles/_weekPlan.html.erb +128 -0
  46. data/app/views/educode_sales/recycles/_weekly.html.erb +122 -0
  47. data/app/views/educode_sales/recycles/business.json.jbuilder +16 -0
  48. data/app/views/educode_sales/recycles/index.html.erb +58 -0
  49. data/app/views/educode_sales/recycles/monthPlan.json.jbuilder +16 -0
  50. data/app/views/educode_sales/recycles/monthly.json.jbuilder +15 -0
  51. data/app/views/educode_sales/recycles/weekPlan.json.jbuilder +16 -0
  52. data/app/views/educode_sales/recycles/weekly.json.jbuilder +15 -0
  53. data/app/views/educode_sales/roles/index.html.erb +19 -1
  54. data/app/views/educode_sales/roles/rename.html.erb +50 -0
  55. data/app/views/educode_sales/sale_reports/audit.html.erb +17 -6
  56. data/app/views/educode_sales/sale_reports/show.html.erb +11 -8
  57. data/app/views/educode_sales/sale_trends/trends.html.erb +252 -8
  58. data/app/views/educode_sales/sale_trends/trends.json.jbuilder +14 -0
  59. data/app/views/educode_sales/sales/index.html.erb +75 -9
  60. data/app/views/educode_sales/sales/index.json.jbuilder +35 -1
  61. data/app/views/educode_sales/sales/operations.json.jbuilder +11 -1
  62. data/app/views/educode_sales/staffs/index.html.erb +6 -1
  63. data/app/views/educode_sales/staffs/index.json.jbuilder +11 -1
  64. data/app/views/educode_sales/teachers/add_keys.html.erb +3 -3
  65. data/app/views/educode_sales/teachers/index.html.erb +7 -2
  66. data/app/views/educode_sales/teachers/new.html.erb +1 -0
  67. data/app/views/educode_sales/upload_files/index.json.jbuilder +2 -2
  68. data/app/views/layouts/educode_sales/application.html.erb +3 -0
  69. data/config/routes.rb +18 -0
  70. data/db/migrate/20210902064109_create_educode_sales_role_permissions.rb +6 -0
  71. data/db/migrate/20211109015617_create_educode_sales_recycles.rb +25 -0
  72. data/lib/educode_sales/version.rb +1 -1
  73. metadata +20 -2
@@ -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) {
@@ -88,7 +88,7 @@
88
88
  <div class="panel layui-bg-number">
89
89
  <div class="panel-body">
90
90
  <div class="panel-title">
91
- <h5>现有商机<a href="/missions/businesses?name=(销售态势-现有商机)" style="padding-left: 100px;color: #0000FF">查看商机</a></h5>
91
+ <h5>现有商机<a href="/missions/businesses?name=(销售态势-现有商机)" style="color: #0000FF;float: right">查看商机</a></h5>
92
92
  </div>
93
93
  <div class="panel-content y-t-10">
94
94
  <h1 class="no-margins"><%= @business_amount %>万</h1>
@@ -101,7 +101,7 @@
101
101
  <div class="panel layui-bg-number">
102
102
  <div class="panel-body">
103
103
  <div class="panel-title">
104
- <h5>已中标<a href="/missions/businesses?name=(销售态势-已中标商机)" style="padding-left: 100px;color: #0000FF">查看商机</a></h5>
104
+ <h5>已中标<a href="/missions/businesses?name=(销售态势-<%=@year %>-已中标商机)" style="color: #0000FF;float: right">查看商机</a></h5>
105
105
  </div>
106
106
  <div class="panel-content y-t-10">
107
107
  <h1 class="no-margins"><%= @goal_amount %>万</h1>
@@ -114,7 +114,7 @@
114
114
  <div class="panel layui-bg-number">
115
115
  <div class="panel-body">
116
116
  <div class="panel-title">
117
- <h5>已签单<a href="/missions/businesses?name=(销售态势-已签单商机)" style="padding-left: 100px;color: #0000FF">查看商机</a></h5>
117
+ <h5>已签单<a href="/missions/businesses?name=(销售态势-<%=@year %>-已签单商机)" style="color: #0000FF;float: right">查看商机</a></h5>
118
118
  </div>
119
119
  <div class="panel-content y-t-10">
120
120
  <h1 class="no-margins"><%= @service_amount %>万</h1>
@@ -127,7 +127,7 @@
127
127
  <div class="panel layui-bg-number">
128
128
  <div class="panel-body">
129
129
  <div class="panel-title">
130
- <h5>已回款<a href="/missions/businesses?name=(销售态势-已回款商机)" style="padding-left: 100px;color: #0000FF">查看商机</a></h5>
130
+ <h5>已回款<a href="/missions/businesses?name=(销售态势-<%=@year %>-已回款商机)" style="color: #0000FF;float: right">查看商机</a></h5>
131
131
  </div>
132
132
  <div class="panel-content y-t-10">
133
133
  <h1 class="no-margins"><%= @return_amount %>万</h1>
@@ -140,7 +140,7 @@
140
140
  <div class="panel layui-bg-number">
141
141
  <div class="panel-body">
142
142
  <div class="panel-title">
143
- <h5>A类商机<a href="/missions/businesses?clazz_id=<%=EducodeSales::Common.find_by(extras: EducodeSales::Common::ATYPE)&.id %>" style="padding-left: 100px;color: #0000FF">查看商机</a></h5>
143
+ <h5>A类商机<a href="/missions/businesses?clazz_id=<%=EducodeSales::Common.find_by(extras: EducodeSales::Common::ATYPE)&.id %>" style="color: #0000FF;float: right">查看商机</a></h5>
144
144
  </div>
145
145
  <div class="panel-content y-t-10">
146
146
  <h1 class="no-margins"><%= @a_amount %>万</h1>
@@ -153,7 +153,7 @@
153
153
  <div class="panel layui-bg-number">
154
154
  <div class="panel-body">
155
155
  <div class="panel-title">
156
- <h5>B类商机<a href="/missions/businesses?clazz_id=<%=EducodeSales::Common.find_by(extras: EducodeSales::Common::BTYPE)&.id %>" style="padding-left: 100px;color: #0000FF">查看商机</a></h5>
156
+ <h5>B类商机<a href="/missions/businesses?clazz_id=<%=EducodeSales::Common.find_by(extras: EducodeSales::Common::BTYPE)&.id %>" style="color: #0000FF;float: right">查看商机</a></h5>
157
157
  </div>
158
158
  <div class="panel-content y-t-10">
159
159
  <h1 class="no-margins"><%= @b_amount %>万</h1>
@@ -168,12 +168,132 @@
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] %>">
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] %>">
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
+ time: 0, //不自动关闭
268
+ offset:['40%','46%']
269
+ })
270
+ layer.load(0, {});
271
+ setTimeout(function () {
272
+ layer.closeAll('loading');
273
+ }, 10000);
274
+ });
275
+ });
276
+ if(follow_type == "day"){
277
+ $(".year").addClass('layui-hide')
278
+ $(".month").addClass('layui-hide')
279
+ $(".day").removeClass('layui-hide')
280
+ }else if(follow_type == "month"){
281
+ $(".year").addClass('layui-hide')
282
+ $(".month").removeClass('layui-hide')
283
+ $(".day").addClass('layui-hide')
284
+ }else {
285
+ $(".year").removeClass('layui-hide')
286
+ $(".month").addClass('layui-hide')
287
+ $(".day").addClass('layui-hide')
288
+ }
289
+
290
+ if(goal_type == "year"){
291
+ $(".goal_year").removeClass('layui-hide')
292
+ $(".goal_month").addClass('layui-hide')
293
+ }else{
294
+ $(".goal_year").addClass('layui-hide')
295
+ $(".goal_month").removeClass('layui-hide')
296
+ }
177
297
 
178
298
  function editForm(el) {
179
299
  $("#" + el + "_edit").click(function() {
@@ -205,18 +325,142 @@
205
325
  })
206
326
  }
207
327
 
328
+ // 时间选择器
329
+ laydate.render({
330
+ elem: '#date',
331
+ min: -15
332
+ ,max: 0,
333
+ range: true
334
+ });
335
+ laydate.render({
336
+ type: 'week',
337
+ elem: '#date_week',
338
+ min: -90
339
+ ,max: 0,
340
+ range: true
341
+ });
342
+ laydate.render({
343
+ type: 'month',
344
+ elem: '#date_month',
345
+ min: -365
346
+ ,max: 0,
347
+ range: true
348
+ });
349
+ laydate.render({
350
+ type: 'year',
351
+ elem: '#date_year',
352
+ min: -3660
353
+ ,max: 0,
354
+ range: true
355
+ });
356
+ laydate.render({
357
+ type: 'year',
358
+ elem: '#goal_date_year',
359
+ min: -3660
360
+ ,max: 0,
361
+ range: true
362
+ });
363
+ laydate.render({
364
+ type: 'month',
365
+ elem: '#goal_date_month',
366
+ min: -365
367
+ ,max: 0,
368
+ range: true
369
+ });
370
+
371
+
208
372
  form.on('select(year)', function(data){
209
373
  console.log(data, )
210
374
  year = data.value
211
375
  window.location.href = "/missions/sale_trends/trends?year=" + data.value
212
376
  })
213
-
377
+ form.on('select(follow_count)', function(data){
378
+ console.log(data, )
379
+ const value = data.value;
380
+ if(value == "month"){
381
+ $(".year").addClass('layui-hide')
382
+ $(".day").addClass('layui-hide')
383
+ $(".month").removeClass('layui-hide')
384
+ }else if(value == "year"){
385
+ $(".month").addClass('layui-hide')
386
+ $(".day").addClass('layui-hide')
387
+ $(".year").removeClass('layui-hide')
388
+ }else {
389
+ $(".month").addClass('layui-hide')
390
+ $(".year").addClass('layui-hide')
391
+ $(".day").removeClass('layui-hide')
392
+ }
393
+ })
394
+
395
+ form.on('select(goal_count)', function(data){
396
+ console.log(data, )
397
+ const value = data.value;
398
+ if(value == "month"){
399
+ $(".goal_year").addClass('layui-hide')
400
+ $(".goal_month").removeClass('layui-hide')
401
+ }else {
402
+ $(".goal_month").addClass('layui-hide')
403
+ $(".goal_year").removeClass('layui-hide')
404
+ }
405
+ })
406
+
214
407
  editForm("chance_money");
215
408
  editForm("ballot_money");
216
409
  editForm("sign_money");
217
410
  editForm("returned_money");
218
411
 
219
-
412
+ element.on('tab(test1)', function(){
413
+ window.location.href = "#销售额分析"
414
+ });
415
+
416
+ var ctx = document.getElementById('myChart');
417
+ var myChart = new Chart(ctx, {
418
+ type: 'line',
419
+ data: <%=raw @follow_count_data.to_json %>,
420
+ options: {
421
+ elements: {
422
+ line: {
423
+ tension: 0
424
+ }
425
+ }
426
+ }
427
+ });
428
+
429
+
430
+ var opt = {
431
+ events: false,
432
+ tooltips: {
433
+ enabled: false
434
+ },
435
+ hover: {
436
+ animationDuration: 0
437
+ },
438
+ animation: {
439
+ duration: 1,
440
+ onComplete: function () {
441
+ var chartInstance = this.chart,
442
+ ctx = chartInstance.ctx;
443
+ ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);
444
+ ctx.textAlign = 'center';
445
+ ctx.textBaseline = 'bottom';
446
+
447
+ this.data.datasets.forEach(function (dataset, i) {
448
+ var meta = chartInstance.controller.getDatasetMeta(i);
449
+ meta.data.forEach(function (bar, index) {
450
+ var data = dataset.data[index];
451
+ ctx.fillText(data, bar._model.x, bar._model.y - 5);
452
+ });
453
+ });
454
+ }
455
+ }
456
+ };
457
+
220
458
 
459
+ var ctx = document.getElementById('myChart2');
460
+ var myChart2 = new Chart(ctx, {
461
+ type: 'bar',
462
+ data: <%=raw @goal_count_data.to_json %>,
463
+ options: opt
464
+ });
221
465
  })
222
466
  </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
@@ -1,7 +1,7 @@
1
1
  <div class="section">
2
2
  <h4><span>销售人员列表</span></h4>
3
3
  <hr>
4
- <table class="layui-hide" id="table"></table>
4
+ <table class="layui-hide" id="table" lay-filter="table" ></table>
5
5
  </div>
6
6
  <script type="text/html" id="toolbarDemo">
7
7
  <div class="layui-btn-container">
@@ -18,6 +18,26 @@
18
18
  <a href="/missions/businesses?clazz_id={{d.b_clazz_id}}&staff_id={{d.id}}">{{d.business_b}}</a>
19
19
  </div>
20
20
  </script>
21
+ <script type="text/html" id="business_c">
22
+ <div class="layui-text">
23
+ <a href="/missions/businesses?clazz_id={{d.c_clazz_id}}&staff_id={{d.id}}">{{d.business_c}}</a>
24
+ </div>
25
+ </script>
26
+ <script type="text/html" id="business_d">
27
+ <div class="layui-text">
28
+ <a href="/missions/businesses?clazz_id={{d.d_clazz_id}}&staff_id={{d.id}}">{{d.business_d}}</a>
29
+ </div>
30
+ </script>
31
+ <script type="text/html" id="business_e">
32
+ <div class="layui-text">
33
+ <a href="/missions/businesses?clazz_id={{d.e_clazz_id}}&staff_id={{d.id}}">{{d.business_e}}</a>
34
+ </div>
35
+ </script>
36
+ <script type="text/html" id="business_o">
37
+ <div class="layui-text">
38
+ <a href="/missions/businesses?clazz_id={{d.o_clazz_id}}&staff_id={{d.id}}">{{d.business_o}}</a>
39
+ </div>
40
+ </script>
21
41
  <script>
22
42
  layui.use('table', function () {
23
43
  var table = layui.table;
@@ -45,22 +65,53 @@
45
65
  title: 'A类商机',
46
66
  templet: "#business_a",
47
67
  totalRow:true,
48
- width: 120
49
- }, {
68
+ sort:true,
69
+ width: 100
70
+ },
71
+ {
50
72
  field: 'business_b',
51
73
  title: 'B类商机',
52
74
  templet: "#business_b",
53
- totalRow:true,
54
- width: 120
55
- }, {
75
+ totalRow:true,sort:true,
76
+ width: 100
77
+ },
78
+ {
79
+ field: 'business_c',
80
+ title: 'C类商机',
81
+ templet: "#business_c",
82
+ totalRow:true,sort:true,
83
+ width: 100
84
+ },
85
+ {
86
+ field: 'business_d',
87
+ title: 'D类商机',
88
+ templet: "#business_d",
89
+ totalRow:true,sort:true,
90
+ width: 100
91
+ },
92
+ {
93
+ field: 'business_e',
94
+ title: 'E类商机',
95
+ templet: "#business_e",
96
+ totalRow:true,sort:true,
97
+ width: 100
98
+ },
99
+ {
100
+ field: 'business_o',
101
+ title: 'O类商机',
102
+ templet: "#business_o",
103
+ totalRow:true,sort:true,
104
+ width: 100
105
+ },
106
+ {
56
107
  field: 'goal',
57
108
  title: '中标金额',
58
- totalRow:true,
109
+ totalRow:true,sort:true,
59
110
  width: 120
60
111
  }, {
61
112
  field: 'return_money',
62
- title: '回款',
63
- totalRow:true,
113
+ title: '回款金额',
114
+ totalRow:true,sort:true,
64
115
  width: 120
65
116
  }
66
117
  ]
@@ -69,5 +120,20 @@
69
120
  limits: [10,15,20,30,40,50,60,70,80,90],
70
121
  page: true
71
122
  });
123
+
124
+ // var sort = {}, search = {};
125
+ // table.on('sort(table)', function (obj) {
126
+ // sort.field = obj.field;
127
+ // sort.order = obj.type;
128
+ // table.reload('table', {
129
+ // initSort: obj,
130
+ // where: {
131
+ // sort: sort,
132
+ // q: search
133
+ // }
134
+ // });
135
+ // })
136
+
137
+
72
138
  });
73
139
  </script>