JS:
export: function () {
var checkStatus = table.checkStatus('tb-salary'), //lauui.table
data = checkStatus.data;
checkEmployeeSalaryIds = [];
if (data.length >= 1) { //导出选中的数据
for (var i in data) {
checkEmployeeSalaryIds.push(data[i].EmployeeSalaryId);
}
var url = '/Manager/Salary/ExportcheckSaleryData?checkEmployeeSalaryIds=' + checkEmployeeSalaryIds;
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);//get请求,请求地址,是否异步
xhr.responseType = "blob"; // 返回类型blob
xhr.onload = function () {// 请求完成处理函数
if (this.status === 200) {
var blob = this.response;// 获取返回值
console.log(blob);
var a = document.createElement('a');
a.download = '员工薪资档案表.xls';
a.href = window.URL.createObjectURL(blob);
a.click();
}
};
// 发送ajax请求
xhr.send();
//window.location = '/Manager/Salary/ExportcheckSaleryData?checkEmployeeSalaryIds=' + checkEmployeeSalaryIds;
}
else{
layer.open({
title: "导出",
type: 2,
area: ['800px', '600px'],
content: "/Manager/Salary/SalaryExport",
end: function () {
//刷新当前页
$(".layui-laypage-btn")[0].click();
}
});
}
},
SalaryExport页面:
<script type="text/javascript">
$(function () {
layui.use(['laydate'], function () {
var laydate = layui.laydate;
//执行一个laydate实例
laydate.render({
elem: '#salaryDateStart',
type: 'month',
});
laydate.render({
elem: '#salaryDateEnd',
type: 'month',
});
});
setTimeout(InitCustomers, 1500);
$("#save").click(function () {
var salaryDateStart = $("#salaryDateStart").val();
var salaryDateEnd = $("#salaryDateEnd").val();
var customerId = $("#customerId").val();
var childIncluded = $("#childIncluded").get(0).checked == true ? 1 : 0;
$.ajax({
type: 'post',
url: '/Manager/Salary/ExportAllSaleryData?customerId=' + customerId + '&&childIncluded=' + childIncluded + '&&salaryDateStart=' + salaryDateStart + '&&salaryDateEnd=' + salaryDateEnd,
async: false,
success: function (data) {
var list = eval(data);
if (list.length > 0) {
var url = '/Manager/Salary/ExportSaleryData?customerId=' + customerId + '&&childIncluded=' + childIncluded + '&&salaryDateStart=' + salaryDateStart + '&&salaryDateEnd=' + salaryDateEnd;
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);//get请求,请求地址,是否异步
xhr.responseType = "blob"; // 返回类型blob
xhr.onload = function () {// 请求完成处理函数
if (this.status === 200) {
var blob = this.response;// 获取返回值
console.log(blob);
var a = document.createElement('a');
a.download = '员工薪资档案表.xls';
a.href = window.URL.createObjectURL(blob);
a.click();
}
};
// 发送ajax请求
xhr.send();
//window.location = '/Manager/Salary/ExportSaleryData?customerId=' + customerId + '&&childIncluded=' + childIncluded + '&&salaryDateStart=' + salaryDateStart + '&&salaryDateEnd=' + salaryDateEnd;
}
else {
var msgs = "该客户暂无" + salaryDateStart + "-" + salaryDateEnd + "月度数据!";
layer.msg(msgs, { icon: 5, time: 3000 });
}
}
})
});
});
function InitCustomers() {
var options = [{ "valueName": "CustomerId", "textName": "CustomerShort" }];
layerDialog.bindSelect('/Manager/Customer/GetCustomers?', options, ["customerId"], true);
}
</script>
后端c#:
/// <summary>
/// 导出表格数据
/// </summary>
/// <returns></returns>
public ActionResult SalaryExport()
{
return View();
}
/// <summary>
/// 导出选中的数据
/// </summary>
/// <param name="checksalaryIds"></param>
public void ExportcheckSaleryData(string checkEmployeeSalaryIds)
{
var salaryIds = checkEmployeeSalaryIds.Split(',').ToList();
List<SalaryListOutput> SalaryListOutputs = new List<SalaryListOutput>();
foreach (var EmployeeSalaryId in salaryIds)
{
SalaryDetailOutput employeeSalaryInfo = _salaryService.GetEmployeeSalaryInfo(EmployeeSalaryId);
string totalPayAmount, finalPayAmount, preTaxSalary, incomeTax, totalDeduction;
var salaryListOutput = new SalaryListOutput()
{
EmployeeName = employeeSalaryInfo.EmployeeSalary.EmployeeName,
IDCard = employeeSalaryInfo.EmployeeSalary.IDCard,
CustomerShortName = employeeSalaryInfo.EmployeeSalary.CustomerShortName,
EmployeeSalaryId = employeeSalaryInfo.EmployeeSalary.EmployeeSalaryId,
SetType = employeeSalaryInfo.EmployeeSalary.SetType,
SalaryDate = employeeSalaryInfo.EmployeeSalary.SalaryDate,
PayTaxDate = employeeSalaryInfo.EmployeeSalary.PayTaxDate,
};
totalPayAmount = employeeSalaryInfo.Items?.FirstOrDefault(s => s.ItemName.Equals("应发薪资"))?.AccountItemValue;
finalPayAmount = employeeSalaryInfo.Items?.FirstOrDefault(s => s.ItemName.Equals("实发薪资"))?.AccountItemValue;
preTaxSalary = employeeSalaryInfo.Items?.FirstOrDefault(s => s.ItemName.Equals("应税薪资"))?.AccountItemValue;
incomeTax = employeeSalaryInfo.Items?.FirstOrDefault(s => s.ItemName.Equals("个税金额"))?.AccountItemValue;
totalDeduction = employeeSalaryInfo.Items?.FirstOrDefault(s => s.ItemName.Equals("应扣薪资"))?.AccountItemValue;
if (!string.IsNullOrWhiteSpace(totalPayAmount))
{
salaryListOutput.TotalPayAmount = decimal.Parse(totalPayAmount);
}
if (!string.IsNullOrWhiteSpace(finalPayAmount))
{
salaryListOutput.FinalPayAmount = decimal.Parse(finalPayAmount);
}
if (!string.IsNullOrWhiteSpace(preTaxSalary))
{
salaryListOutput.PreTaxSalary = decimal.Parse(preTaxSalary);
}
if (!string.IsNullOrWhiteSpace(incomeTax))
{
salaryListOutput.IncomeTax = decimal.Parse(incomeTax);
}
if (!string.IsNullOrWhiteSpace(totalDeduction))
{
salaryListOutput.TotalDeduction = decimal.Parse(totalDeduction);
}
SalaryListOutputs.Add(salaryListOutput);
}
string templatePath = AppSetting.EmploySalaryInfoExportTemplate;
DataTable dt = new DataTable("EmploySalaryInfoExportTable");
dt.Columns.Add(new DataColumn("CustomerShortName", typeof(string)));//0
dt.Columns.Add(new DataColumn("EmployeeName", typeof(string)));//1
dt.Columns.Add(new DataColumn("IDCard", typeof(string)));//2
dt.Columns.Add(new DataColumn("SalaryDate", typeof(string)));//3
dt.Columns.Add(new DataColumn("SetType", typeof(string)));//4
dt.Columns.Add(new DataColumn("TotalPayAmount", typeof(decimal)));//5
dt.Columns.Add(new DataColumn("IncomeTax ", typeof(decimal)));//6
dt.Columns.Add(new DataColumn("TotalDeduction", typeof(decimal)));//7
dt.Columns.Add(new DataColumn("FinalPayAmount", typeof(decimal)));//8
foreach (SalaryListOutput salaryListOutput in SalaryListOutputs)
{
DataRow dr = dt.NewRow();
dr[0] = salaryListOutput.CustomerShortName;
dr[1] = salaryListOutput.EmployeeName;
dr[2] = salaryListOutput.IDCard;
dr[3] = salaryListOutput.SalaryDate;
dr[4] = salaryListOutput.SetType;
dr[5] = salaryListOutput.TotalPayAmount;
dr[6] = salaryListOutput.IncomeTax;
dr[7] = salaryListOutput.TotalDeduction;
dr[8] = salaryListOutput.FinalPayAmount;
dt.Rows.Add(dr);
}
string fileName = string.Format("员工薪资档案表{0}-{1}-{2}", DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
Util.RenderToBrowser(templatePath, dt, 2, fileName, Response, Request);
}
/// <summary>
/// 直接点击【导出】按钮
/// </summary>
public void ExportSaleryData()
{
int childIncluded = Convert.ToInt32(Request["childIncluded"]);
string customerId = string.IsNullOrEmpty(Request["customerId"]) ? "" : Request["customerId"];
string salaryDateStart = string.IsNullOrEmpty(Request["salaryDateStart"]) ? null : Request["salaryDateStart"];
string salaryDateEnd = string.IsNullOrEmpty(Request["salaryDateEnd"]) ? null : Request["salaryDateEnd"];//得到js传来的导出选项
string templatePath = AppSetting.EmploySalaryInfoExportTemplate;
var salaryDataList = _salaryService.GetExportData(customerId, childIncluded, salaryDateStart, salaryDateEnd);//获取数据
DataTable dt = new DataTable("EmploySalaryInfoExportTable");
dt.Columns.Add(new DataColumn("CustomerShortName", typeof(string)));//0
dt.Columns.Add(new DataColumn("EmployeeName", typeof(string)));//1
dt.Columns.Add(new DataColumn("IDCard", typeof(string)));//2
dt.Columns.Add(new DataColumn("SalaryDate", typeof(string)));//3
dt.Columns.Add(new DataColumn("SetType", typeof(string)));//4
dt.Columns.Add(new DataColumn("TotalPayAmount", typeof(decimal)));//5
dt.Columns.Add(new DataColumn("IncomeTax ", typeof(decimal)));//6
dt.Columns.Add(new DataColumn("TotalDeduction", typeof(decimal)));//7
dt.Columns.Add(new DataColumn("FinalPayAmount", typeof(decimal)));//8
foreach (SalaryListOutput salaryListOutput in salaryDataList)
{
DataRow dr = dt.NewRow();
dr[0] = salaryListOutput.CustomerShortName;
dr[1] = salaryListOutput.EmployeeName;
dr[2] = salaryListOutput.IDCard;
dr[3] = salaryListOutput.SalaryDate;
dr[4] = salaryListOutput.SetType;
dr[5] = salaryListOutput.TotalPayAmount;
dr[6] = salaryListOutput.IncomeTax;
dr[7] = salaryListOutput.TotalDeduction;
dr[8] = salaryListOutput.FinalPayAmount;
dt.Rows.Add(dr);
}
string fileName = string.Format("员工薪资档案表{0}-{1}-{2}", DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
Util.RenderToBrowser(templatePath, dt, 2, fileName, Response, Request);
}
//返回加载的数据
public JsonResult ExportAllSaleryData()
{
int childIncluded = Convert.ToInt32(Request["childIncluded"]);
string customerId = string.IsNullOrEmpty(Request["customerId"]) ? "" : Request["customerId"];
string salaryDateStart = string.IsNullOrEmpty(Request["salaryDateStart"]) ? null : Request["salaryDateStart"];
string salaryDateEnd = string.IsNullOrEmpty(Request["salaryDateEnd"]) ? null : Request["salaryDateEnd"];//得到js传来的导出选项
string templatePath = AppSetting.EmploySalaryInfoExportTemplate;
var salaryDataList = _salaryService.GetExportData(customerId, childIncluded, salaryDateStart, salaryDateEnd);//获取数据
DataTable dt = new DataTable("EmploySalaryInfoExportTable");
dt.Columns.Add(new DataColumn("CustomerShortName", typeof(string)));//0
dt.Columns.Add(new DataColumn("EmployeeName", typeof(string)));//1
dt.Columns.Add(new DataColumn("IDCard", typeof(string)));//2
dt.Columns.Add(new DataColumn("SalaryDate", typeof(string)));//3
dt.Columns.Add(new DataColumn("SetType", typeof(string)));//4
dt.Columns.Add(new DataColumn("TotalPayAmount", typeof(decimal)));//5
dt.Columns.Add(new DataColumn("IncomeTax ", typeof(decimal)));//6
dt.Columns.Add(new DataColumn("TotalDeduction", typeof(decimal)));//7
dt.Columns.Add(new DataColumn("FinalPayAmount", typeof(decimal)));//8
foreach (SalaryListOutput salaryListOutput in salaryDataList)
{
DataRow dr = dt.NewRow();
dr[0] = salaryListOutput.CustomerShortName;
dr[1] = salaryListOutput.EmployeeName;
dr[2] = salaryListOutput.IDCard;
dr[3] = salaryListOutput.SalaryDate;
dr[4] = salaryListOutput.SetType;
dr[5] = salaryListOutput.TotalPayAmount;
dr[6] = salaryListOutput.IncomeTax;
dr[7] = salaryListOutput.TotalDeduction;
dr[8] = salaryListOutput.FinalPayAmount;
dt.Rows.Add(dr);
}
//JavaScriptSerializer jss = new JavaScriptSerializer();
System.Collections.ArrayList dic = new System.Collections.ArrayList();
foreach (DataRow dr in dt.Rows)
{
Dictionary<string, object> drow = new Dictionary<string, object>();
foreach (DataColumn dc in dt.Columns)
{
drow.Add(dc.ColumnName, dr[dc.ColumnName]);
}
dic.Add(drow);
}
return Json(JsonConverter.Serialize(dic));
}