educode_sales 1.10.26 → 1.10.28

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0b5943ba3342b717b15aae35d1f7924a361af064491e015a553cc9f0e7b47586
4
- data.tar.gz: 37f21daa33a22073f98454512b4488bf39757ed93e471b62c4ef16380ab09453
3
+ metadata.gz: 7918ebb9f76467d371b5f760a001bcd5fa91f78cac3149882bedd2506add6251
4
+ data.tar.gz: 5225695183f80422067b3dbad8b0b3e7edd9ab0acaf08fc9261b970f8254f163
5
5
  SHA512:
6
- metadata.gz: d2c8a7277e685e6a73ad129275bb4b75d041bdfe870760f2833be8a8f0a387dbc41aacaafb3acb52530b941baced2bf02823cc71b313620423c3cd510f94fa85
7
- data.tar.gz: 99ecbbc2a8626d0ba99289a499008b7dcc8591154907cbdcab6abf427c3e49ce7b223dc9052df77ef30fcbcb2356b25edd91055267df6df739efecf3fc61ea62
6
+ metadata.gz: 81319e099aeff24c0df0be5a6f7f6f408e5a2c2c053476788b954d29ca00b1719cb921f250afd9516e0efca9f081dcc3cbfb86dd4a08fc6ba12edc53ce7b0747
7
+ data.tar.gz: da33b752f9b61b100f995c28377e0a1f8d38e5a375ba62302b9a2ed6b401f8a6d4547c8f3e17d8c474c935314a97b2bc896b6fbd6ffbdb4a87c6be418e841170
@@ -115,7 +115,7 @@ module EducodeSales
115
115
  end
116
116
  end
117
117
  format.json do
118
- if params[:q] && (params[:q][:clazz] == 'area' || params[:q][:clazz] == 'special' || params[:q][:clazz] == 'delete_list')
118
+ if params[:q] && (params[:q][:clazz] == 'area' || params[:q][:clazz] == 'special' || params[:q][:clazz] == 'delete_list' || params[:q][:clazz] == 'plan_year')
119
119
  if params[:q][:clazz] == 'special'
120
120
  school_ids = []
121
121
  # 专项商机
@@ -132,6 +132,8 @@ module EducodeSales
132
132
  @businesses = Business.joins("JOIN departments AS dp ON educode_sales_businesses.department_id = dp.id").where("dp.school_id in (?)", school_ids)
133
133
  elsif params[:q][:clazz] == 'delete_list'
134
134
  @businesses = Business.unscoped.where(state_id: [1, 3])
135
+ elsif params[:q][:clazz] == 'plan_year'
136
+ @businesses = Business.joins(:last_follow_up).where("educode_sales_follow_ups.plan_a_date > :year OR educode_sales_follow_ups.plan_return_date > :year OR educode_sales_follow_ups.invitation_at > :year", year: Time.now.beginning_of_year)
135
137
  end
136
138
  else
137
139
  if @current_admin.is_admin?
@@ -390,6 +392,11 @@ module EducodeSales
390
392
  @businesses = @businesses.select("
391
393
  distinct
392
394
  educode_sales_businesses.*,
395
+ last_follow.plan_a_date,
396
+ last_follow.plan_a_money,
397
+ last_follow.invitation_money,
398
+ last_follow.plan_return_date,
399
+ last_follow.plan_return_money,
393
400
  last_follow.invitation_at,
394
401
  last_follow.budget_amount,
395
402
  last_follow.o_business_deployment,
@@ -409,7 +409,7 @@ module EducodeSales
409
409
  end
410
410
 
411
411
  def follow_up_params
412
- params.permit(:clazz_id, :stage_id, :invitation_at, :reception_at, :total_amount, :actual_amount, :divide_amount, :divide_rate, :budget_amount, :description, :advise, :place_id, :bidded_date, :signed_date, :year, :o_business_deployment, :deploy_time, :rival)
412
+ params.permit(:clazz_id, :stage_id, :invitation_at, :reception_at, :total_amount, :actual_amount, :divide_amount, :divide_rate, :budget_amount, :description, :advise, :place_id, :bidded_date, :signed_date, :year, :o_business_deployment, :deploy_time, :rival, :plan_a_date, :plan_a_money, :invitation_money, :plan_return_date, :plan_return_money)
413
413
  end
414
414
 
415
415
  # 更新部门和部门下老师用户的状态
@@ -142,9 +142,16 @@ module EducodeSales
142
142
  idea.department_id = idea.business&.department_id
143
143
  end
144
144
  idea.attachment_ids = attachment_ids
145
+
145
146
  # idea.assist_staff_ids = assist_staff_ids
146
147
  # idea.other_staff_ids = other_staff_ids
147
148
  idea.save
149
+ attachment_ids.each do |a|
150
+ attachment = Attachment.find_by_id(a)
151
+ attachment.container_id = idea.id
152
+ attachment.container_type = 'EducodeSales::Idea'
153
+ attachment.save
154
+ end
148
155
  render_success
149
156
  end
150
157
 
@@ -264,6 +271,14 @@ module EducodeSales
264
271
  if follow_up.save
265
272
  idea.last_idea_follow_id = follow_up.id
266
273
  idea.save
274
+ attachment_ids = Array(params[:attachment_ids].to_s.split(","))
275
+ attachment_ids.each do |a|
276
+ attachment = Attachment.find_by_id(a)
277
+ attachment.container_id = idea.id
278
+ attachment.container_type = 'EducodeSales::Idea'
279
+ attachment.description = follow_up.id.to_s
280
+ attachment.save
281
+ end
267
282
  render_success
268
283
  else
269
284
  render_failure follow_up
@@ -25,7 +25,7 @@ module EducodeSales
25
25
  enum model: %w[本地版 线上版 混合版]
26
26
  enum idea_type: %w[建设方案 申报论证 市场调研 课程建设 报价清单 交流汇报 招标参数 资质申报 产品手册 宣传海报 课题论文 投标支持 其他类]
27
27
 
28
- serialize :assist_staff_ids,Array
28
+ serialize :assist_staff_ids, Array
29
29
  serialize :attachment_ids, Array
30
30
  serialize :other_staff_ids, Array
31
31
 
@@ -35,6 +35,18 @@ module EducodeSales
35
35
  self.update(deleted_at: nil, deleter_id: nil, is_deleted: false)
36
36
  end
37
37
 
38
+ def sync_data
39
+ # {"content"=>"123", "idea_id"=>15, "school_id"=>nil, "money"=>123.0, "advise"=>"123", "sale_staff_id"=>8, "idea_staff_id"=>12, "staff_id"=>2, "comment"=>nil, "created_at"=>Mon, 01 May 2023 11:12:48 CST +08:00, "updated_at"=>Mon, 01 Ma023 11:14:06 CST +08:00}
40
+ # {"school_id"=>38739, "name"=>"java项目", "level"=>"高", "staff_id"=>24,"types"=>"低定制", "model"=>"本地版", "hardware"=>111.011, "project"=>333.011, "money"=>222.01, "creator_id"=>2, "end_time"=>Sat, 08 Apr 2023, "history_type"=>n"=>"4441111", "deleter_id"=>nil, "is_deleted"=>false, "deleted_at"=>nil, "department_id"=>35794, "manager_name"=>"王旭11111", "manager_phone"=>"131011111111111", "history_record"=>nil, "created_at"=>Thu, 23 Mar 2023 11:27:22 CST +08:00, "updated_at"=>Tue, 04 Jul 20217:57:32 CST +08:00, "school_name"=>"湖南科技大学1111", "department_name"=>"计算机科学与技术11111", "sale_staff_id"=>53, "idea_staff_id"=>nil, "assist_staff_ids"=>["10"], "attachment_id"=>nil, "attachment_ids"=>["4390068"], "idea_type"=>"建设方案", "other_staff_ids" "12", "13", "14", "16", "17", "18"], "idea_follows_count"=>2, "last_idea_follow_id"=>11, "advise"=>"123123", "business_id"=>nil}
41
+
42
+ last_follow = self.idea_follows.order(created_at: :desc).first
43
+ if last_follow
44
+ self.update(status: last_follow.status, last_idea_follow_id: last_follow.id, staff_id: last_follow.idea_staff_id, sale_staff_id: last_follow.sale_staff_id)
45
+ else
46
+ self.update(last_idea_follow_id: nil)
47
+ end
48
+ end
49
+
38
50
  def assist_staffs
39
51
  Staff.where(id: self.assist_staff_ids)
40
52
  end
@@ -7,5 +7,12 @@ module EducodeSales
7
7
  belongs_to :school, optional: true
8
8
 
9
9
  enum status: %w[未完成 已完成]
10
+
11
+ after_save :update_idea_status
12
+ after_destroy :update_idea_status
13
+
14
+ def update_idea_status
15
+ idea.sync_data
16
+ end
10
17
  end
11
18
  end
@@ -170,6 +170,7 @@
170
170
  <% if can?(:audit_business, EducodeSales::Business) %>
171
171
  <button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right delete-btn" lay-event="delete_list">审核商机</button>
172
172
  <% end %>
173
+ <button class="layui-btn layui-btn-primary layui-border-green layui-btn-sm pull-right plan_year" lay-event="plan_year">本年计划</button>
173
174
  </div>
174
175
  </script>
175
176
  <script type="text/html" id="delete_bar">
@@ -522,6 +523,20 @@
522
523
  sort: true,
523
524
  hide: gon.filter.latest_time
524
525
  },
526
+ {
527
+ field: 'plan_a_date',
528
+ width: 150,
529
+ title:'计划A类时间',
530
+ sort: true,
531
+ hide: gon.filter.plan_a_date
532
+ },
533
+ {
534
+ field: 'plan_a_money',
535
+ width: 150,
536
+ title: '计划A类金额',
537
+ sort: true,
538
+ hide: gon.filter.plan_a_money
539
+ },
525
540
  {
526
541
  field: 'invitation_at',
527
542
  width: 150,
@@ -529,6 +544,13 @@
529
544
  sort: true,
530
545
  hide: gon.filter.invitation_at
531
546
  },
547
+ {
548
+ field: 'invitation_money',
549
+ width: 150,
550
+ title: '计划投标金额',
551
+ sort: true,
552
+ hide: gon.filter.invitation_money
553
+ },
532
554
  {
533
555
  field: 'bidded_date',
534
556
  width: 105,
@@ -536,6 +558,20 @@
536
558
  sort: true,
537
559
  hide: gon.filter.bidded_date
538
560
  },
561
+ {
562
+ field: 'plan_return_date',
563
+ width: 135,
564
+ title: '计划回款时间',
565
+ sort: true,
566
+ hide: gon.filter.plan_return_date
567
+ },
568
+ {
569
+ field: 'plan_return_money',
570
+ width: 135,
571
+ title: '计划回款金额',
572
+ sort: true,
573
+ hide: gon.filter.plan_return_money
574
+ },
539
575
  {
540
576
  field: 'budget_amount',
541
577
  width: 105,
@@ -1067,6 +1103,8 @@
1067
1103
  $(".area-btn").addClass("selected-btn");
1068
1104
  } else if (search['clazz'] == 'delete_list') {
1069
1105
  $(".delete-btn").addClass("selected-btn");
1106
+ } else if (search['clazz'] == 'plan_year') {
1107
+ $(".plan_year").addClass("selected-btn");
1070
1108
  } else {
1071
1109
  $(".all-btn").addClass("selected-btn");
1072
1110
  }
@@ -1249,6 +1287,26 @@
1249
1287
 
1250
1288
  return false;
1251
1289
  }
1290
+ else if (obj.event === 'plan_year') {
1291
+ search = {"clazz": "plan_year"}
1292
+ business_type_list.setValue([])
1293
+ table.reload('businesses_table', {
1294
+ url: '/missions/businesses',
1295
+ cols: cols_table,
1296
+ page: {
1297
+ curr: 1
1298
+ },
1299
+ where: {q: search, sort: sort}
1300
+ }, 'data');
1301
+
1302
+ form.val('search_form', {
1303
+ name: '', department: '', staff_id: '', business_type: '', business_step: '',
1304
+ place_id: '', date: '', area: ''
1305
+ })
1306
+ $(".plan_year").addClass("selected-btn");
1307
+
1308
+ return false;
1309
+ }
1252
1310
  else if (obj.event === 'delete') {
1253
1311
  var checkStatus = table.checkStatus('currentTableId'),
1254
1312
  data = checkStatus.data;
@@ -76,6 +76,11 @@ json.data do
76
76
  json.self_flag (d.staff_id == @current_admin.id) || (d.last_follow_up_id.in? follow_up_ids)
77
77
  json.followed d.users.pluck(:user_id).include?(@current_admin.user.id) ? 1 : 0 # d.users.where(user_id:@current_admin.user.id).first ? 1 : 0
78
78
  json.p_deploy_time d.p_deploy_time
79
+ json.plan_a_date d.last_follow_up&.plan_a_date&.to_s
80
+ json.plan_a_money d.last_follow_up&.plan_a_money&.round(6)
81
+ json.invitation_money d.last_follow_up&.invitation_money&.to_s
82
+ json.plan_return_date d.last_follow_up&.plan_return_date&.to_s
83
+ json.plan_return_money d.last_follow_up&.plan_return_money&.round(6)
79
84
  end
80
85
  end
81
86
 
@@ -43,6 +43,11 @@
43
43
  width: 200,
44
44
  title: '生日',
45
45
  },
46
+ {
47
+ field: 'tel',
48
+ width: 200,
49
+ title: '联系方式',
50
+ },
46
51
  {
47
52
  field: 'remark',
48
53
  width: 300,
@@ -37,6 +37,21 @@
37
37
  <%= select_tag "stage_id", options_for_select(@stages, @last_follow_up&.stage_id), { 'lay-filter': 'stage_id', class: 'required', } %>
38
38
  </div>
39
39
  </div>
40
+ </br>
41
+ <div class="layui-inline">
42
+ <label class="layui-form-label">计划A类时间</label>
43
+ <div class="layui-input-inline">
44
+ <input type="text" class="layui-input" name="plan_a_date" autocomplete="off" id="plan_a_date"
45
+ value="<%= @last_follow_up&.plan_a_date %>"
46
+ placeholder="请选择日期">
47
+ </div>
48
+ </div>
49
+ <div class="layui-inline">
50
+ <label class="layui-form-label">计划A类金额(万)</label>
51
+ <div class="layui-input-inline">
52
+ <input name="plan_a_money" class="layui-input" value="<%= @last_follow_up&.plan_a_money.to_f.round(6) %>">
53
+ </div>
54
+ </div>
40
55
  <br>
41
56
  <div class="layui-inline">
42
57
  <label class="layui-form-label">计划投标时间</label>
@@ -46,14 +61,29 @@
46
61
  placeholder="请选择日期">
47
62
  </div>
48
63
  </div>
49
- <div class="layui-inline">
50
- <label class="layui-form-label">中标时间</label>
64
+ <div class="layui-inline">
65
+ <label class="layui-form-label">计划投标金额(万)</label>
51
66
  <div class="layui-input-inline">
52
- <input type="text" class="layui-input" name="bidded_date" autocomplete="off" id="invitation_at_add"
53
- value="<%= @last_follow_up&.bidded_date %>"
54
- placeholder="请选择日期">
67
+ <input name="invitation_money" class="layui-input" value="<%= @last_follow_up&.invitation_money.to_f.round(6) %>">
55
68
  </div>
56
69
  </div>
70
+ </br>
71
+ <div class="layui-inline">
72
+ <label class="layui-form-label">计划回款时间</label>
73
+ <div class="layui-input-inline">
74
+ <input type="text" class="layui-input" name="plan_return_date" autocomplete="off" id="plan_return_date"
75
+ value="<%= @last_follow_up&.plan_return_date %>"
76
+ placeholder="请选择日期">
77
+ </div>
78
+ </div>
79
+ <div class="layui-inline">
80
+ <label class="layui-form-label">计划回款金额(万)</label>
81
+ <div class="layui-input-inline">
82
+ <input name="plan_return_money" class="layui-input" value="<%= @last_follow_up&.plan_return_money.to_f.round(6) %>">
83
+ </div>
84
+ </div>
85
+
86
+
57
87
  <br>
58
88
  <!--
59
89
  <div class="layui-inline">
@@ -88,6 +118,14 @@
88
118
  </div> -->
89
119
 
90
120
  <br class="service_show layui-hide">
121
+ <div class="layui-inline">
122
+ <label class="layui-form-label">中标时间</label>
123
+ <div class="layui-input-inline">
124
+ <input type="text" class="layui-input" name="bidded_date" autocomplete="off" id="invitation_at_add"
125
+ value="<%= @last_follow_up&.bidded_date %>"
126
+ placeholder="请选择日期">
127
+ </div>
128
+ </div>
91
129
  <div class="layui-inline">
92
130
  <label class="layui-form-label">中标额(万)</label>
93
131
  <div class="layui-input-inline">
@@ -247,6 +285,14 @@
247
285
  laydate.render({
248
286
  elem: '#reception_at_add'
249
287
  });
288
+
289
+ laydate.render({
290
+ elem: '#plan_a_date'
291
+ })
292
+
293
+ laydate.render({
294
+ elem: '#plan_return_date'
295
+ })
250
296
  var sales_list = xmSelect.render({
251
297
  el: '#assign_follow',
252
298
  remoteSearch: true,
@@ -358,6 +404,10 @@
358
404
  <style>
359
405
  .new_place_select xm-select > .xm-body {
360
406
  width: 300px;
361
- !important;
407
+ !important;
408
+ }
409
+
410
+ .layui-form-label {
411
+ width: 120px;
362
412
  }
363
413
  </style>
@@ -35,6 +35,19 @@
35
35
  </div>
36
36
  </div>
37
37
  <br>
38
+ <div class="layui-inline">
39
+ <label class="layui-form-label">计划A类时间:</label>
40
+ <div class="layui-input-inline">
41
+ <%= @follow_up.plan_a_date.to_s %>
42
+ </div>
43
+ </div>
44
+ <div class="layui-inline">
45
+ <label class="layui-form-label">计划A类金额:</label>
46
+ <div class="layui-input-inline">
47
+ <%= @follow_up.plan_a_money&.round(6) %>
48
+ </div>
49
+ </div>
50
+ </br>
38
51
  <div class="layui-inline">
39
52
  <label class="layui-form-label">计划投标时间:</label>
40
53
  <div class="layui-input-inline">
@@ -42,9 +55,22 @@
42
55
  </div>
43
56
  </div>
44
57
  <div class="layui-inline">
45
- <label class="layui-form-label">中标时间:</label>
58
+ <label class="layui-form-label">计划投标金额:</label>
46
59
  <div class="layui-input-inline">
47
- <%= @follow_up.bidded_date.to_s %>
60
+ <%= @follow_up.invitation_money&.round(6) %>
61
+ </div>
62
+ </div>
63
+ </br>
64
+ <div class="layui-inline">
65
+ <label class="layui-form-label">计划回款时间:</label>
66
+ <div class="layui-input-inline">
67
+ <%= @follow_up.plan_return_date.to_s %>
68
+ </div>
69
+ </div>
70
+ <div class="layui-inline">
71
+ <label class="layui-form-label">计划回款金额:</label>
72
+ <div class="layui-input-inline">
73
+ <%= @follow_up.plan_return_money&.round(6) %>
48
74
  </div>
49
75
  </div>
50
76
  <br>
@@ -86,6 +112,12 @@
86
112
  <%= @follow_up.total_amount.to_f.round(6) %>万
87
113
  </div>
88
114
  </div>
115
+ <div class="layui-inline">
116
+ <label class="layui-form-label">中标时间:</label>
117
+ <div class="layui-input-inline">
118
+ <%= @follow_up.bidded_date.to_s %>
119
+ </div>
120
+ </div>
89
121
  <div class="layui-inline">
90
122
  <label class="layui-form-label">合同额:</label>
91
123
  <div class="layui-input-inline">
@@ -222,3 +254,9 @@
222
254
  });
223
255
  }
224
256
  </script>
257
+ <style>
258
+
259
+ .layui-form-label {
260
+ width: 120px;
261
+ }
262
+ </style>
@@ -145,7 +145,7 @@
145
145
  <textarea name="content" placeholder="需求说明" class="layui-textarea"><%= @idea&.content.to_s %></textarea>
146
146
  </div>
147
147
  </div>
148
- <div class="layui-row" style="padding-top: 15px;display: none">
148
+ <div class="layui-row" style="padding-top: 15px">
149
149
  <div class="layui-col-md6">
150
150
  <labeL class="layui-form-label">方案材料:</labeL>
151
151
  <div class="layui-btn-container">
@@ -44,6 +44,20 @@
44
44
  <textarea name="content" placeholder="团队建议" class="layui-textarea"><%= @idea_follow&.content.to_s %></textarea>
45
45
  </div>
46
46
  </div>
47
+ <div class="layui-row" style="padding-top: 15px">
48
+ <div class="layui-col-md6">
49
+ <labeL class="layui-form-label">材料:</labeL>
50
+ <div class="layui-btn-container">
51
+ <button type="button" class="layui-btn layui-btn-normal" id="test8">选择文件</button>
52
+ </div>
53
+ </div>
54
+ <div class="layui-col-md6">
55
+ <labeL class="layui-form-label">文件:</labeL>
56
+ <div class="layui-input-block">
57
+ <div id="attachment_ids_f"></div>
58
+ </div>
59
+ </div>
60
+ </div>
47
61
  <div class="layui-row" style="padding-top: 30px; float: left">
48
62
  <div class="layui-input-block">
49
63
  <button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn_follow">确认保存</button>
@@ -56,18 +70,34 @@
56
70
 
57
71
 
58
72
  <script>
59
- layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate'], function () {
73
+ layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'laydate', 'upload'], function () {
60
74
  var form = layui.form,
61
- layer = layui.layer,
62
- table = layui.table,
63
- laytpl = layui.laytpl,
64
- request = layui.request,
65
- laydate = layui.laydate,
66
- $ = layui.$;
75
+ layer = layui.layer,
76
+ table = layui.table,
77
+ laytpl = layui.laytpl,
78
+ request = layui.request,
79
+ laydate = layui.laydate,
80
+ upload = layui.upload,
81
+ $ = layui.$;
67
82
 
68
83
  form.render();
69
84
 
70
-
85
+ upload.render({
86
+ elem: '#test8'
87
+ , url: '/missions/upload_files' //此处配置你自己的上传接口即可
88
+ , auto: true
89
+ , accept: 'file' //普通文件
90
+ , bindAction: '#test9'
91
+ , done: function (res) {
92
+ layer.msg('上传成功');
93
+ // $("#attachment_id").val(res.attachment_id)
94
+ // $("#filename").val(res.filename)
95
+ a = attachment_list_f.getValue()
96
+ b = [{name: res.filename, value: res.attachment_id}]
97
+ c = a.concat(b)
98
+ attachment_list_f.setValue(c)
99
+ }
100
+ });
71
101
  var staff_list = xmSelect.render({
72
102
  el: '#new_idea_staff_id',
73
103
  data: gon.staffs,
@@ -80,6 +110,12 @@
80
110
  filterable: true,
81
111
  radio: true,
82
112
  })
113
+ var attachment_list_f = xmSelect.render({
114
+ el: '#attachment_ids_f',
115
+ data: [],
116
+ filterable: true,
117
+ multiple: true
118
+ })
83
119
 
84
120
 
85
121
  //监听提交
@@ -87,6 +123,7 @@
87
123
  data.field.idea_id = "<%= @idea.id %>";
88
124
  data.field.idea_staff_id = staff_list.getValue('valueStr');
89
125
  data.field.sale_staff_id = sale_staff_list.getValue('valueStr');
126
+ data.field.attachment_ids = attachment_list_f.getValue('valueStr');
90
127
  request.authPost("missions/ideas/" + data.field.idea_id + "/follow_up", data.field, function (res) {
91
128
  if (res.success == false) {
92
129
  layer.alert(res.msg)
@@ -271,7 +271,6 @@
271
271
  width: 200,
272
272
  title: '联系方式',
273
273
  edit: true
274
- }, {
275
274
  }, {
276
275
  field: 'remark',
277
276
  width: 200,
@@ -0,0 +1,9 @@
1
+ class AddPlanADateToFollowUps < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_column :educode_sales_follow_ups, :plan_a_date, :date, comment: '计划a类时间'
4
+ add_column :educode_sales_follow_ups, :plan_a_money, :double, comment: '计划a类金额'
5
+ add_column :educode_sales_follow_ups, :invitation_money, :double, comment: '计划投标金额'
6
+ add_column :educode_sales_follow_ups, :plan_return_date, :date, comment: '计划回款时间'
7
+ add_column :educode_sales_follow_ups, :plan_return_money, :double, comment: '计划回款金额'
8
+ end
9
+ end
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '1.10.26'
2
+ VERSION = '1.10.28'
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.26
4
+ version: 1.10.28
5
5
  platform: ruby
6
6
  authors:
7
7
  - anke1460
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-04 00:00:00.000000000 Z
11
+ date: 2023-07-05 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
@@ -745,6 +744,7 @@ files:
745
744
  - db/migrate/20230614141628_create_educode_sales_follow_up_tags.rb
746
745
  - db/migrate/20230614142145_create_educode_sales_watch_follow_ups.rb
747
746
  - db/migrate/20230629130033_add_clazz_to_money_plans.rb
747
+ - db/migrate/20230704124921_add_plan_a_date_to_follow_ups.rb
748
748
  - lib/educode_sales.rb
749
749
  - lib/educode_sales/engine.rb
750
750
  - lib/educode_sales/version.rb
@@ -753,7 +753,7 @@ homepage: https://www.educoder.net
753
753
  licenses:
754
754
  - MIT
755
755
  metadata: {}
756
- post_install_message:
756
+ post_install_message:
757
757
  rdoc_options: []
758
758
  require_paths:
759
759
  - lib
@@ -769,7 +769,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
769
769
  version: '0'
770
770
  requirements: []
771
771
  rubygems_version: 3.0.9
772
- signing_key:
772
+ signing_key:
773
773
  specification_version: 4
774
774
  summary: Summary of EducodeSales.
775
775
  test_files: []