353 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			HTML
		
	
	
			
		
		
	
	
			353 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			HTML
		
	
	
| {layout name="layout2" /}
 | ||
| <div class="file-manager">
 | ||
|     <div id="cate-tree-more" class="cate-tree-more" style="width: 200px"></div>
 | ||
|     <div class="gallery">
 | ||
|         <div class="layui-card" style="box-shadow:none;">
 | ||
|             <div class="layui-card-header">
 | ||
|                 <button type="button" class="layui-btn layui-btn layui-btn-sm layui-btn-normal layEvent" lay-event="addCate"><i class="layui-icon layui-icon-add-circle"></i> 添加分类</button>
 | ||
|                 <button type="button" class="layui-btn layui-btn layui-btn-sm layui-btn-normal" id="upload">
 | ||
|                     <i class="layui-icon layui-icon-upload"></i> {if $type == 10}上传图片{elseif $type == 20}上传视频{else/}上传文件{/if}
 | ||
|                 </button>
 | ||
|                 <button type="button" class="layui-btn layui-btn layui-btn-sm layEvent layui-btn layui-btn-warm" lay-event="move" style="margin-left:5px;"><i class="layui-icon layui-icon-water"></i>  移动分类</button>
 | ||
|                 <button type="button" class="layui-btn layui-btn layui-btn-sm layEvent layui-btn layui-btn-danger" lay-event="del"><i class="layui-icon layui-icon-delete"></i>  删除文件</button>
 | ||
|             </div>
 | ||
|             <div class="layui-card-body">
 | ||
|                 <script id="manager" type="text/html">
 | ||
|                     <ul class="warehouse">
 | ||
|                         {{#  layui.each(d, function(index, item){ }}
 | ||
|                             <li lay-id="{{item.id}}" lay-href="{{item.uri}}">
 | ||
|                                 <div class="file-icon"><img class="file-image" src="{{item.uri}}"></div>
 | ||
|                                 <div class="file-name"><a href="javascript:">{{item.name}}</a></div>
 | ||
|                             </li>
 | ||
|                         {{#  }); }}
 | ||
|                     </ul>
 | ||
|                     {{#  if(d.length === 0){ }}
 | ||
|                         <div class="empty">
 | ||
|                             <i class="layui-icon layui-icon-release" style=""></i>
 | ||
|                             <p>木有数据,请去上传</p>
 | ||
|                         </div>
 | ||
|                     {{#  } }}
 | ||
|                 </script>
 | ||
|                 <div id="view"></div>
 | ||
|                 <input type="hidden" id="fileUrl" value="">
 | ||
|             </div>
 | ||
|         </div>
 | ||
|         <div style="height:55px;"></div>
 | ||
|         <div class="footer">
 | ||
|             <button type="button" id="okFile" class="layui-btn layui-btn layui-btn-sm layui-btn-normal">使用选中文件</button>
 | ||
|             <div id="page"></div>
 | ||
|         </div>
 | ||
|     </div>
 | ||
| </div>
 | ||
| 
 | ||
| <script>
 | ||
|     layui.use(["form", "element", "tree", "laytpl", "laypage", "upload"], function() {
 | ||
|         var $ = layui.jquery;
 | ||
|         var tree     = layui.tree;
 | ||
|         var laytpl   = layui.laytpl;
 | ||
|         var laypage  = layui.laypage;
 | ||
|         var upload   = layui.upload;
 | ||
|         var category = JSON.parse('{$category|raw}');
 | ||
|         var curCid   = 0;
 | ||
| 
 | ||
|         var uploadIns = upload.render({
 | ||
|             elem: "#upload"
 | ||
|             ,url: "{:url('Upload/image')}"
 | ||
|             ,accept: "images"
 | ||
|             ,exts: "jpg|png|gif|bmp|jpeg|ico"
 | ||
|             ,size: 4096
 | ||
|             ,data : {
 | ||
|                 "cid": curCid, 
 | ||
|                 "type": "{$type}"
 | ||
|             }
 | ||
|             ,number: 20
 | ||
|             ,multiple: true
 | ||
|             ,done: function (res) {
 | ||
|                 if (res.code === 1) {
 | ||
|                     var li  = "<li lay-id='"+res.data.id+"' lay-href='"+res.data.uri+"'>\n";
 | ||
|                         li += "<div class='file-icon'><img class='file-image' src='"+res.data.uri+"'></div>\n"
 | ||
|                         li += "<div class='file-name'><a href='javascript:'>"+res.data.name+"</a></div>\n";
 | ||
|                         li += "</li>"
 | ||
|                     $(".warehouse").prepend(li)
 | ||
|                 }
 | ||
| 
 | ||
|                 layer.msg(res.msg);
 | ||
|             }
 | ||
|         });
 | ||
| 
 | ||
|         var active = {
 | ||
|             getFile: function (cid, page) {
 | ||
|                 cid = cid === undefined ? 0 : cid;
 | ||
|                 page = page === undefined ? 1 : page;
 | ||
|                 var data = {cid:cid, page:page, type: "{$type}"};
 | ||
|                 var index = layer.load(1, {shade: false});
 | ||
|                 like.ajax({
 | ||
|                     url: "{:url('File/lists')}",
 | ||
|                     type: "GET",
 | ||
|                     data: data,
 | ||
|                     success:function(res) {
 | ||
|                         layer.close(index);
 | ||
|                         if(res.code === 1) {
 | ||
|                             active.renderList(res.data.data);
 | ||
|                             laypage.render({
 | ||
|                                 elem: "page"
 | ||
|                                 ,count: res.data.total
 | ||
|                                 ,curr: res.data.current_page
 | ||
|                                 ,limit: res.data.per_page
 | ||
|                                 ,last: res.data.last_page
 | ||
|                                 ,jump: function (obj, first) {
 | ||
|                                     if (!first) {
 | ||
|                                         active.getFile(cid, obj.curr)
 | ||
|                                     }
 | ||
|                                 }
 | ||
|                             });
 | ||
|                         }
 | ||
|                     }
 | ||
|                 });
 | ||
|             },
 | ||
|             renderList: function(data) {
 | ||
|                 var getTpl = document.getElementById("manager").innerHTML;
 | ||
|                 var view   = document.getElementById('view');
 | ||
|                 laytpl(getTpl).render(data, function(html){
 | ||
|                     view.innerHTML = html;
 | ||
|                 });
 | ||
|             },
 | ||
|             getChoice: function() {
 | ||
|                 var ids  = [];
 | ||
|                 var href = [];
 | ||
|                 $(".warehouse li.on").each(function () {
 | ||
|                     ids.push($(this).attr("lay-id"));
 | ||
|                     href.push($(this).attr("lay-href"));
 | ||
|                 });
 | ||
| 
 | ||
|                 return {ids:ids, href:href}
 | ||
|             },
 | ||
|             move: function () {
 | ||
|                 var fileData = active.getChoice();
 | ||
|                 if (fileData.ids.length === 0) {
 | ||
|                     layer.msg("尚未选择任何文件");
 | ||
|                     return false;
 | ||
|                 }
 | ||
|                 layer.open({
 | ||
|                     type: 2
 | ||
|                     ,title: "移动文件"
 | ||
|                     ,content: "{:url('File/move')}?type={$type}"
 | ||
|                     ,area: ["400px", "440px"]
 | ||
|                     ,btn: ["确定", "取消"]
 | ||
|                     ,yes: function(index, layero){
 | ||
|                         var iframeWindow = window["layui-layer-iframe" + index];
 | ||
|                         var submit = layero.find("iframe").contents().find("#addSubmit");
 | ||
|                         iframeWindow.layui.form.on("submit(addSubmit)", function(data){
 | ||
|                             data.field["file_ids"] = fileData.ids;
 | ||
|                             data.field["type"] = "{$type}";
 | ||
|                             like.ajax({
 | ||
|                                 url: "{:url('File/move')}",
 | ||
|                                 data: data.field,
 | ||
|                                 type: "POST",
 | ||
|                                 success:function(res) {
 | ||
|                                     if(res.code === 1) {
 | ||
|                                         // if (data.field['cid'] !== '0') {
 | ||
|                                         //     $(".warehouse li.on").remove();
 | ||
|                                         // }
 | ||
|                                         active.getFile(curCid, 1);
 | ||
|                                         layui.layer.msg(res.msg);
 | ||
|                                         layer.close(index);
 | ||
|                                     }
 | ||
|                                 }
 | ||
|                             });
 | ||
|                         });
 | ||
|                         submit.trigger("click");
 | ||
|                         return false;
 | ||
|                     }
 | ||
|                 });
 | ||
|             },
 | ||
|             del: function () {
 | ||
|                 var fileData = active.getChoice();
 | ||
|                 if (fileData.ids.length === 0) {
 | ||
|                     layer.msg("尚未选择任何文件");
 | ||
|                     return false;
 | ||
|                 }
 | ||
|                 layer.confirm('确定删除所选文件?', function(index){
 | ||
|                     like.ajax({
 | ||
|                         url: "{:url('File/del')}",
 | ||
|                         data: {file_ids: fileData.ids, type: '{$type}'},
 | ||
|                         type: "POST",
 | ||
|                         success:function(res) {
 | ||
|                             console.log(res)
 | ||
|                             if(res.code === 1) {
 | ||
|                                 active.getFile(curCid, 1);
 | ||
|                                 layui.layer.msg(res.msg);
 | ||
|                             }
 | ||
|                         }
 | ||
|                     });
 | ||
|                     layer.close(index);
 | ||
|                 });
 | ||
| 
 | ||
|             },
 | ||
|             addCate: function () {
 | ||
|                 layer.open({
 | ||
|                     type: 2
 | ||
|                     ,title: "新增分类"
 | ||
|                     ,content: "{:url('File/addCate')}"
 | ||
|                     ,area: ["400px", "400px"]
 | ||
|                     ,btn: ["确定", "取消"]
 | ||
|                     ,yes: function(index, layero){
 | ||
|                         var iframeWindow = window["layui-layer-iframe" + index];
 | ||
|                         var submit = layero.find("iframe").contents().find("#addSubmit");
 | ||
|                         iframeWindow.layui.form.on("submit(addSubmit)", function(data){
 | ||
|                             data.field["type"] = "{$type}";
 | ||
|                             like.ajax({
 | ||
|                                 url: "{:url('File/addCate')}",
 | ||
|                                 data: data.field,
 | ||
|                                 type: "POST",
 | ||
|                                 success:function(res) {
 | ||
|                                     if(res.code === 1) {
 | ||
|                                         category = res.data;
 | ||
|                                         active.renderTree();
 | ||
|                                         layui.layer.msg(res.msg);
 | ||
|                                         layer.close(index);
 | ||
|                                     }
 | ||
|                                 }
 | ||
|                             });
 | ||
|                         });
 | ||
|                         submit.trigger("click");
 | ||
|                     }
 | ||
|                 });
 | ||
|             },
 | ||
|             editCate: function (obj) {
 | ||
|                 if (obj.data.id === 0) {
 | ||
|                     layer.msg("此分类不允许编辑", {icon: 2});
 | ||
|                     return false;
 | ||
|                 }
 | ||
|                 layer.open({
 | ||
|                     type: 2
 | ||
|                     ,title: "编辑分类"
 | ||
|                     ,content: "{:url('File/editCate')}?id="+ obj.data.id + '&&type={$type}&&shop_id=0'
 | ||
|                     ,area: ["400px", "400px"]
 | ||
|                     ,btn: ["确定", "取消"]
 | ||
|                     ,yes: function(index, layero){
 | ||
|                         var iframeWindow = window["layui-layer-iframe" + index];
 | ||
|                         var submit = layero.find("iframe").contents().find("#addSubmit");
 | ||
|                         iframeWindow.layui.form.on("submit(addSubmit)", function(data){
 | ||
|                             data.field['id'] = obj.data.id;
 | ||
|                             data.field["type"] = "{$type}";
 | ||
|                             like.ajax({
 | ||
|                                 url: "{:url('File/editCate')}",
 | ||
|                                 data: data.field,
 | ||
|                                 type: "POST",
 | ||
|                                 success:function(res) {
 | ||
|                                     if(res.code === 1) {
 | ||
|                                         category = res.data;
 | ||
|                                         active.renderTree();
 | ||
|                                         layui.layer.msg(res.msg);
 | ||
|                                         layer.close(index);
 | ||
|                                     }
 | ||
|                                 }
 | ||
|                             });
 | ||
|                         });
 | ||
|                         submit.trigger("click");
 | ||
|                         return false;
 | ||
|                     }
 | ||
|                 });
 | ||
|             },
 | ||
|             delCate: function(obj) {
 | ||
|                 if (obj.data.id === 0) {
 | ||
|                     layer.msg("此分类不允许删除", {icon: 2});
 | ||
|                     return false;
 | ||
|                 }
 | ||
|                 like.ajax({
 | ||
|                     url: "{:url('File/delCate')}",
 | ||
|                     data: {id: obj.data.id, type: "{$type}"},
 | ||
|                     type: "POST",
 | ||
|                     success:function(res) {
 | ||
|                         if(res.code === 1) {
 | ||
|                             category = res.data;
 | ||
|                             active.renderTree();
 | ||
|                             layui.layer.msg(res.msg);
 | ||
|                         }else{
 | ||
|                             category = res.data;
 | ||
|                             active.renderTree();
 | ||
|                         }
 | ||
|                     }
 | ||
|                 });
 | ||
|             },
 | ||
|             renderTree: function () {
 | ||
|                 tree.render({
 | ||
|                     elem: '#cate-tree-more'
 | ||
|                     ,edit: ['update', 'del']
 | ||
|                     ,customOperate: false
 | ||
|                     ,onlyIconControl:true
 | ||
|                     ,data: category
 | ||
|                     ,click: function (obj) {
 | ||
|                         // 节点被点击
 | ||
|                         var cid = obj.data.id;
 | ||
|                         var page = 1;
 | ||
|                         curCid = cid;
 | ||
|                         active.getFile(cid, page);
 | ||
|                         uploadIns.reload({
 | ||
|                             elem: "#upload"
 | ||
|                             ,url: "{:url('Upload/image')}"
 | ||
|                             ,data : {
 | ||
|                                 "cid": curCid, 
 | ||
|                                 "type": "{$type}"
 | ||
|                             }
 | ||
|                         });
 | ||
|                     }
 | ||
|                     ,operate: function(obj){
 | ||
|                         switch (obj.type) {
 | ||
|                             case "update":
 | ||
|                                 active.editCate(obj);
 | ||
|                                 break;
 | ||
|                             case "del":
 | ||
|                                 active.delCate(obj);
 | ||
|                                 break;
 | ||
|                         }
 | ||
|                     }
 | ||
|                 });
 | ||
|             }
 | ||
|         };
 | ||
| 
 | ||
|         like.eventClick(active);
 | ||
|         active.renderTree();
 | ||
|         active.getFile();
 | ||
| 
 | ||
|         var globalUrls = [];
 | ||
| 
 | ||
|         $(document).on("click", ".warehouse li", function () {
 | ||
| 
 | ||
|             var isExist = $.inArray($(this).attr("lay-href"), globalUrls);
 | ||
|             if (isExist >= 0){
 | ||
|                 globalUrls.splice(isExist, 1);
 | ||
|             } else {
 | ||
|                 globalUrls.push($(this).attr("lay-href"));
 | ||
|             }
 | ||
| 
 | ||
|             if ($(this).hasClass("on")) {
 | ||
|                 $(this).removeClass("on");
 | ||
|             } else {
 | ||
|                 $(this).addClass("on");
 | ||
|             }
 | ||
|             $('#fileUrl').val(globalUrls.join(','));
 | ||
|         });
 | ||
| 
 | ||
| 
 | ||
|         // 选择图片(用于富文本的图片选择)
 | ||
|         // Author: 张无忌
 | ||
|         $("#okFile").click(function () {
 | ||
|             // var urls = [];
 | ||
|             // $(".warehouse li.on").each(function () {
 | ||
|             //     urls.push($(this).attr("lay-href"));
 | ||
|             // });
 | ||
| 
 | ||
|             if (globalUrls.length <= 0) {
 | ||
|                 parent.layer.msg("请至少选择一张图片");
 | ||
|                 return false;
 | ||
|             }
 | ||
| 
 | ||
|             var index = parent.layer.getFrameIndex(window.name);
 | ||
|             parent.layer.close(index);
 | ||
|             parent.window.callback && parent.window.callback(globalUrls.reverse());
 | ||
|         });
 | ||
| 
 | ||
|     })
 | ||
| </script> |