educode_sales 1.10.3 → 1.10.5

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: 86f8364fd145617cb033ff7034197314eb267e79bf716e14200046c24551fad5
4
- data.tar.gz: 70caf8f362c4bf1b40d205f2a44370c7fd930e791f74a934ecef7a9abddc8321
3
+ metadata.gz: 7d2e7e3e78774b085c64185fddc9b8ecddbcbb7bf87e030c8f449fb21285f8c9
4
+ data.tar.gz: c1ea147b8d76cc8ef23d6004834d4c79499b2c1d7f18c233e939f030b303488f
5
5
  SHA512:
6
- metadata.gz: 5ecece08fea07f8ed2213187dc596092fc1961640751a01301416ab97bf0587efbfd2fe2158e13c2becbe6f2eb3c19fa941b67a9c6ff6f2ed528ff61c911f1f0
7
- data.tar.gz: 95170fda46d59cf757bbc5c5518a3e6a96a09872d4cb296c5344138e91d5baf9ab12bc64b321d3e50345bf2ae0e927001547a2fb0edcb8e12f0f2a9aaa424403
6
+ metadata.gz: 37e8d9e9ce8bbf78632588b9bff325548e3004dbb2a8daf7b3a64a29fd547556c41bc0ecfc3b244fb8725e2cd76cb3618cc08db4952a47189f8f0dfb1f19943e
7
+ data.tar.gz: a5661dcb147e98afe980d0c330c9d8fcb5f297335ec2f305e658b3f088be9c57919f7e534241d6d7b612dc903043190aa9b9132dd6a727122299e7dd847071c5
@@ -437,21 +437,25 @@ module EducodeSales
437
437
  #导入签到记录接口
438
438
  def import_attendances
439
439
  render_failure("文件不存在或格式错误") if params[:file].blank? || !params[:file].is_a?(ActionDispatch::Http::UploadedFile)
440
+ Rails.logger.info "导入签到数据"
440
441
  begin
441
- ActiveRecord::Base.transaction do
442
- doc = SimpleXlsxReader.open(params[:file])
443
- size = doc.sheets.size
444
- attendance_attrs = %i[name attendance_date longitude latitude location address mobile_id ip_address customer target created_at updated_at]
445
- attendance_vales = []
446
- (0..size - 1).each do |index|
447
- doc.sheets[index].rows.each_with_index do |d, i|
448
- next if i <= 2
449
- name = d[0]
450
- attendance_date_time = "#{d[1]} #{d[2]}"
451
- attendance_date = attendance_date_time.strip
452
- longitude = d[3]
453
- latitude = d[4]
454
- location = d[5]
442
+ doc = SimpleXlsxReader.open(params[:file])
443
+ rescue
444
+ return render_error("文件不存在或格式错误")
445
+ end
446
+ size = doc.sheets.size
447
+ Rails.logger.info size
448
+ attendance_attrs = %i[name attendance_date longitude latitude location address mobile_id ip_address customer target created_at updated_at]
449
+ attendance_vales = []
450
+ (0..size - 1).each do |index|
451
+ doc.sheets[index].rows.each_with_index do |d, i|
452
+ next if i <= 2
453
+ name = d[0]
454
+ attendance_date_time = "#{d[1]} #{d[2]}"
455
+ attendance_date = attendance_date_time.strip
456
+ longitude = d[3]
457
+ latitude = d[4]
458
+ location = d[5]
455
459
  address = d[6]
456
460
  mobile_id = d[7]
457
461
  ip_address = d[8]
@@ -469,10 +473,6 @@ module EducodeSales
469
473
  end
470
474
  end
471
475
  render_success
472
- end
473
- rescue Exception => e
474
- render_failure(e.message)
475
- end
476
476
  end
477
477
 
478
478
 
@@ -287,8 +287,21 @@ module EducodeSales
287
287
  render_success
288
288
  end
289
289
 
290
+ def file
291
+ gon.folder = edu_setting('attachment_folder') + '/'
292
+ render layout: false
293
+ end
294
+
295
+ def upload_file
296
+ render layout: false
297
+ end
298
+
290
299
  private
291
300
 
301
+ def edu_setting name
302
+ EduSetting.get(name)
303
+ end
304
+
292
305
  def load_business
293
306
  @business = Business.find(params[:business_id])
294
307
  end
@@ -8,7 +8,12 @@ module EducodeSales
8
8
  format.html do
9
9
  end
10
10
  format.json do
11
- @files = Attachment.where(description: "business", container_id:params[:business_id])
11
+ if params[:follow_up_id].present?
12
+ @files = Attachment.where(container_type: "EducodeSales::FollowUp", container_id: params[:follow_up_id])
13
+ else
14
+ @files = Attachment.where(description: "business", container_id:params[:business_id])
15
+ end
16
+
12
17
  if params[:sort].present? && params[:sort][:field]
13
18
  @files = @files.order("#{params[:sort][:field]} #{params[:sort][:order]}")
14
19
  else
@@ -39,6 +44,9 @@ module EducodeSales
39
44
  elsif params[:idea_id].present?
40
45
  @attachment.container_id = params[:idea_id]
41
46
  @attachment.container_type = 'EducodeSales::Idea'
47
+ elsif params[:follow_up_id].present?
48
+ @attachment.container_id = params[:follow_up_id]
49
+ @attachment.container_type = 'EducodeSales::FollowUp'
42
50
  else
43
51
  @attachment.description = "business"
44
52
  @attachment.container_id = params[:business_id]
@@ -24,7 +24,10 @@
24
24
  <a href="javascript:;" class="add_key" data-is_latest="<%= f.id == @latest&.id %>" data-id=<%= f.id %> data-flag="<%= f.created_at.present? ? (Time.now - f.created_at).to_f/3600 < 24 : false %>">添加关键人</a>
25
25
  <% end %>
26
26
  <br/>
27
- 评论: <span><%= f.comment %></span> <a href="javascript:;" class="add_comment" data-id=<%= f.id %>>评论</a>
27
+ 评论: <span><%= f.comment %></span> <a href="javascript:;" class="add_comment" data-id=<%= f.id %>>评论</a> <a href="javascript:;" class="uploadFile" data-id=<%= f.id %>>附件上传</a>
28
+ <br/>
29
+ <!-- <span class="layui-badge layui-bg-green"></span> -->
30
+ <button type="button" class="layui-btn layui-btn-xs layui-btn-primary add-tag"><i class="layui-icon layui-icon-addition"></i>标签设置</button>
28
31
  </p>
29
32
  </div>
30
33
  </li>
@@ -99,8 +102,28 @@
99
102
  layer.close(index)
100
103
  },
101
104
  });
102
-
103
105
  })
106
+
107
+ $(".uploadFile").on("click", function(e) {
108
+ var data = e.currentTarget.dataset;
109
+ follow_up_id = parent.id
110
+ var content = miniPage.getHrefContent('/missions/follow_ups/' + follow_up_id + '/file');
111
+ var openWH = miniPage.getOpenWidthHeight();
112
+ lsindex = layer.open({
113
+ title: '附件上传',
114
+ type: 1,
115
+ shade: 0.2,
116
+ maxmin: true,
117
+ shadeClose: true,
118
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
119
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
120
+ content: content
121
+ });
122
+ $(window).on("resize", function () {
123
+ layer.full(sindex);
124
+ });
125
+ })
126
+
104
127
  });
105
128
  function demo(){
106
129
  layer.closeAll()
@@ -0,0 +1,154 @@
1
+ <%= Gon::Base.render_data %>
2
+ <script type="text/html" id="toolbarDemo">
3
+ <div class="layui-btn-container">
4
+ <span class="table-label">附件信息</span>
5
+ <% if can? :upload_file, EducodeSales::Business %>
6
+ <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="upload_file">上传文件</button>
7
+ <% end %>
8
+ </div>
9
+ </script>
10
+
11
+ <table class="layui-hide" id="file" lay-filter="file"></table>
12
+
13
+ <script type="text/html" id="currentTableBar_file">
14
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="preview">预览</a>
15
+ <% if can? :download_file, EducodeSales::Business %>
16
+ <a href="/missions/upload_files/download?id={{d.id}}" class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="download">下载</a>
17
+ <% end %>
18
+ <% if can? :delete_file, EducodeSales::Business %>
19
+ <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
20
+ <% end %>
21
+ </script>
22
+
23
+
24
+ <script>
25
+ layui.use(['form', 'table', 'miniPage', 'element', 'request'], function () {
26
+ var $ = layui.jquery,
27
+ form = layui.form,
28
+ table = layui.table,
29
+ request = layui.request,
30
+ upload = layui.upload;
31
+ miniPage = layui.miniPage;
32
+
33
+
34
+ var follow_up_id = parent.follow_up_id
35
+ table.render({
36
+ elem: '#file',
37
+ url: '/missions/upload_files?follow_up_id='+follow_up_id,
38
+ toolbar: '#toolbarDemo',
39
+ defaultToolbar: [],
40
+ cols: [
41
+ [
42
+ {
43
+ field: 'id',
44
+ width: 80,
45
+ title:'序号',type: 'numbers',
46
+ },
47
+ {
48
+ field: 'name',
49
+ title: '文件名'
50
+ },
51
+ {
52
+ field: 'size',
53
+ width: 100,
54
+ title: '文件大小',
55
+ },
56
+ {
57
+ field: 'created_on',
58
+ width: 200,
59
+ title: '上传时间',
60
+ sort: true
61
+ },
62
+ {
63
+ field: 'upload_person',
64
+ width: 80,
65
+ totalRow:true,
66
+ title: '上传人',
67
+ },
68
+ {
69
+ title: '操作',
70
+ width: 200,
71
+ toolbar: '#currentTableBar_file',
72
+ align: "center"
73
+ }
74
+ ]
75
+ ],
76
+ limit: 20,
77
+ limits: [10,15,20,30,40,50,60,70,80,90],
78
+ page: true
79
+ });
80
+
81
+
82
+ var sort = {};
83
+ table.on('sort(file)', function (obj) {
84
+ sort.field = obj.field;
85
+ sort.order = obj.type;
86
+ table.reload('file', {
87
+ initSort: obj,
88
+ where: {
89
+ sort: sort
90
+ }
91
+ });
92
+ })
93
+
94
+
95
+ table.on('toolbar(file)', function (obj) {
96
+ if (obj.event === 'upload_file') { //
97
+ follow_up_id = parent.follow_up_id
98
+ var content = miniPage.getHrefContent('/missions/follow_ups/' + parent.follow_up_id +'/upload_file');
99
+ var openWH = miniPage.getOpenWidthHeight();
100
+ import_index = layer.open({
101
+ title: '上传文件',
102
+ type: 1,
103
+ shade: 0.2,
104
+ shadeClose: true,
105
+ area: ['200px', '100px'],
106
+ offset: 'auto',
107
+ closeBtn: 0,
108
+ content: content,
109
+ });
110
+ $(window).on("resize", function () {
111
+ layer.full(index);
112
+ });
113
+ }
114
+ });
115
+
116
+
117
+ table.on('tool(file)', function (obj) {
118
+ var data = obj.data;
119
+ var id = data.id
120
+ name = data.disk_filename
121
+ folder = gon.folder
122
+ if (obj.event === 'preview') {
123
+ if (data.content_type.split("/")[0] === "image"){
124
+ layer.photos({
125
+ photos: { "data": [{"src": '/files/educode_sales/' + name}] }
126
+ ,anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机
127
+ });
128
+ }else if (data.content_type.split("/")[1] === "pdf"){
129
+ var pdf = '/files/educode_sales/' + name;
130
+ var openWH = miniPage.getOpenWidthHeight();
131
+ layer.open({
132
+ title: data.name,
133
+ type: 2,
134
+ area: ['1000px', '750px'],
135
+ fixed: false, //不固定
136
+ maxmin: true,
137
+ content: pdf
138
+ });
139
+ }else{
140
+ layer.msg("附件不支持预览,请下载查看!")
141
+ }
142
+ return false;
143
+ }else if (obj.event === 'delete') {
144
+ layer.confirm('确定删除' + data.name, function (index) {
145
+ request.delete('missions/upload_files/' + data.id + '?disk_filename=' + data.disk_filename, {}, function (res) {
146
+ layer.close(index);
147
+ table.reload("file")
148
+ })
149
+ });
150
+ }
151
+ });
152
+
153
+ });
154
+ </script>
@@ -0,0 +1,43 @@
1
+ <div style="padding-left: 50px">
2
+ <button type="button" class="layui-btn" id="get_file"><i class="layui-icon"></i>选择文件</button>
3
+ </div>
4
+ <script>
5
+ layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'selectInput'], function () {
6
+ var form = layui.form,
7
+ layer = layui.layer,
8
+ table = layui.table,
9
+ laytpl = layui.laytpl,
10
+ upload = layui.upload,
11
+ request = layui.request,
12
+ $ = layui.$;
13
+ selectInput = layui.selectInput;
14
+
15
+ form.render();
16
+
17
+ //指定允许上传的文件类型
18
+ var follow_up_id = parent.follow_up_id;
19
+ var renderObj = upload.render({
20
+ elem: '#get_file'
21
+ ,url: '/missions/upload_files?follow_up_id='+follow_up_id //此处配置你自己的上传接口即可
22
+ ,accept: 'file' //普通文件
23
+ ,headers: {
24
+ 'X-CSRF-Token': $('meta[name=csrf-token]').attr('content')
25
+ }
26
+ ,before: function(obj){ //obj参数包含的信息,跟 choose回调完全一致,可参见上文。
27
+ layer.load(); //上传loading
28
+ }
29
+ ,done: function(res){
30
+ layer.msg('导入成功');
31
+ table.reload('file');
32
+ layer.closeAll('loading'); //关闭loading
33
+ layer.close(parent.import_index)
34
+ }
35
+ ,error: function(index, upload){
36
+ table.reload('file');
37
+ layer.closeAll('loading'); //关闭loading
38
+ layer.alert('导入失败,请检查文件格式')
39
+ layer.close(parent.import_index)
40
+ }
41
+ });
42
+ });
43
+ </script>
data/config/routes.rb CHANGED
@@ -153,6 +153,8 @@ EducodeSales::Engine.routes.draw do
153
153
  delete :delete_money
154
154
  put :update_advise
155
155
  put :comment
156
+ get :file
157
+ get :upload_file
156
158
  end
157
159
  end
158
160
 
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '1.10.3'
2
+ VERSION = '1.10.5'
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: 1.10.3
4
+ version: 1.10.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - anke1460
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-13 00:00:00.000000000 Z
11
+ date: 2023-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -362,9 +362,11 @@ files:
362
362
  - app/views/educode_sales/customers/show_follow.json.jbuilder
363
363
  - app/views/educode_sales/customers/show_follow_record.html.erb
364
364
  - app/views/educode_sales/customers/show_majors.html.erb
365
+ - app/views/educode_sales/follow_ups/file.html.erb
365
366
  - app/views/educode_sales/follow_ups/index.json.jbuilder
366
367
  - app/views/educode_sales/follow_ups/money_plans.json.jbuilder
367
368
  - app/views/educode_sales/follow_ups/teachers.json.jbuilder
369
+ - app/views/educode_sales/follow_ups/upload_file.html.erb
368
370
  - app/views/educode_sales/home/index.html.erb
369
371
  - app/views/educode_sales/home/no_permission.html.erb
370
372
  - app/views/educode_sales/home/sales_place.json.jbuilder