import type { AssetTypeModel, AssetModel } from './model';

import type { BaseResult } from '#/api/base-result';

import { commonExport } from '#/api/helper';
import { requestClient } from '#/api/request';

// API路径常量枚举
enum Api {
  // 资产类型 - 导出
  assetTypeExport = '/assetType/type/export',
  // 资产类型 - 列表查询
  assetTypeList = '/assetType/type/list',
  // 资产类型 - 基础路径
  assetTypeRoot = '/assetType/type',
  
  // 资产档案 - 导出
  assetExport = '/asset/asset/export',
  // 资产档案 - 列表查询
  assetList = '/asset/asset/list',
  // 资产档案 - 基础路径
  assetRoot = '/asset/asset',

  // 资产档案 - 操作日志列表查询
  assetLogList = '/assetLog/log/list',
}

/**
 * 查询资产类型列表
 * @param params 查询参数
 * @returns 分页结果
 */
export function assetTypeList(params: any) {
  return requestClient.get<BaseResult<AssetTypeModel[]>>(Api.assetTypeList, {
    params,
  });
}

/**
 * 获取资产类型详细信息
 * @param id 资产类型ID
 * @returns 资产类型详情
 */
export function getAssetTypeDetail(id: string) {
  return requestClient.get<AssetTypeModel>(`${Api.assetTypeRoot}/${id}`);
}

/**
 * 新增资产类型
 * @param data 资产类型数据
 * @returns 操作结果
 */
export function addAssetType(data: AssetTypeModel) {
  return requestClient.post(Api.assetTypeRoot, data, {
    successMessageMode: 'message',
  });
}

/**
 * 修改资产类型
 * @param data 资产类型数据
 * @returns 操作结果
 */
export function updateAssetType(data: AssetTypeModel) {
  return requestClient.put(Api.assetTypeRoot, data, {
    successMessageMode: 'message',
  });
}

/**
 * 删除资产类型
 * @param ids 资产类型ID数组
 * @returns 操作结果
 */
export function deleteAssetType(ids: string[]) {
  return requestClient.delete(`${Api.assetTypeRoot}/${ids.join(',')}`, {
    successMessageMode: 'message',
  });
}

/**
 * 导出资产类型列表
 * @param data 导出参数
 * @returns 导出结果
 */
export function exportAssetType(data: Partial<AssetTypeModel>) {
  return commonExport(Api.assetTypeExport, data);
}
/**
 * 查询资产档案操作日志列表
 * @param params 查询参数
 * @returns 分页结果
 */
export function assetLogList(params: any) {
  return requestClient.get<BaseResult<any[]>>(Api.assetLogList, {
    params,
  });
}
/**
 * 查询资产档案列表
 * @param params 查询参数
 * @returns 分页结果
 */
export function assetList(params: any) {
  return requestClient.get<BaseResult<AssetModel[]>>(Api.assetList, {
    params,
  });
}

/**
 * 获取资产档案详细信息
 * @param id 资产档案ID
 * @returns 资产档案详情
 */
export function getAssetDetail(id: string) {
  return requestClient.get<AssetModel>(`${Api.assetRoot}/${id}`);
}

/**
 * 新增资产档案
 * @param data 资产档案数据
 * @returns 操作结果
 */
export function addAsset(data: AssetModel) {
  return requestClient.post(Api.assetRoot, data, {
    successMessageMode: 'message',
  });
}

/**
 * 修改资产档案
 * @param data 资产档案数据
 * @returns 操作结果
 */
export function updateAsset(data: AssetModel) {
  return requestClient.put(Api.assetRoot, data, {
    successMessageMode: 'message',
  });
}

/**
 * 删除资产档案
 * @param ids 资产档案ID数组
 * @returns 操作结果
 */
export function deleteAsset(ids: string[]) {
  return requestClient.delete(`${Api.assetRoot}/${ids.join(',')}`, {
    successMessageMode: 'message',
  });
}

/**
 * 导出资产档案列表
 * @param data 导出参数
 * @returns 导出结果
 */
export function exportAsset(data: Partial<AssetModel>) {
  return commonExport(Api.assetExport, data);
}
