UNPKG

@jdlinker/utils

Version:

jdLinker 工具库

164 lines (146 loc) 3.97 kB
import type { Slots } from 'vue'; import { message } from 'linker-ui-components'; import { cloneDeep, isArray } from 'lodash-es'; /** * 静态图片资源处理 * @param path {String} 路径 * @param isAddPath */ export const getImage = (path: string, isAddPath: Boolean = true) => { if (undefined === path || '' === path) { return undefined; } if (isAddPath) { return new URL('/images' + path, import.meta.url).href; } else { return new URL(path, window.location.origin).href; } }; /** * TreeSelect过滤 * @param value 过滤值 * @param treeNode * @param key */ export const filterTreeSelectNode = (value: string, treeNode: any, key = 'name'): boolean => { return treeNode[key]?.includes(value); }; /** * Select过滤 * @param value 过滤值 * @param option * @param key */ export const filterSelectNode = (value: string, option: any, key = 'label'): boolean => { return option[key]?.includes(value); }; export function getSlot2<T>(slots: Slots, props: Record<string, unknown>, prop = 'default'): T | false { if (props[prop] === false) { // force not render return false; } return (props[prop] || slots[prop]) as T; } export function getSlotVNode<T>(slots: Slots, props: Record<string, unknown>, prop = 'default'): T | false { if (props[prop] === false) { return false; } return (props[prop] || slots[prop]?.()) as T; } /** * 修改Select参数column的值 * @param e // 查询参数 e * @param column {Object} {需要修改的值: 修改后的值} * { username: 'context.username', } */ export const modifySearchColumnValue = (e: any, column: object) => { e.terms.forEach((item: any) => { item.terms.forEach((t: any) => { if (column[t.column]) { t.column = column[t.column]; } }); }); return e; }; /** * 仅提示一次的message * @param msg 消息内容 * @param type 消息类型 */ export const onlyMessage = (msg: string, type: 'success' | 'error' | 'warning' = 'success') => { message[type]({ content: msg, key: type }); }; export interface SearchItemData { column: any; value: any; termType: string; type?: string; } export const handleParamsToString = (terms: SearchItemData[] = []) => { const _terms: any[] = [{ terms: [null, null, null] }, { terms: [null, null, null], type: 'and' }]; let termsIndex = 0; let termsStar = 0; terms.forEach((item, index) => { if (index > 2) { termsIndex = 1; termsStar = 4; } _terms[termsIndex].terms[index - termsStar] = item; }); return JSON.stringify({ terms: _terms }); }; export const treeFilter = (data: any[], value: any, key = 'name'): any[] => { if (!data) return []; return data.filter((item) => { if (item.children && item.children.length) { item.children = treeFilter(item.children || [], value, key); return !!item.children.length; } else { return item[key] === value; } }); }; /** * 通过子节点获取上级相应数据 * @param data 树形数据 * @param search 搜索值 * @param searchKey 搜索key * @param returnKey 返回key */ export const openKeysByTree = (data: any[], search: any, searchKey = 'id', returnKey = 'id'): any[] => { if (!data || (data && !isArray(data))) return []; const cloneData = cloneDeep(data); const filterTree = treeFilter(cloneData, search, searchKey); const openKeys: any[] = []; const findKey = (treeData: any[]) => { for (let i = 0; i < treeData.length; i++) { const item = treeData[i]; openKeys.push(item[returnKey]); if (item.children && item.children.length) { findKey(item.children); } } }; findKey(filterTree); return openKeys; }; export const numberToString = { 1: '星期一', 2: '星期二', 3: '星期三', 4: '星期四', 5: '星期五', 6: '星期六', 7: '星期日' }; export const timeUnitEnum = { seconds: '秒', minutes: '分', hours: '小时' };