Blame view

common/utils/upload.js 2.1 KB
9b30ab8c   刘淇   新增快速工单,原版
1
  // @/common/utils/upload.ts
c293da23   刘淇   新园林init
2
3
  import globalConfig from '@/common/config/global';
  import cache from '@/common/utils/cache';
9b30ab8c   刘淇   新增快速工单,原版
4
5
  import { useUserStore } from '@/pinia/user';
  import { fileUpload } from '@/api/common';
c293da23   刘淇   新园林init
6
  
9b30ab8c   刘淇   新增快速工单,原版
7
8
9
10
11
12
13
14
  // 统一的多文件上传方法(单/多图都走这个)
  export const uploadImages = async (options) => {
    const {
      filePaths,
      fileKey = 'file',
      header = {},
      ignoreError = true // 忽略单张失败,继续上传其他
    } = options;
c293da23   刘淇   新园林init
15
  
9b30ab8c   刘淇   新增快速工单,原版
16
17
18
    if (!filePaths || filePaths.length === 0) {
      uni.showToast({title: '请选择要上传的图片', icon: 'none'});
      return [];
c293da23   刘淇   新园林init
19
20
    }
  
9b30ab8c   刘淇   新增快速工单,原版
21
22
23
24
25
26
27
    const userStore = useUserStore()
    const defaultHeader = {
      'Content-Type': 'multipart/form-data',
      'Authorization': 'Bearer ' + (userStore.token || cache.get(globalConfig.cache.tokenKey) || '')
    };
    const finalHeader = {...defaultHeader, ...header};
    const resultUrls = []; // 最终返回的URL数组
c293da23   刘淇   新园林init
28
  
9b30ab8c   刘淇   新增快速工单,原版
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
    // 遍历上传(单/多图统一遍历逻辑)
    for (let i = 0; i < filePaths.length; i++) {
      try {
        const url = await new Promise((resolve, reject) => {
          uni.uploadFile({
            url: `${globalConfig.api.baseUrl}${fileUpload}`,
            filePath: filePaths[i],
            name: fileKey,
            header: finalHeader,
            success: (res) => {
              try {
                const data = JSON.parse(res.data);
                if (data.code === 0) {
                  resolve(data.data); // 接口返回的URL在data.data中
                } else {
                  reject(new Error(data.msg || '上传失败'));
                }
              } catch (e) {
                reject(new Error('解析返回数据失败'));
              }
            },
            fail: (err) => {
              reject(new Error(err.errMsg || '网络错误'));
c293da23   刘淇   新园林init
52
            }
9b30ab8c   刘淇   新增快速工单,原版
53
          });
c293da23   刘淇   新园林init
54
        });
9b30ab8c   刘淇   新增快速工单,原版
55
56
57
58
59
60
        resultUrls.push(url); // 成功的URL加入数组
      } catch (err) {
        console.error(`第${i+1}张图片上传失败:`, err);
        if (!ignoreError) break; // 不忽略错误则终止上传
      }
    }
c293da23   刘淇   新园林init
61
  
9b30ab8c   刘淇   新增快速工单,原版
62
    return resultUrls; // 始终返回数组(单图返回长度1,多图返回对应长度,无成功则返回空数组)
c293da23   刘淇   新园林init
63
  };