Merge branch 'dev_aliyun' of http://bdgit.educoder.net/Hjqreturn/educoder into dev_aliyun
commit
1c1c6baf39
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,25 @@
|
||||
$(document).on('turbolinks:load', function() {
|
||||
if ($('.weapp-banner-setting-container').length > 0) {
|
||||
var $form = $('#course_form');
|
||||
|
||||
$('.course.banner-item-bottom').on("change", 'input[type="file"]', function() {
|
||||
var $fileInput = $(this);
|
||||
var file = this.files[0];
|
||||
var imageType = /image.*/;
|
||||
if (file && file.type.match(imageType)) {
|
||||
$form.ajaxSubmit()
|
||||
}
|
||||
});
|
||||
|
||||
var $shixunform = $('#shixun_form');
|
||||
|
||||
$('.shixun.banner-item-bottom').on("change", 'input[type="file"]', function() {
|
||||
var $fileInput = $(this);
|
||||
var file = this.files[0];
|
||||
var imageType = /image.*/;
|
||||
if (file && file.type.match(imageType)) {
|
||||
$shixunform.ajaxSubmit()
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
@ -1,171 +1,154 @@
|
||||
.admins-laboratories-index-page {
|
||||
.laboratory-list-table {
|
||||
.member-container {
|
||||
.laboratory-user {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.laboratory-user-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 22px;
|
||||
line-height: 22px;
|
||||
padding: 2px 5px;
|
||||
margin: 2px 2px;
|
||||
border: 1px solid #91D5FF;
|
||||
background-color: #E6F7FF;
|
||||
color: #91D5FF;
|
||||
border-radius: 4px;
|
||||
.laboratory-list-table {
|
||||
.member-container {
|
||||
.laboratory-user {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
.laboratory-user-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 22px;
|
||||
line-height: 22px;
|
||||
padding: 2px 5px;
|
||||
margin: 2px 2px;
|
||||
border: 1px solid #91D5FF;
|
||||
background-color: #E6F7FF;
|
||||
color: #91D5FF;
|
||||
border-radius: 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.admins-laboratory-settings-show-page, .admins-laboratory-settings-update-page {
|
||||
.edit-laboratory-setting-container {
|
||||
.logo-item {
|
||||
display: flex;
|
||||
|
||||
&-img {
|
||||
display: block;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
background: #f0f0f0;
|
||||
}
|
||||
|
||||
&-upload {
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
background: #F5F5F5;
|
||||
border: 1px solid #E5E5E5;
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 27px;
|
||||
left: 39px;
|
||||
width: 2px;
|
||||
height: 26px;
|
||||
background: #E5E5E5;
|
||||
}
|
||||
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 39px;
|
||||
left: 27px;
|
||||
width: 26px;
|
||||
height: 2px;
|
||||
background: #E5E5E5;
|
||||
}
|
||||
}
|
||||
|
||||
&-left {
|
||||
position: relative;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
|
||||
&.has-img {
|
||||
.logo-item-upload {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
.logo-item-upload {
|
||||
display: block;
|
||||
background: rgba(145, 145, 145, 0.8);
|
||||
.admins-laboratory-settings-show-page,
|
||||
.admins-laboratory-settings-update-page,
|
||||
.weapp-banner-setting-container {
|
||||
.edit-laboratory-setting-container {
|
||||
.logo-item {
|
||||
display: flex;
|
||||
&-img {
|
||||
display: block;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
background: #f0f0f0;
|
||||
}
|
||||
&-upload {
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
background: #F5F5F5;
|
||||
border: 1px solid #E5E5E5;
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 27px;
|
||||
left: 39px;
|
||||
width: 2px;
|
||||
height: 26px;
|
||||
background: #E5E5E5;
|
||||
}
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 39px;
|
||||
left: 27px;
|
||||
width: 26px;
|
||||
height: 2px;
|
||||
background: #E5E5E5;
|
||||
}
|
||||
}
|
||||
&-left {
|
||||
position: relative;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
&.has-img {
|
||||
.logo-item-upload {
|
||||
display: none;
|
||||
}
|
||||
&:hover {
|
||||
.logo-item-upload {
|
||||
display: block;
|
||||
background: rgba(145, 145, 145, 0.8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
&-right {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
color: #777777;
|
||||
font-size: 12px;
|
||||
}
|
||||
&-title {
|
||||
color: #23272B;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-right {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
color: #777777;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
&-title {
|
||||
color: #23272B;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
.banner-item {
|
||||
margin-bottom: 15px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
&-img {
|
||||
display: block;
|
||||
width: 300px;
|
||||
height: 80px;
|
||||
background: #f0f0f0;
|
||||
}
|
||||
|
||||
&-upload {
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 300px;
|
||||
height: 80px;
|
||||
background: #F5F5F5;
|
||||
border: 1px solid #E5E5E5;
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 27px;
|
||||
left: 149px;
|
||||
width: 2px;
|
||||
height: 26px;
|
||||
background: #E5E5E5;
|
||||
}
|
||||
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 39px;
|
||||
left: 137px;
|
||||
width: 26px;
|
||||
height: 2px;
|
||||
background: #E5E5E5;
|
||||
}
|
||||
}
|
||||
|
||||
&-top {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
&-bottom {
|
||||
position: relative;
|
||||
width: 300px;
|
||||
height: 80px;
|
||||
|
||||
&.has-img {
|
||||
.banner-item-upload {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
.banner-item-upload {
|
||||
display: block;
|
||||
background: rgba(145, 145, 145, 0.8);
|
||||
.banner-item {
|
||||
margin-bottom: 15px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
&-img {
|
||||
display: block;
|
||||
width: 300px;
|
||||
height: 80px;
|
||||
background: #f0f0f0;
|
||||
}
|
||||
&-upload {
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 300px;
|
||||
height: 80px;
|
||||
background: #F5F5F5;
|
||||
border: 1px solid #E5E5E5;
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 27px;
|
||||
left: 149px;
|
||||
width: 2px;
|
||||
height: 26px;
|
||||
background: #E5E5E5;
|
||||
}
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 39px;
|
||||
left: 137px;
|
||||
width: 26px;
|
||||
height: 2px;
|
||||
background: #E5E5E5;
|
||||
}
|
||||
}
|
||||
&-top {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
&-bottom {
|
||||
position: relative;
|
||||
width: 300px;
|
||||
height: 80px;
|
||||
&.has-img {
|
||||
.banner-item-upload {
|
||||
display: none;
|
||||
}
|
||||
&:hover {
|
||||
.banner-item-upload {
|
||||
display: block;
|
||||
background: rgba(145, 145, 145, 0.8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
&-title {
|
||||
color: #23272B;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-title {
|
||||
color: #23272B;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,80 +1,52 @@
|
||||
class Admins::WeappBannersController < Admins::BaseController
|
||||
before_action :convert_file!, only: [:create]
|
||||
|
||||
def index
|
||||
|
||||
@shixun = WeappSettings::ShixunBanner.first
|
||||
@course = WeappSettings::CourseBanner.first
|
||||
end
|
||||
|
||||
def create
|
||||
position = WeappSettings::Carousel.count + 1
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
carousel = WeappSettings::Carousel.create!(create_params.merge(position: position))
|
||||
old_carouse = WeappSettings::CourseBanner.first
|
||||
|
||||
file_path = Util::FileManage.source_disk_filename(carousel)
|
||||
File.delete(file_path) if File.exist?(file_path) # 删除之前的文件
|
||||
Util.write_file(@file, file_path)
|
||||
end
|
||||
if old_carouse.present?
|
||||
old_carouse.destroy!
|
||||
file_path = Util::FileManage.source_disk_filename(old_carouse)
|
||||
File.delete(file_path) if File.exist?(file_path) # 删除之前的文件
|
||||
end
|
||||
|
||||
flash[:success] = '保存成功'
|
||||
redirect_to admins_weapp_carousels_path
|
||||
@course = WeappSettings::CourseBanner.create!
|
||||
save_image_file(params[:course_banner], @course)
|
||||
end
|
||||
end
|
||||
|
||||
def update
|
||||
current_carousel.update!(update_params)
|
||||
render_ok
|
||||
end
|
||||
|
||||
def destroy
|
||||
def shixun_banner
|
||||
ActiveRecord::Base.transaction do
|
||||
current_carousel.destroy!
|
||||
# 前移
|
||||
WeappSettings::Carousel.where('position > ?', current_carousel.position)
|
||||
.update_all('position = position - 1')
|
||||
old_shixun = WeappSettings::ShixunBanner.first
|
||||
|
||||
if old_shixun.present?
|
||||
old_shixun.destroy!
|
||||
file_path = Util::FileManage.source_disk_filename(old_shixun)
|
||||
File.delete(file_path) if File.exist?(file_path) # 删除之前的文件
|
||||
end
|
||||
|
||||
file_path = Util::FileManage.source_disk_filename(current_carousel)
|
||||
File.delete(file_path) if File.exist?(file_path)
|
||||
@shixun = WeappSettings::ShixunBanner.create!
|
||||
save_image_file(params[:shixun_banner], @shixun)
|
||||
end
|
||||
render_delete_success
|
||||
end
|
||||
|
||||
def drag
|
||||
move = WeappSettings::Carousel.find_by(id: params[:move_id])
|
||||
after = WeappSettings::Carousel.find_by(id: params[:after_id])
|
||||
|
||||
Admins::DragWeappCarouselService.call(move, after)
|
||||
render_ok
|
||||
rescue ApplicationService::Error => e
|
||||
render_error(e.message)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def current_carousel
|
||||
@_current_carousel ||= WeappSettings::Carousel.find(params[:id])
|
||||
end
|
||||
private
|
||||
|
||||
def create_params
|
||||
params.require(:weapp_settings_carousel).permit(:link)
|
||||
end
|
||||
def save_image_file(file, model)
|
||||
return unless file.present? && file.is_a?(ActionDispatch::Http::UploadedFile)
|
||||
|
||||
def update_params
|
||||
params.permit(:link, :online)
|
||||
file_path = Util::FileManage.source_disk_filename(model)
|
||||
File.delete(file_path) if File.exist?(file_path) # 删除之前的文件
|
||||
Util.write_file(file, file_path)
|
||||
end
|
||||
|
||||
def convert_file!
|
||||
max_size = 10 * 1024 * 1024 # 10M
|
||||
file = params.dig('weapp_settings_carousel', 'image')
|
||||
if file.class == ActionDispatch::Http::UploadedFile
|
||||
@file = file
|
||||
render_error('请上传文件') if @file.size.zero?
|
||||
render_error('文件大小超过限制') if @file.size > max_size
|
||||
else
|
||||
file = file.to_s.strip
|
||||
return render_error('请上传正确的图片') if file.blank?
|
||||
@file = Util.convert_base64_image(file, max_size: max_size)
|
||||
end
|
||||
rescue Base64ImageConverter::Error => ex
|
||||
render_error(ex.message)
|
||||
end
|
||||
end
|
@ -0,0 +1,12 @@
|
||||
class Weapps::BannersController < Weapps::BaseController
|
||||
|
||||
def index
|
||||
shixun = WeappSettings::ShixunBanner.first
|
||||
course = WeappSettings::CourseBanner.first
|
||||
|
||||
render json: {
|
||||
shixun_img: shixun ? Util::FileManage.source_disk_file_url(shixun) : '',
|
||||
course_img: course ? Util::FileManage.source_disk_file_url(course) : ''
|
||||
}
|
||||
end
|
||||
end
|
@ -0,0 +1,3 @@
|
||||
class WeappSettings::CourseBanner < WeappSetting
|
||||
default_scope { order(position: :asc) }
|
||||
end
|
@ -0,0 +1,3 @@
|
||||
class WeappSettings::ShixunBanner < WeappSetting
|
||||
default_scope { order(position: :asc) }
|
||||
end
|
@ -0,0 +1 @@
|
||||
$("#course_img")[0].innerHTML = "<%= escape_javascript(image_tag Util::FileManage.source_disk_file_url(@course), class: 'banner-item-img course-banner-img') %>"
|
@ -0,0 +1 @@
|
||||
$("#shixun_img")[0].innerHTML = "<%= escape_javascript(image_tag Util::FileManage.source_disk_file_url(@shixun), class: 'banner-item-img course-banner-img') %>"
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Loading…
Reference in new issue