wiki评论和空间

This commit is contained in:
暮光:城中城
2019-03-08 21:40:20 +08:00
parent 5f7177848b
commit 05142096f7
3 changed files with 209 additions and 70 deletions

View File

@@ -33,6 +33,7 @@ public class WikiPageZanController {
UpdateWrapper<WikiPageZan> wrapper = new UpdateWrapper<>();
wrapper.eq("page_id", wikiPageZan.getPageId());
wrapper.eq(wikiPageZan.getCommentId() != null, "comment_id", wikiPageZan.getCommentId());
wrapper.eq("yn", 1);
List<WikiPageZan> zanList = wikiPageZanService.list(wrapper);
return DocResponseJson.ok(zanList);
}

View File

@@ -13,11 +13,11 @@
<el-container style="height: 100%;">
<el-header>
<!--<div class="logo" @click="aboutDialogVisible = true">zyplayer-doc-wiki</div>-->
<el-dropdown @command="notOpen" trigger="click">
<el-dropdown @command="userSettingDropdown" trigger="click">
<i class="el-icon-setting" style="margin-right: 15px; font-size: 16px;cursor: pointer;color: #fff;"> </i>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="">我的资料</el-dropdown-item>
<el-dropdown-item command="">退出登录</el-dropdown-item>
<el-dropdown-item command="userSignOut">退出登录</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-header>
@@ -26,7 +26,7 @@
<div style="padding: 10px;">
<!--<el-row><el-switch v-model="isCollapse"></el-switch></el-row>-->
<div style="margin-bottom: 10px;">
<el-select v-model="nowSpaceId" @change="spaceChangeEvents" filterable placeholder="选择空间" style="width: 100%;">
<el-select v-model="choiceSpace" @change="spaceChangeEvents" filterable placeholder="选择空间" style="width: 100%;">
<el-option-group label="">
<el-option key="0" label="创建空间" value="0"></el-option>
</el-option-group>
@@ -59,16 +59,9 @@
<div class="wiki-author">
<span>创建:{{wikiPage.createUserName}} {{wikiPage.createTime}}  <span v-show="wikiPage.updateUserName">修改:{{wikiPage.updateUserName}} {{wikiPage.updateTime}}</span></span>
<div style="float: right;">
<el-upload
class="upload-page-file"
action="zyplayer-doc-wiki/common/upload"
:on-success="uploadFileSuccess"
:on-error="uploadFileError"
name="files"
show-file-list
multiple
:data="uploadFormData"
:limit="999">
<el-upload class="upload-page-file" action="zyplayer-doc-wiki/common/upload"
:on-success="uploadFileSuccess" :on-error="uploadFileError"
name="files" show-file-list multiple :data="uploadFormData" :limit="999">
<el-button icon="el-icon-upload">上传附件</el-button>
</el-upload>
</div>
@@ -94,9 +87,8 @@
</div>
<div style="margin-top: 40px; font-size: 14px;">
<span style="vertical-align: top;" class="is-link">
<img src="webjars/doc-wiki/img/zan.png" style="vertical-align: middle;">
<span v-show="wikiPage.selfZan == 0" v-on:click="zanPage(1)"></span>
<span v-show="wikiPage.selfZan == 1" v-on:click="zanPage(0)"></span>
<span v-show="wikiPage.selfZan == 0" v-on:click="zanPage(1)"><img src="webjars/doc-wiki/img/zan.png" style="vertical-align: middle;"></span>
<span v-show="wikiPage.selfZan == 1" v-on:click="zanPage(0)"><img src="webjars/doc-wiki/img/zan.png" style="vertical-align: middle;"></span>
</span>
<span style="margin-left: 10px;vertical-align: top;">
<span v-if="wikiPage.selfZan == 0 && wikiPage.zanNum <= 0">成为第一个赞同者</span>
@@ -154,15 +146,15 @@
</el-container>
<!--新建空间弹窗-->
<el-dialog title="创建空间" :visible.sync="newSpaceDialogVisible" width="600px">
<el-form label-width="100px">
<el-form-item label="空间名:">
<el-form label-width="100px" :model="newSpaceForm" :rules="newSpaceFormRules" ref="newSpaceForm">
<el-form-item label="空间名:" prop="name">
<el-input v-model="newSpaceForm.name"></el-input>
</el-form-item>
<el-form-item label="空间描述:">
<el-form-item label="空间描述:" prop="spaceExplain">
<el-input v-model="newSpaceForm.spaceExplain"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onNewSpaceSubmit">立即创建</el-button>
<el-button type="primary" @click="onNewSpaceSubmit('newSpaceForm')">立即创建</el-button>
<el-button @click="onNewSpaceCancel">取消</el-button>
</el-form-item>
</el-form>
@@ -227,6 +219,12 @@
nowSpaceId: '',
newSpaceDialogVisible: false,
newSpaceForm: {name: '', spaceExplain: ''},
newSpaceFormRules: {
name: [
{required: true, message: '请输入空间名', trigger: 'blur'},
{min: 2, max: 25, message: '长度在 2 到 25 个字符', trigger: 'blur'}
],
},
// 依据目录树存储的map全局对象
treePathDataMap: new Map(),
// 搜索的输入内容
@@ -261,19 +259,38 @@
onNewSpaceCancel() {
this.newSpaceDialogVisible = false;
},
onNewSpaceSubmit() {
var param = {name: app.newSpaceForm.name, spaceExplain: app.newSpaceForm.spaceExplain};
ajaxTemp("zyplayer-doc-wiki/space/update", "post", "json", param, function (json) {
if (validateResult(json)) {
app.newSpaceForm.name = "";
app.newSpaceForm.spaceExplain = "";
app.newSpaceDialogVisible = false;
app.spaceList.push(json.data);
app.spaceOptions.push({
label: json.data.name, value: json.data.id
userSettingDropdown(command) {
console.log("command:" + command);
if (command == 'userSignOut') {
this.userSignOut();
} else {
Toast.notOpen();
}
},
userSignOut() {
ajaxTemp("logout", "post", "json", {}, function () {
}, function () {
}, function () {
location.reload();
});
},
onNewSpaceSubmit(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
var param = {name: app.newSpaceForm.name, spaceExplain: app.newSpaceForm.spaceExplain};
ajaxTemp("zyplayer-doc-wiki/space/update", "post", "json", param, function (json) {
if (validateResult(json)) {
app.newSpaceForm.name = "";
app.newSpaceForm.spaceExplain = "";
app.newSpaceDialogVisible = false;
app.spaceList.push(json.data);
app.spaceOptions.push({
label: json.data.name, value: json.data.id
});
app.nowSpaceId = json.data.id;
app.doGetPageList(null);
}
});
app.nowSpaceId = json.data.id;
app.doGetPageList(null);
}
});
},
@@ -310,12 +327,7 @@
ajaxTemp("zyplayer-doc-wiki/page/comment/update", "post", "json", param, function (json) {
if (validateResult(json)) {
var data = json.data;
var color = page.userHeadColor[data.createUserId];
if (!color) {
color = page.colorArr[Math.ceil(Math.random() * page.colorArr.length) - 1];
page.userHeadColor[data.createUserId] = color;
}
data.color = color;
data.color = app.getUserHeadBgColor(data.createUserId);
app.commentTextInput = "";
app.commentList.push(data);
}
@@ -411,10 +423,12 @@
}
},
spaceChangeEvents(data) {
app.nowSpaceId = data;
if (data == 0) {
app.newSpaceDialogVisible = true;
app.choiceSpace = app.nowSpaceId;
} else {
app.nowSpaceId = data;
app.rightContentType = 0;
app.doGetPageList(null);
}
},
@@ -459,21 +473,11 @@
if (validateResult(json)) {
var commentList = json.data || [];
for (var i = 0; i < commentList.length; i++) {
var color = page.userHeadColor[commentList[i].createUserId];
if (!color) {
color = page.colorArr[Math.ceil(Math.random() * page.colorArr.length) - 1];
page.userHeadColor[commentList[i].createUserId] = color;
}
commentList[i].color = color;
commentList[i].color = app.getUserHeadBgColor(commentList[i].createUserId);
var subCommentList = commentList[i].commentList || [];
for (var j = 0; j < subCommentList.length; j++) {
var subItem = subCommentList[j];
var colorSub = page.userHeadColor[subItem.createUserId];
if (!colorSub) {
colorSub = page.colorArr[Math.ceil(Math.random() * page.colorArr.length) - 1];
page.userHeadColor[subItem.createUserId] = colorSub;
}
subItem.color = colorSub;
subItem.color = app.getUserHeadBgColor(subItem.createUserId);
}
commentList[i].commentList = subCommentList;
}
@@ -481,8 +485,16 @@
}
});
},
getUserHeadBgColor(userId) {
var color = page.userHeadColor[userId];
if (!color) {
color = page.colorArr[Math.ceil(Math.random() * page.colorArr.length) - 1];
page.userHeadColor[userId] = color;
}
return color;
},
searchByKeywords() {
app.pathIndex = createTreeViewByTreeWithMerge(app.dubboDocList, app.searchKeywords);
//app.pathIndex = createTreeViewByTreeWithMerge(app.dubboDocList, app.searchKeywords);
},
doGetPageList(parentId, node) {
var nodePath = "";
@@ -504,26 +516,20 @@
id: item.id,
label: item.name,
nodePath: nodePath + item.name,
children: [{label: '', needLoad: true}],
children: [{label: '', needLoad: true}],// 初始化一个对象,点击展开时重新查询加载
});
}
if (parentId > 0) {
node.children = pathIndex;
} else {
app.wikiPageList = pathIndex;
// 清空页面信息
app.rightContentType = 0;
app.newPageId = "";
app.newPageTitle = "";
page.newPageContentEditor.txt.html("");
app.lastClickNode = {};
}
}
});
},
init(){
var E = window.wangEditor;
page.newPageContentEditor = new E('#newPageContentDiv');
page.newPageContentEditor = new window.wangEditor('#newPageContentDiv');
page.newPageContentEditor.customConfig.uploadImgServer = 'zyplayer-doc-wiki/common/upload';
page.newPageContentEditor.create();
}
@@ -531,17 +537,9 @@
});
</script>
<style>
html,body,#app {
margin: 0;
padding: 0;
height: 100%;
}
html,body,#app {margin: 0; padding: 0; height: 100%;}
pre{margin: 0;white-space: pre-wrap;font-size: 14px; font-family: auto;}
.el-menu {
box-sizing: border-box;
border-right: 0;
margin-right: 3px;
}
.el-menu {box-sizing: border-box;border-right: 0;margin-right: 3px;}
.el-header {background-color: #409EFF; color: #333; line-height: 40px; text-align: right;height: 40px !important;}
.doc-body-box{
overflow-x: hidden;overflow-y: auto;width: 100%;

View File

@@ -0,0 +1,140 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>测试</title>
<link rel="shortcut icon" href="../doc-wiki/img/wiki.ico"/>
<link rel="stylesheet" href="../doc-wiki/css/element-ui.css">
<link rel="stylesheet" href="../doc-wiki/css/doc-wiki.css" />
</head>
<body>
<div id="app">
<el-form :model="ruleFormData" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="活动名称" prop="name">
<el-input v-model="ruleFormData.name"></el-input>
</el-form-item>
<el-form-item label="活动区域" prop="region">
<el-select v-model="ruleForm.region" placeholder="请选择活动区域">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item>
<el-form-item label="活动时间" required>
<el-col :span="11">
<el-form-item prop="date1">
<el-date-picker type="date" placeholder="选择日期" v-model="ruleForm.date1" style="width: 100%;"></el-date-picker>
</el-form-item>
</el-col>
<el-col class="line" :span="2">-</el-col>
<el-col :span="11">
<el-form-item prop="date2">
<el-time-picker type="fixed-time" placeholder="选择时间" v-model="ruleForm.date2" style="width: 100%;"></el-time-picker>
</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="即时配送" prop="delivery">
<el-switch v-model="ruleForm.delivery"></el-switch>
</el-form-item>
<el-form-item label="活动性质" prop="type">
<el-checkbox-group v-model="ruleForm.type">
<el-checkbox label="美食/餐厅线上活动" name="type"></el-checkbox>
<el-checkbox label="地推活动" name="type"></el-checkbox>
<el-checkbox label="线下主题活动" name="type"></el-checkbox>
<el-checkbox label="单纯品牌曝光" name="type"></el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="特殊资源" prop="resource">
<el-radio-group v-model="ruleForm.resource">
<el-radio label="线上品牌商赞助"></el-radio>
<el-radio label="线下场地免费"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="活动形式" prop="desc">
<el-input type="textarea" v-model="ruleForm.desc"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button>
<el-button @click="resetForm('ruleForm')">重置</el-button>
</el-form-item>
</el-form>
</div>
</body>
<script type="text/javascript" src="../doc-wiki/vue/vue.js"></script>
<script type="text/javascript" src="../doc-wiki/js/element-ui.js"></script>
<!-- ajax 用到了jquery -->
<script type="text/javascript" src="../doc-wiki/js/jquery-3.1.0.min.js"></script>
<script type="text/javascript" src="../doc-wiki/js/common.js"></script>
<script type="text/javascript" src="../doc-wiki/js/toast.js"></script>
<script type="text/javascript" src="../doc-wiki/js/formatjson.js"></script>
<script type="text/javascript" src="../doc-wiki/js/doc-wiki-tree.js"></script>
<script type="text/javascript" src="../doc-wiki/lib/wangEditor/wangEditor.js"></script>
<script>
var app = new Vue({
el: '#app',
data() {
return {
ruleFormData: {
name: '',
region: '',
date1: '',
date2: '',
delivery: false,
type: [],
resource: '',
desc: ''
},
rules: {
name: [
{ required: true, message: '请输入活动名称', trigger: 'blur' },
{ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
],
region: [
{ required: true, message: '请选择活动区域', trigger: 'change' }
],
date1: [
{ type: 'date', required: true, message: '请选择日期', trigger: 'change' }
],
date2: [
{ type: 'date', required: true, message: '请选择时间', trigger: 'change' }
],
type: [
{ type: 'array', required: true, message: '请至少选择一个活动性质', trigger: 'change' }
],
resource: [
{ required: true, message: '请选择活动资源', trigger: 'change' }
],
desc: [
{ required: true, message: '请填写活动形式', trigger: 'blur' }
]
}
}
},
watch: {
},
mounted: function () {
},
methods: {
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
alert('submit!');
} else {
console.log('error submit!!');
return false;
}
});
},
resetForm(formName) {
this.$refs[formName].resetFields();
}
}
});
</script>
<style>
</style>
</html>