import request from '@/config/axios'

// 标签模板详情相关类型定义
export interface TagTemplateDetailDO {
  id?: number // 主键ID
  tagId?: number // 标签ID
  fieldCode?: string // 字段编码
  fieldName?: string // 字段名称
}

// 模板管理相关类型定义
export interface TemplateVO {
  id?: number // 主键ID, 示例值(32616), integer(int64)
  apiId?: number // 关联sap_api_config.id, 示例值(13813), integer(int64)
  templateCode: string // 模板编码, string
  templateName: string // 模板名称, 示例值(赵六), string
  dataSource: string // 数据源（一般为表名）, string
  designStatus: number // 设计状态：0-未设计 1-设计中 2-设计完成, 示例值(2), integer(int32)
  status: number // 模板状态：0-草稿 1-生效 2-失效, 示例值(1), integer(int32)
  tagTemplateDetails?: TagTemplateDetailDO[] // 标签模板详情列表, array
  createTime?: string // 创建时间, string(date-time)
  updateTime?: string // 更新时间, string(date-time)
  creator?: string // 创建人, string
  updater?: string // 更新人, string
  deleted?: boolean // 是否删除, boolean
}

// 分页查询参数
export interface TemplatePageParam {
  pageNo?: number
  pageSize?: number
  templateName?: string // 模板名称
  templateCode?: string // 模板编码
  dataSource?: string // 数据源
  status?: number // 模板状态
  designStatus?: number // 设计状态
  apiId?: number // 关联接口ID
}

// 查询模板列表
export const getTemplatePage = (data: TemplatePageParam) => {
  return request.post({ url: '/print/tag-template-config/page', data })
}
// 查询模板详情
export const getTemplate = (id: number) => {
  return request.get({ url: '/print/tag-template-config/get?id=' + id })
}
//获取标签模板数据源下拉
export const getTemplateDataSourceList = () => {
  return request.get({ url: '/print/tag-template-config/getList'})
}
// 获得标签模板详情列表
export const getTemplateDetailList = (id: number) => {
  return request.get({ url: '/print/tag-template-config/list-by-tag-id?tagId=' + id })
}
// 新增模板
export const createTemplate = (data: TemplateVO) => {
  return request.post({ url: '/print/tag-template-config/create-config', data })
}

// 修改模板
export const updateTemplate = (data: TemplateVO) => {
  return request.put({ url: '/print/tag-template-config/update', data })
}

// 删除模板
export const deleteTemplate = (id: number) => {
  return request.delete({ url: '/print/tag-template-config/delete?id=' + id })
}

// 批量删除模板
export const deleteTemplateList = (ids: number[]) => {
  return request.delete({
    url: '/print/tag-template-config/delete-list',
    params: { ids: ids.join(',') }
  })
}
// 模板复制
export const copyTemplate = (id: number) => {
  return request.get({ url: '/print/tag-template-config/copyTagTemplate?id=' + id })
}
// 导出模板
export const exportTemplate = (params: any) => {
  return request.download({ url: '/print/tag-template-config/export-excel', params })
}

// 下载模板导入模板
export const importTemplateTemplate = () => {
  return request.download({ url: '/print/template/get-import-template' })
}

// 导入模板
export const importTemplate = (data: FormData) => {
  return request.post({
    url: '/print/tag-template-config/import',
    data,
    headers: { 'Content-Type': 'multipart/form-data' }
  })
}

// 修改模板状态
export const updateTemplateStatus = (id: number, status: number) => {
  const data = {
    id,
    status
  }
  return request.put({ url: '/print/tag-template-config/update', data })
}

// 修改模板设计状态
export const updateTemplateDesignStatus = (id: number, designStatus: number) => {
  const data = {
    id,
    designStatus
  }
  return request.put({ url: '/print/tag-template-config/update-design-status', data })
}

// 获取模板精简信息列表
export const getSimpleTemplateList = (params): Promise<TemplateVO[]> => {
  return request.get({ url: '/print/tag-template-config/simple-list', params })
}

// 保存模板详情
export const saveTemplateDetails = (templateId: number, details: TagTemplateDetailDO[]) => {
  const data = {
    templateId,
    details
  }
  return request.post({ url: '/print/tag-template-config/save-details', data })
}

// 获取模板详情
export const getTemplateDetails = (templateId: number): Promise<TagTemplateDetailDO[]> => {
  return request.get({ url: '/print/tag-template-config/get-details?templateId=' + templateId })
}
// 获取模板字段信息
export const getTemplateColumnInfo = (params): Promise<any> => {
  return request.get({ url: '/print/return-parameter/column-info', params })
}

export const createTemplateDetails = (data: TemplateVO) => {
  return request.post({ url: '/print/tag-template-config/create-details', data })
}