| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099 |
- import moment from "moment";
- import React, { useRef, useState } from "react";
- import { message, notification, Button } from "antd";
- import { getFineBiToken, getPreFineBiUrl } from "@apis/outer";
- import { getDmpAccessUrl, getValueByDictCode } from "@apis/dict";
- import { getSheetToken } from "@apis/common";
- import { switchPage, getUnionId } from "@apis/common.js";
- import $store from "@store/";
- import utils from "@utils/index";
- import RouterCache from '@utils/routerCache';
- /**
- * 公用事件封装文件
- */
- /**获取url的参数*/
- export function getParams(url = "") {
- url = url || location.href || "";
- let args = {}; // 保存参数数据的对象
- if (url.indexOf("=") === -1) {
- return args;
- }
- let urlSplit = url.split(/[?&#]/g);
- urlSplit.map((item, index) => {
- let str = item.split("=");
- if (str.length > 1) {
- args[str[0]] = decodeURIComponent(str[1]);
- }
- });
- return args;
- }
- export function sortby(prop, rev = true) {
- // prop 属性名
- // rev 升序降序 默认升序
- return function(a, b) {
- var val1 = a[prop];
- var val2 = b[prop];
- return rev ? val1 - val2 : val2 - val1;
- }
- }
- /**下载文件*/
- export function download(param) {
- // 文件类型是否为pdf
- let type = param.slice(-3);
- if (type === "pdf") {
- var saveAs = function (blob, filename) {
- var URL = window.URL || window.webkitURL;
- var type = blob.type;
- var force_saveable_type = "application/octet-stream";
- if (type && type !== force_saveable_type) {
- // 强制下载,而非在浏览器中打开
- var slice = blob.slice || blob.webkitSlice || blob.mozSlice;
- blob = slice.call(blob, 0, blob.size, force_saveable_type);
- }
- var url = URL.createObjectURL(blob);
- var save_link = document.createElementNS(
- "http://www.w3.org/1999/xhtml",
- "a"
- );
- save_link.href = url;
- save_link.download = filename;
- var event = new MouseEvent("click", {
- bubbles: true,
- cancelable: true,
- view: window,
- });
- save_link.dispatchEvent(event);
- URL.revokeObjectURL(url);
- };
- var oReq = new XMLHttpRequest();
- var URLToPDF = param;
- oReq.open("GET", URLToPDF, true);
- oReq.responseType = "blob";
- oReq.onload = function () {
- var file = new Blob([oReq.response], { type: "application/pdf" });
- saveAs(file, "我的策划案.pdf");
- };
- oReq.send();
- return;
- }
- // let elemIF = document.createElement('iframe');
- // elemIF.src = param;
- // elemIF.style.display = "none";
- // document.body.appendChild(elemIF);
- }
- // downLoad('XXXX' ,'test.xlxs')
- /**
- *
- * @param href
- * @param fileName
- * @param isBlock 是否文件流
- */
- export function downLoad2(href, fileName, isBlock = false) {
- let aEle = document.createElement("a"); // 创建a标签
- if (isBlock) {
- let blob = new Blob([href]);
- aEle.download = fileName; // 设置下载文件的文件名
- aEle.href = window.URL.createObjectURL(blob);
- } else {
- aEle.download = fileName; // 设置下载文件的文件名
- aEle.href = href; // content为后台返回的下载地址
- }
- // 绑定点击时间
- document.body.appendChild(aEle);
- aEle.click(); // 设置点击事件
- // 然后移除
- document.body.removeChild(aEle);
- }
- /***
- * 解决js精度问题
- * method **
- * add / subtract / multiply /divide
- * floatObj.add(0.1, 0.2) >> 0.3
- * floatObj.multiply(19.9, 100) >> 1990
- *
- */
- export var FloatObj = (function () {
- function decNum(a) {
- /*获取小数位数*/
- var r = 0;
- a = a.toString();
- if (a.indexOf(".") !== -1) {
- r = a.split(".")[1].length;
- }
- return r;
- }
- function int(a) {
- /*去除小数点并转成数值*/
- return parseInt(a.toString().replace(".", ""));
- }
- function calc(a, b, type) {
- //加减乘除
- var r,
- da = decNum(a),
- db = decNum(b),
- dsum = da + db,
- dmin = Math.min(da, db),
- dmax = Math.max(da, db);
- dsum += dmax - dmin;
- dsum = Math.pow(10, dsum);
- dmax = Math.pow(10, dmax);
- a = int(a);
- b = int(b);
- if (da > db) {
- b *= Math.pow(10, da - db);
- } else {
- a *= Math.pow(10, db - da);
- }
- switch (type) {
- case "add":
- r = (a + b) / dmax;
- break;
- case "subtract":
- r = (a - b) / dmax;
- break;
- case "multiply":
- r = (a * b) / dsum;
- break;
- case "divide":
- r = a / b;
- break;
- case "mod":
- r = (multiply(a, dmax) % multiply(b, dmax)) / dmax;
- break;
- }
- return r;
- }
- // 加减乘除的四个接口
- // 加
- function add(a, b, type) {
- return calc(a, b, "add");
- }
- // 减
- function subtract(a, b, type) {
- return calc(a, b, "subtract");
- }
- // 乘
- function multiply(a, b, type) {
- return calc(a, b, "multiply");
- }
- // 除
- function divide(a, b, type) {
- return calc(a, b, "divide");
- }
- // 取余
- function mod(a, b, type) {
- return calc(a, b, "mod");
- }
- // exports
- return {
- add: add,
- subtract: subtract,
- multiply: multiply,
- divide: divide,
- mod: mod,
- formatNum: formatNum,
- };
- })();
- // 生成水印
- export function setWaterMark(option = {}) {
- let arr = [];
- let {
- waterMarkText = "",
- eleId = "",
- toImg = false,
- toDataURL = false,
- rotate = 30,
- color = "rgba(180, 180, 180, 0.2)",
- // color='red',
- fontSize = 12,
- gap = 40,
- globalAlpha = 1,
- } = option;
- if (Object.prototype.toString.call(waterMarkText) == "[object Array]") {
- arr = waterMarkText;
- } else if (
- Object.prototype.toString.call(waterMarkText) == "[object String]"
- ) {
- arr = [waterMarkText];
- }
- var canvas = eleId
- ? document.getElementById(eleId)
- : document.createElement("canvas");
- if (!canvas) {
- return false;
- }
- var ctx = canvas.getContext("2d");
- let horizontalWidth = ctx.measureText(waterMarkText).width;
- // horizontalWidth =
- // Math.sqrt((horizontalWidth * horizontalWidth) / 2) + fontSize;
- // horizontalWidth = horizontalWidth;
- canvas.width = horizontalWidth * 1 + 50;
- canvas.height = horizontalWidth * 1 + 50;
- ctx.textAlign = "center";
- ctx.textBaseline = "middle";
- ctx.fillStyle = color;
- ctx.globalAlpha = globalAlpha;
- ctx.font = `${fontSize}px Microsoft Yahei`;
- // ctx.translate(horizontalWidth/2, horizontalWidth/2);
- const draw = (text, x, y) => {
- ctx.save();
- ctx.translate(x, y);
- ctx.rotate((-rotate / 180) * Math.PI);
- ctx.fillText(text, 0, 0);
- ctx.restore();
- };
- arr.map((item, index) => {
- ctx.beginPath();
- draw(item, horizontalWidth / 2 - 0, index * 20 + horizontalWidth / 2 - 30);
- // ctx.fillText(item, index * 100, index * 100);
- ctx.closePath();
- });
- if (toImg) {
- // debugger
- //新Image对象,可以理解为DOM
- var image = new Image();
- // canvas.toDataURL 返回的是一串Base64编码的URL
- // 指定格式 PNG
- let src = canvas.toDataURL("image/png");
- image.src = src;
- return image;
- } else if (toDataURL) {
- let src = canvas.toDataURL("image/png");
- return src;
- }
- return canvas;
- }
- /**带小数的千分位转化*/
- export function formatNum(num = 0, n = 0) {
- try {
- if (!num || isNaN(num)) {
- return num;
- }
- num = String(Number(num).toFixed(n));
- var re = /(-?\d+)(\d{3})/;
- while (re.test(num)) {
- num = String(num).replace(re, "$1,$2");
- }
- return num;
- } catch (e) {
- }
- }
- /**判断一个时间是否在某个时间端内*/
- export function isTimes(newdate, startdate, enddate) {
- var newdate = newdate ? new Date(newdate) : new Date();
- var startdate = new Date(startdate);
- console.log(newdate);
- console.log(startdate);
- var enddate = new Date(enddate);
- var a = newdate.getTime() - startdate.getTime();
- var b = newdate.getTime() - enddate.getTime();
- console.log(a);
- console.log(b);
- if (a < 0 || b > 0) {
- return false;
- } else {
- return true;
- }
- }
- export function recursion(tree = [], oldParam_ = { '200000': '移动端首页' }) {
- // let param_ = {};
- for (let index = 0; index < tree.length; index++) {
- const item = tree[index];
- oldParam_[item.resourceId] = item.resourceName; // 保存每次遍历的结果
- if ((item.resourceList).length > 0) {
- recursion(item.resourceList, oldParam_);
- }
- }
- return oldParam_
- }
- export function calcEnc(str) {
- let res = [];
- for (let i = 0; i < str.length; i++) {
- res.push((str.charCodeAt(i) + 13) * Math.pow(2, i));
- }
- return window.btoa(res.join("%"));
- }
- export function tipsLockStatus(callback) {
- const key = `open${Date.now()}`;
- const btn = <Button type="primary" onClick={() => {
- notification.close(key)
- callback && callback()
- }}>
- 确定
- </Button>
- ;
- notification.open({
- message: '消息提示',
- description:
- `您的密码将于${sessionStorage.getItem("accountLockTime")}过期,过期后将无法使用数据门户,请点击“确认”立即修改密码,或在3天内前往【首页-右上角-点击头像】修改密码!`,
- btn,
- duration: null,
- placement: 'topLeft',
- key,
- style: {
- width: "600px",
- bottom: "auto",
- minHeight: "200px",
- borderRadius: "10px",
- },
- onClose: () => { },
- });
- }
- /**相对时间差 */
- export function timeDiffer(date) {
- let nowTime = moment(); //当下时间
- // let nowTime=moment('2019-12-18 10:10:00');
- let createTime = moment(date);
- let du = moment.duration(nowTime - createTime, "ms"); //做差
- let years = du.get("year");
- let months = du.get("month");
- let days = du.get("days");
- let hours = du.get("hours");
- let mins = du.get("minutes");
- let ss = du.get("seconds");
- if (years > 0) {
- return years + "年前";
- } else if (months > 0) {
- return months + "月前";
- } else if (days > 0) {
- return days + "天前";
- } else if (hours > 0) {
- return hours + "小时前";
- } else if (mins > 0) {
- return mins + "分钟前";
- } else {
- return ss + "秒前";
- }
- }
- export function timestampToTime() {
- var d = new Date();
- var datetime = d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate() + ' ' + d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds();
- return datetime
- }
- export function getArrMax(arr) {
- arr.sort(function (a, b) {
- return a - b
- })
- return arr[arr.length - 1]
- }
- export async function dealDiffSheetType(item) {
- return new Promise((resolve, reject) => {
- let type = item.resourceType;
- if (item.resourceUrl) {
- const new_url = item.resourceUrl.indexOf("?") === -1 ? item.resourceUrl + `?accountNm=${localStorage.getItem("account")}` : item.resourceUrl + `&accountNm=${localStorage.getItem("account")}`
- if (item.resourceUrl.indexOf("datav.aliyuncs.com") > -1 && item.resourceUrl.indexOf("accountNm=") === -1) {
- item.resourceUrl = new_url;
- }
- }
- switch (item.resourceType) {
- case "sys":
- if (item.openType === "blank") {
- window.open(
- `${window.location.protocol}//${window.location.host}/#${item.resourceUrl}`
- );
- }
- resolve({
- openType: item.openType,
- link: item.resourceUrl,
- type,
- activeItem: item
- });
- break;
- case "report":
- case "yonghong":
- (async () => {
- let link = item.resourceUrl;
- // 遇到 &reportToken 标识符,获取token并拼接到url后
- if (link.match(/reportToken/)) {
- try {
- let { data, code } = await getSheetToken({
- tenantId: "1234",
- appCode: "admin",
- appPassword: "MTIzNDU2",
- });
- sessionStorage.setItem("outerToken", data);
- link = link.replace(/reportToken/, `reportToken=${data}&userName=${sessionStorage.getItem("userName")}&userCode=${sessionStorage.getItem("accountId")}`);
- sessionStorage.setItem("outerUrl", item.resourceType == "yonghong" ? link + `&token=${sessionStorage.getItem("token")}` : link);
- console.log("dy4", `拿到token了${data}`);//谜之加了console就不会有获取不到token的情况
- resolve({
- openType: item.openType,
- link: link,
- type: "report",
- activeItem: item
- });
- } catch (e) {
- console.error("获取报表token失败哦");
- }
- } else {
- sessionStorage.setItem("outerUrl", item.resourceType == "yonghong" ? link + `&token=${sessionStorage.getItem("token")}` : link);
- if (item.openType === "blank") {
- window.open(item.resourceType == "yonghong" ? item.resourceUrl + `&token=${sessionStorage.getItem("token")}` : item.resourceUrl);
- }
- resolve({
- openType: item.openType,
- link: link,
- type: "report",
- activeItem: item
- });
- }
- })();
- break;
- case "module":
- (async () => {
- let link = item.resourceUrl;
- // 遇到 &reportToken 标识符,获取token并拼接到url后
- if (link.match(/reportToken/)) {
- try {
- let { data, code } = await getSheetToken({
- tenantId: "1234",
- appCode: "admin",
- appPassword: "MTIzNDU2",
- });
- link = link.replace(/reportToken/, `reportToken=${data}&userName=${sessionStorage.getItem("userName")}&userCode=${sessionStorage.getItem("accountId")}`);
- } catch (e) {
- console.error("获取报表token失败哦");
- }
- }
- sessionStorage.setItem("outerUrl", link);
- resolve({
- openType: item.openType,
- link: link,
- type: "module",
- activeItem: item
- });
- })();
- break;
- case "url":
- sessionStorage.setItem("outerUrl", item.resourceUrl);
- if (item.openType === "blank") {
- window.open(item.resourceUrl);
- }
- resolve({
- openType: item.openType,
- link: item.resourceUrl,
- type: "url",
- activeItem: item
- });
- break;
- case "dmpReport":
- getDmpAccessUrl({
- account:
- sessionStorage.getItem("account") ||
- sessionStorage.getItem("userName"),
- url: item.resourceUrl,
- }).then((resp) => {
- if (+resp.resultCode === 0) {
- if (item.openType === "blank") {
- window.open(resp.data, "dmp");
- }
- sessionStorage.setItem("outerUrl", resp.data);
- resolve({
- openType: item.openType,
- link: resp.data,
- type: "dmpReport",
- activeItem: item
- });
- } else {
- message.error("网络出错了!");
- reject();
- }
- });
- break;
- case "thirdsys":
- window.open(item.resourceUrl, "third");
- resolve({
- openType: item.openType,
- link: item.resourceUrl,
- type: "thirdsys",
- activeItem: item
- });
- break;
- case "fine_bi":
- case "fine_bi_new":
- getPreFineBiUrl(item.resourceType).then(async (resp) => {
- if (+resp.resultCode === 0) {
- let resourceUrl = item.resourceUrl;
- if (!resourceUrl.match(/^http/)) {
- resourceUrl = `//${window.location.host}${item.resourceUrl}`;
- }
- let link = `${resp.data}${resourceUrl}`.replace(
- /http:|https:/g,
- ""
- );
- // 遇到 &reportToken 标识符,获取token并拼接到url后
- // if (link.match(/reportToken/)) {
- // try {
- // let { data, code } = await getSheetToken({
- // tenantId: "1234",
- // admin: "user",
- // appPassword: "MTIzNDU2",
- // });
- // link = link.replace(/reportToken/, data);
- // } catch (e) {
- // console.error("获取报表token失败哦");
- // }
- // }
- if (item.openType === "blank") {
- window.open(link, "fine_bi");
- }
- sessionStorage.setItem("outerUrl", link);
- resolve({
- openType: item.openType,
- link,
- type: "fine_bi",
- activeItem: item
- });
- }
- });
- break;
- case "fine_tool":
- case "fine_tool_new":
- getPreFineBiUrl(item.resourceType).then(async (resp) => {
- if (+resp.resultCode === 0) {
- let resourceUrl = item.resourceUrl;
- if (!resourceUrl.match(/^http/)) {
- resourceUrl = `//${window.location.host}${item.resourceUrl}`;
- }
- let link = `${resp.data}${resourceUrl}`.replace(
- /http:|https:/g,
- ""
- );
- // 遇到 &reportToken 标识符,获取token并拼接到url后
- // if (link.match(/reportToken/)) {
- // try {
- // let { data, code } = await getSheetToken({
- // tenantId: "1234",
- // admin: "user",
- // appPassword: "MTIzNDU2",
- // });
- // link = link.replace(/reportToken/, data);
- // } catch (e) {
- // console.error("获取报表token失败哦");
- // }
- // }
- if (item.openType === "blank") {
- window.open(link, "fine_tool");
- }
- sessionStorage.setItem("outerUrl", link);
- resolve({
- openType: item.openType,
- link,
- type: "fine_tool",
- activeItem: item
- });
- }
- });
- break;
- default:
- sessionStorage.setItem("outerUrl", item.resourceUrl);
- sessionStorage.setItem("routeName", item.resourceName);
- getValueByDictCode({ dictCode: "report_param" }).then(
- ({ data, resultCode }) => {
- if (+resultCode === 0) {
- let types = data.map((item) => {
- item.key = item.dictValueId;
- return item;
- });
- let queryString = "";
- let paramTypeStr =
- (
- types.filter(
- (type) => type.dictKey === data.resourceType
- )[0] || {}
- ).dictValue || {};
- let paramType = JSON.parse(paramTypeStr);
- // 需要接口返回token
- if (paramTypeStr.match(/fine_auth_token/)) {
- getFineBiToken().then((resp) => {
- if (+resp.resultCode === 0) {
- document.cookie = `fine_auth_token=${data};fine_remember_login=-1`;
- queryString = `fine_auth_token=${resp.data}`;
- sessionStorage.setItem("queryString", queryString);
- resolve({
- openType: item.openType,
- link: queryString,
- type: "default",
- activeItem: item
- });
- }
- });
- } else {
- for (let k in paramType) {
- queryString += `&${k}=${calcValue(paramType[k])}`;
- }
- sessionStorage.setItem("queryString", queryString.substr(1));
- }
- resolve({
- openType: item.openType,
- link: queryString.substr(1),
- type: "default",
- activeItem: item
- });
- }
- }
- );
- break;
- }
- });
- }
- const navToUrl = (item, callback) => {
- sessionStorage.setItem("curNodeId", item.resourceId);
- // sessionStorage.setItem("jumpType", item.props.type);
- dealDiffSheetType(item).then((response) => {
- if (response.type === "sys") {
- callback && callback(response.link);
- } else {
- callback && callback(`/home/outer/${response.activeItem.resourceId}`);
- }
- });
- };
- /**跨导航栏转跳 */
- export function crossMenuClick(f_url, s_url, callback) {
- let activeTree = utils.findNodeTree($store.sysMenu.menuList, f_url, "resourceUrl");
- let activeTreeSon = utils.findNodeTree($store.sysMenu.menuList, s_url, "resourceUrl");
- handleClickForUtil(activeTree, "", ((res) => {
- callback && callback(res);
- }), activeTreeSon)
- }
- /**一级导航栏转跳 */
- export function handleClickForUtil(e, type, callback, goSonUrl) {
- localStorage.setItem("account", sessionStorage.getItem("userName"));
- let item = null;
- let submenuList = [];
- let activeUrl = "";
- let locationUrl = "";
- let isOuter = false;
- let isBi = false;
- if (!goSonUrl) {
- if (type === "cust") {
- if (e.target.tagName.match(/li/i)) {
- item = JSON.parse(e.target.dataset.key || {});
- } else {
- item = JSON.parse(e.target.parentNode.dataset.key || {});
- }
- } else if (type === "item_cust") {//直接传递对象的
- item = e;
- } else {
- if (e === null) {
- // message.warning('抱歉!您没有此功能权限!');
- return
- } else {
- const item_s = e && e.resourceId ? e : (e && e.key ? JSON.parse(e.key) : {})
- item = item_s;
- }
- }
- } else {
- item = e;
- }
- sessionStorage.setItem("topNavUrl", item.resourceUrl)
- if (item.openType === "close") {
- message.destroy();
- return message.warning("该菜单暂未开放");
- }
- if (
- item.resourceName === "驾驶舱" ||
- item.resourceName === "报表中心" ||
- item.resourceName === "填报中心"
- ) {
- switchPage({
- // pageId: relationship[key].pageId,
- modelName: item.resourceName,
- pageName: item.resourceName,
- pageUrl: item.resourceUrl,
- resourceId: item.resourceId,
- visitId: sessionStorage.getItem("unionId"),
- });
- $store.sysMenu.setIsShowLeftMenuSearch(true);
- } else {
- switchPage({
- // pageId: relationship[key].pageId,
- modelName: item.resourceName,
- pageName: item.resourceName,
- pageUrl: item.resourceUrl,
- resourceId: item.resourceId,
- visitId: sessionStorage.getItem("unionId"),
- });
- $store.sysMenu.setIsShowLeftMenuSearch(false);
- }
- // 一体化跳转处理
- if ((item.resourceUrl || "").includes("integration")) {
- activeUrl = item.resourceUrl;
- $store.app.setActivedUrl(activeUrl);
- return navToUrl(item, callback);
- }
- // 切换一级菜单清空选项卡
- // $store.app.setNavList([], "set");
- // 如果是工作台(没二级菜单),重新添加一个nav
- if (item.resourceUrl === "/home/work" || item.resourceUrl === "/home/reportForWork") {
- $store.app.setNavList({
- name: item.resourceName,
- path: item.resourceUrl,
- type: item.resourceType,
- openType: item.openType,
- id: item.resourceId,
- });
- sessionStorage.setItem("curNodeId", item.resourceId);
- $store.app.setCurNav(item.resourceUrl);
- $store.app.setRefresh(Date.now());
- }
- // 判断是否有子集菜单
- if (Array.isArray(item.resourceList) && item.resourceList.length > 0) {
- if (goSonUrl) {
- locationUrl = goSonUrl.resourceUrl;
- submenuList = item.resourceList;
- activeUrl = goSonUrl.resourceUrl;
- } else if ((item.resourceList[0] || {}).resourceType === "url") {
- locationUrl = (item.resourceList[0] || {}).resourceUrl;
- submenuList = item.resourceList;
- activeUrl = item.resourceUrl;
- } else {
- locationUrl = `/home/outer/${item.resourceId}`;
- submenuList = item.resourceList;
- activeUrl = item.resourceUrl;
- isOuter = true;
- }
- } else {
- if (item.resourceType === "url") {
- locationUrl = item.resourceUrl;
- submenuList = [];
- activeUrl = item.resourceUrl;
- } else if (item.resourceType === "fine_tool") {
- submenuList = [];
- activeUrl = item.resourceUrl;
- isBi = true;
- } else {
- locationUrl = `/home/outer/${item.resourceId}`;
- submenuList = item.resourceList;
- activeUrl = item.resourceUrl;
- isOuter = true;
- }
- }
- // setCurActived(activeUrl);
- $store.app.setActivedUrl(activeUrl);
- $store.sysMenu.setSubmenuList(submenuList);
- sessionStorage.setItem("subMenuList", JSON.stringify(submenuList));
- $store.app.setRefresh(Date.now());
- if (item.resourceList.length > 0) {
- let { resourceName, resourceUrl, resourceType, openType, resourceId } =
- goSonUrl ? goSonUrl : (item.resourceList[0] || {});
- $store.app.setNavList({
- name: resourceName,
- path: resourceUrl,
- type: resourceType,
- openType: openType,
- id: resourceId,
- });
- // 记录当前选项卡url
- $store.app.setCurNav(resourceUrl);
- }
- if (isBi) {
- return navToUrl(item, callback);
- }
- if (isOuter) {
- if (!item.defaultOpen) {
- $store.app.setCurNav("");
- $store.app.setNavList([], "set");
- sessionStorage.setItem("outerUrl", "");
- if (item.openType === "blank") {
- return window.open(
- `${window.location.protocol}//${window.location.host}/#/home/outer`
- );
- }
- return callback && callback(`/home/outer/${item.resourceId}`);
- }
- //防止第一个菜单是2级菜单
- let _items = {};
- if (item.resourceList.length > 0 && item.resourceList[0].resourceType != "folder") {
- _items = item.resourceList[0]
- } else if (item.resourceList.length > 0 && item.resourceList[0].resourceType == "folder" && item.resourceList[0].resourceList.length > 0) {
- _items = item.resourceList[0].resourceList[0]
- } else {
- _items = item
- }
- return navToUrl(
- goSonUrl ? goSonUrl : _items, callback
- );
- } else {
- if (!item.defaultOpen) {
- $store.app.setCurNav("");
- $store.app.setNavList([], "set");
- sessionStorage.setItem("outerUrl", "");
- if (item.openType === "blank") {
- return window.open(
- `${window.location.protocol}//${window.location.host}/#/home/outer`
- );
- }
- return callback && callback(`/home/outer/${item.resourceId}`);
- }
- callback && callback(locationUrl);
- }
- }
- export function checkIsIe10() {
- if (window.ActiveXObject) {
- var reg = /10\.0/
- var str = navigator.userAgent
- if (reg.test(str)) {
- return true
- }
- }
- return false
- }
- export function getSheetToolToken(item) {
- let link = item.resourceUrl;
- // 遇到 &reportToken 标识符,获取token并拼接到url后
- if (link.match(/reportToken/)) {
- getSheetToken({
- tenantId: "1234",
- appCode: "admin",
- appPassword: "MTIzNDU2",
- })
- .then(({ data, code }) => {
- link = link.replace(/reportToken/, `reportToken=${data}&userName=${sessionStorage.getItem("userName")}&userCode=${sessionStorage.getItem("accountId")}`);
- })
- .catch((e) => {
- console.error("获取报表token失败哦");
- });
- }
- // sessionStorage.setItem("outerUrl", link);
- return link;
- }
- function calcValue(str) {
- if (str === "sysToken") {
- return `${sessionStorage.getItem("token")}$`;
- }
- }
- // 格式化树结构
- export function mapTree(tree, c_name, la_name, k_name, k = 1) {
- const haveChildren = Array.isArray(tree[c_name]) && tree[c_name].length > 0;
- return {
- ...tree,
- // level: k++,
- groupValue: tree.parentName + tree.permissionType + tree.dataResourceName,
- title: tree[la_name],
- key: tree.parentName + tree.permissionType + tree.dataResourceName + '',
- value: tree.parentName + tree.permissionType + tree.dataResourceName + '',
- // 判断它是否存在子集,若果存在就进行再次进行遍历操作,知道不存在子集便对其他的元素进行操作
- children: haveChildren ? tree[c_name].map(i => mapTree(i, c_name, la_name, k_name, k)) : []
- };
- }
- // 格式化数据源树结构
- export function mapTree2(tree, c_name, la_name, isChildren = false, fathers) {
- let old_c_name = c_name;
- let old_la_name = la_name;
- if (!tree[c_name] && tree["dbs"]) {
- old_c_name = "dbs"
- old_la_name = "name"
- }
- const haveChildren = Array.isArray(tree[old_c_name]) && tree[old_c_name].length > 0;
- const lastFather = tree['dsId'] ? tree : { ...tree, ...{ dsId: fathers['dsId'], name: fathers['name'] } }
- const par = {
- // disabled:true,
- dsId: tree['dsId'] ? tree['dsId'] : fathers['dsId'],
- name: tree['name'] ? tree['name'] : (fathers[old_la_name] || fathers['name']),
- // title: haveChildren ? tree[old_la_name] : tree,
- title: haveChildren ? tree[old_la_name] : tree,
- key: haveChildren ? tree[old_la_name] : tree,
- value: haveChildren ? tree[old_la_name] : tree,
- // 判断它是否存在子集,若果存在就进行再次进行遍历操作,知道不存在子集便对其他的元素进行操作
- children: haveChildren ? tree[old_c_name].map(i => mapTree2(i, c_name, la_name, old_c_name != "dbs", lastFather)) : [],
- }
- return par;
- }
- export function getThousandNum(num){
- if(!num){return 0}
- //统一保留2位小数
- // num = Math.floor(num*100)/100;
- num = num.toFixed(2);
- var TextBox8_all = num+"";
- var text8_sum = TextBox8_all.replace(/(\d{1,3})(?=(\d{3})+(?:$|\.))/g,'$1,');
- return text8_sum;
- }
- //大屏转跳-去除缓存
- export function deleteCacheAndChangeUrl(url,callback){
- RouterCache.deleteCache(url)
- setTimeout(()=>{
- callback && callback(url)
- },300)
- }
- // 格式化树结构
- export function findTreeAllNode(tree) {
- const haveChildren = Array.isArray(tree.children) && tree.children.length > 0;
- if (haveChildren) {
- return tree.children.map(i => findTreeAllNode(i))
- } else {
- return tree
- }
- }
- /**
- * 使用crypto-js的AES算法进行加解密
- */
- const CryptoJS_key = CryptoJS.enc.Utf8.parse('1234123412ABCDEF') //十六位十六进制数作为密钥
- const CryptoJS_iv = CryptoJS.enc.Utf8.parse('ABCDEF1234123412') //十六位十六进制数作为密钥偏移量
- //加密方法
- export function Encrypt(word) {
- const srcs = CryptoJS.enc.Utf8.parse(word)
- const encrypted = CryptoJS.AES.encrypt(srcs, CryptoJS_key, {
- iv: CryptoJS_iv,
- mode: CryptoJS.mode.CBC,
- padding: CryptoJS.pad.Pkcs7
- })
- const hexStr = encrypted.ciphertext.toString().toUpperCase()
- var oldHexStr = CryptoJS.enc.Hex.parse(hexStr)
- // 将密文转为Base64的字符串
- const base64Str = CryptoJS.enc.Base64.stringify(oldHexStr)
- return base64Str
- }
- //解密方法
- export function Decrypt(word) {
- /*
- * const encryptedHexStr = CryptoJS.enc.Hex.parse(word)
- * const srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr)
- */
- const decrypt = CryptoJS.AES.decrypt(word, CryptoJS_key, {
- iv: CryptoJS_iv,
- mode: CryptoJS.mode.CBC,
- padding: CryptoJS.pad.Pkcs7
- })
- const decryptedStr = decrypt.toString(CryptoJS.enc.Utf8)
- return decryptedStr.toString()
- }
- export function queryToObj() {
- const url = window.location.href;
- const result = {};
- const urlSplit = url.split('?');
- const len = urlSplit.length - 1;
- const queryParam = urlSplit[len] || '';
- queryParam
- .split('&')
- .filter(str => str !== '')
- .forEach(str => {
- const [key, value] = str.split('=');
- result[key] = value;
- });
- return result;
- };
- /**
- * 字符串模板转换 ,将数据源对应{键}的值填入str
- *
- * @param {*} str 字符串
- * @param {*} source 数据源
- * @param {*} handle 处理函数
- * @returns
- */
- export function strFormat(str, source, handle = () => { }) {
- if (str instanceof Function) {
- return str(source);
- } else if (!isObject(source)) {
- return str;
- }
- const data = { ...source };
- const r = /{[^}]+}/;
- while (r.test(str)) {
- const key = str.match(r).toString().replace("{", "").replace("}", "");
- const value = get(data, key, []);
- const ids = toArray(value).filter((id) => id != null);
- str = str.replace(r, ids.join(","));
- handle(key, value);
- }
- return str;
- };
|