educode_sales 0.9.61 → 0.9.62

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: dda4d36517f72a9d366af24dfad85dda17417676ff115c61337b4611b484474a
4
- data.tar.gz: b7febeed63e1933ce7509f4ba708a0fbad03f543f4b71461d2b6994abafb6458
3
+ metadata.gz: 15485a9308608796320e988b7095196d7747dffb82c6ac7478e146ca9a3034c4
4
+ data.tar.gz: b436c683fd104c2a599979a505e3507e6f117e98f7e525b51b1f3b1977aedb94
5
5
  SHA512:
6
- metadata.gz: fd9c33cb2663078a0cb34d5114c5264b92d7146c55c9a80c2699b4010f0215cf37909d5746666697bb3b89bb805063fa3d13cacd96844f0e9b340ac80ba640e7
7
- data.tar.gz: 0d03669ffb838bead64df8769417fa5ae627735676f941d44f089fcd7553ed57130249519ca172cede3484eaf757030f0beb2788db68816fa14aee08969f4064
6
+ metadata.gz: 04b502321a7d5fd2136d97577802d45d502645651d26b59b0b2d7474c06e1e959a489d9c5930ff1e45b24b80d676f4b804570d7b58af7edd09d031e036b95ec2
7
+ data.tar.gz: 2daf5753d3ed08580c758f097751ae59a352159b2542c8b31fcafc30c6866becc7b56563a76a4de493efb1f1c4a0804e2b09618210a66c009184b7f86555f8f5
@@ -62,10 +62,18 @@ module EducodeSales
62
62
  @staffs = @staffs.where(is_admin: false).where.not(id: @current_admin.id).where(job_type: common.id).page(params[:page]).per(10)
63
63
  end
64
64
  end
65
+
65
66
  def staff_schools
66
67
  @schools = School.all
67
68
  if params[:q].present?
68
- @schools = @schools.where("name like :q OR province like :q",q: "%#{params[:q]}%").page(params[:page]).per(10)
69
+ @schools = @schools.where("name like :q OR province like :q", q: "%#{params[:q]}%").page(params[:page]).per(10)
70
+ end
71
+ end
72
+
73
+ def staff_departments
74
+ @departments = Department.where(school_id: params[:school_id])
75
+ if params[:q].present?
76
+ @departments = @departments.where("name like :q", q: "%#{params[:q]}%").page(params[:page]).per(10)
69
77
  end
70
78
  end
71
79
 
@@ -103,9 +103,11 @@ module EducodeSales
103
103
  gon.staffs = staffs.map { |d| { name: d.user.real_name, value: d.id } }
104
104
  gon.staff_value = [{ name: @idea.staff&.user&.real_name, value: @idea.staff_id }]
105
105
  gon.sale_staff_value = [{ name: @idea.sale_staff&.user&.real_name, value: @idea.sale_staff_id }]
106
- gon.assist_staff_value = @idea.assist_staffs.map {|d|{ name: d&.user&.real_name, value: d.id }}
106
+ gon.assist_staff_value = @idea.assist_staffs.map { |d| { name: d&.user&.real_name, value: d.id } }
107
107
  gon.department = { value: @idea&.department_id, name: "#{@idea&.department&.school&.name}-#{@idea&.department&.name}" }
108
108
  gon.value = @idea.department_id
109
+ gon.department_list = @idea.department.present? ? [{ name: @idea.department.name, value: @idea.department_id }] : []
110
+ gon.school_list = @idea.school.present? ? [{ name: @idea.school.name, value: @idea.school_id }] : []
109
111
  render layout: false
110
112
  end
111
113
 
@@ -52,14 +52,10 @@ module EducodeSales
52
52
 
53
53
  def save_history(attr, old_value, new_value)
54
54
  case attr
55
- when "school_name"
55
+ when "school_id"
56
+ old_value = School.find_by(id: old_value)&.name
57
+ new_value = School.find_by(id: new_value)&.name
56
58
  "学校/单位由“#{old_value}”变更为“#{new_value}”"
57
- when "department_name"
58
- "院系/部门由“#{old_value}”变更为“#{new_value}”"
59
- # when "school_id"
60
- # old_value = School.find_by(id: old_value)&.name
61
- # new_value = School.find_by(id: new_value)&.name
62
- # "学校/单位由“#{old_value}”变更为“#{new_value}”"
63
59
  when "name"
64
60
  "项目名称由“#{old_value}”变更为“#{new_value}”"
65
61
  when "level"
@@ -84,10 +80,10 @@ module EducodeSales
84
80
  "截止时间由“#{old_value}”变更为“#{new_value}”"
85
81
  when "content"
86
82
  "反馈情况由“#{old_value}”变更为“#{new_value}”"
87
- # when "department_id"
88
- # old_value = Department.find_by(id: old_value)&.name
89
- # new_value = Department.find_by(id: new_value)&.name
90
- # "院系/部门由“#{old_value}”变更为“#{new_value}”"
83
+ when "department_id"
84
+ old_value = Department.find_by(id: old_value)&.name
85
+ new_value = Department.find_by(id: new_value)&.name
86
+ "院系/部门由“#{old_value}”变更为“#{new_value}”"
91
87
  when "manager_name"
92
88
  "学校负责人由“#{old_value}”变更为“#{new_value}”"
93
89
  when "manager_phone"
@@ -0,0 +1,9 @@
1
+ json.data do
2
+ json.array! @departments do |d|
3
+ json.value d.id
4
+ json.name "#{d.name}"
5
+ end
6
+ end
7
+ json.count @departments.size
8
+ json.code 0
9
+ json.msg "success"
@@ -18,13 +18,13 @@
18
18
  <div class="layui-inline">
19
19
  <label class="layui-form-label" style="width: 100px">学校/单位:</label>
20
20
  <div class="layui-input-inline">
21
- <%= idea.school_name %>
21
+ <%= idea.school&.name %>
22
22
  </div>
23
23
  </div>
24
24
  <div class="layui-inline">
25
25
  <label class="layui-form-label" style="width: 100px">院系/部门:</label>
26
26
  <div class="layui-input-inline">
27
- <%= idea.department_name %>
27
+ <%= idea.department&.name %>
28
28
  </div>
29
29
  </div>
30
30
  <div class="layui-inline">
@@ -1,7 +1,7 @@
1
1
  json.data do
2
2
  json.array! @ideas do |d|
3
3
  json.(d, :id, :name, :level, :status, :types, :model, :content)
4
- json.school d.school_name
4
+ json.school d.school&.name
5
5
  json.staff d.staff&.user&.real_name
6
6
  json.hardware d.hardware.to_f.round(2)
7
7
  json.project d.project.to_i
@@ -18,13 +18,13 @@
18
18
  <div class="layui-inline">
19
19
  <label class="layui-form-label" style="width: 100px">学校/单位:</label>
20
20
  <div class="layui-input-inline">
21
- <%= idea.school_name %>
21
+ <%= idea.school&.name %>
22
22
  </div>
23
23
  </div>
24
24
  <div class="layui-inline">
25
25
  <label class="layui-form-label" style="width: 100px">院系/部门:</label>
26
26
  <div class="layui-input-inline">
27
- <%= idea.department_name %>
27
+ <%= idea.department&.name %>
28
28
  </div>
29
29
  </div>
30
30
  <div class="layui-inline">
@@ -9,13 +9,13 @@
9
9
  <div class="layui-col-md6">
10
10
  <labeL class="layui-form-label required">学校/单位:</labeL>
11
11
  <div class="layui-input-block">
12
- <input type="text" name="school_name" autocomplete="off" lay-verify="required" lay-reqtext="学校不能为空" placeholder="请输入学校/单位名称" value="<%= @idea&.school_name %>" class="layui-input">
12
+ <div id="school_id" style="width: 600px;"></div>
13
13
  </div>
14
14
  </div>
15
15
  <div class="layui-col-md6">
16
16
  <labeL class="layui-form-label">院系/部门:</labeL>
17
17
  <div class="layui-input-block">
18
- <input type="text" name="department_name" autocomplete="off" placeholder="请输入院系/部门名称" value="<%= @idea&. department_name %>" class="layui-input">
18
+ <div id="department_id" style="width: 600px;"></div>
19
19
  </div>
20
20
  </div>
21
21
  </div>
@@ -176,17 +176,107 @@
176
176
 
177
177
  layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'selectInput', 'xmSelect', 'upload'], function () {
178
178
  var form = layui.form,
179
- layer = layui.layer,
180
- request = layui.request,
181
- laydate = layui.laydate,
182
- table = layui.table,
183
- laytpl = layui.laytpl,
184
- request = layui.request,
185
- xmSelect = layui.xmSelect,
186
- upload = layui.upload,
187
- $ = layui.$;
179
+ layer = layui.layer,
180
+ request = layui.request,
181
+ laydate = layui.laydate,
182
+ table = layui.table,
183
+ laytpl = layui.laytpl,
184
+ request = layui.request,
185
+ xmSelect = layui.xmSelect,
186
+ upload = layui.upload,
187
+ $ = layui.$;
188
188
  selectInput = layui.selectInput;
189
189
 
190
+
191
+ var school_list = xmSelect.render({
192
+ el: '#school_id',
193
+ remoteSearch: true,
194
+ autoRow: true,
195
+ radio: true,
196
+ delay: 1000,
197
+ tips: '支持学校名称搜索,请至少输入一个字符',
198
+ searchTips: '支持名称/省份搜索,请至少输入一个字符',
199
+ paging: true,
200
+ pageRemote: true,
201
+ filterable: true,
202
+ remoteMethod: function (val, cb, show, pageIndex) {
203
+ if (!val) {
204
+ return cb([]);
205
+ }
206
+ $.ajax('/missions/staff_schools', {
207
+ method: 'get',
208
+ data: {
209
+ q: val,
210
+ page: pageIndex
211
+ },
212
+ dataType: 'json',
213
+ success: function (res) {
214
+ var data = res.data;
215
+ if (res.code == 0) {
216
+ cb(res.data, res.count);
217
+ } else {
218
+ layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
219
+ }
220
+ }
221
+ })
222
+ }
223
+ })
224
+
225
+ var department_list = xmSelect.render({
226
+ el: '#department_id',
227
+ remoteSearch: true,
228
+ autoRow: true,
229
+ radio: true,
230
+ delay: 1000,
231
+ tips: '支持学校名称搜索,请至少输入一个字符',
232
+ searchTips: '支持名称/省份搜索,请至少输入一个字符',
233
+ paging: true,
234
+ pageRemote: true,
235
+ filterable: true,
236
+ remoteMethod: function (val, cb, show, pageIndex) {
237
+
238
+ var schools = [];
239
+ school_list.getValue().forEach(function (d) {
240
+ schools.push(d.value);
241
+ })
242
+ // if (schools.length == 0) {
243
+ // layer.alert("请选择学校");
244
+ // return false;
245
+ // }
246
+ school_id = schools[0];
247
+
248
+
249
+ if (!val) {
250
+ return cb([]);
251
+ }
252
+ $.ajax('/missions/staff_departments?school_id=' + school_id, {
253
+ method: 'get',
254
+ data: {
255
+ q: val,
256
+ page: pageIndex
257
+ },
258
+ dataType: 'json',
259
+ success: function (res) {
260
+ var data = res.data;
261
+ if (res.code == 0) {
262
+ cb(res.data, res.count);
263
+ } else {
264
+ layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
265
+ }
266
+ }
267
+ })
268
+ }
269
+ })
270
+
271
+
272
+ department_list.setValue(
273
+ gon.department_list
274
+ )
275
+ school_list.setValue(
276
+ gon.school_list
277
+ )
278
+
279
+
190
280
  form.render();
191
281
  //时间常规用法
192
282
  laydate.render({
@@ -261,26 +351,36 @@
261
351
 
262
352
  //监听提交
263
353
  form.on('submit(saveBtn)', function (data) {
264
- // if (department.getValue() == "" && department_id == "") {
265
- // layer.alert("请选择单位部门")
266
- // return false;
267
- // } else {
268
- data.field.department_id = department.getValue() || department_id;
269
- data.field.staff_id = staff_list.getValue('valueStr');
354
+ data.field.staff_id = staff_list.getValue('valueStr');
270
355
  data.field.sale_staff_id = sale_staff_list.getValue('valueStr');
271
356
  data.field.assist_staff_ids = assist_staff_list.getValue('valueStr');
272
- request.authPut("missions/ideas/" + parent.id, data.field, function (res) {
273
- if (res.success == false) {
274
- layer.alert(res.msg)
275
- } else {
276
- layer.close(parent.edit_index);
277
- parent.layer.close(parent.layer.getFrameIndex(window.name))
278
- parent.table.reload('ideas_table', {
279
- done: function () {
280
- }
281
- });
282
- }
283
- })
357
+ var schools = [];
358
+ school_list.getValue().forEach(function (d) {
359
+ schools.push(d.value);
360
+ })
361
+ if (schools.length == 0) {
362
+ layer.alert("请选择学校");
363
+ return false;
364
+ }
365
+ data.field.school_id = schools[0];
366
+
367
+ var departments = [];
368
+ department_list.getValue().forEach(function (d) {
369
+ departments.push(d.value);
370
+ })
371
+ data.field.department_id = departments[0];
372
+ request.authPut("missions/ideas/" + parent.id, data.field, function (res) {
373
+ if (res.success == false) {
374
+ layer.alert(res.msg)
375
+ } else {
376
+ layer.close(parent.edit_index);
377
+ parent.layer.close(parent.layer.getFrameIndex(window.name))
378
+ parent.table.reload('ideas_table', {
379
+ done: function () {
380
+ }
381
+ });
382
+ }
383
+ })
284
384
  // }
285
385
  return false;
286
386
  });
@@ -1,7 +1,7 @@
1
1
  json.data do
2
2
  json.array! @ideas do |d|
3
3
  json.(d, :id, :name, :level, :status, :types, :model, :content)
4
- json.school d.school_name
4
+ json.school d.school&.name
5
5
  json.staff d.staff&.user&.real_name
6
6
  json.hardware d.hardware
7
7
  json.project d.project
@@ -9,13 +9,13 @@
9
9
  <div class="layui-col-md6">
10
10
  <labeL class="layui-form-label required">学校/单位:</labeL>
11
11
  <div class="layui-input-block">
12
- <input type="text" name="school_name" autocomplete="off" lay-verify="required" lay-reqtext="学校不能为空" placeholder="请输入学校/单位名称" value="<%= @idea&.school_name %>" class="layui-input">
12
+ <div id="school_id" style="width: 600px;"></div>
13
13
  </div>
14
14
  </div>
15
15
  <div class="layui-col-md6">
16
16
  <labeL class="layui-form-label">院系/部门:</labeL>
17
17
  <div class="layui-input-block">
18
- <input type="text" name="department_name" autocomplete="off" placeholder="请输入院系/部门名称" value="<%= @idea&.department_name %>" class="layui-input">
18
+ <div id="department_id" style="width: 600px;"></div>
19
19
  </div>
20
20
  </div>
21
21
  </div>
@@ -194,6 +194,87 @@
194
194
  });
195
195
  form.render();
196
196
 
197
+ var school_list = xmSelect.render({
198
+ el: '#school_id',
199
+ remoteSearch: true,
200
+ autoRow: true,
201
+ radio: true,
202
+ delay: 1000,
203
+ tips: '支持学校名称搜索,请至少输入一个字符',
204
+ searchTips: '支持名称/省份搜索,请至少输入一个字符',
205
+ paging: true,
206
+ pageRemote: true,
207
+ filterable: true,
208
+ remoteMethod: function (val, cb, show, pageIndex) {
209
+ if (!val) {
210
+ return cb([]);
211
+ }
212
+ $.ajax('/missions/staff_schools', {
213
+ method: 'get',
214
+ data: {
215
+ q: val,
216
+ page: pageIndex
217
+ },
218
+ dataType: 'json',
219
+ success: function (res) {
220
+ var data = res.data;
221
+ if (res.code == 0) {
222
+ cb(res.data, res.count);
223
+ } else {
224
+ layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
225
+ }
226
+ }
227
+ })
228
+ }
229
+ })
230
+
231
+ var department_list = xmSelect.render({
232
+ el: '#department_id',
233
+ remoteSearch: true,
234
+ autoRow: true,
235
+ radio: true,
236
+ delay: 1000,
237
+ tips: '支持学校名称搜索,请至少输入一个字符',
238
+ searchTips: '支持名称/省份搜索,请至少输入一个字符',
239
+ paging: true,
240
+ pageRemote: true,
241
+ filterable: true,
242
+ remoteMethod: function (val, cb, show, pageIndex) {
243
+
244
+ var schools = [];
245
+ school_list.getValue().forEach(function (d) {
246
+ schools.push(d.value);
247
+ })
248
+ // if (schools.length == 0) {
249
+ // layer.alert("请选择学校");
250
+ // return false;
251
+ // }
252
+ school_id = schools[0];
253
+
254
+
255
+ if (!val) {
256
+ return cb([]);
257
+ }
258
+ $.ajax('/missions/staff_departments?school_id=' + school_id, {
259
+ method: 'get',
260
+ data: {
261
+ q: val,
262
+ page: pageIndex
263
+ },
264
+ dataType: 'json',
265
+ success: function (res) {
266
+ var data = res.data;
267
+ if (res.code == 0) {
268
+ cb(res.data, res.count);
269
+ } else {
270
+ layer.msg(res.msg, {time: 2000, icon: 2, shade: 0.01});
271
+ }
272
+ }
273
+ })
274
+ }
275
+ })
276
+
277
+
197
278
  upload.render({
198
279
  elem: '#test8'
199
280
  , url: '/missions/upload_files' //此处配置你自己的上传接口即可
@@ -252,7 +333,7 @@
252
333
  el: '#assist_staff_ids',
253
334
  data: gon.staffs,
254
335
  filterable: true,
255
- multiple:true
336
+ multiple: true
256
337
  })
257
338
 
258
339
  //监听提交
@@ -261,17 +342,32 @@
261
342
  // layer.alert("请选择单位部门")
262
343
  // return false;
263
344
  // } else {
264
- data.field.department_id = department.getValue() || department_id;
265
- data.field.staff_id = staff_list.getValue('valueStr');
266
- data.field.sale_staff_id = sale_staff_list.getValue('valueStr');
267
- data.field.assist_staff_ids = assist_staff_list.getValue('valueStr');
268
- request.authPost("missions/ideas/", data.field, function (res) {
269
- if (res.success == false) {
270
- layer.alert(res.msg)
271
- } else {
272
- layer.close(parent.add_idea_index);
273
- parent.layer.close(parent.layer.getFrameIndex(window.name))
274
- parent.table.reload('ideas_table', {
345
+
346
+ var schools = [];
347
+ school_list.getValue().forEach(function (d) {
348
+ schools.push(d.value);
349
+ })
350
+ if (schools.length == 0) {
351
+ layer.alert("请选择学校");
352
+ return false;
353
+ }
354
+ data.field.school_id = schools[0];
355
+
356
+ var departments = [];
357
+ department_list.getValue().forEach(function (d) {
358
+ departments.push(d.value);
359
+ })
360
+ data.field.department_id = departments[0];
361
+ data.field.staff_id = staff_list.getValue('valueStr');
362
+ data.field.sale_staff_id = sale_staff_list.getValue('valueStr');
363
+ data.field.assist_staff_ids = assist_staff_list.getValue('valueStr');
364
+ request.authPost("missions/ideas/", data.field, function (res) {
365
+ if (res.success == false) {
366
+ layer.alert(res.msg)
367
+ } else {
368
+ layer.close(parent.add_idea_index);
369
+ parent.layer.close(parent.layer.getFrameIndex(window.name))
370
+ parent.table.reload('ideas_table', {
275
371
  done: function () {
276
372
  }
277
373
  });
data/config/routes.rb CHANGED
@@ -14,6 +14,7 @@ EducodeSales::Engine.routes.draw do
14
14
  get :sales_staff, to: "home#sales_staff"
15
15
  get :sales_place, to: "home#sales_place"
16
16
  get :staff_schools, to: "home#staff_schools"
17
+ get :staff_departments, to: "home#staff_departments"
17
18
  get :filter, to: "application#filter"
18
19
 
19
20
 
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '0.9.61'
2
+ VERSION = '0.9.62'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: educode_sales
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.61
4
+ version: 0.9.62
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-03-23 00:00:00.000000000 Z
11
+ date: 2023-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -105,6 +105,7 @@ 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
108
109
  - app/assets/images/educode_sales/loading-0.gif
109
110
  - app/assets/images/educode_sales/loading-1.gif
110
111
  - app/assets/images/educode_sales/loading-2.gif
@@ -305,6 +306,7 @@ files:
305
306
  - app/views/educode_sales/home/search_operation_teacher.json.jbuilder
306
307
  - app/views/educode_sales/home/search_teacher.json.jbuilder
307
308
  - app/views/educode_sales/home/search_users.json.jbuilder
309
+ - app/views/educode_sales/home/staff_departments.json.jbuilder
308
310
  - app/views/educode_sales/home/staff_schools.json.jbuilder
309
311
  - app/views/educode_sales/home/statistics.html.erb
310
312
  - app/views/educode_sales/idea_recycles/activities.json.jbuilder
@@ -572,7 +574,7 @@ homepage: https://www.educoder.net
572
574
  licenses:
573
575
  - MIT
574
576
  metadata: {}
575
- post_install_message:
577
+ post_install_message:
576
578
  rdoc_options: []
577
579
  require_paths:
578
580
  - lib
@@ -587,8 +589,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
587
589
  - !ruby/object:Gem::Version
588
590
  version: '0'
589
591
  requirements: []
590
- rubygems_version: 3.0.0
591
- signing_key:
592
+ rubygems_version: 3.0.9
593
+ signing_key:
592
594
  specification_version: 4
593
595
  summary: Summary of EducodeSales.
594
596
  test_files: []