js代码
import ElementUI from 'element-ui'
import {requestDownload} from '@/api/request.js'
/*
* 时间戳转换成日期
* */
export const timestampToTime = function (timestamp) {
let date = new Date(timestamp)
let Y = date.getFullYear() + '-'
let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
let D = date.getDate() + ''
D.length == 1 ? D = '0' + D : D
let replaceDate = Y + M + D
return replaceDate
}
/*
* 时间戳转换成日期+时间
* */
export const timestampToTimeHMS = function (timestamp) {
let date = new Date(timestamp * 1000)
let Y = date.getFullYear() + '-'
let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
let D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' '
let h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'
let m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':'
let s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
let replaceDate = Y + M + D + h + m + s
return replaceDate
}
/*
* 时间戳转换成日期+时间
* */
export const timestampToTimeHM = function (timestamp) {
let date = new Date(timestamp * 1000)
let Y = date.getFullYear() + '-'
let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
let D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' '
let h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'
let m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes())
let replaceDate = Y + M + D + h + m
return replaceDate
}
/*
* 时间戳转换成日期+时间
* */
export const timestampToTimeHMS_C = function (timestamp) {
let date = new Date(timestamp)
let Y = date.getFullYear() + '-'
let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
let D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' '
let h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'
let m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':'
let s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
let replaceDate = Y + M + D + h + m + s
return replaceDate
}
// 时分秒转为时间戳
export function countDown (time) {
let s = 0
let hour = time.split(':')[0]
let min = time.split(':')[1]
let sec = time.split(':')[2]
s = Number(hour * 3600) + Number(min * 60) + Number(sec)
return s
}
// 时间戳--转为时分秒
export function formatDuring (mss) {
let time = new Date(new Date('2019-1-1 00:00:00').getTime() + mss * 1000)
let hours = time.getHours()
let minutes = time.getMinutes()
let seconds = time.getSeconds()
hours = hours < 10 ? '0' + hours : hours
minutes = minutes < 10 ? '0' + minutes : minutes
seconds = seconds < 10 ? '0' + seconds : seconds
return hours + ':' + minutes + ':' + seconds
}
/*
计算时间
*/
export const GetDateStr = function (type, AddDayCount, monthCount) {
let dd = new Date()
dd.setDate(dd.getDate() + AddDayCount)// 获取AddDayCount天后的日期
let y = dd.getFullYear()
let m = (dd.getMonth() + 1) < 10 ? '0' + (dd.getMonth() + 1) : (dd.getMonth() + 1)// 获取当前月份的日期,不足10补0
let d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate()// 获取当前几号,不足10补0
let h = dd.getHours() < 10 ? '0' + dd.getHours() : dd.getHours()/// /获取当前时间点,不足10补0
let min = dd.getMinutes() < 10 ? '0' + dd.getMinutes() : dd.getMinutes()/// /获取当前分钟值,不足10补0
let s = dd.getSeconds() < 10 ? '0' + dd.getSeconds() : dd.getSeconds()/// /获取当前秒值,不足10补0
let time = ''
// 计算月份
if (monthCount) {
/* if(monthCount> 0) {
if(monthCount >= dd.getMonth()+1){
let month = dd.getMonth()+1;
let yearCount = (month+12 - monthCount)%12 + 1;
console.log(yearCount);
month = month+12- yearCount*12 - monthCount;
m = month<10?"0"+month:month
// console.log(m);
y= y -yearCount;
}else{
m = m - monthCount;
}
}else{
console.log('日期格式错误')
} */
let mm = dd.getMonth() + 1
let month = (mm + monthCount) % 12
console.log(month)
let year = parseInt((mm + monthCount) / 12)
console.log(year)
if (month > 0) {
y = y + year
m = month
} else {
y = y + year - 1
m = month + 12
}
}
// 精确到天
if (type == 1) {
time = y + '-' + m + '-' + d + ' ' + '00' + ':' + '00' + ':' + '00'
}
// 精确到秒
else if (type == 2) {
time = y + '-' + m + '-' + d + ' ' + h + ':' + min + ':' + s
}
return time
}
/* 秒转天时分秒 */
export function timeStamp (second_time) {
let time = parseInt(second_time);
if( parseInt(second_time )> 60){
let second = parseInt(second_time) % 60;
let min = parseInt(second_time / 60);
time = min + ":" + second;
if( min > 60 ){
min = parseInt(second_time / 60) % 60;
let hour = parseInt( parseInt(second_time / 60) /60 );
time = hour + ":" + min + ":" + second;
if( hour > 24 ){
hour = parseInt( parseInt(second_time / 60) /60 ) % 24;
let day = parseInt( parseInt( parseInt(second_time / 60) /60 ) / 24 );
time = day + "天, " + hour + ":" + min + ":" + second;
}
}
}
return time;
}
// 下载文件
let _this = this
/*
* fileType -文件类型 默认 vnd.ms-excel,x-java-jnlp-file(kvm)
*/
export const getDownloadFile = function (url, data, fileType) {
if (!fileType) {
fileType = 'vnd.ms-excel'
}
requestDownload(url, data)
.then((response) => {
console.log(data)
if (decodeURIComponent(response.headers['content-disposition']) === 'undefined') {
ElementUI.Message({
message: '该文件为空',
type: 'warning',
duration: 2000
})
return
}
let name = decodeURIComponent(response.headers['content-disposition'].split('=')[1])
let blob = new Blob([response.data], {type: 'application/' + fileType})
if (window.navigator.msSaveOrOpenBlob) {
// 兼容ie浏览器
window.navigator.msSaveBlob(blob, name)
} else {
let blob = new Blob([response.data], {type: 'application/' + fileType})
let downloadElement = document.createElement('a')
let href = window.URL.createObjectURL(blob) // 创建下载的链接
downloadElement.href = href
downloadElement.download = name.replace(/\"/g, '') // 下载后文件名
document.body.appendChild(downloadElement)
downloadElement.click() // 点击下载
document.body.removeChild(downloadElement) // 下载完成移除元素
window.URL.revokeObjectURL(href) // 释放掉blob对象
}
})
}
请求方法:
export function requestDownload (url, data = {}, method = 'post', responseType = 'blob') {
return new Promise((resolve, reject) => {
let options = {
url: url,
method,
responseType
}
if (method === 'get') {
options.params = {...data}
} else {
options.data = data
}
axios(options)
.then((res) => {
resolve(res)
})
.catch((error) => {
reject(error)
})
})
}
后端方法
@RequestMapping(value="/exportUserPage.action")
public void exportUserPage( HttpServletResponse response,HttpServletRequest request){
Map parameterMap = null;
try {
// 对应前端的编码,在这里进行解码,并解析json为Map
String value = URLDecoder.decode(request.getParameter("parameterMap"), "UTF-8");
parameterMap = (Map)JSON.parse(value);
System.out.println("value");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Map<String, String> queryCondition = parameterToQueryCondition(parameterMap);
// 1 获取当前页数
Object pageObj = parameterMap.get(GeneralConstants.PAGE_NOW);
Integer pageNow = PageUtil.getPage(pageObj);
// 2 获取实际数据
int start = (pageNow - 1) * PAGE_SIZE;//开始条数
int end = PAGE_SIZE;
List<Map<String, Object>> list = userFilterService.listDataWithPage(start,end,queryCondition);
// 3 生成excel
String []title = {"UID","姓名","学历","姓别","求职状态","求职期望","是否有boss身份","期望工作地区","工作年限","工作经历","教育经历"};
HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("SheetName",title,list,null);
// 4 响应到客户端,弹出下载提示框
try {
this.setResponseHeader(response, "user"+DateUtil.getCurrentDate()+".xls");
OutputStream os = response.getOutputStream();
wb.write(os);
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
logger.error("excel导出错误:"+e);
}
return ;
}
/**
* 功能描述: 发送响应流方法
*
* @param
* @return
* @auther mazhen
* @date 2018/12/11 下午2:17
*/
public void setResponseHeader(HttpServletResponse response, String fileName) {
try {
try {
fileName = new String(fileName.getBytes(),"ISO8859-1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
logger.error("excel导出错误:"+e);
}
response.setContentType("application/octet-stream;charset=ISO8859-1");
response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache");
} catch (Exception ex) {
ex.printStackTrace();
logger.error("excel导出错误:"+ex);
}
}