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.
- checksums.yaml +4 -4
- data/app/controllers/educode_sales/activities_controller.rb +54 -1
- data/app/controllers/educode_sales/home_controller.rb +4 -0
- data/app/controllers/educode_sales/ideas_controller.rb +86 -1
- data/app/controllers/educode_sales/upload_files_controller.rb +1 -1
- data/app/models/educode_sales/activity.rb +6 -0
- data/app/models/educode_sales/activity_staff.rb +9 -0
- data/app/models/educode_sales/idea.rb +23 -10
- data/app/views/educode_sales/activities/edit.html.erb +69 -2
- data/app/views/educode_sales/activities/index.html.erb +27 -1
- data/app/views/educode_sales/activities/index.json.jbuilder +5 -0
- data/app/views/educode_sales/activities/new.html.erb +100 -15
- data/app/views/educode_sales/businesses/time_line.html.erb +30 -0
- data/app/views/educode_sales/home/search_edu_user.json.jbuilder +13 -0
- data/app/views/educode_sales/idea_recycles/detail.html.erb +25 -4
- data/app/views/educode_sales/idea_recycles/index.html.erb +3 -3
- data/app/views/educode_sales/idea_recycles/index.json.jbuilder +1 -1
- data/app/views/educode_sales/ideas/detail.html.erb +25 -4
- data/app/views/educode_sales/ideas/edit.html.erb +134 -27
- data/app/views/educode_sales/ideas/index.html.erb +3 -3
- data/app/views/educode_sales/ideas/index.json.jbuilder +4 -4
- data/app/views/educode_sales/ideas/new.html.erb +118 -15
- data/config/routes.rb +1 -0
- data/db/migrate/20230319050647_add_clazz_to_educode_sales_activities.rb +6 -0
- data/db/migrate/20230319105048_create_educode_sales_activity_staffs.rb +13 -0
- data/db/migrate/20230322034022_add_to_school_name_to_ideas.rb +17 -0
- data/lib/educode_sales/version.rb +1 -1
- 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-
|
10
|
-
<
|
11
|
-
<div class="layui-input-block"
|
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"
|
58
|
+
<labeL class="layui-form-label required">方案指派人:</labeL>
|
37
59
|
<div class="layui-input-block">
|
38
|
-
|
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
|
100
|
+
<labeL class="layui-form-label">项目预算(万):</labeL>
|
79
101
|
<div class="layui-input-block">
|
80
|
-
<input type="number" name="money" autocomplete="off"
|
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
|
108
|
+
<labeL class="layui-form-label">并发规模(人):</labeL>
|
87
109
|
<div class="layui-input-block">
|
88
|
-
<input type="number" name="project" autocomplete="off"
|
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
|
-
|
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
|
-
|
162
|
-
|
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,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
|
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.
|
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-
|
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
|