educode_sales 0.9.2 → 0.9.5
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.
- checksums.yaml +4 -4
- data/app/controllers/educode_sales/application_controller.rb +3 -1
- data/app/controllers/educode_sales/sale_trends_controller.rb +266 -253
- data/app/controllers/educode_sales/sessions_controller.rb +1 -0
- data/app/controllers/educode_sales/user_behaviors_controller.rb +26 -0
- data/app/models/educode_sales/login_history.rb +5 -0
- data/app/models/educode_sales/sale_trend.rb +2 -0
- data/app/models/educode_sales/staff.rb +22 -0
- data/app/views/educode_sales/sale_trends/_business_area.html.erb +83 -0
- data/app/views/educode_sales/sale_trends/_business_followup_analysis.html.erb +110 -0
- data/app/views/educode_sales/sale_trends/_sales_analysis.html.erb +121 -0
- data/app/views/educode_sales/sale_trends/_sales_followup_analysis.html.erb +106 -0
- data/app/views/educode_sales/sale_trends/business_area.js.erb +1 -0
- data/app/views/educode_sales/sale_trends/business_followup_analysis.js.erb +1 -0
- data/app/views/educode_sales/sale_trends/sales_analysis.js.erb +1 -0
- data/app/views/educode_sales/sale_trends/sales_followup_analysis.js.erb +1 -0
- data/app/views/educode_sales/sale_trends/trends.html.erb +214 -548
- data/app/views/educode_sales/user_behaviors/index.html.erb +80 -0
- data/app/views/educode_sales/user_behaviors/index.json.jbuilder +13 -0
- data/app/views/layouts/educode_sales/application.html.erb +6 -1
- data/config/routes.rb +5 -1
- data/db/migrate/20220827130438_create_educode_sales_login_histories.rb +13 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +19 -7
- data/app/assets/images/educode_sales/indexlogo.png +0 -0
@@ -0,0 +1,80 @@
|
|
1
|
+
<script type="text/html" id="user_behaviors_topbar">
|
2
|
+
<div class="layui-btn-container">
|
3
|
+
<span class="table-label">行为分析</span>
|
4
|
+
</div>
|
5
|
+
</script>
|
6
|
+
<div class="min-height-table">
|
7
|
+
<table class="layui-hide" id="user_behaviors_table" lay-filter="user_behaviors_table"></table>
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<script>
|
11
|
+
layui.use(['form', 'table', 'miniPage', 'element', 'request'], function () {
|
12
|
+
var $ = layui.jquery,
|
13
|
+
form = layui.form,
|
14
|
+
table = layui.table,
|
15
|
+
request = layui.request,
|
16
|
+
miniPage = layui.miniPage;
|
17
|
+
|
18
|
+
table.render({
|
19
|
+
elem: '#user_behaviors_table',
|
20
|
+
url: '/missions/user_behaviors',
|
21
|
+
totalRow:true,
|
22
|
+
toolbar: '#user_behaviors_topbar',
|
23
|
+
defaultToolbar: [],
|
24
|
+
cols: [
|
25
|
+
[
|
26
|
+
{
|
27
|
+
field: 'id',
|
28
|
+
title:'序号',
|
29
|
+
type: 'numbers',
|
30
|
+
width: 60
|
31
|
+
},
|
32
|
+
{
|
33
|
+
field: 'name',
|
34
|
+
title: '用户名',
|
35
|
+
width: 120,
|
36
|
+
sort: true,
|
37
|
+
},
|
38
|
+
{
|
39
|
+
field: 'last_ip',
|
40
|
+
title: '上次登录IP',
|
41
|
+
width: 120
|
42
|
+
},
|
43
|
+
{
|
44
|
+
field: 'current_ip',
|
45
|
+
title: '当前登录IP',
|
46
|
+
width: 120
|
47
|
+
},
|
48
|
+
{
|
49
|
+
field: 'last_login_at',
|
50
|
+
width: 200,
|
51
|
+
title: '上次登录时间',
|
52
|
+
sort: true,
|
53
|
+
},
|
54
|
+
{
|
55
|
+
field: 'created_at',
|
56
|
+
width: 200,
|
57
|
+
title: '当前登录时间',
|
58
|
+
sort: true,
|
59
|
+
}
|
60
|
+
]
|
61
|
+
],
|
62
|
+
limit: 20,
|
63
|
+
limits: [10,15,20,30,40,50,60,70,80,90],
|
64
|
+
page: true
|
65
|
+
});
|
66
|
+
|
67
|
+
var sort = {};
|
68
|
+
table.on('sort(user_behaviors_table)', function (obj) {
|
69
|
+
sort.field = obj.field;
|
70
|
+
sort.order = obj.type;
|
71
|
+
table.reload('user_behaviors_table', {
|
72
|
+
initSort: obj,
|
73
|
+
where: {
|
74
|
+
sort: sort
|
75
|
+
}
|
76
|
+
});
|
77
|
+
})
|
78
|
+
|
79
|
+
});
|
80
|
+
</script>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
json.data do
|
2
|
+
json.array! @data do |d|
|
3
|
+
json.id d.id
|
4
|
+
json.last_login_at d.last_login_at.to_s
|
5
|
+
json.created_at d.created_at.to_s
|
6
|
+
json.last_ip d.last_ip
|
7
|
+
json.current_ip d.current_ip
|
8
|
+
json.name d.staff&.user&.real_name
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
json.code 0
|
13
|
+
json.count @data.total_count
|
@@ -121,13 +121,18 @@
|
|
121
121
|
<% end %>
|
122
122
|
</dl>
|
123
123
|
</li>
|
124
|
-
<% if @current_admin.is_admin %>
|
124
|
+
<% if @current_admin.is_admin || @current_admin.code == 'userbe' %>
|
125
125
|
<li class="layui-nav-item layui-nav-itemed menu-li">
|
126
126
|
<a class="" href="javascript:;"><b><%= image_tag "educode_sales/13.系统设置.png",size:"15"%><i style="font-size: 25px; padding-right: 25px"></i>系统设置</b></a>
|
127
127
|
<dl class="layui-nav-child">
|
128
|
+
<% if @current_admin.is_admin %>
|
128
129
|
<dd><a href="/missions/roles" class="<%= current?('layui-this', roles_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/14.角色管理.png",size:"15"%><i style="font-size: 25px; padding-right: 15px"></i>角色管理</a></dd>
|
129
130
|
<dd><a href="/missions/staffs" class="<%= current?('layui-this', staffs_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/15.人员管理.png",size:"15"%><i style="font-size: 25px; padding-right: 15px"></i>人员管理</a></dd>
|
130
131
|
<dd><a href="/missions/commons" class="<%= current?('layui-this', commons_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/16.字典列表.png",size:"15"%><i style="font-size: 25px; padding-right: 15px"></i>字典列表</a></dd>
|
132
|
+
<% end %>
|
133
|
+
<% if @current_admin.code == 'userbe' %>
|
134
|
+
<dd><a href="/missions/user_behaviors" class="<%= current?('layui-this', user_behaviors_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/9.运营分工.png",size:"15"%><i style="font-size: 25px; padding-right: 15px"></i>行为分析</a></dd>
|
135
|
+
<% end %>
|
131
136
|
</dl>
|
132
137
|
</li>
|
133
138
|
<% end %>
|
data/config/routes.rb
CHANGED
@@ -19,7 +19,7 @@ EducodeSales::Engine.routes.draw do
|
|
19
19
|
resources :sessions do
|
20
20
|
end
|
21
21
|
|
22
|
-
|
22
|
+
resources :user_behaviors
|
23
23
|
resources :customer_extensions do
|
24
24
|
end
|
25
25
|
resources :customer_follows do
|
@@ -81,6 +81,10 @@ EducodeSales::Engine.routes.draw do
|
|
81
81
|
collection do
|
82
82
|
get :trends
|
83
83
|
post :sale_trends
|
84
|
+
get :business_followup_analysis
|
85
|
+
get :sales_analysis
|
86
|
+
get :business_area
|
87
|
+
get :sales_followup_analysis
|
84
88
|
end
|
85
89
|
end
|
86
90
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class CreateEducodeSalesLoginHistories < ActiveRecord::Migration[5.2]
|
2
|
+
def change
|
3
|
+
create_table :educode_sales_login_histories do |t|
|
4
|
+
t.references :staff
|
5
|
+
t.string :last_ip
|
6
|
+
t.string :current_ip
|
7
|
+
t.datetime :last_login_at
|
8
|
+
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
add_column :educode_sales_staffs, :code, :string, comment: '特别业务权限用途'
|
12
|
+
end
|
13
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: educode_sales
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- anke1460
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -105,7 +105,6 @@ files:
|
|
105
105
|
- app/assets/images/educode_sales/icon-login.png
|
106
106
|
- app/assets/images/educode_sales/icon.png
|
107
107
|
- app/assets/images/educode_sales/indexLogo.png
|
108
|
-
- app/assets/images/educode_sales/indexlogo.png
|
109
108
|
- app/assets/images/educode_sales/loading-0.gif
|
110
109
|
- app/assets/images/educode_sales/loading-1.gif
|
111
110
|
- app/assets/images/educode_sales/loading-2.gif
|
@@ -168,6 +167,7 @@ files:
|
|
168
167
|
- app/controllers/educode_sales/teacher_follows_controller.rb
|
169
168
|
- app/controllers/educode_sales/teachers_controller.rb
|
170
169
|
- app/controllers/educode_sales/upload_files_controller.rb
|
170
|
+
- app/controllers/educode_sales/user_behaviors_controller.rb
|
171
171
|
- app/helpers/educode_sales/activities_helper.rb
|
172
172
|
- app/helpers/educode_sales/application_helper.rb
|
173
173
|
- app/helpers/educode_sales/assessments_help.rb
|
@@ -197,6 +197,7 @@ files:
|
|
197
197
|
- app/models/educode_sales/filter.rb
|
198
198
|
- app/models/educode_sales/follow_up.rb
|
199
199
|
- app/models/educode_sales/key_person.rb
|
200
|
+
- app/models/educode_sales/login_history.rb
|
200
201
|
- app/models/educode_sales/market_area.rb
|
201
202
|
- app/models/educode_sales/money_plan.rb
|
202
203
|
- app/models/educode_sales/operation_plan.rb
|
@@ -364,7 +365,15 @@ files:
|
|
364
365
|
- app/views/educode_sales/sale_reports/index.json.jbuilder
|
365
366
|
- app/views/educode_sales/sale_reports/plans.json.jbuilder
|
366
367
|
- app/views/educode_sales/sale_reports/show.html.erb
|
368
|
+
- app/views/educode_sales/sale_trends/_business_area.html.erb
|
369
|
+
- app/views/educode_sales/sale_trends/_business_followup_analysis.html.erb
|
370
|
+
- app/views/educode_sales/sale_trends/_sales_analysis.html.erb
|
371
|
+
- app/views/educode_sales/sale_trends/_sales_followup_analysis.html.erb
|
372
|
+
- app/views/educode_sales/sale_trends/business_area.js.erb
|
373
|
+
- app/views/educode_sales/sale_trends/business_followup_analysis.js.erb
|
367
374
|
- app/views/educode_sales/sale_trends/operations.html.erb
|
375
|
+
- app/views/educode_sales/sale_trends/sales_analysis.js.erb
|
376
|
+
- app/views/educode_sales/sale_trends/sales_followup_analysis.js.erb
|
368
377
|
- app/views/educode_sales/sale_trends/trends.html.erb
|
369
378
|
- app/views/educode_sales/sale_trends/trends.json.jbuilder
|
370
379
|
- app/views/educode_sales/sales/index.html.erb
|
@@ -401,6 +410,8 @@ files:
|
|
401
410
|
- app/views/educode_sales/teachers/show_follow_record.html.erb
|
402
411
|
- app/views/educode_sales/teachers/unfinish_plans.json.jbuilder
|
403
412
|
- app/views/educode_sales/upload_files/index.json.jbuilder
|
413
|
+
- app/views/educode_sales/user_behaviors/index.html.erb
|
414
|
+
- app/views/educode_sales/user_behaviors/index.json.jbuilder
|
404
415
|
- app/views/layouts/educode_sales/application.html.erb
|
405
416
|
- app/views/layouts/educode_sales/login.html.erb
|
406
417
|
- config/locales/sale.zh-CN.yml
|
@@ -461,6 +472,7 @@ files:
|
|
461
472
|
- db/migrate/20220512031715_add_column_o_business_deployment_to_follow_ups.rb
|
462
473
|
- db/migrate/20220523023609_update_assessment_month_column_to_assessment_settings.rb
|
463
474
|
- db/migrate/20220523101628_update_column_to_follow_ups.rb
|
475
|
+
- db/migrate/20220827130438_create_educode_sales_login_histories.rb
|
464
476
|
- lib/educode_sales.rb
|
465
477
|
- lib/educode_sales/engine.rb
|
466
478
|
- lib/educode_sales/version.rb
|
@@ -469,7 +481,7 @@ homepage: https://www.educoder.net
|
|
469
481
|
licenses:
|
470
482
|
- MIT
|
471
483
|
metadata: {}
|
472
|
-
post_install_message:
|
484
|
+
post_install_message:
|
473
485
|
rdoc_options: []
|
474
486
|
require_paths:
|
475
487
|
- lib
|
@@ -484,8 +496,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
484
496
|
- !ruby/object:Gem::Version
|
485
497
|
version: '0'
|
486
498
|
requirements: []
|
487
|
-
rubygems_version: 3.0.
|
488
|
-
signing_key:
|
499
|
+
rubygems_version: 3.0.0
|
500
|
+
signing_key:
|
489
501
|
specification_version: 4
|
490
502
|
summary: Summary of EducodeSales.
|
491
503
|
test_files: []
|
Binary file
|