import { BASE_URL } from "@/config"; /** * 获取当前页面路径 * @returns 当前页面路径 */ export function getCurrentPath() { const pages = getCurrentPages(); const currentPage = pages[pages.length - 1]; return currentPage.route || ""; } /** * 通用表单赋值方法 * @param form 表单数据对象 * @param data 需要赋值的数据 * @param options 配置选项 */ function assignFormValues>( form: T, data: Partial, options?: { /** * 是否忽略空值(null, undefined, '') * @default false */ ignoreEmpty?: boolean; /** * 自定义字段映射 * @example { 'oldKey': 'newKey' } */ fieldMap?: Record; /** * 需要特殊处理的字段 */ transform?: Partial any>>; }, ): void { const { ignoreEmpty = false, fieldMap = {}, transform = {} } = options || {}; for (const key in data) { if (Object.prototype.hasOwnProperty.call(data, key)) { const targetKey = fieldMap[key] || key; // 检查目标表单是否有这个字段 if (!(targetKey in form)) { continue; } let value = data[key]; // 处理空值 if ( ignoreEmpty && (value === null || value === undefined || value === "") ) { continue; } // 处理特殊转换 if (targetKey in transform) { value = transform[targetKey]!(value); } else if (typeof value === "string") { // 字符串特殊处理 if ( key.includes("Img") || key.includes("image") || key.includes("photo") || key.includes("certificate") ) { // 图片字段处理 if (value) { value = value.split(",").map((url: string) => ({ url })); } else { value = [] as unknown as T[keyof T]; } } else if (key === "selecteddeparts" || key.includes("selected")) { // 选择字段处理 value = value ? value.split(",") : []; } } // 类数组对象特殊处理 if ( Array.isArray(form[targetKey]) && !Array.isArray(value) && typeof value === "string" ) { try { const parsed = JSON.parse(value); if (Array.isArray(parsed)) { form[targetKey as keyof T] = parsed as T[keyof T]; continue; } } catch (e) { // 解析失败,继续使用原值 } } form[targetKey as keyof T] = value as T[keyof T]; } } } export default assignFormValues; export function getImageURL(url?: string) { return BASE_URL + "/sys/common/static/" + url; } /** * 判断一个对象的所有字段是否有值(非 null 和 undefined) * @param obj 要检查的对象 * @returns 所有字段有值返回 true,否则 false */ function areAllFieldsFilled(obj: Record): boolean { return Object.values(obj).every( (value) => unref(value) !== null && unref(value) !== undefined && unref(value) !== "", ); } /** * 判断数组中每个对象是否所有字段都有值 * @param arr 要检查的对象数组 * @returns 所有对象字段都有值返回 true,否则 false */ export function areAllItemsAllFieldsFilled( arr: Array>, ): boolean { // return arr.every((item) => areAllFieldsFilled(item)); //修复新增的时候id校验 return arr.every((item) => { const { coursesId, id, ...rest } = item; return areAllFieldsFilled(rest); }); }