xinyb
2024-09-19 18ffbca9acaccd5099a7a63652f52210f59a7e40
提交 | 用户 | age
a6a76f 1 (function($){
F 2     var formId=0;
3     var formType=0;
4     var url='/importUpload';
5     $.xlsfile=function(options){    
6         var pF=parent.getIframeAttr("pFrame");
7         var panelTitle="";
8         if(typeof(panMain[panIndex])!='undefined'){
9             panelTitle=parent.frames[pF].panMain[panIndex].panelTitle;
10             panelTitle=panelTitle.replace(/(/g,',').replace(/'/g,';');
11             panelTitle=panelTitle.substring(0,panelTitle.length-1);
12         }
13         var formid=parent.frames[pF].formId;
14         var formtype=parent.frames[pF].formType;
15             formId=formid;
16             formType=formtype;
17         var doccode=parent.frames[pF].$('#doccode').val();
18         if( panelTitle==''){
19             panelTitle=formid+'功能数据导入';
20         }        
21         $('a').click(function(){//按钮点击进入    
22             if(this.id=='download'){//下载模板
23                  window.open("/excel.do?e=down&formId="+formid);
24             }else if(this.id=='import'){//导入
25                 $.messager.confirm('确认', '<div class=\"tet\">已经检查好Excel内容和映射设置确定导入?</div>', function(r){
26                     if (r){
27                         ajaxLoading();
28                         var formdata=new FormData($("#upFrame")[0]);
29                         formdata.append('state',1);
30                         formdata.append('pFrame',pF);
31                         formdata.append('formid',formid);
32                         formdata.append('formtype',formtype);
33                         formdata.append('panelTitle',panelTitle);
34                         formdata.append('isDetailed',($('#isDetailed').is(':checked')?1:0));
35                         formdata.append('doccode',(doccode==undefined?'':doccode));
36                         try{
37                              var id;
38                              var param={};
39                              $('.data').each(function(){    //获取映射设置数据
40                                  param[this.id]={};
41                                  id=this.id;
42                                  $('#'+this.id+' .'+this.id+'-input').each(function(){
43                                      param[id][this.id]=$(this).combobox('getValue');
44                                  });
45                                  formdata.append(id,JSON.stringify(param[id]));
46                              }); 
47                         }catch(e){return formdata;}        
48                         //改用ajax提交。-xin 2020-6-11 09:41:31
49                         $.ajax({url:"/excel.do?m=xlsdata",type: "post",data:formdata,processData:false,//因为data值是FormData对象,不需要对数据做处理。
50                              contentType:false,
51                              success: function(data){                                 
52                                  ajaxLoadEnd();
53                                 // data=eval('('+data+')');
54                                  if(data!=null){
55                                      if(data.state== 0){                                    
56                                          $.messager.confirm('操作提示', '<div class=\"tet\">'+data.msg+'<br>退出导入页面?</div>', function(r){
57                                              if(r){
58                                                  parent.closeTab();
59                                              }
60                                          });
61                                      }else if(data.state== 1){
62                                          $.messager.alert('操作提示','<div class=\"tet\">'+data.msg+'</div>'); 
63                                      }        
64                                  }else{
65                                      $.messager.alert('操作提示','<div class=\"tet\">导入过程中出现错误!错误信息:'+data.msg+'</div>');
66                                  }                                                         
67                             }
68                         });
69                     }
70                 });
71             }            
72         });        
73         $("#xlsTitle").html(parent.frames[pF].document.title+"("+formid+")");
74         if(formtype==1 || formtype==3){
75              $('#isDetailed').val(0);
76              $('#isDetailed').prop('checked', false);
77         }
78         $('#tyy').html(formtype+'类型');
79     }
80     
81     //加载映射
82     fileChange=function(){
83         //改用ajax提交。-xin 2020-6-11 09:41:31
84            ajaxLoading();
85            var formdata=new FormData($("#upFrame")[0]);
86            formdata.append('state',0);
87            formdata.append('formid',formId);
88            formdata.append('formtype',formType);
89            formdata.append('isDetailed',($('#isDetailed').is(':checked')?1:0));
90            $.ajax({
91                 cache : true,
92                 type : "post",
93                 url : "/excel.do?m=xlsdata",
94                 async : false,
95                 data : formdata, // 
96                 dataType:"json",
97                 contentType: false,
98                 processData: false,
99                 success: function(data){
100                  try{                
101                         $('.xls1').html('');
102                         $('.xls2').html('');
103                         if(data.state==1){
104                             var html ='';
105                             var br=0;
106                             var isys=false;
107                             var err='';
108                             var xls=data.xls;//Excel
109                             var gform=data.gform;//系统                                
110                             for(var e in xls){                                         
111                                 html +='<div class=\"data\" id=\"'+e+'\"><div class=\"titl\">'+(e=='xls2'?'【主数据】':'【明细数据】')+'</div><table width=\"100%\">';
112                                 html +='<tr class=\"mname\"><td align=\"right\">Excel名</td><td align=\"center\">系统名</td><td align=\"right\">Excel名</td><td align=\"center\">系统名</td><td align=\"right\">Excel名</td><td align=\"center\">系统名</td></tr>';
113                                 br=0;
114                                    for(var x in xls[e]){                                 
115                                      html +=(br==0?'<tr><td align=\"right\">'+xls[e][x]+':</td><td><input class=\"'+e+'-input\"  id=\"'+e+x+'\" title=\"'+xls[e][x]+'\" value=\"\"></td>':'<td align=\"right\">'+xls[e][x]+':</td><td><input class=\"'+e+'-input\" id=\"'+e+x+'\" title=\"'+xls[e][x]+'\" value=\"\"></td>');
116                                      if(br==2){html +='</tr>';br=0;}else{br++;}
117                                 }
118                                 html +='</table></div>';
119                                 $('.'+e).html(html);
120                                 $('.'+e+'-input').each(function(){
121                                     $(this).combobox({
122                                         valueField:'id',
123                                         textField :'text',
124                                         data      :gform[e+'-g'],
125                                         onLoadSuccess:function(){
126                                              for(var g in gform[e+'-g']){
127                                                   if(gform[e+'-g'][g].text==this.title){
128                                                       isys=true;
129                                                       $(this).combobox('setValue',gform[e+'-g'][g].id);break;
130                                                   }                                         
131                                             }    
132                                              if(err == '' && !isys){
133                                                  err ='<div class=\"tet\">Excel与系统匹配有误,需要手动映射字段</div>';
134                                              }                                             
135                                         }
136                                     });
137                                 });
138                                 html ='';
139                              }
140                             $('.spt').html('<label class=\"la\">映射设置</label>(注:<label>Excel名</label>映射到<label>系统名</label>选择的名称,不设置为系统默认,直接【导入】)</span>');
141                             $('.mapping').addClass("m");
142                             if(err != ''){
143                                 $.messager.alert('操作提示',err,'warning'); 
144                             }
145                         }else if(data.state==0){
146                             $.messager.alert('操作提示','<div class=\"tet\">'+data.info+'</div>');                             
147                             $('.xls1').html('<div class=\"tet\"><span style=\"color:red\">映射字段信息获取失败!</span></div>');    
148                             $('.mapping').addClass("m");
149                             $('.spt').html('');
150                         }
151                  }catch(e){
152                      $.messager.alert('操作提示','<div class=\"tet\">解析映射字段信息出现错误!</div>'); 
153                  }
154                  ajaxLoadEnd();
155             },error: function(XMLHttpRequest, textStatus, errorThrown) {
156                 ajaxLoadEnd();
157                 $.messager.alert('操作提示','<div class=\"tet\">解析映射字段信息出现错误!</div>'); 
158             }
159         });
160     }
161
162     //请稍候。。。启用
163     function ajaxLoading(){   
164         $("<div class=\"datagrid-mask\"></div>").css({display:"block",width:"100%",height:$(window).height()}).appendTo("body");   
165         $("<div class=\"datagrid-mask-msg\"></div>").html("正在处理,请稍候...").appendTo("body").css({height:"50px",display:"block",left:($(document.body).outerWidth(true) - 190) / 2,top:($(window).height()) / 2});   
166         document.documentElement.style.overflow='hidden';
167         document.body.style.position='fixed';
168         document.body.style.top='0px';
169         document.body.style.width='100%';
170     }  
171     //请稍候。。。结束
172     function ajaxLoadEnd(){   
173          $(".datagrid-mask").remove();   
174          $(".datagrid-mask-msg").remove(); 
175          document.documentElement.style.overflow='scroll';
176          document.body.style.position='static';                       
177     }
178 })(jQuery);
179 $(function(){
180     $.xlsfile();
181 });