界面优化,markdown渲染优化
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {onBeforeUnmount, ref, h, shallowRef, nextTick, onMounted, watch, defineProps, defineExpose} from 'vue'
|
||||
import {onBeforeUnmount, ref, h, shallowRef, nextTick, onMounted, watch, defineProps, defineExpose} from 'vue';
|
||||
import {showImagePreview} from 'vant';
|
||||
import {useStoreDisplay} from "@/store/wikiDisplay";
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<a-tag color="warning" style="margin-inline-end: 4px;padding-inline: 4px;">{{filterShareStatus(data.shareStatus)}}</a-tag>
|
||||
</el-tooltip>
|
||||
<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;margin-right: 5px">
|
||||
<span v-else style="vertical-align: middle;margin-right: 5px;">
|
||||
<el-tooltip :content="node.label" placement="top-start" :show-after="700">{{ node.label }}</el-tooltip>
|
||||
</span>
|
||||
<!--操作-->
|
||||
@@ -119,14 +119,14 @@ import {
|
||||
} from '@icon-park/vue-next'
|
||||
import {ref, onMounted,} from 'vue';
|
||||
import {useRouter, useRoute} from "vue-router";
|
||||
import {ElMessageBox, ElMessage} from 'element-plus'
|
||||
import pageApi from '../../assets/api/page'
|
||||
import CreateSpace from '../space/CreateSpace.vue'
|
||||
import TemplateManage from '../template/TemplateManage.vue'
|
||||
import AddMenu from '../leftSideBar/AddMenu.vue'
|
||||
import IconDocument from '@/components/base/IconDocument.vue'
|
||||
import LeftSidebarCli from '../leftSideBar/LeftSidebarCli.vue'
|
||||
import {useStoreDisplay} from '@/store/wikiDisplay.js'
|
||||
import {ElMessageBox, ElMessage} from 'element-plus';
|
||||
import pageApi from '../../assets/api/page';
|
||||
import CreateSpace from '../space/CreateSpace.vue';
|
||||
import TemplateManage from '../template/TemplateManage.vue';
|
||||
import AddMenu from '../leftSideBar/AddMenu.vue';
|
||||
import IconDocument from '@/components/base/IconDocument.vue';
|
||||
import LeftSidebarCli from '../leftSideBar/LeftSidebarCli.vue';
|
||||
import {useStoreDisplay} from '@/store/wikiDisplay.js';
|
||||
import {useStorePageData} from "@/store/pageData";
|
||||
import {DownOutlined, BuildOutlined, BlockOutlined} from '@ant-design/icons-vue';
|
||||
import {useStoreSpaceData} from "@/store/spaceData";
|
||||
@@ -151,21 +151,21 @@ let optionPageId = ref('');
|
||||
let visibleMoveMenu = ref(false);
|
||||
let onlyMoveMode = ref(false);
|
||||
let aModalWaiting = ref(false);
|
||||
let templateManageRef = ref(null)
|
||||
let templateManageRef = ref(null);
|
||||
|
||||
onMounted(() => {
|
||||
init()
|
||||
})
|
||||
init();
|
||||
});
|
||||
const init = () => {
|
||||
loadSpaceList()
|
||||
loadSpaceList();
|
||||
}
|
||||
|
||||
const openTemplateCreate = (exsit) => {
|
||||
templateManageRef.value.showTemplateCreate(exsit)
|
||||
templateManageRef.value.showTemplateCreate(exsit);
|
||||
}
|
||||
|
||||
const createWikiByTemplate = () => {
|
||||
templateManageRef.value.showTemplateManage()
|
||||
templateManageRef.value.showTemplateManage();
|
||||
}
|
||||
|
||||
const filterShareStatus = (data) => {
|
||||
@@ -176,52 +176,52 @@ const filterShareStatus = (data) => {
|
||||
}
|
||||
|
||||
const openMoveMenu = (onlyMove) => {
|
||||
onlyMoveMode.value = onlyMove
|
||||
visibleMoveMenu.value = true
|
||||
moveToPageId.value = storePage.choosePageId
|
||||
moveToSpaceId.value = storeSpace.chooseSpaceId
|
||||
moveToWikiPageList.value = storePage.wikiPageList
|
||||
onlyMoveMode.value = onlyMove;
|
||||
visibleMoveMenu.value = true;
|
||||
moveToPageId.value = storePage.choosePageId;
|
||||
moveToSpaceId.value = storeSpace.chooseSpaceId;
|
||||
moveToWikiPageList.value = storePage.wikiPageList;
|
||||
}
|
||||
const handleOk = (onlyMove) => {
|
||||
aModalWaiting.value = true
|
||||
aModalWaiting.value = true;
|
||||
if (onlyMoveMode.value) {
|
||||
pageApi.movePage({
|
||||
"id": storePage.optionPageId,
|
||||
"spaceId": storeSpace.chooseSpaceId,
|
||||
"moveToPageId": moveToPageId.value,
|
||||
"moveToSpaceId": moveToSpaceId.value
|
||||
})
|
||||
});
|
||||
.then((json) => {
|
||||
doGetPageList(null)
|
||||
ElMessage.success('迁移成功')
|
||||
handleCancel()
|
||||
aModalWaiting.value = false
|
||||
doGetPageList(null);
|
||||
ElMessage.success('迁移成功');
|
||||
handleCancel();
|
||||
aModalWaiting.value = false;
|
||||
}).catch((e) => {
|
||||
aModalWaiting.value = false
|
||||
})
|
||||
return
|
||||
aModalWaiting.value = false;
|
||||
});
|
||||
return;
|
||||
}
|
||||
pageApi.copyPage({
|
||||
"id": storePage.optionPageId,
|
||||
"spaceId": storeSpace.chooseSpaceId,
|
||||
"moveToPageId": moveToPageId.value,
|
||||
"moveToSpaceId": moveToSpaceId.value
|
||||
})
|
||||
});
|
||||
.then((json) => {
|
||||
doGetPageList(null)
|
||||
ElMessage.success('复制成功')
|
||||
handleCancel()
|
||||
aModalWaiting.value = false
|
||||
doGetPageList(null);
|
||||
ElMessage.success('复制成功');
|
||||
handleCancel();
|
||||
aModalWaiting.value = false;
|
||||
}).catch((e) => {
|
||||
aModalWaiting.value = false
|
||||
})
|
||||
return
|
||||
aModalWaiting.value = false;
|
||||
});
|
||||
return;
|
||||
}
|
||||
const handleCancel = () => {
|
||||
visibleMoveMenu.value = false
|
||||
moveToPageId.value = 0
|
||||
moveToSpaceId.value = 0
|
||||
moveToWikiPageList.value = []
|
||||
visibleMoveMenu.value = false;
|
||||
moveToPageId.value = 0;
|
||||
moveToSpaceId.value = 0;
|
||||
moveToWikiPageList.value = [];
|
||||
}
|
||||
|
||||
|
||||
@@ -237,53 +237,53 @@ const deleteWikiPage = (share) => {
|
||||
}).then(() => {
|
||||
let param = {pageId: optionPageId.value};
|
||||
pageApi.pageDelete(param).then(() => {
|
||||
ElMessage.success('已删除')
|
||||
doGetPageList(null)
|
||||
ElMessage.success('已删除');
|
||||
doGetPageList(null);
|
||||
});
|
||||
}).catch(() => {
|
||||
});
|
||||
}
|
||||
|
||||
const choosePageIdFunc = (id) => {
|
||||
storePage.optionPageId = id
|
||||
storePage.optionPageId = id;
|
||||
}
|
||||
|
||||
const setNowPageId = (id, readOnly) => {
|
||||
if (readOnly) {
|
||||
moveToPageId.value = id
|
||||
return
|
||||
moveToPageId.value = id;
|
||||
return;
|
||||
}
|
||||
storePage.choosePageId = id
|
||||
storePage.choosePageId = id;
|
||||
}
|
||||
|
||||
const rename = (node, data) => {
|
||||
data.renaming = true
|
||||
data.renaming = true;
|
||||
}
|
||||
const doRename = (node, data) => {
|
||||
pageApi.renamePage({"id": data.id, "name": data.name})
|
||||
pageApi.renamePage({"id": data.id, "name": data.name});
|
||||
.then((json) => {
|
||||
doGetPageList(null)
|
||||
ElMessage.success('重命名成功')
|
||||
data.renaming = false
|
||||
})
|
||||
doGetPageList(null);
|
||||
ElMessage.success('重命名成功');
|
||||
data.renaming = false;
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
const changeNodeOptionStatus = (param) => {
|
||||
optionPageId.value = param.id
|
||||
optionPageId.value = param.id;
|
||||
}
|
||||
|
||||
let createSpaceRef = ref();
|
||||
const spaceChangeEvents = (data, readonly) => {
|
||||
storePage.pageInfo = {}
|
||||
storePage.pageInfo = {};
|
||||
if (readonly) {
|
||||
moveToSpaceId.value = data
|
||||
setNowPageId(0, readonly)
|
||||
moveToSpaceId.value = data;
|
||||
setNowPageId(0, readonly);
|
||||
let param = {spaceId: moveToSpaceId.value}
|
||||
pageApi.pageList(param).then((json) => {
|
||||
moveToWikiPageList.value = json.data || []
|
||||
})
|
||||
return
|
||||
moveToWikiPageList.value = json.data || [];
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (data === 0) {
|
||||
// 新建空间
|
||||
@@ -327,16 +327,16 @@ const loadSpaceList = (spaceId) => {
|
||||
console.log(e);
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
const doGetPageList = (parentId, node) => {
|
||||
let param = {spaceId: storeSpace.chooseSpaceId}
|
||||
pageApi.pageList(param).then((json) => {
|
||||
storePage.wikiPageList = json.data || []
|
||||
})
|
||||
storePage.wikiPageList = json.data || [];
|
||||
});
|
||||
}
|
||||
defineExpose({init})
|
||||
defineExpose({init});
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div style="height: 100%">
|
||||
<div style="height: 100%;">
|
||||
<el-container>
|
||||
<el-aside width="300px" style="background-color: #fafafa" :style="{ width: rightAsideWidth + 'px' }" v-show="leftCollapse">
|
||||
<div class="logo">{{ nowSpaceShow.name }}</div>
|
||||
@@ -57,11 +57,11 @@
|
||||
<script setup>
|
||||
import {onBeforeUnmount, ref, onMounted, watch, defineProps, nextTick, defineEmits, defineExpose, computed} from 'vue';
|
||||
import {onBeforeRouteUpdate, useRouter, useRoute} from "vue-router";
|
||||
import {ElMessageBox, ElMessage} from 'element-plus'
|
||||
import {FolderClose, FolderOpen, Word as IconParkWord,} from '@icon-park/vue-next'
|
||||
import {Search as ElIconSearch,} from '@element-plus/icons-vue'
|
||||
import pageApi from '../../assets/api/page'
|
||||
import RightResize from '../../views/page/aside/RightResize.vue'
|
||||
import {ElMessageBox, ElMessage} from 'element-plus';
|
||||
import {FolderClose, FolderOpen, Word as IconParkWord,} from '@icon-park/vue-next';
|
||||
import {Search as ElIconSearch,} from '@element-plus/icons-vue';
|
||||
import pageApi from '../../assets/api/page';
|
||||
import RightResize from '../../views/page/aside/RightResize.vue';
|
||||
import IconDocument from "@/components/base/IconDocument.vue";
|
||||
|
||||
let leftCollapse = ref(true);
|
||||
@@ -81,40 +81,40 @@ let route = useRoute();
|
||||
let router = useRouter();
|
||||
onMounted(() => {
|
||||
spaceUuid.value = route.query.space || ''
|
||||
getSpaceInfo()
|
||||
doGetPageList(null)
|
||||
getSpaceInfo();
|
||||
doGetPageList(null);
|
||||
});
|
||||
const filterPageNode = (value, data) => {
|
||||
if (!value || !data.name) return true
|
||||
if (!value || !data.name) return true;
|
||||
// issues:I2CG72 忽略大小写
|
||||
let name = data.name.toLowerCase()
|
||||
let name = data.name.toLowerCase();
|
||||
return name.indexOf(value.toLowerCase()) !== -1
|
||||
}
|
||||
const handleNodeClick = (data) => {
|
||||
if (nowPageId.value == data.id) {
|
||||
return
|
||||
return;
|
||||
}
|
||||
// console.log('点击节点:', data)
|
||||
nowPageId.value = data.id
|
||||
// console.log('点击节点:', data);
|
||||
nowPageId.value = data.id;
|
||||
router.push({
|
||||
path: '/page/share/view',
|
||||
query: {pageId: data.id, space: spaceUuid.value}
|
||||
})
|
||||
});
|
||||
}
|
||||
let wikiPageTreeRef = ref();
|
||||
const searchByKeywords = () => {
|
||||
wikiPageTreeRef.value.filter(searchKeywords.value)
|
||||
wikiPageTreeRef.value.filter(searchKeywords.value);
|
||||
}
|
||||
const doGetPageList = () => {
|
||||
pageApi.openPageList({space: spaceUuid.value}).then((json) => {
|
||||
wikiPageList.value = json.data || []
|
||||
nowPageId.value = ''
|
||||
})
|
||||
wikiPageList.value = json.data || [];
|
||||
nowPageId.value = '';
|
||||
});
|
||||
}
|
||||
const getSpaceInfo = () => {
|
||||
pageApi.openSpaceInfo({space: spaceUuid.value}).then((json) => {
|
||||
nowSpaceShow.value = json.data
|
||||
})
|
||||
nowSpaceShow.value = json.data;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
<script setup>
|
||||
import {onBeforeUnmount, ref, onMounted, watch, defineProps, nextTick, defineEmits, defineExpose, computed} from 'vue';
|
||||
import {onBeforeRouteUpdate, useRouter, useRoute} from "vue-router";
|
||||
import {ElMessageBox, ElMessage} from 'element-plus'
|
||||
import pageApi from '../../assets/api/page'
|
||||
import PageTree from '../shareLayout/PageTree.vue'
|
||||
import {ElMessageBox, ElMessage} from 'element-plus';
|
||||
import pageApi from '../../assets/api/page';
|
||||
import PageTree from '../shareLayout/PageTree.vue';
|
||||
import 'vant/es/icon/style/index';
|
||||
import 'vant/es/popup/style/index';
|
||||
import 'vant/es/cell/style/index';
|
||||
@@ -42,35 +42,35 @@ let route = useRoute();
|
||||
let router = useRouter();
|
||||
onMounted(() => {
|
||||
spaceUuid.value = route.query.space || ''
|
||||
getSpaceInfo()
|
||||
doGetPageList(null)
|
||||
getSpaceInfo();
|
||||
doGetPageList(null);
|
||||
});
|
||||
const filterPageNode = (value, data) => {
|
||||
if (!value) return true
|
||||
if (!value) return true;
|
||||
return data.name.indexOf(value) !== -1
|
||||
}
|
||||
const pageSelectChange = (value) => {
|
||||
// console.log('页面修改:' + value)
|
||||
popupShow.value = false
|
||||
// console.log('页面修改:' + value);
|
||||
popupShow.value = false;
|
||||
router.replace({
|
||||
path: '/page/share/mobile/view',
|
||||
query: {pageId: value, space: spaceUuid.value}
|
||||
})
|
||||
});
|
||||
}
|
||||
const popupShowChange = (value) => {
|
||||
popupShow.value = value
|
||||
// console.log(pageSelect.value)
|
||||
popupShow.value = value;
|
||||
// console.log(pageSelect.value);
|
||||
}
|
||||
const doGetPageList = () => {
|
||||
pageApi.openPageList({space: spaceUuid.value}).then((json) => {
|
||||
wikiPageList.value = json.data || []
|
||||
nowPageId.value = ''
|
||||
})
|
||||
wikiPageList.value = json.data || [];
|
||||
nowPageId.value = '';
|
||||
});
|
||||
}
|
||||
const getSpaceInfo = () => {
|
||||
pageApi.openSpaceInfo({space: spaceUuid.value}).then((json) => {
|
||||
nowSpaceShow.value = json.data
|
||||
})
|
||||
nowSpaceShow.value = json.data;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@@ -13,12 +13,12 @@
|
||||
<el-link v-if="notReadMessageNum > 0" :icon="ElIconCheck" type="primary" @click="readAllUserMessage">本页标记已读</el-link>
|
||||
</div>
|
||||
<div class="header-user-message">
|
||||
<el-table :data="userMessageList" stripe max-height="400" style="width: 100%; margin-bottom: 5px">
|
||||
<el-table :data="userMessageList" stripe max-height="400" style="width: 100%; margin-bottom: 5px;">
|
||||
<el-table-column label="操作时间" prop="creationTime" width="150px"></el-table-column>
|
||||
<el-table-column label="内容" prop="msgContent" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column width="60px">
|
||||
<template v-slot="scope">
|
||||
<el-badge :is-dot="scope.row.msgStatus === 0" style="line-height: 10px; padding-right: 5px">
|
||||
<el-badge :is-dot="scope.row.msgStatus === 0" style="line-height: 10px; padding-right: 5px;">
|
||||
<el-link type="primary" @click="showUserMessage(scope.row)">查看</el-link>
|
||||
</el-badge>
|
||||
</template>
|
||||
@@ -51,10 +51,10 @@ import {
|
||||
import {BellOutlined, CheckOutlined} from '@ant-design/icons-vue';
|
||||
import {onBeforeUnmount, toRefs, ref, reactive, onMounted, watch, h, defineProps, nextTick, defineEmits, defineExpose, computed} from 'vue';
|
||||
import {onBeforeRouteUpdate, useRouter, useRoute} from "vue-router";
|
||||
import {ElMessageBox, ElMessage} from 'element-plus'
|
||||
import {ElMessageBox, ElMessage} from 'element-plus';
|
||||
import pageApi from "@/assets/api/page";
|
||||
import userApi from "@/assets/api/user";
|
||||
import {useStoreDisplay} from '@/store/wikiDisplay.js'
|
||||
import {useStoreDisplay} from '@/store/wikiDisplay.js';
|
||||
|
||||
let route = useRoute();
|
||||
let router = useRouter();
|
||||
@@ -88,28 +88,28 @@ const loadUserMessageList = () => {
|
||||
const showUserMessage = (row) => {
|
||||
if (row.msgStatus === 0) {
|
||||
userApi.readUserMessage({ids: row.id}).then(() => {
|
||||
loadUserMessageList()
|
||||
})
|
||||
loadUserMessageList();
|
||||
});
|
||||
}
|
||||
if (row.msgType >= 2 && row.msgType <= 14) {
|
||||
router.push({path: '/page/show', query: {pageId: row.dataId}})
|
||||
userMessagePopVisible.value = false
|
||||
router.push({path: '/page/show', query: {pageId: row.dataId}});
|
||||
userMessagePopVisible.value = false;
|
||||
}
|
||||
}
|
||||
const readAllUserMessage = () => {
|
||||
let msgIds = []
|
||||
let msgIds = [];
|
||||
userMessageList.value.filter((item) => item.msgStatus === 0).forEach((item) => {
|
||||
msgIds.push(item.id)
|
||||
})
|
||||
if (msgIds.length <= 0) return
|
||||
msgIds.push(item.id);
|
||||
});
|
||||
if (msgIds.length <= 0) return;
|
||||
userApi.readUserMessage({ids: msgIds.join(',')}).then(() => {
|
||||
ElMessage.success('标记成功')
|
||||
loadUserMessageList()
|
||||
})
|
||||
ElMessage.success('标记成功');
|
||||
loadUserMessageList();
|
||||
});
|
||||
}
|
||||
const handleCurrentChange = (val) => {
|
||||
userMsgParam.value.pageNum = val
|
||||
loadUserMessageList()
|
||||
userMsgParam.value.pageNum = val;
|
||||
loadUserMessageList();
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@@ -39,15 +39,15 @@ import {
|
||||
} from '@icon-park/vue-next'
|
||||
import {ref, defineProps, defineEmits} from 'vue';
|
||||
import {useRouter} from "vue-router";
|
||||
import {ElMessage} from 'element-plus'
|
||||
import pageApi from '../../assets/api/page'
|
||||
import {ElMessage} from 'element-plus';
|
||||
import pageApi from '../../assets/api/page';
|
||||
import axios from "axios";
|
||||
import IconDocument from '@/components/base/IconDocument.vue'
|
||||
import IconDocument from '@/components/base/IconDocument.vue';
|
||||
|
||||
let router = useRouter();
|
||||
let uploadFileUrl = ref(import.meta.env.VITE_APP_BASE_API + '/zyplayer-doc-wiki/page/file/import/upload');
|
||||
let fileList = ref([]);
|
||||
let emit = defineEmits(['choosePageIdFunc', 'doGetPageList', 'createWikiByTemplate'])
|
||||
let emit = defineEmits(['choosePageIdFunc', 'doGetPageList', 'createWikiByTemplate']);
|
||||
let props = defineProps({
|
||||
choiceSpace: Number,
|
||||
choosePageId: Number,
|
||||
@@ -86,10 +86,10 @@ const doAUpload = (data) => {
|
||||
});
|
||||
}
|
||||
const choosePageIdFunc = (id) => {
|
||||
emit('choosePageIdFunc', id)
|
||||
emit('choosePageIdFunc', id);
|
||||
}
|
||||
const createWikiByTemplate = (id) => {
|
||||
emit('createWikiByTemplate', id)
|
||||
emit('createWikiByTemplate', id);
|
||||
}
|
||||
const createWiki = (editorType, parentId) => {
|
||||
if (props.choiceSpace > 0) {
|
||||
@@ -105,17 +105,17 @@ const createWiki = (editorType, parentId) => {
|
||||
content: '',
|
||||
preview: ''
|
||||
}).then((json) => {
|
||||
emit('doGetPageList', null)
|
||||
ElMessage.success('创建成功')
|
||||
emit('doGetPageList', null);
|
||||
ElMessage.success('创建成功');
|
||||
if (editorType !== 0) {
|
||||
router.push({
|
||||
path: '/page/edit',
|
||||
query: {parentId: props.nowPageId.value, pageId: json.data.id}
|
||||
})
|
||||
});
|
||||
}
|
||||
})
|
||||
});
|
||||
} else {
|
||||
ElMessage.warning('请先选择或创建空间')
|
||||
ElMessage.warning('请先选择或创建空间');
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<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="选择空间" @change="spaceChangeEvents" style="width: 100%">
|
||||
<div style="margin-bottom: 5px;">
|
||||
<el-select :model-value="choiceSpace" filterable placeholder="选择空间" @change="spaceChangeEvents" style="width: 100%;">
|
||||
<el-option-group label="" v-if="!props.readOnly">
|
||||
<el-option :key="-1" label="空间管理" :value="-1"></el-option>
|
||||
</el-option-group>
|
||||
@@ -60,11 +60,11 @@
|
||||
<script setup>
|
||||
import {ref, defineProps, defineEmits, defineExpose} from 'vue';
|
||||
import {useRouter, useRoute} from "vue-router";
|
||||
import pageApi from '../../assets/api/page'
|
||||
import pageApi from '../../assets/api/page';
|
||||
import {useStoreDisplay} from "@/store/wikiDisplay";
|
||||
import {useStorePageData} from "@/store/pageData";
|
||||
|
||||
let emit = defineEmits(['doGetPageList', 'spaceChangeEvents', 'setNowPageId'])
|
||||
let emit = defineEmits(['doGetPageList', 'spaceChangeEvents', 'setNowPageId']);
|
||||
let searchKeywords = ref('');
|
||||
let descriptorForTree = ref("点击收起目录");
|
||||
let explan = ref(false);
|
||||
@@ -82,13 +82,13 @@ let props = defineProps({
|
||||
nowPageId: Number,
|
||||
choiceSpace: Number,
|
||||
readOnly: Boolean
|
||||
})
|
||||
});
|
||||
|
||||
|
||||
const assisSetCurrentKey = () => {
|
||||
emit('setNowPageId', route.query.pageId, props.readOnly)
|
||||
emit('setNowPageId', route.query.pageId, props.readOnly);
|
||||
if (props.nowPageId) {
|
||||
wikiPageTreeRef.value.setCurrentKey(nowPageId.value)
|
||||
wikiPageTreeRef.value.setCurrentKey(nowPageId.value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,35 +98,35 @@ const changeWikiPageExpandedKeys = (pageId) => {
|
||||
}
|
||||
|
||||
const spaceChangeEvents = (data) => {
|
||||
emit('spaceChangeEvents', data, props.readOnly)
|
||||
emit('spaceChangeEvents', data, props.readOnly);
|
||||
}
|
||||
|
||||
const doSearchByKeywords = (queryString, callback) => {
|
||||
if (!queryString || !queryString.trim()) {
|
||||
callback([])
|
||||
return
|
||||
callback([]);
|
||||
return;
|
||||
}
|
||||
pageApi
|
||||
.pageNews({spaceId: props.choiceSpace, keywords: queryString})
|
||||
.pageNews({spaceId: props.choiceSpace, keywords: queryString});
|
||||
.then((json) => {
|
||||
let spacePageNews = json.data || []
|
||||
callback(spacePageNews)
|
||||
})
|
||||
let spacePageNews = json.data || [];
|
||||
callback(spacePageNews);
|
||||
});
|
||||
}
|
||||
const handleSearchKeywordsSelect = (item) => {
|
||||
searchKeywords.value = ''
|
||||
router.push({path: '/page/show', query: {pageId: item.pageId}})
|
||||
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
|
||||
explan.value = false;
|
||||
} else {
|
||||
explanClass.value = "hidTree"
|
||||
descriptorForTree.value = "点击展开目录"
|
||||
explan.value = true
|
||||
explan.value = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,37 +137,37 @@ const filterPageNode = (value, data) => {
|
||||
return name.indexOf(value.toLowerCase()) !== -1;
|
||||
}
|
||||
const searchByKeywords = () => {
|
||||
wikiPageTreeRef.value.filter(searchKeywords.value)
|
||||
wikiPageTreeRef.value.filter(searchKeywords.value);
|
||||
}
|
||||
let storePage = useStorePageData();
|
||||
const handleNodeClick = (data) => {
|
||||
//console.log('点击节点:', data, props.nowPageId)
|
||||
storeDisplay.showHeader = true
|
||||
emit('setNowPageId', data.id, props.readOnly)
|
||||
//console.log('点击节点:', data, props.nowPageId);
|
||||
storeDisplay.showHeader = true;
|
||||
emit('setNowPageId', data.id, props.readOnly);
|
||||
if (props.readOnly) {
|
||||
return
|
||||
return;
|
||||
}
|
||||
if (data.editorType !== 0) {
|
||||
router.push({path: '/page/show', query: {pageId: data.id}})
|
||||
router.push({path: '/page/show', query: {pageId: data.id}});
|
||||
}
|
||||
}
|
||||
const handlePageDrop = (draggingNode, dropNode, dropType, ev) => {
|
||||
console.log('tree drop: ', draggingNode.data, dropNode.data, dropType)
|
||||
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
|
||||
param.parentId = dropNode.data.id;
|
||||
} else if (dropType == 'before') {
|
||||
param.beforeSeq = dropNode.data.seqNo
|
||||
param.beforeSeq = dropNode.data.seqNo;
|
||||
} else if (dropType == 'after') {
|
||||
param.afterSeq = dropNode.data.seqNo
|
||||
param.afterSeq = dropNode.data.seqNo;
|
||||
}
|
||||
pageApi.pageChangeParent(param).then((res) => {
|
||||
emit('doGetPageList', node.id, node)
|
||||
})
|
||||
emit('doGetPageList', node.id, node);
|
||||
});
|
||||
}
|
||||
defineExpose({searchByKeywords})
|
||||
defineExpose({searchByKeywords});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
@@ -13,18 +13,18 @@
|
||||
<el-switch v-model="newSpaceForm.openDoc" inactive-text="需要登录" :inactive-value="0" active-text="开放访问" :active-value="1"></el-switch>
|
||||
</el-form-item>
|
||||
<el-form-item label="空间类型:">
|
||||
<el-select v-model="newSpaceForm.type" filterable placeholder="选择类型" style="width: 100%">
|
||||
<el-select v-model="newSpaceForm.type" filterable placeholder="选择类型" style="width: 100%;">
|
||||
<el-option :key="1" label="公共空间" :value="1">
|
||||
<span style="float: left">公共空间</span>
|
||||
<span style="float: right; color: #8492a6; font-size: 13px">属于公共,登录用户可访问、编辑</span>
|
||||
<span style="float: right; color: #8492a6; font-size: 13px;">属于公共,登录用户可访问、编辑</span>
|
||||
</el-option>
|
||||
<el-option :key="2" label="个人空间" :value="2">
|
||||
<span style="float: left">个人空间</span>
|
||||
<span style="float: right; color: #8492a6; font-size: 13px">属于个人,所有登录用户可访问</span>
|
||||
<span style="float: right; color: #8492a6; font-size: 13px;">属于个人,所有登录用户可访问</span>
|
||||
</el-option>
|
||||
<el-option :key="3" label="隐私空间" :value="3">
|
||||
<span style="float: left">隐私空间</span>
|
||||
<span style="float: right; color: #8492a6; font-size: 13px">属于个人,仅创建者可访问</span>
|
||||
<span style="float: right; color: #8492a6; font-size: 13px;">属于个人,仅创建者可访问</span>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -41,8 +41,8 @@
|
||||
<script setup>
|
||||
import {onBeforeUnmount, ref, onMounted, watch, defineProps, nextTick, defineEmits, defineExpose, computed} from 'vue';
|
||||
import {onBeforeRouteUpdate, useRouter, useRoute} from "vue-router";
|
||||
import {ElMessageBox, ElMessage} from 'element-plus'
|
||||
import pageApi from '../../assets/api/page'
|
||||
import {ElMessageBox, ElMessage} from 'element-plus';
|
||||
import pageApi from '../../assets/api/page';
|
||||
|
||||
let editSpaceId = ref('');
|
||||
let newSpaceFormRules = ref({
|
||||
@@ -64,7 +64,7 @@ let newSpaceForm = ref({
|
||||
openDoc: 0,
|
||||
uuid: '',
|
||||
type: 1,
|
||||
})
|
||||
});
|
||||
let newSpaceDialogVisible = ref(false);
|
||||
let manageSpaceDialogVisible = ref(false);
|
||||
let emit = defineEmits(['success']);
|
||||
@@ -81,13 +81,13 @@ const show = (spaceId) => {
|
||||
editSpaceId.value = spaceId || ''
|
||||
if (!!editSpaceId.value) {
|
||||
pageApi.spaceList({id: editSpaceId.value}).then((json) => {
|
||||
let spaceList = json.data || []
|
||||
let spaceList = json.data || [];
|
||||
if (spaceList.length > 0) {
|
||||
newSpaceForm.value = spaceList[0]
|
||||
newSpaceForm.value = spaceList[0];
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
newSpaceDialogVisible.value = true
|
||||
newSpaceDialogVisible.value = true;
|
||||
}
|
||||
let newSpaceFormRef = ref();
|
||||
const onNewSpaceSubmit = () => {
|
||||
@@ -102,15 +102,15 @@ const onNewSpaceSubmit = () => {
|
||||
treeLazyLoad: newSpaceForm.value.treeLazyLoad,
|
||||
}
|
||||
pageApi.updateSpace(param).then((json) => {
|
||||
ElMessage.success('创建成功')
|
||||
newSpaceDialogVisible.value = false
|
||||
emit('success', json.data.id)
|
||||
})
|
||||
ElMessage.success('创建成功');
|
||||
newSpaceDialogVisible.value = false;
|
||||
emit('success', json.data.id);
|
||||
});
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
const onNewSpaceCancel = () => {
|
||||
newSpaceDialogVisible.value = false
|
||||
newSpaceDialogVisible.value = false;
|
||||
}
|
||||
defineExpose({show});
|
||||
</script>
|
||||
|
||||
@@ -90,38 +90,38 @@ import {
|
||||
} from 'vue';
|
||||
import {AlertOutlined, AimOutlined, BorderOutlined} from '@ant-design/icons-vue';
|
||||
import {onBeforeRouteUpdate, useRouter, useRoute} from "vue-router";
|
||||
import {ElMessageBox, ElMessage} from 'element-plus'
|
||||
import pageApi from '../../assets/api/page'
|
||||
import {mavonEditor} from 'mavon-editor'
|
||||
import 'mavon-editor/dist/markdown/github-markdown.min.css'
|
||||
import 'mavon-editor/dist/css/index.css'
|
||||
import {ElMessageBox, ElMessage} from 'element-plus';
|
||||
import pageApi from '../../assets/api/page';
|
||||
import {mavonEditor} from 'mavon-editor';
|
||||
import 'mavon-editor/dist/markdown/github-markdown.min.css';
|
||||
import 'mavon-editor/dist/css/index.css';
|
||||
|
||||
let emit = defineEmits('doGetPageList');
|
||||
let router = useRouter()
|
||||
let nowTemplateNum = ref(1)
|
||||
let totalTemplate = ref(0)
|
||||
let exsit = ref(false)
|
||||
let router = useRouter();
|
||||
let nowTemplateNum = ref(1);
|
||||
let totalTemplate = ref(0);
|
||||
let exsit = ref(false);
|
||||
|
||||
let props = defineProps({
|
||||
pageId: Number,
|
||||
spaceId: Number
|
||||
})
|
||||
});
|
||||
let templateNewForm = ref({
|
||||
pageId: 0,
|
||||
spaceId: 0,
|
||||
tagName: '',
|
||||
shareStatus: false
|
||||
})
|
||||
});
|
||||
let newTemplateDialogVisible = ref(false);
|
||||
const showTemplateCreate = (exsited) => {
|
||||
exsit.value = exsited
|
||||
exsit.value = exsited;
|
||||
templateNewForm.value = {
|
||||
pageId: props.pageId,
|
||||
spaceId: props.spaceId,
|
||||
tagName: '',
|
||||
shareStatus: false
|
||||
}
|
||||
newTemplateDialogVisible.value = true
|
||||
newTemplateDialogVisible.value = true;
|
||||
}
|
||||
const filterShareStatus = (data) => {
|
||||
if (data === 1) {
|
||||
@@ -131,33 +131,33 @@ const filterShareStatus = (data) => {
|
||||
}
|
||||
const onNewTemplateSubmit = () => {
|
||||
pageApi.addTemplate(templateNewForm.value).then((json) => {
|
||||
ElMessage.success('模板记录成功')
|
||||
emit('doGetPageList', null)
|
||||
})
|
||||
newTemplateDialogVisible.value = false
|
||||
ElMessage.success('模板记录成功');
|
||||
emit('doGetPageList', null);
|
||||
});
|
||||
newTemplateDialogVisible.value = false;
|
||||
}
|
||||
const onNewTemplateCancel = () => {
|
||||
newTemplateDialogVisible.value = false
|
||||
newTemplateDialogVisible.value = false;
|
||||
}
|
||||
|
||||
let templateChooseDialogVisible = ref(false)
|
||||
let previewVisible = ref(false)
|
||||
let aModalWaiting = ref(false)
|
||||
let tags = ref([])
|
||||
let filterTags = ref([])
|
||||
let open = ref(false)
|
||||
let name = ref('')
|
||||
let templateList = ref()
|
||||
let editorType = ref(1)
|
||||
let templateChooseDialogVisible = ref(false);
|
||||
let previewVisible = ref(false);
|
||||
let aModalWaiting = ref(false);
|
||||
let tags = ref([]);
|
||||
let filterTags = ref([]);
|
||||
let open = ref(false);
|
||||
let name = ref('');
|
||||
let templateList = ref();
|
||||
let editorType = ref(1);
|
||||
|
||||
|
||||
const showTemplateManage = () => {
|
||||
templateChooseDialogVisible.value = true
|
||||
filterTags.value = [{show: true, tagName: ''}]
|
||||
totalTemplate.value = 0
|
||||
nowTemplateNum.value = 1
|
||||
templateList.value = []
|
||||
filterByOpen()
|
||||
templateChooseDialogVisible.value = true;
|
||||
filterTags.value = [{show: true, tagName: ''}];
|
||||
totalTemplate.value = 0;
|
||||
nowTemplateNum.value = 1;
|
||||
templateList.value = [];
|
||||
filterByOpen();
|
||||
}
|
||||
const chooseTemplate = (item) => {
|
||||
pageApi.useTemplate({
|
||||
@@ -165,24 +165,24 @@ const chooseTemplate = (item) => {
|
||||
parentId: props.pageId,
|
||||
templateId: item.templateId
|
||||
}).then((json) => {
|
||||
templateChooseDialogVisible.value = false
|
||||
emit('doGetPageList', null)
|
||||
ElMessage.success('创建成功')
|
||||
templateChooseDialogVisible.value = false;
|
||||
emit('doGetPageList', null);
|
||||
ElMessage.success('创建成功');
|
||||
router.push({
|
||||
path: '/page/edit',
|
||||
query: {parentId: props.pageId, pageId: json.data.id}
|
||||
})
|
||||
})
|
||||
});
|
||||
});
|
||||
}
|
||||
const turnToSource = (item) => {
|
||||
templateChooseDialogVisible.value = false
|
||||
templateChooseDialogVisible.value = false;
|
||||
router.push({
|
||||
path: '/page/show',
|
||||
query: {spaceId: item.spaceId, pageId: item.id}
|
||||
})
|
||||
});
|
||||
}
|
||||
const pageUpDown = () => {
|
||||
templateList.value = []
|
||||
templateList.value = [];
|
||||
pageApi.getTemplate({
|
||||
name: name.value,
|
||||
open: open.value,
|
||||
@@ -190,68 +190,68 @@ const pageUpDown = () => {
|
||||
pageNum: nowTemplateNum.value
|
||||
}).then((json) => {
|
||||
totalTemplate.value = json.total || 0
|
||||
templateList.value = json.data || []
|
||||
})
|
||||
templateList.value = json.data || [];
|
||||
});
|
||||
}
|
||||
const simpleQryTemplate = () => {
|
||||
templateList.value = []
|
||||
templateList.value = [];
|
||||
pageApi.getTemplate({
|
||||
name: name.value,
|
||||
open: open.value,
|
||||
tags: filterTags.value,
|
||||
}).then((json) => {
|
||||
totalTemplate.value = json.total || 0
|
||||
templateList.value = json.data || []
|
||||
nowTemplateNum.value = 1
|
||||
})
|
||||
templateList.value = json.data || [];
|
||||
nowTemplateNum.value = 1;
|
||||
});
|
||||
}
|
||||
const filterByOpen = () => {
|
||||
pageApi.getTags({open: open.value}).then((json) => {
|
||||
tags.value = json.data || []
|
||||
filterTags.value = json.data || []
|
||||
simpleQryTemplate()
|
||||
})
|
||||
tags.value = json.data || [];
|
||||
filterTags.value = json.data || [];
|
||||
simpleQryTemplate();
|
||||
});
|
||||
}
|
||||
const filterByTags = () => {
|
||||
filterTags.value = tags.value.filter((item) => {
|
||||
return item.show
|
||||
})
|
||||
});
|
||||
if (filterTags.value.length === 0) {
|
||||
filterTags.value = ['']
|
||||
filterTags.value = [''];
|
||||
}
|
||||
setTimeout(simpleQryTemplate(), 200)
|
||||
setTimeout(simpleQryTemplate(), 200);
|
||||
}
|
||||
const filterByName = () => {
|
||||
simpleQryTemplate()
|
||||
simpleQryTemplate();
|
||||
}
|
||||
|
||||
let pageShowDetail = ref('')
|
||||
let pageContentRef = ref(null)
|
||||
let pageShowDetail = ref('');
|
||||
let pageContentRef = ref(null);
|
||||
const showPreview = (item) => {
|
||||
editorType.value = item.editorType
|
||||
editorType.value = item.editorType;
|
||||
if (item.editorType === 1) {
|
||||
pageShowDetail.value = item.content
|
||||
pageShowDetail.value = item.content;
|
||||
}
|
||||
if (item.editorType === 2) {
|
||||
pageShowDetail.value = mavonEditor.getMarkdownIt().render(item.content)
|
||||
pageShowDetail.value = mavonEditor.getMarkdownIt().render(item.content);
|
||||
}
|
||||
setTimeout(previewPageImage(), 500);
|
||||
previewVisible.value = true
|
||||
previewVisible.value = true;
|
||||
}
|
||||
const previewPageImage = () => {
|
||||
const imgArr = []
|
||||
const imgArr = [];
|
||||
if (pageContentRef.value !== undefined || pageContentRef.value !== '') {
|
||||
return
|
||||
return;
|
||||
}
|
||||
const imgSelector = pageContentRef.value.querySelectorAll('img')
|
||||
const imgSelector = pageContentRef.value.querySelectorAll('img');
|
||||
imgSelector.forEach((item, index) => {
|
||||
imgArr.push(item.src)
|
||||
imgArr.push(item.src);
|
||||
item.onclick = () => {
|
||||
previewInitialIndex.value = index
|
||||
showImagePreviewList.value = imgArr
|
||||
showImagePreview.value = true
|
||||
previewInitialIndex.value = index;
|
||||
showImagePreviewList.value = imgArr;
|
||||
showImagePreview.value = true;
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
defineExpose({showTemplateCreate, showTemplateManage});
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user