diff --git a/api/user.js b/api/user.js index f4ae969..70413e8 100644 --- a/api/user.js +++ b/api/user.js @@ -153,4 +153,33 @@ export function FetchDecryptPhone(data) { method: 'POST', data }); +} + +// 获取微信小程序全局access_token +// ?libcode= +export function FetchAccessToken(data) { + return request({ + url: '/api/weixin/getAccessToken', + data + }); +} + +// 文本内容安全检测 +// POST /api/weixin/msgSecCheck?libcode=xxx +// { +// "content": "待检测的文本内容", +// "version": 2, +// "scene": 2, +// "openid": "", +// "title": "用户评论标题", +// "nickname": "张三", +// "signature": "个性签名内容", +// "accessToken": "access_token" +// } +export function FetchMsgSecCheck(data) { + return request({ + url: '/api/weixin/msgSecCheck', + method: 'POST', + data + }); } \ No newline at end of file diff --git a/pages.json b/pages.json index 39c5a6c..a17a5ed 100644 --- a/pages.json +++ b/pages.json @@ -168,8 +168,14 @@ "style": { "navigationBarTitleText": "预约座位记录" } + }, + { + "path": "pages/agreement/agreement", + "style": { + "navigationBarTitleText": "平台协议" + } } - ] + ] } ] } diff --git a/pages/home/home.vue b/pages/home/home.vue index cccff0f..c0fde1b 100644 --- a/pages/home/home.vue +++ b/pages/home/home.vue @@ -226,7 +226,6 @@ export default { return { isLoading: true, recommendedBooks: [], - token: "", userInfo: {}, isBindLibraryCard: false, readerCardList: [], // 多个借阅证 @@ -370,6 +369,7 @@ export default { let item = displayBooks[i]; if (item.imgPath) { const imageUrl = this.baseUrl + '/api/fileRelevant/getImg?imgType=2&imgId=' + item.imgPath; + console.log('imageUrl:', imageUrl); try { const base64 = await this.urlToBase64(imageUrl); item.base64Cover = base64; diff --git a/pages/register/register.vue b/pages/register/register.vue index db07c34..dcf0f1a 100644 --- a/pages/register/register.vue +++ b/pages/register/register.vue @@ -89,6 +89,18 @@ + + + + + + + + 我已阅读并同意遵守 + 《爱图智服服务协议》 + + + @@ -122,7 +134,8 @@ export default { }, showPwd: false, showConfirmPwd: false, - loading: false + loading: false, + agreed: false }; }, @@ -261,6 +274,30 @@ export default { return true; }, + // 显示协议弹窗 + showAgreementModal() { + uni.showModal({ + title: '提示', + content: '请先阅读并同意《爱图智服服务协议》', + confirmText: '同意', + cancelText: '不同意', + success: (res) => { + if (res.confirm) { + // 用户同意,选中radio并继续提交 + this.agreed = true; + this.submitForm(); + } + } + }); + }, + + // 跳转到协议详情页面 + openAgreement() { + uni.navigateTo({ + url: '/subpkg/pages/agreement/agreement' + }); + }, + async submit() { // 防止重复点击 if (this.loading) return; @@ -273,6 +310,18 @@ export default { return; } + // 如果未同意协议,显示协议弹窗 + if (!this.agreed) { + this.showAgreementModal(); + return; + } + + // 已同意协议,直接提交 + await this.submitForm(); + }, + + // 实际提交表单 + async submitForm() { this.loading = true; try { const openId = await getOpenId(); @@ -401,6 +450,47 @@ page { } } +/* 同意协议 */ +.agreement-item { + display: flex; + align-items: center; + margin-top: 16px; + + .radio-box { + width: 22rpx; + height: 22rpx; + border: 2rpx solid #ccc; + border-radius: 50%; + margin-right: 10rpx; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.2s; + + &.checked { + border-color: #01a4fe; + background-color: #01a4fe; + } + + .radio-inner { + width: 12rpx; + height: 12rpx; + background-color: #fff; + border-radius: 50%; + } + } + + .agreement-text { + font-size: 12px; + color: #666; + flex: 1; + } + + .agreement-link { + color: #01a4fe; + } +} + /* 温馨提示 */ .tips-card { margin: 0 12px; diff --git a/subpkg/pages/agreement/agreement.vue b/subpkg/pages/agreement/agreement.vue new file mode 100644 index 0000000..129424f --- /dev/null +++ b/subpkg/pages/agreement/agreement.vue @@ -0,0 +1,284 @@ + + + + + diff --git a/subpkg/pages/feedback/feedback.vue b/subpkg/pages/feedback/feedback.vue index eee7fe9..a5cd564 100644 --- a/subpkg/pages/feedback/feedback.vue +++ b/subpkg/pages/feedback/feedback.vue @@ -53,7 +53,7 @@