declare namespace API {
  type APIResponse<T> = {
    code: number;
    success: boolean;
    message: string;
    data: T;
  }

  export type PolicyRequest = {
    /**
     * 内容
     */
    content: string;
    /**
     * 内容_英文版
     */
    contentEn: string;
    /**
     * 是否置顶(0.否、1.是)
     */
    isTop: string;
    /**
     * 是否设置英文内容(0.否、1.是)
     */
    settingEn: number;
    /**
     * 标题
     */
    title: string;
    /**
     * 标题英文
     */
    titleEn: string;
    [property: string]: any;
  }

  export type RegisterRequest = {
    coscoSupplierBank: CoscoSupplierBank[];
    coscoSupplierBase: CoscoSupplierBase;
    coscoSupplierInvoice: CoscoSupplierInvoice;
    coscoSupplierQualifications: CoscoSupplierQualification[];
    coscoSupplierSurvey: CoscoSupplierSurvey;
    coscoSupplierSurveyAttachments: CoscoSupplierSurveyAttachment[];
    coscoSupplierSurveyQuestionReply: CoscoSupplierSurveyQuestionReply[];
    [property: string]: any;
  }

  export type CoscoSupplierBank = {
    account?: string;
    accountName?: string;
    bank?: string;
    city?: string;
    currency?: string;
    interbankNumber?: string;
    nation?: string;
    province?: string;
    [property: string]: any;
  }

  export type CoscoSupplierBase = {
    capital: number;
    contactsEmail: string;
    contactsName: string;
    contactsPhone: string;
    contactsType: string;
    enterpriseType: string;
    idCard: string;
    legalPerson: string;
    licenceAccessory: string;
    licenceDate: string;
    name: string;
    nameEn: string;
    parentCompanyInvestor: string;
    range: string;
    regAddress: string;
    socialCreditCode: string;
    supplierType: string;
    telephone: string;
    workAddress: string;
    [property: string]: any;
  }

  export type CoscoSupplierInvoice = {
    account: string;
    address: string;
    bank: string;
    head: string;
    phone: string;
    qualificationCertificate: string;
    taxpayerCode: string;
    taxpayerType: string;
    [property: string]: any;
  }

  export type CoscoSupplierQualification = {
    accessory?: string;
    authority?: string;
    certificateType?: string;
    code?: string;
    dateTime?: string;
    name?: string;
    termOfValidity?: string;
    typeLevel?: string;
    [property: string]: any;
  }

  export type CoscoSupplierSurvey = {
    dateTime: string;
    email: string;
    name: string;
    phone: string;
    position: string;
    supplierName: string;
    [property: string]: any;
  }

  export type CoscoSupplierSurveyAttachment = {
    attachmentsType: string;
    fileName: string;
    filePath: string;
    fileSize: string;
    fileType: string;
    fileUrl: string;
    [property: string]: any;
  }

  export type CoscoSupplierSurveyQuestionReply = {
    replyValue?: string;
    surveyQuestionId?: string;
    [property: string]: any;
  }
  // 调查问卷返回类型
  type SurveyQuestionResponse = {
    id: string;
    question: string;
    orderBy: string;
    coscoSurveyQuestionOptionList: {
      id: string;
      opentionValue: string;
      optionName: string;
    }[];
  }[]

  // 通用响应类型
  type Response<T = any> = {
    success: boolean;
    data: T;
    message?: string;
    code?: number;
  };

  // 分页响应类型
  type PageResponse<T = any> = {
    records: T[];
    total: number;
    size: number;
    current: number;
    pages: number;
  };

  // 基础分页请求
  interface BasePageRequest {
    pageNo: number;
    pageSize: number;
    [property: string]: any;
  }

  // 分页请求参数
  interface PageRequest {
    basePageRequest: BasePageRequest;
    [property: string]: any;
  }

  // 政策法规数据项
  export interface PolicyRecord {
    basePageRequest: null;
    content: string;
    contentEn: string;
    createBy: string;
    createDate: null;
    createTime: string;
    deleteFlag: null;
    delFlag: string;
    id: string;
    isTop: string;
    lastUpdateTime: null;
    publishBy: string | null;
    publishTime: string | null;
    settingEn: string;
    status: string;
    tenantId: string | null;
    tenantName: string | null;
    title: string;
    titleEn: string | null;
    updateBy: string | null;
    updateDate: string | null;
    updateTime: string;
  }

  // 政策法规请求参数
  export interface PolicyRequest {
    id?: string;
    title: string;
    titleEn: string;
    content: string;
    contentEn: string;
    isTop: string;
    settingEn: number;
  }

  // 下载中心数据项
  export interface DownloadRecord {
    id: string;
    name: string;
    category: string;
    keyword: string;
    createTime: string;
    createBy: string;
    status: string; // 状态：0-草稿，1-已发布
    thumbnail?: string; // 缩略图URL
    fileUrl?: string; // 文件URL
  }

  // 下载中心请求参数
  export interface DownloadRequest {
    id?: string;
    name: string;
    category: string;
    keyword: string;
    fileId?: string;
    thumbnailId?: string;
  }

  // 下载中心查询参数
  export interface DownloadSearchParams {
    name?: string;
    category?: string;
    status?: string;
  }

  // 文件上传响应
  export interface UploadResponse {
    id: string;
    fileName: string;
    fileSize: number;
    fileType: string;
    fileUrl: string;
  }

  // 通知中心数据项
  export interface NoticeRecord {
    id: string;
    title: string;
    titleEn?: string;
    content: string;
    contentEn?: string;
    createTime: string;
    createBy: string;
    status: string; // 状态：0-草稿，1-已发布，2-已下架
    isTop: string; // 是否置顶：0-否，1-是
    settingEn?: number; // 是否设置英文：0-否，1-是
  }

  // 通知中心请求参数
  export interface NoticeRequest {
    id?: string;
    title: string;
    titleEn?: string;
    content: string;
    contentEn?: string;
    isTop: string;
    settingEn?: number;
  }

  // 通知中心查询参数
  export interface NoticeSearchParams {
    title?: string;
    status?: string;
    pageNo?: number;
    pageSize?: number;
  }

  // 帮助中心数据项
  export interface HelpRecord {
    id: string;
    title: string;
    titleEn?: string;
    type: string; // 类型，对应页面中的category
    content: string;
    contentEn?: string;
    createTime: string;
    createBy: string;
    updateTime?: string;
    updateBy?: string;
    status: string; // 状态：0-草稿，1-已发布，2-已下架
    isTop: string; // 是否置顶：0-否，1-是
    settingEn: number; // 是否设置英文：0-否，1-是
    answerContent?: string;
    answerContentNe?: string;
    publishBy?: string | null;
    publishTime?: string | null;
    deleteFlag?: null;
    delFlag?: string;
    tenantId?: string | null;
    tenantName?: string | null;
    lastUpdateTime?: null;
    createDate?: null;
    updateDate?: null;
    basePageRequest?: null;
  }

  // 帮助中心请求参数
  export interface HelpRequest {
    id?: string;
    title: string;
    titleEn?: string;
    type: string; // 类型，对应页面中的category
    content: string;
    contentEn?: string;
    isTop: string;
    settingEn: number;
    answerContent?: string;
    answerContentNe?: number;
  }

  // 帮助中心查询参数
  export interface HelpSearchParams {
    title?: string;
    type?: string; // 类型，对应页面中的category
    status?: string;
    pageNo?: number;
    pageSize?: number;
  }

  // 用户提问数据项
  export interface UserQuestionRecord {
    id: string;
    userId: string;
    username: string;
    email?: string;
    question: string;
    answer?: string;
    createTime: string;
    answerTime?: string;
    status: string; // 状态：0-未回答，1-已回答
  }

  // 用户提问查询参数
  export interface UserQuestionSearchParams {
    question?: string;
    status?: string;
    pageNo?: number;
    pageSize?: number;
  }

  // 用户问题记录类型
  interface QuestionRecord {
    id: string;
    title: string;
    type: string;
    content: string;
    answerContent?: string;
    userName: string;
    companyName: string;
    fullName: string;
    contactDetails: string;
    email: string;
    askTime: string;
    answerTime?: string;
    answerBy?: string;
    isAnswer: string; // 0-未回答，1-已回答
    isPublished?: number; // 0-未发布，1-已发布
    isTop?: number; // 0-未置顶，1-已置顶
    createTime?: string;
    updateTime?: string;
  }

  // 问题列表请求参数
  interface QuestionListRequest {
    isAnswer?: number; // 0-未回答，1-已回答
    title?: string;
    type?: string;
    [property: string]: any;
  }

  // 问题添加请求参数
  interface QuestionAddRequest {
    title: string;
    content: string;
    type: string;
    fullName: string;
    companyName: string;
    userName: string;
    contactDetails: string;
    email: string;
  }

  // 问题回答请求参数
  interface QuestionAnswerRequest {
    id: string;
    answerContent: string;
    isPublished?: number; // 0-未发布，1-已发布
    isTop?: number; // 0-未置顶，1-已置顶
  }

  // 问题状态更新请求参数
  interface QuestionStatusRequest {
    id: string;
    isPublished?: number; // 0-未发布，1-已发布
    isTop?: number; // 0-未置顶，1-已置顶
  }
  // 友情链接分类类型定义
  interface CategoryType {
    id: string;
    name: string;
    type: string;
    parentId: string;
    orderBy: string;
    remark: string;
    delFlag?: string;
    createTime?: string;
    updateTime?: string;
    createBy?: string;
    updateBy?: string;
    key?: string;
    children?: CategoryType[];
  }

  // 友情链接类型定义
  interface LinkType {
    id: string;
    classificationId: string;
    name: string;
    nameEn: string;
    thumbnail: string;
    url: string;
    status: string;
    orderBy: string;
    createTime?: string;
    updateTime?: string;
    categoryName?: string; // 用于显示
    // 以下是详情接口返回的额外字段
    createBy?: string;
    createDate?: string | null;
    updateBy?: string | null;
    updateDate?: string | null;
    tenantId?: string | null;
    tenantName?: string | null;
    deleteFlag?: string | null;
    lastUpdateTime?: string | null;
    delFlag?: string;
    remark?: string | null;
    basePageRequest?: null;
  }
  // 友情链接分类请求参数
  export interface CategoryRequest {
    id?: string;
    name: string;
    type: string;
    parentId: string;
    orderBy: string;
    remark: string;
  }

  // 友情链接分类响应数据
  export interface CategoryItem {
    id: string;
    name: string;
    type: string;
    parentId: string;
    orderBy: string;
    remark: string;
    delFlag: string;
    createTime: string;
    updateTime: string;
    createBy: string;
    updateBy?: string;
  }

  // 友情链接请求参数
  export interface LinkRequest {
    id?: string | number;
    classificationId: string;
    name: string;
    nameEn: string;
    thumbnail: string;
    url: string;
    orderBy: number | string;
  }

  // 友情链接响应数据
  export interface LinkItem {
    id: string;
    classificationId: string;
    name: string;
    nameEn: string;
    thumbnail: string;
    url: string;
    status: string;
    orderBy: string;
    delFlag: string;
    createTime: string;
    updateTime: string;
    createBy: string;
    updateBy?: string;
    remark?: string;
    basePageRequest?: null;
  }

  // 供应商评价任务状态枚举
  export enum TaskStatus {
    DRAFT = '0',       // 草稿
    PUBLISHED = '1',   // 已发布
    PROCESSING = '2',  // 进行中
    COMPLETED = '3',   // 已完成
    CANCELED = '4',    // 已取消
  }

  // 供应商评价任务类型枚举
  export enum TaskType {
    REGULAR = '1',    // 常规评价
    SPECIAL = '2',    // 专项评价
  }

  // 供应商评价任务记录类型
  export interface TaskRecord {
    id: string;
    taskName: string;
    taskCode: string;
    taskType: string;
    templateName: string;
    status: string;
    startTime: string;
    endTime: string;
    createBy: string;
    createTime: string;
    updateBy?: string;
    updateTime?: string;
    key?: string;
  }

  // 供应商评价任务查询参数
  export interface TaskSearchParams {
    taskName?: string;
    taskCode?: string;
    taskType?: string;
    status?: string;
    dateRange?: [string, string];
  }

  // 供应商评价任务请求参数
  export interface TaskRequest {
    id?: string;
    taskName: string;
    taskCode: string;
    taskType: string;
    templateId: string;
    startTime: string;
    endTime: string;
  }
}

// 供应商评价模块类型定义
declare namespace SupplierEvaluate {
  // 模板管理类型定义
  export type TemplateBasePageRequest = {
    pageNo: number;
    pageSize: number;
    [property: string]: any;
  }

  export type TemplateRequest = {
    basePageRequest: TemplateBasePageRequest;
    [property: string]: any;
  }

  export type TemplateResponse = {
    code: number;
    data: TemplateData;
    message: string;
    success: boolean;
    [property: string]: any;
  }

  export type TemplateData = {
    countId: null;
    current: number;
    hitCount: boolean;
    maxLimit: null;
    optimizeCountSql: boolean;
    orders: string[];
    pages: number;
    records: TemplateRecord[];
    searchCount: boolean;
    size: number;
    total: number;
    [property: string]: any;
  }

  export type TemplateRecord = {
    basePageRequest?: null;
    /**
     * 品类id
     */
    categoryId?: string;
    /**
     * 品类名称
     */
    categoryName?: string;
    /**
     * 创建时间
     */
    createTime?: string;
    /**
     * 部门名称
     */
    deptName?: string;
    /**
     * 模板id
     */
    id?: string;
    /**
     * 状态
     */
    status?: string;
    /**
     * 状态类型
     */
    statusName?: string;
    /**
     * 模板名称
     */
    templateName?: string;
    /**
     * 模板编号
     */
    templateCode?: string;
    /**
     * 模板类型
     */
    templateType?: string;
    /**
     * 创建单位
     */
    tenantName?: string;
    /**
     * 创建人
     */
    createBy?: string;
    /**
     * 更新人
     */
    updateBy?: string;
    /**
     * 更新时间
     */
    updateTime?: string;
    /**
     * 部门ID
     */
    deptId?: string;
    /**
     * 用于前端显示用 - 部门
     */
    department?: string;
    [property: string]: any;
  }

  // 模板搜索参数
  export type TemplateSearchParams = {
    templateName?: string;
    categoryId?: string;
    status?: string;
    tenantName?: string;
    dateRange?: [string, string];
    [property: string]: any;
  }

  // 模板详情响应
  export type TemplateDetailResponse = {
    code: number;
    data: TemplateDetail;
    message: string;
    success: boolean;
    [property: string]: any;
  }

  // 模板详情数据
  export type TemplateDetail = {
    categoryId: string;
    categoryLimitation: string;
    copyTemplateId: null;
    createBy: null | string;
    createDate: null | string;
    createTime: string;
    deleteFlag: null | string;
    delFlag: string;
    id: string;
    indicatorStList: IndicatorStItem[];
    lastUpdateTime: null | string;
    status: string;
    templateName: string;
    templateType: string;
    tenantId: null | string;
    tenantName: null | string;
    updateBy: null | string;
    updateDate: null | string;
    updateTime: string;
    [property: string]: any;
  }
// 模板列表项类型
export type TemplateItem = {
  categoryId?: string;
  categoryLimitation?: string;
  copyTemplateId?: null;
  createBy?: string;
  createDate?: null;
  createTime?: string;
  deleteFlag?: null;
  delFlag?: string;
  id: string;
  lastUpdateTime?: null;
  status?: string;
  templateName?: string;
  templateType?: string;
  tenantId?: null;
  tenantName?: null;
  updateBy?: string;
  updateDate?: null;
  updateTime?: string;
  [property: string]: any;
};
  // 一级指标项
  export type IndicatorStItem = {
    baseIndicator: string;
    createBy: string;
    createDate: null | string;
    createTime: string;
    deleteFlag: null | string;
    delFlag: string;
    descIndicator: string;
    id: string;
    indicatorNdList: IndicatorNdItem[];
    lastUpdateTime: null | string;
    orderBy: string;
    score: string;
    templateId: string;
    tenantId: null | string;
    tenantName: null | string;
    updateBy: string;
    updateDate: null | string;
    updateTime: string;
    [property: string]: any;
  }

  // 二级指标项
  export type IndicatorNdItem = {
    createBy: string;
    createDate: null | string;
    createTime: string;
    deleteFlag: null | string;
    delFlag: string;
    id: string;
    indicatorStId: string;
    isStar: string;
    lastUpdateTime: null | string;
    orderBy: string;
    score: string;
    subIndicator: string;
    templateId: string;
    tenantId: null | string;
    tenantName: null | string;
    updateBy: string;
    updateDate: null | string;
    updateTime: string;
    [property: string]: any;
  }

  // 模板添加/更新参数
  export type TemplateSaveRequest = {
    id?: string;
    templateName: string;
    templateCode?: string;
    templateType: string;
    categoryId: string;
    deptId: string;
    status: string;
    [property: string]: any;
  }

  // 模板启用/禁用/删除参数
  export type TemplateStatusRequest = {
    id: string;
  }

  // 模板修改请求参数
  export type TemplateUpdateRequest = {
    categoryId: string;
    categoryLimitation: string;
    id: string;
    indicatorStList: TemplateUpdateIndicatorStItem[];
    status: number;
    templateName: string;
    templateType: string;
    [property: string]: any;
  }

  // 修改请求一级指标项
  export type TemplateUpdateIndicatorStItem = {
    baseIndicator: string;
    descIndicator: string;
    indicatorNdList: TemplateUpdateIndicatorNdItem[];
    orderBy: number;
    score: string;
    [property: string]: any;
  }

  // 修改请求二级指标项
  export type TemplateUpdateIndicatorNdItem = {
    isStar: string;
    orderBy: number;
    score: string;
    subIndicator: string;
    [property: string]: any;
  }

  // 模板新增请求参数
  export type TemplateAddRequest = {
    /**
     * 品类id(cosco_category表主键)
     */
    categoryId: string;
    /**
     * 品类限制类型（0.通用不限品类、1.限制品类）
     */
    categoryLimitation: string;
    /**
     * 二级指标是否可增加
     */
    indicatorNdMore: string;
    indicatorStList: TemplateAddIndicatorStItem[];
    /**
     * 一级指标是否可增加
     */
    indicatorStMore: string;
    /**
     * 是否可增加对应指标类型(数据字典 通用指标、技术指标)
     */
    indicatorTypeMore: string;
    /**
     * 是否启用(0.草稿、1.启用、2.禁用)
     */
    status: number;
    /**
     * 模板名称
     */
    templateName: string;
    /**
     * 评价模板类型(数据字典code)
     */
    templateType: string;
    [property: string]: any;
  }

  // 新增请求一级指标项
  export type TemplateAddIndicatorStItem = {
    /**
     * 基本指标
     */
    baseIndicator: string;
    /**
     * 基本指标是否可编辑(0.是、1.否)
     */
    baseIndicatorEdit: string;
    /**
     * 指标说明
     */
    descIndicator: string;
    /**
     * 指标说明是否可编辑(0.是、1.否)
     */
    descIndicatorEdit: string;
    indicatorNdList: TemplateAddIndicatorNdItem[];
    /**
     * 该一级指标是否可编辑(0.是、1.否)
     */
    indicatorStEdit: string;
    /**
     * 指标类型(数据字典 通用指标、技术指标)
     */
    indicatorType: string;
    /**
     * 排序
     */
    orderBy: number;
    /**
     * 分值
     */
    score: string;
    /**
     * 分值是否可编辑(0.是、1.否)
     */
    scoreEdit: string;
    [property: string]: any;
  }

  // 新增请求二级指标项
  export type TemplateAddIndicatorNdItem = {
    /**
     * 细分指标是否可编辑(0.是、1.否)
     */
    baseIndicatorEdit: string;
    /**
     * 该一级指标是否可编辑(0.是、1.否)
     */
    indicatorNdEdit: string;
    /**
     * 是否设置星号项(0.否、1.是)
     */
    isStar: string;
    /**
     * 星号项是否可编辑(0.是、1.否)
     */
    isStarEdit: string;
    /**
     * 排序
     */
    orderBy: number;
    /**
     * 分值
     */
    score: string;
    /**
     * 分值是否可编辑(0.是、1.否)
     */
    scoreEdit: string;
    /**
     * 细分指标
     */
    subIndicator: string;
    [property: string]: any;
  }

  // 品类树接口返回类型
  export type CategoryTreeResponse = {
    code: number;
    data: CategoryTreeItem[];
    message: string;
    success: boolean;
    [property: string]: any;
  }

  export type CategoryTreeItem = {
    ancestors?: string;
    basePageRequest?: null;
    /**
     * 品类名称
     */
    categoryName?: string;
    children?: CategoryTreeChild[];
    createBy?: string;
    createTime?: string;
    delFlag?: string;
    id?: string;
    lastUpdateTime?: null;
    /**
     * 排序
     */
    orderBy?: string;
    /**
     * 父级id
     */
    parentId?: string;
    remark?: null;
    /**
     * 类型，0分类 1品类
     */
    type?: string;
    updateBy?: null;
    updateTime?: null;
    [property: string]: any;
  }

  export type CategoryTreeChild = {
    ancestors: string;
    basePageRequest: null;
    categoryName: string;
    children: CategoryTreeGrandChild[] | null;
    createBy: string;
    createTime: string;
    delFlag: string;
    id: string;
    lastUpdateTime: null;
    orderBy: string;
    parentId: string;
    remark: null;
    type: string;
    updateBy: null | string;
    updateTime: null | string;
    [property: string]: any;
  }

  export type CategoryTreeGrandChild = {
    ancestors?: string;
    basePageRequest?: null;
    categoryName?: string;
    children?: null;
    createBy?: string;
    createTime?: string;
    delFlag?: string;
    id?: string;
    lastUpdateTime?: null;
    orderBy?: string;
    parentId?: string;
    remark?: null;
    type?: string;
    updateBy?: null;
    updateTime?: null;
    [property: string]: any;
  }
}
