223 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			223 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| layui.use(['form', 'jquery'], function () {
 | ||
|     let form = layui.form;
 | ||
|     let $ = layui.jquery;
 | ||
|     let layer = layui.layer;
 | ||
|     let upload = layui.upload;
 | ||
|     let element = layui.element;
 | ||
|     let util = layui.util;
 | ||
| 
 | ||
|     var suffix = '_logo';
 | ||
|     var imgPath = $('#upload_img_input_logo').val();
 | ||
| 
 | ||
|     setImgInfo(imgPath);
 | ||
|     preview();
 | ||
|     removeImg();
 | ||
|     uploadFn();
 | ||
|     bindRemove();
 | ||
| 
 | ||
|     // 设置图片信息
 | ||
|     function setImgInfo(url) {
 | ||
|         if (url === '/statics/admin/images/avatar.jpg') {
 | ||
|             $('#upload_img_preview' + suffix).attr('src', url);
 | ||
|         } else {
 | ||
|             $('#upload_img_preview' + suffix).attr('src', url);
 | ||
|         }
 | ||
|         if (url === '') {
 | ||
|             $('#upload_img_preview' + suffix).hide();
 | ||
|         } else {
 | ||
|             $('#upload_img_preview' + suffix).show();
 | ||
|         }
 | ||
|         $('#upload_img_input_logo').val(url);
 | ||
|     }
 | ||
| 
 | ||
|     // 删除
 | ||
|     function removeImg() {
 | ||
|         $('#upload_img_remove' + suffix).unbind('click').click(function () {
 | ||
|             $('#upload_img_preview' + suffix).attr({ src: '', alt: '暂无图片' });
 | ||
|             $('#upload_img_input_logo').val('');
 | ||
|         });
 | ||
|     }
 | ||
| 
 | ||
|     // 图片预览
 | ||
|     function preview() {
 | ||
|         $('#upload_img_preview' + suffix).unbind('click').click(function () {
 | ||
|             var url = $(this).attr('src')
 | ||
|             if (!url) { return false; }
 | ||
| 
 | ||
|             layer.photos({
 | ||
|                 photos: {
 | ||
|                     "title": url,
 | ||
|                     "start": 0,
 | ||
|                     "data": [
 | ||
|                         {
 | ||
|                             "alt": "",
 | ||
|                             "pid": 5,
 | ||
|                             "src": url,
 | ||
|                         }
 | ||
|                     ]
 | ||
|                 },
 | ||
|                 footer: false
 | ||
|             });
 | ||
|         });
 | ||
|     }
 | ||
| 
 | ||
|     // 设置文件集
 | ||
|     function setFiles(data) {
 | ||
|         var html = '';
 | ||
|         var val = '';
 | ||
|         for (var i = 0; i < data.length; i++) {
 | ||
|             var item = data[i];
 | ||
|             var d = item.name + `|` + item.path;
 | ||
|             var li = `<div class="upload-line">
 | ||
|                             <span class="op">
 | ||
|                                 <a href="javascript:;" data-path=` + d + ` class="layui-btn layui-btn-danger layui-btn-xs remove_file">删除</a>
 | ||
|                                 <a href="`+ item.path + `" target="_blank" style="margin-left: 2px;" class="layui-btn layui-btn-xs">下载</a>
 | ||
|                             </span>
 | ||
|                             <span class="name"><label>名称: </label>`+ item.name + `</span>
 | ||
|                             <span class="url"><label>URL: </label>`+ item.path + `</span>
 | ||
|                         </div>`;
 | ||
|             html += li;
 | ||
| 
 | ||
|             val += d + ",";
 | ||
|         }
 | ||
|         $('#mutil_upload_res_list').append(html);
 | ||
|         var $doc = $('input[name="Paths"]');
 | ||
|         if ($doc.val() != '') {
 | ||
|             val = $doc.val() + val;
 | ||
|         }
 | ||
|         $('#post_field').html(`<input type="hidden" name="Paths" value="` + val + `">`);
 | ||
|         bindRemove();
 | ||
|     }
 | ||
| 
 | ||
|     function bindRemove() {
 | ||
|         $('.remove_file').unbind('click').click(function () {
 | ||
|             var path = $(this).data('path');
 | ||
|             var $doc = $('input[name="Paths"]');
 | ||
|             let paths = $doc.val();
 | ||
|             $doc.val(paths.replace(path, ""));
 | ||
|             $(this).parent().parent().remove();
 | ||
|         });
 | ||
|     }
 | ||
| 
 | ||
|     // 上传
 | ||
|     function uploadFn() {
 | ||
|         var uploadInst = upload.render({
 | ||
|             elem: '#upload_img_btn' + suffix,
 | ||
|             url: '/upload/img',
 | ||
|             headers: { 'X-CSRF-Token': $('#csrf_token').val() },
 | ||
|             field: 'files',
 | ||
|             accept: 'file', //允许上传的文件类型
 | ||
|             before: function (obj) {
 | ||
|                 // 预读本地文件示例,不支持ie8
 | ||
|                 obj.preview(function (index, file, result) {
 | ||
|                     $('#upload_img_preview' + suffix).attr('src', result); // 图片链接(base64)
 | ||
|                 });
 | ||
|                 element.progress('upload_img_progress' + suffix, '0%'); // 进度条复位
 | ||
|                 layer.msg('上传中', { icon: 16, time: 0 });
 | ||
|             },
 | ||
|             done: function (res) {
 | ||
|                 // 若上传失败
 | ||
|                 if (!res.success) {
 | ||
|                     return layer.msg('上传失败:' + res.errorMsg);
 | ||
|                 }
 | ||
|                 // 上传成功的一些操作
 | ||
|                 // …
 | ||
|                 $('#upload_img_tips' + suffix).html(''); // 置空上传失败的状态
 | ||
|                 setImgInfo(res.data);
 | ||
|                 removeImg();
 | ||
|             },
 | ||
|             error: function () {
 | ||
|                 // 失败状态,并实现重传
 | ||
|                 var $tips = $('#upload_img_tips' + suffix);
 | ||
|                 $tips.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
 | ||
|                 $tips.find('.demo-reload').on('click', function () {
 | ||
|                     uploadInst.upload();
 | ||
|                 });
 | ||
|             },
 | ||
|             // 进度条
 | ||
|             progress: function (n, elem, e) {
 | ||
|                 element.progress('upload_img_progress' + suffix, n + '%'); // 可配合 layui 进度条元素使用
 | ||
|                 if (n == 100) {
 | ||
|                     layer.msg('上传完毕', { icon: 1 });
 | ||
|                 }
 | ||
|             }
 | ||
|         });
 | ||
| 
 | ||
|         var uploadFiles = upload.render({
 | ||
|             elem: '#upload_img_btn_file',
 | ||
|             url: '/upload/file',
 | ||
|             headers: { 'X-CSRF-Token': $('#csrf_token').val() },
 | ||
|             field: 'files',
 | ||
|             accept: 'file', //允许上传的文件类型
 | ||
|             before: function (obj) {
 | ||
|                 element.progress('upload_img_progress' + suffix, '0%'); // 进度条复位
 | ||
|                 layer.msg('上传中', { icon: 16, time: 0 });
 | ||
|             },
 | ||
|             done: function (res) {
 | ||
|                 // 若上传失败
 | ||
|                 if (!res.success) {
 | ||
|                     return layer.msg('上传失败:' + res.errorMsg);
 | ||
|                 }
 | ||
|                 // 上传成功的一些操作
 | ||
|                 // …
 | ||
|                 $('#upload_img_tips' + suffix).html(''); // 置空上传失败的状态
 | ||
|                 setImgInfo(res.data);
 | ||
|                 removeImg();
 | ||
|             },
 | ||
|             error: function () {
 | ||
|                 // 失败状态,并实现重传
 | ||
|                 var $tips = $('#upload_img_tips' + suffix);
 | ||
|                 $tips.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
 | ||
|                 $tips.find('.demo-reload').on('click', function () {
 | ||
|                     uploadFiles.upload();
 | ||
|                 });
 | ||
|             },
 | ||
|             // 进度条
 | ||
|             progress: function (n, elem, e) {
 | ||
|                 element.progress('upload_img_progress' + suffix, n + '%'); // 可配合 layui 进度条元素使用
 | ||
|                 if (n == 100) {
 | ||
|                     layer.msg('上传完毕', { icon: 1 });
 | ||
|                 }
 | ||
|             }
 | ||
|         });
 | ||
| 
 | ||
|         var uploadMutilFiles = upload.render({
 | ||
|             elem: '#upload_multi_btn',
 | ||
|             url: '/upload/mutilfile',
 | ||
|             headers: { 'X-CSRF-Token': $('#csrf_token').val() },
 | ||
|             field: 'files',
 | ||
|             multiple: true,
 | ||
|             unified: true,
 | ||
|             accept: 'file', //允许上传的文件类型
 | ||
|             before: function (obj) {
 | ||
|                 element.progress('upload_mutil_progress' + suffix, '0%'); // 进度条复位
 | ||
|                 layer.msg('上传中', { icon: 16, time: 0 });
 | ||
|             },
 | ||
|             done: function (res) {
 | ||
|                 // 若上传失败
 | ||
|                 if (!res.success) {
 | ||
|                     return layer.msg('上传失败:' + res.errorMsg);
 | ||
|                 }
 | ||
|                 // 上传成功的一些操作
 | ||
|                 $('#upload_mutil_tips' + suffix).html(''); // 置空上传失败的状态
 | ||
|                 // 设置文件集
 | ||
|                 setFiles(res.data);
 | ||
|             },
 | ||
|             error: function () {
 | ||
|                 // 失败状态,并实现重传
 | ||
|                 var $tips = $('#upload_mutil_tips' + suffix);
 | ||
|                 $tips.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
 | ||
|                 $tips.find('.demo-reload').on('click', function () {
 | ||
|                     uploadMutilFiles.upload();
 | ||
|                 });
 | ||
|             },
 | ||
|             // 进度条
 | ||
|             progress: function (n, elem, e) {
 | ||
|                 element.progress('upload_mutil_progress' + suffix, n + '%'); // 可配合 layui 进度条元素使用
 | ||
|                 if (n == 100) {
 | ||
|                     layer.msg('上传完毕', { icon: 1 });
 | ||
|                 }
 | ||
|             }
 | ||
|         });
 | ||
|     }
 | ||
| }); |