systemAddin.js
7.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
/*
* @Descripttion:
* @version:
* @Author: 魏永康
* @Date: 2021-04-20 16:18:53
* @LastEditors: sueRimn
* @LastEditTime: 2021-04-25 15:09:17
*/
import {GetDocParamsValue,UploadFile,OnUploadToServerSuccess,OnUploadToServerFail,OnShowDialog,InsertRedHeadDoc,DownloadFile} from "./common.js"
import {constStrEnum,EnumDocSaveFlag} from "./enum.js"
var wps = window.wps||window
// 初始化
function initWpsAddin() {
if(wps.FileSystem.Exists(wps.Env.GetTempPath())){
wps.FileSystem.Remove(wps.Env.GetTempPath());
wps.FileSystem.Mkdir(wps.Env.GetTempPath())
}
}
// 保存
function OnSaveToServer() {
// console.log('SaveToServer');
var doc = wps.WpsApplication().ActiveDocument;
if (!doc) {
alert("空文档不能保存!");
return;
}
var param = wps.PluginStorage.getItem(doc.DocID);
if(typeof param == "string") param = JSON.parse(param);
if(param == null || param.OADocLandMode === 0 ) {
wps.WpsApplication().CommandBars.ExecuteMso("SaveAll");
return;
}
let {tokenIdKey,nid,token,openUrl,writeUrl,fullName} = param;
if(tokenIdKey == null ||nid == null || token == null || openUrl == null || writeUrl == null || fullName == null){
alert("取参数失败,请确定此文档是OA文档,tokenIdKey,nid,token,openUrl,writeUrl,fullName 参数取值不可为空!")
}
// //非OA文档,不能上传到OA
// if (pCheckIfOADoc() == false) {
// alert("非系统打开的文档,不能直接上传到系统!");
// return;
// }
// //如果是OA打开的文档,并且设置了保护的文档,则不能再上传到OA服务器
// if (pISOADocReadOnly(doc)) {
// wps.alert("系统设置了保护的文档,不能再提交到系统后台。");
// return;
// }
/**
* 参数定义:OAAsist.UploadFile(name, path, url, field, "OnSuccess", "OnFail")
* 上传一个文件到远程服务器。
* name:为上传后的文件名称;
* path:是文件绝对路径;
* url:为上传地址;
* field:为请求中name的值;
* 最后两个参数为回调函数名称;
*/
var l_showConfirm = wps.PluginStorage.getItem(constStrEnum.Save2OAShowConfirm)
if (l_showConfirm) {
if (!wps.confirm("先保存文档,并开始上传到系统后台,请确认?")) {
return;
}
}
var l_FieldName = GetDocParamsValue(doc, constStrEnum.uploadFieldName); //上载到后台的业务方自定义的字段名称
if (l_FieldName == "") {
l_FieldName = wps.PluginStorage.getItem(constStrEnum.DefaultUploadFieldName); // 默认为‘file’
}
var l_UploadName = GetDocParamsValue(doc, constStrEnum.uploadFileName); //设置OA传入的文件名称参数
if (l_UploadName == "") {
l_UploadName = doc.Name; //默认文件名称就是当前文件编辑名称
}
var docPath = doc.FullName; // 文件所在路径
// if (pIsOnlineOADoc(doc) == false) {
//对于本地磁盘文件上传OA,先用Save方法保存后,再上传
//设置用户保存按钮标志,避免出现禁止OA文件保存的干扰信息
wps.PluginStorage.setItem(constStrEnum.OADocUserSave, EnumDocSaveFlag.OADocSave);
doc.Save(); //执行一次保存方法
//设置用户保存按钮标志
wps.PluginStorage.setItem(constStrEnum.OADocUserSave, EnumDocSaveFlag.NoneOADocSave);
//落地文档,调用UploadFile方法上传到OA后台
try {
//调用OA助手的上传方法
UploadFile(fullName, docPath, writeUrl, null,param, OnUploadToServerSuccess, OnUploadToServerFail);
} catch (err) {
alert("上传文件失败!请检查系统上传参数及网络环境!");
}
// } else {
// // 不落地的文档,调用 Document 对象的不落地上传方法
// wps.PluginStorage.setItem(constStrEnum.OADocUserSave, EnumDocSaveFlag.OADocSave);
// try {
// //调用不落地上传方法
// doc.SaveAsUrl(l_UploadName, l_uploadPath, l_FieldName, "OnUploadToServerSuccess", "OnUploadToServerFail");
// } catch (err) {
// alert("上传文件失败!请检查系统上传参数及网络环境,重新上传。");
// }
// wps.PluginStorage.setItem(constStrEnum.OADocUserSave, EnumDocSaveFlag.NoneOADocSave);
// }
// //获取OA传入的 转其他格式上传属性
// var l_suffix = GetDocParamsValue(doc, constStrEnum.suffix);
// if (l_suffix == "") {
// console.log("上传需转换的文件后缀名错误,无法进行转换上传!");
// return;
// }
//判断是否同时上传PDF等格式到OA后台
var l_uploadWithAppendPath = GetDocParamsValue(doc, constStrEnum.uploadWithAppendPath); //标识是否同时上传suffix格式的文档
if (l_uploadWithAppendPath == "1") {
//调用转pdf格式函数,强制关闭转换修订痕迹,不弹出用户确认的对话框
// pDoChangeToOtherDocFormat(doc, l_suffix, false, false);
}
return;
}
export function OnInsertRedHeaderClick() {
var l_Doc = wps.WpsApplication().ActiveDocument;
if (!l_Doc) {
return;
}
var l_insertFileUrl = GetDocParamsValue(l_Doc, constStrEnum.insertFileUrl); //插入文件的位置
var l_BkFile = GetDocParamsValue(l_Doc, constStrEnum.bkInsertFile);
if (l_BkFile == "" || l_insertFileUrl == "") {
var height = 250;
var width = 400;
OnShowDialog("redhead.html", "OA助手", width, height);
return;
}
InsertRedHeadDoc(l_Doc);
}
function openWebFile(param){
if(param == null) {
return {code:-1,msg:"参数错误!"}
}
let {tokenIdKey,nid,token,openUrl,writeUrl,fullName} = param;
if(tokenIdKey == null ||nid == null || token == null || openUrl == null || writeUrl == null || fullName == null){
return {code:-1,msg:"参数错误!tokenIdKey,nid,token,openUrl,writeUrl,fullName 不可为空"}
}
let url = `${openUrl}?nid=${nid}&token=${token}`;
DownloadFile(
url,
fullName,
(path) => {
let doc = wps
.WpsApplication()
.Documents.Open(path, false, false, false, "");
if (!doc) return;
var l_Param = wps.PluginStorage.getItem(doc.DocID);
if(l_Param == null) {
l_Param = param;
}else if(typeof l_Param == "string"){
l_Param = JSON.parse(l_Param);
}
//增加属性,或设置
l_Param.OADocLandMode = 0; //设置OA文档的落地标志
//将OA文档落地模式标志存入系统变量对象保存
wps.PluginStorage.setItem(doc.DocID,JSON.stringify(param) );
// 把WPS对象置前
wps.WpsApplication().WindowState = 1;
wps.WpsApplication().Activate();
}
);
}
export function onWebEvent(param){
if(param == undefined || param.eventType == undefined){
return {code:-1,msg:"无此类型!"}
}
let eventType = param.eventType;
switch (eventType){
case "openOfficeEidt":
return openWebFile(param);
break;
default:
return {code:-1,msg:`无此类型【${eventType}】`}
}
}
export default {onWebEvent,openWebFile,OnSaveToServer,initWpsAddin}