Просмотр исходного кода

feature:登录增加隐私协议选择、登出增加反馈交互

liuzhenlin 1 год назад
Родитель
Сommit
47203a86e7
4 измененных файлов с 120 добавлено и 21 удалено
  1. 5 0
      pages.json
  2. 34 5
      pages/login/index.vue
  3. 56 0
      pages/login/protocol-user.vue
  4. 25 16
      pages/my/index.vue

+ 5 - 0
pages.json

@@ -31,6 +31,11 @@
       },
       "tit": "登录"
     },
+    {
+      "path": "pages/login/protocol-user",
+      "style": { "navigationBarTitleText": "用户隐私协议" },
+      "tit": "用户隐私协议"
+    },
     {
       "path": "pages/home/checkIn",
       "style": {

+ 34 - 5
pages/login/index.vue

@@ -38,11 +38,12 @@
           <u-checkbox shape="circle" label="记住密码" name="checked"></u-checkbox>
         </u-checkbox-group>
       </view>
-      <u-text
-        color="#CDCDCD"
-        size="20rpx"
-        customStyle="padding-top:32rpx"
-        text="登录代表您已同意用户协议及隐私条款"></u-text>
+      <view class="protocol-wrap">
+        <u-checkbox-group v-model="isAgreed">
+          <u-checkbox shape="circle" label="我已阅读并同意" name="checked"></u-checkbox>
+        </u-checkbox-group>
+        <text class="btn" @click="openProrocol()">《用户隐私协议》</text>
+      </view>
       <view class="login-btn" @click="handleLogin()">登录</view>
       <view class="footer">
         <u-text color="#646464" size="24rpx" align="center" text="由-青岛大数华创科技有限公司 提供技术支持"></u-text>
@@ -57,6 +58,7 @@
     name: 'omsIndex',
     data() {
       return {
+        isAgreed: false,
         height: '',
         paddingTop: '',
         loginForm: {
@@ -98,10 +100,25 @@
     methods: {
       ...mapActions(['login']),
       async handleLogin() {
+        if (!this.isAgreed) {
+          uni.showToast({
+            title: '请先阅读并同意用户协议和隐私协议',
+            icon: 'none',
+          })
+          return
+        }
         const [valid] = await to(this.$refs.loginForm.validate())
         if (valid !== null) return
         await this.login(this.loginForm)
       },
+      async openProrocol() {
+        const url = '/pages/login/protocol-user'
+        console.log(url)
+        uni.navigateTo({
+          //保留当前页面,跳转到应用内的某个页面
+          url,
+        })
+      },
     },
   }
 </script>
@@ -175,4 +192,16 @@
       }
     }
   }
+  .protocol-wrap {
+    display: flex;
+    align-items: center;
+    margin-top: 30rpx;
+    text {
+      font-size: 26rpx;
+      color: #646464;
+    }
+    .btn {
+      color: #409eff;
+    }
+  }
 </style>

+ 56 - 0
pages/login/protocol-user.vue

@@ -0,0 +1,56 @@
+<!--
+ * @Author: liuzhenlin 461480418@qq.ocm
+ * @Date: 2023-01-12 11:57:48
+ * @LastEditors: liuzhenlin
+ * @LastEditTime: 2023-03-21 15:37:55
+ * @Description: file content
+ * @FilePath: \oms\pages\login\index.vue
+-->
+<template>
+  <view class="wrap">
+    <view class="mb20">
+      本指引是OMS小程序开发者“大数华创科技有限公司”(以下简称“开发者”)为处理你的个人信息而制定。 开发者处理的信息 ·
+    </view>
+    <view class="tit mb20">开发者处理的信息</view>
+    <view class="mb20">
+      为了用于提供周边门店信息,开发者将在获取你的明示同意后,收集你的位置信息。 ·
+      开发者收集你选中的照片或视频信息,用于上传数据。 第三方插件信息/SDK信息
+      关于收集你的位置信息,你可以通过以下路径:小程序主页右上角“…”—“设置”—点击特定信息—点击“不允许”,撤回对开发者的授权。
+      关于你的个人信息,你可以通过以下方式与开发者联系,行使查阅、复制、更正、删除等法定权利。
+      开发者承诺,除法律法规另有规定外,开发者对你的信息的保存期限应当为实现处理目的所必要的最短时间。 信息的使用规则
+      开发者将会在本指引所明示的用途内使用收集的信息
+      如开发者使用你的信息超出本指引目的或合理范围,开发者必须在变更使用目的或范围前,再次以邮箱方式告知并征得你的明示同意。
+      信息对外提供
+      开发者承诺,不会主动共享或转让你的信息至任何第三方,如存在确需共享或转让时,开发者应当直接征得或确认第三方征得你的单独同意。
+      开发者承诺,不会对外公开披露你的信息,如必须公开披露时,开发者应当向你告知公开披露的目的、披露信息的类型及可能涉及的信息,并征得你的单独同意。
+      若你认为开发者未遵守上述约定,或有其他的投诉建议、或未成年人个人信息保护相关问题,可通过以下方式与开发者联系;或者向微信进行投诉。
+    </view>
+    <view class="mb20">更新日期:2024年9月13日</view>
+    <view class="mb20">生效日期:2024年9月13日</view>
+  </view>
+</template>
+<script>
+  export default {
+    name: 'omsIndex',
+    data() {
+      return {}
+    },
+    onLoad() {},
+    created() {},
+    mounted() {},
+    methods: {},
+  }
+</script>
+<style></style>
+<style lang="scss" scoped>
+  .wrap {
+    padding: 20px;
+  }
+  .tit {
+    font-size: 20px;
+    font-weight: bold;
+  }
+  .mb20 {
+    margin-bottom: 20px;
+  }
+</style>

+ 25 - 16
pages/my/index.vue

@@ -88,24 +88,33 @@
       this.height = navData.height + 'px'
       this.paddingTop = navData.top + 'px'
     },
-    mounted() {
-    },
+    mounted() {},
     methods: {
       async logOut() {
-        const [err, res] = await to(userApi.logout())
-        if (err) return
-        if (res.code == 200) {
-          uni.showToast({
-            title: '登出成功',
-            icon: 'none',
-            complete: async () => {
-              uni.removeStorageSync('opms_token')
-              uni.reLaunch({
-                url: '/pages/login/index',
-              })
-            },
-          })
-        }
+        uni.showModal({
+          title: '提示',
+          content: '确认退出登录?',
+          success: async (res) => {
+            if (res.confirm) {
+              const [err, res] = await to(userApi.logout())
+              if (err) return
+              if (res.code == 200) {
+                uni.showToast({
+                  title: '登出成功',
+                  icon: 'none',
+                  complete: async () => {
+                    uni.removeStorageSync('opms_token')
+                    uni.reLaunch({
+                      url: '/pages/login/index',
+                    })
+                  },
+                })
+              }
+            } else if (res.cancel) {
+              console.log('用户点击取消')
+            }
+          },
+        })
       },
     },
   }