You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

146 lines
4.6KB

  1. /**
  2. * 在这个js中,集中处理来自OA的传入参数
  3. *
  4. */
  5. /**
  6. * web页面调用WPS的方法入口
  7. * * info参数结构
  8. * info:[
  9. * {
  10. * '方法名':'方法参数',需要执行的方法
  11. * },
  12. * ...
  13. * ]
  14. * @param {*} info
  15. */
  16. let testFuncs=null;
  17. function dispatcher(info) {
  18. var funcs = info.funcs;
  19. wps.WpsApplication().Options.UseLocalUserInfo=true//修订时,不使用登录名
  20. //解析参数
  21. /**
  22. * 分两种情况解析:
  23. * 1、业务系统依赖客户端返回:做同步处理,直接在for循环中返回
  24. */
  25. for (var index = 0; index < funcs.length; index++) {
  26. var func = funcs[index];
  27. for (var key in func) {
  28. if (key === "GetDocStatus") {
  29. return GetDocStatus(func[key])
  30. } else if (key === "ExitWPS") {
  31. ExitWPS(func[key])
  32. }
  33. }
  34. }
  35. /**
  36. * 2、业务系统不依赖客户端返回:
  37. * 做异步处理,先返回接收状态,再在setTimeout中做打开文档的一系列业务逻辑
  38. */
  39. setTimeout(function(){
  40. for (var index = 0; index < funcs.length; index++) {
  41. testFuncs=funcs;
  42. var func = funcs[index];
  43. for (var key in func) {
  44. func[key].isOA=true;
  45. if (key === "OpenDoc") { // OpenDoc 属于普通的打开文档的操作方式,文档落地操作
  46. OpenDoc(func[key]); //进入打开文档处理函数
  47. } else if (key === "OnlineEditDoc") { //在线方式打开文档,属于文档不落地的方式打开
  48. OnlineEditDoc(func[key]);
  49. } else if (key === "NewDoc") {
  50. OpenDoc(func[key]);
  51. } else if (key === "UseTemplate") {
  52. OpenDoc(func[key]);
  53. } else if (key === "InsertRedHead") {
  54. InsertRedHead(func[key]);
  55. } else if (key === "taskPaneBookMark"){
  56. taskPaneBookMark(func[key])
  57. } else if (key === "NewOfficialDocument"){
  58. return OpenDoc(func[key])
  59. }
  60. }
  61. }
  62. },100)
  63. return {message:"ok", app:wps.WpsApplication().Name}
  64. }
  65. /**
  66. * 获取活动文档的状态
  67. */
  68. function GetDocStatus() {
  69. let l_doc = wps.WpsApplication().ActiveDocument
  70. if (l_doc && pCheckIfOADoc()) {//此方法还可根据需要进行扩展
  71. return{
  72. message: "GetDocStatus",
  73. docstatus:{
  74. words: l_doc.Words.Count,
  75. saved: l_doc.Saved,
  76. pages: l_doc.ActiveWindow.Panes.Item(1).Pages.Count
  77. }
  78. }
  79. }
  80. }
  81. /**
  82. * 关闭WPS活动文档并退出WPS进程
  83. */
  84. function ExitWPS() {
  85. //为了接下来的用户确认操作,先将WPS界面激活显示在最前
  86. wps.WpsApplication().Activate();
  87. let l_doc = wps.WpsApplication().ActiveDocument
  88. if (l_doc && pCheckIfOADoc()) {//此方法还可根据需要进行扩展
  89. l_doc.Close();
  90. }
  91. if(wps.confirm("要关闭WPS软件,请确认文档都已保存。\n点击确定后关闭WPS,点击取消继续编辑。")){
  92. wps.WpsApplication().Quit();
  93. }
  94. }
  95. /**
  96. *
  97. * @param {*} params OA端传入的参数
  98. */
  99. function OnlineEditDoc(OaParams) {
  100. if (OaParams.fileName == "") {
  101. NewFile(OaParams);
  102. } else {
  103. //OA传来下载文件的URL地址,调用openFile 方法打开
  104. OpenOnLineFile(OaParams);
  105. }
  106. }
  107. ///打开来自OA端传递来的文档
  108. function OpenDoc(OaParams) {
  109. if (OaParams.fileName == "") {
  110. NewFile(OaParams);
  111. } else {
  112. //OA传来下载文件的URL地址,调用openFile 方法打开
  113. OpenFile(OaParams);
  114. }
  115. }
  116. function taskPaneBookMark(OaParams){
  117. let filePath = OaParams.fileName
  118. if (filePath == "")
  119. return
  120. OpenFile(OaParams);
  121. //创建taskpane,只创建一次
  122. let id = wps.PluginStorage.getItem(constStrEnum.taskpaneid)
  123. if (id){
  124. let tp = wps.GetTaskPane(id)
  125. tp.Width = 300
  126. tp.Visible = true
  127. }
  128. else{
  129. let url = getHtmlURL("taskpane.html");
  130. let tp = wps.CreateTaskPane(url, "书签操作")
  131. if (tp){
  132. tp.DockPosition = WPS_Enum.msoCTPDockPositionRight //这里可以设置taskapne是在左边还是右边
  133. tp.Width = 300
  134. tp.Visible = true
  135. wps.PluginStorage.setItem(constStrEnum.taskpaneid, tp.ID)
  136. }
  137. }
  138. }