合并闭源版功能,创建文档时上传文件也能绑定到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)}),
|
||||
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)}),
|
||||
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)}),
|
||||
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)}),
|
||||
|
||||
@@ -208,10 +208,14 @@ const turnLeftCollapse = () => {
|
||||
}
|
||||
const createWiki = () => {
|
||||
if (choiceSpace.value > 0) {
|
||||
router.push({
|
||||
path: '/page/edit',
|
||||
query: {parentId: nowPageId.value}
|
||||
})
|
||||
pageApi.createEmptyPage({spaceId: choiceSpace.value,parentId: nowPageId.value})
|
||||
.then((json) => {
|
||||
router.push({
|
||||
path: '/page/edit',
|
||||
query: {parentId: nowPageId.value, pageIdHid: json.data}
|
||||
})
|
||||
})
|
||||
|
||||
} else {
|
||||
ElMessage.warning('请先选择或创建空间')
|
||||
}
|
||||
|
||||
@@ -79,6 +79,8 @@ let isUnlock = ref(false);
|
||||
let pageId = ref('');
|
||||
// 父级,有值代表在此父级新建文档
|
||||
let parentId = ref('');
|
||||
// 从新建文档传递过来的
|
||||
let pageIdHid = ref('');
|
||||
let markdownContent = ref('');
|
||||
let fileUploadUrl = ref(import.meta.env.VITE_APP_BASE_API + '/zyplayer-doc-wiki/page/file/wangEditor/upload');
|
||||
let toolbars = {
|
||||
@@ -179,6 +181,9 @@ const createWikiSave = (saveAfter) => {
|
||||
}
|
||||
// 修改内容时强制不能修改父路径,只能在目录上拖动修改
|
||||
let parentIdVal = pageId.value > 0 ? '' : parentId.value
|
||||
if (!!pageIdHid.value){
|
||||
wikiPage.value.id = pageIdHid.value
|
||||
}
|
||||
let param = {
|
||||
spaceId: props.spaceId,
|
||||
parentId: parentIdVal,
|
||||
@@ -188,6 +193,7 @@ const createWikiSave = (saveAfter) => {
|
||||
content: content,
|
||||
preview: preview,
|
||||
}
|
||||
|
||||
pageApi.updatePage(param).then((json) => {
|
||||
ElMessage.success('保存成功!')
|
||||
// 重新加载左侧列表,跳转到展示页面
|
||||
@@ -238,9 +244,16 @@ const cleanPage = () => {
|
||||
}
|
||||
}
|
||||
const initQueryParam = (to) => {
|
||||
pageIdHid.value = to.query.pageIdHid
|
||||
// pageId和parentId二选一,传了pageId代表编辑页面,否则代表新建页面
|
||||
pageId.value = to.query.pageId
|
||||
parentId.value = to.query.parentId
|
||||
if (!!pageIdHid.value){
|
||||
wangEditorRef.value.setPageId(pageIdHid.value)
|
||||
}
|
||||
if (!!pageId.value){
|
||||
wangEditorRef.value.setPageId(pageId.value)
|
||||
}
|
||||
if (!!pageId.value) {
|
||||
loadPageDetail(pageId.value)
|
||||
pageApi.pageLock({pageId: pageId.value}).catch((json) => {
|
||||
@@ -260,6 +273,13 @@ let mavonEditorRef = ref();
|
||||
const addMarkdownImage = (pos, file) => {
|
||||
let formData = new FormData()
|
||||
formData.append('files', file)
|
||||
if (!!pageIdHid.value){
|
||||
formData.append('pageId', pageIdHid.value)
|
||||
}
|
||||
if (!!pageId.value){
|
||||
formData.append('pageId', pageId.value)
|
||||
}
|
||||
|
||||
axios({
|
||||
url: fileUploadUrl.value,
|
||||
method: 'post',
|
||||
|
||||
@@ -35,7 +35,7 @@ let toolbarConfig = {
|
||||
"fullScreen", "undo", "redo", "emotion", "|", "lineHeight", "fontFamily"
|
||||
],
|
||||
};
|
||||
|
||||
let editorPageId = ref('');
|
||||
let route = useRoute();
|
||||
let editorConfig = ref({
|
||||
placeholder: '请输入文档内容',
|
||||
@@ -47,6 +47,9 @@ let editorConfig = ref({
|
||||
// 最大支持50M图片上传
|
||||
maxFileSize: 50 * 1024 * 1024,
|
||||
withCredentials: true,
|
||||
meta: {
|
||||
pageId: editorPageId,
|
||||
},
|
||||
},
|
||||
uploadVideo: {
|
||||
server: import.meta.env.VITE_APP_BASE_API + '/zyplayer-doc-wiki/page/file/wangEditor/upload',
|
||||
@@ -54,6 +57,9 @@ let editorConfig = ref({
|
||||
// 最大支持300M图片上传
|
||||
maxFileSize: 300 * 1024 * 1024,
|
||||
withCredentials: true,
|
||||
meta: {
|
||||
pageId: editorPageId,
|
||||
},
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -83,6 +89,9 @@ const getPageData = () => {
|
||||
const setTitle = (title) => {
|
||||
pageTitle.value = title;
|
||||
}
|
||||
const setPageId = (id) => {
|
||||
editorPageId.value = id;
|
||||
}
|
||||
|
||||
const setHtml = (content) => {
|
||||
editorRef.value.select([]);
|
||||
@@ -96,7 +105,7 @@ onBeforeUnmount(() => {
|
||||
editor.destroy();
|
||||
});
|
||||
|
||||
defineExpose({setTitle, setHtml, getPageData});
|
||||
defineExpose({setTitle,setPageId, setHtml, getPageData});
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
|
||||
@@ -190,6 +190,53 @@ public class WikiPageController {
|
||||
wikiPageService.deletePage(wikiPage);
|
||||
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")
|
||||
public ResponseJson<Object> update(WikiPage wikiPage, String content, String preview) {
|
||||
|
||||
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" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<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/vue.9fe1449e.js">
|
||||
<link rel="modulepreload" href="assets/vendor.f45cfa8b.js">
|
||||
<link rel="modulepreload" href="assets/vant.bd56adbb.js">
|
||||
<link rel="modulepreload" href="assets/vendor.1b8bf7cc.js">
|
||||
<link rel="modulepreload" href="assets/vant.af525f67.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>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
||||
Reference in New Issue
Block a user