#I1KQUK 开放地址首页展示优化,优化查看编辑页展示及url参数,无权限时不展示对应按钮
This commit is contained in:
@@ -1,11 +1,8 @@
|
||||
<template>
|
||||
<div style="padding: 10px;" class="page-edit-vue">
|
||||
<el-row type="border-card">
|
||||
<div style="margin-bottom: 10px;padding: 10px;" v-if="wikiPage.id > 0">
|
||||
编辑:{{parentPath.path}}
|
||||
</div>
|
||||
<div style="margin-bottom: 10px;padding: 10px;" v-else>
|
||||
父级:{{parentPath.path || '/'}}
|
||||
<div style="margin-bottom: 10px;padding: 10px;" v-if="!pageId">
|
||||
父级:{{parentWikiPage.name || '/'}}
|
||||
<el-tooltip class="item" content="在根目录创建文档">
|
||||
<el-button type="text" @click="changeToRootPath" style="padding: 0 10px;">根目录</el-button>
|
||||
</el-tooltip>
|
||||
@@ -24,14 +21,19 @@
|
||||
import pageApi from '../../common/api/page'
|
||||
|
||||
export default {
|
||||
props: ['spaceId'],
|
||||
data() {
|
||||
return {
|
||||
editor: {},
|
||||
// 编辑相关
|
||||
newPageTitle: "",
|
||||
parentPath: {},
|
||||
wikiPage: {},
|
||||
parentWikiPage: {},
|
||||
isUnlock: false,
|
||||
// 页面ID,有值代表编辑
|
||||
pageId: '',
|
||||
// 父级,有值代表在此父级新建文档
|
||||
parentId: '',
|
||||
};
|
||||
},
|
||||
destroyed: function () {
|
||||
@@ -54,17 +56,15 @@
|
||||
},
|
||||
methods: {
|
||||
changeToRootPath() {
|
||||
this.parentPath = {spaceId: this.parentPath.spaceId};
|
||||
// 没有父级,就是在根目录创建
|
||||
this.parentId = '';
|
||||
this.parentWikiPage = {};
|
||||
},
|
||||
unlockPage() {
|
||||
// 防止各种事件重复调这个接口,只需要调一次就好了
|
||||
if (this.isUnlock) {
|
||||
return;
|
||||
}
|
||||
this.isUnlock = true;
|
||||
var param = {pageId: this.parentPath.pageId};
|
||||
pageApi.pageUnlock(param).then(() => {
|
||||
});
|
||||
if (this.isUnlock) return;
|
||||
this.isUnlock = true;
|
||||
pageApi.pageUnlock({pageId: this.pageId});
|
||||
},
|
||||
createWikiCancel() {
|
||||
this.$confirm('确定要取消编辑吗?您编辑的内容将不会被保存哦~', '提示', {
|
||||
@@ -77,37 +77,34 @@
|
||||
});
|
||||
},
|
||||
createWikiSave(saveAfter) {
|
||||
// 修改内容时强制不能修改父路径,只能在目录上拖动修改
|
||||
var parentId = (this.wikiPage.id > 0) ? '' : this.parentPath.parentId;
|
||||
if (!this.newPageTitle) {
|
||||
this.$message.warning("标题不能为空");
|
||||
return;
|
||||
}
|
||||
var preview = this.editor.txt.text();
|
||||
var param = {
|
||||
spaceId: this.parentPath.spaceId,
|
||||
// 修改内容时强制不能修改父路径,只能在目录上拖动修改
|
||||
let parentId = (this.pageId > 0) ? '' : this.parentId;
|
||||
let param = {
|
||||
spaceId: this.spaceId,
|
||||
parentId: parentId,
|
||||
id: this.wikiPage.id,
|
||||
name: this.newPageTitle,
|
||||
content: this.editor.txt.html(),
|
||||
preview: preview,
|
||||
preview: this.editor.txt.text(),
|
||||
};
|
||||
pageApi.updatePage(param).then(json => {
|
||||
this.$message.success("保存成功!");
|
||||
// 重新加载左侧列表,跳转到展示页面
|
||||
this.$emit('loadPageList');
|
||||
this.parentPath.pageId = json.data.id;
|
||||
this.pageId = json.data.id;
|
||||
if (saveAfter == 1) {
|
||||
this.$router.push({path: '/page/show', query: this.parentPath});
|
||||
this.$router.push({path: '/page/show', query: {pageId: this.pageId}});
|
||||
} else {
|
||||
this.loadPageDetail(this.parentPath.pageId);
|
||||
this.loadPageDetail(this.pageId);
|
||||
}
|
||||
});
|
||||
},
|
||||
loadPageDetail(pageId) {
|
||||
this.rightContentType = 1;
|
||||
var param = {id: pageId};
|
||||
pageApi.pageDetail(param).then(json => {
|
||||
pageApi.pageDetail({id: pageId}).then(json => {
|
||||
this.wikiPage = json.data.wikiPage || {};
|
||||
this.pageContent = json.data.pageContent || {};
|
||||
this.pageFileList = json.data.fileList || [];
|
||||
@@ -116,6 +113,12 @@
|
||||
this.editor.txt.html(this.pageContent.content || "");
|
||||
});
|
||||
},
|
||||
loadParentPageDetail(pageId) {
|
||||
if (!pageId) return;
|
||||
pageApi.pageDetail({id: pageId}).then(json => {
|
||||
this.parentWikiPage = json.data.wikiPage || {};
|
||||
});
|
||||
},
|
||||
cleanPage() {
|
||||
this.wikiPage = {};
|
||||
this.pageContent = {};
|
||||
@@ -126,18 +129,12 @@
|
||||
}
|
||||
},
|
||||
initQueryParam(to) {
|
||||
this.parentPath = {
|
||||
spaceId: to.query.spaceId, pageId: to.query.pageId,
|
||||
parentId: to.query.parentId, path: to.query.path
|
||||
};
|
||||
if (!!this.parentPath.pageId) {
|
||||
this.loadPageDetail(this.parentPath.pageId);
|
||||
} else {
|
||||
this.cleanPage();
|
||||
}
|
||||
let param = {pageId: this.parentPath.pageId};
|
||||
pageApi.pageLock(param).then(json => {
|
||||
if (json.errCode !== 200) {
|
||||
// pageId和parentId二选一,传了pageId代表编辑页面,否则代表新建页面
|
||||
this.pageId = to.query.pageId;
|
||||
this.parentId = to.query.parentId;
|
||||
if (!!this.pageId) {
|
||||
this.loadPageDetail(this.pageId);
|
||||
pageApi.pageLock({pageId: this.pageId}).catch(json => {
|
||||
let that = this;
|
||||
this.$alert(json.errMsg || '未知错误', '错误', {
|
||||
confirmButtonText: '确定',
|
||||
@@ -145,8 +142,11 @@
|
||||
that.$router.back();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
} else {
|
||||
this.loadParentPageDetail(this.parentId);
|
||||
this.cleanPage();
|
||||
}
|
||||
},
|
||||
initEditor() {
|
||||
this.editor = new WangEditor('#newPageContentDiv');
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
<template>
|
||||
<div class="page-open-view-vue">
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
beforeRouteUpdate(to, from, next) {
|
||||
},
|
||||
mounted: function () {
|
||||
},
|
||||
methods: {}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
|
||||
@@ -9,16 +9,17 @@
|
||||
创建:{{wikiPage.createUserName}} {{wikiPage.createTime}}
|
||||
<span v-show="wikiPage.updateUserName">修改:{{wikiPage.updateUserName}} {{wikiPage.updateTime}}</span>
|
||||
<div style="float: right;">
|
||||
<el-upload class="upload-page-file" :action="uploadFileUrl"
|
||||
<el-upload v-if="wikiPageAuth.canUploadFile==1"
|
||||
class="upload-page-file" :action="uploadFileUrl"
|
||||
:with-credentials="true"
|
||||
:on-success="uploadFileSuccess" :on-error="uploadFileError"
|
||||
name="files" show-file-list multiple :data="uploadFormData" :limit="999"
|
||||
style="display: inline;margin-right: 10px;">
|
||||
<el-button type="text" icon="el-icon-upload">上传附件</el-button>
|
||||
</el-upload>
|
||||
<el-button type="text" icon="el-icon-edit" v-on:click="editWiki">编辑</el-button>
|
||||
<el-button type="text" icon="el-icon-setting" v-on:click="editWikiAuth">权限设置</el-button>
|
||||
<el-button type="text" icon="el-icon-delete" v-on:click="deleteWikiPage">删除</el-button>
|
||||
<el-button v-if="wikiPageAuth.canEdit==1" type="text" icon="el-icon-edit" @click="editWiki">编辑</el-button>
|
||||
<el-button v-if="wikiPageAuth.canConfigAuth==1" type="text" icon="el-icon-setting" @click="editWikiAuth">权限设置</el-button>
|
||||
<el-button v-if="wikiPageAuth.canDelete==1" type="text" icon="el-icon-delete" @click="deleteWikiPage">删除</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -32,7 +33,7 @@
|
||||
<el-table-column prop="createUserName" label="创建人"></el-table-column>
|
||||
<el-table-column prop="createTime" label="创建时间" width="180px"></el-table-column>
|
||||
<el-table-column prop="downloadNum" label="下载次数" width="80px"></el-table-column>
|
||||
<el-table-column label="操作" width="100px">
|
||||
<el-table-column label="操作" width="100px" v-if="wikiPageAuth.canUploadFile==1">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="small" v-on:click="deletePageFile(scope.row)">删除</el-button>
|
||||
</template>
|
||||
@@ -146,6 +147,7 @@
|
||||
return {
|
||||
// 页面展示相关
|
||||
wikiPage: {},
|
||||
wikiPageAuth: {},
|
||||
pageContent: {},
|
||||
pageFileList: [],
|
||||
selfUserId: 0,
|
||||
@@ -173,22 +175,12 @@
|
||||
},
|
||||
mounted: function () {
|
||||
this.initQueryParam(this.$route);
|
||||
if (!!this.parentPath.pageId) {
|
||||
// 延迟设置展开的目录,edit比app先初始化
|
||||
setTimeout(() => {
|
||||
if (!!this.parentPath.spaceId) {
|
||||
// 调用父方法切换选择的空间
|
||||
this.$emit('switchSpace', this.parentPath.spaceId);
|
||||
}
|
||||
this.$emit('changeExpandedKeys', this.parentPath.pageId);
|
||||
}, 500);
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
editWiki() {
|
||||
var param = {pageId: this.parentPath.pageId};
|
||||
pageApi.pageLock(param).then(() => {
|
||||
this.$router.push({path: '/page/edit', query: this.parentPath});
|
||||
this.$router.push({path: '/page/edit', query: {pageId: this.parentPath.pageId}});
|
||||
});
|
||||
},
|
||||
getSearchUserList(query) {
|
||||
@@ -269,23 +261,32 @@
|
||||
}).catch(()=>{});
|
||||
},
|
||||
loadPageDetail(pageId) {
|
||||
this.rightContentType = 1;
|
||||
var param = {id: pageId};
|
||||
pageApi.pageDetail(param).then(json => {
|
||||
var wikiPage = json.data.wikiPage || {};
|
||||
wikiPage.selfZan = json.data.selfZan || 0;
|
||||
let result = json.data || {};
|
||||
var wikiPage = result.wikiPage || {};
|
||||
wikiPage.selfZan = result.selfZan || 0;
|
||||
this.wikiPage = wikiPage;
|
||||
this.pageContent = json.data.pageContent || {};
|
||||
this.pageFileList = json.data.fileList || [];
|
||||
this.selfUserId = json.data.selfUserId || 0;
|
||||
this.pageContent = result.pageContent || {};
|
||||
this.pageFileList = result.fileList || [];
|
||||
this.selfUserId = result.selfUserId || 0;
|
||||
this.uploadFormData = {pageId: this.wikiPage.id};
|
||||
this.parentPath.spaceId = wikiPage.spaceId;
|
||||
this.wikiPageAuth = {
|
||||
canEdit: result.canEdit,
|
||||
canDelete: result.canDelete,
|
||||
canUploadFile: result.canUploadFile,
|
||||
canConfigAuth: result.canConfigAuth,
|
||||
};
|
||||
// 修改标题
|
||||
document.title = wikiPage.name || '页面展示';
|
||||
document.title = wikiPage.name || 'WIKI-内容展示';
|
||||
// 修改最后点击的项,保证刷新后点击编辑能展示编辑的项
|
||||
// if (!this.lastClickNode.id) {
|
||||
// this.lastClickNode = {id: wikiPage.id, nodePath: wikiPage.name};
|
||||
// }
|
||||
// 调用父方法切换选择的空间
|
||||
this.$emit('switchSpace', this.wikiPage.spaceId);
|
||||
// 调用父方法展开目录树
|
||||
this.$emit('changeExpandedKeys', pageId);
|
||||
});
|
||||
this.loadCommentList(pageId);
|
||||
},
|
||||
@@ -395,10 +396,7 @@
|
||||
return color;
|
||||
},
|
||||
initQueryParam(to) {
|
||||
this.parentPath = {
|
||||
spaceId: to.query.spaceId, pageId: to.query.pageId,
|
||||
parentId: to.query.parentId, path: to.query.path
|
||||
};
|
||||
this.parentPath = {pageId: to.query.pageId};
|
||||
if (!!this.parentPath.pageId) {
|
||||
this.loadPageDetail(this.parentPath.pageId);
|
||||
}
|
||||
|
||||
106
zyplayer-doc-ui/wiki-ui/src/views/page/share/Home.vue
Normal file
106
zyplayer-doc-ui/wiki-ui/src/views/page/share/Home.vue
Normal file
@@ -0,0 +1,106 @@
|
||||
<template>
|
||||
<div style="padding: 10px;" class="page-share-home-vue">
|
||||
<div style="max-width: 800px;margin: 0 auto;">
|
||||
<div v-if="spacePageNews.length <= 0" class="empty-news">暂无数据</div>
|
||||
<div v-else class="line-box" v-for="item in spacePageNews">
|
||||
<div class="line-title">
|
||||
<span class="text-link">{{item.createUserName}}</span> 发布于 <span class="text-link">{{item.spaceName}}</span>
|
||||
</div>
|
||||
<div class="page-preview-box">
|
||||
<div class="page-preview-title" v-on:click="showPageDetail(item)" v-html="item.pageTitle"></div>
|
||||
<div class="page-preview-content" v-html="item.previewContent"></div>
|
||||
<div>
|
||||
<span><img src="../../../assets/img/zan.png" class="zan-img"> {{item.zanNum}} </span>
|
||||
<span><i class="el-icon-view view-img"></i> {{item.viewNum}} </span>
|
||||
<span>{{item.updateTime||item.createTime}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-info-box">
|
||||
<el-pagination
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:page-sizes="[20, 50, 100]"
|
||||
:page-size="20"
|
||||
:current-page="searchParam.pageNum"
|
||||
layout="prev, pager, next, jumper, sizes, total"
|
||||
:total="totalCount"
|
||||
>
|
||||
</el-pagination>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import pageApi from '../../../common/api/page'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
totalCount: 0,
|
||||
searchParam: {
|
||||
spaceId: '',
|
||||
newsType: 1,
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
},
|
||||
spacePageNews: [],
|
||||
};
|
||||
},
|
||||
beforeRouteUpdate(to, from, next) {
|
||||
this.initQueryParam(to);
|
||||
next();
|
||||
},
|
||||
mounted: function () {
|
||||
this.initQueryParam(this.$route);
|
||||
},
|
||||
methods: {
|
||||
getSpacePageNews() {
|
||||
pageApi.openPageNews(this.searchParam).then(json => {
|
||||
this.spacePageNews = json.data || [];
|
||||
this.totalCount = json.total;
|
||||
});
|
||||
},
|
||||
handleSizeChange(val) {
|
||||
this.searchParam.pageSize = val;
|
||||
this.getSpacePageNews();
|
||||
},
|
||||
showPageDetail(row) {
|
||||
this.nowClickPath = {space: row.space, pageId: row.pageId};
|
||||
this.$router.push({path: '/page/share/view', query: this.nowClickPath});
|
||||
},
|
||||
handleCurrentChange(val) {
|
||||
this.searchParam.pageNum = val;
|
||||
this.getSpacePageNews();
|
||||
},
|
||||
initQueryParam(to) {
|
||||
this.searchParam = {
|
||||
space: to.query.space,
|
||||
newsType: 1,
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
};
|
||||
if (!!this.searchParam.space) {
|
||||
this.getSpacePageNews();
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.page-share-home-vue .empty-news{text-align: center;padding: 100px;}
|
||||
.page-share-home-vue .text-link {
|
||||
color: #444;
|
||||
}
|
||||
.page-share-home-vue .line-box{color: #666;border-bottom: 1px solid #eee;padding: 20px 0;}
|
||||
.page-share-home-vue .line-title{font-size: 14px;}
|
||||
.page-share-home-vue .page-preview-box{}
|
||||
.page-share-home-vue .page-preview-title{cursor: pointer;font-size: 20px;margin: 10px 0 5px 0;color: #3a8ee6;}
|
||||
.page-share-home-vue .page-preview-content{font-size: 16px;margin-bottom: 5px;}
|
||||
.page-share-home-vue .zan-img{vertical-align: middle;margin-top: -3px;}
|
||||
.page-share-home-vue .view-img{font-size: 16px;color: #666;}
|
||||
|
||||
.page-share-home-vue .page-info-box{text-align: right;margin: 20px 0 50px 0;}
|
||||
</style>
|
||||
|
||||
84
zyplayer-doc-ui/wiki-ui/src/views/page/share/View.vue
Normal file
84
zyplayer-doc-ui/wiki-ui/src/views/page/share/View.vue
Normal file
@@ -0,0 +1,84 @@
|
||||
<template>
|
||||
<div class="page-share-view-vue">
|
||||
<el-row type="border-card">
|
||||
<div style="max-width: 950px;margin: 0 auto;">
|
||||
<div class="wiki-title">{{wikiPage.name}}</div>
|
||||
<div class="wiki-author">
|
||||
<span v-show="!wikiPage.updateTime">创建时间:{{wikiPage.createTime}}</span>
|
||||
<span v-show="wikiPage.updateTime">最后修改:{{wikiPage.updateTime}}</span>
|
||||
</div>
|
||||
<div class="wiki-files">
|
||||
<el-table v-show="pageFileList.length > 0" :data="pageFileList" border
|
||||
style="width: 100%; margin-bottom: 5px;">
|
||||
<el-table-column label="文件名">
|
||||
<template slot-scope="scope">
|
||||
<a target="_blank" :href="scope.row.fileUrl">{{scope.row.fileName}}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createTime" label="创建时间" width="180px"></el-table-column>
|
||||
<el-table-column prop="downloadNum" label="下载次数" width="80px"></el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="wiki-content w-e-text">
|
||||
<div v-html="pageContent.content"></div>
|
||||
</div>
|
||||
</div>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import pageApi from '../../../common/api/page'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
spaceUuid: '',
|
||||
nowPageId: '',
|
||||
// 页面展示相关
|
||||
wikiPage: {},
|
||||
pageContent: {},
|
||||
pageFileList: [],
|
||||
};
|
||||
},
|
||||
beforeRouteUpdate(to, from, next) {
|
||||
this.initQueryParam(to);
|
||||
next();
|
||||
},
|
||||
mounted() {
|
||||
this.initQueryParam(this.$route);
|
||||
},
|
||||
methods: {
|
||||
loadPageDetail(pageId) {
|
||||
let param = {pageId: pageId, space: this.spaceUuid};
|
||||
pageApi.openPageDetail(param).then(json => {
|
||||
let wikiPage = json.data.wikiPage || {};
|
||||
wikiPage.selfZan = json.data.selfZan || 0;
|
||||
this.wikiPage = wikiPage;
|
||||
this.pageContent = json.data.pageContent || {};
|
||||
this.pageFileList = json.data.fileList || [];
|
||||
document.title = wikiPage.name || 'WIKI-内容展示';
|
||||
});
|
||||
},
|
||||
initQueryParam(to) {
|
||||
this.spaceUuid = to.query.space;
|
||||
this.nowPageId = to.query.pageId;
|
||||
if (!!this.nowPageId) {
|
||||
this.loadPageDetail(this.nowPageId);
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.page-share-view-vue .wiki-title{font-size: 20px;text-align: center;}
|
||||
.page-share-view-vue .wiki-author{font-size: 14px;color: #888;padding: 20px 0;height: 40px;line-height: 40px;}
|
||||
.page-share-view-vue .wiki-content{font-size: 14px;}
|
||||
.page-share-view-vue .wiki-content.w-e-text{overflow-y: auto;}
|
||||
|
||||
.page-share-view-vue .upload-page-file .el-upload-list{display: none;}
|
||||
.page-share-view-vue .is-link{color: #1e88e5;cursor: pointer;}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user