kun-galgame-vue/src/components/WangEditor.vue

79 lines
1.8 KiB
Vue
Raw Normal View History

2023-05-10 16:46:20 +00:00
<!--
编辑器实例共用组件
-->
<script setup lang="ts">
2023-05-25 13:43:42 +00:00
import '@wangeditor/editor/dist/css/style.css' // 引入 css
2023-05-10 16:46:20 +00:00
import { onBeforeUnmount, ref, shallowRef, onMounted } from 'vue'
import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
2023-06-11 13:35:01 +00:00
const props = defineProps(['html', 'text'])
2023-06-07 14:16:33 +00:00
// 覆盖编辑器原生样式
import '@/styles/editor/editor.scss'
2023-05-10 16:46:20 +00:00
// 编辑器实例,必须用 shallowRef重要
const editorRef = shallowRef()
// 内容 HTML
2023-06-11 13:35:01 +00:00
const valueHtml = ref(props.html)
const valueText = ref(props.text)
2023-05-10 16:46:20 +00:00
// 模拟 ajax 异步获取内容
onMounted(() => {
2023-06-07 15:03:41 +00:00
// setTimeout(() => {
// valueHtml.value = '<p>模拟 Ajax 异步设置内容</p>'
// }, 1500)
2023-05-10 16:46:20 +00:00
})
// 编辑器配置
const editorConfig = {
placeholder: '请输入内容...',
2023-06-07 14:16:33 +00:00
MENU_CONF: {
uploadImage: {
// server: 'http://127.0.0.1:10007/upload/img',
// uploadFileName: 'image',
},
},
2023-05-10 16:46:20 +00:00
}
const handleCreated = (editor: any) => {
editorRef.value = editor // 记录 editor 实例,重要!
}
// 组件销毁时,及时销毁编辑器
onBeforeUnmount(() => {
const editor = editorRef.value
if (editor == null) return
editor.destroy()
})
</script>
<template>
<!-- 编辑器 -->
<div class="editor—wrapper">
2023-06-07 14:16:33 +00:00
<Toolbar class="toolbar-container" :editor="editorRef" />
2023-05-10 16:46:20 +00:00
<Editor
class="editor-container"
2023-06-07 15:03:41 +00:00
style="height: 400px"
2023-05-10 16:46:20 +00:00
v-model="valueHtml"
:defaultConfig="editorConfig"
2023-05-25 13:43:42 +00:00
@onCreated="handleCreated"
2023-05-10 16:46:20 +00:00
/>
</div>
</template>
2023-05-25 07:55:30 +00:00
<style lang="scss" scoped>
2023-05-10 16:46:20 +00:00
/* 编辑器的样式 */
.editorwrapper {
/* 编辑器的 border */
2023-06-05 06:32:08 +00:00
border: 1px solid var(--kungalgame-blue-4);
2023-05-10 16:46:20 +00:00
box-sizing: border-box;
/* 编辑器的宽度 */
2023-06-07 15:03:41 +00:00
width: 100%;
2023-05-10 16:46:20 +00:00
margin: 0 auto;
z-index: 1008; /* 按需定义 */
}
.toolbar-container {
2023-06-05 06:32:08 +00:00
border-bottom: 1px solid var(--kungalgame-blue-4);
2023-05-10 16:46:20 +00:00
}
</style>