| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151 |
- 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, need100) {
- if (!num) { return 0 }
- //统一保留2位小数
- // num = Math.floor(num*100)/100;
- num = Number(need100 ? (num * 100).toFixed(2) : num.toFixed(2));
- var TextBox8_all = num.toLocaleString();
- // var text8_sum = TextBox8_all.replace(/(\d{1,3})(?=(\d{3})+(?:$|\.))/g,'$1,');
- if (TextBox8_all.split('.')[1] && TextBox8_all.split('.')[1].length == 1) {
- TextBox8_all = TextBox8_all + '0'
- } else if (!TextBox8_all.split('.')[1]) {
- TextBox8_all = TextBox8_all + '.00'
- }
- return TextBox8_all;
- }
- //大屏转跳-去除缓存
- export function deleteCacheAndChangeUrl(next = 'left', callback, needName) {//needName 获取名称
- const screenName = ["/home/operation", "/home/gvc", "/home/tlk"];
- const names = ["运营数据中心", "产供销价值链", "TLK运营数据中心 / TLK Plant Dashboard"];
- const HasScreen = localStorage.getItem("tqcHasScreen").split(",") || [];
- const currUrl = window.location.hash.split("#")[1];
- //检测是否含有当前页面的路径
- if (!HasScreen.includes(currUrl)) {
- message.error("您没有当前路径的权限!").then(() => {
- setTimeout(() => {
- if(HasScreen && HasScreen[0]){
- window.location = window.location.origin + '/transfer.html#'+HasScreen[0];
- }else{
- window.location = window.location.origin + '/transfer.html#/login';
- }
- }, 300)
- })
- return
- }
- //排序菜单路径
- let newHasScreen = [];
- screenName.map(x => {
- if (HasScreen.includes(x)) {
- newHasScreen.push(x)
- }
- })
- console.log(newHasScreen)
- //找到下一页的大屏
- let ai = 0;
- for (let index = 0; index < newHasScreen.length; index++) {
- const element = newHasScreen[index];
- if (element == currUrl) {
- ai = index
- }
- }
- let newUrl = '';
- if (next == 'right') {//向右切
- //当前地址在菜单数组中的index
- newUrl = newHasScreen[ai + 1] || newHasScreen[0]
- } else {
- newUrl = newHasScreen[ai - 1] || newHasScreen[newHasScreen.length - 1]
- }
- const sIndex = screenName.findIndex(b => b === newUrl);
- let newName = names[sIndex];
- RouterCache.deleteCache(newUrl)
- console.log(111111111111)
- if (needName) {
- return newName
- } else {
- setTimeout(() => {
- callback && callback(newUrl)
- }, 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;
- };
|