educode_sales 0.5.1 → 0.5.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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/educode_sales/businesses_controller.rb +5 -1
  3. data/app/controllers/educode_sales/follow_ups_controller.rb +2 -1
  4. data/app/controllers/educode_sales/operation_plans_controller.rb +22 -2
  5. data/app/controllers/educode_sales/operation_reports_controller.rb +33 -3
  6. data/app/controllers/educode_sales/plans_controller.rb +22 -2
  7. data/app/controllers/educode_sales/roles_controller.rb +5 -0
  8. data/app/controllers/educode_sales/sale_reports_controller.rb +33 -3
  9. data/app/controllers/educode_sales/sale_trends_controller.rb +196 -0
  10. data/app/controllers/educode_sales/sales_controller.rb +4 -0
  11. data/app/controllers/educode_sales/upload_files_controller.rb +33 -26
  12. data/app/models/educode_sales/common.rb +2 -1
  13. data/app/views/educode_sales/businesses/edit_follow_record.html.erb +3 -3
  14. data/app/views/educode_sales/businesses/file.html.erb +4 -5
  15. data/app/views/educode_sales/businesses/index.html.erb +14 -2
  16. data/app/views/educode_sales/businesses/index.json.jbuilder +1 -0
  17. data/app/views/educode_sales/businesses/new_follow_record.html.erb +2 -2
  18. data/app/views/educode_sales/businesses/show_follow_record.html.erb +1 -1
  19. data/app/views/educode_sales/operation_plans/index.html.erb +6 -1
  20. data/app/views/educode_sales/operation_reports/audit.html.erb +5 -3
  21. data/app/views/educode_sales/operation_reports/show.html.erb +4 -7
  22. data/app/views/educode_sales/places/index.html.erb +20 -5
  23. data/app/views/educode_sales/places/index.json.jbuilder +18 -2
  24. data/app/views/educode_sales/plans/index.html.erb +6 -1
  25. data/app/views/educode_sales/roles/index.html.erb +19 -1
  26. data/app/views/educode_sales/roles/rename.html.erb +50 -0
  27. data/app/views/educode_sales/sale_reports/audit.html.erb +5 -3
  28. data/app/views/educode_sales/sale_reports/show.html.erb +3 -6
  29. data/app/views/educode_sales/sale_trends/trends.html.erb +284 -4
  30. data/app/views/educode_sales/sale_trends/trends.json.jbuilder +14 -0
  31. data/app/views/educode_sales/sales/index.html.erb +75 -9
  32. data/app/views/educode_sales/sales/index.json.jbuilder +35 -1
  33. data/app/views/educode_sales/sales/operations.json.jbuilder +11 -1
  34. data/app/views/educode_sales/staffs/index.html.erb +6 -1
  35. data/app/views/educode_sales/staffs/index.json.jbuilder +11 -1
  36. data/app/views/educode_sales/teachers/add_keys.html.erb +1 -1
  37. data/app/views/educode_sales/teachers/index.html.erb +6 -1
  38. data/app/views/educode_sales/teachers/new.html.erb +1 -0
  39. data/app/views/educode_sales/upload_files/index.json.jbuilder +1 -1
  40. data/config/routes.rb +3 -0
  41. data/lib/educode_sales/version.rb +1 -1
  42. metadata +4 -2
@@ -35,7 +35,7 @@
35
35
  <div class="layui-inline">
36
36
  <label class="layui-form-label">渠道名称</label>
37
37
  <div class="layui-input-inline">
38
- <%= select_tag "place_id", options_for_select(EducodeSales::Place.pluck(:name, :id)), { include_blank: true } %>
38
+ <%= select_tag "place_id", options_for_select(EducodeSales::Place.pluck(:name, :id),params[:place_id]), { include_blank: true } %>
39
39
  </div>
40
40
  </div>
41
41
  <div class="layui-inline">
@@ -194,6 +194,13 @@
194
194
  totalRow: true,
195
195
  sort: true
196
196
  },
197
+ {
198
+ field: 'actual_amount',
199
+ width: 100,
200
+ title: '合同额',
201
+ totalRow: true,
202
+ sort: true
203
+ },
197
204
  {
198
205
  field: 'return_money',
199
206
  width: 100,
@@ -614,4 +621,9 @@
614
621
  });
615
622
 
616
623
  });
617
- </script>
624
+ </script>
625
+ <style>
626
+ .layui-table-tool-temp{
627
+ padding-right: 30px; !important;
628
+ }
629
+ </style>
@@ -17,6 +17,7 @@ json.data do
17
17
  json.bidded_date d.last_follow_up&.bidded_date.to_s
18
18
  json.signed_date d.last_follow_up&.signed_date.to_s
19
19
  json.total_amount d.last_follow_up&.total_amount
20
+ json.actual_amount d.last_follow_up&.actual_amount
20
21
  json.return_money d.return_money
21
22
  json.place d.last_follow_up&.place&.name
22
23
  json.last_follow_person d.last_follow_up.present? ? d.last_follow_up.staff.user.real_name : EducodeSales::Staff.find(d.staff_id).user.real_name
@@ -90,14 +90,14 @@
90
90
  </div>
91
91
  </div>
92
92
  <div class="layui-inline">
93
- <label class="layui-form-label">渠道分成</label>
93
+ <label class="layui-form-label">渠道分成(万)</label>
94
94
  <div class="layui-input-inline">
95
95
  <input name="divide_amount" class="layui-input" value="<%= @last_follow_up&.divide_amount%>">
96
96
  </div>
97
97
  </div>
98
98
  <div class="layui-form-item">
99
99
  <label class="layui-form-label">指定跟进人</label>
100
- <div class="layui-input-inline" style="z-index: 10000">
100
+ <div class="layui-input-inline" style="z-index: 100">
101
101
  <div id="assign_follow" style="width: 512px;"></div>
102
102
  </div>
103
103
  <div class="layui-inline" style="padding: 9px 15px">
@@ -75,7 +75,7 @@
75
75
  <div class="layui-inline">
76
76
  <label class="layui-form-label">渠道分成:</label>
77
77
  <div class="layui-input-inline">
78
- <%= @follow_up.divide_amount %>
78
+ <%= @follow_up.divide_amount %>万
79
79
  </div>
80
80
  </div>
81
81
  <div class="ayui-form-item">
@@ -49,4 +49,9 @@
49
49
 
50
50
  })
51
51
  })
52
- </script>
52
+ </script>
53
+ <style>
54
+ .layui-table-tool-temp{
55
+ padding-right: 30px; !important;
56
+ }
57
+ </style>
@@ -64,9 +64,11 @@
64
64
  <%end %>
65
65
  <br>
66
66
  <div class="layui-inline m-t-10">
67
+ <% if (can? :level1_audit, EducodeSales::OperationReport) || (can? :level2_audit, EducodeSales::OperationReport) || (can? :level3_audit, EducodeSales::OperationReport) %>
67
68
  <button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="audit_weekly_report"
68
69
  style="margin-left: 18px">提交
69
70
  </button>
71
+ <%end %>
70
72
  </div>
71
73
  </div>
72
74
  </form>
@@ -91,7 +93,7 @@
91
93
  rate.render({
92
94
  elem: '#weekStar4',
93
95
  half: true,
94
- value: "<%= @sale_report.level1_score %>",
96
+ value: parseFloat("<%= @sale_report.level1_score || 0%>"),
95
97
  length: 5,
96
98
  choose: function(value){
97
99
  level1_score = value
@@ -100,7 +102,7 @@
100
102
  rate.render({
101
103
  elem: '#weekStar5',
102
104
  half: true,
103
- value: "<%= @sale_report.level2_score %>",
105
+ value: parseFloat("<%= @sale_report.level2_score || 0%>"),
104
106
  length: 5,
105
107
  choose: function(value){
106
108
  level2_score = value
@@ -109,7 +111,7 @@
109
111
  rate.render({
110
112
  elem: '#weekStar6',
111
113
  half: true,
112
- value: "<%= @sale_report.level3_score %>",
114
+ value: parseFloat("<%= @sale_report.level3_score || 0%>"),
113
115
  length: 5,
114
116
  choose: function(value){
115
117
  level3_score = value
@@ -84,28 +84,25 @@
84
84
  $ = layui.jquery,
85
85
  miniPage = layui.miniPage,
86
86
  request = layui.request;
87
- table = layui.table;
87
+ table = layui.table
88
88
 
89
89
  rate.render({
90
90
  elem: '#weekStar4',
91
91
  half: true,
92
92
  readonly: true,
93
- value: "<%= @sale_report.level1_score %>",
94
- length: "<%= @sale_report.level1_score %>"
93
+ value: parseFloat("<%= @sale_report.level1_score || 0%>"),
95
94
  })
96
95
  rate.render({
97
96
  elem: '#weekStar5',
98
97
  half: true,
99
98
  readonly: true,
100
- value: "<%= @sale_report.level2_score %>",
101
- length: "<%= @sale_report.level2_score %>"
99
+ value: parseFloat("<%= @sale_report.level2_score || 0%>"),
102
100
  })
103
101
  rate.render({
104
102
  elem: '#weekStar6',
105
103
  half: true,
106
104
  readonly: true,
107
- value: "<%= @sale_report.level3_score %>",
108
- length: "<%= @sale_report.level3_score %>"
105
+ value: parseFloat("<%= @sale_report.level3_score || 0%>"),
109
106
  })
110
107
 
111
108
 
@@ -17,6 +17,11 @@
17
17
  <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
18
18
  <% end %>
19
19
  </script>
20
+ <script type="text/html" id="business_a">
21
+ <div class="layui-text">
22
+ <a href="/missions/businesses?place_id={{d.id}}">{{d.businesses_count}}</a>
23
+ </div>
24
+ </script>
20
25
 
21
26
  <script type="text/html" id="showchance">
22
27
  <a href="/missions/businesses" class="layui-table-link">{{ d.chance }}</a>
@@ -56,20 +61,25 @@
56
61
  {
57
62
  field: 'businesses_count',
58
63
  width: 120,
59
- totalRow:'{{ parseInt(d.TOTAL_NUMS) }}',
60
- title: '商机'
64
+ totalRow: true,
65
+ sort: true,
66
+ title: '商机',
67
+ templet: "#business_a",
68
+
61
69
  },
62
70
  {
63
71
  field: 'amount',
64
72
  width: 120,
65
73
  totalRow:true,
66
- title: '中标'
74
+ sort: true,
75
+ title: '中标金额'
67
76
  },
68
77
  {
69
78
  field: 'return_mount',
70
79
  width: 120,
71
80
  totalRow:true,
72
- title: '回款',
81
+ sort: true,
82
+ title: '回款金额',
73
83
  },
74
84
  {
75
85
  title: '操作',
@@ -146,4 +156,9 @@
146
156
  });
147
157
 
148
158
  });
149
- </script>
159
+ </script>
160
+ <style>
161
+ .layui-table-tool-temp{
162
+ padding-right: 0px; !important;
163
+ }
164
+ </style>
@@ -1,13 +1,29 @@
1
+ all_businesses_count = 0
2
+ area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
1
3
  json.data do
2
4
  json.array! @places do |d|
3
5
  json.id d.id
4
6
  json.name d.name
5
- json.area_id d.areas.present? ? d.areas.pluck(:name).join("、") : ''
6
- json.businesses_count EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", @x).where("educode_sales_follow_ups.place_id = #{d.id}").count
7
+ # json.area_id d.areas.present? ? d.areas.pluck(:name).join("、") : ''
8
+ if d.areas.present?
9
+ if d.areas.ids.sort.to_s == area_ids
10
+ json.area_id '全国'
11
+ else
12
+ json.area_id d.areas.pluck(:name).join("、")
13
+ end
14
+ else
15
+ json.area_id ''
16
+ end
17
+ business_count = EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", @x).where("educode_sales_follow_ups.place_id = #{d.id}").count
18
+ json.businesses_count business_count
19
+ all_businesses_count += business_count
7
20
  json.amount EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", @x).where("educode_sales_follow_ups.place_id = #{d.id} AND educode_sales_follow_ups.stage_id IN (?)", @stage_ids).sum(:profit_amount).round(2)
8
21
  json.return_mount EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", @x).where("educode_sales_follow_ups.place_id = #{d.id}").sum(:return_money).round(2)
9
22
  end
10
23
  end
11
24
 
25
+ json.totalRow do
26
+ json.businesses_count all_businesses_count.to_s
27
+ end
12
28
  json.code 0
13
29
  json.count @places.total_count
@@ -51,4 +51,9 @@
51
51
 
52
52
  })
53
53
  })
54
- </script>
54
+ </script>
55
+ <style>
56
+ .layui-table-tool-temp{
57
+ padding-right: 30px; !important;
58
+ }
59
+ </style>
@@ -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>
@@ -71,9 +71,11 @@
71
71
 
72
72
  <br>
73
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) %>
74
75
  <button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="audit_weekly_report"
75
76
  style="margin-left: 18px">提交
76
77
  </button>
78
+ <% end %>
77
79
  </div>
78
80
  </div>
79
81
  </form>
@@ -98,7 +100,7 @@
98
100
  rate.render({
99
101
  elem: '#weekStar4',
100
102
  half: true,
101
- value: "<%= @sale_report.level1_score %>",
103
+ value: parseFloat("<%= @sale_report.level1_score || 0%>"),
102
104
  length: 5,
103
105
  choose: function(value){
104
106
  level1_score = value
@@ -107,7 +109,7 @@
107
109
  rate.render({
108
110
  elem: '#weekStar5',
109
111
  half: true,
110
- value: "<%= @sale_report.level2_score %>",
112
+ value: parseFloat("<%= @sale_report.level2_score || 0%>"),
111
113
  length: 5,
112
114
  choose: function(value){
113
115
  level2_score = value
@@ -116,7 +118,7 @@
116
118
  rate.render({
117
119
  elem: '#weekStar6',
118
120
  half: true,
119
- value: "<%= @sale_report.level3_score %>",
121
+ value: parseFloat("<%= @sale_report.level3_score || 0%>"),
120
122
  length: 5,
121
123
  choose: function(value){
122
124
  level3_score = value
@@ -84,22 +84,19 @@
84
84
  elem: '#weekStar4',
85
85
  half: true,
86
86
  readonly: true,
87
- value: "<%= @sale_report.level1_score %>",
88
- length: "<%= @sale_report.level1_score %>"
87
+ value: parseFloat("<%= @sale_report.level1_score || 0%>"),
89
88
  })
90
89
  rate.render({
91
90
  elem: '#weekStar5',
92
91
  half: true,
93
92
  readonly: true,
94
- value: "<%= @sale_report.level2_score %>",
95
- length: "<%= @sale_report.level2_score %>"
93
+ value: parseFloat("<%= @sale_report.level2_score || 0%> "),
96
94
  })
97
95
  rate.render({
98
96
  elem: '#weekStar6',
99
97
  half: true,
100
98
  readonly: true,
101
- value: "<%= @sale_report.level3_score %>",
102
- length: "<%= @sale_report.level3_score %>"
99
+ value: parseFloat("<%= @sale_report.level3_score || 0%>"),
103
100
  })
104
101
 
105
102
  table.on('tool(showWeeklyTable)', function (obj) {