import request from "@/utils/request";
import { BaseResult } from "@/models/base";
import { getToken } from "@/utils/cache";
import { ResultCodeEnum } from "@/enums/ResultCodeEnum";

// H5 使用 VITE_APP_BASE_API 作为代理路径，其他平台使用 VITE_APP_API_URL 作为请求路径
let baseApi = import.meta.env.VITE_APP_API_URL;
// #ifdef H5
baseApi = import.meta.env.VITE_APP_BASE_API;
// #endif

const AttachmentAPI = {
  // 上传单个附件文件
  uploadSingleFile(filePath: string) {
    return new Promise<BaseResult<any>>((resolve, reject) => {
      console.log("开始上传文件:", filePath);
      uni.uploadFile({
        url: `${baseApi}/app/addAttachmentFiles`,
        filePath: filePath,
        name: "files",
        header: {
          Authorization: getToken() ? `Bearer ${getToken()}` : "",
        },
        success: (uploadRes) => {
          console.log("上传响应:", uploadRes);
          try {
            const result = JSON.parse(uploadRes.data) as BaseResult<any>;
            console.log("解析后的结果:", result);
            // 业务状态码 00000 表示成功
            if (result.code === ResultCodeEnum.SUCCESS) {
              resolve(result);
            } else {
              // 其他业务处理失败
              const errorMsg = result.msg || "文件上传失败";
              console.error("上传失败:", errorMsg, result);
              uni.showToast({
                title: errorMsg,
                icon: "none",
              });
              reject({
                message: errorMsg,
                code: result.code,
              });
            }
          } catch (e) {
            console.error("解析上传响应失败:", e, uploadRes.data);
            reject({
              message: "解析上传响应失败",
              error: e,
            });
          }
        },
        fail: (error) => {
          console.error("上传请求失败:", error);
          const errorMsg = error.errMsg || "文件上传请求失败";
          uni.showToast({
            title: errorMsg,
            icon: "none",
            duration: 2000,
          });
          reject({
            message: errorMsg,
            error,
          });
        },
      });
    });
  },

  // 批量上传附件文件
  uploadAttachmentFiles(files: string[]) {
    return Promise.all(files.map((filePath) => AttachmentAPI.uploadSingleFile(filePath)));
  },

  // 报工添加附件
  addOutputAttachments(params: { id: number; attachmentId: string }) {
    return request<BaseResult<any>>({
      url: "/app/addOutputAttachments",
      method: "POST",
      data: params,
    });
  },

  // 查看附件列表
  listAttachmentFiles(attachmentIds: number[]) {
    return request<BaseResult<any[]>>({
      url: "/app/listAttachmentFiles",
      method: "POST",
      data: attachmentIds,
    });
  },

  // 删除附件文件
  deleteAttachmentFile(attachmentId: number) {
    return request<BaseResult<any>>({
      url: "/app/deleteAttachmentFile",
      method: "POST",
      data: { attachmentId },
    });
  },
};

export default AttachmentAPI;
