123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- /**
- * Office插件,用于自定义表单。
- *
- * 1.OfficePlugin.init();
- * 加载office控件。
- *
- * 2.OfficePlugin.submit();
- * 保存office文档。
- */
- OfficePlugin={
- //当前登陆用户相关信息件对象
- user:{id:"0",name:"开发用户",groupId:"0",groupName:"开发部"},
- //office控件对象
- officeObjs:new Array(),
- //附件对象
- fileObjs:null,
- //判断当前表单页面是否有office控件。
- hasOfficeFields:new Array(),
- //判断当前表单页面所有office控件是否都提交了。
- hasSubmitOffices:new Array(),
- //有多少文档可以提交的
- submitNum:null,
- //当前提交文档变量
- submitNewNum:null,
- //是否初始化tab中的OFFICE工具栏目的隐藏问题。在FormUtil用到
- isTabItemOffice:true,
- //初始化
- //所做的操作如下:
- //1.检查当前表单中是否有office控件。
- //2.如果存在office控件
- // 获取文件id,将office控件添加到容器中。
- init:function(){
- this.officeObjs=new Array();
- this.hasOfficeFields=new Array();
- this.hasSubmitOffices=new Array();
- this.user = getDocUserData();
- var num = 0;
- var myNum = 0;
- this.fileObjs=$("input[controltype='office']");
- for ( var i = 0; i < this.fileObjs.length; i++) {
- var fileObj = this.fileObjs.get(i);
- var name=fileObj.getAttribute("name");
- var fileId=fileObj.getAttribute("value");
- //获取附件的扩展名
- var doctype = "";
- if(fileId!=null&&fileId!=""){
- doctype = sysFileType(fileId);
- }else{
- fileId="";
- doctype = fileObj.getAttribute("doctype");
- }
-
- if(doctype){
- doctype = doctype.toLowerCase();
- if(doctype=='pptx'){
- doctype='ppt';
- }else if(doctype=='docx'){
- doctype = 'doc';
- }else if(doctype=='xlsx'){
- doctype = 'xls';
- }
- }
-
- //容器的ID
- var divId="div_" + name.replaceAll(":","_");
-
- //容器样式修改
- var div_rq = $("#" + divId);
- if(!div_rq || div_rq.length<1){
- //如果找不到容器,则为表单生成模式,需要生成一个容器div
- div_rq = $('<div id="'+divId+'" class="office-div"></div>');
- $(fileObj).after(div_rq);
- }
- var dwidth = div_rq.css("width").toLowerCase().replaceAll("px","");
- if(dwidth<700){
- div_rq.css("width","700px");
- }
- var dheight = div_rq.css("height").toLowerCase().replaceAll("px","");
- if(dheight<700){
- div_rq.css("height","700px");
- }
-
- //必填 已在其它处理
- var validRule = fileObj.getAttribute("validate");
- if ( validRule != null && 'undefined' != validRule.toLowerCase() && validRule.length>2 ){
- var json = eval('(' + validRule + ')');
- if(json.required){
- //不做操作
- }else{
- var jsonStr = validRule.substring(0, validRule.lastIndexOf('}'));
- jsonStr +=",\'required\':true}"; //加上必填
- fileObj.setAttribute("validate",jsonStr);
- }
- }else{
- fileObj.setAttribute("validate","{\'required\':true}"); //必填
- }
- num++; //做可提交的标志数量
-
- $.ligerDialog.waitting('正在加载OFFICE文档,请稍候...');
- //加载控件。
- var officeObj= new OfficeControl();
- this.officeObjs.push(officeObj);
- //加载office控件。
- officeObj.renderTo(divId,{fileId:fileId,doctype:doctype,myNum:myNum,user:this.user});
- //是否有office控件。
- this.hasOfficeFields.push(true);
- //office控件文档标志
- this.hasSubmitOffices.push(false);
- myNum++; //序号
- $.ligerDialog.closeWaitting();
- }
- this.submitNum = num; //文档是可以做提交的数目 总娄
- this.submitNewNum = 0; //文档是提交了的数目 变化的(重新清空)
- },
- //提交文件保存。
- //如果有office控件。则保存后将返回的附件id放到隐藏域。
- submit:function(callBack){
- $.ligerDialog.waitting('正在保存OFFICE文档中,请稍候...');
- // var _self=this;
- for ( var cn = 0; cn < this.officeObjs.length; cn++) {
- var officeObj= this.officeObjs[cn];
- if(!this.hasOfficeFields[cn]) return;
- if(callBack){
- this.callBack=callBack;
- }
- //保存到服务器。
- var result=officeObj.saveRemote(cn);
- if(result==-11){
- //由 火狐谷歌浏览器控件文档保存事件(异步的,IE是同步的)回调接管函数 OfficeControl.js 中有 saveToURLOnComplete 处理
- }else if(result==-13){
- //由 火狐谷歌浏览器控件文档保存事件报错不能由回调接管函数 OfficeControl.js 中有 saveToURLOnComplete 处理 ,直接 在这里处理
- //下面处理的是如果没安装控件,也可以正常提交表单(建议注销保留)
- /*result = this.fileObjs.get(cn).getAttribute("value"); //保存到对象的值;
- if(result>0){
- officeObj.config.fileId = result; //控件中config对象的fileId
- this.fileObjs.get(cn).setAttribute("value",result);
- this.hasSubmitOffices[cn]=true; //完成标志
- this.submitNewNum = this.submitNewNum + 1; //文档是提交了的数目 变化的(重新清空)
- if(this.submitNum == this.submitNewNum){ //当提交问题 等于 提交数量的变量 时 表示所有文档 都提交了 然后做 业务相关的提交
- var data=CustomForm.getData();
- //设置表单数据
- $("#formData").val(data);
- $('#frmWorkFlow').submit();
- this.submitNewNum = 0; //重置 提交数量的变量
- }else{
- if(cn==this.officeObjs.length){
- $.ligerDialog.warn("提交失败,OFFICE控件没能正常使用,请重新安装 !!!","提示");
- }
- }
- }else{
- $.ligerDialog.warn("提交失败,OFFICE控件没能正常使用,请重新安装 !!!","提示");
- break
- }*/
- //$.ligerDialog.warn("提交失败,OFFICE控件没能正常使用,请重新安装 !!!","提示");
- alert("提交失败,OFFICE控件没能正常使用,请重新安装 !!!");
- break;
- }else{
- //将结果放到隐藏域。(同步的 处理方法 IE 360 等)
- //如果返回的是错误的内容,就保存以前的ID(因为过程中文档的ID是一样的)
- /*if(result==12){ //12这种是OFFICE安装程序有误,可要获取以前的保存(建议注销保留)
- result = this.fileObjs.get(cn).getAttribute("value");
- }*/
- if(result>0){
- this.fileObjs.get(cn).setAttribute("value",result);
- this.hasSubmitOffices[cn]=true; //完成标志
- this.submitNewNum = this.submitNewNum + 1; //文档是提交了的数目 变化的(重新清空)
- }else{
- break; //文件上传失败
- }
- }
- }
- $.ligerDialog.closeWaitting(); //关闭提示
- }
- };
- //获取文件格式
- function sysFileType(fileId){
- var doctype = "doc";
- var path = __ctx +'/platform/system/sysFile/getFileType.ht';
- $.ajaxSetup({async:false}); //同步
- $.post(path,{fileId:fileId},function(data){
- doctype = data;
- });
- $.ajaxSetup({async:true}); //异步
- return doctype;
- };
- //获取用户
- function getDocUserData(){
- var user = OfficePlugin.user;
- var path = __ctx +'/platform/system/sysFile/getUserData.ht';
- $.ajaxSetup({async:false}); //同步
- $.post(path,{},function(data){
- if(data!=""){
- var obj = eval('(' + data + ')');
- if(obj.success){
- user = obj.user;
- }
- }
- });
- $.ajaxSetup({async:true}); //异步
- return user;
- };
|