合并闭源版功能,创建文档时上传文件也能绑定到page上

This commit is contained in:
Sh1yu
2023-06-27 16:43:33 +08:00
parent d03a1fa746
commit 49d697347a
10 changed files with 100 additions and 19 deletions

View File

@@ -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)}),

View File

@@ -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('请先选择或创建空间')
}

View File

@@ -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',

View File

@@ -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">