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.

func_oastarter.js 4.7KB

7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  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. console.log(OaParams);
  110. if (OaParams.fileName == "") {
  111. console.log('zouzhe?');
  112. NewFile(OaParams);
  113. } else {
  114. console.log('zouzhe111?');
  115. //OA传来下载文件的URL地址,调用openFile 方法打开
  116. OpenFile(OaParams);
  117. }
  118. }
  119. function taskPaneBookMark(OaParams){
  120. let filePath = OaParams.fileName
  121. if (filePath == "")
  122. return
  123. OpenFile(OaParams);
  124. //创建taskpane,只创建一次
  125. let id = wps.PluginStorage.getItem(constStrEnum.taskpaneid)
  126. if (id){
  127. let tp = wps.GetTaskPane(id)
  128. tp.Width = 300
  129. tp.Visible = true
  130. }
  131. else{
  132. let url = getHtmlURL("taskpane.html");
  133. let tp = wps.CreateTaskPane(url, "书签操作")
  134. if (tp){
  135. tp.DockPosition = WPS_Enum.msoCTPDockPositionRight //这里可以设置taskapne是在左边还是右边
  136. tp.Width = 300
  137. tp.Visible = true
  138. wps.PluginStorage.setItem(constStrEnum.taskpaneid, tp.ID)
  139. }
  140. }
  141. }