From 0598f97efeaee670101f26cef6abfe8d530c8834 Mon Sep 17 00:00:00 2001 From: jinhhanhan <1683105490@qq.com> Date: Mon, 3 Aug 2026 14:55:36 +0800 Subject: [PATCH] =?UTF-8?q?chore=EF=BC=9A=E4=BF=AE=E6=94=B9=E4=BA=86?= =?UTF-8?q?=E4=BC=9A=E5=91=98=E4=B8=AD=E5=BF=83=E9=A1=B5=E9=9D=A2=E5=BC=B9?= =?UTF-8?q?=E5=87=BA=E3=80=90=E7=BD=91=E7=BB=9C=E5=BC=82=E5=B8=B8=EF=BC=8C?= =?UTF-8?q?=E8=AF=B7=E7=A8=8D=E5=90=8E=E9=87=8D=E8=AF=95=E3=80=91=EF=BC=8C?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E8=8E=B7=E5=8F=96=E6=8E=A8=E8=8D=90=E7=A0=81?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/js/http.js | 61 +- common/js/util.js | 2 +- components-diy/components-recommend-diy.vue | 1179 +++++++++++++++++++ 3 files changed, 1229 insertions(+), 13 deletions(-) create mode 100644 components-diy/components-recommend-diy.vue diff --git a/common/js/http.js b/common/js/http.js index 84f37f3..ab32bb5 100644 --- a/common/js/http.js +++ b/common/js/http.js @@ -173,8 +173,19 @@ export default { _sendRequestNow(params) { - var method = params.data != undefined ? 'POST' : 'GET', - url = (Config.baseUrl + params.url).replace(/(? { + fail: (res) => { console.error('[HTTP][FAIL] uploadBase64', JSON.stringify(res)); typeof params.fail == 'function' && params.fail(res); } @@ -252,8 +277,9 @@ export default { uni.request({ url: Config.baseUrl + '/api/upload/headimgPull', method: 'POST', + // ✅ 修复:application/json header: { - 'content-type': 'application/x-www-form-urlencoded;application/json' + 'content-type': 'application/json' }, data: { app_type: appType, @@ -266,7 +292,7 @@ export default { console.log('[HTTP][RESPONSE] pullImage', 'statusCode=', res.statusCode, JSON.stringify(res.data)); typeof params.success == 'function' && params.success(res.data); }, - fail: () => { + fail: (res) => { console.error('[HTTP][FAIL] pullImage', JSON.stringify(res)); typeof params.fail == 'function' && params.fail(res); } @@ -274,6 +300,17 @@ export default { }, upload(params) { console.log('[HTTP][REQUEST] upload', Config.baseUrl + params.url, 'name=', params.name || 'file'); + // ✅ 关键修复:uni.uploadFile **绝对不能手动设置 Content-Type**! + // 因为 uni.uploadFile 会自动设置成 multipart/form-data; boundary=----xxxxxx + // 手动设置会覆盖掉 boundary,后端无法解析分段上传,导致文件/表单字段解析为空 + var uploadHeader = {}; + // 只合并调用方传的自定义 header,不默认加 content-type + if (params.header && typeof params.header === 'object') { + Object.assign(uploadHeader, params.header); + // 兜底:如果调用方误传了 content-type,就删掉,让 uni 自动设置 multipart/form-data + delete uploadHeader['content-type']; + delete uploadHeader['Content-Type']; + } uni.uploadFile({ url: Config.baseUrl + params.url, filePath: params.filePath, @@ -282,10 +319,10 @@ export default { formData: { app_type: appType, app_type_name: appTypeName, + token: store.state.token || '', + uniacid: uni.getStorageSync('uniacid') || Config.uniacid }, - header: { - 'content-type': 'application/x-www-form-urlencoded;application/json' - }, + header: uploadHeader, success: (res) => { console.log('[HTTP][RESPONSE] upload', Config.baseUrl + params.url, 'statusCode=', res.statusCode, res.data); typeof params.success == 'function' && params.success(JSON.parse(res.data)); diff --git a/common/js/util.js b/common/js/util.js index 6dd3f7f..535d835 100644 --- a/common/js/util.js +++ b/common/js/util.js @@ -1481,7 +1481,7 @@ export default { // title/enable_set_title/page_params 仍需透传到目标 URL,page_params 放最后 // ✅ 内部页:把推荐码写进 page_params(最终会被拼成 URL query,diy-form onLoad options 能收到) - // 仅在当前登录已拿到推荐码时追加,不覆盖上游已有值;双写 recommend_code(老师标准)+ invite(历史兼容) + // 仅在当前登录已拿到推荐码时追加,不覆盖上游已有值;双写 recommend_code+ invite(历史兼容) var _curRecommendCode = _getCurrentRecommendCode(); if (_curRecommendCode) { if (!link.page_params || typeof link.page_params !== 'object') link.page_params = {}; diff --git a/components-diy/components-recommend-diy.vue b/components-diy/components-recommend-diy.vue new file mode 100644 index 0000000..389d858 --- /dev/null +++ b/components-diy/components-recommend-diy.vue @@ -0,0 +1,1179 @@ + + + + +