diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/only/controller/admin/only/onlyofController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/only/controller/admin/only/onlyofController.java index 5f6f4d8..20b6b64 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/only/controller/admin/only/onlyofController.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/only/controller/admin/only/onlyofController.java @@ -129,6 +129,26 @@ public class onlyofController { return new ResponseEntity("上传成功", HttpStatus.OK); } + /** + * 预览文件的接口 + */ + @GetMapping("/view") + @Operation(summary = "编辑文件") + public ModelAndView viewDocFile(@RequestParam String name, String userName, String userId ,String cDate ,String token) { + String cDate2 = ""; + cDate2 = cDate.isEmpty() ? cDate : cDate + "\\"; + String path = filePath+cDate2+name; + ModelAndView mav = new ModelAndView(); + Document document = documentService.getDocumentToken(documentService.buildDocument(path, name),token,cDate); + mav.addObject("document", document); + if (!documentService.canEdit(document)) { + return mav; + } + mav.addObject("documentEditParam", documentService.buildDocumentEditParamToken(userId, userName, name,token,cDate2)); + mav.setViewName("viewer"); + return mav; + } + /** * 编辑文件的接口 * @param name diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/static/js/viewer.js b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/static/js/viewer.js new file mode 100644 index 0000000..0712344 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/static/js/viewer.js @@ -0,0 +1,175 @@ +var Editor = function () { + var docEditor; + + var innerAlert = function (message) { + if (console && console.log) + console.log(message); + }; + + var onAppReady = function () { + innerAlert("文档编辑已就绪~"); + }; + + var onDocumentStateChange = function (event) { + var title = document.title.replace(/\*$/g, ""); + document.title = title + (event.data ? "*" : ""); + }; + + var onError = function (event) { + if (event) { + innerAlert(event.data); + } + }; + + var onOutdatedVersion = function (event) { + //TODO + location.reload(true); + }; + var onAppReady = function() { + console.log("ONLYOFFICE Document Editor is ready"); + }; + var onCollaborativeChanges = function () { + console.log("The document changed by collaborative user"); + }; + var onDocumentReady = function() { + console.log("Document is loaded"); + }; + var onDocumentStateChange = function (event) { + if (event.data) { + console.log("The document changed"); + // docEditor.downloadAs(); + } else { + console.log("Changes are collected on document editing service"); + // + } + }; + var onDownloadAs = function (event) { + console.log("ONLYOFFICE Document Editor create file: " + event.data); + window.top.postMessage(event.data); + createAndDownloadFile("test.docx",event.data) + }; + window.addEventListener('message',function(e){ + console.log(e.data) + if (e.data=="downloadAs") { + docEditor.downloadAs(); + } + },false) + + $("#insertImage").click(function(event) { + console.log("ONLYOFFICE Document Editor insertImage: "+ event.data); + docEditor.insertImage({ + "fileType": "png", + "url": "http://192.168.0.58:20056/attachment/20190728测试上传文件名修改/2020January/1580363537940306800_small.png" + }); + }) + + var onRequestInsertImage = function(event) { + console.log("ONLYOFFICE Document Editor insertImage" + event.data); + docEditor.insertImage({ + "fileType": "png", + "url": "http://192.168.0.58:20056/attachment/20190728测试上传文件名修改/2020January/1580363537940306800_small.png" + }); + }; + + var onError = function (event) { + console.log("ONLYOFFICE Document Editor reports an error: code " + event.data.errorCode + ", description " + event.data.errorDescription); + }; + var onOutdatedVersion = function () { + location.reload(true); + }; + var onRequestEditRights = function () { + console.log("ONLYOFFICE Document Editor requests editing rights"); + // document.location.reload(); + var he=location.href.replace("view","edit"); + location.href=he; + }; + + //历史版本保留1个月。比如Unix时间戳(Unix timestamp)expires=1524547423 + var onRequestHistory = function() { + }; + + var onRequestHistoryClose = function() { + document.location.reload(); + }; + var getUrlParam = function (name) { + //构造一个含有目标参数的正则表达式对象 + var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); + //匹配目标参数 + var r = window.location.search.substr(1).match(reg); + //返回参数值 + if (r != null) { + return decodeURI(r[2]); + } + return null; + }; + + var getDocumentConfig = function (document) { + if (document) { + return { + "document": document + }; + } + innerAlert("文档未指定!"); + return null; + }; + var onRequestHistoryData = function() {} + var сonnectEditor = function (document, documentEditParam) { + + var config = getDocumentConfig(document); + console.log(document) + console.log(documentEditParam) + config.width = "100%"; + config.height = "100%"; + config.events = { + "onAppReady": onAppReady, + "onDocumentStateChange": onDocumentStateChange, + "onError": onError, + "onOutdatedVersion": onOutdatedVersion + }; + //config.documentType = ""+document.fileType + config.editorConfig = { + "lang": "zh-CN", + "mode": "view", + "recent": [], + // 自定义一些配置 + "customization": { + "chat": true, // 禁用聊天菜单按钮 + "commentAuthorOnly": false, // 仅能编辑和删除其注释 + "comments": false, // 隐藏文档注释菜单按钮 + "compactHeader": false, // 隐藏附加操作按钮 + "compactToolbar": false, // 完整工具栏(true代表紧凑工具栏) + "feedback": { + "visible": true // 隐藏反馈按钮 + }, + "forcesave": false, // true 表示强制文件保存请求添加到回调处理程序 + "goback": false,/*{ + "blank": true, // 转到文档时,在新窗口打开网站(false表示当前窗口打开) + "text": "转到文档位置(可以考虑放文档打开源页面)", + // 文档打开失败时的跳转也是该地址 + "url": "http://www.lezhixing.com.cn" + },*/ + "help": false, // 隐藏帮助按钮 + "hideRightMenu": false, // 首次加载时隐藏右侧菜单(true 为显示) + "showReviewChanges": false, // 加载编辑器时自动显示/隐藏审阅更改面板(true显示 false隐藏) + "toolbarNoTabs": false, // 清楚地显示顶部工具栏选项卡(true 代表仅突出显示以查看选择了哪一个) + "zoom": 100 // 定义文档显示缩放百分比值 + }, + + + + + }; + $.extend(config.editorConfig, documentEditParam); + console.log(config) + + + docEditor = new DocsAPI.DocEditor("iframeEditor",config); + }; + + return { + init: function (document, documentEditParam) { + console.log("-----сonnectEditor-----") + сonnectEditor(document, documentEditParam); + } + } +}(); diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/static/js/viewer2.js b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/static/js/viewer2.js new file mode 100644 index 0000000..568a39e --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/static/js/viewer2.js @@ -0,0 +1,97 @@ +var Viewer = function() { + var docEditor; + + var innerAlert = function (message) { + if (console && console.log) + console.log(message); + }; + + var onAppReady = function () { + innerAlert("文档查看已就绪~"); + }; + + var onDocumentStateChange = function (event) { + var title = document.title.replace(/\*$/g, ""); + document.title = title + (event.data ? "*" : ""); + }; + + var onError = function (event) { + if (event) { + innerAlert(event.data); + } + }; + + var onOutdatedVersion = function (event) { + location.reload(true); + }; + + var getUrlParam = function (name) { + //构造一个含有目标参数的正则表达式对象 + var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); + //匹配目标参数 + var r = window.location.search.substr(1).match(reg); + //返回参数值 + if (r != null) { + return decodeURI(r[2]); + } + return null; + }; + + var getDocumentConfig = function (document) { + if (document) { + return { + "document": document + }; + } + innerAlert("文档未指定!"); + return null; + }; + + var сonnectEditor = function (document) { + var config = getDocumentConfig(document); + config.width = "100%"; + config.height = "100%"; + config.events = { + "onAppReady": onAppReady, + "onDocumentStateChange": onDocumentStateChange, + "onError": onError, + "onOutdatedVersion": onOutdatedVersion + }; + config.editorConfig = { + "lang": "zh-CN", + "mode": "view", + "recent": [], + // 自定义一些配置 + "customization": { + "chat": false, // 禁用聊天菜单按钮 + "commentAuthorOnly": true, // 仅能编辑和删除其注释 + "comments": false, // 隐藏文档注释菜单按钮 + "compactHeader": false, // 隐藏附加操作按钮 + "compactToolbar": false, // 完整工具栏(true代表紧凑工具栏) + "feedback": { + "visible": false // 隐藏反馈按钮 + }, + "forcesave": false, // true 表示强制文件保存请求添加到回调处理程序 + "goback": false,/*{ + "blank": true, // 转到文档时,在新窗口打开网站(false表示当前窗口打开) + "text": "转到文档位置(可以考虑放文档打开源页面)", + // 文档打开失败时的跳转也是该地址 + "url": "http://www.lezhixing.com.cn" + },*/ + "help": false, // 隐藏帮助按钮 + "hideRightMenu": false, // 首次加载时隐藏右侧菜单(true 为显示) + "showReviewChanges": false, // 加载编辑器时自动显示/隐藏审阅更改面板(true显示 false隐藏) + "toolbarNoTabs": false, // 清楚地显示顶部工具栏选项卡(true 代表仅突出显示以查看选择了哪一个) + "zoom": 100 // 定义文档显示缩放百分比值 + } + + }; + docEditor = new DocsAPI.DocEditor("iframeEditor", config); + }; + + return { + init : function(document) { + сonnectEditor(document); + } + } +}(); \ No newline at end of file diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/templates/viewer.html b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/templates/viewer.html new file mode 100644 index 0000000..0fdef84 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/templates/viewer.html @@ -0,0 +1,26 @@ + + + + + + + + + + +
+
+

Document Title

+
Document Edit Param
+
+ + + + + + + +