fileList.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  6. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  7. <title>文件管理</title>
  8. <link rel="stylesheet" href="../../assets/libs/layui/css/layui.css"/>
  9. <link rel="stylesheet" href="../../assets/module/admin.css?v=315"/>
  10. <link rel="stylesheet" href="../../../assets/module/icon/icon.css" media="all">
  11. <link rel="stylesheet" href="../../../assets/module/icon/font-awesome-4.7.0/css/font-awesome.min.css" media="all">
  12. <!--[if lt IE 9]>
  13. <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
  14. <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
  15. <![endif]-->
  16. <style>
  17. /** 未展开 */
  18. .treeTable-icon .layui-icon-layer:before {
  19. content: "\e638";
  20. }
  21. /** 展开 */
  22. .treeTable-icon.open .layui-icon-layer:before {
  23. content: "\e638";
  24. }
  25. .treeTable-icon .layui-icon-file:before {
  26. content: "";
  27. }
  28. </style>
  29. </head>
  30. <body>
  31. <!-- 加载动画 -->
  32. <div class="page-loading">
  33. <div class="ball-loader">
  34. <span></span><span></span><span></span><span></span>
  35. </div>
  36. </div>
  37. <!-- 正文开始 -->
  38. <div class="layui-fluid">
  39. <!-- <div class="layui-card">-->
  40. <!-- <div class="layui-card-body layui-text" style="color: #333;">-->
  41. <!-- 以下是静态页面,后台集成示例参考-->
  42. <!-- <a href="https://gitee.com/whvse/easy-fs" target="_blank">获取源码</a>-->
  43. <!-- </div>-->
  44. <!-- </div>-->
  45. <div class="layui-card">
  46. <div class="layui-card-header">当前位置:<span id="tv-current-position">/</span></div>
  47. <input type="hidden" name="fileId" id="fileId">
  48. <input type="hidden" name="pId" id="pId">
  49. <input type="hidden" name="pathId" id="pathId">
  50. <div class="layui-card-body">
  51. <div>
  52. <button id="file-btn-back" class="layui-btn layui-btn-sm layui-btn-primary icon-btn">
  53. <i class="layui-icon">&#xe65c;</i>返回上级
  54. </button>
  55. <button id="file-btn-refresh" class="layui-btn layui-btn-sm layui-btn-primary icon-btn">
  56. <i class="layui-icon">&#xe669;</i>刷新
  57. </button>
  58. <button id="file-btn-upload" class="layui-btn layui-btn-sm layui-btn-normal icon-btn">
  59. <i class="layui-icon">&#xe681;</i>上传文件
  60. </button>
  61. <button id="file-btn-add" class="layui-btn layui-btn-sm layui-btn-normal icon-btn"
  62. style="margin-left: 10px;">
  63. 📂创建文件夹
  64. </button>
  65. </div>
  66. <div id="file-list-group">
  67. <table class="layui-table" lay-size="sm" id="datatable" lay-filter="datatable"></table>
  68. </div>
  69. </div>
  70. </div>
  71. </div>
  72. <!-- js部分 -->
  73. <script type="text/javascript" src="../../assets/libs/layui/layui.js"></script>
  74. <script type="text/javascript" src="../../assets/js/common.js?v=315"></script>
  75. <script type="text/javascript" src="../../assets/libs/jsonpath/jsonpath.js"></script>
  76. </body>
  77. <script>
  78. layui.use(['jquery', 'layer', 'element', 'upload', 'admin', 'util', 'form', 'uParas', 'treetable'], function () {
  79. var $ = layui.jquery;
  80. var layer = layui.layer;
  81. var element = layui.element;
  82. var form = layui.form;
  83. var upload = layui.upload;
  84. var admin = layui.admin;
  85. var util = layui.util;
  86. var uParas = layui.uParas;
  87. var treetable = layui.treetable;
  88. var dataList = [];
  89. var dirType = uParas.getUrlParam("dirType");
  90. //上传
  91. var uploadFile = upload.render({
  92. elem: '#file-btn-upload', //绑定元素
  93. url: uParas.baseUrl + '/admin/uploadFile', //上传接口
  94. accept: 'file',
  95. //acceptMime: 'image/jpg,image/png,image/gif,image/jpeg,image/bmp,image/tga,image/fpx,image/raw,',
  96. // size: 30720,
  97. done: function (response) {
  98. response.data.fileId = $("#fileId").val();
  99. $.post(uParas.baseUrl + '/ent/bucket/addBucketFile', response.data, function (res) {
  100. renderList($("#fileId").val(), $("#pId").val());
  101. }, 'json');
  102. }, error: function () {
  103. }
  104. });
  105. $('#file-btn-refresh').click(function () {
  106. if ($("#fileId").val() == "") {
  107. renderList();
  108. } else {
  109. renderList($("#fileId").val(), $("#pId").val());
  110. }
  111. });
  112. // 返回上级
  113. $('#file-btn-back').click(function () {
  114. var pid = $("#pId").val();
  115. var fileId = $("#fileId").val();
  116. console.log("pid->" + pid)
  117. console.log("fileId->" + fileId)
  118. if (pid != undefined && pid != "" && pid != "-1") {
  119. $.getJSON(uParas.baseUrl + '/ent/bucket/getBucketOne', {fileId: pid}, function (resp) {
  120. renderList(resp.data.fileId, resp.data.parentDirId);
  121. });
  122. } else {
  123. renderList("", "-1");
  124. $("#tv-current-position").html('');
  125. }
  126. });
  127. $('#file-btn-add').click(function () {
  128. admin.open({
  129. type: 1,
  130. title: '创建文件夹',
  131. content: $('#addBucket').html(),
  132. success: function (layero, dIndex) {
  133. // 表单的操作,事件绑定等都写在success回调里面
  134. form.on('submit(modelSubmitBucket)', function (data) {
  135. layer.load();
  136. console.log(data);
  137. data.field.fileId = $("#fileId").val();
  138. var url = uParas.baseUrl + '/ent/bucket/addBucket';
  139. admin.req(url, data.field, function (resp) {
  140. layer.closeAll('loading');
  141. if (resp.code == 1) {
  142. layer.close(dIndex);
  143. layer.msg(resp.msg);
  144. renderList($("#fileId").val(), $("#pId").val());
  145. } else {
  146. layer.msg(resp.msg);
  147. }
  148. }, 'POST');
  149. return false;
  150. });
  151. }
  152. });
  153. });
  154. $.extend(window, {
  155. renderList: function (fileId, pid) {
  156. var insTb = treetable.render({
  157. url: uParas.baseUrl + '/ent/bucket/getBucketTree',
  158. treeColIndex: 1,
  159. treeSpid: pid == null || pid == undefined || pid == "" ? "-1" : pid,
  160. treeIdName: 'fileId',
  161. treePidName: 'parentDirId',
  162. elem: '#datatable',
  163. treeDefaultClose: fileId == null || fileId == undefined || fileId == "" ? true : false,
  164. cellMinWidth: 100,
  165. where: {fileId: fileId, dirType: dirType},
  166. cols: [[
  167. {type: 'numbers', title: '序号'},
  168. {field: 'fileName', sort: false, title: '名称', minWidth: 100},
  169. {
  170. field: 'fileName', sort: false, title: '类型', templet: function (d) {
  171. if (d.typeId == 1) {
  172. if (d.mimeType.indexOf('image/') !== -1) {
  173. return "<a href='javascript:;' onclick=\"openImage('" + d.fileUrl + "')\" ><i class=\"fa fa-file-picture-o\"></i></a>";
  174. } else if (d.mimeType.indexOf('application/zip') !== -1) {
  175. return "<a href=\"" + d.fileUrl + "\"><i class=\"fa fa-file-zip-o\"></i></a>";
  176. } else if (d.mimeType.indexOf('application/x-rar') !== -1) {
  177. return "<a href=\"" + d.fileUrl + "\"><i class=\"fa fa-file-zip-o\"></i></a>";
  178. } else if (d.fileExt === 'xlsx' || d.fileExt === 'xls') {
  179. return "<a href=\"" + d.fileUrl + "\"><i class=\"fa fa-file-excel-o\"></i></a>";
  180. } else if (d.fileExt === 'pptx' || d.fileExt === 'ppt') {
  181. return "<a href=\"" + d.fileUrl + "\"><i class=\"fa fa-file-powerpoint-o\"></i></a>";
  182. } else if (d.fileExt === 'docx' || d.fileExt === 'doc') {
  183. return "<a href=\"" + d.fileUrl + "\"><i class=\"fa fa-file-word-o\"></i></a>";
  184. } else if (d.fileExt === 'pdf') {
  185. return "<a href=\"" + d.fileUrl + "\"><i class=\"fa fa-file-pdf-o\"></i></a>";
  186. } else {
  187. return "<a href=\"" + d.fileUrl + "\"><i class=\"fa fa-file-o\"></i></a>";
  188. }
  189. } else {
  190. return "<i class=\"fa fa-folder\"></i>";
  191. }
  192. }
  193. },
  194. {field: 'createdAt', sort: false, title: '创建时间', minWidth: 100},
  195. {
  196. align: 'left', title: '操作', templet: function (d) {
  197. var htmlStr = ``;
  198. if (d.typeId == 0) {
  199. htmlStr += `<a class="layui-btn layui-btn-xs" onclick="renderList('${d.fileId}','${d.parentDirId}')">查看</a>`;
  200. htmlStr += `<a class="layui-btn layui-btn-primary layui-btn-xs" onclick="editBucket('${d.fileName}','${d.fileId}')">修改</a>`;
  201. }
  202. htmlStr += `<a class="layui-btn layui-btn-danger layui-btn-xs" onclick="delBucket('${d.fileId}')">删除</a>`;
  203. return htmlStr;
  204. }
  205. }
  206. ]], done: function (res, curr, count) {
  207. var name = '';
  208. if (pid != undefined && fileId != undefined) {
  209. if (pid == "-1") {
  210. $("#fileId").val(fileId);
  211. $("#pId").val("-1");
  212. } else {
  213. $("#fileId").val(fileId);
  214. $("#pId").val(pid);
  215. }
  216. var obj = {};
  217. if (pid == -1) {
  218. obj.fileId = fileId;
  219. } else {
  220. obj.fileId = pid;
  221. }
  222. if (obj.fileId != "") {
  223. name = jsonPath(res, "$.data[?(@.fileId==" + fileId + ")]") ? jsonPath(res, "$.data[?(@.fileId==" + fileId + ")]")[0].fileName : "";
  224. if (pid == -1) {
  225. name = '';
  226. }
  227. $.getJSON(uParas.baseUrl + '/ent/bucket/getBucketOne', obj, function (resp) {
  228. $("#tv-current-position").html(resp.data.fileName + "/" + name)
  229. });
  230. }
  231. }
  232. if (dirType != null && dirType != undefined) {
  233. var jsonData = jsonPath(res, "$.data[?(@.fileMark=='" + dirType + "')]");
  234. console.log(jsonData)
  235. if (jsonData) {
  236. $("#fileId").val(jsonData[0].fileId);
  237. $("#pId").val(jsonData[0].parentDirId);
  238. }
  239. }
  240. }
  241. });
  242. },
  243. editBucket: function (name, fileId) {
  244. admin.open({
  245. type: 1,
  246. title: '修改文件夹',
  247. content: $('#addBucket').html(),
  248. success: function (layero, dIndex) {
  249. $("#fileName").val(name);
  250. form.on('submit(modelSubmitBucket)', function (data) {
  251. layer.load();
  252. data.field.fileId = fileId;
  253. var url = uParas.baseUrl + '/ent/bucket/editBucket';
  254. admin.req(url, data.field, function (resp) {
  255. layer.closeAll('loading');
  256. if (resp.code == 1) {
  257. layer.close(dIndex);
  258. layer.msg(resp.msg);
  259. renderList($("#fileId").val(), $("#pId").val());
  260. } else {
  261. layer.msg(resp.msg);
  262. }
  263. }, 'POST');
  264. return false;
  265. });
  266. }
  267. });
  268. },
  269. delBucket: function (fileId) {
  270. layer.confirm('确定要删除吗?', {
  271. skin: 'layui-layer-admin',
  272. shade: .1
  273. }, function (i) {
  274. layer.close(i);
  275. layer.load();
  276. var url = uParas.baseUrl + '/ent/bucket/delBucketFile';
  277. admin.req(url, {"fileId": fileId}, function (resp) {
  278. layer.closeAll('loading');
  279. if (resp.code == 1) {
  280. layer.msg(resp.msg, {time: 1000});
  281. setTimeout(function () {
  282. renderList($("#fileId").val(), $("#pId").val());
  283. }, "1000");
  284. }
  285. }, 'post');
  286. });
  287. }, openImage: function (src) {
  288. console.log(src);
  289. uParas.openImage(src);
  290. }
  291. });
  292. renderList();
  293. });
  294. </script>
  295. <script type="text/html" id="addBucket">
  296. <form id="bucketForm" lay-filter="bucketForm" class="layui-form model-form no-padding">
  297. <div class="model-form-body" style="max-height: 320px;">
  298. <div class="layui-form-item">
  299. <label class="layui-form-label">名称</label>
  300. <div class="layui-input-block">
  301. <input name="fileName" id="fileName" class="layui-input"/>
  302. </div>
  303. </div>
  304. </div>
  305. <div class="layui-form-item text-right model-form-footer">
  306. <button class="layui-btn layui-btn-primary" type="button" ew-event="closePageDialog">取消</button>
  307. <button class="layui-btn" lay-filter="modelSubmitBucket" lay-submit>保存</button>
  308. </div>
  309. </form>
  310. </script>
  311. </html>