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 @@
+
+
+
+
+
+
+ {{ value.loginIcon || '🔑' }}
+
+ {{ value.loginTipText || '登录后查看我的推荐码' }}
+
+
+ {{ value.loginBtnText || '去登录' }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ value.consentText || '您的推荐码将用于企业入驻来源追踪,我们会记录每一次通过您分享链接完成的入驻申请,用于您的推广收益结算。开通后可随时在页面停止使用。' }}
+
+
+
+
+ {{ loadingCode ? '提交中...' : (value.consentButtonText || '同意并获取推荐码') }}
+
+
+
+
+
+
+ 推荐码加载中...
+
+
+
+
+
+
+ 推荐码
+ {{ code || '暂无' }}
+ 复制
+
+
+
+ {{ value.buttonText || '立即分享' }}
+
+
+ {{ value.placeholderCopyText || '复制链接' }}
+
+
+ {{ value.placeholderRegenerateText || '换一个新码' }}
+
+
+
+
+ {{ shareLink }}
+
+
+
+
+
+ {{ value.posterQrTip || '扫码进入并填写入驻信息' }}
+
+
+
+
+
+
+
+
+ {{ code || '暂无' }}
+ {{ value.placeholderCopyText || '复制链接' }}
+
+
+
+
+ {{ value.placeholderRegenerateText || '换一个新码' }}
+
+
+
+ {{ shareLink }}
+
+
+
+
+ {{ value.posterQrTip || '扫码进入并填写入驻信息' }}
+
+
+
+
+
+
+
+
+
+ {{ code || '暂无' }}
+
+ 复制
+
+
+
+
+
+ {{ value.placeholderCopyText || '复制链接' }}
+
+
+ {{ value.placeholderRegenerateText || '换一个新码' }}
+
+
+
+ {{ shareLink }}
+
+
+
+
+
+
+ {{ value.posterQrTip || '扫码进入并填写入驻信息' }}
+
+
+
+
+
+
+
+
+
+
+
+
+