我用别人fetch 结果.then()not func 原来是我没有return 那个promise ,所以我拿不到值...

/**
 * 拦截器, 配置项
 * noloading  请求加载
 * nomsg 错误吐司提示
 */
import Axios from 'axios'
import { removeToken, getToken, usersign, setCookie, getCookie } from './auth'
import { Toast } from 'vant'
import { stringify } from 'qs'
import { getFormSig, signature } from '@/utils/signature'
import { isAndroid, isQZD } from '@/utils/validate'
import { aesEncrypt, aesDecrypt } from '@/utils/aes'
import QzdCypher from '@qzd-cypher/core'
import { QZD_login } from '@/utils'
import TencentCapture from '@/utils/tencent-captcha.js'
const tencentCapture = new TencentCapture()
import { PUBLIC_KEY } from '@/utils/data'
import { Limit } from '@/utils/index.js'
let cancel
// const promiseArr = {}
// let promiseParamsArr = {}
const CancelToken = Axios.CancelToken

let loading = null
const qzdCypher = new QzdCypher({
  publicKey: PUBLIC_KEY,
  appName: 'QZD_WEB_H5',
  expire: 2
})

// 请求拦截器
Axios.interceptors.request.use(
  (config) => {
    // if (promiseArr[config.url] && !config.noCancel) {
    //   if (config.method === 'get') {
    //     promiseArr[config.url]('操作取消')
    //   } else if (config.method === 'post') {
    //     let repeat = false
    //     try {
    //       repeat = promiseParamsArr[config.url] === JSON.stringify(config.data)
    //       promiseParamsArr[config.url] = JSON.stringify(config.data)
    //     } catch (error) {
    //       console.warn('请求拦截,是否重复请求error:' + error)
    //     }
    //     if (repeat) {
    //       promiseArr[config.url]('操作取消')
    //     }
    //   }
    //   // console.log(promiseParamsArr[config.url], config.data)
    // } else {
    //   promiseArr[config.url] = cancel
    //   promiseParamsArr[config.url] = JSON.stringify(config.data)
    // }
    // ------------------------------------------------
    if (config.showLoading) {
      loading = Toast.loading({
        duration: 0
      })
    }
    const { encrypt } = config
    // token 相关
    if (getToken('accessToken')) {
      const _accessToken = getToken('accessToken')
      const _param_sign = getToken('param_sign')
      config.headers['accessToken'] = _accessToken
      if (encrypt) {
        config.headers['signature'] = getFormSig(config.data)
      } else {
        config.headers['signature'] = signature(_accessToken, _param_sign)
      }
    }
    // 离线模式,填充登录信息
    if (location.protocol && location.protocol.indexOf('http') === -1 && isAndroid()) {
      const _accessToken = sessionStorage.getItem('accessToken_outLine')
      const _param_sign = sessionStorage.getItem('paramSig_outLine')
      config.headers['accessToken'] = _accessToken
      config.headers['signature'] = signature(_accessToken, _param_sign)
    }
    // -----------------------
    // config.headers['accessToken'] =
    //   'eyJhbGciOiJIUzUxMiJ9.ZXlKNmFYQWlPaUpFUlVZaUxDSmhiR2NpT2lKa2FYSWlMQ0psYm1NaU9pSkJNVEk0UTBKRExVaFRNalUySW4wLi5ncjg3RjIxcENKVGwyYU9jaktNSFJnLnJBbUV4RlNraTBfWC1tclU3SVVSal9xWG92SUZ6Q1ZaZXVnRm9rNDVaemVablRlR25qQVkyTU9oNTNYU3NrOERQTF9RR1hfNFFGZkxCdlhEUnZpdnl1anZ0Y3ZJeGFibkxkTWNlOG5GOWRUU1dQWHA0R1hmZXZqbHdGQVBpZFJBNDJEMTZ6VGNCM095SXRZZ1lOcFhlVTQ5VDg3ZFgxbzFxQzVZa1dOSFgxc2tIY3hyTXY2TDNSQVUzQm9hMEpVWjZRaWtVSHdPV2R5VmdhX0c2emN5UDloeUt0QzliTlFvQmN4TGJVcGF2Wi16c1JlZ0tNTGtJSWVvek5QSERfUlJLMjU1VzNiemxnNUZxN3FJa1FiX2dKeVozc1RIVjhrbTRoUmw1M1lFdlpYbWlMMWtycUxqN3FXeTFWUmI3T3Z5MXY2ekVWM0RCTjR2cEd4djNrZ2E2V1V4MjRSWkEyYkRGY0dISUZyek5Ma1NmU1NyeFR0aU1wTGVkaWlNV2wxdndCc3V1RFNYNEM4R2xXZ0tfcVc2VmFaUVpBZWtQZ2hGN210R3ZLQkZLRFEuVWE1SWM4Z29uSkYtdkRMSG5Rd1l4dw._2ohYveDxZn0ejFxNskhEG3_sv2Xhng6oS-mIcrWu2rk79sxd3yvW-QX-AA-vPTS4U-Eue2dfeDr1PQ2tsy5mw'
    // config.headers['signature'] = 'admin.123456'
    // ------------------------------------
    // 访客id相关

    let _uuid = getCookie('wz_uuid') || document.getElementById('confuseLink')?.getAttribute('fingerId')

    if (!_uuid) {
      _uuid = `X/${usersign()}`
      setCookie('wz_uuid', _uuid)
    }
    if (!isQZD()) {
      config.headers['User-Agent-Web'] = _uuid
    }
    if (config.fontConfuse) {
      const fingerId = _uuid.split('/').reverse()[0]
      if (fingerId) config.headers['Qzd-Fingerprint'] = fingerId
      // console.log('config.fontConfuse', fingerId)
    }
    // 安全需求 将req 与 res 进行加密传输。(带有参数防篡改校验)
    if (config.security) {
      config.data = { data: qzdCypher.aesSm4Encode(config.data).data }
    }
    // aesData
    if (config.aesData) config.data = { data: aesEncrypt(JSON.stringify(config.data)) }
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

// 响应拦截器
Axios.interceptors.response.use(
  (response) => {
    let { config = { showLoading: false } } = response
    let { showLoading = '', nomsg = '', hideError = '' } = config
    if (showLoading) loading.clear()
    if (response.data.code === 120 && !hideError) {
      Toast({
        message: response.data.msg,
        duration: 1500
      })
      return response.data
    }
    if (response.data.code === 121 && !hideError) {
      let $Limit = new Limit()
      $Limit.show(response.data)
      return response
    }

    // if (response.data.data.hasOwnProperty('hotRec')) {
    //   Limit.show('GNTQ_ZCPP')
    // }
    if (response.data.code === 103 && !hideError) {
      Toast({
        message: response.data.msg,
        duration: 1500
      })
      removeToken()
      QZD_login()
    }
    if (!nomsg && response.data.code !== 0 && response.data.code !== 103 && response.data.code !== 62002) {
      Toast({
        message: response.data.msg,
        duration: 1500
      })
    }
    // 安全需求 将req 与 res 进行加密传输。(带有参数防篡改校验)
    if (response.config.security && response.data.code === 0 && typeof response.data.data === 'string') {
      response.data = qzdCypher.aesDecode(response.data.data)
    }
    // 腾讯滑块部分
    if (response.data.code === 122 && !response.config.noCapture) {
      if (getToken('accessToken')) {
        if (!window.document.querySelector('iframe#tcaptcha_iframe')) tencentCapture.open(response.data.errorDetail)
      } else {
        QZD_login()
      }
    }
    // 字体混淆友好提示
    if (response.data.code === 11024) {
      Toast({
        message: '您在当前页面停留过久,页面即将自动刷新',
        duration: 2000
      })
      setTimeout(() => {
        window.location.reload()
      }, 2000)
      return
    }
    // app aes
    if (response.data.hasUse) response.data.data = JSON.parse(aesDecrypt(response.data.data1))
    return response.data
  },
  (error) => {
    const { noloading } = error
    if (!noloading) {
      Toast({
        message: '网络连接失败,请稍后再试!',
        duration: 1500
      })
    }
    // Indicator.close()
    return Promise.reject(error)
  }
)

export const fetch = (data, options) => {
  let url = ''
  let opt = {}
  if (typeof data === 'string') {
    url = data
    opt = options || {}
    opt.method = opt.type
  } else {
    opt = data || {}
    url = opt.url
  }

  let baseURL = process.env.NODE_ENV === 'development' ? '/api' : `${process.env.VUE_APP_BASEURL}`

  return new Promise((resolve, reject) => {
    let config = {
      method: opt.method || 'post',
      baseURL,
      url,
      timeout: 100000,
      params: opt.params || '',
      data: opt.headers ? opt.data : stringify(opt.data),
      responseType: opt.dataType || 'json',
      // 设置默认请求头
      headers: opt.headers || {
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
      },
      nomsg: opt.nomsg || false,
      noloading: opt.noloading || false,
      encrypt: opt.encrypt || false,
      noCancel: opt.noCancel || false,
      showLoading: opt.showLoading || false,
      security: opt.security || false,
      hideError: opt.hideError || false,
      fontConfuse: opt.fontConfuse || false
    }
    if (!opt.noCancel) {
      config.cancelToken = new CancelToken(function executor(c) {
        // eslint-disable-next-line @typescript-eslint/no-unused-vars
        cancel = c
      })
    }
    Axios(config)
      .then((res) => {
        resolve(res)
      })
      .catch((err) => {
        console.log(err.message, 'err fetch.js 183')
        reject(err)
      })
  })
}

export const request = {
  get(url, options) {
    options.type = 'get'
    return fetch(url, options)
  },
  post(url, data, options = {}) {
    options.type = 'post'
    options.data = data
    options.headers = options.headers || {
      'Content-Type': 'application/json; charset=UTF-8'
    }
    return fetch(url, options)
  }
}

一定要return

// 查专利input结果
export function getInputResult(data) {
 return request.get('/qzd-bff-enterprise/qzd/v1/pc/search/tech/wantSeeTechResult', data)
}
   let params = { searchKey: this.searchKey, source: 'app', type: 1 }
          getPatentResult({ params }).then((res) => {
            console.log(res)
          })

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值