123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- import axios from "axios";
- import FileSaver from "file-saver";
- import { getToken } from "@/utils/auth";
- /**
- * 删除对象中的空值
- * @param {object} obj
- * @returns {Object}
- */
- export function deleteEmptyObj(obj) {
- const newObj = obj;
- for (var key in newObj) {
- if (
- newObj[key] === "" ||
- newObj[key] === null ||
- newObj[key] === undefined
- ) {
- delete newObj[key];
- }
- }
- return newObj;
- }
- /**
- *
- * @param {*} array 要查询的数组
- * @param {*} attr 要查询的字段
- * @param {*} val 要查询的字段值
- * @returns
- */
- export function findElem(array, attr, val) {
- for (var i = 0; i < array.length; i++) {
- if (array[i][attr] == val) {
- return i; // 返回当前索引值
- }
- }
- return -1;
- }
- /**
- * 生成带参数的链接
- * @param {String} url
- * @param {Object} params
- * @returns
- */
- export function createParamsUrl(url, params) {
- if (typeof url === "undefined" || url == null || url == "") {
- return "";
- }
- if (
- typeof params === "undefined" ||
- params == null ||
- typeof params !== "object"
- ) {
- return "";
- }
- url += url.indexOf("?") != -1 ? "" : "?";
- for (var k in params) {
- url += (url.indexOf("=") != -1 ? "&" : "") + k + "=" + encodeURI(params[k]);
- }
- return url;
- }
- /**
- * 导出功能
- * @param {*} obj
- * @returns
- */
- export function downloadFiles(url, params = {}) {
- params.token = getToken();
- const newParams = deleteEmptyObj(params);
- const newUrl = createParamsUrl(url, newParams);
- window.open(process.env.VUE_APP_BASE_API + newUrl);
- }
- /**
- * 导入功能
- * @param {*} url
- * @param {*} formData
- */
- export async function handleImport(url, formData) {
- const Result = await new Promise((resolve, reject) => {
- axios
- .post(
- process.env.VUE_APP_BASE_API + url,
- formData,
- {
- headers: {
- "Content-Type": "multipart/form-data",
- "x-token": getToken(),
- },
- }
- )
- .then((res) => {
- resolve(res.data);
- })
- .catch((err) => {
- reject(err);
- });
- });
- return Result;
- }
- /**
- * 导入有返回二进制文件
- * @param {*} url
- * @param {*} formData
- */
- export async function handleImportTwo(url, formData) {
- const Result = await new Promise((resolve, reject) => {
- axios
- .post(
- process.env.VUE_APP_BASE_API + url,
- formData,
- {
- responseType: "arraybuffer",
- headers: {
- "Content-Type": "multipart/form-data",
- "x-token": getToken(),
- },
- }
- )
- .then((res) => {
- resolve(res.data);
- })
- .catch((err) => {
- reject(err);
- });
- });
- return Result;
- }
- /**
- * 重置时间格式
- * @param {*} date
- * @param {*} type
- */
- export function resetDateFormat(date, type) {
- let newDate = "";
- if (!date) {
- return "";
- }
- // type=1: yyyy-MM-dd 转 yyyy-MM-dd HH:mm:ss
- if (type == 1 || !type) {
- newDate = date + " 00:00:00";
- }
- }
- /**
- * 若文档中已有命名dateFormat,可用dFormat()调用
- * 年(Y) 可用1-4个占位符
- * 月(m)、日(d)、小时(H)、分(M)、秒(S) 可用1-2个占位符
- * 星期(W) 可用1-3个占位符
- * 季度(q为阿拉伯数字,Q为中文数字)可用1或4个占位符
- *
- * let date = new Date()
- * dateFormat("YYYY-mm-dd HH:MM:SS", date) 2020-02-09 14:04:23
- * dateFormat("YYYY-mm-dd HH:MM:SS Q", date) 2020-02-09 14:09:03 一
- * dateFormat("YYYY-mm-dd HH:MM:SS WWW", date) 2020-02-09 14:45:12 星期日
- * dateFormat("YYYY-mm-dd HH:MM:SS QQQQ", date) 2020-02-09 14:09:36 第一季度
- * dateFormat("YYYY-mm-dd HH:MM:SS WWW QQQQ", date) 2020-02-09 14:46:12 星期日 第一季度
- */
- export function dateFormat(format, date) {
- const we = date.getDay(); // 星期
- const qut = Math.floor((date.getMonth() + 3) / 3).toString(); // 季度
- const opt = {
- "Y+": date.getFullYear().toString(), // 年
- "m+": (date.getMonth() + 1).toString(), // 月(月份从0开始,要+1)
- "d+": date.getDate().toString(), // 日
- "H+": date.getHours().toString(), // 时
- "M+": date.getMinutes().toString(), // 分
- "S+": date.getSeconds().toString(), // 秒
- "q+": qut, // 季度
- };
- const week = {
- // 中文数字 (星期)
- 0: "日",
- 1: "一",
- 2: "二",
- 3: "三",
- 4: "四",
- 5: "五",
- 6: "六",
- };
- const quarter = {
- // 中文数字(季度)
- 1: "一",
- 2: "二",
- 3: "三",
- 4: "四",
- };
- if (/(W+)/.test(format)) {
- format = format.replace(
- RegExp.$1,
- RegExp.$1.length > 1
- ? RegExp.$1.length > 2
- ? "星期" + week[we]
- : "周" + week[we]
- : week[we]
- );
- }
- if (/(Q+)/.test(format)) {
- // 输入一个Q,只输出一个中文数字,输入4个Q,则拼接上字符串
- format = format.replace(
- RegExp.$1,
- RegExp.$1.length == 4 ? "第" + quarter[qut] + "季度" : quarter[qut]
- );
- }
- for (const k in opt) {
- const r = new RegExp("(" + k + ")").exec(format);
- if (r) {
- // 若输入的长度不为1,则前面补零
- format = format.replace(
- r[1],
- RegExp.$1.length == 1 ? opt[k] : opt[k].padStart(RegExp.$1.length, "0")
- );
- }
- }
- return format;
- }
- /**
- * @param url {string} pdf地址
- * @param fileName {string} pdf名称
- */
- export function downloadPdf(url, fileName) {
- axios({
- method: "get",
- url,
- responseType: "blob",
- }).then((res) => {
- const file = new Blob([res.data], {
- type: "application/pdf",
- });
- FileSaver(file, fileName);
- });
- }
|