diff --git a/nginx-https.conf b/nginx-https.conf index b87cbec..3c83d1a 100644 --- a/nginx-https.conf +++ b/nginx-https.conf @@ -61,9 +61,8 @@ server { proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $server_name; - # 请求体相关配置(重要:支持POST请求) - proxy_set_header Content-Type $content_type; - proxy_set_header Content-Length $content_length; + # 勿手动设置 Content-Type / Content-Length:multipart 上传必须原样转发(含 boundary), + # 且分块请求时 $content_length 可能为空,会导致后端报「not a multipart request」。 proxy_pass_request_headers on; proxy_pass_request_body on; @@ -96,9 +95,6 @@ server { proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $server_name; - # POST请求支持 - proxy_set_header Content-Type $content_type; - proxy_set_header Content-Length $content_length; proxy_pass_request_headers on; proxy_pass_request_body on; @@ -124,8 +120,6 @@ server { proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $server_name; - proxy_set_header Content-Type $content_type; - proxy_set_header Content-Length $content_length; proxy_pass_request_headers on; proxy_pass_request_body on; @@ -147,9 +141,6 @@ server { proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $server_name; - # POST请求支持 - proxy_set_header Content-Type $content_type; - proxy_set_header Content-Length $content_length; proxy_pass_request_headers on; proxy_pass_request_body on; diff --git a/src/api/system/jdorder.js b/src/api/system/jdorder.js index 6adf66f..99c72aa 100644 --- a/src/api/system/jdorder.js +++ b/src/api/system/jdorder.js @@ -178,12 +178,18 @@ export function listGroupRebateExcelUploads(query) { }) } -/** 导入跟团返现 Excel(multipart) */ -export function importGroupRebateExcel(formData) { +/** 删除后返表上传记录,并回滚对应订单后返备注(新导入数据) */ +export function deleteGroupRebateUpload(id) { + return request({ + url: '/system/jdorder/groupRebateUpload/' + id, + method: 'delete' + }) +} + +function postGroupRebateMultipart(url, formData) { return axios - .post(process.env.VUE_APP_BASE_API + '/system/jdorder/importGroupRebateExcel', formData, { + .post(process.env.VUE_APP_BASE_API + url, formData, { headers: { Authorization: 'Bearer ' + getToken() }, - // 全局 axios.defaults 为 application/json,会覆盖 multipart;必须去掉由浏览器自动带 boundary transformRequest: [ (data, headers) => { if (data instanceof FormData) { @@ -200,12 +206,22 @@ export function importGroupRebateExcel(formData) { .then((res) => { const d = res.data if (!d || d.code !== 200) { - return Promise.reject(new Error((d && d.msg) || '导入失败')) + return Promise.reject(new Error((d && d.msg) || '请求失败')) } return d }) } +/** 导入跟团返现 Excel(multipart,单文件) */ +export function importGroupRebateExcel(formData) { + return postGroupRebateMultipart('/system/jdorder/importGroupRebateExcel', formData) +} + +/** 批量导入后返表(multipart,多个 files 字段) */ +export function importGroupRebateExcelBatch(formData) { + return postGroupRebateMultipart('/system/jdorder/importGroupRebateExcelBatch', formData) +} + // 手动获取物流信息(用于调试) export function fetchLogisticsManually(data) { return request({ diff --git a/src/views/system/jdorder/orderList.vue b/src/views/system/jdorder/orderList.vue index d28dd55..19c34ea 100644 --- a/src/views/system/jdorder/orderList.vue +++ b/src/views/system/jdorder/orderList.vue @@ -130,7 +130,7 @@ 批量标记后返到账 反向同步第三方单号 批量复制录单格式 - 导入后返表 + 导入后返表 后返上传记录 批量复制后返录表 四川商贸录表 @@ -880,38 +880,48 @@ - +

- 表头需包含「单号」或「订单号」、「是否返现」、返现金额列(优先「总共返现」)。按单号匹配系统订单并追加一条备注记录,同一订单多次上传会保留历史。 + 表头需包含「单号」或「订单号」、「是否返现」、返现金额列(优先「总共返现」)。可选多个 Excel,点「提交后台处理」后由服务端依次导入;不弹逐条结果,请到「后返上传记录」查看。

-
拖到此处,或点击上传
-
仅解析第一个工作表;未匹配到的单号会在结果中列出
+
拖到此处,或点击选择(可多选)
+
单次最多 30 个文件;仅解析每个文件的第一个工作表
+ 提交后台处理
@@ -942,7 +952,7 @@ - + @@ -965,7 +980,7 @@