educode_sales 0.9.3 → 0.9.6

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.
@@ -1,411 +1,273 @@
1
- <form class="layui-form" action="">
2
- <div class="welcome">
3
- <div class="content-body">
4
- <div class="m-b-10">
5
- <i class="fa fa-warning icon"></i>年度
6
- <div class="layui-input-inline">
7
- <%= select_tag "years", options_for_select(@years, @year), {'lay-filter': 'year'} %>
8
- </div>
9
- </div>
10
- <div class="layui-card-bodys">
11
- <div class="">
12
- <div class="layui-row layui-col-space30">
13
- <div class="layui-col-xs3">
14
- <div class="panel layui-bg-number">
15
- <div class="panel-body">
16
- <div class="panel-title">
17
- <% if can? :sale_trends, EducodeSales::SaleTrend %>
18
- <span class="layui-icon layui-icon-edit pull-right" id="chance_money_edit"></span>
19
- <% end %>
20
- <h5>商机目标</h5>
21
- </div>
22
- <div class="panel-content y-t-10">
23
- <h1 class="no-margins" id="chance_money_value"><%=@sale_trend.present? ? @sale_trend.chance_money : EducodeSales::SaleTrend.sum(:chance_money)%>万</h1>
24
- <div id="chance_money_field" class="layui-hide">
25
- <input type="text" name="chance_money" autocomplete="off"
26
- class="layui-input" id="chance_money">
27
- </div>
28
- </div>
1
+ <div class="layui-tab" lay-filter="sale_trend_tab">
2
+ <ul class="layui-tab-title">
3
+ <li class="layui-this">年度统计</li>
4
+ <li class="">商机跟进数</li>
5
+ <li class="">销售额分析</li>
6
+ <li class="">商机区域分布</li>
7
+ <li class="">销售人员跟进分析</li>
8
+ </ul>
9
+ <div class="layui-tab-content">
10
+ <div class="layui-tab-item layui-show">
11
+ <form class="layui-form" action="">
12
+ <div class="welcome">
13
+ <div class="content-body" style="padding: 15px;">
14
+ <div class="m-b-10">
15
+ <i class="fa fa-warning icon"></i>年度
16
+ <div class="layui-input-inline">
17
+ <%= select_tag "years", options_for_select(@years, @year), {'lay-filter': 'year'} %>
29
18
  </div>
30
19
  </div>
31
- </div>
32
- <div class="layui-col-xs3">
33
- <div class="panel layui-bg-number">
34
- <div class="panel-body">
35
- <div class="panel-title">
36
- <% if can? :sale_trends, EducodeSales::SaleTrend %>
37
- <span class="layui-icon layui-icon-edit pull-right" id="ballot_money_edit"></span>
38
- <% end %>
39
- <h5>中标目标</h5>
40
- </div>
41
- <div class="panel-content y-t-10">
42
- <h1 class="no-margins" id="ballot_money_value"><%=@sale_trend.present? ? @sale_trend.ballot_money : EducodeSales::SaleTrend.sum(:ballot_money)%>万</h1>
43
- <div id="ballot_money_field" class="layui-hide">
44
- <input type="text" name="ballot_money" autocomplete="off" class="layui-input" id="ballot_money">
20
+ <div class="layui-card-bodys">
21
+ <div class="">
22
+ <div class="layui-row layui-col-space30">
23
+ <div class="layui-col-xs3">
24
+ <div class="panel layui-bg-number">
25
+ <div class="panel-body">
26
+ <div class="panel-title">
27
+ <% if can? :sale_trends, EducodeSales::SaleTrend %>
28
+ <span class="layui-icon layui-icon-edit pull-right" id="chance_money_edit"></span>
29
+ <% end %>
30
+ <h5>商机目标</h5>
31
+ </div>
32
+ <div class="panel-content y-t-10">
33
+ <h1 class="no-margins" id="chance_money_value"><%=@sale_trend.present? ? @sale_trend.chance_money : EducodeSales::SaleTrend.sum(:chance_money)%>万</h1>
34
+ <div id="chance_money_field" class="layui-hide">
35
+ <input type="text" name="chance_money" autocomplete="off"
36
+ class="layui-input" id="chance_money">
37
+ </div>
38
+ </div>
39
+ </div>
45
40
  </div>
46
41
  </div>
47
- </div>
48
- </div>
49
- </div>
50
- <div class="layui-col-xs3">
51
- <div class="panel layui-bg-number">
52
- <div class="panel-body">
53
- <div class="panel-title">
54
- <% if can? :sale_trends, EducodeSales::SaleTrend %>
55
- <span class="layui-icon layui-icon-edit pull-right" id="sign_money_edit"></span>
56
- <% end %>
57
- <h5>签单目标</h5>
58
- </div>
59
- <div class="panel-content y-t-10">
60
- <h1 class="no-margins" id="sign_money_value"><%=@sale_trend.present? ? @sale_trend.sign_money : EducodeSales::SaleTrend.sum(:sign_money)%>万</h1>
61
- <div id="sign_money_field" class="layui-hide">
62
- <input type="text" name="sign_money" autocomplete="off" class="layui-input" id="sign_money">
63
- </div>
42
+ <div class="layui-col-xs3">
43
+ <div class="panel layui-bg-number">
44
+ <div class="panel-body">
45
+ <div class="panel-title">
46
+ <% if can? :sale_trends, EducodeSales::SaleTrend %>
47
+ <span class="layui-icon layui-icon-edit pull-right" id="ballot_money_edit"></span>
48
+ <% end %>
49
+ <h5>中标目标</h5>
50
+ </div>
51
+ <div class="panel-content y-t-10">
52
+ <h1 class="no-margins" id="ballot_money_value"><%=@sale_trend.present? ? @sale_trend.ballot_money : EducodeSales::SaleTrend.sum(:ballot_money)%>万</h1>
53
+ <div id="ballot_money_field" class="layui-hide">
54
+ <input type="text" name="ballot_money" autocomplete="off" class="layui-input" id="ballot_money">
55
+ </div>
56
+ </div>
57
+ </div>
58
+ </div>
64
59
  </div>
65
- </div>
66
- </div>
67
- </div>
68
- <div class="layui-col-xs3" >
69
- <div class="panel layui-bg-number">
70
- <div class="panel-body">
71
- <div class="panel-title">
72
- <% if can? :sale_trends, EducodeSales::SaleTrend %>
73
- <span class="layui-icon layui-icon-edit pull-right" id="returned_money_edit"></span>
74
- <% end %>
75
- <h5>回款目标</h5>
60
+ <div class="layui-col-xs3">
61
+ <div class="panel layui-bg-number">
62
+ <div class="panel-body">
63
+ <div class="panel-title">
64
+ <% if can? :sale_trends, EducodeSales::SaleTrend %>
65
+ <span class="layui-icon layui-icon-edit pull-right" id="sign_money_edit"></span>
66
+ <% end %>
67
+ <h5>签单目标</h5>
68
+ </div>
69
+ <div class="panel-content y-t-10">
70
+ <h1 class="no-margins" id="sign_money_value"><%=@sale_trend.present? ? @sale_trend.sign_money : EducodeSales::SaleTrend.sum(:sign_money)%>万</h1>
71
+ <div id="sign_money_field" class="layui-hide">
72
+ <input type="text" name="sign_money" autocomplete="off" class="layui-input" id="sign_money">
73
+ </div>
74
+ </div>
75
+ </div>
76
+ </div>
76
77
  </div>
77
- <div class="panel-content y-t-10">
78
- <h1 class="no-margins" id="returned_money_value"><%=@sale_trend.present? ? @sale_trend.returned_money : EducodeSales::SaleTrend.sum(:returned_money)%>万</h1>
79
- <div id="returned_money_field" class="layui-hide">
80
- <input type="text" name="returned_money" autocomplete="off" class="layui-input" id="returned_money">
78
+ <div class="layui-col-xs3" >
79
+ <div class="panel layui-bg-number">
80
+ <div class="panel-body">
81
+ <div class="panel-title">
82
+ <% if can? :sale_trends, EducodeSales::SaleTrend %>
83
+ <span class="layui-icon layui-icon-edit pull-right" id="returned_money_edit"></span>
84
+ <% end %>
85
+ <h5>回款目标</h5>
86
+ </div>
87
+ <div class="panel-content y-t-10">
88
+ <h1 class="no-margins" id="returned_money_value"><%=@sale_trend.present? ? @sale_trend.returned_money : EducodeSales::SaleTrend.sum(:returned_money)%>万</h1>
89
+ <div id="returned_money_field" class="layui-hide">
90
+ <input type="text" name="returned_money" autocomplete="off" class="layui-input" id="returned_money">
91
+ </div>
92
+ </div>
93
+ </div>
81
94
  </div>
82
95
  </div>
83
- </div>
84
- </div>
85
- </div>
86
96
 
87
- <div class="layui-col-xs3">
88
- <div class="panel layui-bg-number">
89
- <div class="panel-body">
90
- <div class="panel-title">
91
- <h5>现有商机<a href="/missions/businesses?name=(销售态势-<%=@year %>-现有商机)" style="color: #0000FF;float: right">查看商机</a></h5>
92
- </div>
93
- <div class="panel-content y-t-10">
94
- <h1 class="no-margins"><%= @business_amount %>万</h1>
97
+ <div class="layui-col-xs3">
98
+ <div class="panel layui-bg-number">
99
+ <div class="panel-body">
100
+ <div class="panel-title">
101
+ <h5>现有商机<a href="/missions/businesses?name=(销售态势-<%=@year %>-现有商机)" style="color: #0000FF;float: right">查看商机</a></h5>
102
+ </div>
103
+ <div class="panel-content y-t-10">
104
+ <h1 class="no-margins"><%= @business_amount.round(2) %>万</h1>
105
+ </div>
106
+ </div>
107
+ </div>
95
108
  </div>
96
- </div>
97
- </div>
98
- </div>
99
109
 
100
- <div class="layui-col-xs3">
101
- <div class="panel layui-bg-number">
102
- <div class="panel-body">
103
- <div class="panel-title">
104
- <h5>已中标(总额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已中标商机)" style="color: #0000FF;float: right">查看商机</a></h5>
105
- </div>
106
- <div class="panel-content y-t-10">
107
- <h1 class="no-margins"><%= @goal_amount %>万</h1>
110
+ <div class="layui-col-xs3">
111
+ <div class="panel layui-bg-number">
112
+ <div class="panel-body">
113
+ <div class="panel-title">
114
+ <h5>已中标(总额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已中标商机)" style="color: #0000FF;float: right">查看商机</a></h5>
115
+ </div>
116
+ <div class="panel-content y-t-10">
117
+ <h1 class="no-margins"><%= @goal_amount %>万</h1>
118
+ </div>
119
+ </div>
120
+ </div>
108
121
  </div>
109
- </div>
110
- </div>
111
- </div>
112
122
 
113
- <div class="layui-col-xs3">
114
- <div class="panel layui-bg-number">
115
- <div class="panel-body">
116
- <div class="panel-title">
117
- <h5>已签单(总额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已签单商机)" style="color: #0000FF;float: right">查看商机</a></h5>
118
- </div>
119
- <div class="panel-content y-t-10">
120
- <h1 class="no-margins"><%= @service_amount %>万</h1>
123
+ <div class="layui-col-xs3">
124
+ <div class="panel layui-bg-number">
125
+ <div class="panel-body">
126
+ <div class="panel-title">
127
+ <h5>已签单(总额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已签单商机)" style="color: #0000FF;float: right">查看商机</a></h5>
128
+ </div>
129
+ <div class="panel-content y-t-10">
130
+ <h1 class="no-margins"><%= @service_amount %>万</h1>
131
+ </div>
132
+ </div>
133
+ </div>
121
134
  </div>
122
- </div>
123
- </div>
124
- </div>
125
135
 
126
- <div class="layui-col-xs3">
127
- <div class="panel layui-bg-number">
128
- <div class="panel-body">
129
- <div class="panel-title">
130
- <h5>已回款<a href="/missions/businesses?name=(销售态势-<%=@year %>-已回款商机)" style="color: #0000FF;float: right">查看商机</a></h5>
131
- </div>
132
- <div class="panel-content y-t-10">
133
- <h1 class="no-margins"><%= @return_amount %>万</h1>
136
+ <div class="layui-col-xs3">
137
+ <div class="panel layui-bg-number">
138
+ <div class="panel-body">
139
+ <div class="panel-title">
140
+ <h5>已回款<a href="/missions/businesses?name=(销售态势-<%=@year %>-已回款商机)" style="color: #0000FF;float: right">查看商机</a></h5>
141
+ </div>
142
+ <div class="panel-content y-t-10">
143
+ <h1 class="no-margins"><%= @return_amount %>万</h1>
144
+ </div>
145
+ </div>
146
+ </div>
134
147
  </div>
135
- </div>
136
- </div>
137
- </div>
138
148
 
139
- <div class="layui-col-xs3">
140
- <div class="panel layui-bg-number">
141
- <div class="panel-body">
142
- <div class="panel-title">
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
- </div>
145
- <div class="panel-content y-t-10">
146
- <h1 class="no-margins"><%= @a_amount %>万</h1>
147
- </div>
148
- </div>
149
- </div>
150
- </div>
151
- <div class="layui-col-xs3">
152
- <div class="panel layui-bg-number">
153
- <div class="panel-body">
154
- <div class="panel-title">
155
- <h5>已中标(合同额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已中标商机)" style="color: #0000FF;float: right">查看商机</a></h5>
149
+ <div class="layui-col-xs3">
150
+ <div class="panel layui-bg-number">
151
+ <div class="panel-body">
152
+ <div class="panel-title">
153
+ <h5>A类商机<a href="/missions/businesses?clazz_id=<%=EducodeSales::Common.find_by(extras: EducodeSales::Common::ATYPE)&.id %>" style="color: #0000FF;float: right">查看商机</a></h5>
154
+ </div>
155
+ <div class="panel-content y-t-10">
156
+ <h1 class="no-margins"><%= @a_amount %>万</h1>
157
+ </div>
158
+ </div>
159
+ </div>
156
160
  </div>
157
- <div class="panel-content y-t-10">
158
- <h1 class="no-margins"><%= @actual_goal_amount %>万</h1>
161
+ <div class="layui-col-xs3">
162
+ <div class="panel layui-bg-number">
163
+ <div class="panel-body">
164
+ <div class="panel-title">
165
+ <h5>已中标(合同额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已中标商机)" style="color: #0000FF;float: right">查看商机</a></h5>
166
+ </div>
167
+ <div class="panel-content y-t-10">
168
+ <h1 class="no-margins"><%= @actual_goal_amount %>万</h1>
169
+ </div>
170
+ </div>
171
+ </div>
159
172
  </div>
160
- </div>
161
- </div>
162
- </div>
163
173
 
164
- <div class="layui-col-xs3">
165
- <div class="panel layui-bg-number">
166
- <div class="panel-body">
167
- <div class="panel-title">
168
- <h5>已签单(合同额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已签单商机)" style="color: #0000FF;float: right">查看商机</a></h5>
169
- </div>
170
- <div class="panel-content y-t-10">
171
- <h1 class="no-margins"><%= @actual_service_amount %>万</h1>
174
+ <div class="layui-col-xs3">
175
+ <div class="panel layui-bg-number">
176
+ <div class="panel-body">
177
+ <div class="panel-title">
178
+ <h5>已签单(合同额)<a href="/missions/businesses?name=(销售态势-<%=@year %>-已签单商机)" style="color: #0000FF;float: right">查看商机</a></h5>
179
+ </div>
180
+ <div class="panel-content y-t-10">
181
+ <h1 class="no-margins"><%= @actual_service_amount %>万</h1>
182
+ </div>
183
+ </div>
184
+ </div>
172
185
  </div>
173
- </div>
174
- </div>
175
- </div>
176
186
 
177
- <div class="layui-row layui-col-space30" >
178
- <div class="layui-col-xs3">
179
- <div class="panel layui-bg-number">
180
- <div class="panel-body">
181
- <div class="panel-title">
182
- <h5>B类商机<a href="/missions/businesses?clazz_id=<%=EducodeSales::Common.find_by(extras: EducodeSales::Common::BTYPE)&.id %>" style="color: #0000FF;float: right">查看商机</a></h5>
187
+ <div class="layui-col-xs3">
188
+ <div class="panel layui-bg-number">
189
+ <div class="panel-body">
190
+ <div class="panel-title">
191
+ <h5>应收款<a href="/missions/businesses?name=(销售态势-<%=@year %>-应收款商机)" style="color: #0000FF;float: right">查看商机</a></h5>
192
+ </div>
193
+ <div class="panel-content y-t-10">
194
+ <h1 class="no-margins"><%= @receivable_amount %>万</h1>
195
+ </div>
196
+ </div>
197
+ </div>
183
198
  </div>
184
- <div class="panel-content y-t-10">
185
- <h1 class="no-margins"><%= @b_amount %>万</h1>
199
+
200
+ <div class="layui-col-xs3">
201
+ <div class="panel layui-bg-number">
202
+ <div class="panel-body">
203
+ <div class="panel-title">
204
+ <h5>B类商机<a href="/missions/businesses?clazz_id=<%=EducodeSales::Common.find_by(extras: EducodeSales::Common::BTYPE)&.id %>" style="color: #0000FF;float: right">查看商机</a></h5>
205
+ </div>
206
+ <div class="panel-content y-t-10">
207
+ <h1 class="no-margins"><%= @b_amount %>万</h1>
208
+ </div>
209
+ </div>
210
+ </div>
186
211
  </div>
187
212
  </div>
188
213
  </div>
189
214
  </div>
190
215
  </div>
191
- </div>
192
- </div>
193
- </div>
194
- </div>
195
- </div>
196
- </form>
197
- <br>
198
- <div class="" id="商机跟进数">
199
- <ul class="layui-tab-title">
200
- <li class="layui-this">商机跟进数</li>
201
- </ul>
202
- <div class="" style="padding-right: 50px">
203
- <div class=" layui-show " style="padding-left: 20px">
204
- <div style="margin: 10px 10px 10px 10px">
205
- <form class="layui-form layui-form-pane" lay-filter="search_form">
206
- <div class="layui-form-item">
207
- <div class="layui-inline m-t-10">
208
- <label class="layui-form-label">视图</label>
209
- <div class="layui-input-inline">
210
- <%= select_tag "follow_count_range", options_for_select([['按天','day'],['按周','week'],['按月','month'],['按年','year']],params[:follow_count_range] || 'week'), {'lay-filter': 'follow_count'}%>
211
- </div>
212
- </div>
213
- <div class="layui-inline">
214
- <label class="layui-form-label">时间范围</label>
215
- <div class="layui-input-inline">
216
- <input type="text" class="layui-input month layui-hide" id="date_month" name="date_month" placeholder=" - " value="<%=params[:date_month] %>" autocomplete="off" >
217
- <input type="text" class="layui-input year layui-hide" id="date_year" name="date_year" placeholder=" - " value="<%=params[:date_year] %>" autocomplete="off">
218
- <input type="text" class="layui-input week " id="date_week" name="date_week" placeholder=" - " value="<%=params[:date_week].present? ? params[:date_week] : (Time.now - 30.days).beginning_of_week.to_s(:date) + ' - ' + Time.now.end_of_week.to_s(:date) %>" autocomplete="off">
219
- <input type="text" class="layui-input day layui-hide" id="date" name="date" placeholder=" - " value="<%=params[:date] %>" autocomplete="off">
220
- </div>
221
- </div>
222
- <div class="layui-inline">
223
- <button type="button" id="search_bt" class=" follow_count_bt layui-btn layui-btn-primary" lay-submit lay-filter="search_bussiness">确定
224
- </button>
225
- </div>
226
- </div>
227
- </form>
228
- </div>
229
- <canvas id="myChart" width="960" height="200"></canvas>
230
- </div>
231
- </div>
232
- </div>
233
- <br>
234
- <br>
235
- <div class=" " id="销售额分析" lay-filter="test1">
236
- <ul class="layui-tab-title">
237
- <li class="layui-this">销售额分析</li>
238
- </ul>
239
- <div class="" style="padding-right: 50px">
240
- <div class=" layui-show" style="padding-left: 20px">
241
- <div style="margin: 10px 10px 10px 10px">
242
- <form class="layui-form layui-form-pane" lay-filter="search_form">
243
- <div class="layui-form-item">
244
- <div class="layui-inline m-t-10">
245
- <label class="layui-form-label">维度</label>
246
- <div class="layui-input-inline">
247
- <%= select_tag "count_type", options_for_select([['按合同额统计','actual_amount'],['按总额统计','total_amount']],params[:count_type]), {'lay-filter': 'count_type'}%>
248
- </div>
249
- </div>
250
- <div class="layui-inline m-t-10">
251
- <label class="layui-form-label">视图</label>
252
- <div class="layui-input-inline">
253
- <%= select_tag "goal_count_range", options_for_select([['按月','month'],['按年','year']],params[:goal_count_range]), {'lay-filter': 'goal_count'}%>
254
- </div>
255
- </div>
256
- <div class="layui-inline">
257
- <label class="layui-form-label">时间范围</label>
258
- <div class="layui-input-inline">
259
- <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") %>" autocomplete="off">
260
- <input type="text" class="layui-input goal_year layui-hide" id="goal_date_year" name="goal_date_year" placeholder=" - " value="<%=params[:goal_date_year] %>" autocomplete="off">
261
- </div>
262
- </div>
263
- <div class="layui-inline">
264
- <button type="button" id="search_bt" class="goal_count_bt layui-btn layui-btn-primary" lay-submit lay-filter="search_bussiness">确定
265
- </button>
266
- </div>
267
216
  </div>
268
217
  </form>
269
- </div>
270
- <canvas id="myChart2" width="960" height="200"></canvas>
271
218
  </div>
272
-
273
- </div>
274
- </div>
275
- <br>
276
- <br>
277
- <div class=" " id="销售额分析" lay-filter="test1">
278
- <ul class="layui-tab-title">
279
- <li class="layui-this">商机区域分布</li>
280
- </ul>
281
- <div class="" style="padding-right: 50px">
282
- <div class=" layui-show" style="padding-left: 20px">
283
- <div style="margin: 10px 10px 10px 10px">
284
- <form class="layui-form layui-form-pane" lay-filter="search_form">
285
- <div class="layui-form-item">
286
- <div class="layui-inline m-t-10">
287
- <label class="layui-form-label">维度</label>
288
- <div class="layui-input-inline">
289
- <%= select_tag "business_count_type", options_for_select([['按商机总额统计','money'],['按商机数量统计','count']],params[:goal_count_range]), {'lay-filter': 'goal_count'}%>
290
- </div>
291
- </div>
292
- <div class="layui-inline m-t-10">
293
- <label class="layui-form-label">商机类型</label>
294
- <div class="layui-input-inline">
295
- <%= select_tag "business_type", options_for_select(EducodeSales::Common.where(clazz: 'business_type').where.not(extras: "x_class").pluck(:name, :id), params[:clazz_id]), { 'lay-filter': 'clazz_id', include_blank: true } %>
296
- </div>
297
- </div>
298
- <div class="layui-inline">
299
- <button type="button" id="search_bt" class="business_bt layui-btn layui-btn-primary" lay-submit lay-filter="business_chart">确定
300
- </button>
301
- </div>
302
- </div>
303
- </form>
304
- </div>
305
- <canvas id="myChart3" width="960" height="200"></canvas>
219
+ <div class="layui-tab-item">
220
+ <div id="page_2"></div>
306
221
  </div>
307
222
 
308
- </div>
309
- </div>
310
- <div class=" " id="销售人员跟进分析" lay-filter="test1">
311
- <ul class="layui-tab-title">
312
- <li class="layui-this">销售人员跟进分析</li>
313
- </ul>
314
- <div class="" style="padding-right: 50px">
315
- <div class=" layui-show" style="padding-left: 20px">
316
- <div style="margin: 10px 10px 10px 10px">
317
- <form class="layui-form layui-form-pane" lay-filter="search_form">
318
- <div class="layui-form-item">
319
- <div class="layui-inline m-t-10">
320
- <label class="layui-form-label">维度</label>
321
- <div class="layui-input-inline">
322
- <%= select_tag "customer_count_type", options_for_select([['按跟进客户数统计','money'],['按跟进客户次数统计','count']],params[:goal_count_range]), {'lay-filter': 'goal_count'}%>
323
- </div>
324
- </div>
325
- <div class="layui-inline m-t-10">
326
- <label class="layui-form-label">时间范围</label>
327
- <div class="layui-input-inline">
328
- <% options = [['上周','last_week'],['本周','this_week'],['上月','last_month'],['本月','this_month'],['去年','last_year'],['今年','this_year'],['全部','all'],['自定义','diy']]%>
329
- <%= select_tag "customer_time_range", options_for_select(options,'this_year'), { 'lay-filter': 'customer_time_range'} %>
330
- </div>
331
- </div>
332
- <div class="layui-inline m-t-10 layui-hide diy_range" id="diy_range">
333
- <label class="layui-form-label">自定义范围</label>
334
- <div class="layui-input-inline">
335
- <input type="text" class="layui-input" id="customer_date" name="customer_date" placeholder=" - " autocomplete="off">
336
- </div>
337
- </div>
338
- <div class="layui-inline">
339
- <button type="button" id="search_bt" class="customer_bt layui-btn layui-btn-primary" lay-submit lay-filter="customer_chart">确定
340
- </button>
341
- </div>
342
- </div>
343
- </form>
344
- </div>
345
- <canvas id="myChart4" width="960" height="200"></canvas>
346
- </div>
223
+ <div class="layui-tab-item">
224
+ <div id="page_3"></div>
225
+ </div>
347
226
 
227
+ <div class="layui-tab-item">
228
+ <div id="page_4"></div>
229
+ </div>
230
+ <div class="layui-tab-item">
231
+ <div id="page_5"></div>
232
+ </div>
348
233
  </div>
349
234
  </div>
235
+
236
+
350
237
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/chart.js@2.9.1/dist/Chart.min.css">
351
238
  <script src="https://cdn.jsdelivr.net/npm/chart.js@2.9.1/dist/Chart.min.js"></script>
352
239
  <script>
353
- follow_type = "<%=@follow_count_range %>"
354
- goal_type = "<%=@goal_count_range %>"
355
- follow_flag = <%=params[:follow_count_range].present? %>
356
- if(follow_flag){
357
- window.location.href = "#商机跟进数"
358
- }
359
-
360
- goal_flag = <%=params[:goal_count_range].present? %>
361
- if(goal_flag){
362
- window.location.href = "#销售额分析"
363
- }
364
- layui.use(['form', 'jquery', 'request'], function () {
240
+ layui.use(['form', 'jquery', 'request', 'element'], function () {
365
241
  var $ = layui.jquery,
366
242
  form = layui.form,
367
243
  request = layui.request;
368
244
  var year = "<%= @year %>";
369
245
  var element = layui.element;
370
246
  laydate = layui.laydate;
247
+ element.render();
248
+ element.on('tab(sale_trend_tab)', function(data) {
249
+ if (data.index == 1 && $("#tab_2").length == 0) {
250
+ loadPage('/missions/sale_trends/business_followup_analysis')
251
+ } else if (data.index == 2 && $("#tab_3").length == 0 ) {
252
+ loadPage('/missions/sale_trends/sales_analysis')
253
+ } else if (data.index == 3 && $("#tab_4").length == 0 ) {
254
+ loadPage('/missions/sale_trends/business_area')
255
+ } else if (data.index == 4 && $("#tab_5").length == 0 ) {
256
+ loadPage('/missions/sale_trends/sales_followup_analysis')
257
+ }
258
+ });
371
259
 
372
- form.on('select(customer_time_range)', function(data){
373
- const value = data.value;
374
- if(value == "diy"){
375
- $(".diy_range").removeClass("layui-hide")
376
- }else {
377
- $(".diy_range").addClass('layui-hide')
378
- }
379
- })
380
-
381
- if(follow_type == "day"){
382
- $(".year").addClass('layui-hide')
383
- $(".month").addClass('layui-hide')
384
- $(".week").addClass('layui-hide')
385
- $(".day").removeClass('layui-hide')
386
- }else if(follow_type == "month"){
387
- $(".year").addClass('layui-hide')
388
- $(".week").addClass('layui-hide')
389
- $(".month").removeClass('layui-hide')
390
- $(".day").addClass('layui-hide')
391
- }else if(follow_type == "week"){
392
- $(".year").addClass('layui-hide')
393
- $(".day").addClass('layui-hide')
394
- $(".week").removeClass('layui-hide')
395
- $(".month").addClass('layui-hide')
396
- }else {
397
- $(".year").removeClass('layui-hide')
398
- $(".month").addClass('layui-hide')
399
- $(".day").addClass('layui-hide')
400
- $(".week").addClass('layui-hide')
401
- }
402
260
 
403
- if(goal_type == "year"){
404
- $(".goal_year").removeClass('layui-hide')
405
- $(".goal_month").addClass('layui-hide')
406
- }else{
407
- $(".goal_year").addClass('layui-hide')
408
- $(".goal_month").removeClass('layui-hide')
261
+ function loadPage(url) {
262
+ var layer_index = layer.load(0, {shade: [0.1, '#fff']});
263
+ Rails.ajax({
264
+ url: url,
265
+ type: 'GET',
266
+ dataType: "script",
267
+ success: function (res) {
268
+ layer.close(layer_index);
269
+ }
270
+ });
409
271
  }
410
272
 
411
273
  function editForm(el) {
@@ -438,194 +300,14 @@
438
300
  })
439
301
  }
440
302
 
441
- // 时间选择器
442
- laydate.render({
443
- elem: '#date',
444
- range: true
445
- });
446
- laydate.render({
447
- elem: '#customer_date',
448
- range: true
449
- });
450
- laydate.render({
451
- elem: '#date_week',
452
- range: true
453
- });
454
- laydate.render({
455
- type: 'month',
456
- elem: '#date_month',
457
- range: true
458
- });
459
- laydate.render({
460
- type: 'year',
461
- elem: '#date_year',
462
- range: true
463
- });
464
- laydate.render({
465
- type: 'year',
466
- elem: '#goal_date_year',
467
- range: true
468
- });
469
- laydate.render({
470
- type: 'month',
471
- elem: '#goal_date_month',
472
- range: true
473
- });
474
-
475
-
476
303
  form.on('select(year)', function(data){
477
304
  year = data.value
478
305
  window.location.href = "/missions/sale_trends/trends?year=" + data.value
479
306
  })
480
- form.on('select(follow_count)', function(data){
481
- const value = data.value;
482
- if(value == "month"){
483
- $(".year").addClass('layui-hide')
484
- $(".day").addClass('layui-hide')
485
- $(".week").addClass('layui-hide')
486
- $(".month").removeClass('layui-hide')
487
- }else if(value == "year"){
488
- $(".month").addClass('layui-hide')
489
- $(".day").addClass('layui-hide')
490
- $(".week").addClass('layui-hide')
491
- $(".year").removeClass('layui-hide')
492
- }else if(value == "week"){
493
- $(".month").addClass('layui-hide')
494
- $(".day").addClass('layui-hide')
495
- $(".week").removeClass('layui-hide')
496
- $(".year").addClass('layui-hide')
497
- }else {
498
- $(".month").addClass('layui-hide')
499
- $(".year").addClass('layui-hide')
500
- $(".day").removeClass('layui-hide')
501
- $(".week").addClass('layui-hide')
502
-
503
- }
504
- })
505
-
506
- form.on('select(goal_count)', function(data){
507
- const value = data.value;
508
- if(value == "month"){
509
- $(".goal_year").addClass('layui-hide')
510
- $(".goal_month").removeClass('layui-hide')
511
- }else {
512
- $(".goal_month").addClass('layui-hide')
513
- $(".goal_year").removeClass('layui-hide')
514
- }
515
- })
516
307
 
517
308
  editForm("chance_money");
518
309
  editForm("ballot_money");
519
310
  editForm("sign_money");
520
311
  editForm("returned_money");
521
-
522
- element.on('tab(test1)', function(){
523
- window.location.href = "#销售额分析"
524
- });
525
-
526
- var ctx = document.getElementById('myChart');
527
- var myChart = new Chart(ctx, {
528
- type: 'line',
529
- data: <%=raw @follow_count_data.to_json %>,
530
- options: {
531
- elements: {
532
- line: {
533
- tension: 0
534
- }
535
- }
536
- }
537
- });
538
-
539
-
540
- var opt = {
541
- events: false,
542
- tooltips: {
543
- enabled: false
544
- },
545
- hover: {
546
- animationDuration: 0
547
- },
548
- animation: {
549
- duration: 1,
550
- onComplete: function () {
551
- var chartInstance = this.chart,
552
- ctx = chartInstance.ctx;
553
- ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);
554
- ctx.textAlign = 'center';
555
- ctx.textBaseline = 'bottom';
556
-
557
- this.data.datasets.forEach(function (dataset, i) {
558
- var meta = chartInstance.controller.getDatasetMeta(i);
559
- meta.data.forEach(function (bar, index) {
560
- var data = dataset.data[index];
561
- ctx.fillText(data, bar._model.x, bar._model.y - 5);
562
- });
563
- });
564
- }
565
- }
566
- };
567
-
568
-
569
- var ctx = document.getElementById('myChart2');
570
- var myChart2 = new Chart(ctx, {
571
- type: 'bar',
572
- data: <%=raw @goal_count_data.to_json %>,
573
- options: opt
574
- });
575
-
576
- var ctx = document.getElementById('myChart3');
577
- var myChart3 = new Chart(ctx, {
578
- type: 'bar',
579
- data: <%=raw @business_data.to_json %>,
580
- options: opt
581
- });
582
-
583
- var ctx = document.getElementById('myChart4');
584
- var myChart4 = new Chart(ctx, {
585
- type: 'bar',
586
- data: <%=raw @customer_data.to_json %>,
587
- options: opt
588
- });
589
-
590
- $(document).ready(function () {
591
- $(".follow_count_bt").click(function () {
592
- layer.load(0, {});
593
- $.get('/missions/sale_trends/trends.json?follow_count_range=' + $("#follow_count_range").val() + '&date_month=' + $("#date_month").val() + '&date_week=' + $("#date_week").val() + '&date_year=' + $("#date_year").val() + '&date=' + $("#date").val()).done(function(res) {
594
- layer.closeAll('loading');
595
- var data1 = res.data1;
596
- myChart.data = data1
597
- myChart.update()
598
- });
599
- });
600
- $(".goal_count_bt").click(function () {
601
- layer.load(0, {});
602
- $.get('/missions/sale_trends/trends.json?count_type=' + $("#count_type").val() + '&goal_count_range=' + $("#goal_count_range").val() + '&goal_date_month=' + $("#goal_date_month").val() + '&goal_date_year=' + $("#goal_date_year").val()).done(function(res) {
603
- layer.closeAll('loading');
604
- var data2 = res.data2;
605
- myChart2.data = data2
606
- myChart2.update()
607
-
608
- });
609
- });
610
- $(".business_bt").click(function () {
611
- layer.load(0, {});
612
- $.get('/missions/sale_trends/trends.json?business_count_type=' + $("#business_count_type").val() + '&business_type=' + $("#business_type").val()).done(function(res) {
613
- layer.closeAll('loading');
614
- var data3 = res.data3;
615
- myChart3.data = data3
616
- myChart3.update()
617
- });
618
- });
619
- $(".customer_bt").click(function () {
620
- layer.load(0, {});
621
- $.get('/missions/sale_trends/trends.json?customer_count_type=' + $("#customer_count_type").val() + '&customer_time_range=' + $("#customer_time_range").val() + '&customer_date=' + $("#customer_date").val()).done(function(res) {
622
- layer.closeAll('loading');
623
- var data4 = res.data4;
624
- myChart4.data = data4
625
- myChart4.update()
626
- });
627
- });
628
- });
629
-
630
312
  })
631
313
  </script>