o2oa api: x-游戏厅捕鱼达人

source

mwf.xdesktop.requireapp("process.xform", "$module", null, false);
/** @class wpsoffice wps组件。
 * @o2cn wpsoffice
 * @example
 * //可以在脚本中获取该组件
 * //方法1:
 * var wpsoffice = this.form.get("fieldid"); //获取组件
 * //方法2
 * var wpsoffice = this.target; //在组件本身的脚本中获取
 * @extends mwf.xapplication.process.xform.$module
 * @o2category formcomponents
 * @o2range {process|cms|portal}
 * @hideconstructor
 */
mwf.xapplication.process.xform.wpsoffice = mwf.appwpsoffice =  new class(
    /** @lends mwf.xapplication.process.xform.wpsoffice# */
    {
        extends: mwf.app$module,
        isactive: false,
        options:{
            "version": "wpsweboffice",
            /**
             * 文档打开前事件。
             * @since v8.0
             * @event mwf.xapplication.process.xform.wpsoffice#beforeopen
             */
            /**
             * 文档打开后事件。
             * @since v8.0
             * @event mwf.xapplication.process.xform.wpsoffice#afteropen
             */
            /**
             * 保存后事件。
             * @since v8.0
             * @event mwf.xapplication.process.xform.wpsoffice#aftersave
             */
            "moduleevents": ["beforeopen",
                "afteropen",
                "aftersave"
            ]
        },
        initialize: function(node, json, form, options){
            this.node = $(node);
            this.node.store("module", this);
            this.json = json;
            this.form = form;
            this.documentid = "";
            this.mode = "write";
            this.officetype = {
                "docx" : "writer",
                "doc" : "writer",
                "xlsx" : "spreadsheet",
                "xls" : "spreadsheet",
                "pptx" : "presentation",
                "ppt" : "presentation",
                "pdf" : "pdf",
                "ofd" : "pdf"
            };
            this.apptoken = "x_processplatform_assemble_surface";
            this.version = this.options.version;
        },
        _loaduserinterface: function(){
            this.node.empty();
            this.node.setstyles({
                "min-height": "700px"
            });
        },
        _afterloaded: function(){
            if(!layout.serviceaddresslist["x_wpsfile_assemble_control"]){
                this.node.set("html","

please install wps application

"); return false; } if(this.mode !== "read" && this.json.allowupload){ this.createupload(); } this.action = o2.actions.load("x_wpsfile_assemble_control"); if (!this.json.isnotloadnow){ this.data = this.getdata(); if(this.data.documentid === ""){ if (this.json.officetype === "other" && this.json.templatetype === "script"){ this.json.template = this.form.macro.exec(this.json.templetescript.code, this); } this[this.json.officetype === "other"&&this.json.template !== ""? "createdocumentbytemplate":"createdocument"](function (){ this.loaddocument(); }.bind(this)); }else { this.documentid = this.data.documentid; this.loaddocument(); } } }, createupload : function (){ this.uploadnode = new element("div",{"style":"margin:10px;"}).inject(this.node); var uploadbtn = new element("button",{"text":mwf.xapplication.process.xform.lp.ofdview.upload,"style":"margin-left: 15px; color: rgb(255, 255, 255); cursor: pointer; height: 26px; line-height: 26px; padding: 0px 10px; min-width: 40px; background-color: rgb(74, 144, 226); border: 1px solid rgb(82, 139, 204); border-radius: 15px;"}).inject(this.uploadnode); uploadbtn.addevent("click",function (){ o2.require("o2.widget.upload", null, false); var upload = new o2.widget.upload(this.content, { "action": o2.actions.get(this.apptoken).action, "method": "uploadattachment", "accept" : ".docx,.xlsx,.pptx,.pdf,.ofd", "parameter": { "id" : this.form.businessdata.work.id }, "data":{ }, "oncompleted": function(data){ o2.actions.load(this.apptoken).attachmentaction.delete(this.documentid,function( json ){ }.bind(this)); this.documentid = data.id; this.reload(); }.bind(this) }); upload.load(); }.bind(this)); }, reload : function (){ this.setdata(); this.node.empty(); this.createupload(); this.loaddocument(); }, createdocumentbytemplate : function (callback){ this.action.customaction.getinfo(this.json.template).then(function(json) { var data = { "filename": mwf.xapplication.process.xform.lp.onlyoffice.filetext "." json.data.extension, "filetype": json.data.extension, "apptoken" : this.apptoken, "workid" : this.form.businessdata.work.id, "site" : "filetext", "tempid": this.json.template }; this.action.customaction.createforo2(data, function( json ){ this.documentid = json.data.fileid; this.setdata(); if (callback) callback(); }.bind(this),null, false ); }.bind(this)) }, createdocument : function (callback){ var data = { "filename" : mwf.xapplication.process.xform.lp.onlyoffice.filetext "." this.json.officetype, "apptoken" : this.apptoken, "workid" : this.form.businessdata.work.id, "site" : "filetext" }; this.action.customaction.createforo2(data, function( json ){ this.documentid = json.data.fileid; this.setdata(); if (callback) callback(); }.bind(this),null, false ); }, loaddocument: function () { o2.actions.load(this.apptoken).attachmentaction.getonlineinfo(this.documentid, function( json ){ this.documentdata = json.data; this.filename = this.documentdata.name; this.extension = this.documentdata.extension; this.geteditor(function () { this.loadapi(function (){ this.loadeditor(); }.bind(this)); }.bind(this)); }.bind(this),null,false); }, loadapi : function (callback){ if(this.version === "wpsweboffice"){ o2.load(["../x_component_wpsofficeeditor/web-office-sdk-solution-v2.0.2.umd.min.js"], {"sequence": true}, function () { if (callback) callback(); }.bind(this)); }else { o2.load(["../x_component_wpsofficeeditor/web-office-sdk-v1.1.19.umd.js"], {"sequence": true}, function () { if (callback) callback(); }.bind(this)); } }, geteditor: function (callback) { if (this.isreadonly()){ this.mode = "read"; }else{ if (this.json.readscript && this.json.readscript.code){ var flag = this.form.macro.exec(this.json.readscript.code, this); if (flag){ this.mode = "read"; } } } if(this.action.configaction.getbaseconfig){ this.action.configaction.getbaseconfig(function( json ){ this.appid = json.data.appid; this.version = json.data.version; if (callback) callback(); }.bind(this),null,false); }else { this.action.configaction.getappid(function( json ){ this.appid = json.data.value; if (callback) callback(); }.bind(this),null,false); } }, loadeditor : function (){ this.fireevent("beforeopen"); if(this.wpsoffice) this.wpsoffice.destroy(); this.officenode = new element("div#_" this.documentid,{"style":"height:100%;overflow:hidden;min-height:700px"}).inject(this.node); var config = { mount: this.officenode, mode : this.json.showmode, cooperuserattribute: { iscooperusersavatarvisible: this.json.iscooperusersavatarvisible //是否显示协作用户头像 }, // 通用选项,所有类型文档适用 commonoptions: { isshowtoparea: this.json.isshowtoparea, // 隐藏顶部区域(头部和工具栏) isshowheader: this.json.isshowheader, // 隐藏头部区域 isbrowserviewfullscreen : this.json.isbrowserviewfullscreen,//是否在浏览器区域全屏 isiframeviewfullscreen : this.json.isiframeviewfullscreen//是否在iframe区域内全屏 }, wordoptions : { isshowdocmap : this.json.isshowdocmap,//是否开启目录功能,默认开启 isbestscale : this.json.isbestscale,//打开文档时,默认以最佳比例显示(适用于pc) isshowbottomstatusbar : this.json.isshowbottomstatusbar,//pc-是否展示底部状态栏 "mobile.isopenintoedit" : this.json.isopenintoedit//mobile-要有编辑权限,移动端打开时是否进入编辑 }, commandbars: [ { cmbid: "headerleft", attributes: { visible: this.json.headerleft, enable: this.json.headerleft } }, { cmbid: "headerright", attributes: { visible: this.json.headerright, enable: this.json.headerright } }, { cmbid: "floatquickhelp", attributes: { visible: this.json.floatquickhelp, enable: this.json.floatquickhelp } }, { cmbid: "historyversion", attributes: { visible: this.json.historyversion, enable: this.json.historyversion } }, { cmbid: "historyrecord", attributes: { visible: this.json.historyrecord, enable: this.json.historyrecord } }, { cmbid: "historyversiondivider", attributes: { visible: this.json.historyversiondivider, enable: this.json.historyversiondivider } }, { cmbid: "logo", attributes: { visible: this.json.logo, enable: this.json.logo } }, { cmbid: "cooperation", attributes: { visible: this.json.cooperation, enable: this.json.cooperation } }, { cmbid: "more", attributes: { visible: this.json.more, enable: this.json.more } }, { cmbid: "sendbutton", attributes: { visible: this.json.sendbutton, enable: this.json.sendbutton } }, { cmbid: "cooperhistorymenuitem", attributes: { visible: this.json.cooperhistorymenuitem, enable: this.json.cooperhistorymenuitem } }, { cmbid: "tabprintpreview", attributes: { visible: this.json.tabprintpreview, enable: this.json.tabprintpreview } }, { cmbid: "menuprintpreview", attributes: { visible: this.json.menuprintpreview, enable: this.json.menuprintpreview } }, { cmbid: "reviewtrackchanges", attributes: { visible: this.json.reviewtrackchanges, enable: this.json.reviewtrackchanges } }, { cmbid: "trackchanges", attributes: { visible: this.json.trackchanges, enable: this.json.trackchanges } }, { cmbid: "contextmenuconvene", attributes: { visible: this.json.contextmenuconvene, enable: this.json.contextmenuconvene } }, { cmbid: "writerhovertoolbars", attributes: { visible: this.json.writerhovertoolbars, enable: this.json.writerhovertoolbars } }, { cmbid: "readsetting", attributes: { visible: this.json.readsetting, enable: this.json.readsetting } } ] }; if(this.version === "wpsweboffice"){ config.officetype = webofficesdk.officetype[this.officetype[this.extension.tolowercase()]]; config.appid = this.appid; config.fileid = this.documentid.replace(/-/g, "_"); config.token = layout.session.token; config.customargs = { "apptoken" : this.apptoken, "mode" : this.mode }; this.wpsoffice = webofficesdk.init(config); }else { this.action.customaction.getwpsfile{ this.wpsurl = json.data.wpsurl; config.url = this.wpsurl; }.bind(this),null,false); // console.log(this.wpsurl) this.wpsoffice = webofficesdk.config(config); this.wpsoffice.settoken({ token: layout.session.token, timeout: 100 * 60 * 1000 // token超时时间, 可配合refreshtoken配置函数使用,当超时前将调用refreshtoken }); } this.wpsoffice.on('fileopen', function(result) { this.fireevent("afteropen"); }.bind(this)); this.wpsoffice.on('filestatus', function(result) { if(result.status === 7){ this.fireevent("aftersave"); } }.bind(this)); this.wpsoffice.on('fullscreenchange', function(result) { console.log(json.stringify(result)) }); this.wpsoffice.on('previewlimit', function(result) { console.log(json.stringify(result)) }); this.wpsoffice.on('tabswitch', function(result) { console.log(json.stringify(result)) }); this.wpsoffice.on('error', function(result) { console.log(json.stringify(result)) }); //是否显示评论 if(this.json.isshowcomment){ this.showcomments(); }else { this.hidecomments(); } }, hide: function(){ this.node.hide(); }, show: function(){ this.node.show(); }, isempty : function(){ var data = this.getdata(); if(data.documentid === ""){ return true; }else { return false; } }, getdata: function(){ var data = { "documentid" : "" }; if(this.form.businessdata.data[this.json.id]){ data.documentid = this.form.businessdata.data[this.json.id].documentid; } return data; }, setdata: function() { var data = { "documentid": this.documentid, "apptoken": this.apptoken } this.data = data; this._setbusinessdata(data); var jsondata = {} jsondata[this.json.id] = data; o2.actions.load(this.apptoken).dataaction.updatewithjob(this.form.businessdata.work.job, jsondata, function (json) { data = json.data; }) }, /** * @summary 保存wps * @example * this.form.get("fieldid").save(callback) */ save: function(callback){ var promise = this.wpsoffice.save(); promise.then(function(){ console.log("save success"); if(callback) callback(); }); }, /** * @summary 发送全局广播 * @example * this.form.get("fieldid").sendbroadcast("测试") */ sendbroadcast : async function (text){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; const public = await app.public; const result = await public.sendbroadcast({ data: { message: text } }); }, /** * @summary 获取word页面总数, * @return 返回是个promise对象 * @example * this.form.get("fieldid").gettotalpage() */ gettotalpage : async function (){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; const totalpages = await app.activedocument.range.information(app.enum.wdinformation.wdnumberofpagesindocument); console.log(totalpages) return totalpages; }, /** * @summary 获取当前页 * @example * this.form.get("fieldid").getcurrentpage() */ getcurrentpage: async function (){ // 获取当前页数 await this.wpsoffice.ready(); const app = this.wpsoffice.application; const currentpage = await app.activedocument.activewindow.selection.information( app.enum.wdinformation.wdactiveendpagenumber ) console.log(currentpage) return currentpage; }, /** * @summary 跳转到指定页 * @example * this.form.get("fieldid").gotopage(page) */ gotopage : async function (page){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; await app.activedocument.selection.goto({ what: app.enum.wdgotoitem.wdgotopage, which: app.enum.wdgotodirection.wdgotoabsolute, count: page }); }, /** * @summary 获取所有书签 * @return 返回是个promise对象 * @example * this.form.get("fieldid").getallbookmark() */ getallbookmark : async function (callback){ this.wpsoffice.ready(); const app = this.wpsoffice.application; const bookmarks = await app.activedocument.bookmarks.json(); return bookmarks; }, /** * @summary 获取书签值 * @return 返回是个promise对象 * @example * this.form.get("fieldid").getbookmarktext() */ getbookmarktext : async function (name) { this.wpsoffice.ready(); const app = this.wpsoffice.application; const text = await app.activedocument.getbookmarktext(name); return text; }, /** * @summary 跳转到书签 * @example * this.form.get("fieldid").gotobookmark() */ gotobookmark : async function (name){ this.wpsoffice.ready(); const app = this.wpsoffice.application; await app.activedocument.selection.goto({ what: app.enum.wdgotoitem.wdgotobookmark, which: app.enum.wdgotodirection.wdgotoabsolute, name: name }); }, /** * @summary 给书签赋值 * @return 返回是个promise对象 * @example * this.form.get("fieldid").setbookmarktext(name,value) */ setbookmarktext : async function (name,value){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; // 书签对象 const bookmarks = await app.activedocument.bookmarks; // 替换书签内容 const isreplacesuccess = await bookmarks.replacebookmark([ { name: name, type: 'text', value: value } ]) return isreplacesuccess; }, /** * @summary 盖章 * @return 返回是个promise对象 * @example * this.form.get("fieldid").setseal(bookmark,img,left,top,width,height) */ setseal : async function (bookmark,img,left,top,width,height){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; //获取当前选区 const selection = await app.activedocument.activewindow.selection; // 跳转到指定的书签 await app.activedocument.activewindow.selection.goto( app.enum.wdgotoitem.wdgotobookmark, // 类型:bookmark app.enum.wdgotodirection.wdgotoabsolute, // 定位 1, // 数量 bookmark, // 书签名 ); // 获取图形对象 const shapes = await app.activedocument.shapes; // 光标插入非嵌入式图片 const shape = await shapes.addpicture({ filename: img, // 图片地址 linktofile: true, savewithdocument: true, left: left, // 图片距离左边位置 top: top, // 图片距离顶部位置 width: width, // 图片宽度 height: height, // 图片高度 }); // 设置文字环绕模式为【衬于文字下方】 shape.zorder(app.enum.zordercmd.sendbehindtext); }, /** * @summary 查找替换 * @return 返回是个promise对象 * @example * this.form.get("fieldid").replacetext(key,value) */ replacetext : async function (key,value,options){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; const isreplacesuccess = app.activedocument.replacetext([{key: key, value: value}]) return isreplacesuccess; }, /** * @summary 开启修订模式 * @return 返回是个promise对象 * @example * this.form.get("fieldid").startrevisions() */ startrevisions : function (){ this.wpsoffice.ready().then(function(){ const app = this.wpsoffice.application; // 将当前文档的编辑状态切换成修订模式 app.activedocument.trackrevisions = true; }.bind(this)); }, /** * @summary 关闭修订模式 * @return 返回是个promise对象 * @example * this.form.get("fieldid").stoprevisions() */ stoprevisions : function (){ //关闭修订模式 this.wpsoffice.ready().then(function(){ const app = this.wpsoffice.application; // 将当前文档的编辑状态切换成修订模式 app.activedocument.trackrevisions = false; }.bind(this)); }, /** * @summary 接受所有修订 * @example * this.form.get("fieldid").acceptallrevisions() */ acceptallrevisions : async function (){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; // 获取修订对象 const revisions = await app.activedocument.revisions; // 接受对指定文档的所有修订 await revisions.acceptall(); }, /** * @summary 拒绝所有修订 * @example * this.form.get("fieldid").rejectallrevisions() */ rejectallrevisions : async function (){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; // 获取修订对象 const revisions = await app.activedocument.revisions; // 拒绝对指定文档的所有修订 await revisions.rejectall(); }, /** * @summary 显示痕迹 * @example * this.form.get("fieldid").showrevisions() */ showrevisions : async function (){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; // 获取节对象 const view = await app.activedocument.activewindow.view; view.revisionsview = 0; // 设置修订状态为 显示标记的最终状态 view.showrevisionsandcomments = true; }, /** * @summary 隐藏痕迹 * @example * this.form.get("fieldid").hiderevisions() */ hiderevisions : async function (){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; // 获取节对象 const view = await app.activedocument.activewindow.view; view.revisionsview = 0; // 设置修订状态为 显示标记的最终状态 view.showrevisionsandcomments = false; }, /** * @summary 打印 * @example * this.form.get("fieldid").print() */ print : function (){ this.wpsoffice.ready().then(function(){ const app = this.wpsoffice.application; // 页面定制对象:更多菜单 app.commandbars('tabprintpreview').then(function(printmenu){ printmenu.execute(); }); }.bind(this)); }, /** * @summary 导出pdf * @example * this.form.get("fieldid").exportpdf() */ exportpdf : async function (){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; var pdfurl; switch (this.json.officetype){ case "docx": pdfurl = await app.activedocument.exportasfixedformat(); break; case "xlsx": pdfurl = await app.activeworkbook.exportasfixedformat() break; case "pptx": pdfurl = await app.activepresentation.exportasfixedformat() } window.open(pdfurl.url); }, /** * @summary 获取文档权限信息 * @example * this.form.get("fieldid").getoperatorsinfo() */ getoperatorsinfo : async function (){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; var operatorsinfo ; switch (this.json.officetype){ case "docx": operatorsinfo = await app.activedocument.getoperatorsinfo(); break; case "xlsx": operatorsinfo = await app.activeworkbook.getoperatorsinfo(); break; case "pptx": operatorsinfo = await app.activepresentation.getoperatorsinfo(); } return operatorsinfo; }, /** * @summary 获取内容控件个数 * @return 返回是个promise对象 * @example * this.form.get("fieldid").getcontentcontrolscount() */ getcontentcontrolscount : async function (){ //获取内容控件 await this.wpsoffice.ready(); const app = this.wpsoffice.application; // 内容控件对象 const contentcontrols = await app.activedocument.contentcontrols; // 内容控件数量 const count = await contentcontrols.count; return count; }, /** * @summary 获取内容控件文本 * @example * this.form.get("fieldid").getcontentcontroltext() */ getcontentcontroltext : async function (pos){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; const contentcontrols = await app.activedocument.contentcontrols; const contentcontrol = await contentcontrols.item(pos); const range = await contentcontrol.range; const text = range.text; return text // range.text = 'weboffice' }, /** * @summary 设置内容控件文本 * @example * this.form.get("fieldid").setcontentcontroltext() */ setcontentcontroltext : async function (pos,text){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; const contentcontrols = await app.activedocument.contentcontrols; const contentcontrol = await contentcontrols.item(pos); const range = await contentcontrol.range; range.text = text; }, /** * @summary 获取文档缩放 * @example * this.form.get("fieldid").getzoom() */ getzoom : async function (){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; var zoom; switch (this.json.officetype){ case "docx": zoom = await app.activedocument.activewindow.view.zoom.percentage break; case "xlsx": zoom = await app.activeworkbook.activesheetview.zoom break; case "pptx": zoom = await app.activepresentation.view.zoom } return zoom; }, /** * @summary 设置文档缩放 * @example * this.form.get("fieldid").setzoom() */ setzoom : async function (zoom){ //缩放属性值在50%到 300%之间。 await this.wpsoffice.ready(); const app = this.wpsoffice.application; switch (this.json.officetype){ case "docx": app.activedocument.activewindow.view.zoom.percentage = zoom; break; case "xlsx": app.activeworkbook.activesheetview.zoom = zoom; break; case "pptx": app.activepresentation.view.zoom = zoom; } }, /** * @summary 是否有评论 * @example * this.form.get("fieldid").hascomments() */ hascomments : async function (){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; var hascomments; switch (this.json.officetype){ case "docx": hascomments = await app.activedocument.hascomments(); break; case "xlsx": hascomments = await app.activeworkbook.hascomments(); break; case "pptx": hascomments = await app.activepresentation.hascomments(); } return hascomments; }, /** * @summary 显示评论 * @example * this.form.get("fieldid").showcomments() */ showcomments : async function (){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; app.activedocument.activewindow.view.showcomments = true; }, /** * @summary 隐藏评论 * @example * this.form.get("fieldid").hidecomments() */ hidecomments : async function (){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; app.activedocument.activewindow.view.showcomments = false; }, /** * @summary 获取所有评论 * @example * this.form.get("fieldid").hidecomments() */ getcomments : async function (){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; const operatorsinfo = await app.activedocument.getcomments({ offset: 0, limit: 2000 }); return operatorsinfo; }, /** * @summary 页面模式 * @example * this.form.get("fieldid").showpagemode() */ showpagemode : async function (){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; app.activedocument.switchtypomode(false); }, /** * @summary 连页模式 * @example * this.form.get("fieldid").showpagemode() */ showunionpagemode : async function (){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; app.activedocument.switchtypomode(true); }, /** * @summary 显示连页模式下的文件名 * @example * this.form.get("fieldid").showfilename() */ showfilename : async function (){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; await app.activedocument.switchtypomode(true); await app.activedocument.switchfilename(true); }, /** * @summary 隐藏连页模式下的文件名 * @example * this.form.get("fieldid").hidefilename() */ hidefilename : async function (){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; await app.activedocument.switchtypomode(true); await app.activedocument.switchfilename(false); }, /** * @summary 显示导航目录 * @example * this.form.get("fieldid").showdocumentmap() */ showdocumentmap : async function (callback){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; await app.activedocument.switchtypomode(true); app.activedocument.activewindow.documentmap = true; }, /** * @summary 隐藏导航目录 * @example * this.form.get("fieldid").hidedocumentmap() */ hidedocumentmap : async function (callback){ await this.wpsoffice.ready(); const app = this.wpsoffice.application; await app.activedocument.switchtypomode(true); app.activedocument.activewindow.documentmap = false; }, });
网站地图