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 || '扫码进入并填写入驻信息' }}
+
+
+
+
+
+
+
+
+
+
+
+
+