var folderId = "1";//当前树所在文件夹目录的位置 var clickId = "";//右键选中的id var clickType = "";//右键选中的类型 var noteId = "";//当前页面打开的笔记id var searchTitle = "";//搜索框的值 var isNewNote = true;//默认打开最新笔记页面 var clipboard;//复制对象 var layedit; layui.config({ base: basePath, version: skyeyeVersion }).extend({ window: 'js/winui.window' }).define(['window', 'jquery', 'winui', 'dropdown', 'fsCommon', 'fsTree', 'viewer', 'contextMenu', 'flow', 'ClipboardJS'], function (exports) { winui.renderColor(); var $ = layui.jquery, fsTree = layui.fsTree, fsCommon = layui.fsCommon, flow = layui.flow, device = layui.device(); //模板对象 var folderchildlisetTemplate = $("#folderchildlisetTemplate").html(); matchingLanguage(); /********* tree 处理 start *************/ var ztree = null; fsTree.render({ id: "treeDemo", url: sysMainMation.noteBasePath + "queryFolderByUserId", checkEnable: false, dragEnable: true, loadEnable: true,//异步加载 showLine: false, showIcon: true, isDrag: true, addDiyDom: addDiyDom, clickCallback: zTreeOnClick, beforeRename: beforeRename, onRename: onRename, beforeDrag: beforeDrag, beforeDrop: beforeDrop, onRightClick: onRightClick, onDblClick: function(){ }, onAsyncSuccess: function(id){ var dropdown = new Dropdown(); dropdown.render(); } }, function(id){ ztree = $.fn.zTree.getZTreeObj(id); // 设置选中节点 chooseNodeSelect(folderId); // 展开我的文件夹节点 ztree.expandNode(ztree.getNodeByParam("id", '2', null)); }); function addDiyDom(treeId, treeNode) { //css样式以及位置调整 var spaceWidth = 18; var switchObj = $("#" + treeNode.tId + "_switch"), icoObj = $("#" + treeNode.tId + "_ico"); switchObj.remove(); icoObj.before(switchObj); if (treeNode.level >= 1) { var spaceStr = ""; switchObj.before(spaceStr); } var aObj = $("#" + treeNode.tId + "_a"); if ($("#diyBtn_" + treeNode.id).length > 0) return; aObj.after(""); aObj.addClass("tree_a"); }; /** * 树点击事件 */ function zTreeOnClick(event, treeId, treeNode) { if($("#editMyNote").hasClass('select')) { layer.confirm("存在未保存的内容,是否保存?", {icon: 3, title: '提醒'}, function (index) { layer.close(index); saveNoteMation(); treeOnClick(event, treeId, treeNode); }, function (index) { layer.close(index); treeOnClick(event, treeId, treeNode); }); } else { treeOnClick(event, treeId, treeNode); } } function treeOnClick(event, treeId, treeNode){ //如果当前点击的目录不是之前点击的目录 if(treeNode.id != folderId){ folderId = treeNode.id; $("#searchTitle").val(""); noteId = ""; isNewNote = false; showListById();//获取文件夹和笔记列表 } //展开 if(!treeNode.open){//如果节点不展开,则展开 ztree.expandNode(treeNode); } } function onRightClick(event, treeId, treeNode) { folderId = treeNode.id; // 设置右键节点选中 chooseNodeSelect(folderId); // '最新笔记'不展示右键菜单 if(folderId != '1'){ if(folderId === '2'){ showRMenu('root', event.clientX, event.clientY); } else { showRMenu('node', event.clientX, event.clientY); } } } function showRMenu(type, x, y) { $("#treeRight .is-file").show(); if(type == 'root'){ $("#treeRight .fileReName").hide(); $("#treeRight .treedeleteFolderAndChild").hide(); } $("#treeRight").show(); $("#treeRight").css({top: y + "px", left: x + "px", visibility: "visible", position: "absolute"}); $("body").bind("mousedown", onBodyMouseDown); } function hideRMenu() { if ($("#treeRight")) $("#treeRight").css({"visibility": "hidden"}); $("body").unbind("mousedown", onBodyMouseDown); } function onBodyMouseDown(event){ if (!($(event.target).parents(".is-file").length>0)) { $("#treeRight").css({"visibility" : "hidden"}); } } // 设置选中节点 function chooseNodeSelect(folderId){ var selNode = ztree.getNodeByParam("id", folderId, null); ztree.selectNode(selNode); } // 节点名称修改限制 function beforeRename(treeId,treeNode,newName,isCancel){ if(newName.length < 1){ winui.window.msg("节点名称不能为空", {icon: 2, time: 2000}); return false; } return true; } //编辑节点名称 function onRename(event, treeId, treeNode) { AjaxPostUtil.request({url: sysMainMation.noteBasePath + "editFileFolderById", params: {name: treeNode.name, fileType: 'folder', id: treeNode.id}, type: 'json', method: 'POST', callback: function (json) { winui.window.msg("保存成功", {icon: 1, time: 2000}); folderId = treeNode.id; showListById();//获取文件夹和笔记列表 }}); } /**移动节点前处理*/ function beforeDrag(treeId, treeNodes) { for (var i = 0, l = treeNodes.length; i < l; i++) { var pid = treeNodes[i].pId; if (pid == "0") { winui.window.msg("只能移动叶子节点。", {icon: 2, time: 2000}); return false; } } return true; } /**拖拽释放之后结束前执行*/ function beforeDrop(treeId, treeNodes, targetNode, moveType) { if(targetNode == null || targetNode == "undefined"){ return false; } var targetId = targetNode.id;//拖拽目标节点id if(targetId == "1"){ winui.window.msg("不能移动到该节点。", {icon: 2, time: 2000}); return false; } var arrId = new Array();//拖拽的节点id数组 for (var i = 0, l = treeNodes.length; i < l; i++) { var parentId = treeNodes[i].pId; if(parentId == targetId){ winui.window.msg("移动的节点已经在该节点下。", {icon: 2, time: 2000}); return false; } arrId[i] = treeNodes[i].id; } AjaxPostUtil.request({url: sysMainMation.noteBasePath + "mynote010", params: {targetId: targetId, arrId : arrId}, type: 'json', callback: function (json) { winui.window.msg("保存成功", {icon: 1, time: 2000}); noteId = ""; folderId = targetId; // 刷新节点 refreshTreePointNode(); // 设置选中节点 chooseNodeSelect(folderId); showListById();//获取文件夹和笔记列表 for(var i = 0, l = arrId.length; i < l; i++){ var selNode = ztree.getNodeByParam("id", arrId[i], null); ztree.removeNode(selNode);//移除节点 } }}); } /** ******* tree 处理 end ************ */ //刷新树指定节点 function refreshTreePointNode(){ //刷新节点 var nownode = ztree.getNodesByParam("id", folderId, null); ztree.reAsyncChildNodes(nownode[0], "refresh"); } //树的动画效果 $("body").on("mouseover", "#treeDemo a", function (e) { $("#treeDemo").find("a").removeClass('mouseOver'); $(this).addClass('mouseOver'); }); $("body").on("mouseleave", "#treeDemo", function (e) { $("#treeDemo").find("a").removeClass('mouseOver'); }); //文件夹子文件切换效果 $("body").on("click", "#folderChildList .folder-item", function (e) { var _this = $(this); if($("#editMyNote").hasClass('select')){ layer.confirm("存在未保存的内容,是否保存?", { icon: 3, title: '提醒' }, function (index) { layer.close(index); saveNoteMation(); loadNewDocument(_this); }, function (index) { layer.close(index); loadNewDocument(_this); }); } else { loadNewDocument(_this); } }); // 加载新的文件内容 function loadNewDocument(_this){ $("#folderChildList").find(".folder-item").removeClass("select"); _this.addClass('select'); var id = _this.attr("id"); var name = _this.attr("rowname"); var type = _this.attr("rowtype"); if(type == "folder"){ //显示无预览页面 $("#childframe").attr("src", "../../tpl/note/noteFolder.html"); $("#noteTitle").val(name);//给标题赋值 $(".note-operator").addClass("layui-hide");//隐藏保存按钮 noteId = ""; } else { if(noteId != id){ noteId = id;//当前选中列表的笔记id $("#noteTitle").val(name);//给标题赋值 // 移除可保存标识 $("#editMyNote").removeClass('select'); $(".note-operator").removeClass("layui-hide");//显示保存按钮 // 显示编辑器,隐藏无预览页面 loadHtml(type); } } } //文件夹子文件双击效果 $("body").on("dblclick", "#folderChildList .folder-item", function (e) { var id = $(this).attr("id"); var type = $(this).attr("rowtype"); if(type == "folder"){ noteId = ""; folderId = id; // 设置选中节点 chooseNodeSelect(folderId); ztree.expandNode(ztree.getNodeByParam("id", folderId, null));//展开 showListById();//获取文件夹和笔记列表 } }); //文件夹子文件右键效果 $("body").on("contextmenu", "#folderChildList .folder-item", function (e) { if(clickId != $(this).attr("id")){ clickId = $(this).attr("id"); clickType = $(this).attr("rowtype"); var name = $(this).attr("rowname"); $("#folderChildList").find(".folder-item").removeClass("select"); $("#folderChildList").find(".folder-item[id='" + clickId + "']").addClass('select'); if(clickType == "folder"){ //显示无预览页面 $("#childframe").attr("src", "../../tpl/note/noteFolder.html"); $("#noteTitle").val(name);//给标题赋值 $(".note-operator").addClass("layui-hide");//隐藏保存按钮 noteId = ""; } else { noteId = clickId;//当前选中列表的笔记id $("#noteTitle").val(name);//给标题赋值 $(".note-operator").removeClass("layui-hide");//显示保存按钮 // 显示编辑器,隐藏无预览页面 loadHtml(clickType); } } }); //初始化右键 function initRightMenu(){ $(".folder-item").contextMenu({ width: 190, // width itemHeight: 30, // 菜单项height bgColor: "#FFFFFF", // 背景颜色 color: "#0A0A0A", // 字体颜色 fontSize: 12, // 字体大小 hoverBgColor: "#99CC66", // hover背景颜色 target: function(ele) { // 当前元素 }, rightClass: 'folder-item,folder-item-title,folder-item-title-icon,folder-item-title-content,folder-item-desc,folder-item-mation,folder-item select,folder-item-mation-time', menu: [{ text: "输出为PDF", img: "../../assets/images/decompression-now.png", callback: function() { AjaxPostUtil.request({url: sysMainMation.noteBasePath + "outputNoteIsZipJob", params: {id: clickId, type: "file"}, type: 'json', method: 'POST', callback: function (json) { layer.alert('笔记输出为PDF任务已创建,请前往 我的输出 查看。'); }}); } },{ text: "删除", img: "../../assets/images/icon/delete-icon.png", callback: function() { deleteFileOrNote(clickId); if(clickType != "folder"){ noteId = ""; } } },{ text: "重命名", img: "../../assets/images/rename-icon.png", callback: function() { var obj = $("#folderChildList").find(".folder-item[id='" + clickId + "']"); var html = obj.find("div[class='folder-item-title-content']").find("span").html(); var newhtml = ""; obj.find("div[class='folder-item-title-content']").html(newhtml); obj.find("div[class='folder-item-title-content']").find("input").select(); obj.find("div[class='folder-item-title-content']").find("input").blur(function(){ var value = obj.find("div[class='folder-item-title-content']").find("input").val(); if (value.length > 0) { var nowhtml = "" + value + ""; obj.find("div[class='folder-item-title-content']").html(nowhtml); if(html != value){ AjaxPostUtil.request({url: sysMainMation.noteBasePath + "editFileFolderById", params: {name: value, fileType: clickType, id: clickId}, type: 'json', method: 'POST', callback: function (json) { winui.window.msg("保存成功", {icon: 1, time: 2000}); if (clickType == "folder") { // 刷新节点 refreshTreePointNode(); // 设置选中节点 chooseNodeSelect(folderId); } showListById();//获取文件夹和笔记列表 }}); } } else { var nowhtml = "" + html + ""; obj.find("div[class='folder-item-title-content']").html(nowhtml); winui.window.msg("标题不能为空", {icon: 2, time: 2000}); } }); } },{ text: "移动到", img: "../../assets/images/icon/create-copy-icon.png", callback: function() { _openNewWindows({ url: "../../tpl/note/noteFileTree.html", title: "移动到", pageId: "noteFileTree", area: ['300px', '400px'], callBack: function (refreshCode) { if (refreshCode != "" && refreshCode != undefined) { if (refreshCode != "-9999") { winui.window.msg("保存成功", {icon: 1, time: 2000}); noteId = ""; if (clickType == "folder") { folderId = refreshCode; //刷新节点 refreshTreePointNode(); // 设置选中节点 chooseNodeSelect(folderId); var selNode = ztree.getNodeByParam("id", clickId, null); ztree.removeNode(selNode);//移除节点 } // 获取文件夹和笔记列表 showListById(); } else if (refreshCode == '-9999') { winui.window.msg(systemLanguage["com.skyeye.operationFailed"][languageType], {icon: 2, time: 2000}); } } } }); } },{ text: "分享", img: "../../assets/images/icon/fx-icon.png", callback: function() { if(clickType == "folder"){ winui.window.msg("目前仅支持分享笔记", {icon: 2, time: 2000}); } else { var shareUrl = homePagePath + "tpl/note/shareNote.html?id=" + clickId; var json = {"bean":{"shareUrl":shareUrl}}; var html = getDataUseHandlebars(getFileContent('tpl/note/shareNoteTemplate.tpl'), json); layer.open({ title:"笔记链接", type: 1, area: ['40vw','30vh'], content: html //这里content是一个普通的String }); $("#copyBtn").attr("data-clipboard-text", shareUrl); //复制 clipboard = new ClipboardJS('#copyBtn'); clipboard.on('success', function(e) { winui.window.msg("复制成功", {icon: 1, time: 2000}); }); clipboard.on('error', function(e) { winui.window.msg("浏览器不支持!", {icon: 2, time: 2000}); }); } } } ] }); } // 默认展示当前最新的笔记 showNewNoteList(); // 树操作--新建文件夹 $("body").on("click", ".treecreateNewFolder", function (e) { noteId = ""; if (folderId == "1") { folderId = "2"; } hideRMenu(); AjaxPostUtil.request({url: sysMainMation.noteBasePath + "writeFolder", params: {parentId: folderId, name: '新建文件夹'}, type: 'json', method: 'POST', callback: function (json) { // 刷新节点 refreshTreePointNode(); folderId = json.bean.id; showListById(); // 执行延时 setTimeout(function () { var selNode = ztree.getNodeByParam("id", json.bean.id, null); ztree.editName(selNode); }, 1000); }}); }); // 树操作--新建笔记 $("body").on("click", ".treecreateNewNote", function (e) { addNote("新建笔记", 1); }); // 树操作--新建Markdown笔记 $("body").on("click", ".treecreateNewNoteMarkdown", function (e) { addNote("新建Markdown笔记", 2); }); // 树操作--新建Markdown笔记 $("body").on("click", ".treecreateNewNoteExcel", function (e) { addNote("新建Excel笔记", 4); }); // 树操作--文件夹或者文件删除 $("body").on("click", ".treedeleteFolderAndChild", function (e) { hideRMenu(); layer.confirm(systemLanguage["com.skyeye.deleteOperationMsg"][languageType], {icon: 3, title: systemLanguage["com.skyeye.deleteOperation"][languageType]}, function (index) { layer.close(index); clickType = 'folder'; deleteFileOrNote(folderId); }); }); // 文件夹或者文件重命名 $("body").on("click", ".fileReName", function (e) { hideRMenu(); var selNode = ztree.getNodeByParam("id", folderId, null); ztree.editName(selNode); }); // 树操作--刷新 $("body").on("click", ".treerefreshContent", function (e) { hideRMenu(); refreshTreePointNode(); showListById();//获取文件夹和笔记列表 }); // 树操作--输出压缩包 $("body").on("click", ".treereOutPutZIPContent", function (e) { hideRMenu(); AjaxPostUtil.request({url: sysMainMation.noteBasePath + "outputNoteIsZipJob", params: {id: folderId, type: "folder"}, type: 'json', method: 'POST', callback: function (json) { layer.alert('笔记输出压缩包任务已创建,请前往 我的输出 查看。'); }}); }); // 保存新编辑的笔记信息 $("#editMyNote").click(function() { saveNoteMation(); }); $(document).bind("keydown", function(e) { if (e.ctrlKey && (e.which == 83)) { e.preventDefault(); saveNoteMation(); return false; } }); $("body").on("input", "#noteTitle", function() { $("#editMyNote").addClass('select'); }); $("body").on("change", "#noteTitle", function (e){ $("#editMyNote").addClass('select'); }); // 保存笔记信息 function saveNoteMation(){ if ($("#editMyNote").hasClass('select')) { $("#editMyNote").removeClass('select'); } else { return false; } var tilte = $("#noteTitle").val(); if (isNull(tilte)) { winui.window.msg('请填写笔记标题.', {icon: 2, time: 2000}); return false; } var content = childframe.window.getContent();//调用子页面方法获取编辑器内容 var remark = childframe.window.getNoHtmlContent();//调用子页面方法获取编辑器纯文本内容 AjaxPostUtil.request({url: sysMainMation.noteBasePath + "writeNote", params: {id: noteId, name: tilte, content: content, remark: encodeURIComponent(remark)}, type: 'json', method: "POST", callback: function (json) { winui.window.msg("保存成功", {icon: 1, time: 2000}); var obj = $("#folderChildList").find(".folder-item[id='" + noteId + "']"); obj.find("div[class='folder-item-title-content']").find("span").html(tilte); obj.find("div[class='folder-item-desc']").html(remark); }}); } //搜索查询 $("#searchTitle").bind("keypress",function(){ var e = window.event; if (e && e.keyCode == 13) { //回车键的键值为13 noteId = ""; searchTitle = $("#searchTitle").val(); if(isNewNote) { showNewNoteList();//刷新最新笔记列表 } else { showListById();//获取文件夹和笔记列表 } searchTitle = ""; } }); // 刷新笔记列表 window.onloadList = function(){ if(isNewNote) { // 刷新最新笔记列表 showNewNoteList(); } else { // 获取文件夹和笔记列表 showListById(); } }; // 新增笔记 function addNote(title, type){ if (folderId == "1") { thisfolderId = "2"; } else { thisfolderId = folderId; } hideRMenu(); AjaxPostUtil.request({url: sysMainMation.noteBasePath + "writeNote", params: {parentId: thisfolderId, name: title, type: type}, type: 'json', method: 'POST', callback: function (json) { noteId = json.bean.id; // 获取文件夹和笔记列表 showListById(); }}); } // 删除指定文件夹或笔记 function deleteFileOrNote(id){ AjaxPostUtil.request({url: sysMainMation.noteBasePath + "deleteFileFolderById", params: {id: id, fileType: clickType}, type: 'json', method: 'DELETE', callback: function (json) { winui.window.msg(systemLanguage["com.skyeye.deleteOperationSuccessMsg"][languageType], {icon: 1, time: 2000}); if (clickType == "folder") { var selNode = ztree.getNodeByParam("id", id, null); ztree.selectNode(selNode.getParentNode());// 设置选中节点 // 重置folderid folderId = selNode.getParentNode().id; ztree.removeNode(selNode);// 移除节点 } showListById();// 获取文件夹和笔记列表 }}); } // 展示最新的笔记 function showNewNoteList(){ $("#folderChildList").empty(); flow.load({ elem: '#folderChildList', //指定列表容器 isAuto: true, scrollElem: "#folderChildList", done: function(page, next) { //到达临界点(默认滚动触发),触发下一页 var lis = []; AjaxPostUtil.request({url: sysMainMation.noteBasePath + "queryNewNoteListByUserId", params: {page: page, limit: 15, keyword: searchTitle}, type: 'json', method: 'POST', callback: function (json) { lis.push(getDataUseHandlebars(folderchildlisetTemplate, json)); next(lis.join(''), (page * 15) < json.total); initRightMenu(); showNoteContent(json.rows); }}); } }); } //根据文件夹id获取文件夹下的文件夹和笔记列表 function showListById(){ if(folderId == "1"){ isNewNote = true; showNewNoteList();//展示最新的笔记 } else { AjaxPostUtil.request({url: sysMainMation.noteBasePath + "mynote006", params: {parentId: folderId, search: searchTitle}, type: 'json', callback: function (json) { $("#folderChildList").html(getDataUseHandlebars(folderchildlisetTemplate, json)); initRightMenu(); showNoteContent(json.rows); }}); } } //显示笔记内容 function showNoteContent(data) { if (data.length > 0){ if (!isNull(noteId)){ $(".note-operator").removeClass("layui-hide");//显示保存按钮 var noteItem =$("#folderChildList").find(".folder-item[id='" + noteId + "']"); showContentByItem(noteItem); } else {//默认 var thisnote = $("#folderChildList").find(".folder-item[rowtype != 'folder']").length;//获取第一个类型不是文件夹的对象 if(thisnote > 0){ $(".note-operator").removeClass("layui-hide");//显示保存按钮 var noteItem = $("#folderChildList").find(".folder-item[rowtype != 'folder']").eq(0); showContentByItem(noteItem); } else { $('#folderChildList').children().eq(0).addClass('select');//不包含笔记文件时,默认选中第一个文件夹 $("#childframe").attr("src", "../../tpl/note/noteFolder.html"); var filename = $('#folderChildList').children().eq(0).attr("rowname"); $("#noteTitle").val(filename);//给标题赋值 $(".note-operator").addClass("layui-hide");//隐藏保存按钮 noteId = ""; } } } else { $("#childframe").attr("src", "../../tpl/note/noteFolder.html"); $("#noteTitle").val("");//给标题赋值 $(".note-operator").addClass("layui-hide");//隐藏保存按钮 noteId = ""; } } // 根据当前对象进行选中并显示内容 function showContentByItem(noteItem) { noteItem.addClass('select'); var noteType = noteItem.attr("rowtype");// 默认选中的笔记类型; noteId = noteItem.attr("id");// 默认选中的笔记类型; loadHtml(noteType); } function loadHtml(noteType){ if (noteType == 1) {// 如果是富文本编辑器类型,则加载富文本编辑器 $("#childframe").attr("src", "../../tpl/note/noteEdit.html"); } else if (noteType == 2) {// MarkDown编辑器类型 $("#childframe").attr("src", "../../tpl/note/noteEditMarkDown.html"); } else if (noteType == 4) {// excel编辑器类型 $("#childframe").attr("src", "../../tpl/note/noteEditLuckysheet.html"); } } exports('myNote', {}); });