MWF.xApplication.query = MWF.xApplication.query || {};
MWF.xApplication.query.Query = MWF.xApplication.query.Query || {};
MWF.require("MWF.widget.Common", null, false);
MWF.require("MWF.xScript.Macro", null, false);
MWF.require("o2.widget.Dialog", null, false);
MWF.xDesktop.requireApp("query.Query", "lp."+o2.language, null, false);
/** @classdesc Importer 数据中心的导入模型。
* @class
* @o2cn 导入模型
* @o2category QueryImporter
* @o2range {QueryImporter}
* @hideconstructor
* @example
* //在导入模型的事件中获取该类
* var view = this.target;
* */
MWF.xApplication.query.Query.Importer = MWF.QImporter = new Class(
/** @lends MWF.xApplication.query.Query.Importer# */
{
Implements: [Options, Events],
Extends: MWF.widget.Common,
options: {
"style": "default",
"moduleEvents": [
/**
* 加载importer(导入模型对象)的时候执行。可通过this.target获取当前对象。
* @event MWF.xApplication.query.Query.Importer#queryLoad
*/
"queryLoad",
/**
* 导入前触发,this.event指向导入的数据,您可以通过修改this.event来修改数据。
* @event MWF.xApplication.query.Query.Importer#beforeImport
* @example
* <caption>this.event数据格式如下:</caption>
*[
* [ "标题一","张三","男","大学本科","计算机","2001-1-2","2019-9-2" ], //第一行数据
* [ "标题二","李四","男","大学专科","数学","1998-1-2","2018-9-2" ] //第二行数据
*]
*/
"beforeImport",
/**
* 前台校验成功,并且后台执行完导入后触发,this.event指向后台返回的导入结果。
* @event MWF.xApplication.query.Query.Importer#afterImport
* @example
* <caption>this.event格式如下:</caption>
* {
* "status": "导入成功", //导入结果:状态有 "导入成功","部分成功","导入失败"
* "data": {}, //前台组织好的需要导入的数据
* "rowList": [], //前台组织的行对象数组
* "count" : 10, //导入总数量
* "failCount": 0, //失败数量
* "distribution": "" //导入时候时的错误信息
* }
*/
"afterImport",
/**
* 数据已经生成,前台进行数据校验时触发,this.event指向导入的数据。
* @event MWF.xApplication.query.Query.Importer#validImport
* @example
* <caption>this.event数据格式如下:</caption>
* {
* "data" : [
* [ "标题一","张三","男","大学本科","计算机","2001-1-2","2019-9-2" ], //第一行数据
* [ "标题二","李四","男","大学专科","数学","1998-1-2","2018-9-2" ] //第二行数据
* ],
* "rowList": [], //导入的行对象,数据格式常见本章API的afterCreateRowData说明。
* "validted" : true //是否校验通过,可以在本事件中修改该参数,确定是否强制导入
* }
*/
"validImport",
/**
* 创建每行需要导入的数据前触发,this.event指向当前行对象,您可以通过修改this.event.importData来修改数据。
* @event MWF.xApplication.query.Query.Importer#beforeCreateRowData
*/
"beforeCreateRowData",
/**
* 创建每行需要导入的数据后触发,this.event指向当前行对象。
* @event MWF.xApplication.query.Query.Importer#afterCreateRowData
* @example
* <caption>this.event格式如下:</caption>
* {
* "importData": [ "标题一","张三","男","大学本科","计算机","2001-1-2","2019-9-2" ], //导入的数据
* "data" : {//根据导入模型生成的业务数据
* {
* "subject", "标题一", //subject为导入模型列配置的路径
* "name" : "张三",
* ...
* },
* "document": { //如果导入目标是内容管理,则包含document对象
* "title": "标题一"
* "identity": "xxx@xxx@I"
* ...
* },
* "work": { //如果导入目标是流程管理,则包含work对象
* "title": "标题一"
* "identity": "xxx@xxx@I"
* ...
* },
* "errorTextList" : [], //错误信息
* "errorTextListExcel": [] //在出错界面导出Excel时的错误信息
* }
*/
"afterCreateRowData"
]
},
initialize: function(container, json, options, app, parentMacro){
this.setOptions(options);
this.path = "../x_component_query_Query/$Importer/";
this.cssPath = "../x_component_query_Query/$Importer/"+this.options.style+"/css.wcss";
this._loadCss();
this.lp = MWF.xApplication.query.Query.LP;
this.app = app;
this.json = json;
this.container = container;
this.parentMacro = parentMacro;
this.lookupAction = MWF.Actions.get("x_query_assemble_surface");
},
load: function(){
this.excelUtils = new MWF.xApplication.query.Query.Importer.ExcelUtils( this );
this.getImporterJSON( function () {
this.loadMacro( function () {
this._loadModuleEvents();
this.fireEvent("queryLoad");
this.importFromExcel()
}.bind(this))
}.bind(this))
},
loadMacro: function (callback) {
MWF.require("MWF.xScript.Macro", function () {
this.Macro = new MWF.Macro.ViewContext(this);
if (callback) callback();
}.bind(this));
},
createLoadding: function(){
this.loadingAreaNode = new Element("div", {"styles": this.css.viewLoadingAreaNode}).inject(this.contentAreaNode);
new Element("div", {"styles": {"height": "5px"}}).inject(this.loadingAreaNode);
var loadingNode = new Element("div", {"styles": this.css.viewLoadingNode}).inject(this.loadingAreaNode);
new Element("div", {"styles": this.css.viewLoadingIconNode}).inject(loadingNode);
var loadingTextNode = new Element("div", {"styles": this.css.viewLoadingTextNode}).inject(loadingNode);
loadingTextNode.set("text", "loading...");
},
getImporterJSON: function(callback){
if( this.importerJson && this.json ){
if (callback) callback();
}else{
if (this.json.name){
this.lookupAction.getImportModel(this.json.name, this.json.application, function(json){
this.importerId = json.data.id;
this.importerJson = JSON.decode(json.data.data);
json.data.data = this.importerJson;
this.json = Object.merge(this.json, json.data);
if (callback) callback();
}.bind(this));
}else{
this.lookupAction.getImportModelById(this.json.id, function(json){
this.importerId = json.data.id;
this.importerJson = JSON.decode(json.data.data);
json.data.data = this.importerJson;
this.json.application = json.data.query;
this.json = Object.merge(this.json, json.data);
if (callback) callback();
}.bind(this));
}
}
},
_loadModuleEvents : function(){
Object.each(this.json.data.events, function(e, key){
if (e.code){
if (this.options.moduleEvents.indexOf(key)!==-1){
this.addEvent(key, function(event, target){
return this.Macro.fire(e.code, target || this, event);
}.bind(this));
}
}
}.bind(this));
},
getDateColIndexArray: function(){
var dateColIndexArray = [];
this.json.data.columnList.each(function(columnJson, index){
var dataType = this.json.type === "dynamicTable" ? columnJson.dataType_Querytable : columnJson.dataType_CMSProcess;
if( ["date","dateTime"].contains(dataType) )dateColIndexArray.push( index );
}.bind(this));
return dateColIndexArray;
},
getOrgColIndexArray : function(){
var orgColIndexArray = [];
this.json.data.columnList.each(function(columnJson, index){
if( columnJson.isName ) {
orgColIndexArray.push(index);
}
// }else if( this.json.type === "cms" ){
// if( columnJson.isPublisher || columnJson.isAuthor || columnJson.isReader ){
// orgColIndexArray.push( index );
// }
// }
}.bind(this));
return orgColIndexArray;
},
importFromExcel : function(){
this.rowList = [];
this.excelUtils.upload( this.getDateColIndexArray(), function (importedData) {
importedData = importedData.filter(function (array) {
for( var i=0; i<array.length; i++ ){
if(array[i])return true;
}
return false;
});
if( !importedData.length )return;
var titleLength = importedData[0].length;
importedData.each(function (array) {
for( var i=0; i<titleLength; i++){
if( typeOf(array[i]) === "null" )array[i] = "";
}
})
this.progressBar = new MWF.xApplication.query.Query.Importer.ProgressBar( this, {
"onPostShow": function(){
this.progressBar.showCheckData();
this.importedData = importedData;
if( this.importedData.length > 0 )this.importedData.shift();
this.fireEvent("beforeImport", [this.importedData]);
Promise.resolve( this.importedData.promise ).then(function () {
this.listAllOrgDataByImport( function () {
this.importedData.each( function( lineData, lineIndex ){
this.rowList.push( new MWF.xApplication.query.Query.Importer.Row( this, lineData, lineIndex ) )
}.bind(this));
var isValid = this.json.enableValid ? this.checkImportedData() : this.checkNecessaryImportedData();
Promise.resolve(isValid).then(function ( isValid ) {
if( isValid ){
this.doImportData();
}else{
this.openImportedErrorDlg();
}
}.bind(this));
}.bind(this));
}.bind(this));
}.bind(this)
});
this.progressBar.importerId = this.importerId;
}.bind(this));
},
getData : function(){
var data = ( this.rowList || [] ).map( function(row){
return row.getResult();
});
return data;
},
doImportData: function(){
//创建数据
// this.rowList.each( function( row, i ){
// row.createData();
// }.bind(this));
//再次校验数据(计算的内容)
var date = new Date();
var flag = true;
this.rowList.each( function(row, index){
if( row.errorTextList.length )flag = false;
}.bind(this));
var arg = {
validted : flag,
data : this.importedData,
rowList : this.rowList
};
this.fireEvent( "validImport", [arg] );
Promise.resolve( arg.promise ).then(function(){
flag = arg.validted;
if( !flag ){
this.openImportedErrorDlg();
return;
}
var data = this.getData();
this.lookupAction.getUUID(function(json){
this.recordId = json.data;
this.lookupAction.executImportModel(this.json.id, {
"recordId": this.recordId,
"data" : data
}, function () {
//this.showImportingStatus( data, date )
this.progressBar.showImporting( this.recordId, function( data ){
data.data = data;
data.rowList = this.rowList;
this.fireEvent("afterImport", data);
return data;
}.bind(this), date);
}.bind(this), function (xhr) {
var requestJson = JSON.parse(xhr.responseText);
this.app.notice(requestJson.message, "error");
this.progressBar.close();
}.bind(this))
}.bind(this))
}.bind(this))
},
objectToString: function (obj, type) {
if(!obj)return "";
var arr = [];
Object.each(obj, function (value, key) {
if( type === "style" ){
arr.push( key + ":"+ value +";" )
}else{
arr.push( key + "='"+ value +"'" )
}
})
return arr.join( " " )
},
openImportedErrorDlg : function(){
if(this.progressBar)this.progressBar.close();
var _self = this;
var div = new Element("div", { style : "padding:10px;" });
var dlg = o2.DL.open({
"style" : "user",
"title": this.lp.importFail,
"content": div,
"offset": {"y": 0},
"isMax": true,
"width": 1000,
"height": 700,
"buttonList": [
{
"type": "exportWithError",
"text": this.lp.exportExcel,
"action": function () { _self.exportWithImportDataToExcel(); }
},
{
"type": "cancel",
"text": this.lp.cancel,
"action": function () { dlg.close(); }
}
],
"onPostShow": function () {
var htmlArray = ["<table "+ this.objectToString( this.css.properties ) +" style='"+this.objectToString( this.css.tableStyles, "style" )+"'>"];
var titleStyle = this.objectToString( this.css.titleStyles, "style" );
htmlArray.push( "<tr>" );
this.json.data.columnList.each( function (columnJson, i) {
htmlArray.push( "<th style='"+titleStyle+"'>"+columnJson.displayName+"</th>" );
});
htmlArray.push( "<th style='"+titleStyle+"'> "+this.lp.validationInfor +"</th>" );
htmlArray.push( "</tr>" );
var contentStyles = Object.clone( this.css.contentStyles );
if( !contentStyles[ "border-bottom" ] && !contentStyles[ "border" ] )contentStyles[ "border-bottom" ] = "1px solid #eee";
var contentStyle = this.objectToString( Object.merge( contentStyles, {"text-align":"left"}) , "style" );
this.rowList.each( function( row, lineIndex ){
var lineData = row.importedData;
htmlArray.push( "<tr>" );
this.json.data.columnList.each( function (columnJson, i) {
htmlArray.push( "<td style='"+contentStyle+"'>"+ ( lineData[ i ] || '' ).replace(/ /g,"<br/>") +"</td>" ); //换行符
});
htmlArray.push( "<td style='"+contentStyle+"'>"+( row.errorTextList ? row.errorTextList.join("<br/>") : "" )+"</td>" );
htmlArray.push( "</tr>" );
}.bind(this));
htmlArray.push( "</table>" );
div.set("html" , htmlArray.join(""));
}.bind(this),
"onPostClose": function(){
dlg = null;
}.bind(this)
});
},
//必须校验的数据
checkNecessaryImportedData: function(){
var flag = true;
this.rowList.each( function(row, index){
if( !row.checkNecessary() )flag = false;
}.bind(this));
var arg = {
validted : flag,
data : this.importedData,
rowList : this.rowList
};
this.fireEvent( "validImport", [arg] );
return Promise.resolve( arg.promise ).then(function () {
return arg.validted;
});
},
//校验Excel中的数据
checkImportedData : function(){
var flag = true;
this.rowList.each( function(row, index){
if( !row.checkValid() )flag = false;
}.bind(this));
var arg = {
validted : flag,
data : this.importedData,
rowList : this.rowList
};
this.fireEvent( "validImport", [arg] );
return Promise.resolve( arg.promise ).then(function () {
return arg.validted;
});
},
getOrgData : function( str, ignoreNone, isParse ){
str = str.trim();
var flag = str.substr(str.length-2, 2);
var d;
switch (flag.toLowerCase()){
case "@i":
d = this.identityMapImported[str];
break;
case "@p":
d = this.personMapImported[str];
break;
case "@u":
d = this.unitMapImported[str];
break;
case "@g":
d = this.groupMapImported[str];
break;
default:
d = this.identityMapImported[str] ||
this.personMapImported[str] ||
this.unitMapImported[str] ||
this.groupMapImported[str];
break;
}
if( d )return isParse ? MWF.org.parseOrgData(d, true, true) : d;
if( ignoreNone ) {
return null;
}else{
return {"errorText": str + this.lp.notExistInSystem };
}
},
stringToArray: function(string){
return string.replace(/[\n\r]/g,",").replace(/ /g,",").split(/\s*,\s*/g ).filter(function(s){
return !!s;
});
},
listAllOrgDataByImport : function ( callback ) {
var orgColIndexArray = this.getOrgColIndexArray();
if( orgColIndexArray.length === 0 ){
if(callback)callback();
return;
}
var identityList = [], personList = [], unitList = [], groupList = [];
if( orgColIndexArray.length > 0 ){
this.importedData.each( function( lineData, lineIndex ){
// if( lineIndex === 0 )return;
orgColIndexArray.each( function (colIndex, i) {
if( !lineData[colIndex] )return;
var arr = this.stringToArray(lineData[colIndex]);
arr.each( function( a ){
a = a.trim();
var flag = a.substr(a.length-2, 2);
switch (flag.toLowerCase()){
case "@i":
identityList.push( a ); break;
case "@p":
personList.push( a ); break;
case "@u":
unitList.push( a ); break;
case "@g":
groupList.push( a ); break;
default:
identityList.push( a );
personList.push( a );
unitList.push( a );
groupList.push( a );
break;
}
})
}.bind(this))
}.bind(this));
var identityLoaded, personLoaded, unitLoaded, groupLoaded;
var check = function () {
if( identityLoaded && personLoaded && unitLoaded && groupLoaded ){
if(callback)callback();
}
};
this.identityMapImported = {};
if( identityList.length ){
identityList = identityList.unique();
o2.Actions.load("x_organization_assemble_express").IdentityAction.listObject({ identityList : identityList }, function (json) {
json.data.each( function (d) { if(d)this.identityMapImported[ d.matchKey ] = d; }.bind(this));
identityLoaded = true;
check();
}.bind(this))
}else{
identityLoaded = true;
check();
}
this.personMapImported = {};
if( personList.length ){
personList = personList.unique();
o2.Actions.load("x_organization_assemble_express").PersonAction.listObject({ personList : personList }, function (json) {
json.data.each( function (d) { if(d)this.personMapImported[ d.matchKey ] = d; }.bind(this));
personLoaded = true;
check();
}.bind(this))
}else{
personLoaded = true;
check();
}
this.unitMapImported = {};
if( unitList.length ){
unitList = unitList.unique();
o2.Actions.load("x_organization_assemble_express").UnitAction.listObject({ unitList : unitList }, function (json) {
json.data.each( function (d) { if(d)this.unitMapImported[ d.matchKey ] = d; }.bind(this));
unitLoaded = true;
check();
}.bind(this))
}else{
unitLoaded = true;
check();
}
this.groupMapImported = {};
if( groupList.length ){
groupList = groupList.unique();
o2.Actions.load("x_organization_assemble_express").GroupAction.listObject({ groupList : groupList }, function (json) {
json.data.each( function (d) { if(d)this.groupMapImported[ d.matchKey ] = d; }.bind(this));
groupLoaded = true;
check();
}.bind(this))
}else{
groupLoaded = true;
check();
}
}
},
// showImportingStatus: function( improtedData, date ){
// this.progressBar.showImporting( this.recordId, function( data ){
// data.data = improtedData;
// data.rowList = this.rowList;
// this.fireEvent("afterImport", data)
// }.bind(this), date);
// },
exportWithImportDataToExcel : function ( importData ) {
if( !this.excelUtils ){
this.excelUtils = new MWF.xApplication.query.Query.Importer.ExcelUtils( this );
}
var exportTo = function () {
var resultArr = [];
var titleArr = this.getTitleArray();
titleArr.push( this.lp.validationInfor );
resultArr.push( titleArr );
if( importData ){
importData.each( function (lineData, lineIndex) {
var array = [];
if( o2.typeOf(lineData)==="array" ) {
lineData.each(function (d, i) {
array.push((d || '').replace(/ /g, "\n"));
});
}else if(o2.typeOf(lineData)==="object"){
this.json.data.columnList.each( function (columnJson, i) {
array.push( lineData[columnJson.path] || "" )
}.bind(this));
if( lineData["o2ErrorText"] ){
array.push( lineData["o2ErrorText"] );
}
}
resultArr.push( array );
}.bind(this));
}else{
this.rowList.each( function( row, lineIndex ){
var lineData = row.importedData;
var array = [];
for( var i=0; i<lineData.length; i++ ){
var d = ( lineData[i] || '' ).replace(/ /g, "\n");
array.push( d );
}
// lineData.each( function (d, i) {
// array.push( ( d || '' ).replace(/ /g, "\n") );
// });
array.push( row.errorTextListExcel ? row.errorTextListExcel.join("\n") : "" );
resultArr.push( array );
}.bind(this));
}
var colWidthArray = this.getColWidthArray();
colWidthArray.push(260);
var arg = {
data : resultArr,
colWidthArray : colWidthArray,
title : this.getFileName()
};
this.fireEvent("export", [arg]);
this.excelUtils.exportToExcel(
arg.data,
arg.title,
arg.colWidthArray,
this.getDateIndexArray()
)
}.bind(this);
if( !this.importerJson ){
this.getImporterJSON( function () {
exportTo();
}.bind(this))
}else{
exportTo();
}
},
downloadTemplate: function(fileName, callback){
if( !this.excelUtils ){
this.excelUtils = new MWF.xApplication.query.Query.Importer.ExcelUtils( this );
}
var doExport = function () {
var arg = {
data : [this.getTitleArray()],
colWidthArray : this.getColWidthArray(),
title : this.getFileName(fileName)
};
if(callback)callback(arg);
this.excelUtils.exportToExcel(
arg.data,
arg.title,
arg.colWidthArray,
this.getDateIndexArray()
)
}.bind(this)
if( !this.importerJson ){
this.getImporterJSON( function () {
doExport()
}.bind(this))
}else{
doExport();
}
},
getFileName: function(fileName){
var title = fileName || this.json.name;
var titleA = title.split(".");
if( ["xls","xlst"].contains( titleA[titleA.length-1].toLowerCase() ) ){
titleA.splice( titleA.length-1 );
}
title = titleA.join(".");
return title;
},
getTitleArray: function(){
var titleArray = [];
this.json.data.columnList.each( function (columnJson, i) {
titleArray.push( columnJson.displayName );
}.bind(this));
return titleArray;
},
getColWidthArray : function(){
var colWidthArr = [];
this.json.data.columnList.each( function (columnJson, i) {
var dataType = this.json.type === "dynamicTable" ? columnJson.dataType_Querytable : columnJson.dataType_CMSProcess;
switch ( dataType ) {
case "string":
case "stringList":
if( columnJson.isName ){
colWidthArr.push( 340 );
}else if( columnJson.isSummary ){
colWidthArr.push( 260 );
}else{
colWidthArr.push( 150 );
}
break;
case "number":
case "integer":
case "long":
case "double":
case "numberList":
case "integerList":
case "longList":
case "doubleList":
colWidthArr.push(150);
break;
case "date":
case "dateTime":
case "dateList":
case "dateTimeList":
colWidthArr.push(150);
break;
default:
colWidthArr.push(150);
break;
}
}.bind(this));
return colWidthArr;
},
getDateIndexArray : function(){
var dateIndexArr = []; //日期格式列下标
this.json.data.columnList.each( function (columnJson, i) {
var dataType = this.json.type === "dynamicTable" ? columnJson.dataType_Querytable : columnJson.dataType_CMSProcess;
switch ( dataType ) {
case "date":
case "dateTime":
case "dateList":
case "dateTimeList":
dateIndexArr.push(i);
break;
default:
break;
}
}.bind(this));
return dateIndexArr;
},
//api 使用 开始
confirm: function (type, e, title, text, width, height, ok, cancel, callback, mask, style) {
this.app.confirm(type, e, title, text, width, height, ok, cancel, callback, mask, style)
},
alert: function (type, title, text, width, height) {
this.app.alert(type, "center", title, text, width, height);
},
notice: function (content, type, target, where, offset, option) {
this.app.notice(content, type, target, where, offset, option)
}
//api 使用 结束
});
MWF.xApplication.query.Query.Importer.Row = new Class({
initialize: function(importer, importedData, rowIndex){
this.importer = importer;
this.importedData = importedData;
this.clazzType = "row";
this.lp = this.importer.lp;
this.data = {};
this.errorTextList = [];
this.errorTextListExcel = [];
},
checkValid : function(){
var lp = this.lp;
var columnText = lp.importValidationColumnText;
var columnTextExcel = lp.importValidationColumnTextExcel;
var errorTextList = [];
var errorTextListExcel = [];
this.importer.json.data.columnList.each( function (columnJson, i) {
var colInfor = columnText.replace( "{n}", i+1 );
var colInforExcel = columnTextExcel.replace( "{n}", this.importer.excelUtils.index2ColName( i ) );
var value = this.importedData[i] || "";
var dataType = this.importer.json.type === "dynamicTable" ? columnJson.dataType_Querytable : columnJson.dataType_CMSProcess;
if( !columnJson.allowEmpty && !value ){
errorTextList.push( colInfor + lp.canNotBeEmpty + lp.fullstop );
errorTextListExcel.push( colInforExcel + lp.canNotBeEmpty + lp.fullstop );
}
if( columnJson.validFieldType !== false && value ){
switch ( dataType ) {
case "string":
case "stringList":
if( columnJson.isName ){
var arr = this.stringToArray(value);
arr.each( function(d, idx){
var obj = this.importer.getOrgData( d );
if( obj.errorText ){
errorTextList.push( colInfor + obj.errorText + lp.fullstop );
errorTextListExcel.push( colInforExcel + obj.errorText + lp.fullstop );
}
}.bind(this));
}
break;
case "number":
case "integer":
case "long":
case "double":
value = value.replace(/ /g,"");
if (isNaN(value)){
errorTextList.push( colInfor + value + lp.notValidNumber + lp.fullstop );
errorTextListExcel.push( colInforExcel + value + lp.notValidNumber + lp.fullstop );
}
break;
case "numberList":
case "integerList":
case "longList":
case "doubleList":
var arr = this.stringToArray(value);
arr.each( function(d, idx){
if (isNaN(d)){
errorTextList.push( colInfor + d + lp.notValidNumber + lp.fullstop );
errorTextListExcel.push( colInforExcel + d + lp.notValidNumber + lp.fullstop );
}
}.bind(this));
break;
case "date":
case "dateTime":
value = value.replace(/ /g,"");
if( !( new Date(value).isValid() )){
errorTextList.push(colInfor + value + lp.notValidDate + lp.fullstop );
errorTextListExcel.push( colInforExcel + value + lp.notValidDate + lp.fullstop );
}
break;
case "dateList":
case "dateTimeList":
var arr = this.stringToArray(value);
arr.each( function(d, idx){
if( !( new Date(d).isValid() )){
errorTextList.push(colInfor + d + lp.notValidDate + lp.fullstop );
errorTextListExcel.push( colInforExcel + d + lp.notValidDate + lp.fullstop );
}
}.bind(this));
break;
case "boolean":
value = value.replace(/ /g,"");
if( !["true","false"].contains(value.trim().toLowerCase()) ){
errorTextList.push(colInfor + value + lp.notValidBoolean + lp.fullstop );
errorTextListExcel.push( colInforExcel + value + lp.notValidBoolean + lp.fullstop );
}
break;
case "booleanList":
var arr = this.stringToArray(value);
arr.each( function(d, idx){
if( !["true","false"].contains(d.trim().toLowerCase())){
errorTextList.push(colInfor + d + lp.notValidBoolean + lp.fullstop );
errorTextListExcel.push( colInforExcel + d + lp.notValidBoolean + lp.fullstop );
}
}.bind(this));
break;
case "json":
case "stringMap":
value = value.replace(/ /g,"");
try{
var d = JSON.parse(value);
}catch (e) {
errorTextList.push(colInfor + value + lp.notValidJson + lp.fullstop );
errorTextListExcel.push( colInforExcel + value + lp.notValidJson + lp.fullstop );
}
break;
default:
break;
}
}
}.bind(this));
this.errorTextList = this.errorTextList.concat( errorTextList );
this.errorTextListExcel = this.errorTextListExcel.concat( errorTextListExcel );
if(this.errorTextList.length>0){
return false;
}
this.createData();
if( this.importer.json.type === "cms" ){
this.checkCMS( true );
}else if( this.importer.json.type === "process" ){
this.checkProcess( true );
}
if(this.errorTextList.length>0){
return false;
}
return true;
},
checkNecessary: function(){
var lp = this.lp;
var columnText = lp.importValidationColumnText;
var columnTextExcel = lp.importValidationColumnTextExcel;
var errorTextList = [];
var errorTextListExcel = [];
this.importer.json.data.columnList.each( function (columnJson, i) {
var colInfor = columnText.replace( "{n}", i+1 );
var colInforExcel = columnTextExcel.replace( "{n}", this.importer.excelUtils.index2ColName( i ) );
var value = this.importedData[i] || "";
var dataType = this.importer.json.type === "dynamicTable" ? columnJson.dataType_Querytable : columnJson.dataType_CMSProcess;
if( columnJson.validFieldType !== false && value ){
switch ( dataType ) {
case "json":
case "stringMap":
value = value.replace(/ /g,"");
try{
var d = JSON.parse(value);
}catch (e) {
errorTextList.push(colInfor + value + lp.notValidJson + lp.fullstop );
errorTextListExcel.push( colInforExcel + value + lp.notValidJson + lp.fullstop );
}
break;
default:
break;
}
}
}.bind(this));
this.errorTextList = this.errorTextList.concat( errorTextList );
this.errorTextListExcel = this.errorTextListExcel.concat( errorTextListExcel );
if(this.errorTextList.length>0){
return false;
}
this.createData();
if( this.importer.json.type === "cms" ){
this.checkCMS();
}else if( this.importer.json.type === "process" ){
this.checkProcess();
}
if(this.errorTextList.length>0){
return false;
}
return true;
// var flag = true;
// if( this.importer.json.type === "cms" ){
// if( !this.checkCMS() )flag = false;
// }else if( this.importer.json.type === "process" ){
// if( !this.checkProcess() )flag = false;
// }
// return flag;
},
getCol: function(key, isExcel){
var lp = this.lp;
if( this.pathIndexMap && typeOf(this.pathIndexMap[key]) === "number"){
var i = this.pathIndexMap[key];
if( isExcel ){
var text = lp.importValidationColumnTextExcel;
return text.replace( "{n}", this.importer.excelUtils.index2ColName( i ) );
}else{
var text = lp.importValidationColumnText;
return text.replace( "{n}", i+1 );
}
}
return ""
},
checkCMS : function( notCheckName ){
var lp = this.lp;
var errorTextList = [];
var errorTextListExcel = [];
var data = this.document.identity;
if(!data){
errorTextList.push( this.getCol("identity", false) + lp.noDrafter + lp.fullstop );
errorTextListExcel.push( this.getCol("identity", true) + lp.noDrafter + lp.fullstop );
}else if(data.split("@").getLast().toLowerCase() !== "i"){
errorTextList.push( this.getCol("identity", false) + '"'+ data +'"'+ lp.drafterIsNotIdentity + lp.fullstop );
errorTextListExcel.push( this.getCol("identity", true) + '"'+ data +'"'+ lp.drafterIsNotIdentity + lp.fullstop );
}
var data = this.document.publishTime;
if(!data){
errorTextList.push(this.getCol("publishTime", false) + lp.noPublishTime + lp.fullstop );
errorTextListExcel.push(this.getCol("publishTime", false) + lp.noPublishTime + lp.fullstop );
}else if( ! new Date(data).isValid() ){
errorTextList.push(this.getCol("publishTime", false) + '"'+ data +'"'+ lp.publishTimeFormatError + lp.fullstop );
errorTextListExcel.push(this.getCol("publishTime", false) + '"'+ data +'"'+ lp.publishTimeFormatError + lp.fullstop );
}
data = this.document.title;
if( data && data.length > 70){
errorTextList.push(this.getCol("title", false) + '"'+ data +'"'+ lp.cmsTitleLengthInfor + lp.fullstop );
errorTextListExcel.push(this.getCol("title", false) + '"'+ data +'"'+ + lp.cmsTitleLengthInfor + lp.fullstop );
}
data = this.document.summary;
if( data && data.length > 70 ){
errorTextList.push(this.getCol("summary", false) + '"'+ data +'"'+ lp.cmsSummaryLengthInfor + lp.fullstop );
errorTextListExcel.push( this.getCol("summary", false) + '"'+ data +'"'+ lp.cmsSummaryLengthInfor + lp.fullstop );
}
this.errorTextList = this.errorTextList.concat( errorTextList );
this.errorTextListExcel = this.errorTextListExcel.concat( errorTextListExcel );
if(errorTextList.length > 0){
return false;
}
return true;
},
checkProcess : function( notCheckName ){
var lp = this.lp;
var json = this.importer.json;
var columnText = lp.importValidationColumnText;
var columnTextExcel = lp.importValidationColumnTextExcel;
var errorTextList = [];
var errorTextListExcel = [];
var data = this.work.identity;
if(!data){
errorTextList.push( this.getCol("identity", false) + lp.noDrafter + lp.fullstop );
errorTextListExcel.push( this.getCol("identity", true) + lp.noDrafter + lp.fullstop );
}else if(data.split("@").getLast().toLowerCase() !== "i"){
errorTextList.push( this.getCol("identity", false) + '"'+ data +'"'+ lp.drafterIsNotIdentity + lp.fullstop );
errorTextListExcel.push( this.getCol("identity", true) + '"'+ data +'"'+ lp.drafterIsNotIdentity + lp.fullstop );
}
if( json.data.processStatus === "completed" ){
if(!this.work.form){
errorTextList.push( lp.noForm + lp.fullstop );
errorTextListExcel.push( lp.noForm + lp.fullstop );
}
var data = this.work.startTime;
if(!data){
errorTextList.push(this.getCol("startTime", false) + lp.noStartTime + lp.fullstop );
errorTextListExcel.push(this.getCol("startTime", false) + lp.noStartTime + lp.fullstop );
}else if( ! new Date(data).isValid() ){
errorTextList.push(this.getCol("startTime", false) + '"'+ data +'"'+ lp.startTimeFormatError + lp.fullstop );
errorTextListExcel.push(this.getCol("startTime", false) + '"'+ data +'"'+ lp.startTimeFormatError + lp.fullstop );
}
var data = this.work.completeTime;
if(!data){
errorTextList.push(this.getCol("completeTime", false) + lp.noEndTime + lp.fullstop );
errorTextListExcel.push(this.getCol("completeTime", false) + lp.noEndTime + lp.fullstop );
}else if( ! new Date(data).isValid() ){
errorTextList.push(this.getCol("completeTime", false) + '"'+ data +'"'+ lp.endTimeFormatError + lp.fullstop );
errorTextListExcel.push(this.getCol("completeTime", false) + '"'+ data +'"'+ lp.endTimeFormatError + lp.fullstop );
}
}
this.errorTextList = this.errorTextList.concat( errorTextList );
this.errorTextListExcel = this.errorTextListExcel.concat( errorTextListExcel );
if(errorTextList.length > 0){
return false;
}
return true;
},
createData : function(){
var json = this.importer.json;
if( json.type === "cms" ){
this.document = {
categoryId : json.data.category.id,
readerList : [],
authorList : [],
docData : this.data
};
}else if( json.type === "process" ){
this.work = {
processFlag : json.data.process.id,
data: this.data
};
}
this.importer.fireEvent("beforeCreateRowData", [this]);
json.data.columnList.each( function (columnJson, i) {
if(!columnJson.path)return;
var value = this.importedData[i] || "";
if( !value )return;
var data = this.parseData(value, (json.type === "dynamicTable" ? columnJson.dataType_Querytable : columnJson.dataType_CMSProcess), columnJson);
if( !data && data !== 0 )return;
if( json.type === "dynamicTable" ){
this.data[ columnJson.path ] = data;
}else{
this.setDataWithPath(this.data, columnJson.path, data);
}
if( json.type === "cms" ){
if( columnJson.isName ) {
if (columnJson.isAuthor) {
var array = this.parseCMSReadAndAuthor(data, "作者");
this.document.authorList = this.document.authorList.concat(array)
}
if (columnJson.isReader) {
var array = this.parseCMSReadAndAuthor(data, "阅读");
this.document.readerList = this.document.readerList.concat(array)
}
}
}
}.bind(this));
json.data.calculateFieldList.each( function (fieldJson, i) {
if( fieldJson.valueScript ){
var data = this.importer.Macro.exec( fieldJson.valueScript, this );
if( o2.typeOf(data) === "null" )return;
if( !fieldJson.path )return;
if( json.type === "dynamicTable" ){
this.data[ fieldJson.path ] = data;
}else{
this.setDataWithPath(this.data, fieldJson.path, data);
}
if( json.type === "cms" ){
if( fieldJson.isAuthor ){
var array = this.parseCMSReadAndAuthor( data, "作者" );
this.document.authorList = this.document.authorList.concat( array )
}
if( fieldJson.isReader ){
var array = this.parseCMSReadAndAuthor( data, "阅读" );
this.document.readerList = this.document.readerList.concat( array )
}
}
}
}.bind(this));
var array;
if( json.type === "cms" ){
this.document.docData = this.data;
if( json.data.documentPublisher === "importer" ){
array = layout.session.user.identityList;
if( array && array.length ){
this.document.identity = array[0].distinguishedName
}
}else{
this.setDataWithField(this.document, "documentPublisherField", "identity", true);
}
if( json.data.documentPublishTime === "importer" ){
this.document.publishTime = new Date().format("db");
}else{
this.setDataWithField(this.document, "documentPublisherTimeField", "publishTime", false);
}
this.setDataWithField(this.document, "documentTitleField", "title", false);
if( !this.document.title )this.document.title = "无标题";
this.setDataWithField(this.document, "documentSummaryField", "summary", false);
}else if( json.type === "process" ){
this.work.data = this.data;
if( json.data.processDrafter === "importer" ){
array = layout.session.user.identityList;
if( array && array.length ){
this.work.identity = array[0].distinguishedName
}
}else{
this.setDataWithField(this.work, "processDrafterField", "identity", true);
}
this.setDataWithField(this.work, "processTitleField", "title", false);
if( !this.work.title )this.work.title = "无标题";
if( json.data.processStatus === "completed" ){
this.work.form = json.data.processForm || "";
this.setDataWithField(this.work, "processSerialField", "serial", false);
this.setDataWithField(this.work, "processStartTimeField", "startTime", false);
this.setDataWithField(this.work, "processCompleteTimeField", "completeTime", false);
}
}
this.importer.fireEvent("afterCreateRowData", [ this]);
},
parseData: function(value, dataType, json){
var data;
var type = this.importer.json.type;
switch ( dataType ) {
case "string":
case "stringList":
if( json.isName ){
var arr = this.stringToArray(value);
if( type === "dynamicTable" ){
data = arr
}else{
data = arr.map( function(d, idx){
return this.importer.getOrgData( d, true, true ) || d;
}.bind(this)).clean();
}
}else{
if( dataType === "string" ){
var linebreak = type === "dynamicTable" ? json.lineBreak_Querytable : json.lineBreak_CMSProcess;
data = value.replace(/ /g, linebreak || "" )
}else{
data = this.stringToArray(value);
}
}
break;
case "number":
case "double":
value = value.replace(/ /g,"");
data = parseFloat(value);
break;
case "integer":
case "long":
value = value.replace(/ /g,"");
data = parseInt( value );
break;
case "numberList":
case "doubleList":
data = this.stringToArray(value).map( function(d, idx){ return parseFloat( d ); }.bind(this)).clean();
break;
case "integerList":
case "longList":
data = this.stringToArray(value).map( function(d, idx){ return parseInt( d ); }.bind(this)).clean();
break;
case "date":
value = value.replace(/ /g,"");
data = Date.parse(value).format( "%Y-%m-%d" );
break;
case "dateTime":
value = value.replace(/ /g,"");
data = Date.parse(value).format( "db" );
break;
case "dateList":
data = this.stringToArray(value).map( function(d, idx){ return Date.parse(d).format( "%Y-%m-%d" ); }.bind(this)).clean();
break;
case "dateTimeList":
data = this.stringToArray(value).map( function(d, idx){ return Date.parse(d).format( "db" ); }.bind(this)).clean();
break;
case "boolean":
value = value.replace(/ /g,"");
data = value.trim().toLowerCase() !== "false";
break;
case "booleanList":
data = this.stringToArray(value).map( function(d, idx){ return value.trim().toLowerCase() !== "false"; }.bind(this)).clean();
break;
case "json":
case "stringMap":
value = value.replace(/ /g,"");
data = JSON.parse(value);
break;
default:
data = value.replace(/ /g,"");
break;
}
return data;
},
stringToArray: function(string){
return string.replace(/[\n\r]/g,",").replace(/ /g,",").split(/\s*,\s*/g ).filter(function(s){
return !!s;
});
},
setDataWithPath: function(obj, path, data){
var names = path.split(".");
var d = obj;
Array.each(names, function (n, idx) {
if( idx === names.length -1 )return;
if ( !d[n] ){
var value = this.isNumberString( names[idx+1] ) ? [] : {};
var n1 = this.isNumberString( n ) ? n.toInt() : n;
d[n1] = value;
d = d[n1];
}else{
d = d[n];
}
}.bind(this));
d[names[names.length -1]] = data;
},
setDataWithField: function(obj, fieldName, path, isName){
if(!this.pathIndexMap)this.pathIndexMap = {};
if( !path )return;
var json = this.importer.json;
if( json.data[fieldName] ){
var f = json.data[fieldName];
json.data.columnList.each(function(json, i){
if(json.path === f)this.pathIndexMap[path] = i;
}.bind(this));
var d = this.data;
Array.each( f.split("."), function (n) {
if(this.isNumberString(n))n = n.toInt();
if (d) d = d[n];
}.bind(this));
if(!d)return;
var _d = (typeOf(d) === "array" && d.length) ? d[0] : d;
if( _d ){
if(isName){
obj[path] = typeOf(_d) === "object" ? _d.distinguishedName : _d;
}else{
obj[path] = d;
}
}
}
},
isNumberString: function(string){
return string.toInt().toString() === string;
},
parseCMSReadAndAuthor : function( data, t ){
var cnArray = ["组织","群组","人员","人员","角色"];
var keyArray = ["U","G","I","P","R"];
if( typeOf(data) !== "array" )data = [data];
return data.map( function( d ){
var dn = typeOf( d ) === "string" ? d : d.distinguishedName;
var name;
if( typeOf(d) === "object" && d.name ){
name = d.name;
}else if( MWF.name && MWF.name.cn ){
name = MWF.name.cn( dn );
}else{
name = dn.split("@")[0];
}
var index = keyArray.indexOf(dn.substr(dn.length-1, 1));
if( index > -1 ){
return {
"permission" : t,
"permissionObjectType": cnArray[ index ],
"permissionObjectName": name,
"permissionObjectCode": dn
}
}
}).clean()
},
getSrcData: function(){
var srcData = {};
this.importer.json.data.columnList.each( function (columnJson, i) {
if(columnJson.path)srcData[ columnJson.path ] = this.importedData[i] || "";
}.bind(this));
return srcData;
},
getResult: function(){
if( this.importer.json.type === "cms" ){
this.document.srcData = this.getSrcData(); //this.importedData;
return this.document;
}else if( this.importer.json.type === "process" ){
this.work.srcData = this.getSrcData(); //this.importedData;
return this.work;
}else if( this.importer.json.type === "dynamicTable" ){
this.data.srcData = this.getSrcData(); //this.importedData;
return this.data;
}
}
});
MWF.xDesktop.requireApp("Template", "utils.ExcelUtils", null, false);
MWF.xApplication.query.Query.Importer.ExcelUtils = new Class({
Extends: MWF.xApplication.Template.utils.ExcelUtils,
initialize: function(){
this.sheet2JsonOptions = {header:1};
}
});
MWF.xApplication.query.Query.Importer.ProgressBar = new Class({
Implements: [Options, Events],
Extends: o2.widget.Common,
options: {
zindex: null,
disableDetailButton: false
},
initialize : function( importer, options ){
this.setOptions(options);
this.importer = importer;
this.actions = this.importer.lookupAction;
this.lp = MWF.xApplication.query.Query.LP;
this.css = importer.css;
this.openDlg();
this.status = "ready";
},
openDlg: function () {
var _self = this;
this.contentNode = new Element("div",{"styles": this.css.processContentNode});
var opt = {
"style" : "user",
"title": this.lp.importRecordDetail,
"content": this.contentNode,
"offset": {"y": 0},
"isMax": false,
"width": 500,
"height": 200,
"zindex": this.options.zindex,
"buttonList": [
{
"type": "openImportRecordDetail",
"text": this.lp.openImportRecordDetail,
"action": function () { _self.openImportRecordDetail(); }
},
{
"type": "cancel",
"text": this.lp.close,
"action": function () { this.dlg.close(); }.bind(this)
}
],
"onPostShow": function(){
this.fireEvent("postShow");
}.bind(this),
"onPostLoad": function () {
this.titleAction.hide();
this.button.hide();
},
"onPostClose": function(){
this.dlg = null;
}.bind(this)
};
if( this.options.disableDetailButton ){
opt.buttonList.splice(0, 1);
}
this.dlg = o2.DL.open(opt);
},
createNode: function( noProgress ){
// var lp = this.lp;
// this.maskNode = new Element("div",{"styles": this.css.maskNode}).inject(this.importer.container);
//
// this.node = new Element("div", {"styles": this.css.progressBarNode}).inject(this.importer.container);
//
// this.topNode = new Element("div",{"styles": this.css.progressTopNode}).inject(this.node);
//
// this.subjectNode = new Element("div",{"styles": this.css.progressSubjectNode}).inject(this.topNode);
//
// this.topCloseAction = new Element("div.topCloseAction", {
// "styles": this.css.progressTopCloseAction,
// "text": "x"
// }).inject(this.topNode);
// this.topCloseAction.hide();
// this.topCloseAction.addEvent("click", function(){
// this.close();
// }.bind(this))
//
// this.contentNode = new Element("div",{"styles": this.css.processContentNode}).inject(this.node);
//
// this.bottomNode = new Element("div", {"styles": this.css.progressBottomNode}).inject(this.node);
// this.bottomNode.hide();
//
// this.closeAction = new Element("div.closeAction", {
// "styles": this.css.progressCloseAction,
// "text": lp.close
// }).inject(this.bottomNode);
// this.closeAction.addEvent("click", function(){
// this.close();
// }.bind(this))
},
setContentHtml: function(noProgress){
var lp = this.lp;
var contentHTML = "";
if (noProgress){
// contentHTML = "<div style=\"height: 20px; line-height: 20px\">"+lp.readyToImportData1+"</div></div>" ;
contentHTML =
"<div style=\"overflow: hidden\">" +
" <div class='mwf_progressInforNode'>"+lp.readyToImportData1+"</div>"+
"</div>" ;
this.contentNode.set("html", contentHTML );
this.progressNode = null;
this.progressPercentNode = null;
this.progressInforNode = this.contentNode.getElement(".mwf_progressInforNode");
this.progressInforNode.setStyles(this.css.progressInforNode)
}else{
contentHTML =
"<div style=\"overflow: hidden\">"+
" <div class='mwf_progressNode'>" +
" <div class='mwf_progressPercentNode'></div>"+
" </div>" +
" <div class='mwf_progressInforNode'>"+lp.readyToImportData1+"</div>"+
"</div>" ;
this.contentNode.set("html", contentHTML );
this.progressNode = this.contentNode.getElement(".mwf_progressNode");
this.progressNode.setStyles(this.css.progressNode);
this.progressPercentNode = this.contentNode.getElement(".mwf_progressPercentNode");
this.progressPercentNode.setStyles(this.css.progressPercentNode);
this.progressInforNode = this.contentNode.getElement(".mwf_progressInforNode");
this.progressInforNode.setStyles(this.css.progressInforNode)
}
},
showCheckData : function(){
// this.node.show();
this.setContentHtml(true);
this.setMessageTitle( this.lp.checkDataTitle );
this.setMessageText( this.lp.checkDataContent );
this.status = "check";
// this.setSize();
},
showImporting: function( recordId, callback, date ){
// this.node.show();
this.setContentHtml();
this.recordId = recordId;
this.currentDate = date || new Date();
this.intervalId = window.setInterval( function(){
this.actions.getImportModelRecordStatus( this.recordId, function( json ){
var data = json.data;
this.status = data.status;
if( data.status === "待导入" ) { //有其他人正在导入或上次导入还未完成
this.setMessageTitle(this.lp.importWaitingTitle);
this.setMessageText(this.lp.importWaitingContent);
}else if( data.status === "导入中" ){ //导入中
this.setMessageTitle( this.lp.importDataTitle );
this.setMessageText( this.lp.importDataContent.replace( "{count}", data.executeCount));
this.updateProgress( data );
}else{ //已经结束, 状态有 "导入成功","部分成功","导入失败"
if( callback )callback( data );
if( data.promise && typeOf(data.promise.then) === "function" ){
Promise.resolve( data.promise ).then(function () {
if(this.intervalId)window.clearInterval( this.intervalId );
this.transferComplete( data );
}.bind(this))
}else{
if(this.intervalId)window.clearInterval( this.intervalId );
this.transferComplete( data );
}
}
}.bind(this), null)
}.bind(this), 500 );
// this.setSize();
},
showCloseAction: function(){
this.dlg.titleAction.show();
this.dlg.button.show();
// if( this.bottomNode )this.bottomNode.show();
// if( this.topCloseAction )this.topCloseAction.show();
// this.setSize();
},
close: function(){
// this.maskNode.destroy();
// this.node.destroy();
this.dlg.close();
},
// setSize: function(){
// var containerSize = this.importer.container.getSize();
// var nodeSize = this.node.getSize();
// var top = (containerSize.y - nodeSize.y) / 2;
// var left = (containerSize.x - nodeSize.x) / 2;
// this.node.setStyles({
// "top": (top-40)+"px",
// "left": left+"px"
// })
// },
updateProgress: function(data){
//status, data.executeCount, data.count, data.failCount
var lp = this.lp;
var total = data.count.toInt();
var processed = data.executeCount.toInt();
var failCount = data.failCount.toInt();
var percent = 100*(processed/total);
var sendDate = new Date();
var lastDate = this.lastTime || this.currentDate;
var ms = sendDate.getTime() - lastDate.getTime();
var speed = ( (processed - ( this.lastProcessed || 0 )) * 1000)/ms ;
var u = lp.importSpeed;
speed = speed.round(2);
this.progressPercentNode.setStyle("width", ""+percent+"%");
var text = lp.importingDataContent.replace("{speed}",speed).replace("{total}",total).replace("{remaining}",( total - processed ));
text += failCount ? lp.importingDataErrorContent.replace("{errorCount}",failCount) : "";
this.progressInforNode.set("text", text);
this.lastProcessed = processed;
this.lastTime = new Date();
},
transferComplete: function( data ){
var lp = this.lp;
var sendDate = new Date();
var ms = sendDate.getTime()-this.currentDate.getTime();
if(ms<1000)ms = 1000;
var timeStr = "";
if (ms>3600000){
var h = ms/3600000;
var m_s = ms % 3600000;
var m = m_s / 60000;
var s_s = m_s % 60000;
var s = s_s/1000;
timeStr = ""+h.toInt()+lp.hour+m.toInt()+lp.mintue+s.toInt()+lp.second;
}else if (ms>60000){
var m = ms / 60000;
var s_s = ms % 60000;
var s = s_s/1000;
timeStr = ""+m.toInt()+lp.mintue+s.toInt()+lp.second;
}else{
var s = ms/1000;
timeStr = ""+s.toInt()+lp.second;
}
if( data.status === "导入成功" ){
var size = data.count;
var speed = (size * 1000)/ms ;
var u = lp.importSpeed;
speed = speed.round(2);
this.setMessageTitle( lp.importSuccessTitle );
var text = lp.importSuccessContent.replace("{total}",size).replace("{speed}",speed).replace("{timeStr}",timeStr);
this.setMessageText( text );
}else if(data.status === "部分成功"){
var size = data.count;
var speed = (size * 1000)/ms ;
var u = lp.importSpeed;
speed = speed.round(2);
this.setMessageTitle( lp.importPartSuccessTitle );
var text = lp.importPartSuccessContent.replace("{total}",size).replace("{speed}",speed).replace("{errorCount}",data.failCount).replace("{timeStr}",timeStr);
this.setMessageText( text );
}else{ //导入失败
var size = data.count;
this.setMessageTitle( lp.importFailTitle );
var text = lp.importFailContent.replace("{errorInfo}",data.distribution || "").replace("{total}",size).replace("{timeStr}",timeStr);
this.setMessageText( text );
}
this.clearMessageProgress();
this.showCloseAction();
},
setMessageText: function( text){
this.progressInforNode.set("text", text);
},
setMessageTitle: function( text){
this.dlg.titleText.set("text", text);
},
clearMessageProgress: function(){
this.progressNode.destroy();
},
openImportRecordDetail: function () {
MWF.xDesktop.requireApp("query.Query", "ImporterRecord", function () {
var detail = new MWF.xApplication.query.Query.ImporterRecord.Detail(
this.importer.container,
this.importer.app,
{ importerId: this.importerId, recordId: this.recordId }
);
detail.load();
this.dlg.close();
}.bind(this), false);
}
});
source