合并闭源版功能,创建文档时上传文件也能绑定到page上
This commit is contained in:
@@ -6,6 +6,7 @@ export default {
|
|||||||
pageChangeParent: (data) => request({url: '/zyplayer-doc-wiki/page/changeParent', method: 'post', data: Qs.stringify(data)}),
|
pageChangeParent: (data) => request({url: '/zyplayer-doc-wiki/page/changeParent', method: 'post', data: Qs.stringify(data)}),
|
||||||
pageList: (data) => request({url: '/zyplayer-doc-wiki/page/list', method: 'post', data: Qs.stringify(data)}),
|
pageList: (data) => request({url: '/zyplayer-doc-wiki/page/list', method: 'post', data: Qs.stringify(data)}),
|
||||||
updatePage: (data) => request({url: '/zyplayer-doc-wiki/page/update', method: 'post', data: Qs.stringify(data)}),
|
updatePage: (data) => request({url: '/zyplayer-doc-wiki/page/update', method: 'post', data: Qs.stringify(data)}),
|
||||||
|
createEmptyPage: (data) => request({url: '/zyplayer-doc-wiki/page/empty', method: 'post', data: Qs.stringify(data)}),
|
||||||
pageDetail: (data) => request({url: '/zyplayer-doc-wiki/page/detail', method: 'post', data: Qs.stringify(data)}),
|
pageDetail: (data) => request({url: '/zyplayer-doc-wiki/page/detail', method: 'post', data: Qs.stringify(data)}),
|
||||||
pageDelete: (data) => request({url: '/zyplayer-doc-wiki/page/delete', method: 'post', data: Qs.stringify(data)}),
|
pageDelete: (data) => request({url: '/zyplayer-doc-wiki/page/delete', method: 'post', data: Qs.stringify(data)}),
|
||||||
pageHistoryList: (data) => request({url: '/zyplayer-doc-wiki/page/history/list', method: 'post', data: Qs.stringify(data)}),
|
pageHistoryList: (data) => request({url: '/zyplayer-doc-wiki/page/history/list', method: 'post', data: Qs.stringify(data)}),
|
||||||
|
|||||||
@@ -208,10 +208,14 @@ const turnLeftCollapse = () => {
|
|||||||
}
|
}
|
||||||
const createWiki = () => {
|
const createWiki = () => {
|
||||||
if (choiceSpace.value > 0) {
|
if (choiceSpace.value > 0) {
|
||||||
router.push({
|
pageApi.createEmptyPage({spaceId: choiceSpace.value,parentId: nowPageId.value})
|
||||||
path: '/page/edit',
|
.then((json) => {
|
||||||
query: {parentId: nowPageId.value}
|
router.push({
|
||||||
})
|
path: '/page/edit',
|
||||||
|
query: {parentId: nowPageId.value, pageIdHid: json.data}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
ElMessage.warning('请先选择或创建空间')
|
ElMessage.warning('请先选择或创建空间')
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,6 +79,8 @@ let isUnlock = ref(false);
|
|||||||
let pageId = ref('');
|
let pageId = ref('');
|
||||||
// 父级,有值代表在此父级新建文档
|
// 父级,有值代表在此父级新建文档
|
||||||
let parentId = ref('');
|
let parentId = ref('');
|
||||||
|
// 从新建文档传递过来的
|
||||||
|
let pageIdHid = ref('');
|
||||||
let markdownContent = ref('');
|
let markdownContent = ref('');
|
||||||
let fileUploadUrl = ref(import.meta.env.VITE_APP_BASE_API + '/zyplayer-doc-wiki/page/file/wangEditor/upload');
|
let fileUploadUrl = ref(import.meta.env.VITE_APP_BASE_API + '/zyplayer-doc-wiki/page/file/wangEditor/upload');
|
||||||
let toolbars = {
|
let toolbars = {
|
||||||
@@ -179,6 +181,9 @@ const createWikiSave = (saveAfter) => {
|
|||||||
}
|
}
|
||||||
// 修改内容时强制不能修改父路径,只能在目录上拖动修改
|
// 修改内容时强制不能修改父路径,只能在目录上拖动修改
|
||||||
let parentIdVal = pageId.value > 0 ? '' : parentId.value
|
let parentIdVal = pageId.value > 0 ? '' : parentId.value
|
||||||
|
if (!!pageIdHid.value){
|
||||||
|
wikiPage.value.id = pageIdHid.value
|
||||||
|
}
|
||||||
let param = {
|
let param = {
|
||||||
spaceId: props.spaceId,
|
spaceId: props.spaceId,
|
||||||
parentId: parentIdVal,
|
parentId: parentIdVal,
|
||||||
@@ -188,6 +193,7 @@ const createWikiSave = (saveAfter) => {
|
|||||||
content: content,
|
content: content,
|
||||||
preview: preview,
|
preview: preview,
|
||||||
}
|
}
|
||||||
|
|
||||||
pageApi.updatePage(param).then((json) => {
|
pageApi.updatePage(param).then((json) => {
|
||||||
ElMessage.success('保存成功!')
|
ElMessage.success('保存成功!')
|
||||||
// 重新加载左侧列表,跳转到展示页面
|
// 重新加载左侧列表,跳转到展示页面
|
||||||
@@ -238,9 +244,16 @@ const cleanPage = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const initQueryParam = (to) => {
|
const initQueryParam = (to) => {
|
||||||
|
pageIdHid.value = to.query.pageIdHid
|
||||||
// pageId和parentId二选一,传了pageId代表编辑页面,否则代表新建页面
|
// pageId和parentId二选一,传了pageId代表编辑页面,否则代表新建页面
|
||||||
pageId.value = to.query.pageId
|
pageId.value = to.query.pageId
|
||||||
parentId.value = to.query.parentId
|
parentId.value = to.query.parentId
|
||||||
|
if (!!pageIdHid.value){
|
||||||
|
wangEditorRef.value.setPageId(pageIdHid.value)
|
||||||
|
}
|
||||||
|
if (!!pageId.value){
|
||||||
|
wangEditorRef.value.setPageId(pageId.value)
|
||||||
|
}
|
||||||
if (!!pageId.value) {
|
if (!!pageId.value) {
|
||||||
loadPageDetail(pageId.value)
|
loadPageDetail(pageId.value)
|
||||||
pageApi.pageLock({pageId: pageId.value}).catch((json) => {
|
pageApi.pageLock({pageId: pageId.value}).catch((json) => {
|
||||||
@@ -260,6 +273,13 @@ let mavonEditorRef = ref();
|
|||||||
const addMarkdownImage = (pos, file) => {
|
const addMarkdownImage = (pos, file) => {
|
||||||
let formData = new FormData()
|
let formData = new FormData()
|
||||||
formData.append('files', file)
|
formData.append('files', file)
|
||||||
|
if (!!pageIdHid.value){
|
||||||
|
formData.append('pageId', pageIdHid.value)
|
||||||
|
}
|
||||||
|
if (!!pageId.value){
|
||||||
|
formData.append('pageId', pageId.value)
|
||||||
|
}
|
||||||
|
|
||||||
axios({
|
axios({
|
||||||
url: fileUploadUrl.value,
|
url: fileUploadUrl.value,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ let toolbarConfig = {
|
|||||||
"fullScreen", "undo", "redo", "emotion", "|", "lineHeight", "fontFamily"
|
"fullScreen", "undo", "redo", "emotion", "|", "lineHeight", "fontFamily"
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
let editorPageId = ref('');
|
||||||
let route = useRoute();
|
let route = useRoute();
|
||||||
let editorConfig = ref({
|
let editorConfig = ref({
|
||||||
placeholder: '请输入文档内容',
|
placeholder: '请输入文档内容',
|
||||||
@@ -47,6 +47,9 @@ let editorConfig = ref({
|
|||||||
// 最大支持50M图片上传
|
// 最大支持50M图片上传
|
||||||
maxFileSize: 50 * 1024 * 1024,
|
maxFileSize: 50 * 1024 * 1024,
|
||||||
withCredentials: true,
|
withCredentials: true,
|
||||||
|
meta: {
|
||||||
|
pageId: editorPageId,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
uploadVideo: {
|
uploadVideo: {
|
||||||
server: import.meta.env.VITE_APP_BASE_API + '/zyplayer-doc-wiki/page/file/wangEditor/upload',
|
server: import.meta.env.VITE_APP_BASE_API + '/zyplayer-doc-wiki/page/file/wangEditor/upload',
|
||||||
@@ -54,6 +57,9 @@ let editorConfig = ref({
|
|||||||
// 最大支持300M图片上传
|
// 最大支持300M图片上传
|
||||||
maxFileSize: 300 * 1024 * 1024,
|
maxFileSize: 300 * 1024 * 1024,
|
||||||
withCredentials: true,
|
withCredentials: true,
|
||||||
|
meta: {
|
||||||
|
pageId: editorPageId,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -83,6 +89,9 @@ const getPageData = () => {
|
|||||||
const setTitle = (title) => {
|
const setTitle = (title) => {
|
||||||
pageTitle.value = title;
|
pageTitle.value = title;
|
||||||
}
|
}
|
||||||
|
const setPageId = (id) => {
|
||||||
|
editorPageId.value = id;
|
||||||
|
}
|
||||||
|
|
||||||
const setHtml = (content) => {
|
const setHtml = (content) => {
|
||||||
editorRef.value.select([]);
|
editorRef.value.select([]);
|
||||||
@@ -96,7 +105,7 @@ onBeforeUnmount(() => {
|
|||||||
editor.destroy();
|
editor.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
defineExpose({setTitle, setHtml, getPageData});
|
defineExpose({setTitle,setPageId, setHtml, getPageData});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
|||||||
@@ -190,7 +190,54 @@ public class WikiPageController {
|
|||||||
wikiPageService.deletePage(wikiPage);
|
wikiPageService.deletePage(wikiPage);
|
||||||
return DocResponseJson.ok();
|
return DocResponseJson.ok();
|
||||||
}
|
}
|
||||||
|
//创建空白page
|
||||||
|
@PostMapping("/empty")
|
||||||
|
public ResponseJson<Object> empty(WikiPage wikiPage) {
|
||||||
|
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
|
||||||
|
Long parentId = Optional.ofNullable(wikiPage.getParentId()).orElse(0L);
|
||||||
|
WikiSpace wikiSpaceSel = wikiSpaceService.getById(wikiPage.getSpaceId());
|
||||||
|
if (wikiSpaceSel == null) {
|
||||||
|
return DocResponseJson.warn("未找到指定的空间!");
|
||||||
|
}
|
||||||
|
// 空间不是自己的
|
||||||
|
if (SpaceType.isOthersPrivate(wikiSpaceSel.getType(), currentUser.getUserId(), wikiSpaceSel.getCreateUserId())) {
|
||||||
|
return DocResponseJson.warn("您没有权限新增该空间的文章!");
|
||||||
|
}
|
||||||
|
// 空间不是自己的
|
||||||
|
if (SpaceType.isOthersPersonal(wikiSpaceSel.getType(), currentUser.getUserId(), wikiSpaceSel.getCreateUserId())) {
|
||||||
|
return DocResponseJson.warn("您没有权限新增该空间的文章!");
|
||||||
|
}
|
||||||
|
if (parentId > 0) {
|
||||||
|
WikiPage wikiPageParent = wikiPageService.getById(parentId);
|
||||||
|
if (!Objects.equals(wikiPage.getSpaceId(), wikiPageParent.getSpaceId())) {
|
||||||
|
return DocResponseJson.warn("当前空间和父页面的空间不一致,请重新选择父页面!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Integer lastSeq = wikiPageMapper.getLastSeq(wikiPage.getSpaceId(), parentId);
|
||||||
|
lastSeq = Optional.ofNullable(lastSeq).orElse(99999);
|
||||||
|
wikiPage.setSeqNo(lastSeq + 1);
|
||||||
|
wikiPage.setCreateTime(new Date());
|
||||||
|
wikiPage.setUpdateTime(new Date());
|
||||||
|
wikiPage.setCreateUserId(currentUser.getUserId());
|
||||||
|
wikiPage.setCreateUserName(currentUser.getUsername());
|
||||||
|
wikiPage.setName("未命名");
|
||||||
|
wikiPageService.save(wikiPage);
|
||||||
|
// 重置当前分支的所有节点seq值
|
||||||
|
wikiPageMapper.updateChildrenSeq(wikiPage.getSpaceId(), parentId);
|
||||||
|
WikiPageContent pageContent = new WikiPageContent();
|
||||||
|
pageContent.setContent("");
|
||||||
|
pageContent.setPreview("");
|
||||||
|
pageContent.setPageId(wikiPage.getId());
|
||||||
|
pageContent.setCreateTime(new Date());
|
||||||
|
pageContent.setCreateUserId(currentUser.getUserId());
|
||||||
|
pageContent.setCreateUserName(currentUser.getUsername());
|
||||||
|
wikiPageContentService.save(pageContent);
|
||||||
|
// 给相关人发送消息
|
||||||
|
UserMessage userMessage = userMessageService.createUserMessage(currentUser, wikiPage.getId(), wikiPage.getName(), DocSysType.WIKI, UserMsgType.WIKI_PAGE_CREATE);
|
||||||
|
userMessageService.addWikiMessage(userMessage);
|
||||||
|
return DocResponseJson.ok(wikiPage.getId());
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping("/update")
|
@PostMapping("/update")
|
||||||
public ResponseJson<Object> update(WikiPage wikiPage, String content, String preview) {
|
public ResponseJson<Object> update(WikiPage wikiPage, String content, String preview) {
|
||||||
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
|
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -5,13 +5,13 @@
|
|||||||
<link rel="icon" href="wiki-logo.png" />
|
<link rel="icon" href="wiki-logo.png" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>WIKI文档管理系统</title>
|
<title>WIKI文档管理系统</title>
|
||||||
<script type="module" crossorigin src="assets/main.68e288a7.js"></script>
|
<script type="module" crossorigin src="assets/main.94982ebd.js"></script>
|
||||||
<link rel="modulepreload" href="assets/highlight.js.b879387e.js">
|
<link rel="modulepreload" href="assets/highlight.js.b879387e.js">
|
||||||
<link rel="modulepreload" href="assets/vue.9fe1449e.js">
|
<link rel="modulepreload" href="assets/vue.9fe1449e.js">
|
||||||
<link rel="modulepreload" href="assets/vendor.f45cfa8b.js">
|
<link rel="modulepreload" href="assets/vendor.1b8bf7cc.js">
|
||||||
<link rel="modulepreload" href="assets/vant.bd56adbb.js">
|
<link rel="modulepreload" href="assets/vant.af525f67.js">
|
||||||
<link rel="modulepreload" href="assets/wangeditor.cbd30c7d.js">
|
<link rel="modulepreload" href="assets/wangeditor.cbd30c7d.js">
|
||||||
<link rel="stylesheet" href="assets/style.686b5b54.css">
|
<link rel="stylesheet" href="assets/style.9c39e1d4.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
|
|||||||
Reference in New Issue
Block a user