`
huangyongxing310
  • 浏览: 483145 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

批量粘贴公用方法

 
阅读更多
//批量粘贴

	var columnData = [{
			excelIndex: 0,
			field: 'cityType',
			header: '城市类型'
		},
		{
			excelIndex: 1,
			field: 'cost',
			header: '费用标准'
		},
		{
			excelIndex: 2,
			field: 'startDate',
			header: '有效起始日期'
		}, {
			excelIndex: 3,
			field: 'endDate',
			header: '有效结束日期'
		}
	];

	var ImportPasteData = {
		columnData: columnData,
		saveUrl: '${importPasteSave}',
		downloadTemplateUrl: "<%=request.getContextPath()%>/userfiles/template/SalesCostStandardTemplate.xlsx"
	};


	function importPasteFun() {
		mini.open({
			url: '${CommonImportPaste}',
			title: '批量导入',
			width: 800,
			height: 600,
			onload: function() {
				var iframe = this.getIFrameEl();
				var data = ImportPasteData;
				iframe.contentWindow.SetData(data);
			},
			ondestroy: function(action) {
				grid.reload();
			}
		});
	}





<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String contextPath = request.getContextPath();
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>excel导入</title>
		<script src="<%=request.getContextPath()%>/htwyRes/miniui/scripts/boot.js" type="text/javascript"></script>
		<link href="<%=request.getContextPath()%>/htwyRes/miniui/scripts/miniui/themes/blue2003/skin.css" rel="stylesheet"
		 type="text/css" />

		<script src="<%=request.getContextPath()%>/htwyRes/js/excelCopy.js" type="text/javascript"></script>
		<!--    <link href="<%=request.getContextPath() %>/htwyRes/haitian/css/main.css" rel="stylesheet" type="text/css"/>-->
		<script src="<%=request.getContextPath()%>/gaojinsoft/y2019/marketManage/commonJs.js" type="text/javascript"></script>

	</head>

	<!--<body style="background-color: #DEF0FE; height: auto;">-->
	<body style="height: auto;">
		<div>
			<p style="padding-top: 5px;">
				<a id="downloadTemplateBtn" class="mini-button" iconCls="icon-download" href="">下载模板</a>
				<a id="importPastePasteBtn" class="mini-button " iconCls="icon-download" onclick="importPastePasteFun(this)">粘贴</a>
				<a id="importPasteSubmitBtn" class="mini-button " iconCls="icon-upload" onclick="importPasteSubmitFun()">导入</a>
				<span style="color: red;">注:请在excel复制数据到此处粘贴进行导入</span>
			</p>
		</div>
		<!--<div class="mini-fit" style="height: 600px;">-->
		<div id="importPasteDataGrid" class="mini-datagrid" style="width:100%;height:500px;" allowSortColumn="false"
		 allowResize="true" showPager="false">
			<div property="columns">
				<div type="indexcolumn" width="30" headerAlign="center" align="center">序号</div>
				<!-- <div field="startDate" headerAlign="center" allowSort="true" align="center">活动开始时间(年月)
				</div>

				<div field="systemCode" headerAlign="center" allowSort="true" align="center">门店编码
				</div>

				<div field="setExpense" headerAlign="center" allowSort="true" align="center">陈列费
				</div>

				<div field="manExpense" headerAlign="center" allowSort="true" align="center">人员费
				</div>

				<div field="expenseSources" headerAlign="center" allowSort="true" align="center">费用来源
				</div> -->
			</div>
		</div>
		<!--</div>-->
	</body>
</html>
<script type="text/javascript">
	// uploadStorePaste


	var columnData = [];
	var saveUrl = '';
	var downloadTemplateUrl = "";
	// var columnData =[];

	function SetData(data) {
		commonConsole(data, "data");
		columnData = data.columnData;
		saveUrl = data.saveUrl;
		downloadTemplateUrl = data.downloadTemplateUrl;

		$("#downloadTemplateBtn").attr("href", downloadTemplateUrl);
		
		createGrid(columnData);
		
	}


	mini.parse();
	var grid = mini.get("importPasteDataGrid");

	// 	var columnData = [{
	// 		excelIndex: 0,
	// 		field: 'cityType',
	// 		header: '城市类型'
	// 	},
	// 	{
	// 		excelIndex: 1,
	// 		field: 'cost',
	// 		header: '费用标准'
	// 	},
	// 	{
	// 		excelIndex: 2,
	// 		field: 'startDate',
	// 		header: '有效起始日期'
	// 	},{
	// 		excelIndex: 3,
	// 		field: 'endDate',
	// 		header: '有效结束日期'
	// 	}];


	function createGrid(columnData) {
		var columns = [{
			type: "indexcolumn"
		}];

		for (var i = 0; i < columnData.length; i++) {
			var data = columnData[i];
			var temp = {};
			temp.field = data.field;
			temp.header = data.header;
			temp.headerAlign = "center";
			columns.push(temp);
		}

		grid.set({
			columns: columns
		});

		// grid.load();
	}


	//批量粘贴提交
	function importPasteSubmitFun() {
		var importPasteDataGrid = mini.get("importPasteDataGrid");
		var addedRows = importPasteDataGrid.getChanges('added', false); //获得新增行
		var modifiedRows = importPasteDataGrid.getChanges('modified', false); //获得修改行

		//ajax提交到后台
		var msgid = mini.loading("操作中,请稍后......");
		$.ajax({
			type: 'POST',
			url: saveUrl,
			dataType: 'json',
			data: {
				'addedRows': encodeURIComponent(mini.encode(addedRows)),
				'modifiedRows': encodeURIComponent(mini
					.encode(modifiedRows))
			},
			success: function(result) {
				if (result.flag) {
					mini.alert("保存成功!", "提示");
				} else {
					mini.alert("保存失败!" + result.msg, "提示");
				}
				mini.hideMessageBox(msgid);
			},
			error: function(jqXHR, textStatus, errorThrown) {
				mini.hideMessageBox(msgid);
				mini.alert("保存失败!", "提示");
			}
		});
	}

	//批量复制(IE)
	function importPastePasteFun(obj) {
		var eData = getExcelData();
		if (!(excelData instanceof Array)) {
			alert("请在表格空白处使用Ctrl+v进行粘贴!");
		} else {
			pasttoGrid(eData)
		}
	}

	//复制到grid(chrome)
	function pasttoGrid(content) {

		// if(compatibleBrowser()==true){
		//     // mini.alert("compatibleBrowser()==true", "提示");
		//     var focusedElement = document.activeElement;
		//     if(!(focusedElement.id=='datagrid1' || focusedElement.tagName=='BODY')){
		//         return;
		//     }
		// }


		console.info("content length == " + content.length)
		var rowLen = content.length;

		var importPasteDataGrid = mini.get("importPasteDataGrid");

		//------------------
		var newRowArray = [];
		for (var i = (rowLen - 1); i >= 0; i--) {
			var str = content[i];
			var strArray = str.split("\t");

			var newRow = {};
			//----------

			// columnData
			for (var j = 0; j < columnData.length; j++) {
				newRow[columnData[j].field] = strArray[j];
			}

			// 			newRow.startDate = strArray[0];
			// 			newRow.systemCode = strArray[1];
			// 			newRow.setExpense = strArray[2];
			// 			newRow.manExpense = strArray[3];
			// 			newRow.expenseSources = strArray[4];

			//-----------
			newRowArray.push(newRow);
		}


		// //------------------数据检验
		// for (var i =  0 ; i<newRowArray.length; i++) {
		//     if(!newRowArray[i].userName){
		//         mini.alert("帐号不能为空!", "提示");
		//         return;
		//     }
		//
		//     if(!newRowArray[i].areaId){
		//         mini.alert("权限架构ID为空!", "提示");
		//         return;
		//     }
		//
		//     //console.info(typeof(newRowArray[i].areaId) )
		//
		//     //if(!typeof(newRowArray[i].areaId)=="number"){
		//     //	 	mini.alert("权限架构ID要求为数字!", "提示");
		//     //	 	return;
		//     //}
		//
		//
		// }

		//------------------
		for (var i = 0; i < newRowArray.length; i++) {
			//-----------
			importPasteDataGrid.addRow(newRowArray[i], 0);
		}
		//------------------

		importPasteDataGrid.commitEdit(); //提交所有行编辑。
	}
</script>







@Override
	public void importPasteSave(SalesCostStandardAction action) throws Exception {
//		User user = new UserUtil(ServletActionContext.getRequest())
//				.getCurrentUser();
//		Timestamp nowtime = new Timestamp(System.currentTimeMillis());
		String message = "";
		Map<String, Object> result = new HashMap<String, Object>();
		String jsonResult = "";

		// -----------------
		String addRows = URLDecoder.decode(action.getAddedRows(), "utf-8");// 新增的
//		String modefinedRows = URLDecoder.decode(action.get, "utf-8");// 修改的
		JSONDeserializer<List<Map>> list = new JSONDeserializer<List<Map>>();
		List<Map> addMapList = list.deserialize(addRows);

		List<Map> dataList = addMapList;

		User user = new UserUtil(ServletActionContext.getRequest()).getCurrentUser();
		Timestamp nowTime = new Timestamp(new Date().getTime());
//
		String userId = user.getUserId();
		String userName = user.getName();

		if (dataList != null) {
			if (dataList.size() > 501) {
				String msg = "单次导入不能超过500条数据";
				result.put("flag", false);
				result.put("msg", msg);
				jsonResult = Json.Encode(result);
				action.setAjaxOutData(new ByteArrayInputStream(jsonResult.getBytes("utf-8")));
				return;
			}

		} else {
			String msg = "无导入数据";
			result.put("flag", false);
			result.put("msg", msg);
			jsonResult = Json.Encode(result);
			action.setAjaxOutData(new ByteArrayInputStream(jsonResult.getBytes("utf-8")));
			return;
		}

		boolean flag = true;
		Session session = manageServ.getCommonServ1().getCommonDao().getSessionFactory().openSession();
		Transaction tx = session.beginTransaction();

		try {

			for (int i = 0; i < dataList.size(); i++) {

				Map dataMap = dataList.get(i);

				String cityType = CommonManage.toNotNullString(dataMap.get("cityType"));
				String cost = CommonManage.toNotNullString(dataMap.get("cost"));
//						String startDate = CommonManage.toNotNullString(dataarray.get("startDate"));
//						String endDate = CommonManage.toNotNullString(dataarray.get("endDate"));

				SalesCostStandard SalesCostStandard = new SalesCostStandard();
				SalesCostStandard.setCityType(cityType);
				SalesCostStandard.setCost(cost);
//						SalesCostStandard.setStartDate(startDate);
//						SalesCostStandard.setEndDate(endDate);

				if (CommonManage.toNotNullString(dataMap.get("startDate")).equals("")) {
					SalesCostStandard.setStartDate(DateUtils.convertStringToTimestamp("2000-01-01", DateUtils.FORMAT2));
				} else {
					SalesCostStandard.setStartDate(
							DateUtils.convertStringToTimestamp(CommonManage.toNotNullString(dataMap.get("startDate")) + "", DateUtils.FORMAT2));
				}

				if (CommonManage.toNotNullString(dataMap.get("endDate")).equals("")) {
					SalesCostStandard.setEndDate(DateUtils.convertStringToTimestamp("9999-01-01", DateUtils.FORMAT2));
				} else {
					SalesCostStandard.setEndDate(
							DateUtils.convertStringToTimestamp(CommonManage.toNotNullString(dataMap.get("endDate")) + "", DateUtils.FORMAT2));
				}

				session.save(SalesCostStandard);
				
				

			}
			
			session.flush();
			tx.commit();
			
			result.put("flag", true);
//			result.put("msg", e.getMessage());
			action.setAjaxOutData(new ByteArrayInputStream(Json.Encode(result).getBytes("utf-8")));
			return;
			
			
		} catch (Exception e) {
			tx.rollback();
			e.printStackTrace();
			// --------
			result.put("flag", false);
			result.put("msg", e.getMessage());
			action.setAjaxOutData(new ByteArrayInputStream(Json.Encode(result).getBytes("utf-8")));
			return;
		} finally {
			session.close();
		}

	}







/**
 * 从exportOrderDeatil抽取公共函数用作粘贴板内容的复制粘贴
 * 
 * @param str{String}
 *            clipboardData.getData("Text")
 * @return Array 1000行以内的excel数组
 * @author Leo
 * @since 201904
 */

var excelData;
var arrMaxLength = 1000;

$(function() {
	var body = $(document.body);
	if (body) {
		body.bind({
			paste : function(e) {
				var clipboardData = window.clipboardData; // IE
				if (!clipboardData) { // chrome
					clipboardData = e.originalEvent.clipboardData
				}
				if (!(clipboardData && clipboardData.items)) {
					return;
				}
				excelData = clipboardData.getData("Text");
				var eData = getExcelData();
				// 如果没有这个方法就报错
				try {
					if (excelData instanceof Array) {
						if(eData && eData.length > 0) {
							window.pasttoGrid(eData);
							
						}
					} else {
						alert(eData);
					}
				} catch (e) {
					console.log(e);
				}
			}
		});
	} else {
		console.log("缺少body元素,请重写。");
	}
});

/**
 * 
 * @returns 1000行以内的二维数组
 */
function getExcelData() {
	var isIE = !compatibleBrowser();
	if (isIE) {
		excelData = clipboardData.getData('text');
	}

	if (excelData) {
		var newArr = [];

		if (typeof excelData === "string") {
			newArr = excelData.split("\n");
			if (newArr.length < 0) {
				return "复制内容空白!";
			}

			for (i = 0; i < newArr.length; i++) {
				var item = newArr[i];
				newArr[i] = item.replace(/\"/g, "").replace(/(^\s*)/g, "")
						.replace(/(\s*$)/g, "");
			}
			excelData = newArr.slice(0, newArr.length - 1);
		}

		if (excelData instanceof Array) {
			if (excelData.length > arrMaxLength) {
				var newArr = excelData.slice(0, arrMaxLength);
				excelData = newArr;
			}
		}

		return excelData;
	} else {
		if (isIE) {
			return "没有获取到内容!";
		} else {
			return "非IE浏览器请先按键盘“Ctrl + V”";
		}
	}
}

function getFirstColumnArray(arr) {
	var newArr = [];
	if (arr) {
		newArr = new Array(arr.length);
		for (i = 0; i < arr.length; i++) {
			var itemArr = arr[i].split(/\s+/);
			if (itemArr != null && itemArr.length > 0) {
				newArr[i] = itemArr[0];
			} else {
				newArr[i] = "";
			}
		}
	}
	return newArr;
}

function compatibleBrowser() {
	var userAgent = window.navigator.userAgent;
	if (userAgent.indexOf("Chrome") > -1 || userAgent.indexOf("Firefox") > -1
			|| userAgent.indexOf("Opera") > -1) {
		return true;
	} else {
		return false;
	}
}












分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics