educode_sales 0.9.60 → 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 +4 -4
- data/app/controllers/educode_sales/activities_controller.rb +50 -4
- data/app/controllers/educode_sales/businesses_controller.rb +10 -0
- data/app/controllers/educode_sales/follow_ups_controller.rb +6 -0
- data/app/controllers/educode_sales/home_controller.rb +9 -1
- data/app/controllers/educode_sales/ideas_controller.rb +3 -1
- data/app/controllers/educode_sales/upload_files_controller.rb +1 -1
- data/app/models/educode_sales/activity.rb +2 -0
- data/app/models/educode_sales/idea.rb +7 -11
- data/app/views/educode_sales/activities/edit.html.erb +28 -2
- data/app/views/educode_sales/activities/index.html.erb +59 -0
- data/app/views/educode_sales/activities/new.html.erb +19 -9
- data/app/views/educode_sales/businesses/_follows.html.erb +34 -1
- data/app/views/educode_sales/businesses/index.html.erb +55 -20
- data/app/views/educode_sales/businesses/index.json.jbuilder +1 -0
- data/app/views/educode_sales/home/staff_departments.json.jbuilder +9 -0
- data/app/views/educode_sales/idea_recycles/detail.html.erb +2 -2
- data/app/views/educode_sales/idea_recycles/index.json.jbuilder +1 -1
- data/app/views/educode_sales/ideas/detail.html.erb +2 -2
- data/app/views/educode_sales/ideas/edit.html.erb +129 -29
- data/app/views/educode_sales/ideas/index.json.jbuilder +1 -1
- data/app/views/educode_sales/ideas/new.html.erb +110 -14
- data/config/routes.rb +4 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 15485a9308608796320e988b7095196d7747dffb82c6ac7478e146ca9a3034c4
|
4
|
+
data.tar.gz: b436c683fd104c2a599979a505e3507e6f117e98f7e525b51b1f3b1977aedb94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04b502321a7d5fd2136d97577802d45d502645651d26b59b0b2d7474c06e1e959a489d9c5930ff1e45b24b80d676f4b804570d7b58af7edd09d031e036b95ec2
|
7
|
+
data.tar.gz: 2daf5753d3ed08580c758f097751ae59a352159b2542c8b31fcafc30c6866becc7b56563a76a4de493efb1f1c4a0804e2b09618210a66c009184b7f86555f8f5
|
@@ -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
|
-
|
57
|
-
|
58
|
-
|
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
|
@@ -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
|
|
@@ -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
|
@@ -52,14 +52,10 @@ module EducodeSales
|
|
52
52
|
|
53
53
|
def save_history(attr, old_value, new_value)
|
54
54
|
case attr
|
55
|
-
when "
|
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
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
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"
|
@@ -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"
|
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"
|
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
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
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:
|
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
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
<% end %>
|
183
|
-
|
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
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
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?(:
|
197
|
-
|
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:
|
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
|
@@ -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.
|
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.
|
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.
|
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.
|
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.
|
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
|
-
<
|
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
|
-
<
|
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
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
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
|
-
|
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
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
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
|
});
|
@@ -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
|
-
<
|
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
|
-
<
|
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
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
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
|
|
@@ -82,6 +83,7 @@ EducodeSales::Engine.routes.draw do
|
|
82
83
|
get :money_plans
|
83
84
|
put :update_money
|
84
85
|
delete :delete_money
|
86
|
+
put :update_advise
|
85
87
|
end
|
86
88
|
end
|
87
89
|
|
@@ -118,6 +120,7 @@ EducodeSales::Engine.routes.draw do
|
|
118
120
|
get :daily_paper
|
119
121
|
get :search
|
120
122
|
get :contract
|
123
|
+
get :advise
|
121
124
|
end
|
122
125
|
|
123
126
|
member do
|
@@ -126,6 +129,7 @@ EducodeSales::Engine.routes.draw do
|
|
126
129
|
get :unfinish_plans
|
127
130
|
put :update_follow_up
|
128
131
|
put :audit
|
132
|
+
put :update_advise
|
129
133
|
end
|
130
134
|
end
|
131
135
|
|
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.62
|
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-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -306,6 +306,7 @@ files:
|
|
306
306
|
- app/views/educode_sales/home/search_operation_teacher.json.jbuilder
|
307
307
|
- app/views/educode_sales/home/search_teacher.json.jbuilder
|
308
308
|
- app/views/educode_sales/home/search_users.json.jbuilder
|
309
|
+
- app/views/educode_sales/home/staff_departments.json.jbuilder
|
309
310
|
- app/views/educode_sales/home/staff_schools.json.jbuilder
|
310
311
|
- app/views/educode_sales/home/statistics.html.erb
|
311
312
|
- app/views/educode_sales/idea_recycles/activities.json.jbuilder
|