educode_sales 0.9.61 → 0.9.63

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: aadc92f524887e60e288e34449257df71ec8649c217836481a2a3af62a69e6c8
4
+ data.tar.gz: 256153b8488e50aad457a407e35e31451b31610325590de79305d335c921739e
5
5
  SHA512:
6
- metadata.gz: fd9c33cb2663078a0cb34d5114c5264b92d7146c55c9a80c2699b4010f0215cf37909d5746666697bb3b89bb805063fa3d13cacd96844f0e9b340ac80ba640e7
7
- data.tar.gz: 0d03669ffb838bead64df8769417fa5ae627735676f941d44f089fcd7553ed57130249519ca172cede3484eaf757030f0beb2788db68816fa14aee08969f4064
6
+ metadata.gz: e707698f7149b22d1f776783dbbfd16065be5626ce1213c3d01d096d8b68791c3af28144d07642d6e8f8446f33fc85658ce10d64b915e11a4f0b4ed720819d28
7
+ data.tar.gz: fad659d669624a2abd61b6db7d29c1954c6b9372ea4e3bf6c1a36dc6956cf4cfab70dc46e207b2ab80ef2b7fcb8e311e2e7449d78700511c4aa2248cb638bc6a
@@ -151,6 +151,18 @@ module EducodeSales
151
151
  render layout: false
152
152
  end
153
153
 
154
+ def show_schools
155
+ respond_to do |format|
156
+ format.html do
157
+ render layout: false
158
+ end
159
+ format.json do
160
+ @data = EducodeSales::ActivityTeacher.joins(teacher: [department: :school]).where(activity_id: params[:id]).select("count(teacher_id) AS teachers_count, departments.name AS department, schools.name AS school, school_id").group("school_id")
161
+ @data = @data.distinct.page(params[:page]).per(params[:limit])
162
+ end
163
+ end
164
+ end
165
+
154
166
  private
155
167
 
156
168
  def activity_params
@@ -346,6 +346,9 @@ module EducodeSales
346
346
  @quarter = business.where("educode_sales_follow_ups.created_at >= ?", Time.now.beginning_of_quarter).count("DISTINCT(educode_sales_follow_ups.business_id)")
347
347
  @year = business.where("educode_sales_follow_ups.created_at >= ?", Time.now.beginning_of_year).count("DISTINCT(educode_sales_follow_ups.business_id)")
348
348
 
349
+ @activities = EducodeSales::Activity.where(staff_id: @current_admin.id).where("created_at >= ?", Time.now.beginning_of_month).count
350
+ @teachers = EducodeSales::Activity.joins(:teachers).where(staff_id: @current_admin.id).where("educode_sales_activities.created_at >= ?", Time.now.beginning_of_month).count
351
+ @schools = EducodeSales::Activity.joins(teachers: :department).where(staff_id: @current_admin.id).where("educode_sales_activities.created_at >= ?", Time.now.beginning_of_month).count("DISTINCT(departments.school_id)")
349
352
  render layout: false
350
353
  end
351
354
 
@@ -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
 
@@ -92,7 +92,7 @@ module EducodeSales
92
92
  if params[:q].present? && params[:q][:status].present?
93
93
  if params[:q][:status] == "1"
94
94
  @teachers = @teachers.where("educode_sales_teachers.user_id is not null")
95
- else
95
+ else
96
96
  @teachers = @teachers.where("educode_sales_teachers.user_id is null")
97
97
  end
98
98
  end
@@ -120,7 +120,11 @@ module EducodeSales
120
120
  ").where("province = ?", p)
121
121
  end
122
122
  if params[:activity_id].present?
123
- @teachers = @teachers.joins(:activity_teachers).where("educode_sales_activity_teachers.activity_id = ?", params[:activity_id])
123
+ if params[:school_id].present?
124
+ @teachers = @teachers.joins(activity_teachers: [teacher: :department]).where("educode_sales_activity_teachers.activity_id = ? AND departments.school_id = ?", params[:activity_id], params[:school_id])
125
+ else
126
+ @teachers = @teachers.joins(:activity_teachers).where("educode_sales_activity_teachers.activity_id = ?", params[:activity_id])
127
+ end
124
128
  end
125
129
  if params[:q].present? && params[:q][:date].present?
126
130
  date = params[:q][:date].split(" - ")
@@ -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"
@@ -74,7 +74,9 @@
74
74
  <script type="text/html" id="teachers_count">
75
75
  <a href="javascript:void(0);" lay-event="teachers_count" class="layui-table-link">{{ d.teachers_count}}</a>
76
76
  </script>
77
-
77
+ <script type="text/html" id="schools_count">
78
+ <a href="javascript:void(0);" lay-event="schools_count" class="layui-table-link">{{ d.schools_count}}</a>
79
+ </script>
78
80
  <script>
79
81
  layui.use(['form', 'table', 'miniPage', 'element', 'request'], function () {
80
82
  var $ = layui.jquery,
@@ -139,17 +141,24 @@
139
141
  title: '天数',
140
142
  width: 200
141
143
  },
144
+ {
145
+ field: 'schools_count',
146
+ title: '学校数',
147
+ width: 200,
148
+ totalRow: true,
149
+ templet: '#schools_count'
150
+ },
142
151
  {
143
152
  field: 'teachers_count',
144
153
  title: '教师数',
145
154
  width: 200,
146
- totalRow:true,
155
+ totalRow:true,
147
156
  templet: '#teachers_count'
148
157
  },
149
158
  {
150
159
  field: 'students_count',
151
160
  title: '学生数',
152
- totalRow:'{{ parseInt(d.TOTAL_NUMS) }}',
161
+ totalRow:'{{ parseInt(d.TOTAL_NUMS) }}',
153
162
  width: 200
154
163
  },
155
164
  {
@@ -284,8 +293,32 @@
284
293
  return false;
285
294
  }
286
295
  else if (obj.event === 'teachers_count') {
287
- activity_id = obj.data.id
296
+ activity_id = obj.data.id;
297
+ school_id = '';
288
298
  content = miniPage.getHrefContent('/missions/activities/show_teachers');
299
+ openWH = miniPage.getOpenWidthHeight();
300
+ index2 = layer.open({
301
+ title: '活动列表/' + data.name,
302
+ type: 1,
303
+ shade: 0.2,
304
+ maxmin: true,
305
+ shadeClose: true,
306
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
307
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
308
+ content: content,
309
+ success: function (layero, index) {
310
+ form.render('select');
311
+ },
312
+ });
313
+ $(window).on("resize", function () {
314
+ layer.full(index);
315
+ });
316
+ return false;
317
+ } else if (obj.event == 'schools_count') {
318
+ activity_id = obj.data.id;
319
+ activity_name = data.name;
320
+ school_id = '';
321
+ content = miniPage.getHrefContent('/missions/activities/' + obj.data.id +'/show_schools');
289
322
  openWH = miniPage.getOpenWidthHeight();
290
323
  index2 = layer.open({
291
324
  title: '活动列表/' + data.name,
@@ -1,4 +1,5 @@
1
1
  teachers_count = 0
2
+ schools_count = 0
2
3
  json.data do
3
4
  json.array! @activities do |d|
4
5
  json.id d.id
@@ -15,11 +16,15 @@ json.data do
15
16
  json.staff_manage d.manages.map { |d| d.staff.user.real_name}.uniq.join("、")
16
17
  json.staff_assist d.assists.map { |d| d.staff.user.real_name}.uniq.join("、")
17
18
  json.expert d.experts.pluck(:name).join("、")
19
+
20
+ json.schools_count EducodeSales::ActivityTeacher.joins(teacher: :department).where(activity_id: d.id).select("distinct(school_id)").count
21
+ schools_count += EducodeSales::ActivityTeacher.joins(teacher: :department).where(activity_id: d.id).select("distinct(school_id)").count
18
22
  end
19
23
  end
20
24
 
21
25
  json.totalRow do
22
26
  json.teachers_count teachers_count.to_s
27
+ json.schools_count schools_count.to_s
23
28
  end
24
29
  json.code 0
25
30
  json.count @activities.total_count
@@ -0,0 +1,84 @@
1
+ <div class="min-height-table">
2
+ <table class="layui-hide" id="show_school_table" style="min-height: 300px;" lay-filter="show_school_table"></table>
3
+ </div>
4
+ <script type="text/html" id="school_toolbar">
5
+ <div class="layui-btn-container">
6
+ <span class="table-label">教师列表</span>
7
+ </div>
8
+ </script>
9
+
10
+ <script type="text/html" id="teachers_count">
11
+ <a href="javascript:void(0);" lay-event="teachers_count" class="layui-table-link">{{ d.teachers_count}}</a>
12
+ </script>
13
+ <script>
14
+
15
+ layui.use(['form', 'table', 'miniPage', 'element', 'request'], function () {
16
+ var $ = layui.jquery,
17
+ form = layui.form,
18
+ request = layui.request,
19
+ miniPage = layui.miniPage;
20
+
21
+ table = layui.table;
22
+ table.render({
23
+ elem: '#show_school_table',
24
+ url: '/missions/activities/' + parent.activity_id + '/show_schools',
25
+ defaultToolbar: ['filter'],
26
+ toolbar: '#school_toolbar',
27
+ cols: [
28
+ [
29
+ {
30
+ field: 'id',
31
+ width: 60,
32
+ title:'序号',
33
+ type: 'numbers',
34
+ },
35
+ {
36
+ field: 'school',
37
+ width: 300,
38
+ title: '单位',
39
+ },
40
+ {
41
+ field: 'department',
42
+ width: 200,
43
+ title: '部门'
44
+ },
45
+ {
46
+ field: 'teachers_count',
47
+ title: '教师数',
48
+ width: 120,
49
+ templet: "#teachers_count"
50
+ },
51
+ ]
52
+ ],
53
+ page: true,
54
+ });
55
+
56
+
57
+ table.on('tool(show_school_table)', function (obj) {
58
+ if (obj.event === 'teachers_count') {
59
+ activity_id = parent.activity_id;
60
+ school_id = obj.data.school_id;
61
+ content = miniPage.getHrefContent('/missions/activities/show_teachers');
62
+ openWH = miniPage.getOpenWidthHeight();
63
+ index2 = layer.open({
64
+ title: '活动列表/' + parent.activity_name,
65
+ type: 1,
66
+ shade: 0.2,
67
+ maxmin: true,
68
+ shadeClose: true,
69
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
70
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
71
+ content: content,
72
+ success: function (layero, index) {
73
+ form.render('select');
74
+ },
75
+ });
76
+ $(window).on("resize", function () {
77
+ layer.full(index);
78
+ });
79
+ return false;
80
+ }
81
+ })
82
+
83
+ });
84
+ </script>
@@ -0,0 +1,12 @@
1
+ json.data do
2
+ json.array! @data do |d|
3
+ json.id d.id
4
+ json.school_id d.school_id
5
+ json.school d['school']
6
+ json.department d['department']
7
+ json.teachers_count d['teachers_count']
8
+ end
9
+ end
10
+
11
+ json.code 0
12
+ json.count @data.total_count
@@ -52,7 +52,7 @@
52
52
  table = layui.table;
53
53
  table.render({
54
54
  elem: '#show_teachers_table',
55
- url: '/missions/teachers?activity_id=' + parent.activity_id,
55
+ url: '/missions/teachers?activity_id=' + parent.activity_id + "&school_id=" + (parent.school_id ? parent.school_id : ''),
56
56
  toolbar: '#teacher_toolbar',
57
57
  defaultToolbar: ['filter'],
58
58
  cols: [
@@ -9,7 +9,12 @@
9
9
  本季-<span style="color: rgb(56, 150, 243);font-weight: bold;"><%= @quarter %>, </span>
10
10
  本年-<span style="color: rgb(56, 150, 243);font-weight: bold;"><%= @year %></span>
11
11
  </p>
12
- <p style="margin-bottom: 30px;">二、本月已组织会议</p>
12
+ <p>二、本月已组织会议</p>
13
+ <p style="margin-bottom: 30px;">
14
+ 活动-<span style="color: rgb(56, 150, 243);font-weight: bold;"><%= @activities %>, </span>
15
+ 学校-<span style="color: rgb(56, 150, 243);font-weight: bold;"><%= @schools %>, </span>
16
+ 教师-<span style="color: rgb(56, 150, 243);font-weight: bold;"><%= @teachers %></span>
17
+ </p>
13
18
  <p>三、客户跟进情况</p>
14
19
  <% text = "\n" %>
15
20
  <% text += "一、AB类商机开拓情况\n" %>
@@ -17,6 +22,9 @@
17
22
  <% text += "本季-#{@quarter }, "%>
18
23
  <% text += "本年-#{@year }\n\n"%>
19
24
  <% text += "二、本月已组织会议 \n\n"%>
25
+ <% text += "活动-#{@activities }, "%>
26
+ <% text += "学校-#{@schools }, "%>
27
+ <% text += "教师-#{@teachers }\n\n"%>
20
28
  <% text += "三、客户跟进情况 \n"%>
21
29
  <% @followups.each_with_index do |d, i| %>
22
30
  <% text += "#{i+1}、#{d.business&.department&.school&.name}--**商机:#{d.description}\n" %>
@@ -84,6 +84,9 @@
84
84
 
85
85
 
86
86
  var dataCustom = [
87
+ { "n": '',
88
+ "s": []
89
+ },
87
90
  {
88
91
  "n": "北京",
89
92
  "s": [
@@ -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
 
@@ -265,6 +266,9 @@ EducodeSales::Engine.routes.draw do
265
266
  collection do
266
267
  get :show_teachers
267
268
  end
269
+ member do
270
+ get :show_schools
271
+ end
268
272
  end
269
273
 
270
274
  resources :sales do
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '0.9.61'
2
+ VERSION = '0.9.63'
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.63
5
5
  platform: ruby
6
6
  authors:
7
7
  - anke1460
8
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
@@ -236,6 +236,8 @@ files:
236
236
  - app/views/educode_sales/activities/index.html.erb
237
237
  - app/views/educode_sales/activities/index.json.jbuilder
238
238
  - app/views/educode_sales/activities/new.html.erb
239
+ - app/views/educode_sales/activities/show_schools.html.erb
240
+ - app/views/educode_sales/activities/show_schools.json.jbuilder
239
241
  - app/views/educode_sales/activities/show_teachers.html.erb
240
242
  - app/views/educode_sales/assessments/_finished.html.erb
241
243
  - app/views/educode_sales/assessments/_progress.html.erb
@@ -305,6 +307,7 @@ files:
305
307
  - app/views/educode_sales/home/search_operation_teacher.json.jbuilder
306
308
  - app/views/educode_sales/home/search_teacher.json.jbuilder
307
309
  - app/views/educode_sales/home/search_users.json.jbuilder
310
+ - app/views/educode_sales/home/staff_departments.json.jbuilder
308
311
  - app/views/educode_sales/home/staff_schools.json.jbuilder
309
312
  - app/views/educode_sales/home/statistics.html.erb
310
313
  - app/views/educode_sales/idea_recycles/activities.json.jbuilder