From faf1f6d3d8cbac826d1312a1a130124a6b17e839 Mon Sep 17 00:00:00 2001
From: ZF sun <34314687@qq.com>
Date: Wed, 7 Jan 2026 18:28:51 +0800
Subject: [PATCH 1/5] =?UTF-8?q?chore:=20=E5=A2=9E=E5=8A=A0=E5=88=A4?=
=?UTF-8?q?=E6=96=AD=E6=98=AF=E5=BF=AB=E5=BA=94=E7=94=A8=E7=8E=AF=E5=A2=83?=
=?UTF-8?q?=E7=9A=84API=E5=87=BD=E6=95=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
common/js/util.js | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/common/js/util.js b/common/js/util.js
index 9829e01..56519f4 100644
--- a/common/js/util.js
+++ b/common/js/util.js
@@ -1162,5 +1162,23 @@ export default {
verifyMobile(mobile) {
var parse = /^\d{11}$/.test(mobile);
return parse;
+ },
+ /**
+ * 判断是否为快应用环境
+ * @returns {boolean} 是否为快应用
+ */
+ isQuickApp() {
+ const systemInfo = this.getDeviceInfo();
+ return systemInfo.platform === 'quickapp' || process.env.UNI_PLATFORM === 'quickapp';
+ },
+ /**
+ * 判断是否为华为快应用环境
+ * @returns {boolean} 是否为华为快应用
+ */
+ isHuaweiQuickApp() {
+ if (!this.isQuickApp()) return false;
+ const systemInfo = this.getDeviceInfo();
+ return systemInfo.brand === 'HUAWEI' || systemInfo.manufacturer === 'HUAWEI' ||
+ (typeof qh !== 'undefined' && qh.platform === 'huawei');
}
}
\ No newline at end of file
From 6718010ceb476f7af448479acbebf259ab65f5d3 Mon Sep 17 00:00:00 2001
From: ZF sun <34314687@qq.com>
Date: Thu, 8 Jan 2026 09:04:36 +0800
Subject: [PATCH 2/5] =?UTF-8?q?chore:=20common/js/util.js=20=E5=A2=9E?=
=?UTF-8?q?=E5=8A=A0=E5=88=A4=E6=96=AD=E6=98=AF=E5=BF=AB=E5=BA=94=E7=94=A8?=
=?UTF-8?q?=E7=9A=84=E5=87=BD=E6=95=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
common/js/util.js | 8 ++++++++
pages/index/index.vue | 4 +---
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/common/js/util.js b/common/js/util.js
index 56519f4..fb6a505 100644
--- a/common/js/util.js
+++ b/common/js/util.js
@@ -1168,8 +1168,12 @@ export default {
* @returns {boolean} 是否为快应用
*/
isQuickApp() {
+ // #ifndef QUICKAPP-WEBVIEW
const systemInfo = this.getDeviceInfo();
return systemInfo.platform === 'quickapp' || process.env.UNI_PLATFORM === 'quickapp';
+ // #endif
+
+ return true;
},
/**
* 判断是否为华为快应用环境
@@ -1177,8 +1181,12 @@ export default {
*/
isHuaweiQuickApp() {
if (!this.isQuickApp()) return false;
+
+ // #ifndef QUICKAPP-WEBVIEW-HUAWEI
const systemInfo = this.getDeviceInfo();
return systemInfo.brand === 'HUAWEI' || systemInfo.manufacturer === 'HUAWEI' ||
(typeof qh !== 'undefined' && qh.platform === 'huawei');
+ // #endif
+ return true;
}
}
\ No newline at end of file
diff --git a/pages/index/index.vue b/pages/index/index.vue
index 0a5cad0..cdab934 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -137,10 +137,8 @@
-
-
+
-
From ee4fbb277c90d0fb69adeefc111075683c39d597 Mon Sep 17 00:00:00 2001
From: ZF sun <34314687@qq.com>
Date: Thu, 8 Jan 2026 09:39:15 +0800
Subject: [PATCH 3/5] =?UTF-8?q?test(=E9=9A=90=E7=A7=81):=20=E6=B5=8B?=
=?UTF-8?q?=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
components/privacy-popup/privacy-popup.vue | 496 +++++++++++++--------
1 file changed, 309 insertions(+), 187 deletions(-)
diff --git a/components/privacy-popup/privacy-popup.vue b/components/privacy-popup/privacy-popup.vue
index 6ed70c8..6cc4810 100644
--- a/components/privacy-popup/privacy-popup.vue
+++ b/components/privacy-popup/privacy-popup.vue
@@ -1,237 +1,359 @@
-
用户隐私保护提示
- 感谢您使用本小程序,在使用前您应当阅读并同意
- {{privacyContractName}},
- 当点击同意并继续时,即表示您已理解并同意该条款内容,该条款将对您产生法律约束力;如您不同意,将无法继续使用小程序相关功能。
+ 感谢您使用{{ appName }},在使用前您应当阅读并同意
+ {{ privacyContractName }}
+
+ {{ privacyServiceName }}
+
+ ,当点击同意并继续时,即表示您已理解并同意该条款内容,该条款将对您产生法律约束力;如您不同意,将无法继续使用{{ appName }}相关功能。
-
+
-
-
-
-
\ No newline at end of file
From 5a8663eb488b576909247af88952107182403351 Mon Sep 17 00:00:00 2001
From: ZF sun <34314687@qq.com>
Date: Thu, 8 Jan 2026 14:52:01 +0800
Subject: [PATCH 4/5] =?UTF-8?q?fix:=20=E8=A7=A3=E5=86=B3=E5=9C=A8=E5=BF=AB?=
=?UTF-8?q?=E5=BA=94=E7=94=A8=E7=8E=AF=E5=A2=83=E4=B8=AD=E4=B8=8D=E6=98=BE?=
=?UTF-8?q?=E7=A4=BA=E7=94=A8=E6=88=B7=E9=9A=90=E7=A7=81=E6=8F=90=E7=A4=BA?=
=?UTF-8?q?=E7=AA=97=E4=BD=93=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
common/js/util.js | 20 ++++++-
components/privacy-popup/privacy-popup.vue | 68 +++++++++++++++-------
lang/zh-cn/order/activist.js | 12 ++--
pages_goods/public/css/list.scss | 2 +-
4 files changed, 72 insertions(+), 30 deletions(-)
diff --git a/common/js/util.js b/common/js/util.js
index fb6a505..9977c54 100644
--- a/common/js/util.js
+++ b/common/js/util.js
@@ -1169,8 +1169,24 @@ export default {
*/
isQuickApp() {
// #ifndef QUICKAPP-WEBVIEW
- const systemInfo = this.getDeviceInfo();
- return systemInfo.platform === 'quickapp' || process.env.UNI_PLATFORM === 'quickapp';
+ let _isQuickApp = false;
+ try {
+ const ua = navigator?.userAgent?.toLowerCase();
+ console.log('ua = ', ua);
+ _isQuickApp = ua.indexOf('quickapp') !== -1;
+
+ if (!_isQuickApp) {
+ // 特殊说明由于网站是嵌入到快应用的Webview组件中,UA中不会包含quickapp字符串,
+ // 但是会包含uniacid参数,所以这里通过uniacid参数来判断是否为快应用环境
+ _isQuickApp = ua.indexOf('uniacid=') !== -1;
+ }
+ } catch (e) {}
+
+ if (!_isQuickApp) {
+ const systemInfo = this.getDeviceInfo();
+ _isQuickApp = systemInfo?.platform === 'quickapp' || process?.env?.UNI_PLATFORM === 'quickapp';
+ }
+ return _isQuickApp;
// #endif
return true;
diff --git a/components/privacy-popup/privacy-popup.vue b/components/privacy-popup/privacy-popup.vue
index 6cc4810..0a53959 100644
--- a/components/privacy-popup/privacy-popup.vue
+++ b/components/privacy-popup/privacy-popup.vue
@@ -1,6 +1,6 @@
-
-
+
+
用户隐私保护提示
@@ -13,8 +13,13 @@
+
+
+
+
+
@@ -26,6 +31,10 @@
import has from '@system.has'
// #endif
+const closeOtherPagePopUpHooks = new Set();
+const privacyContractPage = '/pages_tool/agreement/contenr?type=0';
+const privacyServicePage = '/pages_tool/agreement/contenr?type=1';
+
export default {
name: 'PrivacyPopup',
data() {
@@ -34,7 +43,6 @@ export default {
showPop: false,
privacyAuthorization: null,
privacyResolves: new Set(),
- closeOtherPagePopUpHooks: new Set(),
privacyContractName: '用户隐私保护指引',
appName: '本小程序',
// #ifdef WEB || H5
@@ -49,7 +57,6 @@ export default {
this.curPageShow()
},
created() {
- console.log(`隐私组件初始化,隐私政策名称:${this.privacyContractName}`)
try {
// #ifdef MP-WEIXIN
//查询微信侧记录的用户是否有待同意的隐私政策信息
@@ -64,7 +71,7 @@ export default {
// #ifdef QUICKAPP-WEBVIEW || H5
if (this.$util.isQuickApp()) {
- if (has?.getPrivacySetting) {
+ if (typeof has != 'undefined' && has?.getPrivacySetting) {
has.getPrivacySetting({
success: (res) => {
if (res.privacyContractName) {
@@ -83,7 +90,7 @@ export default {
getPrivacySettingByQuickApp() {
// #ifdef QUICKAPP-WEBVIEW || H5 || WEB
if (this.$util.isQuickApp()) {
- if (has?.getPrivacySetting) {
+ if (typeof has != 'undefined' && has?.getPrivacySetting) {
has.getPrivacySetting({
success: (res) => {
// console.log(res)
@@ -96,6 +103,15 @@ export default {
}
},
})
+ } else {
+ // 属于嵌入到快应用Webview组件中的情况,按照H5的方式来处理,判断是否已经授权
+ if (uni.getStorageSync('privacyAgreed')) {
+ this.$emit('agree')
+ } else {
+ this.popUp()
+ // 额外逻辑:当前页面的隐私弹窗弹起的时候,关掉其他页面的隐私弹窗
+ this.closeOtherPagePopUp(this.disPopUp)
+ }
}
}
// #endif
@@ -116,7 +132,7 @@ export default {
// #ifdef QUICKAPP-WEBVIEW || H5 || WEB
if (this.$util.isQuickApp()) {
// 监听快速应用侧隐私政策授权变化事件
- if (has?.onPrivacySettingChange) {
+ if (typeof has != 'undefined' && has?.onPrivacySettingChange) {
has.onPrivacySettingChange((res) => {
// console.log(res)
if (res.needAuthorization) {
@@ -132,7 +148,7 @@ export default {
// #endif
// 主动查询用户隐私政策授权状态,针对快速应用
- this.getPrivacySettingByQuickApp();
+ this.getPrivacySettingByQuickApp();
},
// 主动查询用户隐私政策授权状态
proactive() {
@@ -161,6 +177,7 @@ export default {
},
//初始化监听程序
curPageShow() {
+ closeOtherPagePopUpHooks.add(this.disPopUp)
this.privacyAuthorization = resolve => {
this.privacyResolves.add(resolve)
//打开弹窗
@@ -168,11 +185,10 @@ export default {
// 额外逻辑:当前页面的隐私弹窗弹起的时候,关掉其他页面的隐私弹窗
this.closeOtherPagePopUp(this.disPopUp)
}
- this.closeOtherPagePopUpHooks.add(this.disPopUp)
},
// 额外逻辑:当前页面的隐私弹窗弹起的时候,关掉其他页面的隐私弹窗
closeOtherPagePopUp(closePopUp) {
- this.closeOtherPagePopUpHooks.forEach(hook => {
+ closeOtherPagePopUpHooks.forEach(hook => {
if (closePopUp !== hook) {
hook()
}
@@ -193,7 +209,7 @@ export default {
// #ifdef QUICKAPP-WEBVIEW || H5 || WEB
if (this.$util.isQuickApp()) {
- if (has?.openPrivacySetting) {
+ if (typeof has != 'undefined' && has?.openPrivacySetting) {
has.openPrivacySetting({
success: (res) => {
// console.log('打开隐私协议', res);
@@ -202,10 +218,13 @@ export default {
// console.error('打开隐私协议失败', err)
}
});
+ } else {
+ // 属于嵌入到快应用Webview组件中的情况,按照H5的方式来处理
+ this.$util.redirectTo(privacyContractPage);
}
} else {
// H5 环境下的处理逻辑
- this.$util.redirectTo('/pages_tool/agreement/contenr?type=0');
+ this.$util.redirectTo(privacyContractPage);
}
// #endif
},
@@ -213,7 +232,7 @@ export default {
openPrivacyService() {
// #ifdef QUICKAPP-WEBVIEW || H5 || WEB
if (this.$util.isQuickApp()) {
- if (has?.openPrivacySetting) {
+ if (typeof has != 'undefined' && has?.openPrivacySetting) {
has.openPrivacySetting({
success: (res) => {
// console.log('打开用户服务协议', res);
@@ -222,10 +241,13 @@ export default {
// console.error('打开用户服务协议失败', err)
}
});
+ } else {
+ // 属于嵌入到快应用Webview组件中的情况,按照H5的方式来处理
+ this.$util.redirectTo(privacyServicePage);
}
} else {
// H5 环境下的处理逻辑
- this.$util.redirectTo('/pages_tool/agreement/contenr?type=1');
+ this.$util.redirectTo(privacyServicePage);
}
// #endif
},
@@ -258,25 +280,26 @@ export default {
this.privacyResolves.clear()
//关闭弹窗
this.disPopUp()
+
+ // #ifdef QUICKAPP-WEBVIEW || H5 || WEB
+ // 保存用户授权状态到本地存储,用于快应用Webview组件中的H5方式处理
+ uni.setStorageSync('privacyAgreed', true);
+ // #endif
this.$emit('agree')
},
//打开弹窗
popUp() {
- if (this.showPop === false) {
- this.showPop = true
- }
+ this.showPop = true;
},
//关闭弹窗
disPopUp() {
- if (this.showPop === true) {
- this.showPop = false
- }
+ this.showPop = false;
},
},
beforeDestroy() {
// 清理事件监听器和集合
this.privacyResolves.clear()
- this.closeOtherPagePopUpHooks.clear()
+ closeOtherPagePopUpHooks.delete(this.disPopUp)
// 注意:这里需要根据实际情况清理微信和快速应用的事件监听器
// 由于微信的 wx.onNeedPrivacyAuthorization 没有对应的 off 方法,这里可能需要其他方式处理
},
@@ -332,6 +355,9 @@ export default {
.privacy-button-btn {
color: #FFF;
font-size: 30rpx;
+ // #ifdef QUICKAPP-WEBVIEW || H5 || WEB
+ font-size: 28rpx;
+ // #endif
font-weight: 500;
line-height: 100rpx;
text-align: center;
diff --git a/lang/zh-cn/order/activist.js b/lang/zh-cn/order/activist.js
index 3113f05..280682c 100644
--- a/lang/zh-cn/order/activist.js
+++ b/lang/zh-cn/order/activist.js
@@ -1,6 +1,6 @@
-export const lang = {
- //title为每个页面的标题
- title: '退款',
- checkDetail: '查看详情',
- emptyTips: '暂无退款记录'
-}
+export const lang = {
+ //title为每个页面的标题
+ title: '售后',
+ checkDetail: '查看详情',
+ emptyTips: '暂无售后记录'
+}
diff --git a/pages_goods/public/css/list.scss b/pages_goods/public/css/list.scss
index b7e0e4b..15aa9ca 100644
--- a/pages_goods/public/css/list.scss
+++ b/pages_goods/public/css/list.scss
@@ -400,7 +400,7 @@
.price {
color: var(--price-color);
color: #fff !important;
- font-size: 15rpx !important;
+ font-size: 27rpx !important;
font-weight: bold !important;
}
}
From 4f9c353e9a3a4705a35df1906caaba80030be553 Mon Sep 17 00:00:00 2001
From: ZF sun <34314687@qq.com>
Date: Thu, 8 Jan 2026 14:58:47 +0800
Subject: [PATCH 5/5] =?UTF-8?q?chore(=E7=94=A8=E6=88=B7=E4=B8=AD=E5=BF=83)?=
=?UTF-8?q?:=20=E8=B4=A6=E5=8F=B7=E9=80=80=E5=87=BA=E6=88=96=E8=80=85?=
=?UTF-8?q?=E6=B3=A8=E9=94=80=EF=BC=8C=E6=B8=85=E7=90=86=E7=94=A8=E6=88=B7?=
=?UTF-8?q?=E9=9A=90=E7=A7=81=E5=8D=8F=E8=AE=AE=E6=8E=88=E6=9D=83=E8=AE=BE?=
=?UTF-8?q?=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pages_tool/member/index.vue | 3 +++
1 file changed, 3 insertions(+)
diff --git a/pages_tool/member/index.vue b/pages_tool/member/index.vue
index 5024a06..d45527a 100644
--- a/pages_tool/member/index.vue
+++ b/pages_tool/member/index.vue
@@ -96,6 +96,7 @@ export default {
this.$store.commit('setMemberInfo', '');
this.$store.dispatch('emptyCart');
uni.removeStorageSync('authInfo');
+ uni.removeStorageSync('privacyAgreed');
this.$util.redirectTo(this.$util.MEMBER_PAGE_URL);
}
}
@@ -118,7 +119,9 @@ export default {
this.$store.commit('setMemberInfo', '');
this.$store.dispatch('emptyCart');
uni.removeStorageSync('authInfo');
+ uni.removeStorageSync('privacyAgreed');
this.$util.redirectTo(this.$util.MEMBER_PAGE_URL);
+
} else {
this.$util.showToast({
title: rres.message