89 lines
2.5 KiB
JavaScript
89 lines
2.5 KiB
JavaScript
/** 企业信息管理:前后端字段与分页格式适配 */
|
||
|
||
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;
|
||
}
|
||
|