common.js 3.48 KB
import request from '@/utils/request'
import { Loading } from 'element-ui';
import {
  pathToBase64,
  base64ToPath
} from '@/js_sdk/mmmm-image-tools/index.js'
/**
 * 参数处理 key获取value值
 * @param obj值 arr数组
 */
// 根据key获取value值
export function assignValues(obj, arr) {
  const updatedArr = arr.map(item => {
    item.value = obj[item.key];
    return {
      type: item.type ? item.type : 'other',
      name: item.name,
      key: item.key,
      value: item.value?item.value:'— —'
      // value: Array.isArray(item.value)? item.value :item.value == 0 ? 0: item.value?item.value:'— —'
    };
  });
  return updatedArr;
}
/**
 * 通用js方法封装处理
 * Copyright (c) 2019
 */

// 日期格式化
export function parseTime(time, pattern) {
  if (arguments.length === 0 || !time) {
    return null
  }
  const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
  let date
  if (typeof time === 'object') {
    date = time
  } else {
    if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
      time = parseInt(time)
    } else if (typeof time === 'string') {
      time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm), '');
    }
    if ((typeof time === 'number') && (time.toString().length === 10)) {
      time = time * 1000
    }
    date = new Date(time)
  }
  const formatObj = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  }
  const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
    let value = formatObj[key]
    // Note: getDay() returns 0 on Sunday
    if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }
    if (result.length > 0 && value < 10) {
      value = '0' + value
    }
    return value || 0
  })
  return time_str
}
/**
 * 参数处理 根据num获取二维数组
 * @param obj值 arr数组
 */
// 根据key获取value值
export function createDoubleArray(arr, num) {
  const doubleArr = [];
  for (var i = 0; i < arr.length; i += num) { // 3个为一组转为二维数组
    doubleArr.push(arr.slice(i, i + num))
  };
  return doubleArr;
}

/* 将二进制图片转换成base64显示,单图传fileId返回一张base64图片,
多图传数组,自动获取response下的fileId,返回base64图片数组 */
export async  function getPhotoUrl(fileIds) {
  const { portal} = window.context;
  let  imgUrl = '';
  const fetchPhoto = async (fileId) => {
    const url = `${portal}/system/file/v1/preview?fileId=${fileId}`;
    try {
      const response = await request(url, {
        method: 'get',
        responseType: 'blob',
      });
      if (response.size > 0) {
        var blob = response;
        var reader = new FileReader();
        reader.readAsDataURL(blob);
        await new Promise((resolve, reject) => {
          reader.onload =  function (e) {
            imgUrl = e.target.result;
            resolve();
          };
        })
      }
      return imgUrl;
    } catch (error) {
      console.error(error);
      return null;
    }
  };
  if (Array.isArray(fileIds)) {
    // this.$modal.showLoading('请稍后...')
    Loading.service('请稍后...');
    const promises = fileIds.map(fileIdObj => fetchPhoto(fileIdObj.response.fileId));
    const results = await Promise.all(promises);
    // this.$modal.closeLoading()
    Loading.service('请稍后...').close();
    return results;
  } else {
    return await fetchPhoto(fileIds);
  }
}