educode_sales 1.10.26 → 1.10.28

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: 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: []