From eb295d35f90abae90798bf37da0556dba1bf08b4 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Mon, 20 Jan 2025 15:56:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E7=94=B3=E8=AF=B7=E5=A4=87=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/other.ts | 665 +++++++++--------- .../wallet/wallet-recharge-apply/index.vue | 1 + .../wallet-recharge-apply/preview-excel.vue | 15 +- 3 files changed, 350 insertions(+), 331 deletions(-) diff --git a/src/utils/other.ts b/src/utils/other.ts index fef7985..1c72c01 100644 --- a/src/utils/other.ts +++ b/src/utils/other.ts @@ -1,30 +1,29 @@ -import {nextTick} from 'vue'; -import router from '/@/router/index'; -import pinia from '/@/stores/index'; -import {storeToRefs} from 'pinia'; -import {useThemeConfig} from '/@/stores/themeConfig'; -import {i18n} from '/@/i18n/index'; -import {Local} from '/@/utils/storage'; -import {verifyUrl} from '/@/utils/toolsValidate'; -import request from '/@/utils/request'; -import {useMessage} from '/@/hooks/message'; -import * as CryptoJS from 'crypto-js'; -import {sm4} from 'sm-crypto' -import {validateNull} from './validate'; - +import { nextTick } from "vue" +import router from "/@/router/index" +import pinia from "/@/stores/index" +import { storeToRefs } from "pinia" +import { useThemeConfig } from "/@/stores/themeConfig" +import { i18n } from "/@/i18n/index" +import { Local } from "/@/utils/storage" +import { verifyUrl } from "/@/utils/toolsValidate" +import request from "/@/utils/request" +import { useMessage } from "/@/hooks/message" +import * as CryptoJS from "crypto-js" +import { sm4 } from "sm-crypto" +import { validateNull } from "./validate" /** * 设置浏览器标题国际化 * @method const title = useTitle(); ==> title() */ export function useTitle() { - const stores = useThemeConfig(pinia); - const {themeConfig} = storeToRefs(stores); - nextTick(() => { - let globalTitle: string = themeConfig.value.globalTitle; - let webTitle = setTagsViewNameI18n(router.currentRoute.value); - document.title = `${webTitle} - ${globalTitle}` || globalTitle; - }); + const stores = useThemeConfig(pinia) + const { themeConfig } = storeToRefs(stores) + nextTick(() => { + let globalTitle: string = themeConfig.value.globalTitle + let webTitle = setTagsViewNameI18n(router.currentRoute.value) + document.title = `${webTitle} - ${globalTitle}` || globalTitle + }) } /** @@ -33,24 +32,26 @@ export function useTitle() { * @returns 返回当前 tagsViewName 名称 */ export function setTagsViewNameI18n(item: any) { - let tagsViewName: string = ''; - const {query, params} = item; - //修复tagsViewName匹配到其他含下列单词的路由 - const pattern = /^\{("(zh-cn|en|zh-tw)":"[^,]+",?){1,3}}$/; - if (query?.tagsViewName || params?.tagsViewName) { - if (pattern.test(query?.tagsViewName) || pattern.test(params?.tagsViewName)) { - // 国际化 - const urlTagsParams = (query?.tagsViewName && JSON.parse(query?.tagsViewName)) || (params?.tagsViewName && JSON.parse(params?.tagsViewName)); - tagsViewName = urlTagsParams[i18n.global.locale.value]; - } else { - // 非国际化 - tagsViewName = query?.tagsViewName || params?.tagsViewName; - } - } else { - // 非自定义 tagsView 名称 - tagsViewName = i18n.global.t(item.name); - } - return tagsViewName; + let tagsViewName: string = "" + const { query, params } = item + //修复tagsViewName匹配到其他含下列单词的路由 + const pattern = /^\{("(zh-cn|en|zh-tw)":"[^,]+",?){1,3}}$/ + if (query?.tagsViewName || params?.tagsViewName) { + if (pattern.test(query?.tagsViewName) || pattern.test(params?.tagsViewName)) { + // 国际化 + const urlTagsParams = + (query?.tagsViewName && JSON.parse(query?.tagsViewName)) || + (params?.tagsViewName && JSON.parse(params?.tagsViewName)) + tagsViewName = urlTagsParams[i18n.global.locale.value] + } else { + // 非国际化 + tagsViewName = query?.tagsViewName || params?.tagsViewName + } + } else { + // 非自定义 tagsView 名称 + tagsViewName = i18n.global.t(item.name) + } + return tagsViewName } /** @@ -60,32 +61,32 @@ export function setTagsViewNameI18n(item: any) { * @description data-xxx 属性用于存储页面或应用程序的私有自定义数据 */ export const lazyImg = (el: string, arr: EmptyArrayType) => { - const io = new IntersectionObserver((res) => { - res.forEach((v: any) => { - if (v.isIntersecting) { - const {img, key} = v.target.dataset; - v.target.src = img; - v.target.onload = () => { - io.unobserve(v.target); - arr[key]['loading'] = false; - }; - } - }); - }); - nextTick(() => { - document.querySelectorAll(el).forEach((img) => io.observe(img)); - }); -}; + const io = new IntersectionObserver((res) => { + res.forEach((v: any) => { + if (v.isIntersecting) { + const { img, key } = v.target.dataset + v.target.src = img + v.target.onload = () => { + io.unobserve(v.target) + arr[key]["loading"] = false + } + } + }) + }) + nextTick(() => { + document.querySelectorAll(el).forEach((img) => io.observe(img)) + }) +} /** * 全局组件大小 * @returns 返回 `window.localStorage` 中读取的缓存值 `globalComponentSize` */ export const globalComponentSize = (): string => { - const stores = useThemeConfig(pinia); - const {themeConfig} = storeToRefs(stores); - return Local.get('themeConfig')?.globalComponentSize || themeConfig.value?.globalComponentSize; -}; + const stores = useThemeConfig(pinia) + const { themeConfig } = storeToRefs(stores) + return Local.get("themeConfig")?.globalComponentSize || themeConfig.value?.globalComponentSize +} /** * 对象深克隆 @@ -93,35 +94,35 @@ export const globalComponentSize = (): string => { * @returns 克隆后的对象 */ export function deepClone(obj: EmptyObjectType) { - let newObj: EmptyObjectType; - try { - newObj = obj.push ? [] : {}; - } catch (error) { - newObj = {}; - } - for (let attr in obj) { - if (obj[attr] && typeof obj[attr] === 'object') { - newObj[attr] = deepClone(obj[attr]); - } else { - newObj[attr] = obj[attr]; - } - } - return newObj; + let newObj: EmptyObjectType + try { + newObj = obj.push ? [] : {} + } catch (error) { + newObj = {} + } + for (let attr in obj) { + if (obj[attr] && typeof obj[attr] === "object") { + newObj[attr] = deepClone(obj[attr]) + } else { + newObj[attr] = obj[attr] + } + } + return newObj } /** * 判断是否是移动端 */ export function isMobile() { - if ( - 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 true; - } else { - return false; - } + if ( + 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 true + } else { + return false + } } /** @@ -131,18 +132,18 @@ export function isMobile() { * @returns 删除空值后的数组对象 */ export function handleEmpty(list: EmptyArrayType) { - const arr = [] as any[]; - for (const i in list) { - const d = [] as any[]; - for (const j in list[i]) { - d.push(list[i][j]); - } - const leng = d.filter((item) => item === '').length; - if (leng !== d.length) { - arr.push(list[i]); - } - } - return arr; + const arr = [] as any[] + for (const i in list) { + const d = [] as any[] + for (const j in list[i]) { + d.push(list[i][j]) + } + const leng = d.filter((item) => item === "").length + if (leng !== d.length) { + arr.push(list[i]) + } + } + return arr } /** @@ -150,55 +151,59 @@ export function handleEmpty(list: EmptyArrayType) { * @param val 当前点击项菜单 */ export function handleOpenLink(val: RouteItem) { - router.push(val.path); - if (verifyUrl(val.meta?.isLink)) window.open(val.meta?.isLink); - else window.open(`${val.meta?.isLink}`); + router.push(val.path) + if (verifyUrl(val.meta?.isLink)) window.open(val.meta?.isLink) + else window.open(`${val.meta?.isLink}`) } /** * 打开小窗口 */ export const openWindow = (url: string, title: string, w: number, h: number) => { - // @ts-ignore - const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : screen.left; - // @ts-ignore - const dualScreenTop = window.screenTop !== undefined ? window.screenTop : screen.top; + // @ts-ignore + const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : screen.left + // @ts-ignore + const dualScreenTop = window.screenTop !== undefined ? window.screenTop : screen.top - const width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width; - const height = window.innerHeight - ? window.innerHeight - : document.documentElement.clientHeight - ? document.documentElement.clientHeight - : screen.height; + const width = window.innerWidth + ? window.innerWidth + : document.documentElement.clientWidth + ? document.documentElement.clientWidth + : screen.width + const height = window.innerHeight + ? window.innerHeight + : document.documentElement.clientHeight + ? document.documentElement.clientHeight + : screen.height - const left = width / 2 - w / 2 + dualScreenLeft; - const top = height / 2 - h / 2 + dualScreenTop; - return window.open( - url, - title, - 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes, copyhistory=no, width=' + - w + - ', height=' + - h + - ', top=' + - top + - ', left=' + - left - ); -}; + const left = width / 2 - w / 2 + dualScreenLeft + const top = height / 2 - h / 2 + dualScreenTop + return window.open( + url, + title, + "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes, copyhistory=no, width=" + + w + + ", height=" + + h + + ", top=" + + top + + ", left=" + + left, + ) +} /** *加密处理 */ export function encryption(src: string, keyWord: string) { - const key = CryptoJS.enc.Utf8.parse(keyWord); - // 加密 - var encrypted = CryptoJS.AES.encrypt(src, key, { - iv: key, - mode: CryptoJS.mode.CFB, - padding: CryptoJS.pad.NoPadding, - }); - return encrypted.toString(); + const key = CryptoJS.enc.Utf8.parse(keyWord) + // 加密 + var encrypted = CryptoJS.AES.encrypt(src, key, { + iv: key, + mode: CryptoJS.mode.CFB, + padding: CryptoJS.pad.NoPadding, + }) + return encrypted.toString() } /** @@ -207,22 +212,22 @@ export function encryption(src: string, keyWord: string) { * @returns 明文 */ export function decryption(src: string, keyWord: string) { - const key = CryptoJS.enc.Utf8.parse(keyWord); - // 解密逻辑 - var decryptd = CryptoJS.AES.decrypt(src, key, { - iv: key, - mode: CryptoJS.mode.CFB, - padding: CryptoJS.pad.NoPadding, - }); + const key = CryptoJS.enc.Utf8.parse(keyWord) + // 解密逻辑 + var decryptd = CryptoJS.AES.decrypt(src, key, { + iv: key, + mode: CryptoJS.mode.CFB, + padding: CryptoJS.pad.NoPadding, + }) - return decryptd.toString(CryptoJS.enc.Utf8); + return decryptd.toString(CryptoJS.enc.Utf8) } /** * SM4加密处理 */ export function sm4Encryption(src: string, keyWord: string) { - return sm4.encrypt(src, keyWord); + return sm4.encrypt(src, keyWord) } /** @@ -231,7 +236,7 @@ export function sm4Encryption(src: string, keyWord: string) { * @returns 明文 */ export function sm4Decryption(src: string, keyWord: string) { - return sm4.decrypt(src, keyWord); + return sm4.decrypt(src, keyWord) } /** @@ -240,8 +245,8 @@ export function sm4Decryption(src: string, keyWord: string) { * @returns 密文 */ export function base64Encrypt(src: string) { - const encodedWord = CryptoJS.enc.Utf8.parse(src); - return CryptoJS.enc.Base64.stringify(encodedWord); + const encodedWord = CryptoJS.enc.Utf8.parse(src) + return CryptoJS.enc.Base64.stringify(encodedWord) } /** @@ -252,14 +257,14 @@ export function base64Encrypt(src: string) { * @returns {*} */ export function downBlobFile(url: any, query: any, fileName: string) { - return request({ - url: url, - method: 'get', - responseType: 'blob', - params: query, - }).then((response) => { - handleBlobFile(response, fileName); - }); + return request({ + url: url, + method: "get", + responseType: "blob", + params: query, + }).then((response) => { + handleBlobFile(response, fileName) + }) } /** @@ -268,26 +273,26 @@ export function downBlobFile(url: any, query: any, fileName: string) { * @returns */ export function handleBlobFile(response: any, fileName: string) { - // 处理返回的文件流 - const blob = response; - if (blob && blob.size === 0) { - useMessage().error('内容为空,无法下载'); - return; - } - const link = document.createElement('a'); + // 处理返回的文件流 + const blob = response + if (blob && blob.size === 0) { + useMessage().error("内容为空,无法下载") + return + } + const link = document.createElement("a") - // 兼容一下 入参不是 File Blob 类型情况 - var binaryData = [] as any; - binaryData.push(response); - link.href = window.URL.createObjectURL(new Blob(binaryData)); - link.download = fileName; - document.body.appendChild(link); - link.click(); - window.setTimeout(function () { - // @ts-ignore - URL.revokeObjectURL(blob); - document.body.removeChild(link); - }, 0); + // 兼容一下 入参不是 File Blob 类型情况 + var binaryData = [] as any + binaryData.push(response) + link.href = window.URL.createObjectURL(new Blob(binaryData)) + link.download = fileName + document.body.appendChild(link) + link.click() + window.setTimeout(function () { + // @ts-ignore + URL.revokeObjectURL(blob) + document.body.removeChild(link) + }, 0) } /** @@ -295,31 +300,31 @@ export function handleBlobFile(response: any, fileName: string) { * @return string */ export function generateUUID() { - if (typeof crypto === 'object') { - if (typeof crypto.randomUUID === 'function') { - return crypto.randomUUID(); - } - if (typeof crypto.getRandomValues === 'function' && typeof Uint8Array === 'function') { - const callback = (c: any) => { - const num = Number(c); - return (num ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (num / 4)))).toString(16); - }; - return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, callback); - } - } - let timestamp = new Date().getTime(); - let performanceNow = (typeof performance !== 'undefined' && performance.now && performance.now() * 1000) || 0; - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => { - let random = Math.random() * 16; - if (timestamp > 0) { - random = (timestamp + random) % 16 | 0; - timestamp = Math.floor(timestamp / 16); - } else { - random = (performanceNow + random) % 16 | 0; - performanceNow = Math.floor(performanceNow / 16); - } - return (c === 'x' ? random : (random & 0x3) | 0x8).toString(16); - }); + if (typeof crypto === "object") { + if (typeof crypto.randomUUID === "function") { + return crypto.randomUUID() + } + if (typeof crypto.getRandomValues === "function" && typeof Uint8Array === "function") { + const callback = (c: any) => { + const num = Number(c) + return (num ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (num / 4)))).toString(16) + } + return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, callback) + } + } + let timestamp = new Date().getTime() + let performanceNow = (typeof performance !== "undefined" && performance.now && performance.now() * 1000) || 0 + return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => { + let random = Math.random() * 16 + if (timestamp > 0) { + random = (timestamp + random) % 16 | 0 + timestamp = Math.floor(timestamp / 16) + } else { + random = (performanceNow + random) % 16 | 0 + performanceNow = Math.floor(performanceNow / 16) + } + return (c === "x" ? random : (random & 0x3) | 0x8).toString(16) + }) } /** @@ -334,96 +339,96 @@ export function generateUUID() { * @method handleOpenLink 打开外部链接 */ const other = { - useTitle: () => { - useTitle(); - }, - setTagsViewNameI18n(route: RouteToFrom) { - return setTagsViewNameI18n(route); - }, - lazyImg: (el: string, arr: EmptyArrayType) => { - lazyImg(el, arr); - }, - globalComponentSize: () => { - return globalComponentSize(); - }, - deepClone: (obj: EmptyObjectType) => { - return deepClone(obj); - }, - isMobile: () => { - return isMobile(); - }, - handleEmpty: (list: EmptyArrayType) => { - return handleEmpty(list); - }, - handleOpenLink: (val: RouteItem) => { - handleOpenLink(val); - }, - encryption: (src: string, keyWord: string) => { - return encryption(src, keyWord); - }, - decryption: (src: string, keyWord: string) => { - return decryption(src, keyWord); - }, - base64Encrypt: (data: any) => { - return base64Encrypt(data); - }, - downBlobFile: (url: any, query: any, fileName: string) => { - return downBlobFile(url, query, fileName); - }, - toUnderline: (str: string) => { - return toUnderline(str); - }, - openWindow: (url: string, title: string, w: number, h: number) => { - return openWindow(url, title, w, h); - }, - getQueryString: (url: string, paraName: string) => { - return getQueryString(url, paraName); - }, - adaptationUrl: (url?: string) => { - return adaptationUrl(url); - }, - resolveAllEunuchNodeId: (json: any[], idArr: any[], temp: any[] = []) => { - return resolveAllEunuchNodeId(json, idArr, temp); - }, - getNonDuplicateID: () => { - return getNonDuplicateID(); - }, + useTitle: () => { + useTitle() + }, + setTagsViewNameI18n(route: RouteToFrom) { + return setTagsViewNameI18n(route) + }, + lazyImg: (el: string, arr: EmptyArrayType) => { + lazyImg(el, arr) + }, + globalComponentSize: () => { + return globalComponentSize() + }, + deepClone: (obj: EmptyObjectType) => { + return deepClone(obj) + }, + isMobile: () => { + return isMobile() + }, + handleEmpty: (list: EmptyArrayType) => { + return handleEmpty(list) + }, + handleOpenLink: (val: RouteItem) => { + handleOpenLink(val) + }, + encryption: (src: string, keyWord: string) => { + return encryption(src, keyWord) + }, + decryption: (src: string, keyWord: string) => { + return decryption(src, keyWord) + }, + base64Encrypt: (data: any) => { + return base64Encrypt(data) + }, + downBlobFile: (url: any, query: any, fileName: string) => { + return downBlobFile(url, query, fileName) + }, + toUnderline: (str: string) => { + return toUnderline(str) + }, + openWindow: (url: string, title: string, w: number, h: number) => { + return openWindow(url, title, w, h) + }, + getQueryString: (url: string, paraName: string) => { + return getQueryString(url, paraName) + }, + adaptationUrl: (url?: string) => { + return adaptationUrl(url) + }, + resolveAllEunuchNodeId: (json: any[], idArr: any[], temp: any[] = []) => { + return resolveAllEunuchNodeId(json, idArr, temp) + }, + getNonDuplicateID: () => { + return getNonDuplicateID() + }, - addUnit: (value: string | number, unit = 'px') => { - return addUnit(value, unit); - }, - validateNull: (value: any) => { - return validateNull(value); - }, - getNumberRadixNum: (input: Number) => { - return getNumberRadixNum(input); - } -}; + addUnit: (value: string | number, unit = "px") => { + return addUnit(value, unit) + }, + validateNull: (value: any) => { + return validateNull(value) + }, + getNumberRadixNum: (input: Number) => { + return getNumberRadixNum(input) + }, +} export function getNumberRadixNum(input: Number) { - let strings = input.toString().split("."); - if (strings.length <= 1) { - return 0; - } - return strings[1].toString().length; -}; + let strings = input.toString().split(".") + if (strings.length <= 1) { + return 0 + } + return strings[1].toString().length +} export function getQueryString(url: string, paraName: string) { - const arrObj = url.split('?'); - if (arrObj.length > 1) { - const arrPara = arrObj[1].split('&'); - let arr; - for (let i = 0; i < arrPara.length; i++) { - arr = arrPara[i].split('='); - // eslint-disable-next-line eqeqeq - if (arr != null && arr[0] == paraName) { - return arr[1]; - } - } - return ''; - } else { - return ''; - } + const arrObj = url.split("?") + if (arrObj.length > 1) { + const arrPara = arrObj[1].split("&") + let arr + for (let i = 0; i < arrPara.length; i++) { + arr = arrPara[i].split("=") + // eslint-disable-next-line eqeqeq + if (arr != null && arr[0] == paraName) { + return arr[1] + } + } + return "" + } else { + return "" + } } /** @@ -436,31 +441,31 @@ export function getQueryString(url: string, paraName: string) { * @returns {*} */ export function handleTree(data: any, id: any, parentId: any, children: any, rootId: any) { - id = id || 'id'; - parentId = parentId || 'parentId'; - children = children || 'children'; - rootId = - rootId || - Math.min.apply( - Math, - data.map((item: any) => { - return item[parentId]; - }) - ) || - 0; - //对源数据深度克隆 - const cloneData = JSON.parse(JSON.stringify(data)); - //循环所有项 - const treeData = cloneData.filter((father: any) => { - const branchArr = cloneData.filter((child: any) => { - //返回每一项的子级数组 - return father[id] === child[parentId]; - }); - branchArr.length > 0 ? (father[children] = branchArr) : ''; - //返回第一层 - return father[parentId] === rootId; - }); - return treeData !== '' ? treeData : data; + id = id || "id" + parentId = parentId || "parentId" + children = children || "children" + rootId = + rootId || + Math.min.apply( + Math, + data.map((item: any) => { + return item[parentId] + }), + ) || + 0 + //对源数据深度克隆 + const cloneData = JSON.parse(JSON.stringify(data)) + //循环所有项 + const treeData = cloneData.filter((father: any) => { + const branchArr = cloneData.filter((child: any) => { + //返回每一项的子级数组 + return father[id] === child[parentId] + }) + branchArr.length > 0 ? (father[children] = branchArr) : "" + //返回第一层 + return father[parentId] === rootId + }) + return treeData !== "" ? treeData : data } /** @@ -468,15 +473,15 @@ export function handleTree(data: any, id: any, parentId: any, children: any, roo * @returns */ const resolveAllEunuchNodeId = (json: any[], idArr: any[], temp: any[] = []) => { - for (const item of json) { - if (item.children && item.children.length !== 0) { - resolveAllEunuchNodeId(item.children, idArr, temp); - } else { - temp.push(...idArr.filter((id) => id === item.id)); - } - } - return temp; -}; + for (const item of json) { + if (item.children && item.children.length !== 0) { + resolveAllEunuchNodeId(item.children, idArr, temp) + } else { + temp.push(...idArr.filter((id) => id === item.id)) + } + } + return temp +} /** * @@ -484,7 +489,7 @@ const resolveAllEunuchNodeId = (json: any[], idArr: any[], temp: any[] = []) => * @returns 下划线 */ export function toUnderline(str: string) { - return str.replace(/([A-Z])/g, '_$1').toLowerCase(); + return str.replace(/([A-Z])/g, "_$1").toLowerCase() } /** @@ -495,15 +500,15 @@ export function toUnderline(str: string) { * @param originUrl 原始路径 */ const adaptationUrl = (originUrl?: string) => { - // 微服务架构 不做路径转换,为空不做路径转换 - const isMicro = import.meta.env.VITE_IS_MICRO; - if (validateNull(isMicro) || isMicro === 'true') { - return originUrl; - } + // 微服务架构 不做路径转换,为空不做路径转换 + const isMicro = import.meta.env.VITE_IS_MICRO + if (validateNull(isMicro) || isMicro === "true") { + return originUrl + } - // 转为 /admin 路由前缀的请求 - return `/admin/${originUrl?.split('/').splice(2).join('/')}`; -}; + // 转为 /admin 路由前缀的请求 + return `/admin/${originUrl?.split("/").splice(2).join("/")}` +} /** * @description 获取不重复的id @@ -511,19 +516,19 @@ const adaptationUrl = (originUrl?: string) => { * @return { String } id */ const getNonDuplicateID = (length = 8) => { - let idStr = Date.now().toString(36); - idStr += Math.random().toString(36).substring(3, length); - return idStr; -}; + let idStr = Date.now().toString(36) + idStr += Math.random().toString(36).substring(3, length) + return idStr +} /** * @description 添加单位 * @param {String | Number} value 值 100 * @param {String} unit 单位 px em rem */ -const addUnit = (value: string | number, unit = 'px') => { - return !Object.is(Number(value), NaN) ? `${value}${unit}` : value; -}; +const addUnit = (value: string | number, unit = "px") => { + return !Object.is(Number(value), NaN) ? `${value}${unit}` : value +} // 统一批量导出 -export default other; +export default other diff --git a/src/views/wallet/wallet-recharge-apply/index.vue b/src/views/wallet/wallet-recharge-apply/index.vue index 9a83604..1a2f1f0 100644 --- a/src/views/wallet/wallet-recharge-apply/index.vue +++ b/src/views/wallet/wallet-recharge-apply/index.vue @@ -84,6 +84,7 @@ +