/** * 在这个js中,集中处理来自OA的传入参数 * */ /** * web页面调用WPS的方法入口 * * info参数结构 * info:[ * { * '方法名':'方法参数',需要执行的方法 * }, * ... * ] * @param {*} info */ let testFuncs=null; function dispatcher(info) { var funcs = info.funcs; wps.WpsApplication().Options.UseLocalUserInfo=true//修订时,不使用登录名 //解析参数 /** * 分两种情况解析: * 1、业务系统依赖客户端返回:做同步处理,直接在for循环中返回 */ for (var index = 0; index < funcs.length; index++) { var func = funcs[index]; for (var key in func) { if (key === "GetDocStatus") { return GetDocStatus(func[key]) } else if (key === "ExitWPS") { ExitWPS(func[key]) } } } /** * 2、业务系统不依赖客户端返回: * 做异步处理,先返回接收状态,再在setTimeout中做打开文档的一系列业务逻辑 */ setTimeout(function(){ for (var index = 0; index < funcs.length; index++) { testFuncs=funcs; var func = funcs[index]; for (var key in func) { func[key].isOA=true; if (key === "OpenDoc") { // OpenDoc 属于普通的打开文档的操作方式,文档落地操作 OpenDoc(func[key]); //进入打开文档处理函数 } else if (key === "OnlineEditDoc") { //在线方式打开文档,属于文档不落地的方式打开 OnlineEditDoc(func[key]); } else if (key === "NewDoc") { OpenDoc(func[key]); } else if (key === "UseTemplate") { OpenDoc(func[key]); } else if (key === "InsertRedHead") { InsertRedHead(func[key]); } else if (key === "taskPaneBookMark"){ taskPaneBookMark(func[key]) } else if (key === "NewOfficialDocument"){ return OpenDoc(func[key]) } } } },100) return {message:"ok", app:wps.WpsApplication().Name} } /** * 获取活动文档的状态 */ function GetDocStatus() { let l_doc = wps.WpsApplication().ActiveDocument if (l_doc && pCheckIfOADoc()) {//此方法还可根据需要进行扩展 return{ message: "GetDocStatus", docstatus:{ words: l_doc.Words.Count, saved: l_doc.Saved, pages: l_doc.ActiveWindow.Panes.Item(1).Pages.Count } } } } /** * 关闭WPS活动文档并退出WPS进程 */ function ExitWPS() { //为了接下来的用户确认操作,先将WPS界面激活显示在最前 wps.WpsApplication().Activate(); let l_doc = wps.WpsApplication().ActiveDocument if (l_doc && pCheckIfOADoc()) {//此方法还可根据需要进行扩展 l_doc.Close(); } if(wps.confirm("要关闭WPS软件,请确认文档都已保存。\n点击确定后关闭WPS,点击取消继续编辑。")){ wps.WpsApplication().Quit(); } } /** * * @param {*} params OA端传入的参数 */ function OnlineEditDoc(OaParams) { if (OaParams.fileName == "") { NewFile(OaParams); } else { //OA传来下载文件的URL地址,调用openFile 方法打开 OpenOnLineFile(OaParams); } } ///打开来自OA端传递来的文档 function OpenDoc(OaParams) { if (OaParams.fileName == "") { NewFile(OaParams); } else { //OA传来下载文件的URL地址,调用openFile 方法打开 OpenFile(OaParams); } } function taskPaneBookMark(OaParams){ let filePath = OaParams.fileName if (filePath == "") return OpenFile(OaParams); //创建taskpane,只创建一次 let id = wps.PluginStorage.getItem(constStrEnum.taskpaneid) if (id){ let tp = wps.GetTaskPane(id) tp.Width = 300 tp.Visible = true } else{ let url = getHtmlURL("taskpane.html"); let tp = wps.CreateTaskPane(url, "书签操作") if (tp){ tp.DockPosition = WPS_Enum.msoCTPDockPositionRight //这里可以设置taskapne是在左边还是右边 tp.Width = 300 tp.Visible = true wps.PluginStorage.setItem(constStrEnum.taskpaneid, tp.ID) } } }