@model WebApplication1.Dto.QzBusinessDtlDto
<div class="form-group detail-pics-wrapper">
<label for="">详情图片</label>
<div class="yes-preview-uploader">
@if (Model.QzImageLists != null)
{
@for (int i = 0; i < Model.QzImageLists.Count; i++)
{
<div class="yes-preview-uploader__img" onclick="handleRemoveImg(this)">
<img src="@Model.QzImageLists[i].Image" />
</div>
@Html.HiddenFor(O => O.QzImageLists[i].Guid)
}
}
@if (Model.QzImageLists.Count < 9)
{
<div class="yes-preview-uploader__trigger" onclick="handleTriggerUpload()">+</div>
}
<input type="file" class="yes-preview-uploader__input" name="imgitems" accept=".jpg,.png,.gif" multiple onchange="handleUploadImgs(this)" />
</div>
</div>
@section Scripts{
<script>
let editor
const detailImgList = []
let counter = 0
$(function () {
//编辑器
editor = CKEDITOR.replace("QzBusi.Desc", {
filebrowserImageUploadUrl: "jiuhuaxiang/upload/image?",
removePlugins: 'elementspath,resize',
codeSnippet_theme: 'zenburn',
height: '400'
});
$('#BodyForm').bootstrapValidator({
// live: 'disabled',
message: 'This value is not valid',
feedbackIcons: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
},
fields: {
"Name": {
validators: {
notEmpty: {
message: '标题不能为空!'
}
}
},
"Type": {
validators: {
notEmpty: {
message: '请选择显示方式!'
}
}
},
"Sort": {
validators: {
regexp: {
regexp: /^[0-9]+$/,
message: '排序号要求为数字!'
},
}
}
}
});
});
function handleUpload(uploadEl) {
previewFile(uploadEl);
}
function handleCheckAll(checked) {
// 1. 在对全选 checkbox 设置选中值
$('.j-cbx-all').val(checked ? 1 : 0)
$('.j-cbx-relate').each(function (i, cbx) {
// 2. 先对界面上的 checkbox 设置选中效果
cbx.checked = checked
// 3. 修改所有的被影响的关联关系的 checkbox 的选中值
$('.j-hd-relate#' + cbx.dataset['scenicid']).val(checked ? '1' : '0')
})
}
function handleCheck(scenicId, checked) {
$('.j-hd-relate#' + scenicId).val(checked ? '1' : '0')
}
function handleTriggerUpload() {
// 触发上传组件选择文件
$('.yes-preview-uploader__input').click()
}
function handleUploadImgs(fileUploader) {
// 1. 解析 input:file 中的文件流,读取用于预览图片的数据
const files = fileUploader.files
if (files && files.length > 0) {
// 2. 遍历数据,生成对应的img
//图片添加数目 最多九张
var num = 9 - $('.yes-preview-uploader__img').length
num = num > files.length ? files.length : num
for (let i = 0; i < num; i++) {
// Js内置文件流
let reader = new FileReader();
// 读取file中的图片完成后
reader.onloadend = function () {
// 3. 将 img 插入到当前的上传按钮之前
counter++
let fileId = files[i].name + counter
detailImgList.push({
fileId: fileId,
file: files[i]
})
let imgWrapper = document.createElement('div');
$(imgWrapper).addClass('yes-preview-uploader__img new').data('imgName', files[i].name).data('fileId', fileId).on('click', (e) => { handleRemoveImg(imgWrapper) });
let img = document.createElement('img');
//$(<div class="yes-preview-uploader__img"></div>)
$(img).attr('src', reader.result).appendTo($(imgWrapper));
$('.yes-preview-uploader__trigger')[0].before(imgWrapper);
if ($('.yes-preview-uploader__img').length < 9) {
$('.yes-preview-uploader__trigger').show()
}
else {
$('.yes-preview-uploader__trigger').hide()
}
//preview.show();
//preview.attr("src", reader.result);
}
// 图片文件不空就显示
if (files[i]) {
reader.readAsDataURL(files[i]);
}
}
}
}
function handleRemoveImg(imgEl) {
console.log(imgEl)
var el = $(imgEl)
// 新添加的图片,删除需要删除对应的input:file 中的文件流
if (el.hasClass('new')) {
console.log(el, $('.yes-preview-uploader__input')[0].value)
var fileIndex = detailImgList.findIndex(f => f.fileId === el.data('fileId'))
if (fileIndex > -1) {
detailImgList.splice(fileIndex, 1)
}
}
//对应QzImageLists数据设空值
$(imgEl).next().val('')
$(imgEl).remove()
if ($('.yes-preview-uploader__img').length < 9) {
$('.yes-preview-uploader__trigger').show()
}
}
function handleSubmit() {
const e = window.event || arguments.callee.caller.arguments[0];
console.log('submitting', e);
e.preventDefault();
e.stopPropagation();
const formData = new FormData();
$('#BodyForm').serializeArray().forEach((item) => {
formData.set(item.name, item.value)
})
// 处理简介字段
formData.set('QzBusi.Desc', editor.getData())
// 处理上传
if ($('#ICO1')[0] && $('#ICO1')[0].files && $('#ICO1')[0].files.length > 0) {
formData.append('ICO1', ...$('#ICO1')[0].files)
}
if ($('#AUD1')[0] && $('#AUD1')[0].files && $('#AUD1')[0].files.length > 0) {
formData.append('AUD1', ...$('#AUD1')[0].files)
}
// 处理详情图片上传
detailImgList.forEach(img => {
formData.append('imgitems', img.file)
})
$.ajax({
enctype: 'multipart/form-data',
type: 'POST',
processData: false,
contentType: false,
url: location.href,
data: formData,
success: () => {
alert('操作成功');
location.href = '/QzBusiness/ListInfo'
}
})
}
</script>
}