组件化、移动模块提交
This commit is contained in:
@@ -11,7 +11,7 @@ public enum UserMsgType {
|
||||
// 6=wiki文档评论 7=wiki文档删除评论 8=wiki文档上传附件 9=wiki文档修改了父级 10=wiki文档点赞 11=wiki文档附件删除
|
||||
SIMPLE(1), WIKI_PAGE_CREATE(2), WIKI_PAGE_DELETE(3), WIKI_PAGE_UPDATE(4), WIKI_PAGE_AUTH(5),
|
||||
WIKI_PAGE_COMMENT(6), WIKI_PAGE_COMMENT_DEL(7), WIKI_PAGE_UPLOAD(8), WIKI_PAGE_PARENT(9), WIKI_PAGE_ZAN(10), WIKI_PAGE_FILE_DEL(11),
|
||||
WIKI_PAGE_ZAN_CANCEL(12),
|
||||
WIKI_PAGE_ZAN_CANCEL(12),WIKI_PAGE_MOVE(13),WIKI_PAGE_COPY(14)
|
||||
// !!增加类型的时候需要在zyplayer-doc-ui/wiki-ui/src/components/layouts/GlobalLayout.vue showUserMessage()方法添加类型支持
|
||||
;
|
||||
|
||||
|
||||
@@ -22,97 +22,105 @@ import java.util.Objects;
|
||||
*/
|
||||
@Service
|
||||
public class UserMessageServiceImpl extends ServiceImpl<UserMessageMapper, UserMessage> implements UserMessageService {
|
||||
|
||||
@Override
|
||||
public UserMessage createUserMessage(DocUserDetails currentUser, Long dataId, String dataDesc, DocSysType sysType, UserMsgType msgType) {
|
||||
UserMessage userMessage = new UserMessage();
|
||||
userMessage.setDataId(dataId);
|
||||
userMessage.setDataDesc(dataDesc);
|
||||
userMessage.setSysType(sysType.getType());
|
||||
userMessage.setMsgType(msgType.getType());
|
||||
userMessage.setOperatorUserId(currentUser.getUserId());
|
||||
userMessage.setOperatorUserName(currentUser.getUsername());
|
||||
return userMessage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addWikiMessage(UserMessage userMessage) {
|
||||
// 初始值,操作人的消息默认为已读
|
||||
userMessage.setMsgStatus(1);
|
||||
userMessage.setCreationTime(new Date());
|
||||
// 操作人
|
||||
userMessage.setAcceptUserId(userMessage.getOperatorUserId());
|
||||
this.setWikiMsgContentForOperator(userMessage);
|
||||
this.save(userMessage);
|
||||
// 影响人
|
||||
if (userMessage.getAffectUserId() != null && !Objects.equals(userMessage.getAffectUserId(), userMessage.getOperatorUserId())) {
|
||||
userMessage.setId(null);
|
||||
// 收影响人的消息为未读
|
||||
userMessage.setMsgStatus(0);
|
||||
userMessage.setAcceptUserId(userMessage.getAffectUserId());
|
||||
this.setWikiMsgContentForAffect(userMessage);
|
||||
this.save(userMessage);
|
||||
}
|
||||
// 后期可以添加文档的关注人等
|
||||
}
|
||||
|
||||
/**
|
||||
* 给操作人发通知的内容
|
||||
*
|
||||
* @param userMessage
|
||||
*/
|
||||
private void setWikiMsgContentForOperator(UserMessage userMessage) {
|
||||
if (Objects.equals(UserMsgType.WIKI_PAGE_UPLOAD.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您在‘%s’文档内上传了一个附件", userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_AUTH.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您修改了‘%s’文档内‘%s’的权限", userMessage.getDataDesc(), userMessage.getAffectUserName()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_COMMENT.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您评论了‘%s’", userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_COMMENT_DEL.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您删除了‘%s’文档的评论", userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_PARENT.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您修改了‘%s’文档的父级", userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_DELETE.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您删除了‘%s’", userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_CREATE.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您创建了‘%s’", userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_UPDATE.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您修改了‘%s’", userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_ZAN.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您赞同了‘%s’", userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_FILE_DEL.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您删除了‘%s’文档的一个附件", userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_ZAN_CANCEL.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您取消了对‘%s’文档的赞同", userMessage.getDataDesc()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 给影响人发通知的内容
|
||||
*
|
||||
* @param userMessage
|
||||
*/
|
||||
private void setWikiMsgContentForAffect(UserMessage userMessage) {
|
||||
if (Objects.equals(UserMsgType.WIKI_PAGE_UPLOAD.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("‘%s’为您的文档‘%s’上传了附件", userMessage.getOperatorUserName(), userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_AUTH.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您在‘%s’文档内的权限被‘%s’修改了", userMessage.getDataDesc(), userMessage.getOperatorUserName()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_COMMENT.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您的‘%s’文档收到了来自‘%s’的评论", userMessage.getDataDesc(), userMessage.getOperatorUserName()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_COMMENT_DEL.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("‘%s’删除了您的文档‘%s’的一条评论", userMessage.getOperatorUserName(), userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_PARENT.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您的‘%s’文档被‘%s’修改了父级", userMessage.getDataDesc(), userMessage.getOperatorUserName()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_DELETE.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您的‘%s’文档被‘%s’删除了", userMessage.getDataDesc(), userMessage.getOperatorUserName()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_UPDATE.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您的‘%s’文档被‘%s’修改了", userMessage.getDataDesc(), userMessage.getOperatorUserName()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_ZAN.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您的‘%s’文档收到了‘%s’的赞同", userMessage.getDataDesc(), userMessage.getOperatorUserName()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_FILE_DEL.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您的‘%s’文档被‘%s’删除了一个附件", userMessage.getDataDesc(), userMessage.getOperatorUserName()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_ZAN_CANCEL.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("‘%s’取消了对文档‘%s’的赞同", userMessage.getOperatorUserName(), userMessage.getDataDesc()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserMessage createUserMessage(DocUserDetails currentUser, Long dataId, String dataDesc, DocSysType sysType, UserMsgType msgType) {
|
||||
UserMessage userMessage = new UserMessage();
|
||||
userMessage.setDataId(dataId);
|
||||
userMessage.setDataDesc(dataDesc);
|
||||
userMessage.setSysType(sysType.getType());
|
||||
userMessage.setMsgType(msgType.getType());
|
||||
userMessage.setOperatorUserId(currentUser.getUserId());
|
||||
userMessage.setOperatorUserName(currentUser.getUsername());
|
||||
return userMessage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addWikiMessage(UserMessage userMessage) {
|
||||
// 初始值,操作人的消息默认为已读
|
||||
userMessage.setMsgStatus(1);
|
||||
userMessage.setCreationTime(new Date());
|
||||
// 操作人
|
||||
userMessage.setAcceptUserId(userMessage.getOperatorUserId());
|
||||
this.setWikiMsgContentForOperator(userMessage);
|
||||
this.save(userMessage);
|
||||
// 影响人
|
||||
if (userMessage.getAffectUserId() != null && !Objects.equals(userMessage.getAffectUserId(), userMessage.getOperatorUserId())) {
|
||||
userMessage.setId(null);
|
||||
// 收影响人的消息为未读
|
||||
userMessage.setMsgStatus(0);
|
||||
userMessage.setAcceptUserId(userMessage.getAffectUserId());
|
||||
this.setWikiMsgContentForAffect(userMessage);
|
||||
this.save(userMessage);
|
||||
}
|
||||
// 后期可以添加文档的关注人等
|
||||
}
|
||||
|
||||
/**
|
||||
* 给操作人发通知的内容
|
||||
*
|
||||
* @param userMessage
|
||||
*/
|
||||
private void setWikiMsgContentForOperator(UserMessage userMessage) {
|
||||
if (Objects.equals(UserMsgType.WIKI_PAGE_UPLOAD.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您在‘%s’文档内上传了一个附件", userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_AUTH.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您修改了‘%s’文档内‘%s’的权限", userMessage.getDataDesc(), userMessage.getAffectUserName()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_COMMENT.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您评论了‘%s’", userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_COMMENT_DEL.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您删除了‘%s’文档的评论", userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_PARENT.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您修改了‘%s’文档的父级", userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_DELETE.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您删除了‘%s’", userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_CREATE.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您创建了‘%s’", userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_UPDATE.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您修改了‘%s’", userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_ZAN.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您赞同了‘%s’", userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_FILE_DEL.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您删除了‘%s’文档的一个附件", userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_ZAN_CANCEL.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您取消了对‘%s’文档的赞同", userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_MOVE.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您移动了文档‘%s’", userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_COPY.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您复制了文档‘%s’", userMessage.getDataDesc()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 给影响人发通知的内容
|
||||
*
|
||||
* @param userMessage
|
||||
*/
|
||||
private void setWikiMsgContentForAffect(UserMessage userMessage) {
|
||||
if (Objects.equals(UserMsgType.WIKI_PAGE_UPLOAD.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("‘%s’为您的文档‘%s’上传了附件", userMessage.getOperatorUserName(), userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_AUTH.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您在‘%s’文档内的权限被‘%s’修改了", userMessage.getDataDesc(), userMessage.getOperatorUserName()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_COMMENT.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您的‘%s’文档收到了来自‘%s’的评论", userMessage.getDataDesc(), userMessage.getOperatorUserName()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_COMMENT_DEL.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("‘%s’删除了您的文档‘%s’的一条评论", userMessage.getOperatorUserName(), userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_PARENT.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您的‘%s’文档被‘%s’修改了父级", userMessage.getDataDesc(), userMessage.getOperatorUserName()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_DELETE.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您的‘%s’文档被‘%s’删除了", userMessage.getDataDesc(), userMessage.getOperatorUserName()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_UPDATE.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您的‘%s’文档被‘%s’修改了", userMessage.getDataDesc(), userMessage.getOperatorUserName()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_ZAN.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您的‘%s’文档收到了‘%s’的赞同", userMessage.getDataDesc(), userMessage.getOperatorUserName()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_FILE_DEL.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("您的‘%s’文档被‘%s’删除了一个附件", userMessage.getDataDesc(), userMessage.getOperatorUserName()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_ZAN_CANCEL.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("‘%s’取消了对文档‘%s’的赞同", userMessage.getOperatorUserName(), userMessage.getDataDesc()));
|
||||
}else if (Objects.equals(UserMsgType.WIKI_PAGE_MOVE.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("‘%s’移动了文档‘%s’", userMessage.getOperatorUserName(), userMessage.getDataDesc()));
|
||||
} else if (Objects.equals(UserMsgType.WIKI_PAGE_COPY.getType(), userMessage.getMsgType())) {
|
||||
userMessage.setMsgContent(String.format("‘%s’复制了文档‘%s’", userMessage.getOperatorUserName(), userMessage.getDataDesc()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,8 @@ 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)}),
|
||||
copyPage: (data) => request({url: '/zyplayer-doc-wiki/page/copy', method: 'post', data: Qs.stringify(data)}),
|
||||
movePage: (data) => request({url: '/zyplayer-doc-wiki/page/move', method: 'post', data: Qs.stringify(data)}),
|
||||
renamePage: (data) => request({url: '/zyplayer-doc-wiki/page/rename', 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)}),
|
||||
|
||||
@@ -61,17 +61,17 @@
|
||||
let fileList = ref([]);
|
||||
let emit = defineEmits(['choosePageIdFunc', 'doGetPageList'])
|
||||
let props = defineProps({
|
||||
choiceSpace: String,
|
||||
choosePageId: String,
|
||||
nowPageId: String,
|
||||
funcId: String
|
||||
choiceSpace: Number,
|
||||
choosePageId: Number,
|
||||
nowPageId: Number,
|
||||
funcId: Number
|
||||
});
|
||||
|
||||
const doAUpload = (data) => {
|
||||
let formData = new FormData()
|
||||
formData.append('files', data.file)
|
||||
formData.append('pageId', props.choosePageId)
|
||||
if (props.choosePageId === '0') {
|
||||
if (props.choosePageId === 0) {
|
||||
formData.append('id', props.choiceSpace)
|
||||
}
|
||||
formData.append('importFlag', true)
|
||||
|
||||
@@ -2,111 +2,114 @@
|
||||
<div class="global-layout-vue">
|
||||
<el-container>
|
||||
<el-aside v-show="leftCollapse" :style="{ width: rightAsideWidth + 'px' }">
|
||||
<div style="padding: 10px;height: 100%;box-sizing: border-box;background: #fafafa;">
|
||||
<div style="margin-bottom: 5px">
|
||||
<el-select :model-value="choiceSpace" filterable placeholder="选择空间" style="width: 100%" @change="spaceChangeEvents">
|
||||
<el-option-group label="">
|
||||
<el-option :key="0" label="创建空间" :value="0"></el-option>
|
||||
<el-option :key="-1" label="空间管理" :value="-1"></el-option>
|
||||
</el-option-group>
|
||||
<el-option-group label=""></el-option-group>
|
||||
<el-option v-for="item in spaceOptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<el-autocomplete v-model="searchKeywords" :fetch-suggestions="doSearchByKeywords" placeholder="在当前空间搜索" popper-class="search-autocomplete" style="width: 100%; margin: 10px 0" @select="handleSearchKeywordsSelect">
|
||||
<template v-slot="{ item }">
|
||||
<div class="search-option-item">
|
||||
<div class="title">
|
||||
<span v-html="item.pageTitle || '-'"></span>
|
||||
</div>
|
||||
<span class="content" v-html="item.previewContent || '-'"></span>
|
||||
</div>
|
||||
</template>
|
||||
</el-autocomplete>
|
||||
<div class="space-folder-box">
|
||||
<el-tooltip style="margin: 4px" effect="dark" :content="descriptorForTree" placement="top">
|
||||
<span style="color:#888;font-size: 12px;cursor: pointer" @click="changeDropWownStatus">空间目录</span>
|
||||
</el-tooltip>
|
||||
<LeftSidebar
|
||||
ref="leftSidebarDir"
|
||||
:readOnly=false
|
||||
:wikiPageList="wikiPageList"
|
||||
:spaceOptions="spaceOptions"
|
||||
:nowPageId="nowPageId"
|
||||
:choiceSpace="choiceSpace"
|
||||
@setNowPageId="setNowPageId"
|
||||
@doGetPageList="doGetPageList"
|
||||
@spaceChangeEvents="spaceChangeEvents">
|
||||
<template v-slot:addMenuDir>
|
||||
<AddMenu
|
||||
:choiceSpace="choiceSpace+''"
|
||||
:choosePageId="choosePageId+''"
|
||||
:nowPageId = "nowPageId+''"
|
||||
:funcId = "'0'"
|
||||
:choiceSpace="choiceSpace"
|
||||
:choosePageId="choosePageId"
|
||||
:nowPageId = "nowPageId"
|
||||
:funcId = "0"
|
||||
@choosePageIdFunc="choosePageIdFunc"
|
||||
@doGetPageList="doGetPageList"
|
||||
/>
|
||||
</div>
|
||||
<div class="wiki-page-tree-box">
|
||||
<el-tree
|
||||
:class="explanClass"
|
||||
ref="wikiPageTreeRef"
|
||||
:current-node-key="nowPageId"
|
||||
:data="wikiPageList"
|
||||
:default-expanded-keys="wikiPageExpandedKeys"
|
||||
:expand-on-click-node="true"
|
||||
:filter-node-method="filterPageNode"
|
||||
:props="defaultProps"
|
||||
draggable
|
||||
highlight-current
|
||||
node-key="id"
|
||||
style="background-color: #fafafa"
|
||||
@node-click="handleNodeClick"
|
||||
@node-expand="handleNodeExpand"
|
||||
@node-drop="handlePageDrop">
|
||||
<template v-slot="{ node, data }">
|
||||
<div class="page-tree-node" @mouseover="changeNodeOptionStatus(data) ">
|
||||
<div style="width: calc(100% - 30px);overflow: hidden;text-overflow: ellipsis;white-space: nowrap;">
|
||||
<!--图标-->
|
||||
<el-icon v-if="data.editorType === 0" class="clickAddIcon" style="margin-right: 5px;vertical-align: middle;">
|
||||
<svg width="1em" height="1em" viewBox="0 0 48 48" fill="none"><path d="M5 8C5 6.89543 5.89543 6 7 6H19L24 12H41C42.1046 12 43 12.8954 43 14V40C43 41.1046 42.1046 42 41 42H7C5.89543 42 5 41.1046 5 40V8Z" fill="none" stroke="currentColor" stroke-width="4" stroke-linejoin="round"></path><path d="M43 22H5" stroke="currentColor" stroke-width="4" stroke-linejoin="round"></path><path d="M5 16V28" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path><path d="M43 16V28" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path></svg>
|
||||
</el-icon>
|
||||
<el-icon v-else-if="data.editorType === 1" class="clickAddIcon" style="margin-right: 5px;vertical-align: middle;">
|
||||
<svg width="1em" height="1em" viewBox="0 0 48 48" fill="none"><rect x="6" y="6" width="36" height="36" rx="3" fill="none" stroke="currentColor" stroke-width="4"></rect><path d="M14 16L18 32L24 19L30 32L34 16" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path></svg>
|
||||
</el-icon>
|
||||
<el-icon v-else-if="data.editorType === 2" class="clickAddIcon" style="margin-right: 5px;vertical-align: middle;">
|
||||
<el-icon-document/>
|
||||
</el-icon>
|
||||
<!--标题-->
|
||||
<a-input v-if="data.renaming" v-model:value="data.name" class="rename-input" placeholder="请输入文档名称" @blur="doRename(node,data)" @click.stop/>
|
||||
<span v-else style="vertical-align: middle;">
|
||||
</template>
|
||||
<template v-slot:addMenuNode="{node,data}">
|
||||
<div class="page-tree-node" @mouseover="changeNodeOptionStatus(data) ">
|
||||
<div style="width: calc(100% - 30px);overflow: hidden;text-overflow: ellipsis;white-space: nowrap;">
|
||||
<!--图标-->
|
||||
<el-icon v-if="data.editorType === 0" class="clickAddIcon" style="margin-right: 5px;vertical-align: middle;">
|
||||
<svg width="1em" height="1em" viewBox="0 0 48 48" fill="none"><path d="M5 8C5 6.89543 5.89543 6 7 6H19L24 12H41C42.1046 12 43 12.8954 43 14V40C43 41.1046 42.1046 42 41 42H7C5.89543 42 5 41.1046 5 40V8Z" fill="none" stroke="currentColor" stroke-width="4" stroke-linejoin="round"></path><path d="M43 22H5" stroke="currentColor" stroke-width="4" stroke-linejoin="round"></path><path d="M5 16V28" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path><path d="M43 16V28" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path></svg>
|
||||
</el-icon>
|
||||
<el-icon v-else-if="data.editorType === 1" class="clickAddIcon" style="margin-right: 5px;vertical-align: middle;">
|
||||
<svg width="1em" height="1em" viewBox="0 0 48 48" fill="none"><rect x="6" y="6" width="36" height="36" rx="3" fill="none" stroke="currentColor" stroke-width="4"></rect><path d="M14 16L18 32L24 19L30 32L34 16" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path></svg>
|
||||
</el-icon>
|
||||
<el-icon v-else-if="data.editorType === 2" class="clickAddIcon" style="margin-right: 5px;vertical-align: middle;">
|
||||
<el-icon-document/>
|
||||
</el-icon>
|
||||
<!--标题-->
|
||||
<a-input v-if="data.renaming" v-model:value="data.name" class="rename-input" placeholder="请输入文档名称" @blur="doRename(node,data)" @click.stop/>
|
||||
<span v-else style="vertical-align: middle;">
|
||||
<el-tooltip :content="node.label" placement="top-start" :show-after="1000">{{ node.label }}</el-tooltip>
|
||||
</span>
|
||||
<!--操作-->
|
||||
<div class="page-action-box" :class="data.renaming?'renaming':''" @click.stop>
|
||||
<AddMenu
|
||||
:choiceSpace="choiceSpace+''"
|
||||
:choosePageId="choosePageId+''"
|
||||
:nowPageId = "nowPageId+''"
|
||||
:funcId = "data.id+''"
|
||||
@choosePageIdFunc="choosePageIdFunc"
|
||||
@doGetPageList="doGetPageList"
|
||||
/>
|
||||
<a-dropdown :trigger="['click']" @click="choosePageIdFunc(data.id)">
|
||||
<el-button :icon="MoreFilled" text class="page-action-dropdown-btn"></el-button>
|
||||
<template #overlay>
|
||||
<a-menu>
|
||||
<a-menu-item key="0" @click="rename(node,data)">
|
||||
<el-icon class="clickAddIcon" style="margin-right: 5px">
|
||||
<svg width="1em" height="1em" viewBox="0 0 48 48" fill="none"><path d="M42 26V40C42 41.1046 41.1046 42 40 42H8C6.89543 42 6 41.1046 6 40V8C6 6.89543 6.89543 6 8 6L22 6" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path><path d="M14 26.7199V34H21.3172L42 13.3081L34.6951 6L14 26.7199Z" fill="none" stroke="currentColor" stroke-width="4" stroke-linejoin="round"></path></svg>
|
||||
</el-icon>
|
||||
重命名
|
||||
</a-menu-item>
|
||||
<a-menu-item key="1" @click="deleteWikiPage">
|
||||
<el-icon class="clickAddIcon" style="margin-right: 5px">
|
||||
<svg width="1em" height="1em" viewBox="0 0 48 48" fill="none"><path d="M9 10V44H39V10H9Z" fill="none" stroke="currentColor" stroke-width="4" stroke-linejoin="round"></path><path d="M20 20V33" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path><path d="M28 20V33" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path><path d="M4 10H44" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path><path d="M16 10L19.289 4H28.7771L32 10H16Z" fill="none" stroke="currentColor" stroke-width="4" stroke-linejoin="round"></path></svg>
|
||||
</el-icon>
|
||||
删除
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
</template>
|
||||
</a-dropdown>
|
||||
</div>
|
||||
</div>
|
||||
<!--操作-->
|
||||
<div class="page-action-box" :class="data.renaming?'renaming':''" @click.stop>
|
||||
<AddMenu
|
||||
:choiceSpace="choiceSpace"
|
||||
:choosePageId="choosePageId"
|
||||
:nowPageId = "nowPageId"
|
||||
:funcId = "data.id"
|
||||
@choosePageIdFunc="choosePageIdFunc"
|
||||
@doGetPageList="doGetPageList"
|
||||
/>
|
||||
<a-dropdown :trigger="['click']" @click="choosePageIdFunc(data.id)">
|
||||
<el-button :icon="MoreFilled" text class="page-action-dropdown-btn"></el-button>
|
||||
<template #overlay>
|
||||
<a-menu>
|
||||
<a-menu-item key="0" @click="rename(node,data)">
|
||||
<el-icon class="clickAddIcon" style="margin-right: 5px">
|
||||
<svg width="1em" height="1em" viewBox="0 0 48 48" fill="none"><path d="M42 26V40C42 41.1046 41.1046 42 40 42H8C6.89543 42 6 41.1046 6 40V8C6 6.89543 6.89543 6 8 6L22 6" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path><path d="M14 26.7199V34H21.3172L42 13.3081L34.6951 6L14 26.7199Z" fill="none" stroke="currentColor" stroke-width="4" stroke-linejoin="round"></path></svg>
|
||||
</el-icon>
|
||||
重命名
|
||||
</a-menu-item>
|
||||
<a-menu-item key="1" @click="deleteWikiPage">
|
||||
<el-icon class="clickAddIcon" style="margin-right: 5px">
|
||||
<svg width="1em" height="1em" viewBox="0 0 48 48" fill="none"><path d="M9 10V44H39V10H9Z" fill="none" stroke="currentColor" stroke-width="4" stroke-linejoin="round"></path><path d="M20 20V33" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path><path d="M28 20V33" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path><path d="M4 10H44" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path><path d="M16 10L19.289 4H28.7771L32 10H16Z" fill="none" stroke="currentColor" stroke-width="4" stroke-linejoin="round"></path></svg>
|
||||
</el-icon>
|
||||
删除
|
||||
</a-menu-item>
|
||||
<a-sub-menu key="2" title="移动文档">
|
||||
<a-menu-item key="3" @click="openMoveMenu(false)">
|
||||
<el-icon class="clickAddIcon" style="margin-right: 5px">
|
||||
<svg width="1em" height="1em" viewBox="0 0 48 48" fill="none"><path d="M9 10V44H39V10H9Z" fill="none" stroke="currentColor" stroke-width="4" stroke-linejoin="round"></path><path d="M20 20V33" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path><path d="M28 20V33" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path><path d="M4 10H44" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path><path d="M16 10L19.289 4H28.7771L32 10H16Z" fill="none" stroke="currentColor" stroke-width="4" stroke-linejoin="round"></path></svg>
|
||||
</el-icon>
|
||||
复制文档
|
||||
</a-menu-item>
|
||||
<a-menu-item key="4" @click="openMoveMenu(true)">
|
||||
<el-icon class="clickAddIcon" style="margin-right: 5px">
|
||||
<svg width="1em" height="1em" viewBox="0 0 48 48" fill="none"><path d="M9 10V44H39V10H9Z" fill="none" stroke="currentColor" stroke-width="4" stroke-linejoin="round"></path><path d="M20 20V33" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path><path d="M28 20V33" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path><path d="M4 10H44" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path><path d="M16 10L19.289 4H28.7771L32 10H16Z" fill="none" stroke="currentColor" stroke-width="4" stroke-linejoin="round"></path></svg>
|
||||
</el-icon>
|
||||
迁移文档
|
||||
</a-menu-item>
|
||||
<a-modal
|
||||
v-model:open="visibleMoveMenu"
|
||||
title="选择"
|
||||
@ok="handleOk"
|
||||
@cancel="handleCancel"
|
||||
ok-text="确认"
|
||||
cancel-text="取消"
|
||||
:confirm-loading="aModalWaiting"
|
||||
:destroyOnClose=true
|
||||
:closable=false>
|
||||
<LeftSidebar
|
||||
:readOnly=true
|
||||
:wikiPageList="moveToWikiPageList"
|
||||
:spaceOptions="spaceOptions"
|
||||
:nowPageId="moveToPageId"
|
||||
:choiceSpace="moveToSpaceId"
|
||||
@setNowPageId="setNowPageId"
|
||||
@doGetPageList="doGetPageList"
|
||||
@spaceChangeEvents="spaceChangeEvents"/>
|
||||
</a-modal>
|
||||
</a-sub-menu>
|
||||
</a-menu>
|
||||
</template>
|
||||
</a-dropdown>
|
||||
</div>
|
||||
</template>
|
||||
</el-tree>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</template>
|
||||
</LeftSidebar>
|
||||
</el-aside>
|
||||
<RightResize v-show="leftCollapse" v-model:value="rightAsideWidth" @change="rightAsideWidthChange"></RightResize>
|
||||
<el-container>
|
||||
@@ -200,6 +203,7 @@
|
||||
Check as ElIconCheck,
|
||||
MoreFilled,
|
||||
} from '@element-plus/icons-vue'
|
||||
|
||||
import {onBeforeUnmount, toRefs, ref, reactive, onMounted, watch, defineProps, nextTick, defineEmits, defineExpose, computed} from 'vue';
|
||||
import {onBeforeRouteUpdate, useRouter, useRoute} from "vue-router";
|
||||
import {ElMessageBox, ElMessage} from 'element-plus'
|
||||
@@ -208,13 +212,13 @@
|
||||
import CreateSpace from '../space/CreateSpace'
|
||||
import RightResize from './RightResize.vue'
|
||||
import AddMenu from './AddMenu.vue'
|
||||
import LeftSidebar from './LeftSidebar.vue'
|
||||
import AboutDialog from '../../views/common/AboutDialog'
|
||||
import {useStoreDisplay} from '@/store/wikiDisplay.js'
|
||||
import {useStoreUserData} from "@/store/userData";
|
||||
import {useStorePageData} from "@/store/pageData";
|
||||
import { defineComponent } from 'vue';
|
||||
import { DownOutlined } from '@ant-design/icons-vue';
|
||||
import axios from "axios";
|
||||
|
||||
let route = useRoute();
|
||||
let router = useRouter();
|
||||
@@ -226,17 +230,18 @@
|
||||
let pathIndex = ref([]);
|
||||
let defaultProps = ref({children: 'children', label: 'name',});
|
||||
// 空间搜索相关
|
||||
let spaceOptions = ref([]);
|
||||
let spaceOptions = ref();
|
||||
let spaceList = ref([]);
|
||||
let choiceSpace = ref('');
|
||||
let choiceSpace = ref(undefined);
|
||||
let nowSpaceShow = ref({});
|
||||
let nowPageId = ref('');
|
||||
// 依据目录树存储的map全局对象
|
||||
let treePathDataMap = ref(new Map());
|
||||
// 搜索的输入内容
|
||||
let searchKeywords = ref('');
|
||||
let nowPageId = ref(0);
|
||||
let moveToPageId = ref(0);
|
||||
let moveToSpaceId = ref(0);
|
||||
let moveToWikiPageList = ref([]);
|
||||
let leftSideBarDir = ref(null);
|
||||
|
||||
// 页面展示相关
|
||||
let wikiPageList = ref([]);
|
||||
let wikiPageList = ref();
|
||||
let wikiPage = ref({});
|
||||
let wikiPageExpandedKeys = ref([]);
|
||||
let userSelfInfo = ref({});
|
||||
@@ -247,10 +252,33 @@
|
||||
let userMsgParam = ref({sysType: 2, pageNum: 1, pageSize: 20,});
|
||||
let rightAsideWidth = ref(300);
|
||||
let optionPageId = ref('');
|
||||
let descriptorForTree = ref("点击收起目录");
|
||||
let explan = ref(false);
|
||||
let explanClass = ref("el-tree");
|
||||
let choosePageId = ref('');
|
||||
let choosePageId = ref(0);
|
||||
let visibleMoveMenu = ref(false);
|
||||
let onlyMoveMode = ref(false);
|
||||
let aModalWaiting = ref(false);
|
||||
|
||||
watch(()=>nowPageId ,()=>{
|
||||
leftSideBarDir.value.assisSetCurrentKey();
|
||||
})
|
||||
|
||||
//useless function
|
||||
/*
|
||||
|
||||
// 依据目录树存储的map全局对象
|
||||
let treePathDataMap = ref(new Map());
|
||||
let wikiPageTreeRef = ref();
|
||||
|
||||
const searchByKeywords = () => {
|
||||
wikiPageTreeRef.value.filter(searchKeywords.value)
|
||||
}
|
||||
const searchByKeywordsNewPage = () => {
|
||||
var routeUrl = router.resolve({
|
||||
path: '/page/search',
|
||||
query: {keywords: searchKeywords.value}
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
}
|
||||
*/
|
||||
|
||||
onMounted(() => {
|
||||
loadSpaceList()
|
||||
@@ -258,6 +286,45 @@
|
||||
getSelfUserInfo()
|
||||
});
|
||||
|
||||
const openMoveMenu = (onlyMove) =>{
|
||||
onlyMoveMode.value = onlyMove
|
||||
visibleMoveMenu.value =true
|
||||
moveToPageId.value = nowPageId.value
|
||||
moveToSpaceId.value = choiceSpace.value
|
||||
moveToWikiPageList.value = wikiPageList.value
|
||||
}
|
||||
const handleOk = (onlyMove) =>{
|
||||
aModalWaiting.value = true
|
||||
if (onlyMoveMode.value){
|
||||
pageApi.movePage({"id": choosePageId.value,"spaceId": choiceSpace.value,"moveToPageId":moveToPageId.value,"moveToSpaceId":moveToSpaceId.value})
|
||||
.then((json) => {
|
||||
doGetPageList(null)
|
||||
ElMessage.success('迁移成功')
|
||||
handleCancel()
|
||||
aModalWaiting.value = false
|
||||
}).catch((e) => {
|
||||
aModalWaiting.value = false
|
||||
})
|
||||
return
|
||||
}
|
||||
pageApi.copyPage({"id": choosePageId.value,"spaceId": choiceSpace.value,"moveToPageId":moveToPageId.value,"moveToSpaceId":moveToSpaceId.value})
|
||||
.then((json) => {
|
||||
doGetPageList(null)
|
||||
ElMessage.success('复制成功')
|
||||
handleCancel()
|
||||
aModalWaiting.value = false
|
||||
}).catch((e) => {
|
||||
aModalWaiting.value = false
|
||||
})
|
||||
return
|
||||
}
|
||||
const handleCancel = () =>{
|
||||
visibleMoveMenu.value =false
|
||||
moveToPageId.value = 0
|
||||
moveToSpaceId.value = 0
|
||||
moveToWikiPageList.value = []
|
||||
}
|
||||
|
||||
const deleteWikiPage = () => {
|
||||
ElMessageBox.confirm('确定要删除此页面及其所有子页面吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
@@ -275,6 +342,18 @@
|
||||
const choosePageIdFunc = (id) => {
|
||||
choosePageId.value = id
|
||||
}
|
||||
|
||||
const setNowPageId = (id,readOnly)=>{
|
||||
console.log(readOnly)
|
||||
if (readOnly){
|
||||
moveToPageId.value = id
|
||||
console.log("moveToPageId修改")
|
||||
return
|
||||
}
|
||||
nowPageId.value = id
|
||||
console.log("nowPageId修改")
|
||||
}
|
||||
|
||||
const rename = (node,data) => {
|
||||
data.renaming = true
|
||||
}
|
||||
@@ -287,26 +366,16 @@
|
||||
})
|
||||
|
||||
}
|
||||
const changeDropWownStatus = () => {
|
||||
if(explan.value){
|
||||
explanClass.value = "el-tree"
|
||||
descriptorForTree.value ="点击收起目录"
|
||||
explan.value = false
|
||||
}else {
|
||||
explanClass.value = "hidTree"
|
||||
descriptorForTree.value ="点击展开目录"
|
||||
explan.value = true
|
||||
}
|
||||
}
|
||||
|
||||
const loadPageList = (param) => {
|
||||
param = param || {}
|
||||
doGetPageList(param.parentId, param.node)
|
||||
}
|
||||
|
||||
|
||||
const changeNodeOptionStatus = (param) => {
|
||||
optionPageId.value = param.id
|
||||
}
|
||||
|
||||
const turnLeftCollapse = () => {
|
||||
leftCollapse.value = !leftCollapse.value
|
||||
setTimeout(() => {
|
||||
@@ -322,70 +391,7 @@
|
||||
// 展开没有触发子节点的加载,如果去加载子节点有还找不到当前的node,暂不展开
|
||||
// wikiPageExpandedKeys.value= [pageId];
|
||||
}
|
||||
const doSearchByKeywords = (queryString, callback) => {
|
||||
if (!queryString || !queryString.trim()) {
|
||||
callback([])
|
||||
return
|
||||
}
|
||||
pageApi
|
||||
.pageNews({spaceId: choiceSpace.value, keywords: queryString})
|
||||
.then((json) => {
|
||||
let spacePageNews = json.data || []
|
||||
callback(spacePageNews)
|
||||
})
|
||||
}
|
||||
const handleSearchKeywordsSelect = (item) => {
|
||||
searchKeywords.value = ''
|
||||
router.push({path: '/page/show', query: {pageId: item.pageId}})
|
||||
}
|
||||
let wikiPageTreeRef = ref();
|
||||
const searchByKeywords = () => {
|
||||
wikiPageTreeRef.value.filter(searchKeywords.value)
|
||||
}
|
||||
const searchByKeywordsNewPage = () => {
|
||||
var routeUrl = router.resolve({
|
||||
path: '/page/search',
|
||||
query: {keywords: searchKeywords.value}
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
}
|
||||
const handleNodeClick = (data) => {
|
||||
//console.log('点击节点:', data, nowPageId.value)
|
||||
|
||||
nowPageId.value = data.id
|
||||
if (data.editorType !== 0) {
|
||||
router.push({path: '/page/show', query: {pageId: data.id}})
|
||||
}
|
||||
handleNodeExpand(data)
|
||||
}
|
||||
const handleNodeExpand = (node) => {
|
||||
|
||||
if (
|
||||
node.children &&
|
||||
node.children.length > 0 &&
|
||||
node.children[0].needLoad
|
||||
) {
|
||||
console.log('加载节点:', node)
|
||||
doGetPageList(node.id, node)
|
||||
}
|
||||
}
|
||||
const handlePageDrop = (draggingNode, dropNode, dropType, ev) => {
|
||||
|
||||
console.log('tree drop: ', draggingNode.data, dropNode.data, dropType)
|
||||
// 'prev'、'inner'、'next'
|
||||
// before、after、inner
|
||||
var param = {id: draggingNode.data.id, parentId: dropNode.data.parentId}
|
||||
if (dropType == 'inner') {
|
||||
param.parentId = dropNode.data.id
|
||||
} else if (dropType == 'before') {
|
||||
param.beforeSeq = dropNode.data.seqNo
|
||||
} else if (dropType == 'after') {
|
||||
param.afterSeq = dropNode.data.seqNo
|
||||
}
|
||||
pageApi.pageChangeParent(param).then((res) => {
|
||||
doGetPageList(null)
|
||||
})
|
||||
}
|
||||
const loadUserMessageIfPopVisible = () => {
|
||||
if (!userMessagePopVisible.value) {
|
||||
loadUserMessageList()
|
||||
@@ -399,17 +405,19 @@
|
||||
userMessageList.value.filter((item) => item.msgStatus == 0).length > 0
|
||||
})
|
||||
}
|
||||
|
||||
const showUserMessage = (row) => {
|
||||
if (row.msgStatus == 0) {
|
||||
userApi.readUserMessage({ids: row.id}).then(() => {
|
||||
loadUserMessageList()
|
||||
})
|
||||
}
|
||||
if (row.msgType >= 2 && row.msgType <= 12) {
|
||||
if (row.msgType >= 2 && row.msgType <= 14) {
|
||||
router.push({path: '/page/show', query: {pageId: row.dataId}})
|
||||
userMessagePopVisible.value = false
|
||||
}
|
||||
}
|
||||
|
||||
const readAllUserMessage = () => {
|
||||
let msgIds = []
|
||||
userMessageList.value
|
||||
@@ -423,18 +431,23 @@
|
||||
loadUserMessageList()
|
||||
})
|
||||
}
|
||||
|
||||
const handleCurrentChange = (val) => {
|
||||
userMsgParam.value.pageNum = val
|
||||
loadUserMessageList()
|
||||
}
|
||||
const filterPageNode = (value, data) => {
|
||||
if (!value || !data.name) return true;
|
||||
// issues:I2CG72 忽略大小写
|
||||
let name = data.name.toLowerCase();
|
||||
return name.indexOf(value.toLowerCase()) !== -1;
|
||||
}
|
||||
|
||||
let createSpaceRef = ref();
|
||||
const spaceChangeEvents = (data) => {
|
||||
const spaceChangeEvents = (data,readonly) => {
|
||||
if (readonly){
|
||||
moveToSpaceId.value = data
|
||||
setNowPageId(0,readonly)
|
||||
let param = {spaceId:moveToSpaceId.value}
|
||||
pageApi.pageList(param).then((json)=>{
|
||||
moveToWikiPageList.value = json.data||[]
|
||||
})
|
||||
return
|
||||
}
|
||||
if (data === 0) {
|
||||
// 新建空间
|
||||
createSpaceRef.value.show();
|
||||
@@ -442,8 +455,8 @@
|
||||
// 管理空间
|
||||
router.push({path: '/space/manage'});
|
||||
} else {
|
||||
nowPageId.value = '';
|
||||
choiceSpace.value = data;
|
||||
nowPageId.value = 0;
|
||||
choiceSpace.value = Number(data);
|
||||
nowSpaceShow.value = spaceList.value.find((item) => item.id === data);
|
||||
storePage.spaceInfo = nowSpaceShow.value;
|
||||
doGetPageList(null);
|
||||
@@ -466,7 +479,7 @@
|
||||
nowSpaceShow.value = nowSpaceShowTemp;
|
||||
storePage.spaceInfo = nowSpaceShowTemp;
|
||||
choiceSpace.value = nowSpaceId;
|
||||
nowPageId.value = '';
|
||||
nowPageId.value = 0;
|
||||
doGetPageList(null);
|
||||
// TODO 在首页时跳转
|
||||
try {
|
||||
@@ -479,17 +492,11 @@
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const doGetPageList = (parentId, node) => {
|
||||
let param = {spaceId: choiceSpace.value}
|
||||
pageApi.pageList(param).then((json) => {
|
||||
wikiPageList.value = json.data || []
|
||||
// 设置默认选中效果
|
||||
nextTick(() => {
|
||||
nowPageId.value = route.query.pageId
|
||||
if (nowPageId.value) {
|
||||
wikiPageTreeRef.value.setCurrentKey(nowPageId.value)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
let aboutDialogRef = ref();
|
||||
@@ -628,81 +635,81 @@
|
||||
</style>
|
||||
|
||||
<style lang="scss">
|
||||
.space-folder-box {
|
||||
margin-left: 10px;
|
||||
margin-bottom: 10px;
|
||||
position: relative;
|
||||
.space-folder-box {
|
||||
margin-left: 10px;
|
||||
margin-bottom: 10px;
|
||||
position: relative;
|
||||
|
||||
.folder-action-dropdown-btn {
|
||||
padding: 0 8px;
|
||||
height: 25px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.wiki-page-tree-box {
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
padding-bottom: 30px;
|
||||
|
||||
.el-tree-node__content {
|
||||
height: 35px;
|
||||
position: relative;
|
||||
|
||||
.page-tree-node {
|
||||
width: 100%;
|
||||
|
||||
.label {
|
||||
.el-icon {
|
||||
vertical-align: middle;
|
||||
.folder-action-dropdown-btn {
|
||||
padding: 0 8px;
|
||||
height: 25px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.text {
|
||||
margin-left: 5px;
|
||||
vertical-align: middle;
|
||||
|
||||
max-width: calc(100% - 40px);
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
.rename-input {
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
.page-action-box {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
background: #fff;
|
||||
border-radius: 4px;
|
||||
display: none;
|
||||
|
||||
.page-action-dropdown-btn {
|
||||
padding: 0 8px;
|
||||
height: 35px;
|
||||
margin-top: -1px;
|
||||
}
|
||||
|
||||
.el-button+.el-button {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.page-action-box.renaming {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover .page-action-box {
|
||||
display: block;
|
||||
.wiki-page-tree-box {
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
padding-bottom: 30px;
|
||||
|
||||
.el-tree-node__content {
|
||||
height: 35px;
|
||||
position: relative;
|
||||
|
||||
.page-tree-node {
|
||||
width: 100%;
|
||||
|
||||
.label {
|
||||
.el-icon {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.text {
|
||||
margin-left: 5px;
|
||||
vertical-align: middle;
|
||||
|
||||
max-width: calc(100% - 40px);
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
.rename-input {
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
.page-action-box {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
background: #fff;
|
||||
border-radius: 4px;
|
||||
display: none;
|
||||
|
||||
.page-action-dropdown-btn {
|
||||
padding: 0 8px;
|
||||
height: 35px;
|
||||
margin-top: -1px;
|
||||
}
|
||||
|
||||
.el-button+.el-button {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.page-action-box.renaming {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover .page-action-box {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
182
zyplayer-doc-ui/wiki-ui/src/components/layouts/LeftSidebar.vue
Normal file
182
zyplayer-doc-ui/wiki-ui/src/components/layouts/LeftSidebar.vue
Normal file
@@ -0,0 +1,182 @@
|
||||
<template>
|
||||
<div style="padding: 10px;height: 100%;box-sizing: border-box;background: #fafafa;">
|
||||
<div style="margin-bottom: 5px">
|
||||
<el-select :model-value="choiceSpace" filterable placeholder="选择空间" style="width: 100%"
|
||||
@change="spaceChangeEvents">
|
||||
<el-option-group label="" v-if="!props.readOnly">
|
||||
<el-option :key="0" label="创建空间" :value="0"></el-option>
|
||||
<el-option :key="-1" label="空间管理" :value="-1"></el-option>
|
||||
</el-option-group>
|
||||
<el-option-group label=""></el-option-group>
|
||||
<el-option v-for="item in spaceOptions" :key="item.value" :label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<el-autocomplete v-model="searchKeywords" v-if="!props.readOnly" :fetch-suggestions="doSearchByKeywords"
|
||||
placeholder="在当前空间搜索"
|
||||
popper-class="search-autocomplete" style="width: 100%; margin: 10px 0"
|
||||
@select="handleSearchKeywordsSelect">
|
||||
<template v-slot="{ item }">
|
||||
<div class="search-option-item">
|
||||
<div class="title">
|
||||
<span v-html="item.pageTitle || '-'"></span>
|
||||
</div>
|
||||
<span class="content" v-html="item.previewContent || '-'"></span>
|
||||
</div>
|
||||
</template>
|
||||
</el-autocomplete>
|
||||
<div class="space-folder-box" v-if="!props.readOnly">
|
||||
<el-tooltip style="margin: 4px" effect="dark" :content="descriptorForTree" placement="top">
|
||||
<span style="color:#888;font-size: 12px;cursor: pointer" @click="changeDropWownStatus">空间目录</span>
|
||||
</el-tooltip>
|
||||
<slot name="addMenuDir"/>
|
||||
</div>
|
||||
<div class="wiki-page-tree-box">
|
||||
<el-tree
|
||||
:class="explanClass"
|
||||
ref="wikiPageTreeRef"
|
||||
:current-node-key="props.nowPageId"
|
||||
:data="props.wikiPageList"
|
||||
:default-expanded-keys="wikiPageExpandedKeys"
|
||||
:expand-on-click-node="true"
|
||||
:filter-node-method="filterPageNode"
|
||||
:props="defaultProps"
|
||||
:draggable="!props.readOnly"
|
||||
highlight-current
|
||||
node-key="id"
|
||||
style="background-color: #fafafa"
|
||||
@node-click="handleNodeClick"
|
||||
@node-expand="handleNodeExpand"
|
||||
@node-drop="handlePageDrop">
|
||||
<template v-if="!props.readOnly" v-slot="{ node, data }" >
|
||||
<slot name="addMenuNode" :node="node" :data="data"></slot>
|
||||
</template>
|
||||
</el-tree>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {ref, defineProps, defineEmits, defineExpose} from 'vue';
|
||||
import {useRouter, useRoute} from "vue-router";
|
||||
import pageApi from '../../assets/api/page'
|
||||
let emit = defineEmits(['doGetPageList', 'spaceChangeEvents', 'setNowPageId'])
|
||||
let searchKeywords = ref('');
|
||||
let descriptorForTree = ref("点击收起目录");
|
||||
let explan = ref(false);
|
||||
let explanClass = ref("el-tree");
|
||||
let wikiPageExpandedKeys = ref([]);
|
||||
let route = useRoute();
|
||||
let router = useRouter();
|
||||
let defaultProps = ref({children: 'children', label: 'name',});
|
||||
let wikiPage = ref({});
|
||||
let wikiPageTreeRef = ref();
|
||||
|
||||
let props = defineProps({
|
||||
wikiPageList: Array,
|
||||
spaceOptions: Array,
|
||||
nowPageId: Number,
|
||||
choiceSpace: Number,
|
||||
readOnly: Boolean
|
||||
})
|
||||
|
||||
|
||||
const assisSetCurrentKey = () => {
|
||||
emit('setNowPageId', route.query.pageId, props.readOnly)
|
||||
if (props.nowPageId) {
|
||||
wikiPageTreeRef.value.setCurrentKey(nowPageId.value)
|
||||
}
|
||||
}
|
||||
|
||||
const changeWikiPageExpandedKeys = (pageId) => {
|
||||
// 展开没有触发子节点的加载,如果去加载子节点有还找不到当前的node,暂不展开
|
||||
// wikiPageExpandedKeys.value= [pageId];
|
||||
}
|
||||
|
||||
const spaceChangeEvents = (data) => {
|
||||
emit('spaceChangeEvents', data, props.readOnly)
|
||||
}
|
||||
|
||||
const doSearchByKeywords = (queryString, callback) => {
|
||||
if (!queryString || !queryString.trim()) {
|
||||
callback([])
|
||||
return
|
||||
}
|
||||
pageApi
|
||||
.pageNews({spaceId: props.choiceSpace, keywords: queryString})
|
||||
.then((json) => {
|
||||
let spacePageNews = json.data || []
|
||||
callback(spacePageNews)
|
||||
})
|
||||
}
|
||||
const handleSearchKeywordsSelect = (item) => {
|
||||
searchKeywords.value = ''
|
||||
router.push({path: '/page/show', query: {pageId: item.pageId}})
|
||||
}
|
||||
|
||||
const changeDropWownStatus = () => {
|
||||
if (explan.value) {
|
||||
explanClass.value = "el-tree"
|
||||
descriptorForTree.value = "点击收起目录"
|
||||
explan.value = false
|
||||
} else {
|
||||
explanClass.value = "hidTree"
|
||||
descriptorForTree.value = "点击展开目录"
|
||||
explan.value = true
|
||||
}
|
||||
}
|
||||
|
||||
const filterPageNode = (value, data) => {
|
||||
if (!value || !data.name) return true;
|
||||
// issues:I2CG72 忽略大小写
|
||||
let name = data.name.toLowerCase();
|
||||
return name.indexOf(value.toLowerCase()) !== -1;
|
||||
}
|
||||
|
||||
const searchByKeywords = () => {
|
||||
wikiPageTreeRef.value.filter(searchKeywords.value)
|
||||
}
|
||||
|
||||
const handleNodeClick = (data) => {
|
||||
console.log('点击节点:', data, props.nowPageId)
|
||||
emit('setNowPageId', data.id, props.readOnly)
|
||||
if (props.readOnly) {
|
||||
return
|
||||
}
|
||||
if (data.editorType !== 0) {
|
||||
router.push({path: '/page/show', query: {pageId: data.id}})
|
||||
}
|
||||
handleNodeExpand(data)
|
||||
}
|
||||
const handleNodeExpand = (node) => {
|
||||
if (props.readOnly) {
|
||||
return
|
||||
}
|
||||
if (
|
||||
node.children &&
|
||||
node.children.length > 0 &&
|
||||
node.children[0].needLoad
|
||||
) {
|
||||
console.log('加载节点:', node)
|
||||
emit('doGetPageList',node.id, node)
|
||||
}
|
||||
}
|
||||
const handlePageDrop = (draggingNode, dropNode, dropType, ev) => {
|
||||
console.log('tree drop: ', draggingNode.data, dropNode.data, dropType)
|
||||
// 'prev'、'inner'、'next'
|
||||
// before、after、inner
|
||||
var param = {id: draggingNode.data.id, parentId: dropNode.data.parentId}
|
||||
if (dropType == 'inner') {
|
||||
param.parentId = dropNode.data.id
|
||||
} else if (dropType == 'before') {
|
||||
param.beforeSeq = dropNode.data.seqNo
|
||||
} else if (dropType == 'after') {
|
||||
param.afterSeq = dropNode.data.seqNo
|
||||
}
|
||||
pageApi.pageChangeParent(param).then((res) => {
|
||||
emit('doGetPageList',node.id, node)
|
||||
})
|
||||
}
|
||||
defineExpose({searchByKeywords})
|
||||
</script>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.zyplayer.doc.wiki.controller;
|
||||
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.zyplayer.doc.core.annotation.AuthMan;
|
||||
@@ -10,6 +11,7 @@ import com.zyplayer.doc.data.config.security.DocUserDetails;
|
||||
import com.zyplayer.doc.data.config.security.DocUserUtil;
|
||||
import com.zyplayer.doc.data.repository.manage.entity.*;
|
||||
import com.zyplayer.doc.data.repository.manage.mapper.WikiPageContentMapper;
|
||||
import com.zyplayer.doc.data.repository.manage.mapper.WikiPageMapper;
|
||||
import com.zyplayer.doc.data.repository.manage.param.SearchByEsParam;
|
||||
import com.zyplayer.doc.data.repository.manage.vo.SpaceNewsVo;
|
||||
import com.zyplayer.doc.data.repository.support.consts.DocSysType;
|
||||
@@ -65,6 +67,8 @@ public class WikiPageController {
|
||||
private final WikiPageUploadService wikipageUploadService;
|
||||
private final UserMessageService userMessageService;
|
||||
private final WikiPageHistoryService wikiPageHistoryService;
|
||||
private final WikiPageMapper wikiPageMapper;
|
||||
private final WikiPageCommentService wikiPageCommentService;
|
||||
|
||||
|
||||
|
||||
@@ -204,6 +208,127 @@ public class WikiPageController {
|
||||
return DocResponseJson.warn("状态异常");
|
||||
}
|
||||
|
||||
public boolean isLassoDoll(WikiPage wikiPage, String moveToPageId){
|
||||
if (!"".equals(moveToPageId)){
|
||||
long tatrgetId = Long.parseLong(moveToPageId);
|
||||
if (wikiPage.getId().equals(tatrgetId)){
|
||||
return true;
|
||||
}
|
||||
UpdateWrapper<WikiPage> wrapper = new UpdateWrapper<>();
|
||||
wrapper.eq("parent_id", wikiPage.getId());
|
||||
wrapper.eq("space_id", wikiPage.getSpaceId());
|
||||
//处理子节点也需要进行移动
|
||||
List<WikiPage> wikiPageList = wikiPageService.list(wrapper);
|
||||
for (WikiPage page : wikiPageList) {
|
||||
if(isLassoDoll(page,moveToPageId)){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@PostMapping("/move")
|
||||
public ResponseJson<Object> move(WikiPage wikiPage, String moveToPageId, String moveToSpaceId) {
|
||||
if (isLassoDoll(wikiPage,moveToPageId)){
|
||||
return DocResponseJson.warn("禁止无限套娃,不能移动自己到自己或自己的子节点下");
|
||||
}
|
||||
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
|
||||
//获取原page信息
|
||||
WikiPage wikiPageSel = wikiPageService.getById(wikiPage.getId());
|
||||
wikiPageSel.setSpaceId(Long.parseLong(moveToSpaceId));
|
||||
wikiPageSel.setParentId(Long.parseLong(moveToPageId));
|
||||
wikiPageSel.setUpdateTime(new Date());
|
||||
wikiPageSel.setUpdateUserId(currentUser.getUserId());
|
||||
wikiPageSel.setUpdateUserName(currentUser.getUsername());
|
||||
wikiPageService.updateById(wikiPageSel);
|
||||
UpdateWrapper<WikiPage> wrapper = new UpdateWrapper<>();
|
||||
wrapper.eq("parent_id", wikiPage.getId());
|
||||
wrapper.eq("space_id", wikiPage.getSpaceId());
|
||||
//处理子节点也需要进行移动
|
||||
List<WikiPage> wikiPageList = wikiPageService.list(wrapper);
|
||||
for (WikiPage page : wikiPageList) {
|
||||
move(page,wikiPageSel.getId()+"",moveToSpaceId);
|
||||
}
|
||||
// 给相关人发送消息
|
||||
UserMessage userMessage = userMessageService.createUserMessage(currentUser, wikiPageSel.getId(), wikiPageSel.getName(), DocSysType.WIKI, UserMsgType.WIKI_PAGE_MOVE);
|
||||
userMessageService.addWikiMessage(userMessage);
|
||||
return DocResponseJson.ok();
|
||||
}
|
||||
|
||||
@PostMapping("/copy")
|
||||
public ResponseJson<Object> copy(WikiPage wikiPage, String moveToPageId, String moveToSpaceId) {
|
||||
if (isLassoDoll(wikiPage,moveToPageId)){
|
||||
return DocResponseJson.warn("禁止无限套娃,不能移动自己到自己或自己的子节点下");
|
||||
}
|
||||
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
|
||||
//获取原page信息
|
||||
WikiPage wikiPageSel = wikiPageService.getById(wikiPage.getId());
|
||||
Integer lastSeq = wikiPageMapper.getLastSeq(wikiPage.getSpaceId(), Long.parseLong(moveToPageId));
|
||||
lastSeq = Optional.ofNullable(lastSeq).orElse(99999);
|
||||
wikiPageSel.setSeqNo(lastSeq + 1);
|
||||
wikiPageSel.setId(null);
|
||||
wikiPageSel.setSpaceId(Long.parseLong(moveToSpaceId));
|
||||
wikiPageSel.setParentId(Long.parseLong(moveToPageId));
|
||||
wikiPageSel.setCreateTime(new Date());
|
||||
wikiPageSel.setUpdateTime(new Date());
|
||||
wikiPageSel.setCreateUserId(currentUser.getUserId());
|
||||
wikiPageSel.setCreateUserName(currentUser.getUsername());
|
||||
wikiPageService.save(wikiPageSel);
|
||||
// 重置当前分支的所有节点seq值
|
||||
wikiPageMapper.updateChildrenSeq(wikiPage.getSpaceId(), Long.parseLong(moveToPageId));
|
||||
// 详情处理
|
||||
UpdateWrapper<WikiPageContent> wrapper = new UpdateWrapper<>();
|
||||
wrapper.eq("page_id", wikiPage.getId());
|
||||
WikiPageContent pageContent = wikiPageContentService.getOne(wrapper);
|
||||
pageContent.setId(null);
|
||||
pageContent.setPageId(wikiPageSel.getId());
|
||||
pageContent.setCreateTime(new Date());
|
||||
pageContent.setCreateUserId(currentUser.getUserId());
|
||||
pageContent.setCreateUserName(currentUser.getUsername());
|
||||
wikiPageContentService.save(pageContent);
|
||||
//文件
|
||||
UpdateWrapper<WikiPageFile> wrapperFile = new UpdateWrapper<>();
|
||||
wrapperFile.eq("page_id", wikiPageSel.getId());
|
||||
List<WikiPageFile> pageFiles = wikiPageFileService.list(wrapperFile);
|
||||
for (WikiPageFile pageFile : pageFiles) {
|
||||
pageFile.setId(null);
|
||||
pageFile.setUuid(IdUtil.simpleUUID());
|
||||
pageFile.setPageId(wikiPageSel.getId());
|
||||
wikiPageFileService.save(pageFile);
|
||||
}
|
||||
//点赞
|
||||
UpdateWrapper<WikiPageZan> wrapperZan = new UpdateWrapper<>();
|
||||
wrapperZan.eq("page_id", wikiPage.getId());
|
||||
List<WikiPageZan> list = wikiPageZanService.list(wrapperZan);
|
||||
for (WikiPageZan wikiPageZan : list) {
|
||||
wikiPageZan.setId(null);
|
||||
wikiPageZan.setPageId(wikiPageSel.getId());
|
||||
wikiPageZanService.save(wikiPageZan);
|
||||
}
|
||||
//评论
|
||||
UpdateWrapper<WikiPageComment> commentWrapper = new UpdateWrapper<>();
|
||||
commentWrapper.eq("page_id", wikiPageSel.getId());
|
||||
List<WikiPageComment> pageCommentList = wikiPageCommentService.list(commentWrapper);
|
||||
for (WikiPageComment wikiPageComment : pageCommentList) {
|
||||
wikiPageComment.setId(null);
|
||||
wikiPageComment.setPageId(wikiPageSel.getId());
|
||||
wikiPageCommentService.save(wikiPageComment);
|
||||
}
|
||||
//处理子节点也需要进行复制
|
||||
UpdateWrapper<WikiPage> childWrapper = new UpdateWrapper<>();
|
||||
childWrapper.eq("parent_id", wikiPage.getId());
|
||||
childWrapper.eq("space_id", wikiPage.getSpaceId());
|
||||
List<WikiPage> wikiPageList = wikiPageService.list(childWrapper);
|
||||
for (WikiPage page : wikiPageList) {
|
||||
copy(page,wikiPageSel.getId()+"",moveToSpaceId);
|
||||
}
|
||||
// 给相关人发送消息
|
||||
UserMessage userMessage = userMessageService.createUserMessage(currentUser, wikiPageSel.getId(), wikiPageSel.getName(), DocSysType.WIKI, UserMsgType.WIKI_PAGE_COPY);
|
||||
userMessageService.addWikiMessage(userMessage);
|
||||
return DocResponseJson.ok();
|
||||
}
|
||||
|
||||
@PostMapping("/rename")
|
||||
public ResponseJson<Object> rename(WikiPage wikiPage) {
|
||||
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
|
||||
|
||||
25
zyplayer-doc-wiki/src/main/resources/dist/assets/main-ab18a781.js
vendored
Normal file
25
zyplayer-doc-wiki/src/main/resources/dist/assets/main-ab18a781.js
vendored
Normal file
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
File diff suppressed because one or more lines are too long
@@ -5,11 +5,11 @@
|
||||
<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-d3dcc9fd.js"></script>
|
||||
<script type="module" crossorigin src="./assets/main-ab18a781.js"></script>
|
||||
<link rel="modulepreload" crossorigin href="./assets/highlight.js-1b0b64aa.js">
|
||||
<link rel="modulepreload" crossorigin href="./assets/vue-650a4d10.js">
|
||||
<link rel="modulepreload" crossorigin href="./assets/vendor-da57f401.js">
|
||||
<link rel="modulepreload" crossorigin href="./assets/vant-e9a202b4.js">
|
||||
<link rel="modulepreload" crossorigin href="./assets/vendor-d51e6ee8.js">
|
||||
<link rel="modulepreload" crossorigin href="./assets/vant-a2f25ba3.js">
|
||||
<link rel="modulepreload" crossorigin href="./assets/wangeditor-564d5916.js">
|
||||
<link rel="stylesheet" href="./assets/style.13e54fdd.css">
|
||||
</head>
|
||||
|
||||
Reference in New Issue
Block a user