educode_sales 0.9.59 → 0.9.60

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.
Files changed (28) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/educode_sales/activities_controller.rb +54 -1
  3. data/app/controllers/educode_sales/home_controller.rb +4 -0
  4. data/app/controllers/educode_sales/ideas_controller.rb +86 -1
  5. data/app/controllers/educode_sales/upload_files_controller.rb +1 -1
  6. data/app/models/educode_sales/activity.rb +6 -0
  7. data/app/models/educode_sales/activity_staff.rb +9 -0
  8. data/app/models/educode_sales/idea.rb +23 -10
  9. data/app/views/educode_sales/activities/edit.html.erb +69 -2
  10. data/app/views/educode_sales/activities/index.html.erb +27 -1
  11. data/app/views/educode_sales/activities/index.json.jbuilder +5 -0
  12. data/app/views/educode_sales/activities/new.html.erb +100 -15
  13. data/app/views/educode_sales/businesses/time_line.html.erb +30 -0
  14. data/app/views/educode_sales/home/search_edu_user.json.jbuilder +13 -0
  15. data/app/views/educode_sales/idea_recycles/detail.html.erb +25 -4
  16. data/app/views/educode_sales/idea_recycles/index.html.erb +3 -3
  17. data/app/views/educode_sales/idea_recycles/index.json.jbuilder +1 -1
  18. data/app/views/educode_sales/ideas/detail.html.erb +25 -4
  19. data/app/views/educode_sales/ideas/edit.html.erb +134 -27
  20. data/app/views/educode_sales/ideas/index.html.erb +3 -3
  21. data/app/views/educode_sales/ideas/index.json.jbuilder +4 -4
  22. data/app/views/educode_sales/ideas/new.html.erb +118 -15
  23. data/config/routes.rb +1 -0
  24. data/db/migrate/20230319050647_add_clazz_to_educode_sales_activities.rb +6 -0
  25. data/db/migrate/20230319105048_create_educode_sales_activity_staffs.rb +13 -0
  26. data/db/migrate/20230322034022_add_to_school_name_to_ideas.rb +17 -0
  27. data/lib/educode_sales/version.rb +1 -1
  28. metadata +7 -2
@@ -6,9 +6,17 @@
6
6
  <h2 style="padding-left: 25px">方案信息</h2>
7
7
  </div>
8
8
  <div class="layui-row" style="padding-top: 15px">
9
- <div class="layui-inline">
10
- <label class="layui-form-label required">单位部门</label>
11
- <div class="layui-input-block" id="department" style="width: 300px;"></div>
9
+ <div class="layui-col-md6">
10
+ <labeL class="layui-form-label required">学校/单位:</labeL>
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">
13
+ </div>
14
+ </div>
15
+ <div class="layui-col-md6">
16
+ <labeL class="layui-form-label">院系/部门:</labeL>
17
+ <div class="layui-input-block">
18
+ <input type="text" name="department_name" autocomplete="off" placeholder="请输入院系/部门名称" value="<%= @idea&.department_name %>" class="layui-input">
19
+ </div>
12
20
  </div>
13
21
  </div>
14
22
  <div class="layui-row" style="padding-top: 15px">
@@ -25,6 +33,20 @@
25
33
  </div>
26
34
  </div>
27
35
  </div>
36
+ <div class="layui-row" style="padding-top: 15px">
37
+ <div class="layui-col-md6">
38
+ <labeL class="layui-form-label required">销售负责人:</labeL>
39
+ <div class="layui-input-block">
40
+ <div id="sale_staff_id"></div>
41
+ </div>
42
+ </div>
43
+ <div class="layui-col-md6">
44
+ <labeL class="layui-form-label">协作人:</labeL>
45
+ <div class="layui-input-block">
46
+ <div id="assist_staff_ids"></div>
47
+ </div>
48
+ </div>
49
+ </div>
28
50
  <div class="layui-row" style="padding-top: 15px">
29
51
  <div class="layui-col-md6">
30
52
  <labeL class="layui-form-label required">项目名称:</labeL>
@@ -33,9 +55,9 @@
33
55
  </div>
34
56
  </div>
35
57
  <div class="layui-col-md6">
36
- <labeL class="layui-form-label required">指派人:</labeL>
58
+ <labeL class="layui-form-label required">方案指派人:</labeL>
37
59
  <div class="layui-input-block">
38
- <%= select_tag "staff_id", options_for_select(EducodeSales::Staff.all.map { |d| [d.user&.real_name, d.id] }, @idea&.staff_id), { 'lay-filter': 'staff_id', include_blank: false } %>
60
+ <div id="new_staff_id"></div>
39
61
  </div>
40
62
  </div>
41
63
  </div>
@@ -75,17 +97,17 @@
75
97
  </div>
76
98
  </div>
77
99
  <div class="layui-col-md6">
78
- <labeL class="layui-form-label required">项目预算(万):</labeL>
100
+ <labeL class="layui-form-label">项目预算(万):</labeL>
79
101
  <div class="layui-input-block">
80
- <input type="number" name="money" autocomplete="off" lay-verify="required" lay-reqtext="项目预算不能为空" placeholder="请输入项目预算" value="<%= @idea&.money %>" class="layui-input">
102
+ <input type="number" name="money" autocomplete="off" placeholder="请输入项目预算" value="<%= @idea&.money %>" class="layui-input">
81
103
  </div>
82
104
  </div>
83
105
  </div>
84
106
  <div class="layui-row" style="padding-top: 5px">
85
107
  <div class="layui-col-md6">
86
- <labeL class="layui-form-label required">项目规模(人):</labeL>
108
+ <labeL class="layui-form-label">并发规模(人):</labeL>
87
109
  <div class="layui-input-block">
88
- <input type="number" name="project" autocomplete="off" lay-verify="required" lay-reqtext="项目规模不能为空" placeholder="请输入项目规模" value="<%= @idea&.project %>" class="layui-input">
110
+ <input type="number" name="project" autocomplete="off" placeholder="请输入项目规模" value="<%= @idea&.project %>" class="layui-input">
89
111
  </div>
90
112
  </div>
91
113
  <div class="layui-col-md6">
@@ -95,12 +117,28 @@
95
117
  </div>
96
118
  </div>
97
119
  </div>
120
+ <div class="layui-row" style="padding-top: 5px;display: none">
121
+ <div class="layui-col-md6">
122
+ <labeL class="layui-form-label">文件id:</labeL>
123
+ <div class="layui-input-block">
124
+ <input type="text" name="attachment_id" id="attachment_id" autocomplete="off" value="" class="layui-input">
125
+ </div>
126
+ </div>
127
+ </div>
98
128
  <div class="layui-row" style="padding-top: 15px">
99
129
  <labeL class="layui-form-label">反馈情况:</labeL>
100
130
  <div class="layui-input-block">
101
131
  <textarea name="content" placeholder="反馈情况" class="layui-textarea"><%= @idea&.content.to_s %></textarea>
102
132
  </div>
103
133
  </div>
134
+ <div class="layui-row" style="padding-top: 15px">
135
+ <div class="layui-col-md6">
136
+ <labeL class="layui-form-label">方案材料:</labeL>
137
+ <div class="layui-btn-container">
138
+ <button type="button" class="layui-btn layui-btn-normal" id="test8">选择文件</button>
139
+ </div>
140
+ </div>
141
+ </div>
104
142
  <div class="layui-row" style="padding-top: 30px; float: left">
105
143
  <div class="layui-input-block">
106
144
  <button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button>
@@ -110,7 +148,33 @@
110
148
  </div>
111
149
  </div>
112
150
  <script>
113
- layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'selectInput', 'xmSelect'], function () {
151
+
152
+ function displayFile() {
153
+ var input = document.getElementById("fileInput");
154
+ var fileName = document.getElementById("fileName");
155
+ fileName.innerText = "已选择文件:" + input.files[0].name;
156
+ }
157
+
158
+ function uploadFile() {
159
+ var input = document.getElementById("fileInput");
160
+ var file = input.files[0];
161
+ var formData = new FormData();
162
+ formData.append("file", file);
163
+
164
+ var xhr = new XMLHttpRequest();
165
+ xhr.open("POST", "/api/upload");
166
+ xhr.onload = function() {
167
+ if (xhr.status === 200) {
168
+ console.log(xhr.responseText);
169
+ alert("上传成功!");
170
+ } else {
171
+ alert("上传失败!");
172
+ }
173
+ };
174
+ xhr.send(formData);
175
+ }
176
+
177
+ layui.use(['form', 'upload', 'table', 'upload', 'layer', 'laytpl', 'request', 'selectInput', 'xmSelect'], function () {
114
178
  var form = layui.form,
115
179
  layer = layui.layer,
116
180
  request = layui.request,
@@ -119,6 +183,7 @@
119
183
  laytpl = layui.laytpl,
120
184
  request = layui.request,
121
185
  xmSelect = layui.xmSelect,
186
+ upload = layui.upload,
122
187
  $ = layui.$;
123
188
  selectInput = layui.selectInput;
124
189
 
@@ -128,6 +193,21 @@
128
193
  elem: '#new_time'
129
194
  });
130
195
  form.render();
196
+
197
+ upload.render({
198
+ elem: '#test8'
199
+ , url: '/missions/upload_files' //此处配置你自己的上传接口即可
200
+ , auto: true
201
+ , accept: 'file' //普通文件
202
+ , bindAction: '#test9'
203
+ , done: function (res) {
204
+ layer.msg('上传成功');
205
+ $("#attachment_id").val(res.attachment_id)
206
+ // $("#filename").val(res.filename)
207
+ }
208
+ });
209
+
210
+
131
211
  var department_id = gon.value;
132
212
  var department = selectInput.render({
133
213
  elem: '#department',
@@ -155,13 +235,36 @@
155
235
  // 当前弹出层,防止ID被覆盖
156
236
  var parentIndex = layer.index;
157
237
 
238
+
239
+ var staff_list = xmSelect.render({
240
+ el: '#new_staff_id',
241
+ data: gon.staffs,
242
+ filterable: true,
243
+ radio: true,
244
+ })
245
+ var sale_staff_list = xmSelect.render({
246
+ el: '#sale_staff_id',
247
+ data: gon.staffs,
248
+ filterable: true,
249
+ radio: true,
250
+ })
251
+ var assist_staff_list = xmSelect.render({
252
+ el: '#assist_staff_ids',
253
+ data: gon.staffs,
254
+ filterable: true,
255
+ multiple:true
256
+ })
257
+
158
258
  //监听提交
159
259
  form.on('submit(saveBtn)', function (data) {
160
- if (department.getValue() == "" && department_id == "") {
161
- layer.alert("请选择单位部门")
162
- return false;
163
- } else {
260
+ // if (department.getValue() == "" && department_id == "") {
261
+ // layer.alert("请选择单位部门")
262
+ // return false;
263
+ // } else {
164
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');
165
268
  request.authPost("missions/ideas/", data.field, function (res) {
166
269
  if (res.success == false) {
167
270
  layer.alert(res.msg)
@@ -174,7 +277,7 @@
174
277
  });
175
278
  }
176
279
  })
177
- }
280
+ // }
178
281
  return false;
179
282
  });
180
283
 
data/config/routes.rb CHANGED
@@ -7,6 +7,7 @@ EducodeSales::Engine.routes.draw do
7
7
  get :search_users, to: "home#search_users"
8
8
  get :search_teacher, to: "home#search_teacher"
9
9
  get :search_edu_teacher,to: "home#search_edu_teacher"
10
+ get :search_edu_user,to: "home#search_edu_user"
10
11
  get :search_operation_teacher,to: "home#search_operation_teacher"
11
12
  get :search, to: "home#search"
12
13
  get :no_permission, to: "home#no_permission"
@@ -0,0 +1,6 @@
1
+ class AddClazzToEducodeSalesActivities < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_column :educode_sales_activities, :clazz_id, :integer
4
+ add_column :educode_sales_follow_ups, :comment, :text
5
+ end
6
+ end
@@ -0,0 +1,13 @@
1
+ class CreateEducodeSalesActivityStaffs < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :educode_sales_activity_staffs do |t|
4
+ t.references :staff
5
+ t.references :activity
6
+ t.integer :user_id
7
+ t.integer :clazz_id
8
+ t.string :name
9
+
10
+ t.timestamps
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ class AddToSchoolNameToIdeas < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_column :educode_sales_ideas,:school_name,:string
4
+ add_column :educode_sales_ideas,:department_name,:string
5
+ add_column :educode_sales_ideas,:sale_staff_id,:integer
6
+ add_column :educode_sales_ideas,:idea_staff_id,:integer
7
+ add_column :educode_sales_ideas,:assist_staff_ids,:text
8
+ add_column :educode_sales_ideas,:attachment_id,:integer
9
+
10
+ ideas = EducodeSales::Idea.all
11
+ ideas.each do |d|
12
+ d.school_name = d.school&.name
13
+ d.department_name = d.department&.name
14
+ d.save
15
+ end
16
+ end
17
+ end
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '0.9.59'
2
+ VERSION = '0.9.60'
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.59
4
+ version: 0.9.60
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-20 00:00:00.000000000 Z
11
+ date: 2023-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -188,6 +188,7 @@ files:
188
188
  - app/models/ability.rb
189
189
  - app/models/concerns/deletable.rb
190
190
  - app/models/educode_sales/activity.rb
191
+ - app/models/educode_sales/activity_staff.rb
191
192
  - app/models/educode_sales/activity_teacher.rb
192
193
  - app/models/educode_sales/application_record.rb
193
194
  - app/models/educode_sales/assessments_setting.rb
@@ -301,6 +302,7 @@ files:
301
302
  - app/views/educode_sales/home/sales_staff.json.jbuilder
302
303
  - app/views/educode_sales/home/search.json.jbuilder
303
304
  - app/views/educode_sales/home/search_edu_teacher.json.jbuilder
305
+ - app/views/educode_sales/home/search_edu_user.json.jbuilder
304
306
  - app/views/educode_sales/home/search_operation_teacher.json.jbuilder
305
307
  - app/views/educode_sales/home/search_teacher.json.jbuilder
306
308
  - app/views/educode_sales/home/search_users.json.jbuilder
@@ -560,6 +562,9 @@ files:
560
562
  - db/migrate/20230306131055_add_score_to_assessments_settings.rb
561
563
  - db/migrate/20230308022633_add_permissions_to_educode_sales_permissions.rb
562
564
  - db/migrate/20230314122536_add_delet_reason_to_business.rb
565
+ - db/migrate/20230319050647_add_clazz_to_educode_sales_activities.rb
566
+ - db/migrate/20230319105048_create_educode_sales_activity_staffs.rb
567
+ - db/migrate/20230322034022_add_to_school_name_to_ideas.rb
563
568
  - lib/educode_sales.rb
564
569
  - lib/educode_sales/engine.rb
565
570
  - lib/educode_sales/version.rb