educode_sales 0.9.55 → 0.9.57

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 (29) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/educode_sales/assessments_controller.rb +12 -5
  3. data/app/controllers/educode_sales/businesses_controller.rb +19 -3
  4. data/app/controllers/educode_sales/roles_controller.rb +4 -1
  5. data/app/models/educode_sales/assessments_setting.rb +29 -13
  6. data/app/models/educode_sales/permission.rb +2 -1
  7. data/app/views/educode_sales/assessments/_finished.html.erb +6 -6
  8. data/app/views/educode_sales/assessments/_setup.html.erb +294 -66
  9. data/app/views/educode_sales/assessments/edit.html.erb +233 -121
  10. data/app/views/educode_sales/assessments/index.json.jbuilder +22 -1
  11. data/app/views/educode_sales/assessments/new.html.erb +259 -105
  12. data/app/views/educode_sales/businesses/_contract.html.erb +1007 -0
  13. data/app/views/educode_sales/businesses/get_export_data.json.jbuilder +1 -0
  14. data/app/views/educode_sales/businesses/index.html.erb +58 -8
  15. data/app/views/educode_sales/businesses/index.json.jbuilder +2 -1
  16. data/app/views/educode_sales/idea_recycles/detail.html.erb +3 -1
  17. data/app/views/educode_sales/idea_recycles/index.html.erb +3 -1
  18. data/app/views/educode_sales/ideas/detail.html.erb +3 -1
  19. data/app/views/educode_sales/ideas/index.html.erb +9 -3
  20. data/app/views/educode_sales/teachers/_index.html.erb +1 -1
  21. data/app/views/educode_sales/teachers/edit.html.erb +0 -7
  22. data/app/views/educode_sales/teachers/index.json.jbuilder +2 -2
  23. data/app/views/educode_sales/teachers/new.html.erb +0 -6
  24. data/app/views/layouts/educode_sales/application.html.erb +3 -0
  25. data/db/migrate/20210902064109_create_educode_sales_role_permissions.rb +7 -0
  26. data/db/migrate/20230306131055_add_score_to_assessments_settings.rb +26 -0
  27. data/db/migrate/20230308022633_add_permissions_to_educode_sales_permissions.rb +11 -0
  28. data/lib/educode_sales/version.rb +1 -1
  29. metadata +5 -2
@@ -24,6 +24,7 @@ json.data do
24
24
  end
25
25
  end
26
26
 
27
+ json.staff_manages d.last_follow_up&.assign_follow_ups.present? ? (d.last_follow_up.assign_follow_ups.map{ |d| d.staff.user.real_name}.join("、")) : d.staff&.user&.real_name
27
28
  json.divide_rate d.divide_rate
28
29
  json.divide_money d.divide_amount
29
30
  json.budget_amount d.budget_amount
@@ -2,6 +2,9 @@
2
2
  <ul class="layui-tab-title">
3
3
  <li class="layui-this follows_li">跟进动态</li>
4
4
  <li class="businesses_list_li" >商机列表</li>
5
+ <% if can?(:contract_business, EducodeSales::Business) %>
6
+ <li class="businesses_contract_li" >合同管理</li>
7
+ <% end %>
5
8
  </ul>
6
9
  <div class="layui-tab-content">
7
10
  <div class="layui-tab-item follows_div layui-show">
@@ -136,6 +139,11 @@
136
139
  </div>
137
140
  </div>
138
141
  </div>
142
+ <% if can?(:contract_business, EducodeSales::Business) %>
143
+ <div class="layui-tab-item businesses_contract_div">
144
+ <%=render 'contract' %>
145
+ </div>
146
+ <% end %>
139
147
  </div>
140
148
  </div>
141
149
  <script type="text/html" id="bussinessBar">
@@ -158,10 +166,13 @@
158
166
  <button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right area-btn" lay-event="area">区域管理商机</button>
159
167
  <% end %>
160
168
  <button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right all-btn" lay-event="all"> 全部商机</button>
169
+ <% if can?(:delete_list, EducodeSales::Business) %>
170
+ <button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right delete-btn" lay-event="delete_list">删除的商机</button>
171
+ <% end %>
161
172
  </div>
162
173
  </script>
163
174
  <script type="text/html" id="currentTableBar">
164
- <%unless !can?(:add_follow, EducodeSales::Business) && can?(:self_add_follow, EducodeSales::Business)%>
175
+ <%unless !can?(:add_follow, EducodeSales::Business) && can?(:self_add_follow, EducodeSales::Business) %>
165
176
  <% if can? :add_follow, EducodeSales::Business %>
166
177
  <% if @current_admin.is_admin %>
167
178
  <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
@@ -418,6 +429,12 @@
418
429
  title: '阶段',
419
430
  hide: gon.filter.stage
420
431
  },
432
+ {
433
+ field: 'staff_manages',
434
+ width: 150,
435
+ title: '销售经理',
436
+ hide: gon.filter.staff_manages
437
+ },
421
438
  {
422
439
  field: 'source',
423
440
  width: 90,
@@ -590,7 +607,7 @@
590
607
  minWidth: 220,
591
608
  toolbar: '#currentTableBar',
592
609
  align: "center",
593
- fixed: 'right',
610
+ fixed: 'right'
594
611
  }
595
612
  ]
596
613
  ]
@@ -981,6 +998,8 @@
981
998
  $(".s-btn").addClass("selected-btn");
982
999
  } else if (search['clazz'] == 'area') {
983
1000
  $(".area-btn").addClass("selected-btn");
1001
+ } else if (search['clazz'] == 'delete_list') {
1002
+ $(".delete-btn").addClass("selected-btn");
984
1003
  } else {
985
1004
  $(".all-btn").addClass("selected-btn");
986
1005
  }
@@ -1037,7 +1056,6 @@
1037
1056
  })
1038
1057
  });
1039
1058
  }
1040
-
1041
1059
  if (obj.event === 'add') { // 监听添加操作
1042
1060
  var content = miniPage.getHrefContent('/missions/businesses/new');
1043
1061
  var openWH = miniPage.getOpenWidthHeight();
@@ -1061,7 +1079,9 @@
1061
1079
  page: {
1062
1080
  curr: 1
1063
1081
  },
1064
- where: {q: search, sort: sort}
1082
+ where: {q: search, sort: sort},
1083
+ done: function(res, curr, count){
1084
+ }
1065
1085
  }, 'data');
1066
1086
  form.val('search_form', {
1067
1087
  name: '', department: '', staff_id: '', business_type: '', business_step: '',
@@ -1077,7 +1097,9 @@
1077
1097
  page: {
1078
1098
  curr: 1
1079
1099
  },
1080
- where: {q: search, sort: sort}
1100
+ where: {q: search, sort: sort},
1101
+ done: function(res, curr, count){
1102
+ }
1081
1103
  }, 'data');
1082
1104
  form.val('search_form', {
1083
1105
  name: '', department: '', staff_id: '', business_type: '', business_step: '',
@@ -1094,7 +1116,9 @@
1094
1116
  page: {
1095
1117
  curr: 1
1096
1118
  },
1097
- where: {q: search, sort: sort}
1119
+ where: {q: search, sort: sort},
1120
+ done: function(res, curr, count){
1121
+ }
1098
1122
  }, 'data');
1099
1123
  form.val('search_form', {
1100
1124
  name: '', department: '', staff_id: '', business_type: '', business_step: '',
@@ -1111,7 +1135,9 @@
1111
1135
  page: {
1112
1136
  curr: 1
1113
1137
  },
1114
- where: {q: search, sort: sort}
1138
+ where: {q: search, sort: sort},
1139
+ done: function(res, curr, count){
1140
+ }
1115
1141
  }, 'data');
1116
1142
  form.val('search_form', {
1117
1143
  name: '', department: '', staff_id: '', business_type: '', business_step: '',
@@ -1128,7 +1154,9 @@
1128
1154
  page: {
1129
1155
  curr: 1
1130
1156
  },
1131
- where: {q: search, sort: sort}
1157
+ where: {q: search, sort: sort},
1158
+ done: function(res, curr, count){
1159
+ }
1132
1160
  }, 'data');
1133
1161
  form.val('search_form', {
1134
1162
  name: '', department: '', staff_id: '', business_type: '', business_step: '',
@@ -1137,6 +1165,28 @@
1137
1165
  $(".area-btn").addClass("selected-btn");
1138
1166
  return false;
1139
1167
  }
1168
+ else if (obj.event === 'delete_list') {
1169
+ $(".layui-table-col-special").hide();
1170
+ search = {"clazz": "delete_list"}
1171
+ business_type_list.setValue([])
1172
+ table.reload('businesses_table', {
1173
+ url: '/missions/businesses',
1174
+ page: {
1175
+ curr: 1
1176
+ },
1177
+ where: {q: search, sort: sort}
1178
+ ,done: function(res, curr, count){
1179
+ $(".layui-table-col-special").hide();
1180
+ }
1181
+ }, 'data');
1182
+ form.val('search_form', {
1183
+ name: '', department: '', staff_id: '', business_type: '', business_step: '',
1184
+ place_id: '', date: '', area: ''
1185
+ })
1186
+ $(".delete-btn").addClass("selected-btn");
1187
+
1188
+ return false;
1189
+ }
1140
1190
  else if (obj.event === 'delete') {
1141
1191
  var checkStatus = table.checkStatus('currentTableId'),
1142
1192
  data = checkStatus.data;
@@ -23,7 +23,8 @@ json.data do
23
23
  json.service_end_time d.last_follow_up&.service_start_time.to_s + "-" + d.last_follow_up&.service_end_time.to_s
24
24
  json.created_at d.created_at.to_s
25
25
  json.no_followup_days (d['latest_time'] ? DateTime.parse(Time.now.strftime("%Y-%m-%d")) - DateTime.parse(d['latest_time'].strftime("%Y-%m-%d")) : DateTime.parse(Time.now.strftime("%Y-%m-%d")) - DateTime.parse(d.created_at.strftime("%Y-%m-%d"))).to_i
26
-
26
+
27
+ json.staff_manages d.last_follow_up&.assign_follow_ups.present? ? (d.last_follow_up.assign_follow_ups.map{ |d| d.staff.user.real_name}.join("、")) : d.staff&.user&.real_name
27
28
  json.divide_rate d.divide_rate
28
29
  json.divide_money d.divide_amount.to_f.round(2)
29
30
  json.budget_amount d.budget_amount.to_f.round(2) #d.follow_ups.where(stage_id: @budget_stage_ids).order("created_at desc").first&.total_amount&.round(2) || 0
@@ -1,6 +1,8 @@
1
1
  <div style=" text-align:left; margin-left: 100px;margin-top: 20px">
2
2
  <div class="layui-btn-group">
3
- <button type="button" class="layui-btn" onclick="pre_follow()">历史记录</button>
3
+ <% if can? :read_history, EducodeSales::Idea %>
4
+ <button type="button" class="layui-btn" onclick="pre_follow()">历史记录</button>
5
+ <% end %>
4
6
  </div>
5
7
  </div>
6
8
  <% EducodeSales::Idea.where(school_id: @idea.school_id).order("id = #{@idea.id} DESC").each do |idea| %>
@@ -82,7 +82,9 @@
82
82
  </div>
83
83
  <script type="text/html" id="currentTableBar">
84
84
  <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edita" lay-event="add_event">详情</a>
85
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="idea_recycle">恢复</a>
85
+ <% if can? :recycle, EducodeSales::Idea %>
86
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="idea_recycle">恢复</a>
87
+ <% end %>
86
88
  </script>
87
89
  <script>
88
90
  layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate'], function () {
@@ -1,6 +1,8 @@
1
1
  <div style=" text-align:left; margin-left: 100px;margin-top: 20px">
2
2
  <div class="layui-btn-group">
3
- <button type="button" class="layui-btn" onclick="pre_follow()">历史记录</button>
3
+ <% if can? :read_history, EducodeSales::Idea %>
4
+ <button type="button" class="layui-btn" onclick="pre_follow()">历史记录</button>
5
+ <% end %>
4
6
  </div>
5
7
  </div>
6
8
  <% EducodeSales::Idea.where(school_id: @idea.school_id).order("id = #{@idea.id} DESC").each do |idea| %>
@@ -75,7 +75,9 @@
75
75
  <script type="text/html" id="toolbarDemo">
76
76
  <div class="layui-btn-container">
77
77
  <span class="table-label">方案管理</span>
78
- <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add">新增项目方案</button>
78
+ <% if can? :create, EducodeSales::Idea %>
79
+ <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add">新增项目方案</button>
80
+ <% end %>
79
81
  </div>
80
82
  </script>
81
83
  <div class="">
@@ -83,8 +85,12 @@
83
85
  </div>
84
86
  <script type="text/html" id="currentTableBar">
85
87
  <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edita" lay-event="add_event">详情</a>
86
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="idea_edit">编辑</a>
87
- <a class="layui-btn layui-btn-danger layui-btn-xs data-count-edit" lay-event="idea_recycle">移除</a>
88
+ <% if can? :update, EducodeSales::Idea %>
89
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="idea_edit">编辑</a>
90
+ <% end %>
91
+ <% if can? :destroy, EducodeSales::Idea %>
92
+ <a class="layui-btn layui-btn-danger layui-btn-xs data-count-edit" lay-event="idea_recycle">移除</a>
93
+ <% end %>
88
94
  </script>
89
95
  <script>
90
96
  layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate'], function () {
@@ -227,7 +227,7 @@
227
227
  },
228
228
  {
229
229
  field: 'followup_at',
230
- width: 120,
230
+ width: 180,
231
231
  title: '最新跟进时间',
232
232
  },
233
233
  {
@@ -37,13 +37,6 @@
37
37
  </div>
38
38
  </div>
39
39
  <br>
40
- <div class="layui-inline">
41
- <label class="layui-form-label ">手机号</label>
42
- <div class="layui-input-block" style="width: 188px;">
43
- <input type="text" name="mobile" autocomplete="off" class="layui-input" placeholder="请输入手机号" value="<%= @teacher.mobile %>">
44
- </div>
45
- </div>
46
- <br>
47
40
  <div class="layui-inline">
48
41
  <label class="layui-form-label required">单位部门</label>
49
42
  <div class="layui-input-block" id="add_department2" style="width: 400px"></div>
@@ -20,9 +20,9 @@ json.data do
20
20
  json.actives d.actives
21
21
  json.experience d['experience'] || 0
22
22
  json.grade d['grade'] || 0
23
- json.mobile d.mobile
23
+ json.mobile d.user&.phone || ''
24
24
  json.students d.students_count
25
- json.followup_at d.followup_at.to_s
25
+ json.followup_at d.follow_up&.created_at&.to_s
26
26
  json.latest_time (d['latest_time'] ? DateTime.parse(Time.now.strftime("%Y-%m-%d")) - DateTime.parse(d['latest_time'].strftime("%Y-%m-%d")) : DateTime.parse(Time.now.strftime("%Y-%m-%d")) - DateTime.parse(d.created_at.strftime("%Y-%m-%d"))).to_i
27
27
 
28
28
  json.staff_manage @staff_manages[d.department&.school&.province]&.join(",")
@@ -33,12 +33,6 @@
33
33
  <%= select_tag "source_id", options_for_select(EducodeSales::Common.where(clazz: 'teacher_source').pluck(:name, :id)), { include_blank: true } %>
34
34
  </div>
35
35
  </div>
36
- <div class="layui-inline">
37
- <label class="layui-form-label ">手机号</label>
38
- <div class="layui-input-block" style="width: 188px;">
39
- <input type="text" name="mobile" autocomplete="off" class="layui-input" placeholder="请输入手机号">
40
- </div>
41
- </div>
42
36
  <div class="layui-inline">
43
37
  <label class="layui-form-label ">微信号</label>
44
38
  <div class="layui-input-block" style="width: 188px;">
@@ -125,6 +125,8 @@
125
125
  <i style="font-size: 25px; padding-right: 15px"></i>绩效考核</a></dd>
126
126
  </dl>
127
127
  </li>
128
+ <% end %>
129
+ <% if can?(:read, EducodeSales::Idea) %>
128
130
  <li class="layui-nav-item layui-nav-itemed menu-li">
129
131
  <a class="" href="javascript:;"><b><%= image_tag "educode_sales/11.活动运营.png", size: "15" %>
130
132
  <i style="font-size: 25px; padding-right: 25px"></i>方案支撑</b></a>
@@ -138,6 +140,7 @@
138
140
  </dl>
139
141
  </li>
140
142
  <% end %>
143
+
141
144
  <% if @current_admin.is_admin || @current_admin.code == 'userbe' %>
142
145
  <li class="layui-nav-item layui-nav-itemed menu-li">
143
146
  <a class="" href="javascript:;"><b><%= image_tag "educode_sales/13.系统设置.png", size: "15" %>
@@ -109,6 +109,13 @@ class CreateEducodeSalesRolePermissions < ActiveRecord::Migration[5.2]
109
109
  EducodeSales::Permission.create(name: '添加活动', subject: 'Activity', action: 'create', clazz: 'activity')
110
110
  EducodeSales::Permission.create(name: '编辑活动', subject: 'Activity', action: 'update', clazz: 'activity')
111
111
  EducodeSales::Permission.create(name: '删除活动', subject: 'Activity', action: 'destroy', clazz: 'activity')
112
+
113
+ # EducodeSales::Permission.create(name: '查看方案', subject: 'Idea', action: 'read', clazz: 'idea')
114
+ # EducodeSales::Permission.create(name: '添加方案', subject: 'Idea', action: 'create', clazz: 'idea')
115
+ # EducodeSales::Permission.create(name: '编辑方案', subject: 'Idea', action: 'update', clazz: 'idea')
116
+ # EducodeSales::Permission.create(name: '移除方案', subject: 'Idea', action: 'destroy', clazz: 'idea')
117
+ # EducodeSales::Permission.create(name: '恢复方案', subject: 'Idea', action: 'recycle', clazz: 'idea')
118
+ # EducodeSales::Permission.create(name: '查看历史记录', subject: 'Idea', action: 'read_history', clazz: 'idea')
112
119
  end
113
120
  end
114
121
  end
@@ -0,0 +1,26 @@
1
+ class AddScoreToAssessmentsSettings < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_column :educode_sales_assessments_settings, :first_quarter_score, :string
4
+ add_column :educode_sales_assessments_settings, :january_score, :string
5
+ add_column :educode_sales_assessments_settings, :february_score, :string
6
+ add_column :educode_sales_assessments_settings, :march_score, :string
7
+ add_column :educode_sales_assessments_settings, :second_quarter_score, :string
8
+ add_column :educode_sales_assessments_settings, :april_score, :string
9
+ add_column :educode_sales_assessments_settings, :may_score, :string
10
+ add_column :educode_sales_assessments_settings, :june_score, :string
11
+ add_column :educode_sales_assessments_settings, :third_quarter_score, :string
12
+ add_column :educode_sales_assessments_settings, :july_score, :string
13
+ add_column :educode_sales_assessments_settings, :august_score, :string
14
+ add_column :educode_sales_assessments_settings, :september_score, :string
15
+ add_column :educode_sales_assessments_settings, :fourth_quarter_score, :string
16
+ add_column :educode_sales_assessments_settings, :october_score, :string
17
+ add_column :educode_sales_assessments_settings, :november_score, :string
18
+ add_column :educode_sales_assessments_settings, :december_score, :string
19
+
20
+
21
+ add_column :educode_sales_assessments_settings, :total_score, :string
22
+ add_column :educode_sales_assessments_settings, :cycle, :integer, default: 1
23
+
24
+ EducodeSales::Permission.find_or_create_by(name: '合同管理', subject: 'Business', action: 'contract_business', clazz: 'business', position: '15')
25
+ end
26
+ end
@@ -0,0 +1,11 @@
1
+ class AddPermissionsToEducodeSalesPermissions < ActiveRecord::Migration[5.2]
2
+ def change
3
+ last_position = EducodeSales::Permission.all.order(position: :asc).last.position
4
+ EducodeSales::Permission.create(name: '查看方案', subject: 'Idea', action: 'read', clazz: 'idea', position: last_position + 1)
5
+ EducodeSales::Permission.create(name: '添加方案', subject: 'Idea', action: 'create', clazz: 'idea', position: last_position + 2)
6
+ EducodeSales::Permission.create(name: '编辑方案', subject: 'Idea', action: 'update', clazz: 'idea', position: last_position + 3)
7
+ EducodeSales::Permission.create(name: '移除方案', subject: 'Idea', action: 'destroy', clazz: 'idea', position: last_position + 4)
8
+ EducodeSales::Permission.create(name: '恢复方案', subject: 'Idea', action: 'recycle', clazz: 'idea', position: last_position + 5)
9
+ EducodeSales::Permission.create(name: '查看历史记录', subject: 'Idea', action: 'read_history', clazz: 'idea', position: last_position + 6)
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '0.9.55'
2
+ VERSION = '0.9.57'
3
3
  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.55
4
+ version: 0.9.57
5
5
  platform: ruby
6
6
  authors:
7
7
  - anke1460
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-03 00:00:00.000000000 Z
11
+ date: 2023-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -247,6 +247,7 @@ files:
247
247
  - app/views/educode_sales/assessments/index.json.jbuilder
248
248
  - app/views/educode_sales/assessments/new.html.erb
249
249
  - app/views/educode_sales/assessments/progress.json.jbuilder
250
+ - app/views/educode_sales/businesses/_contract.html.erb
250
251
  - app/views/educode_sales/businesses/_follows.html.erb
251
252
  - app/views/educode_sales/businesses/daily_paper.html.erb
252
253
  - app/views/educode_sales/businesses/edit.html.erb
@@ -554,6 +555,8 @@ files:
554
555
  - db/migrate/20230220144737_add_clazz_id_to_business.rb
555
556
  - db/migrate/20230227061043_create_educode_sales_ideas.rb
556
557
  - db/migrate/20230228063555_create_educode_sales_idea_histories.rb
558
+ - db/migrate/20230306131055_add_score_to_assessments_settings.rb
559
+ - db/migrate/20230308022633_add_permissions_to_educode_sales_permissions.rb
557
560
  - lib/educode_sales.rb
558
561
  - lib/educode_sales/engine.rb
559
562
  - lib/educode_sales/version.rb