educode_sales 1.10.20 → 1.10.22

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: e8908d0c995259936abab94c6b0a235b53d28665b95436e06da08dca21fed73e
4
- data.tar.gz: 669ac2995a1f97f84b428d96be113636aba86bb59d5a39f43f3d2fdf409169b1
3
+ metadata.gz: c2b8c0d76ccb06751726aeef62b4b04f234424db8b848d62f086b530b1213d25
4
+ data.tar.gz: 88f36d9731d556cdfedd495e0ad198e90baeecf454352fc8faf17d9dd373c3a9
5
5
  SHA512:
6
- metadata.gz: 42d35a31b42ffb22685ecbb1269680c64e7a14edc2a43fa5f3e2599282343e6c2f561a7ee3ffca26b7cdafe8ecebb1106353dd6027d5452a0328935acd2deddd
7
- data.tar.gz: fbb54ac9f06b76958722487a110529bfb323ed56f537f9a8946f9f4682fc22972b89722171b927fd0b749146d94fcde82b1e0caae4adae819f5968ff4b9b29e8
6
+ metadata.gz: 99412e792e86479290e2d09a62aced8ae6bc6cd32d448450d9e0b4898d5df54358e683a70b94038eb37474ba663b6d1cbe9e4b24a8440dcef2e6ca17a3d19e06
7
+ data.tar.gz: cb3ba8ffa9e9cf91ade0cf3a74fe5e5fc13767d05a1dfa12180fb699abbb70cbc380469b55b11b0900a7c0930afd2ba395148f532c23f3fcba70f7794fca7913
@@ -8,6 +8,7 @@ module EducodeSales
8
8
  def index
9
9
  respond_to do |format|
10
10
  format.html do
11
+ gon.assement_list = EducodeSales::AssessmentsSetting::CLAZZ.map { |d, i| {value: d, name: i } }
11
12
  common = Common.find_by(clazz: 'staff_type', name: '销售')
12
13
  @staffs = Staff.joins(:user).where(job_type: common.id).map { |d| [d.user.real_name, d.id]} # [[], [], ............]
13
14
  # 导出
@@ -53,6 +54,10 @@ module EducodeSales
53
54
  end
54
55
 
55
56
  def finished
57
+ @year = params[:q].present? && params[:q][:assessment_year].present? ? params[:q][:assessment_year] : Time.now.year
58
+ EducodeSales::AssessmentsSetting.update_stats(@year, params[:assessment_id])
59
+
60
+
56
61
  if @current_admin.is_admin?
57
62
  @assessments = AssessmentsSetting.all
58
63
  else
@@ -67,6 +72,7 @@ module EducodeSales
67
72
  @assessments = AssessmentsSetting.all
68
73
  end
69
74
  end
75
+
70
76
 
71
77
  if params[:assessment_year].present?
72
78
  @assessments = @assessments.where(assessment_year: Time.new(params[:assessment_year])..Time.new(params[:assessment_year]).end_of_year)
@@ -3,7 +3,35 @@ require_dependency "educode_sales/application_controller"
3
3
  module EducodeSales
4
4
  class IdeasController < ApplicationController
5
5
 
6
- before_action :find_idea, only: [:edit, :destroy, :detail, :history, :update]
6
+ before_action :find_idea, only: [:edit, :destroy, :detail, :history, :update, :assign, :assign_staff, :assign_sale_staff, :update_sale_staff]
7
+
8
+ def assign
9
+ selected_staff_ids = @idea.assist_staff_ids.map(&:to_i)
10
+ staffs = Staff.where.not(role_id: 11).includes(:user)
11
+ gon.ideas_staffs = staffs.map { |d| { name: d.user.real_name, value: d.id, selected: selected_staff_ids.include?(d.id) } }
12
+ render layout: false
13
+ end
14
+
15
+ # 指派协作人 assist_staff_ids协作人
16
+ def assign_staff
17
+ @idea.assist_staff_ids = params[:to_id].to_s.split(",")
18
+ @idea.save
19
+ render_success
20
+ end
21
+
22
+ def assign_sale_staff
23
+ selected_staff_ids = Array(@idea.staff_id)
24
+ staffs = Staff.where.not(role_id: 11).includes(:user)
25
+ gon.sales_staffs = staffs.map { |d| { name: d.user.real_name, value: d.id, selected: selected_staff_ids.include?(d.id) } }
26
+ render layout: false
27
+ end
28
+
29
+ # 指派方案经理 staff_id
30
+ def update_sale_staff
31
+ @idea.staff_id = params[:to_id]
32
+ @idea.save
33
+ render_success
34
+ end
7
35
 
8
36
  def index
9
37
  respond_to do |format|
@@ -24,16 +52,14 @@ module EducodeSales
24
52
  level = @current_admin.role.role_areas.find_by(clazz: '方案管理').try(:level)
25
53
  case level
26
54
  when '自己'
27
- # business_ids = Business.joins(last_follow_up: :assign_follow_ups).where("educode_sales_assign_follow_ups.staff_id = ?", @current_admin.id).pluck(:id)
28
- # @businesses = Business.where("educode_sales_businesses.staff_id = ? OR educode_sales_businesses.id in (?)", @current_admin.id, business_ids)
29
- idea_ids = Idea.all.pluck(:other_staff_ids).flatten.uniq
55
+ idea_ids = Idea.all.select { |d| Array(d.other_staff_ids).include?(@current_admin.id) || d.sale_staff_id == @current_admin.id || Array(d.assist_staff_ids).include?(@current_admin.id) || d.staff_id == @current_admin.id }.map { |d| d.id }
30
56
  @ideas = Idea.where("educode_sales_ideas.creator_id = ? OR educode_sales_ideas.id in (?)", @current_admin.id, idea_ids)
31
57
  when '区域'
32
58
  # 查看区域商机,需要排除掉其它人员手上的监管学校
33
59
  other_staff_school_id = EducodeSales::StaffSchool.where.not(staff_id: @current_admin.id).where("school_id IN (SELECT school_id FROM educode_sales_staff_schools WHERE staff_id = #{@current_admin.id}) IS NOT TRUE").distinct.pluck :school_id
34
60
 
35
61
  school_ids = School.where(province: @current_admin.areas.pluck(:name)).pluck(:id) + StaffSchool.where(staff_id: @current_admin.id).pluck(:school_id) - other_staff_school_id
36
- idea_ids = Idea.all.pluck(:other_staff_ids).flatten.uniq
62
+ idea_ids = Idea.all.select { |d| Array(d.other_staff_ids).include?(@current_admin.id) || d.sale_staff_id == @current_admin.id || Array(d.assist_staff_ids).include?(@current_admin.id) || d.staff_id == @current_admin.id }.map { |d| d.id }
37
63
  @ideas = @ideas.joins(department: :school).where("schools.id in (?) OR educode_sales_ideas.creator_id = ? OR educode_sales_ideas.id in (?)", school_ids, @current_admin.id, idea_ids)
38
64
  else
39
65
  @ideas = @ideas
@@ -116,8 +142,8 @@ module EducodeSales
116
142
  idea.department_id = idea.business&.department_id
117
143
  end
118
144
  idea.attachment_ids = attachment_ids
119
- idea.assist_staff_ids = assist_staff_ids
120
- idea.other_staff_ids = other_staff_ids
145
+ # idea.assist_staff_ids = assist_staff_ids
146
+ # idea.other_staff_ids = other_staff_ids
121
147
  idea.save
122
148
  render_success
123
149
  end
@@ -134,11 +160,11 @@ module EducodeSales
134
160
  @idea.assign_attributes(idea_params)
135
161
  # @idea.school_id = Department.find_by_id(@idea.department_id)&.school_id
136
162
  assist_staff_ids = Array(params[:assist_staff_ids].to_s.split(","))
137
- @idea.assist_staff_ids = assist_staff_ids
163
+ # @idea.assist_staff_ids = assist_staff_ids
138
164
  attachment_ids = Array(params[:attachment_ids].to_s.split(","))
139
165
  @idea.attachment_ids = attachment_ids
140
166
  other_staff_ids = Array(params[:other_staff_ids].to_s.split(","))
141
- @idea.other_staff_ids = other_staff_ids
167
+ # @idea.other_staff_ids = other_staff_ids
142
168
  if @idea.business_id.present?
143
169
  @idea.school_id = @idea.business&.department&.school_id
144
170
  @idea.department_id = @idea.business&.department_id
@@ -267,7 +293,7 @@ module EducodeSales
267
293
  params.permit(:name, :level, :staff_id,
268
294
  :status, :types, :model, :hardware, :project,
269
295
  :money, :end_time, :content, :department_id, :school_id,
270
- :manager_name, :manager_phone, :school_name, :department_name, :sale_staff_id, :attachment_id, :idea_type, :business_id)
296
+ :manager_name, :manager_phone, :school_name, :department_name, :attachment_id, :idea_type, :business_id)
271
297
  end
272
298
 
273
299
  def find_idea
@@ -90,9 +90,20 @@ module EducodeSales
90
90
  def create
91
91
  business = Business.find(params[:business_id])
92
92
  data = []
93
+ week = Time.now.strftime('%W').to_i
94
+ current_week = ""
95
+ staff_manage_ids = business&.last_follow_up&.assign_follow_ups.present? ? business.last_follow_up.assign_follow_ups.pluck(:staff_id) : [business.staff_id]
93
96
  (params[:num].to_i+1).times do |i|
97
+ _week = params["date_at[#{i}]"].to_date.strftime('%W').to_i
98
+ current_week = _week if _week == week
94
99
  business.money_plans.create(category: params["category[#{i}]"], amount: params["amount[#{i}]"], payment_clause: params["payment_clause[#{i}]"], date_at: params["date_at[#{i}]"], follow_up_id: business.last_follow_up_id, staff_id: @current_admin.id )
95
100
  end
101
+ if current_week.present?
102
+ staff_manage_ids.each do |staff_id|
103
+ EducodeSales::SalePlan.create(month: Time.now.beginning_of_month, weekly: week, content: "提醒:请补充回款计划内容!", business: business, staff_id: staff_id, finish_rate: '0' )
104
+ EducodeSales::SalePlan.create(month: Time.now.beginning_of_month, content: "提醒:请补充回款计划内容!", business: business, staff_id: staff_id, finish_rate: '0' )
105
+ end
106
+ end
96
107
  render_success
97
108
  end
98
109
 
@@ -41,7 +41,82 @@ module EducodeSales
41
41
 
42
42
 
43
43
 
44
+ def self.update_assessment_value(assessment_id, year, data)
45
+ assessments = EducodeSales::AssessmentsSetting.where(assessment: assessment_id).where("assessment_year >= ? and assessment_year <= ?", "#{year}-01-01 00:00:00".to_date, "#{year}-12-31 23:59:00".to_date)
46
+ assessments.each do |ass|
47
+ if data[ass.staff_id].present?
48
+ data_count = []
49
+ data[ass.staff_id].each do |d|
50
+ data_count[d['month']-1] = d['value']
51
+ end
52
+
53
+ data_count[12] = data_count[0].to_f + data_count[1].to_f + data_count[2].to_f
54
+ data_count[13] = data_count[3].to_f + data_count[4].to_f + data_count[5].to_f
55
+ data_count[14] = data_count[6].to_f + data_count[7].to_f + data_count[8].to_f
56
+ data_count[15] = data_count[9].to_f + data_count[10].to_f + data_count[11].to_f
57
+ data_count[16] = data_count[12].to_f + data_count[13].to_f + data_count[14].to_f + data_count[15].to_f
58
+ ass.update(annual_progress: data_count[16],
59
+ first_quarter_progress: data_count[12],
60
+ second_quarter_progress: data_count[13],
61
+ third_quarter_progress: data_count[14],
62
+ fourth_quarter_progress: data_count[15],
63
+ january_progress: data_count[0],
64
+ february_progress: data_count[1],
65
+ march_progress: data_count[2],
66
+ april_progress: data_count[3],
67
+ may_progress: data_count[4],
68
+ june_progress: data_count[5],
69
+ july_progress: data_count[6],
70
+ august_progress: data_count[7],
71
+ september_progress: data_count[8],
72
+ october_progress: data_count[9],
73
+ november_progress: data_count[10],
74
+ december_progress: data_count[11])
75
+ end
76
+ end
77
+ end
78
+
79
+ def self.update_stats(year, assessment_id)
80
+ Rails.cache.fetch("stats_by_assessment_#{year}", :expires_in => 1.days) do
81
+ self.stats_by_return_money(year)
82
+ self.stats_by_business(year)
83
+ self.stats_by_contracts(year)
84
+ true
85
+ end
86
+ end
87
+
88
+ def self.stats_by_business(year)
89
+ # 商机目标完成情况
90
+ ids = EducodeSales::Common.where(extras: %w[a_class b_class c_class d_class e_class]).pluck(:id)
91
+ data = EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id in (?) ",ids)
92
+ .where("educode_sales_follow_ups.created_at >= ? and educode_sales_follow_ups.created_at <= ?", "#{year}-01-01 00:00:00".to_date, "#{year}-12-31 23:59:59".to_date)
93
+ .group("educode_sales_follow_ups.staff_id, MONTH(educode_sales_follow_ups.created_at)").select("SUM(budget_amount) AS value, educode_sales_follow_ups.staff_id, MONTH(educode_sales_follow_ups.created_at) AS month")
94
+ .group_by{|d| d.staff_id }
95
+ self.update_assessment_value(7, year, data)
96
+ end
97
+
98
+
99
+ def self.stats_by_contracts(year)
100
+ # 中标目标
101
+ contract_ids = EducodeSales::Common.where(clazz: '商机阶段', name: ['已中标', '已签单', '已验收', '回款中', '服务中', '已结束']).pluck(:id)
102
+ data = EducodeSales::Business.joins(:last_follow_up).where("educode_sales_follow_ups.stage_id in (?) ", contract_ids)
103
+ .where("educode_sales_follow_ups.created_at >= ? and educode_sales_follow_ups.created_at <= ?", "#{year}-01-01 00:00:00".to_date, "#{year}-12-31 23:59:59".to_date)
104
+ .group("educode_sales_follow_ups.staff_id, MONTH(educode_sales_follow_ups.created_at)").select("SUM(actual_amount) AS value, educode_sales_follow_ups.staff_id, MONTH(educode_sales_follow_ups.created_at) AS month")
105
+ .group_by{|d| d.staff_id }
106
+ self.update_assessment_value(18, year, data)
107
+ end
108
+
109
+ def self.stats_by_return_money(year)
110
+ # 回款目标完成
111
+ data = EducodeSales::MoneyPlanClaim.joins(:money_plan)
112
+ .where("educode_sales_money_plans.created_at >= ? and educode_sales_money_plans.created_at <= ?", "#{year}-01-01 00:00:00".to_date, "#{year}-12-31 23:59:59".to_date)
113
+ .group("educode_sales_money_plans.staff_id, MONTH(educode_sales_money_plans.created_at)").select("SUM(educode_sales_money_plan_claims.amount) AS value, educode_sales_money_plans.staff_id, MONTH(educode_sales_money_plans.created_at) AS month")
114
+ .group_by{|d| d.staff_id }
115
+ self.update_assessment_value(2, year, data)
116
+ end
44
117
 
45
118
  end
119
+
120
+
46
121
  end
47
122
 
@@ -10,9 +10,7 @@
10
10
  <div class="layui-inline">
11
11
  <label class="layui-form-label">考核指标</label>
12
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>
13
+ <div id="assement_id"></div>
16
14
  </div>
17
15
  </div>
18
16
  <div class="layui-inline">
@@ -44,7 +42,7 @@
44
42
  </script>
45
43
 
46
44
  <script>
47
- layui.use(['form', 'table', 'miniPage', 'element', 'rate', 'laydate', 'request'], function () {
45
+ layui.use(['form', 'table', 'miniPage', 'element', 'rate', 'laydate', 'request', 'xmSelect'], function () {
48
46
 
49
47
  var $ = layui.jquery,
50
48
  form = layui.form,
@@ -52,7 +50,8 @@
52
50
  request = layui.request,
53
51
  table = layui.table,
54
52
  rate = layui.rate,
55
- miniPage = layui.miniPage;
53
+ xmSelect = layui.xmSelect,
54
+ miniPage = layui.miniPage,
56
55
  dropdown = layui.dropdown;
57
56
 
58
57
 
@@ -62,6 +61,11 @@
62
61
  });
63
62
 
64
63
 
64
+ var assement_list = xmSelect.render({
65
+ el: '#assement_id',
66
+ data: gon.assement_list
67
+ })
68
+
65
69
 
66
70
  var progress_table = table.render({
67
71
  elem: '#finished_table'
@@ -119,7 +123,9 @@
119
123
  loadFinishTable(form.val('assessment_progress_form'))
120
124
 
121
125
  form.on('submit(progress_search_btn)', function (data) {
122
- loadFinishTable(data.field)
126
+ var search = data.field;
127
+ search.assessment_id = assement_list.getValue('valueStr').split(",");
128
+ loadFinishTable(search);
123
129
  return false;
124
130
  })
125
131
 
@@ -32,7 +32,6 @@ json.data do
32
32
  json.rate_2 completion_rate(assessment.second_quarter, assessment.second_quarter_progress)
33
33
  json.rate_3 completion_rate(assessment.third_quarter, assessment.third_quarter_progress)
34
34
  json.rate_4 completion_rate(assessment.fourth_quarter,assessment.fourth_quarter_progress)
35
-
36
35
  # 得分_score
37
36
  if assessment.assessment == 1
38
37
  # json.assessment '签单金额'
@@ -1,3 +1,4 @@
1
+ <%= Gon::Base.render_data %>
1
2
  <div class="layui-tab" lay-filter="sale_tab" >
2
3
  <ul class="layui-tab-title">
3
4
  <% if can?(:show_result, EducodeSales::AssessmentsSetting) %>
@@ -5,13 +5,13 @@
5
5
  <div class="layui-inline">
6
6
  <label class="layui-form-label">单位</label>
7
7
  <div class="layui-input-inline" style="line-height: 38px;">
8
- <%= @business.department.school.name %>
8
+ <%= @business.department&.school&.name %>
9
9
  </div>
10
10
  </div>
11
11
  <div class="layui-inline">
12
12
  <label class="layui-form-label">部门</label>
13
13
  <div class="layui-input-inline" style="line-height: 38px;">
14
- <%= @business.department.name %>
14
+ <%= @business.department&.name %>
15
15
  </div>
16
16
  </div>
17
17
  <br>
@@ -102,6 +102,8 @@
102
102
  <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="idea_recycle_s">恢复</a>
103
103
  <% end %>
104
104
  {{# }else{}}
105
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="assign">指派协作人</a>
106
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="assign_sale_staff">指派方案经理</a>
105
107
  <% if can? :add_follow, EducodeSales::Idea %>
106
108
  <a class="layui-btn layui-btn-normal layui-btn-xs data-count-add_follow" lay-event="add_follows">添加跟进</a>
107
109
  <% end %>
@@ -256,7 +258,7 @@
256
258
  },
257
259
  {
258
260
  title: '操作',
259
- minWidth: 500,
261
+ minWidth: 700,
260
262
  toolbar: '#currentTableBar',
261
263
  align: "center",
262
264
  fixed: 'right'
@@ -453,6 +455,40 @@
453
455
  $(window).on("resize", function () {
454
456
  layer.full(followup_index);
455
457
  });
458
+ } else if (obj.event === 'assign') { //协作人
459
+ var content = miniPage.getHrefContent('/missions/ideas/' + id + '/assign');
460
+ var openWH = miniPage.getOpenWidthHeight();
461
+ var name = data.name;
462
+ sindex = layer.open({
463
+ title: '指派协作人',
464
+ type: 1,
465
+ shade: 0.2,
466
+ maxmin: true,
467
+ shadeClose: true,
468
+ area: ['600px', '300px'],
469
+ content: content
470
+ });
471
+ $(window).on("resize", function () {
472
+ layer.full(sindex);
473
+ });
474
+ return false;
475
+ } else if (obj.event === 'assign_sale_staff') { //指派方案经理
476
+ var content = miniPage.getHrefContent('/missions/ideas/' + id + '/assign_sale_staff');
477
+ var openWH = miniPage.getOpenWidthHeight();
478
+ var name = data.name;
479
+ sindex = layer.open({
480
+ title: "指派方案经理",
481
+ type: 1,
482
+ shade: 0.2,
483
+ maxmin: true,
484
+ shadeClose: true,
485
+ area: ['600px', '300px'],
486
+ content: content
487
+ });
488
+ $(window).on("resize", function () {
489
+ layer.full(sindex);
490
+ });
491
+ return false;
456
492
  } else if (obj.event === 'idea_recycle') {
457
493
  layer.confirm('确定删除' + data.name, function (index) {
458
494
  request.delete('missions/ideas/' + id, {}, function (res) {
@@ -0,0 +1,45 @@
1
+ <%= Gon::Base.render_data %>
2
+ <div class="layui-form layuimini-form" style="padding:30px">
3
+ <div class="layui-form-item">
4
+ <label class="layui-form-label required">选择协作人:</label>
5
+ <div class="layui-input-block" style="width: 300px">
6
+ <div id="sales_staff_id"></div>
7
+ </div>
8
+ </div>
9
+ <hr>
10
+ <div class="layui-form-item">
11
+ <div class="layui-input-block">
12
+ <button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button>
13
+ </div>
14
+ </div>
15
+ </div>
16
+
17
+ <script>
18
+ layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'selectInput'], function () {
19
+ var form = layui.form,
20
+ layer = layui.layer,
21
+ table = layui.table,
22
+ laytpl = layui.laytpl,
23
+ request = layui.request,
24
+ $ = layui.$;
25
+
26
+ form.render();
27
+ staff_list_select = xmSelect.render({
28
+ el: '#sales_staff_id',
29
+ data: gon.ideas_staffs,
30
+ filterable: true,
31
+ radio: false,
32
+ })
33
+ var parentIndex = layer.index;
34
+ form.on('submit(saveBtn)', function (data) {
35
+ layer.confirm('确定指派协作人?', function (index) {
36
+ request.post('missions/ideas/' + parent.id + "/assign_staff", {to_id: staff_list_select.getValue('valueStr')}, function (res) {
37
+ layer.close(index);
38
+ layer.close(parentIndex)
39
+ parent.table.reload('ideas_table')
40
+ })
41
+ });
42
+ return false;
43
+ });
44
+ });
45
+ </script>
@@ -0,0 +1,45 @@
1
+ <%= Gon::Base.render_data %>
2
+ <div class="layui-form layuimini-form" style="padding:30px">
3
+ <div class="layui-form-item">
4
+ <label class="layui-form-label required">选择方案经理:</label>
5
+ <div class="layui-input-block" style="width: 300px">
6
+ <div id="sales_id"></div>
7
+ </div>
8
+ </div>
9
+ <hr>
10
+ <div class="layui-form-item">
11
+ <div class="layui-input-block">
12
+ <button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button>
13
+ </div>
14
+ </div>
15
+ </div>
16
+
17
+ <script>
18
+ layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'selectInput'], function () {
19
+ var form = layui.form,
20
+ layer = layui.layer,
21
+ table = layui.table,
22
+ laytpl = layui.laytpl,
23
+ request = layui.request,
24
+ $ = layui.$;
25
+
26
+ form.render();
27
+ staff_list_select = xmSelect.render({
28
+ el: '#sales_id',
29
+ data: gon.sales_staffs,
30
+ filterable: true,
31
+ radio: true,
32
+ })
33
+ var parentIndex = layer.index;
34
+ form.on('submit(saveBtn)', function (data) {
35
+ layer.confirm('确定指派方案经理?', function (index) {
36
+ request.post('missions/ideas/' + parent.id + "/update_sale_staff", {to_id: staff_list_select.getValue('valueStr')}, function (res) {
37
+ layer.close(index);
38
+ layer.close(parentIndex)
39
+ parent.table.reload('ideas_table')
40
+ })
41
+ });
42
+ return false;
43
+ });
44
+ });
45
+ </script>
@@ -41,20 +41,20 @@
41
41
  </div>
42
42
  </div>
43
43
  <div class="layui-col-md6">
44
- <labeL class="layui-form-label">协作人:</labeL>
44
+ <labeL class="layui-form-label required">项目名称:</labeL>
45
45
  <div class="layui-input-block">
46
- <div id="assist_staff_ids"></div>
46
+ <div id="business_id" style="width: 600px;"></div>
47
47
  </div>
48
48
  </div>
49
- </div>
50
- <div class="layui-row" style="padding-top: 15px">
51
- <div class="layui-col-md6">
52
- <labeL class="layui-form-label required">项目名称:</labeL>
49
+ <div class="layui-col-md6" style="display: none">
50
+ <labeL class="layui-form-label">协作人:</labeL>
53
51
  <div class="layui-input-block">
54
- <div id="business_id" style="width: 600px;"></div>
52
+ <div id="assist_staff_ids"></div>
55
53
  </div>
56
54
  </div>
57
- <div class="layui-col-md6">
55
+ </div>
56
+ <div class="layui-row" style="padding-top: 15px;display: none">
57
+ <div class="layui-col-md6" style="display: none">
58
58
  <labeL class="layui-form-label">方案经理:</labeL>
59
59
  <div class="layui-input-block">
60
60
  <div id="new_staff_id"></div>
@@ -96,7 +96,7 @@
96
96
  <%= select_tag "idea_type", options_for_select(EducodeSales::Idea.idea_types.keys, @idea&.idea_type), { 'lay-filter': 'idea_type', include_blank: false } %>
97
97
  </div>
98
98
  </div>
99
- <div class="layui-col-md6">
99
+ <div class="layui-col-md6" style="display: none">
100
100
  <labeL class="layui-form-label">指派人:</labeL>
101
101
  <div class="layui-input-block">
102
102
  <div id="other_staff_ids"></div>
@@ -41,20 +41,20 @@
41
41
  </div>
42
42
  </div>
43
43
  <div class="layui-col-md6">
44
- <labeL class="layui-form-label">协作人:</labeL>
44
+ <labeL class="layui-form-label required">项目名称:</labeL>
45
45
  <div class="layui-input-block">
46
- <div id="assist_staff_ids"></div>
46
+ <div id="business_id" style="width: 600px;"></div>
47
47
  </div>
48
48
  </div>
49
- </div>
50
- <div class="layui-row" style="padding-top: 15px">
51
- <div class="layui-col-md6">
52
- <labeL class="layui-form-label required">项目名称:</labeL>
49
+ <div class="layui-col-md6" style="display: none">
50
+ <labeL class="layui-form-label">协作人:</labeL>
53
51
  <div class="layui-input-block">
54
- <div id="business_id" style="width: 600px;"></div>
52
+ <div id="assist_staff_ids"></div>
55
53
  </div>
56
54
  </div>
57
- <div class="layui-col-md6">
55
+ </div>
56
+ <div class="layui-row" style="padding-top: 15px;display: none">
57
+ <div class="layui-col-md6" style="display: none">
58
58
  <labeL class="layui-form-label">方案经理:</labeL>
59
59
  <div class="layui-input-block">
60
60
  <div id="new_staff_id"></div>
@@ -96,7 +96,7 @@
96
96
  <%= select_tag "idea_type", options_for_select(EducodeSales::Idea.idea_types.keys, @idea&.idea_type), { 'lay-filter': 'idea_type', include_blank: false } %>
97
97
  </div>
98
98
  </div>
99
- <div class="layui-col-md6">
99
+ <div class="layui-col-md6" style="display: none">
100
100
  <labeL class="layui-form-label">指派人:</labeL>
101
101
  <div class="layui-input-block">
102
102
  <div id="other_staff_ids"></div>
@@ -94,12 +94,14 @@
94
94
  url: '/missions/money_plan_records',
95
95
  toolbar: '#toolbar_money_plan_record',
96
96
  defaultToolbar: ['filter'],
97
+ totalRow:true,
97
98
  cols: [
98
99
  [{
99
100
  field: 'id',
100
101
  width: 80,
101
102
  title: '序号',
102
103
  type: 'numbers',
104
+ totalRowText:'合计'
103
105
  },
104
106
  {
105
107
  field: 'payer_name',
@@ -109,7 +111,8 @@
109
111
  {
110
112
  field: 'amount',
111
113
  width: 150,
112
- title: '回款金额'
114
+ title: '回款金额',
115
+ totalRow:true
113
116
  },
114
117
  {
115
118
  field: 'date_at',
data/config/routes.rb CHANGED
@@ -383,6 +383,10 @@ EducodeSales::Engine.routes.draw do
383
383
  get :upload_file
384
384
  end
385
385
  member do
386
+ get :assign
387
+ post :assign_staff
388
+ get :assign_sale_staff
389
+ post :update_sale_staff
386
390
  get :show_schools
387
391
  post :follow_up
388
392
  put :update_advise
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '1.10.20'
2
+ VERSION = '1.10.22'
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: 1.10.20
4
+ version: 1.10.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - anke1460
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-27 00:00:00.000000000 Z
11
+ date: 2023-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -418,6 +418,8 @@ files:
418
418
  - app/views/educode_sales/ideas/add_courses.html.erb
419
419
  - app/views/educode_sales/ideas/add_event.html.erb
420
420
  - app/views/educode_sales/ideas/add_keys.html.erb
421
+ - app/views/educode_sales/ideas/assign.html.erb
422
+ - app/views/educode_sales/ideas/assign_sale_staff.html.erb
421
423
  - app/views/educode_sales/ideas/course_list.json.jbuilder
422
424
  - app/views/educode_sales/ideas/course_subject.json.jbuilder
423
425
  - app/views/educode_sales/ideas/daily_paper.html.erb