export const getImageUrl = (path) => {
|
const modules = import.meta.glob("/src/assets/images/compositeHome/**/*.*", {
|
eager: true,
|
});
|
return modules[path].default;
|
};
|
|
export const getImages = (path) => {
|
return new URL(`/src/assets/images/${path}`, import.meta.url).href;
|
};
|
|
export const handleSymbolImg = (name) => {
|
if (!name) {
|
return;
|
}
|
// usdthb
|
let url;
|
const newName = name.toLowerCase();
|
if (
|
newName === "usdt" ||
|
newName === "usd" ||
|
newName === "usdcusdt" ||
|
newName === "usdthb" ||
|
newName === "usdtwd" ||
|
newName === "usdc"
|
) {
|
url = "/symbol/" + newName + ".png"; //不用过滤
|
} else {
|
const regex = /(\/){0,1}usd(t){0,1}(\/){0,1}/i;
|
const filterUSDName = newName.replace(regex, "");
|
url = "/symbol/" + filterUSDName + ".png";
|
}
|
return new URL(url, import.meta.url).href;
|
};
|
|
// 设置localStorage
|
export const setStorage = function (key, obj) {
|
let json = JSON.stringify(obj);
|
window.localStorage.setItem(key, json);
|
};
|
|
// 获取localStorage
|
export const getStorage = function (key) {
|
const str = window.localStorage.getItem(key);
|
if (!str) {
|
return null;
|
}
|
return JSON.parse(str);
|
};
|
|
// 移除
|
export const removeStorage = function (key) {
|
window.localStorage.removeItem(key);
|
};
|
// 获取浏览器默认语言
|
export const getBrowserLang = function () {
|
let browserLang = navigator.language
|
? navigator.language
|
: navigator.browserLanguage;
|
|
let defaultBrowserLang = "en";
|
if (
|
browserLang.toLowerCase() === "cn" ||
|
browserLang.toLowerCase() === "zh" ||
|
browserLang.toLowerCase() === "zh-cn"
|
) {
|
defaultBrowserLang = "zh";
|
}
|
return defaultBrowserLang;
|
};
|
|
export const dataTime = (data, isTrue) => {
|
var date = new Date(data);
|
let Y = date.getFullYear() + "-";
|
let M =
|
(date.getMonth() + 1 < 10
|
? "0" + (date.getMonth() + 1)
|
: date.getMonth() + 1) + "-";
|
let D = date.getDate() + " ";
|
let h = date.getHours() + ":";
|
let m = date.getMinutes() + ":";
|
let s = date.getSeconds();
|
let str = Y + M + D;
|
if (isTrue) {
|
str = Y + M + D + h + m + s;
|
} else {
|
str = Y + M + D;
|
}
|
return str;
|
};
|
|
export const debounce = (fn, delay = 500) => {
|
// timer 是在闭包中的
|
let timer = null;
|
return function () {
|
if (timer) {
|
clearTimeout(timer);
|
}
|
timer = setTimeout(() => {
|
fn.apply(this, arguments);
|
timer = null;
|
}, delay);
|
};
|
};
|
|
export function filterArrayEmpty(val) {
|
let isEmpty = val.every((val) => {
|
return val != "";
|
});
|
return isEmpty;
|
}
|
|
export function strFirstBit(val) {
|
let arr = val.map((val, index, arr) => {
|
return val.currency;
|
});
|
return arr;
|
}
|
|
export function addAndSubtr(val) {
|
if (val >= 0) {
|
return "+" + val + "%";
|
} else if (val < 0) {
|
return val + "%";
|
} else {
|
return "--";
|
}
|
}
|
|
export function mergeSort(arr) {
|
if (arr.length < 2) {
|
return arr;
|
}
|
var middle = parseInt(arr.length / 2);
|
var left = arr.slice(0, middle);
|
var right = arr.slice(middle);
|
return merge(mergeSort(left), mergeSort(right));
|
}
|
|
function merge(left, right) {
|
var result = [];
|
var i = 0,
|
j = 0;
|
while (i < left.length && j < right.length) {
|
if (left[i].create_time_ts > right[j].create_time_ts) {
|
result.push(right[j++]);
|
} else {
|
result.push(left[i++]);
|
}
|
}
|
while (i < left.length) {
|
result.push(left[i++]);
|
}
|
while (j < right.length) {
|
result.push(right[j++]);
|
}
|
|
return result;
|
}
|
|
//
|
export const langOptions = [
|
{
|
value: "zh-CN",
|
label: "简体中文",
|
},
|
{
|
value: "en",
|
label: "English",
|
},
|
{
|
value: "cht",
|
label: "繁体中文",
|
},
|
{
|
value: "fr",
|
label: "Français",
|
},
|
{
|
value: "de",
|
label: "Deutsch",
|
},
|
{
|
value: "it",
|
label: "Italia",
|
},
|
{
|
value: "ko",
|
label: "한국 사람",
|
},
|
{
|
value: "ja",
|
label: "日本語",
|
},
|
{
|
value: "ro", // 罗马尼亚语
|
label: "Română",
|
},
|
{
|
value: "es", // 西班牙语
|
label: "español",
|
},
|
{
|
value: "tk", // 土耳其语
|
label: "Türkçe",
|
},
|
{
|
value: "pt", // 葡萄牙语
|
label: "Português",
|
},
|
{
|
value: "el", // 希腊语
|
label: "Ελληνικά",
|
},
|
];
|
|
export function getParamsLang() {
|
let language = JSON.parse(localStorage.getItem("lang"));
|
if (language == "ko") {
|
language = "Korean";
|
} else if (language == "cht") {
|
language = "CN";
|
} else if (language == "it" || language == "de" || language == "fr") {
|
language = "en";
|
}
|
|
return language;
|
}
|
|
// 根据本地语言从接口获取相应的name字段
|
export function getWealthLangToName() {
|
let lang = JSON.parse(localStorage.getItem("lang"));
|
const nameMap = {
|
en: "name_en",
|
"zh-CN": "name",
|
cht: "name_cn", //繁体
|
// ja: "name_jn", //没有配置
|
// ko: "name_kn",
|
};
|
|
const res = nameMap[lang] || nameMap["en"];
|
|
return res;
|
}
|
|
export const nowUrl =
|
import.meta.env.MODE === "development"
|
? "https://sjiepc.com"
|
: window.location.origin;
|
|
// 根据页面类型,做页面跳转
|
export function constantMap(type, symbol) {
|
const pageTypeMap = {
|
forex: "forex",
|
indices: "eft",
|
cryptos: "coin",
|
"US-stocks": "usStocks",
|
};
|
|
const defaultSymbol = {
|
forex: symbol || "BTCUSD",
|
indices: symbol || "GlobalETF500",
|
cryptos: symbol || "btc",
|
"US-stocks": symbol || "AAPL",
|
};
|
|
const defaultUrlMap = {
|
forex: `/forex/constract/${
|
defaultSymbol[type]
|
}?timestamp=${Date.now()}&RouterName=sustainable`,
|
indices: `/etf/spot/${defaultSymbol[type]}`,
|
cryptos: `/coin/spot/${defaultSymbol[type]}`,
|
"US-stocks": `/usStocks/spot/${defaultSymbol[type]}`,
|
};
|
|
const defaultUrl = defaultUrlMap[type];
|
|
return {
|
pageTypeMap,
|
defaultUrlMap,
|
defaultSymbol,
|
defaultUrl,
|
};
|
}
|
|
// 把数字转化为K,M,B
|
export function numberFormat(val, lotFraction = 2) {
|
let res = Number(val);
|
let unit = "";
|
// 如果小于1000则直接返回
|
if (val > 1e3 && val < 1e6) {
|
res = val / 1e3;
|
unit = "K";
|
} else if (val > 1e6 && val < 1e10) {
|
res = val / 1e6;
|
unit = "M";
|
} else if (val > 1e10) {
|
res = val / 1e10;
|
unit = "B";
|
}
|
// 最后加逗号,默认保留2位小数
|
return `${res.toFixed(2)} ${unit}`;
|
}
|
|
export const isMobile = () => {
|
return navigator.userAgent.match(
|
/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i
|
);
|
};
|
|
// export const isMobile = () => {
|
// if (typeof window !== "undefined") {
|
// const baseWidth = document.body.clientWidth;
|
// const mobile = navigator.userAgent.match(
|
// /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i
|
// );
|
// return baseWidth <= 767 && mobile;
|
// }
|
// return false;
|
// };
|
|
export const getSymbolTypeContent = (type) => {
|
switch (type) {
|
case "forex":
|
return "外汇";
|
break;
|
case "indices":
|
return "指数";
|
break;
|
case "commodities":
|
return "大宗商品";
|
break;
|
case "UK-metals":
|
return "贵金属";
|
break;
|
case "cryptos":
|
return "虚拟货币";
|
break;
|
case "US-stocks":
|
return "美股";
|
break;
|
case "HK-stocks":
|
return "港股";
|
break;
|
case "TW-stocks":
|
return "台股";
|
break;
|
case "A-stocks":
|
return "A股";
|
break;
|
case "JP-stocks":
|
return "日股";
|
break;
|
case "INDIA-stocks":
|
return "印度股";
|
break;
|
case "UK-stocks":
|
return "英股";
|
break;
|
case "DE-stocks":
|
return "德股";
|
break;
|
case "BZ-stocks":
|
return "巴股";
|
break;
|
case "global":
|
return "全球ETF";
|
break;
|
case "gold":
|
return "黄金ETF";
|
break;
|
case "ai":
|
return "人工智能ETF";
|
break;
|
case "energy":
|
return "能源ETF";
|
break;
|
default:
|
return type;
|
break;
|
}
|
};
|