From e9f1c3b5cf1906a3d57502174d9015e283a44ffe Mon Sep 17 00:00:00 2001 From: sswiki Date: Tue, 10 Dec 2024 23:24:44 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E8=BE=91=E9=A1=B5=E9=9D=A2=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/sql/full/full.sql | 2 +- zyplayer-doc-ui/wiki-ui/src/routes.js | 4 +- .../wiki-ui/src/views/page/Edit.vue | 8 +- .../src/views/page/share/mobile/View.vue | 4 +- .../wiki-ui/src/views/page/share/pc/View.vue | 4 +- .../wiki-ui/src/views/space/Manage.vue | 2 +- .../wiki-ui/src/views/view/Edit.vue | 334 ++++++++++++++++++ .../wiki-ui/src/views/view/PageLayout.vue | 1 - .../wiki-ui/src/views/view/View.vue | 68 +--- .../wiki-ui/src/views/view/aside/AddMenu.vue | 3 +- .../src/views/view/aside/RightHeader.vue | 9 +- .../src/views/view/editor/WangEditor.vue | 161 +++++++++ .../wiki-ui/src/views/view/show/Comment.vue | 12 + .../wiki-ui/src/views/view/show/Files.vue | 8 +- .../views/view/show/MobileQrScanDialog.vue | 12 + .../src/views/view/show/PageHistory.vue | 31 ++ .../wiki/service/WikiPageUploadService.java | 8 - 17 files changed, 573 insertions(+), 98 deletions(-) create mode 100644 zyplayer-doc-ui/wiki-ui/src/views/view/Edit.vue create mode 100644 zyplayer-doc-ui/wiki-ui/src/views/view/editor/WangEditor.vue diff --git a/zyplayer-doc-manage/src/main/resources/sql/full/full.sql b/zyplayer-doc-manage/src/main/resources/sql/full/full.sql index 4a4c78fe..d731c6a9 100644 --- a/zyplayer-doc-manage/src/main/resources/sql/full/full.sql +++ b/zyplayer-doc-manage/src/main/resources/sql/full/full.sql @@ -127,7 +127,7 @@ CREATE TABLE `wiki_page_content` ( `update_user_id` bigint(20) NULL DEFAULT NULL COMMENT '修改人ID', `update_user_name` varchar(20) NULL DEFAULT NULL COMMENT '修改人名字', `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间', - `preview` varchar(16000) NULL DEFAULT NULL COMMENT '预览内容', + `preview` text NULL DEFAULT NULL COMMENT '预览内容', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_page_id`(`page_id`) USING BTREE COMMENT '页面ID' ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE utf8mb4_unicode_ci; diff --git a/zyplayer-doc-ui/wiki-ui/src/routes.js b/zyplayer-doc-ui/wiki-ui/src/routes.js index 80ea1196..db3a0f2b 100644 --- a/zyplayer-doc-ui/wiki-ui/src/routes.js +++ b/zyplayer-doc-ui/wiki-ui/src/routes.js @@ -8,7 +8,7 @@ import NoAuth from './views/common/NoAuth.vue'; // import Home from './views/home/Home.vue'; // import MyInfo from './views/user/MyInfo.vue'; import Show from './views/view/View.vue'; -// import Edit from './views/page/Edit.vue'; +import Edit from './views/view/Edit.vue'; // import spaceManage from './views/space/Manage.vue'; @@ -28,7 +28,7 @@ let routes = [ {path: '/home', name: 'WIKI文档管理', component: NoAuth}, {path: '/user/myInfo', name: 'WIKI-我的信息', component: NoAuth}, {path: '/view/:spaceId?/:pageId?', name: 'WIKI-页面查看', component: Show}, - {path: '/page/edit', name: 'WIKI-编辑内容', component: NoAuth}, + {path: '/edit/:spaceId/:pageId', name: 'WIKI-编辑内容', component: Edit}, {path: '/space/manage', name: 'WIKI-空间管理', component: NoAuth}, ], }, diff --git a/zyplayer-doc-ui/wiki-ui/src/views/page/Edit.vue b/zyplayer-doc-ui/wiki-ui/src/views/page/Edit.vue index f7adea2d..a3491802 100644 --- a/zyplayer-doc-ui/wiki-ui/src/views/page/Edit.vue +++ b/zyplayer-doc-ui/wiki-ui/src/views/page/Edit.vue @@ -214,8 +214,8 @@ const doGetPageList = () => { } const loadPageDetail = (pageId) => { pageApi.pageDetail({id: pageId}).then((json) => { - wikiPage.value = json.data.wikiPage || {} - pageContent.value = json.data.pageContent || {} + wikiPage.value = json.data.wikiPage || {}; + pageContent.value = json.data.pageContent || {}; pageFileList.value = json.data.fileList || []; // 内容 wikiPageEdit.value.pageTitle = wikiPage.value.name; @@ -234,7 +234,7 @@ const loadPageDetail = (pageId) => { const loadParentPageDetail = (pageId) => { if (!pageId) return; pageApi.pageDetail({id: pageId}).then((json) => { - parentWikiPage.value = json.data.wikiPage || {} + parentWikiPage.value = json.data.wikiPage || {}; }); } const cleanPage = () => { @@ -284,7 +284,7 @@ const addMarkdownImage = (pos, file) => { timeout: 10000, withCredentials: true, }).then((res) => { - let urlObj = res.data.data || {} + let urlObj = res.data.data || {}; if (urlObj.url) { mavonEditorRef.value.$img2Url(pos, urlObj.url); } else { diff --git a/zyplayer-doc-ui/wiki-ui/src/views/page/share/mobile/View.vue b/zyplayer-doc-ui/wiki-ui/src/views/page/share/mobile/View.vue index 4af5c9e9..c66f5166 100644 --- a/zyplayer-doc-ui/wiki-ui/src/views/page/share/mobile/View.vue +++ b/zyplayer-doc-ui/wiki-ui/src/views/page/share/mobile/View.vue @@ -69,10 +69,10 @@ const popupShowChange = () => { const loadPageDetail = (pageId) => { let param = {pageId: pageId, space: spaceUuid.value} pageApi.openPageDetail(param).then((json) => { - let wikiPageRes = json.data.wikiPage || {} + let wikiPageRes = json.data.wikiPage || {}; wikiPageRes.selfZan = json.data.selfZan || 0 wikiPage.value = wikiPageRes; - let pageContent = json.data.pageContent || {} + let pageContent = json.data.pageContent || {}; pageFileList.value = json.data.fileList || []; if (wikiPage.value.editorType === 2) { pageContent.content = mavonEditor.getMarkdownIt().render(pageContent.content); diff --git a/zyplayer-doc-ui/wiki-ui/src/views/page/share/pc/View.vue b/zyplayer-doc-ui/wiki-ui/src/views/page/share/pc/View.vue index 6e5c643b..3e534ec3 100644 --- a/zyplayer-doc-ui/wiki-ui/src/views/page/share/pc/View.vue +++ b/zyplayer-doc-ui/wiki-ui/src/views/page/share/pc/View.vue @@ -78,10 +78,10 @@ let wikiTitleRef = ref(); const loadPageDetail = (pageId) => { let param = {pageId: pageId, space: spaceUuid.value} pageApi.openPageDetail(param).then((json) => { - let wikiPageRes = json.data.wikiPage || {} + let wikiPageRes = json.data.wikiPage || {}; wikiPageRes.selfZan = json.data.selfZan || 0 wikiPage.value = wikiPageRes; - let pageContent = json.data.pageContent || {} + let pageContent = json.data.pageContent || {}; pageFileList.value = json.data.fileList || []; if (wikiPage.value.editorType === 2) { pageContent.content = mavonEditor.getMarkdownIt().render(pageContent.content); diff --git a/zyplayer-doc-ui/wiki-ui/src/views/space/Manage.vue b/zyplayer-doc-ui/wiki-ui/src/views/space/Manage.vue index 6352bcf1..c09aae3e 100644 --- a/zyplayer-doc-ui/wiki-ui/src/views/space/Manage.vue +++ b/zyplayer-doc-ui/wiki-ui/src/views/space/Manage.vue @@ -260,7 +260,7 @@ const wikiOnlyShowFavoriteChange = () => { } const getSpaceSettingList = () => { pageApi.spaceSettingList().then((json) => { - let result = json.data || {} + let result = json.data || {}; userSetting.value = { wiki_only_show_favorite: result.wiki_only_show_favorite || 0, } diff --git a/zyplayer-doc-ui/wiki-ui/src/views/view/Edit.vue b/zyplayer-doc-ui/wiki-ui/src/views/view/Edit.vue new file mode 100644 index 00000000..ef656c11 --- /dev/null +++ b/zyplayer-doc-ui/wiki-ui/src/views/view/Edit.vue @@ -0,0 +1,334 @@ + + + + + + + + + diff --git a/zyplayer-doc-ui/wiki-ui/src/views/view/PageLayout.vue b/zyplayer-doc-ui/wiki-ui/src/views/view/PageLayout.vue index 191371e8..b9c75b2c 100644 --- a/zyplayer-doc-ui/wiki-ui/src/views/view/PageLayout.vue +++ b/zyplayer-doc-ui/wiki-ui/src/views/view/PageLayout.vue @@ -33,7 +33,6 @@ onMounted(() => { }); const rightAsideWidthChange = (width) => { storeDisplay.rightAsideWidth = width; - storeDisplay.commentShow = width; } let leftAsideStyle = computed(() => { return {width: storeDisplay.rightAsideWidth + 'px'}; diff --git a/zyplayer-doc-ui/wiki-ui/src/views/view/View.vue b/zyplayer-doc-ui/wiki-ui/src/views/view/View.vue index c508b045..8e25464f 100644 --- a/zyplayer-doc-ui/wiki-ui/src/views/view/View.vue +++ b/zyplayer-doc-ui/wiki-ui/src/views/view/View.vue @@ -66,6 +66,7 @@ const props = defineProps({ let emit = defineEmits(['switchSpace', 'changeExpandedKeys', 'loadPageList']); onMounted(() => { storeDisplay.currentPage = 'view'; + storeDisplay.showHeader = true; initQueryParam(route); }); onBeforeRouteUpdate((to) => { @@ -264,63 +265,6 @@ const initQueryParam = (to) => { height: 600px !important; } -.page-show-vue .head { - float: left; - background-color: #ccc; - border-radius: 50%; - margin-right: 10px; - width: 45px; - height: 45px; - line-height: 45px; - text-align: center; - color: #fff; -} - -.page-show-vue .el-tabs__header { - margin: 0; -} - -.page-show-vue .el-tabs__nav-wrap { - padding: 0 20px; -} - -.page-show-vue .close-action-tab { - position: absolute; - right: 15px; - top: 12px; - cursor: pointer; - z-index: 1; -} - -.page-show-vue .action-tab-box { - height: calc(100vh - 120px); - overflow: auto; - padding: 20px 10px; -} - -.page-show-vue .action-box-empty { - text-align: center; - padding-top: 30px; - color: #888; - font-size: 14px; -} - -.page-show-vue .history-item { - height: 55px; - line-height: 25px; - cursor: pointer; - vertical-align: middle; -} - -.page-show-vue .history-loading-status { - margin-left: 5px; - color: #67c23a; -} - -.page-show-vue .history-loading-status.el-icon-circle-close { - color: #f56c6c; -} - .page-show-vue .el-timeline { padding-inline-start: 0; } @@ -328,14 +272,4 @@ const initQueryParam = (to) => { .page-show-vue .markdown-body table { display: table; } - -.mobile-qr { - width: 250px; - height: 250px; - border: 1px solid #ccc; - display: inline-block; - border-radius: 4px; - margin-bottom: 10px; - padding: 5px; -} diff --git a/zyplayer-doc-ui/wiki-ui/src/views/view/aside/AddMenu.vue b/zyplayer-doc-ui/wiki-ui/src/views/view/aside/AddMenu.vue index b47aba02..de3f4607 100644 --- a/zyplayer-doc-ui/wiki-ui/src/views/view/aside/AddMenu.vue +++ b/zyplayer-doc-ui/wiki-ui/src/views/view/aside/AddMenu.vue @@ -99,7 +99,8 @@ const createPage = (editorType, confirmName) => { storePage.eventPageListUpdate = !storePage.eventPageListUpdate; ElMessage.success('创建成功'); if (editorType !== 0) { - router.push({path: '/page/edit', query: {parentId: props.pageId, pageId: json.data.id}}); + let newPageId = json.data.id; + router.push({path: `/edit/${storeSpace.chooseSpaceId}/${newPageId}`}); } }); } diff --git a/zyplayer-doc-ui/wiki-ui/src/views/view/aside/RightHeader.vue b/zyplayer-doc-ui/wiki-ui/src/views/view/aside/RightHeader.vue index 84d5b35d..12981191 100644 --- a/zyplayer-doc-ui/wiki-ui/src/views/view/aside/RightHeader.vue +++ b/zyplayer-doc-ui/wiki-ui/src/views/view/aside/RightHeader.vue @@ -104,20 +104,13 @@ const emit = defineEmits(['collapse']); let turnLeftCollapse = () => { storeDisplay.showMenu = !storeDisplay.showMenu; - setTimeout(() => { - if (storeDisplay.showMenu) { - storeDisplay.rightAsideWidth = 301; - } else { - storeDisplay.rightAsideWidth = 1; - } - }, 100); }; const editWiki = () => { // 锁定页面并进入编辑页面 storePage.pageIsUnlock = false; let param = {pageId: storePage.pageInfo.id}; pageApi.pageLock(param).then(() => { - router.push({path: '/page/edit', query: {pageId: storePage.pageInfo.id}}); + router.push({path: `/edit/${storePage.pageInfo.spaceId}/${storePage.pageInfo.id}`}); }); } const showCommentWiki = () => { diff --git a/zyplayer-doc-ui/wiki-ui/src/views/view/editor/WangEditor.vue b/zyplayer-doc-ui/wiki-ui/src/views/view/editor/WangEditor.vue new file mode 100644 index 00000000..95970610 --- /dev/null +++ b/zyplayer-doc-ui/wiki-ui/src/views/view/editor/WangEditor.vue @@ -0,0 +1,161 @@ + + + + + + + + diff --git a/zyplayer-doc-ui/wiki-ui/src/views/view/show/Comment.vue b/zyplayer-doc-ui/wiki-ui/src/views/view/show/Comment.vue index 69d460b9..af7b4a6d 100644 --- a/zyplayer-doc-ui/wiki-ui/src/views/view/show/Comment.vue +++ b/zyplayer-doc-ui/wiki-ui/src/views/view/show/Comment.vue @@ -146,6 +146,18 @@ const getUserHeadBgColor = (userId) => { overflow: auto; .comment-card { + .head { + float: left; + background-color: #ccc; + border-radius: 50%; + margin-right: 10px; + width: 45px; + height: 45px; + line-height: 45px; + text-align: center; + color: #fff; + } + .comment-user-name { margin-bottom: 10px; diff --git a/zyplayer-doc-ui/wiki-ui/src/views/view/show/Files.vue b/zyplayer-doc-ui/wiki-ui/src/views/view/show/Files.vue index 9ad2fb61..f822b147 100644 --- a/zyplayer-doc-ui/wiki-ui/src/views/view/show/Files.vue +++ b/zyplayer-doc-ui/wiki-ui/src/views/view/show/Files.vue @@ -165,8 +165,14 @@ const computeFileSize = (fileSize) => { .head { float: left; + background-color: #ccc; + border-radius: 50%; margin-right: 10px; - line-height: 40px; + width: 45px; + height: 45px; + line-height: 45px; + text-align: center; + color: #fff; } .files-user-name .time { diff --git a/zyplayer-doc-ui/wiki-ui/src/views/view/show/MobileQrScanDialog.vue b/zyplayer-doc-ui/wiki-ui/src/views/view/show/MobileQrScanDialog.vue index 06a88d0e..d3c70a3d 100644 --- a/zyplayer-doc-ui/wiki-ui/src/views/view/show/MobileQrScanDialog.vue +++ b/zyplayer-doc-ui/wiki-ui/src/views/view/show/MobileQrScanDialog.vue @@ -80,3 +80,15 @@ const initMobileQrScan = () => { }, 0); } + + diff --git a/zyplayer-doc-ui/wiki-ui/src/views/view/show/PageHistory.vue b/zyplayer-doc-ui/wiki-ui/src/views/view/show/PageHistory.vue index 97085918..ec00344b 100644 --- a/zyplayer-doc-ui/wiki-ui/src/views/view/show/PageHistory.vue +++ b/zyplayer-doc-ui/wiki-ui/src/views/view/show/PageHistory.vue @@ -68,3 +68,34 @@ const historyClick = (history) => { } } + + diff --git a/zyplayer-doc-wiki/src/main/java/org/dromara/zyplayer/wiki/service/WikiPageUploadService.java b/zyplayer-doc-wiki/src/main/java/org/dromara/zyplayer/wiki/service/WikiPageUploadService.java index 02e04146..125c7b3a 100644 --- a/zyplayer-doc-wiki/src/main/java/org/dromara/zyplayer/wiki/service/WikiPageUploadService.java +++ b/zyplayer-doc-wiki/src/main/java/org/dromara/zyplayer/wiki/service/WikiPageUploadService.java @@ -41,19 +41,11 @@ public class WikiPageUploadService { private final UserMessageService userMessageService; private final WikiPageHistoryService wikiPageHistoryService; - public Object update(WikiPage wikiPage, String content, String preview) { DocUserDetails currentUser = DocUserUtil.getCurrentUser(); WikiPageContent pageContent = new WikiPageContent(); pageContent.setContent(content); - if (wikiPage.getEditorType() == 2) { - preview = MDToText.mdToText(preview); - } pageContent.setPreview(preview); - // 数据库是varchar(16000),所以如果不开启es的话搜索超过16000的文章就搜不到~,es存preview不截断 - if (StringUtils.isNotBlank(preview) && preview.length() > 16000) { - pageContent.setPreview(preview.substring(0, 16000)); - } if (StringUtils.isBlank(wikiPage.getName())) { return "标题不能为空!"; }