func_oastarter.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. /**
  2. * 在这个js中,集中处理来自OA的传入参数
  3. *
  4. */
  5. /**
  6. * web页面调用WPS的方法入口
  7. * * info参数结构
  8. * info:[
  9. * {
  10. * '方法名':'方法参数',需要执行的方法
  11. * },
  12. * ...
  13. * ]
  14. * @param {*} info
  15. */
  16. function dispatcher(info) {
  17. var funcs = info.funcs
  18. if (info.dotime && funcs.length)
  19. loginfo('接受到请求,请求时间' + GetCNTimeString(new Date(info.dotime)))
  20. // if (funcs.length > 0) wps.Application.Visible = true
  21. //执行web页面传递的方法
  22. setTimeout(function () {
  23. for (var index = 0; index < funcs.length; index++) {
  24. var func = funcs[index]
  25. for (var key in func) {
  26. var params = func[key]
  27. initAuthParams(params)
  28. if (!IsSilentMode()) wps.Application.Visible = true
  29. toggleBeforeOAfterLoading('处理中', true, true)
  30. loginfo('系统操作:' + key)
  31. switch (key) {
  32. case 'OpenDoc':
  33. case 'QingGao':
  34. case 'UpdateRegion':
  35. case 'PrintDocument':
  36. case 'DOCConvertToPDF':
  37. case 'DOCConvertToOFD':
  38. case 'SaveFileToLocal':
  39. OpenFile(params)
  40. break
  41. case 'TaoDa': {
  42. var tmp = params.fileName
  43. params.fileName = params.ModelUrl
  44. params.ModelUrl = tmp
  45. }
  46. case 'GaiZhang':
  47. let fileName = GetFileNameByParams(params)
  48. if (params.action == 'taoda' && !!params.oldDocName)
  49. fileName = params.oldDocName
  50. //下载红头文件盖章文件
  51. DownloadFile(params.ModelUrl, '模板', true)
  52. .then((filepath) => {
  53. wps.PluginStorage.setItem('ModelUrl', filepath)
  54. wps.PluginStorage.setItem(
  55. 'ContentFieldName',
  56. params.ContentFieldName
  57. )
  58. OpenFile(params)
  59. })
  60. .catch((code) => {
  61. OAWebNotice(fileName)
  62. ShowMessage(`下载文件[模板]失败!错误代码:H${code}`, 'error', 5)
  63. })
  64. break
  65. case 'ExitWPS':
  66. ExitWPS(params)
  67. break
  68. default:
  69. break
  70. }
  71. }
  72. }
  73. }, 100)
  74. //兼容处理心跳
  75. Heart && Heart.OASystemOnLine() //Date.now() + 10e3);
  76. return { message: 'ok', app: wps.WpsApplication().Name }
  77. }
  78. /**
  79. * 获取活动文档的状态
  80. */
  81. function GetDocStatus() {
  82. let l_doc = wps.WpsApplication().ActiveDocument
  83. if (l_doc && pCheckIfOADoc()) {
  84. //此方法还可根据需要进行扩展
  85. return {
  86. message: 'GetDocStatus',
  87. docstatus: {
  88. words: l_doc.Words.Count,
  89. saved: l_doc.Saved,
  90. pages: l_doc.ActiveWindow.Panes.Item(1).Pages.Count,
  91. },
  92. }
  93. }
  94. }
  95. /**
  96. * 关闭WPS活动文档并退出WPS进程
  97. */
  98. function ExitWPS() {
  99. let l_doc = wps.WpsApplication().ActiveDocument
  100. if (l_doc && pCheckIfOADoc()) {
  101. //此方法还可根据需要进行扩展
  102. l_doc.Close()
  103. }
  104. if (
  105. // TODO 为替换showConfirm 因为未使用此函数
  106. wps.confirm(
  107. '要关闭WPS软件,请确认文档都已保存。\n点击确定后关闭WPS,点击取消继续编辑。'
  108. )
  109. ) {
  110. wps.WpsApplication().Quit()
  111. }
  112. }