From bfc7385fae6959646c1258d39dcb170b95aef3fb Mon Sep 17 00:00:00 2001 From: fanxb Date: Thu, 4 Mar 2021 16:15:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=AF=BC=E5=87=BA=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/BookmarkServiceImpl.java | 18 ++-- bookmark_front/package.json | 1 + bookmark_front/src/util/FileUtil.js | 17 +++ .../main/pages/things/BookmarkManage.vue | 101 ++++++++++++++---- 4 files changed, 108 insertions(+), 29 deletions(-) create mode 100644 bookmark_front/src/util/FileUtil.js diff --git a/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/service/impl/BookmarkServiceImpl.java b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/service/impl/BookmarkServiceImpl.java index 7507556..2ad8cf9 100644 --- a/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/service/impl/BookmarkServiceImpl.java +++ b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/service/impl/BookmarkServiceImpl.java @@ -71,15 +71,15 @@ public class BookmarkServiceImpl implements BookmarkService { int count = 0; List bookmarks = new ArrayList<>(); for (int i = 0, length = elements.size(); i < length; i++) { - if (i == 0) { - Elements firstChildren = elements.get(0).child(1).children(); - count = firstChildren.size(); - for (int j = 0; j < count; j++) { - dealBookmark(userId, firstChildren.get(j), path, sortBase + j, bookmarks); - } - } else { - dealBookmark(userId, elements.get(i), path, sortBase + count + i - 1, bookmarks); - } +// if (i == 0) { +// Elements firstChildren = elements.get(0).child(0).children(); +// count = firstChildren.size(); +// for (int j = 0; j < count; j++) { +// dealBookmark(userId, firstChildren.get(j), path, sortBase + j, bookmarks); +// } +// } else { + dealBookmark(userId, elements.get(i), path, sortBase+i , bookmarks); +// } } //每一千条处理插入一次 List tempList = new ArrayList<>(1000); diff --git a/bookmark_front/package.json b/bookmark_front/package.json index d4773bf..285d90e 100644 --- a/bookmark_front/package.json +++ b/bookmark_front/package.json @@ -14,6 +14,7 @@ "clipboard": "^2.0.6", "core-js": "^3.6.5", "localforage": "^1.7.4", + "moment": "^2.29.1", "vue": "^2.6.11", "vue-router": "^3.2.0", "vuex": "^3.4.0" diff --git a/bookmark_front/src/util/FileUtil.js b/bookmark_front/src/util/FileUtil.js new file mode 100644 index 0000000..fe95748 --- /dev/null +++ b/bookmark_front/src/util/FileUtil.js @@ -0,0 +1,17 @@ +export function downloadFile(fileName, content) { + debugger; + // 定义触发事件的DOM + var aLink = document.createElement("a"); + // 定义BLOB对象,生成文件内容 + var blob = new Blob([content], { type: "text/html" }); + // 定义事件对象 + var evt = document.createEvent("MouseEvents"); + // 初始化事件 + evt.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); + // 定义下载文件名称 + aLink.download = fileName; + // 根据上面定义的 BLOB 对象创建文件 dataURL + aLink.href = URL.createObjectURL(blob); + // 应用事件,触发下载 + aLink.dispatchEvent(evt); +} diff --git a/bookmark_front/src/views/main/pages/things/BookmarkManage.vue b/bookmark_front/src/views/main/pages/things/BookmarkManage.vue index f39d72c..0460378 100644 --- a/bookmark_front/src/views/main/pages/things/BookmarkManage.vue +++ b/bookmark_front/src/views/main/pages/things/BookmarkManage.vue @@ -4,30 +4,37 @@
- 我的书签 - - - - - - - + 我的书签 + + + + + + + - - - - - - - - - - - + - + + + + + + + + + + + +
+
+ + + +
@@ -61,7 +68,9 @@ import AddBookmark from "../../../../components/main/things/AddBookmark.vue"; import Search from "../../../../components/main/Search.vue"; import HttpUtil from "../../../../util/HttpUtil.js"; import { mapState, mapActions } from "vuex"; +import { downloadFile } from "../../../../util/FileUtil"; import ClipboardJS from "clipboard"; +import moment from "moment"; export default { name: "BookmarkManage", components: { AddBookmark, Search }, @@ -336,6 +345,52 @@ export default { this.editData(); } }, + /** + * 书签文件导出 + */ + exportBookmark() { + let map = this.totalTreeData; + let root = document.createElement("DL"); + this.dealList(root, map[""], map); + let content = + ` + + +Bookmarks +

签签世界导出

` + root.outerHTML; + downloadFile(moment().format("YYYY-MM-DD") + "导出书签.html", content); + }, + dealList(root, list, totalMap) { + if (!list || list.length == undefined) { + return; + } + list.forEach((item) => { + let node = document.createElement("DT"); + root.appendChild(node); + if (item.type === 0) { + //说明为书签 + let url = document.createElement("A"); + url.setAttribute("HREF", item.url); + url.setAttribute("ADD_DATE", parseInt(Date.now() / 1000)); + url.innerText = item.name; + if (item.icon.length > 0) { + url.setAttribute("ICON", item.icon); + } + node.appendChild(url); + } else { + //说明为文件夹 + let header = document.createElement("H3"); + header.setAttribute("ADD_DATE", parseInt(Date.now() / 1000)); + header.innerText = item.name; + node.appendChild(header); + let children = document.createElement("DL"); + node.appendChild(children); + this.dealList(children, totalMap[item.path + "." + item.bookmarkId], totalMap); + } + }); + }, }, }; @@ -347,6 +402,12 @@ export default { height: 0.42rem; display: flex; align-items: center; + justify-content: space-between; + + .left { + display: flex; + justify-items: center; + } } .myBookmark { font-size: 0.25rem;