继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【九月打卡】第2天 文档页面功能开发-2

随便取名
关注TA
已关注
手记 7
粉丝 0
获赞 0

课程名称Spring Boot+Vue3前后端分离,实战wiki知识库系统

章节名称:8-12 文档页面功能开发-2

讲师姓名:甲蛙

文档内容:

改上次留下的一个小bug,文档内容表没数据的话,会报空指针错误。加入非空判断

if (ObjectUtils.isEmpty(content)) {
    return "";
} else {
    return content.getContent();
}

接下来,让点击文档节点时显示文档。加入<div :innerHTML="html"></div>给文档节点树右侧显示内容,html为响应式变量。然后仿照文档管理写查询方法,给html赋值。onSelect为点击文档节点执行的方法,参数selectedKeys是官网提供的是个数组,所以使用时需要加上[0]。

/**
 * 内容查询
 **/
const handleQueryContent = (id: number) => {
  axios.get("/doc/find-content/" + id).then((response) => {
    const data = response.data;
    if (data.success) {
      html.value = data.content;
    } else {
      message.error(data.message);
    }
  });
};

const onSelect = (selectedKeys: any, info: any) => {
  console.log('selected', selectedKeys, info);
  if (Tool.isNotEmpty(selectedKeys)) {
    // 加载内容
    handleQueryContent(selectedKeys[0]);
  }
};

http://img1.sycdn.imooc.com/632dd6e80001a79108730428.jpg

此时,富文本显示的样式和预期不一样,有些没有显示,这时因为wangeditor从编辑器中获得的代码是不包含样式的纯html,样式可以自定义,也可以使用默认的样式,所以我们使用默认的样式,不过要只对富文本文档内容生效需要给内容部分加上样式class="wangeditor",并在css前面加上选择器

<style>
/* wangeditor默认样式, 参照: http://www.wangeditor.com/doc/pages/02-%E5%86%85%E5%AE%B9%E5%A4%84%E7%90%86/03-%E8%8E%B7%E5%8F%96html.html */
/* table 样式 */
.wangeditor table {
  border-top: 1px solid #ccc;
  border-left: 1px solid #ccc;
}
.wangeditor table td,
.wangeditor table th {
  border-bottom: 1px solid #ccc;
  border-right: 1px solid #ccc;
  padding: 3px 5px;
}
.wangeditor table th {
  border-bottom: 2px solid #ccc;
  text-align: center;
}

/* blockquote 样式 */
.wangeditor blockquote {
  display: block;
  border-left: 8px solid #d0e5f2;
  padding: 5px 10px;
  margin: 10px 0;
  line-height: 1.4;
  font-size: 100%;
  background-color: #f1f1f1;
}

/* code 样式 */
.wangeditor code {
  display: inline-block;
  *display: inline;
  *zoom: 1;
  background-color: #f1f1f1;
  border-radius: 3px;
  padding: 3px 5px;
  margin: 0 3px;
}
.wangeditor pre code {
  display: block;
}

/* ul ol 样式 */
.wangeditor ul, ol {
  margin: 10px 0 10px 20px;
}
</style>

现在又有了个小bug,显示还是不太一样,因为antd给p标签的样式影响了我们的样式,我们可以把它覆盖掉,加入!import可以提到最高优先级

/* 和antdv p冲突,覆盖掉 */
.wangeditor blockquote p {
  font-family:"YouYuan";
  margin: 20px 10px !important;
  font-size: 16px !important;
  font-weight:600;
}

下面做文档预览功能

首先在文档管理右侧加入一个文档预览按钮,执行handlePreviewContent()方法

<a-form-item>
  <a-button type="primary" @click="handlePreviewContent()">
    <EyeOutlined /> 内容预览
  </a-button>
</a-form-item>

用抽屉组件a-drawer显示预览的文档

<a-drawer width="900" placement="right" :closable="false" :visible="drawerVisible" @close="onDrawerClose">
  <div class="wangeditor" :innerHTML="previewHtml"></div>
</a-drawer>

然后写显示方法handlePreviewContent和关闭方法onDrawerClose,当点击按钮时将富文本显示出来,并将显示属性改为true来使它变成可见

// ----------------富文本预览--------------
const drawerVisible = ref(false);
const previewHtml = ref();
const handlePreviewContent = () => {
  const html = editor.txt.html();
  previewHtml.value = html;
  drawerVisible.value = true;
};
const onDrawerClose = () => {
  drawerVisible.value = false;
};


学习收获:课程中这章分成了两部分,今天学习的是下半部分,主要是改了几个bug和是实现文档预览,还有主要是前端的部分,虽然我想学的是后端,但多了解下前端也不是坏事



打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP