0
点赞
收藏
分享

微信扫一扫

element时间限制-axios封装-日期格式化等

IT影子 2022-01-21 阅读 65

// 日期格式化
export function parseTime(time, pattern) {
	if (arguments.length === 0 || !time) {
		return null
	}
	const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
	let date
	if (typeof time === 'object') {
		date = time
	} else {
		if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
			time = parseInt(time)
		} else if (typeof time === 'string') {
			time = time.replace(new RegExp(/-/gm), '/');
		}
		if ((typeof time === 'number') && (time.toString().length === 10)) {
			time = time * 1000
		}
		date = new Date(time)
	}
	const formatObj = {
		y: date.getFullYear(),
		m: date.getMonth() + 1,
		d: date.getDate(),
		h: date.getHours(),
		i: date.getMinutes(),
		s: date.getSeconds(),
		a: date.getDay()
	}
	const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
		let value = formatObj[key]
		// Note: getDay() returns 0 on Sunday
		if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }
		if (result.length > 0 && value < 10) {
			value = '0' + value
		}
		return value || 0
	})
	return time_str
}
/**
 * 参数处理
 * @param {*} params  参数
 */
export function tansParams(params) {
	let result = ''
	Object.keys(params).forEach((key) => {
		if (!Object.is(params[key], undefined) && !Object.is(params[key], null)) {
			result += encodeURIComponent(key) + '=' + encodeURIComponent(params[key]) + '&'
		}
	})
	return result
}
/**
 * 表格时间格式化
 */
export function formatDate(cellValue) {
	if (cellValue == null || cellValue == "") return "";
	var date = new Date(cellValue)
	var year = date.getFullYear()
	var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
	var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
	var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
	var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
	var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
	return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds
}
export function getTime() {
	/**
	 * @description: 获取当前时间 "2021-09-06 15:20:24"
	 * @param {type} date new Date()
	 * @return {*}
	 */
	let date = new Date()
	const year = date.getFullYear();
	const month = date.getMonth() + 1;
	const day = date.getDate();
	const hour = date.getHours();
	const minute = date.getMinutes();
	const second = date.getSeconds();

	return (
		[year, month, day].map(formatNumber).join("-") +
		" " +
		[hour, minute, second].map(formatNumber).join(":")
	);

}
export function pcickerOptionFac(startKey, endKey, type, timiData) {
	/**
	 * @description: element 时间筛选限制
	 * @param {*} date new Date()
	 * @return {*}
	 */
	return {
		disabledDate: (date) => {
			if (type === "start") {
				if (!this[timiData][endKey]) return false;
				if (typeof this[timiData][endKey] == "number") {
					return date.getTime() >= this[timiData][endKey];
				} else {
					var timi = new Date(this[timiData][endKey]);
					return date.getTime() >= timi;
				}
			}
			if (type === "end") {
				if (!this[timiData][startKey]) return false;
				if (typeof this[timiData][startKey] == "number") {
					return date.getTime() < this[timiData][startKey];
				} else {
					var timi = new Date(this[timiData][startKey]);
					return (
						date.getTime() <
						new Date(timi.getFullYear(), timi.getMonth(), timi.getDate())
					);
				}
			}
		},
	};
}
export function linkage(url, data, type, setDailyAudit) {
	/**
	 * @name: 
	 * @test: test font
	 * @msg: 
	 * @param {String} url 接口
	 * @param {String} type 请求类型
	 * @param {Object} data 请求参数
	*/
	let p = new Promise((resolve, reject) => {
		setDailyAudit(data, url, type).then((data) => {
			if (data.code == 200) {
				resolve(data.data);
			} else {
				reject(data.msg);
			}
		});
	});
	return p;
}
// 方法打开新的窗口,如果是打开外部网站就直接window.open(url)即可
// options: { name: string, query?: any 
export function openNewWindow(options) {
	let editUrl = router.resolve({ name: options.name, query: options.query })
	window.open(editUrl.href, '_blank')
}

export function onTabPag(index, pageNum, pageSize) {
	/**
	 * @name: 序号处理
	 * @test: test font
	 * @msg: 
	 * @param {Number} index
	 * @return {Number} pageNum
	 * @return {Number} pageSize
	   */
	index = index + 1 + (pageNum - 1) * pageSize;
	return index;
}
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
// 创建axios实例
const service = axios.create({
  // axios中请求配置有baseURL选项,表示请求URL公共部分
  baseURL: process.env.VUE_APP_BASE_API,
  // 超时
  timeout: 10000,
  headers: {
    'Cache-Control': 'no-cache'
  }
})

// 签名
import util from "./utilJs"

// request拦截器
service.interceptors.request.use(config => {
  const isToken = (config.headers || {}).isToken === false
  if (getToken() && !isToken) {
    config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
  }
  let signObj = config.params
  let newObj={}
  for(var i in signObj){
    if(signObj[i]==""||signObj[i]){
      newObj[i]=signObj[i]
    }
  }
  config.params = {...config.params, sign: util.makeSign(newObj)}
  return config
}, error => {
  console.log(error)
  Promise.reject(error)
})

// 响应拦截器   Message是element的提醒组件
service.interceptors.response.use(res => {
    const code = res.data.code || 200;
    const message = errorCode[code] || res.data.msg || errorCode['default']
    if (code === 401) {
      MessageBox.confirm(
        '登录状态已过期,您可以继续留在该页面,或者重新登录',
        '系统提示',
        {
          confirmButtonText: '重新登录',
          cancelButtonText: '取消',
          type: 'warning'
        }
      ).then(() => {
        store.dispatch('LogOut').then(() => {
          location.reload() // 为了重新实例化vue-router对象 避免bug
        })
      })
    } else if (code === 500) {
      Message({
        message: message,
        type: 'error'
      })
      return Promise.reject(new Error(message))
    } else if (code !== 200) {
      Notification.error({
        title: message
      })
      return Promise.reject('error')
    } else {
      return res.data
    }
  },
  error => {
    console.log('err' + error)
    Message({
      message: error.message,
      type: 'error',
      duration: 5 * 1000
    })
    return Promise.reject(error)
  }
)
export default service
举报

相关推荐

0 条评论