educode_sales 0.9.25 → 0.9.27

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7326e12d52dc97f7f251f63b033f3c470591be1100f6f9bd06ab057e9a21bd14
4
- data.tar.gz: 80817718f3efdcb1a247095f468123ad1111d996dffe3f858cd6b29aab0f52ad
3
+ metadata.gz: 119cce9127a2cb5ef9fdb03dbe2d257bc99722abc0e57ed0c990a520318df846
4
+ data.tar.gz: 90c778d25c76e16ac29d7c61a9b054bcedcb744a105297b3fea0db4c027313de
5
5
  SHA512:
6
- metadata.gz: 4430c0f16dac2deda9e833d7962020fd8727a60d43b3823b631ac7cc5196d40c0bbd66b8170ac114e6cdf5dc197978f3674dfe2d5dad720963baefce8537f76a
7
- data.tar.gz: 34fb199238d1d1181e1b07fb8f2e00371e271aa9cc3689af2a916dbeb089f9a2624a0c14140de4cbc550d9faa04a03525db1c9407e9b5d3ae439e8d8152946f9
6
+ metadata.gz: 2a2ccb6dc4bd37ba0524b8c1f2ac0ed4a33976863c5e73fc527d5de39826b85309bda84acdabb4bcfb06520b073fd39065a36570d296f3793d4a5af836d6e0ec
7
+ data.tar.gz: 1826e5444d78935cc0730c11bd8ac3fcaeedc0cc60f336c1be54ce4a9ddf849af50307f28e0bc9152dd367fe3de97fb2e357d0849adb9fbaba5cf2e4267d29c3
@@ -51,6 +51,37 @@ module EducodeSales
51
51
  end
52
52
  end
53
53
 
54
+ def finished
55
+ if @current_admin.is_admin?
56
+ @assessments = AssessmentsSetting.all
57
+ else
58
+ level = @current_admin.role.role_areas.find_by(clazz: '绩效考核').level
59
+ case level
60
+ when '自己'
61
+ @assessments = AssessmentsSetting.where(staff_id: @current_admin.id)
62
+ when '区域'
63
+ @staffs = EducodeSales::Staff.joins(:areas).where("educode_sales_commons.id in (?)", @current_admin.areas.pluck(:id)).distinct
64
+ @assessments = EducodeSales::AssessmentsSetting.where(staff_id: @staffs.select(:id))
65
+ else
66
+ @assessments = AssessmentsSetting.all
67
+ end
68
+ end
69
+
70
+ if params[:assessment_year].present?
71
+ @assessments = @assessments.where(assessment_year: Time.new(params[:assessment_year])..Time.new(params[:assessment_year]).end_of_year)
72
+ end
73
+
74
+ if params[:assessment_id].present?
75
+ @assessments = @assessments.where(assessment: params[:assessment_id])
76
+ end
77
+
78
+ if params[:staff_id].present?
79
+ @assessments = @assessments.where(staff_id: params[:staff_id])
80
+ end
81
+
82
+ @assessments = @assessments.order("created_at desc")
83
+ end
84
+
54
85
  # 新增
55
86
  def create
56
87
  begin
@@ -79,16 +110,8 @@ module EducodeSales
79
110
  @assessment = AssessmentsSetting.find_by(id: params[:id])
80
111
  @username = @assessment.staff.user.real_name
81
112
  @year = @assessment.assessment_year.to_s[0..3]
82
- case @assessment.assessment
83
- when 1
84
- @assessment_name = "签单金额"
85
- when 2
86
- @assessment_name = "回款金额"
87
- when 3
88
- @assessment_name = "拜访量"
89
- when 4
90
- @assessment_name = "新增商机数"
91
- end
113
+ @assessment_name = EducodeSales::AssessmentsSetting::CLAZZ[@assessment.assessment]
114
+
92
115
  render layout: false
93
116
  end
94
117
 
@@ -34,7 +34,11 @@ module EducodeSales
34
34
  end
35
35
 
36
36
  if params[:bidded_date_year].present? && params[:bidded_date_year] != '全部'
37
- gon.bidded_date = Time.new(params[:bidded_date_year]).strftime("%Y-%m-%d") + " - " + Time.new(params[:bidded_date_year]).end_of_year.strftime("%Y-%m-%d")
37
+ if params[:step] == '应收款'
38
+ gon.bidded_date = "2015-01-01" + " - " + Time.new(params[:bidded_date_year]).end_of_year.strftime("%Y-%m-%d")
39
+ else
40
+ gon.bidded_date = Time.new(params[:bidded_date_year]).strftime("%Y-%m-%d") + " - " + Time.new(params[:bidded_date_year]).end_of_year.strftime("%Y-%m-%d")
41
+ end
38
42
  end
39
43
 
40
44
  if params[:signed_date_year].present? && params[:signed_date_year] != '全部'
@@ -45,8 +45,7 @@ module EducodeSales
45
45
  end
46
46
  if params[:q].present? && params[:q][:area].present?
47
47
  p = EducodeSales::Common.find(params[:q][:area]).name
48
- @follow_ups = @follow_ups.joins(:business).joins("
49
- JOIN departments ON educode_sales_businesses.department_id = departments.id
48
+ @follow_ups = @follow_ups.joins(business: :department).joins("
50
49
  JOIN schools ON departments.school_id = schools.id
51
50
  ").where("province = ?", p)
52
51
  end
@@ -57,6 +56,8 @@ module EducodeSales
57
56
 
58
57
  end
59
58
 
59
+ @follow_ups = @follow_ups.includes(:staff, :clazz, :stage, key_person: :teacher, business: [department: :school])
60
+
60
61
  if params[:sort].present? && params[:sort][:field]
61
62
  @follow_ups = @follow_ups.order("#{params[:sort][:field]} #{params[:sort][:order]}")
62
63
  else
@@ -22,7 +22,7 @@ module EducodeSales
22
22
  @service_amount = Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", x).where("educode_sales_follow_ups.stage_id IN (?)", s_stage_ids).sum(:total_amount).round(2)
23
23
  @actual_service_amount = Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", x).where("educode_sales_follow_ups.stage_id IN (?)", s_stage_ids).sum(:actual_amount).round(2)
24
24
 
25
- # @return_amount = Business.joins(last_follow_up: :money_plans).where("educode_sales_follow_ups.clazz_id != ?", x).where.not("educode_sales_money_plans.clazz!= ?", 1).sum(:amount).round(2)
25
+ @return_amount = Business.joins(last_follow_up: :money_plans).where("educode_sales_follow_ups.clazz_id != ?", x).where.not("educode_sales_money_plans.clazz!= ?", 1).sum(:amount).round(2)
26
26
  # # @return_amount = total_return[0]['return_money']&.round(2) || 0
27
27
  # @receivable_amount = @goal_amount - @return_amount
28
28
 
@@ -57,7 +57,7 @@ module EducodeSales
57
57
  # @former_return_amount = Business.joins(last_follow_up: :money_plans).where("educode_sales_follow_ups.clazz_id != ?", x).where.not("educode_sales_money_plans.clazz!= ?", 1).where("educode_sales_money_plans.date_at <= ? ", year_over_time).sum(:amount).round(2)
58
58
  # @receivable_amount = @former_goal_amount - @former_return_amount
59
59
 
60
- @receivable_amount = Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", x).where("educode_sales_follow_ups.bidded_date >= ? AND educode_sales_follow_ups.bidded_date <= ? AND educode_sales_follow_ups.stage_id IN (?)", "#{@year}-01-01", "#{@year}-12-31", stage_ids).select("(SUM(educode_sales_follow_ups.actual_amount) - SUM(educode_sales_businesses.return_money)) AS num")
60
+ @receivable_amount = Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id != ?", x).where("educode_sales_follow_ups.bidded_date <= ? AND educode_sales_follow_ups.stage_id IN (?)", "#{@year}-12-31", stage_ids).select("(SUM(educode_sales_follow_ups.actual_amount) - SUM(educode_sales_businesses.return_money)) AS num")
61
61
  @receivable_amount = @receivable_amount.present? && @receivable_amount[0]['num'] ? @receivable_amount[0]['num'].round(2) : 0
62
62
 
63
63
  a = Common.where(clazz: '商机类型', name: Common.find_by(extras: EducodeSales::Common::ATYPE)&.name).pluck(:id)
@@ -5,6 +5,9 @@ module EducodeSales
5
5
  belongs_to :user
6
6
 
7
7
 
8
+ CLAZZ = {7 => '中标指标', 1 => '签单指标', 2 => '回款指标', 3 => '拜访量', 4 => '新增商机数', 5 => '大v建课指标', 6 => '课堂使用指标'}
9
+
10
+
8
11
  # todo 签单金额 : assessment_id(1)
9
12
  # todo 回款金额 : assessment_id(2)
10
13
  # todo 拜访量 : assessment_id(3)
@@ -0,0 +1,135 @@
1
+ <div class="layuimini-main min-height-table" id="monthly_table_wraper">
2
+ <form class="layui-form layui-form-pane" lay-filter="assessment_progress_form">
3
+ <div class="layui-form-item">
4
+ <div class="layui-inline">
5
+ <label class="layui-form-label">考核年度</label>
6
+ <div class="layui-input-inline">
7
+ <input type="text" class="layui-input" autocomplete="off" name="assessment_year" value="<%= Time.now.year %>" id="assessment_year">
8
+ </div>
9
+ </div>
10
+ <div class="layui-inline">
11
+ <label class="layui-form-label">考核指标</label>
12
+ <div class="layui-input-inline">
13
+ <select class="layui-select" name="assessment_id" >
14
+ <%= options_for_select EducodeSales::AssessmentsSetting::CLAZZ.invert.to_a, 7 %>
15
+ </select>
16
+ </div>
17
+ </div>
18
+ <div class="layui-inline">
19
+ <label class="layui-form-label">考核人员</label>
20
+ <div class="layui-input-inline large-select">
21
+ <%= select_tag "staff_id", options_for_select(@staffs), { id: 'weekly_staff_id', include_blank: true} %>
22
+ </div>
23
+ </div>
24
+ <div class="layui-inline">
25
+ <button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="progress_resert_btn">重置
26
+ </button>
27
+ <button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="progress_search_btn">检索
28
+ </button>
29
+ </div>
30
+ </div>
31
+ </form>
32
+
33
+ <!--表格-->
34
+ <table class="layui-tab" id="finished_table" lay-filter="progressTable"></table>
35
+ </div>
36
+ <script type="text/html" id="progress_Toolbar">
37
+ <div class="layui-btn-container">
38
+ <span class="table-label">指标完成情况 单位:万元</span>
39
+ <% if can?(:export_result, EducodeSales::AssessmentsSetting) %>
40
+ <button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm data-count-edit export_more-btn pull-right" style="color: #0000FF;" data-name="export" data-id="export">
41
+ 导出<i class="layui-icon layui-icon-down layui-nav-more" style="font-size: 12px"></i></button>
42
+ <%end %>
43
+ </div>
44
+ </script>
45
+
46
+ <script>
47
+ layui.use(['form', 'table', 'miniPage', 'element', 'rate', 'laydate', 'request'], function () {
48
+
49
+ var $ = layui.jquery,
50
+ form = layui.form,
51
+ laydate = layui.laydate,
52
+ request = layui.request,
53
+ table = layui.table,
54
+ rate = layui.rate,
55
+ miniPage = layui.miniPage;
56
+ dropdown = layui.dropdown;
57
+
58
+
59
+ laydate.render({
60
+ elem: '#assessment_year',
61
+ type: 'year'
62
+ });
63
+
64
+
65
+
66
+ var progress_table = table.render({
67
+ elem: '#finished_table'
68
+ ,toolbar: '#progress_Toolbar'
69
+ ,totalRow:true
70
+ ,title: "绩效考核指标完成情况" // 目前发现的作用(导出文件的文件名)
71
+ ,defaultToolbar: ['filter']
72
+ ,cols:[
73
+ [ //标题栏
74
+ { title: '序号', width: 80, rowspan: 6, type:'numbers', fixed:'left', totalRowText:'合计'}
75
+ // ,{field: 'area', title: '大区', width: 100, rowspan: 6, fixed:'left'}
76
+ ,{field: 'name', title: '考核人员', width: 120, rowspan: 6,fixed:'left'}
77
+ ,{field: 'year', align: 'center', title: '考核年度', width: 100, rowspan: 6}
78
+ ,{field: 'assessment', title: '指标类型', width: 120, rowspan: 6}
79
+ ,{field: 'name', title: '绩效分', width: 120, rowspan: 6}
80
+ ,{align: 'center', title: '年度任务', colspan: 5}
81
+ ,{align: 'center', title: '一季度任务', colspan: 4}
82
+ ,{align: 'center', title: '二季度任务', colspan: 5}
83
+ ,{align: 'center', title: '三季度任务', colspan: 5}
84
+ ,{align: 'center', title: '四季度任务', colspan: 5}
85
+ ],
86
+ [
87
+ {field: 'annual', title: '任务', width: 100, totalRow:true}
88
+ ,{field: 'annual_80', title: '保底', width: 100, totalRow:true}
89
+ ,{field: 'annual_progress', title: '完成', width: 100, totalRow:true}
90
+ ,{field: 'annual_rate', title: '任务完成率', width:120, totalRow:true}
91
+ ,{field: 'annual_score', title: '综合得分', width: 100, totalRow:true}
92
+
93
+ ,{field: 'quarter_1', title: '任务', width: 100, totalRow:true}
94
+ ,{field: 'progress_1', title: '完成', width: 100, totalRow:true}
95
+ ,{field: 'rate_1', title: '完成率', width: 100, totalRow:true}
96
+ ,{field: 'score_1', title: '绩效得分', width: 100, totalRow:true}
97
+
98
+ ,{field: 'quarter_2', title: '任务', width: 100, totalRow:true}
99
+ ,{field: 'quarter_2_total', title: '累计任务', width: 100, totalRow:true}
100
+ ,{field: 'progress_2', title: '完成', width: 100, totalRow:true}
101
+ ,{field: 'rate_2', title: '完成率', width: 100, totalRow:true}
102
+ ,{field: 'score_2', title: '绩效得分', width: 100, totalRow:true}
103
+
104
+
105
+ ,{field: 'quarter_3', title: '任务', width: 100, totalRow:true}
106
+ ,{field: 'quarter_3_total', title: '累计任务', width: 100, totalRow:true}
107
+ ,{field: 'progress_3', title: '完成', width: 100, totalRow:true}
108
+ ,{field: 'rate_3', title: '完成率', width: 100, totalRow:true}
109
+ ,{field: 'score_3', title: '绩效得分', width: 100, totalRow:true}
110
+
111
+ ,{field: 'quarter_4', title: '任务', width: 100, totalRow:true}
112
+ ,{field: 'quarter_4_total', title: '累计任务', width: 100, totalRow:true}
113
+ ,{field: 'progress_4', title: '完成', width: 100, totalRow:true}
114
+ ,{field: 'rate_4', title: '完成率', width: 100, totalRow:true}
115
+ ,{field: 'score_4', title: '绩效得分', width: 100, totalRow:true}
116
+
117
+ ]]
118
+ });
119
+ loadFinishTable(form.val('assessment_progress_form'))
120
+
121
+ form.on('submit(progress_search_btn)', function (data) {
122
+ loadFinishTable(data.field)
123
+ return false;
124
+ })
125
+
126
+ function loadFinishTable(search) {
127
+ table.reload('finished_table', {
128
+ where: search,
129
+ url: '/missions/assessments/finished'
130
+ });
131
+ }
132
+
133
+ })
134
+
135
+ </script>
@@ -12,10 +12,7 @@
12
12
  <label class="layui-form-label">考核指标</label>
13
13
  <div class="layui-input-inline">
14
14
  <select class="layui-select" name="assessment_id" >
15
- <option value="1" selected >签单金额</option>
16
- <option value="2">回款金额</option>
17
- <option value="3">拜访量</option>
18
- <option value="4">新增商机数</option>
15
+ <%= options_for_select EducodeSales::AssessmentsSetting::CLAZZ.invert.to_a, 7 %>
19
16
  </select>
20
17
  </div>
21
18
  </div>
@@ -41,7 +38,7 @@
41
38
 
42
39
  <script type="text/html" id="toolbarDemo5">
43
40
  <div class="layui-btn-container">
44
- <span class="table-label">人员任务指标</span>
41
+ <span class="table-label">人员任务指标 单位:万元</span>
45
42
  <% if can?(:create, EducodeSales::AssessmentsSetting) %>
46
43
  <button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right" lay-event="add" >添加人员任务指标</button>
47
44
  <% end %>
@@ -75,7 +72,7 @@
75
72
  laydate.render({
76
73
  elem: '#assessments_year',
77
74
  type: 'year',
78
- value: '2022',
75
+ value: "<%= Time.now.year %>",
79
76
  })
80
77
 
81
78
  var cols_table = [//表头
@@ -94,106 +91,52 @@
94
91
  hide: gon.filter["username"],
95
92
  },
96
93
  {
97
- field: 'annual',
98
- title: '全年',
94
+ field: 'year',
95
+ title: '考核年度',
99
96
  width: 100,
100
- hide: gon.filter["annual"],
97
+ hide: gon.filter["year"],
101
98
  },
102
99
  {
103
- field: 'first_quarter',
104
- title: '第1季度',
105
- width: 100,
106
- hide: gon.filter["first_quarter"],
100
+ field: 'assessment',
101
+ title: '指标类型',
102
+ width: 120,
103
+ hide: gon.filter["assessment"],
107
104
  },
108
105
  {
109
- field: 'january',
110
- title: '1月',
111
- width: 100,
112
- hide: gon.filter.january,
113
- },
114
- {
115
- field: 'february',
116
- title: '2月',
106
+ field: 'annual',
107
+ title: '年度指标',
117
108
  width: 100,
118
- hide: gon.filter.february,
109
+ hide: gon.filter["annual"],
119
110
  },
120
111
  {
121
- field: 'march',
122
- title: '3月',
123
- width: 100,
124
- hide: gon.filter.march,
112
+ field: 'first_quarter',
113
+ title: '一季度指标',
114
+ width: 140,
115
+ hide: gon.filter["first_quarter"],
125
116
  },
126
117
  {
127
118
  field: 'second_quarter',
128
- title: '第2季度',
129
- width: 100,
119
+ title: '二季度指标',
120
+ width: 140,
130
121
  hide: gon.filter.second_quarter,
131
122
  },
132
- {
133
- field: 'april',
134
- title: '4月',
135
- width: 100,
136
- hide: gon.filter.april,
137
- },
138
- {
139
- field: 'may',
140
- title: '5月',
141
- width: 100,
142
- hide: gon.filter.may,
143
- },
144
- {
145
- field: 'june',
146
- title: '6月',
147
- width: 100,
148
- hide: gon.filter.june,
149
- },
150
123
  {
151
124
  field: 'third_quarter',
152
- title: '第3季度',
153
- width: 100,
125
+ title: '三季度指标',
126
+ width: 140,
154
127
  hide: gon.filter.third_quarter,
155
128
  },
156
- {
157
- field: 'july',
158
- title: '7月',
159
- width: 100,
160
- hide: gon.filter.july,
161
- },
162
- {
163
- field: 'august',
164
- title: '8月',
165
- width: 100,
166
- hide: gon.filter.august,
167
- },
168
- {
169
- field: 'september',
170
- title: '9月',
171
- width: 100,
172
- hide: gon.filter.september,
173
- },
174
129
  {
175
130
  field: 'fourth_quarter',
176
- title: '第4季度',
177
- width: 100,
131
+ title: '四季度指标',
132
+ width: 140,
178
133
  hide: gon.filter.fourth_quarter,
179
134
  },
180
135
  {
181
- field: 'october',
182
- title: '10月',
183
- width: 100,
184
- hide: gon.filter.october,
185
- },
186
- {
187
- field: 'november',
188
- title: '11月',
189
- width: 100,
190
- hide: gon.filter.november,
191
- },
192
- {
193
- field: 'december',
194
- title: '12月',
195
- width: 100,
196
- hide: gon.filter.december,
136
+ field: 'annual_lower',
137
+ title: '保底指标',
138
+ width: 120,
139
+ hide: gon.filter["annual_lower"],
197
140
  },
198
141
  {
199
142
  field: 'option',
@@ -0,0 +1,85 @@
1
+ json.data do
2
+
3
+ json.array! @assessments do |assessment|
4
+ # 目标任务
5
+ json.name assessment.staff.user.real_name
6
+ json.id assessment.id
7
+ json.year params[:assessment_year]
8
+ json.annual assessment.annual.to_f.round(2)
9
+ json.annual_80 (assessment.annual.to_f * 0.8).round(2)
10
+ json.quarter_1 assessment.first_quarter.to_f.round(2)
11
+ json.quarter_2 assessment.second_quarter.to_f.round(2)
12
+ json.quarter_3 assessment.third_quarter.to_f.round(2)
13
+ json.quarter_4 assessment.fourth_quarter.to_f.round(2)
14
+ # 实际任务
15
+ json.annual_progress assessment.annual_progress.to_f.round(2)
16
+ json.progress_1 assessment.first_quarter_progress.to_f.round(2)
17
+ json.progress_2 assessment.second_quarter_progress.to_f.round(2)
18
+ json.progress_3 assessment.third_quarter_progress.to_f.round(2)
19
+ json.progress_4 assessment.fourth_quarter_progress.to_f.round(2)
20
+
21
+ diff_1 = (assessment.first_quarter.to_f - assessment.first_quarter_progress.to_f).round(2)
22
+ diff_2 = (assessment.second_quarter.to_f - assessment.second_quarter_progress.to_f).round(2)
23
+ diff_3 = (assessment.third_quarter.to_f - assessment.third_quarter_progress.to_f).round(2)
24
+
25
+ json.quarter_2_total diff_1 > 0 ? (diff_1 + assessment.second_quarter.to_f).round(2) : assessment.second_quarter.to_f.round(2)
26
+ json.quarter_3_total diff_2 > 0 ? (diff_2 + assessment.third_quarter.to_f).round(2) : assessment.third_quarter.to_f.round(2)
27
+ json.quarter_4_total diff_3 > 0 ? (diff_3 + assessment.fourth_quarter.to_f).round(2) : assessment.fourth_quarter.to_f.round(2)
28
+
29
+ # 完成率completion_rate
30
+ json.annual_rate completion_rate(assessment.annual, assessment.annual_progress)
31
+ json.rate_1 completion_rate(assessment.first_quarter, assessment.first_quarter_progress)
32
+ json.rate_2 completion_rate(assessment.second_quarter, assessment.second_quarter_progress)
33
+ json.rate_3 completion_rate(assessment.third_quarter, assessment.third_quarter_progress)
34
+ json.rate_4 completion_rate(assessment.fourth_quarter,assessment.fourth_quarter_progress)
35
+
36
+ # 得分_score
37
+ if assessment.assessment == 1
38
+ # json.assessment '签单金额'
39
+ json.annual_score signed_amount_score(assessment.annual, assessment.annual_progress)
40
+ json.score_1 signed_amount_score(assessment.first_quarter, assessment.first_quarter_progress)
41
+ json.score_2 signed_amount_score(assessment.second_quarter, assessment.second_quarter_progress)
42
+ json.score_3 signed_amount_score(assessment.third_quarter, assessment.third_quarter_progress)
43
+ json.score_4 signed_amount_score(assessment.fourth_quarter,assessment.fourth_quarter_progress)
44
+ elsif assessment.assessment == 2
45
+ # json.assessment '回款金额'
46
+ json.annual_score collection_amount_score(assessment.annual, assessment.annual_progress)
47
+ json.score_1 collection_amount_score(assessment.first_quarter, assessment.first_quarter_progress)
48
+ json.score_2 collection_amount_score(assessment.second_quarter, assessment.second_quarter_progress)
49
+ json.score_3 collection_amount_score(assessment.third_quarter, assessment.third_quarter_progress)
50
+ json.score_4 collection_amount_score(assessment.fourth_quarter,assessment.fourth_quarter_progress)
51
+ elsif assessment.assessment == 3
52
+ # json.assessment '拜访量'
53
+ json.annual_score visits_score(assessment.annual_progress)
54
+ json.score_1 visits_score(assessment.first_quarter_progress)
55
+ json.score_2 visits_score(assessment.second_quarter_progress)
56
+ json.score_3 visits_score(assessment.third_quarter_progress)
57
+ json.score_4 visits_score(assessment.fourth_quarter_progress)
58
+ else
59
+ # json.assessment '新增商机数'
60
+ json.annual_score add_businesses_score(assessment.staff_id,'01-01','12-31')
61
+ json.score_1 add_businesses_score(assessment.staff_id,'01-01','03-31')
62
+ # assessment_year如果时闰年或则平年时的判断----02-28 02-29
63
+ json.score_2 add_businesses_score(assessment.staff_id,'04-01','06-30')
64
+ json.score_3 add_businesses_score(assessment.staff_id,'07-01','09-30')
65
+ json.score_4 add_businesses_score(assessment.staff_id,'10-01','12-31')
66
+ end
67
+ json.assessment EducodeSales::AssessmentsSetting::CLAZZ[assessment.assessment]
68
+ end
69
+
70
+ end
71
+
72
+ json.code 0
73
+ json.count @assessments.count
74
+
75
+
76
+ #
77
+ #
78
+ #
79
+ #
80
+ #
81
+ #
82
+ #
83
+ #
84
+ #
85
+
@@ -11,7 +11,7 @@
11
11
  <div class="layui-tab-content">
12
12
  <%if can?(:show_result, EducodeSales::AssessmentsSetting) %>
13
13
  <div class="layui-tab-item layui-show">
14
- <%= render 'progress' %>
14
+ <%= render 'finished' %>
15
15
  </div>
16
16
  <!-- else 语句没有执行(可能是写法错了 先解决问题 以后在重写)-->
17
17
  <%# else %>
@@ -42,31 +42,31 @@
42
42
  element = layui.element;
43
43
 
44
44
  element.on('tab(sale_tab)', function (data) {
45
- var status = $(this).attr('data')
46
- switch (status) {
47
- case 'progress':
48
- $("#progress_table_wraper .layui-table-fixed-r")[0].classList.remove('layui-hide');
49
- $("#progress_table_wraper .layui-table-fixed-r .layui-table-body")[0].style.height="auto";
50
- break;
51
- case 'setup':
52
- $("#setup_table_wraper .layui-table-fixed-r")[0].classList.remove('layui-hide');
53
- $("#setup_table_wraper .layui-table-fixed-r .layui-table-body")[0].style.height="auto";
54
- break;
55
- }
45
+ // var status = $(this).attr('data')
46
+ // switch (status) {
47
+ // case 'progress':
48
+ // $("#progress_table_wraper .layui-table-fixed-r")[0].classList.remove('layui-hide');
49
+ // $("#progress_table_wraper .layui-table-fixed-r .layui-table-body")[0].style.height="auto";
50
+ // break;
51
+ // case 'setup':
52
+ // $("#setup_table_wraper .layui-table-fixed-r")[0].classList.remove('layui-hide');
53
+ // $("#setup_table_wraper .layui-table-fixed-r .layui-table-body")[0].style.height="auto";
54
+ // break;
55
+ // }
56
56
  });
57
57
 
58
58
  // 重置按钮写在index下无效!!!
59
59
  // 监控重置
60
- form.on('submit(reset_assessments_search)', function (data) {
61
- var field = data.field;
62
- console.log("index");
63
- form.val('search_assessments_form', {
64
- assessment_year: '2022',
65
- assessment_id: "签单金额",
66
- staff_id: ''
67
- });
68
- return false;
69
- });
60
+ // form.on('submit(reset_assessments_search)', function (data) {
61
+ // var field = data.field;
62
+ // console.log("index");
63
+ // form.val('search_assessments_form', {
64
+ // assessment_year: '2022',
65
+ // assessment_id: "签单金额",
66
+ // staff_id: ''
67
+ // });
68
+ // return false;
69
+ // });
70
70
  })
71
71
  </script>
72
72
 
@@ -2,7 +2,10 @@ json.data do
2
2
  json.array! @assessments do |d|
3
3
  json.id d.id
4
4
  json.username d.staff_id.present? ? d.staff.user.real_name : ""
5
+ json.year @year
6
+ json.assessment EducodeSales::AssessmentsSetting::CLAZZ[d.assessment]
5
7
  json.annual d.annual.to_f.round(2)
8
+ json.annual_lower (d.annual.to_f * 0.8).round(2)
6
9
  json.first_quarter d.first_quarter.to_f.round(2)
7
10
  json.january d.january.to_f.round(2)
8
11
  json.february d.february.to_f.round(2)
@@ -7,11 +7,12 @@
7
7
  <label class="layui-form-label required ">考核指标</label>
8
8
  <div class="layui-input-inline">
9
9
  <select name="assessment" lay-verify="required" lay-filter="new_assessment_id" >
10
- <option value="0" selected ></option>
10
+ <%= options_for_select EducodeSales::AssessmentsSetting::CLAZZ.invert.to_a %>
11
+ <!-- <option value="0" selected ></option>
11
12
  <option value="1">签单金额</option>
12
13
  <option value="2">回款金额</option>
13
14
  <option value="3">拜访量</option>
14
- <option value="4">新增商机数</option>
15
+ <option value="4">新增商机数</option> -->
15
16
  </select>
16
17
  </div>
17
18
  </div>
@@ -142,6 +142,12 @@
142
142
  title: '关键人',
143
143
  templet:'<div><span title="{{d.key_people}}">{{d.key_people}}</span></div>'
144
144
  },
145
+ {
146
+ field: 'tel',
147
+ width: 90,
148
+ title: '联系方式',
149
+ templet:'<div><span title="{{d.tel}}">{{d.tel}}</span></div>'
150
+ },
145
151
  {
146
152
  field: 'staff',
147
153
  width: 90,
@@ -1,4 +1,4 @@
1
- <form class="layui-form layuimini-form " id="custom_data" data-required="true" action="">
1
+ <div class="layui-form layuimini-form " id="custom_data" data-required="true">
2
2
  <div class="layui-form-item" style="padding: 25px">
3
3
  <div class="layui-inline">
4
4
  <label class="layui-form-label required">客户:</label>
@@ -30,7 +30,7 @@
30
30
  </div>
31
31
  </div>
32
32
  <div class="layui-form-item">
33
- <label class="layui-form-label">学校性质:</label>
33
+ <label class="layui-form-label required">学校性质:</label>
34
34
  <div class="layui-input-block">
35
35
  <input type="checkbox" name="project_985" lay-skin="primary" value="1" <%= 'checked' if @school_property&.project_985 %> title="985工程">
36
36
  <input type="checkbox" name="project_211" lay-skin="primary" value="1" <%= 'checked' if @school_property&.project_211 %> title="211工程" >
@@ -54,7 +54,7 @@
54
54
  </button>
55
55
  </div>
56
56
  </div>
57
- </form>
57
+ </div>
58
58
 
59
59
 
60
60
  <script>
@@ -339,6 +339,13 @@
339
339
  form.on('submit(data-reset-btn)', function (data) {
340
340
  data.field.province = $("#province option:selected").text(); //获取选中的项
341
341
  data.field.city = $("#city option:selected").text(); //获取选中的项
342
+ if (data.field.enterprise == undefined && data.field.junior_college == undefined &&
343
+ data.field.military_school == undefined && data.field.project_211 == undefined && data.field.project_985 == undefined
344
+ && data.field.regular_college == undefined && data.field.secondary_school == undefined) {
345
+ layer.alert("请选择学校性质");
346
+ return false;
347
+ }
348
+
342
349
  request.authPut("missions/customers/" + <%= @school.id %>, data.field, function (res) {
343
350
  if (res.success === false) {
344
351
  layer.alert(res.msg)
@@ -11,8 +11,9 @@ json.data do
11
11
  json.created_at d.created_at.to_s
12
12
  json.business d.business.name
13
13
  json.business_id d.business.id
14
- teacher_ids = d.key_person.pluck(:teacher_id)
15
- json.key_people key_people(teacher_ids)
14
+ # teacher_ids = d.key_person.pluck(:teacher_id)
15
+ json.tel d.key_person.pluck(:tel).select { |d| d.present? }.join("、")
16
+ json.key_people d.key_person.map { |d| d.teacher.name }.join("、")# key_people(teacher_ids)
16
17
 
17
18
  end
18
19
  end
@@ -47,8 +47,8 @@
47
47
  }
48
48
  }
49
49
  });
50
-
51
-
50
+
51
+
52
52
  form.render();
53
53
 
54
54
  function renderTable(chart_data) {
@@ -62,6 +62,9 @@
62
62
  })
63
63
  var table_data = [];
64
64
  chart_data.datasets.forEach(function(d, i) {
65
+ if (d.hidden == true) {
66
+ return false;
67
+ }
65
68
  var value = {}
66
69
  value['col0'] = d.label;
67
70
  d.data.forEach(function(v, i1) {
@@ -73,8 +76,8 @@
73
76
  elem: '#followup_table',
74
77
  height: 312,
75
78
  url: '',
76
- limit: 30,
77
- page: true,
79
+ // limit: 30,
80
+ page: false,
78
81
  data: table_data,
79
82
  cols: [fields]
80
83
  });
@@ -86,7 +89,7 @@
86
89
  range: true
87
90
  });
88
91
 
89
-
92
+
90
93
  laydate.render({
91
94
  elem: '#date_week',
92
95
  range: true
@@ -54,9 +54,9 @@
54
54
  </div>
55
55
  </div>
56
56
  <div class="layui-input-inline" style="width: 300px;">
57
- <label class="layui-form-label ">联系方式</label>
57
+ <label class="layui-form-label required">联系方式</label>
58
58
  <div class="layui-input-block">
59
- <input type="text" class="layui-input" name="tel" autocomplete="off" value=""
59
+ <input type="text" class="layui-input" name="tel" autocomplete="off" value="" lay-verify="required"
60
60
  id="tel" placeholder="请输入联系方式">
61
61
  </div>
62
62
  </div>
data/config/routes.rb CHANGED
@@ -159,6 +159,7 @@ EducodeSales::Engine.routes.draw do
159
159
  collection do
160
160
  get :progress # 考核完成情况
161
161
  post :get_export_data # 导出数据
162
+ get :finished
162
163
  end
163
164
  end
164
165
 
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '0.9.25'
2
+ VERSION = '0.9.27'
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.25
4
+ version: 0.9.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - anke1460
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-08 00:00:00.000000000 Z
11
+ date: 2023-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -225,9 +225,11 @@ files:
225
225
  - app/views/educode_sales/activities/index.json.jbuilder
226
226
  - app/views/educode_sales/activities/new.html.erb
227
227
  - app/views/educode_sales/activities/show_teachers.html.erb
228
+ - app/views/educode_sales/assessments/_finished.html.erb
228
229
  - app/views/educode_sales/assessments/_progress.html.erb
229
230
  - app/views/educode_sales/assessments/_setup.html.erb
230
231
  - app/views/educode_sales/assessments/edit.html.erb
232
+ - app/views/educode_sales/assessments/finished.json.jbuilder
231
233
  - app/views/educode_sales/assessments/get_export_data.json.jbuilder
232
234
  - app/views/educode_sales/assessments/index.html.erb
233
235
  - app/views/educode_sales/assessments/index.json.jbuilder