seal.ts 6.6 KB
import { defHttp } from '/@/utils/http/axios';

enum Api {
  SEAL_LIST = '/order/erp/seal/list_by_page', // 印章申请列表
  SEAL_CREATE = '/order/erp/seal/add', // 创建印章申请
  SEAL_UPDATE = '/order/erp/seal/update', // 更新印章申请
  SEAL_DELETE = '/order/erp/seal/delete', // 删除印章申请
  SEAL_AUDIT = '/order/erp/seal/audit', // 审核印章申请
  SYSTEM_SETTING = '/order/erp/system_setting/query_list', // 获取系统设置
  COMPANY_LIST = '/order/erp/jobs/all', // 获取公司列表
  DEPT_LIST = '/order/erp/depts/all', // 获取部门列表
  SEAL_SET_STATUS = '/order/erp/seal/setStatus',
}

// 获取印章申请列表
export const getSealList = async (params: any) => {
  const res = await defHttp.post<any>({
    url: Api.SEAL_LIST,
    params,
  });
  
  // 添加调试信息
  console.log('[getSealList] 完整响应:', res);
  
  // 根据实际响应结构处理数据
  if (res && res.records) {
    console.log('[getSealList] records数据:', res.records);
    
    // 如果records是数组
    if (Array.isArray(res.records)) {
      if (res.records.length > 0) {
        console.log('[getSealList] 第一条记录的字段:', Object.keys(res.records[0]));
        console.log('[getSealList] 字段详情:', res.records[0]);
      }
      
      return {
        items: res.records,
        total: res.total || res.records.length
      };
    }
    
    // 如果records是对象,可能包含实际的数据数组
    if (res.records.records && Array.isArray(res.records.records)) {
      console.log('[getSealList] 嵌套records数据:', res.records.records);
      if (res.records.records.length > 0) {
        console.log('[getSealList] 第一条记录的字段:', Object.keys(res.records.records[0]));
        console.log('[getSealList] 字段详情:', res.records.records[0]);
      }
      
      return {
        items: res.records.records,
        total: res.records.total || res.records.records.length
      };
    }
  }
  
  // 如果数据结构不符合预期,返回空数据
  console.log('[getSealList] 数据结构不符合预期,返回空数据');
  return {
    items: [],
    total: 0
  };
};

// 获取文件分类选项
export const getFileTypeOptions = async () => {
  const res = await defHttp.post<any>({
    url: Api.SYSTEM_SETTING,
    params: {
      settingCode: 'fileType'
    },
  });
  
  console.log('[getFileTypeOptions] 响应:', res);
  
  if (res && res.records && Array.isArray(res.records)) {
    return res.records.map(item => ({
      label: item.relationValue,
      value: item.id
    }));
  }
  
  if (res && Array.isArray(res)) {
    return res.map(item => ({
      label: item.relationValue,
      value: item.id
    }));
  }
  
  return [];
};

// 获取印章类型选项
export const getSealTypeOptions = async () => {
  const res = await defHttp.post<any>({
    url: Api.SYSTEM_SETTING,
    params: {
      settingType: [80]
    },
  });
  
  console.log('[getSealTypeOptions] 响应:', res);
  
  if (res && res.records && Array.isArray(res.records)) {
    return res.records.map(item => ({
      label: item.relationName,
      value: item.id
    }));
  }
  
  if (res && Array.isArray(res)) {
    return res.map(item => ({
      label: item.relationName,
      value: item.id
    }));
  }
  
  return [];
};

// 获取部门选项
export const getDeptOptions = async () => {
  const res = await defHttp.post<any>({
    url: Api.DEPT_LIST,
  });
  
  console.log('[getDeptOptions] 响应:', res);
  
  if (res && res.records && Array.isArray(res.records)) {
    return res.records.map(item => ({
      label: item.name,
      value: item.id
    }));
  }
  
  if (res && Array.isArray(res)) {
    return res.map(item => ({
      label: item.name,
      value: item.id
    }));
  }
  
  return [];
};

// 获取公司列表选项
export const getCompanyOptions = async () => {
  const res = await defHttp.post<any>({
    url: Api.COMPANY_LIST,
  });
  
  console.log('[getCompanyOptions] 响应:', res);
  console.log('[getCompanyOptions] 响应类型:', typeof res);
  console.log('[getCompanyOptions] 是否为数组:', Array.isArray(res));
  
  // 处理不同的响应格式
  let dataArray = res;
  
  // 如果响应包含 data 字段
  if (res && res.data) {
    console.log('[getCompanyOptions] 找到 data 字段:', res.data);
    dataArray = res.data;
  }
  
  // 如果响应包含 records 字段
  if (res && res.records) {
    console.log('[getCompanyOptions] 找到 records 字段:', res.records);
    dataArray = res.records;
  }
  
  console.log('[getCompanyOptions] 最终数据数组:', dataArray);
  console.log('[getCompanyOptions] 最终数据是否为数组:', Array.isArray(dataArray));
  
  if (Array.isArray(dataArray)) {
    console.log('[getCompanyOptions] 数组长度:', dataArray.length);
    if (dataArray.length > 0) {
      console.log('[getCompanyOptions] 第一个元素:', dataArray[0]);
      console.log('[getCompanyOptions] 第一个元素的字段:', Object.keys(dataArray[0]));
    }
    
    const options = dataArray.map(item => ({
      label: item.name,
      value: item.id
    }));
    
    console.log('[getCompanyOptions] 转换后的选项:', options);
    return options;
  }
  
  console.log('[getCompanyOptions] 数据不是数组格式:', dataArray);
  return [];
};

// 创建印章申请
export const createSealApplication = async (params: {
  fileName: string;
  fileTypeId: number;
  signType: string;
  count: number;
  sealTypesId: number[];
  companyId: number;
  deptId: number;
  files: string[];
  note: string;
}) => {
  return await defHttp.post<any>({
    url: Api.SEAL_CREATE,
    params,
  });
};

// 编辑印章申请
export const updateSealApplication = async (params: {
  id: string | number;
  fileName: string;
  fileTypeId: number;
  signType: string;
  count: number;
  sealTypesId: number[];
  companyId: number;
  deptId: number;
  files: string[];
  note: string;
}) => {
  return await defHttp.post<any>({
    url: '/order/erp/seal/edit',
    params,
  });
};

// 更新印章申请
export const updateSeal = async (params: any) => {
  return await defHttp.post<any>({
    url: Api.SEAL_UPDATE,
    params,
  });
};

// 删除印章申请
export const deleteSeal = async (id: string | number) => {
  return await defHttp.post<any>({
    url: Api.SEAL_DELETE,
    params: {
      id: id
    },
  });
};

// 审核印章申请
export const auditSeal = async (params: any) => {
  return await defHttp.post<any>({
    url: Api.SEAL_AUDIT,
    params,
  });
};

/**
 * 设置印章申请审核状态
 */
export const setSealStatus = (params: { id: string | number; managerStatus?: number; financeStatus?: number }) =>
  defHttp.post<any>({ url: Api.SEAL_SET_STATUS, params });