首页 > 其他分享 >Vue OnlyOffice 在线文档

Vue OnlyOffice 在线文档

时间:2023-04-03 09:55:49浏览次数:56  
标签:Vue option docEditor fileType docType 文档 key let OnlyOffice

1、在线文档引用

由后台人员搭建服务,引用api

2、封装组件

<!--
 * @Descripttion: 在线编辑插件
 * @version: 0.0.1
 * @Author: PengShuai
 * @Date: 2022-12-23 15:43:07
 * @LastEditors: PengShuai
 * @LastEditTime: 2023-02-22 10:17:11
 -->
<template>
  <div class="BaseOffice">
    <div id="psOffice"></div>
  </div>
</template>

<script>
export default {
  name: 'BaseOffice',
  data() {
    return {
      // 文档类型
      doctype: '',
      // 编辑状态
      docEditor: null,
    }
  },
  props: {
    // 传入配置
    option: {
      type: Object,
      default: () => {
        return {}
      },
    },
  },
  beforeDestroy() {
    if (this.docEditor !== null) {
      this.docEditor.destroyEditor()
      this.docEditor = null
    }
  },
  watch: {
    option: {
      handler: function (n) {
        this.setEditor(n)
        this.doctype = this.getFileType(n.fileType)
      },
      deep: true,
    },
  },
  mounted() {
    if (this.option.url) {
      this.setEditor(this.option)
    }
  },
  methods: {
    setEditor(option) {
      if (this.docEditor !== null) {
        this.docEditor.destroyEditor()
        this.docEditor = null
      }
      this.doctype = this.getFileType(option.fileType)
      let config = {
        document: {
          fileType: option.fileType,
          key: option.key || '',
          title: option.title,
          permissions: {
            edit: option.isEdit,
            print: option.isPrint,
            modifyContentControl: true,
            download: true,
          },
          url: option.url,
        },
        documentType: this.doctype,
        editorConfig: {
          key: option.key || '',
          customization: {
            autosave: false, //自动保存
            forcesave: false,
            chat: false,
            comments: false,
          },
          callbackUrl: option.editUrl, //回调的地址
          lang: option.lang, //语言设置
          user: {
            id: option.user.id,
            name: option.user.name,
          },
          mode: option.model,
        },
        width: '100%',
        height: '100%',
        token: option.token,
      }
      this.docEditor = new DocsAPI.DocEditor('psOffice', config)
    },
    // 获取文件类型
    getFileType(fileType) {
      let docType = ''
      let fileTypesDoc = [
        'doc',
        'docm',
        'docx',
        'dot',
        'dotm',
        'dotx',
        'epub',
        'fodt',
        'htm',
        'html',
        'mht',
        'odt',
        'ott',
        'pdf',
        'rtf',
        'txt',
        'djvu',
        'xps',
      ]
      let fileTypesCsv = ['csv', 'fods', 'ods', 'ots', 'xls', 'xlsm', 'xlsx', 'xlt', 'xltm', 'xltx']
      let fileTypesPPt = [
        'fodp',
        'odp',
        'otp',
        'pot',
        'potm',
        'potx',
        'pps',
        'ppsm',
        'ppsx',
        'ppt',
        'pptm',
        'pptx',
      ]
      if (fileTypesDoc.includes(fileType)) {
        docType = 'text'
      }
      if (fileTypesCsv.includes(fileType)) {
        docType = 'spreadsheet'
      }
      if (fileTypesPPt.includes(fileType)) {
        docType = 'presentation'
      }
      return docType
    },
  },
}
</script>

<style lang="less" scoped>
.BaseOffice {
  width: 100%;
  height: 100%;
}
</style>

3、引用组件

import BaseOffice from '@/components/BaseOffice'

components: { BaseOffice},

<base-office ref="BaseOffice" :option="officeOption"></base-office>

4、配置

 _this.officeOption = {
      url: '192.168.**.**/file/demo.doc', // 获取服务器文件
      isEdit: true, // 是否可编辑
      fileType: doc, // 文件类型
      title: '测试文档', // 文件名称
      lang: 'zh-CN', // 国际化
      isPrint: true, // 是否打印
      model: 'edit', // 模式
      key: _this.BaseUuid(), // 唯一键
      user: { id: userCode, name: userName }, // 用户信息
      editUrl: '192.168.**.**/file/demoSave', // 编辑接口 保存回调
      token: sessionStorage.getItem('token'),
    }

5、生成唯一键

参考 https://www.cnblogs.com/psmart/p/16371116.html

6、官网

https://www.onlyoffice.com/zh/

7、api

https://api.onlyoffice.com/
https://api.onlyoffice.com/editors/basic

标签:Vue,option,docEditor,fileType,docType,文档,key,let,OnlyOffice
From: https://www.cnblogs.com/psmart/p/17282172.html

相关文章

  • Vue2依赖收集原理
    观察者模式定义了对象间一对多的依赖关系。即被观察者状态发生变动时,所有依赖于它的观察者都会得到通知并自动更新。解决了主体对象和观察者之间功能的耦合。Vue中基于Observer、Dep、Watcher三个类实现了观察者模式Observer类负责数据劫持,访问数据时,调用dep.depend()进行依......
  • vue3挂载全局方法
    在vue3中可以通过app.config.globalProperties来挂载全局方法。main.jsconstapp=createApp(App)//定义全局方法constmyGlobalMethod=()=>{console.log('Thisisaglobalmethod.')}//挂载全局方法app.config.globalProperties.$myGlobalMethod=myGloba......
  • 使用vue实现方法、计算属性、侦听器完成的简易计算器
    第一步:创建一个新的web项目(Jisuanqi),引入js文件第二步:搭好基本框架,为后面写代码打好基础(这里更改一个小错误:把class="app"改为id="app") 第三步:编写输入框效果图展示如下: 第四步:添加“计算”按钮第五步:编写实例化 结果显示: 最后完整代码展示1<!DOCTYPEh......
  • ChatGPT如何帮助编写代码文档和单元测试
    ChatGPT如何帮助编写代码文档和单元测试    有多少次你专注于编程而忘记了写函数、方法、类的非常简单的代码文档?我不是在问单元测试.直到我发现ChatGPT可以做到这一点:除了代码文档,它在编写单元测试方面也做得很好。此外,在最后,我可以要求他为其他想使用我的代码的贡献者生......
  • Vue3.0
    1.setup1.理解:Vue3.0中一个新的配置项,值为一个函数2.setup是所有CompositionAPI的表演的舞台3.组件用所用到的:数据方法等等,均要配置在setup中4.setup函数的两种返回值​1.若返回一个对象,则对象中的属性,方法在模板中均可以直接使用(重点关注!)​2.若返回......
  • .net6 制作elementplus离线文档
    1、新建net6项目设置配置信息<ProjectSdk="Microsoft.NET.Sdk.Web"><PropertyGroup><TargetFramework>net6.0</TargetFramework><Nullable>enable</Nullable><ImplicitUsings>enable</ImplicitUsings>......
  • 基于VUE3开发的CAD图可视化平台代码开源了
    前言唯杰地图VJMAP为CAD图或自定义地图格式WebGIS可视化显示开发提供的一站式解决方案,支持的格式如常用的AutoCAD的DWG格式文件、GeoJSON等常用GIS文件格式,它使用WebGL矢量图块和自定义样式呈现交互式地图,提供了全新的大数据可视化可视化功能。唯杰地图可视化平台旨在打造......
  • Vue三种方法实现简易计算器。
    计算器实现:方法1:使用v-model进行双向绑定。方法2:使用computed计算属性。方法3:使用watch侦听属性。1.定义自定义方法getResult,该方法用来计算表达式的值。``<head> <metacharset="utf-8"> <title></title><scriptsrc="js/vue.js"></script></head>​......
  • Vue三种方法实现简易计算器
    1<!DOCTYPEhtml>2<html>3<head>4<metacharset="utf-8">5<title></title>6<scriptsrc="js/vue.js"></script>7</head>8<body&g......
  • VUE分别使用普通方法、计算属性、监听器完成简易计算器
    计算器功能:1.加减乘除模可以随意切换使用表单元素<seclect>2.当输入框中数字改变时实时得出运算结果方法1:v-model绑定input框的值,绑定input键盘按下和鼠标点击时触发自定义方法getResult,该方法用来计算表达式的值。方法2:使用computed计算属性方法3:使用watch侦听属性3.可以使......