gaoluyang
5 小时以前 e449a5408265e4bd1f6c66f5be28a42efac444ee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
 * 项目下拉选项
 *
 * 招投标、诉讼、销售报价、销售台账等多处需要「选择所属项目」,
 * 后端项目管理返回的字段名不统一(项目名称在 title 上,id 在 id 上),
 * 统一在这里归一化成 FormPicker 认识的 {name, value},并保留 raw 供回填使用。
 */
import { listProject } from "@/api/projectManagement/project";
 
const pickProjectName = project =>
  project?.title ?? project?.projectName ?? project?.name ?? "";
 
export function normalizeProjectOptions(records = []) {
  return (records || []).map(project => ({
    name: pickProjectName(project),
    value: project.id ?? project.projectId,
    raw: project,
  }));
}
 
/**
 * 拉取项目列表(不分页)
 * @returns {Promise<Array<{name, value, raw}>>}
 */
export async function loadProjectOptions(params = {}) {
  const res = await listProject({ current: -1, size: -1, ...params });
  const records = res?.data?.records || res?.records || res?.data || [];
  return normalizeProjectOptions(Array.isArray(records) ? records : []);
}
 
export { pickProjectName };