/* * @Author: daidai * @Date: 2021-12-06 15:53:24 * @LastEditors: Please set LastEditors * @LastEditTime: 2022-04-22 09:31:24 * @FilePath: \web-pc\src\lib\currency.js */ import router from '@/router' import { isString, isHtmlElement } from './types' import UtilVar from "@/config/UtilVar"; export const returnWeek = () => { var week = new Date().getDay(); switch (week) { case 1: return '周一' case 2: return '周二' case 3: return '周三' case 4: return '周四' case 5: return '周五' case 6: return '周六' case 0: return '周日' } } /** * 获取uuid */ export function getUUID() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => { return (c === 'x' ? (Math.random() * 16 | 0) : ('r&0x3' | '0x8')).toString(16) }) } /** * 是否有权限 * @param {*} key */ export function isAuth(key) { // console.log("key",key,sessionStorage.getItem('permissions')) return JSON.parse(sessionStorage.getItem('permissions') || '[]').indexOf(key) !== -1 || false } export const rowClassName = ({ row, rowIndex }) => { if (rowIndex % 2 == 0) { return 'lightColour'; } else { return 'DarkColor'; } } export const getToken = () => { return localStorage.getItem("token"); } //跳转当前页面并传参 export const currentQuery = (param) => { let newParam = { ...param } for (let i in newParam) { if (newParam[i] === "") { delete newParam[i] } } // console.log(newParam) router.push({ path: router.currentRoute.path, query: newParam }) } /** * 树形数据转换 * @param {*} data * @param {*} id * @param {*} pid * @param {*} order */ export function treeDataTranslate(data, id, pid, order) { // console.log(Array.isArray(data)) if (data == null || !Array.isArray(data)) { return []; } if (order) { data.sort(function (a, b) { return a[order] - b[order]; }) } // console.log(data) var res = [] var temp = {} for (var i = 0; i < data.length; i++) { temp[data[i][id]] = data[i] } for (var k = 0; k < data.length; k++) { if (temp[data[k][pid]] && data[k][id] !== data[k][pid]) { if (!temp[data[k][pid]]['subs']) { temp[data[k][pid]]['subs'] = [] } if (!temp[data[k][pid]]['_level']) { temp[data[k][pid]]['_level'] = 1 } data[k]['_level'] = temp[data[k][pid]]._level + 1 temp[data[k][pid]]['subs'].push(data[k]) } else { res.push(data[k]) } } // console.log(outurls) // console.log(res) return res } //带了一个 margin-left export const dragss = (e, marginleft) => { let odiv = e.currentTarget.parentElement; let disX = e.clientX - odiv.offsetLeft; let disY = e.clientY - odiv.offsetTop; document.onmousemove = (e) => { odiv.style.left = e.clientX - disX + marginleft + 'px'; odiv.style.top = e.clientY - disY + 'px'; return false; }; document.onmouseup = (e) => { document.onmousemove = null; document.onmouseup = null; }; return false; } //转base64 export const turnStr = (data) => { return window.btoa(window.encodeURI(JSON.stringify(data))); } // 验证只能输入数字和小数,小数且只能输入2位,第一位不能输入小数点 // .replace(/[^\d.]/g, '') // .replace(/\.{2,}/g, '.') // .replace('.', '$#$') // .replace(/\./g, '') // .replace('$#$', '.') // .replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3') // .replace(/^\./g, '') /** * 清除登录信息 */ export function clearLoginInfo() { router.options.isAddDynamicMenuRoutes = false; localStorage.removeItem('token') sessionStorage.removeItem("menuList") sessionStorage.removeItem("permissions") } //对象拼成路径传参 export const convertObj = (data) => { var _result = []; for (var key in data) { var value = data[key]; if (value.constructor == Array) { value.forEach(function (_value) { _result.push(key + "=" + _value); }); } else { _result.push(key + '=' + value); } } return _result.join('&'); } //判断浏览器 function getExplorer() { var explorer = window.navigator.userAgent; if (explorer.indexOf('MSIE') >= 0) { return 'ie'; // ie } else if (explorer.indexOf('Firefox') >= 0) { return 'Firefox'; // firefox } else if (explorer.indexOf('Chrome') >= 0) { return 'Chrome'; // Chrome } else if (explorer.indexOf('Opera') >= 0) { return 'Opera'; // Opera } else if (explorer.indexOf('Safari') >= 0) { return 'Safari'; // Safari } else if (!!explorer.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)) { return 'IOS'; } else if (u.indexOf('Android') > -1 || u.indexOf('Adr') > -1) { return 'Android'; } else { return explorer } }; //导出文档流 export const exportFile = (data, name) => { return new Promise((resolve, reject) => { let types = getExplorer() if (types == 'IOS') { resolve({ success: false, msg: "请使用设备自带浏览器导出!" }) return } if (data.type && data.type.indexOf('application/vnd.ms-excel') >= 0) { // console.log(data) try { let blob = new Blob([data], { type:data.type|| 'application/vnd.ms-excel;charset=UTF-8' }) if (window.navigator && window.navigator.msSaveOrOpenBlob) { window.navigator.msSaveOrOpenBlob(blob, name); } else { const link = document.createElement('a') link.style.display = 'none'; link.href = URL.createObjectURL(blob); if (types == 'Safari') { link.download = `${name || "未命名"}`; } else { link.download = `${name || "未命名"}.xlsx`; } // Safari thinks _blank anchor are pop ups. We only want to set _blank // target if the browser does not support the HTML5 download attribute. // This allows you to download files in desktop safari if pop up blocking // is enabled. if (typeof link.download === 'unde fined') { tempLink.setAttribute('target', '_blank'); } document.body.appendChild(link) link.click() // Fixes "webkit blob resource error 1" let timer = setTimeout(function () { document.body.removeChild(link) window.URL.revokeObjectURL(link.href); clearTimeout(timer) }, 200) } resolve({ success: true, msg: "导出成功" }) } catch (error) { resolve({ success: false, msg: "未知异常,请联系管理员!" }) } } else { // console.log(data) readFile(data).then(res => { resolve(res) }).catch(err => { resolve({ success: false, msg: "未知异常,请联系管理员!" }) }) } }) } //阅读 blod export const readFile = (data) => { return new Promise((resole, reject) => { if (Object.prototype.toString.call(data)==='[object Blob]') { let reader = new FileReader() reader.readAsText(data, 'utf-8') reader.onload = (e) => { console.log('--导出--', JSON.parse(reader.result)) let result = JSON.parse(reader.result) if (result.code == UtilVar.code) { router.push("/login") } resole(result) } } else { resole(data) } // reader.readAsText(data) }) } //element 时间选择 export const shortcuts = [{ text: '最近一周', onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); picker.$emit('pick', [start, end]); } }, { text: '最近一个月', onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); picker.$emit('pick', [start, end]); } }, { text: '最近三个月', onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 89); picker.$emit('pick', [start, end]); } }] export const pickerOptions = { shortcuts: shortcuts } /** * 清除相同 * @param {*} origin * @param {*} target */ export const ArrayCleanRepeat = (origin, target) => { if (target) origin = origin.concat(target); const result = [] const tagObj = {} for (const i of origin) { if (!tagObj[i]) { result.push(i) tagObj[i] = 1 } } return result } /** * @description: * @param {file:Object} 文件 * @return {*} */ export const beforeUpoads = (file) => { // console.log(file) var testmsg = file.name.substring(file.name.lastIndexOf('.') + 1) if ( testmsg != 'png' && testmsg != 'jpg' && testmsg != 'jpeg' && testmsg != 'webp' ) { // testmsg != 'gif' && return { success: false, msg: "上传图片格式不正确!" } } const if10M = file.size / 1024 / 1024 < 20 if (!if10M) { return { success: false, msg: "上传图片大小不能超过20M!" } } // console.log("上传前",file, this.filelist) return { success: true } } //复制文字 export const copy = (value) => { let transfer = document.createElement('input') document.body.appendChild(transfer) transfer.value = value // 这里表示想要复制的内容 transfer.focus() transfer.select() if (document.execCommand('copy')) { document.execCommand('copy') } transfer.blur() document.body.removeChild(transfer) //选中文字 // let range = document.createRange() // let referenceNode = this.$refs.xy // range.selectNodeContents(referenceNode) // var selection = window.getSelection() // selection.removeAllRanges() // selection.addRange(range) } // 取出两个数组的不同元素 export const getArrDifference = (arr1, arr2) => { return arr1.concat(arr2).filter(function (v, i, arr) { return arr.indexOf(v) === arr.lastIndexOf(v); }); } /** * 表格最大高度 * @param {ElementDom} dom * @param {Boolean} isPaging 是否拥有分页 false 没有 || true 有 默认有 * @returns */ export const tableHeight = (dom,isPaging=true) => { //定位父级到文档高度 if (isString(dom)) { dom = document.querySelector(dom) // if (dom) { // return window.innerHeight - top // } } if (isHtmlElement(dom)) { var parent = dom.offsetParent; var top = dom.offsetTop if(isPaging){ top= top+ 63 + 4 }else{ top= top+ 16 } while (parent != null) { top += parent.offsetTop; parent = parent.offsetParent; }; return window.innerHeight - top } return null } //