/** 企业信息管理:前后端字段与分页格式适配 */ import { asId, isIdFieldName, normalizeQueryIds } from "./idUtil"; import { withOrgId } from "./orgContext"; function parseAttachmentUrls(urls, defaultName = "附件.pdf") { if (!urls) { return []; } const raw = String(urls).trim(); // JSON 数组字符串:如 '[{"url":"...","uid":"...","name":"...","status":"done"}]' if (raw.startsWith("[") && raw.endsWith("]")) { try { const parsed = JSON.parse(raw); if (Array.isArray(parsed)) { return parsed .filter((item) => item?.url) .map((item) => ({ name: item.name || `${defaultName.replace(".pdf", "")}1`, fileName: item.fileName || item.name || `${defaultName.replace(".pdf", "")}1`, url: item.url, uid: item.uid || undefined, status: item.status || "done", })); } } catch (_) { // JSON 解析失败,回退到逗号分隔处理 } } // 旧格式:逗号分隔的 URL 字符串 return raw .split(",") .map((url) => url.trim()) .filter(Boolean) .map((url, index) => ({ name: `${defaultName.replace(".pdf", "")}${index + 1}.pdf`, fileName: `${defaultName.replace(".pdf", "")}${index + 1}.pdf`, url, })); } /** 分页查询参数:子表 org_id → org_info.id;机构信息管理 getInfo 不走此方法 */ export function toPageQuery(params = {}, fieldMap = {}) { const query = { current: params.pageIndex ?? params.current ?? 1, size: params.pageSize ?? params.size ?? 10, }; Object.entries(fieldMap).forEach(([from, to]) => { const value = params[from]; if (value !== undefined && value !== null && value !== "") { query[to] = isIdFieldName(to) ? asId(value) : value; } }); return withOrgId(normalizeQueryIds(query)); } export function fromPageResponse(res, mapItem) { if (!res) { return { success: false, data: [], totalCount: 0 }; } const list = Array.isArray(res.data) ? res.data : []; return { ...res, data: mapItem ? list.map(mapItem) : list, totalCount: res.totalCount ?? res.total ?? list.length, }; } export function fromSingleResponse(res, mapItem) { if (!res) { return { success: false, data: null }; } return { ...res, data: res.data && mapItem ? mapItem(res.data) : res.data, }; } /** 监管端机构账号:后端 state 0=启用,1=禁用 */ export function isOrgAccountEnabled(record = {}) { return Number(record.state) === 0; }