123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- import Taro from '@tarojs/taro';
- import { getToken, setToken } from './token';
- import logger from './log';
-
- const getQueryStrByParams = params => {
- if (!params) return undefined;
-
- return Object.keys(params).map(key => {
- const value = params[key];
- return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`
- }).join('&')
- }
-
- export default function request(api, options = {}) {
- return new Promise((resolve, reject) => {
- const { method = 'GET', params, data = {}, header = {}, silent = false, noSuccesTip, ...cfgs } = options;
- const queryStr = params ? getQueryStrByParams(params) : undefined;
-
- const url = queryStr ? `${HOST}${api}?${queryStr}` : `${HOST}${api}`;
- const personId = Taro.getStorageSync('personId');
-
- const onError = (err) => {
- console.error(err);
- logger.error(`接口 [${method}]: ${url}`);
- logger.error('参数: ', data);
- logger.error(err);
-
- if (!silent && 'GET' !== method.toUpperCase()) {
- Taro.showModal({
- title: err.message || err,
- showCancel: false,
- })
- }
-
- reject(err);
- };
-
- Taro.request({
- url,
- data,
- method,
- header: {
- 'x-personId': personId,
- 'content-type': 'application/json',
- 'authorization': getToken(),
- ...header,
- },
- ...cfgs,
- }).then(({ statusCode, header, data = result }) => {
- if (statusCode >= 300) {
- logger.error(header);
- return onError(`网络错误 ${statusCode}`);
- }
-
- if (data.code === 1000) {
- if (data.data?.token) {
- setToken(data.data.token);
- }
-
- if (!silent && 'GET' !== method.toUpperCase()) {
- if (!noSuccesTip) {
- Taro.showToast({
- title: '操作成功',
- icon: 'none',
- })
- }
- }
-
- resolve(data.data);
- } else {
- onError(data);
- }
- }).catch(onError);
-
- });
- }
-
-
- export const uploadFiles = async (files, url) => {
- const uploads = []
- const token = getToken();
- for (var i = 0; i < files.length; i++) {
- uploads[i] = new Promise((resolve, reject) => {
- Taro.uploadFile({
-
- url: url || `${HOST}/api/ma/file`,
- filePath: files[i].tempFilePath,
- header: {
- 'authorization': token,
- },
- name: 'file',
- formData: {
- fileType: files[i].fileType,
- },
- success: function (res) {
-
- const _data = JSON.parse(res.data)
-
-
-
-
- resolve(_data.data)
- },
- fail(err) {
- reject(err)
- }
- })
- })
- }
-
- return Promise.all(uploads)
- }
|