// 本文件提供一些前端和后端数据交互和转换的一些方法，可批量使用的
const bizTransform = {
  /**
   * 转换服务器的封面数据到前端可用的封面数据
   * @param {String} faceImage 封面文件ID
   * @param {String} faceImageUrl 封面原图
   * @param {String} faceImagePressUrl 压缩过的封面
   * @returns {Array} el-upload组件需要的数据
   */
  faceImageToClient(faceImage, faceImageUrl, faceImagePressUrl) {
    if (!faceImageUrl) {
      return [];
    }
    const result = [
      {
        name: "",
        url: faceImageUrl || "",
        pressUrl: faceImagePressUrl || faceImageUrl || "",
        fileId: faceImage || "",
      },
    ];
    return result;
  },

  /**
   * 转换服务器的封面数据到前端可用的3D模型数据
   * @param {String} file3d 3D文件ID
   * @param {String} file3dUrl 3D文件url
   * @param {String} file3dName 3D文件名称
   * @returns {Array} el-upload组件需要的数据
   */
  file3dToClient(file3d, file3dUrl, file3dName) {
    if (!file3d) {
      return [];
    }
    const file3dArr = [
      {
        name: file3dName,
        url: file3dUrl || "",
        fileId: file3d || "",
      },
    ];
    return file3dArr;
  },
  /**
   *
   * @param {Array} arr 文献id数组
   * @returns {String} 提交给服务器需要的以逗号隔开的字符串
   */
  literatureIdArrToStr(arr) {
    if (arr.length == 0) {
      return "";
    }
    return arr.join(",");
  },

  /**
   *
   * @param {Array} literatureVo 文献数组，每个条目是一个文献对象
   * @returns {Array} 文献ID集合
   */
  literatureListToIds(literatureVo) {
    if (!literatureVo || literatureVo.length == 0) {
      return [];
    } else {
      const ids = literatureVo.map((item) => {
        return item.ids;
      });
      return ids;
    }
  },

  /**
   * 转换状态从布尔型到数值型
   * @param {Boolean} statusBoolean 布尔值的状态
   * @returns {Number} 提交给服务器需要的以逗号隔开的数值
   */
  statusBoolToNum(statusBoolean) {
    const statusNumber = statusBoolean ? 1 : 0;
    return statusNumber;
  },

  /**
   * 转换状态从数值型到布尔型
   * @param {String} statusString 字符串型的状态
   * @returns {Boolean} 组件需要的布尔值
   */
  statusStrToBool(statusString) {
    if (
      !(
        statusString &&
        statusString instanceof String &&
        statusString instanceof Number
      )
    ) {
      return;
    }
    const statusBoolean = Boolean(Number(statusString));
    return statusBoolean;
  },

  /**
   * 回填馆藏单位
   * @param {String} deptId 部门ID
   * @param {Object} userInfo 当前用户的信息
   * @returns {Array} 符合element-ui使用的数组
   */
  getDeptIdArr(deptId, userInfo) {
    let deptIdArr = [];
    if (deptId) {
      deptIdArr = [deptId];
    } else if (userInfo) {
      deptIdArr = [userInfo.deptId];
    }
    return deptIdArr;
  },

  /**
   * 回填馆藏单位
   * @param {Array} deptArr 部门ID集合
   * @returns {String} 部门ID字符串
   */
  getDeptIdStr(deptArr) {
    if (deptArr instanceof Array) {
      if (deptArr.length == 0) {
        return "";
      }
      return deptArr.join(",");
    } else {
      return deptArr;
    }
  },
};

export default bizTransform;
