feat(ns-login): 增加隐私条款及用户服务协议

This commit is contained in:
2026-01-06 11:16:00 +08:00
parent afd002fad3
commit d9f0d1987e
21 changed files with 224 additions and 171 deletions

View File

@@ -2,7 +2,7 @@
<view> <view>
<!-- 完善会员资料 --> <!-- 完善会员资料 -->
<view @touchmove.prevent.stop class="complete-info-popup"> <view @touchmove.prevent.stop class="complete-info-popup">
<uni-popup ref="completeInfoPopup" type="bottom" :maskClick="false"> <uni-popup ref="completeInfoPopup" type="center" :maskClick="false">
<view class="complete-info-wrap"> <view class="complete-info-wrap">
<!-- #ifdef H5 --> <!-- #ifdef H5 -->
<template v-if="forceBindingMobileControl"> <template v-if="forceBindingMobileControl">
@@ -32,71 +32,101 @@
<!-- #ifdef MP --> <!-- #ifdef MP -->
<view class="head"> <view class="head">
<text class="title"> <text class="title">欢迎来到 {{ site_name }}</text>
获取您的昵称头像
<template v-if="forceBindingMobileControl">
手机号
</template>
</text>
<text class="color-tip tips"> <text class="color-tip tips">
获取用户头像昵称 <template>{{ forceBindingMobileControl ? '使用手机号登录,' : '注册登录,' }}</template>
<template v-if="forceBindingMobileControl"> 获得订单售后等服务
手机号
</template>
完善个人资料主要用于向用户提供具有辨识度的用户中心界面
</text> </text>
<text class="iconfont icon-close color-tip" @click="cancelCompleteInfo"></text> <text class="iconfont icon-close color-tip" @click="cancelCompleteInfo"></text>
</view> </view>
<!-- #ifdef MP-WEIXIN -->
<view class="item-wrap">
<text class="label">头像</text>
<button open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
<image :src="avatarUrl ? avatarUrl : $util.getDefaultImage().head"
@error="avatarUrl = $util.getDefaultImage().head" mode="aspectFill" />
<text class="iconfont icon-right color-tip"></text>
</button>
</view>
<view class="item-wrap">
<text class="label">昵称</text>
<input type="nickname" placeholder="请输入昵称" v-model="nickName" @blur="blurNickName"
maxlength="50" />
</view>
<!-- #endif -->
<!-- #ifdef MP-ALIPAY --> <!-- 协议勾选 -->
<view class="item-wrap"> <view style="display: flex;">
<text class="label">头像</text> <view
<button open-type="getAuthorize" scope="userInfo" @getAuthorize="aliappGetUserinfo" class="iconfont"
:plain="true" class="border-0"> :class="isAgree ? 'icon-fuxuankuang1 color-base-text' : 'icon-fuxuankuang2'"
<image :src="avatarUrl ? avatarUrl : $util.getDefaultImage().head" @click="isAgree = !isAgree"
@error="avatarUrl = $util.getDefaultImage().head" mode="aspectFill" /> ></view>
<text class="iconfont icon-right color-tip"></text> <view style="text-align: left; margin-left: 10rpx; padding-top: 2rpx; font-size: 28rpx;">
我同意
<text style="color: #4395ff;" @click="tourl('/pages_tool/agreement/contenr?type=0')">隐私条款</text>
<text style="color: #4395ff;" @click="tourl('/pages_tool/agreement/contenr?type=1')">用户服务协议</text>
</view>
</view>
<!-- 手机号授权按钮 -->
<block v-if="isAgree">
<button
class="auth-login save-btn border-0"
style="border: none;"
open-type="getPhoneNumber"
@getphonenumber="getPhoneNumber"
>
<text style="color: #fff; font-size: 30rpx;">同意隐私协议并授权手机号</text>
</button> </button>
</view> </block>
<view class="item-wrap"> <block v-else>
<text class="label">昵称</text> <button class="auth-login save-btn border-0" style="border: none;" @click="authno">
<input type="nickname" placeholder="请输入昵称" v-model="nickName" @blur="blurNickName" <text style="color: #fff; font-size: 30rpx;">授权手机号码</text>
maxlength="50" />
</view>
<!-- #endif -->
<view class="item-wrap" v-if="forceBindingMobileControl">
<text class="label">手机号</text>
<button open-type="getPhoneNumber" :plain="true" class="auth-login border-0"
@getphonenumber="getPhoneNumber">
<text class="mobile" v-if="formData.mobile">{{ formData.mobile }}</text>
<text class="color-base-text" v-else>获取手机号</text>
</button> </button>
</block>
<view @click="closeLogin" style="font-size: 30rpx; color: #888; text-align: center; padding-top: 10rpx;">
暂不登录
</view> </view>
<button type="default" class="save-btn" @click="saveMp" :disabled="isDisabled">保存</button>
<!-- 昵称和头像模式 -->
<template v-if="enableNickAndAvatar">
<!-- #ifdef MP-WEIXIN -->
<view class="item-wrap">
<text class="label">头像</text>
<button open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
<image :src="avatarUrl ? avatarUrl : $util.getDefaultImage().head"
@error="avatarUrl = $util.getDefaultImage().head" mode="aspectFill" />
<text class="iconfont icon-right color-tip"></text>
</button>
</view>
<view class="item-wrap">
<text class="label">昵称</text>
<input type="nickname" placeholder="请输入昵称" v-model="nickName" @blur="blurNickName"
maxlength="50" />
</view>
<!-- #endif -->
<!-- #ifdef MP-ALIPAY -->
<view class="item-wrap">
<text class="label">头像</text>
<button open-type="getAuthorize" scope="userInfo" @getAuthorize="aliappGetUserinfo"
:plain="true" class="border-0">
<image :src="avatarUrl ? avatarUrl : $util.getDefaultImage().head"
@error="avatarUrl = $util.getDefaultImage().head" mode="aspectFill" />
<text class="iconfont icon-right color-tip"></text>
</button>
</view>
<view class="item-wrap">
<text class="label">昵称</text>
<input type="nickname" placeholder="请输入昵称" v-model="nickName" @blur="blurNickName"
maxlength="50" />
</view>
<!-- #endif -->
<view class="item-wrap" v-if="forceBindingMobileControl">
<text class="label">手机号</text>
<button open-type="getPhoneNumber" :plain="true" class="auth-login border-0"
@getphonenumber="getPhoneNumber">
<text class="mobile" v-if="formData.mobile">{{ formData.mobile }}</text>
<text class="color-base-text" v-else>获取手机号</text>
</button>
</view>
<button type="default" class="save-btn" @click="saveMp" :disabled="isDisabled">保存</button>
</template>
<!-- #endif --> <!-- #endif -->
</view> </view>
</uni-popup> </uni-popup>
</view> </view>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
<register-reward ref="registerReward"></register-reward> <register-reward ref="registerReward"></register-reward>
</view> </view>
@@ -113,6 +143,10 @@ export default {
name: 'ns-login', name: 'ns-login',
data() { data() {
return { return {
// 是否开启昵称和头像
enableNickAndAvatar: false,
// 协议勾选
isAgree: false,
url: '', url: '',
registerConfig: {}, registerConfig: {},
avatarUrl: '', // 头像预览路径 avatarUrl: '', // 头像预览路径
@@ -142,7 +176,8 @@ export default {
authMobileData: { authMobileData: {
iv: '', iv: '',
encryptedData: '' encryptedData: ''
} },
site_name: ''
}; };
}, },
options: { options: {
@@ -172,13 +207,10 @@ export default {
if (this.formData.mobile.length == 0) return true; if (this.formData.mobile.length == 0) return true;
// #ifdef H5 // #ifdef H5
// 验证码 // 验证码
if (this.isOpenCaptcha == 1 && this.formData.vercode.length == 0) return true; if (this.isOpenCaptcha == 1 && this.formData.vercode.length == 0) return true;
// 动态码 // 动态码
if (this.formData.dynacode.length == 0) return true; if (this.formData.dynacode.length == 0) return true;
// #endif // #endif
} }
return false; return false;
@@ -189,7 +221,25 @@ export default {
else return false; else return false;
} }
}, },
created() {
const siteInfo = uni.getStorageSync('siteInfo');
if (siteInfo) {
this.site_name = siteInfo.site_name;
}
},
methods: { methods: {
// 同意协议
authno() {
if (!this.isAgree) {
this.$util.showToast({ title: '请确认相关协议' });
}
},
// 关闭登录
closeLogin() {
this.$refs.completeInfoPopup.close();
},
// 获取注册配置 // 获取注册配置
getRegisterConfig(callback = null) { getRegisterConfig(callback = null) {
this.$api.sendRequest({ this.$api.sendRequest({
@@ -202,6 +252,8 @@ export default {
} }
}); });
}, },
// 打开弹窗
open(url) { open(url) {
if (url) this.url = url; if (url) this.url = url;
// #ifdef MP // #ifdef MP
@@ -229,6 +281,7 @@ export default {
this.toLogin(); this.toLogin();
// #endif // #endif
}, },
// 跳转去登录页 // 跳转去登录页
toLogin() { toLogin() {
if (this.url) this.$util.redirectTo('/pages_tool/login/login', { if (this.url) this.$util.redirectTo('/pages_tool/login/login', {
@@ -236,13 +289,19 @@ export default {
}); });
else this.$util.redirectTo('/pages_tool/login/login'); else this.$util.redirectTo('/pages_tool/login/login');
}, },
// 取消完善信息
cancelCompleteInfo() { cancelCompleteInfo() {
if (this.$refs.completeInfoPopup) this.$refs.completeInfoPopup.close(); if (this.$refs.completeInfoPopup) this.$refs.completeInfoPopup.close();
this.$store.commit('setBottomNavHidden', false); // 显示底部导航 this.$store.commit('setBottomNavHidden', false); // 显示底部导航
}, },
// 昵称失焦
blurNickName(e) { blurNickName(e) {
if (e.detail.value) this.nickName = e.detail.value; if (e.detail.value) this.nickName = e.detail.value;
}, },
// 选择头像
onChooseAvatar(e) { onChooseAvatar(e) {
this.avatarUrl = e.detail.avatarUrl; this.avatarUrl = e.detail.avatarUrl;
uni.getFileSystemManager().readFile({ uni.getFileSystemManager().readFile({
@@ -250,7 +309,6 @@ export default {
encoding: 'base64', //编码格式 encoding: 'base64', //编码格式
success: res => { success: res => {
let base64 = 'data:image/jpeg;base64,' + res.data; //不加上这串字符,在页面无法显示的哦 let base64 = 'data:image/jpeg;base64,' + res.data; //不加上这串字符,在页面无法显示的哦
this.$api.uploadBase64({ this.$api.uploadBase64({
base64, base64,
success: res => { success: res => {
@@ -271,6 +329,8 @@ export default {
} }
}); });
}, },
// 打开完善信息弹窗
openCompleteInfoPop() { openCompleteInfoPop() {
this.getRegisterConfig(); this.getRegisterConfig();
@@ -283,6 +343,7 @@ export default {
}); });
this.$store.commit('setBottomNavHidden', true); //隐藏底部导航 this.$store.commit('setBottomNavHidden', true); //隐藏底部导航
}, },
// 获取前台登录验证码开关配置 // 获取前台登录验证码开关配置
getCaptchaConfig() { getCaptchaConfig() {
this.$api.sendRequest({ this.$api.sendRequest({
@@ -295,6 +356,7 @@ export default {
} }
}); });
}, },
// 获取验证码 // 获取验证码
getCaptcha() { getCaptcha() {
this.$api.sendRequest({ this.$api.sendRequest({
@@ -310,6 +372,7 @@ export default {
} }
}); });
}, },
// 发送手机动态码 // 发送手机动态码
sendMobileCode() { sendMobileCode() {
if (this.dynacodeData.seconds != 120 || this.dynacodeData.isSend) return; if (this.dynacodeData.seconds != 120 || this.dynacodeData.isSend) return;
@@ -371,6 +434,8 @@ export default {
} }
}); });
}, },
// 刷新动态码数据
refreshDynacodeData() { refreshDynacodeData() {
this.getCaptcha(); this.getCaptcha();
clearInterval(this.dynacodeData.timer); clearInterval(this.dynacodeData.timer);
@@ -381,6 +446,8 @@ export default {
isSend: false isSend: false
}; };
}, },
// 表单验证 // 表单验证
verify(data) { verify(data) {
let rule = [{ let rule = [{
@@ -415,6 +482,7 @@ export default {
return false; return false;
} }
}, },
// 微信公众号强制绑定手机号 // 微信公众号强制绑定手机号
forceBindMobile() { forceBindMobile() {
let authData = uni.getStorageSync('authInfo'); let authData = uni.getStorageSync('authInfo');
@@ -462,13 +530,16 @@ export default {
} }
}); });
}, },
// 微信小程序获取手机号 // 微信小程序获取手机号
getPhoneNumber(e) { getPhoneNumber(e) {
console.log(e) if (e.detail.errMsg === 'getPhoneNumber:ok') {
if (e.detail.errMsg == 'getPhoneNumber:ok') { const authInfo = uni.getStorageSync('authInfo');
let authData = uni.getStorageSync('authInfo'); if (authInfo) { Object.assign(this.authMobileData, authInfo, e.detail);
if (authData) Object.assign(this.authMobileData, authData, e.detail); }
if (uni.getStorageSync('source_member')) this.authMobileData.source_member = uni.getStorageSync('source_member'); if (uni.getStorageSync('source_member')) {
this.authMobileData.source_member = uni.getStorageSync('source_member');
}
this.$api.sendRequest({ this.$api.sendRequest({
url: '/api/tripartite/getPhoneNumber', url: '/api/tripartite/getPhoneNumber',
@@ -476,6 +547,9 @@ export default {
success: res => { success: res => {
if (res.code >= 0) { if (res.code >= 0) {
this.formData.mobile = res.data.mobile; this.formData.mobile = res.data.mobile;
if (!this.enableNickAndAvatar) { // 不开启昵称和头像绑定,直接保存手机号
this.saveMp();
}
} else { } else {
this.formData.mobile = ''; this.formData.mobile = '';
this.$util.showToast({ this.$util.showToast({
@@ -490,6 +564,7 @@ export default {
}) })
} }
}, },
// 微信小程序强制绑定手机号 // 微信小程序强制绑定手机号
bindMobile() { bindMobile() {
let data = this.authMobileData; let data = this.authMobileData;
@@ -521,9 +596,8 @@ export default {
} }
}); });
}, },
/**
* 授权登录 // 授权登录
*/
authLogin(data, type = 'authLogin') { authLogin(data, type = 'authLogin') {
uni.showLoading({ uni.showLoading({
title: '登录中' title: '登录中'
@@ -571,7 +645,8 @@ export default {
} }
}); });
}, },
// 微信公众号,强制绑定手机号,验证
// H5保存:微信公众号,强制绑定手机号,验证
saveH5() { saveH5() {
if (this.$util.isWeiXin() && this.forceBindingMobileControl) { if (this.$util.isWeiXin() && this.forceBindingMobileControl) {
let data = { let data = {
@@ -587,24 +662,35 @@ export default {
} }
this.forceBindMobile(); this.forceBindMobile();
}, },
// 微信小程序保存数据 // 微信小程序保存数据
saveMp() { saveMp() {
if (this.nickName.length == 0) { if (this.formData.mobile === '') {
this.$util.showToast({ this.$util.showToast({ title: '请授权您的手机号码' });
title: '请输入昵称'
});
return; return;
} }
let authData = uni.getStorageSync('authInfo');
if (authData) Object.assign(authData, {
nickName: this.nickName,
avatarUrl: this.headImg
});
uni.setStorageSync('authInfo', authData);
if (this.forceBindingMobileControl) this.bindMobile(); if (this.nickName.length == 0 && this.enableNickAndAvatar) {
else this.authLogin(authData); this.$util.showToast({ title: '请输入昵称' });
return;
}
let authInfo = uni.getStorageSync('authInfo');
if (authInfo) {
Object.assign(authInfo, {
nickName: this.nickName,
avatarUrl: this.headImg
});
uni.setStorageSync('authInfo', authInfo);
}
if (this.forceBindingMobileControl) {
this.bindMobile();
} else {
this.authLogin(authInfo);
}
}, },
// #ifdef MP-ALIPAY // #ifdef MP-ALIPAY
aliappGetUserinfo() { aliappGetUserinfo() {
my.getOpenUserInfo({ my.getOpenUserInfo({
@@ -646,6 +732,8 @@ export default {
}); });
}, },
// #endif // #endif
// 获取会员信息
getMemberInfo() { getMemberInfo() {
this.$api.sendRequest({ this.$api.sendRequest({
url: '/api/member/info', url: '/api/member/info',
@@ -656,12 +744,17 @@ export default {
} }
} }
}); });
},
// 跳转页面
tourl(url) {
this.$util.redirectTo(url);
} }
} }
}; };
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.complete-info-popup { .complete-info-popup {
.complete-info-wrap { .complete-info-wrap {
background: #fff; background: #fff;
@@ -669,16 +762,16 @@ export default {
.head { .head {
position: relative; position: relative;
border-bottom: 2rpx solid $color-line;
padding-bottom: 20rpx; padding-bottom: 20rpx;
text-align: center;
.title { .title {
font-size: $font-size-toolbar; font-size: 30rpx;
display: block; display: block;
} }
.tips { .tips {
font-size: $font-size-base; font-size: 28rpx;
display: block; display: block;
} }
@@ -691,19 +784,19 @@ export default {
height: 56rpx; height: 56rpx;
line-height: 56rpx; line-height: 56rpx;
text-align: right; text-align: right;
font-size: $font-size-toolbar; font-size: 32rpx;
font-weight: bold; font-weight: 700;
} }
} }
.item-wrap { .item-wrap {
border-bottom: 2rpx solid $color-line; border-bottom: 2rpx solid #eee;
display: flex; display: flex;
align-items: center; align-items: center;
padding: 16rpx 0; padding: 16rpx 0;
.label { .label {
font-size: $font-size-toolbar; font-size: 32rpx;
margin-right: 40rpx; margin-right: 40rpx;
width: 100rpx; width: 100rpx;
} }
@@ -717,7 +810,7 @@ export default {
text-align: left; text-align: left;
display: flex; display: flex;
align-items: center; align-items: center;
font-size: $font-size-toolbar; font-size: 32rpx;
border: none; border: none;
image { image {
@@ -726,27 +819,27 @@ export default {
border-radius: 10rpx; border-radius: 10rpx;
overflow: hidden; overflow: hidden;
} }
}
.iconfont { .iconfont {
flex: 1; flex: 1;
text-align: right; text-align: right;
font-size: $font-size-tag; font-size: 24rpx;
}
} }
input { input {
flex: 1; flex: 1;
height: 80rpx; height: 80rpx;
box-sizing: border-box; box-sizing: border-box;
font-size: $font-size-toolbar; font-size: 32rpx;
} }
.send { .send {
border: 2rpx solid $base-color; border: 2rpx solid var(--base-color);
height: 60rpx; height: 60rpx;
line-height: 60rpx; line-height: 60rpx;
border-radius: 60rpx; border-radius: 60rpx;
font-size: $font-size-tag; font-size: 24rpx;
text-align: center; text-align: center;
padding: 0 40rpx; padding: 0 40rpx;
} }
@@ -765,27 +858,27 @@ export default {
} }
.save-btn { .save-btn {
width: 280rpx; width: 100%;
height: 90rpx; height: 90rpx;
line-height: 90rpx; line-height: 90rpx;
background-color: #07c160; background-color: #07c160;
color: #fff; color: #fff;
margin: 40rpx auto 20rpx; margin: 40rpx auto 20rpx;
border-radius: 50rpx;
} }
} }
&.reward-popup .uni-popup__wrapper-box {
background: none !important;
max-width: unset !important;
max-height: unset !important;
overflow: unset !important;
}
&.uni-popup__wrapper.bottom,
&.uni-popup__wrapper.bottom .uni-popup__wrapper-box {
border-top-left-radius: 30rpx !important;
border-top-right-radius: 30rpx !important;
}
} }
</style> </style>
<style scoped>
/deep/ .reward-popup .uni-popup__wrapper-box {
background: none !important;
max-width: unset !important;
max-height: unset !important;
overflow: unset !important;
}
.complete-info-popup /deep/ .uni-popup__wrapper.bottom,
.complete-info-popup /deep/ .uni-popup__wrapper.bottom .uni-popup__wrapper-box {
border-top-left-radius: 30rpx !important;
border-top-right-radius: 30rpx !important;
}
</style>

View File

@@ -358,10 +358,8 @@
<ns-login ref="login"></ns-login> <ns-login ref="login"></ns-login>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
</view> </view>
</template> </template>

View File

@@ -12,10 +12,8 @@
<loading-cover ref="loadingCover"></loading-cover> <loading-cover ref="loadingCover"></loading-cover>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
<!-- 底部tabBar --> <!-- 底部tabBar -->
<view id="tab-bar"> <view id="tab-bar">

View File

@@ -513,10 +513,8 @@
<ns-login ref="login"></ns-login> <ns-login ref="login"></ns-login>
<loading-cover ref="loadingCover"></loading-cover> <loading-cover ref="loadingCover"></loading-cover>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
</view> </view>
</template> </template>

View File

@@ -294,10 +294,8 @@
</uni-drawer> </uni-drawer>
<loading-cover ref="loadingCover"></loading-cover> <loading-cover ref="loadingCover"></loading-cover>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
<!-- 底部tabBar --> <!-- 底部tabBar -->
<view id="tab-bar"> <view id="tab-bar">

View File

@@ -124,10 +124,8 @@
</uni-popup> </uni-popup>
</view> </view>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
</view> </view>
</template> </template>

View File

@@ -35,10 +35,8 @@
<ns-login ref="login"></ns-login> <ns-login ref="login"></ns-login>
<loading-cover ref="loadingCover"></loading-cover> <loading-cover ref="loadingCover"></loading-cover>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
</view> </view>
</template> </template>

View File

@@ -308,10 +308,8 @@
</uni-drawer> </uni-drawer>
<loading-cover ref="loadingCover"></loading-cover> <loading-cover ref="loadingCover"></loading-cover>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
</view> </view>
</template> </template>

View File

@@ -220,10 +220,8 @@
<to-top v-if="showTop" @toTop="scrollToTopNative()"></to-top> <to-top v-if="showTop" @toTop="scrollToTopNative()"></to-top>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
</view> </view>
</template> </template>
<script> <script>

View File

@@ -127,10 +127,8 @@
</view> </view>
</uni-drawer> </uni-drawer>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
</view> </view>
</template> </template>

View File

@@ -253,10 +253,8 @@
<loading-cover ref="loadingCover"></loading-cover> <loading-cover ref="loadingCover"></loading-cover>
<ns-login ref="login"></ns-login> <ns-login ref="login"></ns-login>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
</view> </view>
</template> </template>
<script> <script>

View File

@@ -17,10 +17,8 @@
</view> </view>
<loading-cover ref="loadingCover"></loading-cover> <loading-cover ref="loadingCover"></loading-cover>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
</view> </view>
</template> </template>

View File

@@ -26,10 +26,8 @@
</block> </block>
</mescroll-uni> </mescroll-uni>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
</view> </view>
</template> </template>

View File

@@ -16,10 +16,8 @@
</mescroll-uni> </mescroll-uni>
<loading-cover ref="loadingCover"></loading-cover> <loading-cover ref="loadingCover"></loading-cover>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
</view> </view>
</template> </template>

View File

@@ -73,10 +73,8 @@
<loading-cover ref="loadingCover"></loading-cover> <loading-cover ref="loadingCover"></loading-cover>
<ns-login ref="login"></ns-login> <ns-login ref="login"></ns-login>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
</view> </view>
</template> </template>

View File

@@ -30,10 +30,8 @@
<loading-cover ref="loadingCover"></loading-cover> <loading-cover ref="loadingCover"></loading-cover>
<ns-login ref="login"></ns-login> <ns-login ref="login"></ns-login>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
</view> </view>
</template> </template>

View File

@@ -7,10 +7,8 @@
</view> </view>
<loading-cover ref="loadingCover"></loading-cover> <loading-cover ref="loadingCover"></loading-cover>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
</view> </view>
</template> </template>

View File

@@ -10,10 +10,8 @@
<loading-cover ref="loadingCover"></loading-cover> <loading-cover ref="loadingCover"></loading-cover>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
</view> </view>
</template> </template>

View File

@@ -8,10 +8,8 @@
<loading-cover ref="loadingCover"></loading-cover> <loading-cover ref="loadingCover"></loading-cover>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
</view> </view>
</template> </template>

View File

@@ -20,10 +20,8 @@
</block> </block>
</mescroll-uni> </mescroll-uni>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
</view> </view>
</template> </template>

View File

@@ -3,10 +3,8 @@
<view class="iconfont iconshang navigate-back" @click="navigateBack"></view> <view class="iconfont iconshang navigate-back" @click="navigateBack"></view>
<web-view :src="src"></web-view> <web-view :src="src"></web-view>
<!-- #ifdef MP-WEIXIN --> <!-- 隐私弹窗 -->
<!-- 小程序隐私协议 -->
<privacy-popup ref="privacyPopup"></privacy-popup> <privacy-popup ref="privacyPopup"></privacy-popup>
<!-- #endif -->
</view> </view>
</template> </template>