educode_sales 0.9.60 → 0.9.61

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: 38a087d439337d97172f9dedbd4c7bc35c85d88d96379f0361bff0da95658d4b
4
- data.tar.gz: fd6bc9fd073b19ad2e1be53e2d905fbd0001f759c563cabedf26c27e14f108bc
3
+ metadata.gz: dda4d36517f72a9d366af24dfad85dda17417676ff115c61337b4611b484474a
4
+ data.tar.gz: b7febeed63e1933ce7509f4ba708a0fbad03f543f4b71461d2b6994abafb6458
5
5
  SHA512:
6
- metadata.gz: 4eec669e7e2fcf022da895cb512c8f59041ea02fdeab2b792a3f393d4dc24b753e6b142e9c818ee6c73b127057ab40dd609a785c1179cb1b4862da42a17c6cec
7
- data.tar.gz: 8759062ab1edd1b677746bd518e1d71919782b1dd1684c9b9580156f457847bad22cdd1c87eb5bfdc7ac166992ce8c0a48d169b5ac4b70c4a03beadc51934bff
6
+ metadata.gz: fd9c33cb2663078a0cb34d5114c5264b92d7146c55c9a80c2699b4010f0215cf37909d5746666697bb3b89bb805063fa3d13cacd96844f0e9b340ac80ba640e7
7
+ data.tar.gz: 0d03669ffb838bead64df8769417fa5ae627735676f941d44f089fcd7553ed57130249519ca172cede3484eaf757030f0beb2788db68816fa14aee08969f4064
@@ -5,15 +5,37 @@ module EducodeSales
5
5
  def index
6
6
  respond_to do |format|
7
7
  format.html do
8
+ @staffs = Staff.all.map { |d| [ d.user&.real_name, d.id ]}
8
9
  end
9
10
  format.json do
10
11
  @activities = Activity
12
+ if params[:q].present?
13
+ if params[:q][:staff_id].present?
14
+ @activities = @activities.where(staff_id: params[:q][:staff_id])
15
+ end
16
+ if params[:q][:clazz_id].present?
17
+ @activities = @activities.where(clazz_id: params[:q][:clazz_id])
18
+ end
19
+
20
+ if params[:q][:name].present?
21
+ @activities = @activities.where("educode_sales_activities.name like ?", "%#{params[:q][:name]}%")
22
+ end
23
+ if params[:q][:manage].present?
24
+ @activities = @activities.joins("JOIN educode_sales_activity_staffs AS m ON m.activity_id = educode_sales_activities.id AND m.clazz_id = 0").where("m.staff_id = ?", params[:q][:manage].to_i)
25
+ end
26
+ if params[:q][:assists].present?
27
+ @activities = @activities.joins("JOIN educode_sales_activity_staffs AS a ON a.activity_id = educode_sales_activities.id AND a.clazz_id = 1").where("a.staff_id = ?", params[:q][:assists].to_i)
28
+ end
29
+ if params[:q][:expert].present?
30
+ @activities = @activities.joins("JOIN educode_sales_activity_staffs AS e ON e.activity_id = educode_sales_activities.id AND e.clazz_id = 2").where("e.name like ?", "%#{params[:q][:expert]}%")
31
+ end
32
+ end
11
33
  if params[:sort].present? && params[:sort][:field]
12
34
  @activities = @activities.order("#{params[:sort][:field]} #{params[:sort][:order]}")
13
35
  else
14
36
  @activities = @activities.order("created_at desc")
15
37
  end
16
- @activities = @activities.page(params[:page]).per(params[:limit])
38
+ @activities = @activities.distinct.page(params[:page]).per(params[:limit])
17
39
  end
18
40
  end
19
41
  end
@@ -53,9 +75,11 @@ module EducodeSales
53
75
  EducodeSales::ActivityStaff.create(name: d[1], clazz_id: 'expert', activity_id: activity.id)
54
76
  end
55
77
  end
56
- # file_path = Util::FileManage.disk_filename('educode_sales_activtiy', activity.id)
57
- # Util.write_file(params[:file], file_path)
58
- # activity.update(filename: file_path)
78
+ if params[:attachment_id].present?
79
+ attachment = @current_admin.user.attachments.find(params[:attachment_id])
80
+ attachment.container = activity
81
+ attachment.save
82
+ end
59
83
  render_success
60
84
  else
61
85
  render_failure activity
@@ -86,6 +110,23 @@ module EducodeSales
86
110
  activity.manages = manages
87
111
  activity.assists = assists
88
112
  activity.experts = experts
113
+
114
+ if params[:attachment_id].present?
115
+ if activity.attachment&.id && activity.attachment&.id != params[:attachment_id].to_i
116
+ file_path = File.join(Rails.root, "public", "files", 'educode_sales', activity.attachment.disk_filename)
117
+ File.delete(file_path) if File.exist?(file_path)
118
+ activity.attachment.destroy
119
+ end
120
+ attachment = @current_admin.user.attachments.find(params[:attachment_id])
121
+ attachment.container = activity
122
+ attachment.save
123
+ else
124
+ if activity.attachment
125
+ file_path = File.join(Rails.root, "public", "files", 'educode_sales', activity.attachment.disk_filename)
126
+ File.delete(file_path) if File.exist?(file_path)
127
+ activity.attachment.destroy
128
+ end
129
+ end
89
130
  if activity.save
90
131
  render_success
91
132
  else
@@ -95,6 +136,11 @@ module EducodeSales
95
136
 
96
137
  def destroy
97
138
  activity = Activity.find(params[:id])
139
+ if activity.attachment
140
+ file_path = File.join(Rails.root, "public", "files", 'educode_sales', activity.attachment.disk_filename)
141
+ File.delete(file_path) if File.exist?(file_path)
142
+ activity.attachment.destroy
143
+ end
98
144
  activity.destroy
99
145
  render_success
100
146
  rescue ActiveRecord::DeleteRestrictionError => e
@@ -1080,6 +1080,16 @@ module EducodeSales
1080
1080
  end
1081
1081
  end
1082
1082
 
1083
+ def update_advise
1084
+ business = Business.find(params[:id])
1085
+ if business.last_follow_up.present?
1086
+ business.last_follow_up.update(advise: params[:content])
1087
+ render_success
1088
+ else
1089
+ render_failure '无跟进动态,暂不能添加建议'
1090
+ end
1091
+ end
1092
+
1083
1093
  private
1084
1094
 
1085
1095
  def load_business
@@ -251,6 +251,12 @@ module EducodeSales
251
251
  end
252
252
  end
253
253
 
254
+ def update_advise
255
+ followup = FollowUp.find(params[:id])
256
+ followup.update(advise: params[:content])
257
+ render_success
258
+ end
259
+
254
260
  private
255
261
 
256
262
  def load_business
@@ -44,7 +44,7 @@ module EducodeSales
44
44
  else
45
45
  logger.info "文件已存在,id = #{@attachment.id}, filename = #{@attachment.filename}"
46
46
  end
47
- render json: { success: true, attachment_id: @attachment.id ,filename: @attachment.filename}
47
+ render json: { success: true, attachment_id: @attachment.id ,filename: @attachment.filename, url: folder + "/" + @attachment.disk_filename}
48
48
  end
49
49
 
50
50
  def destroy
@@ -8,6 +8,8 @@ module EducodeSales
8
8
  has_many :experts , -> {where("educode_sales_activity_staffs.clazz_id = 2")}, dependent: :destroy, class_name: 'ActivityStaff'
9
9
  has_many :activity_staffs
10
10
 
11
+ has_one :attachment, as: :container, dependent: :destroy
12
+
11
13
  enum clazz_id: ['全国会议', '区域会议', '单校会议', '国赛', '省赛', '夏令营']
12
14
  end
13
15
  end
@@ -1,7 +1,7 @@
1
1
  <%= Gon::Base.render_data %>
2
2
  <div class="layuimini-main">
3
3
  <form class="layui-form layuimini-form" action="">
4
- <div class="layui-form-item" style="padding: 25px">
4
+ <div class="layui-form-item">
5
5
  <div class="layui-inline">
6
6
  <label class="layui-form-label required">活动名称</label>
7
7
  <div class="layui-input-block">
@@ -41,9 +41,18 @@
41
41
  <div id="expert_list" style="width: 600px;"></div>
42
42
  </div>
43
43
  </div>
44
+ </div>
45
+ <div class="layui-form-item">
44
46
  <div class="layui-inline">
45
47
  <label class="layui-form-label">上传附件</label>
46
48
  <div class="layui-input-block">
49
+ <%= hidden_field_tag 'attachment_id', @activity.attachment&.id %>
50
+ <span id="attachment">
51
+ <% if @activity.attachment %>
52
+ <%= link_to @activity.attachment&.filename.to_s, "/missions/upload_files/download?id=#{@activity.attachment&.id}", target: '_blank' %>
53
+ <a href="javascript:;" style="color:red;" id="delete">删除</a>
54
+ <% end %>
55
+ </span>
47
56
  <button type="button" class="layui-btn" id="upload_file">上传文件</button>
48
57
  </div>
49
58
  </div>
@@ -65,6 +74,7 @@
65
74
  request = layui.request,
66
75
  $ = layui.$,
67
76
  xmSelect = layui.xmSelect,
77
+ upload = layui.upload,
68
78
  laydate = layui.laydate;
69
79
 
70
80
  //常规用法
@@ -89,6 +99,18 @@
89
99
  }
90
100
  })
91
101
 
102
+ upload.render({
103
+ elem: '#upload_file',
104
+ url: '/missions/upload_files',
105
+ auto: true,
106
+ accept: 'file',
107
+ done: function (res) {
108
+ layer.msg('上传成功');
109
+ $("#attachment_id").val(res.attachment_id);
110
+ document.getElementById("attachment").innerHTML = '<a target="_blank" href="' + res.url+ '">' + res.filename + '</a><a href="javascript:;" style="color:red;" id="delete">删除</a>';
111
+ }
112
+ });
113
+
92
114
  var staff_manage = xmSelect.render({
93
115
  el: '#staff_manage_list',
94
116
  data: gon.staff_manage,
@@ -115,12 +137,16 @@
115
137
  } else {
116
138
  cb(res.data);
117
139
  }
118
-
119
140
  })
120
141
  },
121
142
  data: gon.experts
122
143
  })
123
144
 
145
+ $(body).on("click", "#delete", function() {
146
+ document.getElementById("attachment").innerHTML = "";
147
+ $("#attachment_id").val('');
148
+ })
149
+
124
150
  //监听提交
125
151
  form.on('submit(data-reset-btn)', function (data) {
126
152
  data.field.staff_manage_id = staff_manage.getValue('value');
@@ -7,6 +7,54 @@
7
7
  <% end %>
8
8
  </div>
9
9
  </script>
10
+ <div style="margin: 10px 10px 10px 10px">
11
+ <form class="layui-form layui-form-pane" lay-filter="search_ideas">
12
+ <div class="layui-form-item">
13
+ <div class="layui-inline ">
14
+ <label class="layui-form-label">活动名称</label>
15
+ <div class="layui-input-inline">
16
+ <input type="text" class="layui-input" name="name" autocomplete="off">
17
+ </div>
18
+ </div>
19
+ <div class="layui-inline">
20
+ <label class="layui-form-label">会议类型</label>
21
+ <div class="layui-input-inline">
22
+ <%= select_tag "clazz_id", options_for_select(['全国会议', '区域会议', '单校会议', '国赛', '省赛', '夏令营'], ""), { include_blank: true } %>
23
+ </div>
24
+ </div>
25
+ <div class="layui-inline">
26
+ <label class="layui-form-label">销售经理</label>
27
+ <div class="layui-input-inline">
28
+ <%= select_tag "staff_id", options_for_select(@staffs, ""), { include_blank: true } %>
29
+ </div>
30
+ </div>
31
+ <div class="layui-inline">
32
+ <label class="layui-form-label">生态经理</label>
33
+ <div class="layui-input-inline">
34
+ <%= select_tag "manage", options_for_select(@staffs, ""), { include_blank: true } %>
35
+ </div>
36
+ </div>
37
+ <div class="layui-inline">
38
+ <label class="layui-form-label">协助人员</label>
39
+ <div class="layui-input-inline">
40
+ <%= select_tag "assists", options_for_select(@staffs, ""), { include_blank: true } %>
41
+ </div>
42
+ </div>
43
+ <div class="layui-inline">
44
+ <label class="layui-form-label">报告专家</label>
45
+ <div class="layui-input-inline">
46
+ <input type="text" class="layui-input" name="expert" autocomplete="off">
47
+ </div>
48
+ </div>
49
+ <div class="layui-inline">
50
+ <button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_activity_search">重置
51
+ </button>
52
+ <button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="search_activity">搜 索
53
+ </button>
54
+ </div>
55
+ </div>
56
+ </form>
57
+ </div>
10
58
  <div class="min-height-table">
11
59
  <table class="layui-hide" id="activities_table" lay-filter="activities_table"></table>
12
60
  </div>
@@ -129,6 +177,17 @@
129
177
  }
130
178
  });
131
179
  })
180
+ // 监听搜索操作
181
+ form.on('submit(search_activity)', function (data) {
182
+ search = data.field
183
+ table.reload('activities_table', {
184
+ page: {
185
+ curr: 1
186
+ },
187
+ where: {q: search, sort: sort}
188
+ }, 'data');
189
+ return false;
190
+ });
132
191
  table.on('toolbar(activities_table)', function (obj) {
133
192
  if (obj.event === 'add') { // 监听添加操作
134
193
  var content = miniPage.getHrefContent('/missions/activities/new');
@@ -1,7 +1,7 @@
1
1
  <%= Gon::Base.render_data %>
2
2
  <div class="layuimini-main">
3
3
  <div class="layui-form layuimini-form">
4
- <div class="layui-form-item" style="padding: 25px">
4
+ <div class="layui-form-item">
5
5
  <div class="layui-inline">
6
6
  <label class="layui-form-label required">活动名称</label>
7
7
  <div class="layui-input-block">
@@ -44,9 +44,14 @@
44
44
  <div id="expert_list" style="width: 600px;"></div>
45
45
  </div>
46
46
  </div>
47
+ </div>
48
+ <div class="layui-form-item">
47
49
  <div class="layui-inline">
48
50
  <label class="layui-form-label">上传附件</label>
49
51
  <div class="layui-input-block">
52
+ <%= hidden_field_tag 'attachment_id' %>
53
+ <span id="attachment">
54
+ </span>
50
55
  <button type="button" class="layui-btn" id="upload_file">上传文件</button>
51
56
  </div>
52
57
  </div>
@@ -111,17 +116,22 @@
111
116
  })
112
117
 
113
118
 
114
-
115
119
  upload.render({
116
- elem: '#upload_file'
117
- ,url: '' //此处配置你自己的上传接口即可
118
- ,accept: 'file' //普通文件
119
- ,auto: false
120
- ,done: function(res){
120
+ elem: '#upload_file',
121
+ url: '/missions/upload_files',
122
+ auto: true,
123
+ accept: 'file',
124
+ done: function (res) {
121
125
  layer.msg('上传成功');
126
+ $("#attachment_id").val(res.attachment_id);
127
+ document.getElementById("attachment").innerHTML = '<a target="_blank" href="' + res.url+ '">' + res.filename + '</a><a href="javascript:;" style="color:red;" id="delete">删除</a>';
122
128
  }
123
- });
124
-
129
+ });
130
+
131
+ $(body).on("click", "#delete", function() {
132
+ document.getElementById("attachment").innerHTML = "";
133
+ $("#attachment_id").val('');
134
+ })
125
135
  form.render();
126
136
 
127
137
  // 当前弹出层,防止ID被覆盖
@@ -58,6 +58,9 @@
58
58
  </script>
59
59
  <script type="text/html" id="currentTableBar_follows">
60
60
  <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">详情</a>
61
+ <% if can?(:advise, EducodeSales::Business) %>
62
+ <a class="layui-btn layui-btn-default layui-btn-xs data-count-edit" lay-event="add_advise">团队建议</a>
63
+ <% end %>
61
64
  </script>
62
65
  <script type="text/html" id="business">
63
66
  <a href="javascript:void(0);" lay-event="business" class="layui-table-link">{{ d.business }}</a>
@@ -163,7 +166,7 @@
163
166
  },
164
167
  {
165
168
  title: '操作',
166
- width: 80,
169
+ width: 160,
167
170
  toolbar: '#currentTableBar_follows',
168
171
  align: "center",
169
172
  fixed: 'right'
@@ -280,6 +283,36 @@
280
283
  $(window).on("resize", function () {
281
284
  layer.full(index);
282
285
  });
286
+ } else if (obj.event == 'add_advise') {
287
+ layer.open({
288
+ title: '添加团队建议',
289
+ closeBtn: 0,
290
+ type: 1,
291
+ area: '400px;',
292
+ id: 'LAY_layuipro',
293
+ content: '<div class="layui-form" lay-filter="edit_project" style="padding: 20px;"><textarea autocomplete="off" type="text" name="name" lay-verify="required" class="layui-textarea">' + data.advise + '</textarea></div>' ,
294
+ btn: ['保存', '取消'],
295
+ btn1: function(index, l) {
296
+ if (l.find("textarea").val().trim() == '') {
297
+ layer.msg('内容不能为空')
298
+ return false;
299
+ } else {
300
+ request.authPut("/missions/follow_ups/" + data.id + "/update_advise", {content: l.find("textarea").val().trim()}, function(res) {
301
+ if (res.success == false) {
302
+ layer.alert(res.msg);
303
+ } else {
304
+ layer.close(index);
305
+ table.reload('teachers_table');
306
+ }
307
+ })
308
+ }
309
+
310
+ return false
311
+ },
312
+ btn2: function(index, l) {
313
+ layer.close(index)
314
+ }
315
+ });
283
316
  }
284
317
  });
285
318
 
@@ -172,31 +172,35 @@
172
172
  </script>
173
173
  <script type="text/html" id="currentTableBar">
174
174
  <%unless !can?(:add_follow, EducodeSales::Business) && can?(:self_add_follow, EducodeSales::Business) %>
175
- <% if can? :add_follow, EducodeSales::Business %>
176
- <% if @current_admin.is_admin %>
177
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
178
- <% else %>
179
- {{# if ( d.assign_follow_ups.length > 0 && d.assign_follow_ups.indexOf(d.current_staff_id) >=0 || (d.assign_follow_ups.length == 0) || (d.current_staff_id == d.staff_id) ) {}}
180
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
181
- {{# }}}
182
- <% end %>
183
- <% end %>
175
+ <% if can? :add_follow, EducodeSales::Business %>
176
+ <% if @current_admin.is_admin %>
177
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
178
+ <% else %>
179
+ {{# if ( d.assign_follow_ups.length > 0 && d.assign_follow_ups.indexOf(d.current_staff_id) >=0 || (d.assign_follow_ups.length == 0) || (d.current_staff_id == d.staff_id) ) {}}
180
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
181
+ {{# }}}
182
+ <% end %>
183
+ <% end %>
184
184
  <% end %>
185
185
  <%if !can?(:add_follow, EducodeSales::Business) && can?(:self_add_follow, EducodeSales::Business)%>
186
186
  {{# if (d.self_flag) {}}
187
- <% if @current_admin.is_admin %>
188
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
189
- <% else %>
190
- {{# if ( d.assign_follow_ups.length > 0 && d.assign_follow_ups.indexOf(d.current_staff_id) >=0 || (d.assign_follow_ups.length == 0) || (d.current_staff_id == d.staff_id) ) {}}
191
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
192
- {{# }}}
193
- <% end %>
187
+ <% if @current_admin.is_admin %>
188
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
189
+ <% else %>
190
+ {{# if ( d.assign_follow_ups.length > 0 && d.assign_follow_ups.indexOf(d.current_staff_id) >=0 || (d.assign_follow_ups.length == 0) || (d.current_staff_id == d.staff_id) ) {}}
191
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add_event">添加跟进记录</a>
192
+ {{# }}}
193
+ <% end %>
194
194
  {{# }}}
195
195
  <% end %>
196
- <%if can?(:update, EducodeSales::Business)%>
197
- <%unless !can?(:update, EducodeSales::Business) && can?(:self_edit_business, EducodeSales::Business)%>
198
- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
196
+ <% if can?(:advise, EducodeSales::Business) %>
197
+ <a class="layui-btn layui-btn-default layui-btn-xs data-count-edit" lay-event="add_advise">建议</a>
199
198
  <% end %>
199
+
200
+ <%if can?(:update, EducodeSales::Business)%>
201
+ <%unless !can?(:update, EducodeSales::Business) && can?(:self_edit_business, EducodeSales::Business)%>
202
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
203
+ <% end %>
200
204
  <% end %>
201
205
  <%if !can?(:update, EducodeSales::Business) && can?(:self_edit_business, EducodeSales::Business)%>
202
206
  {{# if (d.self_flag) {}}
@@ -210,6 +214,7 @@
210
214
  <a class="layui-btn-xs data-count-edit more-btn more-btn2" data-name={{d.name}} data-id={{d.id}} data-clazz="{{d.extras_clazz}}">更多<i class="layui-icon layui-icon-down layui-nav-more"></i></a>
211
215
  {{# }}}
212
216
  <% end %>
217
+
213
218
  </script>
214
219
 
215
220
  <script type="text/html" id="show_keys">
@@ -603,7 +608,7 @@
603
608
  },
604
609
  {
605
610
  title: '操作',
606
- minWidth: 220,
611
+ minWidth: 270,
607
612
  toolbar: '#currentTableBar',
608
613
  align: "center",
609
614
  fixed: 'right'
@@ -1379,6 +1384,36 @@
1379
1384
  ,cancel: function(){
1380
1385
  }
1381
1386
  });
1387
+ } else if (obj.event == 'add_advise') {
1388
+ layer.open({
1389
+ title: '添加团队建议',
1390
+ closeBtn: 0,
1391
+ type: 1,
1392
+ area: '400px;',
1393
+ id: 'LAY_layuipro',
1394
+ content: '<div class="layui-form" lay-filter="edit_project" style="padding: 20px;"><textarea autocomplete="off" type="text" name="name" lay-verify="required" class="layui-textarea">' + data.advise + '</textarea></div>' ,
1395
+ btn: ['保存', '取消'],
1396
+ btn1: function(index, l) {
1397
+ if (l.find("textarea").val().trim() == '') {
1398
+ layer.msg('内容不能为空')
1399
+ return false;
1400
+ } else {
1401
+ request.authPut("/missions/businesses/" + data.id + "/update_advise", {content: l.find("textarea").val().trim()}, function(res) {
1402
+ if (res.success == false) {
1403
+ layer.alert(res.msg);
1404
+ } else {
1405
+ layer.close(index);
1406
+ table.reload("businesses_table",{url: '/missions/businesses', cols: cols_table})
1407
+ }
1408
+ })
1409
+ }
1410
+
1411
+ return false
1412
+ },
1413
+ btn2: function(index, l) {
1414
+ layer.close(index)
1415
+ }
1416
+ });
1382
1417
  }
1383
1418
  drowpdwonRender()
1384
1419
  });
@@ -20,6 +20,7 @@ json.data do
20
20
  json.reception_at d.last_follow_up&.reception_at.to_s
21
21
  json.bidded_date d.last_follow_up&.bidded_date.to_s
22
22
  json.signed_date d.last_follow_up&.signed_date.to_s
23
+ json.advise d.last_follow_up&.advise.to_s
23
24
  json.o_business_deployment EducodeSales::FollowUp::BUSINESS_DEPLOYMENT[1..-1].to_h.invert[d.last_follow_up&.o_business_deployment]
24
25
  json.service_end_time d.last_follow_up&.service_start_time.to_s + "-" + d.last_follow_up&.service_end_time.to_s
25
26
  json.created_at d.created_at.to_s
data/config/routes.rb CHANGED
@@ -82,6 +82,7 @@ EducodeSales::Engine.routes.draw do
82
82
  get :money_plans
83
83
  put :update_money
84
84
  delete :delete_money
85
+ put :update_advise
85
86
  end
86
87
  end
87
88
 
@@ -118,6 +119,7 @@ EducodeSales::Engine.routes.draw do
118
119
  get :daily_paper
119
120
  get :search
120
121
  get :contract
122
+ get :advise
121
123
  end
122
124
 
123
125
  member do
@@ -126,6 +128,7 @@ EducodeSales::Engine.routes.draw do
126
128
  get :unfinish_plans
127
129
  put :update_follow_up
128
130
  put :audit
131
+ put :update_advise
129
132
  end
130
133
  end
131
134
 
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '0.9.60'
2
+ VERSION = '0.9.61'
3
3
  end
metadata CHANGED
@@ -1,11 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: educode_sales
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.60
4
+ version: 0.9.61
5
5
  platform: ruby
6
6
  authors:
7
7
  - anke1460
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2023-03-23 00:00:00.000000000 Z
@@ -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
@@ -573,7 +572,7 @@ homepage: https://www.educoder.net
573
572
  licenses:
574
573
  - MIT
575
574
  metadata: {}
576
- post_install_message:
575
+ post_install_message:
577
576
  rdoc_options: []
578
577
  require_paths:
579
578
  - lib
@@ -588,8 +587,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
588
587
  - !ruby/object:Gem::Version
589
588
  version: '0'
590
589
  requirements: []
591
- rubygems_version: 3.0.9
592
- signing_key:
590
+ rubygems_version: 3.0.0
591
+ signing_key:
593
592
  specification_version: 4
594
593
  summary: Summary of EducodeSales.
595
594
  test_files: []