Refactor: UI & Feature updates (Calculator, UnitConverter, Privacy, Cleanup)

This commit is contained in:
2026-02-09 01:15:19 +08:00
parent fa1a8e083e
commit 2c5d5b7505
52 changed files with 1351 additions and 2702 deletions

View File

@@ -0,0 +1,61 @@
Component({
data: {
innerShow: false,
privacyContractName: '《用户隐私保护指引》'
},
lifetimes: {
attached() {
// 注册隐私协议监听器
const _this = this;
if (wx.onNeedPrivacyAuthorization) {
wx.onNeedPrivacyAuthorization((resolve, eventInfo) => {
console.log('触发隐私协议弹窗', eventInfo);
const needsResolve = eventInfo.referrer === 'api'; // API调用触发需要手动resolve
_this.resolvePrivacyAuthorization = resolve; // 保存 resolve 函数
if (wx.getPrivacySetting) {
wx.getPrivacySetting({
success: (res) => {
console.log('getPrivacySetting success', res);
// 无论是否需要(needAuthorization), 只要触发了onNeedPrivacyAuthorization就证明被拦截了(或者需要再次确认)
// 通常 res.needAuthorization 为 true
_this.setData({
innerShow: true,
privacyContractName: res.privacyContractName || _this.data.privacyContractName
});
}
})
}
})
}
},
},
methods: {
handleDisagree() {
this.setData({ innerShow: false });
// 如果有保存的 resolve调用并报错拒绝虽然 API 主要是要 resolve({ buttonId: 'agree-btn', event: 'agree' }),拒绝通常不调 resolve 或调 fail
// 实际上用户拒绝后,该次 API 调用应该失败
if (this.resolvePrivacyAuthorization) {
// this.resolvePrivacyAuthorization({ event: 'disagree' }); // 某些场景下可能需要
this.resolvePrivacyAuthorization = null;
}
},
handleAgree(e: any) {
console.log('用户同意隐私协议');
// 按钮 open-type="agreePrivacyAuthorization" 会自动触发同意逻辑
// 这里的 bindagreeprivacyauthorization 回调用于 UI 反馈
this.setData({ innerShow: false });
// 如果是由 API 触发的(如 getClipboardData可以通过保存的 resolve 告知系统
// 但通常 open-type 按钮点击后系统会自动重试之前的 API 调用,或者在 button 上绑定 resolve
if (this.resolvePrivacyAuthorization) {
this.resolvePrivacyAuthorization({ buttonId: 'agree-btn', event: 'agree' });
this.resolvePrivacyAuthorization = null;
}
},
openPrivacyContract() {
wx.openPrivacyContract({})
}
}
})