// import baseURL from '../common/config.js'

// 请求服务器地址
// const baseURL = 'http://192.168.50.242:8026';
// 向外暴露一个方法 myRequest
export const myRequest = (options) => {
  let headers = {}
  // headers["Content-Type"] = "multipart/form-data";
  headers['Content-Type'] = 'application/json'
  // headers["Content-Type"] = "application/x-www-form-urlencoded";

  return new Promise((resolve, reject) => {
    uni.request({
      // 开发者服务器接口地址（请求服务器地址 + 具体接口名）
      url: options.url,
      // 请求方式（若不传，则默认为 GET ）
      method: options.method || 'GET',
      // 请求参数（若不传，则默认为 {} ）
      data: { ...(options.data || {}) },
      header: headers,
      // 请求成功
      success: (res) => {
        // 此判断可根据自己需要更改
        if (res.statusCode == 500) {
          reject(res)
          return uni.showToast({
            title: '网络错误！',
            icon: 'none',
          })
        }
        resolve(res)
      },
      // 请求失败
      fail: (err) => {
        uni.showToast({
          title: '请求接口失败！',
          icon: 'none',
        })
        reject(err)
      },
      //请求结束之后，执行的回调函数（成功或失败都会执行）
      complete() {
        //隐藏loading
        // uni.hideLoading()
      },
    })
  })
}

export const getPrice = (value = 0) => Number(value ?? 0) / 100

// 复制
export const myCopy = (txt = '') => {
  const input = document.createElement('input') // 创建一个新input标签
  input.setAttribute('readonly', 'readonly') // 设置input标签只读属性
  input.setAttribute('value', txt) // 设置input value值为需要复制的内容
  document.body.appendChild(input) // 添加input标签到页面
  input.select() // 选中input内容
  input.setSelectionRange(0, 9999) // 设置选中input内容范围
  document.execCommand('copy') // 复制
  document.body.removeChild(input) // 删除新创建的input标签
  //此处可以设置一个弹窗提示
  uni.$u.toast('复制成功')
}

// 图片水印
const base64_encode = (str) => {
  // 下面是64个基本的编码
  const base64EncodeChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
  let out
  let i
  let len
  let c1
  let c2
  let c3
  len = str.length
  i = 0
  out = ''
  while (i < len) {
    c1 = str.charCodeAt(i++) & 0xff
    if (i === len) {
      out += base64EncodeChars.charAt(c1 >> 2)
      out += base64EncodeChars.charAt((c1 & 0x3) << 4)
      out += '=='
      break
    }
    c2 = str.charCodeAt(i++)
    if (i === len) {
      out += base64EncodeChars.charAt(c1 >> 2)
      out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xf0) >> 4))
      out += base64EncodeChars.charAt((c2 & 0xf) << 2)
      out += '='
      break
    }
    c3 = str.charCodeAt(i++)
    out += base64EncodeChars.charAt(c1 >> 2)
    out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xf0) >> 4))
    out += base64EncodeChars.charAt(((c2 & 0xf) << 2) | ((c3 & 0xc0) >> 6))
    out += base64EncodeChars.charAt(c3 & 0x3f)
  }
  return out
}

const utf16to8 = (str) => {
  let out
  let i
  let len
  let c
  out = ''
  len = str.length
  for (i = 0; i < len; i++) {
    c = str.charCodeAt(i)
    if (c >= 0x0001 && c <= 0x007f) {
      out += str.charAt(i)
    } else if (c > 0x07ff) {
      out += String.fromCharCode(0xe0 | ((c >> 12) & 0x0f))
      out += String.fromCharCode(0x80 | ((c >> 6) & 0x3f))
      out += String.fromCharCode(0x80 | ((c >> 0) & 0x3f))
    } else {
      out += String.fromCharCode(0xc0 | ((c >> 6) & 0x1f))
      out += String.fromCharCode(0x80 | ((c >> 0) & 0x3f))
    }
  }
  return out
}

export const baseEncode = (str) => {
  return base64_encode(utf16to8(str))
}

export const getImageInfo = (src) => {
  return new Promise((resolve, reject) => {
    uni.getImageInfo({ src, success: resolve, fail: reject })
  })
}

export default myRequest
